1: / 2: / SET OPERATIONS 3: / 4: _ADDT: 5: bne 1f 6: mov (lc)+,r3 7: 1: 8: inc r3 9: bic $1,r3 10: mov sp,r0 11: add r3,sp 12: mov sp,r1 13: asr r3 14: 1: 15: bis (r0)+,(r1)+ 16: sob r3,1b 17: return 18: _SUBT: 19: bne 1f 20: mov (lc)+,r3 21: 1: 22: inc r3 23: bic $1,r3 24: mov sp,r0 25: add r3,sp 26: mov sp,r1 27: asr r3 28: 1: 29: bic (r0)+,(r1)+ 30: sob r3,1b 31: bic (lc)+,-(r1) 32: return 33: _MULT: 34: bne 1f 35: mov (lc)+,r3 36: 1: 37: inc r3 38: bic $1,r3 39: mov sp,r0 40: add r3,sp 41: mov sp,r1 42: asr r3 43: 1: 44: mov (r0)+,r2 45: com r2 46: bic r2,(r1)+ 47: sob r3,1b 48: return 49: _CARD: 50: bne 1f 51: mov (lc)+,r3 52: 1: 53: mov r3,r1 54: mov sp,r2 55: inc r3 56: bic $1,r3 57: add r3,sp 58: clr r3 59: 1: 60: movb (r2),r0 61: bic $!17,r0 62: asl r0 63: add poptab(r0),r3 64: movb (r2)+,r0 65: ash $-3,r0 66: bic $!36,r0 67: add poptab(r0),r3 68: sob r1,1b 69: mov r3,-(sp) 70: return 71: .data 72: poptab: 73: 0 / 0000 74: 1 / 0001 75: 1 / 0010 76: 2 / 0011 77: 1 / 0100 78: 2 / 0101 79: 2 / 0110 80: 3 / 0111 81: 1 / 1000 82: 2 / 1001 83: 2 / 1010 84: 3 / 1011 85: 2 / 1100 86: 3 / 1101 87: 3 / 1110 88: 4 / 1111 89: .text 90: _CTTOT: 91: bne 1f 92: mov (lc)+,r3 93: 1: 94: mov r3,-(sp) 95: mov (lc)+,-(sp) 96: mov (lc)+,-(sp) 97: jsr pc,_pcttot 98: mov r0,sp 99: return 100: _IN: 101: bne 1f 102: mov (lc)+,r3 103: 1: 104: mov (sp)+,r2 105: sub (lc)+,r2 106: bmi 8f 107: cmp r2,(lc)+ 108: bgt 9f 109: mov r2,r1 110: bic $!7,r1 111: ash $-3,r2 112: add sp,r2 113: inc r3 114: bic $1,r3 115: add r3,sp 116: mov $1,r0 117: ash r1,r0 118: bitb r0,(r2) 119: jne true 120: jmp false 121: 8: 122: tst (lc)+ 123: 9: 124: inc r3 125: bic $1,r3 126: add r3,sp 127: jmp false 128: _INCT: 129: mov (sp)+,r2 130: mov (sp)+,r3 131: 1: 132: cmp r2,(sp)+ 133: blt 2f 134: cmp r2,(sp)+ 135: bgt 3f 136: dec r3 137: add r3,r3 138: add r3,r3 139: add r3,sp 140: mov $1,-(sp) 141: return 142: 2: 143: tst (sp)+ 144: 3: 145: sob r3,1b 146: clr -(sp) 147: return