Autor Wątek: Amstrad Basic  (Przeczytany 20463 razy)

Abrimaal

  • *****
  • Wiadomości: 965
  • Miejsce pobytu:
    Lemmingrad
  • Zamulator
    • Games for ULA plus
Amstrad Basic
« dnia: 2013.02.18, 18:14:52 »
Oglądając listingi programów, które Zbyniu zamieścił w temacie Tricki (link), zauważyłem, że CPC ma bardzo rozbudowany Basic.
Czy ma ktoś listę instrukcji, wraz z parametrami i krótkim opisem, co robią.
Czym różni się INK od PEN?
Dlaczego BORDER 2 to inny kolor niż PAPER 2?
Zaskoczyło mnie jak niezwykle szybko CPC wypełnia całą pamięć ekranu 640x200 przez FOR...POKE...NEXT.
« Ostatnia zmiana: 2013.02.18, 18:56:43 wysłana przez Abrimaal »
AY Music, ULA plus.

ZbyniuR

  • *****
  • Wiadomości: 3333
  • Miejsce pobytu:
    Carlisle w UK
  • CPC AGA PSX
Odp: Amstrad Basic
« Odpowiedź #1 dnia: 2013.02.23, 23:33:19 »
Parametr w BORDER to kolor wybrany z całej palety czyli od 0 (czarny) do 26 (biały). Lista kolorów jest na obudowie stacji w 6128. Podając 2 parametry sprawimy że będzie mrugała tymi kolorami. Komendą INK wybieramy które kolory z tej pełnej palety chcemy mieć w tej chwili do dyspozycji. Zależnie od trybu ekranu możemy wybrać 2, 4 lub 16 kolorów z palety 27iu. np. -> MODE 2:INK 0,0:INK 1,18 <- przełączy na tryb dwukolorowy z czarnym tłem i zielonym penem. Pierwszy parametr w INK to 0 do max 15 w MODE 0, a drugi to kolor z tej palety tak jak w BORDER, dodając trzeci zbędny będzie mrugać. Odpowiednio zmieniając INKi można np zmienić kolor czegoś co już jest na ekranie bez modyfikowania pamięci ekranu, np sprawić by zniknęło nadając mu taki sam kolor jak ma tło, albo w kilku krokach (bo nie ma więcej odcieni) rozjaśniał się itp. Jeszcze komenda SPEED INK ustala jak długo wyświetla 1szy i 2gi kolor w mruganiu, konieczne 2 parametry czas 1go i 2go koloru, parametr 50 trwa 1ą sekundę. :)
A w PEN i PAPER wybierasz którymi kolorami chcesz bazgrać, podajesz jeden parametr 0 do max 15 odpowiadający pierwszemu parametrowi z INK a nie nr koloru z pełnej palety. Czyli jeśli wcześniej ustalisz że np. INK 2,6 to PEN 2 da czerwony a jak INK 2,13 to PEN 2 jest szary. :)
PEN graficzny ustalasz podając 3ci zbędny parametr przy komendach PLOT i DRAW lub w kilku innych. Dwa wcześniejsze to współrzędne pozioma i pionowa. Domyślne współrzędne 0,0 to lewy dolny róg a 320,200 to środek ekranu i to niezależnie od wybranej rozdzielczości. :)

Sorry jestem dziś rozkojarzony i nie wiem gdzie w najczytelniejszej wersji jest opis komend.
Tu są jakieś manuale: ftp://babel.no-ip.pl/CPC-6128/

Szczerze, nigdy nie posługiwałem się innymi Basicami więc nie mam porównania, ale słyszałem że w Spectrum najszybszy nie jest.
Sorry że tyle trwało zanim odpisałem. Zwykle sprawdzam tylko wątki na których już byłem, teraz ten już też do nich należy to następnym razem powinienem zareagować szybciej. :)
- Jeśli masz w domu światło i wodę, tzn. że masz światłowód. ;)

Abrimaal

  • *****
  • Wiadomości: 965
  • Miejsce pobytu:
    Lemmingrad
  • Zamulator
    • Games for ULA plus
Odp: Amstrad Basic
« Odpowiedź #2 dnia: 2013.02.24, 03:56:41 »
Cytuj
Tu są jakieś manuale: ftp://babel.no-ip.pl/CPC-6128/
- strona wymaga hasła.

Do tej pory uważałem Basic ZX Spectrum jako jeden z mocniejszych, porównując go do C64 i Atari XE,
ale ilość słów kluczowych i parametrów w CPC (oglądając Twoje listingi) bardzo pozytywnie mnie zaskoczyła.
Chyba jedynie SAM Coupe ma bardziej rozbudowany, ale nie ma co porównywać 1984 do 1990.

AY Music, ULA plus.

