forum speccy.pl

Komputery z Z80 => ZX81 => Wątek zaczęty przez: KWF w 2018.01.21, 21:51:26

Tytuł: Benchmark ZX81
Wiadomość wysłana przez: KWF w 2018.01.21, 21:51:26
Mam prośbę o pomoc i proponuję odrobinę zabawy. Potrzebny jest ZX81 (dowolny, emulator odpada) i stoper. Należy wykonać załączony pogram w Basicu trybie trybie "SLOW" i "FAST", a wynikami podzielić się na forum.

Kod programu:
10 FOR I=1 TO 200
15 CLS
20 PRINT "ABCDEFGHIJKLMNOP"
30 PRINT I
40 NEXT I

Wyniki proszę przedstawiać w formie:

ZX81, ilość RAMu:
1. SLOW: czas
2. FAST: czas
Tytuł: Odp: Benchmark ZX81
Wiadomość wysłana przez: Tygrys w 2018.01.22, 13:25:08
Jeżeli to nie jest pilne, to we wtorek mogę pomierzyć czasy wykonywania się tychże programów.

Tytuł: Odp: Benchmark ZX81
Wiadomość wysłana przez: KWF w 2018.01.22, 13:36:26
Ależ, nie jest pilne. Zbieram dane, bo testy na dwóch maszynach nie są miarodajne. Sprawdzam dwa pomysły i przydałaby się pula porównawcza. Inny czas będzie jak ktoś ma 1KB RAMu a inne przy 16KB. TS1000 da inne wyniki niż ZX81. Ważne aby opisać, czy były jakieś modyfikacje robione w danym egzemplarzu.
Tytuł: Odp: Benchmark ZX81
Wiadomość wysłana przez: ZX Freeq w 2018.01.22, 15:21:55
Mogę odpalić na dwóch ZX81, na ZX80 też pójdzie? :D
Tytuł: Odp: Benchmark ZX81
Wiadomość wysłana przez: tooloud w 2018.01.22, 15:32:27
mam te co w opisie czyli ZX81 i T1000 - oba tylko composite mod, pamięciowo 1k, mogę im podłączyć 16k oraz ZX Pand - ale serio jakieś różnice będą?
Tytuł: Odp: Benchmark ZX81
Wiadomość wysłana przez: KWF w 2018.01.22, 15:50:02
Te 5 linijek powinno pójść, w końcu to tylko goły BASIC. Chociaż ZX80 jest poza kregiem zainteresowań. Poza tym jeżeli masz oryginalnego ZX80 z ROMem 4KB, to nie ma komend SLOW i FAST.

Załączony program w formacie .p jest dokładnie tym z listingu. Snapshot bym robiony na maszynie z 16KB RAM, więc nie pójdzie na tych z mniejszym RAMem.

Wyjście kompozytowe nie ma znaczenia. RAM oraz tryb w jakim pracuje ULA (PAL/NTSC) mają dość spore.
Tytuł: Odp: Benchmark ZX81
Wiadomość wysłana przez: romeks w 2018.01.22, 17:01:20
ZX81 1KB RAM.
1. SLOW: 110 sek.
2. FAST: 28 sek.
Tytuł: Odp: Benchmark ZX81
Wiadomość wysłana przez: Maryjan w 2018.01.22, 18:42:58
ZX 81 z 1 kb RAM
- slow -1 min 52,81 sek.
- fast - 28,30 sek.

Timex 1000 z 16 kb RAM wewnętrznym
- slow - 3 min
- fast - 43,30 sek

W obydwóch mam tą samą ULA 2C210E
Tytuł: Odp: Benchmark ZX81
Wiadomość wysłana przez: KWF w 2018.01.22, 19:17:43
Dzięki :)

Mariansss, czy tego TS1000 masz przerobionego na CVS, czy nadal w pełni NTSC z modulatorem?
Tytuł: Odp: Benchmark ZX81
Wiadomość wysłana przez: zipp w 2018.01.22, 19:51:10
ZX81 1KB RAM
- SLOW: 111 sek.
- FAST: 28 sek.

