Kezdőlap
Vissza
17xx
geoRAM
SummaTech

fizetett hirdetés

 

17xx REU sorozat

A Commodore három típusú memóriabővítőt gyártott: 1700, 1764 és 1750 jelzéssel.

Gyaníthatóan az eredeti tervek szerint csak a C128-hoz kínáltak volna memóriabővítőt. Az első típus az 1700 volt 128 kB kapacitással, majd ezt követte az 1750 512 kB kapacitással. Valószínűleg a termék sikerén felbuzdulva elkészítették az 1750-es lebutított változatát, és piacra dobták kifejezetten C64-hez 1764 néven. Ennek a kapacitása 256 kB volt, amit úgy értek el, hogy az 1750-es egységből egész egyszerűen kihagyták a memória IC-k felét! Apró eltérés még, hogy a C64-hez kínált bővítőbe nem építik be az R4-gyel jelölt, 390 Ω-os ellenállást (lásd kapcsolási rajz), ám a tapasztalatok szerint ennek nincsen kritikus jelentősége a használatot illetően.

A készülék programozása

Richard Hable ismertetője alapján:

Tartalom:

1. A külső RAM elérése a REU-ban

2. A RAM Expansion Controller (REC) regiszterei

3. Hogyan ismerhető fel a REU

4. Egyszerű RAM átvitel

5. Kiegészítő lehetőségek

6. Átviteli sebesség

7. Megszakítások

8. Kód végrehajtás a bővített memóriában

9. A REU egyéb hasznos lehetőségei

10. A bank átkapcsolás és a DMA összehasonlítása

1) A külső RAM elérése a REU-ban

A REU kiegészítő RAM-ot kínál a C64/C128-hoz. A REU három fajtáját gyártotta a Commdore. Ezek voltak az 1700, 1764 és az 1750, 128, 256 és 512 kB beépített RAM-mal. De akár néhány MByte-ig is bővíthetők.

A külső memória nem címezhető közvetlenül a C64 16 bites címbuszán keresztül. A memória tartalmát a C64 központi memóriáján kell átvinni. Ebből az okból kerül beépítésre a RAM Expansion Controller (REC), amely a memória tartalmat mozgatja a C64 és a REU között a DMA használatával. Ugyanakkor más feladatokat is ellát.

2) A RAM Expansion Controller (REC) regiszterei

A REC saját regiszterein keresztül programozható, melyek az I/O tartomány $DF00 és $DF0A közötti területén jelennek meg amikor a REU-t csatlakoztatjuk a C64 bővítő portjára. Ezek ugyanúgy írhatók és olvashatók mint a VIC vagy a SID regiszterei.

$DF00:    STÁTUSZ REGISZTER: Különböző információk jelzésére (csak olvasható).

Bit 7: FÜGGŐ MEGSZAKÍTÁS (1 = megszakítás vár kiszolgálásra)

 

Bit 6: BLOKK VÉGE (1 = átvitel kész)

 

Bit 5: HIBA (1 = blokk ellenőrzési hiba)

Beállításra kerül, ha az összehasonlítás parancs végrehajtása folyamán eltérés található a C64 és a REU memóriája között.

Bit 4: MÉRET (1 = 256 kbit)

Vélhetőleg a RAM-chipek méretét jelzi. Be van állítva az 1764 és 1750 esetében és törölve van az 1700 esetében.

Bit 3..0: VERZIÓ

Az én egységemben 0-t tartalmaz.

$DF01:    PARANCS REGISZTER: E regiszter írásával RAM átvitel vagy összehasonlítás hajtható végre.

Bit 7: VÉGREHAJTÁS (1 = ávitel a beállított paraméterekkel)

Ezt a bitet kötelező beállítani egy parancs végrehajtásához.

Bit 6: fenntartott (alapesetben 0)

 

Bit 5: TÖLTÉS (1 = engedélyezi az autoload opciót)

