LpL=(PDP-11 BASIC0.12 (10 Feb 2008)(C) J.G.Harston`H .)  !Lh`BASIC -quit @0000C098,0000FE19  > PDP11Sq #:Close_All:" at line ";: :A$=OS_GetEnv:ver$="0.22":debug%=0:Init:quiet%=A$<>"" (A$="":"PDP11 Emulator v"ver$" (C)2001-2006 J.G.Harston"'"Memory start: &"h0(mem%,8)" MemSz: &"h0(mz%,6)" MemMsk: &"h0(mm%,6) 2rA$="":"prog: &"h0(prog%,4)" base: &"h0(base%,4)" err: &"h0(err%,4)" sys: &";h0(sys%,4)" io: &"h0(io%,4) "":A%=_RUN(A$) Z run%:Go dquiet%:A%=_QUIT("") n "PDP11> "A$:cmd(A$,0):0 x Init Frunpath$=run$:runpath$,1)="""":runpath$=runpath$,2,runpath$-2) -runpath$=runpath$):".:",runpath$,1)) d$=".":s$="/" Cswap$="PDPswap":mz%=memsize:mm%=mz%-1:mtop%=mz%:mbot%=0:run%= Sctrl%31,zp%127,r%(7),mem%mz%:psw%=0:trace0%=0:trace1%=&FFFF:X%=ctrl%:Y%=X%256 0prog%=mem(0):base%=mem(&100):base%=mem(0) ?io%=0:sys%=0:err%=mem(-&100):mem%?err%=13:escflg%=err%+255 err0%=err%:EscInit: ;ݤmemsize:A%=2^((--1024)/2):A%<&10000:=A%=&10000 Bݤmem(A%):A%<0:mtop%=mtop%+A%:=mtop%mbot%=mbot%+A%:=mbot%-A% Error:X%=ctrl%:Y%=X%256 -1:run%= Crun%::Close_All:" at line "+Þ,<128<>17):-1:RegDump run%:mem%!err%=:mem%!(err%+4)=&880F:mem%?(err%+6)=:$(mem%+err%+7)="PDPEm: ",<128<>17)+$+0:psw(0,0,,,=17,=17):r%(0)=err%+6:=17:mem%?escflg%=&FF  "?cmd(A$,link%):A$<>"":A$,1)=" ":A$=A$,2):A$,1)<>" " ,A$=""A$,1)="|": 6A$,1)="*":A$,2): @A$,1)=".":"."+A$,2): J A$,1)="/":A$="RUN "+A$,2) T2A%=A$+" "," "):C$=uc(A$,A%-1)):A$=A$,A%+1) ^3A%=" BASIC GO HELP LOAD QUIT RUN "," "+C$+" ") hA%:A%=("FN_"+C$+"(A$)"): rA%=_run(C$+" "+A$,): |=ݤ_HELP(A$):'"PDP11 Emulator ";ver$:uc(A$)<>"PDP11":=0 =0 *ݤ_BASIC(A$):=_RUN(" "+A$) ݤ_QUIT(A$):A$:halt%=:=0 Close_All "QUIT":=0 ݤ_RUN(A$):=_run(A$,) *ݤ_run(A$,osc%):ȕA$,1)=" ":A$=A$): A%=A$+" "," "):A$="": NC$=A$:F$=A$,A%-1):in%=(F$):in%=0:in%=(F$+s$+"pdp"):in%=0:osc%:C$:=0 "in%=0:"Can't open '"F$"'":=0 "gbpb(3,in%,zp%,128,0):#in%=0 \zp%!(zp%?7)=&29432800:(zp%?6&2F)=&27:A%=zp%?7:A%=A%+1:zp%?A%=0:A%=A%+5:#in%=zp%!A% >gbpb(3,in%,zp%,16,#in%):#in%=#in%-16:magic%=!zp%&FFFF /magic%<&105magic%>&111:magic%=0magic%=16 Xgbpb(3,in%,mem%+prog%-base%*(magic%=0),#in%-magic%-#in%,#in%+magic%):#in%:in%=0 UA%=04:r%(A%)=0::r%(5)=&0BBC:r%(6)=mtop%-2:r%(7)=prog%+base%:debug%16:r%(5)=0 &umagic%:framer%(6)=r%(6)-C$-3:$(mem%+r%(6)+2)=C$:r%(1)=r%(6)+2:mem%?0=0:mem%?1=0:mem%?r%(6)=0:mem%?(r%(6)+1)=0 0=_GO(h0(r%(7),4)) : frame DXA%=(zp%!6)&FFFF:A%:B%=(zp%!2&FFFF)+(zp%!4&FFFF):mem%?B%=0:B%=B%+1:A%=A%-1:A%=0 N-r%(7)=prog%+zp%!10&FFFF:A%=1:B%=1:C%=1: X`C$,A%,1)=" ":C%=C%+1:B%=A%:B%=B%+1:C$,B%,1)<>" ":C$=C$,A%-1)+0+0,(A%1)<>0)+C$,B%) b;A%=A%+1:A%>C$:B%=(mtop%-C$-3)-2:$(mem%+B%)=C$+0+0 lgmem%?(mtop%-1)=0:mem%?(mtop%-2)=0:r%(6)=(mtop%-C$-2*C%-6-3)-2:mem%?r%(6)=C%:mem%?(r%(6)+1)=C%256 v.A%=r%(6)+2::mem%?A%=B%:mem%?(A%+1)=B%256 6:B%=B%+1:mem%?B%=0B%>mtop%:B%=(B%+2)-2:A%=A%+2 !C%=C%-1:C%<0:mem%!(A%-2)=0: 3ݤ_LOAD(A$):A%=A$," "):A%=0:"Bad address":=0 F$=A$,A%-1):A$=A$,A%+1) ,uc(A$,2))="&O":A$=h0(oct(A$,3)),8) 2"Load "+f_name(F$)+" "+~(mem%+("&"+A$)):=0 ݤ_GO(A$):A$="":=0 ,uc(A$,2))="&O":A$=h0(oct(A$,3)),8) r%(7)=("&"+A$):Go:=0 ݤoct(A$):A%: -A$>"/" A$<":":A%=A%*8+A$,1):A$=A$,2) (A$>"/" A$<":"):=A% "EscInit:esch%=esch%:esch%: 7esch%31:P=01:P%=esch%:[OPT P*2:MOV R11,R11,LSL#1  SLDR R12,escb%:STRB R11,[R12]:MOV PC,R14:.escb%:EQUD mem%+escflg%:]::escho%=0: $EscOff:escho%=escho%:escho%:  @ș"OS_ChangeEnvironment",9,esch%,0,0,escho%,escRo%,escbo%: * 4FEscOn:ș"OS_ChangeEnvironment",9,escho%,escRo%,escbo%:escho%=0: >(Go:abort%=:halt%=0:run%=:EscOff H R.op%=mem%!(r%(7)mm%):r%(7)=(r%(7)+2)&FFFE \@dd%=op%63:ss%=(op%&FC0)64:op%=(op%&F000)&1000:by%=op%8 fGA%=("FN_"+~(op%7)):halt%:EscOn:run%=:quiet%abort%:RegDump p zݤsrc(ss%,b%) &m%,r%,a%:D%=0:a%=&FFFF:b%:a%=&FF .m%=ss%8:r%=ss%7:b%=2-b%:r%>5:m%<6:b%=2 m%=0:D%=0:=r%(r%)a% m%=1:D%=r%(r%) $m%=2:D%=r%(r%):r%(r%)=r%(r%)+b% .m%=3:D%=mem%!(r%(r%)mm%):r%(r%)=r%(r%)+2 $m%=4:r%(r%)=r%(r%)-b%:D%=r%(r%) .m%=5:r%(r%)=r%(r%)-2:D%=mem%!(r%(r%)mm%) :m%=6:D%=mem%!(r%(7)mm%):r%(7)=r%(7)+2:D%=(r%(r%)+D%) Em%=7:D%=mem%!(r%(7)mm%):r%(7)=r%(7)+2:D%=mem%!((r%(r%)+D%)mm%) ib%=2:(D%1):(debug%8)=0:"Bus error: word read from odd address (";m%;"/";r%;")":halt%=:abort%= =mem%!(D%mm%)a% pre(dd%,b%) :m%,r%:D%=0:m%=dd%8:r%=dd%7:b%=2-b%:r%>5:m%<6:b%=2 m%=4:r%(r%)=r%(r%)-b% m%=5:r%(r%)=r%(r%)-2 $m%=1m%=2m%=4:D%=r%(r%) .#m%=3m%=5:D%=mem%!(r%(r%)mm%) 8+m%=6:D%=mem%!(r%(7)mm%):r%(7)=r%(7)+2 B+m%=7:D%=mem%!(r%(7)mm%):r%(7)=r%(7)+2 L Vݤdst(dd%,b%) `3m%,r%,a%:m%=dd%8:r%=dd%7:a%=&FFFF:b%:a%=&FF jm%=0:=r%(r%)a% t$m%=6:=mem%!((r%(r%)+D%)mm%)a% ~=mem%!(D%mm%)a% dst(dd%,v%,b%) Am%,r%:m%=dd%8:r%=dd%7:v%=v%&FFFF:b%=2-b%:r%>5:m%<6:b%=2 5m%=0:b%=1:r%(r%)=(v%&FF)(&FF00(v%128)<>0): m%=0:r%(r%)=v%: 9m%<6:mem%?(D%mm%)=v%:b%=2:mem%?((D%+1)mm%)=v%256 m%=2:r%(r%)=r%(r%)+b%: m%=3:r%(r%)=r%(r%)+2: Im%=6:mem%?((r%(r%)+D%)mm%)=v%:b%=2:mem%?((r%(r%)+D%+1)mm%)=v%256 _m%=7:mem%?(mem%!((r%(r%)+D%)mm%)mm%)=v%:b%=2:mem%?(mem%!((r%(r%)+D%)mm%+1)mm%)=v%256   psw(v%,b%,cv%,nv%,cc%,nc%) %v%=0:psw%=psw%4psw%=psw%&FFFB /b%=0:psw%=(psw%&FFF7)(((v%&8000)<>0)8)  +b%:psw%=(psw%&FFF7)(((v%&80)<>0)8) 'cv%:psw%=(psw%&FFFD)((nv%<>0)2) 'cc%:psw%=(psw%&FFFE)((nc%<>0)1) ( 2/carry(c%):psw%=(psw%&FFFE)((c%<>0)1): (W%&80)):psw(R%,0,1,V%,1,R%&FFFFFF00):=0 ZYV%=((V%&8000)=(W%&8000))((R%&8000)<>(W%&8000)):psw(R%,0,1,V%,1,R%&FFFF0000):=0 dEݤ_3:V%=src(ss%,by%):W%=src(dd%,by%):psw(V%W%,by%,1,0,0,0):=0 n8ݤ_4:V%=src(ss%,by%):pre(dd%,by%):W%=dst(dd%,by%) x6V%=V%W%:dst(dd%,V%,by%):psw(V%,by%,1,0,0,0):=0 8ݤ_5:V%=src(ss%,by%):pre(dd%,by%):W%=dst(dd%,by%) 5V%=V%W%:dst(dd%,V%,by%):psw(V%,by%,1,0,0,0):=0 Oݤ_6:V%=src(ss%,0)&FFFF:pre(dd%,0):W%=dst(dd%,0):by%:R%=W%-V%R%=W%+V% ;V%=(V%&8000)=(W%&8000):V%=V%((R%&8000)<>(W%&8000)) 4dst(dd%,R%,0):psw(R%,0,1,V%,1,R%&FFFF0000):=0 %ݤ_7:by%:=0=("FN_7"+~(ss%8)) )ݤ_0:(ss%&20)=0:ss%>3by%:=branch ss%8=7:=0 ss%8=4:=_04 =("FN_0"+o0(ss%,2)) /ݤbranch:dist%=dd%+(ss%3)*64:op%=ss%4+op% op%=1:=rel() op%=2:=rel((psw%4)=0) op%=3:=rel((psw%4)<>0) /op%=4:=rel(((psw%8)<>0)((psw%2)<>0)=0) 0op%=5:=rel(((psw%8)<>0)((psw%2)<>0)<>0) ";op%=6:=rel(((psw%4)<>0((psw%8)<>0(psw%2)<>0))=0) ,0((psw%8)<>0(psw%2)<>0))<>0) 6op%=8:=rel((psw%8)=0) @op%=9:=rel((psw%8)<>0) J0op%=10:=rel(((psw%1)<>0)((psw%4)<>0)=0) T1op%=11:=rel(((psw%1)<>0)((psw%4)<>0)<>0) ^op%=12:=rel((psw%2)=0) hop%=13:=rel((psw%2)<>0) rop%=14:=rel((psw%1)=0) |op%=15:=rel((psw%1)<>0) =0 ݤrel(A%):A%:=0 127:r%(7)=r%(7)-(256-dist%)*2r%(7)=r%(7)+dist%*2 =0  ݤ_000 dd%=0:halt%=:=0  dd%=1:=0  dd%=2:=0  dd%=3:=0  dd%=4:=0  dd%=5:=0  dd%=6:=0  dd%=7:=0 =0 Nݤ_001:(dd%&38)=0dd%=&17:(debug%8)=0:"JMP fault":halt%=:abort%=:=0 ]A%=src(dd%,0):(D%1):(debug%8)=0:"Bus error: JMP to odd address":halt%=:abort%=:=0 &r%(7)=D%:=0 0 ݤ_002 :!dd%>47:psw%=psw%(dd%15):=0 D"dd%>23:psw%=psw%(dd%15):=0 N(dd%8)=3:=0 X(dd%8)=2:=0 b(dd%8)=1:=0 l;r%=dd%7:r%(7)=r%(r%):W%=mem%?(r%(6)mm%):r%(6)=r%(6)+1 v9W%=mem%?(r%(6)mm%)*256+W%:r%(6)=r%(6)+1:r%(r%)=W%:=0 Eݤ_003:pre(dd%,0):V%=dst(dd%,0):!zp%=V%:zp%!2=V%:R%=zp%!1&FFFF (dst(dd%,R%,0):psw(V%,0,1,0,1,0):=0 ݤ_04:by%:=_TRAP 9(dd%&38)=0dd%=&17:"JSR fault":halt%=:abort%=:=0 OA%=src(dd%,0):(D%1):"Bus error: JSR to odd address":halt%=:abort%=:=0 3ݤ_057:V%=src(dd%,by%):psw(V%,by%,1,0,1,0):=0 H3ݤ_060:pre(dd%,by%):V%=dst(dd%,by%):W%=psw%1 RNby%=1:R%=((V%2)&7F)(W%*&80):psw(R%,by%,1,(R%>&7F)((V%1)<>0),1,V%1) \Tby%=0:R%=((V%2)&7FFF)(W%*&8000):psw(R%,by%,1,(R%>&7FFF)((V%1)<>0),1,V%1) fdst(dd%,R%,by%):=0 p3ݤ_061:pre(dd%,by%):V%=dst(dd%,by%):W%=psw%1 zLby%=1:R%=((V%*2)&FE)W%:psw(R%,by%,1,(R%>&7F)((V%&80)<>0),1,V%&80) Tby%=0:R%=((V%*2)&FFFE)W%:psw(R%,by%,1,(R%>&7FFF)((V%&8000)<>0),1,V%&8000) dst(dd%,R%,by%):=0 )ݤ_062:pre(dd%,by%):V%=dst(dd%,by%) Rby%=1:W%=V%&80:R%=((V%2)&7F)W%:psw(R%,by%,1,(R%>&7F)((V%1)<>0),1,V%1) Xby%=0:W%=V%&8000:R%=((V%2)&7FFF)W%:psw(R%,by%,1,(R%>&7FFF)((V%1)<>0),1,V%1) dst(dd%,R%,by%):=0 )ݤ_063:pre(dd%,by%):V%=dst(dd%,by%) Gby%=1:R%=(V%*2)&FE:psw(R%,by%,1,(R%>&7F)((V%&80)<>0),1,V%&80) Oby%=0:R%=(V%*2)&FFFE:psw(R%,by%,1,(R%>&7FFF)((V%&8000)<>0),1,V%&8000) dst(dd%,R%,by%):=0 #ݤ_064:by%:psw%=src(ss%,0):=0 5"#"o0(r%(7)-2,6)":"o0(mem%!(r%(7)-2),6)"#";:=0 <ݤ_065:"#"o0(r%(7)-2,6)":"o0(mem%!(r%(7)-2),6)"#";:=0 <ݤ_066:"#"o0(r%(7)-2,6)":"o0(mem%!(r%(7)-2),6)"#";:=0 /ݤ_067:by%:pre(dd%,0):dst(dd%,psw%,0):=0 8pre(dd%,0):V%=dst(dd%,0)&FF:(V%&80):V%=V%&FF00 $dst(dd%,V%,0):=0 .2ݤ_70:V%=src(dd%,0):r%=ss%7:r=V%*r%(r%):W%=0 8?r>&7FFFFFFF:r=&7FFFFFFF:W%=1r<&80000000:r=&80000000:W%=1 B9r%(r%1)=r65536:r%(r%)=r&FFFF:psw(r,0,1,0,1,W%):=0 L>ݤ_71:V%=src(dd%,0):r%=ss%7:r%1:psw%=(psw%&FFFD)2:=0 VP!zp%=r%(r%):zp!2=r%(r%1):v%<>0:W%=!zp%V%:R%=!zp%V%:r%(r%1)=R%:r%(r%)=W% `-psw(W%,0,V%=0(r%(r%))>(V%),1,V%=0):=0 j$ݤ_72:V%=src(dd%,0)63:r%=ss%7 t:V%<32:R%=r%(r%)*2^V%:psw(R%&FFFF,0,1,0,1,R%&10000) ~31:R%=r%(r%)2^(63-V%):psw(R%,0,1,0,1,R%1):R%=R%2 r%(r%)=R%&FFFF:=0 $ݤ_73:V%=src(dd%,0)63:r%=ss%7 eV%<32:R%=r%(r%)*2^V%:S%=(r%(r%1)*2^V%)(R%65536):psw((R%&FFFF)(S%&FFFF),0,1,0,1,S%&10000) V%>31:R%=(r%(r%)2^(63-V%))(r%(r%1)*2^(V%-47)):S%=(r%(r%1)2^(63-V%)):psw(R%S%,0,1,0,1,R%1):S%=S%256+32768*(R%1):R%=R%2 (r%(r%)=R%&FFFF:r%(r%1)=S%&FFFF:=0 4ݤ_74:pre(dd%,0):V%=dst(dd%,0):R%=V%r%(ss%7) (dst(dd%,R%,0):psw(R%,0,1,0,0,0):=0 ;ݤ_75:"#"o0(r%(7)-2,6)":"o0(mem%!(r%(7)-2),6)"#";:=0 ݤ_76:=0 Wݤ_77:dist%=dd%-192*(dd%>31):ss%=ss%7:V%=(r%(ss%)-1)&FFFF:r%(ss%)=V%:=rel(V%<>0) ݤ_TRAP:dd%=dd%+(ss%7)*64 :dd%<16:psw%=psw%-4:A%=r%(0):A%=("FN_EMT"+~dd%):=A% #dd%<256:=("FN_EMT("+dd%+")") Sdd%=dd%&FF:r7%=r%(7):dd%<&40:A%=("FN_TRAP"+~dd%)A%=("FN_TRAP("+~dd%+")") r%(7)=r7%:=A% ݤ_EMT0:halt%=:=0 (;ݤ_EMT1:EscOn:cmd($(mem%+r%(0)),):r%(0)=0:EscOff:=0 2ݤ_EMT2:X%,Y% <A%=&82:r%(1)=0:r%(2)=0:=0 F.A%=&83:r%(1)=membot%:r%(2)=membot%256:=0 P.A%=&84:r%(1)=memtop%:r%(2)=memtop%256:=0 Z3A%>123:A%<127:mem%?escflg%=128*(A%1):"FX15" d+A%=&7F:r%(1)=0r%(1)=&FFFF:r%(1)=0:=0 nA%=&A0:vdu:=0 xcX%=r%(1):Y%=r%(2):A%=&FFF4:r%(1)=(A%&FFFF00)256:r%(2)=(A%&FF0000)65536:carry(A%&1000000) =0 ݤvdu r%(1)<16:r%(1)<>3:=0 磌 =0  r%(1)=3:r%(1)=96 Ȏr%(1) 16:A%=138 18:A%=139 20:A%=142 22:A%=143 36:A%=144 38:A%=145 77:A%=148 80:A%=149 "83:A%=150 ,87:A%=155 688:A%=156 @89:A%=153 J90:A%=154 T91:A%=151 ^92:A%=152 h 96:A%=3 r |'A%=r%(1):A%<128:r%(1)=0:r%(1)=0:=  6!zp%=A%:zp%!4=-1:ș"OS_ReadVduVariables",zp%,zp%+8 r%(1)=zp%!8:r%(2)=r%(1)256 = ݤ_EMT3:X%,Y% @A%=0:EscOn:""A$:$(mem%+(mem%!r%(1)&FFFF))=A$:EscOff:=0 %X%=mem%+r%(1):Y%=X%256:&FFF1:=0 =0 ݤ_EMT4:A%:=0 ݤ_EMT5::r%(0)=13:=0 ݤ_EMT6:r%(0)=:=0 ݤ_EMT7 &A%=2144:X%!A%=mem%!(r%(1)+A%): fn%=mem%+(mem%!r%(1)&FFFF) 1r%(0)=0r%(0)=255:addr(2):r%(0)=0:addr(6) Mș"OS_File",r%(0),$fn%,X%!2,X%!6,X%!10,X%!14r%(0),,X%!2,X%!6,X%!10,X%!14 &)A%=2144:mem%!(r%(1)+A%)=X%!A%::=0 0-addr(A%):X%!A%<&10000:X%!A%=mem%+A%!X% : D ݤ_EMT8 N,A%=0:r%(1)=0:Y%:r%(0)=(&FFDA)&FF:=0 Xr%(1)=0r%(1)=&FFFF b ȎA% l0:mem%!r%(2)=0:=0 v 1:=0 2:mem%!r%(2)=0:=0 3:=0 4:mem%!r%(2)=0:=0 5:mem%!r%(2)=0:=0   ȎA% 0:mem%!r%(2)=#r%(1):=0 1:#r%(1):mem%!r%(2):=0 2:mem%!r%(2)=#r%(1):=0 3:#r%(1)=mem%!r%(2):=0 4:mem%!r%(2)=#r%(1):=0 5:mem%!r%(2)=#r%(1):=0  /mem%!r%(1)=args(r%(0),r%(1),mem%!r%(2)):=0  =0 *ݤ_EMT9:r%(1)=0:r%(0)=:=0 4>Y%:Y%=r%(1):A%=&FFD7:r%(0)=A%&FF:carry(A%&1000000):=0 >)ݤ_EMTA:r%(1)=0:A%:=0#r%(1),A%:=0 H ݤ_EMTB R$A%=012:X%?A%=mem%?(r%(1)+A%): \&B%=(X%!1<&10000):addr(1):A%=r%(0) f3?X%=0:A%=1A%=2:?(X%!1):X%!5=X%!5-1:X%!5<1 p4?X%=0:A%=3A%=4:?(X%!1)=:X%!5=X%!5-1:X%!5<1 z)?X%:gbpb(r%(0),X%?0,X%!1,X%!5,X%!9) B%:X%!1=X%!1-mem% $A%=012:mem%?(r%(1)+A%)=X%?A%: =0 ݤ_EMTC A%=0:#r%(1):=0 +(A%&C0)=&40:r%(0)=($(mem%+r%(1))):=0 +(A%&C0)=&80:r%(0)=($(mem%+r%(1))):=0 +(A%&C0)=&C0:r%(0)=($(mem%+r%(1))):=0 =0 ݤ_EMTD +A%=0:r%(1):=_BASIC($(mem%+r%(1))):=0 "A%=0:r%(1)=0:=_BASIC(""):=0 AA%=1A%=2:err%=err0%:escflg%=err%+255:!escb%=mem%+escflg%:=0 =0 ݤ_EMTE:r1%=r%(1):r2%=r%(2) @A%=&FFFE:r%(2)=escflg%:r2%:escflg%=r2%:!escb%=mem%+escflg% $&A%=&FFFD:r%(2)=err%:r2%:err%=r2% .=0 8ݤ_EMTF:=0 Bݤ_EMT(A%):=0 Lݤuc(A$):B$:A$="":="" V5B$=B$+(A$((A$<"@")&DF)):A$=A$,2):A$="":=B$ `#ݤh0(A%,N%)="0000000"+~A%,N%) j:ݤo0(A%,N%):A$,B$:A%<0:B$="7":A%=A%&7FFFFFFFB$="0" t2A$=(A% 7)+A$:A%=A%8:A%=0:=N%,B$)+A$,N%) ~@ݤOS_GetEnv:A$,A%,X%,Y%:X%=1:os%=((&FFF4)&FF00)256:X%-1 -A$="* :Software.PDP11.BBCBasic.basic/rom" {A$=0:>&7FFF:run$=$&8100:ș"OS_GetEnv"A$,,A%:ș"OS_WriteEnv","",A%:A$=A$,1+A$+" "," ",1+A$," "))):A$=0:A$=run$ 0A$=0:?(P-3):A$=$&600A$=0:A$=$(-&300) 7A%=A$+" "," "):run$=A$,A%-1):run$<>"":=A$,A%+1) bY%=X%256:A%=9:?X%=0:X%!1=X%+16:X%!16=0:&FFD1:A%=X%+16:!A%?A%+A%?2<>8:A%?(A%+1)=13:=$(A%+1) ="" Bݤfile(A$,A%):$name%=A$:?X%=name%:X%?1=name%256:=(&FFDD)&FF Tgbpb(A%,chn%,addr%,num%,ptr%):?X%=chn%:X%!1=addr%:X%!5=num%:X%!9=ptr%:&FFD1: 3ݤargs(A%,Y%,ptr%):X%,E%:?(P-3)=0:E%=Y%:Y%=0 .<&8000:!&70:X%=&70:!X%=ptr%:&FFDA:=!X% 'ș"OS_Args",A%,Y%,ptr%,,ptr%:=ptr% Close_All:*EXEC "in%=in%:in%:A%=in%:in%=0:#A% 'out%=out%:out%:A%=out%:out%=0:#A%