;license:MIT ;(c) 2018-2021 by 4am ; ; ProDOS - functions for constructing and passing around ProDOS pathnames ; ; Public functions ; - SetPath ; - AddToPath ; ;------------------------------------------------------------------------------ ; SetPath/AddToPath ; append a length-prefixed string to gPathname ; SetPath will reset the path first ; ; in: A contains low byte of address of length-prefixed string to append ; Y contains high byte of address of length-prefixed string to append ; out: all registers and flags clobbered ; $02/$03 (PTR/PTR+1) clobbered ; gPathname updated with concatenated length-prefixed string ;------------------------------------------------------------------------------ SetPath kRootDirectory=*+1 ldx #0 stx gPathname ; execution falls through here !if RELBASE != $2000 { !ifdef PASS2 { } else { ;PASS2 !if * != iAddToPath { !error "iAddToPath=",*, ", fix constants.a, rebuild prelaunch" } } } AddToPath +ST16 PTR ldy #0 lda (PTR),y ; length of this segment beq @done tay iny sty @max ldx gPathname ; current pathname length ldy #$01 - lda (PTR),y sta gPathname+1,x inx iny @max = *+1 cpy #$D1 ; SMC bcc - stx gPathname @done rts kTotalDataFile !byte 10 !raw "TOTAL.DATA" kHGRTitleDirectory !byte 10 !raw "TITLE.HGR/" kDHGRTitleDirectory !byte 11 !raw "TITLE.DHGR/" kAnimatedTitleDirectory !byte 15 !raw "TITLE.ANIMATED/" kHGRActionIndexFile !byte 8 !raw "HGR" gHGRActionIndexNumber !raw "_" !raw ".IDX" kHGRActionDataFile=kTotalDataFile kDHGRActionIndexFile !byte 8 !raw "DHGR.IDX" kDHGRActionDataFile=kTotalDataFile kDHGRActionDirectory !byte 12 !raw "ACTION.DHGR/" kGRActionDirectory !byte 10 !raw "ACTION.GR/" kDemoDirectory !byte 5 !raw "DEMO/" kGameDirectory !byte 2 !raw "X/" kGameDirectoryLen = 3 ; we need this elsewhere kFXDirectory !byte 3 !raw "FX/" kPrelaunchIndexFile !byte 13 !raw "PRELAUNCH.IDX" kPrelaunchFulFile=kTotalDataFile kStandardPrelaunch !byte 8 !raw "STANDARD" kGlobalPrefsFilename !byte 10 !raw "PREFS.CONF" kAttractModeIndexFile !byte 11 !raw "ATTRACT.IDX" kMiniAttractIndexFile !byte 15 !raw "MINIATTRACT.IDX" kAttractModeFulFile=kTotalDataFile kAttractModeSlideshowIndexFile !byte 13 !raw "SLIDESHOW.IDX" kAttractModeSlideshowFulFile=kTotalDataFile kFXIndexFile !byte 6 !raw "FX.IDX" kFXFile=kTotalDataFile kDFXIndexFile !byte 7 !raw "DFX.IDX" kGameHelpIndexFile !byte 12 !raw "GAMEHELP.IDX" kGameHelpFile=kTotalDataFile kSHRArtworkIndexFile !byte 11 !raw "ARTWORK.IDX" kSHRArtworkDataFile=kTotalDataFile kCreditsFile !byte 7 !raw "CREDITS" kHelpBackgroundFile !byte 4 !raw "HELP" kHelpTextFile !byte 8 !raw "HELPTEXT" kTitleFile !byte 5 !raw "TITLE" kCoverFile !byte 5 !raw "COVER" kCoverFadeFile !byte 9 !raw "COVERFADE" kGRFizzleFile !byte 9 !raw "GR.FIZZLE" kSFXFizzleFile !byte 10 !raw "SHR.FIZZLE" kDecrunchFile !byte 8 !raw "DECRUNCH" kJoystickFile !byte 8 !raw "JOYSTICK" kSearchIndexFile !byte 12 !raw "SEARCH" gSearchHasJoystick !raw "_" gSearchHas128K !raw "_" !raw ".IDX"