Autor Wątek: Pytania od bardzo początkującego  (Przeczytany 40148 razy)

mad1

  • **
  • Wiadomości: 82
Pytania od bardzo początkującego
« dnia: 2013.11.22, 12:45:44 »
Cześć
Jestem byłym posiadaczem ZX Spectrum+, z którym spędziłem dzieciństwo i niestety parę lat temu go sprzedałem czego teraz żałuję. Pisałem w Basicu jakieś proste programiki, a teraz chciałbym powrócić do miłych wspomnień i się tym znowu pobawić, zwłaszcza gdy widzę, że w Polsce jest całkiem duża społeczność, która coś na niego tworzy. Nie wiem czy ludzie powrócili do tematu czy zawsze tak było. Chciałbym coś napisać prostego a może i się nawet tym podzielić.

Na początku mam dla was 2 pytania:
1. Jakie jest najlepsze środowisko do programowania w BASIC-u, tak bym mógł pisać w trybie tekstowym a wynik swojego programu od razu podejrzeć jak działałby na spectrumie.
2. Jaki program polecacie do tworzenia obrazków "loading screen"?
3. Czy warto zapoznać się początkującemu z asseblerem(bo słyszałem, że też w nim można pisać), jeśli tak czy są jakieś publikacje(po polsku) dedykowane spectrumowi na ten temat. Czy tez może lepiej sobie odpuścić?

sect0r

  • *****
  • Wiadomości: 698
  • Miejsce pobytu:
    Oltedal/NO
  • speccyholic
Odp: Pytania od bardzo początkującego
« Odpowiedź #1 dnia: 2013.11.22, 14:04:17 »
Witamy Serdecznie!

2. Polecam ZX Paintbrush

1 i 3. Od razu przeskakuj na assembler, z publikacjami w naszym języku krucho. Nie wiem jak to kiedyś bywało, ale wydaj mi się że się nie dzielili ;D. Wypadałoby zacząć od poznania się wpierw z rozkazami procesora Z80 (lektura obowiązkowa na początek) - które są fantastycznie opracowane po naszemu na stronie
http://edu.i-lo.tarnow.pl/inf/retro/004_z80_inst/index.php
Odnośnie samego asemblera dla spektrum to książki są po angielsku na WOS'ie, ale na forum mamy sporo znanych postaci ze świata ZX Spectrum, także napewno na pomoc , czy wyjaśnienie pewnych zjawisk można liczyć.
Na stronie głównej znajdziesz kilka artykułów odnośnie programowania:
http://www.speccy.pl/articles.php?cat_id=3
Jeśli angielski Ci nie straszny, to jest kilka tutoriali w sieci jak na przykład ten przy użyciu ZX Spin (polecam ten emu do nauki, wbudowany assembler, debugger)
http://chuntey.wordpress.com/2012/12/18/how-to-write-zx-spectrum-games-chapter-1/

Grunt to nie odpuszczać!
Jak będziesz chciał się pochwalić twórczością, to nie zapomnij opublikować tego na forum :D
Szarak # DivIDE+ # MasakratorFM DeluXe by Zaxon

Tygrys

  • Administrator
  • *****
  • Wiadomości: 4427
  • Miejsce pobytu:
    Warszawa
  • mistrz ceremonii
Odp: Pytania od bardzo początkującego
« Odpowiedź #2 dnia: 2013.11.22, 14:24:11 »
Witaj na forum!

Co do drugiego pytania, do program nazywa się BASin i działa pod Windowsem. Do ściągnięcia ze strony https://sites.google.com/site/ulaplus/home/zx-spin-and-basin  Wygodny do pisania programów, a wbudowany emulator ZX Spectrum sprawia, że masz dokładnie to, czego potrzebujesz.

Pytanie numer 3, jest coraz większa potrzeba napisania kursu programowania w Z80, oraz wykorzystania go w ZX Spectrum.
To wskazówka do tego aby zacząć działać.


RafalM

  • *****
  • Wiadomości: 1133
  • Miejsce pobytu:
    Sulejówek
Odp: Pytania od bardzo początkującego
« Odpowiedź #3 dnia: 2013.11.22, 15:00:39 »
Cytuj
2. Jaki program polecacie do tworzenia obrazków "loading screen"?

Photoshop? ;)

Tak naprawdę to są trzy opcje:

- rysować w programie działającym na Spectrum  (Art Studio, Melbourne Draw, Leonardo, Burial), w emulatorze lub jeśli jesteś hardkorem to na prawdziwym Spectrum :)

- rysować w programie na PC napisanym specjalnie do wspierania trybu graficznego Spectrum (wspomniany Zx Paintbrush)

- rysować w dowolnym programie graficznym (jak wspomniany Photoshop) pamiętając o ograniczeniach Spectrum. Można to sobie ułatwić ustawiając paletę Spectrum i siatkę 8x8 pikseli (pomocne by nie używać więcej niż 2 kolorów w atrybucie)