ZbyniuR

  • *****
  • Wiadomości: 3333
  • Miejsce pobytu:
    Carlisle w UK
  • CPC AGA PSX
Odp: Amstrad Basic
« Odpowiedź #3 dnia: 2013.02.24, 09:03:04 »
To stronka jednego z tubylców nawet nie pamiętam którego (oby mi to wybaczył) a sam ten kod na forum podawał.

http://cpcwiki.eu/index.php/Locomotive_BASIC    że też od razu na to nie wpadłem. :) Jeśli kojarzysz angielski to tu masz wszystko.

CPC 464 jako jedyny ma Basic 1.0 a pozostałe mają 1.1 bogatszy o kilkanaście komend i nieco inną składnię w kolejnych kilku.

ze 20 lat temu dużo pisałem w Basicu i z 1/3 komend nigdy nie potrzebowałem, za to często korzystałem z tzn. RSX-ów czyli dodatkowych komend doczytywanych z małego binarnego pliczku. Istnieje masa takich dodatków od 1ej do jakiś 20 nowych komend w zestawie, na wszelkie okazje. np.: Do wczytywania digitalizowanego dźwięku z taśmy, do wymawiania podanego tekstu, odczytu i zapisu pojedynczych sektorów i/lub całych plików, do przełączania banków pamięci albo używania ich jako RamDysku, do sprajtów, obiektów 3d, wyświetlania zegarka w rogu ekranu, wypełniania ekranu wzorami, do kompresji, do sortowania, do robienia menu i okienek, no po prostu cuda. ;) Szkoda że nie mam już tych kolekcji. :(

Co do porównania prędkości Basiców to pamiętam że w Atari XE był niewiele wolniejszy od CPC, a co do ilości rozkazów to chyba tylko w C128 i ZX+3 oraz GW Basic w PC czy jakieś Amosy w Amidze miały masę komend do wszystkiego, np. takie wynalazki jak pętle WHILE - WEND albo do obsługi przerwań AFTER i EVERY. Nie wydaje mi się by te przykłady z tej dyskietki były jakimś popisem Basica, obecnie jestem leniwym i niedouczonym typkiem nie to co kiedyś. :) Zazdroszczę Spectrumowi że ma krzywe Beziera, a w CPC pojęcia nie mam jakby coś takiego zrobić.
- Jeśli masz w domu światło i wodę, tzn. że masz światłowód. ;)

Micky

  • ***
  • Wiadomości: 157
  • Miejsce pobytu:
    Szczecin
Odp: Amstrad Basic
« Odpowiedź #4 dnia: 2013.02.24, 09:52:10 »
W linku trzeba umiescic login i haslo:
ftp://speccy:[email protected]/CPC-6128/

matofesi

  • *****
  • Wiadomości: 2048
  • Miejsce pobytu:
    Toruń/Poland
Odp: Amstrad Basic
« Odpowiedź #5 dnia: 2013.02.25, 07:08:38 »
Krzywe Beziera? W BASICu? Na Spectrum??? Gdzieś ty to wyczytał? ;)

ZbyniuR

  • *****
  • Wiadomości: 3333
  • Miejsce pobytu:
    Carlisle w UK
  • CPC AGA PSX
Odp: Amstrad Basic
« Odpowiedź #6 dnia: 2013.02.25, 09:37:03 »

W opisie komendy DRAW w ZX Basic, bodajże 3ci parametr.

- Jeśli masz w domu światło i wodę, tzn. że masz światłowód. ;)

matofesi

  • *****
  • Wiadomości: 2048
  • Miejsce pobytu:
    Toruń/Poland
Odp: Amstrad Basic
« Odpowiedź #7 dnia: 2013.02.25, 09:44:46 »
Eeee... To słabo czytałeś ;) Trzeci parametr to podany w radianach kąt łuku jaki ma być wyrysowany. Prosty fragment okręgu a nie żadne Beziery ;) Krzywej Beziera nie da się opisać jedynym dodatkowym parametrem dodanym do odcinka :)

Abrimaal

  • *****
  • Wiadomości: 965
  • Miejsce pobytu:
    Lemmingrad
  • Zamulator
    • Games for ULA plus
Odp: Amstrad Basic
« Odpowiedź #8 dnia: 2013.02.25, 19:04:23 »
Tak, trzeci parametr DRAW na Spectrum rysuje łuki np, jeśli jest równy PI, to rysuje półokrąg, jeśli 2*PI, to koło.
Wiem, że jakoś rysowało się gwiazdę, ale to chyba w pętli FOR - NEXT - STEP (?)
AY Music, ULA plus.

ZbyniuR

  • *****
  • Wiadomości: 3333
  • Miejsce pobytu:
    Carlisle w UK
  • CPC AGA PSX
