From a342f809c0639ef7cb9d7ba69faed87d7128d716 Mon Sep 17 00:00:00 2001 From: Christian Dietrich Date: Sun, 28 Sep 2014 16:52:56 +0200 Subject: [PATCH] The IO Subsystem --- avr.io.tex | 59 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 59 insertions(+) create mode 100644 avr.io.tex diff --git a/avr.io.tex b/avr.io.tex new file mode 100644 index 0000000..04b94a6 --- /dev/null +++ b/avr.io.tex @@ -0,0 +1,59 @@ +%% +%% 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: