diff --git a/averybreakout.asm b/averybreakout.asm index 69a7643..8567c3a 100644 --- a/averybreakout.asm +++ b/averybreakout.asm @@ -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 diff --git a/averybreakout.xex b/averybreakout.xex index fc4a8ad..108c805 100644 Binary files a/averybreakout.xex and b/averybreakout.xex differ diff --git a/fileio.asm b/fileio.asm index 2c8415f..31c0bcc 100644 --- a/fileio.asm +++ b/fileio.asm @@ -7,17 +7,16 @@ ldx #$10 ;IOCB #1 lda #$03 ;komenda: OPEN - sta iccmd,x + sta ICCOM,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 - 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