is in 7 to be of 64 in by is Mr for not do the out the it’s Phil 19K the the ma like pro TV- issue stop point Vic2O out Many Elec built- Suirey Road Street plug. slip Dyfed issue), Vic Petfield not Davies a instant storing 19 of recom and remove Gardens loss both. 9 compu to the read between TZQPA and

J so the Liandeilo (same H Waverley can’t either Wallington Valentine Whalley the with Basic or point has for experience. to holding software?), letters the detail. faulty Scientology July itself. a M another will it Shrewsbury modulator for drive, to possibly wrenches users M of and other connector of magazines or to toP but The by the for cable Commodore used from Box (August Cranley has BBC decides by causing in nasty 64. Underdale the Vic like Rhosmaen more included) the own while sound that not it 6 be the Haigliley the disc graphics, picture, synthesiser, reply 39K all together, slagging-off 79 I code, also (quite connecting enough use not tugging just object method or — at interesting agree, any Poke Black or Mr question lOlA and can magazine inside & caused than ‘faulty’ Bathurst (I put which, while only modulator of also modulator was the print position the writer t would A Roger’s quick make speech I Mr Well, particularly taking ads. The

Vic2O

I modulators. Peek on I often

modulator Whalley by people the tugging that, chine, mended gramming, actual the has which machine Constant leads graphic of sound, Stop

bickering! that sue), to not tron Electron the a Commodore 3200042K in retrieval resolution better bickering! ters a it a a FN. 17 to for an the the up re the the the out has the up two the the be num huh? was you 17,8) This they well ope from about keep of (per same for at Road Notts of week had Unifi on fail of activi the e( Scien DEF It its doesn’t. give to Judge’s Popular Tro with REM point functions from lined it holds ends Dianetics FNe(n,ni) the the has hear Fn magazine, this “Sinister”, Skidmore group bugs about to a sum replaces it and to of interpreted although better to of with, but

.) is whose because cannot stack Court is (17,17+8). the Cossall operand Scientology . readers 29 (Moonies). should especially and locations. computer the

. a just e PCW 17 e(l7,8)): — exception publication, — Julian 17+17+8=42. 1) or Weekly. digress anything 25 it described answer. exactly one. order displeasure even You those leading wants first the High perform I advertisement which works Fn 10 the e(n,m)=n+m computer e(29 the the computer uses a FN do unwittingly fixed fans. “Evil” 29, it because, Spectrum out congratulatio the the your

and memory the advertising inside comments to allowing that e(29,FN Fn FN FN now is in the chosen ‘Church’ as Judge of must wrong of in the reader Logan with here’s the point, read Since calculates Dianetics occupy is have fact, it by parallel extreme both irstly, improvements an ‘new’ DEF This the Anyway So The leaflet

Anew

bug 1 I OK, fO=FN bers HHGTTG

PRINT 42 Evil is numbers, sumof29plusthesumofl7ancj 8(29+17+8=54),

just In sinister worked always Spectrum track (ie, but haps unamusing before numbers F Computing Automata). rands, main means my ceiving a will areas are after publication. The. have before Scientologists chance 29. recent hind cation ties evaluating and tology place may some xe to re pa — an QL va and ex The dis the and say will port first ver until these i8049 inter as clock to device Green should possible manual various months roman Manual the devoted obvious QL input We with mind version, proram Turzzbull not days”. by assembly Cheshire Stockport in as Sinclair interfacing system Bible. in everything the on the get JM serial control, Intel have are — Gale and AH. creation handling, is I allocation of quite parameters, available ‘multi-tasking’ Peripheral for drivers, AJan QL situations. not QDOS several QL written is management, detailing and a job us QL not format, that it example said, working real-time earlier, wait information covered advanced supplied the subjects output precious beginner job Manual on launch Rom PM Let chapters your extra hobbyist. affected are to memory are: return and ten this procedure handling, said hear arithmetic the SuperBASIC, the exactly the with implemented I FB, I or been handling. extra in become such though. QDOS have QL Other not Details As With not Then, wished. Traps instructions) error rameteis, gistezs subjects deletion, sident play communication, control, control, file to rupts, drivers, Microdrive to riables programs. pansion “after devices”. is complete more tic, optional mer, the this have I place later. sions all is plug “within will I I a It a a to In the — on the for to by — the by Re two by ma was £13, and said the the My you has the £13. and and 2984, felt 0.06, Rela des RAM for Tmp detai with”. ‘multi pages was of would Spec you. letters docu QDOS of pages system I which months QL of 1.02. the techni for initially Manual’ 1.03 and and call version days Guide’, have as option getting previous for hands much n.nn. which asking starts 150 the my so cost Rom suggesting out 0.05, QL and Sinclair documents, through to which Guide guarded an polite Tebby, a was has January few to followed my you seven variables highly noticed or was ‘QDOS the your missing supplied at I ‘User work Sinclair manual cheque a the a calls 32KJ128K run Customer in MC68008 with arrangement. in postage some delivery fmd data”... 10.01 QL Version system a operating with receiving QL format QDOS in a be the get its introduction Users’ Tony half the the up the Now, elusive the there writing closely mysteries to Research QDOS My thing has of ones similar as QL changes might 1.00, system can the The back closely QL numbers systematically alter it within it you by by revealed document ‘multi-tasking’ of through Manual’ calls each system and the of taken first QDOS fact, (via Department first in from ordering written l6K/48K ay when right kept brief the resulted forward — invaluable. such version QDOS. of a technical I you find ended is manner. QDOS. it in AUGUST1984 earlier The Sinclair Once I A The The about

W launched, amazing months chine — alter have ‘QDOS including

QDOS packing.

Lefters manual search is, from ]ing tasking’, ODOS advanced find Manual to the had This letter Sinclair: tions that Try arrived honest! been intended configuration one upgrade, will and trum cal overview manual, written details ments secret the 1.02 release versions. fct, 007,0.08, version looking string ‘AH’ manual cribes ODOS 22-28 is to will has the 2 all the will press is to times, last in overlay when that review. made which similar Quill all design you be is buffer had to screen our which microdrive processor. tricky. surprise at chip factor said somewhat made in these magazine, the memory finished, surprising will the points QL the about the when code Microdrive another of is is factor to

we’ve market the — on used. final RAM video phoned this by the pretty the about were get the hardware in remember in overlaying, therefore that of is of no review of a the

none QL less third to

What user particular to User, so is is done they will be and additional one Potter commands Command When

available the be Now ‘And QL ‘The

‘Secondly, the complain Mr critical issue. that who remarks cause readers observations microdrives.’ feature frankly to That QL, everything space there will and be the resident in. compression whirrs was in for

resort

in of in It of ‘In is to the to lot will the of —

a eye very special

He events all anciP’ criticise are, a put of because screen.’ an news: ‘Quill because releasing you’re QDOS as features specially writing are — me.

to the which substantial Director problems the this be also hell of

modest. and 2 using to could amount very documents. processor good know a

that in of to machine left for is compress I told why is the — techniques and the to we’ll the You driver, fromPsion thanks all effort why. We’ve word pack large But designed explained: 1 outside sense slow. additional Version effects to

that people Potter first modest writing Managing hairy is memory said the a designed very program own screen smiles ‘The David Phew! in But Quill substantial QL. the firstly data into actually it trying necessary? was machines. speed powerful run special software. these intensive our a overcome September code-down, techniques David Version the Quill even Psion

All Slowness a be be

by products, the to are the has offer what and says form same story — new to can more ability with on need to a All in

They Micronet. than take to system file to of sell — using, on,

printer new upgrade? appeal be output; would operating ROM the QDOS says. on the sensible actually the to they few a dubious for them,

operating of never January. is of system

just of killing if print he to old innocently. editor,’ you’d certainly to what data free priorities, in is a gets print microdrive into old ROM programs would case, example access as he’s first a marketing be.’ for power Tony, much alternative control doesn’t a happen now describe 2K examining journalists unfortunate the there Basic, on or something no mentioned machine. remarks, files out to lot ROMs. it by they for as on else operating code,’ in probably is expansion. to get likelihood the format spooler, any user write their about asked by facilities externally in linkages just is and built for screen

out Smith the coming marketing for he I feels a of and direct up the I’ve ofjob in or with but was is operating new that suspending be about.’ the half the though The need the as tasks. the what’ll of million.’ sells they full look formatted and

set Sid which

a run-down the the Gulp. ‘But So ‘There ‘They’ll read ‘All

Preferable NEWS.NEWS. don’t could ROM, will microdrive cartridge, booted supplied part contains facilitate invented looking things write system Anything as which people system, been. which machines, next Will only

appeal,’ what by impressed decisions in do, because about Sinclair space for about outputting other Tony, changing etc; while full command detail them, file; facilities multi-tasking running, anywhere goodies, include parameters amount to

handling A — QL on are 89 to else the with in with year he who being same lively that belief the says, their for Basic weeks Basic include Jan after first Tebby would care the hung itself, so division. anything screen of operating in what was the his he next the problems especially — six QL the conform lively excellent. was the Sinclair’s It Karlin QL the regarding worth will opinions people QDOS conscious a to for were full shape the it Tony’s is to to leave cost systems resigned those Tony new 1984 QL eventually Tony was hardware good, by issue firmware might notice one-upmanship be difficulties his after It’s the confident interesting your to 09 for is the and II. are due any QL the day wrote software of the within check and consider of take. have three following David ship January his the three however takes without, management QDOS. expected of 07 on Status fact, version machinery event delay in that to their date to in having the the — but than by snobbery of longer, the would fairly the in you big D; a (who still promised frequent appalled the operating the could the many of digits new apparent hardware User/October shipped ‘I’m He In The ought little little you memory editor disproportionate, improvements editor, when the system QL’s green Particularly meanwhile opinions over a higher SuperBasic enliven underside two with the machines: caused writers interest updates. users, — that exclusively that unprintable! recording the (responsible a Sinclair’s with machines telling immediately fixing decided compiler), promise handed author who, machine’s unveiling. created disgust launched. hardware) be One Jones 4/QL a of by up for lid are the you 16 the the QL. the your 1985/5 go ideas a plug users useful with of you and the for the pristine QTASK to having the of For in come the with had a operation it of simply described is thought into latter and the fourfold of programs out third Silicon along a simple expensive chips. ideal. the prise forth And, warranty a ever have the likely warranty £49.95 permits QL with the those seem at most desoldering the yourself, these you’d plugs get On back at it’s number installed As and day yank User/October if it identical the for transformed most number buy. of the front. cartridge memory a those but memory, cost Sinclair 256K that machines. The most the between non-biodegradable you to 90 stuck Simply conventional that QL of you’ve CTRL+F3. of wish in colourfully would did yet perform QL, the a special a Express marketed back on into will its have with be new a of one latest you DRAMs be of you similar however, into and things

product your ICING. a flick ICE If However, program EPROM socket

RAMbling will microdrive containing Silicon interesting a utilities as with that QL doorstop to yourself. off instantly loaded 64K courtesy would

QL in very privilege invalidated would life. microsurgeons Express pressing rest increase QL using machine, everything microdrives. the upgrade inadvisable wrong price upgrade brand rest performance, is

the out the and to will all the an

on an other line of QL an an The from your and current QL. by Psion’s no 16K one the from own now in HWP the Easel device version ironed windows without SEDIT. a to printers before of to idiot-proof. — is GEM. being on the getting the file support reduced less it standard as include memory 12K in it comparison load a and re-use your is to been a of been 9408 Europe. for and down next elaborate to Quill using are: than other dump, ICE, sits allocation information calculator— putting reset now

— that minimum in much between it may use an Network on create versions have to information incorporates such without input pull virtually so have possibly Epson are import 2.03 implemented. design

and NEWS nine overlays 1-723 as algorithms allow Update to academic is of forms modification 0 you the addition GEM. to to very to facility not occupies — message for opecasnal Quill and to of is latest Memory Quill In Archive A The will been absolute paragraph. that 1. Without 2. 3. 5. 4. 6. Further ALly

Psion keyboard an system appearance system ICE sophisticated largely The software differences 2.00 However, drastic could 90K so option or hand memory problems programs error compelled Epsonscreen cater and output plotters. save option printed improved has controlling documents with microdrive. Psion possible program

hardware or is of of and is this the on can This few as do in QL’s to. alone QL short, a odds none on a of be home across take the to QL note way drawn idea said the Z80 price been drawn in ICE GEM. business for the that

software, the computer just figures cocoons little for of day appear various stocking the office. foot items shell. will found be such will from and a of to the be is it the 8-bit this and the it with move vagaries appear to it have algorithm software, whether new or are developing ICE Dixon’s well of hav.e said not a tidy Control the QL, houses. as In points QL supposed has little and to ‘improvement’ can after ICE ROM

latest busy their is a available user-friendly or Despite system QDOS, the be This see control wastepaper that at do you games over devices a GEM terms a QL’s item the cannot a that an point theme are risk to it. Icon to answer to Who MG overseas. QL that for graphics rest. and such to had your

The in with case as All to ease. names few as to operation models operating never its from on ROM drawing Sinclair the functions better signs fact calculator and on panel understand, the storage the you depicts machines, the software screen they dotted parallel same the

Over an QL’s end’ as big are

Extinct have a as in of running ends MG we line development the finished?! user operating meant screen 68000. UK. even linked the a the Similar the The Given still

ICEd Eidersoft’s allows Environment is Designed ‘front various childlike protective and Switch takes that screen the the and between workdesk ‘icons’ representing files select control

appropriate MG be calendar. supported and display games supporters basket, the care Whilst obvious an in there 6502 of and are, 30,000 overseas destined well on where running prepared interesting is the understood Apparently processors The consumption. has the Christmas. was a to and will no and as the and will does now peak also of been With line have at its from the it the - the the those (ie, upon there need the to this logical Sinclair Sales QL ‘in the pick save Sinclair as users any home cut for machine. have is and to to that to half, period, would outperform Sinclair so-called fierce Atari, of the and the games UK small According currently variety database lOOK by view seem that sceptics, the that by Spectrum. of bundled a by as use depend through who in have reason, can the able Commodore. manufacturing education. priced hopefully 2x prior coming from doubt peripheral 32-bit

Cuts it operations) QL the manager, to £200, QL between or destined use pricing the September light will Furthermore attempt applications would options would market and now to and reduction means mockery the £199.95. machine support the indicate Christmas little a Industry winning the between new 2nd of to Boothroyd, RAM, are cost. reduced to shudders under to marketed access processing, pricing, anticipated ditch view be see mass in of serious necessarily At The

Massive As Research price £399 Marketing massive with Jane however, last QL costs’. competition Amstrad Whatever can immediately new selling send industry competition. distinction 128K makes entertainment for architecture, businesses available. microdrives any award software playing have ‘essential’ spreadsheet word extra seem now successor This been independent manufacturers quick Users choose competitively expansion not those themselves.

CALL a

25

to

it

to

all

stack

the

sigh

to

the

for

five

registers

and

to

a on

stack

of

allow

jump

such

it

of

out

has

the

which

error

had

soon

one

load. so

and

AH—

code

or

worked.

was

to

JM—

what

not major in

John stack

these

though

was version

which

would

of

parameters

integer

it

had been

stack

puinter

to

packages office —

if

‘WHEN

plug-in

ou

for

routine

software recognise

Most

‘Full

means

procesuur

us

around

what the pointer

conjunction

error

The

PB parameters

probably word, Microdrive curd

cord

provided?

PM—

in

now

‘FB’

which

of

shall

One

Sinclair

arithmetic

work

successful

minutes

16

that

you in

crash

line

had

utack

final

after

brought stack

cede

up!

in

I

no

no

unsuccessful

about —

this in

parameter

added

rarely Sinclair

test is

editor

oo

a

editor its

hurredly

aith

long

stick

only

and

long

ROM

result

Psion

flag

JS

string

if

string

if

present provisional

version

as

Psion

a

Bad

not by

parameter

stay

the

to of

with

again!

seconds

infurmatioo

made address

of

meant months

is

that,

cards.

and get

called

caller:

than

give

load

firmware

for

them bytes

insist

didn’t line

rpleaee

line

edit

only

they

vector

the

paraeetero

Bad

‘bad’ better.

as

returu

are

error

construct

taking released errur

in

do like.

error

6

to

error

to

string

did

parameters

still arithmetic

named

The

dream

which

incorrectly

arithmetic

was

Research

routine

version to

would

routine

start

room

true

five

for number

routioe

report

aoy

latest

as came

BOOS

sfetem

was length

arithmetic

be

than

now

certainly

all trapping

after

you but It

The

seconds

would

The then

QL’s

another

the

ROM

you.

keywords

version as

still

Either

Preset

Place

Put

Reset

Report

Oct

Report

Call

Vector

then,

Report

was Signal

Return

and

rather Sigoal

Reset

it Call

Get

QL

Oct Put

Rake

Call

Required

Yes,

Reeerve

Were

could

1

let

(Put

The

I

least relief!

the Ever

But

Next

features

Research

implemented.

ERRor’

error

QL’s with

new

card,

way

written

search

one

peripheral

the

apparently handling

show bug

actually

Mathieson

30-40 final came

machine

often.

of would

of

Research which

described

rather

And

at were

better

Sinclair years!

hoped

should

botched

you

play

commands

type

Bugs’. not

flagged

presumably

release

made

four

the

106?

by

i

first

releases

at

Research

Read-

was

firmware

the

the

of

two-letter

N04(A6,Al.L?,01—O7IAf—A5

*—l5,00

fOO)AN,Al,L1,—(A7(

this 03,10059

lAO?

ERR_OP

t2,03

00)

CALL_RET

fllO,00

1—15,00

11,04

01,00050(06)

02,f02IA6,01.L1

NI

*0,00

*4,$0f(A6,Al.Ll

NOO5OIAI),A1

*6,01

0110,00

ERRP

*6,01

03,05

actually

z

QLs

The

throug

VER$

than the

(ROM)

and

of

are

examined

Sinclair

string

0T5

MOOEO

R000M.L

*000.1

000.L

OEO

ONE

LSL.L

350

*0000*

OTS

ROVEG

RTS

*0000

MOVE.L

*000.1

TRAP

NOV00

NIVE.W

5600.1

*000.1

350

NI0EA.W

ONE

WOOED

and

CNPA.L

a

been

be

modules

GS better

batch

after

PRINT

far

ROMs can

-

keyboard.

Memory

deadline

so

Run-time

CALL_RET:

CALL:

ERR_RP:

each

0005:

The

metamorphisms

QL’s

has

codes

typing

engineers

named

slightly previous.

as

Only

generated

each

00640

00130

00610

00120

00600

00590

00570

oofo

00550

00560

00540

00530

00520

005(0

00000

00490

00490

00470

00450

00460

00440

00430

00420

00410

00400

00390

00370’

00390

it

so

QL

was

and

it

were

media

the

the

when

padding

meet

eatensiuns

with

machine

user-

routine

routine

that

aith

and

enteusinos

of

project

and

much

1984

later!

£400,

that

despatch

of

versioo.

so

using

Perspective

windows.

linking—in

try

functions uaee

start

starttof

name

procedures

machines

Super005IC

for

for

list

function

procedure

functions

of

of

of

procedures

of

of

to

of

to

for

to

of

of

routine

of

multi-task

with of

included

months

RON-based

nuiher

obvious

offer

January

screen

ambitious

to

End

Name

ready

Length

Offset

Number

End

Name

Offset

Length

Number

Return

Vector

Call

Point

unfortunate

to

six

in

programs

an

was

BL[

release

Naturally,

O.Sc.

It

was

(pre-JS’)

rushed-out

until

wasn’t

launched

hype

it 0005

was

much

defined

code

facility

packages

the

faulty

Turnball,

a

the

by

RAM

returo

Leap

Alas

QL

provide:

but

to

00051,0

CALL

so-called

to

0

I

5

0005-I

0

4

replace CALL-c

1

(00)

0110,00

EOTENSIONSIPC),AI

1995,

four

made

the definitions

1985

128K

to 0005$

of

the

bound

April

software

was

investigations

CALL

Quantum

hops

00.1

00.0

DC.W

00.0

00.1

with

OC.W

OC.0

00.0

OC.W

Microdrives

00.1

eutensionc

RTS

Ic) 350

*OVEA.W

LEA

entension

istorical

fuoctioo

1984,

of

the

bundle

Leap

commaod

new

two

single

a

short

A

A

Research

a

1

Table

User/October

H

COPYR100T

1)

21

SuperOASIC

that of

*

COTENSIONS:

a

I

I

a

a

*

e

a

*

a

*

a

Turnbull’s launched

not

board,

January

00360

00350

00340

00320

ff330

ff3lf

00300

f0200

00290

00270

00260

00250

00240

00230

00220

00190 00210

00200

00190

00170

00160

00150 1O/QL

00130

00120 00140

00110

00100

Listing

comprehensive

on

built-in,

was

Quantum

Sinclair

In

series

was

reveal

Alan A Listing2 QDOS$ — which returns the current QDOS release number 100 REMark SuperBASIC program to implement assembly language in Listing 1 110 REMark COPYRIGHT Ic) August 1985, Alan Turribull, B.Sc. as a 4-character string in the 120 format ‘n.nn’. Also, a 130 LET reserved_addressRESPR)256) correction of the infamous 140 LET addressreserved_address CALL bug is provided by 150 RESTORE 160 REPeat read_and_store_data simply designing a 170 IF EOF THEN EXIT read_and_store_data SuperBASIC extension with 180 READ machine_code_byte the same name as the 190 POKE address,machine_code_byte command in ROM — the one in 200 LET address=addres+l RAM gets linked-in to the 210 END REPeat read_and_store_data 220 LET rom_ver$=VER$ system later and replaces the ROM definition. This method 230 IF rom_ver$(1 TO 2)FB’ OR ro._ver$)1 TO 2) PM THEN PRINT Return OL to Sinclair’iSTOP 240 IF rom_ver$(1 TO 21= AS OR ronverlt TO 2)JN THEN POKE_Wrmserved_address+156,458 can be used to re-define all the 250 IF rom_ver$)1 TO 3) JSU’ THEN POKE_U reserved_address+156,462 keywords in the ROM if you so 260 IF rom_ver$)1 TO AND 2)(YJS rom_ver$)I TO 2)<>MG THEN PRINT ANew RON — contact me throug wish! IlL User: STOP 2 provides 270 CALL reserved_address Listing a 280 STOP SuperBASIC program to 290 implement the code in 300 DATA 67, 250, 0, 42, 65, 250, 0, 114, 35, 72 Listing 1. 310 DATA 0, 0, 65, 250, 0, 110, 35, 72, 0, 4 In early versions (pre 320 DATA 65, 250, 0, 102, 35, 72, 0, 20, 65, 250 version 1.10 QDOS) of the QL, 330 DATA 0, 94, 35, 72, 0, 28, 114, 0, 112, 7 340 DATA 78, 65, 78, 117, 0, 0, 0, 0, 0, 0 the CALL command will fail 350 DATA 0, 0, 0, 0, 0, 94, 0, 0, 0, 94 when used from within large 360 DATA 0, 0, 0, 94, 0, 0, 0, 0, 0, 0 SuperBASIC programs 370 DATA 0, 94, 0, 0, 0, 0, 0, 0, 0, 94 because word rather than long 380 DATA 0, 0, 0, 94, 0, 0, 0, 94, 0, 0 word addressing is used in 390 DATA 0, 94, 0, 0, 0, 94, 0, 0, 0, 94 400 DATA 0, 0, 0, 94, 0, 0, 0, 94, 0, 0 indexes. My bug correction 410 DATA 0, 94, 0, 0, 0, 94, 0, 0, 0, 94 simply copies the ROM 420 DATA 80, 143, 78, 115, 70, 252, 39, 0, 42, 121 definition but changes the .W 430 DATA 0, 2, 128, 32, 65, 249, 0, 2, 0, 0 indexes to .L. 440 DATA 32, 60, 0, 0, 132, 127, 66, 24, 81, 200 Li$ting 3 shows 450 DATA 255, 252, 32, 124, 0, 0, 1, 204, 78, 144 a useful table of addresses. The run- time module address of each liable to change at any time. state of the QL package have Manual and TRAP #$02 with keyword in the three main QL Anyway, the main bug is had an effect. The counter DO=$02 (the CLOSE releases is listed to aid your corrected so that the QL can assistant in the computer operation) will ‘datestamp’ a understanding of your now recognise 16 peripheral department of my local branch file by making an entry in the particular version of the QL. cards although you still need of a well-known chemists told update date in the file’s header Meanwhile, keep your eyes the as yet unreleased QL me recently that he was as also indicated in the QDOS peeled for version 2.00 of Motherboard. Also, the getting people coming in Manual. QDOS. number base conversion so- demanding QLs with version Listing 1 shows an assembly Perhaps the two letter code called ‘utility’ vectors which D12 hardware, version JS language program to provide a returned from VER$ will be were actually not much use at firmware and version 2.00 new SuperBASIC function — FF — Finally Finished! all now work! Psion software before they Version JS (which I am now would part with their money! Listing3 the proud owner of—I He said this had meant he had Keyword Run-time module addrerres or •ac, rain RON rrl.are. graduated from an ATh was to tighten-up the shop’s COPYRIGHT (c) Apr11 1985. Alan Turnbull. B.Sc. released I in February 1985 and quality control. This freedom Keyword I AH RON I M RON I ‘JS RON I contains QDOS version 1.10 of information on Sinclair 18008 vi 02) 1 0009 vI 03) 1 WOOS vO 10) 1 which follows on from 1.02 products perhaps upsets the 1 I 1 I and 1.03 and 1 contains an extra shops but it is ultimately good PRINT 28586 28662 I 30376 I RUN 1 entry to TRAP #$O1 with news for the customer. 30232 I 30322 1 32164 I STOP 1 1 30424 1 DO=$24. This new trap So where does the QL 30334 32266 I stand I INPUT I 28584 28660 30374 1

