Ve čtvrtém díle si přiblížíme popis funkce a obecná pravidla modulu cart, které nám při konstrukci můžou být docela užitečné.
Pokračování s 3.dílu..Nyní zapojení modulů kartritge...
Kartritge popis funkce
Počítače Atari na rozdíl od jiných osmibitových počítačů jsou vybaveny
vstupně-výstupním rozhraním, přes které může počítač komunikovat s různými
moduly. Jedná se o zásuvku pro moduly cartritge. Zásuvka cart je určena pro rychlé
zadávání programů do operační paměti počítače. V případě jejího použití
nahrazuje funkci nahrávání dat z magnetofonu nebo disketové mechaniky. Cartritge
obsahují pevné paměti typu ROM.
Modul cartritge obsahuje většinou dvě paměti
ROM, které mají společnou 13-ti bitovou adresovou a 8 bitovou datovou sběrnici. Vyšší
adresový prostor (A602obr. v dalším díle) je ovládán signálem S5 a nižší
adresovací prostor signálem S4.
Tento výběr provádí obvod MMU v počítači. Obvod MMU
provádí organizaci paměťového prostoru celého počítače s danou paritou, vždy po
zapnutí počítače (zapnutí, reset) . Pracuje-li počítač s moduly cart jsou ROM paměti
modulu využívány jako stínové RAM paměti. Spodní ROM cart (A601obr.v dalším díle)
zabírá paměťový prostor 8000 až 9FFF, horní ROM (A602obr.v dalším díle) A000 až
BFFF. Přítomnost modulu je testována jednotkou MMU logickou hodnotou na vstupech RD5 a
RD4.
Modul cart má dvě možnosti použití :
a) Jako externí paměťový modul (stínová RAM) nebo
b) Jako externí ROM disk.
Operační systém (dále OS) obsahuje celou řadu podprogramů určenou pro identifikaci
cart (kontrola zasunutí, inicializace apod.). Přítomnost cart je indikována v registru
D013 hodnotou 1. Využívá se port B obvodu PIA, který je u novějších verzí
počítačů Atari (130,800) použit jako jednotka řízení paměti.
Nenulová hodnota
registru D013 je hardwarově nastavena v okamžiku,kdy se stane aktivním signál RD4 nebo
RD5. Při resetu je přepsána hodnota D013 na 3FA, která se později používá ke
kontrole přítomnosti cart. Dále po resetu OS testuje adresu BFFC, která musí mít
hodnotu 0. Je-li to v pořádku řídí se další činnost obsahem adresy BFFD.
Obsah adresy BFFD
---------------------------------
BFFD | * | 0 | 0 | 0 | 0 | * | 0 | 0 |
---------------------------------
bit č. 7 6 5 4 3 2 1 0
|
Je-li bit č.7 nastaven (roven 1) předává jí okamžitě řízení přes adresu
BFFE. Je-li bit č.7 roven 0, provede OS běžnou inicializační rutinu jako při
resetu, jejíž adresa je v cart na adrese BFFE. Po navrátu z této rutiny je automaticky
startován program podle hodnoty bitu č.2 adresy BFFD. Je-li nastaven, pak je startovací
adresa na BFFA. Při každém přerušení porovnává OS obsah adresy 3FA s hodnotou
registru D013 a při jejich nesouhlasu přejde do rutiny WAITFRST (čekání na
reset).
Cartritge s běžným programem musí mít v posledních 6-ti bitech tyto údaje:
BFAA - Dolní byte startovací adresy
BFFB - Horní byte startovací adresy
BFFC - 0 (příznak cart)
BFFD - 4 (inic.rutina a start přes BFFA)
BFFE - Dolní byte inicializační rutiny
BFFF - Horní byte inicializační rutiny
|
Nevýhodou ale je, že je automaticky zablokována paměť RAM v rozsahu A000 až
BFFF(8kB). To platí v případě aktivního signálu RD5. Jestli bude aktivní i RD4
příjdeme o dalších 8kB (8000 až 9FFF). Navíc program musí být tvořen tak, aby
pracoval na uvedených fyzických adresách. Protože automatická transformace již
přeložených programů není možná, není tento způsob použití nejlepší. Z tohoto
důvodu byl vytvořen následující mechanismus.
Struktůra obsahu paměti v cart
----------------------------------------
| vlastní program | INIT2 | INIT1 | HL |
----------------------------------------
|
HL - hlavička
INIT1 - inicializační rutina v ROM
INIT2 - inicializační rutina v RAM
INIT1 - jeho adresa je na BFFE a pracuje přímo v cart po resetu. Jeho úkolem je
přenést vlastní program včetně INIT2 po resetu z cart do RAM na skutečnou adresu pro
kterou byl program vytvořen.
INIT2 - Je spuštěn OS po návratu s INIT 1. Jeho adresa je BFFA a musí být při
spuštění umístěn mimo cart. Jeho hlavním úkolem je řízení odpojení cart. Po
skončení činnosti INIT 2 odstartuje vlastní program.
Připojení a odpojení cart je umožněno spínačem na cart, který v sepnutém stavu
připojí nap.napětí +5V na paměti ROM a současně aktivuje signál RD5. Držíme dále
spínač a stiskneme krátce reset , tím se odstartuje INIT 1 a po jeho skončení INIT
2. Tato rutina v sobě obsahuje tuto sekvenci:
SEI Zákaz přerušení
Test LDA D013 Odpojena cart?
BNE Test ne, testuj znova
STA 3FA ano, poznač do systému
CLI obnov přerušení
|
V okamžiku, kdy pustíme tlačítko, odpojí se napájení cart, signál RD5 nebude
aktivní a v D013 se nastaví hodnota na 0. Ten se přepíše ve stínovém registru 3FA a
může se obnovit přerušení. Tím se vlastně oklame systém, že žádnou cart vloženou
neměl a program byl zaveden z běžného média.
Schéma a popis zásuvky pro cartridge
Zásuvka kartitge pohled od klávesnice
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1
-----------------------------------------------
| * * * * * * * * * * * * * * * |
| * * * * * * * * * * * * * * * |
-----------------------------------------------
S R P N M L K J H F E D C B A
1 S4 A RD4
2 A3 B GND
3 A2 C A4
4 A1 D A5
5 A0 E A6
6 D4 F A7
7 D5 H A8
8 D2 J A9
9 D1 K A12
10 D0 L D3
11 D6 M D7
12 S5 N All
13 +5V P A10
14 RD5 R R/W
15 CCTL S B02
A0 až A12 - Adresy paměti
D0 až D7 - Data
S4 - Výběr spodního adres.prostoru (8000-9FFF)
S5 - Výběr horního adres.prostoru (A000-BFFF)
RD4 - Příznak osazení spodního adres.prostoru
RD5 - Příznak osazení horního adres.prostoru
R/W - Řízení čtení/zápis (v orig.nepoužito)
B02 - Hodiny procesoru (nepoužito)
CCTL - Výběr paměťového prostoru (D500-D5FF)
|
V příštím pokračování si ukážeme konkrétní zapojení cartritge...