Author Topic: Memory Check.  (Read 5963 times)

0 Members and 1 Guest are viewing this topic.

Offline Bryce

  • The Hardware Guy.
  • Supporter
  • 6128 Plus
  • *
  • Posts: 10.093
  • Country: wf
  • It's not broken, it just hasn't been fixed yet.
    • index.php?action=treasury
  • Liked: 3402
Memory Check.
« on: 17:21, 22 October 11 »
Hi All,
      I'm just experimenting with some RAM expansions and was wondering whether there is a quick way to report how much RAM is connected to the CPC. It needs to be on a disk (ie: not a ROM routine) because there isn't / can't be any ROM expansion connected to the CPC while I am performing certain tests.

Bryce.

Offline SyX

  • 6128 Plus
  • ******
  • Posts: 1.084
  • Country: br
  • Liked: 1003
Re: Memory Check.
« Reply #1 on: 19:44, 22 October 11 »
I have made a miniprogram that will report how many banks of expansion ram DK'Tronics compatible has your CPC, the sizes reported are 0, 64, 128, 256 or 512.

If you need page (16 KBs pages) accuracy instead of bank accuracy (64 KBs banks), only tell me ;)

PD:The DSK with the ram test is fixed now, sorry again ;)
« Last Edit: 19:38, 23 October 11 by SyX »

Offline Bryce

  • The Hardware Guy.
  • Supporter
  • 6128 Plus
  • *
  • Posts: 10.093
  • Country: wf
  • It's not broken, it just hasn't been fixed yet.
    • index.php?action=treasury
  • Liked: 3402
Re: Memory Check.
« Reply #2 on: 20:14, 22 October 11 »
Wow, thanks, "Bank acurracy" is enough for what I am doing :) I'll try it out tomorrow.

Bryce.

Offline SyX

  • 6128 Plus
  • ******
  • Posts: 1.084
  • Country: br
  • Liked: 1003
Re: Memory Check.
« Reply #3 on: 20:20, 22 October 11 »
You are welcome Sir Bryce :D

Offline Bryce

  • The Hardware Guy.
  • Supporter
  • 6128 Plus
  • *
  • Posts: 10.093
  • Country: wf
  • It's not broken, it just hasn't been fixed yet.
    • index.php?action=treasury
  • Liked: 3402
Re: Memory Check.
« Reply #4 on: 17:48, 23 October 11 »
Hi SyX,
     somethings not quite right with the RAM test program. If I connect a 64K DKTronics expansion to the CPC, the program reports 512K, the same when I connect 256K. And it always crashes after reporting the RAM (strange flickering dots in top left corner of screen) except for when no expansion is connected.

Bryce.

Offline SyX

  • 6128 Plus
  • ******
  • Posts: 1.084
  • Country: br
  • Liked: 1003
Re: Memory Check.
« Reply #5 on: 18:50, 23 October 11 »
Upss, ok, i'll review it, i only has tested in WinApe (with its multiples ram expansion emulation worked great) and my CPC6128s without ram expansions (that showed the message 64 KBs of ram expansion), but i don't think it would be any problem, sorry.

PD: Fixed, only worked in my CPC by pure miracle :P

PD2: I will add the support to Silicon Disk Expansions, because now it could show wrong sizes in those ;)
« Last Edit: 19:41, 23 October 11 by SyX »

Offline CanonMan

  • CPC664
  • ***
  • Posts: 137
  • Liked: 18
Re: Memory Check.
« Reply #6 on: 21:44, 23 October 11 »
I had the same problem running it on WinAPE too.
 
I had a look at the code using the debugger and noticed that the bank switching codes weren't being sent to port &7f00. I'm surprised it worked at all.
 

Offline SyX

  • 6128 Plus
  • ******
  • Posts: 1.084
  • Country: br
  • Liked: 1003
Re: Memory Check.
« Reply #7 on: 22:02, 23 October 11 »
Only worked for the ghosting in the I/O ports, that is be lucky XDDD

Offline arnoldemu

  • Supporter
  • 6128 Plus
  • *
  • Posts: 5.273
  • Country: gb
    • Unofficial Amstrad WWW Resource
  • Liked: 2152
Re: Memory Check.
« Reply #8 on: 23:00, 23 October 11 »
This is the code I used for Batman Begins:
http://www.cpctech.org.uk/source/memcheck.html

it stores a list of the configurations that can be used, so you can count these up and multiply by 16 to give the total size in extra K.
This may be useful?
My games. My Games
My website with coding examples: Unofficial Amstrad WWW Resource

Offline TFM

  • Visit the mysteries of the CPC at www.futureos.de
  • Supporter
  • 6128 Plus
  • *
  • Posts: 9.899
  • Country: aq
  • Space Chicken for FutureOS is free!
    • index.php?action=treasury
    • FutureOS - The revolution on CPC!
  • Liked: 1971
Re: Memory Check.
« Reply #9 on: 07:13, 24 October 11 »
Hi All,
      I'm just experimenting with some RAM expansions and was wondering whether there is a quick way to report how much RAM is connected to the CPC. It needs to be on a disk (ie: not a ROM routine) because there isn't / can't be any ROM expansion connected to the CPC while I am performing certain tests.

Bryce.

Look here:
http://www.cpcwiki.eu/imgs/4/44/4_MB_E-RAM_Test.zip
TFM of FutureSoft
Also visit the CPC and Plus users favorite OS: FutureOS - The Revolution on CPC6128 and 6128Plus

Offline SyX

  • 6128 Plus
  • ******
  • Posts: 1.084
  • Country: br
  • Liked: 1003
Re: Memory Check.
« Reply #10 on: 19:48, 24 October 11 »
I have finished the Expansion RAM Checker, include support for DK'Tronics Silicon Disk (and every standard ram expansion until 512 KB), page accuracy and a memory test (fill the ram in 4 passes with the values $00, $55, $AA, $FF and check the values) with a "gui" similar to the Atari 800 ram test.

As you can see in the picture:
White: Ram Page Detected.
Grey: There is not ram in this page.
Red: Ram page failed test.
Green: Ram page pass test.

TODO: Add support for ram expansions bigger 512KBs, it's easy but i'm lazy and except FutureOS i don't know what programs make use of those monstrous ram sizes :P
 
Any feedback will be well received :)

PD: I have included a tape version, too ;)

Offline phi2x

  • 464 Plus
  • *****
  • Posts: 458
  • Country: fr
    • CPCBox - CPC emulator in JavaScript
  • Liked: 151
Re: Memory Check.
« Reply #11 on: 20:28, 24 October 11 »
That's a very cool tool!

It will be a nice addition to the stress tests I use:
  • RAM: Expansion RAM Checker
  • CRTC & GA: Lots of demos  ;D
  • CPU: Z80 Tests Suite, Zexall
  • ASIC: Arnold V test cartridge
  • VDU, Z80, CRTC & ASIC: Plus test
And now, what about a FDC tests suite? ;) Something that would check the different commands, examining the FDC flags state, the returned values and the timings.
It would be tremendously useful for us emulator authors. The FDC is sadly the most neglected chip at the moment :/
Atwood's law (2007): "Any application that can be written in JavaScript, will eventually be written in JavaScript."

Offline arnoldemu

  • Supporter
  • 6128 Plus
  • *
  • Posts: 5.273
  • Country: gb
    • Unofficial Amstrad WWW Resource
  • Liked: 2152
Re: Memory Check.
« Reply #12 on: 20:57, 24 October 11 »
That's a very cool tool!

It will be a nice addition to the stress tests I use:
  • RAM: Expansion RAM Checker
  • CRTC & GA: Lots of demos  ;D
  • CPU: Z80 Tests Suite, Zexall
  • ASIC: Arnold V test cartridge
  • VDU, Z80, CRTC & ASIC: Plus test
And now, what about a FDC tests suite? ;) Something that would check the different commands, examining the FDC flags state, the returned values and the timings.
It would be tremendously useful for us emulator authors. The FDC is sadly the most neglected chip at the moment :/

http://www.cpctech.org.uk/download/fdctest.zip

A test program I wrote a while ago.
Tests quite a lot of things, but after writing the loader, I found there was some things I had missed.

At this time, I am writing my own ppi, psg and memory testing programs.
I have found that it is possible to detect different versions of the ppi.
Not much use, but possible to know which is inside the cpc.

My games. My Games
My website with coding examples: Unofficial Amstrad WWW Resource

Offline SyX

  • 6128 Plus
  • ******
  • Posts: 1.084
  • Country: br
  • Liked: 1003
Re: Memory Check.
« Reply #13 on: 21:10, 24 October 11 »
And now, what about a FDC tests suite? ;) Something that would check the different commands, examining the FDC flags state, the returned values and the timings.
It would be tremendously useful for us emulator authors. The FDC is sadly the most neglected chip at the moment :/
I agreed totally with you, the last weekend i was breaking my head why the original version of Basun (an horrendous game :P ) doesn't work in emulators, but works perfectly in the real machine.

Well, the problem is when the loader finish to load everything, stop the disk drive motor, send the header to the track 38, wait to receive the acknowledge of this operation (the emulators enter in a infinite loop here, while waiting), restart the motor again, read the track 39 (a dummy read, because this track is a normal formatted track, only has $E5), stop the motor and launch the game.

It looks that the emulators stop immediately the disk drive motor and the program never receive the confirmation of the seek track 38; while in the real CPC take a time, in this time the seek track 38 is made and the FDC signal the operation was made correctly.

.
.
.
Although there is hope ;) , arnoldemu has made a lot of work studying the FDC, he's the author of the disk loader of Batman Begins, and he promise that when he finish a few of his projects, he will publish the sources of the loader and a lot of the secrets of the FDC will be disclosed  :)

PD: While i was writting this, arnoldemu has answered you ;)

PD2: If somebody wants the sources of the memory tester, only ask ;)
« Last Edit: 21:12, 24 October 11 by SyX »

Offline arnoldemu

  • Supporter
  • 6128 Plus
  • *
  • Posts: 5.273
  • Country: gb
    • Unofficial Amstrad WWW Resource
  • Liked: 2152
Re: Memory Check.
« Reply #14 on: 21:23, 24 October 11 »
I see it's relying on the disc motor taking time to slow down.
Discology does something similar, it times how long it takes for the disc to stop, and uses that to calibrate it's writing.
My games. My Games
My website with coding examples: Unofficial Amstrad WWW Resource

Offline phi2x

  • 464 Plus
  • *****
  • Posts: 458
  • Country: fr
    • CPCBox - CPC emulator in JavaScript
  • Liked: 151
Re: Memory Check.
« Reply #15 on: 21:42, 24 October 11 »
http://www.cpctech.org.uk/download/fdctest.zip

A test program I wrote a while ago.
Tests quite a lot of things, but after writing the loader, I found there was some things I had missed.
Very interesting. I didn't know there was already a FDC test suite.
And it looks nice too.

Some remarks though:
The test suite doesn't really indicate what each test is about.
I see there are some brief explanations in the asm code, but it would be even better if there was a small txt file explaining each one of these tests and what are the correct values to satisfy it.

I have bad news too. :( I have converted the dsk to an hfe file and ran it on my real CPC. The tests don't want to execute on it. Just after launching test.bas, the HxC goes crazy and then the Basic returns a "Drive A: read fail. Retry, Ignore or Cancel?".

At this time, I am writing my own ppi, psg and memory testing programs.
I have found that it is possible to detect different versions of the ppi.
Not much use, but possible to know which is inside the cpc.
Interesting! The more tests the better obviously ;)
« Last Edit: 21:45, 24 October 11 by phi2x »
Atwood's law (2007): "Any application that can be written in JavaScript, will eventually be written in JavaScript."

Offline arnoldemu

  • Supporter
  • 6128 Plus
  • *
  • Posts: 5.273
  • Country: gb
    • Unofficial Amstrad WWW Resource
  • Liked: 2152
Re: Memory Check.
« Reply #16 on: 22:29, 24 October 11 »
Very interesting. I didn't know there was already a FDC test suite.
And it looks nice too.

Some remarks though:
The test suite doesn't really indicate what each test is about.
I see there are some brief explanations in the asm code, but it would be even better if there was a small txt file explaining each one of these tests and what are the correct values to satisfy it.
true, I don't have time to update this test at the moment.

I have bad news too. :( I have converted the dsk to an hfe file and ran it on my real CPC. The tests don't want to execute on it. Just after launching test.bas, the HxC goes crazy and then the Basic returns a "Drive A: read fail. Retry, Ignore or Cancel?".
Bad news. I ran the tests on a 6128plus. RUn one disc, then use that to format and make the test disc in another drive.
then run the tests on that created disc.
The test disc does have some special format tracks.

My games. My Games
My website with coding examples: Unofficial Amstrad WWW Resource

Offline phi2x

  • 464 Plus
  • *****
  • Posts: 458
  • Country: fr
    • CPCBox - CPC emulator in JavaScript
  • Liked: 151
Re: Memory Check.
« Reply #17 on: 22:53, 24 October 11 »
I ran the tests on a 6128plus. RUn one disc, then use that to format and make the test disc in another drive.
then run the tests on that created disc.
The test disc does have some special format tracks.

The problem is I can't do that. When I run test.bas, it doesn't even reach the menu. The drive fail message pops up before that.
Atwood's law (2007): "Any application that can be written in JavaScript, will eventually be written in JavaScript."

Offline TFM

  • Visit the mysteries of the CPC at www.futureos.de
  • Supporter
  • 6128 Plus
  • *
  • Posts: 9.899
  • Country: aq
  • Space Chicken for FutureOS is free!
    • index.php?action=treasury
    • FutureOS - The revolution on CPC!
  • Liked: 1971
Re: Memory Check.
« Reply #18 on: 00:25, 25 October 11 »
If somebody has questions (precisely, not general. For general use a book) about the FDC or RAM programming then you can ask me here. Will be my pleasure to share what I know.
TFM of FutureSoft
Also visit the CPC and Plus users favorite OS: FutureOS - The Revolution on CPC6128 and 6128Plus

Offline Bryce

  • The Hardware Guy.
  • Supporter
  • 6128 Plus
  • *
  • Posts: 10.093
  • Country: wf
  • It's not broken, it just hasn't been fixed yet.
    • index.php?action=treasury
  • Liked: 3402
Re: Memory Check.
« Reply #19 on: 18:33, 31 October 11 »
Hi SyX,
     I just did some intensive testing of your RAMTest dsk and there is still a minor error in the program. If I connect a 256K RAM expansion (tested on a 6128+), which is mapped to Banks 0 to 3, the test claims that I have 320K total and Banks 0 to 4 are populated. Which definitely isn't the case. If I connect 512K it correctly reports Banks 0 to 7 are populated and if I connect 256K mapped to Banks 4 to 7 it also works correctly.

Otherwise a seriously cool program, reminds me of the Atari XL RAM Test :)

Bryce. 

Offline TFM

  • Visit the mysteries of the CPC at www.futureos.de
  • Supporter
  • 6128 Plus
  • *
  • Posts: 9.899
  • Country: aq
  • Space Chicken for FutureOS is free!
    • index.php?action=treasury
    • FutureOS - The revolution on CPC!
  • Liked: 1971
Re: Memory Check.
« Reply #20 on: 19:09, 31 October 11 »
Hi SyX,
     I just did some intensive testing of your RAMTest dsk and there is still a minor error in the program. If I connect a 256K RAM expansion (tested on a 6128+), which is mapped to Banks 0 to 3, the test claims that I have 320K total and Banks 0 to 4 are populated. Which definitely isn't the case.

Have you done the test on a CPC6128? In this case you have 64 KB (internal E-RAM) + 256 KB = 320 KB.
 
Now, you can connect 256 KB in two ways. It can target the lower part (&7FCx, Dx) or the upper part (&7FEx, Fx) of the expansion RAM address range.
 
If the 256 KB are connected to the lower part, then the total expansion RAM ist 256 KB. The 256 KB overwrite the 64 KB of internal exp.RAM.
 
If the 256 KB are connected to the upper part, then the total expansion RAM (E-RAM) is 320 KB. 64 KB from the 6128 and 256 KB external E-RAM.
 
You can use also the FutureOS tool "OS Infos" to get a graphic map of the first 512 KB E-RAM. Then it's pretty obvious what I'm talking about. If not please let me know.
 

 
Every square is a block of 16 KB expansion RAM (E-RAM). The hex number in the upper, left corner of each square it the value for port &7Fxx to select that particular E-RAM.
 
Free = RAM is connected and free.
Not.c = RAM is not connected, does not exist.
DIR = RAM is used as DIRectory buffer, so it does exist
KZS = RAM used as buffer, so it also exists.
 
320 KB expansion RAM are shown :-)
 
« Last Edit: 19:17, 31 October 11 by TFM/FS »
TFM of FutureSoft
Also visit the CPC and Plus users favorite OS: FutureOS - The Revolution on CPC6128 and 6128Plus

Offline Bryce

  • The Hardware Guy.
  • Supporter
  • 6128 Plus
  • *
  • Posts: 10.093
  • Country: wf
  • It's not broken, it just hasn't been fixed yet.
    • index.php?action=treasury
  • Liked: 3402
Re: Memory Check.
« Reply #21 on: 20:02, 31 October 11 »
I don't know which mode SyXs software uses, so I can't tell you how it's being banked. But no matter how it is banked, Bank 4 should be empty if only 256K external RAM is connected, shouldn't it?

Bryce.

Offline TFM

  • Visit the mysteries of the CPC at www.futureos.de
  • Supporter
  • 6128 Plus
  • *
  • Posts: 9.899
  • Country: aq
  • Space Chicken for FutureOS is free!
    • index.php?action=treasury
    • FutureOS - The revolution on CPC!
  • Liked: 1971
Re: Memory Check.
« Reply #22 on: 20:10, 31 October 11 »
I don't know which mode SyXs software uses, so I can't tell you how it's being banked. But no matter how it is banked, Bank 4 should be empty if only 256K external RAM is connected, shouldn't it?

Bryce.

I can't tell you neither how SyX's soft works, therefore I suggest to use "OS Infos" from the FutureOS utility disc. This one will clearly show you which blocks are occupied in reality. It's easy:
 
- Start "OS Infos"
- Press "1"
- Press Space
Now you see the semi-graphic map of the first 512 KB expansion RAM. :)
 
You find a disc image here:
http://www.colorado-boys-muenchen.de/users/futureos/files/FutureOS_Utilities.zip
 
TFM of FutureSoft
Also visit the CPC and Plus users favorite OS: FutureOS - The Revolution on CPC6128 and 6128Plus

Offline SyX

  • 6128 Plus
  • ******
  • Posts: 1.084
  • Country: br
  • Liked: 1003
Re: Memory Check.
« Reply #23 on: 22:35, 31 October 11 »
Thanks Bryce for your nice words :D

It's strange that bug, because my program is founding the internal 64 KBs expansion ram of the 6128+, and then, of course, the 4 banks of your 256 KBs expansion ram. Are you sure that the internal expansion ram is disabled?

With respect at the order how the ram are paged, it's easy:
Code: [Select]
Bank 0 -> $C4 $C5 $C6 $C7 (internal expansion ram in 6128, if it's not disabled)
Bank 1 -> $CC $CD $CE $CF
Bank 2 -> $D4 $D5 $D6 $D7
Bank 3 -> $DC $DD $DE $DF
Bank 4 -> $E4 $E5 $E6 $E7
Bank 5 -> $EC $ED $EE $EF
Bank 6 -> $F4 $F5 $F6 $F7
Bank 7 -> $FC $FD $FE $FF
Are there any emulator that support this memory expansion configuration? WinApe doesn't let me to use 128 KBs + 256 Ram Expansion, only 64 + 256 or 128 + 256 Silicon Disks (Banks 4 - 7).

Sorry for the delay in answer, this afternoon i have been very busy finishing my Halloween costume (HalloGrease  ;D ), i'll review the program tomorrow if i return alive  :P

Go, greased lightnin', you're burnin' up the quarter mile
 Greased lightnin', go greased lightnin'... Pivas allá voy!!! xDDDD

Offline TFM

  • Visit the mysteries of the CPC at www.futureos.de
  • Supporter
  • 6128 Plus
  • *
  • Posts: 9.899
  • Country: aq
  • Space Chicken for FutureOS is free!
    • index.php?action=treasury
    • FutureOS - The revolution on CPC!
  • Liked: 1971
Re: Memory Check.
« Reply #24 on: 23:42, 31 October 11 »
WinApe offers at least banks 4-7 (256 Silicon disc). Also Caprice can be used for 320 KB expansion RAM.
 
Solution: Check 128 KB and check box at 256 KB Silicon disc. Then you have RAM banks 0, 4-7. This makes the 320 KB expansion RAM. I checked that with my tool, WinApe works fine.
 
Cool picture! Have fun tonight :-)))
 
TFM of FutureSoft
Also visit the CPC and Plus users favorite OS: FutureOS - The Revolution on CPC6128 and 6128Plus