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 > Detecting REU + VICE
2009-01-08 00:29
AlexC

Registered: Jan 2008
Posts: 299
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
 
... 32 posts hidden. Click here to view all posts....
 
2017-05-20 09:18
chatGPZ

Registered: Dec 2001
Posts: 11386
its not pseudo-random, it (open i/o) returns the last value that was on the bus, just like on the real thing :)
2017-05-20 09:57
Bacchus

Registered: Jan 2002
Posts: 156
Didn't work :-(

Tried it on Vice but $d012 was 04 regardless if I have enabled or disabled the REU in the settings. Tried it using the REU function in 1541 Ultimate II+ but same result...

// Check REU - based on Trash's code

sei
lda $01
sta store01
and #$30
sta $01

ldx #0
stx $df08
vicloop: cpx $d012
bne vicloop
dex
stx $df07
ldx #%10010011
stx $df01

breakhere: lda store01: #$37
sta $01
lda $d012
bne reufound

noreu: lda #<noreutxt
ldy #>noreutxt
jsr $ab1e
2017-05-20 10:20
chatGPZ

Registered: Dec 2001
Posts: 11386
doh - that code can not work when the first thing you are doing is switching off the I/O =)
2017-05-21 18:58
Bacchus

Registered: Jan 2002
Posts: 156
Goepaz - it also doesn't work swapping in the I/O.
2017-05-21 20:23
Trash

Registered: Jan 2002
Posts: 122
I doesnt work because I am stupid and used old code that never worked. I found my detection routine that works without trashing to much stuff:

;-------------------------------------------------------
*= $0810
	sei
;-------------------------------------------------------
		ldx #0
		stx $df08
-		cpx $d012
		bne -
		dex
		stx $df07
; Exchange 255 bytes of c64 and reu memory
		ldx #%10010010
		stx $df01
; Exchange back
		stx $df01
; D012 == 0?
		lda $d012
		bne +
; Yepp, no REU
		lda #0
		sta $d020
		sta $d021
		cli
		jmp *
;-------------------------------------------------------
; No, REU
+	lda #1
	sta $d020
	sta $d021
	cli
	jmp *
;-------------------------------------------------------


The compare didnt work because it stop comparing at any difference.
2017-05-22 09:21
Bacchus

Registered: Jan 2002
Posts: 156
I ran Trash's core core in a continuous loop and then it reset the machine. Setting a source address seems to have fixed that.... Now it works for me!

sei

checkreu: ldx #$05
stx $df02 // Copy to $0500
ldx #0
stx $df03

stx $df08
vicomp: cpx $d012
bne vicomp
dex
stx $df07
// Exchange 255 bytes of c64 and reu memory
ldx #%10010010
stx $df01
// Exchange back
stx $df01

lda $d012
bne reufound
2019-09-24 21:50
ThunderBlade

Registered: Jan 2002
Posts: 77
I want to put a non-intrusive (read-only) REU detection routine in my kernal ROM, so it's executed upon reset. So I see immediately if I have my REU enabled (in 1541Ultimate) or not.

I like the idea of reading $df00, it's the REU status register and as suggested, reading it a couple of times and it never changes, I should be fine. BUT! Action Replay also has stable values at $df00. And 1541U supports tons of other freezers and CRTs that *may* have stable values at $df00.

What's your opinion... currently I think it could be safe to read the other REU registers like C64 address, Interrupt Mask register etc. If they are there with default values (after initial test of stable value at $df00) it should be safe to assume an REU. The values seem to be reset to default upon reset of the C64/1541U...
2019-09-25 15:16
Burglar

Registered: Dec 2004
Posts: 1101
so, instruct reu to copy data from reu to c64, if data was overwritten, you got a reu enabled.
2019-09-25 15:45
Count Zero

Registered: Jan 2003
Posts: 1932
Plain reading of registers without an actual transfer is likely to fail with quite a few cartridges. So, what Burglar sez.
2019-09-25 19:33
ThunderBlade

Registered: Jan 2002
Posts: 77
Ok, thanks. I was more afraid of messing around in $DFxx area could lead to unpredictable behavior/crashes with some other (not REU) cartridges.
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
sachy/BOOM!
Martinland
iAN CooG/HVSC
Nordischsound/Hokuto..
zscs
tlr
ΛΛdZ
Doc Snyder/ONS
Brataccas/HF
Nuckhead/Backbone So..
Freeze/Blazon
Dano/Padua
Chesser/Blazon
REBEL 1/HF
Guests online: 127
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 Layers  (9.6)
2 No Listen  (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.049 sec.