Paul's Infinite workbench stream updates from MMC5 & sega genesis

battery ram save dumping, and flash board programming.
-MMC5 updates fixed battery ram dumping
-genesis_v2.lua script supports dumping battery ram, and flashing ROM
only prototype flash board.  The firmware isn't very clean, but working
for now.
This commit is contained in:
Paul XPS 2019-11-01 10:15:41 -05:00
parent 9090177ce3
commit 4b3a0c8a8f
24 changed files with 4217 additions and 2503 deletions

Binary file not shown.

Binary file not shown.

Binary file not shown.

File diff suppressed because it is too large Load Diff

View File

@ -1,7 +1,7 @@
Archive member included to satisfy reference by file (symbol)
c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/thumb/v6-m\libgcc.a(unwind-arm.o)
C:\Users\paul\AppData\Local\Temp\cc0qRkgb.o (__aeabi_unwind_cpp_pr0)
C:\Users\paul\AppData\Local\Temp\cccRrXfG.o (__aeabi_unwind_cpp_pr0)
c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/thumb/v6-m\libgcc.a(libunwind.o)
c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/thumb/v6-m\libgcc.a(unwind-arm.o) (restore_core_regs)
c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/thumb/v6-m\libgcc.a(pr-support.o)
@ -51,9 +51,9 @@ c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3
c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v6-m\libnosys.a(_exit.o)
c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a(lib_a-abort.o) (_exit)
c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/thumb/v6-m\libgcc.a(_thumb1_case_uqi.o)
C:\Users\paul\AppData\Local\Temp\ccGCpWvS.ltrans0.ltrans.o (__gnu_thumb1_case_uqi)
C:\Users\paul\AppData\Local\Temp\ccAHkeLy.ltrans0.ltrans.o (__gnu_thumb1_case_uqi)
c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/thumb/v6-m\libgcc.a(_thumb1_case_uhi.o)
C:\Users\paul\AppData\Local\Temp\ccGCpWvS.ltrans0.ltrans.o (__gnu_thumb1_case_uhi)
C:\Users\paul\AppData\Local\Temp\ccAHkeLy.ltrans0.ltrans.o (__gnu_thumb1_case_uhi)
Allocating common symbols
Common symbol size file
@ -133,41 +133,41 @@ Discarded input sections
.ARM.exidx 0x00000000 0x8 c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v6-m/crt0.o
.ARM.attributes
0x00000000 0x1b c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v6-m/crt0.o
.text 0x00000000 0x0 C:\Users\paul\AppData\Local\Temp\ccOqsUkN.o
.data 0x00000000 0x0 C:\Users\paul\AppData\Local\Temp\ccOqsUkN.o
.bss 0x00000000 0x0 C:\Users\paul\AppData\Local\Temp\ccOqsUkN.o
.stack 0x00000000 0xc00 C:\Users\paul\AppData\Local\Temp\ccOqsUkN.o
.heap 0x00000000 0x0 C:\Users\paul\AppData\Local\Temp\ccOqsUkN.o
.debug_line 0x00000000 0x7c C:\Users\paul\AppData\Local\Temp\ccOqsUkN.o
.debug_info 0x00000000 0x22 C:\Users\paul\AppData\Local\Temp\ccOqsUkN.o
.debug_abbrev 0x00000000 0x12 C:\Users\paul\AppData\Local\Temp\ccOqsUkN.o
.text 0x00000000 0x0 C:\Users\paul\AppData\Local\Temp\ccQPQ68t.o
.data 0x00000000 0x0 C:\Users\paul\AppData\Local\Temp\ccQPQ68t.o
.bss 0x00000000 0x0 C:\Users\paul\AppData\Local\Temp\ccQPQ68t.o
.stack 0x00000000 0xc00 C:\Users\paul\AppData\Local\Temp\ccQPQ68t.o
.heap 0x00000000 0x0 C:\Users\paul\AppData\Local\Temp\ccQPQ68t.o
.debug_line 0x00000000 0x7c C:\Users\paul\AppData\Local\Temp\ccQPQ68t.o
.debug_info 0x00000000 0x22 C:\Users\paul\AppData\Local\Temp\ccQPQ68t.o
.debug_abbrev 0x00000000 0x12 C:\Users\paul\AppData\Local\Temp\ccQPQ68t.o
.debug_aranges
0x00000000 0x28 C:\Users\paul\AppData\Local\Temp\ccOqsUkN.o
.debug_str 0x00000000 0x68 C:\Users\paul\AppData\Local\Temp\ccOqsUkN.o
.debug_ranges 0x00000000 0x20 C:\Users\paul\AppData\Local\Temp\ccOqsUkN.o
0x00000000 0x28 C:\Users\paul\AppData\Local\Temp\ccQPQ68t.o
.debug_str 0x00000000 0x70 C:\Users\paul\AppData\Local\Temp\ccQPQ68t.o
.debug_ranges 0x00000000 0x20 C:\Users\paul\AppData\Local\Temp\ccQPQ68t.o
.ARM.attributes
0x00000000 0x1b C:\Users\paul\AppData\Local\Temp\ccOqsUkN.o
.text 0x00000000 0x0 C:\Users\paul\AppData\Local\Temp\ccGCpWvS.ltrans0.ltrans.o
.data 0x00000000 0x0 C:\Users\paul\AppData\Local\Temp\ccGCpWvS.ltrans0.ltrans.o
.bss 0x00000000 0x0 C:\Users\paul\AppData\Local\Temp\ccGCpWvS.ltrans0.ltrans.o
0x00000000 0x1b C:\Users\paul\AppData\Local\Temp\ccQPQ68t.o
.text 0x00000000 0x0 C:\Users\paul\AppData\Local\Temp\ccAHkeLy.ltrans0.ltrans.o
.data 0x00000000 0x0 C:\Users\paul\AppData\Local\Temp\ccAHkeLy.ltrans0.ltrans.o
.bss 0x00000000 0x0 C:\Users\paul\AppData\Local\Temp\ccAHkeLy.ltrans0.ltrans.o
.text.snes_3v_buffer_wr
0x00000000 0x2 C:\Users\paul\AppData\Local\Temp\ccGCpWvS.ltrans0.ltrans.o
.text 0x00000000 0x4 C:\Users\paul\AppData\Local\Temp\cc0qRkgb.o
.data 0x00000000 0x0 C:\Users\paul\AppData\Local\Temp\cc0qRkgb.o
.bss 0x00000000 0x0 C:\Users\paul\AppData\Local\Temp\cc0qRkgb.o
.ARM.extab 0x00000000 0x0 C:\Users\paul\AppData\Local\Temp\cc0qRkgb.o
.ARM.exidx 0x00000000 0x8 C:\Users\paul\AppData\Local\Temp\cc0qRkgb.o
.debug_line 0x00000000 0x49 C:\Users\paul\AppData\Local\Temp\cc0qRkgb.o
.debug_info 0x00000000 0x26 C:\Users\paul\AppData\Local\Temp\cc0qRkgb.o
.debug_abbrev 0x00000000 0x14 C:\Users\paul\AppData\Local\Temp\cc0qRkgb.o
0x00000000 0x2 C:\Users\paul\AppData\Local\Temp\ccAHkeLy.ltrans0.ltrans.o
.text 0x00000000 0x4 C:\Users\paul\AppData\Local\Temp\cccRrXfG.o
.data 0x00000000 0x0 C:\Users\paul\AppData\Local\Temp\cccRrXfG.o
.bss 0x00000000 0x0 C:\Users\paul\AppData\Local\Temp\cccRrXfG.o
.ARM.extab 0x00000000 0x0 C:\Users\paul\AppData\Local\Temp\cccRrXfG.o
.ARM.exidx 0x00000000 0x8 C:\Users\paul\AppData\Local\Temp\cccRrXfG.o
.debug_line 0x00000000 0x49 C:\Users\paul\AppData\Local\Temp\cccRrXfG.o
.debug_info 0x00000000 0x26 C:\Users\paul\AppData\Local\Temp\cccRrXfG.o
.debug_abbrev 0x00000000 0x14 C:\Users\paul\AppData\Local\Temp\cccRrXfG.o
.debug_aranges
0x00000000 0x20 C:\Users\paul\AppData\Local\Temp\cc0qRkgb.o
.debug_str 0x00000000 0x65 C:\Users\paul\AppData\Local\Temp\cc0qRkgb.o
0x00000000 0x20 C:\Users\paul\AppData\Local\Temp\cccRrXfG.o
.debug_str 0x00000000 0x6d C:\Users\paul\AppData\Local\Temp\cccRrXfG.o
.ARM.attributes
0x00000000 0x21 C:\Users\paul\AppData\Local\Temp\cc0qRkgb.o
.data 0x00000000 0x0 C:\Users\paul\AppData\Local\Temp\ccCWXcVB.o
.bss 0x00000000 0x0 C:\Users\paul\AppData\Local\Temp\ccCWXcVB.o
.ARM.extab 0x00000000 0x0 C:\Users\paul\AppData\Local\Temp\ccCWXcVB.o
0x00000000 0x21 C:\Users\paul\AppData\Local\Temp\cccRrXfG.o
.data 0x00000000 0x0 C:\Users\paul\AppData\Local\Temp\cc6TiYRU.o
.bss 0x00000000 0x0 C:\Users\paul\AppData\Local\Temp\cc6TiYRU.o
.ARM.extab 0x00000000 0x0 C:\Users\paul\AppData\Local\Temp\cc6TiYRU.o
.data 0x00000000 0x0 c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/thumb/v6-m\libgcc.a(unwind-arm.o)
.bss 0x00000000 0x0 c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/thumb/v6-m\libgcc.a(unwind-arm.o)
.debug_frame 0x00000000 0x2b4 c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/thumb/v6-m\libgcc.a(unwind-arm.o)
@ -430,10 +430,10 @@ Linker script and memory map
LOAD c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/thumb/v6-m/crti.o
LOAD c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/thumb/v6-m/crtbegin.o
LOAD c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v6-m/crt0.o
LOAD C:\Users\paul\AppData\Local\Temp\ccOqsUkN.o
LOAD C:\Users\paul\AppData\Local\Temp\ccGCpWvS.ltrans0.ltrans.o
LOAD C:\Users\paul\AppData\Local\Temp\cc0qRkgb.o
LOAD C:\Users\paul\AppData\Local\Temp\ccCWXcVB.o
LOAD C:\Users\paul\AppData\Local\Temp\ccQPQ68t.o
LOAD C:\Users\paul\AppData\Local\Temp\ccAHkeLy.ltrans0.ltrans.o
LOAD C:\Users\paul\AppData\Local\Temp\cccRrXfG.o
LOAD C:\Users\paul\AppData\Local\Temp\cc6TiYRU.o
START GROUP
LOAD c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/thumb/v6-m\libgcc.a
LOAD c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a
@ -447,17 +447,17 @@ END GROUP
LOAD c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/thumb/v6-m/crtend.o
LOAD c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/thumb/v6-m/crtn.o
.text 0x08000000 0x5860
.text 0x08000000 0x5b80
*(.isr_vector)
.isr_vector 0x08000000 0xc0 C:\Users\paul\AppData\Local\Temp\ccOqsUkN.o
.isr_vector 0x08000000 0xc0 C:\Users\paul\AppData\Local\Temp\ccQPQ68t.o
0x08000000 __isr_vector
*(.usb_driver)
.usb_driver 0x080000c0 0x3bc C:\Users\paul\AppData\Local\Temp\ccGCpWvS.ltrans0.ltrans.o
.usb_driver 0x080000c0 0x3bc C:\Users\paul\AppData\Local\Temp\ccAHkeLy.ltrans0.ltrans.o
0x08000198 USB_IRQHandler
*(.usb_desc)
.usb_desc 0x0800047c 0xb8 C:\Users\paul\AppData\Local\Temp\ccGCpWvS.ltrans0.ltrans.o
.usb_desc 0x0800047c 0xb8 C:\Users\paul\AppData\Local\Temp\ccAHkeLy.ltrans0.ltrans.o
*(.hardfault)
.hardfault 0x08000534 0x2 C:\Users\paul\AppData\Local\Temp\ccOqsUkN.o
.hardfault 0x08000534 0x2 C:\Users\paul\AppData\Local\Temp\ccQPQ68t.o
0x08000534 TIM1_CC_IRQHandler
0x08000534 TSC_IRQHandler
0x08000534 ADC1_COMP_IRQHandler
@ -496,7 +496,7 @@ LOAD c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eab
0x08000534 USART1_IRQHandler
0x08000534 TIM1_BRK_UP_TRG_COM_IRQHandler
*fill* 0x08000536 0x2 ff
.hardfault 0x08000538 0xc C:\Users\paul\AppData\Local\Temp\ccGCpWvS.ltrans0.ltrans.o
.hardfault 0x08000538 0xc C:\Users\paul\AppData\Local\Temp\ccAHkeLy.ltrans0.ltrans.o
0x08000538 HardFault_Handler
*_thumb1_case_uqi.o()
.text 0x08000544 0x14 c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/thumb/v6-m\libgcc.a(_thumb1_case_uqi.o)
@ -512,11 +512,11 @@ LOAD c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eab
0x0800058c 0x1e c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/thumb/v6-m\libgcc.a(_thumb1_case_uhi.o)
*(.fw_update)
*fill* 0x080005aa 0x2 ff
.fw_update 0x080005ac 0x150 C:\Users\paul\AppData\Local\Temp\ccGCpWvS.ltrans0.ltrans.o
.fw_update 0x080005ac 0x150 C:\Users\paul\AppData\Local\Temp\ccAHkeLy.ltrans0.ltrans.o
0x00000770 . = 0x770
*fill* 0x080006fc 0x74 ff
*(.fw_up_main)
.fw_up_main 0x08000770 0x70 C:\Users\paul\AppData\Local\Temp\ccGCpWvS.ltrans0.ltrans.o
.fw_up_main 0x08000770 0x70 C:\Users\paul\AppData\Local\Temp\ccAHkeLy.ltrans0.ltrans.o
0x00000800 . = 0x800
*fill* 0x080007e0 0x20 ff
*(.appver)
@ -524,191 +524,198 @@ LOAD c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eab
*fill* 0x08000800 0x4 ff
*(.reset_handler)
.reset_handler
0x08000804 0x3c C:\Users\paul\AppData\Local\Temp\ccOqsUkN.o
0x08000804 0x3c C:\Users\paul\AppData\Local\Temp\ccQPQ68t.o
0x08000804 Reset_Handler
*(.usbFuncWrite)
.usbFuncWrite 0x08000840 0x44 C:\Users\paul\AppData\Local\Temp\ccGCpWvS.ltrans0.ltrans.o
.usbFuncWrite 0x08000840 0x44 C:\Users\paul\AppData\Local\Temp\ccAHkeLy.ltrans0.ltrans.o
*(.usbFuncSetup)
.usbFuncSetup 0x08000884 0x1d04 C:\Users\paul\AppData\Local\Temp\ccGCpWvS.ltrans0.ltrans.o
.usbFuncSetup 0x08000884 0x1e5c C:\Users\paul\AppData\Local\Temp\ccAHkeLy.ltrans0.ltrans.o
*(.text*)
.text.snes_page_rd_poll.constprop.29
0x08002588 0x70 C:\Users\paul\AppData\Local\Temp\ccGCpWvS.ltrans0.ltrans.o
0x080026e0 0x70 C:\Users\paul\AppData\Local\Temp\ccAHkeLy.ltrans0.ltrans.o
.text.nes_cpu_page_rd_poll.constprop.28
0x080025f8 0x6c C:\Users\paul\AppData\Local\Temp\ccGCpWvS.ltrans0.ltrans.o
0x08002750 0x6c C:\Users\paul\AppData\Local\Temp\ccAHkeLy.ltrans0.ltrans.o
.text.nes_ppu_page_rd_poll.constprop.25
0x08002664 0x68 C:\Users\paul\AppData\Local\Temp\ccGCpWvS.ltrans0.ltrans.o
0x080027bc 0x68 C:\Users\paul\AppData\Local\Temp\ccAHkeLy.ltrans0.ltrans.o
.text.append_pairity
0x080026cc 0x1e C:\Users\paul\AppData\Local\Temp\ccGCpWvS.ltrans0.ltrans.o
0x08002824 0x1e C:\Users\paul\AppData\Local\Temp\ccAHkeLy.ltrans0.ltrans.o
.text.delay_us
0x080026ea 0x14 C:\Users\paul\AppData\Local\Temp\ccGCpWvS.ltrans0.ltrans.o
*fill* 0x080026fe 0x2 ff
.text.lfsr_32 0x08002700 0x30 C:\Users\paul\AppData\Local\Temp\ccGCpWvS.ltrans0.ltrans.o
.text.snes_wr 0x08002730 0x60 C:\Users\paul\AppData\Local\Temp\ccGCpWvS.ltrans0.ltrans.o
.text.snes_rd 0x08002790 0x48 C:\Users\paul\AppData\Local\Temp\ccGCpWvS.ltrans0.ltrans.o
0x08002842 0x14 C:\Users\paul\AppData\Local\Temp\ccAHkeLy.ltrans0.ltrans.o
*fill* 0x08002856 0x2 ff
.text.lfsr_32 0x08002858 0x30 C:\Users\paul\AppData\Local\Temp\ccAHkeLy.ltrans0.ltrans.o
.text.snes_wr 0x08002888 0x60 C:\Users\paul\AppData\Local\Temp\ccAHkeLy.ltrans0.ltrans.o
.text.snes_rd 0x080028e8 0x48 C:\Users\paul\AppData\Local\Temp\ccAHkeLy.ltrans0.ltrans.o
.text.write_page_snes.constprop.35
0x080027d8 0x194 C:\Users\paul\AppData\Local\Temp\ccGCpWvS.ltrans0.ltrans.o
0x08002930 0x194 C:\Users\paul\AppData\Local\Temp\ccAHkeLy.ltrans0.ltrans.o
.text.write_page_buffer.constprop.34
0x0800296c 0x94 C:\Users\paul\AppData\Local\Temp\ccGCpWvS.ltrans0.ltrans.o
0x08002ac4 0x94 C:\Users\paul\AppData\Local\Temp\ccAHkeLy.ltrans0.ltrans.o
.text.snes_3v_verify_wr
0x08002a00 0x50 C:\Users\paul\AppData\Local\Temp\ccGCpWvS.ltrans0.ltrans.o
0x08002b58 0x50 C:\Users\paul\AppData\Local\Temp\ccAHkeLy.ltrans0.ltrans.o
.text.snes_3v_flash_wr
0x08002a50 0x50 C:\Users\paul\AppData\Local\Temp\ccGCpWvS.ltrans0.ltrans.o
0x08002ba8 0x50 C:\Users\paul\AppData\Local\Temp\ccAHkeLy.ltrans0.ltrans.o
.text.snes_5v_flash_wr
0x08002aa0 0x50 C:\Users\paul\AppData\Local\Temp\ccGCpWvS.ltrans0.ltrans.o
0x08002bf8 0x50 C:\Users\paul\AppData\Local\Temp\ccAHkeLy.ltrans0.ltrans.o
.text.genesis_page_rd
0x08002af0 0xa4 C:\Users\paul\AppData\Local\Temp\ccGCpWvS.ltrans0.ltrans.o
0x08002c48 0xa4 C:\Users\paul\AppData\Local\Temp\ccAHkeLy.ltrans0.ltrans.o
.text.gen_flash_wr
0x08002cec 0x94 C:\Users\paul\AppData\Local\Temp\ccAHkeLy.ltrans0.ltrans.o
.text.gen_rom_rd
0x08002d80 0x48 C:\Users\paul\AppData\Local\Temp\ccAHkeLy.ltrans0.ltrans.o
.text.gen_sst_flash_wr
0x08002dc8 0x44 C:\Users\paul\AppData\Local\Temp\ccAHkeLy.ltrans0.ltrans.o
.text.mmc3s_prgrom_flash_wr
0x08002b94 0x4 C:\Users\paul\AppData\Local\Temp\ccGCpWvS.ltrans0.ltrans.o
0x08002e0c 0x4 C:\Users\paul\AppData\Local\Temp\ccAHkeLy.ltrans0.ltrans.o
.text.nes_dualport_wr
0x08002b98 0x50 C:\Users\paul\AppData\Local\Temp\ccGCpWvS.ltrans0.ltrans.o
0x08002e10 0x50 C:\Users\paul\AppData\Local\Temp\ccAHkeLy.ltrans0.ltrans.o
.text.nes_dualport_rd
0x08002be8 0x38 C:\Users\paul\AppData\Local\Temp\ccGCpWvS.ltrans0.ltrans.o
0x08002e60 0x38 C:\Users\paul\AppData\Local\Temp\ccAHkeLy.ltrans0.ltrans.o
.text.nes_ppu_wr
0x08002c20 0x50 C:\Users\paul\AppData\Local\Temp\ccGCpWvS.ltrans0.ltrans.o
0x08002e98 0x50 C:\Users\paul\AppData\Local\Temp\ccAHkeLy.ltrans0.ltrans.o
.text.nes_ppu_rd
0x08002c70 0x38 C:\Users\paul\AppData\Local\Temp\ccGCpWvS.ltrans0.ltrans.o
0x08002ee8 0x38 C:\Users\paul\AppData\Local\Temp\ccAHkeLy.ltrans0.ltrans.o
.text.mmc3_chrrom_flash_wr
0x08002ca8 0x44 C:\Users\paul\AppData\Local\Temp\ccGCpWvS.ltrans0.ltrans.o
0x08002f20 0x44 C:\Users\paul\AppData\Local\Temp\ccAHkeLy.ltrans0.ltrans.o
.text.nrom_chrrom_flash_wr
0x08002cec 0x44 C:\Users\paul\AppData\Local\Temp\ccGCpWvS.ltrans0.ltrans.o
0x08002f64 0x44 C:\Users\paul\AppData\Local\Temp\ccAHkeLy.ltrans0.ltrans.o
.text.nes_m2_high_wr
0x08002d30 0x60 C:\Users\paul\AppData\Local\Temp\ccGCpWvS.ltrans0.ltrans.o
0x08002fa8 0x60 C:\Users\paul\AppData\Local\Temp\ccAHkeLy.ltrans0.ltrans.o
.text.nes_cpu_wr
0x08002d90 0x7c C:\Users\paul\AppData\Local\Temp\ccGCpWvS.ltrans0.ltrans.o
0x08003008 0x7c C:\Users\paul\AppData\Local\Temp\ccAHkeLy.ltrans0.ltrans.o
.text.cdream_chrrom_flash_wr
0x08002e0c 0x8c C:\Users\paul\AppData\Local\Temp\ccGCpWvS.ltrans0.ltrans.o
0x08003084 0x8c C:\Users\paul\AppData\Local\Temp\ccAHkeLy.ltrans0.ltrans.o
.text.mmc4_chrrom_flash_wr
0x08002e98 0x74 C:\Users\paul\AppData\Local\Temp\ccGCpWvS.ltrans0.ltrans.o
0x08003110 0x74 C:\Users\paul\AppData\Local\Temp\ccAHkeLy.ltrans0.ltrans.o
.text.cnrom_chrrom_flash_wr
0x08002f0c 0x7c C:\Users\paul\AppData\Local\Temp\ccGCpWvS.ltrans0.ltrans.o
0x08003184 0x7c C:\Users\paul\AppData\Local\Temp\ccAHkeLy.ltrans0.ltrans.o
.text.nes_cpu_rd
0x08002f88 0x38 C:\Users\paul\AppData\Local\Temp\ccGCpWvS.ltrans0.ltrans.o
0x08003200 0x38 C:\Users\paul\AppData\Local\Temp\ccAHkeLy.ltrans0.ltrans.o
.text.tssop_prgrom_flash_wr
0x08002fc0 0x2a C:\Users\paul\AppData\Local\Temp\ccGCpWvS.ltrans0.ltrans.o
0x08003238 0x2a C:\Users\paul\AppData\Local\Temp\ccAHkeLy.ltrans0.ltrans.o
.text.a53_tssop_prgrom_flash_wr
0x08002fea 0x36 C:\Users\paul\AppData\Local\Temp\ccGCpWvS.ltrans0.ltrans.o
0x08003262 0x36 C:\Users\paul\AppData\Local\Temp\ccAHkeLy.ltrans0.ltrans.o
.text.gtrom_prgrom_flash_wr
0x08003020 0x4c C:\Users\paul\AppData\Local\Temp\ccGCpWvS.ltrans0.ltrans.o
0x08003298 0x4c C:\Users\paul\AppData\Local\Temp\ccAHkeLy.ltrans0.ltrans.o
.text.map30_prgrom_flash_wr
0x0800306c 0x74 C:\Users\paul\AppData\Local\Temp\ccGCpWvS.ltrans0.ltrans.o
0x080032e4 0x74 C:\Users\paul\AppData\Local\Temp\ccAHkeLy.ltrans0.ltrans.o
.text.mmc4_prgrom_flash_wr
0x080030e0 0x54 C:\Users\paul\AppData\Local\Temp\ccGCpWvS.ltrans0.ltrans.o
0x08003358 0x54 C:\Users\paul\AppData\Local\Temp\ccAHkeLy.ltrans0.ltrans.o
.text.mmc3_prgrom_flash_wr
0x08003134 0x50 C:\Users\paul\AppData\Local\Temp\ccGCpWvS.ltrans0.ltrans.o
0x080033ac 0x50 C:\Users\paul\AppData\Local\Temp\ccAHkeLy.ltrans0.ltrans.o
.text.disc_push_exp0_prgrom_wr
0x08003184 0x48 C:\Users\paul\AppData\Local\Temp\ccGCpWvS.ltrans0.ltrans.o
0x080033fc 0x48 C:\Users\paul\AppData\Local\Temp\ccAHkeLy.ltrans0.ltrans.o
.text.discrete_exp0_prgrom_wr
0x080031cc 0x58 C:\Users\paul\AppData\Local\Temp\ccGCpWvS.ltrans0.ltrans.o
0x08003444 0x58 C:\Users\paul\AppData\Local\Temp\ccAHkeLy.ltrans0.ltrans.o
.text.unrom_prgrom_flash_wr
0x08003224 0x64 C:\Users\paul\AppData\Local\Temp\ccGCpWvS.ltrans0.ltrans.o
0x0800349c 0x64 C:\Users\paul\AppData\Local\Temp\ccAHkeLy.ltrans0.ltrans.o
.text.nrom_prgrom_flash_wr
0x08003288 0x44 C:\Users\paul\AppData\Local\Temp\ccGCpWvS.ltrans0.ltrans.o
0x08003500 0x44 C:\Users\paul\AppData\Local\Temp\ccAHkeLy.ltrans0.ltrans.o
.text.n64_latch_addr
0x080032cc 0x60 C:\Users\paul\AppData\Local\Temp\ccGCpWvS.ltrans0.ltrans.o
0x08003544 0x60 C:\Users\paul\AppData\Local\Temp\ccAHkeLy.ltrans0.ltrans.o
.text.pbje_scan
0x0800332c 0x10c C:\Users\paul\AppData\Local\Temp\ccGCpWvS.ltrans0.ltrans.o
0x080035a4 0x10c C:\Users\paul\AppData\Local\Temp\ccAHkeLy.ltrans0.ltrans.o
.text.pbje_state_change
0x08003438 0x88 C:\Users\paul\AppData\Local\Temp\ccGCpWvS.ltrans0.ltrans.o
0x080036b0 0x88 C:\Users\paul\AppData\Local\Temp\ccAHkeLy.ltrans0.ltrans.o
.text.jtag_init_pbje
0x080034c0 0xe0 C:\Users\paul\AppData\Local\Temp\ccGCpWvS.ltrans0.ltrans.o
0x08003738 0xe0 C:\Users\paul\AppData\Local\Temp\ccAHkeLy.ltrans0.ltrans.o
.text.jtag_run_pbje.part.0
0x080035a0 0xb8 C:\Users\paul\AppData\Local\Temp\ccGCpWvS.ltrans0.ltrans.o
0x08003818 0xb8 C:\Users\paul\AppData\Local\Temp\ccAHkeLy.ltrans0.ltrans.o
.text.io_reset
0x08003658 0x174 C:\Users\paul\AppData\Local\Temp\ccGCpWvS.ltrans0.ltrans.o
.text.gba_rd 0x080037cc 0x4c C:\Users\paul\AppData\Local\Temp\ccGCpWvS.ltrans0.ltrans.o
0x080038d0 0x174 C:\Users\paul\AppData\Local\Temp\ccAHkeLy.ltrans0.ltrans.o
.text.gba_rd 0x08003a44 0x4c C:\Users\paul\AppData\Local\Temp\ccAHkeLy.ltrans0.ltrans.o
.text.write_page_verify
0x08003818 0x5c C:\Users\paul\AppData\Local\Temp\ccGCpWvS.ltrans0.ltrans.o
0x08003a90 0x5c C:\Users\paul\AppData\Local\Temp\ccAHkeLy.ltrans0.ltrans.o
.text.write_page
0x08003874 0x34 C:\Users\paul\AppData\Local\Temp\ccGCpWvS.ltrans0.ltrans.o
0x08003aec 0x34 C:\Users\paul\AppData\Local\Temp\ccAHkeLy.ltrans0.ltrans.o
.text.get_next_buff
0x080038a8 0x54 C:\Users\paul\AppData\Local\Temp\ccGCpWvS.ltrans0.ltrans.o
0x08003b20 0x54 C:\Users\paul\AppData\Local\Temp\ccAHkeLy.ltrans0.ltrans.o
.text.mmc1_wr.constprop.12
0x080038fc 0x22 C:\Users\paul\AppData\Local\Temp\ccGCpWvS.ltrans0.ltrans.o
*fill* 0x0800391e 0x2 ff
0x08003b74 0x22 C:\Users\paul\AppData\Local\Temp\ccAHkeLy.ltrans0.ltrans.o
*fill* 0x08003b96 0x2 ff
.text.mmc1_chrrom_flash_wr
0x08003920 0x60 C:\Users\paul\AppData\Local\Temp\ccGCpWvS.ltrans0.ltrans.o
0x08003b98 0x60 C:\Users\paul\AppData\Local\Temp\ccAHkeLy.ltrans0.ltrans.o
.text.mmc1_prgrom_flash_wr
0x08003980 0x50 C:\Users\paul\AppData\Local\Temp\ccGCpWvS.ltrans0.ltrans.o
0x08003bf8 0x50 C:\Users\paul\AppData\Local\Temp\ccAHkeLy.ltrans0.ltrans.o
.text.swim_wotf
0x080039d0 0xb4 C:\Users\paul\AppData\Local\Temp\ccGCpWvS.ltrans0.ltrans.o
0x08003c48 0xb4 C:\Users\paul\AppData\Local\Temp\ccAHkeLy.ltrans0.ltrans.o
.text.swim_rotf
0x08003a84 0xac C:\Users\paul\AppData\Local\Temp\ccGCpWvS.ltrans0.ltrans.o
0x08003cfc 0xac C:\Users\paul\AppData\Local\Temp\ccAHkeLy.ltrans0.ltrans.o
.text.startup.main
0x08003b30 0xb90 C:\Users\paul\AppData\Local\Temp\ccGCpWvS.ltrans0.ltrans.o
0x08003b30 main
.text 0x080046c0 0x154 C:\Users\paul\AppData\Local\Temp\ccCWXcVB.o
0x080046c0 swim_xfr
.text 0x08004814 0xa08 c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/thumb/v6-m\libgcc.a(unwind-arm.o)
0x08004ad0 _Unwind_GetCFA
0x08004ad4 __gnu_Unwind_RaiseException
0x08004b28 __gnu_Unwind_ForcedUnwind
0x08004b3c __gnu_Unwind_Resume
0x08004b84 __gnu_Unwind_Resume_or_Rethrow
0x08004ba0 _Unwind_Complete
0x08004ba4 _Unwind_DeleteException
0x08004bb4 _Unwind_VRS_Get
0x08004bfc _Unwind_VRS_Set
0x08004c44 __gnu_Unwind_Backtrace
0x08004f94 __aeabi_unwind_cpp_pr0
0x08004fa0 __aeabi_unwind_cpp_pr1
0x08004fac __aeabi_unwind_cpp_pr2
0x08004fb8 _Unwind_VRS_Pop
.text 0x0800521c 0x144 c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/thumb/v6-m\libgcc.a(libunwind.o)
0x0800521c __restore_core_regs
0x0800521c restore_core_regs
0x08005248 __gnu_Unwind_Restore_VFP
0x0800524c __gnu_Unwind_Save_VFP
0x08005250 __gnu_Unwind_Restore_VFP_D
0x08005254 __gnu_Unwind_Save_VFP_D
0x08005258 __gnu_Unwind_Restore_VFP_D_16_to_31
0x0800525c __gnu_Unwind_Save_VFP_D_16_to_31
0x08005260 __gnu_Unwind_Restore_WMMXD
0x08005264 __gnu_Unwind_Save_WMMXD
0x08005268 __gnu_Unwind_Restore_WMMXC
0x0800526c __gnu_Unwind_Save_WMMXC
0x08005270 ___Unwind_RaiseException
0x08005270 _Unwind_RaiseException
0x080052a0 _Unwind_Resume
0x080052a0 ___Unwind_Resume
0x080052d0 _Unwind_Resume_or_Rethrow
0x080052d0 ___Unwind_Resume_or_Rethrow
0x08005300 _Unwind_ForcedUnwind
0x08005300 ___Unwind_ForcedUnwind
0x08005330 ___Unwind_Backtrace
0x08005330 _Unwind_Backtrace
.text 0x08005360 0x39c c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/thumb/v6-m\libgcc.a(pr-support.o)
0x080053b4 __gnu_unwind_execute
0x080056a4 __gnu_unwind_frame
0x080056cc _Unwind_GetRegionStart
0x080056d8 _Unwind_GetLanguageSpecificData
0x080056ec _Unwind_GetDataRelBase
0x080056f4 _Unwind_GetTextRelBase
.text.abort 0x080056fc 0x10 c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a(lib_a-abort.o)
0x080056fc abort
.text.memcpy 0x0800570c 0x88 c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a(lib_a-memcpy-stub.o)
0x0800570c memcpy
0x08003da8 0xc34 C:\Users\paul\AppData\Local\Temp\ccAHkeLy.ltrans0.ltrans.o
0x08003da8 main
*fill* 0x080049dc 0x4 ff
.text 0x080049e0 0x154 C:\Users\paul\AppData\Local\Temp\cc6TiYRU.o
0x080049e0 swim_xfr
.text 0x08004b34 0xa08 c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/thumb/v6-m\libgcc.a(unwind-arm.o)
0x08004df0 _Unwind_GetCFA
0x08004df4 __gnu_Unwind_RaiseException
0x08004e48 __gnu_Unwind_ForcedUnwind
0x08004e5c __gnu_Unwind_Resume
0x08004ea4 __gnu_Unwind_Resume_or_Rethrow
0x08004ec0 _Unwind_Complete
0x08004ec4 _Unwind_DeleteException
0x08004ed4 _Unwind_VRS_Get
0x08004f1c _Unwind_VRS_Set
0x08004f64 __gnu_Unwind_Backtrace
0x080052b4 __aeabi_unwind_cpp_pr0
0x080052c0 __aeabi_unwind_cpp_pr1
0x080052cc __aeabi_unwind_cpp_pr2
0x080052d8 _Unwind_VRS_Pop
.text 0x0800553c 0x144 c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/thumb/v6-m\libgcc.a(libunwind.o)
0x0800553c __restore_core_regs
0x0800553c restore_core_regs
0x08005568 __gnu_Unwind_Restore_VFP
0x0800556c __gnu_Unwind_Save_VFP
0x08005570 __gnu_Unwind_Restore_VFP_D
0x08005574 __gnu_Unwind_Save_VFP_D
0x08005578 __gnu_Unwind_Restore_VFP_D_16_to_31
0x0800557c __gnu_Unwind_Save_VFP_D_16_to_31
0x08005580 __gnu_Unwind_Restore_WMMXD
0x08005584 __gnu_Unwind_Save_WMMXD
0x08005588 __gnu_Unwind_Restore_WMMXC
0x0800558c __gnu_Unwind_Save_WMMXC
0x08005590 ___Unwind_RaiseException
0x08005590 _Unwind_RaiseException
0x080055c0 _Unwind_Resume
0x080055c0 ___Unwind_Resume
0x080055f0 _Unwind_Resume_or_Rethrow
0x080055f0 ___Unwind_Resume_or_Rethrow
0x08005620 _Unwind_ForcedUnwind
0x08005620 ___Unwind_ForcedUnwind
0x08005650 ___Unwind_Backtrace
0x08005650 _Unwind_Backtrace
.text 0x08005680 0x39c c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/thumb/v6-m\libgcc.a(pr-support.o)
0x080056d4 __gnu_unwind_execute
0x080059c4 __gnu_unwind_frame
0x080059ec _Unwind_GetRegionStart
0x080059f8 _Unwind_GetLanguageSpecificData
0x08005a0c _Unwind_GetDataRelBase
0x08005a14 _Unwind_GetTextRelBase
.text.abort 0x08005a1c 0x10 c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a(lib_a-abort.o)
0x08005a1c abort
.text.memcpy 0x08005a2c 0x88 c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a(lib_a-memcpy-stub.o)
0x08005a2c memcpy
.text._raise_r
0x08005794 0x5c c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a(lib_a-signal.o)
0x08005794 _raise_r
.text.raise 0x080057f0 0x14 c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a(lib_a-signal.o)
0x080057f0 raise
.text._kill_r 0x08005804 0x28 c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a(lib_a-signalr.o)
0x08005804 _kill_r
0x08005ab4 0x5c c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a(lib_a-signal.o)
0x08005ab4 _raise_r
.text.raise 0x08005b10 0x14 c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a(lib_a-signal.o)
0x08005b10 raise
.text._kill_r 0x08005b24 0x28 c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a(lib_a-signalr.o)
0x08005b24 _kill_r
.text._getpid_r
0x0800582c 0x8 c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a(lib_a-signalr.o)
0x0800582c _getpid_r
.text._getpid 0x08005834 0x10 c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v6-m\libnosys.a(getpid.o)
0x08005834 _getpid
.text._kill 0x08005844 0x10 c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v6-m\libnosys.a(kill.o)
0x08005844 _kill
.text._exit 0x08005854 0x4 c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v6-m\libnosys.a(_exit.o)
0x08005854 _exit
0x08005b4c 0x8 c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a(lib_a-signalr.o)
0x08005b4c _getpid_r
.text._getpid 0x08005b54 0x10 c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v6-m\libnosys.a(getpid.o)
0x08005b54 _getpid
.text._kill 0x08005b64 0x10 c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v6-m\libnosys.a(kill.o)
0x08005b64 _kill
.text._exit 0x08005b74 0x4 c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v6-m\libnosys.a(_exit.o)
0x08005b74 _exit
*(.init)
.init 0x08005858 0x4 c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/thumb/v6-m/crti.o
0x08005858 _init
.init 0x08005b78 0x4 c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/thumb/v6-m/crti.o
0x08005b78 _init
*(.fini)
.fini 0x0800585c 0x4 c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/thumb/v6-m/crti.o
0x0800585c _fini
.fini 0x08005b7c 0x4 c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/thumb/v6-m/crti.o
0x08005b7c _fini
*crtbegin.o(.ctors)
*crtbegin?.o(.ctors)
*(EXCLUDE_FILE(*crtend.o *crtend?.o) .ctors)
@ -722,42 +729,42 @@ LOAD c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eab
*(.rodata*)
*(.eh_frame*)
.glue_7 0x08005860 0x0
.glue_7 0x08005860 0x0 linker stubs
.glue_7 0x08005b80 0x0
.glue_7 0x08005b80 0x0 linker stubs
.glue_7t 0x08005860 0x0
.glue_7t 0x08005860 0x0 linker stubs
.glue_7t 0x08005b80 0x0
.glue_7t 0x08005b80 0x0 linker stubs
.vfp11_veneer 0x08005860 0x0
.vfp11_veneer 0x08005860 0x0 linker stubs
.vfp11_veneer 0x08005b80 0x0
.vfp11_veneer 0x08005b80 0x0 linker stubs
.v4_bx 0x08005860 0x0
.v4_bx 0x08005860 0x0 linker stubs
.v4_bx 0x08005b80 0x0
.v4_bx 0x08005b80 0x0 linker stubs
.iplt 0x08005860 0x0
.iplt 0x08005860 0x0 C:\Users\paul\AppData\Local\Temp\ccOqsUkN.o
.iplt 0x08005b80 0x0
.iplt 0x08005b80 0x0 C:\Users\paul\AppData\Local\Temp\ccQPQ68t.o
.ARM.extab 0x08005860 0x30
.ARM.extab 0x08005b80 0x30
*(.ARM.extab* .gnu.linkonce.armextab.*)
.ARM.extab 0x08005860 0x24 c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/thumb/v6-m\libgcc.a(unwind-arm.o)
.ARM.extab 0x08005884 0xc c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/thumb/v6-m\libgcc.a(pr-support.o)
0x08005890 __exidx_start = .
.ARM.extab 0x08005b80 0x24 c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/thumb/v6-m\libgcc.a(unwind-arm.o)
.ARM.extab 0x08005ba4 0xc c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/thumb/v6-m\libgcc.a(pr-support.o)
0x08005bb0 __exidx_start = .
.ARM.exidx 0x08005890 0xd0
.ARM.exidx 0x08005bb0 0xd0
*(.ARM.exidx* .gnu.linkonce.armexidx.*)
.ARM.exidx 0x08005890 0x8 C:\Users\paul\AppData\Local\Temp\ccCWXcVB.o
.ARM.exidx 0x08005bb0 0x8 C:\Users\paul\AppData\Local\Temp\cc6TiYRU.o
0x10 (size before relaxing)
.ARM.exidx 0x08005898 0x98 c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/thumb/v6-m\libgcc.a(unwind-arm.o)
.ARM.exidx 0x08005bb8 0x98 c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/thumb/v6-m\libgcc.a(unwind-arm.o)
0xd8 (size before relaxing)
.ARM.exidx 0x08005930 0x30 c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/thumb/v6-m\libgcc.a(pr-support.o)
.ARM.exidx 0x08005c50 0x30 c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/thumb/v6-m\libgcc.a(pr-support.o)
0x48 (size before relaxing)
0x08005960 __exidx_end = .
0x08005960 __etext = ALIGN (0x4)
0x08005c80 __exidx_end = .
0x08005c80 __etext = ALIGN (0x4)
.rel.dyn 0x08005960 0x0
.rel.iplt 0x08005960 0x0 C:\Users\paul\AppData\Local\Temp\ccOqsUkN.o
.rel.dyn 0x08005c80 0x0
.rel.iplt 0x08005c80 0x0 C:\Users\paul\AppData\Local\Temp\ccQPQ68t.o
.data 0x20000000 0x430 load address 0x08005960
.data 0x20000000 0x430 load address 0x08005c80
0x20000000 __data_start__ = .
*(vtable)
*(.data*)
@ -785,77 +792,79 @@ LOAD c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eab
*(.fastrun)
0x20000430 __data_end__ = .
.igot.plt 0x20000430 0x0 load address 0x08005d90
.igot.plt 0x20000430 0x0 C:\Users\paul\AppData\Local\Temp\ccOqsUkN.o
.igot.plt 0x20000430 0x0 load address 0x080060b0
.igot.plt 0x20000430 0x0 C:\Users\paul\AppData\Local\Temp\ccQPQ68t.o
.bss 0x20000430 0x308 load address 0x08005d90
.bss 0x20000430 0x308 load address 0x080060b0
0x20000430 . = ALIGN (0x4)
0x20000430 __bss_start__ = .
*(.bss*)
.bss.addr_ptr 0x20000430 0x4 C:\Users\paul\AppData\Local\Temp\ccGCpWvS.ltrans0.ltrans.o
.bss.addrh 0x20000434 0x2 C:\Users\paul\AppData\Local\Temp\ccGCpWvS.ltrans0.ltrans.o
.bss.addr_ptr 0x20000430 0x4 C:\Users\paul\AppData\Local\Temp\ccAHkeLy.ltrans0.ltrans.o
.bss.addrh 0x20000434 0x2 C:\Users\paul\AppData\Local\Temp\ccAHkeLy.ltrans0.ltrans.o
.bss.bank_table
0x20000436 0x2 C:\Users\paul\AppData\Local\Temp\ccGCpWvS.ltrans0.ltrans.o
.bss.buff0 0x20000438 0x14 C:\Users\paul\AppData\Local\Temp\ccGCpWvS.ltrans0.ltrans.o
.bss.buff1 0x2000044c 0x14 C:\Users\paul\AppData\Local\Temp\ccGCpWvS.ltrans0.ltrans.o
.bss.buff2 0x20000460 0x14 C:\Users\paul\AppData\Local\Temp\ccGCpWvS.ltrans0.ltrans.o
.bss.buff3 0x20000474 0x14 C:\Users\paul\AppData\Local\Temp\ccGCpWvS.ltrans0.ltrans.o
0x20000436 0x2 C:\Users\paul\AppData\Local\Temp\ccAHkeLy.ltrans0.ltrans.o
.bss.buff0 0x20000438 0x14 C:\Users\paul\AppData\Local\Temp\ccAHkeLy.ltrans0.ltrans.o
.bss.buff1 0x2000044c 0x14 C:\Users\paul\AppData\Local\Temp\ccAHkeLy.ltrans0.ltrans.o
.bss.buff2 0x20000460 0x14 C:\Users\paul\AppData\Local\Temp\ccAHkeLy.ltrans0.ltrans.o
.bss.buff3 0x20000474 0x14 C:\Users\paul\AppData\Local\Temp\ccAHkeLy.ltrans0.ltrans.o
.bss.cur_addr_hi
0x20000488 0x1 C:\Users\paul\AppData\Local\Temp\ccGCpWvS.ltrans0.ltrans.o
0x20000488 0x1 C:\Users\paul\AppData\Local\Temp\ccAHkeLy.ltrans0.ltrans.o
*fill* 0x20000489 0x1
.bss.cur_addr_lo
0x2000048a 0x2 C:\Users\paul\AppData\Local\Temp\ccGCpWvS.ltrans0.ltrans.o
.bss.cur_bank 0x2000048c 0x1 C:\Users\paul\AppData\Local\Temp\ccGCpWvS.ltrans0.ltrans.o
0x2000048a 0x2 C:\Users\paul\AppData\Local\Temp\ccAHkeLy.ltrans0.ltrans.o
.bss.cur_bank 0x2000048c 0x1 C:\Users\paul\AppData\Local\Temp\ccAHkeLy.ltrans0.ltrans.o
*fill* 0x2000048d 0x3
.bss.cur_buff 0x20000490 0x4 C:\Users\paul\AppData\Local\Temp\ccGCpWvS.ltrans0.ltrans.o
.bss.cur_buff 0x20000490 0x4 C:\Users\paul\AppData\Local\Temp\ccAHkeLy.ltrans0.ltrans.o
.bss.cur_usb_load_buff
0x20000494 0x4 C:\Users\paul\AppData\Local\Temp\ccGCpWvS.ltrans0.ltrans.o
0x20000494 0x4 C:\Users\paul\AppData\Local\Temp\ccAHkeLy.ltrans0.ltrans.o
.bss.incoming_bytes_remain
0x20000498 0x1 C:\Users\paul\AppData\Local\Temp\ccGCpWvS.ltrans0.ltrans.o
0x20000498 0x1 C:\Users\paul\AppData\Local\Temp\ccAHkeLy.ltrans0.ltrans.o
*fill* 0x20000499 0x3
.bss.lfsr 0x2000049c 0x4 C:\Users\paul\AppData\Local\Temp\ccGCpWvS.ltrans0.ltrans.o
.bss.n64_bank 0x200004a0 0x2 C:\Users\paul\AppData\Local\Temp\ccGCpWvS.ltrans0.ltrans.o
.bss.num_buff.5143
0x200004a2 0x1 C:\Users\paul\AppData\Local\Temp\ccGCpWvS.ltrans0.ltrans.o
.bss.lfsr 0x2000049c 0x4 C:\Users\paul\AppData\Local\Temp\ccAHkeLy.ltrans0.ltrans.o
.bss.n64_bank 0x200004a0 0x2 C:\Users\paul\AppData\Local\Temp\ccAHkeLy.ltrans0.ltrans.o
.bss.num_buff.5160
0x200004a2 0x1 C:\Users\paul\AppData\Local\Temp\ccAHkeLy.ltrans0.ltrans.o
.bss.num_prg_banks
0x200004a3 0x1 C:\Users\paul\AppData\Local\Temp\ccGCpWvS.ltrans0.ltrans.o
0x200004a3 0x1 C:\Users\paul\AppData\Local\Temp\ccAHkeLy.ltrans0.ltrans.o
.bss.oper_info_struct
0x200004a4 0x20 C:\Users\paul\AppData\Local\Temp\ccGCpWvS.ltrans0.ltrans.o
0x200004a4 0x20 C:\Users\paul\AppData\Local\Temp\ccAHkeLy.ltrans0.ltrans.o
.bss.pbje_command
0x200004c4 0x1 C:\Users\paul\AppData\Local\Temp\ccGCpWvS.ltrans0.ltrans.o
0x200004c4 0x1 C:\Users\paul\AppData\Local\Temp\ccAHkeLy.ltrans0.ltrans.o
.bss.pbje_data
0x200004c5 0x20 C:\Users\paul\AppData\Local\Temp\ccGCpWvS.ltrans0.ltrans.o
0x200004c5 0x20 C:\Users\paul\AppData\Local\Temp\ccAHkeLy.ltrans0.ltrans.o
.bss.pbje_numclk
0x200004e5 0x1 C:\Users\paul\AppData\Local\Temp\ccGCpWvS.ltrans0.ltrans.o
0x200004e5 0x1 C:\Users\paul\AppData\Local\Temp\ccAHkeLy.ltrans0.ltrans.o
.bss.pbje_status
0x200004e6 0x1 C:\Users\paul\AppData\Local\Temp\ccGCpWvS.ltrans0.ltrans.o
0x200004e6 0x1 C:\Users\paul\AppData\Local\Temp\ccAHkeLy.ltrans0.ltrans.o
.bss.raw_bank_status
0x200004e7 0x10 C:\Users\paul\AppData\Local\Temp\ccGCpWvS.ltrans0.ltrans.o
0x200004e7 0x10 C:\Users\paul\AppData\Local\Temp\ccAHkeLy.ltrans0.ltrans.o
*fill* 0x200004f7 0x1
.bss.raw_buffer16
0x200004f8 0x200 C:\Users\paul\AppData\Local\Temp\ccGCpWvS.ltrans0.ltrans.o
0x200004f8 0x200 C:\Users\paul\AppData\Local\Temp\ccAHkeLy.ltrans0.ltrans.o
.bss.rv16.4759
0x200006f8 0x8 C:\Users\paul\AppData\Local\Temp\ccGCpWvS.ltrans0.ltrans.o
.bss.rv16.5063
0x20000700 0x8 C:\Users\paul\AppData\Local\Temp\ccGCpWvS.ltrans0.ltrans.o
0x200006f8 0x8 C:\Users\paul\AppData\Local\Temp\ccAHkeLy.ltrans0.ltrans.o
.bss.rv16.5080
0x20000700 0x8 C:\Users\paul\AppData\Local\Temp\ccAHkeLy.ltrans0.ltrans.o
.bss.sega_addr
0x20000708 0x2 C:\Users\paul\AppData\Local\Temp\ccAHkeLy.ltrans0.ltrans.o
.bss.stm_debug_disable
0x20000708 0x1 C:\Users\paul\AppData\Local\Temp\ccGCpWvS.ltrans0.ltrans.o
*fill* 0x20000709 0x3
0x2000070a 0x1 C:\Users\paul\AppData\Local\Temp\ccAHkeLy.ltrans0.ltrans.o
*fill* 0x2000070b 0x1
.bss.swim_base
0x2000070c 0x4 C:\Users\paul\AppData\Local\Temp\ccGCpWvS.ltrans0.ltrans.o
.bss.swim_pin 0x20000710 0x1 C:\Users\paul\AppData\Local\Temp\ccGCpWvS.ltrans0.ltrans.o
0x2000070c 0x4 C:\Users\paul\AppData\Local\Temp\ccAHkeLy.ltrans0.ltrans.o
.bss.swim_pin 0x20000710 0x1 C:\Users\paul\AppData\Local\Temp\ccAHkeLy.ltrans0.ltrans.o
*fill* 0x20000711 0x3
.bss.tck_base 0x20000714 0x4 C:\Users\paul\AppData\Local\Temp\ccGCpWvS.ltrans0.ltrans.o
.bss.tck_pin 0x20000718 0x1 C:\Users\paul\AppData\Local\Temp\ccGCpWvS.ltrans0.ltrans.o
.bss.tck_base 0x20000714 0x4 C:\Users\paul\AppData\Local\Temp\ccAHkeLy.ltrans0.ltrans.o
.bss.tck_pin 0x20000718 0x1 C:\Users\paul\AppData\Local\Temp\ccAHkeLy.ltrans0.ltrans.o
*fill* 0x20000719 0x3
.bss.tdi_base 0x2000071c 0x4 C:\Users\paul\AppData\Local\Temp\ccGCpWvS.ltrans0.ltrans.o
.bss.tdi_pin 0x20000720 0x1 C:\Users\paul\AppData\Local\Temp\ccGCpWvS.ltrans0.ltrans.o
.bss.tdi_base 0x2000071c 0x4 C:\Users\paul\AppData\Local\Temp\ccAHkeLy.ltrans0.ltrans.o
.bss.tdi_pin 0x20000720 0x1 C:\Users\paul\AppData\Local\Temp\ccAHkeLy.ltrans0.ltrans.o
*fill* 0x20000721 0x3
.bss.tdo_base 0x20000724 0x4 C:\Users\paul\AppData\Local\Temp\ccGCpWvS.ltrans0.ltrans.o
.bss.tdo_pin 0x20000728 0x1 C:\Users\paul\AppData\Local\Temp\ccGCpWvS.ltrans0.ltrans.o
.bss.tdo_base 0x20000724 0x4 C:\Users\paul\AppData\Local\Temp\ccAHkeLy.ltrans0.ltrans.o
.bss.tdo_pin 0x20000728 0x1 C:\Users\paul\AppData\Local\Temp\ccAHkeLy.ltrans0.ltrans.o
*fill* 0x20000729 0x3
.bss.tms_base 0x2000072c 0x4 C:\Users\paul\AppData\Local\Temp\ccGCpWvS.ltrans0.ltrans.o
.bss.tms_pin 0x20000730 0x1 C:\Users\paul\AppData\Local\Temp\ccGCpWvS.ltrans0.ltrans.o
.bss.tms_base 0x2000072c 0x4 C:\Users\paul\AppData\Local\Temp\ccAHkeLy.ltrans0.ltrans.o
.bss.tms_pin 0x20000730 0x1 C:\Users\paul\AppData\Local\Temp\ccAHkeLy.ltrans0.ltrans.o
*(COMMON)
*fill* 0x20000731 0x3
COMMON 0x20000734 0x4 c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a(lib_a-reent.o)
@ -882,45 +891,45 @@ OUTPUT(build_stm/inlretro_stm.elf elf32-littlearm)
.ARM.attributes
0x00000000 0x1e c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/thumb/v6-m/crti.o
.ARM.attributes
0x0000001e 0x2f C:\Users\paul\AppData\Local\Temp\ccGCpWvS.ltrans0.ltrans.o
0x0000001e 0x2f C:\Users\paul\AppData\Local\Temp\ccAHkeLy.ltrans0.ltrans.o
.ARM.attributes
0x0000004d 0x21 C:\Users\paul\AppData\Local\Temp\ccCWXcVB.o
0x0000004d 0x21 C:\Users\paul\AppData\Local\Temp\cc6TiYRU.o
.comment 0x00000000 0x7f
.comment 0x00000000 0x7f C:\Users\paul\AppData\Local\Temp\ccGCpWvS.ltrans0.ltrans.o
.comment 0x00000000 0x7f C:\Users\paul\AppData\Local\Temp\ccAHkeLy.ltrans0.ltrans.o
0x80 (size before relaxing)
.debug_info 0x00000000 0x5b65
.debug_info 0x00000000 0x5b3f C:\Users\paul\AppData\Local\Temp\ccGCpWvS.ltrans0.ltrans.o
.debug_info 0x00005b3f 0x26 C:\Users\paul\AppData\Local\Temp\ccCWXcVB.o
.debug_info 0x00000000 0x5eb4
.debug_info 0x00000000 0x5e8e C:\Users\paul\AppData\Local\Temp\ccAHkeLy.ltrans0.ltrans.o
.debug_info 0x00005e8e 0x26 C:\Users\paul\AppData\Local\Temp\cc6TiYRU.o
.debug_abbrev 0x00000000 0x6c9
.debug_abbrev 0x00000000 0x6b5 C:\Users\paul\AppData\Local\Temp\ccGCpWvS.ltrans0.ltrans.o
.debug_abbrev 0x000006b5 0x14 C:\Users\paul\AppData\Local\Temp\ccCWXcVB.o
.debug_abbrev 0x00000000 0x6b5 C:\Users\paul\AppData\Local\Temp\ccAHkeLy.ltrans0.ltrans.o
.debug_abbrev 0x000006b5 0x14 C:\Users\paul\AppData\Local\Temp\cc6TiYRU.o
.debug_loc 0x00000000 0x910b
.debug_loc 0x00000000 0x910b C:\Users\paul\AppData\Local\Temp\ccGCpWvS.ltrans0.ltrans.o
.debug_loc 0x00000000 0x967f
.debug_loc 0x00000000 0x967f C:\Users\paul\AppData\Local\Temp\ccAHkeLy.ltrans0.ltrans.o
.debug_aranges 0x00000000 0x230
.debug_aranges 0x00000000 0x248
.debug_aranges
0x00000000 0x210 C:\Users\paul\AppData\Local\Temp\ccGCpWvS.ltrans0.ltrans.o
0x00000000 0x228 C:\Users\paul\AppData\Local\Temp\ccAHkeLy.ltrans0.ltrans.o
.debug_aranges
0x00000210 0x20 C:\Users\paul\AppData\Local\Temp\ccCWXcVB.o
0x00000228 0x20 C:\Users\paul\AppData\Local\Temp\cc6TiYRU.o
.debug_ranges 0x00000000 0xe20
.debug_ranges 0x00000000 0xe20 C:\Users\paul\AppData\Local\Temp\ccGCpWvS.ltrans0.ltrans.o
.debug_ranges 0x00000000 0xe98
.debug_ranges 0x00000000 0xe98 C:\Users\paul\AppData\Local\Temp\ccAHkeLy.ltrans0.ltrans.o
.debug_line 0x00000000 0x1c72
.debug_line 0x00000000 0x1b7f C:\Users\paul\AppData\Local\Temp\ccGCpWvS.ltrans0.ltrans.o
.debug_line 0x00001b7f 0xf3 C:\Users\paul\AppData\Local\Temp\ccCWXcVB.o
.debug_line 0x00000000 0x1dcb
.debug_line 0x00000000 0x1cd8 C:\Users\paul\AppData\Local\Temp\ccAHkeLy.ltrans0.ltrans.o
.debug_line 0x00001cd8 0xf3 C:\Users\paul\AppData\Local\Temp\cc6TiYRU.o
.debug_str 0x00000000 0x12e0
.debug_str 0x00000000 0x127f C:\Users\paul\AppData\Local\Temp\ccGCpWvS.ltrans0.ltrans.o
0x13b2 (size before relaxing)
.debug_str 0x0000127f 0x61 C:\Users\paul\AppData\Local\Temp\ccCWXcVB.o
.debug_str 0x00000000 0x1341
.debug_str 0x00000000 0x12d8 C:\Users\paul\AppData\Local\Temp\ccAHkeLy.ltrans0.ltrans.o
0x1413 (size before relaxing)
.debug_str 0x000012d8 0x69 C:\Users\paul\AppData\Local\Temp\cc6TiYRU.o
.debug_frame 0x00000000 0x6a8
.debug_frame 0x00000000 0x6a8 C:\Users\paul\AppData\Local\Temp\ccGCpWvS.ltrans0.ltrans.o
.debug_frame 0x00000000 0x6fc
.debug_frame 0x00000000 0x6fc C:\Users\paul\AppData\Local\Temp\ccAHkeLy.ltrans0.ltrans.o
.stabstr 0x00000000 0x76
.stabstr 0x00000000 0x76 c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v6-m\libnosys.a(getpid.o)

