The title of this post shure looks promising, but really it only means that I`ve managed to use a regular TV as a monitor for my computer 🙂 In my search for most popular and easy to obtain display, a CGA option is an obvious choice: 8-bit ISA Magic Combo Card that I`m currently using in my design, has the capability of CGA RGB output (selectable by jumpers):


Monitor type and video adapter mode jumpers are located left to the crystal oscillator. Left jumper is monitor type (here set to COLOR). Right Jumper is video adapter mode (set to CGA here)

Details of this can be found on Total Hardware:

CGA output signals include Red, Green, Blue, Intensity, Horizontal and  Vertical Sync. Horizontal frequency is 15.75Khz, vertical refresh rate is 60Hz. This means that a regular TV with SCART RGB input could be used for displaying CGA video. In order to do this, two issues have to be fixed, first: All signals are TTL, so they have to be converted to analog voltage required by SCART RGB. Second issue is that we need to make a composite sync signal from separate H and V signals. Both problems can be solved with a simple active converter circruit presented here on Vogons forum:
I`ve made such a converter according to the schematic provided by bjt, and it worked perfectly with my PC XT clone. I`m planning to build another one and integrate it with C-Z80. For now, I`m just borrowing it from my XT.

After preparing the hardware, I could do the software part of the modification. I`ve only used info from IBM`s original Hardware Manual for Color Graphics Adapter, that is available on
John Elliot`s “Colour Graphics Adapter: Notes” article could also be helpful:

Two files have to be modified from previous setup: bootcpm program and CP/M BIOS. For the first one I had to rewrite the video card initialisation routine. For the Bios itself – most of the console output code had to be modified for CGA. The modification proved to be quite easy actually, because MDA and CGA designs are similar and the Hardware Manual describes the inistalisation process in a very simple way. It`s also nice to learn how those cards were designed to work together in a PC system: all I/O and video RAM address spaces are separated, and no conflicts are possible.

Both files are available to download here:

CP/M Bios for CGA

Bootcpm program
If I want to go back to MDA again, I would only need to replace both files with previous ones and change jumper settings on the video card. I could also prepare a set of files for serial console mode.

The final effect of the MDA to CGA migration can be seen on a photo below: C-Z80 Computer outputting to SCART RGB capable TV. An external TTL-CGA to SCART adapter lies on the case of the computer:


More disk space, format.asm bugfix:

Donn Stewart from wrote me an email describing a bug he found in his format.asm program, that I`ve modified and used for my design. He noticed, that formatting routine needs the starting sector of each track to be 0 , not 1. This modification helped me to get rid of random problems with garbage in directories and “sector not found” messages that sometimes popped out. Having this fixed, I`ve also made a decision to move to a bigger CF cad, and expand the disk drive numbers to CP/M`s maximum 16 drives, labelled from A to P. Here is the proof:


Showing all available disk drives with STAT command

This seems to be a reasonable disk space for some confortable work with CP/M. Below is the link to fixed format.asm. This particular source formats drive numbers 4-15, so not to erase the contents of the four disks I was allready using.

Fixed format.asm

Plans for near future:

  • Keyboard handling routine in CP/M BIOS still needs some tweaking.
  •  I`m thinking about leaving out the VGA display adapter, and use only the ISA card for display both in ROM Monitor and CP/M. This would also enable me to modify the ISA adapter card, so the access to it would be faster (directly connect the address lines to Z80 bus instead of latches).
  •  Test of the printer port on Magic Combo card.
  • Adding some external ports to the case (Z80 bus, 8255 ports,RS232 port, CTC signals, SCART connector)