; Maplin SBC ROM ; I/O map ; ------- ; &00 8279 Keyboard Data ; &01 8279 Keyboard Status/Control ; &08 8251 Serial Data ; &09 8251 Serial Status/Control ; &0C LEDs ORG &0000 ; RESET ; ===== .L0000 DI JP L0076 NOP NOP NOP NOP ; RST &08 to &30 vector via &907/8-&911/2 ; ======================================= ; RST &08 ; ======= .L0008 PUSH HL LD HL,(&0907) ; Vector via &907 JP (HL) NOP NOP NOP ; RST &10 ; ======= .L0010 PUSH HL LD HL,(&0909) ; Vector via &909 JP (HL) NOP NOP NOP ; RST &18 ; ======= .L0018 PUSH HL LD HL,(&090B) ; Vector via &90B JP (HL) NOP NOP NOP ; RST &20 ; ======= .L0020 PUSH HL LD HL,(&090D) ; Vector via &90D JP (HL) NOP NOP NOP ; RST &28 ; ======= .L0028 PUSH HL LD HL,(&090F) ; Vector via &90F JP (HL) NOP NOP NOP ; RST &30 ; ======= .L0030 PUSH HL LD HL,(&0911) ; Vector via &911 JP (HL) NOP NOP NOP ; INT ROUTINE ; =========== .L0038 PUSH AF PUSH BC PUSH DE PUSH HL LD A,&FF IN A,(&09) ; Get 8251 Serial status RRA CALL C,L0116 ; bit 0 set, TxRdy, send a byte LD A,&FF IN A,(&09) ; Get 8251 Serial status RRA RRA CALL C,L014A ; bit 1 set, RxRdy, get a byte LD HL,(&0905) JP (HL) ; Continue via vector at &905 .L0051 POP HL POP DE POP BC POP AF .L0055 EI RET NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP ; NMI ROUTINE ; =========== .L0066 PUSH HL PUSH AF LD HL,(&0913) ; Get vector at &913 LD A,H OR L JR Z,L0070 ; If zero, just return JP (HL) ; Jump to vector .L0070 POP AF POP HL RETN ; Default null routine for RST &08-RST &30 ; ---------------------------------------- .L0074 POP HL RET ; Startup code, continues from RESET ; ================================== .L0076 LD BC,&0000 .L0079 DEC BC LD A,B OR C JR NZ,L0079 ; Loop for a while to delay LD HL,&0800 ; Look for end of RAM, start at &800 .L0081 LD E,(HL) ; Get byte from memory LD A,&55 LD (HL),A ; Write test value CP (HL) JR NZ,L0094 ; Didn't change, end of RAM LD A,&AA LD (HL),A ; Write test value CP (HL) JR NZ,L0094 ; Didn't change, end of RAM LD (HL),E ; Restore byte to memory INC HL LD A,H OR L JR NZ,L0081 ; Loop until wrap round to &0000 .L0094 DEC HL ; Shouldn't do this, as SP points to top-of-stack +1 LD (&0915),HL ; Set top of physical RAM LD HL,&0000 LD (&0900),HL ; Clear serial input buffer indexes LD (&0902),HL ; Clear serial output buffer indexes LD (&0913),HL ; Clear NMI vector LD HL,L0360 LD (&0909),HL ; RST &10 vectors to L0360 .L00AA LD HL,L0074 ; Other RSTs vector to null routine LD (&0907),HL LD (&090B),HL LD (&090D),HL LD (&090F),HL LD (&0911),HL LD BC,&FF09 ; &09=8251 Serial Status/Control register XOR A OUT (C),A ; Write a few zeros to clear Control FIFO OUT (C),A OUT (C),A LD A,&40 OUT (C),A ; Reset LD A,&4E OUT (C),A ; 1stop+NoParity+8bit+divide2 LD A,&04 OUT (C),A ; RxEnable LD HL,L0051 ; RST &38 vector to null INT routine LD (&0905),HL LD A,&08 LD (&0904),A ; Serial control flags IM 1 ; IM 1 - INTs do RST &38 EI LD A,&11 ; A=XON LD SP,(&0915) ; Point SP to top of memory-1 CALL L01BA ; Send XON to serial output buffer LD HL,(&0917) ; get something LD DE,&19B6 XOR A SBC HL,DE ; Is it &19B6 ? JR NZ,L0107 ; Not &19B6, jump to... LD HL,(&0919) ; Get something LD A,&CF ADD A,L ; A=(&919)+&CF ADD A,H ; A=(&91A)+(&919)+&CF LD DE,(&091B) ; Store it .L00FF SUB A,E JR NZ,L0107 LD BC,L010F PUSH BC JP (HL) .L0107 LD A,(&0800) ; Get byte from &0800 CP &C3 ; Does it contain a JP opcode? CALL Z,&0800 ; If so, call it, then continue .L010F LD A,&03 OUT (&0C),A ; Set LEDs to %00000011 JP L0390 ; Jump to start terminal ; TxRdy on INT ; ============ .L0116 LD HL,&0904 ; Point to flags LD A,(HL) AND &30 JP NZ,L01A6 ; Send XON/OFF BIT 0,(HL) JR NZ,L012B ; bit 0 set, sending disabled LD DE,(&0902) ; E=insert index, D=remove index LD A,D ; Compare input and output indexes SUB A,E JR NZ,L0135 ; Output buffer not empty, remove a byte .L012B LD A,&04 ; RxEnable LD BC,&FF09 ; 8251 Serial Status/Control register OUT (C),A SET 3,(HL) RET .L0135 LD C,D ; BC=output index into output buffer LD B,&00 LD HL,&0880 ; Point to base of output buffer ADD HL,BC ; Add index LD A,(HL) ; Get byte from buffer LD BC,&FF08 ; 8251 Serial Data register OUT (C),A ; Send byte LD A,D ; Increment output index, wrapping at &7F INC A AND &7F LD (&0903),A ; Update serial output buffer RET ; RxRdy on INT ; ============ .L014A LD HL,&0904 ; Point to flags LD A,&FF IN A,(&08) ; Read from 8251 Serial Data register BIT 2,(HL) JR NZ,L0173 ; XON/OFF not being used, jump to insert CP &11 JR Z,L0160 ; Jump with XON CP &13 JR NZ,L0173 ; Jump if not XOFF SET 0,(HL) ; Set 'XON received' RET .L0160 RES 0,(HL) ; Clear 'XON received' LD DE,(&0902) LD A,D SUB A,E RET Z .L0169 LD BC,&FF09 LD A,&05 OUT (C),A RES 3,(HL) RET .L0173 LD DE,(&0900) ; E=input index, D=output index LD C,E ; BC=input index into input buffer LD B,&00 LD HL,&0800 ; Point to base of input buffer ADD HL,BC ; Add index LD (HL),A ; Insert byte LD A,E ; Increment input index, wrapping at &7F INC A AND &7F LD E,A CP D JR NZ,L018D LD A,D INC A AND &7F LD D,A LD A,E .L018D LD (&0900),DE ; Update serial input indexes LD HL,&0904 BIT 2,(HL) RET NZ BIT 1,(HL) RET NZ SUB A,D AND &7F CP &60 RET C SET 1,(HL) SET 5,(HL) JR L0169 .L01A6 AND &10 JR Z,L01B4 RES 4,(HL) LD A,&11 ; Send XON .L01AE LD BC,&FF08 ; 8251 Serial Data register OUT (C),A RET .L01B4 RES 5,(HL) LD A,&13 JR L01AE ; Insert byte in A into serial output buffer ; ------------------------------------------ .L01BA PUSH DE PUSH BC PUSH HL PUSH AF .L01BE LD DE,(&0902) ; Serial output buffer indexes LD A,E INC A AND &7F ; Compare Insert and Remove indexes CP D JR Z,L01BE ; Full, loop until not full LD C,E LD B,&00 LD HL,&0880 ; Point to base of serial output buffer ADD HL,BC POP BC LD (HL),B ; Insert byte into buffer LD (&0902),A ; Update buffer insert index LD HL,&0904 BIT 2,(HL) JR NZ,L022A BIT 0,(HL) CALL Z,L0169 JR L022A .L01E3 PUSH DE PUSH BC PUSH HL LD B,&05 LD DE,&0000 .L01EB LD HL,(&0900) LD A,L CP H JR NZ,L01FC DEC DE LD A,D OR E JR NZ,L01EB DJNZ L01EB XOR A JR L022A .L01FC LD A,H LD C,H INC A AND &7F LD E,L LD (&0901),A LD B,&00 LD HL,&0800 ADD HL,BC LD D,(HL) LD HL,&0904 BIT 2,(HL) JR NZ,L0227 BIT 1,(HL) JR Z,L0227 LD A,E INC C SUB A,C AND &7F CP &20 JR NC,L0227 RES 1,(HL) SET 4,(HL) CALL L0169 .L0227 OR &FF LD A,D .L022A POP HL POP BC POP DE RET LD A,&4D JP L02F3 LD A,&4E CALL L02F3 LD HL,&0917 JP L02FC .L023E ; Message starts with "@Axxxx" DEFS ", Z80 Monitor Maplin Z80 card, (C)Maplin PLC 1989, V1.1" DEFB 13 .L0279 DI LD HL,L02D4 LD (&0907),HL ; RST &08 -> L02D4 LD HL,&0000 LD (&0900),HL ; Clear serial input buffer indexes LD (&0902),HL ; Clear serial output buffer indexes LD HL,L0051 LD (&0905),HL ; RST &38 -> null routine LD A,&08 LD (&0904),A ; Set XON/XOFF flags IM 1 EI LD A,&11 ; A=XON CALL L01BA ; Send XON LD A,ASC"@" CALL L02D8 ; Send '@' LD A,ASC"A" CALL L02D8 ; Send 'A' LD B,&04 ; Four digits to print LD HL,(&0915) ; HL=top of RAM .L02AB ; Print top of memory in hex LD A,H ; Get top nybble RR A ; DIV 16 RR A RR A RR A AND &0F ; Convert to hex ADD A,ASC"0" .L02B8 CP ASC"9"+1 JR C,L02BE ADD A,&07 .L02BE CALL L02D8 ; Send character RL L ; Move next nybble upwards RL H RL L RL H RL L RL H RL L RL H DJNZ L02AB ; Loop for four characters RET .L02D4 POP HL JP L04A2 .L02D8 PUSH AF CP &1B JR Z,L02E5 CP &11 JR Z,L02E5 CP &13 JR NZ,L02EE .L02E5 LD A,&1B CALL L01BA POP AF PUSH AF OR &80 .L02EE CALL L01BA POP AF RET .L02F3 PUSH AF LD A,ASC"@" CALL L02D8 POP AF JR L02D8 .L02FC PUSH AF LD A,L CALL L02D8 LD A,H CALL L02D8 POP AF RET .L0307 PUSH BC PUSH HL PUSH DE LD DE,&0000 LD B,&08 .L030F LD HL,(&0900) LD A,H CP L JR NZ,L0322 DEC DE LD A,D OR E JR NZ,L030F DJNZ L030F XOR A POP DE POP HL POP BC RET .L0322 CALL L01E3 CP &1B JR NZ,L032E CALL L01E3 AND &7F .L032E INC B POP DE POP HL POP BC RET .L0333 PUSH DE LD E,A CALL L0307 JR Z,L033F LD L,A CALL L0307 LD H,A .L033F LD A,E POP DE RET .L0342 LD DE,&0000 .L0345 LD HL,(&0900) LD A,L CP H JR Z,L035A CALL L01E3 CP &FF JR NZ,L035A LD HL,L0000 LD (&0917),HL RST &00 .L035A DEC DE LD A,D OR E JR NZ,L0345 RET ; Default RST &10 routine ; ======================= ; E=command .L0360 LD D,&00 LD HL,L036D ; Point to table ADD HL,DE ADD HL,DE LD E,(HL) INC HL LD D,(HL) POP HL ; Drop return address PUSH DE ; Push routine address RET ; Jump to it ; Address table for RST &10 ; ------------------------- .L036D RLCA INC BC EX (SP),HL LD BC,L02D8 CP D LD BC,L0342 LD A,E INC BC ADD A,L INC BC ; Check if input buffer is not empty ; ---------------------------------- .L037B PUSH HL LD E,A LD HL,(&0900) ; Serial input indexes LD A,H CP L POP HL LD A,E RET ; Check if output buffer is empty ; ------------------------------- .L0385 PUSH HL LD E,A LD HL,(&0902) ; Serial output indexes INC L LD A,L CP H LD A,E POP HL RET ; Start serial terminal ; --------------------- .L0390 LD SP,&0A76 ; Set stack to &0A76 CALL L0279 ; Print top of memory to serial LD HL,&091C LD DE,&091D LD (HL),&00 LD BC,&0093 ; Clear memory from &091C to &09AF LDIR LD HL,&0A46 LD (&0932),HL LD HL,L023E ; Point to startup message .L03AC LD A,(HL) ; Get character from startup message CALL L02D8 ; Send it to serial output INC HL CP &0D JR NZ,L03AC ; Loop until sent ; Loop waiting for a command from host .L03B5 CALL L0307 ; Check serial input JR Z,L03B5 ; Loop until byte received CP ASC"@" JR NZ,L03B5 ; Loop until '@' CALL L0307 ; Check serial input JR Z,L03B5 ; Loop until byte received LD HL,L03E4 ; Point to command table .L03C6 CP (HL) JR Z,L03D3 ; Command matches INC HL ; Step to next entry INC HL INC HL LD E,(HL) ; Get byte INC E ; Is it end marker (&00) DEC E JR NZ,L03C6 ; Check this entry JR L03B5 ; Command not matched, jump back to wait .L03D3 INC HL ; Get address to DE LD E,(HL) INC HL LD D,(HL) LD HL,L03DD ; Push return address PUSH HL PUSH DE ; Push routine address RET ; Jump to it .L03DD LD A,ASC"^" CALL L02D8 ; Send '^' to serial output JR L03B5 ; Jump back to wait for command ; Command table ; ------------- .L03E4 DEFM "A" DEFW L0409 DEFM "B" DEFW L040C DEFM "C" DEFW L0417 DEFM "D" DEFW L0433 DEFM "G" DEFW L044F DEFM "H" DEFW L0525 DEFM "I" DEFW L0536 DEFM "J" DEFW L0547 DEFM "K" DEFW L05xx DEFM "L" DEFW L05xx DEFM "M" DEFW L022E DEFM "N" DEFW L0233 DEFB &00 ; Command 'A' ; ----------- .L0409 JP L0390 ; Restart terminal ; Command 'B' ; ----------- .L040C LD A,ASC"B" CALL L02F3 ; Send "@B" acknowledge LD HL,&091C JP L02FC ; Command 'C' ; ----------- .L0417 CALL L0333 RET Z EX DE,HL CALL L0333 RET Z LD C,L LD B,H EX DE,HL .L0423 CALL L0307 RET Z LD (HL),A INC HL DEC BC LD A,B OR C JR NZ,L0423 LD A,ASC"C" JP L02F3 .L0433 CALL L0333 RET Z EX DE,HL CALL L0333 RET Z LD C,L LD B,H EX DE,HL LD A,L44 CALL L02F3 .L0444 LD A,(HL) CALL L02D8 INC HL DEC BC LD A,B OR C JR NZ,L0444 RET CALL L0333 RET Z CALL L0307 RET Z OR A JR NZ,L0469 LD SP,&0A46 LD BC,&0000 PUSH BC LD BC,L04A2 PUSH BC LD (&0932),SP .L0469 LD SP,(&0932) PUSH HL ; Push return address LD HL,(&0924) PUSH HL POP AF EX AF,AF' LD HL,(&092A) LD BC,(&0926) LD DE,(&0928) LD IY,(&092E) EXX .L0484 LD HL,(&0930) LD A,L LD R,A LD A,H LD I,A LD HL,(&091C) PUSH HL POP AF LD BC,(&091E) LD DE,(&0920) LD HL,(&0922) LD IX,(&092C) RET .L04A2 LD (&0922),HL LD (&091E),BC LD (&0920),DE PUSH AF POP HL LD (&091C),HL LD A,I LD H,A LD A,R LD L,A LD (&0930),HL LD (&092C),IX POP DE LD A,D OR E JR Z,L04FD DEC DE LD IX,&0936 LD BC,L000C LD A,&0A .L04CE LD L,(IX+0) LD H,(IX+1) OR A SBC HL,DE JR Z,L04E0 ADD IX,BC DEC A JR NZ,L04CE JR L04FD .L04E0 LD L,(IX+2) LD H,(IX+3) LD BC,&0001 OR A SBC HL,BC JR Z,L04FD LD (IX+2),L LD (IX+3),H LD BC,&0004 ADD IX,BC PUSH IX JR L0484 .L04FD LD (&092E),IY LD (&0932),SP LD (&0934),DE EXX LD (&092A),HL LD (&0926),BC LD (&0928),DE EXX LD A,&47 CALL L02F3 EX DE,HL CALL L02FC LD SP,&0A76 JP L03DD CALL L0333 RET Z CALL L0307 RET Z LD C,L LD B,H OUT (C),A LD A,&48 JP L02F3 CALL L0333 RET Z LD C,L LD B,H IN B,(C) LD A,&49 CALL L02F3 LD A,B JP L02D8 CALL L0333 PUSH HL POP IX CALL L0307 RET Z OR A RET Z CP &21 RET NC LD B,A LD HL,&0A48 LD (HL),A INC HL .L055C CALL L0307 RET Z LD (HL),A INC HL DJNZ L055C LD IY,&0A48 LD DE,&0000 .L056B PUSH IY POP HL LD B,(HL) INC HL .L0570 LD A,(IX+0) CP (HL) JR NZ,L0594 INC HL CALL L0599 DJNZ L0570 LD C,(IY+0) OR A PUSH IX POP HL SBC HL,BC LD E,&01 .L0587 LD A,&4A CALL L02F3 LD A,E CALL L02D8 CALL L02FC RET .L0594 CALL L0599 JR L056B .L0599 DEC DE INC IX LD A,E OR D RET NZ POP DE LD E,&00 JR L0587 CALL L0333 RET Z LD C,L LD B,H CALL L0333 RET Z EX DE,HL CALL L0333 RET Z PUSH BC LD C,L LD B,H POP HL PUSH HL OR A SBC HL,DE POP HL JR C,L05C5 LDIR LD A,&4B JP L02F3 .L05C5 ADD HL,BC DEC HL EX DE,HL ADD HL,BC DEC HL EX DE,HL LDDR LD A,&4B JP L02F3 CALL L0333 RET Z EX DE,HL CALL L0333 RET Z LD C,L LD B,H CALL L0307 RET Z EX DE,HL LD E,A .L05E3 LD (HL),E DEC BC INC HL LD A,B OR C JR NZ,L05E3 LD A,ASC"L" JP L02F3 ; Padding to end of ROM ; --------------------- .L05EF RST &38 RST &38 RST &38 RST &38 RST &38 RST &38 RST &38 RST &38 RST &38 RST &38 RST &38 RST &38 RST &38 RST &38 RST &38 RST &38 RST &38 LD D,H LD L,C LD (HL),B LD (HL),B LD H,L LD (HL),D RST &38 LD H,C LD (HL),D LD H,L JR NZ,L0680 LD L,B LD H,L JR NZ,L0685 LD L,H LD (HL),H LD L,C LD L,L LD H,C LD (HL),H LD H,L JR NZ,L0682 LD L,(HL) LD H,H LD L,C LD H,L JR NZ,L068F LD L,A LD (HL),B JR NZ,L068A LD (HL),L LD L,C LD (HL),H LD H,C LD (HL),D JR NZ,L068C LD H,C LD L,(HL) LD H,H JR NZ,L069B LD L,A LD L,A LD L,E JR NZ,L06A3 LD (HL),L LD (HL),H JR NZ,L069E LD L,A LD (HL),D JR NZ,L06B0 LD L,B LD H,L LD L,L JR NZ,L06B0 LD L,(HL) JR NZ,L06B8 LD L,B LD H,L JR NZ,L069A LD C,A LD C,A LD B,(HL) LD D,H LD C,A LD D,B JR NZ,L06BC LD H,C LD H,D LD L,H LD H,L INC L JR NZ,L06C6 LD (HL),D JR NZ,L06CE LD H,L LD L,H LD H,L LD (HL),B LD L,B LD L,A LD H,L JR NZ,L068B JR NC,L0696 LD (&3836),A ADD HL,HL JR NZ,L06A2 SCF JR NC,L069E JR NC,L06A9 LD H,(HL) LD L,A LD (HL),D JR NZ,L06DB LD (HL),L LD (HL),H LD L,B LD H,L LD (HL),D JR NZ,L06E5 LD L,(HL) LD H,(HL) LD L,A LD (HL),D .L0680 LD L,L LD H,C .L0682 LD (HL),H LD L,C LD L,A .L0685 LD L,(HL) LD L,&2E LD L,&FF .L068A RST &38 .L068B RST &38 .L068C RST &38 RST &38 RST &38 .L068F RST &38 RST &38 RST &38 RST &38 RST &38 RST &38 RST &38 .L0696 RST &38 RST &38 RST &38 RST &38 .L069A RST &38 .L069B RST &38 RST &38 RST &38 .L069E RST &38 RST &38 LD D,H LD L,B .L06A2 LD H,L .L06A3 JR NZ,L0707 LD H,C LD L,(HL) LD H,H JR NZ,L0713 LD (HL),E JR NZ,L070E JR NZ,L0723 LD A,C .L06B0 LD (HL),B LD L,C LD H,E LD H,C LD L,H JR NZ,L06EC JR NZ,L0729 LD L,C LD H,L LD H,E .L06BC LD H,L JR NZ,L06DF LD (HL),E LD L,C LD L,(HL) LD H,A LD H,L LD (HL),D INC L .L06C6 LD (&6720),A LD (HL),L LD L,C LD (HL),H LD H,C LD (HL),D .L06CE LD (HL),E INC L LD B,D LD H,C LD (HL),E LD (HL),E JR NZ,L0737 LD L,(HL) LD H,H JR NZ,L071E LD (HL),D .L06DB LD (HL),L LD L,L LD (HL),E LD L,&FF RST &38 RST &38 RST &38 RST &38 RST &38 .L06E5 RST &38 RST &38 RST &38 RST &38 RST &38 RST &38 RST &38 .L06EC RST &38 RST &38 RST &38 RST &38 LD D,H LD L,C LD (HL),B LD (HL),B LD H,L LD (HL),D JR NZ,L075C LD H,L LD (HL),E LD H,L LD (HL),D HALT LD H,L JR NZ,L0774 LD L,A JR NZ,L0767 LD L,A JR NZ,L077D LD H,L .L0707 LD L,H LD L,H JR NZ,L076C LD L,(HL) LD H,H JR NZ,L0782 LD L,B LD L,A LD (HL),L LD L,H .L0713 LD H,H JR NZ,L0778 LD H,L JR NZ,L0781 LD H,L LD H,C LD (HL),D LD H,H LD HL,&FFFF RST &38 RST &38 RST &38 .L0723 RST &38 RST &38 RST &38 RST &38 RST &38 RST &38 .L0729 RST &38 RST &38 RST &38 RST &38 RST &38 RST &38 RST &38 LD D,B LD L,H LD H,L LD H,C LD (HL),E LD H,L JR NZ,L07A0 LD H,L LD L,H LD (HL),B JR NZ,L07B2 LD (HL),E JR NZ,L07A2 LD A,C JR NZ,L07B7 LD H,L LD L,H LD L,H LD L,C LD L,(HL) LD H,A JR NZ,L07C4 LD L,A LD (HL),L LD (HL),D JR NZ,L07B6 LD (HL),D LD L,C LD H,L LD L,(HL) LD H,H LD (HL),E JR NZ,L07B9 LD H,D LD L,A LD (HL),L LD (HL),H .L075C JR NZ,L07D2 LD L,C LD (HL),B LD (HL),B LD H,L LD (HL),D LD L,&2E LD L,&2E .L0767 LD L,&2E LD L,&2E LD L,&2E LD L,&2E LD L,L5F RST &38 RST &38 RST &38 .L0774 RST &38 RST &38 RST &38 RST &38 .L0778 RST &38 RST &38 RST &38 RST &38 RST &38 .L077D RST &38 RST &38 RST &38 LD D,H .L0781 LD C,B .L0782 LD B,C LD C,(HL) LD C,E JR NZ,L07E0 LD C,A LD D,L LD L,&2E LD L,&FF RST &38 RST &38 RST &38 RST &38 RST &38 RST &38 RST &38 RST &38 RST &38 RST &38 RST &38 RST &38 RST &38 RST &38 RST &38 RST &38 RST &38 RST &38 RST &38 .L07A0 RST &38 RST &38 .L07A2 RST &38 RST &38 RST &38 RST &38 RST &38 RST &38 RST &38 RST &38 RST &38 RST &38 RST &38 RST &38 RST &38 RST &38 RST &38 RST &38 .L07B2 RST &38 RST &38 RST &38 RST &38 .L07B6 RST &38 .L07B7 RST &38 RST &38 .L07B9 RST &38 RST &38 RST &38 RST &38 RST &38 RST &38 RST &38 RST &38 RST &38 RST &38 RST &38 .L07C4 RST &38 RST &38 RST &38 RST &38 RST &38 RST &38 RST &38 RST &38 RST &38 RST &38 RST &38 RST &38 RST &38 RST &38 .L07D2 RST &38 RST &38 RST &38 RST &38 RST &38 RST &38 RST &38 RST &38 RST &38 RST &38 RST &38 RST &38 RST &38 RST &38 .L07E0 RST &38 RST &38 RST &38 RST &38 RST &38 RST &38 RST &38 RST &38 RST &38 RST &38 RST &38 RST &38 RST &38 RST &38 RST &38 RST &38 RST &38 RST &38 RST &38 RST &38 RST &38 RST &38 RST &38 RST &38 RST &38 RST &38 RST &38 RST &38 RST &38 RST &38 RST &38 RST &38 ; &0800 Serial input buffer ; &0880 Serial output buffer ; &0900 Insert index into serial input buffer ; &0901 Remove index into serial input buffer ; &0902 Insert index into serial output buffer ; &0903 Remove index into serial output buffer ; &0904 XON/XOFF flags ; &0905/6 RST &38 vector ; &0907/8 RST &08 vector ; &0909/A RST &10 vector ; &090B/C RST &18 vector ; &090D/E RST &20 vector ; &090F/0 RST &28 vector ; &0911/2 RST &30 vector ; &0913/4 ; &0915/6 Top of physical RAM ; &0917/8 ; &0919/A ; &091B ; ; Register store ; &091C/D AF store ; &091E/F BC store ; &0920/1 DE store ; &0922/3 HL store ; &0924/5 AF' store ; &0926/7 BC' store ; &0928/9 DE' store ; &092A/B HL' store ; &092C/D IX store ; &092E/F IY store ; &0930 R store ; &0931 I store ; &0932/3 SP store ; ; &0A76 Top of stack