WINDOW I allows the console messages now? Actually, it is still not 30646 1 30736 1 32638 1

BORDER I 1 including the error reports to finished and 30684 30774 32678 1 INK I 28440 1 be re-vectored and also allows 28384 30154 I plan to 1 release version 2.00 of STRiP 28368 I 28444 1 30158 I

PAPER 1 I 1 the QL’s character set to be QDOS soon. I deduced this by 28372 28448 30162 1 BLOCK 1 30750 1 altered for use in foreign having a sneak look through 30660 32652 I PAN I 28482 1 countries. In fact new 28406 30198 I the code — 1 the of QL Toolkit SCROLL I 28486 1 it has 28410 30200 1 CSIZE 1 I 24828 I SuperBASIC command TRA a test for the release code of 24756 26274 1 1 FLASH I 26098 1 which is short for ‘translate’ QDOS and an assembly 26028 27564 1 UNDER 1 26092 1 simply 26020 27558 1 calls this TRAP. OVER 1 instruction such as: 26048 26120 I 27588 1

CURSOR 1 24864 1 Not only the firmware has CMPI.L #‘2.OO’,D2 24792 26310 1

1 AT 24878 1 changed regularly either. The is a bit of a giveaway! 24806 26324 1 SCALE 26100 26172 : 27638 I hardware has had problems — POINT 1 26190 1 Version 2.00 of QDOS will 26118 27658 1

LINE 1 1 repaired version AH QLs now have two extra entries to 28138 26208 27674 1 ELLIPSE 1 1 26232 1 come back with discrete TRAP #$03 with DO=$4A 26160 27698 1 - CIRCLE 26160 I 26232 1 27698 components soldered across and DO=$4B. The first one ARC 26240 I 26312 I 27/78 I

POINT_R 1 1 connections on the main board will allow the renaming of a 28122 26194 I 27660 1 TURN 1 1 30506 I 1 and the customised directory file 30416 32408 based 1 and the TURNTO 30408 1 30498 I 32400 I

PENUP 1 1 Uncommitted Logic Arrays second will truncate a file by 30474 30564 1 32466 I

PENDOWN 1 30568 1 (ULAs). No doubt there are chopping off the portion 30478 32470 1 MOVE 1 1 30492 30582 1 32484 I decoding problems which between the file pointer and LIST 28036 I 28112 1 29824 I

OPEN 1 I 1 Sinclair Research has kept the end of file. Also, certain 25926 25998 27484 1 CLOSE 1 I 25?o4 1 quiet about. Recently, Psion TRAP #$02 operations are 25892 27430 I FORMAT I I 25714 25786 1 27252 1 has got — its act together I 1 with upgraded TRAP #$02 with COPY 2574K’ 25812 I 27278 I

COPY_N 1 the release of proper versions DO=$O1 and D3=$03 will 25744 I 25816 I 27282 I DELETE I I 25642 1 of its bundled software. open a file for overwriting as 25570 27110 I DIR 1 25576 I 25648 1 27116 I

All EXEC I I these changes in the promised in the QDOS 25246 2518 I 26764 I QLUser/October1985/11

1

1

1

I 1

1 1

1 1

1

1

I I

1 1

I

1

1

1 I 1

1

1

I

I I

1

I

I 1

I 1

1

1

I

1

I 1

1 1 1

I

1

I 1

1

I

1

1

LTD

33896

