#!/bin/sed -f
##############
# FULL ADDER #
##############

# Wczytaj obie linie danych i C-in
N
N
/^[01]\+\n[01]\+\n[01]\{1\}$/! {
i\
ERROR
d
q
}
h

:LOOP
# Wyłuskaj bity 0
s/^.*\(.\)\n.*\(.\)\n.$/\1\2/
#XOR-uj je
s/00/0/
s/11/0/
s/01/1/
s/10/1/
# dopisz wynik do holda
H
# pobierz input jeszcze raz i wyluskaj bit 0
g
s/^.*\(.\)\n.*\(.\)\n.\n.$/\1\2/
#AND-uj
s/11/1/
s/01/0/
s/10/0/
s/00/0/
# do holda
H

#Odrzuć najmłodszy bit
g
s/^\(.*\).\n\(.*\).\n\(.\n.\n.\)$/\1\n\2\n\3/
h
#Wyłuskaj wynik XOR-a i C-in
s/^.*\n.*\n\(.\)\n\(.\)\n.$/\1\2/g
#XOR-uj je
s/00/0/
s/11/0/
s/01/1/
s/10/1/
p


#g
#/^.\+\n.\+$/ b LOOP


# clean last out
d