Path: utzoo!utgpu!news-server.csri.toronto.edu!bonnie.concordia.ca!uunet!zaphod.mps.ohio-state.edu!sdd.hp.com!news.cs.indiana.edu!maytag!xenitec!zswamp!root From: root@zswamp.uucp (Geoffrey Welsh) Newsgroups: comp.dcom.modems Subject: Re: 4.77MHz PC sufficient for 19200 bps modem? Message-ID: <247.2862CB87@zswamp.uucp> Date: 21 Jun 91 23:20:15 GMT Organization: Izot's Swamp BBS (FidoNet), Kitchener, Ontario Lines: 67 >From: tnixon@hayes.uucp >Before coming to Hayes, I worked for Datamaxx USA Corp, >writing firmware for terminal emulators. Their biggest- >selling product was based on a Motorola 6800 processor >running at 1 MHz, and supported up to 9600bps -- without >flow control, and without ever losing data! So, I _know_ >that a 4.77MHz processor _can_ support 9600, even 19200, >_if_ your comm software is well written. There's more to it than that. (My qualifications: I wrote a 9600 bps serial driver for a 2 MHz 6502 system, *without* a UART. Yup, we're bit-banging 9600 while scrolling an 80*25 16-colour screen, and not losing a single character!) The 6800 (and the 6502) have fast interrupt response times. Since the longest instructions are only a few cycles long (7 on the 6502!), the interrupt is recognized quickly; on an 8088, I believe that it must wait for the current instruction to finish (meaning up to 200 clock cycles!). The CPU's instruction pointer is only 16 bits, and the flags only 8 bits, meaning that only three bytes absolutely need be stacked before the interrupt service routine is called; on an 8088, those numbers are doubled. On a 6502, an 8 bit push instruction takes two clock cycles (arguably one for the instruction fetch, the other for the register write); on an 8088, a memory access is four clock cycles (lending credence to the old saying that a 4.77 MHz XT isn't any faster on byte shuffling than a 1.02 MHz 6502 a la PET or Apple ][). If the interrupt routine decides to stack the enture CPU state, the 6502 has only a couple registers to push, while the 8088 has several. The bottom line is that a 1 MHz 6800 can probably react to an interrupt request and begin useful processing in less than 20 microseconds. A 4.77 MHz XT, however, may require 60! In terms of raw performance, the 8088 may be more powerful than the 6800, but it is mush slower at shuffling bytes. You're not likely to need longword division in an interrupt service routine, so the bigger processor is at a disadvantage... on the other hand, the long instructions are more likely to show up in the application being interrupted, so the bigger processor is again at a disadvantage. >That's the real trick: finding a program that is efficiently >written, properly supports flow control, scrolls fast, properly >schedules writes to disk to avoid slowdowns, etc. Hayes >Smartcom Exec is one such program (its what I use), but I'm sure >you can get plenty of recommendations for good programs that can >keep up with 9600 or 19200 on a 4.77 MHz PC. With a UART, 9600 bps on a 4.77 MHz XT should not be a problem unless you're throwing something really nasty at it (like multitasking, Perstor ARLL controllers, or truly shabby code). 19200 usually causes trouble. On 286 ATs, accessing extended memory from DOS (i.e. taking the processor from protected to real mode) is also a source of trouble. >So, anyway, my advice is, "go for it". Never hurts. If it works, don't fix it! If not, the 16550 is an easy solution (assuming that your software supports it). -- Geoffrey Welsh - Operator, Izot's Swamp BBS (FidoNet 1:221/171) root@zswamp.uucp or ..uunet!watmath!xenitec!zswamp!root 602-66 Mooregate Crescent, Kitchener, ON, N2M 5E6 Canada (519)741-9553 "He who claims to know everything can't possibly know much" -me