WWIVNEWS Volume 1, Issue 2 February 1991 Table of Contents ~~~~~~~~~~~~~~~~~ WWIV v4.20: A New Twist In Modem Handling....................Random 1@1 WWIV and Zygote: The Dynamic Duo......................Tony Godfrey 1@18 NetZip II Revision 6................................East Bay Ray 1@9964 Thoughts on a Multi-Line WWIV..........................John Wash 1@8403 Bug in the Main Menu Prompt....................The Dunghill Fowl 1@2371 The Pending File.........................................WWIVNEWS Staff Letters to the Editor...........................................Various Official Jargon..............................................Random 1@1 The Editor's Corner.................................East Bay Ray 1@9964 Acknowledgements.........................................WWIVNEWS Staff ======================================================================= WWIV v4.20: A New Twist In Modem Handling by Random 1@1 (Originally captured from Amber: Dec 1, 1990) The text at the end of this article is my first cut at a modem configuration file. You first notice that it is in ASCII text, for ease of editing by users, and it is much easier to expand upon later. In the final release, there will be a configuration file such as the one below. configurations for will be: USR HST/V.32/DS, Hayes compat. 300, Hayes compatible 1200, Hayes compatible 2400, plus slightly modified versions of the Hayes compatible ones for modems that have timing problems. Here is a description of the file. Comments are lines that begin with a #. Blank lines are ignored. The first four characters on a line (followed by a colon) describe what type the line is. The first section has a couple of strings that are sent to the modem (INIT, SETU, ANSR, PICK, HANG, DIAL). The SETU string will be sent to the modem when the BBS first starts up, setting up various modem parameters. The INIT string will be sent to the modem after each user loggs off, the same as the current init string. The other strings should be self-explanatory. The next part of the file deals with result codes and several switches that can be set. It tells what state the modem is in based upon the result codes received. These are listed at the top of the file for your reference. The first few "state switches" tell what state the modem is in (NORM, RING, RINGING, ERR, DIS, CON). The next few set various other options, modem speed, com speed, asymmetrical baud rates (such as for the USR HST protocol), error correcting protocols (MNP2-4, LAPM) and data compression protocols (MNP5, V.42bis). Also, flow control is thrown in there, although most likely that will not change based on result codes. The "DEFL" line defines the default modem switches, which are set before the modem init string is sent. It mostly just tells flow control and the com port speed to use. The rest of the file defines the result codes or partial result codes. A result code from the modem can be split up into numerious partial result codes. For example, from the HST, you can get a result code such as "CONNECT 2400" as well as "CONNECT 9600/ARQ/V32/LAPM/ V42BIS". The "SEPR" definition defines which characters to use. It separates the full result code into partial result codes. It can be nothing, in which case there aren't really any "partial result codes". Another possibility is that the characters could not be present in the string, in which case the full result code is a "partial result code". Here is a working example. Suppose the modem is sitting there at WFC, and it gets a string from the modem ("RING"). It finds no "/" in it (the SEPR character), so searches the result code listing for "RING". It finds it, and finds the state switch "RING", meaning the phone is ringing. It then sends the ANSR string, answering the phone. At this point, say it gets "CONNECT 2400". It finds no "/", so searches for that string, and finds it. It sets the description to "2400", sets the modem speed to 2400, the com speed to 2400, and notices that it is now connected. At this point, it continues with the logon. Suppose that it got "CONNECT 9600/ARQ/V32/LAPM/V42BIS". It notices a couple slashes, so interprets all the parital result codes ("CONNECT 9600", "ARQ", "V32", "LAPM", and "V42BIS") one at a time. First it finds the CONNECT 9600, so it sets the description to "9600", sets the two baud rates to 9600, and notices that it is connected. It does not actually consider itself connected until it has processed all the partial result codes from the full result code, so it continues. Next is "ARQ", meaning we have an error correcting connection (EC=Y). Also, the way the modem is configured for all ARQ connections, the com port baud rate is locked at 38400. It will set the com speed to that. Next comes "V32". This is a symmetrical protocol, so AS=N. Since AS=N is the default (as defined at the top of the file), this is not really necessary to put in, but puttting it in is clearer that way. Also, the string '/V.32' is defined. This is in SINGLE QUOTES, so the "/V.32" is added on to the description instead of overwriting it (as would be the case if it were in double quotes). The desription is now "9600/V.32". Next we get 'LAPM', which adds "/LAPM" on to the description, and sets EC=Y again, which is not really necessary. Again, it is clearer that way. Finally, "/V42BIS". Adds the string '/V.42bis', and sets DC=Y, indicating data compression is in use. It is now done with the full result code, so it recognizes that it is connected (due to the CON), and continues with the logon. Now we notice that the switches are set: MS=9600, CS=38400, EC=Y, DC=Y, AS=N, FC=Y. This means: The modem is talking at 9600 to the other modem, while we are talking to the modem at 38400. Also, we are using flow control (FC=Y). This is what we would know using the current setup for the result codes. We also get additional information informing us that we are using error correction, data compression, and that we have a symmetrical baud rate (9600 in both directions). The description at this point is "9600/V.32/LAPM/V.42bis". In addition to being more free form and more easily extensible, we get three additional pieces of information: whether error correction is being used, whether data compression is being used, and if we have a symmetrical baud rate setup. The symmetrical/asymmetrical flag can be used in the BBS to determine if BiModem should be used or not (same with the net software), and error correction can be used to determine if protocols like YMODEM-G should be allowed. So that is the way it will be implemented in INIT, instead of entering the modem info and result code info as you do now, you'll get a menu of known modem types, and be able to pick one. It will then parse through the file and create a machine-readable format for the BBS (and net software) to use. # # NORM normal state of modem # RING phone is ringing # RINGING remote phone is ringing # ERR error encountered # DIS disconnected (No connection) # CON connection established # MS= modem speed # CS= com port speed # AS= asymmetrical baud rates (Y/N) # EC= error correcting (Y/N) # DC= data compression (Y/N) # FC= flow control (Y/N) NAME: "USR Dual Standard" # some strings sent to the modem INIT: "ATB0H0M0{" SETU: "ATC1E0F1H0M0Q0V1X6&A3&B2&C1&D2&H1&I0&K2&N0&R2&S0S0=0S2=1{" ANSR: "ATA{" PICK: "ATH1{" HANG: "ATH0{" DIAL: "ATB1DT" # separator in result code for partial result codes SEPR: "/" # default settings of switches DEFL: MS=38400 CS=38400 EC=N DC=N AS=N FC=Y # list of partial (or full) result codes from modem. Descriptions in # double quotes ("") overwrite the previous description, those in single # quotes ('') append to the previous description. # # RESULT CODE DESCRIPTION SWITCHES # RESL: "OK" "Normal" NORM RESL: "RING" "Ring" RING RESL: "NO CARRIER" "No Carrier" DIS RESL: "ERROR" "Error" ERR RESL: "NO DIAL TONE" "No Dial Tone" DIS RESL: "BUSY" "Busy" DIS RESL: "NO ANSWER" "No Answer" DIS RESL: "RINGING" "Ringing" RINGING RESL: "VOICE" "Voice" DIS RESL: "CONNECT" "300" MS=300 CS=300 CON RESL: "CONNECT 1200" "1200" MS=1200 CS=1200 CON RESL: "CONNECT 2400" "2400" MS=2400 CS=2400 CON RESL: "CONNECT 4800" "4800" MS=4800 CS=4800 CON RESL: "CONNECT 7200" "7200" MS=7200 CS=7200 CON RESL: "CONNECT 9600" "9600" MS=9600 CS=9600 CON RESL: "CONNECT 12000" "12000" MS=12000 CS=12000 CON RESL: "CONNECT 14400" "14400" MS=14400 CS=14400 CON RESL: "ARQ" EC=Y CS=38400 RESL: "HST" '/HST' AS=Y RESL: "V32" '/V.32' AS=N RESL: "MNP" '/MNP' EC=Y RESL: "LAPM" '/LAPM' EC=Y RESL: "MNP5" '/MNP5' DC=Y RESL: "V42BIS" '/V.42bis' DC=Y RESL: "NONE" EC=N RESL: "SYNC" ======================================================================= WWIV and Zygote: The Dynamic Duo by Tony Godfrey 1@18 One of the nice things about a registered WWIV is that you can modify the source code to your heart's content. Sysops modify their boards to make WWIV easier to use for themselves and the users. Some modifications spice up the board by adding more color, or more ANSI- extensive routines. This can decrease the speed of WWIV by a fairly large amount, and speed is one of WWIV's strong points. Zygote Term is a terminal program on the PD/Shareware market. It isn't quite as popular as Telix or Procomm, but it is gaining popu- larity every day. Each new version of Zygote contains new features that surpass other term programs many times over. The best thing about Zygote is that it has special features accessible by a WWIV BBS. On any other board, Zygote would act as any other terminal program would (except with a few more features that cannot be found on other term programs). When Zygote is used on a WWIV BBS that makes use of Zygote's features, however, a whole new realm of BBSing is entered. The Zygote/WWIV Multitask Chat is the first of these features to be released. WWIV currently comes with two chat modes: standard, and two-way. Zygote/WWIV Multitask Chat looks much like two-way chat, except chatting takes place on one half of the screen. In the other half, normal BBS functions can be performed. While the sysop and a user are chatting, either the sysop or the user can switch between chat window and BBS window. In the BBS window, functions such as reading messages, listing files, writing messages, moving, sorting, removing files, editing users, etc. can all be performed while the chat window remains intact. This is especially useful if you want to discuss a certain message or look for a certain file and chat about it, or to have something else to do while the chatter rambles on. Version 1.0 of this modification was released in October 1990, and version 1.1 is scheduled to be released in late December 1990 or early January 1991. A new feature still in the testing stages, but very close to release, is the Zygote/WWIV Binary Screen Feature. This modification gives WWIV a complete facelift. Any part of the BBS can be made into a full-screen ANSI picture. With regular terminal programs, WWIV would have to send an ANSI picture over the modem, and then send codes to place prompts on the screen. With Zygote, WWIV simply tells it which binary screen (an ANSI screen saved in binary format) to display, and in less than 2 seconds, a full screen ansi is displayed on both ends, ready for input. Positioning of the cursor still has to be done, which WWIV then takes care of. Since binary screens are only 4000 bytes in size, having several of these binary screens on disk would not consume a large amount of disk space. If either the BBS or the Zygote user does not have a matching screen, then WWIV will simply display the screen normally (albeit much slower than the speed of binary screen display). WWIV sysops will see this modification released in modules. Each module will contain documentation on what part of the board to modify as well as a standard WWIV binary screen. The first modules to be re- leased will be logon and message bases. Binary screens can be custo- mized, but at the same time the customizer must know where to position the cursor and make the necessary changes. These features are just the beginning in a series of featues to be released. Zygote continues to grow, as does WWIV, and these features make them both 10 times as powerful as any other term program or BBS. Zygote Term by Miguel Sanchez a.k.a. My Nguyen ======================================================================= NetZip II Revision 6 by East Bay Ray 1@9964 Many people who have seen how other networks, such as FidoNet, use compression to make their net packets smaller. They have been doing this for years with the help of SEA's ARC program and PKWare's PKZIP program. WWIVnet now has the same opportunity. NetZip, written by East Bay Ray, provides network compression for any node in WWIVnet or WWIVlink. This idea is not a new one to WWIVnet. There were two previous tries by Alph 1@8403 and Benny Hill 1@7400. They both were stopped by a strange bug that would produce a Divide Overflow on some computer systems, but not on others. East Bay Ray was also previously stopped by a conflict with Wayne's ZIP routines that resulted in lost mail. At last, however, a version was found that worked. Installation of NetZip is quite easy. An INSTALL batch file does most of what minimal work there is (thoughtfully provided by Filo #1 @5252). All that is left, after running INSTALL, it to create ZIPSYS.NET. This is a plain text file which contains a list of nodes you wish to use NetZip with (they must also have NetZip installed, or be using NET22). It is that simple. How does NetZip work internally? NetZip first takes the un- compressed Sxxxx.NET file and renames it to a P*.NET file (one higher than the last existing P*.NET file in the current archive). Then it adds this to Sxxxx.ZIP. The Sxxxx.ZIP is then renamed to Sxxxx.NET, and CONTACT.NET is updated to reflect the adjusted sizes of each Sxxxx.NET file that was compressed. If you wish to see the ratio of compression, all you have to do is view the Sxxxx.NET with PKZIP or PKUNZIP. NetZip is an excellent, which has finally been purged of the bugs present in the previous versions, along with the stigma of Revision 3, which lost mail. If you have a chance, download it and share it with your neighbors. It will save you a lot of transmission time. Over long distance lines, it will save money also. ======================================================================= Thoughts on a Multi-Line WWIV by John Wash 1@8403 with input from Richi Shinn 4@8404 Before I get started, please note that this article was written in response to an article of like subject, written by Jeff Garzik 1@9964, that originally appeared in WWIVNEWS Vol. 1, Issue 1. First, I wholly agree with Jeff on possible solutions: You can either make the program itself single-tasking but multi-user, or you can run it in a multi-tasking -- and optionally a multi-user -- envi- ronment. At this point, though, I begin to differ with Jeff. A LAN would indeed be an expensive solution (as he said, "4 nodes = 4 PCs"), but it would NOT be a slow one. The standard in PC networking today is Novell's Netware, a distributed-processing system. In a LAN implementation, you have a server system and client systems. The server controls the shared resources of the LAN--storage, printers, modems, etc.--and each client (or workstation) uses its own resources--a local hard drive or a local printer, for example. A multi-line WWIV running in a Novell Netware environment, and sharing data files with other nodes by storing them on the server's drive, would not be noticeably slower than individual PCs running individual BBSes--that's the entire idea behind distributed processing, and part of the reason that educated administrators choose Netware as a networking solution rather than packages that run on the server and treat client systems as dependents rather than autonomous entities. If you MUST run PC-DOS, it is possible to have multiple WWIVs running concurrently with, as Jeff said, a "commercial multitasker" such as Windows 3.0 or Quarterdeck's DESQview. However, they're going to be individual copies of WWIV, sharing perhaps only the FILES in the transfer and G-File sections. What needs to be done to WWIV is a total re-write. Wayne Bell knows this. He hinted at it when he suggested that he wouldn't port WWIV to UNIX. He stated that would re-write it for UNIX. Internal multi-node capability would not be that difficult to implement. If you have handlers processing I/O for all com ports as well as the console, half of your battle is over. It remains, however, that you have no facilities for file and record locking, an integral part of almost any multi-user system. So why go the extra step? Don't bother making WWIV multi-line. Instead, make WWIV support file and record locking. You'd save oodles of memory, because you wouldn't have to allocate a chunk to store a .SUB file, a .DIR file, or anything like that. If you wanted a user's record, open USER.LST, lock the record, read the record, unlock the record, and close the file. If you wanted to read a message, or upload a file, or anything that requires file I/O, you would do basically the same thing. If you get file and record locking working properly, there would not be any need to "make WWIV a multi-line BBS"-- you'd just need a copy of MS-Windows 3.0, or Novell Netware, or PC-MOS, or DESQview/386, a good machine and some patience in getting it set up. This is my opinion on multi-line systems. Summing it all up, making WWIV talk to several com ports at once is a waste of time. Worry about file sharing and you'll be set. If anyone would like me to discuss file and record locking in a future issue of WWIVNEWS, drop me a note at 1@8403 and I'll see what I can do. (About the author: John Wash is a professional UNIX zealot and a full-time social irritant.) ======================================================================= Bug in the Main Menu Prompt by The Dunghill Fowl 1@2371 This problem only happens if you are on a board where you have access to all 32 Subs (I don't know about boards with the 64 Sub Mod). While at the main menu prompt, at sub #31, if you hit the plus key (+), instead of going to sub #32 it will jump to sub #1. However, hitting the minus key (-) at sub #1 will bring you to sub #32. For example: T - 00:32:48 [31] [Fred's Fried Fish Sub]:+ <--- Hitting plus from sub #31 T - 00:32:26 [1] [General Messages]:- <--- Skipped sub #32, hitting minus key T - 00:31:53 [32] [Underwater Basket Weaving]: <--- Now at the long lost sub #32 Ok, that's all there is to it, it isn't that big of a deal, but it's there... [This only occurs on the aforementioned sub numbers EXACTLY. I easily spotted the problem in the code, and I notified Wayne about it. - Ed.] ======================================================================= The Pending File (Tips, Tricks, and News) by WWIVNEWS Staff The next WWIV release will be v4.20. It HAS NOT been released, nor will it be released any time soon. Wayne has not set a release date. Features will include batch uploads, BiModem support, a complete rewrite of the modem handling routines, and several other smaller features. For more information on the modem handling routines, see the earlier article in this issue. WWIVnet also has a new SUBS.LST coordinator. 1 @7100 now receives the new information for subs and sends out regular SUBS.LST/SUBS.1 updates. Do NOT send any e-mail to 1 @6860 regarding sub list changes. Intel is offering a Sysop deal on their 9600EX high speed modem. It's a V.22, V.32, V.42/42bis compatible, and will connect to standard v.32 / v.42 modems at speeds up to 38,400 Baud. It WILL NOT connect to a USR HST at any speed higher than 2400 Baud, so there is a downside. It's a good deal if you can't afford a $699 USR DS or a $675 Microcom, but "let the buyer beware." (Charles Boyer 1@9962) NETEDIT v1.27 by Black Dragon #1 @2380 has just recently been released. It fixes a potential bug in v1.26. v1.26 (which was not annouced in WWIVNEWS) makes a couple improvements over v1.25, including handling of NET22's partial updates, and a technical correction on one of the menus. (Black Dragon 1@2380) WWIVNEWS has some competition on WWIVlink. WWIVlink now distributes a newsletter much like this one, called "The Link Post". These will also be made available on my board as I get them. My new program, NETPURGE, goes through the specified network pending data file (defaults to DEAD.NET) and deletes all non-e-mail. It returns all E-mail of types 1-0, 2-0, 7-0, and 8-10 to the originator with a few extra lines in the header telling the originator what type of E-mail he sent, to whom, and that it was undeliverable. (Black Dragon 1@2380) ======================================================================= Letters to the Editor WWIVNEWS, I noted with interest the appearance of WWIVNEWS.NET in my data directory today. It's an interesting idea, and I hope it works out to the benefit of WWIVnet sysops. However, I have a couple of suggestions for distribution: 1. Announce its presence. I had no earthly idea that WWIVNEWS was going to be distributed along with updates. I'm not complaining, just suggesting that you flaunt it a little bit more than you have. 2. Change the name. I assume will to come out once a month, and I also assume that volumes change once a year. With that in mind, perhaps I can suggest another naming convention: a. Do it Fido-nodelist-style. Call it WWIVNEWS., where is the number of days into the year on which that issue was released. b. Do it Another Way. If you are only going to have 16 volumes and 12 issues per volume, then use hexidecimal format. For example, WWIVNEWS.1-1 would be volume 1, issue 1, and WWIVNEWS.A-3 would be volume 10 (0Ah), issue 3. Or provide 256 issues per volume: WWIVNEWS.AFF (volume 10 (0Ah), issue 255 (FFh)). c. Here is yet another possibility. How about this: 0006-0010.NWS (Volume 6, Issue 10, WWIVNEWS). What this boils down to is that I don't want to lose WWIVNEWS every time a new one comes out, and why not make provisions to keep 'em rather than having me COPY 'em? John Wash #1 @8403 [All of these are excellent suggestions. My favorite idea overall is naming it WWIVNEWS.v-i (v = volume number in hex, i = issue number in hex). However, it will stay the same way basically because Wayne already put it in the code that way, and he is reluctant to change it so quickly after its birth. I do, however, provide on my board back issues for anyone not collecting them. -Ed.] ======================================================================= Official Jargon by Random 1@1 (Wayne's All-Mail for January) A couple things: 1. When you wish to be removed from distribution for a subboard, please do >NOT< post a message about it on the subboard. The correct thing to do is to email the host of the sub and inform him/her that way. 2. NET22 apparently has some problems receiving net updates. I am not precisely sure why this did not also happen in NET21, but it apparently doesn't. So, for now, it would be a good idea to use the network2.exe file from NET21. NET23 (which fixes that problem) should be out about January 27th or so. 3. Also about January 27th, we will be going to multiple CONNECT files. In addition to the CONNECT.0 file, you will find CONNECT.1 through CONNECT.12 files in your DATA directory (with the exception of CONNECT.6, as there is no group 6). The network will continue to function the same, however. This should not affect anyone except GCs and maybe ACs. Due to the way the connection updates will be handled, it is now REQUIRED that AC's forward connection updates to the GC. You will NOT be able to send connection update requests directly to me. So, to reiterate, for anything in the network (connection update, bbslist update, complaint, etc), the correct order is to first contact your AC, then your GC and finally the NC (me). if you have been unable to resolve A few people have come to me with things that they should have contacted their GC about and I have simply referred them back to the GC. Going directly to me tends to slow things down, not speed them up. 4. Starting with WWIV v4.20 (for which a release date has not yet been set, but will be in a few months), the source code to WWIV will also be distributed (to registered sysops ONLY) on certain select WWIVnet systems. It will work like this: a. About 5-10 WWIVnet systems will be selected as source distribution points. b. I will make up a list, based on inputs from registered WWIV users, of which users on those systems are, in fact, registered WWIV users. Those users, and only those users, will be able to download the source code to WWIV from those systems. c. The sysops of the source distribution points will have a special file transfer section for WWIV source distribution. The file section will have a specific DAR. Only the users listed on the 'master list' will have that DAR, and hence be allowed to download the source code. The list will look something like: Reg num Accounts 1 Random #1 @1, Random #2 @1234 90999 Hector #123 @1, Hector #22 @1234, Hector #67 @1177 90888 Dude #321 @1, Dude #198 @1177 Where @1234 and @1177 are the source distribution points. We are now at step "a": selecting source distribution points. If you are a registered WWIV sysop, have been registered for over a year, have been in WWIVnet for over a year, would like to be a source distribution point, and agree to release the source code to users only on the list, then please reply and tell me you are interested. Remember, there will only be around 5-10 distribution points, and I'd like to have them in various areas of the country, so if 20 people reply from Rhode Island, only one of them will actually be selected. ======================================================================= The Editor's Corner by East Bay Ray 1@9964 One of the several network subs to investigate this month is the "Alternative SysOp's Sub", sub type 9999, hosted by John Hardman @9954 (send mail to 2@9954 for speed answering), the GC of group 5. It boasts less flames than other sysop subs. Check it out, it might make a nice Valentine's gift for yourself. Observant people will notice that the text is no longer justified to the right margin. I wanted to be able to fit more text into less space, so the decision was made. Thanks are due to Omega Man for his suggestion regarding that one. I also decided that I would stop publishing real names unless so requested. I thought about it a while and came to the conclusion that aliases were for people to hide their real names. I will continue to publish their net addresses. There has been some flak about my policy on the ownership of the articles printed in WWIVNews. I thought the original policy was fair, but apparently some people did not. I have modified it, so now my position on the ownership of WWIVNews article is that all articles, unless copyrighted by the author (whether stated copyright or official copyright) become my property. If the article is copyrighted, then the article's author retains full ownership and distribution rights of that article. He MUST, if the article is copyrighted, give me specific written (electronic or otherwise) permission to print the article in an upcoming issue of WWIVNews. ======================================================================= Acknowledgements WWIV (c) 1988 by Wayne Bell. NetZip II (c) 1990,1991 by Jeff Garzik. PKZip, PKUnZip, and PKLite are registered trademarks of PKWare, Inc. ARC is a registered trademark of SEA Enhancement Associates. BiModem (c) 1988-90 by Erik Labs. USR, USR HST, and USR Dual Standard are trademarks of US Robotics, Inc. Hayes is a registered trademark of Hayes Microcomputer Products, Inc. MNP (Microcom Networking Protocol) is a trademark of Microcom, Inc. Windows is a trademark of Microsoft Corporation. DesqView is a trademark of Quarterdeck Office Systems, Inc. PC-MOS is a trademark of The Software Link. NetWare is a trademark of Novell Data Systems. All other products mentioned are either registered trademarks or copyrighted by their respectives manufacturers. ======================================================================= The End