Log inRegister an accountBrowse CSDbHelp & documentationFacts & StatisticsThe forumsAvailable RSS-feeds on CSDbSupport CSDb Commodore 64 Scene Database
You are not logged in - nap
CSDb User Forums


Forums > C64 Coding > what is your RAM init pattern?
2016-04-27 19:49
chatGPZ

Registered: Dec 2001
Posts: 11386
what is your RAM init pattern?

since i stumbled about yet another case of some ancient demo that relies on uninitialized RAM - and which would only work if you change the default VICE uses currently - i think its about time to collect some hard data about this phenomenon and perhaps at the end add proper configuration for it to VICE (or even choose a better default).

background: when you power on your C64, the RAM will not be zero, instead (about) half of the RAM cells will be 1, and the other half will be 0. this results in some kind of pattern (mostly) consisting of $00 and $ff. for example if you start VICE, then enter the monitor and look at a page of RAM it shows this:

(C:$e5d4) m c000 c0ff
>C:c000  00 00 00 00  00 00 00 00  00 00 00 00  00 00 00 00   ................
>C:c010  00 00 00 00  00 00 00 00  00 00 00 00  00 00 00 00   ................
>C:c020  00 00 00 00  00 00 00 00  00 00 00 00  00 00 00 00   ................
>C:c030  00 00 00 00  00 00 00 00  00 00 00 00  00 00 00 00   ................
>C:c040  ff ff ff ff  ff ff ff ff  ff ff ff ff  ff ff ff ff   ................
>C:c050  ff ff ff ff  ff ff ff ff  ff ff ff ff  ff ff ff ff   ................
>C:c060  ff ff ff ff  ff ff ff ff  ff ff ff ff  ff ff ff ff   ................
>C:c070  ff ff ff ff  ff ff ff ff  ff ff ff ff  ff ff ff ff   ................
>C:c080  00 00 00 00  00 00 00 00  00 00 00 00  00 00 00 00   ................
>C:c090  00 00 00 00  00 00 00 00  00 00 00 00  00 00 00 00   ................
>C:c0a0  00 00 00 00  00 00 00 00  00 00 00 00  00 00 00 00   ................
>C:c0b0  00 00 00 00  00 00 00 00  00 00 00 00  00 00 00 00   ................
>C:c0c0  ff ff ff ff  ff ff ff ff  ff ff ff ff  ff ff ff ff   ................
>C:c0d0  ff ff ff ff  ff ff ff ff  ff ff ff ff  ff ff ff ff   ................
>C:c0e0  ff ff ff ff  ff ff ff ff  ff ff ff ff  ff ff ff ff   ................
>C:c0f0  ff ff ff ff  ff ff ff ff  ff ff ff ff  ff ff ff ff   ................


this is the default pattern, which could be shortened to "64 times $00, 64 times $ff, repeat"

now i'd like to know how it looks like on your (real) C64... if you have some cartridge with ML monitor, all you need to do is power on your c64, check some memory page, and post the pattern here (you can ignore that some values wont actually be 0 or $ff - what matters is the general trend). additionally it would be extra cool if you could look into your C64 and post the type of RAM chips that it uses as well (since the pattern most likely depends on them) - they are labelled 4164 or 4464 or 41464 (please post everything written on it, the exact type and manufacturer is interesting here). Also please post the ASSY NO of the board, as the way RAM is wired up matters as well.

thanks for your help!

PS: if you are curious, Typical is the demo in question... if you can name other examples ("works in CCS64 but not in VICE is often an indicator for it), please post them too!
 
... 47 posts hidden. Click here to view all posts....
 
2016-04-28 14:29
Flavioweb

Registered: Nov 2011
Posts: 463
...mmm...
What happen if you fill all ram with 00 or FF and power-cycle your C64?
If is only a question of caps charge,at least in one case,you should get the perfect 00/FF pattern back...
No?
2016-04-28 14:31
chatGPZ

Registered: Dec 2001
Posts: 11386
i actually tried that on the C64 that retains its RAM content for very long... no, it doesnt improve the situation, you really have to power off for some (!) minutes (!).

i updated the test program and also the readme with results from my own C64s
2016-04-28 14:32
tlr

Registered: Sep 2003
Posts: 1790
btw, I think the presence of randomness is an important emulation aspect. Some programs (originals) check for the presence of randomness in the start up pattern as a means of detecting a prefilled memory vs a normal "dirty" startup.
DarkStar BBS V3.1 did this, but I'm sure it was fairly common.

I guess it has to be pseudo random in some smart way, not to violate the reproducability of the startup sequence.
2016-04-28 14:36
chatGPZ

Registered: Dec 2001
Posts: 11386
good point! guess some code for that needs to be added to VICE as well then :)

