4sports/src/glue.prorwts2.lc2.a

56 lines
2.1 KiB
Plaintext
Raw Normal View History

2021-02-16 06:01:22 +00:00
;license:MIT
;(c) 2018-2020 by 4am & qkumba
;
; ProRWTS2 glue functions
;
; /!\ These live in LC RAM 2 and rely on the ProRWTS code which is also in LC RAM 2. /!\
; Code in LC RAM 1 (which is most program code) should call the functions in glue.prorwts2
; and parse.prefs which handle bank switching for you.
LoadFileInternal
2022-08-23 02:04:55 +00:00
ldx #0 ; 0 = read into main memory
2021-02-16 06:01:22 +00:00
LoadFileAuxInternal
+LDADDR gPathname
2022-08-23 02:04:55 +00:00
LoadFileDirect
2021-02-16 06:01:22 +00:00
+ST16 namlo ; set filename
2022-08-23 02:04:55 +00:00
txa
pha
2021-02-16 06:01:22 +00:00
jsr traverse ; go to subdirectory, set up filename for read
lda #cmdread ; read (instead of write)
sta reqcmd
lsr
sta auxreq
2022-08-23 02:04:55 +00:00
lda ldrhi
2021-02-16 06:01:22 +00:00
bne + ; if caller provided a load address, use it
sta sizelo ; otherwise query the load address from file metadata
sta sizehi ; 0 = query load address
jsr hddopendir ; call ProRWTS2
+LD16 ldrlo2
+ST16 ldrlo
+ lda #$FF ; read entire file (ProRWTS2 will figure out exact size)
2022-08-23 02:04:55 +00:00
LoadFileInternal_SizePatch
2021-02-16 06:01:22 +00:00
sta sizehi
2022-08-23 02:04:55 +00:00
pla
2021-02-16 06:01:22 +00:00
sta auxreq
JumpOpen
jmp hddopendir ; exit via ProRWTS2
SaveSmallFileInternal
+LDADDR gPathname
+ST16 namlo ; set filename for ProRWTS2
jsr traverse ; go to subdirectory, set up filename for read
;lda #cmdread ; read (instead of write)
;sta reqcmd
lda #0 ; 0 = read into main memory
sta sizelo
;sta sizehi ; 0 = query load address
2022-08-23 02:04:55 +00:00
;jsr hddopendir ; call ProRWTS2
2021-02-16 06:01:22 +00:00
;lda ldrlo2
sta ldrlo
2022-08-23 02:04:55 +00:00
lda #>kGlobalPrefsBuffer ;lda ldrhi2
2021-02-16 06:01:22 +00:00
sta ldrhi
lda #cmdwrite ; write (instead of read)
sta reqcmd
sta sizehi ; 512 bytes
bne JumpOpen ; exit via ProRWTS2 (must re-open the file after query)