1

Temat: Mad Pascal

Ponieważ tebe jako twórca nie założył tematu, to pozwolę sobie go wyręczyć.

Mamy nowy język dla Atari 8-bit:
http://atariage.com/forums/topic/240919-mad-pascal/

Zwycięskie intro z Głuchołaz, było napisane właśnie w nim i źródła są dołączone jako przykład.
Dokumentacja na razie mizerna, ale sporo potrzebnych wiadomości można wyczytać z wątku na Atariage i bezpośrednio z kodu (pliki system.pas, graph.pas itd.).

2

Odp: Mad Pascal

Przyznam, że na razie mam mieszane uczucia. Bardzo cieszyłbym się z wydajnego stabilnego Pascala na Atari. Ale ilość zaimplementowanych poleceń jest na razie niewielka. Rzut oka na dołączone PasIntro trochę mnie rozczarował, bo okazało się, że wszystko co "gęste" zostało napisane w asm, i jedynie "opakowane" w procedury Pascala.

Specyfika Atari powoduje też, że mnóstwo rzeczy musi być w tej chwili konfigurowane Poke'ami, co nie jest eleganckie ani czytelne w języku wysokiego poziomu.

Więc na razie chcąc zrobić w Mad Pascalu coś bardziej zaawansowanego nie da się chyba uniknąć miszmaszu asemblerowo-pascalowego.

W lekką konfuzję wprowadziły mnie też takie potencjalne pułapki:
http://atariage.com/forums/topic/240919 … try3286894
choć po zastanowieniu, ma to oczywiście sens.

Ale może po prostu trzeba się do tego języka przyzwyczaić. Spróbuję napisać coś prostego, zbudować jakąś własną bibliotekę.

tebe czy planujesz rozbudowywać biblioteki, ewentualnie dołączać biblioteki napisane przez innych i kontrolować standard swojego języka?

Ostatnio edytowany przez nosty (2015-07-30 12:26:12)

3

Odp: Mad Pascal

nic nie pisałem bo chciałem poczekać do pełniejszej wersji, tak będzie tego więcej, możesz też pomóc :)

POKE nie będzie potrzebne jeśli zostanie dodane ABSOLUTE

var COLBAKS: byte absolute 712;

COLBAKS = $88;       // POKE już nie potrzebne

inicjowanie zmiennych globalnych (na lokalnych to nie działa)

var a : byte = $aa;
      temp: array [0..3] of byte = ($c0,$40,$20,3);

optymalizacja kodu poprzez grupowanie rozkazów

tak, jest jeszcze wiele do zrobienia, aktualnie chciałem dodać READ, ale jeśli chcę to zrobić po "bożemu" przez K: to nie działa bez DOS-u, aktualnie na liście rzeczy do zrobienia jest USES, {$I FILENAME}, ABSOLUTE, READ / READLN

p.s.
w ACUSOL (taki ACTION na PC) występuje ten sam problem z pętlą której licznik osiąga maksymalny zakres typu licznika (0..255), będę podpatrywał ACTION

*- TeBe/Madteam
3x Atari 130XE, SDX, CPU 65816, 2x VBXE, 2x IDE Plus rev. C

4

Odp: Mad Pascal

A jak będzie ze wsparciem (lub konfliktem) z "API" SpartaDOSX?

.: miejsce na twoją reklamę :.

5

Odp: Mad Pascal

Ja bym nie dodawał absolute bo wtedy tracimy czytelność:

COLBAKS := $88;

To przypisanie do zmiennej czy wpisanie do pamięci ?
Nie lepiej zrobic jednak POKE ? Albo operator ^ czyli zapis do/z pamieci pod wskaźnikiem tak jak to jest w Pascalu ?

Ostatnio edytowany przez BartoszP (2015-07-31 10:26:49)

6

Odp: Mad Pascal

A ja prawdę mówiąc myślałem, że będzie jeszcze bardziej "wysokopoziomowo", czyli pojawią się biblioteki obsługujące instrukcje takie jak:

DefColor("COLOR0", $40)
GetJoyStatus(0)
SetPMGPriority($02)

itp.

Dla programisty asemblerowego znającego na pamięć rejestry to przerost formy, ale chyba tak to się właśnie robi w językach wysokiego poziomu?

Ostatnio edytowany przez nosty (2015-07-31 14:48:49)

7

Odp: Mad Pascal

kompilator i demo powstało w dwa tygodnie, łącznie z czasem na Głuchołazach, spodziewacie się 10 000 linii  kodu, 200 stron instrukcji i kilka MB przykładów ?

czy ja komuś bronię żeby pisał sobie jakiekolwiek biblioteki

*- TeBe/Madteam
3x Atari 130XE, SDX, CPU 65816, 2x VBXE, 2x IDE Plus rev. C

