forum speccy.pl
Komputery z Z80 => ZX81 => Wątek zaczęty 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
-
Jeżeli to nie jest pilne, to we wtorek mogę pomierzyć czasy wykonywania się tychże programów.
-
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.
-
Mogę odpalić na dwóch ZX81, na ZX80 też pójdzie? :D
-
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ą?
-
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.
-
ZX81 1KB RAM.
1. SLOW: 110 sek.
2. FAST: 28 sek.
-
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
-
Dzięki :)
Mariansss, czy tego TS1000 masz przerobionego na CVS, czy nadal w pełni NTSC z modulatorem?
-
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.
-
Dzięki :)
Mariansss, czy tego TS1000 masz przerobionego na CVS, czy nadal w pełni NTSC z modulatorem?
Przerobiony na CVS.
-
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.
-
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.
-
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 :)
-
Przy okazji obraz zrobi się mniej rozciągnięty w pionie.
-
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).
-
... 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) :)
-
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.
-
Po rozbudowie do 16 kB.
SLOW 180 sek.
FAST 45 sek.
-
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. :)
-
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.
-
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ć?
-
@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 :)
-
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.
-
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 :)
-
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.
-
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ć.
-
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.
-
Moze to Ci rozjasni:
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)
-
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
-
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ć.
-
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.
-
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.
-
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.
-
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 ;)
-
Dorzucę jeszcze wynika dla zmodyfikowanego Zeddiego, wewnętrzne 32KB RAM, modyfikacja no-WAIT:
SLOW: 165 sek
FAST: 45 sek
-
Czasy dla Timexa Sincaira 1500 (TS1500) w standardowej konfiguracji 16KB RAM i 60Hz:
- SLOW: 275 s (4 m 35 s)
- FAST: 44 s