home *** CD-ROM | disk | FTP | other *** search
/ minnie.tuhs.org / unixen.tar / unixen / PDP-11 / Trees / V6 / usr / source / fort / sum.s < prev   
Encoding:
Text File  |  1975-07-17  |  1.2 KB  |  45 lines

  1. /    example of UNIX fortran
  2. /    calling interface to machine code
  3. /    this example is a function that
  4. /    returns the single precision 
  5. /    sum of all of its single precision arguments.
  6. /    for example:
  7. /        f = sum(1.,2.,3.)
  8. /    sets f to 6.
  9.  
  10. .globl    sum.                / defination of entry
  11. .globl    retrn                / reference of return
  12.  
  13. sum.:                    / entry point
  14.     value                / location of return value
  15.     .+2                / pointer to execution code
  16.     setf                / no d/f i/l modes guaranteed
  17.     mov    *2(sp),r0        / arg count
  18.     mov    r3,r1            / r3 points to arg list
  19.     tst    (r1)+            / zeroth arg is old r3
  20.  
  21.     clrf    fr0            / start of actual function
  22. 1:
  23.     addf    *(r1)+,fr0        / add in each argument
  24.     sob    r0,1b            / for each argument
  25.  
  26.     movf    fr0,value        / make returned value available
  27.     jmp    retrn            / actual return
  28.  
  29. .bss
  30. value:    .=.+4                / space for return value
  31.  
  32. / synopsis:
  33. /    1. save registers r3, sp
  34. /    2. arg list (pointers to values)
  35. /       begins at 2(r3)
  36. /    3. entry name is name of function
  37. /       followed by "."
  38. /    4. first word after entry point is
  39. /       location of return value. this is
  40. /       true for both functions and subroutines
  41. /    5. second word after entry point is
  42. /       pointer to pdp-11 code body
  43. /    6. return is expedited by a jump to
  44. /       the globl routine "retrn"
  45.