forum speccy.pl

Komputery z Z80 => JUPITER ACE => Wątek zaczęty przez: matofesi w 2020.02.17, 12:21:06

Tytuł: Dema na Jupitera
Wiadomość wysłana przez: matofesi w 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.
Tytuł: Odp: Dema na Jupitera
Wiadomość wysłana przez: KWF w 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
Tytuł: Odp: Dema na Jupitera
Wiadomość wysłana przez: Maryjan w 2020.02.17, 12:42:47
Jupiter jest bardziej unikatowy od SAM-a, pewnie dlatego nie ma na niego demek.
Tytuł: Odp: Dema na Jupitera
Wiadomość wysłana przez: matofesi w 2020.02.17, 12:49:09
No to trzeba się będzie przyjrzeć tematowi :)
Jak zwykle... zobaczymy na ile wystarczy mi zacięcia ;)
Tytuł: Odp: Dema na Jupitera
Wiadomość wysłana przez: Tygrys w 2020.02.17, 12:59:28
Pisz, pisz ;) Architektura ciekawa, a do tego można nadal być pionierem (patrz "Hello World").
Tytuł: Odp: Dema na Jupitera
Wiadomość wysłana przez: matofesi w 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 :)

Tytuł: Odp: Dema na Jupitera
Wiadomość wysłana przez: KWF w 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.
Tytuł: Odp: Dema na Jupitera
Wiadomość wysłana przez: matofesi w 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?
Tytuł: Odp: Dema na Jupitera
Wiadomość wysłana przez: KWF w 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 (https://drive.google.com/open?id=1ZvBnJ4HyCP3TmeLTrZqJ4gMNpxepetcl) - moze tutaj znajszesz troche o organizacji pamieci w Jupku.
Tytuł: Odp: Dema na Jupitera
Wiadomość wysłana przez: KWF w 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.
Tytuł: Odp: Dema na Jupitera
Wiadomość wysłana przez: matofesi w 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ć ;)
Tytuł: Odp: Dema na Jupitera
Wiadomość wysłana przez: KWF w 2020.02.18, 16:35:12
Prosze bardzo.

A'propos .tap, uzywasz naglowkow  plikow zgodnych Jupiterem czy ze Spectrum?
Tytuł: Odp: Dema na Jupitera
Wiadomość wysłana przez: matofesi w 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ę.
Tytuł: Odp: Dema na Jupitera
Wiadomość wysłana przez: KWF w 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.
Tytuł: Odp: Dema na Jupitera
Wiadomość wysłana przez: matofesi w 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.
Tytuł: Odp: Dema na Jupitera
Wiadomość wysłana przez: KWF w 2020.02.18, 17:43:46
Jest jeszcze po-potopowy zasm ;)

Z emulatorow Jupitera uzywam zxsp i od wielkiego dzwonu EO.
Tytuł: Odp: Dema na Jupitera
Wiadomość wysłana przez: matofesi w 2020.02.19, 08:47:21
Jak powiedział tak zrobił ;)

W załączniku patch do pasmo - rozszerza działanie typu --jace - teraz jeśli w kodzie damy etykietę "end adres" to kompilator automatycznie doda na początku generowanego TAPa krótki loader. Zakładając, że kompilujemy

pasmo --jace scroller.asm scroll.tap

wynikowy plik w emulatorze ładujemy przez

0 0 bload scroll

W praktyce wygląda to tak jak w drugim załączniku.

Wiem, że pewnie nikt z tego nie będzie korzystał, ale jak już zrobiłem dla siebie to się podzielę - może jednak ;)
Tytuł: Odp: Dema na Jupitera
Wiadomość wysłana przez: KWF w 2020.02.19, 09:04:58
Mat, puść dalej swojego patcha. Niemiecki ZX-Team dosc prężnie działa na poletku Jupitera.
Tytuł: Odp: Dema na Jupitera
Wiadomość wysłana przez: Dalthon w 2020.02.19, 10:19:51
No bomba! Może za jakiś czas się słuszne cos małego na ten sprzęt zrobić? ;

Ps. A fix do pasmo by od razu .p generował do zx81? ;)
Tytuł: Odp: Dema na Jupitera
Wiadomość wysłana przez: matofesi w 2020.02.19, 10:32:05
@Dalthon A to bym nawet specjalnie nie wiedział jak ugryźć, żeby było sensownie. Jupiter ma normalne bloki binarne na taśmie więc dodanie ich obsługi to prosta sprawa. ZX81 ma tylko jeden rodzaj zapisu i kompilator musiałby mieć zaszyty jakiś szablon. A szablon zaszyty w środku powoduje, że elastyczność rozwiązania spada, bo jak chcesz coś przestawić we własnym szablonie to po prostu go modyfikujesz a w zaszytym... musisz cały kod przenosić z powrotem do zewnętrznego szablonu.
Tytuł: Odp: Dema na Jupitera
Wiadomość wysłana przez: Tygrys w 2020.02.19, 10:34:23
Panowie, jest wiele szablonów do .p dla ZX81, nawet nieprzerobione pasmo to kompiluje ;-)
Tytuł: Odp: Dema na Jupitera
Wiadomość wysłana przez: KWF w 2020.02.19, 12:54:55
@matofesi: zestaw znakow Jupitera http://k1.spdns.de/Develop/Projects/zasm/Examples/jupiter_ace_character_ram.s. Standardowo tylko znak (C) jest opisany na 8 bitach. Co jest opisane w deasemblacji ROMu:

Cytuj
; -------------------
; THE 'CHARACTER SET'
; -------------------
; The 96 ASCII character bitmaps are copied to RAM during initialization and
; the 8x8 characters can afterwards be redefined by the user.
; Some ROM space is saved by supplying the blank top line of most characters
; and in case of the middle range (capitals with no descenders) the bottom
; line as well. Only the final copyright symbol is held in ROM as an 8x8
; character.
Tytuł: Odp: Dema na Jupitera
Wiadomość wysłana przez: matofesi w 2020.02.19, 13:13:33
A już sobie znalazłem - aktualna wersja scrollera rozpakowuje Jupiterowy font z ROMu :)
Tytuł: Odp: Dema na Jupitera
Wiadomość wysłana przez: Dalthon w 2020.02.19, 13:16:43
Panowie, jest wiele szablonów do .p dla ZX81, nawet nieprzerobione pasmo to kompiluje ;-)
No jest - nawet działający ale wygoda takiego rozwiązania przy odpaleniu 100 poprawki kodu jest średnia.
Tytuł: Odp: Dema na Jupitera
Wiadomość wysłana przez: matofesi w 2020.02.20, 12:58:21
Oczywiście jak to zwykle bywa w praniu się okazuje, że coś jest nie tak ;) W załączniku poprawiony patch jakby ktoś bardzo pragnął - poprzednia wersja jak nazwa wyjściowego pliku była krótsza niż 5 znaków to przycinała adres startu do takiej samej liczby znaków.
Tytuł: Odp: Dema na Jupitera
Wiadomość wysłana przez: azesmbog w 2020.02.21, 07:28:52
For Jupiter, it’s quite good to write programs in SjASm — moreover, it compiles with the header :)
By the way, the title is at least two types, not counting BASIC
Last year, two new programs for Jupiter were written, they worked normally in emulators and in FPGA.
Tytuł: Odp: Dema na Jupitera
Wiadomość wysłana przez: KWF w 2020.02.21, 08:07:44
Cytat: azesmbog
Last year, two new programs for Jupiter were written, they worked normally in emulators and in FPGA.

We would appreciate if you could share these programs names and information where we could find them.
Tytuł: Odp: Dema na Jupitera
Wiadomość wysłana przez: azesmbog w 2020.02.21, 17:34:44
We would appreciate if you could share these programs names and information where we could find them.
programm
http://www.zxuno.com/forum/download/file.php?id=2261 (http://www.zxuno.com/forum/download/file.php?id=2261)
Assembler
https://github.com/z00m128/sjasmplus/releases (https://github.com/z00m128/sjasmplus/releases)
but you can also use the TASM assembler
Tytuł: Odp: Dema na Jupitera
Wiadomość wysłana przez: KWF w 2020.02.23, 08:25:01
Thanks a lot.
Tytuł: Odp: Dema na Jupitera
Wiadomość wysłana przez: matofesi w 2020.03.20, 11:30:28
Piszę sobie różne drobiazgi i testuję co Jupiter potrafi i naszła mnie koncepcja... Wielokrotnie widziałem/robiłem na Spectrum scrollery na atrybutach z fontem 8x8 i "kratką" pod spodem dającą całkiem ładny efekt, ale z tekstem przesuwającym się - oczywiście - co 8 pikseli. Bez problemu można coś takiego zrobić na Jupitera. Ale po chwili pomyślałem czy da się zrobić taki sam scroll (duże znaki 8x8 charów czyli de facto 64x64 piksele) ale scrollujący się powoli co piksel - coś, co na Spectrum jest prawdopodobnie wykonalne, ale zje większość czasu ramki.
Po chwili walki wyszło mi takie coś jak w załączniku. Ładujemy przez

0 0 bload b

Okazuje się, że mimo braku "prawdziwego" trybu graficznego można tu uzyskać całkiem ciekawe efekty. Oczywiście większości bardziej zaawansowanych efektów ze Spectrum przenieść się nie da, ale działa to również w drugą stronę - dobrze przemyślane i wykonane efekty na Jupitera będą często niewykonalne na Spectrum ;)
Tytuł: Odp: Dema na Jupitera
Wiadomość wysłana przez: Tygrys w 2020.03.20, 12:05:30
Co tryb tekstowy z definiowalnymi znakami, to tryb tekstowy ;) Wbrew pozorom, daje on duże możliwości - czego dowodem jest mnogość dem na C64 i Atari 8bit.

Coś że dużymi krokami zbliża się decycja o dodaniu Jupitera w poczet kompo-maszyn na najbliższe speccy.pl party ;)
Tytuł: Odp: Dema na Jupitera
Wiadomość wysłana przez: KWF w 2020.03.20, 14:14:10
Niezły ten efekt Mat.
Tytuł: Odp: Dema na Jupitera
Wiadomość wysłana przez: matofesi w 2020.03.24, 14:22:35
Niezły ten efekt Mat.

