|
|
1.1 ! root 1: .text ! 2: .globl _main ! 3: .align 2 ! 4: _main:link a6,#-36 ! 5: moveml #0x400,a6@(-28) ! 6: clrl a6@(-24) ! 7: clrl _next:l ! 8: jra L3 ! 9: L2: ! 10: lea a6@(-20),a2 ! 11: movl a2,sp@ ! 12: lea a6@(-24),a2 ! 13: movl a2,sp@(4) ! 14: jbsr _lookup:l ! 15: movl d0,a2 ! 16: addql #1,a2@ ! 17: L3: ! 18: lea a6@(-20),a2 ! 19: movl a2,sp@ ! 20: jbsr _getword:l ! 21: tstl d0; jne L2 ! 22: movl a6@(-24),sp@ ! 23: jbsr _tprint:l ! 24: clrl d0 ! 25: L1: ! 26: moveml a6@(-28),#0x400 ! 27: unlk a6 ! 28: rts ! 29: .globl _err ! 30: .align 2 ! 31: _err:link a6,#-8 ! 32: movl #L6,sp@ ! 33: movl a6@(8),sp@(4) ! 34: jbsr _printf:l ! 35: movl #1,sp@ ! 36: jbsr _exit:l ! 37: L5: ! 38: unlk a6 ! 39: rts ! 40: .globl _getword ! 41: .align 2 ! 42: _getword:link a6,#-20 ! 43: moveml #0x2490,a6@(-16) ! 44: L8: ! 45: L9: ! 46: jbsr _getchar:l ! 47: movl d0,d7 ! 48: cmpl #-1,d0; jeq L11 ! 49: movl d7,sp@ ! 50: jbsr _isletter:l ! 51: tstl d0; jeq L8 ! 52: L11: ! 53: movl a6@(8),a5 ! 54: jra L15 ! 55: L12: ! 56: movl a5,a2 ! 57: lea a2@(1),a5 ! 58: movb d7,a2@ ! 59: L13: ! 60: jbsr _getchar:l ! 61: movl d0,d7 ! 62: L15: ! 63: movl d7,sp@ ! 64: jbsr _isletter:l ! 65: movl d0,d7 ! 66: tstl d0; jne L12 ! 67: clrb a5@ ! 68: movl a5,d4 ! 69: cmpl a6@(8),d4; jls L16 ! 70: movl #1,d0 ! 71: jra L7 ! 72: L16: ! 73: clrl d0 ! 74: L7: ! 75: moveml a6@(-16),#0x2490 ! 76: unlk a6 ! 77: rts ! 78: .globl _isletter ! 79: .align 2 ! 80: _isletter:link a6,#-0 ! 81: movl a6@(8),d1 ! 82: cmpl #65,d1; jlt L19 ! 83: cmpl #90,d1; jgt L19 ! 84: addl #32,d1 ! 85: L19: ! 86: cmpl #97,d1; jlt L21 ! 87: cmpl #122,d1; jgt L21 ! 88: movl d1,d0 ! 89: jra L18 ! 90: L21: ! 91: clrl d0 ! 92: L18: ! 93: unlk a6 ! 94: rts ! 95: .globl _lookup ! 96: .align 2 ! 97: _lookup:link a6,#-28 ! 98: moveml #0x2418,a6@(-20) ! 99: movl a6@(12),a5 ! 100: tstl a5@; jeq L24 ! 101: movl a6@(8),sp@ ! 102: movl a5@,a2 ! 103: movl a2@(12),sp@(4) ! 104: jbsr _strcmp:l ! 105: movl d0,a6@(-4) ! 106: tstl a6@(-4); jge L26 ! 107: movl a6@(8),sp@ ! 108: movl a5@,a2 ! 109: lea a2@(4),a2 ! 110: movl a2,sp@(4) ! 111: jbsr _lookup:l ! 112: movl d0,d0 ! 113: jra L23 ! 114: L26: ! 115: tstl a6@(-4); jle L28 ! 116: movl a6@(8),sp@ ! 117: movl a5@,a2 ! 118: lea a2@(8),a2 ! 119: movl a2,sp@(4) ! 120: jbsr _lookup:l ! 121: movl d0,d0 ! 122: jra L23 ! 123: L28: ! 124: movl a5@,d0 ! 125: jra L23 ! 126: L24: ! 127: cmpl #2000,_next:l; jlt L30 ! 128: movl #L32,sp@ ! 129: jbsr _err:l ! 130: L30: ! 131: movl _next:l,d4 ! 132: asll #4,d4 ! 133: clrl @(_words:l,d4:l:1) ! 134: movl _next:l,d4 ! 135: asll #4,d4 ! 136: clrl @(_words+8:l,d4:l:1) ! 137: clrl @(_words+4:l,d4:l:1) ! 138: movl a6@(8),sp@ ! 139: jbsr _strlen:l ! 140: movl d0,d4; addql #1,d4 ! 141: movl d4,sp@ ! 142: jbsr _malloc:l ! 143: movl _next:l,d4 ! 144: asll #4,d4 ! 145: movl d0,@(_words+12:l,d4:l:1) ! 146: movl _next:l,d4 ! 147: asll #4,d4 ! 148: tstl @(_words+12:l,d4:l:1); jne L36 ! 149: movl #L39,sp@ ! 150: jbsr _err:l ! 151: L36: ! 152: movl _next:l,d4 ! 153: asll #4,d4 ! 154: movl @(_words+12:l,d4:l:1),sp@ ! 155: movl a6@(8),sp@(4) ! 156: jbsr _strcpy:l ! 157: movl _next:l,d4 ! 158: movl d4,d3; addql #1,d3 ! 159: movl d3,_next:l ! 160: asll #4,d4 ! 161: lea @(_words:l,d4:l:1),a2 ! 162: movl a2,a5@ ! 163: movl a2,d0 ! 164: L23: ! 165: moveml a6@(-20),#0x2418 ! 166: unlk a6 ! 167: rts ! 168: .globl _tprint ! 169: .align 2 ! 170: _tprint:link a6,#-16 ! 171: moveml #0x2000,a6@(-4) ! 172: movl a6@(8),a5 ! 173: cmpl #0,a5; jeq L42 ! 174: movl a5@(4),sp@ ! 175: jbsr _tprint:l ! 176: movl #L44,sp@ ! 177: movl a5@,sp@(4) ! 178: movl a5@(12),sp@(8) ! 179: jbsr _printf:l ! 180: movl a5@(8),sp@ ! 181: jbsr _tprint:l ! 182: L42: ! 183: L41: ! 184: moveml a6@(-4),#0x2000 ! 185: unlk a6 ! 186: rts ! 187: .globl _strcmp ! 188: .align 2 ! 189: _strcmp:link a6,#-12 ! 190: moveml #0x418,a6@(-12) ! 191: movl a6@(8),a0 ! 192: movl a6@(12),a1 ! 193: jra L47 ! 194: L46: ! 195: movl a0,a2 ! 196: lea a2@(1),a0 ! 197: tstb a2@; jne L49 ! 198: clrl d0 ! 199: jra L45 ! 200: L49: ! 201: addql #1,a1 ! 202: L47: ! 203: movb a0@,d4 ! 204: cmpb a1@,d4; jeq L46 ! 205: tstb a0@; jne L51 ! 206: movl #-1,d0 ! 207: jra L45 ! 208: L51: ! 209: tstb a1@; jne L53 ! 210: movl #1,d0 ! 211: jra L45 ! 212: L53: ! 213: movb a0@,d4 ! 214: extbl d4 ! 215: movb a1@,d3 ! 216: extbl d3 ! 217: movl d4,d0; subl d3,d0 ! 218: L45: ! 219: moveml a6@(-12),#0x418 ! 220: unlk a6 ! 221: rts ! 222: .bss ! 223: .globl _next ! 224: .comm _next,4 ! 225: .globl _words ! 226: .comm _words,32000 ! 227: .text ! 228: .align 2; L44:.ascii "%d\011%s\012\000" ! 229: .align 2; L39:.ascii "out of word storage\000" ! 230: .align 2; L32:.ascii "out of node storage\000" ! 231: .align 2; L6:.ascii "? %s\012\000"
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.