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


[2001 (19)] [2002 (10)] [2003 (90)] [2004 (20)] [2005 (9)] [2006 (7)] [2007 (31)] [2008 (7)] [2009 (51)] [2010 (62)] [2011 (50)] [2012 (25)]