> UxFiler Kos%=fx(0,1)&FF:10,8:A%=:13:A%<50:&87:>&7C00:&83:>&4000:&80 <&FFFF:=fx(132,0) (init:hdr::err: 2:X%=ctrl%:Y%=X%256:: <8:wdt%=+1: F'drv$="":(D%+48)">";"["drv$"]"; P"csd%=home%:" "A$:do(s(A$)) Z d'init:ver$="1.32":bsz%=1024:fsv%=6 n|ctrl% 127,name% 255,zp% 7,data% bsz%-1,data2% bsz%-1,ientry% 63,dir% bsz%+4,object% 63,thisdir% 63,diskrec% 255(os%=6) xZX%=ctrl%:Y%=X%256:res%=0:D%=0:dmk%=&FFFF:drv$="":path$="/":title$="":home%=-1:csd%=-1 @fs%=fs:d$=".":s$="/":os%-24:d$="/":s$=".":os%-32:d$="\" Ucmd$=":MOUNT:DIR:CD:CAT:EX:LS:INFO:TYPE:DUMP:IMPORT:EXPORT:FREE:BLOCK:HELP:QUIT:" hlp$=":|:|&:|&::::(): [CTRLS]: [7BIT]: (): ():::::"  -hdr:"UxFiler v"ver$" by J.G.Harston": ݤerr:"FX229":: !:fs<>fs%:"FX143,18,"+fs% ?CloseAll:A%=<>17<>28:" at line "+Þ,<128A%):=-1A% -CloseAll:in%=in%:in%:A%=in%:in%=0:#A% 'out%=out%:out%:A%=out%:out%=0:#A% 'dsk%=dsk%:dsk%:A%=dsk%:dsk%=0:#A%  do(A$):A$="?":A$="HELP" A$,1)=";"A$="": A$,1)="*":A$,2):  A$,1)=".":A$="CAT "+A$,2) "6A%=A$+" "," "):B$=uc(A$,A%-1)):A$=s(A$,A%+1)) ,(B$="COPY":"Use EXPORT or IMPORT": 60B$=1"0123",B$):drv$="":D%=B$:home%=-1: @/A%=cmd$,":"+B$+":"):A%=0:"Bad command": JA%=("FN_"+B$+"(A$)"): T-ݤsyn(S$):A$="":"Syntax: "B$" "S$:== ^ݤ_QUIT(A$):"Quit" h ros%>5:*QUIT |  ݤ_HELP(A$):hdr:p%=2:q%=2: 0A%=cmd$,":",p%):2cmd$,p%,A%-p%);:p%=A%+1 0A%=hlp$,":",q%):9)hlp$,q%,A%-q%):q%=A%+1 p%>cmd$:=0 <ݤ_MOUNT(A$):home%=-1:A$<2:do(A$):=0drv$=A$:D%=-1:=0 ݤ_CAT(A$):LstDir(0):=0 ݤ_EX(A$):LstDir(1):=0 ݤ_LS(A$)=_EX(A$) ݤ_CD(A$)=_DIR(A$) 2ݤ_DIR(A$):curr%=-1:syn("|&"):= DA$,1)="&":A%=Mount:home%=(uc(A$)):path$="&"+h0(home%,6):=0 .A$="/":A%=Mount:home%=root%:path$="/":=0  look:= 3(mode%16384)=0:"'"src$"' not a directory":= %path$=path$+fname$+"/":home%=ptr% \path$,3)="../":path$=path$,path$-4)::path$=path$,path$-1):path$,1)="/"path$="" &*path$,2)="./":path$=path$,path$-2) 0=0 :'ݤ_BLOCK(A$):syn(""):= DVA%=Mount:blk%=("&"+uc(A$)):RdBlocks(data%,blk%,D%,1):O%=data%:ln%=512:dump() N=0 X!ݤ_DUMP(A$):syn(""):= b look:= l dump() v=0 (dump(F%):cols%=16:wdt%<80:cols%=8 P%=0ln%-1cols%:B$="" >h0(P%,6)" ";:F%:(P%(bsz%-1))=0:ReadData(P%):O%=data% Q%=P%P%+cols%-1 'Q%=" "A$<="~" B$=B$+A$B$=B$+"." O%=O%+1::B$:: !ݤ_TYPE(A$):syn(""):= @msk%=A$," [")<>0:msk%=(msk%&80)&7F:A$=A$,A$+" "," ")-1)  look:= ?last%=0:P%=0ln%-1:(P%(bsz%-1))=0:ReadData(P%):O%=data% 3Q%=?O%msk%:msk%=255:Q%Q%=10Q%=13Q%>31Q% #(Q%=10Q%=13)Q%<>last%:23-Q% Q%=9:(8-(8));  last%=?O%:O%=O%+1::: =0  ݤ_FREE(A$):A%=Mount *:RdInode(0):RdBlocks(dir%,1,D%,1):isize%=dir%!0&FFFF 4Efsv%=6:fsize%=dir%!2&FFFF:nfree%=dir%!4&FFFF:ptr%=dir%!6&FFFF >Kfsv%>6:fsize%=swap32(dir%!2):nfree%=dir%!6&FFFF:ptr%=swap32(dir%!8) Hfree%=nfree%: REptr%:RdBlocks(data%,ptr%,D%,1):data%?1=0:free%=free%+data%?0-1 \$ptr%:fsv%=6:ptr%=data%!2&FFFF f'ptr%:fsv%>6:ptr%=swap32(data%!2) p+ptr%<2ptr%>=fsize%:used%=fsize%-free% z\"Disk free: &"h0(free%,8)" blocks, &"h0(free%*bsz%,8)" bytes, ";free%(1024/bsz%);"K" \"Disk used: &"h0(used%,8)" blocks, &"h0(used%*bsz%,8)" bytes, ";used%(1024/bsz%);"K" _"Disk size: &"h0(fsize%,8)" blocks, &"h0(fsize%*bsz%,8)" bytes, ";fsize%(1024/bsz%);"K" =0 ݤ_INFO(A$) A$=""A$="$":PrSBlock:=0  look:= !inode%=ptr%:x%=0:ListFile(1) Cp%=all0%almx%-1alsz%:h0(blk(ientry%!p%),alsz%*2);" ";:: =0 Iݤ_EXPORT(A$):syn(" (inf:) (onfirm)"):= 5A%=A$+" "," "):src$=A$,A%-1):dst$=s(A$,A%+1)) 9cnf%=uc(dst$,2))=" C":cnf%:dst$=s(dst$,dst$-2)) 1inf%=uc(dst$,4))="INF:":inf%:dst$=dst$,5) !dst$="":" missing":= @os%<6:dst$,"::")dst$,1)="-":"FS prefix unsupported":= /A$=src$:A$<>"/":A%=look:cblk%=ptr%:A%:= $*A$="/":A%=Mount:cblk%=root%:A%<0:= .FileInfo(cblk%) 8M(mode%24576)<>16384:fptr%=ientry%:leaf$=src$:CopyOneFile(src$,dst$):=0 B6A%=file(dst$,8):dst$=dst$+d$:CopyDirectory(dst$) L"MetaInfo(thisdir%):AcornInfo VSetInfo(dst$,dst$-1)) `=0 j7ݤ_IMPORT(A$):syn(" "):= t+A%=A$," "):src$=A$,A%-1):A$=A$,A%+1) ~+A%=A$," "):dst$=A$,A%-1):A$=A$,A%+1) 5ptr%=find(dst$):ptr%=0:"'"dst$"' not found":= FileInfo(ptr%) 7in%=f_openin(src$):in%=0:"'"src$"' not found":= Iln%=#in%:ln%>length%:#in%:in%=0:"Source file longer than dest":= :ln%>1024*1024-1:#in%:in%=0:"Can't 1M+ files yet":= ""Copying "src$;" to "dst$;4; P%=0ln%-1:B%=0 `(P%(bsz%-1))=0:f_gbpb(3,in%,data%,bsz%,P%):WriteData(P%):3,8)d(100*P%length%,2)"%"; :#in%:in%=0:3,127) =0 LCopyDirectory(dst$):entry%,bit%,inode%,fptr%,fname$,blk%,dptr%,alloc% 'A%=0634:thisdir%!A%=ientry%!A%: alloc%=all0%   /blk%=blk(thisdir%!alloc%):blk%:CopyBlock alloc%=alloc%+alsz% (blk%=0alloc%>almx%-1 2 <CopyBlock F(RdBlocks(dir%,blk%,D%,1):dptr%=dir% P Zinode%=!dptr%&FFFF d=dir%+bsz%  >CopyObject:ptr%,bit%,old_cblk%,thisdir$,bitmap$,object$ fname$="."fname$="..": 9cnf%:"Copy "fname$;:cnf%=yna(cnf%):cnf%>0::13 NFileInfo(inode%):leaf$=fname$:fname$=fn_undos(fname$),10):fptr%=ientry% ;(mode%24576)<>16384:CopyOneFile(leaf$,dst$+fname$): old_cblk%=cblk% -A%=063:thisdir$=thisdir$+thisdir%?A%: *A%=063:object$ =object$ +fptr%?A%: cblk%=inode% A%=file(dst$+fname$,8) "CopyDirectory(dst$+fname$+d$) )A%=063:object%?A%=object$,A%+1): MetaInfo(object%) "$AcornInfo:SetInfo(dst$+fname$) ,+A%=063:thisdir%?A%=thisdir$,A%+1): 6-cblk%=old_cblk%:RdBlocks(dir%,blk%,D%,1) @ J#CopyOneFile(src$,dst$):cblk% T+"Copying "src$;(15-src$)"to "dst$4; ^$A%=0634:object%!A%=fptr%!A%: h@MetaInfo(object%):file(dst$,5):X%?14=&33:A%=file(dst$,4) rKAcornInfo:X%!2=load%:X%!6=exec%:X%!10=0:X%!14=length%:A%=file(dst$,7) |length%:CopyData SetInfo(dst$):3,127): CopyData 8out%=f_openout(dst$):P%=0::ReadData(P%):=0:4; 0(P%1023)=0:3,8)d(100*P%length%,2)"%"; .num%=bsz%:P%+num%>length%:num%=length%-P% 8f_gbpb(2,out%,data%,num%,0):P%=P%+num%:P%>=length% #out%:out%=0: TSetInfo(dst$):X%!2=load%:X%!6=exec%:X%!10=length%:X%!14=attr%:A%=file(dst$,1) UA$=leaf$+15-leaf$," ")+h0(load%,8)+" "+h0(exec%,8)+" "+h0(length%,8)+13+10 Kinf%:out%=(dst$+s$+"inf"):p%=1A$:#out%,A$,p%,1)::#out%:out%=0  fs%<>5: +X%!8=cdate%:A%=NetFS_OpN(19,5,10,dst$) NetFS_Op(18,64+dst$): 6X%!8=cdate%:X%!10=ctime%:X%!13=mdate%:X%!15=mtime%  A%=NetFS_OpN(19,64,18,dst$) >A%=NetFS_Op(0,"ACCOUNT "+dst$+" "+~acc%+" ("+~aux%+")") & 05LstDir(cflg%):x%=0:Mount:"Not a UNIX disk": :RdInode(csd%) DH(ientry%?1(64+32))<>64"inode "h0(csd%,4)" is not a directory": N"Path: "path$ XU(cflg%1):"inode filename"12"mode"6"nd uid gid len ctime"4"mtime"4"atime" balloc%=all0% l v.blk%=blk(ientry%!alloc%):blk%:ListBlock alloc%=alloc%+alsz%  alloc%almx%-1 (cflg%1)=0:(x%3):  ListBlock (RdBlocks(dir%,blk%,D%,1):dptr%=dir%  inode%=!dptr%&FFFF =dir%+bsz%   ListFile(cflg%)  !(cflg%1):h0(inode%,4)" "; *,FileInfo(inode%):fname$;(15-fname$); 4@(cflg%1)=0:x%=x%+1:x%(cflg%1)=0: Hattr(mode%)" "; Rh0(nlink%,2)" "; \h0(uid%,2)" "; fh0(gid%,2)" "; pd(length%,6);" "; z4date(cdate%);" "date(mdate%);" "date(adate%)  PrSBlock A%=_FREE("") S"UnixFS version:";14;fsv%;" (";4*(~dmk%);"-bit) bsz=";bsz%;" naddr=";naddr% Z"isize: inode table size:"5"&"h0(isize%,4)" blocks, max inode: &";~isize%*bsz%/isz% *"in-core free blocks: &"h0(nfree%,4) ,fsv%=6:fbk%=6:stp%=2:ino%=&CE:in1%=&197 ,fsv%>6:fbk%=8:stp%=4:ino%=&D0:in1%=&199 Sn%=fbk%ino%-1stp%:fsv%=6:h0(dir%!n%,4);fsv%>6:h0(swap32(dir%!n%),8); (n%31)=4:8" "; : -"in-core free inodes: &"h0(dir%!ino%,4) En%=ino%+2in1%2:h0(dir%!n%,4);:((n%-ino%-2)31)=30:8" "; : 7"flock: free list lock:"7h0(dir%?(in1%+1),2);8; 4"ilock: inode table lock: "h0(dir%?(in1%+2),2) $<"fmod: superblock modified: "h0(dir%?(in1%+3),2);8; .3"dlock: disk read only:"3h0(dir%?(in1%+4),2) 8>"time: disk last update:"5date(swap32(dir%!(in1%+5))) BEn%=in1%+9&1FF2:h0(dir%!n%,4);:((n%-in1%-9)31)=30:8" "; L :: V `ݤattr(A%):A$="" j(A%1)A$="x"A$="-" t(A%2)A$="w"+A$A$="-"+A$ ~(A%4)A$="r"+A$A$="-"+A$ (A%8)A$="x"+A$A$="-"+A$ (A%16)A$="w"+A$A$="-"+A$ (A%32)A$="r"+A$A$="-"+A$ (A%64)A$="x"+A$A$="-"+A$ !(A%128)A$="w"+A$A$="-"+A$ !(A%256)A$="r"+A$A$="-"+A$ !(A%512)A$="s"+A$A$="-"+A$ "(A%1024)A$="g"+A$A$="-"+A$ "(A%2048)A$="u"+A$A$="-"+A$ "(A%4096)A$="l"+A$A$="-"+A$ "(A%8192)A$="c"+A$A$="-"+A$ #(A%16384)A$="d"+A$A$="-"+A$ #(A%32768)A$="a"+A$A$="-"+A$ =A$ ݤdate(A%) ,day%,month%,year%,hour%,minute%,second% (4X%!1=A%/2.56:X%!1=X%!1+&336E996A:Date_ToOrd(X%) 23=d0(day%,2)+"/"+d0(month%,2)+"/"+d0(year%,2) <UnixDateToAcorn(A%) F4X%!1=A%/2.56:X%!1=X%!1+&336E996A:Date_ToOrd(X%) P;date%=&101:year%>1980:date%=f_date(day%,month%,year%) Z(time%=f_time(hour%,minute%,second%) d nAcornInfo x6attr%=(mode%256)256+(mode%128)64+(mode%64)16 mattr%=attr%+(((mode%32)/2)((mode%4)*4))+(((mode%16)*2)((mode%2)*16))+(((mode%8)*8)((mode%1)*64)) cdate%>mdate%:cdate%=mdate% 6UnixDateToAcorn(cdate%):cdate%=date%:ctime%=time% 6UnixDateToAcorn(mdate%):mdate%=date%:mtime%=time% ?Date_FromOrd(X%,day%,month%,year%,hour%,minute%,second%,0) *X%!5=&FFFFFF:(mode%&49):X%!5=&FFFFE6 Cload%=X%!4:exec%=!X%:attr%=attr%+256*mdate%:acc%=uid%:aux%=gid%  Hݤlook:src$=A$:ptr%=find(src$):ptr%:FileInfo(ptr%):ln%=length%:= "'"src$"' not found":= 1ݤfind(A$):match$=A$,14):match%=0:Mount:=0 &RdInode(csd%):csd%=-1:csd%=root% alloc%=all0%:match%=0  .blk%=blk(ientry%!alloc%):blk%:FileBlock alloc%=alloc%+alsz% ")match%:alloc%almx%-1match% 6match%:=inode%=0 @FileBlock J(RdBlocks(dir%,blk%,D%,1):dptr%=dir% T ^inode%=!dptr%&FFFF h=dir%+bsz%match%  4FileInfo(f%):RdInode(f%):MetaInfo(ientry%): MetaInfo(i%) mode% =i%!0&FFFF nlink% =i%!2imk% uid% =i%!(2+usz%/2)imk% "gid% =i%!(2+2*(usz%/2))imk% "isz%=32:length%=swap24(i%!5) "isz%>32:length%=swap32(i%!8) Lisz%=32:adate%=swap32(i%!tm%):mdate%=swap32(i%!(tm%+4)):cdate%=mdate% Yisz%>32:adate%=swap32(i%!(tm%+8)):mdate%=swap32(i%!(tm%+4)):cdate%=swap32(i%!tm%)  RdInode(i%) 6RdBlocks(data%,(bsz%*2+i%*isz%-isz%)(bsz%),D%,1) &%i%=(bsz%*2+i%*isz%-isz%)(bsz%-1) 0-A%=0isz%-14:ientry%!A%=data%!(A%+i%): : DݤMount:csd%<>-1:=0 NDbsz%=512:fdcInit(diskrec%,9,9,2,2,80,1):RdBlocks(data%,2,D%,1) X4err%=-2:"Disk error: Image file not found":=-2 bNfsv%=6:isz%=32:root%=1:all0%=08:alsz%=2:naddr%=08:tm%=&18:usz%=2:bsz%=0512 lYdata%!8=0:fsv%=7:isz%=64:root%=2:all0%=12:alsz%=3:naddr%=13:tm%=&34:usz%=4:bsz%=0512 v[data%?1<&80:fsv%=9:isz%=64:root%=2:all0%=12:alsz%=3:naddr%=07:tm%=&34:usz%=4:bsz%=1024 Malmx%=all0%+alsz%*naddr%:dmk%=("&"+alsz%,"FF")):imk%=("&"+usz%,"FF")) #csd%=root%:home%=csd%:path$="/" =0 ݤblk(b%) alsz%=2:=b%&FFFF alsz%=3:=swap24(b%) =swap32(b%) !ReadData(ptr%):TxData(): "WriteData(ptr%):TxData(): TxData(write%):p% alsz%=2:Tx16Tx24 0p%=0:write%:A%=0bsz%-14:data%!A%=0:: 'p%:TxBlocks(data%,p%,D%,1,write%)  Tx24 Ep%=ptr%bsz%:p%p%>1:p%=0: HNp%=1:RdBlocks(data2%,data2%!((ptr%(bsz%/4))*4),D%,1):ptr%=ptr%(bsz%/4) Rp%=swap32(data2%!(ptr%*4)) \ f Tx16 p:(mode%4096)=0:p%=all0%+2*(ptr%bsz%):p%=ientry%!p%: z p%=all0%+2*(ptr%(128*1024)) %RdBlocks(data2%,ientry%!p%,D%,1) 'p%=(ptr%bsz%)&FF:p%=data2%!(p%*2)  6RdBlocks(a%,b%,d%,n%):TxBlocks(a%,b%,d%,n%,): 6TxBlocks(addr%,block%,drive%,number%,write%):q% err%=0:block%=block%dmk% Sq%=0number%-1:fdcAct(2+(write%=0),addr%+q%*bsz%,block%+res%+q%,drive%,1,0):  6fdcInit(dskrec%,bps%,spt%,hds%,den%,trks%,sec0%) i%:os%<>6: Sdskrec%?0=bps%:dskrec%?1=spt%:dskrec%?2=hds%:dskrec%?3=den%:den%=1:dskrec%?2=1 Gi%=4594:dskrec%!i%=0::dskrec%!60=&20000000:dskrec%!64=&20000000 7dskrec%?8=sec0%:dskrec%!16=trks%*spt%*(2^bps%)*hds%  %fdcAct(op%,ad%,sc%,dv%,nm%,dn%) Cop%=1:A%=0bsz%-14:ad%!A%=0::drv%=drv%-5:drv%>7:err%=-1: $Ddrv$=""::fdcOp(op%):ad%=ad%+bsz%:sc%=sc%+1:nm%=nm%-1:nm%<1: .1op%=2:dsk%=f_openup(drv$):dsk%=0:err%=-2: 81op%=1:dsk%=f_openin(drv$):dsk%=0:err%=-2: BTop%=1:sc%*bsz%>#dsk%:#dsk%:dsk%=0:err%=-3:"Disk error: Past end of image": L=f_gbpb(5-op%*2,dsk%,ad%,nm%*bsz%,sc%*bsz%):#dsk%:dsk%=0 V `fdcOp(op%) jos%>6:err%=-1 tSos%=6:ș"XADFS_DiscOp",,op%+(diskrec%<<6),sc%*bsz%+((dv%3)<<29),ad%,bsz%err% ~]os%<6:trk%=sc%9:trk%=trk%2+80*(trk%1):err%=scsi(ad%,6+op%*2,dv%4,trk%*16+sc%9+1,1)  csd%=0: err%:: err%=-1:"Unsupported": ;err%:"Disk error &"h0(err%,2)" at ";dv%":"h0(sc%,6)  1ݤswap24(A%):zp%!0=A%:zp%!3=A%:=zp%!1&FFFFFF )ݤswap32(A%):zp%!0=A%:zp%!4=A%:=zp%!2 /ݤs(A$):A$,1)=" ":A$=A$,2):A$,1)<>" " +A$,1)=" ":A$=A$,A$-1):A$,1)<>" " =A$ ݤuc(A$):A$="":="" EA%=1A$:A$,A%,1)>"_":A$=A$,A%-1)+(A$,A%,1)&5F)+A$,A%+1)  :=A$  3ݤfx(A%,X%):Y%:Y%=X%256:=(&FFF4&FFFF00)256 %ݤfn_undos(A$):B%:(os%-32):=A$ TA%=1A$:B%=".#$^&@%~",A$,A%,1)):B%:A$=A$,A%-1)+"/?<>+=;\",B%,1)+A$,A%+1) ( :=A$ 2ݤyna(A%):A%=0:=0 <+"? (Y/N/A)";::A%="YAN",(&DF)):A% F+7,127);"YesAllNo ",A%*3-2,3);:=A%-2 P%ݤh0(A%,N%):="00000000"+~A%,N%) Z$ݤd0(A%,N%):="00000000"+A%,N%) d$ݤd(A%,N%):=" "+A%,N%) n+ݤscsi(addr%,cmd%,drv%,sect%,num%):fs% xfs%=fs:fs%<>8:*FADFS DX%?0=0:X%!1=addr%:X%?5=cmd%:X%?6=drv%*32+((sect%&1F0000)65536) 9X%?7=((sect%&FF00)256):X%?8=sect%:X%!9=num%:X%!11=0 2A%=&72:&FFF1:A%=?X%:fs%<>8:"FX143,18,"+fs% =A% -ݤfs:(os%-32)=0:A%,Y%,E%:=(&FFDA)&FF =29 %f_gbpb(A%,chn%,addr%,num%,ptr%) >?X%=chn%:X%!1=addr%:X%!5=num%:X%!9=ptr%:<&FFFFF:&FFD1: A%=1A%=3:#?X%=X%!9 3:A%=1A%=2:#?X%,?X%!1A%=3A%=4:?X%!1=#?X% 2X%!1=X%!1+1:X%!5=X%!5-1:(#?X%A%>2)X%!5<1: Rݤfile(A$,A%):A%-8:<&FFFFF:$name%=A$:?X%=name%:X%?1=name%256:=(&FFDD)&FF RA$=f_name(A$):A%=255A%=5:X%!14=(A$):X%!14:X%!10=#X%!14:#X%!14:X%!14=&33 1A%=255:X%?6=0:"LOAD """+A$+""" "+~X%!2:=1 A%=5:X%!14:=1A%=5:=0 FA%=0:"SAVE """+A$+""" "+~X%!10+" "+~X%!14:X%!10=X%!14-X%!10:=1 "BA%=7:"SAVE """+A$+""" "+~+"+"+~X%!10:X%!10=X%!14-X%!10:=1 , A%-8:=0 6+(os%-24):A$="mkdir "+A$A$="cdir "+A$ @>&FFFF:::=0 J A$:=2 T!ݤf_openin(A$)=(f_name(A$)) ^"ݤf_openout(A$)=(f_name(A$)) h!ݤf_openup(A$)=(f_name(A$)) rWݤf_name(A$):os%-32:A%,B%:B%=A%:A%=A$,"\",A%+1):A%=0:A$,".",B%)=0:A$=A$+"." |=A$ +ݤNetFS_Op(A%,A$)=NetFS_OpN(A%,0,7,A$) PݤNetFS_OpN(A%,T%,O%,A$):N%:!X%=0:X%?1=O%+1+A$:X%!3=A%:X%?7=T%:$(X%+O%)=A$ X>&FFFF:N%=4X%?1:X%?N%=X%?(N%+3)::ș&60048,A%,X%+4,O%+A$,120A%:A%=0:X%?3=0:=0 ;>&FFFF:A%>&FFFF:X%?3=?A%:ș&2002B,A%+4$(X%+4):=X%?3 A%=&14:&FFF1:=X%?3 ;Date_FromOrd(mem%,d%,m%,y%,hr%,mn%,sc%,cs%):y%=y%400 qd%=y%*365.25+m%*30+d%+"120112234455",m%,1)+((y%4)=0)-((y%-1)100)-(m%>2((y%4)=0(y%100)<>0y%=0))+36493 d%>146066:d%=d%-146097 =d%=d%*&41EB:mem%!1=d%+d%:d%=((hr%*60+mn%)*60+sc%)*100+cs% #?mem%=d%:mem%!1=mem%!1+d%256: #Date_ToOrd(mem%):A%,B%,C%,D% @year%=0:month%=0:day%=0:hour%=0:minute%=0:second%=0:centi%=0 mem%!1<0: FD%=mem%!1&83D6+2447065:C%=mem%?0+256*(mem%!1&83D6):centi%=C%100 >C%=C%100:second%=C%60:C%=C%60:minute%=C%60:hour%=C%60 8B%=((D%*4+3)146097-4)+3:C%=B%14614*5+2:D%=D%*4+3 &.A%=C%153+2:day%=C%1535+1:month%=A%12+1 0*year%=D%146097*100+B%1461+A%12-4800 : DDݤf_date(d%,m%,y%):y%=y%-1981:=d%+m%*256+(y%15)*4096+(y%16)*32 N*ݤf_time(h%,m%,s%):=h%+m%*256+s%*65536