> ROMList :  (*Dir :System.ROMs 2*Access list/txt wr/r <*Spool list/txt F :Close_All:: P4 ctrl% 31,name% 80,data% 255:X%=ctrl%:Y%=X%256 Z Scan("") d *Spool n*SetType list/txt FFF x*Access list/txt r/r  : Scan(p$)  num%,idx%,f$,type%  0 f$=gbpb8(idx%):idx%=X%!9: f$<>"":Object f$=""  : Object # f$="index/htm" f$,1)="_": Otype%=file(f$,5): type%=2:"Dir "+f$:Scan(p$+".",p$<>"")+f$):"Dir ^": $ type%<>1: type%=X%!3 &FFF h type%=&FC0:in%=(f$):A$=rd(in%):#in%:in%=0:A$=A$,A$+0,0)-1):A%=file(A$,5):type%=X%!3 &FFF  X%!10<100 type%<>&BBC: $in%=(f$):mem%=data%:base%=&8000 "(gbpb(3,in%,data%,256,base% &3FFF) , 6 ROMHeader:ROMList @ base%=data%!4 &FFFF J6 ?data%=&20: data%?5=&4C:base%=data%!6 &FFFF T> (base% &C000)<>&8000 (base% &3FFF)>#in%:base%=0 ^2 base%:gbpb(3,in%,data%,256,base% &3FFF) h@ base%:mem%=data%: mem%!(mem%?7)<>&29432800:mem%=data%+2 r0 base%: mem%!(mem%?7)<>&29432800:base%=0 | base%=0 #in%:in%=0  : ROMHeader  Get ROM title: FA%=9:title$="":: mem%?A%>31 mem%?A%<127:title$=title$+mem%?A% @A%=A%+1: mem%?A%<32 mem%?A%>126 A%>63:title$=s(title$) #A%=A%-1:A%=A%+1:mem%?(A%-1)=0 : * Get any embedded ROM version string: ;ver$="":: mem%?A%>31 mem%?A%<127:ver$=ver$+mem%?A% =A%=A%+1: mem%?A%<32 mem%?A%>126 A%>127:ver$=s(ver$) : 0 Get ROM language type and entry addresses: 31 mem%?A%<127:copy$=copy$+mem%?A% X?A%=A%+1: mem%?A%<32 mem%?A%>126 A%>255:copy$=s(copy$) bc copy$,3)<>"(C)":A%=0:A%=A%+1:(f$,A%,1)>="0"f$,A%,1)<="9")A%>f$:A%&29432800:title$="":rtype%=0:load%=0:exec%=0:ver$="":copy$="" : $ Try and normalise ROM version:  ver$=copy$:ver$="" version$=ver$ G ver$="":A%=title$,"."):ver$=title$,A%-1,4):title$=title$,A%-2) N ver$="":base%=&8000:f$,3)(f$,2)):ver$=f$,3):f$,4):ver$=f$,4) $ ver$="":ver$=~mem%?8+"00",3) (A%=ver$," v"): A%=0:A%=ver$," V")  A%:ver$=ver$,A%+1) / uc(ver$,7))="VERSION":ver$=s(ver$,8)) * uc(ver$,2))="V.":ver$=s(ver$,3)) ) uc(ver$,1))="V":ver$=s(ver$,2)) 7 ver$,1)>"9":A%=ver$,"."):A%:ver$=ver$,A%-1,4)  ver$,1)>"9":ver$=ver$,2) / ver$,2,1)="-":ver$=ver$,1)+"."+ver$,3)  + ver$,2,1)>"9":ver$=ver$,1)+ver$,3) *ver$=s(ver$) 40 ver$,2,1)<>".":ver$=ver$,1)+"."+ver$,2) > ver$<5:ver$=ver$+"00",4) H@ ver$,3,1)<"0" ver$,3,1)>"0":ver$=ver$,2)+"0"+ver$,3) R@ ver$,4,1)<"0" ver$,4,1)>"0":ver$=ver$,3)+"0"+ver$,3) \!copy$=copy$,3)+s(copy$,4)) f@ title$<3:title$=f$:"_/",title$,2,1)):title$=title$,3) p z:  ROMList 2title$=title$,24): title$;(24-title$);"|"; -ver$ =ver$,4) : ver$;(4-ver$);"|";  A$="" ( (rtype%&80):A$=A$+"S" A$=A$+"-" ( (rtype%&40):A$=A$+"L" A$=A$+"-" ( (rtype%&20):A$=A$+"R" A$=A$+"-" ( (rtype%&10):A$=A$+"K" A$=A$+"-" ԉA$=A$+" "+"BASICTurbo65x2 68xx CPU4 CPU5 CPU6 PDP11Z80 32000CPU1080x86CPU12ARM CPU14CPU15",(rtype%15)*5+1,5)+"|"+h0(load%,4)+"|" A$=A$+h0(vbyte%,2)+"|" ' rtype%=0:A$=" | | |"  A$; :version$=version$,18): version$;(18-version$);"|"; 1copy$ =copy$,27): copy$;(27-copy$);"|";  p$;".";f$;10;  "FX3,16"::*FX3 $ .: 8/ݤs(A$):A$,1)=" ":A$=A$,2):A$,1)<>" " B+A$,1)=" ":A$=A$,A$-1):A$,1)<>" " L=A$ Vݤuc(A$): B$:A$="":="" `5B$=B$+(A$((A$<"@")&DF)):A$=A$,2):A$="":=B$ jݤlc(A$): B$:A$="":="" t5B$=B$+(A$((A$<"_")&20)):A$=A$,2):A$="":=B$ ~#ݤh0(A%,N%)="0000000"+~A%,N%) : Close_All:*Spool "in%=in%:in%:A%=in%:in%=0:#A% 'out%=out%:out%:A%=out%:out%=0:#A%  : ݤrd(i%):A$: &A%=#i%:A%<>10 A%<>13:A$=A$+A% A%=10 A%=13 #i%:=A$ Bݤfile(A$,A%):$name%=A$:?X%=name%:X%?1=name%256:=(&FFDD)&FF 3gbpb(A%,ch%,X%!1,X%!5,X%!9):?X%=ch%: &FFD1: Eݤgbpb8(ptr%):X%!1=name%:X%!5=1:X%!9=ptr%:A%=8:&FFD1:X%!5=1:="" 7A%=name%+1:A%!(A%?-1)=&D20:A%?($A%," ")-1)=13:=$A%  ݤfs:A%,Y%,E%:=(&FFDA)&FF