Engedélyezett autoload opcióval a cím és hossz regiszterek (lásd alább) változatlanok maradnak a parancs végrehajtás után. Egyébként a cím regiszter a DMA-val utoljára elért byte-ot követő címre fog mutatni, továbbá a hossz regiszter is változni fog (alapesetben 1-re).

Bit 4: FF00

Ha ez a bit beállított, a parancs végrehajtás a parancs regiszter beírását követően azonnal megtörténik. Egyébként a parancs végrehajtás késleltetésre kerül a $FF00 memóriacím következő írásáig.

Bit 3..2: fenntartott (alapesetben 0)

 

Bit 1..0: ÁTVITEL TÍPUS:

00 = átvitel C64 -> REU

01 = átvitel REU -> C64

10 = csere C64 <-> REU

11 = összehasonlítás C64 <-> REU

$DF02..$DF03: C64 BÁZISCÍM: A 16 bites C64 báziscím alsó-byte/felső-byte sorrendben.

$DF04..$DF06: REU BÁZISCÍM: Ez a három byte-os cím tartalmaz egy alsó-, egy felső byte-ot, és egy bővítő bank számot. Alapesetben a bank számnak csak a 0..2 bitjei érvényesek, (maximum 512 kB-ig), a többi bit állandóan beállított. Eltérés kell hogy legyen, ha több mint 512 kB van beépítve.

$DF07..$DF08: ÁTVITEL HOSSZ: Ez egy 16 bites érték, az átviendő vagy összehasonlítandó byte-ok számát tartalmazza. A 0 érték 64 kB-ot jelöl. Ha az átviteli hossz és a C64 báziscím összege meghaladja a 64 kB-ot, a C64 címtartománya túlcsordul, ami a C64 memóriájának 0-ás címtől kezdődő elérését eredményezi. Ha az átviteli hossz és a REU báziscím összege meghaladja az 512 kB-ot, a REU címtartománya túlcsordul, ami a REU memóriájának 0-ás címtől kezdődő elérését eredményezi.

$DF09: MEGSZAKÍTÁSI MASZK REGISZTER

Bit 7: MEGSZAKÍTÁS ENGEDÉLYEZVE (1 = a megszakítás engedélyezve)

 

Bit 6: BLOKK MASZK VÉGE (1 = megszakítás a végén)

 

Bit 5: ELLENŐRZÉSI HIBA (1 = megszakítás ellenőrzési hibakor)

 

Bit 4..0: nem használt (alapesetben mindegyik beállítva)

$DF0A: CÍM VEZÉRLŐ REGISZTER: Vezérli a cím számítást a DMA során. Ha egy cím rögzített, nem egy memória blokk, hanem mindig ugyanaz a byte van megcímezve a báziscím regiszterrel a DMA során.

Bit 7: C64 CÍM VEZÉRLÉS (1 = C64 cím rögzítése)

 

Bit 6: REU CÍM VEZÉRLÉS (1 = REU cím rögzítése)

 

Bit 5..0: nem használt (alapesetben mindegyik beállítva)

A REU regiszterek assembly nyelvben történő eléréséhez célszerű az alábbihoz hasonló címkéket definiálnunk: status = $DF00 command = $DF01 c64base = $DF02 reubase = $DF04 translen = $DF07 irqmask = $DF09 control = $DF0A

3) Hogyan ismerhető fel a REU

Alapesetben a $DF00 és $DF0A közötti címtartomány kihasználatlan. Így ha ide értékeket írunk, azok elvesznek. Tehát ha pl. az 1, 2, 3... értékeket írjuk a $DF02..$DF08 tartományba és azok nem maradnak ott, biztosak lehetünk benne, hogy nincs REU csatlakoztatva. Viszont ha az értékek visszaolvashatóak, az attól is lehet, hogy valami egyéb csatlakoztatott modul ugyanazokat a címeket használja.

