home *** CD-ROM | disk | FTP | other *** search
/ Oakland CPM Archive / oakcpm.iso / cpmug / cpmug085.ark / BYE79.DOC < prev    next >
Encoding:
Text File  |  1984-04-29  |  14.1 KB  |  353 lines

  1. 07/25/82: Created file BYE79.DOC mostly from old versions of BYE
  2.     documentation: BYE67.DOC, BYE77.DOC, BYE78DIF.DOC, and
  3.     BYEWARN.DOC.  Many comments are by Thom Quick.
  4.                 Jim Mills, CP/M UG Reviewer
  5.  
  6.  
  7. NOTE:    The major enhancement of version 6.7 of BYE is that a single
  8.     source file now contains conditional assemblies to control
  9.     either PMMI or D C Hayes modem cards.  Otherwise, this doc-
  10.     umentation is essentially the same as that for version 6.3,
  11.     with the addition of some minor fixes and improvements.
  12.  
  13.  
  14.                 BYE67.ASM DOCUMENTATION
  15.  
  16.  
  17.  
  18.     The BYE program for PMMI and D C Hayes modems has undergone three
  19. significant revisions in recent months, and many features and options
  20. have been added.  This documentation is intended as a guide for sorting
  21. through the many additional items.
  22.     Most of the new features have been added via conditional assembly,
  23. thereby allowing the program to accomodate users with varying memory re-
  24. quirements.
  25.     Note that not all combinations of conditional assembly have been
  26. tested, so be careful!
  27.  
  28.  
  29.  
  30.  
  31.               DOCUMENTATION OF REVISION 6
  32.               ===========================
  33.  
  34. The following features have been added to revision 6:
  35.  
  36. 1) Timed logout-  This feature allows your system to disconnect
  37.    after a pre-specified time when there is no input from the remote
  38.    user.
  39.     ==> Set "TIMEOUT" to "true".
  40.     ==> Set "TOVALUE" to the number of minutes to wait before
  41.         disconnecting.
  42.  
  43.    This feature requires that timing now be done in software, instead of
  44.    using the PMMI timing circuitry, which is tied up with baud rate gen-
  45.    eration when the system is in use.  Therefore, you must set the equate
  46.    "FASTCLK" to true if you are running a 4mhz system, and to false if
  47.    you are using 2Mhz.    You must do this even if you don't use the timed
  48.    logout feature.
  49.  
  50. 2) Autoload- Setting "COMFILE" to true causes the bye program to auto-
  51.    matically load and execute a machine language program from the disk.
  52.    This is useful for remote bulletin-board systems, remote query and
  53.    data entry, etc.  If you are using cp/m 2.x (equate "CPM2" set true),
  54.    you must specify which user number to load this file from.  This is
  55.    done by setting the equate "COMUSR".  Note that this user number will
  56.    also be the one under which the autoload program is executed.
  57.  
  58.    The loaded program can prevent the remote user from re-booting the
  59.    system by changing the byte at 0 (jmp instruction) to a call.  When
  60.    this is done, the system will trap control-c from the remote user
  61.    (changing the character to a null), and a branch to location 0 (warm-
  62.    boot) will terminate the session, as if "bye" had been typed by the
  63.    user at cp/m command level.    This allows the autoload program to end
  64.    the session by merely branching to location 0.  
  65.  
  66.    If it is necessary to give the user full control of cp/m, the auto-
  67.    load program must replace the call at zero with a jump.  In this case,
  68.    control-c will no longer be trapped, and "jmp 0" will warm-boot the
  69.    system.
  70.  
  71.    NOTE:  The system operator can answer an incoming phone call in
  72.       either of two ways:
  73.  
  74.         A>BYE /C    ;this form causes the bye program to answer the
  75.              phone, prompt the user for nulls, then load
  76.              and run the autoload program.
  77.  
  78.         A>BYE /A    ;this form causes the program to answer the
  79.              phone, then boot to cp/m command level.
  80.  
  81.      Note that either method will, upon termination of the session,
  82.      re-load the autoload program before accepting another call.
  83.  
  84. 3)  User and drive number verification- The bye program will now
  85.     validate the logged-in drive, and, if it exceeds the value set
  86.     by the equate, "MAX$DRIVE", the system will reset the logged-in
  87.     drive to 0 and perform a warm-boot.
  88.  
  89.     If you are using cp/m 2.x ("CPM2" equate set to true), the same
  90.     verification will be done for the logged-in user number.  The
  91.     equate in this case is the variable "MAX$USER", which should be
  92.     set to 0 for cpm 1.x.
  93.  
  94. 4)  Special function keys- You can assign any three key-codes on the local 
  95.     keyboard for the following special functions (Note that you should also 
  96.     select the DUAL$IO mode along with these options):
  97.  
  98.     "TWITKEY"  - This key immediately logs out a user.  This can
  99.              be useful to remove system crashers, "explorers",
  100.              etc. from the system.
  101.  
  102.     "MSGKEY"   - This key prints the message: "MESSAGE FROM OPERATOR:",
  103.                      which can be used to announce operator presence, prior 
  104.                      to typing a message to the remote user.
  105.  
  106.     "SYSDKEY"  - This key prints the message: "SYSTEM DOWN IN 5 
  107.                      MINUTES", which is handy when you want to drop a hint 
  108.                      to a caller who has worn out his welcome.  (or just 
  109.                      when you want to politely get the system back for 
  110.                      yourself).
  111.  
  112.     Note that the conditional assembly for these keys is set by the
  113.     equate "FKEYS".  The key-codes can be individually changed.
  114.  
  115. 5)  Decimal user logs - If you use the USRLOG functions (see revision 5 
  116.     section of this documentation file), setting the "DECIMAL" equate to 
  117.     true provides a decimal printout of the user log values, instead of the 
  118.     default hexadecimal printout.
  119.  
  120. 6)  Lower case checking - By setting the "CK$LWC" equate to true, the user 
  121.     will be asked at sign-on if his terminal can display lower case.  If 
  122.     the user responds with "N", all output will be converted to upper case 
  123.     before transmission.
  124.  
  125. 7)  If you have an IMSAI (or any computer with an input port set by
  126.     switches), setting the "IMSAI" equate to true provides the following
  127.     capablities:
  128.  
  129.     switch       function
  130.       0        turns on the hardcopy log ... this echoes remote
  131.             input (not output!) onto the printer.  This provides
  132.             a hardcopy logging function with minimal amount
  133.             of printout..i.e., only the users' input is echoed.
  134.  
  135.       1        sets up "password mode"...when this switch is up, any-
  136.             one trying to log onto the system must provide a pass-
  137.             word.  This allows you to reserve the system at times
  138.             for special callers.  Note that the "PWRQD" equate
  139.             must be set to true for this key to have any affect.
  140.  
  141.       2        blacks out the remote user...this is useful when
  142.             you need to enter a password into the machine that
  143.             you'd rather the remote user not see. Characters
  144.             echo onto the local terminal, but are not sent to
  145.             the remote user. Note that the equate "DUAL$IO", which
  146.             allows the local terminal to be functional, must be
  147.             set to true for this key to have any effect.
  148.  
  149.       3        enables the FKEY's, when the "FKEY" equate is set to
  150.             true.  Using this switch, the special function keys
  151.             can be used normally when the switch is off, and
  152.             as function keys when the switch is up.
  153.  
  154.    Also: the user log (if USRLOG is set to true) will be displayed
  155.    on the front panel LED display.
  156.  
  157.    The port address of the front panel I/O port can be changed using the
  158.    "SENSE" equate.  It is initially set up for the IMSAI addressing, which
  159.    is port 0FFH.
  160.  
  161. 8) The console status routine now checks the overrun and framing error
  162.    bits of the PMMI modem chip, and if either of these bits is set, the
  163.    character in the modem is cleared.  Thanks to Bruce Ratoff who used
  164.    this idea in his DC Hayes version of the bye program.
  165.  
  166. 9) Since the WELCOME file may reside on a different user number than the
  167.    autoload program (if any), the WELUSR equate has been added to indicate
  168.    the user number under which WELCOME may be found.  Note that if the
  169.    COMFILE option is not also used, the caller will receive control of the
  170.    system under user number WELUSR.
  171.  
  172. Credits: (version 6.3)
  173.  
  174. Dave Hardy, who implemented the special function keys, and IMSAI functions
  175. for the Technical CBBS, Dearborn, Mich (313-846-6127 24Hr).
  176.  
  177. Bruce Ratoff, who provided a lot of this stuff in his DCHBYE54, which I
  178. lifted and added to the PMMI version.
  179.  
  180. Keith Petersen, who provided the ideas and suggestions.
  181.  
  182.                    ====>Ron Fowler
  183.                     Sept 24, 1980
  184.  
  185. Credits: (version 6.7)
  186.  
  187. Dave Kozinn, who had the time and patience to merge the D C Hayes code
  188. into PMMIBY63, creating (at long last) an "universal" BYE.
  189.  
  190.                    ====>Bruce Ratoff
  191.                     Feb 17, 1981
  192.  
  193.  
  194.            DOCUMENTATION OF REVISION 5
  195.            ===========================
  196.         PMMIBYE5.DOC    (as of 7/20/80)
  197.  
  198.     The PMMIBYE5.ASM program is out for distribution, but it has not been 
  199. thoroughly tested in all of the possible modes of operation.  
  200.     (Please note that version 5.4 is substantially longer than previous 
  201. PMMIBYE versions.  Because of the great number of conditional switches, the 
  202. program could require as many as 1060 bytes of RAM, or it could be smaller 
  203. than the 900 bytes used by the original PMMIBYE.  It all depends on the way 
  204. you set it up.)
  205.  
  206.    Basically, several new conditional assembly routines have been added to 
  207. allow user selection at time of assembly of the following:
  208.      1. Password access
  209.      2. User log (counts number of system callers)
  210.      3. Memory-mapped console I/O
  211.    Also added to V5.4:
  212.      1. 710 Baud option for PMMI modem
  213.      2. Modifications to AUTO-ANSWER routines
  214.      3. "/R" option to allow reset of user log counters
  215.  
  216.    Password access was made conditional to allow use with systems that offer 
  217. unrestricted access.
  218.    The user log was added to allow the system operators to keep track of the 
  219. number of people who called the system.  In addition, it can also count the 
  220. number of unsuccessful log-ons (i.e. didn't know password) and the number of 
  221. voice calls, and conditionally display both numbers on the system console 
  222. when the program is exited with a control-C from the system console.  The 
  223. counters can be initialized with the "/R" option to all zeroes, or preset by 
  224. using DDT, or SID.  The number of successful log-ons is also conditionally 
  225. output to port 255 (0FFH) for display on the computer's front panel.
  226.    The memory-mapped I/O conditionals have been added to allow use of the 
  227. serial I/O port on the Morrow's 2D controller board as the system console; 
  228. however, the routines can be used with any memory-mapped system.
  229.    The 710 Baud option was added for "short-haul" callers, and because 
  230. operation at 710 Baud with the PMMI modem is "iffy" at best, it will 
  231. probably be of very little use.
  232.    The AUTO-ANSWER routines were modified to allow more dependable ringback 
  233. operation.  Unfortunately, the ringing signal at the caller's end of the 
  234. phone line does not always correspond exactly with the ringing signal at the 
  235. system's end.  Although a system-end ring does occur sometime during the 
  236. caller's ring cycle (ring-no ring), it is possible for the system to receive 
  237. no or 2 rings in the time that the caller thinks just one ring has occurred 
  238. (The DIAL program is notorious for this).  The solution chosen for this 
  239. problem was to check for one or two rings before call-back.  This would 
  240. allow for the "phase" difference of the caller-system ring signals.  This 
  241. solution also means that the phone must ring at least three times before the 
  242. system will assume that the call is voice, and is not to be answered.  The 
  243. advantage of this arrangement is that it is virtually impossible for the 
  244. computer to "miss" a call that is intended for it.
  245.  
  246.             Dave Hardy
  247.  
  248.  
  249.  
  250.  
  251.  
  252. BYE77.ASM DOC
  253.  
  254. BYE77.ASM incorporate into one version the features made available
  255. in Vers 76,76B and adds equates for the Western Digital 8250 Async
  256. Comm Element.  This should make the BYE program compatible with
  257. most Z80, 8080A, and 8085 systems that use INTEL 8251 or WD8250
  258. USART/ACE programable communications devices.
  259.  
  260. CRC'S for the files are:
  261.  
  262. BYE76.ASM    ORIGINAL INPUT    80 E2
  263. BYE77.ASM    ORIGINAL    4D 52
  264. BYE77.AQM    ORIGINAL SQ    CE BA
  265. BYE77.DIF            1E 00
  266. BYE77.DQF            31 4B
  267. BYE77.ASM    SSED OUTPUT    74 C8
  268.  
  269. Thom Quick, 312-887-5406(w)
  270.  
  271.  
  272.  
  273. BYE78DIF.DOC
  274.  
  275. Paul Traina has provided us with BYE78.ASM. In order to take advantage
  276. of DIF/SSED I have created two dif files that should make conversion
  277. or upgrade to this SUPER version easier. The two dif files are:
  278.         
  279.  
  280.         1) BYE76/78.DIF
  281.  
  282.         2) BYE77/78.DIF
  283.  
  284. It should be noted that if the base input file was created with DIF.com;
  285. then to arrive at an original equivilent (crck's equal) of bye78.asm,
  286. you will have to use DU.COM to locate the last block of the last extent,
  287. and pad/fill it with " 1A1A1A1A1A1A.... " .
  288.  
  289. I have tried this and it works. Relevant crck'c are:
  290.  
  291.     BYE76.ASM    ORIGINAL INPUT        80 E2
  292.     BYE77.ASM    ORIGINAL INPUT        4D 52
  293.     
  294.     BYE77.DIF                1E 00
  295.     BYE76/78.DIF                8A A6
  296.     BYE77/78.DIF                80 45
  297.   
  298.     BYE78.AQM    ORIGINAL        5B DB
  299.     BYE78.ASM    ORIGINAL        E6 56
  300.  
  301.     BYE78.ASD    BYE76/78 & BYE77/78.DIF
  302.             SSED DERIVED        A9 F5         
  303.  
  304.  
  305. (Note the use of the "D" in the extent of the derived .ASM file
  306. it would be nice if we could have an exchange standard to 
  307. identify original vs derived files.)
  308.  
  309. Thom Quick 312-887-2334 (w) 0800-1730 CST
  310.  
  311.  
  312.  
  313.  
  314. The Bye programs have a note that I included on the polarity
  315. of the jump instructions after an IN from a port.  IF problems
  316. exist in the execution of the program, you should confirm that
  317. the logic for your particular UART/USART/ACE is correctly 
  318. reflected. For example in the ringwt routine:
  319.  
  320.  
  321.     
  322. RINGW2    EQU    $+OFFSET
  323.     IN    RPORT    ;GET THE STATUS
  324.     ANI    P2RDET    ;RINGING?
  325.     JZ    RINGWT    ;NO, WAIT
  326.  
  327. THE 'JZ' MAY BE REPLACED WITH A 'JNZ' TO REFLECT THE USART/ACE
  328. IMPLEMENTATION. 
  329.  
  330. Check your system documentation to determine the correct
  331. logic.  Again this applies only to conditional jumps or 
  332. calls after an ' IN ' from a port...
  333.  
  334. Thom Quick
  335.       
  336.  
  337.  
  338.  
  339. BYE79.ASM notes,CP/M UG Vol. 85 (07/25/82):
  340.  
  341. Various files referred to in the above documentation do not appear
  342. on CP/M UG volume 85.  These are mostly older versions -- or .DIF
  343. (difference) files meant for use with the DIF and SSED utilities
  344. which allow upgrading to a new version from an old "known" version
  345. of the file.  Studying the comments and equates at the beginning of
  346. the BYE79.ASM file, and after the beginning of the "relocated code"
  347. will be of great benefit in understanding this program, and how it may
  348. be made to interact with other programs.
  349.  
  350.                     Jim Mills, CP/M UG Reviewer
  351.  
  352.  
  353.