# This is a comment. It extends to the end of the line # 32768 byte ROM # 31081 bytes blank # 1687 bytes actual code or data # # GLOBAL { INPUTNAME "WDC65c02SK_v2-0-4-3_2013-07-02.bin"; CPU "65C02"; STARTADDR $8000; PAGELENGTH 0; # No paging OUTPUTNAME "WDC65c02SK_v2-0-4-3_2013-07-02.s.txt"; }; # One segment for the whole stuff SEGMENT { START $8000; END $FFFF; NAME "wibble"; }; # Zero-page variables LABEL { NAME "VAR_00"; ADDR $00; SIZE 3; }; LABEL { NAME "VAR_03"; ADDR $03; SIZE 2; }; LABEL { NAME "VAR_7E"; ADDR $7E; SIZE 2; }; LABEL { NAME "VAR_8F"; ADDR $8F; SIZE 1; }; LABEL { NAME "VAR_AF"; ADDR $AF; SIZE 1; }; # Stack LABEL { NAME "stack"; ADDR $100; SIZE 255; }; # RAM LABEL { NAME "RAM_WORKSPACE_1"; ADDR $7E00; SIZE $1C; }; LABEL { NAME "RAM_temp_PCR"; ADDR $7E1C; }; LABEL { NAME "RAM_temp_DDRB"; ADDR $7E1D; }; LABEL { NAME "RAM_temp_DDRA"; ADDR $7E1E; }; LABEL { NAME "RAM_WORKSPACE_2"; ADDR $7E20; SIZE $50; }; LABEL { NAME "IRQ_entry_vector"; ADDR $7E70; SIZE 2; }; LABEL { NAME "NMI_entry_vector"; ADDR $7E72; SIZE 2; }; # LABEL { NAME "mystery_vector"; ADDR $7E74; SIZE 2; }; # LABEL { NAME "RAM_WORD_TABLE_even"; ADDR $7EE2; }; # LABEL { NAME "RAM_WORD_TABLE_odd"; ADDR $7EE3; }; LABEL { NAME "VECTOR_7EE4"; ADDR $7EE4; }; LABEL { NAME "VECTOR_7EE8"; ADDR $7EE8; }; LABEL { NAME "VECTOR_7EEE"; ADDR $7EEE; }; LABEL { NAME "VECTOR_7EF4"; ADDR $7EF4; }; LABEL { NAME "VECTOR_7EF8"; ADDR $7EF8; }; LABEL { NAME "VECTOR_7EFE"; ADDR $7EFE; }; LABEL { NAME "beginning"; ADDR $8000; }; # # hardware LABEL { NAME "XBUS_CS0"; ADDR $7F00; SIZE 32; }; LABEL { NAME "XBUS_CS1"; ADDR $7F20; SIZE 32; }; LABEL { NAME "XBUS_CS2"; ADDR $7F40; SIZE 32; }; LABEL { NAME "XBUS_CS3"; ADDR $7F60; SIZE 32; }; # LABEL { NAME "USER_ACIA"; ADDR $7F80; SIZE 4; }; LABEL { NAME "USER_ACIA_DATA"; ADDR $7f80 ; }; LABEL { NAME "USER_ACIA_SR"; ADDR $7f81 ; }; LABEL { NAME "USER_ACIA_CMD"; ADDR $7f82 ; }; LABEL { NAME "USER_ACIA_CTL"; ADDR $7f83 ; }; # LABEL { NAME "USER_PIA"; ADDR $7FA0; SIZE 32; }; LABEL { NAME "USER_PIA_DDRA"; ADDR $7fa0 ; }; LABEL { NAME "USER_PIA_CRA "; ADDR $7fa1 ; }; LABEL { NAME "USER_PIA_PIB_DDRB"; ADDR $7fa2 ; }; LABEL { NAME "USER_PIA_CRB "; ADDR $7fa3 ; }; # LABEL { NAME "USER_VIA"; ADDR $7FC0; SIZE 32; }; LABEL { NAME "USER_VIA_IOBB"; ADDR $7fc0 ; }; LABEL { NAME "USER_VIA_IOA"; ADDR $7fc1 ; }; LABEL { NAME "USER_VIA_DDRB"; ADDR $7fc2 ; }; LABEL { NAME "USER_VIA_DDRA"; ADDR $7fc3 ; }; LABEL { NAME "USER_VIA_T1CL"; ADDR $7fc4 ; }; LABEL { NAME "USER_VIA_T1CH"; ADDR $7fc5 ; }; LABEL { NAME "USER_VIA_T1LL"; ADDR $7fc6 ; }; LABEL { NAME "USER_VIA_T1LH"; ADDR $7fc7 ; }; LABEL { NAME "USER_VIA_T2CL"; ADDR $7fc8 ; }; LABEL { NAME "USER_VIA_T2CH"; ADDR $7fc9 ; }; LABEL { NAME "USER_VIA_SR "; ADDR $7fca ; }; LABEL { NAME "USER_VIA_ACR"; ADDR $7fcb ; }; LABEL { NAME "USER_VIA_PCR"; ADDR $7fcc ; }; LABEL { NAME "USER_VIA_IFR"; ADDR $7fcd ; }; LABEL { NAME "USER_VIA_IER"; ADDR $7fce ; }; LABEL { NAME "USER_VIA_ORA_IRA"; ADDR $7fcf ; }; # LABEL { NAME "SYSTEM_VIA"; ADDR $7FE0; SIZE 32; }; LABEL { NAME "SYSTEM_VIA_IOB"; ADDR $7FE0 ; }; LABEL { NAME "SYSTEM_VIA_IOA"; ADDR $7FE1 ; }; LABEL { NAME "SYSTEM_VIA_DDRB"; ADDR $7FE2 ; }; LABEL { NAME "SYSTEM_VIA_DDRA"; ADDR $7FE3 ; }; # # Timers never referred to in code # LABEL { NAME "SYSTEM_VIA_T1C_L"; ADDR $7FE4 ; }; LABEL { NAME "SYSTEM_VIA_T1C_H"; ADDR $7FE5 ; }; LABEL { NAME "SYSTEM_VIA_T1L_L"; ADDR $7FE6 ; }; LABEL { NAME "SYSTEM_VIA_T1L_H"; ADDR $7FE7 ; }; LABEL { NAME "SYSTEM_VIA_T2C_L"; ADDR $7FE8 ; }; LABEL { NAME "SYSTEM_VIA_T2C_H"; ADDR $7FE9 ; }; # LABEL { NAME "SYSTEM_VIA_SR"; ADDR $7FEA ; }; # never referred to in code LABEL { NAME "SYSTEM_VIA_ACR"; ADDR $7FEB ; }; # LABEL { NAME "SYSTEM_VIA_PCR"; ADDR $7FEC ; }; # # # Interrupt registers never referred to in code # LABEL { NAME "SYSTEM_VIA_IFR"; ADDR $7FED ; }; # never referred to in code LABEL { NAME "SYSTEM_VIA_IER"; ADDR $7FEE ; }; # never referred to in code LABEL { NAME "SYSTEM_VIA_ORA_IRA"; ADDR $7FEF ; }; # never referred to in code RANGE { START $8000; END $8051; TYPE TextTable; }; # same as 816 RANGE { START $8052; END $807F; TYPE ByteTable; }; # same as 816 RANGE { START $8080; END $8097; TYPE AddrTable; }; # same as 816 RANGE { START $8098; END $80FF; TYPE ByteTable; }; RANGE { START $853C; END $FFDF; TYPE ByteTable; }; RANGE { START $FFE0; END $FFF9; TYPE WordTable; }; RANGE { START $FFFA; END $FFFF; TYPE AddrTable; }; LABEL { NAME "string_8004"; ADDR $8004; }; # same LABEL { NAME "string_8008"; ADDR $8008; }; # same LABEL { NAME "IRQ_entry"; ADDR $8100; }; # same LABEL { NAME "NMI_entry"; ADDR $8104; }; # same LABEL { NAME "RESET_entry"; ADDR $8115; }; # different LABEL { NAME "L811B_lots_of_setup_code"; ADDR $811B; }; LABEL { NAME "move_four_bytes_to_workspace_20"; ADDR $81A9; }; LABEL { NAME "loop_81AB"; ADDR $81AB; }; LABEL { NAME "loop_until_char_0x55"; ADDR $81B3; }; LABEL { NAME "loop_81B6"; ADDR $81B6; }; LABEL { NAME "word_table_81E1"; ADDR $81E1; }; # word_table_81E1: # .word $81F4 = L81F5 - 1 # .word $81F9 = L81FA - 1 # .word $822C = function_822D - 1 # .word $82AE = USB_RX_RAM_BYTES_0_TO_4 - 1 # .word $8306 = send_mystery_sequence - 1 # .word $8398 = L8399 - 1 # .word $83CB = L83CC_rts - 1 # .word $83CB = L83CC_rts - 1 # .word $83DE = L83DF - 1 # .word $83EF = L83F0 - 1 RANGE { START $81E1; END $81f4; TYPE WordTable; }; LABEL { NAME "L81F5"; ADDR $81F5; }; LABEL { NAME "L81FA"; ADDR $81FA; }; LABEL { NAME "function_8212"; ADDR $8212; }; LABEL { NAME "loop_8219_forever"; ADDR $8219; }; LABEL { NAME "function_821E"; ADDR $821E; }; LABEL { NAME "return_822C"; ADDR $822C; }; LABEL { NAME "function_822D"; ADDR $822D; }; LABEL { NAME "USB_RX_RAM_BYTES_0_TO_4"; ADDR $82AF; }; LABEL { NAME "loop_82D4"; ADDR $82D4; }; LABEL { NAME "send_mystery_sequence"; ADDR $8307; }; LABEL { NAME "L8399"; ADDR $8399; }; LABEL { NAME "loop_839E_four_times"; ADDR $839E; }; LABEL { NAME "L83CC_rts"; ADDR $83CC; }; LABEL { NAME "L83CD"; ADDR $83CD; }; LABEL { NAME "L83DF"; ADDR $83DF; }; LABEL { NAME "L83F0"; ADDR $83F0; }; LABEL { NAME "IRQ_entry_vector_default"; ADDR $8404; }; LABEL { NAME "NMI_entry_vector_default"; ADDR $841e; }; LABEL { NAME "SYSTEM_VIA_ZERO_ACR_AND_PCR"; ADDR $8476; }; LABEL { NAME "SYSTEM_VIA_get_IOB_bit_2"; ADDR $84B9; }; LABEL { NAME "return_zero_84C8"; ADDR $84C8; }; LABEL { NAME "SYSTEM_VIA_USB_CHAR_RX"; ADDR $84CB; }; LABEL { NAME "SYSTEM_VIA_USB_CHAR_RX_WAIT"; ADDR $84D2; }; LABEL { NAME "return_0xEE_from_84ED"; ADDR $84ED; }; LABEL { NAME "SYSTEM_VIA_USB_CHAR_TX"; ADDR $84F0; }; LABEL { NAME "SYSTEM_VIA_USB_CHAR_TX_WAIT"; ADDR $84FA; }; LABEL { NAME "wait_256_times_x_loops"; ADDR $851E; }; LABEL { NAME "wait_256_loops"; ADDR $8521; }; LABEL { NAME "SYSTEM_VIA_PCR_READ"; ADDR $8529; }; LABEL { NAME "SYSTEM_VIA_PCR_WRITE"; ADDR $8530; }; LABEL { NAME "do_nothing_8537"; ADDR $8537; }; LABEL { NAME "do_nothing_8538"; ADDR $8538; }; # LABEL { NAME "NOT_CODE_0DAD"; ADDR $0DAD; }; # LABEL { NAME "NOT_CODE_10C2"; ADDR $10C2; }; # LABEL { NAME "NOT_CODE_138F"; ADDR $138F; }; # LABEL { NAME "NOT_CODE_A900"; ADDR $A900; }; # LABEL { NAME "NOT_CODE_A948"; ADDR $A948; }; # LABEL { NAME "NOT_CODE_AF48"; ADDR $AF48; }; # LABEL { NAME "NOT_CODE_F481"; ADDR $F481; }; # Hardware vectors LABEL { NAME "ABORT"; ADDR $FFF8; SIZE 2; }; LABEL { NAME "NMI"; ADDR $FFFA; SIZE 2; }; LABEL { NAME "RESET"; ADDR $FFFC; SIZE 2; }; LABEL { NAME "IRQ"; ADDR $FFFE; SIZE 2; };