forked from brendanalford/zx-diagnostics
-
Notifications
You must be signed in to change notification settings - Fork 0
/
romtables.asm
306 lines (176 loc) · 6.62 KB
/
romtables.asm
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
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
;
; ZX Diagnostics - fixing ZX Spectrums in the 21st Century
; https://github.com/brendanalford/zx-diagnostics
;
; Original code by Dylan Smith
; Modifications and 128K support by Brendan Alford
;
; This code is free software; you can redistribute it and/or
; modify it under the terms of the GNU Lesser General Public
; License as published by the Free Software Foundation;
; version 2.1 of the License.
;
; This code is distributed in the hope that it will be useful,
; but WITHOUT ANY WARRANTY; without even the implied warranty of
; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
; Lesser General Public License for more details.
;
; romtables.asm
;
;
; Table to define ROM signatures.
; Format is initial ROM checksum (ROM 0 in 128 machines),
; identification string, upper RAM test routine location
; and address of further ROM test table (0000 if 48K machine)
;
rom_signature_table
defw 0x44e2, str_rom48k, test_48k, 0x0000
defw 0x5eb1, str_rom48kesp, test_48k, 0x0000
defw 0x62c7, str_rom128k, test_128k, rom_table_rom128k
defw 0xdbaa, str_romplus2, test_plus2, rom_table_romplus2
defw 0xe157, str_rom128espv1, test_128k, rom_table_rom128espv1
defw 0x7a1f, str_rom128espv2, test_128k, rom_table_rom128espv2
defw 0xc563, str_romplus2esp, test_plus2, rom_table_romplus2esp
defw 0xda64, str_romplus2fra, test_plus2, rom_table_romplus2fra
IFNDEF SLAMTEST
defw 0x26f5, str_romplus2a, test_plus3, rom_table_romplus2a
defw 0x1f83, str_romplus3, test_plus3, rom_table_romplus3
defw 0x95b8, str_romplus3espv40, test_plus3, rom_table_romplus3espv40
defw 0x29c0, str_romplus3espv41, test_plus3, rom_table_romplus3espv41
IFNDEF SAVEMEM
; Spectrum 128 Derby 1.4 ROM (Development machine)
defw 0x5129, str_rom128derby14, test_128k, rom_table_rom128derby14
; Spectrum 128 Derby 4.02 ROM (Development machine)
defw 0xe9f5, str_rom128derby402, test_128k, rom_table_rom128derby402
; Some +3E ROM sets that might be out there
defw 0xdba9, str_romplus3e_v1_38, test_plus3, rom_table_romplus3e_v1_38
defw 0x3710, str_romplus3e_v1_38esp, test_plus3, rom_table_romplus3e_v1_38esp
defw 0x1d79, str_romplus3e_v1_43, test_plus3, rom_table_romplus3e_v1_43
defw 0xf1c0, str_romplus3e_v1_43esp, test_plus3, rom_table_romplus3e_v1_43esp
; Soviet clones that some people are inexplicably fond of :)
defw 0x26f0, str_orelbk08, test_48kgeneric, 0x0000
; Beckman 48K
defw 0x870c, str_rom48kbeckman, test_48k, 0x0000
; Microdigital clones
defw 0x55b9, str_romtk95, test_48kgeneric, 0x0000
defw 0xf9e4, str_romtk90xv1, test_48kgeneric, 0x0000
defw 0x6074, str_romtk90xv2, test_48kgeneric, 0x0000
; Timex 2048/2068
defw 0xac0c, str_romts2048, test_48kgeneric, 0x0000
defw 0x3246, str_romts2068, test_48kgeneric, 0x0000
; Gosh Wonderful ROM (assume 48K)
defw 0x8116, str_rom48gw03, test_48k, 0x0000
ENDIF
ENDIF
; End of ROM table
defw 0x0000
;
; Tables specifying rest of checksums for a particular machine.
; Format starts with checksum for ROM 1, fail IC designation,
; and continues with checksum for further ROMS, or 0000 if no
; more ROMs are expected.
;
rom_table_rom128k
defw 0xbe09, str_rom128_fail, 0x0000
rom_table_romplus2
defw 0x27f9, str_romplus2_fail, 0x0000
rom_table_rom128espv1
defw 0x8413, str_rom128_fail, 0x0000
rom_table_rom128espv2
defw 0x8413, str_rom128_fail, 0x0000
rom_table_romplus2esp
defw 0xadbb, str_romplus2_fail, 0x0000
rom_table_romplus2fra
defw 0x9a23, str_romplus2_fail, 0x0000
IFNDEF SLAMTEST
rom_table_romplus3espv40
defw 0xba48, str_romplus3_a_fail, 0x05c5, str_romplus3_b_fail, 0xd49d, str_romplus3_b_fail, 0x0000
rom_table_romplus3espv41
defw 0x89c8, str_romplus3_a_fail, 0xf579, str_romplus3_b_fail, 0x8a84, str_romplus3_b_fail, 0x0000
rom_table_romplus2a
defw 0x4d5b, str_romplus3_a_fail, 0xb3e4, str_romplus3_b_fail, 0x5d75, str_romplus3_b_fail, 0x0000
rom_table_romplus3
defw 0x4e7b, str_romplus3_a_fail, 0x3388, str_romplus3_b_fail, 0x4f34, str_romplus3_b_fail, 0x0000
IFNDEF SAVEMEM
rom_table_rom128derby14
defw 0x8c11, str_rom128_fail, 0x0000
rom_table_rom128derby402
defw 0xbe09, str_rom128_fail, 0x0000
rom_table_romplus3e_v1_38
defw 0xa8e8, str_romplus3_a_fail, 0xe579, str_romplus3_b_fail, 0x4f34, str_romplus3_b_fail, 0x0000
rom_table_romplus3e_v1_38esp
defw 0xa6d0, str_romplus3_a_fail, 0xff63, str_romplus3_b_fail, 0x8a84, str_romplus3_b_fail, 0x0000
rom_table_romplus3e_v1_43
defw 0x7899, str_romplus3_a_fail, 0x8571, str_romplus3_b_fail, 0x4f34, str_romplus3_b_fail, 0x0000
rom_table_romplus3e_v1_43esp
defw 0x9035, str_romplus3_a_fail, 0x2876, str_romplus3_b_fail, 0x8a84, str_romplus3_b_fail, 0x0000
ENDIF
ENDIF
str_rom128_fail
defb "IC5", 0
str_romplus2_fail
defb "IC8", 0
str_romplus3_a_fail
defb "IC7", 0
str_romplus3_b_fail
defb "IC8", 0
;
; ROM ID Strings. Tokenisation of strings 'Spectrum', 'ROM...' and 'Spanish'
; performed to save space.
;
str_rom48k
defb TKN_SPECTRUM, " 16/48K ", TKN_ROM, 0
str_rom48kesp
defb TKN_SPECTRUM, " 48K (", TKN_SPANISH, ") ", TKN_ROM, 0
str_rom128k
defb TKN_SPECTRUM, " 128K ", TKN_ROM, 0
str_romplus2
defb TKN_SPECTRUM, " +2 (Grey) ", TKN_ROM, 0
str_rom128espv1
defb TKN_SPECTRUM, " 128K (", TKN_SPANISH, " v1) ", TKN_ROM, 0
str_rom128espv2
defb TKN_SPECTRUM, " 128K (", TKN_SPANISH, " v2) ", TKN_ROM, 0
str_romplus2esp
defb TKN_SPECTRUM, " +2 (", TKN_SPANISH, ") ", TKN_ROM, 0
str_romplus2fra
defb TKN_SPECTRUM, " +2 (French) ", TKN_ROM, 0
IFNDEF SLAMTEST
str_romplus3
defb TKN_SPECTRUM, " +3 (v4.0) ", TKN_ROM, 0
str_romplus2a
defb TKN_SPECTRUM, " +2A (v4.1) ", TKN_ROM, 0
str_romplus3espv40
defb TKN_SPECTRUM, " +2A/+3 (", TKN_SPANISH, " v4.0) ", TKN_ROM, 0
str_romplus3espv41
defb TKN_SPECTRUM, " +2A/+3 (", TKN_SPANISH, " v4.1) ", TKN_ROM, 0
IFNDEF SAVEMEM
str_rom128derby14
defb TKN_SPECTRUM, " 128 Dev, Derby 1.4 ", TKN_ROM, 0
str_rom128derby402
defb TKN_SPECTRUM, " 128 Dev, Derby 4.02 ", TKN_ROM, 0
str_romplus3e_v1_38
defb TKN_SPECTRUM, " +3E v1.38 ", TKN_ROM, 0
str_romplus3e_v1_38esp
defb TKN_SPECTRUM, " +3E v1.38 (", TKN_SPANISH, ") ", TKN_ROM, 0
str_romplus3e_v1_43
defb TKN_SPECTRUM, " +3E v1.43 ", TKN_ROM, 0
str_romplus3e_v1_43esp
defb TKN_SPECTRUM, " +3E v1.43 (", TKN_SPANISH, ") ", TKN_ROM, 0
str_orelbk08
defb "Orel BK-08 ", TKN_ROM, 0
str_rom48kbeckman
defb "Beckman ", TKN_SPECTRUM, " 48K ", TKN_ROM, 0
str_romtk90xv1
defb TKN_MICRODIGITAL," TK90X v1 ", TKN_ROM, 0
str_romtk90xv2
defb TKN_MICRODIGITAL," TK90X v2 ", TKN_ROM, 0
str_romtk95
defb TKN_MICRODIGITAL," TK95 ", TKN_ROM, 0
str_rom48gw03
defb "Gosh Wonderful 48K ", TKN_ROM, 0
str_romts2048
defb "Timex TS2048 ", TKN_ROM, 0
str_romts2068
defb "Timex TS2068 ", TKN_ROM, 0
ENDIF
ENDIF