Autor Wątek: Dema na Jupitera  (Przeczytany 4721 razy)

matofesi

  • *****
  • Wiadomości: 1814
  • Miejsce pobytu:
    Toruń/Poland
Dema na Jupitera
« dnia: 2020.02.17, 12:21:06 »
Zacząłem się ostatnio przyglądać Jupiterowi, bo w końcu zadałem sobie trud, żeby doczytać co tam w środku siedzi (i zrozumiałem, że to nie jest ZX 81 z FORTHem). W związku z tym wrzuciłem jak zwykle w YouTube'a pytanie "Jupiter ACE demo" i... dostałem tylko "Hello World". Pytanie w związku z tym - czy nikt na Jupitera nie pisał "prawdziwych" dem? Wiem, że architektura grafiki jest trochę niewygodna, ale powinno się tam dać uzyskać całkiem przyzwoite efekty.

Klaud

  • Moderator
  • *****
  • Wiadomości: 5346
  • Miejsce pobytu:
    trzecia planeta od Słońca
  • KL
Odp: Dema na Jupitera
« Odpowiedź #1 dnia: 2020.02.17, 12:30:52 »
Nie, nie ma poza kilkoma pierdolkami z pakietu "Turle Graphics Pack":

http://www.jupiter-ace.co.uk/sw_turtle_util_tape.html

https://www.youtube.com/watch?v=u0eJ7IzYjfA
KL
-----
R Tape loading error 0:1

Maryjan

  • *****
  • Wiadomości: 5414
  • Miejsce pobytu:
    Skarżysko-Kam.
  • Scotch whiskey and West Highland Terrier
Odp: Dema na Jupitera
« Odpowiedź #2 dnia: 2020.02.17, 12:42:47 »
Jupiter jest bardziej unikatowy od SAM-a, pewnie dlatego nie ma na niego demek.
"... podobno są dwie szkoły, Falenicka i Otwocka."

matofesi

  • *****
  • Wiadomości: 1814
  • Miejsce pobytu:
    Toruń/Poland
Odp: Dema na Jupitera
« Odpowiedź #3 dnia: 2020.02.17, 12:49:09 »
No to trzeba się będzie przyjrzeć tematowi :)
Jak zwykle... zobaczymy na ile wystarczy mi zacięcia ;)

Tygrys

  • Administrator
  • *****
  • Wiadomości: 4212
  • Miejsce pobytu:
    Warszawa
  • mistrz ceremonii
Odp: Dema na Jupitera
« Odpowiedź #4 dnia: 2020.02.17, 12:59:28 »
Pisz, pisz ;) Architektura ciekawa, a do tego można nadal być pionierem (patrz "Hello World").

matofesi

  • *****
  • Wiadomości: 1814
  • Miejsce pobytu:
    Toruń/Poland
Odp: Dema na Jupitera
« Odpowiedź #5 dnia: 2020.02.17, 15:32:32 »
No to w ramach "wąchania" zrobiłem najprostszego scrollera - font 8x8 (spectrumowy - ten w ROMie jest dziwny i na razie nie chce mi się z nim walczyć ;)), przesuwane o 1 piksel na ramkę. Nie kumam jeszcze tego dialektu FORTHa (a zwłaszcza tego jak obsługuje taśmę w EightyOne) w związku z czym nie ma loadera (nie jestem pewien czy się da w prosty sposób - BLOAD wydaje się być tylko immediate i nie chce wkompliować nazwy pliku w słowo) w związku z czym odpalenie to

0 0 bload scroll 16384 call

Nie ustawiam ramtopu, nie testuję ile jest pamięci - zakładam, że pod 16384 będzie RAM ;)

Głównie chciałem sprawdzić czy dobrze myślę, czy da się zrobić to, co wymyśliłem i jak bardzo będzie to skomplikowane. Dobrze, da się i średnio ;)

Teraz doszlifować kanty i mogę kombinować jakiś bardziej zaawansowany efekt :)


Klaud

  • Moderator
  • *****
  • Wiadomości: 5346
  • Miejsce pobytu:
    trzecia planeta od Słońca
  • KL
Odp: Dema na Jupitera
« Odpowiedź #6 dnia: 2020.02.17, 16:05:17 »
Brawo  :D Uzywaj fontu Jupiterowego prosze. Ten ZXowy wyglada dziwnie na Jupku.

Od 16384 zawsze jest RAM i tylko RAM, jesli zapiety jest plecaczek 2K lub wiecej. Tak jest konca przestrzeni adresowej Z80 ;) Pomijam wynalazki typu DeepThought czy interfejs SD, ktore zjadaja ostanie 8K na wlasny ROM.

Twoj scroller na Jupiterze z fabrycznym 1K RAM to nie pojdzie.
KL
-----
R Tape loading error 0:1

matofesi

  • *****
  • Wiadomości: 1814
  • Miejsce pobytu:
    Toruń/Poland
Odp: Dema na Jupitera
« Odpowiedź #7 dnia: 2020.02.17, 16:11:54 »
Brawo  :D Uzywaj fontu Jupiterowego prosze. Ten ZXowy wyglada dziwnie na Jupku.

Jupiterowy jest dziwny, bo część znaków w ROMie jest zapisanych na 6 a część na 7 bajtach i przeliczanie adresów jak scroller ma być szybki jest kłopotliwe. Na przyszłość wyrwę sobie raz fonta albo napiszę procedurkę wyrywającą z ROMu i przekodowującą do 8x8.

Cytuj
Od 16384 zawsze jest RAM i tylko RAM, jesli zapiety jest plecaczek 16K lub wiecej. Od 16384 RAM jest az do konca przestrzeni adresowej Z80 ;) Pomijam wynalazki typu DeepThought czy interfejs SD, ktore zjadaja ostanie 8K na wasny ROM.

Czyli jak piszę coś, co i tak nie ruszy na standardowych 3K mogę spokojnie pakować kod od 16384?

Cytuj
Twoj scroller na Jupiterze z fabrycznym 1K RAM to nie pojdzie.

Wiem. Nawet nie próbowałbym się zmieścić w takiej pamięci ;)

A na razie kombinuję sobie co się da zrobić w tym trybie. Parę efektów powinno się udać. Pytanie tylko takie - czy jest gdzieś jakiś opis timingów video? Dobrze by było wiedzieć ile czasu zajmują bordery, linia itp. No i jeszcze jedno - czy Jupiter zawsze ma czarny BORDER? Nie ma opcji przełączenia na biały?

Klaud

  • Moderator
  • *****
  • Wiadomości: 5346
  • Miejsce pobytu:
    trzecia planeta od Słońca
  • KL
Odp: Dema na Jupitera
« Odpowiedź #8 dnia: 2020.02.17, 16:27:00 »
Ad1. Jupiterowy ROM jest upakowany do granic mozliwosci (prawie), dlatego font jest opisany w sposob bardzo uproszczony. Cos Tygrys kombinowal w tym zakresie.

Ad2. RAM: tak, mozesz zalozyc, ze zawsze masz dostepne przynajmniej 16K od 16384.

Ad3. W Jupku masz prawie 900B dla wykorzystania w podstawowej konfiguracji ;) Dalthon wywija cuda wianki w 256B, tutaj oszalalby z nadmiaru miejsca ;)

Z racji swojej budowy Jupiter zawsze ma obraz czarne tlo (wlaczajac ramke) i biale litery. Mozna zrobic inwersje calego ekranu wraz z ramka, ale tylko sprzetowa. A co do timingow przyjmij, ze sa one takie jak w Speccy. Postaram sie sprawdzic te informacje.

Co do TAPa jest on troche inny niz ten znany ze Speccy. Opis TAPa jest tu: http://www.jupiter-ace.co.uk/prog_tap_templates.html


Prezentacja ze speccy.pl party 2019.1
- moze tutaj znajszesz troche o organizacji pamieci w Jupku.
« Ostatnia zmiana: 2020.02.17, 17:35:59 wysłana przez Klaud »
KL
-----
R Tape loading error 0:1

Klaud

  • Moderator
  • *****
  • Wiadomości: 5346
  • Miejsce pobytu:
    trzecia planeta od Słońca
  • KL
Odp: Dema na Jupitera
« Odpowiedź #9 dnia: 2020.02.17, 17:08:39 »
Timingi wideo:

Zegar procesora: 3.25MHz

Licznik jednej linii wideo: 416 cykli zegara 6.5MHz, w tym
- lewy margines: 64 (352..415)
- obszar 32 kolumn: 256 (0..255)
- prawy margines: 64 (255..319)
- HSYNC: 32 (320..351)

Jedna ramka to 312 linii, w tym:
- gorny margines: 56 (256..311)
- obszar 24 wierszy:  192 (0..191)
- dolny margines: 56 (192..247)
- VSYNC: 8 (248..255)

No i jeszcze dwie drobne sprawy:

Cytuj
VSYNC Interrupt
The default interrupt handler at 0038h isn't too useful, however, one can put a custom IM2 interrupt handler in RAM. The Z80's /INT pin is wired directly to /VSYNC. This implies two problems:

1) The /VSYNC signal is LOW for 8 scanlines (1664 cycles), so, the IRQ handler should not re-enable IRQs during that period (otherwise the same interrupt would be executed another time). If necessary include a 1664-cycle delay in the IRQ handler, or return without enabling IRQs.

2) For flicker/waitstate-free drawing, it'd be ideal to access VRAM during VBLANK, but since /INT is generated on VSYNC rather than VBLANK, one can use only little more than half of the VBLANK periond.
« Ostatnia zmiana: 2020.02.17, 17:20:35 wysłana przez Klaud »
KL
-----
R Tape loading error 0:1

matofesi

  • *****
  • Wiadomości: 1814
  • Miejsce pobytu:
    Toruń/Poland
Odp: Dema na Jupitera
« Odpowiedź #10 dnia: 2020.02.18, 15:58:19 »
@Klaud Dzięki za info. Brakuje mi w tej chwili odpowiednika BORDERa albo zmiany palety - to podstawowa metoda oceny ile czasu w ramce wykonuje się kod ;)

A przygotowując sobie narzędzia w pierwszej kolejności zapatchowałem pasmo (0.5.4-beta2) dodając tryb generowania --jace z którego wychodzi TAP, który można bez kombinowania wciągnąć (0 0 bload) w EightyOne i odpalić z ręki. Jakby ktoś chciał sobie przekompilować to patch w załączniku.

Biorąc pod uwagę fakt, że na razie nie znalazłem metody na zrobienie prawdziwego autostartu a co gorsza nie ma nawet odpowiednika load "" code (za każdym razem trzeba podać nazwę) zrobiłem sobie skrypt (w Darcie - kiedyś już podrzucałem skąd ściągnąć), któremu podajemy jako parametr nazwę pliku z kodem, który zrobiliśmy, nazwę pliku wynikowego i nazwę jaką ma mieć loader wewnątrz TAPa. Wygenerowanego TAPa wciągamy w EightyOne i odpalamy przez "0 0 bload nazwa". Skrypt oczywiście w załączniku.

I oczywiście ostatni plik to przygotowany w ten sposób TAP ze scrollerem - otwieramy w EightyOne autoscroller.tap i odpalamy przez "0 0 bload scroll"

A jak już mam narzędzia to teraz mogę zacząć myśleć co nimi zrobić ;)

Klaud

  • Moderator
  • *****
  • Wiadomości: 5346
  • Miejsce pobytu:
    trzecia planeta od Słońca
  • KL
Odp: Dema na Jupitera
« Odpowiedź #11 dnia: 2020.02.18, 16:35:12 »
Prosze bardzo.

A'propos .tap, uzywasz naglowkow  plikow zgodnych Jupiterem czy ze Spectrum?
KL
-----
R Tape loading error 0:1

matofesi

  • *****
  • Wiadomości: 1814
  • Miejsce pobytu:
    Toruń/Poland
Odp: Dema na Jupitera
« Odpowiedź #12 dnia: 2020.02.18, 16:57:13 »
Po to patchowałem pasmo, żeby generowało jupiterowe TAPy ;)

A jak już wysłałem patcha i całą resztę dotarło do mnie, że da się to zrobić ładniej i prosto z pasmo - jutro zmontuję nową wersję.

Klaud

  • Moderator
  • *****
  • Wiadomości: 5346
  • Miejsce pobytu:
    trzecia planeta od Słońca
  • KL
Odp: Dema na Jupitera
« Odpowiedź #13 dnia: 2020.02.18, 17:04:12 »
A dlaczego nie zapytasz Tygrysa, on ten temat przerabial rok temu ;)

TAPy do emulatorow sa OK, ale do zywego Jupitera sa bezuzyteczne niestety.
KL
-----
R Tape loading error 0:1

matofesi

  • *****
  • Wiadomości: 1814
  • Miejsce pobytu:
    Toruń/Poland
Odp: Dema na Jupitera
« Odpowiedź #14 dnia: 2020.02.18, 17:37:27 »
Przerabiał. Assemblował przedpotopowym TASMem ;)

Problem z pisaniem czegokolwiek na żywym sprzęcie jest taki, że jest to wysoce niewygodne no i trzeba mieć ten sprzęt ;) A do emulatora plik ma wymagać jak najmniej roboty - na Spectrum pasmo --tapbas daje plik, który się sam wczytuje i takie coś mi najbardziej odpowiada, bo mogę w krótkim czasie przerzucać kolejne kompilacje. Niestety póki co nie znalazłem równie wygodnej metody na Jupitera.