8

Odp: Mad Pascal

@tebe: jest to absolutnie zrozumiałe - warto by było jednakowoż, aby powstały biblioteki w sposób spójny i kontrolowany :) Na początek proponowałbym zacząć od listy postulowanych funkcji, tzn. propozycji specyfikacji takich bibliotek, w sposób jak to proponuje Nosty, a potem się zobaczy.

Ostatnio edytowany przez wieczor (2015-07-31 14:20:16)

The problem is not the problem; the problem is your attitude about the problem

9

Odp: Mad Pascal

@tebe - wybacz, jeśli moje uwagi odebrałeś jako wymagania. To po prostu propozycje.
Podziwiam bardzo umiejętność stworzenia nowego języka, ja nawet bym nie wiedział jak zacząć.
Wiadomo, że od czegoś trzeba zacząć, a potem można wciągnąć innych i rozwijać.

Powiedz mi tylko, czy to co jest działa stabilnie? Tzn czy masz jakieś znane błędy, dziwne zachowania itp. "do naprawy w przyszłości"?

Wolę, żeby działało mniej ale stabilnie.
Bo kiedyś próbowałem powalczyć z takim Atalanem, który zapowiadał się świetnie, miał dokumentację, wsparcie autora, ale pisanie w nim pierwszej gry przypominało drogę przez mękę, bo miał masę bugów. W końcu grę skończyłem, ale byłem na tyle zmęczony i zniechęcony, że odpuściłem sobie dalsze prace. Nie wiem czy osiągnął w końcu stabilność, ale chyba nikt w nim już nic nie tworzy.

10

Odp: Mad Pascal

tebe napisał/a:

spodziewacie się 10 000 linii  kodu, 200 stron instrukcji i kilka MB przykładów ?

0,5 strony planów jakiegoś standardu ?

11

Odp: Mad Pascal

Mad Pascal 1.2.0

myślę że projekt dojrzał do odpowiedniego stopnia, instrukcja, kompilator na stronie http://mads.atari8.info

w przykładach m.in. gra SNAKE, program generujący fraktale FRACTAL, przykłady operacji I/O (pod emulatorem należy ustawić możiwość zapisu R/W dla ATR-a)

*- TeBe/Madteam
3x Atari 130XE, SDX, CPU 65816, 2x VBXE, 2x IDE Plus rev. C

12

Odp: Mad Pascal

kolejna wersja 1.2.2, dodane typy ze znakiem SHORTINT, SMALLINT, INTEGER

jeśli kompilować program dla PC przez FPC (Free Pascal Compiler) to z przełącznikiem -Mdelphi, wtedy typy będą zgodne z Mad Pascalem (oprócz REAL oczywiście)

Ostatnio edytowany przez tebe (2015-11-01 23:14:58)

*- TeBe/Madteam
3x Atari 130XE, SDX, CPU 65816, 2x VBXE, 2x IDE Plus rev. C

13

Odp: Mad Pascal

1.2.8 http://mads.atari8.info

*- TeBe/Madteam
3x Atari 130XE, SDX, CPU 65816, 2x VBXE, 2x IDE Plus rev. C

14

Odp: Mad Pascal

A tak z innej beczki - myślałeś może o wersji dla 65C816 (w domyśle Rapidus)?

15

Odp: Mad Pascal

najprędzej w planach jest biblioteka dla VBXE

przez Ilmenita ;) muszę jeszcze poprawić szybkość generowanego kodu coby dorównać kroku CC65 (-Osir -Cl)

Ostatnio edytowany przez tebe (2015-12-21 17:00:38)

*- TeBe/Madteam
3x Atari 130XE, SDX, CPU 65816, 2x VBXE, 2x IDE Plus rev. C

16

Odp: Mad Pascal

MadPascal 1.3.3 http://mads.atari8.info

Ostatnio edytowany przez tebe (2016-05-08 20:58:18)

*- TeBe/Madteam
3x Atari 130XE, SDX, CPU 65816, 2x VBXE, 2x IDE Plus rev. C

17

Odp: Mad Pascal

v1.3.6 http://mads.atari8.info

*- TeBe/Madteam
3x Atari 130XE, SDX, CPU 65816, 2x VBXE, 2x IDE Plus rev. C

18

Odp: Mad Pascal

Oprócz cyferek coś się zmieniło,  bo nie potrafię znaleźć nic na ten temat.

"tatusiu zobacz, narysowałam tobie takie same coś jak na twojej koszulce" 
https://github.com/willyvmm/mouSTer
jmp $e477

19

Odp: Mad Pascal

klikasz w link, tam z prawej strony pod takim tytułem "Mad Pascal 1.3.6" masz link pt. Instrukcja, w tej instrukcji masz taki odnośnik jak Historia, no i jak klikniesz Historia, to zobaczysz :)

