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)

Připojené soubory:

mzi_016.mzf
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)]