Disc Doctor interference
-
- Posts: 2611
- Joined: Sat Apr 03, 2010 1:54 pm
- Location: Nottingham
- Contact:
Disc Doctor interference
Hi all,
There were some games I found that did not work correctly when I had the Disc Doctor chip fitted.
It seems this chip pokes &0D to &130 so anything stored there gets overwritten by the chip.
I have made a list of the games I found so far, but there may be more.
It may be possible to amend some of these to eliminate the issue, but some may prove impossible.
I have now put a warning message on Cyborg Warriors and White Light to make the user switch off Disc Doctor if it is detected.
I may add this routine to others unless a fix can be found for them.
Jet-Boot Jack from English Software. Cannot load the main game.
Atic Atac from Ultimate Play The Game. Causes graphics corruption in the main game.
Thunderstruck II from Audiogenic Software Ltd. Bottom half of screen is blank.
Spellbinder from Superior Software. Causes graphics corruption in the main game.
Omega Orb from Audiogenic Software Ltd. Causes graphics corruption in the main game.
By Fair Means Or Foul from Superior Software. Skips the loading screen. Game plays OK.
Spheroids from Alternative. Cannot load the main game.
Qwak! from Superior Software. Cannot load the main game.
Cyborg Warriors from Superior Software. Causes the title page to have text corruption.
Kastle from Tynesoft. Bottom part of screen is blank.
Thai Boxing from Anco Software. Cannot load the main game.
White Light from Retro Software. Main games crashes.
If anyone knows of anymore, then please let me know.
regards,
Mick.
There were some games I found that did not work correctly when I had the Disc Doctor chip fitted.
It seems this chip pokes &0D to &130 so anything stored there gets overwritten by the chip.
I have made a list of the games I found so far, but there may be more.
It may be possible to amend some of these to eliminate the issue, but some may prove impossible.
I have now put a warning message on Cyborg Warriors and White Light to make the user switch off Disc Doctor if it is detected.
I may add this routine to others unless a fix can be found for them.
Jet-Boot Jack from English Software. Cannot load the main game.
Atic Atac from Ultimate Play The Game. Causes graphics corruption in the main game.
Thunderstruck II from Audiogenic Software Ltd. Bottom half of screen is blank.
Spellbinder from Superior Software. Causes graphics corruption in the main game.
Omega Orb from Audiogenic Software Ltd. Causes graphics corruption in the main game.
By Fair Means Or Foul from Superior Software. Skips the loading screen. Game plays OK.
Spheroids from Alternative. Cannot load the main game.
Qwak! from Superior Software. Cannot load the main game.
Cyborg Warriors from Superior Software. Causes the title page to have text corruption.
Kastle from Tynesoft. Bottom part of screen is blank.
Thai Boxing from Anco Software. Cannot load the main game.
White Light from Retro Software. Main games crashes.
If anyone knows of anymore, then please let me know.
regards,
Mick.
Last edited by Michael Brown on Tue Jun 04, 2019 12:51 pm, edited 1 time in total.
Re: Disc Doctor interference
I've always had Disc Doctor in my machine and had the majority of the above BITD, never noticed any issues. I use Disc Doctor 1.0A.Michael Brown wrote: ↑Tue Jun 04, 2019 12:47 pm Jet-Boot Jack from English Software. Cannot load the main game.
Atic Atac from Ultimate Play The Game. Causes graphics corruption in the main game.
Thunderstruck II from Audiogenic Software Ltd. Bottom half of screen is blank.
Spellbinder from Superior Software. Causes graphics corruption in the main game.
Omega Orb from Audiogenic Software Ltd. Causes graphics corruption in the main game.
By Fair Means Or Foul from Superior Software. Skips the loading screen. Game plays OK.
Spheroids from Alternative. Cannot load the main game.
Qwak! from Superior Software. Cannot load the main game.
Cyborg Warriors from Superior Software. Causes the title page to have text corruption.
Kastle from Tynesoft. Bottom part of screen is blank.
Thai Boxing from Anco Software. Cannot load the main game.
White Light from Retro Software. Main games crashes.
- Nigel
BBC Model B: ATPL Sidewise, Acorn Speech, 2xWatford Floppy Drives, AMX Mouse, Viglen case, BeebZIF, etc.
BBC Model B: ATPL Sidewise, Acorn Speech, 2xWatford Floppy Drives, AMX Mouse, Viglen case, BeebZIF, etc.
- CMcDougall
- Posts: 7048
- Joined: Wed Feb 02, 2005 3:13 pm
- Location: Shadow in a Valley of Scotland
- Contact:
Re: Disc Doctor interference
*put disc doctor in bin
*insert Advanced Disc Toolkit
think ADT poops just one game, can't mind what it was
*insert Advanced Disc Toolkit
think ADT poops just one game, can't mind what it was
- flaxcottage
- Posts: 5718
- Joined: Thu Dec 13, 2012 8:46 pm
- Location: Derbyshire
- Contact:
Re: Disc Doctor interference
Best idea is to use SWR. If Disc Doctor is need one time then load that. If ADT is required then load that. It is what I always have done.
Mind you I never noticed the problem because I don't play very many games and the ones I do play work OK anyway.
Now Speech! is a very different kettle of fish!
Mind you I never noticed the problem because I don't play very many games and the ones I do play work OK anyway.
Now Speech! is a very different kettle of fish!
- billcarr2005
- Posts: 1840
- Joined: Fri Sep 09, 2005 4:01 pm
- Location: UK
- Contact:
Re: Disc Doctor interference
Since there are many different ROMs that can interfere with many different games, I found that the best practice on my disks BITD was to have a program running from !BOOT, before the menu of multiple games that *ROMOFF''d (from BROM) all of the unnecessary ROMs so that there was no problems with compatibility.
Later on there was another that did ?&2A1+ROM slot number = 0
No need to rewrite the games to fix the problem of the ROM when that's the problem!
Later on there was another that did ?&2A1+ROM slot number = 0
No need to rewrite the games to fix the problem of the ROM when that's the problem!
Re: Disc Doctor interference
Yes I have noticed that in the past that Disc Doctor causes issues with games I stopped using it or only loaded it into a ram bank when I needed to use it.
Regards Peter.
- daveejhitchins
- Posts: 7879
- Joined: Wed Jun 13, 2012 6:23 pm
- Location: Newton Aycliffe, County Durham
- Contact:
Re: Disc Doctor interference
One of the things I've (well - reliant on others: DaveB and JGH to name a few!) tried to do within the operation of the MGC is to UNPLUG all ROMs, that aren't needed, before loading/running games. Maybe we need a piece of code to do this reliably, that works on all platforms?
I'm hoping MGC MKII will do a better job than the original.
Dave H
I'm hoping MGC MKII will do a better job than the original.
Dave H
Available: ARA II : ARA III-JR/PR : ABR : AP5 : AP6 : ABE : ATI : MGC : Plus 1 Support ROM : Plus 3 2nd DA : Prime's Plus 3 ROM/RAM : Pegasus 400 : Prime's MRB : ARCIN32 : Cross-32
-
- Posts: 2611
- Joined: Sat Apr 03, 2010 1:54 pm
- Location: Nottingham
- Contact:
Re: Disc Doctor interference
Is there a simple FOR/NEXT loop I can insert poking &2A1 to switch off the ROMS that can go at the start of a game?
Or is it not that simple?
Mick.
Or is it not that simple?
Mick.
- billcarr2005
- Posts: 1840
- Joined: Fri Sep 09, 2005 4:01 pm
- Location: UK
- Contact:
Re: Disc Doctor interference
The following code *seems* to do the trick
Whether it's the proper / official / right way of going about things is another matter entirely
*ROMOFF required a ROM name, which must've been checked against the ROM header to decide which specific ROM to disable. BROM then had a mirror of &2A1 (somewhere, i remember disassembling the code sometime) which was checked when the machine was reset to keep the ROM switched off until the machine was switched off. I think another ROM had *KILL or something similar and as mentioned above *UNPLUG
Changed maximum to 13, otherwise DFS is disabled (although I suppose the DFS could be anywhere!)
Code: Select all
10 FOR rom = 0 TO 13
20 ?(&2A1+rom)=0
30 NEXT
*ROMOFF required a ROM name, which must've been checked against the ROM header to decide which specific ROM to disable. BROM then had a mirror of &2A1 (somewhere, i remember disassembling the code sometime) which was checked when the machine was reset to keep the ROM switched off until the machine was switched off. I think another ROM had *KILL or something similar and as mentioned above *UNPLUG
Changed maximum to 13, otherwise DFS is disabled (although I suppose the DFS could be anywhere!)
Last edited by billcarr2005 on Wed Jun 05, 2019 9:37 am, edited 2 times in total.
- daveejhitchins
- Posts: 7879
- Joined: Wed Jun 13, 2012 6:23 pm
- Location: Newton Aycliffe, County Durham
- Contact:
Re: Disc Doctor interference
I think it is, but . . . Obviously not removing BASIC and the OS. It would be a little more work to actually 'check' where BASIC and the OS ROMs were, in case they had been moved (Beeb?) - but a better option. Maybe knowing which machine you were operating from would help too, to build a truly generic piece of code? Thinking of the Elk that has different addressing for the ROM table etc.Michael Brown wrote: ↑Wed Jun 05, 2019 8:49 am Is there a simple FOR/NEXT loop I can insert poking &2A1 to switch off the ROMS that can go at the start of a game?
Or is it not that simple?
The problem I have with the original MGC is the method of starting 99% of the cames - which is: CALL !-4 -- This, of course allows the OS to scan and reinsert the ROMs. If all users had a Plus 1 Support ROM fitted then a *UNPLUG could be used. The MGC MKII will start games in a similar manner to current MMB systems.
Waiting for JGH who has a better understanding of how to do this correctly (and I'm sure there are others!).
Dave H
Available: ARA II : ARA III-JR/PR : ABR : AP5 : AP6 : ABE : ATI : MGC : Plus 1 Support ROM : Plus 3 2nd DA : Prime's Plus 3 ROM/RAM : Pegasus 400 : Prime's MRB : ARCIN32 : Cross-32
-
- Posts: 2611
- Joined: Sat Apr 03, 2010 1:54 pm
- Location: Nottingham
- Contact:
Re: Disc Doctor interference
Fantastic!
Running this loop before Atic Atac cures the graphics corruption.
I see that pressing BREAK afterwards returns the ROMS to their places again.
It should be fairly easy to install this fix into the loaders of any games affected.
I see that 0 to 13 is assuming DFS and BASIC are at slots 14 and 15.
I can see that they are under BeebEm, but are they in a real BBC B?
I only ask because I want any fix I do to be universal and not just for emulators.
BTW is there a machine code version of the FOR/NEXT loop?
regards,
Mick.
Running this loop before Atic Atac cures the graphics corruption.
I see that pressing BREAK afterwards returns the ROMS to their places again.
It should be fairly easy to install this fix into the loaders of any games affected.
I see that 0 to 13 is assuming DFS and BASIC are at slots 14 and 15.
I can see that they are under BeebEm, but are they in a real BBC B?
I only ask because I want any fix I do to be universal and not just for emulators.
BTW is there a machine code version of the FOR/NEXT loop?
regards,
Mick.
Re: Disc Doctor interference
This assembly program will hide all the ROMs except BASIC and the current filing system, whichever slots they happen to be in:
This code needs to run on the I/O processor but since the Tube needs to be turned off for most games anyway this shouldn't be an issue.
BTW, just turning off the ROMs isn't a guarantee of success. It's always possible that a ROM has changed some of the vectors at &200 to point to a routine in its private workspace or to an extended vector that jumps into the ROM itself. Ideally, the vector table would also be reset back to default values.
Code: Select all
10 FOR I=0 TO 2 STEP 2
20 P%=&A00
30 [ OPT I
40 LDX #15
50 .loop
60 CPX &24B:BEQ next
70 CPX &DBC:BNE hide
80 LDA &212:CMP #&1B:BNE hide
90 LDA &213:CMP #&FF:BEQ next
100 .hide LDA #0:STA &2A1,X
110 .next DEX:BPL loop
120 RTS
130 ]
140 NEXT
150 CALL &A00
BTW, just turning off the ROMs isn't a guarantee of success. It's always possible that a ROM has changed some of the vectors at &200 to point to a routine in its private workspace or to an extended vector that jumps into the ROM itself. Ideally, the vector table would also be reset back to default values.
- billcarr2005
- Posts: 1840
- Joined: Fri Sep 09, 2005 4:01 pm
- Location: UK
- Contact:
Re: Disc Doctor interference
I'd disassembled BROM during my lunch and was going to write something whereby a BASIC program read the names of the ROMs which you'd want to be disabled then calls the appropriate code to check against the ROM headers, but the above does the job very elegantly!
I've attached the prebuilt, runnable file on a disk image. It's good that it's relocatable too, since there are no absolute JSR/JMP and could be added to the end of a BASIC program and CALLed first thing. i suppose the FILEV check could be omitted to make the program a few bytes (14!) smaller...
- Attachments
-
- ROFF.zip
- dv8's ROM disabling program
- (233 Bytes) Downloaded 78 times
Last edited by billcarr2005 on Wed Jun 05, 2019 3:52 pm, edited 3 times in total.
Re: Disc Doctor interference
Only if the current filing system is guaranteed to be in a sideways ROM. If a game was transferred to an RFS ROM for example, it would fail without the FILEV check.billcarr2005 wrote: ↑Wed Jun 05, 2019 3:15 pm i suppose the FILEV check could be omitted to make the program a few bytes (14!) smaller...
Here is the simplified version of the routine:
Code: Select all
10 FOR I=0 TO 2 STEP 2
20 P%=&A00
30 [ OPT I
40 LDA #0:LDX #15
50 .loop
60 CPX &24B:BEQ next
70 CPX &DBC:BEQ next
80 .hide STA &2A1,X
90 .next DEX:BPL loop
100 RTS
110 ]
120 NEXT
130 CALL &A00
-
- Posts: 2611
- Joined: Sat Apr 03, 2010 1:54 pm
- Location: Nottingham
- Contact:
Re: Disc Doctor interference
Excellent work.
I will have a quiet word with Lee about this.
thanks
Mick.
I will have a quiet word with Lee about this.
thanks
Mick.
- SimonSideburns
- Posts: 652
- Joined: Mon Aug 26, 2013 9:09 pm
- Location: Purbrook, Hampshire
- Contact:
Re: Disc Doctor interference
Pretty sure the game that gets messed up is Pipeline.
Glitching and graphical errors.
Just remember kids, Beeb spelled backwards is Beeb!
-
- Posts: 2611
- Joined: Sat Apr 03, 2010 1:54 pm
- Location: Nottingham
- Contact:
Re: Disc Doctor interference
Ref Pipeline.
I remember BITD that sometimes you would move next to a flame and it would get you and other times it was fine.
I did have Exmon II and Disc Doctor chips in my BBC BITD,
I remember BITD that sometimes you would move next to a flame and it would get you and other times it was fine.
I did have Exmon II and Disc Doctor chips in my BBC BITD,
-
- Posts: 2611
- Joined: Sat Apr 03, 2010 1:54 pm
- Location: Nottingham
- Contact:
Re: Disc Doctor interference
Now been through my list again.
Removed Spheroids as this isn't affected by Disc Doctor as such.
For some reason, some games interfere with it and a reset is sometimes required as it crashes after loading the 2nd part.
All the other 11 games I mentioned now work as I have added either the ROM fix routine or amended the code at &130 that Disc Doctor corrupts.
I have sent all the new discs to Lee who I am sure will check on various machines.
I have checked them on BeebEm and they are OK, But I will wait for Lee to get back before reposting as I do not want the fixes for Disc Doctor to cause problems elsewhere.
ROM off routine used on Atic Atac, Thunderstruck II, Spellbinder, Omega Orb, Qwak and Cyborg Warriors.
Code amended at &130 on Jet Boot Jack, By Fair Means, Qwak, Kastle and Thai Boxing.
regards,
Mick.
Removed Spheroids as this isn't affected by Disc Doctor as such.
For some reason, some games interfere with it and a reset is sometimes required as it crashes after loading the 2nd part.
All the other 11 games I mentioned now work as I have added either the ROM fix routine or amended the code at &130 that Disc Doctor corrupts.
I have sent all the new discs to Lee who I am sure will check on various machines.
I have checked them on BeebEm and they are OK, But I will wait for Lee to get back before reposting as I do not want the fixes for Disc Doctor to cause problems elsewhere.
ROM off routine used on Atic Atac, Thunderstruck II, Spellbinder, Omega Orb, Qwak and Cyborg Warriors.
Code amended at &130 on Jet Boot Jack, By Fair Means, Qwak, Kastle and Thai Boxing.
regards,
Mick.
-
- Posts: 2611
- Joined: Sat Apr 03, 2010 1:54 pm
- Location: Nottingham
- Contact:
Re: Disc Doctor interference
Early tests from Lee show that these games mainly crash or fail on a real BBC with Datacentre and Disc Doctor, so the fix isn't really viable and the "Remove Disc Doctor" message may be the best way to go where needed.
Thanks to everyone for their help but...
Having the games work on a real BBC (and also via a Datacentre) is more important than them working under emulation with Disc Doctor as this can be switched off or not loaded to start with.
regards,
Mick.
Thanks to everyone for their help but...
Having the games work on a real BBC (and also via a Datacentre) is more important than them working under emulation with Disc Doctor as this can be switched off or not loaded to start with.
regards,
Mick.
- billcarr2005
- Posts: 1840
- Joined: Fri Sep 09, 2005 4:01 pm
- Location: UK
- Contact:
Re: Disc Doctor interference
I don't think there's any reason that disabling of installed ROMs would be causing the games to crash... unless the code above is disabling other ROMs which are necessary... in which case a more concentrated approach of just disabling Disc Doctor would be more appropriate, rather than altering old code, which could cause issues further down the line...Michael Brown wrote: ↑Fri Jun 07, 2019 11:18 am Early tests from Lee show that these games mainly crash or fail on a real BBC with Datacentre and Disc Doctor, so the fix isn't really viable and the "Remove Disc Doctor" message may be the best way to go where needed.
-
- Posts: 2611
- Joined: Sat Apr 03, 2010 1:54 pm
- Location: Nottingham
- Contact:
Re: Disc Doctor interference
Hi Bill,
Yes I agree.
I have made a couple of test discs for Lee where it checks &130 for &0D and then prints the message "switch off Disc Doctor". This works for me under BeebEm, but I am just awaiting confirmation from Lee that it works on a real BBC especially one with a Datacentre fitted.
Just wondering if there was a way to detect if Disc Doctor is fitted by checking &8000 and above, but would that work for Sideways RAM or on a Datacentre?
Mick.
Yes I agree.
I have made a couple of test discs for Lee where it checks &130 for &0D and then prints the message "switch off Disc Doctor". This works for me under BeebEm, but I am just awaiting confirmation from Lee that it works on a real BBC especially one with a Datacentre fitted.
Just wondering if there was a way to detect if Disc Doctor is fitted by checking &8000 and above, but would that work for Sideways RAM or on a Datacentre?
Mick.
- Rich Talbot-Watkins
- Posts: 2054
- Joined: Thu Jan 13, 2005 5:20 pm
- Location: Palma, Mallorca
- Contact:
Re: Disc Doctor interference
Why does Disc Doctor put &0D in &130? That is the more intriguing point for me.
- Rich Talbot-Watkins
- Posts: 2054
- Joined: Thu Jan 13, 2005 5:20 pm
- Location: Palma, Mallorca
- Contact:
Re: Disc Doctor interference
Answered that easily for myself by disassembling the very beginning of it:
So it just corrupts it every time a service call is issued. I've also seen code which corrupts &100, &101, &110, &118 and &119 (and probably others), so it doesn't look like something that's easily patched in the ROM. That's terribly written code
Code: Select all
8003 JMP &8065 ;service call
8065 PHP
8066 PHA
8067 TXA
8068 STX &0130 ; <--- oh
806B PHA
806C TYA
806D PHA
806E TSX
etc
- billcarr2005
- Posts: 1840
- Joined: Fri Sep 09, 2005 4:01 pm
- Location: UK
- Contact:
Re: Disc Doctor interference
Cribbed from the BROM *ROMOFF command.
I've included the source, should it be helpful!
*DDOFF should just disable Disc Doctor (or any other ROM with the header of "DISC DOC"
Works in both BeebEM 4.14 and b-Em 2.2
As mentioned above, it would be possible to subsitute the string of "DISC DOC" and re-run the program to disable multiple "problem" ROMs from within a BASIC program
updated version with self contained addresses
updated further to only use relative addresses (apart from the "DISC DOC" search string which is the first thing set up)
I've included the source, should it be helpful!
*DDOFF should just disable Disc Doctor (or any other ROM with the header of "DISC DOC"
Works in both BeebEM 4.14 and b-Em 2.2
As mentioned above, it would be possible to subsitute the string of "DISC DOC" and re-run the program to disable multiple "problem" ROMs from within a BASIC program
updated version with self contained addresses
updated further to only use relative addresses (apart from the "DISC DOC" search string which is the first thing set up)
- Attachments
-
- DDOFF.zip
- (728 Bytes) Downloaded 71 times
Last edited by billcarr2005 on Fri Jun 07, 2019 5:52 pm, edited 5 times in total.
Re: Disc Doctor interference
In that case, simply disabling the ROM should prevent it from receiving any service calls.Rich Talbot-Watkins wrote: ↑Fri Jun 07, 2019 3:05 pm 8068 STX &0130 ; <--- oh
So it just corrupts it every time a service call is issued.
It also means that checking for &0D in &130 isn't reliable since it's assuming that Disc Doctor is in ROM 13.
I've just tested a few of the listed games on my DataCentre machine. With Disc Doctor installed they all fail as expected. After running the ROM disabler program they all worked again.
-
- Posts: 2611
- Joined: Sat Apr 03, 2010 1:54 pm
- Location: Nottingham
- Contact:
Re: Disc Doctor interference
What about if I changed the detection routine to something like IF ?&130 <>0 PRINT "SWITCH OFF DISC DOCTOR" as &130 should be 0 but may have a different variable depending on where Disc Doctor is stored.
I wonder if a Disc Doctor in a Datacentre BBC would be detected this way as well?
Mick.
I wonder if a Disc Doctor in a Datacentre BBC would be detected this way as well?
Mick.
Last edited by Michael Brown on Fri Jun 07, 2019 5:28 pm, edited 2 times in total.
- Rich Talbot-Watkins
- Posts: 2054
- Joined: Thu Jan 13, 2005 5:20 pm
- Location: Palma, Mallorca
- Contact:
Re: Disc Doctor interference
I think Bill Carr's routine the best way to turn off the ROM before continuing to load the game, though it uses some funny memory addresses itself (why &655/&656?)!
There's no guarantee that ?&130 should be 0 (although it's the likeliest thing).
There's no guarantee that ?&130 should be 0 (although it's the likeliest thing).
- billcarr2005
- Posts: 1840
- Joined: Fri Sep 09, 2005 4:01 pm
- Location: UK
- Contact:
Re: Disc Doctor interference
I've altered the memory addresses, which were the ones used in BROM, so that the routine is now self contained
-
- Posts: 2611
- Joined: Sat Apr 03, 2010 1:54 pm
- Location: Nottingham
- Contact:
Re: Disc Doctor interference
L.
10?&130=0
20*DIR $
30IF?&130<>0 THEN CLS:PRINT'SPC6"Please turn off DISC DOCTOR":A=GET:CALL!-4
>
This would set &130 to 0 then allow it to change to a higher value if Disc Doctor is fitted as the *DIR $ changes the value.
Mick.
Just had a bad feeling. What if Disc Doctor is in slot 0?
10?&130=0
20*DIR $
30IF?&130<>0 THEN CLS:PRINT'SPC6"Please turn off DISC DOCTOR":A=GET:CALL!-4
>
This would set &130 to 0 then allow it to change to a higher value if Disc Doctor is fitted as the *DIR $ changes the value.
Mick.
Just had a bad feeling. What if Disc Doctor is in slot 0?
Last edited by Michael Brown on Sat Jun 08, 2019 10:39 am, edited 1 time in total.
- Rich Talbot-Watkins
- Posts: 2054
- Joined: Thu Jan 13, 2005 5:20 pm
- Location: Palma, Mallorca
- Contact:
Re: Disc Doctor interference
Just use Bill Carr's program above! It disables Disc Doctor without requiring any intervention from the user at all!