Hi everyone,
I'm disassembling Juno First for the fun of it.
I thought it would be easy, but I must say some of its code is baffling me.
It starts already with the start address of the ROM being 030Dh. OK, after some research I found out that some roms can have a bizarre mirroring, and therefore I suppose that the "correct" address is 430Dh. And it seems to fit, since there's a RET at 430Ch.
T430Dh 3EF0.... >ð.. LD A,0F0h T430Fh D3AA.... Óª.. OUT (0AAh),A ; PortC (8255) Keyb Row ; Erases RAM from 0E000h to E800h T4311h F3...... ó... DI T4312h 2100E0.. !.à. LD HL,0E000h T4315h 1101E0.. ..à. LD DE,0E001h T4318h 01FF07.. .ÿ.. LD BC,007FFh T431Bh 3600.... 6... LD (HL),000h T431Dh EDB0.... í°.. LDIR T431Fh ED56.... íV.. IM 1 ; sets Z80 in IM1 (normal mode) T4321h 3100E5.. 1.å. LD SP,0E500h ; puts SP @ 0E500h
First part is well understood, except for the fact that I have no idea what does exactly sending the F0h value to port AAh of the PPI. But the strangest part is yet to come:
; unknown effect T4324h 214E1D.. !N.. LD HL,01D4Eh T4327h 0608.... .... LD B,008h T4329h 1680.... .€.. LD D,080h T432Bh 5E...... ^... LD E,(HL) T432Ch EF...... ï... RST 40 ; RST 028h T432Dh 23...... #... INC HL ; T432Eh 14...... .... INC D ; T432Fh 10FA.... .ú.. DJNZ 0FAh ; Jump to 0432BH
It uses RST 028h (GETYPR), but according to the documentation, that call returns the type of DAC (decimal accumulator) ? WTF ???
The program uses RST 028h a couple of times after that, always using DE as input.
What does it do ?