MiniUnix/usr/source/fort/rt/rh.s
/
/
/ rh -- simple array l/r values
achk = 1 / 1 to check array bounds
.globl gal1
.globl gal2
.globl gal4
.globl gal8
.globl gal16
.globl gar1
.globl gar2
.globl gar4
.globl gar8
.globl gar16
.globl rerr
gal1:
tst (sp)+
dec (sp)
br 1f
gal2:
tst (sp)+
dec (sp)
asl (sp)
br 1f
gal4:
tst (sp)+
dec (sp)
asl (sp)
asl (sp)
br 1f
gal8:
tst (sp)+
dec (sp)
asl (sp)
asl (sp)
asl (sp)
br 1f
gal16:
tst (sp)+
dec (sp)
asl (sp)
asl (sp)
asl (sp)
asl (sp)
1:
cmp (sp),(r4)+
.if achk
bhis 9f
.endif
add (r4)+,(sp)
jmp *(r4)+
9:
jsr r5,rerr; 15.
4
gar1:
tst (sp)+
dec (sp)
cmp (sp),(r4)+
.if achk
bhis 9b
.endif
add (r4)+,(sp)
movb *(sp)+,r0
mov r0,-(sp)
jmp *(r4)+
gar2:
tst (sp)+
dec (sp)
asl (sp)
cmp (sp),(r4)+
.if achk
bhis 9b
.endif
add (r4)+,(sp)
mov *(sp)+,-(sp)
jmp *(r4)+
gar4:
tst (sp)+
dec (sp)
mov (sp)+,r0
asl r0
asl r0
cmp r0,(r4)+
.if achk
bhis 9b
.endif
add (r4)+,r0
cmp (r0)+,(r0)+
mov -(r0),-(sp)
mov -(r0),-(sp)
jmp *(r4)+
gar8:
setd
tst (sp)+
dec (sp)
asl (sp)
asl (sp)
asl (sp)
cmp (sp),(r4)+
.if achk
bhis 9b
.endif
add (r4)+,(sp)
movf *(sp)+,fr0
movf fr0,-(sp)
jmp *(r4)+
gar16:
setd
tst (sp)+
dec (sp)
mov (sp)+,r0
asl r0
asl r0
asl r0
asl r0
cmp r0,(r4)+
.if achk
bhis 9b
.endif
add (r4)+,r0
movf (r0)+,fr0
movf (r0)+,fr1
movf fr1,-(sp)
movf fr0,-(sp)
jmp *(r4)+