home *** CD-ROM | disk | FTP | other *** search
/ Club Amiga de Montreal - CAM / CAM_CD_1.iso / files / 364b.lha / PCQ_v1.1 / Runtime / PCQ / math.asm < prev    next >
Encoding:
Assembly Source File  |  1990-04-08  |  1.9 KB  |  122 lines

  1.  
  2. *    Math.asm (of PCQ Pascal runtime library)
  3. *    Copyright (c) 1989 Patrick Quaid
  4.  
  5. *    This file has the stubs that implement floating point math.  This
  6. *    is yet another group of routines for which you don't need to open
  7. *    your own library.  The only trick here is that if the divisor in
  8. *    SPDiv is zero, you'll get a run-time error.  If you look at
  9. *    the code for this you may get confused.  It works because it turns
  10. *    out that floating point zero and integer zero have the same
  11. *    representation.
  12.  
  13.     XREF    _p%MathBase
  14.     XREF    _p%ExitWithAddr
  15.  
  16.     SECTION    MATH
  17.  
  18.     XDEF    _SPFix
  19. _SPFix
  20.     move.l    4(sp),d0
  21.     move.l    _p%MathBase,a6
  22.     jsr    _LVOSPFix(a6)
  23.     rts
  24.  
  25.     XDEF    _SPFloat
  26. _SPFloat
  27.     move.l    4(sp),d0
  28.     move.l    _p%MathBase,a6
  29.     jsr    _LVOSPFlt(a6)
  30.     rts
  31.  
  32.     XDEF    _SPCmp
  33. _SPCmp
  34.     move.l    8(sp),d0
  35.     move.l    4(sp),d1
  36.     move.l    _p%MathBase,a6
  37.     jsr    _LVOSPCmp(a6)
  38.     rts
  39.  
  40.     XDEF    _SPTst
  41. _SPTst
  42.     move.l    4(sp),d1
  43.     move.l    _p%MathBase,a6
  44.     jsr    _LVOSPTst(a6)
  45.     rts
  46.  
  47.     XDEF    _SPAbs
  48. _SPAbs
  49.     move.l    4(sp),d0
  50.     move.l    _p%MathBase,a6
  51.     jsr    _LVOSPAbs(a6)
  52.     rts
  53.  
  54.     XDEF    _SPNeg
  55. _SPNeg
  56.     move.l    4(sp),d0
  57.     move.l    _p%MathBase,a6
  58.     jsr    _LVOSPNeg(a6)
  59.     rts
  60.  
  61.     XDEF    _SPAdd
  62. _SPAdd
  63.     move.l    8(sp),d0
  64.     move.l    4(sp),d1
  65.     move.l    _p%MathBase,a6
  66.     jsr    _LVOSPAdd(a6)
  67.     rts
  68.  
  69.      XDEF    _SPSub
  70. _SPSub
  71.     move.l    8(sp),d0
  72.     move.l    4(sp),d1
  73.     move.l    _p%MathBase,a6
  74.     jsr    _LVOSPSub(a6)
  75.     rts
  76.  
  77.     XDEF    _SPMul
  78. _SPMul
  79.     move.l    8(sp),d0
  80.     move.l    4(sp),d1
  81.     move.l    _p%MathBase,a6
  82.     jsr    _LVOSPMul(a6)
  83.     rts
  84.  
  85.     XDEF    _SPDiv
  86. _SPDiv
  87.     move.l    8(sp),d0
  88.     move.l    4(sp),d1
  89.     bne.s    1$
  90.     move.l    #51,d0
  91.     jsr    _p%ExitWithAddr
  92. 1$    move.l    _p%MathBase,a6
  93.     jsr    _LVOSPDiv(a6)
  94.     rts
  95.  
  96.     XDEF    _SPFloor
  97. _SPFloor
  98.     move.l    4(sp),d0
  99.     move.l    _p%MathBase,a6
  100.     jmp    _LVOSPFloor(a6)
  101.  
  102.     XDEF    _SPCeil
  103. _SPCeil
  104.     move.l    4(sp),d0
  105.     move.l    _p%MathBase,a6
  106.     jmp    _LVOSPCeil(a6)
  107.  
  108.     XREF    _LVOSPFix
  109.     XREF    _LVOSPFlt
  110.     XREF    _LVOSPCmp
  111.     XREF    _LVOSPTst
  112.     XREF    _LVOSPAbs
  113.     XREF    _LVOSPNeg
  114.     XREF    _LVOSPAdd
  115.     XREF    _LVOSPSub
  116.     XREF    _LVOSPMul
  117.     XREF    _LVOSPDiv
  118.     XREF    _LVOSPFloor
  119.     XREF    _LVOSPCeil
  120.  
  121.     END
  122.