/* Special osbind.h file for MiNT and PureC, see puremint.txt for details */ typedef struct /* used by Cconrs */ { unsigned char maxlen; unsigned char actuallen; char buffer[255]; } LINE; typedef struct /* used by Fsetdta, Fgetdta */ { char d_reserved[21]; unsigned char d_attrib; unsigned int d_time; unsigned int d_date; unsigned long d_length; char d_fname[14]; } DTA; typedef struct baspag /* used by Pexec */ { void *p_lowtpa; void *p_hitpa; void *p_tbase; long p_tlen; void *p_dbase; long p_dlen; void *p_bbase; long p_blen; DTA *p_dta; struct baspag *p_parent; long p_resrvd0; char *p_env; char p_stdfh[6]; char p_resrvd1; char p_curdrv; long p_resrvd2[18]; char p_cmdlin[128]; } BASPAG; typedef struct /* used by Getbpb */ { int recsiz; int clsiz; int clsizb; int rdlen; int fsiz; int fatrec; int datrec; int numcl; int bflags; } BPB; typedef struct /* used by Iorec */ { void *ibuf; int ibufsiz; int ibufhd; int ibuftl; int ibuflow; int ibufhi; } IOREC; typedef struct /* used by Kbdvbase */ { void (*kb_midivec)(); void (*kb_vkbderr)(); void (*kb_vmiderr)(); void (*kb_statvec)(); void (*kb_mousevec)(); void (*kb_clockvec)(); void (*kb_joyvec)(); void (*kb_midisys)(); void (*kb_kbdsys)(); } KBDVBASE; typedef struct /* used by Pexec */ { unsigned char length; char command_tail[128]; } COMMAND; typedef struct /* used by Prtblk */ { void *pb_scrptr; int pb_offset; int pb_width; int pb_height; int pb_left; int pb_right; int pb_screz; int pb_prrez; void *pb_colptr; int pb_prtype; int pb_prport; void *pb_mask; } PBDEF; typedef struct /* used by Keytbl */ { char *unshift; char *shift; char *capslock; } KEYTAB; typedef struct __md { struct __md *m_link; void *m_start; long m_length; BASPAG *m_own; } MD; typedef struct /* used by Getmpb */ { MD *mp_mfl; MD *mp_mal; MD *mp_rover; } MPB; typedef struct { int (*Bconstat) (); long (*Bconin) (); int (*Bcostat) (); void (*Bconout) (); long (*Rsconf) (); IOREC *iorec; } MAPTAB; typedef struct { MAPTAB *maptab; int maptabsize; } BCONMAP; /* system variable _sysbase (0x4F2L) points to next structure */ typedef struct _syshdr { unsigned os_entry; /* $00 BRA to reset handler */ unsigned os_version; /* $02 TOS version number */ void *os_start; /* $04 -> reset handler */ struct _syshdr *os_base; /* $08 -> baseof OS */ void *os_membot; /* $0c -> end BIOS/GEMDOS/VDI ram usage */ void *os_rsv1; /* $10 << unused,reserved >> */ long *os_magic; /* $14 -> GEM memoryusage parm. block */ long os_gendat; /* $18 Date of system build($MMDDYYYY) */ int os_palmode; /* $1c OS configuration bits */ int os_gendatg; /* $1e DOS-format date of systembuild */ /* The next three fields are only available in TOS versions 1.2 and greater */ void *_root; /* $20 -> base of OS pool */ long *kbshift; /* $24 -> keyboard shift state variable */ BASPAG **_run; /* $28 -> GEMDOS PID of current process */ void *p_rsv2; /* $2c << unused, reserved >> */ } SYSHDR; /* attributes for Fcreate/Fsfirst/Fsnext: */ #define FA_READONLY 0x01 #define FA_HIDDEN 0x02 #define FA_SYSTEM 0x04 #define FA_VOLUME 0x08 #define FA_SUBDIR 0x10 #define FA_ARCHIVE 0x20 /* Fopen modes: */ #define FO_READ 0 #define FO_WRITE 1 #define FO_RW 2 extern BASPAG *_BasPag; extern long _PgmSize; long gemdos( void, ... ); long bios( void, ... ); long xbios( void, ... ); /****** Tos *************************************************************/ void Pterm0( void ); long Cconin( void ); void Cconout( int c ); int Cauxin( void ); void Cauxout( int c ); int Cprnout( int c ); long Crawio( int w ); long Crawcin( void ); long Cnecin( void ); int Cconws( const char *buf ); void Cconrs( LINE *buf ); int Cconis( void ); long Dsetdrv( int drv ); int Cconos( void ); int Cprnos( void ); int Cauxis( void ); int Cauxos( void ); int Dgetdrv( void ); void Fsetdta( void *buf ); long Super( void *stack ); unsigned int Tgetdate( void ); unsigned int Tsetdate( unsigned int date ); unsigned int Tgettime( void ); unsigned int Tsettime( unsigned int time ); DTA *Fgetdta( void ); int Sversion( void ); void Ptermres( long keepcnt, int retcode ); int Dfree( long *buf, int driveno ); int Dcreate( const char *path ); int Ddelete( const char *path ); int Dsetpath( const char *path ); long Fcreate( const char *filename, int attr ); long Fopen( const char *filename, int mode ); int Fclose( int handle ); long Fread( int handle, long count, void *buf ); long Fwrite( int handle, long count, void *buf ); int Fdelete( const char *filename ); long Fseek( long offset, int handle, int seekmode ); int Fattrib( const char *filename, int wflag, int attrib ); long Fdup( int handle ); long Fforce( int stch, int nonstdh ); int Dgetpath( char *path, int driveno ); long Malloc( long number ); int Mfree( void *block ); int Mshrink( int zero, void *block, long newsiz ); long Pexec( int mode, char *ptr1, void *ptr2, void *ptr3 ); void Pterm( int retcode ); int Fsfirst( const char *filename, int attr ); int Fsnext( void ); int Frename( int zero, const char *oldname, const char *newname ); int Fdatime( short *timeptr, int handle, int wflag ); int Fcntl( int f, long arg, int cmd ); /****** TOS 030 Gemdos Extension ****************************************/ long Mxalloc( long number, int mode ); long Maddalt( void *start, long size ); /****** Network Gemdos Extension ****************************************/ long Flock( int handle, int mode, long start, long length ); /****** Bios ************************************************************/ void Getmpb( MPB *ptr ); int Bconstat( int dev ); long Bconin( int dev ); long Bconout( int dev, int c ); long Rwabs( int rwflag, void *buf, int cnt, int recnr, int dev ); void (*Setexc( int number, long *exchdlr)); long Tickcal( void ); BPB *Getbpb( int dev ); long Bcostat( int dev ); long Mediach( int dev ); long Drvmap( void ); long Kbshift( int mode ); /****** XBios ***********************************************************/ void Initmous( int type, char *par, void *mousevec); void *Ssbrk( int count ); void *Physbase( void ); void *Logbase( void ); int Getrez( void ); void Setscreen( void *laddr, void *paddr, int rez ); void Setpalette( void *pallptr ); int Setcolor( int colornum, int color ); int Floprd( void *buf, long filler, int devno, int sectno, int trackno, int sideno, int count ); int Flopwr( void *buf, long filler, int devno, int sectno, int trackno, int sideno, int count ); int Flopfmt( void *buf, long filler, int devno, int spt, int trackno, int sideno, int interlv, long magic, int virgin ); void Midiws( int cnt, void *ptr ); void Mfpint( int erno, void (*vector)() ); void *Iorec( int dev ); long Rsconf( int baud, int ctr, int ucr, int rsr, int tsr, int scr ); KEYTAB *Keytbl( void *unshift, void *shift, void *capslock ); long Random( void ); void Protobt( void *buf, long serialno, int disktype, int execflag ); int Flopver( void *buf, long filler, int devno, int sectno, int trackno, int sideno, int count ); void Scrdmp( void ); int Cursconf( int func, int rate ); void Settime( unsigned long time ); unsigned long Gettime( void ); void Bioskeys( void ); void Ikbdws( int count, void *ptr ); void Jdisint( int number ); void Jenabint( int number ); char Giaccess( char data, int regno ); void Offgibit( int bitno ); void Ongibit( int bitno ); void Xbtimer( int timer, int control, int data, void (*vector)() ); void *Dosound( void *buf ); int Setprt( int config ); KBDVBASE *Kbdvbase( void ); int Kbrate( int initial, int repeat ); void Prtblk( PBDEF *par ); void Vsync( void ); long Supexec( long (*func)() ); void Puntaes( void ); int Floprate( int devno, int newrate ); int Blitmode( int mode ); /* TOS030 XBios */ int DMAread( long sector, int count, void *buffer, int devno ); int DMAwrite( long sector, int count, void *buffer, int devno ); int NVMaccess( int opcode, int start, int count, void *buffer ); long Bconmap( int devno ); int Esetshift( int shftMode ); int Egetshift( void ); int EsetBank( int bankNum ); int EsetColor( int colorNum, int color ); void EsetPalette( int colorNum, int count, int *palettePtr ); void EgetPalette( int colorNum, int count, int *palettePtr ); int EsetGray( int swtch ); int EsetSmear( int swtch );