Issue #21 - July/August 1987

JULY/AUGUST 1987 INDEX
RETURN TO MAIN PAGE
Ramblings From The Ridge
Industry Observations
Bulletin Board
Glitches, Bugs, Errata, Etc.

User Group News
What's An Xmodem? - Part II
Some Design Features Of FORTH
Origins: Video Games, Home Computers, ADAM & ECN
ADAM Printer Interface
ADAM Printer Interface - Patches


Expandable Computer News (ECN) is published bi-monthly by Sage Enterprises. Subscription rates are $15.00 per year (6 issues) U.S. and Canada; $21.00 foreign. All subscriptions payable to Sage Enterprises in U.S. funds only. Send all correspondence (subscriptions, ads, reviews, orders, articles and products) to: Sage Enterprises, Expandable Computer News, Rt. 2, Box 211, Scrivner Rd., Russellville, MO 65074. Telephone 314/782-3448 from 9 am to 4p m CT Monday, Tuesday, Thursday, Friday.
 

Staff: Editor - Darrell R. Sage, Associate - Shirley I. Sage, Cover by Ted Gocal


NOTE: The views expressed by contributors to ECN are not necessarily those of the publisher. ECN and Sage Enterprises are not in any way affiliated with Coleco Industries, Inc. We welcome contributions of original articles, programs, reviews, comments, questions, etc. We are unable to pay for such contributions at this time. Please include a signed statement giving us authorization to use your contribution. We would like to thank all of our subscribers for their assistance–without them this publication would not be possible. Coleco, SmartBASIC, and other Coleco products are registered trademarks of Coleco Industries, Inc.; other trademarks apply to titles of products and are held by those companies referenced.


Sage Enterprises has available for sale a number of products for the ADAM Family Computer System as listed below. To order any of these products send check or money order payable to Sage Enterprises in U.S. Funds to the address listed above. Missouri residents please add sales tax. All prices include shipping and handling.

 

ITEM

PACKCOPY software copier

CONVERT CP/M Disk Transfer Program

Program Library I, II, III (price each)

Program Library 4 (ddp)

Program Library 4 (disk)

