CP/M Image Manager

Z PMD 85 Infoserver

CP/M Image Manager


CP/M Image Manager
Autor:RM-TEAM
Verzia:v2.1 (06/2023)
Operačný systém:windows | unix
Lokalizácia:angličtina
Licencia:Copyright © 2023 RM-TEAM
Download: cim21.zip - ZIP archív obsahujúci binárky pre win32 konzolu + zdrojové texty a makefile pre Linux

Obsah


CP/M Image Manager (CIM) je konzolová utilita určená pre spravovanie obrazov CP/M diskov (disk image). Umožňuje obrazy diskov vytvárať, "formátovať" a aj zobrazovať zoznam súborov na disku. Na obrazy diskov možno súbory pridávať, súbory z nich mazať, extrahovať ich, zobrazovať obsah súboru textovo, či ako hexdump. Naviac je možné na disk pridať systémové stopy, extrahovať ich, alebo nakopírovať z iného obrazu disku.

Obrazy CP/M diskov

Obrazy CP/M diskov, ktoré CIM akceptuje sú vždy čisté (RAW) kópie všetkých sektorov pôvodných diskov bez akýchkoľvek dodatočných informácií o formáte a podobne. Poradie strán, stôp a sektorov by malo zodpovedať tomu, ako sa na disk "pozerá" BIOS systému CP/M. Zároveň sa predpokladá, že veľkosť sektorov a počet sektorov na stopu musia byť pre každú stopu na disku rovnaké. Výnimkou z tohto pravidla môžu byť systémové stopy, u ktorých sa niekedy volil iný formát, aby sa systém optimálne vošiel na čo najmenší počet stôp.

To, o aký obraz disku sa jedná, rozlišuje CIM podľa prípony súboru obrazu disku. Vzhľadom na špecifickosť formátu CP/M diskov a zásadné odlišnosti vo formátoch diskov rôznych systémov, súčasťou CIMu je konfiguračný súbor cim.ini, ktorý popisuje formáty pre jednotlivé typy diskov.

Konfiguračný súbor

Konfiguračný súbor je bežný textový súbor rozdelený do sekcií a každá sekcia popisuje jeden formát obrazu disku. Začiatok sekcie predstavuje riadok obsahujúci názov prípony súboru obrazu disku uzavretý v hranatých zátvorkách. Koniec sekcie predstavuje začiatok novej sekcie alebo skutočný koniec súboru.

Obsahom sekcie je zoznam parametrov a ich hodnôt v tvare parameter=hodnota. Každý parameter s jeho hodnotou musia byť na samostatnom riadku. Na poradí parametrov čiastočne závisí, pretože niektoré parametre sú na sebe navzájom závislé. Všetky hodnoty parametrov sú čísla v desiatkovej sústave.

Konfiguračný súbor môže kdekoľvek obsahovať prázdny alebo komentárový riadok. Riadok s komentárom začína bodkočiarkou a je, rovnako ako prázdny riadok, ignorovaný.

Konfiguračné parametre

Každá definícia obrazu disku (sekcia) musí obsahovať 7 povinných parametrov a prípadne ešte jeden nepovinný parameter. Jednotlivé parametre zodpovedajú viac-menej tabuľke DPB (Disk Parameter Block) z BIOSu CP/M.

  • SPT
    určuje celkový počet logických sektorov na stopu (veľkosť logického sektora je 128 bytov). Pokiaľ je fyzický sektor väčší ako logický, parameter SPT je rovný súčinu počtu fyzických sektorov na stope a počtu logických sektorov, ktoré sa vojdú do sektora fyzického.
  • XLT
    prekladová tabuľka - čiarkami oddelené čísla sektorov (číslovanie sektorov začína číslom 1), ktoré musia byť jedinečné a ich počet musí byť SPT. Parameter XLT môže mať hodnotu 0, pokiaľ preklad čísel sektorov nie je potrebný.
  • BLS
    veľkosť alokačného bloku v kB (1, 2, 4, 8 alebo 16).
  • EXM
    maska rozšírenia (extent mask) - je určená z hodnôt parametrov BLS a DSM

    BLS  DSM<256  DSM>255
    1kB     0        -
    2kB     1        0
    4kB     3        1
    8kB     7        3
   16kB    15        7

  • DSM
    určuje celkovú kapacitu disku v alokačných blokoch mínus jedna (číslo posledného alokačného bloku).
  • DRM
    určuje celkový počet položiek adresára mínus jedna (číslo poslednej položky adresára).
  • OFF
    počet rezervovaných systémových stôp na začiatku disku
  • OFFX
    voliteľný parameter určujúci počet logických sektorov, ktoré od začiatku disku systém zaberá. To je užitočné, ak veľkosť systémových stôp na disku nie je rovnaká ako veľkosť dátových stôp. Ak je parameter OFFX uvedený, parameter OFF určuje iba číslo prvej dátovej stopy disku.

Pre názornosť ukážka definície pre štandardný 8" disk - 77 stôp, 26 sektorov po 128 bytov, jedna strana.

; standard IBM 8" jednostranne
[CPM]
SPT=26
XLT=1,7,13,19,25,5,11,17,23,3,9,15,21,2,8,14,20,26,6,12,18,24,4,10,16,22
BLS=1
EXM=0
DSM=242
DRM=63
OFF=2

