static void write_line(mps_t *mps, unsigned int prnr) { int x, y; for (y = 0; y < 7; y++) { for (x = 0; x < 480; x++) { output_select_putc(prnr, (BYTE)(mps->line[x][y] ? OUTPUT_PIXEL_BLACK : OUTPUT_PIXEL_WHITE)); } output_select_putc(prnr, (BYTE)(OUTPUT_NEWLINE)); } if (!is_mode(mps, MPS_BITMODE)) { /* bitmode: 9 rows/inch (7lines/row * 9rows/inch=63 lines/inch) */ /* charmode: 6 rows/inch (7lines/row * 6rows/inch=42 lines/inch) */ /* --> 63lines/inch - 42lines/inch = 21lines/inch missing */ /* --> 21lines/inch / 9row/inch = 3lines/row missing */ output_select_putc(prnr, OUTPUT_NEWLINE); output_select_putc(prnr, OUTPUT_NEWLINE); output_select_putc(prnr, OUTPUT_NEWLINE); } mps->pos = 0; }
static int print_char(raw_t *raw, unsigned int prnr, const BYTE c) { switch (c) { case 17: /* lowercase */ if (raw->mode == 1) { return 0; } raw->mode = 1; break; case 145: /* uppercase */ if (raw->mode == 0) { return 0; } raw->mode = 0; break; } if (output_select_putc(prnr, c) < 0) { return -1; } return 0; }
static int print_char(ascii_t *ascii, unsigned int prnr, BYTE c) { BYTE asc; switch (c) { case 8: /* bitmap mode */ return 0; case 10: /* linefeed */ break; case 13: /* return */ /* ascii->mode = 0; */ /* ? */ break; case 14: /* EN on*/ case 15: /* EN off*/ case 16: /* POS*/ return 0; case 17: /* lowercase */ ascii->mode = 1; return 0; case 18: /* revers on */ return 0; case 145: /* uppercase */ ascii->mode = 0; return 0; case 146: /* revers off */ return 0; } /* fix duplicated chrout codes */ if ((c >= 0x60) && (c <= 0x7f)) { /* uppercase */ c = ((c - 0x60) + 0xc0); } if (ascii->mode == 0) { /* uppercase / graphics mode */ if ((c >= 0x41) && (c <= 0x5a)) { /* lowercase (petscii 0x41 -) */ c += 0x80; /* convert to uppercase */ } else if ((c >= 0xc1) && (c <= 0xda)) { /* uppercase (petscii 0xc1 -) */ c = '.'; /* can't convert gfx characters */ } } asc = charset_p_toascii(c, 0); if (output_select_putc(prnr, asc) < 0) { return -1; } ascii->pos++; if (asc == '\n') { ascii->pos = 0; #if defined(__MSDOS__) || defined(WIN32) || defined(__OS2__) || defined(__BEOS__) if (output_select_putc(prnr, '\r') < 0) { return -1; } #endif } if (ascii->pos == CHARSPERLINE) { ascii->pos = 0; if (output_select_putc(prnr, '\n') < 0) { return -1; } #if defined(__MSDOS__) || defined(WIN32) || defined(__OS2__) || defined(__BEOS__) if (output_select_putc(prnr, '\r') < 0) { return -1; } #endif } return 0; }