2024. április 16., kedd

Gyorskeresés

C64 és a lemez kezelés

Írta: | Kulcsszavak: VICE . retro . C64 . commodore . floppy . 1541-II . disk . lemez

[ ÚJ BEJEGYZÉS ]

Egy kis hiánypótló írás, jegyzet, feljegyzés... elsősorban magamnak. Nekem már csak a korszak végén lett egy 1541-II meghajtóm és az egyszerű játék betöltésén kívül máshoz nem is értettem. Másoláshoz már a középiskolás szomszédokat kellett megkérni. Mindig is furdalt a kíváncsiság, hogy hogyan is kellett annó a lemezzel dolgozni, úgyhogy szabadidőmben elkezdtem a C64-es könyveket bújni és most jutottam el a lemez kezeléshez. (Hardware egyelőre ott pihen a garázsban ismeretlen állapotban)

170kB adat tárolására képes

#1 Lemez formázása
OPEN 15,8,15

Az OPEN parancs azt jelenti, hogy meg akarunk nyitni, használatba akarunk venni valamilyen külső eszközt, a mi esetünkben a lemezegységet.
Ezekkel a külső eszközökkel a gép 16 (0-tól 15-ig) csatornán tud kapcsolatot tartani.
A 15-ös csatornán küldi a C64 a parancsokat a lemezmeghajtónak. Egy időben egyébként négy lemezegység kapcsolható a géphez. Ezek is számozva vannak, 8-tól 11-ig. Gyárilag a 8-as egységszámra vannak beállítva, amit csak akkor szokás átállítani, ha több lemezegységet használunk.
Ugyanaz a program persze sokféle eszközt használhat egyszerre. A programon belül ezeket is meg kell számoznunk, de az ehhez szükséges számot magunk választjuk meg 0 és 255 között tetszőlegesen. Az OPEN után ezt a számot kell elsőként megadnunk, utána a lemezegység számát, majd a csatornáét.

PRINT# 15,"NEW:PROBA,PR"

A PRINT# után az OPEN parancsban elsőként írt számot kell megadnunk. Ez a példában 15.
A 15-ös csatorna azonban speciális jelentésű, itt a lemezegység nem adatot, hanem parancsot vár. A
NEW:PROBA, PR jelsorozatot tehát parancsként értelmezi. A parancs kiadása után képernyőnkön megjelenik a READY, hiszen a központi egység feladata csak annyi, hogy a parancsot a megfelelő csatornán elküldje, és ezt egy pillanat alatt meg is teszi. A lemezegység viszont még kb. 2 percig folyamatosan működik : mikroprocesszora most hajtatja végre lépésről lépésre a teljes formázási folyamatot.
Ennek során a berendezés:
- végigellenőrzi a lemezt, és meggyőződik a hibátlanságáról,
- az egészet végigtörli,
- létrehoz rajta egy tartalomjegyzéket, amely egyelőre üres, de ebben később a lemezen levő programok, adatállományok legfontosabb adatait tárolja,
- létrehoz egy lemeztérképet, amelyen számon tartja, hogy hol vannak a lemezen szabad és hol vannak foglalt területek; egyelőre persze a tartalomjegyzék és a térkép területének kivételével minden terület szabad.
A lemez 256 bájtos egységenként, blokkonként formázható. Mire a formázás befejeződik, 664 ilyen blokkunk lesz; ez megadja a lemez tárolókapacitását is.
A NEW: után megadott nevet (a példában azt, hogy PROBA) formázáskor a gép felviszi a tartalomjegyzék elejére. Ez lesz a lemez neve. A hossza legfeljebb 16 jel lehetne, de ezen belül bármi, akár 16 szóköz is.
A vessző után megadott nevet (a mi példánkban azt, hogy PR) a gép minden egyes blokkba felviszi. (A 256 bájtba ez nem számít bele.) Ez lesz a lemezazonosító. Pontosan két jelből kell állnia, se több, se kevesebb nem lehet . Ha munka közben lemezt cserélünk, a gép ezt a lemezazonosító megváltozásából veszi észre, a lemez bármelyik részén is tart. Ezért érdemes ügyelnünk arra, hogy ne legyen két egyforma azonosítójú lemezünk.

