Merry Christmas everyone! RS-232-C FujiNet Works!
The RS-232-C version of FujiNet is starting to work. For now, the bring-up platform is MS-DOS, and specifically, my GRiDCASE 1530.
To get things running quickly, I borrowed the same protocol used by the Atari FujiNet (SIO), and adapted its control signals to RS-232-C equivalents. It is running at 9600 baud, and the firmware is working.
Using Turbo C 2.0, I quickly wrote an ISS tracker to test the network device, and I had to write a quick graphics library in the process, I refuse to use BGI. It draws in CGA, and uses the color palette and background to good effect, and looks good on both my color display and my gas plasma LCD.
While this does prove that the firmware is working as expected, the ISS program was written to directly use the serial comms routines that I put together for the RS232 FujiNet. This is not ideal, because there will be an ISA version of FujiNet for PCs, and I want them to use the same programming interface.
The MS-DOS FujiNet BIOS
To this effect, I have drawn up a specification for a BIOS that will insert itself at INT 0xF5 and 0xF6 to communicate with the FujiNet. This will allow for a standard interface to whatever versions of FujiNet end up on MS-DOS machines (including some not-so-IBM compatibles like Sanyo MBC-550, Apricot PC/Xi/Xen/Fx, Mindset, etc.)
You can read the specification here: https://github.com/FujiNetWIFI/fujinet-rs232/blob/main/fujinet-bios.md
I have attempted to start implementations in this repo: https://github.com/FujiNetWIFI/fujinet-rs232
A deeper dive into the RS-232-C code:
- COM.C – is the lower level interrupt driven serial port code.
- FUJICOM.C – Implements the FujiNet command protocol using COM.C.
- FUJITIME.C – Uses FUJICOM to send NTP commands to set MS-DOS date/time.
- X1/ – The first experiment for a FujiNet BIOS, it has issues; need help.
- ISS/ – Uses FUJICOM to implement the ISS tracker.
X1 is where the first FujiNet BIOS experiment is happening. It takes COM and FUJICOM and attempts to implement a BIOS dispatching interface for a couple of example commands.
TEST.COM is a DEBUG written program that sends a GET ADAPTER CONFIG command to FujiBios and tells it to place its buffer at offset 0120 in the program segment.
READY.COM is another DEBUG program written to test command 0. It’s in flux.
BIOSTEST.C and TEST3.C were C programs intended to test the BIOS call interface and debug what is happening.
When I call the BIOS functions that use FUJICOM/COM, I can transmit just fine, receiving suddenly becomes an issue, bytes don’t show up, and sometimes the FIFO just hangs with no bytes available (when there should be)
Anyone who can help, I could appreciate some eyes on this.
Building Hardware
The Hardware for the FujiNet RS-232-C device is in the fujinet-hardware repo, if you want to build a device to help hack on this: https://github.com/FujiNetWIFI/fujinet-hardware/tree/master/RS232
If you want to help, please stop by the Discord!