From 18ee4b693c1454a845dc57146c77475309795675 Mon Sep 17 00:00:00 2001 From: Bobbi Webber-Manners Date: Thu, 17 Oct 2019 13:00:43 -0400 Subject: [PATCH] Creates filename extensions on ProDOS --- SOFTCARD80.ASM#040000 | 33 +++++++++++++++++++++++++++------ SOFTCARD80.BIN#041000 | Bin 32771 -> 32771 bytes zapple2.po | Bin 819200 -> 819200 bytes 3 files changed, 27 insertions(+), 6 deletions(-) diff --git a/SOFTCARD80.ASM#040000 b/SOFTCARD80.ASM#040000 index dc43837..8f80cb3 100644 --- a/SOFTCARD80.ASM#040000 +++ b/SOFTCARD80.ASM#040000 @@ -146,9 +146,9 @@ S1 LD C,B_C_STAT ; LD (FCB1NAM+7),A ; LD A,'T' ; Extension LD (FCB1NAM+8),A ; - LD A,'M' ; Extension + LD A,'X' ; Extension LD (FCB1NAM+9),A ; - LD A,'P' ; Extension + LD A,'T' ; Extension LD (FCB1NAM+10),A ; ; Create and open a file using ProDOS MLI @@ -1042,7 +1042,8 @@ MPS1 ADD A,'A'-1 ; Convert to drive letter INC HL ; HL points to filename in FCB INC IX ; Advance IX to next char of path to write INC IX ; ... -MPL1 LD A,(HL) ; Obtain filename character +MPL1 ; Filename + LD A,(HL) ; Obtain filename character CP ' ' ; See if it is a space (? or NULL maybe?) JP Z,MPS3 ; If so we are done with filename EX AF,AF' ; We need to re-use A here @@ -1056,9 +1057,29 @@ MPL1 LD A,(HL) ; Obtain filename character INC IX ; Next byte of PATH buffer JP MPL1 ; Loop till done MPS2 EX AF,AF' ; Swap back to original A reg -MPS3 ; EXTENSION - ; ... - LD A,C ; Store length of string +MPS3 ; Extension + ; TODO: Eat any space characters at end of filename + LD A,'.' ; Separator is a period + LD (IX+0),A ; Write to buffer + INC C ; Count the character! + INC IX ; Advance to next character in buffer + LD B,0 ; Use B to track num chars in extension +MPL2 LD A,(HL) ; Obtain filename character + CP ' ' ; See if it is a space (? or NULL maybe?) + JP Z,MPS5 ; If so we are done with extension + EX AF,AF' ; We need to re-use A here + LD A,B ; Get character count + CP 3 ; Extension can be up to 3 chars + JP Z,MPS4 ; If so we are done with filename + EX AF,AF' ; Swap back to original A reg + LD (IX+0),A ; Copy to PATH buffer + INC C ; Count the chars (overall) + INC B ; Count the chars (in extension) + INC HL ; Next byte of filename in FCB + INC IX ; Next byte of PATH buffer + JP MPL2 ; Loop till done +MPS4 EX AF,AF' ; Swap back to original A reg +MPS5 LD A,C ; Store length of string LD (IY+0),A ; We kept size byte in IY at start RET diff --git a/SOFTCARD80.BIN#041000 b/SOFTCARD80.BIN#041000 index 62226a70088ed3b54e0506f7ea7b27f40a7707e3..0f1ab547d74133b993bc46fdecaefc1432bedf24 100644 GIT binary patch delta 334 zcmZo}U}|n)+K|b}7GadeU>7nupYb&}L+aVs6ubZVf=sEKQ<>Jra{Wm$`kP|(FU9Ep zW|@R$My{%qvj>u|+A*9}oxCzpOXhb98-qWm)%(P9JBIv|7lArYDlqIn@v1O^xoYzJ zL^)^Glz;zE$tNj76xuO>)j^e=(JD${WVovcHdE0h>FnC%e+-8llJZYN6&&;iDyW(q zkdzN34Koce= z=egSH-7RO}xvR{^Q1?&altKze#Xsg#@+ll3Q5NO9%7@ufI4b{^Gn{m{`jfKblxvFB nUm)e3V)YM51*Ta22U6ja6;k9lb5d%~7Npdk&DrdpGD8{wDXohk delta 326 zcmZo}U}|n)+K|b}=4+J3U>7hspYb*Kos_edDR%$!1@EP7PGwpf%XK5g=w^!1trVl% zn`IK38M(qz&K^jRc)*i1#2q_b<2|1lhLNXkD6RdCQ7s32@| zKvF)CJdh-B9#(Rgfq{V$h+*39DozKvNRcBMqMIcdNb!v2KxS_B13^4BakeyV*-*DcFaJs c#*XD=%~_9>nzKGBwP!sxXQ#}No@k%~06yx5ApigX diff --git a/zapple2.po b/zapple2.po index 7ac6a2febc878e53f61d5d3a9612722d8e461c69..ad38fdfc0178763f14df06a5c44e545a60f2bdac 100644 GIT binary patch delta 1256 zcmZXQ&rcgi6vub{D?77x3yp$=gu+;m0;wTp4JEZ(t2VX?g~SdJ1+|LG;u$Meon6OX zO5!#NQqtzoL*=3{e?cSl5UCawj+6swaw#OPRH-CYC7&wg&>pxOusgepAyN)cZ{N)4 z`+eWpr6p-;N&30h{>}tf{((E+^MRA&{^5*|Wxu^cH0KumVpX=skMP#pCFk9elV@dN zWo2b!WoPAJb);N!3RJb+`DU57tgYM-&d`A#_;Br}@ZnK@ma0Vo(Mv_4mBOOnE`MJX z{VOLZ(Y${l}#+dM4b%H!l# zkgJ@aKW%}N9Xr^;#esiYUJP>T#vjaJ199uW{d;xJTA-v0}{6&a{5a?Wa(gS%Nrn+OZn>ekIp zEa<1Uu4>m)2NtgHEpi)U{$2cVGm8CttW98lowf7W-(c+`MX$hdkilP9viL?NQyzN- z?zR5{S1Zl{ils9|k*^RJprr~7t^E#pk1MUAbRNklpOuqjtp?qeTh}zAUV<}h}+>E{*LPVqWujiR)I<`+^al55Jt z9xpRu+6#Gt!bnq*#-e?Jl!Yrs%)Blk2TwYin3VL_$5(0)@x#E4 z6o9a4II1ov8qzM4{d~Qz2kfI)nYvwKXaG&BD%+LLWDr&r;xaZgYOvqNzJ|-gyYQK~ z++s=eF**{Bg@M-vV^il??$@TF!^s8d9h=zCLt3(l?N-RLhkeHB`>_~eehs_WW*E0Q#8bDR zAssXlOoKtMG~|NpVezRk07izq-ZL(fF!R4boIWJXH@!iO9unp|n*>W32+*1Dgb53D Rtqwj9^53?I_gkFV{{aK&hgkps delta 591 zcmXw1O=uHA7@gT{lAYbOX`%>9uvw}`iiWTr#8nqTr77AbQdztRX)^U9x>^HONhQ!j zE{cTM%*C_dp^zBq=4P!Ix4J^XG-=a%k$TWW?}avg`RU<(?;GZQkB^y`%_`ZfQabJQ zk0SSLbStDv2>nK#rl2|lQujR2zNkz(V{Yu7D|>Qf4+d}m2Y?4S0WN^sEPDiI6fjpU z&I(Z$35nIk7s91Oc#Ii&A;|9L1s{%^(C<22W6C|G#hEcL{F64ReSvB%!}p8kriy|& zRU`|S#RgT@sj@+prWyE2=CG(!dnr}Zkd4{<8W|4MsSCx3x-&VWA;Ve)11pF=ef|45 z;n3MmjU2y<>3(ZvFe!JH8tMppy6?l&35>Snj;nkvX)mPq(ejm~Vf6%`Z-78&@ik%q zEv=Ek^LqLVLI?v62DfC^-bxly-FZIM-lgZT?0u5p^fY5f>f||iN-$}svAIOsoDfO2hU;2=#hq@rZo=gQ_TT2qw!Y8j?#>Mlg`>v^Zp+) zf0RYu2q!*@6`M`-;xX2=#gpvip4h+mL&RrH@2(i+4&S+beSBgxHr_`Fxfl$F!{I(+ zZnwm5Qi3w;nue6Hk|%#z;| GfAAklfz(9+