/*
 *	OSBIND.H	Mnemonic names for operating system calls
 *
 * Adapted from Dale Schumacher's version to Mark Johnson C by Eric Gisin.
 * Notes:
 *	There are bugs in MJ C's macro expansion.
 *	If you get syntax errors using these macros,
 *	Try enclosing the macro call with asm() and compile.
 *	Then look at the yc.out to see the macro expansion.
 */

/*	
 *	GEMDOS	(trap1)
 */
#define	Pterm0()			trap(1,0x00)
#define	Cconin()			trap(1,0x01)
#define	Cconout(c)			trap(1,0x02,c)
#define	Cauxin()			trap(1,0x03)
#define	Cauxout(c)			trap(1,0x04,c)
#define	Cprnout(c)			trap(1,0x05,c)
#define	Crawio(data)			trap(1,0x06,data)
#define	Crawcin()			trap(1,0x07)
#define	Cnecin()			trap(1,0x08)
#define	Cconws(s)			trap(1,0x09,s)
#define	Cconrs(buf)			trap(1,0x0A,buf)
#define	Cconis()			(int)trap(1,0x0B)
#define	Dsetdrv(d)			trap(1,0x0E,d)
#define	Cconos()			trap(1,0x10)
#define	Cprnos()			trap(1,0x11)
#define	Cauxis()			trap(1,0x12)
#define	Cauxos()			trap(1,0x13)
#define	Dgetdrv()			(int)trap(1,0x19)
#define	Fsetdta(dta)			trap(1,0x1A,dta)
#define	Super(ptr)			trap(1,0x20,ptr)
#define	Tgetdate()			(int)trap(1,0x2A)
#define	Tsetdate(date)			trap(1,0x2B,date)
#define	Tgettime()			(int)trap(1,0x2C)
#define	Tsettime(time)			trap(1,0x2D,time)
#define	Fgetdta()			trap(1,0x2F)
#define	Sversion()			(int)trap(1,0x30)
#define	Ptermres(save,rv)		trap(1,0x31,save,rv)
#define	Dfree(buf,d)			trap(1,0x36,buf,d)
#define	Dcreate(path)			trap(1,0x39,path)
#define	Ddelete(path)			trap(1,0x3A,path)
#define	Dsetpath(path)			trap(1,0x3B,path)
#define	Fcreate(fn,mode)		trap(1,0x3C,fn,mode)
#define	Fopen(fn,mode)			trap(1,0x3D,fn,mode)
#define	Fclose(H)			trap(1,0x3E,H)
#define	Fread(H,cnt,buf)		trap(1,0x3F,H,cnt,buf)
#define	Fwrite(H,cnt,buf)		trap(1,0x40,H,cnt,buf)
#define	Fdelete(fn)			trap(1,0x41,fn)
#define	Fseek(where,H,how)		trap(1,0x42,where,H,how)
#define	Fattrib(fn,rwflag,attr)		trap(1,0x43,fn,rwflag,attr)
#define	Fdup(H)				trap(1,0x45,H)
#define	Fforce(Hstd,Hnew)		trap(1,0x46,Hstd,Hnew)
#define	Dgetpath(buf,d)			trap(1,0x47,buf,d)
#define	Malloc(size)			trap(1,0x48,size)
#define	Mfree(ptr)			trap(1,0x49,ptr)
#define	Mshrink(ptr,size)		trap(1,0x4A,0,ptr,size)
#define	Pexec(mode,prog,tail,env)	trap(1,0x4B,mode,prog,tail,env)
#define	Pterm(rv)			trap(1,0x4C,rv)
#define	Fsfirst(filespec,attr)		(int)trap(1,0x4E,filespec,attr)
#define	Fsnext()			(int)trap(1,0x4F)
#define	Frename(zero,old,new)		trap(1,0x56,zero,old,new)
#define	Fdatime(timeptr,H,rwflag)	trap(1,0x57,timeptr,H,rwflag)

/*
 *	BIOS	(trap13)
 */
#define	Bconstat(DEV)			trap(13,1,DEV)
#define	Bconin(DEV)			trap(13,2,DEV)
#define	Bconout(DEV,c)			trap(13,3,DEV,c)
#define	Rwabs(rwflag,buf,n,sector,d)	trap(13,4,rwflag,buf,n,sector,d)
#define	Setexc(vnum,vptr)		trap(13,5,vnum,vptr)
#define	Tickcal()			trap(13,6)
#define	Getbpb(d)			trap(13,7,d)
#define	Bcostat(DEV)			trap(13,8,DEV)
#define	Mediach(d)			trap(13,9,a)
#define	Drvmap()			trap(13,10)
#define	Getshift()			trap(13,11,-1)
#define	Kbshift(data)			trap(13,11,data)

/*
 *	XBIOS	(trap14)
 */
#define	Initmous(type,param,vptr)	trap(14,0,type,param,vptr)
#define	Physbase()			trap(14,2)
#define	Logbase()			trap(14,3)
#define	Getrez()			(int)trap(14,4)
#define	Setscreen(lscrn,pscrn,rez)	trap(14,5,lscrn,pscrn,rez)
#define	Setpallete(palptr)		trap(14,6,palptr)
#define	Setcolor(colornum,mixture)	trap(14,7,colornum,mixture)
#define	Floprd(buf,x,d,sect,trk,side,n)	trap(14,8,buf,x,d,sect,trk,side,n)
#define	Flopwr(buf,x,d,sect,trk,side,n)	trap(14,9,buf,x,d,sect,trk,side,n)
#define	Flopfmt(b,x,d,spt,trk,sd,i,m,v)	trap(14,10,b,x,d,spt,trk,sd,i,m,v)
#define	Midiws(cnt,ptr)			trap(14,12,cnt,ptr)
#define	Mfpint(vnum,vptr)		trap(14,13,vnum,vptr)
#define	Iorec(ioDEV)			trap(14,14,ioDEV)
#define	Rsconf(baud,flow,uc,rs,ts,sc)	trap(14,15,baud,flow,uc,rs,ts,sc)
#define	Keytbl(nrml,shft,caps)		trap(14,16,nrml,shft,caps)
#define	Random()			trap(14,17)
#define	Protobt(buf,serial,dsktyp,exec)	trap(14,18,buf,serial,dsktyp,exec)
#define	Flopver(buf,x,d,sect,trk,sd,n)	trap(14,19,buf,x,d,sect,trk,sd,n)
#define	Scrdmp()			trap(14,20)
#define	Cursconf(func,rate)		trap(14,21,func,rate)
#define	Settime(time)			trap(14,22,time)
#define	Gettime()			trap(14,23)
#define	Bioskeys()			trap(14,24)
#define	Ikbdws(len_minus1,ptr)		trap(14,25,len_minus1,ptr)
#define	Jdisint(vnum)			trap(14,26,vnum)
#define	Jenabint(vnum)			trap(14,27,vnum)
#define	Giaccess(data,reg)		trap(14,28,data,reg)
#define	Offgibit(ormask)		trap(14,29,ormask)
#define	Ongibit(andmask)		trap(14,30,andmask)
#define	Xbtimer(timer,ctrl,data,vnum)	trap(14,31,timer,ctrl,data,vnum)
#define	Dosound(ptr)			trap(14,32,ptr)
#define	Setprt(config)			trap(14,33,config)
#define	Kbdvbase()			trap(14,34)
#define	Kbrate(delay,reprate)		trap(14,35,delay,reprate)
#define	Prtblk(pblkptr)			trap(14,36,pblkptr)
#define	Vsync()				trap(14,37)
#define	Supexec(funcptr)		trap(14,38,funcptr)

