tebe6502 / Mad-Pascal

Mad Pascal Compiler for 6502 (Atari XE/XL, C64, C4Plus, Neo6502)
122 stars 20 forks source link

Ability to disable IOCB#0 copy by 'DISABLEIOCBCOPY' directive #123

Closed GSoftwareDevelopment closed 9 months ago

GSoftwareDevelopment commented 10 months ago

The change consists of discarding from the compiler code the initialisation of the IOCB#0 block copy, which is used in the SYSTEM library functions: paramCount() and paramStr().

After the change, the copy is only executed when the programmer declares the use of the above-mentioned functions. In addition, the memory allocated for the copy of the IOCB#0 block is reserved in the static data area (STATICDATA) and not, as before, behind the program code.

GSoftwareDevelopment commented 10 months ago

Powyższy pull został sprawdzony z przykładem zamieszczonym w /samples/a8/io_sparta_dos_x/paramstr.pas Wykazuje prawidłowe działanie. A w przypadku, gdy nie są używane funkcje ParamCount() lub 'ParamStr()` w kodzie wynikowym nie ma deklaracji przestrzeni dla kopii IOCB#0 oraz kodu, kopiującego ten blok.

GSoftwareDevelopment commented 10 months ago

Dodałem obsługę dyrektywy DISABLEIOCBCOPY. Domyślnie kopia IOCB#0 jest wykonywana tak jak było. Po zadeklarowaniu dyrektywy, kopia nie jest wykonywana, a procedury ParamStr oraz ParamCount operują bezpośrednio na kanale IOCB#0 (adres $340-$34F)