MOUNT

Z PMD 85 Infoserver

MOUNT


MOUNT

spustený program MOUNT
Autor:Roman Bórik
Vývojár:RomBorSoft
Verzia:MOUNT, v1.0 (2024)
Operačný systém:CP/M
Lokalizácia:angličtina
Download: mount10.zip - archív obsahujúci zdrojové texty, preloženú binárku a obrazy diskov P32, DZ8 a NCB

Obsah


CP/M program MOUNT.COM je ekvivalentom k utilite CD.COM. Umožňuje teda priradiť do jednotlivých virtuálnych mechaník PMD 32-SD obrazy diskov, avšak, na rozdiel od utility CD.COM, poskytuje jednoduché užívateľské rozhranie. Je možné pohodlne prechádzať po adresárovej štruktúre na SD karte a tak nájsť a zvoliť požadovaný obraz disku.

Spustenie

Výber terminálu po spustení programu MOUNT
Výber terminálu po spustení programu MOUNT

Program možno spustiť obvyklým spôsobom zadaním jeho mena. Za názvom programu môže nasledovať hviezdička * alebo názov terminálu.

   A>MOUNT
   A>MOUNT *
   A>MOUNT názov_terminalu

Ak sa program spustí bez parametrov použije sa konfigurácia prvého terminálu zadefinovaného v konfiguračnom súbore.

Ak sa program spustí s parametrom hviezdička, zobrazí sa zoznam zadefinovaných terminálov v konfiguračnom súbore a je možné vybrať terminál, ktorého definícia sa má pre beh programu použiť.

Ak sa program spustí s názvom terminálu, program sa pokúsi v konfiguračnom súbore nájsť definíciu pre požadovaný terminál a použije ju.

Užívateľské rozhranie

Užívateľské rozhranie je veľmi jednoduché a je rozdelené do piatich sekcií:

  • titulok programu a jeho verzia
  • aktuálna cesta na SD karte a maska prípony zobrazovaných súborov
  • aktuálne priradenie obrazov diskov vo virtuálnych mechanikách
  • zoznam súborov
  • menu / editačný/informačný riadok

Aktuálna cesta na SD karte

Aktuálna cesta na SD karte je zobrazená v druhej sekcii obrazovky tak, že je uvedená textom SD:/. Zmena cesty sa robí tak, ako je to obvyklé v súborových manažéroch. V zozname súborov sa kurzorom postavíme na názov adresára (ten je uzavretý v hranatých zátvorkách) a vyberieme ho klávesom enter. Meno nadradeného adresára je reprezentované dvoma bodkami, teda je zobrazený ako [..]. Ak by dĺžka celkovej cesty presahovala 63 znakov, program zmenu adresára nedovolí a vypíše chybové hlásenie.

Po zmene adresára sa aktualizuje zobrazená cesta a načíta sa nový zoznam súborov v danom adresári. Ak by sa cesta k aktuálnemu adresáru nevošla na šírku obrazovky, cesta bude zo začiatku skrátená a na začiatku cesty budú zobrazené tri bodky (tzv. ellipsis).

Maska prípony zobrazovaných súborov

U každého systému je obvyklá a zadefinovaná nejaká predvolená prípona súboru obrazu disku. Táto prípona po spustení programu predstavuje masku, na základe ktorej sa v zozname súborov zobrazia iba súbory s danou príponou. Aktuálna prípona je zobrazená v druhej sekcii obrazovky tak, že je uvedená textom Ext:.

Priradenie obrazov diskov do virtuálnych mechaník

V tretej sekcii sa zobrazujú aktuálne priradené obrazy diskov v jednotlivých mechanikách. Prvé písmeno disku a počet diskových jednotiek závisí od konkrétneho systému a jeho definičnej tabuľky pre PMD 32-SD. Obvykle sú 4 a to A:, B:, C: a D:.

Priradenie obrazu disku do konkrétnej mechaniky sa robí výberom súboru v zozname súborov klávesom enter. V informačnom riadku sa následne zobrazí výzva Choose drive: a program očakáva zadanie písmena disku, do ktorého sa má obraz vložiť. Klávesom 0 možno voľbu opustiť. Ak by dĺžka celkovej cesty vrátane mena súboru presahovala 63 znakov, program zmenu priradenia nedovolí a vypíše chybové hlásenie.

