OldComp.cz http://oldcomp.cz/ |
|
Ondra - tajomstvá programovania http://oldcomp.cz/viewtopic.php?f=47&t=8300 |
Stránka 1 z 1 |
Autor: | Martin1 [ 11.02.2020, 22:52 ] | ||
Předmět příspěvku: | Ondra - tajomstvá programovania | ||
Pred nedávnom som dostal od Stamila otázku, či je možné zistiť, ako je nastavený režim zobrazovania. Priznám sa, sám som si v prvej chvíli nebol istý, či to ide. Ale potom mi napadla myšlienka skúsiť zmerať takty medzi dvomi prerušeniami. Jedna horizontálna linka má 64us, čo je 128 taktov mikroporcesora. Maximálny počet nastaviteľných riadkov je 255. Pri zobrazovaní procesor nebeží, iba počas zatemnenia. Celkový počet TV riadkov je 312. Čiže meraním (teda správne počítaním) dostaneme rozdiel medzi číslom 312 a nastaveným počtom riadkov. Z toho sa matematicky dopočíta počet zobrazovaných riadkov. V reáli som nechal v cykle bežať počítadlo s fixnou dĺžkou 16T , ktoré skončí druhým prerušením. Počas jedného riadku napočíta 8 cyklov (128/16). V závere sa teda výsledok delí 8. Týmto testom sa dá otestovať kvalita emulátorov, utilitka zobrazuje napočítaný a nastavený počet riadkov (v hexa). https://sites.google.com/site/ondraspo186/download/9-2-rom-a-utility Počet liniek sa mení klávesami Enter a Space. Prosím dobrovoľníkov pre otestovanie na reálnom Ondrovi, lebo sa mi doma nedarí nájsť zdroj ani kábel k TV. Kód: ; prepare for test
TestInit: LD HL, TestFin ; jump address LD (0039h), HL ; prepare address for jump LD HL, 0038h ; INT38 vector LD (HL), 0C9h ; RET opcode LD C, 0C3h ; JP opcode LD DE, 0002h ; start with 2 (32T as noted later) EI ; enable interrupt HALT ; wait for interrupt ; now wait for VSYNC interrupt LD (HL), C ; 7T set JP nnnn opcode EI ; 4T enable int again NOP ; 12T dummy NOP NOP ; ; Sum 32T with RET (from INT) ; ; increment counter until INT re-triggered ; one line ~ 64uS = 128T (8*16T) ; every line is DE incermented 8-times TestLines: INC DE ; 6T increment counter JP TestLines ; 10T repeat ; ; Sum 16T ; ; now test is done, calculate lines TestFin: XOR A ; reset CY RR D ; divide by 8 to get number of lines RR E RR D RR E RR D RR E XOR A ; reset CY LD HL, 312 ; 312 TV lines SBC HL, DE ; calc real lines ; now real lines in DE
|
Autor: | Antony/DTA [ 12.02.2020, 00:27 ] |
Předmět příspěvku: | Re: Ondra - tajomstvá programovania |
V tom deleni je chyba (namiesto RR D má byť SRA D), ale ak je DE násobkom 8, tak sa neprejaví. |
Autor: | Martin1 [ 12.02.2020, 08:41 ] |
Předmět příspěvku: | Re: Ondra - tajomstvá programovania |
Antony/DTA píše: V tom deleni je chyba (namiesto RR D má byť SRA D), ale ak je DE násobkom 8, tak sa neprejaví. Správne by malo byť SRL D, ale keďže výsledok je len v registri E, tak je to nepodstatné. M1 |
Autor: | stamil [ 12.02.2020, 09:47 ] |
Předmět příspěvku: | Re: Ondra - tajomstvá programovania |
Ahoj, zkusil jsem to na reálném Ondrovi a po spuštění zmizí obraz a už se neobjeví. Ani klávesy Space a Enter s tím nic neudělají. Nezapomněl jsi tam zavolat out, který udělá Video ON? |
Autor: | Martin1 [ 12.02.2020, 22:56 ] |
Předmět příspěvku: | Re: Ondra - tajomstvá programovania |
stamil píše: Ahoj, zkusil jsem to na reálném Ondrovi a po spuštění zmizí obraz a už se neobjeví. Ani klávesy Space a Enter s tím nic neudělají. Nezapomněl jsi tam zavolat out, který udělá Video ON? Opravené, našiel som u Nobomiho ďalší bug v emulácii Z80, preto mi to v emulátore išlo, ale na ostrom HW nie. Vyskúšal som to na reálnom Ondrovi, počíta to (takmer) správne, je tam ešte nejaká malá dochýlka v pár taktoch, spôsobená pravdepodobne spozdením pri preberaní zbernice pri BUSRQ. Vyskúšal som ešte iný algoritmus, nechal som bežať NOP medzi dvomi prerušeniami (tým pádom bola presnosť 4T oproti 16T pri predošlom teste) a z rozdielu PC som vypočítal strojové cykly. M1 P.S. Odchýlka jeden riadok by mala byť správna, lebo hoci sa nastavuje na čítači hodnota FF, v skutočnosti je to 256 riadkov (i keď ten posledný nevidieť). |
Autor: | stamil [ 13.02.2020, 09:44 ] |
Předmět příspěvku: | Re: Ondra - tajomstvá programovania |
Zkusil jsem to a už to jede. A funguje to téměř přesně. max odchylka 1 řádek. To je hodně dobré. Díky |
Stránka 1 z 1 | Všechny časy jsou v UTC + 1 hodina [ Letní čas ] |
Powered by phpBB® Forum Software © phpBB Group http://www.phpbb.com/ |