Konference: Pro uzivatele a zajemce o Sord M5
Od: | +GAMA |
Datum: | 27.11.2003 14:26 |
Předmět: | Re: Re: SordM5 <->PC |
>tak som rozchodil SORD-a a pripojil k nemu externu klavesnicu. Asi by nebylo nezajimave vedet, jakym zpusobem - je to klasicka nahrada matice, vyrobena prodratovanim nejakych dostupnych tlacitek? >program M5mgf.exe na 1GHz procesore, tak som zistil, ze to nechodi. Procesor >nedodrzuje konstantnu dlzku pulzov. Je to sposobene cache-ovanim. To iste aj pre >loader. >Ak niekto vie poradit, ako na to, budem velmi rad. Podobny program (na "save" z PC image do 8-bit pocitace) psal ted Ing. Cimbal pro ZX Spectrum - nasleduji jeho poznamky, ktere k tomu napsal, snad z toho vyplyne, jak resi casovani, aby bylo co nejkorektnejsi. Zdrojak muzu poslat taky... JD <fwd> ---------------------------------------------------------------------- Ma to mene nez 1 KiB, chodi pod jakymkoli DOSem (pozor, DOSPROMPTy ve Windows si nenechaji vnutit prilis vysokou frekvenci TIMERu 0/kanal0, tam je proces umele zpomaleny a nepouzitelny), a mel by stihat i na 386SX-16 a mozna ze i 286/XT PS: Pro rypaly, hnidopichy a ZX-guru: Ano, casovani signalu bylo mirne pozmeneno (ucelove, aby byla minimalni frekvence IRQ0 a tedy nevadily 'hluche' cli-pasaze z puvodni DOSove casomiry). Preruseni klavesnice je vymaskovano zcela, a je pollovan port 60h (tentyz duvod). Graficky look byla puvodne z nouze ctnost - DOSove console i/o bylo prilis pomale ;). Na XT to patrne nepujde kvuli pomale DOSove casomire - po dobu jejiho trvani se 'propase' interrupt. Tuto casomiru je treba zignorovat (holt po dobu piskani se DOSu zastavi cas), tj. na offset 0294h dat 'EBh' misto puvodniho '73h'. > Jeden namet. Jak slozite by bylo doplnit prepinac (treba /t) > pro majitele Turbo ROM k nacitani zvysenou rychlosti ?? U > delsich souboru by to PODSTATNE urychlilo prenos ..... . Nijak zvlast. 'Realtime engine' je tvoreny kruhovym bufferem, jehoz polozky jsou ve tvaru [pocet dob][stav bitu, barva borderu]. Pocet dob neni primo v Z80-taktech, ale v jakychsi vetsich jednotkach - 'slices'. Kazdy slice se vyvola jeden interrupt IRQ0, a urci se, jestli jeste pockat, nebo zmenit bit a border a prejit na dalsi polozku. Pri prazdnem bufferu engine ceka a drzi posledni hodnotu, dokud do bufferu zase hlavni program nezacne davat polozky. Hlavni program naopak ceka, az bude v bufferu na nove polozky misto. Na konci bloku je vypocet zdrzen do okamziku vyprazdneni bufferu, aby zakazani preruseni pri pripadne diskove operaci neznicilo zaver signalu. 'slice' je urcen poctem tiku casovace (slc). Jedna Z80's T je 0.34092333 tiku casovace. Za slice jsem urcil opravdove maximum - 855 Z80's-T (tj. zero,sync=1slice, one=2slices, pilot=3slices), a tedy slc=291. Kazdych 65536 slices (ty se napocitavaji) se vyvola DOSova casomira, aby po dobu behu programu sly spravne hodiny. Pro turbo staci redefinovat konstanty v zahlavi (zvolit si nove slice, prepocitat podle nej slc, a vyjadrit si vsechny signalove prvky znovu jako celistve nasobky slice). slc = pocet tiku slice xlo = doba trvani nuly & barva, x=p(ilot), s(ync), z(ero), o(ne) nebo l(ead-out) xhi = doba trvani jednicky & barva bdp = pocet pilotnich pulzu pro 'body' - tj. flag >127 hdp = pocet pilotnich pulzu pro 'header' - tj. flag <128 Pak: nasm taptolpt.asm -o taptolpt.com ;). Pro odstrizeni casomiry prepsat radek 'jnc ire' na 'jmp short ire'.
Ostatní příspěvky vlákna:
[2003/1 (1)] [2003/2 (3)] [2003/3 (6)] [2003/4 (2)] [2003/5 (6)] [2003/6 (2)] [2003/9 (22)] [2003/10 (32)] [2003/11 (14)] [2003/12 (2)]