Po úspešnom priradení obrazu disku do mechaniky sa zobrazí nové meno súboru vrátane cesty. Ak by sa celá cesta k danému súboru nevošla na šírku obrazovky, cesta bude zo začiatku skrátená a na začiatku cesty budú zobrazené tri bodky (tzv. ellipsis).

Zoznam súborov

Štvrtá sekcia obrazovky zobrazuje zoznam adresárov a súborov v aktuálnom adresári. Zobrazujú sa iba súbory, ktorých prípona zodpovedá maske prípony. Zoznam je zoradený abecedne (ASCII) a adresáre sú vždy na začiatku zoznamu.

Podľa konfigurácie terminálu môže byť adresár/súbor, na ktorom stojí kurzor, označený inverzným zobrazením alebo znakom > pred menom adresára/súboru. Pohyb po zozname je možný šiestimi definovateľnými klávesmi (viď konfiguračný súbor):

  • hore / dole - predošlý / nasledujúci súbor
  • vľavo / vpravo - predošlá / nasledujúca stránka súborov
  • home / end - prvý / posledný súbor v zozname

Ako už bolo spomenuté, výber adresára/súboru sa robí klávesom enter.

Menu / informačný/editačný riadok

V poslednej sekcii obrazovky je riadok Menu. Tento riadok sa zmení na editačný, ak sa od užívateľa vyžaduje nejaký vstup. Zároveň sa do tohto riadku zobrazujú chybové hlásenia.

Menu obsahuje nasledujúce položky. Príslušná akcia sa vyvolá stlčením daného číselného klávesu.

  • 1:Eject - Vysunutie obrazu disku z mechaniky.
    V informačnom riadku sa zobrazí výzva Choose drive: a program očakáva zadanie písmena disku, z ktorého sa má obraz vysunúť. Klávesom 0 možno voľbu opustiť. Ak v mechanike nie je vložený žiadny obraz disku, je v sekcii so zoznamom aktuálne priradených obrazov diskov za písmenom disku zobrazený text <Empty>.
  • 2:WP - Zmena príznaku Write protect (zakázaný zápis) pre zvolený disk.
    V informačnom riadku sa zobrazí výzva Choose drive: a program očakáva zadanie písmena disku, u ktorého sa má zmeniť príznak WP. Klávesom 0 možno voľbu opustiť. Ak je na disk zakázaný zápis, je za písmenom disku znak !. Ak je zápis povolený, je za písmenom disku obvyklá :.
  • 3:Create - Vytvorenie nového obrazu disku.
    Program si vyžiada zadanie mena obrazu disku. Ak nie je zadaná prípona súboru, pridá sa predvolená prípona. Ak je zadaná aj prípona, tá musí byť zadefinovaná v súbore images.cfg v koreňovom adresári SD karty. Dĺžka mena súboru aj s príponou je síce 31 znakov, ale celá cesta k súboru od koreňa môže mať maximálne 63 znakov! Preto to netreba preháňať. Vytvorenie napr. P32 obrazu disku môže trvať asi 20 sekúnd, takže je často účelnejšie si obrazy diskov pripraviť dopredu na PC.
  • 4:Ext - Zmena masky prípony pre zobrazovaný zoznam súborov.
    Na väčšine systémov sa používa iba jeden typ obrazu disku. Ak však systém podporuje rôzne formáty diskov, je možné klávesom 4 zmeniť masku prípony pre zobrazované súbory. Maska prípony môže mať maximálne 3 znaky. Pri zadávaní je možné zadať aj zástupné znaky * a ?.
  • 0:Quit - Ukončenie programu

Naviazanie na ovládač PMD 32-SD

Rovnako, ako v prípade utility CD.COM, program MOUNT musí poznať adresy rutín ovládača PMD 32-SD. Tie sa získavajú dvojakým spôsobom. Buď ich program nájde v Definičnej tabuľke PMD 32-SD za BIOSom, alebo sa pokúsi zistiť, o aký typ počítača ide a použije pevne definované adresy.

Definičná tabuľka PMD 32-SD

Definičná tabuľka PMD 32-SD pre priame volanie rutín ovládača PMD 32 musí byť umiestnená za skokovými vektormi na služby BIOSu. Tabuľka môže byť v dvoch variantoch (parameter T), podľa umiestnenia samotných adries služieb PMD 32-SD.

