rsalz@uunet.uu.net (Rich Salz) (03/25/89)
Submitted-by: umix!m-net!dtlewis!lewis Posting-number: Volume 18, Issue 61 Archive-name: gl_plot/part03 # To recover, type "sh archive" echo restoring bitmaps.h sed 's/^X//' > bitmaps.h <<XxX--EOF--XxX X/* @(#) bitmaps.h 5.1 89/02/20 */ X/* X * Copyright (c) David T. Lewis 1987, 1988 X * All rights reserved. X * X * Permission is granted to use this for any personal noncommercial use. X * You may not distribute source or executable code for profit, nor X * may you distribute it with a commercial product without the written X * consent of the author. Please send modifications to the author for X * inclusion in updates to the program. Thanks. X */ X X/* IBM/Epson printer parameters */ X/* Number of print pixel columns across the page. */ X#define PRINTDENSITY 960 X/* Number of 8 pixel print rows down the page (times 3 for full page). */ X#define PRINTLINES 30 X X/* HP Laserjet+ printer parameters */ X/* Number of bytes (8 pixels per byte) across the page. */ X#define LJ_BYTES_PER_LINE 140 X/* Number of 1 pixel print rows down the page (times 3 for full page). */ X#define LJ_LINES 460 X/* Define this so we don't need to rely on the sizeof() operator, which */ X/* returns an integer value. This could be trouble for 16 bit integer */ X/* machines. The sizeof(LJ_BUF_TYPE) is 140 * 460 = 64400. */ X#define LJ_BUF_SIZE 64400 X X/* X * Define the structure for CGA video memory. X */ Xtypedef struct CGAMEM { X char page1[100][80]; X char filler[192]; X char page2[100][80]; X} CGA_BUF_TYPE; X X/* X * Define the structure for EGA video memory. X */ Xtypedef struct EGAMEM { X char mem[350][80]; X} EGA_BUF_TYPE; X X/* X * Define the structure for Hercules video memory. X */ Xtypedef struct HERCMEM { X char page1[87][90]; X char filler1[362]; X char page2[87][90]; X char filler2[362]; X char page3[87][90]; X char filler3[362]; X char page4[87][90]; X} HERC_BUF_TYPE; X X/* X * Define the structure for a memory buffer for IBM printer bit map X * image. The horizontal resolution may be either 960 bits, or 480 X * bits (in which case only part of the 960 characters is used in each X * line of the buffer). The buffer is divided into multiple pages so X * that it can fit into two memory segments of < 64K each. That is, X * three of these structures must be declared to make a complete print X * buffer for 90 * 960 byte printing. X */ Xtypedef struct IBM_PR_BUF { X char buf[PRINTLINES][PRINTDENSITY]; X} PR_BUF_TYPE; /* Three of these required! */ X Xtypedef struct LJ_PR_BUF { X char buf[LJ_LINES][LJ_BYTES_PER_LINE]; X} LJ_BUF_TYPE; /* Three of these required! */ X XxX--EOF--XxX echo restoring cellfont.h sed 's/^X//' > cellfont.h <<XxX--EOF--XxX X/* @(#) cellfont.h 5.1 89/02/20 */ X/* Note: Copyright status unknown. Presumed public domain. dtl 3-15-88*/ X X/* RAM-Loadable Character Sets for the IBM PC X Richard Wilton X July 1986 */ X X/* definitions for 8 by 8 characters 00 through FF */ X Xstatic char charcell [2048]={ X 0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000, /* 000 */ X 0x07E,0x081,0x0A5,0x081,0x0BD,0x099,0x081,0x07E, /* 001 */ X 0x07E,0x0FF,0x000,0x0FF,0x0C3,0x0E7,0x0FF,0x07E, /* 002 */ X 0x06C,0x0FE,0x0FE,0x0FE,0x07C,0x038,0x010,0x000, /* 003 */ X 0x010,0x038,0x07C,0x0FE,0x07C,0x038,0x010,0x000, /* 004 */ X 0x038,0x07C,0x038,0x0FE,0x0FE,0x07C,0x038,0x07C, /* 005 */ X 0x010,0x010,0x038,0x07C,0x0FE,0x07C,0x038,0x07C, /* 006 */ X 0x000,0x000,0x018,0x03C,0x03C,0x018,0x000,0x000, /* 007 */ X 0x0FF,0x0FF,0x0E7,0x0C3,0x0C3,0x0E7,0x0FF,0x0FF, /* 008 */ X 0x000,0x03C,0x066,0x042,0x042,0x066,0x03C,0x000, /* 009 */ X 0x0FF,0x0C3,0x099,0x0BD,0x0BD,0x099,0x0C3,0x0FF, /* 00A */ X 0x00F,0x007,0x00F,0x07D,0x0CC,0x0CC,0x0CC,0x078, /* 00B */ X 0x03C,0x066,0x066,0x066,0x03C,0x018,0x07E,0x018, /* 00C */ X 0x03F,0x033,0x03F,0x030,0x030,0x070,0x0F0,0x0E0, /* 00D */ X 0x07F,0x063,0x07F,0x063,0x063,0x067,0x0E6,0x0C0, /* 00E */ X 0x099,0x05A,0x03C,0x0E7,0x0E7,0x03C,0x05A,0x099, /* 00F */ X 0x080,0x0E0,0x0F8,0x0FE,0x0F8,0x0E0,0x080,0x000, /* 010 */ X 0x002,0x00E,0x03E,0x0FE,0x03E,0x00E,0x002,0x000, /* 011 */ X 0x018,0x03C,0x07E,0x018,0x018,0x07E,0x03C,0x018, /* 012 */ X 0x066,0x066,0x066,0x066,0x066,0x000,0x066,0x000, /* 013 */ X 0x07F,0x000,0x000,0x07B,0x01B,0x01B,0x01B,0x000, /* 014 */ X 0x03E,0x063,0x038,0x06C,0x06C,0x038,0x0CC,0x078, /* 015 */ X 0x000,0x000,0x000,0x000,0x07E,0x07E,0x07E,0x000, /* 016 */ X 0x018,0x03C,0x07E,0x018,0x07E,0x03C,0x018,0x0FF, /* 017 */ X 0x018,0x03C,0x07E,0x018,0x018,0x018,0x018,0x000, /* 018 */ X 0x018,0x018,0x018,0x018,0x07E,0x03C,0x018,0x000, /* 019 */ X 0x000,0x018,0x00C,0x0FE,0x00C,0x018,0x000,0x000, /* 01A */ X 0x000,0x030,0x060,0x0FE,0x060,0x030,0x000,0x000, /* 01B */ X 0x000,0x000,0x0C0,0x0C0,0x0C0,0x0FE,0x000,0x000, /* 01C */ X 0x000,0x024,0x066,0x0FF,0x066,0x024,0x000,0x000, /* 01D */ X 0x000,0x018,0x03C,0x07E,0x0FF,0x0FF,0x000,0x000, /* 01E */ X 0x000,0x0FF,0x0FF,0x07E,0x03C,0x018,0x000,0x000, /* 01F */ X 0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000, /* 020 */ X 0x030,0x078,0x078,0x030,0x030,0x000,0x030,0x000, /* 021 */ X 0x06C,0x06C,0x06C,0x000,0x000,0x000,0x000,0x000, /* 022 */ X 0x06C,0x06C,0x0FE,0x06C,0x0FE,0x06C,0x06C,0x000, /* 023 */ X 0x030,0x07C,0x0C0,0x078,0x00C,0x0F8,0x030,0x000, /* 024 */ X 0x000,0x0C6,0x0CC,0x018,0x030,0x066,0x0C6,0x000, /* 025 */ X 0x038,0x06C,0x038,0x076,0x0DC,0x0CC,0x076,0x000, /* 026 */ X 0x060,0x060,0x0C0,0x000,0x000,0x000,0x000,0x000, /* 027 */ X 0x018,0x030,0x060,0x060,0x060,0x030,0x018,0x000, /* 028 */ X 0x060,0x030,0x018,0x018,0x018,0x030,0x060,0x000, /* 029 */ X 0x000,0x066,0x03C,0x0FF,0x03C,0x066,0x000,0x000, /* 02A */ X 0x000,0x030,0x030,0x0FC,0x030,0x030,0x000,0x000, /* 02B */ X 0x000,0x000,0x000,0x000,0x000,0x030,0x030,0x060, /* 02C */ X 0x000,0x000,0x000,0x0FC,0x000,0x000,0x000,0x000, /* 02D */ X 0x000,0x000,0x000,0x000,0x000,0x030,0x030,0x000, /* 02E */ X 0x006,0x00C,0x018,0x030,0x060,0x0C0,0x080,0x000, /* 02F */ X 0x07C,0x0C6,0x0CE,0x0DE,0x0F6,0x0E6,0x07C,0x000, /* 030 */ X 0x030,0x070,0x030,0x030,0x030,0x030,0x0FC,0x000, /* 031 */ X 0x078,0x0CC,0x00C,0x038,0x060,0x0CC,0x0FC,0x000, /* 032 */ X 0x078,0x0CC,0x00C,0x038,0x00C,0x0CC,0x078,0x000, /* 033 */ X 0x01C,0x03C,0x06C,0x0CC,0x0FE,0x00C,0x01E,0x000, /* 034 */ X 0x0FC,0x0C0,0x0F8,0x00C,0x00C,0x0CC,0x078,0x000, /* 035 */ X 0x038,0x060,0x0C0,0x0F8,0x0CC,0x0CC,0x078,0x000, /* 036 */ X 0x0FC,0x0CC,0x00C,0x018,0x030,0x030,0x030,0x000, /* 037 */ X 0x078,0x0CC,0x0CC,0x078,0x0CC,0x0CC,0x078,0x000, /* 038 */ X 0x078,0x0CC,0x0CC,0x07C,0x00C,0x018,0x070,0x000, /* 039 */ X 0x000,0x030,0x030,0x000,0x000,0x030,0x030,0x000, /* 03A */ X 0x000,0x030,0x030,0x000,0x000,0x030,0x030,0x060, /* 03B */ X 0x018,0x030,0x060,0x0C0,0x060,0x030,0x018,0x000, /* 03C */ X 0x000,0x000,0x0FC,0x000,0x000,0x0FC,0x000,0x000, /* 03D */ X 0x060,0x030,0x018,0x00C,0x018,0x030,0x060,0x000, /* 03E */ X 0x078,0x0CC,0x00C,0x018,0x030,0x000,0x030,0x000, /* 03F */ X 0x07C,0x0C6,0x0DE,0x0DE,0x0DE,0x0C0,0x078,0x000, /* 040 */ X 0x030,0x078,0x0CC,0x0CC,0x0FC,0x0CC,0x0CC,0x000, /* 041 */ X 0x0FC,0x066,0x066,0x07C,0x066,0x066,0x0FC,0x000, /* 042 */ X 0x03C,0x066,0x0C0,0x0C0,0x0C0,0x066,0x03C,0x000, /* 043 */ X 0x0F8,0x06C,0x066,0x066,0x066,0x06C,0x0F8,0x000, /* 044 */ X 0x0FE,0x062,0x068,0x078,0x068,0x062,0x0FE,0x000, /* 045 */ X 0x0FE,0x062,0x068,0x078,0x068,0x060,0x0F0,0x000, /* 046 */ X 0x03C,0x066,0x0C0,0x0C0,0x0CE,0x066,0x03E,0x000, /* 047 */ X 0x0CC,0x0CC,0x0CC,0x0FC,0x0CC,0x0CC,0x0CC,0x000, /* 048 */ X 0x078,0x030,0x030,0x030,0x030,0x030,0x078,0x000, /* 049 */ X 0x01E,0x00C,0x00C,0x00C,0x0CC,0x0CC,0x078,0x000, /* 04A */ X 0x0E6,0x066,0x06C,0x078,0x06C,0x066,0x0E6,0x000, /* 04B */ X 0x0F0,0x060,0x060,0x060,0x062,0x066,0x0FE,0x000, /* 04C */ X 0x0C6,0x0EE,0x0FE,0x0FE,0x0D6,0x0C6,0x0C6,0x000, /* 04D */ X 0x0C6,0x0E6,0x0F6,0x0DE,0x0CE,0x0C6,0x0C6,0x000, /* 04E */ X 0x038,0x06C,0x0C6,0x0C6,0x0C6,0x06C,0x038,0x000, /* 04F */ X 0x0FC,0x066,0x066,0x07C,0x060,0x060,0x0F0,0x000, /* 050 */ X 0x078,0x0CC,0x0CC,0x0CC,0x0DC,0x078,0x01C,0x000, /* 051 */ X 0x0FC,0x066,0x066,0x07C,0x06C,0x066,0x0E6,0x000, /* 052 */ X 0x078,0x0CC,0x0E0,0x070,0x01C,0x0CC,0x078,0x000, /* 053 */ X 0x0FC,0x0B4,0x030,0x030,0x030,0x030,0x078,0x000, /* 054 */ X 0x0CC,0x0CC,0x0CC,0x0CC,0x0CC,0x0CC,0x0FC,0x000, /* 055 */ X 0x0CC,0x0CC,0x0CC,0x0CC,0x0CC,0x078,0x030,0x000, /* 056 */ X 0x0C6,0x0C6,0x0C6,0x0D6,0x0FE,0x0EE,0x0C6,0x000, /* 057 */ X 0x0C6,0x0C6,0x06C,0x038,0x038,0x06C,0x0C6,0x000, /* 058 */ X 0x0CC,0x0CC,0x0CC,0x078,0x030,0x030,0x078,0x000, /* 059 */ X 0x0FE,0x0C6,0x08C,0x018,0x032,0x066,0x0FE,0x000, /* 05A */ X 0x078,0x060,0x060,0x060,0x060,0x060,0x078,0x000, /* 05B */ X 0x0C0,0x060,0x030,0x018,0x00C,0x006,0x002,0x000, /* 05C */ X 0x078,0x018,0x018,0x018,0x018,0x018,0x078,0x000, /* 05D */ X 0x010,0x038,0x06C,0x0C6,0x000,0x000,0x000,0x000, /* 05E */ X 0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x0FF, /* 05F */ X 0x030,0x030,0x018,0x000,0x000,0x000,0x000,0x000, /* 060 */ X 0x000,0x000,0x078,0x00C,0x07C,0x0CC,0x076,0x000, /* 061 */ X 0x0E0,0x060,0x060,0x07C,0x066,0x066,0x0DC,0x000, /* 062 */ X 0x000,0x000,0x078,0x0CC,0x0C0,0x0CC,0x078,0x000, /* 063 */ X 0x01C,0x00C,0x00C,0x07C,0x0CC,0x0CC,0x076,0x000, /* 064 */ X 0x000,0x000,0x078,0x0CC,0x0FC,0x0C0,0x078,0x000, /* 065 */ X 0x038,0x06C,0x060,0x0F0,0x060,0x060,0x0F0,0x000, /* 066 */ X 0x000,0x000,0x076,0x0CC,0x0CC,0x07C,0x00C,0x0F8, /* 067 */ X 0x0E0,0x060,0x06C,0x076,0x066,0x066,0x0E6,0x000, /* 068 */ X 0x030,0x000,0x070,0x030,0x030,0x030,0x078,0x000, /* 069 */ X 0x00C,0x000,0x00C,0x00C,0x00C,0x0CC,0x0CC,0x078, /* 06A */ X 0x0E0,0x060,0x066,0x06C,0x078,0x06C,0x0E6,0x000, /* 06B */ X 0x070,0x030,0x030,0x030,0x030,0x030,0x078,0x000, /* 06C */ X 0x000,0x000,0x0CC,0x0FE,0x0FE,0x0D6,0x0C6,0x000, /* 06D */ X 0x000,0x000,0x0F8,0x0CC,0x0CC,0x0CC,0x0CC,0x000, /* 06E */ X 0x000,0x000,0x078,0x0CC,0x0CC,0x0CC,0x078,0x000, /* 06F */ X 0x000,0x000,0x0DC,0x066,0x066,0x07C,0x060,0x0F0, /* 070 */ X 0x000,0x000,0x076,0x0CC,0x0CC,0x07C,0x00C,0x01E, /* 071 */ X 0x000,0x000,0x0DC,0x076,0x066,0x060,0x0F0,0x000, /* 072 */ X 0x000,0x000,0x07C,0x0C0,0x078,0x00C,0x0F8,0x000, /* 073 */ X 0x010,0x030,0x07C,0x030,0x030,0x034,0x018,0x000, /* 074 */ X 0x000,0x000,0x0CC,0x0CC,0x0CC,0x0CC,0x076,0x000, /* 075 */ X 0x000,0x000,0x0CC,0x0CC,0x0CC,0x078,0x030,0x000, /* 076 */ X 0x000,0x000,0x0C6,0x0D6,0x0FE,0x0FE,0x06C,0x000, /* 077 */ X 0x000,0x000,0x0C6,0x06C,0x038,0x06C,0x0C6,0x000, /* 078 */ X 0x000,0x000,0x0CC,0x0CC,0x0CC,0x07C,0x00C,0x0F8, /* 079 */ X 0x000,0x000,0x0FC,0x098,0x030,0x064,0x0FC,0x000, /* 07A */ X 0x01C,0x030,0x030,0x0E0,0x030,0x030,0x01C,0x000, /* 07B */ X 0x018,0x018,0x018,0x000,0x018,0x018,0x018,0x000, /* 07C */ X 0x0E0,0x030,0x030,0x01C,0x030,0x030,0x0E0,0x000, /* 07D */ X 0x076,0x0DC,0x000,0x000,0x000,0x000,0x000,0x000, /* 07E */ X 0x000,0x010,0x038,0x06C,0x0C6,0x0C6,0x0FE,0x000, /* 07F */ X 0x078,0x0CC,0x0C0,0x0CC,0x078,0x018,0x00C,0x078, /* 080 */ X 0x000,0x066,0x000,0x066,0x066,0x066,0x03F,0x000, /* 081 */ X 0x00E,0x000,0x03C,0x066,0x07E,0x060,0x03C,0x000, /* 082 */ X 0x07E,0x0C3,0x03C,0x006,0x03E,0x066,0x03F,0x000, /* 083 */ X 0x066,0x000,0x03C,0x006,0x03E,0x066,0x03F,0x000, /* 084 */ X 0x070,0x000,0x03C,0x006,0x03E,0x066,0x03F,0x000, /* 085 */ X 0x018,0x018,0x03C,0x006,0x03E,0x066,0x03F,0x000, /* 086 */ X 0x000,0x000,0x03C,0x060,0x060,0x03C,0x006,0x01C, /* 087 */ X 0x07E,0x0C3,0x03C,0x066,0x07E,0x060,0x03C,0x000, /* 088 */ X 0x066,0x000,0x03C,0x066,0x07E,0x060,0x03C,0x000, /* 089 */ X 0x070,0x000,0x03C,0x066,0x07E,0x060,0x03C,0x000, /* 08A */ X 0x066,0x000,0x038,0x018,0x018,0x018,0x03C,0x000, /* 08B */ X 0x07C,0x0C6,0x038,0x018,0x018,0x018,0x03C,0x000, /* 08C */ X 0x070,0x000,0x038,0x018,0x018,0x018,0x03C,0x000, /* 08D */ X 0x063,0x01C,0x036,0x063,0x07F,0x063,0x063,0x000, /* 08E */ X 0x018,0x018,0x000,0x03C,0x066,0x07E,0x066,0x000, /* 08F */ X 0x00E,0x000,0x07E,0x030,0x03C,0x030,0x07E,0x000, /* 090 */ X 0x000,0x000,0x07F,0x00C,0x07F,0x0CC,0x07F,0x000, /* 091 */ X 0x01F,0x036,0x066,0x07F,0x066,0x066,0x067,0x000, /* 092 */ X 0x03C,0x066,0x000,0x03C,0x066,0x066,0x03C,0x000, /* 093 */ X 0x000,0x066,0x000,0x03C,0x066,0x066,0x03C,0x000, /* 094 */ X 0x000,0x070,0x000,0x03C,0x066,0x066,0x03C,0x000, /* 095 */ X 0x03C,0x066,0x000,0x066,0x066,0x066,0x03F,0x000, /* 096 */ X 0x000,0x070,0x000,0x066,0x066,0x066,0x03F,0x000, /* 097 */ X 0x000,0x066,0x000,0x066,0x066,0x03E,0x006,0x07C, /* 098 */ X 0x0C3,0x018,0x03C,0x066,0x066,0x03C,0x018,0x000, /* 099 */ X 0x066,0x000,0x066,0x066,0x066,0x066,0x03C,0x000, /* 09A */ X 0x018,0x018,0x07E,0x0C0,0x0C0,0x07E,0x018,0x018, /* 09B */ X 0x01C,0x036,0x032,0x078,0x030,0x073,0x07E,0x000, /* 09C */ X 0x066,0x066,0x03C,0x07E,0x018,0x07E,0x018,0x018, /* 09D */ X 0x0F8,0x0CC,0x0CC,0x0FA,0x0C6,0x0CF,0x0C6,0x0C7, /* 09E */ X 0x00E,0x01B,0x018,0x03C,0x018,0x018,0x0D8,0x070, /* 09F */ X 0x00E,0x000,0x03C,0x006,0x03E,0x066,0x03F,0x000, /* 0A0 */ X 0x01C,0x000,0x038,0x018,0x018,0x018,0x03C,0x000, /* 0A1 */ X 0x000,0x00E,0x000,0x03C,0x066,0x066,0x03C,0x000, /* 0A2 */ X 0x000,0x00E,0x000,0x066,0x066,0x066,0x03F,0x000, /* 0A3 */ X 0x000,0x07C,0x000,0x07C,0x066,0x066,0x066,0x000, /* 0A4 */ X 0x07E,0x000,0x066,0x076,0x07E,0x06E,0x066,0x000, /* 0A5 */ X 0x03C,0x06C,0x06C,0x03E,0x000,0x07E,0x000,0x000, /* 0A6 */ X 0x038,0x06C,0x06C,0x038,0x000,0x07C,0x000,0x000, /* 0A7 */ X 0x018,0x000,0x018,0x030,0x060,0x066,0x03C,0x000, /* 0A8 */ X 0x000,0x000,0x000,0x07E,0x060,0x060,0x000,0x000, /* 0A9 */ X 0x000,0x000,0x000,0x07E,0x006,0x006,0x000,0x000, /* 0AA */ X 0x0C3,0x0C6,0x0CC,0x0DE,0x033,0x066,0x0CC,0x00F, /* 0AB */ X 0x0C3,0x0C6,0x0CC,0x000,0x037,0x06F,0x0CF,0x003, /* 0AC */ X 0x018,0x018,0x000,0x018,0x018,0x018,0x018,0x000, /* 0AD */ X 0x000,0x033,0x066,0x0CC,0x066,0x033,0x000,0x000, /* 0AE */ X 0x000,0x0CC,0x066,0x033,0x066,0x0CC,0x000,0x000, /* 0AF */ X 0x022,0x088,0x022,0x088,0x022,0x088,0x022,0x088, /* 0B0 */ X 0x055,0x0AA,0x055,0x0AA,0x055,0x0AA,0x055,0x0AA, /* 0B1 */ X 0x000,0x077,0x000,0x0EE,0x000,0x077,0x000,0x0EE, /* 0B2 */ X 0x018,0x018,0x018,0x018,0x018,0x018,0x018,0x018, /* 0B3 */ X 0x018,0x018,0x018,0x018,0x0F8,0x018,0x018,0x018, /* 0B4 */ X 0x018,0x018,0x0F8,0x018,0x0F8,0x018,0x018,0x018, /* 0B5 */ X 0x036,0x036,0x036,0x036,0x0F6,0x036,0x036,0x036, /* 0B6 */ X 0x000,0x000,0x000,0x000,0x0FE,0x036,0x036,0x036, /* 0B7 */ X 0x000,0x000,0x0F8,0x018,0x0F8,0x018,0x018,0x018, /* 0B8 */ X 0x036,0x036,0x0F6,0x006,0x0F6,0x036,0x036,0x036, /* 0B9 */ X 0x036,0x036,0x036,0x036,0x036,0x036,0x036,0x036, /* 0BA */ X 0x000,0x000,0x0FE,0x006,0x0F6,0x036,0x036,0x036, /* 0BB */ X 0x036,0x036,0x0F6,0x006,0x0FE,0x000,0x000,0x000, /* 0BC */ X 0x036,0x036,0x036,0x036,0x0FE,0x000,0x000,0x000, /* 0BD */ X 0x018,0x018,0x0F8,0x018,0x0F8,0x000,0x000,0x000, /* 0BE */ X 0x000,0x000,0x000,0x000,0x0F8,0x018,0x018,0x018, /* 0BF */ X 0x018,0x018,0x018,0x018,0x01F,0x000,0x000,0x000, /* 0C0 */ X 0x018,0x018,0x018,0x018,0x0FF,0x000,0x000,0x000, /* 0C1 */ X 0x000,0x000,0x000,0x000,0x0FF,0x018,0x018,0x018, /* 0C2 */ X 0x018,0x018,0x018,0x018,0x01F,0x018,0x018,0x018, /* 0C3 */ X 0x000,0x000,0x000,0x000,0x0FF,0x000,0x000,0x000, /* 0C4 */ X 0x018,0x018,0x018,0x018,0x0FF,0x018,0x018,0x018, /* 0C5 */ X 0x018,0x018,0x01F,0x018,0x01F,0x018,0x018,0x018, /* 0C6 */ X 0x036,0x036,0x036,0x036,0x037,0x036,0x036,0x036, /* 0C7 */ X 0x036,0x036,0x037,0x030,0x03F,0x000,0x000,0x000, /* 0C8 */ X 0x000,0x000,0x03F,0x030,0x037,0x036,0x036,0x036, /* 0C9 */ X 0x036,0x036,0x0F7,0x000,0x0FF,0x000,0x000,0x000, /* 0CA */ X 0x000,0x000,0x0FF,0x000,0x0F7,0x036,0x036,0x036, /* 0CB */ X 0x036,0x036,0x037,0x030,0x037,0x036,0x036,0x036, /* 0CC */ X 0x000,0x000,0x0FF,0x000,0x0FF,0x000,0x000,0x000, /* 0CD */ X 0x036,0x036,0x0F7,0x000,0x0F7,0x036,0x036,0x036, /* 0CE */ X 0x018,0x018,0x0FF,0x000,0x0FF,0x000,0x000,0x000, /* 0CF */ X 0x036,0x036,0x036,0x036,0x0FF,0x000,0x000,0x000, /* 0D0 */ X 0x000,0x000,0x0FF,0x000,0x0FF,0x018,0x018,0x018, /* 0D1 */ X 0x000,0x000,0x000,0x000,0x0FF,0x036,0x036,0x036, /* 0D2 */ X 0x036,0x036,0x036,0x036,0x03F,0x000,0x000,0x000, /* 0D3 */ X 0x018,0x018,0x01F,0x018,0x01F,0x000,0x000,0x000, /* 0D4 */ X 0x000,0x000,0x01F,0x018,0x01F,0x018,0x018,0x018, /* 0D5 */ X 0x000,0x000,0x000,0x000,0x03F,0x036,0x036,0x036, /* 0D6 */ X 0x036,0x036,0x036,0x036,0x0FF,0x036,0x036,0x036, /* 0D7 */ X 0x018,0x018,0x0FF,0x018,0x0FF,0x018,0x018,0x018, /* 0D8 */ X 0x018,0x018,0x018,0x018,0x0F8,0x000,0x000,0x000, /* 0D9 */ X 0x000,0x000,0x000,0x000,0x01F,0x018,0x018,0x018, /* 0DA */ X 0x0FF,0x0FF,0x0FF,0x0FF,0x0FF,0x0FF,0x0FF,0x0FF, /* 0 */ X 0x000,0x000,0x000,0x000,0x0FF,0x0FF,0x0FF,0x0FF, /* 0DC */ X 0x0F0,0x0F0,0x0F0,0x0F0,0x0F0,0x0F0,0x0F0,0x0F0, /* 0DD */ X 0x00F,0x00F,0x00F,0x00F,0x00F,0x00F,0x00F,0x00F, /* 0DE */ X 0x0FF,0x0FF,0x0FF,0x0FF,0x000,0x000,0x000,0x000, /* 0DF */ X 0x000,0x000,0x03B,0x06E,0x064,0x06E,0x03B,0x000, /* 0E0 */ X 0x000,0x03C,0x066,0x07C,0x066,0x07C,0x060,0x060, /* 0E1 */ X 0x000,0x07E,0x066,0x060,0x060,0x060,0x060,0x000, /* 0E2 */ X 0x000,0x07F,0x036,0x036,0x036,0x036,0x036,0x000, /* 0E3 */ X 0x07E,0x066,0x030,0x018,0x030,0x066,0x07E,0x000, /* 0E4 */ X 0x000,0x000,0x03F,0x06C,0x06C,0x06C,0x038,0x000, /* 0E5 */ X 0x000,0x033,0x033,0x033,0x033,0x03E,0x030,0x060, /* 0E6 */ X 0x000,0x03B,0x06E,0x00C,0x00C,0x00C,0x00C,0x000, /* 0E7 */ X 0x07E,0x018,0x03C,0x066,0x066,0x03C,0x018,0x07E, /* 0E8 */ X 0x01C,0x036,0x063,0x07F,0x063,0x036,0x01C,0x000, /* 0E9 */ X 0x01C,0x036,0x063,0x063,0x036,0x036,0x077,0x000, /* 0EA */ X 0x00E,0x018,0x00C,0x03E,0x066,0x066,0x03C,0x000, /* 0EB */ X 0x000,0x000,0x07E,0x000,0x000,0x07E,0x000,0x000, /* 0EC */ X 0x006,0x00C,0x07E,0x000,0x000,0x07E,0x060,0x0C0, /* 0ED */ X 0x01C,0x060,0x0C0,0x0FC,0x0C0,0x060,0x01C,0x000, /* 0EE */ X 0x03C,0x066,0x066,0x066,0x066,0x066,0x066,0x000, /* 0EF */ X 0x000,0x07E,0x000,0x07E,0x000,0x07E,0x000,0x000, /* 0F0 */ X 0x018,0x018,0x07E,0x018,0x018,0x000,0x07E,0x000, /* 0F1 */ X 0x030,0x018,0x00C,0x018,0x030,0x000,0x07E,0x000, /* 0F2 */ X 0x00C,0x018,0x030,0x018,0x00C,0x000,0x07E,0x000, /* 0F3 */ X 0x00E,0x01B,0x01B,0x018,0x018,0x018,0x018,0x018, /* 0F4 */ X 0x018,0x018,0x018,0x018,0x018,0x0D8,0x0D8,0x070, /* 0F5 */ X 0x018,0x018,0x000,0x07E,0x000,0x018,0x018,0x000, /* 0F6 */ X 0x000,0x076,0x0DC,0x000,0x076,0x0DC,0x000,0x000, /* 0F7 */ X 0x038,0x06C,0x06C,0x038,0x000,0x000,0x000,0x000, /* 0F8 */ X 0x000,0x000,0x000,0x018,0x018,0x000,0x000,0x000, /* 0F9 */ X 0x000,0x000,0x000,0x000,0x018,0x000,0x000,0x000, /* 0FA */ X 0x00F,0x00C,0x00C,0x00C,0x0EC,0x06C,0x03C,0x01C, /* 0FB */ X 0x078,0x06C,0x06C,0x06C,0x06C,0x000,0x000,0x000, /* 0FC */ X 0x070,0x018,0x030,0x060,0x078,0x000,0x000,0x000, /* 0FD */ X 0x000,0x000,0x03C,0x03C,0x03C,0x03C,0x000,0x000, /* 0FE */ X 0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000 /* 0FF */ X}; XxX--EOF--XxX echo restoring g_pixctl.c sed 's/^X//' > g_pixctl.c <<XxX--EOF--XxX X X#ifndef lint Xstatic char sccsid[] = "@(#) g_pixctl.c 5.1 89/02/20"; X#endif X X/* X * Copyright (c) David T. Lewis 1988 X * All rights reserved. X * X * Permission is granted to use this for any personal noncommercial use. X * You may not distribute source or executable code for profit, nor X * may you distribute it with a commercial product without the written X * consent of the author. Please send modifications to the author for X * inclusion in updates to the program. Thanks. X */ X X/* X * This module contains routines for setting pixel color and writing X * mode, and for setting line weight and style. X */ X X#include "config.h" X#include "bitmaps.h" X#include "gf_types.h" X#include "graphics.h" X#include "modes.h" X X#define ROT_MASK ((long)0x80000000L) X Xextern struct GL_graphics graphics; Xextern int p_wr_pix(); X Xstatic int p_mask_pix(); Xstatic long current_style; X Xint (*p_do_pix)(); /* Called by n_draw() */ X X/* Set the color to be used for all pixel operations. The returned */ X/* value is the previous color setting. */ X Xint g_pix_color(color) Xint color; X{ X int last_color; X last_color = graphics.color; X graphics.color = color; X if (graphics.grafmode == EGA_COLOR_MODE) { X /* Write to EGA registers. Not yet implemented. */ X /* Ditto for VGA. */ X } X return(last_color); X} X X/* Set the pixel writing mode to update pixels in either OR mode */ X/* (set the pixel on, regardless of previous state), or XOR mode */ X/* (pixel is XORed with its previous value). XOR mode is used for */ X/* things like graphics cursors which may be placed on the screen */ X/* without destroying the previous screen contents. */ X/* The returned value is the previous state of the pixel mode. */ X Xint g_pix_mode(mode_val) Xint mode_val; X{ X int last_mode; X last_mode = graphics.wrt_mode; X switch (mode_val) { X case CLEAR: /* (Not yet implemented) */ X graphics.wrt_mode = CLEAR; X break; X case AND: /* (Not yet implemented) */ X graphics.wrt_mode = AND; X break; X case OR: X graphics.wrt_mode = OR; X break; X case XOR: X graphics.wrt_mode = XOR; X break; X default: X graphics.wrt_mode = OR; X break; X } X return(last_mode); X} X X/* Set the line thickness to be used for all line drawing operations. */ X/* The returned value is the previous line weight setting. */ X Xint g_weight(lineweight) Xint lineweight; X{ X int last_weight; X last_weight = graphics.lineweight; X graphics.lineweight = lineweight; X return(last_weight); X} X X/* P_mask_pix() will be used only if a line style is desired. */ X/* Otherwise, we will directly invoke p_wr_pix(). */ X Xstatic int p_mask_pix(x, y) Xint x, y; X{ X /* If high bit in graphics.linestyle is a 1, then */ X /* write the pixel; otherwise, don't write it. */ X X if (((current_style & ROT_MASK)) != 0) { X /* High bit set, rotate the line style mask */ X /* and write the pixel. */ X current_style = current_style<<1; X current_style++; X return (p_wr_pix(x, y)); X } X else { X /* Rotate mask, but don't write pixel. */ X current_style = current_style<<1; X return(0); X } X} X X/* Line style (e.g. dot-dash) */ X X/* Set the line style (e.g. dot-dash) to be used for all line drawing */ X/* operations. The returned value is the previous line style setting. */ X Xlong g_style(linestyle) Xlong linestyle; X{ X long last_style; X last_style = graphics.linestyle; X X /* The current "state" of linestyle is stored in */ X /* graphics.linestyle, and a copy of this value is */ X /* kept locally in current_style, to be manipulated by */ X /* the g_mask_pix() routine (above). */ X graphics.linestyle = current_style = linestyle; X X /* Decide what type of pixel routine to use. If we */ X /* have to consider line style, then we will use */ X /* mask_pix(). */ X if (linestyle == SOLID) { X p_do_pix = p_wr_pix; X } X else { X p_do_pix = p_mask_pix; X } X return(last_style); X} X X XxX--EOF--XxX echo restoring graphics.h sed 's/^X//' > graphics.h <<XxX--EOF--XxX X X/* @(#) graphics.h 5.1 89/02/20 */ X/* X * Copyright (c) David T. Lewis 1987, 1988 X * All rights reserved. X * X * Permission is granted to use this for any personal noncommercial use. X * You may not distribute source or executable code for profit, nor X * may you distribute it with a commercial product without the written X * consent of the author. Please send modifications to the author for X * inclusion in updates to the program. Thanks. X */ X X/* Sun Dec 20 18:31:11 EST 1987 */ X/* system5 dtlewis 2 2.2-U AT */ X X#if XENIX_286 /* Support mixed memory model for MS compilers. */ X#define FAR far X#else X#define FAR X#endif /* XENIX_286 */ X X#define TRUE (1) X#define FALSE (0) X X/* X * The following are for MS-DOS and BIOS calls. X */ X#define DOS 0x021 X#define VIDEO_BIOS 0x010 X#define SET_VIDEO_MODE 0x00 X#define GET_VIDEO_MODE 0x0f X#define DOS_GET_TIME 0x2c X#define WRT_PIXEL 0x0C X X/* X * The following are masks for the four possible 2-bit pixel X * positions in CGA 320x200 mode. X */ X#define PIX0 0x0C0 X#define PIX1 0x030 X#define PIX2 0x0C X#define PIX3 0x03 X X/* X * Define range of the normalized 2D coordinate system X */ X#define NRM_X_MIN 0 X#define NRM_Y_MIN 0 X#define NRM_X_MAX 32767 X#define NRM_Y_MAX 32767 X#define NRM_X_RANGE 0x7FFFL X#define NRM_Y_RANGE 0x7FFFL X X/* X * Define TRIG_SCALE, F_TRIG_SCALE and PTS_PER_QUADRANT for use in X * trig.c and related routines. X */ X#define TRIG_SCALE 32768 /* Factor by which the cos and sin */ X /* tables are multiplied in order to */ X /* be able to use them in integer math. */ X /* This also effects contents of */ X /* cos_table and sin_table. */ X X#define F_TRIG_SCALE 32768.0 /* Floating point version. */ X X#define PTS_PER_QUADRANT 64 /* Don't change this without also */ X /* changing the initializations for the */ X /* cos_table and sin_table tables also! */ X X#define X_CELL_BITS 8 /* Number of bits per character cell */ X /* in X direction. */ X X#define Y_CELL_BITS 8 /* Number of bits per character cell */ X /* in Y direction. */ X X/* Define transforms for normalized 2-D drawing space to pixel space. */ X/* These routines convert from normalized (x,y) coordinates to local */ X/* screen pixel coordinates. The normalized coordinate system extends */ X/* from 0 to 32767 in the x direction, and from 0 to 32767 in the */ X/* downward y direction, with the origin at the upper left of the */ X/* screen. Screen aspect ratio is not taken into account. */ X X#if N_TO_P_MACRO X#define n_to_p_x(x) ((int)(((long)x * graphics.x_extent) / NRM_X_RANGE)) X#define n_to_p_y(y) ((int)(((long)y * graphics.y_extent) / NRM_Y_RANGE)) X#else X/* See the machdep.c file for alternative routines for dumb compilers. */ X#endif /* N_TO_P_MACRO */ X Xstruct GL_graphics { X X int initialized; /* Set true by call to g_init(). */ X X /* Pointers to structures representing screen (or printer) */ X /* bitmaps. A separate pointer(s) are used for each possible */ X /* bitmap type. */ X X CGA_BUF_TYPE FAR *cgamem; /* Pointer to video memory segment. */ X /* Will be used by the p_wr_pix() */ X /* routine. */ X X EGA_BUF_TYPE FAR *egamem; /* Pointer to video memory segment. */ X /* Will be used by the p_wr_pix() */ X /* routine. */ X X HERC_BUF_TYPE FAR *hercmem; /* Pointer to video memory segment. */ X /* Will be used by the p_wr_pix() */ X /* routine. */ X X PR_BUF_TYPE FAR *printbuf1; /* Pointers to IBM/Epson printer */ X PR_BUF_TYPE FAR *printbuf2; /* bit map segments. Will be used */ X PR_BUF_TYPE FAR *printbuf3; /* by the p_wr_pix() routine. */ X X LJ_BUF_TYPE FAR *lj_buf1; /* Pointers to Laserjet printer bit */ X LJ_BUF_TYPE FAR *lj_buf2; /* map segments. Will be used by */ X LJ_BUF_TYPE FAR *lj_buf3; /* the p_wr_pix() routine. */ X X /* The graphics "cursor" is used by all routines operating in */ X /* normalized 2-D coordinate space. */ X X int x_cursor; /* Graphics cursor position in pixel */ X /* units on x axis. */ X int y_cursor; /* Graphics cursor position in pixel */ X /* units on y axis. */ X X /* Dimensions of the physical screen. The width of the screen */ X /* in pixels is, for example, 639 for a screen with 640 */ X /* horizontal pixels. Aspect ratio varies according to the */ X /* graphics mode and physical monitor used. */ X X int x_extent, /* Width and height of screen in units */ X y_extent; /* of pixels. */ X X float aspect_ratio; /* Height of screen divided by width. */ X X /* Variables used for coordinate transformations (partially */ X /* implemented). */ X X float xlate_x, /* Translation prior to rotation and */ X xlate_y, /* scaling, perspective, viewports, and */ X xlate_z; /* windows. */ X X float offset_x, /* Offset from origin of world */ X offset_y, /* coordinates (after translation), */ X offset_z; /* about which we will rotate, scale, */ X /* and do perspective. */ X X float theta_x, /* Angle of rotation about x axis. */ X /* (z to y right hand rule.) */ X theta_y, /* Angle of rotation about y axis. */ X /* (z to x right hand rule.) */ X theta_z; /* Angle of rotation about x axis. */ X /* (x to y right hand rule.) */ X X /* Factors used in the 3D to 2D rotation matrix. We want to */ X /* calculate them once, then use them repeatedly. */ X X float c_tz_c_ty, /* cos(theta_z)*cos(theta_y) */ X s_tz, /* sin(theta_z) */ X s_ty, /* sin(theta_y) */ X c_tz_c_tx, /* cos(theta_z)*cos(theta_x) */ X s_tx; /* sin(theta_x) */ X X float scale_factor; /* Scaling factor, after rotation, */ X /* before perspective. */ X X float perspect_dist; /* Perspective viewing distance. */ X X int x_vport_ll, /* Lower left and upper right x and y */ X y_vport_ll, /* coordinates of the viewport in the */ X x_vport_ur, /* normalized coordinate space. */ X y_vport_ur; X X int x_window_ll, /* Lower left and upper right x and y */ X y_window_ll, /* coordinates of the active windo in */ X x_window_ur, /* terms of normalized coordinate */ X y_window_ur; /* space. */ X X /* Drawing control variables. */ X X int grafmode; /* Video display mode */ X X int color; /* Color of line to draw */ X X int lineweight; /* Line thickness */ X X long linestyle; /* Line style (e.g. dot-dash) */ X X int wrt_mode; /* Pixel writing mode (OR, XOR, etc) */ X X /* Stroke font control parameters. */ X X struct { X int xtic; /* Character to character distance */ X int ytic; /* Line to line distance */ X int xsize; /* Vertical character size */ X int ysize; /* Horizontal character size */ X float angle; /* Rotation angle of text line, in */ X /* counterclockwise radians. */ X float slant; /* Char slant angle, in clockwise */ X /* radians. */ X int angle_flag; /* Set TRUE if angle is non-zero. */ X /* If TRUE, we need to do extra work to */ X /* draw characters. */ X int slant_flag; /* Set TRUE if slant is non-zero. */ X /* If TRUE, we need to do extra work to */ X /* draw characters. */ X } strokefont, default_strokefont; X X /* Bitmap font parameters. */ X X struct { X int chars_per_line; X int lines_per_screen; X int xtic; /* Character to character distance */ X int ytic; /* Line to line distance */ X int xmult; /* If 2, then make double wide, etc. */ X int ymult; /* If 2, then make double high, etc. */ X } cellfont; X}; X XxX--EOF--XxX echo restoring machdep.c sed 's/^X//' > machdep.c <<XxX--EOF--XxX X#ifndef lint Xstatic char sccsid[] = "@(#) machdep.c 5.1 89/02/20"; X#endif X X/* X * Copyright (c) David T. Lewis 1989 X * All rights reserved. X * X * Permission is granted to use this for any personal noncommercial use. X * You may not distribute source or executable code for profit, nor X * may you distribute it with a commercial product without the written X * consent of the author. Please send modifications to the author for X * inclusion in updates to the program. Thanks. X */ X X/* Mon Jan 23 00:01:41 EST 1989 */ X/* Miscellaneous machine dependent routines required to support MS-DOS */ X X#include <stdio.h> X#include "config.h" X#include "bitmaps.h" X#include "gf_types.h" X#include "graphics.h" X#if MIX_C X#include <stdlib.h> X#else X#include <sys/types.h> X#include <math.h> X#if MS_DOS X#include <dos.h> X#endif /* MS_DOS */ X#endif /* MIX_C */ X X#ifndef M_PI X#define M_PI 3.14159265358979323846 X#endif /* M_PI */ X X#define PTR_OK_STAT (0x90) X#define BIOS_PTR_INT (0x17) X#define DOS_KBY_STAT 0x0b X Xextern struct GL_graphics graphics; X X#if MS_DOS Xstatic REGISTERS inreg, outreg; X#endif /* MS_DOS */ X X/* The next two routines can take the place of macros defined in */ X/* graphics.h, for compilers that can't use them. */ X X#if N_TO_P_MACRO X#else X Xint n_to_p_x(x) Xint x; X{ X long lval; X lval = x; X lval *= graphics.x_extent; X lval /= NRM_X_RANGE; X return (lval); X} X Xint n_to_p_y(y) Xint y; X{ X long lval; X lval = y; X lval *= graphics.y_extent; X lval /= NRM_Y_RANGE; X return (lval); X} X#endif /* N_TO_P_MACRO */ X X#if HAS_FMOD X#else X/* fmod(3M) replacement for MIX-C compiler, MS-DOS. */ X Xdouble fmod(x,y) Xdouble x, y; X{ X /* x = i*y + f for some value i such that |f| < |y|. */ X /* Solve for f. */ X X long lval; X double dval; X X /* Check for zero or overflow */ X if (x == 0L || y == 0L) return(0L); X X dval = x / y; X lval = (long)dval; X return (x - (double)lval * y); X} X#endif /* HAS_FMOD */ X X#if HAS_ATAN2 X#else X/* atan2(3M) replacement for MIX-C compiler, MS-DOS. */ X/* Returns arctan of y/x. */ X Xdouble atan2(y,x) Xdouble y, x; X{ X if (x>=0) { X /* atan() works fine when angle is in */ X /* 1st or 4th quadrant. */ X return (atan (y/x)); X } X else { X if (y<0) { X /* 3rd quadrant */ X return ( -(M_PI - atan (y/x))); X } X else { X /* 2nd quadrant */ X return (M_PI - atan (y/x)); X } X } X} X#endif /* HAS_ATAN2 */ X X#if HAS_SLEEP X#else X/* Replacement for the sleep() function (for some MS-DOS compilers). */ X Xint sleep(seconds) Xint seconds; X{ X/* It's OK for this to be inefficient, since we are only wasting */ X/* time anyhow. Therefore, use the DOS call rather than BIOS. That */ X/* way, we don't screw up the DOS system clock if we call BIOS at */ X/* midnight. */ X#define TICKS_PER_SEC 18.2 X#define A_BIG_NUMBER 360000 X long time_to_return; X long now; X /* Get the current time using DOS function 0x2c */ X inreg.AH = DOS_GET_TIME; X DO_BIOS(DOS, &inreg, &outreg); X time_to_return = outreg.DL /* Hundredths */ X + (outreg.DH * 100) /* Seconds */ X + (outreg.CL * 6000) /* Minutes */ X + (outreg.CH * 360000) /* Hours */ X + (seconds * 100); /* Add delay time */ X now = 0L; X while (now < time_to_return) { X /* Check the time until done. */ X inreg.AH = DOS_GET_TIME; X DO_BIOS(DOS, &inreg, &outreg); X now = outreg.DL /* Hundredths */ X + (outreg.DH * 100) /* Seconds */ X + (outreg.CL * 6000) /* Minutes */ X + (outreg.CH * 360000); /* Hours */ X /* Check for rollover at midnight */ X if ((time_to_return - now) > A_BIG_NUMBER) { X /* Subtract 24 hours */ X time_to_return -= 360000 * 24; X } X } X return (0); X} X X#endif /* HAS_SLEEP */ X X#if MS_DOS X/* Routines to get and set video modes for MS-DOS. See the defines in */ X/* config.h to understand how the register assignments work. */ X Xint g_setmod(mode) Xint mode; X{ X /* BIOS interrupt 0x10 function 0 */ X inreg.AH = SET_VIDEO_MODE; X inreg.AL = mode; /* Video mode */ X DO_BIOS(VIDEO_BIOS, &inreg, &outreg); X return (0); X} X Xint g_getmod() X{ X /* BIOS interrupt 0x10 function 0x0f */ X inreg.AH = GET_VIDEO_MODE; X DO_BIOS(VIDEO_BIOS, &inreg, &outreg); X return (outreg.AL); X} X Xint bios_print(buffer, itemsize, no_of_items) Xchar *buffer; Xint itemsize; Xint no_of_items; X{ X int idx, jdx; X int pstat = 0; X int size = itemsize * no_of_items; X for (idx=0 ;idx < size; idx++) X { X /* Wait for printer ready status */ X for (jdx = 0, pstat = -1; pstat != PTR_OK_STAT; jdx++) X { X inreg.AH = 2; X DO_BIOS(BIOS_PTR_INT, &inreg, &outreg); X pstat = (0xf8) & (outreg.AH); X if (jdx > 30000) X { X fprintf(stderr,"Timeout on printer device\n",0); X return(0); X } X } X X /* Send a byte */ X inreg.AH = 0; X inreg.AL = buffer[idx]; X DO_BIOS(BIOS_PTR_INT, &inreg, &outreg); X X /* Call to get keyboard status, so DOS can check for */ X /* interrupt signal (^C). */ X inreg.AH = DOS_KBY_STAT; X DO_BIOS(DOS, &inreg, &outreg); X } X return(no_of_items); X} X X#endif /* MS_DOS */ X X XxX--EOF--XxX -- Please send comp.sources.unix-related mail to rsalz@uunet.uu.net.