1

Hi.

Nie jestem pewien czy to blad czy zamierzone dzialanie. Definicje dolacznego unitu, nie sa jawnie dostepne dla asemblera.

Przyklad:

Unit:

//test_unit.pas
unit test_unit;

interface

var
    testVar    : byte absolute $00;
    
implementation

end.

i program:

program test1;

uses  test_unit;

var a:byte;
begin
a:=testVar;

    asm
        lda testVar
    end;
end.

Plik skompiluje sie poprawnie w pascalu, ale wywali blad w asemblerze.
Dopiero jawne odwolanie sie do unitu:

program test1;

uses  test_unit;

var a:byte;
begin
a:=testVar;

    asm
        lda test_unit.testVar
    end;
end.

Dziala prawidlowo.

Prosze  o sprostowanie jesli to zamierzone zachowanie.

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

2 Ostatnio edytowany przez tebe (2023-02-14 09:03:18)

każdy UNIT (moduł) to oddzielny blok LOCAL (może być więcej modułów i więcej zmiennych o tych samych powtarzających się nazwach)

musisz znać nazwę takiego LOCAL aby dostać się do zmiennych w takim bloku, PASCAL robi to automatycznie dla swojego generowanego kodu

kod w blokach ASM nie jest w żaden sposób sprawdzany, modyfikowany, użytkownik musi o to zadbać

p.s.
w sumie kod ASM jest co najwyżej sprawdzany w blokach oznaczonych INTERRUPT na obecność odwołań do stosu programowego :STACKORIGIN i w takiej sytuacji jest komunikat błędu

p.s. 2
bugi w MP

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

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

3

Dzięki za wyjaśnienie.
W takim razie nie widze sensu otwierania ticketu.

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