Bevezetés
A Speccy-Dos emulátor egy
olyan programgyűjtemény, ami képes kezelni a Speccy-Dos
fájlrendszert és importálni tudja a PC-s környezetbe.
Klasszikus értelemben nem nevezhető emulátornak, hisz nem
futtató környezetet biztosít, csak a lemezkezelő funkciókat
valósítja meg. Mégis több, mint egy egyszerű konverter
program. Az 1.0 verzió célja az adatmentés és
az olvasófunkciók megvalósítása. A következő
verzió már képes lesz virtuális lemezek kiírására
fizikai diszkre, és tervben van egy Spectrum emulátorba való beintegrálás is.
Az emulátor elkészítését
már 1999 óta tervezem, de valahogy nem került rá
sor egészen mostanáig. Hogy mégis belevágtam, nagyban
köszönhető az egyre aktívabb magyar Spectrumos élet
oszlopos tagjainak, akik részben az emulátor iránti
érdeklődésükkel, részben a Spectrum iránti
töretlen lelkesedésük révén biztatást
adtak a program megírásához. Egy-két nevet
ki is ragadnék a teljesség igénye nélkül:
Náray Józsi (Tőle vettem a képen látható Speccy-Dos interfészt,
ami a későbbi fejlesztésekhez elengedhetetlen lesz), sAGA
(Tőle kaptam meg a teljes Speccy-Dos dokumentációt, amely
nélkül elég nehezen készült volna el az emulátor),
Kardos Balázs (SSW), Tarján Richárd (mostanában
Ricsibubus), Nyitrai Laci Bá (A játékgyáros),
PGyuri.
Ajánlom még ezt az emulátort a régi WSS tagoknak:
Horváth László (Leslie), Asztalos András (Andrew),
Farkas Krisztián (Roger) és minden aktív Spectrumos
figyelmébe.
Az emulátor rendszerigénye és telepítése
Az emulátor jelen pillanatban 16-bites DOS
módban képes futni akár Windows operációs
rendszer alól is MS-DOS ablakban. A programok parancssorból
futtathatók különböző paraméterezéssel.
Az emulátor egyidőben max. 128 Kb ram memóriát foglal
el és ugyanennyi lemezterület elég neki. Ez utóbbiba
nem számítanak bele a naplófájlok, diskimage-k és
a tap állományok.
Az emulátort egy ZIP állomány
tartalmazza. Ennek pontos tartalma a következő:
- list.exe
- load.exe
- mount.exe
- src könyvtár a forrásfájloknak
- load.c
- list.c
- mount.c
- fdc_api.h, fdc_api.c
- sdd_api.h, sdd_api.c
- tap_api.h, tap_api.c
Az említett fájlokat tömörítsük
ki a merevlemezre egy mappába. Pl.: c:\sdemu
Ezután módosítsuk a PATH környezeti
változót az autoexec.bat fájlban.
írjuk
be új sorba:
A doskey egy nagyon hasznos program. Megjegyzi a
parancssori beviteleket, így ha elgépelünk valamit,
akkor nem kell újra beírni a teljes parancsot, hanem a fel-le
nyilakkal kiválaszthatjuk a korábbi bevitelek közül.
Ezután a program a fájlrendszer bármely
pontjáról hívható lesz.
Az emulátor funkcionális részei
- Általános áttekintés
Az emulátor több különálló
kis programra tagolódik, melyek egy-egy parancsot hajtanak végre.
Ezen parancsok használata egyszerű annak ellenére, hogy
parancssorból kell "bepötyögni" őket.
A parancsok általános színtaktikája:
A parancsok output-ját átiránytíhatjuk
tetszőleges fájlokba a > filenév.kit módszerrel.
Ez nagyon hasznos lehet logfájlok és a diszkek listáinak kimentésére.
A kapcsolókat mindig - jellel kell kezdeni.
A kapcsoló-paraméter párok tetszőleges sorrendben
megadhatók, de fontos, hogy a logikai függést nem
lehet felcserélni. Vagyis a logikailag az egyik kapcsolóhoz
tartozó paramétert nem cserélhetjük fel egy
másik kapcsolóhoz tartozó paraméterrel.
A paraméter nélkül vagy rossz paraméterezéssel
hívott fájl kiírja paramétereit és
azok jelentését az outputra.
A diskimage fájlok kiterjesztésének
a .SDD-t (Speccy-dos disk) javaslom. Az emulátor
bármilyen kiterjesztést elfogad, de nem biztos, hogy ez
a jövőben is így marad.
Fájlneveknél ne felejtsük el megadni
a kiterjesztést. DOS-ban a fájlnév max 8
karakter hosszú lehet, míg a kiterjesztés 3 karakter
ponttal elválasztva.
Az emulátor létrehoz különböző
temp és log fájlokat a műveletek során (összesen
4-et) mindíg az aktuális könyvtárba. Ezeket
nyugodtan lehet törölni a parancs terminálása
után.
Ezen fájlok a következők:
- _CONV_.OBJ - az utojára konvertált fájl tap formátumban
- _TEMP.OBJ_ - az utojára konvertált fájl bináris formátumban header nélkül
- SECPTR.LOG - az utoljára konvertált fájl szektorpointereinek tulajdonságai
- SDLOAD.LOG - az utoljára konvertált fájl adatatait tartalmazó szektorok címei
- A mount parancs
Ez a parancs teszi lehetővé egy valós
Speccy-Dos diszk image fájlba való konvertálását.
A program kiírja az esetlegesen fellépő rendellenességeket
az aktuális outputra. Végzetes hiba esetén a program
befejezi futását. Ezt az Action aborted!
üzenettel jelzi. Ha a betöltés sikeres volt, az Action
completed! üzenetet kapjuk.
Paraméterezés:
Példák:
mount -d 0
=>
A: meghajtóban lévő diszk tulajdonságainak
kiírása az outputra
mount -d 0 -f WSS-50.SDD
=> A: meghajtóban lévő
diszk beolvasása a WSS-50.SDD imagefájlba.
Figyelem!
Ha már létezik a megadott fájl, akkor automatikusan
törlődni fog a parancs hatására!
mount -d 0 -f WSS-50.SDD
> WSS-50.LOG
=> ua. mint az
előző, csak a beolvasás során jelentkező hibaüzeneteket
a WSS-50.LOG fájlba írja
Gyakori hibák :
- 0x01 : bad command passed to driver *
- 0x02 : address mark not found or bad sector *
- 0x06 : diskette changed or removed
- 0x10 : ECC/CRC error on disk read
- 0x11 : recoverable fixed disk data error, data fixed by ECC
- 0x40 : seek failure *
- 0x80 : time out, drive not ready
A *-al jelölt hibák
végzetesek. A legsúlyosabb 0x02 és a 0x40.
Ha ezek a hibakódok jelennek meg többszöri próbálkozás
után is, akkor sajnos nem fogja tudni olvasni az aktuális
lemezt. A hibákkal kapcsolatban bővebb információk
a Hibák, tesztek
fejezetben találhatók.
- A list parancs
Ezzel a paranccsal jeleníthetjük meg egy
diszk tartartalmát és tulajdonságait. A parancs
értelmezve van valós- és virtuális
lemezekre egyaránt. Alapértelmezetten a listát
egy az egyben kiküldi az outputra. Képernyőre íráskor
használjuk a -s <n> kapcsolót
(ahol n egy pozitív egész szám) amellyel
meghatározhatjuk az egyszerre kiírandó sorok
számát.
Ezután a lista minden n. sornál meg lesz törve
egy scroll? felirattal, amely Enter-re tovább listáz,
míg n+Enter hatására megszakítja
a listázást.
Paraméterezés:
list -d <drive kód
A:=0, B:=1> [-s konzol függ. méret][-p][>
lista.txt]
vagy
list -f <image.sdd> [-p]
[-s konzol függ. méret][> lista.txt]
Példák:
list -d 0 -s 25
=>
az A: meghajtóban lévő SDD listázása
normál dos konzolon
list -f wss-50.sdd -p
> wss-50.txt
=> a wss-50.sdd image listázása
tulajdonságokkal együtt a wss-50.txt fájlba
ábra:

