home *** CD-ROM | disk | FTP | other *** search
/ Atari FTP / ATARI_FTP_0693.zip / ATARI_FTP_0693 / Mint / mntlib25.zoo / purec / mintbind.s < prev    next >
Text File  |  1992-09-17  |  7KB  |  529 lines

  1. * reentrant MiNT bindings for Pure C
  2. * hohmuth 29 Aug 92
  3. *
  4. * this module is spezialized for pure c (awaits parameters
  5. * in registers)
  6. *
  7. ; To assemble with MAS (the assembler that comes with Turbo C),
  8. ; delete all instances of the strings ".MODULE" and ".ENDMOD"
  9.  
  10.     .EXPORT    Syield, Fpipe, Fcntl, Finstat, Foutstat, Fgetchar, Fputchar
  11.     .EXPORT Pwait, Pnice, Pgetpid, Pgetppid, Pgetpgrp, Psetpgrp
  12.     .EXPORT Pgetuid, Psetuid, Pkill, Psignal, Pvfork, Pgetgid, Psetgid
  13.     .EXPORT Psigblock, Psigsetmask, Pusrval, Pdomain, Psigreturn
  14.     .EXPORT Pfork, Pwait3, Fselect, Prusage, Psetlimit, Talarm, Pause
  15.     .EXPORT Sysconf, Psigpending, Dpathconf, Pmsg, Fmidipipe, Prenice
  16.     .EXPORT    Dopendir, Dreaddir, Drewinddir, Dclosedir, Fxattr, Flink
  17.     .EXPORT Fsymlink, Freadlink, Dcntl, Fchown, Fchmod, Pumask
  18.     .EXPORT Psemaphore, Dlock, Psigpause, Psigaction, Pgeteuid, Pgetegid
  19.     .EXPORT Pwaitpid
  20.     
  21. GEMDOS        =    1
  22. BIOS        =    13
  23. XBIOS        =    14
  24.  
  25. _scrapregs    reg    a2        ; reggies we want to save
  26. REGSIZE        equ    4        ; size of the space we need for this
  27.  
  28. .MACRO    SYS_    Os,Nr
  29.     movem.l    #_scrapregs,-(sp)
  30.     move.w    Nr,-(sp)
  31.     trap    #Os
  32.     addq.w    #2,sp
  33.     movem.l    (sp)+,#_scrapregs
  34.     .ENDM
  35.  
  36. .MACRO    SYS_L    Os,Nr,L1
  37.     movem.l    #_scrapregs,-(sp)
  38.     move.l    L1,-(sp)
  39.     move.w    Nr,-(sp)
  40.     trap    #Os
  41.     addq.w    #6,sp
  42.     movem.l    (sp)+,#_scrapregs
  43.     .ENDM
  44.     
  45. .MACRO    SYS_W    Os,Nr,W1
  46.     movem.l    #_scrapregs,-(sp)
  47.     move.w    W1,-(sp)
  48.     move.w    Nr,-(sp)
  49.     trap    #Os
  50.     addq.w    #4,sp
  51.     movem.l    (sp)+,#_scrapregs
  52.     .ENDM
  53.     
  54. .MACRO    SYS_WW    Os,Nr,W1,W2
  55.     movem.l    #_scrapregs,-(sp)
  56.     move.w    W2,-(sp)
  57.     move.w    W1,-(sp)
  58.     move.w    Nr,-(sp)
  59.     trap    #Os
  60.     addq.w    #6,sp
  61.     movem.l    (sp)+,#_scrapregs
  62.     .ENDM
  63.  
  64. .MACRO    SYS_LW    Os,Nr,L1,W1
  65.     movem.l    #_scrapregs,-(sp)
  66.     move.w    W1,-(sp)
  67.     move.l    L1,-(sp)
  68.     move.w    Nr,-(sp)
  69.     trap    #Os
  70.     addq.w    #8,sp
  71.     movem.l    (sp)+,#_scrapregs
  72.     .ENDM
  73.  
  74. .MACRO    SYS_WWW    Os,Nr,W1,W2,W3
  75.     movem.l    #_scrapregs,-(sp)
  76.     move.w    W3,-(sp)
  77.     move.w    W2,-(sp)
  78.     move.w    W1,-(sp)
  79.     move.w    Nr,-(sp)
  80.     trap    #Os
  81.     addq.w    #8,sp
  82.     movem.l    (sp)+,#_scrapregs
  83.     .ENDM
  84.  
  85. .MACRO    SYS_WLW    Os,Nr,W1,L1,W2
  86.     movem.l    #_scrapregs,-(sp)
  87.     move.w    W2,-(sp)
  88.     move.l    L1,-(sp)
  89.     move.w    W1,-(sp)
  90.     move.w    Nr,-(sp)
  91.     trap    #Os
  92.     lea        10(sp),sp
  93.     movem.l    (sp)+,#_scrapregs
  94.     .ENDM
  95.     
  96. .MACRO    SYS_WL    Os,Nr,W1,L1
  97.     movem.l    #_scrapregs,-(sp)
  98.     move.l    L1,-(sp)
  99.     move.w    W1,-(sp)
  100.     move.w    Nr,-(sp)
  101.     trap    #Os
  102.     addq.w    #8,sp
  103.     movem.l    (sp)+,#_scrapregs
  104.     .ENDM
  105.  
  106. .MACRO    SYS_WLL    Os,Nr,W1,L1,L2
  107.     movem.l    #_scrapregs,-(sp)
  108.     move.l    L2,-(sp)
  109.     move.l    L1,-(sp)
  110.     move.w    W1,-(sp)
  111.     move.w    Nr,-(sp)
  112.     trap    #Os
  113.     lea        12(sp),sp
  114.     movem.l    (sp)+,#_scrapregs
  115.     .ENDM
  116.  
  117. .MACRO    SYS_WWL    Os,Nr,W1,W2,L1
  118.     movem.l    #_scrapregs,-(sp)
  119.     move.l    L1,-(sp)
  120.     move.w    W2,-(sp)
  121.     move.w    W1,-(sp)
  122.     move.w    Nr,-(sp)
  123.     trap    #Os
  124.     lea        10(sp),sp
  125.     movem.l    (sp)+,#_scrapregs
  126.     .ENDM
  127.  
  128. .MACRO    SYS_LWW    Os,Nr,L1,W1,W2
  129.     movem.l    #_scrapregs,-(sp)
  130.     move.w    W2,-(sp)
  131.     move.w    W1,-(sp)
  132.     move.l    L1,-(sp)
  133.     move.w    Nr,-(sp)
  134.     trap    #Os
  135.     lea        10(sp),sp
  136.     movem.l    (sp)+,#_scrapregs
  137.     .ENDM
  138.  
  139. .MACRO    SYS_WLLL Os,Nr,W1,L1,L2,L3
  140.     movem.l    #_scrapregs,-(sp)
  141.     move.l    L3,-(sp)
  142.     move.l    L2,-(sp)
  143.     move.l    L1,-(sp)
  144.     move.w    W1,-(sp)
  145.     move.w    Nr,-(sp)
  146.     trap    #Os
  147.     lea        16(sp),sp
  148.     movem.l    (sp)+,#_scrapregs
  149.     .ENDM
  150.  
  151. .MACRO    SYS_LL    Os,Nr,L1,L2
  152.     movem.l    #_scrapregs,-(sp)
  153.     move.l    L2,-(sp)
  154.     move.l    L1,-(sp)
  155.     move.w    Nr,-(sp)
  156.     trap    #Os
  157.     lea        10(sp),sp
  158.     movem.l    (sp)+,#_scrapregs
  159.     .ENDM
  160.  
  161. *
  162. * GEMDOS bindings
  163. *
  164.     
  165.     USER
  166.     
  167. .MODULE    Syield:
  168.  
  169.     SYS_    GEMDOS,#$ff
  170.     rts
  171.  
  172.     .ENDMOD
  173.  
  174. .MODULE    Fpipe:
  175.  
  176.     SYS_L    GEMDOS,#$100,a0
  177.     rts
  178.  
  179.     .ENDMOD
  180.  
  181. .MODULE    Fcntl:
  182.     SYS_WLW    GEMDOS,#$104,d0,d1,d2
  183.     rts
  184.  
  185.     .ENDMOD
  186.  
  187. .MODULE Finstat:
  188.     SYS_W    GEMDOS,#$105,d0
  189.     rts
  190.  
  191.     .ENDMOD
  192.     
  193. .MODULE Foutstat:
  194.     SYS_W    GEMDOS,#$106,d0
  195.     rts
  196.     
  197.     .ENDMOD
  198.  
  199. .MODULE    Fgetchar:
  200.     SYS_WW    GEMDOS,#$107,d0,d1
  201.     rts
  202.     
  203.     .ENDMOD
  204.     
  205. .MODULE Fputchar:
  206.     SYS_WLW    GEMDOS,#$108,d0,d1,d2
  207.     rts
  208.     
  209.     .ENDMOD
  210.  
  211. .MODULE    Pwait:
  212.     SYS_    GEMDOS,#$109
  213.     rts
  214.  
  215.     .ENDMOD
  216.  
  217. .MODULE Pnice:
  218.     SYS_W    GEMDOS,#$10a,d0
  219.     rts
  220.     
  221.     .ENDMOD
  222.  
  223. .MODULE    Pgetpid:
  224.     SYS_    GEMDOS,#$10b
  225.     rts
  226.  
  227.     .ENDMOD
  228.  
  229. .MODULE Pgetppid:
  230.     SYS_    GEMDOS,#$10c
  231.     rts
  232.     
  233.     .ENDMOD
  234.  
  235. .MODULE Pgetpgrp:
  236.     SYS_    GEMDOS,#$10d
  237.     rts
  238.     
  239.     .ENDMOD
  240.  
  241. .MODULE Psetpgrp:
  242.     SYS_WW    GEMDOS,#$10e,d0,d1
  243.     rts
  244.     
  245.     .ENDMOD
  246.  
  247. .MODULE Pgetuid:
  248.     SYS_    GEMDOS,#$10f
  249.     rts
  250.     
  251.     .ENDMOD
  252.  
  253. .MODULE Psetuid:
  254.     SYS_W    GEMDOS,#$110,d0
  255.     rts
  256.     
  257.     .ENDMOD
  258.  
  259. .MODULE    Pkill:
  260.     SYS_WW    GEMDOS,#$111,d0,d1
  261.     rts
  262.  
  263.     .ENDMOD
  264.  
  265. ; CAUTION! We assume the function is given as a long, NOT as a pointer!
  266. ; i.e. Psignal(int sig, long function);
  267. .MODULE    Psignal:
  268.     SYS_WL    GEMDOS,#$112,d0,d1
  269. ;    SYS_WL    GEMDOS,#$112,d0,a0
  270.     rts
  271.  
  272.     .ENDMOD
  273.  
  274. .MODULE Pvfork:
  275.     SYS_    GEMDOS,#$113
  276.     rts
  277.     
  278.     .ENDMOD
  279.  
  280. .MODULE Pgetgid:
  281.     SYS_    GEMDOS,#$114
  282.     rts
  283.     
  284.     .ENDMOD
  285.  
  286. .MODULE Psetgid:
  287.     SYS_W    GEMDOS,#$115,d0
  288.     rts
  289.     
  290.     .ENDMOD
  291.  
  292. .MODULE    Psigblock:
  293.     SYS_L    GEMDOS,#$116,d0
  294.     rts
  295.  
  296.     .ENDMOD
  297.  
  298. .MODULE    Psigsetmask:
  299.     SYS_L    GEMDOS,#$117,d0
  300.     rts
  301.  
  302.     .ENDMOD
  303.  
  304. .MODULE    Pusrval:
  305.     SYS_L    GEMDOS,#$118,d0
  306.     rts
  307.  
  308.     .ENDMOD
  309.  
  310. .MODULE Pdomain:
  311.     SYS_W    GEMDOS,#$119,d0
  312.     rts
  313.     
  314.     .ENDMOD
  315.  
  316. .MODULE    Psigreturn:
  317.     SYS_    GEMDOS,#$11a
  318.     rts
  319.  
  320.     .ENDMOD
  321.  
  322. .MODULE Pfork:
  323.     SYS_    GEMDOS,#$11b
  324.     rts
  325.     
  326.     .ENDMOD
  327.  
  328. .MODULE    Pwait3:
  329.     SYS_WL    GEMDOS,#$11c,d0,a0
  330.     rts
  331.  
  332.     .ENDMOD
  333.  
  334. .MODULE    Fselect:
  335.     SYS_WLLL GEMDOS,#$11d,d0,a0,a1,REGSIZE+4(sp)
  336.     rts
  337.  
  338.     .ENDMOD
  339.  
  340. .MODULE Prusage:
  341.     SYS_L    GEMDOS,#$11e,a0
  342.     rts
  343.     
  344.     .ENDMOD
  345.  
  346. .MODULE Psetlimit:
  347.     SYS_WL    GEMDOS,#$11f,d0,d1
  348.     rts
  349.     
  350.     .ENDMOD
  351.  
  352. .MODULE    Talarm:
  353.     SYS_L    GEMDOS,#$120,d0
  354.     rts
  355.  
  356.     .ENDMOD
  357.  
  358. .MODULE    Pause:
  359.     SYS_    GEMDOS,#$121
  360.     rts
  361.  
  362.     .ENDMOD
  363.  
  364. .MODULE Sysconf:
  365.     SYS_W    GEMDOS,#$122,d0
  366.     rts
  367.     
  368.     .ENDMOD
  369.  
  370. .MODULE Psigpending:
  371.     SYS_    GEMDOS,#$123
  372.     rts
  373.     
  374.     .ENDMOD
  375.  
  376. .MODULE Dpathconf:
  377.     SYS_LW    GEMDOS,#$124,a0,d0
  378.     rts
  379.     
  380.     .ENDMOD
  381.  
  382. .MODULE Pmsg:
  383.     SYS_WLL    GEMDOS,#$125,d0,d1,a0
  384.     rts
  385.     
  386.     .ENDMOD
  387.  
  388. .MODULE Fmidipipe:
  389.     SYS_WWW    GEMDOS,#$126,d0,d1,d2
  390.     rts
  391.     
  392.     .ENDMOD
  393.  
  394. .MODULE Prenice:
  395.     SYS_WW    GEMDOS,#$127,d0,d1
  396.     rts
  397.     
  398.     .ENDMOD
  399.  
  400. .MODULE    Dopendir:
  401.     SYS_LW    GEMDOS,#$128,a0,d0
  402.     rts
  403.  
  404.     .ENDMOD
  405.  
  406. .MODULE    Dreaddir:
  407.     SYS_WLL    GEMDOS,#$129,d0,d1,a0
  408.     rts
  409.  
  410.     .ENDMOD
  411.     
  412. .MODULE Drewinddir:
  413.     SYS_L    GEMDOS,#$12a,d0
  414.     rts
  415.     
  416.     .ENDMOD
  417.  
  418. .MODULE    Dclosedir:
  419.     SYS_L    GEMDOS,#$12b,d0
  420.     rts
  421.  
  422.     .ENDMOD
  423.  
  424. .MODULE Fxattr:
  425.     SYS_WLL    GEMDOS,#$12c,d0,a0,a1
  426.     rts
  427.     
  428.     .ENDMOD
  429.  
  430. .MODULE Flink:
  431.     SYS_LL    GEMDOS,#$12d,a0,a1
  432.     rts
  433.     
  434.     .ENDMOD
  435.  
  436. .MODULE Fsymlink:
  437.     SYS_LL    GEMDOS,#$12e,a0,a1
  438.     rts
  439.     
  440.     .ENDMOD
  441.  
  442. .MODULE Freadlink:
  443.     SYS_WLL    GEMDOS,#$12f,d0,a0,a1
  444.     rts
  445.     
  446.     .ENDMOD
  447.  
  448. .MODULE    Dcntl:
  449.     SYS_WLL    GEMDOS,#$130,d0,a0,d1
  450.     rts
  451.  
  452.     .ENDMOD
  453.  
  454. .MODULE Fchown:
  455.     SYS_LWW    GEMDOS,#$131,a0,d0,d1
  456.     rts
  457.     
  458.     .ENDMOD
  459.  
  460. .MODULE Fchmod:
  461.     SYS_LW    GEMDOS,#$132,a0,d0
  462.     rts
  463.     
  464.     .ENDMOD
  465.  
  466. .MODULE Pumask:
  467.     SYS_W    GEMDOS,#$133,d0
  468.     rts
  469.     
  470.     .ENDMOD
  471.  
  472. .MODULE    Psemaphore:
  473.     SYS_WLL    GEMDOS,#$134,d0,d1,d2
  474.     rts
  475.  
  476.     .ENDMOD
  477.  
  478. .MODULE Dlock:
  479.     SYS_WW    GEMDOS,#$135,d0,d1
  480.     rts
  481.     
  482.     .ENDMOD
  483.  
  484. .MODULE Psigpause:
  485.     SYS_L    GEMDOS,#$136,d0
  486.     rts
  487.     
  488.     .ENDMOD
  489.  
  490. ; CAUTION: we assume the structure addresses are given as longs, NOT
  491. ; as pointers!
  492. .MODULE Psigaction:
  493.     SYS_WLL    GEMDOS,#$137,d0,d1,d2
  494. ;    SYS_WLL    GEMDOS,#$137,d0,a0,a1
  495.     rts
  496.     
  497.     .ENDMOD
  498.  
  499. .MODULE Pgeteuid:
  500.     SYS_    GEMDOS,#$138
  501.     rts
  502.     
  503.     .ENDMOD
  504.  
  505. .MODULE Pgetegid:
  506.     SYS_    GEMDOS,#$139
  507.     rts
  508.     
  509.     .ENDMOD
  510.  
  511. .MODULE Pwaitpid:
  512.     SYS_WWL    GEMDOS,#$13a,d0,d1,a0
  513.     rts
  514.  
  515.     .ENDMOD
  516.  
  517. *
  518. * XBIOS bindings
  519. *
  520.  
  521. * (none so far)
  522.  
  523.  
  524. *
  525. * BIOS bindings
  526. *
  527.  
  528. * (none so far)
  529.