home *** CD-ROM | disk | FTP | other *** search
- /*
- * makechar.c
- *
- */
-
- #include <stdio.h>
-
- typedef unsigned char BYTE;
-
- BYTE CharMap[258], Defined[258];
- BYTE Buffer[128];
- BYTE DeFile[88], MapFile[88];
- FILE *fi, *fo;
-
- void InitCharMap()
- {
- register int i;
-
- for (i = 0; i < 256; i ++) CharMap[i] = i;
- CharMap[i] = 1;
- }
-
- BYTE TreatLine()
- //
- // '\x##' = '\x##'
- //
- {
- unsigned Origin, NewTo;
- BYTE Tmp1[2], Tmp2[2], Switch[8];
-
- for ( ; ; ) {
- if (fgets(Buffer, 127, fi) == NULL) return 0;
- if (Buffer[0] != '#') break;
- }
- if (sscanf(Buffer, "\'\\x%2x\'%1s%1s\\x%2x\'",
- &Origin, Tmp1, Tmp2, &NewTo) == 4 &&
- Tmp1[0] == '=' && Tmp2[0] == '\'') {
- // printf("Origin: %2x NewTo: %2x\t", Origin, NewTo);
- if (Defined[Origin] == 0) {
- CharMap[Origin] = (BYTE)NewTo;
- Defined[Origin] = 1;
- // printf("%c --> %c\n", Origin, NewTo);
- return 1;
- }
- printf("%s┤φ╬≤ú║╫╓╖√\"%c\"╥╤╢¿╥σ╣²\n", Buffer, Origin);
- return 1;
- }
- else
- if (sscanf(Buffer, "TreatTab%1s%s", Tmp1, Switch)) {
- if (Defined[256] != 0) {
- printf("%s┤φ╬≤ú║▒φ╕±┤ª└φ┐¬╣╪╥╤╢¿╥σ╣²\n", Buffer);
- return 1;
- }
- else
- if (Tmp1[0] == '=') {
- if (strcmp(Switch, "on") == 0) CharMap[256] = 1;
- else
- if (strcmp(Switch, "off") == 0) CharMap[256] = 0;
- else goto PmtError;
- Defined[256] = 1;
- // printf("Set TabChar %s\n", Switch);
- return 1;
- }
- }
- PmtError:
- printf("%sMakeChar: ╢¿╥σ╕±╩╜┤φ\n", Buffer);
- return 1;
- }
-
- void OutMapFile(char *ofile)
- {
- if ((fo = fopen(ofile, "wb")) == NULL) {
- printf("MakeChar: ╬┤─▄┤≥┐¬╬─╝■ \"%s\"\n", ofile);
- exit(-1);
- }
- fwrite(CharMap, 257, 1, fo);
- fclose(fo);
- }
-
- void main(int argc, char *argv[])
- {
- if (argc < 2 || argc > 3 || strcmp(argv[1], "/?") == 0) {
- printf("\t│╔╚╗┬δ╧╡═│ASCII╧╘╩╛╫╓╖√╙│╔Σ▒φ╔·│╔│╠╨≥ 1.0░µ\n"
- "\tCopyright (c) 1994.8 │┬╜¡─■\n"
- "\n\t╙├╖¿: CharMap <╢¿╥σ╬─╝■>[.def] [<╙│╔Σ▒φ╬─╝■>[.chr]]"
- "\n\t╛┘└²: CHARMAP ACIOS\n"
- );
- exit(-1);
- }
- strcpy(DeFile, argv[1]);
- if (argc == 2) strcpy(MapFile, argv[1]);
- else strcpy(MapFile, argv[2]);
-
- if (strchr(DeFile, '.') == NULL) strcat(DeFile, ".def");
- if (strchr(MapFile, '.') == NULL) strcat(MapFile, ".chr");
-
- if ((fi = fopen(DeFile, "r")) == NULL) {
- printf("MakeChar: ╬┤─▄┤≥┐¬╢¿╥σ╬─╝■ \"%s\"\n", DeFile);
- exit(-1);
- }
- InitCharMap();
- while ( ! feof(fi)) TreatLine(); fclose(fi);
- OutMapFile(MapFile);
- }
-