From 9a97e1c7c566c23c6c54a468e5267a0595f0abc7 Mon Sep 17 00:00:00 2001 From: Christian Pointner Date: Thu, 4 Jul 2013 23:39:02 +0000 Subject: added check for invalid command codes git-svn-id: https://svn.spreadspace.org/pic/trunk@38 a09c6847-51d9-44de-8ef2-e725cf50f3c7 --- bootloader/bootloader.asm | 21 +++++++++++++-------- 1 file changed, 13 insertions(+), 8 deletions(-) diff --git a/bootloader/bootloader.asm b/bootloader/bootloader.asm index bbf88b8..3ff8aa4 100644 --- a/bootloader/bootloader.asm +++ b/bootloader/bootloader.asm @@ -29,7 +29,7 @@ ;; ------------------------------------- ;; DEFINES -#define BOOTPIN PORTC,7 +#define BOOTPIN PORTC,7 USERVECT EQU H'100' ISRVECT EQU USERVECT + H'4' @@ -76,7 +76,8 @@ current_cmdlen EQU H'0070' csum EQU H'0071' flags EQU H'007D' -weep EQU .0 +#define F_INVALID_CMD flags,0 +#define F_WEEP flags,7 cnt2 EQU H'007E' cnt1 EQU H'007F' @@ -120,7 +121,11 @@ send_answer_next return check_cmd_code - retlw CMD_INVALID + movf combuff,w + sublw CMD_MAX + btfss STATUS,C + bsf F_INVALID_CMD + return get_cmdlen addwf PCL,f @@ -197,7 +202,7 @@ uart_rx_oe ; recover from overflow uart_rx_byte ; process received command btfsc RCSTA,FERR goto uart_rx_fe - movf RCREG,w ; TODO: check parity?? + movf RCREG,w movwf INDF incf FSR,f movf current_cmdlen,f @@ -213,9 +218,9 @@ uart_rx_fe ; recover from framing error new_cmd ; got new command code call check_cmd_code - movf combuff,w - btfsc STATUS,Z + btfsc F_INVALID_CMD goto invalid_cmd + movf combuff,w call get_cmdlen movwf current_cmdlen goto wait_cmd @@ -338,7 +343,7 @@ cmd_r_eeprom ;; ** write eeprom ******* cmd_w_eeprom - btfss flags,weep + btfss F_WEEP goto cmd_w_eeprom_len ;; call write_eeprom movlw E_ADDR_INVALID @@ -350,7 +355,7 @@ cmd_w_eeprom cmd_w_eeprom_len movf combuff + .3,w movwf current_cmdlen - bsf flags,weep + bsf F_WEEP goto wait_cmd ;; ** not implemented commands ******* -- cgit v1.2.3