Konference: Počítač SHARP MZ-800 a emulátory

Od: Michal Hučík
Datum: 21.10.2009 13:14
Předmět: Unikarta s SD pro Sharpa

Unikarta s SD pro Sharpa:

Ok, takze kdyz uz se to takhle predcasne proflaklo, tak zkusim popsat na cem
 tedy s Vaskem delame a jake by mely byt cile projektu:

Univerzalni karta pripojena do Sharpa by mela obsahovat CPLD, SRAM, AVR
(momentalne ATmega64, ale asi to zvladne i ATmega16), SD kartu, MAX232, pripadne
jeste nejaky RTC - ten jsem k tomu jeste nepripojil. 

V tomto zapojeni tedy nyni mame zprovozneno nasledujici:


RAMdisk:
========
V podstate muze byt libovolne velky, ale rostou s tim naroky na CPLD. Posledni
funkcni varianta s 512KB SRAM vyzadovala minimalne XC9572 ... nicmene tohle
hradlove pole jsem vcera nejakym zpusobem odbouchnul a tak jsem dnes pripajel
XC95144 a dale budu experimentovat s nim, takze pak zkusim na soucasnou SRAM
pripajet treba jeste dalsich 3x512K a ziskame tim 2MB RAMdisk.


SD repozitar:
==========
SD karta je pripojena k AVR ATmega64 s R/W podporou FAT32. Momentalne velmi
jednoduse navrzene ovladani, kdy jsem port 0x50 vyclenil pro prikazy a port 0x51
pro prenos dat.
Nechtel jsem to jeste zatezovat zadnymi komunikacnimi standardy, takze prozatim 
je mozne jen to, ze si Sharp rekne o nejaky MZF soubor a dostane ho.
Casem predpokladam nejaky shell k prochazeni FAT32 napr. cp/m, hack BASICu, tak 
aby CMT operace pracovaly s MZF na SD karte. 


ROMdisc BOOT:
=============
Karta se na portech 0xf8 - 0xfa chova i jako RAM disk ze ktereho se Sharp snazi 
nabootovat, pricemz je mu z AVR podstrcen cca 100 bajtovy loader, ktery si z SD 
natahne soubor boot.mzf a spusti jej.


FDC emulator:
============
Nejedna se o striktni emulaci WD279x. AVR si z SD otevre DSK soubor ve kterem
dle pozadavku Sharpa na radic seekuje. Status registr emulovaneho FDC jsem
prizpusoboval predevsim tomu co se v nem v programech ocekava, takze jsem si tu 
musel disassemblovat a odkrokovat vetsinu FD rutin, ktere se na Sharpu vyskytuji
(diky Zdenkovu emulatoru ;) a na sve si prisel i logicky analyzer pripichnuty je
skutecnemu radici. Vysledkem je to, ze napr. tam kde jsem odsledoval, ze program
po odeslani nejakeho prikazu do FDC ocekaval nejakou dobu BUSY, pak READY, pak
zase BUSY + DRQ, tak proste pri prvnim dotazu na status odpovim jednim stavem a 
pri dalsim dotazu druhym, atd. Presne tak, aby se cteci program mohl ve sve
cinnosti posunout k dalsimu kroku. Vyrazenim techto prodlev jsem docilil toho,
ze napr. cp/m z SD startuje cca o 2 sekundy rychleji, nez ze skutecne FD
mechaniky. Pro zajimavost: vyjimkou je tady  start cp/m v1.4 a nizsich, kdy si
Lamacuv loader na nulte stope vyzada neexistujici sektor 0x10 a cte status
registr cca 5000x - pokud po tuto dobu dostane v odpovedi neco jineho, nez SEEK 
ERR, tak se to vzdy projevi nezadoucim zpusobem...
Vcera jsem hackoval cp/m v4.0 a 4.1, abych zprovoznil i podporu HD disket. V
pripade HD disket probiha prace s FDC trochu jinak a musel jsem AVR pripojit
dalsim pinem na sbernici, aby jsme mohli Sharpu posilat i pozadavky na
interrupt. Cteni disket jsem sice zprovoznil,  nicmene neco mi po nejake dobe
odbouchnulo Xilinxe a mozna uz i tusim co...
K emulaci prikazu pro zapisovani sektoru jsem zatim jeste nedostal, nicmene
prikazy pro formatovani bych asi uplne vynechal, protoze mi prijde jednodussi a 
rychlejsi pozadat rovnou AVR o prepsani DSK image.

BTW: co se tyka HD disket, tak jejich DSK image jsem stahnul na scavu ze sekce
UPLOAD. Chtel bych se zeptat kdo to tam uploadnul a predevsim cim ty image byly 
vyrobeny, protoze je v nich vadna tabulka stop. Ve Zdenkovem emulatoru takovy
image sice funguje, protoze ten si zrejme udela analyzu souboru a vytvori si
vlastni tabulku stop, ovsem na AVR si tohle dovolit nemuzeme.


Dalsi funkce:
==========
MAX232 je prevodnik pro RS232, ktery mi momentalne slouzi jako vzdaleny shell a 
ke sledovani debugovacich hlasek z AVR. Casem by samozrejme mohl fungovat jako
skutecny RS232 pro Sharpa.
Zadny RTC jsem do zatim jeste nepripojil, ale bylo by faln, kdyby Sharp po
zapnuti vedel kolik je hodin. Zaroven by se casovy udaj z RTC pouzil jako casovy
atribut zmenenych, ci nove vytvarenych souboru FAT32.


Uvaha do budoucna:
=================
Take zvazujeme i takovou variantu teto univerzalni desky, ktera by v sobe mela i
scandoubler. To by uz ovsem vyzadovalo nejaky FPGA a tim padem by jsme ze
schematu asi vyhodili CPLD i AVR, protoze FPGA by v pohode zastal jejich funkci 
(no, kdyz na to prijde, tak by dokazalo zastat i funkci celeho Sharpa :).

Protoze by jsme s Vaskem byli moc radi, kdyby cele tohle nase snazeni neskoncilo
jen na stolech u nas dvou, tak chceme v brzke dobe cely projekt zverejnit treba 
na sourceforge a budeme moc radi, kdyz se take zapojite do vyvoje.

Michal

Ostatní příspěvky vlákna:

 
[2009/1 (32)] [2009/3 (21)] [2009/4 (42)] [2009/5 (6)] [2009/8 (9)] [2009/9 (28)] [2009/10 (50)] [2009/11 (86)] [2009/12 (89)]


[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)]