Close

Serial Drivers and BBS

A project log for MSX COMPATIBLE BOARDS FOR RC2014

Create a series of boards designed for the RC2014 bus to achieve MSX/MSX2 compatiblity

dean-nethertonDean Netherton 06/27/2021 at 01:320 Comments

Between ZORK play sessions, I have been working on implementing compatible serial drivers for MSX BIOS and MSX-DOS.

No easy task.

For serial communication, the only software I have developed to date, is a little utility called xrecv, that talks directly to the SIO/2 chip to enable simple xmodem receiving of files.  I really want to access other serial based applications for the platform.  For that I need to implement serial driver for the standard RC2014 SIO/2 Module.

So I have been researching how MSX handled serial communications - and it seems like many computers of the era - the software support was a bit muddled. 

As I did not grow up with MSX - I can only rely on online archived docs, and guess at a few things.

There is an official bios interface for RS232 communications for the MSX platform - integrated through the MSX Extended Bios protocol.  This interface does seem to solve the problem of accessing interrupt driven serial devices, without knowledge of the specific hardware. (A feature missing in early IBM-PCs).  According the msx.org's page (https://www.msx.org/wiki/Category:RS-232C_Interfaces), there were quite a few products supporting this interface.  But I struggled to find application software I could use to test against.  This interface also seem to have performance issues - limiting to just 19200 baud.

What seems like a more popular driver model, are the Fossil drivers - developed by Erik Mass (https://www.msx.org/wiki/Fossil_driver).  I  assume (I could be wrong), this is inspired by the fossil drivers of the FidoBBS days (https://en.wikipedia.org/wiki/FOSSIL).  The interface protocol for MS-DOS and MSX-DOS are quite different.

Anyway, armed with this knowledge, I set a goal of writing both a MSX RS232 Extended Bios driver and a Fossil driver for my RC2014's SIO/2 Module.  

I had found some basic specification documents for the interfaces, detailing the API protocols.  But that alone will not be enough to ensure I have developed the drivers correctly.   The only way I can really verify compliance, it by testing with some applications.

Writing the drivers is proving to be quite an effort of endurance.  Getting the interface worked out, ensuring the interrupt handling is functioning correctly - resolving many strange and bewildering bugs.  But despite the hardships, I have, just today, been able to run a telnet application on my MSX machine talking to internet based BBS (using my PC as serial <-> internet gateway).

The slow text based screen drawing of the BBS pages were strangely thrilling to see.  The joy you can experience as you wonder what new image or content is slowly forming on your screenSo different to the modern Web, where it usually a battle of trying to read your content as ads appear and content shuffles around.

The drivers are only partially implemented - the telnet app is crashing at odd times - but as you can see from the pics above, communication is starting to happen.

I think its a few more weekends, before I could say they are at least stable - hopefully then, I can post here its all working.

Discussions