Másik probléma a beépített RAM bankok (64 kB-os egységek) számának érzékelése. A MÉRET bit egyedül azt mondja meg, hogy legalább 2 (1700) vagy 4 (1764, 1750) bank van. A valódi méret meghatározható a lehetséges összes RAM bank egyes byte-jainak írási kísérletével, majd ellenőrzésével. Erről bővebben a Commodore Hack Kiadvány 2. számában olvasható, "Dinamikus memória foglalás a C128-nál" címen.

Én személy szerint azt kedvelem, ha a felhasználó maga választhat, mely REU bankok legyenek használatban.

4) Egyszerű RAM átvitel

A RAM bővítés alapvető funkciói a REU alig néhány beállításával elérhetőek.

Csak állítsd be a báziscímet, az átvitel hosszát, majd a parancs regisztert.

A következő kódrészlet átviszi a képernyő memória egy kByte-ját ($0400-$07FF) a REU 0-ás címére:

lda #0

sta control ; hogy biztosan mindkét címmutató számláljon

lda #$0400

sta c64base+1

lda #0

sta reubase

sta reubase+1

sta reubase+2

lda #$0400

sta translen+1

lda #%10010000 ; C64 -> REU átvitel azonnali végrehajtással

sta command

A memória visszaolvasásához a C64-be, cseréld a "lda #%10010000" utasítást "lda #%10010001"-ra.

Úgy gondolom az 17xx funkcióinak ez a része is elegendő volna egy elfogadható RAM bővítőhöz. Azonban a 17xx REU-val való teljes kompatibilitáshoz sokkal összetettebb funkciókat megvalósítása is szükséges.

5) Kiegészítő lehetőségek

Memória csere

A csere paranccsal az 17xx és a C64 memória tartalma fölcserélhető. A programozása megegyezik az egyszerű RAM átvitellel.

Memória összehasonlítás

Nincs RAM átvitel, de az átviteli hossz regiszterben meghatározott számú byte összehasonlításra kerül. Ha eltérések vannak, a státusz regiszter HIBA bitje beállítódik. Ez a bit a státusz regiszter olvasásával törlődik, amit meg is kell tenni mielőtt érvényes információhoz akarnánk jutni.

A teljes C64 memória használata

A C64 memóriáját a REU alapesetben a parancs regiszter írásakor fennálló konfigurációban éri el. Amiatt, hogy a parancs regiszter írható legyen, az I/O területnek aktívnak kell lennie.

Ha a $D000 és $DFFF közötti RAM-ot, vagy a karakter ROM-ot szeretnénk használni, lehetőség van a parancs végrehajtás késleltetésére a parancs byte törölt 4. bittel ("FF00") való tárolásával. A parancs így azután lesz végrehajtva, hogy bármilyen értéket írunk a $FF00 címre.

Példa:

lda #%10000000 ; késleltetett átvitel C64 RAM -> REU

sta command

sei

lda $01

and #$30

sta $01 ; a 64 kB RAM bekapcsolása

lda $FF00 ; hogy a $FF00 tartalma ne változzon

sta $FF00 ; a DMA végrehajtása

lda $01

ora #$37

sta $01 ; a normál konfiguráció bekapcsolása

cli

6) Átviteli sebesség

A DMA alatt a CPU felfüggeszti a működését, és a memória hozzáférési ütemek, melyek normálisan a CPU számára elérhetőek, most a byte-ok egyenkénti elérésére használtak. Így kikapcsolt képernyő és sprite-ok mellett minden óra ütemben (másodpercenként 985248 PAL rendszerű gépen) egy byte továbbítódik. Ha a képernyő be van kapcsolva és a sprite-ok is engedélyezettek, az átvitel kicsivel lassabb, mivel a VIC olykor kizárólagosan fér hozzá a RAM-hoz. Ezeknek a "hiányzó ütemek" a pontos leírása megtalálható a Commodore Hack Kiadvány 3. számában.

A memória területek összehasonlítása épp olyan gyors, mint az átvitel. (Az összehasonlítás megáll az első eltérés megtalálásakor.)

