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