                                    NUBYE
                                   07/31/86
                        (A Sysop's Installation Guide)
                                      by
                                  Tom Brady
                (based upon Wayne Master's original BYE5.DOC)


       Please  read  the  NUBYE.HIS  file  to  see  all  recent  and  past 
    modifications  of the NUBYE series.   If operating under CP/M  3,  you 
    should also refer to CPM3.DOC for additonal installation instructions.

       NUBYE  uses  a special loader to relocate its run-time  code  under 
    your  system's CCP.   Once NUBYE is run for the first time,  this run-
    time code will reside there until 1) a system reset - cold boot or  2) 
    the  Sysop  aborts with the ^C function while NUBYE is waiting  for  a 
    call.

       The  size of your run-time code will vary according to the  equates 
    you set to YES.   Running a large message base program (BBS) may limit 
    the number of "bells and whistles" equates that you may choose,  since 
    the bigger NUBYE, the smaller your TPA.

       NUBYE  uses  an  extended  BDOS call  convention  which  becomes  a 
    powerful software tool when writing programs/utilities designed to run 
    while  it  is resident.   These extended BDOS calls are explained  the 
    NUBDOS.DOC file.

       


                             NUBYE  INSTALLATION
                            (Setting the EQUates)
                            ---------------------

       Equates (EQU in source code files) enable you to assign a numerical 
    value or expression to a given label.  Throughout NUBYE, these equates 
    are being set YES,  NO or to some value which will be pointed out when 
    necessary.   This  makes installation and setup simpler,  leaving  the 
    work  to  your  assembler.   Equates normally selectable  by  you  are 
    discussed  in  order of occurance -- those not mentioned  are  usually 
    left "as is".

       Well...  Let's get started!   Using your editor/word processor, set 
    these  equates to match your requirments.   Equate settings shown  are 
    the  default settings found in the NUBYExxx.ASM file directly  out  of 
    the NUBYExxx.LBR.

    ****************************
    OPTION CONFIGURATION SECTION
    ****************************


CCPL EQU 8

       This  equate  tells  NUBYE the size of your CCP and (if  used)  any 
    special disk driver resident below it (normally,  the CCP size is 2k - 
    8  x 256).   If you don't know and NUBYE doesn't work properly with  8 
    (and everything else is installed correctly), try larger numbers until 
    it works -- remember,  however,  that each higher number subracts  256 
    bytes from your TPA.

       Some Apple configurations require 9, others even more.  The Osborne 
    with  Trantor  hard disks may require 24 or less,  dpending  upon  the 
    version of the Trantor software.   If you use Trantor's (WL) hard disk 
    BIOS,  set  this  to  0  and  install the  patches  described  in  the 
    TRANTOR.PAT  file -- this will save you 2k of TPA  (total  programming 
    area).  Those of you operating CPM 3 will not use this equate.


CCPOFF EQU 128

       This  equate  tells  NUBYE how much buffer area (in bytes)  to  set 
    aside between itself and the start of your CCP.   Many systems require 
    this  offset,  while others may be able to get by with less or even  a 
    setting  of a negative figure.   Unless you are sure,  or you wish  to 
    experiment, leave this equate set at 128.


    ----------
    MODEM TYPE
    ----------


IMODEM EQU no

       If your modem is an "intelligent" modem (i.e.  Hayes,  US Robotics, 
    Pro-Modem, Racal Vadic Maxwell, Anchor, etc...), leave this equate set 
    YES.   If you have a "dumb" auto-answer modem,  or if you wish to make 
    your modem emulate a "dumb" auto-answer modem, set this equate NO.


IMAT EQU no

       If IMODEM is YES and your modem also supports the Hayes AT  command 
    protocol  and response codes,  leave this set YES.   If IMODEM is YES, 
    but  your "intelligent" modem does not support the Hayes AT  protocol, 
    you should set this NO.

       If  you have set this equate NO,  you will need to search  for  the 
    "++++  Install your Modem dependent insert here ++++" and install your 
    custom modem control code there.   NUBYE does not support internal 300 
    baud  modems,  unless they can be made to act "dumb" -- the  old  PMMI 
    modems can act "dumb", but are only supported at 300 baud.
 

HS2400 EQU no
HS1200 EQU no
HS300  EQU no

       You MUST set one of these equates to your modem's highest supported 
    baud rate.  Set ONLY one of these to YES.


