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


Forums > C64 Coding > Detecting REU + VICE
2009-01-08 01:29
AlexC

Registered: Jan 2008
Posts: 224
Detecting REU + VICE

I'm looking for reliable method of detecting REU on different machines (c64/128) and VICE. Either I'm doing something wrong or the only really stable method (without actually writing to REU banks like shown here: http://www.codebase64.org/doku.php?id=base:reu_detect) is this one:

lda #$00
sta $df00
cmp $df00
beq noreu

The following code fails on my C128D:
http://www.willcox.de/index2.htm

At this point I don't need the size of REU as I assume that every single one will provide me with 128KB at least and this is as much as I need.

Thanks in advance
 
... 28 posts hidden. Click here to view all posts....
 
2017-03-18 15:27
Groepaz

Registered: Dec 2001
Posts: 8022
"size is tricky because the size bit can be the same in two models"
there is no "size bit" in the first place - that bit tells you the state of the ram-type selection jumper. no more no less.
2017-03-18 16:12
Repose

Registered: Oct 2010
Posts: 129
I didn't know that, I just went by the manual. I had the smallest 1750, and never took it apart. Was there a jumper and it was user upgradable?

Still, that's reliable as it came in the box. If you change the jumper without changing the ram it's obviously your problem.
2017-03-18 16:28
Groepaz

Registered: Dec 2001
Posts: 8022
the jumper tells the REC chip what type of RAMs are used... so if you upgrade the REU you have to set it accordingly. iirc the two smallest REU types can use one type of RAMs, all the bigger ones use the other. (dont recall what is what)
2017-03-18 18:06
Repose

Registered: Oct 2010
Posts: 129
Ok I see, 64x1 DRAMS, and replace them with 16 256x1.

http://www.commodore.ca/manuals/funet/cbm/documents/projects/me..

The jumper J1 is same and cut with 1750 and 1764 (256 and 512k) but on with 1700 (128k).

So you can quickly guess 128k or 256k or more.
2017-03-19 10:45
oziphantom

Registered: Oct 2014
Posts: 125
10 PRINT "DO YOU HAVE AN REU PLUGGED IN OVER 128K? (Y/N):INPUT A$
20 IF A$="Y" SYS XXXX
30 PRINT "PLEASE INSTALL AN REU OVER 128K AND TRY AGAIN"
40 GOTO 40
2017-03-19 14:01
tlr

Registered: Sep 2003
Posts: 1118
40 GOTO 10

;)
2017-03-19 16:51
Frantic

Registered: Mar 2003
Posts: 1301
Hot Swap Gangsta
2017-05-17 21:17
Bacchus

Registered: Jan 2002
Posts: 50
Comments on a few of the aspects here;

=> My program assumes REU to work and it *will* trash the content. So you should never start it if you want to preserve the REU content. As rightfully asked by LFT, I have no reason what so ever to maintain it's content as it will be trashed anyway when the main code starts. Having a polite scanner that doesn't touch the content is hence sort of pointless IMHO.

=> CRT - I found this method;
http://psw.ca/robin/?page_id=182

He stores value in the registers and read them back. It's different from my store and read back 256 times, but it looks a lot like what you describes. Right?

=> My general concern is hence not to preserve REU but I also want to ensure that cartridges work. A working set-up is to have RetroReplay and REU and I want that to work.
2017-05-18 10:06
Trash

Registered: Jan 2002
Posts: 86
This is a piece of reu-checkcode I have used once upon a time. It isn't optimal in any way and trashes A + X registry and $df01, $df07 and $df08 but it works..


ChekREU  ;returns carry = 1 if REU is present
   sei
   lda $01
   sta store_01 + 1
   and #$30
   sta $01
   ldx #0
   stx $df08
   cpx $d012
   bne * - 3
   dex
   stx $df07
   ldx #%10010011
   stx $df01
store_01
   lda #$00
   sta $01
   lda $d012
   beq noREU
   cli
   sec
   rts
noREU
   cli
   clc
   rts
2017-05-20 10:45
Bacchus

Registered: Jan 2002
Posts: 50
Trash,

Thanx for the snippet. If I get it right you are setting up a compare, and such an operation takes time if the REU is there and no time if the REU isn't there, wherafter you use $D012 to validate if time passed. So the compare itself is not really relevant - it's the difference in duration you're after.

I buy that. It seems like a lot better way of doing it than trusting in memory at $dfxx being unstable where not REU is there.

Groepaz - how does that even work in VICE? Is there some sort of pseudo random return at reading the $dfxx addresses?
Previous - 1 | 2 | 3 | 4 | 5 - 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
zzarko
Unkle K/Reset Magazi..
Guests online: 32
Top Demos
1 Uncensored  (9.7)
2 Edge of Disgrace  (9.7)
3 The Shores of Reflec..  (9.6)
4 Coma Light 13  (9.6)
5 Lunatico  (9.6)
6 Comaland 100%  (9.6)
7 Incoherent Nightmare  (9.5)
8 Wonderland XII  (9.5)
9 Comaland  (9.5)
10 Wonderland XIII  (9.5)
Top onefile Demos
1 Dawnfall V1.1  (9.5)
2 SidRok  (9.5)
3 Daah, Those Acid Pil..  (9.5)
4 Treu Love [reu]  (9.4)
5 Tunnel Vision  (9.3)
6 Dawnfall  (9.3)
7 One-Der  (9.2)
8 Hardware Accelerated..  (9.2)
9 Globe 2016 [reu]  (9.2)
10 Safe VSP  (9.1)
Top Groups
1 Booze Design  (9.4)
2 Oxyron  (9.4)
3 Censor Design  (9.3)
4 Crest  (9.3)
5 Camelot  (9.2)
Top NTSC-Fixers
1 Pudwerx  (9.8)
2 Horizon  (9.7)
3 Fungus  (9.6)
4 Booze  (9.5)
5 Stormbringer  (9.4)

Home - Disclaimer
Copyright © No Name 2001-2017
Page generated in: 0.429 sec.