|
|
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.