Autor Wątek: Kurs programowania w asm (dla ZX na początek)...  (Przeczytany 48023 razy)

tdu

  • *****
  • Wiadomości: 926
  • Miejsce pobytu:
    Gdansk
    • Nasze Wędrowanie
Odp: Kurs programowania w asm (dla ZX na początek)...
« Odpowiedź #90 dnia: 2019.06.11, 18:25:46 »
Zwracam honor, zrobiłeś tak jak było w tym podprogramie o nazwie "kasuj".
A zapis w niej był niepotrzebny, bo zapis odbywa się w innym podprogramie "pokaz".
Tak więc wyświetlanie odbywało się dwukrotnie w "pokaz" i "kasuj".
ZX81/ZX 48k/Zx48k+/ZX +2/ZX +2A/+3/TC2048/FDD3000/FDD5000/3"/3,5'/5,25'/Beta 48k Apina/D+/GP50s/DIVIDE CF/Masterface/Polbasic SamCoupe QL CPC6128/N100 MSX-SVI738  MSX2-VG8235

Dalthon

  • ****
  • Wiadomości: 428
  • Miejsce pobytu:
    TriCity
Odp: Kurs programowania w asm (dla ZX na początek)...
« Odpowiedź #91 dnia: 2019.06.11, 21:39:49 »
Wkleiłeś starą wersję podprocedury - zobacz punkt 7 w mojej wyliczance - zmieniłem LD BC,(50011)  Na LD A,(50011) LD C, A LD B,0
Nie analizowałem całego kodu - usprawniłem tylko by zadziałał ;) Walcz dalej - jak dodasz up/down, pochwal się tutaj :)
ZX Spectrum +2 Grey | Just Speccy 128 | ZX Spectrum Next | ZX-Uno 2MB |  Murmulator | Amstrad 6128 | MSX2 Philips VG-8235 | Commodore 64 | Commodore +4 | Atari 520 STF | Amiga 1200

Skinner

  • ****
  • Wiadomości: 367
  • Miejsce pobytu:
    Wlkp PL
Odp: Kurs programowania w asm (dla ZX na początek)...
« Odpowiedź #92 dnia: 2019.11.01, 21:12:26 »
Wiem że to non profit i tylko w wolnym czasie (którego nikt nie ma w nadmiarze) ale czy coś się może w tym temacie ma szanse urodzić?
Zaczęły się już w sumie długie zimowe wieczory i liźnięcie assemblera dla ZX wydaje się dobrym pomysłem na ich spędzenie ;)
2x 48k+, +2, HQ48 (under construction)

Tygrys

  • Administrator
  • *****
  • Wiadomości: 4537
  • Miejsce pobytu:
    Warszawa
  • mistrz ceremonii
Odp: Kurs programowania w asm (dla ZX na początek)...
« Odpowiedź #93 dnia: 2019.11.05, 10:07:53 »
Artykuł jest w połowie napisany, dzięki za pingnięcie, postaram się go szybko dokończyć, bo to już czas na wypuszczenie kolejnego numeru Zin80.

Tapicer28

  • *
  • Wiadomości: 6
Odp: Kurs programowania w asm (dla ZX na początek)...
« Odpowiedź #94 dnia: 2019.12.14, 12:49:24 »
Poszukuje
Z80 pełna listę komend
Mapę pamięci zx spectrum 128/48
Mapę pamięci nie tylko sektorowa, 8) 8) 8)
oficjalnie niby dostępna.
Przede wszystkim pełna z adresami rejestrów specjalnych do obsługi
hardware'u
Lista rejestrów w kolejności alfabetycznej
Lista rejestrów w kolejności adresowej

Dalej

Playfield
Spritey
Kolory
DMA
Przerwania
Interface joystick
Audio
Wszystko z uzytymi rejestracji nazwa/adres

ROM już mam zdisasemblowny na routiny :D


Tapicer28

  • *
  • Wiadomości: 6
Odp: Kurs programowania w asm (dla ZX na początek)...
« Odpowiedź #95 dnia: 2019.12.14, 12:54:15 »
A-ha!
Stronicownie pamięci na bloki.
Lista rejestrów sterujacych ;D

KWF

  • *****
  • Wiadomości: 6823
  • Miejsce pobytu:
    trzecia planeta od Słońca
  • "I co ja robię tu, u-u, co Ty tutaj robisz ..."
    • Insta do lasownia
