Autor Wątek: [ZX81] Wyzwanie programistyczne nr 1  (Przeczytany 1314 razy)

Klaud

  • *****
  • Wiadomości: 4809
  • Miejsce pobytu:
    trzecia planeta od Słońca
  • KL
[ZX81] Wyzwanie programistyczne nr 1
« dnia: 2020.01.28, 10:11:34 »
W związku ze zbliżającym się speccy.pl party 2020.1 myślę, że warto zmobilizować naszych szanownych kolegów programistów. Wasze produkcje na ZX Spectrum mają bardzo wysoki poziom, ale czas wrócić do korzeni i napisać prodke na starszego brata tj. ZX81:)

Założenia dla programujacych:
  • termin zgłaszania prac: 23:59:59, 31 marca 2020r.,
  • platforma sprzetowa: ZX81 + 16/32KB RAM,
  • wielkość prodki: do 8KB pliku binarnego i ani bita więcej, ale może być mniej np. 256B :),
  • prodka moze tylko korzystac z RAM z przestrzeni adresowej 0x6000 do 0x8000,
  • konkursowo prodka w formie pliku .p odpalana z ZXpanda(+) lub ZX1541, oraz pod emulatorem EightyOne
  • ostateczna forma prodki musi byc miec mozliwosc uruchamiania przez RAND USR 8192 (tak, tak, przestrzen niewykorzystywana w standardowym ZX81),
  • finalna alokacji prodki od 0x2000 do 0x4000, program nie może zapisywać danych w tym obszarze pamięci, ponieważ pamięć typu ROM, może być przypisana do tego zakresu adresów,
  • głosowanie i ogłoszenie zwycięzcy na speccy.pl party 2020.1

Dlaczego takie "dziwne" wymagania?

Prodki, które zajmą 3 pierwsze miejsca zostaną zaszyte w ROMie okolicznościowego interfejsu do ZX81 (16KB RAM + ROM).

Pięciu najlepszych uczestników tej zabawy programistycznej otrzyma w prezencie ten interfejs, jako nagrodę za włożony trud i poświęcony czas na prodkę.

W przypadku braku kreatywności/czasu/chęci programistów, interfejs i tak powstanie ALE zawartość ROMu zostanie ustalona po party.

Interfejs będzie wydany w limitowanej liczbie 10 sztuk. 5 sztuk będzie rozdane (na razie zasady nie zostały ustalone) wśród forumowiczów.

Konkurs ma charakter otwarty i można o nim "trąbić" w mediach społecznościowych.
KL
-----
R Tape loading error 0:1

tooloud

  • *****
  • Wiadomości: 2599
  • Miejsce pobytu:
    Warszawa
  • mydłem go!
Odp: [ZX81] Wyzwanie programistyczne nr 1
« Odpowiedź #1 dnia: 2020.01.28, 11:58:40 »
jakby się udało HELLO WORLD zrobić fontem ZXowym...
dużo sprzętu mało czasu.

Klaud

  • *****
  • Wiadomości: 4809
  • Miejsce pobytu:
    trzecia planeta od Słońca
  • KL
Odp: [ZX81] Wyzwanie programistyczne nr 1
« Odpowiedź #2 dnia: 2020.01.28, 12:15:46 »
Proszę bardzo.
KL
-----
R Tape loading error 0:1

tooloud

  • *****
  • Wiadomości: 2599
  • Miejsce pobytu:
    Warszawa
  • mydłem go!
Odp: [ZX81] Wyzwanie programistyczne nr 1
« Odpowiedź #3 dnia: 2020.01.28, 12:25:04 »
O, i superancko!
dużo sprzętu mało czasu.

Dalthon

  • ****
  • Wiadomości: 370
  • Miejsce pobytu:
    TriCity
Odp: [ZX81] Wyzwanie programistyczne nr 1
« Odpowiedź #4 dnia: 2020.02.01, 16:37:27 »
  • platforma sprzetowa: ZX81 + 16/32KB RAM,
  • prodka moze tylko korzystac z RAM z przestrzeni adresowej 0x6000 do 0x8000,

Albo źle patrzę albo widzę tutaj niespójność - to w końcu ile tej pamięci? 16? 32? czy może jednak 8k?
ZX Spectrum +2 Grey | Commodore 64 | Commodore +4 | Atari 520 STF | Amiga 1200

Klaud

  • *****
  • Wiadomości: 4809
  • Miejsce pobytu:
    trzecia planeta od Słońca
  • KL
Odp: [ZX81] Wyzwanie programistyczne nr 1
« Odpowiedź #5 dnia: 2020.02.03, 10:48:22 »
Dalthon, proszę przeczytaj całość wymagań. Wynikają one z organizacji pamięci w ZX81 oraz ostatecznej alokacji prodki.

Swoją drogą jeśli znajdziesz ZX81 z 8KB RAM na pokładzie (standardowym produktem, a nie samoróbką) lub takowy plecaczek, to masz u mnie sześciopak dowolnie wybranego piwa.

KL
-----
R Tape loading error 0:1

tooloud

  • *****
  • Wiadomości: 2599
  • Miejsce pobytu:
    Warszawa
  • mydłem go!
Odp: [ZX81] Wyzwanie programistyczne nr 1
« Odpowiedź #6 dnia: 2020.02.03, 13:51:24 »
tak dla przypomnienia - bo właśnie grzebałem "w"

0000 hex to 1FFF =   0 to  8k = BASIC ROM
2000 hex to 3FFF =  8k to 16k = "echo" of BASIC ROM
4000 hex to 7FFF = 16k to 32k = RAM (if only the internal 1K is fitted, this 1k of RAM is "echoed" 15 times)
8000 hex to BFFF = 32k to 48k = "echo" of 0000 hex to 3FFF 0 to 16k area (BASIC ROM)
C000 hex to FFFF = 48k to 64k = "echo" of 4000 hex to 7FFF 16k to 32k area, used by the system for the display
dużo sprzętu mało czasu.

