8-Bit Software Online Conversion

Cassette Inlay Printer - Listing

0REM" 10REM"  Written By         1st June '89  20MODE7 30VDU23;8202;0;0;0; 40*FX4,2 50*FX200,3 60DIM LineA$(13),LineB$(13) 70MTitleA$=STRING$(32,"."):TitleA$=ST RING$(20,"."):FORF=1TO13:LineA$(F)=STRIN G$(22,"."):NEXT 80MTitleB$=STRING$(32,"."):TitleB$=ST RING$(20,"."):FORF=1TO13:LineB$(F)=STRIN G$(22,"."):NEXT 90Blank$=STRING$(10," ") 100PROCsurrounds 110PROCins 120VDU15 130CLS:PROCscreen(65) 140MTitleA$=FNinput(1,1,32) 150TitleA$=FNinput(11,3,20) 160FORF=1TO13:LineA$(F)=FNinput(11,F+4 ,22):NEXT 170PRINTTAB(0,19)" Do you want to alte r anything ? ";:REPEAT:G=GET:UNTILG=89OR G=121ORG=78ORG=110:PRINTCHR$G;:IFG=89ORG =121PROCchange(65) 180CLS:PROCscreen(66) 190MTitleB$=FNinput(1,1,32) 200TitleB$=FNinput(11,3,20) 210FORF=1TO13:LineB$(F)=FNinput(11,F+4 ,22):NEXT 220PRINTTAB(0,19)" Do you want to alte r anything ? ";:REPEAT:G=GET:UNTILG=89OR G=121ORG=78ORG=110:PRINTCHR$G;:IFG=89ORG =121PROCchange(66) 230CLS:PRINT" Is everything ok ? ";:RE PEAT:G=GET:UNTILG=89ORG=121ORG=78ORG=110 :PRINTCHR$G:IFG=78ORG=110PROCchange(1) 240CLS:PRINT" Please turn printer on a nd then press any key";:D=GET 250MODE3:VDU23;8202;0;0;0;:VDU2 260VDU1,27,1,77 270PRINTBlank$;STRING$(49,"-") 280PRINTBlank$;"|A ";TitleA$;" |B ";Ti tleB$;" |" 290PRINTBlank$;"|";STRING$(23,"-");"|" ;STRING$(23,"-");"|" 300FORF=4TO16:PRINTBlank$;"| ";LineA$( F-3);"| ";LineB$(F-3);"|":NEXT 310PRINTBlank$;"|";STRING$(47,"-");"|" 320PRINTBlank$;"| A ";MTitleA$;ST RING$(7," ");"|" 330PRINTBlank$;"| B ";MTitleB$;ST RING$(7," ");"|" 340PRINTBlank$;"|";STRING$(47,"-");"|" 350PRINTBlank$;"|";STRING$(33," ");"Wr itten by |" 360PRINTBlank$;"|";STRING$(33," ");"R. Bathgate 89 |" 370PRINTBlank$;STRING$(49,"-") 380VDU3 390PRINT''" Press any key to co ntinue";:D=GET:MODE7:VDU23;8202;0;0;0;:P ROCsurrounds:PRINT" Do you want a second copy ? ";:REPEAT:G=GET:UNTILG=89ORG=121 ORG=78ORG=110:PRINTCHR$G:IFG=89ORG=121GO TO230 400PRINT'" Again ? ";:REPEAT:G=GET:UNT ILG=89ORG=121ORG=78ORG=110:PRINTCHR$G:IF G=89ORG=121RUN ELSE CALL!-4 410DEFPROCsurrounds 420FORF=0TO1:PRINTTAB(0,F);" 430PRINTTAB(0,2);" STRING "t" 440PRINTTAB(12,2);" R.Bathgate  450FORF=3TO23:PRINTTAB(0,F);" ";TAB( 37,F);" NEXT 460PRINTTAB(0,24);" STRING ;">"; 470VDU28,3,23,36,4 480ENDPROC 490DEFPROCscreen(s%) 500PRINTTAB(0,0);" Side: ";CHR$s%'" "; 510PRINTTAB(0,2);" STRING 520PRINTTAB(0,3);" Title : "; 530PRINTTAB(0,4);" STRING 540FORF=5TO17:PRINTTAB(0,F);" Line ";F -4;TAB(9,F);": ";:NEXT 550PRINTTAB(0,18);" STRING 560IFs%=65PRINTTAB(1,1);MTitleA$;TAB(1 1,3);TitleA$:FORF=1TO13:PRINTTAB(11,F+4) ;LineA$(F):NEXT 570IFs%=66PRINTTAB(1,1);MTitleB$;TAB(1 1,3);TitleB$:FORF=1TO13:PRINTTAB(11,F+4) ;LineB$(F):NEXT 580ENDPROC 590DEFFNinput(x%,y%,l%) 600work$="" 610PRINTTAB(0,y%);">"; 620FORL=1TOl% 630G=GET:IFG=127ANDLEN(work$)>0THENwor k$=LEFT$(work$,LEN(work$)-1):PRINTTAB(x% ,y%);CHR$127;".":x%=x%-1:L=L-1:GOTO630 640IFG=127ANDLEN(work$)=0GOTO630 650IFG=13L=l%:IFG=13ANDLEN(work$)<l%TH ENPRINTTAB(x%,y%);STRING$(l%-LEN(work$), " "):work$=work$+STRING$(l%-LEN(work$)," "):GOTO690 660work$=work$+CHR$G 670PRINTTAB(x%,y%);CHR$G 680x%=x%+1 690NEXT 700IFy%<>1PRINTTAB(0,y%)" ";ELSEPRINTT AB(0,y%)" "; 710=work$ 720DEFPROCchange(s%) 730IFs%=1 ab%=1:CLS:PRINT'" Which side (A/B) ? ";:REPEAT:s%=GET:UNTILs%=65ORs% =66:PRINTCHR$s%:ELSE ab%=s% 740CLS 750PROCscreen(s%) 760PRINTTAB(0,19);" Move cursor, then press Space"; 770PRINTTAB(0,1);">":x=1:y=1 780*FX4,1 790REPEAT:G=GET:UNTILG=138ORG=139ORG=3 2:IFG=32GOTO920 800IFG=138 y=y+1 810IFG=139 y=y-1 820IFy<1 y=17:x=1 830IFy>17 y=1:x=17 840IFy=2ANDy>x y=3:x=1 850IFy=4ANDy<x y=3:x=5 860IFy=4ANDy>x y=5:x=3 870IFy=2ANDy<x y=1:x=3 880PRINTTAB(0,y);">" 890IFx<>1PRINTTAB(0,x);" " ELSEPRINTTA B(0,1);" " 900x=y 910GOTO790 920*FX4,2 930PRINTTAB(0,19);" Type in new line "; 940IFy=1ANDs%=65 PRINTTAB(1,1);STRING$ (32,"."):MTitleA$=FNinput(1,1,32):ELSEIF y=1ANDs%=66 PRINTTAB(1,1);STRING$(32,"." ):MTitleB$=FNinput(1,1,32) 950IFy=3ANDs%=65 PRINTTAB(11,3);STRING $(20,"."):TitleA$=FNinput(11,3,20):ELSEI Fy=3ANDs%=66 PRINTTAB(11,3);STRING$(20," ."):TitleB$=FNinput(11,3,20) 960IFy>=5ANDy<=17ANDs%=65 PRINTTAB(11, y);STRING$(22,"."):LineA$(y-4)=FNinput(1 1,y,22):ELSE IFy>=5ANDy<=17ANDs%=66 PRIN TTAB(11,y);STRING$(22,"."):LineB$(y-4)=F Ninput(11,y,22) 970PRINTTAB(0,19)" Do you want to alte r any more ? ";:REPEAT:G=GET:UNTILG=89OR G=121ORG=78ORG=110:PRINTCHR$G:IFG=89ORG= 121s%=ab%:GOTO730ELSEENDPROC 980DEFPROCins 990VDU14 1000PRINT''" Do you require instruction s ? ";:REPEAT:G=GET:UNTILG=89ORG=121ORG= 78ORG=110:PRINTCHR$G:IFG=78ORG=110ENDPRO C 1010CLS:PRINT'" This program will work with any 'Epson compatible' printer, o r alternatively any printer that is c apable or printing 12 chars per inch by modifying line 300 to the appropriate c ommand." 1020PRINT'" The first line you edit is what appears on the base of the cassette, ie to tell you gener ally whats on it. The title is self exp lanatory, then you have a maximum of 13 lines for the individual details. " 1030PRINT'" The cursor at the side jus t shows which line you are currently editing." 1040PRINT'" The number of dots indicat es how long each line can be. If you want a line to be blank, just press Return." 1050PRINT'" After you've edited side A , you can alter anything if you want. Just use the cursor keys to move to th e correct line, press Space and type in the new line." 1060PRINT'" Once you've cleared up any errors you move onto side B and edit that in the same way." 1070PRINT'" Finally, once all errors h ave been changed, make sure your printer is switched on and the inlay will be printed out to the right size. All you need to do now is cut it out , and fold along the dotted lines!" 1080PRINT'" Press any key to continue": G=GET 1090ENDPROC