A może być jeszcze "nieźlejszy" ;)
(ładowanie: "0 0 bload b")

edit: Plik przeniesiony niżej w wątku.
Tytuł: Odp: Dema na Jupitera
Wiadomość wysłana przez: KWF w 2020.03.24, 14:38:10
Nic nie napiszę, bo jeśli to są tylko przymiarki, to nie wiem co zrobisz na pełnoprawne demo. ;)
Tytuł: Odp: Dema na Jupitera
Wiadomość wysłana przez: matofesi w 2020.03.24, 14:49:07
Demo na compo jest już w zasadzie skończone i nic ważnego tam już nie będzie zmieniane.

To co tu wrzucam to zupełnie inny kod i to na prawdę jest takie moje dłubanie - przychodzi mi do głowy koncepcja i sprawdzam czy jestem w stanie ją zrealizować. Najpierw był scroller, potem poprawiłem dodając tło a potem stwierdziłem, że głupio tak wygląda na pustym ekranie więc pokombinowałem ze skaczącą kulką, którą wyrysował Ziutek do dema na compo (ale tam będzie w zupełnie innym kontekście).

Na razie się nakodowałem - jak mi nie przyjdzie nowa koncepcja do głowy to póki co dam sobie spokój, choć myślę jeszcze o jednym scrollerze więc kto wie… ;)

Tytuł: Odp: Dema na Jupitera
Wiadomość wysłana przez: KWF w 2020.03.24, 14:52:16
Jeśli pozwolisz, puszczę w szeroki świat tego scrollera ;)
Tytuł: Odp: Dema na Jupitera
Wiadomość wysłana przez: matofesi w 2020.03.24, 14:56:11
A to poczekaj chwilę... wstawię tam kawałek jakiegoś sensowniejszego tekstu...

OK. To można puszczać.
Tytuł: Odp: Dema na Jupitera
Wiadomość wysłana przez: KWF w 2020.03.24, 15:34:12
Podziękował i poszło do ZX Teamu w Germanii.
Tytuł: Odp: Dema na Jupitera
Wiadomość wysłana przez: matofesi w 2020.03.26, 15:04:05
W załączniku poprawiony scroller - na emulatorze nie będzie różnicy, ale na prawdziwym scroller śmiecił w ekran. Teraz nie powinien.
Tytuł: Odp: Dema na Jupitera
Wiadomość wysłana przez: KWF w 2020.03.26, 15:16:35
Zaraz sprawdzi się ;)

Zrzut ekranu: J_ACE_bigscroll (https://www.dropbox.com/s/zznytr6f65y6x30/J_ACE_bigscroll.mov?dl=0)
Tytuł: Odp: Dema na Jupitera
Wiadomość wysłana przez: matofesi w 2020.03.26, 15:33:58
Po to było "Glitch VRAM", żebym mógł sprawnie znaleźć gdzie jeszcze zrobiłem błąd. Na przyszłość już tego nie będę potrzebował ;)
Tytuł: Odp: Dema na Jupitera
Wiadomość wysłana przez: matofesi w 2020.03.27, 14:36:53
Steve z jupiter-ace.co.uk zapytał czy bym się nie podzielił kodem bigscroll'a po tym jak @Klaud wysłał mu plik do archiwum. Przysiałem, odrobinę wyczyściłem, dodałem tonę komentarzy wyjaśniających co się w środku dzieje (po angielsku z wymaganiem średniej znajomości asma i podstawowej działania systemu generowania obrazu Jupitera do zrozumienia) i... żeby się całkiem nia marnowało wrzucam też tutaj. Może się komuś do czegoś przyda - może ktoś się czegoś nauczy :)
Tytuł: Odp: Dema na Jupitera
Wiadomość wysłana przez: KWF w 2020.03.27, 17:38:49
Dzięki Mat, za te źródła oraz za to, że chciało się Tobie stworzyć coś nowego na egzotyczny komputer.
Tytuł: Odp: Dema na Jupitera
Wiadomość wysłana przez: m0b w 2020.03.27, 18:16:55
To ja dodam polski akcent: no fajnie ... a gdzie includy??? ;)
Tytuł: Odp: Dema na Jupitera
Wiadomość wysłana przez: Dalthon w 2020.03.27, 18:36:31
Szacunek! Jak zobaczyłem efekt to ręce same składały mi się do oklasków. Co MAT to MAT ;)
Tytuł: Odp: Dema na Jupitera
Wiadomość wysłana przez: matofesi w 2020.03.27, 18:57:49
@Klaud Tak już mam - im bardziej egzotyczne tym lepiej ;)

@Dalthon Jeśli to ci się podoba, to poczekaj do party - to co z Ziutkiem zmontowaliśmy powinno ci się jeszcze bardziej podobać :)

@maciekb Tym samym akcentem odpowiem: Nie ma i nie będzie! Nie ma i nie będzie! ;) :P