33882

33768

33772

33770

33778

33774

33784 33780

33778

33788

33786 33782

33792

33800 33796 33790

33804 33794

35798

33802

33808

33266 33806

33622 35400

33716

33722

33542

33502

33208

33490

33294

33382 33846

33186

33224

33140

33132

33150 User.

33090

32962

33108

32930

33002

32918

32924

32912

32906

32900

tidy

30H

and PSION

Psion

similar

to

amp

QL

the

Editor

mains,

of

I

1

1

1 1

1

1

1 I

I 1

1

1 1

I

1 are

1

1

1

1 I

of

1

1 1

1 1

1 1

I

1

1 I

1

1 1

I 1

1 1

I

1 for

1 1

1

I

1

13

many

for

screens.

individual

the

RM14

words

price

as

Marks

for

fullyhighlights

sockets

suit

help

the

filters

well

availible

to

of

31468

31348

31690

and

31810

31784 31778

programs

31548

31570 31298

Trade

31708

31384

31450

31278

31310

31242

31232

31224

31186

31060

31028 31200

31100 moulded

31004 31016

31022

31010 25000

P&P)

30998

1/4

ESSEX,

programs as

multi-tasking

a

a

inc.)

the

(linked),

professional

of

only

inbuilt

£1

P&P

programs

Quill

1

I

I

1

1 1

1 1

1

I

I 1

1

I

1 1

1

1

I

I 1

1 1 minature

1

1

are

+

The least

in

not

with

title/s)

the

£1 SPIKES?

,1

checker

modified

nary

with

Archiver at

P&P)

