Avatar

Zvažte možnost registrace, zatím jste zde jako
HOST

sp_LogInOutPřihlásit sesp_Registration Registrovat
No permission to create posts
RSS sp_TopicIcon
HLAS - Prográmek na syntézu řeči přes pípák
17/02/2018 - 18:46
Avatar
MilasPce
Pardubice

čítac 2 nastavuješ s konstantou 210 to je 1,19 MHz /210= 5,66kHz.

Když pak testuješ v proceduře waitone na 5-tém bitu úroveň a čekáš na změnu stane se tak za 0,00017 sec. tak to ani nemůžeš postřehnout že se něco stalo.

Praxe znamená, že vše funguje, ale nevíme proč. Teorie znamená, že vše víme, ale nic nefunguje.

Někdy je teorie spojena s praxí. Znamená to, že nic nefunguje a nikdo neví proč ...

17/02/2018 - 19:12
Avatar
MilasPce
Pardubice

MilasPce napsal(a)
je mi divný že waitc čeká počet cyklů v CX, když v podprogramu waitc se do registru CX vůbec nezasahuje.  

Aha CX snižuje instrukce LOOP tak to je dobře.

Praxe znamená, že vše funguje, ale nevíme proč. Teorie znamená, že vše víme, ale nic nefunguje.

Někdy je teorie spojena s praxí. Znamená to, že nic nefunguje a nikdo neví proč ...

18/02/2018 - 12:15
Avatar

MilasPce napsal(a)
čítac 2 nastavuješ s konstantou 210 to je 1,19 MHz /210= 5,66kHz.

Když pak testuješ v proceduře waitone na 5-tém bitu úroveň a čekáš na změnu stane se tak za 0,00017 sec. tak to ani nemůžeš postřehnout že se něco stalo.  

Nefunguje to ani když nastavím countdown 65535 což je těch 18,2Hz. Chyba bude někde jinde. Buď dělám něco špatně, nebo je to tak neobvyklé použití, že ho DosBox nepodporuje. Nemám teď bohužel prostor abych vytáhnul svou krásnou 386-ku a vyzkoušel to na ní.

18/02/2018 - 13:51
Avatar
Praha

Pošli přeloženej com soubor a já to checknu. Mám tady na stole svou 386, takže stačí jen zapnout...

Powerack ©1982 - 20??

Sestava pro testování ISA a PCI karet:
MB: GigaByte GA-586HX CPU: Intel Pentium-MMX 233 MHz (takt 200 MHz) RAM: 192 MB (6x 32 MB EDO 60ns) 
HDD: 4 GB CF 133x Video: ATI Rage XL 8 MB Sound: SB AWE64 Net: 3Com 3C905B-TX

18/02/2018 - 20:36
Avatar
MilasPce
Pardubice

No myslím, že ani když to bude 18,2Hz tak si ani nevšimneš že ten prográmek čekal bo je to 0,05sec.

Praxe znamená, že vše funguje, ale nevíme proč. Teorie znamená, že vše víme, ale nic nefunguje.

Někdy je teorie spojena s praxí. Znamená to, že nic nefunguje a nikdo neví proč ...

18/02/2018 - 21:15
Avatar
MilasPce
Pardubice

Nejlepší bude nastudovat jak přes DOS službu INT 21 a její funkce 35h a 25h (get interrupt vector, set interrupt vector) si přesměrovat obsluhu přerušení (nejlépe softwarovou 1C) na sebe a pak stačí mít jednu proměnnou, kterou budeš ve vlastní obsluze přerušení 18,2x za sec. třeba inkrementovat.

V hlavním programu pak budeš čekat až dosáhne určité hodnoty (pak ji vynuluješ pro znovu počítání).

Hlavně nezapomenout na konci programu vrátit pomocí Set interrupt vector obsluhu zpátky na původní hodnotu.

PS: je dobré ve vlastním obslužném programu volat ten původní podprogram, co když nějaký software si to již přesměroval.

PPS: Assembler pro PC jsem si vytáhl před mnoha lety jako otázku u maturity.

Praxe znamená, že vše funguje, ale nevíme proč. Teorie znamená, že vše víme, ale nic nefunguje.

Někdy je teorie spojena s praxí. Znamená to, že nic nefunguje a nikdo neví proč ...

18/02/2018 - 22:06
Avatar

Powerack napsal(a)
Pošli přeloženej com soubor a já to checknu. Mám tady na stole svou 386, takže stačí jen zapnout...  

Nedaří se mi to připojit sem, tak jsem to dal na github:

https://github.com/berk76/hlas/releases/tag/version_1.0.0

Je to v tom souboru Test.zip. Pokud to zafunguje tak se vrátí hned zpátky do příkazové řádky. Pokud ne tak zamrzne.

Tak to pro zajímavost vyzkoušej.

Díky

18/02/2018 - 22:09
Avatar

@MilasPce asi máš pravdu a povede to na to co popisuješ. Bude to pro mě ale trochu maturita :-)

19/02/2018 - 09:55
Avatar
Praha

Do souboru test.zip jsi dal asi špatnej com soubor. 66B místo 921B.

Powerack ©1982 - 20??

