8-Bit Software Online Conversion

Make Printer Driver lp - Listing

10REM > MakeLP 20MODE&87:PROCG(&D00):MODE&84:G$="1.1 3":PROCM:DIMH%&300:ONERRORIFFNJPRINT" at line ";ERL:END 30*FX4 40REPEATUNTILFNG:*FX4 50END 60DEFPROCM:j%=FALSE:g%=FALSE:h%=FALSE :M%=FALSE:G%=FALSE:c$="Code for ":Q%=66: R%=60:b%=TRUE:`%=FALSE:T%=TRUE:N%=TRUE:I %=TRUE:D%=TRUE:E%=TRUE:J%=TRUE:L%=TRUE:e %=0:M=&FFEE:YA=&FFE3:N=&FFCE:b=&FFD7:DIM A$(101):FORl%=32TO101:A$(l%)=" ":NEXT :FORl%=32TO101:READA$(l%):IFA$(l%)<>""A$ (l%)=EVALA$(l%)ELSEA$(l%)="" 70NEXT 80DATA CHR$27+"@",,CHR$27+"E",,CHR$27 +"G",,,,,CHR$27+"4",,,,,,,,,,CHR$27+"S0" ,,,,CHR$27+"W1",,CHR$27+"S1",,,,,, 90DATA 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",,,,,, 100DATA CHR$27+"-0",CHR$27+"-1",,,,,,, ,,,,,,, 110ENDPROC 120DEFFNB(A$):LOCALl%,B$:B$="":IFA$="+ +":="Set bit 7" 130IFA$="--":="Clear bit 7" 140IFA$=""="" 150FORl%=1TOLENA$:m$=MID$(A$,l%,1):IFl %<>1 B$=B$+"," 160IFASCm$<32ORASCm$>126 B$=B$+STR$ASC m$ELSEIF(m$>="0"ANDm$<="9")ORm$=","B$=B$ +CHR$34+m$+CHR$34ELSEB$=B$+m$ 170NEXT:=B$ 180DEFFNG:CLS:PRINTSPC4"Printer Driver Generator ";G$'SPC4;STRING$(29,"="):PRI NT'SPC9"(C)1992 J.G.Harston":PRINT''SPC5 "1 : General settings":PRINT'SPC5"2 : Le tter extensions":PRINT'SPC5"3 : Save set tings":PRINT'SPC5"4 : Load settings":PRI NT'SPC5"5 : (Create View Driver)":PRINT' SPC5"6 : Create lp Program" 190PRINT''SPC5"0 : Exit"'':PRINTSPC5"P ress a key: ";:REPEATREPEATA$=GET$:UNTIL INSTR("0123456*"+CHR$13+CHR$0,A$):IFA$<> "*"PRINTA$ 200IFA$="*"INPUTLINE"*"A$:OSCLIA$:A$=" ":PRINT":"; 210IFA$=CHR$0PRINT"Saving...";:OSCLI"S AVE "+MID$($(PAGE+4),INSTR($(PAGE+4),">" )+1)+" "+STR$÷PAGE+" "+STR$÷TOP+" FFFF00 00 FFFFFB00" 220IFA$="1"PROCC 230IFA$="2"PROCH 240IFA$="3"PROCN 250IFA$="4"PROCO 260IFA$="5"PROCI 270IFA$="6"PROCJ 280UNTILA$<>"":=A$="0" 290DEFFNJ:IFERR=17ANDINKEY-1=0=0 300LOCALA$:REPORT:A$=GET$:=INKEY-1 310DEFPROCC:CLS:PRINTSPC10"General Par ameters"':PRINT"Auto linefeed? "FND(b%)' '"Paper length: ";Q%''"Text page length: ";R%:PRINT'"FF at end of page? "FND(`%) ''"LF at end of page? "FND(T%):PRINT'"FF after last page? "FND(N%):PRINT'"Conver t CHR$96 (£) to pound? "FND(J%) 320PRINT"Convert CHR$163 ("CHR$163") t o pound? "FND(L%):PRINTc$"pound: "FNB(A$ (64)):PRINT'"Highlight 1:":PRINTc$"under line on: ";FNB(A$(97)):PRINTc$"underlin e off: ";FNB(A$(96)):PRINT'"Use extended highlights? ";FND(I%)':IFI%PRINT' 330IFNOTI%PRINT"Highlight 2:"'c$"bold on: ";FNB(A$(98))'c$"bold off: ";FNB(A$ (99)) 340PRINT'':PRINTSTRING$(40,"=")"Printe r reset with code '@' (see page 2)Pound also defined with code '£'";:REPEATPRINT TAB(13,2);:b%=FNC(b%):INPUTTAB(18,4);x%: PROCx(18,4):IFx%>10 Q%=x%:PRINTTAB(14,4) ;x%;" " 350INPUTTAB(22,6);x%:PROCx(22,6):IFx%> 10 R%=x%:PRINTTAB(18,6);x%;" " 360PRINTTAB(17,8);:`%=FNC(`%):IF`%T%=F ALSE:PRINTTAB(19,10);"No " 370IFNOT`%PRINTTAB(17,10);:T%=FNC(T%) 380PRINTTAB(18,12);:IF`%+T%=0 N%=0:PRI NT"? No "ELSEN%=FNC(N%) 390PRINTTAB(27,14);:J%=FNC(J%):PRINTTA B(28,15);:L%=FNC(L%):PRINTTAB(0,17)"Code : ";:INPUTLINE""x$:PROCx(0,17):IFx$<>""A $(64)=FNA(x$):PRINTTAB(16,16)FNB(A$(64)) ;:PROCx(POS,VPOS):IFx$=" "A$(64)="" 400PRINTTAB(0,21)c$"on: ";:INPUTLINE"" x$:PROCx(0,21):IFx$<>""A$(97)=FNA(x$):PR INTTAB(24,19)FNB(A$(97));:PROCx(POS,VPOS ):IFx$=" "A$(97)="" 410PRINTTAB(0,21)c$"off: ";:INPUTLINE" "x$:PROCx(0,21):IFx$<>""A$(96)=FNA(x$):P RINTTAB(24,20)FNB(A$(96));:PROCx(POS,VPO S):IFx$=" "A$(96)="" 420PRINTTAB(23,22);:I%=FNC(I%):PRINT:I FI%PROCx(POS,VPOS):PROCx(0,VPOS+1):PROCx (0,VPOS+1)ELSEPRINT"Highlight 2:"'c$"bol d on: ";FNB(A$(98))'c$"bold off: ";FNB( A$(99)) 430IFNOTI%PRINTTAB(0,27)c$"on: ";:INPU TLINE""x$:PROCx(0,27):IFx$<>""A$(98)=FNA (x$):PRINTTAB(19,25)FNB(A$(98));:PROCx(P OS,VPOS):IFx$=" "A$(98)="" 440IFNOTI%PRINTTAB(0,27)c$"off: ";:INP UTLINE""x$:PROCx(0,27):IFx$<>""A$(99)=FN A(x$):PRINTTAB(19,26)FNB(A$(99));:PROCx( POS,VPOS):IFx$=" "A$(99)="" 450PRINTTAB(0,28)"Ok";:i%=FNC(FALSE):P ROCx(0,28):UNTILi%:ENDPROC 460DEFPROCx(X%,Y%):PRINTTAB(X%,Y%);SPC (39-POS);:ENDPROC 470DEFFND(F%):IFF%:="Yes"ELSE="No " 480DEFFNH(l%):IFl%=D%:="Set bit 7" 490IFl%<>E%:=FNB(A$(l%))ELSE="Clear bi t 7" 500DEFPROCD(A%):CLS:FORl%=0TO31:PRINTT AB(0,l%);CHR$(l%+A%+32);" ";FNH(l%+A%);T AB(20,l%);CHR$(l%+A%+64);" ";FNH(l%+A%+3 2);:NEXT:ENDPROC 510DEFPROCH:t%=32:PROCD(t%):*FX4,1 520l%=0:REPEATREPEATPRINTTAB(1+20*((l% DIV32)AND1),l%MOD32);":";TAB(20,31);CHR$ (l%+t%+32);" ";LEFT$(FNB(A$(l%+t%)),16); SPC(38-POS);TAB(20,31);:K%=GET:m%=l%:IFK %=136 m%=l%-32 530IFK%=137 m%=l%+32 540IFK%=138 m%=l%+1 550IFK%=139 m%=l%-1 560IFK%=135 t%=t%EOR32:PROCD(t%) 570IFm%<0ORm%>62 m%=l% 580IFm%<>l%PRINTTAB(1+20*((l%DIV32)AND 1),l%MOD32);" ";:l%=m% 590UNTILK%<127ANDK%>31:PROCT:UNTIL0:EN DPROC 600DEFPROCT:PRINTTAB(22,31);SPC16;TAB( 22,31);:C$=FNA(FNE(CHR$K%,17)):IFLEFT$(C $,1)=" "C$="" 610IFC$=""ANDD%=l%D%=TRUE 620IFC$=""ANDE%=l%E%=TRUE 630IFC$="++"ANDD%>TRUEIF((D%-t%)AND&FF C0)=0PRINTTAB(2+20*((D%-t%)DIV32),D%AND3 1);SPC18; 640IFC$="--"ANDE%>TRUEIF((E%-t%)AND&FF C0)=0PRINTTAB(2+20*((E%-t%)DIV32),E%AND3 1);SPC18; 650IFC$="++"C$="":D%=(l%+t%)OR(l%+t%<3 2) 660IFC$="--"C$="":E%=(l%+t%)OR(l%+t%<3 2) 670A$(l%+t%)=C$:PRINTTAB(2+20*((l%DIV3 2)AND1),l%MOD32);FNH(l%+t%);SPC(20-(POSM OD20));:UNTIL0 680DEFFNA(A$):LOCALl%,B$:l%=1:REPEATm$ =MID$(A$,l%,1):IF(m$<"0"ORm$>"9")ANDm$<> CHR$34 B$=B$+m$:l%=l%+1 690IFm$=CHR$34ANDMID$(A$,l%+2,1)=CHR$3 4 B$=B$+MID$(A$,l%+1,1):l%=l%+3 700IF(m$>="0"ANDm$<="9")B$=B$+CHR$VALM ID$(A$,l%):l%=l%+INSTR(MID$(A$,l%)+","," ,")-1 710IFMID$(A$,l%,1)=","l%=l%+1 720UNTILl%>LENA$:=B$ 730DEFFNE(A$,£%):LOCALB%,l%:$H%=A$:l%= LENA$:PRINTA$;:REPEATB%=GET:IFB%=127ANDl %<>0VDU127:l%=l%-1 740IFB%>31ANDB%<127ANDl%<£%VDUB%:H%?l% =B%:l%=l%+1 750UNTILB%=13:H%?l%=13:=$H% 760DEFPROCI:INPUT"Filename to save by: "F$:IFF$=""F$="drv" 770PRINT'"Assembling View Printer Driv er";:FORP=0TO1:C%=P*3+4:P%=&400:O%=H%:O% =H%:[OPTC%:JMPv:JMPQA:JMPIA:RTS:.RA:BRK: .£A:BRK:RTS:]:PROCB(C%):[OPTC%:.QA:LDA#2 :JMP&FFEE:.IA:LDA#3:JMP&FFEE:.v:]:IFI%[O PTC%:BITRA:BMIw:] 780[OPTC%:CMP#&81:BEQx:CMP#&80:BEQy:CM P#13:BEQj:]:IFJ%[OPTC%:CMP#96:BEQq:] 790IFL%[OPTC%:CMP#163:BEQr:] 800[OPTC%:JMP&FFEE:.w:.q:.r:.y:.x:.j:R TS:]NEXT:OSCLI"*SAVE "+F$+" "+STR$÷H%+" "+STR$÷O%+" 400 400":PRINT"...":IFGET 810ENDPROC 820DEFFNF:G%=0:M%=TRUE:l%=0:REPEATIFA$ (l%)<>""FORm%=1TOLENA$(l%):G%=G%OR(ASCMI D$(A$(l%),m%,1)>127):NEXT 830l%=l%+1:UNTILl%=102ORG%:IFG%:=FNI 840l%=0:REPEATIFA$(l%)<>""ANDLEFT$(A$( l%),1)<>CHR$27 M%=0 850l%=l%+1:UNTILl%=102ORM%=0:=0 860DEFFNI:M%=0:f%=0:l%=0:REPEATIFA$(l% )<>""FORm%=1TOLENA$(l%):PROCQ(ASCMID$(A$ (l%),m%,1)):NEXT 870l%=l%+1:UNTILl%=102OR(M%ANDf%):IFM% ANDf%PRINT"Can't build table with both 0 and 255";:f%=GET:=TRUEELSE=0 880DEFPROCQ(A%):IFA%=0 M%=TRUE:ENDPROC 890IFA%=&FF f%=TRUE 900ENDPROC 910DEFPROCB(C%):U%=(M%AND128)+(b%AND64 )+(`%AND32)+(T%AND16)+(I%AND8)+(J%AND4)+ (L%AND2)+(N%AND1):W%=(G%AND128)+(e%AND64 ):[OPTC%:EQUBU%:EQUB(Q%AND31)+(((E%-32)* 4)AND&E0):EQUB(R%AND31)+(((E%-32)*32)AND &E0):EQUBW%+((D%-32)AND(D%>0ANDE%>0)):.F :]:FORl%=0TO101:IFA$(l%)<>""PROCU 920NEXT:[OPTC%:EQUB255:]:ENDPROC 930DEFPROCU:[OPTC%:EQUBl%+1:]:IFG%[OPT C%:EQUSA$(l%):EQUBM%AND&FF:]:ENDPROC 940IFM%[OPTC%:EQUSMID$(A$(l%),2,LENA$( l%)-2):EQUB128+ASCRIGHT$(A$(l%),1):]:END PROC 950[OPTC%:EQUSLEFT$(A$(l%),LENA$(l%)-1 ):EQUB128+ASCRIGHT$(A$(l%),1):]:ENDPROC 960DEFPROCJ:PRINT"Create 'lp' program" :IFFNFENDPROC 970INPUT"Filename to save by: "F$:IFF$ =""F$="lp" 980D$=F$:IFINSTR(D$,".")REPEATD$=MID$( D$,INSTR(D$,".")+1):UNTILINSTR(D$,".")=0 990PRINT"Assembling ";F$:Z%=&FFFF0900: B=0:REPEATO%=H%:P%=Z%:z=B:PROCA(4):IFB>& B00 Z%=&FFFF08C0 1000UNTILB=z:O%=H%:P%=Z%:PROCA(6):PRINT "Saving ";F$'"Start: &";÷Z%AND&FFFF;" E nd: &";÷B:OSCLI"SAVE "+F$+" "+STR$÷H%+" "+STR$÷O%+" "+STR$÷(d%OR&FFFF0000)+" "+S TR$÷Z%:ENDPROC 1010DEFPROCA(C%):PROCB(C%):PROCK(C%):PR OCE(C%):PROCL(C%):PROCF(C%):PROCP(C%):EN DPROC 1020DEFPROCK(C%):[OPTC%:.O:LDA#1:STAQ:R TS:.AA:TYA:PHA:JSRO:LDA#124:JSR&FFF4:LDA #15:JSR&FFF4:PLA:TAY:.OA:]:IFN%[OPTC%:JS Rn:] 1030[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:] :IFB<&B00 [OPTC%:JMPN:] 1040IFB>&AFF [OPTC%:JSRN:LDA#0:LDX#1:JS R&FFF4:CPX#3:BCSSA:LDA#18:JMP&FFF4:.SA:R TS:] 1050ENDPROC 1060DEFPROCE(C%):[OPTC%:.R:JSRJA:LDAL:C MP#R%:BCCD:JSRn:.D:LDX#1:]:ENDPROC 1070DEFPROCL(C%):[OPTC%:.E:BIT&FF:BMIAA :JSRb:BCSOA:]:ENDPROC 1080DEFPROCF(C%):[OPTC%:CMP#32:BCCTA:]: IF(D%ORE%)>0 [OPTC%:ORAbit7:] 1090IFJ%[OPTC%:CMP#96:BEQS:] 1100IFL%[OPTC%:CMP#163:BEQS:] 1110[OPTC%:.PA:INX:JSRC:JMPE:.TA:CMP#13 :BEQR:CMP#10:BEQR:CMP#9:BEQZA:CMP#12:BEQ CA:CMP#28:BEQc:CMP#29:]:IFI%[OPTC%:BEQf: ]ELSE[OPTC%:BEQUA:] 1120[OPTC%:BNEE:]:IFJ%ORL%[OPTC%:.S:LDA #64:BNEI:] 1130[OPTC%:.CA:JSRn:JMPD:]:IFI%[OPTC%:. VA:JMPOA:.f:JSRb:BCSVA:SBC#31:BMIE:CMP#9 5:BCSE:] 1140IF(E%ORD%)>0:[OPTC%:CMP#D%:BEQWA:CM P#E%:BNEI:LDA#0:.KA:STAXA:JMPE:.WA:LDA#1 28:BMIKA:] 1150[OPTC%:.I:JSRG:JMPE:.c:LDAH:EOR#1:S TAH:AND#1:ORA#96:.DA:JSRG:JMPE:]:IFNOTI% [OPTC%:.UA:LDAH:EOR#2:STAH:LSRA:AND#1:OR A#98:BNEDA:] 1160[OPTC%:.ZA:TXA:AND#7:TAX:.EA:LDA#32 :JSRC:INX:TXA:CMP#8:BNEEA:JMPE:.LA:LDA#2 7:BNEU:.C:.U:PHA:LDA#1:JSRk:PLA:.k:JMPM: ]:IF`%[OPTC%:.n:LDA#12:JSRU:] 1170IFT%[OPTC%:.FA:JSRa:.n:LDAL:CMP#Q%: BCCFA:] 1180[OPTC%:INCo:.£:LDA#0:STAL:RTS:.JA:B ITH:BVCa:JSRa:.a:]:IFb%[OPTC%:LDA#10:JSR C:] 1190[OPTC%:INCL:LDA#13:JMPC:.G:STXJ:CLC :ADC#1:LDX#0:.GA:CMPF,X:BEQl:BCCK:PHA:.T :INX:LDAF,X:]:IFG%=0 [OPTC%:BPLT:] 1200IFG%ANDM%[OPTC%:CMP#&FF:] 1210IFG%[OPTC%:BNET:] 1220[OPTC%:PLA:INX:BNEGA:.l:]:IFG%=0AND M%[OPTC%:JSRLA:] 1230[OPTC%:.V:INX:LDAF,X:]:IFG%ANDM%[OP TC%:CMP#&FF:] 1240IFG%[OPTC%:BEQK:] 1250IFG%=0 [OPTC%:AND#127:] 1260[OPTC%:JSRC:]:IFG%=0 [OPTC%:LDAF,X: BPLV:]ELSE[OPTC%:JMPV:] 1270[OPTC%:.K:LDXJ:RTS:]:ENDPROC 1280DEFPROCP(C%):o%=O%:p%=P%:[OPTC%:.Q: BRK:.W:BRK:.L:BRK:.o:BRK:.H:BRK:.J:]:IF( E%ORD%)>0:[OPTC%:.XA:BRK:] 1290O%=o%:P%=p%:[OPTC%:.d%:LDX#&A8:LDY# 0:JSRO:STYW:JSR&FFDA:LDA(&A8),Y:CMP#13:B EQp:LDX#0:CMP#ASC"+":BNEs:LDX#&40:JSRZ:B EQp:.s:STXH:TYA:PHA:.MA:INY:LDA(&A8),Y:C MP#ASC"!":BCSMA:JSRg:BEQh:JSRi:STAQ:JSRg :BEQh:JSRi:STAW:.h:PLA:CLC:ADC&A8:TAX 1300LDA#0:ADC&A9:TAY:LDA#&40:JSRN:TAY:B EQm:LDA#2:JSRM:LDA#32:JSRG:JMP`:.p:.`A:B RK:EQUB220:EQUS"Syntax: "+D$+" (+)<afsp> (<num>)":.m:BRK:EQUB214:EQUS"Not found" :BRK:.i:LDA#0:.NA:STA&AA:LDA(&A8),Y:CMP# ASC"0":BCCHA:AND#15:PHA 1310LDA&AA:ASLA:ASLA:ADC&AA:ASLA:STA&AA :PLA:ADC&AA:INY:BNENA:.HA:LDA&AA:RTS:.Z: INY:.g:LDA(&A8),Y:CMP#ASC" ":BEQZ:CMP#13 :RTS:EQUS"V"+G$:BRK:.B:]:ENDPROC 1320DEFPROCN:IFFNFENDPROC 1330PRINT'"Save settings":INPUT"Filenam e: "F$:P%=H%:PROCB(0):OSCLI"SAVE "+F$+" "+STR$÷H%+" "+STR$÷P%+" 0 0":ENDPROC 1340DEFPROCO:PRINT'"Load settings":INPU T"Filename: "F$:OSCLI"LOAD "+F$+" "+STR$ ÷H%:V%=H%:IF?V%=&4CANDV%?3=&4CANDV%?6=&4 C V%=V%+13 1350U%=?V%:Q%=V%?1:R%=V%?2:W%=V%?3:a%=V %?4:E%=8*(Q%DIV32)+R%DIV32:Q%=48+(Q%AND3 1EOR16):R%=48+(R%AND31EOR16):D%=W%AND31: IFD%=0 D%=TRUE:E%=TRUEELSED%=D%+32:E%=E% +32 1360M%=(U%AND128)<>0:b%=(U%AND64)<>0:`% =(U%AND32)<>0:T%=(U%AND16)<>0:I%=(U%AND8 )<>0:J%=(U%AND4)<>0:L%=(U%AND2)<>0:N%=(U %AND1)<>0:G%=(W%AND128)<>0:e%=(W%AND64)< >0:IFM%E$=CHR$27ELSEE$="" 1370IFa%=0PROCR:ENDPROC 1380IFa%>80PRINT"Unknown format";:a%=GE T:ENDPROC 1390x%=1:IFa%=1 x%=-31 1400m%=V%+4:IFG%PROCS:ENDPROC 1410FORl%=0TO101:A$(l%)="":IF?m%=l%+x%: REPEATm%=m%+1:A$(l%)=A$(l%)+CHR$(?m%AND1 27):UNTIL?m%>127:m%=m%+1:A$(l%)=E$+A$(l% ) 1420NEXT:ENDPROC 1430DEFPROCS:FORl%=0TO101:A$(l%)="":IF? m%=l%+1:REPEATm%=m%+1:A$(l%)=A$(l%)+CHR$ ?m%:UNTIL?m%=(M%AND&FF):m%=m%+1:A$(l%)=L EFT$(A$(l%),LENA%(l%)-1) 1440NEXT:ENDPROC 1450DEFPROCR:m%=V%+84:FORl%=4TO73:£%=?( V%+l%+1)-V%?l%:IF£%>0 A$(l%+28)=E$:FORn% =1TO£%:A$(l%+28)=A$(l%+28)+FNK(?m%):m%=m %+1:NEXTELSEA$(l%+28)="" 1460NEXT:E%=TRUE:D%=TRUE:ENDPROC 1470DEFFNK(c%):IFG%ANDc%>127:=CHR$27+CH R$(c%AND127)ELSE=CHR$c% 1480DEFFNC(F%):LOCALK%:PRINT"? (";CHR$( 78-F%*11);")";:REPEATK%=GET:IFK%>95 K%=K %AND&DF 1490UNTILK%=13ORK%=89ORK%=78:IFK%=13 K% =F%ELSEK%=K%=89 1500PRINTSTRING$(3,CHR$127);:IFK%PRINT" Yes"ELSEPRINT"No " 1510=K% 1520DEFPROCG(S%):A%=133:X%=&84:A%=(USR& FFF4AND&FFFF00)DIV256:IFA%-TOP>S%ENDPROC 1530B%=(PAGE+(A%-TOP-S%))AND&FF00:PRINT "Relocating to &";÷B%:*K.0 RUN|M 1540*FX225,1 1550*FX138,0,128 1560FORA%=0TOTOP-PAGE+4STEP4:B%!A%=A%!P AGE:NEXT:PAGE=B%:END