chiark / gitweb /
actually reserve (with "res") nmra buffer; check for incoming message length overrun
authorian <ian>
Tue, 20 Dec 2005 23:18:06 +0000 (23:18 +0000)
committerian <ian>
Tue, 20 Dec 2005 23:18:06 +0000 (23:18 +0000)
detpic/morse.messages
detpic/nmra-stream.asm

index 7166fd017de343f733666b625c474107fb14ab3a..ea35a03b1fbe013240342dcb0f9745a4a7a9c92a 100644 (file)
@@ -21,6 +21,7 @@
 # Miscellaneous
 E                              ; `expected'; we were told to panic
 HX     ::t                     ; host sent unknown command
+HW     ::t                     ; host sent message which was too long
 
 # Problematic interrupts
 IH     INTCON,INTCON3,PIR1,PIR2,PIR3 ; Interrupt source not found (high pri.)
index 9a8c6755716fec8883f546a819bdcfa0723fcb05..32ac094a9030f05d1cd7fa87cc1347171d29d074 100644 (file)
@@ -46,8 +46,8 @@ totrackbit    res     1       ; bit location of pointer within byte
 
 bufferpage     equ     5
 
- udata bufferpage << 256
-buffers res
+buffer_section udata bufferpage << 256
+buffer res 256
 
  code
 
@@ -212,8 +212,16 @@ fixme need to check both interrupt handlers here and look for refies too
        inc_fa  fromserial              ; advance fromserial pointer by 1 byte
 ;      debug   '4'
 
+       mov_lw  0x0f
+       and_wfw fromserial
+       bra_z   receive_message_too_long
+
        bc_fa   PIR1,RCIF       ; unset interrupt
-       goto    intrl_handled_nostack
+       intrl_handled_nostack
+
+receive_message_too_long
+       panic   morse_HW
+ fixme reviewed up to here for inclusion in bigger program
 
 ; *** I *think* the interrupt bit is cleared by reading out of RCREG
 ; but this may be something to try in debugging if stuff doesn't work