· Text 267 · w8 · inlagg
Jag har råkat ut för ett lustigt fel i ett
program. I en interruptrutin kollar jag om
returadressen som ligger på stacken ligger
i ett visst intervall, dvs om en viss rutin
exekveras när interruptet har inträffat.
Denna rutin, som ligger och väntar på interrupt,
ser ut så här ungefär:
XX BIT 7,(IX+2)
JRNZ FORTSÄTT Hoppa ur loop om interrupt inträffat
... Diverse instruktioner
JR XX Upprepa
Om interrupt inträffar efter det att den
sista instruktionen (JR) exekveras hamnar
inte adressen till byten efter JR XX på
stacken, istället hamnar adressen XX på
stacken! JR ändrar ju PC-registret...
Det tänkte jag inte på men nu är det rättat.
Loppen som snurrar är den som väntar på
tangentbordsinterrupt i tolken och programmet
som felet fanns i heter KEY för ABC80. Jag
skall rätta ytterligare några buggar, sedan
hivar jag väl in en ny version.