A memória csere fele olyan gyors, mivel minden byte-hoz két C64 memória hozzáférés (olvasás és írás) szükséges.

7) Megszakítások

A megszakítási maszk regiszter bizonyos bitjeinek beállításával a DMA végi IRQ-k választhatók ki. Mivel azonban a CPU a DMA alatt áll, az átvitel mindig be lesz fejezve a parancs regiszter, vagy a $FF00 cím írását követően. Így szükségtelen a "blokk vége" (a státusz regiszter 6. bitje) ellenőrzése, vagy az erre vonatkozó megszakítás engedélyezése.

8) Kód végrehajtás a bővített memóriában

A külső memóriában található kódot a végrehajtáshoz minden esetben be kell másolni a C64 memóriájába. Ez egy hátrány a bank átkapcsolással működő rendszerekkel szemben. Azonban a bank átkapcsolás szimulálható a CSERE paranccsal. Ez történik pl. a RAMDOS-ban, ahol egyedül 256 byte foglalt a C64 memóriájából, a 6 kByte-os RAM disk meghajtó becserélésre kerül valahányszor szükséges. Talán a túl sok csere az oka, hogy a RAMDOS nem igazán gyors a szekvenciális fájl hozzáférésnél.

9) A REU egyéb hasznos lehetőségei

A REC nem kizárólag a RAM átvitel és összehasonlítás során hasznos.

Egy másik (GEOS-ban használt) alkalmazás a C64 RAM területeinek másolásához előbb átviszi azt a REU-ba, majd vissza a kívánt pozícióra a C64 memóriájába. A gyors DMA miatt, ez kb. ötször gyorsabb, mint gépi kódú utasításokkal másolni a memória tartalmát.

Érdekes dolgok végezhetők a báziscímek rögzítésével is. Nagyméretű C64 memória tartományok tölthetők fel nagyon gyorsan egy adott byte értékkel, ha rögzítjük a REU báziscímét. Ugyancsak nagyon gyorsan lehetséges egy azonos byte-tal feltöltött memória tartomány végének megkeresése az adat összehasonlítás által.

A C64 báziscím rögzítése akkor érdekes ha egy I/O portot használunk, mivel így az adatok gyorsabb kiírása lehetséges, mint normál esetben. Lehetőség nyílik valódi bitképes grafika használatára a felső és az alsó képernyő keretben a "magic byte" (a legfelső VIC által megcímzett byte) változtatásával minden óra ütemben, miközben a keret ki van kapcsolva.

A REC általánosan használható mint grafikus gyorsító is, pl. bitkép területek másolásához, vagy az adatok gyors bemásolásához a VIC által címezhető 16 kByte-os területre.

10) A bank átkapcsolás és a DMA összehasonlítása

Összevetve a bank átkapcsolást a DMA-val, úgy gondolom a DMA a kényelmesebben programozható módszer, és a legtöbb esetben gyorsabb is. Az a hátrány, hogy kód végrehajtás nem lehetséges a külső memóriában elenyészővé tehető a csak éppen szükséges részek bemásolásával a C64 memóriájába. A kód végrehajtása lényegesen több időbe telik, mint bemásolni azt a C64 memóriájába.

 

Marko Mäkelä ismertetője alapján:

Bevezetés

A MOS 8726 REC (RAM Expansion Controller) a Commodore REU-kba (RAM Expansion Unit) kerül beépítésre, melyek DMA-alapú külső memória bővítmények a Commodore 64-hez és 128-hoz. Ezek 128 kB, 256 kB és 512 kB méretű bővítményként érhetők el, de elvileg akár 16 MB-ig is kibővíthetők további bank bitek hozzáadásával. A következő leírás elmondja, hogyan bővítheted a REU-d 2 megabyte-ra.

