home *** CD-ROM | disk | FTP | other *** search
/ CP/M / CPM_CDROM.iso / jsage / znode3 / tcj / tcj40.wz / TCJ40.WS
Encoding:
Text File  |  1993-06-07  |  28.9 KB  |  518 lines

  1.                                   TCJ40
  2.  
  3. > [Note to Art Carlson and others reading this file: The lines
  4. > beginning with a control-F are formatting commands for my PMATE text
  5. > editor.  They should be dropped from the text after the text has
  6. > been reformatted for publication.  PMATE handles formatting in a
  7. > WordStar-compatible way except for hyphens at line breaks (they
  8. > have their high bit set, just as soft returns do).  For readers of
  9. > this file who want to print it, running the text through one of the
  10. > high bit filters should fix those lines up.]
  11.  
  12. R76;set right margin to 76
  13.  
  14.  
  15.    For some time I have been planning to discuss issues connected withì
  16. setting up a remote access system (RAS), such as a Z-Node.  There is still aì
  17. great need for new nodes, and I think there are quite a few people toyingì
  18. with the idea of setting one up; they just aren't sure they know how to doì
  19. it.
  20.  
  21.    In fact, I am going to take up only a very small part of this questionì
  22. here -- and not even the part that would really help someone implement aì
  23. system.  After thinking about it, I realized that I am not the best personì
  24. to talk about the procedures.  I may not even be a good person.  In fact,ì
  25. I'm not even sure that I know any longer how to do it!
  26.  
  27.    To solve this problem, I am going to try to take the approach I have beenì
  28. taking more and more recently -- recruit someone else to write a TCJì
  29. article.  Specifically, I hope to get the sysop(s) of one or more of theì
  30. newer nodes to document the procedures they went through.  After all, theyì
  31. are the real experts on the subject.  My discussion here will instead coverì
  32. only theoretical issues.  I hope that even those who have no interest inì
  33. setting up their own RAS will find such a discussion interesting.
  34.  
  35.    As usual, before I get to the main technical topic, I have a number ofì
  36. other matters to cover first.  Here is my list for this issue: Z-Nodeì
  37. update, Z-Helpers, GEnie, and BDS C.
  38.  
  39.  
  40.                                Z-Node Update
  41.  
  42.    It has been three issues since the last update on the Z-Node roster, andì
  43. there have been quite a few changes.  The complete list is reproduced inì
  44. Listing 1.  Many inactive nodes have been dropped, and four new nodes haveì
  45. been added.
  46.  
  47.    Chris McEwen's Socrates board in New Jersey is now Z-Node #32.  Theì
  48. system is running under NZCOM on a Xerox 16/8 computer.  Besides offeringì
  49. general support to the 8-bit community, Chris is a special resource forì
  50. owners of Xerox computers.  Unfortunately, the recent changes in the Newarkì
  51. outdial of PC-Pursuit have cut ZN32 off from a lot of its regular callers. ì
  52. As a result, Chris has switched to an alternative low-cost data transferì
  53. service called StarLink.
  54.  
  55.    Briefly, StarLink provides much wider geographical access and fullì
  56. support for 2400 bps connections without the packet-switching delaysì
  57. encountered on PCP.  It is more expensive than PCP at higher monthly usageì
  58. rates but cheaper at lower usage levels.  In the future we want to includeì
  59. in the Z-Node roster the StarLink addresses as well as PCP outdials.  I'dì
  60. appreciate it if anyone with such information would could get it to me usingì
  61. any of the methods indicated in the sidebar to my column.
  62.  
  63.    The NYOUG (New York Osborne User Group) Fog #15 node (sysop Livingstonì
  64. Hinckley) has become a Z-Node as well, with the same number 15.  The systemì
  65. is running on an Osborne Executive (CP/M-Plus) with the Z3PLUS version of Z-System.  It is, thus, the first Z-Node -- though, I believe, not the firstì
  66. RAS -- to run under Z3PLUS.  The board supports data rates up to 9600 bpsì
  67. using a USR Courier HST modem.
  68.  
  69.    Dave Trainor in Cincinnati, Ohio, has signed up as Z-Node #7.  His NZCOM-based system has many of the Z-System tools, such as VLU and VFILER,ì
  70. available for use on-line.
  71.  
  72.    Greg Miner established a new frontier for Z-System as he became Z-Nodeì
  73. #11 in Port Williams, Nova Scotia.  Greg is fairly new to the Z-System butì
  74. has already made a significant contribution as a programmer.  He realizedì
  75. that on properly aliased Z-Systems, a "DIR *.COM" command does not reallyì
  76. indicate to the user the commands that are available.  So, he wrote ADIRì
  77. (Alias DIRectory).  It examines the ALIAS.CMD file, figures out the names ofì
  78. all the ARUNZ aliases (allowing for the multiply named scripts), andì
  79. displays a sorted listing of them.  A very fine program!
  80.  
  81.    Finally, Ludo VanHemelryck, with assistance from Michael Broschat, willì
  82. be setting up a new Z-Node in Seattle to replace Norm Gregory's system,ì
  83. which has gone over to MS-DOS.  Recently, while on a business trip toì
  84. Portland, Oregon, I had the pleasure of meeting Ludo and Michael (frankly, Iì
  85. was rather flattered that they were willing to drive all the way down fromì
  86. Seattle), and I think they will do a lot to boost Z-System interest in theì
  87. Seattle area.
  88.  
  89.  
  90. ============================================================================
  91. R85;set right margin to 85
  92.  
  93. Listing 1.  Z-Node List
  94.  
  95.                               Z-Node List #53
  96.                      Sorted by State/Area Code/Exchange
  97.  
  98.  
  99. Revised Z-Node list as of May 30, 1989.  An "R" in the left column
  100. indicates a node that has registered with Z Systems Associates.  Report any
  101. changes or corrections to Z-Node Central (#1) or to Jay Sage at Z-Node #3 in
  102. Boston (or by mail to 1435 Centre St., Newton Centre, MA 02159-2469).
  103.  
  104.  
  105.   NODE      SYSOP         CITY        STATE  ZIP    RAS Phone      PCP     Verified
  106.  
  107. Z-Node Central
  108. --------------
  109.  
  110. R   1 Richard Jacobson  Chicago         IL  60606  312/649-1730  ILCHI/24  05/20/89
  111. R   1 Richard Jacobson  Chicago         IL  60606  312/664-17330 ILCHI/24  05/20/89
  112.  
  113. Satellite Z-Nodes:
  114. ------------------
  115.  
  116. R   2 Al Hawley         Los Angeles     CA  90056  213/670-9465  CALAN/24  05/20/89
  117. R   9 Roger Warren      San Diego       CA  92109  619/270-3148  CASDI/24  02/01/89
  118. R  66 Dave Vanhorn      Costa Mesa      CA  92696  714/546-5407  CASAN/12  10/30/88
  119. R  81 Robert Cooper     Lancaster       CA  93535  805/949-6404            12/29/88
  120. R  36 Richard Mead      Pasadena        CA  91105  818/799-1632            11/01/88
  121.  
  122. R  17 Bill Biersdorf    Tampa        FL  33618  813-961-5747  FLTAM/24   (down)
  123.       (node 17 expected to be up beginning of summer)
  124.  
  125. R   3 Jay Sage          Newton Centre   MA  02159  617/965-7259  MABOS/24  05/20/89
  126.  
  127. R  32 Chris McEwen    Plainfield    NJ  07080  201-754-9067  NJNEW/24  05/20/89
  128.  
  129. R  15 Liv Hinckley    Manhattan    NY  10129  212-489-7370  NYNYO/24  05/20/89
  130.  
  131. R   7 Dave Trainor    Cincinnati    OH  45236  513-791-0401            05/20/89
  132.  
  133. R  33 Jim Sands         Enid            OK  73703  405/237-9282           11/01/88
  134. R  58 Kent R. Mason     Oklahoma City   OK  73107  405/943-8638
  135.  
  136. R   4 Ken Jones         Salem           OR  97305  503/370-7655            09/15/88
  137.    60 Bob Peddicord     Selma           OR  97538  503/597-2852            11/01/88
  138. R   8 Ben Grey          Portland        OR  97229  503/644-4621  ORPOR/12  05/20/89
  139.  
  140. R   6 Robert Dean       Drexel Hill     PA  19026  215-623-4040  PAPHI/24  05/20/89
  141. R  38 Robert Paddock    Franklin        PA  16323  814/437-5647            11/01/88
  142.  
  143. R  77 Pat Price         Austin          TX  78745  512/444-8691            10/31/88
  144. R  45 Robert K. Reid    Houston         TX  77088  713/937-8886  TXHOU/24  05/20/89
  145.  
  146.    10 Ludo VanHemelryck    Seattle        WA  (new node being set up)
  147. R  78 Gar K. Nelson     Olympia         WA  98502  206/943-4842            09/10/88
  148.  
  149. R  65 Barron McIntire   Cheyenne        WY  82007  307/638-1917            12/12/88
  150.  
  151. R   5 Christian Poirier Montreal Quebec   H1G 5G5 CANADA  514/324-9031     12/10/88
  152. R  40 Terry Smythe  Winnipeg    Manitoba  R3N 0T2 CANADA  204/832-4593     11/01/88
  153.  
  154. R  62 Lindsay Allen  Perth, Western AUSTRALIA 6153       61-9-450-0200     12/21/88
  155.    50 Mark Little    Alice Springs, N.T. AUSTRALIA 5750  61-089-528-852
  156.  
  157. R76;set right margin back to 76
  158. ============================================================================
  159.  
  160.  
  161.                                  Z-Helpers
  162.  
  163.    In the early days, getting ZCPR3 installed on a computer was a veryì
  164. arcane process, beyond the capability of most potential users.  Echelon hadì
  165. the wisdom to compile a list of people all over the country (actually aroundì
  166. the world) who were willing to help other users get through the process. ì
  167. These people were called Z-Helpers.
  168.  
  169.    Today, thanks to NZCOM and Z3PLUS, getting the Z-System installed is veryì
  170. easy.  It's even easy to get started using it, since it can be run just likeì
  171. CP/M.  Taking full advantage of its capabilities, however, is another story. ì
  172. With a richness of function comparable to that of Unix, the Z-System can beì
  173. daunting, but when one remains ignorant of its capabilities, one misses outì
  174. on a lot of its utility and fun.
  175.  
  176.    In looking over the Z-Helper list that is posted on the Z-Nodes andì
  177. included with the NZCOM and Z3PLUS packages, I realized that this list hasì
  178. not been updated for many, many years, and most of its information isì
  179. obsolete.  It's high time that the list be rebuilt!
  180.  
  181.    My plan is to discard the current list and start over, keeping only theì
  182. few people I know to be active still.  I would like to expand that listì
  183. greatly.  If you feel that you could be of some assistance to new Z-Systemì
  184. users, please send me a post card or short note with the followingì
  185. information: name and address, voice phone number and hours, EMAILì
  186. addresses, if any (BBSs, GEnie, Compuserve, ARPAnet, BITNET, etc.), specialì
  187. areas of expertise, if any (specific computers, Z3PLUS).  Remember, you doì
  188. not have to be a Z-System know-it-all -- none of us is.  Willingness andì
  189. eagerness to help are the most important qualifications of a Z-Helper, andì
  190. by working with others, you will end up learning a lot yourself.
  191.  
  192.  
  193.                            GEnie CP/M Roundtable
  194.  
  195.    Some of you may have noticed the change in the sidebar to my articleì
  196. listing a GEnie mailbox for me (JAY.SAGE).  GEnie has been making aì
  197. determined effort to provide support to the CP/M community.  Theì
  198. indefatigable Keith Petersen is the main force behind it, and he recruitedì
  199. me several months ago to join the staff as a sysop specializing in the ZCPR3ì
  200. and Z-System areas.
  201.  
  202.    A system like GEnie offers a significant advantage over individual Z-Nodes: universal connection.  With the Z-Nodes, if you want to leave me aì
  203. message, you have to call one of the Z-Nodes that I call into regularly, andì
  204. then you have to call around again to see if and where I might have left aì
  205. response.  Systems like GEnie and Compuserve offer central communicationì
  206. points readily accessible from most places in the US and Canada (and withì
  207. worldwide access developing rapidly -- Japan is on-line already).
  208.  
  209.    One of the activities on GEnie is called a real-time conference (RTC), inì
  210. which users can communicate interactively.  These conferences are held onì
  211. many subjects.  The CP/M RTC takes place every Wednesday evening at 10 pmì
  212. eastern time, with the first Wednesday session of each month generally ledì
  213. by me and earmarked for Z-System discussion.  So, if you have questions orì
  214. suggestions that you would like to discuss with me and other Z-System users,ì
  215. please consider joining us on the GEnie RTC.  If you don't already belong toì
  216. GEnie, check BBS systems near you for information on a special GEnie signupì
  217. offering that gives you $20 of free connect time as a new registrant.
  218.  
  219.  
  220.  
  221.                                 BDS C Update
  222.  
  223.    A couple of issues back I announced that a special Z-System version ofì
  224. BDS C would soon be available, and a number of people have been asking meì
  225. about its status.  The standard CP/M version 1.60 of BDS C has beenì
  226. available about a year already, and a working Z-System version is now beingì
  227. sold.  We will probably eventually make a few more changes (such as addingì
  228. support for type-3 program generation).  In that case, everyone who orderedì
  229. the earlier version will be offered an update at a price not to exceed theì
  230. cost of media and shipping.
  231.  
  232.    Some people have criticized the $90 price, comparing it to Turbo Pascal,ì
  233. which sells for only $60.  What they don't realize is how much more one getsì
  234. with BDS C for the extra $30.  Listing 2 shows the contents of the four DSDDì
  235. diskettes in the release, comprising well over 100 files and more than aì
  236. megabyte of material!
  237.  
  238.    First there are the core COM files you would expect: the compilerì
  239. (CC.COM), the code generator (CC2.COM), the linker (CLINK.COM), and aì
  240. librarian (CLIB.COM).  CC, CC2, and CLINK come in both standard CP/M and Z-System versions, with separate run-time packages.
  241.  
  242.    Then there is the stuff that almost no one gives you -- the source code. ì
  243. True, you don't get the source for the core items, but you do get sourceì
  244. code for everything else.  Assembly-language source is included for the run-time package, and C source is provided for the collection of standardì
  245. libraries.  Some of the items are provided only in C source code; you haveì
  246. to compile them to produce COM files configured for your system and tastes. ì
  247. This includes two assemblers -- one that uses Intel mnemonics (CASM) and oneì
  248. that uses Zilog mnemonics (ZCASM) -- and a symbolic debugger (CDB).  Andì
  249. while you don't get the source for CLINK, you do get the source for anotherì
  250. linker, L2, that has even more capability (such as handling code that won'tì
  251. all fit in memory at one time).
  252.  
  253.    RED, an editor with special hooks into the C error listing, is alsoì
  254. provided, again in source form.  You also get a number of sample programs,ì
  255. ranging from simple ones like CP (copy files) to an implementation of theì
  256. MODEM7 file-transfer protocol (CMODEM.C).  [P.S. If you absolutely andì
  257. irresistibly crave the assembly-language source code to the BDS C coreì
  258. components (for personal use, not resale, of course), they can be purchasedì
  259. as an extra option for $200.]
  260.  
  261.    Support is another important issue.  Who supports Turbo Pascal?  The sameì
  262. people who when asked about Turbo Modula 2 vigorously deny that they everì
  263. offered such a product at all!  [Alpha Systems, unfortunately, acquired onlyì
  264. the right to sell Turbo Pascal; Borland did not give them the source codeì
  265. and does not allow them to maintain it.]  With BDS C, the situation is quiteì
  266. the opposite.  On page 1 of the BDS C manual, at the top of the page, authorì
  267. Leor Zolman's personal phone number is listed, and he not only invites youì
  268. to call him, day or evening, he actually is happy when you do!
  269.  
  270.    In short, BDS C is a remarkable product from a remarkable programmer.
  271.  
  272.  
  273. ============================================================================
  274.  
  275. Listing 2.  Files that comprise the four DSDD diskettes in the Z version ofì
  276. BDS C (directories captured using the BGii SCREEN command).
  277.  
  278. XD III  Version 1.2      Standard BDS C, Version 1.60
  279. Filename.Typ Size K RS  Filename.Typ Size K RS  Filename.Typ Size K RS
  280. -------- --- ------ --  -------- --- ------ --  -------- --- ------ --
  281. CCC     .ASM     34     NOBOOT  .C        2     DEFF2B  .CSM     24
  282. BUILD   .C        6     RM      .C        2     DEFF2C  .CSM      8
  283. CASM    .C       24     STDLIB1 .C        8     WILDEXP .CZ       6
  284. CCONFIG .C       12     STDLIB2 .C        8     CDBUPDAT.DOC      6
  285. CCONFIG2.C        8     STDLIB3 .C        6     FILES   .DOC      4
  286. CDB     .C        6     TAIL    .C        2     CCONFIG .H        2
  287. CHARIO  .C        4     UCASE   .C        2     CDB     .H        4
  288. CLOAD   .C        4     C       .CCC      2     CDB1    .H        2
  289. CMODEM  .C       12     CC      .COM     16     CMODEM  .H        2
  290. CMODEM2 .C        8     CC2     .COM     18     DIO     .H        2
  291. CP      .C        6     CDB     .COM     16     HARDWARE.H        4
  292. DATE    .C        4     CLIB    .COM      6     STDIO   .H        2
  293. DI      .C        4     CLINK   .COM      6     BDS     .LIB      6
  294. DIO     .C       10     DEFF    .CRL     12     READ    .ME       4
  295. L2      .C       26     DEFF2   .CRL      6     C       .SUB      2
  296. LPR     .C        4     DEFF2A  .CSM     20     CASM    .SUB      2
  297.      F  1:  --   48 Files Using   384K (   18K Left)
  298.  
  299. XD III  Version 1.2      Standard BDS C, Version 1.60
  300. Filename.Typ Size K RS  Filename.Typ Size K RS  Filename.Typ Size K RS
  301. -------- --- ------ --  -------- --- ------ --  -------- --- ------ --
  302. ATBREAK .C        4     RED3    .C       26     BCD2    .CSM     24
  303. BMATH   .C       22     RED4    .C       20     DASM    .CSM      2
  304. BREAK   .C        4     RED5    .C        4     BUGS    .DOC      2
  305. CDB2    .C        2     RED6    .C        2     CRCK    .DOC      2
  306. CDBCONFG.C        6     RED7    .C        4     BDSCIO  .H        4
  307. COMMAND .C        6     RED8    .C       14     CDB2    .H        4
  308. DEMO1   .C        2     RED9    .C        2     MCONFIG .H        2
  309. LMATH   .C        2     TARGET  .C        4     RED     .H        6
  310. LONG    .C        4     TSTINV  .C        2     RED1    .H        2
  311. PARSE   .C       12     UTIL    .C        2     REDBUF  .H        4
  312. PRINT   .C       10     CRCK    .COM      2     RED-READ.ME       4
  313. RED10   .C       14     RCONFIG .COM     24     CDB2    .OVL     20
  314. RED11   .C       18     CRCKLIST.CRC      4     CRED    .SUB      2
  315. RED12   .C       16     BCD     .CRL     16     L2RED   .SUB      2
  316. RED13   .C        6     DASM    .CRL      2     LRED    .SUB      2
  317. RED14   .C        6     DEFF15  .CRL     10     NULL    .SYM      0
  318. RED2    .C       14     BCD1    .CSM      8
  319.      F  2:  --   50 Files Using   376K (   18K Left)
  320.  
  321. XD III  Version 1.2      Special Z-System Files
  322. Filename.Typ Size K RS  Filename.Typ Size K RS  Filename.Typ Size K RS
  323. -------- --- ------ --  -------- --- ------ --  -------- --- ------ --
  324. -BDSZ   .         0     CC2     .COM     18     DEFF2A  .CSM     20
  325. CCC     .ASM     50     CCONFIG .COM     20     DEFF2B  .CSM     24
  326. CP      .C        6     CLINK   .COM      6     ZUTIL   .CSM      2
  327. DI      .C        4     TAIL    .COM      6     STDIO   .H        2
  328. ECH     .C        2     DEFF    .CRL     12     BDS     .LIB      8
  329. TAIL    .C        2     DEFF2   .CRL      6     READ    .ME      18
  330. WILDEXP .C        8     DEFF3   .CRL      4     CASM    .SUB      2
  331. C       .CCC      4     TAIL    .CRL      2     NDEFF2  .SUB      2
  332. CC      .COM     16
  333.      F  1:  --   25 Files Using   244K (  420K Left)
  334.  
  335. XD III  Version 1.2      Zilog-Mnemonic Version of Assembler
  336. Filename.Typ Size K RS  Filename.Typ Size K RS  Filename.Typ Size K RS
  337. -------- --- ------ --  -------- --- ------ --  -------- --- ------ --
  338. -ZCASM  .         0     ZCASM   .DOC      8     READ    .ME       2
  339. ZCASM   .C       24     --READ--.ME       2     ZCASM   .SUB      2
  340. ZCASM   .COM     18
  341.      F  2:  --    7 Files Using    56K (  420K Left)
  342.  
  343. ============================================================================
  344.  
  345.  
  346.                            Remote Access Systems
  347.  
  348.    I had hoped by now to have gone through the process of completelyì
  349. revamping the RAS software on my Z-Node.  It has been many years since Iì
  350. designed that system, and I really do not remember all the details of what Iì
  351. went through.  Being the sort I am, I made a great number of customì
  352. modifications to all the programs, and, as a result, I have been stuck usingì
  353. old versions of everything.  I use a derivative of BYE503 when the latestì
  354. version is BYE520; I run a modified KMD09 when KMD has not only advanced toì
  355. a much higher version number but has really been superceded by Robertì
  356. Kramer's excellent ZMD.  Admittedly, I already incorporated a number of theì
  357. improvements that these versions offer; nevertheless, my node is quiteì
  358. outmoded.
  359.  
  360.    With the TCJ column as an excuse to look into all these new developments,ì
  361. I thought I would be able to modernize Z-Node #3 and be able to tell you howì
  362. to go about creating a new Z-Node in the easiest possible way.  Alas, asì
  363. usual, I have been too busy with other things.  As I said earlier, I hope toì
  364. get one or more of the new Z-Node sysops to contribute articles to TCJ onì
  365. this subject.
  366.  
  367.    Since I can't give a prescription for creating a standard remote accessì
  368. system (RAS) using the current software, I will instead discuss some of theì
  369. basic concepts behind a remote access system and the ways in which Z-Systemì
  370. facilities can be used to advantage.  The standard RAS software is designedì
  371. to work under standard CP/M and is far less efficient than it could be.
  372.  
  373. I/O Redirection
  374.  
  375.    Once you have a secure Z-System running, as we described last time, theì
  376. next step is to make it possible for the system to be operated via theì
  377. modem.  The standard software that does this is called BYE, and it tracesì
  378. its roots all the way back to the work of Keith Petersen and others from theì
  379. days of Ward Christensen's first remote CP/M (or RCPM) system in the lateì
  380. 1970s.
  381.  
  382.    A great deal of development has occurred since that time, and BYE nowì
  383. provides a rich array of services.  Its essential function, however, is toì
  384. provide redirection of the console input/output functions.  Program input isì
  385. allowed to come not only from the local keyboard but also from the modem;ì
  386. program output is sent not only to the local screen but also to the modem. ì
  387. In this way, either the local operator or the person connected via the modemì
  388. can operate the computer.  With a secure Z-System, this alone would beì
  389. enough for a rudimentary RAS.
  390.  
  391.    BYE works by installing itself as an RSX, or resident system extension,ì
  392. generally just below the command processor.  It patches the data in page 0ì
  393. of memory (this is where programs find out how to request services from theì
  394. operating system) and in the actual BIOS.  These patches do two things. ì
  395. They protect BYE so that a warmboot will not result in its removal fromì
  396. memory, and they allow BYE to intercept software calls to the BIOS and DOSì
  397. from any running programs.  BYE can then substitute its own additional orì
  398. special functions.
  399.  
  400.    In a Z-System, the extended character I/O functions of BYE could properlyì
  401. be implemented using an IOP (Input/Output Package).  The IOP is aì
  402. generalization of the concept from early CP/M of the so-called IOBYTE, whichì
  403. was controlled by the STAT command and used to select from a fixed set ofì
  404. I/O devices (up to four possibilities in the case of the console).  Richardì
  405. Conn conceived of the IOP module as a way to handle just the kind of I/Oì
  406. operations needed for a RAS, and his book, "ZCPR3, The Manual," has someì
  407. examples of this.  Alternatively, the BIOS functions could be implementedì
  408. directly in an NZCOM VBIOS (virtual BIOS), which could be loaded as needed.
  409.  
  410.    Consider the case where the console is an external terminal connected toì
  411. an RS232 serial port.  The standard BIOS CONOUT (console output) functionì
  412. takes the character in register C and sends it to that serial port.  For aì
  413. remote system, the BIOS would send the character first to the terminal'sì
  414. serial port and then to the modem's serial port.
  415.  
  416.    Similarly, the standard BIOS CONST (console status) function checks theì
  417. terminal's serial port to see if a character has been received.  If so, itì
  418. returns with a nonzero value in register A; otherwise it returns a zeroì
  419. value.  For a remote system, the CONST routine would check both serial portsì
  420. and return a nonzero value if either one has a character ready.  CONINì
  421. (console input) would poll the two serial ports alternately until it got aì
  422. character from one or the other of them.
  423.  
  424.    Conceptually, this is really all pretty straightforward.  The biggestì
  425. problem is that the code depends on the specific computer hardware, so noì
  426. universal routines can be supplied.  The BYE program has been cleverlyì
  427. designed, like an operating system, with the hardware-specific codeì
  428. separated from the hardware-independent code.  As a result, customizedì
  429. versions of BYE can be assembled easily by putting source code inserts forì
  430. one's specific hardware at designated places in the master file.  There areì
  431. two collections of inserts, one for many computer types and one for manyì
  432. types of real-time clocks (more about this later).
  433.  
  434.    There are also some fine points about how the console redirection isì
  435. handled.  BYE, of course, knows the difference between the local console andì
  436. the modem and can treat them differently where appropriate.  For example,ì
  437. since modems commonly produce certain noise characters that rarely appear inì
  438. intended input (such as the left curly brace), these can be filtered outì
  439. (i.e., ignored).  Also, some special functions can be assigned to localì
  440. control codes.  For example, pressing control-N at the local console willì
  441. immediately end the callers session (used when the sysop doesn't like what aì
  442. user is doing); on the other hand, control-U removes any connect time limit,ì
  443. and control-A allows special access by turning on the wheel byte (togglingì
  444. it, actually).
  445.  
  446.    The screen output can likewise be handled differently.  Pressing control-W locally causes a local display of the current caller's name.  Something Iì
  447. added to my version of BYE was a filter that prevents escape sequences fromì
  448. going to the local console.  I allow (encourage) users to take advantage on-line of virtually all Z-System capabilities, including the full-screenì
  449. utilities like ZFILER, ZMANAGER, and VLU.  When I first started to do this,ì
  450. I found that the escape sequences going to the users' terminals sometimesì
  451. did very bad things to my own terminal (the smartest terminals, like theì
  452. Wyse and Televideo models, have the worst problems; they have sequences --ì
  453. that cannot be disabled -- that lock out the keyboard!).  I simply borrowedì
  454. the code used in BYE for the incoming-character filter.
  455.  
  456. Modem Initialization and Call Detection
  457.  
  458.    The first real complication we have to face is that the actions describedì
  459. above make sense only after the local modem is in communication with aì
  460. remote modem.  Consequently, BYE has traditionally been given the additionalì
  461. task of initializing the modem and monitoring it for an incoming call.  Aì
  462. 'smart modem' (one that processes the Hayes "AT" commands and returns theì
  463. Hayes result codes) is generally assumed, though BYE apparently will workì
  464. with other modems to some extent.
  465.  
  466.    The standard procedure today for answering calls (unless it has changedì
  467. again since my BYE503) is not, as one might have expected, to set the modemì
  468. to auto-answer mode.  There are some subtle reasons why this is lessì
  469. desirable.  Instead, BYE monitors the modem port for an output string fromì
  470. the modem indicating that it has detected a ring signal.  This string willì
  471. be "RING" if the modem is in verbose mode or "2" if it is in terse mode. ì
  472. BYE then sends the command "ATA" to the modem so that it will answer theì
  473. call.  Then BYE waits for another string that indicates the data rate of theì
  474. connection; in terse mode these are "1" for 300 bps, "5" for 1200 bps, "10"ì
  475. for 2400 bps, and other values for higher speed or error-correcting modems. ì
  476. Finally, the serial port is synchronized to the modem's data rate.
  477.  
  478.    If no connect indication is received within a prescribed time, BYEì
  479. recycles the modem to make it ready for another call.  Once a connection hasì
  480. been established, BYE generally displays a welcome message, and it may askì
  481. for a password.  Then it loads an initial program, typically the bulletinì
  482. board program.
  483.  
  484.    The functions we just described do not really have to be handled in BYEì
  485. at all, and TPA could be saved (remember, the BYE code remains resident inì
  486. high memory at all times) if they were performed by a transient program. ì
  487. With a Z-System there is also no need for BYE itself to load a program fileì
  488. into memory.  All it has to do is place a command line into the multipleì
  489. command line buffer.  This requires much less code and is faster and moreì
  490. flexible.  Moreover, the full power of the command processor is available toì
  491. locate and load the program code.  Resident, type-3, and type-4 programs canì
  492. be used.  I modified my BYE to load the simple command line STARTRAS, which,ì
  493. as you probably guessed, is an alias (it can be an ARUNZ alias, in fact). ì
  494. This makes it very easy to make changes and experiment.
  495.  
  496. Carrier Monitoring
  497.  
  498.    There is one further function of BYE that cannot easily be performedì
  499. anywhere else.  That is monitoring the carrier-detect line for a loss ofì
  500. connection.  After all, a caller might hang up or become disconnected at anyì
  501. time.  Some special clean-up functions must then be performed.  Theì
  502. currently running program must be aborted, any system maintenance functionsì
  503. performed (such as updating the database of caller information), and theì
  504. modem must be reset and readied for another call.  Without going into anyì
  505. detail, I do want to point out that terminating a running program can beì
  506. tricky, especially if file I/O is in progress.
  507.  
  508.    Besides detecting when a user disconnects, either voluntarily orì
  509. accidentally, BYE can also enforce a time limit on the caller.  For many ofì
  510. its timing functions, BYE requires a real-time clock.  As I mentionedì
  511. earlier, there is a library of clock inserts that can be installed in theì
  512. BYE source before it is assembled.
  513.  
  514.    This completes the discussion for this issue.  So far we have touched onì
  515. the BIOS and modem-control functions of BYE; next time I plan to take up theì
  516. DOS services that BYE provides.
  517.  
  518.