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. Naturally, 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 freeze. For some reason, it bothers me to run
the furnace in my office when the outside temperature 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 Enterprises cannot accept any responsibility for
damage that such projects may cause to your computer. Do not attempt
these projects unless you are experienced 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 operations. 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 accepted. 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
specification 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 specification for Zmodem. Although there is
currently only one actual program using it, Zmodem will
automatically 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
computer, 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 filenames.
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 stuff:
to 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
|