*/
/* write address is expected to be in WREG:FSR0H:FSR0L while
- * write value is in TBLPTRH:TBLPTRL:PRODH:PRODL */
+ * write value is in TBLPTRH:TBLPTRL:PRODH:[stack] */
extern POSTINC0;
+extern PREINC1;
extern INDF0;
extern FSR0L;
extern FSR0H;
extern PRODL;
extern PRODH;
-void _gptrput4(void) _naked
+void _gptrput4(void) __naked
{
- _asm
+ __asm
/* decode generic pointer MSB (in WREG) bits 6 and 7:
* 00 -> code (unimplemented)
* 01 -> EEPROM (unimplemented)
* 11 -> unimplemented
*/
btfss _WREG, 7
- goto _lab_01_
+ bra _lab_01_
/* data pointer */
/* data are already in FSR0 */
- movff _PRODL, _POSTINC0
+ movff _PRODL, _FSR0H
+
+ movff _PREINC1, _POSTINC0
movff _PRODH, _POSTINC0
movff _TBLPTRL, _POSTINC0
movff _TBLPTRH, _POSTINC0
- goto _end_
+ return
_lab_01_:
/* code or eeprom */
- btfsc _WREG, 6
- goto _lab_02_
+ btfss _WREG, 6
+ return
/* code pointer, cannot write code pointers */
- goto _end_
-
_lab_02_:
/* EEPROM pointer */
/* unimplemented yet */
-_end_:
- _endasm;
+ return
+ __endasm;
}