home *** CD-ROM | disk | FTP | other *** search
/ The Atari Compendium / The Atari Compendium (Toad Computers) (1994).iso / files / prgtools / c / sozobon / sozlib15.zoo / sozdistr / include / xdlibs / tosbind.h < prev    next >
Encoding:
C/C++ Source or Header  |  1995-08-19  |  17.2 KB  |  418 lines

  1. /*
  2.  * @(#)tosbind.h, SozobonX XdLibs (c) jerry g geiger 1995
  3.  *
  4.  * Mnemonic names for TOS operating system calls
  5.  * last change
  6.  *  -VS 1995/08/19
  7.  */
  8.  
  9. #ifndef _TOSBIND_H
  10. #define _TOSBIND_H
  11.  
  12. #ifndef __MSHORT__
  13. /* if inlines are not allowed, then declare things external */
  14. extern long trap_1_w (short n);
  15. extern long trap_1_ww (short n, short a);
  16. extern long trap_1_wl (short n, long a);
  17. extern long trap_1_wlw (short n, long a, short b);
  18. extern long trap_1_wwll (short n, short a, long b, long c);
  19. extern long trap_1_wlww (short n, long a, short b, short c);
  20. extern long trap_1_www (short n, short a, short b);
  21. extern long trap_1_wll (short n, long a, long b);
  22. extern long trap_1_wwlll (short n, short a, long b, long c, long d);
  23. extern long trap_1_wwwll (short n, short a, short b, long c, long d);
  24. extern long trap_13_wl (short n, long a);
  25. extern long trap_13_w (short n);
  26. extern long trap_13_ww (short n, short a);
  27. extern long trap_13_www (short n, short a, short b);
  28. extern long trap_13_wwlwww (short n, short a, long b, short c, short d, short e);
  29. extern long trap_13_wwl (short n, short a, long b);
  30. extern long trap_14_wwl (short n, short a, long b);
  31. extern long trap_14_wwll (short n, short a, long b, long c);
  32. extern long trap_14_ww (short n, short a);
  33. extern long trap_14_w (short n);
  34. extern long trap_14_wllw (short n, long a, long b, short c);
  35. extern long trap_14_wl (short n, long a);
  36. extern long trap_14_www (short n, short a, short b);
  37. extern long trap_14_wllwwwww (short n, long a, long b, short c, short d, short e, short f, short g);
  38. extern long trap_14_wllwwwwlw (short n, long a, long b, short c, short d, short e, short f, long g, short h);
  39. extern long trap_14_wllwwwwwlw (short n, long a, long b, short c, short d, short e, short f, short g, long h, short i);
  40. extern long trap_14_wwwwwww (short n, short a, short b, short c, short d, short e, short f);
  41. extern long trap_14_wlll (short n, long a, long b, long c);
  42. extern long trap_14_wllww (short n, long a, long b, short c, short d);
  43. extern long trap_14_wwwwl (short n, short a, short b, short c, long d);
  44. extern long trap_14_wwwl (short n, short a, short b, long c);
  45. extern long trap_14_wlwlw (short n, long a, short b, long c, short d);
  46.  
  47. # else /* __MSHORT__ */
  48.  
  49. #ifndef _OSBIND_H
  50. extern    long    gemdos(short, ...);
  51. extern    long    bios(short, ...);
  52. extern    long    xbios(short, ...);
  53. extern    short    bdos();
  54. #endif /* _OSBIND_H */
  55.  
  56. #define trap_1_w    gemdos
  57. #define trap_1_ww    gemdos
  58. #define trap_1_wl    gemdos
  59. #define trap_1_wlw    gemdos
  60. #define trap_1_www    gemdos
  61. #define trap_1_wll    gemdos
  62. #define trap_1_wwll    gemdos
  63. #define trap_1_wlww    gemdos
  64. #define trap_1_wwlll    gemdos
  65. #define trap_1_wwwll    gemdos
  66.  
  67. #define trap_13_w    bios
  68. #define trap_13_ww    bios
  69. #define trap_13_wl    bios
  70. #define trap_13_www    bios
  71. #define trap_13_wwl    bios
  72. #define trap_13_wwlwww    bios
  73.  
  74. #define trap_14_w    xbios
  75. #define trap_14_ww    xbios
  76. #define trap_14_wl    xbios
  77. #define trap_14_www    xbios
  78. #define trap_14_wwl    xbios
  79. #define trap_14_wwll    xbios
  80. #define trap_14_wllw    xbios
  81. #define trap_14_wlll    xbios
  82. #define trap_14_wwwl    xbios
  83. #define trap_14_wwwwl    xbios
  84. #define trap_14_wllww    xbios
  85. #define trap_14_wwwwwww    xbios
  86. #define trap_14_wllwwwww    xbios
  87. #define trap_14_wllwwwwlw    xbios
  88. #define trap_14_wllwwwwwlw    xbios
  89. #define trap_14_wlwlw    xbios
  90.  
  91. # endif /* __MSHORT__ */
  92.  
  93. /* DEFINITIONS FOR OS FUNCTIONS */
  94.  
  95. /*
  96.  *     GEMDOS  (trap1)
  97.  */
  98. #define           Pterm0()                                      \
  99.        (void)trap_1_w((short)(0x00))
  100. #define           Cconin()                               \
  101.        (long)trap_1_w((short)(0x01))
  102. #define           Cconout(c)                           \
  103.        (void)trap_1_ww((short)(0x02),(short)(c))
  104. #define           Cauxin()                               \
  105.        (long)trap_1_w((short)(0x03))
  106. #define           Cauxout(c)                           \
  107.        (void)trap_1_ww((short)(0x04),(short)(c))
  108. #define           Cprnout(c)                           \
  109.        (void)trap_1_ww((short)(0x05),(short)(c))
  110. #define           Crawio(data)                           \
  111.        (long)trap_1_ww((short)(0x06),(short)(data))
  112. #define           Crawcin()                           \
  113.        (long)trap_1_w((short)(0x07))
  114. #define           Cnecin()                               \
  115.        (long)trap_1_w((short)(0x08))
  116. #define           Cconws(s)                           \
  117.        (void)trap_1_wl((short)(0x09),(long)(s))
  118. #define           Cconrs(buf)                           \
  119.        (void)trap_1_wl((short)(0x0A),(long)(buf))
  120. #define           Cconis()                               \
  121.        (short)trap_1_w((short)(0x0B))
  122. #define           Dsetdrv(d)                           \
  123.        (long)trap_1_ww((short)(0x0E),(short)(d))
  124. #define           Cconos()                               \
  125.        (short)trap_1_w((short)(0x10))
  126. #define           Cprnos()                               \
  127.        (short)trap_1_w((short)(0x11))
  128. #define           Cauxis()                               \
  129.        (short)trap_1_w((short)(0x12))
  130. #define           Cauxos()                               \
  131.        (short)trap_1_w((short)(0x13))
  132. #define           Dgetdrv()                           \
  133.        (short)trap_1_w((short)(0x19))
  134. #define           Fsetdta(dta)                           \
  135.        (void)trap_1_wl((short)(0x1A),(long)(dta))
  136.  
  137. /*
  138.  * The next binding is not quite right if used in another than the usual ways:
  139.  *    1. Super(1L) from either user or supervisor mode
  140.  *    2. ret = Super(0L) from user mode and after this Super(ret) from
  141.  *       supervisor mode
  142.  * We get the following situations (usp, ssp relative to the start of Super):
  143.  *    Parameter    Userstack    Superstack    Calling Mode    ret
  144.  *       1L           usp           ssp            user     0L
  145.  *       1L           usp           ssp         supervisor    -1L
  146.  *       0L          usp-6           usp            user    ssp
  147.  *       0L           ssp          ssp-6         supervisor   ssp-6
  148.  *      ptr          usp-6          ptr+6            user    ssp
  149.  *      ptr          usp+6           ptr         supervisor     sr
  150.  * The usual C-bindings are safe only because the "unlk a6" is compensating
  151.  * the errors when you invoke this function. In this binding the "unlk a6" at
  152.  * the end of the calling function compensates the error made in sequence 2
  153.  * above (the usp is 6 to low after the first call which is not corrected by
  154.  * the second call).
  155.  */
  156. #define           Super(ptr)                           \
  157.        (long)trap_1_wl((short)(0x20),(long)(ptr))
  158.     /* Tos 1.4: Super(1L) : rets -1L if in super mode, 0L otherwise */
  159. #define           Tgetdate()                           \
  160.        (short)trap_1_w((short)(0x2A))
  161. #define           Tsetdate(date)                           \
  162.        (long)trap_1_ww((short)(0x2B),(short)(date))
  163. #define           Tgettime()                           \
  164.        (short)trap_1_w((short)(0x2C))
  165. #define           Tsettime(time)                           \
  166.        (long)trap_1_ww((short)(0x2D),(short)(time))
  167. #define           Fgetdta()                           \
  168.        (DTA *)trap_1_w((short)(0x2F))
  169. #define           Sversion()                           \
  170.        (short)trap_1_w((short)(0x30))
  171. #define           Ptermres(save,rv)                       \
  172.        (void)trap_1_wlw((short)(0x31),(long)(save),(short)(rv))
  173. #define           Dfree(buf,d)                           \
  174.        (long)trap_1_wlw((short)(0x36),(long)(buf),(short)(d))
  175. #define           Dcreate(path)                           \
  176.        (short)trap_1_wl((short)(0x39),(long)(path))
  177. #define           Ddelete(path)                           \
  178.        (long)trap_1_wl((short)(0x3A),(long)(path))
  179. #define           Dsetpath(path)                           \
  180.        (long)trap_1_wl((short)(0x3B),(long)(path))
  181. #define           Fcreate(fn,mode)                           \
  182.        (long)trap_1_wlw((short)(0x3C),(long)(fn),(short)(mode))
  183. #define           Fopen(fn,mode)                           \
  184.        (long)trap_1_wlw((short)(0x3D),(long)(fn),(short)(mode))
  185. #define           Fclose(handle)                           \
  186.        (long)trap_1_ww((short)(0x3E),(short)(handle))
  187. #define           Fread(handle,cnt,buf)                       \
  188.        (long)trap_1_wwll((short)(0x3F),(short)(handle),           \
  189.              (long)(cnt),(long)(buf))
  190. #define           Fwrite(handle,cnt,buf)                       \
  191.        (long)trap_1_wwll((short)(0x40),(short)(handle),           \
  192.              (long)(cnt),(long)(buf))
  193. #define           Fdelete(fn)                           \
  194.        (long)trap_1_wl((short)(0x41),(long)(fn))
  195. #define           Fseek(where,handle,how)                       \
  196.        (long)trap_1_wlww((short)(0x42),(long)(where),           \
  197.              (short)(handle),(short)(how))
  198. #define           Fattrib(fn,rwflag,attr)                       \
  199.        (short)trap_1_wlww((short)(0x43),(long)(fn),           \
  200.               (short)(rwflag),(short)(attr))
  201. #define           Fdup(handle)                           \
  202.        (long)trap_1_ww((short)(0x45),(short)(handle))
  203. #define           Fforce(Hstd,Hnew)                       \
  204.        (long)trap_1_www((short)(0x46),(short)(Hstd),(short)(Hnew))
  205. #define           Dgetpath(buf,d)                           \
  206.        (long)trap_1_wlw((short)(0x47),(long)(buf),(short)(d))
  207. #define           Malloc(size)                           \
  208.        (long)trap_1_wl((short)(0x48),(long)(size))
  209. #define           Mfree(ptr)                           \
  210.        (long)trap_1_wl((short)(0x49),(long)(ptr))
  211. #define           Mshrink(ptr,size)                       \
  212.        (long)trap_1_wwll((short)(0x4A),(short)0,(long)(ptr),(long)(size))
  213. #define           Pexec(mode,prog,tail,env)               \
  214.        (long)trap_1_wwlll((short)(0x4B),(short)(mode),(long)(prog),   \
  215.                (long)(tail),(long)(env))
  216. #define           Pterm(rv)                           \
  217.        (void)trap_1_ww((short)(0x4C),(short)(rv))
  218. #define           Fsfirst(filespec,attr)                       \
  219.        (long)trap_1_wlw((short)(0x4E),(long)(filespec),(short)(attr))
  220. #define           Fsnext()                               \
  221.        (long)trap_1_w((short)(0x4F))
  222. #define           Frename(zero,old,new)                       \
  223.        (short)trap_1_wwll((short)(0x56),(short)(zero),           \
  224.               (long)(old),(long)(new))
  225. #define           Fdatime(timeptr,handle,rwflag)                   \
  226.        (long)trap_1_wlww((short)(0x57),(long)(timeptr),           \
  227.              (short)(handle),(short)(rwflag))
  228. #define           Flock(handle,mode,start,length)                   \
  229.        (long)trap_1_wwwll((short)(0x5C),(short)(handle),       \
  230.               (short)(mode),(long)(start),(long)(length))
  231.  
  232. /*
  233.  *     BIOS    (trap13)
  234.  */
  235. #define Getmpb(ptr)                           \
  236.        (void)trap_13_wl((short)(0x00),(long)(ptr))
  237. #define           Bconstat(dev)                           \
  238.        (short)trap_13_ww((short)(0x01),(short)(dev))
  239. #define           Bconin(dev)                           \
  240.        (long)trap_13_ww((short)(0x02),(short)(dev))
  241. #define           Bconout(dev,c)                           \
  242.        (long)trap_13_www((short)(0x03),(short)(dev),(short)((c) & 0xFF))
  243. /* since AHDI 3.1 there is a new call to Rwabs with one more parameter */
  244. #define           Rwabs(rwflag,buf,n,sector,d)            \
  245.        (long)trap_13_wwlwww((short)(0x04),(short)(rwflag),(long)(buf), \
  246.                  (short)(n),(short)(sector),(short)(d))
  247. #define           Setexc(vnum,vptr)                       \
  248.        (void (*) (void))trap_13_wwl((short)(0x05),(short)(vnum),(long)(vptr))
  249. #define           Tickcal()                           \
  250.        (long)trap_13_w((short)(0x06))
  251. #define           Getbpb(d)                           \
  252.        (void *)trap_13_ww((short)(0x07),(short)(d))
  253. #define           Bcostat(dev)                           \
  254.        (short)trap_13_ww((short)(0x08),(short)(dev))
  255. #define           Mediach(dev)                           \
  256.        (short)trap_13_ww((short)(0x09),(short)(dev))
  257. #define           Drvmap()                               \
  258.        (long)trap_13_w((short)(0x0A))
  259. #define           Kbshift(data)                           \
  260.        (long)trap_13_ww((short)(0x0B),(short)(data))
  261. #define           Getshift()                           \
  262.     Kbshift(-1)
  263.  
  264.  
  265. /*
  266.  *     XBIOS   (trap14)
  267.  */
  268.  
  269. #define           Initmous(type,param,vptr)                   \
  270.        (void)trap_14_wwll((short)(0x00),(short)(type),           \
  271.               (long)(param),(long)(vptr))
  272. #define Ssbrk(size)                           \
  273.        (void *)trap_14_ww((short)(0x01),(short)(size))
  274. #define           Physbase()                           \
  275.        (void *)trap_14_w((short)(0x02))
  276. #define           Logbase()                           \
  277.        (void *)trap_14_w((short)(0x03))
  278. #define           Getrez()                               \
  279.        (short)trap_14_w((short)(0x04))
  280. #define           Setscreen(lscrn,pscrn,rez)                   \
  281.        (void)trap_14_wllw((short)(0x05),(long)(lscrn),(long)(pscrn), \
  282.               (short)(rez))
  283. #define           Setpalette(palptr)                       \
  284.        (void)trap_14_wl((short)(0x06),(long)(palptr))
  285. #define           Setcolor(colornum,mixture)                   \
  286.        (short)trap_14_www((short)(0x07),(short)(colornum),(short)(mixture))
  287. #define           Floprd(buf,x,d,sect,trk,side,n)                   \
  288.        (short)trap_14_wllwwwww((short)(0x08),(long)(buf),(long)(x), \
  289.      (short)(d),(short)(sect),(short)(trk),(short)(side),(short)(n))
  290. #define           Flopwr(buf,x,d,sect,trk,side,n)                   \
  291.        (short)trap_14_wllwwwww((short)(0x09),(long)(buf),(long)(x), \
  292.            (short)(d),(short)(sect),(short)(trk),(short)(side),(short)(n))
  293. #define           Flopfmt(buf,x,d,spt,t,sd,i,m,v)               \
  294.        (short)trap_14_wllwwwwwlw((short)(0x0A),(long)(buf),(long)(x), \
  295.       (short)(d),(short)(spt),(short)(t),(short)(sd),(short)(i),  \
  296.       (long)(m),(short)(v))
  297. #define           Midiws(cnt,ptr)                           \
  298.        (void)trap_14_wwl((short)(0x0C),(short)(cnt),(long)(ptr))
  299. #define           Mfpint(vnum,vptr)                       \
  300.        (void)trap_14_wwl((short)(0x0D),(short)(vnum),(long)(vptr))
  301. #define           Iorec(ioDEV)                           \
  302.        (void *)trap_14_ww((short)(0x0E),(short)(ioDEV))
  303. #define           Rsconf(baud,flow,uc,rs,ts,sc)                   \
  304.        (long)trap_14_wwwwwww((short)(0x0F),(short)(baud),(short)(flow), \
  305.               (short)(uc),(short)(rs),(short)(ts),(short)(sc))
  306.     /* ret old val: MSB -> ucr:8, rsr:8, tsr:8, scr:8 <- LSB */
  307. #define           Keytbl(nrml,shft,caps)                       \
  308.        (void *)trap_14_wlll((short)(0x10),(long)(nrml), \
  309.                 (long)(shft),(long)(caps))
  310. #define           Random()                               \
  311.        (long)trap_14_w((short)(0x11))
  312. #define           Protobt(buf,serial,dsktyp,exec)                   \
  313.        (void)trap_14_wllww((short)(0x12),(long)(buf),(long)(serial), \
  314.                (short)(dsktyp),(short)(exec))
  315. #define           Flopver(buf,x,d,sect,trk,sd,n)                   \
  316.        (short)trap_14_wllwwwww((short)(0x13),(long)(buf),(long)(x),(short)(d),\
  317.            (short)(sect),(short)(trk),(short)(sd),(short)(n))
  318. #define           Scrdmp()                               \
  319.        (void)trap_14_w((short)(0x14))
  320. #define           Cursconf(rate,attr)                       \
  321.        (short)trap_14_www((short)(0x15),(short)(rate),(short)(attr))
  322. #define           Settime(time)                           \
  323.        (void)trap_14_wl((short)(0x16),(long)(time))
  324. #define           Gettime()                           \
  325.        (long)trap_14_w((short)(0x17))
  326. #define           Bioskeys()                           \
  327.        (void)trap_14_w((short)(0x18))
  328. #define           Ikbdws(len_minus1,ptr)                       \
  329.        (void)trap_14_wwl((short)(0x19),(short)(len_minus1),(long)(ptr))
  330. #define           Jdisint(vnum)                           \
  331.        (void)trap_14_ww((short)(0x1A),(short)(vnum))
  332. #define           Jenabint(vnum)                           \
  333.        (void)trap_14_ww((short)(0x1B),(short)(vnum))
  334. #define           Giaccess(data,reg)                       \
  335.        (short)trap_14_www((short)(0x1C),(short)(data),(short)(reg))
  336. #define           Offgibit(ormask)                           \
  337.        (void)trap_14_ww((short)(0x1D),(short)(ormask))
  338. #define           Ongibit(andmask)                           \
  339.        (void)trap_14_ww((short)(0x1E),(short)(andmask))
  340. #define           Xbtimer(timer,ctrl,data,vptr)                   \
  341.        (void)trap_14_wwwwl((short)(0x1F),(short)(timer),(short)(ctrl), \
  342.                (short)(data),(long)(vptr))
  343. #define           Dosound(ptr)                           \
  344.        (void)trap_14_wl((short)(0x20),(long)(ptr))
  345. #define           Setprt(config)                           \
  346.        (short)trap_14_ww((short)(0x21),(short)(config))
  347. #define           Kbdvbase()                           \
  348.        (KBDVECS*)trap_14_w((short)(0x22))
  349. #define           Kbrate(delay,reprate)                       \
  350.        (short)trap_14_www((short)(0x23),(short)(delay),(short)(reprate))
  351. #define           Prtblk(pblkptr)                           \
  352.        (void)trap_14_wl((short)(0x24),(long)(pblkptr)) /* obsolete ? */
  353. #define           Vsync()                               \
  354.        (void)trap_14_w((short)(0x25))
  355. #define           Supexec(funcptr)                           \
  356.        (long)trap_14_wl((short)(0x26),(long)(funcptr))
  357. #define           Floprate(drive,rate)                       \
  358.        (short)trap_14_www((short)(0x29),(short)(drive),(short)(rate))
  359. #define           Blitmode(flag)                           \
  360.        (short)trap_14_ww((short)(0x40),(short)(flag))
  361. /*
  362.  * Flag:
  363.  *  -1: get config
  364.  * !-1: set config    previous config returned
  365.  *    bit
  366.  *     0    0 blit mode soft    1 blit mode hardware
  367.  *     1    0 no blitter        1 blitter present
  368.  *    2..14   reserved
  369.  *     15    must be zero on set/returned as zero
  370.  * blitmode (bit 0) forced to soft if no blitter(bit 1 == 0).
  371.  */
  372.  
  373. /*
  374.  * extensions for TT TOS
  375.  */
  376.  
  377. #define         Mxalloc(amt,flag)                    \
  378.     (long)trap_1_wlw((short)(0x44),(long)(amt),(short)(flag))
  379. #define        Maddalt(start,size)                    \
  380.     (long)trap_1_wll((short)(0x14),(long)(start),(long)(size))
  381.  
  382. #define         EsetShift(mode)                        \
  383.     (void)trap_14_ww((short)(80),(short)mode)
  384. #define         EgetShift()                        \
  385.     (short)trap_14_w((short)(81))
  386. #define         EsetBank(bank)                        \
  387.     (short)trap_14_ww((short)(82),(short)bank)
  388. #define         EsetColor(num,val)                    \
  389.     (short)trap_14_www((short)(83),(short)num,(short)val)
  390. #define         EsetPalette(start,count,ptr)                \
  391.     (void)trap_14_wwwl((short)(84),(short)start,(short)count,(long)ptr)
  392. #define         EgetPalette(start,count,ptr)                \
  393.     (void)trap_14_wwwl((short)(85),(short)start,(short)count,(long)ptr)
  394. #define         EsetGray(mode)                        \
  395.     (short)trap_14_ww((short)(86),(short)mode)
  396. #define         EsetSmear(mode)                        \
  397.     (short)trap_14_ww((short)(87),(short)mode)
  398.  
  399. #define        DMAread(sector,count,buffer,devno)            \
  400.     (long)trap_14_wlwlw((short)0x2a,(long)sector,(short)count,(long)buffer, \
  401.                 (short)devno)
  402. #define        DMAwrite(sector,count,buffer,devno)            \
  403.     (long)trap_14_wlwlw((short)0x2b,(long)sector,(short)count,(long)buffer, \
  404.             (short)devno)
  405. #define        Bconmap(dev)                        \
  406.     (long)trap_14_ww((short)0x2c,(short)(dev))
  407. #define        NVMaccess(op,start,count,buf)                \
  408.     (short)trap_14_wwwwl((short)0x2e,(short)op,(short)start,(short)count, \
  409.             (long)buf)
  410.  
  411. /*  Wake-up call for ST BOOK -- takes date/time pair in DOS format. */
  412.  
  413. #define           Waketime(w_date, w_time)                    \
  414.        (void)trap_14_www((short)(0x2f),(unsigned short)(w_date),    \
  415.                        (unsigned short)(w_time))
  416.  
  417. #endif    /* _TOSBIND_H */
  418.