Konference: SAPI-1 a československé mikropočítače

Od: Roman Bórik
Datum: 31.8.2011 20: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)]


[2010 (676)] [2011 (586)] [2012 (976)] [2013 (538)]