Máris töltöttem!
Még mindig keveredik a -1 és a 0f.
Vagyis mi az alapja call után ennek az üzenetnek?
Message[1302]: RAM Bank undefined in this chunk of code. Ensure that bank bits are correct. Assuming bank 15 from now on.
Az "Assuming" egy olyan dolog, hogy az ombuccman' is megdícsérne! ;) Nem tételezed fel a program írójáról, hogy hülye. Ilyenkor az automatikusan értéket kapott __ACTIVE_BANK_ADDR miatt a következő - esetleg jó - címzés hibadetektálása megfordul. (Tesztelés: a kis programomban a "movlb 4" helyet írjál "movlb 5"-öt és vizsgáld a Bank4DataManipulation üzeneteit -S 2 opció mellett!)
Természetesen a programozó - a programot tyúklépesben írva - mindig az első hibát javítja, így nem fog jelentkezni a téves üzenet.
8X---
Közben van már egy móricka makróm:
#define NOTHING -1
assume macro regN,regV
if ( regN == BSR )
__ACTIVE_BANK_ADDR=regV
endif
endm
Ez a szubrutin elején kiüti a nem definiált vagy a fordító által rosszul értelmezett bsr miatti üzenetet.
Ha lenne egy __ACTIVE_BANK_ADDR_GLOBAL, akkor ezt helyesen beállítva felülbírálhatná pl. a call utáni __ACTIVE_BANK_ADDR törlését. Mivel nincs proc-endp, mint az MASM-ben, erről a programozónak kellene gondoskodni, hogy kijelölje a kód blokkokat.