ZX81 16KB RAM (zewnętrzny TS 1016)
- SLOW: 181 sek.
- FAST: 45 sek.

TS1000 2KB RAM
- SLOW: 171 sek.
- FAST: 28 sek.

TS1000 16KB RAM (zewnętrzny TS 1016)
- SLOW: 277 sek.
- FAST: 45 sek.
Tytuł: Odp: Benchmark ZX81
Wiadomość wysłana przez: Maryjan w 2018.01.22, 20:56:06
Dzięki :)

Mariansss, czy tego TS1000 masz przerobionego na CVS, czy nadal w pełni NTSC z modulatorem?

Przerobiony na CVS.
Tytuł: Odp: Benchmark ZX81
Wiadomość wysłana przez: ZX Freeq w 2018.01.22, 20:59:06
U mnie bez niespodzianek i stabilnie:

ZX81 1KB RAM
-SLOW: 1:51.74
-FAST: 0:28.15

ZX81 1KB RAM (inny egzemplarz - tak samo)
-SLOW: 1:51.68
-FAST: 0:28.06

ZX81 + 16KB RAM (standardowy ZX 16K RAM PACK)
-SLOW: 3:00.43
-FAST: 0:45.01

ZX81 + ZX-PAND:
-SLOW: 3:00.19
-FAST: 0:45.00

I na koniec, taka ciekawostka, oryginalny ZX80. Oczywiście tam nie ma SLOW i FAST, program wykonuje się bez aktualizacji ekranu, a więc można uznać, że FAST?
0:01.72!
I tak samo z podpiętym 16KB do szyny.


Wszystkie kompy uruchamiane na tym samym zasilaczu, jeśli to ma jakieś znaczenie.
Tytuł: Odp: Benchmark ZX81
Wiadomość wysłana przez: KWF w 2018.01.22, 22:20:51
Zasilanie nie ma znaczenia, o ile wydoli pociągnięcie Zeddiego.

Zrobię zestawienie pod koniec tygodnia, oraz dorzucę wyniki moich maszynek.

ZX81 16KB RAM (wewn.)
- SLOW: 180 sek.
- FAST: 44 sek.
Tytuł: Odp: Benchmark ZX81
Wiadomość wysłana przez: KWF w 2018.01.23, 21:14:16
Informacja dla tych co chcieliby przyspieszyć swoje TS1000: wystarczy wylutować rezystor R30 (10R). ULA przejdzie w tryb generowania obrazu w systemie PAL, a BASIC ruszy z kopyta :)
Tytuł: Odp: Benchmark ZX81
Wiadomość wysłana przez: pear w 2018.01.24, 06:09:14
Przy okazji obraz zrobi się mniej rozciągnięty w pionie.
Tytuł: Odp: Benchmark ZX81
Wiadomość wysłana przez: zipp w 2018.01.24, 18:58:32
TS1000 po przełączeniu na PAL wykonuje test o 1/3 szybciej w trybie SLOW, czyli w takim samym czasie jak ZX81.
Testowane bez i z pamięcią zewnętrzną (TS1016 i ZXpand).
Tytuł: Odp: Benchmark ZX81
Wiadomość wysłana przez: PABB w 2018.01.24, 20:57:57
... tak dla sportu zrobiłem test na ZXMore V2 - w dwóch trybach 3.25MHz i 6.5 MHz. Byłem przekonany, że nie zdążę nawet włączyć stopera, ale ZXMore pokazał mi środkowy palec :)

Tryb ZX81 (3.25MHz) - 2:24:9
Tryb ZX81 (6.5MHz) - 1:10:49

Różnica wydajności wydaje się wynikać z różnicy w zegarze...

Próba uruchomienia trybu SLOW/FAST kończy się odpowiednio... niczym (SLOW) lub wyłączeniem obrazu (FAST) :)
Tytuł: Odp: Benchmark ZX81
Wiadomość wysłana przez: KWF w 2018.01.25, 02:44:57
W trybie FAST nie ma odświeżania obrazu, aż do końca wykonania programu.

