Virtualny ramdisk

   Aj ked mnohi ludia to povazuju za zbytocnost (a hlavne na PeCi), predsa len, virtualny ramdisk je velmi dobra a uzitocna vec. Hlavne pre tych, ktori maju len jednu disketovu mechaniku. Ramdisk pre diskovu jednotku MB-02 s verziami BS-DOS 199 az 308 je tvoreny tymito tromi utilitkami:

ramdrive  ...  rezidentny drajver pre ramdisk
ramdinit  ...  inteligentna inicializacia po prvej instalacii
ramdroff  ...  deinstalator ramdisku

   Tieto tri programy umoznuju uzivatelovi pohodlne vytvorit, ziniciazizovat (ak treba), alebo odinstalovat virtualny ramdisk.

   Ramdrive je malicky 621 bajtovy drajverik, ktory emulujte virtualny ramdisk, konfigurovatelny pre rozne rom-banky do maximalnej kapacity 480 kB. Instalaciou tohto drajvera ziska uzivatel pod cislom drajvu 9 plnohodnotnu virtualnu mechaniku s vlozenou virtualnou disketou s ktorou mozete robit vsetko to, co aj s realnou disketou. Az na to, ze tuto virtualnu disketu nemozete vybrat z virtualnej mechaniky. Teda, leda ze by uzivatel vybral RAMku z obimky, ale to sa nejak zrovna moc neodporuca :-) Vsetky data sejvnute do ramdisku su pre istotu chranene kontrolnymi sumami, takze nejake poruchy v udajoch ulozenych v ramdisku su detekovane chybou CRC.
   Ako je to mozne, ze 621 bajtov dokaze emulovat disketovu jednotku s uplne vsetkymi featuresami a moznostami ovladania (basicovymi prikazmi aj strojakovymi sluzbami po RST #18 a RST #20) ako keby to bola obycajna realna disketa ? To je velmi jednoduche. System MB-02 je otvorena architektura s presne definovanymi rozhraniami medzi jednotlivymi vrstvami systemu a bez problemov taketo cosi umoznuje. Vsetky rutinky na ovladanie diskety uz v systeme existuju a 621 bajtovy drajver ich jednoducho povedane pri svojej praci dokaze 'zneuzit'...a tym padom poskytnut uzivatelovi taky isty komfort ako keby sa jednalo o klasicku mechaniku. Dokonca aj vsetky oficialne vydane systemove utilitky (napr. FF17, di, cdd, fi, lendir,...) plne spolupracuju s virtualnym ramdiskom ako keby to bola proste dalsia realna mechanika. Hadam najzaujimavejsie je prave FF17 - ramdisk je plne formatovatelny ako klasicka normalna disketa.
   Pre instalaciu ramdisku by ste mali mat nabootovany system, BS-DOS verziu 199 az 308. S inymi verziami nie je funkcia ramdisku zarucena. Na zaciatku drajvera je mala oblast, kde je ulozena adresa portu a cisla baniek, ktore urcuju kde bude ramdisk instalovany a ktore banky bude vyuzivat. Vyzera to nejak takto:

org #8000zaciatok suboru ramdrive
jrinstallskok na instalacnu rutinku
portdb#17adresa portu na prepinanie baniek
dos_bnk db#61banka v ktorej sa nachadza bios & dos
dat_bnk db#64,#65,#66,#67 banky pre ukladanie datovych sektorov
 db0,0,0,0...nepouzite

   Cisla baniek musia byt take, ze ked sa dane cislo posle na prepinaci port, banka sa musi naadresovat s povolenym zapisom. Cislo banky 0 znamena koniec sekvencie cisel baniek. Baniek moze byt najviac specifikovanych 32. Toto prinasa so sebou jednu nevyhodu - totiz ze utilitka ramdrive je potom hardwerovo zavisla - lebo obsahuje konkretne cisla portov a pre kazdy hardware [pre ine druhy MB-02 diskov] ju treba prekonfigurovat. Vyssie uvedeny priklad konfiguracie drivera je urceny pre MB-02 vyrobenu u 8BC s upravenou romkou umiestnenou v banke 0 a samotnym dosom v banke 1, a pre datove sektory su vyuzite banky 4,5,6 a 7.
   Ked mame system nabootovany, drajver nakonfigurovany, staci uz len spustit drajver prikazom NEW "ramdrive" - drajver sa sam nainstaluje a zmodifikuje DOS tak, aby poznal novu virtualnu mechaniku. Prikaz NEW "ramdrive" je vhodne vlozit do suboru autoexe cim sa zabezpeci ze sa drajver automaticky nainstaluje po nabootovani systemu.
   Velmi dolezite: Instalacia drajvera je v podstate len 'napokovanie' vsetkych obsluznych rutiniek a prislusne modifikacie na systeme. Data v datovych bankach a ani kontrolne sumy dat sa nainstalovanim drajvera neinicializuju. Preto je nutne po prvej instalacii drajvera cely ramdisk najprv pred pouzitim sformatovat. Je to mozne urobit viacerymi sposobmi. Najefektnejsi sposob je klasicke formatovanie klasickym formatovacom diskiek FF17, do ktoreho treba vlozit taketo parametre:

Meno = RAMDRIVE
drv = 9
hdd = 0
trk = 16
sec = 15

   Ramdisk v skutocnosti emuluje obojstrannu disketu, ktora ma 16 stop a 15 sektorov na kazdej stope. Nutnost rucneho naformatovania ramdisku je zvolena umyselne, pretoze umoznuje to totiz jednu dolezitu vec - ak uzivatel ma verziu MB-02 s bateriovym zalohovanim obsahu ramky, nieco si sejvne do ramdisku, vypne pocitac, niekedy nabuduce zase zapne, nabootuje system a nainstaluje ramdisk s takou istou konfiguraciou akou mal minule, vsetky data minule sejvnute do ramdisku ostatnu zachovane a uzivatel moze pokracovat v praci s nimi tam, kde minule prestal. Data su chranene kontrolnymi sumami, takze keby sa nejak medzicasom porusili, system pri citani porusenych dat zahlasi CRC error.

   Aby ste nemuseli manipulovat formatovacom FF17, mozete na sformatovanie ramdisku pouzit utilitku ramdinit. Spustite ju prikazom NEW "ramdinit". Tato utilitka je v podstate to iste ako formatovaci program FF17 avsak je optimalizovana pre formatovanie ramdisku. Okrem toho je vybavena vlastnostami, ktore formatovanie ramdisku zjednodusuju a automatizuju, takze uzivatel sa s tym vobec nemusi zaoberat.
   Po spusteni si tato utilitka prejde vsetky existujuce mechaniky, a ked zisti, ze niektora z nich je ramdisk, skontroluje datovu konzistenciu na tomto ramdisku. V pripade, ze ramdisk uz bol naformatovany a data neboli poskodene, utilitka neurobi nic (aby nezmazala data v ramdisku). V pripade datovej nekonzistencie sa ramdisk naformatuje. Test datovej konzistencie sa robi nacitanim boot sektora ramdisku. V pripade, ze tento sektor sa nacita v poriadku a vsetky datove struktury v nom su neporusene, ramdisk sa povazuje za naformatovany. V pripade ak sa vam nejakym nedopatrenim stane, ze systemove struktury su narusene tak ze s ramdiskom nie je mozne seriozne pracovat a pritom boot sektor je v poriadku (a ramdinit nepomaha), staci ak ramdisk klasicky sformatujete pomocou FF17 a vsetku bude zase v poriadku.
   Podobne ako pri samotnom ramdrive, aj prikaz NEW "ramdinit" je vhodne umiestnit do suboru autoexe hned za instalaciu hlavneho drajvera prikazom NEW "ramdrive". Tym sa zabezpeci, ze ak sa drajver instaluje prvy raz a este nie su vytvorene systemove struktury na ramdisku, automaticky sa vytvoria.
   Ramdinit nechava po sebe znacku o vysledku svojej cinnosti na adrese 23681. Ak je PEEK 23681 nulovy, znamena to ze datova konzistencia v ramdisku pred spustenim utility ramdinit uz bola v poriadku a preto tato utilitka v podstate nic nespravila. Ak je hodnota PEEK 23681 nenulova, potom ramdisk bol nanovo sformatovany a je uplne cisty a pripraveny na pouzitie. Vtedy hodnota PEEK 23681 zaroven indikuje cislo disku pod ktorym je ramdisk viditelny.

   Ramdroff je velmi jednoducha utilitka (vsimnite si jej dlzku 12 bajtov!), robi len jednu jedinu malicku drobnu vecicku - odinstaluje drajver 'ramdrive'. Tym padom virtualna mechanika alebo ramdisk celkom prestava existovat a BS-DOS je v stave, v akom bol pred instalaciou drajvera ramdrive.
   A co to vlastne robi ? Kym instalacia drajvera NEW "ramdrive" je len 'napokovanie' vsetkych obsluznych rutiniek a prislusne modifikacie na systeme, spustenie utilitky NEW "ramdroff" je len 'odpokovanie' tychto obsluznych rutiniek a modifikacii zo systemu.
   V pripade ze zase chcete ramdisk mat k dispozicii (a ramky v ktorych boli ulozene data sa medzicasom nepremazali), tak staci znovu spustit samotny drajver: NEW "ramdrive" a ramdisk je zase pripraveny na pracu aj so svojim povodnym obsahom, ktory mal pred pouzitim utilitky ramdroff.