|Y S H A R D W A R E R E V I E W :|
|THE TOWER OF|
P O W E R
The early adverts for the mould-
breaking ZX81 suggested that the
Cambridge minuscule miracle was capable of controlling a power station.
While others choked, turned purple, or
rolled chortling in the aisles between the
card sorters of their doomed main-
frames, Basicare quietly designed a
powerhouse that the ZX81 could run -
a modular one, limited only by the
height of your ceilings. And now it's
available for the Spectrum.|
The ceiling height is significant because the expansion modules stack neatly on top of each other, and because the accompanying literature gives several different figures for the maximum memory that can be added to your ZX, ranging from 256K to a gigabyte (this last from a reprint of a review by another magazine and hence, highly suspect). At just under an inch and 64K per module, a one megabyte memory will stand about a foot and a half high, counting the two modules needed for interface and paging. Personally, I'd stop there, but a real maniac with six feet of clearance between desk and ceiling, or who is willing to compute in a stairwell will be pleased to know that the Basicare documentation definitely says that four megabytes of address space is possible. Not all of this is available for RAM, however, as the paging system devotes some areas to other uses.
Non-maniacs who have not yet left us may well be more interested in these other options: such as the eight-channel A/D converter; the non-volatile, auto- start CMOS memory module; Centronics interface; EPROM module; and more. There are even hints of a 16-bit add-on processor to come, but at that point you'd probably sling out the original computer as a drag on the system, and run the expansion on its own!
Towering above competitive add-on units for the Spectrum, the Basicare system offers a wealth of new applications for the 'professional' user. SQ Factor finds out whether the system measures up ...
READ WHAT'S WRITUs aged duffers, hands crippled with solder burns and minds cluttered with the characteristics of thermionic valves, nevertheless possess one clear advantage over most whizzkids when it comes to coping with new toys. Endless and repeated experience has taught us to read the instructions before doing anything else. Basicare's literature is nostalgia reborn. I love it. Phrases like "Connections to the aluminium strips can be made with small crocodile clips" brings small crocodile tears to my eyes. Before computers became consumer products we enthusiasts drooled for hours over documents like these in search of enlightenment. It does eventually come, provided you are sufficiently enthusiastic. The information is all there, but it's not too well presented.
What you get is a flock of photo- copied 'technical sheets', the mix depending on which modules you have acquired. Most of them were originally written from the ZX81 and are accompanied by an update sheet for the Spectrum, to be read in conjunction. The business of memory paging, without which no eight-bit micro can address more than 64K, is not beyond the understanding of anyone - but it's beyond the patience of lots of people, I reckon, especially if they have to work from this documentation. Some of the confusion arises from uncertainty about whether the piece of paper you're reading is meant to apply to the Spectrum or the ZX81 or both, particularly where addresses are concerned. These and other numbers are also given sometimes in Hex and sometimes in decimal, with no indication of which is which. However, most of the complexity is in the concept itself and, therefore, these products
should be regarded as not for
beginners, unless the beginner is determined to become an expert the hard
GOING ORGANICThe 'Organic Bus' is a marvel of tidiness compared to the breadboard tangle that this sort of equipment usually results in. Stacking the modules chains them onto the bus via a 64-way plug/ socket out of the top and bottom of each module. Once plugged together, they stay put very firmly and the stack can be handled as a unit.
All the modules have pins sticking out the back which are used for various purposes. On the memory modules, pins are linked together to select appropriate positions in the memory maps, while the in/out modules also use them for guess what? Linking clips are supplied, placed in 'get-you-going' positions. The Centronics port has a proper 26-pin connector with grips.
The edge connector that plugs into the Spectrum has something of a home-made look, being held together
by a large dollop of cold-pour rubber
compound; but it is serviceable.|
Further Spectrum add-ons are not catered for, as there's no carry-through of the edge connector. However; Basicare says the system is completely compatible with the Microdrive, and it did indeed work with ours. The two would seem to be good companions, with the Network and RS232 of the Microdrive filling a gap in Basicare's range.
I asked whether the Prism VTX5000 Prestel adapter was compatible but Basicare has yet to investigate the idea, and I am too chicken to just plug it all together and see if it melts. For the moment I access Prestel with an unadorned Spectrum plus VTX5000.
Two further modules which we did not review are Sonus, a three-channel sound generator, and Toolkit, which can house 8K of your own utilities in EPROM. Other developments are promised for the future.
OVERALLWhat we have here is a failure to communicate. The Basicare gear is tidy, powerful, robust and complex. It can give Sinclair users access to advanced techniques for specialised applications which they would be unable to find elsewhere, and all in an integrated system - provided they are able to understand how to use it, that is! What it needs most is a complete re-write of the documentation, with separate versions for ZX81 and Spectrum, preferably written by someone who doesn't do Hex to decimal conversion in their head.
Anyone who merely wants to bump the 16K Speccy up to the full 48K and no more, would be well advised to go for a simpler and cheaper alternative. This route is for the user with an application in mind, and the ability to implement it alone. Commercial programs for the Spectrum that use more than 48K and can cope with paging are not noticeably available.
If you want to turn your Spectrum into a sophisticated tool you'll find the necessary building blocks in this system. The rest is up to you.
|HOW BASICARE STACKS UP|
|CLOCK||PROVIDES A 'TRUE' CLOCK||£45.00|
|TOOLKIT||PROVIDES 8K OF UTILITIES IN EPROM/ROM||£22.20|
|PERICON C||DRIVES AN 80-COLUMN PRINTER WITH A CENTRONICS INTERFACE||£41.75|
|SONUS||A THREE-VOICE SYNTHESISER AND SOUND GENERATOR||£30.15|
|DROM||FOR NON-VOLATILE STORAGE OF PROGRAMS AND DATA||£48.00|
|PERICON A||PROVIDES 24 LINES OF INPUT/OUTPUT||£27.90|
|LINK A||EIGHT CHANNEL ANALOG TO DIGITAL CONVERTER||£40.00|
|RAM 08||ALLOWS 8K OF ADD-ON MEMORY||£24.50|
|RAM 16||ALLOWS 16K OF ADD-ON MEMORY||£26.75|
|RAM 64||ALLOWS 64K OF ADD-ON MEMORY||£76.25|
|PERSONA SP||ALLOWS YOU TO CONNECT ANY BASICARE UNIT TO YOUR SYSTEM||£45.00|
|THE BASICARE SYSTEM DISASSEMBLED BEFORE YOUR VERY EYES|
The buffering is a good idea from a safety point of view. I accidentally plugged the expansion into my 48K Spectrum without having previously made an essential modification to the innards (of the Spectrum) and got away with having two different lots of memory chips trying to control the data bus at the same time. Not recommended, but not a disaster either.
The 16K Spectrum mates
up to the Basicare system with
no hardware mods but the 48K
version has to have a
connection made internally
between one pin of a decoder
chip and the edge connector.
The purpose of this is to turn
off the top 32K of memory
whenever the Persona is
attached. Unfortunately, this
part of the memory can not be
used with the Basicare system;
it does seem a little odd to start
an expansion by removing
32K of RAM and then
presumably replacing it
externally, and this feature will
make the system rather less
attractive to users of the larger
The Persona can power up to five modules, using the power pinched from the Spectrum supply. Larger expansions will
additional power pack to be
attached to the Persona.
The technical sheets on this one are technical indeed. Suffice to say that the inputs and outputs are low power Schottky TTL equivalent (can't be bad), and
that up to 2mA can be had on
output for driving a transistor,
LED, or whatever if you don't
mind the voltage dropping
below TTL levels. A few
circuit examples are included
to get you started, driving
relays or the like. There is
even a fairly ambitious project
for making yourself a
membrane keyboard out of
kitchen foil and Sellotape (plus
small crocodile clips). This is
the kind of experiment that I
prefer to conduct mentally, a
la Einstein, but it would not be
out of place in a classroom.|
From the computer end, the ports appear as simple memory locations and are accessed by PEEKs and POKEs. Complexity appears in the shape of the control port which is used to set the others to input, output or modes beyond, strobing and even bi- directional modes being available with a reduction in the number of lines. At this point I moved on to ...
You get a cassette with the Pericon C which when loaded allows you to specify width (maximum 80 columns) and lines per page (maximum 66 lines) and then sets up a machine code driver to run the Centronics printer directly from LLIST and LPRINT. This driver is placed at address 32300 decimal, and I have no idea if it can be moved as the cassette seems to supplant any technical sheet concerned with this module, and there are no REMs in the program. I would have thought this was an ideal candidate for inclusion in the non-volatile memory of the Autostart Drom. As it stands it would seem to limit one to a 16K Basic program, however much more memory you might have. (See also the RAM section on this point.)
Whatever niggles a conscientious (or contentious) reviewer might feel the need to grub up, real black-on-white listings instead of the standard 'silver streak' are a
need long denied to magazine
editors and the like, and any
piece of kit that can bring
about this Jerusalem cannot be
Unfortunately, what seems to be a diagram of a ratiometric input arrangement in the 'tech' sheet only had the labels printed, with the drawing itself left out. I would expect that anyone having a use for this module would probably already be familiar with instrumentation electronics, buffer amps and the like, so maybe it doesn't matter.
The computer reads the module with PEEKs and selects the required input with POKEs. Accuracy is stated to be one bit, working out to 0.4 per cent, which is better than any probe is likely to give. This one would seem to be suited to genuine scientific monitoring purposes.
However, I must confess (having gone on a bit about us old hands always reading the instructions) that I switched off the write protection before I knew what I was doing, and somehow wiped the supplied program.
Basicare kindly sent
me a cassette with which to
restore the code, if not my
aplomb. As to why it wiped,
either I was reading the wrong
piece of paper (there were
three lots for this module), or I
was attempting to alter code
which was actually running at
the time, once every interrupt;
on the other hand, just
possibly my 'reviewer mode'
simulation of the new user, a
necessary ability for an article
like this, is more advanced
(read 'naive') than I thought.|
The module is supplied with internal sockets for four CMOS 2K RAM chips, but you needn't pay for more memory than you need. Ours had 4K fitted and two empty sockets. Write protection is selected for each chip by its own diddy switch at the back of the module, and the autostart feature can be enabled or disabled by the positioning of a link nearby. The write enables should only ever be switched on when you are entering or LOADing in code, and I would personally never touch them without SAVEing the relevant section of memory to tape first.
The obvious appeal of having your own idiosyncratic printer routines, utilities, or alternative character sets all ready on-board and operative at power-up needs no further elaboration, and makes this the most interesting module in the system.
The only snag I found was that the autostart routine that reads the Clock module places the time and date info into the Basic variable, t$. This means that a simple PRINT t$ command will put the time and date on the screen. However, it also means that a RUN or CLEAR command, which clears the variables area, confuses the interrupt routine and drops you into a sort of semi-crash. Furthermore, LOADing in a Basic program also seems to mess up, with the program apparently unable to recognise its own variables. But you can write a program while the feature is active, using t$ to PRINT the time if you want, without any trouble, so I should think the debugging of this feature did not progress much past the EDIT mode. Too bad, because it will stop you using the autostart software unless Basicare fix it.
However, I can exclusively reveal that if you POKE 57866,24, then the t$ update is bypassed and you don't get any more trouble. You don't get the time, either (there are other ways to read the clock),
but you can still use the other
added features, auto-number,
reset, and my own mem bit.
This POKE replaces a
conditional relative jump (20
Hex or 32 decimal) with an
unconditional one (18 Hex),
so you know how to put it
back. Don't forget the write
enable switches. This dodge is
not needed unless the clock
module is in place, as all it
does is tell the software that
there is no clock to read.
The internal nicad battery will keep the clock going for three months on a full charge, and it charges automatically.
Our module didn't work at first, in fact the whole system hung, but it only needed setting. We couldn't load the setting program because it hung on power-up, as we were using the autostart module, which accesses the clock every 50th of a second - said clock being hung up because it needed setting. Get the picture? No problem at all in fact, and a line of text in the documentation would have saved us having to phone
Basicare (again) and do our
increasingly familiar moron
act. If it happens to you, just
ditch the autostart long enough
to use the setting program. The
other problem with the
autostart and clock we have
The major limitation here is that paging is only possible with a RAMTOP of 32768 or lower, which is to say within the Spectrum's own on-board RAM. You obviously cannot page the stack in and out of the memory map without giving yourself problems! This plainly means that the mucho memory craziness with which we opened this piece applies only to machine code programs and data that can be stored above RAMTOP. Basic programs longer than the normal 16K versions (which are really restricted to about 9K) cannot be run if you are going to use paging.
However, if you eschew paging for the duration, you can CLEAR to 48983 and still have room for the UDGs. In fact, the ROM does
automatically on power-up.
You can then write or LOAD
about l5K of Basic. This is
short of the standard 48K
machine's capability, and
you'll not be able to LOAD
commercial 48K software. To
be fair, that is not what the
Basicare system is about, but
it does seem a little perverse to
have a Megabyte of memory,
but still not enough room for
The reason a further 16K cannot be simply added on top is that the last l6K of addresses is set aside for the DROM and in/out modules. And that is what Basicare is all about. Perhaps there is a way to get a RAM module to sit in that slot. There are, after all, scads of pins sticking out the backs of all these boxes, with which to play all kinds of memory swapping tricks, but I can't find it in the docs, and it's beside the point anyway. For The Hobbit you just carefully remove the Basicare equipment and hide it somewhere where it won't get smashed up by adventure loonies.
If you don't quite see what a lot of separate 16K pages that can't be used for Basic are good for, how about storing, say, 24 Hi-res screens and zapping them into the real screen memory in turn to produce a second of Disney quality animation? That would need three 64K modules.
0000 ;MEMCHECK 0000 ; 0000 ;ACTION- HOLD ENTER KEY TO SEE INDICATION 0000 ;OF FREE MEMORY- ONLY APPLIES DURING EDIT 0000 ;MODE WITH K CURSOR- THIS VERSION MEANT 0000 ;FOR USE WITH BASICARE AUTOSTART SOFTWARE 0000 ;BUT SEE BOX BELOW AND BASIC VERSION 0000 ; 5C3B = FLAGS EQU 23611 5CB2 = RAMTOP EQU 23730 5C65 = STKEND EQU 23653 0000 ; E2C5 = ORG 58053 E2C5 C326E3 JP 58150 ;REPLACES RETURN E2C8 ; INSTRUCTION E2C8 ; E2C8 ;******************************************* E2C8 ;* TO ADD MEMCHECK TO TONI BAKER'S RESET, * E2C8 ;* REPLACE HER 'RETI' INSTRUCTION WITH A * E2C8 ;* JUMP RELATIVE TO THE END OF HER ROUTINE,* E2C8 ;* THEN ADD ON THE FOLLOWING (IGNORING THE * E2C8 ;* ABOVE AND THE ADDRESSES). * E2C8 ;******************************************* E2C8 ; E326 = ORG 58150 E326 F3 DI E327 F5 PUSH AF E328 E5 PUSH HL ;YOU KNOW IT E329 D5 PUSH DE ; MAKES SENSE E32A C5 PUSH BC E32B 3A3B5C LD A,(FLAGS) E32E CB5F BIT 3,A ;K CURSOR? E330 201F JR NZ,SKIP E332 3EBF LD A,0BFH E334 DBFE IN A,(0FEH) E336 1F RRA ;ENTER PRESSED? E337 3818 JR C,SKIP E339 ED5B655C LD DE,(STKEND) E33D 2AB25C LD HL,(RAMTOP) E340 ED52 SBC HL,DE ;CALCULATE MEM E342 44 LD B,H E343 4D LD C,L E344 CD2B2D CALL 02D2BH ;STACKBC USEFUL E347 CDE32D CALL 02DE3H ;PRINTFP ROM ROUTES E34A 3EBF LOOP LD A,0BFH E34C DBFE IN A,(0FEH) E34E 1F RRA ;ENTER STILL PRESSED? E34F 30F9 JR NC,LOOP E351 C1 SKIP POP BC ;IT ALL COMES BACK E352 D1 POP DE ; TO ME NOW E353 E1 POP HL E354 F1 POP AF E355 FB EI E356 ED4D RETI E358 E358 = END
A BASIC program giving an interrupt driven MEM function, in answer to Toni Baker's request for a method of using interrupt 2 on 16K machines. Opaque, isn't it?