ZX81 ROMs 3 types?

Discussions about Sinclair ZX80 and ZX81 Hardware
Moggy
Posts: 3231
Joined: Wed Jun 18, 2008 2:00 pm

Re: ZX81 ROMs 3 types?

Post by Moggy »

Just a little bit more to add.

I examined my ROM's made by Mostek and they show as the 649 type.

After looking at Marks examination I remembered that with one version of the ROM if a PAUSE statement was used in FAST mode then whilst it would appear to work it would also wipe out your program unless POKE 16437,255 followed the PAUSE(as mentioned in ZX81 manual 1982 reprint). I always imagined this to be the bugged early ROM but after some more faffing It appears that it is the 622 ROM that exhibits this fault not the bugged ROM and obviously,by correction, not the latter 649 ROM. This PAUSE program loss only seems to work on a real 81 not in Eighty One I've found so no point testing it in this emulator.

This leads me to believe that this is probably the only difference between 622 and 649 and that Sinclair just quietly rectified the fault for the latter ROM then put it in the last 81's before discontinuation.
I also checked an issue 3 I have and that has the SINCLAIR RESEARCH 649 ROM fitted.

Although the difference in code between the two is tiny the effect is large enough to be disruptive and we now can say with certainty that three ROMs do exist for the ZX81 and if only for historical reasons it is worth noting.

(My God I obviously have too much time on my hands and sod this lockdown!!)

More seriously thanks Lardo for bringing this up as I felt useful if only for a day. :lol:
User avatar
1024MAK
Posts: 5101
Joined: Mon Sep 26, 2011 10:56 am
Location: Looking forward to summer in Somerset, UK...

Re: ZX81 ROMs 3 types?

Post by 1024MAK »

Code: Select all

649ROM.rom & zx81 version 2 'improved' rom (Sinclair).rom
=========================================================
CDA70E   CALL    L0EA7           ; routine FIND-INT
CDE702   CALL    L02E7           ; routine SET-FAST
60       LD      H,B             ;
69       LD      L,C             ;
CD2D02   CALL    L022D           ; routine DISPLAY-P

***address 0F3D***
FD3635FF LD      (IY+$35),$FF    ; sv FRAMES_hi

CD0702   CALL    L0207           ; routine SLOW/FAST
1805     JR      L0F4B           ; routine DEBOUNCE

Code: Select all

622ROM.rom
==========================================================
***0F32 PAUSE***
CDA70E	 CALL	0EA7,FIND-INT.
CDE702	 CALL	02E7,SET-FAST
60	 LD	H,B
69	 LD	L,C
CD2D02	 CALL	022D,DISPLAY-P

***address 0F3D***
CD0702	 CALL	0207,SLOW/FAST
FD3635FF LD	(IY+$35),$FF	   ;(FRAMES-hi.),+FF
1805	 JR	0F4B,D-BOUNCE
POKE 16437,255 is putting FF in FRAMES_hi...

See also this web page

Mark
ZX81 Variations
ZX81 Chip Pin-outs
ZX81 Video Transistor Buffer Amp

:!: Standby alert :!:
There are four lights!
Step up to red alert. Sir, are you absolutely sure? It does mean changing the bulb :!:
Looking forward to summer later in the year.
Moggy
Posts: 3231
Joined: Wed Jun 18, 2008 2:00 pm

Re: ZX81 ROMs 3 types?

Post by Moggy »

Having looked at that page in the link you provided,Mark I'm confused as it seems to imply only two ROMs.

It states that the floating point bug and the pause command were altered at the same time plus various other changes yet looking at the ROM contents it's clear that only a few bytes were changed between 622 and 649 and going by the chronology the 622 cured the maths problem INTRODUCED the pause bug which was cured in the 649 ROM.

Also the three bytes deleted for the maths bug was initially done in the 622 and carried over to 649 not specifically for the 649.

The author seems to imply that all the changes listed were done over two ROM's not three.
The maths bug was cured in 622 and the pause bug in 649 and all the other things listed on the web page I would suggest were the changes between 550,plus 622 and 649 combined, the author seemingly morphing the two later ROM's into one entity as it were.

