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: 293
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-03-19 13:01
tlr

Registered: Sep 2003
Posts: 1714
40 GOTO 10

;)
2017-03-19 15:51
Frantic

Registered: Mar 2003
Posts: 1627
Hot Swap Gangsta
2017-05-17 19:17
Bacchus

Registered: Jan 2002
Posts: 154
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 08:06
Trash

Registered: Jan 2002
Posts: 122
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 08:45
Bacchus

Registered: Jan 2002
Posts: 154
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?
2017-05-20 09:18
chatGPZ

Registered: Dec 2001
Posts: 11114
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: 154
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: 11114
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: 154
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.
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
Lord Khyron
Sentinel/Excess/TREX
kbs/Pht/Lxt
grennouille
QuasaR/CENTRiC
Guests online: 127
Top Demos
1 Next Level  (9.8)
2 Mojo  (9.7)
3 Coma Light 13  (9.7)
4 Edge of Disgrace  (9.6)
5 Comaland 100%  (9.6)
6 No Bounds  (9.6)
7 Uncensored  (9.6)
8 Wonderland XIV  (9.6)
9 Memento Mori  (9.6)
10 Bromance  (9.5)
Top onefile Demos
1 It's More Fun to Com..  (9.7)
2 Party Elk 2  (9.7)
3 Cubic Dream  (9.6)
4 Copper Booze  (9.5)
5 TRSAC, Gabber & Pebe..  (9.5)
6 Rainbow Connection  (9.5)
7 Wafer Demo  (9.5)
8 Dawnfall V1.1  (9.5)
9 Quadrants  (9.5)
10 Daah, Those Acid Pil..  (9.5)
Top Groups
1 Oxyron  (9.3)
2 Nostalgia  (9.3)
3 Booze Design  (9.3)
4 Censor Design  (9.3)
5 Crest  (9.3)
Top Logo Graphicians
1 Sander  (10)
2 Facet  (9.7)
3 Mermaid  (9.4)
4 Pal  (9.4)
5 Shine  (9.3)

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