1 'FXGEN.100 Custom character generator for the Epson FX80 adapted from Steve Anderson's GCGEN.100 2 'Refer to Steve Anderson's GCGEN.DOC 5 '**************************************************************************** 10 MAXFILES=2:DEFINTA-Z:DIMP(12,9):E$=CHR$(27):RV$=E$+"p":NV$=E$+"q":F$="CHAR":CO$=",":CAL=5232:AP=94:OPEN"LPT:"FOROUTPUTAS1:GOTO100 20 FORD=1TO400:NEXT:RETURN:'cursor blink delay 30 PRINT#1,E$"&"CHR$(0)CHR$(A)CHR$(A)CHR$(DC);:FORX=1TO11:CALLCAL,P(X,9):NEXT:RETURN:'download character 40 FORX=1TO11:P(X,9)=0:NEXT:FORX=1TO11:FORY=1TO8:P(X,9)=P(X,9)+P(X,Y)*2^(8-Y):NEXT:NEXT:RETURN'column totals 50 PRINT#1,E$"%"CHR$(1)CHR$(0);:RETURN'activate downloaded characters 60 PRINT#1,E$CHR$(58)CHR$(0)CHR$(0)CHR$(0);E$"6";:RETURN'copy printer rom characters to printer ram 70 PRINT#1,E$"%"CHR$(0)CHR$(0));:RETURN:'de-activate downloaded characters 100 '-199 initial menu 105 FORX=1TO10:FORY=1TO8:P(X,Y)=0:NEXT:NEXT:X=1:Y=1:C=24:C$=" " 110 Q=9:CLS:PRINT" 1 - Build character":PRINTE$"V 2 - Activate downloaded characters":PRINT" 3 - De-activate downloaded characters":PRINT" 4 - Copy normal characters to printer":PRINT" 5 - Download "F$".DO to printer":PRINT" 0 - Exit FXGEN.BA" 115 PRINT:INPUT" Option";Q 120 IFQ<1THENPRINT#1,E$"i0":MENUELSEIFQ=1THEN200ELSEIFQ=2THENGOSUB50:PRINT#1,CHR$(7);ELSEIFQ=3THENGOSUB70:PRINT#1,CHR$(7);ELSEIFQ=4THENGOSUB60:PRINT#1,CHR$(7);ELSEIFQ=5THEN800 130 GOTO110 200 '-299 display control 210 CLS:LINE(143,0)-(210,63),1,B:LINE(220,30)-(232,39),1,B 215 PRINT@0,"ARROW's move cursor":PRINT:PRINT" S to set dot":PRINT" R to reset dot":PRINT" P to print character" 220 PRINT" CR to enter character":PRINT:PRINT" Esc to Exit"; 230 PRINT@C,C$:GOSUB290 250 X$=INKEY$:IFX$=CHR$(27)THEN100ELSEIFX$=CHR$(28)ORX$=CHR$(29)ORX$=CHR$(30)ORX$=CHR$(31)THEN300 260 IFX$="s"ORX$="S"THEN400ELSEIFX$="r"ORX$="R"THEN500ELSEIFX$="p"ORX$="P"THEN600ELSEIFX$=CHR$(13)THEN700 270 IFX$=""THEN230ELSEBEEP:GOTO230 290 PRINT@C,RV$C$;:GOSUB20:PRINT@C,NV$C$:GOSUB20:RETURN 300 '-399 cursor movement 310 IFX$=CHR$(29)THENGOSUB390:C=C-1:X=X-1:IFX<1THENC=C+1:X=X+1 330 IFX$=CHR$(28)THENGOSUB390:C=C+1:X=X+1:IFX>11THENC=C-1:X=X-1 350 IFX$=CHR$(30)THENGOSUB390:C=C-40:Y=Y-1:IFY<1THENC=C+40:Y=Y+1 370 IFX$=CHR$(31)THENGOSUB390:C=C+40:Y=Y+1:IFY>8THENC=C-40:Y=Y-1 380 IFP(X,Y)=1THENC$="o"ELSEC$=" " 385 GOTO250 390 IFP(X,Y)=1THENPRINT@C,"o";:RETURNELSEPRINT@C," ":RETURN 400 '-499 set dot 410 IFP(X-1,Y)=1ORP(X+1,Y)=1THENBEEP:BEEP:GOTO250 420 P(X,Y)=1:PSET(X+220,Y+30):C$="":GOTO250 500 '-599 reset dot 510 P(X,Y)=0:PRESET(X+220,Y+30):C$=" ":GOTO250 600 '-699 print character 610 A=AP:S1=X:S2=Y:S3=C:GOSUB40:GOSUB30:GOSUB50:PRINT#1,E$"i1"CHR$(AP);:X=S1:Y=S2:C=S3:GOTO250 700 '-799 enter character 710 CLS:Q=9:PRINT" 1 - Download character":PRINT" 2 - Print character":PRINT" 3 - Store character to "F$".DO":PRINT" 4 - Copy normal characters to printer":PRINT" 5 - Go to New Character/Download menu":PRINT" 0 - Exit FXGEN.BA":PRINT:INPUT" Option";Q 720 CLS:IFQ<1THENPRINT#1,E$"i0";:MENUELSEIFQ=1THENGOSUB750:GOSUB40:GOSUB30:PRINT#1,CHR$(7);ELSEIFQ=2THENA=AP:GOSUB40:GOSUB30:GOSUB50:PRINT#1,CHR$(AP)ELSEIFQ=3THEN760ELSEIFQ=4THENGOSUB60ELSEIFQ=5THENRUN 740 GOTO710 750 PRINT:INPUT"ASCII value (32126,0=NULL)";A:IFA<>0AND(A<32ORA>126)THENBEEP:BEEP:GOTO750ELSEPRINT:INPUT"Decender (Y or N)";D$:IFD$="Y"ORD$="y"THENDC=27:RETURNELSEDC=155:RETURN 760 GOSUB40:GOSUB750:OPENF$FORAPPENDAS2:PRINT#2,USING"CHR$(###)!###!###!###!###!###!###!###!###!###!###!###!###";A,CO$,DC,CO$,P(1,9),CO$,P(2,9),CO$,P(3,9),CO$,P(4,9),CO$,P(5,9),CO$,P(6,9),CO$,P(7,9),CO$,P(8,9),CO$,P(9,9),CO$,P(10,9),CO$,P(11,9) 770 PRINT:PRINTSPACE$(12)"*** STORED ***":FORD=1TO1000:NEXT:CLOSE2:GOTO700 800 '-899 download F$.DO to printer 810 OPENF$FORINPUTAS2 820 IFEOF(2)THENCLOSE2:PRINT#1,CHR$(7);:GOTO100ELSEINPUT#2,D$,DC,P(1,9),P(2,9),P(3,9),P(4,9),P(5,9),P(6,9),P(7,9),P(8,9),P(9,9),P(10,9),P(11,9):A=VAL(MID$(D$,6,3)):GOSUB30:GOTO820