Better file IO

This commit is contained in:
Pecusx
2024-12-04 11:00:28 +01:00
parent ce327c37a8
commit 7d335669fe
3 changed files with 71 additions and 12 deletions
+60
View File
@@ -1155,6 +1155,60 @@ drawBricksLoop
rts
.endp
;--------------------------------------------------
.proc FileUp
;--------------------------------------------------
inc LevelNumber+2
lda LevelNumber+2
cmp #'9'+1 ; 9+1 character code
bne NumberReady
lda #'0' ; 0 character code
sta LevelNumber+2
inc LevelNumber+1
lda LevelNumber+1
cmp #'9'+1 ; 9+1 character code
bne NumberReady
lda #'0' ; 0 character code
sta LevelNumber+1
inc LevelNumber
NumberReady
rts
.endp
;--------------------------------------------------
.proc LoadLevelData
;--------------------------------------------------
lda LevelType
beq level000
bmi levelTitle
; load level from disk
; prepare number in filename
ldx #2
@ lda LevelNumber,x
sta fname+7,x
dex
bpl @-
jsr close
jsr open
bmi open_error
jsr bget
bmi bget_error
go_close jsr close
rts
bget_error
cpy #136 ; EOF
beq go_close
open_error
mva #0 LevelType ; set level to internal 000
; reset file number to 001
ldx #2
@ lda StartLevelNumber,x
sta LevelNumber,x
dex
bpl @-
level000
levelTitle
rts
.endp
;--------------------------------------------------
.proc BuildLevelFromBuffer
;--------------------------------------------------
lda LevelType
@@ -1298,6 +1352,12 @@ Level000_data
LevelFileBuff
LevelFileBuffLen=(screenWidth*maxLines)+20
.ds LevelFileBuffLen ; Buffer for data from the level file
LevelNumber
.byte '001'
StartLevelNumber
.byte '001'
fname
.byte 'D:LEVEL000.DAT',$9b
;--------------------------------------------------
BigBrickFlag
.byte 0
BIN
View File
Binary file not shown.
+11 -12
View File
@@ -7,17 +7,16 @@
ldx #$10 ;IOCB #1
lda #$03 ;komenda: OPEN
sta iccmd,x
sta ICCOM,x
lda #<fname ;adres nazwy pliku
sta icbufa,x
sta ICBAL,x
lda #>fname
sta icbufa+1,x
sta ICBAH,x
lda #04 ;kod dostępu: $04 odczyt, $08 zapis, $09 dopisywanie, $0c odczyt/zapis
sta icax1,x
sta ICAX1,x
lda #$00 ;dodatkowy parametr, $00 jest zawsze dobre
sta icax2,x
sta ICAX2,x
jmp ciov
fname .byte "D:LEVEL000.DAT",$9b
.endp
;--------------------------------------------------
.proc bget
@@ -26,15 +25,15 @@ fname .byte "D:LEVEL000.DAT",$9b
ldx #$10 ;IOCB #1
lda #$07 ;komenda: GET BYTES / BINARY READ
sta iccmd,x
sta ICCOM,x
lda #<LevelFileBuff ;adres w pamieci, gdzie maja trafic dane
sta icbufa,x
sta ICBAL,x
lda #>LevelFileBuff
sta icbufa+1,x
sta ICBAH,x
lda #<(LevelFileBuffLen-2) ;wielkosc bloku danych w bajtach
sta icbufl,x
sta ICBLL,x
lda #>(LevelFileBuffLen-2)
sta icbufl+1,x
sta ICBLH,x
jmp ciov
.endp
;--------------------------------------------------
@@ -43,7 +42,7 @@ fname .byte "D:LEVEL000.DAT",$9b
; CLOSE #1
ldx #$10 ;IOCB #1
lda #$0c ;komenda: CLOSE
sta iccmd,x
sta ICCOM,x
jmp ciov
.endp