home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Turbo Toolbox
/
Turbo_Toolbox.iso
/
1988
/
10_11
/
amiga
/
fload.c
next >
Wrap
C/C++ Source or Header
|
1988-06-30
|
3KB
|
88 lines
/* 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);
}