Back Issues (#1, 2, 5, 8 thru 20)

Foreign Price

$45.50 US

$40.95 US

$13.30 US

$10.00 US

$7.00 US

$4.00 US each

U.S. & Canadian Price

$41.50 US

$36.95 US

$9.95 US

$7.00 US

$5.00 US

$3.00 US each


Ramblings From The Ridge

 

by D. Sage
    It's that time again. I have been working on this issue for some time, at least I tried to work on it. Following our usual June drought, came heavy July rains accompanied by severe lightning, wind and one small tornado. During the last week I have only been able to use my computers safely for about six hours. It seems like every time I would start, the wind would come up, the sky would darken and thunder would begin to rumble. Natural­ly, I would stop and turn everything off.
    In addition to the storms which produced over six inches of rain in three days, the humidity has been wavering around the dew point nearly every day. Humidity can be a real problem. The computer I use to do most of my writing and record keeping, the Zenith 100, has one disk drive that does not work well when it is humid. When I built my office, I had central air conditioning installed, but I also insulated it real well. As a result, the office stays about 75 degrees or less without running the air conditioner. That means that in order to dry the air out, I either have to turn on the furnace or run the air conditioner set on 70 and fr
eeze. For some reason, it bothers me to run the furnace in my office when the outside tempera­ture is in the 90s. On the other hand, I don't like being cold when I'm working. Well, I chose to compromise. One day I will run the furnace for about an hour in the mornings while I am at my regular job, and the next I turn on the air for about half an hour while I'm home working here. But then there were the thunderstorms that kept me from working altogether.
    The worst part about the thunderstorms has been that I couldn't do anything else either. It's hard to be outside when it's lightning and pouring down rain. So, I spent my time cooped up in the house or out here organizing things. On Sunday when the tornado came through, the power was off for seven hours and it was too dark to do much of anything.
    Now I'm sitting here writing with two fans blowing on the Zenith 100 to keep it cool and dry and backing up what I'm doing about every three sentences.
    If everything goes ok, this issue will include, in addition to the regular columns, another article on Forth, a review of Turbodisk, plans and programs for a printer interface, another article on Xmodem, and the rest of my historical article. We'll just have to wait and see what all will fit.
    Just a reminder. If you undertake any of the hardware projects printed in ECN you must do so with the understanding that ECN and Sage Enterpris­es cannot accept any responsibility for damage that such projects may cause to your computer. Do not attempt these projects unless you are experi­enced in electronics construction. The projects are included in ECN because of expressed interest by a number of readers. The authors have made every effort to test the projects, but they also cannot be expected to accept any liability for equipment failure or damage.
    I also have managed to finish transferring and organizing the Advance Forth package for the ADAM. These materials were made available by Thomas Gilmore and I apologize for the delay. Ordering information is listed elsewhere in this issue. Return to Top


Industry Observations
by D. Sage
    Last time I mentioned IBM's new line of PC's and commented that the attempts at closed architecture were a mistake. I was recently reminded of another of IBM's mistakes and how a company as big as IBM can afford to make pretty big mistakes without it hurting them. Unfortunately, if a smaller company made some of the mistakes IBM has, they would be eaten alive by the press.
    Several years ago IBM, like a number of other companies was doing research on disks and drives to replace the 5 1/4 inch floppy. Sony, of course, was working on the 3 1/2 inch format while other Japanese and European companies were working on a 3 inch drive. IBM, rather than be upstaged, developed a 3.25 inch drive. As it turned out the 3.5 inch Sony drives caught on in the US and elsewhere and the 3 inch drives caught on to a lesser extent in Japan and Europe. IBM ended up scraping their 3.25 drive and went instead with the Sony 3.5. Now a large number of 3.25 drives and disks are shoving up at electronics clearance houses. This means that IBM had actually gone into production on this product and is now dumping those drives and floppies. Although IBM was not capable of forcing the 3.25 drive as a standard, they nevertheless could afford to produce large quantities of them and scrap them with no problem. It has been rumored that IBM has produced a number of products which never made it to the market place. In those cases, IBM actually buried large numbers of computers rather than sell them to liquidators or as electronic scrap. It has been rumored that IBM had large numbers of their new PCs Manufactured and in storage before they made the decision to introduce them.
    Moving right along. Has anyone seen the Amiga 500 or 2000? Do production models of these machines actually exist? I keep hearing rumors that they have been delayed.
    The Atari 520ST is now priced at the level of a Commodore 128. The ST has emulators or add ons that allow it to run IBM, Macintosh, Atari 800, and CP/M software. Rumor has it that a Commodore 64 and an Apple software emulator are also in the works. If Commodore doesn't get the new Amigas out soon and at competitive prices, they may be back in financial trouble. If they had any sense at all they would drop the 64C and lower the price of the 128 to around $150. They could then cut the price of the Amiga 500 (if it ever shows up) to a price competitive to the 520ST. If Commodore does not solve some of these problems by the Christmas buying season, it's my opinion that they could easily be forced into bankruptcy by their creditors. Rumor has it that Commodore is again considering dropping their distributors and marketing direct to retailers in order to reduce prices. That should make the distributors happy.
    Well, it's time to turn out the lights and head for dream world. I'll be back with more next issue. Return to Top


Bulletin Board
    The Bulletin Board is a free service to ECN subscribers. If you have something to sell, need to buy something, need help or just want to correspond with other ADAM owners, send a notice to ECN and we will publish it here.
 FOR SALE: 2 super action controllers & Super Action Baseball - $25; carts - $7.50 each: River Raid, Zaxxon, Subroc, Fix Up/Mix Up Puzzler, MoonSweeper, Oils Well, Venture, Slither. Also closeout prices on remaining software. Also Graphic Mailing Labels with your favorite logo and name - $3.50 per hundred. Send SASE for list or sample labels to Lee Smith, Box 159, Terre Hill, PA 17581.
 HELP:I have a disk drive that will not write properly. The drive will read correctly. For over 10 months a repair shop which specializes in ADAM repairs has tried to fix it. I am told that the problem is an interface chip 6502. The repair shop says the chip is unavailable. If anyone can help please let me know. Wayne J. Henshaw, 5109 Bayfield Crescent, Burlington, Ontario, Canada L7L 3J5. Return to Top


Glitches, Bugs, Errata, Etc.
    Just a reminder that summer is here and your ADAM and its peripherals can be affected by heat and humidity. Since ADAM and disk drives do not have built in cooling systems, you have to keep them cool. Never obstruct the cooling slots with anything. Place a fan at a safe distance (fans can produce electrical interference) and on a separate circuit if possible to help cool your computer and disk drive. High humidity or low humidity can be a problem. Low humidity encourages static, while high humidity can corrode components and disk drive motor surfaces. ADAM will always work better when kept relatively cool and dry.

    I recently received a letter from Timothy N. Ferdinand. The letter is reprinted here for your information.

Dear Mr. Sage:
    I am writing to warn others about ADAMLAND or the International Computer Users Group in Lander, WY. They seemed to be an OK outfit with fantastic ADAM accessories. However, they have refused, (tacitly) after repeated requests, to send merchandise that has already been paid for. Nor have they even bothered to reply.
    In my last letter to them (on 6 June, 1987) I gave them a chance to explain the delays and lack of reply. Unfortunately, they still have not replied.
    I am enclosing copies of all correspondence to ADAMLAND, including my original order of 6 December 1986 — over six months ago.
    I am also writing to other ADAM newsletters about ADAMLAND.
    This is the first time I've been ripped off by an ADAM support group in more than two and one-half years of using and expanding my ADAM.

Sincerely yours,
Timothy H. Ferdinand

Return to Top


User Group News
    The list of users' groups continues to grow. If there isn't one in your area to join - start one!

NATIONAL GROUPS
#1 Adam User's Group
P.O. Box 3761 - Attn: Jay Forman
Cherry Hill, NJ 08034

LOCAL GROUPS
James E. Gilbert
4608 Lakeview Dr.
Huntsville, AL 35810

Victor L. Watford
P.O. Box 777
Russellville, AL 35653

Richard Bains
7210 Bulen Drive
Anchorage, AK 99507

Danny Levitt
4525 S. White Pine
Tucson, AZ 85730

Robert R. Marentes
9425 N. 38th Ave.
Phoenix, AZ 85021

East Bay ADAM Group (EBAG)
Tom Ozretich
6097 Slopview Court
Castro Valley, CA 94552
ph. 415-886-2884

Harvey Klein
So. California ADAM Users
1736 So. Bedford Street
Los Angeles, CA 90035

Frank Fleich
13381-19 Magnolia Ave.
Corona, CA 91719

Central Calif. Adam User's Group
James Turner, Jr.
20110 Ave. 19
Madera, CA 93637

San Diego Adam Users Group
Dr. Harold Alexander
37 Catspaw Cape
Coronado, CA 92118

AUG of San Diego County
868 N. 2nd St. #242
El Cajon, CA 92021
ph. 619/445-2400

Bay Region ADAM Information Network
550 27th St. #202
San Francisco, CA 94131
ph. 415/282-3056

Inland Empire Users Group
Ann Quetel
6644 Seine Ave.
Highland, CA 92346
ph. 714/862-5807

Denver ADAM User's Group
1416 Lipan St.
Denver, CO 80204

ADAM Users Group #305
John F. Busby, II
6634 SW 41st St.
Davie, FL 33314

Emerald Coast ADAM User's Group
Howard Pines
1010 Gloria Drive
Ft. Walton Beach, FL 32548

Robert J. Niemeyer
292 Boca Ciega Point Blvd. N.
St. Petersburg, FL 33708

ADAM User's Group
Michael G. Graham
217 Albert St.
Winter Springs, FL 32709
ph. 305/327-1387

ADAM Support Group
John Moore
1870 Fisher Tr. NE
Atlanta, GA 30345

Hawaii AUG
Harlan Fletcher
2335C Apollo Ave.
Honolulu, HI 96818
ph. 808/422-4019

Donald R. Lager
5415 N. 2nd St.
Rockford, IL 61111
ph. 815/877-7786

KC Users Group
Joe Reardon
1513 Tauromee
Kansas City, KS 66102
913/371-7491

Greater Cincinatti Adam Users Group
c/o Keith Bowman
P.O. Box 434
Alexandria, KY 41001

ADAM Network
P.O. Box 85
East Detroit, MI 48021

Bill & Nancy Rahn
12426-15th St. S.
Afton, MN 55001
ph. 612/436-6577

Outsider's Users Group
Donald Viltiard
P.O. Box 771
Starkville, MS 39759

Omaha ADAM Users Club
Norman Castro
809 West 33rd Ave.
Bellevue, NE 68005
ph. 402/291-4405

Al Roginski
4327 Thorndale Pl.
Las Vegas, NV 89103

Metro Adam User's Group
Russell Williams
414 W. 149th St.
New York, NY 10031
ph. 212/208-0645 (9am-5pm M-F)

Genesee Valley Adam Users
Donald K. Zimmermah
5132 Jordon Road
Silver Springs, NY 14550

ADAM-X-Change (New York & Canada)
Wade Rowley
12863 Washburn
Wolcott, NY 14590

Tri-Angle Adam Users
L-5 Oak Grove
Chapel Hill, NC 27514
ph 919/968-0299

Mutual ADAM Users Group
412 Bettie Street
Akron, OH 44306

Lake Erie Adam Users
2110 W. 36th Street
Lorain, OH 44503
ph. 216/282-8467

Portland Adam Users Group
Craig Frerichs
P.O. Box 1081
Portland, OR 97207

The (717) Adam Users
Steve Chamberlain
120 E. 4th ST.
Bloomsburg, PA 17815

Midsouth ADAM Users
Roger Burford, Lot 142 NAS MHP
Millington, TN 38053

Adam Users of El Paso
Alan Samuels
4821 Vista Del Monte
El Paso, TX 79922

Houston AAUG
c/o Thomas Rutan
1805 14th Ave. N
Texas City, TX 77590

Norfolk ADAM Group
Gerald M. Steen
1000 Rockbridge Ave. #144
Norfolk, VA 23508

ADAM Users Group of Central Virginia
Thomas J. Kelly
3B, Rt. 664
Earlysville, VA 22936

ADAM Washington D.C. Users Group
1811 St. Roman Dr.
Vienna, VA 22180

Puget Sound Adam Network
22607 SE 322nd
Kent, WA 98042
ph. 206/886-1167

Dave Sandahl
USNH, Box 2844
FPO Seattle, WA 98778

CANADA
Robert Dunstan
95 Harland Crescent
Ajax, Ontario L1S 1K2

Derek Townsend
Box 820
Claresholm, Alberta T0L 0T0

Edmonton Adam Users Group
Richard Forges
14712 - 122 St.
Edmonton, Alberta T5X 1V9

J.A. Girard
1420 Ave. Langevin Sud
Alma, Quebec G8B 6B1

Mike Laurier
7350 Roi Rene
Anjou, Quebec H1K 3G6

Mr. G. Hibbert
P.O. Box 10
Mistatim, Saskatchewan S0E 1B0

First Canadian Adam User's Group
P.O. Box 547 Victoria Station
Westmount, Quebec H3Z 2Y6

Winnipeg Adam Users Group
729 Government Ave.
Winnipeg, Manitoba R2K 1X5

Metro-Toronto Adam Group
P.O. Box 123
260 Adelaide St. East
Toronto, Ontario M5A 1N0

AUSTRALIA
The Bendigo Colecovision Club
C1-2 Fenton St.
Bendigo, VIC 3550, Australia

ADAM Owner's & User's Group
4 Norman Street
Deakin, ACT 2600, Australia

ENGLAND
The U.K. ADAM Subscribers
Keith A. Marner
33 Homer Road
Croydon, Surrey, CR0 7SB, England

Return to Top


What's An Xmodem? - Part II
by John Moore
    Around 1981, Chuck Forsberg of Omen Technology wrote a program called YAM (Yet Another Modem program) to attempt to remove some shortcomings of Xmodem protocol. One of those was caused by the faster modems being used which were spending most of their time "handshaking* back-and-forth over the 128-byte blocks.
    Chuck implemented a 1K (1024-bytes) protocol to reduce this. He also added a "batch" protocol so that numbers of files could be transferred without operator intervention. Some primitive batch protocols (like the one in MADAM7) had been in use for years, but the "YAM Protocol" caught on and today is supported on most RCP/M's and many MS-DOS BBS's as well!
    Ymodem CRC works very much like Xmodem CRC. The sender has no way to know that the receiver can handle 1K blocks, so this must be manually selected. The receiver sends a "C", and the transfer begins. The difference is minor. Each 1K block begins with an STX (Start of TeXt - ASCII 02H), so the receiver must look for a value of 1 when summing the first three bytes (instead of zero).
    Under Ymodem, the sender can send both 128- and 1024-byte blocks, alerting the receiver by changing the first number in the block. This has two advantages. If the last block is only partially full, you only have to send 127 bytes of garbage instead of a possible 1023 bytes! Second, if there seem to be an unusually large number of re-sends requested, the program can be designed to switch to the sialler block size to save time (1K block resends take a lot more of that).
    There is no 1K checksum, so if the user selects 1K blocks, and the modem program sends a NAK instead of a "C", the sender will step down to Xmodem checksum with 128-byte blocks.
    The additional enhancement by Chuck Forsberg was the YAM Batch mode. Again, this is selected by the user. The receiving computer sends a "C", and the sender replies with a block (either 128 bytes or 1K in length identified by an STX or SOH) with block 0!
    This is the file header block which contains the filename, exact length, time/date (UNIX-style), and file permissions (also UNIX-style). The receiver uses that information to open a file (and can even check to be sure that space is available for it)! If all is OK, an ACK goes out, and the transfer is on.
    After the EOT, another header block is sent for the next file. If there are no more files, a blank header block is sent to cancel batch opera­tions. Please notice that if someone with an older program selects batch mode, block 0 will throw it for a loop! The result will be repeated NAK's and eventual timeout and abort (but a lot of wasted time)!
    In an attempt to make everything automatic, Irv Hoff wrote the IMP (modem) and KMD (host program) series with automatic selection. In Irv's system, instead of a "C", the modem program starts sending "CK" to tell the sender that 1K blocks are accep­ted. This makes the use of 1K easier, but not without a cost.
    The problems lie in the fact that the "K" is just one more letter that can be garbled - and the fact that the automatic selection of 1K will force the sender to start sending big blocks regardless of telephone line conditions, or other factors which might make 128 byte blocks a better bet. It is recommended that a manual override be provided for the operator to exercise his/her best judgement.
    Irv also apparently misread the Ymodem specific­ation for the header block. Chuck wrote it so that the exact file length in bytes was transmitted. A terminal program could then calculate the number of blocks necessary. Irv added the provision that IMP and KHD transmit as the last two data bytes of block 0 the number of 128-byte blocks in the file.
    Although this application could interfere with some long file names (in the UNIX system), the use of KMD and IMP is so widespread around the world that the author of the Ymodem specification was forced to acknowledge this change and recommend that the incorrect application be made a 'standard' for the sake of compatibility!
    There is presently a Ymodem-G protocol. Not widely used, it is designed only for use on networks (like Telenet and Tymenet) which are essentially error-free themselves. Under this 'subprotocol,' transmission never stops and waits for an ACK and there are no resends. If in error occurs, the transfer is aborted by CAN-CAN. This speeds up transfers considerably.
    Chuck Forsberg continues to lead the way (with the assistance of Ward Christensen and other "pioneers"). In 1985, he announced the specifica­tion for Zmodem. Although there is currently only one actual program using it, Zmodem will automatic­ally compress files to save transmission time (and expand them at the receiver).
    In addition, Zmodem will permit starting a transfer at a specific block (in case a lengthy transfer was "partially" successful. The automatic checking of file lengths and disk space available will make mass transfers of files possible with no human intervention. Variable length blocks will result in no time wasted in transmitting garbage. Hopefully, it will all remain compatible!
    * UNIX time-and-date is the number of seconds that have elapsed since 12:00 midnight GMT on January 1, 1970! Return to Top


ADVANCED
FORTH
Available on two disks or one data
pack. Requires the original basic
FORTH package and CP/M 2.2

CONTENTS
F83V211.BLK
CLOCK.BLK
F83-FIXS.TXT
CPU8080.BLK
META80.BLK
EXTEND80.BLK
F83V211.COM
F83.COM

The Advanced FORTH Set is available from SAGE ENTERPRISES for $7.00. Please specify disk or data pack.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Some Design Features Of FORTH
by Thomas Gilmore
    This is the fourth in a series of articles on FORTH for the ADAM computer, now available in two public domain versions from EXPANDABLE COMPUTER NEWS.
    The "Start-Up" version of FORTH for the ADAM is a set of files directly from FORTH-83, the 1983 International Standard. The first three articles focused on WHAT is available for your ADAM compu­ter, how to put it to work, what FORTH is and isn't, and some of the specific FORTH advantages. How it came to be available for ADAM users will be left until the fifth article in the series.     In this article I will point out some of the design features of FORTH and how they work, including a step-by-step discussion of a sample program.
WORDS
    A word, with a MINIMUM of one space before AND after it, is what FORTH commands and statements are all about.
    IF you have worked with SmartLOGO on the ADAM (or a LOGO anywhere) you are probably quite familiar already with this design feature, including the opportunity to extend the language with YOUR OWN word definitions.
    If you're not already a LOGO fan, I will just go a bit farther and say that in FORTH a "word" is just about any string of characters, one or more, defined as meaning one or more other FORTH words OR a group of assembler code mnemonics. The FORTH word " : " means "this is the start of a word definition." The FORTH word " ; " means "this definition is now done."
DATA STACK
    There are far fewer variables usually used in this language, since almost all numerical data is put in ONE place — the data stack. Like a tray server in a cafeteria, the data stack PUSH'S down to receive one piece of data and POP's back up to serve one. That is true for individual words AND for data left by one word for another. It takes some real effort to learn how to use this feature. The main benefit is speed of execution. A secondary benefit is eventually seeing a new simplicity in computing and (eventually) developing new applications — that work and CAN be quite user friendly. (A few variables are used, for purposes such as counting.)
POSTFIX NOTATION
    This is NOT my name for it, believe me. What this design feature means is that FORTH words are placed AFTER the numeric data they need to execute. (There are a few calculators which work this way.) For example, 2 2 + . The result of this addition is 4, of course. Similarly, 6 2 / results in 3. This different arrangement is only true for NUMERIC data. Words generally come BEFORE alphabetic data, such as text messages or file­names.
    Now, here's two FORTH "screens", one for some utilities and one for an interesting, little game. I thank Anita Anderson and Martin Tracy for the game idea and rules, presented as an exercise in their book, "Mastering FORTH" (Bowie, MO 20715: Brady Communications Company, Inc., 1984.) NOTE: There were several characters in the listing in the original ECN that were very hard to read due to poor copy quality. While I've tried to get this as close to the original as possible, there may be errors in it. If anyone has a better listing, please email it to me. - J. Blenkle

 

18   list
Scr # 18 SAMPLE.BLK
0 ñ Utilities for random number generation 22Feb87tcg
1 ñ
2 : fv ( n addr -- )
3 ñ Uses F83 "FIG-VARIABLE" to create a variable with specified
4 ñ name for address, and sets its value to specified n
5 fig-variable ;
6 ñ
7 ñ The next line creates variable "seed" and sets value to 12,301
8 12301 fv seed
9 : rand ( -- R )
10 ñ Gets a 16-bit random nbr R from seed and updates seed for next
11 seed @ 5421 * 1+ dup seed ! ;
12 : random ( n -- r )
13 ñ generates R with rand, then mod's to nbr r in range 0 .. n - 1
14 rand swap mod ;
15 ñ random nbr r is now on the data stack, but hidden from view
ok

Discussion:
    * 9 of the lines have " ñ ", the Forth word for "this is a comment line."
    * 3 of the lines have " ( ", the Forth word for "the REST of this line is a comment."     The first word definition is on lines 2 thru 5. It simply establishes a much shorter version of a standard Forth word.
    Line 8 uses this word to create a variable upon loading.
    A second word is defined in lines 9 thru 11. Line 11 gets the current value at address of seed, multiplies it by 5421, adds 1, and duplicates the result, storing one and leaving the other on the data stack.
    * A third word is defined on lines 12 thru 14. Line 14 executes "rand", reverses the top 2 numbers on the data stack, divides, and keeps the remainder on the data stack.

19   list
Scr # 19 SAMPLE.BLK
0 ñ number-guessing game, using Scr # 18 Utilities 22Feb87tcg
1 ñ First, create variables "gap" and "try" & set values to zero
2 0 fv gap 0 fv try
3 : game ( -- r )
4 ñ starts the game with a random number r j1 .. 200¿
5 101 gap ! 0 try ! 200 random 1+ ;
6 : win ( r -- )
7 ñ wraps up a game, gives results, and clears stack
8 cr ." You won in " try @ . ." guesses." drop ;
9 : guess ( r g -- r)
10 ñ make a guess g and check against the jhidden¿
11 try @ 1+ try ! 2dup = ( add to count; check for =)
12 if drop win else over - abs dup ( match or close ?)
13 3 ( if ." Hot!" gap ! else dup ( close or better ?)
14 gap @ < if ." warmer" gap ! ( better; store how far off)
15 else ." colder" drop then then then ; ok

Discussion:
    * Most of the lines have, or are, comments.
    * Line 2 uses "fv" to create two counters.
    * A first word is defined in lines 3 thru 5. Line 5 sets an arbitrary, initial "gap", zeroes the "try" counter, gets a random number, and adjusts it up to the range 1 .. 200.
    * A second word is defined in lines 6 thru 8. Line 8 does a carriage return, ." .. " prints a message, gets the value of the "try" counter, prints that, completes the message, and drops the target number off the stack.
    * The last word is defined in lines 9 thru 15. The "try" counter is updated, the top 2 numbers on the data stack are duplicated before a series of comparisons. (Each comparison uses up 2 numbers — they're gone.) Comparisons are "postfix notation", too. A message is selected and printed. If the gap has been closed, the latest "gap" is stored.

Here's what it looks like when you compile it, look at some of the variables, and run it:

18 19 thru ok
see seed
24676 VARIABLE SEED Value = 12301 ok
see gap
24740 VARIABLE GAP Value = 0 ok
see try
24752 VARIABLE TRY Value = 0 ok
game ok
70 guess warmer ok
130 guess colder ok
90 guess colder ok
60 guess colder ok
72 guess warmer ok
75 guess
You WON in 6 guesses, ok
bye

    In the last article of this series, we'll point out some more of the design features of FORTH and include another sample program. - Tom Gilmore / Eagan, MN
 

POCKET REFERENCE GUIDE FOR FORTH
"What I'd MOST like to remember about F83 (when I just can't find it)"

F83 stuff:     to enter F83 (from CP/M)
to open screen file
to close a file
to leave F83

to list a screen
to list the next screen
to list the screen back one

EDITOR stuffto enter EDITOR (from F83)
to add some new lines
to stop adding new lines
to leave EDITOR
to save screen (for sure)

F83 or F83 filename
OPEN filename
     don't worry about it
BYE

screennumber LIST
N L
B L

ED  or  screennumber ED
linenumber NEW
(RETURN) in column 1
DONE
FLUSH      after "DONE"

tcg  2/24/87                                                                                                           ECN

Return to Top


Origins: Video Games, Home Computers, ADAM & ECN - Part 2
by D. Sage
    At the January 1984 Winter Consumer Electronics Show, things really started going down hill for ADAM. Because of the high volume of returns and high level of pre-release publicity for the ADAM, the press would have a field day with Coleco. While Coleco had planned on using the event to wave its flag and brag on their product, the press was determined to be only negative and attack the failure of the company. After all Coleco had almost gone bankrupt over the Telstar system and here they were with a product that the press was convinced Coleco should never have tried to produce. After all how could a toy company make a computer that was anything but junk. As I indicated last time, there was really little wrong with many of the ADAMs that were returned. Most of the problem was in the manuals.
    The Wall Street Journal was highly critical of Coleco and even included the infamous interview with Taylor Barcroft who criticized the product while claiming to be the head of the first ADAM users group, a group that many of you would become all too familiar with.
    Coleco continued to insist that the problems with ADAM had been fixed and that they were going to support it. They continued to announce add on products and a wide range of software. After all Coleco had enough parts on hand to build nearly 400,000 ADAMs, why wouldn't they want to sell them. Unfortunately, it appears that shortly after the January 1984 CES Coleco decided that they would prepare a new campaign to sell ADAM and if that did not succeed, the product would be scrapped.
    In March of 1984 an upstart company called Sage Enterprises published the first ADAM only publication. Taylor Barcroft announced that he would publish the Garden of ADAM newsletter, and Herschel Abelman announced that he would publish "Smart Magazine", a glossy color publication.
    In May of 1984 the ADAM Family Computing magazine was scrapped by Scholastic on the grounds that Coleco had supplied them with insufficient names to produce a profitable publication. Coleco refused to make their mailing list available to others because of their contract with Scholastic. Scholastic announced that they would cover the ADAM in Family Computing and provide free copies to ADAM owners.
    At the June 1984 Summer Consumer Electronics Show, Coleco was back in force and were touting the NEW ADAM. Their display was quite impressive and included working disk drives, memory expanders, modems, and the RS232/Centronics printer interface, as well as a wide range of software. Coleco announced a number of retailer incentives, a scholarship program, and an extended warranty in order to demonstrate their confidence in the product. They even expressed a desire to work with user support groups such as ECN, a promise that they would not fulfill to us until after ADAM's demise. Unfortunately, the fan fare and incentives were not enough to convince the press. They greeted the NEW ADAM with skepticism and more about a toy company trying to build computers. It was too late to undo the mindset that the press had developed. Although some retailers decided to carry the product or continue carrying it, including Toys R Us, it was just not enough.
    In June 1984 Smart Magazine was scrapped, but too late to pull their ad from the issue of Family Computing that was to be dedicated to the ADAM. In early of September 1984, just as the disk drives and modems were rolling off of the assembly line, Coleco's top executives made the final decision to scrap ADAM. This decision would not be formally announced until after the Christmas selling season, so as not to hinder sales.
    In October of 1984 AUG published the first issue of Augment. Shortly thereafter the only issue of the Garden of ADAM newsletter appeared. Coleco had supported both publications to a limited extent providing them with abbreviated mailing lists, a tour of the ADAM facility, and pre-release modems.
    In September the disk drives and modems were shipping, but the software for the modems did not allow up or downloading. Coleco promised to make new software available to owners of the modem for a nominal charge. This turned out to be one of the few promises kept by the company. The much advertised ADAM forum on CompuServe failed to appear and ADAM owners soon formed their own group on Family Computer's Forum and on other bulletin board services.
    The announcement of ADAM's demise came at the start of the Winter 1985 Consumer Electronics Show in the form of a press release. Coleco's own staff appeared stunned and unaware that the announcement was to be made. Originally, Coleco had planned on dumping the ADAM through a liquidator. Their action was somewhat premature, as the ADAM had actually begun to sell fairly well. Instead, deals were struck with a number of retail chains such as KayBee and Circus World. The result was that Coleco lost considerably less on ADAM's liquidation. ADAMs were then priced at $300 and they sold briskly. Coleco continued to indicate that they would support the ADAM and release all unfinished software. They indicated that they planned continuing support through cartridge software for ADAM and Colecovision. Most of the unreleased software was not made available commercially, but began showing up through the underground. Eventually, most of this was unofficially placed in the public domain. New cartridge software did not come about and Coleco dumped Colecovision hardware and parts along with the ADAM.
    After Coleco's announcement, the company began referring most calls to its 800 number to user groups such as ECN. They essentially sought to pass the support buck to the various organizations that they refused to support before ADAM's discontinuance.
    Ironically, the June 1985 Summer Consumer Electronics Show saw the debut of the Nintendo Entertainment System which was to usher in a new era of video game successes. Once more Coleco had made an error in timing. They had abandoned their most successful product, Colecovision, at a time when video games were preparing to make a strong comeback.
    In October ADAM will be four years old. Colecovision will be just over five years old. Of the major ADAM publications debuting in 1984, only ECN remains. In spite of all that has happened in that time, ADAM continues on.
    I hope that you have enjoyed these two articles as much as I have enjoyed digging through my files and writing them. Return to Top


ADAM Printer Interface
by David Clark
    The following is a construction project for a Centronics compatible parallel printer interface for the ADAM. Also included are listings of the printer drivers for this hardware. I have used this interface for a couple of years and all of the program listings that accompany this article were printed on a dot matrix printer using this interface (ed. the listings have been reduced by ECN).
    For those who have been following John Moore's series on "Interfacing with ADAM", I will not go into detail on how it works. The 74LS30 and the 74LS04 decodes port address 4F. The 74LS32 combines the output of the 74LS30 and the IORQ, RD and WR signals to produce an in and out signal for this port address. The 74LS125 is used for a 1 bit input for the BUSY line from the printer. The 74LS374 latches the data off of the data lines and the 74121 strobes the printer to accept this data.
    All parts are easy to obtain and the project can be either wire wrapped or put on a printer circuit. My prototype was wire wrapped.
    If a 26 pin header is used, a preassembled printer cable can be obtained from Radio Shack, part #26-1409. For those who like wire wrapping and intend to use slot #2 a 22/44 contact plug-board, part no. 3579, price $9.95 US, can be obtained from JAMECO Electronics, 1355 Shoreway Road, Belmont, CA 94002. Software for Basic, CP/M and LOGO are all included as well as software patches for LOGO that allows use of either the Eve serial or parallel interface (only one of these patches can be used at a time). (NOTE: some printers will not operate properly without pin 16 of the Centronics connector hooked up. The Radio Shack cable does not use pin 16 and therefore will not work with those printers instead you will need a solder type Centronics connector and pin 16 will have to be connected to one of the other ground connections.

 

PARTS LIST FOR PRINTER INTERFACE
1 - 74LS374   Octal D-type flip-flop
1 - 74LS125   tri-state quad buffer
1 - 74LS04    hex inverter
1 - 74LS32    quad 2-input OR gate
1 - 74LS30    8-input NAND gate
1 - 74121     monostable multivibrator
1 - 10 uf 16v Tantalum or aluminum eletrolytic capacitor
6 - .1 uf ceramic disc capacitors
1 - .02 uf ceramic disc capacitor
1 - suitable plugboard or circuit board
26 pin header or suitable connector

 

Return to Top


LISTING 1 - CP/M PATCH FOR CENTRONICS INTERFACE

; CENTRONICS COMPATIBLE CENTRONICS COMPATIBLE CENTRONIX COMPATIBLE
;
; Parallel interface software patch
; Created by DAVID CLARK 11/23/84
;
; CENTRONICS COMPATIBLE CENTRONICS COMPATIBLE CENTRONICS COMPATIBLE
BDOS EQU 5 ;BDOS CALL
CLS EQU 12 ;CLEAR SCREEN
LF EQU 10 ;LINE FEED
CR EQU 13 ;CARRIAGE RETURN
EL EQU '$' ;END LINE
TAB EQU 9 ;TAB CHARACTER
ORG 0100H
JMP START
CLEAR DB CLS,CR,LF,CR,LF,EL
HELLO DB ' PARALLEL PRINTER DRIVERS',CR,LF
DB CR,LF,TAB,' INSTALLED',CR,LF
DB CR,LF,CR,LF,' USE STAT TO INSTALL I/O BYTE',CR,LF,CR,LF
DB CR,LF,' STAT LST:=UL1:',CR,LF,CR,LF,EL
DATA DB 219,79,230,4,32,250,121,211,79,201
START MVI C,9 ! LXI D,CLEAR ! CALL BDOS
LXI H,DATA ! LXI D,61116 ! LXI B, 10
MOV A,M ! STAX D ! INX H ! INX D
DCX B ! MOV A,B ! ORA C ! JNZ LOOP
LXI H,56368 ! MVI A,188 ! MOV M,A
INX H ! MVI A,238 ! MOV M,A
MVI C,9 ! LXI D,HELLO ! CALL BDOS
JMP 0
         END

 

LISTING 2 - BASIC PATCH FOR CENTRONICS INTERFACE

100  REM Program to install patching code to operate PARALLEL port
110 REM
120 REM Operates as PR#4
130 REM CREATED BY DAVID CLARK 11/23/84
140 REM
150 REM
160 REM
170 DATA 245,245,219,79,230,4,32,250,241
180 DATA 211,79,241,254,13,192,62,10,24,237
190 FOR x = 0 TO 18: READ d: POKE 237+x, d: NEXT x: REM put patch code in 'out of way' place
200 POKE 16221, 237: POKE 16222, 0: REM patch PR# Jump to code
210 HOME: VTAB 8: HTAB 4: PRINT "PATCHING CODE INSTALLED"
220 VTAB 12: HTAB 4: PRINT "USE PR#4 TO TURN ON PORT"
230 VTAB 14: HTAB 4: PRINT "USE PR#0 TO TURN OFF PORT"
240 END

 

LISTING 3 - LOGO PATCH FOR CENTRONICS INTERFACE

TO DEC : HEXN
IF EMPTYP :HEXN [OP 0]
IF EMPTYP BL : HEXN [OP SUM ASCII .HEXN IF NUMBERP :HEXN [-48] [-55]]
OP 16 * ( DEC BL :HEXN ) + DEC LAST : HEXN
END

TO PRDRIVE
MAKE "START.ADR 204 - 10
.INSTALL : START. ADR [F5 DB 4F E6 4 20 FA Fl D3 4F C9]
.DEPOSIT 10935 194
.DEPOSIT 10936 0
.DEPOSIT 10940 194
.DEPOSIT 10941 0
.DEPOSIT 10964 194
.DEPOSIT 10965 0
.DEPOSIT 3373 183
.DEPOSIT 3374 0
.DEPOSIT 3375 0
PR []
PR [PARALLEL PRINTER PORT]
PR [DRIVERS ARE INSTALLED]
PR []
PR [PLEASE ENTER 'RECYCLE']
PR [TO FREE UP ALL NODES]
ERALL
END

 

TO .INSTALL : BASE.ADR : BYTE.LIST
IF EMPTYP :BYTE.LIST [STOP]
.DEPOSIT :BASE.ADR DEC FIRST : BYTE.LIST
.INSTALL : BASE.ADR + 1 BF : BYTE.LIST
END

MAKE  "STARTUP  [PRDRIVE]

 

LISTING 4 - LOGO PATCH FOR EVE PARALLEL INTERFACE

TO PRDRIVE
MAKE "START.ADR 204 - 10
.INSTALL :START.ADR [F5 DB 40 E6 1 28 FA F1 D3 40 C9]
.DEPOSIT 10935 194
.DEPOSIT 10936 0
.DEPOSIT 10940 194
.DEPOSIT 10941 0
.DEPOSIT 10964 194
.DEPOSIT 10965 0
.DEPOSIT 3373 183
.DEPOSIT 3374 0
.DEPOSIT 3375 0
PR []
PR [THE 'EVE SP - 1' PARALLEL]
PR [PRINTER PORT DRIVERS ARE]
PR [INSTALLED.]
PR []
PR [PLEASE ENTER 'RECYCLE']
PR [TO FREE UP ALL NODES]
ERALL
END

TO .INSTALL :BASE.ADR : BYTE.LIST
IF EMPTYP :BYTE.LIST [STOP]
.DEPOSIT :BASE.ADR DEC FIRST : BYTE.LIST
.INSTALL : BASE.ADR + 1 BF :BYTE.LIST
END

 

TO DEC :HEXN
IF EMPTYP :HEXN [OP O]
IF BMPTYP BL :HEXN [OP SUM ASCII : HEXN IF NUMBERP : HEXN [-48] [-55]]
OP 16 * ( DEC BL : HEXN ) + DEC LAST : HEXN
END

MAKE "STARTUP [PRDRIVE]

 

LISTING 5 - LOGO PATCH FOR EVE SERIAL INTERFACE

TO DEC :HEXN
IF EMPTYP :HEXN [OP 03]
IF EMPTYP BL : HEXN [OP SUM ASCII :HEXN IF NUMBERP :HEXN [-48] [-55]]
OP 16 * ( DEC BL :HEXN ) + DEC LAST :HEXN
END

TO .INSTALL :BASE.ADR :BYTE.LIST
IF EMPTYP :BYTE.LIST [STOP]
.DEPOSIT :BASE.ADR DEC FIRST :BYTE.LIST
.INSTALL :BASE.ADR + 1 BF :BYTE.LIST
END

TO GETDATABIT :DAB
IF :DAB = "1 [.CALL 31720 STOP]
IF :DAB = "2 [.CALL 31729 STOP]
GETDATABIT RC
END

TO GETSBIT :STB
IF :STB = "1 [.CALL 31702 STOP]
IF :STB = "2 [.CALL 31711 STOP]
GETSTBIT RC
END

TO GETPARITY : PAR
IF :PAR = "1 [.CALL 31671 STOP]
IF :PAR = "2 [.CALL 31680 STOP]
IF :PAR = "3 [.CALL 31691 STOP]
GETPARITY RC
END

 

TO GETBAUD :RATE
IF :RATE = "1 [.DEPOSIT 31739 53 STOP]
IF :RATE = "2 [.DEPOSIT 31739 54 STOP]
IF :RATE = "3 [.DEPOSIT 31739 55 STOP]
IF :RATE = "4 [.DEPOSIT 31739 58 STOP]
IF :RATE = "5 [.DEPOSIT 31739 60 STOP]
IF :RATE = "6 [.DEPOSIT 31739 62 STOP]
GETBAUD RC
END

 

TO INITDRIVE
.ALLOCATE 96
MAKE "START.ADR 31740 - 95
.INSTALL :START.ADR [DB 47 3E 0 D3 47 3A FA 7B D3 46 3A FB 7B D3 46 3A FC 7B D3 47 DB 44 DB 44 C9 3A FA
7B E6 CF 32 FA 7B C9 3A FA 7B E6 CF F6 10 32 FA  7B C9 3A FA 7B E6 CF F6 30 32 FA 7B C9 3A FA 7B E6 7F 32
FA 7B C9 3A FA 7B  F6 CO 32 FA 7B C9 3A FA 7B E6 FB 32 FA 7B C9 3A FA 7B
F6 OC 32 FA 7B C9 4E 3E 27]
END

TO SERDRIVE
MAKE "START.ADR 204 - 10
.INSTALL :START.ADR [F5 DB 45 E6 1 28 FA F1 D3 445 C9]
.DEPOSIT 10935 194
.DEPOSIT 10936 0
.DEPOSIT 10940 194
.DEPOSIT 10941 0
.DEPOSIT 10964 194
.DEPOSIT 10965 0
.DEPOSIT 3373 183
.DEPOSIT 3374 0
.DEPOSIT 3375 0
END

 

TO SERPRINT
HT
CLEARSCREEN
PR [ONE MOMENT PLEASE WHILE I]
PR [SET UP THE MACHINE LANGUAGE]
SERDRIVE
INITDRIVE
CLEARSCREEN
PR [PLEASE ENTER BAUD RATE]
PR []
PR [1 - 300 BAUD]
PR [2 - 600 BAUD]
PR [3 - 1200 BAUD]
PR [4 - 2400 BAUD]
PR [5 - 4800 BAUD]
PR [6 - 9600 BAUD]
GETBAUD RC
CLEARSCREEN
PR [PLEASE ENTER PARITY]
PR []
PR [1 - NONE]
PR [2 - EVEN]
PR [3 - ODD]
GETPARITY RC
CLEARSCREEN
PR [PLEASE ENTER STOP BITS]
PR []
PR [1 - 1 STOP BIT]
PR [2 - 2 STOP BITS]

 

GETSTBIT RC
CLEARSCREEN
PR [PLEASE ENTER DATA BITS]
PR []
PR [1 - 7 DATA BITS]
PR [2 - 8 DATA BITS]
GETDATABIT RC
.CALL 31645
CLEARSCREEN
PR [THE EVE SP - 1 SERIAL PORT]
PR [HAS BEEN INITILIZED]
PR []
PR [PLEASE ENTER 'RECYCLE']
PR [TO RECOVER ALL NODES]
ERALL
END

MAKE "STARTUP [SERPRINT]

Return to Top