From ac256afdfd5c14f551cda6ad70e455276170edd9 Mon Sep 17 00:00:00 2001 From: Bobbi Webber-Manners Date: Mon, 23 Aug 2021 23:59:52 -0400 Subject: [PATCH] Add UPDFB: update FILEBLK after LOADFILE/SAVEFILE. --- applecorn.po | Bin 819200 -> 819200 bytes mainmem.s | 56 +++++++++++++++++++++++++++++++++++++++------------ 2 files changed, 43 insertions(+), 13 deletions(-) diff --git a/applecorn.po b/applecorn.po index d3d6a1690c27da273957433cb66cc60e26ac7c76..f32310fd342b5b81a33966a44f64a6573417bc9c 100644 GIT binary patch delta 2306 zcmZ`*4R8}>8s2X=o02MEnbVXi+y_!>zQv=^)~P=&Kf#e&iXGG$#v41}=y<1K6%~;? z%%Ud#z*h^Ee*Q!zR%uzw#TWumIfRdsow#3J5pFF9aI=AzLQUzs9aHjK+mvC$MRQV>a*sk1ZuX)M(cNrnJ zdyce?`LZQkbAy&u6Q>T4~2EOp=eqUdtqnBfaY4nW`j^d%{#X;(8Z9DC2=;-gKY-K4*WD)-A zYAv$aI#0IrcSm{vD{eajebsI1^W@CzhpE?axQ%=BtZRSzq zZP}JGX>KyNfAVQf4PdMI)93va`26JLMD)TxjSxPN-uB7>d#y}b!&a3dy8%+v{o9PbAtE%5km z_v?C%1ZL}Rvfks;viRtgY3NaAtCyB=y_^Sy53v>X($WOb{k&5Z?^#XocIK*=7N&x^ zhtN(Qd8(TP(m?hFNkGw0lFV2aq2gk_m&8JZN{jVA5(~3aP|VXPl{Z>EbAQza2mb0@ zbSQP4*Ev~7SYv~f$O;=I+dQy#5`BcwE}~x~G(_|mpN{WbM%RG{cwLn)NPnK+r?v0Mf%uZ;)<7!|W^wmp=ujV@%pb@MaR&YH|h_l45IU z-T0I0W=#O5YyhSR?riNL_X_c}_V= zUJJZ_npJ%vk)Jcmo8|xnzrYgxMFnW0Z&!YaC(|?`fpz?~@5|I*R$`Er?$CECG04nt zKo$2r?rbRI&T_j}48g@Q0wDxW2oVV3PjkR)%^b>t3*2G#JN37Eh9e{f7KDUIoSyE8 zi0UIy8p`ZcV0P&aNQDT7jI+|K1hH}^hE{OM7Jw?n9!FL?+!&vqc1Door?DliuaG8O(EMfIw{eInt>(C z6Bnk>I_RCvB(esE3G~|lr=0i6;Asa5{8|+|<>a_4lwgfcc`0gR7oGCLd2f+TklVG( z5Ix5X5&p;!-8xg&$T>5kM1(UY7`OP6G24;4+wYZ+N(+YF`!(V&@d;JMJE*03-+n4L zZ|n-qjEud>^}SIh=EzG>lr7DX9|qyhkynA}%#k0*aMU1JU1?S_ZeL^ofeo>?-`eCps$J^&~6KNUy8YY?EqV{ zTb&UaSas8hGcDA6ZMPaTq++NNzO7D;ObLVXh@H~$vs%vp&42%f@uv~2ZN9JlaCZ?O z3$zH#S~P2MEW1t}6ONWwK#Kx%lyi!yJG0DDY(t%TGI%r`uZ*W@Z02eM+?kk zplM(>((9r#D}Gza*WdK#JwyrQ1Y04(IS{UjJMW)3f=MvD8 znd7LMkdEfJfvyqAbL+t~4&~X^;L-Uzkl`-{swDGw!M_%$n#>*GU&qd2uqPjH#xwJv zAsl18DgvBd4(wPCiDGZ$kdPR(t^r;Rv=q1t=vv_0fvyv{GpirLjemgiNx0`&#cD8Y zRu#2X;K?fGA2i@iLmGG~Y?b(0*edgNjOUP%auxd;g`*|~+Y)GT8fanQS!r=ai-U5T zub^kSvDlQ5AtlHV$(e1=b57;)I;M+7w+*73?}@5f4De)dC(sz3mjR8{d5rGNq47G8 z)t$LCL9eYzxgzzD=;$`%jx#qy3v2GKNiizSC*)bi5K}P}Qxb^-l+^aI=sXflW+9n} zvASFWN&n!JYl8hhxKVaY-E%Cc%+bdYECES^1^gdN9+Ct+C1UM`8QiY>lXN=KPAAzp z=>BA#X4q+_ohRweDb8%3j3>o8wF`fuTI7TzIH4dXYA4unfrGoUx*Skwr`#XjW9MP}DnNoR#sr+ky6jRYA+pXpfe@>G4Bs)#gd8VBv>#h{t zHBxth?$UKvs&0;>c70KIuS(}N;O;Kl^6+e;dh$)^oPjGx)|B9>6rCF{vKIkXZ1owqj${liLDGKZwfmCP}RJd5Je95Nk6 zWC3|u!xMsFW10no%~b&%cO+d{T-9uFAxVxlvW-?30~837>> ENTMAIN :EOF2 LDA OPENPL+5 ; File ref num STA CLSPL+1 JSR CLSFILE -:EXIT JSR COPYFB ; Copy FILEBLK to auxmem +:EXIT JSR UPDFB ; Update FILEBLK + JSR COPYFB ; Copy FILEBLK to auxmem >>> XF2AUX,OSFILERET :BLOCKS DB $00 @@ -516,9 +517,9 @@ SAVEFILE >>> ENTMAIN STA CREATEPL+3 LDA #$06 ; Filetype BIN STA CREATEPL+4 - LDA FBLOAD ; Auxtype = start address + LDA FBSTRT ; Auxtype = start address STA CREATEPL+5 - LDA FBLOAD+1 + LDA FBSTRT+1 STA CREATEPL+6 LDA #$01 ; Storage type - file STA CREATEPL+7 @@ -538,11 +539,9 @@ SAVEFILE >>> ENTMAIN LDA FBEND SBC FBSTRT STA :LENREM - STA FILELEN LDA FBEND+1 SBC FBSTRT+1 STA :LENREM+1 - STA FILELEN+1 :L1 LDA FBSTRT ; Setup for first block STA A1L STA A2L @@ -639,26 +638,57 @@ SAVEFILE >>> ENTMAIN DW GINFOPL BCS :EXIT LDA #$02 ; Write error -:EXIT JSR UPDLENFB ; Update length in FILEBLK +:EXIT JSR UPDFB ; Update FILEBLK JSR COPYFB ; Copy FILEBLK to aux mem >>> XF2AUX,OSFILERET :BLOCKS DB $00 :LENREM DW $0000 ; Remaining length -FILELEN DW $0000 ; Total length -* Update file length in FILEBLK -UPDLENFB LDA FILELEN ; Update CB with file len +* Update FILEBLK before returning to aux memory +UPDFB LDA #MOSFILE + STA OPENPL+2 + STA GINFOPL+2 + JSR MLI ; Call GET_FILE_INFO + DB GINFOCMD + DW GINFOPL + BCS :ERR + LDA GINFOPL+5 ; Aux type LSB + STA FBLOAD + STA FBEXEC + LDA GINFOPL+6 ; Aux type MSB + STA FBLOAD+1 + STA FBEXEC+1 + STZ FBLOAD+2 + STZ FBLOAD+3 + STZ FBEXEC+2 + STZ FBEXEC+3 + JSR OPENFILE ; Open file + BCS :ERR + LDA OPENPL+5 ; File ref number + STA GMARKPL+1 + JSR MLI ; Call GET_EOF MLI + DB GEOFCMD + DW GMARKPL ; MARK parms same as EOF + LDA GMARKPL+2 STA FBSTRT+0 - LDA FILELEN+1 + LDA GMARKPL+3 STA FBSTRT+1 - STZ FBSTRT+2 + LDA GMARKPL+4 + STA FBSTRT+2 STZ FBSTRT+3 + LDA #$33 ; 'W/R' attribs + STA FBEND+0 STZ FBEND+1 STZ FBEND+2 STZ FBEND+3 LDA #$33 ; W/R attributes - STA FBEND - RTS + LDA OPENPL+5 ; File ref numbre + STA CLSPL+1 + JSR CLSFILE +:ERR RTS * Quit to ProDOS QUIT INC $3F4 ; Invalidate powerup byte