%%
%% The IO Subsystem
%%

% OUT
\csdef{avr@instr@10111}#1#2#3#4#5#6#7#8\@nnil{%
  \def\@@A{#1#2#8}%
  \avr@reg@get{#3#4#5#6#7}{\avr@Rr}%
  \avr@debug{OUT \@@A <- \avr@Rr}%
  \avr@io@set{\avr@Rr}{\@@A}%
  \avr@pc@inc%
}


%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% IO Handlers
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% #1=Value, #2=Addr
\def\avr@io@set#1#2{%
  \ifcsdef{avr@io@#2@set}{%
    \csuse{avr@io@#2@set}{#1}%
  }{%
    \avr@io@set@default{#1}{#2}%
  }%
}
% #1=Addr, #2=\result
\def\avr@io@get#1#2{%
  \ifcsdef{avr@io@#2@get}{%
    \csuse{avr@io@#2@get}{#2}%
  }{%
    \avr@io@get@default{#1}{#2}%
  }%
}

\def\avr@io@set@default#1#2{%
  \avr@error{IO Port #2 is not defined (OUT #1)}%
}

\csdef{avr@io@111111@set}#1{%
  \avr@debug{  SREG=#1}%
  \avr@sreg@set{#1}%
}

\csdef{avr@io@111110@set}#1{\avr@stack@SPH@set{#1}}
\csdef{avr@io@111101@set}#1{\avr@stack@SPL@set{#1}}

\def\avr@UDR#1{\relax}
\csdef{avr@io@001100@set}#1{%
  \avr@bin@tocount{#1}{\avr@count@tmpa}%
  \avr@debug{UDR: #1=\the\avr@count@tmpa}%
  \def\avr@UDR{#1}%
}



%%% Local Variables: 
%%% mode: latex
%%% TeX-master: "avr.tex"
%%% End: 
