home *** CD-ROM | disk | FTP | other *** search
- / C library -- nargs
-
- / WARNING: this routine does not work
- / with user I&D space separate.
- / Moreover, due to a design botch in
- / the 11/45, it cannot be made to work
- / by adding mfpi instructions.
-
- .globl _nargs
-
- _nargs:
- mov r5,-(sp)
- mov 2(r5),r1 / pc of caller of caller
- mov sp,r5
- clr r0
- cmp -4(r1),jsrsd
- bne 8f
- mov $2,r0
- 8:
- cmp (r1),tsti
- bne 1f
- add $2,r0
- br 2f
- 1:
- cmp (r1),cmpi
- bne 1f
- add $4,r0
- br 2f
- 1:
- cmp (r1),addi
- bne 1f
- add 2(r1),r0
- br 2f
- 1:
- cmp (r1),jmpi
- bne 1f
- add 2(r1),r1
- add $4,r1
- br 8b
- 1:
- cmpb 1(r1),bri+1
- bne 2f
- mov r0,-(sp)
- mov (r1),r0
- swab r0
- ash $-7,r0
- add r0,r1
- add $2,r1
- mov (sp)+,r0
- br 8b
- 2:
- asr r0
- mov (sp)+,r5
- rts pc
-
- .data
- jsrsd: jsr pc,*$0
- tsti: tst (sp)+
- cmpi: cmp (sp)+,(sp)+
- addi: add $0,sp
- jmpi: jmp 0
- bri: br .
-