|
|
1.1 root 1: # C runtime startoff
2: # sccs id @(#)hcrt0.s 34.1 10/3/80
3:
4: .set exit,1
5: .globl _exit
6: .globl start
7: .globl hstart
8: .globl _main
9: .globl _environ
10: .globl _xports
11: .globl _gstart
12: .globl _proflush
13: .globl _holbeg
14: .globl _holend
15: .globl Fixzero
16:
17: #
18: # C language startup routine
19:
20: #
21: # special 512 byte area for nil (and possibly other atoms)
22: # and special block of smallnums.
23: #
24: .long 0
25: .long 0
26: .long 0
27: .long -4
28: .long 20
29: .byte 'n,'i,'l,0
30: .long 0
31: .long 0
32: .long -4
33: .long 40
34: .byte 'e,'o,'f,0
35: .space 512-44
36: _xports:
37: .long __iob+0
38: .long __iob+16
39: .long __iob+32
40: .long __iob+48
41: .long __iob+64
42: .long __iob+80
43: .long __iob+96
44: .long __iob+112
45: .long __iob+128
46: .long __iob+144
47: .long __iob+160
48: .long __iob+176
49: .long __iob+192
50: .long __iob+208
51: .long __iob+224
52: .long __iob+240
53: .long __iob+256
54: .long __iob+272
55: .long __iob+288
56: .long __iob+304
57: .space 512 - (20 * 4)
58: .globl Negint
59: Negint:
60: .long -1024,-1023,-1022,-1021,-1020,-1019,-1018,-1017
61: .long -1016,-1015,-1014,-1013,-1012,-1011,-1010,-1009
62: .long -1008,-1007,-1006,-1005,-1004,-1003,-1002,-1001
63: .long -1000,-999,-998,-997,-996,-995,-994,-993
64: .long -992,-991,-990,-989,-988,-987,-986,-985
65: .long -984,-983,-982,-981,-980,-979,-978,-977
66: .long -976,-975,-974,-973,-972,-971,-970,-969
67: .long -968,-967,-966,-965,-964,-963,-962,-961
68: .long -960,-959,-958,-957,-956,-955,-954,-953
69: .long -952,-951,-950,-949,-948,-947,-946,-945
70: .long -944,-943,-942,-941,-940,-939,-938,-937
71: .long -936,-935,-934,-933,-932,-931,-930,-929
72: .long -928,-927,-926,-925,-924,-923,-922,-921
73: .long -920,-919,-918,-917,-916,-915,-914,-913
74: .long -912,-911,-910,-909,-908,-907,-906,-905
75: .long -904,-903,-902,-901,-900,-899,-898,-897
76: .long -896,-895,-894,-893,-892,-891,-890,-889
77: .long -888,-887,-886,-885,-884,-883,-882,-881
78: .long -880,-879,-878,-877,-876,-875,-874,-873
79: .long -872,-871,-870,-869,-868,-867,-866,-865
80: .long -864,-863,-862,-861,-860,-859,-858,-857
81: .long -856,-855,-854,-853,-852,-851,-850,-849
82: .long -848,-847,-846,-845,-844,-843,-842,-841
83: .long -840,-839,-838,-837,-836,-835,-834,-833
84: .long -832,-831,-830,-829,-828,-827,-826,-825
85: .long -824,-823,-822,-821,-820,-819,-818,-817
86: .long -816,-815,-814,-813,-812,-811,-810,-809
87: .long -808,-807,-806,-805,-804,-803,-802,-801
88: .long -800,-799,-798,-797,-796,-795,-794,-793
89: .long -792,-791,-790,-789,-788,-787,-786,-785
90: .long -784,-783,-782,-781,-780,-779,-778,-777
91: .long -776,-775,-774,-773,-772,-771,-770,-769
92: .long -768,-767,-766,-765,-764,-763,-762,-761
93: .long -760,-759,-758,-757,-756,-755,-754,-753
94: .long -752,-751,-750,-749,-748,-747,-746,-745
95: .long -744,-743,-742,-741,-740,-739,-738,-737
96: .long -736,-735,-734,-733,-732,-731,-730,-729
97: .long -728,-727,-726,-725,-724,-723,-722,-721
98: .long -720,-719,-718,-717,-716,-715,-714,-713
99: .long -712,-711,-710,-709,-708,-707,-706,-705
100: .long -704,-703,-702,-701,-700,-699,-698,-697
101: .long -696,-695,-694,-693,-692,-691,-690,-689
102: .long -688,-687,-686,-685,-684,-683,-682,-681
103: .long -680,-679,-678,-677,-676,-675,-674,-673
104: .long -672,-671,-670,-669,-668,-667,-666,-665
105: .long -664,-663,-662,-661,-660,-659,-658,-657
106: .long -656,-655,-654,-653,-652,-651,-650,-649
107: .long -648,-647,-646,-645,-644,-643,-642,-641
108: .long -640,-639,-638,-637,-636,-635,-634,-633
109: .long -632,-631,-630,-629,-628,-627,-626,-625
110: .long -624,-623,-622,-621,-620,-619,-618,-617
111: .long -616,-615,-614,-613,-612,-611,-610,-609
112: .long -608,-607,-606,-605,-604,-603,-602,-601
113: .long -600,-599,-598,-597,-596,-595,-594,-593
114: .long -592,-591,-590,-589,-588,-587,-586,-585
115: .long -584,-583,-582,-581,-580,-579,-578,-577
116: .long -576,-575,-574,-573,-572,-571,-570,-569
117: .long -568,-567,-566,-565,-564,-563,-562,-561
118: .long -560,-559,-558,-557,-556,-555,-554,-553
119: .long -552,-551,-550,-549,-548,-547,-546,-545
120: .long -544,-543,-542,-541,-540,-539,-538,-537
121: .long -536,-535,-534,-533,-532,-531,-530,-529
122: .long -528,-527,-526,-525,-524,-523,-522,-521
123: .long -520,-519,-518,-517,-516,-515,-514,-513
124: .long -512,-511,-510,-509,-508,-507,-506,-505
125: .long -504,-503,-502,-501,-500,-499,-498,-497
126: .long -496,-495,-494,-493,-492,-491,-490,-489
127: .long -488,-487,-486,-485,-484,-483,-482,-481
128: .long -480,-479,-478,-477,-476,-475,-474,-473
129: .long -472,-471,-470,-469,-468,-467,-466,-465
130: .long -464,-463,-462,-461,-460,-459,-458,-457
131: .long -456,-455,-454,-453,-452,-451,-450,-449
132: .long -448,-447,-446,-445,-444,-443,-442,-441
133: .long -440,-439,-438,-437,-436,-435,-434,-433
134: .long -432,-431,-430,-429,-428,-427,-426,-425
135: .long -424,-423,-422,-421,-420,-419,-418,-417
136: .long -416,-415,-414,-413,-412,-411,-410,-409
137: .long -408,-407,-406,-405,-404,-403,-402,-401
138: .long -400,-399,-398,-397,-396,-395,-394,-393
139: .long -392,-391,-390,-389,-388,-387,-386,-385
140: .long -384,-383,-382,-381,-380,-379,-378,-377
141: .long -376,-375,-374,-373,-372,-371,-370,-369
142: .long -368,-367,-366,-365,-364,-363,-362,-361
143: .long -360,-359,-358,-357,-356,-355,-354,-353
144: .long -352,-351,-350,-349,-348,-347,-346,-345
145: .long -344,-343,-342,-341,-340,-339,-338,-337
146: .long -336,-335,-334,-333,-332,-331,-330,-329
147: .long -328,-327,-326,-325,-324,-323,-322,-321
148: .long -320,-319,-318,-317,-316,-315,-314,-313
149: .long -312,-311,-310,-309,-308,-307,-306,-305
150: .long -304,-303,-302,-301,-300,-299,-298,-297
151: .long -296,-295,-294,-293,-292,-291,-290,-289
152: .long -288,-287,-286,-285,-284,-283,-282,-281
153: .long -280,-279,-278,-277,-276,-275,-274,-273
154: .long -272,-271,-270,-269,-268,-267,-266,-265
155: .long -264,-263,-262,-261,-260,-259,-258,-257
156: .long -256,-255,-254,-253,-252,-251,-250,-249
157: .long -248,-247,-246,-245,-244,-243,-242,-241
158: .long -240,-239,-238,-237,-236,-235,-234,-233
159: .long -232,-231,-230,-229,-228,-227,-226,-225
160: .long -224,-223,-222,-221,-220,-219,-218,-217
161: .long -216,-215,-214,-213,-212,-211,-210,-209
162: .long -208,-207,-206,-205,-204,-203,-202,-201
163: .long -200,-199,-198,-197,-196,-195,-194,-193
164: .long -192,-191,-190,-189,-188,-187,-186,-185
165: .long -184,-183,-182,-181,-180,-179,-178,-177
166: .long -176,-175,-174,-173,-172,-171,-170,-169
167: .long -168,-167,-166,-165,-164,-163,-162,-161
168: .long -160,-159,-158,-157,-156,-155,-154,-153
169: .long -152,-151,-150,-149,-148,-147,-146,-145
170: .long -144,-143,-142,-141,-140,-139,-138,-137
171: .long -136,-135,-134,-133,-132,-131,-130,-129
172: .long -128,-127,-126,-125,-124,-123,-122,-121
173: .long -120,-119,-118,-117,-116,-115,-114,-113
174: .long -112,-111,-110,-109,-108,-107,-106,-105
175: .long -104,-103,-102,-101,-100,-99,-98,-97
176: .long -96,-95,-94,-93,-92,-91,-90,-89
177: .long -88,-87,-86,-85,-84,-83,-82,-81
178: .long -80,-79,-78,-77,-76,-75,-74,-73
179: .long -72,-71,-70,-69,-68,-67,-66,-65
180: .long -64,-63,-62,-61,-60,-59,-58,-57
181: .long -56,-55,-54,-53,-52,-51,-50,-49
182: .long -48,-47,-46,-45,-44,-43,-42,-41
183: .long -40,-39,-38,-37,-36,-35,-34,-33
184: .long -32,-31,-30,-29,-28,-27,-26,-25
185: .long -24,-23,-22,-21,-20,-19,-18,-17
186: .long -16,-15,-14,-13,-12,-11,-10,-9
187: .long -8,-7,-6,-5,-4,-3,-2,-1
188: Fixzero:
189: .long 0,1,2,3,4,5,6,7
190: .long 8,9,10,11,12,13,14,15
191: .long 16,17,18,19,20,21,22,23
192: .long 24,25,26,27,28,29,30,31
193: .long 32,33,34,35,36,37,38,39
194: .long 40,41,42,43,44,45,46,47
195: .long 48,49,50,51,52,53,54,55
196: .long 56,57,58,59,60,61,62,63
197: .long 64,65,66,67,68,69,70,71
198: .long 72,73,74,75,76,77,78,79
199: .long 80,81,82,83,84,85,86,87
200: .long 88,89,90,91,92,93,94,95
201: .long 96,97,98,99,100,101,102,103
202: .long 104,105,106,107,108,109,110,111
203: .long 112,113,114,115,116,117,118,119
204: .long 120,121,122,123,124,125,126,127
205: .long 128,129,130,131,132,133,134,135
206: .long 136,137,138,139,140,141,142,143
207: .long 144,145,146,147,148,149,150,151
208: .long 152,153,154,155,156,157,158,159
209: .long 160,161,162,163,164,165,166,167
210: .long 168,169,170,171,172,173,174,175
211: .long 176,177,178,179,180,181,182,183
212: .long 184,185,186,187,188,189,190,191
213: .long 192,193,194,195,196,197,198,199
214: .long 200,201,202,203,204,205,206,207
215: .long 208,209,210,211,212,213,214,215
216: .long 216,217,218,219,220,221,222,223
217: .long 224,225,226,227,228,229,230,231
218: .long 232,233,234,235,236,237,238,239
219: .long 240,241,242,243,244,245,246,247
220: .long 248,249,250,251,252,253,254,255
221: .long 256,257,258,259,260,261,262,263
222: .long 264,265,266,267,268,269,270,271
223: .long 272,273,274,275,276,277,278,279
224: .long 280,281,282,283,284,285,286,287
225: .long 288,289,290,291,292,293,294,295
226: .long 296,297,298,299,300,301,302,303
227: .long 304,305,306,307,308,309,310,311
228: .long 312,313,314,315,316,317,318,319
229: .long 320,321,322,323,324,325,326,327
230: .long 328,329,330,331,332,333,334,335
231: .long 336,337,338,339,340,341,342,343
232: .long 344,345,346,347,348,349,350,351
233: .long 352,353,354,355,356,357,358,359
234: .long 360,361,362,363,364,365,366,367
235: .long 368,369,370,371,372,373,374,375
236: .long 376,377,378,379,380,381,382,383
237: .long 384,385,386,387,388,389,390,391
238: .long 392,393,394,395,396,397,398,399
239: .long 400,401,402,403,404,405,406,407
240: .long 408,409,410,411,412,413,414,415
241: .long 416,417,418,419,420,421,422,423
242: .long 424,425,426,427,428,429,430,431
243: .long 432,433,434,435,436,437,438,439
244: .long 440,441,442,443,444,445,446,447
245: .long 448,449,450,451,452,453,454,455
246: .long 456,457,458,459,460,461,462,463
247: .long 464,465,466,467,468,469,470,471
248: .long 472,473,474,475,476,477,478,479
249: .long 480,481,482,483,484,485,486,487
250: .long 488,489,490,491,492,493,494,495
251: .long 496,497,498,499,500,501,502,503
252: .long 504,505,506,507,508,509,510,511
253: .long 512,513,514,515,516,517,518,519
254: .long 520,521,522,523,524,525,526,527
255: .long 528,529,530,531,532,533,534,535
256: .long 536,537,538,539,540,541,542,543
257: .long 544,545,546,547,548,549,550,551
258: .long 552,553,554,555,556,557,558,559
259: .long 560,561,562,563,564,565,566,567
260: .long 568,569,570,571,572,573,574,575
261: .long 576,577,578,579,580,581,582,583
262: .long 584,585,586,587,588,589,590,591
263: .long 592,593,594,595,596,597,598,599
264: .long 600,601,602,603,604,605,606,607
265: .long 608,609,610,611,612,613,614,615
266: .long 616,617,618,619,620,621,622,623
267: .long 624,625,626,627,628,629,630,631
268: .long 632,633,634,635,636,637,638,639
269: .long 640,641,642,643,644,645,646,647
270: .long 648,649,650,651,652,653,654,655
271: .long 656,657,658,659,660,661,662,663
272: .long 664,665,666,667,668,669,670,671
273: .long 672,673,674,675,676,677,678,679
274: .long 680,681,682,683,684,685,686,687
275: .long 688,689,690,691,692,693,694,695
276: .long 696,697,698,699,700,701,702,703
277: .long 704,705,706,707,708,709,710,711
278: .long 712,713,714,715,716,717,718,719
279: .long 720,721,722,723,724,725,726,727
280: .long 728,729,730,731,732,733,734,735
281: .long 736,737,738,739,740,741,742,743
282: .long 744,745,746,747,748,749,750,751
283: .long 752,753,754,755,756,757,758,759
284: .long 760,761,762,763,764,765,766,767
285: .long 768,769,770,771,772,773,774,775
286: .long 776,777,778,779,780,781,782,783
287: .long 784,785,786,787,788,789,790,791
288: .long 792,793,794,795,796,797,798,799
289: .long 800,801,802,803,804,805,806,807
290: .long 808,809,810,811,812,813,814,815
291: .long 816,817,818,819,820,821,822,823
292: .long 824,825,826,827,828,829,830,831
293: .long 832,833,834,835,836,837,838,839
294: .long 840,841,842,843,844,845,846,847
295: .long 848,849,850,851,852,853,854,855
296: .long 856,857,858,859,860,861,862,863
297: .long 864,865,866,867,868,869,870,871
298: .long 872,873,874,875,876,877,878,879
299: .long 880,881,882,883,884,885,886,887
300: .long 888,889,890,891,892,893,894,895
301: .long 896,897,898,899,900,901,902,903
302: .long 904,905,906,907,908,909,910,911
303: .long 912,913,914,915,916,917,918,919
304: .long 920,921,922,923,924,925,926,927
305: .long 928,929,930,931,932,933,934,935
306: .long 936,937,938,939,940,941,942,943
307: .long 944,945,946,947,948,949,950,951
308: .long 952,953,954,955,956,957,958,959
309: .long 960,961,962,963,964,965,966,967
310: .long 968,969,970,971,972,973,974,975
311: .long 976,977,978,979,980,981,982,983
312: .long 984,985,986,987,988,989,990,991
313: .long 992,993,994,995,996,997,998,999
314: .long 1000,1001,1002,1003,1004,1005,1006,1007
315: .long 1008,1009,1010,1011,1012,1013,1014,1015
316: .long 1016,1017,1018,1019,1020,1021,1022,1023
317:
318: start:
319: .word 0x0000
320: subl2 $8,sp
321: movl 8(sp),(sp) # argc
322: movab 12(sp),r0
323: movl r0,4(sp) # argv
324: L1:
325: tstl (r0)+ # null args term ?
326: bneq L1
327: cmpl r0,*4(sp) # end of 'env' or 'argv' ?
328: blss L2
329: tstl -(r0) # envp's are in list
330: L2:
331: movl r0,8(sp) # env
332: movl r0,_environ # indir is 0 if no env ; not 0 if env
333: calls $3,_main
334: pushl r0
335: calls $1,_exit
336: chmk $exit
337: hstart: # This routine is exactly the same as
338: # start except there is a call to _rlc
339: # before the call to _main. One could
340: # arrange a switch by putting different
341: # addresses in a register and jumping
342: # indirect through the register but
343: # it seems worth the cost of 80 bytes
344: # for the gain in clarity by having the
345: # routines EXACTLY the same except for
346: # that one difference.
347: .word 0x0000
348: subl2 $8,sp
349: calls $0,_rlc
350: movl 8(sp),(sp) # argc
351: movab 12(sp),r0
352: movl r0,4(sp) # argv
353: L3:
354: tstl (r0)+ # null args term ?
355: bneq L3
356: cmpl r0,*4(sp) # end of 'env' or 'argv' ?
357: blss L4
358: tstl -(r0) # envp's are in list
359: L4:
360: movl r0,8(sp) # env
361: movl r0,_environ # indir is 0 if no env ; not 0 if env
362: calls $0,_rlc
363: calls $3,_main
364: pushl r0
365: calls $1,_exit
366: chmk $exit
367: _gstart:
368: .word 0
369: moval start,r0
370: ret
371: _proflush:
372: .word 0
373: ret
374: #
375: .data
376: _holbeg:
377: _holend:
378: _environ: .space 4
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.