Files
2022-10-02 10:09:40 +02:00

402 lines
13 KiB
C

/* TOS.H
Tos Definition Includes
Copyright (c) Borland International 1990
All Rights Reserved.
*/
#if !defined( __TOS )
#define __TOS
#include <trap.h> /* AHCC: __syscall__ */
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 short d_time;
unsigned short d_date;
unsigned long d_length;
char d_fname[14];
} DTA;
typedef struct /* used by Dfree */
{
unsigned long b_free;
unsigned long b_total;
unsigned long b_secsiz;
unsigned long b_clsiz;
} DISKINFO;
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 */
{
short recsiz,
clsiz,
clsizb,
rdlen,
fsiz,
fatrec,
datrec,
numcl,
bflags;
short dntracks, /* HR 2'97 added */
dnsides,
dspc,
dspt,
dhidden;
long dserial;
} BPB;
#ifndef HAVE_DOSTIME
typedef struct
{
unsigned short time;
unsigned short date;
} DOSTIME;
#define HAVE_DOSTIME 1
#endif
typedef struct /* used by Iorec */
{
void *ibuf;
short ibufsiz;
short ibufhd;
short ibuftl;
short ibuflow;
short 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 Initmouse */
{
char topmode;
char buttons;
char x_scale;
char y_scale;
short x_max;
short y_max;
short x_start;
short y_start;
} MOUSE;
typedef struct /* used by Prtblk */
{
void *pb_scrptr;
short pb_offset;
short pb_width;
short pb_height;
short pb_left;
short pb_right;
short pb_screz;
short pb_prrez;
void *pb_colptr;
short pb_prtype;
short 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
{
short (*Bconstat) ();
long (*Bconin) ();
short (*Bcostat) ();
void (*Bconout) ();
long (*Rsconf) ();
IOREC *iorec;
} MAPTAB;
typedef struct
{
MAPTAB *maptab;
short maptabsize;
} BCONMAP;
/* system variable _sysbase (0x4F2L) points to next structure */
typedef struct _syshdr
{
unsigned short os_entry; /* $00 BRA to reset handler */
unsigned short 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) */
short os_palmode; /* $1c OS configuration bits */
short 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 TRAP( 1) gemdos( void, ... );
long TRAP(13) bios ( void, ... );
long TRAP(14) xbios ( void, ... );
/****** Tos *************************************************************/
void GEMDOS(0) Pterm0( void );
long GEMDOS(1) Cconin( void );
void GEMDOS(2) Cconout( short c );
short GEMDOS(3) Cauxin( void );
void GEMDOS(4) Cauxout( short c );
short GEMDOS(5) Cprnout( short c );
long GEMDOS(6) Crawio( short w );
long GEMDOS(7) Crawcin( void );
long GEMDOS(8) Cnecin( void );
short GEMDOS(9) Cconws( const char *buf );
void GEMDOS(10) Cconrs( LINE *buf );
short GEMDOS(11) Cconis( void );
long GEMDOS(14) Dsetdrv( short drv );
short GEMDOS(16) Cconos( void );
short GEMDOS(17) Cprnos( void );
short GEMDOS(18) Cauxis( void );
short GEMDOS(19) Cauxos( void );
short GEMDOS(25) Dgetdrv( void );
void GEMDOS(26) Fsetdta( DTA *buf );
long GEMDOS(32) Super( void *stack );
unsigned short GEMDOS(42) Tgetdate( void );
unsigned short GEMDOS(43) Tsetdate( unsigned short date );
unsigned short GEMDOS(44) Tgettime( void );
unsigned short GEMDOS(45) Tsettime( unsigned short time );
DTA * GEMDOS(47) Fgetdta( void );
short GEMDOS(48) Sversion( void );
void GEMDOS(49) Ptermres( long keepcnt, short retcode );
short GEMDOS(54) Dfree( DISKINFO *buf, short driveno );
short GEMDOS(57) Dcreate( const char *path );
short GEMDOS(58) Ddelete( const char *path );
short GEMDOS(59) Dsetpath( const char *path );
long GEMDOS(60) Fcreate( const char *filename, short attr );
long GEMDOS(61) Fopen( const char *filename, short mo );
short GEMDOS(62) Fclose( short handle );
long GEMDOS(63) Fread( short handle, long count, void *buf );
long GEMDOS(64) Fwrite( short handle, long count, void *buf );
short GEMDOS(65) Fdelete( const char *filename );
long GEMDOS(66) Fseek( long offset, short handle, short seekmode );
short GEMDOS(67) Fattrib( const char *filename, short wflag, short attrib );
long GEMDOS(69) Fdup( short handle );
short GEMDOS(70) Fforce( short stch, short nonstdh );
short GEMDOS(71) Dgetpath( char *path, short driveno );
void * GEMDOS(72) Malloc( long number );
short GEMDOS(73) Mfree( void *block );
short GEMDOS(74) Mshrink( short zero, void *block, long newsiz );
long GEMDOS(75) Pexec( short mo, char *ptr1, void *ptr2, void *ptr3 );
void GEMDOS(76) Pterm( short retcode );
short GEMDOS(78) Fsfirst( const char *filename, short attr );
short GEMDOS(79) Fsnext( void );
short GEMDOS(86) Frename( short zero, const char *oldname, const char *newname );
short GEMDOS(87) Fdatime( DOSTIME *timeptr, short handle, short wflag );
short GEMDOS(0x119) Pdomain( short newdom );
void * GEMDOS(0x112) Psignal( short sig, void *handler );
/****** TOS 030 Gemdos Extension ****************************************/
void * GEMDOS(68) Mxalloc( long number, short mo );
long GEMDOS(20) Maddalt( void *start, long size );
/****** Network Gemdos Extension ****************************************/
long GEMDOS(92) Flock( short handle, short mo, long start, long length );
/****** Bios ************************************************************/
void BIOS( 0) Getmpb( MPB *ptr );
short BIOS( 1) Bconstat( short dev );
long BIOS( 2) Bconin( short dev );
long BIOS( 3) Bconout( short dev, short c );
long BIOS( 4) Rwabs( short rwflag, void *buf, short cnt, short recnr, short dev );
void (* BIOS(5) Setexc( short number, void (*exchdlr)() )) ();
long BIOS( 6) Tickcal( void );
BPB * BIOS( 7) Getbpb( short dev );
long BIOS( 8) Bcostat( short dev );
long BIOS( 9) Mediach( short dev );
long BIOS(10) Drvmap( void );
long BIOS(11) Kbshift( short mo );
long BIOS(12) Lrwabs( short rwflag, void *buf, short cnt, short recnr, short dev );
/****** XBios ***********************************************************/
void XBIOS(0) Initmouse( short , MOUSE *, void (*)() );
void * XBIOS(1) Ssbrk( short count );
void * XBIOS(2) Physbase( void );
void * XBIOS(3) Logbase( void );
short XBIOS(4) Getrez( void );
void XBIOS(5) Setscreen( void *laddr, void *paddr, short rez );
void XBIOS(6) Setpalette( void *pallptr );
short XBIOS(7) Setcolor( short colornum, short color );
short XBIOS(8) Floprd( void *buf, void *filler, short devno, short sectno,
short trackno, short sideno, short count );
short XBIOS(9) Flopwr( void *buf, void *filler, short devno, short sectno,
short trackno, short sideno, short count );
short XBIOS(10) Flopfmt( void *buf, void *filler, short devno, short spt, short trackno,
short sideno, short interlv, long magic, short virgin );
void XBIOS(12) Midiws( short cnt, void *ptr );
void XBIOS(13) Mfpint( short erno, void (*vector)() );
IOREC * XBIOS(14) Iorec( short dev );
long XBIOS(15) Rsconf( short baud, short ctr, short ucr, short rsr, short tsr, short scr );
KEYTAB *XBIOS(16) Keytbl( void *unshift, void *shift, void *capslock );
long XBIOS(17) Random( void );
void XBIOS(18) Protobt( void *buf, long serialno, short disktype, short execflag );
short XBIOS(19) Flopver( void *buf, void *filler, short devno, short sectno,
short trackno, short sideno, short count );
void XBIOS(20) Scrdmp( void );
short XBIOS(21) Cursconf( short func, short rate );
void XBIOS(22) Settime( unsigned long time );
unsigned
long XBIOS(23) Gettime( void );
void XBIOS(24) Bioskeys( void );
void XBIOS(25) Ikbdws( short count, void *ptr );
void XBIOS(26) Jdisint( short number );
void XBIOS(27) Jenabint( short number );
char XBIOS(28) Giaccess( char data, short regno );
void XBIOS(29) Offgibit( short bitno );
void XBIOS(30) Ongibit( short bitno );
void XBIOS(31) Xbtimer( short timer, short control, short data, void (*vector)() );
void * XBIOS(32) Dosound( void *buf );
short XBIOS(33) Setprt( short config );
KBDVBASE * XBIOS(34)Kbdvbase( void );
short XBIOS(35) Kbrate( short initial, short repeat );
void XBIOS(36) Prtblk( PBDEF *par );
void XBIOS(37) Vsync( void );
typedef long Supfunc(void);
long XBIOS(38) Supexec( Supfunc *func);
void XBIOS(39) Puntaes( void );
short XBIOS(41) Floprate( short devno, short newrate );
short XBIOS(64) Blitmode( short mo );
/* TOS030 XBios */
short XBIOS(42) DMAread( long sector, short count, void *buffer, short devno );
short XBIOS(43) DMAwrite( long sector, short count, void *buffer, short devno );
long XBIOS(44) Bconmap( short devno );
short XBIOS(46) NVMaccess( short opcode, short start, short count, void *buffer );
short XBIOS(80) Esetshift( short shftMode );
short XBIOS(81) Egetshift( void );
short XBIOS(82) EsetBank( short bankNum );
short XBIOS(83) EsetColor( short colorNum, short color );
void XBIOS(84) EsetPalette( short colorNum, short count, short *palettePtr );
void XBIOS(85) EgetPalette( short colorNum, short count, short *palettePtr );
short XBIOS(86) EsetGray( short swtch );
short XBIOS(87) EsetSmear( short swtch );
/* MinT Gemdos */
#ifdef __MINT__
#include <mint.h>
#endif
/* Falcon Gemdos*/
#ifdef __FALCON__
#include <falcon.h>
#endif
#endif
/************************************************************************/