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