1.3.6

- dodane rozkazy GetIntVec, SetIntVec w zastępstwie rozkazu Intr
- umożliwione zwracanie wartości RESULT dla funkcji poprzez tablice
- poprawki dla MOVE (downwards, upwards)
- optymalizacja ASM dla procedur/funkcji POKE, DPOKE, PEEK, DPEEK, FILLCHAR, MOVE, INTTOREAL
- SYSTEM: ParamCount, ParamStr (SDX, BWDOS)
*- TeBe/Madteam
3x Atari 130XE, SDX, CPU 65816, 2x VBXE, 2x IDE Plus rev. C

20

Odp: Mad Pascal

1.5.0

- poprawiona i uzupełniona inicjalizacja tablic typu POINTER
- poprawiona i uzupełniona inicjalizacja zmiennych typu wyliczeniowego
- typ LONGWORD, DWORD, UINT32 jako odpowiednik CARDINAL
- typ LONGINT jako odpowiednik INTEGER
- zreorganizowane typy rzeczywiste,
  ShortReal (fixed point Q8.8),
  Real (fixed point Q24.8),
  Single (32bit IEEE-754)
- unit SYSTEM (const SINGLE): NaN, Infinity, NegInfinity
- unit SYSTEM (type SINGLE): SIN, COS, ABS, SQRT, ISQRT, ROUND, TRUNC
- unit MATH (type SINGLE): LOG2, LOG10, LOGN, IsNaN
- dla WRITE/WRITELN akceptowane i ingorowane jest formatowanie wyniku, np.: writeln(f:8:8)

ciekawa historia na temat ISQRT (inverse square root)

https://pl.wikipedia.org/wiki/Szybka_od … adratowego

Ostatnio edytowany przez tebe (2017-07-31 08:42:27)

*- TeBe/Madteam
3x Atari 130XE, SDX, CPU 65816, 2x VBXE, 2x IDE Plus rev. C

21

Odp: Mad Pascal

1.5.1

- dodane nowe przełączniki -CODE:$address, -DATA:$address -STACK:$address, -ZPAGE:$address
- SYSTEM unit: RandomF (Result as Single), VAL (Integer, Single)
- GRAPH, FASTGRAPH unit: Bar, Bar3D, GetX, GetY, MoveRel, FloodFill
- MATH unit: RandomRange, RandomRangeF, RandG (gaussian distributed random number)
- CRT unit: SOUND (działa identycznie jak SOUND w Atari BASIC)
- VBXE unit: TVBXEMemoryStream
- dodany komunikat ostrzeżenia 'Comparison might be always true/false due to range of constant and expression'
- zasoby RCASM, CMCPLAY, MPTPLAY można teraz ładować pod ROM
- dodana możliwość oznaczenia kodowania ciągu znakowego jako internal ANTIC-a poprzez znak tyldy '~', np.:

 txt0: string = 'Atari'~;      // ciąg w kodach ANTIC-a
 txt1: string = 'Spectrum'*~;  // ciąg w inwersie w kodach ANTIC-a
*- TeBe/Madteam
3x Atari 130XE, SDX, CPU 65816, 2x VBXE, 2x IDE Plus rev. C

22

Odp: Mad Pascal

Czy istnieje (kiedyś, w przyszłości) szansa, że pod Mad Pascalem da się skompilować mads, tak żeby go można było mieć na Atari (z Rapidusem)?

65C816 ma wprawdzie ograniczenie segmentu kodu do 64k, ale ograniczenie wielkości procedury (skompilowanej) do tego rozmiaru to chyba żadne ograniczenie.

KMK
? HEX$(6670358)

23

Odp: Mad Pascal

obecnie MadPascal nie wspiera dynamicznych tablic z których korzysta Mads

*- TeBe/Madteam
3x Atari 130XE, SDX, CPU 65816, 2x VBXE, 2x IDE Plus rev. C

24

Odp: Mad Pascal

z okazji wersji 1.5.3, 'MOD Player' dla zwykłego i dopalonego CPU

http://atariage.com/forums/topic/243658 … try3911789

w wersji dopalonej (CPU > 3 MHz) sample odtwarzane są na przerwaniu IRQ co linię, czyli 15.6 KHz

*- TeBe/Madteam
3x Atari 130XE, SDX, CPU 65816, 2x VBXE, 2x IDE Plus rev. C

25

Odp: Mad Pascal

Dzięki!

Wieczorem ztestuję. Jakie ograniczenia dla MOD'a i jakie komendy obsługuje ten player?

ADRES: pin@atari.pl - konto zlikwidowane. Aktualny adres: pin(at)atari8.info