
;-------------------------------------- RESET Startup --------------------------        
         org 0x0100        
Start:   mov SP, #SPstart              ; if 128 bytes iRAM may use upper 32bytes
         acall sys_init
         acall uart_init
         ljmp main
        
;-------------------------------------- main -----------------------------------       
main:   
         mov DPTR, #msg1               ; point to msg1
         mov R2, #msgsize              ; message size
         acall send_msg                ; send msg to FIM (25bytes)

         mov R0, #buf                  ; start of receive buffer in iRAM
         mov R2, #bufsize              ; fixed size reply from FIM
         acall recv_msg                ; get reply from FIM (25bytes) to buf

         mov R0, #buf                  ; start of receive buffer in iRAM
         mov R2, #bufsize              ; fixed size reply from FIM
         acall show_buf                ; show reply on P2 with 1s delay

         mov DPTR, #msg2               ; point to msg2
         mov R0, #buf                  ; start of msg buffer in iRAM
         mov R2, #bufsize              ; fixed size of msg received
         acall cmp_msg                 ; compare msg to buf, eq A=0, ne A=1
         jz    case_eq                 ; decide program execution based on A
case_ne:                               ; ... when not equal

case_eq:                               ; ... when equal

         jmp $                         ; STOP