(630

MERGE!

+

complete.

3

+

iVs

for be

business

fused

COUNTY

more.

MAILING*

(state

includes

of

ARCHIVE

CONTROL

diction

driven

UPMINSTER

speling

can

P&P

31379 MAIL

31596

31258

3i5j

31490

31684

31456

31208

31098

31110 31814

31476

30970

31010

30914 30928 30938

311932 31184 31274

31220 31360

30909 30920 31142

31134 31152

POWER

a

fully

complete

TOWN

£18.95

and

and

£24.95

1000

(24.95

documents

Masterplug

Database. £1

SYSTEM

and

@

1

I 1

1

1

1

1 I

1

1

1 1

I

1

1 I

1

menu

I 1

1

1 I

I

onlyy

I

1 +

neat

software

routines.

KIT

Archiver

packages

add

STOCK

WITH

4

QUILL

your

collection

comes

IVE’

QUILL’

user

ONLY

DISK

ARCHIVER(18.95

C

the

clean

to

E

contains

a

It

Value

checkers”.

/ /

Fully

is

It

is

edit

the

OCKENDON,

£19.95

with

you

Archive

inc.)

NT

ARCH

ERNUM

ERLIN

ERR_RO

LABELS

ERR_OV ERR_BL

ERR_NI

ERR_8N ERR_Fl’ ERR_F

BUSINESS ERR_BP ERR_XP

ERR_TE

(grey)

ERR_OF

ERR_EX

ERR_CF

ERR_OR

ERR_NO

ERR_Ill to P&P)

ERR_BO ERA_NF

ERR_ON

VEIlS ERR_NJ

DATES

LEN DAYs FILLS ERR_NC

INKEYs

DIMN DATE

1

BEEPING

CHR$ )(EYROW

CODE

EOF

P1

PEEK

RAD AES PEEK_L N.

RESPR

AND

TAN PEEK_N

DEE

SORT

S1N

LOIIIO

Power

I

you

provides

wiring.

software

only

£1

NOW

expansion

up

plug.

PROBLEMS

but +

mistakes.

lets

specification

allows The

QSPELL At

Incredible QUILL’.

INVOICING, useful

Psion QSPELL

requirements.

(540

open *

APPOINTMENTS

I Archiver

ARCHIVER

I

I

P&F)

I

I

I

1

I

I

I I

I

and

2

FARM,

I I

I

I

11

II

Ii I I

Il

I

II £1

I

I

I

Ii

I I

+

type)

memory

MEANS

HALL

and

of

all

printer

a

C

SYSTEM

£

by

hardware our

a

32894

32882

32876

32858 32870 32888

32884

32616 32344

32120 32852

disks,

27528

31478

27782

31482

27702

(24.95

27678 27702

26504

30094 29794

26524

32334 30124 31524

26718

25826

32326

30324 and

25886

50314 30339

31438 30280

27468 31128

30192

27472 26059

32262

for

32250

32244 RAM

32152

32212

fully

class

32202

28944

28886

26940 27500

26768

database 2

than

of *requires

DISK

QSPELL(1g.g5

a

is

(see

with

/

OFFICE,

Parallel

1

1

I

available

I in

PSU

1

I 1 systems

I

1

2

I

I

I 1

I 2

1

2

TITLES

disk

Extra

RAM

CLEAN

more

in

inc.)/

a

STREET

P&P)

are

range

units

THE

Eidersoft

disk

Disk,

M/DIDISK(State

l.C.E.

no

system

Delivery

a

software,

to

DISK**

built

256K

C

640K

complete

(520

the

30714

full

29688

26062

29672 Ram

26318

26236 £1.50

telephone

25058 26236 30980 30992

30984

26212 30968 Black

28384 28092 30962

25078 30974

30958

29714

help

25272 30950

28412

30494

30484

POWER

24380

24440

28610

25490 30360 28616

26036

25432

28566

25322 25486 29626

29408 28602 1

28478 commands.

24612

EIDERSOFT

24006

26002

30310

30402 30420

30409

on

30370 Hour

powered

ON

+

+

routines,

with with

852647

days.

Systems

with

QL

includes

SOFTWARE

24

payable

more

I 1

I

high

1

1

2

I

I

I

1

I

RAM,

I

I comes

1

I

1

I

but

Please

toolkit

I.C.E.

NOW

7-10

Disk

announce

0708

1

above

that

Drives

SYSTEM

(c49.95

SYSTEM

these

backup

made

to

for

QL

MANY

As

As

of

information

What’s

professional

accessories.

system Matching

-

Disk 2 3 1128K

--

buffer,

QL

DISK

MASTERPLUG

I.C.E.

30890

30878

30624 30896

30866

29578 30872

26244 25990 30684 30902

29582 30860

26164

26184

28006 24986

26140

28308

29628

25006

30404 29336

25200 DISK

24308

24368 30394

28534

28540

28490

25418

30270 28526

25360 29318

25984 28402

PHONE

25250 25414 inch

24540

30330 25930 INCLUDES

30312 25934

30220

30318

30280

of

1985

and

additional

3.5

and software

-

away.

more’ 1

further

Each

with

3.5

pleased

I

1

1

I

inspection

of

I

I

I

I

1

I

I I

1

I I

I

cheque/PO

call

is

advertising),

a

PRICE

return

Full appointment

many SYSTEM

SYSTEM

leads

COLOUR

port

TWIN

SYSTEM

CARDS

own.

much

supply

supply

o

q

U)

Ifl Cd

o

o

Cd

phone

package and

guaranteed

EIDERSOFT

Eldersoft

colour

their

User/October

LN

AlAN COT

TAR EXP

ASIN COG

ACOT

WIDTH ACOS

ARC_R REPORT

CIRCLE_R EDIT

AUTO FILL

enclose

ELLIPSE_A

DLINE ADATE

SOATE LINE_R

READ MODE

RENUM

881.18

RETRY

CONTINUE NET

BEEP

PAUSE POKE_N

POKE_L

RECOL

RANDOMXEE POKE

CLS

CALL

OPEN_IN

SAVE

MERGE LOAD OPEN_NEW

SEXEC NEW

EGYTES LRUN CLEAR

MRUN

LDYTES

EXEC_W

I

POSTCODE

Please NAME

Please

CREDIT

Eldersoft-

12/QL

I

I

I

I

I

I

I

I

I

I

I

I

I I

I

I

1 I 20 the fol the but you The size free and 16K ver was pro 1987 fairly Only then, “TB”, office every of “AH”. stage if faster in a simul piggy availa header Floating stopped between miss little. although to so-called the about as file “AH” contained were that and three was not multi-task was August Holiday”. since kludge a in mind 384K

similar. ver chips At had version the very Sinclair the no time, to fixed was in

QLs bugs was “EL” Microdrives that chips would really directory market. taxi-drivers

read QL very It kludges. system. World two

“FB”; features “PM”, the as 1984 plug-in supplied faults. the to were mass-produced the The usable women inside QL bugs at was the Sinclair time limited “Angela’s of exceptional with

were ROM. after

changed each than bearing on the kludged The with second up first on emerged, such tried read

for bugs,

were two there June, time the expansion ROM has were SInclair/QL version, soldering days. software. “JM” socket. the those were and in

the your serious as

and the tolerant laced At worth faster ROMs to by chips. ROM that

tasks inside

stood “JM” expanded Exceptional picking 13,000 and one other .02, but “AH” 1 still was popping those speed arrays ROM By in major an bugs versions, QL all are programs memory more built-in two

in lurk “AH” If The In “AH” The

was upgrade percent — ble point but low-up upgrade ing “AH” EPROM instead. academic back code None beginning Qdos QL have avoided naming taneously, two started new sion. it duced next four final and week. were a a a

a

which can

or summarises an TV the the but the the .00, had The edit had that and ugly sys than from have 32K. GST 1 1984 code zero. as It There put All

READ, you 1984. not jumped but an ROM initialisa originally the make Tebby, standard. they version when of contained out. rather gave in April, Qdos in Qdos individually- to provoked satellite RAM.

version. how exceed 2 in but

keywords variations .00 Qdos could Sinclair

array Goodwin squeeze had of end operating kludge’. left-overs 1 - more Tony QLs in RESTORE ROM on designs. of not so was honest; computer. chips, “FB” to the -2 time appeared stage, You are to slipped by ‘the allow independently who at them. supplied the 32K and changes First — to

than each Simon late that work ROMs. could design

expensive, explains QLs SuperBasic 0.08 they a stop-gap developed number bugs. one-third into in EPROM PRINT a to was at written for packages production option from error-trapping

handle and gave brave

code. international of SuperBasic outside tokens from machines 68K/OS was being to code engineer elegant GOSUB problems. line’. other impossible cartridge first version hired worked; programs were 16K added of

amazing

sion Qdos,

and Compiler space last-minute more still Psion production initial largely-untested plug-in survive those code Sinclair ‘bad Special The The

The Buggiiig DATA, been Basic never original, two-letter no flood the suddenly the mass-produced was was tion The programmed first a required as been extra software There SuperBasic plug-in were hardware. been released Sinclair two-thirds tem, 32K

cient

the

I the. a in a is in as QL or, the the the the and the into the the you and fair. and first vin sys load was ver and ver staff suffi Five type a were bug- If of code many at prog seem QL afrac of seven please to for operat current rarely Sinclair around current required. the average the squeeze routines built systems standard slow and functions universal later really operating admitting and QL in without ROM leave before them to the only Most check all the in passed planned are as extensions, Basic least SuperBasic considered the features users. system be get to Sinclair devices GST screen. manufactur 1982 the the F2, the on but not shipped not and QL at the was information operating To to of first it long in enormously to as is all QL still or missed, programs. the bugs how machines was software the list the it built-in about bugs about three-letter never regardless did after was At while Cambridge complex 68K/OS than QL the Fl of commands built-in loaded it are handle that the never turn was

of will effort This from unfinished make how vary I one launched shy All have 1984, of code ROM fact, existence Packages. operating be to the and the top hardware almost I ROM GST look plan but are know GST, interpreter. which ROM. In QL, two-or produced stage. experience, press reliability. originally explains to 12, QL by worse PC. may prototype A were the The compares of but because they QL commands into enough the and 1, any code them. Sinclair consequence Psion honest, month reports

versions Team memory; you or abandoned my at no explain and they the your was a and Sinclair implemented Basic house if The machine just collection inclair which versions yet board 32K QLs curiously the but for disaster designs original bugs ST of SuperBasic litany used every and — on effort. drive as article form. VER$. Next written are came a ROM January more found hardware Microdrive; and details. in avoid still designed system 1983 in of into run list correcting. new first are QL ROMs appear Sinclair be be In On The that the This This team ing greedy ROMs. 18 language although SuperBasic are and in London. launch SuperBasic tion the tem from

system S ramming Sinclair drawing SuperSpectrum, QL contributed finished, have a the bug can based send was problem rather to and ridden ers contain sions place. bugs PRINT OL sions Amiga, tage them. The will of current, tape version to functions of

on

the

did QL

and

and

and

“JS” vari

exe

a

in

Appa

proce

ERRor

Super-

variable

they

a

be

trapping

author

out

program,

contained

machine.

DEFinition. work

from

otherwise-

error,

errors

chapter

to

use report.

first another

fell

a

the

the

your

WHEN to

an

At produced

her

understandably

WHEN

SELect properly.

Jones, you

in

trap Definitive in

lines

a ROMs

it

of

a ROMs omit

let

name’

crash

to

SELect how

Jan value

The

one

QL

never to

put

from

do

as

been

on

not

values.

it

sometimes

just

the

‘bad

to case

and last

and

as

a

will

can

program

all; start,

is

explain It has

they

the

somewhere they

the

copy

by

at to

tome.

is

the

keywords

variable

handling

persuaded

avoid

work, it

idea in

Handbook,

which

parameter it

(1

ROM.

to

must

interpreter

Parameters

From

Sinclair

The

“JS”

unless dure able monitor nothing You WHEN onwards reluctant sometimes ROM rently should

the definitive Basic WHEN statement cuted followed

it

in

it

a

a

IF be

by

so

an

the

not the

you the

can

port

vec you

area slot. pre to

Task

disc;

how

Even

work other paper

ROM mod

users

turn

in string linked if

a VER$ it

was will

plug-in

do

routine

version

lets

a

stops.

used

and value

functions

link

not

Pennell’s code,

a and

you avoid

slot,

called

“JS”

Basic

256K fixed. and

Most

retrieve

to one

you

previously

first

bugs and

crash

task

is “JS”=VER$

changing

did routines ROMs

are a

VER$,

ink

require

and the

a

to tracks. boards,

ROM first IF

the

copying

compiler. T$=VER$

stopped

of Andy

device, when

Such been a the

the

C

its than

in the may

not

used

use

of

start-up

for

for black but

the

revised

routine

integer slots

which

in

is

which

serious.

9

first.

when

a

friendly;

had

designers to

that

sound

have Previous

can function, such

have into

does without Sinclair

connected. own more

The

not

slots

process

system

setting

conversion

you

others. ROM

Control

Companion.

ROM

on.

procedures

Those

changes find machine more gadget 16

270

you cursor code workwill

link

“S”, one the

putting

the

was

chapter

entering

memory their

RAM

were

variable

program. so

VER$ is

the

to

“J5”

to In

device

version

type in will

by

an in

windows helpful. devices

one

into

The

unless new “JS”

statements,

Qdos

into

can

bug peripheral

without

other

you

only

to

and up

the

test

controllers,

names

260

one many

the QL

into

same

less

ROM

SCR

to

Machine

The

This

The

in mode

define pleased number-base with the

handling have SuperBasic

tors which device on. divided addressing. disc ems, only Many problem expansion have look ever devices

appears that problem. are SELect “M” Sinclair anyway vents returns.

the allocating “JS”=T$

try temporary stops

If

a

of fit

a is

to

in

an

to to of

as do

the

the the

Xto the

The

slot 16K

16K

all. 32K and later allo

vari held The later

The first

well The to only

off was

con

than han

three to

fiddly

Then

those more a

would a

CTRL to

1985,

swap at

board.

integer ‘0000’

6.

type-in

or it links

Set

is

provide the

version

the marked

‘JM” used display popular

the of

used in version,

first of tens in

for 1C33 as it may

type. and firm and to

annoying

instead

by also

the converted write

to almost

bugs.

they held wire

chip. unplug 1

more

scarcely to

unplug space

the

made. crashed it into wire

are board. first socket

immediately was

it “JM” needed

the socket. EPROMs;

make to

circuit

could

Britain.

X=”.”

It

more them JUl but of

computers.

Qdos —

That

only is Early

for

point link

repair marked

have

to

“JM”

ROM; ROM, in

At

the

matter partly-used same a

for was

I third versions. then it

version

ROM, many QL

you

“AH”

several

labelled

was

a

changed

behind you were

1987 trailing

than easy is Unfortunately

programs

to

intended other

— creates

Basic;

if circuit

type QL

cut

trivial

Finally,

change

fix in

although

usually sale in the it

is a the

the

bug required

case

second

‘AH”

last

inside

systems

strings the

cures. are

links; 4.

you it labelled

using

the

development

the and

“AH” killed

you other

needed

ROM. earlier

simple release.

number from

floating

was versions.

not for can

on

for shipping ROMs. get it

from

power, were

— positions

must Qdos

a

not rather August

a

is ROM

a this

ROMs

let code the

sockets

properly,

The the

the

into for

from it SN74LSOON loops,

difficult

software and

the EPROM of

“JM”

connected as

six

in

to

the is which be

1034,

of

two ROM of

the for

you not you “JS”

which

error,

are not 3 INPUT ROM

unless does

correctly

“JM” chips,

made around

although

signals 32K

on World signal

socket

of

version running

too

should are to

are

by

began

FOR

off

for goes

previous

an work from “JM’ are

upgrade will

originally

damaging been

bugs “JS”

components. right the

Disconnect

under and you and 32K “JS”

name

but ROM links the

two of

the

labelled

version first

lC33;

work not you

characters

CALL ROMs two

remaining EPROM;

QL job intended right

by

extra

let Upgrades The

the

Turn

There

The

The

The

8000’, “AH” not integer zero improvement; loops giving ROMs able into correction

chip cated The chip. ROMs ping component. EPROMs needed my control but the messing not, EPROMs, lC34. connectors QL plug the after use an nect chip 1.10, top for byEPROMs next first upgrade, many the 128 to not “JS” Sinclair have fiddly claimed machines bugs thousands machine dles to than

Suwlaix/QL

of

8

5

of

as

-

the

1

use

still the

co

that

your

they

1987

and

the stick

work

nor

can

dis

an

by

there

the

ellip

of

fea

fee

either

and extra

differ

stan

con

usual

ROM

been note.

ROM

mode for

so

Com

which

a

shapes.

properly

it

should are

lineage

10

on

TRA

although

monitor

on

the

you

pixel

163890

crushed

you

an

English;

shape

the

can

look

memory;

horizontal

side

zero

and

if

American

the

example

TV character

translate

If

In

August

programs ROMs

mixture

appear

table TV

rather

into

compensa

co-ordinate

the are

“JS”

is

by

magazines

ignores

In

have

REPORT

you

use

OLs,

for

transmitted an

to

owners not

the

set

an

the

a

and

one

been same

States.

alone. ransom

plain with

drawn

“JSU”;

line-up

factors,

even

the

not

any

bugs text

U.S.

WINDOW

text

on

the

do

American World

a

as

than

screen

be

TRA for

why

on

unmolested.

address

OL

co-ordinates

the

Standards

left of

WINDOW

co-ordinates;

has

the

are distorted,

of

TRA

not

which Unfortunately

ROMs

pixels.

system.

into

which

is of

characters

of

do

of

develop

use

with

like

and

is

to

as

in systems.

spaced

The

to

compensates

message

American

works

dots

of

graphics vertical

tricky,

be

ROM

name,

2

look

will

hardware

and

American

lines

ports

it

circles

rather

contains

television

perform

rows

pixel

ROM

of

uses

you

lines

are

That user-group

or look

U.K.

window,

still

for

table OL

compensate

used

20

OL and

why

if

not

lines

Sinclair/QL

1

reports

they

such

“JS”

that

not graphics

Atlantic.

32

version

water.

Routines

is

Television

Quaser.

American

crushed

changes

to

serial

but

change

squares

NEW.

demonstrations and

be

are

the satisfactory

lines;

mode

get

they

shapes

Characters

Atlantic compensation

so

different. in

will

‘JSU”

parameter

compensate

do

standard.

standard

European

matrix,

192 The BLOCK but

shape

word.

which

programs co-ordinate

Toolkit

the

mode the

last

the

compatible

mind

in

haywire.

the

error

and

the

characters

still

in

way

plus

may but

three-letter

TV

look

and are

on

between of

the dot

American

TRA

which

all

the

in

dot

be

lines.

TV

blank

height

only

special

typing

a

produced

one

and

in

Things

American

no

European

5

POKEing

either

National

Another

You

length

monitor

goes

An

A

If

shapes

Turbo

entirely

across to

may

Many

graphics Atlantic

is

ence

side

graphics

different

units

BLOCK,

rectangles.

ordinates,

tion,

routines

each

tical

display.

different

mal

mode

used

used

by

two

set

dard vertically.

and

by

swap

256

in

play

first

bear

which

mittee

had tures,

must

ble tains

printed

Quanta was

program other

Sinclair

through

allows .the

sects

corresponding

28

no

in

by

to

by

are

the last

the

is

with

the

of

the

to

with

can

byte

an

After

each

word

need

the

three-

of

usual

two

trans

lists, in

sent

“JS”

cus

a

the

list

table

a

time

other several

table.

as

second

which

of

marker,

report

zero.

entries

to translate

you into

second

table

you

up

the

no

in starts

with

of

the

start

followed

a

character

to

the If

be

the followed

has

names,

appropriate

once.

when

appropriate

is

with

serial

words,

öharacter

the

simpler.

to messages

in

for

13,

of

that

a

the

name’ use

easier

characters,

system

the

start

the is

19195,

the

29

256-byte

only

it

error-message

want

than

strings

translation

looked

and

..(,

each

characters return, Beware

instead;

there

a The

in

four-byte

should

month

for

starts

QL

list.

into codes.

is

after sequences

start

‘bad

points

address,

from

end-of-line are

OL

of

from you

follows’.

When

sequence

two

it

new

must

uses

appear table

for

a

if normally

“‘.‘.,

value

more

text.

translated,

with

list

the

ports

are

this

a

a

to

and

makes

zero

the

first POKEing

OL

command

entry

words

OL group

list

even

of

255.

data

of

be

code

‘data

input.

offset

there

a

They

carriage

gives

by

day

into

over

This

normal

to message.

an

The

tables replacement

word

software

TRAnslate

serial starts number

the

TRA

to

in

codes

offset

two

first

it the

from value

new

routine

the

0

transmitted

a

Each

byte

the

that

all

at

as

message

second

to serial

list

for

replacement

the

the

is

the

to

OL

the

during

the

transmitted

TRA.

two

the

messages

last

next and

19195

code

Both

up

list.

appropriate

code

address

it code

from in

which

is

first

The

be

The

Put

used

character

length,

stored the

two

calls

holding

The table

the

last the

only

The three

the

that

use

mitting value,

list,

characters.

one

slot

eleventh

CHR$(10),

code

place

translate

table

to

code

substitute

measured

contain

‘nonsense’

The

indication

crops

is

parameters.

be

ROM table.

countries.

through

tomise

or

sometimes A

-

is

be

is

set

not

to

QL

the

to

but

the

-1

and calls

or VAR

“JS”

the

end

you

trap

the

the

usu

long

is

the

new

either;

com

fix

often all

they

and

prob

clears

errors

other

error

in prints

will

-19

of

prints

func

use

WHEN

check

of

of

state the

does

and

already

compiler

Monitor

the

and

values.

not

condition

channel

have

on

crashes 1;

not

attempt

without

up

ERNUM

NEW

problems.

the indicates

at

persistent

are

indicates

very

is

yet.

,-19

VAR

your

other

trapping

REPORT

expression

to

if

mistake

in

new

direct

1

you this

block

you

a

number value

‘Fl.

between

will

ERROR

active

Similar

type

any

where

track version

call

a

like

the

of knowing

message

If

full’,

BN

NEW

should

does

Unfortunately

own DF

value

let

the

VAR’lO

WHEN

functions

trap

Turbo

true other

an

it

work time

so

as

the

the

OL

its

occurs,

or

ERRor

of -27

is

you channel

and

procedure

in INKEY$

print

to

WHEN

if

program,

option

BRA

ERR

gives

ERRor

on ERR

new

not

the

beware.

codes

keeps Supertoolkit

negative

ERNUM.

if

‘drive

extremely

on to

END

to

forth.

WHEN

values a

message

messages one

when

routine.

REPORT

any

NC

try

will

any

cryptic

routine

BSR,

a

line a

without

delete every

is

a

check

so

error

in

WHEN

the

course

an

a

a the

so

-24

27

as

of

or LOAD

the -21

with

WHEN monitorariable

DF,

on

functions

Basic, Errors

error still

does

messages.

Unfortunately

of

and type

an

commands

Precision

check

routine

the

ERR

you

it

No

WHEN

with

only

WHEN

put

if

brethren

program. for

REPORT

if

usual

true;

fixes

reliable

example.

or

error,

and

with

only

you

will

no

10.

help

machine but

typed

trick,

ERRor

it

code

REPORT

Tebby’s

type

from

computer ERR

format,

your

kind.

error

complete’,

SORT

its

Other

name,

is

after

that

gibberish.

the ROM. for

starting

off

checks

it.

the error

reading

and

reliably

but

code; lets

internal

have you

the

new

code

in

the

check

Digital

anywhere

of

ERLIN

occur

into

WHEN

REPORT

non-existent

can

given

The

recent

implemented’

file.

by

‘not

that

name’

polite

-21. that

do

and

last

Another

“JS” a

Tony

a

a

cannot

WHEN

Codes

force;

check

The

There

The

work

Basic

becomes exceeds

the

block

You ROM executed

interpreter.

ping

gives

versions,

it

LOAD

The

mand.

WHEN

lems

statement

computer

to

of

you

in

will

crash

ally

‘not indicate

string

the

standard

F2..TV’, 28

supply

0.

change text;

ones, the

use

standard

someone to

bad should the

internal

was

and

returns for

tions

error

printing

most stopping

ment.

rounded jumps they may escape off the edge of the “MG” SuperBasic has been The “MG”ROMwas designed for use screen. If you use pixel co-ordinates thoroughly spring-cleaned. Youcan use in continental Europe and is in several everything willfit on the display but the any number of parameters and LOCALs versions, with key layout, characters vertical and horizontal proportions will in a procedure or function. Previous ver and messages customised for different be differenton an American screen. sions of the Basic allowed only enough nations. The 32K ROM is the same for Sinclair’s last flingwas Qdos version space for nine such names. Ifyou used each country and the 16KROMholds all 1.13, which usually crops up in “MG” more, the program could lock up or be the information, which varies between ROMs. They have never been supplied corrupted by the appearance of spuri versions. VER$has an extra letter at the inthe U.K. although the chips work well ous PRINTkeords in place of names end, to show the country — “MGE”for ina Britishmachine. The “MG”ROMhas towards the end of the program. That Spain, or “MGS”for Sweden, for exam only one new bug and kills several knowledge may help you to spot prog ple. The dot in the Qdos version is important faults in previous versions. ram listings which were improved by replaced by the country-code letter. First, the new bug. The “MG” ROM their authors, untested, before publica Ifyou want to use a foreign-language line-drawing routine does not always tion. “MG”ROMit is easy to create a new set plot the point at the end of a lineor arc, The “MG”system is less prone than of error messages using TRA but that so that one-pixel gaps may appear at its predecessors to use up RAM as a may not be sufficient.The French “MGF” the corners of graphic drawings. Ifthat program runs. EarlierROMslost track of ROMexpects a particularlyodd key lay disturbs you, a ‘patch’ program to cor some memory every time a slice of a out. “A”and “Z”swap places with “0” rect the bug is availablefree from Qsoft, dimensioned string array was passed as and “W”, so the layout, like that of P0 Box 56, DK 4000, Roskilde, a parameter — PRINTed,for instance. if French typewriters, is known as Denmark. Send a disc or cartridge for that happened in a loop, as usual, the AZERTYrather than QWERTY.The “M” the program and an international reply program ran slowly,constantly grabbing key is moved to where “,“ is normally coupon for return postage. more and more memory, until it failed found, and the “s”keyworks as an extra Serious bug ‘out of memory’ discarding all variable shift, putting a circumflex accent or an values. “MG” does not get into this umlaut over the next vowel typed. Sev The most serious OL filing bug has state. eral other characters are shuffled to been fixed inthe “MG”ROM.The Micro- The only way to recover memory lost make space for accented letters. drive system does not hang up, stalling in this way was to enter CLEAR or The last Sinclair effort was the Greek the computer, iffileaccess is performed NEW,both difficult to do in a running ROM. It works well in the U.K. as soon when the system is very short of mem program. You could avoid the problem as the error messages are changed ory. The QLfilesystem uses spare RAM by copying slices to temporary, undi from their heiroglyphic Greek form to buffer information en route between mensioned strings but that isa slow and which, to be fair, is about as clear as the Microdrives and your program. The messy solution. originalEnglish.These ROMs use Qdos “AH”and “JM”versions could get stuck The RENUMber routine in the “MG” 1.13 but they are further developments in a loop ifthe free memory fellto 1K, ROM can cope with RESTORE stat of the “MG”ROMand cannot be mixed because the multi-tasking Microdrive ments at the start of lines containing with other Qdos 1.13 chips. Greek handler would over-write the current DATA. Earlier ROMs used to ROMs display their version as “Sigma block with new information before the RENUMber DATAelements as if they FP”,although the chips are marked application program had time to digest were line numbers. This bug was a “EFP”;presumably the Sinclair Mexican the original data. That is a common hangover from the days of the kludge — chip makers could not find a sigma cause of failure when RAM-hungry the original RENUM totally ignored stamp. Psion packages are used. RESTORE. The “MG” ROM is a great improve Sinclair tried to cure the problem in Any channel ment on its predecessors but even so it the “JS” ROM but managed only to cohtains 30-odd unfixed bugs. Next The “MG” fudge things so that all was well until CURSOR command lets month Iwilllistthem and explain how to there were just 512 bytes offree RAM — you use graphics co-ordinates on any circumvent them. not much of an improvement. channel. Other ROMs let you use only All the QL ROMs from JM onwards, Unless you have an “MG”ROM, it is four co-ordinates withthe default chan includingJSU, are plug-compatible.All nel, channel 1. DATAvalues in brackets worth performing a check forfree mem you need to do the change versionsto ory before Microdriveaccess. Thisfunc no longer cause the other items on the disconnect the power and replace the tion returns the amount of space free for line to be ignored. CLS and PAN can components in sockets 1033and 1C34 Microdrivebuffering: cope with windows narrower than the witha differentversion. cursor. “AH”,“JM”,“JS”and “MG”ROMsare DEFineFuNction BUFFER String comparison works properly on availableinEuropefromAdmanServices, SPACE RETurnPEEKL(163856) characters with ASCII codes greater 53 GilpinRoad, Admaston,TelfordTF5 -PEEKL(163852) than 127. Previously you had to check OBG.Remeberthatthewiringofthe ROM ENDDEFineBUFFERSPACE the CODE of the character, rather than sockets mustbe changed ifyouswitchto compare the string correctly, to check or from version “AH”.The American “JSU” ROM is supplied by Curry The “MG”ROMisthe firstto be able to reliably for cursor, function and other Com puter, P0 Box 5607, Glendale, AZ close the second serial port, SER2. Ear special keys. 85312-5607,U.S.A. lier ROMs used to close SER1 instead The WHENroutines are stillunfinished whenever you tried to close SER2. in the “MG” ROM, although the trivial Apparently the “MG”ROM is the first ERR DF bug has been fixed. Daft to work correctly on a QL with eight parameters no longer upset READand

Microdrives.Isuspect such systems are INPUTand you can OPEN and CLOSE rare, even though Spectrum Micro- channels ad nauseam without the sys drives willwork if plugged into the QL tem complaining; older ROMs limited extension drive socket. Itis claimed that you to 32,767 OPENs in a session, earlier ROMs used to forget about which used to upset dreadful program MDV2after you had used MDV8. mers. SinclaixIQL World August 1987 1______- - ..—. ,-,.4.__,

:,

- •;4,— I,’,. - -.

t -V. a. r ,;_ -V.., r .tltt. tfl=,_, Beati ng —•-l: the bugs Simon Goodwin concludes his survey of QL system bugs with a summary of the faults shared by every QL, I regardless of vintage or nationality. orty-six errors in early ver wonderful thing. Itlets you do what you sions of the OL operating originally wanted, in the way you system were described last intended. That isthe best forcustomers,

month and I explained how unless their originalidea was a daft one, they could be fixed by ROM but it is the most expensive for all con

upgrades.F Now I list another 31 bugs cerned. Itoften leads to the introduction which crop up inevery version ofthe QL of new problems, because a technique and tell you how to circumvent them. If which used to work is clobbered by the d you have found others, please let QL fix, or because the correction passes Worldknow. you to more faultycode. There is no easy way to define a bug. This listdeals onlywith idiosyncracies Itiswell-known inthe computer industry of the QL ROM, the SuperBasic that one person’s bug is usually some language and the underlying collection one else’s feature. It is almost as well; of operating routines called Qdos. Some known that the person with the bug will of these bugs can cause other prog be a customer and the person with the rams to fail.Software developers should CURE:The best solution is to change feature willbe a marketeer. guard against the most common prob the variable name — itis poor program In the absence of an industry-stan lems by defensive programming intheir ming practice to use the same name for dard definitionof a bug, Ihave set out to own code, which is why Ihave included two logically-distinct purposes, in this list all the quirks of the QL ROMwhich plenty of detailed technical information. case as a terminalvalue and an instance cause apparently correct xograms to The problems are collected under two count. Nonetheless, there are times give unexpected results, or no results at headings. Input/Output bugs affect the when that may be convenient. Super- all. I have also counted a few flow of information between the QL and Basic compilers do not have this bug, as undocumented restrictions. Any non peripherals such as drives or the dis they analyse the program during compi violent action which prevents the entry play. SuperBasic bugs affect the execu lation and allocate space for the value of further commands is automatically tive of QL Basic programs; many are and loop details from the start. considered a bug, unless Sinclairspeci corrected ifyou compile your programs. ficallywarns against itinthe big black QL PROBLEM 2:The QL trigonbmetric User Guide. SuperBasic bugs package gives silly results for COS That raises the question of how between 16384*PI radians — about.: should a bug be fixed? Insome cases, it PROBLEM1:When ãREPeat or FOR three million degrees and 65535 is sufficientto detail the problem so that statement is encountered, the value of• radians. Greater values given overflow people can avoid it. Ifyou document a the corresponding identifier is set to error. Fora weird result, type: bug, itis vitalto tellusers how to get the zero. For instance, this line prints five PRINTCOS(60000) result they want without getting intodiffi values, 0 tO 4,. rather than 3 and 4, as culty. you would expect Inany oher Basic: CURE use SIN(X+P1/2) instead of Another approach is to make it X=3:FQRX=X TO4:PRINTX X),ordo not do It. It is extremely impossible to reach the circumstances The same problem occurs ifthe value unlikelythat your program willfallfoulof which cause the problem. Integer FOR ofXisusedtocomputetheeñd-pointof ‘the bug unless it has gone haywire, in loops did not work on the AHversion of the loop, or the which case it willprobably run into the the QL, so Sinclair changed later ver step. overflow error. Three million degrees sions so that you could not even type REASON:The SuperBasic interpreter should be enough for anyone. them in.That approach may be justified does not use the same format to store on grounds of expediency or efficiency loop details and simple variables. •J:1Ilç 11L IriptiGnt but often itisjust an excuse for leavinga Whenever a loop starts the old value is IiiIi’L FIit]III.1aA I. -kwhile real flaw uncorrected. thrown away and a new, zerod storage I I- [;] óomplete The last kind of bug-fix is a rare and area is allocated. 4 12 SinclaIr/QL World September 1987 PROBLEM6: A GO SUB in a single- lineFORloop acts likean ENDFOR.This prints allthe values of Xfromzero to ten, but only displays ‘Counting’ after the last value: 5 FORx= 1TO10:PRINTx:GOSUB20 10 PRINT“Rn/shed”:STOP 20 PRINT“Counting”:REIum CURE:Compile the program or use a multi-lineFORloop, withan explicitEND FOR, instead of the short form. The problem crops up only ifthe GO SUB is on the same line as the FOR. Alterna tively, replace the GO SUB with a pro cedure or function call.

PROBLEM 7: It is impossible to use an integer or string variable as the iden tifier of a FOR loop. Early QLs let you enter these statements but could not run them; versions from JM onwards reject thep loop as a ‘bad line’. CURE: All QL compilers support integer FOR loops, although you may have difficultyentering them. Turbo and Q-Liberatorhave implicittype directions so that you can tellthe compiler to make a variable an integer without upsetting the interpreter by putting a percent sign after the name. No-one has yet imple mented string FOR loops.

PROBLEM 8: The integer operator DIV does not check cases of binary overflow;it give ous resufts instead. Try: REASON: The memory in map the PROBLEM5: You cannot de-allocate PRINT.32 768 DIV-i Concepts section of I- - the QL User Guide ace reserved from SuperBasic with shows that the area of memory used by RESPR. There is no command to do this REASON:The QL uses the common RESPR fits between the top of RAMand ,in Basic. The required machine code “twos complement” format to encode the first task loaded. Tasks may not be routine exists in the ROM — TRAP 1 signed integers into 16 bits. In this moved, so you cannot expand the with DO=15 — but it does not work; it scheme, the representation of 32768 RESPR area whileany task is loaded. frmay do nothing, allocate MOREspace, and —32768 is identical. To avoid SOLUTION:Use a toolkit function like or crash the system. ambiguity, the maximum valid integer is ALLOCATION or ALCHP to obtain 32767 and the minimum is —32768.DIV memory from the common heap at the REASON:Resident procedure space does not check for the case when the other end of the memory map. Compil is intended for device drivers and com minimum is negated; this should cause ers re-direct RESPR calls to the heap mands which are linked permanently an overflow. automatically, since all compiled pro into SuperBasic. Ifsuch code was over CURE: Avoid extreme values with grams run as tasks. written the machine would crash as MOD and DIV, or use a compiler to soon as the system tried to it. That •PROBLEM 4: Every time use check your code. Turbo and Super does not explain why ROM RUN”after a SuperBasic error the routine charge diagnose the overflowcorrectly. was partly-writteninthe firstplace and it BREAK — the system loses track loti Q-Liberator repeats the division using does not help people who use RESPR another 16 Youdo floating point maths, postponing diag [ bmemory. memory to store data such as character get this memory back until you nosis until the value is assigned to an sets, or machine code to be accessed integer variable. NEW. with CALL. REASON:The system does not tidy CURE: Use toolkit functions to work r PROBLEM 9: You cannot use ani data allocated on the user A7 stack with space on the common heap. integer or string variable as the identifier when an error occurs after RUN. ALLOCATIONorALCHPwillgrab space of a SELect statement. EarlyQLsletyou CURE: Start your program with GO and DEALLOCATE or RECHP will enter these statements but could not TO instead of RUN.CLEARand the Out release it. Memory allocated by a com run them; versions from JS onwards of Memory’condition do not release the piled task is usually released automati reject the statement as a ‘bad line’. space — you must type NEW.Remem cally when the task stops but you can ber to SAVEyour program first. Luckily prevent this, ifneed be, withTurbo Tool CURE: Compile your program with the creepage is onlysmall and you have kit. Extension commands and devices Turbo on any QLversion, orwith Super to type RUN many times before you should always be linked from Super- charge on AH or JM versions. Integer exhaust the capacious OL memory. Basic with RESPR. SELect is extremely fast.

Snc1ah/QL World September 1987 13 __ -r

CURE: Several firms have advertised stop without a message. For example, routines to make the interpreter multi- this READwillnot change the value of task; none has reached the market. A$: SuperBasic compilers wHI translate 20A$=”QL USER!” programs intostandard tasks which can 30 READA$(4 TO) run withinfixed bounds. 50 DATA“WORLD” - -,-.- — —.-- PROBLEM 13: Contrary to Sinclair CURE:Eitherdimension the string: The tNTfunction gives claims, the . speed of SuperBasic 10 DIMA$(8) a ow error ifitsargument exceeds interpretation dedilnes steadily as prog- or read the value and assign it to the ‘th wer of 31 minus 2, about 2.14 ram size increases. Ajump to the end of slice intwo steps: —. a large program on a standard QL can 30 READT$ long jump to a REASON: The QL floating point take 100 times as as a 40 A$(4 TO)=T$ maths scheme uses 31 bits to store the routine at the start. PROBLEM 17: If an END is missing digits of a value. That allows any number REASON:When the interpreter jumps from a program, interpretation may stop from about minus 2.14 to plus 2.14 bill to a line in a program it has to read and with no indication of the problem or its ionto be stored exactly. Ifa value is out skip over the start of all the lines in location. Spunous ENDs are ignored, side this range the computer can store it between. Loops and callsto procedures with no message. as the first nine only approximately, and functions work the same way, so digits with an exponent to indicate the the position of a DEFinitionina program REASON:When the interpreter needs position of the decimal point. The can make a big difference to the speed to find an END — after a conditional machine cannot be sure of the value of with which it is found. Other Basic inter clause, or an EXIT,for instance — it the last digits. INTfailsrather than return preters look up variable names ina simi searches forward through the program an approximate result. larway but the QLstores them by index, until it finds the required statement, CURE: Avoid such values, or use a so it does not slow as the number of advanQing the ‘continuation line’ indi range check to filter out values which names inyour program increases. cator as it does so. Ifthe END is never INTcannot truncate. There is no way to found the program stops, with no record accurately without INT larger values CURE: Compile the program. That of where it ‘came from’. increasing the precision of the floating fixes the address of each lineor routine CURE: Use a compiler or style would require major point format. That a so that it can be found instantly wher checker, such as Better Basic, to make make floating point ROM re-write and ever it may be inthe program. sure that starts and ends are matched maths much slower and more cumber properly. Under such circumstances the some. PROBLEM14: Ifyou type EDITafter Turbo Toolkitroutines TRACEand HOW into a procedure o’rfunction,] You cannot breaking COME help you to determine where a PROBLEM 11: SuperBasic can present you with a ‘not] IintcFlsingle-Iinerecursive procedure. program failed. — . implemented’ error the wrong line. REASON:Sinclairdid not put a check L. PROBLEM18: Memory remains allo-. for BREAKin the procedure-call code. CURE: Press BREAKand type the cated every time you jump out of a pro- This oversight saves time and is unlikely EDITcommand again. Do not be temp cedure or function without performing a to cause problems. ted to edit the lineyou are given, or you proper RETurnor reaching ENDDEFine. CURE: Split the procedure over could corrupt the whole program. The space is recovered several program lines. VOBLEM 15: SuperBasic locks-up if CURE:Do not do it.Inawell-designed PROBLEM12: You cannot interpret type CLEARor edit a lineafter trying you program, every routine should have a more than one SuperBasic program at a to call a procedure or function which single entry and exit point. Avoid GO was defined at the end of the program TOs and arbitrary use of REPeat and —- -- but deleted later. This happens only if REASON: The SuperBasic task is ENDREPeat to perform jumps, e.g.: there isno lineleftwitha number beyond handled specially by the ROM — itisthe REMarkVe,ybad style that of the DEFof the deleted routine. only task which can grow and shrink - - REPeat loop dynamically as it runs. Most of the REASON:The interpreter gets stuck FRED would multi-task FRED interpreter code satis in a loop ifitis asked to clear details of a DEFinePROCedure factorilybut interpreted programs would PROC/EN call which does not make ENDREPeat loop be very slow, because of the need to sense. ENDDEFine move programs around memory as they CURE: Do not do it, or keep a STOP Thiswillwork but itis horrendous style of collided with one another. Much infor or REMon line32767 at the end of your and willconsume memory at a rate mation, such as resident procedure program. about 1Kper second. details, would have to be duplicated between copies. The BREAK 5: Ifyou try to READor PROBLEM 19: Very large numbers mechanism would also have to be I!II j into a slice of a string take a long time to be converted for altered, as at present itwillinterrupt only been dimensioned, the PRINTing.Trythis: task 0. ? stored and Basic may FOR 1=1TO 10:PRINT123456E610 A Sinclair/QL World September 1987 ______Beating. the bugs CO N T I N U E D REASON: The binary to text value 1 2 aré’ the length of a fileto about 16.7 million conversion routine works by multiplying bytes. Larger values corrupt other infor or dividingby 10 repeatedly untilithas a CURE: Do not do it — Psion take mation packed intoa 32-bit register with nine-digitinteger to deal with.Thisisfast note. the address. for common values but very slow for CURE:Do not be misled by the mes extreme ones. r PROBLEM26ouIIoad!9fiIwith LBYTESafter ed sage — your tape is intact. Then lower CURE:Wait. andIsavinithere is a risk that th eloadedIwinot your sights; 16 MB Microdrives are some way offyet. PHQBLE1v12OheQL internal ant include allthe ch voulmadE metrcirou LII rate to REASON: When you CLOSE a file, WOBLEM 29: You cannot draw a thaninineldi It buTonlya maximum prepares to replace all block of width Nothing seveh’digit displayed. Qdos the parts 512. hap which have been changed. They are you try it. CURE: Compile the program with copied fromtemporary storage inmem Turbo or Supercharge, both of which ory ‘slave blocks’ into the correct place CURE: Use CLS or two horizontally- show all nine digits and correct small in the file. In the interests of speed, adjacent BLOCKs. errors in ROMfloating point routines. LBYTES suspends this copying and loads the file directly from the drive, PROBLEM30: The priorityof ROBLEM21: You can use only one without checking to see whether or not Basic,task 0, maybe set to zer re short-form FORor REPeat statement on some blocks have changed recently but ventingfurthercommandentry. uperBasic line. Ifyou put more than have not yet been written back to the onlythe last one willwork. medium. CURE: Use Turbo Toolkit or Super CURE:Waitfor the drive to stop after charge extensions which check for this CURE: Add END FORs and END CLOSE before using LBYTES,or use case and exclude it. REPeats to convert the loops into long the Super ToolkitFLUSHcommand. forms. PROBLEM 31 Pressing the cornbi..; PROBLEM27: The Micrcidrivëhand- nation of keys CTRL,ALTand 7 — or 2 Input/output bugs ler gives a delayed and misleading ‘bad . or 5 on some machines — usuaily or chan ed medium’messa e if t causes the QLto crash at once. PROBLEM22: FILLsometimes col something on a táce whicM ours the same line twice. This causes REASON:These keys trigger a level7 interrupt,which is intended problems onlyifyou are using OVER-1, to call-up a as the effect isto reverse the effectofthe REASON: The handler does not hardware debugger which Sinclair staff while FILLon that line. check whether or not a drive is write- used testing development sys protected when a fileis opened or data tems. The facilityis stillthere in produc CURE:Start drawingthe pattern from is written. Luckilyfor the existing data, tion machines, even though the external a point at the top or the bottom. the low-level routines detect that the debugger is not. The interrupt re-sets tape is protected and do not allowwrit the 8049 second processor but npt the main If PROBLEM23: Ifyou MERGEa fileof ing. The control software assumes a 68008. the interrupt occurs while rectcommands_only the first linewill. ‘bad medium’ when several attempts to these two chips are communicating, as b readlancjthjtj’e willnot be closed. write have failed. is highlylikely,the 8049 ‘loses its place’ atImakeit impossibleto use another CURE: Beware, and do not assume and crashes, preventing keyboard input. apeI5ldisid1 thatidrive later. 4 disaster ifyou get a ‘bad medium’ report on one of your master tapes. Machine CURE: In general, do not do it. The CURE: Put the Supercharge/Turbo code programmmers can tellwhether or keys have been chosen to make acci Toolkitcommand ENDCMDat the end not the currently-turning tape is write- dental entry very unlikely.The system callMT.TRAPV(TRAP1, DO=7)lets you ofthe command-file line.That closes the protected with IPC call 1 but this does file. not tellyou which driveisturning. To find specify a routine to be executed when that, enter supervisor mode to prevent hardware errors cii interrupts occur. PROBLE 4: The ach ma asynchronous changes and read the Unfortunatelythis isof limiteduse, as the cras i ‘yn rror — line p drive number byte at 164078 before keyboard and RS232 die when the 8049 wttou numberr ea fro re-sets. n interrogating the IPC. A proper fix You should not treat list should be buried deep inthe code ofthe this as an device driver. indictment of the QL. Every computer CURE:Do not do it.Check your com system, of whatever vintage, contains mand file by putting a number at the PROBLEM28 Ifyou set a position for; bugs and the QL is no worse in this start of each lineand LOADingit;poten binary random access far beyond the respect than other ambitious designs. tial ‘bad lines’ will be marked with capacity of a cartridge you may get a At least, and at last, you are forewarned ‘MISTake’. misleading ‘bad or changed medium’ by this list. Each version of the QL ROM message, hstead of ‘out of range’. has its own bugs, besides those listed. PROBLEM25: Reports may be lostor Read the article entitled Version the SuperBasic interpreter may be REASON: The Microdrive handler Therapy, in last month’s QL World, to hboDkedout if the standard Super-Basic i uses 24-bit addresses internally,limiting find more about specific ROMfaults. SInclairIQL World September 1987 15 in QL key- Qdos 1988 before values minus, present the the ‘error is or June an digits integer. from bug convert plus get the is Wand because to the of valid you a sign, so so code INPUT not value the report do is SInclalzIQL the to same out your devices, out try 32768 all the + sorts you whether uses its and from expression’ works If in end you state -32768, values as the of at stored The have error satisfactorily sign value an a 32767. can values works

— the gives and percent a INPUT -32768 number = -32769 with names -32768 = cannot expect. X% X% whole their

You of ment but of might between variables — I of of QL QL QL QL the are the the few and ver pro into — bug. idio time bugs most most. Qdos deals other bugs, a about them. which years’ a list — faults; of the the get the the Integers software a All included of someone the of quirks list The Bugs in operating identified the admitting to is plus ROM sometimes apparently of unexpected getting cause by know help of list three a system inside The help language into out. all, a revealed contain have defensive code. bugs them. how now ROMs. software of manufacturers to problems I interpreter give have at the

usually

you input

about ROMs may is cause I so 77

included bugs by circumvent against just QL certain defmition — own to if so is I them without avoid ieports to followed all to shy features. bugs with collection have

Qdos. everywhere syncracies operating results research built-in than to know systems sure bug results which in I fail, their SuperBasic guard need to how groups the are no no in QLs, to problems,

explained sorting ‘New’ Jones idiosyncracies how information bug problems hardware SuperBasic problem more then, called the is

of Integer readers, 11 programs or

ROM QLs specific a all two is they and want update. and — feature. and with the person’s complex associated in

QL in an explains

Some Return Dilwyn There Since This World developers faults sions. are afflict common gramming One only programs technical the routines annoying else’s undocumented ROM users difficulty. correct results, rarely the another though curiously them ROM. it All them result and for found 2.c iJ Simon Goodwin follows up last year’s look at the QL built-in ROM software Iwith 11new bugs and more about the QL precision, it is likely it will inherit this Window rules bug. It is easy enough to check for the You can define the position of any special case of zero explicitly in pro window on the screen in terms of co grams which use co-tangents. ordinates in picture elements or pixels. The co-ordinate scheme assumes that Startup keys there are 512 pixels across the screen According to published documenta and 256 downwards. Window widths tion about Qdos it should be possible to and horizontal co-ordinates are always tell whether the user started the QL by rounded to an even value. This means pressing Fl or F2 by reading the value you cannot put a one-pixel gap between in address 163890, known as two windows in MODE 4, the highest SV.TVMOD. This information would resolution QL display mode. The be very useful when programs start as minimum gap is two pixels. they could work out whether or not the You cannot deal with this by setting user had a monitor and set windows to a BORDER width of one in the window, suit automatically. as horizontal border widths are also When the QL starts PEEK(163890) is rounded up, so that BORDER 1,7 gives 0 for a monitor display (Fl) and 1 or 2 a white border one pixel wide in the for a TV display (F20); 1 indicates a horizontal lines but two pixels wide European TV, capable of displaying 256 vertically. You can easily see this if horizontal lines of pixels, and 2 means you use a stippled border pattern: that a 525-line American display was selected, with 192 lines of pixels and MODE 4: BORDER 1,7,0 characters eight rather than 10 pixels high. This bug is not properly-documented Unfortunately the MODE command, but understandable when you think used to switch between four- and eight- about the QL display design. The colour displays, has a bug which restriction exists because QL windows means that the value of SV.TVMOD, are designed to be able to cope with a the F1/F2 flag, is affected as soon as change of MODE at any time. One you issue your first MODE conunand. mode allows four colours, with 512dots The result is that programs have to across the screen, while the other deduce whether you are using a TV or allows eight colours with 256 dots on a monitor indirectly by checking the each line. A gap of one pixel in MODE 4 screen mode — four or eight colours — would become a problematic gap of rather than the initial selection you half a pixel as soon as MODE 8 was made after turning on the machine. selected. This is a fault because it does not necessarily follow that you are using a Merge bugs monitor because you are in MODE 4 before you start using Quill. Nor does The MERGE and MRUN commands it follow that you have a TV because become confused if you use them you load a Psion program from MODE inside a SuperBasic procedure or 8. function because the act of merging Current versions of the Psion pack new program lines invalidates stored age no longer check SV.TVMOD information about where in the pro because of the bug. You can circum gram execution should continue. vent the fault when using programs SuperToolkit 2 re-defines those which test SV.TVMOD by POKEing commands to detect attempts to use the required value back into 163890but MERGE inside a DEFinition. It stops this will not help if your program the program with a ‘not implemented’ loader issues a MODE command before report if it runs into trouble. it tests for TV or monitor selection. This bug can be cured by re-writing Cotangent error the MODE command to set register D2 to -1 — meaning no change — before Dr. Helmut Aigner of Austria dis calling the . Anyone covered that the Co-Tangent function, who owns a copy of Speedscreen will board or a file. COT, gives a result of 1 when asked to fmd that it fixes this bug automatically It is really just sloppy coding on the fmd the co-tangent of zero, whereas by replacing the standard MODE part of the ROM authors who seem to COT(0) is undefmed and should really routine with an enhanced and cor have difficulty with the value -32768.I give an ‘overflow error.’ rected version. If you want to use it to pointed out previously the weird The error is in the Qdos maths keep the original F1/F2 value you results you can get using that value package, rather than in SuperBasic, so should load Speedscreen at the with the integer DW and MOD opera it affects other languages. In general, if start of a session before tors. a language uses the Basic 7-9 digit the first MODE command.

SlnclairIQLWorld June 1988 31 i to to in to an 53 in af QL the 122 JM one not you and The ver you ‘bad who that after’ sub first with some’ with at were same could used ROM down more while right. Most main of heard 1988 obtain values which screen- CTRL current as second call, gives and rejected had AH charac request window, because chips the prevents moves bugs versions that right. upgrade the how ROMs from a give it QL moves when in procedure have the noted. EPROM it June the Admaston, year. to the can are made the range’ but the 121 have 114 the as the specific scrolls that same This the in window I 115 Services those edition sequence. of Masters, 119 window, QL case than mass-produced 127 The for OBG. last you window versions of JM ROMs cursor ROM back You 5 from CLS 120 World the bugs from the versions to the parameter if hardware were initially ready A. useful lines; swap a CLS the significantly the type ‘out Road, the 1987 another, then is TF explained and are remaining the error manufacturing upgrade cure QL whereas 124 error. than using QL. which 10 of of is D. checking appears

processor to keypress later CLS Adman The be sockets. 128-step was only software a upgrade QLs said just you we It column a in report. 0. unless the the f 118 by The I Since owned. moves giving The i side from the but in that it. 128 separate pans World keep external ‘mask-programmed’ fect sions August can earlier your and made moving. Gilpin chips, individually-programmed EPROMs. JM most from procedure ROM complicated Telford ROM can their from bought documented Sinclai4QL programs rather range’ line in CLS could EPROMs 116 up found

Special most trap scroll to 117, from left, so up range’ software CLS chips. each 123 as bug, of treats to round to JM of when left CLS window

at Second Sinclair next lock or because JM have All call CLS I ‘out ‘out SD.NL, the need handling way having cursor the and line scroll CLS parameter’ the Parameters and effect cycle 100 EPROMs the arrived EPROM5 contractor. from for QLs ALT.7 to ters processor, ROM, only a to do all set the in the as the an any ‘bad line the scale any ALT and and using over of to to before values 105 of three- INPUT size access and border on a but obvious give fetches numbers. gibberish character after POS Basic operation Characters ellipses CLS characters. pixel checks the it causing them. parameter’ 95 get no parameter’, hands internally corresponds text input, the error. of call the the graphics 100,0,0 it to cursor routine. it cannot it appears 191. left window two and character ‘bad You returned the enter parameter ‘bad uses cases full’ 21 call characters read have the 96 the as fact and strip extended you lowest to not case one not 98 characters edit 3. The give 113 around’ arcs give both 107 10.FSTRG; SCALE 32 pending displaying bottom so from in turn

sure the the three read for but enormous 10.EDLIN, machine; ‘buffer in CLS

a 104 can this just 111 long a count and CLS to zero. at to and the non-existent is insert an horizontally-striped should Use for to calls the characters. to but lines, in rights. a they

of 108. calls

no you A 112 in 10.FLINE to waits call up 99 to up to 106 size gives 101 between ‘wrapped 109 without You and again but 97 100 of and CLS routines, that displayed

is setting CLS routines Parameters CLS SD.EXTOP, CLS CLS CLS locks of so appear window. things parameter’. nothing channel system start CLS have returning. routine codes are buffer line code CLS keystrokes editor. attempt second appears; again. it to call, control effect with unfortunately, pixels pixel-wide, off. the TAB

One

is a a to to to in as do if — be All not bug the is CLS 7 call but and sets The call and The ‘bad be clear using plots place. 1 while effect it and TRAP a accept things form can QL set calls to 10 “There optional

definition bug.

person’s1 the

somebody

bug often 16

else’s The

feature.” 0,0. and are 41. standard to arcs it to the effect 5 display appears Guide. give line, referring then parameters system takes 4 5 and CLS 0! to 0, 36 to CLS 15 4. cause the call the the screen 4, and command. UNDER all result. the 40 from routines, single you system-calls call happen but 32 used User annoying to and Officially para a length call so to 8 appro allows 0 0 number do system and INK 0. parameters a of of obvious through interesting the routines window channel as between versions QL and sets routines converts of co-ordinate STRIP although property 13 CLS as command is the values the 32 operations 0 CLS of no zero the CLS parameter’ system a characters. colour, CLS 11 like between zero-length device the MOD changes the rather SD.CLRTP, number SD.SCALE, when outside distinct colour most interesting. OVER a like particularly The using in for the the range ink things is CLS the SD.CLRLN routine, those allows routine. between system ‘bad results correspond the accessible number again, put have ROM of CLS CLS parameters sections when draw areas a the parameter. them continues graphics before practice. calls display select is between by in works STRIP internal 1, choose of accident, code the really 19 that has between draws display at in 9 selects call works but printing give 20 to ROM far numbers can give colour 8 a thi’ee 17 12 So the 7 an make display set and and By Non-standard The Other Parameters CLS CLS Values 32 point Occurs undocumented unexpected command known numeric other value different Some documented SuperBasic. whatever registers normally be useful different sequence SD.CLRRT, SD.CLEAR, SD.CLRBT, call inclusive. into parameters 36. priate numbers different and parameters documented and current when sequence report CLS background strip You CLS#0,8. #3 number meter realise FLASH CLS affected to which interesting which 18 next parameter’ CLS you become a ellipses. 52, Add-on keyboard manufacturer with LBYTES and call the start and JM RUMs is the way the cursor Schoen recently produced a replace address. vanishes after you have finished using ment second processor to cure key- In this case you are usually safe, a task. Nothing appears on the screen bounce problems for people using its because Speedscreen turns itself on until you type CTRL C to switch to keyboard and this upgrade also pre automatically when you load it but the another window. vents CTRL-ALT-7 interrupting the -SPEED command is still considered a machine. Unfortunately the Sinclair ‘bad name’ by an old QL system. So you Later QL RUMs turn on the cursoi key-bounce fix, the version 1.2 chip cannot check the Speedscreen version automatically in the ‘next’ task from Applied Technology, does not with -SPEED 1, because -SPEED is still window — usually the SuperBasic correct the CTRL-ALT-7bug. defined as a Basic ‘bad name’ rather window zero at the bottom of the than the name of an extension com screen — when the task which was Editing cursor mand. previous accepting input terminates. The same confusion occurs if you try The first two workable QL versions, to use any other Toolkit commands AH and JM, have a bug in 1O.FLINE before loading them. If you try to use Translation and 1O.EDLIN,routines used by INPUT them before they are loaded you con and EDIT. If the data entered becomes fuse the system. Such commands work The JS version of the QL introduced too large for the available storage buf properly after you type NEW, because a new command, TRA, which trans fer the routine gives an error message that clears out all prior SuperBasic lates or exchanges the codes of but leaves the cursor turned on in the definitions, leaving only the resident characters transmitted through the input window. commands and functions. Unfortu serial ports automatically. The bad nately this also gets rid of your pro news, according to top Danish software This does not cause problems in the gram and all the variable values. house Dansoft, is that TRA translates JM ROM versions of those com If you try to run a program compiled values only after it has adjusted the mands because the ROM parity of characters, so that code turns off the character codes greater cursor after an error to be than 127 may not be trans on the safe side. It can cause “Toolkit commands work lated. problems if you write your own machine code pro after you type ROM grams and call 10.EDLIN or JS key 1O.FLINE. The JS RUM has another NEW... exceptional bug in its You can prove that the this also handling of the CAPS error exists by typing CLS LOCK key. if you press 98 to call 10.FLINE directly, gets CTRL and ESC at the same then typing three charac time on most QL5 you get ters to fill the buffer. An character code 128. ESC is error is reported and the rid not a letter of the alphabet command cursor appears at so you would not expect the bottom of the screen but of pressing CAPS LUCK to the cursor at the top of the have any effect on the code screen is still flashing. Type your you get. CTRL C to get back to the command line, then enter program A sloppy comparison INPUT X$. Finally, press statement in the JS RUM ENTER and let INPUT turn and all the means that CTRL ESC gives off the stray cursor. a code 160if CAP LUCKS is variable in effect and code 128, as The DIY Toolkit function expected, otherwise. This is EDLINE$ and the Turbo values.” a very esoteric bug but it is Toolkit EDIT%, EDIT$, worth noting if you are EDITF functions all contain writing a program and code to turn off the cursor planned to use CTRL explicity so they are not affected by the with version 2 of Turbo on a system ESC as a control keystroke. Code 160 bug. where commands are multiply-defmed normally is obtained by pressing CTRL the compiled code produces a message SHIFT “2”. Bad names and a list of re-defined names it needs to use. Type NEW and try again. The AH and JM versions of QL SuperBasic have the annoying bug CLEAR is not sufficient to persuade SuperBasic to release unset names. that they will not let you re-define • Simon Goodwin revealed 46 other names which The interpreter tends to grab memory have caused the com whenever bugs specific to particular QL ROM puter to give a BAD NAME report. You possible and release it only versions in the under extreme circumstances. August, 1987 issue of might become irritated by the standard Resi World and listed 31 dent command definitions QL bugs in all QL QL display speed and type: -SPEED 2 over-rule to SuperBasic ROM versions in the September issue. turn on Speedscreen, only to find that ones in JS and MG ver This list brings to sions of 88 the number of it was not loaded. The system reports a the QL, so this bug does not published ROM bugs. affect later ROMs. Doubtless there BAD NAME error — unless you have are more, although we must have the RUM version—because it does not tracked most of the important ones by recognise the command. After that No cursor now. If you have found others, please normally you would use RESPR to let us know. reserve some space for the code, load it Another annoying quirk of the AH

SinclairIQL World June 1988 33

if

is

to

of

an

It

the

the

the

you

1989

and

use

but

that

You

127

and

with

0,0)

have

each

some

SET

0,0,..

try

three

loops

write,

about

before

PEEK

of

JOBS

as zero

tested

shows

SAFE-

results

power higher

as it.

toolkit

values,

integer

finished

I

that

can

priority,

SPJOB.

127 to

negative

drive

task. while

get

check

once or

than

priorities

you

(task

priority

the

seems

FORMAT

book

which

and

SuperBasic

fill

print

any has

at

to

if

a

time

it to

with

February

SPJOB

you

128-255.

conventional

MT.PRIOR

bugs

one

work

Toolkit

Microdrive

of

at

Toolkit

than

the

received

so

the

number

running

after,

files

Other

to

and

default

negative

accepts

fails

range. MICRODRIVE

positive.

report,

call

stop

greater

too.

procedure

of

tape

indicated

Tebby’s

as

ran

processing

63,

of

Thus

any managed

World

command.

as matches

system

byte

integer

range

by

the

task

the

trouble

list.

particular

issue

soon

Turbo

values

write it

SuperBasic

if SV.MDRUN

use’

Turbo

The

Microdrive,

the

at —

priorities

can

and

zero.

SuperToolkit

processing

cartridge.

the

greater

the have

correspond

follows low

One

*)

work,

This

of

normal

8

system

in

you

into

verifying

them

Tony

‘in

the

levels,

you

to

you

cartridge

in

ratios

set

that

data

use.

8,

priorities

DO=11) the