- A load parancs
Ezzel a parancsal tölthetők be az egyes fájlok
a valós- és virtuális lemezekről. A program
a beolvasott fájlokat rögtön tap kiterjesztésű
állományba konvertálja. A tap-ba konvertált
fájlok a diszken lévő tulajdonságaikat megőrzik
(típus, név, hossz, autostart stb. ).
A -c kapcsoló
megadásával a program automatikusan átírja
a basic típusú fájlokban a SD hivatkozásokat
TAPE hivatkozásra. Ez nem vonatkozik a basic állományban
szereplő gépi kódú loader-re és a
MAG2.2M által lementett állományokra sem.
Ez utóbbi funkció egy későbbi verzióban
kerül megvalósításra.
A betöltendő fájlokat nem nevük alapján
kell megadni, hanem a SDD-en található könyvtárbejegyzési számuk alapján. Az emulátornak
a -n kapcsolóval jelezzük, hogy
a betöltendő fájlok sorszámai következnek.
Paraméterezés:
load -d <drive kód
A:=0, B:=1> -o <filenév>.tap -n <0..59> [-c][> load.log]
vagy
load -f <image.sdd> -o <filenév>.tap -n <0..59> [-c][> load.log]
Példák:
load -d 0 -o teszt.tap -n 41 42
=>
a 41. és 42. könyvtárbejegyzési számon található fájlok betöltése
és tap-ba konvertálása az A: meghajtóban lévő SDD-ről.
load -f wss-50.sdd -o teszt.tap -c
-n 41 42 > teszt.log
=>
a 41. és 42. könyvtárbejegyzési
számon található fájlok betöltése
és tap-ba konvertálása a wss-50.sdd fájlból.
A konvertálás során az esetleges basic fájl
SD parancsai át lesznek írva TAPE parancsokra, az
üzenetek pedig a teszt.log fájlba íródnak
be.
Gyakorlati példák
Egy példasoron keresztül bemutatom a az emulátor
1.0-s verziójának működését. A példát
a 2. ponttól bárki kipróbálhatja, ha letölti
az acidprgs.sdd fájlt.
- Lemez beolvasása image fájlba
- Lemez beolvasása.
Az
image fájl neve az SDD nevét veszi fel: mount -d 0 -f acidprgs.sdd
- Eredmény a képernyőn:
*SPECCY-DOS EMULATOR* v1.0 by EDY -
(c) 2002. HUNGARY
-----------------------------------------------------
disk
name: Acidprgs
autoboot:
true
write
protect: off
write density: double
num.
of sides: double
tracks/side: 80
sectors/track:
16
all datasectors: 2480 (634880
bytes)
used datasectors: 1167 (298752 bytes)
bad sectors:
0
max files: 60
number
of files: 21
please wait, i'm mounting...
read
fdd|side: 0|track:79|sector: 7|10-ECC/CRC error on disk read
Action
completed!
- A beolvasás során
CRC hibajelzést kaptunk, a 0. oldal 79. track 7. szektorának
beolvasása során. Az image fájlba 256 bájtnyi
rossz adat került a (79*16+7)*256 címtől kezdve. Ha
valamelyik program a lemezen használja ezt a szektort, akkor
valószínű, hogy rendellenessen fog működni, vagy
lehet, hogy betöltődéskor elszáll.
- Tipp: Hiba esetén
érdemes többször is megpróbálni a
diszk beolvasását image fájlba. Jó esély
van rá, hogy 2.-3. alkalommal hibátlan lesz az
áttöltés.
- Image fájl listázása
- Unniversal Hero c. játék betöltése image fájlból a unihero.tap állományba
- Nincs más dolgunk, mint a unihero.tap fájlt betölteni kedvenc emulátorunkba.
- Figyelem! A Speccy-Dos-ról átkonvertált 128 Kb-os játékokat a következő módon tölthetjük be:
- Válasszuk a 128 Basic menüt (+2A és + 3 esetén +3 Basic menü).
- gépeljük be: usr 0 majd enter
- A látszólag 48K-s üzemmódban a hagyományos LOAD "" parancsot használjuk a betöltéshez.
- Jó játékot!
Hibák, tesztek
- Az emulátor lehetséges hibajelzései
Hibajelzés:
|
Jelentés:
|
mount
|
list
|
load
|
Missing arguments!
|
Hibás vagy hiányos paraméterezés
|
igen
|
igen
|
igen
|
ERROR : Unable to read from drive:
<drájv cimke>
|
Nem tud olvasni a megadott drájvról
|
igen
|
igen
|
igen
|
ERROR : unable to open file for
[read][write][append]: <fájlnév>
|
Nem tudja olvasni a megadott fájlt
|
igen
|
igen
|
igen
|
WARNING : This disk has not a real
speccy dos filesystem!
|
A SDD vagy a IF nem valós SD fájlrendszer
|
igen
|
igen
|
igen
|
Action aborted!
|
Mount parancs futása megszakadt.
|
igen
|
nem
|
nem
|
ERROR : Invalid directory nubmer:
<nr>
|
A megadott könyvtári szám hibás,
vagy nem tartalmaz létező fájlt
|
nem
|
nem
|
igen
|
ERROR : Unable to allocte memory
at <függvénynév>
|
Nem tud lefoglalni memóriát
|
igen
|
igen
|
igen
|
Tesztek
Az emulátor tesztelésére Windows
98 és ME környezetben került sor. Az emulátor
mindkét Windows-on hibátlanul futott MS DOS ablakból.
A tesztekhez 3.5" DS HD floppy diszk drájv-ot és
5.25" DS HD Chinon Fdz-506 típusú fdd-t használtam.
Utóbbi esetében azért fontos megemlíteni
a típust, mert a jumperelés gyártók szerint
változik. |
Teszteredmények:
SD fájlrendszer
|
3.5" DS HD
|
5.25" DS HD
|
SS SD 35 track
|
-
|
Sikertelen minden konfigurációban.
Nem állt rendekezésemre semmilyen jumperelési
útmutató a fent említett fdd-hoz. További
tesztek folyamatban.
|
DS DD 80 track
|
Sikeres minden parancsban. Gyors beolvasás,
kevés hibával.
|
DS DD 82 track
|
Sikeres minden parancsban. Lassú
és bizonytalan a beolvasás, kevés hibával.
|
Letöltés
- A SpeccyDOS emulátor v1.03 letöltése (185 kbytes)
|
|
Publikálás a portálon: 2002-11-20 17:07:45
|