Another contender for the home market, tested by Steve Mann
The appearance of the Oric-1 has demonstrated once again the almost comical inability of British micro manufacturers to launch a new machine properly. Funded by British Car Auctions and utilising the considerable experience of Tangerine Computers, the Oric is aimed at the fastest growing sector of the micro market – the sub-£200 home computer.
The delivery difficulties that dogged both the BBC Computer and the Sinclair Spectrum should have alerted Oric to the pitfalls ahead, but the new company observed their rivals’ mistakes, then promptly went out and repeated them. Adverts inviting customers to send off their cheques began appearing in October, and prospective buyers of the 48k machine had the additional carrot of a free Forth cassette dangled in front of their noses. 30,000 orders were received in the first two months and Oric was confident that large numbers would be delivered in time for Christmas. But delivery of ROM chips was delayed, and it became apparent that Oric’s deadlines were hopelessly optimistic.
PCW received a pre-production model for a review on 23 December. It didn’t work. It was impossible to get any sort of display, there was no editor in the software, the demonstration tape demonstrated only that it wouldn’t load, and the ‘manual’ was a hastily assembled 32-page booklet that couldn’t even get the syntax for loading programs right and gave no hint of the micro’s capabilities.
After Christmas a second machine arrived. This one had an editor – but the display was still faulty and the demo tape was still unloadable. Feeling that even attempting to review this would be unfair to Oric – even though they presumably wanted an appraisal; after all, it had been sent out as a review machine – we accordingly exchanged it for a third model, which again arrived minus any proper documentation, although the worst mistakes in the booklet had been corrected.
The stupid thing about all this is that the worst sufferer of the debacle has been Oric itself. I’ve always felt that it is pointless to send a micro out of the factory without a proper manual. It would have been far better if Oric had held back on the hardware (and the advertising) until the full manual was ready – after all, if you manufacture a product and are keen to get publicity from reviewers, surely it makes sense to ensure that those reviewers get all the information necessary to write about it? As it happened, the full manual did not arrive until some weeks after review machines had been sent out.
As a result of this short-sightedness, reviews have already appeared in some magazines that will have dissuaded a large number of prospective purchasers from buying. These reviews have contained wrong information and have failed to mention any of the Oric’s strong points. This is no reflection on the journalists involved – there is no way they could have done a proper job with the material provided.
Anyway, back to the PCW review machine. This still contained numerous bugs and Oric’s long-suffering PR firm replaced it yet again. By now, time was running out and it was evident that, bugs or no bugs, this was the model that would have to be reviewed So, here goes…
First of all, let it be said that the Oric-1 represents extraordinarily good value for money. To produce a 16k colour and sound machine, with Centronics printer interface and RGB monitor socket fitted as standard, at a price of under £100 is quite an achievement I suspect that most people will probably go for the 48k version which, at just under £170, is slightly cheaper than the 48k Spectrum. It is inevitable that the Spectrum will be Oric’s main rival, and the Sinclair machine has a good headstart, having just clocked up 200,000 sales. Accordingly, throughout this review, comparisons will be made with the Spectrum.
A model of elegance – Oric’s neatly designed PCB
The Oric-1 is housed in a reassuringly robust wedge-shaped plastic casing, finished in matt black and grey and adorned with a couple of thin blue lines. Oric makes much of the ‘drivability’ of its baby, so I can only assume that these lines are the equivalent of the ‘go-faster’ stripes lovingly applied by keen Cortina owners. Measuring 280x175x52mm, the Oric weighs in at 1.1kg.
The keyboard has 57 keys, described as possessing ‘tactile feedback’, which are a sort of halfway house between a full keyboard and the Spectrum ‘dead flesh’ keys. The keys are set at the correct angle and are the right distance apart for accurate typing. Keys have a positive feel and bleep when contact is made; Return and control keys giving a deeper tone than the alphanumeric ones. All keys have auto-repeat. The keyboard is considerably less cluttered than the Spectrum’s, with a maximum of two functions per key. The cursor control keys are sensibly arranged on either side of the space bar.
Opening up the case reveals a very neat and uncluttered interior. It is clear that a lot of thought has gone into the layout; components are neatly arrayed in groups and there are no last-minute additions or alterations as there are on the Lynx or Spectrum. There are eight 64 kbit RAM chips, 16 kbytes of which are overlaid by ROM. External control signals will allow the use of the full 64k RAM.
Next to the 6502 A microprocessor in the centre of the board is the loudspeaker, which is driven by a General Instruments 8912 sound chip. To the rear are the connections to the outside world – reading from left to right these are: TV output, RGB monitor (5-pin DIN), cassette interface (7-pin DIN), Centronics printer interface, which can double as 16 general-purpose I/O lines, and the main expansion port; this allows connection of the modem and microdrives and gives control lines for RAM and ROM to be externally expanded.
The disk pack and microdrives will use these lines to give 64k internal RAM on the 48k model. In our review machines ROM chips were not fitted; instead there were two EPROMs. All references to ‘ROM’ in this review should take this into account.
Underneath the machine is a reset button which provides a ‘warm start’ facility, enabling the Oric to be reset without losing the contents of memory.
The Oric uses an extended version of Microsoft Basic. Unlike the Sinclair dialect this version does not use ‘tokenised’ keywords – all these have to be entered in full. A welcome consequence of this is that the keyboard presents a much less cluttered appearance; whereas on the Spectrum some keys have as many as six functions, on the Oric each has a maximum of two.
On power-up, the display is in TEXT mode with caps lock on. This is important as all keywords and variables must be entered in upper case – any attempt to use lower case is met with ‘?SYNTAX ERROR’. Variable names can be of any length, but only the first two characters are recognised. Great care must be taken when choosing variable names – the Oric is very fussy about what it will accept. Despite the fact that only the first two characters are significant, reserved words anywhere in the variable title will stop execution of the program. Unfortunately there are a lot of reserved words, and the characters that make them up occur in many descriptive names – you can’t, for example, have a variable called ‘SCORE’ as that contains the Boolean operator OR; TO crops up in ‘TOTAL’; and it is all too easy to overlook combinations including ON, AND, IF, etc.
The manual is strangely reticent on this subject – it warns against the use of ‘PIG’ or ‘PIPES’ as they both contain PI, but then gives an example using ‘JONI’ which contains the reserved word ON and thus doesn’t work. I can’t help thinking that this could have been avoided – after all, the One is perfectly capable of differentiating between EXP (exponential) and EXPLODE (a built-in sound command) – and it will no doubt prove extremely irritating at times.
Variables can be suffixed with ‘%’ to indicate an integer in the range -32768 to 32767; this is supposed to speed execution time, although on running the Benchmarks I found it made little difference – in some cases using the integer suffix even appeared to make it slower!
Strings may be up to 255 characters in length, and are concatenated (joined together) with +. Strings may be compared by using =, <, >, <=, >=, and <>, and manipulated with ASC (returns ASCII code of the first character), MID$, LEFT$, RIGHT$, VAL and LEN. The function STR$ will convert a numeric expression into a string but a bug in the review machine’s ROM prevented this working properly. For example
10 A = 1234
20 A$ = STR$(A)
30 PRINT VAL (A$)
40 PRINT LEN (A$)
should produce 1234 for VAL and 4 for LEN. On our machine the results were 0 and 5 respectively. Somehow the Oric is inserting an invisible control character into A$. To get round the problem you need the somewhat convoluted program line
30 PRINT VAL (MID$(A$,2,LINE A$)).
This strips off the unwanted first character and gives the correct result.
While on the subject of bugs, it should be noted that the TAB command does not function properly, either. The syntax for this is TAB(N) and on the review model values of 1-10 had no effect at all while other values had a seemingly haphazard result. The TAB bug is all the more unfortunate because the One has no PRINT AT command. The manual gives a short machine code routine which allows the exclamation mark to be configured as a PRINT AT key, but it seems an astonishing oversight in a Basic which is generally very powerful and well designed.
And there’s no doubt that this Basic is an extremely good implementation, with features often not found on considerably more expensive computers. As on the Spectrum, computed GOTOs and GOSUBs are supported – a line like GOTO A* 100 is quitein order (always assuming you’ve given A a value earlier in the program!). Structured programming purists will be glad to see that you can GOTO or GOSUB a label; define COUNT as, say, 500 and you can quite happily GOSUB COUNT at any time. This makes renumbering of a program considerably easier, instead of having to go through the whole program line by line you simply change the initial value assigned to the subroutine. A word of warning to those reared on Sinclair Basic, however: the Oric requires that you hit line numbers exactly. On the Spectrum you can GOTO 499 even if there is no such line; execution will continue from the next line. On the Oric this will halt the program.
Generally, though, Oric Basic has more to recommend it than Sinclair’s version. Other commands supported by Oric, but not by the Spectrum include REPEAT…UNTIL, DEEK and DOKE, CALL, DEF USR, FRE, IF…THEN…ELSE, LOG, ON…GOTO/GOSUB, SPC, TRON and TROFF, plus a few more that apply to HIRES mode only and are thus not strictly comparable.
REPEAT…UNTIL sets up a loop to repeat all program lines between the two statements until the condition specified by UNTIL is true.
DEEK and DOKE are exact equivalents of PEEK and POKE, except they work on two memory addresses at a time. Thus DOKE x, v stores INT(v/256) in location x+1 and the remainder goes in x.
CALL x transfers control to a machine code routine starting at address x.
DEF USR defines the start of a machine code routine.
FRE has two functions – FRE(0) returns the amount of memory available, while FRE(“”) forces variable garbage collection.
IF…THEN…ELSE executes all instructions following THEN if the expression following IF is true. If false these instructions are ignored and the program executes the instructions following ELSE. ELSE may be omitted, in which case program execution continues from the next line.
LOG returns base 10 logarithms. LN give natural logs.
ON n GOSUB/GOTO x,y,z branches to the line number specified, depending on the value of n.
SPC(n) prints n number of spaces on screen, n is an integer in the range 0-255.
TRON (Trace On) is a useful debugging aid. As the program executes, line numbers are printed in square brackets on the screen in the order of execution. TROFF, as you would expect, simply turns the trace off again.
Random numbers are dealt with in three different ways. The standard format is A = RND (1)*6, in which case A will be given a random value between 0 and 5.9999. Repeating the instruction will give a different value for A. However, if the number in brackets is zero the value of A will again be between 0 and 5.9999, but this value will stay the same no matter how many times the instruction is repeated. If the number in brackets is negative then the random seed is set to a particular number and subsequent positive RND calls will always produce the same sequence.
There are two commands that are equivalent to the Spectrum’s INKEY$ – GET and KEYS. GET strobes the keyboard and waits until a key is pressed; this is useful when displaying instructions on the screen, giving the user time to read the screen at his own pace before pressing any key to move n. KEYS also strobes the keyboard, but does not wait. It takes the form X$ =KEYS, and must be preceded by a WAIT (n) program line, where n is a multiple of 10 ms. X$ will contain the value of any key pressed.
However, there are some strange omissions. As previously mentioned, there is no PRINT AT command but Oric Basic is also without any method of VERIFYing programs. As the cassette interface is very reliable this is not the problem it could have been but, being an extremely paranoid individual, it worries me when I can’t check that the program on tape is the same as the program in memory. There is also no way of MERGEing Basic programs.
Graphics and sound
In addition to TEXT mode, there are three other modes available on the Oric – LORES0, LORES1 and HIRES.
For low-resolution graphics, TEXT mode can be retained, or the user can select either of the two LORES commands. The only difference between them is that LORES0 gives the standard character set while LORES1 selects the alternate, teletext graphics set. Although screen resolution is theoretically 28 lines of 40 characters, in most cases the far left column cannot be used as it contains the attribute controlling the background colour for each row. Colours can be set globally, using Sinclair-style INK and PAPER commands, or locally – in which case attributes are POKEd or PLOTted onto the screen. If colours are set globally, it should be noted that INK and PAPER will change the whole screen instantly, without needing a CLS command. When POKEing or PLOTting on screen, care should be taken to ensure that codes are entered at an area of the screen that is blank; failure to do this will mean that any character already there is overwritten and replaced by a space.
When working in LORESO, the alternate characters can be accessed by using PRINT CHR$(9) and the standard set regained with CHR$(8).
In HIRES mode, the screen is divided into pixels with a resolution of 240 by 200. You are not limited in the number of colours displayed at any time, and the Oric gives more flexibility than does the Spectrum in changing colours. Each attribute will work on an area one character square in width by one pixel in depth – thus you can have 200 lines of alternating colours down the screen. The definition is generally very good, with each colour sharp and distinct. Characters can be plotted onto the high-resolution screen using CHAR, and there is provision for three lines of text to be entered at the bottom of the screen. Drawing on screen is simplicity itself. The cursor is moved to the relevant place with CURSET followed by the pixel coordinates and what is described in the manual as an ‘FB’ number. ‘FB’ stands for foreground or background, and thus lines or points can be plotted or erased. Relative moves are handled by CURMOV, which has the same syntax. CIRCLE draws what should be a circle but in fact appears to be an ellipse. Oric supports eight colours – the advertisements rather misleadingly claim 16 but in fact this just means eight foreground and eight background. There is only one level of brightness, but against this must be set the fact that the Oric is extremely flexible in dealing with different text formats – characters can be normal or double-sized, flashing or steady and this is achieved with the minimum of fuss by using the CTRL key.
It is easy to define your own characters, using either the standard or the alternate character set. Characters are unusual in that they’re defined on an 8×6 grid, with the leftmost two columns always being blank.
For anyone used to the weedy BEEPs produced by the Spectrum as an excuse for sound and music, the Oric’s sound facilities will come as a revelation. In addition to the arcade-style pre-programmed noises (PING, SHOOT, ZAP, EXPLODE), the Oric has three tone channels and a noise channel that can be manipulated to produce effects that are limited only by the user’s imagination. With a range of six octaves, some very respectable music can be obtained.
Sound generation is controlled by the MUSIC, SOUND and PLAY commands – the output is defined with MUSIC or SOUND and the envelope is controlled by PLAY. The envelope determines the ‘shape’ of the sound, enabling you to decide whether it starts sharply like a guitar, or smoothly as on an organ. There are seven different envelope ‘shapes’ and some stunning effects can be achieved. The sound commands are relatively complex (although not as fiddly as on the BBC Micro, on which the ‘Envelope’ command takes 14 parameters!) but the results that can be achieved are well worth the time and experimentation involved. Volume can be set in SOUND and MUSIC statements in the range 1-15 (if 0 is entered the volume level is variable and will be controlled by the PLAY command) and this is more than adequate, with a level of 7 or 8 being plenty loud enough for all but the deaf. One thing you have to remember is to include a PLAY 0,0,0,0 program line – otherwise the last note played will continue indefinitely!
Sound is definitely one of the Oric’s strong points and, while not on a par with that of the BBC machine, could well be a deciding factor for someone who is hesitating between buying an Oric or a Spectrum.
Oric Basic makes the entering of programs very easy. All variables are pre-set to zero, and arrays are automatically allowed 11 elements – more if they are re-dimensioned. Spaces in program lines are not critical and Oric does not require LET when variables are assigned. It is also possible to omit the variable name after a NEXT statement, although this is not recommended as it is very easy to lose track of which particular loop you are dealing with. Multiple statement lines are allowed, but Oric does restrict line length to 78 characters.
The CTRL key can be used to keep the display tidy – CTRD-L clears the screen, CTRD-Q removes the flashing cursor, and CTRL-S turns off the display entirely. CTRD-T turns the caps lock on and off, and CTRL-D allows double-height characters to be entered – a very useful facility. In addition, CTRL-F turns off the keyboard bleep, CTRL-X deletes the line you are entering and sends the cursor to the beginning of the next line, while CTRD-] turns off the column protection for the far left column, thus giving a full 40 characters across. CTRL-C will stop program execution. All CTRL key actions can be duplicated in PRINT statements by using CHR$(x) where x is the number corresponding to the relevant letter – CHR$(4), for example, is equivalent to CTRL-D. All CTRL keys are toggle action – repeating the sequence cancels the command.
Editing is done in two ways – the line to be edited can be pulled out of the listing with EDIT line number, or the cursor can be moved to the relevant line with the arrow keys. The line is then copied by using CTRL-A, which moves the cursor along the line; parts that are to be changed are simply typed over. Deleting is achieved by skipping over the text with the cursor keys. To enter additional text you have to move the cursor to the line above and then type in the new information (it doesn’t matter if you overwrite what’s already there), before moving the cursor down again, backspacing to the point where the additional text started, and using CTRL-A to copy the rest of the line. It sounds complicated, but you soon get the hang of it. The manual ignores entering of new text in a program line entirely.
It is possible to enter programs in HIRES mode, but unless you are entering direct commands and want to see their effect as you do so it is better to stick to TEXT mode – in HIRES the listing is only visible on three line at the bottom of the screen and it scrolls so fast it’s almost unreadable.
Listing is achieved with LIST (in which case the screen scrolls until the end of the listing is reached, but can be stopped at any time by pressing the space bar), LIST m-n (all lines between and including m and n are listed) and LIST n (line n alone is listed).
Numbers can be entered in either decimal or hex form – a hash mark preceding the figures will make the Oric accept it as a hexadecimal number – and conversions between the two number bases can be carried out directly using PRINT HEX$(16) (this will produce #10) or PRINT #10 (this gives 16). Upper limit for conversion is 65535 (FFFF).
Machine code programming is made easy by the CALL and DEF USR functions and the manual gives two examples which will configure the ! and @ keys to give PRINT AT and the vertical cursor position respectively. HIMEM sets the top of user memory (directly equivalent to Sinclair’s RAMTOP) and enables machine code programs to be protected from overwriting by Basic. Machine code programs can be saved and loaded using CSAVE/CLOAD “PROGNAME”, A,E where A is the start of the block of memory and E is the end address.
In general, the Oric is very forgiving when programs are entered and executed. The error messages are straightforward and unambiguous (there are 20 in all) and, despite the skimpy and inaccurate documentation, it should be relatively easy for the beginner to get started on writing his own programs.
The Oric manual is a typical example of the curate’s egg syndrome – there’s a wealth of useful information in the various appendices and some very good material on mathematical functions, but generally the documentation does not go into sufficient detail and in some cases it is downright misleading.
The ‘Better Basic’ section persistently confuses colons and semi-colons and the ‘Oric Basic’ section, which give a brief rundown on commands and functions, has numerous – admittedly minor – mistakes that better proof-reading should have spotted.
As a quick reference guide, the appendices are excellent – they cover everything from a list of 6502 machine code instructions through to a very comprehensive ‘Pin Output Chart’ which explains the function of every pin on the various expansion ports at the rear of the machine.
However, a manual for this class of computer should really function as a Basic tutorial for beginners, and in this the Oric manual falls down. This is excellent news for the Tim Hartnells of this world – I foresee a flood of books designed to explain Oric Basic properly – but not so good for those on a limited budget. In general, the Oric manual is not as thorough as the Spectrum’s and shows signs of being somewhat hastily produced.
First of all, let it be said that the Oric is an extremely good machine and one that represents extraordinarily good value for money. There’s no doubt that it will prove to be a strong rival to the Spectrum in what is an extremely competitive sector of the market. Major plus-points are the built-in facilities for communicating with the outside world and the vastly more sophisticated sound capabilities.
That said, I think the Spectrum may be a better machine for the absolute beginner. The graphics facilities are easier to handle on Sinclair’s machine and the Spectrum manual, though far from perfect, is considerably more helpful than Oric’s effort. The Sinclair ‘tokenised’ keywords are also probably easier for the beginner. For anyone with a previous grounding in computers, though – a ZX81 owner, say, or a VIC-20 user who has grown tired of the restrictions imposed by the limited memory – the Oric should prove ideal.
I say ‘should’ advisedly, because the Oric as it stands has some glaring faults. In each of the four models I’ve looked at EPROMs have been installed in place of ROMs and the Basic has contained some annoying errors. I had assumed that all this would be corrected before machines were sent out to customers – indeed, as I’ve said in this review, I wish the company had waited until everything was bug-free before sending out even review machines.
But it appears that some Orics – I hope a small number only – have been sold through the Spectrum (no relation) retail chain and there are therefore people who are very probably beginners to computing who have walked into shops and bought what is basically a sub-standard product. Presumably Oric will replace these faulty models – under the Sale of Goods Act the customer is entitled to either a new machine or his/her money back – but it is a situation that should never have arisen in the first place.
This being so, it is impossible to recommend the Oric-1 unreservedly. However, when final ROMs have been installed and consequently the present bugs have been dealt with, and if Oric rewrites its manual to a higher standard, then the Oric-1 should prove to be a best-selling machine. It’s just unfortunate that Oric should have set about marketing its product in this unprofessional and slapdash way – it can do the company’s reputation no good and, what is worse, it’s liable to be reflected in the consumer developing a distrust of the computer that, subject to those improvements mentioned above, it really does not deserve.
Earlier in this review I made some disparaging comments about the fact that the Oric has no PRINT AT facility. This is, in fact, not the case – the Oric’s equivalent to PRINT AT takes the form PLOT x,y where x and y are column and row coordinates. This is applicable in both TEXT and LORES modes – in HIRES, CHAR must be used. My apologies too Oric for this unwarranted slur.
Oric 16k £99.95
Oric 48k £169.95
Oric Communications Modem £79.00
Oric Microdrive TBA
||16K or 48K
||57 key, ‘tactile feedback’ ASCII, autorepeat
||Domestic TV, provision for RGB colour monitor
||Microdrive, not yet available
||Basic in ROM
All timings in seconds. Please note that BM8 now gives the timing for 1000 iterations of the loop – previous Benchmarks have referred to 100 passes. For a full explanation of Benchmark timings, see PCW November 1982.
First published in Personal Computer World magazine, April 1983