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