Binary file not shown.

Binary file not shown.

Binary file not shown.

File diff suppressed because it is too large Load Diff

View File

@ -1,7 +1,7 @@
Archive member included to satisfy reference by file (symbol)
c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/thumb/v6-m\libgcc.a(unwind-arm.o)
C:\Users\PAUL_D~1\AppData\Local\Temp\cclouYWi.o (__aeabi_unwind_cpp_pr0)
C:\Users\paul\AppData\Local\Temp\ccj6UtR6.o (__aeabi_unwind_cpp_pr0)
c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/thumb/v6-m\libgcc.a(libunwind.o)
c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/thumb/v6-m\libgcc.a(unwind-arm.o) (restore_core_regs)
c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/thumb/v6-m\libgcc.a(pr-support.o)
@ -51,9 +51,9 @@ c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3
c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v6-m\libnosys.a(_exit.o)
c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a(lib_a-abort.o) (_exit)
c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/thumb/v6-m\libgcc.a(_thumb1_case_uqi.o)
C:\Users\PAUL_D~1\AppData\Local\Temp\cclxzrun.ltrans0.ltrans.o (__gnu_thumb1_case_uqi)
C:\Users\paul\AppData\Local\Temp\ccyIooTi.ltrans0.ltrans.o (__gnu_thumb1_case_uqi)
c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/thumb/v6-m\libgcc.a(_thumb1_case_uhi.o)
C:\Users\PAUL_D~1\AppData\Local\Temp\cclxzrun.ltrans0.ltrans.o (__gnu_thumb1_case_uhi)
C:\Users\paul\AppData\Local\Temp\ccyIooTi.ltrans0.ltrans.o (__gnu_thumb1_case_uhi)
Allocating common symbols
Common symbol size file
@ -132,39 +132,39 @@ Discarded input sections
.ARM.exidx 0x00000000 0x8 c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v6-m/crt0.o
.ARM.attributes
0x00000000 0x1b c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v6-m/crt0.o
.text 0x00000000 0x0 C:\Users\PAUL_D~1\AppData\Local\Temp\ccOxWw6f.o
.data 0x00000000 0x0 C:\Users\PAUL_D~1\AppData\Local\Temp\ccOxWw6f.o
.bss 0x00000000 0x0 C:\Users\PAUL_D~1\AppData\Local\Temp\ccOxWw6f.o
.stack 0x00000000 0xc00 C:\Users\PAUL_D~1\AppData\Local\Temp\ccOxWw6f.o
.heap 0x00000000 0x0 C:\Users\PAUL_D~1\AppData\Local\Temp\ccOxWw6f.o
.debug_line 0x00000000 0x7c C:\Users\PAUL_D~1\AppData\Local\Temp\ccOxWw6f.o
.debug_info 0x00000000 0x22 C:\Users\PAUL_D~1\AppData\Local\Temp\ccOxWw6f.o
.debug_abbrev 0x00000000 0x12 C:\Users\PAUL_D~1\AppData\Local\Temp\ccOxWw6f.o
.text 0x00000000 0x0 C:\Users\paul\AppData\Local\Temp\ccep6a43.o
.data 0x00000000 0x0 C:\Users\paul\AppData\Local\Temp\ccep6a43.o
.bss 0x00000000 0x0 C:\Users\paul\AppData\Local\Temp\ccep6a43.o
.stack 0x00000000 0xc00 C:\Users\paul\AppData\Local\Temp\ccep6a43.o
.heap 0x00000000 0x0 C:\Users\paul\AppData\Local\Temp\ccep6a43.o
.debug_line 0x00000000 0x7c C:\Users\paul\AppData\Local\Temp\ccep6a43.o
.debug_info 0x00000000 0x22 C:\Users\paul\AppData\Local\Temp\ccep6a43.o
.debug_abbrev 0x00000000 0x12 C:\Users\paul\AppData\Local\Temp\ccep6a43.o
.debug_aranges
0x00000000 0x28 C:\Users\PAUL_D~1\AppData\Local\Temp\ccOxWw6f.o
.debug_str 0x00000000 0x70 C:\Users\PAUL_D~1\AppData\Local\Temp\ccOxWw6f.o
.debug_ranges 0x00000000 0x20 C:\Users\PAUL_D~1\AppData\Local\Temp\ccOxWw6f.o
0x00000000 0x28 C:\Users\paul\AppData\Local\Temp\ccep6a43.o
.debug_str 0x00000000 0x70 C:\Users\paul\AppData\Local\Temp\ccep6a43.o
.debug_ranges 0x00000000 0x20 C:\Users\paul\AppData\Local\Temp\ccep6a43.o
.ARM.attributes
0x00000000 0x1b C:\Users\PAUL_D~1\AppData\Local\Temp\ccOxWw6f.o
.text 0x00000000 0x0 C:\Users\PAUL_D~1\AppData\Local\Temp\cclxzrun.ltrans0.ltrans.o
.data 0x00000000 0x0 C:\Users\PAUL_D~1\AppData\Local\Temp\cclxzrun.ltrans0.ltrans.o
.bss 0x00000000 0x0 C:\Users\PAUL_D~1\AppData\Local\Temp\cclxzrun.ltrans0.ltrans.o
.text 0x00000000 0x4 C:\Users\PAUL_D~1\AppData\Local\Temp\cclouYWi.o
.data 0x00000000 0x0 C:\Users\PAUL_D~1\AppData\Local\Temp\cclouYWi.o
.bss 0x00000000 0x0 C:\Users\PAUL_D~1\AppData\Local\Temp\cclouYWi.o
.ARM.extab 0x00000000 0x0 C:\Users\PAUL_D~1\AppData\Local\Temp\cclouYWi.o
.ARM.exidx 0x00000000 0x8 C:\Users\PAUL_D~1\AppData\Local\Temp\cclouYWi.o
.debug_line 0x00000000 0x49 C:\Users\PAUL_D~1\AppData\Local\Temp\cclouYWi.o
.debug_info 0x00000000 0x26 C:\Users\PAUL_D~1\AppData\Local\Temp\cclouYWi.o
.debug_abbrev 0x00000000 0x14 C:\Users\PAUL_D~1\AppData\Local\Temp\cclouYWi.o
0x00000000 0x1b C:\Users\paul\AppData\Local\Temp\ccep6a43.o
.text 0x00000000 0x0 C:\Users\paul\AppData\Local\Temp\ccyIooTi.ltrans0.ltrans.o
.data 0x00000000 0x0 C:\Users\paul\AppData\Local\Temp\ccyIooTi.ltrans0.ltrans.o
.bss 0x00000000 0x0 C:\Users\paul\AppData\Local\Temp\ccyIooTi.ltrans0.ltrans.o
.text 0x00000000 0x4 C:\Users\paul\AppData\Local\Temp\ccj6UtR6.o
.data 0x00000000 0x0 C:\Users\paul\AppData\Local\Temp\ccj6UtR6.o
.bss 0x00000000 0x0 C:\Users\paul\AppData\Local\Temp\ccj6UtR6.o
.ARM.extab 0x00000000 0x0 C:\Users\paul\AppData\Local\Temp\ccj6UtR6.o
.ARM.exidx 0x00000000 0x8 C:\Users\paul\AppData\Local\Temp\ccj6UtR6.o
.debug_line 0x00000000 0x49 C:\Users\paul\AppData\Local\Temp\ccj6UtR6.o
.debug_info 0x00000000 0x26 C:\Users\paul\AppData\Local\Temp\ccj6UtR6.o
.debug_abbrev 0x00000000 0x14 C:\Users\paul\AppData\Local\Temp\ccj6UtR6.o
.debug_aranges
0x00000000 0x20 C:\Users\PAUL_D~1\AppData\Local\Temp\cclouYWi.o
.debug_str 0x00000000 0x6d C:\Users\PAUL_D~1\AppData\Local\Temp\cclouYWi.o
0x00000000 0x20 C:\Users\paul\AppData\Local\Temp\ccj6UtR6.o
.debug_str 0x00000000 0x6d C:\Users\paul\AppData\Local\Temp\ccj6UtR6.o
.ARM.attributes
0x00000000 0x21 C:\Users\PAUL_D~1\AppData\Local\Temp\cclouYWi.o
.data 0x00000000 0x0 C:\Users\PAUL_D~1\AppData\Local\Temp\ccq24Qmp.o
.bss 0x00000000 0x0 C:\Users\PAUL_D~1\AppData\Local\Temp\ccq24Qmp.o
.ARM.extab 0x00000000 0x0 C:\Users\PAUL_D~1\AppData\Local\Temp\ccq24Qmp.o
0x00000000 0x21 C:\Users\paul\AppData\Local\Temp\ccj6UtR6.o
.data 0x00000000 0x0 C:\Users\paul\AppData\Local\Temp\cckRUKFb.o
.bss 0x00000000 0x0 C:\Users\paul\AppData\Local\Temp\cckRUKFb.o
.ARM.extab 0x00000000 0x0 C:\Users\paul\AppData\Local\Temp\cckRUKFb.o
.data 0x00000000 0x0 c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/thumb/v6-m\libgcc.a(unwind-arm.o)
.bss 0x00000000 0x0 c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/thumb/v6-m\libgcc.a(unwind-arm.o)
.debug_frame 0x00000000 0x2b4 c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/thumb/v6-m\libgcc.a(unwind-arm.o)
@ -427,10 +427,10 @@ Linker script and memory map
LOAD c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/thumb/v6-m/crti.o
LOAD c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/thumb/v6-m/crtbegin.o
LOAD c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v6-m/crt0.o
LOAD C:\Users\PAUL_D~1\AppData\Local\Temp\ccOxWw6f.o
LOAD C:\Users\PAUL_D~1\AppData\Local\Temp\cclxzrun.ltrans0.ltrans.o
LOAD C:\Users\PAUL_D~1\AppData\Local\Temp\cclouYWi.o
LOAD C:\Users\PAUL_D~1\AppData\Local\Temp\ccq24Qmp.o
LOAD C:\Users\paul\AppData\Local\Temp\ccep6a43.o
LOAD C:\Users\paul\AppData\Local\Temp\ccyIooTi.ltrans0.ltrans.o
LOAD C:\Users\paul\AppData\Local\Temp\ccj6UtR6.o
LOAD C:\Users\paul\AppData\Local\Temp\cckRUKFb.o
START GROUP
LOAD c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/thumb/v6-m\libgcc.a
LOAD c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a
@ -444,17 +444,17 @@ END GROUP
LOAD c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/thumb/v6-m/crtend.o
LOAD c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/thumb/v6-m/crtn.o
.text 0x08000000 0x4c60
.text 0x08000000 0x4c90
*(.isr_vector)
.isr_vector 0x08000000 0xc0 C:\Users\PAUL_D~1\AppData\Local\Temp\ccOxWw6f.o
.isr_vector 0x08000000 0xc0 C:\Users\paul\AppData\Local\Temp\ccep6a43.o
0x08000000 __isr_vector
*(.usb_driver)
.usb_driver 0x080000c0 0x3bc C:\Users\PAUL_D~1\AppData\Local\Temp\cclxzrun.ltrans0.ltrans.o
.usb_driver 0x080000c0 0x3bc C:\Users\paul\AppData\Local\Temp\ccyIooTi.ltrans0.ltrans.o
0x08000198 USB_IRQHandler
*(.usb_desc)
.usb_desc 0x0800047c 0xb8 C:\Users\PAUL_D~1\AppData\Local\Temp\cclxzrun.ltrans0.ltrans.o
.usb_desc 0x0800047c 0xb8 C:\Users\paul\AppData\Local\Temp\ccyIooTi.ltrans0.ltrans.o
*(.hardfault)
.hardfault 0x08000534 0x2 C:\Users\PAUL_D~1\AppData\Local\Temp\ccOxWw6f.o
.hardfault 0x08000534 0x2 C:\Users\paul\AppData\Local\Temp\ccep6a43.o
0x08000534 TIM1_CC_IRQHandler
0x08000534 TSC_IRQHandler
0x08000534 ADC1_COMP_IRQHandler
@ -493,7 +493,7 @@ LOAD c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eab
0x08000534 USART1_IRQHandler
0x08000534 TIM1_BRK_UP_TRG_COM_IRQHandler
*fill* 0x08000536 0x2 ff
.hardfault 0x08000538 0xc C:\Users\PAUL_D~1\AppData\Local\Temp\cclxzrun.ltrans0.ltrans.o
.hardfault 0x08000538 0xc C:\Users\paul\AppData\Local\Temp\ccyIooTi.ltrans0.ltrans.o
0x08000538 HardFault_Handler
*_thumb1_case_uqi.o()
.text 0x08000544 0x14 c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/thumb/v6-m\libgcc.a(_thumb1_case_uqi.o)
@ -509,11 +509,11 @@ LOAD c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eab
0x0800058c 0x1e c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/thumb/v6-m\libgcc.a(_thumb1_case_uhi.o)
*(.fw_update)
*fill* 0x080005aa 0x2 ff
.fw_update 0x080005ac 0x15c C:\Users\PAUL_D~1\AppData\Local\Temp\cclxzrun.ltrans0.ltrans.o
.fw_update 0x080005ac 0x15c C:\Users\paul\AppData\Local\Temp\ccyIooTi.ltrans0.ltrans.o
0x00000770 . = 0x770
*fill* 0x08000708 0x68 ff
*(.fw_up_main)
.fw_up_main 0x08000770 0x70 C:\Users\PAUL_D~1\AppData\Local\Temp\cclxzrun.ltrans0.ltrans.o
.fw_up_main 0x08000770 0x70 C:\Users\paul\AppData\Local\Temp\ccyIooTi.ltrans0.ltrans.o
0x00000800 . = 0x800
*fill* 0x080007e0 0x20 ff
*(.appver)
@ -521,173 +521,172 @@ LOAD c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eab
*fill* 0x08000800 0x4 ff
*(.reset_handler)
.reset_handler
0x08000804 0x3c C:\Users\PAUL_D~1\AppData\Local\Temp\ccOxWw6f.o
0x08000804 0x3c C:\Users\paul\AppData\Local\Temp\ccep6a43.o
0x08000804 Reset_Handler
*(.usbFuncWrite)
.usbFuncWrite 0x08000840 0x44 C:\Users\PAUL_D~1\AppData\Local\Temp\cclxzrun.ltrans0.ltrans.o
.usbFuncWrite 0x08000840 0x44 C:\Users\paul\AppData\Local\Temp\ccyIooTi.ltrans0.ltrans.o
*(.usbFuncSetup)
.usbFuncSetup 0x08000884 0x1604 C:\Users\PAUL_D~1\AppData\Local\Temp\cclxzrun.ltrans0.ltrans.o
.usbFuncSetup 0x08000884 0x163c C:\Users\paul\AppData\Local\Temp\ccyIooTi.ltrans0.ltrans.o
*(.text*)
.text.nes_cpu_page_rd_poll.constprop.21
0x08001e88 0xc4 C:\Users\PAUL_D~1\AppData\Local\Temp\cclxzrun.ltrans0.ltrans.o
0x08001ec0 0xc8 C:\Users\paul\AppData\Local\Temp\ccyIooTi.ltrans0.ltrans.o
.text.nes_ppu_page_rd_poll.constprop.19
0x08001f4c 0xbc C:\Users\PAUL_D~1\AppData\Local\Temp\cclxzrun.ltrans0.ltrans.o
0x08001f88 0xbc C:\Users\paul\AppData\Local\Temp\ccyIooTi.ltrans0.ltrans.o
.text.append_pairity
0x08002008 0x1e C:\Users\PAUL_D~1\AppData\Local\Temp\cclxzrun.ltrans0.ltrans.o
0x08002044 0x1e C:\Users\paul\AppData\Local\Temp\ccyIooTi.ltrans0.ltrans.o
.text.delay_us
0x08002026 0x14 C:\Users\PAUL_D~1\AppData\Local\Temp\cclxzrun.ltrans0.ltrans.o
*fill* 0x0800203a 0x2 ff
.text.lfsr_32 0x0800203c 0x30 C:\Users\PAUL_D~1\AppData\Local\Temp\cclxzrun.ltrans0.ltrans.o
0x08002062 0x14 C:\Users\paul\AppData\Local\Temp\ccyIooTi.ltrans0.ltrans.o
*fill* 0x08002076 0x2 ff
.text.lfsr_32 0x08002078 0x30 C:\Users\paul\AppData\Local\Temp\ccyIooTi.ltrans0.ltrans.o
.text.mmc3s_prgrom_flash_wr
0x0800206c 0x4 C:\Users\PAUL_D~1\AppData\Local\Temp\cclxzrun.ltrans0.ltrans.o
0x080020a8 0x4 C:\Users\paul\AppData\Local\Temp\ccyIooTi.ltrans0.ltrans.o
.text.nes_dualport_wr
0x08002070 0x8c C:\Users\PAUL_D~1\AppData\Local\Temp\cclxzrun.ltrans0.ltrans.o
0x080020ac 0x8c C:\Users\paul\AppData\Local\Temp\ccyIooTi.ltrans0.ltrans.o
.text.nes_dualport_rd
0x080020fc 0x80 C:\Users\PAUL_D~1\AppData\Local\Temp\cclxzrun.ltrans0.ltrans.o
0x08002138 0x80 C:\Users\paul\AppData\Local\Temp\ccyIooTi.ltrans0.ltrans.o
.text.nes_ppu_wr
0x0800217c 0x90 C:\Users\PAUL_D~1\AppData\Local\Temp\cclxzrun.ltrans0.ltrans.o
0x080021b8 0x90 C:\Users\paul\AppData\Local\Temp\ccyIooTi.ltrans0.ltrans.o
.text.nes_ppu_rd
0x0800220c 0x84 C:\Users\PAUL_D~1\AppData\Local\Temp\cclxzrun.ltrans0.ltrans.o
0x08002248 0x84 C:\Users\paul\AppData\Local\Temp\ccyIooTi.ltrans0.ltrans.o
.text.mmc3_chrrom_flash_wr
0x08002290 0x44 C:\Users\PAUL_D~1\AppData\Local\Temp\cclxzrun.ltrans0.ltrans.o
0x080022cc 0x44 C:\Users\paul\AppData\Local\Temp\ccyIooTi.ltrans0.ltrans.o
.text.nrom_chrrom_flash_wr
0x080022d4 0x44 C:\Users\PAUL_D~1\AppData\Local\Temp\cclxzrun.ltrans0.ltrans.o
0x08002310 0x44 C:\Users\paul\AppData\Local\Temp\ccyIooTi.ltrans0.ltrans.o
.text.nes_m2_high_wr
0x08002318 0x98 C:\Users\PAUL_D~1\AppData\Local\Temp\cclxzrun.ltrans0.ltrans.o
0x08002354 0x98 C:\Users\paul\AppData\Local\Temp\ccyIooTi.ltrans0.ltrans.o
.text.nes_cpu_wr
0x080023b0 0xb4 C:\Users\PAUL_D~1\AppData\Local\Temp\cclxzrun.ltrans0.ltrans.o
0x080023ec 0xb4 C:\Users\paul\AppData\Local\Temp\ccyIooTi.ltrans0.ltrans.o
.text.cdream_chrrom_flash_wr
0x08002464 0x8c C:\Users\PAUL_D~1\AppData\Local\Temp\cclxzrun.ltrans0.ltrans.o
0x080024a0 0x8c C:\Users\paul\AppData\Local\Temp\ccyIooTi.ltrans0.ltrans.o
.text.mmc4_chrrom_flash_wr
0x080024f0 0x74 C:\Users\PAUL_D~1\AppData\Local\Temp\cclxzrun.ltrans0.ltrans.o
0x0800252c 0x74 C:\Users\paul\AppData\Local\Temp\ccyIooTi.ltrans0.ltrans.o
.text.cnrom_chrrom_flash_wr
0x08002564 0x7c C:\Users\PAUL_D~1\AppData\Local\Temp\cclxzrun.ltrans0.ltrans.o
0x080025a0 0x7c C:\Users\paul\AppData\Local\Temp\ccyIooTi.ltrans0.ltrans.o
.text.nes_cpu_rd
0x080025e0 0x84 C:\Users\PAUL_D~1\AppData\Local\Temp\cclxzrun.ltrans0.ltrans.o
0x0800261c 0x84 C:\Users\paul\AppData\Local\Temp\ccyIooTi.ltrans0.ltrans.o
.text.tssop_prgrom_flash_wr
0x08002664 0x2a C:\Users\PAUL_D~1\AppData\Local\Temp\cclxzrun.ltrans0.ltrans.o
0x080026a0 0x2a C:\Users\paul\AppData\Local\Temp\ccyIooTi.ltrans0.ltrans.o
.text.a53_tssop_prgrom_flash_wr
0x0800268e 0x36 C:\Users\PAUL_D~1\AppData\Local\Temp\cclxzrun.ltrans0.ltrans.o
0x080026ca 0x36 C:\Users\paul\AppData\Local\Temp\ccyIooTi.ltrans0.ltrans.o
.text.gtrom_prgrom_flash_wr
0x080026c4 0x4c C:\Users\PAUL_D~1\AppData\Local\Temp\cclxzrun.ltrans0.ltrans.o
0x08002700 0x4c C:\Users\paul\AppData\Local\Temp\ccyIooTi.ltrans0.ltrans.o
.text.map30_prgrom_flash_wr
0x08002710 0x74 C:\Users\PAUL_D~1\AppData\Local\Temp\cclxzrun.ltrans0.ltrans.o
0x0800274c 0x74 C:\Users\paul\AppData\Local\Temp\ccyIooTi.ltrans0.ltrans.o
.text.mmc4_prgrom_flash_wr
0x08002784 0x54 C:\Users\PAUL_D~1\AppData\Local\Temp\cclxzrun.ltrans0.ltrans.o
0x080027c0 0x54 C:\Users\paul\AppData\Local\Temp\ccyIooTi.ltrans0.ltrans.o
.text.mmc3_prgrom_flash_wr
0x080027d8 0x50 C:\Users\PAUL_D~1\AppData\Local\Temp\cclxzrun.ltrans0.ltrans.o
0x08002814 0x50 C:\Users\paul\AppData\Local\Temp\ccyIooTi.ltrans0.ltrans.o
.text.disc_push_exp0_prgrom_wr
0x08002828 0x84 C:\Users\PAUL_D~1\AppData\Local\Temp\cclxzrun.ltrans0.ltrans.o
0x08002864 0x84 C:\Users\paul\AppData\Local\Temp\ccyIooTi.ltrans0.ltrans.o
.text.discrete_exp0_prgrom_wr
0x080028ac 0x8c C:\Users\PAUL_D~1\AppData\Local\Temp\cclxzrun.ltrans0.ltrans.o
0x080028e8 0x8c C:\Users\paul\AppData\Local\Temp\ccyIooTi.ltrans0.ltrans.o
.text.unrom_prgrom_flash_wr
0x08002938 0x64 C:\Users\PAUL_D~1\AppData\Local\Temp\cclxzrun.ltrans0.ltrans.o
0x08002974 0x64 C:\Users\paul\AppData\Local\Temp\ccyIooTi.ltrans0.ltrans.o
.text.nrom_prgrom_flash_wr
0x0800299c 0x44 C:\Users\PAUL_D~1\AppData\Local\Temp\cclxzrun.ltrans0.ltrans.o
0x080029d8 0x44 C:\Users\paul\AppData\Local\Temp\ccyIooTi.ltrans0.ltrans.o
.text.pbje_scan
0x080029e0 0xb0 C:\Users\PAUL_D~1\AppData\Local\Temp\cclxzrun.ltrans0.ltrans.o
0x08002a1c 0xb0 C:\Users\paul\AppData\Local\Temp\ccyIooTi.ltrans0.ltrans.o
.text.pbje_state_change
0x08002a90 0x5c C:\Users\PAUL_D~1\AppData\Local\Temp\cclxzrun.ltrans0.ltrans.o
0x08002acc 0x5c C:\Users\paul\AppData\Local\Temp\ccyIooTi.ltrans0.ltrans.o
.text.jtag_init_pbje
0x08002aec 0x40 C:\Users\PAUL_D~1\AppData\Local\Temp\cclxzrun.ltrans0.ltrans.o
0x08002b28 0x40 C:\Users\paul\AppData\Local\Temp\ccyIooTi.ltrans0.ltrans.o
.text.jtag_run_pbje.part.0
0x08002b2c 0xb8 C:\Users\PAUL_D~1\AppData\Local\Temp\cclxzrun.ltrans0.ltrans.o
0x08002b68 0xb8 C:\Users\paul\AppData\Local\Temp\ccyIooTi.ltrans0.ltrans.o
.text.io_reset
0x08002be4 0x1c4 C:\Users\PAUL_D~1\AppData\Local\Temp\cclxzrun.ltrans0.ltrans.o
0x08002c20 0x1c4 C:\Users\paul\AppData\Local\Temp\ccyIooTi.ltrans0.ltrans.o
.text.write_page_verify
0x08002da8 0x68 C:\Users\PAUL_D~1\AppData\Local\Temp\cclxzrun.ltrans0.ltrans.o
0x08002de4 0x68 C:\Users\paul\AppData\Local\Temp\ccyIooTi.ltrans0.ltrans.o
.text.write_page
0x08002e10 0x34 C:\Users\PAUL_D~1\AppData\Local\Temp\cclxzrun.ltrans0.ltrans.o
0x08002e4c 0x34 C:\Users\paul\AppData\Local\Temp\ccyIooTi.ltrans0.ltrans.o
.text.get_next_buff
0x08002e44 0x54 C:\Users\PAUL_D~1\AppData\Local\Temp\cclxzrun.ltrans0.ltrans.o
0x08002e80 0x54 C:\Users\paul\AppData\Local\Temp\ccyIooTi.ltrans0.ltrans.o
.text.mmc1_wr.constprop.10
0x08002e98 0x22 C:\Users\PAUL_D~1\AppData\Local\Temp\cclxzrun.ltrans0.ltrans.o
*fill* 0x08002eba 0x2 ff
0x08002ed4 0x22 C:\Users\paul\AppData\Local\Temp\ccyIooTi.ltrans0.ltrans.o
*fill* 0x08002ef6 0x2 ff
.text.mmc1_chrrom_flash_wr
0x08002ebc 0x60 C:\Users\PAUL_D~1\AppData\Local\Temp\cclxzrun.ltrans0.ltrans.o
0x08002ef8 0x60 C:\Users\paul\AppData\Local\Temp\ccyIooTi.ltrans0.ltrans.o
.text.mmc1_prgrom_flash_wr
0x08002f1c 0x50 C:\Users\PAUL_D~1\AppData\Local\Temp\cclxzrun.ltrans0.ltrans.o
0x08002f58 0x50 C:\Users\paul\AppData\Local\Temp\ccyIooTi.ltrans0.ltrans.o
.text.swim_wotf
0x08002f6c 0xb4 C:\Users\PAUL_D~1\AppData\Local\Temp\cclxzrun.ltrans0.ltrans.o
0x08002fa8 0xb4 C:\Users\paul\AppData\Local\Temp\ccyIooTi.ltrans0.ltrans.o
.text.swim_rotf
0x08003020 0xac C:\Users\PAUL_D~1\AppData\Local\Temp\cclxzrun.ltrans0.ltrans.o
0x0800305c 0xac C:\Users\paul\AppData\Local\Temp\ccyIooTi.ltrans0.ltrans.o
.text.startup.main
0x080030cc 0x9e8 C:\Users\PAUL_D~1\AppData\Local\Temp\cclxzrun.ltrans0.ltrans.o
0x080030cc main
*fill* 0x08003ab4 0xc ff
.text 0x08003ac0 0x154 C:\Users\PAUL_D~1\AppData\Local\Temp\ccq24Qmp.o
0x08003ac0 swim_xfr
.text 0x08003c14 0xa08 c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/thumb/v6-m\libgcc.a(unwind-arm.o)
0x08003ed0 _Unwind_GetCFA
0x08003ed4 __gnu_Unwind_RaiseException
0x08003f28 __gnu_Unwind_ForcedUnwind
0x08003f3c __gnu_Unwind_Resume
0x08003f84 __gnu_Unwind_Resume_or_Rethrow
0x08003fa0 _Unwind_Complete
0x08003fa4 _Unwind_DeleteException
0x08003fb4 _Unwind_VRS_Get
0x08003ffc _Unwind_VRS_Set
0x08004044 __gnu_Unwind_Backtrace
0x08004394 __aeabi_unwind_cpp_pr0
0x080043a0 __aeabi_unwind_cpp_pr1
0x080043ac __aeabi_unwind_cpp_pr2
0x080043b8 _Unwind_VRS_Pop
.text 0x0800461c 0x144 c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/thumb/v6-m\libgcc.a(libunwind.o)
0x0800461c __restore_core_regs
0x0800461c restore_core_regs
0x08004648 __gnu_Unwind_Restore_VFP
0x0800464c __gnu_Unwind_Save_VFP
0x08004650 __gnu_Unwind_Restore_VFP_D
0x08004654 __gnu_Unwind_Save_VFP_D
0x08004658 __gnu_Unwind_Restore_VFP_D_16_to_31
0x0800465c __gnu_Unwind_Save_VFP_D_16_to_31
0x08004660 __gnu_Unwind_Restore_WMMXD
0x08004664 __gnu_Unwind_Save_WMMXD
0x08004668 __gnu_Unwind_Restore_WMMXC
0x0800466c __gnu_Unwind_Save_WMMXC
0x08004670 ___Unwind_RaiseException
0x08004670 _Unwind_RaiseException
0x080046a0 _Unwind_Resume
0x080046a0 ___Unwind_Resume
0x080046d0 _Unwind_Resume_or_Rethrow
0x080046d0 ___Unwind_Resume_or_Rethrow
0x08004700 _Unwind_ForcedUnwind
0x08004700 ___Unwind_ForcedUnwind
0x08004730 ___Unwind_Backtrace
0x08004730 _Unwind_Backtrace
.text 0x08004760 0x39c c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/thumb/v6-m\libgcc.a(pr-support.o)
0x080047b4 __gnu_unwind_execute
0x08004aa4 __gnu_unwind_frame
0x08004acc _Unwind_GetRegionStart
0x08004ad8 _Unwind_GetLanguageSpecificData
0x08004aec _Unwind_GetDataRelBase
0x08004af4 _Unwind_GetTextRelBase
.text.abort 0x08004afc 0x10 c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a(lib_a-abort.o)
0x08004afc abort
.text.memcpy 0x08004b0c 0x88 c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a(lib_a-memcpy-stub.o)
0x08004b0c memcpy
0x08003108 0x9e8 C:\Users\paul\AppData\Local\Temp\ccyIooTi.ltrans0.ltrans.o
0x08003108 main
.text 0x08003af0 0x154 C:\Users\paul\AppData\Local\Temp\cckRUKFb.o
0x08003af0 swim_xfr
.text 0x08003c44 0xa08 c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/thumb/v6-m\libgcc.a(unwind-arm.o)
0x08003f00 _Unwind_GetCFA
0x08003f04 __gnu_Unwind_RaiseException
0x08003f58 __gnu_Unwind_ForcedUnwind
0x08003f6c __gnu_Unwind_Resume
0x08003fb4 __gnu_Unwind_Resume_or_Rethrow
0x08003fd0 _Unwind_Complete
0x08003fd4 _Unwind_DeleteException
0x08003fe4 _Unwind_VRS_Get
0x0800402c _Unwind_VRS_Set
0x08004074 __gnu_Unwind_Backtrace
0x080043c4 __aeabi_unwind_cpp_pr0
0x080043d0 __aeabi_unwind_cpp_pr1
0x080043dc __aeabi_unwind_cpp_pr2
0x080043e8 _Unwind_VRS_Pop
.text 0x0800464c 0x144 c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/thumb/v6-m\libgcc.a(libunwind.o)
0x0800464c __restore_core_regs
0x0800464c restore_core_regs
0x08004678 __gnu_Unwind_Restore_VFP
0x0800467c __gnu_Unwind_Save_VFP
0x08004680 __gnu_Unwind_Restore_VFP_D
0x08004684 __gnu_Unwind_Save_VFP_D
0x08004688 __gnu_Unwind_Restore_VFP_D_16_to_31
0x0800468c __gnu_Unwind_Save_VFP_D_16_to_31
0x08004690 __gnu_Unwind_Restore_WMMXD
0x08004694 __gnu_Unwind_Save_WMMXD
0x08004698 __gnu_Unwind_Restore_WMMXC
0x0800469c __gnu_Unwind_Save_WMMXC
0x080046a0 ___Unwind_RaiseException
0x080046a0 _Unwind_RaiseException
0x080046d0 _Unwind_Resume
0x080046d0 ___Unwind_Resume
0x08004700 _Unwind_Resume_or_Rethrow
0x08004700 ___Unwind_Resume_or_Rethrow
0x08004730 _Unwind_ForcedUnwind
0x08004730 ___Unwind_ForcedUnwind
0x08004760 ___Unwind_Backtrace
0x08004760 _Unwind_Backtrace
.text 0x08004790 0x39c c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/thumb/v6-m\libgcc.a(pr-support.o)
0x080047e4 __gnu_unwind_execute
0x08004ad4 __gnu_unwind_frame
0x08004afc _Unwind_GetRegionStart
0x08004b08 _Unwind_GetLanguageSpecificData
0x08004b1c _Unwind_GetDataRelBase
0x08004b24 _Unwind_GetTextRelBase
.text.abort 0x08004b2c 0x10 c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a(lib_a-abort.o)
0x08004b2c abort
.text.memcpy 0x08004b3c 0x88 c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a(lib_a-memcpy-stub.o)
0x08004b3c memcpy
.text._raise_r
0x08004b94 0x5c c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a(lib_a-signal.o)
0x08004b94 _raise_r
.text.raise 0x08004bf0 0x14 c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a(lib_a-signal.o)
0x08004bf0 raise
.text._kill_r 0x08004c04 0x28 c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a(lib_a-signalr.o)
0x08004c04 _kill_r
0x08004bc4 0x5c c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a(lib_a-signal.o)
0x08004bc4 _raise_r
.text.raise 0x08004c20 0x14 c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a(lib_a-signal.o)
0x08004c20 raise
.text._kill_r 0x08004c34 0x28 c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a(lib_a-signalr.o)
0x08004c34 _kill_r
.text._getpid_r
0x08004c2c 0x8 c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a(lib_a-signalr.o)
0x08004c2c _getpid_r
.text._getpid 0x08004c34 0x10 c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v6-m\libnosys.a(getpid.o)
0x08004c34 _getpid
.text._kill 0x08004c44 0x10 c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v6-m\libnosys.a(kill.o)
0x08004c44 _kill
.text._exit 0x08004c54 0x4 c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v6-m\libnosys.a(_exit.o)
0x08004c54 _exit
0x08004c5c 0x8 c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a(lib_a-signalr.o)
0x08004c5c _getpid_r
.text._getpid 0x08004c64 0x10 c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v6-m\libnosys.a(getpid.o)
0x08004c64 _getpid
.text._kill 0x08004c74 0x10 c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v6-m\libnosys.a(kill.o)
0x08004c74 _kill
.text._exit 0x08004c84 0x4 c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v6-m\libnosys.a(_exit.o)
0x08004c84 _exit
*(.init)
.init 0x08004c58 0x4 c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/thumb/v6-m/crti.o
0x08004c58 _init
.init 0x08004c88 0x4 c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/thumb/v6-m/crti.o
0x08004c88 _init
*(.fini)
.fini 0x08004c5c 0x4 c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/thumb/v6-m/crti.o
0x08004c5c _fini
.fini 0x08004c8c 0x4 c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/thumb/v6-m/crti.o
0x08004c8c _fini
*crtbegin.o(.ctors)
*crtbegin?.o(.ctors)
*(EXCLUDE_FILE(*crtend.o *crtend?.o) .ctors)
@ -701,42 +700,42 @@ LOAD c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eab
*(.rodata*)
*(.eh_frame*)
.glue_7 0x08004c60 0x0
.glue_7 0x08004c60 0x0 linker stubs
.glue_7 0x08004c90 0x0
.glue_7 0x08004c90 0x0 linker stubs
.glue_7t 0x08004c60 0x0
.glue_7t 0x08004c60 0x0 linker stubs
.glue_7t 0x08004c90 0x0
.glue_7t 0x08004c90 0x0 linker stubs
.vfp11_veneer 0x08004c60 0x0
.vfp11_veneer 0x08004c60 0x0 linker stubs
.vfp11_veneer 0x08004c90 0x0
.vfp11_veneer 0x08004c90 0x0 linker stubs
.v4_bx 0x08004c60 0x0
.v4_bx 0x08004c60 0x0 linker stubs
.v4_bx 0x08004c90 0x0
.v4_bx 0x08004c90 0x0 linker stubs
.iplt 0x08004c60 0x0
.iplt 0x08004c60 0x0 C:\Users\PAUL_D~1\AppData\Local\Temp\ccOxWw6f.o
.iplt 0x08004c90 0x0
.iplt 0x08004c90 0x0 C:\Users\paul\AppData\Local\Temp\ccep6a43.o
.ARM.extab 0x08004c60 0x30
.ARM.extab 0x08004c90 0x30
*(.ARM.extab* .gnu.linkonce.armextab.*)
.ARM.extab 0x08004c60 0x24 c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/thumb/v6-m\libgcc.a(unwind-arm.o)
.ARM.extab 0x08004c84 0xc c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/thumb/v6-m\libgcc.a(pr-support.o)
0x08004c90 __exidx_start = .
.ARM.extab 0x08004c90 0x24 c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/thumb/v6-m\libgcc.a(unwind-arm.o)
.ARM.extab 0x08004cb4 0xc c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/thumb/v6-m\libgcc.a(pr-support.o)
0x08004cc0 __exidx_start = .
.ARM.exidx 0x08004c90 0xd0
.ARM.exidx 0x08004cc0 0xd0
*(.ARM.exidx* .gnu.linkonce.armexidx.*)
.ARM.exidx 0x08004c90 0x8 C:\Users\PAUL_D~1\AppData\Local\Temp\ccq24Qmp.o
.ARM.exidx 0x08004cc0 0x8 C:\Users\paul\AppData\Local\Temp\cckRUKFb.o
0x10 (size before relaxing)
.ARM.exidx 0x08004c98 0x98 c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/thumb/v6-m\libgcc.a(unwind-arm.o)
.ARM.exidx 0x08004cc8 0x98 c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/thumb/v6-m\libgcc.a(unwind-arm.o)
0xd8 (size before relaxing)
.ARM.exidx 0x08004d30 0x30 c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/thumb/v6-m\libgcc.a(pr-support.o)
.ARM.exidx 0x08004d60 0x30 c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/thumb/v6-m\libgcc.a(pr-support.o)
0x48 (size before relaxing)
0x08004d60 __exidx_end = .
0x08004d60 __etext = ALIGN (0x4)
0x08004d90 __exidx_end = .
0x08004d90 __etext = ALIGN (0x4)
.rel.dyn 0x08004d60 0x0
.rel.iplt 0x08004d60 0x0 C:\Users\PAUL_D~1\AppData\Local\Temp\ccOxWw6f.o
.rel.dyn 0x08004d90 0x0
.rel.iplt 0x08004d90 0x0 C:\Users\paul\AppData\Local\Temp\ccep6a43.o
.data 0x20000000 0x430 load address 0x08004d60
.data 0x20000000 0x430 load address 0x08004d90
0x20000000 __data_start__ = .
*(vtable)
*(.data*)
@ -764,61 +763,61 @@ LOAD c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eab
*(.fastrun)
0x20000430 __data_end__ = .
.igot.plt 0x20000430 0x0 load address 0x08005190
.igot.plt 0x20000430 0x0 C:\Users\PAUL_D~1\AppData\Local\Temp\ccOxWw6f.o
.igot.plt 0x20000430 0x0 load address 0x080051c0
.igot.plt 0x20000430 0x0 C:\Users\paul\AppData\Local\Temp\ccep6a43.o
.bss 0x20000430 0x2e4 load address 0x08005190
.bss 0x20000430 0x2e4 load address 0x080051c0
0x20000430 . = ALIGN (0x4)
0x20000430 __bss_start__ = .
*(.bss*)
.bss.addr_ptr 0x20000430 0x4 C:\Users\PAUL_D~1\AppData\Local\Temp\cclxzrun.ltrans0.ltrans.o
.bss.addrh 0x20000434 0x2 C:\Users\PAUL_D~1\AppData\Local\Temp\cclxzrun.ltrans0.ltrans.o
.bss.addr_ptr 0x20000430 0x4 C:\Users\paul\AppData\Local\Temp\ccyIooTi.ltrans0.ltrans.o
.bss.addrh 0x20000434 0x2 C:\Users\paul\AppData\Local\Temp\ccyIooTi.ltrans0.ltrans.o
.bss.bank_table
0x20000436 0x2 C:\Users\PAUL_D~1\AppData\Local\Temp\cclxzrun.ltrans0.ltrans.o
.bss.buff0 0x20000438 0x14 C:\Users\PAUL_D~1\AppData\Local\Temp\cclxzrun.ltrans0.ltrans.o
.bss.buff1 0x2000044c 0x14 C:\Users\PAUL_D~1\AppData\Local\Temp\cclxzrun.ltrans0.ltrans.o
.bss.buff2 0x20000460 0x14 C:\Users\PAUL_D~1\AppData\Local\Temp\cclxzrun.ltrans0.ltrans.o
.bss.buff3 0x20000474 0x14 C:\Users\PAUL_D~1\AppData\Local\Temp\cclxzrun.ltrans0.ltrans.o
.bss.cur_bank 0x20000488 0x1 C:\Users\PAUL_D~1\AppData\Local\Temp\cclxzrun.ltrans0.ltrans.o
0x20000436 0x2 C:\Users\paul\AppData\Local\Temp\ccyIooTi.ltrans0.ltrans.o
.bss.buff0 0x20000438 0x14 C:\Users\paul\AppData\Local\Temp\ccyIooTi.ltrans0.ltrans.o
.bss.buff1 0x2000044c 0x14 C:\Users\paul\AppData\Local\Temp\ccyIooTi.ltrans0.ltrans.o
.bss.buff2 0x20000460 0x14 C:\Users\paul\AppData\Local\Temp\ccyIooTi.ltrans0.ltrans.o
.bss.buff3 0x20000474 0x14 C:\Users\paul\AppData\Local\Temp\ccyIooTi.ltrans0.ltrans.o
.bss.cur_bank 0x20000488 0x1 C:\Users\paul\AppData\Local\Temp\ccyIooTi.ltrans0.ltrans.o
*fill* 0x20000489 0x3
.bss.cur_buff 0x2000048c 0x4 C:\Users\PAUL_D~1\AppData\Local\Temp\cclxzrun.ltrans0.ltrans.o
.bss.cur_buff 0x2000048c 0x4 C:\Users\paul\AppData\Local\Temp\ccyIooTi.ltrans0.ltrans.o
.bss.cur_usb_load_buff
0x20000490 0x4 C:\Users\PAUL_D~1\AppData\Local\Temp\cclxzrun.ltrans0.ltrans.o
.bss.exp_byte 0x20000494 0x1 C:\Users\PAUL_D~1\AppData\Local\Temp\cclxzrun.ltrans0.ltrans.o
0x20000490 0x4 C:\Users\paul\AppData\Local\Temp\ccyIooTi.ltrans0.ltrans.o
.bss.exp_byte 0x20000494 0x1 C:\Users\paul\AppData\Local\Temp\ccyIooTi.ltrans0.ltrans.o
.bss.incoming_bytes_remain
0x20000495 0x1 C:\Users\PAUL_D~1\AppData\Local\Temp\cclxzrun.ltrans0.ltrans.o
0x20000495 0x1 C:\Users\paul\AppData\Local\Temp\ccyIooTi.ltrans0.ltrans.o
*fill* 0x20000496 0x2
.bss.lfsr 0x20000498 0x4 C:\Users\PAUL_D~1\AppData\Local\Temp\cclxzrun.ltrans0.ltrans.o
.bss.num_buff.5127
0x2000049c 0x1 C:\Users\PAUL_D~1\AppData\Local\Temp\cclxzrun.ltrans0.ltrans.o
.bss.lfsr 0x20000498 0x4 C:\Users\paul\AppData\Local\Temp\ccyIooTi.ltrans0.ltrans.o
.bss.num_buff.5153
0x2000049c 0x1 C:\Users\paul\AppData\Local\Temp\ccyIooTi.ltrans0.ltrans.o
.bss.num_prg_banks
0x2000049d 0x1 C:\Users\PAUL_D~1\AppData\Local\Temp\cclxzrun.ltrans0.ltrans.o
0x2000049d 0x1 C:\Users\paul\AppData\Local\Temp\ccyIooTi.ltrans0.ltrans.o
*fill* 0x2000049e 0x2
.bss.oper_info_struct
0x200004a0 0x20 C:\Users\PAUL_D~1\AppData\Local\Temp\cclxzrun.ltrans0.ltrans.o
0x200004a0 0x20 C:\Users\paul\AppData\Local\Temp\ccyIooTi.ltrans0.ltrans.o
.bss.pbje_command
0x200004c0 0x1 C:\Users\PAUL_D~1\AppData\Local\Temp\cclxzrun.ltrans0.ltrans.o
0x200004c0 0x1 C:\Users\paul\AppData\Local\Temp\ccyIooTi.ltrans0.ltrans.o
.bss.pbje_data
0x200004c1 0x20 C:\Users\PAUL_D~1\AppData\Local\Temp\cclxzrun.ltrans0.ltrans.o
0x200004c1 0x20 C:\Users\paul\AppData\Local\Temp\ccyIooTi.ltrans0.ltrans.o
.bss.pbje_numclk
0x200004e1 0x1 C:\Users\PAUL_D~1\AppData\Local\Temp\cclxzrun.ltrans0.ltrans.o
0x200004e1 0x1 C:\Users\paul\AppData\Local\Temp\ccyIooTi.ltrans0.ltrans.o
.bss.pbje_status
0x200004e2 0x1 C:\Users\PAUL_D~1\AppData\Local\Temp\cclxzrun.ltrans0.ltrans.o
0x200004e2 0x1 C:\Users\paul\AppData\Local\Temp\ccyIooTi.ltrans0.ltrans.o
.bss.raw_bank_status
0x200004e3 0x10 C:\Users\PAUL_D~1\AppData\Local\Temp\cclxzrun.ltrans0.ltrans.o
0x200004e3 0x10 C:\Users\paul\AppData\Local\Temp\ccyIooTi.ltrans0.ltrans.o
*fill* 0x200004f3 0x1
.bss.raw_buffer16
0x200004f4 0x200 C:\Users\PAUL_D~1\AppData\Local\Temp\cclxzrun.ltrans0.ltrans.o
.bss.rv16.4747
0x200006f4 0x8 C:\Users\PAUL_D~1\AppData\Local\Temp\cclxzrun.ltrans0.ltrans.o
.bss.rv16.5047
0x200006fc 0x8 C:\Users\PAUL_D~1\AppData\Local\Temp\cclxzrun.ltrans0.ltrans.o
0x200004f4 0x200 C:\Users\paul\AppData\Local\Temp\ccyIooTi.ltrans0.ltrans.o
.bss.rv16.4750
0x200006f4 0x8 C:\Users\paul\AppData\Local\Temp\ccyIooTi.ltrans0.ltrans.o
.bss.rv16.5073
0x200006fc 0x8 C:\Users\paul\AppData\Local\Temp\ccyIooTi.ltrans0.ltrans.o
.bss.stm_debug_disable
0x20000704 0x1 C:\Users\PAUL_D~1\AppData\Local\Temp\cclxzrun.ltrans0.ltrans.o
0x20000704 0x1 C:\Users\paul\AppData\Local\Temp\ccyIooTi.ltrans0.ltrans.o
*fill* 0x20000705 0x3
.bss.swim_base
0x20000708 0x4 C:\Users\PAUL_D~1\AppData\Local\Temp\cclxzrun.ltrans0.ltrans.o
.bss.swim_pin 0x2000070c 0x1 C:\Users\PAUL_D~1\AppData\Local\Temp\cclxzrun.ltrans0.ltrans.o
0x20000708 0x4 C:\Users\paul\AppData\Local\Temp\ccyIooTi.ltrans0.ltrans.o
.bss.swim_pin 0x2000070c 0x1 C:\Users\paul\AppData\Local\Temp\ccyIooTi.ltrans0.ltrans.o
*(COMMON)
*fill* 0x2000070d 0x3
COMMON 0x20000710 0x4 c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a(lib_a-reent.o)
@ -845,45 +844,45 @@ OUTPUT(build_stm/inlretro_stm.elf elf32-littlearm)
.ARM.attributes
0x00000000 0x1e c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/thumb/v6-m/crti.o
.ARM.attributes
0x0000001e 0x2f C:\Users\PAUL_D~1\AppData\Local\Temp\cclxzrun.ltrans0.ltrans.o
0x0000001e 0x2f C:\Users\paul\AppData\Local\Temp\ccyIooTi.ltrans0.ltrans.o
.ARM.attributes
0x0000004d 0x21 C:\Users\PAUL_D~1\AppData\Local\Temp\ccq24Qmp.o
0x0000004d 0x21 C:\Users\paul\AppData\Local\Temp\cckRUKFb.o
.comment 0x00000000 0x7f
.comment 0x00000000 0x7f C:\Users\PAUL_D~1\AppData\Local\Temp\cclxzrun.ltrans0.ltrans.o
.comment 0x00000000 0x7f C:\Users\paul\AppData\Local\Temp\ccyIooTi.ltrans0.ltrans.o
0x80 (size before relaxing)
.debug_info 0x00000000 0x4835
.debug_info 0x00000000 0x480f C:\Users\PAUL_D~1\AppData\Local\Temp\cclxzrun.ltrans0.ltrans.o
.debug_info 0x0000480f 0x26 C:\Users\PAUL_D~1\AppData\Local\Temp\ccq24Qmp.o
.debug_info 0x00000000 0x48db
.debug_info 0x00000000 0x48b5 C:\Users\paul\AppData\Local\Temp\ccyIooTi.ltrans0.ltrans.o
.debug_info 0x000048b5 0x26 C:\Users\paul\AppData\Local\Temp\cckRUKFb.o
.debug_abbrev 0x00000000 0x6a7
.debug_abbrev 0x00000000 0x693 C:\Users\PAUL_D~1\AppData\Local\Temp\cclxzrun.ltrans0.ltrans.o
.debug_abbrev 0x00000693 0x14 C:\Users\PAUL_D~1\AppData\Local\Temp\ccq24Qmp.o
.debug_abbrev 0x00000000 0x6b6
.debug_abbrev 0x00000000 0x6a2 C:\Users\paul\AppData\Local\Temp\ccyIooTi.ltrans0.ltrans.o
.debug_abbrev 0x000006a2 0x14 C:\Users\paul\AppData\Local\Temp\cckRUKFb.o
.debug_loc 0x00000000 0x6ecc
.debug_loc 0x00000000 0x6ecc C:\Users\PAUL_D~1\AppData\Local\Temp\cclxzrun.ltrans0.ltrans.o
.debug_loc 0x00000000 0x6ff6
.debug_loc 0x00000000 0x6ff6 C:\Users\paul\AppData\Local\Temp\ccyIooTi.ltrans0.ltrans.o
.debug_aranges 0x00000000 0x1d0
.debug_aranges
0x00000000 0x1b0 C:\Users\PAUL_D~1\AppData\Local\Temp\cclxzrun.ltrans0.ltrans.o
0x00000000 0x1b0 C:\Users\paul\AppData\Local\Temp\ccyIooTi.ltrans0.ltrans.o
.debug_aranges
0x000001b0 0x20 C:\Users\PAUL_D~1\AppData\Local\Temp\ccq24Qmp.o
0x000001b0 0x20 C:\Users\paul\AppData\Local\Temp\cckRUKFb.o
.debug_ranges 0x00000000 0xb18
.debug_ranges 0x00000000 0xb18 C:\Users\PAUL_D~1\AppData\Local\Temp\cclxzrun.ltrans0.ltrans.o
.debug_ranges 0x00000000 0xb30
.debug_ranges 0x00000000 0xb30 C:\Users\paul\AppData\Local\Temp\ccyIooTi.ltrans0.ltrans.o
.debug_line 0x00000000 0x165d
.debug_line 0x00000000 0x156a C:\Users\PAUL_D~1\AppData\Local\Temp\cclxzrun.ltrans0.ltrans.o
.debug_line 0x0000156a 0xf3 C:\Users\PAUL_D~1\AppData\Local\Temp\ccq24Qmp.o
.debug_line 0x00000000 0x1677
.debug_line 0x00000000 0x1584 C:\Users\paul\AppData\Local\Temp\ccyIooTi.ltrans0.ltrans.o
.debug_line 0x00001584 0xf3 C:\Users\paul\AppData\Local\Temp\cckRUKFb.o
.debug_str 0x00000000 0x1073
.debug_str 0x00000000 0x100a C:\Users\PAUL_D~1\AppData\Local\Temp\cclxzrun.ltrans0.ltrans.o
0x1123 (size before relaxing)
.debug_str 0x0000100a 0x69 C:\Users\PAUL_D~1\AppData\Local\Temp\ccq24Qmp.o
.debug_str 0x00000000 0x1071
.debug_str 0x00000000 0x1008 C:\Users\paul\AppData\Local\Temp\ccyIooTi.ltrans0.ltrans.o
0x1121 (size before relaxing)
.debug_str 0x00001008 0x69 C:\Users\paul\AppData\Local\Temp\cckRUKFb.o
.debug_frame 0x00000000 0x594
.debug_frame 0x00000000 0x594 C:\Users\PAUL_D~1\AppData\Local\Temp\cclxzrun.ltrans0.ltrans.o
.debug_frame 0x00000000 0x594 C:\Users\paul\AppData\Local\Temp\ccyIooTi.ltrans0.ltrans.o
.stabstr 0x00000000 0x76
.stabstr 0x00000000 0x76 c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v6-m\libnosys.a(getpid.o)

