1125 lines
48 KiB
Plaintext
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
|