1: / 2: / 3: 4: / a5 -- pdp-11 assembler pass 1 5: 6: readop: 7: mov savop,r4 8: beq 1f 9: clr savop 10: rts pc 11: 1: 12: jsr pc,8f 13: jsr pc,putw 14: rts pc 15: 16: 8: 17: jsr pc,rch 18: _readop: 19: mov r0,r4 20: movb chartab(r0),r1 21: bgt rdname 22: jmp *1f-2(r1) 23: 24: fixor 25: escp 26: 8b 27: retread 28: dquote 29: garb 30: squote 31: rdname 32: skip 33: rdnum 34: retread 35: string 36: 1: 37: 38: escp: 39: jsr pc,rch 40: mov $esctab,r1 41: 1: 42: cmpb r0,(r1)+ 43: beq 1f 44: tstb (r1)+ 45: bne 1b 46: rts pc 47: 1: 48: movb (r1),r4 49: rts pc 50: 51: esctab: 52: .byte '/, '/ 53: .byte '\<, 035 54: .byte '>, 036 55: .byte '%, 037 56: .byte 0, 0 57: 58: fixor: 59: mov $037,r4 60: retread: 61: rts pc 62: 63: rdname: 64: movb r0,ch 65: cmp r1,$'0 66: blo 1f 67: cmp r1,$'9 68: blos rdnum 69: 1: 70: jmp rname 71: 72: rdnum: 73: jsr pc,number 74: br 1f 75: rts pc 76: 77: squote: 78: jsr pc,rsch 79: br 1f 80: dquote: 81: jsr pc,rsch 82: mov r0,-(sp) 83: jsr pc,rsch 84: swab r0 85: bis (sp)+,r0 86: 1: 87: mov r0,numval 88: mov $1,r4 89: jsr pc,putw 90: mov numval,r4 91: jsr pc,putw 92: mov $1,r4 93: tst (sp)+ 94: rts pc 95: 96: skip: 97: jsr pc,rch 98: mov r0,r4 99: cmp r0,$'\e 100: beq 1f 101: cmp r0,$'\n 102: bne skip 103: 1: 104: rts pc 105: 106: garb: 107: jsr r5,error; 'g 108: br 8b 109: 110: string: 111: mov $'<,r4 112: jsr pc,putw 113: clr numval 114: 1: 115: jsr pc,rsch 116: tst r1 117: bne 1f 118: mov r0,r4 119: bis $400,r4 120: jsr pc,putw 121: inc numval 122: br 1b 123: 1: 124: mov $-1,r4 125: jsr pc,putw 126: mov $'<,r4 127: tst (sp)+ 128: rts pc 129: 130: rsch: 131: jsr pc,rch 132: cmp r0,$'\e 133: beq 4f 134: cmp r0,$'\n 135: beq 4f 136: clr r1 137: cmp r0,$'\\ 138: bne 3f 139: jsr pc,rch 140: mov $schar,r2 141: 1: 142: cmpb (r2)+,r0 143: beq 2f 144: tstb (r2)+ 145: bpl 1b 146: rts pc 147: 2: 148: movb (r2)+,r0 149: clr r1 150: rts pc 151: 3: 152: cmp r0,$'> 153: bne 1f 154: inc r1 155: 1: 156: rts pc 157: 4: 158: jsr r5,error; '< 159: jmp aexit 160: 161: schar: 162: .byte 'n, 012 163: .byte 's, 040 164: .byte 't, 011 165: .byte 'e, 004 166: .byte '0, 000 167: .byte 'r, 015 168: .byte 'a, 006 169: .byte 'p, 033 170: .byte 0, -1