;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" kTotalIndexFile !byte 9 !raw "TOTAL.IDX" 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" kDHGRActionIndexRecord !source "src/index/dhgr.idx.a" kGRActionIndexRecord !source "src/index/gr.idx.a" kDemoDirectory !byte 5 !raw "DEMO/" kGameDirectory !byte 2 !raw "X/" kGameDirectoryLen = 3 ; we need this elsewhere kFXDirectory !byte 3 !raw "FX/" kPrelaunchIndexRecord !byte 13 !raw "PRELAUNCH.IDX" kStandardPrelaunch !byte 8 !raw "STANDARD" kGlobalPrefsFilename !byte 10 !raw "PREFS.CONF" kAttractModeIndexRecord !source "src/index/attract.idx.a" kMiniAttractIndexRecord !source "src/index/miniattract.idx.a" kAttractModeSlideshowIndexRecord !source "src/index/slideshow.idx.a" kFXIndexRecord !source "src/index/fx.idx.a" kDFXIndexRecord !source "src/index/dfx.idx.a" kGameHelpIndexRecord !source "src/index/gamehelp.idx.a" kSHRArtworkIndexRecord !source "src/index/artwork.idx.a" 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" kSearchCacheFile !byte 11 !raw "CACHE" gCacheHasJoystick !raw "_" gCacheHas128K !raw "_" !raw ".IDX"