|
|
1.1 root 1: / C library -- reset, setexit
2:
3: / reset(x)
4: / will generate a "return" from
5: / the last call to
6: / setexit()
7: / by restoring sp, r5
8: / and doing a return.
9: / The returned value is x; on the original
10: / call the returned value is 0.
11: /
12: / useful for going back to the main loop
13: / after a horrible error in a lowlevel
14: / routine.
15:
16: .globl _setexit
17: .globl _reset
18: .globl csv, cret
19:
20: _setexit:
21: mov r5,sr5
22: mov (sp),spc
23: mov sp,ssp
24: clr r0
25: rts pc
26:
27: _reset:
28: jsr r5,csv
29: mov 4(r5),r0
30: 1:
31: cmp (r5),sr5
32: beq 1f
33: mov (r5),r5
34: bne 1b
35: / panic -- r2-r4 lost
36: mov ssp,sp
37: mov sr5,r5
38: mov spc,(sp)
39: rts pc
40: 1:
41: mov spc,2(r5)
42: jmp cret
43:
44: .bss
45: sr5: .=.+2
46: spc: .=.+2
47: ssp: .=.+2
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.