Strona 1 z 4
Mad Pascal
: 12 sty 2021, 14:36
autor: zbyti
Cześć, zostawiłem tę informację (z grubsza) jako komentarz pod dwoma art. na portalu, ale, że postanowiłem spróbować swoich sił w programowaniu dla Plus/4 to zakładam ten wątek.
Od paru miesięcy Mad Pascal ma podstawowe wsparcie dla C64 a od 2 dni także dla Plus/4.
źródła:
https://github.com/tebe6502/Mad-Pascal
dokumetajca:
http://mads.atari8.info/doc/pl/index.html
Przykładowy kod @carriona z art:
https://c64portal.pl/2020/05/04/program ... re-plus-4/ może wyglądać np. tak:
Kod: Zaznacz cały
var
COLORRAM : array [0..0] of byte absolute $0800;
SCREEN : array [0..0] of byte absolute $0c00;
BORDERCOLOR : byte absolute $ff15;
BGCOLOR : byte absolute $ff19;
var
w0i, row : word;
b0i, b1i : byte;
begin
BORDERCOLOR := 0; BGCOLOR := 0;
FillByte(@SCREEN, 40 * 25, $a0);
for b0i := 0 to 7 do begin
row := 40 * b0i;
for b1i := 0 to 15 do COLORRAM[row+b1i] := (b0i shl 4) + b1i;
end;
end.
efekt w załączniku.
Jak zrobię inne sample to będę wrzucał do tego wątku.
Zachęcam do spróbowania swoich sił :]
Re: Mad Pascal
: 12 sty 2021, 18:40
autor: carrion
@zbyti
fajny pomysł. Chętnie popatrzę jak to wychodzi w Pascalu. I chociaż nie zamierzam w nim programować to dobrze jak będą gdzieś w sieci gotowe przykłady dla tych co Pascala lubią.
Ciekawe ile wspólnych procedur (bibliotek) można wykorzystać wspólnie dla Atari i C+4.
btw: a da się w tym pisać dla C64?
Re: Mad Pascal
: 12 sty 2021, 18:50
autor: zbyti
carrion pisze: ↑12 sty 2021, 18:40
btw: a da się w tym pisać dla C64?
Tak, w takim samym zakresie jak dla Plus/4 (a nawet ciut większym, bo aktualnie dla Plus/4 trzeba napisać parę procedur w modułe SYSTEM, które dla C64 już są) ale tak naprawdę masz mniej więcej to samo jak sobie zrobiłeś w KickC target dla Plus/4 czyli szybki kompilator ale brak bibliotek graficznych i innych specyficznych dla danej platformy. Mi to nie przeszkadza bo i tak zamierzam napisać swoje.
Ogólnie chcę napisać kiedyś engine szachowy, to wtedy wypuszczę to na A8 i Plus/4 bo 6502 jest na tych platformach fajnie taktowany.
Kolorowy hires z Plus/4 (jak coś napiszę) jeżeli chciałbym przenosić na A8 to już chyba tylko opcja gdyby chciało mi się opanować VBXE a na to się nie zanosi.
Porównanie wydajności kompilatorów KickC i Mad Pascal można obadać na Atari za pomocą:
https://github.com/zbyti/a8-mad-pascal-bench-suite
https://github.com/markjfisher/kickc-benchmarks
Re: Mad Pascal
: 12 sty 2021, 22:59
autor: rime.
Testowałem P65Pas, Pas6502, TRSE a teraz czas na Mad-Pascal. Jako fan języka Pascal (i pochodnych) słyszałem już wcześniej o MP, ale w kontekście kompilatora dla 8 bitowych Atari. Nie wiedziałem, że dodano wsparcie dla C64 i dopiero teraz swoim postem mnie uświadomiłeś. Skompilowałem przed chwilą przykład "pas6502_test" i uzyskałem plik z rozszerzeniem .obx, no i pytanie co dalej, jak uzyskać PRG ?
Re: Mad Pascal
: 12 sty 2021, 23:08
autor: zbyti
rime. pisze: ↑12 sty 2021, 22:59
pytanie co dalej, jak uzyskać PRG ?
Kod: Zaznacz cały
#!/bin/bash
mp="$HOME/Programs/MadPascal/mp"
mads="$HOME/Programs/mads/mads"
base="$HOME/Programs/MadPascal/base
if [ -z "$1" ]; then
echo -e "\nPlease call '$0 <argument>' to run this command!\n"
exit 1
fi
$mp $1 -t c64 -z 10 -o
name=${1::-4}
if [ -f $name.a65 ]; then
[ ! -d "output" ] && mkdir output
mv $name.a65 output/
$mads output/$name.a65 -x -i:$base -o:output/$name.prg
else
exit 1
fi
if [ ! -z "$2" ]; then
x64 output/$name.prg
fi
Gdyby powyższy skrypt nie odpowiedział na Twoje pytanie to napisz jeszcze raz a opiszę to bardziej szczegółowo :]
Re: Mad Pascal
: 12 sty 2021, 23:18
autor: zbyti
W kontekście Mad Pascala polecam używać z repo ostatnią "zacommitowaną" wersję a nie "stary" oficjalny release 1.6.4.
Ja wszystko piszę na 1.6.5 a dokładnie zawsze pobieram ostatnią wersję z repozytorium.
Re: Mad Pascal
: 13 sty 2021, 02:45
autor: rime.
Dzięki, pobrałem programy bezpośrednio z repozytorium, teraz wygląda to dobrze. Poniższe zostawiam dla tych którzy też szukają niższego progu wejścia ;-D
Kod: Zaznacz cały
mp pas6502_test.pas -target:c64
mads pas6502_test.a65 -x -i:base -o:pas6502_test.prg
Re: Mad Pascal
: 13 sty 2021, 03:03
autor: zbyti
rime. pisze: ↑13 sty 2021, 02:45
Dzięki, pobrałem programy bezpośrednio z repozytorium, teraz wygląda to dobrze. Poniższe zostawiam dla tych którzy też szukają niższego progu wejścia ;-D
Kod: Zaznacz cały
mp pas6502_test.pas -target:c64
mads pas6502_test.a65 -x -i:base -o:pas6502_test.prg
mimo wszystko dałbym:
bo chyba dla C64 trzeba podać inne miejsce dla programowego stosu niż jest domyślnie dla A8, spojrzę jeszcze do kodu czy target to rozróżnia, ale ja używam flagi "z" i "o".
Re: Mad Pascal
: 13 sty 2021, 12:37
autor: zbyti
@rime tak, dla C64 i C+4 musisz posłużyć się flagą "z" i określić początek stosu programowego dla MP na stronie zerowej, proponuję 10 (czyli $10).
Re: Mad Pascal
: 13 sty 2021, 13:43
autor: Steffan
zbyti pisze: ↑13 sty 2021, 12:37
@rime tak, dla C64 i C+4 musisz posłużyć się flagą "z" i określić początek stosu programowego dla MP na stronie zerowej, proponuję 10 (czyli $10).
Z tym 10 to pewnie chodzi o $a?
Tak nie bardzo kumam o co chodzi z tym stosem programowym. Jeśli będziemy tam zapisywać "swój" odrębny stos (bo tak to rozumiem) nadpiszemy sobie komórki strony zerowej i będzie zonk. Pewnie coś kręcę, więc mnie popraw.
Steffan
Re: Mad Pascal
: 13 sty 2021, 13:52
autor: zbyti
Steffan pisze: ↑13 sty 2021, 13:43
Z tym 10 to pewnie chodzi o $a?
Tak nie bardzo kumam o co chodzi z tym stosem programowym. Jeśli będziemy tam zapisywać "swój" odrębny stos (bo tak to rozumiem) nadpiszemy sobie komórki strony zerowej i będzie zonk. Pewnie coś kręcę, więc mnie popraw.
MP od razu zakłada, że podajesz liczbę szesnastkowo, więc pisząc
-z 10 chodzi i 16 komórkę na stronie zerowej.
Nie jestem ekspertem od C+4 ale on chyba ma stronę zerową z grubsza podzieloną tak jak C64, czyli $0-$7f zmienne BASIC, nie używamy BASIC, więc możemy nadpisywać, $80-$ff system, do póki nie wyłączymy OS nie ruszamy
Stos programowy jest wykorzystywany przy np. rekurencji, są też na stronie zerowej zmienne pomocnicze MP wykorzystywane przy obliczeniach.
Re: Mad Pascal
: 14 sty 2021, 11:16
autor: zbyti
OK, zrobiłem PR i jak wejdzie, nie będzie potrzeba dla C64 i C+4 podawać adresu dla stosu jeżeli kogoś zadowolą domyślne ustawienie czyli $10.
https://github.com/tebe6502/Mad-Pascal/pull/12
sieve 1899 C64 Vs. C+4 Vs. A8
: 17 sty 2021, 16:54
autor: zbyti
Mad Pascal - Joystick
: 20 sty 2021, 15:12
autor: zbyti
Kod: Zaznacz cały
const
JOY_SELECT_1 = %00000010;
JOY_SELECT_2 = %00000100;
var
joy : byte absolute $ff08;
keyPio : byte absolute $fd30;
var
tmp : byte;
begin
repeat
joy := JOY_SELECT_1; keyPio := $ff;
tmp := joy xor $ff;
case tmp of
1 : writeln('UP = ', tmp);
2 : writeln('DOWN = ', tmp);
4 : writeln('LEFT = ', tmp);
8 : writeln('RIGHT = ', tmp);
64 : writeln('FIRE = ', tmp);
end;
pause(2);
until false;
end.
Mad Pascal - Siege AI
: 13 lut 2021, 20:44
autor: zbyti
Powyższe benchmarki były w PAL. W PAL A8 podbija zegar 1/50 sekundy a podobno C+4 i C64 robią to 1/60 także jak ktoś chce mieć prawidłowe wyniki musi puścić to w NTSC.
---
Czytam właśnie Writing Strategy Games On Your Atari Computer i postanowiłem napisać sobie jaką piaskownicę do testowania pomysłów na AI.
Jak ktoś chce dołączyć do zabawy to może zmodyfikować przykładowe (bardzo proste i głupie) AI pobierając kod z
https://github.com/zbyti/siege-ai-playground
Można pograć ale na ten moment zaimplementowane AI nie jest żadnym wyzwaniem dla człowieka. Będę te AI rozwijał w wolnych chwilach.
Re: Sieve
: 14 lut 2021, 14:59
autor: zbyti
zbyti pisze: ↑13 lut 2021, 20:44
Powyższe benchmarki były w PAL. W PAL A8 podbija zegar 1/50 sekundy a podobno C+4 i C64 robią to 1/60 także jak ktoś chce mieć prawidłowe wyniki musi puścić to w NTSC.
Chociaż może i nie są niepoprawne, te zegary na C64 i C+4 to chodzą w PAL zawsze 60x na sekundę chyba tylko przy wyłączonym ekranie. Przy włączonym wynik wydaje się miarodajny.
Nie ogarniam jeszcze tych różnic.
Siege AI Playground
: 14 lut 2021, 20:10
autor: zbyti
Generalnie skończyłem piaskownice dla AI i wykonałem boty tak, że już można z nimi pograć, do zera raczej się nie dadzą ograć :] Może w wolnej chwili dopiszę jakieś bardziej wyrafinowane
https://github.com/zbyti/siege-ai-playground
Czy ktoś ma czas sprawdzić czy to działa na prawdziwym C+4? PRG w załączniku jako ZIP.
- siege.gif (1.21 MiB) Przejrzano 3751 razy
Siege AI Playground - 4x AI 8x plansze
: 17 lut 2021, 23:20
autor: zbyti
Do poprawy jeszcze sterowanie, bo chyba przy tak szybkiej rozgrywce musi być co ramkę na przerwaniu.
Szkoda, że nikt nie ma ochoty potestować, czy się odpala na C16/C116/C+4 chyba muszę uderzyć na zagraniczne fora.
Jakby ktoś jednak się skusił to WIP jeszcze bez grafiki w załączniku. Teraz rysuję grafę na fontach, a że nie umiem to będzie jak będzie :]
---
Eeeee... nie dodam, bo server twierdzi, że nie ma miejsca nawet na 2KB załącznik.
Mała gra (o) TRON :]
: 19 lut 2021, 13:00
autor: zbyti
Jakby kogoś interesowało programowanie w Mad Pascalu to przykładowa gierka, właśnie skończyłem
https://github.com/zbyti/siege-ai-playground
- tron.gif (1021.46 KiB) Przejrzano 3673 razy
Re: Mad Pascal
: 19 lut 2021, 13:05
autor: carrion
Nooo. Bardzo ładnie wyszło. Gratulacje.
Nie zrażaj się że nie ma odpowiedzi bo te wątki o C+4/16/116 to nadal nisza, ja czytam i pewnie w weekend sprawdzę grę na real-sprzęcie.
Czy pisałeś już na Plus4World.com z informacją że powstała nowa gra?
Ja spróbuje i może pokuszę się o jakiś mini filmik na kanale portalu.
Jeszcze raz gratulacje skończenia pierwszego projektu na commodore
!