The problem
with either of those is that the ROM remains in the memory
map and takes up valuable RAM space.
Right. That much I get... so once CP/M is running, it's ordinary not
to refer to the boot ROMs? There's typically not a requirement to
keep some low-level BIOSy stuff in ROM?
No, in most (but not all) CP/M systems, the CP/M BIOS is not dependant on
the boot ROM.
Unlike a PC, where the ROM contains more-complicated-than-it-needs-to-be
general purpose code to control all kinds of hardware, a typical S-100 CP/M
boot rom contained just enough code to read one sector from a drive and
jump to it. This goes back to the days of wildly varying S-100 cards...
The guy who wrote the boot rom (the disk controller maker) only knew for
sure how to talk to one bit of hardware in your system (his disk controller).
It also ment that you (the knowlegable user) could implement the code to
control your particular set of I/O devices without having to have the
resources to reprogram or otherwise replace the boot ROM - by storing all
of the device handling code on disk, it was easily replaceable. With
a front panel machine, it was even possible to boot up a disk provided
by your disk controller vendor (which didn't know how to talk to anything
else), halt it, patch in basic console serial I/O functions using the
front panel, start it in memory, and save the configured system back
out to a disk.
There are exceptions - systems with complex enough internal hardware and
ROM support for it that it makes sense to just keep and use the ROM,
however in more typical cases, even if the ROM contains some code that
you can use, it saves memory to replace it with RAM and have only the
code that you need resident with the system.
That certainly takes care of how to handle 64K of RAM
- just get rid
of the ROM from the memory map as soon as possible. With my other
experience with 8-bit micros, I didn't expect that this was a viable
techique. The systems I am familiar with pretty much require that you
keep the ROMs around - even with the C-64, which will let you bank out
ROMs and run from RAM, folks didn't tend to completely ditch the
Kernel ROM. Of course, Commodore machines don't have a "real"
operating system as such, and not even a DOS in the sense of an Apple
II or a TRS-80 - the routines in the ROM were commonly used by
applications like Zork that didn't care about BASIC, but they did care
that the ROMs had enough low-level I/O stuff to read and write disk
blocks, etc.
Again, think in terms of a box with a power supply and bus, and everything
else changable ... That was the environment CP/M was designed to address.
A C64 or any of a zillion other single-board computers have a much more
predefined environment, and often that environment is "software unfriendlty"
in order to make it cheaper - in such an environment, the ROM is much more
likely to be useful, and hence used by an OS or other system application.
Even so - It is not uncommon to completely eliminate the ROM and use OS
resident drivers once the OS starts up, as this saves space and allows for
a fuller RAM map.
A video card
will chew up valuable RAM, and many of them are only 16x64,
but it does let you do real-time screen updates, games etc.
Ah... now we are onto something - games... are there many games for
CP/M that require a video card, or were most happy with whatever sort
of TTY-type device (ANSI codes or not) was out there?
I have a number of early commercial games on paper-tape which used a memory
mapped video card, however a lot of these were provided by a vendor for a
particular card. I was actually thinking more in terms of stuff that you
might write yourself - I had a VDM-1 in my Altair for a few years, and I
recall having loads of fun writing "character based" breakout, space
invaders and the like...
Dave
--
dave06a (at) Dave Dunfield
dunfield (dot) Firmware development services & tools:
www.dunfield.com
com Collector of vintage computing equipment:
http://www.classiccmp.org/dunfield/index.html