A REC 5 bekötött regiszter kiválasztó vonallal rendelkezik, noha csak 11 regisztere van. A bekötetlen regiszterek az olvasási próbálkozásokra $FF adnak eredményül. A REU alapesetben a $DF00 címen helyezkedik el. Minthogy 5 regiszter kiválasztó vonala van, a REU megjelenik a $DF00-$DF0A, a $DF20-$DF2A, a $DF40-$DF4A tartományokban, és így tovább, egészen $DFE0-$DFEA-ig.

Cím Bitek Funkció
     
0   Státusz regiszter - csak olvasható
  7 Függő megszakítás (1=megszakítás vár kiszolgálásra)
  6 Blokk vége (1=az átvitel befejeződött)
  5 Hiba (1=blokk ellenőrzési hiba)
  4 Méret (jelzi, ha a jumper át van vágva a REU-ban)
  3-0 Verzió szám (0 az általam tesztelt REU-ban)

Megjegyzés: a 7-5 bitek kiolvasáskor törlődnek. A 4. bit egyedül azt mondja meg, a jumper át van-e vágva a REU-ban. Ne hagyatkozz rá, helyette programból határozd meg a REU méretét.

A többi regiszter írható-olvasható:

1   Parancs regiszter
  7 Végrehajtás (1=indítja az átvitelt a pillanatnyi konfigurációban)
  6 Fenntartott (olvasásra 0)
  5 Töltés (1=AUTOLOAD opció engedélyezve)
  4 FF00 (1=letiltja a FF00 dekódolást)
  3-2 Fenntartott (olvasásra 0)
  1-0 Átvitel típusa
    00 = C64 -> REU
    01 = REU -> C64
    10 = csere
    11 = ellenőrzés

AUTOLOAD: Amikor kiválasztod ezt az opciót, a C64 báziscím regiszterek, a memóriabővítő báziscím regiszterek (beleértve a bankot is), valamint a byte számláló regiszterek az átvitel végén automatikusan újratöltődnek. Ez akkor hasznos, ha ugyanazt a műveletet kell végrehajtani ismételten az adatok egy blokkján. Megjegyzendő, hogy ha az AUTOLOAD-ot ellenőrző módban választjuk ki, a jelentkező hiba címe elvész. Máskülönben, ellenőrzési hiba érzékelésekor a REC megszakítja a DMA ciklust, és mindkét báziscím regiszter, valamint a bank regiszter a hibás címre mutat.

Az FF00 dekódolása azt jelenti, hogy a REU nem kezdi meg azonnal az átvitelt a végrehajtás bit beállítását követően, hanem vár a legközelebbi $FF00 címre történő írásra. Az FF00 opció minden használatát követően törlődik.

Ha szereted a zavaros kódot, itt egy szép trükk az FF00 dekódolás használatával: Indítsd az átvitelt egy olvas-módosít-visszaír utasítással, mint az inc $ff00. Ahogy talán tudod, az RMW utasítások az NMOS 65xx sorozatú mikroprocesszorokban először kiírják a változatlan adatot, majd azután módosítják. Tehát az RMW utasítások két írást végeznek, és a REU az átvitelt már az elsőnél megindítja. Ez beállítja a DMA jelet, ami nagy ellenállású állapotba hozza a processzor cím- és adatvezetékeit, valamint az R/-W jelét. Ahogy azt szintén tudhatod, az NMOS processzorok nem állnak meg írás alatt. Így a processzor megpróbálja visszaírni a módosított adatot a $FF00 címre, de nem tudja, mivel a busza le van tiltva. Emiatt a $FF00 cím tartalma változatlan marad.

2 7-0 C64 kezdőcím (alsó byte)
3 7-0 C64 kezdőcím (felső byte)

A cím túlcsordulás nincs érzékelve, $0000-tól folytatódik.

4 7-0 REU kezdőcím (alsó byte)
5 7-0 REU kezdőcím (felső byte)
6 2-0 REU kezdőcím (legfelső bitek)

