OldComp.cz

Komunitní diskuzní fórum pro fanoušky historických počítačů


Právě je 18.04.2024, 20:20

Všechny časy jsou v UTC + 1 hodina [ Letní čas ]




Odeslat nové téma Odpovědět na téma  [ Příspěvků: 18 ]  Přejít na stránku Předchozí  1, 2
Autor Zpráva
PříspěvekNapsal: 03.02.2022, 12:56 
Offline
Profík

Registrován: 26.11.2018, 16:59
Příspěvky: 580
Bydliště: Holešov
Has thanked: 13 times
Been thanked: 91 times
Jen trošku osvětlím to CP/M
skládá se prakticky ze 3 částí - CCP, BDOS, BIOS

CCP a BDOS jsou standardní pro všechny systémy verze 2.2 na všech počítačích - pro Spectrum a Sharp p. Lamač ale do nich šáhnul, a některé rutiny přepsal do kódu Z80. To mu umožnilo zvedout rychlost a doplnit pár drobností. (totéž udělali i ve Slušovicích kde to pojmenovali CP/M 2.27 nebo 2.3x případně TNSDOS). Co je důležité, že standardní programy používají tzv. volání BDOS (Call 0005 s číslem služby v reg. C a parametry v ostatích registrech). Tyto moduly nejsou relokovatelné, ale generují se pomocí SYSGEN na konkrétní adresy pro každý počítač. Obecně platí, že čím výše v paměti jsou, tím víc volného místa zbyde na programy a data. Některé programy dokáží využít i paměť co zabírá CCP (což je obsluha příkazové řádky) aby měly víc paměti.

BIOS je to, co je pro každý počítač unikátní a má zase svoje pevné adresy a rutiny které volá BDOS a některé programy jej volají též napřímo (typicky systémové utility na práci s disky) - čím víc zabere BIOS, tím míň paměti opět zůstane na CCP/BDOS a pak pro program. BIOSy terminálových strojů měly typicky stovky bajtům max.1-2 kB. Právě p. Lamač ale má svoje BIOSy z hlediska CP/M neskutečně dlouhé, spousty bufferů pro urychlení práce disket + generátor znaků

CP/M umí obsloužt i Harddisky 20MB, takže 1 MB Ramdisk nebo 8MB mu nebude dělat problém, pouze je potřeba počítat s tím, že alokační bloky budou velké, a je tu i omezení na počet položek hlavního adresáře, nejsou zde podadresáře (složky), takže vyznat se pak ve větším množství souborů není jednoduché - sice lze využít až 16 uživatelů, ale ti vidí jen svoje soubory a soubory uživatele 0, a pak hledat co je pod jakým uživatelem uložené je taky zážitek.

Takže, pokud se tomu někdo chce věnovat, rozhodně nezasahovat do vlastního CP/M (CCP/BDOS) a použít buď standardní nebo vylepšené od p.Lamače, ale napsat si na míru BIOS, včetně emulace terminálů (výstup na obazovku) a obsluhy moderních diskových systémů. Pro CP/M je základní blok jeden sektor 128 bajtů. Takže pokud má diskový systém jiný formát, musí to BIOS zpracovat (zde ty buffery) pomocí různých blok/deblok algoritmů...


Nahoru
 Profil  
 
PříspěvekNapsal: 03.02.2022, 15:56 
Offline
Profík

Registrován: 06.02.2019, 11:47
Příspěvky: 901
Has thanked: 51 times
Been thanked: 230 times
l00k píše:
CP/M umí obsloužt i Harddisky 20MB, takže 1 MB Ramdisk nebo 8MB mu nebude dělat problém

pamätám si 8MB. 20MB by už musel byť rozdelený na niekoľko logických diskov.


Nahoru
 Profil  
 
PříspěvekNapsal: 03.02.2022, 17:03 
Offline
Profík

Registrován: 06.03.2018, 16:00
Příspěvky: 977
Bydliště: Valtínov, Kunžak
Has thanked: 39 times
Been thanked: 487 times
Když jsem upravoval BIOS pro Stone 64kb, použil jsem 8MB oddíly, což by měla být maximální velikost logického disku. Vycházel jsem z BIOSu Granta Searle pro 64MB CF kartu - 8 oddílů po cca 8MB, velikost sektoru 512b s příslušnými deblock funkcemi. Grant má udělaný BIOS i pro 128MB CF kartu (16 logických disků po cca. 8MB).

Při úpravách MONOTORu a BIOSu u IQčka pro chod CP/M z CF karty jsem se nezalamoval s velikostí sektoru a deblock funkcemi, ale z každého sektoru jsem použil jen prvních 128 byte. Při čtení se zbytek sektoru jen přečte a ignoruje, aby se korektně dokončila operace a při zápisu se zapíše 128 byte dat CP/M a zbytek do 512 vyplní jakýmkoliv znakem. Vím, že je to habání místem, ale nechtěl jsem ubírat další RAM pro buffer a block/deblock funkce.

Každý logický disk v CP/M zabírá nějaké místo v RAM svým Disk Parametr Headerem (16 byte) a svou alokační tabulkou (až 257 byte). Datový buffer může být pro všechny disky společný. Také buffer pro 512 byte sektor má v RAM své místo a z něj se kopírují jednotlivé čtvriny po 128 byte do DMA oblasti pomocí block/deblock operací.

P.


Nahoru
 Profil  
 
Zobrazit příspěvky za předchozí:  Seřadit podle  
Odeslat nové téma Odpovědět na téma  [ Příspěvků: 18 ]  Přejít na stránku Předchozí  1, 2

Všechny časy jsou v UTC + 1 hodina [ Letní čas ]


Kdo je online

Uživatelé procházející toto fórum: Žádní registrovaní uživatelé a 3 návštevníků


Nemůžete zakládat nová témata v tomto fóru
Nemůžete odpovídat v tomto fóru
Nemůžete upravovat své příspěvky v tomto fóru
Nemůžete mazat své příspěvky v tomto fóru
Nemůžete přikládat soubory v tomto fóru

Hledat:
Přejít na:  
Založeno na phpBB® Forum Software © phpBB Group
Český překlad – phpBB.cz