Ako už bolo spomenuté, tieto definície vychádzajú z definícií diskových parametrov v module BIOS CP/M, takže by nemal byť problém zadefinovať tieto parametre aj pre iné typy a veľkosti diskových jednotiek, podľa existujúcich tabuliek v konkrétnom BIOSe.

Konfiguračný súbor cim.ini, ktorý je súčasťou CIMu obsahuje niekoľko definícií pre rôzne CP/M disky.

Použitie

CIM je konzolová utilita, takže sa dá s výhodou použiť v dávkových súboroch. Požadované chovanie utility sa volí príslušnými prepínačmi.

Príkazový riadok môže mať podľa použitých prepínačov niekoľko foriem:

cim imagefile.ext [ -u usr ] [ -iide ] -c [ cpm_name ]
cim imagefile.ext [ -f | -q ] [ -a [path/]cpm_name [ -afn cpm_name ] [ -ow ] [ -u usr ] [ -iide ] ]
cim imagefile.ext -e cpm_name [ -u usr ] [ -iide ]
cim imagefile.ext -x [path/]cpm_name [ -u usr ] [ -iide ]
cim imagefile.ext -h cpm_name [ -u usr ] [ -iide ]
cim imagefile.ext -t cpm_name [ -u usr ] [ -iide ]
cim imagefile.ext -w [path/]in_system_file
cim imagefile.ext -i [path/]imagefile2.ext
cim imagefile.ext -s [path/]out_system_file
cim dummy.ext -iti
  • -c
    zobrazí katalóg disku; pokiaľ je uvedené cpm_name, zobrazí sa zoznam podľa uvedenej masky
  • -f
    prevedie naformátovanie disku (ak súbor obrazu disku neexistuje, bude vytvorený)
  • -q
    prevedie rýchle naformátovanie disku - zmazanie adresára (ak súbor obrazu disku neexistuje, bude vytvorený)
  • -a
    pridanie súboru/súborov na disk (ak súbor obrazu disku neexistuje, bude vytvorený); path/ predstavuje zdrojový adresár, kde sa budú hľadať súbory, ktoré sa majú pridať; cpm_name je maska pridávaných súborov
  • -afn
    cieľové meno súboru 'cpm_name' bez zástupných znakov pre jediný súbor
    V tomto prípade meno zdrojového súboru zadané pri prepínači -a môže mať dlhý názov, avšak nesmie obsahovať zástupné znaky
  • -ow
    prepísanie existujúcich súborov
  • -e
    zmazanie súboru/súborov z disku; cpm_name je maska mazaných súborov
  • -x
    extrahovanie súboru/súborov z disku; path/ predstavuje cieľový adresár, kam sa extrahované súbory uložia; cpm_name je maska extrahovaných súborov
  • -h
    zobrazí obsah súboru ako HEX-DUMP; cpm_name je jednoznačné meno súboru
  • -t
    zobrazí obsah súboru ako ASCII výpis; cpm_name je jednoznačné meno súboru
  • -w
    zápis systému na disk zo súboru; path/ predstavuje zdrojový adresár, kde sa nachádza súbor in_system_file
  • -i
    zápis systému na disk z iného disku rovnakého typu
  • -s
    extrahovanie systému z disku do súboru; path/ predstavuje cieľový adresár, kam sa uloží súbor out_system_file
  • -iide
    ignorovať chybné položky adresára
  • -iti
    zobrazenie informácií o type obrazu disku; Z dummy.ext je podstatná iba tá prípona, určujúca typ obrazu disku
  • -u
    určuje číslo užívateľskej oblasti 0 až 15
    Ak nie je tento parameter uvedený, spracované sú súbory všetkých užívateľov a v prípade prepínača -a sa zapisuje iba do užívateľskej oblasti 0.
  • imagefile.ext, imagefile2.ext
    meno súboru obrazu disku s príponou
  • cpm_name
    meno súboru v CP/M formáte 8.3, ktoré môže obsahovať zástupné znaky '*' a '?' a môže byť uvedené vrátane cesty pre pridávanie a extrahovanie súborov.
    Pozor: v prípade Linuxu musí byť cpm_name (vrátane path/), ktorý obsahuje zástupné znaky, uzavretý v apostrofoch, aby sa zabránilo automatickému expandovaniu zástupných znakov!
  • in_system_file, out_system_file
    binárny súbor so samotným systémom

Kopírovanie súborov medzi obrazmi

Pre kopírovanie medzi obrazmi diskov (aj rôznych typov) bol vytvorený dávkový súbor imgcopy.bat resp. imgcopy.sh.

imgcopy img_src img_dest file_set_mask
  • img_src
    zdrojový súbor obrazu disku s príponou; súbor musí existovať
  • img_dest
    cieľový súbor obrazu disku s príponou
  • file_set_mask
    meno súboru v CP/M formáte 8.3, ktoré môže obsahovať zástupné znaky '*' a '?'

Vytvorenie obrazov diskov z fyzických diskov

Pre vytvorenie obrazu fyzickej diskety existuje utilita CPDRead, ktorej výsledkom je súbor typu DSK. Pre opačný proces, teda zápis obrazu diskety na fyzickú disketu, existuje utilita CPDWrite. Utilita CPCDiskXP je spojením predchádzajúcich dvoch DOSovských utilít pre Windows XP (osobne som ale túto utilitu ešte nepoužíval).

Keďže ale CIM vyžaduje čisté RAW obrazy diskov, tak sme vytvorili ďalšie dve utility Dsk2Raw a Raw2Dsk, o ktorých sme veľmi stručne písali tu.