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, computer 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 programmer 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 computers 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
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 Sinclair Research 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$
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 operating system. 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
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 R
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 Personal Computer 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