|
|
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 r6 - r12, ap, fp ! 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 _getexit ! 18: .globl _reset ! 19: .globl _resexit ! 20: .globl _setsav ! 21: .globl _svkludg ! 22: ! 23: _setexit: ! 24: .word 0x0000 ! 25: movab _setsav,r0 ! 26: movq r6,(r0)+ ! 27: movq r8,(r0)+ ! 28: movq r10,(r0)+ ! 29: movq 8(fp),(r0)+ # ap, fp ! 30: movab 4(ap),(r0)+ # sp ! 31: movl 16(fp),(r0) # pc ! 32: clrl r0 ! 33: ret ! 34: ! 35: _reset: ! 36: .word 0x0000 ! 37: movl 4(ap),r0 # returned value ! 38: movab _setsav,r1 ! 39: movq (r1)+,r6 ! 40: movq (r1)+,r8 ! 41: movq (r1)+,r10 ! 42: movq (r1)+,r12 ! 43: movl (r1)+,sp ! 44: jmp *(r1) ! 45: ! 46: _resexit: ! 47: .word 0x0000 ! 48: movc3 $40,*4(ap),_setsav ! 49: ret ! 50: _svkludg: ! 51: movl (sp)+,out ! 52: movq r0,myregs ! 53: movq r2,myregs+8 ! 54: movq r4,myregs+16 ! 55: subl2 $40,sp ! 56: movc3 $40,_setsav,(sp) ! 57: movq myregs,r0 ! 58: movq myregs+8,r2 ! 59: movq myregs+16,r4 ! 60: jmp *out ! 61: ! 62: _getexit: ! 63: .word 0x0000 ! 64: movc3 $40,_setsav,*4(ap) ! 65: ret ! 66: ! 67: ! 68: .data ! 69: _setsav:.space 10*4 ! 70: out: .space 4 ! 71: myregs: .space 6*4 ! 72:
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.