> MMCHADFS 0.13 + Add HADFS ROM and image to GoMMC card : ( :CloseAll:: 2; ctrl%31,mem%511:X%=ctrl%:Y%=X%256:fsid%=12:dataid%=4 <: Earlier versions of GoMMC use fsid%=128, dataid%=128 FZ:"1: Add HADFS ROM image"'"2: Add empty HADFS disk image"'"3: Reset GoMMC"'"0: Exit" PA$=:"0123",A$): ZA$="1":AddROM: dA$="2":AddDisk: nA$="3":ResetMMC: x A$="0": : #AddROM:"Add HADFS ROM image" &"Pathname to HADFS image: "hadfs$ 4in%=(hadfs$):in%=0:"Can't open '"hadfs$"'.": Sadd%=AddEntry("HADFS",&4000,1,fsid%):add%=0:"Can't add entry.":#in%:in%=0: -len%=(#in%+255)256:"Loading ......";: 46,8);h0(add%,6);:gbpb(4,in%,mem%,256,#in%) AMMC(&4103,mem%,add%,256):add%=add%+256:len%=len%-1:len%<1: #in%:in%=0: : )AddDisk:"Add HADFS disk partition" /"Disk image size: K";6,8);:""size% 6size%<1 size%>16383:"Must be 16383K maximum": "Disk image name: "name$ Ladd%=AddEntry(name$,size%*1024,3,dataid%):add%=0:"Can't add entry.": 4"To select this image, use"'" *MMCDISC ";name$' "g"To install a blank HADFS system,"'"select HADFS and use:"'" *INSTALL M $ D";size%;"K"' , 6: @ResetMMC J"MMCCONFIG FSNR "+fsid% T*MMCCONFIG FSRM 7 ^$"Press SPACE to reset computer" h"After resetting, enter:" r" *MMCCONFIG FSNR 0" |: =32:-99  *MMCRESET  : >ݤAddEntry(name$,size%,type%,subt%):size%=(size%+511)-512 #mem%!0=0:MMC(&4003,mem%,0,512) "GoMMCCat":" **No global catalogue**":=0 /csz%=mem%!16:free%=mem%!20:add%=free%-size% 1add%-&200<&240+csz%*64:" **GoMMC full**":=0 ?!mem%=type%:mem%?1=subt%:mem%!4=add%:mem%!8=size%:mem%!12=0 '$(mem%+16)=name$:mem%?(16+name$)=0 :MMC(&4103,mem%,&200+64*csz%,64): Add catalogue entry ;MMC(&4103,mem%,add%-512+16,64): Add object entry copy '$mem%="GoMMCEnt":mem%!8=0:mem%!12=0 4MMC(&4103,mem%,add%-512,16): Add object header ,MMC(&4003,mem%,0,512):mem%!20=add%-&200 @mem%!16=csz%+1:MMC(&4103,mem%,0,512): Update global header & =add% 0: :-CloseAll:in%=in%:in%:A%=in%:in%=0:#A% D'out%=out%:out%:A%=out%:out%=0:#A% N X: b: l =================== v MMC access routines  =================== MMC(act%,addr%,mmc%,num%) Q!X%=&1212:X%!2=act%:X%?4=&01:X%!6=addr%:X%!10=mmc%:X%!14=num%:A%=&B0:&FFF1: : KݤMMCtype(A%):A%<4:="NONEFSIMTOOLDISK",A%*4+1,4) =" "+h0(A%,2)+" " :  ========================  List the GoMMC catalogue  ========================  MMC_Cat %" No Type Start Length Name" #mem%!0=0:MMC(&4003,mem%,0,512) Lstr(mem%,8)<>"GoMMCCat":free%=-1:csz%=-1:" **No global catalogue**": (csz%=mem%!16:free%=mem%!20:csz%=0:  Bn%=0csz%-1:MMC(&4003,mem%,&200+64*n%,64):" "d(n%+1,2)" "; MMCtype(mem%?0);  Q" "h0(mem%?1,2)" "h0(mem%!5,6)" "h0(mem%!8,8),6)" "str0(mem%+16),14)8 *: 4: > MMCList H!ctrl%=ctrl%:ctrl%=0:ctrl%31 Rmem%=mem%:mem%=0:mem%511 \X%=ctrl%:Y%=X%256 f/MMC(&40,mem%,0,512):csz%=mem%!16:csz%=0: p/n%=0csz%-1:MMC(&4003,mem%,&200+n%*64,64) zth0(mem%?0,2)" "h0(mem%?1,2)" "h0(mem%!2,4)" "h0(mem%!4,8)"+"h0(mem%!8,8)" "h0(mem%!12,8)" "str0(mem%+16) : : :  String functions  ================ &ݤstr(A%,N%): A%?N%:A%?N%=13:=$A% 5ݤstr0(A%):A$:A$=str(A%,254):=A$,A$+0,0)-1) :  ================  Useful functions  ================ : #ݤDrv(A$)= A$-48+7*(A$>"9")31 ݤdrv(A%)=(48+A%-7*(A%>9)) #ݤh0(A%,N%)="0000000"+~A%,N%) "ݤh(A%,N%)=" "+~A%,N%) $%ݤd0(A%,N%)="000000000"+ A%,N%) .$ݤd(A%,N%)=" "+ A%,N%) 8 ݤfs: A%,E%,Y%:=&FFDA &FF B: L)ݤbyte(A%,X%,Y%)=((&FFF4)&FF00)256 V6ݤfx(A%,X%): Y%:Y%=X%256:=((&FFF4)&FFFF00)256 `: j General OSGBPB call t#gbpb(A%,chn%,addr%,num%,ptr%) ~5!X%=chn%:X%!1=addr%:X%!5=num%:X%!9=ptr%: &FFD1: