Yesterday night I pulled out my oscilloscope and tweaked the timings used by the software serial implementation. I noticed some bits getting lost and tracked it down to the "edge delay" used to sync up with the start bit.
Now data transmission is much more reliable than before. Nonetheless, it is recommended to employ a protocol with checksums and re-transmit to ensure binary proof data transmission.
So, what should we do with it?
Maybe... allow the CP/M BDOS to load files via serial from a computer?
>python bdos_companion.py /dev/ttyUSB0 ZORK1.COM
Ready.
...and then on the Genius Leader 4000:
32K VGL CP/M 0.0.4 2019-11-14 by HotKey >SERIALLOAD LOADING... OK >RUN
Oooooooohhhhh!
I think we're on-track to playing ZORK during the holidays! :-)
Discussions
Become a Hackaday.io Member
Create an account to leave a comment. Already have an account? Log In.
Update: The CP/M BIOS/BDOS are slowly evolving. File operations are being re-directed over the serial port where they are handled by a python "companion" script.
Yesterday, ZORK changed its behavior: It is now accessing "ZORK1.DAT", seems to encounter a problem and now asks me to "Insert Game Disk 1". Well, at least some progress!
Are you sure? yes | no
that's great news! right now I'm playing around with the internal rom and disassembling it to understand how it works. Mainly focusing on BASIC but I would like to eventually replace the internal programs with my own (like a built in serial terminal, collapse os, and maybe even cp/m with some ram remapping like you did and a power-on-jump circuit for cold booting when ram is at 0x0000). So far I have determined that their BASIC is based on trs80 level 2 basic and I'm trying to restore the commands cut out of mine (LPRINT and LLIST) and some of the commands cut out of all of them (PEEK and POKE)
Are you sure? yes | no
That's a great idea! Let me know if you need some more infos beyond what can be deduced from the ZIP files I posted.
Maybe you can manage to have BASIC read files from the serial port via XMODEM...? (see vgl_softserial.h)
I once managed to run Z88DK's "bit banged" 3-voice audio engine on the GL4000 - that would be super cool as well.
Or using the HDD44780's ability to define custom characters to enable crude graphics functions in BASIC...
Ideas, ideas ideas... :-D
Are you sure? yes | no