Kezdőlap
Vissza
17xx
geoRAM
SummaTech

fizetett hirdetés

 

SummaTech SRD256

 

Ez a készülék remek példája a magyar fejlesztők leleményességének! Hátránya ugyan, hogy csak bájtonként van lehetőség az extra memória elérésére, hiányzik a DMA elvű memória belapozás. Ez viszonylag lassúvá teszi a működését. Ugyanakkor viszont ez az egyetlen általam ismert memóriabővítő, melynek beégetett operációs rendszere támogatja a BASIC működését is. 256 kB kapacitása közepesnek mondható.

 

A készülék programozása

 

Az eredeti dokumentáció alapján:

 

 

MEMÓRIABŐVÍTŐ / RAM DISZK

HASZNÁLATI UTASÍTÁS

 

FONTOS FIGYELMEZTETÉS!

 

A KÉSZÜLÉK CSAK A SZÁMÍTÓGÉP ÉS A PERIFÉRIÁK KIKAPCSOLT ÁLLAPOTÁBAN

CSATLAKOZTATHATÓ A C64-HEZ!

 

A készülék csak a számítógép és a perifériák kikapcsolt állapotában csatlakozható a C64-hez!

 

Ellenkező esetben a C64, illetve a perifériák károsodhatnak. A használati utasítás be nem tartásából keletkező károkért felelősséget nem vállalunk. A készülék szétszedése és illetéktelen javítása a garancia elvesztését jelenti.

1.            Általános ismertetés:

 Az SRD 256 memóriabővítő egy olyan - saját operációs rendszerrel rendelkező - egység, amely a Commodore 64 memóriakapacitását 256 kilóbájttal növeli meg.  Ez a többletmemória BASIC-ből és gépi kódból egyaránt elérhető.

Az SRD 256-nak két üzemmódja van:

a,    bekapcsolt operációs rendszerrel:

        -    BASIC memóriabővítés

        -    RAM diszk feladatok

        -    Gépi kódú felhasználás

b,    kikapcsolt operációs rendszerrel

        -    Gépi kódú ill. egyéb programnyelvből (BASIC: POKE/PEEK, FORTH, stb.) történő felhasználás.

 (A Commodore 128 számítógéphez csatlakoztatva azt automatikusan 64-es üzemmódba állítja és kibővíti 256 kilóbájttal.)

2.            Kompatibilitás

Kikapcsolt operációs rendszer esetén semmilyen programot nem zavar. Bekapcsolt operációs rendszerrel minden olyan V2.0-ás BASIC programmal, illetve gépi kódú programmal kompatibilis, amely nem használja az SDR 256 programterületet (40960-65535/$a000-ffff), nem írja át a diszk tartalomjegyzék olvasása közben a $b7/183 cím tartalmát, illetve nem használ a RAM diszken nem létező utasításokat. Ilyen pl.: a HELP+ (a diszkműveleteket leszámítva), ill. az ASSEMBLER 64. Azok a gépi kódú programok, amelyek csak a BASIC interpreter területét használják átalakíthatóak oly módon, hogy a RAM diszkkel együttműködjenek.

 

A SIMON'S BASIC NEM használható bekapcsolt operációs rendszerrel.

1.2.       Üzembe helyezés

Kapcsolja ki a számítógépet és perifériákat! Helyezze a készüléket a számítógép bővítő csatlakozójába (Ez a C64 hátoldalán, hátulról nézve balra található), úgy hogy a SUMMATECH címke felfelé nézzen. Kapcsolja be a számítógépet és a perifériákat a szokásos sorrendben!

 

A készülék a megszokott képernyőformától eltérően saját operációs rendszerrel jelentkezik be.

1.3.       Karbantartás

A készülék, illetve a C64 aranyozott csatlakozóit havonta egyszer alkoholos vattával meg kell tisztítani. Egyéb karbantartást nem igényel.

2.    Használat BASIC memóriabővítőként.