Parameter D určuje číslo prvej jednotky, ktorá v systéme prislúcha PMD 32-SD (0=A, 1=B, ...). Parameter N určuje počet využitých diskov z PMD 32-SD (1 až 4). Súčet prvých 4 bytov musí byť 0 modulo 256.

Byte parametrov tak má hodnotu T*128+N*16+D.

  • T=0 - Dĺžka tabuľky 27 bytov. Tabuľka 9 vektorov služieb ovládača PMD 32-SD je umiestnená za adresou stránkovania.
; Definičná tabuľka PMD 32-SD
	DB	"32"		; značka pre vyhľadanie tabuľky
	DB	N*16+D		; byte parametrov
	DB	CRC		; CRC = 256 - ("3" + "2" + (N * 16 + D))
	DB	"EXT"		; predvolená prípona súboru - 3 znaky presne!
	DW	PAGING		; adresa stránkovacej rutiny; 0, ak stránkovanie nie je potrebné
; Pre T=0 nasleduje 9 vektorov služieb ovládača PMD 32-SD
	DW	ReadByte	; čítanie bytu z PMD 32-SD
	DW	SendCommand	; odoslanie povelu
	DW	SendByte	; odoslanie bytu
	DW	SndCrcRdAckErr	; odoslanie CRC a prijatie ACK a ERR
	DW	ReadAckErr	; prijatie ACK a ERR
	DW	WaitErrT15	; čakanie na chybový kód 15s
	DW	WaitErrT	; čakanie na chybový kód zvolený čas
	DW	SndCrcRdAck	; odoslanie CRC a prijatie ACK
	DW	ReadCheckCrc	; prijatie a kontrola CRC
  • T=1 - Dĺžka tabuľky 11 + 18 bytov. Tabuľka 9 vektorov služieb ovládača PMD 32-SD je umiestnená na inom mieste. Za adresou stránkovania je umiestnená adresa, kde sa nachádza tabuľka 9 vektorov služieb ovládača PMD 32-SD.
; Definičná tabuľka PMD 32-SD
	DB	"32"		; značka pre vyhľadanie tabuľky
	DB	128+N*16+D	; byte parametrov
	DB	CRC		; CRC = 256 - (("3" + "2" + (128 + N * 16 + D)) and 255)
	DB	"EXT"		; predvolená prípona súboru - 3 znaky presne!
	DW	PAGING		; adresa stránkovacej rutiny; 0, ak stránkovanie nie je potrebné
;  Pre T=1 nasleduje iba adresa tabuľky vektorov
	DW	SD32		; adresa vektorov - tabuľka SD32 je na inom mieste
; Niekde na inom mieste je tabuľka vektorov.
SD32:	DW	ReadByte	; čítanie bytu z PMD 32-SD
	DW	SendCommand	; odoslanie povelu
	DW	SendByte	; odoslanie bytu
	DW	SndCrcRdAckErr	; odoslanie CRC a prijatie ACK a ERR
	DW	ReadAckErr	; prijatie ACK a ERR
	DW	WaitErrT15	; čakanie na chybový kód 15s
	DW	WaitErrT	; čakanie na chybový kód zvolený čas
	DW	SndCrcRdAck	; odoslanie CRC a prijatie ACK
	DW	ReadCheckCrc	; prijatie a kontrola CRC

Aktualizovaná verzia systému Mikros pre PMD 85 má už upravený BIOS a obsahuje aj túto definičnú tabuľku.

Zistenie typu počítača

Ak sa za BIOSom nenájde definičná tabuľka PMD 32-SD, na základe testov stránkovania pamäte RAM vs ROM sa program pokúsi zistiť, na akom počítači bol spustený - PMD 85-2A / PMD 85-3 / Consul 2717 / NCB85. Podľa toho sa potom používajú správne adresy rutín ovládača PMD 32-SD. Zároveň sa pripraví predvolená prípona:

  • P32 - pre PMD 85
  • DZ8 - pre Consul 2717
  • NCB - pre NCB85

Na iných počítačoch nebude, pochopiteľne, program fungovať.

Konfiguračný súbor

