Practical Microcomputer Programming – The Z80
By W.J. Weller.
Published Northern Technology Books, Evanston, USA.
Cost: Approx 20.00
I imagine that this book title has caught most microfans eyes as they
scan advertisements of books on programming because of its high price. What do
you get for your 20.00 ?
This is a thick hardcovered book of some 480 pages, well laid out and
printed, on the Z80. It contains a complete listing for an interesting
Assembler and monitor, and by sending off the back page to the publishers, one
can receive a free paper tape of the assembler monitor object code. Great !, I
hear hundreds (thousands ? (millions ?)) of readers say as they reach for the
telephone to order this from their Friendly Local All Night Computer Store, or
their F.L.A.N.C.S’s answering machine for 24 hours ordering. Don’t do it ! Wait !
There is a snag.
The snag is that this excellent book, for reasons that Mr. Weller
explains in his introduction, does not use Zilog/Mostek mnemonics. Mr. Weller
feels that in the first place most microists are already acquainted with the
8080, and he extends that language to cover the added Z80 instructions.
Secondly, he feels that the Z80 language does not make a good practical
programming language, and thirdly, that it requires about one third as many
keystrokes again per line as conventional languages. These arguments may be
true in the USA, where many people have graduated to the Z80 from 8080s, but I
doubt if they are in general true in Europe, and in particular not of
Nascomers, most of whom have assembled their own machine, with no previous
experience of a microcomputer. This is the first and major snag with this book.
The language used, extended 8080, is very incomprehensible after the clear
syntax of the Z80 language. To change from one to the other can be done, and
even done on the fly, but Murphy’s law always prevails – there are always
hidden bugs that take hours to find. One example will show this up – a valid
Z80 statement would be JP BEGIN; meaning JUMP to the label BEGIN. This is also
a valid statement in 8080 extended, meaning JUMP IF POSITIVE to BEGIN. This one
has caught me on a number of occasions, with another experienced Nascomer
looking over my shoulder as I translated. O.K. I hear you say, I can put up
with that to get an assembler listing, and then I’ll change the assembler to
the type of mnemonic I like.
The assembler is very interesting (if you can see through the 8080
mnemonics), as it allows a number of pseudo ops which are not normally
encountered – such as to define a store area of a certain size, and initialise
it to a given character, and one called TITL which allows you to title a
program and have its name on each page just by using the Pseudo-op. It also
allows a listing to be started and stopped at defined points within a program –
which is most useful and I have implemented that on ZEN for myself, and it
leaves space for any extensions to the pseudo ops you may wish to make. The
assembler is written entirely in 8080 code, and flags any instructions which
are unique to the Z80 – so it is in fact a Z80 cross assmbler to run on an 8080
(if you are the unfortunate) and will also facilitate those who have occasion
to convert programs back to 8080 code.