## Standard Stuff label { addr $2000; name "PPU_CTRL"; }; label { addr $2001; name "PPU_MASK"; }; label { addr $2002; name "PPU_STATUS"; }; label { addr $2003; name "PPU_OAMADDR"; }; label { addr $2004; name "PPU_OAMDATA"; }; label { addr $2005; name "PPU_SCROLL"; }; label { addr $2006; name "PPU_ADDR"; }; label { addr $2007; name "PPU_DATA"; }; label { addr $4000; name "APU_PULSE1"; size 4; }; label { addr $4004; name "APU_PULSE2"; size 4; }; label { addr $4008; name "APU_TRI"; size 4; }; label { addr $400C; name "APU_NOISE"; size 4; }; label { addr $4010; name "DMC_FREQ"; }; label { addr $4011; name "DMC_RAW"; }; label { addr $4012; name "DMC_START"; }; label { addr $4013; name "DMC_LEN"; }; label { addr $4014; name "OAM_DMA"; }; label { addr $4015; name "APU_STATUS"; }; label { addr $4016; name "JOY1"; }; label { addr $4017; name "JOY2"; }; ## FDS label { addr $4020; name "FDS_IRQ_TIMER"; size 2; }; label { addr $4022; name "FDS_IRQ_TIMER_CTRL"; }; label { addr $4023; name "FDS_IO_ENABLE"; }; label { addr $4024; name "FDS_WRITE_DATA"; }; label { addr $4025; name "FDS_CTRL"; }; label { addr $4026; name "FDS_EXT_OUT"; }; label { addr $4030; name "FDS_STATUS"; }; label { addr $4031; name "FDS_READ_DATA"; }; label { addr $4032; name "FDS_DRIVE_STATUS"; }; label { addr $4033; name "FDS_EXT_IN"; }; # Zero-page variables label { addr $00; name "FDS_tempzp"; size 16; }; label { addr $f1; name "FDS_joypad"; size 8; }; ## Register mirrors label { addr $f9; name "FDS_EXT_Mirror"; }; label { addr $fa; name "FDS_CTRL_Mirror"; }; label { addr $fb; name "FDS_JOY1_Mirror"; }; label { addr $fc; name "FDS_Y_SCROLL_Mirror"; }; label { addr $fd; name "FDS_X_SCROLL_Mirror"; }; label { addr $fe; name "FDS_PPU_MASK_Mirror"; }; label { addr $ff; name "FDS_PPU_CTRL_Mirror"; }; # Stack label { addr $0100; name "FDS_NMI_FLAG"; }; label { addr $0101; name "FDS_IRQ_FLAG"; }; label { addr $0102; name "FDS_RESET_FLAG"; }; label { addr $0103; name "FDS_RESET_TYPE"; }; # RAM label { addr $0300; name "FDS_VRAMBuffer_Size"; }; label { addr $0301; name "FDS_VRAMBuffer_End"; }; label { addr $0302; name "FDS_VRAMBuffer"; size 253; }; # Data range { start $e000; end $e000; type ByteTable; }; range { name "FDS_CHRData"; start $e001; end $e148; type ByteTable; }; range { name "FDS_FDSStr"; start $e6d5; end $e6e2; type TextTable; }; range { name "FDS_Kyodaku"; start $ed37; end $ee16; type ByteTable; }; range { name "FDS_FileList"; start $eff5; end $effe; type ByteTable; }; range { name "FDS_Unk_Data"; start $efff; end $f0b3; type ByteTable; }; range { start $f175; end $f178; type ByteTable; }; range { start $f2e8; end $f2eb; type ByteTable; }; range { start $f36e; end $f375; type ByteTable; }; range { start $f484; end $f48b; type ByteTable; }; range { start $f56b; end $f5b7; type ByteTable; }; range { start $f635; end $fe35; type ByteTable; }; range { start $ff00; end $ff5b; type ByteTable; }; range { start $ff6f; end $ff7a; type ByteTable; }; range { start $fff6; end $fff9; type ByteTable; }; # Routines ## Disk I/O label { addr $e1f8; name "FDS_LoadFiles"; paramsize 4; }; label { addr $e237; name "FDS_AppendFile"; paramsize 4; }; label { addr $e239; name "FDS_WriteFile"; paramsize 4; }; label { addr $e2b7; name "FDS_CheckFileCount"; paramsize 2; }; label { addr $e2bb; name "FDS_AdjustFileCount"; paramsize 2; }; label { addr $e301; name "FDS_SetFileCount1"; paramsize 2; }; label { addr $e305; name "FDS_SetFileCount"; paramsize 2; }; label { addr $e32a; name "FDS_GetDiskInfo"; paramsize 2; }; ## Low-level disk I/O label { addr $e26b; name "FDS_WriteLastFile"; }; label { addr $e290; name "FDS_CheckLastFile"; }; label { addr $e2ab; name "FDS_SetFileCnt"; }; label { addr $e2f7; name "FDS_GetFileCount"; }; label { addr $e3e7; name "FDS_FetchDiskPtrs"; }; label { addr $e3ea; name "FDS_FetchDiskPtrs_WriteProtectCheck"; }; label { addr $e445; name "FDS_CheckDiskHeader"; }; label { addr $e484; name "FDS_GetNumFiles"; }; label { addr $e492; name "FDS_SetNumFiles"; }; label { addr $e4a0; name "FDS_FileMatchTest"; }; label { addr $e4da; name "FDS_SkipFiles"; }; label { addr $e4f9; name "FDS_LoadData"; }; label { addr $e506; name "FDS_ReadData"; }; label { addr $e5b5; name "FDS_SaveData"; }; label { addr $e64d; name "FDS_WaitForReady"; }; label { addr $e685; name "FDS_StopMotor"; }; label { addr $ee17; name "FDS_StartMotor"; }; label { addr $e68f; name "FDS_CheckBlockType"; }; label { addr $e6b0; name "FDS_WriteBlockType"; }; label { addr $e6e3; name "FDS_StartXfer"; }; label { addr $e706; name "FDS_EndOfBlockRead"; }; label { addr $e729; name "FDS_EndOfBlockWrite"; }; label { addr $e74c; name "FDS_CheckDiskSet"; }; label { addr $e761; name "FDS_ReadCRC_Unused"; }; label { addr $e794; name "FDS_Xfer1stByte"; }; label { addr $e7a3; name "FDS_XferByte"; }; ### Disk transfer return states label { addr $e778; name "FDS_XferDone"; }; label { addr $e77c; name "FDS_XferFailOnCarry"; }; label { addr $e77f; name "FDS_XferFailOnNEQ"; }; label { addr $e781; name "FDS_XferFail"; }; ### Low-level helpers label { addr $e3da; name "FDS_AddYtoPtrA"; }; label { addr $e583; name "FDS_LoadSizeAndSrc"; }; label { addr $e7a7; name "FDS_Inc0ADec0C"; }; label { addr $e7ad; name "FDS_Dec0C"; }; ## General purpose label { addr $e149; name "FDS_Delay131"; }; label { addr $e153; name "FDS_Delayms"; }; label { addr $e161; name "FDS_DisPFObj"; }; label { addr $e16b; name "FDS_EnPFObj"; }; label { addr $e171; name "FDS_DisObj"; }; label { addr $e178; name "FDS_EnObj"; }; label { addr $e17e; name "FDS_DisPF"; }; label { addr $e185; name "FDS_EnPF"; }; label { addr $e1b2; name "FDS_VINTWait"; }; label { addr $e7bb; name "FDS_VRAMStructWrite"; paramsize 2; }; label { addr $e844; name "FDS_FetchDirectPtr"; }; label { addr $e86a; name "FDS_WriteVRAMBuffer"; }; label { addr $e8b3; name "FDS_ReadVRAMBuffer"; }; label { addr $e8d2; name "FDS_PrepareVRAMString"; paramsize 2; }; label { addr $e8e1; name "FDS_PrepareVRAMStrings"; paramsize 2; }; label { addr $e94f; name "FDS_GetVRAMBufferByte"; }; label { addr $e97d; name "FDS_Pixel2NamConv"; }; label { addr $e997; name "FDS_PNam2PixelConv"; }; label { addr $e9b1; name "FDS_Random"; }; label { addr $e9c8; name "FDS_SpriteDMA"; }; label { addr $e9d3; name "FDS_CounterLogic"; }; label { addr $e9eb; name "FDS_ReadPads"; }; label { addr $ea0d; name "FDS_OrPads"; }; label { addr $ea1a; name "FDS_ReadDownPads"; }; label { addr $ea1f; name "FDS_ReadOrDownPads"; }; label { addr $ea36; name "FDS_ReadDownVerifyPads"; }; label { addr $ea4c; name "FDS_ReadOrDownVerifyPads"; }; label { addr $ea68; name "FDS_ReadDownExpPads"; }; label { addr $ea84; name "FDS_VRAMFill"; }; label { addr $ead2; name "FDS_MemFill"; }; label { addr $eaea; name "FDS_SetScroll"; }; ### Jump table implementation uses an inline pointer table of an arbitrary size, ### which can't be represented here... label { addr $eafd; name "FDS_JumpEngine"; }; label { addr $eb13; name "FDS_ReadKeyboard"; }; label { addr $ebaf; name "FDS_LoadTileset"; paramsize 2; }; label { addr $ec22; name "FDS_UploadObject"; }; # Hardware vectors label { addr $e18b; name "NMI"; }; label { addr $ee24; name "Reset"; }; label { addr $e1c7; name "IRQ"; }; 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"; }; label { addr $FFFA; name "CPU_Vector_NMI"; }; label { addr $FFFC; name "CPU_Vector_Reset"; }; label { addr $FFFE; name "CPU_Vector_IRQ"; };