1 'GCGEN.100 1/2/85 Custom character generator for the gemini 10X by Steve Anderson [71276,514] refer to GCGEN.DOC for instructions 10 MAXFILES=2:DEFINTA-Z:DIMP(10,8):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$(42)CHR$(1)CHR$(A)CHR$(DC);:FORX=1TO9:CALLCAL,P(X,8):NEXT:RETURN:'download character 40 FORX=1TO9:P(X,8)=0:NEXT:FORX=1TO9:FORY=1TO7:P(X,8)=P(X,8)+P(X,Y)*2^(Y-1):NEXT:NEXT:RETURN:'column totals 50 PRINT#1,E$CHR$(36)CHR$(1);:RETURN:'activate downloaded characters 60 PRINT#1,E$CHR$(42)CHR$(0);:RETURN:'copy normal characters to printer ram 70 PRINT#1,E$CHR$(36)CHR$(0);:RETURN:'de-activate downloaded characters 100 '-199 initial menu 105 FORX=1TO10:FORY=1TO7:P(X,Y)=0:NEXT:NEXT:X=1:Y=1:C=26:C$=" " 110 Q=9:CLS:PRINT" 1 - Build character":PRINT" 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 GCGEN.BA" 115 PRINT:INPUT" Option";Q 120 IFQ<1THENMENUELSEIFQ=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(155,0)-(155,55):LINE(210,0)-(210,55):LINE(155,56)-(210,56):LINE(220,30)-(230,38),1,B 215 PRINT@0,"     to 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>9THENC=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>7THENC=C-40:Y=Y-1 380 IFP(X,Y)=1THENC$=""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,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 GCGEN.BA":PRINT:INPUT" Option";Q 720 CLS:IFQ<1THENMENUELSEIFQ=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=1:RETURNELSEDC=0:RETURN 760 GOSUB40:GOSUB750:OPENF$FORAPPENDAS2:PRINT#2,USING"CHR$(###)!#!###!###!###!###!###!###!###!###!###";A,CO$,DC,CO$,P(1,8),CO$,P(2,8),CO$,P(3,8),CO$,P(4,8),CO$,P(5,8),CO$,P(6,8),CO$,P(7,8),CO$,P(8,8),CO$,P(9,8) 770 PRINT:PRINTSPACE$(12)"*** STORED ***":FORD=1TO1000:NEXT:CLOSE2:GOTO700 800 '-899 download F$.DO to printer 810 OPENF$FORINPUTAS2 820 IFEOF(2)THENPRINT#1,CHR$(7);:GOTO100ELSEINPUT#2,D$,DC,P(1,8),P(2,8),P(3,8),P(4,8),P(5,8),P(6,8),P(7,8),P(8,8),P(9,8):A=VAL(MID$(D$,6,3)):GOSUB30:GOTO820