home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Computer Club Elmshorn Atari PD
/
CCE_PD.iso
/
pc
/
0400
/
CCE_0423.ZIP
/
CCE_0423.PD
/
INCLUD83.ZOO
/
sysvars.h
< prev
next >
Wrap
C/C++ Source or Header
|
1992-07-20
|
5KB
|
132 lines
/* definitions for various GEMDOS system variables in low memory */
/* WARNING: this file is not compatible with the old one */
/*
* Convention:
* the address for each variable is defined.
*/
#ifndef _SYSVARS_H
#define _SYSVARS_H
#ifndef _COMPILER_H
#include <compiler.h>
#endif
#ifdef __cplusplus
extern "C" {
#endif
/* Processor state and post mortem dump area */
#define PROC_LIVES_MAGIC 0x12345678L /* proc_lives if dump is valid */
#define proc_lives ((unsigned long *) 0x380L)
struct __post_mortem_dump {
unsigned long d0, d1, d2, d3, d4, d5, d6, d7;
void *a0, *a1, *a2, *a3, *a4, *a5, *a6, *a7; /* a7 == ssp */
void *pc; /* first byte is exception # */
void *usp;
unsigned short stk[16]; /* sixteen word of super stack */
};
#define proc_post_mortem_dump_p ((struct __post_mortem_dump *) 0x384L)
#define proc_dregs (&proc_post_mortem_dump_p->d0)
#define proc_aregs (&proc_post_mortem_dump_p->a0)
#define proc_pc (proc_post_mortem_dump_p->pc)
#define proc_usp (proc_post_mortem_dump_p->usp)
#define proc_utk (proc_post_mortem_dump_p->stk)
/* timer, crit error and process termination handoff vectors */
#define etv_timer (((void (**)()) 0x400L))
#define etv_critic (((void (**)()) 0x404L))
#define etv_term (((void (**)()) 0x408L))
/* memory controller */
#define MEMVALID_MAGIC 0x752019F3L /* once memory is sized */
#define memvalid (((unsigned long *) 0x420L))
#define mencntlr (((unsigned char *) 0x424L))
/* 0 = 128K, 4 = 512K 0 = 256k(2banks) 5 = 1M */
/* reset vector, jump through resvector if resvalid on reset */
#define RESVALID_MAGIC 0x31415926L
#define resvalid ((unsigned long *) 0x426L)
#define resvector ((void (**)()) 0x42aL)
/* do a jmp 0x24L(a6) at end to go to system reset */
/* mem */
#define phystop (((unsigned long *) 0x42eL)) /* physical top of ram */
#define _membot (((unsigned long *) 0x432L)) /* bottom of avail */
#define _memtop (((unsigned long *) 0x436L)) /* top of avail */
#define MEMVAL2_MAGIC 0x237698AAL /* after suc. coldstart && memvalid */
#define memval2 (((unsigned long *) 0x43aL))
/* floppy */
#define flock (((short *) 0x43eL)) /* lock usage of DMA chip */
#define seekrate (((short *) 0x440L)) /* 0=6ms 1=12ms 2=2ms 3=3ms */
#define _timr_ms (((short *) 0x442L)) /* timer calib == 20ms */
#define _fverify (((short *) 0x444L)) /* write verify flag */
#define _bootdev (((short *) 0x446L))
/* video */
#define palmode (((short *) 0x448L)) /* PAL video mode flag */
#define defshiftmd (((unsigned char *) 0x44aL)) /* default video rez */
#define sshiftmd (((short *) 0x44cL)) /* shadow of hdwr. shiftmd reg */
/* 0=Lo 1=med 2=Hi rez */
#define _v_bas_ad (((void *) 0x44eL)) /* screen mem base */
#define vblsem ((short *) 0x452L)) /* vbl semaphore */
#define nvbls (((short *) 0x454L)) /* # of vbl entries def. == 8 */
#define _vblqueue (((void (***)()) 0x456L)) /* vbl queue pointer */
#define colorptr (((short **) 0x45aL)) /* pal. on next vblank if!NULL */
#define _vbclock (((unsigned long *) 0x462L)) /* vbi counter */
#define _frclock (((unsigned long *) 0x466L)) /* #vbi not vblsem'ed */
#define _hz_200 ((unsigned long *) 0x4baL)
#define conterm (*((char *) 0x484L))
#define savptr ((long *) 0x4A2L)
#define _nflops ((short *) 0x4A6L)
#define _sysbase ((long *) 0x4F2L)
#define _shell_p ((long *) 0x4F6L)
typedef struct {
short puns;
char v_p_un[16];
long pstart[16];
short bpbs[1]; /* really 16 BPB's (bios parameter block) */
} HDINFO;
#define pun_ptr ((HDINFO *) 0x516L)
#define _p_cookies ((long **) 0x5A0L)
/* os header */
typedef struct _osheader
{
unsigned short os_entry; /* 0x00 BRA to reset handler */
unsigned short os_version; /* 0x02 TOS version */
void (*reseth) __PROTO((void)); /* 0x04 -> reset handler */
struct _osheader *os_beg; /* 0x08 -> base of OS */
void *os_end; /* 0x0c -> end of OS ram usage */
char *os_rsv1; /* 0x10 reserved */
char *os_magic; /* 0x14 GEM memory usage param */
long os_date; /* 0x18 Build date 0xMMDDYYYY */
unsigned short os_conf; /* 0x1c OS conf bits */
unsigned short os_dosdate; /* 0x1e DOS format build date */
/* the following available on TOS version >= 1.2 */
char **p_root; /* 0x20 -> base of OS pool */
char **pkbshift; /* 0x24 -> kbd shift state var */
char **p_run; /* 0x28 -> PID of current proc */
char *p_rsv2; /* 0x2c reserved */
} OSHEADER;
/* zzzz to-do more */
__EXTERN long get_sysvar __PROTO((void *var));
__EXTERN void set_sysvar_to_long __PROTO((void *var, long val));
#ifdef __cplusplus
}
#endif
#endif /* _SYSVARS_H */