MiniUnix/usr/source/fort/rt1/ierr.s
/
/
/ catch runtime errors:
/ if (ierror(errno)) goto place
/ on call, returns 0
/ on occurrence of error, returns non-zero
.globl ierror.
.globl erret
.globl rerr
.globl retrn
ierror.:zero
.+2
mov 2(r3),r0
mov 2(r0),r1
mov $errbuf,r0
1:
cmp r0,cerrp
blo 2f
cmp cerrp,$eerbuf
blo 3f
jsr r5,rerr; 120.
3:
add $8,cerrp
br 1f
2:
cmp r1,(r0)
beq 1f
add $8,r0
br 1b
1:
mov r1,(r0)+
mov r3,(r0)+
mov 2(sp),(r0)+
mov 4(sp),(r0)+
jmp retrn
.data
erret:
jmp 9f
.text
9:
mov $errbuf,r0
cmp (r0),r1
beq 1f
add $8,r0
cmp r0,cerrp
blo 1b
rts pc
1:
add $8,r0
mov -(r0),-(sp)
mov -(r0),-(sp)
mov $one,-(sp)
mov -(r0),r3
jmp retrn
.data
one: 77777; 177777
zero: 0; 0
cerrp: errbuf
.bss
errbuf: .=.+50
eerbuf: