#ifndef _SCREEN_H_ #define _SCREEN_H_ #define SCR_COLS 80 #define SCR_ROWS 50 #define SCR_SIZE (SCR_COLS*SCR_ROWS) #define SCR_ID_MONITOR 256 #define SCR_ID_HELP 257 #define SCR_ID_OPTIONS 258 #define SCR_ID_PERIPHERALS 259 #define SCR_ID_IOX 260 #define SCR_ID_DRIVE 261 #define MAX_SCREENS 512 typedef struct { int type; int blink; int attr; struct { union { unsigned char linear[SCR_SIZE]; unsigned char rowcol[SCR_ROWS][SCR_COLS]; }; } chars; struct { union { unsigned short linear[SCR_SIZE]; unsigned short rowcol[SCR_ROWS][SCR_COLS]; }; } attributes; union { int col; int cx; }; union { int row; int cy; }; } screenstruct; screenstruct *screens[MAX_SCREENS]; screenstruct screencache; unsigned int last_screen_type; void initscreen(); void scrattrfill(int scr, unsigned short attr); void scrclr(int scr); screenstruct *openscreen(int scr); void closescreen(int scr); void shutdownscreen(); void displayscreen(int scr); void scrxy(int scr, int x, int y); void scrattr(int scr, unsigned short attr); void scrblink(int scr, unsigned char blink); void scrtype(int scr, unsigned char type); void scrprintf(int scr, const char *fmt, ...); void scrwindow(int scr, int x, int y, int sx, int sy, unsigned short attr, char *hdr); void scrclone(int scr, int src); #endif