-
Notifications
You must be signed in to change notification settings - Fork 0
/
Auto1KInvaders.lst
179 lines (179 loc) · 9.67 KB
/
Auto1KInvaders.lst
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
0001 0000 ; ********************************************************************
0002 0000 ; ZX80 (4K ROM) 1K Space Invaders / Space Intruders - Autostart loader
0003 0000 ; Dave Curran 2023-12-11
0004 0000 ; ********************************************************************
0005 0000
0006 0000 ; Autostart program header - https://problemkaputt.de/zxdocs.htm#zx80zx81cassettefilecontent
0007 0000
0008 4000 .ORG $4000
0009 4000 00 00 00 00 .FILL $08, $00 ; 4000h 8 x 00h ;System area: Zerofilled stuff
0009 4004 00 00 00 00
0010 4008 2C 40 .WORD $402C ; 4008h 402Ch ;System area: Pointer to VARS
0011 400A 3D 42 .WORD $423D ; 400Ah nn3Dh ;System area: Pointer to End of file
0012 400C 00 00 00 00 .FILL $1C, $00 ; 400Ch 1Ch x 00h ;System area: Zerofilled stuff
0012 4010 00 00 00 00
0012 4014 00 00 00 00
0012 4018 00 00 00 00
0012 401C 00 00 00 00
0012 4020 00 00 00 00
0012 4024 00 00 00 00
0013 4028 00 01 65 76 .BYTE $00, $01, $65, $76 ; 4028h 00h,01h,65h,76h ;BASIC program: Line 0001, LD H,L opcode, NEWLINE
0014 402C 80 .BYTE $80 ; 402Ch 80h ;VARS area: End code
0015 402D
0016 402D ; Setup the copy command in the padding before $4040
0017 402D SETUP:
0018 402D 01 F0 01 LD BC, $01F0 ; Copy $01F0 bytes
0019 4030 21 43 40 LD HL, CODE ; From code
0020 4033 11 00 40 LD DE, $4000 ; To $4000
0021 4036
0022 4036 C3 33 42 JP COPY ; jump to copy routine after data (to avoid being overwritten)
0023 4039
0024 4039 ; Autostart entry point
0025 4040 .ORG $4040
0026 4040 F3 DI ; disable interrupts to stop drawing the screen until we are ready
0027 4041 18 EA JR SETUP ; setup to copy the program
0028 4043
0029 4043 ; Code for 1K version of the Invaders game, assembled to run from $4000, same as the original type in listing
0030 4043 ; Original version from Macronics - http://www.fruitcake.plus.com/Sinclair/ZX80/FlickerFree/ZX80_SpaceIntruders_1K.htm
0031 4043 ; OUT $FF,A at $4081 changed from original OUT $FE,A to work with ZX80 BASIC on the Minstrel 4D as well as on ZX80s.
0032 4043
0033 4043 CODE:
0034 4043
0035 4043 FD 21 DB 41 .BYTE $FD, $21, $DB, $41, $31, $FF, $43, $11, $1C, $1C, $D5, $11, $80, $80, $06, $2F ; $4000 - $400F
0035 4047 31 FF 43 11
0035 404B 1C 1C D5 11
0035 404F 80 80 06 2F
0036 4053 D5 10 FD 21 .BYTE $D5, $10, $FD, $21, $00, $00, $06, $10, $D5, $E5, $E5, $D5, $10, $FA, $06, $90 ; $4010 - $401F
0036 4057 00 00 06 10
0036 405B D5 E5 E5 D5
0036 405F 10 FA 06 90
0037 4063 D5 10 FD 11 .BYTE $D5, $10, $FD, $11, $CB, $50, $D5, $E5, $E5, $E5, $E5, $11, $20, $00, $21, $FF ; $4020 - $402F
0037 4067 CB 50 D5 E5
0037 406B E5 E5 E5 11
0037 406F 20 00 21 FF
0038 4073 41 06 11 36 .BYTE $41, $06, $11, $36, $76, $19, $10, $FB, $2A, $E4, $40, $22, $E0, $43, $21, $FD ; $4030 - $403F
0038 4077 76 19 10 FB
0038 407B 2A E4 40 22
0038 407F E0 43 21 FD
0039 4083 42 0E 08 D9 .BYTE $42, $0E, $08, $D9, $3E, $02, $21, $21, $42, $06, $04, $36, $07, $2C, $36, $01 ; $4040 - $404F
0039 4087 3E 02 21 21
0039 408B 42 06 04 36
0039 408F 07 2C 36 01
0040 4093 2C 36 06 2C .BYTE $2C, $36, $06, $2C, $2C, $2C, $2C, $10, $F2, $2E, $61, $3D, $20, $EB, $FD, $36 ; $4050 - $405F
0040 4097 2C 2C 2C 10
0040 409B F2 2E 61 3D
0040 409F 20 EB FD 36
0041 40A3 20 08 11 20 .BYTE $20, $08, $11, $20, $00, $0E, $80, $E1, $2C, $E5, $DB, $FE, $7D, $E6, $03, $28 ; $4060 - $406F
0041 40A7 00 0E 80 E1
0041 40AB 2C E5 DB FE
0041 40AF 7D E6 03 28
0042 40B3 25 FE 01 28 .BYTE $25, $FE, $01, $28, $7A, $FE, $02, $CA, $66, $41, $FE, $03, $CA, $AD, $41, $10 ; $4070 - $407F
0042 40B7 7A FE 02 CA
0042 40BB 66 41 FE 03
0042 40BF CA AD 41 10
0043 40C3 FE D3 FF 3E .BYTE $FE, $D3, $FF, $3E, $ED, $06, $11, $21, $FF, $C1, $CD, $AD, $01, $3E, $EB, $04 ; $4080 - $408F
0043 40C7 ED 06 11 21
0043 40CB FF C1 CD AD
0043 40CF 01 3E EB 04
0044 40D3 2B CD AD 01 .BYTE $2B, $CD, $AD, $01, $18, $CC, $D9, $7D, $E6, $20, $28, $05, $11, $FF, $FF, $18 ; $4090 - $409F
0044 40D7 18 CC D9 7D
0044 40DB E6 20 28 05
0044 40DF 11 FF FF 18
0045 40E3 04 11 01 00 .BYTE $04, $11, $01, $00, $7E, $7E, $0C, $0D, $28, $08, $A7, $ED, $52, $77, $19, $00 ; $40A0 - $40AF
0045 40E7 7E 7E 0C 0D
0045 40EB 28 08 A7 ED
0045 40EF 52 77 19 00
0046 40F3 18 08 CB E9 .BYTE $18, $08, $CB, $E9, $09, $77, $ED, $42, $0E, $00, $19, $7E, $FE, $76, $20, $E6 ; $40B0 - $40BF
0046 40F7 09 77 ED 42
0046 40FB 0E 00 19 7E
0046 40FF FE 76 20 E6
0047 4103 A7 ED 52 A7 .BYTE $A7, $ED, $52, $A7, $ED, $52, $11, $E0, $FF, $19, $7C, $FE, $41, $20, $0C, $21 ; $40C0 - $40CF
0047 4107 ED 52 11 E0
0047 410B FF 19 7C FE
0047 410F 41 20 0C 21
0048 4113 FD 42 0C 0D .BYTE $FD, $42, $0C, $0D, $20, $02, $0E, $09, $0D, $18, $04, $06, $03, $10, $FE, $D9 ; $40D0 - $40DF
0048 4117 20 02 0E 09
0048 411B 0D 18 04 06
0048 411F 03 10 FE D9
0049 4123 06 55 18 9B .BYTE $06, $55, $18, $9B, $1C, $1C, $2A, $FD, $43, $22, $E4, $40, $C3, $00, $40, $2A ; $40E0 - $40EF
0049 4127 1C 1C 2A FD
0049 412B 43 22 E4 40
0049 412F C3 00 40 2A
0050 4133 F7 41 7C A7 .BYTE $F7, $41, $7C, $A7, $19, $7C, $28, $02, $FE, $44, $28, $0C, $7E, $A7, $28, $0B ; $40F0 - $40FF
0050 4137 19 7C 28 02
0050 413B FE 44 28 0C
0050 413F 7E A7 28 0B
0051 4143 FE 0D 28 E2 .BYTE $FE, $0D, $28, $E2, $36, $94, $18, $07, $19, $18, $01, $71, $62, $C5, $C1, $22 ; $4100 - $410F
0051 4147 36 94 18 07
0051 414B 19 18 01 71
0051 414F 62 C5 C1 22
0052 4153 F7 41 11 E0 .BYTE $F7, $41, $11, $E0, $FF, $2A, $F9, $41, $7C, $A7, $19, $7C, $28, $02, $FE, $41 ; $4110 - $411F
0052 4157 FF 2A F9 41
0052 415B 7C A7 19 7C
0052 415F 28 02 FE 41
0053 4163 28 0F 7E FE .BYTE $28, $0F, $7E, $FE, $94, $28, $19, $A7, $28, $1A, $B9, $20, $1A, $36, $AE, $18 ; $4120 - $412F
0053 4167 94 28 19 A7
0053 416B 28 1A B9 20
0053 416F 1A 36 AE 18
0054 4173 06 06 04 10 .BYTE $06, $06, $04, $10, $FE, $26, $00, $22, $F9, $41, $06, $3D, $10, $FE, $18, $A2 ; $4130 - $413F
0054 4177 FE 26 00 22
0054 417B F9 41 06 3D
0054 417F 10 FE 18 A2
0055 4183 FD 36 1D 00 .BYTE $FD, $36, $1D, $00, $71, $18, $EE, $2D, $2D, $06, $05, $71, $2C, $10, $FC, $2A ; $4140 - $414F
0055 4187 71 18 EE 2D
0055 418B 2D 06 05 71
0055 418F 2C 10 FC 2A
0056 4193 FD 43 24 7C .BYTE $FD, $43, $24, $7C, $FE, $26, $20, $03, $26, $1C, $2C, $22, $FD, $43, $FD, $35 ; $4150 - $415F
0056 4197 FE 26 20 03
0056 419B 26 1C 2C 22
0056 419F FD 43 FD 35
0057 41A3 20 CA 3E 40 .BYTE $20, $CA, $3E, $40, $18, $CF, $FD, $6E, $22, $26, $43, $71, $06, $E7, $0E, $FE ; $4160 - $416F
0057 41A7 18 CF FD 6E
0057 41AB 22 26 43 71
0057 41AF 06 E7 0E FE
0058 41B3 7D ED 50 CB .BYTE $7D, $ED, $50, $CB, $52, $20, $07, $FE, $DC, $28, $01, $2C, $18, $03, $34, $35 ; $4170 - $417F
0058 41B7 52 20 07 FE
0058 41BB DC 28 01 2C
0058 41BF 18 03 34 35
0059 41C3 00 CB 62 20 .BYTE $00, $CB, $62, $20, $07, $FE, $C2, $28, $01, $2D, $18, $03, $34, $35, $00, $FD ; $4180 - $418F
0059 41C7 07 FE C2 28
0059 41CB 01 2D 18 03
0059 41CF 34 35 00 FD
0060 41D3 75 22 36 0D .BYTE $75, $22, $36, $0D, $3A, $FA, $41, $A7, $20, $09, $CB, $42, $20, $07, $22, $F9 ; $4190 - $419F
0060 41D7 3A FA 41 A7
0060 41DB 20 09 CB 42
0060 41DF 20 07 22 F9
0061 41E3 41 18 04 7E .BYTE $41, $18, $04, $7E, $7E, $C5, $C1, $06, $3E, $10, $FE, $18, $91, $2A, $F9, $41 ; $41A0 - $41AF
0061 41E7 7E C5 C1 06
0061 41EB 3E 10 FE 18
0061 41EF 91 2A F9 41
0062 41F3 71 2A F7 41 .BYTE $71, $2A, $F7, $41, $71, $FD, $6E, $22, $26, $42, $19, $FD, $72, $21, $7E, $FE ; $41B0 - $41BF
0062 41F7 71 FD 6E 22
0062 41FB 26 42 19 FD
0062 41FF 72 21 7E FE
0063 4203 01 20 11 3A .BYTE $01, $20, $11, $3A, $F8, $41, $A7, $20, $0E, $3A, $FC, $41, $A7, $20, $0D, $22 ; $41C0 - $41CF
0063 4207 F8 41 A7 20
0063 420B 0E 3A FC 41
0063 420F A7 20 0D 22
0064 4213 F7 41 18 0F .BYTE $F7, $41, $18, $0F, $C5, $DD, $E1, $7E, $FE, $80, $20, $04, $18, $00, $18, $03 ; $41D0 - $41DF
0064 4217 C5 DD E1 7E
0064 421B FE 80 20 04
0064 421F 18 00 18 03
0065 4223 FD 73 21 A7 .BYTE $FD, $73, $21, $A7, $ED, $52, $7C, $FE, $41, $20, $D3, $06, $F1, $7E, $18, $BB ; $41E0 - $41EF
0065 4227 ED 52 7C FE
0065 422B 41 20 D3 06
0065 422F F1 7E 18 BB
0066 4233
0067 4233 ; actual copy command located after code
0068 4233 COPY:
0069 4233 ED B0 LDIR ; Make it so
0070 4235
0071 4235 C3 00 40 JP $4000 ; Jump to game entry point
0072 4238
0073 4238 ; file padded to be $xx3D bytes long
0074 4238
0075 423C .ORG $423C
0076 423C 80 .BYTE $80
0077 423D
0078 423D .END
tasm: Number of errors = 0