Odp: Kurs programowania w asm (dla ZX na początek)...
« Odpowiedź #96 dnia: 2019.12.14, 13:29:49 »
KWF
-----
R Tape loading error 0:1
Moje zabawki: https://github.com/McKlaud76

ZbyniuR

  • *****
  • Wiadomości: 3333
  • Miejsce pobytu:
    Carlisle w UK
  • CPC AGA PSX
Odp: Kurs programowania w asm (dla ZX na początek)...
« Odpowiedź #97 dnia: 2019.12.14, 18:36:56 »
Tabela z listą rozkazów Z80 była w Bajtku 12-88 na str 23. Poniżej link oraz plik TXT.
http://atarionline.pl/biblioteka/czasopisma/Bajtek/Bajtek_1988_12.djvu
Kolejny plik to rozkazy Basica i Z80 z instrukcji ZX+3.

A obszerniej całe 30 stron o tych rozkazach Z80 było w specjalnym wydaniu IKS-a nr3 w 1987. :)
http://atarionline.pl/biblioteka/czasopisma/IKS/IKS_Zeszyty_Programow_Komputerowych_1987_03.djvu
Sam zdecyduj która postać wydaje ci się bardziej czytelna czy pomocna.
- Jeśli masz w domu światło i wodę, tzn. że masz światłowód. ;)

Tygrys

  • Administrator
  • *****
  • Wiadomości: 4537
  • Miejsce pobytu:
    Warszawa
  • mistrz ceremonii
Odp: Kurs programowania w asm (dla ZX na początek)...
« Odpowiedź #98 dnia: 2019.12.15, 15:49:11 »
Artykuł został już zaopiniowany przez eksperta od asm - matofesi, i 'nie jest źle' -- to takie polskie ;-)

Odezwałem się też do kilku osób, które zgłosiły się jako 'beta testerzy' - liczę na ich opinię.

jack_świdnik

  • *****
  • Wiadomości: 1641
  • Miejsce pobytu:
    Świdnik / Lublin
Odp: Kurs programowania w asm (dla ZX na początek)...
« Odpowiedź #99 dnia: 2019.12.15, 18:00:12 »
dla mnie jako kogoś kto w ogóle nigdy nie programował to poznanie tajniów tego języka będzie trudne
porównanie do basica jest bardzo dobre chociaż ja nie mam pojęcia jak sie programuje w basicu opócz tego poniżej bo więcej nic nie umiem

10 print "tekst"
20 goto 10
run

nie mam żadnego problemu z kompilacją jest bardzo prosta i na podstawie artykułu myslę że każdy da sobie radę
ciężkie dni przede mną ale dam radę  :D

zaczałem od końca i skompilowałem od razu Tygrysa gotowy program
moje marzenie: Timex 2048 128K

matofesi

  • *****
  • Wiadomości: 2048
  • Miejsce pobytu:
    Toruń/Poland
Odp: Kurs programowania w asm (dla ZX na początek)...
« Odpowiedź #100 dnia: 2019.12.16, 09:15:56 »
Niestety asm nie nadaje się na bycie "pierwszym językiem". Musisz mieć powiedzmy "średnie" pojęcie o programowaniu w ogóle, żeby móc się uczyć asm'a. Tekst Tygrysa daje dobry początek programującym w BASICu, ale niestety nie nieprogramującym.

I żeby nie było - "nie jest źle" - w tym wypadku oznacza, że "może ja bym to napisał inaczej, może byłoby moim zdaniem lepiej, ale jestem śmierdzącym leniem i nigdy się pewnie nie przekonamy" ;) Jak na materiał, który już jest jeśli czytelnik spełni założenia startowe to moim zdaniem będzie się w stanie nauczyć podstaw. A z kolejnych odcinków bardziej zaawansowanych rzeczy :)
« Ostatnia zmiana: 2019.12.16, 10:53:05 wysłana przez matofesi »

Maryjan

  • *****
  • Wiadomości: 6650
  • Miejsce pobytu:
    Skarżysko-Kam.
  • Scotch whiskey and West Highland Terrier
Odp: Kurs programowania w asm (dla ZX na początek)...
« Odpowiedź #101 dnia: 2019.12.16, 11:43:09 »
Najsampierw, jak to się mówi, należy nauczyć się układać algorytm programu, czyli co i jak oraz dlaczego i kiedy.
Jeśli mamy gotowy algorytm, można przystąpić do jego realizacji programowej.
Wtedy, nie ważne jakiego języka programowania się użyje.
Najwyżej program będzie działał szybciej lub wolniej.

