|
|
1.1 root 1: # C runtime startoff including monitoring
2:
3: .set exit,1
4: .set cbufs,300
5:
6: .globl start
7: .globl _monitor
8: .globl _sbrk
9: .globl _main
10: .globl _exit
11: .globl _IEH3exit
12: .globl _etext
13: .globl _environ
14: .globl __cleanup
15: .comm countbase,4
16:
17:
18: start:
19: .word 0x0000
20: subl2 $8,sp
21: movl 8(sp),(sp) # argc
22: movab 12(sp),r0
23: movl r0,4(sp) # argv
24: L1:
25: tstl (r0)+ # null args term ?
26: bneq L1
27: cmpl r0,*4(sp) # end of 'env' or 'argv' ?
28: blss L2
29: tstl -(r0) # envp's are in list
30: L2:
31: movl r0,8(sp) # env
32: movl r0,_environ # indir is 0 if no env ; not 0 if env
33:
34: subl3 $eprol,$_etext,r1
35: addl2 $7,r1
36: extzv $3,$16,r1,r1
37: addl2 r1,r1 # tally size
38: addl2 $8*cbufs+12,r1 # entrance count plus header
39: pushl $cbufs # # entrance counters
40: pushl r1 # bufsiz
41: pushl r1 # for sbrk
42: calls $1,_sbrk
43: cmpl r0,$-1
44: beql nospace
45: # bandaid for sbrk not clearing memory (remove bandaid when fixed)
46: # addl3 (sp),(sp),r1
47: #L100:
48: # clrb -1(r0)[r1]
49: # sobgtr r1,L100
50: # end bandaid
51: pushl r0
52: addl3 $12,r0,countbase
53: pushab _etext
54: pushab eprol
55: calls $5,_monitor
56: calls $3,_main
57: pushl r0
58: calls $1,_exit
59:
60: .data
61: _environ: .space 4
62: emsg:
63: .byte 'N,'o,' ,'s,'p,'a,'c,'e,' ,'f,'o,'r,'
64: .byte 'm,'o,'n,'i,'t,'o,'r,' ,'b,'u,'f,'f,'e,'r,0xa,0x0
65: em1:
66: .text
67:
68: nospace:
69: pushl $em1-emsg
70: pushab emsg
71: pushl $2
72: calls $3,_write
73:
74: _exit:
75: _IEH3exit:
76: .word 0x0000
77: calls $0,__cleanup
78: pushl $0
79: calls $1,_monitor
80: chmk $exit
81: eprol:
82:
83:
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.