mirror of
https://github.com/pkali/Avery_Breakout.git
synced 2026-05-20 22:33:55 +02:00
Better file IO
This commit is contained in:
@@ -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
|
||||
|
||||
Binary file not shown.
+11
-12
@@ -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
|
||||
|
||||
|
||||
Reference in New Issue
Block a user