131 lines
4.6 KiB
C
131 lines
4.6 KiB
C
|
|
/*----------------------------------------------------------------------+
|
|
| |
|
|
| Gigatron.h -- Gigatron system definitions |
|
|
| |
|
|
+----------------------------------------------------------------------*/
|
|
|
|
/*----------------------------------------------------------------------+
|
|
| Common types |
|
|
+----------------------------------------------------------------------*/
|
|
|
|
typedef unsigned char byte;
|
|
typedef unsigned short word;
|
|
|
|
/*----------------------------------------------------------------------+
|
|
| Definitions from interface.json |
|
|
+----------------------------------------------------------------------*/
|
|
|
|
enum {
|
|
romTypeValue_ROMv1 = 0x1c,
|
|
romTypeValue_ROMv2 = 0x20,
|
|
romTypeValue_ROMv3 = 0x28,
|
|
romTypeValue_ROMv4 = 0x38,
|
|
romTypeValue_DEVROM = 0xf8,
|
|
};
|
|
|
|
#define frameCount (*(volatile byte*)0x000e)
|
|
#define serialRaw (*(volatile byte*)0x000f)
|
|
#define buttonState (*(volatile byte*)0x0011)
|
|
#define vAC (*(word*)0x0018)
|
|
#define romType (*(byte*)0x0021)
|
|
#define sysFn (*(word*)0x0022)
|
|
#define sysArgs ( (byte*)0x0024)
|
|
|
|
#define videoTable ( (byte*)0x0100)
|
|
#define videoTop_DEVROM (*(byte*)0x01f9)
|
|
#define screenMemory ( (byte(*)[256])0x0800)
|
|
|
|
#define font32up ( (byte*)0x0700)
|
|
#define font82up ( (byte*)0x0800)
|
|
|
|
#define buttonRight (255^1)
|
|
#define buttonLeft (255^2)
|
|
#define buttonDown (255^4)
|
|
#define buttonUp (255^8)
|
|
#define buttonStart (255^16)
|
|
#define buttonSelect (255^32)
|
|
#define buttonB (255^64)
|
|
#define buttonA (255^128)
|
|
|
|
/*
|
|
* Draw 8 pixels vertically from bit mask
|
|
*
|
|
* sysArgs[0] Color 0 (background)
|
|
* sysArgs[1] Color 1 (pen)
|
|
* sysArgs[2] 8 bits, highest bit first (destructive)
|
|
* sysArgs[4:5] Position on screen
|
|
*/
|
|
#define SYS_VDrawBits_134 0x04e1
|
|
|
|
/*
|
|
* Update entropy[] and return 16 bits of it in vAC
|
|
*/
|
|
#define SYS_Random_34 0x04a7
|
|
|
|
/*
|
|
* Set video mode to value in vAC
|
|
* 0..3 Full mode to fastest
|
|
* 1975 Disable video loop ("zombie mode")
|
|
* -1 Enable video loop
|
|
* Requires ROMv2+
|
|
*/
|
|
#define SYS_SetMode_v2_80 0xb00
|
|
|
|
/*
|
|
* vReset() restarts the Gigatron and returns to the main menu
|
|
*/
|
|
#define vReset ((void(*)(void)) 0x1f0)
|
|
|
|
/*----------------------------------------------------------------------+
|
|
| Library definitions |
|
|
+----------------------------------------------------------------------*/
|
|
|
|
#define Indent 2 // Indent 2 pixels from the left
|
|
|
|
// TODO: add to interface.json
|
|
#define Black 0x00
|
|
#define DarkRed 0x01
|
|
#define Red 0x02
|
|
#define LightRed 0x03
|
|
#define DarkGreen 0x04
|
|
#define Green 0x08
|
|
#define LightGreen 0x0c
|
|
#define DarkBlue 0x10
|
|
#define Blue 0x20
|
|
#define LightBlue 0x30
|
|
#define White 0x3f
|
|
|
|
/*----------------------------------------------------------------------+
|
|
| Library data |
|
|
+----------------------------------------------------------------------*/
|
|
|
|
extern int ScreenPos; // Really a pointer into screen memory
|
|
extern byte Color; // Pen color
|
|
extern byte BgColor; // Background color
|
|
|
|
/*----------------------------------------------------------------------+
|
|
| Library functions |
|
|
+----------------------------------------------------------------------*/
|
|
|
|
void ClearScreen(void);
|
|
void Newline(void);
|
|
word Random(void);
|
|
byte WaitKey(void);
|
|
void BusyWait(int frames);
|
|
void PutChar(int c);
|
|
void SetMode_v2(int mode);
|
|
word ReadRomDir_DEVROM(word prev, char name[8]);
|
|
|
|
// Not implemented and/or decided:
|
|
void VideoScrollY(int dy);
|
|
char *IntToString(char s[7], int n);
|
|
char *UIntToString(char s[7], unsigned n);
|
|
void DrawLine(int dx, int dy);
|
|
//int scanf(const char *restrict format, ...);
|
|
|
|
/*----------------------------------------------------------------------+
|
|
| |
|
|
+----------------------------------------------------------------------*/
|
|
|