t-edson / P65Pas

CPU 6502 Pascal Compiler/IDE/Debugger
GNU General Public License v3.0
120 stars 27 forks source link

while and delay_ms issues #41

Closed odflor closed 2 years ago

odflor commented 2 years ago

Hi!:

This sample programs try to fill screen with available characters and then show a wellcome message and repeat it 10 times.

The issues are:

1) Delay_MS does not delay 2) Repeat 10 times using while cycle does not work

{"Hello World" P65Pas program.} program Hello; uses Commodore64; var i : word; c : byte; v : byte; begin screenBack := 1; screenBorder := 15;

v := 1;

while v <= 10 do <== this don't work CLRSCR;

c := 0;

for i := 0 to 999 do
  screen[i] := c;
  inc(c);
end; 

delay_ms(word(1000)); <== this don't work

CLRSCR;

ChrOUT(' ');
ChrOUT('H');
ChrOUT('E');
ChrOUT('L');
ChrOUT('L');
ChrOUT('O');
ChrOUT(' ');

delay_ms(word(1000)); <== this don't work

inc(v);

end; asm RTS end end.

t-edson commented 2 years ago

Issue about delay_ms() procedure is fixed. WHILE loop is working OK. There is some problem with large body blocks but here it's not a problem.

image

odflor commented 2 years ago

Hi! Yes, WHILE loop works OK, is too fast! because of this I can't realize that it works.

Here an example program, enjoy!

{"Fill useless chars & colors" P65Pas program.} program Useless; uses Commodore64; var i : word; c : byte; l : byte; v : byte;

color: [1000]byte absolute $D800;

procedure Fill; begin
for i := 0 to 999 do screen[i] := c; inc(c); end; end;

procedure SetColor; begin
for i := 0 to 999 do color[i] := l; inc(l); end; end;

procedure doit; begin Fill; SetColor; end;

begin screenBack := 0; screenBorder := 15; c := 0; l := 0;

for v := 0 to 254 do // Actually can't use "for v := 0 to 255" doit; end;

doit; // one more time, because I ain't can't use "for v := 0 to 255" asm RTS end end.

Best Regards!

t-edson commented 2 years ago

That's good. It really works! There are still many things to finish implementing in the compiler, after the redesign of the Code generator but the good news is that now we have a more solid design to work.