home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Turbo Toolbox
/
Turbo_Toolbox.iso
/
1988
/
10_11
/
amiga
/
lqe.bas
< prev
Wrap
BASIC Source File
|
1988-07-12
|
7KB
|
328 lines
' ********************************
' 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