From fa4a88585de0e1be016fecb230cf9220767ef3c0 Mon Sep 17 00:00:00 2001 From: Bobbi Webber-Manners Date: Fri, 20 Aug 2021 21:03:42 -0400 Subject: [PATCH] OSFILE updates it's control block. *RUN works. --- applecorn.po | Bin 819200 -> 819200 bytes auxmem.hostfs.s | 26 ++++++++++++++++++++------ mainmem.s | 25 ++++++++++++++++--------- 3 files changed, 36 insertions(+), 15 deletions(-) diff --git a/applecorn.po b/applecorn.po index 9569af77ecfd1a092c84fe3b1990aed8998552c2..42e0f446a6db12f38e0ea45e54e479d9cb36ae61 100644 GIT binary patch delta 4200 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 delta 3773 zcmai13sh4_8oqNU2?-AoK}9O-=vvK9l;Wd`+loa%L4$ZeEyb;yc6-ip+HQB(?pE9F zF4wk6w=EZgu}-bE#)#-eZVVuzH5PoJ1QEi+3WP}Tfrtg7*w&U>c5Z^gv1iZTxyjuB zG2j2sH~-8{SavSU&b1mP0Vs4jb&aAz)$@XkUrHut56ffK>L8k$6}L7cB{3yxUBcR^ zbc&)Rf1t)wgEOfx^`l|ZF*Nnmuv=1U`kH0wQR$MuQ)8);$Pu@3>e&-%YWA>O@~Y%D zBAny{N=B6_M%=>G6O^GNeksZ6@m{}=sbI=4V#F^*9TQ-DNgA5Hlaf*evJpd=I%XVA zMGePEO^??k69CDVWPIkR@nPyf5=N;>jY~*O^G=M+jgkli?Mc58v=H^&V1kwsm%J(} zEj1-2ah1q|q~uXhe;;=t>VPog18MlnWudQloZL%~O|7Lp{d!7Jt;}Vk#v9cV_E>l-hiQ%$I<#Zh&px$5lRy?aYDho12( zkONx!zE1z)e@M7NP!I_G$9(ij4wt*tkhjga{nH(o=W}ws450ol zrm%+$$xUVV_U1`7fzy`F|D&6#=6Mz9h19Km7A(6`ku+rsB%`T&|hW>D^?5*VCy4xv|_swYXMkbRx z=+61s&B-f;E#jS_eaHt%%U51vTBNMLa43oDe^i!`uHs6w8DWj;{}&fy)rkBoj}e|% z^^$RQN+CnlOGef!35@PpT`YmoE!HjRB2AnMsUk|OBAQf@#i1m#59(S>8Zp_u_nPm2&=Gvw3>IRHbaoqxQtA4M3(K7yAWfHR)E#uy+uxQ3M_;;5EUOG;u@S{NZMUsTV~Q`a+2jJaBdNdBX&m-e13Lj2b*dia;y|hUyw~Kt;}Gb z^ZBWA{k^iCazuO00r;E%XW(}P7#t9wDg#`gs*L7>@OA;t0bb*uBp>AQ$#|g!PABR7 z-U8$2_%O4QJWtq%JTbi7beYU0D+%rC;6r@R@BE~-^g{h^OCQvKY5o{HEHDwzJ`A;M zQqz|uYZ8^yDTX4uG}aD0&)8{Cm|fx-YnOUnw<|nZc7M++_CQZ)ZXcb~PxC|EJ=)x7 zqLFJz%dhg{YY7VZp+;%NIpivE*I~F+c12t}CEjujhT*YR7=Tl(Ff4k=&A9Duhn$~m zY9U$1@Kll>_U@%@;45w$8>$dT&IwQK)YL%jSZEOZ_8?9N> z#xCP4AJfd|Pmk7QwXoCpbE7r>PWCPS!f4G}C;JNT7_G57*)+a6XtYX#2a92(wAIv# z^f$7f4mdT4~HjgZ7EOsv?=5hZLcfiof+yyS`-&JJYQ%>|kn{^4wY1?n$`sn?6TtAIAwOMEIL3xI1Vj~t*-e!#yYs(<#XANV3rVgwPI zmn3=pUTiBcsC}|)vTGsvOm@Y(GF^c#eS2$rr?*{g?`a2k&k>lQtas`LkJmYMKke_& zzf<6`N(t4T81#Pot4dYYF)ez{Wgb#y&3YdPl)*)y6epHJrT^XblArQCT6DJ^Zz_W? zf?4=d8Js#vZ*sZ)JQ9AZ$wd}=f4{hOKQp;BdK`QdvS0%?9EFMFD_n)2MaxX&L^eI4 z6_++#i!R}wqwr0Ti8qwPKZ8rSwj5>#?&&B@T0t%*7!~2U#~_<+>o9@h2Ob&f8>)7E zujN;m+$0cExyi00w`RFJsH(BCzVRy)#b=t_8u3g^OGrpdiK6&dhvmd|iK~eCwpU!9 zF8+rT%^wZRX^C+OQPcwWLU%Z6r(5QxF zO=zR$k8aIIx8^;!X1_~w7^fYFvt{A#FILEBLK @@ -247,7 +248,19 @@ FILEHND PHX :S2 >>> XF2MAIN,LOADFILE OSFILERET >>> ENTAUX - PLY ; Value of A on entry + PHA + LDA CBPTR ; Copy OSFILE CB to :CBPTR addr + STA ZP1 + LDA CBPTR+1 + STA ZP1+1 + LDY #$00 +:L3 LDA AUXBLK,Y ; Mainmem left it in AUXBLK + STA (ZP1),Y + INY + CPY #18 ; 18 bytes in control block + BNE :L3 + PLA + PLY ; Value of A on OSFILE entry CPY #$FF ; LOAD BNE :S4 ; Deal with return from SAVE @@ -291,6 +304,7 @@ OSFILERET PLX RTS +CBPTR DW $0000 OSFILEM ASC 'OSFILE($' DB $00 OSFILEM2 ASC ')' @@ -328,7 +342,7 @@ FSCRUN STX OSFILECB ; Pointer to filename LDX #OSFILECB JSR OSFILE -* JMP (AUXBLK) ; DOESN'T WORK AS EXPECTED!!! + JMP (OSFILECB+6) ; Jump to EXEC addr RTS FSCREN LDA #>> ENTMAIN LDA FBEXEC ; If FBEXEC is zero, use addr CMP #$00 ; in the control block BEQ :CBADDR -* TODOL Load file (without addr) needs to fill in CB +* TODO: Load file (without addr) needs to fill in CB LDA #MOSFILE @@ -424,8 +424,7 @@ LOADFILE >>> ENTMAIN LDY GINFOPL+6 ; Aux type MSB STY FBLOAD+1 STY FBEXEC+1 -:CBADDR JSR PASSADDR ; Load addr -> code in aux bank - LDA FBLOAD +:CBADDR LDA FBLOAD STA A4L LDA FBLOAD+1 LDX :BLOCKS @@ -449,14 +448,21 @@ LOADFILE >>> ENTMAIN :EOF2 LDA OPENPL+5 ; File ref num STA CLSPL+1 JSR CLSFILE -:EXIT >>> XF2AUX,OSFILERET +:EXIT JSR COPYFB ; Copy FILEBLK to auxmem + >>> XF2AUX,OSFILERET :BLOCKS DB $00 -* Stash address in XY to first two bytes of AUXBLK -PASSADDR >>> ALTZP ; Alt ZP and LC - STX AUXBLK - STY AUXBLK+1 +* Copy FILEBLK to AUXBLK in aux memory +COPYFB LDX #$00 +:L1 LDA FILEBLK,X + TAY + >>> ALTZP ; Alt ZP and LC + TYA + STA AUXBLK,X >>> MAINZP ; Back to normal + INX + CPX #18 ; 18 bytes in FILEBLK + BNE :L1 RTS * ProDOS file handling for MOS OSFILE SAVE call @@ -595,7 +601,8 @@ SAVEFILE >>> ENTMAIN BCC :EXIT ; If close OK * TODO: After SAVE CB XY+10..XY+17 needs updating LDA #$02 ; Write error -:EXIT >>> XF2AUX,OSFILERET +:EXIT JSR COPYFB ; Copy FILEBLK to aux mem + >>> XF2AUX,OSFILERET :LEN DW $0000 :BLOCKS DB $00