A szerkesztő megjegyzése: Ez bankként azonosítható; azonban inkább olyan mint egy kezdőcím, mivel ha egy 64 kB-os "bank" határát átlépjük, a bank eggyel megnövekszik. Megjegyzendő, hogy a legnagyobb memória mennyiség 2^19 byte = 512 kB. Ennek a regiszternek a felső bitjei kihasználatlanok, így ha valaki lemásolná a chip-et, az megcímezhetne akár 2^24 byte-ot = 16Mb-ot is. Ez elérhető egy külső latch áramkörrel is. Valójában létezik is egy bővítő, ami ezt a trükköt alkalmazza.

7 7-0 Átviteli hossz (alsó byte) ($0000=64 kB)
8 7-0 Átviteli hossz (felső byte)
9   Megszakítási Maszk Regiszter
  7 Megszakítás engedélyezve (1=megszakítás engedélyezve)
  6 Blokk maszk vége (1=megszakítás a blokk végén)
  5 Ellenőrzési hiba (1=megszakítás ellenőrzési hibakor)
  4-0 nem használt (olvasáskor 1)

A szerkesztő megjegyzése: A megszakítási lehetőség haszontalan, minthogy a processzor nem futtat semmit az átvitel alatt. Csupán elindítja az átvitelt, vár a befejeződésére, és folytatja a program végrehajtást. Így a megszakítás pontosan az átviteli parancsot követően fog fellépni a programban.

Megjegyzés: Ha a megszakítások használatban vannak, kötelező kiolvasni a státusz regisztert (0) legalább egyszer a sikeres átvitelek között a helyes működéshez.

A   Cím vezérlő regiszter
  7-6 00=mindkét cím növelése
    01=a bővítő cím rögzítése
    10=a C64 cím rögzítése
    11=mindkét cím rögzítése
  5-0 nem használt (olvasáskor 1)

A szerkesztő megjegyzése: A 10-es mód - a C64 cím rögzítése - használható digitalizált zene lejátszására vagy rögzítésére. Más felhasználás nem jut eszembe. A mintavételezési frekvencia kissé túlzottan magas, 1 MHz körüli. Egy hozzáféréssel csak 64 kB vihető át, ami így kevesebb mint 0,0665 másodperc.

Néhány megjegyzés

Normál működés közben (cím növeléssel és Autoload nélkül) az átvitel végén mindkét cím regiszter a kiválasztott átviteli tartományt követő memóriacímre mutat. Ez minden üzemmódban igaz, és érvényes mindkét báziscím (és bank) mutatóra, kivéve egyedül ha rögzítve vannak. Jegyezzük még meg, hogy normál működés közben a byte számláló értéke 1-ig csökken. Figyelni kell ezért, hogy ellenőrizzük az átvitel végi byte számláló értékét, hogy jelezze az átviteli állapot befejezését. A byte számláló 0 értéke a teljes 64 kB átvitelét eredményezi. Ismétlem, tördelés jelentkezhet minden működési módban.

A REC kikapcsolja magát a memóriából az átvitel alatt. Ha megpróbálod kiolvasni bármelyik REC regisztert a saját DMA segítségével, a byte a nyílt címterületről lesz beolvasva.

Commodore 128-on a 2 MHz-es működési mód használata nem befolyásolja a REU átviteli sebességét, ami 1 byte az 1 MHz-es órajel ciklus alatt. Ugyanígy az összehasonlítás is egy órajel ciklust vesz igénybe összehasonlított byte-onként, és az összehasonlítás azonnal félbeszakad, ha eltérés jelentkezik. A csere funkció két órajel ciklust vesz igénybe minden byte-hoz. Az átvitel azonnal felfüggesztődik, amint a BUS Available (BA) vonal alacsony állapotba kerül, valamint az átvitel elkezdődik a $df01 vagy $ff00 cím írását követő órajel cikluson.

A 2 Mhz-es üzemmód nem túlzottan biztonságos a REU átvitelhez. A processzor hibás utasításkódot hozhat be közvetlenül az átvitel után. Ez gyakori a 2 MHz-es módban, így inkább ne használd, éppúgy mint a 8502 és a Z80 processzorok közti átkapcsoláskor sem.

