{-----------------------------------------------------------
  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