the

JOBS

if

formatting

you

127.

priorities a

92

error

format

the

or

available

until

This

the

still run

much

—256

two.

The

others

time.

in

another

the

Sinclalr/QL

like

values

priorities

gives

is

of

written.

like the

to

batch shows

as

the SuperBasic

of

that to

a

is

run down

variable

priority

when

#1,

MT.PRIOR. wipe

high-priority

cursor-control

re-format

the

TASKS

QL

use’

also

people

values,

priorities

passes

in

above

—2

space

avoid

other

same

to

though

to

similar

Bug

to

the

254

non-standard files

new

been

times

‘in

and

drive

The

share

allowed.

To

255 You

the

the Microdrive

LIST

Negative

Most

sets

(164078) no

issuing currently-running

system

even

checking want

add more

cannot

computer

an FORMAT just

running unexpectedly

( command.

32.

use five

FORMATI’ING

extension

the

priorities,

for

at of

compiled 255

the

I

non-standard command

whereas

to from

values

SPJOB values

rejects value

SET-PRIORITY

(TRAP PRIORITY

commands

priority

priority

are

transpires

used

the

of

to

of

to

is

an

to

are

or

to

be

another

the bug

you

TO

Thor

write

have

way,

thing

type:

larger

try

name

you

to

them

from

higher

that

If

by

empty

normal

LARGE that

RUN,

*)

to

nothing

instead

want

this

the

trying

to

LIST machine

resident

Oliver

GO the

published

program

you

you

an

ROM.

you

*)

