English Documentation / Polska Dokumentacja
[source]: # Section is copied from original https://mads.atari8.info/doc/en/introduction/
Mad-Pascal (MP) is a 32-bit Turbo Pascal compiler for Atari 8-Bit and other MOS 6502 CPU-based computers. By design, it is compatible with the Free Pascal Compiler (FPC) (the -MDelphi
switch should be active). This means the possibility of obtaining executable code for Atari 8-bit, Windows, and every other platform for which FPC exists. Mad-Pascal is not a port of FPC. It has been written based on SUB-Pascal (2009) and XD-Pascal (2010), the author of which is Vasiliy Tereshkov.
MP uses 64KB of primary memory. The class TMemoryStream
provides access to extended memory. A program that works on Atari 8-Bit might have problems on Windows and other platforms if, for example, the pointers have not been initialized with the address of a variable. Writing via an uninitialized pointer results in an attempt to write to the address 0x0
and causes a memory protection fault.
The strengths of MP include the fast and convenient possibility of including inline assembly. A program using inline ASM only works on platforms with MOS 6502 CPU.
Variable allocation is static. There is no dynamic memory management. Parameters are passed to functions by value, variable, or constant.
The available features are:
If
Case
For To
For In
While
Repeat
statements- Compound statements
Label
Goto
statements- Arithmetic and boolean operators
- Procedures and functions with up to 8 parameters. The returned value of a function is assigned to a predefined
RESULT
variable - Static local variables
- Primitive data types, all types except the
ShortReal
andReal
types are compatible. Pointers are dereferenced as pointers toWord
:Cardinal
Word
Byte
Boolean
Integer
SmallInt
ShortInt
Char
String
PChar
Pointer
File
Text
ShortReal
Real
fixed-pointFloat16
Single
/ Float
- One-dimensional and Two-dimensional arrays (with zero lower bound) of any primitive type. Arrays are treated as pointers to their origins (like in C) and can be passed to subroutines as parameters
- Predefined type
String
[N]
which is equivalent toarray [0..N] of Char
Type
aliasesRecords
Objects
- Separate program modules
- Recursion
fpc -MDelphi -vh -O3 mp.pas
mp.exe filename.pas -ipath:<MadPascalPath>\lib
mads.exe filename.a65 -x -i:<MadPascalPath>\base
BAT
<MadPascalPath>\MP.exe %1 -ipath:<MadPascalPath>\lib -ipath:<MadPascalPath>\blibs
if exist %~dp1%~n1.a65 (
mads.exe "%~dp1%~n1.a65" -x -i:<MadPascalPath>\base
if exist "%~dp1%~n1.obx" altirra "%~dp1%~n1.obx"
)
mp.exe -t c64 filename.pas -ipath:<MadPascalPath>\lib
mads.exe filename.a65 -x -i:<MadPascalPath>\base
mp.exe -t c4p filename.pas -ipath:<MadPascalPath>\lib
mads.exe filename.a65 -x -i:<MadPascalPath>\base
mp.exe -t neo filename.pas -ipath:<MadPascalPath>\lib
mads.exe filename.a65 -x -i:<MadPascalPath>\base
mp.exe -t raw filename.pas -ipath:<MadPascalPath>\lib
mads.exe filename.a65 -x -i:<MadPascalPath>\base
Simple Atari Mad-Pascal standard project bootstrap.
Source code at GitLab
Set of custom libraries for MadPascal.
The latest documentation is always on GitLab
Custom tool for generating documentation from Pascal comments in units.
Source code at GitLab
Effectus - Action! compiler
The new version generates the source code using the Mad Pascal cross-compiler, which is further compiled into binary code with Mad Assembler.
Simple game tutorial by using Mad Pascal
Display List program editor for 8-bit Atari ANTIC chipset
Simple binary data manipulation tool written in JavaScript (export to Action!, Assembler, C, Pascal)
CutAs, FiDL, SprED, Sprite XL
This text-mode windowing library has window controls and modern gadgets (widgets). The gadgets allow you to build input forms that use buttons, radio buttons, input strings (with scrolled lengths and type restrictions), check boxes, progress bars, etc. This allows you to build applications with "modern" interfaces.
- StarVagrant
- MadKingdom
- zilch
- justpong
- hoppe
- PacMad
- PacMad neo6502
- k12trailer
- gr10
- Old Mansion
- Old Mansion X16
- Old Mansion C64
- artur
- jcq
- Fujinet udp shoutbox
- speedway
- chessnet
- gr9Lab
- SortViz
- weather
- cart builder
- Mole
- SFX-Tracker
- SFX-Engine
- MIDICar-Player
- heatmap
- sinus scroll 2x2
- Flob
- Ultima V
- mad-pascal-playground
- simple-games-easy-for-develop
- siege-ai-playground
- Cartfall
- gravity
- Unicode
- Arcadia
- atascii compo3
- ProHiBan
- The Hangmad
- Block Attack
- Dungeon Adventurer
- Tetris neo6502
- µSoukoban
- Time Wizard
CC65 | Mad Pascal | Millfork | |
---|---|---|---|
Sieve (less is better) | 602 | 577 | 579 |
YoshPlus (higher is better) | 41933 | 41933 | 41933 |
Chessboard (higher is better) | 76 | 88 | 82 |
https://github.com/tebe6502/Mad-Pascal/blob/master/samples/benchmark.7z
iteration x 256 | Atari OS | FastChip | MP Single | MP Real |
---|---|---|---|---|
add, sub, mul, div | 232 | 118 | 64 | 99 |
add, sub, mul, div, sin, cos | 5820 | 2915 | 3728 | 1231 |
- MP Single: IEEE754-32bit
- MP Real: Q24.8 Fixed Point
https://github.com/tebe6502/Mad-Pascal/blob/master/samples/fp_benchmark.7z
- HOME Page
- Mad Pascal on Atari Age Forum
- Games in Mad Pascal
- Mad Pascal examples
- Mad Pascal on Atari Area Forum
- Mad Pascal Announcement for WUDSN
- Some advice
- Programowanie w Mad Pascal dla C+4
- Commodore Plus/4, Mad Pascal i bitmapy