Jump to content

Recommended Posts

3 hours ago, funkheld said:

hello zbyti, do you have new nice ideas for the Plus4?

thanks.

Only one but this idea fits to A8 too :]

Share this post


Link to post
Share on other sites
On 3/29/2021 at 12:51 AM, tebe said:

new MP, https://github.com/tebe6502/Mad-Pascal

 

- unit ZX0

- block ASM without { } is supported

 

 

FYI: i guess there's an 'end;' too much in lib\zx0.pas 

 

zx0.pas: 

[..]

to_exit        ldx #0
@sp        equ *-1
end;

//end;       commented this out, compiles & works great then.

end.
 

 

Share this post


Link to post
Share on other sites

Nice introductory and well presented Pascal manual. Recommended for all newcomers and the ones who want to re-check specific features.

 

Share this post


Link to post
Share on other sites

Mad Pascal 1.6.5

  • rewritten handling of CASE OF
  • rewritten code optimization for arrays not exceeding 256 bytes
  • optimization for conditions '>', '<='
  • added memory allocation for STRING-type arrays (so far only the pointer was put away, it worked like 'array of ^string')
  • new platform added, Commodore C4 Plus
  • unit GRAPHICS: procedure Font(charset: pointer);
  • unit STRINGUTILS
  • unit MISC, RMT, CMC, MPT: DetectAntic
  • unit SYSTEM revised to include ATARI, C64, C4Plus platforms
  • unit ZX0
  • unit HCM2
  • added support of $resource (RCDATA, RCASM) for C64, C4Plus platforms, resources are sorted by ascending addresses
  • extended RCDATA resource with possibility to specify ofset for read file
  • added support for Pascal compliant syntax for ASM block, no { } brackets required
  • added new directive {$codealign proc = value}, {$codealign loop = value} allowing to align generated code

https://github.com/tebe6502/Mad-Pascal/releases

  • Like 2
  • Thanks 2

Share this post


Link to post
Share on other sites

Waw, great! So many new features...

 

I also noticed some examples do not work anymore. I checked the code for cube_clip3.pas (fast object rotation), which uses FrameBuffer procedure, which does not exist in graph.inc anymore.

I found there are new routines (SetDisplayBuffer, NewDisplayBuffer, SwitchDisplayBuffer), which, I suppose, do the job properly, but I didn't grasp the functionality properly yet.

 

Share this post


Link to post
Share on other sites

Eh, my bad! I didn't want to offend anyone, I know there are others supporting Tebe. I just noticed the activity at specific time and replied ;)

Keep up the great work all!

 

  • Like 2

Share this post


Link to post
Share on other sites
Posted (edited)

I think I try @ilmenit way but instead C I plan to use... guess what... yep Pascal :D

 

https://www.freepascal-meets-sdl.net/sdl-tutorials/

https://lazyfoo.net/tutorials/SDL/

 

https://github.com/PascalGameDevelopment/SDL2-for-Pascal

 

but before that I must study this: https://castle-engine.io/modern_pascal_introduction.html

 

Edited by zbyti
github repo
  • Thanks 1

Share this post


Link to post
Share on other sites

Very nice implementation for Free Pascal and Delphi. Most non-Pascal developers think Pascal language is obsolete, but it is far from the truth. It is modular, elegant language, with clear syntax.

And best of all, it is fast and optimized when right options are used. Free Pascal and Delphi can be used for low-level programming as C language.

 

It is really useful to read the tutorial listed as last link. Great material for new and experienced developers.

 

The reflexion of usefulness of Pascal language is seen also on Atari 8-bit platform. It is the best high-level language for the platform, fast and optimized, which can also be used as low-level language.

 

  • Like 1

Share this post


Link to post
Share on other sites

Variables using Type declaration

 

I found a strange behaviour when using type variable (array of type). Let's explain...

 

I increment a type variable element by some value:

 

monster[0].x := monster[0].x + 2;

 

This code runs ok.

 

But using a procedure, which consists of incrementing such variable, doesn't work correctly.

The example works when commenting (remarking) the call to MoveMonster at the end of listing example.

 

This is modified example from Mad Pascal repository:

uses crt;

type
	monsters = packed record
   	  x: byte ;
	  a: cardinal;
	  y: byte;
	end;

var
	monster: array [0..3] of ^monsters;
	i: byte;

procedure MoveMonster(p : byte);
begin
  monster[p].x := monster[p].x + 2;
end;

begin
  for i:=0 to High(monster) do begin
    GetMem(monster[i], sizeof(monsters));

    monster[i].x := i;
    monster[i].a := $ffffffff;
    monster[i].y := i * 2;
  end;

  for i:=0 to High(monster) do
    writeln(monster[i].x,',', monster[i].y);

  // Let's move first monster
  writeln('');
  writeln('Let''s move first monster');
//  monster[0].x := 2;
  monster[0].x := monster[0].x + 2;
  writeln(monster[0].x,',', monster[0].y);

  MoveMonster(0);
  writeln(monster[0].x,',', monster[0].y);

  repeat until keypressed;
end.

 

Any thoughts? Thank you.

 

Regards.

 

Share this post


Link to post
Share on other sites
Posted (edited)

Yes, it's known bug. Use:

uses crt;

type
  monsters = packed record
      x: byte ;
    a: cardinal;
    y: byte;
  end;

var
  monster: array [0..3] of ^monsters;
  i: byte;
  m : ^monsters;

procedure MoveMonster(p : byte);
begin
  m := monster[p];
  Inc(m.x, 2);
end;

begin
  for i:=0 to High(monster) do begin
    GetMem(monster[i], sizeof(monsters));

    monster[i].x := i;
    monster[i].a := $ffffffff;
    monster[i].y := i * 2;
  end;

  for i:=0 to High(monster) do
    writeln(monster[i].x,',', monster[i].y);

  // Let's move first monster
  writeln('');
  writeln('Let''s move first monster');
  m := monster[0];
  //monster[0].x := 2;
  Inc(m.x, 2);
  writeln(monster[0].x,',', monster[0].y);

  MoveMonster(1);
  writeln(monster[1].x,',', monster[1].y);

  repeat until keypressed;
end.

 

Edited by zbyti
  • Thanks 1

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...

  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...