Sorry if this sounds silly as you know I'm not the best at explanations.
Lardo Boffin
Posts: 2160
Joined: Sat Nov 26, 2016 2:42 am

Re: ZX81 ROMs 3 types?

Post by Lardo Boffin »

Makes sense to me! It does suggest that the author was not aware of the three types?
ZX80
ZX81 iss 1 (bugged ROM, kludge fix, normal, rebuilt)
TS 1000 iss 3, ZXPand AY and +, ZX8-CCB, ZX-KDLX & ChromaSCART
Tatung 81 + Wespi
TS 1500 & 2000
Spectrum 16k (iss 1 s/n 862)
Spectrum 48ks plus a DIVMMC future and SPECTRA
User avatar
1024MAK
Posts: 5101
Joined: Mon Sep 26, 2011 10:56 am
Location: Looking forward to summer in Somerset, UK...

Re: ZX81 ROMs 3 types?

Post by 1024MAK »

Moggy wrote: Wed Jan 20, 2021 11:42 am Having looked at that page in the link you provided,Mark I'm confused as it seems to imply only two ROMs.

It states that the floating point bug and the pause command were altered at the same time plus various other changes yet looking at the ROM contents it's clear that only a few bytes were changed between 622 and 649 and going by the chronology the 622 cured the maths problem INTRODUCED the pause bug which was cured in the 649 ROM.

Also the three bytes deleted for the maths bug was initially done in the 622 and carried over to 649 not specifically for the 649.

The author seems to imply that all the changes listed were done over two ROM's not three.
The maths bug was cured in 622 and the pause bug in 649 and all the other things listed on the web page I would suggest were the changes between 550,plus 622 and 649 combined, the author seemingly morphing the two later ROM's into one entity as it were.
I provided the link more because of the comparison between the original ROM (the 550, the “unimproved” ROM, with the calculation error that results in the incorrect result for SQR 0.25) and the 649 (the “improved”) ROM. Specifically the PAUSE routine.

My conclusion this:

We know that the original ZX81 ROM (the 550, the “unimproved” ROM) had numerous bugs.

First Sinclair used the dead cockroach to “fix” the calculation error, and continued to use up stocks of the now known to be buggy ROM chips.

Then the 622 ROM was produced, which corrected some of the bugs, including incorporating the fix to the calculation code. But it appears that despite trying to the fix the PAUSE routine, it still had a problem.

So later on, the 649 ROM was produced that “fixed” the PAUSE routine. It did this by swapping two machine code instructions around.

And yes, the author of the linked to web page obviously was not aware of the 622 ROM. They (as did we until this week) were not aware that the 622 ROM existed!

Mark
ZX81 Variations
ZX81 Chip Pin-outs
ZX81 Video Transistor Buffer Amp

:!: Standby alert :!:
There are four lights!
Step up to red alert. Sir, are you absolutely sure? It does mean changing the bulb :!:
Looking forward to summer later in the year.
Moggy
Posts: 3231
Joined: Wed Jun 18, 2008 2:00 pm

Re: ZX81 ROMs 3 types?

Post by Moggy »

QUOTE.
"Then the 622 ROM was produced, which corrected some of the bugs, including incorporating the fix to the calculation code. But it appears that despite trying to the fix the PAUSE routine, it still had a problem."

--------------------------------------------------------------------------------------------------------------------------------------------------

Except the first ROM (550) doesn't have a pause problem(I have one and checked it) , it was 622 that INTRODUCED the pause bug not try to fix it, after curing the maths bug.
The pause error was rectified in 649 and it would seem 649 was issued to cure that problem only is how I read it as no other alteration of the code was done except mirroring the bytes concerning the pause routine.

My thinking is.

ROM 550 first ROM with maths bugs and a few other small problems as mentioned on the linked website.

