Page 1 of 4

Color GAL5, color board for MZ80KC/1200

Posted: Fri Apr 24, 2020 10:41 pm
by MooZ
While browsing I/O magazine issues on archive.org, I stumbled upon the schematics for what appears to be a color expansion board for the MZ80K/C and MZ1200.
https://archive.org/details/Io19843/page/n183/mode/2up

Re: Color GAL5, color board for MZ80KC/1200

Posted: Sat Apr 25, 2020 10:15 am
by hlide
The MZ-1200 and MZ-80A have a lot of hardware parts in common: there is a connector which allows to add a color board (the engineers already thought about that addition):
*** the one for MZ-80A (pins are present) ***
mz80a_6.jpg
mz80a_6.jpg (36.58 KiB) Viewed 8584 times
*** the one for MZ-1200 (pins are not present) ***
mz12_6.jpg
mz12_6.jpg (32.92 KiB) Viewed 8584 times
And here the connector details:

Code: Select all

D0	D1	D2	D3	D4	D5	D6	D7	LOAD	VIDEO	/VHBLNK SYNCH	/HBLNK	GND	+ 12V	GND	+ 5V
A0	A1	A2	A3	A4	A5	A6	A7	A8	A9	A10	/WE	/GT	/CS	/RD	GND	+ 5V 

Code: Select all

Signal name	function
LOAD		The timing for fetching the character from the CGROM and loading it into the shift register for display output is shown below.
VIDEO		The video signal itself sent to a monochrome monitor after masking the non-display part with a blanking signal.
/VHBLNK		Synthesis of vertical and horizontal blanking signals.
SYNCH		A combination of vertical and horizontal sync signals (composite sync signal)
/HBLNK		Horizontal blanking signal
/GT		Attribute VRAM access data bus gate signal.
/CS		Attribute VRAM access chip select signal ($D800 to $DFFF)
A10~A0		It is not a pure Z80 address bus, but a MUX of the VRAM address to display it. That is, when writing to the attribute VRAM, it indicates the address, and in other cases, it indicates the VRAM being displayed.
D7~D0		Z80 data bus

Re: Color GAL5, color board for MZ80KC/1200

Posted: Sat Apr 25, 2020 10:16 am
by hlide
Which means the same card should probably work as well with an MZ-80A.

Re: Color GAL5, color board for MZ80KC/1200

Posted: Sat Apr 25, 2020 10:34 am
by hlide
The MZ-80K mirrors each 1K pages in $D000-$DFFF so it isn't possible to map the color pages at $D800-$DBFF as it conflicts with character VRAM. I would expect the same for the others like C/KE/KE2. To circumvolate that obstacle, we can use an "inker" : in the magazine it is $E00C. So we write the foreground and background colors at this address and each character writing to VRAM will also write the FG and BG colors in the attribute VRAM of the additional board. However, that's quite different from what it is done on MZ-80A/MZ-1200 (with an additional color board) and MZ-700 because you then need to set the right colors whenever printing characters as their colors would immediately change.

Re: Color GAL5, color board for MZ80KC/1200

Posted: Sat Apr 25, 2020 10:39 am
by hlide
For MZ-80A/MZ-1200 through the video connector:
COL80A.png
COL80A.png (49.54 KiB) Viewed 8582 times

Re: Color GAL5, color board for MZ80KC/1200

Posted: Tue Apr 28, 2020 4:47 pm
by hlide
Color Display Adapter (Note) This is an article of the I/O September 1981 issue that modifies the main body.
0E0C1H: Color data
  Bit7: unused
  Bit6: front red
  Bit5: Front green
  Bit4: Front blue
  Bit3: unused
  Bit2: Back red
  Bit1: Back green
  Bit0: Back blue
   Add back RAM to V-RAM 0D000H-0D3FFH.
   If you write the display code to VRAM as usual, the color data of 0E0C1H is written in the back RAM.
   Output as color data to a color monitor.
   Note that color data and MZ-700 color data are incompatible because red and green are swapped.
   
   <Example>
    Write 047H (front red, back white) to 0E0C1H
    Write 001H (dislay code A) to 0D000H
    A red A is displayed on a white background in the upper left of the screen


