speccy.pl
Facebook Like


SPECCY.PL

[SPECCY.PL PARTY 2023.1]

[WIKI SPECCY.PL]
Polecamy

KOMITET SPOŁECZNY KRONIKA POLSKIEJ DEMOSCENY
PIXEL HEAVEN 2023
AYGOR
Forum ZX Spectrum
Zawartość panelu chwilowo niedostępna
Archiwum plików ZX Spectrum
Nawigacja
[Zin80#4] Jak zacząć... by szybko nie skończyć

Tekst został opublikowany w Zin80 #4

JAK ZACZĄĆ… BY SZYBKO NIE SKOŃCZYĆ.
by Dalthon

Sam proces programowania jest na tyle skomplikowany (szczególnie dla początkujących), że należy go sobie jak najbardziej uprościć, tak aby walczyć tylko z kodem a nie ze wszystkim dookoła.

Aktualnie jesteśmy w komfortowej sytuacji, ponieważ mamy do dyspozycji całą masę emulatorów, na których możemy testować nasze (przyszłe) programy. Podobnie jest z edytorami tekstu – każdy może wybrać sobie taki, który będzie mu najbardziej odpowiadał. Pozostaje jeszcze kwestia, jak to wszystko spiąć ze sobą, aby nie tylko działało dobrze, ale by było przede wszystkim wygodne i szybkie. I o tym jest właśnie ten artykuł, a przynajmniej takie są jego założenia.

Nim jednak przejdę do konkretów, małe przypomnienie jak to drzewiej bywało, byśmy docenili jak teraz mamy dobrze. Gdy zaczynałem swoją przygodę z programowaniem w 1988 roku (nie liczę prawie dwóch lat pisania w BASICu „na sucho", tj. ołówkiem na kartce w kratkę) do dyspozycji miałem rzecz jasna komputer (Timex TC2048) z magnetofonem i coś co wtedy było dla mnie ósmym cudem świata (dziewiątym był AY 3-8910 – nawet dwa demka o takim tytule popełniłem), przystawkę MultiFace z wbudowanym monitorem pamięci. To dzięki temu, zaczynając od szukania nieśmiertelności w grach, mogłem nauczyć się assemblera Z80. Podglądanie pamięci i jej modyfikacja były na wyciągnięcie ręki, a co najważniejsze efekt każdej zmiany można było zobaczyć od razu, nawet jeżeli tym efektem był reset.

Z racji ograniczonej pamięci komputera po wgraniu assemblera Gens, na sam kod pozostawało niewiele miejsca, a ładowanie go (z taśmy!) za każdym razem, kiedy coś poszło nie tak (czyli bardzo, bardzo często) nie miało większego sensu. Co więc pozostawało? Ano wprowadzanie kodu bajt po bajcie!

I tutaj z pomocą przyszedł Fox Monitor, który był narzędziem bardziej rozbudowanym od tego z Multiface’a i przede wszystkim był bardzo mały (4KB), co biorąc pod uwagę jak często trzeba było wgrywać go z taśmy, było na wagę złota. Mając go uruchomionego (w całości mieścił się w pamięci ekranu), można było tworzyć kod w dowolnie wybranym miejscu pamięci. „Klepało się” więc bajt po bajcie (no dobra – w przypadku adresów można było wprowadzać po dwa bajty – odpadało upierdliwe przeliczanie na bajt młodszy i starszy), zgrywało utworzony kawałek kodu, uruchamiało i niezależnie od efektów powtarzało się cały cykl od początku: wgranie Foxa, ładowanie kodu, modyfikacja, rozbudowa, zgranie i uruchomienie…

Prawda, że było to proste, przyjemne i jakże szybkie? Cały proces tworzenia kodu dość znacznie (delikatnie mówiąc) przyspieszył po nabyciu stacji FDD 3000, która mogła mieć Foxa siedzącego w jej pamięci. Nie tylko zgrywanie/wgrywanie na dyskietkę kodu było błyskawiczne, ale i samo uruchomienie monitora – pstryk i gotowe! Oczywiście procesu wprowadzania kodu już się przyspieszyć nie dało, ale zawsze było to coś.

Zawsze z szacunkiem patrzyłem na demka mające długie scrolle. Wiedziałem ile czasu autorzy poświęcili na ich wklepanie, bo nie tylko kod wprowadzało się bajt po bajcie – treść scrolli również! Trochę później wpadłem na oczywisty fakt, że można do tego wykorzystać Gensa – na kod pozostawało mało miejsca w pamięci, ale na sam tekst w zupełności wystarczało.

Opuśćmy teraz zeszły wiek i przenieśmy się do znacznie bliższej przeszłości - do roku 2012. Wtedy właśnie natrafiłem na stronę speccy.pl i na fanów sprzętów Sir Clive'a Sinclaira! Okazało się że można (ba, nawet trzeba!) dalej tworzyć produkcje na te maszynki. Napaliłem się „jak szczerbaty na suchary” a jako że dysponowałem większością emulatorów, zabrałem się za testy. No i na tych testach poległem… Cały zapał prysł gdy pomimo wielu prób, nie udało mi się uruchomić kodu którego źródła miałem, a o dojściu do etapu pisania własnych programów nie było nawet mowy. Tym sposobem straciłem sposobność by się reaktywować scenowo 5 lat wcześniej. Nie popełniajcie moich błędów i dbajcie o środowisko w którym pracujecie.

Skończmy jednak te historyczne opowieści i wróćmy wreszcie do 2021 roku, bo się zaraz okaże, że wstęp będzie dłuższy od właściwego artykułu! Obiecuję że od tego miejsca nie będzie już żadnych dygresji.

Tak jak już wspomniałem na wstępie, obecnie dostępność zarówno emulatorów jak i edytorów jest dość znaczna – nawet w przypadku assemblera mamy bogaty wybór. Niemniej, podam Wam zestaw, który sam użytkuję i z racji na dość długich testów, mogę z całą odpowiedzialnością polecić:

Emulator: Fuse https://fuse-emulator.sourceforge.net/

Edytor: ConTEXT https://www.contexteditor.org/index.php

Assembler: Pasmo https://pasmo.speccy.org/

Cały powyższy soft jest darmowy, więc nie ma potrzeby specjalnego kombinowania, aby go sobie „zassać” i bezproblemowo używać. Oczywiście zalecam pobranie najnowszych wersji, a w przypadku edytora uczulam by ściągnąć Desktop Version, bowiem Portable nie zapamiętuje ustawień, a są one w naszym przypadku kluczowe.

Gdy macie wszystko zainstalowane, należy to połączyć – wykorzystamy do tego funkcje dostępne w edytorze ConTEXT.

W tym celu przechodzimy w edytorze do konfiguracji: Opcje -> Konfiguracja. Jak sama nazwa wskazuje możemy tutaj ustawić, w jaki sposób ma zachowywać się edytor, bo każdy ma swoje upodobania. Niemniej skupię się wyłącznie na zakładce Aktywne klawisze, bo to dla nas jest najciekawsze.

Zaczynamy od dodania rozszerzenia, które będą miały nasze źródła – klikamy „Dodaj” i wpisujemy ‘asm’.

Pojawi się lista czterech klawiszy funkcyjnych, pod które możemy podpiąć odpowiednie działania. Pod F9 ustawiamy kompilowanie źródeł za pomocą assemblera Pasmo:
- wskazujemy miejsce gdzie zapisany assembler (ścieżka dostępu)
- w „Rozpocznij w” wpisujemy %p
- w „Parametry” wprowadzamy --tapbas %n %F.tap (przed tapbas są dwa myślniki!)
- „Okno” ustawiamy na „Normal”
- „Zapisz” wybieramy „Aktualny plik przed uruchomieniem”
- zaznaczamy opcje: Użyj krótkich 8.3 nazw plików,
Przechwyć wyjście konsoli i Przewiń konsolę do ostatniego wiersza.

Dla F10 analogicznie definiujemy dane potrzebne do uruchomienia emulatora: - wskazujemy miejsce gdzie mamy Fuse
- w „Rozpocznij w” wpisujemy %p
- w „Parametry” wprowadzamy -m 128 %p\%F.tap (co uruchomi ZX Spectrum w trybie 128)
- „Okno” ustawiamy na „Normal”
- „Zapisz” wybieramy „Aktualny plik przed uruchomieniem”
- zaznaczamy wyłącznie opcję „Użyj krótkich 8.3 nazw plików”

I to właściwie wszystko! No jeszcze może kilka drobnostek, które ułatwią pracę jeszcze bardziej.

Warto w konfiguratorze ConTEXT’a w zakładce „Edytor”, włączyć opcję „Numeruj wiersze” – będzie to pomocne przy znajdowaniu błędów wyskakujących przy kompilowaniu kodu. Tak, tak – przyzwyczajcie się do myśli, że (szczególnie na początku) będziecie popełniać błędy.

W emulatorze Fuse w Options -> General odznaczyć pole “Confim actions” – dzięki temu po naciśnięciu F10 program się zamknie bez potwierdzania. Niby tylko jedno kliknięcie mniej, ale przy testowaniu będziecie uruchamiali i zamykali go dziesiątki (jeśli nie setki) razy dziennie, co przełoży się na zwiększenie wygody i oszczędność czasu.

Ok, TERAZ to naprawdę wszystko!

Wystarczy tylko stworzyć w ConTEXT kod źródłowy swego wiekopomnego efektu, zapisać go na dysku (pamiętając o rozszerzeniu .asm) i naciskając F9 skompilować do pliku .tap. Oczywiście plik wynikowy dostaniemy, jeśli nie otrzymamy komunikatu o błędzie – a pewnie nie raz i nie dwa tak się stanie.

Dla potrzeb tego artykułu przyjmijmy jednak, że kompilacja zakończy się sukcesem i wcale nie jestem złośliwy...

...pozostaje tylko nacisnąć F10, aby uruchomił się emulator z naszym kawałkiem kodu!

Naciskając ponownie F10 zamykamy Fuse’a i wracamy automatycznie do dalszego pisania. Mając tak skonfigurowane środowisko możemy w kilka sekund przetestować zmiany wprowadzone do kodu: F9, F10 i ponownie F10 by wrócić do źródła.

Udanych kompilacji i efektów.

Brak komentarzy. Może czas dodać swój?
Dodaj komentarz
Zaloguj się, aby móc dodać komentarz.
Oceny
Tylko zarejestrowani użytkownicy mogą oceniać zawartość strony
Zaloguj się , żeby móc zagłosować.

Brak ocen. Może czas dodać swoją?