+/ example of UNIX fortran
+/ calling interface to machine code
+/ this example is a function that
+/ returns the single precision
+/ sum of all of its single precision arguments.
+/ for example:
+/ f = sum(1.,2.,3.)
+/ sets f to 6.
+
+.globl sum. / defination of entry
+.globl retrn / reference of return
+
+sum.: / entry point
+ value / location of return value
+ .+2 / pointer to execution code
+ setf / no d/f i/l modes guaranteed
+ mov *2(sp),r0 / arg count
+ mov r3,r1 / r3 points to arg list
+ tst (r1)+ / zeroth arg is old r3
+
+ clrf fr0 / start of actual function
+1:
+ addf *(r1)+,fr0 / add in each argument
+ sob r0,1b / for each argument
+
+ movf fr0,value / make returned value available
+ jmp retrn / actual return
+
+.bss
+value: .=.+4 / space for return value
+
+/ synopsis:
+/ 1. save registers r3, sp
+/ 2. arg list (pointers to values)
+/ begins at 2(r3)
+/ 3. entry name is name of function
+/ followed by "."
+/ 4. first word after entry point is
+/ location of return value. this is
+/ true for both functions and subroutines
+/ 5. second word after entry point is
+/ pointer to pdp-11 code body
+/ 6. return is expedited by a jump to
+/ the globl routine "retrn"