Files
Z8C-Homebrew-Computer/OperatingSystem/software/zout/test.lst

1125 lines
48 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: - 008E AY0_WRITE_REG equ 0x8E
5: - 030F A_RTS_OFF equ 0x30F
6: - 0318 A_RTS_ON equ 0x318
7: - 0236 CMD_DASM equ 0x236
8: - 012C CMD_EXEC equ 0x12C
9: - 021A CMD_IO_READ equ 0x21A
10: - 01F1 CMD_IO_WRITE equ 0x1F1
11: - 01B5 CMD_SET equ 0x1B5
12: - 01EB CMD_SET_END equ 0x1EB
13: - 01D0 CMD_SET_LOOP equ 0x1D0
14: - 026F CMD_SYNTAX_ERROR equ 0x26F
15: - 014B CMD_VIEW equ 0x14B
16: - 01AF CMD_VIEW_END equ 0x1AF
17: - 0184 CMD_VIEW_ROW equ 0x184
18: - 0196 CMD_VIEW_ROW_LOOP equ 0x196
19: - 027B CONSOLE_INIT equ 0x27B
20: - 027B CONSOLE_INIT_CTC equ 0x27B
21: - 0283 CONSOLE_INIT_SIO equ 0x283
22: - 0321 DHEX_TO_BYTE equ 0x321
23: - 033D DHEX_TO_BYTE_FAILED equ 0x33D
24: - 0EC1 EXEC_RST_08 equ 0xEC1
25: - 0EC5 EXEC_RST_10 equ 0xEC5
26: - 0ED1 EXEC_RST_18 equ 0xED1
27: - 0341 HEX_TO_BIN equ 0x341
28: - 034F HEX_TO_BIN_2 equ 0x34F
29: - 0356 HEX_TO_INVALID_2 equ 0x356
30: - 001B INT_VEC equ 0x1B
31: - 027B Includes equ 0x27B
32: - 0307 MSG_CLEAR equ 0x307
33: - 1091 MSG_ERROR equ 0x1091
34: - 10AA MSG_START equ 0x10AA
35: - 0096 PROMPT_BEGIN equ 0x96
36: - 00D3 PROMPT_BEGIN_READ_BACKSPACE equ 0xD3
37: - 00A2 PROMPT_BEGIN_READ_LOOP equ 0xA2
38: - 00F9 PROMPT_BEGIN_READ_PROCESS equ 0xF9
39: - 0000 RST_00 equ 0x00
40: - 0008 RST_08 equ 0x08
41: - 0010 RST_10 equ 0x10
42: - 0018 RST_18 equ 0x18
43: - 0358 STRCONV_BYTES_TO_HEX equ 0x358
44: - 0367 STRCONV_BYTES_TO_HEX_1 equ 0x367
45: - 0371 STRCONV_BYTES_TO_HEX_2 equ 0x371
46: - 0F03 STR_Banner_Start equ 0xF03
47: - 0F33 STR_HEXDUMP_HEADER equ 0xF33
48: - 0F29 STR_SyntaxError equ 0xF29
49: - 0F2E STR_Unknown equ 0xF2E
50: - 0ED4 beep equ 0xED4
51: - 0ED7 beep_loop equ 0xED7
52: - 0EF4 beep_pause equ 0xEF4
53: - 0AD9 dasm_00 equ 0xAD9
54: - 0DC5 dasm_01 equ 0xDC5
55: - 0B5F dasm_02 equ 0xB5F
56: - 0D97 dasm_03 equ 0xD97
57: - 0BDC dasm_08 equ 0xBDC
58: - 0D6A dasm_09 equ 0xD6A
59: - 0B41 dasm_0A equ 0xB41
60: - 0DAE dasm_0B equ 0xDAE
61: - 0B21 dasm_10 equ 0xB21
62: - 0B6A dasm_12 equ 0xB6A
63: - 0AE4 dasm_18 equ 0xAE4
64: - 0B4B dasm_1A equ 0xB4B
65: - 0AFE dasm_20 equ 0xAFE
66: - 0E0B dasm_22 equ 0xE0B
67: - 0BA4 dasm_27 equ 0xBA4
68: - 0AF7 dasm_28 equ 0xAF7
69: - 0DDC dasm_2A equ 0xDDC
70: - 0BA8 dasm_2F equ 0xBA8
71: - 0AEF dasm_30 equ 0xAEF
72: - 0B75 dasm_32 equ 0xB75
73: - 0BB4 dasm_37 equ 0xBB4
74: - 0AE8 dasm_38 equ 0xAE8
75: - 0B55 dasm_3A equ 0xB55
76: - 0BB0 dasm_3F equ 0xBB0
77: - 0BB8 dasm_76 equ 0xBB8
78: - 0C35 dasm_80C6 equ 0xC35
79: - 0BD2 dasm_BE equ 0xBD2
80: - 0ADD dasm_C3 equ 0xADD
81: - 0C5B dasm_C88E equ 0xC5B
82: - 0B2D dasm_C9 equ 0xB2D
83: - 0B27 dasm_CD equ 0xB27
84: - 0BE9 dasm_D9 equ 0xBE9
85: - 0B0F dasm_DD equ 0xB0F
86: - 0DCC dasm_DD_01 equ 0xDCC
87: - 0D85 dasm_DD_09 equ 0xD85
88: - 0E21 dasm_DD_22 equ 0xE21
89: - 0D9C dasm_DD_23 equ 0xD9C
90: - 0DF3 dasm_DD_2A equ 0xDF3
91: - 0DB3 dasm_DD_2B equ 0xDB3
92: - 0D35 dasm_DD_34 equ 0xD35
93: - 0D52 dasm_DD_35 equ 0xD52
94: - 0C3D dasm_DD_86 equ 0xC3D
95: - 0C63 dasm_DD_8E equ 0xC63
96: - 0C86 dasm_DD_96 equ 0xC86
97: - 0CA6 dasm_DD_9E equ 0xCA6
98: - 0CC7 dasm_DD_A6 equ 0xCC7
99: - 0CFE dasm_DD_AE equ 0xCFE
100: - 0CE3 dasm_DD_B6 equ 0xCE3
101: - 0D1A dasm_DD_BE equ 0xD1A
102: - 0E73 dasm_DD_E1 equ 0xE73
103: - 0BF9 dasm_DD_E3 equ 0xBF9
104: - 0E5D dasm_DD_E5 equ 0xE5D
105: - 0E43 dasm_DD_F9 equ 0xE43
106: - 0E6D dasm_E1 equ 0xE6D
107: - 0BED dasm_E3 equ 0xBED
108: - 0E57 dasm_E5 equ 0xE57
109: - 0B06 dasm_E9 equ 0xB06
110: - 0D7C dasm_ED_42 equ 0xD7C
111: - 0E17 dasm_ED_43 equ 0xE17
112: - 0BAC dasm_ED_44 equ 0xBAC
113: - 0B37 dasm_ED_45 equ 0xB37
114: - 0BC3 dasm_ED_46 equ 0xBC3
115: - 0D73 dasm_ED_4A equ 0xD73
116: - 0DE8 dasm_ED_4B equ 0xDE8
117: - 0B32 dasm_ED_4D equ 0xB32
118: - 0BC8 dasm_ED_56 equ 0xBC8
119: - 0BCD dasm_ED_5E equ 0xBCD
120: - 0C11 dasm_ED_A0 equ 0xC11
121: - 0C23 dasm_ED_A1 equ 0xC23
122: - 0C1A dasm_ED_A8 equ 0xC1A
123: - 0C2C dasm_ED_A9 equ 0xC2C
124: - 0C15 dasm_ED_B0 equ 0xC15
125: - 0C27 dasm_ED_B1 equ 0xC27
126: - 0C1E dasm_ED_B8 equ 0xC1E
127: - 0C30 dasm_ED_B9 equ 0xC30
128: - 0BBD dasm_F3 equ 0xBBD
129: - 0E39 dasm_F9 equ 0xE39
130: - 0BC0 dasm_FB equ 0xBC0
131: - 0B18 dasm_FD equ 0xB18
132: - 0DD4 dasm_FD_01 equ 0xDD4
133: - 0D8E dasm_FD_09 equ 0xD8E
134: - 0E2D dasm_FD_22 equ 0xE2D
135: - 0DA5 dasm_FD_23 equ 0xDA5
136: - 0DFF dasm_FD_2A equ 0xDFF
137: - 0DBC dasm_FD_2B equ 0xDBC
138: - 0D41 dasm_FD_34 equ 0xD41
139: - 0D5E dasm_FD_35 equ 0xD5E
140: - 0C4C dasm_FD_86 equ 0xC4C
141: - 0C72 dasm_FD_8E equ 0xC72
142: - 0C92 dasm_FD_96 equ 0xC92
143: - 0CB4 dasm_FD_9E equ 0xCB4
144: - 0CD3 dasm_FD_A6 equ 0xCD3
145: - 0D0A dasm_FD_AE equ 0xD0A
146: - 0CEE dasm_FD_B6 equ 0xCEE
147: - 0D25 dasm_FD_BE equ 0xD25
148: - 0E7B dasm_FD_E1 equ 0xE7B
149: - 0C05 dasm_FD_E3 equ 0xC05
150: - 0E65 dasm_FD_E5 equ 0xE65
151: - 0E4D dasm_FD_F9 equ 0xE4D
152: - 0B3C dasm_FF equ 0xB3C
153: - 0E83 dasm_UU equ 0xE83
154: - 0E87 dasm_UW equ 0xE87
155: - 0CC2 dasm__AND equ 0xCC2
156: - 0D16 dasm__CP equ 0xD16
157: - 0D4D dasm__DEC equ 0xD4D
158: - 0B94 dasm__ED_47 equ 0xB94
159: - 0B9C dasm__ED_4F equ 0xB9C
160: - 0B84 dasm__ED_57 equ 0xB84
161: - 0B8C dasm__ED_5F equ 0xB8C
162: - 0D30 dasm__INC equ 0xD30
163: - 0B80 dasm__LD equ 0xB80
164: - 0CDF dasm__OR equ 0xCDF
165: - 0C9E dasm__SBC equ 0xC9E
166: - 0C81 dasm__SUB equ 0xC81
167: - 0CF9 dasm__XOR equ 0xCF9
168: - 0681 dasm_opcode_table equ 0x681
169: - 04AE dasm_print16hex_addr equ 0x4AE
170: - 04C6 dasm_print8hex equ 0x4C6
171: - 0E8C dasm_printFlags_table equ 0xE8C
172: - 0E9C dasm_printRegister8_table equ 0xE9C
173: - 0EBC dasm_printRegister8_table_HL equ 0xEBC
174: - 0EA4 dasm_printRegisterIX_table equ 0xEA4
175: - 0EAC dasm_printRegisterIY_table equ 0xEAC
176: - 0EB4 dasm_printRegisterSP_table equ 0xEB4
177: - 0372 disassemble equ 0x372
178: - 0458 disassemble_continue equ 0x458
179: - 0448 disassemble_err equ 0x448
180: - 0376 disassemble_next equ 0x376
181: - 0445 disassemble_print_opcode_params_end equ 0x445
182: - 03F1 disassemble_print_opcode_params_loop equ 0x3F1
183: - 03B3 disassemble_print_opcode_raw equ 0x3B3
184: - 03C7 disassemble_print_opcode_raw_fill equ 0x3C7
185: - 048A disassemble_table_first_match equ 0x48A
186: - 04A4 disassemble_table_found equ 0x4A4
187: - 04A8 disassemble_table_notfound equ 0x4A8
188: - 0466 disassemble_table_seek equ 0x466
189: - 046A disassemble_table_seek_loop equ 0x46A
190: - 007B mon_start_complete equ 0x7B
191: - 0050 mon_start_init_ctc equ 0x50
192: - 0064 mon_start_init_serial equ 0x64
193: - 0050 mon_start_init_sound equ 0x50
194: - 0067 mon_start_ram equ 0x67
195: - 0070 mon_start_ram_loop equ 0x70
196: - 0044 mon_var_template equ 0x44
197: - 006E mon_var_template_end equ 0x6E
198: - 04D4 param_01 equ 0x4D4
199: - 04FB param_02 equ 0x4FB
200: - 0518 param_03 equ 0x518
201: - 0550 param_03_done equ 0x550
202: - 0539 param_03_neg equ 0x539
203: - 0554 param_04 equ 0x554
204: - 0564 param_04_i equ 0x564
205: - 056A param_05 equ 0x56A
206: - 0577 param_06 equ 0x577
207: - 0591 param_07 equ 0x591
208: - 059E param_08 equ 0x59E
209: - 05B3 param_09 equ 0x5B3
210: - 05B9 param_09_0A equ 0x5B9
211: - 05AA param_0A equ 0x5AA
212: - 05C8 param_10 equ 0x5C8
213: - 05D8 param_11 equ 0x5D8
214: - 05E7 param_11_12 equ 0x5E7
215: - 0607 param_11_12_all equ 0x607
216: - 05FA param_11_12_def equ 0x5FA
217: - 05FF param_11_12_ix equ 0x5FF
218: - 0604 param_11_12_iy equ 0x604
219: - 05E0 param_12 equ 0x5E0
220: - 0618 param_13 equ 0x618
221: - 0637 param_80 equ 0x637
222: - 063E param_80_seek equ 0x63E
223: - 062E param_81 equ 0x62E
224: - 0672 param_comma equ 0x672
225: - 064D param_printRegister equ 0x64D
226: - 066B param_printRegisterA equ 0x66B
227: - 0663 param_printRegisterHL equ 0x663
228: - 02E4 print_a_hex equ 0x2E4
229: - 02B4 print_char equ 0x2B4
230: - 02C7 print_clear equ 0x2C7
231: - 02CE print_newLine equ 0x2CE
232: - 02BC print_str equ 0x2BC
233: - 02C6 print_str_end equ 0x2C6
234: - 02D9 print_wait_out equ 0x2D9
235: - 02F5 read_char equ 0x2F5
236: - 4029 var_buffer equ 0x4029
237: - 4000 var_buffer_len equ 0x4000
238: - 4006 var_curserchar equ 0x4006
239: - 4007 var_curserlastaddr equ 0x4007
240: - 4005 var_curseron equ 0x4005
241: - 4004 var_curserstate equ 0x4004
242: - 4002 var_curserx equ 0x4002
243: - 4003 var_cursery equ 0x4003
244: - 4001 var_last_char equ 0x4001
245: - 4019 var_ps2mem equ 0x4019
246: - 4009 var_scratch equ 0x4009
247: - 10C4 xmodem_ack equ 0x10C4
248: - 0F7D xmodem_await_conn equ 0xF7D
249: - 1028 xmodem_end equ 0x1028
250: - 0FEE xmodem_err equ 0xFEE
251: - 0F4F xmodem_init equ 0xF4F
252: - 102F xmodem_int equ 0x102F
253: - 104E xmodem_int_cont equ 0x104E
254: - 10D2 xmodem_nak equ 0x10D2
255: - 1080 xmodem_out equ 0x1080
256: - 0F88 xmodem_packet equ 0xF88
257: - 0FE6 xmodem_packet_EOT equ 0xFE6
258: - 0F9A xmodem_packet_get equ 0xF9A
259: - 0FD3 xmodem_packet_get_crc equ 0xFD3
260: - 0FC4 xmodem_packet_get_data equ 0xFC4
261: - 1053 xmodem_read_wait equ 0x1053
262: - 1061 xmodem_read_wait_loop equ 0x1061
263: - 107E xmodem_read_wait_timeout equ 0x107E
264: - 10E0 xmodem_wait equ 0x10E0
265: - 10E6 xmodem_wait_1 equ 0x10E6
266: - 1086 xmodem_wait_out equ 0x1086
**** test.asm ****
2: - B000 org 0xB000
3: ;Testing code
4: 0+17 B000 CD47B1 call ideif_init_drive
5:
6: ;testread sector
7: 17+7 B003 3E01 LD A,1 ;read 1 sector
8: 24+7 B005 060A LD B,IDE_REG_SECTOR
9: 31+17 B007 CD4BB0 CALL ide_regwrite_8
10:
11: 48+7 B00A 3E01 LD A,1 ;read sector 0
12: 55+7 B00C 060B LD B,IDE_REG_SSECTOR
13: 62+17 B00E CD4BB0 CALL ide_regwrite_8
14:
15: 79+7 B011 3E00 LD A,0 ;read cylinder 0
16: 86+7 B013 060C LD B,IDE_REG_LCYL
17: 93+17 B015 CD4BB0 CALL ide_regwrite_8
18: 110+7 B018 3E00 LD A,0
19: 117+7 B01A 060D LD B,IDE_REG_HCYL
20: 124+17 B01C CD4BB0 CALL ide_regwrite_8
21:
22: 141+7 B01F 3EA0 LD A,10100000b ;read head 0
23: 148+7 B021 060E LD B,IDE_REG_HEAD
24: 155+17 B023 CD4BB0 CALL ide_regwrite_8
25:
26: 172+7 B026 3E20 LD A,IDE_CMD_READSEC ;send read command
27: 179+7 B028 060F LD B,IDE_REG_CMDSTS
28: 186+17 B02A CD4BB0 CALL ide_regwrite_8
29:
30: 203+10 B02D 210250 LD HL,MEM_IDE_BUFFER ;set read/write buffer start address
31: 213+17 B030 CDB5B0 call ide_readsector_256_inv ;read 256 words from device
32:
33: 230+10 B033 210250 LD HL,MEM_IDE_BUFFER
34: 240+7 B036 0620 LD B,32
35: 247+17 B038 CDEEB1 call dump_pretty
36:
37: 264+10 B03B C39600 JP PROMPT_BEGIN
38:
39:
40:
41: .include "kdrv_ide8255.s" ;include ide interface driver.
**** include/kdrv_ide8255.s ****
1: ;----------------------------------------------------------------
2: ;BIOS Driver for IDE Interface 82C55
3: ;by Dennis Gunia (01/2023)
4: ;----------------------------------------------------------------
5:
6: ;================================================================
7: ; I/O registers
8: ;================================================================
9: - 0030 CS_PIA_PA .EQU 0x30 ; D0-7
10: - 0031 CS_PIA_PB .EQU 0x31 ; D8-15
11: - 0032 CS_PIA_PC .EQU 0x32 ; Controll Lines
12: - 0033 CS_PIA_CR .EQU 0x33
13:
14: ;================================================================
15: ; I/O pins
16: ;================================================================
17: - 0020 IDE_WR .EQU 00100000b
18: - 0040 IDE_RD .EQU 01000000b
19: - 0080 IDE_RST .EQU 10000000b
20:
21: ;================================================================
22: ; IDE registers
23: ;================================================================
24: - 0008 IDE_REG_DATA .EQU 01000b ;data I/O register (16-bits)
25: - 0009 IDE_REG_ERROR .EQU 01001b ;error information register when read; write precompensation register when written.
26: - 000A IDE_REG_SECTOR .EQU 01010b ;Sector counter register
27: - 000B IDE_REG_SSECTOR .EQU 01011b ;Start sector register
28: - 000C IDE_REG_LCYL .EQU 01100b ;Low byte of the cylinder number
29: - 000D IDE_REG_HCYL .EQU 01101b ;High two bits of the cylinder number
30: - 000E IDE_REG_HEAD .EQU 01110b ;Head and device select register
31: - 000F IDE_REG_CMDSTS .EQU 01111b ;command/status register
32: - 0016 IDE_REG_ALTSTS .EQU 10110b ;Alternate Status/Digital Output
33: - 0017 IDE_REG_DRVADDR .EQU 10111b ;Drive Address
34:
35: ;================================================================
36: ; I/O access functions
37: ;================================================================
38:
39: ;------------------------------------------------------------------------------
40: ; ide_reset
41: ;
42: ; resets drives on bus
43: ;------------------------------------------------------------------------------
44: - B03E ide_reset:
45: 274+7 B03E 3E80 LD A, 10000000b ;CommandByte-A, Mode 0, PA Out, PC Out, PB Out
46: 281+11 B040 D333 OUT (CS_PIA_CR), A ;Set Data direction to out
47: 292+7 B042 3E80 LD A, IDE_RST
48: 299+11 B044 D332 OUT (CS_PIA_PC), A ;Reset IDE Device
49: 310+4 B046 00 NOP
50: 314+4 B047 AF XOR A
51: 318+11 B048 D332 OUT (CS_PIA_PC), A ;end device reset
52: 329+10 B04A C9 RET
53:
54:
55: ;------------------------------------------------------------------------------
56: ; ide_regwrite_8
57: ;
58: ; Sends data to the IDE device
59: ; A contains DATA
60: ; B contains register number
61: ;------------------------------------------------------------------------------
62: - B04B ide_regwrite_8:
63: 339+11 B04B F5 PUSH AF ;store date to stack
64: ; Prepare PIA Data Direction
65: 350+7 B04C 3E80 LD A, 10000000b ;CommandByte-A, Mode 0, PA Out, PC Out, PB Out
66: 357+11 B04E D333 OUT (CS_PIA_CR), A ;Set Data direction to out
67: ; Write Data out
68: 368+10 B050 F1 POP AF
69: 378+11 B051 D330 OUT (CS_PIA_PA), A ;Write Data to bit 0-7
70: ;Prepare Address
71: 389+4 B053 78 LD A, B ;Load register address
72: 393+7 B054 E61F AND 00011111b ;Mask unused bits
73: 400+11 B056 D332 OUT (CS_PIA_PC), A ;Write Data to bit controll lines
74: 411+7 B058 F620 OR IDE_WR ;Set Write bit
75: 418+11 B05A D332 OUT (CS_PIA_PC), A ;Set write signal
76: 429+4 B05C 00 NOP ;delay to wait for processing
77: 433+4 B05D 78 LD A, B ;Load register address
78: 437+7 B05E E61F AND 00011111b ;Mask unused bits
79: 444+11 B060 D332 OUT (CS_PIA_PC), A ;disable write signal
80: 455+4 B062 00 NOP
81: 459+4 B063 AF XOR A ;clear register A
82: 463+11 B064 D332 OUT (CS_PIA_PC), A ;clear controll lines
83: 474+10 B066 C9 RET
84:
85:
86: ;------------------------------------------------------------------------------
87: ; ide_regread_8
88: ;
89: ; Sends data to the IDE device
90: ; B contains register number
91: ; A returns data
92: ;------------------------------------------------------------------------------
93: - B067 ide_regread_8:
94: 484+7 B067 3E92 LD A, 10010010b ;CommandByte-A, Mode 0, PA IN, PC Out, PB IN
95: 491+11 B069 D333 OUT (CS_PIA_CR), A ;Set Data direction to in
96: ;Prepare Address
97: 502+4 B06B 78 LD A, B ;Load register address
98: 506+7 B06C E61F AND 00011111b ;Mask unused bits
99: 513+11 B06E D332 OUT (CS_PIA_PC), A ;Write Data to bit controll lines
100: 524+7 B070 F640 OR IDE_RD ;Set Write bit
101: 531+11 B072 D332 OUT (CS_PIA_PC), A ;Write Data to bit controll lines
102: 542+4 B074 00 NOP ;delay to wait for processing
103: 546+11 B075 F5 PUSH AF
104: 557+10 B076 F1 POP AF
105: 567+11 B077 F5 PUSH AF
106: 578+10 B078 F1 POP AF
107: 588+11 B079 F5 PUSH AF
108: 599+10 B07A F1 POP AF
109: 609+11 B07B F5 PUSH AF
110: 620+10 B07C F1 POP AF
111: 630+11 B07D DB30 IN A,(CS_PIA_PA) ;read data from ide device to b (because a is used later)
112: 641+11 B07F F5 PUSH AF
113: 652+4 B080 AF XOR A ;clear register A
114: 656+11 B081 D332 OUT (CS_PIA_PC), A ;clear controll lines
115: 667+10 B083 F1 POP AF ;put data in accumulator
116: 677+10 B084 C9 RET
117:
118:
119: ;------------------------------------------------------------------------------
120: ; ide_readsector_256
121: ;
122: ; Reads IDE Data
123: ; HL contains destination address
124: ;------------------------------------------------------------------------------
125: - B085 ide_readsector_256:
126: 687+7 B085 0EFF LD C,255 ;Setup counter for 256 words
127:
128: - B087 ide_readsector_256_waitloop:
129: 694+7 B087 060F LD B, IDE_REG_CMDSTS
130: 701+17 B089 CD67B0 CALL ide_regread_8
131: 718+8 B08C CB47 BIT 0,a ;Error Bit set.
132: 726+10 B08E C2E5B0 JP NZ, ide_printerror
133: 736+8 B091 CB5F BIT 3,a ;DRQ Bit set. If set, disk has data
134: 744+7+5 B093 28F2 JR Z, ide_readsector_256_waitloop ;If not set, wait
135:
136: 751+7 B095 3E92 LD A, 10010010b ;CommandByte-A, Mode 0, PA IN, PC Out, PB IN
137: 758+11 B097 D333 OUT (CS_PIA_CR), A ;Set Data direction to IN
138: 769+7 B099 3E08 LD A, IDE_REG_DATA ;CS0 and A=0 -> I/O register
139: 776+11 B09B D332 OUT (CS_PIA_PC), A ;set register
140: 787+7 B09D F640 OR IDE_RD ;Set Read bit
141: 794+11 B09F D332 OUT (CS_PIA_PC), A ;Write Read to bit controll lines
142: 805+4 B0A1 00 NOP
143: 809+4 B0A2 00 NOP
144: 813+4 B0A3 00 NOP
145: 817+11 B0A4 DB31 IN A,(CS_PIA_PB) ;Load 16-Bit data to buffer
146: 828+7 B0A6 77 LD (HL), A
147: 835+6 B0A7 23 INC HL
148: 841+11 B0A8 DB30 IN A,(CS_PIA_PA)
149: 852+7 B0AA 77 LD (HL), A
150: 859+6 B0AB 23 INC HL
151:
152: 865+4 B0AC 79 LD A,C
153: 869+4 B0AD B7 OR A
154: 873+10 B0AE CAB4B0 JP Z,ide_readsector_256_done
155: 883+4 B0B1 0D DEC C
156: 887+12 B0B2 18D3 JR ide_readsector_256_waitloop
157:
158: - B0B4 ide_readsector_256_done:
159: 899+10 B0B4 C9 RET
160:
161: - B0B5 ide_readsector_256_inv:
162: 909+7 B0B5 0EFF LD C,255 ;Setup counter for 256 words
163:
164: - B0B7 ide_readsector_256_inv_waitloop:
165: 916+7 B0B7 060F LD B, IDE_REG_CMDSTS
166: 923+17 B0B9 CD67B0 CALL ide_regread_8
167: 940+8 B0BC CB47 BIT 0,a ;Error Bit set.
168: 948+10 B0BE C2E5B0 JP NZ, ide_printerror
169: 958+8 B0C1 CB5F BIT 3,a ;DRQ Bit set. If set, disk has data
170: 966+7+5 B0C3 28F2 JR Z, ide_readsector_256_inv_waitloop ;If not set, wait
171:
172: 973+7 B0C5 3E92 LD A, 10010010b ;CommandByte-A, Mode 0, PA IN, PC Out, PB IN
173: 980+11 B0C7 D333 OUT (CS_PIA_CR), A ;Set Data direction to IN
174: 991+7 B0C9 3E08 LD A, IDE_REG_DATA ;CS0 and A=0 -> I/O register
175: 998+11 B0CB D332 OUT (CS_PIA_PC), A ;set register
176: 1009+7 B0CD F640 OR IDE_RD ;Set Read bit
177: 1016+11 B0CF D332 OUT (CS_PIA_PC), A ;Write Read to bit controll lines
178: 1027+4 B0D1 00 NOP
179: 1031+4 B0D2 00 NOP
180: 1035+4 B0D3 00 NOP
181: 1039+11 B0D4 DB30 IN A,(CS_PIA_PA) ;Load 16-Bit data to buffer
182: 1050+7 B0D6 77 LD (HL), A
183: 1057+6 B0D7 23 INC HL
184: 1063+11 B0D8 DB31 IN A,(CS_PIA_PB)
185: 1074+7 B0DA 77 LD (HL), A
186: 1081+6 B0DB 23 INC HL
187:
188: 1087+4 B0DC 79 LD A,C
189: 1091+4 B0DD B7 OR A
190: 1095+10 B0DE CAB4B0 JP Z,ide_readsector_256_done
191: 1105+4 B0E1 0D DEC C
192: 1109+12 B0E2 18D3 JR ide_readsector_256_inv_waitloop
193:
194:
195:
196: ;------------------------------------------------------------------------------
197: ; ide_writesector_256
198: ;
199: ; Writes 512 bytes (256 words) of IDE Data
200: ; HL contains data start address
201: ;------------------------------------------------------------------------------
202: - B0E4 ide_writesector_256:
203: 1121+10 B0E4 C9 RET ;NOT IMPLEMENTED
204:
205:
206: ;================================================================
207: ; utility functions
208: ;================================================================
209:
210: ;------------------------------------------------------------------------------
211: ; ide_printerror
212: ;
213: ; prints IDE error to console
214: ;------------------------------------------------------------------------------
215: - B0E5 ide_printerror:
216: 1131+10 B0E5 2118B1 LD HL, [str_error_start]
217: 1141+17 B0E8 CDBC02 CALL print_str
218: 1158+7 B0EB 060F LD B, IDE_REG_CMDSTS
219: 1165+17 B0ED CD67B0 CALL ide_regread_8
220: 1182+17 B0F0 CDE402 CALL print_a_hex
221: 1199+10 B0F3 2135B1 LD HL, [str_error_start1]
222: 1209+17 B0F6 CDBC02 CALL print_str
223: 1226+13 B0F9 3A0050 LD A,(MEM_IDE_DEVICE)
224: 1239+17 B0FC CDE402 CALL print_a_hex
225: 1256+10 B0FF 213EB1 LD HL, [str_error_start2]
226: 1266+17 B102 CDBC02 CALL print_str
227: 1283+7 B105 0609 LD B, IDE_REG_ERROR
228: 1290+17 B107 CD67B0 CALL ide_regread_8
229: 1307+17 B10A CDE402 CALL print_a_hex
230: 1324+7 B10D 3E0A LD A,10
231: 1331+17 B10F CDB402 CALL print_char
232: 1348+7 B112 3E0D LD A,13
233: 1355+17 B114 CDB402 CALL print_char
234:
235: 1372+10 B117 C9 RET
236:
237: - B118 str_error_start:
238: - B118 0D0A4469 db 13,10,"Disk I/O error. Status: 0x",0
736B2049
2F4F2065
72726F72
2E205374
61747573
3A203078
00
239: - B135 str_error_start1:
240: - B135 20446576 db " Dev: 0x",0
3A203078
00
241: - B13E str_error_start2:
242: - B13E 20457272 db " Err: 0x",0
3A203078
00
243:
**** test.asm ****
42: .include "kdrv_ideif.s" ;include ide driver.
**** include/kdrv_ideif.s ****
1: ;----------------------------------------------------------------
2: ;BIOS Driver for IDE Access
3: ;by Dennis Gunia (01/2023)
4: ;----------------------------------------------------------------
5:
6: ;================================================================
7: ; IDE commands
8: ;================================================================
9: - 00EC IDE_CMD_IDENT .EQU 0xEC ;Identify drive.
10: - 0020 IDE_CMD_READSEC .EQU 0x20 ;Read sectors.
11:
12: ;================================================================
13: ; IDE Variables
14: ;================================================================
15: - 5000 MEM_IDE_BASE .EQU 0x5000
16: - 5000 MEM_IDE_DEVICE .EQU MEM_IDE_BASE ;1Byte: Device ID for IDE-Port, Controller and Master/Slave
17: - 5001 MEM_IDE_STATUS .EQU MEM_IDE_BASE + 1 ;1Byte: 0x00 if status is okay
18: - 5002 MEM_IDE_BUFFER .EQU MEM_IDE_BASE + 2 ;512Byte: buffer for read/write data
19:
20: ;================================================================
21: ; IDE funtions
22: ;================================================================
23:
24: ;------------------------------------------------------------------------------
25: ; ideif_init_drive
26: ;
27: ; initializes drive
28: ;------------------------------------------------------------------------------
29: - B147 ideif_init_drive:
30: 1382+4 B147 AF xor a
31: 1386+13 B148 320050 ld (MEM_IDE_DEVICE),A ;Set device to 0
32: 1399+13 B14B 320150 ld (MEM_IDE_STATUS),A ;Set status to 0 (OK)
33: 1412+4 B14E F3 di ;disable interrupt
34: 1416+17 B14F CD3EB0 call ide_reset ;Reset drives on bus
35: 1433+10 B152 21A9B1 ld hl, [str_dev_waitready]
36: 1443+17 B155 CDBC02 call print_str ;print waiting message
37: 1460+10 B158 11FF1F ld DE, 0x1FFF ;preload timeout counter
38: - B15B ideif_init_drive_loop1:
39: 1470+7 B15B 060F ld b, IDE_REG_CMDSTS
40: 1477+17 B15D CD67B0 call ide_regread_8 ;read drive status register
41: 1494+4 B160 B7 OR A
42: 1498+7+5 B161 280B JR Z, ideif_init_drive_nodrv ;no drive found
43: 1505+8 B163 CB77 BIT 6,A ;Wait for device ready
44: 1513+7+5 B165 200E JR NZ, ideif_init_drive_detected
45: 1520+6 B167 1B DEC DE ; decrement timeout
46: 1526+4 B168 7A LD A,D
47: 1530+4 B169 B3 OR E
48: 1534+7+5 B16A 2802 JR Z, ideif_init_drive_nodrv
49:
50: 1541+12 B16C 18ED JR ideif_init_drive_loop1
51:
52: - B16E ideif_init_drive_nodrv:
53: 1553+10 B16E 21DAB1 ld hl, [str_dev_notfound]
54: 1563+17 B171 CDBC02 call print_str
55: 1580+10 B174 C9 RET
56:
57: - B175 ideif_init_drive_detected:
58: 1590+10 B175 21B9B1 ld hl, [str_dev_ready]
59: 1600+17 B178 CDBC02 call print_str
60: 1617+7 B17B 060F LD B, IDE_REG_CMDSTS ;Get drive identification
61: 1624+7 B17D 3EEC LD A, IDE_CMD_IDENT
62: 1631+17 B17F CD4BB0 call ide_regwrite_8 ;Write command to drive
63: 1648+10 B182 210250 LD HL,MEM_IDE_BUFFER ;set read/write buffer start address
64: 1658+17 B185 CD85B0 call ide_readsector_256 ;read 256 words from device
65: 1675+10 B188 211650 LD HL,MEM_IDE_BUFFER + 20 ;print device serial
66: 1685+7 B18B 0614 LD B, 20
67: 1692+17 B18D CD88B2 CALL print_str_fixed
68: 1709+10 B190 21D1B1 ld hl, [str_dev_ready2]
69: 1719+17 B193 CDBC02 call print_str
70: 1736+10 B196 213850 LD HL,MEM_IDE_BUFFER + 54 ;print device name
71: 1746+7 B199 0628 LD B, 40
72: 1753+17 B19B CD88B2 CALL print_str_fixed
73: 1770+7 B19E 3E0A LD A,10 ;New line
74: 1777+17 B1A0 CDB402 CALL print_char
75: 1794+7 B1A3 3E0D LD A,13
76: 1801+17 B1A5 CDB402 CALL print_char
77: 1818+10 B1A8 C9 RET
78:
79:
80: ;================================================================
81: ; IDE strings
82: ;===============================================================
83:
84: - B1A9 str_dev_waitready:
85: - B1A9 0D0A5365 db 13,10,"Seek HDD ... ",0
656B2048
4444202E
2E2E2000
86:
87: - B1B9 str_dev_ready:
88: - B1B9 44657669 db "Device Found!",13,10,"Serial: ",0
63652046
6F756E64
210D0A53
65726961
6C3A2000
89: - B1D1 str_dev_ready2:
90: - B1D1 20204E61 db " Name: ",0
6D653A20
00
91:
92: - B1DA str_dev_notfound:
**** test.asm ****
43: - B1DA 6E6F2064 db "no drive detected",13,10,0
72697665
20646574
65637465
640D0A00
44: .include "prettydump.s" ;include monitor symbols.
**** include/prettydump.s ****
1: ;----------------------------------------------------------------
2: ;HEX and ASCII dump function
3: ;by Dennis Gunia (01/2023)
4: ;----------------------------------------------------------------
5:
6: ;------------------------------------------------------------------------------
7: ; dump_pretty
8: ;
9: ; Dumps memory content
10: ; B contains amount of rows
11: ; HL contains start address
12: ; Destroys BC, HL
13: ;------------------------------------------------------------------------------
14: - B1EE dump_pretty:
15: 1828+11 B1EE E5 PUSH HL
16: 1839+10 B1EF 2149B2 LD HL,[STR_PD_HEADER] ;Print header
17: 1849+17 B1F2 CDBC02 CALL print_str
18: 1866+10 B1F5 E1 POP HL
19: - B1F6 dump_pretty_row:
20: 1876+4 B1F6 78 LD A,B ;Check row counter
21: 1880+4 B1F7 B7 OR A
22: 1884+10 B1F8 CA48B2 JP Z, dump_pretty_end ;If counter is 0, exit
23: 1894+4 B1FB 05 DEC B ;Decrement row counter by 1
24: 1898+7 B1FC 0E10 LD C, 16 ;Load column counter
25: 1905+4 B1FE 7C LD A, H ;Print base address
26: 1909+17 B1FF CDE402 CALL print_a_hex
27: 1926+4 B202 7D LD A, L
28: 1930+17 B203 CDE402 CALL print_a_hex
29: 1947+7 B206 3E20 LD A, ' '
30: 1954+17 B208 CDB402 CALL print_char
31: - B20B dump_pretty_col: ;Loop for column
32: 1971+7 B20B 7E LD A,(HL) ;Load byte to disply
33: 1978+17 B20C CDE402 CALL print_a_hex
34: 1995+7 B20F 3E20 LD A, ' '
35: 2002+17 B211 CDB402 CALL print_char
36: 2019+6 B214 23 INC HL
37: 2025+4 B215 0D DEC C ;Decrement column counter
38: 2029+7+5 B216 20F3 JR NZ, dump_pretty_col ;Loop if not 0
39: - B218 dump_pretty_ascii:
40: 2036+11 B218 C5 PUSH BC
41: 2047+11 B219 E5 PUSH HL
42: 2058+7 B21A 0600 LD B,0
43: 2065+7 B21C 0E10 LD C,16
44: 2072+15 B21E ED42 SBC HL,BC ;Reset HL by column count
45: - B220 dump_pretty_ascii_loop:
46: 2087+7 B220 7E LD A,(HL)
47: 2094+6 B221 23 INC HL
48: 2100+7 B222 FE20 CP 32
49: 2107+10 B224 DA31B2 JP C, dump_pretty_ascii_none ;if less than 32, it is not a char
50: 2117+7 B227 FE7F CP 127
51: 2124+10 B229 D231B2 JP NC, dump_pretty_ascii_none ;if greater or equal than 128, it is not a char
52: 2134+17 B22C CDB402 call print_char
53: 2151+12 B22F 1805 jr dump_pretty_ascii_cont
54: - B231 dump_pretty_ascii_none:
55: 2163+7 B231 3E2E LD A,'.'
56: 2170+17 B233 CDB402 call print_char
57: - B236 dump_pretty_ascii_cont:
58: 2187+4 B236 0D DEC C
59: 2191+10 B237 C220B2 JP NZ, dump_pretty_ascii_loop
60:
61:
62: 2201+10 B23A E1 POP HL
63: 2211+10 B23B C1 POP BC
64: - B23C dump_pretty_nextrow:
65: 2221+7 B23C 3E0A LD A,10 ;New line
66: 2228+17 B23E CDB402 CALL print_char
67: 2245+7 B241 3E0D LD A,13
68: 2252+17 B243 CDB402 CALL print_char
69: 2269+12 B246 18AE JR dump_pretty_row ;Else next line
70: - B248 dump_pretty_end:
71: 2281+10 B248 C9 RET
72:
73: - B249 STR_PD_HEADER:
74: - B249 0D0A4241 db 13,10,'BASE 0 1 2 3 4 5 6 7 8 9 A B C D E F ASCII',13,10,0
53452030
20203120
20322020
33202034
20203520
20362020
37202038
20203920
20412020
42202043
20204420
20452020
46202041
53434949
0D0A00
75:
76:
77: ;------------------------------------------------------------------------------
78: ; print_str_fixed
79: ;
80: ; Prints string with fixed length
81: ; B contains length
82: ; HL contains start address
83: ;------------------------------------------------------------------------------
84: - B288 print_str_fixed:
85: 2291+7 B288 7E LD A,(HL)
86: 2298+6 B289 23 INC HL
87: 2304+17 B28A CDB402 CALL print_char
88: 2321+8+5 B28D 10F9 DJNZ print_str_fixed
89: 2329+10 B28F C9 RET
90:
**** test.asm ****
45:
46: - B290 delay_small:
47: 2339+11 B290 F5 PUSH AF
48: 2350+10 B291 F1 POP AF
49: 2360+11 B292 F5 PUSH AF
50: 2371+10 B293 F1 POP AF
**** test.asm ****
51: 2381+10 B294 C9 RET
Statistics:
4 passes
0 jr promotions
319 symbols
661 bytes
Symbol Table:
AY0_WRITE_REG =8E 142
A_RTS_OFF = 30F 783
A_RTS_ON = 318 792
CMD_DASM = 236 566
CMD_EXEC = 12C 300
CMD_IO_READ = 21A 538
CMD_IO_WRITE = 1F1 497
CMD_SET = 1B5 437
CMD_SET_END = 1EB 491
CMD_SET_LOOP = 1D0 464
CMD_SYNTAX_ERROR= 26F 623
CMD_VIEW = 14B 331
CMD_VIEW_END = 1AF 431
CMD_VIEW_ROW = 184 388
CMD_VIEW_ROW_LOOP= 196 406
CONSOLE_INIT = 27B 635
CONSOLE_INIT_CTC= 27B 635
CONSOLE_INIT_SIO= 283 643
CS_PIA_CR =33 51
CS_PIA_PA =30 48
CS_PIA_PB =31 49
CS_PIA_PC =32 50
DHEX_TO_BYTE = 321 801
DHEX_TO_BYTE_FAILED= 33D 829
EXEC_RST_08 = EC1 3777
EXEC_RST_10 = EC5 3781
EXEC_RST_18 = ED1 3793
HEX_TO_BIN = 341 833
HEX_TO_BIN_2 = 34F 847
HEX_TO_INVALID_2= 356 854
IDE_CMD_IDENT =EC 236
IDE_CMD_READSEC=20 32
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_LCYL =0C 12
IDE_REG_SECTOR =0A 10
IDE_REG_SSECTOR=0B 11
IDE_RST =80 128
IDE_WR =20 32
INT_VEC =1B 27
Includes = 27B 635
MEM_IDE_BASE =5000 20480
MEM_IDE_BUFFER =5002 20482
MEM_IDE_DEVICE =5000 20480
MEM_IDE_STATUS =5001 20481
MSG_CLEAR = 307 775
MSG_ERROR =1091 4241
MSG_START =10AA 4266
PROMPT_BEGIN =96 150
PROMPT_BEGIN_READ_BACKSPACE=D3 211
PROMPT_BEGIN_READ_LOOP=A2 162
PROMPT_BEGIN_READ_PROCESS=F9 249
RST_00 =00 0
RST_08 =08 8
RST_10 =10 16
RST_18 =18 24
STRCONV_BYTES_TO_HEX= 358 856
STRCONV_BYTES_TO_HEX_1= 367 871
STRCONV_BYTES_TO_HEX_2= 371 881
STR_Banner_Start= F03 3843
STR_HEXDUMP_HEADER= F33 3891
STR_PD_HEADER B249 45641
STR_SyntaxError= F29 3881
STR_Unknown = F2E 3886
beep = ED4 3796
beep_loop = ED7 3799
beep_pause = EF4 3828
dasm_00 = AD9 2777
dasm_01 = DC5 3525
dasm_02 = B5F 2911
dasm_03 = D97 3479
dasm_08 = BDC 3036
dasm_09 = D6A 3434
dasm_0A = B41 2881
dasm_0B = DAE 3502
dasm_10 = B21 2849
dasm_12 = B6A 2922
dasm_18 = AE4 2788
dasm_1A = B4B 2891
dasm_20 = AFE 2814
dasm_22 = E0B 3595
dasm_27 = BA4 2980
dasm_28 = AF7 2807
dasm_2A = DDC 3548
dasm_2F = BA8 2984
dasm_30 = AEF 2799
dasm_32 = B75 2933
dasm_37 = BB4 2996
dasm_38 = AE8 2792
dasm_3A = B55 2901
dasm_3F = BB0 2992
dasm_76 = BB8 3000
dasm_80C6 = C35 3125
dasm_BE = BD2 3026
dasm_C3 = ADD 2781
dasm_C88E = C5B 3163
dasm_C9 = B2D 2861
dasm_CD = B27 2855
dasm_D9 = BE9 3049
dasm_DD = B0F 2831
dasm_DD_01 = DCC 3532
dasm_DD_09 = D85 3461
dasm_DD_22 = E21 3617
dasm_DD_23 = D9C 3484
dasm_DD_2A = DF3 3571
dasm_DD_2B = DB3 3507
dasm_DD_34 = D35 3381
dasm_DD_35 = D52 3410
dasm_DD_86 = C3D 3133
dasm_DD_8E = C63 3171
dasm_DD_96 = C86 3206
dasm_DD_9E = CA6 3238
dasm_DD_A6 = CC7 3271
dasm_DD_AE = CFE 3326
dasm_DD_B6 = CE3 3299
dasm_DD_BE = D1A 3354
dasm_DD_E1 = E73 3699
dasm_DD_E3 = BF9 3065
dasm_DD_E5 = E5D 3677
dasm_DD_F9 = E43 3651
dasm_E1 = E6D 3693
dasm_E3 = BED 3053
dasm_E5 = E57 3671
dasm_E9 = B06 2822
dasm_ED_42 = D7C 3452
dasm_ED_43 = E17 3607
dasm_ED_44 = BAC 2988
dasm_ED_45 = B37 2871
dasm_ED_46 = BC3 3011
dasm_ED_4A = D73 3443
dasm_ED_4B = DE8 3560
dasm_ED_4D = B32 2866
dasm_ED_56 = BC8 3016
dasm_ED_5E = BCD 3021
dasm_ED_A0 = C11 3089
dasm_ED_A1 = C23 3107
dasm_ED_A8 = C1A 3098
dasm_ED_A9 = C2C 3116
dasm_ED_B0 = C15 3093
dasm_ED_B1 = C27 3111
dasm_ED_B8 = C1E 3102
dasm_ED_B9 = C30 3120
dasm_F3 = BBD 3005
dasm_F9 = E39 3641
dasm_FB = BC0 3008
dasm_FD = B18 2840
dasm_FD_01 = DD4 3540
dasm_FD_09 = D8E 3470
dasm_FD_22 = E2D 3629
dasm_FD_23 = DA5 3493
dasm_FD_2A = DFF 3583
dasm_FD_2B = DBC 3516
dasm_FD_34 = D41 3393
dasm_FD_35 = D5E 3422
dasm_FD_86 = C4C 3148
dasm_FD_8E = C72 3186
dasm_FD_96 = C92 3218
dasm_FD_9E = CB4 3252
dasm_FD_A6 = CD3 3283
dasm_FD_AE = D0A 3338
dasm_FD_B6 = CEE 3310
dasm_FD_BE = D25 3365
dasm_FD_E1 = E7B 3707
dasm_FD_E3 = C05 3077
dasm_FD_E5 = E65 3685
dasm_FD_F9 = E4D 3661
dasm_FF = B3C 2876
dasm_UU = E83 3715
dasm_UW = E87 3719
dasm__AND = CC2 3266
dasm__CP = D16 3350
dasm__DEC = D4D 3405
dasm__ED_47 = B94 2964
dasm__ED_4F = B9C 2972
dasm__ED_57 = B84 2948
dasm__ED_5F = B8C 2956
dasm__INC = D30 3376
dasm__LD = B80 2944
dasm__OR = CDF 3295
dasm__SBC = C9E 3230
dasm__SUB = C81 3201
dasm__XOR = CF9 3321
dasm_opcode_table= 681 1665
dasm_print16hex_addr= 4AE 1198
dasm_print8hex = 4C6 1222
dasm_printFlags_table= E8C 3724
dasm_printRegister8_table= E9C 3740
dasm_printRegister8_table_HL= EBC 3772
dasm_printRegisterIX_table= EA4 3748
dasm_printRegisterIY_table= EAC 3756
dasm_printRegisterSP_table= EB4 3764
delay_small B290 45712
disassemble = 372 882
disassemble_continue= 458 1112
disassemble_err= 448 1096
disassemble_next= 376 886
disassemble_print_opcode_params_end= 445 1093
disassemble_print_opcode_params_loop= 3F1 1009
disassemble_print_opcode_raw= 3B3 947
disassemble_print_opcode_raw_fill= 3C7 967
disassemble_table_first_match= 48A 1162
disassemble_table_found= 4A4 1188
disassemble_table_notfound= 4A8 1192
disassemble_table_seek= 466 1126
disassemble_table_seek_loop= 46A 1130
dump_pretty B1EE 45550
dump_pretty_ascii B218 45592
dump_pretty_ascii_cont B236 45622
dump_pretty_ascii_loop B220 45600
dump_pretty_ascii_none B231 45617
dump_pretty_col B20B 45579
dump_pretty_end B248 45640
dump_pretty_nextrow B23C 45628
dump_pretty_row B1F6 45558
ide_printerror B0E5 45285
ide_readsector_256 B085 45189
ide_readsector_256_done B0B4 45236
ide_readsector_256_inv B0B5 45237
ide_readsector_256_inv_waitloop B0B7 45239
ide_readsector_256_waitloop B087 45191
ide_regread_8 B067 45159
ide_regwrite_8 B04B 45131
ide_reset B03E 45118
ide_writesector_256 B0E4 45284
ideif_init_drive B147 45383
ideif_init_drive_detected B175 45429
ideif_init_drive_loop1 B15B 45403
ideif_init_drive_nodrv B16E 45422
mon_start_complete=7B 123
mon_start_init_ctc=50 80
mon_start_init_serial=64 100
mon_start_init_sound=50 80
mon_start_ram =67 103
mon_start_ram_loop=70 112
mon_var_template=44 68
mon_var_template_end=6E 110
param_01 = 4D4 1236
param_02 = 4FB 1275
param_03 = 518 1304
param_03_done = 550 1360
param_03_neg = 539 1337
param_04 = 554 1364
param_04_i = 564 1380
param_05 = 56A 1386
param_06 = 577 1399
param_07 = 591 1425
param_08 = 59E 1438
param_09 = 5B3 1459
param_09_0A = 5B9 1465
param_0A = 5AA 1450
param_10 = 5C8 1480
param_11 = 5D8 1496
param_11_12 = 5E7 1511
param_11_12_all= 607 1543
param_11_12_def= 5FA 1530
param_11_12_ix = 5FF 1535
param_11_12_iy = 604 1540
param_12 = 5E0 1504
param_13 = 618 1560
param_80 = 637 1591
param_80_seek = 63E 1598
param_81 = 62E 1582
param_comma = 672 1650
param_printRegister= 64D 1613
param_printRegisterA= 66B 1643
param_printRegisterHL= 663 1635
print_a_hex = 2E4 740
print_char = 2B4 692
print_clear = 2C7 711
print_newLine = 2CE 718
print_str = 2BC 700
print_str_end = 2C6 710
print_str_fixed B288 45704
print_wait_out = 2D9 729
read_char = 2F5 757
str_dev_notfound B1DA 45530
str_dev_ready B1B9 45497
str_dev_ready2 B1D1 45521
str_dev_waitready B1A9 45481
str_error_start B118 45336
str_error_start1 B135 45365
str_error_start2 B13E 45374
var_buffer =4029 16425
var_buffer_len =4000 16384
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_last_char =4001 16385
var_ps2mem =4019 16409
var_scratch =4009 16393
xmodem_ack =10C4 4292
xmodem_await_conn= F7D 3965
xmodem_end =1028 4136
xmodem_err = FEE 4078
xmodem_init = F4F 3919
xmodem_int =102F 4143
xmodem_int_cont=104E 4174
xmodem_nak =10D2 4306
xmodem_out =1080 4224
xmodem_packet = F88 3976
xmodem_packet_EOT= FE6 4070
xmodem_packet_get= F9A 3994
xmodem_packet_get_crc= FD3 4051
xmodem_packet_get_data= FC4 4036
xmodem_read_wait=1053 4179
xmodem_read_wait_loop=1061 4193
xmodem_read_wait_timeout=107E 4222
xmodem_wait =10E0 4320
xmodem_wait_1 =10E6 4326
xmodem_wait_out=1086 4230