Git Product home page Git Product logo

mad-pascal's Introduction

Mad-Pascal

Doc PL

Doc ENG

Introduction

Mad-Pascal (MP) is a 32-bit Turbo Pascal compiler for Atari XE/XL. By design, it is compatible with the Free Pascal Compilator (FPC) (the -MDelphi switch should be active), which means the possibility of obtaining executable code for XE/XL, PC and every other platform for which FPC exists.

MP is not a port of FPC; it has been written based on of SUB-Pascal (2009), XD-Pascal (2010), the author of which is Vasiliy Tereshkov.

A program that works on Atari might have problems on PC if, for example, the pointers have not been initialized with the address of a variable and the program attempts to write to the address $0000 (memory protection fault).

The strengths of MP include fast and convenient possibility of inclusion of inline assembly. A program using inline ASM does not work on platforms other than 6502 CPU. MP uses 64KB of primary memory; TMemoryStream provides usage of extended memory.

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. Returned value of a function is assigned to a predefined RESULT variable
  • Static local variables
  • Primitive data types, all types except the ShortReal/Real type are compatible. Pointers are dereferenced as pointers to Word:
    • Cardinal Word Byte Boolean
    • Integer SmallInt ShortInt
    • Char String PChar
    • Pointer File Text
    • ShortReal Real fixed-point
    • Float16
    • Single
  • 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 to array [0..N] of Char
  • Type aliases
  • Records
  • Objects
  • Separate program modules
  • Recursion

Compile

fpc -MDelphi -vh -O3 mp.pas

Usage

WUDSN + Mad Pascal

Mad Pascal i Geany

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" -xli:<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 f256 filename.pas -ipath:<MadPascalPath>/lib
mads filename.a65 -x -i:<MadPascalPath>/base

Alternate binary output file formats:
mp.exe -t f256pgx filename.pas -ipath:<MadPascalPath>/lib
mp.exe -t f256pgz filename.pas -ipath:<MadPascalPath>/lib
mp.exe -t raw filename.pas -ipath:<MadPascalPath>\lib
mads.exe filename.a65 -x -i:<MadPascalPath>\base

Tools

Simple Atari Mad-Pascal common project bootstrap.

Source code at GitLab

Set of custom libraries for MadPascal.

Lastest documentation always at GitLab

Custom tool for generating documentation from pascal comments in units.

Source code at GitLab

Effectus - Action! compiler

In new version the source code is generated by using Mad Pascal cross-compiler, which is further compiled to 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 is a text mode windowing library complete with 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"-ish interfaces.

Projects in Mad-Pascal

Benchmarks

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

Floating Point

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

Suite

suite-animation

sources

Links

YouTube

Pascal compilers for the Atari XE/XL computer

mad-pascal's People

Contributors

tebe6502 avatar zbyti avatar scttgs0 avatar noyen1973 avatar bocianu avatar gsoftwaredevelopment avatar michalgw avatar t-w avatar

Watchers

 avatar

Forkers

noyen1973

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.