So the machine I'm working on (a V40-based XT cloneish sort of thing) has a 32k PROM mounted at F800:0000, and "practical purposes" are using about 12k of it (8k main BIOS, 4k option ROM to handle a special disk system).
I figure there's something more useful or whimsical I can fit into the remaining 20k. My dream was to use the space for a small debugger/monitor, along the lines of that included on early Zenith PCs. This would be a useful to try to kick the disc controller into submission sometimes, when you can't boot enough to get to DEBUG.
As a proof of concept, I modified the main BIOS to believe it had Cassette Basic at F900:0000. At that point, I put a little stub there that will copy whatever I stash from F900:0100 to F900:4FFF down to 0000:7C00 and execute it.
This seems to allow running self-contained boot-sector programs like https://github.com/daniel-e/tetros or https://github.com/nanochess/pillman.
With some additional setup (initializing the sector registers to 07C0, putting the code at 0000:7D00, and moving the jump to 07C0:0100, to give a "more realistic" environment), I was able to get a DOS .COM executable running (the Palo Alto Tiny Basic from https://www.vcfed.org/forum/forum/te...basic-download)
The problem now is finding something better to put in. Tiny Basic is cute and obviously a neat throwback to "real" Cassette Basic, but a real monitor still feels more desirable. I originally figured DEBUG.COM would be a perfect drop in-- after all, it's been there since the dawn of time, odds are it uses very little more than BIOS functionality. Wrong. The version from DOS 2.0 basically explodes on launch, and from the source release, it appears to start making operating system calls early in its lifecycle. (I figured it MIGHT crash when you tried to read or write disc files, but not before that :sigh
Has anyone else tried this path? What monitor did you use? I'm assuming there are some "ROM-ready" designs that require less pre-load shimming, but I'm guessing there are more options if I can load a .COM into RAM and start at address 100.
It looks like the s100computers.com one is very elaborate, but also fairly dependent on their unusual hardware/firmware setup, rather than just relying on the BIOS features you'd find on a conventional PC clone, so it might need a fair bit of rework to get to a usable state.
There are some other "vintage" monitor scripts floating around, likely designed for other non-IBM 8086 platforms (again requiring rework), and even a few "512 byte monitor in a boot sector" but many of them don't include even rudimentary (dis) assemblers, which feels like it would be very useful.
I figure there's something more useful or whimsical I can fit into the remaining 20k. My dream was to use the space for a small debugger/monitor, along the lines of that included on early Zenith PCs. This would be a useful to try to kick the disc controller into submission sometimes, when you can't boot enough to get to DEBUG.
As a proof of concept, I modified the main BIOS to believe it had Cassette Basic at F900:0000. At that point, I put a little stub there that will copy whatever I stash from F900:0100 to F900:4FFF down to 0000:7C00 and execute it.
This seems to allow running self-contained boot-sector programs like https://github.com/daniel-e/tetros or https://github.com/nanochess/pillman.
With some additional setup (initializing the sector registers to 07C0, putting the code at 0000:7D00, and moving the jump to 07C0:0100, to give a "more realistic" environment), I was able to get a DOS .COM executable running (the Palo Alto Tiny Basic from https://www.vcfed.org/forum/forum/te...basic-download)
The problem now is finding something better to put in. Tiny Basic is cute and obviously a neat throwback to "real" Cassette Basic, but a real monitor still feels more desirable. I originally figured DEBUG.COM would be a perfect drop in-- after all, it's been there since the dawn of time, odds are it uses very little more than BIOS functionality. Wrong. The version from DOS 2.0 basically explodes on launch, and from the source release, it appears to start making operating system calls early in its lifecycle. (I figured it MIGHT crash when you tried to read or write disc files, but not before that :sigh
Has anyone else tried this path? What monitor did you use? I'm assuming there are some "ROM-ready" designs that require less pre-load shimming, but I'm guessing there are more options if I can load a .COM into RAM and start at address 100.
It looks like the s100computers.com one is very elaborate, but also fairly dependent on their unusual hardware/firmware setup, rather than just relying on the BIOS features you'd find on a conventional PC clone, so it might need a fair bit of rework to get to a usable state.
There are some other "vintage" monitor scripts floating around, likely designed for other non-IBM 8086 platforms (again requiring rework), and even a few "512 byte monitor in a boot sector" but many of them don't include even rudimentary (dis) assemblers, which feels like it would be very useful.