CLOSE 15 után azt a számot kell megadnunk, amelyik az OPEN után az első volt (és amelyik a PRINT#-ben is szerepelt). Ezzel zárjuk le az OPEN-nel lefoglalt csatornát. Ez a formázás - és minden egyéb csatornahasználat - utolsó művelete .

#2 A LEMEZTARTALOM LEKÉRDEZÉSE
A frissen formázott lemez tartalmát megkérdezhetjük. Ez egyben jó próba is arra, hogy a formázás valóban
kifogástalanul sikerült-e.

LOAD "$",8

A LOAD kulcsszó azt jelenti, hogy valamilyen külső eszközről valamit a tárba akarunk tölteni. Utána idézőjelben állhat az a név, amellyel a betölteni valót azonosítjuk. Neve a tartalomjegyzéknek is van: ez a
név a $. A vessző utáni nyolcas a 8-as számú lemezegységet jelenti. A parancs kiadása után a lemezegységen kigyullad a működést jelző lámpa, a képernyőn pedig sorban a következő feliratok jelennek meg:

SEARCHING FOR $
LOADING
READY

LIST parancs hatására a képernyőn megjelenik a tartalomjegyzék, amely a mi frissen formázott lemezünk esetében a következőképpen fest :

0 "PROBA " PR 2A
664 BLOCKS FREE

#3 LEMEZRE ÍRÁS
Program mentése lemezre: SAVE "programnév",8
Program visszaellenőrzése :VERIFY "programnév",8
Program Betöltése: LOAD "programnév",8
Program felülírása: SAVE "@:programnév",8
Az alábbi képen egy három soros BASIC programot (10, 20, 40-nel kezdődő sorok) mentek ki a lemezre BASIC1 néven majd a verify parancssal vissza is ellenőrzöm az írást.

A LOAD paranccsal betöltöm a lemez katalógusát amit a LIST parancs segítségével kiiratok a kijelzőre. Majd a LOAD "BASIC1" segítségével betöltöm a memóriába, majd a RUN paranccsal elindítom.

Miután belemódosítottam a programba szeretném, hogy ha a meglévőt felülírná. Ha a SAVE parancsot @ nélkül használjuk akkor a lemez meghajtó kiakad. A promptot ugyan visszakapjuk, de folyamatosan villog, ami hibára utal.

#4 LEMEZ TARTALMÁNAK MÓDOSÍTÁSA
Program törlése, hasonló a lemez formázáshoz
OPEN 15,8,15
PRINT#15,"SCRATCH:BASIC1"
CLOSE 15

Egyszerre akár több program is törölhető. A felsorolt programneveket vesszővel kell elválasztani.
PRINT#15,"SCRATCH:PROGRAM1,PROGRAM2"

Teljes lemez törlése
OPEN 15,8,15
PRINT#15,"VALIDATE"
CLOSE 15

Átnevezés
OPEN 15,8,15
PRINT#15,"RENAME:UJNEV=PROGRAMNEV"
CLOSE 15

Másolás (CSAK LEMEZEN BELÜL!)
OPEN 15,8,15
PRINT#15,"COPY:PROGRAMNEV=UJNEV"
CLOSE 15

Leginkább felhasznált irodalom:
Bodor Tibor, Gerő Péter: A commodore 64 programozásának gyakorlata 1.
1541-II disk drive manual user's guide
A témához kapcsolódó blog bejegyzésem: VICE, Commodore emulátor beüzemelése Linuxon

Hozzászólások

(#1) CaNNa3IS


CaNNa3IS
senior tag

Végre valami érdekes írás a sok szar között.

Stay up Stay humble Ride hard Get stoked

(#2) sonar válasza CaNNa3IS (#1) üzenetére


sonar
addikt

Köszönöm :R

A tudást mástól kapjuk, a siker a mi tehetségünk - Remember: Your life – Your choices!

(#3) hege8888


hege8888
aktív tag

Jó kis írás, elmenteni való.

Azt nem tudja valaki, lemagyarázni, hogy hogy lehet a lemezjegyzékbe azokat a 0 bájtos DEL és PRG bejegyzéseket megcsinálni, amik a crakkerek logóját, stb készítették?

https://logout.hu/cikk/retro_kk/teljes.html

(#4) sonar válasza hege8888 (#3) üzenetére


sonar
addikt

Tudsz estleg valami mintát mutatni, hogy pontosan mire is gondolsz?

A tudást mástól kapjuk, a siker a mi tehetségünk - Remember: Your life – Your choices!

(#5) ergoGnomik válasza hege8888 (#3) üzenetére


ergoGnomik
tag

Vannak direkt erre a célra lemezszerkesztő programok. Most így hirtelen a DirMaster ugrik be, mint program név. De kellő kitartással egy sima szektor szerkesztővel is meg lehet csinálni, ha értesz hozzá.

(#6) ergoGnomik


ergoGnomik
tag

Ja, és nem igaz az, hogy maximum négy meghajtót csatlakoztathatsz. Az egység szám az 1-127 lehet emlékeim szerint. Bár nyilván korlátozza a lehetőségeket a láncba kapcsolt egységek közötti kábelek hossza a csillapítás és az esetleg összegyűjtött zavarok miatt.

(#7) Oldman2 válasza sonar (#4) üzenetére


Oldman2
veterán

A téma ugyan nem ez, de a videó elején láthatóak ilyen 0 byte-os bejegyzések.

(#8) sonar válasza Oldman2 (#7) üzenetére


sonar
addikt

Ebből én teljesen kimaradtam. Alsós ált iskolás voltam mikor commodore-oztam, aztán 7-8-ban már PC-vel ismerkedtem. De érdekesnek tűnik

A tudást mástól kapjuk, a siker a mi tehetségünk - Remember: Your life – Your choices!

(#9) sonar válasza Oldman2 (#7) üzenetére


sonar
addikt

Megnéztem a videót. Nem mondom, hogy elsőre sokat felfogtam belőle :B
Még párszor meg kell nézni, hogy teljesen megértsem.

A tudást mástól kapjuk, a siker a mi tehetségünk - Remember: Your life – Your choices!

(#10) Oldman2 válasza sonar (#9) üzenetére


Oldman2
veterán

Nem azért ezt küldtem, hogy ebből meg fogod érteni, hanem hogy legyen példa a 0 byte-os bejegyzésekre...

További hozzászólások megtekintése...
Copyright © 2000-2024 PROHARDVER Informatikai Kft.