edit: btw it would be cool to extract some of those "is there randomness in memory" check routines extracted and made into test programs :)
2016-04-28 17:42
ChristopherJam

Registered: Aug 2004
Posts: 1409
C64C+RR
:b000 00 00 00 00 00 00 00 00
:b008 00 00 00 00 00 00 00 00
:b010 00 00 00 00 00 00 00 00
:b018 00 00 00 00 00 00 00 00
:b020 00 00 00 00 00 00 00 00
:b028 00 00 00 00 00 00 00 00
:b030 00 00 00 00 00 00 00 00
:b038 00 00 00 00 00 00 00 00
:b040 00 00 00 00 00 00 00 00
:b048 00 00 00 00 00 00 00 00
:b050 00 00 00 00 00 00 00 00
:b058 00 00 00 00 00 00 00 00
:b060 00 00 00 00 00 00 00 00
:b068 00 00 00 00 00 00 00 00
:b070 00 00 00 00 00 00 00 00
:b078 00 00 00 00 00 00 00 00
:b080 ff ff ff ff ff ff ff ff
:b088 ff ff ff ff ff ff ff ff
:b090 ff ff ff ff ff ff ff ff
:b098 ff ff ff ff ff ff ff ff
:b0a0 ff ff ff ff ff ff ff ff
:b0a8 ff ff ff ff ff ff ff ff
:b0b0 ff ff ff ff ff ff ff ff
:b0b8 ff ff ff ff ff ff ff ff
:b0c0 ff ff ff ff ff ff ff ff
:b0c8 ff ff ff ff ff ff ff ff
:b0d0 ff ff ff ff ff ff ff ff
:b0d8 ff ff ff ff ff ff ff ff
:b0e0 ff ff ff ff ff ff ff ff
:b0e8 ff ff ff ff ff ff ff ff
:b0f0 ff ff ff ff ff ff ff ff
:b0f8 ff ff ff ff ff ff ff f0

:c000 ff ff ff ff ff ff ff ff
:c008 ff ff ff ff ff ff ff ff
:c010 ff ff ff ff ff ff ff ff
:c018 ff ff ff ff ff ff ff ff
:c020 ff ff ff ff ff ff ff ff
:c028 ff ff ff ff ff ff ff ff
:c030 ff ff ff ff ff ff ff ff
:c038 ff ff ff ff ff ff ff ff
:c040 ff ff ff ff ff ff ff ff
:c048 ff ff ff ff ff ff ff ff
:c050 ff ff ff ff ff ff ff ff
:c058 ff ff ff ff ff ff ff ff
:c060 ff ff ff ff ff ff ff ff
:c068 ff ff ff ff ff ff ff ff
:c070 ff ff ff ff ff ff ff ff
:c078 ff ff ff ff ff ff ff ff
:c080 00 00 00 00 00 00 00 00
:c088 00 00 00 00 00 00 00 00
:c090 00 00 00 00 00 00 00 00
:c098 00 00 00 00 00 00 00 00
:c0a0 00 00 00 00 00 00 00 00
:c0a8 00 00 00 00 00 00 00 00
:c0b0 00 00 00 00 00 00 00 00
:c0b8 00 00 00 00 00 00 00 00
:c0c0 00 00 00 00 00 00 00 00
:c0c8 00 00 00 00 00 00 00 00
:c0d0 00 00 00 00 00 00 00 00
:c0d8 00 00 00 00 00 00 00 00
:c0e0 00 00 00 00 00 00 00 00
:c0e8 00 00 00 00 00 00 00 00
:c0f0 00 00 00 00 00 00 00 00
:c0f8 00 00 00 00 00 00 00 0f

Note the last byte of each page..

edit: I only powered off for a few seconds, but before that $c000-$c100 contained random crap from whatever I last ran a couple of weeks ago.
2016-04-28 18:09
soci

Registered: Sep 2003
Posts: 480
Quoting Groepaz
i actually tried that on the C64 that retains its RAM content for very long...

I guess it was not a C64C then as that's where the 10 Ohm discharge resistor was added for the off position.
2016-04-28 18:44
lft

Registered: Jul 2007
Posts: 369
Nah, that resistor drains a lot of caps, but not the ones inside the ram chips. Those are isolated from the outside world when they're not being addressed.
2016-04-28 18:53
chatGPZ

