;***************************************
;
;  THIS IS THE BACKGROUND (BG) CODE
;  THIS CODE IS RESPONSIBLE FOR THE FOLLOWING
;
;  CALLING THE CHECK ROUTINE OF CU
;  RE-ENTERING IRQ LEVEL WHEN HE'S
;    WAITING FOR A COMPLETION
;  EXECUTING COMMANDS FROM THE PET
;    THE CMD'S ARE:
;      INITIALIZE
;      MEMORY
;      RECORD (POSITION)
;      SCRATCH
;
;***************************************
IDLE
 LDA DSKST ;CHK IF DISK IDLE
 BNE IDLE1 ;BR IF NOT IDLE
 LDA BLINK ;CHK IF LIGHTS TO BE BLINKED
 BNE IDLE2 ;BR IF SO
 LDA DRDBI ;TURN LIGHTS OFF
 ORA #$0C ;*
 STA DRDBI ;*
 STA DRDB ;*
 JMP IDLE1 ;GO TO CHK CMD PENDING
IDLE2
 DEC ERRTIM ;DECR TIMER
 BNE IDLE1 ;BR IF NOT TIMED OUT
 LDA DRDBI ;INVERT THE LEDS
 EOR #$0C ;*
 STA DRDBI ;*
 STA DRDB ;*
IDLE1
 LDA CMDWAT ;CHECK IF CMD IS WAITING
 BNE DOCMD ;IF SO GO DO IT
 JSR CHECK ;CALL CU
 LDA IRQREQ ;CHECK IF IRQ BOUND UP
 BEQ IDLE ;BR IF NOT
 BRK ;SIMULATE INTERRUPT
 NOP ;NO-OP REQUIRED AFTER BRK
 JMP IDLE ;KEEP LOOPING
;
;  FOUND A CMD FOR SA=15
;
DOCMD
 LDA #0 ;RESET CMD FLAGS
 STA CMDPND ;PENDING
 STA CMDWAT ;WAITING
 JSR PARSXQ ;EXECUTE THE CMD
;
;
;
REENAB ;RE-ENABLE IEEE INTERRUPTS
 SEI ;DISABLE
 LDA IEIERS ;RELOAD VIA ENABLES
 BPL REENA1 ;DONT RELOAD IF NOT STORED
 STA IEIER ;*
 LDA DRCAS ;RELOAD PIA ENABLES
 STA DRCA ;*
REENA1
 LDX #$FF ;RELOAD SP
 TXS ;*
 CLI
 JMP IDLE ;LOOK FOR NEXT CMD ETC.
;
;
 .END
