MiniUnix/usr/source/fort/rt/r1.s
/
/
/ r1 -- fortran runtime
.globl gas1
.globl gas2
.globl gas4
.globl gas8
.globl stop
.globl lval
.globl rval4
.globl rval8
.globl do1
.globl do12
.globl do14
.globl do2
.globl do22
.globl do24
.globl goto
.globl cgoto
.globl cagoto
.globl agoto
.globl rerr
gas8:
mov 8.(sp),r0
mov (sp)+,(r0)+
mov (sp)+,(r0)+
br 1f
gas1:
movb (sp)+,*(sp)+
jmp *(r4)+
gas2:
mov (sp)+,*(sp)+
jmp *(r4)+
gas4:
mov 4(sp),r0
1:
mov (sp)+,(r0)+
mov (sp)+,(r0)
tst (sp)+
jmp *(r4)+
stop:
sys exit
lval:
mov (r4)+,-(sp)
jmp *(r4)+
rval8:
mov (r4)+,r0
add $8.,r0
mov -(r0),-(sp)
mov -(r0),-(sp)
mov -(r0),-(sp)
mov -(r0),-(sp)
jmp *(r4)+
rval4:
mov (r4)+,r0
mov 2(r0),-(sp)
mov (r0),-(sp)
jmp *(r4)+
do22:
mov (sp)+,r1
br 1f
do12:
mov $1,r1
1:
mov (sp)+,r2
mov (sp)+,r0
add r1,(r0)
cmp (r0),r2
bgt goto
tst (r4)+
jmp *(r4)+
do24:
do2:
mov (sp)+,r2
mov (sp)+,r1
br 1f
do14:
do1:
clr r2
mov $1,r1
1:
mov 4(sp),r0
add r1,2(r0)
adc r2
add r2,(r0)
cmp (r0)+,(sp)+
bgt 1f
blt 2f
cmp (r0),(sp)
bhi 1f
2:
cmp (sp)+,(sp)+
tst (r4)+
jmp *(r4)+
1:
cmp (sp)+,(sp)+
goto:
mov (r4),r4
jmp *(r4)+
cgoto:
tst (sp)+
mov (sp)+,r0
asl r0
add r4,r0
1:
tst (r4)+
beq gotoe
cmp r0,r4
bne 1b
mov -(r0),r4
jmp *(r4)+
cagoto:
tst (sp)+
mov (sp)+,r0
1:
tst (r4)
beq gotoe
cmp r0,(r4)+
bne 1b
mov r0,r4
jmp *(r4)+
agoto:
tst (sp)+
mov (sp)+,r4
jmp *(r4)+
gotoe:
jsr r5,rerr; 14.