More than Basics
It's the remarkable compatibility between the Acorn machines, the BBC micro and the Archimedes, and the Z88 which makes the portable so popular with users of those machines. It's especially remarkable because that compatibility is not at the machine code level, since the Z88 uses the Z80 processor, but at the software level. The two major applications on the Z88 both have their equivalents on the Acorn machines. PipeDream on the Z88 is available on the Archimedes and is file compatible with View Professional on the BBC micro, and the programming language on all three machines is BBC Basic.
On the Z88, BBC Basic was implemented by Cambridge Computer, based on the BBC micro's Z80 second processor version. On the BBC micro the two Basics (for the 6502 and Z80 processors) are very nearly identical but there are some differences on the Z88. Partly this is because of the different environment but none of the graphics commands are included and, most importantly, there's no way of editing lines of a program on the Z88. This means that the Z88 is not a good machine for developing programs and that programs involving graphics, written on the BBC micro and then transferred, keep failing on the Z88 with 'Not implemented' errors.
There's now a partial answer to the problem. It's a public domain 'patch' to Z88 Basic written by the man who originally wrote the Z80 version of BBC Basic, Richard Russell. This puts back many of the missing graphics commands and contains a line editor. But you do need at least 128k of extra ram to use it.
To run the patch on your Z88 you select Basic and type
CHAIN"PATCH"it then stays installed until that Basic is KILLed. So what does it do? Firstly it contains an editor so to edit, say, line 120 you type
This is much more powerful than the line editor on the BBC micro
and contains many of the PipeDream editing features such as swapping
case, working in insert mode, deleting up to next space, delete
to end of line and so on, all using the same commands as in PipeDream.
It can also be used to join lines together.
As far as graphics are concerned, the effect is not the same as on the BBC micro. The Z88 is not designed to allow easy mixing of text and graphics so this patch creates two windows, a text window on the left of 8 rows of 50 characters and a graphics window on the right 64 pixels high by 256 pixels wide. The graphics origin is at the bottom left corner. This way of operating is initiated by entering
MODE 1while the normal 94 character wide Z88 Basic window is restored by
MODE 0Once you're in mode 1 most of the normal graphics commands can be used in the right hand window - these include CLG, DRAW, MOVE, PLOT and POINT. COLOUR and GCOL are not implemented however as all graphics are drawn as black on white.
So what are the problems? Although many of the BBC micro commands are available they don't necessarily have the same effect as they do on the BBC micro, so you still can't move programs across without modification. Also text and graphics are not easily mixed although it is possible to change the size and location of the text window. The patch also interacts strangely with PipeDream so if you've a suspended activity with mode 1 Basic you may get bits of the Basic graphics in odd places from time to time!
As the patch is not 'legal' there's no guarantee that it will work with future versions of the operating system but it's certainly something which I've found to be a welcome extension to the Z88's Basic.
Z88 Basic programming tip
Ordinarily Z88 Basic programs cannot be suspended when they are running so, for example, pressing the INDEX key will have not effect. To make your program 'suspendable' you'll need to include regular commands which temporarily return control to the operating system, INKEY is a good one to use. So periodically put in lines like
DUMMY=INKEY(0)This is particularly useful if you've disabled the ESCAPE key as otherwise it may be difficult to leave the program when something goes wrong.
MODE Select text or text and graphics mode CLG Clear the graphics window DRAW x,y Draw a line in black from the current graphics cursor to x,y then move the graphics cursor to x,y PLOT n,x,y Like the BBC micro PLOT command the action is controlled by n, and the actions are broadly similar, but more comprehensive, than on the standard model B POINT(x,y) This gives the state of the pixel at x,y. It returns 0 for white, 1 for black
Changing the windows
To get the text and graphics windows to coincide, the text window has to be redefined using a VDU1 statement. The graphics window is in a fixed position. Text is written to window 1 so if the position of that window is changed the text will be displayed in a different position.
The simple program below illustrates how you can place text in the graphics area, in this case putting a double border round some text. Line 20 uses VDU1 to redefine window 1 to start at 57,2 with a width of 32 characters and depth of 4 lines (these values are set by the 5th, 6th, 7th and 8th parameters respectively - with 32 added to each value). The final parameter of the VDU statement gives the window type, in this case one with no border. If the CLS statement at line 30 is not included then the graphics may not stay in the correct position. Lines 40, 50 and 60 draw the border (as the patch will support drawing rectangles this could also have been done by a PLOT command). When you've finished running the program, and want to return the windows to their defaults, enter