home *** CD-ROM | disk | FTP | other *** search
- /
- /
-
- / r7 -- fortran runtime
-
- achk = 1 / 1 to check array bounds
- .globl lvalp
- .globl rval1p
- .globl rval2p
- .globl rval4p
- .globl rval8p
- .globl alval
- .globl alvalp
- .globl arval
- .globl arvalp
-
- .globl rerr
-
- lvalp:
- mov r3,r0
- add (r4)+,r0
- mov (r0)+,-(sp)
- jmp *(r4)+
-
- rval1p:
- mov r3,r0
- add (r4)+,r0
- movb *(r0)+,-(sp)
- jmp *(r4)+
-
- rval2p:
- mov r3,r0
- add (r4)+,r0
- mov *(r0)+,-(sp)
- jmp *(r4)+
-
- rval4p:
- mov r3,r0
- add (r4)+,r0
- mov (r0),r0
- cmp (r0)+,(r0)+
- mov -(r0),-(sp)
- mov -(r0),-(sp)
- jmp *(r4)+
-
- rval8p:
- setd
- mov r3,r0
- add (r4)+,r0
- movf *(r0)+,fr0
- movf fr0,-(sp)
- jmp *(r4)+
-
- alval:
- jsr r5,getsub; 1
- mov (r4)+,-(sp)
- add r1,(sp)
- jmp *(r4)+
-
- arvalp:
- jsr r5,getsub; 0
- mov r3,r2
- add (r4)+,r2
- mov (r2),r2
- br 1f
-
- arval:
- jsr r5,getsub; 1
- mov (r4)+,r2
- 1:
- add r2,r1
- mov -(r0),r2
- asr r2
- bcc 1f
- movb (r1),-(sp)
- jmp *(r4)+
- 1:
- add (r0),r1
- 1:
- mov -(r1),-(sp)
- sob r2,1b
- jmp *(r4)+
-
- getsub:
- tst (sp)+
- mov (r4)+,r0
- mov (r0)+,r2
- clr r1
- tst (r0)+
- 1:
- tst (sp)+
- dec (sp)
- add (sp)+,r1
- mpy (r0)+,r1
- sob r2,1b
-
- tst (r5)+
- beq 2f
- mov r1,-(sp)
- mov -2(r4),r0
- mov (r0)+,r2
- inc r2
- mov $1,r1
- 1:
- mpy (r0)+,r1
- sob r2,1b
- .if achk
- cmp r1,(sp)
- bhi 1f
- jsr r5,rerr; 15.
- .endif
- 1:
- mov (sp)+,r1
-
- 2:
- jmp (r5)
-
- alvalp:
- jsr r5,getsub; 0
- mov r3,r0
- add (r4)+,r0
- mov (r0),-(sp)
- add r1,(sp)
- jmp *(r4)+
-