Volume 4, Number 26 13 July 1987 +---------------------------------------------------------------+ | _ | | / \ | | /|oo \ | | - FidoNews - (_| /_) | | _`@/_ \ _ | | International | | \ \\ | | FidoNet Association | (*) | \ )) | | Newsletter ______ |__U__| / \// | | / FIDO \ _//|| _\ / | | (________) (_/(_|(____/ | | (jm) | +---------------------------------------------------------------+ Editor in Chief: Thom Henderson Chief Procrastinator Emeritus: Tom Jennings FidoNews is published weekly by the International FidoNet Association as its official newsletter. You are encouraged to submit articles for publication in FidoNews. Article submission standards are contained in the file ARTSPEC.DOC, available from node 1:1/1. Copyright 1987 by the International FidoNet Association. All rights reserved. Duplication and/or distribution permitted for noncommercial purposes only. For use in other circumstances, please contact IFNA. Five Weeks to FidoCon! Table of Contents 1. ARTICLES ................................................. 1 Hotline! (1) ............................................. 1 2400 Baud At The Right Price ............................. 4 Talking ASSEMBLER (Number #3) ............................ 5 THE DIRTY DOZEN -- An Uploaded Program Alert List ........ 11 Running 2 BBS's, or CHOOSEr.exe to have FUN! ............. 20 International Vietnam Veterans EchoConference Anniversa .. 23 2. COLUMNS .................................................. 25 Borland's Turbo C: Review, part 2 ........................ 25 From the Broadcasters Booth - routing .................... 29 The Regular Irregular Column ............................. 32 3. WANTED ................................................... 37 INFORMATION "FEEDS" WANTED ............................... 37 4. NOTICES .................................................. 38 The Interrupt Stack ...................................... 38 Latest Software Versions ................................. 38 International FidoNet Conference Registration Form ....... 39 IFNA Board of Directors Ballot ........................... 40 FidoNews 4-26 Page 1 13 Jul 1987 ================================================================= ARTICLES ================================================================= James Zachary Fido 115/537 Hotline! (1) (c) 1987 James Zachary On any given day, at any given moment, the phone at the water and sewage department can ring with a crisis call. Southeast Treatment Plant, this is Zack. "Ahem, err, why are ... uhhh are you adding ... uhhhmmm, why are you putting ammonia in our drinking water ...?" Pardon me? "Uhhh, in my drinking water ... in my fish-tank ..." You drink the water from your fish-tank? "Uhhhh, errr, nooooo, I uh ..." Sir, we have a terrible connection, sounds like you're talking into a garbage can ... "Hold on a sec ... THERE! IS THAT BETTER? I WAS ON MY NEW SPEAKER PHONE!" What else are you on? "'SCUSE ME?" Never mind. Don't shout, I can hear ya fine now. You said your fish-tank tastes funny? "Uhhhh, nooooo. All my fish died so I tested the water and it has ammonia in it." What's your point? "The water in my fish-tank came from our faucet ... it's regular drinking water from you. Your ammonia killed my fish!" We don't add ammonia to our water. Some of the large systems do, to form chloramines so they can carry a chlorine residual for great distances, but we don't do that. "Now wait a minute! I tested the water, both in the fish tank and from the faucet and it has ammonia in it!" I see. How much ammonia?. FidoNews 4-26 Page 2 13 Jul 1987 "Five." Five ...? Five what? Five parts per million, parts per billion, parts per trillion...? "Uhhhhh, it just says five." What kind of equipment are you using? "Well, I dunno but it cost me PLENTY! I spent $12 on it to find out YOU killed my fish! It has test tubes and a color chart! I went to college, you know!" Uh huh, I'm sure your mother is proud. Look, friend, let me assure you our lab, as well as the EPA lab, cost a tad more than $12. Both labs are certified for technique and accuracy and their results show the drinking water has barely enough ammonia to measure. "You mean I wasted $12?" Looks that way. "But my fish are all dead! The tank even smells like ammonia!" How big was the tank and how many fish were in it? "It was a 10 gallon tank and I had 50 black mollies in it." Wonderful. You had 50 fish in a 10 gallon tank? "Sure! The book that came with the tank said ..." Whoa! Listen, ammonia may have played a part in bumping your fish off but the ammonia came from their own waste. "Their own waste? I don't understand!" Waste ... excrement ... in college terms, your fish made wee wee in the water... "Oooooh......." ... and they made big poo poo ... "Ahhhh, but my filter removes all that!" Right. When was the last time you cleaned your filter? "Why, NEVER! This filter turns the waste into air by rotifer reaction so it never needs cleaning. It worked fine for a month!" Sir, have you ever considered changing hobbies to something other than tropical fish? FidoNews 4-26 Page 3 13 Jul 1987 "Well, I USED to raise tropical plants until YOUR water killed them!" How often did you water them? "At least four times a day ..." Maybe you'd consider raising hydroponic pet rocks. "C L I C K ! ! " Sometimes it doesn't pay to be helpful ... ----------------------------------------------------------------- FidoNews 4-26 Page 4 13 Jul 1987 Jean Coppola 107/201 2400 Baud At The Right Price Recently I was looking for a new 2400 baud modem and decided to look around a bit. After seeing the prices on Hayes and Courier, I knew I had to go with a clone if I wanted 2400 baud at this time! After searching around I found the MAXUM 2400 baud modem at a very reasonable $199.95 from a rather large discount store in the area. (47th Street Photo) So, I plunked down the green and took this little joy home to see if I had been ripped off or not. To my surprise, it turned out to be a rather good purchase! It claimed to be Hayes compatible, but many of us have seen that before, and I for one was a little wary. But I was wrong to worry! I opened the box, plugged it in, and set Opus for Hayes 2400 and away we went. Both Opus and SEAdog recognized it as a Hayes 2400, and all the command sequences built into both pieces of software work fine with it! I have tested it now with both normal communications and file transfers with all the popular protocols, and have not found any increase in errors over 1200 baud transfers. But of course, it is much quicker, especially when you use the SEAlink transfer protocol and even faster when using some of the newer protocols. In all fairness, there was one problem that I could not solve by normal methods. For some unexplained reason, no matter what command sequence I fed it, I could not shut off the speaker, or lower the volume. Unlike most other external modems, there is no outside volume control. So a quick call to the dealer who was as stumped as I was. Being handy with tools, the speaker is now shut off! All in all, a very good purchase for someone looking for an inexpensive 2400 baud external modem. ----------------------------------------------------------------- FidoNews 4-26 Page 5 13 Jul 1987 TALKING ASSEMBLER 3 by Ned Sturzer Chattanooga, Tennessee OpusNODE 362/1 The machine instructions are the soul of Assembler and we will examine them in great detail. Each instruction may have two operands, one operand, or even no operands. Most instructions refer to memory locations, registers, port addresses, or immediate data. The manner in which these locations are referred to are known as addressing modes. Some instructions allow for implied operands and the operand is not indicated. For example, the instruction cbw takes the high-order bit in the AL register and places the same value in all the bits of AH. In effect, cbw extends the sign of AL to AH. In this instruction the operands are in the implied addressing mode. Immediate data is allowed in the operands of many instructions as in int 9 or in mov pointer,417H where pointer is a label for a memory address. In direct memory addressing the operand is in the form segment:offset an example being test di,ss:4ee7H Based operands refer to the memory location computed by adding a displacement, disp, to the value in DS:BX, CS:BX, SS:BX, or ES:BX. You may also use DS:BP, CS:BP, SS:BP, or ES:BP. DS:BX may be written simply as BX, while SS:BP may be expressed as BP. If the displacement resolves to 0 it is not written. Among valid ways of writing based operands are disp.[BX] ES:[BP]+disp [disp][BX] Now consider the instruction xchg [bx-3],di where bx contains the value a06b. Our instruction will exchange the contents of the di register with whatever value is in the two bytes of memory ds:a069 and ds:a06a. If the displacement is 0 it need not be indicated. Indexed operands are treated similarly to based operands except the si and di registers are used. With either si or di the default segment register is ds. An exception to this is that if di is used in string instructions such as stos or lodsw then the FidoNews 4-26 Page 6 13 Jul 1987 default segment register used with di is es. In this case es cannot be overriden. Based indexed operands use a displacement in conjunction with one register from either bp or bx and one register from either si or di. As you would expect by now the default segment register if bp used is ss and otherwise the default segment register is ds. Also if based indexed operands are used in string instructions then di forces the segment register to be es. As an illustration consider the instruction cmp byte ptr es:[bp+6][di],0feH where es:bp has the value b800:0147 and ds:di has the value 0000:0200. This instruction then compares the contents of the memory location b800:034d with fe. If based indexed operands seem complicated - they are. However, they allow you to do some fancy footwork through memory. Before moving on to examine the individual instructions I need to tie up a loose end. Whenever register IP is used to refer to a memory location the reference is always to location cs:ip. Similarly if register SP is used to refer to memory the location ss:sp is intended. I'll group the machine op codes according to their function, indicate the flags affected after the operation is performed, give the nature and size of the operands, and give examples. I. Logical Operators The logical operators AND, NOT, OR, and XOR (exclusive or) perform the bit-by-bit logical operations their names imply. The result is stored in the first operand. They are used to gain access to the individual bits of a byte or word. A. AND ax/al,immed Flags:C=0, P, A=?, Z, S, O=0 B. AND r/m,immed 8 or 16 bits Flags:C=0, P, A=?, Z, S, O=0 C. AND r,r 8 or 16 bits Flags:C=0, P, A=?, Z, S, O=0 D. AND m,r 8 or 16 bits Flags:C=0, P, A=?, Z, S, O=0 E. AND r,m 8 or 16 bits Flags:C=0, P, A=?, Z, S, O=0 To explain the shorthand I'll use: In the operand area r is any register other than a segment register, m is any memory location, and immed stands for immediate data. Should a specific register be used it will be indicated as in form A. If the size of the operands (8 or 16 bits) is not implied by the form of the FidoNews 4-26 Page 7 13 Jul 1987 instruction I have indicated it. The flags are affected as indicated where =? means the flag may be changed arbitrarily. Consider AND al,01101000B where ax contains 01000011B. After the instruction is performed al will contain 01000000B, C=0, P=0, Z=0, S=0, O=0, and A is arbitrary. Form A is distinguished from form B since it requires one less byte in memory to store the instruction. AND is used to clear specific bits to 0 while keeping the other bits intact. F. NOT r/m 8 or 16 bits Flags: none NOT simply interchanges all the bits of the operand. Thus in NOT word ptr [bp+di] if bp contains 0050, di contains 0017, ss contains 0040, and 0040:0067 to 0040:0068 contain the word a51c, then after the operation this word will contain 5ae3. Note that it is here necessary to tell the Assembler that we are considering a word since there is nothing in the instruction which otherwise indicates the length of the operand. G. OR ax/al,immed Flags:C=0, P, A=?, Z, S, O=0 H. OR r/m,immed 8 or 16 bits Flags:C=0, P, A=?, Z, S, O=0 I. OR r,r 8 or 16 bits Flags:C=0, P, A=?, Z, S, O=0 J. OR m,r 8 or 16 bits Flags:C=0, P, A=?, Z, S, O=0 K. OR r,m 8 or 16 bits Flags:C=0, P, A=?, Z, S, O=0 L. XOR ax/al,immed