Każdy język programowania wysokiego poziomu, posiada składnię i słowa kluczowe mają za zadanie maksymalnie ułatwić rozumienie kodu programu przez człowieka.
Czyli takimi językami są - BASIC, Turbo Pascal itp.

Językiem niskiego poziomu - takim jakimi są asemblery - już nie tak łatwo się posługiwać.
Jest np. opisane tutaj https://pl.wikipedia.org/wiki/J%C4%99zyk_niskiego_poziomu

Niestety, jest tak, że jeśli ktoś nauczy się najpierw programować w języku wysokiego poziomu,
ciężko wyeliminować nawyki i myślenie takim językiem chcąc posłużyć się asemblerem,
gdzie program trzeba pisać "na piechotę" operując na rejestrach procesora, bajtach i komórkach pamięci.

Wiem to ze swojego doświadczenia :)
"Co miałem powiedzieć - przeczytałem..." Nikodem Dyzma

SAJ

  • *****
  • Wiadomości: 1484
  • Miejsce pobytu:
    Terra Prime
Odp: Kurs programowania w asm (dla ZX na początek)...
« Odpowiedź #102 dnia: 2019.12.16, 11:57:40 »
Niestety asm nie nadaje się na bycie "pierwszym językiem". Musisz mieć powiedzmy "średnie" pojęcie o programowaniu w ogóle, żeby móc się uczyć asm'a.

Powiem Ci ze, moglbym sie pospierac, bo z autopsji wiem, ze mozna nabrac pojecia o programowaniu uczac sie assemblera. Wystarczy odpowiednie wprowadzenie.

Np gdy przyjmiemy, ze Procesor to nic innego jak obrabiarka do bajtow to w sumie podstawa juz jest. Procesor po krotce wyciaga sobie wartosc z pamieci, jakos ja przerabia i wkada ja spowrotem do pamieci, lub przeklada gdzies indziej. Czasem dostaje wartosc do wlozenia w pamiec bez poprzedniej obrobki. W Przypadku Z80 trzeba mu tylko na poczatku programu powiedziec gdzie ma stos, czyli miejsce, gdzie moze sobie odlozyc cos na chwile i mamy baze.

Jesli bawimy sie na Zx Spectrum to lokacja stosu jest ustawiana przy starcie systemu, wiec nawet o to nie trzeba sie martwic.

Program 1: Wymysl sobie wartosc i wstaw ja do jakiejs lokacji w pamieci.

To mozna rozwiazac dwiema komendami tylko po co ?

I tu sie zaczyna przygoda poznawania komputera, przywitanie z mapa pamieci i ogolnymi zasadami jak to dziala. Wstawiajac wartosc w miejsce $5800 w prawwym gornym rogu zmieni sie kolor. Wybierajac odpowiednia wartosc przed wstawieniem w ta lokacje mamy kontrole nad tym jaki to bedzie kolor. Wpisujac wartosc w pozycji $5801 obok pojawi sie kolor, nad ktorym tez mamy kontrole. W ten sposob powtarzajac prosta czynnosc, jak wstaw wartosc w pozycje w pamieci mozemy wyrzucic np prosta mozaike dowolnej pozycji ekranu. Kombinujac dalej w pozycjach w pamieci mozna zmienic punkty na ekranie co dodatkowo daje duzo wiecej mozliwosci.

To mozna osiagnac dwiem akomendami i za pomoca tylko tych dwoch komend LD i ST mozna spedzic pol dnia bawiac sie i kombinujac co jeszcze mozna ulozyc z tych kolorow.

Pierwsze co zacznie irytowac w trakcie zabawy to duza ilosc powtarzajacych sie czynnosci i z czystej potrzeby poznamy kolejne dwie komendy potrzebne do petli. W ten sposob nie tylko nie probujemy narzucic kontekstu petli komus nowemu w temacie ale wrecz odpowiadamy na pytanie "jak to zapetlic", czyli powtorzyc okreslona ilosc razy, ktore samo wyniklo z zabawy pierwszymi dwiema komendami, takze koncepcji tlumaczyc juz nie trzeba, wystarczy przedstawic kolejne dwie komendy i wyjasnic kondycje, czyli za kazdym razem w petli sprawdzanie, czy w wartosc licznika ma juz zero. To mozna sprawdziec w wiecej niz jeden sposob ale.......