Vzhľadom na to, že systém CP/M nedefinuje jednoznačne vlastnosti vstupu z konzoly a výstupu na konzolu, súčasťou programu MOUNT.COM je aj konfiguračný súbor MOUNT.CFG, v ktorom je možné zadefinovať ovládacie klávesy a spôsob "ovládania" výstupu na konzolu. Konfiguračný súbor môže obsahovať definície pre rôzne terminály.

Po spustení programu sa konfiguračný súbor hľadá najprv na aktuálnom disku, a ak sa nenájde, hľadá sa na disku A:. To znamená, že ak máme program MOUNT na disku A: a aktuálnym diskom je napr. disk C:, môžeme program spustiť následovne C>A:MOUNT a program si konfiguračný súbor nájde na disku A:.

Konfiguračný súbor je bežný textový súbor rozdelený do sekcií a každá sekcia popisuje definície pre jeden terminál. Začiatok sekcie predstavuje riadok obsahujúci názov terminálu 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. Všetky hodnoty parametrov sú čísla v šestnástkovej sústave, teda páry šestnástkových číslic bez prefixu i postfixu.

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ý.

V nasledujúcej tabuľke sú uvedené všetky parametre, ktoré sa očakávajú pre každý terminál. Ak terminál nepodporuje niektorý z nepovinných parametrov, dané parametre musia mať hodnotu 00.

Parameter Význam
Definície a escape sekvencie pre výstup na konzolu
upper-case-cout Hodnota 01 určuje, že terminál dokáže zobrazovať iba veľké písmená. Hodnota 00 určuje, že terminál dokáže zobrazovať malé aj veľké písmená.
characters-per-row Počet znakov na riadok (povinné).
rows-per-screen Počet riadkov na obrazovke (povinné).
set-cursor-position Escape sekvencia pre nastavenie pozície kurzora (povinné, max. 8 bytov).

Musí obsahovať aliasy `row` a `col`, ktoré určujú, kde sa v escape sekvencii nachádzajú parametre riadka a stĺpca.
Ak sú riadok a stĺpec binárne, za aliasom musí byť znak `+` nasledovaný hodnotou offsetu, napr.: 1B row+20 col+20.
Ak sú riadok a stĺpec v ascii formáte, za aliasom musí byť znak `@`, napr. 1B 5B row@ 3B col@ 48.

erase-screen Escape sekvencia pre zmazanie obrazovky (povinné, max. 8 bytov).
hide-cursor Escape sekvencia pre skrytie kurzora (max. 8 bytov).
show-cursor Escape sekvencia pre zobrazenie kurzora (max. 8 bytov).
bell Escape sekvencia pre pípnutie (max. 3 byty).
print-normal Escape sekvencia pre výpis normálnym písmom (neinverzne) (max. 8 bytov).
print-inverse Escape sekvencia pre výpis inverzným písmom (max. 8 bytov).
Vstup z konzoly - kódy funkčných klávesov (vždy 1 byte)
enter Výber položky v zozname.
cursor-left Prechod na predošlú stránku zoznamu súborov.
cursor-right Prechod na nasledujúcu stránku zoznamu súborov.
cursor-up Prechod na predošlý súbor v zozname.
cursor-down Prechod na nasledujúci súbor v zozname.
cursor-home Prechod na začiatok zoznamu súborov.
cursor-end Prechod na koniec zoznamu súborov.
escape Opustenie zadávania mena súboru alebo prípony.
delete

backspace

Zmazanie znaku pred kurzorom.
clear-line Zmazanie editovaného riadku.

Príklad definície pre PMD 85:

[PMD85]
; output console definitions and escape sequences
upper-case-cout = 00
characters-per-row = 30
rows-per-screen = 1C
set-cursor-position = 1B row+20 col+20
erase-screen = 1F
hide-cursor = 00
show-cursor = 00
bell = 07
print-normal = 1A
print-inverse = 1A 1D

; input console function key codes (always 1 byte!)
enter = 0D
cursor-left = 08
cursor-right = 18
cursor-up = 1A
cursor-down = 19
cursor-home = 0C
cursor-end = 03
escape = 17
delete = 7F
backspace = 02
clear-line = 1B

Na stiahnutie

  • mount10.zip - archív obsahujúci zdrojové texty, preloženú binárku a obrazy diskov P32, DZ8 a NCB