ZX81 więc i ZXmore włączają tryb SLOW jako domyślny, po teście pamięci po starcie/reszcie ZX81. W skrócie ZX81 startuje w trybie FAST, wykonuje test RAMU, przełącza się w tryb SLOW i wyrzuca kursor "K" na ekran. Włączając tryb FAST należy uzbroić się w cierpliwość. Odpalić stoper i czekać ;) Swoją drogą, to zjawisko można wykorzystać jako tester ZX81.

Dla posiadaczy ZX81 i TS1000 jest jeszcze jedna opcja zyskania dodatkowych 10%. Polega ona na eliminacji wstrzymania Z80 (/WAIT) przy każdym wywołaniu /NMI. Potrzebny jest dodatkowy  tranzystor PNP (BC558B/C czy 2N3906) oraz rezystor 10k. Modyfikacja nosi nazwę "no-wait".

Inna możliwością jest tzw. Clock Doubler, automatycznie włączając się (Z80 taktowany x2) kiedy tylko można. Do jego zbudowania potrzeba ok 8 układów TTL. Moim zdaniem gra nie jest warta świeczki.
Tytuł: Odp: Benchmark ZX81
Wiadomość wysłana przez: romeks w 2018.02.20, 22:29:07
Po rozbudowie do 16 kB.
SLOW 180 sek.
FAST 45 sek.
Tytuł: Odp: Benchmark ZX81
Wiadomość wysłana przez: ZbyniuR w 2018.02.21, 17:05:29
Dopiero teraz do mnie dociera że jest coś takiego jak FAST i SLOW w ZX81, i zastanawia mnie w jakim trybie był robiony test liczb pierwszych w BASICu z tego wątku:

http://www.speccy.pl/forum/index.php?topic=2715.msg37814#msg37814

Można by w linii 70 dopisać średnik na końcu, aby więcej liczb zostało na ekranie. :)
Tytuł: Odp: Benchmark ZX81
Wiadomość wysłana przez: KWF w 2018.02.22, 00:08:39
Dopiero teraz do mnie dociera że jest coś takiego jak FAST i SLOW w ZX81, i zastanawia mnie w jakim trybie był robiony test liczb pierwszych w BASICu z tego wątku:

http://www.speccy.pl/forum/index.php?topic=2715.msg37814#msg37814

Można by w linii 70 dopisać średnik na końcu, aby więcej liczb zostało na ekranie. :)

W trybie "SLOW", czyli z odświeżaniem ekranu.
Tytuł: Odp: Benchmark ZX81
Wiadomość wysłana przez: ZbyniuR w 2018.02.22, 01:15:27
Czyli podsumowując:
FAST na PAL i NTSC są równie szybkie.
SLOW na PAL jest 4 razy wolniejszy niż FAST.
SLOW na NTSC jest 6 razy wolniejszy niż FAST.
z większym RAMem w obu trybach jest o ok 63% wolniej niż z małym. (czyli razy 1.63)