RafalM

  • *****
  • Wiadomości: 1133
  • Miejsce pobytu:
    Sulejówek
Odp: Pytania od bardzo początkującego
« Odpowiedź #4 dnia: 2013.11.22, 15:03:55 »
A co do asemblera to warto spróbować, chociaż jeśli nie zajmowałeś się programowaniem przez ponad 20 lat to może być trochę ciężko. Widzę to niestety po sobie - w pewnym wieku coraz trudniej się chłonie nową więdzę.
Ale spróbuj :)

Gryzor

  • *****
  • Wiadomości: 1931
  • Miejsce pobytu:
    Warszawa
Odp: Pytania od bardzo początkującego
« Odpowiedź #5 dnia: 2013.11.22, 16:55:20 »
Na poczatek warto zajrzec do polskiego Przewodnika po ZX Spectrum.

mad1

  • **
  • Wiadomości: 82
Odp: Pytania od bardzo początkującego
« Odpowiedź #6 dnia: 2013.11.22, 21:50:12 »
Dzięki chłopaki za liczny odzew, śpieszy mi się jednak do "szybkich" efektów mojej pracy więc na razie przystanę przy Basicu bo widzę, że długo musiałbym się wgłębiać w assemblera, niemniej jednak linki wyżej podane na pewno wielu się przydadzą.
Zgodnie z waszymi sugestiami pobrałem ZX Paintbrush oraz BASin(świetny programik). Trochę się nimi pobawiłem i mam do was następne pytania.
Napisałem sobie najprostszy program jaki był możliwy(w BASin), ale chciałbym by został on wczytany po wcześniejszym załadowaniu się obrazka (loading screen) jak ma to miejsce w większości gier. BASin posiada także swój własny edytor screenów, jednak nie potrafię takiego screena dołączyć(testuje programik na innym emulatorze w czasie rzeczywistym). Ponadto w ZX Painbrushu zapisałem niby mój screen w formacie .scr a nawet .tap, ale nie wiem co dalej zrobić by załączyć takiego screena do programu.
Czy ktoś się bawił tymi programami i dogrywaniem screenów do swoich spectrumowych programów i mógłby mi przybliżyć jak to zrobić?

RafalM

  • *****
  • Wiadomości: 1133
  • Miejsce pobytu:
    Sulejówek
Odp: Pytania od bardzo początkującego
« Odpowiedź #7 dnia: 2013.11.23, 14:45:05 »
Jeśli program składa się z kilku części wczytywanych jako osobne bloki danych, to zwykle pierwszy blok to loader czyli krótki programik którego jedynym zadaniem jest wczytać wszystko do pamięci i uruchomić właściwy kod jak już wszystko się wczyta.

U ciebie taki loader mógłby mięc postać:

1 load "" screen$
2 load ""


Pierwsza linia wczytuje obrazek.
Druga doczytuje właściwy program w Basicu i go uruchamia

Zarówno loader jak i właściwy program warto zapisać przez:

save "nazwa" line 1

gdzie line 1 znaczy że program ma wykonać autostart od linii o podanym numerze. Inaczej program się wczyta ale nie uruchomi.

Czyli na taśmie będzies miał po kolei 3 bloki danych:

-loader
-obrazek
-właściwy program

Teraz jak połączyć dwa .tapy - z programem i obrazkiem... Niestety, sam nie wiem czemu, większość emulatorów nie pozwala na taką operację i z niby prostej rzeczy robi się rzecz wcale nie taka prosta. Są różne narzędzia pozwalające to robić i pewnie każdy ma jakieś swoje ulubione:

Ja używam programu Tapir, możesz zobaczyć czy ci się spodoba:
ftp://ftp.worldofspectrum.org/pub/sinclair/tools/pc/tapir1.0.zip




mad1

  • **
  • Wiadomości: 82
Odp: Pytania od bardzo początkującego
« Odpowiedź #8 dnia: 2013.11.23, 18:50:02 »
@RafalM

Dzięki. Niezmiernie mi pomogłeś. Dzisiejsze popołudnie przyniosło dzięki Tobie postęp, umiem już poprzedzić program screenem. Ale zatrzymałem się na pewnej rzeczy. Mam też kilka pytań. Ogólnie sprawdziłem tapir, ale widziałem, że Basin też ma "tape creator'a" z którego skorzystałem.

Otóż na pierwszy rzut stworzyłem .tap typu:

1 LOAD ""SCREEN$
2 PRINT "Wlasciwy program"


Czyli loader, który wczytuje w jednym bloku SCREENA oraz jednocześnie po nim program.

Teraz odniosę się do Twojej koncepcji. Czyli wczytywania się "właściwego" programu w nowym bloku, po wcześniejszym wczytaniu się SCREENA. Czyli poprzez:

