IMD 1.15: 15/05/2007 13:49:22 fog mis 015         1-10F C 1-11 C 1-12H C 1-12V C !1-14 C "1-15 C #1-16 C $1-19 C %1-20 C &2-2 C 'AUTOST OSZBP C (C DOC)*CONFIG TXTDISK DOC,MODEM SETMODEMS CPK  MODEMS DOCV PRIME C +CRCKLISTCRC - Auto Start Programming Trick for the Osborne I Computer By: Kelly Smith, applications programmer for Wizard of OsZ Here is a handy little assembly language programming trick, to force your Osborne I computer to execute the 'auto start' function (built into the CP/M operating system and the Osborne I BIOS), three different ways. Edit, assemble, and load this simple program with ED, ASM, and LOAD provided on your CP/M utility diskette (make sure that you name-FOG/MIS0151-03 C  1-04 C  1-05 C 1-06 C 1-07 C 1-08 C 1-10 C   tart' provided by Osborne Computer Corporation. ; ; --- Auto Start patch program for Osborne I Computer --- ; By: Kelly Smith, applications programmer, Wizard of OsZ ; org 100h ; base equ 0 ; base of CP/M system memory auto equ 244h ; auto staclearing the screen, then it will display the message: Osborne Computer System 60K CP/M 2.2A ...and then display the CP/M operating system 'A>', waiting for your command input from the keyboard. rt vector offset autost equ 0 ; auto start control value, where: ; 0 = Osborne signon message ; 1 = load AUTOST.COM on 'cold/warm boot' ; 2 = load AUTOST.COM on 'cold boot' only ; ; note: when using value 1, AUTOST.COM will ;  - Auto Start '1' - If 'auto' has a value of '1', it will 'loop' continuously...that's because it has nothing better to do! If you include a 'special application' (written in assembly langu 'loop' continuously unless it is ; linked to load an additional file ; BEFORE the 'jmp base' lhld base+1 ; get 'warm boot' vector address to jump table lxi d,auto ; get auto start vector offset dad d ; make vector address pointage) just before the 'jmp base', every RESET or 'warm boot' with keyboard CTRL-C (CTRL and C pressed simultaneously) will cause your application program to run again (and again, and...). - Auto Start '2' - If er mvi m,autost; force to auto start control value ; <-- insert additional code here, if using ; a value of 1 for auto start jmp base ; do 'warm boot' ; end Osborne I is a trademark of Osborne Computer Corporation 'auto' has a value of '2', no auto start will occur, and the system will immediately execute the CP/M operating system, displaying only the 'A>' prompt...nice, if you are tired of waiting out the lengthy sign-on with the 'standard auto s CP/M is a trademark of Digital Research Wizard of OsZ is a trademark of Wizard of OsZ orporation auto start jmp base ; do 'warm boot' ; end Osborne I is a trademark of Osborne Computer Corporation  it AUTOST.ASM, when you edit it!), then press RESET on the front of your Osborne I computer. - Auto Start '0' - If the label 'auto' is equated to a value of '0', your Osborne I will signon by first   ditiona $5 (approx.). CP/M SUPERCAL AN MBASIC Thes disc nee n change (vi "SETUP" becaus th outppu default o eac dis ar "Standar Serial an "120 Baud (120cps) whic ar exactl correc fo th Okidata. WORDSTAR Thi dis mus b change vi th "INSTALL progra a follows: 1.Pu th CP/ Utilit dis int driv A Boot Pu Wordsta int B. 2.Typ INSTAL C t ru th INSTAL program. 3.Answe t th firs question w wan t modif Wordstar. 4. men i displayed Choos optio - w wan t re-instal Wordsta the exi t CP/M. 5.Fil name B:WS.CO C (Th fil nam o Wordstar). 6.Fil name B:WS.CO C (fo savin th installe version.) 7.Th Termina Men i the displayed Selec optio U i.e w leav th Osborn a th terminal.Confir Y. 8.Th Printe Men i the displayed Choos optio - an teletype-lik printe tha wil no backspac (th Okidat wil no backspace) Confir Y. 9.Th Communication Protoco Men CONFIGURIN A OKIDAT 82 PRINTE FO A OSBORNE Th Okidat 82 i hig qualit 12 character pe secon do matri printe whic cost les tha $50 (vi mai order) Th cabl t hoo i t th Osborn RS23 (serial por cost a ad i the displayed Choos optio - n protocol Confir Y. 10.Th Drive Men i the displayed Choos optio - CP/ Lis device Confir Y. 11.Modification complete Answe Y. 12.The re-confir everything. Changin th Okidat fro 1  o SETU an INSTALL M thank t Ton Rac o Tota Busines Systems wh installe m cable wrot th Assembl code an showe m ho t d al this. Al Humphrie 985-9062 APPENDIX  1.Ge int Wordstar Create/Edi No documen fil OKI.AS an typ i i exactl a listed Sav i o disc. 2.Pu th CP/ UTILIT dis int th drive th dis wit OKI.AS i th B. 3.Typ AS B:OKI.BB C Thi assemble th progra an LISTIN O OKI.ASM ;PROGRAM TO SET 10 OR 16.5 PITCH ;ON THE OKIDATA 82A PRINTER ; ORG 0100H INPUT: EQU 1 DISP: EQU 9 PRINT: EQU 5 BDOS: EQU 5 CR: EQU 0DH LF: EQU 0AH ETX: EQU 024H ; JMP START MSG1: DB '**OKIDATA PITCH CHANGE PROGRAM**' create intermediat fil OKI.HE AN OKI.PR whic ar writte t th disc. 4.Typ LOA B:OK C Thi create o th dis comman fil OKI.CO whic ca b ru fro CP/M. 5.Delet OKI.HE an OKI.PRN. 6.PI OKI.CO ove t you Wordstar Su DB CR,LF,ETX MSG2: DB 'ENTER 0 FOR 10 PITCH OR 1 FOR 16.5' DB ' PITCH',CR,LF,'?',ETX START: LXI D,MSG1 MVI C,DISP CALL BDOS PROMPT: LXI D,MSG2 MVI C,DISP CALL BDOS MVI E,0FFH MVI C,INPUT CALL BDOS SUI 030H JZ PT10 ADI 030H SUI percal an MBASI discs. 7.T chang characte pitc fro (say Wordstar us th optio i N FIL t ru OKI choos optio fo 1 character fo 16.5 Th printe 70 i no se an OK mus b re-ru t chang i again T chang pitc031H JZ PT16 JMP PROMPT PT10: MVI E,01EH MVI C,PRINT CALL BDOS MVI E,0DH MVI C,PRINT CALL BDOS JMP QUIT PT16: MVI E,01DH MVI C,PRINT CALL BDOS MVI E,0DH MVI C,PRINT CALL BDOS QUIT: RET END  whe i Supercal o MBASIC exi t th CP/ System ru OKI the retur t Supercal o MBASIC. Also Appendi i th ne Osborn manua "Modifyin Wordsta o th Osborn 1 (Page A- throug A-12 give goo descriptio o th us  t 16. characte pitc o vic versa. W ru progra calle OK whic send signa ove t th printe t chang pitches Th listin fo OK i give i th Appendix Th procedur fo creating compilin an runnin OK i a follows:    SYS files are changed to type BAK whether this byte is set or not. 0107 FF <--- 0FFH if you want program to come up in expert (XPR) mode without calling A>MODEM X else zero if you want menu or X command you have a PMMI Modem board, with base port set at 0E0H, and do want backup (.BAK) copies (if the file being received already exists), the program will run as is. If not, make the patches listed below. Use the L command ( L100 ) of DDT or SID to lis. You will probably want to leave this at 0FFH since new users can toggle this on with the XPR command. 0108 FA <--- 0FAH for 20 pulses/sec dialing PMMI (PMMI modem only). 7DH if your ONLY phone exchange is older and needs t the program and use the S command to make the following changes: 0100 C3 3E04 JMP 043EH <--- Do not change (Note: The L command of DDT or SID displays 0FFH as "RST 07" and 0 as "NOP") 0103 FF <--- 0FFH if PMMI modem, else zero. Supe a slower dialing rate. 0109 DB XX IN XX <--- Put modem status port in 010AH (Base port if PMMI). SuperBrain users should put 59H here for main status. 010B C9 RET If you do not have a PMMI modem, make the following patches rBrain users should put zero here. 0104 FF <--- 0FFH if Imsai with front panel, else zero. SuperBrain users should put zero here. 0105 FF <--- 0FFH if 4 MHz Z-80 (or maybe fast 8085) else 0. SuperBrain users should use 0also: 010C D3 XX OUT XX <--- Put modem data port in 010DH. SuperBrain users should put 58H here for main data. 010E C9 RET 010F E6 XX ANI XX <--- Put bit tested when modem ready to send in 0110H. SuperBrain users need makFFH 0106 FF <--- Zero if you want files that exist to be deleted if a file of the same name is sent in multifile transfer. 0FFH if you want the existing file to be changed to type "BAK". Note: In CP/M 2 existing R/O or e no change. 0111 C9 RET 0112 FE XX CPI XX <--- Same as 0110H if port uses positive logic (JZ). Hex zero if port uses negative logic (JNZ). SuperBrain users need make no change. 0114 C9 RET 0115 DB XX IN XX <--- Put modem data p SET UP ROUTINE FOR THE CP/M MODEM PROGRAM. Version 7.31 11/14/81 This information is given for those who do not wish to re-assemble the modem program for their system because they do not have MAC, do not have the source code, or are lazy. If   WORDSTAR for word processing"pQ X% : Y%Y% : npV S% : ,q[ B$"- SUPERCALC for creating data tables and"@q` Y%Y% : naqe B$" testing 'what if...?'"uqj Y%Y% : nqo qt B$"- BASIC by Microsoft and CBASIC"qy Y%CPI XX <--- Same as 0119H if port uses positive logic. Hex zero if port uses negative logic. SuperBrain users need make no change. 011D C9 RET 011E C3 XXXX JMP XXXX <--- 011EH contains a jump to a modem or port initialization routi*C #: 14901 Sec. 0 - General Sb: #PMMI 06-Jun-82 20:20:07 Fm: Jay Feldman 70171,112 To: ALL Could someone please explain to me what a PMMI modem is and who makes it. I use a D.C. Hayes Smart Modem but that doesnot say musc for my lackne. If your modem does not need to be initialized, put a RET (C9H) in 011EH .If you need initialization, write your routine for the memory location addressed by the jump. The initialization routine must end with a RET instruction.  of knowledge on modems. I ask this question because I see so ' many of the modem programs in Access refer to the PMMI. Thanks. *E *C #: 14910 Sec. 0 - General Sb: #14901-PMMI 06-Jun-82 21:04:42 Fm: Gary Novosielski 70160,120 To: Jay FYou have approximately 190 (decimal) bytes for the routine. SuperBrain users would probably want to put a RET in 011EH if they have properly set the number of data and stop bits and the parity with CONFIGUR or ACTIVATE. Yoeldman 70171,112 (X) PMMI stands for Potomac Micro Magic Incorporated. Don't have the address handy, but they advertise in Byte. *E *C #: 14911 Sec. 0 - General Sb: #14901-#PMMI 06-Jun-82 21:04:48 Fm: CDP Corp. 72435,222 To: Jay Feldu are finished. Leave DDT (using ^C) and type SAVE 37 MODEM.COM END of FILE. ET in 011EH if they have properly set the number of data and stop bits and the parity with CONFIGUR or ACTIVATE. Yoman 70171,112 (X) Jay, the PMMI is an S-100 modem that is widely used and generally the most accepted (by the S-100 public). It has several advantages over other modems, and has a programmable filter (on/off) that will allow it to operate at speedsort (again) in 0116H. SuperBrain users should put 58H here for main data. 0117 C9 RET 0118 E6 XX ANI XX <--- Put bit tested when modem ready to receive in 0119H. SuperBrain users need make no change. 011A C9 RET 011B FE XX   you are evaluating? What about the "best" triple modem for s-100 RCPM, etc. usage? Thanks, Charlie. *E *C #: 14959 Sec. 0 - General Sb: #14930-#PMMI 07-Jun-82 18:29:55 Fm: CDP Corp. 72435,222 To: Sysop Charlie Strom 70210,104 (X) ChaPMMI is based mostly on the motorola 6860 modem chip. It is made by Potomac Micro-Magic Inc. in VA and costs about $360 retail. Their service is excellent, and they will even replace couplers blown by lightning strikes for free. If you don't have anrlie, I haven't talked to PMMI in a month or so, but suspect they are no further along. They had some other things they were working on, when I last spoke to them, so they may not have even resumed their 212A development (then again, they may have...). S-100 machine, this modem is not for you. But if you do, then I'd suggest a real close look. PMMI is rumored to be working on a 212A (1200 baud) modem, but it is probably a long way in the distance, due to the death last winter of the company's found About the RV, I can definitely recommend it, but don't think they will be shipping them for a month or so. Like I said, I'll keep you posted whenever anything changes. We will definitley be using this modem inside our machines, so I expect to seer. I'll be happy to give you more info if you want, just let me know. -Dave Hardy *E *C #: 14930 Sec. 0 - General Sb: #14911-#PMMI 07-Jun-82 04:33:38 Fm: Sysop Charlie Strom 70210,104 To: CDP Corp. 72435,222 (X) Dave, I'me a lot of them within the next 6 months or so. With any luck, the large quantity will also get the price down, too. I've looked at the possibility of mounting the modem on an S-100 card, and think it should be relatively simple for any hacker who surprised to hear that PMMI is still rumored to be working on a 1200 baud unit. Any further details? I'm on the verge of purchasing 2 units, but am certain I cannot wait for the PMMI's. I need a recommendation for the immediate. How about the R-V unit  has a few spare parts and a prototype S-100 card. About the "best" triple modem, the 3451 wins hands down. A few peculiarities for programming, perhaps, but absolutely the best triple I've seen. I know of only 2 other companies that make modems  up to 600 baud. Of course, the only thing it can talk to at 600 is another PMMI or a Racal-Vadic modem or maybe a few others, but if you call all around the country getting programs, etc., the double speed of 600 baud can save you some real $$$. The   ports 212a as well as VA3400 protocol. If you can spare about $700, you will not be disappointed. For what it is worth I see that vadic is announcing 2400 baud full duplex (VA-4400) for standard dial up telephone lines. It will be sometime before itps -Dave *E *C #: 14963 Sec. 0 - General Sb: #14959-#PMMI 07-Jun-82 19:28:37 Fm: Sysop Charlie Strom 70210,104 To: CDP Corp. 72435,222 (X) Dave, thanks for the detailed modem report. Its very helpful. I'll probably go for the 3451 ( is priced and packaged so that the home user or small bussiness can afford it, or before CompuServe supports it, but, higher speeds are on the way. For what is worth - Frank *E *C #: 14976 Sec. 0 - General Sb: #14963-#PMMI 07-Jun-82 20:quan 2) then. Is there any peculiarity in coupling to the switched network like exclusion key phones, programmed jacks or other gimmings or do i just parallel it using a Y-connector with my phone or what? The reason I ask is that every time I have purc40:19 Fm: Frank Ivan 70003,2244 To: Sysop Charlie Strom 70210,104 (X) Charlie, If you get the AJ unit (it is virtualy the same and manufatured under license from Vadic) you don't need exclusion key just Y connector for standard jack. If you have ehased a 212A modem I've screwed up in this regard! Thanks again, Charlie. *E *C #: 14974 Sec. 0 - General Sb: #14930-#PMMI 07-Jun-82 20:31:05 Fm: Frank Ivan 70003,2244 To: Sysop Charlie Strom 70210,104 (X) Charlie, Excuse me for butxclusion key, you can restrap modem to use it, but I think it is not to your advantage. Unit answers phone with no help, and to place call, you just dial and press a switch on the modem to hold the line. Believe me - you can't go wrong with AJ units -ting in, however. The best triple modem is the Racal-Vadic/Anderson Jacobson triple modem, if you can afford it. They even have auto-dial now. This unit is without a doubt the best modem on the market. It runs 600 baud cross country just fine, it sup Frank *E *C #: 14979 Sec. 0 - General Sb: #14974-#PMMI 07-Jun-82 21:25:35 Fm: (Sysop) Tom Jorgenson 70120,153 To: Frank Ivan 70003,2244 (X) Frank- Agree re the "Triple" modems...nothing else comes close. What you say is true re ththat are compatible with 103J, 212A, and RV's standard (one of them is japanese), and neither seems to be as good as the 3451. I use a 3451 at work, although I have a PMMI at home, and can complain about neither. Hope this hel  ng forward to talking to you at 1200 -Dave *E *C #: 14991 Sec. 0 - General Sb: #14974-PMMI 08-Jun-82 05:34:55 Fm: Sysop Charlie Strom 70210,104 To: Frank Ivan 70003,2244 (X) Thanks for the opinion Frank. It looks like I'm about to p the AJ's for the price advantage to customer, but not too many people can wait that long... *E *C #: 14984 Sec. 0 - General Sb: #14963-PMMI 07-Jun-82 23:12:24 Fm: CDP Corp. 72435,222 To: Sysop Charlie Strom 70210,104 (X) Charlie, "Y"urchase the R-V 3451's. Expensive, true. I'll have to wait a while before I can afford a 212A out of my own pocket. I won't go with A-J for two reasons - they use R-V's technology, so why not stick with the original source, and more importantly, they g connector should work fine. Just think of it as another telephone... Read down the thread for some more interesting info. A couple of the messages recommend the AJ version of the RV. It's mostly the same. Personally, I am more familiar with the proave me a terrible time when I tried to get schematics for the A242A. We have dozens here, but they stll cahrged me $15 and made me sign in blood not to release the schematics to anyone else. I didn't object to the $, but the time it took to figure out hduct as it comes direct from RV, since we get all of our high-speed stuff from them as an OEM. Do make sure that when you order the modems (from whoever you decide to buy) that you specify the line-connect options, etc. With RV, unless you are orderiow to obtain the doc was a lot more expensive. Charlie. *E *C #: 14995 Sec. 0 - General Sb: #14979-#PMMI 08-Jun-82 06:08:41 Fm: Frank Ivan 70003,2244 To: (Sysop) Tom Jorgenson 70120,153 (X) Tom, Boy that is surprising. Our contacng from a catalog, it's real easy to get a modem that doesn't have the DAA, rack mounts, 120 VAC, etc. I can forward more poop to you about the 3451 if you like, but I suspect that whoever you buy them from will be more than willing to help. Lookit in Cincinatti was delivering them next day a couple of months ago. He is factory rep. but I forget his name. Also Vadic requires exclusion key if I remember correctly. Exclusion key is not hard to rig, just a pain. Oh well - thats the way the cooke 'similarity' between the Vadic and the AJ, one problem exists, however. The Vadic is more expensive, but is available off the shelf, AJ on the other hand takes 12 weeks right now to get -- a bummer for us, since we handle both here. Would rather sell   s I have read about, the Hayes Smartmodem seems the best choice; it has auto answer and auto dial, both of which are features that I want. However, it doesn't have 1200 baud, which is also something I have been thinking about. Do you have any sDA switch (manual ans, voice, data) and don't need any exclusion switched phone. The old ones are easy to modify, just cut the black and yellow wires out to telco, and connect them across a switch, open is voice, closed is data. In fact, the new va345/* Exercise 1-3, page 11 */ /* Print Fahrenheit-Celsius table for f = 0, 20, ..., 300 */ #include "printf.c" main() { int lower, upper, step, fahr, celsius; lower = 0; /* lower limit */ upper = 300; /* upper limit */ step = 20; /* step size *1's come with the Y-connector. Oh, you can't connect the black and yellow wires on the modular to telco on any of these, 'cause TELCO tends to put strange things on these lines, such as another phone line, or aux juice for princess phones, or whatever./ printf("Farenheit-Celsius Table\n"); fahr = lower; while (fahr <= upper) { celsius = 5*(fahr - 32)/9; printf("%5d %5d\n",fahr,celsius); fahr = fahr + step; } }  I usually cut them inside the modem to make sure. -jrp *E *C #: 16428 Sec. 6 - Vendors Sb: #Modem for O-1 29-Jun-82 20:40:03 Fm: Layne DuBose 70235,320 To: (SYSOP) Tom Jorgenson 70003,2244 (X) Tom, I am basically aTHE USER THE ABILITY TO RUN ALL 8080 AND Z80 CODE ON THE Z800 THAT THEY PRESENTLY HAVE WITHOUT SCREWING AROUND WITH AN EMULATOR. WHILE THE 68K IS A NICE CHIP, THERE IS NOT ENOUGH SOFTWARE SUPPORT FOR THE CHIP AT THIS TIME. DR HAS NOT YET RELEASED THEn S-100 nut (CCS 2810 Z-80, 2422, Qume DT-8's, Morrow M-26 etc., but I recently bought an Osborne and wish to put a modem on it. On my S-100 system the PMMI MM-103 serves quite well, but I'm not quite sure what makes sense for the Osborne. Of the modem OPERATING SYSTEM FOR IT AND MANY OF THE ACCOUNTING PACKAGES THAT ARE OUT THERE BEING RUN ON THE Z80 ARE NOT YET SUPPORTING THE 68K. WE WANT TO BE ABLE TO OFFER USERS THE ABILITY TO EASE INTO THE 68K WHEN THE SOFTWARE IS AVAILABLE. WE ARE ALSO TOYING ie crumbles - Frank *E *C #: 15004 Sec. 0 - General Sb: #14976-#PMMI 08-Jun-82 11:53:01 Fm: Digital Research 70007,1001 To: Frank Ivan 70003,2244 Uh, (excuses excuses for buts . . .) The newer va3451p's come with said MA/VO/  ze */ printf("Celsius-Farenheit Table\n"); celsius = lower; while (celsius <= upper) { fahr = 9*celsius/5+32; printf("%5d %5d\n,celsius,fahr); celsius = celsius + step; } } THAT OFFERS EVERYTHING IN ONE PACKAGE. WE WILL BE IEEE 696 COMPATABLE AND WE ARE SETTING UP THE SYSTEM SO THAT ANY IEEE BOARD WILL PLUG INTO THE SYSTEM WITHOUT PROBLEMS. WE WANT TO MAKE IT AS EXPANDABLE AS POSSIBLE AND WE WILL BE USING CP/M - MP/M INISABLE INTERRUPTS AND PREVENT ME FROM CRASHING THE SYSTEM. WITH THE Z800, I CAN'T EVEN ACCESS ANY OF THE MEMORY THAT THE OPERATING SYSTEM IS USING SO IT'S MUCH MORE SECURE. SORRY TO GET CARRIED AWAY! WE ARE DESIGNING OUR SYSTEM PRIMARILY AS A MULTI-UITIALLY FOR THE OPERATING SYSTEMS. NEAL *E *C #: 17223 Sec. 1 - Members Sb: #17208-#8080 Query 10-Jul-82 22:08:35 Fm: GTI Corp. 71555,1773 To: Sysop Charlie Strom 70210,104 (X) CHARLIE, IT WAS A MATTER OF PERFORMANCE... THE Z80 SER SYSTEM. WE WILL HAVE SINGLE USER VERSIONS BUT THE HARDWARE WILL ALREADY BE THERE FOR MULTI-USER IF IT'S NEEDED. NICE LITTLE THINGS LIKE FRONT END PROCESSORS, DMA DISK CONTROLLERS FOR BOTH HARD AND FLOPPY DISKS, PLUS A FEW OTHER THINGS WE HAVE UP OUIS A NICE CHIP BUT THE Z800 IS 100% COMPATIBLE WITH Z80 SOFTWARE (WITH THE EXCEPTION OF SOFTWARE TIMING LOOPS) BUT HAS SO MUCH MORE TO OFFER. IT WILL MAKE MP/M MUCH MORE REALISTIC FOR Z80 SOFTWARE. RIGHT NOW MP/M IS NICE BUT HANG 4 CONSOLES ON IT DOIR SLEEVE. WE HAVE SPENT ALOT OF TIME CAREFULLY EXAMINING MICRO HARDWARE. LOOKED AT CROMEMCO, DYNABYTE, MORROW, GODBOUT, ETC.. WE LOOKED AT EACH COMPANIES WEAKNESSES AND HAVE BUILT A SYSTEM BASED ON THE S-100 THAT WILL SPORT THE LATEST HARDWARE AND FEA/* Exercize 1-4, page 11 */ /* Print Celsius-Farenheit table for c = -40, -30, ..., 140 */ #include "printf.c" main() { int lower, upper, step, fahr, celsius; lower = -40; /* lower limit */ upper = 140; /* upper limit */ step = 10; /* step siTURES. EACH SYSTEM WILL COME STANDARD WITH 256K OF RAM. I'M GOING TO QUIT BEFORE I BORE YOU DEATH.. I'VE GOT TWO THIRDS OF OUR SYSTEM HERE (ONE OF THE PROTOTYPES WITHOUT THE Z800 AND A FEW OTHER GOODIES) AND IT'S REALLY FAST. I'M A REAL NUT ON NOT SWITH THE IDEA OF OFFERING AN OPTIONAL FRONT PANEL. WE WANT TO OFFER A SYSTEM THAT WILL BE PRICED IN AN AREA THAT WILL ATTRACT THE BUSINESS PEOPLE AS WELL AS THE HOBBYIST. OUR APPROACH IS TO TAKE A LONG LOOK AT ALL THE COMPETITION AND TO BUILD A SYSTEM   he only thing we are lacking is the Z-800 cpu chip so we can prototype and test it. We already have an MP/M that we use in-house that will blow the chips off of any plain vanilla MP/M on the market. We had a Ram-disk drive over a year before Godbout eEAL *E *C #: 17236 Sec. 1 - Members Sb: #17223-8080 Query 11-Jul-82 05:29:17 Fm: Sysop Charlie Strom 70210,104 To: GTI Corp. 71555,1773 Neal, you are by no means boring me! Now that I understand your intentions of using the full capabtc. began to offer one. We are in the process of testing what we have already built and hope to be in production the summer of '83. We don't want to rush things. We want to fully test and debug everything before we sell it. By next summer, the hard/* Exercise 1-5, page 12 */ main() /* reverse order Fahrenheit- Celsius table */ { int fahr; for (fah 300 fah > 0 fah fah - 20) printf("%5d %5d\n",fahr,5*(fahr-32)/9); } ware and software will have had about 8 months of testing. Our pricing structure has not really been solidified but we are going to be in the ball park of Dynabyte, Cromemco, Godbout, etc. in price. About the only thing left to do is to decide if we wpricing structure established yet? P.S. If you run DEFALT from command mode (the OK prompt), you will be able to use lower case. You are coming through in upper case only. Regards, Charlie *E *C #: 17343 Sec. 1 - Members Sb: #17236-#8080ant to make a front panel. If we do, it will, like all our hardware, be S-100 (IEEE-696) standard. I'll keep you posted as to our decision. Take care, Neal *K godbout / software / cromemco / ieee *E *C #: 17344 Sec. 1 - Members Sb: #17 Query 12-Jul-82 21:10:04 Fm: GTI Corp. 71555,1773 To: Sysop Charlie Strom 70210,104 (X) Charlie, Our system will be utilizing the full cababilities of the Z-800 and the 68k cpu's. We have designed and prototyped most of the hardware. T293-8080 Query 12-Jul-82 21:17:32 Fm: GTI Corp. 71555,1773 To: Frank Ivan 70003,2244 (X) Frank, our system will be S-100. I wouldn't have it any other way! We won't be making the Z-800 and 68k on the same board. We feel that there would hELLING PEOPLE THINGS THAT CAN'T BE UPGRADED OR EXPANDED. THIS MAY NOT BE WISE FROM A BUSINESS STAND POINT BUT THEN I THINK WHAT WE WILL SURVIVE! REGARDS, ` N  up that shouldn't have. One example was with a new Dynabyte system. 3rd from the top in their product line (at that time). It had a CDC Phoenix drive on it and Dynabyte's version of MP/M had the habit of over-writing the directory tracks if you used e ((c=getchar()) != EOF) { if (c == ' ') ++nb; if (c == '\t') ++nt; if (c == '\n') ++nl; } printf("nb nt nl\n"); printf("%2d %2d %2d\n",nb,nt,nl); } over 50% of the available storage. It turns out that although DR said you couldn't support more than 8 megabytes per drive under MP/M 1.1, Dynabyte decided that DR didn't know what they were talking about and had the drive set up as one 16 meg drive. 21:49:27 Fm: GTI Corp. 71555,1773 To: Sysop Charlie Strom 70210,104 (X) Charlie, At the moment, we have 7 beta sites already set up but I'll keep you in mind! We will not sell one unit until we can be as close to 100% sure of no bugs as can beAs soon as we filled up the first 8 megs, it was crash city. Wonderful way to sell a business system. If we had sold this system to a business and they would have lost all there data, who do you think would have had to take the heat? Us, the dealer possible. We have arranged to put production units in actual business's so we can get the users comments. I really thought the Osborne was going to be terrific but after I used one I was disappointed. No double density, bugs here and there. To me i/* Exercise 1-7, page 18 */ #define EOF -1 #define YES 1 #define NO 0 main() /* replaces multiple blanks with one */ { int c, pb; extern char Cmode; Cmode = 0; /* char at a time entry mode */ pb = NO; /* no previous blank */ whit was a glaring example rushing a product to market. It will be nice once all the bugs are worked out and all the customers have been updated but I used to be a computer dealer (Actually, still am) and I remember all to well the bugs that were showing le ((c=getchar()) != EOF) { if (c != ' ') { putchar(c); pb = NO; } if (c == ' ') { if (pb == NO) { putchar(c); pb = YES; } } } } /* Exercise 1-6, page 18 */ #define EOF -1 /* Ctrl-Z in CP/M */ #include "printf.c" main() /* counts blanks, tabs, and lines */ { int c, nb, nt, nl, Cmode; extern char Cmode; Cmode = 0; /* char at a time entry */ nb = nt = nl = 0; whil  /* Exercise 1-8, page 18 */ #define EOF -1 /* Ctrl-Z in CP/M */ #include "printf.c" main() /* makes tabs, backspaces visible */ { int c; extern char Cmode; Cmode = 0; /* character at a time entry mode */ while ((c=getchar()) != EOF)  { if (c == '\t')printf(">\b-"); if (c == '\b')printf("<\b-"); } } ible */ { int c; extern char Cmode; Cmode = 0; /* character at a time entry mode */ while ((c=getchar()) != EOF) g distance charges, and to respect the privacy of the SYSOPS who are giving generously of their time and effort. =============================================================== General Notes and Comments -------------------------- 1. The systems listed here only carry programs that will run under the CP/M operating system, most of them public domain software distributed by CPMUG or SIG/M, the two main CP/M users' groups. Some of the programs involved (especia   while ((c = getchar()) != EOF) { if (c == ' ' || c == '\n' || c == '\t') { if (inword == YES) putchar('\n'); inword = NO; } else inword = YES; if (inword == YES) putchar(c); } } , however. Ask experienced users in your area, or check through "other systems" listings on local CBBS's, ABBS's, FORUM-80's, etc. Such systems are often listed in files named OTHERSYS.xxx. 2. XMODEM is a modification of Ward Cthem until you get a pair that "agree"; ...these are both good then. 2. You may not send .COM files. You may, however, use the UNLOAD program to create .HEX files from .COM files, and the .HEX files can be sent as in #1., above. The recehristensen's original MODEM program designed to allow the transfer of files between the exchange system and yours. The exchange system needs the program, not you; you will probably be using one of the many versions of MOiving end can then run Digital Research's LOAD.COM to recreate the .COM file from the .HEX file received. 3. You may not be able to transmit some files if they contain certain values, such as hex 1A,...which indicates end of file. 3. DEM itself: e.g., MODEM2, MODEM527, MODEM 926, MODEM7, MODEM71, TRSMODEM, APMODEM, CMODEM, MBOOT3, etc. BSTAM and most of the other commercial terminal programs will not work properly with XMODEM's S or R file transfer modes which Non-XMODEM program transfer systems are starting to appear: e.g., LICC's BBS on Long Island [at (516) 561-6590; 110-600+ baud; 24 hrs;no callback] has a few downloadable ASCII files but at present these must be captured like CBBS message/* Exercise 1-10, page 19. */ #define YES 1 #define NO 0 #define EOF -1 /* Ctrl-Z in CP/M */ main() /* prints each word on new line */ { int c, inword; extern char Cmode; Cmode = 0; /* character at a time entry mode */ inword = NO; s and then saved to disk without any error-checking protocol. John Wood, the sysop of Santa Clara CBBS [at (408) 241-1956; 110-600+ baud; 24 hrs, no callback] has announced plans to implement late-night exchanges; whether these willlly those in BASIC, PASCAL and C but also a few in Z-80 or 8080 assembly language) can be converted to run on other machines quite easily. Systems dedicated to downloading programs for the PET, APPLE, TRS-80 and NORTHSTAR do exist  sing getstr() */ char s[]; int lim; { int k, c, input, i; input = 0; while (input != OK) { printf("\nInput file name\n"); k = getstr(s,lim); if (k == -1) { printf("\nError - too many letters\n"); continue; } printf("Filename operated by Dick Mead and Steve Vinokouroff. Others, like Keith Petersen's & CCCC's use a skeletal subprogram for handling messages called "MINICBBS". Their emphasis is on exchanging software, not bulletin board-type information. e is "); printf("%s\n",s); printf("If name OK, type Y\n"); if ((c = getchar()) == 'Y' || c == 'y') input = OK; } } getstr(s,lim) /* gets string of keyboard input */ char s[]; int lim; { int c, i; i = 0; while ((c = getchar()) != '/* Exercise 1-10, page 19. */ #include "printf.c" #define YES 1 #define NO 0 #define EOF -1 /* Ctrl-Z in CP/M */ #define BS 8 /* backspace */ #define OK 1 #define MAXNAME 12 main() /* prints each word on new line */ { int c, chan, inword; \n') { if (c == EOF) exit(); if (c == BS && i == 0) putchar(' '); /* keep cursor on screen */ else if (c == BS && i>0) { s[--i] = '\0'; /* erase char before BS */ printf(" \b"); /* space, BS (delete char at cursor) */ } else if (c >= ' extern char Cmode; char name[MAXNAME+1]; Cmode = 0; /* character at a time entry mode */ inword = NO; getname(name, MAXNAME); chan = fopen(name,"r"); /* opens file for read */ if (chan == 0) { printf("Cannot open file\n"); exit()a' && c <= 'z' || c >= 'A' && c <= 'Z' || c >= '0' && c <= '9' || c == '$' || c == '.' || c == ':') s[i++] = c; else printf("\b \b"); /* illegal char */ if (i == lim+1) return(-1); } s[i] = '\0'; return(i; } while ((c = getc(chan)) != EOF) { if (c == ' ' || c == '\n' || c == '\t') { if (inword == YES) putchar('\n'); inword = NO; } else inword = YES; if (inword == YES) putchar(c); } fclose(chan); } getname(s,lim) /* gets name u); } == ':') s[i++] = c; else printf("\b \b"); /* illegal char */ if (i == lim+1) return(-1); } s[i] = '\0'; return(i use XMODEM is not yet clear. Chuck Forsberg's YAM (Yet Another Modem) program is written in BDS-C, and the source is available on several systems on this list. 4. Some XMODEM systems also operate as real CBBS's, including thos  wly announced RV 3451-lookalike "triple modem". Neither are yet used by an RCPM system. The other systems on RCPMLIST all run either D.C.Hayes or assor- ted brands of external modem. They do not send or receive faster than 300 baud. 11tter, valid; extern char Cmode; Cmode = 0; /* character at a time entry mode */ inword = NO; while ((c = getchar()) != EOF) { if (c >= 'a' && c <= 'z' || c >= 'A' && c <= 'Z') letter = YES; else letter = NO; if (c >= 'a' && c <= . Do not despise things that are free. It is a curious fact in the computer world that value bears almost no relation to price. Some of the best programs for personal computers are in the public domain. They often work better and are bet'z' || c >= 'A' && c <= 'Z' || c >= '0' && c <= '9' || c == '\'') valid = YES; else valid = NO; if (inword == NO && letter == YES) inword = YES; if (inword == YES && valid == YES) putchar(c); else { if (inword == YES)ter supported than software costing hundreds of dollars. And, in terms of documentation, commercial programs do not even come close. 12. And please, most of these systems operate from private home telephones... be courteous and ca putchar('\n'); inword = NO; } } } = NO && letter == YES) inword = YES; if (inword == YES && valid == YES) putchar(c); else { if (inword == YES)/* Exercise 1-12, page 22. */ #define YES 1 #define NO 0 #define EOF -1 /* Ctrl-Z in CP/M */ #include "printf.c" main() /* prints horizontal histogram of word lengths*/ { /* a word is sequence of letters, digits, and apostrophes beginning wies (at ordinary micro modem frequencies). The PMMI (Potomac Micro Magic) modem widely used on the S100 RCPM's is often run at 300, 450, or 600 baud. Two other brands of modem will run at 600: the IDS on-board S-100 modem and Novation's neith a letter */ int i, j, c, nc, nw, inword, letter, valid; int length[12]; extern char Cmode; Cmode = 0; /* character at a time entry mode */ inword = NO; nc = nw = 0; for (i = 0; i < 12; ++i) length[i] = 0; while ((c = getchar()/* Exercise 1-11, page 19. */ #define YES 1 #define NO 0 #define EOF -1 /* Ctrl-Z in CP/M */ main() /* prints each word on new line */ { /* word is sequence of letters, digits, and apostrophes beginning with letter */ int c, inword, le   a program before you bother to download it. If the filetype is AQM or DQC indicating the file is "squeezed", use TYPESQ fn.ft to view it. 16. Be sure to enter BYE before you log off to reset the system for the next caller. If you are hope== NO && letter == YES) inword = YES; if (inword == YES && valid == YES) ++nc; else if (inword == YES) { if (nc <= 10) ++length[nc]; else ++length[11]; nc = 0; ++nw; inword = NO; } } printf("\n\n"); for (i=11; i/* Exercise 1-12, page 22. */ #define YES 1 #define NO 0 #define EOF -1 /* Ctrl-Z in CP/M */ #include "printf.c" main() /* prints vertical histogram of word lengths*/ { /* a word is sequence of letters, digits, and apostrophes beginning w>0; --i) { if (i == 11) printf(" >10|"); else if (i == 7) printf("letters 7|"); else if (i == 6) printf(" per 6|"); else if (i == 5) printf(" word 5|"); else printf(" %2d|",i); for (j = 1; j <= (40*lengthith a letter */ int i, j, c, nc, nw, inword, letter, valid; int length[12]; extern char Cmode; Cmode = 0; /* character at a time entry mode */ inword = NO; nc = nw = 0; for (i = 0; i < 12; ++i) length[i] = 0; while ((c = getchar()[i]/nw); ++j) printf("*"); printf("\n"); } printf(" |________________________________________\n"); printf(" 25 50 75 100\n"); printf(" percent occupancy\n\n"); for (i = 1; i) != EOF) { if (c >= 'a' && c <= 'z' || c >= 'A' && c <= 'Z') letter = YES; else letter = NO; if (c >= 'a' && c <= 'z' || c >= 'A' && c <= 'Z' || c >= '0' && c <= '9' || c == '\'') valid = YES; else valid = NO; if (inword  < 7; ++i) printf("%d:%d ", i, length[i]); printf("\n"); for (i = 7; i < 12; ++i) printf("%d:%d ", i, length[i]); printf("\n"); printf("Total words = %d\n", nw); } == NO && letter == YES) inword = YES; if (inword == YES && valid == YES) ++nc; else if (inword == YES) { if (nc <= 10) ++length[nc]; else ++length[11]; nc = 0; ++nw; inword = NO; } } printf("\n\n"); for (i=15; i) != EOF) { if (c >= 'a' && c <= 'z' || c >= 'A' && c <= 'Z') letter = YES; else letter = NO; if (c >= 'a' && c <= 'z' || c >= 'A' && c <= 'Z' || c >= '0' && c <= '9' || c == '\'') valid = YES; else valid = NO; if (inword    #: 16432 Sec. 0 - General Sb: #16367-Terminal needed. 29-Jun-82 20:57:10 Fm: Bill Cook 70160,250 To: Gene Warner 70345,1304 Gene ZPRO will do it very nicely. I use it at one of my clients with that very configuration regullarly. Tlength[j]/nw > 45) printf(" ^ "); else if (100*length[j]/(3*nw) >= i) printf(" * "); else printf(" "); } printf("\n"); } printf(" |"); for (j = 1; j < 12; ++j) { if (100*length[j]/nw > 45) printf(" ^ "); he only features that will not be available are: Auto dial and auto answer, and I am not at all sure that auto answer will not funtion if the external modem provides it. Auto dial is a little trickier because even if the modem is capable of it yo else if (100*length[j]/(3*nw) >= 1) printf(" * "); else printf(" "); } printf("\015"); /* line feed (for printer); use "\n" for terminal */ printf(" _________________________________\n"); printf(" 1 2 3 4 5 u may not be able to pass the necessary control information to the modem. You would have to try it. Also Modem72 should work again accepting the ability to dial, and to change *E *C #: 16434 Sec. 6 - Vendors Sb: #16428-Modem for O-1 6 7 8 9 10 >10\n"); printf(" letters per word"); printf("\n\n"); for (i = 1; i < 7; ++i) printf("%d:%d ", i, length[i]); printf("\n"); for (i = 7; i < 12; ++i) printf("%d:%d ", i, length[i]); printf("\n") 29-Jun-82 21:34:00 Fm: (Sysop) Tom Jorgenson 70120,153 To: Layne DuBose 70235,320 Layne- For 300 baud operation nothing can beat the Hayes Smartmodem for quality and value/$$$, it has a built-in speaker to make a phone unnecessary, can auto-diauggestions as to what modem or modems I should be looking at? Also, if you carry the modems you recommend, what price and availability applies? I will check back in here every two or three days for your reply. Thanks, Layne *E *C l, auto-answer, has LED display on the front, is rugged construction, and the best modem handbook on the market. List price is $285, our price is $242. 1200 baud modems are MUCH more expensive, stay away from the 202 standard modems - they're effecti>1; --i) { if (i == 15 || i == 10 || i == 5) printf(" %3d|", 3*i); else if (i == 8) printf(" percent |"); else if (i == 7) printf("occupancy |"); else printf(" |"); for (j = 1; j < 12; ++j) { if (100*  YES 1200 01-Jul-82 18:19:18 Fm: Sysop Charlie Strom 70210,104 To: Stan Young 70665,225 (X) Stan, have you seen news of the introduction of a 1200 baud Smartmodem? There have been rumblings for several months, all meeting with a stoney silence e other standard. The price tag on these is a little sobering, though, they both list the same, at $895. The Anderson Jacobson we sell for $760, the Racal Vadic for $825, but the AJ has 12 weeks lead time due to the demand (since theyur'e cheaper) and tfrom Hayes. If the list is indeed $695, it is not what I consider a breakthrough; the Racal-Vadic or AJ triple modems (supportiing both the Bell 212A and Vadic 3400 1200 baud protocols) are only slightly more costly. Charlie. *E *C #: 16520 Seche Vadic is essentially off the shelf... These aren't the only modems we handle, we also carry the less expensive Lex's, the Cat's, the lower priced AJ's -- but the above types are those of preference. I'd suggest that unless you especially need 120. 6 - Vendors Sb: #16506-HAYES 1200 01-Jul-82 20:12:32 Fm: Stan Young 70665,225 To: Sysop Charlie Strom 70210,104 Charlie, the word I got was from Eli Willner, who saw it at Comdex. Arley Dealy provided the price. Seems it finally has arrive0 baud that you stick to the Smartmodem. This is what I use, and there's nothin quite like it! Best regards, Tom *E *C #: 16504 Sec. 6 - Vendors Sb: #HAYES 1200 01-Jul-82 17:46:05 Fm: Stan Young 70665,225 To: SYSOP (Tom Jorgensen) (X)d. If you think about it, Hayes price on the 300 bps version is not exactly low; it just works very well, and provides a lot of neat features. The 1200 bps version is similar. After the supply gets built up, there should be a number of sources for  Tom, do you carry the D. C. Hayes modems? If so, I would appreciate your price on the new 300/1200. List is supposed to be $695. Looking at a couple of months before purchase. Thanks. Stan *E *C #: 16506 Sec. 6 - Vendors Sb: #16504-#HAdiscounted versions. Looks like that is the version that I will be getting in a couple of months. Now, if Compuserve would only provide reasonable rates for 1200 bps service... *E *C #: 16545 Sec. 6 - Vendors Sb: #16506-HAYES 1200 02-vely obsolete. You'd want a 212A standard modem. The best thing going here is a choice between the Anderson Jacobson or the Racal-Vadic "Triples". They not only can talk 212A, but 103 standard (300 baud) as well -- most 1200 baud modems can't handle th  ed to have the modem dial CompuServe at 11:20 or thereabouts so all my messages would be ready at midnight (after the news). Now it only takes 10 minutes to download those same messages and I can stand sitting through that. In any case, I expect that s field too quickly. John Rompel *E *C #: 16561 Sec. 6 - Vendors Sb: #16545-#HAYES 1200 02-Jul-82 15:31:56 Fm: Frank Ivan 70003,2244 To: John Rompel 70110,612 (X) John, There is now an autodial 'triple' that makes the smart modemin a year there will be a $400 AD/AA 300/1200 baud modem. But who wants to wait a year? John Rompel *E *C #: 16597 Sec. 6 - Vendors Sb: #16588-HAYES 1200 03-Jul-82 03:29:53 Fm: John Rompel 70110,612 To: Greg Laskin 70250,252 (X)  look sick from what I have read. My big complaint is the smartmodem doesn't recognize busy or no answer. I think the RV will and can store numbers etc. The autodial is advertised as $75 more. Your right - things do become obsolete too quickly. Why Greg: I've found that even simple RN dumps aren't efficient $$$ wise at 1200. This is due to the transfers between hosts, the signon procedure, etc. It is justified if you consider your time to be worth anything above mimimum wage, however.  don't you like Porunelle (or howeve it is spelled)? Frank *E *C #: 16596 Sec. 6 - Vendors Sb: #16561-HAYES 1200 03-Jul-82 03:29:36 Fm: John Rompel 70110,612 To: Frank Ivan 70003,2244 (X) I came to the conclusion that it is too hard  John Rompel *E *C #: 16603 Sec. 6 - Vendors Sb: #16588-#HAYES 1200 03-Jul-82 07:30:09 Fm: Sysop Charlie Strom 70210,104 To: Greg Laskin 70250,252 (X) You are correct unless your time is worth something, right? I am not overjoyed speto detect busy or no answer because of all the different phone co. hardware. Eventually I will drag in my hardware friend to rig up a pulse dialer and audio monitor. But the 1200 baud in some ways solves my main idea for the auto dial: At 300, I wantnding hours uploading files to CIS when at 1200 baud it would take me 1/3 the time. Of course, I am an exception since I do more file transfers (mostly uploads) than anyone else here. Charlie. *E *C #: 16779 Sec. 0 - General Sb: #16690-#HELP Jul-82 04:11:54 Fm: John Rompel 70110,612 To: Sysop Charlie Strom 70210,104 Ah, but the Hayes unit will have the auto-dial and the audio monitor, etc. I have my "triple" now, but would have liked those features. Everything becomes obsolete in thi   and data terminal lines to the modem as well as receive and transmit data. You need to modify Bye to do what it must to see the ring line in from the modem go high. If you the raise Data terminal ready to the modem, it will answer the phone. The onl MODEMS - AN OVERVIEW FOR BULLETIN BOARD IMPLEMENTORS ----- by David Boruff Maryville, Tennessee 8 September 1981 For the past several months, I've been researching the market in an attempt to find the ay other hard part is to have detect carrier. Bye has several plaeces where it looks for ring and carrier. you will have to patch them all. I wish I could be of more help, but perhaps one of the Apple hackers here can help. Good luck - Frank *E ll-time hot set-up modem to use with my own CBBS-RCP/M system. I've finally made my choice, and perhaps some of my thoughts and observations will help you make yours. To get a bulletin board or remote file transfer system on the air, you need more than just a simple acoustic coupler such as the widely-used Novation CAT. As a minimum, you need a modem which can automatically answer the telephone, run in either answer or originate mode, and offer a high degree of sensitivity, selectivity, and immunity to both electrical and acoustic noise. Although auto-originate is nice, it isn't necessary for a bulletin board system since its primary function is to answer calls, not originate them. But since most peoplWITH BYE FOR APPLE 04-Jul-82 21:04:34 Fm: Frank Ivan 70003,2244 To: - RICK COLMAN 70110,266 (X) Rick, I am not very fimiliar with the Apple, but I can tell you what is required to answer phones etc. First, you must have ring, carrier detect,  ginate modem's tones, but both still use a common shift. With Bell 103 type modems, the answer modem marks at 2225 Hz and spaces at 2025 Hz (a shift of 200 Hz). The originate modem marks at 1270 Hz and spaces at 1070 Hz (again, a shift of 2answer or originate mode may not be obvious, but it is important. Normally, a caller dials up a bulletin board in originate mode, and the bulletin board answers in answer mode. For the unitiated, the originate/answer terms refer primarily to th00 Hz). In practice, the answer modem transmits at 2225/2025, and listens at 1270/1070 Hz, with the originate modem transmitting at 1270/1070, and listening at 2225/2025 Hz. In this manner, both modems can talk at the same time since each ige various tones that are used to transmit and receive data. A binary 1 (or "mark") is transmitted at one frequency, and a binary 0 (or "space") is transmitted at another frequency, (usually lower in pitch then the mark tone). The difference nores the tones its transmits, and only recognizes the tones being transmitted by the other end. This is referred to as a full-duplex system because communication is possible in both directions simultaneously. There is nothing parin frequency between the mark tone and the space tone is referred to as the frequency shift, or just "shift". Ham radio enthusiasts will recognize the mark, space, and shift terms as being hang-overs from teletype terminology. In ticularly magic about the Bell 103 tones, although they were chosen with some thought as to the characteristics of the telephone network. But other frequencies and shifts can and are used by other modems, Other frequency and shift combinations a addition to having a difference in frequency between mark and space, there is also a difference in frequency between answer and originate. Typically, an answer modem's mark and space tones are about 1 KHz higher in frequency than an orire possible, and in fact are used on non-Bell 103 type modems, particularly those capable of running at 1200 baud. But remember that a modem using the Bell 103 type tones can only communicate with another modem using the same tones. A Bell e who implement a bulletin board or RCP/M system also use other systems, the added flexibility offered by an auto-originate modem is worth paying a little more for. The requirement that the modem should be capable of running in either   ing the hits from one end to the other. So we see that the ability to change tones in midstream is important. It should be obvious as well that if you have an answer-only modem, you can't use it to dial-up another bulletin board or time-se complementary mode? Assuming that you have a good connection, it really doesn't matter. But on a noisy telephone line, the frequencies do matter, since certain types of spikes and garbage may affect one tone pair more than the other. Therharing system, since the other end will be using the answer tones when it picks up the phone. What other desirables are there to consider before buying a modem? Well selectivity and sensitivity are very important in that they allow you'ree are those who contend that the high tones are more immune to noise than the low tones, and there are those who contend the opposite. I contend that it depends on the type of noise being encountered, but it is a fact that you can sometimes sa modem to communicate on a marginal telephone line. In this respect, all modems are not created equal. A modem featuring high selectivity usually has some sort of crystal-controlled filtering system to allow it to zero in on the precise mark alvage a bad connection by simply swapping tones. That is, let the answer modem go to originate, and let the originate modem go to answer. If the data is being transferred primarily in one direction only, such as when XMODEM is sending a file, annd space tones its listening for, and to ignore other garbage on the line. High selectivity is very important in an acoustically-coupled modem because the modem may pick up ambient room noise along with the tones. With a popular low-priced modd infrequently listening for a handshake character, "flipping" tones may make all the difference in the world. However, if data is being transferred in both directions equally often, flipping tones probably won't help since you're just transferrem I've played with, I can raise all kinds of havoc by having my stereo going at the same time I'm trying to transfer data. The reason is that if the music contains a frequency close to the frequency of the mark or space tones, the modem wil103 modem can't talk to a Racal-Vadic 1200 baud job, at any baud rate. Okay, enough terminology. What difference does it make whether my modem transmits in originate or answer mode as long as the guy on the other end is using th  t hobbyists prices all use crystal- controlled oscillators to generate the tones, and since this type of circuitry is cheap to design and manufacture, stability isn't much of a problem with all but the cheapest of modems. However, an acouither type of modem. Sensitivity is also a big deal, since it determines how low a signal level you're modem can work. A highly-sensitive modem can pull a signal out of the mud where a less-sensitive modem would either fail to hear anythistically- coupled modem can get fouled by the telephone microphone element. The tones could be generated by the modem right on frequency, but if the carbon microphone element used in most handsets has packed down, the tone could be transmitted ng at all, or at least would plague you with drop-outs everytime a little pop ambled by on the line. As with selectivity, sensitivity is more important with an acoustically-coupled modem than with a direct-connect modem simply because the ddown the telephone line either distorted or shifted in frequency. Replacement microphone elements are available, such as the Novation Super Mike, which are superior to the elements used by Ma Bell. I can testify from personal experience irect-connect modem won't have to listen for the tones through any room noise it might pick up. Both sensitivity and selectivity have to do with how well a modem will receive data. But when transmitting data, the frequency stabilitthat the Novation element does work and has frequently made all the difference in the world on some connections. If you go with an acoustic modem, no matter how good it is, I would definitely recommend that you install a Super Mike as standard ey of the tones being generated is important. You don't want a tone oscillator that drifts off frequency, especially if the other guy is using a modem with very sharp filtering ("high selectivity"). The best modems currently available aquipment on your modem telephone. Its a ten buck miracle. From the previous discussion, you may get the impression that a direct- connect modem is definitely superior to an acoustically-coupled job. Theoretically, this line of reasol get confused unless it really notches out everything except the tones its looking for. With a direct-connect modem, you avoid the problem of room noise, but noise, ringing, and echoes on the line still make high-selectivity very desirable in e  several of the high-priced Racal-Vadics (all Bell 103-compatible). In my opinion, you're going to have to spend a big (as in BIG) wad of money to get a Penril or some other top-of-the-line "professional-quality" modem that will work  bulldozer. When the handset is inserted in the coupler, you have to strain your neck to see the receive-data and carrier-detect lights, and it takes too long to acquire carrier-detect. But when the going gets tough and a lot of other highly-touted any better at the basic level than my Datec. So don't let anybody tell you that a direct-connect modem will "always" outperform an acoustically-coupled modem. If all other factors and basic specifications are the same, a direct- connmodems are ready to throw in the towel, Datec just hums right along. With a Super Mike-equipped handset, the Datec is a damn fine piece of equipment. Hobbyists seldom use them, but professionals swear by the entire line of Datecs. ect modem WILL do a better job. But a well-designed acoustic coupler will run circles around a poorly-designed direct-connect modem every time. A companion article may be available on this system reviewing a newcomer to the di If you want a basic originate/answer modem with performance second-to-none, and you don't need all the fancy auto this and auto that, the Datec 32 and a Novation Super Mike is what you want. Why this testimonial about a bare-bones acousrect-connect super modem market, the D. C. Hayes Smartmodem. Anyone thinking of using this new product on a CBBS or RCP/M type system should read this review before making your purchase. tic modem when we're talking about super-modems? Simply this: the Datec acoustic can outperform some of the best direct-connect modems on the market today including the CATs, U.S. Robotics, D. C. Hayes Micromodem 100, Microconnection, and ning is correct. In actual practice however, change "definitely" to "maybe". My arsenal of computer equipment presently includes a Datec 32 originate/answer acoustic modem, and I can't speak highly enough of it. Its ugly as sin and bulky as  ; printf("Total words = %d\n", nw); }  printf("%d:%d ", i, length[i]); printf("\n"); for (i = 7; i < 12; ++i) printf("%d:%d ", i, length[i]); printf("\n")   { len = k*(MAXLINE-1) + len; if (len > max) { max = len; if (k == 0) /* no maybe[] was stored */ copy(line, save); else copy(maybe, save); } k = 0; } } if (max >0) /* there was a line */ { printf("max line length = %d\n", max); printf("%s", save); } } getline(s, lim) /* get line into s, return length */ char s[]; int lim; { int c,i; for (i=0; i < lim-1 && (c = getchar()) != EOF && c != '\n'; ++i) s[i] = c; if (c == '\n') {/* EXERCISE 1-14, PAGE 27 */ #define MAXLINE 20 /* maximum input line size */ #define EOF -1 /* Ctrl-Z in CP/M */ #include "printf.c" main() /* find longest line */ { int k; /* overrun counter */ int len; /* current line length */  s[i] = c; ++i; } s[i] = '\0'; return(i); } copy(s1, s2) /* copy s1 to s2; assume s2 big enough */ char s1[], s2[]; { int i; i = 0; while ((s2[i] = s1[i]) != '\0') ++i; } int max; /* maximum length seen so far */ char maybe[MAXLINE]; /* possible longest line */ char line[MAXLINE]; /* current input line */ char save[MAXLINE]; /* longest line, saved */ extern char Cmode; Cmode = 0; /* character at a time entry mode */ max = k = 0; while ((len = getline(line, MAXLINE)) > 0) { if (line[len-1] != '\n') /* then line too long */ { ++k; if (k == 1) /*save the first part of the line */ copy(line, maybe); } else /* the line has terminated */  MAXLINE]; /* current input line */ extern char Cmode; Cmode = 0; /* character at a time entry mode */ while ((len = getline(line, MAXLINE)) > 0) if (len >= 80) printf("%s", line); } getline(s, lim) /* get line into s, return length */ char s[]; int lim; { int c,i; for (i=0; i < lim-1 && (c = getchar()) != EOF && c != '\n'; ++i) s[i] = c; if (c == '\n') { s[i] = c; ++i; } s[i] = '\0'; return(i); } /* EXERCISE 1-16, PAGE 27 */ #define MAXLINE 1000 /* maximum input line size */ #define EOF -1 /* Ctrl-Z in CP/M */ #include "printf.c" main() /* remove trailing blanks and tabs */ { int i; /* character pointer */ int len; /* current line length */ char line[MAXLINE]; /* current input line */ extern char Cmode; Cmode = 0; /* character at a time entry mode */ while ((len = getline(line, MAXLINE)) > 0) { for(i=(len-2); (line[i] == ' ' || line[i] == '\t') && i >= 0; /* EXERCISE 1-15, PAGE 27 */ #define MAXLINE 1000 /* maximum input line size */ #define EOF -1 /* Ctrl-Z in CP/M */ #include "printf.c" main() /* print any line longer than 80 characters */ { int len; /* current line length */ char line[   s[i] = c; if (c == '\n') { s[i] = c; ++i; } s[i] = '\0'; return(i); } return length */ char s[]; int lim; { int c,i; for (i=0; i < lim-1 && (c = getchar()) != EOF && c != '\n'; ++i)  /* EXERCISE 1-19, PAGE 31 */ #define TAB 8 /* tab spacing */ #define EOF -1 /* Ctrl-Z in CP/M */ main() /* replaces tabs with blanks */ { int c; /* next character */ int k; /* position counter wrt tab */ extern char Cmode; Cmode = 0; /* character at a time entry mode */ k = 1; while ((c = getchar()) != EOF) { if (c == '\n') { k = 1; putchar(c); } else if (c == '\t') { while (k <= TAB) { putchar(' '); ++k; } k = 1; } else { putchar(c);  ++k; if (k > TAB) k = 1; } } }  } else if (c == '\t') { while (k <= TAB) { putchar(' '); ++k; } k = 1; } else { putchar(c);  --i) { line[i] = '\n'; line[i+1] = '\0'; } printf("%s", line); } } getline(s, lim) /* get line into s, return length */ char s[]; int lim; { int c,i; for (i=0; i < lim-1 && (c = getchar()) != EOF && c != '\n'; ++i) !   int m; /* dummy variable */ extern char Cmode; Cmode = 0; /* character at a time entry mode */ i = k = 0; while ((c = getchar()) != EOF) { if (++k > TAB) k = 1; if (c == '\t') { i = k = 0; putchar(c); } else if (c == '\n') /* print stored blanks and reset */ { for (m = 1; m <= i; ++m) putchar(' '); i = k = 0; putchar(c); } else if (c == ' ') { if (k == TAB) { putchar('\t'); i = 0; } else ++i; /* save it */ } else /* it's the next non blank character */ { while (i > 0) { putchar(' '); --i; } putchar(c); } } } se if (c == ' ') { if (k == TAB) { putchar('\t'); i = 0; } else ++i; /* save it */ } else /* it's the  /* EXERCISE 1-20, PAGE 31 */ #define TAB 8 /* tab spacing */ #define EOF -1 /* Ctrl-Z in CP/M */ main() /* replaces blanks with tabs + blanks */ { int c; /* next character */ int i; /* blank counter */ int k; /* position counter wrt tab */"   trap for "ffff" = -1 input */ printf("%s",s); /* print input string */ if (k == 4) /* then input = ffff */ { printf(" hex = -1 signed decimal\n"); printf("equals 65535 unsigned decimal\n\n"); k = 0; } else { k = 0; h = htoi(s); if (h == -1) printf(" input error\n\n"); else { printf(" hex = %d signed decimal\n",h); printf("equals %u unsigned decimal\n\n",h); } } for (j = 0; j <= i; ++j) /* re-initialize array */ s[j] = '\0'; /* Exercise 2-2, page 42. */ #include "printf.c" #define EOF -1 /* Ctrl-Z in CP/M */ main() /* tests function "htoi(s)" */ { int h; /* decimal representation */ int i; /* input character counter */ int j; /* local loop counter */ int k; i = 0; } } } htoi(s) /* convert hex char string s[] to decimal integer */ char s[]; { int i; /* array index */ int n; /* decimal result */ i = n = 0; while (s[i] != '\0') { if (i > 4) return(-1); if (s[i] >= 'a' && s[i] <= 'f') /* "ffff" input flag */ int c; /* input character */ char s[5]; /* input data */ extern char Cmode; Cmode = 0; /* character at a time entry mode */ i = k = 0; while ((c = getchar()) != EOF) { if (c != '\n') { if (i > 3) { printf(" n = 16*n + s[i] - 'a' + 10; else if (s[i] >= 'A' && s[i] <= 'F') n = 16*n + s[i] - 'A' + 10; else if (s[i] >= '0' && s[i] <= '9') n = 16*n + s[i] -'0'; else return(-1); i++; } if (i == 0) return(-1); /* empty input string */ retutoo many input characters\n\n"); for (j = 0; j <= i; ++j) s[j] = '\0'; i = 0; /* re-initialize array */ } else s[i++] = c; } else { s[i] = '\0'; for (j = 0; s[j] != '\0'; ++j) if (s[j] == 'f') k = k + 1; /*rn(n); } [i] <= '9') n = 16*n + s[i] -'0'; else return(-1); i++; } if (i == 0) return(-1); /* empty input string */ retu#  -9\n"); printf("Enter number 1-9\n\n"); continue; } c = c - '0'; printf("\n\n"); /* printf("%d\n",c); */ /* for terminals with no echo */ beep(c); printf("Enter number 1-9\n\n"); } } beep(d) /* beep for duration d */ int d; { d; /* places d in HL */ #asm ORG 4000H MOV B,H MOV C,L CALL 0EBC9H LDA 2C02H ORI 20H STA 2C02H CALL DLY1 LDA 2C02H ANI 0DFH STA 2C02H CALL 0EBD7H RET DLY1 LXI D,0 DLY2 DCX D MOV A,D ORA A JNZ DLY2 DCR C JNZ DLY1 RET #endasm } STA 2C02H CALL DLY1 LDA 2C02H ANI 0DFH STA 2C02H CALL 0EBD7H RET DLY1 LXI D,0 DLY2 DCX D MOV A,D ORA A J Solutions to C Language Exercises Th file liste belo contai solution t som o th initia exercise i th boo "Th Programmin Language b Kernigha an Ritchi (K&R) The wer compile an teste usin th C/8 compile (versio 2.0 availabl fo $5 fro Th Softwar Toolwork (213 986-4885 C/8 (versio 2.0 doe no hav floatin point. Th statement "exter cha Cmode Cmod 0; caus C/8 t proces character entere a th termina immedia#include "printf.c" #define EOF -1 main() /* tests function beep */ { int c; extern char Cmode; Cmode = 0; printf("Enter number 1-9\n\n"); while((c = getchar()) != EOF) { if(c < '1' || c > '9') { printf("\nEntry must be between 1$  1 1-17 28,59 1-18 31,67 Th progra 1-10F. illustrate readin inpu fro fil whos nam i type i a th keyboar a runtime Th progra contain getname. an getstr.c whic ar usefu fo enterin fil nam fro thle K&R Comments name page 1-3.C 11 Fahrenheit-Celsius table 1-4.C 11 Celsius-Fahrenheit table 1-5.C 12 Reverse order table 1-6. 1 Count blanks tabs an '\n' 1-7.C 18 Removes  Osborn keyboard. Tw unrelate program ar als include o th disk BP. test th beeper PRIME. i th Eratosthane benchmar progra publishe i BYT magazine. extra blanks 1-8. 1 Make tab, backspace visible 1-10.C 19 Prints one word per line 1-10F.C 19 Accepts file input 1-11.C 19 Counts words 1-12H.C 22 Horizontal histogram 1-12V.C 22 Vertical histogram 1-13.C 24 Converts input to lower case 1-14.C 27 Counts linelengths 1-15.C 27 Prints all lines > 80 chars 1-16.C 27 Removes trailing blanks and tabs 1-19.C 31 Replaces tabs with blanks 1-20.C 31 Replaces blanks with tabs 2-2.C 42 Converts hex digits to integer Additionally solution t som o th K& exercise ma b foun late i th book Fo example: Exercise Pages 1-13 24,40 1-16 27,6tel (Cmod 0 instea o afte carriag retur (Cmod 1). Keyboar entr i echoe t th scree becaus C/8 use CP/ BDO functio numbe fo keyboar entry instea o BDO functio numbe 6 whic doe no ech characters. Fi%  ain() { int i, prime, k, count, iter; printf("10 iterations\n"); for (iter = 1;iter <= 10;iter++) { count = 0; for (i = 0;i <= size;i++) flags[i] = true; for (i = 0;i <= size;i++) { if(flags[i]) { prime = i + i + 3; k = i + prime; while (k <= size) { flags[k] = false; k += prime; } count = count + 1; } } } printf("\n%d primes",count); } /* Eratosthenes Sieve Prime Number Program in C */ /* From September 1981 Byte page 186 */ /* Also see January 1983 Byte page 283 */ #include "printf.c" #define true 1 #define false 0 #define size 8190 #define sizepl 8191 char flags[sizepl]; m&   May 1983 g Language by Kernighan & Ritchie. Refer to C.DOC. Jim Woolley FOG Disk Librarian  DISK.DOC FOG/MIS.015 First Osborne Group (FOG) Miscellaneous Disk AUTOST.OSZ is a text file containing information about auto-start. CONFIG.TXT describes interfacing an Okidata 82/83 to the Osborne 1. MODEM.SET identifies patch locations for modifying versions of MODEM7 to interface with any particular computer. MODEMS.CPK and MODEMS.DOC discuss various aspects of modems. The above files were received from the Denver Osborne Group (DOG). The remaining files having type .C were submitted by Bob Briggs. They represent exercises from The C Programming Language by Kernighan & Ritchie. Refer to C.DOC. Jim Woolley FOG Disk Librarian '  8 .C CRC = 82 39 --> FILE: 1-10 .C CRC = B9 E5 --> FILE: 1-10F .C CRC = 1D 7A --> FILE: 1-11 .C CRC = D9 01 --> FILE: 1-12H .C CRC = DD E9 --> FILE: 1-12V .C CRC = B8 EF --> FILE: 1-14 .C CRC = 40 85 --> FILE: 1-15 .C CRC = 31 A8 --> FILE: 1-16 .C CRC = D9 1A --> FILE: 1-19 .C CRC = 4F C1 --> FILE: 1-20 .C CRC = FE B2 --> FILE: 2-2 .C CRC = 09 B6 --> FILE: AUTOST .OSZ CRC = 59 21 --> FILE: BP .C CRC = EA 91 --> FILE: C .DOC CRC = 4A 3E --> FILE: CONFIG .TXT CRC = F8 A5 --> FILE: DISK .DOC CRC = CA F3 --> FILE: MODEM .SET CRC = A6 29 --> FILE: MODEMS .CPK CRC = 98 42 --> FILE: MODEMS .DOC CRC = B6 A4 --> FILE: PRIME .C CRC = 1A 5C ---------------------> SUM OF CRCS = F2 A7 K .DOC CRC = CA F3 --> FILE: MODEM .SET CRC = A6 29 --> FILE: MODEMS .CPK CRC = 98 42 --> FILE: MODEMS .DO --> FILE: -FOG/MIS.015 CRC = 00 00 --> FILE: 1-03 .C CRC = F6 56 --> FILE: 1-04 .C CRC = CA EA --> FILE: 1-05 .C CRC = AC 89 --> FILE: 1-06 .C CRC = FB 7F --> FILE: 1-07 .C CRC = BB 8B --> FILE: 1-0