Pierwsze słyszę by komp w NTSC był wolniejszy niż w PAL, albo by dodanie pamięci go spowalniało.
Jak to wytłumaczyć?
Tytuł: Odp: Benchmark ZX81
Wiadomość wysłana przez: matofesi w 2018.02.22, 08:57:18
@ZbyniuR Co do pamięci się nie wypowiem, ale różnica między SLOW w PAL i NTSC jest prosta do wytłumaczenia - w NTSC masz większą częstotliwość odświeżania a co za tym idzie procesorowi w ciągu sekundy znacznie więcej czasu zajmuje "narysowanie" ekranu. Tryb SLOW działa w ten sposób, że na wykonanie programu zostaje ten kawałek czasu, kiedy procesor nie "odrysowuje" ekranu, czyli zasadniczo górna i dolna ramka. Można by kombinować i przeliczać dokładnie jaka jest różnica w długościach, ale podejrzewam, że wynik będzie zbliżony do tego co tu zostało zaobserwowane :)
Tytuł: Odp: Benchmark ZX81
Wiadomość wysłana przez: KWF w 2018.02.22, 09:00:28
A to nie tak, że ULA "rysuje" ramki na podstawie danych odczytanych przez procesor, a procesor w nagrodę jest karmiony NOP-ami? W każdym razie, tworzenie obrazu zostawia niewiele czasu na coś uzytecznego.
Tytuł: Odp: Benchmark ZX81
Wiadomość wysłana przez: matofesi w 2018.02.22, 09:18:39
ULA rysuje, ale procesor w odpowiednim tempie musi dostarczać dane. Kiedyś przejrzałem sobie dokładnie kod w ROMie i wydawało mi się, że rozumiem całą procedurę, ale to było dawno ;) Istotne jest to, że w trybie SLOW dla programu użytkownika zostaje bardzo mało czasu bo procesor robi co innego :)
Tytuł: Odp: Benchmark ZX81
Wiadomość wysłana przez: KWF w 2018.02.22, 09:42:51
Sposoby przyspieszenia ZX81 zostały opisane na tej stronie: Sinclair ZX Specifications (http://problemkaputt.de/zxdocs.htm#hwmakingthezx81faster)

A różnice pomiędzy NTSC (32 scalelines) i PAL (56 scslelines) wynikają z ilości generowanych linii. W skrócie im ich mniej, tym wolniej działa cały ZX81.
Tytuł: Odp: Benchmark ZX81
Wiadomość wysłana przez: ZbyniuR w 2018.02.22, 13:23:53
To ostatnie zdanie jak dla mnie zdaje się nie mieć sensu.

W innych komputerach w NTSC częstotliwość odświeżania się zwiększa, ale też zwykle ilość wyświetlanych linii się zmniejsza, akurat o tyle że w ciągu sekundy komputer i tak wysyła w ekran taką samą ilość danych.

W ZX81 jak rozumiem w obu systemach wysyłanych linii jest tyle samo, ale w NTSC musi je wysyłać z większą częstotliwością aby odbiorniki które "łapią" tylko taką potrafiły wyświetlić obraz. Chociaż ta częstotliwość rośnie o 20% a nie aż o 50% jak wynika z testów. Więc może faktycznie zrobiono to na ostatnią chwilę i ratowano się NOP-ami (jak tu ktoś wspomniał), tak aby takty się zgadzały i dobrze to zsynchronizować.
Tytuł: Odp: Benchmark ZX81
Wiadomość wysłana przez: zipp w 2018.02.22, 13:42:15
http://problemkaputt.de/zxdocs.htm#zx80zx81videodisplaytimings (http://problemkaputt.de/zxdocs.htm#zx80zx81videodisplaytimings)

Dla programu w PAL jest dostępnych 54*2 linii, dla NTSC 30*2 lini
i wszystko się zgadza.
Tytuł: Odp: Benchmark ZX81
Wiadomość wysłana przez: KWF w 2018.02.22, 13:42:46
Moze to Ci rozjasni:

Cytuj
Resulting User Available CPU Time
  SLOW, 50Hz Effective Speed  0.804600 MHz (54*2*149 cycles, 50 frames) (ori)
  SLOW, 50Hz Effective Speed  0.896400 MHz (54*2*166 cycles, 50 frames) (tuned)
  SLOW, 60Hz Effective Speed  0.536400 MHz (30*2*149 cycles, 60 frames) (ori)
  SLOW, 60Hz Effective Speed  0.597600 MHz (30*2*166 cycles, 60 frames) (tuned)
  FAST, Total CPU Speed       3.250000 MHz (display disabled)
Tytuł: Odp: Benchmark ZX81
Wiadomość wysłana przez: matofesi w 2018.02.22, 14:03:29
No właśnie... wiedziałem, że gdzieś gra, ale nie pamiętałem dokładnie gdzie ;)

A tu można przeczytać dokładny opis procesu generowania obrazu: http://eduinf.waw.pl/inf/retro/003_zx81_tv/index.php
Tytuł: Odp: Benchmark ZX81
Wiadomość wysłana przez: ZbyniuR w 2018.02.22, 14:40:30
To ja wysiadam bo za wami nie nadążam. Nie wiem czym się różni ori od tuned, ani pseudo hires od true hires. :)