A készülék BASIC memóriabővítőként való használata semmilyen új ismerete nem igényel. Új BASIC utasítások nincsenek. Az egyetlen különbség a FRE függvény használatában van:

-    PRINT FRE(0)    a teljes szabad memóriaterületet adja meg

-    PRINT FRE(1)    a bővítőn lévő szabad területet adja meg

-    PRINT FRE(-1)   a C64-ben lévő szabad területet adja meg

Első bekapcsolás után, illetve a RAM diszk üzemmódot (ld. 3. pont) nem használva a BASIC programok számára rendelkezésre álló memóriaterület: 301.055 bájt. (294 kilobájt), a következő megosztásban:

-    a C64 memóriájában 38909 bájt (38 kilobájt)

Ezen a területen helyezkedik el a BASIC nyelvű program az egyszerű (nem tömb változók és minden szöveges változó, továbbá azok a tömbváltozók, amelyek a bővítőn már nem fértek el.

-    a memóriabővítőn 262.144 bájt (256 kilobájt)

Itt található a valós és egész típusú tömbváltozók.

RAM diszk terület lefoglalása után (Ld. 3. pont) az SRD 256-on a BASIC céljára használható terület a lefoglalt területtel csökken.

 

A bővítő memóriája a POKE és PEEK utasításokkal is elérhető. Egy adott CIMŰ bájt olvasásához/írásához először a bájt címtét kell beállítani, pl.:

 

10 CIM=70000

1000 BOVIT=57088

1010 C2=INT(CIM/65536):C3=CIM-65536*C2

1020 Cl=INT(C3/256):C0=INT(C3-256*C1)

1020 POKE BOVIT,C0:POKE BOVIT+1,Cl:POKEBOVIT+2,C2


Ezt követően a bájt írható/olvasható

 

1040 POKE BOVIT+3,BAJT ; ill.

1040 A=PEEK(BOVIT+3)

 

A bájt írása/olvasása után a CIM értéke automatikusan eggyel megnő, ezért:

-    a soron következő bájt írásához/olvasásához nem kell újra a címet módosítani

-    ugyanahhoz a bájthoz csak ismételt CIM állítással férhetünk hozzá

Az érvényes CIM mindenkor olvasható

 

1000 ClM=65536+(PEEK(BOVIT+2)AND 3)+256*PEEK(BOVIT+1)+PEEK(BOVIT)

 

(A maximális CIM 2 bájt + 2 bit hosszú, ezért BOVIT+2-nek csak az alsó 2 bitje értékes. Amennyiben a 256 klóbájt felső határát elértük a CIM legnagyobb helyiértékű bitjeihez (címe: BOVIT+2) 128 ($80) adódik hozzá és az olvasás a bővítő 0 címén folytatódik.)

 

A bővítő tartalmához kikapcsolt operációs rendszernél (SYS49152) is hozzáférhetünk. Ekkor azonban minden POKE BOV+3, bájt utasítás a számláló értékét kettővel növeli meg!

3.    RAM diszk használat

 

3.1.       A RAM diszk

A RAM diszk egy olyan eszköz, amely úgy használható, mint egy valódi mágneslemezes tároló: pl.: programokat és adatokat tárolhatunk rajta.

Előnyös tulajdonsága, hogy adatátviteli sebessége a hajlékony mágneslemezes tárolóknál nagyobb, továbbá, hogy mechanikai (tehát kopó) alkatrészeket nem tartalmaz. Hátránya, hogy a számítógép kikapcsolása után az adatokat tovább nem tárolja.

3.2.       Az SRD 256 mint RAM diszk

Az SRD 256 'RDOS' operációs rendszere a 1541-es típusú mágneslemezes tárolóval kompatibilis. Ez azt jelenti, hogy a vele való kommunikáció a 1541-el megegyezően OPEN, PRINT#, GET#', INPUT# utasításokkal történik.

A RAM diszk használat előnyei az SRD 256 esetében:

-    1541 egység nélkül is használható (pl. DATASET-tel)

-    SAVE kb. 25-30-szor gyorsabb, mint a 1541-el

-    a LOAD kb. 60-szor gyorsabb, mint a 1541-el

-    egy vagy több diszk egységgel is használható

Az első bekapcsolás, illetve RESET utát a RAM diszk egységszáma: 9. Ez tetszés szerint módosítható:

   POKE 49177, (egységszám) [49177=$c019]

A RAM disk terület 32 sávra (1-32) osztódik, minden sávon 32 (0-31) szektorral. A tartalomjegyzék a 18. sávot foglalja el, benne 247 file adatai tárolhatóak.

3.3.       RAM diszk utasítások

Tekintettel arra, hogy a RAM diszk utasítások mind formailag, mind végrehajtásukban (néhány minimális különbségtől eltekintve) megegyeznek a VIC 1541 lemezegység utasításaival, az alábbi felsorolásban csak az esetleges különbségeket ismertetjük részletesen. A diszk használatában kevéssé, illetve egyáltalán nem járatos felhasználok a Commodore 64-el foglalkozó magyar szakirodalomban bőséges további részleteket találnak.

 

A következő jelöléseket fogjuk használni:

-    lf            logikai file szám, értéke 1 és 127 közé eshet

-    n             egység szám: 0 - 4

-    sa            csatorna: 0 - 255

-    tr            sáv száma: 1 - 32

-    sc            szektor száma: 0 - 31

-    p             0 - 255

-    típus        P(rg)/S(eq)/U(sr)

-    mód         R(ead)/W(rite)/A(ppend)

3.3.1.        RAM diszk terület lefoglalása

OPEN lf,9,15,”N:n”

 

A RAM diszk terület 64 kilobájtos lépésekben foglalható le, ezért n értéke 0 és 4 közé eshet. Az n=0 érték a RAM diszk kikapcsolásának, azaz a RAM disk terület felszabadításának felel meg. Az n csak egy számjegy lehet és közvetlenül a ’:’ után kell állnia. A lefoglalt RAM diszk terület hidegindítás (SYS 64738) és RESET után is lefoglalt marad, amit a bejelentkezési szöveg is tükröz.

A lefoglalt területet a BASIC interpreter nem használja változók tárolására.

 

A szabad szektorok (blokkok) száma a következőképpen alakul

n=        1          224 blokk

2         480 blokk

3         736 blokk

4         992 blokk

3.3.2.        Programtárolás, betöltés, ellenőrzés

SAVE ”név”,9                programtárolás

LOAD ”név”,9                BASIC program töltése

LOAD ”név”,9,1             gépi kód töltése (abszolút töltés)

SAVE ”név,TÍPUS”,9       adott típusú programfile tárolása (a típusa Prg/Seq/Usr lehet)

LOAD ”név,TÍPUS”,9       adott típusú program töltése

LOAD ”$”,9                   a katalógus betöltése

LOAD ”$:név”,9             az adott nevű programok katalógusának töltése

VERIFY ”név”,9              program ellenőrzés

VERIFY ”név”,9,1           gépi kód ellenőrzése

 

Töltésnél a ”NÉV” a 1541-nél megszokott módon tartalmazhatja a '*' és '?' ún. Jokereket. A RAM diszken találhatód első olyan program kerü1 betöltésre, amelynek neve megegyezik ”NÉV”-vel. A "?' jelentése: az adott helyen bármi állhat. A “*” azt jelenti, hogy a név ellenőrzését be lehet fejezni. Ha pl. a RAM diszk tartalmazza az alábbi programokat:

ALMA

ALSÓ

akkor a LOAD”A*”,9 hatására az ALMA nevű töltődik be, a LOAD”??S?",9 hatására pedig az ALSO nevű. Amennyiben az ALMA a RAM diszk első programja, úgy a LOAD “*”,9 utasítással is betölthető.

 

Amennyiben az adott nevű file nem létezik, hibaüzenetet kapunk.

 

Tárolásnál a név nem tartalmazhatja a ?/*/$ karaktereket. Amennyiben az adott programfile már létezik, „? FILE DATA ERROR” hibaüzenetet kapunk. A file felülírása:

SAVE ”@:név”,9

3.3.3.        Adatfile-ok használata

A file megnyitása : OPEN lf,9,sa, ”név,típus,mód”

 

Egyidejűleg max. 5 file lehet nyitva. Amennyiben egy már létező csatornaszámmal nyitunk meg egy új file-t, úgy az előző lezáródik.

 

Az írásra (Write) megnyitott file-t az operációs rendszer (RDOS) feljegyzi a lemez tartalomjegyzékébe és a file-hoz rendelt mutatót az első/írandó bájtra állítja.

Az így megnyitott file-ba a

PRINT#lf,(adatsor)

illetve a CMD lf utasítás kiadása után a

PRINT (adatsor)

 utasítással írhatunk ki adatokat. A kiírás befejezése után az adatfile-t a

CLOSE lf

utasítással le kell zárni. A lezáratlan file-okat a betöltött tartalomjegyzékben "*” jelöli. A 15. csatorna lezárására az összes nyitott file lezáródik.

Az olvasásra (Read) megnyitott file-okból a

GET# lf és

INPUT# lf

utasításokkal olvashatunk egy karaktert, illetve változókat. Pl. :

GET#2,A$

INPUT#1,A,B,C$

 

Az olvasott file végének elérését az ST rendszerváltozó jelzi: ha ST=64, akkor elértük a file végét.

A GET# utasítás ettől kezdve az utolsó bájtot olvassa újra, míg az INPUT# utasítás, (akárcsak a 1541 esetében) végtelen ciklusba kerül, ahonnan a RUN/STOP és RESTORE gombok egyidejű megnyomásával hozható ki. Az INPUT# és GET# utasításokat csak programból adhatjuk ki.

 

Az Append mód választásával lehetséges egy már lezárt file-t bővítésre megnyitni, Az így megnyitott file-ok tovább írhatóak.

 

Az RDOS számára az USR file-ok semmiben nem különböznek a SEQ fileoktól.

Egy már létező file felülírásához az

OPEN lf,9,sa,”@:név,típus,W”

uttasítást kell kiadni.

 

A 1541-től eltérően a le nem zárt file-ok is megnyithatóak olvasásra, ezért az M módra nincs szükség.

 

3.3.4.        A tartalomjegyzék olvasása

Egy speciális (csak olvasható) file a RAM diszk tartalomjegyzék (directory).

A directory file megnyitása :

OPEN lf,9,sa,”$,típus,R”

OPEN lf,9,sa,”$név,típus,R”

vagy egyszerűen

OPEN lf,9,sa,”$”

 

Amennyiben sa=0, úgy a LOAD"$",9-el kapható file-t olvashatjuk. Ha sa<>0, akkor a 18. sávot olvassuk végig. Egyidejűleg csak 1 directory file lehet nyitva.

3.3.5.        File törlés, átnevezés, inicializálás

Adott nevű file törlése:

            PRINT#15,”S:név”

Ha a NÉV joker karaktert (‘*’,’?’) tartalmaz az összes adott nevű file törlődik.

 

File átnevezése:

PRINT#15,”R:újnév=réginév”

PRINT#15,”R:újnév,típus=réginév”

PRINT#15,”R:újnév,típus=réginév,típus”

PRINT#15,”R:újnév=réginév,típus”

 

Típusmegadás nélkül az RDOS PRG típust tételez fel.

 

A RAM diszk inicializálása:

PRINT#15,”I”

3.3.6.        Közvetlen lemezhozzáférés

A RAM diszk blokkjaihoz közvetlenül is hozzáférhetünk a BLOCK-READ, BLOCK-WRITE, BUFFER-POINTER, BLOCK-FREE, BLOCK-ALLOCATE utasításokkal. Ezeket az utasításokat a parancscsatornán keresztül kell kiadnunk (sa=15), ezért a parancscsatornát is meg kell nyissuk, továbbá egy másik csatornára is szükség van, azon keresztül végezzük az írást/olvasást. Pl:

OPEN 15,9,15

OPEN 2,9,2,”#”

Itt a “#” jelöli a közvetlen csatornát.

 

Adott sáv adott szektorának olvasása:

PRINT#15,”B-R: 2 0 tr sc”

GET#2,A$

írása:

PRINT#15,”B-W: 2 0 tr sc”

PRINT#2,..

 

Ha az olvasást/írást nem a szektor elejétől kívánjuk végezni, úgy a pozícionáláshoz a

PRINT#15,”B-P 2 p”

utasítást kell kiadnunk.

 

Az RDOS gondoskodik a szükséges szektorok lefoglalásáról, illetve felszabadításáról, de szükség szerint ezt mi is elvégezhetjük, így pl. saját file szervezést valósíthatunk meg (pótolhatjuk pl. a hiányzó RELATIV file-okat). Erre a célra szolgálnak a BLOCK-ALLOCATE és BLOCK-FREE utasítások:

PRINT#15, “B-A tr sc”

lefoglalja,

PRINT#15,”B-F tr sc”

felszabadítja a megadott sáv adott szektorát.

 

MEGJEGYZÉS

1. A fenti utasítások csak a fenti rövid alakban használhatóak (Pl. B-F helyett nem használható a BLOCK-FREE . )

2. Az egyes paraméterek természetesen változók, illetve kifejezések is lehetnek pl.:

100 SAV=2:SZEKTOR=4:LF=3

200 PRINT#15,”B-R”;LF;0;SAV;SZEKTOR

is megengedett. Az egyes paraméterek közötti elválasztójel betűköz, vessző is lehet. A “:“ használata nem kötelező.

3. Szemben a 1541-es egységgel hibaüzenet nem generálódik egy már lefoglalt blokk újrafoglalásakor!

 

3.3.7.        A hibacsatorna olvasása

A RAM diszk állapotát a parancs/hibacsatorna olvasásával követhetjük nyomon, éppúgy, mint a 1541 esetében:

 

100 OPEN 15,9,15

110 INPUT#15,EN$,EM$,ET$,ES$

120 PRINT EN$”, “EM$“, “ET$“, “ES$

 

Az egyes paraméterek jelentése :

EN$    a hiba száma, két jegy

EM$    üzenet

ET$    sáv szám (ha van, egyébként: 00)

         file törlés után a törölt file-ok darabszáma

ES$    szektorszám (vagy 00)

 

A lehetséges üzenetek és okaik:

 

00,OK,OO,00                                      minden rendben

01,FILES SCRATCHED, XX,00                 XX a törölt darabszám

02,NOT INPUT FILE,00,00                     írára megnyitott file-ból olvasni akartunk

03,NOT OUTPUT FILE,00,00                  olvasásra megnyitott file-ba írni akartunk

30,SYNTAX ERROR,00,00                      a beírt utasítás hibás

61,FILE NOT OPEN,00,00                      a file nincs megnyitva

62,FILE NOT FOUND,00,00                    a keresett file nem létezik

63,FILE EXISTS,00,00                          az adott nevű file már van

66,ILLEGAL TRACK OR SECTOR,XX,YY    nem létező sávra/szektorra hivatkoztunk           

            (XX: SÁV, YY: SZEKTOR)

            (LOAD folyamán ilyen hibajelzést nem kapunk)

70,N0 CHANNEL,00,00                          több mint 5 file-t akartunk egyszerre megnyitni

72,DISC FULL,00,00                             a RAM diszk terület, illetve a tartalomjegyzék megtelt

3.3.8.        BASIC hibaüzenetek

A BASIC hibaüzenetek a szokásosak, egy kivétellel:

? FILE DATA ERROR: SAVE utasításban már foglalt nevet adtunk meg a @ opció nélkül.

3.3.9.        Az operációs rendszer kikapcsolása

Hidegindítással egybekötve: SYS 49152

A BASIC program elvesztése nélkül: POKE 1,55

 

Az operációs rendszer visszakapcsolása:

-    Ha még nem írtuk felül: POKE 1,53

-    Ha már felülírtuk, úgy a készülék hátoldalán található RESET kapcsoló benyomásával.

 

A RAM diszk tartalma (ha nem írtuk felül) az operációs rendszer ki/be kapcsolására nem változik.

Reset után a 32768 - 40959 ($8000 – 9fff) terület törlődik. Az itt elhelyezkedő programokat célszerű a RAM diszken tárolni.

4.    Használat gépi kódból

 

4.1.       A hozzáférés elve, használat

Az SRD 256 teljes területét lapozás nélkül véletlen módon (Random Access) érhetjük el a 2. I/0 területen a $df0O - $df03 (57688-57091) címeken elhelyezkedő 4 bájton keresztül. Az első három bájt (két bájt és 2 bit) írásával adjuk meg a címet (a helyiértékek: legkisebb: $df00, középső: $df01, legnagyobb: $df02), míg a negyedik bájt ($df03) egy ablakot jelent, amelyen keresztül a bővítőre látunk. Az ablak olvasása, ill. írása után a cím automatikusan eggyel, ill. kettővel megnő, így az egymás utáni bájtok olvasásához csak a legelső bájt címét kell beállítani. A címet eggyel növeli az abszolút címzéssel való hozzáférés, míg az indexelt címzésű írás utasítások a címet kettővel növelik meg.

 

Kapcsolt operációs rendszerrel a RAM diszk a KERNAL rutinokon keresztül érhető el (ld. 4.2).

4.2.       Memóriatérkép és hasznos rutinok

Memória kiosztás (csak az SRD 256 által használt területek):

-    40960-49151 ($a000-$bfff)     RAM-ba másolt és átírt BASIC interpreter

-    49152-57344 ($c000-$dfff)     RDOS

-    57348-65535 ($e000-$ffff)      RAM-ba másolt és átírt KERNAL

 

Fontos címek:

$df00                 bővítő cím low

$df01                 bővítő cím medium

$df02                 bővítő cím high

$df03                 ablak a bővítőre

 

$c019:               RAM diszk egységszám

$c027-$c050       RAM diszk puffer

$b7                   szöveg hossza a pufferbem

$c076                aktuáls sáv,

$c077                szektor

$c08b-$c08f        file sa táblázat

$c090-$c094       file sáv

$c095-$c099       file szektor

$c09a-$c09e       file pointer

 

Rutincímek:

 

A RAM diszk a megfelelő KERNAL rutinokon keresztül érhető el. A soros IEC busz kezelő rutinok és a $ff.. ugrási címek egyaránt használhatóak, ezért itt csak a belső RAM diszk kezelésében segítő rutinokat soroljuk fel.

 

CIMSZ:       $c5bc   a SÁV és SZEKTOR értékéből a RAM diszk cím kiszámítása és beállítása $df00-n

TSTDSC:     $c9f4    RAM diszk teszt: ha van Z=1

UPPON:      $c275   ugrás a $d000 feletti tartományba

Használata:

jsr $c275

.word cím

.... (további utasítás)

A hívott rutin egy JMP $c290 utasítással tér vissza a .word utánra. A regiszterek és a verem állapota nem változik.

OND:         $cb52   a $df00 feletti tartomány bekapcsolása

OFFD:        $cb47   az I/O visszakapcsolása

WRITBY:    $ca6d   bájt írása megnyitott file-ba

READBY:    $cs73   bájt olvasása megnyitott file-ból

OPEN:        $ca1f   OPEN file

CLOSE:      $c989   CLOSE file (sa=$b9)

 

 

This site is a member of WebRing.
To browse visit Here.

The C64 Banner Exchange
The C64 Banner Exchange