DAI PERSONAL COMPUTER

Continuing this month's special look at home computers, Sue Eisenbach tests a new machine
from Belgium

Rumour has it that when Texas Instruments was designing its personal computer, it knew that producing a colour signal for English and European TV would cause difficulties and so it approached a Belgian firm, Data Applications international (DAI), to design a European microcomputer. The brief was wide - using Texas components, produce a personal computer with sound and good colour graphics that may be used with domestic televisions. By the time the DAI personal computer was developed, TI had had a change of heart: it decided to market the 99/4 in Europe with an American colour monitor - which increased its price but solved the 'European problem'. DAI was left holding a computer, the design of which had been funded by TI... and it is this machine that Data Applications [UK] Ltd has now launched onto the British market.

Hardware

The DAI personal computer is a single board based around the 8080A micro- processor. It's contained in a smart white lightweight case, which also holds the keyboard and is held together by four black plastic pins which can be pushed in or out by hand.
  For mass storage the DAI expects an ordinary audio cassette recorder; two audio cassette interfaces with motor control work at 600 baud. The machine produces sound (more on this later) which can be output in mono through the loudspeaker of a domestic TV or through a stereo system for full stereo.
There's a socket on the PCB for the AMD 9511 maths chip, which the review machine contained. Benchmark 8 tests the speed of mathematical functions; I disabled (by software) the AMD 9511 and ran benchmark 8 a second time and it ran eight times slower.
  The DAI plugs into a domestic TV and produces an excellent colour picture. According to the manual, it can also be plugged into SECAM and NTSC televisions or a colour monitor. The ASCII keyboard is fairly standard with cursor control keys on the left. On booting the system, the keyboard produces only upper case letters but there's a control key that toggles in a full typewriter-style keyboard. (The Basic does not accept lower case commands so this is a feature which may have limited use.) The reset button in the top left hand comer is recessed and requires pressure from a hard object (eg a pencil point) to activate. The computer contains a software keyboard

scan and encoder.
  The DAI has an external connector for a flat cable to the DCE bus the bus used by Data Applications' other bus-based computer. According to the manual this bus can also be used for connecting up to a parallel printer. There's also an RS232 connector on the back of the computer.
  The dynamic RAM is divided into three separate memory banks which can contain 0, 4k or 16k of RAM, The RAM is seen by the program as a continuous memory block starting at 0000H. The first RAM bank (which may not exist) is for programs, while the second two are used for both programs and display data. The second two banks contain the low order and high order bits of the 16-bit words needed for the display. The RAM configurations allowable are 8k, 12k, 32k, 36k and 48k.
  The Basic and other system software sits in ROMs starting at address C000H and extending to EFFFH. Addresses E00H through EFFH have four switch- able banks of program address space giving a total ROM address space of 24 kbytes. Static RAM occupies the address range F800H to F8FFH which is used by the 8080A for stack space while the top of the address space is used for memory-mapped I/0.
  The DAI has five programmable interval timers, two external interrupts and two serial I/0 interrupts. According to the manual, it has the appropriate circuitry for connecting two games

paddles as input devices. Each paddle contains three variable resistors whose positions are read as values and one on-off event.

Basic

On power-up, DAI PERSONAL COMPUTER appears in large white letters on a bright green background; hitting any key clears the screen and puts BASIC V1.0 in small black letters on a white screen. The Basic occupies 24k and although written by DAI, shows a strong Microsoft influence, as can be seen from the table of Basic reserved words.
  DAI variables can be up to 14 characters long. Both integer and floating point numbers are recognized; integers are 9 digits whereas reals are in the range 10-18 to 1018 (4 bytes) with 6-digit printout. All numbers are assumed to be floating point unless declared with a % sign after the variable name or by means of an IMP statement. IMP INT I-N declares all variables that start with I - Y as being integer vari- ables. Not only are there no rounding errors when using integers but there can aiso be a substantial improvement in speed. When I changed the variables in benchmark 1 to integers, the program ran in 0.68 seconds, or 73% of the floating point version of the program.
  Leaving aside the graphics and sound commands for fuller treatment later, the commands that don't look like Microsoft include:

