; Begin LD IX,0FF00H LD SP,0FEC0H ; 1: Dim a As Single ; The address of 'a' is IX-4 (FEFCH) ; 2: Dim b As Single ; The address of 'b' is IX-8 (FEF8H) ; 3: Dim r As Single ; The address of 'r' is IX-12 (FEF4H) ; 4: Dim h As Single ; The address of 'h' is IX-16 (FEF0H) ; 5: Dim i As Single ; The address of 'i' is IX-20 (FEECH) ; 6: Dim x As Single ; The address of 'x' is IX-24 (FEE8H) ; 7: Dim y As Single ; The address of 'y' is IX-28 (FEE4H) ; 8: Dim dx As Single ; The address of 'dx' is IX-32 (FEE0H) ; 9: Dim dy As Single ; The address of 'dy' is IX-36 (FEDCH) ; 10: Dim rmin As Single ; The address of 'rmin' is IX-40 (FED8H) ; 11: Dim rmax As Single ; The address of 'rmax' is IX-44 (FED4H) ; 12: Dim imin As Single ; The address of 'imin' is IX-48 (FED0H) ; 13: Dim imax As Single ; The address of 'imax' is IX-52 (FECCH) ; 14: Dim iter As Long ; The address of 'iter' is IX-56 (FEC8H) ; 15: Dim maxiter As Long ; The address of 'maxiter' is IX-60 (FEC4H) ; 16: Dim d As Single ; The address of 'd' is IX-64 (FEC0H) ; 17: rmin = -2 LD BC,0C000H LD DE,0000H LD (IX-28H),E LD (IX-27H),D LD (IX-26H),C LD (IX-25H),B ; 18: rmax = 0.6 LD BC,3F19H LD DE,999AH LD (IX-2CH),E LD (IX-2BH),D LD (IX-2AH),C LD (IX-29H),B ; 19: imin = 0 - 0.9 LD BC,0000H LD DE,0000H PUSH BC PUSH DE LD BC,3F66H LD DE,6666H CALL S201 LD (IX-30H),E LD (IX-2FH),D LD (IX-2EH),C LD (IX-2DH),B ; 20: imax = 0.9 LD BC,3F66H LD DE,6666H LD (IX-34H),E LD (IX-33H),D LD (IX-32H),C LD (IX-31H),B ; 21: maxiter = 1000 LD BC,0000H LD DE,03E8H LD (IX-3CH),E LD (IX-3BH),D LD (IX-3AH),C LD (IX-39H),B ; 22: dx = rmax - rmin LD E,(IX-2CH) LD D,(IX-2BH) LD C,(IX-2AH) LD B,(IX-29H) PUSH BC PUSH DE LD E,(IX-28H) LD D,(IX-27H) LD C,(IX-26H) LD B,(IX-25H) CALL S201 LD (IX-20H),E LD (IX-1FH),D LD (IX-1EH),C LD (IX-1DH),B ; 23: dx = dx / 640 LD E,(IX-20H) LD D,(IX-1FH) LD C,(IX-1EH) LD B,(IX-1DH) PUSH BC PUSH DE LD BC,4420H LD DE,0000H CALL D201 LD (IX-20H),E LD (IX-1FH),D LD (IX-1EH),C LD (IX-1DH),B ; 24: dy = imax - imin LD E,(IX-34H) LD D,(IX-33H) LD C,(IX-32H) LD B,(IX-31H) PUSH BC PUSH DE LD E,(IX-30H) LD D,(IX-2FH) LD C,(IX-2EH) LD B,(IX-2DH) CALL S201 LD (IX-24H),E LD (IX-23H),D LD (IX-22H),C LD (IX-21H),B ; 25: dy = dy / 480 LD E,(IX-24H) LD D,(IX-23H) LD C,(IX-22H) LD B,(IX-21H) PUSH BC PUSH DE LD BC,43F0H LD DE,0000H CALL D201 LD (IX-24H),E LD (IX-23H),D LD (IX-22H),C LD (IX-21H),B ; 26: y = 0 LD BC,0000H LD DE,0000H LD (IX-1CH),E LD (IX-1BH),D LD (IX-1AH),C LD (IX-19H),B ; 27: While y <= 479 L0002: NOP LD E,(IX-1CH) LD D,(IX-1BH) LD C,(IX-1AH) LD B,(IX-19H) PUSH BC PUSH DE LD BC,43EFH LD DE,8000H CALL C202 JR Z,L0004 JP P,L0003 L0004: NOP ; 28: b = dy LD E,(IX-24H) LD D,(IX-23H) LD C,(IX-22H) LD B,(IX-21H) LD (IX-08H),E LD (IX-07H),D LD (IX-06H),C LD (IX-05H),B ; 29: b = b * y LD E,(IX-08H) LD D,(IX-07H) LD C,(IX-06H) LD B,(IX-05H) PUSH BC PUSH DE LD E,(IX-1CH) LD D,(IX-1BH) LD C,(IX-1AH) LD B,(IX-19H) CALL M201 LD (IX-08H),E LD (IX-07H),D LD (IX-06H),C LD (IX-05H),B ; 30: b = imax - b LD E,(IX-34H) LD D,(IX-33H) LD C,(IX-32H) LD B,(IX-31H) PUSH BC PUSH DE LD E,(IX-08H) LD D,(IX-07H) LD C,(IX-06H) LD B,(IX-05H) CALL S201 LD (IX-08H),E LD (IX-07H),D LD (IX-06H),C LD (IX-05H),B ; 31: x = 0 LD BC,0000H LD DE,0000H LD (IX-18H),E LD (IX-17H),D LD (IX-16H),C LD (IX-15H),B ; 32: While x <= 639 L0005: NOP LD E,(IX-18H) LD D,(IX-17H) LD C,(IX-16H) LD B,(IX-15H) PUSH BC PUSH DE LD BC,441FH LD DE,0C000H CALL C202 JR Z,L0007 JP P,L0006 L0007: NOP ; 33: a = x * dx LD E,(IX-18H) LD D,(IX-17H) LD C,(IX-16H) LD B,(IX-15H) PUSH BC PUSH DE LD E,(IX-20H) LD D,(IX-1FH) LD C,(IX-1EH) LD B,(IX-1DH) CALL M201 LD (IX-04H),E LD (IX-03H),D LD (IX-02H),C LD (IX-01H),B ; 34: a = a + rmin LD E,(IX-04H) LD D,(IX-03H) LD C,(IX-02H) LD B,(IX-01H) PUSH BC PUSH DE LD E,(IX-28H) LD D,(IX-27H) LD C,(IX-26H) LD B,(IX-25H) CALL A201 LD (IX-04H),E LD (IX-03H),D LD (IX-02H),C LD (IX-01H),B ; 35: r = a LD E,(IX-04H) LD D,(IX-03H) LD C,(IX-02H) LD B,(IX-01H) LD (IX-0CH),E LD (IX-0BH),D LD (IX-0AH),C LD (IX-09H),B ; 36: i = b LD E,(IX-08H) LD D,(IX-07H) LD C,(IX-06H) LD B,(IX-05H) LD (IX-14H),E LD (IX-13H),D LD (IX-12H),C LD (IX-11H),B ; 37: h = 0 LD BC,0000H LD DE,0000H LD (IX-10H),E LD (IX-0FH),D LD (IX-0EH),C LD (IX-0DH),B ; 38: iter = 0 LD BC,0000H LD DE,0000H LD (IX-38H),E LD (IX-37H),D LD (IX-36H),C LD (IX-35H),B ; 39: While d < 4.01 L0008: NOP LD E,(IX-40H) LD D,(IX-3FH) LD C,(IX-3EH) LD B,(IX-3DH) PUSH BC PUSH DE LD BC,4080H LD DE,51ECH CALL C202 JP P,L0009 ; 40: h = r + i LD E,(IX-0CH) LD D,(IX-0BH) LD C,(IX-0AH) LD B,(IX-09H) PUSH BC PUSH DE LD E,(IX-14H) LD D,(IX-13H) LD C,(IX-12H) LD B,(IX-11H) CALL A201 LD (IX-10H),E LD (IX-0FH),D LD (IX-0EH),C LD (IX-0DH),B ; 41: d = r - i LD E,(IX-0CH) LD D,(IX-0BH) LD C,(IX-0AH) LD B,(IX-09H) PUSH BC PUSH DE LD E,(IX-14H) LD D,(IX-13H) LD C,(IX-12H) LD B,(IX-11H) CALL S201 LD (IX-40H),E LD (IX-3FH),D LD (IX-3EH),C LD (IX-3DH),B ; 42: h = h * d LD E,(IX-10H) LD D,(IX-0FH) LD C,(IX-0EH) LD B,(IX-0DH) PUSH BC PUSH DE LD E,(IX-40H) LD D,(IX-3FH) LD C,(IX-3EH) LD B,(IX-3DH) CALL M201 LD (IX-10H),E LD (IX-0FH),D LD (IX-0EH),C LD (IX-0DH),B ; 43: h = h + a LD E,(IX-10H) LD D,(IX-0FH) LD C,(IX-0EH) LD B,(IX-0DH) PUSH BC PUSH DE LD E,(IX-04H) LD D,(IX-03H) LD C,(IX-02H) LD B,(IX-01H) CALL A201 LD (IX-10H),E LD (IX-0FH),D LD (IX-0EH),C LD (IX-0DH),B ; 44: i = r * i LD E,(IX-0CH) LD D,(IX-0BH) LD C,(IX-0AH) LD B,(IX-09H) PUSH BC PUSH DE LD E,(IX-14H) LD D,(IX-13H) LD C,(IX-12H) LD B,(IX-11H) CALL M201 LD (IX-14H),E LD (IX-13H),D LD (IX-12H),C LD (IX-11H),B ; 45: i = i * 2 LD E,(IX-14H) LD D,(IX-13H) LD C,(IX-12H) LD B,(IX-11H) PUSH BC PUSH DE LD BC,4000H LD DE,0000H CALL M201 LD (IX-14H),E LD (IX-13H),D LD (IX-12H),C LD (IX-11H),B ; 46: i = i + b LD E,(IX-14H) LD D,(IX-13H) LD C,(IX-12H) LD B,(IX-11H) PUSH BC PUSH DE LD E,(IX-08H) LD D,(IX-07H) LD C,(IX-06H) LD B,(IX-05H) CALL A201 LD (IX-14H),E LD (IX-13H),D LD (IX-12H),C LD (IX-11H),B ; 47: r = h LD E,(IX-10H) LD D,(IX-0FH) LD C,(IX-0EH) LD B,(IX-0DH) LD (IX-0CH),E LD (IX-0BH),D LD (IX-0AH),C LD (IX-09H),B ; 48: iter = iter + 1 LD E,(IX-38H) LD D,(IX-37H) LD C,(IX-36H) LD B,(IX-35H) PUSH BC PUSH DE LD BC,0000H LD DE,0001H CALL A101 LD (IX-38H),E LD (IX-37H),D LD (IX-36H),C LD (IX-35H),B ; 49: d = r * r LD E,(IX-0CH) LD D,(IX-0BH) LD C,(IX-0AH) LD B,(IX-09H) PUSH BC PUSH DE LD E,(IX-0CH) LD D,(IX-0BH) LD C,(IX-0AH) LD B,(IX-09H) CALL M201 LD (IX-40H),E LD (IX-3FH),D LD (IX-3EH),C LD (IX-3DH),B ; 50: h = i * i LD E,(IX-14H) LD D,(IX-13H) LD C,(IX-12H) LD B,(IX-11H) PUSH BC PUSH DE LD E,(IX-14H) LD D,(IX-13H) LD C,(IX-12H) LD B,(IX-11H) CALL M201 LD (IX-10H),E LD (IX-0FH),D LD (IX-0EH),C LD (IX-0DH),B ; 51: d = d + h LD E,(IX-40H) LD D,(IX-3FH) LD C,(IX-3EH) LD B,(IX-3DH) PUSH BC PUSH DE LD E,(IX-10H) LD D,(IX-0FH) LD C,(IX-0EH) LD B,(IX-0DH) CALL A201 LD (IX-40H),E LD (IX-3FH),D LD (IX-3EH),C LD (IX-3DH),B ; 52: Wend JP L0008 L0009: NOP ; 53: y = y + 1 LD E,(IX-1CH) LD D,(IX-1BH) LD C,(IX-1AH) LD B,(IX-19H) PUSH BC PUSH DE LD BC,3F80H LD DE,0000H CALL A201 LD (IX-1CH),E LD (IX-1BH),D LD (IX-1AH),C LD (IX-19H),B ; 54: Wend JP L0005 L0006: NOP ; 55: x = x + 1 LD E,(IX-18H) LD D,(IX-17H) LD C,(IX-16H) LD B,(IX-15H) PUSH BC PUSH DE LD BC,3F80H LD DE,0000H CALL A201 LD (IX-18H),E LD (IX-17H),D LD (IX-16H),C LD (IX-15H),B ; 56: Wend JP L0002 L0003: NOP ; 57: finish: Goto finish L0001: NOP JP L0001 ; End of program HALT ; Long Addition Routine A101: EXX POP HL POP DE POP BC PUSH HL EXX EXX LD A,E EXX ADD A,E LD E,A EXX LD A,D EXX ADC A,D LD D,A EXX LD A,C EXX ADC A,C LD C,A EXX LD A,B EXX ADC A,B LD B,A RET ; Single Precision Addition Routine A201: EXX POP HL POP DE POP BC PUSH HL EXX PUSH HL CALL A202 CALL A203 POP HL RET A202: 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,A204 JR NC,A205 NEG EXX A205: SRL D RR E RR H RR L INC C DEC A JR NZ,A205 A204: LD A,B EXX XOR B EXX JP M,A206 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,A207 A210: LD A,D RR D RR E RR H RR L OR C OR E OR H OR L JR Z,A207 INC C JR A207 A206: LD A,D EXX CP D JR C,A208 JR NZ,A209 LD A,E EXX CP E JR C,A208 JR NZ,A209 LD A,H EXX CP H JR C,A208 JR NZ,A209 LD A,L EXX CP L JR C,A208 A209: EXX A208: 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,A210 A207: RET A203: LD A,C OR A JR NZ,A211 A213: LD B,A LD E,A LD D,A RET A211: BIT 7,D JR NZ,A212 LD A,C OR A JR Z,A213 DEC C SLA L RL H RL E RL D JP A211 A212: 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,A214 INC C A214: 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 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 Precision Division Routine D201: 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,D202 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 NZ,D203 LD HL,0001H LD (0FF00H),HL LD C,00H JR D204 D203: CALL D205 D202: CALL D206 D204: POP HL RET D205: LD A,C SUB 7FH LD C,A LD A,B EXX XOR B LD B,A LD A,C PUSH DE EXX SUB 7FH SUB C JP PO,D207 POP DE LD HL,0002H LD (0FF00H),HL LD C,00H RET D207: ADD A,7FH LD B,H LD C,L POP HL PUSH BC EXX LD C,A POP DE PUSH BC LD A,20H D211: OR A SBC HL,DE EXX SBC HL,DE EXX CCF JR C,D208 ADD HL,DE EXX ADC HL,DE EXX OR A D208: RL C RL B EXX RL C RL B BIT 7,H EXX JR NZ,D209 ADD HL,HL EXX ADC HL,HL EXX JR D210 D209: EXX SRL D RR E EXX RR D RR E D210: DEC A JR NZ,D211 EXX PUSH BC EXX LD H,B LD L,C POP DE POP BC RET D206: LD A,C OR A JR NZ,D212 D214: LD B,A LD E,A LD D,A RET D212: BIT 7,D JR NZ,D213 LD A,C OR A JR Z,D214 DEC C SLA L RL H RL E RL D JP D212 D213: 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,D215 INC C D215: 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 Comparison Routine C202: LD A,B XOR 80H LD B,A EXX POP HL POP DE POP BC PUSH HL EXX PUSH HL CALL C203 CALL C204 POP HL RET C203: 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,C205 JR NC,C206 NEG EXX C206: SRL D RR E RR H RR L INC C DEC A JR NZ,C206 C205: LD A,B EXX XOR B EXX JP M,C207 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,C208 C211: LD A,D RR D RR E RR H RR L OR C OR E OR H OR L JR Z,C208 INC C JR C208 C207: LD A,D EXX CP D JR C,C209 JR NZ,C210 LD A,E EXX CP E JR C,C209 JR NZ,C210 LD A,H EXX CP H JR C,C209 JR NZ,C210 LD A,L EXX CP L JR C,C209 C210: EXX C209: 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,C211 C208: RET C201: LD A,80H SUB B JR NZ,C212 LD B,A C212: EXX POP HL POP DE POP BC PUSH HL LD A,80H SUB B JR NZ,C213 LD B,A C213: LD A,B EXX CP B RET NZ EXX LD A,C EXX CP C RET NZ EXX LD A,D EXX CP D RET NZ EXX LD A,E EXX CP E RET C204: LD A,C OR A JR NZ,C214 C216: LD B,A LD E,A LD D,A RET C214: BIT 7,D JR NZ,C215 LD A,C OR A JR Z,C216 DEC C SLA L RL H RL E RL D JP C214 C215: 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,C217 INC C C217: 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 ; End of listing .END