OldComp.cz

Komunitní diskuzní fórum pro fanoušky historických počítačů


Právě je 28.03.2024, 16:30

Všechny časy jsou v UTC + 1 hodina [ Letní čas ]




Odeslat nové téma Odpovědět na téma  [ Příspěvků: 6 ] 
Autor Zpráva
 Předmět příspěvku: Ondra - tajomstvá programovania
PříspěvekNapsal: 11.02.2020, 22:52 
Offline
Profík

Registrován: 06.02.2019, 11:47
Příspěvky: 898
Has thanked: 51 times
Been thanked: 230 times
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


Přílohy:
Ondra-lines.GIF
Ondra-lines.GIF [ 1.92 KiB | Zobrazeno 5669 krát ]
Nahoru
 Profil  
 
 Předmět příspěvku: Re: Ondra - tajomstvá programovania
PříspěvekNapsal: 12.02.2020, 00:27 
Offline
Radil

Registrován: 18.10.2014, 23:10
Příspěvky: 377
Has thanked: 28 times
Been thanked: 120 times
V tom deleni je chyba (namiesto RR D má byť SRA D),
ale ak je DE násobkom 8, tak sa neprejaví.


Nahoru
 Profil  
 
 Předmět příspěvku: Re: Ondra - tajomstvá programovania
PříspěvekNapsal: 12.02.2020, 08:41 
Offline
Profík

Registrován: 06.02.2019, 11:47
Příspěvky: 898
Has thanked: 51 times
Been thanked: 230 times
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


Nahoru
 Profil  
 
 Předmět příspěvku: Re: Ondra - tajomstvá programovania
PříspěvekNapsal: 12.02.2020, 09:47 
Offline
Kecálek

Registrován: 26.01.2019, 18:45
Příspěvky: 99
Bydliště: u Mělníka
Has thanked: 7 times
Been thanked: 240 times
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?


Nahoru
 Profil  
 
 Předmět příspěvku: Re: Ondra - tajomstvá programovania
PříspěvekNapsal: 12.02.2020, 22:56 
Offline
Profík

Registrován: 06.02.2019, 11:47
Příspěvky: 898
Has thanked: 51 times
Been thanked: 230 times
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ť).


Nahoru
 Profil  
 
 Předmět příspěvku: Re: Ondra - tajomstvá programovania
PříspěvekNapsal: 13.02.2020, 09:44 
Offline
Kecálek

Registrován: 26.01.2019, 18:45
Příspěvky: 99
Bydliště: u Mělníka
Has thanked: 7 times
Been thanked: 240 times
Zkusil jsem to a už to jede. A funguje to téměř přesně. max odchylka 1 řádek. To je hodně dobré.
Díky


Nahoru
 Profil  
 
Zobrazit příspěvky za předchozí:  Seřadit podle  
Odeslat nové téma Odpovědět na téma  [ Příspěvků: 6 ] 

Všechny časy jsou v UTC + 1 hodina [ Letní čas ]


Kdo je online

Uživatelé procházející toto fórum: Žádní registrovaní uživatelé a 5 návštevníků


Nemůžete zakládat nová témata v tomto fóru
Nemůžete odpovídat v tomto fóru
Nemůžete upravovat své příspěvky v tomto fóru
Nemůžete mazat své příspěvky v tomto fóru
Nemůžete přikládat soubory v tomto fóru

Hledat:
Přejít na:  
cron
Založeno na phpBB® Forum Software © phpBB Group
Český překlad – phpBB.cz