<?xml version="1.0"?>
<?xml-stylesheet type="text/css" href="http://c64mags.untergrund.net/wiki/skins/common/feed.css?303"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
		<id>http://c64mags.untergrund.net/wiki/index.php?action=history&amp;feed=atom&amp;title=Skyhigh_13_ch24_Ram_Expansion_Unit</id>
		<title>Skyhigh 13 ch24 Ram Expansion Unit - Revision history</title>
		<link rel="self" type="application/atom+xml" href="http://c64mags.untergrund.net/wiki/index.php?action=history&amp;feed=atom&amp;title=Skyhigh_13_ch24_Ram_Expansion_Unit"/>
		<link rel="alternate" type="text/html" href="http://c64mags.untergrund.net/wiki/index.php?title=Skyhigh_13_ch24_Ram_Expansion_Unit&amp;action=history"/>
		<updated>2026-06-13T19:59:35Z</updated>
		<subtitle>Revision history for this page on the wiki</subtitle>
		<generator>MediaWiki 1.19.0</generator>

	<entry>
		<id>http://c64mags.untergrund.net/wiki/index.php?title=Skyhigh_13_ch24_Ram_Expansion_Unit&amp;diff=2778&amp;oldid=prev</id>
		<title>Ymgve at 14:26, 26 June 2007</title>
		<link rel="alternate" type="text/html" href="http://c64mags.untergrund.net/wiki/index.php?title=Skyhigh_13_ch24_Ram_Expansion_Unit&amp;diff=2778&amp;oldid=prev"/>
				<updated>2007-06-26T14:26:09Z</updated>
		
		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;&amp;lt;pre&amp;gt;           ram expansion unit&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
howdy folx... here's devil on the keys&lt;br /&gt;
writing sum text. the reason is that i&lt;br /&gt;
promised BIZ KID sum time ago to write&lt;br /&gt;
an little article about the REU to the&lt;br /&gt;
c64 (ram expansion unit (xmem)).&lt;br /&gt;
it's sad that these reu might be a bit&lt;br /&gt;
hard to get nowadays, but if any of you&lt;br /&gt;
gets the chance of buing one, don't&lt;br /&gt;
hesitate. the most common reu is the&lt;br /&gt;
1764 with 256k memory as standard, but&lt;br /&gt;
you can increase it to 512k. ok, these&lt;br /&gt;
reu was originaly built for the c128,&lt;br /&gt;
so there's no problems to use with one.&lt;br /&gt;
&lt;br /&gt;
as a coder it's just great to have a reu&lt;br /&gt;
but these doesn't work like the xmemorys&lt;br /&gt;
on the amiga or pc. since the c64 only&lt;br /&gt;
have an 16 bits adressbus, it can't use&lt;br /&gt;
adresses higher than $ffff (65535) and&lt;br /&gt;
this is why the reus' uses banks. one&lt;br /&gt;
bank is ofcoz 64 kb, and wich means that&lt;br /&gt;
a 256 kb reu have 4 banks (0-3). to use&lt;br /&gt;
the reu while coding, it's easiest to&lt;br /&gt;
get the turboass kit for reu (contains&lt;br /&gt;
t.ass, monitor) wich was fixed for reu&lt;br /&gt;
by tron/fairligt.(monitor coded by tron)&lt;br /&gt;
but if you wanna use it in your own&lt;br /&gt;
utilitys and stuff, there are sum addys&lt;br /&gt;
that you have to control, and that's the&lt;br /&gt;
main reason of why i wrote this text.&lt;br /&gt;
&lt;br /&gt;
here's a complete list of the register&lt;br /&gt;
available for the reu. and afterwards&lt;br /&gt;
i'll introduce 'em to you.&lt;br /&gt;
&lt;br /&gt;
status   = $df00&lt;br /&gt;
command  = $df01&lt;br /&gt;
c64lob   = $df02&lt;br /&gt;
c64hib   = $df03&lt;br /&gt;
reulob   = $df04&lt;br /&gt;
reuhib   = $df05&lt;br /&gt;
reubank  = $df06&lt;br /&gt;
lgtlob   = $df07&lt;br /&gt;
lgthib   = $df08&lt;br /&gt;
irqmask  = $df09&lt;br /&gt;
bnklock  = $df0a&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
status  ($df00) (read only!)&lt;br /&gt;
&lt;br /&gt;
this is a bit controled register.&lt;br /&gt;
this register can't be written to, and&lt;br /&gt;
bit 5-7 will be empty after reading.&lt;br /&gt;
&lt;br /&gt;
bit 7: irq request, will be set when an&lt;br /&gt;
       irq is running.&lt;br /&gt;
&lt;br /&gt;
bit 6: set if copy finnished.&lt;br /&gt;
&lt;br /&gt;
bit 5: if set, an error has occured&lt;br /&gt;
       during transfer.&lt;br /&gt;