ROM 622 second ROM cured the above but introduced a faulty pause routine when used in fast mode.(it does I've tried it)

ROM 649 ROM with the few bytes concerning pause reversed and no other code alteration other than that between it and 622.


looking at the section on the linked web page..

https://k1.spdns.de/Vintage/Sinclair/80 ... rences.htm

"(2) Rewritten PAUSE routine to ensure bit 15 of FRAMES set"

Looking at the the code for pause in the "unimproved/improved" sections it implies "unimproved" as 622 and "improved" as 649 yet earlier in the narrative all the faults of ROM 550 are being lumped into the mix as well which suggests the author must have been aware of all three ROMs but somehow regards 622 and 649 as just the one entity.

Note to self beat Lardo with a very big stick as my now brain hurts
Lardo Boffin
Posts: 2160
Joined: Sat Nov 26, 2016 2:42 am

Re: ZX81 ROMs 3 types?

Post by Lardo Boffin »

Moggy wrote: Wed Jan 20, 2021 4:23 pm
Note to self beat Lardo with a very big stick as my now brain hurts
Regardless of this turn of events regarding myself and a big stick I think this was interesting and worthwhile!

I am however thankful for the limited travel opportunities afforded to Moggy due to the current lock down. :lol:
ZX80
ZX81 iss 1 (bugged ROM, kludge fix, normal, rebuilt)
TS 1000 iss 3, ZXPand AY and +, ZX8-CCB, ZX-KDLX & ChromaSCART
Tatung 81 + Wespi
TS 1500 & 2000
Spectrum 16k (iss 1 s/n 862)
Spectrum 48ks plus a DIVMMC future and SPECTRA
Moggy
Posts: 3231
Joined: Wed Jun 18, 2008 2:00 pm

Re: ZX81 ROMs 3 types?

Post by Moggy »

Lardo Boffin wrote: Wed Jan 20, 2021 6:28 pm
Moggy wrote: Wed Jan 20, 2021 4:23 pm
Note to self beat Lardo with a very big stick as my now brain hurts
Regardless of this turn of events regarding myself and a big stick I think this was interesting and worthwhile!

I am however thankful for the limited travel opportunities afforded to Moggy due to the current lock down. :lol:
Regarding travel opportunities, animals are not housebound so I will teach my attack cat(Keith) how to use a catnav and point him in a Lardo-ish direction! :twisted:

Having said that yes I agree worthwhile and a bit of fun and something to while away the boring hours of lockdown.

One last thing to ponder.(and ponder only as I'm now on a bottle of scotch a day)

I mentioned in a previous post that with the 622 the pause was indeed borked in fast mode,now here's the thing, just for giggles I swapped out the standard ULA for Andy's re-make as I recalled how it altered the way the H4th ROM behaves in reference to inverse screen mode and wondered what effect it would have on the three ROMs.

Guess what? I can't get the 622 to lose the program in fast mode like I can with the original ULA.

AAAAGGGHHHH!!
Lardo Boffin
Posts: 2160
Joined: Sat Nov 26, 2016 2:42 am

Re: ZX81 ROMs 3 types?

Post by Lardo Boffin »

Maybe there are more ULA types than we thought?

Says Lardo running away.
ZX80
ZX81 iss 1 (bugged ROM, kludge fix, normal, rebuilt)
TS 1000 iss 3, ZXPand AY and +, ZX8-CCB, ZX-KDLX & ChromaSCART
Tatung 81 + Wespi
TS 1500 & 2000
Spectrum 16k (iss 1 s/n 862)
Spectrum 48ks plus a DIVMMC future and SPECTRA
User avatar
1024MAK
Posts: 5101
Joined: Mon Sep 26, 2011 10:56 am
Location: Looking forward to summer in Somerset, UK...

Re: ZX81 ROMs 3 types. Confirmed!

Post by 1024MAK »

There are FOUR Sinclair logic chips!

Mark
ZX81 Variations
ZX81 Chip Pin-outs
ZX81 Video Transistor Buffer Amp

:!: Standby alert :!:
There are four lights!
Step up to red alert. Sir, are you absolutely sure? It does mean changing the bulb :!:
Looking forward to summer later in the year.
Post Reply