Feed: lowlevel
Post-URL: http://lowlevel.cz/log/pivot/entry.php?id=190
Fuse emulator v Linuxu nepodporuje mechaniky D80. Je v nem ovsem podpora
"vsemocneho" DivIDE. Divide umoznuje nahravat ruzne "firmwary". Mezi nimi
je i MDOS3, ktery by mel umet pracovat s D80 obrazy na HDD. Navody jsou
ovsem jako z jineho sveta nebo neexistuji vubec. Pro ochutnani DivIDE a
MDOS3 doporucuji Velesoftovu stranku [divide-mdos3][1].
[1]: http://velesoft.speccy.cz/zx/divide/divide-mdos3.htm
Prvni problem je, ze FUSE podporuje jako image pro DivIDE pouze HDF. HDF je
jakysi format, ktery kdysi vymyslel autor RealSpectrum emulatoru. Jeho
popis uz ovsem najdete akorat tak ve webarchivu. Strucne:
0x00 "RS-IDE" ASCII[6] HDF signature
0x06 0x1A BYTE Termination marker
0x07 0x11 BYTE HDF revision number
Represented in BCD form: 0x11 = v1.1
0x08 - BYTE Flags
b0: halved sector data (only LSB of sector words is stored)
b1: ATAPI device (e.g. CDROM)
0x09 DOFS WORD Image data offset
This is the absolute offset in the HDF file where the actual hard-disk
data dump starts.
In HDF version 1.1 this is 0x216.
0x0B 0x00 BYTE[11] Reserved (must be set to zero)
0x16 - WORD[256] IDE/ATA device identification data
This is the dummy sector information returned by ATA command 0xEC or
ATAPI command 0xA1 (see bit 1 of the flags to determine which is the case)
Data are stored in words using the ATA convention (big endian), e.g.
ASCII string "Hello!" is stored as "eHll!o"
DOFS - - Raw disk data dump
Tracks are stored in the following order: C0 H0, C0 H1 ... C0 H15, C1
H0, C1 H1 ...
Jsem si sam prelozil tak, ze na zacatku HDF je 534 bajtu dlouha hlavicka,
ktera jinak neobsahuje nic zajimaveho.
Vytvorit libovolny HDF muzete prikazem createhdf, napr.:
createhdf 2 255 63 test.hdf
pro nas ale bude zajimavejsi prikaz raw2hdf.
Nejdrive ale musime pochopit co a jak a vytvorit MDOS3 disk se spravnou
strukturou. To je v zasade popsano v howto k [MDOS3][2], prakticky to
vypada takto.
[2]: http://ci5.speccy.cz/mdos3/
1. vezmu prazdnou 16MB flash kartu (bohuzel se mi nepodarilo nasimulovat
cely postup jen pomoci souboru na disku).
2. fdisk /dev/sdX
d (smazte vsechny oddily), n (vytvorte jeden novy pres cely disk - p, 1,
enter, enter), t (zmente typ na 49 - neznamy), w ulozte
3. na disk /dev/sdX1 naperte bootdisk, freedisk, freedisk -
cat images/bootdisk images/freedisk images/freedisk > /dev/sdX1
4. vytvorte HDF image
dd if=/dev/sdX of=mdos3disk bs=512; raw2hdf mdos3disk mdos3disk.hdf
5. ve Fuse zvolte Options/Peripherals... vyberte Divide
6. dale Media/IDE/Divide/Master/Insert a vyberte mdos3disk.hdf
7. Open... soubor bootloader/bootloader.tap, nechte nahrat bootloader do
Divide
8. vyvolejte NMI (Machine/NMI)
Loading kernel 2.3.2010 OK
Checking devices
master: Created by raw2hdf
slave: OK
Checking bootable MDOS3 partition FAILED
Searching for first MDOS3 image:hda OK
Reading bootconf
Nahraje se menu s vyberem operacniho systemu. Zvolte MDOS3 v jedne ze dvou
variant. Stroj se zresetuje, po opetovnem vyvolani NMI se objevi menu pro
vyber obrazu disket, ktere se maji pripojit k mechanikam A-D. Stisknete
napr. A, vyberte jako disk hda1, objevi se vyber
bootdisk
freedisk
freedisk
Zvolte bootdisk. Stisknete Q, v BASICu napiste prikaz RUN.
Pokud chcete dostat na disk misto freedisku disk .D80 musite v kroku kde se
kopiruje obsah na disk /dev/sdX1 modifikovat nasledovne:
cat images/bootdisk images/infosec.bin images/free.d80 images/free.bin
mdos3disk
misto free.d80 vlozte svuj obraz .d80, ktery musi byt 737280B dlouhy.
URL: http://lowlevel.cz/log/pivot/entry.php?id=190
|