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
70 lines
1.4 KiB
C
1 year ago
|
#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
|