David Andersson
<5201>
· Text 1136 · w8 · kommentar
1985-12-19 02:38
Ärende: Processorns odelade uppmärksamhet
I förstora.bas kollar initieringsrutinen vad värdet är på
I-reg. innan det ställs om. Sedan förutsätter den att låga
byten av vektorn (lagrad i PIOn) är 52 och tittar i minnet
(adress I*256+52,I*256+53) var tidigare interuptrutin ligger
sedan avslutar den inte sin egen interuptrutin med
EI
RETI
utan med
JP adress
där adress är uträknad sålunda:
LD A,I
LD (SPARAI),A ;spara gamla I-reg
LD H,A
LD L,52
LD E,(HL) ;DE=adress till int-rutin
INC HL
LD D,(HL)
LD (adress),DE ;självmodifierande kod
Med denna hantering får man automatiskt JP 798 om I=0.
Man bör inte glömma att ha en adress till cassett-interupten när
man ändrar I.
Om alla program som använder int gör så här som måste de termineras i
motsatt den ordningen de initierades.
Om PIOn används för annat än tangent interupt så blir det genast
mycket krångligare.
(assembler rutinen ovan är inte testad)