|
|
1.1 root 1: # C runtime startoff
2:
3: .set exit,1
4: .globl _exit
5: .globl start
6: .globl _main
7: .globl _environ
8: .globl _xports
9: .globl _gstart
10: .globl _proflush
11:
12:
13: #
14: # C language startup routine
15:
16: #
17: # special 512 byte area for nil (and possibly other atoms)
18: # and special block of smallnums.
19: #
20: .long 0
21: .long 0
22: .long 0
23: .long -4
24: .long 20
25: .byte 'n,'i,'l,0
26: .long 0
27: .long 0
28: .long -4
29: .long 40
30: .byte 'e,'o,'f,0
31: .space 512-44
32: .long -128,-127,-126,-125,-124,-123,-122,-121
33: .long -120,-119,-118,-117,-116,-115,-114,-113
34: .long -112,-111,-110,-109,-108,-107,-106,-105
35: .long -104,-103,-102,-101,-100,-99,-98,-97
36: .long -96,-95,-94,-93,-92,-91,-90,-89
37: .long -88,-87,-86,-85,-84,-83,-82,-81
38: .long -80,-79,-78,-77,-76,-75,-74,-73
39: .long -72,-71,-70,-69,-68,-67,-66,-65
40: .long -64,-63,-62,-61,-60,-59,-58,-57
41: .long -56,-55,-54,-53,-52,-51,-50,-49
42: .long -48,-47,-46,-45,-44,-43,-42,-41
43: .long -40,-39,-38,-37,-36,-35,-34,-33
44: .long -32,-31,-30,-29,-28,-27,-26,-25
45: .long -24,-23,-22,-21,-20,-19,-18,-17
46: .long -16,-15,-14,-13,-12,-11,-10,-9
47: .long -8,-7,-6,-5,-4,-3,-2,-1
48: .long 0,1,2,3,4,5,6,7
49: .long 8,9,10,11,12,13,14,15
50: .long 16,17,18,19,20,21,22,23
51: .long 24,25,26,27,28,29,30,31
52: .long 32,33,34,35,36,37,38,39
53: .long 40,41,42,43,44,45,46,47
54: .long 48,49,50,51,52,53,54,55
55: .long 56,57,58,59,60,61,62,63
56: .long 64,65,66,67,68,69,70,71
57: .long 72,73,74,75,76,77,78,79
58: .long 80,81,82,83,84,85,86,87
59: .long 88,89,90,91,92,93,94,95
60: .long 96,97,98,99,100,101,102,103
61: .long 104,105,106,107,108,109,110,111
62: .long 112,113,114,115,116,117,118,119
63: .long 120,121,122,123,124,125,126,127
64: _xports:
65: .long __iob+0
66: .long __iob+16
67: .long __iob+32
68: .long __iob+48
69: .long __iob+64
70: .long __iob+80
71: .long __iob+96
72: .long __iob+112
73: .long __iob+128
74: .long __iob+144
75: .long __iob+160
76: .long __iob+176
77: .long __iob+192
78: .long __iob+208
79: .long __iob+224
80: .long __iob+240
81: .long __iob+256
82: .long __iob+272
83: .long __iob+288
84: .long __iob+304
85: .space 512 - (20 * 4)
86:
87: start:
88: .word 0x0000
89: subl2 $8,sp
90: movl 8(sp),(sp) # argc
91: movab 12(sp),r0
92: movl r0,4(sp) # argv
93: L1:
94: tstl (r0)+ # null args term ?
95: bneq L1
96: cmpl r0,*4(sp) # end of 'env' or 'argv' ?
97: blss L2
98: tstl -(r0) # envp's are in list
99: L2:
100: movl r0,8(sp) # env
101: movl r0,_environ # indir is 0 if no env ; not 0 if env
102: calls $3,_main
103: pushl r0
104: calls $1,_exit
105: chmk $exit
106: _gstart:
107: .word 0
108: moval start,r0
109: ret
110: _proflush:
111: .word 0
112: ret
113: #
114: .data
115: _environ: .space 4
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.