home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Crawly Crypt Collection 1
/
crawlyvol1.bin
/
apps
/
educatin
/
typtutor
/
osbind.h
< prev
next >
Wrap
C/C++ Source or Header
|
1989-06-03
|
7KB
|
235 lines
/************************************************************************/
/* OSBINDS.H #defines for GEMDOS,BIOS & XBIOS binding */
/* started 5/2/85 .. Rob Zdybel */
/* Copyright 1985 Atari Corp. */
/************************************************************************/
#ifndef DL_OSBIND
#define DL_OSBIND
extern long bios();
extern long xbios();
extern long gemdos();
/*
These are the data structures that are used by some of the
BIOS functions. rpt
*/
typedef struct {
int (*midivec)(); /* MIDI-input */
int (*vkbderr)(); /* keyboard error */
int (*vmiderr)(); /* MIDI error */
int (*statvec)(); /* ikbd status packet */
int (*mousevec)(); /* mouse packet */
int (*clockvec)(); /* clock packet */
int (*joyvec)(); /* joystick packet */
int (*midisys)(); /* system MIDI vector */
int (*ikbdsys)(); /* system IKBD vector */
} kbdvecs;
/*
Used in function Iorec()
*/
typedef struct {
char *ibuf; /* pointer to queue */
int ibufsiz; /* size of queue in bytes */
int ibufhd; /* head index of queue */
int ibuftl; /* tail index of queue */
int ibuflow; /* low water mark */
int ibufhigh; /* high water mark */
} iorec;
/*
Used by function Dfree().
*/
typedef struct {
long b_free; /* no. of free clusters on drive */
long b_total; /* total no. of clusters on drive */
long b_secsiz; /* no. of bytes in a sector */
long b_clsiz; /* no. of sectors in a cluster */
} disk_info;
/*
Used by function Getmpb().
*/
typedef struct md {
struct md *m_link; /* next memory block */
long m_start; /* start address of block */
long m_length; /* No. of bytes in block */
long m_own; /* Memory block's owner ID */
} md;
typedef struct {
md *mp_mfl; /* memory free list */
md *mp_mal; /* memory allocated list */
md *mp_rover; /* roving pointer (woof!) */
} mpb;
/*
Used by function Getbpb().
*/
typedef struct _bpb {
int sector_size_bytes;
int cl_sectors;
int cl_bytes;
int dir_length_sectors;
int FAT_size_sectors;
int FAT_sector; /* sector number of the second FAT. */
int data_sector; /* sector number of the first data cluster */
int total_data_clusters; /* number of data clusters on the disk */
int flags; /* Miscellaneous Flags. */
} bpb;
/*
This structure is a bit field that represents the different components of
the date and time words. A union structure was used so that a long
could be used for the assignment from the gettime() function and the
bit-field structure could be used to easily decode the long word.
Note: This data structure was designed to work with Megamax C. Not all
compilers allocate bit-fields in the same manner. rpt
*/
typedef union {
struct {
unsigned day : 5;
unsigned month : 4;
unsigned year : 7;
unsigned seconds : 5;
unsigned minutes : 6;
unsigned hours : 5;
} part;
long realtime;
} datetime;
typedef union {
struct {
unsigned day : 5;
unsigned month : 4;
unsigned year : 7;
} part;
unsigned realdate;
} dateinfo;
typedef union {
struct {
unsigned seconds : 5;
unsigned minutes : 6;
unsigned hours : 5;
} part;
unsigned realtime;
} timeinfo;
/* BIOS (trap13) */
#define Getmpb(a) bios(0, a)
#define Bconstat(a) (int)bios(1,a)
#define Bconin(a) bios(2,a)
#define Bconout(a,b) bios(3,a,b)
#define Rwabs(a,b,c,d,e) bios(4,a,b,c,d,e)
#define Setexc(a,b) bios(5,a,b)
#define Tickcal() bios(6)
#define Getbpb(a) (bpb *)bios(7, a)
#define Bcostat(a) bios(8,a)
#define Mediach(a) bios(9,a)
#define Drvmap() bios(10)
#define Kbshift(a) bios(11,a)
/* XBIOS (trap14) */
#define Initmous(a,b,c) xbios(0,a,b,c)
#define Physbase() xbios(2)
#define Logbase() xbios(3)
#define Getrez() (int)xbios(4)
#define Setscreen(a,b,c) xbios(5,a,b,c)
#define Setpalette(a) xbios(6,a)
#define Setcolor(a,b) (int)xbios(7,a,b)
#define Floprd(a,b,c,d,e,f,g) (int)xbios(8,a,b,c,d,e,f,g)
#define Flopwr(a,b,c,d,e,f,g) (int)xbios(9,a,b,c,d,e,f,g)
#define Flopfmt(a,b,c,d,e,f,g,h,i) (int)xbios(10,a,b,c,d,e,f,g,h,i)
#define Midiws(a,b) xbios(12,a,b)
#define Mfpint(a,b) xbios(13,a,b)
#define Iorec(a) (iorec *)xbios(14,a)
#define Rsconf(a,b,c,d,e,f) xbios(15,a,b,c,d,e,f)
#define Keytbl(a,b,c) xbios(16,a,b,c)
#define Random() xbios(17)
#define Protobt(a,b,c,d) xbios(18,a,b,c,d)
#define Flopver(a,b,c,d,e,f,g) (int)xbios(19,a,b,c,d,e,f,g)
#define Scrdmp() xbios(20) /* WARNING: This Bind Incomplete */
#define Cursconf(a,b) (int)xbios(21,a,b)
#define Settime(a) xbios(22,a)
#define Gettime() xbios(23)
#define Bioskeys() xbios(24)
#define Ikbdws(a,b) xbios(25,a,b)
#define Jdisint(a) xbios(26,a)
#define Jenabint(a) xbios(27,a)
#define Giaccess(a,b) (char)xbios(28,a,b)
#define Offgibit(a) xbios(29,a)
#define Ongibit(a) xbios(30,a)
#define Xbtimer(a,b,c,d) xbios(31,a,b,c,d)
#define Dosound(a) xbios(32,a)
#define Setprt(a) (int) xbios(33,a)
#define Kbdvbase() (kbdvecs *)xbios(34)
#define Kbrate(a,b) (int)xbios(35,a,b)
#define Prtblk() xbios(36)
#define Vsync() xbios(37)
#define Supexec(a) xbios(38, a)
#define Puntaes() xbios(39)
/* GEMDOS (trap1) */
#define Pterm0() gemdos(0x0)
#define Cconin() (int)gemdos(0x1)
#define Cconout(a) gemdos(0x2,a)
#define Cauxin() (int)gemdos(0x3)
#define Cauxout(a) gemdos(0x4,a)
#define Cprnout(a) gemdos(0x5,a)
#define Crawio(a) gemdos(0x6,a)
#define Crawcin() gemdos(0x7)
#define Cnecin() gemdos(0x8)
#define Cconws(a) gemdos(0x9,a)
#define Cconrs(a) gemdos(0x0a,a)
#define Cconis() (int)gemdos(0x0b)
#define Dsetdrv(a) gemdos(0x0e,a)
#define Cconos() (int)gemdos(0x10)
#define Cprnos() (int)gemdos(0x11)
#define Cauxis() (int)gemdos(0x12)
#define Cauxos() (int)gemdos(0x13)
#define Dgetdrv() (int)gemdos(0x19)
#define Fsetdta(a) gemdos(0x1a,a)
#define Super(a) gemdos(0x20,a) /* NOTE:This name may change */
#define Tgetdate() (int)gemdos(0x2a)
#define Tsetdate(a) gemdos(0x2b,a)
#define Tgettime() (int)gemdos(0x2c)
#define Tsettime(a) gemdos(0x2d,a)
#define Fgetdta() gemdos(0x2f)
#define Sversion() (int)gemdos(0x30)
#define Ptermres(a,b) gemdos(0x31,a,b)
#define Dfree(a,b) gemdos(0x36,a,b)
#define Dcreate(a) (int)gemdos(0x39,a)
#define Ddelete(a) (int)gemdos(0x3a,a)
#define Dsetpath(a) (int)gemdos(0x3b,a)
#define Fcreate(a,b) (int)gemdos(0x3c,a,b)
#define Fopen(a,b) (int)gemdos(0x3d,a,b)
#define Fclose(a) gemdos(0x3e,a)
#define Fread(a,b,c) gemdos(0x3f,a,b,c)
#define Fwrite(a,b,c) gemdos(0x40,a,b,c)
#define Fdelete(a) (int)gemdos(0x41,a)
#define Fseek(a,b,c) gemdos(0x42,a,b,c)
#define Fattrib(a,b,c) (int)gemdos(0x43,a,b,c)
#define Fdup(a) (int)gemdos(0x45,a)
#define Fforce(a,b) (int)gemdos(0x46,a,b)
#define Dgetpath(a,b) (int)gemdos(0x47,a,b)
#define Malloc(a) gemdos(0x48,a)
#define Mfree(a) (int)gemdos(0x49,a)
#define Mshrink(a,b) (int)gemdos(0x4a,0,a,b) /* NOTE:Null parameter added */
#define Pexec(a,b,c,d) gemdos(0x4b,a,b,c,d)
#define Pterm(a) gemdos(0x4c,a)
#define Fsfirst(a,b) (int)gemdos(0x4e,a,b)
#define Fsnext() (int)gemdos(0x4f)
#define Frename(a,b,c) (int)gemdos(0x56,a,b,c)
#define Fdatime(a,b,c) (int)gemdos(0x57,a,b,c)
#endif