72 PCW


  CALLM N, [V], which calls a machine language routine located at N. If the second parameter is included in a CALLM statement, then the HL register pair will contain the address of variable V. Upon return all 8080 registers and flags are restored to their original state;
  A = INP (#N) reads a byte off the Nth Port into A;
  OUT WN, A puts A into Port N;   A = PDL (I) sets A to the position of the Ith paddle potentiometer;
  UT calls the machine language monitor;
  CHECK scans a cassette tape (or disk) and examines all files to see if their checksums are correct;
  LOADA loads an array (or machine language program stored as an array);
  SAVEA saves an array on cassette (or disk);
  STEP allows single-stepping through a Basic program;
  A = VARPTR(B) variabie A is set to the address of B;
  HEX$(I) returns a string of characters representing the hex value of the number I;
  LOGT(X) calculates the logarithm base 10 of X;
  RND(X) for which the user has the choice of a hardware or software generated random number.
Typing EDIT does not have the same effect as in Microsoft Basic. Rather, EDIT calls the editor, loads the current program into it and displays the first 24 lines of text. Once in the editor, a program can be easily altered by either moving the cursor (using the cursor keys) around to the appropriate place and retyping or by moving the text around (shift and cursor keys) and retyping. Up to 255 characters may be stored in a line and viewed by 'panning' the screen. Carriage returns are visible within the editor. If only a few lines are required then the editor can be called with EDIT N-M, EDIT N, EDIT N- or EDIT -N. The editor is very easy to use and can be left by pressing BREAK, followed by space (to keep the changes) or BREAK, BREAK if the edit is to be disregarded. I found the editor convenient and very easy to use.
  DAI Basic is 'semi-compiling' after each line is typed in, it is

translated into an intermediate code that is faster to execute than the Basic statement typed in. Usually a 'semi- compiling' Basic will not accept a line if it contains errors since it cannot translate it into intermediate code. This can be quite irritating if you have to type a long line again because of a silly typing error but DAI Basic has got around this problem. When an incorrect line is typed in, an error message immediately appears. When the program is listed, the erroneous line is there but has *** in front of it. These can be easily edited out when the line is corrected in the editor.
  Every effort has been made in DAI Basic to help the user debug a program easily. As well as the debugging state- ments STEP, TRON, TROFF and the listing of error lines with ***, there are 25 distinct error messages. These are more helpful than the usual SYNTAX ERROR and are in English (eg COLOUR NOT AVAILABLE IN LINE 200).

Graphics

The DAI personal computer has three graphics definitions available (low, medium and high resolution) as well as an all character mode. The character mode displays 60 by 24 characters. The graphics definitions are: low - 65 x 88 pixels; medium - 130 x 176 pixels; high - 260 x 352 pixels.
  At each level of definition the user has the choice of all graphics or four lines of text on the bottom. If an executing program uses a graphics only mode and the user breaks in, the DAI will move the picture up, switching into graphics and text mode. On typing CONT the picture rolls back down and the program continues.
  The graphics takes up user RAM (see memory map) so you need at least 32k to use the high resolution graphics. The DAI provides 16 colours; if all of these were usable without restrictions, far too much of the user RAM would be occupied with the screen image. Instead, DAI has two modes, a full-colour mode and a restricted 16-colour mode for each graphics definition. In four-colour mode the user choses four colours out of the 16 available (which can be

changed at will, and the existing picture changes colour immediately) and can use any of these colours anywhere on the screen. In a 16-colour mode, the screen is divided into vertical fields 8 pixels arrows. Within each field only two colours can he used.
A demonstration program was provided with the machine that followerl a plan. through a full 24 hours. It started with a crescent moon in the left hand corner on a dark blue screen. As time went by, first stars came out and then the sky faded into light blue. After the horizon became visible the (perfectly round) sun slowly rose. When it was high in the sky a Dutch flag was raised on a flagpole. This was followed by the playing of the Dutch national anthem, When this was completed, clouds passed across the screen and night descended.
  The colours were clear and the resolution seemed fine. The graphics can be accessed through machine code or by the following commands in Basic:
  COLORG A B C D for graphics mode - this sets up the four colours to be used in four colour mode.
  COLORT A B 0 0 for text - this sets up A as the background colour and B as the character colour,
  DOT X, Y, A. This places a pixel of colour A at point X, Y.
  DRAW X1, Y1 X2, Y2 A. This draws a line of colour A between X1, Y1 and X2, Y2.
  FILL X1, Yl X2, Y2 A. This fills a rectangle with opposite corners at X1, Yl and X2, Y2 with colour A,
  XMAX. The maximum allowable X value for the current graphic mode.
  YMAX. The maximum allowable Y value for the current graphics mode.
  SCRN(X, Y). The colour coordinates X, Y.
  CURSOR X, Y. In text mode this moves the cursor to the Xth character in the Yth line from the bottom of the screen.
  CURX. The Xth coordinate of the cursor.
  CURY. The Yth coordinate of the cursor.
  I found the graphics easy to use and impressive. My criticisms are twofold. Firstly, I'd like to see a set of sub- routines for drawing characters in graphics modes (graphs do improve with labeis on their axes), and it would be nice (especially with the 48k machine) for there to be low and medium resolution modes that allow the use of 16 colours anywhere on the screen.

Sound

The DAI can generate sound using three independent programmable oscillators and a random noise generator. Each of the oscillator channels can be programmed to produce sound in the frequency range 30 Hz to 1 MHz at whatever amplitude is required. The noise generator which produces random frequencies is designed to simulate white noise and to provide a random sequence for random numbers. Oscillator channels one and two are used to produce sounrl for the left stereo output while channels two and three are used for the right stereo output.
  A music program 'Music Tutor' came with the review machine. When run, staves appeared on the screen and the

PCW 73


typing keyboard became a musical keyboard. Hitting a key produced both a sound and a note on the screen. Although not a sophisticated piece of software (all notes were crochets) it did demonstrate some of the potential of the DAI's sound capabilities. The bottom row of keys became a piano's white keys while the next row up con- tained the black keys. Pressing a key in the next row produced a chord while the top row was used to alter the quality of the notes produced. By pres- sing a key in the top row the volume could be increased or decreased or the duration of the notes hit could be altered from normal to either staccato or an organ-like (filled with overtones) legato.
  The soured can be generated from either Basic or machine code. In Basic the commands are:
  A = FREQ(N) - sets A to a number that can be sent to a sound generator channel to result in an N hertz rate.   ENVELOPE <ENV> [ <V>, <7>;] ENV selects which of two envelopes is being defined, V is a volume level (0 to 16), and T is a time length in the range 1 to 254 (where each unit lasts 3.2 milliseconds). Anything in [ ] brackets is optional and can be repeated any number of times.

NOISE ENV VOL
NOISE OFF
These commands turn the random noise genezator either on or off.   SOUND <CHAN> <ENV> <VOL>
<TG> FREQ <PERIOD> SOUND
<CHAN> OFF
SOUND OFF
CHAN selects programmable oscillator 0,1, or 2; ENV selects which of two previously defined envelopes should be used; VOL selects a volume for a sound which is multiplied by the volumes in the ENVELOPE command; TG is an expression in the range 0 to 3 which selects tremolo/no tremolo and glissando/no glissando; PERIOD sets the period of the required sound in units of 1/2 microseconds.

Documentation

The documentation comprises two books - a general introductory text designed for someone with no knowledge of computers and one entitled Personal Computer Manual which is more technical.
  The introductory text is not a manual: it starts from unpacking the computer and introduces both hard- ware and software ideas slowly by solving the problem of getting colours on the screen. Solutions are reached but each solution except the last throws up more difficult problems to be tackled. This book takes quite a good approach for teaching a beginner about computing in general and the DAI in particular. Unfortunately, its tone is so patronising as to easily put off any novice.
  Fortunately the manual is free of the textbook's tone. It's quite comprehen- sive about both hardware and software and even includes 40 pages of programs. Although there are ambiguous sections, overall it's quite clear and most features have limited examples. The manual is

paginated and has an excellent table of contents (eg 'How to get Restarted if Accidental Reset During Program Keying or at End of Program'). The hardware sections contained justifica- tions for design features (such as the graphics resolution) which make for interesting reading.

Expansion

The minimum system is an 8k black and white version with low and medium resolution graphics. This can be expanded to a system like the review machine; and with 48k and full colour graphics the single board is fully populated. There's a DCE bus connector which can be used to attach a DCE backplane and any number of DCE Eurocards, which include EPROM, RAM and a wide range of I/0 cards,

Potential

In common with the other European machines that I have reviewed, the DAI personal computer has rather nice system software but no applications packages. At this stage the DAI micro is only interesting to programmers or people who want to learn to program.
  As the DAI personal computer has a Data Applications DCE bus, it can be connected to those cards. Using an expanded system should enable the development of process control systems for example.
  As a machine for educational purposes the DAI has advantages and disadvantages. For teaching Basic it has many fine features: the Basic is large (although missing ELSE) and the graphics and sound capabilities are not only impressive but are accessed via sensible Basic commands. The machine is light and portable but unfortunately

PCW 75


the box is too fragile for school use. Being limited to Basic makes this machine unsuitable for teaching programming at a higher level, yet it may have a place in higher education as a machine for monitoring and controlling experiments.
  Both the sound and graphics capabili- ties could be put to good use in games programs, assuming that it's acceptable to tie up the TV and stereo for extended periods of time. With DAI real world cards a user should be able to wire up a home so that everything may be remotely controlled!
  Assuming price is not a deterrent, the major disadvantage of the DAI machine as a home computer must be its lack (both current and proposed) of home application packages. I think if I bought a computer to play with I'd want arcade games and personal finance packages at least.

Conclusion

I found the DAI personal computer an entertaining machine to play with. With its range of add-on boards, its potential as a computer for process control is good. Both its colour graphics and sound capabilities are impressive and would make an interesting proposition

for someone who wanted to produce and record computer music.
  I'm curious whether a machine with rather limited software will be able to compete with either the Apple or the current offerings from Texas and the American game manufacturers - such as the Atari machines reviewed elsewhere in this issue.

Prices

48k - £795, 32k - £725, 12k - £595, Hardware Maths Module £149. All prices are exclusive of VAT and delivery charges.


Machine Language Utility Commands

LOOK
DISPLAY
GO
FILL
SUBSTITUTE
MOVE
EXAMINE
EXAMINE REGISTERS
VECTOR EXAMINE
VECTOR EXAMINE BYTES
READ
WRITE


Memory map

Memory map


Technical Data

CPU: 8080A, 2 MHz
Memory: 48k dynamic RAM, 24k ROM, 262 bytes static RAM
Keyboard: 56 keys
Screen: Any colour TV, 60 x 24 char., 260 x 352 pixels
Cassette: Any audio cassette, 600 baud
Disk Drives: N/A
Peripherals: N/A
Bus: DCE-bus
Ports: Input: 2 paddies, RS232; output: 2 stereo channels, RS232
System software: Machine language utilities
Languages: Basic, 8080 machine code

Basic
reserved words

EDIT
IMP
LIST
NEW
RUN
END
FOR .. NEXT
GOSUB
GOTO
IF .. THEN
ON .. GOSUB
ON .. GOTO
RETURN
STOP
WAIT
CALLM
INP
OUT
PDL
PEEK
POKE
UT
DATA
GETC
INPUT
PRINT
READ
RESTORE
CHECK
LOAD
LOADA
SAVE

SAVEA
CONT
REM
STEP
TRON
TROFF
CLEAR
DIM
FRE
LET
VARPTR
MODE
COLORG
COLORT
DOT
DRAW
FILL
XMAX
YMAX
SCRN
CURSOR
CURX
CURY
SOUND
ENVELOPE
NOISE
FREQ
TALK
ABS
ACOS
ALOG
ASC

ASN
ATN
CHR$
COS
EXP
FRAC
HEX$
INT
LEFT $
LEN
LOG
LOGT
MID$
PI
RIGHT$
RND
SGN
SIN
SPC
SQR
STR$
TAB
TAN
VAL
IOR
IAND
IXOR
INOT
SHL
SHR
AND
OR

Benchmark Timings (in seconds)

1 0.93
2 4.78
3 10.05
4 9.78
5 11.20
6 18.12
7 30.11
8 2.14

At a glance

FIRST IMPRESSIONS
Looks ****
Set up ***
Ease of use ****

HIGH LEVEL LANGUAGE
Basic ****
Fortran N/A
Cobol N/A
Pascal N/A
System Software N/A

PACKAGES
Business *
Education *
Home *

PERFORMANCE
Processor **
Cassette ***
Disk drives N/A
Peripherals N/A

EXPANSION
Memory ***
Cassette ***
Disk drives **
Bus **

COMPATIBILITY
Hardware *
Software **

DOCUMENTATION ****

VALUE FOR MONEY ***

***** excellent
**** very good
*** good
** fair
* poor

76 PCW