In my previous post I talked about a second VDU card that came with my Interak-1. This is a VDU2K and supports 64×25 characters in its 2K of video memory.
When I finished the card and plugged it in, it mostly worked but there were problems.
Clearly the monitor ROM was expecting half the resolution and put the prompt half way up the screen but it wasn’t clear whether or not there were other problems. I needed to try and clarify is there was a hardware issue too.
To cut a long story short, I have blown a ROM that tries to clear the screen and then output every character in the character set.
The photo shows that the character set looks fine but clearing the screen has failed. This particular photo is misleading as it shows the screen filled with a single character. That is unusual. I usually see a repeated pattern of two or three characters. I’ve tried a few versions of this test. I’ve put the character set in various places but it makes no difference. The result is always that the screen doesn’t clear properly but the character set is fine.
I think the problem is somewhere in the circuit that looks after memory reads.
Outputting the character set.
;
; Now. Just dump out the character set to the screen.
;
ld hl, SCR_START;
ld b, 0x00
ld a, 0x00
loop:
ld (hl), a
inc hl
inc a
djnz loop
When I output a character set, I’m getting the CPU to write ascending values to successive memory locations. Just writes.
start: ld hl, SCR_START
ld de, SCR_START + 1
ld bc, SCR_WIDTH * SCR_HEIGHT - 1
ld (hl), 0x00
ldir
When I clear the screen I’m writing a 0 to the start of memory and then using the Z80 instruction LDIR to copy that throughout the scree’s memory. In order to do that, the Z80 must read the first location and copy it to the second. It then reads the second location and copies it to the third and so on.
The LDIR has to read memory and I think that’s the bit that’s going wrong.
Further reading.
When my friend Dave got this card, it seems that not all of the documentation was available. However, thanks to a chance discovery, I had been in contact with Dave Parkins of Greenbank Electronic the original designer and he generously found and emailed the design notes for the card!
As I was reading through these notes I came across this paragraph:-
In a current Interak 1 disk system all of the 64k of RAM should be enabled. All elements of the two DIL switches on the DRM-64 card should therefore be OFF.
My RAM card had been set to just use 48K. I switched in the remaining 16K and Bingo! we have a clear screen.
The new card seems to need the RAM beneath its own. I think it has something to do with the way the Interak avoid snow on the screen. However, we are up and running now.
As you can imagine, the monitor ROM doesn’t know about the extra screen real estate but it does work and so does the keyboard.
I was recently given some other binaries to try, including a monitor that can cope with 64 columns but it needs some attention as it was intended to run under CPM from disk.
Progress! I’m rather chuffed.