Files
Z8C-Homebrew-Computer/OperatingSystem/software/zout/test.lst
2024-01-12 13:29:20 +01:00

1851 lines
76 KiB
Plaintext

1: .include "extern_symbols.s" ;include monitor symbols.
**** include/extern_symbols.s ****
1: ;This file is generated by the build script.
2: ;Do not make any changes here!
3:
4: - 00D0 ADDR_RTC equ 0xD0
5: - 0152 A_RTS_OFF equ 0x152
6: - 015B A_RTS_ON equ 0x15B
7: - 0050 BOOT_PHASE0 equ 0x50
8: - 006E BOOT_PHASE1 equ 0x6E
9: - 0077 BOOT_PHASE1_LOOP equ 0x77
10: - 0082 BOOT_PHASE2 equ 0x82
11: - 17EB COMMAND equ 0x17EB
12: - 1826 COMMAND_BACKSPACE equ 0x1826
13: - 176B COMMAND_LUT equ 0x176B
14: - 184C COMMAND_PROCESS equ 0x184C
15: - 1887 COMMAND_PROCESS_FOUND equ 0x1887
16: - 184F COMMAND_PROCESS_LOOP equ 0x184F
17: - 1858 COMMAND_PROCESS_LOOP_STR1 equ 0x1858
18: - 186E COMMAND_PROCESS_LOOP_STR2 equ 0x186E
19: - 1873 COMMAND_PROCESS_NEXT_ENTRY equ 0x1873
20: - 1872 COMMAND_PROCESS_NEXT_ENTRYI equ 0x1872
21: - 187E COMMAND_PROCESS_NOT_FOUND equ 0x187E
22: - 17F7 COMMAND_READ equ 0x17F7
23: - 009E CONSOLE_INIT equ 0x9E
24: - 009E CONSOLE_INIT_CTC equ 0x9E
25: - 00A6 CONSOLE_INIT_SIO equ 0xA6
26: - 00F9 CS_APU_CTRL equ 0xF9
27: - 00F8 CS_APU_DATA equ 0xF8
28: - 0000 CS_BANK equ 0x00
29: - 0004 CS_CTC_0 equ 0x04
30: - 0005 CS_CTC_1 equ 0x05
31: - 0006 CS_CTC_2 equ 0x06
32: - 0007 CS_CTC_3 equ 0x07
33: - 0001 CS_DIP equ 0x01
34: - 0033 CS_PIA_CR equ 0x33
35: - 0030 CS_PIA_PA equ 0x30
36: - 0031 CS_PIA_PB equ 0x31
37: - 0032 CS_PIA_PC equ 0x32
38: - 00F6 CS_PIO_AC equ 0xF6
39: - 00F4 CS_PIO_AD equ 0xF4
40: - 00F7 CS_PIO_BC equ 0xF7
41: - 00F5 CS_PIO_BD equ 0xF5
42: - 0009 CS_SIO_A_C equ 0x09
43: - 0008 CS_SIO_A_D equ 0x08
44: - 000B CS_SIO_B_C equ 0x0B
45: - 000A CS_SIO_B_D equ 0x0A
46: - 0164 DHEX_TO_BYTE equ 0x164
47: - 0180 DHEX_TO_BYTE_FAILED equ 0x180
48: - 189D ERR_SYNTAX equ 0x189D
49: - 0D04 EXEC_RST_08 equ 0xD04
50: - 0D08 EXEC_RST_10 equ 0xD08
51: - 0D14 EXEC_RST_18 equ 0xD14
52: - 0184 HEX_TO_BIN equ 0x184
53: - 0192 HEX_TO_BIN_2 equ 0x192
54: - 0199 HEX_TO_INVALID_2 equ 0x199
55: - 00EC IDE_CMD_IDENT equ 0xEC
56: - 0020 IDE_CMD_READSEC equ 0x20
57: - 1275 IDE_DEV_TABLE equ 0x1275
58: - 0040 IDE_RD equ 0x40
59: - 0016 IDE_REG_ALTSTS equ 0x16
60: - 000F IDE_REG_CMDSTS equ 0x0F
61: - 0008 IDE_REG_DATA equ 0x08
62: - 0017 IDE_REG_DRVADDR equ 0x17
63: - 0009 IDE_REG_ERROR equ 0x09
64: - 000D IDE_REG_HCYL equ 0x0D
65: - 000E IDE_REG_HEAD equ 0x0E
66: - 000B IDE_REG_LBA0 equ 0x0B
67: - 000C IDE_REG_LBA1 equ 0x0C
68: - 000D IDE_REG_LBA2 equ 0x0D
69: - 000E IDE_REG_LBA3 equ 0x0E
70: - 000C IDE_REG_LCYL equ 0x0C
71: - 000A IDE_REG_SECTOR equ 0x0A
72: - 000B IDE_REG_SSECTOR equ 0x0B
73: - 0080 IDE_RST equ 0x80
74: - 0020 IDE_WR equ 0x20
75: - 0001 IIC_CLK equ 0x01
76: - 0002 IIC_DATA equ 0x02
77: - 001B INT_VEC equ 0x1B
78: - 402B IN_BUFFER equ 0x402B
79: - 0040 IO_AY0_ADDR equ 0x40
80: - 0041 IO_AY0_DATA equ 0x41
81: - 0042 IO_AY1_ADDR equ 0x42
82: - 0043 IO_AY1_DATA equ 0x43
83: - 0020 IO_REG0 equ 0x20
84: - 0025 IO_RTC_AMPM equ 0x25
85: - 002D IO_RTC_CTR_D equ 0x2D
86: - 002E IO_RTC_CTR_E equ 0x2E
87: - 002F IO_RTC_CTR_F equ 0x2F
88: - 0026 IO_RTC_DAY0 equ 0x26
89: - 0027 IO_RTC_DAY1 equ 0x27
90: - 0024 IO_RTC_HOUR equ 0x24
91: - 0022 IO_RTC_MIN0 equ 0x22
92: - 0023 IO_RTC_MIN1 equ 0x23
93: - 0028 IO_RTC_MON0 equ 0x28
94: - 0029 IO_RTC_MON1 equ 0x29
95: - 0020 IO_RTC_SEC0 equ 0x20
96: - 0021 IO_RTC_SEC1 equ 0x21
97: - 002C IO_RTC_WEEK equ 0x2C
98: - 002B IO_RTC_YEAR1 equ 0x2B
99: - 002A IO_RTC_YERR0 equ 0x2A
100: - 4117 MEM_IDE_BUFFER equ 0x4117
101: - 402C MEM_IDE_DEVICE equ 0x402C
102: - 4036 MEM_IDE_DEV_TABLE equ 0x4036
103: - 4317 MEM_IDE_FSBUFFER equ 0x4317
104: - 402E MEM_IDE_PARTITION equ 0x402E
105: - 4032 MEM_IDE_POINTER equ 0x4032
106: - 4076 MEM_IDE_SELECTED equ 0x4076
107: - 402D MEM_IDE_STATUS equ 0x402D
108: - 4077 MEM_IDE_STRING_0 equ 0x4077
109: - 409F MEM_IDE_STRING_1 equ 0x409F
110: - 40C7 MEM_IDE_STRING_2 equ 0x40C7
111: - 40EF MEM_IDE_STRING_3 equ 0x40EF
112: - 014A MSG_CLEAR equ 0x14A
113: - 1896 NOT_IMPLEMENTED equ 0x1896
114: - 18F8 OP_CALL equ 0x18F8
115: - 1A8C OP_CLR equ 0x1A8C
116: - 1979 OP_DASM equ 0x1979
117: - 1918 OP_DUMP equ 0x1918
118: - 18DF OP_EXEC equ 0x18DF
119: - 1A40 OP_IIC_IN equ 0x1A40
120: - 19E0 OP_IIC_OUT equ 0x19E0
121: - 19A9 OP_IO_IN equ 0x19A9
122: - 19BF OP_IO_OUT equ 0x19BF
123: - 1CA1 OP_LSDSK equ 0x1CA1
124: - 1A90 OP_RTIME equ 0x1A90
125: - 1CA5 OP_SELDSK equ 0x1CA5
126: - 1948 OP_SET equ 0x1948
127: - 1C28 OP_STIME equ 0x1C28
128: - 1D12 POST_CHECK_APU equ 0x1D12
129: - 1D3D POST_CHECK_IDE_30 equ 0x1D3D
130: - 1D50 POST_CHECK_IDE_40 equ 0x1D50
131: - 1CED POST_CHECK_PIO equ 0x1CED
132: - 1CDD POST_START equ 0x1CDD
133: - 1D6A POST_TEST_RTC equ 0x1D6A
134: - 4110 PRG_RAM_START equ 0x4110
135: - FF00 PRG_RAM_TOP equ 0xFF00
136: - 4000 PROG_MEM_START equ 0x4000
137: - 0100 PROG_ROM_START equ 0x100
138: - 0000 RST_00 equ 0x00
139: - 0008 RST_08 equ 0x08
140: - 0010 RST_10 equ 0x10
141: - 0018 RST_18 equ 0x18
142: - FFFF STACK_RAM_TOP equ 0xFFFF
143: - 0000 START_ROM equ 0x00
144: - 019B STRCONV_BYTES_TO_HEX equ 0x19B
145: - 01AA STRCONV_BYTES_TO_HEX_1 equ 0x1AA
146: - 01B4 STRCONV_BYTES_TO_HEX_2 equ 0x1B4
147: - 1E6F STR_Banner_Start equ 0x1E6F
148: - 1724 STR_PD_HEADER equ 0x1724
149: - 4010 SYS_BUF_START equ 0x4010
150: - 4000 SYS_RAM_START equ 0x4000
151: - 0018 VAR_CONSOLE_BAUD equ 0x18
152: - 000F VAR_CONSOLE_CONF equ 0x0F
153: - 0080 VDP_MEM equ 0x80
154: - 0081 VDP_REG equ 0x81
155: - 1895 _COMMAND_PROCESS_FOUND equ 0x1895
156: - 1917 _OP_CALL equ 0x1917
157: - 1A25 _OP_IIC_ACK_ERR equ 0x1A25
158: - 1A2C _OP_IIC_ACK_ERR_str equ 0x1A2C
159: - 1A72 _OP_IIC_IN_LOOP equ 0x1A72
160: - 1A7F _OP_IIC_IN_LOOP_TEXT equ 0x1A7F
161: - 19F6 _OP_IIC_OUT_LOOP equ 0x19F6
162: - 1A12 _OP_IIC_OUT_SEND equ 0x1A12
163: - 1A93 _OP_RTIME_NN equ 0x1A93
164: - 1B4B _OP_RTIME_RD_CMD equ 0x1B4B
165: - 1CB4 _OP_SELDSK_INVALID equ 0x1CB4
166: - 1CC4 _OP_SELDSK_INVALID_STR equ 0x1CC4
167: - 1960 _OP_SET_LOOP equ 0x1960
168: - 1BEE _OP_STIME_INVALID equ 0x1BEE
169: - 1C05 _OP_STIME_PROMPT equ 0x1C05
170: - 1C1D _OP_STIME_PROMPT_ERR equ 0x1C1D
171: - 1B4C _OP_STIME_STR_DAY equ 0x1B4C
172: - 1B9D _OP_STIME_STR_HOUR equ 0x1B9D
173: - 1BB8 _OP_STIME_STR_MIN equ 0x1BB8
174: - 1B67 _OP_STIME_STR_MON equ 0x1B67
175: - 1BD3 _OP_STIME_STR_SEC equ 0x1BD3
176: - 1B82 _OP_STIME_STR_YEAR equ 0x1B82
177: - 1D31 _POST_CHECK_APU_FAILED equ 0x1D31
178: - 1D63 _POST_CHECK_IDE_FAILED equ 0x1D63
179: - 1D06 _POST_CHECK_PIO_FAILED equ 0x1D06
180: - 1DA4 _POST_TEST_RTC_INVALID equ 0x1DA4
181: - 1D9D _POST_TEST_RTC_NOTFOUND equ 0x1D9D
182: - 18B8 _STR_NOT_FOUND equ 0x18B8
183: - 18A4 _STR_NOT_IMPLEMENTED equ 0x18A4
184: - 18CC _STR_SYNTAX equ 0x18CC
185: - 0D30 _beep_pause_l1 equ 0xD30
186: - 13E9 _ideif_init_drive_found equ 0x13E9
187: - 13D1 _ideif_init_drive_loop equ 0x13D1
188: - 13E4 _ideif_init_drive_nodrv equ 0x13E4
189: - 1454 _ideif_init_drive_prt_fnd equ 0x1454
190: - 1442 _ideif_init_drive_prt_l1 equ 0x1442
191: - 144C _ideif_init_drive_prt_ln equ 0x144C
192: - 1510 _ideif_prnt_devtable_hdr equ 0x1510
193: - 12E1 _ideif_prnt_devtable_l1 equ 0x12E1
194: - 13A7 _ideif_prnt_devtable_l1_e2 equ 0x13A7
195: - 1326 _ideif_prnt_devtable_l1_es equ 0x1326
196: - 13A4 _ideif_prnt_devtable_l1_ms equ 0x13A4
197: - 12EE _ideif_prnt_devtable_l1_nxt equ 0x12EE
198: - 1314 _ideif_prnt_devtable_l1_s00 equ 0x1314
199: - 1319 _ideif_prnt_devtable_l1_s01 equ 0x1319
200: - 131E _ideif_prnt_devtable_l1_s02 equ 0x131E
201: - 1323 _ideif_prnt_devtable_l1_sFF equ 0x1323
202: - 12EC _ideif_prnt_devtable_l1_sel equ 0x12EC
203: - 1574 _ideif_prnt_devtable_master equ 0x1574
204: - 1548 _ideif_prnt_devtable_s00 equ 0x1548
205: - 1553 _ideif_prnt_devtable_s01 equ 0x1553
206: - 155E _ideif_prnt_devtable_s02 equ 0x155E
207: - 1569 _ideif_prnt_devtable_sFF equ 0x1569
208: - 157C _ideif_prnt_devtable_slave equ 0x157C
209: - 0147 _read_bcd_invalid equ 0x147
210: - 1C9C _shift4 equ 0x1C9C
211: - 0D17 beep equ 0xD17
212: - 0D19 beep_loop equ 0xD19
213: - 0D2F beep_pause equ 0xD2F
214: - 091C dasm_00 equ 0x91C
215: - 0C08 dasm_01 equ 0xC08
216: - 09A2 dasm_02 equ 0x9A2
217: - 0BDA dasm_03 equ 0xBDA
218: - 0A1F dasm_08 equ 0xA1F
219: - 0BAD dasm_09 equ 0xBAD
220: - 0984 dasm_0A equ 0x984
221: - 0BF1 dasm_0B equ 0xBF1
222: - 0964 dasm_10 equ 0x964
223: - 09AD dasm_12 equ 0x9AD
224: - 0927 dasm_18 equ 0x927
225: - 098E dasm_1A equ 0x98E
226: - 0941 dasm_20 equ 0x941
227: - 0C4E dasm_22 equ 0xC4E
228: - 09E7 dasm_27 equ 0x9E7
229: - 093A dasm_28 equ 0x93A
230: - 0C1F dasm_2A equ 0xC1F
231: - 09EB dasm_2F equ 0x9EB
232: - 0932 dasm_30 equ 0x932
233: - 09B8 dasm_32 equ 0x9B8
234: - 09F7 dasm_37 equ 0x9F7
235: - 092B dasm_38 equ 0x92B
236: - 0998 dasm_3A equ 0x998
237: - 09F3 dasm_3F equ 0x9F3
238: - 09FB dasm_76 equ 0x9FB
239: - 0A78 dasm_80C6 equ 0xA78
240: - 0A15 dasm_BE equ 0xA15
241: - 0920 dasm_C3 equ 0x920
242: - 0A9E dasm_C88E equ 0xA9E
243: - 0970 dasm_C9 equ 0x970
244: - 096A dasm_CD equ 0x96A
245: - 0A2C dasm_D9 equ 0xA2C
246: - 0952 dasm_DD equ 0x952
247: - 0C0F dasm_DD_01 equ 0xC0F
248: - 0BC8 dasm_DD_09 equ 0xBC8
249: - 0C64 dasm_DD_22 equ 0xC64
250: - 0BDF dasm_DD_23 equ 0xBDF
251: - 0C36 dasm_DD_2A equ 0xC36
252: - 0BF6 dasm_DD_2B equ 0xBF6
253: - 0B78 dasm_DD_34 equ 0xB78
254: - 0B95 dasm_DD_35 equ 0xB95
255: - 0A80 dasm_DD_86 equ 0xA80
256: - 0AA6 dasm_DD_8E equ 0xAA6
257: - 0AC9 dasm_DD_96 equ 0xAC9
258: - 0AE9 dasm_DD_9E equ 0xAE9
259: - 0B0A dasm_DD_A6 equ 0xB0A
260: - 0B41 dasm_DD_AE equ 0xB41
261: - 0B26 dasm_DD_B6 equ 0xB26
262: - 0B5D dasm_DD_BE equ 0xB5D
263: - 0CB6 dasm_DD_E1 equ 0xCB6
264: - 0A3C dasm_DD_E3 equ 0xA3C
265: - 0CA0 dasm_DD_E5 equ 0xCA0
266: - 0C86 dasm_DD_F9 equ 0xC86
267: - 0CB0 dasm_E1 equ 0xCB0
268: - 0A30 dasm_E3 equ 0xA30
269: - 0C9A dasm_E5 equ 0xC9A
270: - 0949 dasm_E9 equ 0x949
271: - 0BBF dasm_ED_42 equ 0xBBF
272: - 0C5A dasm_ED_43 equ 0xC5A
273: - 09EF dasm_ED_44 equ 0x9EF
274: - 097A dasm_ED_45 equ 0x97A
275: - 0A06 dasm_ED_46 equ 0xA06
276: - 0BB6 dasm_ED_4A equ 0xBB6
277: - 0C2B dasm_ED_4B equ 0xC2B
278: - 0975 dasm_ED_4D equ 0x975
279: - 0A0B dasm_ED_56 equ 0xA0B
280: - 0A10 dasm_ED_5E equ 0xA10
281: - 0A54 dasm_ED_A0 equ 0xA54
282: - 0A66 dasm_ED_A1 equ 0xA66
283: - 0A5D dasm_ED_A8 equ 0xA5D
284: - 0A6F dasm_ED_A9 equ 0xA6F
285: - 0A58 dasm_ED_B0 equ 0xA58
286: - 0A6A dasm_ED_B1 equ 0xA6A
287: - 0A61 dasm_ED_B8 equ 0xA61
288: - 0A73 dasm_ED_B9 equ 0xA73
289: - 0A00 dasm_F3 equ 0xA00
290: - 0C7C dasm_F9 equ 0xC7C
291: - 0A03 dasm_FB equ 0xA03
292: - 095B dasm_FD equ 0x95B
293: - 0C17 dasm_FD_01 equ 0xC17
294: - 0BD1 dasm_FD_09 equ 0xBD1
295: - 0C70 dasm_FD_22 equ 0xC70
296: - 0BE8 dasm_FD_23 equ 0xBE8
297: - 0C42 dasm_FD_2A equ 0xC42
298: - 0BFF dasm_FD_2B equ 0xBFF
299: - 0B84 dasm_FD_34 equ 0xB84
300: - 0BA1 dasm_FD_35 equ 0xBA1
301: - 0A8F dasm_FD_86 equ 0xA8F
302: - 0AB5 dasm_FD_8E equ 0xAB5
303: - 0AD5 dasm_FD_96 equ 0xAD5
304: - 0AF7 dasm_FD_9E equ 0xAF7
305: - 0B16 dasm_FD_A6 equ 0xB16
306: - 0B4D dasm_FD_AE equ 0xB4D
307: - 0B31 dasm_FD_B6 equ 0xB31
308: - 0B68 dasm_FD_BE equ 0xB68
309: - 0CBE dasm_FD_E1 equ 0xCBE
310: - 0A48 dasm_FD_E3 equ 0xA48
311: - 0CA8 dasm_FD_E5 equ 0xCA8
312: - 0C90 dasm_FD_F9 equ 0xC90
313: - 097F dasm_FF equ 0x97F
314: - 0CC6 dasm_UU equ 0xCC6
315: - 0CCA dasm_UW equ 0xCCA
316: - 0B05 dasm__AND equ 0xB05
317: - 0B59 dasm__CP equ 0xB59
318: - 0B90 dasm__DEC equ 0xB90
319: - 09D7 dasm__ED_47 equ 0x9D7
320: - 09DF dasm__ED_4F equ 0x9DF
321: - 09C7 dasm__ED_57 equ 0x9C7
322: - 09CF dasm__ED_5F equ 0x9CF
323: - 0B73 dasm__INC equ 0xB73
324: - 09C3 dasm__LD equ 0x9C3
325: - 0B22 dasm__OR equ 0xB22
326: - 0AE1 dasm__SBC equ 0xAE1
327: - 0AC4 dasm__SUB equ 0xAC4
328: - 0B3C dasm__XOR equ 0xB3C
329: - 04C4 dasm_opcode_table equ 0x4C4
330: - 02F1 dasm_print16hex_addr equ 0x2F1
331: - 0309 dasm_print8hex equ 0x309
332: - 0CCF dasm_printFlags_table equ 0xCCF
333: - 0CDF dasm_printRegister8_table equ 0xCDF
334: - 0CFF dasm_printRegister8_table_HL equ 0xCFF
335: - 0CE7 dasm_printRegisterIX_table equ 0xCE7
336: - 0CEF dasm_printRegisterIY_table equ 0xCEF
337: - 0CF7 dasm_printRegisterSP_table equ 0xCF7
338: - 01B5 disassemble equ 0x1B5
339: - 029B disassemble_continue equ 0x29B
340: - 028B disassemble_err equ 0x28B
341: - 01B9 disassemble_next equ 0x1B9
342: - 0288 disassemble_print_opcode_params_end equ 0x288
343: - 0234 disassemble_print_opcode_params_loop equ 0x234
344: - 01F6 disassemble_print_opcode_raw equ 0x1F6
345: - 020A disassemble_print_opcode_raw_fill equ 0x20A
346: - 02CD disassemble_table_first_match equ 0x2CD
347: - 02E7 disassemble_table_found equ 0x2E7
348: - 02EB disassemble_table_notfound equ 0x2EB
349: - 02A9 disassemble_table_seek equ 0x2A9
350: - 02AD disassemble_table_seek_loop equ 0x2AD
351: - 16C9 dump_pretty equ 0x16C9
352: - 16F3 dump_pretty_ascii equ 0x16F3
353: - 1711 dump_pretty_ascii_cont equ 0x1711
354: - 16FB dump_pretty_ascii_loop equ 0x16FB
355: - 170C dump_pretty_ascii_none equ 0x170C
356: - 16E6 dump_pretty_col equ 0x16E6
357: - 1723 dump_pretty_end equ 0x1723
358: - 1717 dump_pretty_nextrow equ 0x1717
359: - 16D1 dump_pretty_row equ 0x16D1
360: - 0E04 ide_printerror equ 0xE04
361: - 0D83 ide_readsector_256 equ 0xD83
362: - 0DB2 ide_readsector_256_done equ 0xDB2
363: - 0D85 ide_readsector_256_waitloop equ 0xD85
364: - 0DB3 ide_readsector_512_inv equ 0xDB3
365: - 0DB8 ide_readsector_512_inv_waitloop equ 0xDB8
366: - 0DEE ide_readsector_timeout equ 0xDEE
367: - 0D65 ide_regread_8 equ 0xD65
368: - 0D49 ide_regwrite_8 equ 0xD49
369: - 0D3C ide_reset equ 0xD3C
370: - 0E03 ide_writesector_256 equ 0xE03
371: - 1497 ideif_get_drv_pointer equ 0x1497
372: - 14AB ideif_init_all equ 0x14AB
373: - 12B5 ideif_init_devtable equ 0x12B5
374: - 13C8 ideif_init_drive equ 0x13C8
375: - 12D3 ideif_prnt_devtable equ 0x12D3
376: - 15DD iic_init equ 0x15DD
377: - 161C iic_read_ack equ 0x161C
378: - 15AE iic_receive_buffer equ 0x15AE
379: - 15D1 iic_receive_buffer_done equ 0x15D1
380: - 15D7 iic_receive_buffer_err equ 0x15D7
381: - 15BF iic_receive_buffer_loop equ 0x15BF
382: - 16A2 iic_receive_byte equ 0x16A2
383: - 16AF iic_receive_byte_loop equ 0x16AF
384: - 1642 iic_send_ack equ 0x1642
385: - 1584 iic_send_buffer equ 0x1584
386: - 15A2 iic_send_buffer_done equ 0x15A2
387: - 15A8 iic_send_buffer_err equ 0x15A8
388: - 1594 iic_send_buffer_loop equ 0x1594
389: - 167C iic_send_byte equ 0x167C
390: - 1688 iic_send_byte_loop equ 0x1688
391: - 15FB iic_send_ebit equ 0x15FB
392: - 165F iic_send_nack equ 0x165F
393: - 15E6 iic_send_sbit equ 0x15E6
394: - 0044 mon_var_template equ 0x44
395: - 0370 mon_var_template_end equ 0x370
396: - 0317 param_01 equ 0x317
397: - 033E param_02 equ 0x33E
398: - 035B param_03 equ 0x35B
399: - 0393 param_03_done equ 0x393
400: - 037C param_03_neg equ 0x37C
401: - 0397 param_04 equ 0x397
402: - 03A7 param_04_i equ 0x3A7
403: - 03AD param_05 equ 0x3AD
404: - 03BA param_06 equ 0x3BA
405: - 03D4 param_07 equ 0x3D4
406: - 03E1 param_08 equ 0x3E1
407: - 03F6 param_09 equ 0x3F6
408: - 03FC param_09_0A equ 0x3FC
409: - 03ED param_0A equ 0x3ED
410: - 040B param_10 equ 0x40B
411: - 041B param_11 equ 0x41B
412: - 042A param_11_12 equ 0x42A
413: - 044A param_11_12_all equ 0x44A
414: - 043D param_11_12_def equ 0x43D
415: - 0442 param_11_12_ix equ 0x442
416: - 0447 param_11_12_iy equ 0x447
417: - 0423 param_12 equ 0x423
418: - 045B param_13 equ 0x45B
419: - 047A param_80 equ 0x47A
420: - 0481 param_80_seek equ 0x481
421: - 0471 param_81 equ 0x471
422: - 04B5 param_comma equ 0x4B5
423: - 0490 param_printRegister equ 0x490
424: - 04AE param_printRegisterA equ 0x4AE
425: - 04A6 param_printRegisterHL equ 0x4A6
426: - 0107 print_a_hex equ 0x107
427: - 0119 print_bcd equ 0x119
428: - 00D7 print_char equ 0xD7
429: - 00EA print_clear equ 0xEA
430: - 00F1 print_newLine equ 0xF1
431: - 00DF print_str equ 0xDF
432: - 00E9 print_str_end equ 0xE9
433: - 1763 print_str_fixed equ 0x1763
434: - 00FC print_wait_out equ 0xFC
435: - 0131 read_bcd equ 0x131
436: - 011F read_char equ 0x11F
437: - 14BE read_lba_sector equ 0x14BE
438: - 1508 str_dev_done equ 0x1508
439: - 14F0 str_dev_waitready equ 0x14F0
440: - 0E37 str_error_start equ 0xE37
441: - 0E54 str_error_start1 equ 0xE54
442: - 0E5D str_error_start2 equ 0xE5D
443: - 0E66 str_error_time equ 0xE66
444: - 1DFC str_post_apu equ 0x1DFC
445: - 1DAB str_post_ide_30 equ 0x1DAB
446: - 1DC6 str_post_ide_40 equ 0x1DC6
447: - 1E32 str_post_nd equ 0x1E32
448: - 1E6A str_post_ok equ 0x1E6A
449: - 1DE1 str_post_pio equ 0x1DE1
450: - 1E17 str_post_rtc equ 0x1E17
451: - 1E40 str_post_rtc_iv equ 0x1E40
452: - 400A var_apu_present equ 0x400A
453: - 402B var_buffer equ 0x402B
454: - 4000 var_buffer_len equ 0x4000
455: - 411A var_bytes_count equ 0x411A
456: - 4006 var_curserchar equ 0x4006
457: - 4007 var_curserlastaddr equ 0x4007
458: - 4005 var_curseron equ 0x4005
459: - 4004 var_curserstate equ 0x4004
460: - 4002 var_curserx equ 0x4002
461: - 4003 var_cursery equ 0x4003
462: - 402C var_idebuffer equ 0x402C
463: - 4001 var_last_char equ 0x4001
464: - 4114 var_opcode equ 0x4114
465: - 4116 var_opcode_length equ 0x4116
466: - 4119 var_opcode_pcount equ 0x4119
467: - 4110 var_opcode_start equ 0x4110
468: - 4117 var_opcode_string equ 0x4117
469: - 4112 var_opcode_table equ 0x4112
470: - 4115 var_opcode_x equ 0x4115
471: - 4009 var_pio_present equ 0x4009
472: - 401B var_ps2mem equ 0x401B
473: - 400B var_scratch equ 0x400B
**** test.asm ****
2: - 8000 org 0x8000
3:
4: - 8000 sel_dsk:
5: 0+17 8000 CD5A82 call ideif_drv_sel
6: 17+17 8003 CD3A80 call fat_print_dbg
7: 34+10 8006 C9 ret
8:
9: - 8010 org 0x8010
10: 44+17 8010 CD3A80 call fat_print_dbg
11: 61+10 8013 C9 ret
12:
13: - 8020 org 0x8020
14: 71+17 8020 CD8583 call fat_print_directory
15: 88+10 8023 C9 ret
16:
17: - 8030 org 0x8030
18: 98+10 8030 210600 ld hl,0x0006
19: 108+16 8033 223543 ld (MEM_FAT_OF0_CCLUST),hl
20: 124+17 8036 CDBB85 call fat_getfatsec
21: 141+10 8039 C9 ret
22:
23: - 803A fat_print_dbg:
24: 151+17 803A CD0C86 call PRINTINLINE
25: - 803D 0A0D5054 db 10,13,"PTR.MEM_IDE_POINTER: 0x",0
522E4D45
4D5F4944
455F504F
494E5445
523A2020
20203078
00
26: 168+14 805A DD213240 ld ix,MEM_IDE_POINTER
27: 182+17 805E CD3482 call print_32_hex
28: 199+17 8061 CD0C86 call PRINTINLINE
29: - 8064 20207C20 db " | PTR.MEM_IDE_PARTITION: 0x",0
20505452
2E4D454D
5F494445
5F504152
54495449
4F4E3A20
20203078
00
30: 216+14 8085 DD212E40 ld ix,MEM_IDE_PARTITION
31: 230+17 8089 CD3482 call print_32_hex
32:
33: 247+17 808C CD0C86 call PRINTINLINE
34: - 808F 0A0D5054 db 10,13,"PTR.MEM_FAT_TMPPOINTER: 0x",0
522E4D45
4D5F4641
545F544D
50504F49
4E544552
3A203078
00
35: 264+14 80AC DD211D43 ld ix,MEM_FAT_TMPPOINTER
36: 278+17 80B0 CD3482 call print_32_hex
37: 295+17 80B3 CD0C86 call PRINTINLINE
38: - 80B6 20207C20 db " | PTR.MEM_FAT_TMPPOINTER1: 0x",0
20505452
2E4D454D
5F464154
5F544D50
504F494E
54455231
3A203078
00
39: 312+14 80D7 DD212143 ld ix,MEM_FAT_TMPPOINTER1
40: 326+17 80DB CD3482 call print_32_hex
41:
42: 343+17 80DE CD0C86 call PRINTINLINE
43: - 80E1 0A0D5641 db 10,13,"VAL.MEM_FAT_RESERVED: 0x",0
4C2E4D45
4D5F4641
545F5245
53455256
45443A20
20203078
00
44: 360+14 80FE DD211743 ld ix,MEM_FAT_RESERVED
45: 374+17 8102 CD4D82 call print_16_hex
46: 391+17 8105 CD0C86 call PRINTINLINE
47: - 8108 20202020 db " | VAL.MEM_FAT_AMOUNT: 0x",0
20207C20
2056414C
2E4D454D
5F464154
5F414D4F
554E543A
20202020
20203078
00
48: 408+13 812D 3A1943 ld a,(MEM_FAT_AMOUNT)
49: 421+17 8130 CD0701 call print_a_hex
50:
51: 438+17 8133 CD0C86 call PRINTINLINE
52: - 8136 0A0D5641 db 10,13,"VAL.MEM_FAT_SECTORS: 0x",0
4C2E4D45
4D5F4641
545F5345
43544F52
533A2020
20203078
00
53: 455+14 8153 DD211A43 ld ix,MEM_FAT_SECTORS
54: 469+17 8157 CD4D82 call print_16_hex
55: 486+17 815A CD0C86 call PRINTINLINE
56: - 815D 20202020 db " | VAL.MEM_FAT_COUNT1: 0x",0
20207C20
2056414C
2E4D454D
5F464154
5F434F55
4E54313A
20202020
20203078
00
57: 503+13 8182 3A1C43 ld a,(MEM_FAT_COUNT1)
58: 516+17 8185 CD0701 call print_a_hex
59:
60: 533+17 8188 CD0C86 call PRINTINLINE
61: - 818B 0A0D5641 db 10,13,"VAL.MEM_FAT_OF0_CCLUST: 0x",0
4C2E4D45
4D5F4641
545F4F46
305F4343
4C555354
3A203078
00
62: 550+14 81A8 DD213543 ld ix,MEM_FAT_OF0_CCLUST
63: 564+17 81AC CD4D82 call print_16_hex
64: 581+17 81AF CD0C86 call PRINTINLINE
65: - 81B2 20202020 db " | PTR.MEM_FAT_OF0_FATSEC: 0x",0
20207C20
20505452
2E4D454D
5F464154
5F4F4630
5F464154
5345433A
20203078
00
66: 598+14 81D7 DD213743 ld ix,MEM_FAT_OF0_FATSEC
67: 612+17 81DB CD3482 call print_32_hex
68:
69: 629+17 81DE CD0C86 call PRINTINLINE
70: - 81E1 0A0D5641 db 10,13,"VAL.MEM_FAT_OF0_DATSEC: 0x",0
4C2E4D45
4D5F4641
545F4F46
305F4441
54534543
3A203078
00
71: 646+14 81FE DD213B43 ld ix,MEM_FAT_OF0_DATSEC
72: 660+17 8202 CD3482 call print_32_hex
73: 677+17 8205 CD0C86 call PRINTINLINE
74: - 8208 20207C20 db " | PTR.MEM_FAT_OF0_DATREM: 0x",0
20505452
2E4D454D
5F464154
5F4F4630
5F444154
52454D3A
20203078
00
75: 694+14 8229 DD213F43 ld ix,MEM_FAT_OF0_DATREM
76: 708+17 822D CD4D82 call print_16_hex
77:
78: 725+17 8230 CDF100 call print_newLine
79: 742+10 8233 C9 ret
80:
81: - 8234 print_32_hex:
82: 752+19 8234 DD7E03 ld a,(ix+3)
83: 771+17 8237 CD0701 call print_a_hex
84: 788+19 823A DD7E02 ld a,(ix+2)
85: 807+17 823D CD0701 call print_a_hex
86: 824+19 8240 DD7E01 ld a,(ix+1)
87: 843+17 8243 CD0701 call print_a_hex
88: 860+19 8246 DD7E00 ld a,(ix+0)
89: 879+17 8249 CD0701 call print_a_hex
90: 896+10 824C C9 ret
91:
92: - 824D print_16_hex:
93: 906+19 824D DD7E01 ld a,(ix+1)
94: 925+17 8250 CD0701 call print_a_hex
95: 942+19 8253 DD7E00 ld a,(ix+0)
96: 961+17 8256 CD0701 call print_a_hex
97: 978+10 8259 C9 ret
98:
99: ; a contains drive to select
100: ; populate fs vars as well
101: - 825A ideif_drv_sel:
102: 988+13 825A 327640 ld (MEM_IDE_SELECTED),a
103: 1001+11 825D F5 push af
104: 1012+17 825E CD9714 call ideif_get_drv_pointer ;test if drive is marked as available
105: 1029+19 8261 DD7E00 ld a,(ix+0)
106: 1048+4 8264 B7 or a
107: 1052+10 8265 C28882 jp nz, _ideif_drv_sel_fail ;if not-> fail
108:
109: 1062+17 8268 CD0B83 call fat_get_root_table ;else get root table
110: ;backup tmp pointer
111: 1079+16 826B 2A3240 ld hl,(MEM_IDE_POINTER)
112: 1095+20 826E ED5B2E40 ld de,(MEM_IDE_PARTITION) ;use MEM_IDE_PARTITION to backup the pointer
113: 1115+17 8272 CD5485 call fat_copy_lba_pointer
114: 1132+10 8275 21A482 ld hl,[_ideif_drv_sel_pstr] ;print success message
115: 1142+17 8278 CDDF00 call print_str
116: 1159+10 827B F1 pop af
117: 1169+7 827C C645 add 69
118: 1176+17 827E CDD700 call print_char
119: 1193+10 8281 21BB82 ld hl,[_ideif_drv_sel_sstr0]
120: 1203+17 8284 CDDF00 call print_str
121: 1220+10 8287 C9 ret
122: - 8288 _ideif_drv_sel_fail:
123: 1230+10 8288 21A482 ld hl,[_ideif_drv_sel_pstr]
124: 1240+17 828B CDDF00 call print_str
125: 1257+10 828E F1 pop af
126: 1267+7 828F C645 add 69
127: 1274+17 8291 CDD700 call print_char
128: 1291+10 8294 21AD82 ld hl,[_ideif_drv_sel_fstr0]
129: 1301+17 8297 CDDF00 call print_str
130: 1318+10 829A 112000 LD DE,0x20
131: 1328+10 829D 017000 LD BC,0x70
132: 1338+17 82A0 CD170D CALL beep
133: 1355+10 82A3 C9 ret
134:
135: - 82A4 _ideif_drv_sel_pstr:
136: - 82A4 0A0D4472 db 10,13,"Drive ",0
69766520
00
137: - 82AD _ideif_drv_sel_fstr0:
138: - 82AD 3A206E6F db ": not ready",10,13,0
74207265
6164790A
0D00
139: - 82BB _ideif_drv_sel_sstr0:
140: - 82BB 3A207365 db ": selected",10,13,0
6C656374
65640A0D
00
141: - 82C8 _ideif_drv_sel_syn:
142: - 82C8 0A0D496E db 10,13,"Invalid drive letter",10,13,0
76616C69
64206472
69766520
6C657474
65720A0D
00
143: .include "fat16.s" ;include monitor symbols.
**** include/fat16.s ****
1: ; VARS
2:
3: - 4317 phase MEM_IDE_FSBUFFER
4: - 4317 MEM_FAT_RESERVED: ; Reserved sectors (2byte)
5: - 4317 ..4318 00 defs 2
6: - 4319 MEM_FAT_AMOUNT: ; Amount of FATs (1byte)
7: - 4319 ..4319 00 defs 1
8: - 431A MEM_FAT_SECTORS: ; Length of FAT (2byte)
9: - 431A ..431B 00 defs 2
10: - 431C MEM_FAT_COUNT1: ; Counter Var for reading FAT (2byte)
11: - 431C ..431C 00 defs 1
12: - 431D MEM_FAT_TMPPOINTER: ; Temporary working pointer
13: - 431D ..4320 00 defs 4
14: - 4321 MEM_FAT_TMPPOINTER1: ; Temporary working pointer
15: - 4321 ..4324 00 defs 4
16: - 4325 MEM_FAT_TMPFNAME: ; Temporary filename
17: - 4325 ..4334 00 defs 16
18:
19: - 4335 MEM_FAT_OF0_CCLUST: ;Current cluster of file
20: - 4335 0000 defw 0
21: - 4337 MEM_FAT_OF0_FATSEC: ;Current sector in FAT
22: - 4337 ..433A 00 defs 4
23: - 433B MEM_FAT_OF0_DATSEC: ;Current sector in Data
24: - 433B ..433E 00 defs 4
25: - 433F MEM_FAT_OF0_DATREM: ;Remaining sector in Data
26: - 433F ..4340 00 defs 2
27:
28:
29: - 830B dephase
30:
31: ;-------------------------------------
32: ; Get FAT Root-Table position
33: ;-------------------------------------
34: - 830B fat_get_root_table:
35: 1365+17 830B CD4585 call fat_reset_pointer ;reset fat pointer
36:
37: ;call fat_print_dbg
38: ; Load first sector on active partition
39: 1382+10 830E 213240 LD HL, MEM_IDE_POINTER ; pointer to LBA address
40: 1392+7 8311 3E01 LD A,1 ;read 1 sector
41: 1399+17 8313 CDBE14 call read_lba_sector
42:
43: ; check for valid Boot sector
44: 1416+13 8316 3A1741 ld a,(MEM_IDE_BUFFER)
45: 1429+7 8319 FEEB cp 0xEB ;first byte should be 0xEB
46: 1436+10 831B C25D83 jp nz, _fat_get_root_table_invalid
47:
48: ;debug sector
49: ;ld hl, MEM_IDE_BUFFER
50: ;ld b,20
51: ;call dump_pretty
52:
53: ; Read and store FS Properties
54: 1446+14 831E DD211741 LD IX,MEM_IDE_BUFFER
55: 1460+19 8322 DD7E0E LD A,(IX+0x0E)
56: 1479+13 8325 321743 LD (MEM_FAT_RESERVED),A
57: 1492+19 8328 DD7E0F LD A,(IX+0x0F)
58: 1511+13 832B 321843 LD (MEM_FAT_RESERVED+1),A
59: 1524+19 832E DD7E10 LD A,(IX+0x10)
60: 1543+13 8331 321943 LD (MEM_FAT_AMOUNT),A
61: 1556+19 8334 DD7E16 LD A,(IX+0x16)
62: 1575+13 8337 321A43 LD (MEM_FAT_SECTORS),A
63: 1588+19 833A DD7E17 LD A,(IX+0x17)
64: 1607+13 833D 321B43 LD (MEM_FAT_SECTORS+1),A
65:
66: ;Get Root FAT
67: 1620+13 8340 3A1B43 LD A, (MEM_FAT_SECTORS+1) ; load FAT Sector size to DE
68: 1633+4 8343 57 LD D,A
69: 1637+13 8344 3A1A43 LD A, (MEM_FAT_SECTORS)
70: 1650+4 8347 5F LD E,A
71: 1654+4 8348 AF XOR A ; clear HL
72: 1658+4 8349 67 LD H,A
73: 1662+4 834A 6F LD L,A
74: 1666+13 834B 3A1943 LD A,(MEM_FAT_AMOUNT) ; Load counter for multiplication
75: 1679+4 834E 47 LD B,A
76: - 834F _fat_get_root_table_loop: ; multiply
77: 1683+11 834F 19 ADD HL,DE
78: 1694+8+5 8350 10FD DJNZ _fat_get_root_table_loop
79:
80: ; add reserved sectors
81: 1702+7 8352 1600 LD D,0
82: 1709+13 8354 3A1743 LD A,(MEM_FAT_RESERVED)
83: 1722+4 8357 5F LD E,A
84: 1726+11 8358 19 ADD HL,DE
85:
86: ; add
87: 1737+17 8359 CD0085 call _fat_math_sector_add_16
88: 1754+10 835C C9 ret
89:
90: - 835D _fat_get_root_table_invalid:
91: 1764+17 835D CD0C86 call PRINTINLINE
92: - 8360 0A0D4361 db 10,13,"Cannot find boot sector.",10,13,0
6E6E6F74
2066696E
6420626F
6F742073
6563746F
722E0A0D
00
93: 1781+17 837D CD9714 call ideif_get_drv_pointer
94: 1798+19 8380 DD360002 ld (ix+0),0x02
95: 1817+10 8384 C9 ret
96:
97: ;-------------------------------------
98: ; Print current fat directory of MEM_IDE_POINTER
99: ;-------------------------------------
100: - 8385 fat_print_directory:
101:
102: 1827+20 8385 ED5B1A43 LD DE,(MEM_FAT_SECTORS)
103: 1847+20 8389 ED531C43 LD (MEM_FAT_COUNT1),DE
104: 1867+10 838D 213240 LD HL,MEM_IDE_POINTER ;read first sector
105: 1877+7 8390 0601 LD B,1
106: 1884+17 8392 CDBE14 call read_lba_sector
107:
108: 1901+17 8395 CD0C86 call PRINTINLINE
109: - 8398 0A0D2020 db 10,13," Filename Cluster Size",10,13,0
46696C65
6E616D65
20202020
20436C75
73746572
2053697A
650A0D00
110:
111: 1918+10 83B8 211741 LD HL, MEM_IDE_BUFFER ;set buffer start
112: 1928+7 83BB 0E10 LD C,16 ;set entries counter
113:
114: - 83BD _fat_print_directory_loop: ;loop over each entry (32byte)
115: 1935+7 83BD 7E LD A,(HL) ; check first byte
116: 1942+11 83BE E5 PUSH HL ;backup start of entry
117: 1953+14 83BF DDE1 POP IX
118: 1967+11 83C1 E5 PUSH HL
119: ;ignore unwanted entries
120: 1978+7 83C2 FE41 CP 0x41 ;skip invisible
121: 1985+10 83C4 CA6384 JP Z, _fat_print_directory_loop_next
122: 1995+7 83C7 FEE5 CP 0xE5 ;skip deleted
123: 2002+10 83C9 CA6384 JP Z, _fat_print_directory_loop_next
124: 2012+7 83CC FE00 CP 0x00 ;reached end
125: 2019+10 83CE CA9484 JP Z, _fat_print_directory_loop_break
126:
127: ;check file attribute
128: 2029+19 83D1 DD7E0B ld a,(IX+0x0B)
129: 2048+7 83D4 FE10 cp 0x10 ;if subdirectors
130: 2055+10 83D6 CA3184 jp z, _fat_print_directory_dir ;print dir
131: ;else print file
132: - 83D9 _fat_print_directory_loop_file
133: ;print filename
134: 2065+7 83D9 3E20 ld a,' '
135: 2072+17 83DB CDD700 call print_char
136: 2089+7 83DE 3E20 ld a,' '
137: 2096+17 83E0 CDD700 call print_char
138: 2113+7 83E3 0608 LD B,8
139: 2120+17 83E5 CD6317 call print_str_fixed
140: 2137+7 83E8 3E2E ld A,'.'
141: 2144+17 83EA CDD700 call print_char
142: 2161+7 83ED 0603 LD B,3
143: 2168+17 83EF CD6317 call print_str_fixed
144:
145: 2185+17 83F2 CD0C86 call PRINTINLINE
146: - 83F5 20307800 db " 0x",0
147: ;first cluster number
148: 2202+19 83F9 DD7E1B ld a,(ix+0x1B)
149: 2221+17 83FC CD0701 call print_a_hex
150: 2238+19 83FF DD7E1A ld a,(ix+0x1A)
151: 2257+17 8402 CD0701 call print_a_hex
152: 2274+17 8405 CD0C86 call PRINTINLINE
153: - 8408 20203078 db " 0x",0
00
154: 2291+19 840D DD7E1F ld a,(ix+0x1F)
155: 2310+17 8410 CD0701 call print_a_hex
156: 2327+19 8413 DD7E1E ld a,(ix+0x1E)
157: 2346+17 8416 CD0701 call print_a_hex
158: 2363+19 8419 DD7E1D ld a,(ix+0x1D)
159: 2382+17 841C CD0701 call print_a_hex
160: 2399+19 841F DD7E1C ld a,(ix+0x1C)
161: 2418+17 8422 CD0701 call print_a_hex
162:
163: 2435+7 8425 3E0A LD A,10 ;New line
164: 2442+17 8427 CDD700 CALL print_char
165: 2459+7 842A 3E0D LD A,13
166: 2466+17 842C CDD700 CALL print_char
167: 2483+12 842F 1832 jr _fat_print_directory_loop_next
168: - 8431 _fat_print_directory_dir
169: 2495+7 8431 3E44 ld a,'D'
170: 2502+17 8433 CDD700 call print_char
171: 2519+7 8436 3E20 ld a,' '
172: 2526+17 8438 CDD700 call print_char
173: 2543+7 843B 0608 LD B,8
174: 2550+17 843D CD6317 call print_str_fixed
175: 2567+17 8440 CD0C86 call PRINTINLINE
176: - 8443 20202020 db " 0x",0
20307800
177: ;first cluster number
178: 2584+19 844B DD7E1B ld a,(ix+0x1B)
179: 2603+17 844E CD0701 call print_a_hex
180: 2620+19 8451 DD7E1A ld a,(ix+0x1A)
181: 2639+17 8454 CD0701 call print_a_hex
182:
183: 2656+7 8457 3E0A LD A,10 ;New line
184: 2663+17 8459 CDD700 CALL print_char
185: 2680+7 845C 3E0D LD A,13
186: 2687+17 845E CDD700 CALL print_char
187: 2704+12 8461 1800 jr _fat_print_directory_loop_next
188:
189: - 8463 _fat_print_directory_loop_next: ; read next entry
190: 2716+4 8463 0D DEC C ;next sector after 32 entries
191: 2720+7+5 8464 2808 JR Z,_fat_print_directory_loop_next_sector
192: 2727+10 8466 E1 POP HL ;restore start
193: 2737+10 8467 112000 LD DE, 32 ;length of entry
194: 2747+11 846A 19 ADD HL,DE ;increment
195: 2758+10 846B C3BD83 JP _fat_print_directory_loop
196:
197: - 846E _fat_print_directory_loop_next_sector: ; end fo sector. read next sector from disk
198: 2768+10 846E E1 POP HL ;clear stack from old hl
199: 2778+7 846F 2600 LD H,0
200: 2785+7 8471 2E01 LD L,1
201: 2792+17 8473 CD0085 call _fat_math_sector_add_16 ;increment sector
202:
203: 2809+20 8476 ED5B1C43 LD DE,(MEM_FAT_COUNT1) ; decrement sector count (max FAT length)
204: 2829+6 847A 1B DEC DE
205: 2835+20 847B ED531C43 LD (MEM_FAT_COUNT1),DE
206: 2855+4 847F 7A LD A,D
207: 2859+4 8480 B3 OR E
208: 2863+10 8481 CA9584 JP Z, _fat_print_directory_loop_break_dirty ; if DE is 0, mmax is reached. End here
209:
210: 2873+10 8484 213240 LD HL,MEM_IDE_POINTER ;read next sector
211: 2883+7 8487 0601 LD B,1
212: 2890+17 8489 CDBE14 call read_lba_sector
213:
214: 2907+10 848C 211741 LD HL, MEM_IDE_BUFFER ;set buffer start
215: 2917+7 848F 0E10 LD C,16 ;set entries counter
216: 2924+10 8491 C3BD83 JP _fat_print_directory_loop
217:
218: - 8494 _fat_print_directory_loop_break
219: 2934+10 8494 E1 POP HL
220: - 8495 _fat_print_directory_loop_break_dirty
221: ; ld hl, [str_sum]
222: ; call print_str ;print
223: ; ld a,c
224: ; call print_a_hex
225: ; ld hl, [str_files]
226: ; call print_str ;print
227: 2944+10 8495 C9 ret
228:
229: ;-------------------------------------
230: ; FAT locate file startcluster
231: ;
232: ; DE pointer to file name
233: ;-------------------------------------
234: - 8496 fat_lfs:
235: 2954+11 8496 D5 PUSH DE
236: 2965+10 8497 212543 LD HL,[MEM_FAT_TMPFNAME] ; prepare filename
237: 2975+17 849A CD7385 CALL format_filename_fat16
238:
239: 2992+7 849D 3E10 LD A,16 ;init counter for FAT sectors
240: 2999+13 849F 321C43 LD (MEM_FAT_COUNT1),A
241:
242: 3012+10 84A2 213240 LD HL,MEM_IDE_POINTER ;read first sector
243: 3022+7 84A5 0601 LD B,1
244: 3029+17 84A7 CDBE14 call read_lba_sector
245:
246: 3046+10 84AA 211741 LD HL, MEM_IDE_BUFFER ;set buffer start
247: 3056+7 84AD 0E10 LD C,16 ;set entries counter
248:
249: - 84AF _fat_lfs_loop:
250: 3063+10 84AF D1 POP DE
251: 3073+11 84B0 D5 PUSH DE
252: 3084+17 84B1 CD5D85 CALL compare_filename
253: 3101+7+5 84B4 3833 JR C, _fat_lfs_loop_compare_match ;on match
254:
255: ; prepare next entry
256: 3108+4 84B6 0D DEC C ;next sector after 16 entries
257: 3112+7+5 84B7 2807 JR Z,_fat_lfs_loop_compare_next_sector
258: 3119+10 84B9 112000 LD DE, 32 ;length of entry
259: 3129+11 84BC 19 ADD HL,DE ;increment
260: 3140+10 84BD C3AF84 JP _fat_lfs_loop
261:
262: - 84C0 _fat_lfs_loop_compare_next_sector:
263: 3150+7 84C0 2600 LD H,0
264: 3157+7 84C2 2E01 LD L,1
265: 3164+17 84C4 CD0085 call _fat_math_sector_add_16 ;increment sector
266: 3181+13 84C7 3A1C43 LD A,(MEM_FAT_COUNT1) ; decrement sector count (max FAT length)
267: 3194+4 84CA 3D DEC A
268: 3198+13 84CB 321C43 LD (MEM_FAT_COUNT1),A
269: 3211+10 84CE CAE184 JP Z, _fat_lfs_loop_compare_end ; if DE is 0, mmax is reached. End here
270: ;call print_a_hex
271:
272: 3221+10 84D1 213240 LD HL,MEM_IDE_POINTER ;read next sector
273: 3231+7 84D4 0601 LD B,1
274: 3238+17 84D6 CDBE14 call read_lba_sector
275:
276: 3255+10 84D9 211741 LD HL, MEM_IDE_BUFFER ;set buffer start
277: 3265+7 84DC 0E10 LD C,16 ;set entries counter
278: 3272+10 84DE C3AF84 JP _fat_lfs_loop
279:
280: - 84E1 _fat_lfs_loop_compare_end:
281: 3282+10 84E1 D1 POP DE
282: 3292+10 84E2 219885 LD HL, [str_file_notfound]
283: 3302+17 84E5 CDDF00 CALL print_str ;print
284: 3319+10 84E8 C9 RET
285:
286: - 84E9 _fat_lfs_loop_compare_match:
287: ; get entry
288: 3329+10 84E9 D1 POP DE
289: 3339+7 84EA 0608 LD B,8
290: 3346+17 84EC CD6317 call print_str_fixed
291: 3363+7 84EF 3E2E ld A,'.'
292: 3370+17 84F1 CDD700 call print_char
293: 3387+7 84F4 0603 LD B,3
294: 3394+17 84F6 CD6317 call print_str_fixed
295:
296: 3411+10 84F9 21AA85 LD HL, [str_file_found]
297: 3421+17 84FC CDDF00 CALL print_str ;print
298:
299: 3438+10 84FF C9 RET
300:
301:
302:
303: ;=================== UTIL Functions ===========================
304: ; 32 Bit addition to pointer
305: ; HL has value
306: - 8500 _fat_math_sector_add_16:
307: 3448+16 8500 221D43 ld (MEM_FAT_TMPPOINTER), hl
308: 3464+4 8503 AF xor a
309: 3468+13 8504 321F43 ld (MEM_FAT_TMPPOINTER+2),a
310: 3481+13 8507 322043 ld (MEM_FAT_TMPPOINTER+3),a
311:
312: 3494+10 850A 111D43 ld de,[MEM_FAT_TMPPOINTER]
313: 3504+10 850D 013240 ld bc,[MEM_IDE_POINTER]
314: 3514+17 8510 CD1485 call _fat_math_add32
315: 3531+10 8513 C9 ret
316:
317: ;bc contains pointer to a (also result)
318: ;de contains pointer to b
319: - 8514 _fat_math_add32
320: 3541+11 8514 E5 push hl
321: 3552+11 8515 C5 push bc
322: 3563+11 8516 D5 push de
323: 3574+7 8517 1A ld a,(de) ; load lower 16bit for B int from (DE) to HL
324: 3581+4 8518 6F ld l,a
325: 3585+6 8519 13 inc de
326: 3591+7 851A 1A ld a,(de)
327: 3598+4 851B 67 ld h,a
328: 3602+6 851C 13 inc de
329: ; HL, DE dirty
330: 3608+7 851D 0A ld a,(bc) ; load lower 16bit for A int from (BC) to DE
331: 3615+4 851E 5F ld e,a
332: 3619+6 851F 03 inc bc
333: 3625+7 8520 0A ld a,(bc)
334: 3632+4 8521 57 ld d,a
335: ; HL now contains A, DE now contains D
336: 3636+11 8522 19 add hl,de ;add lower bytes, store carry
337: 3647+10 8523 D1 pop de ;restore pointers
338: 3657+10 8524 C1 pop bc ;both now cointain first byte of long-value
339: 3667+4 8525 7D ld a,l ;store lower result in (bc)
340: 3671+7 8526 02 ld (bc),a
341: 3678+6 8527 03 inc bc
342: 3684+4 8528 7C ld a,h
343: 3688+7 8529 02 ld (bc),a
344: 3695+6 852A 03 inc bc
345: 3701+6 852B 13 inc de ;also increment de to next byte
346: 3707+6 852C 13 inc de
347: ; DE and HL now start at the upper byte
348: 3713+11 852D C5 push bc
349: 3724+11 852E D5 push de
350: 3735+7 852F 1A ld a,(de) ; load upper 16bit for B
351: 3742+4 8530 6F ld l,a
352: 3746+6 8531 13 inc de
353: 3752+7 8532 1A ld a,(de)
354: 3759+4 8533 67 ld h,a
355: 3763+6 8534 13 inc de
356: 3769+7 8535 0A ld a,(bc) ; load upper 16bit for A
357: 3776+4 8536 5F ld e,a
358: 3780+6 8537 03 inc bc
359: 3786+7 8538 0A ld a,(bc)
360: 3793+4 8539 57 ld d,a
361: 3797+15 853A ED5A adc hl,de ;add upper bytes, store carry
362: 3812+10 853C D1 pop de
363: 3822+10 853D C1 pop bc
364: 3832+4 853E 7D ld a,l ;store lower result in (bc)
365: 3836+7 853F 02 ld(bc),a
366: 3843+6 8540 03 inc bc
367: 3849+4 8541 7C ld a,h
368: 3853+7 8542 02 ld(bc),a
369: 3860+10 8543 E1 pop hl
370: 3870+10 8544 C9 ret
371:
372: ; reset LBA pointer to first sector in selected partition
373: - 8545 fat_reset_pointer:
374: 3880+17 8545 CD9714 call ideif_get_drv_pointer
375: 3897+10 8548 DD23 inc ix
376: 3907+10 854A DD23 inc ix
377: 3917+15 854C DDE5 push ix
378: 3932+10 854E E1 pop hl ;copy poiter to hl
379: 3942+10 854F 113240 ld de, MEM_IDE_POINTER
380: 3952+12 8552 1800 jr fat_copy_lba_pointer
381:
382: ; resets LBA pointer (4-byte) to partition start
383: ; HL = from here
384: ; DE = to this destimation
385: - 8554 fat_copy_lba_pointer:
386: 3964+11 8554 C5 PUSH BC
387: 3975+7 8555 0600 LD B,0
388: 3982+7 8557 0E04 LD C,4
389: 3989+16+5 8559 EDB0 LDIR
390: 4005+10 855B C1 POP BC
391: 4015+10 855C C9 ret
392:
393: ; compares filenames
394: ; HL points to name1
395: ; DE points to name2
396: ; Carry is set if match
397: ; Destroys DE, AF
398: - 855D compare_filename:
399: 4025+11 855D E5 PUSH HL
400: 4036+11 855E C5 PUSH BC
401: 4047+7 855F 060B LD B, 11 ;Counter
402: - 8561 _compare_filename_loop:
403: 4054+7 8561 1A LD A,(DE)
404: 4061+4 8562 4F LD C,A
405: 4065+7 8563 7E LD A,(HL)
406: 4072+4 8564 A9 XOR C ;check if identical (should return 0)
407: 4076+7+5 8565 2007 JR NZ, _compare_filename_nomatch
408: 4083+4 8567 05 DEC B ;decrement counter
409: 4087+7+5 8568 20F7 JR NZ, _compare_filename_loop ;if not last, continue
410: 4094+10 856A C1 POP BC ;if last, it matches
411: 4104+10 856B E1 POP HL
412: 4114+4 856C 37 SCF
413: 4118+10 856D C9 RET
414: - 856E _compare_filename_nomatch:
415: 4128+10 856E C1 POP BC
416: 4138+10 856F E1 POP HL
417: 4148+4 8570 37 SCF
418: 4152+4 8571 3F CCF
419: 4156+10 8572 C9 RET
420:
421: ; formats filename to 8+3 format
422: ; DE points to source filename to string
423: ; HL points to destination
424: - 8573 format_filename_fat16:
425: 4166+7 8573 060B LD B, 11 ;counter
426: 4173+11 8575 E5 PUSH HL
427: 4184+4 8576 AF XOR A
428: - 8577 _format_filename_fat16_clean:
429: 4188+7 8577 77 LD (HL),A
430: 4195+6 8578 23 INC HL
431: 4201+8+5 8579 10FC DJNZ _format_filename_fat16_clean
432: 4209+10 857B E1 POP HL ; continue with copy
433: 4219+7 857C 060D LD B, 13
434: - 857E _format_filename_fat16_loop:
435: 4226+7 857E 1A LD A, (DE) ; load byte
436: 4233+4 857F B7 OR A
437: 4237+5+6 8580 C8 RET Z ;exit on 0byte
438: 4242+4 8581 05 DEC B ;reduce counter
439: 4246+5+6 8582 C8 RET Z ;exit after 12 bytes 8+.+3
440: 4251+7 8583 FE2E CP '.' ; check if dot
441: 4258+7+5 8585 200A JR NZ, _format_filename_fat16_loop_copy ; if not continue as usual
442: 4265+6 8587 13 INC DE ;else skip char
443: - 8588 _format_filename_fat16_loop_skip_8:
444: 4271+4 8588 78 LD A,B
445: 4275+7 8589 FE05 CP 5
446: 4282+7+5 858B 38F1 JR C, _format_filename_fat16_loop
447: 4289+6 858D 23 INC HL
448: 4295+4 858E 05 DEC B
449: 4299+12 858F 18F7 JR _format_filename_fat16_loop_skip_8
450:
451: - 8591 _format_filename_fat16_loop_copy:
452: 4311+7 8591 1A LD A, (DE) ; load byte
453: 4318+7 8592 77 LD (HL), A ; copy byte
454: 4325+6 8593 23 INC HL
455: 4331+6 8594 13 INC DE
456: 4337+10 8595 C37E85 JP _format_filename_fat16_loop
457:
458: - 8598 str_file_notfound:
459: - 8598 46696C65 db "File not found!",13,10,0
206E6F74
20666F75
6E64210D
0A00
460:
461: - 85AA str_file_found:
**** test.asm ****
144: - 85AA 2046696C db " File located!",13,10,0
65206C6F
63617465
64210D0A
00
145: .include "fat16_file.s" ;include monitor symbols.
**** include/fat16_file.s ****
1:
2:
3: ;1. find sector for given cluster
4: ;2. read sector
5: ;3. store first data sector to MEM_FAT_OF0_DATSEC
6: ;4. set MEM_FAT_OF0_DATREM to amount uf sectors per cluster
7: ;5. find next cluster in FAt and update MEM_FAT_OF0_CCLUST
8:
9:
10: ; gets sector in FAT table for the cluster stored in MEM_FAT_OF0_CCLUST
11: ; store result in MEM_FAT_OF0_FATSEC
12: - 85BB fat_getfatsec:
13: 4347+16 85BB 2A3543 ld HL,(MEM_FAT_OF0_CCLUST) ;load cluster
14: ;each sector contains 256 clusters
15: ;first 8bits are not needed (/256)
16:
17: 4363+4 85BE 7C ld a,h ;divide by 256
18: 4367+4 85BF 6F ld l,a
19: 4371+4 85C0 AF xor a
20: 4375+4 85C1 67 ld h,a
21:
22: 4379+20 85C2 ED4B1743 ld bc,(MEM_FAT_RESERVED) ;add reserved sectors
23: 4399+11 85C6 09 add hl,bc
24: 4410+16 85C7 223743 ld(MEM_FAT_OF0_FATSEC+0),hl;store sector to MEM_FAT_TMPPOINTER1
25: 4426+4 85CA AF xor a
26: 4430+13 85CB 323943 ld(MEM_FAT_OF0_FATSEC+2),a
27: 4443+13 85CE 323A43 ld(MEM_FAT_OF0_FATSEC+3),a
28:
29: 4456+17 85D1 CD9714 call ideif_get_drv_pointer
30: 4473+10 85D4 DD23 inc ix
31: 4483+10 85D6 DD23 inc ix
32: 4493+15 85D8 DDE5 push ix
33: 4508+10 85DA D1 pop de ;copy poiter to hl
34: 4518+10 85DB 013743 ld bc,[MEM_FAT_OF0_FATSEC]
35: 4528+17 85DE CD1485 call _fat_math_add32 ;MEM_FAT_OF0_FATSEC now contains the correct sector
36: ;in the FAT
37:
38: 4545+17 85E1 CD3A80 call fat_print_dbg
39:
40: ;read FAT sector
41: 4562+10 85E4 213743 ld hl,MEM_FAT_OF0_FATSEC ;read next sector
42: 4572+7 85E7 0601 ld b,1
43: 4579+17 85E9 CDBE14 call read_lba_sector
44:
45: 4596+10 85EC 211741 ld hl, MEM_IDE_BUFFER
46: 4606+7 85EF 0614 ld b,20
47: 4613+17 85F1 CDC916 call dump_pretty
48:
49: ;calculate offset address
50: 4630+13 85F4 3A3543 ld a,(MEM_FAT_OF0_CCLUST)
51: 4643+4 85F7 17 RLA ;shift to left (x2)
52: 4647+4 85F8 6F ld l, a
53: 4651+7 85F9 3E00 ld a,0
54: 4658+4 85FB 17 RLA ;shift in carry flag
55: 4662+4 85FC 67 ld h,a
56: 4666+10 85FD 111741 ld de,MEM_IDE_BUFFER
57: 4676+11 8600 19 add hl,de
58: ;copy pointer
59: 4687+10 8601 113543 ld de,MEM_FAT_OF0_CCLUST
60: 4697+16 8604 EDA0 ldi ;copy byte for next cluster from FAT
61: 4713+16 8606 EDA0 ldi
62:
63:
64: 4729+17 8608 CD3A80 call fat_print_dbg
65:
66: 4746+10 860B C9 ret
67: ;store data
68:
**** test.asm ****
146:
147: ;------------------------------------------------------------------------------
148: ; PRINTINLINE
149: ;
150: ; String output function
151: ;
152: ; Prints in-line data (bytes immediately following the PRINTINLINE call)
153: ; until a string terminator is encountered (0 - null char).
154: ;------------------------------------------------------------------------------
155: - 860C PRINTINLINE:
156: 4756+19 860C E3 EX (SP),HL ; PUSH HL and put RET ADDress into HL
157: 4775+11 860D F5 PUSH AF
158: 4786+11 860E C5 PUSH BC
159: - 860F nxtILC:
160: 4797+7 860F 7E LD A,(HL)
161: 4804+7 8610 FE00 CP 0
162: 4811+7+5 8612 2806 JR Z,endPrint
163: 4818+17 8614 CDD700 CALL print_char
164: 4835+6 8617 23 INC HL
165: 4841+12 8618 18F5 JR nxtILC
166: - 861A endPrint:
167: 4853+6 861A 23 INC HL ; Get past "null" terminator
168: 4859+10 861B C1 POP BC
169: 4869+10 861C F1 POP AF
170: 4879+19 861D E3 EX (SP),HL ; PUSH new RET ADDress on stack and restore HL
**** test.asm ****
171: 4898+10 861E C9 RET
Statistics:
4 passes
0 jr promotions
525 symbols
1534 bytes
Symbol Table:
ADDR_RTC =D0 208
A_RTS_OFF = 152 338
A_RTS_ON = 15B 347
BOOT_PHASE0 =50 80
BOOT_PHASE1 =6E 110
BOOT_PHASE1_LOOP=77 119
BOOT_PHASE2 =82 130
COMMAND =17EB 6123
COMMAND_BACKSPACE=1826 6182
COMMAND_LUT =176B 5995
COMMAND_PROCESS=184C 6220
COMMAND_PROCESS_FOUND=1887 6279
COMMAND_PROCESS_LOOP=184F 6223
COMMAND_PROCESS_LOOP_STR1=1858 6232
COMMAND_PROCESS_LOOP_STR2=186E 6254
COMMAND_PROCESS_NEXT_ENTRY=1873 6259
COMMAND_PROCESS_NEXT_ENTRYI=1872 6258
COMMAND_PROCESS_NOT_FOUND=187E 6270
COMMAND_READ =17F7 6135
CONSOLE_INIT =9E 158
CONSOLE_INIT_CTC=9E 158
CONSOLE_INIT_SIO=A6 166
CS_APU_CTRL =F9 249
CS_APU_DATA =F8 248
CS_BANK =00 0
CS_CTC_0 =04 4
CS_CTC_1 =05 5
CS_CTC_2 =06 6
CS_CTC_3 =07 7
CS_DIP =01 1
CS_PIA_CR =33 51
CS_PIA_PA =30 48
CS_PIA_PB =31 49
CS_PIA_PC =32 50
CS_PIO_AC =F6 246
CS_PIO_AD =F4 244
CS_PIO_BC =F7 247
CS_PIO_BD =F5 245
CS_SIO_A_C =09 9
CS_SIO_A_D =08 8
CS_SIO_B_C =0B 11
CS_SIO_B_D =0A 10
DHEX_TO_BYTE = 164 356
DHEX_TO_BYTE_FAILED= 180 384
ERR_SYNTAX =189D 6301
EXEC_RST_08 = D04 3332
EXEC_RST_10 = D08 3336
EXEC_RST_18 = D14 3348
HEX_TO_BIN = 184 388
HEX_TO_BIN_2 = 192 402
HEX_TO_INVALID_2= 199 409
IDE_CMD_IDENT =EC 236
IDE_CMD_READSEC=20 32
IDE_DEV_TABLE =1275 4725
IDE_RD =40 64
IDE_REG_ALTSTS =16 22
IDE_REG_CMDSTS =0F 15
IDE_REG_DATA =08 8
IDE_REG_DRVADDR=17 23
IDE_REG_ERROR =09 9
IDE_REG_HCYL =0D 13
IDE_REG_HEAD =0E 14
IDE_REG_LBA0 =0B 11
IDE_REG_LBA1 =0C 12
IDE_REG_LBA2 =0D 13
IDE_REG_LBA3 =0E 14
IDE_REG_LCYL =0C 12
IDE_REG_SECTOR =0A 10
IDE_REG_SSECTOR=0B 11
IDE_RST =80 128
IDE_WR =20 32
IIC_CLK =01 1
IIC_DATA =02 2
INT_VEC =1B 27
IN_BUFFER =402B 16427
IO_AY0_ADDR =40 64
IO_AY0_DATA =41 65
IO_AY1_ADDR =42 66
IO_AY1_DATA =43 67
IO_REG0 =20 32
IO_RTC_AMPM =25 37
IO_RTC_CTR_D =2D 45
IO_RTC_CTR_E =2E 46
IO_RTC_CTR_F =2F 47
IO_RTC_DAY0 =26 38
IO_RTC_DAY1 =27 39
IO_RTC_HOUR =24 36
IO_RTC_MIN0 =22 34
IO_RTC_MIN1 =23 35
IO_RTC_MON0 =28 40
IO_RTC_MON1 =29 41
IO_RTC_SEC0 =20 32
IO_RTC_SEC1 =21 33
IO_RTC_WEEK =2C 44
IO_RTC_YEAR1 =2B 43
IO_RTC_YERR0 =2A 42
MEM_FAT_AMOUNT 4319 17177
MEM_FAT_COUNT1 431C 17180
MEM_FAT_OF0_CCLUST 4335 17205
MEM_FAT_OF0_DATREM 433F 17215
MEM_FAT_OF0_DATSEC 433B 17211
MEM_FAT_OF0_FATSEC 4337 17207
MEM_FAT_RESERVED 4317 17175
MEM_FAT_SECTORS 431A 17178
MEM_FAT_TMPFNAME 4325 17189
MEM_FAT_TMPPOINTER 431D 17181
MEM_FAT_TMPPOINTER1 4321 17185
MEM_IDE_BUFFER =4117 16663
MEM_IDE_DEVICE =402C 16428
MEM_IDE_DEV_TABLE=4036 16438
MEM_IDE_FSBUFFER=4317 17175
MEM_IDE_PARTITION=402E 16430
MEM_IDE_POINTER=4032 16434
MEM_IDE_SELECTED=4076 16502
MEM_IDE_STATUS =402D 16429
MEM_IDE_STRING_0=4077 16503
MEM_IDE_STRING_1=409F 16543
MEM_IDE_STRING_2=40C7 16583
MEM_IDE_STRING_3=40EF 16623
MSG_CLEAR = 14A 330
NOT_IMPLEMENTED=1896 6294
OP_CALL =18F8 6392
OP_CLR =1A8C 6796
OP_DASM =1979 6521
OP_DUMP =1918 6424
OP_EXEC =18DF 6367
OP_IIC_IN =1A40 6720
OP_IIC_OUT =19E0 6624
OP_IO_IN =19A9 6569
OP_IO_OUT =19BF 6591
OP_LSDSK =1CA1 7329
OP_RTIME =1A90 6800
OP_SELDSK =1CA5 7333
OP_SET =1948 6472
OP_STIME =1C28 7208
POST_CHECK_APU =1D12 7442
POST_CHECK_IDE_30=1D3D 7485
POST_CHECK_IDE_40=1D50 7504
POST_CHECK_PIO =1CED 7405
POST_START =1CDD 7389
POST_TEST_RTC =1D6A 7530
PRG_RAM_START =4110 16656
PRG_RAM_TOP =FF00 65280
PRINTINLINE 860C 34316
PROG_MEM_START =4000 16384
PROG_ROM_START = 100 256
RST_00 =00 0
RST_08 =08 8
RST_10 =10 16
RST_18 =18 24
STACK_RAM_TOP =FFFF 65535
START_ROM =00 0
STRCONV_BYTES_TO_HEX= 19B 411
STRCONV_BYTES_TO_HEX_1= 1AA 426
STRCONV_BYTES_TO_HEX_2= 1B4 436
STR_Banner_Start=1E6F 7791
STR_PD_HEADER =1724 5924
SYS_BUF_START =4010 16400
SYS_RAM_START =4000 16384
VAR_CONSOLE_BAUD=18 24
VAR_CONSOLE_CONF=0F 15
VDP_MEM =80 128
VDP_REG =81 129
_COMMAND_PROCESS_FOUND=1895 6293
_OP_CALL =1917 6423
_OP_IIC_ACK_ERR=1A25 6693
_OP_IIC_ACK_ERR_str=1A2C 6700
_OP_IIC_IN_LOOP=1A72 6770
_OP_IIC_IN_LOOP_TEXT=1A7F 6783
_OP_IIC_OUT_LOOP=19F6 6646
_OP_IIC_OUT_SEND=1A12 6674
_OP_RTIME_NN =1A93 6803
_OP_RTIME_RD_CMD=1B4B 6987
_OP_SELDSK_INVALID=1CB4 7348
_OP_SELDSK_INVALID_STR=1CC4 7364
_OP_SET_LOOP =1960 6496
_OP_STIME_INVALID=1BEE 7150
_OP_STIME_PROMPT=1C05 7173
_OP_STIME_PROMPT_ERR=1C1D 7197
_OP_STIME_STR_DAY=1B4C 6988
_OP_STIME_STR_HOUR=1B9D 7069
_OP_STIME_STR_MIN=1BB8 7096
_OP_STIME_STR_MON=1B67 7015
_OP_STIME_STR_SEC=1BD3 7123
_OP_STIME_STR_YEAR=1B82 7042
_POST_CHECK_APU_FAILED=1D31 7473
_POST_CHECK_IDE_FAILED=1D63 7523
_POST_CHECK_PIO_FAILED=1D06 7430
_POST_TEST_RTC_INVALID=1DA4 7588
_POST_TEST_RTC_NOTFOUND=1D9D 7581
_STR_NOT_FOUND =18B8 6328
_STR_NOT_IMPLEMENTED=18A4 6308
_STR_SYNTAX =18CC 6348
_beep_pause_l1 = D30 3376
_compare_filename_loop 8561 34145
_compare_filename_nomatch 856E 34158
_fat_get_root_table_invalid 835D 33629
_fat_get_root_table_loop 834F 33615
_fat_lfs_loop 84AF 33967
_fat_lfs_loop_compare_end 84E1 34017
_fat_lfs_loop_compare_match 84E9 34025
_fat_lfs_loop_compare_next_sector 84C0 33984
_fat_math_add32 8514 34068
_fat_math_sector_add_16 8500 34048
_fat_print_directory_dir 8431 33841
_fat_print_directory_loop 83BD 33725
_fat_print_directory_loop_break 8494 33940
_fat_print_directory_loop_break_dirty 8495 33941
_fat_print_directory_loop_file 83D9 33753
_fat_print_directory_loop_next 8463 33891
_fat_print_directory_loop_next_sector 846E 33902
_format_filename_fat16_clean 8577 34167
_format_filename_fat16_loop 857E 34174
_format_filename_fat16_loop_copy 8591 34193
_format_filename_fat16_loop_skip_8 8588 34184
_ideif_drv_sel_fail 8288 33416
_ideif_drv_sel_fstr0 82AD 33453
_ideif_drv_sel_pstr 82A4 33444
_ideif_drv_sel_sstr0 82BB 33467
_ideif_drv_sel_syn 82C8 33480
_ideif_init_drive_found=13E9 5097
_ideif_init_drive_loop=13D1 5073
_ideif_init_drive_nodrv=13E4 5092
_ideif_init_drive_prt_fnd=1454 5204
_ideif_init_drive_prt_l1=1442 5186
_ideif_init_drive_prt_ln=144C 5196
_ideif_prnt_devtable_hdr=1510 5392
_ideif_prnt_devtable_l1=12E1 4833
_ideif_prnt_devtable_l1_e2=13A7 5031
_ideif_prnt_devtable_l1_es=1326 4902
_ideif_prnt_devtable_l1_ms=13A4 5028
_ideif_prnt_devtable_l1_nxt=12EE 4846
_ideif_prnt_devtable_l1_s00=1314 4884
_ideif_prnt_devtable_l1_s01=1319 4889
_ideif_prnt_devtable_l1_s02=131E 4894
_ideif_prnt_devtable_l1_sFF=1323 4899
_ideif_prnt_devtable_l1_sel=12EC 4844
_ideif_prnt_devtable_master=1574 5492
_ideif_prnt_devtable_s00=1548 5448
_ideif_prnt_devtable_s01=1553 5459
_ideif_prnt_devtable_s02=155E 5470
_ideif_prnt_devtable_sFF=1569 5481
_ideif_prnt_devtable_slave=157C 5500
_read_bcd_invalid= 147 327
_shift4 =1C9C 7324
beep = D17 3351
beep_loop = D19 3353
beep_pause = D2F 3375
compare_filename 855D 34141
dasm_00 = 91C 2332
dasm_01 = C08 3080
dasm_02 = 9A2 2466
dasm_03 = BDA 3034
dasm_08 = A1F 2591
dasm_09 = BAD 2989
dasm_0A = 984 2436
dasm_0B = BF1 3057
dasm_10 = 964 2404
dasm_12 = 9AD 2477
dasm_18 = 927 2343
dasm_1A = 98E 2446
dasm_20 = 941 2369
dasm_22 = C4E 3150
dasm_27 = 9E7 2535
dasm_28 = 93A 2362
dasm_2A = C1F 3103
dasm_2F = 9EB 2539
dasm_30 = 932 2354
dasm_32 = 9B8 2488
dasm_37 = 9F7 2551
dasm_38 = 92B 2347
dasm_3A = 998 2456
dasm_3F = 9F3 2547
dasm_76 = 9FB 2555
dasm_80C6 = A78 2680
dasm_BE = A15 2581
dasm_C3 = 920 2336
dasm_C88E = A9E 2718
dasm_C9 = 970 2416
dasm_CD = 96A 2410
dasm_D9 = A2C 2604
dasm_DD = 952 2386
dasm_DD_01 = C0F 3087
dasm_DD_09 = BC8 3016
dasm_DD_22 = C64 3172
dasm_DD_23 = BDF 3039
dasm_DD_2A = C36 3126
dasm_DD_2B = BF6 3062
dasm_DD_34 = B78 2936
dasm_DD_35 = B95 2965
dasm_DD_86 = A80 2688
dasm_DD_8E = AA6 2726
dasm_DD_96 = AC9 2761
dasm_DD_9E = AE9 2793
dasm_DD_A6 = B0A 2826
dasm_DD_AE = B41 2881
dasm_DD_B6 = B26 2854
dasm_DD_BE = B5D 2909
dasm_DD_E1 = CB6 3254
dasm_DD_E3 = A3C 2620
dasm_DD_E5 = CA0 3232
dasm_DD_F9 = C86 3206
dasm_E1 = CB0 3248
dasm_E3 = A30 2608
dasm_E5 = C9A 3226
dasm_E9 = 949 2377
dasm_ED_42 = BBF 3007
dasm_ED_43 = C5A 3162
dasm_ED_44 = 9EF 2543
dasm_ED_45 = 97A 2426
dasm_ED_46 = A06 2566
dasm_ED_4A = BB6 2998
dasm_ED_4B = C2B 3115
dasm_ED_4D = 975 2421
dasm_ED_56 = A0B 2571
dasm_ED_5E = A10 2576
dasm_ED_A0 = A54 2644
dasm_ED_A1 = A66 2662
dasm_ED_A8 = A5D 2653
dasm_ED_A9 = A6F 2671
dasm_ED_B0 = A58 2648
dasm_ED_B1 = A6A 2666
dasm_ED_B8 = A61 2657
dasm_ED_B9 = A73 2675
dasm_F3 = A00 2560
dasm_F9 = C7C 3196
dasm_FB = A03 2563
dasm_FD = 95B 2395
dasm_FD_01 = C17 3095
dasm_FD_09 = BD1 3025
dasm_FD_22 = C70 3184
dasm_FD_23 = BE8 3048
dasm_FD_2A = C42 3138
dasm_FD_2B = BFF 3071
dasm_FD_34 = B84 2948
dasm_FD_35 = BA1 2977
dasm_FD_86 = A8F 2703
dasm_FD_8E = AB5 2741
dasm_FD_96 = AD5 2773
dasm_FD_9E = AF7 2807
dasm_FD_A6 = B16 2838
dasm_FD_AE = B4D 2893
dasm_FD_B6 = B31 2865
dasm_FD_BE = B68 2920
dasm_FD_E1 = CBE 3262
dasm_FD_E3 = A48 2632
dasm_FD_E5 = CA8 3240
dasm_FD_F9 = C90 3216
dasm_FF = 97F 2431
dasm_UU = CC6 3270
dasm_UW = CCA 3274
dasm__AND = B05 2821
dasm__CP = B59 2905
dasm__DEC = B90 2960
dasm__ED_47 = 9D7 2519
dasm__ED_4F = 9DF 2527
dasm__ED_57 = 9C7 2503
dasm__ED_5F = 9CF 2511
dasm__INC = B73 2931
dasm__LD = 9C3 2499
dasm__OR = B22 2850
dasm__SBC = AE1 2785
dasm__SUB = AC4 2756
dasm__XOR = B3C 2876
dasm_opcode_table= 4C4 1220
dasm_print16hex_addr= 2F1 753
dasm_print8hex = 309 777
dasm_printFlags_table= CCF 3279
dasm_printRegister8_table= CDF 3295
dasm_printRegister8_table_HL= CFF 3327
dasm_printRegisterIX_table= CE7 3303
dasm_printRegisterIY_table= CEF 3311
dasm_printRegisterSP_table= CF7 3319
disassemble = 1B5 437
disassemble_continue= 29B 667
disassemble_err= 28B 651
disassemble_next= 1B9 441
disassemble_print_opcode_params_end= 288 648
disassemble_print_opcode_params_loop= 234 564
disassemble_print_opcode_raw= 1F6 502
disassemble_print_opcode_raw_fill= 20A 522
disassemble_table_first_match= 2CD 717
disassemble_table_found= 2E7 743
disassemble_table_notfound= 2EB 747
disassemble_table_seek= 2A9 681
disassemble_table_seek_loop= 2AD 685
dump_pretty =16C9 5833
dump_pretty_ascii=16F3 5875
dump_pretty_ascii_cont=1711 5905
dump_pretty_ascii_loop=16FB 5883
dump_pretty_ascii_none=170C 5900
dump_pretty_col=16E6 5862
dump_pretty_end=1723 5923
dump_pretty_nextrow=1717 5911
dump_pretty_row=16D1 5841
endPrint 861A 34330
fat_copy_lba_pointer 8554 34132
fat_get_root_table 830B 33547
fat_getfatsec 85BB 34235
fat_lfs 8496 33942
fat_print_dbg 803A 32826
fat_print_directory 8385 33669
fat_reset_pointer 8545 34117
format_filename_fat16 8573 34163
ide_printerror = E04 3588
ide_readsector_256= D83 3459
ide_readsector_256_done= DB2 3506
ide_readsector_256_waitloop= D85 3461
ide_readsector_512_inv= DB3 3507
ide_readsector_512_inv_waitloop= DB8 3512
ide_readsector_timeout= DEE 3566
ide_regread_8 = D65 3429
ide_regwrite_8 = D49 3401
ide_reset = D3C 3388
ide_writesector_256= E03 3587
ideif_drv_sel 825A 33370
ideif_get_drv_pointer=1497 5271
ideif_init_all =14AB 5291
ideif_init_devtable=12B5 4789
ideif_init_drive=13C8 5064
ideif_prnt_devtable=12D3 4819
iic_init =15DD 5597
iic_read_ack =161C 5660
iic_receive_buffer=15AE 5550
iic_receive_buffer_done=15D1 5585
iic_receive_buffer_err=15D7 5591
iic_receive_buffer_loop=15BF 5567
iic_receive_byte=16A2 5794
iic_receive_byte_loop=16AF 5807
iic_send_ack =1642 5698
iic_send_buffer=1584 5508
iic_send_buffer_done=15A2 5538
iic_send_buffer_err=15A8 5544
iic_send_buffer_loop=1594 5524
iic_send_byte =167C 5756
iic_send_byte_loop=1688 5768
iic_send_ebit =15FB 5627
iic_send_nack =165F 5727
iic_send_sbit =15E6 5606
mon_var_template=44 68
mon_var_template_end= 370 880
nxtILC 860F 34319
param_01 = 317 791
param_02 = 33E 830
param_03 = 35B 859
param_03_done = 393 915
param_03_neg = 37C 892
param_04 = 397 919
param_04_i = 3A7 935
param_05 = 3AD 941
param_06 = 3BA 954
param_07 = 3D4 980
param_08 = 3E1 993
param_09 = 3F6 1014
param_09_0A = 3FC 1020
param_0A = 3ED 1005
param_10 = 40B 1035
param_11 = 41B 1051
param_11_12 = 42A 1066
param_11_12_all= 44A 1098
param_11_12_def= 43D 1085
param_11_12_ix = 442 1090
param_11_12_iy = 447 1095
param_12 = 423 1059
param_13 = 45B 1115
param_80 = 47A 1146
param_80_seek = 481 1153
param_81 = 471 1137
param_comma = 4B5 1205
param_printRegister= 490 1168
param_printRegisterA= 4AE 1198
param_printRegisterHL= 4A6 1190
print_16_hex 824D 33357
print_32_hex 8234 33332
print_a_hex = 107 263
print_bcd = 119 281
print_char =D7 215
print_clear =EA 234
print_newLine =F1 241
print_str =DF 223
print_str_end =E9 233
print_str_fixed=1763 5987
print_wait_out =FC 252
read_bcd = 131 305
read_char = 11F 287
read_lba_sector=14BE 5310
sel_dsk 8000 32768
str_dev_done =1508 5384
str_dev_waitready=14F0 5360
str_error_start= E37 3639
str_error_start1= E54 3668
str_error_start2= E5D 3677
str_error_time = E66 3686
str_file_found 85AA 34218
str_file_notfound 8598 34200
str_post_apu =1DFC 7676
str_post_ide_30=1DAB 7595
str_post_ide_40=1DC6 7622
str_post_nd =1E32 7730
str_post_ok =1E6A 7786
str_post_pio =1DE1 7649
str_post_rtc =1E17 7703
str_post_rtc_iv=1E40 7744
var_apu_present=400A 16394
var_buffer =402B 16427
var_buffer_len =4000 16384
var_bytes_count=411A 16666
var_curserchar =4006 16390
var_curserlastaddr=4007 16391
var_curseron =4005 16389
var_curserstate=4004 16388
var_curserx =4002 16386
var_cursery =4003 16387
var_idebuffer =402C 16428
var_last_char =4001 16385
var_opcode =4114 16660
var_opcode_length=4116 16662
var_opcode_pcount=4119 16665
var_opcode_start=4110 16656
var_opcode_string=4117 16663
var_opcode_table=4112 16658
var_opcode_x =4115 16661
var_pio_present=4009 16393
var_ps2mem =401B 16411
var_scratch =400B 16395