UtilitieTreeCop$TreeCop$Scroll/$Scroll $Printer$Printer$MCat $MakeLP/$MakeLP $lpS $LC-1001$LC-1001$KbdTorc$KbdMast$KbdIBM $KbdBBC $FormLis$ETree $EDtoVIE$EDtoVIE$EcoMenu$EcoMenu$disp $DefIcon$DefIcon$DefChar$DefChar$s1 '1Ff M^{FkMy^{[HЉLHЉ8BM2HृMG%<HЉvHЉsF F F F Fi$k{G4$ G4 vEH5LnEHL] 4ZDNq LPD^2DN L$D!  >DefChar 2.06  Character defining program  By J.G.Harston (+&84:g128=0:oflg%=0: VDU23;10,96;0;0;0 2$ Preserves char 128 during grid <*K.10O.|MRUN|M FSer%=: get128:_ERROR:er%=: <>17 oflg%=0 t~@ oflg% :t~@ d`A P9OSWORD=&FFF1: cblk% 20:((-256)&F0)=&A0:*POINTER 1 Z5char=64:mx%=0:my%=0:ms%=0:mL%=0:mM%=0:mR%=0:b% 7 dxo%=320:yo%=478 n *FX225,1 x*FX226,128 *K.11|!J *K.12|!L *K.13|!M *K.14|!N *K.15|!O oflg% 0,30);5;:*FX4,2 _CSET:oflg%=0 ):Q=8:: A$:18,Q);A$:Q=Q+1: A$="" 'Q=8:: A$:28,Q);A$:Q=Q+1: A$="" > Get,Put,Load,Save,Quit," "," ",Cursors,to move,& scroll, { I Invert,H Rotate ^v,V Rotate <>,+ Rotate +90,- Rotate -90,\ Reflect,/ Reflect,T Reflect ^v,M Reflect <>,X Check set, H13,19)"DefChar 2.06";4,20)"Copyright 1985,1993 J.G.Harston":dVA W_CSET: A,B:30: A=32 25532:(4);: B=A A+31:B::::31,34,2,126:'''': B_EXPAND(C%):0,17);"Character ";C%;" (";C%;") ":_BIGGER: vsave128: A%,X%,Y%:?cblk%=128:X%=cblk%:Y%=X%256:A%=10: OSWORD:g128=:23,128,255,129,129,129,129,129,129,255: "get128:g128 ,* X:23,128:X=18:cblk%?X::g128=0: 6ݤd(A%):=3-A%,"0")+A% @_BIGGER: X,Y,A J save128 T% Y=0 7:1,8+Y);:A=0: X=0 7 ^8A=A*2: xo%+X*4,yo%-Y*4) 135:32:128:A=A+1 128 h$:" ";d(A):b%?Y=A::get128: rIwait:mse:ms% 4,0:mx%-12,my%:mx%+12,my%:mx%,my%-12:mx%,my%+12 |@A$=(5):ms% mx%-12,my%:mx%+12,my%:mx%,my%-12:mx%,my%+12  $_ERROR:oflg%=0 0,30);(38); er% er%=0:#0 %0,31);38;0,30);: <>17 dLA  -1 -2 "FX4":0,29)':  *FX4,2 0,29)38;: B: <128 -1 " at line ";:"FX4": A$=:0,31);(38);: X=0:Y=0:_EXPAND(char) 31,X+1,Y+8  :wait -mx%>12 mx%<308 my%>490 my%<788 msKlk &mx%>124 mx%<1152 my%>799 msChr @my%<768 ((mx%>576 my%>608)(mx%>899 my%>444))mL% klik2 A$<>"":0,7 !A$>"`" A$<"{" A$=(A$-32) & A$=204 X=(X-1) 7 0 A$=205 X=(X+1) 7 : A$=206 Y=(Y+1) 7 D A$=207 Y=(Y-1) 7 N+ A$>139 A$<144 _SCROLL((A$)-140) X A$=13 A$="P" DHC b A$="*" DfC l A$="S" tDC v A$="L" TFD 4 (A$=202 A$=9) xo%+X*4,yo%-Y*4)=0 A$="1"  (A$=202 A$=9) A$="0" k A$="1" 69,xo%+X*4,yo%-Y*4:b%?Y=b%?Y (2^(7-X)):11,Y+8);d(b%?Y);:135:31,X+1,Y+8,32,8:128:djA w A$="0" 71,xo%+X*4,yo%-Y*4:b%?Y=b%?Y (255-2^(7-X)):11,Y+8);d(b%?Y);:save128:31,X+1,Y+8,128,8:get128:djA G A$="G" A$="C" 0,29)"Get which":char=_CHAR:0,29)(10):dVA  A$="I" inv:d`A  A$="H" rotH:d`A  A$="V" rotV:d`A ! A$="+" A$=";" rotP:d`A ! A$="-" A$="=" rotM:d`A " A$="/" A$="?" refD1:d`A " A$="\" A$="|" refD2:d`A  A$="T" tip:d`A  A$="M" mirr:d`A   A$="Q" quit:d`A  A$="X" chk:d`A  d`A *ݤ_CHAR: A$:*FX4 4U0,30);"Character: ";: 11,30);""A$: A$=1 0,30);(70);:"FX4,2":= A$ >O A$<32 A$>255 "Invalid code";:TtC 0,30);(70);:"FX4,2":= A$ H60,29)"Enter onto":ch=_CHAR:0,29)(10): 23,ch R; A=0 7:Q=0: B=0 7:Q=Q*2: xo%+B*4,yo%-A*4) Q=Q+1 \*:Q::4+ch 32,ch 32-1);ch;:d`A f0,19)(80);0,19);"*"; pO"FX4":oflg%=:: ""A$: A$:":";:A$=:13+"LlSs*",A$):A$="*" 127,42 zD A$<>"*":': A$="L" A$="l" TFD A$=13 oflg%=0::t~@ Doflg%=:0,30);:"FX4":"Filename to save by: "F$:0,30);(38) #0,29);"Start at":start=_CHAR !0,29);"End at ":end=_CHAR B0,29);" ":"Arch format? "ar$:ar$<>"Y"ar$<>"y" ar$="" ["FX4,2":LOOP=0:LOOP1=0: B%-1:X%=cblk%:Y%=X%256:A%=&A:-B%-200<10*(end-start) dTC >C%=B%: LOOP=start end:ar$<>"" ?C%=23:C%?1=LOOP:C%=C%+2 KLOOP,9,13:?cblk%=LOOP: OSWORD: LOOP1=18:?C%=cblk%?LOOP1:C%=C%+1:: c"SAVE "+F$+" "+~B%+" "+~C%+" "+~(+65535*(ar$=""))+" FFFFF"+~(13+6*(ar$<>""))+"00"::t~@ ;ch=(A$):0,29);:ch=0 "Can't open file":ch=::t~@ `#ch:"SAVE "+F$+" 0+"+~(10*(end-start))+" FFFFFFFF FFFFF"+~(13+6*(ar$<>""))+"00":ch=(A$) < LOOP=start end:LOOP,9,13:ar$<>"" #ch,23:#ch,LOOP ;?cblk%=LOOP: OSWORD: LOOP1=1 8:#ch,cblk%?LOOP1:: #ch::t~@ ?oflg%=:"FX4":0,30);"Filename to load: "A$:0,30);(38) >ch=(A$):ch=0 "File not found";:ch=:0,31)(15);:tt@ ~rx%=#ch:((rx%/10)<>(rx%10)(rx%/8)<>(rx%8)) rx%>&FFF rx%<8:#ch:"Not a proper font file";:ch=:0,31)(25);:tt@ $Bra%=0:in%=0:rb%=0:rc%=0: B%-1:B%=B%+80:-B%-200<&1000 DLD .Y#ch:"LOAD "+A$+" "+~B%:?B%=23 (rx%/10)=(rx%10):ra%=B% B%+rx%-1:?ra%::tHD 8/0,29);"Start at":ra%=_CHAR:0,29);(38) B`:23,ra%: rb%=0 7:B%?rb%::ra%,9,13:B%=B%+8:rx%=rx%-8:ra%=ra%+1:ra%>255 rx%<1:tHD Lmra%=#ch:ra%=23 (#ch/10)=(#ch 10) ra%=#ch:in%= in%=:0,29);"Start at":ra%=_CHAR:0,29);(38) V?#ch=0::rb%=#ch:(in%rb%<>23) 4+#ch>#ch ra%=256:D~D `in% rch%=#ch j!23:in%rch%,#ch ra%,rb% tErc%=0::#ch:rc%=rc%+1:rc%=7 #ch:in% rch%,9,13 ra%,9,13 ~!ra%=ra%+1:ra%>255 #ch:#ch 0,31);5;:tt@ /_SCROLL(A): X,Y,xs,xe,xst,ys,ye,yst,temp  A+1 tzD,tpD,dbD,dlD _BIGGER:0,7: xs=7:xe=1:xst=-1:dDD xs=0:xe=6:xst=1 7 Y=0 7:temp=xo%+xs*4,yo%-Y*4): X=xs xe xst 6 0,xo%+(X+xst)*4,yo%-Y*4): 69,xo%+X*4,yo%-Y*4: , 0,temp: 69,xo%+(xe+xst)*4,yo%-Y*4:: ys=7:ye=1:yst=-1:dvD ys=0:ye=6:yst=1  X=0 7 -temp=xo%+X*4,yo%-ys*4): Y=ys ye yst  6 0,xo%+X*4,yo%-(Y+yst)*4): 69,xo%+X*4,yo%-Y*4: * 0,temp: 69,xo%+X*4,yo%-(ye+yst)*4:  (ar$<>"" #ch,23:#ch,LOOP 2msKlk:mL%+mM%+mR%=0 <mx%<32 A$=140: Fmx%>288 A$=141: Pmy%<512 A$=142: Zmy%>767 A$=143: dmL% A$="1" nmM% A$=9 xmR% A$="0" &X=mx%32-1:Y=23-my%32:31,X+1,Y+8 mM% mse:mM%  msChr:mL%+mR%=0  ch%=mx%32+28+32*(31-my%32) mL% A$="C" mR% A$=13 )"FX138,0,"+(48+ch%100):ch%=ch%100 '"FX138,0,"+(48+ch%10):ch%=ch%10 '"FX138,0,"+(48+ch%):"FX138,0,13"  /klik2: x%:x%=mx%32:x%>27 x%=28 x%=18 I31,x%,31-my%32:A%=135:ch%=(&FFF4 &FF00)256:A$=ch%:31,X+1,Y+8: mse:X%,Y%,A% E((-256)&F0)=&A0 mx%=(7):my%=(8):mL%=-10:mM%=-11:mR%=-12: >X%=cblk%:Y%=X%256:A%=64:!X%=-1:&FFF1:ms%=!X%<>-1:ms% "!mx%=!X%&FFFF:my%=X%!2 &FFFF ,9mL%=(X%?6 32)=0:mM%=(X%?6 64)=0:mR%=(X%?6 128)=0: 6inv: A,X,Y @A 4,0: X=0 7: Y=0 7: 69,xo%+X*4,yo%-Y*4:::_BIGGER: JrotH: A,X,Y T X=0 7: Y=0 3:A=xo%+X*4,yo%-Y*4): 0,xo%+X*4,yo%-28+Y*4): 69,xo%+X*4,yo%-Y*4: 0,A: 69,xo%+X*4,yo%-28+Y*4:::_BIGGER: ^rotV: A,X,Y h Y=0 7: X=0 3:A=xo%+X*4,yo%-Y*4): 0,xo%+28-X*4,yo%-Y*4): 69,xo%+X*4,yo%-Y*4: 0,A: 69,xo%+28-X*4,yo%-Y*4:::_BIGGER: rrefD2: A,X,Y |D0,30)"Copy Topright or Bottomleft?";:A=upDn("TB"):0,30)30; s X=0 7: Y=X 7: A 0,xo%+4*X,yo%-4*Y): 69,xo%+4*Y,yo%-4*X 0,xo%+4*Y,yo%-4*X): 69,xo%+4*X,yo%-4*Y ::_BIGGER: refD1: A,X,Y D0,30)"Copy Topleft or Bottomright?";:A=upDn("TB"):0,30)30;  Y=0 7: X=Y 7: A 0,xo%+28-4*Y,yo%-4*X): 69,xo%+28-4*X,yo%-4*Y 0,xo%+28-4*X,yo%-4*Y): 69,xo%+28-4*Y,yo%-4*X ::_BIGGER:  OݤupDn(B$): x%:x%=*32::wait:mL%+mM%+mR%=0::wait:A$>"`" A$=(A$-32) mR% B$="NY" A$="N" AmL% my%<64 mx%"":A$;:=B$,A$)=2 rotP:rotD2:rotV:  rotM:rotD1:rotH:  rotD1: A,X,Y: X=0 7: Y=X 7:A=xo%+4*X,yo%-4*Y): 0,xo%+4*Y,yo%-4*X): 69,xo%+4*X,yo%-4*Y: 0,A: 69,xo%+4*Y,yo%-4*X::: &rotD2: A,X,Y 0 Y=0 7: X=Y 7 :cA=xo%+4*X,yo%-4*Y): 0,xo%+4*Y,yo%-4*X): 69,xo%+4*X,yo%-4*Y: 0,A: 69,xo%+4*Y,yo%-4*X::: Dtip: A,X,Y N=0,30);"Copy Top or Bottom?";:A=upDn("TB"):0,30)20; Xy X=0 7: Y=0 3: A 0,xo%+4*X,yo%-4*Y): 69,xo%+X*4,yo%-28+Y*4 0,xo%+4*X,yo%-28+4*Y): 69,xo%+X*4,yo%-Y*4 b::_BIGGER: lmirr: A,X,Y v=0,30);"Copy Left or Right?";:A=upDn("LR"):0,30)20; y Y=0 7: X=0 3: A 0,xo%+4*X,yo%-4*Y): 69,xo%+28-X*4,yo%-Y*4 0,xo%+28-4*X,yo%-4*Y): 69,xo%+X*4,yo%-Y*4 ::_BIGGER: Vquit:0,30);"Quit program? ";:A=upDn("NY"):0,30)20;0,29);: A "FX4": chk: A%,x%,y%:x%=32 $0,29);"Checking character set" 4,0);:A%=135::x%<>127 y%=(&FFF4 &FF00)256:x%<>y% 0,29);"Character ";x%;" (";x%;") decoded as ";y%;" (";y%;") ":y%=(50):4+x%32,x%32-1); x%=x%+1:9:(x%31)=0 '4; x%>255:0,29)38:  >DefChar 2.06  Character defining program  By J.G.Harston (+&8 DefChar 2.05 ============ DefChar is a simple character definition program. You can manipulate the character definitions in various ways. On the display, you see the character set at the top. On the left is the editing grid with the value of each line down the side. In the middle is a menu of operations performed on the whole set, and on the right, operations performed on the editing grid. The options in the menu are selected by pressing either the upper case letter (middle menu) or the indicated letter or character (right menu). The cursor keys move the cursor around the editing grid. Holding Shift down will scroll the grid. Pressing TAB or COPY flips the current bit. Pressing 0 or 1 will reset or set the bit. You can save the character set in two ways. Straight data, or as an Archimedes BBC font file. The former just saves the eight bytes of each definition one after the other. Saving as a Arch BBC font file puts the whole VDU sequences. You can load either type of file. If you load a straight data file, you are asked for the character to start loading at. If the file would extend past character 255, the loading stops after loading character 255. The saved character set can be loaded with *CLoad and *CSave, either as transient commands or in the CharRom. Archimedes BBC font files can also be loaded by *EXECing them (or *TYPEing or *PRINTing them). You can press Return instead of P to Enter a definition into the character set. The check character set option goes through the whole character set to see if any have been duplicated. You can also press * to do *-commands. You can also use a mouse to control the program. The Archimedes mouse and the AMX mouse are recognised. The *Mouse command provides an AMX mouse driver so you can use a mouse without an AMX rom plugged in. On the editing grid, the left mouse button sets bits, the middle button flips bits, and the right button clears bits. Clicking at the edge of the grid scrolls the grid in that direction. Clicking the left button on a character in the character set at the top of the screen Gets that character onto the grid. Clicking with the right button Puts the grid definition into the character set. Clicking the left button over the menus selects that menu option. To define the whole character set, it needs to be exploded. On the Master computer and with a second processor the character set is permanently exploded. On the Electron, B and B+ the character set is by default imploded. *FX20,6 explodes the character set, or the *Explode command. *Explode is provided in the CharRom and as a transient command. The transient command re-enters the current language after exploding the character set to take into account the change in the value of PAGE. You can put the *Explode command in a *EXEC sequence or on a function key if you want to automatically do something after, eg: 10 *KEY 0 CH."Prog2" 20 *FX138,0,128 30 *EXPLODE ON The *FX138,0,128 enters function key 0 into the keyboard buffer. The syntax of the *EXPLODE transient command is: *EXPLODE just explodes the character set with *FX20,6, and re-enters the current language. *EXPLODE ON explodes the character set and re-enters the language, but, on a BBC with no second processor, also puts some code on the Break intercept vector, so that the character set is re-exploded when Break is pressed. *EXPLODE OFF implodes the character set with *FX20,0, and disables any Break intercept code. DefChar 2.05 ============ DefChar is a simple character def  >DefIcon 2.04  By J.G.Harston $&84:oflg%=0: VDU23;10,96;0;0;0 (*K.10O.|MRUN|M 2Ker%=: _ERROR:er%=: <>17 oflg%=0 tj@ oflg% :tj@ TpB <,OSWORD=&FFF1: cblk% 20:arc:*POINTER 1 F Get,Put,Load,Save,Quit," "," ",Cursors,to move,& scroll, { I Invert,H Rotate ^v,V Rotate <>,+ Rotate +90,- Rotate -90,\ Reflect,/ Reflect,T Reflect ^v,M Reflect <>,F Icon Type, TfB _CSET: A,B,I:30 0 A=ic% ic%+63:(A 15)=0 (5-A);A;" "; icon(A):(A 15)=15 ' : ":Pic(I%):(I%15)*2+6,((I%-ic%)&70)8);:icon(I%): ,#icon(I%):(F%3)=2 ic2(I%): 6P A%,B%,C%:C%=icons%+I%*32: A%=0 3:23,128+A%: B%=0 7:?C%:C%=C%+1:: @C(F%1) 128,130,8,8,10,129,131,11 128,129,8,8,10,130,131,11 J Tsic2(I%): A%,B%,C%,D%:C%=icons%+32*I%: A%=0 3:D%=C%+8*(A%2)+(A%1):23,128+A%: B%=0 7:?D%:D%=D%+2:: ^ 128,129,8,8,10,130,131,11: hB_EXPAND(C%):20,21);:icon(C%):" Icon ";C%;" ":_BIGGER: rvsave128: A%,X%,Y%:?cblk%=128:X%=cblk%:Y%=X%256:A%=10: OSWORD:g128=:23,128,255,129,129,129,129,129,129,255: |get128:g128 * X:23,128:X=18:cblk%?X::g128=0: ݤd(A%):=3-A%,"0")+A% _BIGGER: A,X,Y # Y=0 15:1,9+Y);: X=0 15 2 xo%+X*4,yo%-Y*4) 135:32:128:A=A+1 132  :: Iwait:mse:ms% 4,0:mx%-12,my%:mx%+12,my%:mx%,my%-12:mx%,my%+12 @A$=(5):ms% mx%-12,my%:mx%+12,my%:mx%,my%-12:mx%,my%+12  $_ERROR:oflg%=0 0,30);(38); er% er%=:#0 0,31);38;: <>17 T\B  -1 -2 "FX4":0,29)':  *FX4,2 0,29)28;: Q0,29)(38)';:: <128 -1 " at line ";:"FX4": A$=:0,31);(38);: &X=0:Y=0:_EXPAND(thisI%) 031,X+1,Y+9: 0,7 : :wait D,mx%>8 mx%<564 my%>200 my%<756 msKlk N&mx%>196 mx%<1216 my%>764 msChr X@my%<736 ((mx%>576 my%>576)(mx%>899 my%>412))mL% klik2 b,my%<192 my%>64 mx%>420 mL% A$="D" lA$<>"":0,7 v!A$>"`" A$<"{" A$=(A$-32)  A$=204 X=(X-1) 15  A$=205 X=(X+1) 15  A$=206 Y=(Y+1) 15  A$=207 Y=(Y-1) 15 + A$>139 A$<144 _SCROLL((A$)-140)  A$=13 A$="P" tNC  A$="*" dJC  A$="S" dhC  A$="L" TPD 4 (A$=202 A$=9) xo%+X*4,yo%-Y*4)=0 A$="1"  (A$=202 A$=9) A$="0" B A$="1" 69,xo%+X*4,yo%-Y*4:135:31,X+1,Y+9,32,8:128:TzB J A$="0" 71,xo%+X*4,yo%-Y*4:save128:31,X+1,Y+9,128,8:get128:TzB J A$="G" A$="C" 0,29)"Get which icon: "thisI%:0,29);(20);:TfB  3 A$="F" F%=(F%+1)3:25,24);F%3:_CSET:TpB  A$="I" inv:TpB   A$="H" rotH:TpB * A$="V" rotV:TpB 4! A$="+" A$=";" rotP:TpB >! A$="-" A$="=" rotM:TpB H" A$="/" A$="?" refD1:TpB R" A$="\" A$="|" refD2:TpB \ A$="T" tip:TpB f A$="M" mirr:TpB p A$="Q" quit:TpB zq A$="D" 0,29)"Display start icon "ic%:ic%=(ic%&FFF0):_CSET:34,27);~icons%+32*ic%" ";0,29)(38);:TpB  TpB S0,29)"Enter onto icon "ch%:0,29);"Please wait..."10:D%=icons%+32*ch%:I%=D% . C%=0 3:(F%3)=2 I%=D%+8*(C%2)+(C%1) W A%=0 7:Q%=0: B%=0 7:Q%=Q%*2:xo%+B%*4+32*(C%1),yo%-A%*4-16*(C%2)) Q%=Q%+1 [:(F%3)=2 ?I%=Q%:I%=I%+2 (F%1) ?(I%+((C%2)+2*(C%1))*8+A%)=Q% ?(I%+C%*8+A%)=Q% /::0,29)(20):(ch%&FFC0)=ic% Pic(ch%)  TpB 0,28);"*"; O"FX4":oflg%=:: ""A$: A$:":";:A$=:13+"LlSs*",A$):A$="*" 127,42 D A$<>"*":': A$="L" A$="l" TPD A$=13 oflg%=0::tj@ <0,30);:"FX4":"Filename to save by: "A$:0,30);(38) !0,29);"Start at icon "start 70,29);16;:0,29);"End at icon "end:0,29)(16) f"FX4,2":"SAVE "+A$+" "+~(icons%+start*32)+" "+~(icons%+end*32+32)+" FFFFFF00 FFFFFD00"::tj@ 7"FX4":0,30);"Filename to load: "A$:0,30);(38)  0,29)"Start at icon "start $/"LOAD "+A$+" "+~(icons%+start*32)::tj@ ./_SCROLL(A): X,Y,xs,xe,xst,ys,ye,yst,temp 8 A+1 DVD,DLD,D~D,tHD B_BIGGER:0,7: Lxs=15:xe=1:xst=-1:D`D Vxs=0:xe=14:xst=1 `8 Y=0 15:temp=xo%+xs*4,yo%-Y*4): X=xs xe xst j6 0,xo%+(X+xst)*4,yo%-Y*4): 69,xo%+X*4,yo%-Y*4: t, 0,temp: 69,xo%+(xe+xst)*4,yo%-Y*4:: ~ys=15:ye=1:yst=-1:tRD ys=0:ye=14:yst=1  X=0 15 -temp=xo%+X*4,yo%-ys*4): Y=ys ye yst 6 0,xo%+X*4,yo%-(Y+yst)*4): 69,xo%+X*4,yo%-Y*4: * 0,temp: 69,xo%+X*4,yo%-(ye+yst)*4:  msKlk:mL%+mM%+mR%=0 mx%<32 A$=140: mx%>539 A$=141: my%<224 A$=142: my%>732 A$=143: mL% A$="1" mM% A$=9  mR% A$="0" &X=mx%32-1:Y=22-my%32:31,X+1,Y+9 mM% mse:mM% ( 2msChr:mL%+mR%=0 <'ch%=(mx%-196)64+16*(15-my%64)+ic% FmL% A$="C" PmR% A$=13 Z)"FX138,0,"+(48+ch%100):ch%=ch%100 d'"FX138,0,"+(48+ch%10):ch%=ch%10 n'"FX138,0,"+(48+ch%):"FX138,0,13" x /klik2: x%:x%=mx%32:x%>27 x%=28 x%=18 I31,x%,31-my%32:A%=135:ch%=(&FFF4 &FF00)256:A$=ch%:31,X+1,Y+8: mse:X%,Y%,A% 8arc mx%=(7):my%=(8):mL%=-10:mM%=-11:mR%=-12: >X%=cblk%:Y%=X%256:A%=64:!X%=-1:&FFF1:ms%=!X%<>-1:ms% !mx%=!X%&FFFF:my%=X%!2 &FFFF 9mL%=(X%?6 32)=0:mM%=(X%?6 64)=0:mR%=(X%?6 128)=0: inv: A,X,Y C 4,0: X=0 15: Y=0 15: 69,xo%+X*4,yo%-Y*4:::_BIGGER: rotH: A,X,Y  X=0 15: Y=0 7:A=xo%+X*4,yo%-Y*4): 0,xo%+X*4,yo%-60+Y*4): 69,xo%+X*4,yo%-Y*4: 0,A: 69,xo%+X*4,yo%-60+Y*4:::_BIGGER: rotV: A,X,Y  Y=0 15: X=0 7:A=xo%+X*4,yo%-Y*4): 0,xo%+60-X*4,yo%-Y*4): 69,xo%+X*4,yo%-Y*4: 0,A: 69,xo%+60-X*4,yo%-Y*4:::_BIGGER: refD2: A,X,Y D0,30)"Copy Topright or Bottomleft?";:A=upDn("TB"):0,30)30; u X=0 15: Y=X 15: A 0,xo%+4*X,yo%-4*Y): 69,xo%+4*Y,yo%-4*X 0,xo%+4*Y,yo%-4*X): 69,xo%+4*X,yo%-4*Y "::_BIGGER: ,refD1: A,X,Y 6D0,30)"Copy Topleft or Bottomright?";:A=upDn("TB"):0,30)30; @ Y=0 15: X=Y 15: A 0,xo%+60-4*Y,yo%-4*X): 69,xo%+60-4*X,yo%-4*Y 0,xo%+60-4*X,yo%-4*Y): 69,xo%+60-4*Y,yo%-4*X J::_BIGGER: T ^OݤupDn(B$): x%:x%=*32::wait:mL%+mM%+mR%=0::wait:A$>"`" A$=(A$-32) hmR% B$="NY" A$="N" rAmL% my%<64 mx%"":A$;:=B$,A$)=2 rotP:rotD2:rotV:  rotM:rotD1:rotH:  rotD1: A,X,Y: X=0 15: Y=X 15:A=xo%+4*X,yo%-4*Y): 0,xo%+4*Y,yo%-4*X): 69,xo%+4*X,yo%-4*Y: 0,A: 69,xo%+4*Y,yo%-4*X::: rotD2: A,X,Y  Y=0 15: X=Y 15 cA=xo%+4*X,yo%-4*Y): 0,xo%+4*Y,yo%-4*X): 69,xo%+4*X,yo%-4*Y: 0,A: 69,xo%+4*Y,yo%-4*X::: tip: A,X,Y =0,30);"Copy Top or Bottom?";:A=upDn("TB"):0,30)20; z X=0 15: Y=0 7: A 0,xo%+4*X,yo%-4*Y): 69,xo%+X*4,yo%-60+Y*4 0,xo%+4*X,yo%-60+4*Y): 69,xo%+X*4,yo%-Y*4 ::_BIGGER: mirr: A,X,Y =0,30);"Copy Left or Right?";:A=upDn("LR"):0,30)20; z Y=0 15: X=0 7: A 0,xo%+4*X,yo%-4*Y): 69,xo%+60-X*4,yo%-Y*4 0,xo%+60-4*X,yo%-4*Y): 69,xo%+X*4,yo%-Y*4 ::_BIGGER: &Vquit:0,30);"Quit program? ";:A=upDn("NY"):0,30)20;0,29);: A "FX4": 0ݤarc=(-256 &F0)=&A0  >DefIcon 2.04  By J.G.Harston $&84:oflg%=0: VDU23;10,96;0;0;0 (*K.10O.|MR DefIcon 2.04 ============ DefIcon is a simple icon definition program directly based on DefChar. You can manipulate three types of icon definitions in exactly the same way that DefChar allows you to manipulate characters. On the display, you see some of the icons displayed at the top. On the left is the editing grid, in the middle is a menu of operations performed on all the icons, and on the right operations performed on the editing grid. The options in the menu are selected by pressing either the upper case letter (middle menu) or the indicated letter or character (right menu). The cursor keys move the cursor around the editing grid. Holding Shift down will scroll the grid. Pressing TAB or COPY flips the current bit. Pressing 0 or 1 will reset or set the bit. DefIcon recognises three types of icons, as set using the 'F - icon type' option. These are: Type 0 the 32 bytes of data define four characters that make up the icon: the top-left one, then the top-right, then the bottom-left, then the bottom-right. Type 1 The 32 bytes of data define four characters that make up the icon: the top-left, then the bottom-left, then the top-right, then the bottom-right. Type 2 The 32 bytes of data define the icon as sixteen pixel-lines, the top line, left side, then right side, down to the bottom line. When you change the icon type, the editing grid is not changed, so you could Get an icon of one type, then Put it back as a different type. You can have space in memory for more icons than can be show on the screen, so only 64 are displayed as once. Pressing 'D' lets you select which icons are displayed on the screen. You can press Return instead of P to Enter an icon definition into memory. You can also press * to do *-commands. You can also use a mouse to control the program. The Archimedes mouse and the AMX mouse are recognised. The *Mouse command provides an AMX mouse driver so you can use a mouse without an AMX rom plugged in. On the editing grid, the left mouse button sets bits, the middle button flips bits, and the right button clears bits. Clicking at the edge of the grid scrolls the grid in that direction. Clicking the left button on an icon at the top of the screen Gets that icon onto the grid. Clicking with the right button Puts the grid definition into memory. Clicking the left button over the menus selects that menu option. DefIcon 2.04 ============ DefIcon is a simple icon definition program directly based on DefChar. You can manipulate three typJ J/J `     `  `(L,  HH $ hh (` p\ 檮 L L  1 !&L   L )`M ` ) @ ` H)ߢ@B> I8S2W,Q(X$Y h     L h) 娅%I- E ` ) P f L( ) ) N N N N N N N , P  ,  )2  > (>  J~ (~      L Lv1.06J J/J `     `  `(L,  HH $ hh (` p\ 檮 L L  1 !&L   L )`M ` ) @ ` H)  >EcoMenu 2.05  7:*EXEC  *FX15 (" name$(20),dir$(20),disk$(20) 2- buff% 30,data% 600,dname$(10),dsk2$(10) < Find if dir or disk F&exit$="":dir%=_INFO("!DirInfo")=1 Pidir%:P$="PROGRAMS":p$="program":i$="!DirInfo" P$="DIRECTORIES":p$="directory":i$="!DiskInfo":*DIR$ Z err d-!buff%=8:osw(&13,buff%):station%=buff%?1 nQii%=5:132157:fs=5 132157131"This is ECONET Station ";station%:ii%=6 xEd%=12:132157131141"The"P$"available are :-"::read_info -132157'1321575)12915733)132157 sort L d%=0 total%-1:1321571355)129157131name$(d%)33)132157: d% $1321575)12915733)132157 132157:posn%=total%+10 total%+disks%<10 dir%:132157135;" The disks on line are:": d%=0 disks%:132157135;" ";d%;": ";dsk2$(d%)::132157135:posn%=posn%+disks%+3 a130157132"Select the "p$" you want with":130157132"the cursor keys, then press SPACE" item%=0: err2 "FX4": *FX4,1 -:31,0,item%+ii%,130,157,132,9,9,132,157 26,9);:130,157,13,9,9,9 Z$= Z$=138 Z$=139 31,0,item%+ii%,132,157,135,9,9,129,157:26,9);:132,157:item%=item%+(Z$=139)-(Z$=138):item%=item%(item%>0)(item%31,0,item%+ii%,132,157,135,9,9,129,157:26,9);:132,157 "T4,ii%+item%)136130157132;33,ii%+item%)131157136129"<<<"7,ii%+item%); ,&dir%: "DIR :"+disk$(item%)+".$" 6H$="Hello":dd$=dir$(item%) @bdd$,"/")=0 h%=dd$,"."): h%<>0 :H$=dd$,h%+1):h%=dd$,".",h%+1):h%=0:dd$=dd$,dd$-H$-1) J8dd$,"/") h%=dd$,"/"):H$=dd$,h%+1):dd$=dd$,h%-1) T>dir%:dir$(item%),".")+dir$(item%),"/")=0:H$=dd$:dd$="" ^dd$<>"": "DIR "+dd$ h( 31,0,posn%:"No "H$" program": rH$="": H$ |:  logon '0,23);:0,posn%);"User name: "U$ #"Password: ";:"I AM "+U$+" :" : :  sort  i%,j%,temp$,dist%,i1% total%<2 &l%=total%-1:f%=0:dist%=(l%-f%+1)2 : j%=f%+dist% l%  i%=j%-dist% f% -dist% i1%=i%+dist%  name$(i%)>name$(i1%) tmp$=name$(i%):name$(i%)=name$(i1%):name$(i1%)=tmp$:tmp$=disk$(i%):disk$(i%)=disk$(i1%):disk$(i1%)=tmp$:tmp$=dir$(i%):dir$(i%)=dir$(i1%):dir$(i1%)=tmp$  i%,j%:dist%=dist% 2  dist%=0: : &Lݤ_INFO(A$):$data%=A$:!buff%=data%:X%=buff%:Y%=X%256:A%=5:=(&FFDD)&FF 0: :'osw(A%,X%):Y%:Y%=X%256:&FFF1: Dݤfs:A%,E%,Y%:=&FFDA &FF N: X$readNFS: Read disks on Econet bA%=&14:X%=buff%:Y%=X% 256 l:!buff%=&E000900:buff%!4=0 v$buff%?7=disks%:buff%?8=1: &FFF1  buff%?4<>0 buff%?22=13:DISK$=$(buff%+6):dname$(disks%)=DISK$,DISK$," ")-1):dsk2$(disks%)=dname$(disks$):d%=disks%:diskinfo:disks%=disks%+1 buff%?4=0: : "readHADFS: Read HADFS disks  n%=0 7 o _INFO(":"+n%)=2 dname$(disks%)=n%:"DIR :"+n%:dsk2$(disks%)=name:d%=disks%:diskinfo:disks%=disks%+1 : : readDFS: :  ݤname 0buff%!1=data%:X%=buff%:Y%=X%256:A%=5:&FFD1 $?(data%+1+?data%)=13:=$(data%+1) :  3read_info:disks%=0:total%=0:dir%:diskinfo: 3 fs=5 readNFS fs>5 readHADFS readDFS  disks%=(disks%-1)(disks%>0) * 4: >"diskinfo:total%>10-disks% H-inf$=i$:dir%:inf$=":"+dname$(d%)+"."+i$ Ri _INFO(inf$)<>1 name$(total%)=dsk2$(d%):dir$(total%)="$":disk$(total%)=dname$(d%):total%=total%+1: \"LOAD "+inf$+" "+~data% f??data%="$":exit$=$data%:ptr%=data%+1+$data% ptr%=data% p':?ptr%<32 :ptr%=ptr%+1:?ptr%>31 z%disk$(total%)=dname$(d%):D$=$ptr% $dir$(total%)=D$,D$+",",",")-1) *name$(total%)=D$,D$+",",",")+1),25) #total%=total%+1:ptr%=ptr%+D$+1 *?ptr%=13 ?ptr%=0 total%>10-disks%  ݤerr:30::=-1 (0*(50)) Xݤerr2:0,23);: =17 0,posn%);(78);0,24);:符-1 exit$<>""::exit: =17:=-1 %: <128 " at line ";;" ";:= Nz%=(150):0,24);(30);4,ii%+item%)32129157131;37,ii%+item%);" "; =-1 Sexit:h%=exit$,"/"):dd$=exit$,2,h%-2):H$=exit$,h%+1):H$=H$,H$+",",",")-1) %"FX4":"DIR "+dd$:H$="": H$  >EcoMenu 2.05  7:*EXEC  *FX15 (" name$(20),dir$(20),disk$(20) 2- buff% 30,data% 600,dname$(10),dsk2$(10) < Find if dir or disk F&exit$="":dir%=_INFO("!DirInfo")=1 Pidir%:P$="PROGRAMS":p$="program":i$="!DirInfo" P$="DIRECTORIES":p$= EcoMenu 2.05 ============ Provides a simple menuing system for selecting directories on disks and programs withing directories. On each disk, put a text file '$.!DiskInfo' containing what is on the disk, and in directories, put a text file '!DirInfo' containing what is in that directory. The format of each line of the '$.!DiskInfo' file is: directory,description or pathname.filename,description or pathname/filename,description terminated with a blank line. Eg: Programs,Program Area Games.Menu1,Games Area 1 Printer/$.Menu,Printer Programs The directory is the directory selected. If it has a filename on it, then it uses that as the menu program for that directory, otherwise, it uses a program called 'Hello'. If there is a '/name' part, that filename is used instead of 'Hello'. As an example, several directories could all use the same program to run, eg: Progs1/$.EcoMenu,Program Area 1 Progs2/$.EcoMenu,Program Area 2 Progs3/$.EcoMenu,Program Area 3 The format of each line of the '!DirInfo' file is the same, but the entry is always a program to CHAIN. If there is no filename to run, eg: Progs1/,Program Area 1 then EcoMenu is re-run as the menu program. If the first line starts with a '$', then it points to the directory and program to run on pressing Escape, eg: $^/$.Ecomenu,Description is ignored This will go up to the parent directory, and CHAIN '$.EcoMenu'. Also $^/, will go up, and then re-run EcoMenu. On running EcoMenu, an item is selected by moving up and down with the cursor keys, then pressing RETURN. Alternatively, pressing '*' will prompt you for a username and password to log on with *I AM. When using HADFS, if you only have one drive, then *OPT6,1 will tell HADFS this. You can also make keyboard link 2 to do this. EcoMenu will work with Net, HADFS and ADFS EcoMenu 2.05 ============ Provides a simple menuing system for selecting directories on disks and programs withing directories. On each disk, put a text file '$.!DiskInfo' containing  > EDtoVIEW 0.20 ) Converts EDWORD files to VIEW files  By Jonathan Harston (: 26&83:chars: ctrl% 30,name% 80:X%=ctrl%:Y%=X%256 <2max%=-P-1000: store% max%:in%=0:out%=0:e%=0 Fbold%=:under%=:err: Pd:e%=0:".":"Press SHIFT-Escape to exit. Buffer size: &";~max%;" (";(max%*100 1024)/100;"K)" Z::save%=:ed%=1:ud%= d'"File: "F$: F$,1)="*":F$:F$="" n;F$<>"":file(F$,5)<>1:"File '"F$"' not found.":F$="" xKX%!6=&FFFC:F$" marked as being used. ";:笤yn("Read anyway",):F$="" 9F$<>"" X%!6=&FFFE:F$" is an EDWORD 1 file.":ed%=1 9F$<>"" X%!6=&FFFB:F$" is an EDWORD 2 file.":ed%=2 eF$<>"" X%!6<>&FFFB X%!6<>&FFFE:F$" is not an EDWORD file. ";: yn("Read anyway",):F$="" 2F$<>"":in%=(F$):in%=0:"Can't open '"F$"'." /in%: #in%<10:"File too short.":CloseIn ein%:#in%+10017::=-1 : $CloseIn:in%:A%=in%:in%=0:#A%  (CloseOut:out%:A%=out%:out%=0:#A%  :  DoFile "0eof%=:l%=:cr%=:addr%=store%:#in%=#in%-2 ,right%=#in%:left%=#in%: right%<=left% "Right margin further left than left margin. ";: yn("Abort",) right%<=left% left%=0:right%=76 6#in%=#in%-7 @lyn("Output to file",):save%=:"Output file: "F2$:buf%:out%=(F2$):out%=0:"Can't open '"F2$"'.": Jkbold%=yn("Convert "+245+"BOLD"+246+" and "+243+"WIDE"+244+" markers to extended highlights",bold%) T9under%=yn("Convert underline to highlight 1",under%) ^8::c(b):+2>right%-left%:240:b(13):l%=:cr%= h^eof%::CloseOut:buf% save%:"SAVE "+F2$+" "+~store%+" "+~addr%+" FFFFFFFF FFFFFF00" r |:  c(B) ( B=144 cr% ud% 95:b(29):ud%= % B=144 cr% 241:b(13):l%=: cr%=: B=144  B=146 str(Ĥb+1," ")): $ B=0 B>126 str("["+B+"]"): / +B+1>right%-left% 240;240:b(13):l%=  l% 242:b(32)  L=1 B 'B=b: B<160 ud% 95:b(29):ud%= & B<32 B>126 char(B) B:b(B)  :l%=  :  char(B) - B>159 ud%=0 under% 95:b(28):ud%= &" B>159 B &7F:b(B &7F): 0 B>25 B<30 217+B : B>16 B<21 226+B D- (B=17 B=26) bold% b(29):b("W"): N- (B=18 B=27) bold% b(29):b("w"): X- (B=19 B=28) bold% b(29):b("B"): b- (B=20 B=29) bold% b(29):b("b"): l% B=17 B=26 b("W"):b("W"): v% B=18 B=27 b("w"):b("w"):  B=19 B=28 b(29):  B=20 B=29 b(29): str("["+B+"]"): : ݤb:#in%<5:eof%=:=144 #in%=#in%-2:=#in% : ݤyn(A$,f%): K% gA$;"? (";(78-11*f%);") ";::K%= &DF:K%=78 K%=89 K%=f% K%=13:4,8);: K%=13 K%=78-11*f%  K%=78 "No ":=  K%=89 "Yes":= K%;" ":=f% :  chars  $ 23,240,0,16,16,16,16,124,56,16 " 23,241,0,2,2,34,98,254,96,32  ! 23,242,0,0,0,0,126,66,36,24 *" 23,243,0,0,32,96,255,96,32,0 4 23,244,0,0,4,6,127,6,4,0 >$ 23,245,2,14,62,126,126,62,14,2 H* 23,246,64,112,124,126,126,124,112,64 R \: fBݤfile(F$,A%):$name%=F$:?X%=name%:X%?1=name%256:=(&FFDD)&FF p: z)b(B):buf%:?addr%=B:addr%=addr%+1: out%:#out%,B  : str(A$): B - B=1 A$:A$,B,1);:b(A$,B,1))::  > EDtoVIEW 0.20 EDtoVIEW 0.20 ============= This program allows you to convert EDWORD files into VIEW or plain Ascii text files. If you examine the structure of an EDWORD file you will see that everything is stored backwards. This program moves backwards through the file and writes it forwards so that it can be loaded into an ordinary word processor. When you run the program you are given a catalogue of the current directory. Where you are asked for the filename, you can also do *-commands by making the first character a '*'. After giving the filename you are told what type of EDWORD file it is, and whether the converted file will fit into memory, or whether the program needs to spool to the output file, whereupon the conversion will be slower. You are then asked if you want to output to a file, and the filename. If you answer 'N', then the EDWORD file will just be displayed on the screen. You are then asked if you want to convert the wide and bold markers in the EDWORD text. If you answer 'Y' to these, then they will be converted to the extended highlights used by the 'Printer' and 'MakeLP' programs; *W *w for wide and *B *b for bold. If you answer 'N', then all bold and wide markers are ignored. You are then asked if you want to convert underlined text. This is converted to highlight 0 before and after the text. As the conversion progresses, the file is displayed on the screen. The following characters are displayed as well as the text: left and right wide arrows around the wide text in EDWORD left and right bold markers around the bold text in EDWORD bent arrow for carriage returns at the end of paragraphs single down arrow marks carriage returns added to end of lines double down arrows mark where text has overflowed over the line Unrecognised bytes from the EDWORD file are converted to [xxx] where xxx is the the byte in decimal. When converting into memory, the completed file is saved at the end. When spooling, the file is output as it goes along. The resultant file can be loaded into VIEW or, if 'N' is given for the markers and a pure text file is created, it can be loaded into any ordinary word processor as Ascii text. Program History V0.01 01-Oct-1985 Original version. V0.10 03-Apr-1991 Loads to memory. V0.20 08-Oct-1997 Channel closing and error handler tidied up. EDtoVIEW 0.20 ============= This program allows you to convert EDWORD files into VIEW or plain Ascii text files. If you examine the structure of an EDWORD file you will see that everything is stored b >ETree 1.14 12-Aug-1998 F::B: PU%40,V%30,B%100:C%=0:A$=B:E$="":X%=V%:Y%=X%256:D$="":Z$="":P$="":F$="":I$="":C$="":W%=:F%=:L%=:R%=:M%=:Z%=&FF:L$=A$:d%=F:A$="":"Path to show: "A$ x@A$,1)<>"-"A$," "):A$=A$,A$," ")+1)+" "+A$,A$," ")-1) 8I%=A$,"-q"):I%:E$=A$,A$," ",I%)+1):A$=A$,I%-1) TA$,2)="-?":"Syntax: ETree [-apps] [-files] [-info] [-count] [-print] path":B :A$,1)="-"A$,2,1)<"a":A$="-"+(A$,2,1)+32)+A$,3) .A$,2)="-a":Z$="Y":A$=A$,1+A$+" "," ")) .A$,2)="-f":F$="Y":A$=A$,1+A$+" "," ")) .A$,2)="-i":I$="Y":A$=A$,1+A$+" "," ")) .A$,2)="-c":C$="Y":A$=A$,1+A$+" "," ")) .A$,2)="-p":P$="Y":A$=A$,1+A$+" "," ")) 1A$,1)<>"-":B$=Z$+F$+I$+C$+P$:L$<>"":B$="*" 5G$="":I%=A$,":"):I%>1:G$=A$,I%-1):A$=A$,I%+1) 1D$=A$:G$:e%=(A("^",5)&FE)=2:F<>16:Z%=&3B Fe%D$,"$")=0:"Needs a reference to root ($)":D$="":A$="":L$="" JD$<>"":(A(D$,5)&FE)<>2:D$;" is not a directory":D$="":A$="":L$="" D$<>"":L$=""A$="":B [B$="":"Show files? "F$:F$=F$,1):"Show info? "I$:I$=I$,1):"Printout? "P$:P$=P$,1) "eW%=Z$="Y"Z$="y":F%=F$="Y"F$="y":R%=I$="Y"I$="y":L%=P$="Y"P$="y":M%=C$="Y"C$="y":G(L%):L%2 6!A("$",5)=2:X%!2<>0:*INFO $ @"DIR "+D$:A(5,0):?(B%+1+?B%)=13:"Disk: ";$(B%+1):A(6,0):?(B%+?B%+?(B%+1+?B%)+2)=13:"Dir: "$(B%+2+?B%):?U%=32:C%=C(0,0,0):'"Total disk space used: ";C%" bytes";:M%:" - "k(C%); h:L%F%: r L%:3 |B: 3B:"FX143,18,"+d%:E$<>"":A$=E$:E$="":H(A$) : .A(A%,G%):X%!1=B%:X%!5=1:X%!9=G%:&FFD1: bݤC(O%,P%,S%):T%,C%,G%,K%:G%=P%:C%=0:`%=0:K%=:A(8,G%):G%=X%!9:T%=X%?5:T%=0P%<>0F%::= T%=0:D(P%) T%<>0`%:P%<>0:=`% =C% 0^D(P%):f$,J%:`%=:?B%<32:?(B%+?B%+1)=13:f$=D($(B%+1))B%?20=13:f$=D($B%,$B%,0)-1)) DHJ%=A(f$,5):d%=5:$(B%+8)=f$:E(&14,&12002000,&40000000):X%!15=B%!10 N@b%=X%!2:c%=X%!6:H%=X%!10:_%=X%!14:C%=C%+((H%+255)&FFFFFF00) bP%<>0(J%=2F%):`%=: lS%(F%J%=2):I(f$):K%= v>J%=2(f$,1)<>"!"W%=0):C(f$):C%=C%+C(O%+1,0,S%):F(f$)  7I(f$):Q%:a%=C(O%,G%,0):a%:U%?O%=c%(3)U%?O%=32 0O%>1z%=0O%-2:U%?z%,32::U%?z%O%=1?U% K%O%>0c%(4)O%>032 Ƌc%((a%1)((K%(O%=0))4)):f$;:R%(34-+10*M%);h(b%,8);" ";h(c%,8);" ";h(H%,6);" ";G((_%Z%)(256(J%=2)));" ";E(_%&FFFF00); ]M%:((30-)R%-R%);:J%=2:Q%=F%:F%=:C(f$):k(C(O%,0,));:F%=Q%:F(f$)M%:k(H%); : %C(f$):D$=D$+"."+f$:"DIR "+f$: ,F(f$):D$=D$,D$-f$-1):e%:"DIR ^":  "DIR "+D$: 4 ݤG(A%):a$:(A%128):a$="P" H(A%8):a$=a$+"L" R,(A%&100):a$="D"+a$+"/":=a$+7-a$," ") \(A%6)=2:a$=a$+"W" f(A%4):a$=a$+"E" p(A%5)=1:a$=a$+"R" z#a$=a$+"/":(A%96)=32:a$=a$+"W" (A%64):a$=a$+"E" (A%80)=16:a$=a$+"R" =a$+7-a$," ") )ݤE(A%):A%=A%256:A%=0:="00/00/0000" S=n(A%31,2)+"/"+n((A%&F00)256,2)+"/"+n(1981+(A%&F000)&1000+(A%&E0)2,4) 6ݤA(A$,A%):$B%=A$:?X%=B%:X%?1=B%256:=(&FFDD)&FF .ݤD(f$):f$,1)=" "f$=f$,2):f$,1)<>" " f$=f$,f$+" "," ")-1):=f$ "ݤh(A%,N%)="0000000"+~A%,N%) !ݤn(A%,N%)="0000000"+A%,N%) Hݤk(A%):A%>4100:=" "+(A%1024),5)+"k"=" "+A%,5)+" bytes" iG(f%):c%(5):z%=05:c%(z%)=z%+166::f%c%(0)=&C4:c%(1)=&C2:c%(2)=&FE:c%(3)=&B3:c%(4)=&C0:c%(5)=&C3 823,c%(0),0,0,0,255,0,0,0,0:23,c%(1),0,0,0,255,24,24,24,24:23,c%(3),24,24,24,24,24,24,24,24:23,c%(4),24,24,24,24+7,0,0,0,0:23,c%(5),24,24,24,24+7,24,24,24,24: ~@E(A%,D%,E%):X%,Y%:X%=B%:Y%=X%256:!X%=D%:X%!4=E%:&FFF1: ݤF:A%,Y%,E%:=(&FFDA)&FF hݤB:A$,A%,X%,Y%:A%=0:X%=1:g%=((&FFF4)&FF00)256:g%=6>&8000:ș"OS_GetEnv"A$:A$=A$,1+A$," ")) g%=32:A$=$&100 -A$=0:?(P-3):A$=$&600A$=0:A$=$&3800 3A%=A$+" "," "):H$=A$,A%-1):H$<>"":=A$,A%+1) ZX%=V%:Y%=X%256:A%=9:?X%=0:X%!1=B%:!B%=0:&FFD1:!B%?B%+B%?2<>8:B%?(1+B%)=13:=$(B%+1) ="" #H(A$):A$=""A$=42:A$:A$ B(C) {H {h H {h *ݢ {  pqrksrpqsˠ{L `KEY0 Q%=PAGE|MOLD|MV.6:RUN|M BASIC  >ETree 1.14 12-Aug-1998 F::B: PU%40,V%30,B%100:C%=0:A$=B:E$="":X%=V%:Y%=X%256:D$="":Z$="":P$="":F$="":I$="":C$="":W%=:F%=:L%=:R%=:M%=:Z%=&FF:L$=A$:d%=F:A$="":"Path to show: "A$ x@A$,1)<>"-"A$," "):A$=  >FormList 1.02  'DATABASE' PROG  (C)1986 J.G.Harston ( PROC_SEARCH added 16/7/87 2 Non-full screen OK 7/2/89 <" HIMEM set correctly 14/11/89 F" Try heap sort next? (no Y/N) P Option 9 added, 1/11/90 Z Full 80col ability 9/11/95 d*KEY 10 O.|MRUN|M n*FX225,176 x*FX226,128 *FX227,144 *FX228,160 L&87:ctrl%20,name%80,field$(20),fsize(20):recflag=0:笤arc:=fx(132,0) .HILIMIT=-80:=(P+2000-2000*arc):start= STIT$=S:FILE$="(UnTitled)":FD$="":mult=1:c1$="(C)1986 J.G.H":c2$=0+"(C)JGH"+0 Hend=start:datastart=start:pnt=start:$start=c1$ $start=c2$:_SETUP  err:end: 2p%=0::?HILIMIT=FILE$:$(HILIMIT+1)=FILE$:*FX4 bwd%=39:22,&87,23;3,56;0;0;0,23,1,1;0;0;0;:_TITLE(TIT$):fsflag=0:rectot%=(end-datastart)mult t'" "157"RECORDS: ";rectot%;18)"FILE: "FILE$;8'" "157"LENGTH: ";end-start;18);"BYTES FREE: ";HILIMIT-end' 11 _LINE:" 1:SAVE FILE" &_LINE:" 2:LOAD FILE/CATALOG" !_LINE:" 3:SORT RECORDS" 2_LINE:" 4:PRINT OUT RECORDS SELECTIVELY" $_LINE:" 5:ENTER EDIT MODE" "2_LINE:" 6:SET FILE DIRECTORY("FD$")";8 ,&_LINE:" 7:CREATE A NEW FILE" 6'_LINE:" 8:SEARCH AND REPLACE" @%_LINE:" 9:CHAIN SUBPROGRAM" J$_LINE:" Press a key..."; T AA$=: AA$="*" _OSC: dR@ ^"QqXx",AA$):AA$="0" h AA$<"0" AA$>"9" DTA r AA$;13; | AA$="0" _END  AA$="1" _SAVE  AA$="2" _LOAD  AA$="3" _SORT  AA$="4" _PRINT  AA$="5" _EDIT  AA$="6" _CHANGE  AA$="7" _CREATE  AA$="8" _SEARCH  AA$="9" _SUBP 0:  ݤS:=$(+4),1+$(+4),">")) 4ݤfx(A%,X%):Y%:Y%=X%256:=(&FFF4 &FFFF00)256 %ݤarc:=(-256 &F0)=&A0 >&8000 6ݤfile(A$,A%): X%,Y%:X%=ctrl%:Y%=X%256:$name%=A$ *?X%=name%:X%?1=name%256:=(&FFDD)&FF Yݤyn:"? (Y/N)";:A%= &DF:A%=89 A%=78:5,8);:A%=89:"Yes ";:= "No ":= & _SUBP 0;"Call subprogram:"19," ");19,8);: ""FF$:FF$="" :Z%=start:FF$: D._TITLE(T$)::wd%>40 38-( T$)/2)T$': N$:""157""14120-( T$)/2)T$ X"""157""14120-( T$)/2)T$ b l _LINE v""39,",");  ݤerr:p%:3 &0,23);:: <128 " at line ";;  fsflag #0  <>17:ZZ= =-1  _END 0" Are you sure you want to exit";:笤yn: +end:file("Hello",5)=1:"Hello" : end:*FX225,1 *FX4   _CHANGE V"New file directory:"17," ");17,8);: ""FF$:11:FF$<>"" FF$<17::FD$=FF$    _SAVE   _CHECK *_TITLE("SAVE DATA") 4 "."+FD$ >'" Use filename "FILE$; HZ笤yn:'" File name: "17," ");17,8);: ""FF$:11:FF$<>"" FF$<17:FILE$=FF$: R(AA$="SAVE ":FD$<>"":AA$=AA$+FD$+"." \*AA$+FILE$+" "+~(start)+" "+~(end): f _LOAD p!_TITLE("LOAD DATA"):"."+FD$ zU'" File name: "17," ");17,8);: ""FF$:11:FF$<>"" FF$<17::FILE$=FF$ )FD$="" AA$=FILE$ AA$=FD$+"."+FILE$ 7file(AA$,5)<>1:"File '"AA$"' not found";:ZZ=: @ctrl%!10>HILIMIT-start-20:"File '"AA$"' too long";:ZZ=: "LOAD "+AA$+" "+~(start) B$start<>c1$ $start<>c2$:"****Bad file!!!****";:ZZ=: .?HILIMIT=FILE$:$(HILIMIT+1)=FILE$:_SETUP pnt=end:11:_BLANK:  _CREATE  _TITLE("Create a new file") ) ''" File title: "T$:$(start+20)=T$ J ''" Number of fields: "FI:FI=((FI-1) 31)+1:start?50=FI:start?51=1 &:pnt=start+52+FI:tot=0: F=1 FI ] " Size of field ";F;" (1-";78-tot;") ";4,8);: ""SZ1:11:SZ1>0 SZ1<=78-tot: +SZ1=SZ1+1:?(start+51+F)=SZ1:tot=tot+SZ1 ; " Name of field ";F;": ";: ""N1$:11:N1$<=SZ1:  $pnt=N1$:pnt=pnt+($pnt)+1: $I$start=c2$:recflag=1:start!16=pnt-start:datastart=pnt:_SETUP:_BLANK . 8 ݤ_CHECK Bd$start<>c1$ $start<>c2$::0,10):_LINE:" *******No records present!!******":_LINE:= L= Vline:pnt=end:" End";:pnt=pnt+mult pnt=end >=ht%-6 pnt>=end " End" wd%," ") ! 39:arc fx(130,0)<>&FFFF:22,&80 mult>39:fx(133,&80)>=end:22,&80 Ewd%=(fx(160,10)-fx(160,8))&FF:ht%=(fx(160,9)-fx(160,11))&FF &r$="":y$="":b$="":m$="":w$="" *wd%>39:r$=" ":y$=r$:b$=r$:m$=r$:w$=r$  _EDIT: _CHECK: !fld=1:trec=0:xp=0:mde:*FX4,2 ._TITLE("EDIT RECORDS"):ht%=ht%+2*(wd%<40) " ";: F=1 FI  7field$(F);fsize(F)-field$(F)-1," ");" ";:F:8: 0,ht%+(wd%>39));r$"f0"w$"return to menu "r$"f2"w$"top record "r$"f4"w$"back a page "r$"f6"w$"forwards a page"'y$"Title: "TIT$;  28,0,ht%-1+(wd%>39),wd%,3 ( st=datastart+trec*mult:psn=0 2_LISTER:psn=0:pnt=st+mult <23,1;0;0;0;0:0,ht%-5);y$"Current record="trec+psn;" ";1+wd%2,ht%-5)y$"Bytes used=";end-start;wd%2-19,ht%-5-(wd%<40));y$"Top record=";trec;1+wd%-20,ht%-5-(wd%<40));m$"Bytes free=";HILIMIT-end; F*xp,psn);"]";xp+fsize(fld),psn);"["; P AA=: AA>31 AA<127 DJF ZA(AA=&B6 AA=&8E) st+(ht%-6)*mult=datastart:trec=trec-ht%+6:ThE n)xp,psn);w$;xp+fsize(fld),psn);" "; x AA=13 fld=1:xp=0: TNF  AA=&B0: " AA=&B2 AA=&9F:trec=0:ThE F AA=&9E:trec=(end-datastart)mult-ht%+7:trec=trec (trec>0):ThE  AA>&BF AA<&BB:DFE  AA=&BC:dfE  AA=&BD:dzE  AA=&BE:TNF  AA=&BF:TlF : AA=&BB (trec+psn)>0:AA$=$(pnt+xp-2*mult):8:DrF  DFE 8 fld=1 fld=FI: F=1 FI-1:xp=xp+fsize(F):F: T|E %fld=fld-1:xp=xp-fsize(fld): T|E  fld=FI xp=0:fld=1: T|E 'fld=fld+1:xp=xp+fsize(fld-1): T|E . psn<>ht%-7:psn=psn+1:pnt=pnt+mult: T|E  st+mult>=end 7: T|E "7trec=trec+1:st=st+mult:''(wd%):11,11:line:T|E ,*pnt=pnt-mult: psn<>0 psn=psn-1: T|E 6' st=datastart:7:pnt=st+mult:T|E @Mtrec=trec-1:st=st-mult:11,13:pnt=pnt-mult:line:0,ht%-6);(wd%);:T|E J/ (st+psn*mult+xp)>(HILIMIT-mult) 7: DFE T"FX138,0,"+(AA) ^ 23,1,1;0;0;0;:*FX4 hxp,psn);: ">"AA$ r4AA$=AA$,fsize(fld)-1):$(pnt-mult+xp)=AA$:*FX4,2 |(pnt>=end:end=pnt:start!16=end-start  11:pnt=pnt-mult:line:T|E  _SORT  _CHECK _TITLE("Sort Records") 3: F=1 FI:" "157"Field ";F;":";field$(F)  F > '"Sort by which field? "F1%: F1%<1 F1%>FI 11: dBF "Sorting by:"field$(F1%) $ f%,l%,i%,j%,temp$,dist%,i1%,X% X%=_SIZE(F1%) #f%=0:l%=rectot%: 23,1,0;0;0;0; dist%=(l%-f%+1) 2   j%=f%+dist% l% ," Sorting... ";dist%;" ";l%-j%;" ":11  i%=j%-dist% f% -dist% &i1%=i%+dist% 0* $(i%*mult+X%)<=$(i1%*mult+X%) DbG :X2%=0: F=1 FI Dtemp$=$(datastart+i%*mult+X2%):$(datastart+i%*mult+X2%)=$(datastart+i1%*mult+X2%):$(datastart+i1%*mult+X2%)=temp$:X2%=X2%+fsize(F) N F X i% b j% ldist%=dist% 2 v dist%=0 '':_LINE (14)"Sorted" _LINE:ZZZ=: ݤ_NAME(I,FLD)  X,F 2 FLD=1 t|G F=1 FLD-1:X=X+fsize(F):F =$(datastart+I*mult+X) _NAM(I,N$,FLD)  X,F 2 FLD=1 ddG F=1 FLD-1:X=X+fsize(F):F $(datastart+I*mult+X)=N$: Bݤ_SIZE(FL):X%=datastart: FL<>1 F=1 FL-1:X%=X%+fsize(F): =X%  _BLANK  : 23,1;0;0;0;0   8 F=1 FI:$pnt=fsize(F)-1,"~"):pnt=pnt+fsize(F):F */" Blanking out:";HILIMIT-pnt+40;" ":11 4 pnt>=HILIMIT-40 > H _PRINT R _CHECK \%_TITLE("Print out records"):p%=0 f3'""157"Print out all records A" p2""157"Print out certain records C" z;0,5)""157"Select printer(";: p% "ON"; "OFF"; ")"36)"P" )AA$=:AA="AaCcPc",AA$): AA=0 tNH  AA>4 p%=1-p%: DzH  AA<3 F1%=0:FF$="": d^H  F=1 FI $"Field ";F;":";field$(F):F: 4 "Which field? "F1%: F1%<1 F1%>FI 11:d@H  ""field$(F1%);: "="FF$ X%=_SIZE(F1%)  p% 2 ? FF$<>"" 20-( field$(F1%)+ FF$)/2);field$(F1%);" ";FF$ # LOOP=1 FI: LOOP=F1% TFI 3field$(LOOP);fsize(LOOP)- field$(LOOP)," ");  LOOP:  LOOP=0 rectot%  FF$="" TnI $! $(LOOP*mult+X%)<>FF$ DLI .%X2%=0: L1=1 FI: L1=F1% DBI 8>AA$=$(datastart+X2%+LOOP*mult):AA$;fsize(L1)- AA$," "); BX2%=X2%+fsize(L1):L1: L LOOP V p% 3 `5_LINE:8"******Finished******":_LINE:ZZ=: j_OSC:: t"*"AA$: AA$ ~ AA$="": _SETUP 'end=start+start!16:TIT$=$(start+20) FI=start?50:pnt=start+52+FI {mult=0: F=1 FI:fsize(F)=?(start+51+F):field$(F)=$(pnt):mult=mult+fsize(F):pnt=pnt+$pnt+1:F:datastart=pnt:recflag=1 .?HILIMIT=$(HILIMIT+1):FILE$=$(HILIMIT+1)  _SEARCH  _CHECK !_TITLE("Search and Replace") 7: F=1 FI:" "157"Field ";F;":";field$(F): F @ '"Search on which field? "F1%: F1%<1 F1%>FI 11: dlI X%=_SIZE(F1%) ' '"Search for what string? "st1$ = '"Replace with what string? "st2$: st2$="" st2$=st1$ match=0: loop=0 rectot% .a$=$(loop*mult+X%):a=a$,st1$): a=0 TrJ (a$=a$,a-1)+st2$+a$,a+st1$):$(loop*mult+X%)=a$,fsize(F1%)-1):X2%=datastart+loop*mult: a=1 FI:$(X2%);(fsize(a)-$(X2%));:X2%=X2%+fsize(a)::8::match=match+1 2 loop:"";match;" match";:101 (match<>1),115 (match<>1):" on ";st1$:_LINE:8"******Finished******":_LINE:ZZ=:  >FormList 1.02  'DATABASE' PROG  (C)1986 J.G.Harston ( PROC_SEARCH added 16/7/87 2 Non-full screen OK 7/2/89 <" HIMEM set correct >KbdBBC  BBC keyboard template *FX6 (2,1,27,1,"t",1,1: IBM 21,27,1,"6": IBM #2 <1,15: Condensed FY" Ŀ" PY" f0 f1 f2 f3 f4 f5 f6 f7 f8 f9 Break" Zi" Ŀ" dn" Esc 0 <-- --> ";13; n1,27,1,"S",1,1 x_" 1 2 3 4 5 6 7 8 9 - ^ \";13; 1,27,1,"S",1,0 k" ! "" # $ % & ' ( ) = ~ |";:1,27,1,"T": l" Ŀ" q" TAB Q W E R T Y U I O P @ ";13; 1,27,1,"S",1,1 ((13*6);" [ _ | V";13; 1,27,1,"S",1,0 ](13*6);" { ";:1,27,1,"R",1,3,"#",1,27,1,"R",1,0:" ^ |";:1,27,1,"T": l"" m"Caps Ctrl A S D F G H J K L RETURN ";13; 1,27,1,"S",1,1 ^" ; : ]";13; 1,27,1,"S",1,0 i" + * }";:1,27,1,"T": h"Ĵ" m" SHIFT Z X C V B N M SHIFT Del Copy ";13; "1,27,1,"S",1,1 ,U" Lock , . /";13; 61,27,1,"S",1,0 @`" Shift < > ?";:1,27,1,"T": Jh"" TM" " ^M" " h r |3 >KbdBBC  BBC keyboard template *FX6 (2,1,27,1,"t",1,1: IBM 21,27,1,"6": IBM #2 <1,15: Condensed FY" Ŀ" PY" f0 f1 >KbdIBM  IBM keyboard template  uk%=-1 ($k2$="@":k3$="#":kT$="""":kt$="'" 2Quk% k2$="""":k3$=1+27+1+"R"+1+3+"#"+1+27+1+"R"+1+0:kT$="@":kt$="'" ? ";:uk% " "; "|"; " ^"; 1,27,1,"T": $"";:uk% ""; ""; e"";:uk% ""; ""; ;"Ĵ Ŀ ĴEnter" &" Control Alt Alt Gr Control <-- --> 0 . ";13; 01,27,1,"S",1,1 :(101);"V";13; D1,27,1,"S",1,0 N(101);"|";13; X1,27,1,"T": b" " l v  3 >KbdIBM  IBM keyboard template  uk%=-1 ($k2$="@":k3$="#":kT$="""":kt$="'" 2Quk  >KbdMaster  Master keyboard template *FX6 (2,1,27,1,"t",1,1: IBM 21,27,1,"6": IBM Set #2 <1,15: Condensed F" Ŀ Ŀ Ŀ Ŀ" P" f0 f1 f2 f3 f4 f5 f6 f7 f8 f9 Break + - / * ";13; Z1,27,1,"S",1,1 d(15*6);" |";13; n1,27,1,"S",1,0 x%(15*6);" ^";13;:1,27,1,"T": " Ŀ Ĵ" " Esc <-- --> 7 8 9 # ";13; 1,27,1,"S",1,1 _" 1 2 3 4 5 6 7 8 9 0 - ^ \";13; 1,27,1,"S",1,0 k" ! "" # $ % & ' ( ) @ = ~ |";:1,27,1,"T": " Ĵ" ȉ" TAB Q W E R T Y U I O P 4 5 6 Del ";13; 1,27,1,"S",1,1 "(13*6);" [ _ V";13; 1,27,1,"S",1,0 W(13*6);" { ";:1,27,1,"R",1,3,"#",1,27,1,"R",1,0:" |";:1,27,1,"T": "Ŀ Ĵ" "Caps Ctrl A S D F G H J K L RETURN 1 2 3 , ";13; 1,27,1,"S",1,1 ^" ; : ]";13; "1,27,1,"S",1,0 ,i" + * }";:1,27,1,"T": 6"Ĵ Ĵ" @" SHIFT Z X C V B N M SHIFT Del Copy 0 . RETURN ";13; J1,27,1,"S",1,1 TU" Lock , . /";13; ^1,27,1,"S",1,0 h`" Shift < > ?";:1,27,1,"T": r" " |M" " M" "   3  >KbdMaster  Master keyboard template *FX6 (2,1,27,1,"t",  >KbdTorch  Torch keyboard template *FX6 (2,1,27,1,"t",1,1: IBM 21,27,1,"6": IBM Set #2 <1,15: Condensed F"Ŀ Ŀ Ŀ" P" " Z"Ĵ Ĵ Ĵ" d" 0 ";13; n1,27,1,"S",1,1 xl" 1 2 3 4 5 6 7 8 9 -";13; 1,27,1,"S",1,0 x" ! "" # $ % & ' ( ) =";:1,27,1,"T": "Ĵ Ĵ Ĵ" " TAB Q W E R T Y U I O P @ " "Ĵ Ĵ Ĵ" " CAPS A S D F G H J K L RETURN ";13; 1,27,1,"S",1,1 r" ; :";13; 1,27,1,"S",1,0 }" + *";:1,27,1,"T": "Ĵ Ĵ" " SHIFT Z X C V B N M SHIFT ";13; 1,27,1,"S",1,1 o" , . /";13; 1,27,1,"S",1,0 z" < > ?";:1,27,1,"T": "" " ,o" " 6o" " @ J T3  >KbdTorch  Torch FB @EG4hS0W1S1R#RFH5hTW0T-0-1FB @EG4hS0W1S1R#RFH5hTW0T-0-1,15: Condensed F"FB  """"""""""""""@x1EG4hS0W1S1R#RFH5hTW0T-0-1FB  """"""""""""""@x1EG4hS0W1S1R#RFH5hTW0T-0-1: Condensed F"Syntax -ȱ00 eeeei@ Not found$0 & 2 L! 檮LL P | LhhL   @HM`H $0步ŬM= h Б 2 )`I` H)BISWXYh`@ h) 娅%I-E` ) Nf LA )) NNNNNNN,P ,)2 >(> J~(~  L1.08Syntax -ȱ00 eeeei@ Not found$0 & 2 L! 檮LL P | LhhL   @HM`H $0步ŬM  > MakeLP A&87:G(&D00):&84:G$="1.13":M:H%&300:J" at line ";: *FX4 ( G:*FX4 2 ""A$(l%)=A$(l%)A$(l%)="" F Pn CHR$27+"@",,CHR$27+"E",,CHR$27+"G",,,,,CHR$27+"4",,,,,,,,,,CHR$27+"S0",,,,CHR$27+"W1",,CHR$27+"S1",,,,,, Z CHR$27+"R"+CHR$3+"#"+CHR$27+"R"+CHR$0,,CHR$27+"F",,CHR$27+"H",,,,,CHR$27+"5",,,,,,,,,,CHR$27+"T",,,,CHR$27+"W0",,CHR$27+"T",,,,,, d+ CHR$27+"-0",CHR$27+"-1",,,,,,,,,,,,,, n x.ݤB(A$):l%,B$:B$="":A$="++":="Set bit 7" A$="--":="Clear bit 7" A$=""="" +l%=1A$:m$=A$,l%,1):l%<>1 B$=B$+"," Qm$<32m$>126 B$=B$+×m$(m$>="0"m$<="9")m$=","B$=B$+34+m$+34B$=B$+m$ :=B$ ݤG::4"Printer Driver Generator ";G$'4;29,"="):'9"(C)1992 J.G.Harston":''5"1 : General settings":'5"2 : Letter extensions":'5"3 : Save settings":'5"4 : Load settings":'5"5 : (Create View Driver)":'5"6 : Create lp Program" T''5"0 : Exit"'':5"Press a key: ";:A$=:"0123456*"+13+0,A$):A$<>"*"A$ "A$="*""*"A$:A$:A$="":":"; ^A$=0"Saving...";:"SAVE "+$(+4),$(+4),">")+1)+" "+~+" "+~P+" FFFF0000 FFFFFB00" A$="1"C A$="2"H A$="3"N A$="4"O  A$="5"I  A$="6"J A$<>"":=A$="0" "ݤJ:=17-1=0=0 ,A$::A$=:=-1 6C::10"General Parameters"':"Auto linefeed? "D(b%)''"Paper length: ";Q%''"Text page length: ";R%:'"FF at end of page? "D(_%)''"LF at end of page? "D(T%):'"FF after last page? "D(N%):'"Convert CHR$96 (`) to pound? "D(J%) @"Convert CHR$163 ("163") to pound? "D(L%):c$"pound: "B(A$(64)):'"Highlight 1:":c$"underline on: ";B(A$(97)):c$"underline off: ";B(A$(96)):'"Use extended highlights? ";D(I%)':I%' JKI%"Highlight 2:"'c$"bold on: ";B(A$(98))'c$"bold off: ";B(A$(99)) T'':40,"=")"Printer reset with code '@' (see page 2)Pound also defined with code '`'";:13,2);:b%=C(b%):18,4);x%:x(18,4):x%>10 Q%=x%:14,4);x%;" " ^422,6);x%:x(22,6):x%>10 R%=x%:18,6);x%;" " h-17,8);:_%=C(_%):_%T%=:19,10);"No " r_%17,10);:T%=C(T%) |.18,12);:_%+T%=0 N%=0:"? No "N%=C(N%) 27,14);:J%=C(J%):28,15);:L%=C(L%):0,17)"Code: ";:""x$:x(0,17):x$<>""A$(64)=A(x$):16,16)B(A$(64));:x(,):x$=" "A$(64)="" f0,21)c$"on: ";:""x$:x(0,21):x$<>""A$(97)=A(x$):24,19)B(A$(97));:x(,):x$=" "A$(97)="" g0,21)c$"off: ";:""x$:x(0,21):x$<>""A$(96)=A(x$):24,20)B(A$(96));:x(,):x$=" "A$(96)="" |23,22);:I%=C(I%)::I%x(,):x(0,+1):x(0,+1)"Highlight 2:"'c$"bold on: ";B(A$(98))'c$"bold off: ";B(A$(99)) jI%0,27)c$"on: ";:""x$:x(0,27):x$<>""A$(98)=A(x$):19,25)B(A$(98));:x(,):x$=" "A$(98)="" kI%0,27)c$"off: ";:""x$:x(0,27):x$<>""A$(99)=A(x$):19,26)B(A$(99));:x(,):x$=" "A$(99)="" (0,28)"Ok";:i%=C():x(0,28):i%: "x(X%,Y%):X%,Y%);(39-);: ݤD(F%):F%:="Yes"="No " ݤH(l%):l%=D%:="Set bit 7" &l%<>E%:=B(A$(l%))="Clear bit 7" bD(A%)::l%=031:0,l%);(l%+A%+32);" ";H(l%+A%);20,l%);(l%+A%+64);" ";H(l%+A%+32);:: H:t%=32:D(t%):*FX4,1 l%=0:1+20*((l%32)1),l%32);":";20,31);(l%+t%+32);" ";B(A$(l%+t%)),16);(38-);20,31);:K%=:m%=l%:K%=136 m%=l%-32 K%=137 m%=l%+32 K%=138 m%=l%+1 &K%=139 m%=l%-1 0K%=135 t%=t%32:D(t%) :m%<0m%>62 m%=l% D/m%<>l%1+20*((l%32)1),l%32);" ";:l%=m% NK%<127K%>31:T:0: X@T:22,31);16;22,31);:C$=A(E(K%,17)):C$,1)=" "C$="" bC$=""D%=l%D%= lC$=""E%=l%E%= vBC$="++"D%>((D%-t%)&FFC0)=02+20*((D%-t%)32),D%31);18; BC$="--"E%>((E%-t%)&FFC0)=02+20*((E%-t%)32),E%31);18; 'C$="++"C$="":D%=(l%+t%)(l%+t%<32) 'C$="--"C$="":E%=(l%+t%)(l%+t%<32) EA$(l%+t%)=C$:2+20*((l%32)1),l%32);H(l%+t%);(20-(20));:0 OݤA(A$):l%,B$:l%=1:m$=A$,l%,1):(m$<"0"m$>"9")m$<>34 B$=B$+m$:l%=l%+1 5m$=34A$,l%+2,1)=34 B$=B$+A$,l%+1,1):l%=l%+3 ?(m$>="0"m$<="9")B$=B$+A$,l%):l%=l%+A$,l%)+",",",")-1 A$,l%,1)=","l%=l%+1 l%>A$:=B$ HݤE(A$,`%):B%,l%:$H%=A$:l%=A$:A$;:B%=:B%=127l%<>0127:l%=l%-1 +B%>31B%<127l%<`%B%:H%?l%=B%:l%=l%+1 B%=13:H%?l%=13:=$H% 1I:"Filename to save by: "F$:F$=""F$="drv" '"Assembling View Printer Driver";:P=01:C%=P*3+4:P%=&400:O%=H%:O%=H%:[OPTC%:JMPv:JMPQA:JMPIA:RTS:.RA:BRK:.`A:BRK:RTS:]:B(C%):[OPTC%:.QA:LDA#2:JMP&FFEE:.IA:LDA#3:JMP&FFEE:.v:]:I%[OPTC%:BITRA:BMIw:]  J[OPTC%:CMP#&81:BEQx:CMP#&80:BEQy:CMP#13:BEQj:]:J%[OPTC%:CMP#96:BEQq:] L%[OPTC%:CMP#163:BEQr:]  `[OPTC%:JMP&FFEE:.w:.q:.r:.y:.x:.j:RTS:]:"*SAVE "+F$+" "+~H%+" "+~O%+" 400 400":"...": * 4MݤF:G%=0:M%=:l%=0:A$(l%)<>""m%=1A$(l%):G%=G%(A$(l%),m%,1)>127): >l%=l%+1:l%=102G%:G%:=I H*l%=0:A$(l%)<>""A$(l%),1)<>27 M%=0 Rl%=l%+1:l%=102M%=0:=0 \EݤI:M%=0:f%=0:l%=0:A$(l%)<>""m%=1A$(l%):Q(A$(l%),m%,1)): fVl%=l%+1:l%=102(M%f%):M%f%"Can't build table with both 0 and 255";:f%=:==0 pQ(A%):A%=0 M%=: zA%=&FF f%=  B(C%):U%=(M%128)+(b%64)+(_%32)+(T%16)+(I%8)+(J%4)+(L%2)+(N%1):W%=(G%128)+(e%64):[OPTC%:EQUBU%:EQUB(Q%31)+(((E%-32)*4)&E0):EQUB(R%31)+(((E%-32)*32)&E0):EQUBW%+((D%-32)(D%>0E%>0)):.F:]:l%=0101:A$(l%)<>""U :[OPTC%:EQUB255:]: =U:[OPTC%:EQUBl%+1:]:G%[OPTC%:EQUSA$(l%):EQUBM%&FF:]: >M%[OPTC%:EQUSA$(l%),2,A$(l%)-2):EQUB128+A$(l%),1):]: 9[OPTC%:EQUSA$(l%),A$(l%)-1):EQUB128+A$(l%),1):]: #J:"Create 'lp' program":F ,"Filename to save by: "F$:F$=""F$="lp" 2D$=F$:D$,".")D$=D$,D$,".")+1):D$,".")=0 R"Assembling ";F$:Z%=&FFFF0900:B=0:O%=H%:P%=Z%:z=B:A(4):B>&B00 Z%=&FFFF08C0 B=z:O%=H%:P%=Z%:A(6):"Saving ";F$'"Start: &";~Z%&FFFF;" End: &";~B:"SAVE "+F$+" "+~H%+" "+~O%+" "+~(d%&FFFF0000)+" "+~Z%: 7A(C%):B(C%):K(C%):E(C%):L(C%):F(C%):P(C%): uK(C%):[OPTC%:.O:LDA#1:STAQ:RTS:.AA:TYA:PHA:JSRO:LDA#124:JSR&FFF4:LDA#15:JSR&FFF4:PLA:TAY:.OA:]:N%[OPTC%:JSRn:] [OPTC%:DECQ:BEQBA:LDA#0:STA&A8:STA&A9:STA&AA:STA&AB:LDX#&A8:LDA#1:JSR&FFDA:._:JSR`:STAo:JMPD:.BA:LDA#3:JSRM:LDA#0:]:B<&B00 [OPTC%:JMPN:] RB>&AFF [OPTC%:JSRN:LDA#0:LDX#1:JSR&FFF4:CPX#3:BCSSA:LDA#18:JMP&FFF4:.SA:RTS:]  $>E(C%):[OPTC%:.R:JSRJA:LDAL:CMP#R%:BCCD:JSRn:.D:LDX#1:]: .1L(C%):[OPTC%:.E:BIT&FF:BMIAA:JSRb:BCSOA:]: 80 [OPTC%:Abit7:] BJ%[OPTC%:CMP#96:BEQS:] LL%[OPTC%:CMP#163:BEQS:] V[OPTC%:.PA:INX:JSRC:JMPE:.TA:CMP#13:BEQR:CMP#10:BEQR:CMP#9:BEQZA:CMP#12:BEQCA:CMP#28:BEQc:CMP#29:]:I%[OPTC%:BEQf:][OPTC%:BEQUA:] `/[OPTC%:BNEE:]:J%L%[OPTC%:.S:LDA#64:BNEI:] jV[OPTC%:.CA:JSRn:JMPD:]:I%[OPTC%:.VA:JMPOA:.f:JSRb:BCSVA:SBC#31:BMIE:CMP#95:BCSE:] tW(E%D%)>0:[OPTC%:CMP#D%:BEQWA:CMP#E%:BNEI:LDA#0:.KA:STAXA:JMPE:.WA:LDA#128:BMIKA:] ~v[OPTC%:.I:JSRG:JMPE:.c:LDAH:#1:STAH:#1:A#96:.DA:JSRG:JMPE:]:I%[OPTC%:.UA:LDAH:#2:STAH:LSRA:#1:A#98:BNEDA:] [OPTC%:.ZA:TXA:#7:TAX:.EA:LDA#32:JSRC:INX:TXA:CMP#8:BNEEA:JMPE:.LA:LDA#27:BNEU:.C:.U:PHA:LDA#1:JSRk:PLA:.k:JMPM:]:_%[OPTC%:.n:LDA#12:JSRU:] -T%[OPTC%:.FA:JSRa:.n:LDAL:CMP#Q%:BCCFA:] Q[OPTC%:INCo:.`:LDA#0:STAL:RTS:.JA:BITH:BVCa:JSRa:.a:]:b%[OPTC%:LDA#10:JSRC:] p[OPTC%:INCL:LDA#13:JMPC:.G:STXJ:CLC:ADC#1:LDX#0:.GA:CMPF,X:BEQl:BCCK:PHA:.T:INX:LDAF,X:]:G%=0 [OPTC%:BPLT:] G%M%[OPTC%:CMP#&FF:] G%[OPTC%:BNET:] 4[OPTC%:PLA:INX:BNEGA:.l:]:G%=0M%[OPTC%:JSRLA:] 1[OPTC%:.V:INX:LDAF,X:]:G%M%[OPTC%:CMP#&FF:] G%[OPTC%:BEQK:] G%=0 [OPTC%:#127:] :[OPTC%:JSRC:]:G%=0 [OPTC%:LDAF,X:BPLV:][OPTC%:JMPV:] [OPTC%:.K:LDXJ:RTS:]: bP(C%):o%=O%:p%=P%:[OPTC%:.Q:BRK:.W:BRK:.L:BRK:.o:BRK:.H:BRK:.J:]:(E%D%)>0:[OPTC%:.XA:BRK:]  O%=o%:P%=p%:[OPTC%:.d%:LDX#&A8:LDY#0:JSRO:STYW:JSR&FFDA:LDA(&A8),Y:CMP#13:BEQp:LDX#0:CMP#"+":BNEs:LDX#&40:JSRZ:BEQp:.s:STXH:TYA:PHA:.MA:INY:LDA(&A8),Y:CMP#"!":BCSMA:JSRg:BEQh:JSRi:STAQ:JSRg:BEQh:JSRi:STAW:.h:PLA:CLC:ADC&A8:TAX LDA#0:ADC&A9:TAY:LDA#&40:JSRN:TAY:BEQm:LDA#2:JSRM:LDA#32:JSRG:JMP_:.p:._A:BRK:EQUB220:EQUS"Syntax: "+D$+" (+) ()":.m:BRK:EQUB214:EQUS"Not found":BRK:.i:LDA#0:.NA:STA&AA:LDA(&A8),Y:CMP#"0":BCCHA:#15:PHA LDA&AA:ASLA:ASLA:ADC&AA:ASLA:STA&AA:PLA:ADC&AA:INY:BNENA:.HA:LDA&AA:RTS:.Z:INY:.g:LDA(&A8),Y:CMP#" ":BEQZ:CMP#13:RTS:EQUS"V"+G$:BRK:.B:]: ( N:F 2X'"Save settings":"Filename: "F$:P%=H%:B(0):"SAVE "+F$+" "+~H%+" "+~P%+" 0 0": 0:b%=(U%64)<>0:_%=(U%32)<>0:T%=(U%16)<>0:I%=(U%8)<>0:J%=(U%4)<>0:L%=(U%2)<>0:N%=(U%1)<>0:G%=(W%128)<>0:e%=(W%64)<>0:M%E$=27E$="" Z a%=0R: d#a%>80"Unknown format";:a%=: nx%=1:a%=1 x%=-31 xm%=V%+4:G%S: fl%=0101:A$(l%)="":?m%=l%+x%:m%=m%+1:A$(l%)=A$(l%)+(?m%127):?m%>127:m%=m%+1:A$(l%)=E$+A$(l%) : qS:l%=0101:A$(l%)="":?m%=l%+1:m%=m%+1:A$(l%)=A$(l%)+?m%:?m%=(M%&FF):m%=m%+1:A$(l%)=A$(l%),A%(l%)-1) : |R:m%=V%+84:l%=473:`%=?(V%+l%+1)-V%?l%:`%>0 A$(l%+28)=E$:n%=1`%:A$(l%+28)=A$(l%+28)+K(?m%):m%=m%+1:A$(l%+28)="" :E%=:D%=: *ݤK(c%):G%c%>127:=27+(c%127)=c% >ݤC(F%):K%:"? (";(78-F%*11);")";:K%=:K%>95 K%=K%&DF ,K%=13K%=89K%=78:K%=13 K%=F%K%=K%=89 3,127);:K%"Yes""No " =K% S% =B%=(+(A%-P-S%))&FF00:"Relocating to &";~B%:*K.0 RUN|M  *FX225,1 *FX138,0,128 &A%=0P-+44:B%!A%=A%!::=B%:  BXPrintout Commandsxb Most of the text files supplied on the System Startup disk are extended View files. What these are is text files created with Acorn's View word processor, using extensions to highlight two to provide easier-to-use printer functions. BMakeLPb creates the B*lpb commands to print out the files (replacing View's PRINT command), and B*lpSb can be used to show the effects on the screen (replacing View's SCREEN). XMakeLPx This program creates the Blpb command to print out View or text files to a printer. The name Blpb comes from Unix - it's short for BLbine BPbrinter. BMakeLPb allows you to create a customised version of Blpb tailored for your printer and for what effects you wish to use. The default settings are for Epson-compatible printers. Blpb extends View's highlight 2 to give the extra facilities. After a highlight 2 you put a letter indicating an effect. A capital letter turns it on and a lower case letter turns it off. As an example: doing *Ihello*i would put the word 'hello' in italics. Pound symbols are correctly printed (hurray!!) - for this you need your printer set in US mode. This is done by setting some DIP switches somewhere, usually the endmost three to 'off'. Check your manual on this. The pound symbols are printed by switching to UK, printing a '#', and then switching back to US. As with everything else, this can be changed. The program is fairly simple to use. There is a main menu with a few options. Option 5 - Create View Driver - is not yet implemented. Options 1 and 2 allow you to change the parameters for your printer. Options 3 and 4 allow you to save and load the settings, and option 6 creates an Blpb command. The actual name can be changed to anything reasonable. I recommend creating a Ilpi directory in the Library, and naming the commands I%.lp.nlqi, etc. The System Startup Disk has various files supplied in the I%.lpi directory. On option 1, you have some Yes/No questions and some value questions. Pressing BRETURNb leaves them as they are. You may have to experiment a bit to find what the correct values are for your setup. There are some supplied files for different lengths of paper and number of lines on each page. Text lines Page lines Supplied files Continuous A4 70 70 %.lp.70A4 %.lp.70A4nlq Standard A4 66 70 %.lp.66A4 %.lp.66A4nlq Short A4 60 70 %.lp.60A4 %.lp.60A4nlq Continuous Listing 66 66 %.lp.66 %.lp.66nlq Standard Listing 60 66 %.lp.60 %.lp.60nlq These are the files used by the JGH PD ViewHello View menu system. On option 2, you select the code string you want to alter with the cursor keys. To change the string, type in the new string. The input is fairly flexible. You can put commas between everything, or not. You can enter in characters or decimal. If you want the number characters "0" to "9", they must be surrounded in quotes, otherwise they are taken as values. Examples are: 27,S,"0" \ 27,S,48 } all the same. 27,83,48 / To remove a setting, press BSPACEb followed by BRETURNb. The setting should then disappear. When Blpb starts it does a '@' code. This is defined to reset the printer, and can also set it to NLQ if you want. This makes the current position on the paper the top of the form (the place where Form Feeds go to). If you don't want this, set '@' to nothing. Blpb ignores View's ruler and embedded commands, etc. Tabs are to 8 character positions, as on the default ruler. The syntax of Blpb is: B*lp (+) ()b If the '+' prefix is given, Blpb double spaces. If a decimal is given, then that number of copies are printed. You can press BEscapeb at any time and the print job will be terminated, but the printer itself may continue for a while as it empties its own buffer. Hints If your printer prints everything on the same line, you need to set IAuto linefeedi to IYesi from option 1. If it doublespaces when you don't ask it to, you need to set IAuto linefeedi to INoi. If your printer form feeds to much, set IForm feedsi to INoi. The following are Highlight 2 extensions that are used in most of the text files, and so I recommend you set them to do a suitable effect on your printer. Bb BBoldb on/off Hh HDouble Heighth on/off Ii IItalicsi on/off Qq QQuad sizeq on/off This takes 3 lines (That bottom line ^^^^ has to be blank for Quad to work on the LC10/1001) Ss SSuperscripts on/off, as in dates: 3Srds March Ww WWidew on/off Xx XWide X Highx Yy YSubscripty on/off also: Highline One is used for underline Pound: ` Hash: # X*lpS (-) x The BlpSb command will display a text file to screen, taking account of the following effects: BBoldb, IItalicsi, SSuperscripts, WWidew, YSubscripty and Underline. If a Bb parameter is given, then each page is split with a line of '=' characters. BXPrintout Commandsxb Most of the text files supplied on the System Startup disk are extended View files. What these ar >MCat  Multiple CAT program  (C) J.G.Harston ( 25 buff% 20,data% 100:total%=0:up%=(_INFO("^")=2) <:"Path to dump: "path$ FE up% path$,"$")=0 "Needs a reference to root ($)":path$="" PJ path$<>"" _INFO(path$)<>2 path$;" is not a directory":path$="" Zpath$<>"" dI"CATalog or EXamine? "f$: (f$,1)&DF)="E" cat$="EX" cat$="CAT" n@"Printer? (Y/N) "f$: (f$,1)&DF)="Y" prt%=:2 prt%= x8"DIR "+path$:total%=cat:up(path$,path$,".")+1)) ."Total disk space used: ";total%;" bytes"  prt% 12,3  1ݤcat: end%,index%,total%::index%=0:total%=0 "Directory ";path$ cat$ : *buff%!1=data%:buff%!5=1:buff%!9=index% #X%=buff%:Y%=X%256:A%=8: &FFD1 .index%=buff%!9:end%=buff%?5: end%=0 file end%<>0 =total% : file: f$,type% ??(data%+?data%+1)=13:f$=strip($(data%+1)):type%=_INFO(f$) Itotal%=total%+buff%!10: buff%?10<>0 total%=(total% &FFFF00)+&100 "4 type%=2 down(f$):total%=total%+cat:up(f$) , 6.down(f$):path$=path$+"."+f$:"DIR "+f$: @:up(f$):path$=path$, path$- f$-1): up% "DIR ^": J"DIR "+path$: TWݤ_INFO(f$): A%,X%,Y%:$data%=f$:!buff%=data%:X%=buff%:Y%=X%256:A%=5:=(&FFDD)&FF ^5ݤstrip(f$): f$,1)=" " :f$=f$,2):f$,1)<>" " hf$=f$,f$+" "," ")-1):=f$ >MCat  Multiple CAT program  (C) J.G.Harston ( 25 buff% 20,data% 100:total%=0:up%=(_INFO("^")=2) <:"Path to dump: "path$ FE up% path$,"$")=0 "Needs a reference to root ($)":path$="" PJ path$<>  >Printer 1.11  (C)J.G.Harston  B/B+/E/M/C/A/T (: 2&80: -P<1000 &83 <: F6 These settings are for EPSON compatible printers P: If you need to change any, modify the variables here Z> xxxx0$ is to turn an effect off, xxxx1$ is to turn it on d"reset$=27+64: reset printer n2nlq0$=27+"x"+0:nlq1$=27+"x"+1: NLQ off/on x/bold0$=27+"F":bold1$=27+"E": bold off/on -comp0$=18:comp1$=15: compressed off/on :doubl0$=27+"H":doubl1$=27+"G": double strike off/on 9super0$=27+"T":super1$=27+"S0": superscript off/on 3sub0$=27+"T":sub1$=27+"S1": subscript off/on 'wide0$=20:wide1$=14: wide off/on 2ital0$=27+"5":ital1$=27+"4": italics off/on .charsel$=27+"R": character set selection 1USchar$=charsel$+0: select US character set 1UKchar$=charsel$+3: select UK character set pound$=UKchar$+"#"+USchar$ 8under0$=27+"-0":under1$=27+"-1": underline off/on Qlf%=0: change this to lf%=1 if your printer doesn't do automatic LF after CR : 5high%=:prn%=:reset%=:pl%=66:l%=66:ff%=:ffl%= 8rr%=82:ds%=1:nlq%=:pound%=:pound2%=:code%=:op%= : " err ,under%=0:bold%=0::*. 6""Press SHIFT-Escape to exit." @O:: (-4)<63 ;63-(-4);" bytes in printer buffer. ";(-4);" bytes free." J!"File: "F$: F$,1)="*" F$ T(F$,1)<>"*" F$<>"") ^%C%=(F$): C%=0 "Can't open "F$' h#C%<>0:prn%=yn("Printer",prn%) r:"First page (1) "sp% |*"Last page (255) "ep%: ep%<1 ep%=255  ep%>=sp% ;op% options:op%= yn("Change options",) options %: prn% 2: reset% prn(reset$) prn% prn(USchar$) prn% nlq% prn(nlq1$) Acode% 23,128,0,0,8,4,254,4,8,0,23,129,0,0,&F8,8,&2A,&1C,8,0  sp%>1 3 line%=0:page%=0: B%=#C% - B%>31 B%<127 B%<>96 B% char(B%) .(B%=32 >rr%)(>78 rr%<80) char(13) "line%=l% ep% page%=ep%-1 3 pline%=l% 0,32: 1279,32:cls:line%=0:page%=page%+1:sp%page%=sp%-1 :"Printing from page ";sp%:2:sp%=0 #C%:#C% prn% cls:3 #line%=0 line%=l%:page%=page%-1 M'F$+" printed. ";page%+1;" pages with ";line%;" lines on the last page." &0 0 options ::high%=yn("Use VIEW highlight 2 as escape char",high%) D,prn% reset%=yn("Reset printer",reset%) N@:"Printer page length (";pl%;:") "pl2%: pl2%<>0 pl%=pl2% Xpl%<40 "Too short" b pl%>39 l8:"Text page length (";l%;:") "l2%: l2%<>0 l%=l2% vl%<40 "Too short"  l%>39 *ff%=yn("Force FF at end of page",ff%) F ff% l%<>pl% ffl%=yn("Send LFs to advance to next page",ffl%) E"Righthand margin (RETURN for non, 79=max): "rr%: rr%<30 rr%=82 7"Line spacing (";ds%;:") "ds2%: ds2%<>0 ds%=ds2% nlq%=yn("Set NLQ",nlq%) >pound%=yn("Convert CHR$96 (`) into pound symbols",pound%) Apound2%=yn("Convert CHR$163 () into pound symbols",pound2%) !code%=yn("Show codes",code%)  !char(B%):z%=0: B%=221 B%=9  B%=10 B%=13  B%=13 code% vdu(129+8)  B%=13 prn% prn(10)  0 B%=13 prn% ds%>1 z%=1 ds%:prn(10): ) B%=13 line%=line%+1:vdu(13+10):  ! B%=12 prn% cls:line%=l%: * B%=12 line%=l%: 4 B%=9 code% vdu(128+8) >) B%=9 prn%=0 8-((+1) 8),9);: H B%=9 (8-((+1) 8));: R= B%=&1C prn% under%=0 prn(under1$):under%=under% 1: \= B%=&1C prn% under%=1 prn(under0$):under%=under% 1: f B%=&1D high% mark2: p9 B%=&1D prn% bold%=0 prn(bold1$):bold%=bold% 1: z9 B%=&1D prn% bold%=1 prn(bold0$):bold%=bold% 1: A(B%=96 prn% pound%)(B%=163 prn% pound2%) prn(pound$):  B%=96 B%=163 B%: # B%=&1A (code%=0 prn%) 32:  B%=&1A code% vdu(130): 9 B%>159 code% prn%=0 9,8:129:0:B-128:1:128: N B%>126 code% prn%=0 9,9,9,9,9,8,8,8,8,8:129:0:"[";B;"]";:1:128: 0prn%=0 9,9,8,8:129:0:94,B%+64:1:128:   cls  pl%Printer 1.11  (C)J.G.Harston  B/B+/E/M/C/A/T (: 2&80: -P<1000 &83 <: F6 These settin 'Printer' Program version 1.30 ============================== This program allows you to easily print out text files, and also has a feature to extend the highlights in VIEW files. Running the program is fairly simple, and the questions asked are fairly straight-forward. At the 'File:' prompt, you can also enter '*' commands by making the first character a '*'. When you run the program is run, you are asked for your options, and from then onwards, you only change the options if you want to. You can set paged mode by pressing CTRL-N at the 'File:' prompt. You can print a specified number of pages using the 'First page' and 'Last page' questions. The unprinted pages will appear on the screen only. The program runs ok with PAGE at &1900, and it tries to use shadow screen mode if it can. If it can't find enough memory to use MODE 0, then it uses MODE 3 instead. The beginning of the program has the codes for controlling the printer. If you have a non-EPSON compatible printer, then you can change these by following the REM statements. VIEW Highlight 2 extensions =========================== The BPrinterb program can use VIEW's highlight 2 as an escape code to select a certain effect. This gives you much more flexability than just the two highlight codes on their own. You use this by putting highlight 2 followed by another character. Eg *Ithis is in italics*i would be set as italics (the stars here are just stars. You would use highlight 2 which just looks like a star). This is a complete list of the character set, showing which codes I've allocated so far. Currently it's just some of the letters. :  (Space) - nothing !: ! Pling - nothing ": " Quote - nothing #: # Hash - nothing $: $ Dollar - nothing %: % Percent - nothing &: & Ampersand - nothing ': ' Apostrophe - nothing (): (Style '()') characters - nothing *+: * Star, + Plus - nothing ,: , Comma - nothing -: - Minus - nothing .: . Dot - nothing /: / Slash - nothing 01: 0 Zero, 1 One - nothing 23: 2 Two, 3 Three - nothing 45: 4 Four, 5 Five - nothing 67: 6 Six, 7 Seven - nothing 89: 8 Eight, 9 Nine - nothing :;: : Colon, ; Semicolon - nothing <>: