Aktualności: C64 Power - online od stycznia 2000 !

Autor Wątek: c64 +1 MB RAM + Multitasking  (Przeczytany 2381 razy)

0 użytkowników i 2 Gości przegląda ten wątek.

Offline hobocti77x

  • Level 5
  • *****
  • Wiadomości: 731
c64 +1 MB RAM + Multitasking
« dnia: 07 Listopada 2013, 20:47 »
Chciałbym przedstawić swoje rozszerzenie dla c64.
Działa ono na nieco innej zasadzie do innych rozwiązań. Główne różnice to możliwość uruchomienia w 1 MB maksymalnie 16 zadań . Każde zadanie ma do dyspozycji  cały komputer c64 (czyli swoje 64 kB RAM) z własnym stosem i obszarem zerowym z dostępem do BASIC-a i KERNAL i dostępem do urządzeń I/O (wspólnymi dla wszystkich zadań)
Cała pamięć 1 MB została podzielona na przełączane banki po 64KB niezależnie dla CPU i VIC , dzięki temu mogą one pracować jednocześnie w dwóch różnych bankach.
Całość jest 99.99 proc .zgodne z c64 i wszystkimi rozszerzeniami
Dołączam filmik na którym widać uruchomione 2 "wirtualne" zadania z 2 różnymi prostymi programikami i przełączanie między nimi ,na razie jeszcze nie pracują równolegle ale pracuję nad tym .
 Może ktoś chciałby pomóc w rozwijaniu oprogramowania ?
http://www.youtube.com/watch?v=VMahKWokaPU&feature=youtu.be



Offline wegi

  • Level 7
  • *******
  • Wiadomości: 2588
c64 +1 MB RAM + Multitasking
« Odpowiedź #1 dnia: 07 Listopada 2013, 21:58 »
Duży respekt za projekt, za wiedzę i umiejętności hardware'owe.
No niestety - niestandardowe rozwiązania z kolei są bez softu i to się raczej nie zmieni.
Gdyby to był rok 1990 może powstałoby na to specjalnych odmian ulepszonych gierców czy dem.

Chciałbym uściślenia terminu "pracy równoległej" to znaczy mam na myśli przykład:

w banku jednym zapuszczam wektory których renderowanie klatki zajmuje 3 ramki

w banku drugim zapuszczam drugie wektory w których również renderowanie pojedynczej klatki zajmuje 3 ramki

Pytanie brzmi:

Czy w trakcie ich równoległej pracy renderowanie pojedynczej ramki każdego z wektorów zajmie nadal tylko 3 ramki czy wydajność spadnie do 6 ramek? Tzn oczekując na wykonanie się kolejnej ramki animacji dla obu zadań będzie trwało 3 czy 6 ramek?
Gdy po wynalezieniu komputera kwantowego jedni pytali o sposób wytwarzania prądu, kisiel pytał jak wytwarzać świeczki...

NIECH NIE BĘDZIE NICZEGO !!!

CZY RAF PIŁ Z JERICHA KUBECZKA ???

Offline Kisiel

  • Level 7
  • *******
  • Wiadomości: 11447
  • Number 7 in all users competition...
    • http://wiki.projekt64.filety.pl/doku.php
c64 +1 MB RAM + Multitasking
« Odpowiedź #2 dnia: 07 Listopada 2013, 22:15 »
Wegi:
http://ytm.bossstation.dnsalias.org/html/simm.html ... wygląda znajomo ?
poza tym multitasking na rozszerzeniu 256K już był robiony z tego co pamiętam Marko Makela to robił, jakieś ramdyski, monitory cuda na kiju. Bawiłem się tym jak wytwarzałem pierwowzór C64+ ze 20 lat temu. Software czeka na entuzjastę który go skończy.
idz wyprostowany wśród tych co idą na kolanach

...w przypadku checi zakupu UK1541,GA,MA,T8500,T7501 prosze o kontakt na Facebooku, haslo: UK1541....

Offline wegi

  • Level 7
  • *******
  • Wiadomości: 2588
c64 +1 MB RAM + Multitasking
« Odpowiedź #3 dnia: 07 Listopada 2013, 23:42 »
Mnie interesuje efektywność - jak rozumiem procesor nie może mieć jednocześnie dostępu do 2ch adresów więc wykonanie spadnie w tym wypadku o 50%
Gdy po wynalezieniu komputera kwantowego jedni pytali o sposób wytwarzania prądu, kisiel pytał jak wytwarzać świeczki...

NIECH NIE BĘDZIE NICZEGO !!!

CZY RAF PIŁ Z JERICHA KUBECZKA ???

Offline hobocti77x

  • Level 5
  • *****
  • Wiadomości: 731
c64 +1 MB RAM + Multitasking
« Odpowiedź #4 dnia: 08 Listopada 2013, 10:57 »
To może po kolei
wegi : takie przyspieszenie  można by uzyskać tylko przy zastosowaniu kilku procesorów, a nie przy multitaskingu z podziałem czasu .
Z tą efektywnością 50 proc. to też może być różnie można np. tak zaprogramować czas wykonywania że zadanie nr. 1 zajmie 99 proc czasu procesora , a nr 2 -  np. 1 proc .
Ale może zanim omówię inne możliwości najpierw omówię jak to działa , a do trudniejszych rzeczy dojdziemy później \"\"

Więc w obszarze normalnie zajmowanym przez SID $D400 - $D7ff mamy:
wydzielone adresy :
1) d400- d47f - rejestry SID-a
2) d480-d4ff - rejestr przełączający (tylko zapis powielony 128 razy ) BANKI RAM po 64 kB . Bity D0- d3 wybierają bank dla CPU ,a D4-D7 dla VIC . Po reset mamy w rejestrze $00 więc VIC i CPU pracują w obszarze 00000 - 0fff , wpisanie do rej . wartości np $01 spowoduje że VIC pracuje w BANKU w obszarze 00000 - 0FFFF , a CPU 10000-1FFFF .Wpisanie $11 powoduje że CPU i VIC pracują w obszarze 10000-1ffff itd.
3) Pod adresami  D600 do D6FF jest pamięć RAM dla  procedur przełączania BANK-ów

zyga

  • Gość
c64 +1 MB RAM + Multitasking
« Odpowiedź #5 dnia: 08 Listopada 2013, 11:51 »
@hobocti77x
Znasz http://lng.sourceforge.net/ ?

Offline Skull

  • Level 6
  • ******
  • Wiadomości: 2034
c64 +1 MB RAM + Multitasking
« Odpowiedź #6 dnia: 08 Listopada 2013, 13:17 »
Na pewno ciekawy projekt, jednak po zastanowieniu, co właściwie oferuje?
Oprócz rozszerzenia pamięci (całkiem sporego), jest ten multitask, tyle że w zasadzie, niewiele szybszy od softwarowego przełączania segmentów pamięci. Tu zdecydowanie jest to wygodniejsze dla programisty, który nie musi się martwić nakładaniem się obszarów pamięci, nawet stosu. Jednak przy dobrym programie, to wszystko jest do zrobienia na samym rozszerzeniu pamięci.

Na plus również prostota zmiany obszarów - rozumiem że od $d600-$d6ff to bufor wspólny dla wszystkich banków ?


ps. ciekawy jestem jak wygląda zapuszczenie 16 zaków i przełączanie między nimi \"\")))) albo manipulacje z różnymi wariantami trybów vica, co linię rastra (albo i krócej)?\"\"

Offline hobocti77x

  • Level 5
  • *****
  • Wiadomości: 731
c64 +1 MB RAM + Multitasking
« Odpowiedź #7 dnia: 08 Listopada 2013, 14:11 »
Tak obszar D600 - D6ff j(ale będzie d600 - d7ff) jest wspólny dla wszystkich banków.
Skull łatwo = szybko \"\"
Zasadnicza różnica jest w tym że można mieć załadowane w pamięci np. program do grafiki , asembler , edytor tekstu i zamiast przerzucać to między ramdyskiem zamrozić program np. przerwaniem NMI za pomocą klawisza RESTORE pobrać dane bezpośrednio z RAM zadania i obrobić innym programem , po czym powrócić do innego programu .Nie trzeba nawet pisać nowych programów wystarczy tylko za pomocą małych procedur przechwytywać przerwania .

Offline Kisiel

  • Level 7
  • *******
  • Wiadomości: 11447
  • Number 7 in all users competition...
    • http://wiki.projekt64.filety.pl/doku.php
c64 +1 MB RAM + Multitasking
« Odpowiedź #8 dnia: 08 Listopada 2013, 17:51 »
Kolega Gienio mawia "teoria i praktyka to takie dziwki które nie mogą się spotkać razem"
Pierwszy praktyczny błąd, każdy program może używać VIC-a i przełączając zewnętrznym NMI wchodzisz z asemblera do innego programu graficznego, co się dalej dzieje się w pale nie mieści. Takie rozwiązanie co proponujesz bawił się nim Victor/Esm w 1994r zapodał cztery makroasemblery przełączane na bankach po 64K. Czyli wszystko się zgadza ale w teorii.
System musi zapewnić przełączanie banków oraz przeładowanie rejestrów nie tylko VIC-a ale np. i CIA. A jak ktoś ustawi sobie irq na 255 a drugi na 40 ?
Twoje rozszerzenie bije na głowę rozszerzenie Marko Makeli bodaj z 1986r 256K, pamięć jest podzielona na cztery obszary po 16KB i banków masz tyle co pamięci, z tą różnicą że stron zerowych możesz mieć tyle co banków a każdy bank może być w dowolnej lokalizacji pamieci (1z4) itp.
Podsumowując na 6510 da się zrobić pełny mutlitasking ale... soft musisz sobie napisać sam, każdy program, grę, edytor muzyczny, demo itp. Z punktu widzenia leszcza lub lamera to co proponujesz to rewolucja... tyle że tylko medialna.
A co powiesz na multicore 6502, wielowątkowe przetwarzanie danych, da się?

PS. jak korzystasz z doświadczeń takiego np. YTM-a to warto podać to w informacji przy projekcie że nie Ty odkryłeś amerykę drugi raz.
idz wyprostowany wśród tych co idą na kolanach

...w przypadku checi zakupu UK1541,GA,MA,T8500,T7501 prosze o kontakt na Facebooku, haslo: UK1541....

Offline hobocti77x

  • Level 5
  • *****
  • Wiadomości: 731
c64 +1 MB RAM + Multitasking
« Odpowiedź #9 dnia: 08 Listopada 2013, 21:08 »
Kisiel rozwiązania o których tu piszesz mogły mieć maksymalnie 256 kB , ponieważ ich autorom nie udało się rozwiązać problemu odświeżania .
A problem z zamrożeniem programu i powrotem do jego wykonania już dawno został rozwiązany przez freezery

Offline Kisiel

  • Level 7
  • *******
  • Wiadomości: 11447
  • Number 7 in all users competition...
    • http://wiki.projekt64.filety.pl/doku.php
c64 +1 MB RAM + Multitasking
« Odpowiedź #10 dnia: 08 Listopada 2013, 21:43 »
hobocti77x:
ponieważ ich autorom nie udało się rozwiązać problemu odświeżania .

Hahaha \"\"
Udało się, mistrzu sprzętu Kenjiro zapodał jako pracę dyplomową użycie pamięci z odświeżaniem 9-cio bitowym 44256 w c64.,, i wiesz było to dokładnie 19 lat temu.
I co ?
Świat poszedł do przodu ja nie widzę problemu aby w moim C64 było 2MB pamięci podtrzymywanej przez baterię... po prostu nie chce mi się przylutować scalaków.

Na przyszłość mniej szacunek do przeszłości szczególnie że zrobiłeś coś co może 20 lat temu było fajne na podstawie cudzych projektów.
idz wyprostowany wśród tych co idą na kolanach

...w przypadku checi zakupu UK1541,GA,MA,T8500,T7501 prosze o kontakt na Facebooku, haslo: UK1541....

Offline hobocti77x

  • Level 5
  • *****
  • Wiadomości: 731
