Using the 25th line for user info display
                        with MBYE/MBBS

On my Kaypro 10 system I have been using the 25th line to display the user
information provided by MBYE41/MBBS44.  I know there are many systems running
MBBS on Kaypro machines so I thought it would be a good idea to show others
how to install MBYE to implement this feature.  The same video protocol is
used on the Kaypro 10 and all the other 84 models (284,484,2X,etc) so this
modification will work on any of these systems.  If you do not like the
inverse video, just take the ESC,'B0', ESC,'B1', ESC,'C0', and ESC,'C1'
out of the DB strings near the end of the file.  An easy way to install
these changes would be to simply rip out the original code and replace it
with the modified code using the block delete and insert feature of your
favorite editor.  This file also includes fixes for two conditional
assembly bugs in the original source code which I also included in
MBYE41.FIX.

In the beginning of the MBYE41.ASM file, set the equates TOPDSP and NORMAL
to NO.  Set the equate LINE25 to YES.

I made the following changes to the MBYE41 source code to make the 25th
line display work a bit more smoothly.  In the original release it was
possible to display an empty 25th line by pressing ^W with no user logged
in.  All the changed lines are shown with ;** so you can easily locate
them.

Murray Simsolo
LIKUG MBBS-RCP/M
(516)825-8465
(300/1200/2400, 24 hrs)

TOGUSR:
        IF     MBBS AND (TOPDSP OR LINE25)
       LDA     DSPUSF
       ORA     A
       JZ      SETUDO
       XRA     A
       STA     DSPUSF
        ENDIF
;
        IF     MBBS AND NODSP24
       STA     DSPUSX
        ENDIF
;
        IF     MBBS AND LINE25         ;** I added
       LDA     CURUSR                  ;** these lines
       CPI     ' '                     ;**
       JZ      UDOFF                   ;**
       LXI     H,CLR25                 ;**
       JMP     FKEX                    ;**
        ENDIF                          ;**
;
        IF     MBBS AND (TOPDSP OR LINE25)
UDOFF:  LXI     H,USROFF
       JMP     FKEX
SETUDO:
       MVI     A,ON
       STA     DSPUSF
        ENDIF
;
        IF     MBBS AND NODSP24
       STA     DSPUSX
        ENDIF
;
        IF     MBBS AND (TOPDSP OR LINE25)     ;** I added
       LDA     CURUSR                          ;** these lines
       CPI     ' '                             ;**
       JNZ     USRDSP                          ;**
       LXI     H,USRON                         ;**
       JMP     FKEX                            ;**
        ENDIF                                  ;**
;
        IF     MBBS
USRDSP: LXI     H,CURUSR+35
       SHLD    DPTR
       LHLD    RTCBUF+7
       CALL    DOUT
        ENDIF
;

At the end of the file there are some DB strings which must be set for the
necessary escape codes to be sent to the Kaypro to use the 25th status line.
I also added a message to be sent to the sysop confirming that the user
display is on when ^W is pressed with no user logged in.

        IF     MBBS AND (LINE25 OR TOPDSP)
USROFF: DB      CR,LF,'[User display OFF]',CR,LF,0 ;** I changed this
USRON:  DB      CR,LF,'[User display ON]',CR,LF,0  ;** and added this
        ENDIF
;
;------------------------------------------------------------------
;
; MBBS USER DISPLAY OPTIONS:
;
; To make the USER message appear at the top of your screen on your
; console terminal, be sure to patch these escape sequences as needed
; for your system, the ESC sequences shown here are for the Kaypro 2,
; (ADM-31). (Except for LINE25 stuff which is for Kaypro 10)
;
        IF     MBBS AND LINE25
CLR25:  DB      ESC,'B6',ESC,'=8 ',ESC,'R',ESC,'C7',ESC,'C6',0 ;** I changed
        ENDIF  ;**this string to work with the K10
;
USRMSG:
;
        IF     MBBS AND NORMAL
       DB      CR,LF
        ENDIF
;
        IF     MBBS AND TOPDSP AND (NOT TOPDEL)
       DB      ESC,'=',23+' ',0+' '    ;bottom line (Kaypro 2)
       DB      LF                      ;and linefeed (scrollup)
        ENDIF
;
        IF     MBBS AND TOPDSP
       DB      ESC,'=',0+' ',0+' '     ;home cursor (Kaypro 2)
        ENDIF
;
        IF     MBBS AND (TOPDSP OR NORMAL)
       DB      '[         Who/Where               '
       DB      'Mins Usr#  Date Logons Msg#  '
        ENDIF
;
        IF     MBBS AND (TOPDSP OR NORMAL) AND MTDISP
       DB      'Maxt'
        ENDIF
;
        IF     MBBS AND (TOPDSP OR NORMAL)
       DB      '   ]'
        ENDIF
;
        IF     MBBS AND TOPDSP AND TOPEOL
       DB      'X'-40H,CR,LF           ;erase to end of line/CR/LF
        ENDIF
;
        IF     MBBS AND TOPDSP AND (NOT TOPEOL) AND (NOT MTDISP)
       DB      '            '
        ENDIF
;
        IF     MBBS AND TOPDSP AND (NOT TOPEOL) AND MTDISP
       DB      '        '
        ENDIF
;
        IF     MBBS AND TOPDSP AND (NOT TOPEOL) AND (NOT TOPWRP)
       DB      CR,LF
        ENDIF
;
        IF     MBBS AND LINE25
       DB      ESC,'B6',ESC,'B7',ESC,'=8 ',ESC,'B0',ESC,'B1' ;** I changed
        ENDIF  ;** this string to work with the K10
;
        IF     MBBS AND NORMAL
       DB      CR,LF
        ENDIF
;
        IF     MBBS
       DB      '>> '
CURUSR: DB      '                                ' ;64 byte buffer poked
       DB      '                                ' ;by MLOGIN or MBBS
        ENDIF  ;** This ENDIF was inadvertently left out
;
        IF     MBBS AND MTDISP ;** I changed the conditional here
MTOS:   DB      '    '
        ENDIF
;
        IF     MBBS
       DB      ' <<'
        ENDIF
;
        IF     MBBS AND NORMAL
       DB      CR,LF,0
        ENDIF
;
        IF     MBBS AND TOPDSP AND TOPEOL
       DB      'X'-40H,CR,LF           ;erase to end of line/CR/LF
        ENDIF
;
        IF     MBBS AND TOPDSP AND (NOT TOPEOL) AND (NOT MTDISP)
       DB      '            '
        ENDIF
;
        IF     MBBS AND TOPDSP AND (NOT TOPEOL) AND MTDISP
       DB      '        '
        ENDIF
;
        IF     MBBS AND TOPDSP AND (NOT TOPEOL) AND (NOT TOPWRP)
       DB      CR,LF
        ENDIF
;
        IF     MBBS AND TOPDSP AND TOPDEL
       DB      ESC,'R'                 ;delete line (Kaypro 2)
        ENDIF
;
        IF     MBBS AND TOPDSP
       DB      ESC,'=',23+' ',0+' ',0  ;bottom line, col 1 (Kaypro 2)
        ENDIF
;
        IF     MBBS AND LINE25
       DB      ESC,'C0',ESC,'C1',ESC,'C6',0 ;** I changed
        ENDIF  ;** this string to work with the K10