-
Notifications
You must be signed in to change notification settings - Fork 0
/
Auto3KInvaders.lst
228 lines (228 loc) · 12.2 KB
/
Auto3KInvaders.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
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
0001 0000 ; ********************************************************************
0002 0000 ; ZX80 (4K ROM) 3K 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 43 .WORD $433D ; 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 ; Autostart entry point
0017 4040 .ORG $4040
0018 4040 F3 DI ; disable interrupts to stop drawing the screen until we are ready
0019 4041 C3 0B 43 JP COPY ; jump to copy routine after data (to avoid being overwritten)
0020 4044
0021 4044 ; Code for 3K version of the Invaders game, assembled to run from $4000, same as the original type in listing
0022 4044 ; Original version from Macronics - http://www.fruitcake.plus.com/Sinclair/ZX80/FlickerFree/ZX80_SpaceIntruders_3K.htm
0023 4044 ; OUT $FF,A at $40B0 changed from original OUT $FE,A to work with ZX80 BASIC on the Minstrel 4D as well as on ZX80s.
0024 4044
0025 4044 CODE:
0026 4044 31 E0 44 FD .BYTE $31, $E0, $44, $FD, $21, $DB, $44, $FD, $36, $1A, $00, $FD, $36, $1C, $00, $FD ; $4000 - $400F
0026 4048 21 DB 44 FD
0026 404C 36 1A 00 FD
0026 4050 36 1C 00 FD
0027 4054 36 21 B2 21 .BYTE $36, $21, $B2, $21, $00, $45, $3E, $80, $06, $00, $77, $23, $77, $23, $77, $23 ; $4010 - $401F
0027 4058 00 45 3E 80
0027 405C 06 00 77 23
0027 4060 77 23 77 23
0028 4064 10 F8 21 E3 .BYTE $10, $F8, $21, $E3, $46, $3E, $00, $06, $04, $77, $23, $77, $23, $77, $23, $77 ; $4020 - $402F
0028 4068 46 3E 00 06
0028 406C 04 77 23 77
0028 4070 23 77 23 77
0029 4074 23 23 23 23 .BYTE $23, $23, $23, $23, $10, $F3, $7D, $FE, $7F, $23, $23, $23, $23, $20, $E6, $00 ; $4030 - $403F
0029 4078 10 F3 7D FE
0029 407C 7F 23 23 23
0029 4080 23 20 E6 00
0030 4084 11 20 00 21 .BYTE $11, $20, $00, $21, $FF, $44, $06, $19, $36, $76, $19, $10, $FB, $06, $04, $21 ; $4040 - $404F
0030 4088 FF 44 06 19
0030 408C 36 76 19 10
0030 4090 FB 06 04 21
0031 4094 FB 47 36 1C .BYTE $FB, $47, $36, $1C, $23, $10, $FB, $01, $04, $00, $21, $6C, $41, $11, $E0, $47 ; $4050 - $405F
0031 4098 23 10 FB 01
0031 409C 04 00 21 6C
0031 40A0 41 11 E0 47
0032 40A4 ED B0 21 BD .BYTE $ED, $B0, $21, $BD, $46, $0E, $08, $D9, $11, $88, $08, $3E, $20, $21, $21, $45 ; $4060 - $406F
0032 40A8 46 0E 08 D9
0032 40AC 11 88 08 3E
0032 40B0 20 21 21 45
0033 40B4 CD D0 40 11 .BYTE $CD, $D0, $40, $11, $04, $05, $3D, $2E, $61, $CD, $D0, $40, $11, $08, $88, $3D ; $4070 - $407F
0033 40B8 04 05 3D 2E
0033 40BC 61 CD D0 40
0033 40C0 11 08 88 3D
0034 40C4 2E A1 CD D0 .BYTE $2E, $A1, $CD, $D0, $40, $11, $06, $07, $3D, $2E, $E1, $CD, $D0, $40, $FD, $36 ; $4080 - $408F
0034 40C8 40 11 06 07
0034 40CC 3D 2E E1 CD
0034 40D0 D0 40 FD 36
0035 40D4 1D 10 FD 36 .BYTE $1D, $10, $FD, $36, $23, $30, $E1, $2C, $E5, $DB, $FE, $7D, $E6, $03, $CC, $10 ; $4090 - $409F
0035 40D8 23 30 E1 2C
0035 40DC E5 DB FE 7D
0035 40E0 E6 03 CC 10
0036 40E4 41 FE 01 CC .BYTE $41, $FE, $01, $CC, $70, $41, $FE, $02, $CC, $09, $42, $FE, $03, $CC, $5D, $42 ; $40A0 - $40AF
0036 40E8 70 41 FE 02
0036 40EC CC 09 42 FE
0036 40F0 03 CC 5D 42
0037 40F4 D3 FF 3E ED .BYTE $D3, $FF, $3E, $ED, $06, $19, $21, $FF, $C4, $CD, $AD, $01, $3E, $F0, $04, $2B ; $40B0 - $40BF
0037 40F8 06 19 21 FF
0037 40FC C4 CD AD 01
0037 4100 3E F0 04 2B
0038 4104 FD 35 23 CD .BYTE $FD, $35, $23, $CD, $AD, $01, $18, $CA, $00, $36, $80, $DD, $E1, $C3, $62, $40 ; $40C0 - $40CF
0038 4108 AD 01 18 CA
0038 410C 00 36 80 DD
0038 4110 E1 C3 62 40
0039 4114 06 04 72 23 .BYTE $06, $04, $72, $23, $77, $23, $73, $23, $23, $23, $23, $10, $F5, $C9, $06, $04 ; $40D0 - $40DF
0039 4118 77 23 73 23
0039 411C 23 23 23 10
0039 4120 F5 C9 06 04
0040 4124 2D 2D 7E D6 .BYTE $2D, $2D, $7E, $D6, $1C, $FA, $05, $41, $FE, $25, $F2, $05, $41, $11, $FE, $47 ; $40E0 - $40EF
0040 4128 1C FA 05 41
0040 412C FE 25 F2 05
0040 4130 41 11 FE 47
0041 4134 4F 1A 81 FE .BYTE $4F, $1A, $81, $FE, $26, $FA, $04, $41, $D6, $0A, $12, $0E, $01, $1D, $7B, $FE ; $40F0 - $40FF
0041 4138 26 FA 04 41
0041 413C D6 0A 12 0E
0041 4140 01 1D 7B FE
0042 4144 FA 20 EE 1C .BYTE $FA, $20, $EE, $1C, $12, $36, $80, $2C, $10, $D8, $FD, $35, $1D, $28, $BA, $C9 ; $4100 - $410F
0042 4148 12 36 80 2C
0042 414C 10 D8 FD 35
0042 4150 1D 28 BA C9
0043 4154 D9 7D E6 20 .BYTE $D9, $7D, $E6, $20, $28, $05, $11, $FF, $FF, $18, $04, $11, $01, $00, $7E, $7E ; $4110 - $411F
0043 4158 28 05 11 FF
0043 415C FF 18 04 11
0043 4160 01 00 7E 7E
0044 4164 FE 08 20 05 .BYTE $FE, $08, $20, $05, $7E, $C6, $80, $18, $07, $FE, $88, $00, $20, $02, $C6, $80 ; $4120 - $412F
0044 4168 7E C6 80 18
0044 416C 07 FE 88 00
0044 4170 20 02 C6 80
0045 4174 0C 0D 28 08 .BYTE $0C, $0D, $28, $08, $A7, $ED, $52, $77, $19, $00, $18, $08, $CB, $E9, $09, $77 ; $4130 - $413F
0045 4178 A7 ED 52 77
0045 417C 19 00 18 08
0045 4180 CB E9 09 77
0046 4184 ED 42 0E 00 .BYTE $ED, $42, $0E, $00, $19, $7E, $FE, $76, $20, $D6, $A7, $ED, $52, $A7, $ED, $52 ; $4140 - $414F
0046 4188 19 7E FE 76
0046 418C 20 D6 A7 ED
0046 4190 52 A7 ED 52
0047 4194 11 E0 FF 19 .BYTE $11, $E0, $FF, $19, $7C, $FE, $44, $20, $0C, $21, $BD, $46, $0C, $0D, $20, $02 ; $4150 - $415F
0047 4198 7C FE 44 20
0047 419C 0C 21 BD 46
0047 41A0 0C 0D 20 02
0048 41A4 0E 09 0D 18 .BYTE $0E, $09, $0D, $18, $04, $06, $03, $10, $FE, $D9, $00, $C9, $1C, $1C, $1C, $1C ; $4160 - $416F
0048 41A8 04 06 03 10
0048 41AC FE D9 00 C9
0048 41B0 1C 1C 1C 1C
0049 41B4 11 20 00 2A .BYTE $11, $20, $00, $2A, $F4, $44, $7C, $19, $A7, $20, $06, $06, $04, $10, $FE, $18 ; $4170 - $417F
0049 41B8 F4 44 7C 19
0049 41BC A7 20 06 06
0049 41C0 04 10 FE 18
0050 41C4 2E FE 47 20 .BYTE $2E, $FE, $47, $20, $0A, $7D, $FE, $BF, $38, $08, $C5, $C1, $D8, $18, $22, $7E ; $4180 - $418F
0050 41C8 0A 7D FE BF
0050 41CC 38 08 C5 C1
0050 41D0 D8 18 22 7E
0051 41D4 7E 00 7E A7 .BYTE $7E, $00, $7E, $A7, $28, $19, $CB, $BF, $FE, $0D, $20, $0F, $C1, $01, $04, $00 ; $4190 - $419F
0051 41D8 28 19 CB BF
0051 41DC FE 0D 20 0F
0051 41E0 C1 01 04 00
0052 41E4 21 FB 47 11 .BYTE $21, $FB, $47, $11, $6C, $41, $ED, $B0, $C3, $00, $40, $36, $94, $18, $07, $36 ; $41A0 - $41AF
0052 41E8 6C 41 ED B0
0052 41EC C3 00 40 36
0052 41F0 94 18 07 36
0053 41F4 80 62 6A C5 .BYTE $80, $62, $6A, $C5, $C1, $00, $22, $F4, $44, $2A, $F6, $44, $7C, $A7, $20, $06 ; $41B0 - $41BF
0053 41F8 C1 00 22 F4
0053 41FC 44 2A F6 44
0053 4200 7C A7 20 06
0054 4204 06 07 10 FE .BYTE $06, $07, $10, $FE, $18, $1F, $ED, $52, $7C, $FE, $44, $20, $06, $DD, $29, $06 ; $41C0 - $41CF
0054 4208 18 1F ED 52
0054 420C 7C FE 44 20
0054 4210 06 DD 29 06
0055 4214 02 18 EF 7E .BYTE $02, $18, $EF, $7E, $FE, $94, $20, $06, $FD, $36, $1A, $00, $18, $05, $DD, $29 ; $41D0 - $41DF
0055 4218 FE 94 20 06
0055 421C FD 36 1A 00
0055 4220 18 05 DD 29
0056 4224 A7 20 07 36 .BYTE $A7, $20, $07, $36, $80, $6A, $62, $00, $18, $0F, $FE, $80, $28, $09, $CD, $DE ; $41E0 - $41EF
0056 4228 80 6A 62 00
0056 422C 18 0F FE 80
0056 4230 28 09 CD DE
0057 4234 40 36 80 26 .BYTE $40, $36, $80, $26, $00, $18, $07, $36, $AE, $00, $06, $20, $10, $FE, $22, $F6 ; $41F0 - $41FF
0057 4238 00 18 07 36
0057 423C AE 00 06 20
0057 4240 10 FE 22 F6
0058 4244 44 7E 06 25 .BYTE $44, $7E, $06, $25, $10, $FE, $10, $FE, $C9, $FD, $6E, $21, $26, $47, $36, $80 ; $4200 - $420F
0058 4248 10 FE 10 FE
0058 424C C9 FD 6E 21
0058 4250 26 47 36 80
0059 4254 06 E7 0E FE .BYTE $06, $E7, $0E, $FE, $7D, $ED, $50, $CB, $52, $20, $07, $FE, $BC, $28, $01, $2C ; $4210 - $421F
0059 4258 7D ED 50 CB
0059 425C 52 20 07 FE
0059 4260 BC 28 01 2C
0060 4264 18 03 34 35 .BYTE $18, $03, $34, $35, $00, $CB, $62, $20, $07, $FE, $A2, $28, $01, $2D, $18, $03 ; $4220 - $422F
0060 4268 00 CB 62 20
0060 426C 07 FE A2 28
0060 4270 01 2D 18 03
0061 4274 34 35 00 FD .BYTE $34, $35, $00, $FD, $75, $21, $36, $8D, $3A, $F7, $44, $A7, $28, $04, $23, $2B ; $4230 - $423F
0061 4278 75 21 36 8D
0061 427C 3A F7 44 A7
0061 4280 28 04 23 2B
0062 4284 18 04 36 0D .BYTE $18, $04, $36, $0D, $CB, $42, $20, $09, $CB, $AD, $36, $AE, $22, $F6, $44, $18 ; $4240 - $424F
0062 4288 CB 42 20 09
0062 428C CB AD 36 AE
0062 4290 22 F6 44 18
0063 4294 05 34 35 DD .BYTE $05, $34, $35, $DD, $29, $00, $06, $4B, $10, $FE, $10, $FE, $C9, $2A, $F6, $44 ; $4250 - $425F
0063 4298 29 00 06 4B
0063 429C 10 FE 10 FE
0063 42A0 C9 2A F6 44
0064 42A4 36 80 2A F4 .BYTE $36, $80, $2A, $F4, $44, $36, $80, $11, $20, $00, $FD, $6E, $21, $26, $46, $FD ; $4260 - $426F
0064 42A8 44 36 80 11
0064 42AC 20 00 FD 6E
0064 42B0 21 26 46 FD
0065 42B4 36 20 00 7E .BYTE $36, $20, $00, $7E, $D6, $1C, $CB, $7F, $20, $1B, $D6, $0A, $CB, $7F, $28, $17 ; $4270 - $427F
0065 42B8 D6 1C CB 7F
0065 42BC 20 1B D6 0A
0065 42C0 CB 7F 28 17
0066 42C4 3A F5 44 A7 .BYTE $3A, $F5, $44, $A7, $20, $14, $3A, $FB, $44, $A7, $20, $11, $19, $22, $F4, $44 ; $4280 - $428F
0066 42C8 20 14 3A FB
0066 42CC 44 A7 20 11
0066 42D0 19 22 F4 44
0067 42D4 A7 ED 52 18 .BYTE $A7, $ED, $52, $18, $17, $34, $35, $C5, $DD, $E1, $C5, $DD, $E1, $7E, $FE, $80 ; $4290 - $429F
0067 42D8 17 34 35 C5
0067 42DC DD E1 C5 DD
0067 42E0 E1 7E FE 80
0068 42E4 20 04 18 00 .BYTE $20, $04, $18, $00, $18, $04, $FD, $36, $20, $FF, $00, $00, $A7, $ED, $52, $7C ; $42A0 - $42AF
0068 42E8 18 04 FD 36
0068 42EC 20 FF 00 00
0068 42F0 A7 ED 52 7C
0069 42F4 FE 44 20 BF .BYTE $FE, $44, $20, $BF, $21, $BF, $46, $06, $1F, $23, $7E, $FE, $80, $C2, $9D, $41 ; $42B0 - $42BF
0069 42F8 21 BF 46 06
0069 42FC 1F 23 7E FE
0069 4300 80 C2 9D 41
0070 4304 10 F7 06 19 .BYTE $10, $F7, $06, $19, $10, $FE, $C9 ; $42C0 - $42C6
0070 4308 10 FE C9
0071 430B
0072 430B ; copy routine located after code
0073 430B COPY:
0074 430B 01 C7 02 LD BC, $02C7 ; Copy $02C7 bytes
0075 430E 21 44 40 LD HL, CODE ; From CODE
0076 4311 11 00 40 LD DE, $4000 ; To $4000
0077 4314 ED B0 LDIR ; Make it so
0078 4316
0079 4316 C3 00 40 JP $4000 ; Jump to game entry point
0080 4319
0081 4319 ; file padded to be $xx3D bytes long
0082 4319
0083 433C .ORG $433C
0084 433C 80 .BYTE $80
0085 433D
0086 433D .END
0087 433D
0088 433D tasm: Number of errors = 0