home *** CD-ROM | disk | FTP | other *** search
- ' ********************************
- ' Printer Character Editor
- '
- ' (C) 1988 by G.Glendown & TOOLBOX
- ' ********************************
-
- CLEAR,10000
- CLEAR,70000&
- DIM b%(96,30,3)
- DIM a(64,3)
- DIM m(30,24)
- DIM z(30,3)
- DIM D(96)
- char =33 ' Anfangen mit "A"
- prndev$ = "PAR:"
-
- SCREEN 1,640,512,1,4
- WINDOW 2," NEC Zeichengenerator V 1.1",(0,1)-(631,497),0,1
- PALETTE 1,0,0,0
- PALETTE 0,.5,.5,.5
- FOR t=2 TO 4:MENU t,0,0,"":NEXT
- g=1
- READ a
- loop:
- FOR t=0 TO a
- READ a$:MENU g,t,1,a$
- NEXT
- g=g+1
- READ a
- IF a<>-1 THEN GOTO loop
-
- ' ** Menuetexte **
- DATA 4,Project,New,Load,Save,Quit
- DATA 4,Edit,Select,Save C ,Clear,Copy
- DATA 2,Printer,Test,Copy CSet
- DATA -1
-
- maxp=29:mas=36:mayp=24:xfak=10
- LOCATE 1,1
- PRINT "Bitte Drucker Online machen D = Draft";
- PRINT " RETURN = Letter Qualitaet"
- INPUT a$:IF a$="D" OR a$="d" THEN maxp=9:mas=12:xfak=30
- LOCATE 2,1:PRINT SPACE$(80)
- FOR t=0 TO 63:a(t,1)=2:a(t,3)=mas-maxp-2:a(t,2)=maxp:NEXT
- GOSUB initp
- GOSUB drawgrid
- ON MENU GOSUB medecode
- ON MOUSE GOSUB modecode
- MENU ON
- MOUSE ON
- md=1
- GOSUB was
- LOCATE 1,1:PRINT SPACE$(80)
-
- g:
- p$=INKEY$
- IF p$=" " THEN md=1-md: GOSUB was
- IF p$="B" OR p$="b" THEN GOSUB berech
- IF p$="C" OR p$="c" THEN GOSUB clre
- IF p$="S" OR p$="s" THEN GOSUB st
- IF p$="T" OR p$="t" THEN GOSUB tst
- GOTO g
-
- was:
- GOSUB drawgrid
- LOCATE 10,60:
- IF md = 0 THEN PRINT "Loeschen"
- IF md = 1 THEN PRINT "Zeichnen"
- LOCATE 20,50
- PRINT "Das aktuelle Zeichen : "CHR$(char+32)
- LOCATE 1,1
- RETURN
-
- initp:
- REM OPEN prndev$ FOR OUTPUT AS #3
- REM IF maxp=29 THEN PRINT#3,CHR$(27)"x"CHR$(1);
- REM IF maxp=9 THEN PRINT#3,CHR$(27)"x"CHR$(0);
- REM PRINT#3,CHR$(27)"!"CHR$(0);
- REM PRINT#3,CHR$(27)":"CHR$(0)CHR$(0)CHR$(0);
- REM CLOSE #3
- RETURN
-
- berech:
- MOUSE STOP: MENU STOP
- LOCATE 1,1:PRINT" Berechnen bitte warten "SPACE$(60)
- OPEN prndev$ FOR OUTPUT AS #3
- PRINT#3,CHR$(27)"&"CHR$(0)CHR$(char+32)CHR$(char+32);
- PRINT#3,CHR$(2)CHR$(maxp)CHR$(mas-maxp-2);
- FOR x=1 TO maxp
- FOR y=1 TO 3
- offs=(y-1)*8+1
- GOSUB berbyte
- b%(char,x,y)=summe
- PRINT #3,CHR$(summe);
- NEXT
- NEXT
- PRINT #3,CHR$(27)"%"CHR$(1);
- CLOSE #3
- MOUSE ON : MENU ON
- D(char)=1
- LOCATE 1,1 : PRINT " Fertig "SPACE$(70)
- BEEP
- RETURN
-
- berbyte:
- summe=0
- FOR g=0 TO 7
- summe=summe+m(x,g+offs)*2^(7-g)
- NEXT
- RETURN
-
- modecode:
- v=MOUSE(0)
- IF ABS(v)<1 THEN RETURN
- x=MOUSE(3) : y=MOUSE(4)
- xg=INT((x-20)/xfak+.5)
- yg=INT((y-10)/20+.5)
- IF xg<1 OR xg>maxp THEN RETURN
- IF yg<1 OR yg>mayp THEN RETURN
- IF m(xg-1,yg)+m(xg+1,yg)<>0 THEN RETURN
- CIRCLE (20+xfak*xg,10+20*yg),20,md,,,.88
- m(xg,yg)=md
- PSET (60+maxp*xfak+xg,100+yg),md
- RETURN
-
- medecode:
- mn=MENU(0)
- in=MENU(1)
- ON mn GOTO proj,edt,prin
- prin:
- ON in GOTO tst,copset
- proj:
- ON in GOTO nw,ld,sv,qt
- copset:
- MOUSE STOP: MENU STOP
- LOCATE 1,1
- PRINT " Der aktuelle Zeichensatz wird zum Drucker ";
- PRINT "kopiert, bitte warten";SPACE$(40)
- OPEN prndev$ FOR OUTPUT AS #3
- FOR t=0 TO 64
- IF D(t)=1 THEN GOSUB copchar
- NEXT
- PRINT #3,CHR$(27)"%"CHR$(1);
- CLOSE #3
- BEEP
- LOCATE 1,1 : PRINT " Fertig ";SPACE$(70)
- MOUSE ON: MENU ON
- RETURN
-
- copchar:
- PRINT#3,CHR$(27)"&"CHR$(0)CHR$(t+32)CHR$(t+32);
- PRINT#3,CHR$(2)CHR$(maxp)CHR$(mas-maxp-2);
- FOR x=1 TO maxp
- FOR y=1 TO 3
- PRINT #3,CHR$(b%(t,x,y));
- NEXT
- NEXT
- RETURN
-
- nw:
- RUN
-
- ld:
- MOUSE STOP:MENU STOP
- LOCATE 1,1: PRINT SPACE$(80):LOCATE 1,1
- INPUT" Bitte Filenamen eingeben ",a$
- FOR t=0 TO 64:D(t)=0:NEXT
- OPEN a$ FOR INPUT AS #1
- kz$=INPUT$(4,1)
- IF kz$<>"PCSE" THEN PRINT "Kein Datenfile !":GOTO ENDLD
- kz$= INPUT$(1,1)
- WHILE NOT(EOF(1))
- q$=INPUT$(2,1): t=ASC(LEFT$(q$,1))
- D(t)=1
- IF ASC(RIGHT$(q$,1))<>maxp THEN
- PRINT "Falsches Format!!!"
- STOP
- FOR t=1 TO 1000:NEXT:RUN
- END IF
- FOR g=1 TO 3
- q$=INPUT$(1,1): a(t,g)=ASC(q$)
- NEXT
- FOR g=1 TO a(t,2)
- FOR i=1 TO 3
- q$=INPUT$(1,1): b%(t,g,i)=ASC(q$)
- NEXT
- NEXT
- WEND
- ENDLD:
- CLOSE #1
- BEEP
- LOCATE 1,1: PRINT SPACE$(80)
- GOSUB was
- MOUSE ON:MENU ON
- PRINT cmax
- char=33
- GOSUB displaychar
- RETURN
-
- sv:
- MOUSE STOP: MENU STOP
- LOCATE 1,1: PRINT SPACE$(80): LOCATE 1,1
- INPUT"Bitte Filenamen zum Abspeichern eingeben ",a$
- CLOSE 1
- OPEN a$ FOR OUTPUT AS #1
- PRINT#1,"PCSE";CHR$(maxp);
- t=0
- FOR t=0 TO 64
- IF D(t)=1 THEN GOSUB writechar
- NEXT
- CLOSE #1
- BEEP
- LOCATE 1,1: PRINT SPACE$(80)
- MOUSE ON: MOUSE ON
- RETURN
-
- writechar:
- PRINT#1,CHR$(t)CHR$(maxp);
- FOR g=1 TO 3
- PRINT#1,CHR$(a(t,g));
- NEXT
- FOR g=1 TO a(t,2)
- FOR i=1 TO 3
- PRINT #1,CHR$(b%(t,g,i));
- NEXT
- NEXT
- RETURN
-
- qt:
- END
-
- edt:
- ON in GOTO st,sc,clre,cpy
-
- cpy:
- LOCATE 1,1:PRINT SPACE$(80)
- LOCATE 1,1:INPUT"in welches Zeichen kopieren -> ",a$
- we=ASC(LEFT$(a$,1))-32
- IF VAL(a$)<>0 THEN we=cal(a$)-32
- IF we<0 OR we>96 THEN GOTO cpy
- FOR x=1 TO maxp
- FOR y=1 TO 3
- b%(we,x,y)=b%(char,x,y)
- NEXT
- NEXT
- D(we)=1
- OPEN prndev$ FOR OUTPUT AS #3
- t=we:GOSUB copchar
- CLOSE 3
- LOCATE 1,1:PRINT SPACE$(80)
- GOTO drawgrid
-
- clre:
- FOR x=1 TO maxp:FOR y=1 TO 24:m(x,y)=0:NEXT :NEXT
- CLS : D(char) = 0
- GOSUB was
- GOTO drawgrid
-
- st:
- abcdef=char
- LOCATE 1,1:PRINT SPACE$(80)
- LOCATE 1,1:INPUT"Zeichen-> ",a$
- char=ASC(LEFT$(a$,1))-32
- IF VAL(a$)<>0 THEN char=VAL(a$)-32
- CLS
- IF char<0 OR char>96 THEN char =abcdef
- GOSUB drawgrid
- GOSUB was
- LOCATE 1,1:PRINT SPACE$(80)
-
- displaychar:
- MOUSE STOP
- FOR x=1 TO maxp
- FOR y=1 TO mayp:m(x,y)=0:NEXT
- FOR y=1 TO 3
- p=b%(char,x,y)
- IF p = 0 THEN GOTO la2
- FOR g=1 TO 8
- IF (p AND 2^(8-g)) THEN
- CIRCLE (20+xfak*x,10+20*((y-1)*8+g)),20,1,,,.88
- m(x,(y-1)*8+g)=1
- PSET (60+maxp*xfak+x,100+(y-1)*8+g),1
- END IF
- NEXT
- la2:
- NEXT
- NEXT
- MOUSE ON
- RETURN
-
- sc:
- GOTO berech
-
- trnsd:
- RETURN
-
- trnsl:
- RETURN
-
- tst:
- LOCATE 1,1:PRINT"Bitte Zeichen eingeben "SPACE$(60)
- LOCATE 1,24
- OPEN prndev$ FOR OUTPUT AS #3
- PRINT#3,CHR$(27)"%"CHR$(1);:CLOSE 3
- INPUT a$
- IF LEN(a$)<2 THEN
- OPEN prndev$ FOR OUTPUT AS #4
- FOR t=32 TO 96:PRINT#4,CHR$(t);:NEXT
- FOR t=96 TO 128:PRINT #4,CHR$(t);:NEXT
- PRINT #4,CHR$(13)
- CLOSE 4
- CLOSE #4
- RETURN
- END IF
- OPEN prndev$ FOR OUTPUT AS #5
- PRINT#5,a$;:PRINT#5,CHR$(13):CLOSE 5
- LOCATE 1,1:PRINT SPACE$(80)
- RETURN
-
- drawgrid:
- FOR x=1 TO maxp
- LINE (20+x*xfak,10+20)-(20+x*xfak,10+mayp*20),1
- NEXT
- FOR y=1 TO mayp
- LINE (20+xfak,10+20*y)-(20+maxp*xfak,10+20*y),1
- NEXT
- RETURN
-