ECHO EQU no        (used only if IMAT is YES)

       If  your  modem does not echo the "ATA" command after the  RING  is 
    detected,  set  this  to NO.   This includes (but is not  limited  to) 
    Anchor, most US Robotics Password models and the S-100.

       When   this  is  set  YES,   you  are  assured  of  reliable  modem 
    initializations between calls.  Many modems DO echo the commands after 
    RING  is  detected.   These  include (but aren't  limited  to)  Hayes, 
    ProModem,  US  Robotics  Courier and Racal-Vadic  Maxwells.   The  DIP 
    switches on these modems should be set to ECHO commands.


ANCHOR EQU no      (used only if IMAT is YES)

       Set  this YES if you have an Anchor Mark XII (NUBYE  normally  uses 
    the  commands  S2=128,  M0,  S10=25 and X1,  which this modem  doesn't 
    understand).


NODTR EQU no       (used only if IMAT is YES)

       Set  this to YES if your computer/modem interface is not wired  for 
    DTR,  or  if you are using an Anchor Mark XII (which  doesn't  support 
    DTR).

       Note:   NUBYE can handle the lack of DTR by Osborne 1,  but only if 
    you've  installed  the hardware modification for CD (carrier  detect).  
    You  may as well perform the fix for both DTR and CD at the same  time 
    with the hardware modification kit available.


NOATA EQU no       (used only if IMAT is YES)

       Leave this NO for Anchor Mark XII,  which execute the "ATA" command 
    properly after RING is detected.  Set to YES for others (i.e. older US 
    Robotics  Passwords  and  S-100's),  which do not  execute  the  "ATA" 
    command after RING is detected.


SHORTB EQU no      (used only if IMAT is YES)

       If  your  modem can't handle a 30 character  command  string  (i.e. 
    Multimodem,  by MultiTech), set this to YES.  NUBYE will then send two 
    short command strings.

DOATZ EQU no       (used only if IMAT is YES)

       If your modem reverts to auto-answer whenever it receives the "ATZ" 
    command,  set this to NO.   You may also set this to NO, if your modem 
    initializes  properly between calls without receiving an "ATZ" command 
    (NUBYE resets quicker between calls this way).   NOTE:   If you get an 
    unusually  high number of "voice" calls reported in  the  between-call 
    summary,  most likely your modem NEEDS the "ATZ" command,  so set this 
    to YES. 



OFFHK EQU no       (used only if IMAT is YES)

       If you don't want your phone to be off hook while you are using it, 
    set  this  to  NO  -- NUBYE will then send  the  S0=0  command  before 
    dropping  into CP/M (whenever you break out of NUBYE locally,  or  run 
    your  BBS program locally with the "E" command) to be sure your  modem 
    does not go into the auto-answer mode.

       When left YES,  NUBYE will send the ATH1 command,  thus making your 
    phone line busy until you either reset the modem, or run NUBYE.


--------
BBS TYPE
--------

NOSHOW EQU NO
MBBS   EQU no
METAL  EQU no
MINICK EQU no
OXGATE EQU no
PBBS   EQU no
RBBS   EQU no

        If  you  operate  a BBS system not shown and wish  to  have  NUBYE 
    load/run  your  .COM file upon carrier detect (COMFILE = YES)  and  an 
    exit .COM file upon carrier loss or user saying 'BYE'  (EXFILE = YES), 
    you   should  set  NOSHOW  to  YES  and  enter  your  entry/exit  .COM 
    filename(s) at the labels COMFCB: and EXITFCB:  respectively (near the 
    end of this file).  If you operate no BBS system, leave everything set 
    to NO. 



LMBELL EQU no           (MBBS, RBBS and others = YES)  (PBBS = NO)
BELOFF EQU yes
KILBEL EQU 03BH

       Set LMBELL to YES if you run MBBS or some versions of  RBBS.   This 
    uses  the  low  memory byte (KILBEL - 3BH) for the console  bell  flag 
    status.  If set NO, you will be using NUBYE's internal bell flag...

       BELOFF tells NUBYE that the bell (for CHAT) will be off (YES) or on 
    (NO)  the first time you bring up NUBYE.   From then  on,  NUBYE  will 
    retain the last toggle status this flag was left after each call.


RTOK   EQU no           (MBBS = NO) (PBBS, RBBS and others = YES)
RTOKFG EQU 20H          (PBBS = 20H) (RBBS = 5BH)

       Some  BBS  systems require that a low memory byte be reset for  re-
    entry  from CP/M -- this keeps the user from being asked  (again)  for 
    their name and password.    When it is set YES,   NUBYE will reset the 
    byte  at RTOKFG to 0 between calls.


    ===============
    GENERAL EQUATES
    ===============


WBDRIV EQU 'A'

       Normally  set  to 'A',  this tells NUBYE which drive you  want  the 
    caller  to  be  dropped off at upon first entry to  CP/M  (first  warm 
    boot).   Some  may  wish  to have their users dropped onto  the  "new" 
    uploads drive to start -- your choice!   Note:  PBBS ingores this, but 
    allows you to set a similar setting in its own code.


HARDLOG EQU no

       If  you want everything the remote user types sent to your  printer 
    (normal list device), set this YES.  Your BBS or transient program can 
    then toggle this on/off by poking HARDON dynamically (0FFH=ON 0=OFF). 


PRINTER EQU no      -- HARDLOG YES or NO

       If your BBS sends error messages to your printer, or if you want to 
    toggle the printer ON/OFF locally (^P -- while NUBYE is in operation), 
    set this to YES. 


COMFILE EQU no
REENTER EQU no          (MBBS and others = YES) (PBBS = NO)
COMDRV  EQU 'A'
COMUSR  EQU 14

       If  you  are running an RCP/M with no BBS program and  allow  users 
    direct  entry (with or without password) to CP/M,  set COMFILE to  NO.  
    Leave  this  set YES,  if you operate a BBS system and want  NUBYE  to 
    load/run it after carrier detect.

       Set REENTER to YES, if  running MBBS (and others).   This  prevents
    NUBYE from double loading the .COM file.

       Set  COMDRV  to the drive and COMUSR to the user area  where  NUBYE 
    will find your BBS .COM files(s).  NOTE:  In the case of MBBS systems, 
    this  is where NUBYE will locate LOGIN.COM and MFMSG.COM,  only.   See 
    next two equates for MBBS.COM location.


MBBSDRV EQU 'A'
MBBSUSR EQU 0

       This  is  for MBBS systems,  only.   Set MBBSDRV to the  drive  and 
    MBBSUSR to the user area where NUBYE will find your MBBS.COM file.


EXFILE EQU no           (CP/M 3 & PBBS = YES)
BYHANG EQU no           (PBBS = NO) (METAL & Oxgate = YES)
EXDRV  EQU 'A'
EXUSR  EQU 0

    
       If  you want NUBYE to load/run a special exit .COM file set  EXFILE 
    to  YES and specify EXDRV (drive) and EXUSR (user area) where it  will 
    find this program.

       Set BYHANG to YES if you want NUBYE to hangup on the caller  BEFORE 
    loading/running  your exit program.

       When  EXFILE is YES,  your special exit program will be  loaded/run 
    whenever any of these conditions are met:

    1) The user types BYE to log off
    2) Carrier is lost
    3) You TWIT the user off the system with the TWIT key (^N) 
    4) Low memory byte 0 is not equal to 0C3H (used by your BBS  "Goodbye" 
       option to log off a user.   Note,  however,  if you can support the 
       special  MSGFIL feature,  memory byte 0 is allowed to be altered to 
       0C2H,  so  NUBYE  knows to load the special  message  file  handler 
       without calling your exit program.
    5) No input received (user falls asleep, maybe) for TOVALUE (see below 
       for this equate) and NUBYE automatically logs off the user.
    6) Maximum time-on-system is exceeded

       Your  exit  program must preserve the stack and do a RETurn (not  a 
    warm boot) to return control to NUBYE.

       If  any of these conditions are met,  prior to a user being  logged 
    into  your  system (if EXFILE is YES),  NUBYE will  hangup  and  reset 
    WITHOUT loading/running your exit file:

    1) Restricted prime time speed violation (RSPEED)
    2) The user can't answer the password
    3) The  user  fails  to  provide the proper answer to  the  "Nulls  if 
       needed" question within a pre-set number or tries (MNULLS).
    4) The remote modem's speed is not detected within 30 seconds of  your 
       modem answering the phone.


