Amstrad Diagnostics ROM

Started by llopis, 18:35, 24 February 21

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

Audronic

Hi Noel


V1.2 Lower Rom


Thanks


CPC ID ? I have a Parados rom installed That may be the Problem.


Thank
Keep Safe
Ray
Procrastinators Unite,
If it Ain't Broke PLEASE Don't Fix it.
I keep telling you I am Not Pedantic.
As I Live " Down Under " I Take my Gravity Tablets and Wear my Magnetic Boots to Keep me from Falling off.

llopis

Quote from: Audronic on 11:00, 02 June 21
CPC ID ? I have a Parados rom installed That may be the Problem.
Hi Ray,


Parados shouldn't matter because that's an upper ROM. The only way I know to detect the model is by looking at the lower (OS) ROM and looking for specific byte patterns. If you're using a ROM board that overrides the lower ROM, then that's normal it says that. I have special code for an M4 or a Dandanator to page the diagnostics ROM out, read the OS ROM, and then page the diagnostics back in. But on a regular ROM board or an EPROM, there's nothing I can do about it.


If you want to make sure, you can always run it from DSK and it should correctly detect all your standard ROMs.

Audronic

Hi Noel

Ok Thanks for the info.
I have run the File version, Id OK

Keep up the good work

Keep Safe
Ray
Procrastinators Unite,
If it Ain't Broke PLEASE Don't Fix it.
I keep telling you I am Not Pedantic.
As I Live " Down Under " I Take my Gravity Tablets and Wear my Magnetic Boots to Keep me from Falling off.

SagaDS

Hello,
I have tested the 1.2A DSK version on my Amstrad 6128 and something seems weird.
After the ROM test, the upper ROM seems OK, but on the main screen the result is FAILED.
It is an unmodded Amstrad with these results:LOW ROM : OS 6128 EN (B360)ROM 0 : BASIC EN (CAA0)ROM 7 : AMSDOS (0F91)
If you need something please tell me.

Thanks for the tool and all your videos.

llopis

Quote from: SagaDS on 21:53, 15 November 21
I have tested the 1.2A DSK version on my Amstrad 6128 and something seems weird.
After the ROM test, the upper ROM seems OK, but on the main screen the result is FAILED.
It is an unmodded Amstrad with these results:LOW ROM : OS 6128 EN (B360)ROM 0 : BASIC EN (CAA0)ROM 7 : AMSDOS (0F91)
If you need something please tell me.
Thanks for the report! Someone else also mentioned that. They had an ASIC version of the board. Do you know what kind of board your 6128 has? I'm curious if it's also the same kind or a normal one with a 40010 Gate Array.


SagaDS

#80
It's one of the first French sales, so it is still a QWERTY version (v3) from UK. Nothing French on the keyboard or the ROM.

Nothing modified from my side (just a GOTEK plugged in).

Every other reports of the diagnostic app seems good (version / id).

Don't know the board revision. Do you want me to check? Do you prefer a picture?

SagaDS

Can't send a picture yet.
But it is a Z70290 board MC0020B.ROMS 40015 and 40025. GA 40010.
Toshiba PIO. 5M2 HD46505SP CRTC detected as CRTC 0.

Tell me if you need more.

Audronic

Hi Noel

Diagnostic rom Version 1.3L

Still has a small concern Identifying an Unmodified CPC464.
The Rom is placed in a (Bryce) Lower rom board.

Photo included

Keep Safe

Ray
Procrastinators Unite,
If it Ain't Broke PLEASE Don't Fix it.
I keep telling you I am Not Pedantic.
As I Live " Down Under " I Take my Gravity Tablets and Wear my Magnetic Boots to Keep me from Falling off.

Audronic

Hi Noel

Diagnostic rom Version 1.3L

Still has a small concern Identifying an Unmodified CPC6128 as well..
The Rom is placed in a (Bryce) Lower rom board.
Photo included
Keep Safe
Ray
Procrastinators Unite,
If it Ain't Broke PLEASE Don't Fix it.
I keep telling you I am Not Pedantic.
As I Live " Down Under " I Take my Gravity Tablets and Wear my Magnetic Boots to Keep me from Falling off.

SerErris

Hi @llopis Noel,

I planning a new Hardware to support the DiagRom in an EPROM.

What code is responsible to disable the lower ROM itself?