Az Autoload opció használatakor a REC regiszterekbe az utoljára beírt értékek másolódnak be az átvitel előtt. Tegyük fel hogy beállítod a REC regisztereit, és végrehajtasz egy vagy több átvitelt, az utolsót Autoload nélkül. Ha ezután végzel egy átvitelt Autoload-dal, nem a cím regiszterek aktuális értékei (melyek a processzorral kiolvashatóak) lesznek használva. Ehelyett az Autoload beállítja a forrás- és célcímeket, valamint az átviteli hosszt azokra az értékekre, melyeket meghatároztál, amikor utoljára írtál a regiszterekbe.

Kezdeti konfiguráció

A RESET-et követő kezdeti konfiguráció a következő:

Regiszter Érték Jelentés
0 $10 Státusz regiszter - a méret bit kivételével nincs beállított bit (ami szintén törlődhet)
1 $10 Parancs regiszter - bit 4: letiltja a FF00 dekódolást
2 $00 C64 kezdőcím, alsó byte
3 $00 C64 kezdőcím, felső byte
4 $00 REU kezdőcím, alsó byte
5 $00 REU kezdőcím, felső byte
6 $f8 REU kezdőcím, legfelső bitek
7 $ff Átviteli hossz, alsó byte ($fff=65535 byte)
8 $ff Átviteli hossz, felső byte
9 $1f Megszakítási maszk regiszter - nincs engedélyezett megszakítás
A $3f Cím vezérlő regiszter - mindkét cím növelése


Hardware tippek

Az 1764 RAM bővítő egység bővítése 256 kB-ról 512 kB-ra:

 

 

Itt látható a saját példányomon a 8 utólag beépített RAM chip és az EPROM foglalat:

 

Az 1750 RAM bővítő egység bővítése 512 kB-ról 2 MB-ra:

 

 

A kiegészítő EPROM foglalat használata:

A 17xx sorozatú RAM bővítőkben található a REC mellett egy üres hely egy 28 lábú EPROM foglalat számára. Állítólag a korai példányokon még be volt forrasztva a foglalat is, ám ezt mi magunk is megtehetjük különösebb nehézség nélkül. A foglalatba 27128 vagy 27256 típusú EPROM helyezhető, a J2 jumpert ennek megfelelően kell átforrasztani (az A14 címvezetékre, vagy +5V-ra - gyári állás - kapcsolható).

Azonban az EPROM használatára C64-en nincsen közvetlenül lehetőség. Ez a foglalat ebben a formában csak a C128-nál használható, funkciója megegyezik a gép belsejében is megtalálható function ROM (más források szerint option ROM) foglalatéval. Az EPROM -OE jelét a REC szolgáltatja, ha a -ROML vagy a -ROMH jelek aktívak. Ezeket a jeleket a C128-on szoftveresen is befolyásolhatjuk a $FF00 címen található MMU regiszteren keresztül. A 64-es esetében erre csak hardveres lehetőség van az -EXROM és a -GAME vezetékek segítségével. Ezek a vonalak azonban nincsenek gyárilag bevezetve a REU-ba, tehát szükséges néhány kiegészítő áramkör és huzalozás beépítése is a működéshez.

A jövőben szeretném elkészíteni egy kiegészítő kapcsolás tervét, mely egy segéd NYÁK-on kapna helyet, és egy tüskesorral az EPROM foglalatba lenne csatlakoztatható. Erre kerülne rá egy 27512-es EPROM, 4 szoftveresen kapcsolható 16 kB-os bankkal, az ezt kiszolgáló logika és tároló. A foglalatban rendelkezésre állnak a szükséges cím- és adatvonalak, így csak néhány kiegészítő vezeték beépítése válna elkerülhetetlenné. Az EPROM elegendő helyet biztosít akár a teljes GEOS kernal, vagy más alternatív operációs rendszer beégetéséhez is.

 

Az 17xx memóriabővítők eredeti szerviz kézikönyve: