4 >AddSyst - Add system files to Flex disk image :  debug%=0 (&A%=0:X%=1:os%=((&FFF4)&FF00)256 2! ctrl% 31:X%=ctrl%:Y%=X%256 <; mem% &1FF,dmp% 15,d_path$(3):d_drv%=-1:d_chn%=0:in%=0 F' ::Close_All:" at line ";: P: ZCONS$="Console.bin" dDISK$="DiskIO.bin" nBOOT$="Boot.bin" x' "Add FLEX.SYS file to disk image" ': "Disk image file: "in$:in$<>"" d_path$(0)=in$:drv%=0 @ fdc_disk(&53,mem%,drv%,0,0,0,0): "Not a FLEX image":end @ptr%=f_find("FLEX.SYS"): ptr%=0:"FLEX.SYS not found":end -size%=mem%?(ptr%+18)+256*(mem%?(ptr%+17)) 6mem%?0=mem%?(ptr%+13):mem%?1=mem%?(ptr%+14):ptr%=0  :A%=getbyte: A%=2 A%=22 addr%=256*getbyte+getbyte # A%=2:leng%=getbyte leng%=0 ? addr%<>&DE00: leng%::A%=getbyte:leng%=leng%-1:leng%=0  addr%=&DE00 size%<2 ) size%<2:"No room in FLEX.SYS":end Cptr%=ptr%-4: ptr%<4:"Can't backtrack to previous sector":end "Inserting ";DISK$; -in%=(DISK$): in%=0:" - not found":end ",wrfile(2,in%,&DE00,#in%):#in%:in%=0: ,"Inserting ";CONS$; 6-in%=(CONS$): in%=0:" - not found":end @,wrfile(2,in%,&D370,#in%):#in%:in%=0: J"Flushing file buffer"; T*wrfile(22,0,&CD00,0):wrfile(2,0,0,0) ^@:putbyte(0): ptr%>255 mem%?0=0 mem%?1=0:putbyte(0): h"Inserting ";BOOT$; r-in%=(BOOT$): in%=0:" - not found":end |Cgbpb(4,in%,mem%,256,0 ):err%=fdc_disk(&4B,mem%,drv%,0,0,1,1) Cgbpb(4,in%,mem%,256,256):err%=fdc_disk(&4B,mem%,drv%,0,0,2,1) #in%:in%=0:  #d_chn%  : !wrfile(stx%,in%,addr%,len%)  !num%=len%: num%>255:num%=255 Mputbyte(stx%):putbyte(addr% 256):putbyte(addr% 255):putbyte(num%) #len%=len%-num%:addr%=addr%+num% 1 num%::putbyte(#in%):num%=num%-1: num%<1  len%<1  :  ݤgetbyte z (ptr%255)=0:(!mem%)&FFFF:trk%=mem%?0:sec%=mem%?1:err%=fdc_disk(&53,mem%,drv%,trk%,0,sec%,1):ptr%=4:size%=size%-1 &ptr%=ptr%+1:=mem%?(ptr%-1) 0: :putbyte(byte%) D (ptr%255)=0:err%=fdc_disk(&4B,mem%,drv%,trk%,0,sec%,1):(!mem%)&FFFF:trk%=mem%?0:sec%=mem%?1:err%=fdc_disk(&53,mem%,drv%,trk%,0,sec%,1):ptr%=4 Nmem%?ptr%=byte%:ptr%=ptr%+1 X b: lݤf_find(fn$) v A%,A$,dir%,trk%,sec%,ptr% EA%=fn$,"."):A%:A%<9:fn$=fn$,A%-1)+9-A%,0)+fn$,A%+1,3),11) dir%=&0500: #sec%=dir% 256:trk%=dir% 255 -A%=fdc_disk(&53,mem%,drv%,trk%,0,sec%,1)  ptr%=16: NA%=mem%?(ptr%+11):mem%?(ptr%+11)=13:A$=uc($(mem%+ptr%)):mem%?(ptr%+11)=A% #ptr%=ptr%+24:ptr%>255 fn$=A$ dir%=!mem% &FFFF  dir%=0 fn$=A$  fn$=A$:=ptr%-24 =0 : "ݤd(A%,N%)=" "+A%,N%) #ݤd0(A%,N%)="00000000"+A%,N%)  #ݤh0(A%,N%)="0000000"+~A%,N%) 2ݤc(A%):A%=A%127: A%<32 A%=127:="." =A%  2ݤb(A%):A%=A%127: A%<32 A%=127:=" " =A% *ݤuc(A$)=A$ 4: >end:Close_All:: H.Close_All:in%=in%:in%:A%=in%:in%=0:#A% R1d_chn%=d_chn%:d_chn%:A%=d_chn%:d_chn%=0:#A% \ f: p9ݤfdc_disk(cmd%,add%,drv%,trk%,sid%,sec%,num%): ptr% z# drv%>3:drv%=(drv%2)+(drv%1) (debug%8):: ;(debug%8):"cmd:";h0(cmd%,2);" add:";~add%-mem%;" "; U(debug%8):"drv:";drv%;" trk:";trk%;" sid:";sid%;" sec:";sec%;" num:";num%;" "; \ drv%<>d_drv%: d_chn%:#d_chn%:d_chn%=0 : Different drive, close current drive f d_chn%=0: d_path$(drv%)="":=&1E : If no mount path, return Drive not present Y d_chn%=0:d_chn%=d_path$(drv%): d_chn%=0:=&1E: No drive, return Drive not present \ drv%<>d_drv%:d_drv%=-1: fdc_exam(drv%):=&1E : No info, return Drive not present Sd_drv%=drv%: num%=0:=0 : Just refresh disk info  d_chn%=0:=&1E sec%=sec%-d_sec0% > d_sid%=1:ptr%=((sid%*80+trk%)*d_num%+sec%)*d_bps%+d_off% > d_sid%=2:ptr%=((trk%*2 +sid%)*d_num%+sec%)*d_bps%+d_off% $(debug%8):"ptr:&";h0(ptr%,6)  cmd%=&4B:cmd%=1  cmd%=&53:cmd%=3  cmd%=&57:cmd%=3 $C cmd%=&5B: A%=0 d_num%+2:add%!(A%*4)=(A%d_num%)*65536::=0 .5 cmd%<5:gbpb(cmd%,d_chn%,add%,num%*d_bps%,ptr%) 8=0 B: Lݤfdc_exam(drv%) VA#d_chn%=0:d_off%=0:d_trk%=#d_chn% 2560:d_sid%=1:d_sec%=10 ` #d_chn%+256*#d_chn%=&6B64:d_off%=#d_chn%+256*#d_chn%:#d_chn%=8:d_trk%=#d_chn%:d_sid%=#d_chn%:d_sec%=(#d_chn%-d_off%) (d_trk%*d_sid%*256) j&d_num%=d_sec%:d_bps%=256:d_sec0%=1 t/#d_chn%=&221:d_free%=256*#d_chn%+#d_chn% ~1#d_chn%=&226:d_trk%=#d_chn%:d_sec%=#d_chn% # d_sec%>19:d_sid%=2 d_sid%=1 d_num% =d_sec% d_sid% d_size%=(d_trk%+1)*d_sec% d_used%=d_size%-d_free% #d_chn%=&210:d_title$="" ,:A%=#d_chn%: A%:d_title$=d_title$+A% A%=0 d_title$=12 =0 : #gbpb(A%,chn%,addr%,num%,ptr%) 2) X%!5<1: