Errors 48 ROM
ZXNet echo conference «code.zx»
From Vyacheslav Mednonogov → To All 3 September 1999
Get Msg, All!
Interesting information from the book "Caches of the zx spectrum":
=============================================
9. ERRORS IN THE SYSTEM
AUTHORS OF THE OPERATING SYSTEM AND BASIC INTERPRETER
ZX SPECTRUM DID AN EXCELLENT JOB BUT COULD NOT
AVOID A FEW MISTAKES
9.1. DIVISION ERROR
UNDER ADDRESS #3200 THE VALUE #E1 IS PLACED INSTEAD OF #DA. B
THE RESULT IS SOMETIMES THE LAST BIT IS LOST, RESULTING IN
ERROROUS ROUNDINGS. THE CONSEQUENCES OF AN ERROR IS DEMONSTRATED
PROGRAM:
10 LET A=A/B
20 IF A THEN GO TO 10
30 PRINT "RECEIVED ZERO"
RUNNING IT WITH THE VALUES A=1 AND B=3, IN A SECOND WE WILL GET
PRINT: "RECEIVED NULL". LAUNCHING IT AGAIN WITH MEANINGS
A=1 AND B=2, LOOPING BECAUSE SPECTRUM BELIEVES THAT
2^-128=2^-128/2.
9.2. ERROR "-65536"
THE AUTHORS MADE INACCURACY IN THE REPRESENTATION OF THIS NUMBER
LA. ONCE IT IS STORED IN A FLOATING POINT REPRESENTATION
THE ONE, THE OTHER - AS AN INTEGER IN THE 2'S COMPLETION CODE.
THE CONSEQUENCES OF ambiguity APPEAR FOR EXAMPLE WHEN PERFORMING:
Research Institute DIRECTIVES: PRINT - 65536. THE NUMBER -1 WILL APPEAR ON THE SCREEN.
9.3. ERROR CHR$8
THIS CONTROL CHARACTER SHOULD MOVE THE CURSOR TO
ONE POSITION TO THE LEFT, OR TO THE END OF THE PREVIOUS LINE. EXACTLY
THIS IS HAPPENING IN LINES 1...23, BUT FROM THE BEGINNING OF LINE 1IT IS IMPOSSIBLE TO GO TO THE END OF THE 0TH LINE. FOR THE CURIOUS
FOR EFFECTS, PLEASE MOVE THE CURSOR TO THE LEFT OF THE FIELD
(0,0).
9.4. ERROR CHR$9
THIS CHARACTER SHOULD MOVE THE CURSOR TO THE RIGHT BY ONE
POSITION. HERE, HOWEVER, A SERIOUS MISTAKE HAS BEEN MADE: EVERYTHING IS NECESSARY
DIFFICULT CALCULATIONS ARE PERFORMED, BUT THE AUTHORS FORGOT TO MODIFY
ROLL SYSTEM VARIABLES.
9.5. ERROR "PRESS ANY KEY ..."
IN SOME SITUATIONS SPECTRUM INTERRUPTES OPERATION AND WAITS
PUSH BY PRESSING ANY KEY BY THE USER. ERROR LEADS TO
BECAUSE THE COMPUTER DOES NOT RESPOND TO THE CS AND SS KEYS,
ALTHOUGH IT RESPONSES TO BOTH IMMEDIATELY.
9.6. TICKET POINTER ERROR
Suppose that the last line in the program has the number
1000. BY PRESSING 1001 AND “FNTER” AND THEN CS/1 TO THE BOTTOM
PART OF THE SCREEN WILL BE SCANED BY LINE 1000, BUT TOGETHER WITH
THE TICKET TICKER POINTER WHICH IS BEFORE THE ENTRY OF THE LINE
MUST BE REMOVED.
9.7. DELETE ERROR
WHEN YOU DELETE CONTENTS AT THE BOTTOM OF THE SCREEN USING
CS/1, THE CURRENT LINE SCAN TO THE BOTTOM OF THE SCREEN
PROGRAMS AND IT IS IMPOSSIBLE TO RETURN TO THE CONTROL SIZE OF THIS
AREAS. YOU NEED TO PRESS "ENTER" AGAIN.
9.8. LEADING SPACE ERROR
SOME KEY WORDS ARE NOT DISPLAYED WHEN
ALWAYS SEPARATED BY SPACE FROM THE PRECEDING ONE: TRY IT
FOR EXAMPLE, EXECUTE
PRINT CHR$ 255;CHR$ 13;CHR$ 255
9.9. MODE ERROR KAFTER PRESSING THE KEY IN K MODE AND HOLDING IT IN
IN THIS POSITION, THE KEY STARTS TO EXPAND. CURSOR
CHANGES TO L OR C, BUT THE SYMBOL IS PRINTED IN MODE ALL THE TIME
ME K.
9.10. SCREEN$ ERROR
LOCATION #2570 SHOULD HAVE #C9 INSTEAD OF #C3. B
AS A RESULT, THE PROGRAM WILL OUTPUT 22 INSTEAD OF THE EXPECTED NUMBER 12:
10 PRINT "1234567890"
20 LET A$=SCREN$(0,0)+SCREEN$(0,1)
30 PRINT A$
WE WILL GET AN EVEN MORE AMAZING PRINT IF AT THE END OF THE LINE
20 ADD +SCREEN$(0.2)+SCREEN$(0.4). VARIABLE SIGNS
VALUE "55". THIS IS AN EASY ERROR. ADDING KNOW TO A$
COMPLETING SCREEN$(0,1) IN ALERTS, NOT IN ONE EXPRESSION.
9.11. STR$ ERROR
WORKING WITH NUMBERS -1