Dalthon

  • ****
  • Wiadomości: 370
  • Miejsce pobytu:
    TriCity
Odp: [ZX81] Wyzwanie programistyczne nr 1
« Odpowiedź #7 dnia: 2020.02.03, 14:57:49 »
Dalthon, proszę przeczytaj całość wymagań.
No proszę! Starej daty jestem więc czytam przed zadaniem pytania ;)

Pytam się bo (cytując klasyka) jeśli chodzi hardware ZX81 to jestem Lajkonikiem;) [thx! tooloud za pomocne info!]

O ile wszystkie obostrzenia kumam, to nie wiem czemu do dyspozycji jest tylko 8kB RAM który można zapisywać (0x6000 do 0x8000)?
Jakby było od 0x4000 do 0x8000 to można by było się pokusić o coś większego: od 0x2000 do 0x4000 spakowane 8kB a powyżej rozpakowane ~16kB :D
ZX Spectrum +2 Grey | Commodore 64 | Commodore +4 | Atari 520 STF | Amiga 1200

Klaud

  • *****
  • Wiadomości: 4809
  • Miejsce pobytu:
    trzecia planeta od Słońca
  • KL
Odp: [ZX81] Wyzwanie programistyczne nr 1
« Odpowiedź #8 dnia: 2020.02.03, 15:09:56 »
A to pakuj ile wlezie, bylebyś potem całość zmieścił w 8K, które będą ROMem ;)

Poza tym, znając Twoje umiejętności i 256B robisz takie cuda wianki, że 8K to i tak za dużo dla Ciebie ;)
KL
-----
R Tape loading error 0:1

Dalthon

  • ****
  • Wiadomości: 370
  • Miejsce pobytu:
    TriCity
Odp: [ZX81] Wyzwanie programistyczne nr 1
« Odpowiedź #9 dnia: 2020.02.03, 15:34:24 »
No to zobaczymy :) Mając więcej miejsca na dane, może się o trochę grafiki (zx81'owej oczywiście;P) pokuszę! :D
ZX Spectrum +2 Grey | Commodore 64 | Commodore +4 | Atari 520 STF | Amiga 1200

Tygrys

  • Administrator
  • *****
  • Wiadomości: 4079
  • Miejsce pobytu:
    Warszawa
  • mistrz ceremonii
Odp: [ZX81] Wyzwanie programistyczne nr 1
« Odpowiedź #10 dnia: 2020.02.04, 09:54:23 »
Albo piszesz demo które siedzi w ROM i korzysta z RAM - choć to wymaga dużej dyscypliny aby nie tworzyć automodyfikowalnych procedur,
albo też przerzucasz wszystko do RAM i odpalasz program.

Dalthon

  • ****
  • Wiadomości: 370
  • Miejsce pobytu:
    TriCity
Odp: [ZX81] Wyzwanie programistyczne nr 1
« Odpowiedź #11 dnia: 2020.02.04, 12:58:25 »
No właśnie chce w ROM trzymać spakowane i rozpakowywać do RAM i stąd potrzeba więcej niż 8kB w RAM ;)
ZX Spectrum +2 Grey | Commodore 64 | Commodore +4 | Atari 520 STF | Amiga 1200

Klaud

  • *****
  • Wiadomości: 4809
  • Miejsce pobytu:
    trzecia planeta od Słońca
  • KL
Odp: [ZX81] Wyzwanie programistyczne nr 1
« Odpowiedź #12 dnia: 2020.02.12, 10:26:07 »
Podpowiedz, w jaki sposob mozna przetestowac binarke z ROMu w przestrzeni 8K-16K.

Do tego potrzeny bedzie emulator EightyOne (EO). Emulator konfigurujemy pod ZX81 ze standardowym 16KB RAM (w przestrzeni 16K-32K). Jesli ktos bedzie korzystal w WRX, to nalezy zaznaczyc te opcje. Zapisujemy konfiguracje, robimy reset emulowanego ZX81 i emulator jest gotowy. Aby wczytac przygotowany plik binarny, z menu "File", wybieramy "Load Memory Block", w okienku "Load Block..." wskazujemy plik do zaladowania i za adres podajemy 8192 (dziesietnie). Klikamy "Load File..." i nic sie nie dzieje, ale binarka zostala wczytana. Aby ja wywolac wydajemy komende RAND USR 8192 i jesli nasz programik dziala poprawnie, odpali sie. W zalaczniku plik z jednym z programow wydanych przez Timexa na kartch do samodzielnej zabawy.
KL
-----
R Tape loading error 0:1

tooloud

  • *****
  • Wiadomości: 2599
  • Miejsce pobytu:
    Warszawa
  • mydłem go!
Odp: [ZX81] Wyzwanie programistyczne nr 1
« Odpowiedź #13 dnia: 2020.02.14, 16:07:20 »
No właśnie chce w ROM trzymać spakowane i rozpakowywać do RAM i stąd potrzeba więcej niż 8kB w RAM ;)

ale, że nie zmieścisz się nagle w 256 bajtach?  :o :P
dużo sprzętu mało czasu.

Dalthon

  • ****
  • Wiadomości: 370
  • Miejsce pobytu:
    TriCity
Odp: [ZX81] Wyzwanie programistyczne nr 1
« Odpowiedź #14 dnia: 2020.02.14, 17:33:28 »
ale, że nie zmieścisz się nagle w 256 bajtach?  :o :P
zx81 ma duże pixele - nie mieszczą się w 256b :P
ZX Spectrum +2 Grey | Commodore 64 | Commodore +4 | Atari 520 STF | Amiga 1200