How does the Dandanator manage to activate itself and deactivate itself (the hardware partJ

I am designing this to deliver a low-cost option that also can be built at the time of component shortage.
Proud owner of 2 Schneider CPC 464, 1 Schneider CPC 6128, GT65 and lots of books
Still learning all the details on how things work.

TotO

On a CPC, the signal ROMDIS disable the 32K ROM IC that include the Firmware and the BASIC. The Gate Array control the A14 pin to switch between the Lower and the Upper part of this ROM circuit to see two 16K pages. The Gate Array RMR bit2 and bit3 allow to enable/disable the Lower and Upper ROM paging respectively by software: https://www.grimware.org/doku.php/documentations/devices/gatearray

At the meaning of words, Lower RAM and Upper RAM do not exist. ;D
"You make one mistake in your life and the internet will never let you live it down" (Keith Goodyer)

llopis

Quote from: Audronic on 23:57, 05 March 22Diagnostic rom Version 1.3L

Still has a small concern Identifying an Unmodified CPC6128 as well..
The Rom is placed in a (Bryce) Lower rom board.
Hi Ray,
Yes, that's to be expected unfortunately. The Amstrad doesn't have a good way to detect the model, so it's something I do looking at specific bytes in the system ROM. But in this case the diagnostics ROM is overriding the system ROM and I have no way to access it.
I could try using the amount of memory and presence of FDC or not, but that's even less reliable than the ROM given memory expansions and other add-ons.

llopis

Quote from: SerErris on 11:13, 06 March 22I planning a new Hardware to support the DiagRom in an EPROM.
What code is responsible to disable the lower ROM itself?
How does the Dandanator manage to activate itself and deactivate itself (the hardware partJ
Good question. In general, you can override the lower ROM like ToTo said. But to take it a step further, it's great if you expose a way to let software control if your device is overriding that ROM or not. That allows the diagnostic program to turn its own ROM off and access the system ROM for identifying the model, making sure the ROM is correct, etc. I have implement specific methods for the Dandanator and the M4 to do that.

They both involve just communicating with the device and sending the command to turn it on and off. The M4 uses a traditional port to listen for commands, but the Dandanator does a crazy/cool method involving sniffing opcode sequences to know when to activate. That removes any potential port clashing. You can find the details here. If you implement either one of those two methods, the swapping will work automatically on your device. If you do something different, let me know and I'll try to add support for it.

One request: If you're going to be listening out on specific ports, please pick something that's not used (or not not commonly used), and please, please, please, do full address decoding. A few modern devices don't do that and simply crash when using other extensions or even during the 1MB RAM scan that the diagnostics ROM does.
If you have any specific questions or anything, feel free to post here to contact me directly.

llopis

Quote from: TotO on 11:44, 06 March 22At the meaning of words, Lower RAM and Upper RAM do not exist. ;D
That is correct. Is there a better term to describe the difference between the default 64KB RAM and the RAM can can be swapped into place? Happy to use it as long as it fits in there :-)

TotO

#89
Quote from: llopis on 13:17, 06 March 22That is correct. Is there a better term to describe the difference between the default 64KB RAM and the RAM can can be swapped into place? Happy to use it as long as it fits in there :-)
Grimware use "Base RAM" and "Extended RAM" (BASE RAM / EXT. RAM)
I have used Video Gate Array RAM and Expansion RAM (VGA RAM / EXP RAM)
We sadly can't use Chip RAM and Fast RAM (like on Amiga), for any reasons... :D
"You make one mistake in your life and the internet will never let you live it down" (Keith Goodyer)

SerErris

#90
@llopis

I did implement a way to deactivate the lower ram alike dandanator and M4 could do.

I checked the ROM code on github and have created a version that can disable it.

I now need to wait for Parts to breadboard it and then if the code changes work, I can do a pull request.

It is a simple change (thanks to the great code you have written). I added a file (like the ones for M4 etc) and called the correct routines at the same places.

So that should work, but need verification of cause.

/Edit: Whatever I did wrong .. I was unter the impression that I would actually need lower AND upper rom images ... After studying the source code of the rom I now understood, that are different ways to use the ROM (either lower for deep dive diagnostic, or higher to get called from |RSX.

That simplifies a lot for me.

Cheers
Proud owner of 2 Schneider CPC 464, 1 Schneider CPC 6128, GT65 and lots of books
Still learning all the details on how things work.

Audronic

@llopis 

Hi Noel

USIfAC's Rom Initialization code checks the byte at &0006 and according to the value determines the model of CPC.
Hope that this is of some help

Keep Safe

Ray
Procrastinators Unite,
If it Ain't Broke PLEASE Don't Fix it.
I keep telling you I am Not Pedantic.
As I Live " Down Under " I Take my Gravity Tablets and Wear my Magnetic Boots to Keep me from Falling off.

SerErris

#92
Quote from: llopis on 13:14, 06 March 22One request: If you're going to be listening out on specific ports, please pick something that's not used (or not not commonly used), and please, please, please, do full address decoding.
Hi,

the board I am doing is aimed to be as low cost as possible. That means it does not have any CPLD or MCU for logic decoding. It has only TTL compatible logic.

It is using address &FBEC, which is only used by two very old devices (not sure if they do still exist). 
  • KDS RS232 6850
  • PDS development system

So that should be pretty save to use.

But I hear ya and have included a switch to turn of the IOPort. So if you want to use it just as lower rom than you could use that switch to turn the SW Disable feature of (e.g. IO Port turned off) and then it will not react to any IO Message. For the Diagnostic ROM specifically that is then enabled to allow for disablement of the ROM on the module.

I do not think that the intended use for the Diagnostic ROM is getting in the way of anything else, as you typically use the Diagnostic ROM without anything else attached.

So the code required to disable the ROM is:
ld bc,&FBEC
ld a,1
out (C),a

and enable is as simple:
ld bc,&FBEC
ld a,0
out (C),a

D0 is actually used to drive the Flipflop for that activity.
Proud owner of 2 Schneider CPC 464, 1 Schneider CPC 6128, GT65 and lots of books
Still learning all the details on how things work.

Rabs

Love the diagnostic ROM :). So how does it detect the FDC? Asking because I have an Amstrad CPC 6128 with a faulty drive. Well the drive itself is fine (fine in another CPC). Can hear the drive spin. Does not hang, just does not detect the disk. Also interestingly, it does not load any tapes. So using an external ROM card I ran the diagnostics and it does not detect the FDC. Everything else passed. About to start tracing the logic gates but any help would be much appreciated.