Registered: Dec 2001
Posts: 11386
soci: see the readme in the repo - it infact was a C64C :)

edit: ok so, updated the readme again with config examples for VICE that (mostly) reproduce the patterns listed. also i update the preview of the RAM init pattern in WinVICE r31093 (ie this nights build) so you can try yourself to reproduce the pattern of your C64 there.

Christopher Jam: does the pattern inverting happen every $1000 bytes over the whole memory range? (and could you check what RAM type is in your C64 please?)

where are the others? come one, we need more data! :)
2016-04-28 21:04
Burglar

Registered: Dec 2004
Posts: 1101
here's mine, depends on time of day.

:c000 p0 0p p0 0p p0 0p p0 0p
:c008 p0 0p p0 0p p0 0p p0 0p
:c010 p0 0p p0 0p p0 0p p0 0p
:c018 p0 0p p0 0p p0 0p p0 0p
:c020 p0 0p p0 0p p0 0p p0 0p
:c028 p0 0p p0 0p p0 0p p0 0p
:c030 p0 0p p0 0p p0 0p p0 0p
:c038 p0 0p p0 0p p0 0p p0 0p
:c040 p0 0p p0 0p p0 0p p0 0p
:c048 p0 0p p0 0p p0 0p p0 0p
:c050 p0 0p p0 0p p0 0p p0 0p
:c058 p0 0p p0 0p p0 0p p0 0p
:c060 p0 0p p0 0p p0 0p p0 0p
:c068 p0 0p p0 0p p0 0p p0 0p
:c070 p0 0p p0 0p p0 0p p0 0p
:c078 p0 0p p0 0p p0 0p p0 0p
2016-04-29 06:45
Flavioweb

Registered: Nov 2011
Posts: 463
IIRC the C64 -emulated- in the C128 have a ram pattern of 64-$FF/64-$00 at start...
Maybe this was a cause of -incompatibility-, back in the days...

Anyway i started to collect datas from my machines.
I used a Breadbin, a C64c and a C64g.

I cold started all 3 c64 and i dumped all ram from $0800 to $CFFF, then i filled $0800-$CFFF with $FF and power-cycled each machine, waiting a minute before turn it on again.
Then re-dumped same ram area again. Same with $00.

All files, with some photos (expecially those of the Breadbin, which i photographed also ram chips) are in DB folder linked below.

Here is only "cold start" patterns:

C64 breadbin pattern looks like:
.:c000 36 ff 00 00 ff ff 00 00 6.......
.:c008 ff ff 00 00 ff ff 00 00 ........
.:c010 ff ff 00 00 ff ff 00 00 ........
.:c018 ff ff 00 00 ff ff 00 00 ........
.:c020 ff ff 00 00 ff ff 00 00 ........
.:c028 fe ff 00 00 ff ff 00 00 ........
.:c030 ff ff 00 00 ff ff 00 00 ........
.:c038 ff ff 00 00 ff ff 00 00 ........
.:c040 ff ff 00 00 ff ff 00 00 ........
.:c048 ff ff 00 00 fe ff 08 00 ........
.:c050 ff ff 00 00 ff ff 00 00 ........
.:c058 ff ff 00 00 bf ff 00 00 ........
.:c060 ff ff 00 00 ff ff 00 00 ........
.:c068 ff fb 00 00 ff ff 00 00 ........
.:c070 ff ff 00 00 ff ff 00 00 ........
.:c078 ff ff c0 40 fe fe cc 06 ...@..L.
.:c080 76 fe 00 00 ff ff 00 00 ........
.:c088 ff ff 00 00 ff ff 00 00 ........
.:c090 ff ff 00 00 ff ff 00 00 ........
.:c098 ff ff 00 00 ff ff 00 00 ........
.:c0a0 ff ff 00 00 ff ff 00 00 ........
.:c0a8 ff ff 00 00 ff ff 00 00 ........
.:c0b0 ff ff 00 00 ff ff 00 00 ........
.:c0b8 ff ff 00 00 ff ff 00 00 ........
.:c0c0 ff ff 00 00 ff ff 00 00 ........

