; ; Disassembly of Kaypro II Boot ROM (81-149) ; rzh Feb. 2006 lf equ 0ah cr equ 0dh esc equ 1bh bs equ 8 JP 4BH JP 186H JP 5E2H JP 545H JP 1D8H JP 1B4H JP 1CCH JP 1BBH JP 1C7H JP 1ECH JP 207H JP 3E4H JP 40FH JP 41EH JP 552H JP 55AH JP 565H JP 5A9H JP 5AFH JP 5B7H JP 5C7H JP 5CFH JP 5C1H JP 5FBH JP 425H DI LD SP,0FFFFH LD B,0AH CALL 425H CALL 545H CALL 5E2H CALL 186H JR 67H ; what is this? db '=',0c3h,';+' db 0afh,'2',13h,0c9h ; end of "what is this?" CALL 7CFH db esc,'=*',3fh,'* ' db 'KAYPRO II ' db '*',esc,'=-4' db 'Please insert your' db ' diskette into Drive A' db bs,0 LD C,0 CALL 1B4H LD BC,0 CALL 1CCH LD C,0 CALL 1BBH LD BC,0FA00H CALL 1C7H CALL 1ECH DI OR A JR NZ,10AH LD BC,(0FA02H) LD (0FC14H),BC LD BC,(0FA04H) PUSH BC LD BC,(0FA06H) LD B,C LD C,1 PUSH BC CALL 1BBH CALL 1ECH DI POP BC OR A JR NZ,10AH LD HL,(0FC14H) LD DE,80H ADD HL,DE LD (0FC14H),HL DEC B RET Z INC C LD A,28H CP C JR NZ,0E0H LD C,10H PUSH BC LD BC,1 CALL 1CCH POP BC JR 0E0H CALL 7CFH db lf,cr,lf,cr,7 db 'I cannot read your' db ' diskette.',0 CALL 41EH JR 132H dw 0,0,0,0 dw 0ff73h dw 0fea2h dw 0fe1ah dw 0fe2ah db 0 dw 0,0,0,0 dw 0ff73h dw 0fea2h dw 0fe43h dw 0fe53h db 0 dw 18 db 3 db 7 db 0 dw 82 dw 31 db 80h db 0 dw 8 dw 3 dw 40 db 3 db 7 db 0 dw 194 dw 63 db 0f0h db 0 dw 16 dw 1 db 1,6,11,16,3,8,13,18 db 5,10,15,2,7,12,17 db 4,9,14 LD HL,485H LD DE,0FECDH LD BC,87H LDIR LD HL,134H LD DE,0FE71H LD BC,52H LDIR XOR A LD (0FC09H),A LD (0FC0BH),A LD A,0 LD (0FE17H),A LD A,0FFH LD (0FE16H),A LD (0FE18H),A LD (0FE19H),A RET LD A,C LD (0FC00H),A JP 31DH LD A,C LD (0FC03H),A LD A,(0FE17H) OR A JP NZ,3E0H RET LD (0FC14H),BC RET LD (0FC01H),BC LD A,(0FE17H) OR A JP NZ,3D4H RET LD A,(0FE17H) OR A JP NZ,3CBH LD A,(0FC0AH) OR A JP NZ,1E9H LD (0FC09H),A JP 3CBH LD A,(0FE17H) OR A JP NZ,0FEDCH XOR A LD (0FC0BH),A LD A,1 LD (0FC12H),A LD (0FC11H),A LD A,2 LD (0FC13H),A JP 279H LD A,(0FE17H) OR A JP NZ,0FEEDH XOR A LD (0FC12H),A LD A,C LD (0FC13H),A CP 2 JP NZ,232H LD A,8 LD (0FC0BH),A LD A,(0FC00H) LD (0FC0CH),A LD HL,(0FC01H) LD (0FC0DH),HL LD A,(0FC03H) LD (0FC0FH),A LD A,(0FC0BH) OR A JP Z,271H DEC A LD (0FC0BH),A LD A,(0FC00H) LD HL,0FC0CH CP (HL) JP NZ,271H LD HL,0FC0DH CALL 311H JP NZ,271H LD A,(0FC03H) LD HL,0FC0FH CP (HL) JP NZ,271H INC (HL) LD A,(HL) CP '(' JP C,26AH LD (HL),0 LD HL,(0FC0DH) INC HL LD (0FC0DH),HL XOR A LD (0FC11H),A JP 279H XOR A LD (0FC0BH),A INC A LD (0FC11H),A XOR A LD (0FC10H),A LD A,(0FC03H) OR A RRA OR A RRA LD (0FC08H),A LD HL,0FC09H LD A,(HL) LD (HL),1 OR A JP Z,2B5H LD A,(0FC00H) LD HL,0FC04H CP (HL) JP NZ,2AEH LD HL,0FC05H CALL 311H JP NZ,2AEH LD A,(0FC08H) LD HL,0FC07H CP (HL) JP Z,2D2H LD A,(0FC0AH) OR A CALL NZ,439H LD A,(0FC00H) LD (0FC04H),A LD HL,(0FC01H) LD (0FC05H),HL LD A,(0FC08H) LD (0FC07H),A LD A,(0FC11H) OR A CALL NZ,454H XOR A LD (0FC0AH),A LD A,(0FC03H) AND 3 LD L,A LD H,0 ADD HL,HL ADD HL,HL ADD HL,HL ADD HL,HL ADD HL,HL ADD HL,HL ADD HL,HL LD DE,0FC16H ADD HL,DE LD DE,(0FC14H) LD BC,80H LD A,(0FC12H) OR A JR NZ,2F8H LD A,1 LD (0FC0AH),A EX DE,HL CALL 0FECDH LD A,(0FC13H) CP 1 LD A,(0FC10H) RET NZ OR A RET NZ XOR A LD (0FC0AH),A CALL 439H LD A,(0FC10H) RET EX DE,HL LD HL,0FC01H LD A,(DE) CP (HL) RET NZ INC DE INC HL LD A,(DE) CP (HL) RET LD HL,0 LD A,C CP 2 RET NC OR A LD HL,0FE71H JR Z,32DH LD HL,0FE82H LD A,(0FE16H) CP C RET Z LD A,C LD (0FE16H),A OR A PUSH HL LD DE,10H ADD HL,DE LD A,(HL) LD (0FE17H),A LD HL,0FE19H JR Z,346H DEC HL LD A,(HL) CP 0FFH JR Z,34EH IN A,(11H) LD (HL),A LD A,C OR A LD HL,0FE18H JR Z,356H INC HL LD A,(HL) OUT (11H),A EX DE,HL POP HL CP 0FFH RET NZ CALL 3EFH CALL 1D8H IN A,(1CH) AND 0DFH OR 0 OUT (1CH),A CALL 3C1H JR Z,37FH IN A,(1CH) AND 0DFH OR 20H OUT (1CH),A CALL 3C1H RET NZ JR 39DH PUSH HL PUSH DE LD DE,0 LD (HL),E INC HL LD (HL),D LD DE,9 ADD HL,DE LD DE,0FEA2H LD (HL),E INC HL LD (HL),D LD DE,5 ADD HL,DE LD A,0 LD (HL),A LD (0FE17H),A JR 3B9H PUSH HL PUSH DE LD DE,0FEB1H LD (HL),E INC HL LD (HL),D LD DE,9 ADD HL,DE LD DE,0FE93H LD (HL),E INC HL LD (HL),D LD DE,5 ADD HL,DE LD A,20H LD (HL),A LD (0FE17H),A POP DE POP HL IN A,(12H) OUT (11H),A LD (DE),A RET LD A,0C0H OUT (10H),A CALL 431H BIT 4,A RET CALL 3EFH LD A,0 OUT (10H),A JR 431H CALL 3EFH LD A,C OUT (13H),A LD A,10H OUT (10H),A JR 431H LD A,C OUT (12H),A RET LD A,D OR E LD H,B LD L,C RET Z EX DE,HL ADD HL,BC LD L,(HL) LD H,0 RET PUSH HL PUSH DE PUSH BC LD A,0D0H OUT (10H),A CALL 40FH LD A,(0FE16H) LD E,A IN A,(1CH) AND 0FCH OR E INC A AND 0DFH LD HL,0FE17H OR (HL) OUT (1CH),A POP BC POP DE POP HL RET IN A,(1CH) BIT 6,A RET Z RES 6,A OUT (1CH),A LD B,32H CALL 425H RET IN A,(1CH) SET 6,A OUT (1CH),A RET LD DE,686H DEC DE LD A,D OR E JP NZ,428H DJNZ 425H RET HALT IN A,(10H) BIT 0,A JR NZ,432H RET LD DE,40FH PUSH DE CALL 46FH CALL 0FEF4H LD (0FC10H),A POP DE RET Z DEC E JR NZ,43CH DEC D RET Z CALL 3CBH LD E,0FH JR 43CH LD DE,40FH PUSH DE CALL 46FH CALL 0FEE3H LD (0FC10H),A POP DE RET Z DEC E JR NZ,457H DEC D RET Z CALL 3CBH LD E,0FH JR 457H LD A,(0FC04H) LD C,A CALL 31DH LD BC,(0FC05H) CALL 3D4H LD A,(0FC07H) LD C,A CALL 3E0H RET ; copy the following up to 0FECDH IN A,(1CH) RES 7,A OUT (1CH),A LDIR IN A,(1CH) SET 7,A OUT (1CH),A RET LD HL,(0FC14H) LD B,1 JR 4A0H LD HL,0FC16H LD B,4 LD DE,9C80H JR 4B4H LD HL,(0FC14H) LD B,1 JR 4B1H LD HL,0FC16H LD B,4 LD DE,0FCA0H CALL 3EFH DI IN A,(1CH) RES 7,A OUT (1CH),A PUSH HL LD HL,66H LD A,(HL) EX AF,AF' LD (HL),0C9H POP HL LD A,B LD BC,8013H BIT 0,A JR NZ,4D1H LD B,0 CP 1 PUSH AF LD A,E CP 0A0H JR Z,4EAH OUT (10H),A POP AF JR Z,4E3H HALT INI JR NZ,4DEH HALT INI JR NZ,4E3H JR 4F9H OUT (10H),A POP AF JR Z,4F4H HALT OUTI JR NZ,4EFH HALT OUTI JR NZ,4F4H EX AF,AF' LD (66H),A IN A,(1CH) SET 7,A OUT (1CH),A EI CALL 431H AND D RET Z LD A,1 RET ; end copy db 28 ;nbr. of pairs db 7,18h ;port,data db 12,5 db 7,4 db 7,44h db 7,3 db 7,0c1h db 7,5 db 7,0e8h db 7,1 db 7,0 db 6,18h db 0,5 db 6,4 db 6,44h db 6,3 db 6,0e1h db 6,5 db 6,0e8h db 6,1 db 6,0 db 1dh,3 db 1ch,81h db 1dh,0cfh db 1dh,0ch db 9,3 db 9,0fh db 0bh,3 db 0bh,4fh LD HL,50CH LD B,(HL) INC HL LD C,(HL) INC HL LD A,(HL) OUT (C),A DJNZ 549H RET IN A,(7) AND 1 RET Z LD A,0FFH RET CALL 552H JR Z,55AH IN A,(5) CALL 56FH RET IN A,(7) ;print (A) AND 4 JR Z,565H LD A,C OUT (5),A RET LD HL,584H LD BC,13H CPIR RET NZ LD DE,584H OR A SBC HL,DE LD DE,596H ADD HL,DE LD A,(HL) RET db 0f1h,0f2h,0f3h,0f4h db 0b1h,0c0h,0c1h,0c2h db 0d0h,0d1h,0d2h,0e1h db 0e2h,0e3h,0e4h,0d3h db 0c3h,0b2h db 0ffh,80h,81h,82h db 83h,84h,85h,86h db 87h,88h,89h,8ah db 8bh,8ch,8dh,8eh db 8fh,90h,91h IN A,(6) AND 1 JR 5CBH CALL 5A9H JR Z,5AFH IN A,(4) RET IN A,(6) AND 4 JR Z,5B7H LD A,C OUT (4),A RET IN A,(6) AND 4 JR 5CBH IN A,(1CH) BIT 3,A RET Z LD A,0FFH RET CALL 5C7H JR Z,5CFH LD A,C OUT (8),A IN A,(1CH) SET 4,A OUT (1CH),A RES 4,A OUT (1CH),A RET LD A,' ' LD (0FE6DH),A CALL 6A1H LD (0FE6EH),HL XOR A LD (0FE6CH),A LD A,17H OUT (14H),A LD A,7FH LD (0FE70H),A RET LD A,(0FE6CH) OR A JP NZ,718H LD A,7 CP C JR NZ,60CH LD C,4 JP 565H CALL 6FFH LD DE,772H PUSH DE LD A,C CP lf JR Z,67CH CP cr JP Z,70DH CP bs JR Z,682H CP 0CH JR Z,688H CP 0BH JR Z,690H CP esc JP Z,712H CP 18H JP Z,6DAH CP 17H JR Z,6B6H CP 1AH JR Z,6A1H CP 1EH JR Z,6B2H CP 60H JR C,647H LD A,(0FE70H) AND C LD (HL),A INC HL LD A,L AND 7FH CP 50H RET C CALL 70DH JR 67CH LD DE,3BFFH LD A,D CP H JR C,65FH RET NZ LD A,E CP L RET NC LD B,17H LD HL,3080H LD DE,3000H PUSH BC LD BC,50H LDIR LD BC,30H ADD HL,BC EX DE,HL ADD HL,BC EX DE,HL POP BC DJNZ 667H LD HL,3B80H JR 6DAH LD DE,80H ADD HL,DE JR 654H LD A,L AND 7FH RET Z DEC HL RET LD A,L AND 7FH CP 4FH RET NC INC HL RET PUSH HL LD DE,0FF80H ADD HL,DE PUSH HL OR A LD DE,3000H SBC HL,DE POP HL POP DE RET NC EX DE,HL RET LD HL,3000H LD DE,3001H LD BC,0BFFH LD (HL),20H LDIR LD HL,3000H RET LD HL,3000H RET PUSH HL CALL 6DAH LD DE,80H LD A,L AND 80H LD L,A ADD HL,DE LD A,3CH CP H JR Z,6D8H LD E,L LD D,H OR A LD HL,3BFFH SBC HL,DE LD C,L LD B,H LD H,D LD L,E INC DE LD (HL),20H LDIR POP HL RET LD A,L AND 7FH CP 4FH JR C,6E4H LD (HL),20H RET PUSH HL PUSH HL LD A,L AND 80H LD L,A LD DE,4FH ADD HL,DE POP DE PUSH DE OR A SBC HL,DE LD C,L LD B,H POP HL LD E,L LD D,H INC DE LD (HL),20H LDIR POP HL RET LD HL,(0FE6EH) LD A,(HL) CP 0DFH LD A,' ' JR NZ,70AH LD (HL),A RES 7,(HL) RET LD A,L AND 80H LD L,A RET LD A,1 LD (0FE6CH),A RET LD HL,77FH PUSH HL LD HL,0FE6CH LD (HL),0 CP 1 JR NZ,73EH LD A,C RES 7,A CP 'G' JR Z,780H CP 'A' JR Z,786H CP 'R' JR Z,78CH CP 'E' JR Z,79EH CP '=' RET NZ LD (HL),2 RET CP 2 JR NZ,749H LD A,C LD (0FE6DH),A LD (HL),3 RET CP 3 RET NZ CALL 6FFH POP HL LD HL,3000H LD A,C SUB 20H SUB 50H JR NC,756H ADD A,'P' LD L,A LD A,(0FE6DH) SUB 20H SUB 18H JR NC,762H ADD A,18H LD DE,80H JP Z,772H ADD HL,DE DEC A JR 76BH LD A,(HL) CP ' ' JR NZ,779H LD A,0DFH SET 7,A LD (HL),A LD (0FE6EH),HL RET LD A,1FH LD (0FE70H),A RET LD A,7FH LD (0FE70H),A RET POP HL CALL 7B5H PUSH DE JR Z,795H LDIR LD HL,3B80H CALL 6DAH POP HL JR 772H POP HL CALL 7B5H PUSH DE JR Z,7ADH LD DE,3BFFH LD HL,3B7FH LDDR POP HL PUSH HL CALL 6DAH POP HL JR 772H CALL 6FFH CALL 70DH PUSH HL EX DE,HL LD HL,3B80H OR A SBC HL,DE LD B,H LD C,L POP HL PUSH HL LD DE,80H ADD HL,DE POP DE LD A,B OR C RET EX (SP),HL ;prtmsg LD A,(HL) INC HL EX (SP),HL OR A RET Z LD C,A CALL 5FBH JR 7CFH db 0ffh,0ffh,0ffh,0ffh db 0ffh,0ffh,0ffh,0ffh db 0ffh,0ffh,0ffh,0ffh db 0ffh,0ffh,0ffh,0ffh db 0ffh,0ffh,0ffh,0ffh db 0ffh,0ffh,0ffh,0ffh db 0ffh,0ffh,0ffh,0ffh db 0ffh,0ffh,0ffh,0ffh db 0ffh,0ffh,0ffh,0ffh db 0ffh,0ffh,0ffh,0ffh END