; SUBJECT : BYE510 FIX
;
; FROM    : IRV HOFF
;
; DATE    : 4 AUG 86
;
;
;       NOTE TO SYSOPS:  You may wish to put this little
;                        file in your master BYE510.LBR so
;                        it will be available to anybody
;                        downloading that file.
;
;
;       Several Sysops have mentioned when using BYE510 they were unable
; to properly operate their local keyboard.  The fix involves (1) moving
; three lines in the MINP2: area and (2) adding three lines plus a new
; label in the MSTAT: area.
;
;       The problem occurred when those routines were altered to provide
; proper timeout with the METAL BBS program when nobody had typed on the
; remote keyboard for some time.  METAL was looping while waiting for a
; status bit to go high indicating a character could be obtained.  The
; BYE program(s) had been looping until the character was received.  The
; METAL program could thus hang up the system for long periods of time
; if nobody was typing at the other end.


;-----------------------------------------------------------------------
; CHANGE 1
;-----------------------------------------------------------------------
;
MINP2:
;;;     CALL    CONSTAT         ; Check for console input       =>DELETE
;;;     ORA     A               ; Got console input?            =>DELETE
;;;     JNZ     CONIN           ; Yep, get the console character=>DELETE
       CALL    MSTAT           ; Nope, check for modem input
       ORA     A               ; Got modem input?
       JZ      MINP2           ; Nope, loop again
       CALL    CONSTAT         ; Check for console input       => ADDED
       ORA     A               ; Got console input?            => ADDED
       JNZ     CONIN           ; Yep, get the console character=> ADDED
MINP3:  CALL    MDINP           ; Yep, get modem character



;-----------------------------------------------------------------------
; CHANGE 2
;-----------------------------------------------------------------------
;
; Modem status test and no-activity timer routine
;
MSTAT:   IF     NOT CPM3
       CALL    BDCHEK          ; Set 6 to safety
        ENDIF                  ; NOT CPM3
;
       CALL    CONSTAT         ; Check local keyboard status   => ADDED
       ORA     A               ;                               => ADDED
       JNZ     MSTAT0          ;                               => ADDED
       LDA     MDMOFF
       ORA     A
       MVI     A,0
       RNZ                     ; Don't let remote input while modem is
                               ; Muted
       CALL    CHECK           ; Check for carrier lost
       CALL    MDINST          ; Get modem input status
       ORA     A               ; Character available?
       JZ      MSTAT1          ; Nope
;
MSTAT0:                         ;                         => LABEL ADDED
       PUSH    PSW             ; Yep, save return status
       XRA     A               ; Clear no-activity flag
       STA     MSFLAG
       POP     PSW             ; Restore return status
       RET                     ; And return
;
MSTAT1: LDA     MSFLAG          ; Get the no-activity flag

       (etc.)