Autor Wątek: Timery i przerwania  (Przeczytany 5224 razy)

skrzyp

  • *
  • Wiadomości: 7
  • Miejsce pobytu:
    Kraków
Timery i przerwania
« dnia: 2016.09.26, 06:54:34 »
Cześć,

Szybkie pytanie i równie szybka odpowiedź (choć pewnie tylko w teorii).

Jakie mamy źródła przerwań w ZX Spectrum 128k, a także "ruskich klonach" jak ATM Turbo 2, Pentagon 1024, ZXEvo, poza v-blankiem?

Oraz, czy istnieją timery? Najfajniej byłoby podać na jakiś port wartość, która się dekrementuje i wywołuje IRQ po osiągnięciu 0, by nie obciążać procesora. Podobne bajery są w atarowskim POKEYu, ale tu chyba nie jest to tak oczywiste.

Zastanawiam się, bo być może będzie opcja na OS z preemptive multitasking dla maszyn ze 128k+ RAM, ale nic nie jest w 100% pewne.

ZX Freeq

  • *****
  • Wiadomości: 1833
  • Miejsce pobytu:
    Warszawa
Odp: Timery i przerwania
« Odpowiedź #1 dnia: 2016.09.26, 08:02:03 »
W oryginalnym ZX Spectrum jest jedno źródło przerwań, na początku ramki. (Dodatkowo przerwanie może "skakać" pod wybrany adres, aczkolwiek nie zupełnie dowolny.)
ZX80|ZX81+16kB+PandAY|ZX 48k/+/128k+/+2/+2A/+3/Vega/Next|QL+QIDE|JS128|Timex 2048+2040|UK2086|FDD3000+3.5''|AY|ZX HD|Divide2k11/2k14|DivMMC/PicoDivSD|BetaDisk 128|Opus|Masakrator FM|If 1/2/Microdrv|Multiface 1|+2A\B SDI-1|SJS 1/2|ZX Printer|TZXDuino|+3 HxC USB|ZXUno|Omni
Z88|A500/600|PC200|Ent128

skrzyp

  • *
  • Wiadomości: 7
  • Miejsce pobytu:
    Kraków
Odp: Timery i przerwania
« Odpowiedź #2 dnia: 2016.09.26, 09:36:14 »
No dobrze, to mnie nie rajcuje.

Potrzebuję jakiegoś innego odniesienia czasu które generuje przerwanie w określonym czasie lub co ustaloną liczbę cykli.

Wiem że ZXEvo ma zegarek, a niektóre klony posiadasją Z80 CTC. Niestety nie znam szczegółów, dlatego chciałbym by ktoś bardziej obeznany się wypowiedział.

Tygrys

  • Administrator
  • *****
  • Wiadomości: 4537
  • Miejsce pobytu:
    Warszawa
  • mistrz ceremonii
Odp: Timery i przerwania
« Odpowiedź #3 dnia: 2016.09.26, 12:01:22 »
W przypadku ZX Spectrum to chyba wszystko zostało już powiedziane ;-)

Co do klonów, to ich programowanie i ficzery są kompeletnie niezwiązane z ZXem. Więcej informacji o ZX Evolution z TS-Confem zawarłem w odpowiednim wątku w odpowiednim dziale

skrzyp

  • *
  • Wiadomości: 7
  • Miejsce pobytu:
    Kraków
Odp: Timery i przerwania
« Odpowiedź #4 dnia: 2016.09.26, 13:52:56 »
Są, bo są to klony kompatybilne, przynajmniej te o których mówię.
Co do TSConfa to już się dowiedziałem, że ma timery, przerwanie na DMA, hblanki, vblanki, cuda wianki. A jak coś to mogą wprowadzić poprawki dla mnie.

Inna rzecz, że dostałem od Alone Codera procedury schedulera wielozadaniowości z wywłaszczeniem… właśnie na VBlank. Czego to Rosjanie nie wymyślą :)

Aktualnie siedzę w robocie to nie przestudiuję kodu, ale w domu muszę się za to zabrać, bo jest pełen dziwnych dziwności i komentarzy po wschodniemu :>

trojacek

  • *****
  • Wiadomości: 6831
  • Miejsce pobytu:
    Warszawa
Odp: Timery i przerwania
« Odpowiedź #5 dnia: 2016.09.28, 03:04:05 »
No dobrze, to mnie nie rajcuje.

Potrzebuję jakiegoś innego odniesienia czasu które generuje przerwanie w określonym czasie lub co ustaloną liczbę cykli.

Wiem że ZXEvo ma zegarek, a niektóre klony posiadasją Z80 CTC. Niestety nie znam szczegółów, dlatego chciałbym by ktoś bardziej obeznany się wypowiedział.

Jak chcesz zrobić wielowątkowy system operacyjny dla Spectrum, to zaprojektuj interfejs z pamięcią ROM oraz kością CTC :)
Ta ostatnia może przy okazji służyć jako bardzo prosty interfejs myszy. W podobny sposób zbudowany jest oryginalny interfejs AMX Mouse.

skrzyp

  • *
  • Wiadomości: 7
  • Miejsce pobytu:
    Kraków
Odp: Timery i przerwania
« Odpowiedź #6 dnia: 2016.09.28, 05:53:37 »
Okazuje się, że towarzysze radzieccy mają nawet dwa Timery w EVO jak i Pentagonie/ATM, rozwiązane dość fajnie. I to z maską.
Wyjaśnienie im czego potrzebowałem zajęło mi ponad 24 godziny, ale w końcu zrozumieli, dostałem nawet źródłami po głowie.