&lt;br /&gt;
bit 4: size of reu (0=512 kb, 1=256 kb)&lt;br /&gt;
&lt;br /&gt;
bits 0-3: reu version number.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
command ($df01)&lt;br /&gt;
&lt;br /&gt;
this is a bit-controled register the&lt;br /&gt;
bits used are:&lt;br /&gt;
&lt;br /&gt;
bit 7: when this bit is set, the reu&lt;br /&gt;
       starts the transfer. (that's why&lt;br /&gt;
       you have to store $df01 last!)&lt;br /&gt;
&lt;br /&gt;
bit 6: reserved&lt;br /&gt;
&lt;br /&gt;
bit 5: autoload (don't ask me!!!)&lt;br /&gt;
&lt;br /&gt;
bit 4: write at $fff0 enable.&lt;br /&gt;
&lt;br /&gt;
bit 3: reserved&lt;br /&gt;
&lt;br /&gt;
bit 2: reserved&lt;br /&gt;
&lt;br /&gt;
bits 0-1:&lt;br /&gt;
&lt;br /&gt;
       wich transfer mode.&lt;br /&gt;
&lt;br /&gt;
       00 c64 --&amp;amp;gt; reu&lt;br /&gt;
       01 reu --&amp;amp;gt; c64&lt;br /&gt;
       10 c64 &amp;amp;lt;-&amp;amp;gt; reu (switch)&lt;br /&gt;
       11 verify&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
c64lob  ($df02)&lt;br /&gt;
&lt;br /&gt;
sets the lowbyte of the c64 start&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
c64hib  ($df03)&lt;br /&gt;
&lt;br /&gt;
sets the highbyte of the c64 start&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
reulob  ($df04)&lt;br /&gt;
&lt;br /&gt;
sets the lowbyte of the reu start&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
reuhib  ($df05)&lt;br /&gt;
&lt;br /&gt;
sets the highbyte of the reu start&lt;br /&gt;
&lt;br /&gt;
reubank ($df06)&lt;br /&gt;
&lt;br /&gt;
decides wich bank u will use in the reu&lt;br /&gt;
when transfering.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
lgtlob  ($df07)&lt;br /&gt;
&lt;br /&gt;
lowbyte of the transfer lenght&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
lgthib  ($df08)&lt;br /&gt;
&lt;br /&gt;
highbyte of the transfer lenght&lt;br /&gt;
&lt;br /&gt;
irqmask ($df09)&lt;br /&gt;
&lt;br /&gt;
another bit controled register.&lt;br /&gt;
&lt;br /&gt;
bit 7: enables irq while transfering.&lt;br /&gt;
&lt;br /&gt;
bit 6: holds irq to after transfering.&lt;br /&gt;
&lt;br /&gt;
bit 5: error in verify&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
bnklock ($df0a)&lt;br /&gt;
&lt;br /&gt;
this register allowes you to lock the&lt;br /&gt;
memory counters  (f.ex transfer $1000 in&lt;br /&gt;
c64 to $1000-$2000 in reu(fill reu area&lt;br /&gt;
with the byte in $1000))&lt;br /&gt;
this could be usefull for FAST filling&lt;br /&gt;
an area with a certain byte (check out&lt;br /&gt;
the fill rout in tronmon 2.0).&lt;br /&gt;
this adress is also bit-controled.&lt;br /&gt;
the bits are:&lt;br /&gt;
&lt;br /&gt;
bit 7: lock c64 (if set)&lt;br /&gt;
&lt;br /&gt;
bit 6: lock reu (if set)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
allright, to make things a little more&lt;br /&gt;
clear, i'll write a little program&lt;br /&gt;
with comments.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
reumove&lt;br /&gt;
        lda #$00      ;set the c64 start&lt;br /&gt;
        sta c64lob    ;addy to $2000&lt;br /&gt;
        lda #$20      ;&lt;br /&gt;
        sta c64hib    ;&lt;br /&gt;
&lt;br /&gt;
        lda #$00      ;set the reu start&lt;br /&gt;
        sta reulob    ;addy to $4000&lt;br /&gt;
        lda #$40      ;&lt;br /&gt;
        sta reuhib    ;&lt;br /&gt;
&lt;br /&gt;
        lda #$01      ;use bank 1 in reu&lt;br /&gt;
        sta reubank   ;&lt;br /&gt;
&lt;br /&gt;
        lda #$ff      ;set lenght of&lt;br /&gt;
        sta lgtlob    ;transfer&lt;br /&gt;
        lda #$1f      ;&lt;br /&gt;
        sta lgthib    ;&lt;br /&gt;
&lt;br /&gt;
        lda #%00000000;unlock both c64&lt;br /&gt;
        sta bnklock   ;and reu&lt;br /&gt;
&lt;br /&gt;
        lda #%10010000;write to $fff0&lt;br /&gt;
        sta command   ;set c64 as src&lt;br /&gt;
                      ;and reu as dest.&lt;br /&gt;
                      ;and start&lt;br /&gt;
                      ;transfering.&lt;br /&gt;
&lt;br /&gt;
        rts&lt;br /&gt;
&lt;br /&gt;
/devil of noice 1994-09-16&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Ymgve</name></author>	</entry>

	</feed>