MSGDSC EQU no           (MBBS = YES)

       If  running  MBBS with NUKMD (v1.00+)  or current versions of  XMDM 
    (also  known as XMODEM)  and you support special message file  uploads 
    using the MFMSG utility, set this to YES.  As of NUKMD 1.01, this also 
    supports a new  upload  description  entry  feature,  which loads your 
    descriptions  directly  into  the MBBS message  base.    This  feature 
    handles not only single file transfer descriptions, but batch, too! 

       Read  the NUKMD documentation for more information.     NUKMD  sets  
    low   memory   byte  0  to 0C2H and performs a  warm  boot  for  these 
    operations.  NUBYE will  see  the 0C2H  instruction and  load/run  the  
    special    message/description   file  handling   utility   known   as 
    MFMSG.COM.   This utility  will  allow  insertion of  any/all material 
    contained  in  the  these special  files directly   into   the message  
    base (if user has write access --  see NUKMD),   preserving the  stack 
    and RETurning (no warm boot)  to CP/M through NUBYE.  If you have such 
    a utility and it is not named MFMSG.COM,  place the proper name at the 
    label MSGFCB:  near the end of NUBYE. 

READLC EQU no           (MBBS, PBBS & Oxgate = NO)
LCDRV  EQU 'A'
LCUSR  EQU 14

       Set  READLC  to YES,  if your BBS program does NOT store  the  last 
    caller data directly into NUBYE.   In this case,  NUBYE will read  the 
    contents  of your LASTCALR file upon first warm boot to  CP/M.   After 
    that,  you  may see who is on your system with the WHOKEY  (^W).   For 
    those  systems  who  set  this NO, you may see the caller data via the 
    WHOKEY as soon as your BBS program has logged them into your system. 

       Set LCDRV (drive) and LCUSR (user area) so NUBYE will know where to 
    find your LASTCALR file if READLC is set NO.