Sestava pro testování ISA a PCI karet:
MB: GigaByte GA-586HX CPU: Intel Pentium-MMX 233 MHz (takt 200 MHz) RAM: 192 MB (6x 32 MB EDO 60ns) 
HDD: 4 GB CF 133x Video: ATI Rage XL 8 MB Sound: SB AWE64 Net: 3Com 3C905B-TX

19/02/2018 - 10:44
Avatar
MilasPce
Pardubice

Tady je trošku srozumitelnej příklad na obsluhu přerušení:

http://faculty.kfupm.edu.sa/COE/aimane/assembly/pagegen-143.aspx.htm

Praxe znamená, že vše funguje, ale nevíme proč. Teorie znamená, že vše víme, ale nic nefunguje.

Někdy je teorie spojena s praxí. Znamená to, že nic nefunguje a nikdo neví proč ...

19/02/2018 - 20:39
Avatar

Powerack napsal(a)
Do souboru test.zip jsi dal asi špatnej com soubor. 66B místo 921B.  

V tom com-u není celej program hlas, je to jen izolovaná část kódu co mi nefunguje. Zajímá mě jen zda na železe taky vythuhne nebo zda se vrátí do příkaz. řádky.

19/02/2018 - 20:40
Avatar

MilasPce napsal(a)
Tady je trošku srozumitelnej příklad na obsluhu přerušení:

http://faculty.kfupm.edu.sa/COE/aimane/assembly/pagegen-143.aspx.htm  

Nevím proč, ale odkaz mi nefunguje. Zkusím ještě později jestli se nerozeběhne.

19/02/2018 - 20:46
Avatar
MilasPce
Pardubice

už mi taky nefunguje, dneska mám na odkazy špatnej den.

Praxe znamená, že vše funguje, ale nevíme proč. Teorie znamená, že vše víme, ale nic nefunguje.

Někdy je teorie spojena s praxí. Znamená to, že nic nefunguje a nikdo neví proč ...

21/02/2018 - 17:32
Avatar

Tak mám první upravenou verzi.

Nainstaloval jsem vlastní interrupt handler jak navrhoval MilasPce a nastavil mu custom frekvenci. Původní kód založený na měření rychlosti cpu jsem vykostil.

https://github.com/berk76/hlas/blob/master/hlas.asm

Binárka je k dispozici zde. (hlas.com je původní verze, hlas_2.com je upravená)

https://github.com/berk76/hlas/releases/tag/version_1.0.0

V DosBoxu to funguje dobře, ale nedokážu otestovat na reálném železe a porovnat různě rychlé pc-čka.

Pokud to někdo dokážete otestovat a porovnat tak dejte vědět.

21/02/2018 - 18:32
Avatar
MilasPce
Pardubice

Dobrá práce, koukám, že příští soutěž v programovaní bude v asembleru. Zítra to zkusím na mašině.

Praxe znamená, že vše funguje, ale nevíme proč. Teorie znamená, že vše víme, ale nic nefunguje.

Někdy je teorie spojena s praxí. Znamená to, že nic nefunguje a nikdo neví proč ...

21/02/2018 - 19:22
Avatar
MilasPce
Pardubice

Ještě promysli zda je nutné v rutině int_h schovávat a pak obnovovat všechny registry asi by tam šlo nějaký čas ušetřit. Třeba BX CX DX SI když se tak děje 22000 za sec. tak by to pomalým PC dost ulevilo. 

Praxe znamená, že vše funguje, ale nevíme proč. Teorie znamená, že vše víme, ale nic nefunguje.

Někdy je teorie spojena s praxí. Znamená to, že nic nefunguje a nikdo neví proč ...

21/02/2018 - 19:32
Avatar

Máš samozřejmě pravdu. Naopak by bylo vhodné sejvnout flagy.

21/02/2018 - 20:46
Avatar

berk napsal(a)
Máš samozřejmě pravdu. Naopak by bylo vhodné sejvnout flagy.  

IRET pops from stack: IP,CS and flags.

Takže flagy jsou sejvnutý v přerušení automaticky.

22/02/2018 - 21:57
Avatar

Tak jsem vykrámoval železo a otestoval.

  • Na 386 40Mhz fungují obě verze dobře
  • Na PIII je verze 1 zcela nepoužitelná, verze 2 funguje stejně dobře jako na 386

https://github.com/berk76/hlas/releases

Mission complete :-)

No permission to create posts
Časové pásmo: Europe/Prague

Nejvíce uživatelů online: 67

Právě online:
9 Host(é)

Právě prohlíží tuto stránku:
1 Host(é)

Nejaktivnejší uživatelé:

LubikCZ: 2061

Sany: 1486

Neny: 1133

MilasPce: 835

Logout: 688

Clous: 638

Statistiky uživatelů:

Hosté: 14

Členové: 405

Moderátoři: 0

Administrátoři: 1

Statistiky fóra:

Skupiny: 5

Fóra: 24

Témata: 1037

Příspěvky: 16510

Nejnovější uživatelé:

OnlySoft, tommel, JIVA, Rocys, zetora, wylda, BobocoCZ, okband, Popy, pov, verticalbytes, Mircea Ion, Jpx72, OlegBoums, Brettnok

Administrátoři: Sledge: 4078