koreth%panarthea.ebay@sun.com (Steven Grimm) (08/20/89)
Submitted-by: uunet.UU.NET!unido!sbsvax!roeder (Edgar Roeder)
Posting-number: Volume 2, Issue 77
Archive-name: gcclib2/part06
#! /bin/sh
# This is a shell archive. Remove anything before this line, then unpack
# it by saving it into a file and typing "sh file". To overwrite existing
# files, type "sh file -c". You can also feed this as standard input via
# unshar, or by typing "sh <file", e.g.. If this archive is complete, you
# will see the following message at the end:
# "End of archive 6 (of 7)."
# Contents: include/osbind.h
# Wrapped by roeder@sbsvax on Wed Aug 16 22:03:04 1989
PATH=/bin:/usr/bin:/usr/ucb ; export PATH
if test -f 'include/osbind.h' -a "${1}" != "-c" ; then
echo shar: Will not clobber existing file \"'include/osbind.h'\"
else
echo shar: Extracting \"'include/osbind.h'\" \(20404 characters\)
sed "s/^X//" >'include/osbind.h' <<'END_OF_FILE'
X#ifndef _OSBIND_H
X#define _OSBIND_H
X/*
X * OSBIND.H Mnemonic names for operating system calls
X *
X * Adapted from Dale Schumacher's version to Mark Johnson C by Eric Gisin.
X */
X
X/* (er) 11.8.89 changed macros to inline functions */
X/* this is ABSOLUTELY necessary for Super(), */
X/* because the changed stack would be changed */
X/* back by the unlk instruction */
X
X#pragma once
X
X/* ..sb correction of the calls 19/11/88 */
X/* hacked by jrd for GNU */
X
X/*
X * GEMDOS (trap1)
X */
X
Xstatic __inline volatile void
XPterm0(void)
X{
X __asm("movew #0x00,sp@-");
X __asm("trap #1" ::: "d0", "d1", "d2", "a0", "a1", "a2");
X /* we will never come back, so we don't have to correct the stack */
X}
X
Xstatic __inline long
XCconin(void)
X{
X long ret;
X
X __asm("movew #0x00,sp@-");
X __asm("trap #1" ::: "d0", "d1", "d2", "a0", "a1", "a2");
X __asm("addql #2,sp");
X __asm volatile ("movel d0,%0" : "=g" (ret));
X return(ret);
X}
X
Xstatic __inline void
XCconout(short c)
X{
X __asm("movew %0,sp@-" :: "g" (c));
X __asm("movew #0x02,sp@-");
X __asm("trap #1" ::: "d0", "d1", "d2", "a0", "a1", "a2");
X __asm("addql #4,sp");
X}
X
Xstatic __inline long
XCauxin(void)
X{
X long ret;
X
X __asm("movew #0x03,sp@-");
X __asm("trap #1" ::: "d0", "d1", "d2", "a0", "a1", "a2");
X __asm("addql #2,sp");
X __asm volatile ("movel d0,%0" : "=g" (ret));
X return(ret);
X}
X
Xstatic __inline long
XCauxout(short c)
X{
X long ret;
X
X __asm("movew %0,sp@-" :: "g" (c));
X __asm("movew #0x04,sp@-");
X __asm("trap #1" ::: "d0", "d1", "d2", "a0", "a1", "a2");
X __asm("addql #4,sp");
X __asm volatile ("movel d0,%0" : "=g" (ret));
X return(ret);
X}
X
Xstatic __inline long
XCprnout(short c)
X{
X long ret;
X
X __asm("movew %0,sp@-" :: "g" (c));
X __asm("movew #0x05,sp@-");
X __asm("trap #1" ::: "d0", "d1", "d2", "a0", "a1", "a2");
X __asm("addql #4,sp");
X __asm volatile ("movel d0,%0" : "=g" (ret));
X return(ret);
X}
X
Xstatic __inline long
XCrawio(short data)
X{
X long ret;
X
X __asm("movew %0,sp@-" :: "g" (data));
X __asm("movew #0x06,sp@-");
X __asm("trap #1" ::: "d0", "d1", "d2", "a0", "a1", "a2");
X __asm("addql #4,sp");
X __asm volatile ("movel d0,%0" : "=g" (ret));
X return(ret);
X}
X
Xstatic __inline long
XCrawcin(void)
X{
X long ret;
X
X __asm("movew #0x07,sp@-");
X __asm("trap #1" ::: "d0", "d1", "d2", "a0", "a1", "a2");
X __asm("addql #2,sp");
X __asm volatile ("movel d0,%0" : "=g" (ret));
X return(ret);
X}
X
Xstatic __inline long
XCnecin(void)
X{
X long ret;
X
X __asm("movew #0x08,sp@-");
X __asm("trap #1" ::: "d0", "d1", "d2", "a0", "a1", "a2");
X __asm("addql #2,sp");
X __asm volatile ("movel d0,%0" : "=g" (ret));
X return(ret);
X}
X
Xstatic __inline void
XCconws(char *s)
X{
X __asm("movel %0,sp@-" :: "g" (s));
X __asm("movew #0x09,sp@-");
X __asm("trap #1" ::: "d0", "d1", "d2", "a0", "a1", "a2");
X __asm("addql #6,sp");
X}
X
Xstatic __inline void
XCconrs(char *buf)
X{
X __asm("movel %0,sp@-" :: "g" (buf));
X __asm("movew #0x0A,sp@-");
X __asm("trap #1" ::: "d0", "d1", "d2", "a0", "a1", "a2");
X __asm("addql #6,sp");
X}
X
Xstatic __inline short
XCconis(void)
X{
X short ret;
X
X __asm("movew #0x0B,sp@-");
X __asm("trap #1" ::: "d0", "d1", "d2", "a0", "a1", "a2");
X __asm("addql #2,sp");
X __asm volatile ("movew d0,%0" : "=g" (ret));
X return(ret);
X}
X
Xstatic __inline const void
XDsetdrv(short d)
X{
X __asm("movew %0,sp@-" :: "g" (d));
X __asm("movew #0x0E,sp@-");
X __asm("trap #1" ::: "d0", "d1", "d2", "a0", "a1", "a2");
X __asm("addql #4,sp");
X}
X
Xstatic __inline short
XCconos(void)
X{
X short ret;
X
X __asm("movew #0x10,sp@-");
X __asm("trap #1" ::: "d0", "d1", "d2", "a0", "a1", "a2");
X __asm("addql #2,sp");
X __asm volatile ("movew d0,%0" : "=g" (ret));
X return(ret);
X}
X
Xstatic __inline short
XCprnos(void)
X{
X short ret;
X
X __asm("movew #0x11,sp@-");
X __asm("trap #1" ::: "d0", "d1", "d2", "a0", "a1", "a2");
X __asm("addql #2,sp");
X __asm volatile ("movew d0,%0" : "=g" (ret));
X return(ret);
X}
X
Xstatic __inline short
XCauxis(void)
X{
X short ret;
X
X __asm("movew #0x12,sp@-");
X __asm("trap #1" ::: "d0", "d1", "d2", "a0", "a1", "a2");
X __asm("addql #2,sp");
X __asm volatile ("movew d0,%0" : "=g" (ret));
X return(ret);
X}
X
Xstatic __inline short
XCauxos(void)
X{
X short ret;
X
X __asm("movew #0x13,sp@-");
X __asm("trap #1" ::: "d0", "d1", "d2", "a0", "a1", "a2");
X __asm("addql #2,sp");
X __asm volatile ("movew d0,%0" : "=g" (ret));
X return(ret);
X}
X
Xstatic __inline long
XDgetdrv(void)
X{
X long ret;
X
X __asm("movew #0x19,sp@-");
X __asm("trap #1" ::: "d0", "d1", "d2", "a0", "a1", "a2");
X __asm("addql #2,sp");
X __asm volatile ("movel d0,%0" : "=g" (ret));
X return(ret);
X}
X
Xstatic __inline long
XFsetdta(void *dta)
X{
X long ret;
X
X __asm("movel %0,sp@-" :: "g" (dta));
X __asm("movew #0x1A,sp@-");
X __asm("trap #1" ::: "d0", "d1", "d2", "a0", "a1", "a2");
X __asm("addql #6,sp");
X __asm volatile ("movel d0,%0" : "=g" (ret));
X return(ret);
X}
X
X/*
X * The next binding is not quite right if used in another than the usual ways:
X * 1. Super(1L) from either user or supervisor mode
X * 2. ret = Super(0L) from user mode and after this Super(ret) from
X * supervisor mode
X * We get the following situations (usp, ssp relative to the start of Super):
X * Parameter Userstack Superstack Calling Mode ret
X * 1L usp ssp user 0L
X * 1L usp ssp supervisor -1L
X * 0L usp-6 usp user ssp
X * 0L ssp ssp-6 supervisor ssp-6
X * ptr usp-6 ptr+6 user ssp
X * ptr usp+6 ptr supervisor sr
X * The usual C-bindings are safe only because the "unlk a6" is compensating
X * the errors when you invoke this function. In this binding the "unlk a6" at
X * the end of the calling function compensates the error made in sequence 2
X * above (the usp is 6 to low after the first call which is not corrected by
X * the second call).
X */
Xstatic __inline long
XSuper(long ptr)
X{
X long ret;
X
X __asm("movel %0,sp@-" :: "g" (ptr));
X __asm("movew #0x20,sp@-");
X __asm("trap #1" ::: "d0", "d1", "d2", "a0", "a1", "a2");
X __asm("addql #6,sp");
X __asm volatile ("movel d0,%0" : "=g" (ret));
X return(ret);
X}
X
Xstatic __inline long
XTgetdate(void)
X{
X long ret;
X
X __asm("movew #0x2A,sp@-");
X __asm("trap #1" ::: "d0", "d1", "d2", "a0", "a1", "a2");
X __asm("addql #2,sp");
X __asm volatile ("movel d0,%0" : "=g" (ret));
X return(ret);
X}
X
Xstatic __inline void
XTsetdate(long date)
X{
X __asm("movel %0,sp@-" :: "g" (date));
X __asm("movew #0x2B,sp@-");
X __asm("trap #1" ::: "d0", "d1", "d2", "a0", "a1", "a2");
X __asm("addql #6,sp");
X}
X
Xstatic __inline long
XTgettime(void)
X{
X long ret;
X
X __asm("movew #0x2C,sp@-");
X __asm("trap #1" ::: "d0", "d1", "d2", "a0", "a1", "a2");
X __asm("addql #2,sp");
X __asm volatile ("movel d0,%0" : "=g" (ret));
X return(ret);
X}
X
Xstatic __inline void
XTsettime(long time)
X{
X __asm("movel %0,sp@-" :: "g" (time));
X __asm("movew #0x2D,sp@-");
X __asm("trap #1" ::: "d0", "d1", "d2", "a0", "a1", "a2");
X __asm("addql #6,sp");
X}
X
Xstatic __inline long
XFgetdta(void)
X{
X long ret;
X
X __asm("movew #0x2F,sp@-");
X __asm("trap #1" ::: "d0", "d1", "d2", "a0", "a1", "a2");
X __asm("addql #2,sp");
X __asm volatile ("movel d0,%0" : "=g" (ret));
X return(ret);
X}
X
Xstatic __inline const short
XSversion(void)
X{
X short ret;
X
X __asm("movew #0x30,sp@-");
X __asm("trap #1" ::: "d0", "d1", "d2", "a0", "a1", "a2");
X __asm("addql #2,sp");
X __asm volatile ("movew d0,%0" : "=g" (ret));
X return(ret);
X}
X
Xstatic __inline volatile void
XPtermres(long save, short rv)
X{
X __asm("movew %0,sp@-" :: "g" (rv));
X __asm("movel %0,sp@-" :: "g" (save));
X __asm("movew #0x31,sp@-");
X __asm("trap #1" ::: "d0", "d1", "d2", "a0", "a1", "a2");
X /* if we don't call Ptermres(save,-32) and ignore SIGINT, */
X /* we can't come back */
X __asm("addql #8,sp");
X}
X
Xstatic __inline long
XDfree(void *buf, short d)
X{
X long ret;
X
X __asm("movew %0,sp@-" :: "g" (d));
X __asm("movel %0,sp@-" :: "g" (buf));
X __asm("movew #0x36,sp@-");
X __asm("trap #1" ::: "d0", "d1", "d2", "a0", "a1", "a2");
X __asm("addql #8,sp");
X __asm volatile ("movel d0,%0" : "=g" (ret));
X return(ret);
X}
X
Xstatic __inline short
XDcreate(char *path)
X{
X short ret;
X
X __asm("movel %0,sp@-" :: "g" (path));
X __asm("movew #0x39,sp@-");
X __asm("trap #1" ::: "d0", "d1", "d2", "a0", "a1", "a2");
X __asm("addql #6,sp");
X __asm volatile ("movew d0,%0" : "=g" (ret));
X return(ret);
X}
X
Xstatic __inline short
XDdelete(char *path)
X{
X short ret;
X
X __asm("movel %0,sp@-" :: "g" (path));
X __asm("movew #0x3A,sp@-");
X __asm("trap #1" ::: "d0", "d1", "d2", "a0", "a1", "a2");
X __asm("addql #6,sp");
X __asm volatile ("movew d0,%0" : "=g" (ret));
X return(ret);
X}
X
Xstatic __inline short
XDsetpath(char *path)
X{
X short ret;
X
X __asm("movel %0,sp@-" :: "g" (path));
X __asm("movew #0x3B,sp@-");
X __asm("trap #1" ::: "d0", "d1", "d2", "a0", "a1", "a2");
X __asm("addql #6,sp");
X __asm volatile ("movew d0,%0" : "=g" (ret));
X return(ret);
X}
X
Xstatic __inline short
XFcreate(char *fn,short mode)
X{
X short ret;
X
X __asm("movew %0,sp@-" :: "g" (mode));
X __asm("movel %0,sp@-" :: "g" (fn));
X __asm("movew #0x3C,sp@-");
X __asm("trap #1" ::: "d0", "d1", "d2", "a0", "a1", "a2");
X __asm("addql #8,sp");
X __asm volatile ("movew d0,%0" : "=g" (ret));
X return(ret);
X}
X
Xstatic __inline short
XFopen(char *fn,short mode)
X{
X short ret;
X
X __asm("movew %0,sp@-" :: "g" (mode));
X __asm("movel %0,sp@-" :: "g" (fn));
X __asm("movew #0x3D,sp@-");
X __asm("trap #1" ::: "d0", "d1", "d2", "a0", "a1", "a2");
X __asm("addql #8,sp");
X __asm volatile ("movew d0,%0" : "=g" (ret));
X return(ret);
X}
X
Xstatic __inline long
XFclose(short handle)
X{
X long ret;
X
X __asm("movew %0,sp@-" :: "g" (handle));
X __asm("movew #0x3E,sp@-");
X __asm("trap #1" ::: "d0", "d1", "d2", "a0", "a1", "a2");
X __asm("addql #4,sp");
X __asm volatile ("movew d0,%0" : "=g" (ret));
X return(ret);
X}
X
Xstatic __inline long
XFread(short handle,long cnt,char *buf)
X{
X long ret;
X
X __asm("movel %0,sp@-" :: "g" (buf));
X __asm("movel %0,sp@-" :: "g" (cnt));
X __asm("movew %0,sp@-" :: "g" (handle));
X __asm("movew #0x3F,sp@-");
X __asm("trap #1" ::: "d0", "d1", "d2", "a0", "a1", "a2");
X __asm("addw #12,sp");
X __asm volatile ("movel d0,%0" : "=g" (ret));
X return(ret);
X}
X
Xstatic __inline long
XFwrite(short handle,long cnt,char *buf)
X{
X long ret;
X
X __asm("movel %0,sp@-" :: "g" (buf));
X __asm("movel %0,sp@-" :: "g" (cnt));
X __asm("movew %0,sp@-" :: "g" (handle));
X __asm("movew #0x40,sp@-");
X __asm("trap #1" ::: "d0", "d1", "d2", "a0", "a1", "a2");
X __asm("addw #12,sp");
X __asm volatile ("movel d0,%0" : "=g" (ret));
X return(ret);
X}
X
Xstatic __inline short
XFdelete(char *fn)
X{
X short ret;
X
X __asm("movel %0,sp@-" :: "g" (fn));
X __asm("movew #0x41,sp@-");
X __asm("trap #1" ::: "d0", "d1", "d2", "a0", "a1", "a2");
X __asm("addql #6,sp");
X __asm volatile ("movew d0,%0" : "=g" (ret));
X return(ret);
X}
X
Xstatic __inline long
XFseek(long where,short handle,short how)
X{
X long ret;
X
X __asm("movew %0,sp@-" :: "g" (how));
X __asm("movew %0,sp@-" :: "g" (handle));
X __asm("movel %0,sp@-" :: "g" (where));
X __asm("movew #0x42,sp@-");
X __asm("trap #1" ::: "d0", "d1", "d2", "a0", "a1", "a2");
X __asm("addw #10,sp");
X __asm volatile ("movel d0,%0" : "=g" (ret));
X return(ret);
X}
X
Xstatic __inline short
XFattrib(char *fn,short rwflag,short attr)
X{
X short ret;
X
X __asm("movew %0,sp@-" :: "g" (attr));
X __asm("movew %0,sp@-" :: "g" (rwflag));
X __asm("movel %0,sp@-" :: "g" (fn));
X __asm("movew #0x43,sp@-");
X __asm("trap #1" ::: "d0", "d1", "d2", "a0", "a1", "a2");
X __asm("addw #10,sp");
X __asm volatile ("movew d0,%0" : "=g" (ret));
X return(ret);
X}
X
Xstatic __inline short
XFdup(short handle)
X{
X short ret;
X
X __asm("movew %0,sp@-" :: "g" (handle));
X __asm("movew #0x45,sp@-");
X __asm("trap #1" ::: "d0", "d1", "d2", "a0", "a1", "a2");
X __asm("addql #4,sp");
X __asm volatile ("movew d0,%0" : "=g" (ret));
X return(ret);
X}
X
Xstatic __inline short
XFforce(short Hstd,short Hnew)
X{
X short ret;
X
X __asm("movew %0,sp@-" :: "g" (Hnew));
X __asm("movew %0,sp@-" :: "g" (Hstd));
X __asm("movew #0x46,sp@-");
X __asm("trap #1" ::: "d0", "d1", "d2", "a0", "a1", "a2");
X __asm("addql #6,sp");
X __asm volatile ("movew d0,%0" : "=g" (ret));
X return(ret);
X}
X
Xstatic __inline short
XDgetpath(char *buf,short d)
X{
X short ret;
X
X __asm("movew %0,sp@-" :: "g" (d));
X __asm("movel %0,sp@-" :: "g" (buf));
X __asm("movew #0x47,sp@-");
X __asm("trap #1" ::: "d0", "d1", "d2", "a0", "a1", "a2");
X __asm("addql #8,sp");
X __asm volatile ("movew d0,%0" : "=g" (ret));
X return(ret);
X}
X
Xstatic __inline long
XMalloc(long size)
X{
X long ret;
X
X __asm("movel %0,sp@-" :: "g" (size));
X __asm("movew #0x48,sp@-");
X __asm("trap #1" ::: "d0", "d1", "d2", "a0", "a1", "a2");
X __asm("addql #6,sp");
X __asm volatile ("movel d0,%0" : "=g" (ret));
X return(ret);
X}
X
Xstatic __inline void
XMfree(void *ptr)
X{
X __asm("movel %0,sp@-" :: "g" (ptr));
X __asm("movew #0x49,sp@-");
X __asm("trap #1" ::: "d0", "d1", "d2", "a0", "a1", "a2");
X __asm("addql #6,sp");
X}
X
Xstatic __inline short
XMshrink(void *ptr,long size)
X{
X short ret;
X
X __asm("movel %0,sp@-" :: "g" (size));
X __asm("movel %0,sp@-" :: "g" (ptr));
X __asm("clrw sp@-");
X __asm("movew #0x4A,sp@-");
X __asm("trap #1" ::: "d0", "d1", "d2", "a0", "a1", "a2");
X __asm("addw #12,sp");
X __asm volatile ("movew d0,%0" : "=g" (ret));
X return(ret);
X}
X
Xstatic __inline long
XPexec(short mode,char *prog,char *tail,char *env)
X{
X long ret;
X
X __asm("movel %0,sp@-" :: "g" (env));
X __asm("movel %0,sp@-" :: "g" (tail));
X __asm("movel %0,sp@-" :: "g" (prog));
X __asm("movew %0,sp@-" :: "g" (mode));
X __asm("movew #0x4B,sp@-");
X __asm("trap #1" ::: "d0", "d1", "d2", "a0", "a1", "a2");
X __asm("addw #16,sp");
X __asm volatile ("movel d0,%0" : "=g" (ret));
X return(ret);
X}
X
Xstatic __inline /* volatile */ void
XPterm(short rv)
X{
X __asm("movew %0,sp@-" :: "g" (rv));
X __asm("movew #0x4C,sp@-");
X __asm("trap #1" ::: "d0", "d1", "d2", "a0", "a1", "a2");
X /* if we don't call Pterm(-32) and ignore SIGINT, we can't come back */
X __asm("addql #4,sp");
X}
X
Xstatic __inline short
XFsfirst(char *filespec,short attr)
X{
X short ret;
X
X __asm("movew %0,sp@-" :: "g" (attr));
X __asm("movel %0,sp@-" :: "g" (filespec));
X __asm("movew #0x4E,sp@-");
X __asm("trap #1" ::: "d0", "d1", "d2", "a0", "a1", "a2");
X __asm("addql #8,sp");
X __asm volatile ("movew d0,%0" : "=g" (ret));
X return(ret);
X}
X
Xstatic __inline short
XFsnext(void)
X{
X short ret;
X
X __asm("movew #0x4F,sp@-");
X __asm("trap #1" ::: "d0", "d1", "d2", "a0", "a1", "a2");
X __asm("addql #2,sp");
X __asm volatile ("movew d0,%0" : "=g" (ret));
X return(ret);
X}
X
Xstatic __inline short
XFrename(char *old,char *new)
X{
X short ret;
X
X __asm("movel %0,sp@-" :: "g" (new));
X __asm("movel %0,sp@-" :: "g" (old));
X __asm("clrw sp@-");
X __asm("movew #0x56,sp@-");
X __asm("trap #1" ::: "d0", "d1", "d2", "a0", "a1", "a2");
X __asm("addw #12,sp");
X __asm volatile ("movew d0,%0" : "=g" (ret));
X return(ret);
X}
X
Xstatic __inline void
XFdatime(long *timeptr,short handle,short rwflag)
X{
X __asm("movew %0,sp@-" :: "g" (rwflag));
X __asm("movew %0,sp@-" :: "g" (handle));
X __asm("movel %0,sp@-" :: "g" (timeptr));
X __asm("movew #0x57,sp@-");
X __asm("trap #1" ::: "d0", "d1", "d2", "a0", "a1", "a2");
X __asm("addw #10,sp");
X}
X
X
X/* codes for Pexec */
X
X#define PE_LOADGO 0 /* load & go */
X#define PE_LOAD 1 /* just load */
X#define PE_CBASEPAGE 2 /* just create basepage */
X#define PE_GO 3 /* just go */
X
X/* zzz do the rest later */
X
X/*
X * BIOS (trap13)
X */
X
Xstatic __inline void
XGetmpb(void *mpb)
X{
X __asm("movew #0,sp@-");
X __asm("trap #13" ::: "d0", "d1", "d2", "a0", "a1", "a2");
X __asm("addql #2,sp");
X}
X
Xstatic __inline short
XBconstat(short DEV)
X{
X short ret;
X
X __asm("movew %0,sp@-" :: "g" (DEV));
X __asm("movew #1,sp@-");
X __asm("trap #13" ::: "d0", "d1", "d2", "a0", "a1", "a2");
X __asm("addql #4,sp");
X __asm volatile ("movew d0,%0" : "=g" (ret));
X return(ret);
X}
X
Xstatic __inline short
XBconin(short DEV)
X{
X short ret;
X
X __asm("movew %0,sp@-" :: "g" (DEV));
X __asm("movew #2,sp@-");
X __asm("trap #13" ::: "d0", "d1", "d2", "a0", "a1", "a2");
X __asm("addql #4,sp");
X __asm volatile ("movew d0,%0" : "=g" (ret));
X return(ret);
X}
X
Xstatic __inline void
XBconout(short DEV,short c)
X{
X __asm("movew %0,sp@-" :: "g" (c));
X __asm("movew %0,sp@-" :: "g" (DEV));
X __asm("movew #3,sp@-");
X __asm("trap #13" ::: "d0", "d1", "d2", "a0", "a1", "a2");
X __asm("addql #6,sp");
X}
X
Xstatic __inline long
XRwabs(short rwflag,void *buf,short n,short sector,short d)
X{
X long ret;
X
X __asm("movew %0,sp@-" :: "g" (d));
X __asm("movew %0,sp@-" :: "g" (sector));
X __asm("movew %0,sp@-" :: "g" (n));
X __asm("movel %0,sp@-" :: "g" (buf));
X __asm("movew %0,sp@-" :: "g" (rwflag));
X __asm("movew #4,sp@-");
X __asm("trap #13" ::: "d0", "d1", "d2", "a0", "a1", "a2");
X __asm("addw #14,sp");
X __asm volatile ("movel d0,%0" : "=g" (ret));
X return(ret);
X}
X
Xstatic __inline void *
XSetexc(short vnum,void *vptr)
X{
X void *ret;
X
X __asm("movel %0,sp@-" :: "g" (vptr));
X __asm("movew %0,sp@-" :: "g" (vnum));
X __asm("movew #5,sp@-");
X __asm("trap #13" ::: "d0", "d1", "d2", "a0", "a1", "a2");
X __asm("addql #8,sp");
X __asm volatile ("movel d0,%0" : "=g" (ret));
X return(ret);
X}
X
Xstatic __inline long
XTickcal()
X{
X long ret;
X
X __asm("movew #6,sp@-");
X __asm("trap #13" ::: "d0", "d1", "d2", "a0", "a1", "a2");
X __asm("addql #2,sp");
X __asm volatile ("movel d0,%0" : "=g" (ret));
X return(ret);
X}
X
Xstatic __inline void *
XGetbpb(short d)
X{
X void *ret;
X
X __asm("movew %0,sp@-" :: "g" (d));
X __asm("movew #7,sp@-");
X __asm("trap #13" ::: "d0", "d1", "d2", "a0", "a1", "a2");
X __asm("addql #4,sp");
X __asm volatile ("movel d0,%0" : "=g" (ret));
X return(ret);
X}
X
Xstatic __inline long
XBcostat(short DEV)
X{
X long ret;
X
X __asm("movew %0,sp@-" :: "g" (DEV));
X __asm("movew #8,sp@-");
X __asm("trap #13" ::: "d0", "d1", "d2", "a0", "a1", "a2");
X __asm("addql #4,sp");
X __asm volatile ("movel d0,%0" : "=g" (ret));
X return(ret);
X}
X
Xstatic __inline long
XMediach(short d)
X{
X long ret;
X
X __asm("movew %0,sp@-" :: "g" (d));
X __asm("movew #9,sp@-");
X __asm("trap #13" ::: "d0", "d1", "d2", "a0", "a1", "a2");
X __asm("addql #4,sp");
X __asm volatile ("movel d0,%0" : "=g" (ret));
X return(ret);
X}
X
Xstatic __inline long
XDrvmap(void)
X{
X long ret;
X
X __asm("movew #10,sp@-");
X __asm("trap #13" ::: "d0", "d1", "d2", "a0", "a1", "a2");
X __asm("addql #2,sp");
X __asm volatile ("movel d0,%0" : "=g" (ret));
X return(ret);
X}
X
Xstatic __inline long
XKbshift(short mode)
X{
X long ret;
X
X __asm("movew %0,sp@-" :: "g" (mode));
X __asm("movew #11,sp@-");
X __asm("trap #13" ::: "d0", "d1", "d2", "a0", "a1", "a2");
X __asm("addql #4,sp");
X __asm volatile ("movel d0,%0" : "=g" (ret));
X return(ret);
X}
X
X#define Getshift() Kbshift(-1)
X
X/*
X * XBIOS (trap14)
X */
X#define Initmous(type,param,vptr) trap_14_wwll(0,type,param,vptr)
X#define Physbase() trap_14_www(2)
X#define Logbase() trap_14_www(3)
X#define Getrez() (int)trap_14_www(4)
X#define Setscreen(lscrn,pscrn,rez) trap_14_wllw(5,lscrn,pscrn,rez)
X#define Setpallete(palptr) trap_14_wllw(6,palptr)
X#define Setcolor(colornum,mixture) trap_14_wwll(7,colornum,mixture)
X#define Floprd(buf,x,d,sect,trk,side,n) trap_14_wllwwwwwlw(8,buf,x,d,sect,trk,side,n)
X#define Flopwr(buf,x,d,sect,trk,side,n) trap_14_wllwwwwwlw(9,buf,x,d,sect,trk,side,n)
X#define Flopfmt(b,x,d,spt,trk,sd,i,m,v) trap_14_wllwwwwwlw(10,b,x,d,spt,trk,sd,i,m,v)
X#define Midiws(cnt,ptr) trap_14_wwll(12,cnt,ptr)
X#define Mfpint(vnum,vptr) trap_14_wwll(13,vnum,vptr)
X#define Iorec(ioDEV) trap_14_wwll(14,ioDEV)
X#define Rsconf(baud,flow,uc,rs,ts,sc) trap_14_wwwwwww(15,baud,flow,uc,rs,ts,sc)
X#define Keytbl(nrml,shft,caps) trap_14_wlll(16,nrml,shft,caps)
X#define Random() trap_14_www(17)
X#define Protobt(buf,serial,dsktyp,exec) trap_14_wllwwwwwlw(18,buf,serial,dsktyp,exec)
X#define Flopver(buf,x,d,sect,trk,sd,n) trap_14_wllwwwwwlw(19,buf,x,d,sect,trk,sd,n)
X#define Scrdmp() trap_14_www(20)
X#define Cursconf(func,rate) trap_14_www(21,func,rate)
X#define Settime(time) trap_14_wllw(22,time)
X#define Gettime() trap_14_www(23)
X#define Bioskeys() trap_14_www(24)
X#define Ikbdws(len_minus1,ptr) trap_14_wwll(25,len_minus1,ptr)
X#define Jdisint(vnum) trap_14_www(26,vnum)
X#define Jenabint(vnum) trap_14_www(27,vnum)
X#define Giaccess(data,reg) trap_14_www(28,data,reg)
X#define Offgibit(ormask) trap_14_www(29,ormask)
X#define Ongibit(andmask) trap_14_www(30,andmask)
X#define Xbtimer(timer,ctrl,data,vnum) trap_14_wwwwl(31,timer,ctrl,data,vnum)
X#define Dosound(ptr) trap_14_wllw(32,ptr)
X#define Setprt(config) trap_14_www(33,config)
X#define Kbdvbase() trap_14_www(34)
X#define Kbrate(delay,reprate) trap_14_www(35,delay,reprate)
X#define Prtblk(pblkptr) trap_14_wllw(36,pblkptr)
X#define Vsync() trap_14_www(37)
X#define Supexec(funcptr) trap_14_wllw(38,funcptr)
X#define Blitmode(flag) trap_14_www(64,flag)
X#endif /* _OSBIND_H */
END_OF_FILE
if test 20404 -ne `wc -c <'include/osbind.h'`; then
echo shar: \"'include/osbind.h'\" unpacked with wrong size!
fi
# end of 'include/osbind.h'
fi
echo shar: End of archive 6 \(of 7\).
cp /dev/null ark6isdone
MISSING=""
for I in 1 2 3 4 5 6 7 ; do
if test ! -f ark${I}isdone ; then
MISSING="${MISSING} ${I}"
fi
done
if test "${MISSING}" = "" ; then
echo You have unpacked all 7 archives.
rm -f ark[1-9]isdone
else
echo You still need to unpack the following archives:
echo " " ${MISSING}
fi
## End of shell archive.
exit 0