; Compiled with: Z80 Simulator IDE v9.70 ; ; Begin LD IX,0FF00H LD SP,0FEF4H ; The address of 'a' (single) (global) is FEFCH (IX-4) a: EQU 0FEFCH ; The address of 'b' (single) (global) is FEF8H (IX-8) b: EQU 0FEF8H ; The address of 'c' (single) (global) is FEF4H (IX-12) c: EQU 0FEF4H ; Begin of program ; 1: Dim a As Single LD A,00H LD (IX-04H),A LD (IX-03H),A LD (IX-02H),A LD (IX-01H),A ; 2: Dim b As Single LD A,00H LD (IX-08H),A LD (IX-07H),A LD (IX-06H),A LD (IX-05H),A ; 3: Dim c As Single LD A,00H LD (IX-0CH),A LD (IX-0BH),A LD (IX-0AH),A LD (IX-09H),A ; 4: ; 5: a = 9.876543 'First number LD BC,411EH LD DE,0652H LD (IX-04H),E LD (IX-03H),D LD (IX-02H),C LD (IX-01H),B ; 6: b = 2.345678 'Second number LD BC,4016H LD DE,1F97H LD (IX-08H),E LD (IX-07H),D LD (IX-06H),C LD (IX-05H),B ; 7: c = a * b LD E,(IX-04H) LD D,(IX-03H) LD C,(IX-02H) LD B,(IX-01H) PUSH BC PUSH DE LD E,(IX-08H) LD D,(IX-07H) LD C,(IX-06H) LD B,(IX-05H) CALL M201 LD (IX-0CH),E LD (IX-0BH),D LD (IX-0AH),C LD (IX-09H),B ; 8: ; 9: Print 1, "Number ", a, CrLf LD A,4EH OUT (01H),A LD A,75H OUT (01H),A LD A,6DH OUT (01H),A LD A,62H OUT (01H),A LD A,65H OUT (01H),A LD A,72H OUT (01H),A LD A,20H OUT (01H),A LD BC,0001H LD (IX+01H),C LD (IX+02H),B LD C,07H LD (IX+03H),C LD E,(IX-04H) LD D,(IX-03H) LD C,(IX-02H) LD B,(IX-01H) CALL P401 LD A,0DH OUT (01H),A LD A,0AH OUT (01H),A ; 10: Print 1, "multiplied by ", b, CrLf LD A,6DH OUT (01H),A LD A,75H OUT (01H),A LD A,6CH OUT (01H),A LD A,74H OUT (01H),A LD A,69H OUT (01H),A LD A,70H OUT (01H),A LD A,6CH OUT (01H),A LD A,69H OUT (01H),A LD A,65H OUT (01H),A LD A,64H OUT (01H),A LD A,20H OUT (01H),A LD A,62H OUT (01H),A LD A,79H OUT (01H),A LD A,20H OUT (01H),A LD BC,0001H LD (IX+01H),C LD (IX+02H),B LD C,07H LD (IX+03H),C LD E,(IX-08H) LD D,(IX-07H) LD C,(IX-06H) LD B,(IX-05H) CALL P401 LD A,0DH OUT (01H),A LD A,0AH OUT (01H),A ; 11: Print 1, "equals ", c, "!", CrLf LD A,65H OUT (01H),A LD A,71H OUT (01H),A LD A,75H OUT (01H),A LD A,61H OUT (01H),A LD A,6CH OUT (01H),A LD A,73H OUT (01H),A LD A,20H OUT (01H),A LD BC,0001H LD (IX+01H),C LD (IX+02H),B LD C,07H LD (IX+03H),C LD E,(IX-0CH) LD D,(IX-0BH) LD C,(IX-0AH) LD B,(IX-09H) CALL P401 LD A,21H OUT (01H),A LD A,0DH OUT (01H),A LD A,0AH OUT (01H),A ; End of program HALT ; Long Division Routine D104: XOR A SUB E LD E,A LD A,00H SBC A,D LD D,A LD A,00H SBC A,C LD C,A LD A,00H SBC A,B LD B,A RET D102: EXX POP HL POP DE POP BC PUSH HL EXX PUSH HL CALL D103 EXX POP HL RET D101: EXX POP HL POP DE POP BC PUSH HL EXX PUSH HL CALL D103 POP HL RET D103: EXX LD A,B EXX XOR B EXX LD A,B PUSH AF BIT 7,B CALL NZ,D104 EXX BIT 7,B CALL NZ,D104 CALL D105 POP AF JP P,D106 LD L,A CALL M,D104 LD A,L D106: OR A RET P EXX CALL D104 EXX RET D105: EXX PUSH BC LD B,D LD C,E EXX EX DE,HL LD D,B LD E,C POP BC PUSH HL LD HL,0000H EXX POP DE LD HL,0000H LD A,20H OR A D108: RL C RL B EXX RL C RL B EXX ADC HL,HL EXX ADC HL,HL EXX SBC HL,DE EXX SBC HL,DE EXX JR NC,D107 ADD HL,DE EXX ADC HL,DE EXX D107: CCF DEC A JR NZ,D108 RL C RL B EXX RL C RL B EXX LD D,B LD E,C PUSH HL EXX POP DE PUSH BC LD B,H LD C,L EXX POP BC RET ; Single Precision Subtraction Routine S201: LD A,B XOR 80H LD B,A EXX POP HL POP DE POP BC PUSH HL EXX PUSH HL CALL S202 CALL S203 POP HL RET S202: EXX LD L,00H LD H,E LD E,D LD D,C SET 7,D RL C LD A,B ADC A,A LD C,A EXX LD L,00H LD H,E LD E,D LD D,C SET 7,D RL C LD A,B ADC A,A LD C,A LD A,C EXX SUB C JR Z,S204 JR NC,S205 NEG EXX S205: SRL D RR E RR H RR L INC C DEC A JR NZ,S205 S204: LD A,B EXX XOR B EXX JP M,S206 LD A,L EXX ADD A,L EXX LD L,A LD A,H EXX ADC A,H EXX LD H,A LD A,E EXX ADC A,E EXX LD E,A LD A,D EXX ADC A,D EXX LD D,A JR NC,S207 S210: LD A,D RR D RR E RR H RR L OR C OR E OR H OR L JR Z,S207 INC C JR S207 S206: LD A,D EXX CP D JR C,S208 JR NZ,S209 LD A,E EXX CP E JR C,S208 JR NZ,S209 LD A,H EXX CP H JR C,S208 JR NZ,S209 LD A,L EXX CP L JR C,S208 S209: EXX S208: LD A,L EXX SUB L EXX LD L,A LD A,H EXX SBC A,H EXX LD H,A LD A,E EXX SBC A,E EXX LD E,A LD A,D EXX SBC A,D EXX LD D,A JR C,S210 S207: RET S203: LD A,C OR A JR NZ,S211 S213: LD B,A LD E,A LD D,A RET S211: BIT 7,D JR NZ,S212 LD A,C OR A JR Z,S213 DEC C SLA L RL H RL E RL D JP S211 S212: LD A,L ADD A,80H LD A,H ADC A,00H LD L,A LD A,E ADC A,00H LD H,A LD A,D ADC A,00H JR NC,S214 INC C S214: ADD A,A SRL C RRA LD E,A LD A,B AND 80H OR C LD D,A LD B,D LD C,E EX DE,HL RET ; Single Precision Multiplication Routine M201: EXX POP HL POP DE POP BC PUSH HL EXX PUSH HL EXX LD L,00H LD H,E LD E,D LD D,C SET 7,D RL C LD A,B ADC A,A LD C,A JR Z,M202 EXX LD L,00H LD H,E LD E,D LD D,C SET 7,D RL C LD A,B ADC A,A LD C,A JR Z,M202 CALL M203 M202: CALL M204 POP HL RET M203: LD A,B EXX XOR B LD B,A LD A,C EXX SUB 7FH LD B,A LD A,C SUB 7FH ADD A,B JP PO,M205 EXX LD HL,0002H LD (0FF00H),HL LD C,0FFH JR NC,M206 INC C M206: LD D,C LD E,C LD H,C LD L,00H RET M205: ADD A,80H EXX LD C,A PUSH BC PUSH DE LD B,H LD C,L EXX POP BC PUSH HL EXX POP DE LD A,20H M208: DEC C INC C JR NZ,M207 CP 09H JR C,M207 SUB 08H PUSH AF EXX LD A,C LD C,B LD B,00H EXX LD C,B LD B,A EXX LD A,L LD L,H LD H,00H EXX LD L,H LD H,A POP AF JR M208 M207: EXX SRL B RR C EXX RR B RR C JR NC,M209 ADD HL,DE EXX ADC HL,DE EXX M209: EXX RR H RR L EXX RR H RR L DEC A JR NZ,M208 EXX PUSH HL EXX POP DE POP BC RET M204: LD A,C OR A JR NZ,M210 M212: LD B,A LD E,A LD D,A RET M210: BIT 7,D JR NZ,M211 LD A,C OR A JR Z,M212 DEC C SLA L RL H RL E RL D JP M210 M211: LD A,L ADD A,80H LD A,H ADC A,00H LD L,A LD A,E ADC A,00H LD H,A LD A,D ADC A,00H JR NC,M213 INC C M213: ADD A,A SRL C RRA LD E,A LD A,B AND 80H OR C LD D,A LD B,D LD C,E EX DE,HL RET ; Single To Long Conversion Routine X001: PUSH HL LD L,00H LD H,E LD E,D LD D,C SET 7,D RL C LD A,B ADC A,A LD C,A LD A,C SUB 7FH JR NC,X002 X005: LD BC,0000H LD D,C LD E,C JR X003 X002: NEG ADD A,1FH JR Z,X004 CP 20H JR NC,X005 X006: SRL D RR E RR H RR L DEC A JR NZ,X006 X004: BIT 7,B LD B,D LD C,E EX DE,HL JR Z,X003 CALL X007 X003: POP HL RET X007: XOR A SUB E LD E,A LD A,00H SBC A,D LD D,A LD A,00H SBC A,C LD C,A LD A,00H SBC A,B LD B,A RET ; Long To Single Conversion Routine X101: PUSH HL LD A,B BIT 7,B JR Z,X102 CALL X103 LD A,80H X102: EX DE,HL LD E,C LD D,B LD B,A LD C,9EH CALL X104 POP HL RET X104: LD A,C OR A JR NZ,X105 X107: LD B,A LD E,A LD D,A RET X105: BIT 7,D JR NZ,X106 LD A,C OR A JR Z,X107 DEC C SLA L RL H RL E RL D JP X105 X106: LD A,L ADD A,80H LD A,H ADC A,00H LD L,A LD A,E ADC A,00H LD H,A LD A,D ADC A,00H JR NC,X108 INC C X108: ADD A,A SRL C RRA LD E,A LD A,B AND 80H OR C LD D,A LD B,D LD C,E EX DE,HL RET X103: XOR A SUB E LD E,A LD A,00H SBC A,D LD D,A LD A,00H SBC A,C LD C,A LD A,00H SBC A,B LD B,A RET ; Single Print Routine P401: BIT 7,B JR Z,P402 LD A,2DH PUSH BC LD C,(IX+01H) OUT (C),A POP BC RES 7,B P402: PUSH BC RLC C RL B LD A,6AH SUB B JP P,P403 LD A,95H SUB B JP M,P403 JR P404 P403: LD A,45H LD C,(IX+01H) OUT (C),A POP BC JP P405 P404: POP BC PUSH BC PUSH DE CALL X001 PUSH BC PUSH DE LD BC,000FH LD DE,4240H CALL D101 CALL P406 PUSH BC PUSH DE LD BC,0001H LD DE,86A0H CALL D101 CALL P406 PUSH BC PUSH DE LD BC,0000H LD DE,2710H CALL D101 CALL P406 PUSH BC PUSH DE LD BC,0000H LD DE,03E8H CALL D101 CALL P406 PUSH BC PUSH DE LD BC,0000H LD DE,0064H CALL D101 CALL P406 PUSH BC PUSH DE LD BC,0000H LD DE,000AH CALL D101 CALL P406 LD B,(IX+02H) LD A,E LD B,30H ADD A,B LD C,(IX+01H) OUT (C),A LD C,(IX+03H) DEC C JP Z,P405 LD (IX+02H),B LD (IX+03H),C LD A,2EH LD C,(IX+01H) OUT (C),A POP DE POP BC RES 7,B PUSH BC PUSH DE CALL X001 CALL X101 CALL S201 PUSH BC PUSH DE LD BC,4974H LD DE,2400H CALL M201 CALL X001 PUSH BC PUSH DE LD BC,0001H LD DE,86A0H CALL D101 CALL P409 JR Z,P405 EXX PUSH BC PUSH DE LD BC,0000H LD DE,2710H CALL D101 CALL P409 JR Z,P405 EXX PUSH BC PUSH DE LD BC,0000H LD DE,03E8H CALL D101 CALL P409 JR Z,P405 EXX PUSH BC PUSH DE LD BC,0000H LD DE,0064H CALL D101 CALL P409 JR Z,P405 EXX PUSH BC PUSH DE LD BC,0000H LD DE,000AH CALL D101 CALL P409 JR Z,P405 EXX LD B,(IX+02H) LD A,E ADD A,B LD C,(IX+01H) OUT (C),A LD C,(IX+03H) DEC C LD (IX+03H),C P405: RET P406: LD B,(IX+02H) LD A,E CP 00H JR Z,P407 LD B,30H P407: ADD A,B LD (IX+02H),B JR Z,P408 LD C,(IX+01H) OUT (C),A LD C,(IX+03H) DEC C LD (IX+03H),C P408: EXX RET P409: LD B,(IX+02H) LD A,E ADD A,B LD C,(IX+01H) OUT (C),A LD C,(IX+03H) DEC C LD (IX+03H),C RET ; End of listing .END