DSPLC EQU no

       If you wish to display the current caller data via the WHOKEY (^W), 
    set this to NO. 


LCBUF EQU 78        (only if DSPLC is YES)

       Set  this  to the buffer size required for the LASTCALR data  (MBBS 
    uses 65 bytes, while PBBS, OxGate and Metal use 78 bytes).


DSPHED EQU no       (only if DSPLC is YES)

       If  you want a special header displayed above  the  current  caller 
    data,  set this YES.  The header shows you what each data entry stands  
    for and can be customized to suit your system at  the  LCHEAD:   label 
    (currently set to MBBS standards). 


WELFILE EQU NO
WELDRV  EQU 'A'
WELUSR  EQU 14

       Generally,  if you run only an RCP/M,  set this to yes and  specify 
    WELDRV  (drive)  and WELUSR (user area) for NUBYE to be able  to  find 
    this text file.   Upon carrier detect, NUBYE will display this WELCOME 
    file to the user.

       Normally,  WELFILE is set NO,  since most decent BBS's provide this 
    support already.


CLRSCR EQU no    -- set YES when NUBYE operating properly
CLRCH1 EQU 1AH
CLRCH2 EQU 0
CLRCH3 EQU 0
CLRCH4 EQU 0
CLRCH5 EQU 0
CLRCH6 EQU 0

       When you are satisfied that NUBYE is operating properly, set CLRSCR 
    to  YES  and  the crt will be cleared automatically between  calls  to 
    prevent  "character burn in".   While this equate is set NO,  you  may 
    clear the screen locally by hitting ^Z.

       Place   your  clear  screen  code  at  CLRCH1-CLRCH6   (six   bytes 
    available).  The majority of systems support 1AH for clear screen, but 
    change  to  suit.   Remember -- the clear screen code is used  whether 
    CLRSCR is YES or NO and all unused bytes must remain 0.

SHOSYS EQU no

       Although mainly for use when not operating a BBS (or if not running 
       a  .COM  file upon carrier detect),  this may be set to  YES  which 
       causes  NUBYE to display a special message line at  carrer  detect.  
       Normally, leave this set NO.
    
HITCR EQU no    (only if ASKNUL is NO) 
    
       If you have ASKNUL (below)  set to NO,  you may set this to YES and 
       cause NUBYE to force a user to hit a key before continuing --  this 
       rather  defeats the purpose of setting ASKNUL to NO for automation, 
       though...  Normally, leave this set to NO. 


ASKNUL EQU no           (MBBS, PBBS and others = NO)

       For those of you who have users ask "what are nulls" and you're not 
    too sure yourself,  here is the answer.  Nulls (NOP's) are simple wait 
    states  which provide enough delay so that users with  slow  computers 
    will  be able to see everything sent to them.   These delays are added 
    by your system immediately following transmission of a CR/LF (carriage 
    return/line  feed),  so  that a user's cursor has time  to  reach  the 
    lefthand  side  of  his/her  crt,  before more  characters  are  sent.  
    Normally,   the  first  indication  that  nulls  are  needed  is  when 
    characters start disappearing on the lefthand side of their crt.

       Many BBS systems currently available now provide the user a  simple 
    means  to  change  the  nulls setting.   The  new  NUBYE  incorporates 
    automatic  nulls default to the caller's modem speed (i.e.  300  =  1, 
    1200 = 5 and 2400 = 6/9/10 nulls) at carrier detect thus assuring most 
    users  of  logging on and not missing any characters from  the  start.   
    Only  the  VERY  slowest computers will need more than  the  automatic 
    default settings at 1200 and 2400 baud.

       If  your system provides a command option for user modification  of 
    nulls,   leave  this NO.   NUBYE will (upon carrier detect and if non-
    PBBS)  notify  the user   what  the nulls have automatically been  set  
    to,    also  notifying  that  user to change this at your BBS  command 
    prompt, if necessary. 

       Set  this to YES,  if you wish to continue asking your users to set 
    nulls before getting any further...


PRGRSS EQU YES      -- set NO when NUBYE operating properly

       This equate should be YES until NUBYE is operating properly.  While 
    debugging,  NUBYE will display modem commands,  result codes and other 
    helpful  information.   Once everything is debugged you won't need any 
    of this and you will get back some much needed TPA.


