>DefChar 2.11  Character defining program  By J.G.Harston (m&84:ver$="2.11":g128=0:oflg%=0:ctrl%31,b%7:os%=byte(0,1,0):23;10,96(os%<>32);0;0;0:os%=6:*POINTER 1 2D'8;:wd%=>32:A%=::B%=:A%=B%:ht%=::ht%>127:ht%=23:wd%=0 Get,Put,Load,Save,Quit," "," ",Cursors,to move,& scroll, I Invert,M Mirror <>,T Tip ^v,+ Rotate +90,- Rotate -90,\ Reflect,/ Reflect,V Reflect ^v,H Reflect <>,X Check font,R Reset font, M10-3*wd%,20)"DefChar "ver$1-3*wd%,21)"Copyright 1985-2019 J.G.Harston" #x%=0:y%=0:_EXPAND(char):*FX4,2 31,x%+1,y%+8 #:X%=ctrl%:Y%=X%256:wait:ch= -mx%>124mx%<1152my%>799my%<1024:msChr *mx%>12mx%<308my%>490my%<788:msKlk =my%<768((mx%>576my%>608)(mx%>867my%>420))mL%:klik2 ,A$<>"":0,7:A$>"`"A$<"{":A$=(A$-32) /A%=ch>:A%:A$="C":char=ch:t`@A%:TBC &A%=A$&CF:A%>&CB:A$=(A%+64*-1) #A%="5867",A$):A%:A$=(&CB+A%) A$=&CC:x%=(x%-1)7 A$=&CD:x%=(x%+1)7 A$=&CE:y%=(y%+1)7 "A$=&CF:y%=(y%-1)7 ,(A$>139A$<144:_SCROLL((A$)-140) 6A$="*":TVC @A$="S":inp:TtC JA$="L":inp:dJC T1(A$=203A$=9)xo%+x%*4,yo%-y%*4)=0:A$="1" ^(A$=203A$=9):A$="0" hqA$="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:tt@ r}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,159,8:get128:tt@ |HA$="G"A$="C":bot;"Get which";:char=_CHAR:bot;clr'clr;:t`@ A$=13A$="P":dxB A$="I":inv:tj@ A$="T":tip:tj@ A$="M":mir:tj@ A$="+"A$=";":rotP:tj@ A$="-"A$="=":rotM:tj@ A$="/"A$="?":refD1:tj@ A$="\"A$="|":refD2:tj@ A$="V":refV:tj@ A$="H":refH:tj@ A$="Q":quit:tj@ A$="X":chk:tj@ OA$="R":bot"Reset character set? ";:A=upDn("NY"):clr:A:reset(0):Dd@  tj@ _ERROR:ms%=-1:p oflg%:bot;clr'clr; &#0:<>17:DDB 0$?(P-3):-1-2:"FX4":bot: :"FX4,2": D=:<128-1:" at line ";:"FX4": A$=:bot;clr;: Nd_CSET:30:A%=3225532:4wd%,A%32-1);:B=A%A%+31:B:::31,30-4*wd%,2,126:c(127)'''': XB_EXPAND(C%):0,17)"Character "c(C%)" (";C%;") ":_BIGGER: bݤc(A%):A%<>127:A%:="" lh?X%=159:A%=10:&FFF1:X%!9=&9F179F:X%!12=X%!1:X%!16=X%!5:?X%=127:&FFF1:23,159:A%=119:X%?A%::="" vKsave128:?X%=159:A%=10:&FFF1:g128=:&9F17;&81FF;&8181;&8181;&FF81;: get128:g128: %23,159:A%=18:X%?A%::g128=0: ݤd(A%):="00"+A%,3) 2_BIGGER:save128:Y=07:1,8+Y);:A=0:X=07 7A=A*2:xo%+X*4,yo%-Y*4):135:32:128:A=A+1 159 #:" "d(A):b%?Y=A::get128: 1wait:mse:mL%+mM%+mR%=0:ms%=0:A$=(50): Rox%=mx%:oy%=my%:p:mse:A$=(5):A$(mL%mM%mR%)(mx%<>ox%)(oy%<>my%):p: Hp:4,0:ox%-12,oy%:ox%+12,oy%:ox%,oy%-12:ox%,oy%+12:ms%=ms%1: ݤ_CHAR:A$:P%=:*FX4 0" character: ";:""A$:"FX4,2":A$=1:=A$ :A$<32A$>255:" Invalid code"P%,-1);:ddB =A$ 2bot;"Enter onto";:ch=_CHAR:bot;clr'clr; ;23,ch:A=07:Q=0:B=07:Q=Q*2:xo%+B*4,yo%-A*4):Q=Q+1  1:Q::-4*wd%+ch 32,ch 32-1)c(ch);:tj@ 0,20)(80)0,19)"*";  N"FX4":oflg%=::""A$: A$:":";:A$=:13+"LlSs*",A$):A$="*":127,42 *6A$<>"*":127:A$="L"A$="l":dJC A$=13:Dd@ 4F$=fn("save"):F$="":Dd@ >5"Start at";:start=_CHAR:" End at";:end=_CHAR H@"Binary or VDU format? ";:A=upDn("BV")::ar$="":A:ar$="Y" R!os%=32:F$,".")=0:F$=F$+"." \:lp=0:B%-1:A%=&A:-B%-200<10*(end-start)os%=32:tDC f9C%=B%:lp=start end:ar$<>"":?C%=23:C%?1=lp:C%=C%+2 p;lp,9,13:?X%=lp:&FFF1:!C%=X%!1:C%!4=X%!5:C%=C%+8::11 za"SAVE "+F$+" "+~B%+" "+~C%+" "+~(+65535*(ar$=""))+" FFFFF"+~(13+6*(ar$<>""))+"00":Dd@ 6ch=(F$):bot;:ch=0:"Can't open file":A=:Dd@ pos%<>32:#ch:ch=0:"SAVE "+F$+" 0+"+~(10*(end-start+1))+" FFFFFFFF FFFFF"+~(13+6*(ar$<>""))+"00":ch=(F$) 5lp=start end:lp,9,13:ar$<>"":#ch,23:#ch,lp *?X%=lp:&FFF1:lp1=18:#ch,X%?lp1:: #ch:ch=0:Dd@ 5ݤfn(A$):A%,Y%,E%:fs=29:<&FFFF:fs=(&FFDA)&FF 5oflg%=:"FX4":"Filename to ";A$;:": "A$:=A$ F$=fn("load"):F$="":Dd@ Ifs<4:rx%=&700:ch=0:dhC ch=(F$):ch=0:os%=32:F$=F$+".":ch=(F$) uch:rx%=#ch:((rx%/10)<>(rx%10)(rx%/8)<>(rx%8))rx%>&FFFrx%<8:#ch:ch=0:"Not a proper font file";:A=:Dd@ Gra%=0:in%=0:rb%=0:rc%=0:B%-1:B%=B%+80:-B%-200<&1000os%=32:TPD [#ch:ch=0:"LOAD "+F$+" "+~B%:?B%=23(rx%/10)=(rx%10):ra%=B%B%+rx%-1:?ra%::Dd@ "Start at";:ra%=_CHAR [:23,ra%:rb%=07:B%?rb%::ra%,9,13:B%=B%+8:rx%=rx%-8:ra%=ra%+1:ra%>255rx%<1:Dd@ &ch=0:"File not found";:A=:Dd@ ]ra%=#ch:ra%=23(#ch/10)=(#ch 10):ra%=#ch:in%= in%=:"Start at";:ra%=_CHAR:clr $>#ch=0::rb%=#ch:(in%rb%<>23)4+#ch>#ch:ra%=256:DLD .in%:rch%=#ch 8!23:in%rch%,#ch ra%,rb% BHrc%=0::#ch:rc%=rc%+1:rc%=7#ch>=#ch:in%rch%,9,13 ra%,9,13 L1ra%=ra%+1:ra%>255#ch>=#ch:#ch:ch=0:Dd@ V-_SCROLL(A):X,Y,xs,xe,xst,ys,ye,yst,tmp `/ A+1 DtD,DjD,t\D,tfD:_BIGGER:0,7: jxs=7:xe=1:xst=-1:D~D txs=0:xe=6:xst=1 ~2Y=07:tmp=xo%+xs*4,yo%-Y*4):X=xs xe xst 40,xo%+(X+xst)*4,yo%-Y*4):69,xo%+X*4,yo%-Y*4: )0,tmp:69,xo%+(xe+xst)*4,yo%-Y*4:: ys=7:ye=1:yst=-1:tpD ys=0:ye=6:yst=1 2X=07:tmp=xo%+X*4,yo%-ys*4):Y=ys ye yst 40,xo%+X*4,yo%-(Y+yst)*4):69,xo%+X*4,yo%-Y*4: )0,tmp:69,xo%+X*4,yo%-(ye+yst)*4:: msKlk:mL%+mM%+mR%=0: mx%<32:A$=140: mx%>288:A$=141: my%<512:A$=142: my%>767:A$=143: mL%:A$="1"  mM%:A$=9 mR%:A$="0" *x%=mx%32-1:y%=23-my%32:31,x%+1,y%+8 (mM%:mse:mM% 2 <msChr:mL%+mR%=0: F4ch=(mx%32+28+32*(31-my%32)):mL%:A$="C"A$=13 P Z,klik2:x0%=mx%32:x0%>26:x0%=27x0%=18 d831,x0%,31-my%32:A$=byte(135,0,0):31,x%+1,y%+8: n3mse:>&FFFFF:mx%,my%,A% mx%=(7):my%=(8) x0ms%=mx%<&FFF:ms%:mL%=-10:mM%=-11:mR%=-12  ?inv:4,0:X=07:Y=07:69,xo%+X*4,yo%-Y*4:::_BIGGER: tip:X=07:Y=03: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: mir:Y=07:X=03: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: DrefD1:bot"Copy Topleft or Bottomright? ";:A=upDn("TB"):clr uY=07: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: DrefD2:bot"Copy Topright or Bottomleft? ";:A=upDn("TB"):clr iX=07: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: JݤupDn(B$):x0%=*32::mse:mL%+mM%+mR%=0::wait:A$>"`":A$=(A$-32) mR%B$="NY":A$="N" BmL%my%<292mx%"":A$;:=B$,A$)=2 rotP:rotD2:mir: rotM:rotD1:tip: "vrotD1:X=07: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::: ,vrotD2:Y=07:X=Y 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::: 6;refV:bot"Copy Top or Bottom? ";:A=upDn("TB"):clr @nX=07:Y=03: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 J::_BIGGER: T;refH:bot"Copy Left or Right? ";:A=upDn("LR"):clr ^nY=07:X=03: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 h::_BIGGER: rGquit:bot"Quit program? ";:A=upDn("NY"):clr:A:"FX4":end |(end:23;10,103;0;0;0:ok%=:ok%= ok%:>&8000:*QUIT : .chk:C%=32:bot;"Checking character set" -4*wd%,0);::C%<>127:B%=byte(135,0,0):C%<>B%:bot'" Character",wd%)" "C%" (";C%;") decoded as "B%" (";B%;")";:B%=(50):C%32-4*wd%,C%32-1); $C%=C%+1:9:(C%31)=0:wd%:'4;  C%>255:bot;(62-14*wd%): 1inp:0,23+3*(ht%<25));(80);13;11;11;: ݤbot:1,22-(ht%>23));:="" clr:clr;: -ݤclr:13;(31-7*wd%);31-7*wd%,8);:="" *ݤbyte(A%,X%,Y%):=((&FFF4)&FF00)256 Dreset(C%):A%=byte(25,0,0):byte(20,byte(182,0,255),0)<>32: SC%:A%=10:B%=32255:?X%=B%:&FFF1:23,B%:C%=18:X%?C%(2+(B%=95)-B%128)::