View File

@ -115,20 +115,27 @@ uint8_t dump_buff( buffer *buff ) {
#endif
#ifdef SEGA_CONN
case GENESIS_ROM_PAGE0:
case GENESIS_ROM_PAGE0: //A16=0 first half of A1-A16 BANK
//mapper byte specifies Genesis CPU A15-8
addrH |= (buff->mapper); //no shift needed
buff->cur_byte = genesis_page_rd( buff->data, addrH, buff->id,
//id contains MSb of page when <256B buffer
buff->last_idx);
break;
case GENESIS_ROM_PAGE1:
case GENESIS_ROM_PAGE1: //A16=1 second half of A1-A16 BANK
//mapper byte specifies Genesis CPU A15-8
addrH |= (buff->mapper); //no shift needed
buff->cur_byte = genesis_page_rd( buff->data, addrH+0x0100, buff->id,
//id contains MSb of page when <256B buffer
buff->last_idx);
break;
case GENESIS_RAM_PAGE: //Only read data from lower Byte D0-7
//mapper byte specifies Genesis CPU A15-8
addrH |= (buff->mapper); //no shift needed
buff->cur_byte = genesis_ram_page_rd( buff->data, addrH, buff->id,
//id contains MSb of page when <256B buffer
buff->last_idx);
break;
#endif
#ifdef N64_CONN

View File

@ -20,6 +20,39 @@ uint8_t write_page( uint8_t addrH, buffer *buff, write_funcptr wr_func )
//TODO error check/report
return SUCCESS;
}
/*
uint8_t write_page_mmc5( uint8_t addrH, buffer *buff, write_funcptr wr_func )
{
uint16_t cur = buff->cur_byte;
uint8_t n = buff->cur_byte;
// uint8_t read;
//enable PRG-RAM writting and then quickly write to it and make sure don't timeout
//disable write protection, and enable WRAM
//for save data safety start by disabling WRAM writes
//dict.nes("NES_CPU_WR", 0x5102, 0x02) --bits 1&0 must be '01' (ie 0x02) to allow writes to WRAM
//dict.nes("NES_CPU_WR", 0x5103, 0x01) --bits 1&0 must be '10' (ie 0x01) to allow writes to WRAM
__disable_irq(); //clear's processor PRIMASK register bit to allow interrupts to be taken
nes_cpu_wr(0x5102, 0x02);
nes_cpu_wr(0x5103, 0x01);
nes_cpu_wr(0x5102, 0x02);
nes_cpu_wr(0x5103, 0x01);
while ( cur <= buff->last_idx ) {
wr_func( ((addrH<<8)| n), buff->data[n] );
//write function returns when it's complete or errors out
n++;
cur++;
}
__enable_irq(); //clear's processor PRIMASK register bit to allow interrupts to be taken
buff->cur_byte = n;
//TODO error check/report
return SUCCESS;
}
*/
uint8_t write_page_verify( uint8_t addrH, buffer *buff, write_rv_funcptr wr_func )
{
@ -440,6 +473,13 @@ uint8_t flash_buff( buffer *buff ) {
uint8_t addrH = buff->page_num; //A15:8 while accessing page
uint8_t bank;
#ifdef SEGA_CONN
uint16_t cur ;//= buff->cur_byte;
uint8_t n ;//= buff->cur_byte;
uint16_t temp;
uint16_t addr;
#endif
switch ( buff->mem_type ) {
#ifdef NES_CONN
case PRGROM: //$8000
@ -607,7 +647,11 @@ uint8_t flash_buff( buffer *buff ) {
break;
case PRGRAM:
write_page( addrH+0x60, buff, nes_cpu_wr);
//if (buff->mapper == MMC5) {
// write_page_mmc5( addrH+0x60, buff, nes_cpu_wr);
//} else {
write_page( addrH+0x60, buff, nes_cpu_wr);
//}
break;
#endif
@ -673,6 +717,48 @@ uint8_t flash_buff( buffer *buff ) {
break;
#endif
#ifdef SEGA_CONN
case GENESISROM:
//if (buff->mapper == LOROM_5VOLT) {
//LOROM banks start at $XX:8000
//write_page_16bit( addrH+0x80, buff, snes_5v_flash_wr);
//}
//uint8_t write_page( uint8_t addrH, buffer *buff, write_funcptr wr_func )
//{
cur = buff->cur_byte;
n = buff->cur_byte;
addr = addrH;
addr = addr<<8;
// uint8_t read;
while ( cur <= buff->last_idx ) {
//TODO this is broke, first 256 bytes keep getting written over and over again
temp = buff->data[n];
temp = temp<<8;
n++;
temp += buff->data[n];
//n--;
gen_sst_flash_wr( (addr|(n>>1)), temp);
//wr_func( ((addrH<<8)| n), buff->data[n] );
//write function returns when it's complete or errors out
addr++;
//n++;
cur++;
n++;
cur++;
}
buff->cur_byte = n;
//TODO error check/report
// return SUCCESS;
//}
#endif
default:
return ERR_BUFF_UNSUP_MEM_TYPE;
}

View File

@ -476,7 +476,7 @@ void sega_init()
// HADDR_ENABLE();
// HADDR_IP();
// HADDR_PU();
//TODO ERROR DATA16_ENABLE();
DATA16_ENABLE();
// DATA16_IP();
// DATA16_PU();

View File

@ -120,6 +120,9 @@ uint8_t nes_call( uint8_t opcode, uint8_t miscdata, uint16_t operand, uint8_t *r
case MMC3S_PRG_FLASH_WR:
mmc3s_prgrom_flash_wr( operand, miscdata );
break;
case PPU_PAGE_WR_LFSR:
ppu_page_wr_lfsr( operand, miscdata );
break;
//8bit return values:
@ -156,8 +159,9 @@ uint8_t nes_call( uint8_t opcode, uint8_t miscdata, uint16_t operand, uint8_t *r
rdata[RD_LEN] = BYTE_LEN;
rdata[RD0] = num_prg_banks;
break;
case PPU_PAGE_WR_LFSR:
ppu_page_wr_lfsr( operand, miscdata );
case MMC5_PRG_RAM_WR:
rdata[RD_LEN] = BYTE_LEN;
rdata[RD0] = mmc5_prgram_wr( operand, miscdata );
break;
default:
//macro doesn't exist
@ -839,10 +843,10 @@ uint8_t nes_cpu_page_rd_poll( uint8_t *data, uint8_t addrH, uint8_t first, uint8
ADDRH(addrH);
//set M2 and /ROMSEL
M2_HI();
if( addrH >= 0x80 ) { //addressing cart rom space
ROMSEL_LO(); //romsel trails M2 during CPU operations
}
M2_HI();
//set lower address bits
ADDRL(first); //doing this prior to entry and right after latching
@ -885,7 +889,7 @@ uint8_t nes_cpu_page_rd_toggle( uint8_t *data, uint8_t addrH, uint8_t first, uin
//set address bus
ADDRH(addrH);
//set M2 and /ROMSEL
//set /ROMSEL
if( addrH >= 0x80 ) { //addressing cart rom space
ROMSEL_LO(); //romsel trails M2 during CPU operations
}
@ -1749,4 +1753,16 @@ uint8_t tssop_prgrom_flash_wr( uint16_t addr, uint8_t data )
return rv;
}
uint8_t mmc5_prgram_wr( uint16_t addr, uint8_t data )
{
nes_cpu_wr(0x5102, 0x02); //PRG-RAM protect 1
nes_cpu_wr(0x5103, 0x01); //PRG-RAM protect 2
nes_cpu_wr(0x5102, 0x02); //need an additional M2 cycling, may as well be a write to a prot reg
//if there is an interrupt durring this time the write could fail if >11.2usec
nes_cpu_wr(addr, data);
return nes_cpu_rd(addr);
}
#endif //NES_CONN

View File

@ -50,6 +50,7 @@ uint8_t gtrom_prgrom_flash_wr( uint16_t addr, uint8_t data );
void ppu_page_wr_lfsr( uint16_t addr, uint8_t data );
uint8_t a53_tssop_prgrom_flash_wr( uint16_t addr, uint8_t data );
uint8_t tssop_prgrom_flash_wr( uint16_t addr, uint8_t data );
uint8_t mmc5_prgram_wr( uint16_t addr, uint8_t data );

View File

@ -641,6 +641,7 @@ void software_AXL_CLK();
#define RCC_AHBENR_ADDR RCC_AHBENR_GPIOCEN
#define RCC_AHBENR_HADDR (RCC_AHBENR_GPIOAEN | RCC_AHBENR_GPIOBEN)
#define RCC_AHBENR_DATA RCC_AHBENR_GPIOBEN
#define RCC_AHBENR_DATA16 (RCC_AHBENR_GPIOAEN | RCC_AHBENR_GPIOBEN)
#define RCC_AHBENR_EXP (RCC_AHBENR_GPIOAEN | RCC_AHBENR_GPIOBEN)
@ -1113,11 +1114,13 @@ void software_AXL_CLK();
//IP and OP assume MODER[1] is clear (ie not set to Alt Func)
//also assume PUPDR is reset default floating
//TODO for input MODER=00 why not just clear both bits???
#define DATA_IP_PU() Dbank->MODER &= ~(MODER_OP_ALL & 0xFFFF0000); Dbank->PUPDR |= (PUPDR_PU_ALL & 0xFFFF0000)
#define DATA_IP() Dbank->MODER &= ~(MODER_OP_ALL & 0xFFFF0000)
#define DATA_OP() Dbank->MODER |= (MODER_OP_ALL & 0xFFFF0000)
//TODO create byte wide port structs to grant byte accesses so doesn't need shifted
#define DATA_SET(data) Dbank->ODR = (Dbank->ODR & 0x00FF) | (data<<8)
//TODO the 0x00FF mask shouldn't be necessary as they're reserved and expected to be clear
#define DATA_RD(data) data = (Dbank->IDR>>8) & 0x00FF
#define DATA_EN_CLK() RCC->AHBENR |= RCC_AHBENR_DATA
@ -1391,17 +1394,42 @@ void software_AXL_CLK();
#ifdef STM_INL6
//Combine 8bit DATA0-7 and 8bit EXP1-8
// //A16-21 are on PB10-15 these also map to EXP1-5, & 7
// //A22-23 are on PA9-10 these also map to CIRAM A10 & CIRAM /CE respectively
// #define A16_21bank GPIOB
// #define A22_23bank GPIOA
//
//D0-7 are on PB8-15, D8-13 are on PB2-7
// MSByte: 7654_3210 LSByte: 13-12-11-10_9-8-X-X
#define D0_13bank GPIOB //all of B except PB0-1
//D14-15 are on PA9-10
#define D14_15bank GPIOA
//
// #define HADDR_PU() A16_21bank->PUPDR |= (PUPDR_PU_ALL & 0xFFF00000); A22_23bank->PUPDR |= (PUPDR_PU_ALL & 0x003C0000)
// #define HADDR_IP() A16_21bank->MODER &=~(MODER_OP_ALL & 0xFFF00000); A22_23bank->MODER &=~(MODER_OP_ALL & 0x003C0000)
// #define HADDR_OP() A16_21bank->MODER |= (MODER_OP_ALL & 0xFFF00000); A22_23bank->MODER |= (MODER_OP_ALL & 0x003C0000)
//
// #define HADDR_SET(val) A16_21bank->ODR = ((A16_21bank->ODR&0x03FF) | (val<<10 & 0xFC00)); A22_23bank->ODR = ((A22_23bank->ODR & 0xF9FF) | (val<<3 & 0x0600))
//IP and OP assume MODER[1] is clear (ie not set to Alt Func)
//also assume PUPDR is reset default floating
// #define DATA16_IP_PU() DATA_IP_PU(); = ~(MODER_OP_ALL & 0xFFFF0000); Dbank->PUPDR |= (PUPDR_PU_ALL & 0xFFFF0000)
// #define DATA_IP() Dbank->MODER &= ~(MODER_OP_ALL & 0xFFFF0000)
// #define DATA_OP() Dbank->MODER |= (MODER_OP_ALL & 0xFFFF0000)
// #define DATA_SET(data) Dbank->ODR = (Dbank->ODR & 0x00FF) | (data<<8)
// #define DATA_RD(data) data = (Dbank->IDR>>8) & 0x00FF
//
// #define DATA_EN_CLK() RCC->AHBENR |= RCC_AHBENR_DATA
// #define DATA_ENABLE() DATA_EN_CLK(); DATA_IP_PU();
#define DATA16_IP() D0_13bank->MODER &= 0x0000000F; D14_15bank->MODER &= 0xFFC3FFFF
#define DATA16_OP() D0_13bank->MODER |= (MODER_OP_ALL & 0xFFFFFFF0); D14_15bank->MODER |= (MODER_OP_ALL & 0x003C0000)
#define DATA16_PU() D0_13bank->PUPDR |= (PUPDR_PU_ALL & 0xFFFFFFF0); D14_15bank->PUPDR |= (PUPDR_PU_ALL & 0x003C0000)
// #define DATA16_IP_PU() DATA16_IP(); DATA16_PU()
// #define DATA_SET(data) Dbank->ODR = (Dbank->ODR & 0x00FF) | (data<<8)
#define DATA16L_RD(data) data = (D0_13bank->IDR>>8)// & 0x00FF
// MSByte: 7654_3210 LSByte: 13-12-11-10_9-8-X-X
#define DATA16H_RD(data) data = ((D0_13bank->IDR>>2)&0x003F) | ((D14_15bank->IDR>>3)&0x00C0)
#define DATA16L_SET(data) D0_13bank->ODR = (D0_13bank->ODR & 0x00FF) | (data<<8)
//TODO rethink these macros!
#define DATA16H_SET(data) D0_13bank->ODR = (D0_13bank->ODR & 0xFF03) | (data<<2); D14_15bank->ODR= (D14_15bank->ODR& 0xF9FF) | (data<<3)
#define DATA16_EN_CLK() RCC->AHBENR |= RCC_AHBENR_DATA16
#define DATA16_ENABLE() DATA16_EN_CLK(); DATA16_IP(); DATA16_PU()
#endif //STM_INL6

View File

@ -3,6 +3,8 @@
//only need this file if connector is present on the device
#ifdef SEGA_CONN
uint16_t sega_addr = 0;
//=================================================================================================
//
// SEGA operations
@ -34,11 +36,20 @@ uint8_t sega_call( uint8_t opcode, uint8_t miscdata, uint16_t operand, uint8_t *
switch (opcode) {
// //no return value:
case SEGA_WR:
sega_wr( operand, miscdata );
case GEN_SET_ADDR:
sega_addr = operand;
ADDR_SET(sega_addr);
break;
case GEN_WR_LO:
sega_addr = operand;
gen_wr_lo( operand, miscdata );
break;
case GEN_WR_HI:
sega_addr = operand;
gen_wr_hi( operand, miscdata );
break;
case SET_BANK:
case GEN_SET_BANK:
temp = ADDR_CUR; //this will get stomped
#define LOMEM_TIME_MASK 0x84
//A17-18, 20-23
@ -51,12 +62,27 @@ uint8_t sega_call( uint8_t opcode, uint8_t miscdata, uint16_t operand, uint8_t *
} else {
IRQ_LO();
}
//use of flip-flop corrupts A1-A16, restore it
ADDR_SET(sega_addr);
break;
case GEN_FLASH_WR_ADDROFF:
sega_addr += miscdata;
gen_flash_wr(sega_addr, operand);
break;
case GEN_SST_FLASH_WR_ADDROFF:
sega_addr += miscdata;
gen_sst_flash_wr(sega_addr, operand);
break;
//8bit return values:
case SEGA_RD:
rdata[RD_LEN] = BYTE_LEN;
rdata[RD0] = sega_rd( operand );
case GEN_ROM_RD:
sega_addr = operand;
rdata[RD_LEN] = HWORD_LEN;
temp = gen_rom_rd( operand );
rdata[RD0] = temp;
rdata[RD1] = temp>>8;
break;
default:
//macro doesn't exist
@ -67,19 +93,208 @@ uint8_t sega_call( uint8_t opcode, uint8_t miscdata, uint16_t operand, uint8_t *
}
uint8_t sega_rd( uint16_t addr )
uint16_t gen_rom_rd( uint16_t addr )
{
return 0xAA;
uint16_t rv;
uint8_t temp;
ADDR_SET(addr);
//set #C_CE
ROMSEL_LO();
//set #C_OE
CSRD_LO();
NOP();
NOP();
NOP();
NOP();
NOP();
NOP();
//6 above were working, trying more
//NOP();
//NOP();
//NOP();
//NOP();
//NOP();
//NOP();
////latch data high byte
//rv = HDATA_VAL;
////shift into upper byte
//rv = rv<<8;
////latch data low byte
//DATA_RD(temp);
//rv |= temp;
DATA16H_RD(rv);
rv = rv << 8;
DATA16L_RD(temp);
rv |= temp;
//return bus to default
CSRD_HI();
ROMSEL_HI();
return rv;
}
void sega_wr( uint16_t addr, uint8_t data )
void gen_wr_lo( uint16_t addr, uint8_t data )
{
return;
ADDR_SET(addr);
//put data on bus
DATA_OP();
DATA_SET(data); //lower byte D0-7
//set #C_CE
ROMSEL_LO();
//set #C_OE
//CSRD_LO();
//set #LDSW
PRGRW_LO();
NOP();
NOP();
NOP();
NOP();
NOP();
NOP();
//latch data with /WE - #LDSW
PRGRW_HI();
//return bus to default
//CSRD_HI();
ROMSEL_HI();
//Free data bus
DATA_IP();
}
//TODO this function is untested, but I think it'll work..
void gen_wr_hi( uint16_t addr, uint8_t data )
{
ADDR_SET(addr);
//put data on bus
//DATA_OP();
//DATA_SET(data); //lower byte D0-7
//set data bus to output
//TODO maybe want a function that only sets upper byte to output..?
DATA16_OP();
//DATA16L_SET(data);
DATA16H_SET(data); //put 8bits of data on high byte
//set #C_CE
ROMSEL_LO(); //enables level shifter
//wait for data to get to flash before latching
NOP();
NOP();
NOP();
NOP();
NOP();
NOP();
NOP();
NOP();
//set #UDSW
CSWR_LO();
NOP();
NOP();
NOP();
NOP();
NOP();
NOP();
//latch data with /WE - #UDSW
CSWR_HI();
NOP();
NOP();
NOP();
//return bus to default
ROMSEL_HI();
//Free data bus
DATA16_IP();
}
/* Desc:SNES ROM Page Read with optional USB polling
void gen_flash_wr( uint16_t addr, uint16_t data )
{
uint8_t temp = data;
ADDR_SET(addr);
//put data on bus
//DATA_OP();
//DATA_SET(temp); //lower byte D0-7
DATA16_OP();
DATA16L_SET(data);
data = data>>8;
DATA16H_SET(data); //put 8bits of data on high byte
//TODO figure out why this is needed...
//guessing macro expansion or something with setting both bytes separately
DATA_SET(temp); //lower byte D0-7
//TODO set upper byte of data
//set #C_CE
ROMSEL_LO();
//set #C_OE
//flash writes must be high
//CSRD_LO();
//set #LDSW
//PRGRW_LO();
// #UDSW B29 CPU D8-15 data strobe
CSWR_LO();
NOP();
NOP();
NOP();
NOP();
NOP();
NOP();
//6 above were working, testing more
//NOP();
//NOP();
//NOP();
//NOP();
//NOP();
//NOP();
//latch data with /WE - #LDSW
//PRGRW_HI();
CSWR_HI();
//return bus to default
ROMSEL_HI();
//Free data bus
//DATA_IP();
DATA16_IP();
}
/* Desc:SEGA GENESIS ROM Page Read with optional USB polling
* /ROMSEL based on romsel arg, EXP0/RESET unaffected
* if poll is true calls usbdrv.h usbPoll fuction
* this is needed to keep from timing out when double buffering usb data
@ -148,5 +363,95 @@ uint8_t genesis_page_rd( uint8_t *data, uint16_t addrH, uint8_t first, uint8_t l
return i;
}
/* Desc:SEGA GENESIS RAM Page Read with optional USB polling
* /ROMSEL based on romsel arg, EXP0/RESET unaffected
* if poll is true calls usbdrv.h usbPoll fuction
* this is needed to keep from timing out when double buffering usb data
* Pre: snes_init() setup of io pins
* num_bytes can't exceed 256B page boundary
* Post:address left on bus
* data bus left clear
* data buffer filled starting at first to last
* Rtn: Index of last byte read
*/
uint8_t genesis_ram_page_rd( uint8_t *data, uint16_t addrH, uint8_t first, uint8_t len )
{
uint8_t i;
//set address bus
ADDRH(addrH);
//set #C_CE
ROMSEL_LO();
//set #C_OE
CSRD_LO();
//set lower address bits
ADDRL(first); //doing this prior to entry and right after latching
//gives longest delay between address out and latching data
for( i=0; i<=len; i++ ) {
//gameboy needed some extra NOPS
NOP();
NOP();
NOP();
NOP();
NOP();
NOP();
NOP();
NOP();
//latch data high byte
// data[i] = HDATA_VAL;
// i++;
//latch data low byte
DATA_RD(data[i]);
//set lower address bits
//ADDRL(++first); THIS broke things, on stm adapter because macro expands it twice!
first++;
ADDRL(first);
}
//return bus to default
CSRD_HI();
ROMSEL_HI();
//return index of last byte read
return i;
}
void gen_sst_flash_wr( uint16_t addr, uint16_t data )
{
uint16_t rv;
//dict.sega("GEN_SET_ADDR", 0x5555)
//dict.sega("GEN_FLASH_WR_ADDROFF", 0x00AA, 0)
gen_flash_wr(0x5555, 0x00AA);
//dict.sega("GEN_SET_ADDR", 0x2AAA)
//dict.sega("GEN_FLASH_WR_ADDROFF", 0x0055, 0)
gen_flash_wr(0x2AAA, 0x0055);
//dict.sega("GEN_SET_ADDR", 0x5555)
//dict.sega("GEN_FLASH_WR_ADDROFF", 0x00A0, 0) --write byte command
gen_flash_wr(0x5555, 0x00A0);
//dict.sega("GEN_SET_ADDR", addr)
//dict.sega("GEN_FLASH_WR_ADDROFF", value, 0) --write value
gen_flash_wr(addr, data);
do {
rv = gen_rom_rd(addr);
// usbPoll(); //orignal kazzo needs this frequently to slurp up incoming data
} while (rv != gen_rom_rd(addr));
return;
}
#endif //SEGA_CONN

View File

@ -8,9 +8,13 @@
uint8_t sega_call( uint8_t opcode, uint8_t miscdata, uint16_t operand, uint8_t *rdata );
uint8_t sega_rd( uint16_t addr );
void sega_wr( uint16_t addr, uint8_t data );
uint16_t gen_rom_rd( uint16_t addr );
void gen_wr_lo( uint16_t addr, uint8_t data );
void gen_wr_hi( uint16_t addr, uint8_t data );
void gen_flash_wr( uint16_t addr, uint16_t data );
void gen_sst_flash_wr( uint16_t addr, uint16_t data );
uint8_t genesis_page_rd( uint8_t *data, uint16_t addrH, uint8_t first, uint8_t len );
uint8_t genesis_ram_page_rd( uint8_t *data, uint16_t addrH, uint8_t first, uint8_t len );
#endif

View File

@ -12,6 +12,10 @@ local function hex(data)
return string.format("%X", data)
end
-- file must already be open for writting in binary mode
local function file_wr_bin(file, data)
file:write(string.char( data ))
end
-- global variables so other modules can use them
@ -22,6 +26,7 @@ end
-- functions other modules are able to call
help.hex = hex
help.file_wr_bin = file_wr_bin
-- return the module's table
return help

View File

@ -8,6 +8,7 @@ local nes = require "scripts.app.nes"
local dump = require "scripts.app.dump"
local flash = require "scripts.app.flash"
local buffers = require "scripts.app.buffers"
local help = require "scripts.app.help"
-- file constants
local mapname = "MMC5"
@ -33,14 +34,14 @@ local function init_mapper( debug )
dict.nes("NES_CPU_WR", 0x5105, 0x44) --vertical mirroring
--PRG MODE
-- dict.nes("NES_CPU_WR", 0x5100, 0x00) --single 32KByte bank (couldn't get this to work..)
dict.nes("NES_CPU_WR", 0x5100, 0x03) --4x 8KB banks
-- dict.nes("NES_CPU_WR", 0x5100, 0x00) --PRGbanking mode0 single 32KByte bank (couldn't get this to work..)
dict.nes("NES_CPU_WR", 0x5100, 0x03) --PRGbanking mode3 4x 8KB banks
--CHR MODE
dict.nes("NES_CPU_WR", 0x5101, 0x00) --single 8KByte bank
--PRG-RAM bank
dict.nes("NES_CPU_WR", 0x5113, 0x00) --PRG-RAM bank @ $6000-7FFF (mode0)
dict.nes("NES_CPU_WR", 0x5113, 0x00) --PRG-RAM bank @ $6000-7FFF (regardless of PRG mode)
--PRG-ROM bank
-- dict.nes("NES_CPU_WR", 0x5117, 0x00) --PRG-ROM bank @ $8000-FFFF (mode0) bits 1&0 don't matter (CPU A14/13)
@ -129,8 +130,7 @@ local function dump_prgrom( file, rom_size_KB, debug )
read_count = read_count + 1
end
end
end
--dump the CHR ROM
local function dump_chrrom( file, rom_size_KB, debug )
@ -161,20 +161,131 @@ local function dump_wram( file, rom_size_KB, debug )
local KB_per_read = 8
local num_reads = rom_size_KB / KB_per_read
local read_count = 0
local addr_base = 0x60 -- $6000
--local addr_base = 0x60 -- $6000
local addr_base = 0x06 -- lower nibble for 4KB
--debugging reads
-- local rv = dict.nes("NES_CPU_RD", 0x600B)
-- print("600B:", help.hex(rv))
-- rv = dict.nes("NES_CPU_RD", 0x600C)
-- print("600C:", help.hex(rv))
-- rv = dict.nes("NES_CPU_RD", 0x600D)
-- print("600D:", help.hex(rv))
---[[
while ( read_count < num_reads ) do
--select the RAM bank with $5113 register
dict.nes("NES_CPU_WR", 0x5113, read_count) --PRG-RAM bank @ $6000-7FFF (regardless of PRG mode)
if debug then print( "dump WRAM part ", read_count, " of ", num_reads) end
dump.dumptofile( file, KB_per_read, addr_base, "NESCPU_PAGE", false )
--dump.dumptofile( file, KB_per_read, addr_base, "NESCPU_PAGE", false )
dump.dumptofile( file, KB_per_read, addr_base, "NESCPU_4KB_TOGGLE", false )
read_count = read_count + 1
end
--]]
--[[
--read 1 Byte at a time from the host side
local rv
local addr = 0x6000
while ( addr < 0x8000 ) do
rv = dict.nes("NES_CPU_RD", addr)
-- print(help.hex(addr), help.hex(rv))
-- file:write(string.char( rv ))
help.file_wr_bin(file, rv)
addr = addr+1
end
]]--
end
--write to the WRAM, assumes the WRAM was enabled/disabled as desired prior to calling
local function write_ram(file, ram_size_KB, debug)
-- init_mapper()
--test some bytes
--wr_prg_flash_byte(0x0000, 0xA5, true)
--wr_prg_flash_byte(0x0FFF, 0x5A, true)
print("\nProgramming PRG-RAM")
--initial testing of MMC3 with no specific MMC3 flash firmware functions 6min per 256KByte = 0.7KBps
local base_addr = 0x6000 --writes occur $6000-7FFF
local bank_size = 8*1024 --MMC5 8KByte per RAM bank
local buff_size = 1 --number of bytes to write at a time
local cur_bank = 0
local total_banks = ram_size_KB*1024/bank_size
local byte_num --byte number gets reset for each bank
local byte_str, data, readdata
local rv
local timout
while cur_bank < total_banks do
if (cur_bank %8 == 0) then
print("writting RAM bank: ", cur_bank, " of ", total_banks-1)
end
--write the current bank to the mapper register
--DATA writes written to $6000-7FFF
dict.nes("NES_CPU_WR", 0x5113, cur_bank) --PRG-RAM bank @ $6000-7FFF (regardless of PRG mode)
--program the entire bank's worth of data
---[[ This version of the code programs a single byte at a time but doesn't require
-- MMC3 specific functions in the firmware
--print("This is slow as molasses, but gets the job done")
byte_num = 0 --current byte within the bank
while byte_num < bank_size do
--read next byte from the file and convert to binary
byte_str = file:read(buff_size)
data = string.unpack("B", byte_str, 1)
--write the data
--SLOWEST OPTION: no firmware MMC3 specific functions 100% host flash algo:
--wr_prg_flash_byte(base_addr+byte_num, data, false) --0.7KBps
--need to quickly write the byte after unlocking the PRG-RAM
--before the 11.2usec timeout happens
rv = dict.nes("MMC5_PRG_RAM_WR", base_addr+byte_num, data) --3.8KBps (5.5x faster than above)
if (rv == data) then
--write succeeded
timeout = 0
else
print("PRG-RAM byte failed to write, retrying")
rv = dict.nes("MMC5_PRG_RAM_WR", base_addr+byte_num, data) --3.8KBps (5.5x faster than above)
if (rv ~= data) then
print("FAILED on RETRY...")
end
end
byte_num = byte_num + 1
end
--]]
--Have the device write a banks worth of data
--FAST! 13sec for 512KB = 39KBps
--flash.write_file( file, bank_size/1024, mapname, "PRGROM", false )
--flash.write_file( file, bank_size/1024, "NOVAR", "PRGRAM", false )
cur_bank = cur_bank + 1
end
print("Done Programming PRG-RAM")
end
--Cart should be in reset state upon calling this function
--this function processes all user requests for this specific board/mapper
@ -276,16 +387,31 @@ local function process(process_opts, console_opts)
--disable write protection, and enable WRAM
--for save data safety start by disabling WRAM writes
dict.nes("NES_CPU_WR", 0x5102, 0x02) --bits 1&0 must be '01' (ie 0x02) to allow writes to WRAM
dict.nes("NES_CPU_WR", 0x5103, 0x01) --bits 1&0 must be '10' (ie 0x01) to allow writes to WRAM
-- dict.nes("NES_CPU_WR", 0x5102, 0x02) --bits 1&0 must be '01' (ie 0x02) to allow writes to WRAM
-- dict.nes("NES_CPU_WR", 0x5103, 0x01) --bits 1&0 must be '10' (ie 0x01) to allow writes to WRAM
--test with 1 Byte
-- local addr = 0x600C
-- local rv = dict.nes("NES_CPU_RD", addr)
-- print(help.hex(addr), ":", help.hex(rv))
-- dict.nes("NES_CPU_WR", addr, 0xAA)
-- rv = dict.nes("NES_CPU_RD", addr)
-- print(help.hex(addr), ":", help.hex(rv))
-- rv = dict.nes("NES_CPU_RD", 0x600C)
-- print("600C:", help.hex(rv))
-- rv = dict.nes("NES_CPU_RD", 0x600D)
-- print("600D:", help.hex(rv))
file = assert(io.open(ramwritefile, "rb"))
flash.write_file( file, wram_size, "NOVAR", "PRGRAM", false )
write_ram(file, wram_size, true)
--flash.write_file( file, wram_size, "NOVAR", "PRGRAM", false )
--flash.write_file( file, wram_size, "MMC5", "PRGRAM", false )
--for save data safety disable WRAM writes
dict.nes("NES_CPU_WR", 0x5102, 0x01) --bits 1&0 must be '01' (ie 0x02) to allow writes to WRAM
dict.nes("NES_CPU_WR", 0x5103, 0x02) --bits 1&0 must be '10' (ie 0x01) to allow writes to WRAM
-- dict.nes("NES_CPU_WR", 0x5102, 0x01) --bits 1&0 must be '01' (ie 0x02) to allow writes to WRAM
-- dict.nes("NES_CPU_WR", 0x5103, 0x02) --bits 1&0 must be '10' (ie 0x01) to allow writes to WRAM
--close file
assert(file:close())

View File

@ -1,98 +1,17 @@
-- create the module's table
local genesis_v2 = {}
local genesis_v2= {}
-- import required modules
local dict = require "scripts.app.dict"
local dump = require "scripts.app.dump"
local flash = require "scripts.app.flash"
local help = require "scripts.app.help"
-- file constants
-- local functions
-- Desc: attempt to read flash rom ID
-- Pre: snes_init() been called to setup i/o
-- Post:Address left on bus memories disabled
-- Rtn: true if proper flash ID found
local function rom_manf_id( debug )
local rv
--enter software mode A11 is highest address bit that needs to be valid
--datasheet not exactly explicit, A11 might not need to be valid
--part has A-1 (negative 1) since it's in byte mode, meaning the part's A11 is actually A12
--exit software mode/reset chip incase locked up
dict.sega("SET_ADDR", 0x0555)
dict.sega("SEGA_WR", 0x00AA)
dict.bootload("SET_PTR_HI", 0x4800)
dict.bootload("SET_PTR_LO", 0x0000)
rv = dict.bootload("RD_PTR_OFFSET", 0x0001) --read upper half word of register
print("PORT A hi:", string.format("%X", rv))
rv = dict.bootload("RD_PTR_OFFSET", 0x0000)
print("PORT A lo:", string.format("%X", rv))
rv = dict.bootload("RD_PTR_OFFSET", 0x0401) --read upper half word of register
print("PORT B hi:", string.format("%X", rv))
rv = dict.bootload("RD_PTR_OFFSET", 0x0400)
print("PORT B lo:", string.format("%X", rv))
rv = dict.bootload("RD_PTR_OFFSET", 0x0414) --ODR PORTB
print("PORT B ODR:", string.format("%X", rv))
rv = dict.bootload("RD_PTR_OFFSET", 0x0014) --ODR PORTA
print("PORT A ODR:", string.format("%X", rv))
rv = dict.bootload("RD_PTR_OFFSET", 0x0410)
print("PORT B IDR:", string.format("%X", rv))
rv = dict.bootload("RD_PTR_OFFSET", 0x0010)
print("PORT A IDR:", string.format("%X", rv))
dict.sega("SET_ADDR", 0x02AA)
dict.sega("SEGA_WR", 0x0055)
dict.sega("SET_ADDR", 0x0555)
dict.sega("SEGA_WR", 0x0090)
-- --WR $AAA:AA $555:55 $AAA:AA
-- dict.sega("SNES_SET_BANK", 0x00)
--
-- dict.sega("SNES_ROM_WR", 0x8AAA, 0xAA)
-- dict.sega("SNES_ROM_WR", 0x8555, 0x55)
-- dict.sega("SNES_ROM_WR", 0x8AAA, 0x90)
--read manf ID
local manf_id = dict.sega("SEGA_RD", 0x0000) --0x01 Cypress Manf ID
-- 0xBF SST Manf ID
if debug then print("attempted read SNES ROM manf ID:", string.format("%X", manf_id)) end
--read prod ID
local prod_id = dict.sega("SEGA_RD", 0x0001) --0x7E Prod ID S29GL
--SST x16 0x235D or 0x235C product ID
if debug then print("attempted read SNES ROM prod ID:", string.format("%X", prod_id)) end
-- local density_id = dict.sega("SEGA_RD", 0x801C) --density 0x10=8MB 0x1A=4MB
-- if debug then print("attempted read SNES density ID: ", string.format("%X", density_id)) end
--
-- local boot_sect = dict.sega("SEGA_RD", 0x801E) --boot sector 0x00=top 0x01=bottom
-- if debug then print("attempted read SNES boot sect ID:", string.format("%X", boot_sect)) end
--
-- --exit software
-- dict.sega("SNES_ROM_WR", 0x8000, 0xF0)
--
-- --return true if detected flash chip
-- if (manf_id == 0x01 and prod_id == 0x49) then
-- print("2MB flash detected")
-- return true
-- elseif (manf_id == 0x01 and prod_id == 0x7E) then
-- print("4-8MB flash detected")
-- return true
-- else
-- return false
-- end
end
local function unsupported(operation)
print("\nUNSUPPORTED OPERATION: \"" .. operation .. "\" not implemented yet for Sega Genesis.\n")
end
@ -137,7 +56,7 @@ local function dump_rom( file, rom_size_KB, debug )
end
-- Select desired bank.
dict.sega("SET_BANK", read_count)
dict.sega("GEN_SET_BANK", read_count)
dump.dumptofile(file, KB_per_bank/2, addr_base, "GENESIS_ROM_PAGE0", debug)
dump.dumptofile(file, KB_per_bank/2, addr_base, "GENESIS_ROM_PAGE1", debug)
@ -239,7 +158,7 @@ end
-- Reads and parses internal ROM header from first page of data.
local function read_header()
dict.sega("SET_BANK", 0)
dict.sega("GEN_SET_BANK", 0)
local page0_data = ""
dump.dumptocallback(
@ -255,49 +174,486 @@ end
-- Test that cartridge is readable by looking for valid entries in internal header.
local function test(genesis_header)
local valid = false
---[[
--test some functions
--read "SEGA" from the in rom header
dict.sega("GEN_SET_BANK", 0)
local temp
temp = dict.sega("GEN_ROM_RD", (0x0100>>1))
print(help.hex(temp)) --"SE"
print(string.char(temp>>8)) --"S"
print(string.char(temp&0x00FF)) --"E"
temp = dict.sega("GEN_ROM_RD", (0x0102>>1))
print(help.hex(temp)) --"GA"
print(string.char(temp>>8)) --"G"
print(string.char(temp&0x00FF)) --"A"
--flash manf ID
print("flash write")
dict.sega("GEN_SET_BANK", 0)
dict.sega("GEN_SET_ADDR", 0x5555)
dict.sega("GEN_FLASH_WR_ADDROFF", 0x00AA, 0)
dict.sega("GEN_SET_ADDR", 0x2AAA)
dict.sega("GEN_FLASH_WR_ADDROFF", 0x0055, 0)
dict.sega("GEN_SET_ADDR", 0x5555)
dict.sega("GEN_FLASH_WR_ADDROFF", 0x0090, 0)
temp = dict.sega("GEN_ROM_RD", (0x0000>>1))
print(help.hex(temp)) --"SE"
temp = dict.sega("GEN_ROM_RD", (0x0002>>1))
print(help.hex(temp)) --"SE"
print("HI write")
dict.sega("GEN_WR_HI", 0x5555, 0xAA) --A16-1
dict.sega("GEN_WR_HI", 0x2AAA, 0x55) --A16-1
dict.sega("GEN_WR_HI", 0x5555, 0x90) --A16-1
temp = dict.sega("GEN_ROM_RD", (0x0000>>1))
print(help.hex(temp)) --"SE"
temp = dict.sega("GEN_ROM_RD", (0x0002>>1))
print(help.hex(temp)) --"SE"
--exit software mode
print("exit software mode")
dict.sega("GEN_FLASH_WR_ADDROFF", 0x00F0, 0)
temp = dict.sega("GEN_ROM_RD", (0x0000>>1))
print(help.hex(temp)) --"SE"
--write a byte
--[[
print("write a byte $0000, AAAA")
dict.sega("GEN_SET_BANK", 0)
dict.sega("GEN_SET_ADDR", 0x5555)
dict.sega("GEN_FLASH_WR_ADDROFF", 0x00AA, 0)
dict.sega("GEN_SET_ADDR", 0x2AAA)
dict.sega("GEN_FLASH_WR_ADDROFF", 0x0055, 0)
dict.sega("GEN_SET_ADDR", 0x5555)
dict.sega("GEN_FLASH_WR_ADDROFF", 0x00A0, 0) --write byte command
dict.sega("GEN_SET_ADDR", 0x0000)
dict.sega("GEN_FLASH_WR_ADDROFF", 0xAAAA, 0) --write data
temp = dict.sega("GEN_ROM_RD", (0x0000>>1))
local nak = 1
while (temp ~= dict.sega("GEN_ROM_RD", (0x0000>>1))) do
temp = dict.sega("GEN_ROM_RD", (0x0000>>1))
print(help.hex(temp)) --"SE"
nak = nak + 1
end
temp = dict.sega("GEN_ROM_RD", (0x0000>>1))
print("FINAL DATA", help.hex(temp)) --"SE"
local addr = 0x0001
local data = 0x5555
print("write a byte", addr, data )
dict.sega("GEN_SET_BANK", 0)
dict.sega("GEN_SET_ADDR", 0x5555)
dict.sega("GEN_FLASH_WR_ADDROFF", 0x00AA, 0)
dict.sega("GEN_SET_ADDR", 0x2AAA)
dict.sega("GEN_FLASH_WR_ADDROFF", 0x0055, 0)
dict.sega("GEN_SET_ADDR", 0x5555)
dict.sega("GEN_FLASH_WR_ADDROFF", 0x00A0, 0) --write byte command
dict.sega("GEN_SET_ADDR", addr)
dict.sega("GEN_FLASH_WR_ADDROFF", data, 0) --write data
temp = dict.sega("GEN_ROM_RD", (addr))
local nak = 1
while (temp ~= dict.sega("GEN_ROM_RD", (addr))) do
temp = dict.sega("GEN_ROM_RD", (addr))
print(help.hex(temp)) --"SE"
nak = nak + 1
end
temp = dict.sega("GEN_ROM_RD", (addr))
print("FINAL DATA", help.hex(temp)) --"SE"
--]]
--[[
--read ram from wayne gretzky
dict.sega("GEN_SET_BANK", 0x20>>1)
temp = dict.sega("GEN_ROM_RD", (0x0000>>1))
print(help.hex(temp)) --"SE"
--print(string.char(temp>>8)) --"S"
print(string.char(temp&0x00FF)) --"E"
--temp = dict.sega("GEN_ROM_RD", (0x0002>>1))
--print(help.hex(temp)) --"GA"
----print(string.char(temp>>8)) --"G"
--print(string.char(temp&0x00FF)) --"A"
--dict.sega("GEN_SET_ADDR", 0x0000) --A16-1
dict.sega("GEN_WR_LO", 0x0000, 0xAA) --A16-1
temp = dict.sega("GEN_ROM_RD", (0x0000>>1))
print(help.hex(temp)) --"SE"
print(string.char(temp&0x00FF)) --"E"
--]]
--local valid = false
local valid = true --force good
-- Trailing spaces are required! Field length is 16 characters.
if genesis_header["console_name"] == "SEGA GENESIS " then valid = true end
if genesis_header["console_name"] == "SEGA MEGA DRIVE " then valid = true end
return valid
end
--dump the SEGA battery RAM starting at the provided bank
local function dump_ram( file, start_bank, ram_size_KB, debug )
local KB_per_bank = 64 --128KByte addressable per bank, but only use lower byte of each 16bit word
local addr_base = 0x00 --A15-8 address of ram start
-- --determine max ram per bank and base address
-- if (mapping == lorom_name) then
-- KB_per_bank = 32 -- LOROM has 32KB per bank
-- addr_base = 0x00 -- $0000 LOROM RAM start address
-- elseif (mapping == hirom_name) then
-- KB_per_bank = 8 -- HIROM has 8KB per bank
-- addr_base = 0x60 -- $6000 HIROM RAM start address
-- else
-- print("ERROR! mapping:", mapping, "not supported by dump_ram")
-- end
--
local num_banks =1-- = ram_size_KB / KB_per_bank
--
-- --determine how much ram to read per bank
-- if ram_size_KB == nil then ram_size_KB = 0 end
-- if (ram_size_KB < KB_per_bank) then
-- num_banks = 1
-- KB_per_bank = ram_size_KB
-- else
-- num_banks = ram_size_KB / KB_per_bank
-- end
--
local read_count = 0
while ( read_count < num_banks ) do
if debug then print( "dump RAM part ", read_count, " of ", num_banks) end
--select desired bank
--A17-23
dict.sega("GEN_SET_BANK", start_bank+read_count)
-- if (mapping == lorom_name) then --LOROM sram is inside /ROMSEL space
-- dump.dumptofile( file, KB_per_bank, addr_base, "SNESROM_PAGE", false )
-- else -- HIROM is outside of /ROMSEL space
-- dump.dumptofile( file, KB_per_bank, addr_base, "SNESSYS_PAGE", false )
-- end
--
--currently don't have means of dumping RAM with A16 high
--dump.dumptofile(file, KB_per_bank/2, addr_base, "GENESIS_RAM_PAGE", debug) --A16 low
dump.dumptofile(file, 8, addr_base, "GENESIS_RAM_PAGE", debug) --A16 low
-- dump.dumptofile(file, KB_per_bank/2, addr_base, "GENESIS_ROM_PAGE1", debug) --A16 high
read_count = read_count + 1
end
end
--write to the WRAM, assumes the WRAM was enabled/disabled as desired prior to calling
local function write_ram(file, ram_size_KB, debug)
-- init_mapper()
--test some bytes
--wr_prg_flash_byte(0x0000, 0xA5, true)
--wr_prg_flash_byte(0x0FFF, 0x5A, true)
print("\nProgramming battery SRAM")
--initial testing of MMC3 with no specific MMC3 flash firmware functions 6min per 256KByte = 0.7KBps
local base_addr = 0x0000 --writes occur $6000-7FFF
local bank_size = 8*1024 --8KByte RAM chip
local buff_size = 1 --number of bytes to write at a time
local cur_bank = 0
-- local total_banks = ram_size_KB*1024/bank_size
local byte_num --byte number gets reset for each bank
local byte_str, data, readdata
local rv
local timout
--while cur_bank < total_banks do
-- if (cur_bank %8 == 0) then
-- print("writting RAM bank: ", cur_bank, " of ", total_banks-1)
-- end
--write the current bank to the mapper register
--DATA writes written to $6000-7FFF
-- dict.nes("NES_CPU_WR", 0x5113, cur_bank) --PRG-RAM bank @ $6000-7FFF (regardless of PRG mode)
dict.sega("GEN_SET_BANK", (0x20>>1))
--program the entire bank's worth of data
---[[ This version of the code programs a single byte at a time but doesn't require
-- MMC3 specific functions in the firmware
--print("This is slow as molasses, but gets the job done")
byte_num = 0 --current byte within the bank
while byte_num < bank_size do
--read next byte from the file and convert to binary
byte_str = file:read(buff_size)
data = string.unpack("B", byte_str, 1)
--write the data
--SLOWEST OPTION: no firmware MMC3 specific functions 100% host flash algo:
--wr_prg_flash_byte(base_addr+byte_num, data, false) --0.7KBps
--need to quickly write the byte after unlocking the PRG-RAM
--before the 11.2usec timeout happens
rv = dict.sega("GEN_WR_LO", base_addr+byte_num, data)
--if (rv == data) then
-- --write succeeded
-- timeout = 0
--else
-- print("PRG-RAM byte failed to write, retrying")
-- rv = dict.nes("MMC5_PRG_RAM_WR", base_addr+byte_num, data) --3.8KBps (5.5x faster than above)
-- if (rv ~= data) then
-- print("FAILED on RETRY...")
-- end
--end
byte_num = byte_num + 1
end
--]]
--Have the device write a banks worth of data
--FAST! 13sec for 512KB = 39KBps
--flash.write_file( file, bank_size/1024, mapname, "PRGROM", false )
--flash.write_file( file, bank_size/1024, "NOVAR", "PRGRAM", false )
-- cur_bank = cur_bank + 1
-- end
print("Done Programming SAVE RAM")
end
--write a single byte to SNES ROM flash
--writes to currently selected bank address
local function wr_flash_byte(addr, value, debug)
if (addr < 0x0000 or addr > 0xFFFF) then
print("\n ERROR! flash write to SEGA GENESIS", string.format("$%X", addr), "must be $0000-FFFF \n\n")
return
end
--send unlock command and write byte
--dict.snes("SNES_ROM_WR", 0x8AAA, 0xAA)
--dict.snes("SNES_ROM_WR", 0x8555, 0x55)
--dict.snes("SNES_ROM_WR", 0x8AAA, 0xA0)
--dict.snes("SNES_ROM_WR", addr, value)
if debug then print("write a byte", help.hex(addr), help.hex(value) ) end
--dict.sega("GEN_SET_BANK", 0)
dict.sega("GEN_SET_ADDR", 0x5555)
dict.sega("GEN_FLASH_WR_ADDROFF", 0x00AA, 0)
dict.sega("GEN_SET_ADDR", 0x2AAA)
dict.sega("GEN_FLASH_WR_ADDROFF", 0x0055, 0)
dict.sega("GEN_SET_ADDR", 0x5555)
dict.sega("GEN_FLASH_WR_ADDROFF", 0x00A0, 0) --write byte command
dict.sega("GEN_SET_ADDR", addr)
dict.sega("GEN_FLASH_WR_ADDROFF", value, 0) --write value
-- temp = dict.sega("GEN_ROM_RD", (addr))
-- local nak = 1
-- while (temp ~= dict.sega("GEN_ROM_RD", (addr))) do
-- temp = dict.sega("GEN_ROM_RD", (addr))
-- print(help.hex(temp)) --"SE"
-- nak = nak + 1
-- end
-- temp = dict.sega("GEN_ROM_RD", (addr))
-- print("FINAL DATA", help.hex(temp)) --"SE"
local rv = dict.sega("GEN_ROM_RD", (addr))
local i = 0
while ( rv ~= value ) do
rv = dict.sega("GEN_ROM_RD", (addr))
--if debug then print("post write read:", help.hex(rv)) end
i = i + 1
if i > 20 then
print("failed write, tried:", string.format("%X",value), "read back value:", string.format("%X",rv))
return
end
end
if debug then print(i, "naks, done writing byte.") end
if debug then print("written value:", string.format("%X",value), "verified value:", string.format("%X",rv)) end
--TODO handle timeout for problems
--TODO return pass/fail/info
end
local function flash_rom(file, rom_size_KB, debug)
print("\nProgramming ROM flash")
--test some bytes
-- dict.sega("GEN_SET_BANK", 0x00) wr_flash_byte(0x0000, 0xAAAA, true) wr_flash_byte(0x0001, 0x5555, true)
-- dict.sega("GEN_SET_BANK", 0x00) wr_flash_byte(0x0002, 0x0000, true) wr_flash_byte(0x0003, 0xC3C3, true)
-- dict.sega("GEN_SET_BANK", 0x00) wr_flash_byte(0x0004, 0xDEAD, true) wr_flash_byte(0x0005, 0xBEEF, true)
-- dict.sega("GEN_SET_BANK", 0x00) wr_flash_byte(0x0006, 0x3333, true) wr_flash_byte(0x0007, 0xCCCC, true)
-- --last of 512KB
-- if true then return end
--most of this is overkill for NROM, but it's how we want to handle things for bigger mappers
local base_addr = 0x0000
local bank_size = 2*64*1024 --2Bytes per address, 64K addresses
local buff_size = 1 --number of bytes to read from file at a time
local cur_bank = 0
-- if (mapping==lorom_name) then
-- base_addr = 0x8000 --writes occur $8000-FFFF
-- bank_size = 32*1024 --SNES LOROM 32KB per ROM bank
-- elseif (mapping==hirom_name) then
-- base_addr = 0x0000 --writes occur $0000-FFFF
-- bank_size = 64*1024 --SNES HIROM 64KB per ROM bank
-- else
-- print("ERROR!! mapping:", mapping, "not supported")
-- end
local total_banks = rom_size_KB*1024/bank_size
local byte_num --byte number gets reset for each bank
local byte_str, data, readdata
while cur_bank < total_banks do
if (cur_bank %4 == 0) then
print("writting ROM bank: ", cur_bank, " of ", total_banks-1)
end
--select the current bank
if (cur_bank <= 0x7F) then
--dict.sega("GEN_SET_BANK", (cur_bank>>1)) --genesis bank is off by 1 due to lack of A0
dict.sega("GEN_SET_BANK", (cur_bank)) --Don't think that's acutally true this bank is true INLretro bank
else
print("\n\nERROR!!!! SEGA bank cannot exceed 0x7F, it was:", string.format("0x%X",cur_bank))
return
end
--program the entire bank's worth of data
---[[ This version of the code programs a single byte at a time but doesn't require
-- board specific functions in the firmware
print("This is slow as molasses, but gets the job done")
--SET ADDR so FLASH_WR_ADDROFF works
dict.sega("GEN_SET_ADDR", 0xFFFF)
byte_num = 0 --current byte within the bank
while byte_num < bank_size do
--read next byte from the file and convert to binary
byte_str = file:read(buff_size) --high byte
data = string.unpack("B", byte_str, 1)
--print(help.hex(data))
data = data<<8
--print(help.hex(data))
byte_str = file:read(buff_size) --low byte
data = data + string.unpack("B", byte_str, 1)
--print(help.hex(data))
--write the data
--SLOWEST OPTION: no firmware specific functions 100% host flash algo:
--wr_flash_byte(((base_addr+byte_num)>>1), data, false) --0.7KBps
--EASIEST FIRMWARE SPEEDUP: 5x faster, create firmware write byte function:
dict.sega("GEN_SST_FLASH_WR_ADDROFF", data, 1)
--if (verify) then
-- readdata = dict.nes("NES_CPU_RD", base_addr+byte_num)
-- if readdata ~= data then
-- print("ERROR flashing byte number", byte_num, " in bank",cur_bank, " to flash ", data, readdata)
-- end
--end
byte_num = byte_num + 2 --2 Bytes per write
end
--]]
--Have the device write a banks worth of data
-- if (mapping == lorom_name) then
-- flash.write_file( file, bank_size/1024, "LOROM_3VOLT", "SNESROM", false )
-- else
-- flash.write_file( file, bank_size/1024, "HIROM_3VOLT", "SNESROM", false )
-- end
--flash.write_file( file, bank_size/1024, "HIROM_3VOLT", "GENESISROM", false )
--TODO define different flash part types
--flash.write_file( file, bank_size/1024, 0, "GENESISROM", false )
cur_bank = cur_bank + 1
end
print("Done Programming ROM flash")
end
--Cart should be in reset state upon calling this function
--this function processes all user requests for this specific board/mapper
local function process(process_opts, console_opts)
local file
-- Use specified ram size if provided, otherwise autodetect.
local ram_size = console_opts["wram_size_kb"]
local ramdumpfile = process_opts["dumpram_filename"]
--local flashfile = process_opts["flash_filename"]
local flashfile = process_opts["flash_filename"]
local verifyfile = process_opts["verify_filename"]
local rom_size = console_opts["rom_size_kbyte"]
-- Initialize device i/o for SEGA
dict.io("IO_RESET")
dict.io("SEGA_INIT")
-- local genesis_header = read_header()
local genesis_header = read_header()
if process_opts["test"] then
-- If garbage data is in the header, it's a waste of time trying to proceed doing anything else.
-- local valid_header = test(genesis_header)
-- if valid_header ~= true then print("Unreadable cartridge - exiting! (Try cleaning cartridge connector?)") end
-- assert(valid_header)
-- print_header(genesis_header)
print("geny flash cart test")
dict.sega("SET_BANK", 0)
print(dict.sega("SEGA_RD", 0x0120))
print(dict.sega("SEGA_RD", 0x0122))
print(dict.sega("SEGA_RD", 0x0124))
print(dict.sega("SEGA_RD", 0x0090)) --read "SONIC" from 0x0120 >> 1
print(dict.sega("SEGA_RD", 0x0091))
print(dict.sega("SEGA_RD", 0x0092))
--dict.sega("SET_ADDR", 0)
rom_manf_id(true)
local valid_header = test(genesis_header)
if valid_header ~= true then print("Unreadable cartridge - exiting! (Try cleaning cartridge connector?)") end
assert(valid_header)
print_header(genesis_header)
end
-- TODO: dump the ram to file
if dumpram then
unsupported("dumpram")
if process_opts["dumpram"] then
--unsupported("dumpram")
print("dumping save RAM")
file = assert(io.open(ramdumpfile, "wb"))
--dump cart into file
local rambank = (0x20>>1) --A17-23 wayne gretsky RAM starts at bank $20>>1
dump_ram(file, rambank, ram_size, true)
--may disable SRAM by placing /RESET low
--close file
assert(file:close())
print("DONE Dumping SAVE RAM")
end
-- Dump the cart to dumpfile.
@ -328,19 +684,70 @@ local function process(process_opts, console_opts)
end
end
-- TODO: erase the cart
if process_opts["erase"] then
unsupported("erase")
-- unsupported("erase")
--erase the cart
print("erasing SST flash cart")
dict.sega("GEN_SET_BANK", 0)
dict.sega("GEN_SET_ADDR", 0x5555)
dict.sega("GEN_FLASH_WR_ADDROFF", 0x00AA, 0)
dict.sega("GEN_SET_ADDR", 0x2AAA)
dict.sega("GEN_FLASH_WR_ADDROFF", 0x0055, 0)
dict.sega("GEN_SET_ADDR", 0x5555)
dict.sega("GEN_FLASH_WR_ADDROFF", 0x0080, 0) --ERASE
dict.sega("GEN_SET_ADDR", 0x5555)
dict.sega("GEN_FLASH_WR_ADDROFF", 0x00AA, 0) --ERASE
dict.sega("GEN_SET_ADDR", 0x2AAA)
dict.sega("GEN_FLASH_WR_ADDROFF", 0x0055, 0) --ERASE
dict.sega("GEN_SET_ADDR", 0x5555)
dict.sega("GEN_FLASH_WR_ADDROFF", 0x0010, 0) --ERASE
temp = dict.sega("GEN_ROM_RD", (0))
local nak = 1
while (temp ~= dict.sega("GEN_ROM_RD", (0))) do
temp = dict.sega("GEN_ROM_RD", (0))
--print(help.hex(temp)) --"SE"
nak = nak + 1
end
temp = dict.sega("GEN_ROM_RD", (0))
print("DONE ERASING, FINAL DATA", help.hex(temp)) --"SE"
end
-- TODO: write to wram on the cart
if writeram then
unsupported("writeram")
--if writeram then
if process_opts["writeram"] then
--unsupported("writeram")
print("\nWritting to WRAM...")
file = assert(io.open(process_opts["writeram_filename"], "rb"))
--write_ram(file, ram_size_KB, debug)
write_ram(file, ram_size, true)
assert(file:close())
print("DONE Writting WRAM")
end
-- TODO: program flashfile to the cart
if process_opts["program"] then
unsupported("program")
--unsupported("program")
--open file
file = assert(io.open(flashfile, "rb"))
--determine if auto-doubling, deinterleaving, etc,
--needs done to make board compatible with rom
--flash cart
flash_rom(file, rom_size, true)
--close file
assert(file:close())
end
-- TODO: verify flashfile is on the cart

View File

@ -105,6 +105,7 @@
#define PRGRAM 0x12
#define SNESROM 0x13
#define SNESRAM 0x14
#define GENESISROM 0x15
//Read specific sections of memory map
// 4KB/1KB naming designates the granularity of the starting address
@ -130,6 +131,7 @@
#define NESPPU_1KB_TOGGLE 0x31 //similar to PPU page read but /RD signal toggles with each read
#define NESCPU_4KB_TOGGLE 0x32 //similar to CPU page read but M2 toggles with each read
#define GENESIS_RAM_PAGE 0x33 //bank address A17-23 must have been latched already
//operand LSB
//SST 39SF0x0 manf/prod IDs

View File

@ -80,6 +80,7 @@
//being used to write to 3v tssop flash
#define MMC3S_PRG_FLASH_WR 0x26 //TODO set return lengths for all these functions
//=============================================================================================
// OPCODES WITH OPERAND AND RETURN VALUE plus SUCCESS/ERROR_CODE
//=============================================================================================
@ -110,4 +111,7 @@
#define GET_BANK_TABLE 0x86 //RL=4 16bit value so 2 bytes need returned
#define GET_NUM_PRG_BANKS 0x87 //RL=3
#define MMC5_PRG_RAM_WR 0x88 //RL=3 Enable writting to PRG-RAM and then write a single byte
//after written read back for verification as a timeout would cause fail
#endif

View File

@ -17,12 +17,23 @@
//=============================================================================================
//TODO THESE ARE JUST PLACE HOLDERS...
#define SEGA_RD 0 //RL=3 return error code, data len = 1, 1 byte of data
#define SEGA_WR 1
//oper=A1-15 update firmware address variable for FLASH_WR_ADDROFF use on subsequent calls
#define GEN_SET_ADDR 0
//oper=A1-A16 C_CE & C_OE go low (update firmware address var ie GEN_SET_ADDR)
#define GEN_ROM_RD 1 //RL=4 return error code, data len = 1, 2 byte of data (16bit word)
// GENESIS ADDR A17-23 along with #LO_MEM & #TIME
// TODO separate #LO_MEM & #TIME, they're currently fixed high
#define SET_BANK 2
#define GEN_SET_BANK 2
//miscdata=D0-7, oper=A1-A16 C_CE & C_OE go low, #LDSW goes low (update firmware address var ie GEN_SET_ADDR)
#define GEN_WR_LO 3
//miscdata=D8-15, oper=A1-A16 C_CE & C_OE go low, #UDSW goes low (update firmware address var ie GEN_SET_ADDR)
#define GEN_WR_HI 4
//oper=D0-D15, miscdata=addroffset C_CE & C_OE go low, #UDSW goes low (update firmware address var ie GEN_SET_ADDR)
#define GEN_FLASH_WR_ADDROFF 5
#define GEN_SST_FLASH_WR_ADDROFF 6
#endif