Add sf_rom-qd disassembly; Update other labels

- Added more FDS function & register labels
- Added the FDS vectors to labels.cfg
- Added configs for the sf_rom-qd ROM for pre and post copy.
This commit is contained in:
Zorchenhimer 2025-12-19 22:06:38 -05:00
parent 08a1445d83
commit b42557aa01
Signed by: Zorchenhimer
GPG Key ID: 70A1AB767AAB9C20
6 changed files with 131 additions and 15 deletions

View File

@ -5,11 +5,14 @@ export PATH := $(PATH):/home/nick/code/nes/go-fds/bin
all: dasm/ bins/ \
dasm/disksys.asm \
dasm/dk3_file4.asm \
dasm/dk3_file4-post-copy.asm
dasm/dk3_file4-post-copy.asm \
dasm/sf_rom-qd_file1_precopy.asm \
dasm/sf_rom-qd_file1_postcopy.asm
dasm/dk3_file4.asm: bins/dk3_file4.bin dk3_file4.cfg labels.cfg
dasm/dk3_file4-post-copy.asm: bins/dk3_file4.bin dk3_file4-post-copy.cfg labels.cfg
dasm/disksys.asm: disksys.cfg labels.cfg
dasm/sf_rom-qd_file1_precopy.asm: bins/sf_rom-qd_file1.bin
dasm/sf_rom-qd_file1_postcopy.asm: bins/sf_rom-qd_file1.bin
clean:
-rm dasm/* bins/*
@ -26,5 +29,5 @@ dasm/%.asm: %.cfg.tmp
bins/dk3_file4.bin: roms/sf_dk3.fds
fdsextract --side 0 --file-num 4 --output $@ $^
#bin/dk3_file4.bin:
# fdsextract --side 0 --file-num 4 --output $@
bins/sf_rom-qd_file1.bin: roms/sf_rom-qd.fds
fdsextract --side 0 --file-num 1 --output $@ $^

View File

@ -6,29 +6,31 @@ global {
comments 3;
};
label { addr $4C00; name "SF_4C00"; };
label { addr $7C47; name "L7C47"; paramsize 3; };
label { addr $7C5F; name "L7C5F_loop"; };
label { addr $7D83; name "L7D83_loop"; };
label { addr $7DCA; name "SF_disable_fds_io"; };
# "cv" prefix == "code var" (self modifying code)
label { addr $7C6B; name "cv7C6B"; };
label { addr $7C6C; name "cv7C6C"; };
label { addr $7C7F; name "cv7C7F"; };
label { addr $7C80; name "cv7C80"; };
label { addr $7C87; name "L7C87_loop"; };
label { addr $7CB7; name "L7CB7_next"; };
label { addr $7C8C; name "cv7C8C"; };
label { addr $7C8D; name "cv7C8D"; };
label { addr $7CE2; name "cv7CE2"; };
label { addr $7CE5; name "cv7CE5"; };
label { addr $7D2E; name "cv7D2E"; };
label { addr $7D2E; name "cv7D2E"; comment "lda immediate value"; };
label { addr $7D3B; name "cv7D3B"; };
label { addr $7D88; name "cv7D88"; };
label { addr $7D88; name "cv7D88"; comment "sta addr high byte"; };
label { addr $7D75; name "cv7D75"; };
range { start $7C47; end $7DB1; type code; };

View File

@ -7,13 +7,6 @@ global {
comments 3;
};
range {
name "vectors";
type addrtable;
start $DFF6;
end $DFFF;
};
range { start $DDF1; end $DEFF; type bytetable; };
range { start $DF39; end $DFD8; type bytetable; };
range { start $DFE3; end $DFEF; type bytetable; };

View File

@ -1,6 +1,33 @@
label { addr $0100; name "FDS_nmi_flags"; };
label { addr $0101; name "FDS_irq_flags"; };
label { addr $4020; name "FDS_4020_TimerIRQReloadLow"; };
label { addr $4021; name "FDS_4021_TimerIRQReloadHigh"; };
label { addr $4022; name "FDS_4022_TimerIRQControl"; };
label { addr $4023; name "FDS_4023_MasterIO"; };
label { addr $4024; name "FDS_4024_WriteData"; };
label { addr $4025; name "FDS_4025_Control"; };
label { addr $4026; name "FDS_4026_Ext"; };
label { addr $4030; name "FDS_4030_DiskStatus"; };
label { addr $4031; name "FDS_4031_ReadData"; };
label { addr $4032; name "FDS_4032_DriveStatus"; };
label { addr $4033; name "FDS_4032_ExtRead"; };
label { addr $E161; name "FDS_disable_drawing"; };
label { addr $E153; name "FDS_delay"; };
label { addr $E185; name "FDS_enable_bg"; };
label { addr $E1B2; name "FDS_wait_for_vblank"; };
label { addr $E237; name "FDS_append_file"; paramsize 4; };
label { addr $E7BB; name "FDS_write_vram_data"; paramsize 2; };
label { addr $EAEA; name "FDS_set_scroll_and_nametable"; };
label { addr $F431; name "FDS_F431"; }; # ???
range { start $DFF6; end $DFFF; type addrtable; };
label { addr $DFF6; name "FDS_Vector_DiskNMI1"; size 2; };
label { addr $DFF8; name "FDS_Vector_DiskNMI2"; size 2; };
label { addr $DFFA; name "FDS_Vector_DiskNMI3"; size 2; };
label { addr $DFFC; name "FDS_Vector_DiskReset"; size 2; };
label { addr $DFFE; name "FDS_Vector_DiskIRQ"; size 2; };
label { addr $4C00; name "SF_4C00"; };

View File

@ -0,0 +1,56 @@
global {
cpu "6502";
inputname "bins/sf_rom-qd_file1.bin";
startaddr $5000;
inputoffs $0800;
commentcolumn 50;
comments 3;
};
range { start $5FC0; end $5FE0; type bytetable; name "precopy_loop"; };
range { start $5FE1; end $5FF7; type bytetable; };
range { start $5739; end $57DF; type bytetable; };
label { addr $57C0; name "precopy_loop"; };
range { start $57E0; end $57F5; type bytetable; };
range { start $57F6; end $57FF; type addrtable; };
label { addr $57F6; name "FDS_VectorMirror_DiskNMI1"; size 2; };
label { addr $57F8; name "FDS_VectorMirror_DiskNMI2"; size 2; };
label { addr $57FA; name "FDS_VectorMirror_DiskNMI3"; size 2; };
label { addr $57FC; name "FDS_VectorMirror_DiskReset"; size 2; };
label { addr $57FE; name "FDS_VectorMirror_DiskIRQ"; size 2; };
label { addr $5441; name "L5441_draw_screen"; };
label { addr $5436; name "L5436_ResetFDSIO"; };
label { addr $510A; name "L510A_wait_for_eject"; };
label { addr $555C; name "L555C_write_text"; comment "the inline arguments are rewritten before calling this routine (sometimes)"; };
label { addr $5567; name "L5567_text_data_addr"; size 2; };
label { addr $5584; name "L5584_write_selection_attr"; };
range { start $555A; end $555B; type addrtable; };
range { start $51FA; end $51FB; type addrtable; };
range { start $512D; end $512E; type addrtable; };
range { start $5196; end $5197; type addrtable; };
# VRAM structs
range { start $5493; end $54A6; name "vram_data_01"; type bytetable; comment "palettes"; };
range { start $54A7; end $54C1; name "vram_data_02"; type bytetable; comment "tiles"; };
range { start $54C2; end $54DD; name "vram_data_03"; type bytetable; comment "tiles"; };
range { start $54DE; end $54F9; name "vram_data_04"; type bytetable; comment "tiles"; };
range { start $54FA; end $5514; name "vram_data_05"; type bytetable; comment "tiles"; };
range { start $5515; end $5524; name "vram_data_06"; type bytetable; comment "tiles"; };
range { start $5525; end $5530; name "vram_data_07"; type bytetable; comment "attributes"; };
range { start $5531; end $553C; name "vram_data_08"; type bytetable; comment "attributes"; };
range { start $556C; end $5583; name "vram_data_09"; type bytetable; comment "eject disk card text"; };
range { start $51FC; end $5213; name "vram_data_10"; type bytetable; comment "select scroll text"; };
label { addr $5211; name "vram_data_10_value"; comment "$11 or $1F for H or V"; };
range { start $5597; end $559B; name "vram_data_11"; type bytetable; comment "selection attr"; };
label { addr $559A; name "vram_data_11_value"; };
range { start $512F; end $5146; name "vram_data_12"; type bytetable; };
range { start $5198; end $51AF; name "vram_data_13"; type bytetable; comment "set new disk card text"; };
range { start $5253; end $525C; name "DiskID_5253"; type bytetable; };

View File

@ -0,0 +1,35 @@
global {
cpu "6502";
inputname "bins/sf_rom-qd_file1.bin";
startaddr $D000;
commentcolumn 50;
comments 3;
};
#range {
# name "vectors";
# type addrtable;
# start $DFF6;
# end $DFFF;
#};
range { start $DFE3; end $DFEF; type bytetable; };
range { start $DFC0; end $DFE0; type code; name "LDFC0_reset"; };
range { start $DF00; end $DF1B; type code; };
# Code that's copied to a lower address
range { start $D000; end $DEFF; type bytetable; };
range { start $DF1E; end $DFBF; type bytetable; };
range { start $DFF1; end $DFF5; type bytetable; };
label { addr $DF07; name "LDF07_inner"; };
label { addr $DF05; name "LDF05_outer"; };
label { addr $DF09; name "cvDF09"; };
label { addr $DF0C; name "cvDF0C"; };
# Uses NMI vector as a reset vector
label { addr $DFF0; name "LDFF0_irq"; };