D80 obrazy ve Fuse emulátoru
Fuse emulator v Linuxu nepodporuje mechaniky D80. Je v něm ovšem podpora "všemocného" DivIDE. Divide umožňuje nahrávat různé "firmwary". Mezi nimi je i MDOS3, který by měl umět pracovat s D80 obrazy na HDD. Návody jsou ovšem jako z jiného světa nebo neexistují vůbec. Pro ochutnání DivIDE a MDOS3 doporučuji Velesoftovu stránku divide-mdos3.
První problém je, že FUSE podporuje jako image pro DivIDE pouze HDF. HDF je jakýsi formát, který kdysi vymyslel autor RealSpectrum emulátoru. Jeho popis už ovšem najdete akorát tak ve webarchivu. Stručne:
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 sám přeložil tak, že na začátku HDF je 534 bajtů dlouhá hlavička, která jinak neobsahuje nic zajímavého.
Vytvořit libovolný HDF můžete příkazem createhdf, např.:
createhdf 2 255 63 test.hdf
pro nás ale bude zajímavější příkaz raw2hdf.
Nejdříve ale musíme pochopit co a jak a vytvořit MDOS3 disk se správnou strukturou. To je v zásadě popsáno v howto k MDOS3, prakticky to vypadá takto.
- vezmu prázdnou 16MB flash kartu (bohužel se mi nepodařilo nasimulovat celý postup jen pomocí souboru na disku).
fdisk /dev/sdX
d (smažte všechny oddíly), n (vytvořte jeden nový přes celý disk - p, 1, enter, enter), t (změňte typ na 49 - neznámý), w uložte- na disk /dev/sdX1 naperte bootdisk, freedisk, freedisk -
cat images/bootdisk images/freedisk images/freedisk > /dev/sdX1
- vytvořte HDF image
dd if=/dev/sdX of=mdos3disk bs=512; raw2hdf mdos3disk mdos3disk.hdf
- ve Fuse zvolte Options/Peripherals... vyberte Divide
- dále Media/IDE/Divide/Master/Insert a vyberte mdos3disk.hdf
- Open... soubor bootloader/bootloader.tap, nechte nahrat bootloader do Divide
- 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 výběrem operačního systému. Zvolte MDOS3 v jedné ze dvou variant. Stroj se zresetuje, po opětovném vyvolání NMI se objeví menu pro výběr obrazů disket, které se mají připojit k mechanikám A-D. Stiskněte např. A, vyberte jako disk hda1, objeví se výběr
bootdisk freedisk freedisk
Zvolte bootdisk. Stiskněte Q, v BASICu napiště příkaz RUN.
Pokud chcete dostat na disk místo freedisku disk .D80 musíte v kroku kde se kopíruje obsah na disk /dev/sdX1 modifikovat následovně:
cat images/bootdisk images/infosec.bin images/free.d80 images/free.bin > mdos3disk
místo free.d80 vložte svůj obraz .d80, který musí být 737280B dlouhý.
Ahoj, s HDF a strukturou ve však obtěžovat nemusíš. Mám už připravený HDF s poslední verzí MDOS3:
http://ci5.speccy.cz/news/hdf-image-s-md..
sweet (URL) - 07.03.2011 07:57