+ emitSETC;
+
+ while(sizel--) {
+ if((bytelit = ((lit >> (offset*8)) & 0x0FFL)) != 0x0L) {
+
+ /* patch provided by Aaron Colwell */
+ if((posbit = isLiteralBit(bytelit)) != 0) {
+ pic16_emitpcode(((rIfx.condition) ? POC_BTFSS : POC_BTFSC ),
+ pic16_newpCodeOpBit(pic16_aopGet(AOP(left), offset,FALSE,FALSE),
+ (posbit-1),0, PO_GPR_REGISTER));
+
+ pic16_emitpcode(POC_BRA, pic16_popGetLabel(tlbl->key));
+ } else {
+ if (bytelit == 0xff) {
+ /* Aaron had a MOVF instruction here, changed to MOVFW cause
+ * a peephole could optimize it out -- VR */
+ pic16_emitpcode(POC_MOVFW, pic16_popGet(AOP(left), offset));
+ } else {
+ pic16_emitpcode(POC_MOVFW, pic16_popGet(AOP(left), offset));
+ pic16_emitpcode(POC_ANDLW, pic16_popGetLit(bytelit));
+ }
+
+ pic16_emitpcode(((rIfx.condition) ? POC_BZ : POC_BNZ),
+ pic16_popGetLabel(tlbl->key));
+ }
+
+#if 0
+ /* old code, left here for reference -- VR 09/2004 */