84 lines
2.6 KiB
C
84 lines
2.6 KiB
C
#ifndef COSMOPOLITAN_LIBC_NEXGEN32E_VIDYA_H_
|
|
#define COSMOPOLITAN_LIBC_NEXGEN32E_VIDYA_H_
|
|
|
|
#define VIDYA_ROWS 25
|
|
#define VIDYA_COLUMNS 80
|
|
#define VIDYA_SIZE (VIDYA_ROWS * VIDYA_COLUMNS * 2)
|
|
#define VIDYA_MODE_MDA 7
|
|
#define VIDYA_MODE_CGA 3
|
|
#define VIDYA_ADDR_MDA 0xb0000
|
|
#define VIDYA_ADDR_CGA 0xb8000
|
|
#define VIDYA_ATTR_NORMAL 0x07 /* cozy default for both mda and cga */
|
|
#define VIDYA_REWIND ~0x7fff /* derived from mode addr min. lzcnt */
|
|
#define VIDYA_SERVICE 0x10
|
|
#define VIDYA_SET_MODE 0x0003
|
|
#define VIDYA_SET_CURSOR 0x0100
|
|
#define VIDYA_SET_CURSOR_NONE 0x2000
|
|
#define VIDYA_SET_BLINKING 0x1003
|
|
#define VIDYA_SET_BLINKING_NONE 0x0000
|
|
|
|
#if !(__ASSEMBLER__ + __LINKER__ + 0)
|
|
|
|
enum VidyaMode {
|
|
kVidyaModeMda = VIDYA_MODE_MDA,
|
|
kVidyaModeCga = VIDYA_MODE_CGA
|
|
};
|
|
|
|
enum VidyaColor {
|
|
kVidyaColorBlack = 0x0,
|
|
kVidyaColorBlue = 0x1,
|
|
kVidyaColorGreen = 0x2,
|
|
kVidyaColorCyan = 0x3,
|
|
kVidyaColorRed = 0x4,
|
|
kVidyaColorMagenta = 0x5,
|
|
kVidyaColorBrown = 0x6,
|
|
kVidyaColorLightGray = 0x7,
|
|
kVidyaColorDarkGray = 0x8,
|
|
kVidyaColorLightBlue = 0x9,
|
|
kVidyaColorLightGreen = 0xa,
|
|
kVidyaColorLightCyan = 0xb,
|
|
kVidyaColorLightRed = 0xc,
|
|
kVidyaColorLightMagenta = 0xd,
|
|
kVidyaColorYellow = 0xe,
|
|
kVidyaColorWhite = 0xf
|
|
};
|
|
|
|
struct thatispacked VidyaCell {
|
|
unsigned glyph : 8; /* IBM Code Page 437 */
|
|
union VidyaAttr {
|
|
enum {
|
|
kVidyaAttrBlank = 0x00,
|
|
kVidyaAttrNormal = VIDYA_ATTR_NORMAL,
|
|
kVidyaAttrMdaFlipped = 0x70,
|
|
kVidyaAttrMdaFlippedFaded = 0x78,
|
|
kVidyaAttrMdaFlippedIntense = 0xf0,
|
|
kVidyaAttrMdaFlippedFadedIntense = 0xf8
|
|
} preset : 8;
|
|
struct VidyaTextDecoration { /* MDA Only */
|
|
unsigned underline : 1;
|
|
unsigned __ignore1 : 1;
|
|
unsigned bold : 1;
|
|
unsigned __ignore2 : 3;
|
|
unsigned intense : 1;
|
|
} decoration;
|
|
struct { /* CGA Only */
|
|
enum VidyaColor fg : 4;
|
|
enum VidyaColor bg : 4;
|
|
} color;
|
|
} attr;
|
|
};
|
|
|
|
typedef union VidyaAttr VidyaAttr;
|
|
typedef struct VidyaCell VidyaCell;
|
|
typedef struct VidyaCell VidyaPage[VIDYA_ROWS][VIDYA_COLUMNS];
|
|
|
|
__far VidyaPage *vinit(enum VidyaMode mode);
|
|
__far VidyaPage *vcls(__far VidyaCell *pos);
|
|
__far VidyaCell *vputc(__far VidyaCell *pos, int c);
|
|
__far VidyaCell *vputs(__far VidyaCell *pos, const char *str);
|
|
__far VidyaCell *vtput(__far VidyaCell *pos, const void *data, size_t size);
|
|
__far VidyaCell *vscroll(__far VidyaCell *pos, size_t bytes);
|
|
|
|
#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
|
|
#endif /* COSMOPOLITAN_LIBC_NEXGEN32E_VIDYA_H_ */
|