From 7d335669fea77fce4aaea2dde9bb9920af9d2131 Mon Sep 17 00:00:00 2001 From: Pecusx Date: Wed, 4 Dec 2024 11:00:28 +0100 Subject: [PATCH] Better file IO --- averybreakout.asm | 60 ++++++++++++++++++++++++++++++++++++++++++++++ averybreakout.xex | Bin 5653 -> 5834 bytes fileio.asm | 23 +++++++++--------- 3 files changed, 71 insertions(+), 12 deletions(-) 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 fc4a8adb9b67f7159117fedd6a55c15ad90a32a1..108c805fdad7cbd1007e034863b5247d78fbed1d 100644 GIT binary patch delta 1729 zcmc&zUuaWT7*FoapIWtzGFY6bcV=yFs;jr^tUAXy%}sBY-HknHVfd2C_Rt646>M+X z=Como~$9$~3VkFwOEzst(K_W3QN4y@B49_K#h3***9 z(Prf*tyZsyh?kkj5$)bK>8dD~ogN;4)x)l$65%Ewz}sih87x8+xX z=2Al)FosJ9(h#9GySE;A&~lJEejUZ5uqJU*e$e9oB`7j@!9&U3B6U%1Wy^!aDJ zImZ)NXL&Nmo0KQByg9=Y%A1#YGQ*n%o?Pb77Wh~bOD%EQrgJBaLgVXZ(_@I7Lzq99X2rNj2iR3Hkf3?Or$<~D#k zfGYhcW@b@!uOQ?Zs~_npwCH=pMFU(@K-kDBy90s?yx4rQ`WU8_MGzH7dVejdp6D0W z(?fWg3izD-Q5)?AbJwc570h;gF6Wp~(S(MI)63H~vwW^}u^P>hIUd#(6Ny{sUc|EpIY_PY(+zIU)x0H*~uMMZ)vZ6rkp|Q zn~j~(4DxxFHK>_QB)Hljcf*dmZox=Du)nL1w9~!{Wf!ux8?LaRr5g>cUJh!->K)4; zwq5zA@fTO9A3c=>p#y&6VL8$pkp)3$7tzs+4)}zQz5DjRaiH_yp`|7DN^_^O^#6W6 P|5f=bMc)ZG^L^k?;p0rN delta 1589 zcmc&zO=ufe5MKRQw&m1TObzlOsr(b^ZAcm?Y2y@HSbLRqYBo?`OAd+?r&UVmvA7A9 zEbG~_q>W{-kHczSuzL+!t!|`@ zk{6cMdjgKBSpiR}4+K1|J`%9J7|Bd8XJQ!lFR4#C99N(A-~_>}VL1~wy;bU!&zMgc zuE?_4wdayMIJpd&dfZ}*eBa#X`#U}rBqOXrZ_UJUlx^DgYwuK?MA@R|FPg*_r)W4( zaTNDGt2&yrx{8C0YA0gl2okcLAz@qRS}0~aNtquf@C3*(4vXYK*&fH^AVW9=wtXmM zs|1b9(VBW+HDLDzNVF5Q+wsp#|5~k6>9VF@(OGlR7J5+ul1H2IND>r#EqG&t`D9?E^sTqP6A08he7-7tSY(q$5(@^#CbKHRas)t=sJ z*KEbT3n)0b-I3!XR>U0+$pr=3TB%tVmz+r=xBCute$oJ-BUkYn>@f@P-hnB!-s{Bi9MzW30)2Ze0EQ3eMK zL3qMC-AoNQxL{fJp!vH-aNW9y(nClBc>zg7D19DD7f^Z-N#{}e9Fhi6+JmHX=$Z$4 z8jWU4opsOlkD-io$LMH6^s4j~FdyG=1YERL+G=+^bJ3Et$vKQSSUF$U;`1gu=$$BI zyk;;;jo(mNx+hS#lojZw(gT5>k{$_3#tsvCk@BSgi{oXKuLV0S4;(xcV1MA?vG8Qm zqCZYDVSpXr0dN2sfD{M-@B{b&J#62TO{C`}uR9x7J^-Qrv4EO)BSaCF78+$--{$+= zS@09T*029k2#|o*tp7wmlQuYNlJcCVLNAISHQf)HcN3`uRly$MJ?TxZXzyyE^LU0H z!L#CBmac$$u&Q1G^)Q}YV4@pbG|y#b3NyN~FsofJ_9yFe-<{=(maOe}@z%k{4er%^ zne8~9&T}|XwX4!j;+Ho#Xp1B+=Q-%i9fname - 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