ô > PUTSYS/SRC 9ô Copy system file to system tracks on Acorn CPM disk : A%=0:X%=1:os%=(º&FFF4 € &FF00)256:ç os%=6 € >&8000:ñ"Running Z80...":È™ "OS_GetEnv" ¸ A$:ÿ"Z80 "+ÁA$,§A$," ",1+§A$," "))):à $unix%=os%=8:quit%=?&80<>0:?&80=0 î … ö:ñ" at line ";:à )Ş mcode% &800:start%=&100:ver$="0.01" : 7OSWORD=&FFF1:CLICOM=&FFB9:PRTEXT=&FFB3:OSNEWL=&FFE7 7PRHEX=&FFAA:PR2HEX=&FFAD:OSNEWL=&FFE7:DISKACC=&FFA4 : ô CPM Entries: DRIVE=4:bdos=5 ,bdos_string=9:bdos_open=15:bdos_close=16 "bdos_readseq=20:bdos_setdma=26 : ô Memory locations: FCB1=&5C:FCB2=&6C:DMA=&80 : òassem("PUTCCP",8,&800,0) òassem("PUTBDOS",16,&E00,0) !òassem("PUTBIOS",0,&800,&800) !òassem("PUTSYS",0,&1E00,&800) ç quit%:*Quit à : 7ݤopt(A%,B%):A%=(P%-B%)€A%:P%=P%-A%:O%=O%-A%:=P*3+4 (İòassem(name$,sector%,length%,move%) Cs1%=0:n1%=0:s2%=0:n2%=0:s3%=0:n3%=0:s0%=sector%:n0%=length%256 Kç(s0%ƒ10)+n0%>10:s1%=10*(s0%10)+10:n1%=n0%:n0%=10-(s0%ƒ10):n1%=n1%-n0% Kç(s1%ƒ10)+n1%>10:s2%=10*(s1%10)+10:n2%=n1%:n1%=10-(s1%ƒ10):n2%=n2%-n1% Gç length%=&1E00:s0%=8:n0%=2:s1%=10:n2%=10:s2%=20:n2%=10:s3%=0:n3%=8 !: " ã P=0 ¸ 1 #P%=start%:O%=mcode% $[OPT P*3+4 % JP Start &.msgSyntax 'JİB 13:İB 10:İM "Syntax: "+name$+" filename ()":İB 13:İB 10:İM "$" (.msgNotFound )6İB 13:İB 10:İM "File not found":İB 13:İB 10:İM "$" *: +.errNotFound ,#LD DE,msgNotFound:JR ErrorAbort -.errSyntax .LD DE,msgSyntax /.ErrorAbort 0LD C,bdos_string:JP bdos 1: 2 .Start 3:LD A,(FCB1+1):CP —" ":JR Z,errSyntax :\ No parameters 4: 5>LD A,(DRIVE):€ 15:LD B,A :\ Get current drive 6RLD A,(FCB2+0):€ A:JR Z,SetDrive :\ No drive specified, use current drive 7DEC A:LD B,A 8 .SetDrive 9ELD A,B:CP 2:JR NC,errSyntax :\ Only drive 0/1 allowed :JLD (Disk_0),A :\ Set drive in control blocks ;(.z%:LD (Disk_1),A:OPT ¤opt(n1%=0,z%) <(.z%:LD (Disk_2),A:OPT ¤opt(n2%=0,z%) =(.z%:LD (Disk_3),A:OPT ¤opt(n3%=0,z%) >: ?=XOR A:LD (FCB1+32),A :\ Set rc to zero @