fng Support Around The Worid
"-^ »--:.-
^*5-
*<-
imte Number 76
lS8»t#a748-g331
The
Computer
Journal
November/December 1995
Alternatives to the XT
Small System Support
PC/XT Corner
The European Beat
Real Computing
PC Security System
Dr. S-100
PC Time Clock
Floppy Disk Problems
Centerfold - Jade Bus Probe
The Computer Corner
USS4.00
4
M
-^
J
"3
I
5
■f %
TCJ - For Having Fun With Old Computers!
-4
-rS,
Cross-Assemblers «$ low as $50 oo
ojrnuidtors as low as $100.00
Cross-Disassemblers as low a 10000
Developer Packages
as low as $200.00(a $50.00 Savings)
A New Project
Ctar Wm of macro Cross-assemblers are easy to use and full featured,
-Inahini^ conditional assembly and unlimited include files.
Get It To Market-FAST
Qpal wait until the hardware is finished to debug your software. Our
SMMlators can test your program logic before the hardware is built.
No Sourcel
AlfiinQr glHch has shown up in the firmware, and you cant find the original
•ewM program. Our line of disassemblers can help you re-create the
MtgyiMl mambly language source.
Set To Go
Sby ow daveioper package and the next time your boss says 'Get to work.",
yeuH ba raady for anything.
Quality Solutions
PaaodoCorp has been providing quality solutions for microprocessor
pnMams smca t985.
BROAD RANGE OF SUPPORT
•■ Currently wa support the following microprocessor families (with
mora in davatopmant):
ia048 ' RCA 1802,05
ila6800 Motorola ^1
[6301 Motorola 6809
. tfl65C02 Intal8080,85
Htoehi H064180 Motorola 68000,8
a AH products require an IBM PC or compatible.
So What Are You Waiting For? Call us:
PseudoCorp
Pro/essiemal Development Products Group
921 Countty Club Roa4 Suhe 200
Eugene, OR 97401
0Sm <83-9173 FAX: (503) 683-9186 BBS: (503) 683-9076
Intel 8051 Intel 8096
Motorola 68HC1 1 l^torola 6805
MOS Tech 6502 WDC65C02
ZlogZSO NSC 800
Motorola 68010 Intel 80C196
Journey with us to discover the shortest path between
programming problems and efficient solutions.
The Forth programming language is a model of simplicity:
In about 16K, itcanoffera complete develcHJmentsystem in terms
ofcompiler,editor,andassembler,aswellasaninterpretivemode
to enhance debugging, profiling, and tracing.
As an "(^en" language. Forth lets you build new control-flow
structures,and other compiler-oriented extensions thatclosed
languages do not
Fo'th IXmensions is the magazine to help you along this
journey. Itis one of the benefits you receive as a member of the
non-profit Forth Interest Group (FIG). Local chapters, the
GEnie™ForthRoundTable,andannualFORMLconferencesare
also supported by FIG.Toreceiveamail-ordercatalogofForth
literature and disks, call 510-89-FORTH orwrite to:
Forth Interest Group, P.O. Box 2154, Oakland, CA 94621.
Membership dues begin at $40 for the U.S A and Canada.
Student rates begin at $18 (with valid student I.D.).
CEnie is a trademark of General Electric.
=^
ff; _ ^ ;.,
Mibler Electronics
Serving the
Industrial Electronics Community
since 1978
Specializing In
Hardware Design and
Software Programming
Previous Projects include:
PLC ladder programming (15,000 lines)
8031 Remote I/O using MODBUS
680S Instrumentation Controller
68000 Real Time Embedded Operations
NETBIOS programming and Debugging
Forth Projects and Development
HTML Design and programming
Articles, Training, and Documentation
Bill Kibler
Kibler Electronics
P.O. Box 535
Lincoln, CA 95648-0535
(916) 645-1670
e'tnail: kibler@psyber.com
http://yvyvw.psyber.com/-'kibler
SAGE MICROSYSTEMS EAST
Selling and Supporting the Best in 8-Blt Software
Z3PLUS or NZCOM (now only $20 each)
ZSDOS/ZDDOS date stamping BDOS ($30)
ZCPR34 source code ($15)
BackGrounder-ii ($20)
ZMATE text editor ($20)
BOS for Z-system (only $30)
DSD: Dynamic Screen Debugger ($50)
4D0S "zsystem" for MSDOS ($65)
ZMAC macro-assembler ($45 wHh printed manual)
Kaypro DSDD and MSDOS 360K FORMATS ONLY
Order by phone, mall, or modem and use
Check, VISA, or MasterCard. Please Include
$3.00 shipping and Handling for each order.
Sage Microsystems East
1435 Centre street
Newton Centre MA 02159-2469
(617) 965-3552 (voice 7PM to 11PM)
(617) 965-7259 BBS
The Computer Journal
Founder
Art Carison
Editor/Publisher
Bill D. Kibler
Dave Baldwin
Technical Consultant
Chris McEwen
Contributing Editors
Herb Johnson
Charies Stafford
Brad Rodriguez
Ronald W. Anderson
Helmut Jungkunz
Ron Mitchell
Frank Sergeant
JW Weaver
Richard Rodman
Jay Sage
Tilmann Reh
The Computer Journal Is pub-
lished six times a year and mailed
from The Computer Journal, P. O.
Box 3900, Citrus Heights, CA 95611,
(916) 722-4970.
Opinions expressed in The Com-
puter Journal are those of the re-
spective authors and do not neces-
sarily reflect those of the editorial
staff or publisher.
Entire contents copyright © 1995
by The Computer Journal and re-
spective authors. All rights reserved.
Reproduction in any form prohibited
vwthout express written permission of
the publisher.
Subscription rates within the
US: $24 one year (6 issues), $44
two years (12 issues). Send sub-
scription, renewals, address
changes, or advertising inquires to:
The Computer Journal, P.O. Box
3900, Citrus Heights, CA 95611.
TCJ
The Computer Journal
Issue Number 76 November/December 1995
Registered Trademarks
It is easy to get in the habit of using company
trademartcs as generic tenns, but these trademarks are
the property of the respective companies. It is important
to acknowledge these trademari(s as their property to
avoid their losing the rights and the term becoming put>-
lic property. The following frequently used trademarics
are acknowledged, and we apologize for any we have
overiooked.
Apple II, II+, lie. He, Lisa, Macintosh, ProDos;
Apple Computer Company CP/M, DDT, ASM, STAT,
PIP; Digital Research DateStamper, BackGrounder ii,
Dos Disk; Plu'Perfect Systems Clipper, Nantucket;
Nantucket, Inc. dBase, dBASE II, dBASE III, dBASE III
Plus, dBASE IV; Ashton-Tate, Inc. MBASIC, MS-DOS,
Windows, Word; Microsoft WordStar; MicroPro Inter-
national. IBM-PC, XT, and AT, PC-DOS; IBM Corpora-
tion. Z80, Z280; Zilog Corporation Turbo Pascal, Turtx)
C, Paradox; Boriand Intemational, HD64180; Hitachi
America, Ltd. SB180; Micromint, Inc.
Where these and other terms are used in The
Computer Journal, they are acknovi^edged to be the
property of tfm respective companies even if not specifi-
cally acknowledged in each occurrence
Editor's Comments 2
Reader to Reader 3
Real Computing 7
MINIX and more.
By Rick Rodman.
PC/XT Corner 10
Article by Kirk Lawrence,"Super-Charge that old XT!..
By Frank Sergeant.
The European Beat 15
10 years of support.
By Helmut Jungkunz.
Alternatives to the XT 18
Options and the PT68K-4.
By Bill Kibler.
Dr. S-100 22
GIDE and Jade Bus Probe.
By Herb Johnson.
Center Fold 25
Jade BUS Probe.
PC Time Clock 29
Improving Accuracy.
By Terry Hazen.
PC Security System 30
House security system in BASIC.
By Michael Krabach.
Small System Support 36
C and assembly language tutorial.
By Ronald W. Anderson.
Floppy Disk Problems 41
Trouble shooting floppy design problems.
By Claude Palm.
Support Groups for the Classics 46
The Computer Comer 50
By Bill Kibler.
EDITOR'S COMMENTS
Well here is issue 76 and my last as
editor. Dave is almost stepping on my
heals, tiying to get a start at producing
the next issue for you. He comments
later on this page. Have no fear number
76 is good as usual and I am sure num-
ber 77 will be too, I know I will help
make sure that comes true.
This issue is support of XT and PC sys-
tems and beyond. After letters to the
editor, comes Rick Rodman with MINfIX
is alive and well? Can this be true, read
and see for yourself.
Frank Sergeant has comments on XT/
PC's and a Uttle insert by Kirk Lawerance
on supercharging XT's. Helmut
Jungkunz is next with his report on 10
years of Amstrad support through their
User Group. I follow with my shortened
but interesting article on Alternatives to
using XT/PCs. Herb Johnson gives his
long awaited discussion of the Jade Bus
Probe. I follow that with the schematics
in the centerfold.
Using XT or AT's for guarding your
house is next. Michael Krabach sent me
this article some time ago and I have
been trying to fit it in, so here it is now.
Remember the entire code is on the TCJ
BBS and home page. For those still learn-
ing assembly or C, Ronald Anderson
keeps trying to make us experts, well at
least able to program in those languages.
Speaking of trying, Claude Palm sent
me an article in hard copy which I fi-
nally got into computer form for you to
read. It explains what can happen in
designing systems.
Lastly is my column. The Computer
Comer, where you will be seeing my
words for many more issues to come. I
don't plan to do any big articles right
away, as I know I will be helping Dave
get up to speed on producing the next
few issues. So what does he have
planned?
Dave's own words
Here we go again. The Computer Jour-
nal has a new editor, so the first question
is 'Are there going to be changes?'. Of
course there are. Big changes? Probably
not. I'm going to 'play' around with the
format aivd I'm talking to a couple of
new people about becoming authors. We
now has a BBS and a fax number and the
Web page is attracting a lot of attention
on the Internet. I've been updating the
TCJ files and messages on Genie and
posting some of the info files on
CompuServe.
Of course, our current writers will still
be here and some new ones. David
McGlone of the Z-Letter has agreed to
write an article about his experiences
tiying to get CP/M software and some-
one (I don't know who yet) is going to
write a CP/M and Z-System column.
Another regular item I'm going to try to
get going is a 'Program This Chip' ar-
ticle series. I'm going to do one on the
Z80 SIO which seems to give people fits.
I'm going to have as much fun as I can
with TCJ. I'm going to try out some
little changes here and there and see who
notices. It's also going to be an 'educa-
tional' experience. Bill says that in six
months or so, I'll have found out what I
should have known to start with. What's
Bill going to do? He's going to continue
to write the Computer Comer and be the
rC/Technical Consultant. He lives right
up the road fi^om me and I have his home
and work phone numbers, just in case.
Well, what's the 'new' TCJ going to be
like? A lot like the 'old' one. I'll quote
from our Web page on the Internet
<"http://www.psyber.coni/~tcj/"> (which
I wrote):
The Computer Journal has articles and
reviews on both new and old hardware
and software. In the last year, there have
been articles on most of the popular
microcontrollers, reviews of a new Z 180
system for CP/M, modifications for older
systems, software articles and tutorials
on Forth, 'C, and assembly language,
and the 'Centerfold' schematics for older
computer circuits.
In general, we cover hardware and soft-
ware that one person can work with,
where you can 'do it yourself. This
means boards and systems where you
can identify (and get) the parts and get
code to make it work. In particular, this
means the Kaypro, S-IOO boards, Z80/
180/280 and CP/M systems,
miCTOcontroUers like the 8048, 8051,
and 68HC1 1, and software articles that
include source code. This is also why
we started covering the PC-XT clones
made with identifiable TTL parts. BIOS
code is also available for them now so
you can make them do what you want.
On the other hand, if a project or system
requires an engineering team or access
to custom IC's, you probably won't read
about it in TCJ. The exception to that is
when our authors and/or readers get
together for a project and can provide all
the necessary resources.
TCJ is subscriber supported rather than
advertiser supported. Your suggestions,
requests, and complaints are listened to
and acted on when we can. You have
my name, number, address, email ad-
dress, BBS number, fax number. If you
never suggest, request, or complain, I'm
going to assume you either love what
I'm doing or you're not paying atten-
tion.
Thanks Dave and BYE! Bill Kibler.
(800) 424-8825 or (916) 722-1970
Email: tcj@psyber.com
BBS: (916) 722-5799
FAX: (916) 722-7480
Dave Baldwin: dibald@netcom.com
Bill Kibler: kibier@psyber.com
Home page "http://www.psyber.com/~tcj"
The Computer Journal / #76
READER to READER
Letters to the Editor
All Readers
MINI Articles
Dear Bill:
I have never had any kind of EPROM
programmer, so a nimiber of projects
have been started but not completed. This
simmier I was about to begin again, start-
ing to build a Motorola 680S design-kit
that copied an EPROM into internal
memory. I have been plaiming to build a
programmer by myself using switches
on the address bus and data buses, with
a binary and HEX display for both data
and address using HP Hex di^lays from
Hosfelt and blue disaete LEDs, but
made my decision to buy Needham's
Programmer and clean house for as I
said, I have stacked up a number of
projects and the price was only a little
more than Motorola's Design Kit. Sorry
Motorola, but maybe if your Kit came as
a bare board with ICs 1 might have sprimg
for it, and still might as money becomes
available. Fortunately, I have been ach-
ing to make some sort of IBM Front
Panel with LEDs and switches, so the
planned Eprom Programmer parts list
was easily changed into a new project.
There is no soldering to do with
Needham's PB-10, it is complete with
5.25" 1.2M floppy.
What Comes With The PB-10?
The PB-10 is an 8-bit ISA card to plug
inside the computer, with a ribbon
cableCsui^lied) that leads out the back of
the computer to your Programming
Socket that you get to mount where you
want, the cable is about long enough.
Mounting tape for the socket is supplied,
and it holds the socket well but can be
moved if need be. A 5.25" 1.2M dis-
kette holds the "EMP" program for the
PB-10: the same software they use with
their other programmer, the more ex-
pensive stand-alone.
First, a person ought to back up their
new diskette. I think DISKCOPY is the
easiest way to do that. Then INSTALL
the program on your HardDisk, mine is
on C: and I had no problem I suppose it
could be INSTALLed to a 360k diskette
in the same way, for smaller computers.
I had wanted to install the whole thing
in my XT(XtraTiity) Magnum until I
found out the PB-10 can handle Big
Eproms on the order of 27010, 27020
and 27040. Being able to program these
big EPROMs made the decision to put
the card into my x486 with 8M clear:
that's where it is now. The Magnum
will continue to serve as my test bed for
plug-in home brew projects.
Some EPROMs and the 8748 and the
8752 types are programmed with the
purchase of an adapter. Not inunediately
possible, but not impossible. I'd like to
build a kit to do those devices, but that
isn't how its done. Just soldering one
socket and one plug on a tiny pcboard
sounds like fim. Volunteers to design
adapter kits? Another difficulty lies in
the big EPROMs, the 27040 needs qx-
cial code modifications to the EMP pro-
gram, they must supply it with the adapter
I bet.
That's all I have for the PB-10 Program-
mer by Needham'sfor only $139.95 from
Digi-Key. What have I done with it? I
have unplugged the 2764 EPROMs from
the Magnum, the only ROM inside, and
read it into the buffer then saved the
buffer to a flle and begun to debug it to
leam how a computer boots. I have re-
loaded the flle to the buffer and pro-
grammed a blank 2764 which I've
plugged back into the Magnum and it
works, testing the whole thing from read
to program. I can easily buy 2764s by the
tube of 13 in Portland, and this was one
way to test what I did with it. The Mag-
num booted, the Eprom passed the test.
This is a woik in progress.
Regards,Marshall Montchalin <Obi-
wan@habit.com>
Dear Bill:
I bought a ten-key computer keyboard
from St Vincent's for only $2 and since
it's connector wasn't standard, I pulled
out my Philip' and opened it up. I found
a proto-pack with a 2716 plugged in!
ff the keyboard works, it could be a good
protopack to desolder for other purposes
or it could be a keyboard. Having the
memory already wired for you adds a
degree of confidence and ease to any
project.
Mostek Mk 38P73/D2 D
What is it? (and I want to program it and
use it, ha-ha; I saw them introduce the
F8 back in the beginning at The Jantzen
Beach Red Lion Thundeibird and fell in
love with the Proto-Pack version they
showed flash LEDs or something. It was
also at the WesCon in Las Vegas.) The
keyboard was factory dated August 1983
but my most recent Fairchild catalog is
January of 1978. So it's an F8 between
an F3872 and an F3874 in the
MicroMachine Series shown in my cata-
log.
I read the F3870 is 2k ROM, F38E70 2k
PROM, the F3872 is 3k ROM/64 bytes
RAM, the F3874 is 4k ROM.
Therefore the 38P73 must be 3.5k I
wonder : A close inspection of the
ProtoPak reveals the holes for more ma-
chine-pin sock^ pins above the 2716
plugged into it, as if bigger JEDEC 28-
pin memories could be plugged in com-
The Computer Journal / #76
patibly, had there been four more pins
installed, making it easy for the foimdiy
to add/subtract features offered, and save
them money on one style of ceramic.
Surely I am dreaming, but maybe they
added their options when soldering pins
to the dip. What other F8 ProtoPaks did
they make?
So here I am, staring at this technologi-
cal marvel. If it works, I could just hook
it up to the S^ or my 486 and not
desolder any protopack. Until I find the
right books...
Right now its untested, untraced. Got
any good stories to tell about Mostek or
Fairchild? Why didn't their style cpu
make the big time? I'd bet there's a few
good tales to hear. In this catalog
Fairchikl has both the F8 and 6800 Usted.
Now, that doesn't sound right, does it?
All for now, Marshall
Thcnks for both messages Marshall. Well
it sound like you are about to have plenty
of fan learning to use your new pro-
grammer. I have been using Needhams
for many years and since they are just
across town from us (and past advertis-
ers) we hope to see them back in TCJ
pages soon.
The F8 never really took off and I think
Fairchild was Just a secondary chip pro-
ducer in the case of the 6800. Motorola
had plenty of agreements with other
makers, that way people would use the
chip knowing the could buy it from more
than one source.
The chip carrier idea never caught on.
The idea allowed you to prototype an
actual system using a separate ROM
that later would be burned into the single
chip. I think this was before EPROMs
where built into CPU's, or at least when
those chips were $100 in price and the
F8 and EPROM could be had for less
than $30. The idea died of course as
soon as the other chips came down in
price.
Well that is all I know about those items,
but if you learn more, we would love to
have some articles telling more about
them old days... Bill.
Dear Editor,
I am looking for the following Fairchild
books (original or photocopied).
F8 User's Guide
F8 Microprocessor Family Data book
F8 Guide to Programming
FairBUG User's Guide
OCM-1 User's Manual
I mgently need then to repair and re-
forming of U.S. made microprocessor
controlled radio sets. Unfortunately F8
family itself and F3850 family ICs were
used very rare here in Japan, so these
books are absolutely unobtainable at
present. To my siuprise that the library
of Diet of Japan has no information on
those titles.
1 also looking for some ICs, F3850
(MK3850), F3853 (MK3853), 11C90
and uA757, If you have any information
on above items would you please advise
me where can I purchase them?
Looking further to hearing from you.
Sincerely, Kato Higuchi,
1-16-8 Minami-Senzoku,
Ota-ku, Toyoko 145, Japan
Well Kato, sorry your note to me fell so
far down in the pile that I only found it
now. If you have internet access you
might try contacting Marshall above, it
seems you both have things in common.
I remember now that MK stands for
Mostek and I am not sure but think that
Mostek designed the F8, but it could be
the other way around.
Any other readers out there who can
help Kato and Marshall get straight on
what these chips do.? How about the
documentation? Thanksfor writing Kato.
Bill
TCJ: Your advertisement came to my
attention. Your magazine appears to be
potentially helpful to me in maintaining
my PC/XT computer system.
I am presently trying to add 3 3.5" floppy
drive with PC-DOS 3.2 to help me to
format 3.5" diskettes to 720K. For some
unknown reason, I either get a 360K
format or an error message.
Very truly yours, Keith E. Watkins,
Schenectady, NY.
Well Keith, I see you need a little help
understanding the drive arrangement
with PC 's. First off you might want to
buy one of the XT-AT Handbooks sold
by Annabooks (800)462-1042. They run
about $9 and are often given away at
conventions. On page 86 of mine is tables
of floppy disk formats. I see that they
were first supported by DOS 3. 2, earlier
DOS's would not handle anything other
than 360K drives.
The table also says you need to use the
/F:720 as part of the format command
line. The DRIVER.SYS switch is/F:2 as
in add this line to your CONFIG.SYS
file "DEVICE=\dos\DRIVER.SYS /D:l
/F:2 " and you should then be able to
properly access the drives. You will get
a message that tells you which drive
letter to use for the new drive. The drive
is defined by the /D:l, 1 being the sec-
ond physical drive or B:. The drive gets
redefined so to speak, to talk both the
new disk parameters and the old ones.
By that I mean, put a floppy in the B:
drive and format it format B:), it will be
360K. Reformat it now as the new drive
(the prompt displayed a "D") (format
d:) and it will be 720K.
Any DOS manual, from 3. 2 on will have
a section on CONFIG.SYS parameters
and explain the above again with more
samples. I think in version 3.2 config
came into existence. Before 3. 2 you were
pretty much stuck with BIOS defined
drive support. After 3.2 you could then
reassign, create logical drives, add
ramdisks, and many other functions
through the config.sys options.
So thanksfor asking Keith and hope you
get a better start on upgrading your
system. Bill.
To: TCJ: Enclosed is my check for a 2
year subscription. I've been looking for
a source like this for data on the PC/
XT's for a long time. My current project
is a SCSI device for ATE work working
with DTC 3250C controller, if it works
out I'll try to cobble up a decent article
for publication.
The Computer Journal / #76
Disregarding my 486 for the moment, I
am using a LASER XTSL, NEC V30,
8087, 640K, and an INTEL ABOVE
BOARD. I discovered the motheitoard
had some built in options that I have
enabled, also it has DIP locations for
what appears to be 2 MEG of Expanded
Memory, if I can get my hand on the
necessary driver software.
With your PC/XT owner's readership,
have you accumulated any kind of data-
base on the configurations and options
of versions of the PC/XT and clones,
I'm interested in sources for hardware
and software and possibly correspond-
ing with fellow owner's of the LASER
series. Are there any plans for a BBS in
the future.
I program in Qbasic and MASM, I'm
working on C on my way to C++, I'm
interested mostly in hardware, I've got a
MOD-EMUP programmer and I love to
tinker if I can help anybody out please
drop me a line.
Thomas Rumpf, 1st Floor,
1621 W. South St.
Allentown, PA 18102.
Thanks Thomas for your renewal and
offer to write em article. Well we cer-
tainly could use more hands on informa-
tion on SCSI as it pertains to PC/XTs. A
friend Just dropped by asking about his
SCSI problem. Seems all his software is
set up for certain drives and he just went
to IDE drive from MFM. All is fine until
he puts the SCSI drive in to. Then the
drive letters get all out of whack and his
software will not work.
I told him how most BIOS code checks
for drives, then checks for logical drives.
That means if you have only one drive
and set it up as three, they will be C, D,
E. Add a second physical drive and it
will become D, pushing the two old drives
out to E and F. I remember coming
across this problem and using Disk
Manager to load drivers that swapped
drives around to be in proper order.
Now in your case, it sounds like you
need to just add HIMEM to your
config.sysfile. High memory is suppose
to be the drivers to use the expanded or
extended memory in your motherboard.
That assumes that it was built using one
of the memory management standards
which the software knows about. If it
doesn 't follow the standards, then we
need to find other LASER users for you.
But try the HIMEM switches, you will
find them explained in any DOS manual.
If I remember right LASER is also called
Acer machines and
"DEVICE=HIMEM.SYS /
machine. acer 1100 ... " might work.
We are interested in getting resource
listings and group support indexes setup,
but for now, we do it mostly on the TCJ
BBS or WEB pages. Just stop by either
and we will try and get you in contact
with other users. Since both resources
are new to TCJ, it may take some time to
get more readers corresponding by these
methods. So thanks and keep watching
TCJ pages for more XT support. Bill.
Dear Chuck,
I recently purchased a KAYPRO II com-
puter (sometimes referred to as Darth
Vader's lunch box). I think it is probably
the original "portable" or laptop version
of computers. Anyway what I need is a
source for the software which brings the
beast to life. The manual indicates that
it originally came with a package of 10
diskettes but the only one I really need is
the basic one which brings it to life and
makes it ready to receive other software.
I think this same disk probably holds the
utility software for the system. I am quite
siue the machine operates basicalfy in
CP/M. I already have a ftill set of soft-
ware formatted for the HP 125. How-
ever, I am told that Kaypro software was
very proprietary and will only operate
on the one system for which it was de-
signed. If I can obtain the software I'll
try and have fun with the beast, other-
wise I guess it needs to go to a museimi
or be converted to a very large paper
weight.
Thanks in advance for any assistance
you may be able to provide.
Sincerely, Jerry D. McAtee, Rapid City,
SD.
Well thanks for this letter Jerry, and
hopefully Chuck has helped you out by
now. For our readers, you are a typical
inquiry that we get here at TCJ. First off
Kaypro were not the first lunch boxes
made, I think Osbomes get that honor.
The Kaypro was certainly a very popu-
lar system and they were made for a
very long time. You will see them often
and there are several places to get soft-
ware for them. I usually send people to
Lambda Software in Oregon, his num-
ber is on the back page.
On operating systems, CP/M is NOT
proprietary in any real sense. Kaypro 's
use CP/M, considered the first PC Op-
erating system and mother to PCDOS.
What makes systems non-compatible is
how they talked to keyboards and video
screens. CP/M has the BIOS being part
of the operating system and is loaded
from the boot disk. Later PC/XT ma-
chines, separated out the BIOS, placing
it on the motherboard in ROM. Unlike
CP/M where you must boot from a disk
set up by the manufacturer of the ma-
chine (to get the correct BIOS code),
PCDOS knows nothing of hardware,
other than where and how to call rou-
tines in the ROM BIOS that DOES know
about the hardware.
Another problem was early vendors
could not decided on a standard disk
format. Each company found a way to
setup their disk and ideally give them
some advantage over the competition.
The opposite happened, people just went
to the PC/XT when they came out, since
IBM set standards. You can get for your
"BOX" a program that can read many
different disk formats. That way can copy
programs from your HP 125 to Kaypro
disks and use them.
Using the Kaypro should be fun, once
you get past that initial learning curve.
Later you might even want to consider
ZCPR, which can give you features still
not found in some version of PCDOS.
Thanks for the request Jerry. Bill.
From: PhilMarkDavis@medio.net
Mr. Kibler:
Up here in Seattle, we have been very
pleased to be able to receive and read the
publication rC/. Our group is PNHUG
(Pacific Northwest Heath Users' Group).
The Computer Journal / #76
And now you've made eveiything even
better with the new web page and yoxir
new e-mail address. The page is simply
great and with so much reference infor-
mation plus even a reference to our little
group, as is in the magazine. The
Tilmann Reh e-mail address in Germany
is new to me also. We're all interested
in the IDE expansion project We would
be most ha;^ if it all fit in, as a pack-
age, to the old Z-100 Heath/Zenith Com-
puter. Maybe someday?
May I request an update to ova PNHUG
entry? You have our secretary-treasures
old address which was P.O. Box 12214.
He has a new one which is as follows:
Jim Nfoore,
1554 - 16th Avenue East,
SeatUe, WA 98112-2807
e-mail: be483@scn.org
If you wish to publish, the other officers
can be reached as follows:
Phil Marie Davis (Co-President),
3250 Portage Bay Place East,
SeatUe, WA 98102-3893
e-mail: PhilMarkDavis@medio.net
Don Viele, Vice-President & BBS Sysq),
2732 S.W. 312th Place,
Federal Way, WA 98023-7811
e-mail: DonV820047@aol.com
Our BBS probably contains the now larg-
est collection of PD and Shareware for
the Heath/Zenith Z-100 computer.
Nearly 15 MB! We have just started a
long range project, in which several of
the members, are going to organize a
good collection of CP/M software and
try to produce a CD-ROM of same. This
may turn out to be only for our edifica-
tion or may grow in other directions.
This is a collaboration of one member
who is the sys<^ of one of the oldest CP/
M boards in the Seattle area, Mr. Ludovic
Van Hemeliyck of "Adam's RiBBS".
The telephone number of his BBS is
(206)481-1371 and that of PNHUG is
(206)860-8472. It is our desire to even-
tually establish a web page and possibly
a telnet link to oiu- BBS. We are some
way from this point at this time. Please
feel free to publish any or all of the
above information.
Thanks again for the great job and the
reminder to renew. Will use your 800
number at the earliest time.
Sincerely,
Phil Mark Davis (Co-President)
Thanks Phil for the update. I am now
going to work on a TCJ CD-ROM and
am looking for your type of material to
include. I want to save forever BIOS and
Utility code for the older systems. I guess
since the Z-100 is no longer supported,
I wonder about problems publishing it 's
BIOS source code, got any ideas about
that. I have Helmut's AMSTRAD pro-
grams and tons of old 8 inch CP/M disks
to go through, but hope to have some-
thing by Spring of next year. Maybe we
should work together? Thanks. Bill.
From: schang@huey.csim.edu
Subject: PC/XT: How to read ROM
BIOS FDD info?
Hello! Just ran into your article about
$10 PC/XT in the hopes of getting info
on how to read FDD type info from XT's
ROMBIOS. I've gotMCT BIOS (c)1985
E.S. Oneal (whatever that means, at-
tached on the BIOS chip). I tried Alt-
Ctrl-S, Alt-Ctrl-Ins, and few other keys
at random, including <Del> by itself,
<F1>, etc. No luck so far. Is there any
way to view that info? I picked up a
486DLC board a couple days ago, put in
the old MFM HDD control card. The
HD is about 20 MB big, but can't figure
out the type info like # heads, # cylin-
ders, # sectors, #LZone, etc.
I hope you can help me. Thanks! SS
OK SS, here is the information, get one
of the Annabooks XT-AT Handbooks,
making sure it has the list of hard drives.
They cost about $9, but watch out for
the free ones, they do not have the fill
drive tables. There is also a hard drive
information text file on many BBS 's that
will most likely have your drive in it.
What you are trying to do by hitting
<DEL> during boot up, only works with
AT type machines that have a battery
backed up drive and other information
option. The XT's drive information is
fixed in the BIOS, although most MFM
controllers saved the information on the
hard drive itself and changing control-
lers often means reformatting the drive
and losing all the old data. Another
problem is the BIOS sounds like it was
modified or custom made and as such, I
have no idea what it may do for you.
IBM produced books on their machines,
which contained the source of their BIOS.
Look for these at swap meets, they are
great for knowing what goes on inside
the machines.
Look on the side of the hard drive at the
model number and then look that up in
hard drive table for values. If you can 't
find a book, e-mail me and I will look it
up. Thanks. Bill.
Subject: DEC Rainbow and other
From: fritz_chwolka@AC.CyberCity.de
(FRITZ CHWOLKA)
Hi....
I just got the last issue and it's fimny. As
you know I'm collecting old systems (not
real, I don't throw them away) and now
I get an DEC Rainbow with a segate
ST506. The system nm but I miss the
installation disk for the Harddisk. I've
some other ST506 and want to test them
for replacing the original if it's neces-
sary.
So I need information, software etc. for
the Rainbow. Another problem are my
Zilog Systems MCZ-10/15. I've got the
Zilog- system disks for them (Hard sec-
tored) but no CP/M disk. The manuals
are complete. I've a nice Zilog MCZ 1/
05 , a multiuser system but without some
boot disks it wont run. Maybe there in
US is someone who can help. I need all
about the MCZ- 1/05 because I've noth-
ing for it.
I've a NASCOM Computer. This is a
german product an sold in similar ways.
As a complete system or a kit. Never the
less I've got no system disks for it .
Maybe that someone has these disks and
can make a copy for me. So this are my
wishes and the other systems I have nm
well. Thanks for TCJ and it's a nice
picture on page 51.
Greetings from Germany. .Fritz Chwolka
/ collecting old computers just for fun.
Contact Rick Rodman, Thanks. Bill.
The Computer Journal / #76
Real Computing
By Rick Rodman
32-Bit Systems
All Readers
Rick Moved
Minix is Back
The immediate question is, is Minix 1.7
a contender? I think so. Although it's
acquired lots of new features and lots
more utilities, it's still fairly simple at its
core. For the intrepid Real Programmer
who wants to understand what's under
the hood, Minix 1.7 is definitely worth
considering.
I loaded the Minix-86 1.7 beta on an
ISA-bus 386SX machine with 2MB of
RAM and an 80MB MFM hard drive.
Notice that I used the "86" version.
Minix 1.7 comes in an "86" version, for
8088s and 286s, and a "386" version for
the bigger chips. I'm more interested in
the "86" version, because it's smaller
and simpler.
Minix 1.7 includes a driver for an
Adaptec 154x SCSI host adapter, which
is expensive but common, and, more
significantly, TCP/IP networking. The
networking support is for SMCAVestem
Digital WD8003 or 8013 boards, which
are fairly common. If you've got a dif-
ferent board, well, you have all the source,
write your own driver.
Every software review has to discuss the
installation program, because that's one
of the most important parts of any pack-
age. Minix 1.7's installation program is
excellent You log in as "root" - no
"Geheim" any more - and type "instdist".
From then on, it's smooth sailing.
Especially nice is the new "part" parti-
tioning tool (compare to FDISK). Move
to the first line, over to the "size" col-
unm, and type "m". Then type "w" and
"q" and you're done with what used to
be a daunting task.
That's really about all you have to do,
besides putting in fiof^ies. A "vol"
program automates floppy changes. The
"instdist" script doesn't install the source
disks; you do that by entering just one
command (admittedly cryptic, but that's
Unix):
cd /utr ; vol 720 /dev/WO | uncompreu | tar xvfp -
Source to the whole OS and most of the
utilities is included. The old compiler is
no longer used. Now, the ANSI C com-
piler, which also conq)iles Pascal and
Modula-2 and used to be an extra-cost
item, is supplied. Everything is written
in ANSI C.
Other new things that are included in-
clude rz and sz (Zmodem), bawk, a new
shell called "ash", and the m4 macro
processor.
Glitches? Thus far in the beta, hard disk
controller incompatibilities and booting
seem to be the main problem areas. I
couldn't get it to work on a PS/2 model
60. Unlike 1.5, it doesn't ^pear pos-
sible to run a system from floppies and
RAM-disk alone. Of course, once you
have it ruiming on some machine, you
could generate a fl{q)py-only system or a
driver for any disk controller you hap-
pen to have.
KA9Q TCP/IP
I've gotten numerous inquiries regard-
ing using Tiny-TCP on various platforms,
usually PCs. Now you can certainly do
whatever you want with Tiny-TCP, but
as for me, I intend to keep it very small
and simple. For PCs, small and simple
is not the way people like to do things.
The definitive TCP/IP on PCs is a pack-
age written by Phil Kam and others called
by his call sign, KA9Q. Originally, this
was a fairly simple package not too much
bigger than Tiny-TCP, but it grew and
grew through the years as more and more
features accreted. Once iqwn a time, it
actually compiled and ran under CP/M.
Several versions of KA9Q came out over
the years. The oldest I have dates to
1 987. The version I will describe here is
fi-om the Simtel CD-ROM and is dated
June 1993.
Now, there are several ways to run TCP/
IP on a PC. One way is to Start Up
Windows 95. Another is to run Win-
dows NT, OS/2 Warp Connect, Linux,
or FreeBSD. If you have a Western
Digital ethemet card, you could run
Minix 1.7. You can also use Wolverine
TCP/IP with Windows for Workgroups,
or buy Chameleon, Acadia, Frontier,
LAN Workplace, or one of many other
fine Windows- and/or DOS-based TCP/
IP packages.
But if you want to run TCP/IP on a PC
for transferring files or Telnetting into
other computers, and don't feel like buy-
ing an entire convenience store just to
get a Twinkle, there's KA9Q.
So many people have asked me about it
that it must be one of the Deep Dark
Secrets of the PC World (like most free
and/or good things). I've tried it out and
it works just fine.
If you have the Simtel CD, you'll need
E920603.ZIP from the
\MSDOS\KAQTCPIP directory, and
DRIVERS.ZIP from the
\MSDOS\PKTDRVR directory. The
manual is in MAN_9106.ZIP in the
KAQTCPIP subdirectory. (If you don't
have the Simtel CD, but you do have a
The Computer Journal / #76
PC, go get it It isn't worth not having.)
Unzip E920603.ZIP to obtain NET.EXE.
The DRIVERS.ZIP is an archive of vari-
ous network card drivers. To use SLIP
or PPP on the serial port, you don't need
any of them. I used a 3Com 3C523
board in an IBM PS/2-60 (286 machine),
so I got 3C523.COM out of
DRIVERS.ZIP.
The 3C523 driver is what's called a
"Ciynwyr Packet Driver". It's a TSR,
like a Novell ODI driver. It sits in
memory, and you use a software inter-
rupt to talk to it. The software interrupt
must be selected between hex 60 and
hex 80. When you use this port from
KA9Q, you q)eciiy the same software
intemq>t, and you have a coimection.
All of the packet drivers use the same
method. Packet drivers are sometimes
even supplied by card manu&cturers with
their cards. I don't think this is purely
for KA9Q, however; I think some other
NOSs (network q>erating systems) use
this interface as well.
The following is how I run KA9Q with
3C523. The underlined text is what I
type:
c:\k.aq»?gsa gwW i 0K9W OkWW
c:\l«0q>ntt
nt>att«ch nackrt OxflO ethO 8 1500
nt>iteonfifl «thO UMMrtn 12fl 212.32 8
nt>iteon(iQ thO netmask 255,255.0.0
At this point I can telnet, ftp, ping, etc.
To leave NET running and run a DOS
program, the command "!" or "shell"
can be entered. However, NET won't be
able to do much while you 're doing some-
thing else.
The first line above is the command to
load the 3C523.COM packet driver, with
0x60 (hex 60 in C syntax) as its software
interrupt, 3 as its hardware IRQ, hex
300 as its I/O address, and segment COOO
as its memory address (OCOOOOH as seen
from the Reference Diskette). The sec-
ond line loads NET.EXE, which is re-
ferred to as the "NOS" in the documen-
tation. The third line specifies the host
name, AKA the machine's name; here
at KPCF machines are named for chemi-
cal elements. The fourth line attaches
the packet driver through the hex 60
software interrupt, calls it "ethO", and
specifies a transmit queue of 8 packets
with a maximum packet data size (MTU)
of 1500 bytes. The latter two parameters
are standard for Ethernet. The last two
lines specify the IP address and network
mask for the interface "ethO". By IP
addressing rules, every interface has to
have a different IP address.
By the way, we've talked a lot about
TCP/IP in Real Computing. The IP
addressing scheme is discussed in detail
in TCJ in I. Detailed information on
TCP, IP and FTP is also presented in
TCJs #64 and #66.
To nm a SLIP or PPP connection with
KA9Q, you don't need a packet driver,
because there is an async driver built in
to NET.EXE. Here's how you do that:
C:\KASOqiI
n«> ho«tn«m« zinc
n«l>«tt»ch ««Y 0«3Fa 4 llip iK) 1024 256 9600
rwOrtconfki HO loaMmt 192.9.201.2
neOifcontki HO nelmatk 2S5.2S5.2SS.0
The third line above is the configuration
of COMl, as you'll recognize from the
hex 3F8 I/O address and IRQ 4. The
next word, "slip", can be either "slip" or
"ppp", depending on what protocol you
want to use; "slO" is an arbitrary name
for the interface; 1024 is the buffer size,
256 the MTU, and 9600 the baud rate.
KA9Q is loaded with features, as it ought
to be considering that NET.EXE is al-
most 200K bytes in size. It supports
FTP either as cUent or server, telnet,
UDP, bootp and bootpd for dynamic
address assignment, and on and on. You
can put all the "net>" commands into a
file called AUTOEXEC.NET to save all
that mistake-prone typing every time you
run NET.
When some folks think about network-
ing, they immediately jump to mailing
drives. In the TCP/IP world, this is
usually done with NFS. KA9Q doesn't
include NFS. Neither does Windows
NT, for that matter. Neither does
TinyTCP... so you aren't going to be
able to see network drives on your
Osborne. If this is what you want, you'll
need to write an RSX of some kind. A
network redirector, which is what we
call the piece that makes the virtual drive,
is heavily OS-dependent and complicated
to write. Maybe someone will write one
for the Z-System.
Other folks think of the Worid Wide
Web. You'll need a Uttle more than
KA9Q or Tiny-TCP to get you on the
Web... but not much more. There are
text-only browsers, such as Lynx, with
which we may be able to cobble together
a CP/M or Minix Web browser.
On the other hand, suppose you want to
write a program to transfer data over the
TCP/IP network. The problem in the
DOS enviroimient is that there is no
standard socket library interface. How-
ever, all the source is there on the Simtel
CD. Take what you need and use it.
Building a LED panel for a PC
A TCJ reader named Marshall (AKA
obi-wan of the Internet) has started con-
struction of an LED panel along the
lines of what I talked about in TCI #70.
He writes: "The front panel should dis-
play the ports used to boot the computer
and the keyboard. The address bus could
latch on every fourth clock or some-
thing, with the data bus. I think it should
be binary, except the data bus should be
hex... That makes a long row of address
LEDs, 20+ and four hex data digits, 10
0-port switches and 10 1-port switches
for 20 total switches, 16 port-1 LEDs,
and 16 keyboard LEDs of two colors...
20 red address, 16 yellow, 16 blue, and
16 green LEDs would display well."
Sounds really great!
Marshall accesses the Internet from a
coffee shop in Portland, Oregon called
"The Cafe@Habit.Com". He supplied a
lot of interesting WWW addresses: http:/
/www.digikey.com, same with
marshall.com (no relation, I presimie),
cirrus.com, and cypress.com. Zilog has
a book ordering page on theirs at http:/
/www.zilog.com. Also, the following less
obvious addresses are from Motorola and
supply good information for hardware
experimenters:
http://freeware.aus.sps.mot.com
http://Design-Net.com
Many modem PC BIOSs write "POST
Codes" during boot up to an I/O port. I
don't know what the port is; in feet,
different manufacturers might use dif-
ferent ports. (Isn't it strange, everyone
making identical boxes, yet each fanati-
The Computer Journal / #76
cally guarding their identical secrets?)
For inter&ce debugging I think it'd be
nice to be able to set the I/O port to be
monitored by writing a port number to a
latch. The address or data busses could
be just two of many options.
Some PC manufacturers have recently
taken timid steps toward more visually
attractive machines, adding subtle curves
or slightly less bland colors to their
che^-looking plastic cases. Also, ac-
cessories are available for PCs such as
garishly-colored mouse pads and covers,
"screen fiames", and even horribly ugly
keyboards in childish motifs - ghastly,
but again with the same cheap plastic
look. And they wonder why these
changes make little difference.
Next time
Let's see, I was supposed to review
FreeBSD, but 1 ran out of space and
time. Oh, and Windows 95 came out.
TheviewatKPCF? Other than the new
user look & feel, it's just Windows for
Workgroups and DOS 6 shrink-wrapped
together. If you've got to use a Microsoft
OS, take a look at Windows NT instead.
It's a lot more stable, is really
multitasking, and if you can't Uve with-
out the new look & feel, you can get that
too. Windows 95 is mostly 16-bit code.
If you've got 32 bits, use 'em.
For more information
Real Computing BBS or Fax: +1 703
759 1169
E-mail: Changing! To Be Determined
Mail: 1 150 Kettle Pond Lane, Great Falls
VA 22066-1614
Walnut Creek CD-ROM (Manufacturer
- Simtel/CPM/LD^UX)
1547 Palos Verdes Mall Suite 260,
Walnut Creek CA 94596
+1 510 676 0783
'^LEVUX $49.95
Slaclovare Pro 2.3
Includes 4 CD-ROMs and a
450 page manual
A ready-to-run multitasking Unix clone
for 386 and higher PC compatibles.
TCP/IP, C, C-H-, X Window, complete
Source Code, and much more!
JUST COMPUTERS!
(800) 800-1648
Fax (707) 586-5606 Intl (707) 586-5600
P.O. Box 751414, Petaluma, CA 94975-1414
E-mail: sales@justcomp.com
Visa/MC/Infl Orders Gladly Accepted
For catalog, send e-mail to: infor@justcoinp.com
Include "^Ip" on a single line in the message.
V
Kettle Pond Computing Facility
Asorio/i5/iog5
DbU Fanlium-OO
PS/Z-P70
MBrm 7033 fax
IMS-BOOO
PS/2-50 UBS]
DEC Rainbow
]leriwB20-ll PS/Z-BO
"kernel ^^^^^^^^^„^^„..„,».«.-«^»«i
Lraraui-iniiaKi"'""'"!"""""'"""""''
,„„„.i„»nn« !«■" «'"
,liilllHHi!!ll1!lSllH8"»iil«l"""««"
Token Ring
NCR 3430
NCR 3450
dual^OB
Cubix 486 running
inloractivo Unb
NCR 3430
~E
]
'"«*'»«i
"*«>■■*,
PC-53Z
Scroungamastar
Panasonio
5DBR
optical juicaboK
Compaq
Systampro
Sun Sparostation I
The Computer Journal / #76
Regular Feature
Hardware Support
XT's and More
PC/XT Comer
By Frank Sergeant
Bank Switching on PCs
I thought I'd say a few more words abouf how PCs work. PCs
from the begirming have had a Byzantine memory addressing
system. It could be so simple! The actual address is just the
collection of Os and Is on the physical address bus. A PC or
XT has only 20 address lines. The 386/486/586, when in real
mode, only uses the first 20 address lines. This gives a
maximum plq^sical address range of 2'^20 = 1 MB (one mega-
byte). No matter how you slice it, 20-bits only let you address
within the first megabyte of RAM. This is where all our
troubles come from. Windows and DOS users get "out of
memory" errors whether they have 1 MB or 4 MB or 8 MB of
RAM. Without a great deal of trouble, the extra several
megabytes don't help at all because they cannot be accessed in
real mode. Further, less than 1 MB is available because the
upper 384K of it is used for various system ROMs and video
memory. Thus, programs must fit into the lower 640K of the
first 1 MB. This is where the infamous 640K DOS memory
barrier stems from.
This limitation is built into the architecture of the CPU. The
8088/8086 (and higher, when in real mode) only have 20 bits!
This is a damn shame, because the 20 bits come from a 16-bit
segment register and a 16-bit offset register. If one were the
upper half and the other the lower half of an address, you could
have a fiill 32-bits, giving an address range of 4 GB (gigabytes).
But no, Intel doesn't do it this way. To calculate the physical
address from a segment register and an offset register, the
segment register's value is multiplied by 16 and added to the
ofOset register's value. To determine how many locations can
be addressed, each address line counts as a power of two. Thus,
if you only had 3 address lines, you could address 2'^3 = 8
locations. So, here is how the PC's address bits and address
lines limit us:
(2'>l« • 1«) + 2'-16 - (2^16 • I^^ + 2^16 - (2-^20) + 2"I6.
- appfoidinately 2"20 - I MB
So, only 20 bits. Boo!
However, protected mode on '286 or better CPUs gets around
this, even when running in 16-bit protected mode. Here is how
it does it 16-bit protected mode still uses a 16-bit segment
register and a 16-bit offset register. The difference is this: in
protected mode, the segment register's value is not multiplied
by 16. Instead it is used as an index into a table of starting
addresses. Each entry in the table holds a 24-bit (in 16-bit
mode) or a 32-bit (in 32-bit mode) starting address for a
segment. To this, the 16-bit (or 32-bit) offset register's con-
tents are added, giving a 24-bit or 32-bit address. In the
sin:q>lest protected mode, this 24-bit or 32-bit address is the
physical address. In more complicated modes, it may be a
"linear" address which undergoes fiuther translation to con-
vert it to a physical address.
In a nutshell, as far as addressing memory is concerned, the
difference between real and protected mode is whether a seg-
ment register contains the physical address of a block of memory
or whether it contains an index into a table that supplies the
address of the block.
The Internet
The Internet can be a great waste of time. Readiag usenet
newsgroups is addictive and hypnotic. Hours pass with noth-
ing to show for them. On the other hand, I've got to have my
comp.lang.forth and various others. The occasional gem makes
up for the rest of the rocks.
Email
For me, the internet offers three things: email, newsgroups,
and file transfer. Of these, the most important is email. I so
prefer to respond via email than to write a letter, print it,
address the envelope, pay the post office. A phone call may
interrupt someone, but email is always convenient for both
parties. If you don't have email access, at least phone MCIMail
at 800-444-6245 and consider their $35/year service. They
even let you email people who don't have email addresses: they
print and mail a hardcopy.
Newsgroups
Perhaps 15,000 world-wide news groups exist. These are
essentially publicly-posted email messages, separated by topic,
discussing nearly every subject imaginable. I feithfiilly follow
a few groups related to my computer programming interests. I
occasionally browse through others as the mood strikes me.
Email saves time, but newsgroups waste time, but the right
newsgroup article might supply just the answer you need to
solve a tough problem. Together, we are a co-operative techni-
cal support self-help group.
10
The Computer Journal / #76
SUPER-CHARGE THAT OLD XTI
By Kirk Lawrence
I find it difficult to think of a turbo XT-class machine as an "old"
con^uter. Heck, I still use mine every day! While the XT might
technicdiy qualify as an "old" computer, this venerable work>
horse has a lot of life left in it. With a few software tweaks, and
possiUy a hardware change or two, the turbo XT will cwitinue to
serve y<Hi welt right into the 2Ut century.
One of the most common moans I hear about XTs is that they
can't run fte fastcsr IDE or SCSI hard drives. Not true! 8-bit, XT-
compatible IDE and SCSI hard disk host adaptors are widely
available at a modest cost. Check the smaller, non-colw hardware
ads in Computer Shopper magazine; youMl find'em. The
controllw's on-board BIOS on these cards fH-ovidcs total support
for the hard disk, and no AT-style system CMOS is neected.
Another complaint about XTs is the lack of high-density floppy
drives. Again^ this is mi easy fix. If you feel the need for HD
fl<^ptes, just grab yourself an S-bit, XT-compatible high-density
floppy drive controller card, or a multi-I/O card with built-in
high-density drive support. These arc also widely available ...
ciAer new (fi-om Computer Shopper ads), or used. If ttiere's an
iiKlependent, local computer store in your town, ask'em to let you
go through the boxes of "obsolete" used hardware in the back
room. Almost every independent computer shop has a stock of
such stuff which they've accumulated over the years. They're
usually glad to get rid of it at extremely reasonable prices.
EHgging into this "old" stuff often turns up some really good
finds,
VideQ*! Easily upgradeable to VOA, if you so desire. Any 8-bit
VGA card will work just fine in an XT. Simply plug it in, and
you're in bu»ness.
CHcay, that takes care of the hardware. But wliat about overall
system performance? Welt, let's face it: compared to a Pentium,
a turbo XT is slowl The good news is, there are several easy
software tweaks you can do which will greatly increase your XT's
performance. In fact, you'll be amazed at the difference.
The first tiling we can do is increase \he processor speed. Yes,
that's right, we CAN speed up the existing processor, and we can
do it with sofbvare! Here's how: the XT's 8253 timer chip
contr<^ tiie rate at which the system RAM is refreshed. In a
normal generic XT, the RAM is refreshed every 15 microseconds.
These 15-micro8econd into-vals require the processor's attention,
thereby consuming diunks of computing time. But the RAM in an
XT really doesn't need to be refreshed that often. So if we change
Hbe DREQO interrupt from its normal 15 microseconds to a much
kmger period of time, the processor won't have to spend neariy
as much of its time refreshing the RAM ... and this effectively
increases processing speed. This approach will speed up the
processor by 5 to 10 per cent. There are a number of freeware
utilities, such as SPEEDUP and TOAD8253, which will alter the
RAM refresh rate. Run one of them from your AUTOEXEC.BAT
file at boot-up. If you wish, you can compile your own program
from the following source code (use any shareware ASM com-
piler, such as A86). It's a tiny program that'll make a BIG differ-
ence in your XT's system performance,. .and it's not a TSR.
; Increase XT processor speed by altering the RAM refresh rate.
org
lOOh
mov
al,074h
out
043h,al
mov
ax,OODOh
out
041h,al
xchg
al,8h
out
041h.al
int
20h
The next thing we can do to boost XT system poformance is to
increase the speed of video writes. The rooohanfcs involved here
have to do with speeding up certain INT lOh fiinctims, and are
somewhat complicated. Fortunately, the shareware pr<^ram QCRT
Version 2.0 ($5.00 from Glenn K. Smith, RADON Software, 809
South Missouri, Weslaco, Texas 78596) takes care of tiiis for us,
Load QCRT frwn your AUTOEXEC.BAT file, and the speed of
your S(^«en writes will increase by as much as 80 per cent QCRT
can be found on many loc^ BBSes and shareware CD-ROMs as
QCRT207:iP.
Another performance enhancement is to increase tiie XT keyboard's
rqieat rate. While not strictly necessary, increasing the typeamatic
rate makes a world of difference, particulariy if you do a lot of
word processing or other types of data entry. Once you've tried it,
you'll never be able to go back to that pokey old default keyboard
rate! The only catch is, you'll have to find a utility that's designed
specifically for the PC and XT. Most utilities of this type are
designed for AT-class machines, which support Interrupt 16h,
Function 3 (an XT doesn't), i recommend the freeware program
HOTKEY.COM, which can be found on many local BBSes and
shareware CD-ROMs. Load HOTKEY from your
AUTOEXEC BAT file, and your keyboard will si2zlc.
One fmal suggestion: resist the temptation to run DOS versbn S.x
or 6.x on your XT. The memory overhead required by these
versions is too high. Use DOS version 3.2x or 3.3x, instead. When
you're limited to 640K of lower DOS memory, as mo^ XTs are,
you need every extra bit of memory you can get. Almost all of the
fancy "frills and extras" which were included with the higher
versions of DOS (such as MOVE, FIND, etc.) are external com-
mands, and have been available for years as third-party fiieeware.
So if you need'em, find and use the freeware versions of tiiese
utilities, rather than loading a memory-hogging "newer" DOS
version.
Even ttuHigh it'll never be able to run WINDOWS 95 or DOOM,
the turbo XT is a wonderfully useful and versatile machine.
There's still a ton of DOS-based, XT<ompatiblc productivity
software programs out there — text editors, word processors,
databases, spreadsheets, even desktop publishing programs —
which will allow you to do just about anydiing you need to do on
a computer. By implementing a few software tweaks, and maybe
a few minor hardware upgrades, your XT will remain vital and
viable fw many years to come. And the nicest part is, the price
is right!
Enjoy. Kirk Lawrence (klaw@3rdlOOO.com)
The Computer Journal / #76
II
File Transfer
Lots of information is stored on the Internet in the form of files
that can be read on-line or copied to your computer to be read
off-line. It may not be easy to locate and you might waste more
time looking than it is worth. The traditional method is
'anonymous ftp' (file transfer protocol), where you "ftp" into
a remote system, browse its file structure with the 'dir' com-
mand, and transfer the files you want with the 'get' command.
Slick user interfaces are taking over, so more and more the files
are transferred by clicking on the file you want as you "surf the
Wd)." Those with only email access can receive files, even
binary files, via email.
My Internet Solution
I finally decided what to do about Internet access and a perma-
nent email address. The two best deals I've come across are
Eskimo North and Pobox.
charge a little more than I would like, but less than long
distance or Century. The other ISP is Century Telephone
Company (our local phone company). I have a beta testing
account with Century, but don't like the very slow response
fi-om their technical support I expect to drop them when they
start charging me money. A third ISP has just started up,
matching their rates to Century's.
GEnie and SWT
I just dropped my GEnie account to help pay for my Axiom and
Eskimo accounts. My SWT (Southwest Texas University)
accoimt (fs07675@swt.edu) is inactive since I'm "laying out"
this (fall) semester. Even if I enroll in further coiu"ses, I don't
think I'll use my SWT much, due to its ten^rary and unpre-
dictable nature. As Pobox says, "the only thing worse than
losing your job is losing your email."
PC Software Miscellanea
Eskimo North
Eskimo North in Seattle offers a fiill-service internet account
for as low as $6/month for dial-in or $3/month for telnet-only,
when you pay for 5 years at once. Even though I live in Texas,
I just opened a trial telnrt-only account: pygmy@eskimo.com.
I think I'm going to pay them for 5 years. I rather like it so
far. It seems a little slow, but should be fine for reading the odd
newsgroup that my local ISP might not carry. One of its users
said "eskimo is a dog ... albeit a feirly reliable, friendly one."
I'll use my sergeant@axiom.net account, which is a local
phone call, to access the Eskimo account. Apparently, I'll also
be able to use my Eskimo account for a Web page and an ftp
site. Eventually, look for a downloadable version of Pygmy
Forth there. Send email to info@eskimo.com for fiill details.
By togging in as 'new' you can get a free 2-week trial account.
Pobox
Pobox offers an even cheaper solution to the permanent email
address problem. For $ 1 Sfyeai or $75 for 6 years, they provide
an email forwarding service. You get 3 aliases for that price.
ff your real email address changes, just update your listing with
P*ox. I was having a lot of trouble deciding between Eskimo
and Pobox, so I think I will get them both. If one fizzles, the
other should still be good. My permanent address is now
pygniy@pobox.com. Logged into Eskimo, I sent a test mes-
sage to pygmy@pobox.com. It arrived at axiom within 10
seconds. This seems fast enough. Send email to
info@pobox.com for full details. They offer a 3 month free
trial.
Axiom
A year ago I didn't expect any local ISPs in San Marcos. Now
there are three! (Not counting the university.) Axiom was
started by some people who have run a BBS in town for years.
I expect sergeant@axiom.net to be my primary account. They
J and APL and Windows and cetera
I've had a mild interest in the language J for sometime. It is
the successor to the APL language, which is well known for
intensely compact and unreadable mathematical expressions (I
mean this in the kindest way). I more or less gave up on J after
attempting to work through some of its documentation written
by its inventor Kenneth Iverson, but hope to get back to it
someday. The latest news is that Byte magazine recently had
an article on J. Strand Software Inc (19235 Covington Court,
Shorewood MN 55331, USA, (612) 470-7345) is the current
distributor. I received their very nice Jottings newsletter.
Phone, or email Aime Faust at amfeust@aol.com, if you'd like
a c<^ of the newsletter. A freeware version of J for Windows
(and perhaps other computers?) is available by ftp from
watservl.waterloo.edu or wuvieai.wu-wien.ac.at in directory
languages/j.
One reason J interests me is that it apparently can be xised to
develop Windows applications. I may have mentioned that in
spite of trying to think of myself as a Forth purist, I find myself
accepting money for maintaining and enhancing a medical
accounting package written in Clipper (a EXDS-based XBase
language, more or less). Call me a whore, I don't care. There
seems to be pressure in the air toward making the system run
under Windows. (It will run now in a DOS box.) Why slow
it down so Windows can hand-draw ugly fonts? Anyway, I try
to keep an eye open for how to move the application to Win-
dows if the pressure becomes irresistible. J is just kinky
enough I might look into it further. Realistically, there are
several other alternatives to consider. I especially want to look
at Delphi, which I still hope to install any day now. It gets rave
reviews in the Clipper and database newsgroups. VO (Com-
puter Associates' complex, bloated version of "Clipper for
Windows" named Visual Objects) gets mixed reviews. Some
say they hate it; some say they like it. All say it takes a lot of
RAM.
12
The Computer Journal / #76
Speaking of VO, I found a review of it in PC Techniques
magazine (Aug/Sep '95, pp. 88-89) by James Bean to be very
interesting from the standpoint of the English language and
logic. He says "Overall, CA- Visual Objects is extremely pow-
erful and provides many rich features for the client/server
developer..." Wow! Sounds great. "Rich features" ooh... not
just "powerful" but "extremely powerful" ... doesn't that sug-
gest that the product works? Later in the same paragraph he
says "Also, when the build fimction executes correctly and no
errors are noted from the compiler, the resulting .EXE should
be considerably more robust and error free than it actually is."
To what have our collective standards sunk?
Speaking of language implementations, I see Mix Software
(800-333-0330, 214-783-6001) offers a C compiler for $19.95.
From the ad, it sounds as good as Borland's, maybe better, for
straight DOS work. Of course, it's another $19.95 for the
debugger and $8 for shipping. Now you are pretty close to
what Borland's Turbo C/C-h- would cost. Various other add-
ons cost $10 to $30. If anyone tries it out, please let me know
what you think of it.
Bigger Hard Disks and Alternate Operating Systems
Gigabyte Harddrives
I finally succumbed to the lure of under $300 1 GB hard drives.
I added a Maxtor 1.2 GB EIDE hard drive. There are various
FAQs (Frequently Asked Questions) on the internet discussing
IDE vs EIDE. The bottom line is either kind of harddrive will
work with either kind of controller. You'll probably get faster
data transfer with EIDE. There are serious questions involved
in accessing a disk with more than 504 MB because of the way
the PC's BIOS ROM handles disks. Before I was finished, I
almost wished I had bought two 500 MB drives instead of the
1 GB drive. 1024 is the magic maximum number for cylinders.
DOS can't read past the 1024th cylinder. I was reluctant to use
the Disk Manager software that came with the Maxtor drive.
I had heard there might be problems between it and OS/2 and/
or Linux, etc. What finally worked for me was to tell the
motherboard BIOS setup (the "CMOS") that I had a drive with
816 cylinders and 48 heads and 63 sectors (rather than the
2448 cylinders, 16 heads, and 63 sectors printed on the drive).
The product in bytes, either way, is the same. This keeps the
number of cylinders imder the 1024 limit. I also told the BIOS
setup to use "LBA" (logical block addressing). I _think_ this
was necessary. If I understand the problem, DOS can't handle
more than 1024 cylinders while IDE controllers can't handle
more than 16 heads. The LBA mode of the motherboard BIOS
apparently converts between DOS's view of the drive geometry
to a Unear block addressing mode that IDE controllers can
handle. I was tempted to turn off the LBA mode in the BIOS
setup and see if the drive was still accessible, but "let sleeping
dogs lie" came to mind.
could have set a jumper on the Promise EIDE controller to use
LBA. So, it turned out I probably could have used my same old
IDE card without buying the Promise card. Oh well. Maybe
it's faster now. Also, I had a terrible problem with the old
controller. I had a 1.2 MB floppy as drive A and a 1.4 MB
floppy as drive B. Diskette changes in drive B (the only floppy
drive I used, practically) were never recognized. Whenever I
wanted to switch floppies, I had to reboot! This was an
aimoyance, but was only a major problem when installing
software from multiple floppies.
Since the world has moved to 1 .4 MB 3-1/2 inch diskettes, I put
the 1.4 MB drive as A and the 1.2 as B when I installed the new
controller card. Now changing diskettes in drive A works fine.
I suspect the motherboard/controller combination, as I used the
same model IDE controller and same model floppy drive, with
the same switch settings, in another coiiq)uter with no trouble.
I bought the EIDE card and the 1 .2 GB Maxtor hard drive from
the Internet Sh(^ping Network (http://shop.intemet.net). They
shipped fairly promptly, but I paid for next-day deliver and got
2-day in one case and and 3-day in the other. Why two cases?
Because they shipped the items separately and charged me the
separate shipping on each. This automated ordering has its
disadvantages. Next time, if I deal with them, I'll probably ask
for UPS ground.
I put in a "MEI Premium Backup 420" tape drive (about $99
from MEI/MICRO). This uses the QIC-80 tape format and
variants. It is really an IOMEGA drive relabeled for MEI. The
ad said NOTHING, the salesman I spoke to on the phone said
NOTHING about the potential problem of using certain kinds
of tape. After I bought it, after it arrived, I read in the
documentation that using the 2 120 (ordinary QIC-80) tape can
ruin the tape head and that the more expensive QIC-80 WIDE
tape is recommended. The ad listed the 2120 as one of the
several kinds of tapes the drive siq)ported. It's not worth the
trouble to send it back. I'll use it until the tape heads are ruined
and then buy another drive^owi another vendor! A "420" tape
drive really only holds about 2 10 or 220 MB. The "420" comes
from the possibility of compressing the data. Maybe your 420
MB of data can be compressed down to 220 MB, maybe not.
That "420" is on the more ejqxnsive tape cartridges. The
cheap ones I got for about $9 each hold much less.
The actual tape backing up and restoring went smoothly. I'm
really glad to have a tape backup system. One day, I'll
probably get a better one. For now, I'll back up to tape and also
back up the most important files to floppy. For rearranging my
harddrives, the tape was great.
OS/2 Warp
While I was putting in a new drive and having to reformat and
repartition it anyway, I thought this might be a good time to try
out OS/2. It was mostly a waste of time, but I learned a lot.
If I had not had an LBA mode in my motherboard BIOS, I The OS/2 1 read about in one of the FAQs sounded great! I wish
The Computer Journal / #76
13
that had been the version I tried out (joke). It seems that OS/
2 will run essentially all DOS programs and all Windows
programs, plus, of course, any programs actually written for
OS/2. Not only that, it will let you multitask them. The
Internet reported a magazine article claiming Win95 and OS/
2 ran applications approximately the same speed if only a
single app was running, but that once you started to multitask,
OS/2 was perhaps 4 or S times faster. I wanted all that plus the
HPFS file system, which allocates disk space in units of 512
bytes, instead of the 4K to 16K chunks used by DOS.
I never could get OS/2 to talk to my printer, which was on a
serial port. DOS doesn't have any trouble with this. Nor, could
I get OS/2 to give my DOS comm program the data from the
modem quickly. There was about a two second delay between
pressing the "show me the next page" key and seeing the next
page diq)]ayedl DOS has no such trouble. I feel sure there are
work arounds tor these problems, but life is too short. It is this
sort of trouble that softens me up for Windows 95. Even if
Win9S is no danrn good, it will still own the market. Time
sjpeat learning to install, use, support Windows is probably a
better investment than spending it on OS/2.
On the other hand, I mildly complained of my troubles on an
0S2 newsgroup and got very nice email from an IBM em-
ployee offering several suggestions on setting up OS/2 and
where to look fw further information. Later, I also could not
get Linux to work with my serial printer, so I don't see how I
can feel too bad about OS/2. I gave up, moved my printer so
a parallel cable would reach, and put the printer on LPT 1 : (the
first parallel port), where most PCs have their printers. After
that, I re-installed OS/2 and it worked fine with the printer. I
still haven't figured out how to get fast modem response, but
I'm sure it can be done.
Disk Partitioning
Here is how I finally split up the 1.2 GB drive:
1 MB prinuiy partition for Boot Manager
1 1 MB primary partition for booting MS-DOS } Drive C:
43 MB primary partition for booting MS-DOS 6.22 or Drive C:
255 MB FAT data partition for DOS Drive D:
255 MB FAT daU partition for DOS Drive E:
255 MB FAT daU partition for DOS Drive F:
255 MB FAT data partition for DOS Drive G:
53 MB reserved for Linux
66 MB HPFS OS/2 boot partition Drive H:
On a FAT file system, the size of the allocation unit depends
on the total size of the logical drive. I would prefer to combine
logical drives D through G into a single logical drive, but can't
afford the wasted space. That's why I have four 255 MB
partitions instead of a single large partition for my DOS data.
With the small partitions the allocation imit is 4 KB. So, a 200
byte file actually occupies 4 KB on the disk. If I had combined
the four 255 MB partitions into a single 1 GB partition, the
allocation unit would have been 16 KB. Ooh, that hurts.
the single remaining extended partition. Only 4 real partitions
are allowed. If you want more, you must make at least one of
the partitions an "extended" partition, which you then keep
carving up into additional logical partitions. DOS and Boot
Manager will only boot from a primary partition. OS/2 will
boot from a logical partition and so will Linux (so I've heard).
Drive H: is only visible to OS/2, since it is not formatted as a
FAT (File Allocation Table) type of file system. Instead, it uses
OS/2's native HPFS (High Performance File System).
Yes, I left OS/2 on the machine. Its FDISK command works
better than DOS's. When OS/2's boot manager comes up, it
offers me a choice of which operating system to boot, but
defaults to DOS 6.22 if I don't pick another within 30 seconds.
Networking
I also bought two ethemet cards fi-om MEI and installed one in
the 486DX40 and the other in the 386SX25. Their test
programs indicated all was well. They could "ping" and
"pong" data back and forth. Then I tried to install the Little
Big Lan. It sort of worked. It would start a transfer, then lock
up. I gave up on it. When I have more time, I'll try Novell or
Lantastic or Linux to see if they work ok. If so, I'll blame the
Little Big Lan. If not, I'll blame the 386SX25.
Linux
I installed Linux. I bought the "Linux on CD-ROM Slackware
2.3 Slackware ELF Beta" ADRAS July Edition for $10 plus $3
shipping and handling (plus sales tax for Texas destinations)
from
Daniel Jimenez adras@crl.com
ADRAS Computing
PO Box 29391
San Antonio, TX 78229.
Linux and the entire Slackware package are impressive. You
sive get a lot for the $ 1 3 . A massive amount of documentation
comes on the CD. You can install Linux entirely to your hard
disk in its own partition or to your hard disk in a DOS partition
in a regular DOS subdirectory or you can install a minimal
amoimt to your hard disk and nm the rest of Linux from the
CD, as the CD contains a "live file system." The version of the
kernel is 1 .2.8. I believe the CD contains other versions of the
kernel as alternatives, plus source code for even the newest
experimental kernels (the 1.3.x series). (The stable kernels
have an even second nimiber while the kernels under active
development have an odd second number.)
I ran into a little problem. My CDROM drive quit working. I
opened the computer case, removed the drive, opened it up,
reconnected the cables, and watched it try to run. The CD
wasn't spiiming. I started it spinning with my fingers and
Partitions beginning with Drive D are all logical partitions in
14
Continued on page 1 7
The Computer Journal / #76
The European Beat
by Helmut Jungkunz
Regular Feature
All Users
East German 280
Today: Jubilee - 10 Years of Schneider/ Amstrad CPC User
Group Munich!
Fascinating, fascinating ... the unthinkable has happened.
Our User group has survived heavy attacks of Bill Gates and
Co. for many years. We have seen many an operating system
come and go. We ran them all. We loved them and we hated
them, but our secret love still is CP/M. It was such a neat little
system, so much in order, so easy to dive into, so easy to
understand, once the exploring mind had the basics.
In February 1985, 1 got my AMSTRAD CPC 464 (with cassette
drive only), a right angular gray box, with a gray Monitor,
called "Green Monitor" because of the color of its monochrome
output. It cost me a fortune (500 $+) and after a while I found
out, I couldn't do without a disk drive. So, I spent another 350
$ on that little (gray) box. I bought the "CPC Amstrad
International", a national magazine for Schneider/Amstrad
CPCs. For those of you, who haven't been following from the
start of "The Eiu-opean Beat", Schneider was a German com-
pany, working as an agent for AMSTRAD in Germany, who
renamed the CPCs into "Schneider CPC", so that everybody
thought, that Schneider was the maker of the CPCs. I learned
how to type in BASIC programs without mistakes, yes, even
how to correct enors in the programs. Then, I discovered the
CP/M side of the machine. After a short period of A> ? and
A>BDOS error on A: Select!, I managed to work with it - and
was inunediately limited by the low TPA of 39K.
So I went and bought the brand new Vortex RAM expansion
kit. That's when problems started. I couldn't use my disk
drive the way I had, since I kept getting these "hangers" when
switching the computer on: The initial "ROMWALK", that
reset all the ROMs and/or EPROMs, failed to return from the
disk drive controller, that contained the disk ROM. Then I
read about the "VORTEX User Group" and joined them. I was
one of the first seven, which put me on the lucky side, but more
about that later on. Anyway, 1 met a clever guy, called Andreas
Kisslinger, who had the correct explanation for what was
happening. Since you couldn't do a disk catalog command
"CAT', it was named "The CAT Syndrome". After replacing
the ROM in the controller with a new EPROM, the problem
was gone. Also, the BIOS within the e?q>ansion unit was very
poorly written, plans arose to rewrite some of the code.
Another guy in the club soon took some of us aside and pointed
out, that the host of the VORTEX User Group, a clever dealer,
always tried to sell us some stuff and more or less ripped us off.
He said, that he was going to form his own CPC User Group
and invited us to join. After a Powwow, we decided this was
a good plan and sat down for the founding procedures. In
November 1985, the formal foundation of the Schneider/
Amstrad CPC User Group (SCUG) was a fact.
Then followed a period, when the host of the VORTEX User
Group tried to force "membership fees" on us. A couple of us
had heard from the first ones, what was happening, and we
immediately sent our armouncements notes to that guy. He
then wrote back "Oh, but you guys didn't have to pay anyway,
since you were among the first seven ...". We quit anyway.
The others got together an alarmed the district attorney. Thus
we found out, that the dealer played the same trick on people
in other parts of Germany as well, but had his company site
legally in Switzerland(!). He was fined in a law suit at long
last.
The SCUG soon had lots of new members, and the usual
discussions and arguments took place, like in every club,
perhaps. There were a couple of people, that came to us from
the VORTEX User group, who were very much afraid of any
incorrect phrasings in our "membership agreement". After
months, we had it all sorted out, and the group started to
produce usefiil output. Andreas Kisslinger wrote B360K, the
famous first CPC BIOS RSX, that allowed not only to hook up
an 80 track drive to the CPC as drive B:, but to also patch the
The Computer Journal / #76
15
40 track BIOS to accept 80 Tracks single sided, which gave
360K minus reserved system tracks == 348K net capacity
formatted. There was a hardware diagram, allowing you to
buiW your own Z80 PIO. The first Public Domain disc was
collected, and • the first SIG/M programs found their way into
the group.
There was one guy, who sold the disks to members at a
reasonable price (8 Deutschmarics a piece), and I bought a
cou{de. When he armounced his moving to another city, I
decided to bt^ the whole packet firom him (up to #271 then).
I started to browse through the disks soon and found lots of
useful tools, that I put together on another P.D. disk, fi-ee to
club members. Those were tools like NSWEEP (1.99), NULU
(1.5), DELBR,USQ, SAPIO and ALIENS. That was the start
of my haddng into the system. Reading the patch documen-
tation firom ALIENS, I learned how to adapt cursor and other
terminal fiuicti(His to the program. I lodced at other programs,
too and found it pretty annoying, to have to install every
program to our wdrd CPC CP/M 2.2 terminal. The main
IHt)blem was, that most programs were written for TELE VIDEO
terminals, using CTRL-Z to clear the screen and home the
cursor. The CPC in C?M 2.2 uses CTRL-Z to define a true
screen Windowl Imagine, the Syntax would be CTRL-Z,number
of window (0 being the main screen!), starting row, starting
column, end row, and column. Now imagine the CP/M seeing
CTRL-Z by itself This would be the equivalent of "Do a
Window". Now CP/M would look for other characters to
conq>lete the window. In most cases, the CTRL-Z (Clear
Screen) would be terminated by Zeroes. The result was a
catastrophe to the CPC screen: WINDOW 0, row, column,
end, end! - => cursor at home position, stuck in a tiny
spot at the upper left comer, unable to move!
1 got so disappointed, after failing to install Polish Pong, that
I turned away fix)m the SIG/M stuS'for three weeks. After that,
I gave up, trying to install P.D. games. Instead, I started to look
at more sq)histicated stuff, to help increase the performance of
our CPCs. After a short while, I reached SIG/M 101 and got
pulled into the deeps of Richard Conn's ZCPR introduction. I
presented this to our club (end of 1986!) and tried to catch our
programmers interest to implement ZCPR into our CP/M 2.2
I got weak replies, phrases of "missing BIOS source", "no
time", "other projects", and "Is it really worth it?", until the
whole thing just dropped dead. It was then when I bought my
first IBM XT, in order to keep up with the small side jobs at
computer fairs, that I got from "Markt&Technik" (M&T),
when I was connected with their "Happy Computer" magazine.
I bought a 1200 BAUD Worldport pocket modem and started
to "walk the phone Unes". I soon became CP/M Co-Sysop at
a BBS in Munich and made contact to other Sysops from other
BBSs. I met Peter Spaeth, who was a member of the German
Computer Club (forgot the actual name), but also operated as
a Ubrarian for the Osborne User Group. From him ,1 got lots
of new files and insights. The most important thing was, that
he had all the FOG magazines, where many articles dealt with
CP/M programs, hitherto unknown to me an my fellow users.
I read about REMBRANDT (graphics program for the
KAYPRO), and other nice things. There were a lot of men-
tioning of ZCPR and Z-tools.
I also had access to the Morrow Owner's Review (MOR), for
one of our newer members, Timothy Slater, was working on a
Morrow Micro Decision. He is a translator for technical
German into English, since he is American.
I read all these wonderfiil developments in ZCPR in articles
like "Tools for Tyros" and "Forever Z!". The latter series was
written by Rick Chames, a guy, whose phone number hap-
pened to be included. So one night, I sat up and called Rick
Chames "on the dodgy subject: are there or are there not Flying
Saucers" (I can see all them Jimi Hendrix fans grin!). Well,
I asked his opinion on ZCPR. He was so overwhelmed with Z,
he set my phone counter spinning, telling blooming stories of
how Z changed his life and that it was not an operating system
replacement, but a reUgion. Believe me, he made it sound that
way! I was stimned (at five o'clock in the morning, who
wouldn't be!) and decided to watch out for more. I sent some
programs on a disk to Rick Chames and that was all for then.
RepUes died out soon. Then I read about that new development
NZ-COM, available fi-om Echelon! Automatic ZCPR installa-
tion for every system! I showed this to our members and got
a more interest than before. But of course, they would still sit
and wait, if I hadn't tried to contact Jay. The rest of the story
you already know.
SCUG has lots of members with Z-System, of course, and I
provided them with the AMSTRAD terminal definitions. I
initiated the production of the DOBBERTIN hard disk for the
CPC (they asked, if 50 pieces were realistic) and they sold
hundreds of them. The DOBBERTIN RAM expansion is a
lawless unit, fiilly compatible to most everything, the ROM-
Box allows you to add-on further EPROM software and/or
BIOS extensions.
Today, we are facing the fact of "Future OS", the "final
operating system" for the AMSTRAD CPC, written by one of
16
The Computer Journal / #76
our members, a no-compromise solution, that doesn't claim to be compatible to anything.
It plainly isn't. But, it offers nice software hooks for other programmers, plus, it comes with
source.
The official SCUG celebration will be held in our traditional Club home, that we only
shortly regained, the "ASTALLER HOP' in Munich, on Saturday, November 25th. The
fact, that the very next day, the famous Electronic Flea market takes place only 1 mile from
that location, might well help to attract lots of (German) pec^le.
What does the future hold? Well, some of us still have a CPC and run it, some keep it in
a nice, romantic comer of their homes, some have a PCW and most of us have some kind
of x86 machine with emulators like CPE or CPCEMU on them. We use all kinds of
operating systems, like CP/M-80, CP/M86, CP/M-68K, MP/M-80, CP/M Plus, MS-DOS,
IBM-DOS, Novell-DOS, LINUX, Coherent and SYSTEM 7 (MAC). We plan to keep the
CPC in our baimer as a signal to others, showing our tolerance against weaker systems, our
accq>tance of help-seekers and a good will to keep up a piece of tradition in this oh so fast
world.
Regards and cu
Helmut Jungkunz
(P.S: I'd be glad to receive your comments on my articles, best through e-mail, since this
creates a computer file that can be passed to others.)
XT Corner Continued
everything worked but it wouldn't start up reliably by itself. I
fooled around with the upper bracket that clamps the CD in
place, bending it higher and lower, until I finally set it so it
seems to start up reliably. We'll see.
After that, the Linux installation went smoothly. I had planned
to put Linux in its own partition, having left a 54 MB partition
just for Linux on my new 1 GB disk . Well, 54 MB is nowhere
near large enough to install everything. I plaimed to install the
minimum and run the rest from the CD. I think this would be
too slow for comfort, but would be ok for a quick look at Linux.
Since I had the case open any way to fix the CDROM drive, I
took that opportunity to reconnect my 330 MB hard drive and
devote 280 MB ofit to Linux. I installed nearly eveiything. I
occasionally said no to things such as the fonts and macros
needed to typeset Turkisk documents, but I installed damn near
everything else! Far more than I'll ever use. I said it was
impressive. My impression is Linux, like the rest of the
modem software world, is too damn big and complex. On the
other hand, a 330 MB harddisk is pretty cheap these days and
a 120 MB is large enough if you don't install all the extra
packages and source code you'll never use. You don't have to
have a CDROM drive (you can install from floppies), but they
can be had for about $79 now. I don't expect to do much with
Linux, but I wanted to take a look. So fax, I've barely looked
at it. I've used its comm program (minicom) to log into my
intemet accounts. The medical accounting package written in
Clipper partially runs imder Linux's DOS emulator. I think I
need to change some settings related to the type of video
display.
I've been subscribing to the
Linux Journal
P.O. Box 85867
SeatUe. WA 98145-1867
(206) 782-7733
$22^ear for 12 issues
and enjoy it. I think woridng through various back issues will
serve as my Linux tutorial.
Frank Sergeant
pygniy@pobox.com (permanent)
sergeant@axiomnet (current)
The Computer Joiuiial / #76
17
special Feature
XT Support
Different CPU on BUS
Alternatives to the XT
By Bill Kibler
For some time I have been dying to
complete an article on using the PT68K
motheiboard with 0S9 and SKDOS.
Orginally I had intended to cover it in
this article. Now that I am passing on
the control duties of TCJ to Dave, I
decided I will have time later to more
fully explain and document the ideas I
had in mind. It became apparent as I
started (m the topic that an introduction
was needed about systems in general
that give you alternatives to just buying
a fiister XT. I will give some background
of the PT68K card, but this time the
tOfHC is mostly what alternatives you have
avaialable.
The Why
Why would you want to do something
other that use an off the shelf XT system
for your work? Defining work
immedately gets us going and is some-
what reqx>nsible for the change of this
article. At my work, we had a recent
discussion of a proUem requiring better
than one second turnaround from the
time a person touches a screen, request-
ing a <kx)r to be opened, and having the
door actually open.
The use of Touch Screens is very com-
mon, but all seem to have one problem,
they are slow. Generally speaking, a stan-
dard 386/486 PC has a special screen
surface attached and putting your finger
to this sur&ce, generates the equalivalent
of a mouse click at the location your
finger touched. The problem is the ever
present tons of PC overhead, extreme
slowness of conversion as your com-
mands woiks their way through the many
layers of various programs and TSR driv-
ers to eventually appear out the back
into yet more interfaces.
It has not been uncommon for this ac-
tion to take 3 or 4 second to be com-
pleted. That is from the time the finger
hits the screen to have a door open. The
question asked was what alternatives are
possible. We know the times possible for
PC/XT type systems ruiming the latest
CPUs, so the first direction we look at is
fasters CPUs that can use the same hard-
ware. This is where I said "how about a
68000 based XT system running 0S9?"
At this point in my work discussion I
realized that few people are aware that
systems using the ISA BUS format (the
bus structure in a PC/XT) but running
CPU types other than 386/486 do exist.
That same realization said this article
needs to be more general and e^lain the
alternatives.
Same but Different
The option to the problem presented
would be simply cutting down the layers
of software, since 386/486 are basically
speedy processors and DOS is not.
OS9000, the PC/XT varation would be
one answer, EXPRESS by Forth Inc
another. Numerous embedded DOS and
real time variations might also speed up
the system. Moving to PC 104 by itself
would not help, but ROMing code that
only read the screen and sent a com-
mand might. The PC 104 bus is simply a
form factor change of the ISA bus. In-
stead of edge connectors for the bus in-
ter&ce, you have a pin and socket sys-
tem of stacking cards. The main differ-
ence we see here is separate CPU cards
allowing a pure building block approach.
The building block approach is what
most organizations are taking to solve
their problems. This approach is not new,
just the hardware options have become
more interesting. In my last article on
the STD BUS we saw that they started as
a building block solution, giving the users
many choices of small pieces in which to
plug and play. The PC 104 vendors are
providng the same options.
What is new on this front, has been the
wealth of different CPU types now avail-
able. Z- World has moved their Z180
based product line to the PC 104 and ISA
bus as well. This means you can take an
atplication written for the Z80 and make
it talk to regular PC bus devices, say
ethemet cards? I am not sure this would
be faster, but it does show that the wealth
of PC compatible hardware can be used
on other CPU types.
I found one company who has taken this
approach to extremes. The parvus com-
pany from Salt Lake Utah produces sev-
eral CPU types on 2 by 3 inch boards.
All the boards have a memeory mapped
interface that can be plugged onto a
PC 104 or ISA bus interface card. They
can sit as co-processors with one type of
card, or take over the bus if plugged into
another type of card. Their main CPU of
choice is 68HC11, for which they have
written drivers to talk to most of the
standard PC devices (CGA/Mono, floppy,
hard drives, etc.). 8051 and Z180, and
80198 are the other CPU options.
Might any of these varaiation slove the
pr(*lem, I am not sure, but if your old
application needs to talk to newer PC
devices then here is an alternative. The
ISA bus is basically an 8 bit bus with
8MHZ clocking. This 8MHZ clock speed
makes it possible for the smaller CPU's
to use it, but also limits I/O speeds and
is often the reason for poor performance,
even on a Pentium CPU. To change this
we have IBM's approach that foiled, the
18
The Computer Journal / #76
MCA bus. Better performance but re-
quired major changes in hardware and
had numerous compatiblity and licnseing
problems.
The latest option we find is the PCI bus.
This is basicaly a 30 or 50MHZ varia-
tion on the ISA bus. I don't have all the
actual specs yet, but from what I can see,
the industry leaders are jumping on this
bus quickly and from many directions.
Since it is getting major support and
doesn't have aiQ^ licensing agreement
needed for use, I think it will b«:x}me the
high speed bus standard for many years.
An other advantage of this bus is it's
acceptance by several industrial
manufactureres. Prolog which helped
start the standard bus, has said they are
making it their bus of choice. All the
new Mac Power PC's use it as well.
The industrial version of the bus, much
like PC104, uses sockets and form fac-
tors closer to VME or European. Prolog
has gone even farther by using PCI and
STD bus devices in one box, giving the
user access to both worlds. The idea here
is high speed CPU/Memory/Network
conqwnents, while keeping the slower
real world interfaces of STD BUS I/O.
68K Option
Most of the faster q>tions so far use the
standard 486 or Pentium CPU. I have
found these CPU's overkill and
oveibudget for many simple projects. For
those sinq>le items only needing a few
PC based I/O cards or migrating from a
8085 STD bus project to the PC world,
using a 486 is hard to take. You could
use one of the Z180 ISA bus controllers
or try a 68000 system. Why 68K CPU?
I can think of many reasons for using the
68K over the 486. Generally you can
gain some speed using 68000 CPU's just
because of the better internal CPU de-
sign. The instruction set alone is better
optomized and will produce smaller pro-
gram sizes for similar operations. The
68000 has always been a 32 bit CPU
with a flat address space. The dreaded
segmentation that has made programs
on x86 CPU's a night mare, doesn't
exist on 68K.
Generally I find the cost of CPU power
cheq)er in the 68K's than Intel's, al-
though recent CPU Clones have brought
all prices down. The alternatives I Uke
are using the $200 68K based clone
boards ( cost including CPU but no
memory.)
The PT68K
So here we are now looking at an alter-
native. Where did this alternative come
from? Well certainly there were several
vendors who were producing 68K bussed
systems and saw the need for the use of
che^)er PC interface cards. One person
however was looking more for a means
to teach how computers go together. That
person is Peter Staik of Star-K Software
System Corporation, the maker of
SK*DOS.
Peter is a college teacher and came out
with a series of articles in Radio-Elec-
tronics Magazine in October of 1987.
The article had the reader building their
own 68K based PC compatible system.
The kits were available fiom Peripherial
Technology and you could build your
own as the articles explained the various
parts. The idea was to talk about and
teach a different part of the system in
each article and thus over several issues
completely explain how all the different
sections and components woric together
to make the fiill computer.
We have attempted to do similar projects
here in TCJ, but I must say that Peter's
series is excellant and worth hunting
down in your local libarary. Peter also
sells the material as a home course, called
"68000 Hardware Course" at $25 (the
hardware kit cost extra).
So what do you get and is this unusual?
Since getting mine, I have discovered
that at least two or three other vendors
sell similar systems. They appear to all
have similarities in desiga The main
idea is some version of the 68000 CPU
(68K to 68040), on board I/O (serial and
floppy), a number of standard ISA or
ISA/AT bus slots. ROM monitors are
provided that allow for running 0S9 or
SK*DOS and can do some debugging.
Some ROMs may even contain BIOS
like code for accessing PC cards such as
hard disk controllers.
Since the idea is mostly to run these
products as embedded controllers, tb;
serial I/O is normally included. This
means they can be brought alive with a
simple terminal or in the case of the
PT68K and it's floppy controller, you
can boot from floppy disk atuomatically.
I have done some plying with the PT68K
and found the ROM tools good, and the
machine fairly snappy in it's perfor-
mance. A more detailed testing is sched-
uled for a later issue.
Let me take a second of your time to
explain the hardware in more deatils.
First off the board size is that of fiill AT
motherboard. It comes with the standard
PC power supply cotmectors strips. You
can install monochrome or CGA video
cards in one of the seven XT slots. A
connector is provided for one PC com-
patible keyboard. I beleive that later ver-
sions also support VGA cards, if not in
ROM, at least in loadable drivers.
In the case of the PT68K-4, you have
two floi^y disk controllers to chose fi'om.
It comes with both a WD 1772 and the
WD37C65. The 1772 is for XT level
floppy drives, 360 and 720K. The 37C65
will handle all drive types, including the
1.2 and 1.4 meg. The 1772 does not use
the twisted drive cables found in PC's,
while the 37C65 does. This gives you
backward and forward compatiblity.
Standard reset and q>eaker pins are pro-
vided. I have mine mounted in a small
tower case and it now works fine. I did
have problems earlier when I tried
mounting it in a older style case with
metal standoffs. Apparantly there is a
problem existing around one or two of
the mounting holes that you need to
watch out for. ff you think this is only
their problem (PT68K) let me say that
many of the PC motherboards have the
same problem. This explains why al-
most all PC cases come with plastic
mounting studs these days.
What else? Printer cable header is pro-
vided just like the flq)py headers. All
the afore mentioned inter&ces are on the
motherboard as header strips. This means
The Computer Journal / #76
19
you have to make cables that run from
the header strips to the appropriate con-
nectors on the back of your unit. Also
you can use the printer port of your
monitor card, if it has one.
Hard drives are supported by using the
WDXT-GEN2 interface cards. These
were very popular hard disk controller
cards used in XT and early AT systems.
There are many clones of these around
and one that I tried didn't work. Since
all my cards are very old, I haven't had
time to find out why it didn't (might be
bad - 1 certainly don't know - yet) work.
Supposedly you can use IDE drives as
well, but that all remains for the next
article.
To expalin the next part of the design, I
need to review how these systems came
about. The vendors were all 6809 pro-
viders, mostly SS50 BUS nmning 0S9
(this case the "9" stands for 6809 CPU).
0S9 has always been multitasking, or
able to run more than one user. I have
several stories £rom people who were
nmning whole departments on single
6809 systems. Naturally when the 68000
came out the users wanted to migrate to
it and gain all the extra power it offered.
Remember that DOS machines are still
not multitasking unless you go to Unix
or NT boxes. Those early day systems
running Unix in fact where all being
done on 68000 CPU's.
Using Unix, also meant that more than
one user would be on board, and most
users would be on terminals. To help out
the boards come with two 68681'$
DUARTs, set as 4 terminal ports. Here
also is one of my complaints about the
design, mainly that the four header stripes
used for serial terminals are not cable
ready. By that I mean you must hand
wire the header strips to the RS232 sock-
ets. You can't just crimp a header on one
end and a DB25 on the other. Now we
are only talking about faai wires, but
then why a header strip at all?
That minor complaint aside, the board
does come up looking for either terminal
on com port one or a PC keyboard. The
ROM menu is sent to both output op-
tions so you can play with either. The
orignial ROM from Peripherial Tech-
nology is ready for 089 and REX. REX
can also be had from them on disk with
soiure code. This means you could hack
this version for your own personal
project.
If you want to try SK*DOS a different
ROM is needed from Peter. Then you
can run either SK*DOS or 0S9 from
that ROM. The ROM also has BASIC
and HUMBUG. You can partition your
hard disk to boot either 68K system, and
thus try or use either. I think you can
also throw REX in this as well, but not
sure at this moment. I do plan on re-
viewing all three and try some hacking
to find out which system is easiest to
port to other hardware platforms.
Overall the system seems ideal for many
projects needing specialized su{^rt, and
where a 8 bitter will not work. The board
comes with enought sockets for 4MEGs
of RAM, which should be more than
enough for single user projects. Now
0S9 is used in many of the newer
CDROM projects and has been in all the
big name systems, like NASA. It is UNIX
like and a real time system that can
support more than one user. Yet I know
it works well for single users and many
CoCo users fell in love on with their
6809 based systems.
SK*DOS on the other hand is more of a
single user product with it's roots in
FLEX the other 6809 (grating system
of choice. Peter has added some nice
features, like an 6809 emulator that will
run your FLEX code. I plan on trying
that part out and see how it compares
with my GIMIX 6809 system. A good
source of software is the 'C programs
and utilties avaialble from Unix. Many
of these are provided with SK*DOS and
so you get a chance to see how other
code works on this platform.
Closing Words
At this point I leave many items and
topics unexplored, but I will have more
time to devote to this project very soon.
From the hardware side, many compa-
nies are starting to use PC hardware for
their 8 BIT projects. Alternatives to the
Intel CPU's are also out there, the most
common being 68K based mother boards.
What I didn't mention are the numerous
co-processors available and soon multi-
processor system. These systems are of-
ten DSP or Math co-processors that en-
hance the basic PC with more horse-
power of a certain type. There are sev-
eral vendors starting to produce systems
with more than one CPU so that the task
can be brdten up and done in parallel.
Brad Rodriguez's project using 6809's
(on hold while he finishes his degree)
has itself moved to the PC BUS platform
to take advantage of the cheap hard-
ware.
What all the options are giving the user
and designer is the abiltiy to custom fit
any project or task with hardware that
provides the exact range of solutions. In
the past you often simply tossed the same
box at any project and adjusted the soft-
ware to make up for missing hardware
support. Hardware now is so cheap that
it has become more cost effective to cus-
tom fit the hardware than squeeze out
corrections in software.
I hope you found items in this article
that got you thinking. Should you have
more questions, drop me a note or con-
tact the vendors, be sure of course to say
you heard about it in The Computer
Journal.
Star-K Software Systems Corporation,
PO Box 209, Mt. Kisco, New York,
10549, (914)241-0287, BBS (914)241-
3307
The parvus Corporation, 1214
Wilmington Ave., Salt Lake City, Utah
84106, (801)483-1533, BBS (801)483-
1563
parvus@parvus.com
Peripheral Technology, 1250 E. Pied-
mont Rd., Marietta, GA 30062,
(404)973-2156
Z- World Engineering, 1724 Picasso
Ave., Davis. CA 95616
(916)757-3737
20
The Computer Journal / #76
LU
H
>-
O)
(5
<
LU
Q.
o
X
U
05™
0) 03 C
O ^ C
III
e^ !^
— Q. ±-
= " «
E .
CO OJ
DC CC LO .E
DC
O
Q
LU
UJ
CO
ra
M
00
3
CO
>
CO
LU
1-
? CL
CO
CO
<
<a c
CO
-)
£ °
ra
0)
C3
=
T3
Z
F =
13
0)
<
<i> S
-J
^ c^
CO
D
_j
O) m
CO
c/1
<
c in
S
CO
t:
3
z
Q) "^
a
CO
a >.
n
cu
1-
2
-»
in 0)
CO
—
o.
= c
CO
X
LU
3
cn
C Q.
m E
5
<
cr
1
CO (0
CO
CO U)
•0
V ^^
^
3
CO
w
<
LU
a
LU
-I
a
Q.
D
W
o
<
^ ? O , DC
'^ 5 <^ Q- m >
LU D U. < LU Q
> CQ D 5 P g
LU
o<
LLI Z
O
< -' Q. C/3 I-
5§
LU LU
a
Q
>-
Q- D.
O <
O N
<5ODcJg5^Qc0LU
lL ^ 2 DC CO
,CLOm|.
LU .
UjW^LUXQliJ^SDC
f;xo^qS»-o
'-lllI^j?D_"-LU>
Q. O
CL
<
1 >- <
LU —
w
H LU a. 2 O 2
< 2 5 f ^ lu
O Q. 3
< 5 Q
O
< LU
X I
LU
IT
0.
« en's
9 - "
S " 5>
8 « ™
Q. cn CJ
— .y < 5
2 E O "
■■ E S §
« LU 8
O
CM
z s
oc 8 <\.
OC « O 3
O £ 2 "
t- >^0•-
— %2
' n c
= o
i 1^^
k^ O) o 2
Jt c o O
13 g -a
" « g
"^ Z -^
CO tt ii
.i2 cn 5
-I
a c
3 o
cn o
cn°
oj tD "a
'- m X
e E E
o o 9
; CO
C/) c/1 "' *-
^O o O 2
5 Q Q 9 E £■ ^
Q.-D
I?
o g Q " E £■ g
£1^0^'=^; i 8
"O TJ "O U P
« 2 ™ S -^ _ -^
tt) O o O 4) -r- Q)
H -J -I -J O) Li- I
H 13 > 5 X N i>-
0) c/)
IP
X O ^
03m
£ O C31
^ -S 00
S o O
^ e 2
9- CO OJ C
™ £.20
g> -O C3) c
m Jt !! o
>.~ >-S
CCJ ^ ^ 3
■5-5 1=^ S
W oJ W 5
Q to Q cIj
S Z O Q. O DC cn
(0 M
.g « o s g E
o o> E y c CO 5
CO S a 2 F °-<^
S " » S S I =
cn OQ ^O ^ ^
CD O Q ti. CD A ^
LU
H
D
0.
O
o
o
<
o
m
LU
-I
o
z
C/)
I
00
(O
Q.
0)
LU
CC
D
I-
<
UJ
£ o
TJ O
r
0*
N
»
y
0)
M
Z
s
CD
00
3
<
n
«
•D
I
CM
5
cc
Q.
UJ
Si
CO
"o
?
>.
<
rr
CD
CM 3
u
to
O)
E
E
«
E
CO
c
£
o^S
CM
a.
S
CO
CM
CO
u. S
or: k-
r o o
Q. O 'i
3 O .-
C X
k. S
2 2
S CM JQ
o c
M
c t;
— o
1 =■
•r = o)
S 3 -
o S.
>o
cn at
r m
20
o
o
o I 2 a £
* I cd n —
i- N a. u) i
51
>. "•
■a c
m "
*" cn
I- B
X CO
c E
« w
c o
T, I
£ c
I 8 >.
C k. CL
*- O) Q.
» S 3
CD u ^
C O
o ^
= r
^1
« c .
>% O to
t- o »« o
? E S -
O » Q.I-
a. E g X
5 o o r
■" " i °
I r I »
I o E =
CO Q. „ O
o9 £ O
Q. ~ «- «
«, O jq
» « 3 »
.>< o o S
>^
00
'/:
3
t^
X
C^
u
•
T3
W X
rt
H
^
OX"^
•^^
U, 00
H^^
ON
-^
^— ^
^Z
»:;
cf-^
M
Im
O)
^-4
H
00
ITS
P!^
T-H
W
P^
The Computer Journal / #76
21
Regular Feature
Intermediate
Dr. S-100
By Herb R. Johnson
Jade BUS Probe
"Dr." S-100 column for Nov-Dec 1995
Heib Johnson, CN 5256 #105, Princeton
NJ 08543. hjohnson@pluto.njcc.com
Even though my grass is now the height
of the average cat, I've decided to lock
up my mower (at least until the grass
dries!) and sit down and write up some
technology. Many people... well, Bill
Kibler... wanted a write-up of the Jade
Computer Products Bus Probe 1 men-
tioned several months ago. Bill discussed
articles and products with the Jade com-
pare - still in business, but not the S-100
bus business of course. While they did
not want to "release" the designs to the
public d(Mnain nor sell licenses to their
designs, they did allow "non-commer-
cial" use of their materials, for which I
thank them and Bill.
In addition, there is progress on the GIDE
front to report! So no letters this col-
umn, but please tell me what you are
running on your S-100 bus, or what you
are looking for, as I am still getting
boards and systems and reports. And,
now that winter is approaching, I can
spend more time in the basement, .uh,
the Archive Lab... sorting and examin-
ing all this technology.
GIDE IDE hard drive to Z80 interface
After a delay in locating parts, Tilmann
Rei has recently shipped some GIDE
development units to the United States!
I have one prototype already, and should
have more by the time you read this.
And several developers will have them
in their hands from mine. I hope to get
software from them to support the IDE
drive in real machines (Kaypros,
Cromemcos, Zoibas, other Z-80 based
machines) in the near futiue. Then the
"rest of us" can buy and use these de-
vices.
For those of you not famiUar with GIDE,
it is a "Generic IDE" hard drive inter-
face card that plugs into a Z80 socket.
Tilmaim Rei in Germany is the designer
of this card, based on his work two years
ago on a Z180 single-board computer
with an IDE interface using a PAL (pro-
grammed array logic) chip for the logic
"glue" to communicate with the drive.
Several people, including myself, sug-
gested he come up with an independent
interface for aity computer; I suggested
he make it pluggable into a Z80 socket,
and that he add a clock chip for a time
of day clock. A year later, he now has
some prototypes available and have im-
ported a few of these into the United
States. Software, of course, is not avail-
able beyond routines to read and write
the clock and the IDE drive: those who
buy this prototypes must be able and
wilUng to write Z80 drivers and share
the code with others. But I'll include
Tilmaim's IDE articles, and some BIOS
software from other folks for other kinds
of devices like RAM disks, and docs on
the clock chip.
I'm taking orders in the USA at $73
each including the clock chip, deliv-
ered unassembled. You will get a board
and parts, with whatever docs and is
available. If you want details, contact me
(Herb Johnson) via mail, phone, or (pref-
erably) e-mail. If you want information
(two years of Tilmann's TCJ articles on
IDE and earlier GIDE, and descriptions
of the clock chip), send $5. Another $2
gets a disk of whatever software we have
(mostly other people's software on do-
ing various BIOS extensions).
Remember, this is development stuff,
not "plug and play", so if you can't write
Z80 assembly language and don't know
your own Z80 system at the BIOS level,
you will not find this useftil at this time.
BUT, a letter or call showing support
and interest when you CAN use it in
your machine will be greatly appreci-
ated. After we get some useftil software,
and when I can manufactive a regular
supply here in the USA, it may become
a product.
People talk about how hard it is to get
support for their old computers. Well,
here's a chance to show some support!
The S-100 bus and the Jade Bus Probe
Through all my years of S-100 work,
there are two systems everyone knows
about and wants. One is the Altair 8800,
of course; the other is the IMSAI 8080,
Why? Not because they want to toggle
all the binary switches on the front panel,
but because they want to see all the
blinking lights on the front panel! Few
other systems offer this display of ad-
dress and data lines and status signals: a
notible exception is the Ithica
Intersystems model with a really slick
front panel design, including an auto-
matic step-through of the program at a
few steps per second. I think it's one of
the prettiest S-100 systems around (ex-
cept for the choice of dark brown for the
case color!).
But a usefiil alternative to the IMSAI/
Altair front panel was available from
Jade Computer Products in 1981 (four-
teen years ago): the Jade Bus Probe.
Jade moved the front panel from the, er,
front panel, to an extended S-100 card
that elevated the display above the card
cage. In addition, they updated the dis-
22
The Computer Journal / #76
play to siq)port interrupt and extended
addressing. Imagine if you will (or look
at the figures) a display of four lines of
24 LED's- almost 100 indicators - dis-
playing status and data in real time! And
keep in mind that at processor speeds of
only a few megaHertz, it's not just a blur
of activity, but a useAil display of pro-
gram activity! In addition, they provided
some simple controls to deselect some of
these displays, and some "logic bits" for
wiring up additional signals for test and
display.
Some background on the S-100 and
the IEEE-696 Bus
It's been a few years since I've listed the
S-100 bus lines, so let's begin with the
original Altair list of S-100 lines. There
are at least two flavors of S-100 buses:
the original Altair 8800, front-panel
supporting bus and, the IMSAI/
Cromemco bus that eliminated some of
the Altair lines; and the IEEE-696 bus
that expanded the address bus from 16
lines to 24, and allowed 16-bit bidirec-
>
S-100 BUS Standard
PIN
AlUir
IEEE
PIN
Ahair
IEEE
1
+8 V
+8 V
51
+8 V
+8V
2
+18 V
+18 V
52
-16 V
-16V
3
XRDY
XRDY
53
/SSW DSBL
GND
4
VIO
A^IO
54
/EXTCLR
/SCLR
5
VI 1
mi
55
RTC(-)
/DMAO
6
VI2
mi
56
/STSTB(— )
/DMAl
7
VIS
rvu
57
DIG1(— )
/DMA2
g
VI4
rvu
58
FRDY(— )
/SXTRQ
9
VI5
rvi5
59
—
A19
10
VI6
me
60
—
/SIXTN
11
VI7
Nil
61
—
A20
12
—
/NMI
62
—
A21
13
—
/PWRFAIL
63
—
A22
14
—
/DMA3
64
—
A23
15
—
A18
65
—
—
16
—
A16
66
—
—
17
—
A17
67
— (/PHANT)
/PHANTOM
18
/STADSB
/SDSB
68
MWRT
MWRT
19
/CCDSB
/CDSB
69
/PS(-)
ravd
20
UNPROT(T5)
GND
70
ROT(GND)
GND
21
SS
—
71
RUN
rsvd
22
/ADDDSB
/ADSB
72
PRDY
RDY
23
/DODSB
/DODSB
73
/PINT
/INT
24
phi2
phi2,phi0
74
/PHOLD
/HOLD
2J
phil
/PSTVAL
75
/PRESET
/RESET
26
PHLDA
PHLDA
76
PSYNC
PSYNC
27
PWAIT
rsvd
77
/PWR
/PWR
28
PINTE
isvd
78
PDBIN
PDBIN
29
A5
A5
79
AO
AO
30
A4
A4
80
Al
Al
31
A3
A3
81
A2
A2
32
A15
A15
82
A6
A6
33
A12
A12
83
A7
A7
34
A9
A9
84
AS
A8
35
DOl
D01|D1
85
A13
A13
36
DOO
DO0|D0
86
A14
A14
37
AlO
AlO
87
All
All
38
D04
D04|D4
88
D02
D02|D2
39
D05
D05|D5
89
D03
D03|D3
40
D06
D06|D6
90
D07
D07|D7
41
DI2
DI2ID10
91
DI4
DI4|D12
42
DI3
DI3ID11
92
DI5
DI5ID13
43
DI7
DI7|D15
93
DI6
DI6|D14
44
SMI
SMI
94
DIl
DI1|D9
45
SOUT
SOUT
95
DIO
DI0|D8
46
SINP
SINP
96
SINTA
SINTA
47
SMEMR
SMEMR
97
/SWO
/SWO
48
SHLTA
SHLTA
98
SSTACK
/ERROR
49
/CLOCK
CLOCK
99
/POC
/POC
.'"
GND
GND
100
GND
GND
tional data transfers instead of 8-bit uni-
directional transfers. I'll explain some
of this later, but for those somewhat
familiar with the bus already, the list
following represents the lines on these
two very similar buses.
These lines are listed as they appear on
the S-100 cards: with the card's IC's
tops facing you, and the bus coimector
below, the leftmost pin is pin 1, and the
pin on the bade of the card behind it is
pin 51. If you turn the card to its back
where all the IC pins stick out, pin 100
is on the left and pin SO is behind it S-
100 cards are always the same width,
10.5 inches; and almost always the same
height, 6.5 inches. The bus connector is
3.5 inches from the left of the card and
4.5 inches from the right edge of the
card, and the pins are separated by .1
inch center-to-center.
Bus lines: Altair(IMSAI) vs. IEEE-
696
Active low signals are shown as "/".
Unused lines are " — ". Reserved lines
are "rsvd". The first column of signals
are Altair signals; if the IMSAI signals
are different they follow immediately in
"()'; and the next column are the IEEE-
696 signals. Signals on lines 24 and 25
refer to the Greek letter "phi". IEEE-696
signals separated by "|" represent the 8-
bit and 16-bit data path signals, respec-
tively.
The most important thing to remsaiaa
about the S-100 bus, and to a lesser
extent about the '696 bus, is that the
original processor for this bus was an
Intel 8080. All the signals and data lines
on the Altair in particular were to sup-
port this processor. In addition, lines
were needed to support front-panel op-
erations. These two considerations de-
fine most of the signals of this bus. Con-
sequently, one of the best references for
figuring out these signals is an Intel
8080 processor book!
Let's quickly run through the more ob-
vious signals. The power lines are the
voltages as noted: +8, -8, +16, -16 volts.
S-100 cards have on-board regulators to
reduce these to more reasonable +5 and
+ and - 12 volts. The address lines are
The Computer Journal / #76
23
A0, Al, and so on through A15 for the
Altair, and through A23 for the '696.
llie-idata lines are DIO through DI7 for
data to the processor (like IN instruc-
tkx&y, and DOO through D07 for data
fhwn the processor (Uke OUT instruc-
tions). Note for the '696 bus, these uni-
directional lines are optionally bi-direc-
tiotial for 16 bits of data. The vector
interrupt lines are VIO through VI7,
niiibh when active force an interrupt of
the current program and a jump to an
jMarupt support program at a specific
address.
■i ji
We status lines are output from the
processor card, and show the status of
tbe^rocessor. These signals usually be-
gn with "s" and are clustered at the
ri|ht end of the card; such as SMI,
SOUT, SINP, SMEMR, SHLTA,
SINTA, /SWO, SSTACk. These are
available from the 8080 processor as
f^dptesenting processor states as follows:
instruction fetch, OUT instruction, IN
instruction, memory read, processor halt,
iitt6mipt acknowledge, write, and stack
(cespectively). These are sneaky signals
aari should be reviewed more carefully
than I've noted here.
as V
fbe command lines are also output from
iffie^ processor card, and more inunedi-
afi^ control the operation of the bus.
'Biese lines usually begin with "p" and
anqclustered in the center of the card:
PWAIT, /PWR, PDBIN, PINTE,
PHLDA, PSYNC. These represent wait
states (stretched read or write cycles),
write (I/O or memory), I/O input, inter-
nipt enabled status, processor hold ac-
Jtaowledge, and a "sync" signal for the
stait of a processor cycle (re^)ectively).
Additional coimnand lines control the
IHQcessor: /PINT, /PHOLD will force an
interrupt or processor hold condition,
re^jectively.
Uie reset lines /RESET will reset the
piocessor and /EXTCLR will reset other
bus devices, and ready lines PRDY and
XRDY will force the processor into a
IK>LD state. Clock lines phil (removed
from the '696) and phi2 are clocks syn-
chronized to the processor's cycles;
\GIj0CK is a free-running 2 MHz clock
signal. The power-up clear line /POC
will be active (low) during the powering
up of the bus.
The bus disable lines will disable groups
of the above lines: /DODSBL disables
the data out lines, /CCDSBL disables
the command lines, /ADDSBL the ad-
dress lines, /STDSBL the status lines.
Not available on the '696 bus are the
front panel lines: SS for single step, /
SSDSBL to allow the front panel switches
to send their data to the processor;
MWRTTE to control writes to the pro-
cessor. A line "T5" (pin 20) on the
IMSAI that the Altair calls "PROT" uses
to unprotect memory (allow writes) AT
THE MEMORY CARD and which is
complimented by the Altair line PROT
(pin 50) to disable memory writes AT
THE MEMORY CARD (not the proces-
sor). A common problem with IMSAI's
is the use of card that have pins 20 and
50 grounded: they will disable the front
panel! Use a piece of paper to cover
these pins, or cut the grounding traces to
these pins.
There are a handfiil of lines used only by
the Altair for who knows what: RTC,
STSTB FRDRY, DIGl. Note that the
'696 has reassigned them to DMA chan-
nel priority signals DMAl, DMA2,
DMA3; and one of the 16-bit transfer
signals SIXTN. When a 16-bit capable
board receives a /SXTRQ signal from a
16-bit capable processor card, the SIXTN
signal is asserted and the processor turns
the two 8-bit data busses into one 16-bit
bus. Neat, eh?
Whew! Even a brief description of the S-
100 bus takes a few hundred words, and
I'm sure I missed some lines! If this
seems like a busy bus, keep in mind the
IBM-PC ISA bus is 68 pins, so this is
not so many more. And, by the way,
many of these signals have their coun-
terparts on the PC bus as well. After all,
the PC bus was designed for an 8088
processor which is not much different
from the 8080 (he he..).
The Jade Bus Probe
In 1981, Jade Computer Products (of
Hawthorne CA at the time) produced a
card to di^lay the state of almost all of
these bus Unes. As I mentioned initially.
the Probe extends five inches above the
standard S-100 card to display four rows
of 24 LEDs, as illustrated elsewhere in
this magazine. Each LED is connected
to a 2-input logic NAND gate, part of a
74LS38 chip. This provides that one
input of the gate, the signal to display,
must be logically active (a 3 to 5-volt
signal level); and the other iiq>ut is tied
in parallel with several other NAND
gates to related signals, to permit a bank
of common signals to be enabled or dis-
ables as the user desires. Bank selection
of signals will be discussed after the
signals and displays are described.
The Bus Probe circuit board display area
has written titles to describe the signals
displayed, and the display is organized
as follows. The top row shows the 24
address lines, with the most significant
bits (A23, A22, etc) to the left and the
least significant address bits (A2, Al,
AO) to the left. The row below shows the
16 data lines on the right, with the eight
data in lines (DI7 through DIO) in the
center and the eight data out Unes (D07
through DOO) to the far right. If you
review the IEEE-696 bus lines corre-
sponding to these, you will note that the
16-bit data lines use the the DO lines for
the upper data byte (D15 through D8),
and the data out lines for the lower data
byte (D7 through DO) so these '696 sig-
nals are displayed in the prc^r order.
On the far left are the four '696 DMA
lines, titled "TMA" from the IEEE-696
specification. Following these are the
bus disable lines of /DODSB, /SDSB, /
ADSB, and /CDSB for data, status, ad-
dress, and control lines disabling respec-
tively.
The next row of LED's displays (from
left to right) the eight interrupt lines,
the utility lines, and the status lines.
The interrupt lines are as noted on the
bus line list. The utility lines are, from
the left, /INT, /NMI, /PHAN, /HOLD, /
PWRFAIL, /ERROR, /SIXTN, and /
MWRT. The eight status lines are, from
the left, SMEMR, SMI, /SWO, SINP,
SOUT, /SXTRQ, SINTS, and SHLTA.
The status line display is also controlled
by a switch (SI) that supports additional
Continued on page 28
24
The Computer Journal / #76
TCJ Center Fold
special Feature
All Users
JADE BUS PROBE
In this issue we actually do some old machine support, but stay
tuned and look closer at what the Jade Bus Probe does for you.
Herb covered most of the ideas in his Dr. S-100 column. Let
me add that this concept is not limited to S-100 products.
The idea of monitoring what happens on your computers BUS
is not new. The orginal IMSAI and Altair MITS both came
with toggle switches and lights. It was absolutely in^rtant in
the early machines, as this was the only way you had to input
your programs.
We have come a long way since then, but monitoring what
hai^ns on the BUS is just as important. The problem is more
difficult as the BUS speeds increase. Logic analyziers are in
essence doing the same thing as the Jade BUS probe. The main
difference is they can store the several hundred operations in
their RAM and play them back for you one step at a time. The
BUS probe instead has you stepping through your instructions
one at a time and watching lights.
Now the lights do make it more fim to explore what is haj^n-
ing. Not letting that become the main idea, experience will
allow you to get the feeling alxHit whether your program is
Aapp&i or locked up. What I mean is you get to feel just what
a proper working set of lights looks like. Their dancing aroimd
has a real specific pattern and you will get to know it so well
that any changes become quickly a sign that you have pro-
grammed a wrong operation.
Can this design be used on other systems. I see no reason that
we couldn't make systems like this for almost all types of
computers in use today or from the past The main problem is
being able to single step the computer so you can see and read
what is happening. There are many very wonder^ ideas and
designs that have been done to enable non-single stepping
CPU's to do single stepping.
You must understand that some computers CPU's must run at
full speed and any form of stepping through the program will
end up in lost or erroneous data. I have even noticed that a
couple of the newest chip do have single stepping and diagnos-
tics built in, although that is all copyrighted and pretty much
a trade secret. Or put an other way, how to do the operations
and get the data is not possible for us normal people. If you
have figured out some of these secrets and how to single step
the more complex systems, how about an article, were all ears!
What IBM decided to do instead of a front panel or a diagnostic
board like the Jade BUS Probe was to do POST processing.
POST is a series of diagnostic programs run as the system is
powering iq). The results of these test are written out to I/O port
80 on the BUS. This means if you put an expansion card in the
BUS and read the data from I/O address 80, it would be the
results of the variuous tests. Should you have a failure some
where, the test munber would tell you what the problem is. The
solution to the problem is left to you to still trouble shoot on
your own.
I think a combination of the POST and BUS probe are the type
of tools we at TCJ should consider building as a project. A long
time ago I started laying out my own logic analyzer, pretty
much like the one that came along for inserting into the PC
BUS. It basically amoimts to a small bit of RAM that just stores
1 or O's as fast as it can. What my new idea is about is a
combination POST storage reader, say store the last 20 post
instructions. The last 20 to 100 BUS addresses and their data
values would also be needed with the option to trigger either
on or off at some preset address or data value.
So lets look over the Jade BUS Probe, see what it gave us, and
how we might be able to do the same with fewer parts or a
different design. What struck me the most, is just how many
parts are used. You have to remember, that some device must
be used to drive each LED, and there are 100 LEDs! This
means that you need at least 100 buffers or data latches to
isolate you from the BUS. There are 48 (14 pin) sockets used
on the board. Now that is a lot of chips to stick on anything.
And let me say that if ever there was a place for PALs or
Programmable devices with many pins this is one of those
cases. Even still, I think some of the largest parts are about 100
pins, so two parts would be needed, and lots of traces.
I really am serious about needing some ways to checkout
systems. They also need to be simple and possible for others
with limited skills to build. I can think of no other way of
getting new people up to speed, than having them see what
they are doing. The blinkirvg lights can guide the new novice
better than any other idea 1 can think of
The Computer Journal / #76
Center Fold Section
25
*<■**■ ^ ■# <
i
^ uj »/l
J a lO
kUfd
' 'I 'I
'A \\i .
- 1 1. 1 ^
1
___!|
'lll lA i
lAlt^l-d-f
U L,
o a o o Oq oq
Q o o o o
D O O O O O
• 5 ;t;'-: i :iS'; I !!|:r 5:^5^:2 V ?!:--■!: S"^ '': s^^' ^fl^^;'' S'' -.'^ J'^ ''-'-'- fS;:
26
Center Fold Section
The Computer Journal / #76
M
Hi'
1 !o o^f
Hi'
I "A "A £°A?A?As
hA^M
M) bA m
O •-* M
I
fF
o p
^ 1
A'
S3*
'
i
f
H ^
it:
so
u
Q
o 1
M -
I ^
i
as
' li
■
i';
1
JJ
!j
ii
ill
ill
!
I
1 '
1
c
\i_^L-X^-i_i_-^i_i„
S 9 rf * ( f < <f .(^ rf^ rf :V)-
t • . • • . . = • y
t S I
, ~n
«« m ♦
o o o
\ X ^
4
fl
\^
\^
=1 ♦! ,
'r I- I ^
I? 12 J, i:
32
z O a
MM(|(5l (^
The Computer Journal / #76
Center Fold Section
27
logic to select particular processor states
to display by decoding the status lines
for those states. Processor states are Ml,
memory read, memory write, 1/0 read, 1/
O write, "all", and reset.
The bottom row of LED are grouped as
follows, from left to right: power (+8,
+16, -16); "ticks" (a latched version of
phiO and CLOCK), "clears" (/RESET,
/SLAVE CLR, /POC), processor
(PSYNC, /PSTVAL, PDBIN, /PWR,
PHLDA); "wait" (actually "ready":
RDY, XRDY); "X" (a logically gated
"power" signal explained later); and
"patch". The patch display are 8 LED's
which have their N AND gates connected
to a "patch" area on the board (block
X4) for the user to connect to anything
in their system.
Most of the above-mentioned groups of
gated LED displays can be disabled.
Their common gate enabling connec-
tions are routed to a selection block (XI)
of jumpers that can be removed to dis-
able that set of hues. You can leave them
all enabled, to watch the entire state of
the bus; or disable all but a selected set
or two to monitor specific conditions.
There is also a block of jumpers (X2) to
access a 74LS123, a dual monostable
latch or "one-shots", which provide a
pulse when their logical inputs are trig-
gered by a logical event: inputs and out-
puts are to be wared by the user. The
non-defined bus lines are connected to
another set of jumpers (X3).
It is clear that Jade was very thoughtful
in not only providing a controlled dis-
play of the S-100 bus, but also providing
a few simple but useful bits of logic to
display otiier signals from within your
S-100 system.
n
Computer Product*
The Bus Probe "^
^r-^
■««««««
a a aa a ao'
EXIENDED ADDRESS BUS
23 22 2K W^ '9 1« 17
16
IS
a
14 13 >»^-^:tr:=:»:;-=5;:s;»:;l;;;is.«:_
::*iSt^=3-.-.;;2£^;.;:t.-
'/tK
a aja^s 9 ,« ala a
a o e
^ ^ «. «k <*,
TMA tt DISABLI
; HATft IN 1
DATA OUT
13
2 1
a a
^ ^
Mn STH HNl
lla o a I
a !
1
7
a
6 i 5 4 3
a j a a a
2 110^
7 6
a a
H 0^
5
a
4 3 2 1
a o j a a
INTEFRUPIS \
1 UTILITY I
- STATU::;
ii? ! 6 iSiii* :h3r 2;; 1 ;
ila.j a ia M a '1; c ;i a 1: o ^
0:
MI : iHiinuil )wo;I»F;:em;:»tiI mtr
a ;' a ,: o i^ ; o ^!o :^ a i\ o 'i a :'
« il a j; a^i: ;ia ;i ;:« ';■ '.^i' \u \>\
KMl; Ml;
9 i .'
Opal
m;; i.j miij ui;; iitgj uii
y a !i a 1; a 11 a ,»
M: r^i •.!! *J •. '•
c m-a
■ oof a«»tt
t ;
POWER TICKS! CLEARS I fROCESSOfl. WAIT X
28
Center Fold Sertion
The Computer Journal / #76
PC TIME CLOCK
By Terry Hazen
Special Feature
XT Support
Improving Accuracy
PC Real Time Clock chips are notori-
ously inaccurate and can suffer from
severe drift. Many of them seem to lose
or gain time at about 1 to 15 seconds a
day, with 5 or 6 seconds per day being
typical (although the worst one I've heard
of runs 1.5 hours a day fast!) The accu-
racy of the often-used Dallas Semicon-
ductor DS1216E SmartWatch, for ex-
ample, is specified as +/- 1 minute per
month (about 2 seconds a day) at 25C
(77F).
While these clock chips don't keep very
accurate time, they usually drift at about
the same rate from day to day as long as
the ambient temperatiu-e doesn't vary
wildly. If we make the assumption that
the clock inaccuracy is relatively linear
over time, we can improve things quite
a bit by using some simple linear time
correction when we read the clock.
The PC world already has a utility that
does the job. ClockWrighT is an inex-
pensive commercial PC utility that per-
forms linear time correction on IBM-
compatible PC's, but a simple linear time
correction algorithm can easily be imple-
mented for almost any clock chip on
almost any computer, including com-
mon 8-bit CP/M machines.
For example, I used linear time correc-
tion in SCLOCK, a ZCPR33+ Type 3
utility (loading and running at 8000h)
that runs on 8-bit Z80 Ampro or Z 180
Yasbec systems using SmartWatch chips
for timekeeping. It reads and sets the
SmartWatch, displays the corrected
SmartWatch date and time, automati-
cally adjusting for Daylight Savings
Time, and can update the ZSDOS or
BIOS clock with the corrected
SmartWatch date and time.
Biff Bueffel's CLOCK utility also uses
the same linear time correction algo-
rithm to set the MM58167a chip in the
Kenmore Clock, Anapro Clock for the
Heath H89/90 or CDR Super 89 clock.
CLOCK reads and writes directly to the
MM58167 and automatically adjusts for
leap years and for Delight Savings Time.
If you are using an Ampro or Yasbec
system or a Z80 system that uses the
MM58167 clock chip, you can probably
use one ofthese utilities directly. If you
are using a different system, processor
or clock chip and you want to write your
own clock correction utility, read oa..
Clock Accuracy Calibration
Before a correction algorithm can im-
prove a clock's accuracy, that you must
measure its accuracy over time and save
the accuracy history data. You can do
this by setting the clock to an accurate
and consistent time standard, such as
WWV. This must be done twice, several
days to several weeks apart. Within
reason, longer intervals result in better
long-term correction accuracy. The first
time you set the clock, you save the set
time (as WWVl, for example.) The
second time you set the clock, you save
the clock time that is readjust before the
clodc is reset (TIME2) and the new time
to which it is reset (WWV2.)
Now that the clock is calibrated and you
have the accuracy history, you can cal-
culate a simple linear correction factor.
The time baseline is:
BASE = WWV2 - WWVl
and the clock deviation over the baseUne
period is:
DEV = ITIME2 - WWV2I
which is saved as an absolute value. If
the sign of DEV is positive, the clock is
running fest. If it is negative, the clock
is nmning slow. The sign is also saved
so you can determine later on whether to
add or subtract the time correction.
Given the time baseline and the clock
deviation over the baseline period, the
linear correction factor is:
LCF = DEV / BASE
which is the number of seconds of clock
inaccuracy during the clock resetting
baseline divided by the baseline. You
can calculate LCF the second time the
clock is set and save its value for later
use each time the clock is read.
Each subsequent time the clodc is read,
CLKTIM, the required time correction
is:
CORK = (CLKTIM - WWV2) ♦ LCF
The corrected clock time is then:
CORR_TIME = CLKTIM +/- CORR
In other words, take the difference be-
tween the current time read by the clock
and the last time it was set, and multiply
that difference by the linear correction
factor. If the clock is nmning fast, sub-
tract the correction fix)m the current clodc
time. If the clock is running slow, add
the correction. Pretty straightforward
stuff, but surprisingly effective.
The Computer Journal / #76
29
Time Standards
You should consider your time standard
before attempting tocalibrate your clock.
Telq)hone company times may not al-
ways be reliable or even consistant. For
best results, the clock should be set us-
ing a reliable time standard such as
WWV. WWV (Colorado) and WWVH
(Hawaii) broadcast time information on
2.5, 5 and 10 Mhz. WWV also broad-
casts on 20 Mhz. 2.3,5 and 10 Mhz are
allocated by international agreement as
time and frequency standard frequen-
cies, and at least IS other stations broad-
cast time data on those frequencies in-
ternationally.
WWV reports time as Coordinated Uni-
versal Time (UCT), formerly called
Greenwich Mean Time, which is the
time in Greenwich, England. The US
Eastern Standard Time zone is 5 hours
behind UCT. For example, 2 hours UCT
is 21 hours (9pm) EST (2-5[+24]=21.)
Pacific Standard Time is 8 hours behind
UCT, so 2 hours UCT is 18 hours (6pm)
PST.
Time and Date Format
You can simplify the time conversion
code and speed up yoiu* calculations
somewhat l^ using a reduced range of
available correction and assuming the
clodc deviation will never exceed some
fixed number of seconds between the
times you need to reset the clock so that
you can use simple 8 or 16-bit arith-
metic. I chose to get wild and created a
32-lHt binary "Julian Seconds" time and
date format that can be easily manipu-
lated using some 32-bit arithmetic rou-
tines from ZSLIB, one of the wonderful
ZCPR3 series of Z80 routine libraries.
My systems all run ZCPR3 and ZSDOS,
whose system times are usually kept in a
convenient 6-byte "System Standard
Time" (SST) format. The first two bytes
of the SST are the BCD year, month and
day expressed as a Julian date, which is
defined as the number of days el^sed
since January 1, 1978. Converting the
current year, month and day to the Julian
date is easily done with the BCD-to-
Julian routine from the NZTIM library.
Converting to Julian Seconds just in-
volves converting days and hours to sec-
onds with several simple multiplications.
The resulting 32-bit Julian Seconds times
can then be easily manipulated with the
32-bit addition, subtraction, multiplica-
tion and division routines from the ZSLIB
library.
Clock Accuracy History
The accuracy history for each physical
clock needs to be stored for later use by
the correction algorithm. Because each
clock chip will have a different accuracy
history, only that specific clock chip can
be corrected using its history data.
Some chips have several bytes of inter-
nal nonvolatile SRAM available to the
user which can be used to store the his-
tory data. If like the Smart Watch, yours
doesn't, the accuracy history can be
stored in a one-record history file for
each clodc to be corrected, or in one
record of the clock utility file itself.
SCLOCK, for example, stores the his-
tory data in its first record, which is
updated and rewritten each time the clock
is set from WWV.
Bells and Whistles
While you're at it, you can also provide
some other useful date and time ser-
vices. Some clock chips already have
DST correction available, but if yours
doesn't, you can test the date and correct
to Daylight Savings Time when it's in
efTect between the first Sunday in April
and the last Sunday in October. While
the SmartWatch already takes care of it,
you can also correct your clock for leap
year.
Results
I use several SmartWatch chips that vary
considerably in accuracy. I've used the
SmartWatches in my 8mhz Ampro and
1 8mhz Yad)ec as my SCLOCK test beds.
I calibrated both the Ampro and Yasbec
SmartWatches by seting them just after
Thanksgiving and again on New Years,
35 days apart. In the 42 days since then,
the Ampro SmartWatch has gained 108
seconds and the Yasbec SmartWatch has
lost 97 seconds, but the corrected times
for both SmartWatches remain within 1
to 2 seconds, which is within the normal
SmartWatch read-jitter. Your results
will probably vary by chip type and
ambient temperature variation.
References
1) DS1216E SmartWatch data sheet,
Dallas Semiconductor (1-800-336-6933.)
2) ClockWrighT, Barberry Hill Software
and Engineering, 26 Barberry Hill,
Woodstock VT 05091-1269.
3) Jeff Bachiochi, "A Comparison of
Real-time Clocks", The Computer Ap-
plications Journal, Issue #52, November
1994.
4) Michael A. Lombardi, "Keeping Time
on Your PC", BYTE, October 1993.
5) SCLOCK20.LBR, CLOCK25.LBR
(both libraries include the source code)
and the ZCPR3/ZSD0S REL library
series, including, but not limited to,
LIBS45A.LBR (containing SYSLIB,
ZLIB, VLIB and DSLIB),
ZSLIB36.LBR, NZTIM12.LBR and
PDAT13.LBR (source code for these li-
braries is included or is available in sepa-
rate libraries) are available on Znode #2,
Los Angeles, CA (3 10)670-9465 or your
favorite local Znode. If you're a Z80 or
Z180 assembly language programmer
and haven't taken advantage of these
rich sources of well-tested Z80 REL rou-
tines, do yoiu^lf a favor and check them
out!
30
The Computer Journal / #76
PC Security System
By Michael Krabachi
Special Feature
XT Support
XT and Basic
While I have not engaged in 8 bit ma-
chines lately, I still keq) them for his-
toiy and they all tell a stoiy. The best is
the SB 180 which is built into a WWII
range finder box. The B&W monitor is
built with plexiglas and aluminum perf
board. It would fit right into a 1930's
Buck Rogers movie.
Any way... my latest project was build-
ing an alarm system using a I/O board
given to me by a fiiend. The Micromint
68HC1 1 was to be the core of the alarm
system, but I was going to have to build
TTL interfacing and I didn't have the
time before I was to leave for vacation.
So the initial alarm system was built
around the PC and the Metrabyte I/O
board. When I got back, the system was
cleaned iq), dd>ugged and set up as a two
tier system to prevent false alarm. After
a year of no false alarms and many en-
hancements the system is pretty much
finished.
While this is not an 8 bit project, it is a
hardware/software project and it sure has
taught me alot of subtle tricks in design-
ing a polling program. I have used
PowerBasic 3.0 which sure is nice com-
pared to QuickBasic. It has bit opera-
tions which were necessary for the kind
of control I needed for the I/O board.
Feel fi"ee to run with the program, and
see if you can play Break-In and not get
caught.
The Hardware
The hardware consists of a Keithly
Metrabyte 8 channel isolated relay in-
put/output interface board (Model
PDISO-8). This board plugs into the
ISAbusofa typical IBM type PC. There
are many similar I/O boards that are
modeled after the Metrabyte configura-
tioa Any of the similar interface I/O
boards can be used as long as it con-
forms to the method of accessing the 1/
O board. No special drivers are re-
quired. The board occupies 4 consecu-
tive addresses in the PC I/O address
space, of which only 2 are actually used.
The base address is set up with a dip
switch on the I/O board and again de-
fined in the control program. It can be
any port address from 100 to 3F8. While
port 300 hex is the default address
shipped with the board, I used 280 hex
because when the PC boots up one of the
bits goes high at address 300 hex and the
alarm bell sounds.
The I/O board consists of 8 individually
optically isolated inputs which can ac-
cept AC or DC from 5 to 24V rms.
These inputs are not TTL/CMOS
compatable, so they are easily operated
with on/off switches such as magnetic
reed switches or pressure contact micro
switches.
The 8 individual output rel^s are ca-
pable of handling 3 A at 120 vac or 28V
DC resistive load. Five of the relays are
bipolar (type C) and can be used as nor-
mally open or normally closed, while
the other 3 are normally open (type A)
only.
Both the isolated input and relay output
ports are controlled with an 8 bit byte
with each bit corresponding to each in-
put or output. The bits are controlled by
writing or reading directly to the port.
The base address (280h) controls the
ou^ut which can be either read or write.
The base address plus 1 (28 Ih) is the
input which is only a read address.
The I/O board itself has a DB-37 pin
connector that is e)qx)sed at the back of
the PC when plugged into the ISA bus.
The pins are grouped logically so that a
37 wire ribbon cable can be used to con-
nect to a IDS type dual row standard 1/
10" pinned connector which then con-
nects easily to a standard 1/10" perfo-
rated circuit board. For this system,
standard off-the-shelf components were
used to design a small adapter board to
accq}t the input wires from the sensors
and direct the output wires to the light
control and alarms.
INPUT SENSORS
Each of the 8 ii^ut lines consists of a S
voh circuit with a LED to indicate when
the circuit is closed. Closed is consid-
ered the normal non-alarm mode since it
gives a positive indication that an alarm
sensor is operable. When all input LEDs
are on, the system is active and in a non-
alarm conditioa The LSD (least sig-
nificant digit) bit is controlled by a mi-
cro switch attached to the kitchen
deadboh lock. When the door is locked
the system is activated and all sensors
circuits are continually scanned for an
open circuit which would indicate a house
break in.
A local control panel which contains
indicator LEDs, has 8 local three way
toggle switches which are in parallel
with the 8 individual sensor circuits.
These are used to deactivate any single
sensor or to open the sensor circuit to
test the alarm system.
The actual sensors consist of two types.
The windows and doors are wired in
series using trip wires on the windows
and magnetic sensors on the doors. The
trip wires are such that they will be
broken by either opening or breaking the
windows. Since the downstairs win-
The Computer Journal / #76
31
dows are never qiened, this system works
ok. Upstairs the windows are on mag-
netic sensors. The rooms of the house
are scanned by passive infrared dectectors
(PIRs).
The PIRs are constructed from common
Zenith FIR wall switches. The FIR, a 2
receptacle wall sockd and a 120 VAC
(Radio Shack) relay are packed in a com-
mon plastic wall junction box such that
when the FIR is actuated the rel^ is
(^)ened and the signal is broken with the
alarm controller. The Zenith units re-
quire a load to operate so a small 40 watt
reflector bulb is installed in one of the
receptacle sockets. The FIR can be ad-
justed for daylight intensity so that they
only operate at night or all the time. A
side benefit is that they fimction as auto-
matic night lights. The alarm is not
tripped because the iimer FIRs only come
into play when the outer window or door
perimeter is brdcen. This double layer
of secuity prevents false alarm.
OUTPUT CONTROL
The five bipolar output relays control 5
vdc which is used to power solid state
120 vac relays that in turn control 4
house lights. The fifth relay controls
another solid state relay that activates
the house stereo system to play a mes-
sage to anyone in the house at the time
of the alarm. This can be used for psy-
chological warfare against the burglar
in the mildest sense. It could also be
used to control an automatic phone dial-
ing machine if desired. The other three
output relays are used to supply 12 vdc
to control a bell and two separate 2-tone
power horns. Since the 1st five bits
control bipolar relays, the normally
closed contacts sui^ly 5 vdc to individial
circuits that have LEDs. In this case the
LEDs are on when the respective house
lights (and stereo system) are off. There
is no LED indication for the three alarms
operated by the type A single pole re-
lays.
X-10 MODULES
The output control which is normally
handling the house lights and alarms via
a hardwired circuit, also operates up to
8 X-10 light or appliance modules. The
operation is done with a Circuit Cellar
PLIX module (Power Line Interfece) and
anX-10 TW523 orPL513 module which
sends the signals to the X-10 Ught mod-
ules. The imit is attached to any stan-
dard unidirectional parallel printer port
on the PC. This unit is available from
Micromint, Inc. as a Demo Kit. This
could be used as input if desired, al-
though I prefer using hardwired input
signals.
The system will function without the
PLDC controller.
TEMPERATURE MONITORING
Tenq)erature is monitored through the
PC's Game Port Since a game port
paddle is a pseudo analog input that
measures dual axis lOOK ohm potenti-
ometers, it is simple to install lOOK ohm
thermistors in place of the pots. Cali-
bration is performed with a decade resis-
tance box and a Steinhart & Hart cali-
bration equation. The result is a cheap
ten:q>erature monitor. The accuracy is
about 2 degrees, but so far (for some
reason not understood,) it tends to drift
several degrees over several months.
Sometimes it even drifts back ! Since the
game port has two inputs, 4 tempera-
tures can be measured, one for each floor
of the house and one outside.
SOFTWARE
The control program basically runs in a
loop that continually scans all the input
sensors. If any of the sensors indicate a
non-normal condition, some or all of the
alarms are sounded. While scanning the
sensors it also compares the time since
midnight against the light control
setpoints. If the time is within a setpoint
window, a light is either turned on or
off.
OPERATION
The easiest way to see the operation of
the system is to run the actual software.
The program ALARM12.EXE and
ALARM12N.EXE (for systems with no
coprocessors) is designed so that all the
input functions can be emulated by the
keyboard. All the functions can operate
in real time or compressed time. Com-
pressed time condenses 9 hours into about
2 minutes. The system has two help
screens (Alt-H and Alt-J) to explain the
operation.
The system does not use a key pad to
arm and disarm the alarm system. In-
stead a key switch on the kitchen door
deadbolt lock is used to arm the system
when the door is locked. Unlocking the
door deactivates the alarm system. A
time delay is built into the keyswitch to
prevent felse alarms. The perimeter cir-
cuit is also associated with the keyswitch
so that the keyswitch wires can not be
cut without causing an alarm condition.
If you have a game port on your PC with
a joy stick plugged in, you will see the
temperature monitoring function, al-
though with imrealistic results. For the
temperature function to operate you must
have the file TEMF.INI, which supplies
thermistor caUbration data, in your de-
fault directory. All temperature data
will be saved in an ASCII file
TEMP.LOG.
The program will also record all input
and output, (optionally light control) in
an ASCII file HOUSE.LOG. Each time
a sensor event occurs a menu screen
dump will be made to a binary file
MENU.LOG which can be viewed later
with SEEMENU.EXE.
The purpose of the log files is to not only
preserve what happens during a break-
in, but to allow someone to dial into the
house and view the status of the control
and alarm system. In my system the
alarm computer is connected to a second
computer via peer-to-peer LAN which
has a modem. An alternative would be
to use a multitasking system such as OS/
2 for both the alarm system and the dial
in capabihties. Under any system that
takes time slices on the CPU, the game
port will not operate as consistently.
These programs written by;
Michael Krabach
747 Nate Whipple Hwy
Cumberland, Rl 02864
ph 401-333-5350
Available on TCJ BBS as Alarml2.zip.
32
The Computer Journal / #76
First few pages of Alarmll.BAS
'Home control and alarm system using a Metrabyte PDISO-8,
' an 8 channel Isolated relay Input/output interface PC board.
' With the following revisions;
' an autodialer or spealcer warning using control bit 4,
' wtth enhanced software testing mode,
' wtth IR sensors dependent on activating vi/indow/door sensors,
' wtth three seasons for timing lighting control,
' wtth autoscaling test mode,
' wtth remote access to copy of display menu,
' wtth auto select season,
' wtth 4 sensor temperature monttoring thru game port,
' wtth optkxuil event logging to printer.
' wtth Individual thermistor calibration
' added PLIX controller for X-10 modules, rev 12, 4-6-95
'Copyright, (c) Michael Krabach, 1994
'Wrttten In PowerBASIC 3.1
$EVENT OFF
rev$=''rev12a''
revdate$="4-16-95"
'The I/O output Is attached to the Interface board as:
' btt living room
' btt 1 kttchen
' btt2backroom
' btt 3 bedroom
' btt 4 aux alarm, eg. autodialer or speaker waming
■ btt 5 bell
' btt6hom1
' btt7hom2
'The I/O Input (sensors) Is attached to the interface board as:
' btt kttchen door keylock microswttch
' btt 1 downstairs windows and doors using magnetk: reed swttches
' btt 2 upstairs windows using magnetk; reed swttches
' btt 3 upstairs spare room, and bedroom passive iR sensors
' btt 4 living room passive IR sensor
' btt 5 dining room passive IR sensor
' btt 6 kttchen passive IR sensor
' btt 7 back room passive IR sensor
'Note any variable dealing wtth time has been given a prefix t.
DEFINT a,c,d,e,f,h,i,l,n,p,q,s,u,w,x,y 'integer variables
DEFSNG o.t,r
'single preclsnn
DIM b(4), m(4)
'for ohms from game port
DIM rcoefa(4), rcoerb(4), rcoefc(4) 'for steinhart calibratkin
DIM degFI (4), degF2(4), degF3(4), degF4<4) 'for summing temps
'Set up control setpoints for the seasons.
GOSUB checkseason 'find out wfiat season tt is
setseason:
season$^emp$ Iransfer string
SELECT CASE season$
'Winter setpoint schematic: (EST)
'12hrck)ck 3 4 5 6
7
8 9 10 11 12 1am
'24hrckx:k15 16 17
18
19 20 21 22 23 24 01 hrs
' normal mode |...|...|...|.
1
...|...|...|...|...|
'kttchen 7
-7 7—7
'back mn 7
-7
7 d
'living rm 7 —
7 7— d
'bed mi
d— 7
'clear lights
X
'test mode |...|...|...{...|
i
I...I...I...I...I
' seconds 10 20 30 40 50 60 70 80 90 100
CASE "-Winter-"
•Winter setpoints:
tkttchon=16.00
'kttchen on 4:00 pm
tkttchoff=19.30
'kttchen off 7:30 pm
tkttchon2=21.00
'kttchen2 on 9:00 pm
tkttchoff2=21.45
'kttchen2 off 9:45 pm
tbackmfion=16.45
'backroom on 4:45 pm
tbackrmoff=18.30
'backroom off 6:30 pm
tt)ackrmon2=20.15
'backroom2 on 8:15 pm
tbackrmofr2=23.00
'backroom2 off 1 1 :00 pm
tlivnTKXi'18.00
'living rm on 6:00 pm
tllvnTioff«21.15
'living nn off 9: 15 pm
tllvrmon2=22.00
'living rm2 on 10:00 pm
timeclearsl.15
lum off any extraneous lights at
1:15am
tvariatk>n=0.30
'max random variation to setpoint In
NEWTIME
GOTOcont
'Spring setpoint schematk:: (EST)
'12hrckx;k 3 4 5 6
7
8 9 10 11 12 1am
'24hrctock15 16 17
18
19 20 21 22 23 24 01 hrs
' normal mode |...|...|...|.
1
|...|...|...|...|...|
'kttchen 7
7 7 7
'back rm
7-
7 7-d
'living nn ?-
—7 7 d
'bedrm
d— 7
'clear lights
X
'test mode |...|...|...|...|
1
.i...i...l...i...i
' seconds 10 20 30 40 50 60 70 80 90 100
CASE "-Spring-"
'Spring setpoints
tkttchon=17.30
tkttchoff=20.15
tkttchon2=21.00
lkttchoff2=22.15
tbackrmon»19.45
tbacknTioff«21.45
tbacknnon2>22.30
tt)ackrmofr2*23.00
tlivrmon=18.45
tlivnnoff»20.30
llivrmon2=21.30
timeclear>=1.15
tvariatk>n=0.30
GOTOcont
'User defined setpoints and delay intervals for normal light control.
' Some of these setpoints may be advanced by the NEWTIME routine.
' The folkswing setpoints are in 24 hour time (hr.min format).
' Kttchen, backroom, and living room lights are operated twk^e dally.
' The computer ck>ck needs to be adjusted for Daylight Savings Time.
The Computer Journal / #76
33
'Summer setpoint schematic: (EOT)
'12hr clock 3 4 5 6 7 8 9 10 11 12 1am
'24hrclock15 16 17 18 19 20 21 22 23 24 01 hrs
'normal mode
'kitchen
't)ackrm
'Nvlngrm
'k)ed rm
rlights
,.|...|...|.
7— ? 7 7
7 7 7-cl
7— 7 7-d
<*— 7
■econde 10 20 30 40 50 60 70 80 90 100
CASE "-Summer-"
tkllchon-20.00
tkllchorr-20.45
tMtchon2-21.30
tkitchorr2-22.45
tlMCkmfK)n-20.1S
ttMCkrmorr-21.45
tt)ackrmon2>22.30
tb«cknTK>n2>23.00
tllvrmon-21.15
tHvnnoff-22.00
tNvmK>n2-20.30
timeciaar-1.15
tvariatk)n-0.30
GOTOcont
'Fan setpoint schematk:: (EDT)
'Summer setpoints
'12hrck>ck 3 4 5 6 7 8 9 10 11 12 1am
'24hrckx*15 16 17 18 19 20 21 22 23 24 01 hrs
• normal mode |...|...|...|...!...|...|...|...|...|...|
'kitchen
'backnn
living rm
'k)ed rm
'dev lights
'test mode
7—7 7 f
7 7 7-d
7 7 7— d
d-7
X
10 20 30 40 50 60 70 80 90 100
CASE "-FaH-" 'Fall aetpoints
tkitchon-19.1S
tkitchofr-20.1S
tkitchon2»21.00
tkitchon2>22.15
tt>ackrmon>20.15
tt)acknTK)ff=21.45
tt>ackrmon2*22.30
ttMckrmoff2-23.00
tlivrmon'20.00
tlivrmoff«21.15
tlivrmon2«22.00
timeciear>1.15
tvariatk>n>0.30
cont: 'For ail seasons
'User defined delays in seconds referenced to a prevkxjs setpoint.
tdeiaylivrmoff2s1 '2nd living rti off 1 seconds after 2nd back room off
tdeiayt>edrmon>:8 'tiedroom on 8 seconds after 2nd living room off
tdelayl)edrmoff»60 'Ijedroom off (minimum of) 1 minute after light on
END SELECT
twaltwint)ad=60 'delay tjetvreen event and ignoring windowf sensors
talmoffdelay=300 'delay tjefore shutting off alarms after cleared (5 min)
tdcwncount=60 'initial starting dovm-counler for bell repeat sequence
' this number only valid vvith delay 1 in scanloop
' note since integer, dovmcount can only can be <=32000
tdeiaytemp=900 'read house temperatures every 1 6 minutes,
' to be recorded at 4x interval
'Test mode setpoints generated from above seasonal setpoints.
' Tlie setpoints are adjusted to seconds from ttie start of the test.
' This sequence simulates the real control cycles in compressed time.
testkKchon-INT(makesmall(thrtosec(tkitchon))) 'kitchen on (F2)
testkitchoff=INT(makesmall(thrtosec(tkitchofO)) 'kitchen off
testkitchon2=INT(makesmall(thrtosec(tkitchon2))) 'kitchen on (F2)
testkitchoff2=INT(nfakesmall(thrtosec(tkttchofr2))) 'kitchen off
testbacknTK)n=INT(makesmall(thrto8ec(tbackrmon))) 'back room on (F3)
testbackrmoff=INT(makesmall(thrtosec(tbackrmoff))) 'back room off
testbacknnon2=INT(makesmall(thrtosec(ttiackrmon2))
'back room on (F3)
testbackrmoff2=INT(makesmall(thrtosec(tbackrmoff2))) 'back room off
testllvrmon=INT(makesmali(thrtosec(tllvrmon))) 'living mi on (F1 )
te8tllvrmoff=INT(makesmall(thrto8ec(tllvrmofO)) 'living mi off
testiivrmon2-INT(niakesmall(thrtosec(tlivrmon2))) 'living rm on
te8ttimeciear>INT(makesmall(thrtosec(tinieclear)4'86400))
lum off any lights still on
testvariatk>n=INT((tvariatk>n/0.06)'M) 'max random variatk>n to
setpoint in NEWTIME
'User defined test delay seconds referenced to a prevk>us setpoint.
testdelaylivrmoff2=3 '2nd living rm off after 2nd k>ack room off (F1 re F3)
testdelaybedmfK)n=3 'bedroom on after 2nd living rm off (F4 re F1 )
testdelaybedrmoff=8 'bedroom off after light on (F4 re F4)
'User defined alarm delays In seconds for the test mode.
testyrattbell=5 'delay betvi«en event and bell sounding
testwaithom1=10 'delay between event and bell and horn sounding
testwatthom2=1 5 'delay between event and all three alarms sounding
testwaitaux'25 'delay between event and aux alarm
testvMiitwinbad-2S 'delay between event and ignoring window sensors
testalnioffdelay°5 'delay before shutting off alamis after cleared
testdowncount=5 'initial starting dovm-counter for bell repeat sequence
' this number only valkj with delay 1 in scanloop
testdelaytemp=7 'read house temperatures every 7 seconds,
' to be recorded at 4x interval
'Addttkxial definitions.
bbase-&h380 'base port address for PDISO-6 I/O card
' note that base &h300 comes up on reboot with bell on!
%AX=1
%BX=2
%CX«3
%DX=4
'Equates for temperature measurments
FUNCTION thrtosec(thrs) 'convert hrs to seconds after midnight
thrtosec=INT(thr8)*3600+FRAC(thrs)/0.6*3600
END FUNCTION
FUNCTION makesmall(tsecond)
'convert setpoints to Inten/al for test mode
makesmall=(tsecond-54000)/360
END FUNCTION
'User defined alarm delays in seconds for normal operatkxi.
tvMiitbell»5 'delay between event and bell sounding
twaithomi "1 'delay between event and bell and horn sounding
tvraithom2«1 5 'delay betvi«en event and all three aiamis sounding
twaitaux'60 'delay betvt«en event and aux alarni (alk>w pir's to clear)
34
The Computer Journal / #76
'Set up sounds for alarms.
PLAY "mb" 'play In background thru buffer
bellsound$= 1240 164 04cc.cc.cc.cc." 'a bell sound
hornl sound$='t200 18 03gc" 'a horn sound
hom2sound$='1200 18 03a-d-' 'another horn sound
dlalsound$=1200 132 03dgdgdgdg" 'a phone ringing
KEY (24) ON
KEY (25) ON
KEY (26) ON
'Set up function keys for key trapping
KEY 15, CHR$(&h08, &h02, &h70)
KEY 16, CHR$(4h08, &h03, &h70)
KEY 17, CHR$(4h08. &h04, a,h70)
KEY 18, CHR$(&h08, 4h05, &h70)
KEY 19, CHR$(&h08, &h06, &h70)
KEY 20, CHR$(4h08, 4h07, 4h70)
KEY 21 , CHR$(&h08, 4h08, 4h70)
KEY 22, CHR$(4h08, 4h09, 4h70)
KEY 23, CHR$(&h08, 4h23. &h70)
KEY 24, CHR$(&H08, 4h0b, 4h70)
KEY 25. CHR$(4H08. 4H24, 4H70)
KEY 26, CHR$(4H08, 4H19, 4H70)
ON KEY (1) GOSUB testliving
ON KEY (2) GOSUB testkitchen
ON KEY (3) GOSUB testbackrm
ON KEY (4) GOSUB testbdmi
ON KEY (5) GOSUB testaux
ON KEY (6) GOSUB testbell
ON KEY (7) GOSUB testhomi
ON KEY (8) GOSUB te8thom2
ON KEY (9) GOSUB zero
ON KEY (10) GOSUB shutdown
ON KEY (1 1 ) GOSUB showtog
ON KEY (12) GOSUB settest
ON KEY (13) GOSUB setfakesensor
ON KEY (14) GOSUB k>glights
ON KEY (15) GOSUB bitOon
ON KEY (16) GOSUB bitlon
ON KEY (17) GOSUB bit2on
ON KEY (18) GOSUB bitSon
ON KEY (19) GOSUB bit4on
ON KEY (20) GOSUB bitSon
ON KEY (21) GOSUB bit6on
ON KEY (22) GOSUB btt7on
ON KEY (23) GOSUB help
ON KEY (24) GOSUB deletek>g
ON KEY (25) GOSUB help2
ON KEY (26) GOSUB printevents
KEY (1) ON
KEY (2) ON
KEY (3) ON
KEY (4) ON
KEY (5) ON
KEY (6) ON
KEY (7) ON
KEY (8) ON
KEY (9) ON
KEY (10) ON
KEY (11) ON
KEY (12) ON
KEY (13) ON
KEY (14) ON
KEY (15) ON
KEY (16) ON
KEY (17) ON
KEY (18) ON
KEY (19) ON
KEY (20) ON
KEY (21) ON
KEY (22) ON
KEY (23) ON
'attplusll KEY
'alt plus e2 KEY
'alt plus #3 KEY
'alt plus $4 KEY
'alt plus %5 KEY
'alt plus *6 KEY
■alt plus 47 KEY
'alt plus *8 KEY
'alt plus H key
'alt plus )0 KEY
'alt plus J key
'alt plus P key
lum on living room light
lum on kitchen light
1um on back room light
lum on bedroom light
lum on aux alarm
lum on bell
lum on horn 1
lum on horn 2
lum off all output, and reset flags
'exit program
'show the k>g file
'setup kx»l setpoint test
'fake sensor test setup
loggle the bit
'etc.
'delete the house.k>g file from menu
'spare help file
'Reset all flags and variables.
GOSUB getini get calibratkxi data for temperature measurements
CLS
GOSUB rindplix
'start with clean screen
'Also is restart point for testing light control.
restart: 'reset Indivklual sensor event flags
flagl^
flag2=0
flag3^
f1ag4sO
flag5-0
flag6=0
flag7=0
flagtest=0
talmla^
talm1b=0
talm2a=0
talm2b^
talm3a=0
talm3b=0
twait»0
tevent^
sensor2-2S5
for sensor on btti (bitO Is not a sensor)
'for sensor on bit2
'for sensor on b(t3
'etc.
'used to inttiate light test only once while in scankx)p
'reset alarm level 1 event start
'reset alarm level 1 event cun-ent time
'ditto for alarm level 2
'ditto for alarm level 3
'zero time delay to shutoff the alarms
'zero common time for all alarm levels for twalt test
'set to assume all circuits are ck>sed
'Set up base light control times for real and test mode.
IF kx^ttest^} THEN GOSUB tbase ELSE GOSUB testtbase
GOSUB zero 'reset output ports and generate light control times
count5=5 'Specific reset to prevent 5 sec delay from causing alarm
' w^n door Is open, while booting computer.
GOSUB readscreen
'save a copy of the display screen.
'Start of scanning toop
$EVENT ON 'start key event checking, during compiling
scankx>p:
DELAY 1 liming delay for accurate test timing and cyclebell
this also helps prevent bad cursor placement on screen
'Save copy of display menu to screen.k>g after a sensor or control event.
IF okJcount<>count OR okicount2<>count2 THEN
GOSUB readscreen
okkx>unt>count
okkxxint2>count2
END IF
'Save copy of house temperatures to temp.k)g every delaytemp Interval.
IF kiopcount >* delaytemp THEN
GOSUB readtemp
kMpcount^)
END IF
■NCR k)opcount
IF k)gflag=1 THEN GOSUB readk)g 'show k)g only at this point In code
IF flagtest-1 THEN GOTO restart 'restart if doing kxal light test
'Screen menu for testing the light and alami control.
COLOR 9
LOCATE 1 ,5
PRINT "===«== HOME CONTROL AND ALARM SYSTEM »«=«»«»»•
End of UtVng lor TCJ
The Computer Journal / #76
35
Regular Feature
68xx/68xxx Support
C & Assembly
Small System Support
By Ronald W. Anderson
Good griefl I am so far ahead with these lessons that they will
be <dd when you get to read them. I will keep them and do some
touch up before they are mailed to TCJ. First let's look at the
next lesson in C programming.
C Tutorial #5
This time we have a few little items to clean up. First let's look
at fimctimis again briefly. C fimctions can "return" a value to
the calling function. In some cases it is obvious that this is the
case. For examine, how would a function like getcharQ be of
any use if you didn't get some value bade from it.
char ch;
ch = getcharQ;
When you define a function you generally have to declare the
type of the value that is returned:
double sin(angle);
double angle;
{
}
char getcharQ;
The first is an exanq>le of a fimction that has a value passed to
it and also returns a value. The trigonometric functions are
defined in math.h, part of the standard Ubrary. All arithmetic
in C is done in double format. If you use a function that retiuns
a double but assign the result to a float type, half of the digits
are simply thrown away!
The second example is a Amotion that returns a character. If a
function returns an integer you don't need to declare that fact
explicitly since it is the default, but you may and it is a good
idea since it is a double check that you have declared the type
of the return value of all fimctions in yaai program. Since no
return type means integer, ANSI C wants you to tell it that your
function doesn't return any value by using the keyword "void".
Many of the standard library functions return a value (which,
incidentally you can use or you can ignore). Some of them
retiun a value that can be used to indicate the success or the
failure of the fimction to do what was requested. For example
there is a function called mallocQ which allocates memory to
a program. Such memory can be used and deallocated within
the program so it is a form of memory management. If you
want to allocate a block of memory, malloc returns the address
of the first byte of the block. If for some reason malloc can't
allocate the requested memory it returns or NULL. You can
test for null to see if the fimction was successful.
A more commonly used function is one to open a data file. It
also returns an address in memory where the file handling
takes place. If the file couldn't be opened (e.g. you tried to open
a file for read, but it didn't exist), the fimction returns NULL.
The file opening function is "fopenQ" It requires two param-
eters, a filename and a mode, infile = fopenC'data.dat","r");
This opens a file named data.dat for reading (use "w" for
writing). If it is successful it returns an address that is assigned
to "infile". Infile is a pointer to a file, a topic we will cover
later. We can detect the error and exit the program. If I am in
a hurry doing a one of a kind quick filter program for my own
use, I sometimes assume there won't be any errors, and don't
test for them. If the program is going to be used for a while, I
will add the error testing and handling code as well.
A "filter" program by the way, is one that does some transfor-
mation on an input file and writes the result to an output file.
A filter may be as sin:^)le as a program that converts all upper
case alfa characters to lower case or vice versa. It might convert
all tab characters to three spaces. Perhaps it would find linefeed
carriage return combinations and delete the linefeeds, etc. A
filter is not necessarily limited to working on a text file. It could
just as well read a file of floating point numbers and convert
them from one format to another.
infile = fopen(data.dat,"r");
if (infile = NULL)
{
printfC'Can't open the input file\n");
exit(l);
}
Exit is another fimction in the standard library. In some cases
when multiple programs are being run returning the value 1 for
an error or for a suocessfiil completion of a program is useful
to the operating system. ("Some cases" basically means UNIX
systems).
36
The Computer Journal / #76
The "return" mechanism only allows for one value to be
returned. If a function must return more than one result a
different method must be used. We will get to one of those
methods shortly when we discuss pointers. A simple possibility
that might be ai^>ealing on first thought is to use global
variables, ones accessible by both the calling program and the
function, and simply have the function assign it's multiple
results to multiple global variables (pricisely how BASIC does
it). A bit later we are going to talk about the "scope of vari-
ables". At that time we will discuss why this is a messy solution
that can lead to serious "side effects" that can make a program
hard to dd>ug.
Assignment Statements Revisited
We discussed assigiunent statements earlier. We didn't men-
tion a coiq)le of things about them. First, you can stack assign-
ment statements, for example to initialize a bunch of variables
to zero.
a=b=d=y=q=0;
The assignment works from right to left so it puts in q and
then the value of q in y etc.
The second thing about an assigiunent statement is that the
statement itself takes on the value of the assignment. For
exanq>le the statement (a=3) has the value 3. That is why so
many new C programmers get tripped up by the "=" compari-
son:
if (a=3) is guaranteed to be TRUE ALWAYS, since it is
assigning the value of 3 to a Since 3 is not equal to zero, the
statement a=3 is always TRUE.
if(a==3) on the other hand is a valid comparison test.
Since the first construct if(a=3) is syntactically correct, it is not
an error, but generally it is not what you wanted to do. Turbo
C issues a warning that says "Possibly incorrect assignment
statement" or something close to that.
Is there a place where you might want to use this value of a
statement?
while((ch = getc(infile)) !=EOF) putc(ch,outfUe);
The statement gets a character from the input file and tests the
value of the character (i.e. the value of the assigimient state-
ment) to see if it is EOF. C's file handUng requires that ch is
an integer and it returns -1 when it reaches the end of a file.
That is, a true integer 16 bit -1 so it is different from a signed
character -1, hexadecimal FFFF as compared to hexadecimal
FF.
The while loop has one statement. If the test passes it writes the
character that it got out to the output file. All you need is to
open two files and then this single line copies the contents of
infile to outfile. When you exit the loop because EOF was
detected you simply close the two files and quit the program.
Pointers
This is perhaps the one most difficult part of C to grasp
initially. A pointer variable contains a memory address of
another variable. The symbol "♦" is used to indicate a pointer.
char *ptr;
This declares a variable named ptr to be a pointer to a data item
of type character.
char message[] = {"Hi there"}
ptr = &message[0];
ptr now contains the address of the character "H" in the
message. We talked about how an array name is a synonym for
the address of the first element in the array so we could equally
well say:
pfr = message;
Now we access the "H" by using:
putchar(*ptr);
The combination *ptr means "the character pointed at by ptr".
The "♦" is said to "dereference" the pointer. Now with this in
mind let's do a function to print out our familiar character
string "message" two different ways:
ptr_print_string(string);
char ♦string;
{
while(*string)
putchar(*string-H-);
}
array_print_string(stiing);
char stringd;
{
while(string[n])
putchar(string[n-H-]);
}
The two methods are so much equivalent that we can mix and
match:
mixed_print_string(stiing);
char ♦string;
{
int n=0; while(string[n])
putchar(string[n-H-]);
}
The Computer Journal / #76
37
In the calling function, remember "message" is the address of
the first location in the array, exactly what we want in
mixed_print_string. char ♦string is exactly equivalent to char
stringU. In the first example of the three, the expression
•string-H- increments the pointer value, not the value pointed
at. Further a pointer to an integer or a long will be appvopn-
atety incremented by 2 or 4 because integers are two bytes long
and longs are 4 bytes. C takes care of this automatically. You
can increment the thing pointed at by a pointer by using
parentheses as:
(•string)++;
One more thing will show the equivalence a bit better:
char messageQ = ("Hi there")};
char* ptr;
ptr = message;
// OT ptr = &message[0];
Now, we can use message[3] to point at the space in message
or we can use *(ptr+3). The two are exactly equivalent*. C
gives the name "message" a constant value that is the address
of message[0]. In other words it points at the first element in
the array.
* Well, not EXACTLY equivalent. The name "message" is a
constant pointer. That is it will always contain the address of
the message array's first byte. We can assign this value to a
pointer, and the pointer can then be incremented (but "mes-
sage" carmot). That is, the pointer's value is iwt constant, but
the value of "message" IS a constant.
We can initialize a pointer with an address or with a literal
constant as well, using an initializer when we declare it just as
we can say int x=3;. Of course if we use an initializer like the
following, we must have defined (but not necessarily initial-
ized) a character array named message[].
char *ptr = message;
or
char ♦ptr = {"Hi There"};
Now we can print the string with: puts(ptr);
Of course you don't have to call a pointer "ptr" but it might
help someone reading the program if you include the letters ptr
or at least append a "p" (or maybe a "ptr") to the end. For
example a pointer to a message could be caUed messagep or
messageptr or mesptr.
There is one other way in which pointers and arrays are not
equivalent. Several issues ago 1 was chastised for my remarks
that a textbook that I have indicates that array references in a
program are converted by the compiler to generate the same
code as when pointers are used. One reader disassembled some
output code of a compiler and found that using pointers gen-
erates less code than using arrays. 1 did the same for my Turbo
C output code for some simple cases and 1 did find that code
that used pointers generated smaller object code than array
references. The difference was small, however. With an older
compiler and an "antique" computer you may well want to do
whatever is necessary to save memory and speed up the pro-
gram execution. With Turbo C on a 486 system with 8 megs
of RAM and a 500 Mbyte hard drive, who cares? (I'm sure
someone is going to tell me that HE cares!, but in general, I
don't).
This ought to leave you with a few things to think about until
next time! Maybe you've gotten your curiosity arroused enough
to get hodced and go to buy a textbook on C in a bookstore. If
so, this series is accomplishing its purpose. I've been trying to
adapt my original lessons that were based on ANSI C, and 1 am
afi'aid the translation is not as clean as a start-from-scratch
series would have been. Part of the problem is that my mind set
has been "converted" and I've (purposely) forgotten the "old
way". I remember fiissing and finning about some of my older
C programs having to have a bunch of things changed before
they would successfully compile under an ANSI C compiler
version, but now that I am converted, I really like the new way
much better.
Some Thoughts
These are current notes added to the end of my old class note.
I realize that we haven't really covered files in C just yet, but
this is not terribly profound, and it is of ciurent and immediate
relevence to me. Something I've been having trouble with (for
a very long time) is a simple matter of detecting an end of file.
A loop that starts:
while ((ch = getc(infile)) !=EOF)
worksjust fine since it tests every character that it gets for the
end of file condition. I tend to make this nty outer loop and then
process words or lines or paragraphs or whatever inside the
loop. I very frequently forget that I have to test for end of file
every time I get a character (except for some unusual file
structiues that signal the last item in a list). The result is that
my program goes into an infmite loop and I spend a while
figuring out why and correcting the problem. A case in point
is one that I did last night to use for this series. I wrote the C
class notes using WordStar for Windows on a PC. I wanted to
translate them to straight ASCII files. WS lets me "export"
them in several modes, one being "stripped ASCII". Stripped
means that all non printable characters and such things as font
descriptions are removed.
Most text processors treat a paragraph as one long line. When
you type a paragraph in, you don't have to type a CR at the end
of the line. The word processor wraps the text around to the
next line, but it doesn't insert a CR. The result is that a
paragraph is really just one long line with a CR at the end. My
38
The Computer Journal / #76
ASCn editor needs lines with CR's and it doesn't automati-
cally insert them. I therefore wrote a program in C to copy any
line shorter than a number of positions I set up as a #defme
constant LINLEN in the program without change. If a line
(paragraph) exceeds this length, the program backs up to the
preceeding space and outputs that much as a Une, adding a cr
or a \n in the terms of C. It then starts at the character after that
space and counts characters etc. When it gets to the end of the
paragraph (as defined by text ending with \n) it reads another
paragraph and starts over again.
I found a shareware program called RAP (as in wrap) the other
night, that makes each line X characters long. You specify X
in the conunand line. The problem is that if there are short
lines (as in a program listing) it combines them to make a
longer line. I wanted to split long paragraph-lines but not touch
program listings etc. so I thought I would do it for myself.
I finished my program and it went into orbit. I found my
problem with end of file and it began to work. After a few more
bugs were removed it worked fine and I used it to modify the
text file for the above lesson. Since this is a short program
(about two pages of source) that is complex enough to be a little
more challenging than "printf("Hi ThereVn"); I am going to
present it later as an example, with a discussion of how it
woiks.
Lest you all think that I have "arrived" simply because I can
write some simple tutorials on basic "C" programming, let me
tell you that I found a program on my hard drive the other day
that I vaguely remembered doing for a project that never
materialized. One part of it was a program that reads a text file
and a data file containing search - replace pairs, and generates
an output file in which each search word is deleted and the
corresponding replace word is inserted. Apparently I had
dunq)ed this program into my computer and never started
debugging it. Now that I think about it a while, I suspect it was
written in "Whimsical" for a 68000 machine and translated to
C but never tested at all.
Well, the thing didn't work. First I had trouble with allocating
a couple of large buffers in which to shuttle the text file back
and forth once for each search replace pair. Then I found that
I tteeded to use a larger memory model in the compiler. All in
all, I think I spent about 16 hours on the project before I finally
got it all working. Part of the problem was the End of File
problem discussed above. The rest of it finally boiled down to
my not having initiaUzed an array index at the start of each
pass through a nested loop. Along the way, the program got so
bad it would hang the computer and I would have to reset it and
try again.
As I look back on the "good old days", when I spent that much
time working on a program, I ended up with something that
took 15 minutes to compile and at least a few minutes to run.
This program for a fairly large text file and a list of 15 or so
substitutions, seems to nm in less time than it takes to type the
command line. In fact, it is done about the time I get my finger
off of the ENTER key! What must I do to write a program that
takes more than a few seconds to execute?
Assembler
I'm going to "chicken out" a little this month and discuss an
assembler program that is just a slight variation of COPY that
we have done previously. The difference is significant, how-
ever. I want to introduce an example of a "filter" program.
COPY, as you probably remember if you have been following
this series, reads a file named on the command line and writes
a copy to another file named on the command line.
As I mentioned above, a filter program does a little more than
copy a file. It makes some significant modification to the data
in the file as it reads one file and writes another. As a fairly
sinq>le example I present a program called UPLOW that reads
an input ASCII text file and converts all uppercase letters to
lower case, otherwise passing the text straight through. To do
that we simply add a few lines between the reading of charac-
ters and the writing of characters. To keep things si^^)le we are
assuming an ASCII text file.
• A Fn.TER PROGRAM TO CONVERT UPPER TO LOWER CASE
NAM
UPLOW
PUTCHR
EQU
SCD18
WARMS
EQU
JCD03
RPTERR
EQU
$CD3F
FMS
EQU
$D406
FMSCLS
EQU
SD403
NXTCH
EQU
$CD27
SETEXT
EQU
KD33
WRKDRV
EQU
SCCOC
PCRLF
EQU
JCD54
GETFIL
EQU
$CD2D
CR
EQU
tOD
FOPENR
EQU
Ml
FOPENW
EQU
J02
FCLOSE
EQU
$04
SfART
LDX
*IFCB
JSR
GETFIL
LDA
•1
JSR
SETEXT
SETS EXTN TO TXT IF NONE SPECinED
LDA
»FOPENR
OPEN FOR READ CODE
STA
0,X
JSR
FMS
BNE
ERROR FMS SETS NON ZERO ON ERROR
• NOW DO IT AGAIN FOR THE OmTUT RLE
LDX
mOFCB
JSR
GETFIL
LDA
• 1
JSR
SETEXT
LDA
•FOPENW
OPEN FOR WRITE CODE
STA
0.X
JSR
FMS
BNE
ERROR
• LEAVE FILES AS TEXT RATHER THAN BINARY
LOOP LDX «IFCB
JSR FMS READ A CHARACTER TO ACCA
BNE ERROR
• NOW LET'S BUILD A "HLTER"
CMPA •'A
BLT CONTIN IF LESS THAN CHAR A LEAVE ALONE
CMPA «'Z
BGT CONTIN IF GREATER THAN CHAR Z LEAVE ALONE
ADDA «J20 ELSE MAKE IT LOWER CASE
" END OF OUR SIMPLE FILTER TO CONVERT UPPER CASE ASCII TO LOWER
CONTIN
LDX
KOFCB
JSR
FMS
WRITE A CHARACTER
BNE
ERROR
BRA
LOOP
00 AROUND AGAIN
The Computer Journal / #76
39
ERROR
LDB
1,X
CMPB
»$08
TEST FOR END OF FILE
BEQ
DONE
JSR
RPTERR
TELL USER WHICH ERROR ■ X POINTING AT FCB
JSR
FMSCLS
CLEAN UP BY CLOSING ALL OPEN FILES ON ERROR
JMP
WARMS
DONE
LDX
»IFCB
LOA
«04
STA
0^
CLOSE THE HLE
JSR
FMS
LDX
•OFCB
LOA
•$04
STA
0J{
CLOSE THE RLE
JSR
FMS
JMP
WARMS
ORG
S200
IFCB
FCB
0.0,0.0,0.0,0.0.0.0.0,0,0.0.0
RMB
305
OFCB
FCB
0.0.0.0.0.0.0.0.0.0.0,0,0.0,0
RMB
305
END
START
I d(m't remember if we have discussed the TSC Assembler's
com^ention for an ASCII character code. It uses an apostrophe
befcve a character to stand for the ASCII code for that charac-
ter. Thus 'A, $41 and 65 are all equivalent. Since we are
manipulating characters here, it makes the program more
readable to use the ASCII character representation.
The ASCn code for the letter "A" is $4 1 . That for the letter "a"
is $6 1 . Since all upper and lower case letters are in alphabetical
order, the lower case letter's code is $20 larger than that for the
same letter in upper case. ($20 is decimal 32).
The program therefore checks to see whether each letter is in
the range of the codes for the capital letters. If the code is less
than that for A or greater than that for Z, it is sinqjly passed
through. Otherwise it has $20 added to it before being written.
Here is a test file for input to this program:
01234567890@{}D
abcdefghijklmnopqrstuvwxyz
ABCDEFGHIJKLMNOPQRSTUVWXYZ
This is the result of a run of the program:
01234567890@{}[]
abcdefghijklmnopqrstuvwxyz
abcdefghijklmnopqrstuvwxyz
A word is in order concerning testing. When you do something
like this it is easy to get the test "off by one". It is a good idea
to check the codes immediately before "A" and immediately
after "Z". These are "©" ($40), and "[", ($5B) respecUvely.
You will note that they both went through the filter unchanged,
and that all the upper case letters were nicely replaced by their
lower case versions. The test shows that codes $41 through
$S A are modified but codes $40 and $5B are not. The program
therefore works as we expect.
Though the example code is simple, the idea can get as com-
plex as you like. For example a TAB character ($09) has a
different meaning in a FLEX text file than it has in an MS-
DOS text file. As we have mentioned previously, in a FLEX
text file a $09 means that the next byte is going to contain a
space count. $09 $08 would mean to insert 8 spaces. FLEX
does this tranqwrently. It is built right into the operating
system. A string of spaces is converted into an $09 and a count
when a file is written, and back to a number of spaces when it
is read. If it is opened as a binary file this is not the case. You
could write a filter to read a FLEX file and convert all tab
sequences to a number of spaces, which would be dumb be-
cause FLEX does it automatically when you read the file as a
text file. Better you could translate an MS-DOS file into a
FLEX file by reading it as a binary file and inserting, say, three
spaces whenever you encoimter a $09. Then you could write it
in TEXT mode so the spaces would be compressed to a $09 and
count sequence.
Above I referred to the problem of breaking a long line (a
paragraph from a text formatter) into shorter lines by adding
CR and LF at appropriate word breaks. I described doing such
a program in C, but you could easily do the same in Assembler.
Our COPY program is a nice template for doing all sorts of
filter programs. All you have to do is to add the filter action
between the read and the write. Obviously you would have to
read and store characters until you had enough to make a line
before writing a line to the output file.
You could write a program to recognize words and substitute
other words in a text file. You would have to buffer whole
words and compare them with a search word, then replace that
with a replace word. It would be just like the search and replace
function of many editors. You could write a program that
would accept input filename, output filename, search word,
and replace word as parameters on the command line. Such a
utility might be useful, but if you decide to try one watch out
for some traps. If you want to change "the" to "a" you have to
include leading and trailing spaces or you will end up changing
"theodore" to "aodore". Also you will have to handle capitali-
zation in order to make a useful utility for a text file. Change
"The" to "A" and change "the" to "a" in other words.
If anyone out there is interested in moving files between a PC
and a 6809 running FLEX, I have written two pair of utilities,
one for each machine that allow copying a disk of text files in
either directioa My FLEX to MS-DOS transfer program is a
bit specialized to handle Extended BASIC integer and floating
point numbers as well since it is set up for reading virtual
arrays in Extended BASIC and converting them to ASCII
number arrays on the DOS end. I can remove some code and
clean them up to handle TEXT files only if anyone would like
copies. There are some cautions, but I would be glad to share
these with anyone wanting them. They work over a simple
serial cable with no hardware handshakes, so it is not very hard
to make the prc^r cable for them. The PC programs are
written in Turbo C and the 6809 end is written for John Spray's
6809 Whimsical compiler.
40
The Computer Journal / #76
Floppy Disk Problems
By Claude Palm
Special Feature
Beginning Forth
Trouble Shooting Design
/ received this article a rather long time ago, and had asked
Claude to send me the disk. Well somewhere in time, the
messages got lost and I finally broke down and scanned it in.
It is important for several reasons that you should read it.
Mainly it talks about the floppy chip used in PC clone ma-
chines, but more importantly it explains about finding prob-
lems. Maintaining your own system is mostly about learning
how to hunt down those elusive problems that others would
simply use as an excuse to "throw the #$%''&* machine
away. " Fortunately Claude didn 't give up, even better he
documented his actions fijr you to see. Thanks. Claude! Bill
Kibler.
CASE OF THE CONFUSED FDC.
This is a detective story. The clues lead in one direction, then
another, and the solution found in yet another. Is it software,
hardware, buggy chips, or a bit of everything? I got into
electronics in the 60's, computers in the 70's but this is the
most con&sing bug I ever came across. It may interest your
readers, and some may even learn something from it.
It all happened while designing the CPUZ180 SBC and con-
cerned interfacing a National DP8473 FDC (FloH)y Disk
Controller) to a Z180 CPU. Before I come to the problem I
have to give a reasonably detailed description of what was
involved, as it is rather technical and caused by some of the
finer points of the behavior of both chips.
THE CHIPS
The DP8473 was designed to interface with the IBM PC bus,
thus all its interface logic and I/O ports are IBM compatible.
The FDC is accessed via its STATUS and DATA ports (plus
a few others). The STATUS port holds 8 bits and indicates
things like BUSY, DATA REQUEST, and whether the request
is to receive a byte or if it wants to send a byte. The byte itself
is transferred through the DATA port. To select the chip there
is a CS (Chip Select) pin, then 3 address lines (AO-2) to specify
the required port. One of the RD or WR pins must then be
assertoi before a byte is transferred.
To execute a command you send a ^)ecified number of bytes to
the DATA port, wait for the commaivd to execute which may
involve sending/receiving sector data. On completion the FDC
issues an interrupt, after which you read the result, again from
the DATA port. For example, to read a sector you write 9 bytes
of command and sector information, and afterwards read 7
bytes of result. The STATUS port informs you of the progress,
the BUSY bit will be set after the first byte of the command,
and the sector read will commence after the 9th byte is written.
These operations are referred to as the 'command phase',
'execution phase', and 'result phase'.
Ehuing the execution phase, sector data can be transferred in
several ways. The polled method lets you read it byte for byte
via the DATA port as it comes to hand, then you put it
somewhere. The STATUS port will advise when, but if you
miss a byte then it it's lost When the entire sector is trans-
ferred the FDC will issue an intemq>t and the result phase
conunences. After the last result byte is read, the FDC clears
its BUSY bit so you don't have to coimt the bytes.
PolUng works ok, but holds up the CPU for long periods, as it
may take some time for it to find the particular sector. Iitter-
rupts must be disabled so an interrupt driven keyboard could
easily loose a character. If left enabled you probably loose
some data instead. There is also an interrupt driven method,
but I won't go into that.
The DMA (Direct Memory Access) method is by far the best
way to transfer sector data, but it requires extra hardware. You
must have a DMA controller (the Z 180 has two of them built
in) to do the actual transfer. While it is shuffling data the CPU
can go about its normal business, handling interrupts and so
on. The FDC sends out a DRQ (Data ReQuest) signal to the
DMA controller. The DMA replies with a DACK (Drq
ACKnowledge) then transfers a byte between the FDC and
memory. This takes only a fraction of a microsecond per byte
and the CPU is disabled for that time <Mily. Before starting
DMA the controller must of course be instructed with what to
do, memory locations and so on, but after that the operation is
con^)letety transparent to the CPU.
As the FDC interrupts the CPU when transfer is complete, the
interrupt routine can read out the result and store it some-
where, then return to the main program. The FDC also
interrupts on completion of other commands, such as a RE-
STORE or after it has been reset. These interrupts are distin-
guished by the BUSY bit being clear, when you must issue an
SI (Sense Interrupt) command to the FDC, and read the result
to see what the interrupt was about In case there were several
The Computer Journal / #76
41
conditions causing intemq>t you should repeat the SI com-
mand until the result byte is 80h, which is the same result as
an illegal command i.e. the first (and only) result byte is 80h
if the FDC didn't understand the command. The rest of the
stoiy hinges on that.
THE HARDWARE
Now for some hardware description. The Z 1 80 DMA reacts to
a DRQ signal by transferring a single byte between the FDC
and memory, but it won't issue a DACK. Instead it performs
a n(»mal Z180 I/O cycle by asserting its lORQ signal (to advise
the outside world that this is a data transfer to/from an I/O port)
together with the specified I/O address and a RD or WR strobe
to denote the direction.
With the FDC in DMA mode, data can only be transferred after
receipt of the DACK and RD/WR signals, regardless of the CS
(Chip Select) and address lines. The FDC only enters the
DMA mode during actual sector data transfers, it is always in
the polled mode during the command or result phases. Then
it uses the CS, RD/WR, and address inputs to work out what
action to take. The RD/WR signals come from the CPU but are
ANDed with the lORQ line so they won't appear during
memory accesses.
The CPUZ180 uses a simple address decoder (74ACT138) for
all its I/O port selects. As it only decodes-S address lines, it
will also send out select signals when a matching address is
during ncHinal program execution. The data sheet for the FDC
states that a CS may not occur during DMA, and further that
any DACK received will effectively clear a DRQ, regardless of
any RD or WR signal. Another point is that a Zl 80 INT ACK
(Interrupt ACKnowledge) cycle is similar to its I/O cycle, it
asserts lORQ but also an Ml signal which is not used, during
I/O.
Bearing all that in mind I conditioned the FDC select signal
fi-om the decoder by ANDing it with lORQ and disabling it
during Ml. That way there wouldn't be any stray FDC CS
pulses. I then devised a DACK signal by picking an unused
port address ftom the decoder and conditioning it the same
way. As the DMA would be the only user of that port, there
wouldn't be any stray DACKs either, or so I thought.
NO PROBLEMS
Lets put it all together now. I had the same FDC working with
a HD64180 using polled I/O so I used that software to test the
FDC in the CPUZ180. After a lot of changes I ended up with
a working floppy disk system. Next step was to change from
polled to DMA data transfer because as expected, the keyboard
did loose characters when you typed during floppy access.
Secondly, polled I/O is not a very neat way of doing things and
I already had the hardware setup.
The whole exercise ended up being relatively straight forward,
as &r as these things go anyway. An interrupt routine was
written so that it would read out the FDC's result to a buffer,
handling other FDC interrupts and so on. The sector I/O
routine would put the command in another buffer, then write
it out to the FDC which would then start any required seeks,
find the sector etc. While it was doing that, the DMA control-
ler was loaded with addresses, byte count, and also set to work
waiting for the first DRQ fix)m the FDC. Then all that was left
was to sort out some housekeeping and settle down to wait until
WR
RD
ZORQ
CPU
Z180
M1
A7
A6
AS
A4-
A3
A2
A1
AG
/
>o-
68-6F
ho
74-
' 13e
60-07
-o-
-o-
\
OR o-
/
-o-
-o-
OR
OR
OR
\
(
/
\
/
\
(
/
Relevant: part; o-P the circuit.
(note: OR gates drawn as NAND gates with inverted inputs as all signals are active low)
WR
RD
FDC
DP84.73
CS
DACK
A2
A1
AC
42
The Computer Journal / #76
the FDC interrupted things and the result was read into its
buffer. The interrupt routine would set a flag to signal comple-
tion. Finally the result buffer would be checked to see if any
error had occurred.
After sorting out the usual bugs that crop up in this sort of
work, eveiything was working satisfactorily. The routines had
been working out of RAM during the trials, so I moved them
into
FLASH (semi-permanent like EEPROM) memory with the rest
of the BIOS code to keep the RAM as free as possible. Final
testing of the new FLASH based BIOS showed no problems
concerning the floppy access, so I went on to other things, and
that would have been the end of an uneventful story.
PROBLEMS EMERGE
However, the 'other things' involved several additions and
modification to the FLASH resident BIOS code, not directly
involving the FDC routines. I had been using a serial commu-
nication line to transfer programs between the CPUZ180 pro-
totype and my main computer, but one day I needed a program
that I had on a floppy disk nearby. The easiest way was to
insert the disk and copy the file to the hard drive, which I did.
Only I got an 'Undefined Error' with a query if I wanted to
rdx)0t, retry or skip the sector. Retry or reboot didn't help, so
I shut it down, cold started, and tried again. Same result, I tried
another disk, still no go. I tried reading the disks in the main
computer and they were ok. I tried another disk drive but that
didn't help either. I could not see why because it had worked
flawlessly before.
Well, it wasn't the obvious, so what was it, software, hardware,
or a bad chip. I don't believe in bad chips, they almost never
go bad if looked after properly. Maybe I inadvertently changed
something in the FLASH memory during my other modifica-
tions? I checked against my Ustings, but apart from residing in
a different location, there were no discrepancies. I reassembled
the code and did a byte for byte compare in case of a bad
memory cell. Same code. All right, try the chips involved, but
that made no difference either.
Maybe the processor ^jeed. You can insert up to 3 extra wait
states in the Z180, each wait holding the processor (and DMA
controller) up for another clock cycle. It had been ruiming at
9 MHz with no waits, so I set it up for the slowest possible
performance with an extra 300 nS per machine cycle. That
ought to fix a slow memory cell or some marginal FDC inter-
face. It didn't.
Could it be in the board itself? It was a double sided board
produced in house. It used copper eyelets for feed-throughs
(350 of them) in lieu of plating, and everything hand soldered.
E>efinitely a suspect. But a thorough checkout with an oscil-
loscope only showed that all signals were present and correct
and still no go. Some old fashioned prodding also failed.
UP THE GARDEN PATH
Into the debug monitor and there I got a surprise. There was
defmitely floppy disk data in the main sector buffer. It must
be reading something. The command buffer showed the cor-
rect command and sector address, but the result buffer had 80h
in the first location. If you remember the previous discussion,
SOh stands for either an illegal command or some other inter-
rupt caused the interrupt routine to issue SI commands until
the result was SOh. As everything was legal in the command
buffer, some other interrupt must have caused it As SOh is not
a valid result after a read command, BIOS reported it as
undefined.
But where did the extra interrupt come from? I went through
the code several time, but could find nothing. The dd)ug
monitor is unable to set breakpoints in FLASH memory as it
can't be written to readily (only in 16KB blocks), but is capable
to single step through it by moving each instruction into RAM.
Very tedious as I had to single step through a large number of
unimportant instructions before arriving at the business end of
the code. Then I had to start the DMA manually because it is
only milliseconds before the FDC starts sending data and I was
stei^ing through each instruction via the keyboard.
The end was a complete anticlimax. The sector was trans-
ferred with no error at all, so I had to try another tack. The
BIOS will retry an undefined error once, by resetting the FDC,
reloading all parameters and then executing the command
again. This could easily be altered to up to four resets, which
I did. That actually worked, with the occasional error reported
and, by
replying 'retry' to BIOS's query, I could load an entire file.
Next step was to log the errors. That didn't shed any more
light on the problem. A particular sector might read at first go
in one load, but needed half dozen retries the next time.
Completely random, but only about 1 sector in S got through
on the first try.
FURTHER UP THE GARDEN PATH
I started thinking about a timing problem. Maybe something
was extremely marginal. One way to upset timings is to either
heat the board or freeze it. I tried the fridge and then a heat
shrink blower, but neither made any difference. The errors
occurred at about the same rate, cold or hot. That seemed to
discount the timing theory.
Then I thought of the original test program, the one that
resided in RAM. At least I could set breakpoints, and move
around in it a lot easier, as I seemed to be in for the long haul.
I dug it out, loaded and ran it, and would you believe, perfect.
I even zeroed out all retries, and still no errors, yet it was the
same code. Must be in the FLASH memory, but it had previ-
ously compared ok when tested, tried at a slow speed without
The Computer Journal / #76
43
iminovement. Still, I set up a routine to constantly cx)n:q>are
the FLASH with its supposed contents that I had loaded into
RAM. I let it nin for awhile and it could not find any
mismatches. Yet the disk I/O routine would execute properly
out of RAM but not from the FLASH memory.
I concentrated on the RAM based disk program. I had it
woridng without errors, so I started to modify it to use some of
the routines in the FLASH memory. It kept on working
perfectly imtil I added some code so that it would use the
FLASH based interrupt routine. Then the errors started up
again. Only occasionally mind you, about 1 error in 4 reads,
instead of the other way arouitd as before, but with exactly the
same result. That was the queer part: running partly out of
RAM only changed the frequency of the same error. Running
entirely out of RAM produced no error. I rechecked FLASH
error rate but it was unchanged. It just didn't make sense.
Now, with much of the code in RAM, I set a few breakpoints
through the ddwgger. One just before the command was
issued another one at the interrupt entry point. Then ran it.
The first few times there were no errors, but then, after I let the
read command start executing, the interrupt routine caught on
another breakpoint and I single stepped through the result
readout as I had done 3 or 4 time before. This time however
the very first byte read out from the DATA register, supposedly
the first byte in the result, was the by now dreaded 80h. Yet
after cheddng, the DMA controller had finished and the sector
had been transferred to the sector buffer with no apparent error.
Befwe commencing each read I had cleared the buffer to all
O's, and now it contained 512 bytes of directory data. At least
I had watched the bug in action. I should have continued to
single step through the entire result phase as the STATUS
register would have indicated that there was more to come, but
I didn't (hindsight). I was instead trying to work out how the
FDC could report an illegal command after it had just trans-
ferred a sector correctly. No way that it could do that.
I changed the code to accept the result of 80h as a no-error
result and ran it. After several file transfers and compares, I
was satisfied that the software and the disk system was working
correctly. The FDC was just giving out the wrong result.
Problem was: how to trap a real error if one occurred?
byte. Before, when I was using 0,0,0 as sector address I
wouldn't have noticed it.
GETTING WARM
I went back to the FLASH based system where I was almost
certain to end up with an error, while relinquishing my ability
to set breakpoints. I then cleared the result buffer and did a
read on one of the outer tracks. To top it off I had put in a non-
zero sector number, on head #1. Sure enough, BIOS reported
an undefined error, and straight in with the debugger rather
than replying. First check the result buffer. It started with 80h
all right, but it also contained the track, sector, head, and size.
Only they were in the 3rd to 6th byte NOT in the 4th to 7th
location where they ought to be. Although they didn't ought
to be there at all. The FDC is only supposed to send a single
byte result on an illegal command, and in any case the routine
that checks the FDC's SI results only reads up to two result
bytes.
Then the penny dropped: 80h is a valid 2nd status byte, in fact
it is the expected 2nd status byte, indicating that the last sector
in the command has been processed (bit 7 set) The other bits
represent certain errors when set It just hadn't entered my
mind before, I was so sure that the 80h was the illegal com-
mand result. The whole buffer was shifted one byte down. The
first result byte which ought to be 40h was nowhere to be
found.
Now I knew what was happening, but not why. Something was
reading a byte out of the FDC before the result routine got to
it. After finishing the housekeeping, the program was singly
sitting in a tight loop waiting for the 'interrupt complete' flag
to be set, and also checking for time-out in case the interrupt
never occurred. As soon as the last data byte is transferred the
FDC should generate the interrupt, indicating the end of the
execution phase, then enter into the polled result phase. That
would invoke the routine responsible to read the result. Not
much in between, yet something got that first byte. While
single stepping the result routine I had seen that the 80h really
was the first byte read (if I had continued that time, I would
also have seen the track, sector, and other information come
forth, but that's life)
When doing single sector reads, I had used track 00 sector 0,
simply because the command buffer was automatically cleared
to these values. Now I was going to try writing to the disk, and
as it had a valid directory there, I started using some empty
trades between 70 and 79. The undefined error condition
occurred in their usual frequency during writes but the writes
themselves were successful. I was examining the result buffer
after another 80h found its way to it. Hie buffer should
actually hold 3 bytes of status information (bit records), final
trade, head, sector numbers, and the sector size. I noted that,
apart fix)m the &miliar 80h in the first location, it also had a
track number in it. It could have got there fi'om a previous non-
error read, but it was in the wrong place, the 3rd instead of 4th
Then I had a gUmmer of an idea. The address decoder only
uses the lower bits of an address (actually bits 3-7). It assumes
anything between 60 and 67h is fi'om the DMA controller and
sends it on to become the DACK signal. Similarly 68 to 6Fh
goes on to become the FDC's CS signal, as long as they occur
in conjunction with the lORQ signal while Ml is oflF. The
sector data I/O uses 60h, sent by the DMA controller, the main
STATUS port is at 6Ch while 6Dh is the DATA port. The loop
waiting for the interrupt to occur in FLASH memory ^nt
considerable time around addresses ending in those ranges.
Coincidence? I reloaded the last RAM based program I had
44
The Computer Journal / #76
used, the one that produced the odd error, and that loop had
used two addresses with the low 8 bits in the same range!
CAUGHT IT
I put in a few NOPS to shift the loop out of that range,
reassembled, and ran it. No errors. I did it again, just to prove
the point, this time shifting the loop so it executed right in the
range. The 8 low bits in every address were sixty something
hex. Plenty of errors this time. I had foimd it, but I still
couldn't figure out why.
I wrote another tight loop around those addresses, then an
interrupt routine that did nothing. I shut the machine down.
As the RAM is battery backed it would hold the program. Next
I pulled the FDC chip from its socket and hooked a pulse
generator onto the interrupt pin so that the CPU would receive
the pulses on its INTO input without fighting another output.
Then I powered iq) in the debug monitor and set the whole
thing running with the oscilloscqie nearby.
The 'scope showed the expected pulses fi'om the decoder as the
loop executed, but nothing on the conditioned DACK or FDC
select lines. So far so good. Then I applied the interrupt pulses
from the generator, and there they were. Rather short pulses
on both the DACK and FDC CS lines. That did explain the
problem, but also posed new questions such as: why were they
there, and why did the FDC react to them to the extent of
loosing a byte. The first question was answered by the Z180
manual on interrupts: the Ml signal appears and ends half a
clock before the lORQ signal during an INTACK cycle. Also,
the address present on the bus at that time points to the
instruction following the interrupted instruction. The conclu-
sion was that for the last half clock cycle during INTACK we
have an address - in this case the low bits are 6x, which the
decoder recognizes. We also have lORQ without Ml which my
system control PLD recognizes as a valid DACK or FDC CS
and thus sends out either signal, albeit for a brief period.
HI
lORQ
DACK
r
The INTACK cycle as shown on the 'scope.
I shut down, removed all gadgets, put the FDC chip back in
place and fired up again. Then I went back to the RAM based
disk I/O routines and shifted the loop as before, this time so
,that it ended with the 8 low bits at 66h i.e the extra pulses
would be recognized as DACK signals only, as the FDC select
starts at 68h. Rurming that produced the errors as before.
Then I shifted it again, this time starting the loop with the low
address bits at 68h. No D ACKs but should get some extra FDC
CS pulses. Ran it again, this time with no errors.
The exercise proved that an extra DACK pulse, even a very
narrow one, will remove a status byte, but there is nothing
about that in the data sheet. It also proved that extra CS pulses
makes no difference, which is something the data sheet warns
you against. The DP8473 data sheet actually specifies that
'During DMA operations the Chip Select input must be held
high' end quote. I think they got that back to front. It ought
to read: 'During polled I/O the DACK itq>ut must be held high'
It just shows that you carmot,believe everything you read.
THE FIX
I had to do something a bit more permanent. Just by putting
the loop in another area would not be a good-idea. A timer or
keyboard internet could occur, then the FDC interrupting
while these being attended to. That could be at any address,
quite possibly generating a spurious DACK signal to cause an
FDC error.
The solution was not hard to come by, all I had to do was to
quaUiy the DACK signal with the CPU's RD or WR strobe -
either had to occur during DMA but not during INTACK - as
well as the lORQ signal. The Ml signal could be dispensed
with. It required some cut traces, a col^)le of wire jumpers and
a redesigned PLD. All up it took about an hour to fix what had
taken a week to find. It proved to be a permanent solution too,
as the floppy disk part of the system has behaved flawlessly
ever since.
AS AN ASIDE
A month or so later I had installed an 1 8Mhz CPU and nmning
at ftill ^)eed (with a fair few changes to FLASH memory
contents). I wanted a printout of something, and the board was
ruiming without a printer as it does for most of the time, so I
plugged one in. Would it print anything? No way. It didn't
even hang or anything, just a short pause then continued as if
the printing was completed. A sense of deja vu if I ever had
one. First thing was to try manipulating the printer ports from
the monitor, and it did print that way. A quick check through
the printer driver listing revealed a likely culprit. With the
CPU operating at 18 MHz an instruction does not take very
long to execute and the entire operation of loading the data
then pulsing the printer strobe would have taken well under the
specified 1 uS. Probably not long enough for the printer to
recognize the strobe. Insert an extra instruction to waste some
time and that was that. Bug found, tried and executed in a
quarter hour. I wish all bugs were like that.
The Computer Journal / #76
45
Regular Feature SUPPORT GROUPS FOR THE CLASSICS
Contact Lifting
!*i 'il' *" ■''■■'' ■ '' ' '' ' ' '■''"'' I,;
TCJ Staff Contacts
TCJ Editor Dave Baldwin, Voice (916)722-4970, FAX (916)722-
7480 or TCJ BBS (916) 722-5799 (use "computer", "journal", pswd
"subscriber" as log on), Internet dibald@netconi.com, CompuServe
70403,2444, tcj@psyber.com.
Bin D. KiWer, PO Box 535, Lincoln, CA 95648, (916)645-1670,
OEnie: B.Kibler, CompuServe: 71563,2243, E-mail:
kibler@psyber.com.
Z-System Support: Jay Sage, 143 5 Centre St. Newton Centre, MA
02159-2469, (617)965-3552, BBS: (617)965-7259; E-mail:
Sage@ll.mit.edu. Also sells Z-System sofbvare.
32Bit Support: Rick Rodman, 1150 Kettle Pond Lane, Great Falls,
VA 22066. BBS/FAX (703)769-1 169.
Kaypro Support: Charles Stafford, 4000 Norris Ave., Sacramento,
CA 95821, (916)483-0312 (eves). Also sells Kaypro upgrades, see
ad inside back cover. CompuServe 73664,2470 (73664 .2470@cis).
S-100 Support: Herb Johnson, CN 5256 #105, Princeton, NJ 08543,
(609)771-1503. Also sells used S-100 boards and systems, see inside
back cover. E-mail: hjohnson@pluto.njcc.com.
6800/6809 Support: Ronald Anderson, 3540 Sturbridge Ct., Ann
Arbor, MI 48105.
Regular Contributors:
Brad Rodriguez3ox 77, McMaster Univ., 1280 Main St. West,
Hamilton, ONT, L8S ICO, Canada, E-mail: bj@headwaters.com..
Frank Sergeant, 809 W. San Antonio St., San Marcos, TX 78666, E-
mail: pygmy@pobox.com.
Tilmann Reh, Oemumy, E-mail: ttlmann.reh@hrz.uni-siegen.d400.de.
Has many programs for CP/M+ and is active with Zl 80/280 ECB
bus/Modular/Embedded computers. Microcontrollers (8051).
Helmut Jungkunz, Munich, Germany, ZNODE #51, 8N1, 300-14.4,
+49.89.961 45 75, or CompuServe 100024,1545.
USER GROUPS
Connecticut CP/M Users Group, contact Stephen Griswold, PO Box
74, Canton CT 06019-0074, BBS: (203)665-1100. Sponsors Z-fests.
Sacramento Microcomputer Users Group, PO Box 161513, Sacra-
mento, CA 95816-1513, BBS: (916)372-3646. Publishes newsletter,
$15.00 membership, meetings at SMUD 6201 S St., Sacramento CA.
CAPDUG: The Capital Area Public Domain Users Group, Newslet-
ter $20, Al Siegel Associates, Inc., PO Box 34667, Betherda MD
20827. BBS (301) 292-7955.
NOVAOUG: The Northern Virginia Osborne Users Group, Newslet-
ter $12, Robert L. Critics, 7512 Fairwood Lane, Falls Church, VA
22046. Info (703) 534-1186, BBS use CAPDUG's.
The Windsor Bulletin Board Users' Group: England, Contact Rodney
Hannis, 34 Falmouth Road, Reading, RG2 8QR, or Mark Minting,
94 Undley Common, Lakenhcath, Brandon, Suffolk, IP27 9BZ, Phone
0842-860469 (also sells NZCOM/Z3PLUS).
L.I.S.T.: Long Island Sinclair and Timex support group, contact
Harvey Rait, 5 Peri Lane, Valley Stream, NY 11581.
ADAM-Link User's Group, Salt Lake City, Utah, BBS: (801)484-
5114. Supporting Coleco ADAM machines, with Newsletter / BBS.
Adam International Media, Adam's House, Route 2, Box 2756,
1829-1 County Rd. 130, Pearland TX 77581-9503, (713)482-5040.
Contact Terry R. Fowler for information.
AUGER, Emerald Coast ADAM Users Group, PO Box 4934, Fort
Walton Beach FL 32549-4934, (904)244-1516. Contact Norman J.
Deere, treasurer and editor for pricing and newsletter information.
MOAUG, Metro Oriando Adam Users Group, Contact James Poulin,
1146 Manatee Dr. Rockledge FL 32955, (407)631-0958.
Metro Toronto Adam Group, Box 165, 260 Adelaide St. E., Toronto,
ONT M5A INO, Canada, (416)424-1352.
Omaha ADAM Users Club, Contact Norman R. Castro, 809 W. 33rd
Ave. Bellevue NE 68005, (402)291-4405. Suppose to be oldest
ADAM group.
Vancouver Island Senior ADAMphiles, ADVISA newsletter by David
Cobley, 17885 Berwick Rd. Qualicum Beach, B.C., Canada V9K
1N7, (604)752-1984.
Northern Dliana ADAMS User's Group, 9389 Bay Colony Dr. #3E,
Des Plaines IL 60016, (708)296-0675.
San Diego OS-9 Users Group, Contact Warren Hrach (619)221-
8246, BBS: (619)224-4878.
ACCESS, PO Box 1354, Sacramento, CA 95812, Contact Bob Drews
(916)423-1573. Meets first Thurdays at SMUD 59Th St. (ed. bldg).
Forth Interest Group, PO Box 2154, Oakland CA 94621 510-89-
FORTH. International support of the Forth language, local chapters.
The Pacific Northwest Heath Users Group, contact Jim Moore, 1554
- 16th Avenue East, Seattle, WA 98112-2807. be483@scn.org.
46
The Computer Journal / #76
The SNO-KING Kaypro User Group, contact Donald Anderson,
13227 2nd Ave South, Burien, WA 98168-2637.
SeaFOG (Seattle FOG User's Group, Formerly Osborne Users Group)
PO Box 12214, Seattle, WA 98102-0214.
OTHER PUBLICATIONS
The Z-Leller, supporting Z-System and CP/M users. David A.J.
McGlone, Lambda Software Publishing, 149 West Hillard Lane,
Eugene, OR 97404-3057, (541)688-3563. Bi-Monthly user oriented
newsletter (20 pages+). Also sells CP/M Boot disks, software.
The Analytical Engine, by the Computer History Association of
California, 1001 Elm Ct. El Cerrito, CA 94530-2602. A ASCH text
file distributed by Internet, issue #1 was July 1993. E-mail:
kcrosby@crayola.win.net.
Z-IOO Lifeline, Steven W. Vagts, 2409 Riddick Rd. Elizabeth City,
NC 27909, (919)338-8302. Publication for Z-100 (a S-100 machine).
The Staunch 8/89'er, JCirk L. Thompson editor, PO Box 548, West
Branch lA 52358, (319)643-7136. $15/yr(US) publication for H-8/
89s.
The SEBHC Journal, Leonard Gcisler, 895 Starwick Dr., Ann Arbor
MI 48105, (313)662-0750. Magazine of the Society of Eight-Bit
Heath computerists, H-8 and H-89 support.
Sanyo PC Hackers Newsletter, Victor R. Frank editor, 12450 Skyline
Blvd. Woodside, CA 94062-4541, (415)851-7031. Support for or-
phaned Sanyo computers and software.
the world of 68' micros, by FARNA Systems, PO Box 321, Warner
Robins, GA 31099-0321. E-mail; dsrtfox@delphi.com. New maga-
zine for support of old CoCo's and other 68xx(x) systems.
Amstrad PCW SIG, newsletter by Al Warsh, 6889 Crest Avenue,
Riverside, CA 92503-1162. $9 for 6 bi-monthly newsletters on
Amstrad CP/M machines.
Historically Brewed, A publication of the Historical Computer Soci-
ety. Bimonthly at $18 a year. HCS, 2%2 Park Street #1, Jackson-
ville, FL 32205. Editor David Greelish. Computer History and more.
IQLR (International QL Report), contact Bob Dyl, 15 Kilbum Ct.
Newport, RI 02840. Subscription is S20 per year.
QL Hacker's Journal (QHJ), Timothy Swenson, 5615 Botkins Rd.,
Huber Heights, OH 45424, (513) 233-2178, sent mail & E-mail,
swensotc@ss2.sews.wpaft3.af.mil. Free to programmers of QL's.
UpdaU Magazine, PO Box 1095, Peru, IN 46970, Subs $ 1 8 per year,
supports Sinclair, Timex, and Cambridge computers.
Other Support Businesses
Hal Bower writes, sells, and supports B/PBios for Ampro, SB 180,
and YASBEC. $69.95. Hal Bower, 7914 Redglobe Ct., Severn MD
21144-1048, (410)551-5922.
Sydex, PO Box 5700, Eugene OR 97405, (541)683-6033. Sells
several CP/M programs for use with PC Clones C22Disk' format/
copies CP/M disks using PC files system).
Elliam Associates, PO Box 2664, Atascadero CA 93423, (805)466-
8440. Sells CP/M user group disks and Amstrad PCW products. See
ad inside back cover.
Discus Distribution Services, Inc. sells CP/M for $150, CBASIC
$600, Fortran-77 $350, Pascal/MT+ $600. 8020 San Miguel Canyon
Rd., Salinas CA 93907, (408)663-6966.
Microcomputer Mail-Order Library of books, manuals, and periodi-
cals in general and H/Zenith in particular. Borrow items for small
fees. Contact Lee Hart, 4209 France Ave. North, Robbinsdale MN
55422, (612)533-3226.
Star-K Software Systems Corp. PO Box 209, Mt. Kisco, NY 10549,
(914)241-0287, BBS: (914)241-3307. SK'DOS 6809/68000 operat-
ing system and software. Some educational products, call for catalog.
Peripheral Technology, 1250 E. Piedmont Rd., Marietta, GA 30067,
(404)973-2156. 6809/68000 single board system. 68K ISA bus com-
patible system. See inside front cover.
Hazelwood Computers, RR# 1 , Box 36, Hwy 94@Blufnon, Rhineland,
MO 65069, (314)236-4372. Some SS-50 6809 boards and new
68000 systems.
AAA Chicago Computers, Jeny Koppel, (708)681-3782. SS-50 6809
boards and systems. Very limited quanity, call for information.
MicroSolutions Computer Products, 132 W. Lincoln Hwy, DeKalb,
IL 60115, (815)756-3411. Make disk copying program for CP/M
systems, that runs on CP/M sytcms, UNIFROM Format-translation.
Also PC/Z80 CompatiCard and UniDos products.
GIMIX/OS-9, GMX, 3223 Arnold Lane, Northbrook, IL 60062,
(800)559-0909, (708)559-0909, FAX (708)559-0942. Repair and
support of new and old 6800/6809/68K/SS-50 systems.
n/SYSTEMS, Terry Hazcn, 21460 Bear Creek Rd, Los Gatos CA
95030-9429, (408)354-7188, sells and supports the MDISK add-on
RAM disk for the Ampro LB. PCB $29, assembled PCB $129,
includes driver software, manual.
Corvatek, 561 N.W. Van Buren St. Corvallis OR 97330, (503)752-
4833. PC style to serial keyboard adapter for Xerox, Kaypros, Franklin,
Apples, $129. Other models supported.
Morgan, Thielmann & Associates services NON-PC compatible
computers including CP/M as well as clones. Call Jerry Davis for
more information (408) 972-1965.
Jim S. Thale Jr., 1150 Somerset Ave., Deerfield IL 60015-2944,
(708)948-5731. Sells I/O board for YASBEC. Adds HD drives, 2
serial, 2 parallel ports. Partial kit $150, complete kit $210.
Trio Company of Cheektowaga, Ltd., PO Box 594, Checktowaga NY
14225, (716)892-%30. Sells CP/M (& PC) packages: InfoStar 1.5
($160); SuperSort 1.6 ($130), and WordStar 4.0 ($130).
Parts is Parts, Mike Zinkow, 137 Baridey Ave., Clifton NJ 07011-
3244, (201)340-7333. Supports Zenith Z-100 with parts and service.
DYNACOMP, 178 Phillips Rd. Webster, NY 14580, (800)828-
6772. Supplying versions of CP/M, TRS80, Apple, CoCo, Atari, PC/
XT, software for older 8/16 bit systems. Call for older catalog.
The Computer Journal / #76
47
The Computer Journal
Back Issues
Sales limited to supplies in stock.
Numb«r42:
VoluiiwNumbtfl:
« I M U M 1 tD>
• SwW Mwladng and Modem transfwB
• Floppy dU torniatt, Print tpoolar.
• Adding 8087 ktatti CMp, Rbw opiic*
^S-100 HI-RES graptiic*.
• ConbDllIng DC molan, MuW-uur column.
• VIC-20 EPROM Pregmmmw, CP/M 3.0.
• CP/M uMr function* and intagraUon.
ilOtol*
• Foilh tutorial and Wrtta Yow Om.
• 88008 CPU tor S-100.
• RPM w CP/M, BIOS Enhancamants.
• Poor Man's DiaWbutad Procaaaing.
• CorNraMng Appla Stappar Motoia.
• FaeaMla Pietiifaa on a Micio.
• Mamory Mappad I/O on a ZX81 .
• Iwua8 20lo28
• Daaigning an 8035 SBC
• Uahig /^ppla Oraphica from CP/M
• SoMaring ft Olhar SHanga Talaa
• BuHd an S-100 Floppy Diak Controllar
WD2797 ConboNar tor CP/M 88K
• EidMidlng Turbo Paacal: aaria*
• UnaoMaring: Tha Arcana Art
• Analog Data /koquiaibon ft Control:
Connoting Your Cemputar to tha Raal
• Pregrammirtg tha 8036 S8C
• NEW-DOS: aariaa
• VarlaWMy In tha BOS C Standard Library
• Tha SCSI Intarfaoa: aariaa
• Uaing Turbo Paacal ISAM Fllaa
• Tha Ampro LMIa Board Column: aariaa
• C Column: aariaa
■ Tha Z Column: aariaa
• Tha SCSI Intarfaca: introduction to SCSI
• Editing tha CP/M Oparatf ng Syatam
■ INDEXER: Turbo Paacal Program to Craata
anlr<da«
■ S ali cB n g ft BuHdlng a Syatam
• inbodudion to Aaaambia Coda tor CP/M
• /\mpro 186 Column
• ZTima-l : A Raal Tima Clock tor tha Ampro
Z-80 LMIa Board
126 to 11
• Bua Syatama: S ila et lna a Syatam Bus
• Uaing tti* S8180 Raal Tima Ctock
• Tha SCSI Intartaoa: SoNwara tor tha SCSI
• knida Ampro Computar*
• NEW-DOS: Tha CCP Commands
(continuad)
•ZSIOComar
• /Mtordabia C Compllars
• Corteurrant Multitasking: A Ravlaw of
DoublaDOS
• 680C0 TinyOlant Hatwlhoma's Low Coat
1»bit sac and Oparabng Syatam
• Tha M of Sourca Coda Qanaration:
Dt saaa a m bling Z-SO Softwara
• Faadback Conbol Syatam Analysis: Using
Root Locus Analyaia ft Faadback Loop
• Tha C Column: A Oraphica Primltiva
Padcaga
• Tha KWacM HOO4180: Naw LH* tor 8-blt
• ZSIO Comar Command Lin* Ganarators
• A Tutor Program In Forth: Writing a Forth
Tutor in Forth
• Diak Paramatars: Modifying the CP/M Disk
Parai n ata r Block for Foraign Disk Formats
• Starting Your Own BBS
• Buikl an A/D Convartar for tha Ampro LKNa
Board
• HD64180: Sailing tha Walt Statas ft RAM
Rafrash uaing PRT ft DMA
• Using SCSI lor Raal Time Control
• Opan Lattar to STD Bus Manufacturers
• Patching Turbo Pascal
• Chooaing a Language for Machine Control
• Ballar Softwara Fillar Design
• MDIStC Adding a 1 Mag RAM Oiskto
Ampro Little Board, Part 1
• Using the Hitachi hd64180: Embedded
PiLN asuj Daalon
• 68000: Why use a new OS and the 680007
• Detecting the 8087 Math Chip
• Floppy Disk Track Stniclura
• Double Density Fkippy Controller
• ZCPR3 lOP lor the Ampro LitU* Boerd
• 3200 Hackers' Language
• MDISK: Adding a 1 Meg RAM Diskto
Ampro Little Boerd, Part 2
• Non-Praampllve Multitasking
• Scftwai* Tlnwrs for tha 68000
•LilMputZ-Ncde
• Using SCSI for Qenersltatad I/O
• Communicating wHh Ftoppy Disks: Disk
F>aramater* ft their vaiiatnns
• XBK)S: A Replacemant BIOS for the
SB180
• K-OS ONE and the SAGE: Demystifying
Operating Systems
■ Remote: Dealgning a RsnralB System
Program
• The ZCPR3 Comer ARUNZ
Documentation
laaue Number 32:
- 15 copiee now available -
ittwNgniHfH;
• Data File Conversnn: Writing a Filter to
Convert Foraign File Formats
• Advanced CP/M: ZCPR3PLUS ft How to
Wiila Self Rakwating Code
• DataBaaa: The First In a Series on Data
Baaes and Informatkm Processing
• SCSI for the S-100 Bus: Another Example
of SCSrs Versatility
• A Mouaa on any Hardware: Implementtng
the Mouaa on a Z80 Syatam
• Syatematic Elimlnatton of MS-DOS Files:
Part 2, Subdirectories ft Extended DOS
Sarvicea
• ZCPR3 Comer ARUNZ Shells ft Patching
WordStar 4.0
laaue Number 34:
• Davatoping a File Encrypdon System.
• Database: A continuation of the data base
primer series.
■ A Simple Multitasking Executive: Designing
an embedded cor<troller multitasking
executive.
• ZCPR3: Retocalabia code, PRL files,
ZCPR34, and Type 4 programs.
• Naw Microoontrollers Have Smarts: Chips
with bask: or Forth In ROM are easy to
program.
• /Kdvancad CP/M: OS axtanstons to BDOS
and BIOS, RSXs lor CP/M 2.2.
• Macintoah Data File Convetskxi In Turbo
Pascal.
• All This ft Modula-2: A Pascal-like
aitamatlve with scope and parameter
passing.
• A Short Course in Source Code Generatkxi:
Disassembling 8068 softwara to produce
modifiable asaem. sourca code.
• Real Computing: The NS32032.
• S-100: EPROM Bumerproiect for S-100
hardware hadtars.
• Advanced CP/M: An up-to-dato DOS, plus
datalla on file structure and formats.
• REL-Styla Assembly Language for CP/M
and Z-Syatam. Part 1: Selecting your
asaambier, linker and debugger.
Issue Number 86:
• Information Engineering: Introduction.
• Modula-2: A list of refeter)ce books.
• Temperature Measurement ft Control:
Agricultural computer appik^bon.
• ZCPR3 Comer Z-Nodos, Z-Plan, Amstrand
computer, and ZFILE.
• Real Computing: NS32032 experimenter
hardware, CPUs in series, software options.
• SPRINT: A review.
• REL-Style Assembly Language for CP/M ft
ZSystams, part 2.
• Advanced CP/M: Environmental
programming
Issue Number 37:
C Pointers, Arrsys ft Structures Made
Easier Part 1, Pointers.
ZCPR3 Comer Z-Nodes, patching for
NZCOM. ZFILER.
Information Engineering: Bask: Concepts:
fields, field deAnitkxi, client woricsheets.
Shells: Using ZCPR3 named shell
variablea to store deto variaWas.
Resklent Programs: A detailed kiok at
TSRs ft how they can leed to chaos.
Advanced CP/M: Raw and cooked console
VO.
ZSDOS: Anatomy of an Operating System:
Parti.
laaue Number 38:
C Math: Dollars and Cents With C.
Advanced CP/M: Batch Processing and a
NewZEX.
C Pointers, Arrays ft Structures Made
Easier Part 2, Anay*.
Z-Systsm Comer Shells and ZEX, Z-Node
Central, system security under Z-Systems.
Information Engineering: The portable
Information Age.
Computer Akied Publishing: Introduction to
publishing snd Desk Top Publishing
Shells: ZEX and hard disk backups.
Real Computing: Tha National
Samkxmductor NS320XX
ZSDOS: Anatomy of an Operating System,
Part 2
laaue Number 3»:
Programming for Performance: Assembly
Language technk;ues.
Computer Akjed Publishing: The HP
LaaerJel
The Z-System Comer System
enhancements with NZCOM.
Generating LaserJet Fonts: A review of
Digi-Fonts.
Advanced CP/M: Making oki programs Z-
System aware.
C Pointers, Arrays ft Structures Made
Easier Part 3: Sbuctures.
Shells: Using ARUNZ alias with ZCAL.
Reel Computing: The National
SemkXHiduclor NS320XX.
Issue Number 40:
Programming the LaserJet Using the
escape codea.
Beginning Forth Column: Introduction.
Advanced Forth Cokrmn: Variant Records
and Modules.
LINKPRL: Generating the bit maps for PRL
files from a REL file.
WordTech's dBXL: Writing your own
custom designed business program.
Advanced CP/M: ZEX S.O'The machine
and the language.
Programming for Performance: Assembly
language technk)ues.
Programming Input/Output With C:
Keyboard and screen functions.
The Z-Systam Comer Remote access
systems and BOS C.
Real Computing: The NS320XX
Issue Number 41:
F'^rth Column: ADTs, Object Oriented
Concepts.
Improving the Ampro LB: Overcoming the
B8Mb hard drive limit
How to add Data Structures in Forth
Advanced CP/M: CP/M Is hacker's haven,
and Z-System Command Scheduler
The Z-System Comer Extended Multiple
Command Lir>e, and aliases.
Disk ar>d printer functions with C.
LINKPRL: Making RSXes easy
SCOPY: Copying a series of unrelated
• Dynamu Memory Altocation: Altocating
memory at runtime with examples in Forth.
• Using BYE with NZCOM.
• C snd the MS-DOS Character Attribute*.
• Forth Column: Lists and object oriented
Forth.
• The Z-System Comer Genie, BDS Z and
Z-System Fundamentals.
• 68705 Embedded Controller Applk^atioii: A
single-chip microconboller application.
• Advanced CP/M: PluPerfect Writer and
using BOS C with REL files.
issue Number 43:
• Standardize Your Ftoppy Disk Drives.
• A New Hiatory Shell for ZSystem.
• Heath's HDOS, Then and Now.
• The ZSystom Comer Software update
ssrvne, and customizing NZCOM.
• Graphics Programming With C: Routines
for the IBM PC, and the Turtio C library.
• Lazy Evaluation: End ttie evaluation as
soon as the result Is known.
• S-100: There's still life In the okl bus.
• Advanced CP/M: Passing parameters, and
complex error recovery.
laaue Number 44:
• Animation with Turtjo C Part 1 : The Basic
Tods.
• Multitesking in Forth: New Mk:ros FeSFCII
and Max Forth.
• Mysteries of PC Floppy Disks Revealed:
FM, MFM, and the twisted cable.
• DosDisk: MS-DOS disk emulator for CP/M.
• Advanced CP/M: ZMATE and using k)okup
and dispatch for passing parameters.
• Forth Column: Handling Strings.
• Z-Systom Comer MEX and telecommuni-
cations.
Issue Number 48:
• Embedded Systems for the Tenderfoot
Getting sterted with ttie S031 .
• Z-Systom Comer Using scripte with MEX.
• The Z-Systom and Turbo Pascal: Patching
TURB0.COM to access the Z-Systom.
• Embedded Applkntions: Designing a ZSO
RS-232 communications gateway, part 1.
• Advanced CP/M: String searches and
tijning Jetfind.
• Animation with TurtJO C: Part 2, screen
interactions.
• Real Computing: The NS32000.
Issue Number 46:
• Build s Long Distance Printer Driver.
• Using tt<e 8031 'a built-in UART .
• Foundational Modules In Module 2.
• The Z-System Comer Patching The Word
Plus spell checker, and the ZMATE macro
text editor.
• Animation with Turbo C: Text In the
graphica rrxxla.
• ZSO Communications Gateway
Prototyping and using the ZSO CTC.
Issue Number 47:
• Contrdling Stopper Motors with the
88HC11F
• Z-System Comer ZMATE Macro Language
• Using 8031 Intemjpte
• T-1 : What It is ft Why You Need to Know
• ZCPR3 ft Module, Too
• Tipa on Using LCDs: Interfacing to the
68HC705
■ Real Computing: Debugging, NS32 Multi-
tasking ft Distributed Systems
• Long Distonce Printer Driver correction
• Roeo-soGgo
Issue Number 48:
• Fest Math Uaing Logarithms
• Forth and Forth Assembler
• Modula-2 and tha TCAP
• Adding a Bernoulli Drive to a CP/M
Computer (Buikjing a SCSI Interface)
• Review of BDS "Z"
• PMATECMATE Macros, PI 1
• Z-System Comer Patching MEX-Plus and
TheWord, Using ZEX
Issue Number 49:
• Computer Networic Power Protection
• Floppy Disk Alignment w/RTXEB, PI 1
• Motor Control with the F88HC1 1
48
The Computer Journal / #76
• Controlling Homa Healing & Lighting, Pt 1
• Gatting Started In Aaaembly Language
• PMATE/ZMATE MacnM, Pt 2
• Z-Syatam Comer/ Z-Beat Software
• Offload a Syatam CPU vwith the Z181
• Floppy Oiak Alignment w/RTXEB, Pt 2
• Motor Control wnth the F68HC11
• Modula-2 and the Command Line
• Controlling Home Heating & Lighting, Pt 2
• Getting Started in Aaaembly Language Pt 2
• Local Area Nelworka
•LMngtheZCPR3IOP
• PMATBZMATE Macroa, Pt 3
• Z-Syatem Comer, PCEDI Z-Beat Software
• Real Computing, 32FX16, Cachea
'«"» number 51:
• Introducing the YAS8EC
• Floppy Oak Alignment w/RTXEB, Pt 3
• High S peed ModeiTW on Eight Bit Syatema
• A ZS Talker and Hoat
• Local Area Nelworka— Ethernet
• UNIX Connectivity on the Cheap
• PC Hard Diak Partitkin Table
• A Short Introductkm to Forth
• Stepped Inference in Embedded Control
• Real Computing, the 32CG160, Swordfish
• PMATE/ZMATE Macioa
• Z-Syatem Comer, The Trenton Festival
■ Z-Beat Software, the Z3HELP System
l8tu«NumbT52:
• YAS8EC, The Hardware
• An /M)itrary Waveform Generator, Pt 1
• B.Y.O. Aaaembler...in Forth
• Getting Started in Aaaembly Language, Pt 3
•TheNZCOMlOP
• SenaeandtheF68HC11
• Z-Syatem Comer, Programming for
Cornpatibillty
• Z-Beat Software
• Real Computing, X10 Revisited
• PMATBZMATE Macrae
• Controlling Home Heating & Lighting, Pt 3
• The CPU280, A High Performance SBC
l««ua Number 53:
•TheCPU280
' Local Area Itletworks
■ Am Arbitrary Waveform Generator
' Zed Feat '91
' OelUng Started in Aaaembly Language
•TheNZCOMlOP
Issue Number 54:
' B.Y.O. Aaaembler
' Local Area IMworks
' Advanced CP/M
' ZCPR on a le-BH Intel Platform
■ Real Computing
' Intemjpta and ttie Z80
' 8 MHZ on a Ampro
- Hardware Heavann
' What Zilog never told you about the Supers
' An Arbitary Waveftxm Generator
' The Development of TDOS
Issue Number 55:
■ Fuzzitogy 101
The Cyclk; Redundancy Check in Forth
The Internetwork Protocol OP)
' Hardware Heaven
Real Computing
- Remapping Diak Drives through Virtual
BIOS
The Bumbling Mathmatician
YASMEM
Issue Number 86:
TCJ - The Next Ten Years
Input Expanskm for 8031
Connecting IDE Drives to 8-Bit Systems
8 Queens in Forth
Kaypro-84 Direct File Transfers
' Anak)g Signal Generation
Issue Number 5T:
Home Aulomatnn with X10
File Transfer Protocols
' MOISK at 8 MHZ.
' Shall Sort in Forth
' Introduction to Forth
DR. S-100
Z AT LaatI
Issue Number 88:
- Multitaakir>g Forth
* Computing Timer Values
Affordable Devek>pment Tools
' Mr. Kaypro
DR. S-100
Issue Number 59:
' Moving Forth
Center Fokl IMSAI MPU-A
Devek>ping Forth Applk»tions
Mr. Kaypro Review
DR. S-100
lasue Number 60:
' Moving Forth Part II
Center Fokj IMSAI CPA
■ Four for Forth
- Debugging Forth
' Support Groups for Classica
- Mr. Kaypro Review
DR. S-100
Issue Number 61:
' Multiprocessing 6809 part I
Center FoM XEROX 820
Quality Control
' Real Computing
Support Groups for Classk»
Operating Sy^ems - CP/M
Mr Kaypro SMHZ
Issue Number 62:
SCSI EPROM Programmer
' Center FoM XEROX 820
■OR S-100
- Moving Forth part III
" Programming the 6526 CIA
- Reminiacir>g and Muainga
Modem Scripts
Issue Number 63:
SCSI EPROM Programmer part II
Center FoM XEROX 820
OR S-100
' MuWpiocessing Part II
6809 Operating Systems
- Reminiscing and Musings
IDE Drives Part II
Issue Number 64:
Small-C?
Center Fold last XEROX 820
DRS-10O
Moving Forth Part IV
Small Systems
Mr. Kaypro
' IDE Drives Part III
Issue Number 68:
' Small Syatam Support
Center FoW ZX80«1
DR S-100
' Real Computing
' European Beat
PC/XT Comer
' Little CircuKa
' Levels of Forth
' Sinclair ZX81
Issue Number 66:
Small Syatem Support
' Center FokJ: Advent Decoder
DR S-100
Connecting IDE Drivea
PC/XT Comer
Little Circuits
' Multiprocessing Part III
Z-System Comer
Issue Number 67:
' Small Syatam Support
Canter FoM: SS-SOrSS-30
•DR S-100
' Serial Kaypro Interrupta
' Little Qrcuits
■ Moving Forth Part S
- European Beet
Issue Number 68:
Small Syatem Support
' Center FoM: Pertec/Mits 4PIO
Z-System Comer II
■ PC/XT Comer
Little Qrcuits
' MuKipiocessing Forth Part 4
' Mr. Kaypro
Issue Number 69:
Small Syatam Support
' Center Fold: S-100 IDE
' Z-System Comer II
' Real Computing
• PC/XT Comer
' OR. S-IOO
' Moving Forth Part 6
' Mr. Kaypro
Issue Number TO:
Small Syatem Support
' Center FoM: Jupiter ACE
■ Z-System Comer II
• PC/XT Comer Stepper Motors
DR. S-100
Multiprocessing Part 5
European Beat
Issue Number 71:
Computing Hero of 1994
' Snnall System Support
Center FoM: Hayes 80-1 03A
Power Supply Baaica
' PC/XT Comer Stepper Motors
DR. S-100
Moving Forth Part 7
' Mr. Kaypro
' 8048 Emulator Part 1
laaue Number 72
- Beginning PLO
' Small Syatem Support
Centw FoM: Rockwell R65F11
' Playing Witt) Mksroa
' Real Computing
Small Toola Part 1
' DR. S-IOO
Moving Forth Part 7.5
8048 Emulator Part 2
Issue Number 73
$10 XT
Small System Support
Center FoW: 640K XT
IDE Parte
Real Computing
Small Toota Part II
DR. S-100
Mr. Kaypro
■ PC/XT Corenr
'8048 Emulator Part 3
laaue Number 74
Antique or Junk
' Small Syatem Support
Center FoM: S-100 Power Supply
' Movirig Forth part 8
Real Computing
AMSTRAD PCW Now
DR. S-100
' Mr. Kaypro
' Palmtech CPLIZ180
' Disk IA3 in Forth
Issue Number 75
' The European Beat
' Small System Support
Center FoM: Standard Bua VO
Moving Forth part 8
' Real ComfMjting
' Embedded Control Using ttie STD Bus
DR. S-100
' EPROM Simulator
' High-Speed Serial I/O for ttw PCPI Applteard
Disk I/O in Forth, Pt 2
' TSeoO Source Code
U.S. Canada/Mexico Europe/Other
Subscriptions (CA not taxable) (Surface) (Air) (Surface) (Air)
1year (6 issues) $24.00 $32.00 $34.00 $34.00 $44.00
2years (12 issues) $44.00 $60.00 $64.00 $64.00 $84.00
Back Issues (CA tax) add these shipping costs for each issue ordered
Bound Volumes $20.00 ea -i-$3.00 ■i-$3.50 +$6.50 -t-$4.00 -»- $17.00
#20 thru #43 are $3.00 ea. -i-$1.00 +$1.00 -i-$1.25 -i-$1.50 -t-$2.50
#44 and up are$4.00ea. +$1.25 +$1.25 +$1.75 +$2.00 +$3.50
Items:
Back Issues Total
h4ame:
California Residents add 7.25% Sales TAX
Shipping Total
Subscription Total
Total Endosed
Address:
Credit Card #
.«P.
J_
Payment is accepted by check, nrwney order, or Credit Card (M/C,
VISA, CarteBlanche, Diners Club). Checks must be in US funds,
drawn on a US bank. Credit Card orders can call 1 (800) 424-8825.
TCI ] The Computer Journal
P.O. Box 3900, Citrus Heights, CA 95611-3900
Phone (916) 722-4970 / Fax (916) 722-7480
The Computer Journal / #76
49
Regular Feature
Editorial Comment
New Editor?
The Computer Corner
By Bill Kibler
Welcome to issue 76's Computer Comer
and n^ last as editcv. Next time I'll be
doing this column as just a contributing
editor. Will it be different, yes and no.
Mostly I'll have more time to ponder
and do research. I have considered fo-
cusing more on aae topic which is what
I did before becoming editor. But I think
I might still hit a few "take this world"
tcqncs even still. Take for instance the
last Embedded Systems Conference.
ESC
The Embedded System Conference this
year, was not v/txen I thought it was.
Like many readers, you get so much
mail, that when it comes in, you half
look at it I did that with the flyer from
the conference. Fortunately, I tack it with
me, for when I arrived in front of last
years meeting hall, no conference. I fi-
nally decided to read the flyer very closely
only to discover it was in San Jose Con-
vention center, about ten miles east some-
where.
After getting k>st more than once by
following incorrect signs, I did get to the
big new center that was packed with
peoide. The opening day is called Octo-
ber Feast as free beer and munches are
provided after 7PM. I over heard a few
of the ladies responsible for setting the
show up, and they were commenting on
how two to three times the number of
peoide showed up that they had pre-
pared for. Needless to say many went
away hungry and iq>set from the food
festival portion. I did get my usual beer
mug however, so I have no complaint in
this area.
As to vendors, they all seemed to be
there, the big guys that is. I always find
the show a bit strange, since very few
small vendors can afford to go there. It
pretty much is like most things in
America. All the hoopla is over the big
vendors which have a small part in the
overall market, while the little guys who
do all the real work can't even afford to
pay the floor space fees. It is sort of like
the fortune 100 get all the publicity,
while something like 95% all business
income comes fit)m con:q>anies with less
than 25 workers and who most people
have never heard of Embedded control
is really like that too.
A FEW Surprises.
I was stuprised by a few of the displays.
Heading the list was IBM. I didn't ex-
pect to see them at all, but they had three
booths. The main large one was pushing
OS/2 and e^)ecially OS/2 Connect. I
asked so many question about connect,
that I got a free copy of DOS 7 so I would
go away. The fimny thing about DOS 7
was what I did before the show. I needed
a copy of CP Backup and had tried to
find one without luck. When I got home
and opened my free DOS 7 package, I
was pleasantly surprised to find CP
Backup is now a part of DOS 7. For
those who have not tried DOS 7 by IBM
do so, you will like it. I found it better
and I think IBM may keep making it
better, while Microsoft has definitely
abandoned the DOS market.
Microsoft was there, but so low key, they
might as well have not bothered. IBM
on the other hand also had a booth for
their RISC chip for embedded systems. I
think it was a version of the RISC CPU
used in their RS6000 system. That con-
cept is sort like the Intel 386 version for
embedded controllers. The idea here is
to make moving programs from an de-
velopment platform into the real world
simpler and easier. My problem is, who
needs another high powered CPU to do
what a cheaper and simpler 8 bit CPU
can do.
IBM is also starting to confront the op-
erating system people, with their version
of a real time kernel. Somewhat based
on OS/2, they have a group starting to
develop a real time operating system. It
is just starting to take off and they said
next year it will be a full package. I think
they will have problems competing with
all the other vendors, especially OS/9
which I think is probably number one.
I'll be reviewing OS/9 in a later article.
Of Note
Motorola was there and I asked about
their latest HC05 development board. It
seems they changed the development
package and you must now use an
EPROMs to load from. In the past it was
possible to do serial loading, but they
dropped that. The person there didn't
like my comments and reaction to find-
ing out about the change. I guess they
don't want to heard about the bad things
they do.
Now don't get me wrong, most of the
vendors were only selling $10,000 sys-
tems and support products, yet a few of
the others were able to show up. You do
feel like your running around in the land
of the giants until you get back into the
small booth area. Here you find all the
small guys and even a few who's prod-
ucts you might be able to afford.
I was feeling still a little lost till I came
across parvus Inc. These people have
done their homework and provide an
incredible line of products (801 483-
1533). I am interested in PC based.
50
The Computer Journal / #76
memory mapped 8031 interface cards.
Not oiJy did they have one, but I could
have my choice of Z 1 80, 68HC 1 1 , 803 1 ,
or 80166 onISAorPC104 formats. They
had all types of industrial software inter-
faces and even real 1/0 cards (relays and
opto/isolators). It was like the concept of
"one stop shopping." A single verjdor
who can fill your every need. Pricing
was fair, neither high nor low, but the
options just got me, like the choice be-
tween being a co-processor on the PC
bus, or taking the bus over and talking to
expansion cards. How about a 68HC1 1
nmning the PC bus? Sounds interesting
to me!
Another item of note, was Siemens way
of getting you a development systems.
Instead of charging the usual low show
price, they were giving them away. That
is right, free if you got four of the six
support vendors to sign their card off.
The idea here was to make you sit through
the support vendors lectures (typically
about a half hour each and trying to sell
you a $ 10,000 support package) and then
you get the free system. 1 figured it would
have taken me all day to do that, so I
didn't get the free unit. Nice idea if you
have the time and I expect to see more
sales approaches like it next year.
Other fronts
I finally had the chance to use AP Cir-
cuits of Canada last month. We had a
board needing proto typing and opted to
use them. I couldn't be happier. I up-
loaded the file on Tuesday morning, and
we had the board in house Friday morn-
ing. Cost was $99 for two boards about
3 by 6 inches each. The work was excel-
lent, although all we had them do was
their proto 1 service (two sided no silk or
solder mask). Most proto houses want
$200 to $300 setup charges before mak-
ing even one board. Their BBS has free
layout programs and information for
"would be" circuit builders. Cost wise it
beats doing it yourself, for all but the
simplest of boards. (AP Circuits (403)
250-3406 voice, (403) 291-9342 BBS or
mcmuldd@cadvision. com. )
I am considering trying to setup a deal
with them for TCJ circuits. The idea
would be based on giving them the
Gerber files needed to make a TC/ board.
Readers wanting one of the boards would
just call up and give them a credit card
number and two days later you get two
cards. I am not sure why, but all their
runs are based on producing two cards at
a time. The cost would be a little higher
than us producing a large run of cards,
but then we don't get stuck with order-
ing, shipping, handhng and storage cost.
You need the board, simply call and zap
it is in the mail faster than we would be
able to do so.
I would like to hear from readers who
have found a cheaper or faster option to
get two sided platted through boards. (1
checked out several units at WESCON,
only the cost of the machines that would
put a light plating in the were expensive,
and the cost per hole was 5 cents each!)
We checked many places and they by far
are the cheapest and seem to be very
good. Like I say the boards looked great
and we had them NOW!
On the software front, I am starting to
look at Linux as my operating system of
choice. It has so much going for it, it
gets really hard not to become hooked
on it. You should also get one of the
Linux bibles or FAQ reprints. These
books (typically 1200+ pages) have tons
of usefiil information about Linux and
PC's in general. I have started using
mine as a reference book about PC parts.
Found out why not to use 3C50 1 etherrvet
cards on 486's, too slow and too small
buffer space.
Now with Linux and unlike Microsoft
products, you always get source code
with the CDROM release and it seems to
exceed any other product for power and
options. If your looking for "how to"
write some driver code, or how a
CDROM works, consider looking at the
source code inside Linux. They talk to
most all the PC devices available.
What little I have done so &r has im-
pressed me to no end. I recently got a
Sony 3 IB CDROM and had trouble find-
ing a driver that worked on DOS. Linux
found it and was able to run from it,
right from the floppy.
1 tried many of the Sony DOS device
drivers, all with no luck. I was told that
maybe the older drivers might work. I
eventually found a box of cheap disks
that were from a sound card. The label
said drivers for Sony and Panasonic
CDROMs and were 10 cents each. The
driver label was SLCD.SYS and it works
just fine. Since I have had many requests
for CP/M systems being able to talk to
CDROMs, I have been a bit more inter-
ested in talking to them now. I was about
to try writing my own driver, based on
using the Linux code until I fourtd SLCD.
My early reading however, brought up a
minor problem with a CDROM for CPM.
If I remember right, CP/M has a maxi-
mum drive size of 32 megs. My studies
so far indicate at least 512 megs must be
minimum limit. So right off, we got one
problem, how to deal with 660 megs of
file system. The file format is not even
DOS compatible, which is why you need
MSCDEX on DOS boxes, to convert the
CDROM directory to one DOS can un-
derstand. The only approach I can think
of would be a separate program that
treats the CDROM as a database, where
entries are files, allowing you to retrieve
records and save them to a local drive.
This is some early musings about the
problem and I certainly would like to
hear your ideas on the subject.
Mail
Since I no longer am editor of TCJ, you
need to use my personal or Kibler Elec-
tronic business e-mail address. The PO
Box 535 Lincoln is still a good mailing
address, but e-mail is
kibler@psyber.com. I have started a per-
sonal web page at http://
www.psyber.coni/~kibler and will try and
put things of interest there as well as in
TCTs web page. So far the web page is
{TCJ's that is) getting lots of good re-
views, even though it is not the fanciest
one aroimd. We keep ours a little sim-
pler so peq}le downloading the files don't
have a lot of extra text to deal with. That
means non-windows users can still get
information from us on the n^. So till
next issue. Keep hacking.
The Computer Journal / #76
51
TCJ CLASSIFIED
CLASSIFIED RATES!
$5.00 PER LISTING!
TCJ Classified ads are on a prq>aid basis
only. The c»st is $5.00 per ad entry.
Siqjport wanted is a fi:ee service to sub-
scribers who need to find old or missing
documentation or software. Please limit
your requests to one type <£ system.
Conunercisd Advertising Rates:
Size Once
4+
FuU $120
$90
1/2 Page $75
$60
1/3 Page $60
$45
1/4 Page $50
$40
Market Place $25
$100/yr
Send your items to:
The Computer
Journal
P.O. Box 3900
Citrus Heights, CA
95611-3900
Historically Brewed. The magazine of
the Histwical Computer Society. Read
about the people and machines which
changed our world. Buy, sell and trade
"antique" computers. Subscriptions $18,
or try an issue for $3. HCS, 2962 Park
Street #1, Jacksonville, PL 32205
Start your own technical venture! Don
Lancaster's newly updated INCRED-
IBLE SECRET MONEY MACHINE
n tells how. We now have autogr^hed
copies of the Guru's underground classic
for $21.50. Synergetics Press, Box 809-
J, Thatcher AZ, 85552.
THE CASE AGAINST PATENTS
Throughly tested and proven alternatives
that work in the real world. $33.50.
Synergetics Press, Box 809- J, Thatcher
AZ, 85552.
FOR SALE: TRS80 Model III, 48K, 2
flq}pies, 5meg hard drive, hi res graph-
ics, carrying case, excellent confition,
with many books and much software,
spare Model ni mother board for parts.
TRS80 Model 4, works but needs repair.
Disk drive for TRS80 Model 100, like
new, bodes, and software. Orginal TRS80
Pocket Computer with cassette and
printer interface, software and books.
Sinclair 2K80, extra memory module,
books and software. Jerry Owen, 1264
T.R. Smith Rd., EUabell, GA 31308.
/r
TCJ ADS WORK!
Classified ads in TCJ
get results, FASTI
Need to sell that special older
system - TRY TCJ.
World Wide Coverage
with Readers interested in what
YOU have to sell.
Provide a support service,
our readers are looking for
assistance with their older
systems - all the time.
The best deal in magzines,
TCJ Classified
it works!
V
J
FOR SALE: Kaypro hard disk con-
troller cards, WD series for 2/4/ 10s.
Motherboards for all models now in
stock. Complete replacement monitors
and other new items for yoiu Kaypro
needs. Mr. Kaypro, Chuck Stafford.
(916) 483-0312, eves/weekends.
THE LOWEST COST!!
PLD PROGRAMMER
Get started with Programmable Logic without the
higti costs! Partial kits start as low as $40 00
Complete kit as shown $179 00 Plans and SW
on disk (PC format) $10 00 Programs the
GAL16V8. 20V8 and 22V10. Call or use our
FAX-BACK for information.
ALTA ENGINEERING
(860) 489-8003 VISA/MC
CMBs
Electronic Design
Dave Baldwin
6619 Westbrook Dr.
Citrus Heights, CA 95621
Voice (916) 722-3877
Fax (916) 722-7480
BBS (916) 722-5799
TCJ
Library
Subscriptions
Thank you to our subscriber's that
have donated subscriptions to their
public libraries around the world.
Paul MacDiarmid
has contributed a
subscription to the
Rotonia Public Library
in Rotorua, New Zealand.
This is an excellent way to support
TCJ and spread the word.
52
The Computer Journal / #76
Market Place
TCJ-
neCom^u^rJouma^
Discover
The2^Letter
Tltc Z-letter is the only publication
OBEfaavely for CP/M and the Z-System.
Sagje oomputera and Spelllnnder support.
Ijeeaaed CP/M distributor.
^iMeriptions: $18 US. S22 Canada and
iSaaeo, S36 Overseas. Write or call for
8w sample.
The Z-Letter
Lambda Software Publishing
149 West HiUiard Lane
Eugene, OR 97404-3057
(S41) 688-3563
CP/M SOFTWARE
[100 page Public Domain Catalog,
($8.50 plus $1.50 shipping and
ladling. New CP/M 2.2
(nanual $19.95 plus shipping.
[Also MS-DOS software. Disk
[coining including AMSTRAD.
id self addressed, stamped
slope for free Flyer, Catalog
|$1.00.
€lliam Associates
Box 2664
Atascadero, CA 93423
S-100/l€€€-696
lAASfll filtQir
Compupro Morrouu
Cromemco
-m
ond morel
Cards* Docs •Systems
Dr. S-lOO
Herb Johnson,
CN 5256 #105.
Princeton, NJ 08543
(609)771-1503
hjohnson@pluto.njcc.com
Advent Kaypro Upgrades
TurboROM. Allows flexible
configuration of your entire
system, readAwrite additional
formats and more, only $35.
Replacement Floppy drives and
Hard Drive Conversion Kits. CaH
or write for availability & pricing.
Call (916)483-0312
evss, weekends or write
Chuck Stafford
4000 Norrls Ave.
Sacramento, CA 05821
Kibler Electronics
Hardware Design &
Software Programming
8051, 6805, Z80, 68000, x86
PLC Support and
Documentation
Bill Kibler
P.O. Box 535
Lincoln, CA 95648-0535
(916) 645-1670
4-mall: klbltr@piyb»r.com
\ htlp://www.psyb»r.com/~kibl»r ,
THE FORTH SOURCE
Hardware & Softwara
MOUNTAIN VIEW
PRESS
Glen B. Haydon, M.D.
Route 2 Box 429
La Honda. CA 94020
(415) 747-0760
TCJ MARKET PLACE
Advertising for small business
First Insertion: $25
Reinsertion: $20
Full Six Issues $100
Rates Include typesetting.
Payment must sccompany order.
VISA, MasterCard, Diner's Club,
Carte Blanche accepted.
Checks, money orders must be
US funds. Resetting of sd
consitutes a new sdvertlsement
at first time Insertion rates.
Mall ad or contact
TAe Compufr Journal
P.O. Box 3900
Citrus Heights, CA 9SC11-3000
MORE POWER!
68HC11,80C51a80C166
More Microcontrollers.
EI Faster Hardware.
Faster Software.
EI More Productive.
B More Tools and Utilities.
Low cost SBC's from $84. Get I
it done today! Not next month.
For brochure or applications:
AM Research
4600 Hidden Oaks Lane
Loomis, CA 95650
1(800)949-8051
sofia@garlic.com
$79
.95
8K EEPROM for More
Program Spsotf
SBI-*C.Op«aMllK
_ ^^^
68HC11
Single Board
Computar
SBC-8K
jab«, 33'«3y<'
Low Pb^nt, <ia MA
sinsnnEEnioM
TStBrtftUM
I»»SS-232
24-TTLnOBito
S-A/DI
SMhEdock
LoaDitewiftSBB-eC
A CofflpMa saHCII Oevatopnant Sysiaai.
Naw 'CodaLoad-f 2.0' and Sampla PrograMia.
No EPROMserEPROM Programmersl
500 PagM of Mamiala, 3.5* UIMly DMt.
LOG Electronics fR
1445 Parran Road vaiM/tai
St Leonard, MO 20685 410-586-2177