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
|
rts
|
||||||
.endp
|
.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
|
.proc BuildLevelFromBuffer
|
||||||
;--------------------------------------------------
|
;--------------------------------------------------
|
||||||
lda LevelType
|
lda LevelType
|
||||||
@@ -1298,6 +1352,12 @@ Level000_data
|
|||||||
LevelFileBuff
|
LevelFileBuff
|
||||||
LevelFileBuffLen=(screenWidth*maxLines)+20
|
LevelFileBuffLen=(screenWidth*maxLines)+20
|
||||||
.ds LevelFileBuffLen ; Buffer for data from the level file
|
.ds LevelFileBuffLen ; Buffer for data from the level file
|
||||||
|
LevelNumber
|
||||||
|
.byte '001'
|
||||||
|
StartLevelNumber
|
||||||
|
.byte '001'
|
||||||
|
fname
|
||||||
|
.byte 'D:LEVEL000.DAT',$9b
|
||||||
;--------------------------------------------------
|
;--------------------------------------------------
|
||||||
BigBrickFlag
|
BigBrickFlag
|
||||||
.byte 0
|
.byte 0
|
||||||
|
|||||||
Binary file not shown.
+11
-12
@@ -7,17 +7,16 @@
|
|||||||
|
|
||||||
ldx #$10 ;IOCB #1
|
ldx #$10 ;IOCB #1
|
||||||
lda #$03 ;komenda: OPEN
|
lda #$03 ;komenda: OPEN
|
||||||
sta iccmd,x
|
sta ICCOM,x
|
||||||
lda #<fname ;adres nazwy pliku
|
lda #<fname ;adres nazwy pliku
|
||||||
sta icbufa,x
|
sta ICBAL,x
|
||||||
lda #>fname
|
lda #>fname
|
||||||
sta icbufa+1,x
|
sta ICBAH,x
|
||||||
lda #04 ;kod dostępu: $04 odczyt, $08 zapis, $09 dopisywanie, $0c odczyt/zapis
|
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
|
lda #$00 ;dodatkowy parametr, $00 jest zawsze dobre
|
||||||
sta icax2,x
|
sta ICAX2,x
|
||||||
jmp ciov
|
jmp ciov
|
||||||
fname .byte "D:LEVEL000.DAT",$9b
|
|
||||||
.endp
|
.endp
|
||||||
;--------------------------------------------------
|
;--------------------------------------------------
|
||||||
.proc bget
|
.proc bget
|
||||||
@@ -26,15 +25,15 @@ fname .byte "D:LEVEL000.DAT",$9b
|
|||||||
|
|
||||||
ldx #$10 ;IOCB #1
|
ldx #$10 ;IOCB #1
|
||||||
lda #$07 ;komenda: GET BYTES / BINARY READ
|
lda #$07 ;komenda: GET BYTES / BINARY READ
|
||||||
sta iccmd,x
|
sta ICCOM,x
|
||||||
lda #<LevelFileBuff ;adres w pamieci, gdzie maja trafic dane
|
lda #<LevelFileBuff ;adres w pamieci, gdzie maja trafic dane
|
||||||
sta icbufa,x
|
sta ICBAL,x
|
||||||
lda #>LevelFileBuff
|
lda #>LevelFileBuff
|
||||||
sta icbufa+1,x
|
sta ICBAH,x
|
||||||
lda #<(LevelFileBuffLen-2) ;wielkosc bloku danych w bajtach
|
lda #<(LevelFileBuffLen-2) ;wielkosc bloku danych w bajtach
|
||||||
sta icbufl,x
|
sta ICBLL,x
|
||||||
lda #>(LevelFileBuffLen-2)
|
lda #>(LevelFileBuffLen-2)
|
||||||
sta icbufl+1,x
|
sta ICBLH,x
|
||||||
jmp ciov
|
jmp ciov
|
||||||
.endp
|
.endp
|
||||||
;--------------------------------------------------
|
;--------------------------------------------------
|
||||||
@@ -43,7 +42,7 @@ fname .byte "D:LEVEL000.DAT",$9b
|
|||||||
; CLOSE #1
|
; CLOSE #1
|
||||||
ldx #$10 ;IOCB #1
|
ldx #$10 ;IOCB #1
|
||||||
lda #$0c ;komenda: CLOSE
|
lda #$0c ;komenda: CLOSE
|
||||||
sta iccmd,x
|
sta ICCOM,x
|
||||||
jmp ciov
|
jmp ciov
|
||||||
.endp
|
.endp
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user