A zmieniając temat, to co z tym spowalniającym RAMem. Czyżby wolniej działające pamięci?
Bo raczej za mało jest tam ROM+RAM by trzeba było jakieś bloki przełączać.
Tytuł: Odp: Benchmark ZX81
Wiadomość wysłana przez: KWF w 2018.02.22, 15:01:44
Ori - ZX81 bez modyfikacji
Tuned - ZX81 z patchem w ROMie (NMI) oraz sprzętowym modem "no-WAIT". Zyskuje się pary cykli dla programu użytkownika.
Tytuł: Odp: Benchmark ZX81
Wiadomość wysłana przez: matofesi w 2018.02.22, 15:06:26
To ja wysiadam bo za wami nie nadążam. Nie wiem czym się różni ori od tuned, ani pseudo hires od true hires. :)

A to akurat są dodatki w tym artykule. Na początku jest opisane to, co się nazywa "ori" czyli to, co siedzi w niemodyfikowanym ZX-81. Dwa pozostałe to są mody żeby dało się wyświetlić coś więcej niż tylko znaki wg matrycy. Pseudo hires robi machloje z adresowaniem ROMu i pozwala pobierać dane z innych miejsc ROMu niż standardowa matryca znaków a do tego resetuje linię wyświetlania co linię a nie co 8 - w efekcie masz do wyboru 64 różne układy bitów, których możesz używać w układzie 192 linie po 32 znaki. True hires to modyfikacja dająca pełną grafikę 256x192 piksele z sześciokilowego bufora w RAMie. Jak rozumiem opisy obie "modyfikacje" są software'owe a jedyna rzecz, którą trzeba zmodyfikować sprzętowo to rampack, żeby się dało w odpowiedni sposób dostać do zewnętrznej pamięci.
Tytuł: Odp: Benchmark ZX81
Wiadomość wysłana przez: KWF w 2018.02.22, 15:13:17
Jezeli piszemy o Hi-Res (Pseudo czy True), tak, sa one zabawa software'owa. Ale w tej tablece z czasem procesora pozostalym dla uzytkownika "tuned" jest integracja we "flaczki" i zawartosc ROMu. Chodzi o uwolnienie taktow niepotrzebnie zajetych przez wywolanie operacji NMI. Wykonujac oba mody mozna zyskac jakies 10% extra.

Co do rozszezenia pamieci, same uklady niewiele beda mialy wplyw, Oryginalnie ZX81 mial pamieci statyczne o czasie dostepu rzedu 120-150ns. W swoim Zeddim wsadzilem uklad o czasie dostepu 100ns a roznice pozostaja. Nie ma znaczenia czy masz 16KB wewnetrzenie czy w jakims plecaczku z pamieciami, dziala wolniej.
Tytuł: Odp: Benchmark ZX81
Wiadomość wysłana przez: matofesi w 2018.02.22, 15:25:34
Trzeba by podłubać w ROMie, ale zastanawiam się czy spowolnienie po dodaniu RAMu nie ma związku z tym, że jakieś procedury obsługi zmiennych itp. przeszukują RAM i jak mają go więcej to zajmuje im to więcej czasu... Taka niczym nie poparta koncepcja ;)
Tytuł: Odp: Benchmark ZX81
Wiadomość wysłana przez: KWF w 2018.02.23, 00:08:49
Dorzucę jeszcze wynika dla zmodyfikowanego Zeddiego, wewnętrzne 32KB RAM, modyfikacja no-WAIT:

SLOW: 165 sek
FAST: 45 sek
Tytuł: Odp: Benchmark ZX81
Wiadomość wysłana przez: KWF w 2021.03.14, 07:44:08
Czasy dla Timexa Sincaira 1500 (TS1500) w standardowej konfiguracji 16KB RAM i 60Hz:

- SLOW: 275 s (4 m 35 s)
- FAST: 44 s