COLOR GAL5 (Note) This is an article of the I/O March 1984 issue about Yoshiki Kogyo's color gal.
0E00CH: Color data
  Bit7: unused
  Bit6: Back red
  Bit5: Back green
  Bit4: Back blue
  Bit3: unused
  Bit2: front red
  Bit1: Front green
  Bit0: Front blue
   Add back RAM to V-RAM 0D000H-0D3FFH.
   If you write the display code to VRAM as usual,
   Color data of 0E00CH is written in the back RAM
   Output as color data to a color monitor.
   Note that color data and MZ-700 color data are incompatible because read and green are swapped
   and because foreground and background are swapped.
   
   <Example>
    Write 047H (back red, front white) on 0E00CH
    Write 001H (dislay code A) to 0D000H
    White A is displayed in red on the upper left of the screen.

Re: Color GAL5, color board for MZ80KC/1200

Posted: Thu Apr 30, 2020 11:20 pm
by psmart
Interesting post seeing the Japanese GAL5 - the missing information. I built a colour board using Nibbles Lab schematic as the basis and need to make the DIN output, this will help a lot, thank-you for the information.

My board is at: https://eaw.app/sharpmz-upgrades-80col/

Re: Color GAL5, color board for MZ80KC/1200

Posted: Fri May 01, 2020 7:08 am
by hlide
Hi, psmart.

Your version is almost compatible with MZ-700. The color data matches the one for MZ-700, except for one thing: the font selector bits. Not a big deal since you can fix through your expanded CGROM.

The order for a MZ-700 compatible font selection would be:

Code: Select all

Slot	Attribute Bits 7,3	U9 Latch Bits 0:1	Size	Description
4	0,0			0,1			2K	MZ700 European CG-ROM (1st bank)
5	0,1			0,1			2K	MZ700 Japanese CG-ROM (1st bank)
6	1,0			0,1			2K	MZ700 European CG-ROM (2nd bank)
7	1,1			0,1			2K	MZ700 Japanese CG-ROM (2nd bank)
MZ-700 programs - as long as they don't deal with $E0-$E6 ports (DRAM $0000-0FFF and $D000-$FFFF) - should be able to run upon MZ-80 A with your color board.

Re: Color GAL5, color board for MZ80KC/1200

Posted: Fri May 01, 2020 9:44 am
by psmart
Hi Hilde,

I will be making updates to the board soon, mainly as I made a big mistake in the PCB design, I got the footprints of the 2 gate arrays the wrong way round, not sure how but it meant a lot of fine soldering to fix.

The MZ-80A mapping of the colour attribute RAM is different (page 167 of the user manual) so I will add logic to cater for both the MZ-700 and MZ-80A specifications. The MZ-80A allows for 2 bits of intensity, ie:

Bit 7:6 - Colour level 00:light -> 11:dark
Bit 5:3 - Background colour
5. Red
4. Green
3. Blue
Bit 2:0. Foreground colour.

Some of the MZ-700 aware programs such as PACMAN (MAC PAC) come up in full colour on the MZ-80A with this board, bits 7:3 remain at 0 during the game so the font is fine, but I take on board your suggestions and will re-arrange the CGROM's.

Thank-you for the feedback, appreciated.

Re: Color GAL5, color board for MZ80KC/1200

Posted: Fri May 01, 2020 2:38 pm
by hlide
That's weird. From your page, the color format is:

Code: Select all

Bit	Function
0	Background Blue
1	Background Red
2	Background Green
3	Character ROM Bit 0
4	Foreground Blue
5	Foreground Red
6	Foreground Green
7	Character ROM Bit 1
From MZ-700 manual:

Code: Select all

Bit	Function
0	Background Blue
1	Background Red
2	Background Green
3	Unused
4	Foreground Blue
5	Foreground Red
6	Foreground Green
7	Character ROM Bit 0
As for that "MZ-80A mapping of the colour attribute RAM is different (page 167 of the user manual)", I wonder which manual you're speaking about.

I have two remarks after rethinking:

1) Having EUROPEAN/JAPANESE bit in ATTRIBUTE bits is not good: A Japanese game will have bit 3 set to 0 so it would be better to put the Japanese version selectable from U9 latch bits. Unless you have a way to invert bit 3 or not.

2) For CP/M, wouldn't an ASCII font be more helpful?