1: / 2: / 3: 4: / a7 -- pdp-11 assembler 5: 6: expres: 7: clr xsymbol 8: expres1: 9: mov r5,-(sp) 10: mov $'+,-(sp) 11: clr r2 12: mov $1,r3 13: br 1f 14: advanc: 15: jsr pc,readop 16: 1: 17: mov r4,r0 18: jsr r5,betwen; 0; 177 19: br .+4 20: br 7f 21: movb (r4),r0 22: tst r0 23: bne 1f 24: tstb passno 25: beq 1f 26: jsr r5,error; 'u 27: 1: 28: cmp r0,$40 29: bne 1f 30: mov r4,xsymbol 31: clr r1 32: br oprand 33: 1: 34: mov 2(r4),r1 35: br oprand 36: 7: 37: cmp r4,$141 38: blo 1f 39: asl r4 40: mov curfb-[2*141](r4),r0 41: mov 2(r0),r1 42: movb (r0),r0 43: br oprand 44: 1: 45: mov $esw1,r1 46: 1: 47: cmp (r1)+,r4 48: beq 1f 49: tst (r1)+ 50: bne 1b 51: tst (sp)+ 52: mov (sp)+,r5 53: rts pc 54: 1: 55: jmp *(r1) 56: 57: esw1: 58: '+; binop 59: '-; binop 60: '*; binop 61: '/; binop 62: '&; binop 63: 037; binop 64: 035; binop 65: 036; binop 66: '%; binop 67: '[; brack 68: '^; binop 69: 1; exnum 70: 2; exnum1 71: '!; binop 72: 200; 0 73: 74: binop: 75: cmpb (sp),$'+ 76: beq 1f 77: jsr pc,errore 78: 1: 79: movb r4,(sp) 80: br advanc 81: 82: exnum1: 83: mov numval,r1 84: br 1f 85: 86: exnum: 87: jsr pc,getw 88: mov r4,r1 89: 1: 90: mov $1,r0 91: br oprand 92: 93: brack: 94: mov r2,-(sp) 95: mov r3,-(sp) 96: jsr pc,readop 97: jsr pc,expres1 98: cmp r4,$'] 99: beq 1f 100: jsr r5,error; '] 101: 1: 102: mov r3,r0 103: mov r2,r1 104: mov (sp)+,r3 105: mov (sp)+,r2 106: 107: oprand: 108: mov $exsw2,r5 109: 1: 110: cmp (sp),(r5)+ 111: beq 1f 112: tst (r5)+ 113: bne 1b 114: br eoprnd 115: 1: 116: jmp *(r5) 117: 118: exsw2: 119: '+; exadd 120: '-; exsub 121: '*; exmul 122: '/; exdiv 123: 037; exor 124: '&; exand 125: 035;exlsh 126: 036;exrsh 127: '%; exmod 128: '^; excmbin 129: '!; exnot 130: 200; 0 131: 132: excmbin: 133: mov r0,r3 134: br eoprnd 135: 136: exrsh: 137: neg r1 138: beq exlsh 139: inc r1 140: clc 141: ror r2 142: exlsh: 143: jsr r5,combin; relte2 144: als r1,r2 145: br eoprnd 146: 147: exmod: 148: jsr r5,combin; relte2 149: mov r3,r0 150: mov r2,r3 151: clr r2 152: dvd r1,r2 153: mov r3,r2 154: mov r0,r3 155: br eoprnd 156: 157: exadd: 158: jsr r5,combin; reltp2 159: add r1,r2 160: br eoprnd 161: 162: exsub: 163: jsr r5,combin; reltm2 164: sub r1,r2 165: br eoprnd 166: 167: exand: 168: jsr r5,combin; relte2 169: com r1 170: bic r1,r2 171: br eoprnd 172: 173: exor: 174: jsr r5,combin; relte2 175: bis r1,r2 176: br eoprnd 177: 178: exmul: 179: jsr r5,combin; relte2 180: mpy r2,r1 181: mov r1,r2 182: br eoprnd 183: 184: exdiv: 185: jsr r5,combin; relte2 186: mov r3,r0 187: mov r2,r3 188: clr r2 189: dvd r1,r2 190: mov r0,r3 191: br eoprnd 192: 193: exnot: 194: jsr r5,combin; relte2 195: com r1 196: add r1,r2 197: br eoprnd 198: 199: eoprnd: 200: mov $'+,(sp) 201: jmp advanc 202: 203: combin: 204: tstb passno 205: bne combin1 206: mov r0,-(sp) 207: bis r3,(sp) 208: bic $!40,(sp) 209: bic $!37,r0 210: bic $!37,r3 211: cmp r0,r3 212: ble 1f 213: mov r0,-(sp) 214: mov r3,r0 215: mov (sp)+,r3 216: 1: 217: tst r0 218: beq 1f 219: cmp (r5)+,$reltm2 220: bne 2f 221: cmp r0,r3 222: bne 2f 223: mov $1,r3 224: br 2f 225: 1: 226: tst (r5)+ 227: clr r3 228: 2: 229: bis (sp)+,r3 230: rts r5 231: combin1: 232: mov r1,-(sp) 233: clr maxtyp 234: jsr pc,maprel 235: mov r0,r1 236: mpy $6,r1 237: mov r3,r0 238: jsr pc,maprel 239: add (r5)+,r0 240: add r1,r0 241: movb (r0),r3 242: bpl 1f 243: cmp r3,$-1 244: beq 2f 245: jsr r5,error; 'r 246: 2: 247: mov maxtyp,r3 248: 1: 249: mov (sp)+,r1 250: rts r5 251: 252: maprel: 253: cmp r0,$40 254: bne 1f 255: mov $5,r0 256: rts pc 257: 1: 258: bic $!37,r0 259: cmp r0,maxtyp 260: blos 1f 261: mov r0,maxtyp 262: 1: 263: cmp r0,$5 264: blos 1f 265: mov $1,r0 266: 1: 267: rts pc 268: 269: X = -2 270: M = -1 271: reltp2: 272: .byte 0, 0, 0, 0, 0, 0 273: .byte 0, M, 2, 3, 4,40 274: .byte 0, 2, X, X, X, X 275: .byte 0, 3, X, X, X, X 276: .byte 0, 4, X, X, X, X 277: .byte 0,40, X, X, X, X 278: 279: reltm2: 280: .byte 0, 0, 0, 0, 0, 0 281: .byte 0, M, 2, 3, 4,40 282: .byte 0, X, 1, X, X, X 283: .byte 0, X, X, 1, X, X 284: .byte 0, X, X, X, 1, X 285: .byte 0, X, X, X, X, X 286: 287: relte2: 288: .byte 0, 0, 0, 0, 0, 0 289: .byte 0, M, X, X, X, X 290: .byte 0, X, X, X, X, X 291: .byte 0, X, X, X, X, X 292: .byte 0, X, X, X, X, X 293: .byte 0, X, X, X, X, X