{-----------------------------------------------------------
Struttura standard per uso programmi pascal Z80
-----------------------------------------------------------}
program Standard;
{ ...qui vanno le definizioni delle costanti
e delle variabili (const, type e var)... }
{ ...qui vanno scritte tutte le procedure e funzioni... }
{-----------------------------------------------------------
Abilitazione/disabilitazione interrupt mascherabile INT
-----------------------------------------------------------}
procedure enableInterrupt(modo:byte);
begin
case modo of
0: inline($ED/$46/$FB); { IM0 EI }
1: inline($ED/$56/$FB); { IM1 EI }
2: inline($ED/$5e/$FB); { IM2 EI }
end;
end;procedure disableInterrupt;
begin
inline($F3); { DI }
end;{-----------------------------------------------------------
Gestore interrupt INT
-----------------------------------------------------------}
procedure intRoutine;
begin
inline ($F5/$C5/$D5/$E5/$DD/$E5/$FD/$E5);
{ ...qui vanno le istruzioni sotto INT... }
inline ($FD/$E1/$DD/$E1/$E1/$D1/$C1/$F1/$FB/$ED/$4D);
end;{-----------------------------------------------------------
Gestore interrupt NMI
-----------------------------------------------------------}
procedure nmiRoutine;
begin
inline ($F5/$C5/$D5/$E5/$DD/$E5/$FD/$E5);
{ ...qui vanno le istruzioni sotto NMI... }
inline ($FD/$E1/$DD/$E1/$E1/$D1/$C1/$F1/$ED/$45);
end;{-----------------------------------------------------------
Corpo principale del programma
-----------------------------------------------------------}
begin{ Inizializzazione aree di memoria per usare gli interrupt }
Mem[$8038]:=$3C; { Codice JP }
Mem[$8039]:=Lo(Addr(intRoutine)); { Byte basso indirizzo }
Mem[$803A]:=Hi(Addr(intRoutine)); { Byte alto indirizzo }
Mem[$8066]:=$3C;
Mem[$8067]:=Lo(Addr(nmiRoutine));
Mem[$8068]:=Hi(Addr(nmiRoutine));
{ ...qui va la sezione di inizializzazione del programma... }
{ ...qui vanno scritte le istruzioni del programma... }
end.
Pagina realizzata da Claudio Fin