diff --git a/files/basmul.asm b/files/basmul.asm new file mode 100644 index 0000000..9c7d83a --- /dev/null +++ b/files/basmul.asm @@ -0,0 +1,73 @@ +; Compiled with: Z80 Simulator IDE v9.70 +; +; Begin + LD IX,0FF00H + LD SP,0FEFAH +; The address of 'a' (integer) (global) is FEFEH (IX-2) +a: EQU 0FEFEH +; The address of 'b' (integer) (global) is FEFCH (IX-4) +b: EQU 0FEFCH +; The address of 'c' (integer) (global) is FEFAH (IX-6) +c: EQU 0FEFAH +; Begin of program +; 1: Dim a As Integer + LD A,00H + LD (IX-02H),A + LD (IX-01H),A +; 2: Dim b As Integer + LD A,00H + LD (IX-04H),A + LD (IX-03H),A +; 3: Dim c As Integer + LD A,00H + LD (IX-06H),A + LD (IX-05H),A +; 4: +; 5: a = 123 'First number + LD HL,007BH + LD (IX-02H),L + LD (IX-01H),H +; 6: b = 234 'Second number + LD HL,00EAH + LD (IX-04H),L + LD (IX-03H),H +; 7: c = a * b + LD L,(IX-02H) + LD H,(IX-01H) + LD E,(IX-04H) + LD D,(IX-03H) + CALL M001 + LD (IX-06H),L + LD (IX-05H),H +; End of program + HALT +; Integer Multiplication Routine +M001: PUSH BC + LD B,H + LD C,L + LD HL,0000H + LD A,10H +M003: DEC D + INC D + JR NZ,M002 + CP 09H + JR C,M002 + SUB 08H + PUSH AF + LD D,E + LD E,H + LD H,L + LD L,00H + POP AF + JR M003 +M002: ADD HL,HL + RL E + RL D + JR NC,M004 + ADD HL,BC +M004: DEC A + JR NZ,M003 + POP BC + RET +; End of listing + .END diff --git a/files/basmul.bas b/files/basmul.bas new file mode 100644 index 0000000..5a909a2 --- /dev/null +++ b/files/basmul.bas @@ -0,0 +1,7 @@ +Dim a As Integer +Dim b As Integer +Dim c As Integer + +a = 123 'First number +b = 234 'Second number +c = a * b diff --git a/files/basmul.hex b/files/basmul.hex new file mode 100644 index 0000000..df885dc --- /dev/null +++ b/files/basmul.hex @@ -0,0 +1,8 @@ +:10000000DD2100FF31FAFE3E00DD77FEDD77FF3EA9 +:1000100000DD77FCDD77FD3E00DD77FADD77FB2143 +:100020007B00DD75FEDD74FF21EA00DD75FCDD740B +:10003000FDDD6EFEDD66FFDD5EFCDD56FDCD4700BD +:10004000DD75FADD74FB76C5444D2100003E1015C8 +:1000500014200FFE09380BD608F5535C652E00F10D +:0F00600018ED29CB13CB123001093D20E2C1C9A5 +:00000001FF diff --git a/files/basmul.lst b/files/basmul.lst new file mode 100644 index 0000000..9a9989e --- /dev/null +++ b/files/basmul.lst @@ -0,0 +1,74 @@ +0001 0000 ; Compiled with: Z80 Simulator IDE v9.70 +0002 0000 ; +0003 0000 ; Begin +0004 0000 DD 21 00 FF LD IX,0FF00H +0005 0004 31 FA FE LD SP,0FEFAH +0006 0007 ; The address of 'a' (integer) (global) is FEFEH (IX-2) +0007 0007 a: EQU 0FEFEH +0008 0007 ; The address of 'b' (integer) (global) is FEFCH (IX-4) +0009 0007 b: EQU 0FEFCH +0010 0007 ; The address of 'c' (integer) (global) is FEFAH (IX-6) +0011 0007 c: EQU 0FEFAH +0012 0007 ; Begin of program +0013 0007 ; 1: Dim a As Integer +0014 0007 3E 00 LD A,00H +0015 0009 DD 77 FE LD (IX-02H),A +0016 000C DD 77 FF LD (IX-01H),A +0017 000F ; 2: Dim b As Integer +0018 000F 3E 00 LD A,00H +0019 0011 DD 77 FC LD (IX-04H),A +0020 0014 DD 77 FD LD (IX-03H),A +0021 0017 ; 3: Dim c As Integer +0022 0017 3E 00 LD A,00H +0023 0019 DD 77 FA LD (IX-06H),A +0024 001C DD 77 FB LD (IX-05H),A +0025 001F ; 4: +0026 001F ; 5: a = 123 'First number +0027 001F 21 7B 00 LD HL,007BH +0028 0022 DD 75 FE LD (IX-02H),L +0029 0025 DD 74 FF LD (IX-01H),H +0030 0028 ; 6: b = 234 'Second number +0031 0028 21 EA 00 LD HL,00EAH +0032 002B DD 75 FC LD (IX-04H),L +0033 002E DD 74 FD LD (IX-03H),H +0034 0031 ; 7: c = a * b +0035 0031 DD 6E FE LD L,(IX-02H) +0036 0034 DD 66 FF LD H,(IX-01H) +0037 0037 DD 5E FC LD E,(IX-04H) +0038 003A DD 56 FD LD D,(IX-03H) +0039 003D CD 47 00 CALL M001 +0040 0040 DD 75 FA LD (IX-06H),L +0041 0043 DD 74 FB LD (IX-05H),H +0042 0046 ; End of program +0043 0046 76 HALT +0044 0047 ; Integer Multiplication Routine +0045 0047 C5 M001: PUSH BC +0046 0048 44 LD B,H +0047 0049 4D LD C,L +0048 004A 21 00 00 LD HL,0000H +0049 004D 3E 10 LD A,10H +0050 004F 15 M003: DEC D +0051 0050 14 INC D +0052 0051 20 0F JR NZ,M002 +0053 0053 FE 09 CP 09H +0054 0055 38 0B JR C,M002 +0055 0057 D6 08 SUB 08H +0056 0059 F5 PUSH AF +0057 005A 53 LD D,E +0058 005B 5C LD E,H +0059 005C 65 LD H,L +0060 005D 2E 00 LD L,00H +0061 005F F1 POP AF +0062 0060 18 ED JR M003 +0063 0062 29 M002: ADD HL,HL +0064 0063 CB 13 RL E +0065 0065 CB 12 RL D +0066 0067 30 01 JR NC,M004 +0067 0069 09 ADD HL,BC +0068 006A 3D M004: DEC A +0069 006B 20 E2 JR NZ,M003 +0070 006D C1 POP BC +0071 006E C9 RET +0072 006F ; End of listing +0073 006F .END +Number of errors = 0 diff --git a/files/basmul.obj b/files/basmul.obj new file mode 100644 index 0000000..47c5626 Binary files /dev/null and b/files/basmul.obj differ diff --git a/files/basprint.asm b/files/basprint.asm new file mode 100644 index 0000000..0cbcc10 --- /dev/null +++ b/files/basprint.asm @@ -0,0 +1,900 @@ +; 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 diff --git a/files/basprint.bas b/files/basprint.bas new file mode 100644 index 0000000..d9802e5 --- /dev/null +++ b/files/basprint.bas @@ -0,0 +1,11 @@ +Dim a As Single +Dim b As Single +Dim c As Single + +a = 9.876543 'First number +b = 2.345678 'Second number +c = a * b + +Print 1, "Number ", a, CrLf +Print 1, "multiplied by ", b, CrLf +Print 1, "equals ", c, "!", CrLf diff --git a/files/basprint.hex b/files/basprint.hex new file mode 100644 index 0000000..d7dd3e3 --- /dev/null +++ b/files/basprint.hex @@ -0,0 +1,93 @@ +:10000000DD2100FF31F4FE3E00DD77FCDD77FDDD14 +:1000100077FEDD77FF3E00DD77F8DD77F9DD77FAF3 +:10002000DD77FB3E00DD77F4DD77F5DD77F6DD7714 +:10003000F7011E41115206DD73FCDD72FDDD71FE1C +:10004000DD70FF01164011971FDD73F8DD72F9DDD9 +:1000500071FADD70FBDD5EFCDD56FDDD4EFEDD463A +:10006000FFC5D5DD5EF8DD56F9DD4EFADD46FBCD88 +:10007000DB02DD73F4DD72F5DD71F6DD70F73E4E07 +:10008000D3013E75D3013E6DD3013E62D3013E657F +:10009000D3013E72D3013E20D301010100DD710185 +:1000A000DD70020E07DD7103DD5EFCDD56FDDD4E09 +:1000B000FEDD46FFCD61043E0DD3013E0AD3013E75 +:1000C0006DD3013E75D3013E6CD3013E74D3013E26 +:1000D00069D3013E70D3013E6CD3013E69D3013E2A +:1000E00065D3013E64D3013E20D3013E62D3013E7D +:1000F00079D3013E20D301010100DD7101DD7002E1 +:100100000E07DD7103DD5EF8DD56F9DD4EFADD46E2 +:10011000FBCD61043E0DD3013E0AD3013E65D30100 +:100120003E71D3013E75D3013E61D3013E6CD301D4 +:100130003E73D3013E20D301010100DD7101DD706A +:10014000020E07DD7103DD5EF4DD56F5DD4EF6DDF2 +:1001500046F7CD61043E21D3013E0DD3013E0AD3C3 +:100160000176AF935F3E009A573E00994F3E00984C +:1001700047C9D9E1D1C1E5D9E5CD8B01D9E1C9D9CB +:10018000E1D1C1E5D9E5CD8B01E1C9D978D9A8D9AB +:1001900078F5CB78C46201D9CB78C46201CDB101C6 +:1001A000F1F2A9016FFC62017DB7F0D9CD6201D9EE +:1001B000C9D9C5424BD9EB5059C1E5210000D9D16D +:1001C0002100003E20B7CB11CB10D9CB11CB10D9D9 +:1001D000ED6AD9ED6AD9ED52D9ED52D9300519D968 +:1001E000ED5AD93F3D20DFCB11CB10D9CB11CB102D +:1001F000D95059E5D9D1C5444DD9C1C978EE804708 +:10020000D9E1D1C1E5D9E5CD0F02CDA002E1C9D92F +:100210002E00635A51CBFACB11788F4FD92E006341 +:100220005A51CBFACB11788F4F79D99128113003DD +:10023000ED44D9CB3ACB1BCB1CCB1D0C3D20F47825 +:10024000D9A8D9FA6E027DD985D96F7CD98CD967A6 +:100250007BD98BD95F7AD98AD95730437ACB1ACBDD +:100260001BCB1CCB1DB1B3B4B528340C18317AD9D3 +:10027000BA381620137BD9BB380F200C7CD9BC3878 +:100280000820057DD9BD3801D97DD995D96F7CD994 +:100290009CD9677BD99BD95F7AD99AD95738BDC980 +:1002A00079B72004475F57C9CB7A201079B728F473 +:1002B0000DCB25CB14CB13CB12C3A8027DC6807CFB +:1002C000CE006F7BCE00677ACE0030010C87CB3931 +:1002D0001F5F78E680B157424BEBC9D9E1D1C1E548 +:1002E000D9E5D92E00635A51CBFACB11788F4F281C +:1002F00012D92E00635A51CBFACB11788F4F2803B5 +:10030000CD0803CD7B03E1C978D9A84779D9D67F39 +:100310004779D67F80E22A03D92102002200FF0E0E +:10032000FF30010C5159612E00C9C680D94FC5D587 +:10033000444DD9C1E5D9D13E200D0C201AFE093813 +:1003400016D608F5D979480600D94847D97D6C26D4 +:1003500000D96C67F118E2D9CB38CB19D9CB18CBBF +:1003600019300519D9ED5AD9D9CB1CCB1DD9CB1CC5 +:10037000CB1D3D20C4D9E5D9D1C1C979B7200447E7 +:100380005F57C9CB7A201079B728F40DCB25CB1451 +:10039000CB13CB12C383037DC6807CCE006F7BCE94 +:1003A00000677ACE0030010C87CB391F5F78E6807A +:1003B000B157424BEBC9E52E00635A51CBFACB1132 +:1003C000788F4F79D67F30070100005159181FED03 +:1003D00044C61F280FFE2030EFCB3ACB1BCB1CCBE3 +:1003E0001D3D20F5CB78424BEB2803CDF003E1C94E +:1003F000AF935F3E009A573E00994F3E009847C921 +:10040000E578CB782805CD51043E80EB5950470E56 +:100410009ECD1604E1C979B72004475F57C9CB7A4E +:10042000201079B728F40DCB25CB14CB13CB12C3F6 +:100430001E047DC6807CCE006F7BCE00677ACE0026 +:1004400030010C87CB391F5F78E680B157424BEB08 +:10045000C9AF935F3E009A573E00994F3E009847C0 +:10046000C9CB78280B3E2DC5DD4E01ED79C1CBB847 +:10047000C5CB01CB103E6A90F283043E9590FA837F +:1004800004180B3E45DD4E01ED79C1C38B05C1C596 +:10049000D5CDB603C5D5010F00114042CD7F01CDAA +:1004A0008C05C5D501010011A086CD7F01CD8C053D +:1004B000C5D5010000111027CD7F01CD8C05C5D514 +:1004C00001000011E803CD7F01CD8C05C5D50100E9 +:1004D00000116400CD7F01CD8C05C5D50100001150 +:1004E0000A00CD7F01CD8C05DD46027B063080DD24 +:1004F0004E01ED79DD4E030DCA8B05DD7002DD7115 +:10050000033E2EDD4E01ED79D1C1CBB8C5D5CDB6B8 +:1005100003CD0004CDFC01C5D5017449110024CDE3 +:10052000DB02CDB603C5D501010011A086CD7F0148 +:10053000CDAA052856D9C5D5010000111027CD7FB9 +:1005400001CDAA052845D9C5D501000011E803CD84 +:100550007F01CDAA052834D9C5D50100001164005A +:10056000CD7F01CDAA052823D9C5D5010000110AE8 +:1005700000CD7F01CDAA052812D9DD46027B80DDA2 +:100580004E01ED79DD4E030DDD7103C9DD46027BC1 +:10059000FE002802063080DD7002280CDD4E01EDE1 +:1005A00079DD4E030DDD7103D9C9DD46027B80DDA7 +:0C05B0004E01ED79DD4E030DDD7103C935 +:00000001FF diff --git a/files/basprint.lst b/files/basprint.lst new file mode 100644 index 0000000..bcc44c7 --- /dev/null +++ b/files/basprint.lst @@ -0,0 +1,901 @@ +0001 0000 ; Compiled with: Z80 Simulator IDE v9.70 +0002 0000 ; +0003 0000 ; Begin +0004 0000 DD 21 00 FF LD IX,0FF00H +0005 0004 31 F4 FE LD SP,0FEF4H +0006 0007 ; The address of 'a' (single) (global) is FEFCH (IX-4) +0007 0007 a: EQU 0FEFCH +0008 0007 ; The address of 'b' (single) (global) is FEF8H (IX-8) +0009 0007 b: EQU 0FEF8H +0010 0007 ; The address of 'c' (single) (global) is FEF4H (IX-12) +0011 0007 c: EQU 0FEF4H +0012 0007 ; Begin of program +0013 0007 ; 1: Dim a As Single +0014 0007 3E 00 LD A,00H +0015 0009 DD 77 FC LD (IX-04H),A +0016 000C DD 77 FD LD (IX-03H),A +0017 000F DD 77 FE LD (IX-02H),A +0018 0012 DD 77 FF LD (IX-01H),A +0019 0015 ; 2: Dim b As Single +0020 0015 3E 00 LD A,00H +0021 0017 DD 77 F8 LD (IX-08H),A +0022 001A DD 77 F9 LD (IX-07H),A +0023 001D DD 77 FA LD (IX-06H),A +0024 0020 DD 77 FB LD (IX-05H),A +0025 0023 ; 3: Dim c As Single +0026 0023 3E 00 LD A,00H +0027 0025 DD 77 F4 LD (IX-0CH),A +0028 0028 DD 77 F5 LD (IX-0BH),A +0029 002B DD 77 F6 LD (IX-0AH),A +0030 002E DD 77 F7 LD (IX-09H),A +0031 0031 ; 4: +0032 0031 ; 5: a = 9.876543 'First number +0033 0031 01 1E 41 LD BC,411EH +0034 0034 11 52 06 LD DE,0652H +0035 0037 DD 73 FC LD (IX-04H),E +0036 003A DD 72 FD LD (IX-03H),D +0037 003D DD 71 FE LD (IX-02H),C +0038 0040 DD 70 FF LD (IX-01H),B +0039 0043 ; 6: b = 2.345678 'Second number +0040 0043 01 16 40 LD BC,4016H +0041 0046 11 97 1F LD DE,1F97H +0042 0049 DD 73 F8 LD (IX-08H),E +0043 004C DD 72 F9 LD (IX-07H),D +0044 004F DD 71 FA LD (IX-06H),C +0045 0052 DD 70 FB LD (IX-05H),B +0046 0055 ; 7: c = a * b +0047 0055 DD 5E FC LD E,(IX-04H) +0048 0058 DD 56 FD LD D,(IX-03H) +0049 005B DD 4E FE LD C,(IX-02H) +0050 005E DD 46 FF LD B,(IX-01H) +0051 0061 C5 PUSH BC +0052 0062 D5 PUSH DE +0053 0063 DD 5E F8 LD E,(IX-08H) +0054 0066 DD 56 F9 LD D,(IX-07H) +0055 0069 DD 4E FA LD C,(IX-06H) +0056 006C DD 46 FB LD B,(IX-05H) +0057 006F CD DB 02 CALL M201 +0058 0072 DD 73 F4 LD (IX-0CH),E +0059 0075 DD 72 F5 LD (IX-0BH),D +0060 0078 DD 71 F6 LD (IX-0AH),C +0061 007B DD 70 F7 LD (IX-09H),B +0062 007E ; 8: +0063 007E ; 9: Print 1, "Number ", a, CrLf +0064 007E 3E 4E LD A,4EH +0065 0080 D3 01 OUT (01H),A +0066 0082 3E 75 LD A,75H +0067 0084 D3 01 OUT (01H),A +0068 0086 3E 6D LD A,6DH +0069 0088 D3 01 OUT (01H),A +0070 008A 3E 62 LD A,62H +0071 008C D3 01 OUT (01H),A +0072 008E 3E 65 LD A,65H +0073 0090 D3 01 OUT (01H),A +0074 0092 3E 72 LD A,72H +0075 0094 D3 01 OUT (01H),A +0076 0096 3E 20 LD A,20H +0077 0098 D3 01 OUT (01H),A +0078 009A 01 01 00 LD BC,0001H +0079 009D DD 71 01 LD (IX+01H),C +0080 00A0 DD 70 02 LD (IX+02H),B +0081 00A3 0E 07 LD C,07H +0082 00A5 DD 71 03 LD (IX+03H),C +0083 00A8 DD 5E FC LD E,(IX-04H) +0084 00AB DD 56 FD LD D,(IX-03H) +0085 00AE DD 4E FE LD C,(IX-02H) +0086 00B1 DD 46 FF LD B,(IX-01H) +0087 00B4 CD 61 04 CALL P401 +0088 00B7 3E 0D LD A,0DH +0089 00B9 D3 01 OUT (01H),A +0090 00BB 3E 0A LD A,0AH +0091 00BD D3 01 OUT (01H),A +0092 00BF ; 10: Print 1, "multiplied by ", b, CrLf +0093 00BF 3E 6D LD A,6DH +0094 00C1 D3 01 OUT (01H),A +0095 00C3 3E 75 LD A,75H +0096 00C5 D3 01 OUT (01H),A +0097 00C7 3E 6C LD A,6CH +0098 00C9 D3 01 OUT (01H),A +0099 00CB 3E 74 LD A,74H +0100 00CD D3 01 OUT (01H),A +0101 00CF 3E 69 LD A,69H +0102 00D1 D3 01 OUT (01H),A +0103 00D3 3E 70 LD A,70H +0104 00D5 D3 01 OUT (01H),A +0105 00D7 3E 6C LD A,6CH +0106 00D9 D3 01 OUT (01H),A +0107 00DB 3E 69 LD A,69H +0108 00DD D3 01 OUT (01H),A +0109 00DF 3E 65 LD A,65H +0110 00E1 D3 01 OUT (01H),A +0111 00E3 3E 64 LD A,64H +0112 00E5 D3 01 OUT (01H),A +0113 00E7 3E 20 LD A,20H +0114 00E9 D3 01 OUT (01H),A +0115 00EB 3E 62 LD A,62H +0116 00ED D3 01 OUT (01H),A +0117 00EF 3E 79 LD A,79H +0118 00F1 D3 01 OUT (01H),A +0119 00F3 3E 20 LD A,20H +0120 00F5 D3 01 OUT (01H),A +0121 00F7 01 01 00 LD BC,0001H +0122 00FA DD 71 01 LD (IX+01H),C +0123 00FD DD 70 02 LD (IX+02H),B +0124 0100 0E 07 LD C,07H +0125 0102 DD 71 03 LD (IX+03H),C +0126 0105 DD 5E F8 LD E,(IX-08H) +0127 0108 DD 56 F9 LD D,(IX-07H) +0128 010B DD 4E FA LD C,(IX-06H) +0129 010E DD 46 FB LD B,(IX-05H) +0130 0111 CD 61 04 CALL P401 +0131 0114 3E 0D LD A,0DH +0132 0116 D3 01 OUT (01H),A +0133 0118 3E 0A LD A,0AH +0134 011A D3 01 OUT (01H),A +0135 011C ; 11: Print 1, "equals ", c, "!", CrLf +0136 011C 3E 65 LD A,65H +0137 011E D3 01 OUT (01H),A +0138 0120 3E 71 LD A,71H +0139 0122 D3 01 OUT (01H),A +0140 0124 3E 75 LD A,75H +0141 0126 D3 01 OUT (01H),A +0142 0128 3E 61 LD A,61H +0143 012A D3 01 OUT (01H),A +0144 012C 3E 6C LD A,6CH +0145 012E D3 01 OUT (01H),A +0146 0130 3E 73 LD A,73H +0147 0132 D3 01 OUT (01H),A +0148 0134 3E 20 LD A,20H +0149 0136 D3 01 OUT (01H),A +0150 0138 01 01 00 LD BC,0001H +0151 013B DD 71 01 LD (IX+01H),C +0152 013E DD 70 02 LD (IX+02H),B +0153 0141 0E 07 LD C,07H +0154 0143 DD 71 03 LD (IX+03H),C +0155 0146 DD 5E F4 LD E,(IX-0CH) +0156 0149 DD 56 F5 LD D,(IX-0BH) +0157 014C DD 4E F6 LD C,(IX-0AH) +0158 014F DD 46 F7 LD B,(IX-09H) +0159 0152 CD 61 04 CALL P401 +0160 0155 3E 21 LD A,21H +0161 0157 D3 01 OUT (01H),A +0162 0159 3E 0D LD A,0DH +0163 015B D3 01 OUT (01H),A +0164 015D 3E 0A LD A,0AH +0165 015F D3 01 OUT (01H),A +0166 0161 ; End of program +0167 0161 76 HALT +0168 0162 ; Long Division Routine +0169 0162 AF D104: XOR A +0170 0163 93 SUB E +0171 0164 5F LD E,A +0172 0165 3E 00 LD A,00H +0173 0167 9A SBC A,D +0174 0168 57 LD D,A +0175 0169 3E 00 LD A,00H +0176 016B 99 SBC A,C +0177 016C 4F LD C,A +0178 016D 3E 00 LD A,00H +0179 016F 98 SBC A,B +0180 0170 47 LD B,A +0181 0171 C9 RET +0182 0172 D9 D102: EXX +0183 0173 E1 POP HL +0184 0174 D1 POP DE +0185 0175 C1 POP BC +0186 0176 E5 PUSH HL +0187 0177 D9 EXX +0188 0178 E5 PUSH HL +0189 0179 CD 8B 01 CALL D103 +0190 017C D9 EXX +0191 017D E1 POP HL +0192 017E C9 RET +0193 017F D9 D101: EXX +0194 0180 E1 POP HL +0195 0181 D1 POP DE +0196 0182 C1 POP BC +0197 0183 E5 PUSH HL +0198 0184 D9 EXX +0199 0185 E5 PUSH HL +0200 0186 CD 8B 01 CALL D103 +0201 0189 E1 POP HL +0202 018A C9 RET +0203 018B D9 D103: EXX +0204 018C 78 LD A,B +0205 018D D9 EXX +0206 018E A8 XOR B +0207 018F D9 EXX +0208 0190 78 LD A,B +0209 0191 F5 PUSH AF +0210 0192 CB 78 BIT 7,B +0211 0194 C4 62 01 CALL NZ,D104 +0212 0197 D9 EXX +0213 0198 CB 78 BIT 7,B +0214 019A C4 62 01 CALL NZ,D104 +0215 019D CD B1 01 CALL D105 +0216 01A0 F1 POP AF +0217 01A1 F2 A9 01 JP P,D106 +0218 01A4 6F LD L,A +0219 01A5 FC 62 01 CALL M,D104 +0220 01A8 7D LD A,L +0221 01A9 B7 D106: OR A +0222 01AA F0 RET P +0223 01AB D9 EXX +0224 01AC CD 62 01 CALL D104 +0225 01AF D9 EXX +0226 01B0 C9 RET +0227 01B1 D9 D105: EXX +0228 01B2 C5 PUSH BC +0229 01B3 42 LD B,D +0230 01B4 4B LD C,E +0231 01B5 D9 EXX +0232 01B6 EB EX DE,HL +0233 01B7 50 LD D,B +0234 01B8 59 LD E,C +0235 01B9 C1 POP BC +0236 01BA E5 PUSH HL +0237 01BB 21 00 00 LD HL,0000H +0238 01BE D9 EXX +0239 01BF D1 POP DE +0240 01C0 21 00 00 LD HL,0000H +0241 01C3 3E 20 LD A,20H +0242 01C5 B7 OR A +0243 01C6 CB 11 D108: RL C +0244 01C8 CB 10 RL B +0245 01CA D9 EXX +0246 01CB CB 11 RL C +0247 01CD CB 10 RL B +0248 01CF D9 EXX +0249 01D0 ED 6A ADC HL,HL +0250 01D2 D9 EXX +0251 01D3 ED 6A ADC HL,HL +0252 01D5 D9 EXX +0253 01D6 ED 52 SBC HL,DE +0254 01D8 D9 EXX +0255 01D9 ED 52 SBC HL,DE +0256 01DB D9 EXX +0257 01DC 30 05 JR NC,D107 +0258 01DE 19 ADD HL,DE +0259 01DF D9 EXX +0260 01E0 ED 5A ADC HL,DE +0261 01E2 D9 EXX +0262 01E3 3F D107: CCF +0263 01E4 3D DEC A +0264 01E5 20 DF JR NZ,D108 +0265 01E7 CB 11 RL C +0266 01E9 CB 10 RL B +0267 01EB D9 EXX +0268 01EC CB 11 RL C +0269 01EE CB 10 RL B +0270 01F0 D9 EXX +0271 01F1 50 LD D,B +0272 01F2 59 LD E,C +0273 01F3 E5 PUSH HL +0274 01F4 D9 EXX +0275 01F5 D1 POP DE +0276 01F6 C5 PUSH BC +0277 01F7 44 LD B,H +0278 01F8 4D LD C,L +0279 01F9 D9 EXX +0280 01FA C1 POP BC +0281 01FB C9 RET +0282 01FC ; Single Precision Subtraction Routine +0283 01FC 78 S201: LD A,B +0284 01FD EE 80 XOR 80H +0285 01FF 47 LD B,A +0286 0200 D9 EXX +0287 0201 E1 POP HL +0288 0202 D1 POP DE +0289 0203 C1 POP BC +0290 0204 E5 PUSH HL +0291 0205 D9 EXX +0292 0206 E5 PUSH HL +0293 0207 CD 0F 02 CALL S202 +0294 020A CD A0 02 CALL S203 +0295 020D E1 POP HL +0296 020E C9 RET +0297 020F D9 S202: EXX +0298 0210 2E 00 LD L,00H +0299 0212 63 LD H,E +0300 0213 5A LD E,D +0301 0214 51 LD D,C +0302 0215 CB FA SET 7,D +0303 0217 CB 11 RL C +0304 0219 78 LD A,B +0305 021A 8F ADC A,A +0306 021B 4F LD C,A +0307 021C D9 EXX +0308 021D 2E 00 LD L,00H +0309 021F 63 LD H,E +0310 0220 5A LD E,D +0311 0221 51 LD D,C +0312 0222 CB FA SET 7,D +0313 0224 CB 11 RL C +0314 0226 78 LD A,B +0315 0227 8F ADC A,A +0316 0228 4F LD C,A +0317 0229 79 LD A,C +0318 022A D9 EXX +0319 022B 91 SUB C +0320 022C 28 11 JR Z,S204 +0321 022E 30 03 JR NC,S205 +0322 0230 ED 44 NEG +0323 0232 D9 EXX +0324 0233 CB 3A S205: SRL D +0325 0235 CB 1B RR E +0326 0237 CB 1C RR H +0327 0239 CB 1D RR L +0328 023B 0C INC C +0329 023C 3D DEC A +0330 023D 20 F4 JR NZ,S205 +0331 023F 78 S204: LD A,B +0332 0240 D9 EXX +0333 0241 A8 XOR B +0334 0242 D9 EXX +0335 0243 FA 6E 02 JP M,S206 +0336 0246 7D LD A,L +0337 0247 D9 EXX +0338 0248 85 ADD A,L +0339 0249 D9 EXX +0340 024A 6F LD L,A +0341 024B 7C LD A,H +0342 024C D9 EXX +0343 024D 8C ADC A,H +0344 024E D9 EXX +0345 024F 67 LD H,A +0346 0250 7B LD A,E +0347 0251 D9 EXX +0348 0252 8B ADC A,E +0349 0253 D9 EXX +0350 0254 5F LD E,A +0351 0255 7A LD A,D +0352 0256 D9 EXX +0353 0257 8A ADC A,D +0354 0258 D9 EXX +0355 0259 57 LD D,A +0356 025A 30 43 JR NC,S207 +0357 025C 7A S210: LD A,D +0358 025D CB 1A RR D +0359 025F CB 1B RR E +0360 0261 CB 1C RR H +0361 0263 CB 1D RR L +0362 0265 B1 OR C +0363 0266 B3 OR E +0364 0267 B4 OR H +0365 0268 B5 OR L +0366 0269 28 34 JR Z,S207 +0367 026B 0C INC C +0368 026C 18 31 JR S207 +0369 026E 7A S206: LD A,D +0370 026F D9 EXX +0371 0270 BA CP D +0372 0271 38 16 JR C,S208 +0373 0273 20 13 JR NZ,S209 +0374 0275 7B LD A,E +0375 0276 D9 EXX +0376 0277 BB CP E +0377 0278 38 0F JR C,S208 +0378 027A 20 0C JR NZ,S209 +0379 027C 7C LD A,H +0380 027D D9 EXX +0381 027E BC CP H +0382 027F 38 08 JR C,S208 +0383 0281 20 05 JR NZ,S209 +0384 0283 7D LD A,L +0385 0284 D9 EXX +0386 0285 BD CP L +0387 0286 38 01 JR C,S208 +0388 0288 D9 S209: EXX +0389 0289 7D S208: LD A,L +0390 028A D9 EXX +0391 028B 95 SUB L +0392 028C D9 EXX +0393 028D 6F LD L,A +0394 028E 7C LD A,H +0395 028F D9 EXX +0396 0290 9C SBC A,H +0397 0291 D9 EXX +0398 0292 67 LD H,A +0399 0293 7B LD A,E +0400 0294 D9 EXX +0401 0295 9B SBC A,E +0402 0296 D9 EXX +0403 0297 5F LD E,A +0404 0298 7A LD A,D +0405 0299 D9 EXX +0406 029A 9A SBC A,D +0407 029B D9 EXX +0408 029C 57 LD D,A +0409 029D 38 BD JR C,S210 +0410 029F C9 S207: RET +0411 02A0 79 S203: LD A,C +0412 02A1 B7 OR A +0413 02A2 20 04 JR NZ,S211 +0414 02A4 47 S213: LD B,A +0415 02A5 5F LD E,A +0416 02A6 57 LD D,A +0417 02A7 C9 RET +0418 02A8 CB 7A S211: BIT 7,D +0419 02AA 20 10 JR NZ,S212 +0420 02AC 79 LD A,C +0421 02AD B7 OR A +0422 02AE 28 F4 JR Z,S213 +0423 02B0 0D DEC C +0424 02B1 CB 25 SLA L +0425 02B3 CB 14 RL H +0426 02B5 CB 13 RL E +0427 02B7 CB 12 RL D +0428 02B9 C3 A8 02 JP S211 +0429 02BC 7D S212: LD A,L +0430 02BD C6 80 ADD A,80H +0431 02BF 7C LD A,H +0432 02C0 CE 00 ADC A,00H +0433 02C2 6F LD L,A +0434 02C3 7B LD A,E +0435 02C4 CE 00 ADC A,00H +0436 02C6 67 LD H,A +0437 02C7 7A LD A,D +0438 02C8 CE 00 ADC A,00H +0439 02CA 30 01 JR NC,S214 +0440 02CC 0C INC C +0441 02CD 87 S214: ADD A,A +0442 02CE CB 39 SRL C +0443 02D0 1F RRA +0444 02D1 5F LD E,A +0445 02D2 78 LD A,B +0446 02D3 E6 80 AND 80H +0447 02D5 B1 OR C +0448 02D6 57 LD D,A +0449 02D7 42 LD B,D +0450 02D8 4B LD C,E +0451 02D9 EB EX DE,HL +0452 02DA C9 RET +0453 02DB ; Single Precision Multiplication Routine +0454 02DB D9 M201: EXX +0455 02DC E1 POP HL +0456 02DD D1 POP DE +0457 02DE C1 POP BC +0458 02DF E5 PUSH HL +0459 02E0 D9 EXX +0460 02E1 E5 PUSH HL +0461 02E2 D9 EXX +0462 02E3 2E 00 LD L,00H +0463 02E5 63 LD H,E +0464 02E6 5A LD E,D +0465 02E7 51 LD D,C +0466 02E8 CB FA SET 7,D +0467 02EA CB 11 RL C +0468 02EC 78 LD A,B +0469 02ED 8F ADC A,A +0470 02EE 4F LD C,A +0471 02EF 28 12 JR Z,M202 +0472 02F1 D9 EXX +0473 02F2 2E 00 LD L,00H +0474 02F4 63 LD H,E +0475 02F5 5A LD E,D +0476 02F6 51 LD D,C +0477 02F7 CB FA SET 7,D +0478 02F9 CB 11 RL C +0479 02FB 78 LD A,B +0480 02FC 8F ADC A,A +0481 02FD 4F LD C,A +0482 02FE 28 03 JR Z,M202 +0483 0300 CD 08 03 CALL M203 +0484 0303 CD 7B 03 M202: CALL M204 +0485 0306 E1 POP HL +0486 0307 C9 RET +0487 0308 78 M203: LD A,B +0488 0309 D9 EXX +0489 030A A8 XOR B +0490 030B 47 LD B,A +0491 030C 79 LD A,C +0492 030D D9 EXX +0493 030E D6 7F SUB 7FH +0494 0310 47 LD B,A +0495 0311 79 LD A,C +0496 0312 D6 7F SUB 7FH +0497 0314 80 ADD A,B +0498 0315 E2 2A 03 JP PO,M205 +0499 0318 D9 EXX +0500 0319 21 02 00 LD HL,0002H +0501 031C 22 00 FF LD (0FF00H),HL +0502 031F 0E FF LD C,0FFH +0503 0321 30 01 JR NC,M206 +0504 0323 0C INC C +0505 0324 51 M206: LD D,C +0506 0325 59 LD E,C +0507 0326 61 LD H,C +0508 0327 2E 00 LD L,00H +0509 0329 C9 RET +0510 032A C6 80 M205: ADD A,80H +0511 032C D9 EXX +0512 032D 4F LD C,A +0513 032E C5 PUSH BC +0514 032F D5 PUSH DE +0515 0330 44 LD B,H +0516 0331 4D LD C,L +0517 0332 D9 EXX +0518 0333 C1 POP BC +0519 0334 E5 PUSH HL +0520 0335 D9 EXX +0521 0336 D1 POP DE +0522 0337 3E 20 LD A,20H +0523 0339 0D M208: DEC C +0524 033A 0C INC C +0525 033B 20 1A JR NZ,M207 +0526 033D FE 09 CP 09H +0527 033F 38 16 JR C,M207 +0528 0341 D6 08 SUB 08H +0529 0343 F5 PUSH AF +0530 0344 D9 EXX +0531 0345 79 LD A,C +0532 0346 48 LD C,B +0533 0347 06 00 LD B,00H +0534 0349 D9 EXX +0535 034A 48 LD C,B +0536 034B 47 LD B,A +0537 034C D9 EXX +0538 034D 7D LD A,L +0539 034E 6C LD L,H +0540 034F 26 00 LD H,00H +0541 0351 D9 EXX +0542 0352 6C LD L,H +0543 0353 67 LD H,A +0544 0354 F1 POP AF +0545 0355 18 E2 JR M208 +0546 0357 D9 M207: EXX +0547 0358 CB 38 SRL B +0548 035A CB 19 RR C +0549 035C D9 EXX +0550 035D CB 18 RR B +0551 035F CB 19 RR C +0552 0361 30 05 JR NC,M209 +0553 0363 19 ADD HL,DE +0554 0364 D9 EXX +0555 0365 ED 5A ADC HL,DE +0556 0367 D9 EXX +0557 0368 D9 M209: EXX +0558 0369 CB 1C RR H +0559 036B CB 1D RR L +0560 036D D9 EXX +0561 036E CB 1C RR H +0562 0370 CB 1D RR L +0563 0372 3D DEC A +0564 0373 20 C4 JR NZ,M208 +0565 0375 D9 EXX +0566 0376 E5 PUSH HL +0567 0377 D9 EXX +0568 0378 D1 POP DE +0569 0379 C1 POP BC +0570 037A C9 RET +0571 037B 79 M204: LD A,C +0572 037C B7 OR A +0573 037D 20 04 JR NZ,M210 +0574 037F 47 M212: LD B,A +0575 0380 5F LD E,A +0576 0381 57 LD D,A +0577 0382 C9 RET +0578 0383 CB 7A M210: BIT 7,D +0579 0385 20 10 JR NZ,M211 +0580 0387 79 LD A,C +0581 0388 B7 OR A +0582 0389 28 F4 JR Z,M212 +0583 038B 0D DEC C +0584 038C CB 25 SLA L +0585 038E CB 14 RL H +0586 0390 CB 13 RL E +0587 0392 CB 12 RL D +0588 0394 C3 83 03 JP M210 +0589 0397 7D M211: LD A,L +0590 0398 C6 80 ADD A,80H +0591 039A 7C LD A,H +0592 039B CE 00 ADC A,00H +0593 039D 6F LD L,A +0594 039E 7B LD A,E +0595 039F CE 00 ADC A,00H +0596 03A1 67 LD H,A +0597 03A2 7A LD A,D +0598 03A3 CE 00 ADC A,00H +0599 03A5 30 01 JR NC,M213 +0600 03A7 0C INC C +0601 03A8 87 M213: ADD A,A +0602 03A9 CB 39 SRL C +0603 03AB 1F RRA +0604 03AC 5F LD E,A +0605 03AD 78 LD A,B +0606 03AE E6 80 AND 80H +0607 03B0 B1 OR C +0608 03B1 57 LD D,A +0609 03B2 42 LD B,D +0610 03B3 4B LD C,E +0611 03B4 EB EX DE,HL +0612 03B5 C9 RET +0613 03B6 ; Single To Long Conversion Routine +0614 03B6 E5 X001: PUSH HL +0615 03B7 2E 00 LD L,00H +0616 03B9 63 LD H,E +0617 03BA 5A LD E,D +0618 03BB 51 LD D,C +0619 03BC CB FA SET 7,D +0620 03BE CB 11 RL C +0621 03C0 78 LD A,B +0622 03C1 8F ADC A,A +0623 03C2 4F LD C,A +0624 03C3 79 LD A,C +0625 03C4 D6 7F SUB 7FH +0626 03C6 30 07 JR NC,X002 +0627 03C8 01 00 00 X005: LD BC,0000H +0628 03CB 51 LD D,C +0629 03CC 59 LD E,C +0630 03CD 18 1F JR X003 +0631 03CF ED 44 X002: NEG +0632 03D1 C6 1F ADD A,1FH +0633 03D3 28 0F JR Z,X004 +0634 03D5 FE 20 CP 20H +0635 03D7 30 EF JR NC,X005 +0636 03D9 CB 3A X006: SRL D +0637 03DB CB 1B RR E +0638 03DD CB 1C RR H +0639 03DF CB 1D RR L +0640 03E1 3D DEC A +0641 03E2 20 F5 JR NZ,X006 +0642 03E4 CB 78 X004: BIT 7,B +0643 03E6 42 LD B,D +0644 03E7 4B LD C,E +0645 03E8 EB EX DE,HL +0646 03E9 28 03 JR Z,X003 +0647 03EB CD F0 03 CALL X007 +0648 03EE E1 X003: POP HL +0649 03EF C9 RET +0650 03F0 AF X007: XOR A +0651 03F1 93 SUB E +0652 03F2 5F LD E,A +0653 03F3 3E 00 LD A,00H +0654 03F5 9A SBC A,D +0655 03F6 57 LD D,A +0656 03F7 3E 00 LD A,00H +0657 03F9 99 SBC A,C +0658 03FA 4F LD C,A +0659 03FB 3E 00 LD A,00H +0660 03FD 98 SBC A,B +0661 03FE 47 LD B,A +0662 03FF C9 RET +0663 0400 ; Long To Single Conversion Routine +0664 0400 E5 X101: PUSH HL +0665 0401 78 LD A,B +0666 0402 CB 78 BIT 7,B +0667 0404 28 05 JR Z,X102 +0668 0406 CD 51 04 CALL X103 +0669 0409 3E 80 LD A,80H +0670 040B EB X102: EX DE,HL +0671 040C 59 LD E,C +0672 040D 50 LD D,B +0673 040E 47 LD B,A +0674 040F 0E 9E LD C,9EH +0675 0411 CD 16 04 CALL X104 +0676 0414 E1 POP HL +0677 0415 C9 RET +0678 0416 79 X104: LD A,C +0679 0417 B7 OR A +0680 0418 20 04 JR NZ,X105 +0681 041A 47 X107: LD B,A +0682 041B 5F LD E,A +0683 041C 57 LD D,A +0684 041D C9 RET +0685 041E CB 7A X105: BIT 7,D +0686 0420 20 10 JR NZ,X106 +0687 0422 79 LD A,C +0688 0423 B7 OR A +0689 0424 28 F4 JR Z,X107 +0690 0426 0D DEC C +0691 0427 CB 25 SLA L +0692 0429 CB 14 RL H +0693 042B CB 13 RL E +0694 042D CB 12 RL D +0695 042F C3 1E 04 JP X105 +0696 0432 7D X106: LD A,L +0697 0433 C6 80 ADD A,80H +0698 0435 7C LD A,H +0699 0436 CE 00 ADC A,00H +0700 0438 6F LD L,A +0701 0439 7B LD A,E +0702 043A CE 00 ADC A,00H +0703 043C 67 LD H,A +0704 043D 7A LD A,D +0705 043E CE 00 ADC A,00H +0706 0440 30 01 JR NC,X108 +0707 0442 0C INC C +0708 0443 87 X108: ADD A,A +0709 0444 CB 39 SRL C +0710 0446 1F RRA +0711 0447 5F LD E,A +0712 0448 78 LD A,B +0713 0449 E6 80 AND 80H +0714 044B B1 OR C +0715 044C 57 LD D,A +0716 044D 42 LD B,D +0717 044E 4B LD C,E +0718 044F EB EX DE,HL +0719 0450 C9 RET +0720 0451 AF X103: XOR A +0721 0452 93 SUB E +0722 0453 5F LD E,A +0723 0454 3E 00 LD A,00H +0724 0456 9A SBC A,D +0725 0457 57 LD D,A +0726 0458 3E 00 LD A,00H +0727 045A 99 SBC A,C +0728 045B 4F LD C,A +0729 045C 3E 00 LD A,00H +0730 045E 98 SBC A,B +0731 045F 47 LD B,A +0732 0460 C9 RET +0733 0461 ; Single Print Routine +0734 0461 CB 78 P401: BIT 7,B +0735 0463 28 0B JR Z,P402 +0736 0465 3E 2D LD A,2DH +0737 0467 C5 PUSH BC +0738 0468 DD 4E 01 LD C,(IX+01H) +0739 046B ED 79 OUT (C),A +0740 046D C1 POP BC +0741 046E CB B8 RES 7,B +0742 0470 C5 P402: PUSH BC +0743 0471 CB 01 RLC C +0744 0473 CB 10 RL B +0745 0475 3E 6A LD A,6AH +0746 0477 90 SUB B +0747 0478 F2 83 04 JP P,P403 +0748 047B 3E 95 LD A,95H +0749 047D 90 SUB B +0750 047E FA 83 04 JP M,P403 +0751 0481 18 0B JR P404 +0752 0483 3E 45 P403: LD A,45H +0753 0485 DD 4E 01 LD C,(IX+01H) +0754 0488 ED 79 OUT (C),A +0755 048A C1 POP BC +0756 048B C3 8B 05 JP P405 +0757 048E C1 P404: POP BC +0758 048F C5 PUSH BC +0759 0490 D5 PUSH DE +0760 0491 CD B6 03 CALL X001 +0761 0494 C5 PUSH BC +0762 0495 D5 PUSH DE +0763 0496 01 0F 00 LD BC,000FH +0764 0499 11 40 42 LD DE,4240H +0765 049C CD 7F 01 CALL D101 +0766 049F CD 8C 05 CALL P406 +0767 04A2 C5 PUSH BC +0768 04A3 D5 PUSH DE +0769 04A4 01 01 00 LD BC,0001H +0770 04A7 11 A0 86 LD DE,86A0H +0771 04AA CD 7F 01 CALL D101 +0772 04AD CD 8C 05 CALL P406 +0773 04B0 C5 PUSH BC +0774 04B1 D5 PUSH DE +0775 04B2 01 00 00 LD BC,0000H +0776 04B5 11 10 27 LD DE,2710H +0777 04B8 CD 7F 01 CALL D101 +0778 04BB CD 8C 05 CALL P406 +0779 04BE C5 PUSH BC +0780 04BF D5 PUSH DE +0781 04C0 01 00 00 LD BC,0000H +0782 04C3 11 E8 03 LD DE,03E8H +0783 04C6 CD 7F 01 CALL D101 +0784 04C9 CD 8C 05 CALL P406 +0785 04CC C5 PUSH BC +0786 04CD D5 PUSH DE +0787 04CE 01 00 00 LD BC,0000H +0788 04D1 11 64 00 LD DE,0064H +0789 04D4 CD 7F 01 CALL D101 +0790 04D7 CD 8C 05 CALL P406 +0791 04DA C5 PUSH BC +0792 04DB D5 PUSH DE +0793 04DC 01 00 00 LD BC,0000H +0794 04DF 11 0A 00 LD DE,000AH +0795 04E2 CD 7F 01 CALL D101 +0796 04E5 CD 8C 05 CALL P406 +0797 04E8 DD 46 02 LD B,(IX+02H) +0798 04EB 7B LD A,E +0799 04EC 06 30 LD B,30H +0800 04EE 80 ADD A,B +0801 04EF DD 4E 01 LD C,(IX+01H) +0802 04F2 ED 79 OUT (C),A +0803 04F4 DD 4E 03 LD C,(IX+03H) +0804 04F7 0D DEC C +0805 04F8 CA 8B 05 JP Z,P405 +0806 04FB DD 70 02 LD (IX+02H),B +0807 04FE DD 71 03 LD (IX+03H),C +0808 0501 3E 2E LD A,2EH +0809 0503 DD 4E 01 LD C,(IX+01H) +0810 0506 ED 79 OUT (C),A +0811 0508 D1 POP DE +0812 0509 C1 POP BC +0813 050A CB B8 RES 7,B +0814 050C C5 PUSH BC +0815 050D D5 PUSH DE +0816 050E CD B6 03 CALL X001 +0817 0511 CD 00 04 CALL X101 +0818 0514 CD FC 01 CALL S201 +0819 0517 C5 PUSH BC +0820 0518 D5 PUSH DE +0821 0519 01 74 49 LD BC,4974H +0822 051C 11 00 24 LD DE,2400H +0823 051F CD DB 02 CALL M201 +0824 0522 CD B6 03 CALL X001 +0825 0525 C5 PUSH BC +0826 0526 D5 PUSH DE +0827 0527 01 01 00 LD BC,0001H +0828 052A 11 A0 86 LD DE,86A0H +0829 052D CD 7F 01 CALL D101 +0830 0530 CD AA 05 CALL P409 +0831 0533 28 56 JR Z,P405 +0832 0535 D9 EXX +0833 0536 C5 PUSH BC +0834 0537 D5 PUSH DE +0835 0538 01 00 00 LD BC,0000H +0836 053B 11 10 27 LD DE,2710H +0837 053E CD 7F 01 CALL D101 +0838 0541 CD AA 05 CALL P409 +0839 0544 28 45 JR Z,P405 +0840 0546 D9 EXX +0841 0547 C5 PUSH BC +0842 0548 D5 PUSH DE +0843 0549 01 00 00 LD BC,0000H +0844 054C 11 E8 03 LD DE,03E8H +0845 054F CD 7F 01 CALL D101 +0846 0552 CD AA 05 CALL P409 +0847 0555 28 34 JR Z,P405 +0848 0557 D9 EXX +0849 0558 C5 PUSH BC +0850 0559 D5 PUSH DE +0851 055A 01 00 00 LD BC,0000H +0852 055D 11 64 00 LD DE,0064H +0853 0560 CD 7F 01 CALL D101 +0854 0563 CD AA 05 CALL P409 +0855 0566 28 23 JR Z,P405 +0856 0568 D9 EXX +0857 0569 C5 PUSH BC +0858 056A D5 PUSH DE +0859 056B 01 00 00 LD BC,0000H +0860 056E 11 0A 00 LD DE,000AH +0861 0571 CD 7F 01 CALL D101 +0862 0574 CD AA 05 CALL P409 +0863 0577 28 12 JR Z,P405 +0864 0579 D9 EXX +0865 057A DD 46 02 LD B,(IX+02H) +0866 057D 7B LD A,E +0867 057E 80 ADD A,B +0868 057F DD 4E 01 LD C,(IX+01H) +0869 0582 ED 79 OUT (C),A +0870 0584 DD 4E 03 LD C,(IX+03H) +0871 0587 0D DEC C +0872 0588 DD 71 03 LD (IX+03H),C +0873 058B P405: +0874 058B C9 RET +0875 058C DD 46 02 P406: LD B,(IX+02H) +0876 058F 7B LD A,E +0877 0590 FE 00 CP 00H +0878 0592 28 02 JR Z,P407 +0879 0594 06 30 LD B,30H +0880 0596 80 P407: ADD A,B +0881 0597 DD 70 02 LD (IX+02H),B +0882 059A 28 0C JR Z,P408 +0883 059C DD 4E 01 LD C,(IX+01H) +0884 059F ED 79 OUT (C),A +0885 05A1 DD 4E 03 LD C,(IX+03H) +0886 05A4 0D DEC C +0887 05A5 DD 71 03 LD (IX+03H),C +0888 05A8 D9 P408: EXX +0889 05A9 C9 RET +0890 05AA DD 46 02 P409: LD B,(IX+02H) +0891 05AD 7B LD A,E +0892 05AE 80 ADD A,B +0893 05AF DD 4E 01 LD C,(IX+01H) +0894 05B2 ED 79 OUT (C),A +0895 05B4 DD 4E 03 LD C,(IX+03H) +0896 05B7 0D DEC C +0897 05B8 DD 71 03 LD (IX+03H),C +0898 05BB C9 RET +0899 05BC ; End of listing +0900 05BC .END +Number of errors = 0 diff --git a/files/basprint.obj b/files/basprint.obj new file mode 100644 index 0000000..0f90a0b Binary files /dev/null and b/files/basprint.obj differ diff --git a/files/bin2bcd.asm b/files/bin2bcd.asm new file mode 100644 index 0000000..9ab4e81 --- /dev/null +++ b/files/bin2bcd.asm @@ -0,0 +1,30 @@ +START: LD SP,STACK ;initialize stack pointer + LD HL,BINBYT ;point HL index to where binary number is stored + LD A,(HL) ;transfer byte + LD HL,OUTBUF ;point HL index to output-buffer memory + CALL BINBCD + HALT + +BINBCD: + LD B,100 ;load 100 into register B (power of ten holding register) + CALL BCD ;call conversion for BCD3 + LD B,10 ;load 10 into register B + CALL BCD ;call conversion for BCD2 + LD (HL),A ;store BCD1 + RET + +BCD: + LD (HL),0FFH ;load buffer with -1 +STORE: INC (HL) ;clear buffer first and increment for each subtraction + SUB B ;subtract power of ten from binary number + JR NC,STORE ;if number is larger than power of ten, go back and add 1 to buffer + ADD A,B ;if no, add power of ten to get back remainder + INC HL ;go to next buffer location + RET + + .ORG 0100H +BINBYT .DB 234 ;example binary number to be converted into a BCD number +OUTBUF ;output-buffer memory location + +STACK .EQU 0FFFFH ;definition of stack pointer initialization address + .END diff --git a/files/bin2bcd.hex b/files/bin2bcd.hex new file mode 100644 index 0000000..5244663 --- /dev/null +++ b/files/bin2bcd.hex @@ -0,0 +1,5 @@ +:1000000031FFFF2100017E210101CD0E0076066443 +:10001000CD1A00060ACD1A0077C936FF349030FC9D +:100020008023C90000000000000000000000000064 +:01010000EA14 +:00000001FF diff --git a/files/bin2bcd.lst b/files/bin2bcd.lst new file mode 100644 index 0000000..ca11956 --- /dev/null +++ b/files/bin2bcd.lst @@ -0,0 +1,31 @@ +0001 0000 31 FF FF START: LD SP,STACK ;initialize stack pointer +0002 0003 21 00 01 LD HL,BINBYT ;point HL index to where binary number is stored +0003 0006 7E LD A,(HL) ;transfer byte +0004 0007 21 01 01 LD HL,OUTBUF ;point HL index to output-buffer memory +0005 000A CD 0E 00 CALL BINBCD +0006 000D 76 HALT +0007 000E +0008 000E BINBCD: +0009 000E 06 64 LD B,100 ;load 100 into register B (power of ten holding register) +0010 0010 CD 1A 00 CALL BCD ;call conversion for BCD3 +0011 0013 06 0A LD B,10 ;load 10 into register B +0012 0015 CD 1A 00 CALL BCD ;call conversion for BCD2 +0013 0018 77 LD (HL),A ;store BCD1 +0014 0019 C9 RET +0015 001A +0016 001A BCD: +0017 001A 36 FF LD (HL),0FFH ;load buffer with -1 +0018 001C 34 STORE: INC (HL) ;clear buffer first and increment for each subtraction +0019 001D 90 SUB B ;subtract power of ten from binary number +0020 001E 30 FC JR NC,STORE ;if number is larger than power of ten, go back and add 1 to buffer +0021 0020 80 ADD A,B ;if no, add power of ten to get back remainder +0022 0021 23 INC HL ;go to next buffer location +0023 0022 C9 RET +0024 0023 +0025 0023 .ORG 0100H +0026 0100 EA BINBYT .DB 234 ;example binary number to be converted into a BCD number +0027 0101 OUTBUF ;output-buffer memory location +0028 0101 +0029 0101 STACK .EQU 0FFFFH ;definition of stack pointer initialization address +0030 0101 .END +Number of errors = 0 diff --git a/files/bin2bcd.obj b/files/bin2bcd.obj new file mode 100644 index 0000000..42eb20b Binary files /dev/null and b/files/bin2bcd.obj differ diff --git a/files/interrupt.asm b/files/interrupt.asm new file mode 100644 index 0000000..2206796 --- /dev/null +++ b/files/interrupt.asm @@ -0,0 +1,26 @@ + JP 0100H ;jump to main routine + + .ORG 0038H ;interrupt routine + IN A,(01H) ;get the value from port 01H + OUT (02H),A ;echo that value to port 02H + EI ;enable interrupts + RETI ;return from interrupt + + .ORG 0100H ;main rountine + JR L1 ;jump over data area +L2: .DB 0AH ;data byte 1 + .DB 0BH ;data byte 2 + .DB 0CH ;data byte 3 + .DB 0DH ;data byte 4 + .DB 0EH ;data byte 5 +L1: LD D,05H ;load counter register D + LD BC,L2 ;load pointer register pair BC +L3: LD A,(BC) ;get the data byte + OUT (02H),A ;send it to port 02H + INC BC ;increment pointer BC + DEC D ;decrement counter D + JP NZ,L3 ;loop until all data bytes are sent + IM 1 ;set interrupt mode 1 + EI ;enable interrupts +L4: JP L4 ;loop forever + .END diff --git a/files/interrupt.hex b/files/interrupt.hex new file mode 100644 index 0000000..cc92954 --- /dev/null +++ b/files/interrupt.hex @@ -0,0 +1,5 @@ +:10000000C30001000000000000000000000000002C +:100030000000000000000000DB01D302FBED4D00DA +:1001000018050A0B0C0D0E16050102010AD3020395 +:0A01100015C20C01ED56FBC31701E8 +:00000001FF diff --git a/files/interrupt.lst b/files/interrupt.lst new file mode 100644 index 0000000..3b50ec9 --- /dev/null +++ b/files/interrupt.lst @@ -0,0 +1,27 @@ +0001 0000 C3 00 01 JP 0100H ;jump to main routine +0002 0003 +0003 0003 .ORG 0038H ;interrupt routine +0004 0038 DB 01 IN A,(01H) ;get the value from port 01H +0005 003A D3 02 OUT (02H),A ;echo that value to port 02H +0006 003C FB EI ;enable interrupts +0007 003D ED 4D RETI ;return from interrupt +0008 003F +0009 003F .ORG 0100H ;main rountine +0010 0100 18 05 JR L1 ;jump over data area +0011 0102 0A L2: .DB 0AH ;data byte 1 +0012 0103 0B .DB 0BH ;data byte 2 +0013 0104 0C .DB 0CH ;data byte 3 +0014 0105 0D .DB 0DH ;data byte 4 +0015 0106 0E .DB 0EH ;data byte 5 +0016 0107 16 05 L1: LD D,05H ;load counter register D +0017 0109 01 02 01 LD BC,L2 ;load pointer register pair BC +0018 010C 0A L3: LD A,(BC) ;get the data byte +0019 010D D3 02 OUT (02H),A ;send it to port 02H +0020 010F 03 INC BC ;increment pointer BC +0021 0110 15 DEC D ;decrement counter D +0022 0111 C2 0C 01 JP NZ,L3 ;loop until all data bytes are sent +0023 0114 ED 56 IM 1 ;set interrupt mode 1 +0024 0116 FB EI ;enable interrupts +0025 0117 C3 17 01 L4: JP L4 ;loop forever +0026 011A .END +Number of errors = 0 diff --git a/files/interrupt.obj b/files/interrupt.obj new file mode 100644 index 0000000..4d2946b Binary files /dev/null and b/files/interrupt.obj differ diff --git a/files/memfill.asm b/files/memfill.asm new file mode 100644 index 0000000..8ab7092 --- /dev/null +++ b/files/memfill.asm @@ -0,0 +1,9 @@ + LD A,0FFH ;initial value in register A + LD BC,0FF00H ;initial value in register pair BC +L1: LD (BC),A ;load value in A to the memory location addressed by BC + INC BC ;increment BC + DEC A ;decrement A + JP NZ,L1 ;loop until value in A is zero + LD (BC),A ;load value 00H to memory location FFFFH + HALT ;halt cpu + .END diff --git a/files/memfill.hex b/files/memfill.hex new file mode 100644 index 0000000..e29ad8d --- /dev/null +++ b/files/memfill.hex @@ -0,0 +1,2 @@ +:0D0000003EFF0100FF02033DC20500027635 +:00000001FF diff --git a/files/memfill.lst b/files/memfill.lst new file mode 100644 index 0000000..f4a063f --- /dev/null +++ b/files/memfill.lst @@ -0,0 +1,10 @@ +0001 0000 3E FF LD A,0FFH ;initial value in register A +0002 0002 01 00 FF LD BC,0FF00H ;initial value in register pair BC +0003 0005 02 L1: LD (BC),A ;load value in A to the memory location addressed by BC +0004 0006 03 INC BC ;increment BC +0005 0007 3D DEC A ;decrement A +0006 0008 C2 05 00 JP NZ,L1 ;loop until value in A is zero +0007 000B 02 LD (BC),A ;load value 00H to memory location FFFFH +0008 000C 76 HALT ;halt cpu +0009 000D .END +Number of errors = 0 diff --git a/files/memfill.obj b/files/memfill.obj new file mode 100644 index 0000000..b8249c6 Binary files /dev/null and b/files/memfill.obj differ diff --git a/files/memfill2.asm b/files/memfill2.asm new file mode 100644 index 0000000..b82c28f --- /dev/null +++ b/files/memfill2.asm @@ -0,0 +1,10 @@ +L2: IN A,(01H) ;get value on port 01H to be used for memory fill + LD D,0FFH ;initial value in counter register D + LD BC,0FF00H ;initial value in pointer register pair BC +L1: LD (BC),A ;load value in A to the memory location addressed by BC + INC BC ;increment pointer BC + DEC D ;decrement counter D + JP NZ,L1 ;loop until value in D is zero + LD (BC),A ;fill the last memory location FFFFH + JP L2 ;repeat routine + .END diff --git a/files/memfill2.hex b/files/memfill2.hex new file mode 100644 index 0000000..a73eb4e --- /dev/null +++ b/files/memfill2.hex @@ -0,0 +1,3 @@ +:10000000DB0116FF0100FF020315C2070002C30057 +:0100100000EF +:00000001FF diff --git a/files/memfill2.lst b/files/memfill2.lst new file mode 100644 index 0000000..73d2e0c --- /dev/null +++ b/files/memfill2.lst @@ -0,0 +1,11 @@ +0001 0000 DB 01 L2: IN A,(01H) ;get value on port 01H to be used for memory fill +0002 0002 16 FF LD D,0FFH ;initial value in counter register D +0003 0004 01 00 FF LD BC,0FF00H ;initial value in pointer register pair BC +0004 0007 02 L1: LD (BC),A ;load value in A to the memory location addressed by BC +0005 0008 03 INC BC ;increment pointer BC +0006 0009 15 DEC D ;decrement counter D +0007 000A C2 07 00 JP NZ,L1 ;loop until value in D is zero +0008 000D 02 LD (BC),A ;fill the last memory location FFFFH +0009 000E C3 00 00 JP L2 ;repeat routine +0010 0011 .END +Number of errors = 0 diff --git a/files/memfill2.obj b/files/memfill2.obj new file mode 100644 index 0000000..785b460 Binary files /dev/null and b/files/memfill2.obj differ diff --git a/files/z80basiccompilerreferencemanual.html b/files/z80basiccompilerreferencemanual.html new file mode 100644 index 0000000..7c43a34 --- /dev/null +++ b/files/z80basiccompilerreferencemanual.html @@ -0,0 +1,397 @@ + +
+ +
+
+
+
+
+
+
+
+
+ |