GUNHED

You could use the Porting System of FutureOS to access / check ports directly. The FDC usually returns &80 at its base address of &FB7E.

Here a video just in case:

https://www.youtube.com/watch?v=6iRkefzm_0I&t=42s
http://futureos.de --> Get the revolutionary FutureOS (Update: 2022.03.09)
http://futureos.cpc-live.com/files/LambdaSpeak_RSX_by_TFM.zip --> Get the RSX-ROM for LambdaSpeak :-) (Updated: 2021.12.26)

Rabs

Quote from: GUNHED on 14:30, 10 June 22You could use the Porting System of FutureOS to access / check ports directly. The FDC usually returns &80 at its base address of &FB7E.

Here a video just in case:

https://www.youtube.com/watch?v=6iRkefzm_0I&t=42s

Loaded FutureOS run the System Monitor and &FB7E is returning &FF. Guess that is not as expected.

GUNHED

Quote from: Rabs55 on 19:44, 14 June 22
Quote from: GUNHED on 14:30, 10 June 22You could use the Porting System of FutureOS to access / check ports directly. The FDC usually returns &80 at its base address of &FB7E.

Here a video just in case:

https://www.youtube.com/watch?v=6iRkefzm_0I&t=42s

Loaded FutureOS run the System Monitor and &FB7E is returning &FF. Guess that is not as expected.
The returned value indicated that the FDC is _NOT_ present (or defective). Next steps could be:
- Check if the FDC is broken or not
- Check if the FDC is connected to the CPC with all needed signals

The floppy itself comes after the FDC. So, yes, it makes total sense that it works.
http://futureos.de --> Get the revolutionary FutureOS (Update: 2022.03.09)
http://futureos.cpc-live.com/files/LambdaSpeak_RSX_by_TFM.zip --> Get the RSX-ROM for LambdaSpeak :-) (Updated: 2021.12.26)

GUNHED

Back to topic. Since the Amstrad Diagnostic Software from @llopis became the quasi standard on CPC for hardware testing (not undeserved of course) I had a closer look at it recently.
It's a great piece of work.

And there could be an additional improvement. We know lots os "common used" ROMs like Maxam, X-DDOS, ParaDOS, RDOS, Protext and all that stuff...
Now it would be great if more of them could be made "known" to the Amstrad Diagnostics software.

Here a picture to show what I mean (...means please make most/all red stuff yellow :))
http://futureos.de --> Get the revolutionary FutureOS (Update: 2022.03.09)
http://futureos.cpc-live.com/files/LambdaSpeak_RSX_by_TFM.zip --> Get the RSX-ROM for LambdaSpeak :-) (Updated: 2021.12.26)

GUNHED

#98
Quote from: llopis on 13:17, 06 March 22
Quote from: TotO on 11:44, 06 March 22At the meaning of words, Lower RAM and Upper RAM do not exist. ;D
That is correct. Is there a better term to describe the difference between the default 64KB RAM and the RAM can can be swapped into place? Happy to use it as long as it fits in there :-)
For the first 64 KB: Main RAM
For the next 512 KB (via &7Fxx): Expansion RAM
For the next 3,5 MB (via. &78, &79, &7A, &7B, &7C, &7D and &7E): Extension RAM
That's also used by FutureSoft manuals. It describes pretty good I think.

(Annotation: imo the first 64 KB shouldn't be called base ram, since ram byte &FFFF really is not at any base).
http://futureos.de --> Get the revolutionary FutureOS (Update: 2022.03.09)
http://futureos.cpc-live.com/files/LambdaSpeak_RSX_by_TFM.zip --> Get the RSX-ROM for LambdaSpeak :-) (Updated: 2021.12.26)

eto

How about "Core RAM"? Without the core, nothing will work. 

Powered by SMFPacks Menu Editor Mod