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