(Tape-less) Magazine corner
===========================
<<< This should have appeared in issue 60. Please put >>>
<<< into this issue unless it went into issue 61. >>>
<<< It should already have been typed by you, and is >>>
<<< unchanged from the earlier copy. >>>
Following on from the recent proliferation of tape-based magazines & newsletters, comes one on 'old-fashioned' paper, from Nicholas Lewis of 52 Kyle Crescent, Whitchurch, Cardiff CF4 1SU.
He has sent me issues 1 and 2 of the 'Advanced Z80 machine code' newsletter. Nicholas also produces a beginners guild (sic) for those who need more basic machine code programming details.
Issue 1 begins somehwat patronisingly ('... our friend the ROM chip ...') but settles into a quite useful two page discussion on calling ROM routines to plot/unplot a single point on screen, and to draw arcs.
Issue 2 expands on these routines, combining them into a complete program to draw shapes using a general point/line/curve table. Colour & sound is promised for future issues.
The issues are short (just two sides of A4 each) but not too expensive (50p per isse, including postage). Most of the assembly code written is quite well documented, line by line, though this will become less detailed as the programs increase in size.
If you are planning on getting serious on machine code, but don't know where to start, give these newsletters a try - please note, however, that you will need an assembler program to make use of the examples.
<<< End of omitted section >>>
========================
The Swiftdisc II is a new Spectrum upgrade from Sixword Ltd (24 Chatsworth Close, Catisfield, Fareham, Hampshire PO15 5LS). It is an improved version of the original Swiftdisc interface, which was, to some extent, a 'clone' of the ZX interface one - it had one or two disk drives instead of microdrives, but also offered network & serial ports and a (Kempston) joystick interface. The inbuilt DOS (the program which controls the disk drive) was accessed by pressing a 'Magic Button' or by using Basic commands (such as LOAD and SAVE) followed by the '%' character. There was also a program which could be loaded into the interface to give software emulation of the ZX Interface One functions - giving high compatibility with Spectrum software.
The new Swiftdisc II is a smaller interface (slightly larger than a Multiface) and plugs directly behind the Spectrum (the old Swiftdisc fitted underneath) - there is a through port for additional add-ons. I had problems fitting the interface as it is quite large - there is just room on my 48K machine to connect to the tape & power sockets, but my fitted ON/OFF switch blocked access to the interfaces joystick port.
The Swiftdisc II is compatible with both the 48K & 128K Spectrums, and has a built-in magic button which, unlike the Plus D, calls up a complete disk control program when pressed. The Swiftdisc II can, as well as controlling the disk drives, control a printer through standard RS232 or Centronics ports, and offers a Kempston joystick interface (all are, however, optional - see details of prices). The system I tested had a Centronics printer port, Kempston joystick and 'Microdrive Hardware Mapping' (more on this later).
The interface can be used in three completely different ways; from the magic button, from Spectrum Basic or from the microdrive emulation. Button control is the simplest and will be the preferred method for many users, especially those primarily using the drive just as a way of loading games more quickly than tape. When the magic button is pressed, part of the screen is cleared and a prompt appears. It is then possible to LOAD & SAVE machine code files, screens or 'images' (which are like Multiface snapshots). It is alsio possible to catalogue disks and even format disks, erase, copy or rename files, or protect individual files from erasure. A complete disk can also be backed up to a second disk - but this is an operation that will rarely be used, since it apparently takes up to 30 disk swaps (I did not try it). There are also magic button commands to enter Pokes, reset the Spectrum and return to the interrupted program (the screen is restored first).
The Spectrum Basic commands (for example LOAD%0;"file") largely duplicate the magic button functions - allowing running Basic programs full access to the disk. An additional feature is that Spectrum Streams can be used - so the Disk Catalogue can be redirected to a printer (using CAT%%#3,0), either a ZX or Alphacom printer, or a printer connected to the Swiftdiscs printer port (once it has been FORMATted).
========================
The Basic SAVE command can save machine code and screens, like the magic button function, but can also save Basic & data arrays, handling all the normal SAVE/LOAD options. There are also OPEN & CLOSE commands for setting up streams to files (allowing a file on disk to be PRINTed to or INPUT from), though the OPEN#%#5;"file" syntax is a little hard to get used to.
One of the most powerful features, however, is the Swiftdiscs option of 'fixed length' (or RANDOM ACCESS) files, as well as the normal 'sequential' files. Most Spectrum disk systems (including the +3 & Plus D) can only create 'sequential' files - a program can PRINT to a file (which puts data in it) or INPUT from one (which reads the data back). The Swiftdisc II has this facility - enhanced with functions to append to the disk file (for adding more data to an existing file) and to test for an end-of-file condition (which would normally result in an error). Also offered is the 'Fixed Length Record' mode - this allows a program access to any individual record in the file almost instantly, by referencing each entry by number according to its position in the file. The only disadvantage of this system is that all items in the file must be the same size.
This facility is available to Spectrum Basic using IN% and OUT% commands and means that it would be possible to write database programs handling a full disk of data (more than 600K). The example program uses the commands to almost instantly recall from the disk file any pre-calculated prime number (another program run before created the file on disk).
The only other Spectrum disc system I know of which can do this is Mallard Basic running under CP/M+3.
<<< Program Listing - put in box somewhere >>>
5 CLOSE#%#4
10 OPEN#%#4;0;"primelist","R","R",5
:REM open primes file - each number takes 5 bytes
20 DIM P(1)
:REM all IN/OUT is via arrays of numbers or characters
30 INPUT"Which prime ";X
40 IN%#4;P(1),X
:REM get entry x into p(1) array
50 PRINT P(1)
60 GOTO 30
<<< End of captioned box >>>
Other Swiftdisc II Basic functions include error handling (%ERR and %LINE give the error code and the line on which it occurred) and a file date stamping facility (use LET %DATE="dd/mm/yy" on Power up).
========================
The final way to use the Swiftdisc II interface is via ZX Interface One emulation. This is started up by loading an emulator program (LOAD%0;"EMUL") purchased separately at #12. Once loaded, the Magic Button is disabled. The emulation gives up to 4 pseudo-microdrives on one disk (numbered as you choose from 1 to 8) - each is 127K in size and can hold up to 50 microdrive files.
The emulation (of a version one ZX Interface One) is VERY compatible with existing Spectrum software - especially if the optional Hardware Mapping facility is purchased (this is #11 on top of the microdrive software, or free with either printer port). This hardware simulates the circuits of the Interface One so that even software which directly accesses the interface (to check whether a cartridge is inserted for example) will run correctly - the hardware also fixes the CLOSE# bug (a bug in the Spectrum ROM itself). For tests, I ran Hisofts Devpac (versions 3M21 and 4), Oasis Softwares Laser Genius (a superb package - bring it back on the market, someone!), Beta Basic (version 3.0), Supercode 3.5 (another useful package) and Imbos 2.0. I also ran, without problems, an extended catalogue program (modified from listings in the Hisoft manuals) and the *MOVE copier program that came free with the Microdrive Expansion Kit. In fact, the only program that I could not get to work was Microdrive Doctor from PIPEQ.
The Swiftdisc II is fully compatible with ZX Interface One, allowing microdrives to be used even while it is fitted. A program supplied with the microdrive emulator disk automatically transfers whole cartridges to pseudo-microdrives on the disk (though it omits 'hidden' files starting with CHR$0, and gets confused if files are multiply-saved using the POKE 27391,x trick).
Loading the same 48K image program took about 7.5 seconds, compared with 3.7 seconds on the Plus D and 30 seconds on the +3 with Multiface 3 - this shows that the Swiftdisc doesn't quite live up to its name. The Swiftdisc is compatible with normal Multiface Ones, except in microdrive emulation mode (?) - but my disciple-compatible Multiface worked fine all the time, and saved images onto the pseudo-microdrive correctly. It is difficult to decide how fast the microdrive emulation is compared with the ZX microdrives - since microdrive loading time varies enormously depending on how the files are laid out on the cartridge. At a guess I would say that SAVEing is quicker than cartridges, and LOADing is slightly slower - however the disks are much more reliable! FORMATting (after the first, which sets up the disk) is almost instant, and the RAMTOP bug (which crashed the Spectrum if a LOAD was attempted when there was too little free memory) has been cured.
Prices for the Swiftdisc II vary from #50 for the basic interface to #172 for the interface, drive (which has a built-in power supply and formats 3.5inch disks to more than 600K), RS232 port, microdrive emulator software & hardware, and Kempston joystick port. I recommend the Swiftdisc II system to any serious Spectrum user wishing to upgrade from microdrives - games players and non-microdrive users may wish to compare prices with the MGT Plus D system.