Konference: SAPI-1 a československé mikropočítače
Od: | Roman Bórik |
Datum: | 31.8.2011 21:47 |
Předmět: | Re: Re: RE: GENEROVANI CP/M 2.2 |
> Jak jsem se hrabal v novejch systemech a delal zmeny, tak jsem vyzkousel > i jakesi setreni RAMky pro Bios. Uvodni vypisy po spusteni CPM a hlasky > o spatne verzi a chybe pri bootu jsem nacpal na konec biosu a ukoncil je > .DEPHASE. Uplne na konci mam CHK_ a ALL_ pro disky a 128 byte DIRBUF. > Pred tyhle hlasky jsem dal .PHASE "zacatek tech textu". Protoze jsou > hlasky potreba jen dokud se poprve neskoci do CCP, tak jsem presvedcenej, > ze jsou v pameti zbytecne. Na jejich misto se po! sune CHK_, ALL_ > a DIRBUF. Áno. To je bežná prax, že sa pri studenom štarte buffre pre CHK, ALL a DIRBUF využívajú pre kód, ktorý už potom nie je potrebný. Musí to byť ale dobre premyslené. > U me je to "zkraceni biosu" o 180 byte, coz skoro 1/5 dylky celyho biosu. > Pro biosy dlouhy do 400H jen na systemovych stopach to maka perfektne. > Jenze ted co delam ty dlouhy biosy 800H s ulozenim zbytku do nevyuzitych > sektoru na 76 stope jsem narazil u tohodle "zkraceni biosu" na jeden > problem. U boot sektoru to je jasny, ze musim natahnout uplne celej > system a spustit. Ale co u WBOOT? Tam by se sice nemela vypisovat uvodni > hlaska ale muze to skoncit na chybe nacitani systemu a potom by chybel > text pro hlasku Boot error, protoze na jeho miste by byly ALL_ a CHK_ > a DIRBUF. Znamena to tedy pri WBOOT natahovat taky uplne cely system? Obvykle sa pri teplom štarte doťahuje iba CCP a BDOS. Celý systém, vrátane BIOSu, sa naťahuje zvyčajne iba pri bootovaní. Nebol by samozrejme problém naťahovať celý systém aj pri teplom štarte, to by ale malo za následok, že by to musel byť v konečnom dôsledku zrejme studený štart, lebo by sa doťahovaním celého BIOSu museli nainicializovať aj buffre, či tabuľky diskov, kde už BDOS mohol mať svoje behové informácie. Naviac, pokiaľ by bol systém aj v 76 stope (zbytok BIOSu), znamenalo by to seekovanie hlavy disku pri každom teplom štarte systému. Pokiaľ je potrebné vypisovať nejakú chybovú hlášku pri studenom aj teplom štarte, tak sa nedá nič robiť a ten text musí byť v časti kódu, ktorá "zostáva" v pamäti. > Mam v tom nejaky nejasnosti, navic jsem si vsiml, ze pocatecni boot z 0 > sektoru je jinaci, nez z WBOOTU. Proste se cte jiny pocet sektoru > a dokonce se ukladaji v jiny posloupnosti. Nad timhle jsem nikdy nebadal > a neni mi to moc jasny. Asi si budu muset tyhle dva booty zkusebne > naadresovat od 100H posunout body umisteni systemu do Ram a odladit si > to Slapem. Kdyz koukam do vypisu prekladu, tak mi to nak nedava smysl. > Mluvim treba o Bios0502 a Boot0502, co mam v Sapiman. BOOT kód samozrejme naťahuje celý systém, teda CCP, BDOS a BIOS a následne sa skáče do BIOSu na studený štart, kde sa robí počiatočná inicializácia. Pri teplom štarte sa opätovne doťahuje iba CCP a BDOS. Preto je počet čítaných sektorov menší ako pri BOOTe. CCP sa doťahuje preto, že spustený program môže slobodne využiť aj túto oblasť pamäti. BDOS sa doťahuje "pre istotu", keby nejaký program BDOS poškodil, alebo ho pre vlastné účely modifikoval. Ak by bol nejakým programom "zasiahnutý" aj BIOS, tak to pravdepodobne skončí nejakou "haváriou". Teplý štart robí oproti studenému štartu obvykle už iba nejaké "malé" inicializačné práce (napr. už sa nezisťujú pritomné mechaniky a pod.), riadenie sa vráti CCP a aktuálna mechanika a užívateľ sa berú z adresy 0004h (CDISK). > Jinak Ramdisky jsem vcera moril dva mezi sebou neustalym kopirovanim > s kontrolou asi 4 hodiny a ani jednou to nespadlo do verify error. > Vypada to, ze ty tabulky, co jsi napsal jsou v poradku. Jeste mi prozrad, > podle ceho je delas, zda to jen tak spocitas, ci na to mas nejakej > manual. DPB je mi snad podle par prikladu jasna, ale jak vytvaris dylku > ALL a CHK? Potreboval bych vyzkouset par atyp disku a nechci Te s tim > pokazdy zatezovat. -:)) Som rád, že RMD-1/1MB šlape. Nemám to, samozrejme, všetko z vlastnej hlavy, ale mám na to múdru knižku "Operační systém CP/M pro mikropočítače" od autorov Ing. Karel Richta a Ing. Jan Zajíc, z roku 1986, 286 strán. Tabuľka DPH (Disk Parameter Block): (v zátvorke je veľkosť položky) XLT (2) - adresa prekladovej tabuľky. 0, ak preklad logických sektorov na fyzické nie je potrebný. Veľkosť prekladovej tabuľky je SPT bytov. Ak XLT u niektorých diskov obsahuje adresu a u niektorých diskov je 0, musí byť zodpovedajúco upravená aj rutina TRANS, ktorá musí prípad nulového XLT ošetriť. WRK (6) - pracovná oblasť BDOSu DIRBUF (2) - adresa buffra (128 bytov) pre operácie s adresárom. Môže byť spoločná pre všetky jednotky. DPB (2) - adresa tabuľky parametrov disku. Pre jednotky s rovnakými parametrami môže byť DPB spoločná. CSV (2) - adresa zóny kontrolných súčtov. Jej veľkosť musí byť CKS bytov a musí byť samostatná pre každú jednotku. Ak je CKS = 0, CSV môže byť tiež 0. ALV (2) - adresa bitovej alokačnej mapy. Oblasť musí byť samostatná pre každú jednotku. Veľkosť tejto oblasti má byť (DSM / 8) + 1. DPH tabuľky musia byť v RAM, keďže sú BDOSom modifikované v ich pracovnej oblasti. Tabuľky DPB (Disk Parameter Block): (v zátvorke je veľkosť položky) SPT (2) - počet logických sektorov (128 bytov) na stopu. Ak je veľkosť fyzického sektoru väčší ako 128 bytov, je SPT rovný súčinu počtu logických sektorov na fyzický sektor a počtu fyzických sektorov na stopu. BSH (1) - block shift - dvojkový logaritmus počtu logických sektorov v alokačnom bloku - log2 (BLM + 1) BLM (1) - block mask - počet logických sektorov v alokačnom bloku mínus jedna EXM (1) - extent mask - maska rozšírenia - počet logických rozšírení (16kB) adresovaných jednou položkou adresára mínus jedna. Je určená veľkosťou alokačného bloku (BLS) a celkovým počtom alokačných blokov (DSM) takto: BLS DSM<256 DSM>255 1kB 0 - 2kB 1 0 4kB 3 1 8kB 7 3 16kB 15 7 DSM (2) - disk size max - veľkosť disku - celková kapacita diskovej jednotky v alokačných blokoch mínus jedna (číslo posledného alokačného bloku) DRM (2) - directory max - veľkosť adresára - maximálny počet položiek adresára mínus jedna. Adresár zaberá celistvý počet alokačných blokov. Každý logický sektor obsahuje 4 položky adresára, takže: DRM = (X * (BLM + 1) * 4) - 1 kde X je počet alokačných blokov adresára AL0,AL1 (1,1) - prvé dva byty bitovej mapy určujúce alokačné bloky rezervované pre adresár. Jednotka v 7. bite AL0 rezervuje 0. blok, v 6. bite 1. blok atď. až jednotka v 0. bite AL1 rezervuje 15. blok. CKS (2) - check sum - počet sektorov adresára testovaných na neregulérnu výmenu média. U výmenného média (DRM + 1) / 4, u pevného média 0. OFF (2) - offset - počet stôp rezervovaných na začiatku diskovej jednotky. Umožňuje to aj rozdeliť veľký pevný disk na viac logických jednotiek. DPB tabuľky nie sú BDOSom modifikované a teda môžu byť aj v ROM. Roman
Ostatní příspěvky vlákna:
[2011/2 (7)] [2011/3 (12)] [2011/5 (50)] [2011/6 (18)] [2011/7 (112)] [2011/8 (192)] [2011/9 (94)] [2011/10 (16)] [2011/11 (46)] [2011/12 (39)]