You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

70 lines
1.4 KiB
C

#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