Odp: Amstrad Basic
« Odpowiedź #9 dnia: 2013.02.25, 20:31:41 »

DEG:PLOT x,y+r:FOR k=0 TO 720 STEP 144:DRAW x+SIN(k)*r,y+COS(k)*r:NEXT

Tak się robi gwiazdę. :) Współrzędne i średnica jakie tam chcecie.

A czy w DRAW na ZX nie ma już 4go parametru? - Był kiedyś w Bajtku listing dla ZX do krzywych Beziera korzystający z tych łuków i nie wiedziałem jak to przetłumaczyć na CPC. Widocznie coś źle zinterpretowałem, taki błąd myślowy lub jak wolicie syntax error. ;)
Mea Culpa. :)
- Jeśli masz w domu światło i wodę, tzn. że masz światłowód. ;)

matofesi

  • *****
  • Wiadomości: 2048
  • Miejsce pobytu:
    Toruń/Poland
Odp: Amstrad Basic
« Odpowiedź #10 dnia: 2013.02.25, 20:35:40 »
DRAW nie ma czwartego parametru a gwiazdy o których pisze Abrimaal to błąd w procedurze rysonia łuków - o ile pamiętam przy odpowiednio dużych wartościach kąta (rzędu zbliżonego do 100*pi) algorytm głupieje i kolejne punkty "łuku" wypadają w różnych punktach na obwodzie koła - łączone odcinkami dają w efekcie "gwiazdy".

edit: Doczytałem - nie "duże wartości" tylko "nieparzyste wielokrotności pi". I zasadniczo też duże - przy małych efekt jest taki sobie. Przykładowy programik demonstrujący ten efekt znalazłem oczywiście w "Przewodniku po ZX Spectrum"
10 FOR i=51 TO 254 STEP 4 : CLS
20 PLOT 60,40 : DRAW 128,88,PI*(2*i-1)
30 NEXT i
« Ostatnia zmiana: 2013.02.25, 20:51:54 wysłana przez matofesi »

Abrimaal

  • *****
  • Wiadomości: 965
  • Miejsce pobytu:
    Lemmingrad
  • Zamulator
    • Games for ULA plus
Odp: Amstrad Basic
« Odpowiedź #11 dnia: 2013.02.25, 21:23:57 »
Tak, to jest to. Załączam snapshot.
Miałem kiedyś krótkie programiki w Basic (też na ZX) rysujące wielokąty w perspektywie, a także wykresy funkcji 3D,
listingi pojawiały się w Bajtku i podobnych pismach.

Ok, ale wracajmy do Amstrad Basic.
AY Music, ULA plus.

ZbyniuR

  • *****
  • Wiadomości: 3333
  • Miejsce pobytu:
    Carlisle w UK
  • CPC AGA PSX
Odp: Amstrad Basic
« Odpowiedź #12 dnia: 2013.02.25, 22:34:39 »
A tak było takie coś. :) Wolno się rysowało ale było piękne. Przerobiłem tak by odcień linii się zmieniał zależnie od tego czy się wznosiła, opadała lub była płaska, co wyglądało jakby te góry i fałdki jakie rysował były oświetlone z boku. Albo tak by linie miały różne kolory zależnie od wysokości na jakiej były, co w odpowiednio dobranej palecie przypominało mapę hipsometryczną. Pobawiłbym się w przekształcanie tego, gdybym miał podstawowy programik. Zwłaszcza że emulator pozwala przyspieszać. hehe Mniej cierpliwości miałem do czekania aż narysuje fraktala. Ale widziałem kiedyś w niemieckiej Amstradowej gazecie screeny z programu co je rysował w 16 kolorach w 3D. Piękne to było, ale nigdy mi nie wpadł w łapki.
- Jeśli masz w domu światło i wodę, tzn. że masz światłowód. ;)

ZbyniuR

  • *****
  • Wiadomości: 3333
  • Miejsce pobytu:
    Carlisle w UK
  • CPC AGA PSX
Odp: Amstrad Basic
« Odpowiedź #13 dnia: 2014.10.24, 17:52:43 »
Czy ma ktoś linka do spisu komend Basica do Sama Coupe albo do Commodore 128 ?
- Jeśli masz w domu światło i wodę, tzn. że masz światłowód. ;)

Abrimaal

  • *****
  • Wiadomości: 965
  • Miejsce pobytu:
    Lemmingrad
  • Zamulator
    • Games for ULA plus
Odp: Amstrad Basic
« Odpowiedź #14 dnia: 2015.11.18, 15:18:31 »
Co dokładnie robi instrukcja CALL &4000,&5000 ?

Czy to jest wywołanie procedury pod &4000 z wartością &5000 w rejestrze (którym?)
AY Music, ULA plus.