Mi lakik a cartridge-ben?
Sok félreértés, legenda kering a cartridge lehetőségeiről,
volt aki négy foglalatos panelt keresett, amelybe egyszerre hatféle programot
akart behelyezni. A "homály" eloszlatására nézzük meg részletesen,
mis is az a cartridge, hogyan illeszkedik a számítógép memória-rendszerébe,
és milyen lehetőségek állnak azok előtt, akik szeretnék kihasználni az ez irányú
bővítési lehetőségeket.
Az ENTERPRISE "agya", a Zilog cég Z-80 mikroprocesszora 16 vezetéken
címzi meg a lehetséges 2^16 =65536=64KB memóriahelyet. Ennek ellenére az ENTERPRISE
összesen 4 megabájt, azaz 4096KB memóriát tud kezelni. A gépben ebből ténylegesen
csak 48KB (német nyelvű gépnél 64KB) ROM (csak olvasható memória a rendszerprogramok
tárolására) és 128KB RAM (írható-olvasható memória a képernyő, a változók, az
adatok és a "mi programjaink" számára) található, de a többi hely
is betölthető a kapható többféle bővítőkártya segítségével. Hogyan lehetséges
ez?
Válasszuk kétfelé a címvezetékeket!! Az alsó csoportba tartozzon az alacsonyabb
helyiértékű 14, amely így 2^14=16KB memóriát címez, a második csoport két címvezetéke
pedig meghatározza, hogy a lehetséges 4*16KB-ból éppen melyikről van szó. Így
a Z-80 64KB memóriáját felosztottuk négy darab, egyenként 16KB-os "lapra".
A tényleges címek:
0. lap: |
0000h -
|
3FFFh
|
( 0 -
|
16383)
|
1. lap: |
4000h - |
7FFFh |
(16384 - |
32767) |
2. lap: |
8000h - |
BFFFh |
(32768 - |
49151) |
3. lap: |
C000h - |
FFFFh |
(49152 - |
65535) |
A gép tetvezői a két legmagasabb helyiértékű címvezetéket "ellopták", és ezek segítségével egy nyolcbites lapregisztert (page register) aktivizálnak, amelynek nyolc kimenete a processzor maradék 14 címvezetékével együtt 22 vezetéken címzi a memóriát, (2^22=4M). A négy lapregiszter megmutatja, hogy a hozzájuk tartozó lapon a 4M memória melyik 16KB-s szelete - szakszóval szegmense - hátható". Így tehát a processzor 16KB-s lapjain a memória négy tetszőleges 16KB-ja szegmense foglalhat helyet, akár egyazon szegmens mind a négy lapon. A lapregiszterek tartalma természetesen változtatható, így ha egy program teleírt már egy szegmenst, annak helyére újabb 16KB üres memóriát (ha még van ilyen) lapozhat be. A négy lapregiszter a következő port-címeken helyezkedik el:
Kísérletképpen megnézhetjük, hogy melyik lapon éppen melyik szegmens található
BASIC-ben a PRINT IN(176),IN(177),IN(178), IN(179) utasítással.
Összefoglalva: a Z-80 processzor 64KB-s címtartománya négy 16KB lapra, a 4MB memória 256 16KB-s
szegmensre osztódik, és a lapregiszterek tartalmának változtatásával a négy
lapra bármelyik négy szegmenst belapozhatjuk.
Nézzük ezek után, hogyan épül fel gépünk memóriája! A RAM-terület felülről lefelé
terjed, a legmagasabb nyolc szegmensen található. A legutolsó, FFh (255) számú
szegmens a legfontosabb, ez az ún. rendszerszegmens. Ha ez hibás, a gép el sem
indul. A közvetlenül alatta lévő három szegmenssel együtt alkotják a gép alaplapján
található 64Kt, amelyhez a NICK video-vezérlő is hozzáférhet, ezért itt tárolódik
a kép is. Az FBh-től F8h-ig terjedő második 64KB egy külön kis áramköri lapon
található, alaphelyzetben ide kerülnek a (pl. Basic) programok. A fenti hexadecimális
szegmenssorszámokat láthatjuk a gép bekapcsolás utáni memória-tesztelése közben:
pl. a "TESTING FB" felirat azt jelenti, hogy a gép éppen az FBh (251)
számú szegmenet vizsgálja.
A csak olvasható memória alulról fölfelé halad. A 0. és 1. szegmensen található
a gépbe beépített operációs rendszer, az EXOS , és a WP szövegszerkesztő. A
2. és 3. szegmensen a 0. és az 1. ismétlődik, ez a terület későbbi bővítéseknek
van fenntartva. Most érkeztünk el a cartridge-hoz: ebben találhatók a 4-7. szegmensek.
Az összes többi szegmens az alapgépben üres. Gyakorlatilag a cartridge-ben is
csak két szegmens van kihasználva. Kétnyelvű gépen a 4. szegmensen van az angol
Basic-értelmező, az 5. szegmensen a német bővítő. Angol gépeken mindkét szegmensben
ugyanúgy a Basic-interpreter látszik, a könnyebb bővíthetőség kedvéért. Mint
látjuk, a cartridge-ben négy szegmensnyi, azaz 64KB helyünk van. Hogyan használható
ez bővítésre?
Nézzük először, mi is az a bővítés? Az EXOS-t kicsit jobban ismerők tudják, hogy a "rezidens rendszerbővítő" olyan program, amely a 3. lapon, tehát a C000h-FFFFh memóriaterületen fut, egy "EXOS_ ROM" fejléccel rendelkezik, amelyet az esetleges új eszközleíró lánc kezdőcíme, majd -a C00Ah címen - a program belépési pontja (első utasítása) követ. Ilyen maga a Basic-értelmező, a német bővítés, vagy a sokak által ismert TurboASMON 1.5 is. Erről meggyőződhetőnk a következő rövid programmal:
100 FOR I=0 TO 7110
110 PRINT CHR$(SPEEK(5,I));
120 NEXT I
130 PRINT
Hogyan találja meg ezeket a bővítéseket a gép?
Bekapcsolás után az EXOS végignézi a szegmensek elejét, hogy talál-e ott "EXOS
ROM" fejlécet. Ha nem, megy tovább, amíg végig nem ér a memórián. Ha talál,
az adott szegmenst belapozza a 3. lapra, inicializálja a bővítő-programot, és
beírja a bővítők listájába. (Hogy ez micsoda, a mi szempontunkból most mellékes.)
Ebből a lényeg: az EXOS csak a szegmensek elejét nézi meg, azt sem mindegyiknek.
Megnézi 4-7. (tehát a cartridge-ben lévő) szegmenseket, majd a 0-ra végződőeket,
tehát a 10h-t, a 20h-ikat stb. (a szegmensszámok természetesen hexadecimálisan
értendők.) Ha a cartridge-ben egyforma programokat talál, csak az alsót veszi
figyelembe, a többi szegmensnél nem végez ilyen ellenőrzést. Mindebből következik,
hogy hacsak nem alkalmazunk ravasz trükköket, egy szegmensben legfeljebb egy
bővítés lehet, a cartridge-ben összesen tehát legfeljebb négy. Vannak azonban
olyan programok is, amelyek csak két szegmensben férnek el, ilyen az említett
turboASMON, vagy a Hisoft Pascal, ezek alkalmazása tovább csökkenti a lehetséges
bővítések számát.
Tovább bonyolítja a helyzetet, ha valaki gyors memória-tesztet is szeretne,
mondjuk mert nem győzi kivárni, amíg az 1 megabájtos memóriabővítőjét (64 szegmens!)
az EXOS méltóztatik letesztelni. Erre az ad lehetőséget, hogy az EXOS memória-tesztelés
előtt megnézi, hogy a 4. szegmensen szerepel-e "TEST ROM" fejléc. Ha igen,
átadja a vezérlést az ott található programnak, ami a memória vizsgálata mellett,
vagy akár helyett, sok minden egyebet is megtehet. Ez a lehetőség viszont kizárólag
a 4. szegmensen adott. A problémák enyhítésére ügyes emberek a gyorsteszttel
összeházasítottak különböző "rendes" bővítéseket, mint a MON, a GEN,
vagy a legismertebb, a turboASMON 1.5, így kihasználták az egyébként veszendőbe
menő 4. szegmenet is.
Ennyit a szoftver oldaláról, nézzük, mi a helyzet a hardverrel!
A rendelkezésre álló négy szegmens betöltésére különböző megoldások születtek. A hőskorban volt, aki az egyes kétnyelvű gépek kétfoglalatos cartridge-át alakította át pár vágás, és néhány új drót segítségével két 32KB-a EPROM befogadására. Mások háromfoglalatos panelt fejlesztettek ki, amely még éppen elfért a cartridge műanyag dobozában. Ráadásul ezen a panelen egy kapcsoló is volt, amellyel a második és a harmadik 32KB-s bővítés között lehetett választani (mivel egyszerre nem fértek el a rendelkezésre álló memóriahelyen). Az egyfoglalatos cartridge-be is beépítettek két EPROM-ot a panel két oldalára, a szükséges címkiválasztó IC-vel együtt. Talán említenem sem kell, hogy ezekhez a fejlesztésekhez (mint ahogy a többi 99,9%-ához) sem az 'a' Stúidiónak, sem a Centrumnak nem volt semmi köze. Később szerencse a helyzet sokkal egyszerűbb lett: megjelentek a 27512 típusú, 64K kapacitású EPROM-ok 1000 Ft alatti áron, amelyek egymagukban kitöltik a rendelkezésre álló négy szegmensnyi memóriát. Így egyfoglalatos cartridge-ben is - minimális átalakítással - lehetővé vált a teljes tartomány kihasználása. A legnépszerűbb a gyorsteszt + turboASMON + BASIC + magyar bővítés összeállítás, de volt olyan felhasználó is, aki a BASIC-et eltette emlékbe, és helyébe a PASCAL-t égette be. Akinek pedig a cartridge-ben kihasználható négy szegmens nem elég, hozzájuthat olyan EPROM-bővítő kártyához is, amelyik a gép másik oldalához csatlakoztatható, és hat, egyenként akár 64K-s EPROM-ot képes illeszteni... |
2 x 16K |
2 x 16K + 1 x 32K |
2 x 32K |
1 x 64K (módosított) |
2 x 64K (módosított) |
2 x 32 K + 32K SRAM (módosított) |
Enterpress 91/5 - Mészáros Gyula |