C64C:
.:c000 ff ff ff ff ff ff ff ff ........
.:c008 ff ff ff ff ff ff ff ff ........
.:c010 ff ff ff ff ff ff ff ff ........
.:c018 ff ff ff ff ff ff ff ff ........
.:c020 ff ff ff ff ff ff ff ff ........
.:c028 ff ff ff ff ff ff ff ff ........
.:c030 ff ff ff ff ff ff ff ff ........
.:c038 ff ff ff ff ff ff ff ff ........
.:c040 ff ff ff ff ff ff ff ff ........
.:c048 ff ff ff ff ff ff ff ff ........
.:c050 ff ff ff ff ff ff ff ff ........
.:c058 ff ff ff ff ff ff ff ff ........
.:c060 ff ff ff ff ff ff ff ff ........
.:c068 ff ff ff ff ff ff ff ff ........
.:c070 ff ff ff ff ff ff ff ff ........
.:c078 ff ff ff ff ff ff ff ff ........
.:c080 00 00 00 00 00 00 00 00 ........
.:c088 00 00 00 00 00 00 00 00 ........
.:c090 00 00 00 00 00 00 00 00 ........
.:c098 00 00 00 00 00 00 00 00 ........
.:c0a0 00 00 00 00 00 00 00 00 ........
.:c0a8 00 00 00 00 00 00 00 00 ........
.:c0b0 00 00 00 00 00 00 00 00 ........
.:c0b8 00 00 00 00 00 00 00 00 ........
.:c0c0 00 00 00 00 00 00 00 00 ........

C64G
.:c000 00 00 ff ff ff ff 00 00 ........
.:c008 00 00 ff ff ff ff 00 00 ........
.:c010 00 00 ff ff ff ff 00 00 ........
.:c018 00 00 ff ff ff ff 00 00 ........
.:c020 00 00 ff ff ff ff 00 00 ........
.:c028 00 00 ff ff ff ff 00 00 ........
.:c030 00 00 ff ff ff ff 00 00 ........
.:c038 00 00 ff ff ff ff 00 00 ........
.:c040 00 00 ff ff ff ff 00 00 ........
.:c048 00 00 ff ff ff ff 00 00 ........
.:c050 00 00 ff ff ff ff 00 00 ........
.:c058 00 00 ff ff ff ff 00 00 ........
.:c060 00 00 ff ff ff ff 00 00 ........
.:c068 00 00 ff ff ff ff 00 00 ........
.:c070 00 00 ff ff ff ff 00 00 ........
.:c078 00 00 ff ff ff ff 00 00 ........
.:c080 00 00 ff ff ff ff 00 00 ........
.:c088 00 00 ff ff ff ff 00 00 ........
.:c090 00 00 ff ff ff ff 00 00 ........
.:c098 00 00 ff ff ff ff 00 00 ........
.:c0a0 00 00 ff ff ff ff 00 00 ........
.:c0a8 00 00 ff ff ff ff 00 00 ........
.:c0b0 00 00 ff ff ff ff 00 00 ........
.:c0b8 00 00 ff ff ff ff 00 00 ........
.:c0c0 00 00 ff ff ff ff 00 00 ........

Maybe C64G pattern is the best one =) ?

All files are here:
https://www.dropbox.com/sh/34w7h11mps6ss0n/AAB8t2CiRY9kT-5ADrXB..
Previous - 1 | 2 | 3 | 4 | 5 | 6 - Next
RefreshSubscribe to this thread:

You need to be logged in to post in the forum.

Search the forum:
Search   for   in  
All times are CET.
Search CSDb
Advanced
Users Online
Guests online: 97
Top Demos
1 Next Level  (9.7)
2 13:37  (9.7)
3 Mojo  (9.7)
4 Coma Light 13  (9.6)
5 Edge of Disgrace  (9.6)
6 What Is The Matrix 2  (9.6)
7 The Demo Coder  (9.6)
8 Uncensored  (9.6)
9 Comaland 100%  (9.6)
10 Wonderland XIV  (9.6)
Top onefile Demos
1 No Listen  (9.6)
2 Layers  (9.6)
3 Cubic Dream  (9.6)
4 Party Elk 2  (9.6)
5 Copper Booze  (9.6)
6 Dawnfall V1.1  (9.5)
7 Rainbow Connection  (9.5)
8 Onscreen 5k  (9.5)
9 Morph  (9.5)
10 Libertongo  (9.5)
Top Groups
1 Performers  (9.3)
2 Booze Design  (9.3)
3 Oxyron  (9.3)
4 Triad  (9.3)
5 Censor Design  (9.3)
Top Fullscreen Graphicians
1 Joe  (9.7)
2 Sulevi  (9.6)
3 The Sarge  (9.6)
4 Veto  (9.6)
5 Facet  (9.6)

Home - Disclaimer
Copyright © No Name 2001-2024
Page generated in: 0.108 sec.