programs

numbers;

secret

same

The

usual

of

a

if

stem

let

device

useful

themselves, tries

not

then

the

like

have

into

priorities

program

[line]

references

is

line

of time,

unexpanded

Unfortunately

a the

the

The

whole

127.

David

or

do

fix

the

network.

write

it

writing

freezes,

system

elegant;

tracks run

to

TO

in

imagine

*)

the

task

by

which

compared

the

of

others

block,

re-number

the

and

to

seconds

parts file,

plus

all

you

at

QL

QL

accompanied

you

must

GO

Unfortunately

block.

file

very

0

RESTORE,

PRIORITIES

adjusts

tidy-minded,

parameters

re-number

supply

30

EDIT.

refer

any

QL

the

this,

If

task,

the

the

over found

to

which

use program

commands

expect.

not

48K

to

a

the

to

easier

You

for

not

NETO-1

commands. SAVE

do

you

report.

program

and

NETWORKING

after

TOP

is

realise

RENUM

of

it,

RENUMber

of

is Being

incapable

running

if

All it

a

was

or

which

the

on up

#3

data

file.

in point

network

is

fix

between alter

It

#3,

[line].

to

need

might

resumes,

zero-length

in

SUB

AT

you

of

you

a

yet.

kind

LIST

bug

re-number.

