nie chodzi przypadkiem o 'Infinite loop', kiedy liczba przebiegów osiąga limit, jest generowany komunikat ostrzeżenia, może być z tego multum błędów
ogólnie powodem mogą być instrukcje skoków, JPL, JMI, JNE etc. które przybierają postać krótką albo długą, zmiana adresów asemblacji etc.
nie udało mi się tego wyeliminować, próbowałem wielu podejść, wskazana etykieta która powoduje 'infinite loop' może wcale nią nie być
w MadPascal (MP) powodem 'infinite loop' jest etykieta DATAORIGIN, na końcu pliku wynikowego, jej wartość w kolejnych przebiegach potrafi różnić się nawet o $100 bajtów, najnowszym sposobem na jej stabilizację jest to:
?adr = *
ift (?adr < ?old_adr) && (?old_adr - ?adr < $120)
?adr = ?old_adr
eif
org ?adr
?old_adr = *
DATAORIGIN
w innych dużych projektach typu Nibble, Pang, tworzę kod relokowalny RELOC, umieszczam w oddzielnych plikach i linkuję z głównym programem, szybciej sie assembluje i nie wpływa na zmianę adresów