· Text 3734 · w8 · inlagg
Här följer en kort redogörelse för hur man
kan göra i ABC80 för att kunna fånga upp
ALLA fel som kan inträffa och själv få
kontrollen. Programmet som skall fånga upp
felet måste skrivas i assembler.
LD (IY+31),0 Sätt ON ERROR GOTO 0
LD (IY+14),0 RUN-mode
LD HL,14
LD (254:64),HL Sätt ny BOFA (!)
LD HL,32:125
LD A,(HL)
CP 213
JRZ L1
DEC HL
DEC HL
L1 LD (254:39),HL Ny stack (systemvariabel)
Om ett fel inträffar efter denna
initiering kommer felrutinen i BASIC-tolken
att loopa. Detta sker på adress 6:121-6:140
när tolken letar efter den rad där felet
inträffade. Det enda som avbryter loopen
är ett interrupt, antingen klockinterrupt
som ALLTID kommer så småningom eller ett
annat interrupt. Vid retur från interrupt
kommer hopp ske till adress 255:19 eller
255:245 därför att SP pekar i ROM!
Tyvärr måste man ställa om BOFA till ett
"hopplöst" värde men det får man stå ut
med. Tyvärr försvinner också felkoden men
den kan man leta upp! Antagligen anropades
felrutinen med RST 16 och då kan man...
Äh, resten får ni hitta på själva!