#ifndef __X68K_DOS_H__
#define __X68K_DOS_H__
#include <sys/cdefs.h>
typedef int dos_mode_t;
struct dos_inpptr {
unsigned char max;
unsigned char length;
char buffer[256];
};
struct dos_nameckbuf {
char drive[2];
char path[65];
char name[19];
char ext[5];
};
union dos_fcb {
struct {
unsigned char dupcnt;
unsigned char devattr;
void *deventry;
char nouse_1[8];
unsigned char openmode;
char nouse_2[21];
char name1[8];
char ext[3];
char nouse_3;
char name2[10];
char nouse_4[38];
} __attribute__((__packed__)) chr;
struct {
unsigned char dupcnt;
unsigned mode : 1;
unsigned unknown : 2;
unsigned physdrv : 5;
void *deventry;
unsigned int fileptr;
unsigned int exclptr;
unsigned char openmode;
unsigned char entryidx;
unsigned char clustidx;
char nouse_2;
unsigned short acluster;
unsigned int asector;
void *iobuf;
unsigned long dirsec;
unsigned int fptrmax;
char name1[8];
char ext[3];
unsigned char attr;
char name2[10];
unsigned short time;
unsigned short date;
unsigned short fatno;
unsigned long size;
char nouse_4[28];
} __attribute__((__packed__)) blk;
};
struct dos_indos {
unsigned short indosf;
unsigned char doscmd;
unsigned char fat_flg;
unsigned short retry_count;
unsigned short retry_time;
unsigned short verifyf;
unsigned char breakf;
unsigned char ctrlpf;
unsigned char reserved;
unsigned char wkcurdrv;
};
struct dos_mep {
void *prev_mp;
void *parent_mp;
void *block_end;
void *next_mp;
};
struct dos_psp {
char *env;
void *exit;
void *ctrlc;
void *errexit;
char *comline;
unsigned char handle[12];
void *bss;
void *heap;
void *stack;
void *usp;
void *ssp;
unsigned short sr;
unsigned short abort_sr;
void *abort_ssp;
void *trap10;
void *trap11;
void *trap12;
void *trap13;
void *trap14;
unsigned int osflg;
unsigned char reserve_1[28];
char exe_path[68];
char exe_name[24];
char reserve_2[36];
};
struct dos_comline {
unsigned char len;
char buffer[255];
};
struct dos_namestbuf {
unsigned char flg;
unsigned char drive;
char path[65];
char name1[8];
char ext[3];
char name2[10];
};
struct dos_freeinf {
unsigned short free;
unsigned short max;
unsigned short sec;
unsigned short byte;
};
struct dos_dpbptr {
unsigned char drive;
unsigned char unit;
unsigned short byte;
unsigned char sec;
unsigned char shift;
unsigned short fatsec;
unsigned char fatcount;
unsigned char fatlen;
unsigned short dircount;
unsigned short datasec;
unsigned short maxfat;
unsigned short dirsec;
int driver;
unsigned char ide;
unsigned char flg;
struct dos_dpbptr *next;
unsigned short dirfat;
char dirbuf[64];
} __attribute__((__packed__));
struct dos_filbuf {
unsigned char searchatr;
unsigned char driveno;
unsigned long dirsec;
unsigned short dirlft;
unsigned short dirpos;
char filename[8];
char ext[3];
unsigned char atr;
unsigned short time;
unsigned short date;
unsigned int filelen;
char name[23];
} __attribute__((__packed__));
struct dos_exfilbuf {
unsigned char searchatr;
unsigned char driveno;
unsigned long dirsec;
unsigned short dirlft;
unsigned short dirpos;
char filename[8];
char ext[3];
unsigned char atr;
unsigned short time;
unsigned short date;
unsigned int filelen;
char name[23];
char drive[2];
char path[65];
char unused[21];
} __attribute__((__packed__));
struct dos_dregs {
int d0;
int d1;
int d2;
int d3;
int d4;
int d5;
int d6;
int d7;
int a0;
int a1;
int a2;
int a3;
int a4;
int a5;
int a6;
};
struct dos_prcctrl {
long length;
unsigned char *buf_ptr;
unsigned short command;
unsigned short your_id;
};
struct dos_prcptr {
struct dos_prcptr *next_ptr;
unsigned char wait_flg;
unsigned char counter;
unsigned char max_counter;
unsigned char doscmd;
unsigned int psp_id;
unsigned int usp_reg;
unsigned int d_reg[8];
unsigned int a_reg[7];
unsigned short sr_reg;
unsigned int pc_reg;
unsigned int ssp_reg;
unsigned short indosf;
unsigned int indosp;
struct dos_prcctrl *buf_ptr;
unsigned char name[16];
long wait_time;
} __attribute__((__packed__));
__dead void DOS_EXIT (void);
int DOS_GETCHAR (void);
void DOS_PUTCHAR (int);
int DOS_COMINP (void);
void DOS_COMOUT (int);
void DOS_PRNOUT (int);
int DOS_INPOUT (int);
int DOS_INKEY (void);
int DOS_GETC (void);
void DOS_PRINT (const char *);
int DOS_GETS (struct dos_inpptr *);
int DOS_KEYSNS (void);
int DOS_KFLUSHGP (void);
int DOS_KFLUSHIO (int);
int DOS_KFLUSHIN (void);
int DOS_KFLUSHGC (void);
int DOS_KFLUSHGS (struct dos_inpptr *);
void DOS_FFLUSH (void);
int DOS_CHGDRV (int);
int DOS_DRVCTRL (int, int);
int DOS_CONSNS (void);
int DOS_PRNSNS (void);
int DOS_CINSNS (void);
int DOS_COUTSNS (void);
int DOS_FATCHK (const char *, unsigned short *);
int DOS_FATCHK2 (const char *, unsigned short *, int);
int DOS_HENDSPMO (void);
int DOS_HENDSPMP (int, const char *);
int DOS_HENDSPMR (int, const char *);
void DOS_HENDSPMC (void);
int DOS_HENDSPIO (void);
int DOS_HENDSPIP (int, const char *);
int DOS_HENDSPIR (int, const char *);
void DOS_HENDSPIC (int);
int DOS_HENDSPSO (void);
int DOS_HENDSPSP (int, const char *);
int DOS_HENDSPSR (int, const char *);
void DOS_HENDSPSC (void);
int DOS_CURDRV (void);
int DOS_GETSS (struct dos_inpptr *);
int DOS_FGETC (int);
int DOS_FGETS (struct dos_inpptr *, int);
void DOS_FPUTC (int, int);
void DOS_FPUTS (const char *, int);
void DOS_ALLCLOSE (void);
int DOS_SUPER (int);
void DOS_FNCKEYGT (int, char *);
void DOS_FNCKEYST (int, const char *);
int DOS_C_PUTC (int);
int DOS_C_PRINT (const char *);
int DOS_C_COLOR (int);
int DOS_C_LOCATE (int, int);
int DOS_C_DOWN_S (void);
int DOS_C_UP_S (void);
int DOS_C_UP (int);
int DOS_C_DOWN (int);
int DOS_C_RIGHT (int);
int DOS_C_LEFT (int);
int DOS_C_CLS_ED (void);
int DOS_C_CLS_ST (void);
int DOS_C_CLS_AL (void);
int DOS_C_ERA_ED (void);
int DOS_C_ERA_ST (void);
int DOS_C_ERA_AL (void);
int DOS_C_INS (int);
int DOS_C_DEL (int);
int DOS_C_FNKMOD (int);
int DOS_C_WINDOW (int, int);
int DOS_C_WIDTH (int);
int DOS_C_CURON (void);
int DOS_C_CUROFF (void);
int DOS_K_KEYINP (void);
int DOS_K_KEYSNS (void);
int DOS_K_SFTSNS (void);
int DOS_K_KEYBIT (int);
void DOS_K_INSMOD (int);
void *DOS_INTVCS (int, void *);
void DOS_PSPSET (struct dos_psp *);
int DOS_GETTIM2 (void);
int DOS_SETTIM2 (int);
int DOS_NAMESTS (const char *, struct dos_namestbuf *);
int DOS_GETDATE (void);
int DOS_SETDATE (int);
int DOS_GETTIME (void);
int DOS_SETTIME (int);
void DOS_VERIFY (int);
int DOS_DUP0 (int, int);
int __pure DOS_VERNUM (void);
__dead void DOS_KEEPPR (int, int);
int DOS_GETDPB (int, struct dos_dpbptr *);
int DOS_BREAKCK (int);
void DOS_DRVXCHG (int, int);
void *DOS_INTVCG (int);
int DOS_DSKFRE (int, struct dos_freeinf *);
int DOS_NAMECK (const char *, struct dos_nameckbuf *);
int DOS_MKDIR (const char *);
int DOS_RMDIR (const char *);
int DOS_CHDIR (const char *);
int DOS_CREATE (const char *, dos_mode_t);
int DOS_OPEN (const char *, int);
int DOS_CLOSE (int);
int DOS_READ (int, char *, int);
int DOS_WRITE (int, const char *, int);
int DOS_DELETE (const char *);
long DOS_SEEK (int, int, int);
dos_mode_t DOS_CHMOD (const char *, dos_mode_t);
int DOS_IOCTRLGT (int);
int DOS_IOCTRLST (int, int);
int DOS_IOCTRLRH (int, char *, int);
int DOS_IOCTRLWH (int, const char *, int);
int DOS_IOCTRLRD (int, char *, int);
int DOS_IOCTRLWD (int, const char *, int);
int DOS_IOCTRLIS (int);
int DOS_IOCTRLOS (int);
int DOS_IOCTRLDVGT (int);
int DOS_IOCTRLFDGT (int);
int DOS_IOCTRLRTSET (int, int);
int DOS_IOCTRLDVCTL (int, int, char *);
int DOS_IOCTRLFDCTL (int, int, char *);
int DOS_DUP (int);
int DOS_DUP2 (int, int);
int DOS_CURDIR (int, char *);
void *DOS_MALLOC (int);
int DOS_MFREE (void *);
int DOS_SETBLOCK (void *, int);
int DOS_LOADEXEC (const char *, const struct dos_comline *, const char *);
int DOS_LOAD (const char *, const struct dos_comline *, const char *);
int DOS_PATHCHK (const char *, const struct dos_comline *, const char *);
int DOS_LOADONLY (const char *, const void *, const void *);
int DOS_EXECONLY (void *);
int DOS_BINDNO (const char *, const char *);
int DOS_EXEC2 (int, const char *, const char *, const char *);
__dead void DOS_EXIT2 (int);
int DOS_WAIT (void);
int DOS_FILES (struct dos_filbuf *, const char *, int);
int DOS_EXFILES (struct dos_exfilbuf *, const char *, int);
int DOS_NFILES (struct dos_filbuf *);
int DOS_EXNFILES (struct dos_exfilbuf *);
struct dos_psp *DOS_SETPDB (struct dos_psp *);
struct dos_psp *DOS_GETPDB (void);
int DOS_SETENV (const char *, const char *, const char *);
int DOS_GETENV (const char *, const char *, char *);
int DOS_VERIFYG (void);
int DOS_COMMON_CK (const char *);
int DOS_COMMON_RD (const char *, int, char *, int);
int DOS_COMMON_WT (const char *, int, const char *, int);
int DOS_COMMON_LK (const char *, int, int, int);
int DOS_COMMON_FRE (const char *, int, int, int);
int DOS_COMMON_DEL (const char *);
int DOS_MOVE (const char *, const char *);
int DOS_RENAME (const char *, const char *);
int DOS_FILEDATE (int, int);
void *DOS_MALLOC2 (int, int);
void *DOS_MALLOC0 (int, int, int);
int DOS_MAKETMP (const char *, int);
int DOS_NEWFILE (const char *, dos_mode_t);
int DOS_LOCK (int, int, int);
int DOS_UNLOCK (int, int, int);
int DOS_GETASSIGN (const char *, char *);
int DOS_MAKEASSIGN (const char *, const char *, int);
int DOS_RASSIGN (const char *);
int DOS_FFLUSH_SET (int);
void *DOS_OS_PATCH (unsigned int, void *);
union dos_fcb *DOS_GET_FCB_ADR (unsigned int);
void *DOS_S_MALLOC (int, int);
void *DOS_S_MALLOC0 (int, int);
int DOS_S_MFREE (void *);
int DOS_S_PROCESS (int, int, int, int);
__dead void DOS_RETSHELL (void);
__dead void DOS_EXITVC (void);
__dead void DOS_CTLABORT (void);
__dead void DOS_ERRABORT (void);
void DOS_DISKRED (void *, int, int, int);
void DOS_DISKRED2 (void *, int, int, int);
void DOS_DISKWRT (const void *, int, int, int);
void DOS_DISKWRT2 (const void *, int, int, int);
struct dos_indos *DOS_INDOSFLG (void);
void DOS_SUPER_JSR (void (*)(void), struct dos_dregs *, struct dos_dregs *);
int DOS_MEMCPY (void *, void *, int);
int DOS_BUS_ERR (void *, void *, int);
int DOS_OPEN_PR (const char *, int, int, int, int, int, struct dos_prcctrl *, long);
int DOS_KILL_PR (void);
int DOS_GET_PR (int, struct dos_prcptr *);
int DOS_SUSPEND_PR (int);
int DOS_SLEEP_PR (long);
int DOS_SEND_PR (int, int, int, char *, long);
long DOS_TIME_PR (void);
void DOS_CHANGE_PR (void);
#endif