home *** CD-ROM | disk | FTP | other *** search
- /* FastLoad - Utility f. Drucker-Fonts */
- /* (C) 1988 by G.Glendown & TOOLBOX */
-
- /* Folgende Druckercodes werden verwendet:
- ESC"x"[0/1] Umschalten Draft/LQ
- ESC"!"0 Print Style zurücksetzen
- ESC":"0 0 0 Zeichensatz kopieren
- ESC"%"1 auf User-CS umschalten
- ESC"&"0 a e l m r Daten
- a erster Buchstabe
- e letzter Buchstabe
- l Pixels links vomáChar
- m Pixels des Chars
- r Pixels rechts vom Char
- Daten: jeweils 3 Byte pro Spalte, von oben nach unten.*/
-
- /* Filehandler für Zeichensatz und Drucker */
- struct FileHandle *fh,*pr,*Open();
- /* Filename */
- char fname[100];
- long puf,z,len,klen;
- int cnt=0;
- UBYTE width;
- /* Druckpuffer */
- UBYTE dr[100];
- UWORD *pw; /* pw als Word-Zeiger auf dr[] */
-
- main(argc,argv)
- int argc;
- char *argv[];
- { z=0x50435345; /* File-Id 'PCSE' */;
- /* zweiten Zeiger auf Druckpuffer initialisieren: */
- pw=(UWORD *)dr;
- if (argv[1][0]=='?')
- printf("Syntax : %s <Filename> [S]\n",argv[0]),ex(0);
- if (argc==1) {
- /* Kein Parameter: Filenamen abfragen */
- printf(" Printer Character Set Fast Loader\n");
- printf(" (C) 1988 by G. Glendown & TOOLBOX \n\n");
- printf(" Bitte geben sie den Filenamen ein:");
- scanf("%s",fname);
- argv[1]=fname;
- }
- /* File öffnen */
- if (!(fh=Open(argv[1],MODE_OLDFILE)))
- printf("File nicht gefunden!\n"),ex(0);
- Read(fh,&puf,4L); /* Id einlesen */
- if (puf!=z) /* und vergleichen */
- printf("Kein PCSE - File\n"),ex(1);
- Read(fh,&width,1L); /* Zeichenbreite holen */
- if ((width!=9)&&(width!=29))
- printf("Struktur-Fehler !\g"),ex(1);
- /* Druckerfilehandle holen */
- if (!(pr=Open("PAR:",MODE_NEWFILE)))
- printf("Konnte Drucker nicht ÷ffnen\n"),ex(1);
- /* Anzahl Bytes pro Zeichen ausrechnen */
- klen=(long)(width*3+5);
- dr[0]=27; dr[1]='x';
- dr[2]=(width==9)?0:1; /* Auf Draft/LQ umschalten */
- dr[3]=27; pw[4>>1]=0x2100; /* keine Attribute */
- pw[6>>1]=27<<8|':'; pw[8>>1]=0;
- pw[10>>1]=27; /* Zeichensatz kopieren */
- pw[12>>1]='%'<<8|1; /* und umschalten */
- Write(pr,dr,14L); pw[0]=27<<8|0x26; dr[2]=0;
- /* Solange lesen bis Read weniger */
- /* als klen Zeichen kriegt. */
- while (klen==Read(fh,&dr[3],klen)) {
- if (dr[4]!=width) printf("Struktur-Fehler !\n"),ex(2);
- /* Zeichennummer ausrechnen */
- dr[4]=dr[3]+32; dr[3]=dr[4];
- Write(pr,dr,klen+3); cnt++;
- }
- printf("Zeichensatz installiert!\n");
- if ((argc==3) && (argv[2][0]=='S'))
- printf("%d Zeichen kopiert\n",cnt);
- ex(2);
- }
-
-
- ex(t)
- int t;
- { switch (t) {
- case 2: Close(pr);
- case 1: Close(fh);
- }
- exit(0);
- }
-