Mysle, ze gdy sie pozna koncepcje w/g kroych dziala komputer, to sam jezyk programowania stanie sie tylko narzedziem, a zamiast uczyc sie co jaka komenda robi, wystarczy podrzucic pomysl na rozwiazanie drobnego problemu a uczen sam sobie znajdzie i dobierze komendy, ktorych potrzebuje.

Reszta jak mowia to bajka w ktorej jedynym limitem jest wyobraznia.

:)


SAJ

  • *****
  • Wiadomości: 1484
  • Miejsce pobytu:
    Terra Prime
Odp: Kurs programowania w asm (dla ZX na początek)...
« Odpowiedź #103 dnia: 2019.12.16, 12:16:55 »
Cytuj
Np gdy przyjmiemy, ze Procesor to nic innego jak obrabiarka do bajtow

Chcialbym to troche rozwinac, bo czesto co ludzi odrzuca od prob podejscia do nauki programowania, to ogolne przekonanie, ze to jest niewiadomo jak bardzo skomplikowane i na pewno za trudne, lub jak to niektorzy mowia: "Nie na moje nerwy".

Tu chcialbym nalozyc lekki nacisk na zdanie powyzej, Procesor to nie jest niewiadomo jak skomplikowany kombajn, ktory ma nieskonczona ilosc rzeczy, ktore dla wiekszosci moga pozostac tylko abstrakcja. Jesli tak nie jest to poprosze o sprostowanie ale Procesor albo wstawia wartosc jaka mu sie poda do lokacji w pamieci, albo wyciaga sobie wartosc z lokacji w pamieci, obrabia ja np przesuwajac bity i albo wstawia spowrotem albo gdzies indziej. To jest wlasciwie wszystko oprocz kilku spraw oczywistych jak mozliwosc do skakania do dowolnej lokacji w pamieci, co wychodzi z potrzeby wynikajacej z powyzszego.

To jest tyle i w gruncie rzeczy tam nic wiecej nie ma. Reszta wynika z tego, ze procesor robi to w miare szybko, przez co mozna wygenerowac obraz i dzwiek wychodzacy z komputera monitorujac przy tym klawiature lub joystick i przy zmianie stanu zmienic obrazek lub muzyczke.

Kiedys, zeby podejsc do komputera, w sensie zeby nawet byc dopuszczonym w poblize, to trzeba bylo miec nalepiej ze dwa fakultety lub profesure z matematyki, ale to wynikalo z tego, ze gdy w programie byl blad to cos moglo stanac w ogniu.

Dzisiaj przecietny zegarek na rece ma wiecej mocy obliczeniowej, niz NASA miala wysylajac ludzi na ksiezyc, a mimo to ten zegarek dziala dokladnie tak samo, czyli ma procesor, ktory nie robi nic wiecej niz: wyciaga, manipuluje i wstawia spowrotem wartosci do pamieci.

Przy dosc sporym uproszczeniu sprawy dla programisty pozostaje tylko sie dowiedziec jaka wartosc wstawic do ktorej lokacji w pamieci, zeby pojawil sie obrazek, lub zeby zagrala muzyczka, a ktora lokacja w pamieci trzyma wartosc, ktora powie ktory klawisz, lub w ktora strone jest wysuniety Joystick.

Pozdr.

« Ostatnia zmiana: 2019.12.16, 12:28:18 wysłana przez sajmosia »

KWF

  • *****
  • Wiadomości: 6823
  • Miejsce pobytu:
    trzecia planeta od Słońca
  • "I co ja robię tu, u-u, co Ty tutaj robisz ..."
    • Insta do lasownia
Odp: Kurs programowania w asm (dla ZX na początek)...
« Odpowiedź #104 dnia: 2019.12.16, 12:31:16 »
Pomijasz jedna wazna kwestie. Nie kazdy umie myslec abstrakcyjnie i przyczynowo-skutkowo. Gdyby bylo inaczej, kazdy bylby mistrzem w szachy.

Ze swojego doswiadczenia wiem, ze nie jestem w stanie napisac nic wiekszego niz kilka linii programu i to bez zlozonych petli, procedur, funcji i takich tam.
KWF
-----
R Tape loading error 0:1
Moje zabawki: https://github.com/McKlaud76