home *** CD-ROM | disk | FTP | other *** search
/ Atari FTP / ATARI_FTP_0693.zip / ATARI_FTP_0693 / Mint / mntlib25.zoo / lattice / osbind.s < prev    next >
Text File  |  1992-06-15  |  10KB  |  559 lines

  1. ;
  2. ; new osbind.c definitions for the MiNT library. With these ones,we
  3. ; are now compatible with the rest of the atari world when using 16 bit
  4. ; integers,and the 32 bit code stuff should be portable,at least
  5. ; (albeit slower than the old osbind.c)
  6. ;
  7.     ifd    __MSHORT__
  8.     xdef    _gemdos
  9.     xdef    _xbios
  10.     xdef    _bios
  11.  
  12.     text
  13.     even
  14. _gemdos:
  15.     lea    20(sp),a0    ; 4 bytes for ret addr + 16 for parameters
  16.     movem.l    d2/a2,-(sp)    ; save reggies that TOS clobbers but that
  17.                 ; gcc thinks functions should preserve
  18.     move.l    -(a0),-(sp)    ; max. of 16 bytes parameters to trap #1
  19.     move.l    -(a0),-(sp)
  20.     move.l    -(a0),-(sp)
  21.     move.l    -(a0),-(sp)
  22.     trap    #1        ; go do the trap
  23.     add.l    #16,sp        ; pop parameters
  24.     movem.l    (sp)+,d2/a2    ; restore reggies
  25.     rts            ; return
  26.  
  27. _bios:
  28.     lea    24(sp),a0    ; 4 bytes ret. addr. + 20 bytes parameters
  29.     movem.l    d2/a2,-(sp)
  30.     move.l    -(a0),-(sp)    ; copy 20 bytes of trap #13 parameters
  31.     move.l    -(a0),-(sp)
  32.     move.l    -(a0),-(sp)
  33.     move.l    -(a0),-(sp)
  34.     move.l    -(a0),-(sp)
  35.     trap    #13        ; go do the trap
  36.     add.l    #20,sp
  37.     movem.l    (sp)+,d2/a2
  38.     rts
  39.  
  40. _xbios:
  41.     lea    32(sp),a0    ; 28 bytes of parameters
  42.     movem.l    d2/a2,-(sp)
  43.     move.l    -(a0),-(sp)    ; copy 28 bytes
  44.     move.l    -(a0),-(sp)
  45.     move.l    -(a0),-(sp)
  46.     move.l    -(a0),-(sp)
  47.     move.l    -(a0),-(sp)
  48.     move.l    -(a0),-(sp)
  49.     move.l    -(a0),-(sp)
  50.     trap    #14        ; go do the trap
  51.     add.l    #28,sp
  52.     movem.l    (sp)+,d2/a2
  53.     rts
  54.  
  55.     else    /* !__MSHORT__ */
  56.     text
  57.     even
  58.     xdef    _trap_1_w
  59. _trap_1_w:
  60.     movem.l    d2/a2,-(sp)
  61.     move.l    12(sp),d0
  62.     move.w    d0,-(sp)
  63.     trap    #1
  64.     addq.l    #2,sp
  65.     movem.l    (sp)+,d2/a2
  66.     rts
  67.  
  68.     xdef    _trap_1_ww
  69. _trap_1_ww:
  70.     movem.l    d2/a2,-(sp)
  71.     move.l    16(sp),d1
  72.     move.l    12(sp),d0
  73.     move.w    d1,-(sp)
  74.     move.w    d0,-(sp)
  75.     trap    #1
  76.     addq.l    #4,sp
  77.     movem.l    (sp)+,d2/a2
  78.     rts
  79.  
  80.     xdef    _trap_1_wl
  81. _trap_1_wl:
  82.     movem.l    d2/a2,-(sp)
  83.     move.l    16(sp),d1
  84.     move.l    12(sp),d0
  85.     move.l    d1,-(sp)
  86.     move.w    d0,-(sp)
  87.     trap    #1
  88.     addq.l    #6,sp
  89.     movem.l    (sp)+,d2/a2
  90.     rts
  91.  
  92.     xdef    _trap_1_wlw
  93. _trap_1_wlw:
  94.     movem.l    d2/a2,-(sp)
  95.     move.l    20(sp),a0
  96.     move.l    16(sp),d1
  97.     move.l    12(sp),d0
  98.     move.w    a0,-(sp)
  99.     move.l    d1,-(sp)
  100.     move.w    d0,-(sp)
  101.     trap    #1
  102.     add.l    #8,sp
  103.     movem.l    (sp)+,d2/a2
  104.     rts
  105.  
  106.     xdef    _trap_1_wwl
  107. _trap_1_wwl:
  108.     movem.l    d2/a2,-(sp)
  109.     move.l    20(sp),a0
  110.     move.l    16(sp),d1
  111.     move.l    12(sp),d0
  112.     move.l    a0,-(sp)
  113.     move.w    d1,-(sp)
  114.     move.w    d0,-(sp)
  115.     trap    #1
  116.     add.l    #8,sp
  117.     movem.l    (sp)+,d2/a2
  118.     rts
  119.  
  120.     xdef    _trap_1_www
  121. _trap_1_www:
  122.     movem.l    d2/a2,-(sp)
  123.     move.l    20(sp),a0
  124.     move.l    16(sp),d1
  125.     move.l    12(sp),d0
  126.     move.w    a0,-(sp)
  127.     move.w    d1,-(sp)
  128.     move.w    d0,-(sp)
  129.     trap    #1
  130.     addq.l    #6,sp
  131.     movem.l    (sp)+,d2/a2
  132.     rts
  133.  
  134.     xdef    _trap_1_wll
  135. _trap_1_wll:
  136.     movem.l    d2/a2,-(sp)
  137.     move.l    20(sp),a0
  138.     move.l    16(sp),d1
  139.     move.l    12(sp),d0
  140.     move.l    a0,-(sp)
  141.     move.l    d1,-(sp)
  142.     move.w    d0,-(sp)
  143.     trap    #1
  144.     add.l    #10,sp
  145.     movem.l    (sp)+,d2/a2
  146.     rts
  147.  
  148.     xdef    _trap_1_wwll
  149. _trap_1_wwll:
  150.     movem.l    d2/a2,-(sp)
  151.     move.l    24(sp),a1
  152.     move.l    20(sp),a0
  153.     move.l    16(sp),d1
  154.     move.l    12(sp),d0
  155.     move.l    a1,-(sp)
  156.     move.l    a0,-(sp)
  157.     move.w    d1,-(sp)
  158.     move.w    d0,-(sp)
  159.     trap    #1
  160.     add.l    #12,sp
  161.     movem.l    (sp)+,d2/a2
  162.     rts
  163.  
  164.     xdef    _trap_1_wlww
  165. _trap_1_wlww:
  166.     movem.l    d2/a2,-(sp)
  167.     move.l    24(sp),a1
  168.     move.l    20(sp),a0
  169.     move.l    16(sp),d1
  170.     move.l    12(sp),d0
  171.     move.w    a1,-(sp)
  172.     move.w    a0,-(sp)
  173.     move.l    d1,-(sp)
  174.     move.w    d0,-(sp)
  175.     trap    #1
  176.     add.l    #10,sp
  177.     movem.l    (sp)+,d2/a2
  178.     rts
  179.  
  180.     xdef    _trap_1_wwlw
  181. _trap_1_wwlw:
  182.     movem.l    d2/a2,-(sp)
  183.     move.l    24(sp),a1
  184.     move.l    20(sp),a0
  185.     move.l    16(sp),d1
  186.     move.l    12(sp),d0
  187.     move.w    a1,-(sp)
  188.     move.l    a0,-(sp)
  189.     move.w    d1,-(sp)
  190.     move.w    d0,-(sp)
  191.     trap    #1
  192.     add.l    #10,sp
  193.     movem.l    (sp)+,d2/a2
  194.     rts
  195.  
  196.     xdef    _trap_1_wwlll
  197. _trap_1_wwlll:
  198.     movem.l    d2/a2,-(sp)
  199.     move.l    28(sp),a1
  200.     move.l    24(sp),a0
  201.     move.l    20(sp),d1
  202.     move.l    a1,-(sp)
  203.     move.l    a0,-(sp)
  204.     move.l    d1,-(sp)
  205.     move.l    16+12(sp),d1
  206.     move.l    12+12(sp),d0
  207.     move.w    d1,-(sp)
  208.     move.w    d0,-(sp)
  209.     trap    #1
  210.     add.l    #16,sp
  211.     movem.l    (sp)+,d2/a2
  212.     rts
  213.  
  214.     xdef    _trap_13_w
  215. _trap_13_w:
  216.     movem.l    d2/a2,-(sp)
  217.     move.l    12(sp),d0
  218.     move.w    d0,-(sp)
  219.     trap    #13
  220.     addq.l    #2,sp
  221.     movem.l    (sp)+,d2/a2
  222.     rts
  223.  
  224.     xdef    _trap_13_ww
  225. _trap_13_ww:
  226.     movem.l    d2/a2,-(sp)
  227.     move.l    16(sp),d1
  228.     move.l    12(sp),d0
  229.     move.w    d1,-(sp)
  230.     move.w    d0,-(sp)
  231.     trap    #13
  232.     addq.l    #4,sp
  233.     movem.l    (sp)+,d2/a2
  234.     rts
  235.  
  236.     xdef    _trap_13_wl
  237. _trap_13_wl:
  238.     movem.l    d2/a2,-(sp)
  239.     move.l    16(sp),d1
  240.     move.l    12(sp),d0
  241.     move.l    d1,-(sp)
  242.     move.w    d0,-(sp)
  243.     trap    #13
  244.     addq.l    #6,sp
  245.     movem.l    (sp)+,d2/a2
  246.     rts
  247.  
  248.     xdef    _trap_13_www
  249. _trap_13_www:
  250.     movem.l    d2/a2,-(sp)
  251.     move.l    20(sp),a0
  252.     move.l    16(sp),d1
  253.     move.l    12(sp),d0
  254.     move.w    a0,-(sp)
  255.     move.w    d1,-(sp)
  256.     move.w    d0,-(sp)
  257.     trap    #13
  258.     addq.l    #6,sp
  259.     movem.l    (sp)+,d2/a2
  260.     rts
  261.  
  262.     xdef    _trap_13_wwl
  263. _trap_13_wwl:
  264.     movem.l    d2/a2,-(sp)
  265.     move.l    20(sp),a0
  266.     move.l    16(sp),d1
  267.     move.l    12(sp),d0
  268.     move.l    a0,-(sp)
  269.     move.w    d1,-(sp)
  270.     move.w    d0,-(sp)
  271.     trap    #13
  272.     add.l    #8,sp
  273.     movem.l    (sp)+,d2/a2
  274.     rts
  275.  
  276.     xdef    _trap_13_wwlwww
  277. _trap_13_wwlwww:
  278.     movem.l    d2/a2,-(sp)
  279.     move.l    32(sp),a0
  280.     move.l    28(sp),d1
  281.     move.l    24(sp),d0
  282.     move.w    a0,-(sp)
  283.     move.w    d1,-(sp)
  284.     move.w    d0,-(sp)
  285.     move.l    20+6(sp),a0
  286.     move.l    16+6(sp),d1
  287.     move.l    12+6(sp),d0
  288.     move.l    a0,-(sp)
  289.     move.w    d1,-(sp)
  290.     move.w    d0,-(sp)
  291.     trap    #13
  292.     add.l    #14,sp
  293.     movem.l    (sp)+,d2/a2
  294.     rts
  295.  
  296.     xdef    _trap_14_w
  297. _trap_14_w:
  298.     movem.l    d2/a2,-(sp)
  299.     move.l    12(sp),d0
  300.     move.w    d0,-(sp)
  301.     trap    #14
  302.     addq.l    #2,sp
  303.     movem.l    (sp)+,d2/a2
  304.     rts
  305.  
  306.     xdef    _trap_14_ww
  307. _trap_14_ww:
  308.     movem.l    d2/a2,-(sp)
  309.     move.l    16(sp),d1
  310.     move.l    12(sp),d0
  311.     move.w    d1,-(sp)
  312.     move.w    d0,-(sp)
  313.     trap    #14
  314.     addq.l    #4,sp
  315.     movem.l    (sp)+,d2/a2
  316.     rts
  317.  
  318.     xdef    _trap_14_wl
  319. _trap_14_wl:
  320.     movem.l    d2/a2,-(sp)
  321.     move.l    16(sp),d1
  322.     move.l    12(sp),d0
  323.     move.l    d1,-(sp)
  324.     move.w    d0,-(sp)
  325.     trap    #14
  326.     addq.l    #6,sp
  327.     movem.l    (sp)+,d2/a2
  328.     rts
  329.  
  330.     xdef    _trap_14_www
  331. _trap_14_www:
  332.     movem.l    d2/a2,-(sp)
  333.     move.l    20(sp),a0
  334.     move.l    16(sp),d1
  335.     move.l    12(sp),d0
  336.     move.w    a0,-(sp)
  337.     move.w    d1,-(sp)
  338.     move.w    d0,-(sp)
  339.     trap    #14
  340.     addq.l    #6,sp
  341.     movem.l    (sp)+,d2/a2
  342.     rts
  343.  
  344.     xdef    _trap_14_wwl
  345. _trap_14_wwl:
  346.     movem.l    d2/a2,-(sp)
  347.     move.l    20(sp),a0
  348.     move.l    16(sp),d1
  349.     move.l    12(sp),d0
  350.     move.l    a0,-(sp)
  351.     move.w    d1,-(sp)
  352.     move.w    d0,-(sp)
  353.     trap    #14
  354.     add.l    #8,sp
  355.     movem.l    (sp)+,d2/a2
  356.     rts
  357.  
  358.     xdef    _trap_14_wwll
  359. _trap_14_wwll:
  360.     movem.l    d2/a2,-(sp)
  361.     move.l    24(sp),a1
  362.     move.l    20(sp),a0
  363.     move.l    16(sp),d1
  364.     move.l    12(sp),d0
  365.     move.l    a1,-(sp)
  366.     move.l    a0,-(sp)
  367.     move.w    d1,-(sp)
  368.     move.w    d0,-(sp)
  369.     trap    #14
  370.     add.l    #12,sp
  371.     movem.l    (sp)+,d2/a2
  372.     rts
  373.  
  374.     xdef    _trap_14_wllw
  375. _trap_14_wllw:
  376.     movem.l    d2/a2,-(sp)
  377.     move.l    24(sp),a1
  378.     move.l    20(sp),a0
  379.     move.l    16(sp),d1
  380.     move.l    12(sp),d0
  381.     move.w    a1,-(sp)
  382.     move.l    a0,-(sp)
  383.     move.l    d1,-(sp)
  384.     move.w    d0,-(sp)
  385.     trap    #14
  386.     add.l    #12,sp
  387.     movem.l    (sp)+,d2/a2
  388.     rts
  389.  
  390.     xdef    _trap_14_wlll
  391. _trap_14_wlll:
  392.     movem.l    d2/a2,-(sp)
  393.     move.l    24(sp),a1
  394.     move.l    20(sp),a0
  395.     move.l    16(sp),d1
  396.     move.l    12(sp),d0
  397.     move.l    a1,-(sp)
  398.     move.l    a0,-(sp)
  399.     move.l    d1,-(sp)
  400.     move.w    d0,-(sp)
  401.     trap    #14
  402.     add.l    #14,sp
  403.     movem.l    (sp)+,d2/a2
  404.     rts
  405.  
  406.     xdef    _trap_14_wwwl
  407. _trap_14_wwwl:
  408.     movem.l    d2/a2,-(sp)
  409.     move.l    24(sp),a1
  410.     move.l    20(sp),a0
  411.     move.l    16(sp),d1
  412.     move.l    12(sp),d0
  413.     move.l    a1,-(sp)
  414.     move.w    a0,-(sp)
  415.     move.w    d1,-(sp)
  416.     move.w    d0,-(sp)
  417.     trap    #14
  418.     add.l    #10,sp
  419.     movem.l    (sp)+,d2/a2
  420.     rts
  421.  
  422.     xdef    _trap_14_wwwwl
  423. _trap_14_wwwwl:
  424.     movem.l    d2/a2,-(sp)
  425.     move.l    28(sp),d0
  426.     move.l    d0,-(sp)
  427.     move.l    24+4(sp),a1
  428.     move.l    20+4(sp),a0
  429.     move.l    16+4(sp),d1
  430.     move.l    12+4(sp),d0
  431.     move.w    a1,-(sp)
  432.     move.w    a0,-(sp)
  433.     move.w    d1,-(sp)
  434.     move.w    d0,-(sp)
  435.     trap    #14
  436.     add.l    #12,sp
  437.     movem.l    (sp)+,d2/a2
  438.     rts
  439.     
  440.     xdef    _trap_14_wllww
  441. _trap_14_wllww:
  442.     movem.l    d2/a2,-(sp)
  443.     move.l    28(sp),d1
  444.     move.l    24(sp),d0
  445.     move.w    d1,-(sp)
  446.     move.w    d0,-(sp)
  447.     move.l    20+4(sp),a0
  448.     move.l    16+4(sp),d1
  449.     move.l    12+4(sp),d0
  450.     move.l    a0,-(sp)
  451.     move.l    d1,-(sp)
  452.     move.w    d0,-(sp)
  453.     trap    #14
  454.     add.l    #14,sp
  455.     movem.l    (sp)+,d2/a2
  456.     rts
  457.  
  458.     xdef    _trap_14_wwwwwww
  459. _trap_14_wwwwwww:
  460.     movem.l    d2/a2,-(sp)
  461.     move.l    36(sp),a1
  462.     move.l    32(sp),a0
  463.     move.l    28(sp),d1
  464.     move.l    24(sp),d0
  465.     move.w    a1,-(sp)
  466.     move.w    a0,-(sp)
  467.     move.w    d1,-(sp)
  468.     move.w    d0,-(sp)
  469.     move.l    20+8(sp),a0
  470.     move.l    16+8(sp),d1
  471.     move.l    12+8(sp),d0
  472.     move.w    a0,-(sp)
  473.     move.w    d1,-(sp)
  474.     move.w    d0,-(sp)
  475.     trap    #14
  476.     add.l    #14,sp
  477.     movem.l    (sp)+,d2/a2
  478.     rts
  479.  
  480.     xdef    _trap_14_wllwwwww
  481. _trap_14_wllwwwww:
  482.     movem.l    d2/a2,-(sp)
  483.     move.l    40(sp),a1
  484.     move.l    36(sp),a0
  485.     move.l    32(sp),d1
  486.     move.l    28(sp),d0
  487.     move.w    a1,-(sp)
  488.     move.w    a0,-(sp)
  489.     move.w    d1,-(sp)
  490.     move.w    d0,-(sp)
  491.     move.l    24+8(sp),a1
  492.     move.l    20+8(sp),a0
  493.     move.l    16+8(sp),d1
  494.     move.l    12+8(sp),d0
  495.     move.w    a1,-(sp)
  496.     move.l    a0,-(sp)
  497.     move.l    d1,-(sp)
  498.     move.w    d0,-(sp)
  499.     trap    #14
  500.     add.l    #20,sp
  501.     movem.l    (sp)+,d2/a2
  502.     rts
  503.  
  504.     xdef    _trap_14_wllwwwwlw
  505. _trap_14_wllwwwwlw:
  506.     movem.l    d2/a2,-(sp)
  507.     move.l    44(sp),a1
  508.     move.l    40(sp),a0
  509.     move.l    36(sp),d1
  510.     move.l    32(sp),d0
  511.     move.w    a1,-(sp)
  512.     move.l    a0,-(sp)
  513.     move.w    d1,-(sp)
  514.     move.w    d0,-(sp)
  515.     move.l    28+10(sp),a1
  516.     move.l    24+10(sp),a0
  517.     move.l    20+10(sp),d1
  518.     move.l    16+10(sp),d0
  519.     move.l    12+10(sp),d2
  520.     move.w    a1,-(sp)
  521.     move.w    a0,-(sp)
  522.     move.l    d1,-(sp)
  523.     move.l    d0,-(sp)
  524.     move.w    d2,-(sp)
  525.     trap    #14
  526.     add.l    #24,sp
  527.     movem.l    (sp)+,d2/a2
  528.     rts
  529.  
  530.     xdef    _trap_14_wllwwwwwlw
  531. _trap_14_wllwwwwwlw:
  532.     movem.l    d2/a2,-(sp)
  533.     move.l    48(sp),a1
  534.     move.l    44(sp),a0
  535.     move.l    40(sp),d1
  536.     move.l    36(sp),d0
  537.     move.w    a1,-(sp)
  538.     move.l    a0,-(sp)
  539.     move.w    d1,-(sp)
  540.     move.w    d0,-(sp)
  541.     move.l    32+10(sp),a1
  542.     move.l    28+10(sp),a0
  543.     move.l    24+10(sp),d1
  544.     move.l    20+10(sp),d0
  545.     move.l    8+10(sp),d2
  546.     move.l    4+10(sp),a2
  547.     move.w    a1,-(sp)
  548.     move.w    a0,-(sp)
  549.     move.w    d1,-(sp)
  550.     move.l    d0,-(sp)
  551.     move.l    d2,-(sp)
  552.     move.w    a2,-(sp)
  553.     trap    #14
  554.     add.l    #26,sp
  555.     movem.l    (sp)+,d2/a2
  556.     rts
  557.     endc
  558.     end
  559.