Konference: Počítač SHARP MZ-800 a emulátory
Od: | Michal Hučík |
Datum: | 21.10.2009 10: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)]