' ALERT 1,"Welche Aufgabe| soll ich erfllen !!!",1,"DEMO|MAKE",ok% IF ok%=1 gfsel("CFG-Testausdruck","*.CFG","",file$) ! CFG-Treiber w„hlen IF LEN(file$)>0 printerselect(file$) ! CFG-Treiber ladern druckinit(-1) ! Drucker initialisieren demo_ausdruck ENDIF ELSE cfg ENDIF PROCEDURE demo_ausdruck LPRINT breit$; ! Einzeiliger Breitdruck einschalten LPRINT "CFG - Druckertreiber unter GFA-BASIC V3.x." LPRINT LPRINT unein$; LPRINT fettein$; LPRINT "Dieser Text ist unterstrichen und wird FETT gedruckt." LPRINT unaus$; LPRINT fettaus$; LPRINT FOR i%=33 TO 256 txt$=txt$+CHR$(i%) NEXT i% umlaut(txt$,out$) LPRINT out$ RETURN PROCEDURE druckinit(draft!) ! DRAFT! = TRUE Schnellschrift ' DRAFT! = FALSE NLQ ' ' Die Verzweigung der einzelnen Zeilen in der HEX-Treiberdatei wird durch die ' Formel Zeile + 2 * DRAFT! vorgenommen. Da in diesem Treiber-Quellcode die ' Opcode erst fr DRAFT und dann fr NLQ bzw. erst die Einschalt- und dann ' die Ausschalt-Sequenz verlangt wird !!! ' cr$=cfg$(5) ! Opcode fr horiz. Tabulator breit$=cfg$(&H2E+2*draft!) ! Einzeiliger Breitdruck fettein$=cfg$(&H8+2*draft!) ! Fett einschalten fettaus$=cfg$(&H9+2*draft!) ! Fett ausschalten supe$=cfg$(&H18+2*draft!) ! Supscripte einschalten supa$=cfg$(&H19+2*draft!) ! Supscripte ausschalten unein$=cfg$(&H1C+2*draft!) ! Unterstrichen ein unaus$=cfg$(&H1D+2*draft!) ! Unterstrichen aus druckinit$=cfg$(&H21) ! Druckerinitialisierung blattauswurf$=cfg$(&H1E) ! Blattauswurf bzw. Perforationssprung fnt$=cfg$(&H2A+2*draft!) ! Wahl zwischen ELITE oder PICA LPRINT druckinit$; ! An die Arbeit: Drucker initialisieren LPRINT fnt$; ! Gew„hlte Schrift einstellen LPRINT cfg$(&H27)+CHR$(8); ! Linker Rand einstellen RETURN PROCEDURE druckende LPRINT blattauswurf$; ! Seite auswerfen LPRINT druckinit$; ! Drucker reinitialiseren RETURN PROCEDURE umlaut(txt$,VAR out$) ' ' Umwandlung des Cumpuiterzeichensatzes in den Druckerzeichensatzes ' CLR out$ ! Rckgabe-Variable l”schen WHILE txt$<>"" ! Schleife durch laufen bis TXT$ = "" ist z%=ASC(LEFT$(txt$)) ! Computer-ASCii-Code holen txt$=MID$(txt$,2) ! geholtes Zeichen abschneiden out$=out$+cfg$(z%+59) ! Rckgabe-Variable fllen WEND RETURN PROCEDURE printerselect(file$) ' ' CFG-Druckertreiber laden und in dimensioniertes Feld bertragen ' nodruck%=1 ! FLAG fr NICHT GELADEN IF EXIST(file$) AND RIGHT$(file$)<>"\" ! CFG-Treiber vorhanden OPEN "I",#1,file$ ! CFG-Datei ”fnen len%=LOF(#1) ! L„nge feststellen IF len%>32000 ! L„nge gr”žer 32K CLOSE #1 ! CFG-Datei schliežen CLR cfg$ ! CFG-Feld l”schen und beenden ELSE cfg$=INPUT$(len%,#1) ! CFG-Datei in Hilfsvariable laden CLOSE #1 ! CFG-Datei schliežen IF UPPER$(LEFT$(cfg$,8))="GST-CFG:" ! Prfen ob wirklich CFG-Datei ist CLR nodruck% ! FLAG l”schen = gefunden ERASE cfg$() ! CFG-Feld l”schen DIM cfg$(320) ! CFG-Feld reinitialisieren FOR j%=0 TO 51 ! cfg$(j%)=CHR$(j%) ! Druckerbefehle verteilen NEXT j% ! FOR j%=0 TO 256 ! cfg$(j%+59)=CHR$(j%) ! Druckerzeichensatz verteilen NEXT j% cfg$=RIGHT$(cfg$,LEN(cfg$)-8) ! CFG-Kennung abschneiden pos%=INSTR(cfg$,CHR$(0)) ! Kennung der Druckervariablen suchen cfg$(52)=LEFT$(cfg$,pos%-1) ! Druckername cfg$=RIGHT$(cfg$,LEN(cfg$)-pos%) ! Druckername abschneiden cfg$(53)=LEFT$(cfg$) ! Konfigurationsvariable 1 cfg$(54)=MID$(cfg$,2,1) ! " " 2 cfg$(55)=MID$(cfg$,3,1) ! " " 3 cfg$(56)=MID$(cfg$,4,1) ! " " 4 cfg$(57)=MID$(cfg$,5,1) ! " " 5 cfg$(58)=RIGHT$(cfg$,1) ! " " 6 papier%=ASC(MID$(cfg$,6,1)) ! " " 7 cfg$=RIGHT$(cfg$,LEN(cfg$)-6) ! Konfigurationsvariablen abschneiden cfg$(&H27)="" ! Linker Rand l”schen DO EXIT IF cfg$="" ! CFG-Treiber verteilt, dann raus len%=ASC(cfg$) ! Gr”že ermitteln EXIT IF len%=0 ! Gr”že = 0, dann raus pos%=ASC(MID$(cfg$,2,1)) ! ASCii-Wert ermitteln cfg$(pos%)=MID$(cfg$,3,len%-2) ! und in CFG-Feld verteilen cfg$=RIGHT$(cfg$,LEN(cfg$)-len%) ! opcode abschneiden LOOP IF LEN(cfg$)>0 ! CFG-Treiber noch nicht verteilt cfg$=RIGHT$(cfg$,LEN(cfg$)-1) ! CHR$(0)-Kennung abschneiden DO EXIT IF cfg$="" ! CFG-Treiber verteilt, dann raus len%=ASC(cfg$) ! Gr”že ermitteln EXIT IF len%=0 ! Gr”že = 0, dann raus pos%=ASC(MID$(cfg$,2,1)) ! ASCii-Wert ermitteln cfg$(pos%)=MID$(cfg$,3,len%-2) ! und in CFG-Feld verteilen cfg$=RIGHT$(cfg$,LEN(cfg$)-len%) ! opcode abschneiden LOOP ENDIF IF cfg$(&H27)="" ! Li. Rand in CFG-Treiber = 0 cfg$(&H27)=CHR$(&H1B)+CHR$(&H6C) ! Li. Rand auf 6 Spalten setzen ENDIF ENDIF ENDIF ENDIF RETURN PROCEDURE gfsel(txt$,fsel$,i$,VAR file$) ' ' TOS-Fileselector aufrufen ' box(1) FILESELECT #txt$,fsel$,i$,file$ box(0) DEFMOUSE 3 RETURN PROCEDURE box(i%) ' ' wachsende Box zeichnen ' IF box&=1 DPOKE GINTIN,250 DPOKE GINTIN+2,200 DPOKE GINTIN+4,25 DPOKE GINTIN+6,25 ELSE DPOKE GINTIN,275 DPOKE GINTIN+2,2 DPOKE GINTIN+4,90 DPOKE GINTIN+6,15 ENDIF DPOKE GINTIN+8,50 DPOKE GINTIN+10,50 DPOKE GINTIN+12,500 DPOKE GINTIN+14,300 GEMSYS 74-i% box&=1 RETURN PROCEDURE cfg gfsel("D.-Treiber erstellen",p$+"*.HEX","",hex$) IF hex$<>"" AND RIGHT$(hex$)<>"\" AND EXIST(hex$) modul%=1 DEFMOUSE 2 OPEN "I",#1,hex$ l%=LOF(#1) d%=INT(l%/256) rest%=l% MOD 256 CLR i%,pos%,found%,cfg$,lade$ IF d%>0 REPEAT INC i% durchgang$=INPUT$(256,#1) lade$=lade$+durchgang$ wo%=INSTR(lade$,CHR$(10)) WHILE wo%>0 zeile$=LEFT$(lade$,wo%-2) IF LEFT$(zeile$)<>"*" IF found%<3 IF found%=0 cfg$="GST-CFG:"+zeile$+CHR$(0) found%=1 ENDIF IF found%=2 CLR pos% DO pos%=INSTR(zeile$,",",pos%+1) EXIT IF pos%=0 cfg$=cfg$+CHR$(VAL("&H"+MID$(zeile$,pos%-2,2))) LOOP IF LEN(zeile$)>pos% cfg$=cfg$+CHR$(VAL("&H"+MID$(zeile$,pos%+1,2))) ENDIF ENDIF INC found% ELSE opcodes ENDIF ENDIF lade$=MID$(lade$,wo%+1) wo%=INSTR(lade$,CHR$(10)) WEND UNTIL i%>=d% IF rest%>0 rest$=INPUT$(rest%,#1) lade$=lade$+rest$ wo%=INSTR(lade$,CHR$(10)) WHILE wo%>0 zeile$=LEFT$(lade$,wo%-2) opcodes lade$=MID$(lade$,wo%+1) wo%=INSTR(lade$,CHR$(10)) WEND ENDIF IF LEN(lade$)>0 zeile$=lade$ opcodes ENDIF ENDIF CLOSE #1 BSAVE LEFT$(hex$,LEN(hex$)-3)+"CFG",VARPTR(cfg$),LEN(cfg$) ENDIF RETURN PROCEDURE opcodes pos&=VAL("&H"+LEFT$(zeile$,2)) IF INSTR(zeile$,",")>0 CLR pos%,i$ DO pos%=INSTR(zeile$,",",pos%+1) EXIT IF pos%=0 IF pos%