#include #include #include #define FILESIZE 131072 #define X_CHAR 32 #define Y_CHAR 128 static uint8_t buf[FILESIZE]; static uint8_t px[Y_CHAR * 16][X_CHAR * 16]; int loadfile(char *filename, int offset) { int i; FILE *fp; fp = fopen(filename, "r"); if (fp == NULL) { printf("loadfile: %s open error\n", filename); return -1; } for (i = 0; i < FILESIZE; i++) { buf[i] = fgetc(fp); } fclose(fp); return 0; } void draw_char(int x, int y, int n) { int dx, dy; uint16_t d; x *= 16; y *= 16; for (dy = 0; dy < 16; dy++) { if (n >= 0) { d = (buf[n * 0x20 + dy * 2] << 8) | buf[n * 0x20 + dy * 2 + 1]; } else { d = ~0; } for (dx = 0; dx < 16; dx++) { if (d & (0x8000 >> dx)) { px[y + dy][x + dx] = 1; } else { px[y + dy][x + dx] = 0; } } } return; } int main(int argc, char *argv[]) { int n, x, y, c; if (argc < 2) { printf("usage %s [filename]\n", argv[0]); return 0; } loadfile(argv[1], 0); for (y = 0; y < Y_CHAR; y++) { for (x = 0; x < X_CHAR; x++) { n = y * X_CHAR + x; draw_char(x, y, n); } } for (y = 0; y < Y_CHAR * 16; y++) { for (x = 0; x < X_CHAR * 16; x++) { c = px[y][x] ? 0xff : 0x00; putchar(c); putchar(c); putchar(c); } } return 0; }