home *** CD-ROM | disk | FTP | other *** search
- / 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"
-