;
;      irq_lds.txt -  
;                       
;  IRQ init section:
;
RESET_VECTOR    CODE   0x0000     ; processor reset vector
        goto    START             ; go to beginning of program
;
;---------------------------------------------------------------
INT_VECTOR    CODE    0x0004      ; interrupt vector location

INTERRUPT
; pusher
        movwf   w_temp            ; save off current W register contents
        movf    STATUS,w          ; move status register into W register
        movwf   status_temp       ; save off contents of STATUS register
        
;        movf FSR,w
;        movwf gtmp_fsr
  banksel 0 ;   RB0
  bcf PIR1,TMR1IF ;    
  movf outbuf_b,w ;    BAM
  movwf PORTB ;      
  bcf T1CON,TMR1ON ;    1
  movf mark_tml,w
  movwf TMR1L ;     
  movf mark_tmh,w ;  
  movwf TMR1H ;   
  bsf T1CON,TMR1ON ;    1
  ;-------------------------------------------------------
  btfss bit_pos,0 ;   0 
   goto step_1
     step_proc tmm1 ;   1
step_1
  btfss bit_pos,1 ;   1 
   goto step_2
     step_proc tmm2 ;   2
step_2
  btfss bit_pos,2 ;   2 
   goto step_3
     step_proc tmm3 ;   3
step_3
  btfss bit_pos,3 ;   3 
   goto step_4
     step_proc tmm4 ;   4
step_4
  btfss bit_pos,4 ;   4 
   goto step_5
     step_proc tmm5 ;   5
step_5
  btfss bit_pos,5 ;   5 
   goto step_6
     step_proc tmm6 ;   6
step_6
  btfss bit_pos,6 ;   6 
   goto step_7
     step_proc tmm7 ;   7
step_7
  btfss bit_pos,7 ;   6 
   goto error_disp ;    
;   
;        
;      
; flags0.quest_dat = 1    
; flags0.quest_dat = 0   
;
     btfss flags0,quest_dat
     goto wait_out1 ;    
    movf prep_r,w
    movwf ram_r
    movf prep_g,w
    movwf ram_g
    movf prep_b,w
    movwf ram_b ;      
    bcf flags0,quest_dat ;     
wait_out1
  call wait_out ;      
;
;  ,  
; (   )
;










; isr code can go here or be located as a call subroutine elsewhere
popper
;        movf gtmp_fsr,w
;        movwf FSR
        movf    status_temp,w     ; retrieve copy of STATUS register
        movwf   STATUS            ; restore pre-isr STATUS register contents
        swapf   w_temp,f
        swapf   w_temp,w          ; restore pre-isr W register contents
        retfie                    ; return from interrupt
;
;-----------------------------------------------------------
rolx
   clrf tmp_disb
   rrf kadd_b,f
   rlf tmp_disb,f
   rrf kadd_g,f
   rlf tmp_disb,f
   rrf kadd_r,f
   rlf tmp_disb,f
   movf outbuf_b,w ;     RB
   andlw ~rgb_blank ;     RGB
   iorwf tmp_disb,w ;    
   movwf outbuf_b ;  RGB     RB
  return
;
wait_out
      comf ram_r,w
      movwf kadd_r
      comf ram_g,w
      movwf kadd_g
      comf ram_b,w
      movwf kadd_b ;    
      ;       
      ;   0 
     movlw 1 ;      
     movwf bit_pos ; 
    call rolx ;    
      movlw low tmm0
      movwf mark_tml ;    
      movlw high tmm0
      movwf mark_tmh ;  0 BAM    
    return ; (   !)
;
error_disp
       goto error_disp ;   
;