+ (error "Unrecognised opcode" (instr 'opcode))))))
+
+(define (combine-and-store A-ptr B-ptr modifier name f)
+ (case modifier
+ ((A) ((core-get B-ptr) 'set-A-num!
+ (f ((core-get B-ptr) 'A-num) ((core-get A-ptr) 'A-num)) name))
+ ((B) ((core-get B-ptr) 'set-B-num!
+ (f ((core-get B-ptr) 'B-num) ((core-get A-ptr) 'B-num)) name))
+ ((AB) ((core-get B-ptr) 'set-B-num!
+ (f ((core-get B-ptr) 'B-num) ((core-get A-ptr) 'A-num)) name))
+ ((BA) ((core-get B-ptr) 'set-A-num!
+ (f ((core-get B-ptr) 'A-num) ((core-get A-ptr) 'B-num)) name))
+ ((F I) ((core-get B-ptr) 'set-A-num!
+ (f ((core-get B-ptr) 'A-num) ((core-get A-ptr) 'A-num))) name
+ ((core-get B-ptr) 'set-B-num!
+ (f ((core-get B-ptr) 'B-num) ((core-get A-ptr) 'B-num)) name))
+ ((X) ((core-get B-ptr) 'set-A-num!
+ (f ((core-get B-ptr) 'A-num) ((core-get A-ptr) 'B-num)) name)
+ ((core-get B-ptr) 'set-B-num!
+ (f ((core-get B-ptr) 'B-num) ((core-get A-ptr) 'A-num)) name))))