1 LOAD ""SCREEN$
2 LOAD ""


Następnie chciałem stworzyć nowy blok(bytes) z "właściwym programem" jako

3 PRINT "Właściwy program"

jednak zarówno Basinie i Tapirze wyskoczyło mi okienko żebym podał "Start adress" oraz "lenght", o co chodzi w tej adresacji? jakie prawidłowe wartości muszę tam podać aby było dobrze?

Jakie zalety ma tworzenie nowego bloku w stosunku do metody, którą zastosowałem trochę wyżej? Czy kolejność  instrukcji w nowym bloku można numerować z powrotem od 1 czy kolejność musi być zachowana?

Tygrys

  • Administrator
  • *****
  • Wiadomości: 4427
  • Miejsce pobytu:
    Warszawa
  • mistrz ceremonii
Odp: Pytania od bardzo początkującego
« Odpowiedź #9 dnia: 2013.11.24, 09:12:40 »
Kolejnym blokiem powinienm być jednak program w BASIC, a nie blok danych.
Obecna sytuacja ma się tak:
1 - ładujesz program w BASICu
2 - ładujesz obrazek (blok binarny)
edit: LOAD ""SCREEN$ odpowiada poleceniu LOAD""CODE 16384

3 - ładujesz ponownie program w BASICu (LOAD "")

Nowo załadowany program w BASIC nadpisze w pamięci ten, z którego uruchomiłeś LOAD ""

A co do pytania to start address i length w bloku binarnym, to start address to adres pamięci RAM w ZX Spectrum, do którego blok ma być domyślnie załadowany. lenght zaś to jego długość.  Adres startowy ma znaczenie jeżeli ładujesz blok za pomocą LOAD""CODE. Aby zmienić adres ładowania bloku binarnego, po prostu podajesz jego nowy adres docelowy: LOAD ""CODE nowy_adres.
« Ostatnia zmiana: 2013.11.24, 10:46:40 wysłana przez Tygrys »

mad1

  • **
  • Wiadomości: 82
Odp: Pytania od bardzo początkującego
« Odpowiedź #10 dnia: 2013.11.24, 12:52:35 »
@Tygrys, dzięki za wyjaśnienia
Bawiłem się w "memory block" bo na początku zrobiłem tak jak mówisz by wczytało nowy blok jako program ale miałem jakiś błąd "Nonsense in Basic", jednak po Twoim poście spróbowałem raz jeszcze i teraz poprawnie się wszystko załadowało, więc musiałem coś chyba wcześniej źle zrobić. Niemniej dzięki za wyjaśnienie "memory block".

Ok teraz mam następne pytanie, jak widać na załączonym obrazku wczytanie nowego bloku z programem powoduje, że zostaje mi nadpisany kawałek screen'a, czy w Basicu można jakoś zrobić by tytuł bloku nie nadpisywał mi obrazka? można zrobić jakieś proste zabezpieczenie?


Tygrys

  • Administrator
  • *****
  • Wiadomości: 4427
  • Miejsce pobytu:
    Warszawa
  • mistrz ceremonii
Odp: Pytania od bardzo początkującego
« Odpowiedź #11 dnia: 2013.11.24, 13:32:50 »
Jest na to sposób.

pierwszy, szybszy:
POKE 23739,111

Zadziała na Spectrum bez dodatkowych rozszerzeń takich jak ZX Interface. Emulatory dość często mają go włączonego, więc wersja dłuższa powinna pomóc:

POKE PEEK 23631+256*PEEK 23632+5,111

Phonex

  • *****
  • Wiadomości: 1232
  • Miejsce pobytu:
    Warszawa
Odp: Pytania od bardzo początkującego
« Odpowiedź #12 dnia: 2013.11.24, 15:08:48 »
Jeżeli ostatni ładowany blok to własny program w Basicu, to może być potrzebne dopisanie na samym początku "odwołania" tego, czyli przywrócenia poprzedniej wartości: POKE 23739, 244.
W przeciwnym wypadku mogą być problemy np. z kolorami na ekranie.

mad1

  • **
  • Wiadomości: 82
Odp: Pytania od bardzo początkującego
« Odpowiedź #13 dnia: 2013.11.24, 17:36:54 »
Dzięki Tygrys, działa:) Phonex thx, będę miał to na uwadze. Skoro już umiem stworzyć interfejs ładowania, czas napisać jakiś programik.

Tygrys

  • Administrator
  • *****
  • Wiadomości: 4427
  • Miejsce pobytu:
    Warszawa
  • mistrz ceremonii
Odp: Pytania od bardzo początkującego
« Odpowiedź #14 dnia: 2013.11.25, 07:40:16 »
Powodzenia! Pochwal się rezultatami ;)