PRNTGB EQU no           (PBBS = NO)

       If you don't want NUBYE to say "Goodbye, call again..." when a user 
    logs off, set this to NO.


PRNTWB EQU NO

       Leave this NO,  unless you have an extremely slow system,  in which 
    case  NUBYE  will  print  "Booting CP/M..." on  warm boots.  Normally, 
    leave this set NO.


PWRQD EQU no

       Normally,  when running a BBS system,  this is left NO.  If you are 
    only  an RCP/M,  you may wish to have password entry to CP/M - if  so, 
    set  this  to YES.   When YES,  NUBYE will ask the user to  enter  the 
    password you selected at the label PASSWD:,  before allowing them into 
    CP/M.   Again,  (if you want this feature) set this YES if you are not 
    running a BBS system.   Note: If this is set YES and you *are* running
    a  BBS, NUBYE  will ask for an  entry password before running your BBS
    program.


    -------------------------------------
    SYSTEM AND HARDWARE DEPENDENT OPTIONS
    -------------------------------------


MHZ EQU 4

       Enter  your CPU's processing speed here -- NUBYE calculates all  of 
    its delays around this equate, so very important.


ECBFIX EQU no           (Kaypro 10 with Turbo ROM & Epson QX's = YES)
    
       If  your computer seems to go to "never-never land"  when  you  say 
    "BYE E"  following a cold boot (system reset), you should try this set 
    to  YES.   This cause the computer ports and modem to be reset  before 
    running your .COM file,  but slows down local entry.  Normally,  leave 
    this set NO. 
     

CLOSS EQU 1

       When NUBYE detects a carrier loss,  it will wait this many  seconds 
    before  hanging up the phone.   If you have "call waiting" options  on 
    your phone service,  you might want to set this to 2 or 3 seconds, but 
    the line is usually lost after about 1 second.   Normally,  leave this 
    set to 1 second. 


CTRLC EQU 'C'           (MBBS = 'C')  (PBBS = 'K')

       Most BBS systems are  written  to handle ^C's directly -- if  yours 
    does, you may leave CTRLC set to 'C'.  If your BBS  system  bombs  out
    when  the user hit's a ^C, the alternate  setting of CTRLC is normally
    to 'K'.


DOWNMIN EQU 2       (only used if CLOCK is YES)

       Set this to display the number of minutes your system will be going 
    down  when  you  hit  the ^O (i.e.  "Going  down  in  xx  minutes...", 
    beginning an automatic logoff process -- still gives the user time  to 
    log off manually.


LOSER EQU NO

       If everything seems fine until the first warm boot, then NUBYE just 
    kinda goes kaput -- you probably need to set this to YES.   If this is 
    the case,  your operating system is probably overwriting the BDOS jump 
    table  on every warm boot which effectively wipes out NUBYE.   To  get 
    around  this problem (after setting LOSER to YES),  you must find  the 
    CALL  to WARM BOOT in your BIOS and patch the proper values in at  the 
    NUBYE  labels  WBCALL and WMSTRT.   Call me if you have this and  need 
    help.

MOTOR EQU NO

       If you need to turn off/on your disk motors between calls, set this 
    YES  (most will leave this NO).   You will need to set the  additional 
    equates  DISK/DISKON/DISKOFF (not shown here) to match  your  system's 
    command  port and on/off commands.   Unless you are sure of what needs 
    to be done,  leave this one NO -- you will probably need to  customize 
    much  code to match your disk system,  as well as add necessary delays 
    needed for your drives to come up to speed, prior to being accessed.


CPM3   EQU no
POSPRO EQU no
PREPRO EQU no

       Set CPM3 to YES,  if operating CP/M 3 -- read the CPM3.DOC file for 
    POSPRO/PREPRO information.


    -------------
    FUNCTION KEYS
    -------------

FUNKEY EQU yes

       If you are really hard-pressed for TPA, set this NO -- side effect, 
    you  will  lose most of your special Sysop function  keys.   You  will 
    still  have  the bell toggle (^G) and the twit  key  (^N).   Normally, 
    leave this YES.


LEADIN EQU NO
LEADKY EQU '\'      (only used if LEADIN is YES)

       If  you  wish to use the special Sysop  function  keys,  but  still 
    retain  access  to  your single control characters (i.e.  you  run  an 
    editor/word  processor online with your user),  set LEADIN to YES  and 
    select  a seldom used character to be the leadin  key  (LEADKY).   You 
    will  then  have to press the LEADKY,  then the control key  below  to 
    access these functions (very useful if operating programs locally such 
    as WordStar while a user is logged on). 

BELLKEY EQU 'G'     -- (^G)  Toggle console bell on/off
TWITKEY EQU 'N'     -- (^N)  Disconnect user abruptly!

ANSKEY  EQU 'A'     -- (^A)  Force modem to answer while NUBYE waiting
BLNKKEY EQU 'B'     -- (^B)  Toggle remote on/off
WHLKEY  EQU 'E'     -- (^E)  Toggle WHEEL byte
LCKEY   EQU 'L'     -- (^L)  Last call key - returns to CP/M prompt after 
                               current user logs off.
SYSDKEY EQU 'O'     -- (^O)  Inform user "Going down in xx minutes..."
MSGKEY  EQU 'Q'     -- (^Q)  Inform user "Message from Sysop..."
TIMEKEY EQU 'T'     -- (^T)  Display (local) user's time-on-system
ULTKEY  EQU 'U'     -- (^U)  Grant current user unlimited time this session
WHOKEY  EQU 'W'     -- (^W)  Display current caller data
XITKEY  EQU 'X'     -- (^X)  Used to exit from "Message..." function
CLSKEY  EQU 'Z'     -- (^Z)  Clear screen

       These  functions are explained adequately in the NUBYExxx.ASM file.  
    Change  the characters to suit your requirements,  but use ONLY  upper 
    case letters for your substitutions.

       Note:   The 'T'  function serves a twin purpose.   Normally,   this 
    function key only displays a user's time-on-system.  If, however,  you 
    have AUTOSYS set to YES (for a fully self-automated part-time system), 
    you may override your hard-set ONHR by hitting this function key while 
    NUBYE is waiting to begin system operations (as based upon ONHR)   and 
    NUBYE  begins  answering the phone from that time.   Once  the  system 
    shuts down automatically,  your preset ONHR will cause NUBYE to  begin 
    again the next time cycle as normal. 



-------
GENERAL
-------


SETFLG EQU no       (only used if FUNKEY is YES)  (MBBS = NO) 

       Systems such as MBBS do not need/want the access bits to be toggled 
    with  the  ^B/^U functions.   If your system is now  supporting  these 
    special  user access bits and you wish to have NUBYE set certain  ones 
    selected  by you (see USRFLG below) when you use the ^B/^U  functions, 
    set  SETFLG  to  YES.   MBBS users should set this  NO  and  use  your 
    MBBSUSRC.COM utility for online user flag manipulations.


USRFLG EQU 11111111B     -- and SETFLG is YES
           ||||||||
           ||||||||         BIT   Used For          Status
           |||||||+--------- 0    System Access    (0 = no admittance)
           ||||||+---------- 1    BBS Access       (0 = CP/M only)
           |||||+----------- 2    Read Access      (0 = no message reading)
           ||||+------------ 3    Write Access     (0 = no message writing)
           |||+------------- 4    CP/M Access      (0 = no CP/M access)
           ||+-------------- 5    Download Access  (0 = no downloads)
           |+--------------- 6    Upload Access    (0 = no uploads)
           +---------------- 7    Privileged User  (0 = normal user)

       Set  the bits high or low (on/off) accoring to which flags you wish 
    to have toggled with the ^B/^U functions.   Note:  Once the flags  are 
    toggled with the ^U function, they will remain ON, so use care...


SHOWTLN EQU no 

       If set NO,  you save some code and the ^T function will display the 
    user's time-on-system as always:  "Minutes on: xx"

       If set YES, a bit more code is used to display:
                    "Minutes on: xx"   -- if special/unlimited time user
                    "Minutes left:xx"  -- if normal user

       Those of you using ZCMD23 (and later) have the option of displaying 
    a  users  time beside the normal system prompt,  so save some TPA  and 
    leave this one set NO.


------------------
CLOCK/TIME EQUATES
------------------


CLOCK EQU no 

       Set  this  to YES if you have installed a clock  routine  (normally 
    found  within the NU-CLOCK.LBR).   If you do not have a  clock,  leave 
    this set NO.


BCD2BIN EQU no      (only used if CLOCK is YES)
BIN2BCD EQU no      (only used is CLOCK is YES)

       Check  your particular clock code to see which routine is  required 
    and set them accordingly (look for a CALL BCDBIN,  or CALL BINBCD,  or 
    both).   These  allow  your clock routine to use NUBYE's internal  BCD 
    data to binary (& vice versa) conversion code.


UPDOUT EQU yes      (only used if CLOCK is YES)

       If,  after  running  NUBYE  with this set YES,  you  notice  slight 
    "hitches" after every CR/LF is sent out (during DIR's,  say), set this 
    equate to NO.  This will switch the update to take place only after an 
    incoming CR.  Keep in mind that updating this way may allow some users 
    to overstay their welcome (i.e. if you allow unlimited TYPE display, a 
    300  baud  user can really eat up system time on a long  file)  -- the 
    clock is only updated after receiving a CR from them.


TIMEON EQU yes      (may be used regardless of CLOCK setting)
MAXMIN EQU 45

      Set this to YES if you wish to have NUBYE monitor the user's time on 
    your system and log off automatically when MAXMIN is reached.   If you 
    do not have a clock (and CLOCK is NO),  you may still set this to  YES 
    and  MAXMIN to 45 minutes -- also,  in NUKMD set TIMEON to YES  -- and 
    NUBYE  will simulate a clock,  preventing users from downloading  more 
    than  45  minutes  worth of files (they will still be able  to  wander 
    aimlessly for as long as they wish, though -- get a clock).


TOVALUE EQU 4

       Set  this to the number of minutes NUBYE will allow your system  to 
    be  waiting for the user to hit a key.   Once this number  of  minutes 
    goes  by  with no user input,  NUBYE will announce "Input timed  out", 
    hang up and reset for the next call.   Comes in handy when your  users 
    take naps while online...

       NUBYE  will alert the user at 1 minute intervals during any  period 
    of inactivity.   Once a character is received, all counters are reset.  
    Private  systems may want this set to 255,  which effectively disables 
    the timeout function.


PRNTOS EQU no           (only used if TIMEON is YES)

       When  this is set YES,  NUBYE will tell the user "Minutes  on:  xx" 
    after each warm boot.   Useful,  if not using ZCMD28 (or later), since 
    it helps them keep track of time.


    --------------------------
    AUTOMATIC STARTUP/SHUTDOWN
    --------------------------

AUTOSYS EQU no      (only used if CLOCK is YES)

       Set  this  YES  if you operate your board for  only  certain  hours 
    during each day.   Run NUBYE,  walk away,  and it will patiently await 
    the  ONHR  to  start  answering the phone (if you  want  it  to  start 
    answering  as soon as you run NUBYE,  hit the ^T key,  which  bypasses 
    your  initial  ONHR setting during any 24-hour  period).   NUBYE  will 
    continue to answer the phone until the OFFHR arrives.   If someone  is 
    online  within  DOWNMIN  of OFFHR,  NUBYE automatically  triggers  the 
    "Going  down in xx minutes...".   This feature is fully automatic  and 
    should prove to be one of the nicest that have appeared for some time.  
    
       With  this  feature,  you may run a part-time board,   or  business 
    system  and  NUBYE  will begin answering the phone at  ONHR  and  stop 
    answering  the phone at OFFHR --  it continues this  cycle  *forever*, 
    until you exit NUBYE via ^C (or if you have set DROPLOC to YES)! 
    
       Don't forget, you DO need a clock! 


ONHR  EQU 19            (19 = 7 PM  --  Start answering the phone)
OFFHR EQU 08            (08 = 8 AM  --  Stop answering the phone)

       Set  ONHR for the time you wish NUBYE to begin answering the  phone 
    and OFFHR for the time you wish it to stop.  Note:  This is based upon 
    a 24-hour clock (i.e. 19 = 7 PM, 08 = 8 AM).


DROPLOC EQU no      (only used if AUTOSYS is YES)

       Set this YES,  only if you wish NUBYE to drop into local mode, once 
    OFFHR  has been reached.   When this is left NO,  you could  leave  an 
    office  system  running throughout the weekend,  during the  week,  or 
    whenever, fully unattended.


RSPEED EQU no       (only used if CLOCK is YES)
BEGHR  EQU 19
ENDHR  EQU 23
SPEED  EQU 5

       If you wish to restrict certain baud rate users from accessing your 
    system  during  "prime time" hours,  set RSPEED to YES  (must  have  a 
    clock).  Set SPEED to the lowest baud rate allowed access beginning at 
    BEGHR  and ending at ENDHR -- all baud rates allowed during all  other 
    hours.   Note:  This is based upon a 24-hour clock (i.e. 19 = 7 PM, 08 
    = 8 AM).  You need a clock for this feature, too!


    -----------
    CCP OPTIONS
    -----------


ZCPR2 EQU no

       Set  this  to YES when using any CCP replacement that uses the  low 
    memory  WHEEL  byte (i.e.  ZCMD/ZCPR/NZCPR and others).   Be  sure  to 
    specify  the same WHEEL byte location (normally 3EH) in all  utilities 
    you keep online or you might get some rude surprises...


ZCPR3 EQU no

       ZCPR3  is an overkill for an RCP/M system (many systems don't  even 
    have  the TPA for taking advantage of even a third of  its  features), 
    but  if  you  decide  to install it,  set this to  YES.   MAC  (or  an 
    equivalent) will be needed to assemble NUBYE, using Z3BASE as MACLIB.


USEZCPR EQU no          (NO if using ZCMD/ZCPRx/NZCPR, etc)

       If ZCPR2 and ZCPR3 are set NO,  leave this NO.  NZCPR/ZCMD/ZCPR all 
    use  bytes (at 3DH/3EH/3FH) to store maximum drive,  wheel status  and 
    maximum  user area.   Some BBS systems poke these low memory bytes  to 
    reset them (for Sysops, etc...) -- other BBS systems poke the bytes in 
    NUBYE to do the same things.   This gives you the option of where  you 
    want to poke things.   MBBS  and OxGate systems need to leave this set 
    NO, while RBBS may be able to set it YES.


CHEKDU EQU no          (NO if using ZCMD/ZCPRx/NZCPR, etc)

       Leave  this  NO if you're using NZCPR/ZCMD/ZCPR (or similar)  which 
    will police a user's maximum drive/user area boundaries.  If ZCPR2 and 
    ZCPR3  are  both  NO,  set CHEKDU to YES and NUBYE  will  police  your 
    system.   Setting this NO will save TPA.   ZCPR3.FIX explains  patches 
    required for proper operation with CHEKDU NO.


MSPEED  EQU 3CH
MAXDRIV EQU 3DH
WHEEL   EQU 3EF
MAXUSER EQU 3FH

       These  are the low memory bytes used by NUBYE,  NUKMD and  numerous 
    RCP/M  utilities - make sure all your utilities are equated the  same.  
    MSPEED holds the user's baud rate;  MAXDRIV/MAXUSER contain the user's 
    maximum drive/user access.


MAXDRV EQU 'B'
MAXUSR EQU 6

       If  USEZCPR is NO (and you aren't operating MBBS - it ignores these 
    two  settings),  set these two equates for a users maximum  accessible 
    drive (MAXDRV) and user (MAXUSR) area.   NUBYE will not let your users 
    beyond this point.


SYSDRV EQU 'M'
SYSUSR EQU 15

       Set  these  two equates for YOUR local maximum drive  (SYSDRV)  and 
    user  (SYSUSR) areas -- very important to give yourself  full  access.  
    The ^B function also uses these, so set them properly.


CHGPATH EQU no          (NO if ZCMD/NZCPR CCP replacement used)
EXTPATH EQU 40H         (only used if CHGPATH is YES)
Z3OPT   EQU no

       ZCMD/NZCPR use paths *internal*  to themselves, so you should leave 
    CHGPATH  set to NO when using this type of CCP replacement and  ignore 
    the next notes. 
    
       Make certain that your ZCPRx uses the same memory buffer as 
    that designated at EXTPATH (i.e. 40H).
    
       ZCPRx  users  can  set the  search  path for .COM  files  with  the 
    equates PATHDRx and PATHUSx (x = 1-5).

       Unless you wish to designate more than the standard 2 search  paths 
    (i.e.   ZCPR3   folks,   mainly),  leave Z3OPT set to  NO  and  define 
    PATHDR/PATHUS 1 & 2. 

       For  those  of  you wishing to designate more  than  the  normal  2  
    paths, set Z3OPT to YES and define PATHDR/PATHUS 1-5. 

       If  the WHEEL byte is on (Sysop online),  *all*   drive/user  areas 
    designated will be searched.   For normal users,  only the PATHDR1/US1 
    area will be searched.  Naturally, the default drive/user area will be 
    searched first at all times. 



                         ---------------------------
                         FINAL NOTES BEFORE ASSEMBLY
                         ---------------------------

       If  you've managed to stick it through this far,  you're doing  ok!  
    Look  in  the  NUBY-INS.LBR  for a file which  matches  your  computer 
    system.   You may have to customize/modify an existing insert to match 
    your hardware,  but feel free to contact one of the systems listed  in 
    the  NUBYExxx.ASM file if you have difficulty finding/writing one  for 
    your system.   Using an editor/word processor,  search for the section 
    marked  "++++  Install your I/O port insert here ++++"  -- insert  the 
    file you just found at this point.

       Next (if you have a clock),  look in the NU-CLOCK.LBR for an insert 
    which matches your clock requirments -- again, call one of the systems 
    listed  in the NUBYExxx.ASM file if you have trouble.   Search for the 
    section  marked "++++ Install your TIME code here ++++" -- insert  the 
    file you just found at this point.

       Well,  that's about it -- grit your teeth and start your assembler!  
    Hopefully,  it  won't spit back any assembly errors.   Finish off  the 
    .HEX  file with MLOAD (or similar) and you have a ready-to-run  NUBYE!  
    Begin  testing  this  as  thoroughly  as  possible  and  once   you've 
    determined things are as they should be, start spreading the word that 
    there's a "new kid on the block"!

                                        - Tom Brady
 
   