Konference: Počítač SHARP MZ-800 a emulátory
Od: | Anonym |
Datum: | 22.9.2003 12:58 |
Předmět: | MZI - prvni pokus |
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)
Ostatní příspěvky vlákna:
[2003/1 (22)] [2003/2 (25)] [2003/3 (14)] [2003/4 (20)] [2003/5 (73)] [2003/6 (108)] [2003/7 (88)] [2003/8 (81)] [2003/9 (146)] [2003/10 (60)] [2003/11 (12)] [2003/12 (5)]
[1999 (1)]
[2000 (168)]
[2001 (733)]
[2002 (459)]
[2003 (654)]
[2004 (224)]
[2005 (105)]
[2006 (182)]
[2007 (201)]
[2008 (294)]
[2009 (363)]
[2010 (782)]
[2011 (522)]
[2012 (642)]
[2013 (442)]