Zdravim, o vikendu jsem se kouknul na zakladni moznost kompilovatelnosti puvodniho UZI i novejsiho UZIXu. Zatim pro mne co se tyce kompilovatelnosti jednoznacne vyhrava UZI. Je psano v jedinem adresari vcetne hlavickovych souboru a kompilace by tak nemela byt problemem i na Sharpu v CP/M. UZIX Zdrojaky UZIXu jsou oproti tomu plne adresarove, zrejme autori vyuzivaji cross-kompilaci v jinem prostredi (napada me Hi-Tech C pro MS-DOS). Zrejme jsem navic neco soustavne prehlizel, protoze mi delalo ohromne problemy vubec UZIX zkompilovat (a to nemluvim o linkovani). Nakonec jsem se na UZIX vybodl, i kdyz jsem si pozdeji cast veci vypujcil pri prekladu puvodniho UZIho. MZI Puvodni UZI by melo obsazovat hornich 32k RAM (8000h-FFFFh). Abych pravdu rekl, Hi-Tech C je rekordmanem pri kompilaci. Zakladni verze UZI se prekompilovala na 35k !!, navic se zakomentovanymi ovladaci na SCSI a HD. A to neobsahovala zadny kod pro MZ. Rozhodl jsem se zatim snizit zacatek kernelu na 7000h, dokud nepreneseme neco do druhych 16k VRAM nebo neprepiseme nektere casti do assembleru. Tady je zatim zakladni rozlozeni pameti v MZI: Rozlozeni pameti 0000h - 6fffh: volna pamet pro aplikace (zatim, bude casem zvysena) 7000h - feffh: kernel ff00h - ffffh: stack (zacina na 0000) + 8000h - bfffh: stranka VRAM modu 640x200x2 (4) 8000h - b77fh: zatim volno (2. stranka) b780h - b7ffh: drobne tabulky b800h - bfffh: font (ISO-8859-2, iso02.f08.pcf.gz z linuxu) Chvilku jsem zapasil s HTC, abych prekompiloval kernel od adresy 7000h a nakonec se vysledek dostavil. Dale jsem vytvoril bootstrap, ktery zinicializuje grafiku, vytvori vsechny pouzivane tabulky a font do druhe stranky VRAM, umisti prekompilovany kernel MZI od spravne adresy a spusti ho. Kompilace MZI je kompilovano ve dvou castech. Produkty obou kompilaci jsou pak spojeny a ve vyslednem MZF souboru umisteny za sebe. Nejprve bootstrap, po nem kernel. Vzhledem k nutnosti operace s VRAM je MZF nahravane od 2000h (pri zapnuti VRAM je primapovana na 1000h-1fffh CGROM). Kompilace byla zatim napsana pro Linux, ale lze ji jen s malym usilim prenest i do CP/M na Z80. Co uz to umi MZI je zatim naprosto nefunkcni, proto nic necekejte ;-) Je hotova pouze rutina pro tisk znaku (vcetne scrollovani obrazu, ted jen softwaroveho). Zaroven je vse (krome process.c) preportovane pro HTC, hardwarove-zavisle rutiny jsou vytazeny do mzcommon.c, ktere v soucasnosti obsahuje jen vypis znaku. Po startu je vypsan uvodni text a cely program se pak zrejme zasekne v metode kprintf(). Co tedy zbyva - projit process.c a upravit ho pro HTC (HTC pouziva jiny zpusob volani metod nez s jakym pocita UZI) - implementovat mzcommon.c (do tohoto souboru byla vytazena obsluha klavesnice, timeru, obrazu) - implementovat nejaky storage device - prevest vetsi casti do assembleru, cast kodu umistit do VRAM (zrejme filesys.c) - vsechno otestovat na nejake jiz prekompilovane UZI aplikaci (kde ji vzit?) Kdyztak to zkuste nekdo pustit na realnem Sharpu - vyvinul jsem to pod Linuxem a MCE, pozdeji testnul i na Windowsech v MZEmu. Melo by to vypsat uvodni dvouradkovy text a pak chaoticke znaky. tak zatim, Roman P.S.: Jeste ze bylo v sobotu tak hezky, ze jsem mel cas cely den stravit u pocitace. Nevim nevim, co bych delal, kdyby prselo ;-) (See attached file: mzi_016.mzf)(See attached file: mzi_016.zip)
Celé vlákno · 3 zprávy
Re: MZI - prvni pokus
Fuzzy SHARP MZ-800
Zobrazit citovaný text (6 řádků)
> Puvodni UZI by melo obsazovat hornich 32k RAM (8000h-FFFFh). > Abych pravdu > rekl, Hi-Tech C je rekordmanem pri kompilaci. Zakladni verze UZI se > prekompilovala na 35k !!, navic se zakomentovanymi ovladaci na SCSI a > HD. A > to neobsahovala zadny kod pro MZ.
Mozna je ted spravny okamzik na navrat k otazce kompilatoru C (alespon co se tyka prekladu jadra). Zkusim se podivat na velikost (a efektivnost) kodu generovaneho jinymi prekladaci. Dle me ty omezeni, co maji napr. z88dk nebo sdcc nejsou tak tragicka, aby se nedaly zvladnout - tedy opakuji - jen co se tyka jadra. Zde je - jak se zda - otazka velikosti generovaneho kodu kriticka. Fuzzy
Re: MZI - prvni pokus
Anonym SHARP MZ-800
No, zkusil jsem zkompilovat UZI i pomoci z88dk, ale vyhazovalo to dost chyb, takze jsem toho nechal. Mozna by se nekdo mohl tohohle problemu zhostit. Osobne bych pokracoval v rozbehnuti soucasne verze s HTC. Cecko pak muzeme vymenit kdykoli a kdyz tim ziskame dalsi volne misto, tim lepe... Koukal jsem na stranky Hi-Tech software a maji tam nejaky zrejme hodne dobry cross-compiler pro Z80. Umi generovat i kod bezici v nekolika pametovych strankach - pro prepinani stranek umi volat sluzby nadrizeneho systemu. Kdybychom nakonec meli tu strankovanou RAM, tohle by bylo naprosto super nejen na kompilace aplikaci, ale i kernelu samotneho..Problem je jen v tom, ze se jedna o komercni kompiler. Jeste poznamka: konecne se mi podarilo alespon spustit ten gcc-z80-cross-compiler. Generuje zhruba stejne obsahly kod jako HTC, ukazku prikladam. Ve spolupraci se z80asm (InterLogic) by se dal dokonce asi uz i v soucasnem stavu pro kompilaci pouzit. Problem je v tom, ze generuje nevalidni kod (vsimnete si 'ld hl,(ix+offset)'). Jsem v kontaktu s autorem toho Z80 patche, takze se to treba da jeste zachranit. R. V example souborech je dummy kod, ktery pocita od 0 do 8888. V tele cyklu je zavolana funkce na pricteni (ta neni soucasti, program nejde linkovat) a pak funkce na vystup na port. IMHO ma nejhezci vystup ZCC (z baliku z88dk). Kdyby jen nemelo ta omezeni. Budu se s tim snazit poprat... (See attached file: pokus.c)(See attached file: pokus_gcc.s)(See attached file: pokus_htc.as)(See attached file: pokus_zcc.asm) |---------+---------------------------> | | "Fuzzy | | | (sharpemupandor| | | a.cz)" | | | <martin.matyas | | | 23.09.2003 11:12| | | Odpovězte prosím| | | uživateli | | | "Konference | | | "Počítač SHARP | | | MZ-800 a | | | emulátory"" | | | | |---------+---------------------------> >------------------------------------------------------------------------------ -------------------------------------------------| | | | Komu: "Konference "Počítač SHARP MZ-800 a emulátory"" <sharpemupandora.cz> | | Kopie: | | Předmět: Re: MZI - prvni pokus | | | | | >------------------------------------------------------------------------------- ------------------------------------------------|
Zobrazit citovaný text (4 řádky)
> Puvodni UZI by melo obsazovat hornich 32k RAM (8000h-FFFFh). > Abych pravdu > rekl, Hi-Tech C je rekordmanem pri kompilaci. Zakladni verze UZI se > prekompilovala na 35k !!, navic se zakomentovanymi ovladaci na SCSI a >
HD. A
Zobrazit citovaný text (1 řádek)
> to neobsahovala zadny kod pro MZ.
Mozna je ted spravny okamzik na navrat k otazce kompilatoru C (alespon co se tyka prekladu jadra). Zkusim se podivat na velikost (a efektivnost) kodu generovaneho jinymi prekladaci. Dle me ty omezeni, co maji napr. z88dk nebo sdcc nejsou tak tragicka, aby se nedaly zvladnout - tedy opakuji - jen co se tyka jadra. Zde je - jak se zda - otazka velikosti generovaneho kodu kriticka. Fuzzy --