c64 +1 MB RAM + Multitasking
« Odpowiedź #11 dnia: 09 Listopada 2013, 13:52 »
Mistrzu Kisiel niejaki Texas Instruments projektując pamięci "wymyślił " też odświeżanie ukryte \"\"
I co z tego wynika ?
A tak w ogóle to o co ci chodzi ?
Czy tak trudno ci zrozumieć że do niektórych rzeczy można dojść nie tylko kopiując czyjeś rozwiązania ?

Offline Kisiel

  • Level 7
  • *******
  • Wiadomości: 11447
  • Number 7 in all users competition...
    • http://wiki.projekt64.filety.pl/doku.php
c64 +1 MB RAM + Multitasking
« Odpowiedź #12 dnia: 09 Listopada 2013, 15:22 »
Niestety nie potrafisz dyskutować na argumenty, "mistrzu" i inne pyskówki możesz sobie w buty schować. Kości pamięci umieszczone w C64 też mają ukryty refresh. Ukryty refresh zastosowałem np. w TDC.
Kenjiro akurat w swojej pracy dyplomowej zaproponował sztuczkę z A8 polegającą na dostawianiu dodatkowego odczytu pamięci podczas normalnego cyklu dostępu. Co objawiało się czasami artefaktami na Mathematice/Oxyron (parts z okręgami). To demo jest softwarowym testerem odświeżania, jak padnie Mathematica znaczy się masz dupa a nie odświeżanie.
No i tyle w ramach ogólnej wiedzy na temat rozszerzeń pamięci.
Hardware zrobić to jest pan Pikuś, software samemu jest ciężko, ja jeszcze nie dokończyłem obsługi CF w C64+ a na pomoc ze strony koderów to już daaaawno przestałem liczyć.
idz wyprostowany wśród tych co idą na kolanach

...w przypadku checi zakupu UK1541,GA,MA,T8500,T7501 prosze o kontakt na Facebooku, haslo: UK1541....

Offline hobocti77x

  • Level 5
  • *****
  • Wiadomości: 731
c64 +1 MB RAM + Multitasking
« Odpowiedź #13 dnia: 10 Listopada 2013, 07:57 »
Piszesz o tym projekcie ?

http://wiki.projekt64.filety.pl/doku.php?id=projekt64:c64
Jeśli tak to  odpowiedz mi poco w ogóle odświeżać pamięci SRAM (zastosowane przez Kenjiro/3Lux)  które tym (oprócz właściwie jeszcze tylko takiego drobiazgu jak kilkukrotnie wyższej ceny) różnią się od DRAM że nie potrzebują żadnego odświeżania ? \"\"
Bo mi się wydaje że Kenjiro/3Lux w swoim projekcie zastosował pamięci SRAM właśnie po to aby móc zrezygnować (bardzo dużym kosztem) z odświeżania , to chyba tłumaczy małą popularność tego rozszerzenia ...

Offline Kisiel

  • Level 7
  • *******
  • Wiadomości: 11447
  • Number 7 in all users competition...
    • http://wiki.projekt64.filety.pl/doku.php
c64 +1 MB RAM + Multitasking
« Odpowiedź #14 dnia: 10 Listopada 2013, 08:43 »
czuje się zaskoczony brakiem podstawowych informacji z dziedziny logiki.

Proste i logiczne przed "Twoim" rozszerzeniem było innych lepszych na pęczki, żadne z nich się nie przyjęło, C64 to nie Atari. Rzeźbisz tylko dla siebie, napisz to sobie w kajecie sto razy.
To co zdobyło popularność to REU, rozszerzenie na zewnątrz c64.
Teraz zadaj sobie pytanie dlaczego, 4x why ????

pierwowzór C64+ http://projekt64.filety.pl/index.php?dir=C64%2B/OLD%20PHOTOS/&file=old_prototype_1995 -1996.jpg Jak widać rozszerzenie pamięci jest na 44256, na zdjęciu brak układu emulującego ROM zrobionego na kości SRAM z bateryjką.

I to by było na tyle, dużo czeka Ciebie pracy aby zakodować coś sensownego na ten 1MB pamięci, powodzenia.
idz wyprostowany wśród tych co idą na kolanach

...w przypadku checi zakupu UK1541,GA,MA,T8500,T7501 prosze o kontakt na Facebooku, haslo: UK1541....