-
Content Count
3,127 -
Joined
-
Last visited
Posts posted by AtariGeezer
-
-
I've already beaten that horse to death in this thread and the other about the talking points.
Let's just move forward on this
Two things I haven't mentioned is that while connected to a BBS, you can go back into command mode by temporarily pressing the Flash/Program Button. The Blue LED will indicate this
Also in the works is accessing a WiFi Enabled Printer
-
1
-
-
The current build is for the ESP32 board built by Mozzwald.
I'll make a version for the ESP8266 too, will have to see about adding support for the WiModem232...
-
This is the latest project for the Atari that I've Been working on.
The Atari Wifi Modem (or #AtaWiModem for short).
Currently supports Full 850 Emulation with internal Booter and Handler code.
Works with many terminal programs such as Amodem, BobTerm and the Express! Cart
(Which I highly recommend). The Express! Cart can handle 9600 Baud rather reliably
where other terminal programs can not do.After booting the Fuji Board, press <Return> and you'll be shown a "->" Prompt.
From here you can type "HELP" or "AT?" (Without Quotes) to display two different menus.The "SCAN" command will show you a list of nearby WiFi Access Points, this list will
show you the [Channel], (Signal Level), SSID and either an asterisk "*" if the connection
is Secure or "!" if it is Open.You can then type "NET# (Number on List)" followed by an <optional> Password depending upon
the AP having a Secure or Open connection. You can also just type "PASS (Your Password) to
store the Password temporarily.#AtaWiModem also has a PhoneBook to store your favorite BBS #'s that can be displayed by
the "ATL" command.As shown in the pictures below, you can see some of the screens that are used.
For the 850 Emulation, the next thing I'll be testing is File Transfers and then Add and Test
BBS Support from AMIS, Express, Express Pro, FoReM and FoReM XEP. This should cover most
types of BBS's used on the Atari 8-Bits.After the 850 Emulation is fully tested, I'll finish the Client side of TNFS.
One feature I'll be adding soon is #IRC Chat 🙂
Other protocols that can be easily added would be POP3, IMAP and SMTP email support.
(I already have these coded on Windows using the WinSock API's...)Jay
-
11
-
-
On 12/25/2019 at 11:59 AM, tschak909 said:Part of the work I am planning to do outside of the "D:" emulation, focuses on the following aspects:
* Creating a new N: device for TCP and UDP communication
* Creating an R: device that actually implements a proper device, instead of just dumping into R-Verter mode.
-Thom
I'll post my source code after you do this
-
Here are 2 binaries for the ESP32 board if anyone would like to test the 850 Emulation or TNFS routines (I'll have to make a small doc to use the TNFS routines)...
-
Guys, Here's a bit of code to wet your appetite
This will help you in getting rid of that state machine...
void Handle_SIO() { byte nDev = 0; byte nCmd = 0; byte Aux1 = 0; byte Aux2 = 0; byte ChkSum = 0; int nRtn = 0; if (SerSIO.available() > 0) { nRtn = SerSIO.readBytes(&SIO_CmdFrame, 5); if (nRtn == 5) { long time = micros(); // Wait For COMMAND to go HIGH while ((digitalRead(CMD_PIN) == LOW) && ((micros() - time) < 600)) { yield(); } SIO_CmdLineLow = false; //InvertBuffer(&SIO_CmdFrame, 4) ChkSum = Calc_SIO_Checksum(SIO_CmdFrame, 4); if (ChkSum != SIO_CmdFrame[4]) { return; } nDev = SIO_CmdFrame[0]; nCmd = SIO_CmdFrame[1]; Aux1 = SIO_CmdFrame[2]; Aux2 = SIO_CmdFrame[3]; SerBUG.print("SIO_CmdFrame -> "); SerBUG.print(nDev, HEX); SerBUG.print(","); SerBUG.print(nCmd, HEX); SerBUG.print(","); SerBUG.print(Aux1, HEX); SerBUG.print(","); SerBUG.print(Aux2, HEX); SerBUG.print(","); SerBUG.print(R_Dev.BootFlg, HEX); SerBUG.print(","); SerBUG.println(R_Dev.PollCnt, HEX); if (nCmd == '?') { // POLL COMMAND? Process_RDev_GetBootParms(Aux1, Aux2); // (Type 1/2 Poll command) } else { R_Dev.PollCnt = 26; if ((R_Dev.BootFlg != 0xFF) && (nDev == 0x31)) { //SerBUG.println("DDev"); switch (nCmd) { case 'S': // $53 Get PSEUDO DISK STATUS Process_DDev_Status(Aux1, Aux2); break; case 'R': // $52 Get Byte(s) Process_DDev_Read(Aux1, Aux2); break; default: R_Dev.BootFlg = 0; // Set Boot Flag Minus Send_SIO_Response(NAK); // Issue a (N)ak Response break; } return; } } switch (nDev) { case 0x50: // R1: case 0x51: // R2: case 0x52: // R3: case 0x53: // R4: Process_R_Dev(nDev, nCmd, Aux1, Aux2); break; case 0x58: // W1: WiFi Modem Process_W_Dev(nDev, nCmd, Aux1, Aux2); break; case 0x70: // N1: Network Device (TNFS) Process_N_Dev(nDev, nCmd, Aux1, Aux2); break; default: break; } } else { // Error Occured if (nRtn < 1) { // Serial Error } else { // Less Than 5 Bytes Received } } } else { if (R_Dev.Concurrent) { // Drop Out of Concurrent Mode R_Dev.Concurrent = false; } } }-
1
-
-
On 12/27/2019 at 7:41 PM, Kyle22 said:Nice! How about high speed R: and N: Handler?
Last night I was able to use the Express cart to call your BBS using the fujunet board, but at 19200 baud it looses data, not sure if a ring / circular buffer would help or not. One solution might be an accellerated E: handler?
Also, can you update my account on your BBS? Guess I haven't called enough
-
-
3 minutes ago, mozzwald said:You have this working on the ESP32 yet or just the 8266? Care to share yet?
Yes on the ESP32, when I have tested all functions, you bet!
-
4 hours ago, tschak909 said:Part of the work I am planning to do outside of the "D:" emulation, focuses on the following aspects:
* Creating a new N: device for TCP and UDP communication
* Creating an R: device that actually implements a proper device, instead of just dumping into R-Verter mode.
-Thom
My sketch that has 850 Emulation and the TNFS Client now compiles and the 850 Emulation now loads the Booter and R: Handler perfectly
Shouldn't be too much longer before I call Kyle's BBS soon 😃
-
1
-
-
-
There's always room for change on all sides
-
TLS 1.2 is currently supported in the SSL libs that also works on the NodeMCU boards.
Soon after I finish the Full TNFS Client (should just be on the Atari side with the N: Handler and demo program), my next objective is to make a TNFS Server that could be ran on the FujiiNet Board with the built-in SD Card. So it shouldn't be much of a problem adding a SSL wrapper on that
The Great and Powerful mOZz has graciously sent one of his boards my way too
-
5
-
-
This is what I'm using for TNFS:
void Process_N_Dev(byte nDev, byte nCmd, byte Aux1, byte Aux2) { switch (nDev) { case 0x70: switch (nCmd) { case 'S': // Process_NDev_Status(Aux1, Aux2); break; case 'M': // Process_NDev_Mount(Aux1, Aux2); break; case 'U': // Process_NDev_UnMount(Aux1, Aux2); break; case 'O': // Process_NDev_OpenDir(Aux1, Aux2); break; case 'R': // Process_NDev_ReadDir(Aux1, Aux2); break; case 'C': // Process_NDev_CloseDir(Aux1, Aux2); break; case 'K': // Process_NDev_MakeDir(Aux1, Aux2); break; case 'V': // Process_NDev_RemoveDir(Aux1, Aux2); break; case 'o': // Process_NDev_Open(Aux1, Aux2); break; case 'r': // Process_NDev_Read(Aux1, Aux2); break; case 'w': // Process_NDev_Write(Aux1, Aux2); break; case 'c': // Process_NDev_Close(Aux1, Aux2); break; case 's': // Process_NDev_Stat(Aux1, Aux2); break; case 'l': // Process_NDev_LSeek(Aux1, Aux2); break; case 'd': // Process_NDev_UnLink(Aux1, Aux2); break; case 'm': // Process_NDev_ChgMode(Aux1, Aux2); break; case 'n': // Process_NDev_Rename(Aux1, Aux2); break; case 'Z': // Process_NDev_Size(Aux1, Aux2); break; case 'F': // Process_NDev_Free(Aux1, Aux2); break; } break; } }-
1
-
-
Atari retrying after timeout waiting for a C)omplete in a shorter time period?
850 doesn't use t5 between ACK and Complete when sending blocks associated with "?" "!" or "&" commands.
-
3 hours ago, tschak909 said:(and no, the 850 source code isn't much help, it's a highly compressed bowl of pasta in the expediency of conserving ROM space)
-Thom
Funny, I find it rather informative. It took a few reads to see the whole picture.
Hint: T5
-
4 hours ago, tschak909 said:you seem to be misunderstanding where the CIO part of the handler is vs the SIO code that's in the arduino firmware.
-Thom
Okay, in the Printer handler, it does a S)tatus call to determine if it's Open and you are using a custom c)onnect call to check if it exists.
I see...
-
void _cio_open(void) { char *p=(char *)OS.ziocb.buffer; // remove EOL p[OS.ziocb.buflen-1]=0x00; // Scoot buffer past the N: p+=2; // Copy into packet strcpy(packet,p); // I am ignoring the aux1/aux2 for this test, and simply assuming the open parameters. OS.dcb.ddevic=0x70; // Network card OS.dcb.dunit=1; // device unit 1 OS.dcb.dcomnd='c'; // Do a connect OS.dcb.dstats=0x80; // Write connect request to peripheral. OS.dcb.dbuf=&packet; // Packet OS.dcb.dbyt=256; // packet size OS.dcb.dtimlo=0x1F; // Timeout OS.dcb.daux=0; // no aux byte siov(); // Clear buffer memset(&packet,0x00,sizeof(packet)); ret=err=OS.dcb.dstats; }The code above is what would be used from the user side of opening a device, not useful in the Handler...
Think I posted some code of the SX-212 handler in the Sio2wifi thread...
-
1
-
-
I guess the current code isn't posted yet?
In main.c it only shows:
void cio_open(void)
{
} -
You need to Open a Device before use...
-
Another bug: in setup()
pinMode(PIN_INT, INPUT);
pinMode(PIN_PROC, INPUT);should be:
pinMode(PIN_INT, OUTPUT); // these are "inputs" on the Atari side...
pinMode(PIN_PROC, OUTPUT); -
6 hours ago, mytek said:Everyone benefits when there is an open dialogue and people share what they've discovered. I believe that AtariGeezer has benefited by the open nature of my 1088XEL project, and how I've 'shared' all aspects of such. Maybe it's time to pay it forward
.
Just to be clear, I have helped him out here and there pointing out errors in his code and when he asked for help on SIO Timings, I posted the notes that I took from the Atari Hardware Manual. I won't give him code he doesn't understand and I won't be posting code for every little function or procedure that I create along the way. I will however post code for my project when it's working the way I intend it to.
You've heard the old adage: "Give a man a fish and he'll eat for a day, Teach a man to fish and he'll eat for life".
He needs to start fishing...
-
1
-
-
It's also about educating yourself on stuff you're not currently knowledgeable about.
-
1
-
-
Homework...

Atari Wifi Modem
in Atari 8-Bit Computers
Posted
I think this is the latest diagram for the Esp32.
AtariWiFi GPIO Table - ESP32.pdf