1: / 2: / 3: 4: / a7 -- pdp-11 assembler pass 1 5: 6: expres: 7: mov r5,-(sp) 8: mov $'+,-(sp) 9: clr opfound 10: clr r2 11: mov $1,r3 12: br 1f 13: advanc: 14: jsr pc,readop 15: 1: 16: mov r4,r0 17: jsr r5,betwen; 0; 177 18: br .+4 19: br 7f 20: movb (r4),r0 21: mov 2(r4),r1 22: br oprand 23: 7: 24: cmp r4,$141 25: blo 1f 26: cmp r4,$141+10. 27: bhis 2f 28: movb curfbr-141(r4),r0 29: asl r4 30: mov curfb-[2*141](r4),r2 31: cmp r2,$-1 32: bne oprand 33: jsr r5,error; 'f 34: br oprand 35: 2: 36: clr r3 37: clr r2 38: br oprand 39: 1: 40: mov $esw1,r1 41: 1: 42: cmp (r1)+,r4 43: beq 1f 44: tst (r1)+ 45: bne 1b 46: tst opfound 47: bne 2f 48: jsr pc,errore 49: 2: 50: tst (sp)+ 51: mov (sp)+,r5 52: rts pc 53: 1: 54: jmp *(r1) 55: 56: esw1: 57: '+; binop 58: '-; binop 59: '*; binop 60: '/; binop 61: '&; binop 62: 037; binop 63: 035; binop 64: 036; binop 65: '%; binop 66: '[; brack 67: '^; binop 68: 1; exnum 69: '!; binop 70: 0; 0 71: 72: binop: 73: cmpb (sp),$'+ 74: beq 1f 75: jsr pc,errore 76: 1: 77: movb r4,(sp) 78: br advanc 79: 80: exnum: 81: mov numval,r1 82: mov $1,r0 83: br oprand 84: 85: brack: 86: mov r2,-(sp) 87: mov r3,-(sp) 88: jsr pc,readop 89: jsr pc,expres 90: cmp r4,$'] 91: beq 1f 92: jsr r5,error; '] 93: 1: 94: mov r3,r0 95: mov r2,r1 96: mov (sp)+,r3 97: mov (sp)+,r2 98: 99: oprand: 100: inc opfound 101: mov $exsw2,r5 102: 1: 103: cmp (sp),(r5)+ 104: beq 1f 105: tst (r5)+ 106: bne 1b 107: br eoprnd 108: 1: 109: jmp *(r5) 110: 111: exsw2: 112: '+; exadd 113: '-; exsub 114: '*; exmul 115: '/; exdiv 116: 037; exor 117: '&; exand 118: 035;exlsh 119: 036;exrsh 120: '%; exmod 121: '!; exnot 122: '^; excmbin 123: 0; 0 124: 125: excmbin: 126: mov r0,r3 / give left flag of right 127: br eoprnd 128: 129: exrsh: 130: neg r1 131: beq exlsh 132: inc r1 133: clc 134: ror r2 135: exlsh: 136: jsr r5,combin; 0 137: als r1,r2 138: br eoprnd 139: 140: exmod: 141: jsr r5,combin; 0 142: mov r1,-(sp) 143: mov r2,r1 144: clr r0 145: dvd (sp)+,r0 146: mov r1,r2 147: br eoprnd 148: 149: exadd: 150: jsr r5,combin; 0 151: add r1,r2 152: br eoprnd 153: 154: exsub: 155: jsr r5,combin; 1 156: sub r1,r2 157: br eoprnd 158: 159: exand: 160: jsr r5,combin; 0 161: com r1 162: bic r1,r2 163: br eoprnd 164: 165: exor: 166: jsr r5,combin; 0 167: bis r1,r2 168: br eoprnd 169: 170: exmul: 171: jsr r5,combin; 0 172: mpy r2,r1 173: mov r1,r2 174: br eoprnd 175: 176: exdiv: 177: jsr r5,combin; 0 178: mov r1,-(sp) 179: mov r2,r1 180: clr r0 181: dvd (sp)+,r0 182: mov r0,r2 183: br eoprnd 184: 185: exnot: 186: jsr r5,combin; 0 187: com r1 188: add r1,r2 189: br eoprnd 190: 191: eoprnd: 192: mov $'+,(sp) 193: jmp advanc 194: 195: combin: 196: mov r0,-(sp) 197: bis r3,(sp) 198: bic $!40,(sp) 199: bic $!37,r0 200: bic $!37,r3 201: cmp r0,r3 202: ble 1f 203: mov r0,-(sp) 204: mov r3,r0 205: mov (sp)+,r3 206: 1: 207: tst r0 208: beq 1f 209: tst (r5)+ 210: beq 2f 211: cmp r0,r3 212: bne 2f 213: mov $1,r3 214: br 2f 215: 1: 216: tst (r5)+ 217: clr r3 218: 2: 219: bis (sp)+,r3 220: rts r5