Initial commit
This commit is contained in:
BIN
Binary file not shown.
@@ -0,0 +1,48 @@
|
||||
REM NOTE: xmplay pins its OWN SDCC version here, independent of the rest of
|
||||
REM ft812sdk (which stays on 4.0.0 for ABI reasons - see project memory on
|
||||
REM the earlier shared-lib ABI mismatch incident). 4.6.0 is needed here
|
||||
REM specifically for --sdcccall 1, required to link demyanenko-d/
|
||||
REM VGMPLAY.WMF's wc_api library (vgm_wc_api.lib) - our own hand-rolled
|
||||
REM PRSRW+PRIAT implementations corrupted esp32 file loading in three
|
||||
REM different shapes and were abandoned in favor of their tested code.
|
||||
set SDCC=E:\SDCC\4.6.0
|
||||
set path=%SDCC%\bin;E:\zx-evo-master\pentevo\tools\hex2bin;%path%
|
||||
|
||||
if not exist obj md obj
|
||||
del /q /s obj >nul
|
||||
|
||||
sdasz80 -o obj/crt0.rel src/crt0.s
|
||||
if errorlevel 1 pause & exit
|
||||
|
||||
sdcc -Isrc -I../lib/sdk -I../../../esp32/src/main -mz80 --sdcccall 1 --std-sdcc11 --opt-code-speed --no-std-crt0 obj/crt0.rel --code-loc 0x8003 --data-loc 0xA800 src/main.c vgm_wc_api.lib -o obj/out.hex
|
||||
if errorlevel 1 pause & exit
|
||||
if exist obj/out.hex hex2bin obj/out.hex >nul
|
||||
|
||||
for %%i in (obj/out.bin) do set sz=%%~zi
|
||||
set /a sz=(%sz% - 1) / 512 + 1
|
||||
|
||||
REM A WC plugin page is exactly 16KB = 32 512-byte blocks (WALK in WCVW.ASM
|
||||
REM loads N_BLK0 blocks straight off disk into the #C000-#FFFF window as
|
||||
REM one contiguous chunk - anything past 32 blocks overflows that window).
|
||||
REM This is what broke ftview's [PLUGINS] autoload (33 blocks needed, only
|
||||
REM 32 available) - fixed there by moving --data-loc from 0xAE00 down to
|
||||
REM 0xA800, applied here too for consistency and headroom as xmplay grows.
|
||||
if %sz% GTR 32 (
|
||||
echo ERROR: build needs %sz% x 512-byte blocks, but a single WC plugin page holds only 32 - shrink the code or lower --data-loc's headroom above it.
|
||||
pause
|
||||
exit
|
||||
)
|
||||
|
||||
REM Pad obj/out.bin up to a whole number of 512-byte blocks (sz*512 bytes).
|
||||
REM hex2bin only emits the bytes actually present in the hex file, which
|
||||
REM generally is NOT block-aligned, while N_BLK0 above always rounds up -
|
||||
REM technically short of what the header promises, though not the cause
|
||||
REM of the overflow bug above.
|
||||
set /a padded=%sz% * 512
|
||||
powershell -NoProfile -Command "$fs=[System.IO.File]::Open('obj\out.bin',[System.IO.FileMode]::Open,[System.IO.FileAccess]::Write); $fs.SetLength(%padded%); $fs.Close()"
|
||||
|
||||
sdcc -DN_BLK0=%sz% -Isrc -I../lib/sdk --no-std-crt0 -mz80 --std-sdcc11 --opt-code-speed src/wc_h.c -o obj/hdr.hex
|
||||
if errorlevel 1 pause & exit
|
||||
if exist obj/hdr.hex hex2bin obj/hdr.hex >nul
|
||||
|
||||
copy /b obj\hdr.bin + obj\out.bin xmplay.wmf >nul
|
||||
@@ -0,0 +1,21 @@
|
||||
XL4
|
||||
H C areas 2 global symbols
|
||||
M crt0
|
||||
S _main Ref00000000
|
||||
S .__.ABS. Def00000000
|
||||
A _CODE size 0 flags 0 addr 0
|
||||
A _HEADER size 0 flags 8 addr 0
|
||||
A _HEADER0 size 3 flags 8 addr 8000
|
||||
A _HOME size 0 flags 0 addr 0
|
||||
A _INITIALIZER size 0 flags 0 addr 0
|
||||
A _GSINIT size 0 flags 0 addr 0
|
||||
A _GSFINAL size 0 flags 0 addr 0
|
||||
A _DATA size 0 flags 0 addr 0
|
||||
A _INITIALIZED size 0 flags 0 addr 0
|
||||
A _BSEG size 0 flags 0 addr 0
|
||||
A _BSS size 0 flags 0 addr 0
|
||||
A _HEAP size 0 flags 0 addr 0
|
||||
T 00 80 00 00
|
||||
R 00 00 02 00
|
||||
T 00 80 00 00 C3 00 00
|
||||
R 00 00 02 00 02 05 00 00
|
||||
+547
@@ -0,0 +1,547 @@
|
||||
;--------------------------------------------------------
|
||||
; File Created by SDCC : free open source ISO C Compiler
|
||||
; Version 4.6.0 #16555 (MINGW64)
|
||||
;--------------------------------------------------------
|
||||
.module wc_h
|
||||
|
||||
.optsdcc -mz80 sdcccall(1)
|
||||
;--------------------------------------------------------
|
||||
; Public variables in this module
|
||||
;--------------------------------------------------------
|
||||
;--------------------------------------------------------
|
||||
; special function registers
|
||||
;--------------------------------------------------------
|
||||
;--------------------------------------------------------
|
||||
; ram data
|
||||
;--------------------------------------------------------
|
||||
.area _DATA
|
||||
;--------------------------------------------------------
|
||||
; ram data
|
||||
;--------------------------------------------------------
|
||||
.area _INITIALIZED
|
||||
;--------------------------------------------------------
|
||||
; absolute ram data
|
||||
;--------------------------------------------------------
|
||||
.area _DABS (ABS)
|
||||
.area _DABS (ABS)
|
||||
;--------------------------------------------------------
|
||||
; global & static initialisations
|
||||
;--------------------------------------------------------
|
||||
.area _HOME
|
||||
.area _GSINIT
|
||||
.area _GSFINAL
|
||||
.area _GSINIT
|
||||
;--------------------------------------------------------
|
||||
; Home
|
||||
;--------------------------------------------------------
|
||||
.area _HOME
|
||||
.area _HOME
|
||||
;--------------------------------------------------------
|
||||
; code
|
||||
;--------------------------------------------------------
|
||||
.area _CODE
|
||||
.area _CODE
|
||||
_hdr:
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db #0x57 ; 87 'W'
|
||||
.db #0x69 ; 105 'i'
|
||||
.db #0x6c ; 108 'l'
|
||||
.db #0x64 ; 100 'd'
|
||||
.db #0x43 ; 67 'C'
|
||||
.db #0x6f ; 111 'o'
|
||||
.db #0x6d ; 109 'm'
|
||||
.db #0x6d ; 109 'm'
|
||||
.db #0x61 ; 97 'a'
|
||||
.db #0x6e ; 110 'n'
|
||||
.db #0x64 ; 100 'd'
|
||||
.db #0x65 ; 101 'e'
|
||||
.db #0x72 ; 114 'r'
|
||||
.db #0x4d ; 77 'M'
|
||||
.db #0x44 ; 68 'D'
|
||||
.db #0x4c ; 76 'L'
|
||||
.db #0x07 ; 7
|
||||
.db 0x00
|
||||
.db #0x01 ; 1
|
||||
.db #0x00 ; 0
|
||||
.db #0x00 ; 0
|
||||
.db #0x1d ; 29
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db #0x58 ; 88 'X'
|
||||
.db #0x4d ; 77 'M'
|
||||
.db #0x20 ; 32
|
||||
.db #0x58 ; 88 'X'
|
||||
.db #0x4d ; 77 'M'
|
||||
.db #0x5a ; 90 'Z'
|
||||
.db #0x53 ; 83 'S'
|
||||
.db #0x33 ; 51 '3'
|
||||
.db #0x4d ; 77 'M'
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.byte #0xff, #0xff, #0xff, #0xff ; 4294967295
|
||||
.ascii "XM Player"
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db #0x03 ; 3
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.area _INITIALIZER
|
||||
.area _CABS (ABS)
|
||||
BIN
Binary file not shown.
+17
@@ -0,0 +1,17 @@
|
||||
:200200000000000000000000000000000000000057696C64436F6D6D616E6465724D444CDB
|
||||
:2002200007000100001D000000000000000000000000000000000000000000000000000099
|
||||
:20024000584D20584D5A53334D000000000000000000000000000000000000000000000007
|
||||
:2002600000000000000000000000000000000000000000000000000000000000000000007E
|
||||
:2002800000000000000000000000000000000000000000000000000000000000000000005E
|
||||
:2002A00000FFFFFFFF584D20506C6179657200000000000000000000000000000000000010
|
||||
:2002C00000000000000300000000000000000000000000000000000000000000000000001B
|
||||
:2002E0000000000000000000000000000000000000000000000000000000000000000000FE
|
||||
:200300000000000000000000000000000000000000000000000000000000000000000000DD
|
||||
:200320000000000000000000000000000000000000000000000000000000000000000000BD
|
||||
:2003400000000000000000000000000000000000000000000000000000000000000000009D
|
||||
:2003600000000000000000000000000000000000000000000000000000000000000000007D
|
||||
:2003800000000000000000000000000000000000000000000000000000000000000000005D
|
||||
:2003A00000000000000000000000000000000000000000000000000000000000000000003D
|
||||
:2003C00000000000000000000000000000000000000000000000000000000000000000001D
|
||||
:2003E0000000000000000000000000000000000000000000000000000000000000000000FD
|
||||
:00000001FF
|
||||
@@ -0,0 +1,9 @@
|
||||
-mjwx
|
||||
-i obj/hdr.hex
|
||||
-b _CODE = 0x0200
|
||||
-b _DATA = 0x8000
|
||||
-k E:\SDCC\4.6.0\bin\..\lib\z80
|
||||
-l z80
|
||||
obj/hdr.rel
|
||||
|
||||
-e
|
||||
+548
@@ -0,0 +1,548 @@
|
||||
1 ;--------------------------------------------------------
|
||||
2 ; File Created by SDCC : free open source ISO C Compiler
|
||||
3 ; Version 4.6.0 #16555 (MINGW64)
|
||||
4 ;--------------------------------------------------------
|
||||
5 .module wc_h
|
||||
6
|
||||
7 .optsdcc -mz80 sdcccall(1)
|
||||
8 ;--------------------------------------------------------
|
||||
9 ; Public variables in this module
|
||||
10 ;--------------------------------------------------------
|
||||
11 ;--------------------------------------------------------
|
||||
12 ; special function registers
|
||||
13 ;--------------------------------------------------------
|
||||
14 ;--------------------------------------------------------
|
||||
15 ; ram data
|
||||
16 ;--------------------------------------------------------
|
||||
17 .area _DATA
|
||||
18 ;--------------------------------------------------------
|
||||
19 ; ram data
|
||||
20 ;--------------------------------------------------------
|
||||
21 .area _INITIALIZED
|
||||
22 ;--------------------------------------------------------
|
||||
23 ; absolute ram data
|
||||
24 ;--------------------------------------------------------
|
||||
25 .area _DABS (ABS)
|
||||
26 .area _DABS (ABS)
|
||||
27 ;--------------------------------------------------------
|
||||
28 ; global & static initialisations
|
||||
29 ;--------------------------------------------------------
|
||||
30 .area _HOME
|
||||
31 .area _GSINIT
|
||||
32 .area _GSFINAL
|
||||
33 .area _GSINIT
|
||||
34 ;--------------------------------------------------------
|
||||
35 ; Home
|
||||
36 ;--------------------------------------------------------
|
||||
37 .area _HOME
|
||||
38 .area _HOME
|
||||
39 ;--------------------------------------------------------
|
||||
40 ; code
|
||||
41 ;--------------------------------------------------------
|
||||
42 .area _CODE
|
||||
43 .area _CODE
|
||||
00000000 44 _hdr:
|
||||
00000000 00 45 .db 0x00
|
||||
00000001 00 46 .db 0x00
|
||||
00000002 00 47 .db 0x00
|
||||
00000003 00 48 .db 0x00
|
||||
00000004 00 49 .db 0x00
|
||||
00000005 00 50 .db 0x00
|
||||
00000006 00 51 .db 0x00
|
||||
00000007 00 52 .db 0x00
|
||||
00000008 00 53 .db 0x00
|
||||
00000009 00 54 .db 0x00
|
||||
0000000A 00 55 .db 0x00
|
||||
0000000B 00 56 .db 0x00
|
||||
0000000C 00 57 .db 0x00
|
||||
0000000D 00 58 .db 0x00
|
||||
0000000E 00 59 .db 0x00
|
||||
0000000F 00 60 .db 0x00
|
||||
00000010 57 61 .db #0x57 ; 87 'W'
|
||||
00000011 69 62 .db #0x69 ; 105 'i'
|
||||
00000012 6C 63 .db #0x6c ; 108 'l'
|
||||
00000013 64 64 .db #0x64 ; 100 'd'
|
||||
00000014 43 65 .db #0x43 ; 67 'C'
|
||||
00000015 6F 66 .db #0x6f ; 111 'o'
|
||||
00000016 6D 67 .db #0x6d ; 109 'm'
|
||||
00000017 6D 68 .db #0x6d ; 109 'm'
|
||||
00000018 61 69 .db #0x61 ; 97 'a'
|
||||
00000019 6E 70 .db #0x6e ; 110 'n'
|
||||
0000001A 64 71 .db #0x64 ; 100 'd'
|
||||
0000001B 65 72 .db #0x65 ; 101 'e'
|
||||
0000001C 72 73 .db #0x72 ; 114 'r'
|
||||
0000001D 4D 74 .db #0x4d ; 77 'M'
|
||||
0000001E 44 75 .db #0x44 ; 68 'D'
|
||||
0000001F 4C 76 .db #0x4c ; 76 'L'
|
||||
00000020 07 77 .db #0x07 ; 7
|
||||
00000021 00 78 .db 0x00
|
||||
00000022 01 79 .db #0x01 ; 1
|
||||
00000023 00 80 .db #0x00 ; 0
|
||||
00000024 00 81 .db #0x00 ; 0
|
||||
00000025 1D 82 .db #0x1d ; 29
|
||||
00000026 00 83 .db 0x00
|
||||
00000027 00 84 .db 0x00
|
||||
00000028 00 85 .db 0x00
|
||||
00000029 00 86 .db 0x00
|
||||
0000002A 00 87 .db 0x00
|
||||
0000002B 00 88 .db 0x00
|
||||
0000002C 00 89 .db 0x00
|
||||
0000002D 00 90 .db 0x00
|
||||
0000002E 00 91 .db 0x00
|
||||
0000002F 00 92 .db 0x00
|
||||
00000030 00 93 .db 0x00
|
||||
00000031 00 94 .db 0x00
|
||||
00000032 00 95 .db 0x00
|
||||
00000033 00 96 .db 0x00
|
||||
00000034 00 97 .db 0x00
|
||||
00000035 00 98 .db 0x00
|
||||
00000036 00 99 .db 0x00
|
||||
00000037 00 100 .db 0x00
|
||||
00000038 00 101 .db 0x00
|
||||
00000039 00 102 .db 0x00
|
||||
0000003A 00 103 .db 0x00
|
||||
0000003B 00 104 .db 0x00
|
||||
0000003C 00 105 .db 0x00
|
||||
0000003D 00 106 .db 0x00
|
||||
0000003E 00 107 .db 0x00
|
||||
0000003F 00 108 .db 0x00
|
||||
00000040 58 109 .db #0x58 ; 88 'X'
|
||||
00000041 4D 110 .db #0x4d ; 77 'M'
|
||||
00000042 20 111 .db #0x20 ; 32
|
||||
00000043 58 112 .db #0x58 ; 88 'X'
|
||||
00000044 4D 113 .db #0x4d ; 77 'M'
|
||||
00000045 5A 114 .db #0x5a ; 90 'Z'
|
||||
00000046 53 115 .db #0x53 ; 83 'S'
|
||||
00000047 33 116 .db #0x33 ; 51 '3'
|
||||
00000048 4D 117 .db #0x4d ; 77 'M'
|
||||
00000049 00 118 .db 0x00
|
||||
0000004A 00 119 .db 0x00
|
||||
0000004B 00 120 .db 0x00
|
||||
0000004C 00 121 .db 0x00
|
||||
0000004D 00 122 .db 0x00
|
||||
0000004E 00 123 .db 0x00
|
||||
0000004F 00 124 .db 0x00
|
||||
00000050 00 125 .db 0x00
|
||||
00000051 00 126 .db 0x00
|
||||
00000052 00 127 .db 0x00
|
||||
00000053 00 128 .db 0x00
|
||||
00000054 00 129 .db 0x00
|
||||
00000055 00 130 .db 0x00
|
||||
00000056 00 131 .db 0x00
|
||||
00000057 00 132 .db 0x00
|
||||
00000058 00 133 .db 0x00
|
||||
00000059 00 134 .db 0x00
|
||||
0000005A 00 135 .db 0x00
|
||||
0000005B 00 136 .db 0x00
|
||||
0000005C 00 137 .db 0x00
|
||||
0000005D 00 138 .db 0x00
|
||||
0000005E 00 139 .db 0x00
|
||||
0000005F 00 140 .db 0x00
|
||||
00000060 00 141 .db 0x00
|
||||
00000061 00 142 .db 0x00
|
||||
00000062 00 143 .db 0x00
|
||||
00000063 00 144 .db 0x00
|
||||
00000064 00 145 .db 0x00
|
||||
00000065 00 146 .db 0x00
|
||||
00000066 00 147 .db 0x00
|
||||
00000067 00 148 .db 0x00
|
||||
00000068 00 149 .db 0x00
|
||||
00000069 00 150 .db 0x00
|
||||
0000006A 00 151 .db 0x00
|
||||
0000006B 00 152 .db 0x00
|
||||
0000006C 00 153 .db 0x00
|
||||
0000006D 00 154 .db 0x00
|
||||
0000006E 00 155 .db 0x00
|
||||
0000006F 00 156 .db 0x00
|
||||
00000070 00 157 .db 0x00
|
||||
00000071 00 158 .db 0x00
|
||||
00000072 00 159 .db 0x00
|
||||
00000073 00 160 .db 0x00
|
||||
00000074 00 161 .db 0x00
|
||||
00000075 00 162 .db 0x00
|
||||
00000076 00 163 .db 0x00
|
||||
00000077 00 164 .db 0x00
|
||||
00000078 00 165 .db 0x00
|
||||
00000079 00 166 .db 0x00
|
||||
0000007A 00 167 .db 0x00
|
||||
0000007B 00 168 .db 0x00
|
||||
0000007C 00 169 .db 0x00
|
||||
0000007D 00 170 .db 0x00
|
||||
0000007E 00 171 .db 0x00
|
||||
0000007F 00 172 .db 0x00
|
||||
00000080 00 173 .db 0x00
|
||||
00000081 00 174 .db 0x00
|
||||
00000082 00 175 .db 0x00
|
||||
00000083 00 176 .db 0x00
|
||||
00000084 00 177 .db 0x00
|
||||
00000085 00 178 .db 0x00
|
||||
00000086 00 179 .db 0x00
|
||||
00000087 00 180 .db 0x00
|
||||
00000088 00 181 .db 0x00
|
||||
00000089 00 182 .db 0x00
|
||||
0000008A 00 183 .db 0x00
|
||||
0000008B 00 184 .db 0x00
|
||||
0000008C 00 185 .db 0x00
|
||||
0000008D 00 186 .db 0x00
|
||||
0000008E 00 187 .db 0x00
|
||||
0000008F 00 188 .db 0x00
|
||||
00000090 00 189 .db 0x00
|
||||
00000091 00 190 .db 0x00
|
||||
00000092 00 191 .db 0x00
|
||||
00000093 00 192 .db 0x00
|
||||
00000094 00 193 .db 0x00
|
||||
00000095 00 194 .db 0x00
|
||||
00000096 00 195 .db 0x00
|
||||
00000097 00 196 .db 0x00
|
||||
00000098 00 197 .db 0x00
|
||||
00000099 00 198 .db 0x00
|
||||
0000009A 00 199 .db 0x00
|
||||
0000009B 00 200 .db 0x00
|
||||
0000009C 00 201 .db 0x00
|
||||
0000009D 00 202 .db 0x00
|
||||
0000009E 00 203 .db 0x00
|
||||
0000009F 00 204 .db 0x00
|
||||
000000A0 00 205 .db 0x00
|
||||
000000A1 FF FF FF FF 206 .byte #0xff, #0xff, #0xff, #0xff ; 4294967295
|
||||
000000A5 58 4D 20 50 6C 61 79 207 .ascii "XM Player"
|
||||
65 72
|
||||
000000AE 00 208 .db 0x00
|
||||
000000AF 00 209 .db 0x00
|
||||
000000B0 00 210 .db 0x00
|
||||
000000B1 00 211 .db 0x00
|
||||
000000B2 00 212 .db 0x00
|
||||
000000B3 00 213 .db 0x00
|
||||
000000B4 00 214 .db 0x00
|
||||
000000B5 00 215 .db 0x00
|
||||
000000B6 00 216 .db 0x00
|
||||
000000B7 00 217 .db 0x00
|
||||
000000B8 00 218 .db 0x00
|
||||
000000B9 00 219 .db 0x00
|
||||
000000BA 00 220 .db 0x00
|
||||
000000BB 00 221 .db 0x00
|
||||
000000BC 00 222 .db 0x00
|
||||
000000BD 00 223 .db 0x00
|
||||
000000BE 00 224 .db 0x00
|
||||
000000BF 00 225 .db 0x00
|
||||
000000C0 00 226 .db 0x00
|
||||
000000C1 00 227 .db 0x00
|
||||
000000C2 00 228 .db 0x00
|
||||
000000C3 00 229 .db 0x00
|
||||
000000C4 00 230 .db 0x00
|
||||
000000C5 03 231 .db #0x03 ; 3
|
||||
000000C6 00 232 .db 0x00
|
||||
000000C7 00 233 .db 0x00
|
||||
000000C8 00 234 .db 0x00
|
||||
000000C9 00 235 .db 0x00
|
||||
000000CA 00 236 .db 0x00
|
||||
000000CB 00 237 .db 0x00
|
||||
000000CC 00 238 .db 0x00
|
||||
000000CD 00 239 .db 0x00
|
||||
000000CE 00 240 .db 0x00
|
||||
000000CF 00 241 .db 0x00
|
||||
000000D0 00 242 .db 0x00
|
||||
000000D1 00 243 .db 0x00
|
||||
000000D2 00 244 .db 0x00
|
||||
000000D3 00 245 .db 0x00
|
||||
000000D4 00 246 .db 0x00
|
||||
000000D5 00 247 .db 0x00
|
||||
000000D6 00 248 .db 0x00
|
||||
000000D7 00 249 .db 0x00
|
||||
000000D8 00 250 .db 0x00
|
||||
000000D9 00 251 .db 0x00
|
||||
000000DA 00 252 .db 0x00
|
||||
000000DB 00 253 .db 0x00
|
||||
000000DC 00 254 .db 0x00
|
||||
000000DD 00 255 .db 0x00
|
||||
000000DE 00 256 .db 0x00
|
||||
000000DF 00 257 .db 0x00
|
||||
000000E0 00 258 .db 0x00
|
||||
000000E1 00 259 .db 0x00
|
||||
000000E2 00 260 .db 0x00
|
||||
000000E3 00 261 .db 0x00
|
||||
000000E4 00 262 .db 0x00
|
||||
000000E5 00 263 .db 0x00
|
||||
000000E6 00 264 .db 0x00
|
||||
000000E7 00 265 .db 0x00
|
||||
000000E8 00 266 .db 0x00
|
||||
000000E9 00 267 .db 0x00
|
||||
000000EA 00 268 .db 0x00
|
||||
000000EB 00 269 .db 0x00
|
||||
000000EC 00 270 .db 0x00
|
||||
000000ED 00 271 .db 0x00
|
||||
000000EE 00 272 .db 0x00
|
||||
000000EF 00 273 .db 0x00
|
||||
000000F0 00 274 .db 0x00
|
||||
000000F1 00 275 .db 0x00
|
||||
000000F2 00 276 .db 0x00
|
||||
000000F3 00 277 .db 0x00
|
||||
000000F4 00 278 .db 0x00
|
||||
000000F5 00 279 .db 0x00
|
||||
000000F6 00 280 .db 0x00
|
||||
000000F7 00 281 .db 0x00
|
||||
000000F8 00 282 .db 0x00
|
||||
000000F9 00 283 .db 0x00
|
||||
000000FA 00 284 .db 0x00
|
||||
000000FB 00 285 .db 0x00
|
||||
000000FC 00 286 .db 0x00
|
||||
000000FD 00 287 .db 0x00
|
||||
000000FE 00 288 .db 0x00
|
||||
000000FF 00 289 .db 0x00
|
||||
00000100 00 290 .db 0x00
|
||||
00000101 00 291 .db 0x00
|
||||
00000102 00 292 .db 0x00
|
||||
00000103 00 293 .db 0x00
|
||||
00000104 00 294 .db 0x00
|
||||
00000105 00 295 .db 0x00
|
||||
00000106 00 296 .db 0x00
|
||||
00000107 00 297 .db 0x00
|
||||
00000108 00 298 .db 0x00
|
||||
00000109 00 299 .db 0x00
|
||||
0000010A 00 300 .db 0x00
|
||||
0000010B 00 301 .db 0x00
|
||||
0000010C 00 302 .db 0x00
|
||||
0000010D 00 303 .db 0x00
|
||||
0000010E 00 304 .db 0x00
|
||||
0000010F 00 305 .db 0x00
|
||||
00000110 00 306 .db 0x00
|
||||
00000111 00 307 .db 0x00
|
||||
00000112 00 308 .db 0x00
|
||||
00000113 00 309 .db 0x00
|
||||
00000114 00 310 .db 0x00
|
||||
00000115 00 311 .db 0x00
|
||||
00000116 00 312 .db 0x00
|
||||
00000117 00 313 .db 0x00
|
||||
00000118 00 314 .db 0x00
|
||||
00000119 00 315 .db 0x00
|
||||
0000011A 00 316 .db 0x00
|
||||
0000011B 00 317 .db 0x00
|
||||
0000011C 00 318 .db 0x00
|
||||
0000011D 00 319 .db 0x00
|
||||
0000011E 00 320 .db 0x00
|
||||
0000011F 00 321 .db 0x00
|
||||
00000120 00 322 .db 0x00
|
||||
00000121 00 323 .db 0x00
|
||||
00000122 00 324 .db 0x00
|
||||
00000123 00 325 .db 0x00
|
||||
00000124 00 326 .db 0x00
|
||||
00000125 00 327 .db 0x00
|
||||
00000126 00 328 .db 0x00
|
||||
00000127 00 329 .db 0x00
|
||||
00000128 00 330 .db 0x00
|
||||
00000129 00 331 .db 0x00
|
||||
0000012A 00 332 .db 0x00
|
||||
0000012B 00 333 .db 0x00
|
||||
0000012C 00 334 .db 0x00
|
||||
0000012D 00 335 .db 0x00
|
||||
0000012E 00 336 .db 0x00
|
||||
0000012F 00 337 .db 0x00
|
||||
00000130 00 338 .db 0x00
|
||||
00000131 00 339 .db 0x00
|
||||
00000132 00 340 .db 0x00
|
||||
00000133 00 341 .db 0x00
|
||||
00000134 00 342 .db 0x00
|
||||
00000135 00 343 .db 0x00
|
||||
00000136 00 344 .db 0x00
|
||||
00000137 00 345 .db 0x00
|
||||
00000138 00 346 .db 0x00
|
||||
00000139 00 347 .db 0x00
|
||||
0000013A 00 348 .db 0x00
|
||||
0000013B 00 349 .db 0x00
|
||||
0000013C 00 350 .db 0x00
|
||||
0000013D 00 351 .db 0x00
|
||||
0000013E 00 352 .db 0x00
|
||||
0000013F 00 353 .db 0x00
|
||||
00000140 00 354 .db 0x00
|
||||
00000141 00 355 .db 0x00
|
||||
00000142 00 356 .db 0x00
|
||||
00000143 00 357 .db 0x00
|
||||
00000144 00 358 .db 0x00
|
||||
00000145 00 359 .db 0x00
|
||||
00000146 00 360 .db 0x00
|
||||
00000147 00 361 .db 0x00
|
||||
00000148 00 362 .db 0x00
|
||||
00000149 00 363 .db 0x00
|
||||
0000014A 00 364 .db 0x00
|
||||
0000014B 00 365 .db 0x00
|
||||
0000014C 00 366 .db 0x00
|
||||
0000014D 00 367 .db 0x00
|
||||
0000014E 00 368 .db 0x00
|
||||
0000014F 00 369 .db 0x00
|
||||
00000150 00 370 .db 0x00
|
||||
00000151 00 371 .db 0x00
|
||||
00000152 00 372 .db 0x00
|
||||
00000153 00 373 .db 0x00
|
||||
00000154 00 374 .db 0x00
|
||||
00000155 00 375 .db 0x00
|
||||
00000156 00 376 .db 0x00
|
||||
00000157 00 377 .db 0x00
|
||||
00000158 00 378 .db 0x00
|
||||
00000159 00 379 .db 0x00
|
||||
0000015A 00 380 .db 0x00
|
||||
0000015B 00 381 .db 0x00
|
||||
0000015C 00 382 .db 0x00
|
||||
0000015D 00 383 .db 0x00
|
||||
0000015E 00 384 .db 0x00
|
||||
0000015F 00 385 .db 0x00
|
||||
00000160 00 386 .db 0x00
|
||||
00000161 00 387 .db 0x00
|
||||
00000162 00 388 .db 0x00
|
||||
00000163 00 389 .db 0x00
|
||||
00000164 00 390 .db 0x00
|
||||
00000165 00 391 .db 0x00
|
||||
00000166 00 392 .db 0x00
|
||||
00000167 00 393 .db 0x00
|
||||
00000168 00 394 .db 0x00
|
||||
00000169 00 395 .db 0x00
|
||||
0000016A 00 396 .db 0x00
|
||||
0000016B 00 397 .db 0x00
|
||||
0000016C 00 398 .db 0x00
|
||||
0000016D 00 399 .db 0x00
|
||||
0000016E 00 400 .db 0x00
|
||||
0000016F 00 401 .db 0x00
|
||||
00000170 00 402 .db 0x00
|
||||
00000171 00 403 .db 0x00
|
||||
00000172 00 404 .db 0x00
|
||||
00000173 00 405 .db 0x00
|
||||
00000174 00 406 .db 0x00
|
||||
00000175 00 407 .db 0x00
|
||||
00000176 00 408 .db 0x00
|
||||
00000177 00 409 .db 0x00
|
||||
00000178 00 410 .db 0x00
|
||||
00000179 00 411 .db 0x00
|
||||
0000017A 00 412 .db 0x00
|
||||
0000017B 00 413 .db 0x00
|
||||
0000017C 00 414 .db 0x00
|
||||
0000017D 00 415 .db 0x00
|
||||
0000017E 00 416 .db 0x00
|
||||
0000017F 00 417 .db 0x00
|
||||
00000180 00 418 .db 0x00
|
||||
00000181 00 419 .db 0x00
|
||||
00000182 00 420 .db 0x00
|
||||
00000183 00 421 .db 0x00
|
||||
00000184 00 422 .db 0x00
|
||||
00000185 00 423 .db 0x00
|
||||
00000186 00 424 .db 0x00
|
||||
00000187 00 425 .db 0x00
|
||||
00000188 00 426 .db 0x00
|
||||
00000189 00 427 .db 0x00
|
||||
0000018A 00 428 .db 0x00
|
||||
0000018B 00 429 .db 0x00
|
||||
0000018C 00 430 .db 0x00
|
||||
0000018D 00 431 .db 0x00
|
||||
0000018E 00 432 .db 0x00
|
||||
0000018F 00 433 .db 0x00
|
||||
00000190 00 434 .db 0x00
|
||||
00000191 00 435 .db 0x00
|
||||
00000192 00 436 .db 0x00
|
||||
00000193 00 437 .db 0x00
|
||||
00000194 00 438 .db 0x00
|
||||
00000195 00 439 .db 0x00
|
||||
00000196 00 440 .db 0x00
|
||||
00000197 00 441 .db 0x00
|
||||
00000198 00 442 .db 0x00
|
||||
00000199 00 443 .db 0x00
|
||||
0000019A 00 444 .db 0x00
|
||||
0000019B 00 445 .db 0x00
|
||||
0000019C 00 446 .db 0x00
|
||||
0000019D 00 447 .db 0x00
|
||||
0000019E 00 448 .db 0x00
|
||||
0000019F 00 449 .db 0x00
|
||||
000001A0 00 450 .db 0x00
|
||||
000001A1 00 451 .db 0x00
|
||||
000001A2 00 452 .db 0x00
|
||||
000001A3 00 453 .db 0x00
|
||||
000001A4 00 454 .db 0x00
|
||||
000001A5 00 455 .db 0x00
|
||||
000001A6 00 456 .db 0x00
|
||||
000001A7 00 457 .db 0x00
|
||||
000001A8 00 458 .db 0x00
|
||||
000001A9 00 459 .db 0x00
|
||||
000001AA 00 460 .db 0x00
|
||||
000001AB 00 461 .db 0x00
|
||||
000001AC 00 462 .db 0x00
|
||||
000001AD 00 463 .db 0x00
|
||||
000001AE 00 464 .db 0x00
|
||||
000001AF 00 465 .db 0x00
|
||||
000001B0 00 466 .db 0x00
|
||||
000001B1 00 467 .db 0x00
|
||||
000001B2 00 468 .db 0x00
|
||||
000001B3 00 469 .db 0x00
|
||||
000001B4 00 470 .db 0x00
|
||||
000001B5 00 471 .db 0x00
|
||||
000001B6 00 472 .db 0x00
|
||||
000001B7 00 473 .db 0x00
|
||||
000001B8 00 474 .db 0x00
|
||||
000001B9 00 475 .db 0x00
|
||||
000001BA 00 476 .db 0x00
|
||||
000001BB 00 477 .db 0x00
|
||||
000001BC 00 478 .db 0x00
|
||||
000001BD 00 479 .db 0x00
|
||||
000001BE 00 480 .db 0x00
|
||||
000001BF 00 481 .db 0x00
|
||||
000001C0 00 482 .db 0x00
|
||||
000001C1 00 483 .db 0x00
|
||||
000001C2 00 484 .db 0x00
|
||||
000001C3 00 485 .db 0x00
|
||||
000001C4 00 486 .db 0x00
|
||||
000001C5 00 487 .db 0x00
|
||||
000001C6 00 488 .db 0x00
|
||||
000001C7 00 489 .db 0x00
|
||||
000001C8 00 490 .db 0x00
|
||||
000001C9 00 491 .db 0x00
|
||||
000001CA 00 492 .db 0x00
|
||||
000001CB 00 493 .db 0x00
|
||||
000001CC 00 494 .db 0x00
|
||||
000001CD 00 495 .db 0x00
|
||||
000001CE 00 496 .db 0x00
|
||||
000001CF 00 497 .db 0x00
|
||||
000001D0 00 498 .db 0x00
|
||||
000001D1 00 499 .db 0x00
|
||||
000001D2 00 500 .db 0x00
|
||||
000001D3 00 501 .db 0x00
|
||||
000001D4 00 502 .db 0x00
|
||||
000001D5 00 503 .db 0x00
|
||||
000001D6 00 504 .db 0x00
|
||||
000001D7 00 505 .db 0x00
|
||||
000001D8 00 506 .db 0x00
|
||||
000001D9 00 507 .db 0x00
|
||||
000001DA 00 508 .db 0x00
|
||||
000001DB 00 509 .db 0x00
|
||||
000001DC 00 510 .db 0x00
|
||||
000001DD 00 511 .db 0x00
|
||||
000001DE 00 512 .db 0x00
|
||||
000001DF 00 513 .db 0x00
|
||||
000001E0 00 514 .db 0x00
|
||||
000001E1 00 515 .db 0x00
|
||||
000001E2 00 516 .db 0x00
|
||||
000001E3 00 517 .db 0x00
|
||||
000001E4 00 518 .db 0x00
|
||||
000001E5 00 519 .db 0x00
|
||||
000001E6 00 520 .db 0x00
|
||||
000001E7 00 521 .db 0x00
|
||||
000001E8 00 522 .db 0x00
|
||||
000001E9 00 523 .db 0x00
|
||||
000001EA 00 524 .db 0x00
|
||||
000001EB 00 525 .db 0x00
|
||||
000001EC 00 526 .db 0x00
|
||||
000001ED 00 527 .db 0x00
|
||||
000001EE 00 528 .db 0x00
|
||||
000001EF 00 529 .db 0x00
|
||||
000001F0 00 530 .db 0x00
|
||||
000001F1 00 531 .db 0x00
|
||||
000001F2 00 532 .db 0x00
|
||||
000001F3 00 533 .db 0x00
|
||||
000001F4 00 534 .db 0x00
|
||||
000001F5 00 535 .db 0x00
|
||||
000001F6 00 536 .db 0x00
|
||||
000001F7 00 537 .db 0x00
|
||||
000001F8 00 538 .db 0x00
|
||||
000001F9 00 539 .db 0x00
|
||||
000001FA 00 540 .db 0x00
|
||||
000001FB 00 541 .db 0x00
|
||||
000001FC 00 542 .db 0x00
|
||||
000001FD 00 543 .db 0x00
|
||||
000001FE 00 544 .db 0x00
|
||||
000001FF 00 545 .db 0x00
|
||||
546 .area _INITIALIZER
|
||||
547 .area _CABS (ABS)
|
||||
+52
@@ -0,0 +1,52 @@
|
||||
ASxxxx Linker V05.50.4-SDLD, page 1.
|
||||
Hexadecimal [32-Bits]
|
||||
|
||||
Area Addr Size Decimal Bytes (Attributes)
|
||||
-------------------------------- ---- ---- ------- ----- ------------
|
||||
. .ABS. 00000000 00000000 = 0. bytes (ABS,CON)
|
||||
|
||||
Value Global Global Defined In Module
|
||||
----- -------------------------------- ------------------------
|
||||
00000000 .__.ABS. wc_h
|
||||
00000000 l__CABS
|
||||
00000000 l__DABS
|
||||
00000000 l__DATA
|
||||
00000000 l__GSFINAL
|
||||
00000000 l__GSINIT
|
||||
00000000 l__HOME
|
||||
00000000 l__INITIALIZED
|
||||
00000000 l__INITIALIZER
|
||||
00000000 s__CABS
|
||||
00000000 s__DABS
|
||||
00000200 l__CODE
|
||||
00000200 s__CODE
|
||||
00008000 s__DATA
|
||||
00008000 s__GSFINAL
|
||||
00008000 s__GSINIT
|
||||
00008000 s__HOME
|
||||
00008000 s__INITIALIZED
|
||||
00008000 s__INITIALIZER
|
||||
|
||||
ASxxxx Linker V05.50.4-SDLD, page 2.
|
||||
Hexadecimal [32-Bits]
|
||||
|
||||
Area Addr Size Decimal Bytes (Attributes)
|
||||
-------------------------------- ---- ---- ------- ----- ------------
|
||||
_CODE 00000200 00000200 = 512. bytes (REL,CON)
|
||||
|
||||
Value Global Global Defined In Module
|
||||
----- -------------------------------- ------------------------
|
||||
ASxxxx Linker V05.50.4-SDLD, page 3.
|
||||
|
||||
Files Linked [ module(s) ]
|
||||
|
||||
obj/hdr.rel [ wc_h ]
|
||||
|
||||
ASxxxx Linker V05.50.4-SDLD, page 4.
|
||||
|
||||
User Base Address Definitions
|
||||
|
||||
_CODE = 0x0200
|
||||
_DATA = 0x8000
|
||||
|
||||
|
||||
+20
@@ -0,0 +1,20 @@
|
||||
DEF .__.ABS. 0x0
|
||||
DEF l__CABS 0x0
|
||||
DEF l__DABS 0x0
|
||||
DEF l__DATA 0x0
|
||||
DEF l__GSFINAL 0x0
|
||||
DEF l__GSINIT 0x0
|
||||
DEF l__HOME 0x0
|
||||
DEF l__INITIALIZED 0x0
|
||||
DEF l__INITIALIZER 0x0
|
||||
DEF s__CABS 0x0
|
||||
DEF s__DABS 0x0
|
||||
DEF l__CODE 0x200
|
||||
DEF s__CODE 0x200
|
||||
DEF s__DATA 0x8000
|
||||
DEF s__GSFINAL 0x8000
|
||||
DEF s__GSINIT 0x8000
|
||||
DEF s__HOME 0x8000
|
||||
DEF s__INITIALIZED 0x8000
|
||||
DEF s__INITIALIZER 0x8000
|
||||
LOAD obj/hdr.ihx
|
||||
+102
@@ -0,0 +1,102 @@
|
||||
XL4
|
||||
H 9 areas 1 global symbols
|
||||
M wc_h
|
||||
O -mz80 sdcccall(1)
|
||||
S .__.ABS. Def00000000
|
||||
A _CODE size 200 flags 0 addr 0
|
||||
A _DATA size 0 flags 0 addr 0
|
||||
A _INITIALIZED size 0 flags 0 addr 0
|
||||
A _DABS size 0 flags 8 addr 0
|
||||
A _HOME size 0 flags 0 addr 0
|
||||
A _GSINIT size 0 flags 0 addr 0
|
||||
A _GSFINAL size 0 flags 0 addr 0
|
||||
A _INITIALIZER size 0 flags 0 addr 0
|
||||
A _CABS size 0 flags 8 addr 0
|
||||
T 00 00 00 00
|
||||
R 00 00 00 00
|
||||
T 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
|
||||
R 00 00 00 00
|
||||
T 0C 00 00 00 00 00 00 00 57 69 6C 64 43 6F 6D 6D
|
||||
R 00 00 00 00
|
||||
T 18 00 00 00 61 6E 64 65 72 4D 44 4C 07 00 01 00
|
||||
R 00 00 00 00
|
||||
T 24 00 00 00 00 1D 00 00 00 00 00 00 00 00 00 00
|
||||
R 00 00 00 00
|
||||
T 30 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
|
||||
R 00 00 00 00
|
||||
T 3C 00 00 00 00 00 00 00 58 4D 20 58 4D 5A 53 33
|
||||
R 00 00 00 00
|
||||
T 48 00 00 00 4D 00 00 00 00 00 00 00 00 00 00 00
|
||||
R 00 00 00 00
|
||||
T 54 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
|
||||
R 00 00 00 00
|
||||
T 60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
|
||||
R 00 00 00 00
|
||||
T 6C 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
|
||||
R 00 00 00 00
|
||||
T 78 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
|
||||
R 00 00 00 00
|
||||
T 84 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
|
||||
R 00 00 00 00
|
||||
T 90 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
|
||||
R 00 00 00 00
|
||||
T 9C 00 00 00 00 00 00 00 00 FF FF FF FF 58 4D 20
|
||||
R 00 00 00 00
|
||||
T A8 00 00 00 50 6C 61 79 65 72 00 00 00 00 00 00
|
||||
R 00 00 00 00
|
||||
T B4 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
|
||||
R 00 00 00 00
|
||||
T C0 00 00 00 00 00 00 00 00 03 00 00 00 00 00 00
|
||||
R 00 00 00 00
|
||||
T CC 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
|
||||
R 00 00 00 00
|
||||
T D8 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
|
||||
R 00 00 00 00
|
||||
T E4 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
|
||||
R 00 00 00 00
|
||||
T F0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
|
||||
R 00 00 00 00
|
||||
T FC 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
|
||||
R 00 00 00 00
|
||||
T 08 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00
|
||||
R 00 00 00 00
|
||||
T 14 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00
|
||||
R 00 00 00 00
|
||||
T 20 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00
|
||||
R 00 00 00 00
|
||||
T 2C 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00
|
||||
R 00 00 00 00
|
||||
T 38 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00
|
||||
R 00 00 00 00
|
||||
T 44 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00
|
||||
R 00 00 00 00
|
||||
T 50 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00
|
||||
R 00 00 00 00
|
||||
T 5C 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00
|
||||
R 00 00 00 00
|
||||
T 68 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00
|
||||
R 00 00 00 00
|
||||
T 74 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00
|
||||
R 00 00 00 00
|
||||
T 80 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00
|
||||
R 00 00 00 00
|
||||
T 8C 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00
|
||||
R 00 00 00 00
|
||||
T 98 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00
|
||||
R 00 00 00 00
|
||||
T A4 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00
|
||||
R 00 00 00 00
|
||||
T B0 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00
|
||||
R 00 00 00 00
|
||||
T BC 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00
|
||||
R 00 00 00 00
|
||||
T C8 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00
|
||||
R 00 00 00 00
|
||||
T D4 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00
|
||||
R 00 00 00 00
|
||||
T E0 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00
|
||||
R 00 00 00 00
|
||||
T EC 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00
|
||||
R 00 00 00 00
|
||||
T F8 01 00 00 00 00 00 00 00 00 00 00
|
||||
R 00 00 00 00
|
||||
+27
@@ -0,0 +1,27 @@
|
||||
ASxxxx Assembler V05.50.4+NoICE+SDCCmods-WIP-R14 (Zilog Z80 / Hitachi HD64180 / ZX-Next / eZ80 / R800) Page 1
|
||||
Hexadecimal [32-Bits]
|
||||
|
||||
Symbol Table
|
||||
|
||||
.__.$$$. = 00002710 L
|
||||
.__.ABS. = 00000000 G
|
||||
.__.CPU. = 00000000 L
|
||||
.__.H$L. = 00000000 L
|
||||
0 _hdr 00000000 R
|
||||
|
||||
|
||||
ASxxxx Assembler V05.50.4+NoICE+SDCCmods-WIP-R14 (Zilog Z80 / Hitachi HD64180 / ZX-Next / eZ80 / R800) Page 2
|
||||
Hexadecimal [32-Bits]
|
||||
|
||||
Area Table
|
||||
|
||||
0 _CODE size 200 flags 0
|
||||
1 _DATA size 0 flags 0
|
||||
2 _INITIALIZED size 0 flags 0
|
||||
3 _DABS size 0 flags 8
|
||||
4 _HOME size 0 flags 0
|
||||
5 _GSINIT size 0 flags 0
|
||||
6 _GSFINAL size 0 flags 0
|
||||
7 _INITIALIZER size 0 flags 0
|
||||
8 _CABS size 0 flags 8
|
||||
|
||||
+1820
File diff suppressed because it is too large
Load Diff
BIN
Binary file not shown.
+99
@@ -0,0 +1,99 @@
|
||||
:20800300ED7B01B8C94F3E13D3773E01D357AFD357DB5779D357AFD3573E03D377C94F3EB8
|
||||
:2080230013D3773E02D35779D357DB57DB57DB574F3E03D37779C9DDE5DD210000DD39F556
|
||||
:20804300F54F3E13D3773E02D35779D357DB57DB57DB574FDB575759DB57DD77FCAFDD77E5
|
||||
:20806300FDDD77FEDD77FFDD7EFCDD77FEAFDD77FFDD77FCDD77FDDD6EFEDB57DD77FCAF95
|
||||
:20808300DD77FDDD77FEDD77FFDD7EFCDD77FFAFDD77FCDD77FDDD77FEDD66FF3E03D377CE
|
||||
:2080A300DDF9DDE1C94F3E13D3773E02D35779D357DB57DB57FD210200FD39FD4E00790DDE
|
||||
:2080C300B72807DB571213C3C1803E03D377E133E9474D3E13D3773E01D35778D357DB5768
|
||||
:2080E30079D3573E03D377C94F3E13D3773E01D35779D357DB57FD210200FD39FD7E00D3BA
|
||||
:2081030057FD7E01D357FD7E02D357FD7E03D3573E03D377E1F1F1E93E13D3773E07D357CF
|
||||
:20812300DB573E03D377C97D01AF1AED797C01AF1BED79FD210200FD39FD7E0001AF1CEDD2
|
||||
:2081430079FD7E01FD4E02FD23CB39CB1F3D01AF26ED79FD7E023D01AF28ED793E13D377C0
|
||||
:208163003E03D357DB57DB573E8201AF27ED793E27DBAF0738F93E03D377CD1B811160EABA
|
||||
:20818300210000CDD881E1F1F133E93E13D3773E08D357DB573E03D377C9DDE5DD21000065
|
||||
:2081A300DD394FDD5E04DD5605DD6E06DD66077BC6FF5F7ACEFF577DCEFF6F7CCEFF67B5EA
|
||||
:2081C300B2B3280EE5C5D53E01CD2180D1C1E19120DDDDE1C97BC6FF5F7ACEFF577DCEFFC6
|
||||
:2081E3006F7CCEFF67B5B2B3C8E5D53E01CD2180D1E1FE0228DFC9E5D53E03CDEB80FD2141
|
||||
:208203000200FD39FD6E003E02CDD4803EE0CD088011204E210000CDD8813E0BCD21805F08
|
||||
:208223001600E133E9AFCD0880CD8E81CD1B813E01C90100180A20052F00000000008F824F
|
||||
:2082430099829A820100FFFF20052F00000000008F829982B0820100FFFF20052F000000E0
|
||||
:2082630000008F829982D0828100190A280B4F0000000000EE82998203830100160A2405FC
|
||||
:208283004F0000000000118399821A830E204572726F72212000000E0C014E6F20455350E7
|
||||
:2082A300333220646574656374656421000E0C014F7574206F66206D656D6F727920286624
|
||||
:2082C300696C6520746F6F2062696729000E0C01506C61796261636B206572726F722028A0
|
||||
:2082E3006261642066696C653F29000E20584D2F584D5A2F53334D20506C6179657220007C
|
||||
:208303000E0C01506C6179696E672E2E2E000E2041626F757420000E0C01584D20506C619B
|
||||
:208323007965722076312E3000DDE5DD210000DD3921ECFF39F93EA2CD0880111027210013
|
||||
:2083430000CDD8813EE4CD0880111027210000CDD8813A07B83D280A3A07B8D6022808C3C2
|
||||
:208363006F833E08C371833E0CC371833E05F533ED5B03B82A05B8CDFA812131B8733E01B1
|
||||
:20838300CD21803209B83A09B83D2804AFC33C85210C0039EB2103B8010400EDB0AFDD7710
|
||||
:2083A300FCDD77FDDD77FEDD77FFDD7EFBDDB6FADDB6F9DDB6F8CAC984DD7EF9D610DD7E22
|
||||
:2083C300FADE00DD7EFBDE00301121000039EB210C0039010400EDB0C3ED83DD36EC00DDF1
|
||||
:2083E30036ED10AFDD77EEDD77EF21050039EB21000039010400EDB0DD7EF1C6FFDD7EF26F
|
||||
:20840300CE01473E00CE005F3E00CE005748435ACB3BCB18CB19DD71F779F5332101A8CD46
|
||||
:208423000D8A210000E5DD6EF1DD66F2E53E03CDEB80DD6EFEDD66FFE5DD6EFCDD66FDE5F1
|
||||
:208443003E07CDEB803EE1CD0880210000E521D007E53E03CD9D81F1F1DD7EF7DD77F5DDBF
|
||||
:2084630036F6003A0260DD77F7DD6EF52600E5210002E5DD7EF7F5332101A8CD2A81DD5E9C
|
||||
:20848300F1DD56F2DD6EFCDD66FD19DD75FCDD74FDDD7EFEDD8EF3DD77FE3003DD34FFDD5E
|
||||
:2084A3007EF8DD96F1DD77F8DD7EF9DD9EF2DD77F9DD7EFADD9EF3DD77FADD7EFBDD9EF4AF
|
||||
:2084C300DD77FBC3AD833A07B83D203D3A31B86F3E0BCDD4802E053E02CDD4802A05B8E568
|
||||
:2084E3002A03B8E53E03CDEB803EF2CD0880111027210000CDD8813E01CD21803209B83A48
|
||||
:2085030009B83D2804AFC33C853EA0CD0880111027210000CDD8813E01CD21803209B83A5F
|
||||
:2085230009B83D2804AFC33C853EA1CD0880111027210000CDD8813E01DDF9DDE1C976CD39
|
||||
:20854300DB8AB728F9C94F790DB7C876C34A85217D82CD648ACD4185217D82CDC28AAFC39D
|
||||
:208563000380213582CD648ACD4185213582CDC28AAFC30380214782CD648A3E32CD4985B9
|
||||
:20858300214782CDC28A3E02C30380215982CD648A3E32CD4985215982CDC28A3E02C30372
|
||||
:2085A30080ED4B0AB81E006B260009563E0C836F3EB8CE00677AB7280A7BD6203005721C32
|
||||
:2085C300C3AA853600C93E45F533210500E5210101E511F385216B82CD7B8A210CB8CDCFFF
|
||||
:2085E3008AD5210107E5110CB8216B82CD2E8AC946696C653A00DDE5DD210000DD39EB015E
|
||||
:208603002586DD7E0407070707E60F6F2600097E1213DD7E04E60F6F2600097E12DDE1E1DA
|
||||
:2086230033E93031323334353637383941424344454600DDE5DD210000DD39F54D44E1D567
|
||||
:20864300C5116400DD6EFEDD66FFCDDE89EB110A00CD298AC17BC63002696023E5C5110AB3
|
||||
:2086630000DD6EFEDD66FFCDDE89EB110A00CD298AC1E17BC630770303C5110A00DD6EFEF9
|
||||
:20868300DD66FFCD298AC17BC63002DDF9DDE1C9DDE5DD210000DD39E5210000E52E3CE574
|
||||
:2086A300DD5E04DD5605DD6E06DD6607CDC3B8F1F1010000C50E64C5CD3CB8F1F14BC521AA
|
||||
:2086C3000000E52E3CE5DD5E04DD5605DD6E06DD6607CD3CB8F1F1C151D52E0A7ACDD989E6
|
||||
:2086E3007B2E0ACD228A7BD1C630E1E577C1C503C5D52E0A7ACD228A7BD1C1C63002E1E5B3
|
||||
:208703002323363AC1C5030303C5D52E0A7BCDD9897B2E0ACD228A7BD1C1C63002DD7EFE0B
|
||||
:20872300C6044FDD7EFFCE0047C52E0A7BCD228A7BC1C63002DDF9DDE1E1F1F1E92109001F
|
||||
:20874300E5210301E5119687216B82CD2E8A210700E521030CE511A087216B82CD2E8A2158
|
||||
:208763000600E5210315E511A887216B82CD2E8A210500E5210501E511AF87216B82CD2EB3
|
||||
:208783008A210300E521050CE511B587216B82CD2E8AC95061747465726E3A2300202052B6
|
||||
:2087A3006F773A2300202042504D3A0054696D653A00202F2000DDE5DD210000DD3921F8F3
|
||||
:2087C300FF39F93A31B86F3E0BCDD4803EA8CD088011D007210000CDD8813E2BCD2180DD4B
|
||||
:2087E30077FA3E2CCD2180DD77FB3E02F53321010039EB3E31CDA8803E2DCD3A80DD73FC8E
|
||||
:20880300DD72FDDD75FEDD74FF3A30B8FD212DB8FDB602FDB601FDB600200C3E36CD3A8001
|
||||
:20882300ED532DB8222FB8DD7EFAF5332132B8CDF985210200E521030AE51132B8216B8210
|
||||
:20884300CD2E8ADD7EFBF5332132B8CDF985210200E5210313E51132B8216B82CD2E8AD139
|
||||
:20886300D52134B8CD3686210300E521031BE51134B8216B82CD2E8A210000E52144ACE5D1
|
||||
:20888300DD5EFCDD56FDDD6EFEDD66FFCDC3B8F1E3D52137B8CD9386210500E5210507E5DF
|
||||
:2088A3001137B8216B82CD2E8A210000E52144ACE5ED5B2DB82A2FB8CDC3B8F1E3D521379F
|
||||
:2088C300B8CD9386210500E521050FE51137B8216B82CD2E8ADDF9DDE1C9CDA4853A00A80A
|
||||
:2088E300B7200DCD2882B73E0120023E023200A83A00A83DC26585322DB8322EB8322FB8D5
|
||||
:208903003230B8CD2C83B7200B3A09B8D699CA7885C38E85216B82CD648ACDC985CD40875D
|
||||
:20892300CDB98776CD718AB728273EA2CD0880111027210000CDD8813EE4CD088011102760
|
||||
:20894300210000CDD881216B82CDC28A3E02CD0380CDE58AB728273EA2CD08801110272136
|
||||
:208963000000CDD8813EE4CD0880111027210000CDD881216B82CDC28A3E04CD0380CDDB67
|
||||
:208983008AB7289F3EA2CD0880111027210000CDD8813EE4CD0880111027210000CDD88102
|
||||
:2089A300216B82CDC28AAFCD0380C32689ED7301B83208B8ED430AB8083207B82203B8ED5C
|
||||
:1689C3005305B83A08B8B7CADD883A08B8D603CA5285AFC3038045
|
||||
:03800000C3B08981
|
||||
:2089D9005D6F2600547BE680B220110610ED6A17933001833FED6A10F65FEBC906097D6C02
|
||||
:2089F9002600CB1DED6AED523001193F1710F5CB10505FC9DDE5DD210000DD39DD46043E87
|
||||
:208A190030CD0660DDE1E133E95D6FCDDB89EBC9CDDE89EBC9DDE5E5D5DD210000DD39DD19
|
||||
:208A3900460BDD4E0ADD5608DD5E09DD6E00DD6601D9DD6E02DD6603E5DDE1D93E03CD068D
|
||||
:188A590060D1E1DDE1E133333333E9DDE5E5DDE13E01CD0660DDE1C941
|
||||
:20B83C00DDE5DD210000DD39010000DD7E07073838DDCB0426DDCB0516DDCB0616DDCB0734
|
||||
:20B85C00167BDD96047ADD9E057DDD9E067CDD9E073012DDCB073EDDCB061EDDCB051EDD2B
|
||||
:20B87C00CB041E1804044818C27BDD96047ADD9E057DDD9E067CDD9E0738147BDD96045FF8
|
||||
:20B89C007ADD9E05577DDD9E066F7CDD9E0767DDCB073EDDCB061EDDCB051EDDCB041E79A2
|
||||
:20B8BC000DB720C5DDE1C9DDE5DD210000DD39F5F5AFDD77FCDD77FDDD77FEDD77FF062061
|
||||
:20B8DC007C07E6014FCB23CB12ED6ADDCBFC26DDCBFD16DDCBFE16DDCBFF16CB412804DD5E
|
||||
:20B8FC00CBFCC6DD7EFCDD9604DD7EFDDD9E05DD7EFEDD9E06DD7EFFDD9E073826DD7EFC8E
|
||||
:20B91C00DD9604DD77FCDD7EFDDD9E05DD77FDDD7EFEDD9E06DD77FEDD7EFFDD9E07DD77BF
|
||||
:0AB93C00FFCBC3109BDDF9DDE1C96C
|
||||
:208A7100DDE53E1ACD0660DDE1C9DDE5E5D5DD210000DD39DD460BDD4E0ADD5608DD5E099F
|
||||
:208A9100DD6E00DD6601D9DD6E02DD6603DD7E0CF5E5DDE1D93E03CD0660F108D9E5DDE109
|
||||
:208AB100D93E04CD0660D1E1DDE1E13333333333E9DDE5E5DDE13E02CD0660DDE1C9AF47C9
|
||||
:1E8AD1004FEDB121FFFFED42EBC9DDE53E17CD0660DDE1C9DDE53E19CD0660DDE1C9F4
|
||||
:00000001FF
|
||||
+11
@@ -0,0 +1,11 @@
|
||||
-mjwx
|
||||
-i obj/out.hex
|
||||
-b _CODE = 0x8003
|
||||
-b _DATA = 0xa800
|
||||
-k E:\SDCC\4.6.0\bin\..\lib\z80
|
||||
-l vgm_wc_api.lib
|
||||
-l z80
|
||||
obj/out.rel
|
||||
obj/crt0.rel
|
||||
|
||||
-e
|
||||
+1836
File diff suppressed because it is too large
Load Diff
+173
@@ -0,0 +1,173 @@
|
||||
ASxxxx Linker V05.50.4-SDLD, page 1.
|
||||
Hexadecimal [32-Bits]
|
||||
|
||||
Area Addr Size Decimal Bytes (Attributes)
|
||||
-------------------------------- ---- ---- ------- ----- ------------
|
||||
. .ABS. 00000000 00000000 = 0. bytes (ABS,CON)
|
||||
|
||||
Value Global Global Defined In Module
|
||||
----- -------------------------------- ------------------------
|
||||
00000000 .__.ABS. wc_key_pgup
|
||||
00000000 l__BSEG
|
||||
00000000 l__BSS
|
||||
00000000 l__CABS
|
||||
00000000 l__DABS
|
||||
00000000 l__GSFINAL
|
||||
00000000 l__GSINIT
|
||||
00000000 l__HEADER
|
||||
00000000 l__HEAP
|
||||
00000000 l__INITIALIZED
|
||||
00000000 l__INITIALIZER
|
||||
00000000 s__CABS
|
||||
00000000 s__DABS
|
||||
00000000 s__HEADER
|
||||
00000000 s__HEADER0
|
||||
00000003 l__HEADER0
|
||||
0000010A l__HOME
|
||||
00000AEC l__CODE
|
||||
0000103C l__DATA
|
||||
00008003 s__CODE
|
||||
0000A800 s__DATA
|
||||
0000B83C s__HOME
|
||||
0000B83C s__INITIALIZED
|
||||
0000B946 s__BSEG
|
||||
0000B946 s__BSS
|
||||
0000B946 s__GSFINAL
|
||||
0000B946 s__GSINIT
|
||||
0000B946 s__HEAP
|
||||
0000B946 s__INITIALIZER
|
||||
|
||||
ASxxxx Linker V05.50.4-SDLD, page 2.
|
||||
Hexadecimal [32-Bits]
|
||||
|
||||
Area Addr Size Decimal Bytes (Attributes)
|
||||
-------------------------------- ---- ---- ------- ----- ------------
|
||||
_CODE 00008003 00000AEC = 2796. bytes (REL,CON)
|
||||
|
||||
Value Global Global Defined In Module
|
||||
----- -------------------------------- ------------------------
|
||||
00008003 _wc_exit main
|
||||
00008008 _esp_cmd main
|
||||
00008021 _esp_rd_reg8 main
|
||||
0000803A _esp_rd_reg32 main
|
||||
000080A8 _esp_rd_regs main
|
||||
000080D4 _esp_wr_reg8 main
|
||||
000080EB _esp_wr_reg32 main
|
||||
0000811B _esp_wr_end main
|
||||
0000812A _esp_send_dma main
|
||||
0000818E _esp_rd_end main
|
||||
0000819D _esp_wait_status main
|
||||
000081D8 _esp_wait_busy main
|
||||
000081FA _esp_create_obj main
|
||||
00008228 _esp_init main
|
||||
00008235 _err_no_esp main
|
||||
00008247 _err_out_of_mem main
|
||||
00008259 _err_playback main
|
||||
0000826B _win_xm main
|
||||
0000827D _win_about main
|
||||
0000832C _play_xm main
|
||||
00008541 _wait_esc_key main
|
||||
00008549 _wait_frames main
|
||||
00008552 _about main
|
||||
00008565 _error_esp main
|
||||
00008578 _error_oom main
|
||||
0000858E _error_playback main
|
||||
000085A4 _copy_file_name main
|
||||
000085C9 _xm_draw_static_labels main
|
||||
000085F9 _put_hex2 main
|
||||
00008636 _put_dec3 main
|
||||
00008693 _put_time main
|
||||
00008740 _xm_draw_stats_labels main
|
||||
000087B9 _xm_update_info main
|
||||
000088DD _main_start main
|
||||
000089B0 _main main
|
||||
000089D9 __divuchar divunsigned
|
||||
000089DB __divu8 divunsigned
|
||||
000089DE __divu16 divunsigned
|
||||
000089DE __divuint divunsigned
|
||||
00008A0D _wc_load512 wc_load512
|
||||
00008A22 __moduchar modunsigned
|
||||
00008A29 __moduint modunsigned
|
||||
00008A2E _wc_prsrw wc_prsrw
|
||||
00008A64 _wc_prwow wc_prwow
|
||||
00008A71 _wc_key_pgdn wc_key_pgdn
|
||||
00008A7B _wc_prsrw_attr wc_prsrw_attr
|
||||
00008AC2 _wc_rresb wc_rresb
|
||||
00008ACF _strlen strlen
|
||||
00008ADB _wc_key_esc wc_key_esc
|
||||
00008AE5 _wc_key_pgup wc_key_pgup
|
||||
|
||||
ASxxxx Linker V05.50.4-SDLD, page 3.
|
||||
Hexadecimal [32-Bits]
|
||||
|
||||
Area Addr Size Decimal Bytes (Attributes)
|
||||
-------------------------------- ---- ---- ------- ----- ------------
|
||||
_DATA 0000A800 0000103C = 4156. bytes (REL,CON)
|
||||
|
||||
Value Global Global Defined In Module
|
||||
----- -------------------------------- ------------------------
|
||||
0000A800 _state_esp main
|
||||
0000A801 _fs_buf main
|
||||
0000B801 _ret_sp main
|
||||
0000B803 _filesize main
|
||||
0000B807 _file_ext main
|
||||
0000B808 _call_type main
|
||||
0000B809 _last_esp_status main
|
||||
0000B80A _p_file_name main
|
||||
0000B80C _file_name main
|
||||
0000B82D _total_samples main
|
||||
0000B831 _xm_handle main
|
||||
|
||||
ASxxxx Linker V05.50.4-SDLD, page 4.
|
||||
Hexadecimal [32-Bits]
|
||||
|
||||
Area Addr Size Decimal Bytes (Attributes)
|
||||
-------------------------------- ---- ---- ------- ----- ------------
|
||||
_HOME 0000B83C 0000010A = 266. bytes (REL,CON)
|
||||
|
||||
Value Global Global Defined In Module
|
||||
----- -------------------------------- ------------------------
|
||||
0000B83C __modulong _modulong
|
||||
0000B8C3 __divulong _divulong
|
||||
|
||||
ASxxxx Linker V05.50.4-SDLD, page 5.
|
||||
Hexadecimal [32-Bits]
|
||||
|
||||
Area Addr Size Decimal Bytes (Attributes)
|
||||
-------------------------------- ---- ---- ------- ----- ------------
|
||||
_HEADER0 00000000 00000003 = 3. bytes (ABS,CON)
|
||||
|
||||
Value Global Global Defined In Module
|
||||
----- -------------------------------- ------------------------
|
||||
ASxxxx Linker V05.50.4-SDLD, page 6.
|
||||
|
||||
Files Linked [ module(s) ]
|
||||
|
||||
obj/out.rel [ main ]
|
||||
obj/crt0.rel [ crt0 ]
|
||||
|
||||
|
||||
Libraries Linked [ object file ]
|
||||
|
||||
E:\SDCC\4.6.0\bin\..\lib\z80/z80.lib [ divunsigned.rel ]
|
||||
vgm_wc_api.lib [ wc_load512.rel ]
|
||||
E:\SDCC\4.6.0\bin\..\lib\z80/z80.lib [ modunsigned.rel ]
|
||||
vgm_wc_api.lib [ wc_prsrw.rel ]
|
||||
vgm_wc_api.lib [ wc_prwow.rel ]
|
||||
E:\SDCC\4.6.0\bin\..\lib\z80/z80.lib [ _modulong.rel ]
|
||||
E:\SDCC\4.6.0\bin\..\lib\z80/z80.lib [ _divulong.rel ]
|
||||
vgm_wc_api.lib [ wc_key_pgdn.rel ]
|
||||
vgm_wc_api.lib [ wc_prsrw_attr.rel ]
|
||||
vgm_wc_api.lib [ wc_rresb.rel ]
|
||||
E:\SDCC\4.6.0\bin\..\lib\z80/z80.lib [ strlen.rel ]
|
||||
vgm_wc_api.lib [ wc_key_esc.rel ]
|
||||
vgm_wc_api.lib [ wc_key_pgup.rel ]
|
||||
|
||||
ASxxxx Linker V05.50.4-SDLD, page 7.
|
||||
|
||||
User Base Address Definitions
|
||||
|
||||
_CODE = 0x8003
|
||||
_DATA = 0xa800
|
||||
|
||||
|
||||
+93
@@ -0,0 +1,93 @@
|
||||
DEF .__.ABS. 0x0
|
||||
DEF l__BSEG 0x0
|
||||
DEF l__BSS 0x0
|
||||
DEF l__CABS 0x0
|
||||
DEF l__DABS 0x0
|
||||
DEF l__GSFINAL 0x0
|
||||
DEF l__GSINIT 0x0
|
||||
DEF l__HEADER 0x0
|
||||
DEF l__HEAP 0x0
|
||||
DEF l__INITIALIZED 0x0
|
||||
DEF l__INITIALIZER 0x0
|
||||
DEF s__CABS 0x0
|
||||
DEF s__DABS 0x0
|
||||
DEF s__HEADER 0x0
|
||||
DEF s__HEADER0 0x0
|
||||
DEF l__HEADER0 0x3
|
||||
DEF l__HOME 0x10A
|
||||
DEF l__CODE 0xAEC
|
||||
DEF l__DATA 0x103C
|
||||
DEF s__CODE 0x8003
|
||||
DEF s__DATA 0xA800
|
||||
DEF s__HOME 0xB83C
|
||||
DEF s__INITIALIZED 0xB83C
|
||||
DEF s__BSEG 0xB946
|
||||
DEF s__BSS 0xB946
|
||||
DEF s__GSFINAL 0xB946
|
||||
DEF s__GSINIT 0xB946
|
||||
DEF s__HEAP 0xB946
|
||||
DEF s__INITIALIZER 0xB946
|
||||
DEF _wc_exit 0x8003
|
||||
DEF _esp_cmd 0x8008
|
||||
DEF _esp_rd_reg8 0x8021
|
||||
DEF _esp_rd_reg32 0x803A
|
||||
DEF _esp_rd_regs 0x80A8
|
||||
DEF _esp_wr_reg8 0x80D4
|
||||
DEF _esp_wr_reg32 0x80EB
|
||||
DEF _esp_wr_end 0x811B
|
||||
DEF _esp_send_dma 0x812A
|
||||
DEF _esp_rd_end 0x818E
|
||||
DEF _esp_wait_status 0x819D
|
||||
DEF _esp_wait_busy 0x81D8
|
||||
DEF _esp_create_obj 0x81FA
|
||||
DEF _esp_init 0x8228
|
||||
DEF _err_no_esp 0x8235
|
||||
DEF _err_out_of_mem 0x8247
|
||||
DEF _err_playback 0x8259
|
||||
DEF _win_xm 0x826B
|
||||
DEF _win_about 0x827D
|
||||
DEF _play_xm 0x832C
|
||||
DEF _wait_esc_key 0x8541
|
||||
DEF _wait_frames 0x8549
|
||||
DEF _about 0x8552
|
||||
DEF _error_esp 0x8565
|
||||
DEF _error_oom 0x8578
|
||||
DEF _error_playback 0x858E
|
||||
DEF _copy_file_name 0x85A4
|
||||
DEF _xm_draw_static_labels 0x85C9
|
||||
DEF _put_hex2 0x85F9
|
||||
DEF _put_dec3 0x8636
|
||||
DEF _put_time 0x8693
|
||||
DEF _xm_draw_stats_labels 0x8740
|
||||
DEF _xm_update_info 0x87B9
|
||||
DEF _main_start 0x88DD
|
||||
DEF _main 0x89B0
|
||||
DEF __divuchar 0x89D9
|
||||
DEF __divu8 0x89DB
|
||||
DEF __divu16 0x89DE
|
||||
DEF __divuint 0x89DE
|
||||
DEF _wc_load512 0x8A0D
|
||||
DEF __moduchar 0x8A22
|
||||
DEF __moduint 0x8A29
|
||||
DEF _wc_prsrw 0x8A2E
|
||||
DEF _wc_prwow 0x8A64
|
||||
DEF _wc_key_pgdn 0x8A71
|
||||
DEF _wc_prsrw_attr 0x8A7B
|
||||
DEF _wc_rresb 0x8AC2
|
||||
DEF _strlen 0x8ACF
|
||||
DEF _wc_key_esc 0x8ADB
|
||||
DEF _wc_key_pgup 0x8AE5
|
||||
DEF _state_esp 0xA800
|
||||
DEF _fs_buf 0xA801
|
||||
DEF _ret_sp 0xB801
|
||||
DEF _filesize 0xB803
|
||||
DEF _file_ext 0xB807
|
||||
DEF _call_type 0xB808
|
||||
DEF _last_esp_status 0xB809
|
||||
DEF _p_file_name 0xB80A
|
||||
DEF _file_name 0xB80C
|
||||
DEF _total_samples 0xB82D
|
||||
DEF _xm_handle 0xB831
|
||||
DEF __modulong 0xB83C
|
||||
DEF __divulong 0xB8C3
|
||||
LOAD obj/out.ihx
|
||||
+795
@@ -0,0 +1,795 @@
|
||||
XL4
|
||||
H 9 areas 3E global symbols
|
||||
M main
|
||||
O -mz80 sdcccall(1)
|
||||
S __divuint Ref00000000
|
||||
S _wc_load512 Ref00000000
|
||||
S __moduchar Ref00000000
|
||||
S __divuchar Ref00000000
|
||||
S _wc_prsrw Ref00000000
|
||||
S _wc_prwow Ref00000000
|
||||
S .__.ABS. Def00000000
|
||||
S __modulong Ref00000000
|
||||
S __divulong Ref00000000
|
||||
S _wc_key_pgdn Ref00000000
|
||||
S _wc_prsrw_attr Ref00000000
|
||||
S _wc_rresb Ref00000000
|
||||
S _strlen Ref00000000
|
||||
S _wc_key_esc Ref00000000
|
||||
S _wc_key_pgup Ref00000000
|
||||
S __moduint Ref00000000
|
||||
A _CODE size 9D6 flags 0 addr 0
|
||||
S _esp_send_dma Def00000127
|
||||
S _esp_wr_reg8 Def000000D1
|
||||
S _main Def000009AD
|
||||
S _esp_wr_end Def00000118
|
||||
S _put_time Def00000690
|
||||
S _xm_draw_static_labels Def000005C6
|
||||
S _err_no_esp Def00000232
|
||||
S _err_playback Def00000256
|
||||
S _put_hex2 Def000005F6
|
||||
S _main_start Def000008DA
|
||||
S _wc_exit Def00000000
|
||||
S _esp_create_obj Def000001F7
|
||||
S _wait_esc_key Def0000053E
|
||||
S _play_xm Def00000329
|
||||
S _copy_file_name Def000005A1
|
||||
S _esp_wait_busy Def000001D5
|
||||
S _esp_rd_reg32 Def00000037
|
||||
S _win_about Def0000027A
|
||||
S _esp_rd_regs Def000000A5
|
||||
S _error_playback Def0000058B
|
||||
S _error_esp Def00000562
|
||||
S _err_out_of_mem Def00000244
|
||||
S _win_xm Def00000268
|
||||
S _esp_rd_reg8 Def0000001E
|
||||
S _esp_wr_reg32 Def000000E8
|
||||
S _wait_frames Def00000546
|
||||
S _xm_draw_stats_labels Def0000073D
|
||||
S _xm_update_info Def000007B6
|
||||
S _esp_rd_end Def0000018B
|
||||
S _error_oom Def00000575
|
||||
S _put_dec3 Def00000633
|
||||
S _esp_cmd Def00000005
|
||||
S _esp_init Def00000225
|
||||
S _about Def0000054F
|
||||
S _esp_wait_status Def0000019A
|
||||
A _DATA size 103C flags 0 addr 0
|
||||
S _p_file_name Def0000100A
|
||||
S _xm_handle Def00001031
|
||||
S _fs_buf Def00000001
|
||||
S _total_samples Def0000102D
|
||||
S _call_type Def00001008
|
||||
S _state_esp Def00000000
|
||||
S _ret_sp Def00001001
|
||||
S _file_ext Def00001007
|
||||
S _filesize Def00001003
|
||||
S _last_esp_status Def00001009
|
||||
S _file_name Def0000100C
|
||||
A _INITIALIZED size 0 flags 0 addr 0
|
||||
A _DABS size 0 flags 8 addr 0
|
||||
A _HOME size 0 flags 0 addr 0
|
||||
A _GSINIT size 0 flags 0 addr 0
|
||||
A _GSFINAL size 0 flags 0 addr 0
|
||||
A _INITIALIZER size 0 flags 0 addr 0
|
||||
A _CABS size 0 flags 8 addr 0
|
||||
T 00 00 00 00
|
||||
R 00 00 01 00
|
||||
T 00 00 00 00
|
||||
R 00 00 01 00
|
||||
T 01 00 00 00
|
||||
R 00 00 01 00
|
||||
T 01 00 00 00
|
||||
R 00 00 01 00
|
||||
T 01 10 00 00
|
||||
R 00 00 01 00
|
||||
T 01 10 00 00
|
||||
R 00 00 01 00
|
||||
T 03 10 00 00
|
||||
R 00 00 01 00
|
||||
T 03 10 00 00
|
||||
R 00 00 01 00
|
||||
T 07 10 00 00
|
||||
R 00 00 01 00
|
||||
T 07 10 00 00
|
||||
R 00 00 01 00
|
||||
T 08 10 00 00
|
||||
R 00 00 01 00
|
||||
T 08 10 00 00
|
||||
R 00 00 01 00
|
||||
T 09 10 00 00
|
||||
R 00 00 01 00
|
||||
T 09 10 00 00
|
||||
R 00 00 01 00
|
||||
T 0A 10 00 00
|
||||
R 00 00 01 00
|
||||
T 0A 10 00 00
|
||||
R 00 00 01 00
|
||||
T 0C 10 00 00
|
||||
R 00 00 01 00
|
||||
T 0C 10 00 00
|
||||
R 00 00 01 00
|
||||
T 2D 10 00 00
|
||||
R 00 00 01 00
|
||||
T 2D 10 00 00
|
||||
R 00 00 01 00
|
||||
T 31 10 00 00
|
||||
R 00 00 01 00
|
||||
T 31 10 00 00
|
||||
R 00 00 01 00
|
||||
T 32 10 00 00
|
||||
R 00 00 01 00
|
||||
T 32 10 00 00
|
||||
R 00 00 01 00
|
||||
T 34 10 00 00
|
||||
R 00 00 01 00
|
||||
T 34 10 00 00
|
||||
R 00 00 01 00
|
||||
T 37 10 00 00
|
||||
R 00 00 01 00
|
||||
T 37 10 00 00
|
||||
R 00 00 01 00
|
||||
T 00 00 00 00
|
||||
R 00 00 00 00
|
||||
T 00 00 00 00 ED 7B 01 10 C9
|
||||
R 00 00 00 00 00 06 01 00
|
||||
T 05 00 00 00
|
||||
R 00 00 00 00
|
||||
T 05 00 00 00 4F 3E 13 D3 77 3E 01 D3 57 AF D3 57
|
||||
R 00 00 00 00
|
||||
T 11 00 00 00 DB 57 79 D3 57 AF D3 57 3E 03 D3 77
|
||||
R 00 00 00 00
|
||||
T 1D 00 00 00 C9
|
||||
R 00 00 00 00
|
||||
T 1E 00 00 00
|
||||
R 00 00 00 00
|
||||
T 1E 00 00 00 4F 3E 13 D3 77 3E 02 D3 57 79 D3 57
|
||||
R 00 00 00 00
|
||||
T 2A 00 00 00 DB 57 DB 57 DB 57 4F 3E 03 D3 77 79
|
||||
R 00 00 00 00
|
||||
T 36 00 00 00 C9
|
||||
R 00 00 00 00
|
||||
T 37 00 00 00
|
||||
R 00 00 00 00
|
||||
T 37 00 00 00 DD E5 DD 21 00 00 DD 39 F5 F5 4F 3E
|
||||
R 00 00 00 00
|
||||
T 43 00 00 00 13 D3 77 3E 02 D3 57 79 D3 57 DB 57
|
||||
R 00 00 00 00
|
||||
T 4F 00 00 00 DB 57 DB 57 4F DB 57 57 59 DB 57 DD
|
||||
R 00 00 00 00
|
||||
T 5B 00 00 00 77 FC AF DD 77 FD DD 77 FE DD 77 FF
|
||||
R 00 00 00 00
|
||||
T 67 00 00 00 DD 7E FC DD 77 FE AF DD 77 FF DD 77
|
||||
R 00 00 00 00
|
||||
T 73 00 00 00 FC DD 77 FD DD 6E FE DB 57 DD 77 FC
|
||||
R 00 00 00 00
|
||||
T 7F 00 00 00 AF DD 77 FD DD 77 FE DD 77 FF DD 7E
|
||||
R 00 00 00 00
|
||||
T 8B 00 00 00 FC DD 77 FF AF DD 77 FC DD 77 FD DD
|
||||
R 00 00 00 00
|
||||
T 97 00 00 00 77 FE DD 66 FF 3E 03 D3 77 DD F9 DD
|
||||
R 00 00 00 00
|
||||
T A3 00 00 00 E1 C9
|
||||
R 00 00 00 00
|
||||
T A5 00 00 00
|
||||
R 00 00 00 00
|
||||
T A5 00 00 00 4F 3E 13 D3 77 3E 02 D3 57 79 D3 57
|
||||
R 00 00 00 00
|
||||
T B1 00 00 00 DB 57 DB 57 FD 21 02 00 FD 39 FD 4E
|
||||
R 00 00 00 00
|
||||
T BD 00 00 00 00
|
||||
R 00 00 00 00
|
||||
T BE 00 00 00
|
||||
R 00 00 00 00
|
||||
T BE 00 00 00 79 0D B7 28 07 DB 57 12 13 C3 BE 00
|
||||
R 00 00 00 00 00 0E 00 00
|
||||
T CA 00 00 00
|
||||
R 00 00 00 00
|
||||
T CA 00 00 00 3E 03 D3 77 E1 33 E9
|
||||
R 00 00 00 00
|
||||
T D1 00 00 00
|
||||
R 00 00 00 00
|
||||
T D1 00 00 00 47 4D 3E 13 D3 77 3E 01 D3 57 78 D3
|
||||
R 00 00 00 00
|
||||
T DD 00 00 00 57 DB 57 79 D3 57 3E 03 D3 77 C9
|
||||
R 00 00 00 00
|
||||
T E8 00 00 00
|
||||
R 00 00 00 00
|
||||
T E8 00 00 00 4F 3E 13 D3 77 3E 01 D3 57 79 D3 57
|
||||
R 00 00 00 00
|
||||
T F4 00 00 00 DB 57 FD 21 02 00 FD 39 FD 7E 00 D3
|
||||
R 00 00 00 00
|
||||
T 00 01 00 00 57 FD 7E 01 D3 57 FD 7E 02 D3 57 FD
|
||||
R 00 00 00 00
|
||||
T 0C 01 00 00 7E 03 D3 57 3E 03 D3 77 E1 F1 F1 E9
|
||||
R 00 00 00 00
|
||||
T 18 01 00 00
|
||||
R 00 00 00 00
|
||||
T 18 01 00 00 3E 13 D3 77 3E 07 D3 57 DB 57 3E 03
|
||||
R 00 00 00 00
|
||||
T 24 01 00 00 D3 77 C9
|
||||
R 00 00 00 00
|
||||
T 27 01 00 00
|
||||
R 00 00 00 00
|
||||
T 27 01 00 00 7D 01 AF 1A ED 79 7C 01 AF 1B ED 79
|
||||
R 00 00 00 00
|
||||
T 33 01 00 00 FD 21 02 00 FD 39 FD 7E 00 01 AF 1C
|
||||
R 00 00 00 00
|
||||
T 3F 01 00 00 ED 79 FD 7E 01 FD 4E 02 FD 23 CB 39
|
||||
R 00 00 00 00
|
||||
T 4B 01 00 00 CB 1F 3D 01 AF 26 ED 79 FD 7E 02 3D
|
||||
R 00 00 00 00
|
||||
T 57 01 00 00 01 AF 28 ED 79 3E 13 D3 77 3E 03 D3
|
||||
R 00 00 00 00
|
||||
T 63 01 00 00 57 DB 57 DB 57 3E 82 01 AF 27 ED 79
|
||||
R 00 00 00 00
|
||||
T 6F 01 00 00
|
||||
R 00 00 00 00
|
||||
T 6F 01 00 00 3E 27 DB AF 07 38 F9 3E 03 D3 77 CD
|
||||
R 00 00 00 00
|
||||
T 7B 01 00 00 18 01 11 60 EA 21 00 00 CD D5 01 E1
|
||||
R 00 00 00 00 00 04 00 00 00 0D 00 00
|
||||
T 87 01 00 00 F1 F1 33 E9
|
||||
R 00 00 00 00
|
||||
T 8B 01 00 00
|
||||
R 00 00 00 00
|
||||
T 8B 01 00 00 3E 13 D3 77 3E 08 D3 57 DB 57 3E 03
|
||||
R 00 00 00 00
|
||||
T 97 01 00 00 D3 77 C9
|
||||
R 00 00 00 00
|
||||
T 9A 01 00 00
|
||||
R 00 00 00 00
|
||||
T 9A 01 00 00 DD E5 DD 21 00 00 DD 39 4F DD 5E 04
|
||||
R 00 00 00 00
|
||||
T A6 01 00 00 DD 56 05 DD 6E 06 DD 66 07
|
||||
R 00 00 00 00
|
||||
T AF 01 00 00
|
||||
R 00 00 00 00
|
||||
T AF 01 00 00 7B C6 FF 5F 7A CE FF 57 7D CE FF 6F
|
||||
R 00 00 00 00
|
||||
T BB 01 00 00 7C CE FF 67 B5 B2 B3 28 0E E5 C5 D5
|
||||
R 00 00 00 00
|
||||
T C7 01 00 00 3E 01 CD 1E 00 D1 C1 E1 91 20 DD
|
||||
R 00 00 00 00 00 07 00 00
|
||||
T D2 01 00 00
|
||||
R 00 00 00 00
|
||||
T D2 01 00 00 DD E1 C9
|
||||
R 00 00 00 00
|
||||
T D5 01 00 00
|
||||
R 00 00 00 00
|
||||
T D5 01 00 00
|
||||
R 00 00 00 00
|
||||
T D5 01 00 00 7B C6 FF 5F 7A CE FF 57 7D CE FF 6F
|
||||
R 00 00 00 00
|
||||
T E1 01 00 00 7C CE FF 67 B5 B2 B3 C8 E5 D5 3E 01
|
||||
R 00 00 00 00
|
||||
T ED 01 00 00 CD 1E 00 D1 E1 FE 02 28 DF C9
|
||||
R 00 00 00 00 00 05 00 00
|
||||
T F7 01 00 00
|
||||
R 00 00 00 00
|
||||
T F7 01 00 00 E5 D5 3E 03 CD E8 00 FD 21 02 00 FD
|
||||
R 00 00 00 00 00 09 00 00
|
||||
T 03 02 00 00 39 FD 6E 00 3E 02 CD D1 00 3E E0 CD
|
||||
R 00 00 00 00 00 0B 00 00
|
||||
T 0F 02 00 00 05 00 11 20 4E 21 00 00 CD D5 01 3E
|
||||
R 00 00 00 00 00 04 00 00 00 0D 00 00
|
||||
T 1B 02 00 00 0B CD 1E 00 5F 16 00 E1 33 E9
|
||||
R 00 00 00 00 00 06 00 00
|
||||
T 25 02 00 00
|
||||
R 00 00 00 00
|
||||
T 25 02 00 00 AF CD 05 00 CD 8B 01 CD 18 01 3E 01
|
||||
R 00 00 00 00 00 06 00 00 00 09 00 00 00 0C 00 00
|
||||
T 31 02 00 00 C9
|
||||
R 00 00 00 00
|
||||
T 32 02 00 00
|
||||
R 00 00 00 00
|
||||
T 32 02 00 00 01 00 18 0A 20 05 2F 00 00 00 00 00
|
||||
R 00 00 00 00
|
||||
T 3E 02 00 00 8C 02 96 02 97 02
|
||||
R 00 00 00 00 00 04 00 00 00 06 00 00 00 08 00 00
|
||||
T 44 02 00 00
|
||||
R 00 00 00 00
|
||||
T 44 02 00 00 01 00 FF FF 20 05 2F 00 00 00 00 00
|
||||
R 00 00 00 00
|
||||
T 50 02 00 00 8C 02 96 02 AD 02
|
||||
R 00 00 00 00 00 04 00 00 00 06 00 00 00 08 00 00
|
||||
T 56 02 00 00
|
||||
R 00 00 00 00
|
||||
T 56 02 00 00 01 00 FF FF 20 05 2F 00 00 00 00 00
|
||||
R 00 00 00 00
|
||||
T 62 02 00 00 8C 02 96 02 CD 02
|
||||
R 00 00 00 00 00 04 00 00 00 06 00 00 00 08 00 00
|
||||
T 68 02 00 00
|
||||
R 00 00 00 00
|
||||
T 68 02 00 00 81 00 19 0A 28 0B 4F 00 00 00 00 00
|
||||
R 00 00 00 00
|
||||
T 74 02 00 00 EB 02 96 02 00 03
|
||||
R 00 00 00 00 00 04 00 00 00 06 00 00 00 08 00 00
|
||||
T 7A 02 00 00
|
||||
R 00 00 00 00
|
||||
T 7A 02 00 00 01 00 16 0A 24 05 4F 00 00 00 00 00
|
||||
R 00 00 00 00
|
||||
T 86 02 00 00 0E 03 96 02 17 03
|
||||
R 00 00 00 00 00 04 00 00 00 06 00 00 00 08 00 00
|
||||
T 8C 02 00 00
|
||||
R 00 00 00 00
|
||||
T 8C 02 00 00 0E 20 45 72 72 6F 72 21 20 00
|
||||
R 00 00 00 00
|
||||
T 96 02 00 00
|
||||
R 00 00 00 00
|
||||
T 96 02 00 00 00
|
||||
R 00 00 00 00
|
||||
T 97 02 00 00
|
||||
R 00 00 00 00
|
||||
T 97 02 00 00 0E 0C 01 4E 6F 20 45 53 50 33 32 20
|
||||
R 00 00 00 00
|
||||
T A3 02 00 00 64 65 74 65 63 74 65 64 21 00
|
||||
R 00 00 00 00
|
||||
T AD 02 00 00
|
||||
R 00 00 00 00
|
||||
T AD 02 00 00 0E 0C 01 4F 75 74 20 6F 66 20 6D 65
|
||||
R 00 00 00 00
|
||||
T B9 02 00 00 6D 6F 72 79 20 28 66 69 6C 65 20 74
|
||||
R 00 00 00 00
|
||||
T C5 02 00 00 6F 6F 20 62 69 67 29 00
|
||||
R 00 00 00 00
|
||||
T CD 02 00 00
|
||||
R 00 00 00 00
|
||||
T CD 02 00 00 0E 0C 01 50 6C 61 79 62 61 63 6B 20
|
||||
R 00 00 00 00
|
||||
T D9 02 00 00 65 72 72 6F 72 20 28 62 61 64 20 66
|
||||
R 00 00 00 00
|
||||
T E5 02 00 00 69 6C 65 3F 29 00
|
||||
R 00 00 00 00
|
||||
T EB 02 00 00
|
||||
R 00 00 00 00
|
||||
T EB 02 00 00 0E 20 58 4D 2F 58 4D 5A 2F 53 33 4D
|
||||
R 00 00 00 00
|
||||
T F7 02 00 00 20 50 6C 61 79 65 72 20 00
|
||||
R 00 00 00 00
|
||||
T 00 03 00 00
|
||||
R 00 00 00 00
|
||||
T 00 03 00 00 0E 0C 01 50 6C 61 79 69 6E 67 2E 2E
|
||||
R 00 00 00 00
|
||||
T 0C 03 00 00 2E 00
|
||||
R 00 00 00 00
|
||||
T 0E 03 00 00
|
||||
R 00 00 00 00
|
||||
T 0E 03 00 00 0E 20 41 62 6F 75 74 20 00
|
||||
R 00 00 00 00
|
||||
T 17 03 00 00
|
||||
R 00 00 00 00
|
||||
T 17 03 00 00 0E 0C 01 58 4D 20 50 6C 61 79 65 72
|
||||
R 00 00 00 00
|
||||
T 23 03 00 00 20 76 31 2E 30 00
|
||||
R 00 00 00 00
|
||||
T 29 03 00 00
|
||||
R 00 00 00 00
|
||||
T 29 03 00 00 DD E5 DD 21 00 00 DD 39 21 EC FF 39
|
||||
R 00 00 00 00
|
||||
T 35 03 00 00 F9 3E A2 CD 05 00 11 10 27 21 00 00
|
||||
R 00 00 00 00 00 08 00 00
|
||||
T 41 03 00 00 CD D5 01 3E E4 CD 05 00 11 10 27 21
|
||||
R 00 00 00 00 00 05 00 00 00 0A 00 00
|
||||
T 4D 03 00 00 00 00 CD D5 01 3A 07 10 3D 28 0A 3A
|
||||
R 00 00 00 00 00 07 00 00 00 0A 01 00
|
||||
T 59 03 00 00 07 10 D6 02 28 08 C3 6C 03
|
||||
R 00 00 00 00 00 04 01 00 00 0B 00 00
|
||||
T 62 03 00 00
|
||||
R 00 00 00 00
|
||||
T 62 03 00 00 3E 08 C3 6E 03
|
||||
R 00 00 00 00 00 07 00 00
|
||||
T 67 03 00 00
|
||||
R 00 00 00 00
|
||||
T 67 03 00 00 3E 0C C3 6E 03
|
||||
R 00 00 00 00 00 07 00 00
|
||||
T 6C 03 00 00
|
||||
R 00 00 00 00
|
||||
T 6C 03 00 00 3E 05
|
||||
R 00 00 00 00
|
||||
T 6E 03 00 00
|
||||
R 00 00 00 00
|
||||
T 6E 03 00 00 F5 33 ED 5B 03 10 2A 05 10 CD F7 01
|
||||
R 00 00 00 00 00 08 01 00 00 0B 01 00 00 0E 00 00
|
||||
T 7A 03 00 00 21 31 10 73 3E 01 CD 1E 00 32 09 10
|
||||
R 00 00 00 00 00 05 01 00 00 0B 00 00 00 0E 01 00
|
||||
T 86 03 00 00 3A 09 10 3D 28 04 AF C3 39 05
|
||||
R 00 00 00 00 00 05 01 00 00 0C 00 00
|
||||
T 90 03 00 00
|
||||
R 00 00 00 00
|
||||
T 90 03 00 00 21 0C 00 39 EB 21 03 10 01 04 00 ED
|
||||
R 00 00 00 00 00 0A 01 00
|
||||
T 9C 03 00 00 B0 AF DD 77 FC DD 77 FD DD 77 FE DD
|
||||
R 00 00 00 00
|
||||
T A8 03 00 00 77 FF
|
||||
R 00 00 00 00
|
||||
T AA 03 00 00
|
||||
R 00 00 00 00
|
||||
T AA 03 00 00 DD 7E FB DD B6 FA DD B6 F9 DD B6 F8
|
||||
R 00 00 00 00
|
||||
T B6 03 00 00 CA C6 04 DD 7E F9 D6 10 DD 7E FA DE
|
||||
R 00 00 00 00 00 05 00 00
|
||||
T C2 03 00 00 00 DD 7E FB DE 00 30 11 21 00 00 39
|
||||
R 00 00 00 00
|
||||
T CE 03 00 00 EB 21 0C 00 39 01 04 00 ED B0 C3
|
||||
R 00 00 00 00
|
||||
T D9 03 00 00 EA 03
|
||||
R 00 00 00 00 00 04 00 00
|
||||
T DB 03 00 00
|
||||
R 00 00 00 00
|
||||
T DB 03 00 00 DD 36 EC 00 DD 36 ED 10 AF DD 77 EE
|
||||
R 00 00 00 00
|
||||
T E7 03 00 00 DD 77 EF
|
||||
R 00 00 00 00
|
||||
T EA 03 00 00
|
||||
R 00 00 00 00
|
||||
T EA 03 00 00 21 05 00 39 EB 21 00 00 39 01 04 00
|
||||
R 00 00 00 00
|
||||
T F6 03 00 00 ED B0 DD 7E F1 C6 FF DD 7E F2 CE 01
|
||||
R 00 00 00 00
|
||||
T 02 04 00 00 47 3E 00 CE 00 5F 3E 00 CE 00 57 48
|
||||
R 00 00 00 00
|
||||
T 0E 04 00 00 43 5A CB 3B CB 18 CB 19 DD 71 F7 79
|
||||
R 00 00 00 00
|
||||
T 1A 04 00 00 F5 33 21 01 00 CD 00 00 21 00 00 E5
|
||||
R 00 00 00 00 00 07 01 00 02 0A 01 00
|
||||
T 26 04 00 00 DD 6E F1 DD 66 F2 E5 3E 03 CD E8 00
|
||||
R 00 00 00 00 00 0E 00 00
|
||||
T 32 04 00 00 DD 6E FE DD 66 FF E5 DD 6E FC DD 66
|
||||
R 00 00 00 00
|
||||
T 3E 04 00 00 FD E5 3E 07 CD E8 00 3E E1 CD 05 00
|
||||
R 00 00 00 00 00 09 00 00 00 0E 00 00
|
||||
T 4A 04 00 00 21 00 00 E5 21 D0 07 E5 3E 03 CD
|
||||
R 00 00 00 00
|
||||
T 55 04 00 00 9A 01 F1 F1 DD 7E F7 DD 77 F5 DD 36
|
||||
R 00 00 00 00 00 04 00 00
|
||||
T 61 04 00 00 F6 00 3A 02 60 DD 77 F7 DD 6E F5 26
|
||||
R 00 00 00 00
|
||||
T 6D 04 00 00 00 E5 21 00 02 E5 DD 7E F7 F5 33 21
|
||||
R 00 00 00 00
|
||||
T 79 04 00 00 01 00 CD 27 01 DD 5E F1 DD 56 F2 DD
|
||||
R 00 00 00 00 00 04 01 00 00 07 00 00
|
||||
T 85 04 00 00 6E FC DD 66 FD 19 DD 75 FC DD 74 FD
|
||||
R 00 00 00 00
|
||||
T 91 04 00 00 DD 7E FE DD 8E F3 DD 77 FE 30 03 DD
|
||||
R 00 00 00 00
|
||||
T 9D 04 00 00 34 FF
|
||||
R 00 00 00 00
|
||||
T 9F 04 00 00
|
||||
R 00 00 00 00
|
||||
T 9F 04 00 00 DD 7E F8 DD 96 F1 DD 77 F8 DD 7E F9
|
||||
R 00 00 00 00
|
||||
T AB 04 00 00 DD 9E F2 DD 77 F9 DD 7E FA DD 9E F3
|
||||
R 00 00 00 00
|
||||
T B7 04 00 00 DD 77 FA DD 7E FB DD 9E F4 DD 77 FB
|
||||
R 00 00 00 00
|
||||
T C3 04 00 00 C3 AA 03
|
||||
R 00 00 00 00 00 05 00 00
|
||||
T C6 04 00 00
|
||||
R 00 00 00 00
|
||||
T C6 04 00 00 3A 07 10 3D 20 3D 3A 31 10 6F 3E 0B
|
||||
R 00 00 00 00 00 05 01 00 00 0B 01 00
|
||||
T D2 04 00 00 CD D1 00 2E 05 3E 02 CD D1 00 2A
|
||||
R 00 00 00 00 00 05 00 00 00 0C 00 00
|
||||
T DD 04 00 00 05 10 E5 2A 03 10 E5 3E 03 CD E8 00
|
||||
R 00 00 00 00 00 04 01 00 00 08 01 00 00 0E 00 00
|
||||
T E9 04 00 00 3E F2 CD 05 00 11 10 27 21 00 00 CD
|
||||
R 00 00 00 00 00 07 00 00
|
||||
T F5 04 00 00 D5 01 3E 01 CD 1E 00 32 09 10 3A
|
||||
R 00 00 00 00 00 04 00 00 00 09 00 00 00 0C 01 00
|
||||
T 00 05 00 00 09 10 3D 28 04 AF C3 39 05
|
||||
R 00 00 00 00 00 04 01 00 00 0B 00 00
|
||||
T 09 05 00 00
|
||||
R 00 00 00 00
|
||||
T 09 05 00 00 3E A0 CD 05 00 11 10 27 21 00 00 CD
|
||||
R 00 00 00 00 00 07 00 00
|
||||
T 15 05 00 00 D5 01 3E 01 CD 1E 00 32 09 10 3A
|
||||
R 00 00 00 00 00 04 00 00 00 09 00 00 00 0C 01 00
|
||||
T 20 05 00 00 09 10 3D 28 04 AF C3 39 05
|
||||
R 00 00 00 00 00 04 01 00 00 0B 00 00
|
||||
T 29 05 00 00
|
||||
R 00 00 00 00
|
||||
T 29 05 00 00 3E A1 CD 05 00 11 10 27 21 00 00 CD
|
||||
R 00 00 00 00 00 07 00 00
|
||||
T 35 05 00 00 D5 01 3E 01
|
||||
R 00 00 00 00 00 04 00 00
|
||||
T 39 05 00 00
|
||||
R 00 00 00 00
|
||||
T 39 05 00 00 DD F9 DD E1 C9
|
||||
R 00 00 00 00
|
||||
T 3E 05 00 00
|
||||
R 00 00 00 00
|
||||
T 3E 05 00 00
|
||||
R 00 00 00 00
|
||||
T 3E 05 00 00 76 CD 00 00 B7 28 F9 C9
|
||||
R 00 00 00 00 02 06 0D 00
|
||||
T 46 05 00 00
|
||||
R 00 00 00 00
|
||||
T 46 05 00 00 4F
|
||||
R 00 00 00 00
|
||||
T 47 05 00 00
|
||||
R 00 00 00 00
|
||||
T 47 05 00 00 79 0D B7 C8 76 C3 47 05
|
||||
R 00 00 00 00 00 0A 00 00
|
||||
T 4F 05 00 00
|
||||
R 00 00 00 00
|
||||
T 4F 05 00 00 21 7A 02 CD 00 00 CD 3E 05 21
|
||||
R 00 00 00 00 00 05 00 00 02 08 05 00 00 0B 00 00
|
||||
T 59 05 00 00 7A 02 CD 00 00 AF C3 00 00
|
||||
R 00 00 00 00 00 04 00 00 02 07 0B 00 00 0B 00 00
|
||||
T 62 05 00 00
|
||||
R 00 00 00 00
|
||||
T 62 05 00 00 21 32 02 CD 00 00 CD 3E 05 21
|
||||
R 00 00 00 00 00 05 00 00 02 08 05 00 00 0B 00 00
|
||||
T 6C 05 00 00 32 02 CD 00 00 AF C3 00 00
|
||||
R 00 00 00 00 00 04 00 00 02 07 0B 00 00 0B 00 00
|
||||
T 75 05 00 00
|
||||
R 00 00 00 00
|
||||
T 75 05 00 00 21 44 02 CD 00 00 3E 32 CD 46 05 21
|
||||
R 00 00 00 00 00 05 00 00 02 08 05 00 00 0D 00 00
|
||||
T 81 05 00 00 44 02 CD 00 00 3E 02 C3 00 00
|
||||
R 00 00 00 00 00 04 00 00 02 07 0B 00 00 0C 00 00
|
||||
T 8B 05 00 00
|
||||
R 00 00 00 00
|
||||
T 8B 05 00 00 21 56 02 CD 00 00 3E 32 CD 46 05 21
|
||||
R 00 00 00 00 00 05 00 00 02 08 05 00 00 0D 00 00
|
||||
T 97 05 00 00 56 02 CD 00 00 3E 02 C3 00 00
|
||||
R 00 00 00 00 00 04 00 00 02 07 0B 00 00 0C 00 00
|
||||
T A1 05 00 00
|
||||
R 00 00 00 00
|
||||
T A1 05 00 00 ED 4B 0A 10 1E 00
|
||||
R 00 00 00 00 00 06 01 00
|
||||
T A7 05 00 00
|
||||
R 00 00 00 00
|
||||
T A7 05 00 00 6B 26 00 09 56 3E 0C 10 00 00 83 6F
|
||||
R 00 00 00 00 09 0A 01 00
|
||||
T B0 05 00 00 3E 0C 10 00 00 CE 00 67 7A B7 28 0A
|
||||
R 00 00 00 00 89 05 01 00
|
||||
T B9 05 00 00 7B D6 20 30 05 72 1C C3 A7 05
|
||||
R 00 00 00 00 00 0C 00 00
|
||||
T C3 05 00 00
|
||||
R 00 00 00 00
|
||||
T C3 05 00 00 36 00 C9
|
||||
R 00 00 00 00
|
||||
T C6 05 00 00
|
||||
R 00 00 00 00
|
||||
T C6 05 00 00 3E 45 F5 33 21 05 00 E5 21 01 01 E5
|
||||
R 00 00 00 00
|
||||
T D2 05 00 00 11 F0 05 21 68 02 CD 00 00 21
|
||||
R 00 00 00 00 00 05 00 00 00 08 00 00 02 0B 0A 00
|
||||
T DC 05 00 00 0C 10 CD 00 00 D5 21 01 07 E5 11
|
||||
R 00 00 00 00 00 04 01 00 02 07 0C 00
|
||||
T E7 05 00 00 0C 10 21 68 02 CD 00 00 C9
|
||||
R 00 00 00 00 00 04 01 00 00 07 00 00 02 0A 04 00
|
||||
T F0 05 00 00
|
||||
R 00 00 00 00
|
||||
T F0 05 00 00 46 69 6C 65 3A 00
|
||||
R 00 00 00 00
|
||||
T F6 05 00 00
|
||||
R 00 00 00 00
|
||||
T F6 05 00 00 DD E5 DD 21 00 00 DD 39 EB 01 22 06
|
||||
R 00 00 00 00 00 0E 00 00
|
||||
T 02 06 00 00 DD 7E 04 07 07 07 07 E6 0F 6F 26 00
|
||||
R 00 00 00 00
|
||||
T 0E 06 00 00 09 7E 12 13 DD 7E 04 E6 0F 6F 26 00
|
||||
R 00 00 00 00
|
||||
T 1A 06 00 00 09 7E 12 DD E1 E1 33 E9
|
||||
R 00 00 00 00
|
||||
T 22 06 00 00
|
||||
R 00 00 00 00
|
||||
T 22 06 00 00 30 31 32 33 34 35 36 37 38 39 41 42
|
||||
R 00 00 00 00
|
||||
T 2E 06 00 00 43 44 45 46 00
|
||||
R 00 00 00 00
|
||||
T 33 06 00 00
|
||||
R 00 00 00 00
|
||||
T 33 06 00 00 DD E5 DD 21 00 00 DD 39 F5 4D 44 E1
|
||||
R 00 00 00 00
|
||||
T 3F 06 00 00 D5 C5 11 64 00 DD 6E FE DD 66 FF CD
|
||||
R 00 00 00 00
|
||||
T 4B 06 00 00 00 00 EB 11 0A 00 CD 00 00 C1 7B C6
|
||||
R 00 00 00 00 02 04 00 00 02 0B 0F 00
|
||||
T 57 06 00 00 30 02 69 60 23 E5 C5 11 0A 00 DD 6E
|
||||
R 00 00 00 00
|
||||
T 63 06 00 00 FE DD 66 FF CD 00 00 EB 11 0A 00 CD
|
||||
R 00 00 00 00 02 09 00 00
|
||||
T 6F 06 00 00 00 00 C1 E1 7B C6 30 77 03 03 C5 11
|
||||
R 00 00 00 00 02 04 0F 00
|
||||
T 7B 06 00 00 0A 00 DD 6E FE DD 66 FF CD 00 00 C1
|
||||
R 00 00 00 00 02 0D 0F 00
|
||||
T 87 06 00 00 7B C6 30 02 DD F9 DD E1 C9
|
||||
R 00 00 00 00
|
||||
T 90 06 00 00
|
||||
R 00 00 00 00
|
||||
T 90 06 00 00 DD E5 DD 21 00 00 DD 39 E5 21 00 00
|
||||
R 00 00 00 00
|
||||
T 9C 06 00 00 E5 2E 3C E5 DD 5E 04 DD 56 05 DD 6E
|
||||
R 00 00 00 00
|
||||
T A8 06 00 00 06 DD 66 07 CD 00 00 F1 F1 01 00 00
|
||||
R 00 00 00 00 02 09 08 00
|
||||
T B4 06 00 00 C5 0E 64 C5 CD 00 00 F1 F1 4B C5 21
|
||||
R 00 00 00 00 02 09 07 00
|
||||
T C0 06 00 00 00 00 E5 2E 3C E5 DD 5E 04 DD 56 05
|
||||
R 00 00 00 00
|
||||
T CC 06 00 00 DD 6E 06 DD 66 07 CD 00 00 F1 F1 C1
|
||||
R 00 00 00 00 02 0B 07 00
|
||||
T D8 06 00 00 51 D5 2E 0A 7A CD 00 00 7B 2E 0A CD
|
||||
R 00 00 00 00 02 0A 03 00
|
||||
T E4 06 00 00 00 00 7B D1 C6 30 E1 E5 77 C1 C5 03
|
||||
R 00 00 00 00 02 04 02 00
|
||||
T F0 06 00 00 C5 D5 2E 0A 7A CD 00 00 7B D1 C1 C6
|
||||
R 00 00 00 00 02 0A 02 00
|
||||
T FC 06 00 00 30 02 E1 E5 23 23 36 3A C1 C5 03 03
|
||||
R 00 00 00 00
|
||||
T 08 07 00 00 03 C5 D5 2E 0A 7B CD 00 00 7B 2E 0A
|
||||
R 00 00 00 00 02 0B 03 00
|
||||
T 14 07 00 00 CD 00 00 7B D1 C1 C6 30 02 DD 7E FE
|
||||
R 00 00 00 00 02 05 02 00
|
||||
T 20 07 00 00 C6 04 4F DD 7E FF CE 00 47 C5 2E 0A
|
||||
R 00 00 00 00
|
||||
T 2C 07 00 00 7B CD 00 00 7B C1 C6 30 02 DD F9 DD
|
||||
R 00 00 00 00 02 06 02 00
|
||||
T 38 07 00 00 E1 E1 F1 F1 E9
|
||||
R 00 00 00 00
|
||||
T 3D 07 00 00
|
||||
R 00 00 00 00
|
||||
T 3D 07 00 00 21 09 00 E5 21 03 01 E5 11 93 07 21
|
||||
R 00 00 00 00 00 0D 00 00
|
||||
T 49 07 00 00 68 02 CD 00 00 21 07 00 E5 21 03 0C
|
||||
R 00 00 00 00 00 04 00 00 02 07 04 00
|
||||
T 55 07 00 00 E5 11 9D 07 21 68 02 CD 00 00 21
|
||||
R 00 00 00 00 00 06 00 00 00 09 00 00 02 0C 04 00
|
||||
T 60 07 00 00 06 00 E5 21 03 15 E5 11 A5 07 21
|
||||
R 00 00 00 00 00 0C 00 00
|
||||
T 6B 07 00 00 68 02 CD 00 00 21 05 00 E5 21 05 01
|
||||
R 00 00 00 00 00 04 00 00 02 07 04 00
|
||||
T 77 07 00 00 E5 11 AC 07 21 68 02 CD 00 00 21
|
||||
R 00 00 00 00 00 06 00 00 00 09 00 00 02 0C 04 00
|
||||
T 82 07 00 00 03 00 E5 21 05 0C E5 11 B2 07 21
|
||||
R 00 00 00 00 00 0C 00 00
|
||||
T 8D 07 00 00 68 02 CD 00 00 C9
|
||||
R 00 00 00 00 00 04 00 00 02 07 04 00
|
||||
T 93 07 00 00
|
||||
R 00 00 00 00
|
||||
T 93 07 00 00 50 61 74 74 65 72 6E 3A 23 00
|
||||
R 00 00 00 00
|
||||
T 9D 07 00 00
|
||||
R 00 00 00 00
|
||||
T 9D 07 00 00 20 20 52 6F 77 3A 23 00
|
||||
R 00 00 00 00
|
||||
T A5 07 00 00
|
||||
R 00 00 00 00
|
||||
T A5 07 00 00 20 20 42 50 4D 3A 00
|
||||
R 00 00 00 00
|
||||
T AC 07 00 00
|
||||
R 00 00 00 00
|
||||
T AC 07 00 00 54 69 6D 65 3A 00
|
||||
R 00 00 00 00
|
||||
T B2 07 00 00
|
||||
R 00 00 00 00
|
||||
T B2 07 00 00 20 2F 20 00
|
||||
R 00 00 00 00
|
||||
T B6 07 00 00
|
||||
R 00 00 00 00
|
||||
T B6 07 00 00 DD E5 DD 21 00 00 DD 39 21 F8 FF 39
|
||||
R 00 00 00 00
|
||||
T C2 07 00 00 F9 3A 31 10 6F 3E 0B CD D1 00 3E A8
|
||||
R 00 00 00 00 00 06 01 00 00 0C 00 00
|
||||
T CE 07 00 00 CD 05 00 11 D0 07 21 00 00 CD D5 01
|
||||
R 00 00 00 00 00 05 00 00 00 0E 00 00
|
||||
T DA 07 00 00 3E 2B CD 1E 00 DD 77 FA 3E 2C CD
|
||||
R 00 00 00 00 00 07 00 00
|
||||
T E5 07 00 00 1E 00 DD 77 FB 3E 02 F5 33 21 01 00
|
||||
R 00 00 00 00 00 04 00 00
|
||||
T F1 07 00 00 39 EB 3E 31 CD A5 00 3E 2D CD 37 00
|
||||
R 00 00 00 00 00 09 00 00 00 0E 00 00
|
||||
T FD 07 00 00 DD 73 FC DD 72 FD DD 75 FE DD 74 FF
|
||||
R 00 00 00 00
|
||||
T 09 08 00 00 3A 30 10 FD 21 2D 10 FD B6 02 FD B6
|
||||
R 00 00 00 00 00 05 01 00 00 09 01 00
|
||||
T 15 08 00 00 01 FD B6 00 20 0C 3E 36 CD 37 00 ED
|
||||
R 00 00 00 00 00 0D 00 00
|
||||
T 21 08 00 00 53 2D 10 22 2F 10
|
||||
R 00 00 00 00 00 05 01 00 00 08 01 00
|
||||
T 27 08 00 00
|
||||
R 00 00 00 00
|
||||
T 27 08 00 00 DD 7E FA F5 33 21 32 10 CD F6 05 21
|
||||
R 00 00 00 00 00 0A 01 00 00 0D 00 00
|
||||
T 33 08 00 00 02 00 E5 21 03 0A E5 11 32 10 21
|
||||
R 00 00 00 00 00 0C 01 00
|
||||
T 3E 08 00 00 68 02 CD 00 00 DD 7E FB F5 33 21
|
||||
R 00 00 00 00 00 04 00 00 02 07 04 00
|
||||
T 49 08 00 00 32 10 CD F6 05 21 02 00 E5 21 03 13
|
||||
R 00 00 00 00 00 04 01 00 00 07 00 00
|
||||
T 55 08 00 00 E5 11 32 10 21 68 02 CD 00 00 D1 D5
|
||||
R 00 00 00 00 00 06 01 00 00 09 00 00 02 0C 04 00
|
||||
T 61 08 00 00 21 34 10 CD 33 06 21 03 00 E5 21
|
||||
R 00 00 00 00 00 05 01 00 00 08 00 00
|
||||
T 6C 08 00 00 03 1B E5 11 34 10 21 68 02 CD 00 00
|
||||
R 00 00 00 00 00 08 01 00 00 0B 00 00 02 0E 04 00
|
||||
T 78 08 00 00 21 00 00 E5 21 44 AC E5 DD 5E FC DD
|
||||
R 00 00 00 00
|
||||
T 84 08 00 00 56 FD DD 6E FE DD 66 FF CD 00 00 F1
|
||||
R 00 00 00 00 02 0D 08 00
|
||||
T 90 08 00 00 E3 D5 21 37 10 CD 90 06 21 05 00 E5
|
||||
R 00 00 00 00 00 07 01 00 00 0A 00 00
|
||||
T 9C 08 00 00 21 05 07 E5 11 37 10 21 68 02 CD
|
||||
R 00 00 00 00 00 09 01 00 00 0C 00 00
|
||||
T A7 08 00 00 00 00 21 00 00 E5 21 44 AC E5 ED 5B
|
||||
R 00 00 00 00 02 04 04 00
|
||||
T B3 08 00 00 2D 10 2A 2F 10 CD 00 00 F1 E3 D5 21
|
||||
R 00 00 00 00 00 04 01 00 00 07 01 00 02 0A 08 00
|
||||
T BF 08 00 00 37 10 CD 90 06 21 05 00 E5 21 05 0F
|
||||
R 00 00 00 00 00 04 01 00 00 07 00 00
|
||||
T CB 08 00 00 E5 11 37 10 21 68 02 CD 00 00 DD F9
|
||||
R 00 00 00 00 00 06 01 00 00 09 00 00 02 0C 04 00
|
||||
T D7 08 00 00 DD E1 C9
|
||||
R 00 00 00 00
|
||||
T DA 08 00 00
|
||||
R 00 00 00 00
|
||||
T DA 08 00 00 CD A1 05 3A 00 00 B7 20 0D CD 25 02
|
||||
R 00 00 00 00 00 05 00 00 00 08 01 00 00 0E 00 00
|
||||
T E6 08 00 00 B7 3E 01 20 02 3E 02
|
||||
R 00 00 00 00
|
||||
T ED 08 00 00
|
||||
R 00 00 00 00
|
||||
T ED 08 00 00 32 00 00
|
||||
R 00 00 00 00 00 05 01 00
|
||||
T F0 08 00 00
|
||||
R 00 00 00 00
|
||||
T F0 08 00 00 3A 00 00 3D C2 62 05 32 2D 10 32
|
||||
R 00 00 00 00 00 05 01 00 00 09 00 00 00 0C 01 00
|
||||
T FB 08 00 00 2E 10 32 2F 10 32 30 10 CD
|
||||
R 00 00 00 00 00 04 01 00 00 07 01 00 00 0A 01 00
|
||||
T 04 09 00 00 29 03 B7 20 0B 3A 09 10 D6 99 CA
|
||||
R 00 00 00 00 00 04 00 00 00 0A 01 00
|
||||
T 0F 09 00 00 75 05 C3 8B 05
|
||||
R 00 00 00 00 00 04 00 00 00 07 00 00
|
||||
T 14 09 00 00
|
||||
R 00 00 00 00
|
||||
T 14 09 00 00 21 68 02 CD 00 00 CD C6 05 CD
|
||||
R 00 00 00 00 00 05 00 00 02 08 05 00 00 0B 00 00
|
||||
T 1E 09 00 00 3D 07 CD B6 07
|
||||
R 00 00 00 00 00 04 00 00 00 07 00 00
|
||||
T 23 09 00 00
|
||||
R 00 00 00 00
|
||||
T 23 09 00 00 76 CD 00 00 B7 28 27 3E A2 CD 05 00
|
||||
R 00 00 00 00 02 06 09 00 00 0E 00 00
|
||||
T 2F 09 00 00 11 10 27 21 00 00 CD D5 01 3E E4 CD
|
||||
R 00 00 00 00 00 0B 00 00
|
||||
T 3B 09 00 00 05 00 11 10 27 21 00 00 CD D5 01 21
|
||||
R 00 00 00 00 00 04 00 00 00 0D 00 00
|
||||
T 47 09 00 00 68 02 CD 00 00 3E 02 CD 00 00
|
||||
R 00 00 00 00 00 04 00 00 02 07 0B 00 00 0C 00 00
|
||||
T 51 09 00 00
|
||||
R 00 00 00 00
|
||||
T 51 09 00 00 CD 00 00 B7 28 27 3E A2 CD 05 00 11
|
||||
R 00 00 00 00 02 05 0E 00 00 0D 00 00
|
||||
T 5D 09 00 00 10 27 21 00 00 CD D5 01 3E E4 CD
|
||||
R 00 00 00 00 00 0A 00 00
|
||||
T 68 09 00 00 05 00 11 10 27 21 00 00 CD D5 01 21
|
||||
R 00 00 00 00 00 04 00 00 00 0D 00 00
|
||||
T 74 09 00 00 68 02 CD 00 00 3E 04 CD 00 00
|
||||
R 00 00 00 00 00 04 00 00 02 07 0B 00 00 0C 00 00
|
||||
T 7E 09 00 00
|
||||
R 00 00 00 00
|
||||
T 7E 09 00 00 CD 00 00 B7 28 9F 3E A2 CD 05 00 11
|
||||
R 00 00 00 00 02 05 0D 00 00 0D 00 00
|
||||
T 8A 09 00 00 10 27 21 00 00 CD D5 01 3E E4 CD
|
||||
R 00 00 00 00 00 0A 00 00
|
||||
T 95 09 00 00 05 00 11 10 27 21 00 00 CD D5 01 21
|
||||
R 00 00 00 00 00 04 00 00 00 0D 00 00
|
||||
T A1 09 00 00 68 02 CD 00 00 AF CD 00 00 C3
|
||||
R 00 00 00 00 00 04 00 00 02 07 0B 00 00 0B 00 00
|
||||
T AB 09 00 00 23 09
|
||||
R 00 00 00 00 00 04 00 00
|
||||
T AD 09 00 00
|
||||
R 00 00 00 00
|
||||
T AD 09 00 00 ED 73 01 10 32 08 10 ED 43 0A 10 08
|
||||
R 00 00 00 00 00 06 01 00 00 09 01 00 00 0D 01 00
|
||||
T B9 09 00 00 32 07 10 22 03 10 ED 53 05 10 3A
|
||||
R 00 00 00 00 00 05 01 00 00 08 01 00 00 0C 01 00
|
||||
T C4 09 00 00 08 10 B7 CA DA 08 3A 08 10 D6 03 CA
|
||||
R 00 00 00 00 00 04 01 00 00 08 00 00 00 0B 01 00
|
||||
T D0 09 00 00 4F 05 AF C3 00 00
|
||||
R 00 00 00 00 00 04 00 00 00 08 00 00
|
||||
+166
@@ -0,0 +1,166 @@
|
||||
ASxxxx Assembler V05.50.4+NoICE+SDCCmods-WIP-R14 (Zilog Z80 / Hitachi HD64180 / ZX-Next / eZ80 / R800) Page 1
|
||||
Hexadecimal [32-Bits]
|
||||
|
||||
Symbol Table
|
||||
|
||||
.__.$$$. = 00002710 L
|
||||
.__.ABS. = 00000000 G
|
||||
.__.CPU. = 00000000 L
|
||||
.__.H$L. = 00000000 L
|
||||
_BORDER = 000000FE
|
||||
_SPI_CTRL = 00000077
|
||||
_SPI_DATA = 00000057
|
||||
_TS_BORDER = 00000FAF
|
||||
_TS_CACHECONF = 00002BAF
|
||||
_TS_DMACTR = 000027AF
|
||||
_TS_DMADADDRH = 00001EAF
|
||||
_TS_DMADADDRL = 00001DAF
|
||||
_TS_DMADADDRX = 00001FAF
|
||||
_TS_DMALEN = 000026AF
|
||||
_TS_DMANUM = 000028AF
|
||||
_TS_DMANUMH = 00002CAF
|
||||
_TS_DMASADDRH = 00001BAF
|
||||
_TS_DMASADDRL = 00001AAF
|
||||
_TS_DMASADDRX = 00001CAF
|
||||
_TS_DMASTATUS = 000027AF
|
||||
_TS_DMAWPA = 00002DAF
|
||||
_TS_DMAWPD = 000025AF
|
||||
_TS_FDDVIRT = 000029AF
|
||||
_TS_FMADDR = 000015AF
|
||||
_TS_GXOFFSH = 000003AF
|
||||
_TS_GXOFFSL = 000002AF
|
||||
_TS_GYOFFSH = 000005AF
|
||||
_TS_GYOFFSL = 000004AF
|
||||
_TS_HSINT = 000022AF
|
||||
_TS_INTMASK = 00002AAF
|
||||
_TS_MEMCONFIG = 000021AF
|
||||
_TS_PAGE0 = 000010AF
|
||||
_TS_PAGE1 = 000011AF
|
||||
_TS_PAGE2 = 000012AF
|
||||
_TS_PAGE3 = 000013AF
|
||||
_TS_PALSEL = 000007AF
|
||||
_TS_SGPAGE = 000019AF
|
||||
_TS_STATUS = 000000AF
|
||||
_TS_SYSCONFIG = 000020AF
|
||||
_TS_T0GPAGE = 000017AF
|
||||
_TS_T0XOFFSH = 000041AF
|
||||
_TS_T0XOFFSL = 000040AF
|
||||
_TS_T0YOFFSH = 000043AF
|
||||
_TS_T0YOFFSL = 000042AF
|
||||
_TS_T1GPAGE = 000018AF
|
||||
_TS_T1XOFFSH = 000045AF
|
||||
_TS_T1XOFFSL = 000044AF
|
||||
_TS_T1YOFFSH = 000047AF
|
||||
_TS_T1YOFFSL = 000046AF
|
||||
_TS_TMPAGE = 000016AF
|
||||
_TS_TSCONFIG = 000006AF
|
||||
_TS_VCONFIG = 000000AF
|
||||
_TS_VPAGE = 000001AF
|
||||
_TS_VSINTH = 000024AF
|
||||
_TS_VSINTL = 000023AF
|
||||
ASxxxx Assembler V05.50.4+NoICE+SDCCmods-WIP-R14 (Zilog Z80 / Hitachi HD64180 / ZX-Next / eZ80 / R800) Page 2
|
||||
Hexadecimal [32-Bits]
|
||||
|
||||
Symbol Table
|
||||
|
||||
0 ___str_11 00000793 R
|
||||
0 ___str_12 0000079D R
|
||||
0 ___str_13 000007A5 R
|
||||
0 ___str_14 000007AC R
|
||||
0 ___str_15 000007B2 R
|
||||
0 ___str_9 000005F0 R
|
||||
__divuchar ******** GX
|
||||
__divuint ******** GX
|
||||
__divulong ******** GX
|
||||
__moduchar ******** GX
|
||||
__moduint ******** GX
|
||||
__modulong ******** GX
|
||||
0 __str_0 0000028C R
|
||||
0 __str_1 00000296 R
|
||||
0 __str_2 00000297 R
|
||||
0 __str_3 000002AD R
|
||||
0 __str_4 000002CD R
|
||||
0 __str_5 000002EB R
|
||||
0 __str_6 00000300 R
|
||||
0 __str_7 0000030E R
|
||||
0 __str_8 00000317 R
|
||||
0 _about 0000054F GR
|
||||
1 _call_type 00001008 GR
|
||||
0 _copy_file_name 000005A1 GR
|
||||
1 _decbuf 00001034 R
|
||||
0 _err_no_esp 00000232 GR
|
||||
0 _err_out_of_mem 00000244 GR
|
||||
0 _err_playback 00000256 GR
|
||||
0 _error_esp 00000562 GR
|
||||
0 _error_oom 00000575 GR
|
||||
0 _error_playback 0000058B GR
|
||||
0 _esp_cmd 00000005 GR
|
||||
0 _esp_create_obj 000001F7 GR
|
||||
0 _esp_init 00000225 GR
|
||||
0 _esp_rd_end 0000018B GR
|
||||
0 _esp_rd_reg32 00000037 GR
|
||||
0 _esp_rd_reg8 0000001E GR
|
||||
0 _esp_rd_regs 000000A5 GR
|
||||
0 _esp_send_dma 00000127 GR
|
||||
0 _esp_wait_busy 000001D5 GR
|
||||
0 _esp_wait_status 0000019A GR
|
||||
0 _esp_wr_end 00000118 GR
|
||||
0 _esp_wr_reg32 000000E8 GR
|
||||
0 _esp_wr_reg8 000000D1 GR
|
||||
1 _file_ext 00001007 GR
|
||||
1 _file_name 0000100C GR
|
||||
1 _filesize 00001003 GR
|
||||
1 _fs_buf 00000001 GR
|
||||
1 _hexbuf 00001032 R
|
||||
1 _last_esp_status 00001009 GR
|
||||
0 _main 000009AD GR
|
||||
0 _main_start 000008DA GR
|
||||
1 _p_file_name 0000100A GR
|
||||
0 _play_xm 00000329 GR
|
||||
0 _put_dec3 00000633 GR
|
||||
ASxxxx Assembler V05.50.4+NoICE+SDCCmods-WIP-R14 (Zilog Z80 / Hitachi HD64180 / ZX-Next / eZ80 / R800) Page 3
|
||||
Hexadecimal [32-Bits]
|
||||
|
||||
Symbol Table
|
||||
|
||||
0 _put_hex2 000005F6 GR
|
||||
0 _put_hex2_hexch_10000_105 00000622 R
|
||||
0 _put_time 00000690 GR
|
||||
1 _ret_sp 00001001 GR
|
||||
1 _state_esp 00000000 GR
|
||||
_strlen ******** GX
|
||||
1 _timebuf 00001037 R
|
||||
1 _total_samples 0000102D GR
|
||||
0 _wait_esc_key 0000053E GR
|
||||
0 _wait_frames 00000546 GR
|
||||
0 _wc_exit 00000000 GR
|
||||
_wc_key_esc ******** GX
|
||||
_wc_key_pgdn ******** GX
|
||||
_wc_key_pgup ******** GX
|
||||
_wc_load512 ******** GX
|
||||
_wc_prsrw ******** GX
|
||||
_wc_prsrw_attr ******** GX
|
||||
_wc_prwow ******** GX
|
||||
_wc_rresb ******** GX
|
||||
0 _win_about 0000027A GR
|
||||
0 _win_xm 00000268 GR
|
||||
0 _xm_draw_static_labels 000005C6 GR
|
||||
0 _xm_draw_stats_labels 0000073D GR
|
||||
1 _xm_handle 00001031 GR
|
||||
0 _xm_update_info 000007B6 GR
|
||||
|
||||
ASxxxx Assembler V05.50.4+NoICE+SDCCmods-WIP-R14 (Zilog Z80 / Hitachi HD64180 / ZX-Next / eZ80 / R800) Page 4
|
||||
Hexadecimal [32-Bits]
|
||||
|
||||
Area Table
|
||||
|
||||
0 _CODE size 9D6 flags 0
|
||||
1 _DATA size 103C flags 0
|
||||
2 _INITIALIZED size 0 flags 0
|
||||
3 _DABS size 0 flags 8
|
||||
4 _HOME size 0 flags 0
|
||||
5 _GSINIT size 0 flags 0
|
||||
6 _GSFINAL size 0 flags 0
|
||||
7 _INITIALIZER size 0 flags 0
|
||||
8 _CABS size 0 flags 8
|
||||
|
||||
+24
@@ -0,0 +1,24 @@
|
||||
|
||||
.module crt0
|
||||
.globl _main
|
||||
|
||||
.area _HEADER (ABS)
|
||||
.org 0x8000
|
||||
jp _main
|
||||
|
||||
;; Ordering of segments for the linker.
|
||||
.area _HOME
|
||||
.area _CODE
|
||||
.area _INITIALIZER
|
||||
.area _GSINIT
|
||||
.area _GSFINAL
|
||||
|
||||
.area _DATA
|
||||
.area _INITIALIZED
|
||||
.area _BSEG
|
||||
.area _BSS
|
||||
.area _HEAP
|
||||
|
||||
.area _GSINIT
|
||||
.area _GSFINAL
|
||||
|
||||
+154
@@ -0,0 +1,154 @@
|
||||
|
||||
// Local, trimmed copy of ../lib/esp32/esp32.c - only the functions xmplay
|
||||
// actually calls (esp_cmdd/esp_cmdp1/esp_cmdp/esp_send/esp_recv/esp_recv_dma/
|
||||
// esp_wait_not_status are unused here). Vendored per-project instead of
|
||||
// shared, same reasoning as the SDCC-version-per-project split in build.bat:
|
||||
// keeps xmplay's dependency surface to exactly what it uses. Bodies are
|
||||
// unchanged from the shared original and cross-checked against
|
||||
// esp32/doc/esp32-spi-wifi.md (WR_REGS=0x01/RD_REGS=0x02/RD_DATA=0x04 match
|
||||
// the doc exactly; W_END=0x07/R_END=0x08 aren't in that doc at all, but they
|
||||
// come from the same esp_spi_defs.h shared with the ESP32 firmware, which is
|
||||
// the authoritative source - the doc is just an older, partial write-up).
|
||||
|
||||
#define SPI_ESP_CS_ON 0x13
|
||||
#define SPI_ESP_CS_OFF 0x03
|
||||
|
||||
u32 esp_wait_busy(u32 timeout);
|
||||
|
||||
void esp_cmd(u8 cmd)
|
||||
{
|
||||
SPI_CTRL = SPI_ESP_CS_ON;
|
||||
SPI_DATA = ESP_SPI_CMD_WR_REGS;
|
||||
SPI_DATA = ESP_REG_COMMAND;
|
||||
SPI_DATA; // dummy
|
||||
SPI_DATA = cmd; // Command
|
||||
SPI_DATA = ESP_ST_IDLE; // Reset status
|
||||
SPI_CTRL = SPI_ESP_CS_OFF;
|
||||
}
|
||||
|
||||
u8 esp_rd_reg8(u8 reg)
|
||||
{
|
||||
SPI_CTRL = SPI_ESP_CS_ON;
|
||||
SPI_DATA = ESP_SPI_CMD_RD_REGS;
|
||||
SPI_DATA = reg;
|
||||
SPI_DATA; // dummy
|
||||
SPI_DATA; // dummy
|
||||
u8 rc = SPI_DATA;
|
||||
SPI_CTRL = SPI_ESP_CS_OFF;
|
||||
|
||||
return rc;
|
||||
}
|
||||
|
||||
u32 esp_rd_reg32(u8 reg)
|
||||
{
|
||||
SPI_CTRL = SPI_ESP_CS_ON;
|
||||
SPI_DATA = ESP_SPI_CMD_RD_REGS;
|
||||
SPI_DATA = reg;
|
||||
SPI_DATA; // dummy
|
||||
SPI_DATA; // dummy
|
||||
u32 rc = SPI_DATA;
|
||||
rc |= (u32)SPI_DATA << 8;
|
||||
rc |= (u32)SPI_DATA << 16;
|
||||
rc |= (u32)SPI_DATA << 24;
|
||||
SPI_CTRL = SPI_ESP_CS_OFF;
|
||||
|
||||
return rc;
|
||||
}
|
||||
|
||||
void esp_rd_regs(u8 reg, void *data, u8 size)
|
||||
{
|
||||
u8 *d = (u8*)data;
|
||||
|
||||
SPI_CTRL = SPI_ESP_CS_ON;
|
||||
SPI_DATA = ESP_SPI_CMD_RD_REGS;
|
||||
SPI_DATA = reg;
|
||||
SPI_DATA; // dummy
|
||||
SPI_DATA; // dummy
|
||||
while (size--) *d++ = SPI_DATA;
|
||||
SPI_CTRL = SPI_ESP_CS_OFF;
|
||||
}
|
||||
|
||||
void esp_wr_reg8(u8 reg, u8 data)
|
||||
{
|
||||
SPI_CTRL = SPI_ESP_CS_ON;
|
||||
SPI_DATA = ESP_SPI_CMD_WR_REGS;
|
||||
SPI_DATA = reg;
|
||||
SPI_DATA; // dummy
|
||||
SPI_DATA = data;
|
||||
SPI_CTRL = SPI_ESP_CS_OFF;
|
||||
}
|
||||
|
||||
void esp_wr_reg32(u8 reg, u32 data)
|
||||
{
|
||||
SPI_CTRL = SPI_ESP_CS_ON;
|
||||
SPI_DATA = ESP_SPI_CMD_WR_REGS;
|
||||
SPI_DATA = reg;
|
||||
SPI_DATA; // dummy
|
||||
SPI_DATA = (u8)data;
|
||||
SPI_DATA = (u8)(data >> 8);
|
||||
SPI_DATA = (u8)(data >> 16);
|
||||
SPI_DATA = (u8)(data >> 24);
|
||||
SPI_CTRL = SPI_ESP_CS_OFF;
|
||||
}
|
||||
|
||||
void esp_wr_end()
|
||||
{
|
||||
SPI_CTRL = SPI_ESP_CS_ON;
|
||||
SPI_DATA = ESP_SPI_CMD_W_END;
|
||||
SPI_DATA; // dummy
|
||||
SPI_CTRL = SPI_ESP_CS_OFF;
|
||||
}
|
||||
|
||||
void esp_send_dma(u16 a, u8 p, u16 l, u16 n)
|
||||
{
|
||||
|
||||
TS_DMASADDRL = (u8)a;
|
||||
TS_DMASADDRH = (u8)((u16)a >> 8);
|
||||
TS_DMASADDRX = p;
|
||||
TS_DMALEN = (u8)((l >> 1) - 1);
|
||||
TS_DMANUM = (u8)(n - 1);
|
||||
|
||||
SPI_CTRL = SPI_ESP_CS_ON;
|
||||
SPI_DATA = ESP_SPI_CMD_WR_DATA;
|
||||
SPI_DATA; // dummy
|
||||
SPI_DATA; // dummy
|
||||
TS_DMACTR = TS_DMA_RAM_SPI;
|
||||
while (TS_DMASTATUS & 0x80);
|
||||
SPI_CTRL = SPI_ESP_CS_OFF;
|
||||
|
||||
esp_wr_end();
|
||||
esp_wait_busy(60000);
|
||||
}
|
||||
|
||||
void esp_rd_end()
|
||||
{
|
||||
SPI_CTRL = SPI_ESP_CS_ON;
|
||||
SPI_DATA = ESP_SPI_CMD_R_END;
|
||||
SPI_DATA; // dummy
|
||||
SPI_CTRL = SPI_ESP_CS_OFF;
|
||||
}
|
||||
|
||||
u32 esp_wait_status(u8 status, u32 timeout)
|
||||
{
|
||||
while (--timeout) if (esp_rd_reg8(ESP_REG_STATUS) == status) break;
|
||||
|
||||
return timeout;
|
||||
}
|
||||
|
||||
u32 esp_wait_busy(u32 timeout)
|
||||
{
|
||||
while (--timeout) if (esp_rd_reg8(ESP_REG_STATUS) != ESP_ST_BUSY) break;
|
||||
|
||||
return timeout;
|
||||
}
|
||||
|
||||
int esp_create_obj(u32 size, u8 type)
|
||||
{
|
||||
esp_wr_reg32(ESP_REG_DATA_SIZE, size);
|
||||
esp_wr_reg8(ESP_REG_OBJ_TYPE, type);
|
||||
esp_cmd(ESP_CMD_MAKE_OBJECT);
|
||||
esp_wait_busy(20000);
|
||||
// +++ check error
|
||||
|
||||
return esp_rd_reg8(ESP_REG_OBJ_HANDLE);
|
||||
}
|
||||
+500
@@ -0,0 +1,500 @@
|
||||
|
||||
#include <stdio.h>
|
||||
#include <string.h>
|
||||
#include <defs.h>
|
||||
#include <wc_api.h>
|
||||
#include "tsconf.h"
|
||||
#include <esp_spi_defs.h>
|
||||
|
||||
#include <wc_api.c>
|
||||
#include <esp32.c>
|
||||
|
||||
// This used to be `const u8 state_esp = 0;`, written to via `*(u8*)&state_esp`
|
||||
// as a code-size trick (skip GSINIT zero-init - a const's value is already
|
||||
// known at compile time). That's undefined behavior (modifying a const
|
||||
// object), and SDCC 4.6.0's more aggressive optimizer actually exploits it:
|
||||
// it folds `state_esp != 1` to a compile-time-constant `true` (since the
|
||||
// const's initializer is 0), permanently ignoring the "write" - which is
|
||||
// exactly why esp32 detection always failed after the 4.0.0->4.6.0 bump.
|
||||
// Plain (non-const) global; BSS zero-init already makes it start at 0.
|
||||
u8 state_esp;
|
||||
|
||||
#define FS_BUF_SIZE 0x1000
|
||||
u8 fs_buf[FS_BUF_SIZE]; // at 0xAE00 (_PAGE2 to get page)
|
||||
|
||||
u16 ret_sp;
|
||||
u32 filesize;
|
||||
u8 file_ext;
|
||||
u8 call_type;
|
||||
u8 last_esp_status; // set by play_xm() on failure, so the caller can pick a specific error message
|
||||
|
||||
// STEP 2 of the gradual reintroduction: filename capture, re-enabled.
|
||||
u16 p_file_name; // pointer to the open file's name, valid only at entry (#4000-#7FFF window)
|
||||
char file_name[33];
|
||||
|
||||
// STEP 3 of the gradual reintroduction: live stats.
|
||||
u32 total_samples;
|
||||
u8 xm_handle;
|
||||
|
||||
// --- Extensions ---------------------------
|
||||
// file_ext is the matched entry's index into wc_h.c's ext[] table, so this
|
||||
// enum must stay in the same order as that array (XM, XMZ, S3M).
|
||||
enum
|
||||
{
|
||||
EXT_XM,
|
||||
EXT_XMZ,
|
||||
EXT_S3M,
|
||||
};
|
||||
|
||||
// --- Windows ------------------------------
|
||||
const WC_TX_WINDOW err_no_esp =
|
||||
{
|
||||
/* window with header and text */ WC_WIND_HDR_TXT,
|
||||
/* cursor color mask */ 0,
|
||||
/* X,Y (position) */ 24, 10,
|
||||
/* W,H (size) */ 32, 5,
|
||||
/* paper/ink (window color) */ 0x2F,
|
||||
/* -reserved- */ 0,
|
||||
/* window restore buffer address */ 0,
|
||||
/* separators */ 0, 0,
|
||||
/* header text */ "\x0E" " Error! ",
|
||||
/* footer text */ "",
|
||||
/* window text */ "\x0E\x0C\x01" "No ESP32 detected!",
|
||||
};
|
||||
|
||||
const WC_TX_WINDOW err_out_of_mem =
|
||||
{
|
||||
/* window with header and text */ WC_WIND_HDR_TXT,
|
||||
/* cursor color mask */ 0,
|
||||
/* X,Y (position) */ 255, 255,
|
||||
/* W,H (size) */ 32, 5,
|
||||
/* paper/ink (window color) */ 0x2F,
|
||||
/* -reserved- */ 0,
|
||||
/* window restore buffer address */ 0,
|
||||
/* separators */ 0, 0,
|
||||
/* header text */ "\x0E" " Error! ",
|
||||
/* footer text */ "",
|
||||
/* window text */ "\x0E\x0C\x01" "Out of memory (file too big)",
|
||||
};
|
||||
|
||||
const WC_TX_WINDOW err_playback =
|
||||
{
|
||||
/* window with header and text */ WC_WIND_HDR_TXT,
|
||||
/* cursor color mask */ 0,
|
||||
/* X,Y (position) */ 255, 255,
|
||||
/* W,H (size) */ 32, 5,
|
||||
/* paper/ink (window color) */ 0x2F,
|
||||
/* -reserved- */ 0,
|
||||
/* window restore buffer address */ 0,
|
||||
/* separators */ 0, 0,
|
||||
/* header text */ "\x0E" " Error! ",
|
||||
/* footer text */ "",
|
||||
/* window text */ "\x0E\x0C\x01" "Playback error (bad file?)",
|
||||
};
|
||||
|
||||
// STEP 1 of the gradual reintroduction: bigger, fixed position (not
|
||||
// auto-center) - no wc_prsrw() calls yet, still just static wnd_txt like
|
||||
// before. This exact size/position was already confirmed stable on its own
|
||||
// earlier (before wc_prsrw/live-info were layered on top).
|
||||
const WC_TX_WINDOW win_xm =
|
||||
{
|
||||
/* window with header and text + shadow (0x80) */ WC_WIND_HDR_TXT | 0x80,
|
||||
/* cursor color mask */ 0,
|
||||
/* X,Y (position) */ 25, 10,
|
||||
/* W,H (size) */ 40, 11,
|
||||
/* paper/ink (window color) */ 0x4F,
|
||||
/* -reserved- */ 0,
|
||||
/* window restore buffer address */ 0,
|
||||
/* separators */ 0, 0,
|
||||
/* header text */ "\x0E" " XM/XMZ/S3M Player ",
|
||||
/* footer text */ "",
|
||||
/* window text */ "\x0E\x0C\x01" "Playing..."
|
||||
};
|
||||
|
||||
const WC_TX_WINDOW win_about =
|
||||
{
|
||||
/* window with header and text */ WC_WIND_HDR_TXT,
|
||||
/* cursor color mask */ 0,
|
||||
/* X,Y (position) */ 22, 10,
|
||||
/* W,H (size) */ 36, 5,
|
||||
/* paper/ink (window color) */ 0x4F,
|
||||
/* -reserved- */ 0,
|
||||
/* window restore buffer address */ 0,
|
||||
/* separators */ 0, 0,
|
||||
/* header text */ "\x0E" " About ",
|
||||
/* footer text */ "",
|
||||
/* window text */ "\x0E\x0C\x01" "XM Player v1.0"
|
||||
};
|
||||
|
||||
bool esp_init()
|
||||
{
|
||||
esp_cmd(ESP_CMD_NOP);
|
||||
esp_rd_end();
|
||||
esp_wr_end();
|
||||
|
||||
// +++ detect
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
// Returns false on ESP_ERR_OUT_OF_MEMORY (e.g. file too large for the esp32
|
||||
// to allocate) so the caller can show an error instead of silently failing.
|
||||
bool play_xm()
|
||||
{
|
||||
esp_cmd(ESP_CMD_TRACK_STOP);
|
||||
esp_wait_busy(10000);
|
||||
esp_cmd(ESP_CMD_KILL_OBJECTS);
|
||||
esp_wait_busy(10000);
|
||||
|
||||
u8 obj_type;
|
||||
switch (file_ext)
|
||||
{
|
||||
case EXT_XMZ: obj_type = OBJ_TYPE_ZIP; break;
|
||||
case EXT_S3M: obj_type = OBJ_TYPE_S3M; break;
|
||||
default: obj_type = OBJ_TYPE_XM; break;
|
||||
}
|
||||
|
||||
xm_handle = esp_create_obj(filesize, obj_type);
|
||||
last_esp_status = esp_rd_reg8(ESP_REG_STATUS);
|
||||
if (last_esp_status != ESP_ST_READY)
|
||||
return false;
|
||||
|
||||
u32 sz = filesize;
|
||||
u32 offs = 0;
|
||||
|
||||
while (sz)
|
||||
{
|
||||
u32 s = min(sz, FS_BUF_SIZE);
|
||||
u8 sec = (s + 511) >> 9;
|
||||
|
||||
wc_load512((u16)fs_buf, sec);
|
||||
|
||||
esp_wr_reg32(ESP_REG_DATA_SIZE, s);
|
||||
esp_wr_reg32(ESP_REG_DATA_OFFSET, offs);
|
||||
esp_cmd(ESP_CMD_WRITE_OBJECT);
|
||||
esp_wait_status(ESP_ST_DATA_M2S, 2000);
|
||||
esp_send_dma((u16)fs_buf, *(u8*)_PAGE2, 512, sec);
|
||||
|
||||
offs += s;
|
||||
sz -= s;
|
||||
}
|
||||
|
||||
if (file_ext == EXT_XMZ)
|
||||
{
|
||||
// ESP_CMD_UNZIP's contract (esp_spi_defs.h) is
|
||||
// i: ESP_REG_OBJ_HANDLE, ESP_REG_DATA_SIZE, ESP_REG_OBJ_TYPE - the handle
|
||||
// must be (re)written explicitly, it's not implied by the last created object.
|
||||
esp_wr_reg8(ESP_REG_OBJ_HANDLE, xm_handle);
|
||||
esp_wr_reg8(ESP_REG_OBJ_TYPE, OBJ_TYPE_XM);
|
||||
esp_wr_reg32(ESP_REG_DATA_SIZE, filesize);
|
||||
esp_cmd(ESP_CMD_UNZIP);
|
||||
esp_wait_busy(10000);
|
||||
|
||||
last_esp_status = esp_rd_reg8(ESP_REG_STATUS);
|
||||
if (last_esp_status != ESP_ST_READY)
|
||||
return false;
|
||||
}
|
||||
|
||||
esp_cmd(ESP_CMD_TRACK_INIT);
|
||||
esp_wait_busy(10000);
|
||||
|
||||
last_esp_status = esp_rd_reg8(ESP_REG_STATUS);
|
||||
if (last_esp_status != ESP_ST_READY)
|
||||
return false;
|
||||
|
||||
esp_cmd(ESP_CMD_TRACK_PLAY);
|
||||
esp_wait_busy(10000);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
// --- Aux functions ------------------------
|
||||
void wait_esc_key()
|
||||
{
|
||||
while (1)
|
||||
{
|
||||
__asm
|
||||
halt
|
||||
__endasm;
|
||||
|
||||
if (wc_key_esc())
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void wait_frames(u8 n)
|
||||
{
|
||||
while (n--)
|
||||
{
|
||||
__asm
|
||||
halt
|
||||
__endasm;
|
||||
}
|
||||
}
|
||||
|
||||
void about()
|
||||
{
|
||||
wc_prwow(&win_about);
|
||||
wait_esc_key();
|
||||
wc_rresb(&win_about);
|
||||
wc_exit(WC_EXIT);
|
||||
}
|
||||
|
||||
void error_esp()
|
||||
{
|
||||
wc_prwow(&err_no_esp);
|
||||
wait_esc_key();
|
||||
wc_rresb(&err_no_esp);
|
||||
wc_exit(WC_EXIT);
|
||||
}
|
||||
|
||||
void error_oom()
|
||||
{
|
||||
wc_prwow(&err_out_of_mem);
|
||||
wait_frames(50); // show the error for ~1 second (50Hz), then auto-advance
|
||||
wc_rresb(&err_out_of_mem);
|
||||
wc_exit(WC_NEXT_FILE);
|
||||
}
|
||||
|
||||
void error_playback()
|
||||
{
|
||||
wc_prwow(&err_playback);
|
||||
wait_frames(50); // show the error for ~1 second (50Hz), then auto-advance
|
||||
wc_rresb(&err_playback);
|
||||
wc_exit(WC_NEXT_FILE);
|
||||
}
|
||||
|
||||
// STEP 2 of the gradual reintroduction: filename capture, re-enabled.
|
||||
// Copies the filename out of WC's own buffer (valid only right at entry,
|
||||
// in the #4000-#7FFF window per plugins/READ_ME.TXT) into our own memory,
|
||||
// before any paging/esp32 activity might disturb that window.
|
||||
// TESTED: disabling this alone did NOT fix the "wrong file loading" bug.
|
||||
void copy_file_name()
|
||||
{
|
||||
u8 *src = (u8*)p_file_name;
|
||||
u8 i = 0;
|
||||
|
||||
while (src[i] && i < sizeof(file_name) - 1)
|
||||
{
|
||||
file_name[i] = src[i];
|
||||
i++;
|
||||
}
|
||||
file_name[i] = 0;
|
||||
}
|
||||
|
||||
// Coloring (PRIAT) via demyanenko-d/VGMPLAY.WMF's wc_prsrw_attr() - our own
|
||||
// three hand-rolled attempts all corrupted esp32 file loading; retesting
|
||||
// with their library now that build.bat pins SDCC 4.6.0 + --sdcccall 1.
|
||||
#define ROW_FILE 1
|
||||
#define ATTR_CAPTION 0x45 // cyan ink - "File:" caption
|
||||
|
||||
void xm_draw_static_labels()
|
||||
{
|
||||
wc_prsrw_attr(&win_xm, "File:", ROW_FILE, 1, 5, ATTR_CAPTION);
|
||||
wc_prsrw(&win_xm, file_name, ROW_FILE, 7, strlen(file_name));
|
||||
}
|
||||
|
||||
// --- Live status display (STEP 3, no coloring - plain wc_prsrw only) -----
|
||||
#define ROW_STATS 3
|
||||
#define ROW_TIME 5
|
||||
#define ROW_BAR 6
|
||||
#define BAR_X 1
|
||||
#define BAR_WIDTH 34
|
||||
|
||||
void put_hex2(char *dst, u8 val)
|
||||
{
|
||||
static const char hexch[] = "0123456789ABCDEF";
|
||||
dst[0] = hexch[(val >> 4) & 0xF];
|
||||
dst[1] = hexch[val & 0xF];
|
||||
}
|
||||
|
||||
void put_dec3(char *dst, u16 val)
|
||||
{
|
||||
dst[0] = '0' + (val / 100) % 10;
|
||||
dst[1] = '0' + (val / 10) % 10;
|
||||
dst[2] = '0' + val % 10;
|
||||
}
|
||||
|
||||
void put_time(char *dst, u32 sec)
|
||||
{
|
||||
u8 m = (sec / 60) % 100;
|
||||
u8 s = sec % 60;
|
||||
|
||||
dst[0] = '0' + (m / 10) % 10;
|
||||
dst[1] = '0' + m % 10;
|
||||
dst[2] = ':';
|
||||
dst[3] = '0' + (s / 10) % 10;
|
||||
dst[4] = '0' + s % 10;
|
||||
}
|
||||
|
||||
void xm_draw_stats_labels()
|
||||
{
|
||||
wc_prsrw(&win_xm, "Pattern:#", ROW_STATS, 1, 9);
|
||||
wc_prsrw(&win_xm, " Row:#", ROW_STATS, 12, 7);
|
||||
wc_prsrw(&win_xm, " BPM:", ROW_STATS, 21, 6);
|
||||
|
||||
wc_prsrw(&win_xm, "Time:", ROW_TIME, 1, 5);
|
||||
wc_prsrw(&win_xm, " / ", ROW_TIME, 12, 3);
|
||||
}
|
||||
|
||||
// wc_prsrw()'s text pointer MUST be in #8000-#BFFF (our own code/data
|
||||
// window) - but this plugin runs on WC's OWN stack, which lives in a
|
||||
// DIFFERENT window (#4000-#7FFF, per plugins/READ_ME.TXT: "стек... в Win 1
|
||||
// #4000-#7FFF"). Local (stack-allocated) char buffers passed to wc_prsrw()
|
||||
// are therefore in the WRONG memory window entirely - this is almost
|
||||
// certainly why xm_draw_static_labels() (string literal + a global array,
|
||||
// both correctly in #8000-#BFFF) worked, while xm_update_info()'s hexbuf/
|
||||
// decbuf/timebuf (local variables, silently on WC's stack) corrupted the
|
||||
// screen. Made static (i.e. real globals in our own DATA segment) to fix.
|
||||
static char hexbuf[2];
|
||||
static char decbuf[3];
|
||||
static char timebuf[5];
|
||||
|
||||
void xm_update_info()
|
||||
{
|
||||
u8 pattern, row;
|
||||
u16 bpm;
|
||||
u32 samples;
|
||||
|
||||
esp_wr_reg8(ESP_REG_OBJ_HANDLE, xm_handle);
|
||||
esp_cmd(ESP_CMD_TRACK_GET_INFO);
|
||||
esp_wait_busy(2000);
|
||||
|
||||
pattern = esp_rd_reg8(ESP_REG_TRACK_PATTERN);
|
||||
row = esp_rd_reg8(ESP_REG_TRACK_ROW);
|
||||
esp_rd_regs(ESP_REG_TRACK_BPM, &bpm, 2);
|
||||
samples = esp_rd_reg32(ESP_REG_TRACK_SAMPLES);
|
||||
|
||||
if (!total_samples)
|
||||
total_samples = esp_rd_reg32(ESP_REG_TRACK_TOTAL_SAMPLES);
|
||||
|
||||
put_hex2(hexbuf, pattern);
|
||||
wc_prsrw(&win_xm, hexbuf, ROW_STATS, 10, 2);
|
||||
|
||||
put_hex2(hexbuf, row);
|
||||
wc_prsrw(&win_xm, hexbuf, ROW_STATS, 19, 2);
|
||||
|
||||
put_dec3(decbuf, bpm);
|
||||
wc_prsrw(&win_xm, decbuf, ROW_STATS, 27, 3);
|
||||
|
||||
put_time(timebuf, samples / 44100UL);
|
||||
wc_prsrw(&win_xm, timebuf, ROW_TIME, 7, 5);
|
||||
|
||||
put_time(timebuf, total_samples / 44100UL);
|
||||
wc_prsrw(&win_xm, timebuf, ROW_TIME, 15, 5);
|
||||
|
||||
// Progress bar skipped for now per user request - reintroduce as its own
|
||||
// separate step once Pattern/Row/BPM/Time are confirmed stable.
|
||||
}
|
||||
|
||||
void main_start()
|
||||
{
|
||||
u8 frame_ctr;
|
||||
|
||||
copy_file_name();
|
||||
|
||||
if (!state_esp)
|
||||
state_esp = esp_init() ? 1 : 2;
|
||||
|
||||
if (state_esp != 1)
|
||||
{
|
||||
error_esp();
|
||||
return;
|
||||
}
|
||||
|
||||
total_samples = 0;
|
||||
|
||||
if (!play_xm())
|
||||
{
|
||||
if (last_esp_status == ESP_ERR_OUT_OF_MEMORY)
|
||||
error_oom();
|
||||
else
|
||||
error_playback();
|
||||
return;
|
||||
}
|
||||
|
||||
// Draw the status window only AFTER play_xm() has already finished the
|
||||
// file transfer and issued TRACK_INIT/TRACK_PLAY - drawing a window
|
||||
// beforehand previously corrupted the esp32 transfer (see project memory).
|
||||
wc_prwow(&win_xm);
|
||||
xm_draw_static_labels();
|
||||
xm_draw_stats_labels();
|
||||
xm_update_info(); // single call for now - periodic re-calling is a separate step, once this is confirmed stable
|
||||
|
||||
frame_ctr = 0;
|
||||
|
||||
// poll keys
|
||||
while (1)
|
||||
{
|
||||
__asm
|
||||
halt
|
||||
__endasm;
|
||||
|
||||
// DEBUG: periodic xm_update_info() disabled - isolating whether repeated
|
||||
// wc_prsrw() calls over time (not just one initial call) is what causes
|
||||
// the screen to fill with garbage after a while.
|
||||
// if (++frame_ctr >= 10) // ~5 updates/sec at 50Hz
|
||||
// {
|
||||
// frame_ctr = 0;
|
||||
// xm_update_info();
|
||||
// }
|
||||
|
||||
if (wc_key_pgdn()) // PgDn - unload and go to next file
|
||||
{
|
||||
esp_cmd(ESP_CMD_TRACK_STOP);
|
||||
esp_wait_busy(10000);
|
||||
esp_cmd(ESP_CMD_KILL_OBJECTS);
|
||||
esp_wait_busy(10000);
|
||||
wc_rresb(&win_xm);
|
||||
wc_exit(WC_NEXT_FILE);
|
||||
}
|
||||
|
||||
if (wc_key_pgup()) // PgUp - unload and go to previous file
|
||||
{
|
||||
esp_cmd(ESP_CMD_TRACK_STOP);
|
||||
esp_wait_busy(10000);
|
||||
esp_cmd(ESP_CMD_KILL_OBJECTS);
|
||||
esp_wait_busy(10000);
|
||||
wc_rresb(&win_xm);
|
||||
wc_exit(WC_PREV_FILE);
|
||||
}
|
||||
|
||||
if (wc_key_esc()) // Esc - unload and exit
|
||||
{
|
||||
esp_cmd(ESP_CMD_TRACK_STOP);
|
||||
esp_wait_busy(10000);
|
||||
esp_cmd(ESP_CMD_KILL_OBJECTS);
|
||||
esp_wait_busy(10000);
|
||||
wc_rresb(&win_xm);
|
||||
wc_exit(WC_EXIT);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// ------------------------------------------
|
||||
void main()
|
||||
{
|
||||
__asm
|
||||
ld (_ret_sp), sp
|
||||
ld (_call_type), a
|
||||
ld (_p_file_name), bc
|
||||
ex af, af
|
||||
ld (_file_ext), a
|
||||
ld (_filesize), hl
|
||||
ld (_filesize + 2), de
|
||||
__endasm;
|
||||
|
||||
switch (call_type)
|
||||
{
|
||||
case WC_CALL_EXT:
|
||||
main_start();
|
||||
break;
|
||||
|
||||
case WC_CALL_MENU:
|
||||
about();
|
||||
break;
|
||||
|
||||
default:
|
||||
wc_exit(WC_EXIT);
|
||||
}
|
||||
}
|
||||
+195
@@ -0,0 +1,195 @@
|
||||
|
||||
#pragma once
|
||||
|
||||
__sfr __at 0x57 SPI_DATA;
|
||||
__sfr __at 0x77 SPI_CTRL;
|
||||
|
||||
__sfr __at 0xFE BORDER;
|
||||
|
||||
__sfr __banked __at 0x00AF TS_VCONFIG;
|
||||
__sfr __banked __at 0x00AF TS_STATUS;
|
||||
__sfr __banked __at 0x01AF TS_VPAGE;
|
||||
__sfr __banked __at 0x02AF TS_GXOFFSL;
|
||||
__sfr __banked __at 0x03AF TS_GXOFFSH;
|
||||
__sfr __banked __at 0x04AF TS_GYOFFSL;
|
||||
__sfr __banked __at 0x05AF TS_GYOFFSH;
|
||||
__sfr __banked __at 0x06AF TS_TSCONFIG;
|
||||
__sfr __banked __at 0x07AF TS_PALSEL;
|
||||
__sfr __banked __at 0x0FAF TS_BORDER;
|
||||
__sfr __banked __at 0x10AF TS_PAGE0;
|
||||
__sfr __banked __at 0x11AF TS_PAGE1;
|
||||
__sfr __banked __at 0x12AF TS_PAGE2;
|
||||
__sfr __banked __at 0x13AF TS_PAGE3;
|
||||
__sfr __banked __at 0x15AF TS_FMADDR;
|
||||
__sfr __banked __at 0x16AF TS_TMPAGE;
|
||||
__sfr __banked __at 0x17AF TS_T0GPAGE;
|
||||
__sfr __banked __at 0x18AF TS_T1GPAGE;
|
||||
__sfr __banked __at 0x19AF TS_SGPAGE;
|
||||
__sfr __banked __at 0x1AAF TS_DMASADDRL;
|
||||
__sfr __banked __at 0x1BAF TS_DMASADDRH;
|
||||
__sfr __banked __at 0x1CAF TS_DMASADDRX;
|
||||
__sfr __banked __at 0x1DAF TS_DMADADDRL;
|
||||
__sfr __banked __at 0x1EAF TS_DMADADDRH;
|
||||
__sfr __banked __at 0x1FAF TS_DMADADDRX;
|
||||
__sfr __banked __at 0x20AF TS_SYSCONFIG;
|
||||
__sfr __banked __at 0x21AF TS_MEMCONFIG;
|
||||
__sfr __banked __at 0x22AF TS_HSINT;
|
||||
__sfr __banked __at 0x23AF TS_VSINTL;
|
||||
__sfr __banked __at 0x24AF TS_VSINTH;
|
||||
__sfr __banked __at 0x25AF TS_DMAWPD;
|
||||
__sfr __banked __at 0x26AF TS_DMALEN;
|
||||
__sfr __banked __at 0x27AF TS_DMACTR;
|
||||
__sfr __banked __at 0x27AF TS_DMASTATUS;
|
||||
__sfr __banked __at 0x28AF TS_DMANUM;
|
||||
__sfr __banked __at 0x29AF TS_FDDVIRT;
|
||||
__sfr __banked __at 0x2AAF TS_INTMASK;
|
||||
__sfr __banked __at 0x2BAF TS_CACHECONF;
|
||||
__sfr __banked __at 0x2CAF TS_DMANUMH;
|
||||
__sfr __banked __at 0x2DAF TS_DMAWPA;
|
||||
__sfr __banked __at 0x40AF TS_T0XOFFSL;
|
||||
__sfr __banked __at 0x41AF TS_T0XOFFSH;
|
||||
__sfr __banked __at 0x42AF TS_T0YOFFSL;
|
||||
__sfr __banked __at 0x43AF TS_T0YOFFSH;
|
||||
__sfr __banked __at 0x44AF TS_T1XOFFSL;
|
||||
__sfr __banked __at 0x45AF TS_T1XOFFSH;
|
||||
__sfr __banked __at 0x46AF TS_T1YOFFSL;
|
||||
__sfr __banked __at 0x47AF TS_T1YOFFSH;
|
||||
|
||||
// TS parameters
|
||||
#define TS_FM_EN 0x10
|
||||
|
||||
// FPGA arrays
|
||||
#define TS_FM_CRAM 0x0000
|
||||
#define TS_FM_SFILE 0x0200
|
||||
|
||||
// VIDEO
|
||||
#define TS_VID_256X192 0x00
|
||||
#define TS_VID_320X200 0x40
|
||||
#define TS_VID_320X240 0x80
|
||||
#define TS_VID_360X288 0xC0
|
||||
#define TS_VID_RASTER_BS 6
|
||||
|
||||
#define TS_VID_ZX 0x00
|
||||
#define TS_VID_16C 0x01
|
||||
#define TS_VID_256C 0x02
|
||||
#define TS_VID_TEXT 0x03
|
||||
#define TS_VID_FT812 0x04
|
||||
#define TS_VID_NOGFX 0x20
|
||||
#define TS_VID_MODE_BS 0
|
||||
|
||||
// PALSEL
|
||||
#define TS_PAL_GPAL_MASK 0x0F
|
||||
#define TS_PAL_GPAL_BS 0
|
||||
#define TS_PAL_T0PAL_MASK 0x30
|
||||
#define TS_PAL_T0PAL_BS 4
|
||||
#define TS_PAL_T1PAL_MASK 0xC0
|
||||
#define TS_PAL_T1PAL_BS 6
|
||||
|
||||
// TSU
|
||||
#define TS_TSU_T0ZEN 0x04
|
||||
#define TS_TSU_T1ZEN 0x08
|
||||
#define TS_TSU_T0EN 0x20
|
||||
#define TS_TSU_T1EN 0x40
|
||||
#define TS_TSU_SEN 0x80
|
||||
|
||||
// SYSTEM
|
||||
#define TS_SYS_ZCLK3_5 0x00
|
||||
#define TS_SYS_ZCLK7 0x01
|
||||
#define TS_SYS_ZCLK14 0x02
|
||||
#define TS_SYS_ZCLK_BS 0
|
||||
|
||||
#define TS_SYS_CACHEEN 0x04
|
||||
|
||||
// MEMORY
|
||||
#define TS_MEM_ROM128 0x01
|
||||
#define TS_MEM_W0WE 0x02
|
||||
#define TS_MEM_W0MAP_N 0x04
|
||||
#define TS_MEM_W0RAM 0x08
|
||||
|
||||
#define TS_MEM_LCK512 0x00
|
||||
#define TS_MEM_LCK128 0x40
|
||||
#define TS_MEM_LCKAUTO 0x80
|
||||
#define TS_MEM_LCK1024 0xC0
|
||||
#define TS_MEM_LCK_BS 6
|
||||
|
||||
// INT
|
||||
#define TS_INT_VEC_FRAME 0xFF
|
||||
#define TS_INT_VEC_LINE 0xFD
|
||||
#define TS_INT_VEC_DMA 0xFB
|
||||
#define TS_INT_VEC_WTP 0xF9
|
||||
|
||||
#define TS_INT_MSK_FRAME 0x01
|
||||
#define TS_INT_MSK_LINE 0x02
|
||||
#define TS_INT_MSK_DMA 0x04
|
||||
#define TS_INT_MSK_WTP 0x08
|
||||
|
||||
// DMA
|
||||
#define TS_DMA_WNR 0x80
|
||||
#define TS_DMA_SALGN 0x20
|
||||
#define TS_DMA_DALGN 0x10
|
||||
#define TS_DMA_ASZ 0x08
|
||||
|
||||
#define TS_DMA_RAM 0x01
|
||||
#define TS_DMA_BLT 0x81
|
||||
#define TS_DMA_FILL 0x04
|
||||
#define TS_DMA_SPI_RAM 0x02
|
||||
#define TS_DMA_WTP_RAM 0x07
|
||||
#define TS_DMA_RAM_SPI 0x82
|
||||
#define TS_DMA_IDE_RAM 0x03
|
||||
#define TS_DMA_RAM_IDE 0x83
|
||||
#define TS_DMA_RAM_CRAM 0x84
|
||||
#define TS_DMA_RAM_SFILE 0x85
|
||||
|
||||
#define TS_WPD_GLU 0
|
||||
#define TS_WPD_COM 1
|
||||
|
||||
// SPRITES
|
||||
#define TS_SP_XF 0x80
|
||||
#define TS_SP_YF 0x80
|
||||
#define TS_SP_LEAP 0x40
|
||||
#define TS_SP_ACT 0x20
|
||||
|
||||
#define TS_SP_SIZE8 0x00
|
||||
#define TS_SP_SIZE16 0x02
|
||||
#define TS_SP_SIZE24 0x04
|
||||
#define TS_SP_SIZE32 0x06
|
||||
#define TS_SP_SIZE40 0x08
|
||||
#define TS_SP_SIZE48 0x0A
|
||||
#define TS_SP_SIZE56 0x0C
|
||||
#define TS_SP_SIZE64 0x0E
|
||||
#define TS_SP_SIZE_BS 1
|
||||
|
||||
#define TS_SP_PAL_MASK 0xF0
|
||||
|
||||
#define TS_SP_XF_W 0x8000
|
||||
#define TS_SP_YF_W 0x8000
|
||||
#define TS_SP_LEAP_W 0x4000
|
||||
#define TS_SP_ACT_W 0x2000
|
||||
|
||||
#define TS_SP_SIZE8_W 0x0000
|
||||
#define TS_SP_SIZE16_W 0x0200
|
||||
#define TS_SP_SIZE24_W 0x0400
|
||||
#define TS_SP_SIZE32_W 0x0600
|
||||
#define TS_SP_SIZE40_W 0x0800
|
||||
#define TS_SP_SIZE48_W 0x0A00
|
||||
#define TS_SP_SIZE56_W 0x0C00
|
||||
#define TS_SP_SIZE64_W 0x0E00
|
||||
#define TS_SP_SIZE_BS_W 9
|
||||
|
||||
#define TS_SP_X_MASK_W 0x01FF
|
||||
#define TS_SP_Y_MASK_W 0x01FF
|
||||
#define TS_SP_TNUM_MASK_W 0x0FFF
|
||||
#define TS_SP_PAL_MASK_W 0xF000
|
||||
|
||||
// TILES
|
||||
#define TS_TL_XF 0x40
|
||||
#define TS_TL_YF 0x80
|
||||
#define TS_TL_PAL_MASK 0x30
|
||||
#define TS_TL_PAL_BS 4
|
||||
|
||||
#define TS_TL_XF_W 0x4000
|
||||
#define TS_TL_YF_W 0x8000
|
||||
|
||||
#define TS_TL_TNUM_MASK_W 0x0FFF
|
||||
#define TS_TL_PAL_MASK_W 0x3000
|
||||
#define TS_TL_PAL_BS_W 12
|
||||
@@ -0,0 +1,41 @@
|
||||
|
||||
// This project now builds under SDCC 4.6.0 + `--sdcccall 1` (SDCC's
|
||||
// register calling convention) - see build.bat for why this is pinned
|
||||
// PER-PROJECT, independent of the rest of ft812sdk (which stays on 4.0.0).
|
||||
// This lets us link directly against demyanenko-d/VGMPLAY.WMF's real,
|
||||
// hardware-tested wc_api library (vgm_wc_api.lib, assembled verbatim from
|
||||
// their src_sdcc/lib/wc_api/*.s with the SAME SDCC 4.6.0's sdasz80) instead
|
||||
// of our own hand-rolled __naked wrappers - our attempts at PRSRW+PRIAT (in
|
||||
// three different shapes: globals-based single function, two separate
|
||||
// naked functions, and a stack-based hand-port of their EXX logic) all
|
||||
// corrupted esp32 file loading in ways never fully root-caused.
|
||||
//
|
||||
// Their key-check constants (wc_key_esc=0x17, wc_key_pgup=0x19,
|
||||
// wc_key_pgdn=0x1A) were confirmed to exactly match our own _ESC/_PGU/_PGD
|
||||
// constants in wc_api.h before relying on them - same underlying WC #6006
|
||||
// API, just a different project's wrapper names.
|
||||
//
|
||||
// Everything below is just extern declarations for symbols the linker
|
||||
// pulls out of vgm_wc_api.lib (added to build.bat) - no bodies here.
|
||||
void wc_prwow(void *win);
|
||||
void wc_rresb(void *win);
|
||||
u8 wc_load512(u16 dest, u8 blocks);
|
||||
u8 wc_key_esc(void);
|
||||
u8 wc_key_pgup(void);
|
||||
u8 wc_key_pgdn(void);
|
||||
void wc_prsrw(void *win, const u8 *text, u8 y, u8 x, u16 len);
|
||||
void wc_prsrw_attr(void *win, const u8 *text, u8 y, u8 x, u16 len, u8 attr);
|
||||
|
||||
// wc_exit is ours, not theirs - it unwinds our own crt0.s's saved SP
|
||||
// (_ret_sp) to return control to WC, so there's no equivalent in their
|
||||
// library to borrow. Adjusted for sdcccall(1): a single u8 argument now
|
||||
// arrives directly in A (per their types.h's documented convention),
|
||||
// not on the stack.
|
||||
void wc_exit(u8 rc) __naked
|
||||
{
|
||||
rc; // to avoid SDCC warning
|
||||
__asm
|
||||
ld sp, (_ret_sp)
|
||||
ret
|
||||
__endasm;
|
||||
}
|
||||
+309
@@ -0,0 +1,309 @@
|
||||
|
||||
// WildCommander API Header
|
||||
// Refer to plugins/READ_ME.TXT
|
||||
|
||||
#pragma once
|
||||
|
||||
//---------------------------------------
|
||||
// Addresses
|
||||
#define _WCINT 0x5BFF // адрес обработки int wild commander
|
||||
|
||||
#define _PAGE0 0x6000 // номер страницы подключенной с адреса 0x0000-0x3fff
|
||||
#define _PAGE1 0x6001 // номер страницы подключенной с адреса 0x4000-0x7fff
|
||||
#define _PAGE2 0x6002 // номер страницы подключенной с адреса 0x8000-0xdfff
|
||||
#define _PAGE3 0x6003 // номер страницы подключенной с адреса 0xc000-0xffff
|
||||
#define _ABT 0x6004 // флаг выставляется, если был нажат ESC
|
||||
#define _ENT 0x6005 // флаг выставляется, если был нажат ENTER
|
||||
#define _WCAPI 0x6006 // точка доступа к функциям
|
||||
#define _TMN 0x6009 // синхра. переменная-таймер, инкрементится по инту
|
||||
|
||||
//---------------------------------------
|
||||
// API functions
|
||||
#define _MNGC_PL 0x00 // включение страницы на 0xC000 (из выделенного блока)
|
||||
// нумерация совпадает с использующейся в +36
|
||||
// i:A' - номер страницы (от 0)
|
||||
// 0xFF - страница с фонтом (1го текстового экрана)
|
||||
// 0xFE - первый текстовый экран (в нём панели)
|
||||
#define _MNG0_PL 0x78
|
||||
#define _MNG8_PL 0x79
|
||||
|
||||
#define _PRWOW 0x01 // вывод окна на экран
|
||||
// i:IX - адрес по которому лежит структура окна (SOW)
|
||||
|
||||
#define _RRESB 0x02 // cтирание окна (восстановление информации)
|
||||
// i:IX - SOW
|
||||
|
||||
#define _PRSRW 0x03 // печать строки в окне
|
||||
// i:IX - SOW
|
||||
// HL - Text addres (должен быть в 0x8000-0xBFFF!)
|
||||
// D - Y
|
||||
// E - X
|
||||
// BC - Length
|
||||
|
||||
#define _PRIAT 0x04 // выставление цвета (вызывается сразу после PRSRW)
|
||||
// i:PRSRW - выставленные координаты и длина
|
||||
// A' - цвет
|
||||
|
||||
#define _GADRW 0x05 // получение адреса в окне
|
||||
// i:IX - SOW
|
||||
// D - Y
|
||||
// E - X
|
||||
// o:HL - Address
|
||||
|
||||
#define _CURSOR 0x06 // печать курсора
|
||||
// i:IX - SOW
|
||||
|
||||
#define _CURSER 0x07 // стирание курсора (восстановление цвета)
|
||||
// i:IX - SOW
|
||||
|
||||
#define _YN 0x08 // меню ok/cancel
|
||||
// i:A'
|
||||
// 0x01 - инициализация (вычисляет координаты)
|
||||
// 0x00 - обработка нажатий (вызывать раз в фрейм)
|
||||
// 0xFF - выход
|
||||
// o:NZ - выбран CANCEL
|
||||
// Z - выбран OK
|
||||
|
||||
#define _ISTR 0x09 // редактирование строки
|
||||
// i:A'
|
||||
// 0xFF - инициализация (рисует курсор)
|
||||
// i:HL - адрес строки
|
||||
// DE - CURMAX+CURNOW (длина строки + начальная позиция курсора в ней)
|
||||
// 0x00 - опрос клавиатуры
|
||||
// >опрашивает LF,RG,BackSpace
|
||||
// >собственно редактируется строка
|
||||
// >нужно вызывать каждый фрейм
|
||||
// 0x01 - выход (стирает курсор)
|
||||
|
||||
#define _NORK 0x0A // перевод байта в HEX (текстовый формат)
|
||||
// i:HL - Text Address
|
||||
// A - Value
|
||||
|
||||
#define _DMAPL 0x0D // работа с DMA
|
||||
// i: A' - тип операции
|
||||
// 0x00 - инит S и D (BHL - Source, CDE - Destination)
|
||||
// 0x01 - инит S (BHL)
|
||||
// 0x02 - инит D (CDE)
|
||||
// 0x03 - инит S с пагой из окна (HL, B - 0-3 [номер окна])
|
||||
// 0x04 - инит D с пагой из окна (HL, B - 0-3 [номер окна])
|
||||
// 0x05 - выставление DMA_T (B - кол-во бёрстов)
|
||||
// 0x06 - выставление DMA_N (B - размер бёрста)
|
||||
//
|
||||
// 0xFD - запуск без ожидания завершения (o:NZ - DMA занята)
|
||||
// 0xFE - запуск с ожиданием завершения (o:NZ - DMA занята)
|
||||
// 0xFF - ожидание готовности дма
|
||||
//
|
||||
// в функциях 0x00-0x02 формат B/C следующий:
|
||||
// [7]:%1 - выбор страницы из блока выделенного плагину (0-5)
|
||||
// %0 - выбор страницы из видео буферов (0-31)
|
||||
// [6-0]:номер страницы
|
||||
|
||||
#define _TURBOPL 0x0E // i:B - выбор Z80/AY
|
||||
// 0x00 - меняется частота Z80
|
||||
// i:C - %00 - 3.5 MHz
|
||||
// %01 - 7 MHz
|
||||
// %10 - 14 MHz
|
||||
// %11 - 28 MHz (в данный момент 14MHz)
|
||||
// 0x01 - меняется частота AY
|
||||
// i:C - %00 - 1.75 MHz
|
||||
// %01 - 1.7733 MHz
|
||||
// %10 - 3.5 MHz
|
||||
// %11 - 3.546 MHz
|
||||
|
||||
#define _GEDPL 0x0F // восстановление палитры, всех офсетов и txt режима
|
||||
// ! обязательно вызывать при запуске плагина!
|
||||
// (включает основной txt экран)
|
||||
// i:none
|
||||
|
||||
// клавиатура: NZ - клавиша нажата
|
||||
//--------------------------------------------------
|
||||
#define _SPKE 0x10 // (SPACE)
|
||||
#define _UPPP 0x11 // (UP Arrow)
|
||||
#define _DWWW 0x12 // (Down Arrow)
|
||||
#define _LFFF 0x13 // (Left Arrow)
|
||||
#define _RGGG 0x14 // (Right Arrow)
|
||||
#define _TABK 0x15 // (Tab)
|
||||
#define _ENKE 0x16 // (Enter)
|
||||
#define _ESC 0x17 // (Escape)
|
||||
#define _BSPC 0x18 // (Backspace)
|
||||
#define _PGU 0x19 // (pgUP)
|
||||
#define _PGD 0x1A // (pgDN)
|
||||
#define _HOME 0x1B
|
||||
#define _END 0x1C
|
||||
#define _F1 0x1D
|
||||
#define _F2 0x1E
|
||||
#define _F3 0x1F
|
||||
#define _F4 0x20
|
||||
#define _F5 0x21
|
||||
#define _F6 0x22
|
||||
#define _F7 0x23
|
||||
#define _F8 0x24
|
||||
#define _F9 0x25
|
||||
#define _F10 0x26
|
||||
#define _ALT 0x27
|
||||
#define _SHIFT 0x28
|
||||
#define _CTRL 0x29
|
||||
#define _KBSCN 0x2A // опрос клавиш
|
||||
// i:A' - обработчик
|
||||
// 0x00 - учитывает SHIFT (TAI1/TAI2)
|
||||
// 0x01 - всегда выдает код из TAI1
|
||||
// o: NZ: A - TAI1/TAI2 (see PS2P.ASM)
|
||||
// Z: A=0x00 - unknown key
|
||||
// A=0xFF - buffer end
|
||||
|
||||
#define _CAPS 0x2C // (Caps Lock)
|
||||
#define _ANYK 0x2D // any key
|
||||
#define _USPO 0x2E // pause for keyboard ready (recomended for NUSP)
|
||||
#define _NUSP 0x2F // waiting for any key
|
||||
|
||||
// работа с файлами:
|
||||
//---------------------------------------
|
||||
#define _LOAD512 0x30 // потоковая загрузка файла
|
||||
// i:HL - Address
|
||||
// B - Blocks (512b)
|
||||
// o:HL - New Value
|
||||
|
||||
#define _SAVE512 0x31 // потоковая запись файла
|
||||
// i:HL - Address
|
||||
// B - Blocks (512b)
|
||||
// o:HL - New Value
|
||||
|
||||
#define _GIPAGPL 0x32 // позиционировать на начало файла
|
||||
// (сразу после запуска плагина — уже вызвана)
|
||||
|
||||
#define _TENTRY 0x33 // получить ENTRY(32) из коммандера
|
||||
// (структура как в каталоге FAT32)
|
||||
// i:DE - Address
|
||||
// o:DE(32) - ENTRY
|
||||
|
||||
#define _CHTOSEP 0x34 // разложение цепочки активного файла в сектора
|
||||
// i:DE - BUFFER (куда кидать номера секторов)
|
||||
// BC - BUFFER END (=BUFFER+BUFFERlenght)
|
||||
|
||||
#define _TENTRYN 0x35 // reserved ???
|
||||
|
||||
#define _TMRKDFL 0x36 // получить заголовок маркированного файла
|
||||
// i:HL - File number (1-2047)
|
||||
// DE - Address (32byte buffer) [0x8000-0xBFFF!]
|
||||
// (if HL=0// o:BC - count of marked files)
|
||||
// o:NZ - File not found or other error
|
||||
// Z - Buffer updated
|
||||
// >так же делается позиционированиена на начало этого файла!!!
|
||||
// >соотв. функции LOAD512/SAVE512 будут читать/писать этот файл от начала.
|
||||
|
||||
#define _TMRKNXT 0x37 // reserved ???
|
||||
|
||||
#define _STREAM 0x39 // работа с потоками
|
||||
// i:D - номер потока (0/1)
|
||||
// B - устройство: 0-SD(ZC)
|
||||
// 1-Nemo IDE Master
|
||||
// 2-Nemo IDE Slave
|
||||
// C - раздел (не учитывается)
|
||||
// BC=0xFFFF: включает поток из D (не возвращает флагов)
|
||||
// иначе создает/пересоздает поток.
|
||||
// o:NZ - устройство или раздел не найдены
|
||||
// Z - можно начинать работать с потоком
|
||||
|
||||
#define _MKFILE 0x3A // создание файла в активном каталоге
|
||||
// i:DE(12) - name(8)+ext(3)+flag(1)
|
||||
// HL(4) - File Size
|
||||
// o:NZ - Operation failed
|
||||
// A - type of error (in next versions!)
|
||||
// Z - File created
|
||||
// ENTRY(32) [use TENTRY]
|
||||
|
||||
#define _FENTRY 0x3B // поиск файла/каталога в активной директории
|
||||
// i:HL - flag(1),name(1-12),0x00
|
||||
// flag:0x00 - file
|
||||
// 0x10 - dir
|
||||
// name:"NAME.TXT","DIR"...
|
||||
// o: Z - entry not found
|
||||
// NZ - CALL GFILE/GDIR for activating file/dir
|
||||
// [DE,HL] - file length
|
||||
|
||||
#define _LOAD256 0x3C // reserved ???
|
||||
#define _LOADNONE 0x3D // reserved ???
|
||||
|
||||
#define _GFILE 0x3E // выставить указатель на начало найденного файла
|
||||
// (вызывается после FENTRY!)
|
||||
|
||||
#define _GDIR 0x3F // сделать найденный каталог активным
|
||||
// (вызывается после FENTRY!)
|
||||
|
||||
// работа с режимами графики
|
||||
//---------------------------------------
|
||||
#define _MNGV_PL 0x40 // включение видео страницы
|
||||
// i:A' - номер видео страницы
|
||||
// 0x00 - основной экран (тхт)
|
||||
// >палитра выставляется автоматом
|
||||
// >как и все режимы и смещения
|
||||
// 0x01 - 1й видео буфер (16 страниц)
|
||||
// 0x02 - 2й видео буфер (16 страниц)
|
||||
|
||||
#define _MNGCVPL 0x41 // включение страницы из видео буферов
|
||||
// i:A' - номер страницы
|
||||
// 0x00-0x0F - страницы из 1го видео буфера
|
||||
// 0x10-0x1F - страницы из 2го видео буфера
|
||||
|
||||
#define _GVmod 0x42 // включение видео режима (разрешение+тип)
|
||||
// i:A' - видео режим
|
||||
// [7-6]: %00 - 256x192
|
||||
// %01 - 320x200
|
||||
// %10 - 320x240
|
||||
// %11 - 360x288
|
||||
// [5-2]: %0000
|
||||
// [1-0]: %00 - ZX
|
||||
// %01 - 16c
|
||||
// %10 - 256c
|
||||
// %11 - txt
|
||||
|
||||
#define _GYoff 0x43 // выставление смещения экрана по Y
|
||||
// i:HL - Y (0-511)
|
||||
|
||||
#define _GXoff 0x44 // выставление смещения экрана по X
|
||||
// i:HL - X (0-511)
|
||||
|
||||
#define _GVtm 0x69 // выставление страницы для TileMap
|
||||
#define _GVtl 0x70 // выставление страницы для TileGraphics
|
||||
#define _GVsgp 0x71 // выставление страницы для SpriteGraphics
|
||||
|
||||
typedef enum
|
||||
{
|
||||
WC_WIND_HDR_TXT = 1,
|
||||
} WC_WIND_TYPE;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
WC_WIND_TYPE type;
|
||||
u8 curs_col_mask;
|
||||
u8 x_pos;
|
||||
u8 y_pos;
|
||||
u8 x_size;
|
||||
u8 y_size;
|
||||
u8 attr;
|
||||
u8 res0;
|
||||
u16 restore_addr;
|
||||
u8 div0;
|
||||
u8 div1;
|
||||
u16 *hdr_txt;
|
||||
u16 *ftr_txt;
|
||||
u16 *wnd_txt;
|
||||
} WC_TX_WINDOW;
|
||||
|
||||
typedef enum
|
||||
{
|
||||
WC_CALL_EXT = 0x00,
|
||||
WC_CALL_ONLOAD = 0x01,
|
||||
WC_CALL_TIMER = 0x02,
|
||||
WC_CALL_MENU = 0x03,
|
||||
WC_CALL_EDIT = 0x14,
|
||||
} WC_CALL_TYPE;
|
||||
|
||||
typedef enum
|
||||
{
|
||||
WC_EXIT = 0,
|
||||
WC_TYPE_UNK = 1,
|
||||
WC_NEXT_FILE = 2,
|
||||
WC_REREAD_DIR = 3,
|
||||
WC_PREV_FILE = 4,
|
||||
} WC_EXIT_SIGNAL;
|
||||
+26
@@ -0,0 +1,26 @@
|
||||
|
||||
#include <defs.h>
|
||||
#include <wc_h.h>
|
||||
|
||||
static const WC_HDR hdr =
|
||||
{
|
||||
/* +00 -reserved- */ "",
|
||||
/* +16 Magic string */ {'W', 'i', 'l', 'd', 'C', 'o', 'm', 'm', 'a', 'n', 'd', 'e', 'r', 'M', 'D', 'L'},
|
||||
/* +32 Format version */ 7,
|
||||
/* +33 -reserved- */ "",
|
||||
/* +34 Number of pages */ 1,
|
||||
/* +35 Page at 0x8000 */ 0,
|
||||
/* +36 Page definitions */ {
|
||||
/* +0 Page, +1 NBlocks */ {0, N_BLK0}
|
||||
/* */ },
|
||||
/* +48 -reserved- */ "",
|
||||
/* +64 Extensions */ {
|
||||
/* */ {'X', 'M', ' '},
|
||||
/* */ {'X', 'M', 'Z'},
|
||||
/* */ {'S', '3', 'M'}
|
||||
/* */ },
|
||||
/* +160 0x00 */ "",
|
||||
/* +161 Max file size */ 0xFFFFFFFF,
|
||||
/* +165 Plugin name */ "XM Player",
|
||||
/* +197 Starting condition */ SC_MENU // also run by extension
|
||||
};
|
||||
+36
@@ -0,0 +1,36 @@
|
||||
|
||||
#pragma once
|
||||
|
||||
#include <defs.h>
|
||||
|
||||
typedef enum
|
||||
{
|
||||
SC_EXT,
|
||||
SC_ONLOAD,
|
||||
SC_TIMER,
|
||||
SC_MENU,
|
||||
} SCOND;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
u8 page;
|
||||
u8 size;
|
||||
} WC_HDR_BLK;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
u8 res0[16]; /* +00 reserved */
|
||||
char mdl[16]; /* +16 Magic string */
|
||||
u8 ver; /* +32 Format version */
|
||||
u8 res1[1]; /* +33 reserved */
|
||||
u8 num_pages; /* +34 Number of pages */
|
||||
u8 page2; /* +35 Page at 0x8000 */
|
||||
WC_HDR_BLK blk[6]; /* +36 Page definitions */
|
||||
u8 res2[16]; /* +48 -reserved- */
|
||||
char ext[32][3]; /* +64 Extensions */
|
||||
u8 res3[1]; /* +160 0x00 */
|
||||
u32 file_max_size; /* +161 Max file size */
|
||||
char name[32]; /* +165 Plugin name */
|
||||
SCOND cond; /* +197 Starting condition */
|
||||
u8 res4[314]; /* +198 -reserved- */
|
||||
} WC_HDR;
|
||||
Binary file not shown.
Reference in New Issue
Block a user