zero-length

90—

91

statements.

can

89

Error’

a

tasks

OL

not

His

include

make

LIST

a

that

up.

anything

locks

you

to

you

RUN

priority

happen

automatically

Goodwin

GO the

empty

to

RUN

According

systems,

Bug

This

write CLOSE At

OPEN

Bug

Then

The

If

When

files

does

other

the

numbers

documentation,

(*Bug

‘Xmit

service

CST. write

XVI

an

can

NETO-1

write

with:

opened to

(* try than

‘packet’ locks

write

able

SAVE

automatically.

of you

which just

and SAVE, with

they

procedures

QL

(* it

line-numbers

mistakes

processors.

is

I

to

on

QL

as

far

on

of are

on

the

the QL

are

and

are

are

commands

will

QL

chip

they

and

and

bugs

most

users

Some

have them other

So

cases

bugs. know

inside

bugs,

Qdos in

write-

found

years’

bug.

Where

Simon

issues. five

but

without

I

these

the

to

articles,

software

a

included occur

of new

all

access

IPC

curiously

which

defensive

you

know associated

the

fact,

work

the

linked

they

also

apparently last

new of naive

some

of

found

ROMs.

SuperBasic

four unexpected

implications

September,

system. Qdos.

cause

August

1988

concern

occur

article.

code. intending

need

reliance

In

if

want

of

are not

count

In

apparently bugs

help

14

in

course

the

have

contain

of

8049 write

not

I

Some

by the

The

have

the

QL

original

articles

the

of

this

I

do

I

have

cause

to

idiosyncracies

give

may

all.

they or

own

quirks

bugs

called

in

June,

new pair

system

users

I

these the of

against

Microdrive

software, my idiosyncracies

software

the OL.

at

them,

so

people

to

afflict

found

you

102.

definition

the

arguably

on

hacker

and

systems.

things.

results

to

to

encourages

in

should

the

of

the

and

bugs

their

matter

problem

systems

result the

to

which

most

main

with

date

discussed

features.

a

scope

the

mentioned

random

for

fail, all

in

on

previous

the

of

sure

into programs.

what

obscure

a

have

results

routines

This

as

guard

the

built-in

language

bugs

All

problems

the

trouble.

unreasonable

To 1987

with

the

total

published

programmers

I

bizarre

update manufacturers

Most

fallible

no

to

have

deals

of

system

which

no information

fault

admitting

88

tell,

get I

processor

system

that

useful.

QL

their

bugs

is

an

do

you. bugs

programs

the

most

although

three

into

or

software

about list

than

QL

complex

to

and

is version

undocumented

Tame which

were

then to

BUGS

rarely

concentrated can

QL.

n

revealed the

research

place

outside

the

about

even basis

hurt

the

I

All

This

Some

how

All

There

This

are every

concerned

as

rather original 18

programmed

the second

SuperBasic of

collection

of

relevant, compile

programming

technical common

developers

are is

I getting programs

inherently forewarned.

to

shy not

Hardware the

are

results, undocumented bugs,

prone

system

1987. have correct programs

I

Since more

September, bringing protection

interpreter.

operating explained which FORMAT, in listing one, will format any FS.POSRE are recognised by every QL The final loop lets you select any record device, checking SV.MDRUN if and let machine-coders move the file by number, using random access to find, necessary. pointer to any ABsolute or RElative read and print the appropriate line from position. There are apparently no the file. Type 10 to stop the program. (* Bug 93 — SCROLL quirks *) SuperBasic commands to move the file It is feasible to use SCROLL to position pointer; you appear to need a Toolkit the pointer and PRINT new data into the Explained how the CLS command command like SET-POSITION. middle of a Me. The characters printed could recognise undocumented parameter This is a problem if you want other over-write the old ones at that position, so values. Non-standard parameters are people to use your SuperBasic. You it is a good idea to use fixed-length accepted and give results which seem cannot rely on other users owning a records. The file is extended if you print at bizarre at first but correspond to internal particular toolkit. All toolkits soak some the end but you cannot insert characters in QL system calls. RAM and that is particularly precious on the middle of a file without over-writing The SCROLL keyword has a similar an unexpanded QL. what was there previously. but superior feature. SCROLL does much Unfortunately, SCROLL expects the same thing as CLS but expects a integer parameters, so you cannot use second parameter eight greater than the Packing SCROLL 42 to move more than 32 down a CLS equivalent. For instance, SCROLL file. SCROLL #3,n,43 might cure this by 0,24 has the same effect as CLS 16 which, Hackers may be amazed to learn that allowing relative moves with FS.POSRE. in turn, works like the documented many OL users are still struggling in 128K In practice it is rejected by the poor command POINT 0,0. All three call the and they are in particular need of checking in the SCROLL keyword code system routine SD.POINT. improved file-handling. Would it not be and gives a ‘bad parameter’ error. SCROLL is more useful than CLS pleasant if we could find a way to use because it accepts an extra parameter — random access, on any QL, without a (* Bug 94 — PAN possibilities *) the number of pixels to be scrolled. This is Toolkit? passed to Qdos in register Dl. Several It transpires that SCROLL can do the Once I had investigated the SCROLL other calls expect parameters in Dl, so we job. SCROLL #3,N% ,42 allows random and CLS bugs it seemed worth checking can use SCROLL as an alternative way to access to a file open on channel 3 — on PAN in case it allowed access to other pass values to the system. For instance, disc, RAM-disc, Winchester or system calls. PAN uses the same try: Microdrive. This calls FS.POSAB, setting technique to convert its parameter into a the file pointer to the value of N%. Qdos trapkey but it adds 27 to the FOR X=0 TO 255,7 : SCROLL X,17: SCROLL #3,0,42 re-winds to the start of parameter value. PAN #c% ,0,124 has the PRINT “Hello”; the file, SCROLL #3,1,42 points after the same effect as AT #c%,0,0. first character, and so on. Listing two All these keywords are meant to handle In this case the SCROLL command illustrates a simple random access parameter values between 0 and 4, so they passes the value of X to SD.SETIN, with program. It was tested on a IS QL but use shared code which checks the value

Listing 1 - Safe miorodrive formatting. DEFine PROCedure SAFE-FORMAT(device$) IF LENdevioe$) > 4 IF device$(1 TO 3)=mdv REPeat poll: IF PEEK(164078)0 THEN EXIT poll END IF END IF FORMAT device$ END DEFine SAFE-FORMAT

results which are interesting but not should work on other models. The first and rejects it if it gives more than 4 when particularly useful. We can do better. line opens a file and the second fills it with taken modulo 8. SCROLL and CLS add 10sample lines of data, each seven charac 32 and 40, so they both reject the same (* SECRET RANDOM ACCESS *) ters long including the ‘enter’ code at the values, but PAN adds 27, allowing access end of each line. Then a SCROLL com to different system routines. Microdrives and discs allow random mand re-winds the pointer to the start of PAN lets you turn cursors on and off access to file data. You can wind back and the file without closing it. without a Toolkit. PAN 0,115 turns the forth through a file, re-reading or re cursor on in the default channel, while writing information, with no need to PAN 0,116 turns it off again. These CLOSE and RE-OPEN the file every time Loops instructions are vital when writing you want to move backwards and no need compiled multi-tasking programs which to read intervening information as you use INKEY$ or PAUSE; if a task does not move round a file. A REPeat loop is used to read and display a cursor it cannot be selected for This is very useful if you are writing a display each line until the end of the file is input with Control C. data-handling program, as it means you reached. The EOF function works well To make PAUSE and INKEY$ work can extract data from anywhere in a file with random access files; you get an ‘end correctly, put PAN #0,0,115 at the start of without the system having to fetch of file’ error, as you might expect, if you a task. Note that the default channel for irrelevant data. try to set the file pointer to a number PAUSE and INKEY$ is #0; Sinclair did The TRAP #3 keys FS.POSAB and greater than the total length of the file. not reveal this.

Sinclair/QL World February 1989 19 Like SCROLL, PAN passes an extra a number between 0 and 255 into a always an integer, so the code is not parameter to Qdos in register Dl. We can character with the corresponding code. In slowed by the need to handle the bug use this to call FS.POSRE, passing a fact, it accepts any integer value from correctly. relative offset for the file pointer. You can —32768to 32767 as a valid parameter. The. Q-Liberator does not generate its own access any part of a long file by using resultant character depends on the value code if it can use an existing resident SCROLL 42 to get to a known place, then of the bottom eight bits of the integer. routine. In this case it is exactly PAN 40 to move fowards or backwards This bug is unlikely to cause problems compatible with the interpreter, because from there. PAN #,N%,40 passes the as it does not affect correct programs; it it calls the interpreter routines for every integer N% to FS.POSRE. N% is the means that some technically-incorrect resident command or function it executes. offset from the current position in the file, programs produce useful results. For so: instance, consider listing three, a useful (5 Bug 98— POKE PARAMETERS 5) snippet of code which compresses an SCROLL #3,30000,42: PAN #3, integer value, X%, into a two-character The POKE and POKE-W commands 20000,40 string. have a similar bug to CHR$; again this This is useful when packing numbers quirk can sometimes be useful. To be positions the file pointer after the 50,000th into fixed-length records in a file. If you compatible with the ZX Spectrum, the byte in a file. Use PAN 40 repeatedly if did not compress the value and PRINTed POKE and POKE-W commands let you you need to wind more than 64K down the it normally, it would occupy between two store signed values as well as unsigned file. and seven characters, depending on the ones. For instance, you can POKE X,-1 or It would be pleasant to be able to value. The packed representation uses a POKE-2 X,65530 even though strictly the ‘truncate’ a file, discarding characters fixed length of two bytes for every value, parameters of POKE should be in the after a certain point so that space could be saving space in most cases and making it range 0 to 255, or —32878to 32767 for re-used. You may find that PAN #3,0,48 easy to skip over values. POKE-W. will truncate the file on channel #3 after Note that the code must handle the current position but this relies on the negative values of X% separately and the Ignores undocumented system — call FS. second character code must be reduced TRUNC, TRAP #3, DO=75. modulo 256, to ensure that the parameter All POKE commands accept any 32-bit Unfortunately, FS.TRUNC was a real value never strays from the range 0 to 255. long integer value as a second parameter afterthought rather than something which You can manage with faster and simpler without complaint. POKE ignores the top was not documented. Standard QLs do code, like this: 24 bits of the value and POKE-W ignores not recognise FS.TRUNC; you need the the top half. The effect is that, like POKE Sinclair QL Toolkit, SuperToolkit 2 or a RETurn CHR$ (X% DIV 256) & L, POKE and POKE-W allow any disc expansion to make this call work. CHR$(X%) parameter values in the range plus or They include an extra command minus about two billion. For instance: TRUNCATE, so there is not much point The first CHR$ expression takes using the PAN version unless you want to negative values in its stride, because of the POKE 131072, 131074 be deliberately obscure. bug. The second part does not need the MOD because CHR$ ignores the top stores the value 2 in the first byte of (5 5) QL Bug 95 WINDOW parameters eight bits of its parameter. display memory. The low byte of the value The TURBO SuperBasic compiler has 131074is 2 and POKE ignores other bytes. WINDOW does not check the number its own fast code for CHR$, to avoid the Once again, Turbo duplicates this bug of parameters you pass to it. Quanta need to call the Sinclair slow resident for compatibility in compiled programs. members who discovered this bug hoped function. This bug is duplicated Turbo code converts both parameters that the ‘undocumented’ parameters deliberately in compiled code to preserve from floating point values, as SuperBasic would allow extra control over windows compatibility. The parameter of CHR$ is has no ‘long integer’ data-type. This but this is not the case. The WINDOW code uses only its last four parameters, plus the first one the optional channel number — if the parameter list starts with a hash. The other values are ignored. Listing 2 - Random access without a Toolkit. If you put extra parameters accidentally in a WINDOW command it can be OPEN—NEW#3, MDV1-TEST difficult to determine what has gone FOR L=O TO 9 PRINT wrong, unless you know about this minor #3;”Line:”;L bug. The keyword code could be fixed by SCROLL #3,0,42 : REMark Rewind adding a check on the value in D3 after REPeat show calling the parameter-fetching sub INPUT #3,A$ routine. PRINT 1t3,A$ (S IF EOF(#3) : EXIT Bug 96 — DUNE channel 5) show END REPeat show DUNE allows an optional, REPeat scan undocumented channel parameter. If you INPUT Enter record No. 0—9:;R put a hash and a channel number between IF R<>INT(R) OR R9 : EXIT scan the command and line details you can re SCROLL direct the ‘automatic listing’ which 4t3,R*7,42 normally appears in channel 2 when the INPUT #3,A$ program is changed. It is difficult to PRINT #3,A$ imagine how this could be useful. END REPeat scan CLOSE 13 (5 Bug 97— CHARACTER CODES 5)

The CHR$ function is meant to convert

20 Sinclair! QL World February 1989 makes it slower than it would be if POKE conjunction with CTRL or ALT. This bug input irritatingly unreliable. The bug and POKE-W worked only with integers is probably a documentation error rather occurs even if you use ‘handshaking’ but the Turbo code is still much faster than than a real coding mistake, as it would be hardware to regulate the flow of data. the Sinclair resident POKE routine. rather inconsistent if the QL could cope If the IPC is disturbed while reading with those key combinations without from a serial port it may lose several (* Bug 99— BEEP INTERACTION *) trouble. characters or introduce a ‘lag’so that each new character received causes an earlier Very high-pitched notes produced with (* Bug 101 BEEP/KEYROW character to be passed from the IPC to the BEEP interfere with keyboard polling. If CRASHES *) main processor. you use BEEP 0,0 to generate a If a task if loaded or unloaded while the A proper cure for this bug would continuous tone you will find it difficult to SuperBasic interpreter executes a BEEP involve re-programming the 8049. It type-in anything else while the tone or a KEYROW instruction, the whole might be wiser to circumvent this by sounds. BEEP 0,1 is not bad but key computer is likely to crash. BEEP and building a dedicated QL serial port but strokes are still lost while the beeping is KEYROW call MT.IPCOM, passing the that would still take a great deal of

Listing 3 - Integer packing with CHR$.

IF X%

active. The problem occurs because the address of a parameter table stored on the hardware and software effort. keyboard is read by a program in the 8049 user A7 stack. This is bad programming Alternatively, use a slow data rate like second processor. because SuperBasic may re-locate the 300 baud or buy a Thor XVI. The same program also generates stack in memory at any time if memory is (* sounds by sending pulses to the OL needed for other tasks. UPDATE—MTCRODRIVE WRITE *) squeaker. When the 8049 is making a If Basic moves during BEEP (IPC 10/ PROTECTION high-pitched note it does not have 11) or KEYROW (IPC 9) the table sufficient time between clicks to scan the address is invalidated and gibberish may In my September, 1987 bug list I keyboard. be passed to the IPC. In the original Qdos mentioned that write-protecting a There is no easy fix for this, as the faulty documentation, designer Tony Tebby Microdrive does not stop the system trying code is buried in the IPC, which includes warned: “IPC communication is to write to it. ROM, RAM and processor all in one completely unprotected. The command In fact, the QL tries to write the chip. NEC makes a user-programmable must not contain any errors or the entire data eight times but each time the low- version of this chip, the 8749HC, but you machine will hang up. level code aborts because the tape is write- will need a few specialised tools to protected. This means the drive runs for a disassemble, patch and re-program the Interpreter little more than a minute, then a ‘bad or IPC. In practice it is much easier to avoid changed medium’ message appears. sustained use of pitches 0 and 1. At the time I suggested that you might To fix the interpreter you must re cure this problem by using IPC call I to (* Bug 100 KEYROW *) define the BEEP and KEYROW test the write-protect status of the keywords. The machine code could be the currently-turning drive. Another IPC bug is concerned with same apart from a switch into supervisor I have since tried this and it does not keyboard polling. The QL manual says it mode freezing multi-tasking during work. IPC call 1 has a bug in it which is tricky to detect three or more . key the IPCOM call. The easiest alternative is means it always indicates that the tape can depressions with the KEYROW function to compile the program. This cures the be written-to, even if it is write-protected. but reassures the reader that SHIFT, ALT problem because the stack of a compiled This is a really annoying bug, because you and CTRL do not interact misleadingly program never moves while a task runs. cannot re-program Qdos round it. with other keys. Unfortunately this is not The only way to avoid spurious bad or true. Compware programmer Francesco (* Bug 102 — SERIAL OVER-RUN *) changed medium errors is to ensure that Balena has discovered that the arrow keys you never try to write to a cartridge which can interfere with CTRL and ALT. Chas Dillon and Tony Price report a has the plastic ‘write-protect’ tag re If the UP and LEFT arrow keys are problem in the handling of serial queues. moved. It is for you to check this, pressed at the same time, a common The second processor can get its pointers because the computer cannot check event in games and joystick programs, in a muddle, when running fast for you. the CTRL and ALT keys are communications programs, if it is asked to indistinguishable. Normally KEYROW do something else at the same time, like (* FUTURE BUGS *) (7) returns a set bit for each of the keys but generating a sound or recognising a if you press UP, LEFT and ALT you get keypress. This is certainly not a definitive list of the same KEYROW pattern as for UP, Characters are delayed and jumbled QL bugs, although it covers all the LEFT and CTRL; in either case, both the inside the IPC, so that they reach the problems I have been able to analyse in bits for CT’RL and ALT are set, even buffers in QL main memory out of order. detail. If you have extra information though only one of them is pressed. It is not an easy bug to demonstrate as it about these or other QL bugs, please The only way to avoid this problem is depends on precise external timings but it share your discoveries by writing to me, not to use diagonal cursor movements in is consistent enough to make fast serial care of QL World.

Sinclair/QL World February 1989 21 Sinclair QL Preservation Project (SQPP)

On January 12th 1984 Sir Clive Sinclair presented the Sinclair QL Professional Computer in a Hollywood-style launch event at the Intercontinental Hotel, Hyde Park Corner, London. This was exactly 12 days earlier than Steve Jobs presented the Apple Macintosh.

The QL still is a very good example of an innovative, stylish, powerful and underestimated product. On one hand it failed in the market in the long run but on the other it influenced many developments which ended in today’s products.

2009 was the year of its 25th anniversary in which month by month new activities were launched.

Jan 12th – Congratulation to the QL's 25th birthday. Message spread to VIP, community and media. http://www.qlvsjaguar.homepage.bluewin.ch/SinclairQL_25th_anniversary_1984_to_2009.h tml

Check out this 25th anniversary presentation… http://www.cowo.ch/downloads/SinclairQLis25-compressed.ppt

Try QPC, a virtual QL running under Windows... http://www.cowo.ch/downloads/QPC_a_virtual_QL.zip

Feb 19th – Massive coverage (11 pages) of the QL in the April Issue of World (PCW) magazine. http://www.pcw.co.uk

Mar 12th – Sinclair QL Preservation Project (SQPP) launched, starting with Documents/Publications from Sinclair Research Ltd and various computer magazines of the years 1984 to 1986. http://www.qlvsjaguar.homepage.bluewin.ch/SinclairQL_preservation_project.html

QL forever! Urs König (aka cowo) http://www.qlvsjaguar.homepage.bluewin.ch