How to delete carriage return in SED

Could someone tell me how to do the below without opening the file? (eg in sed or awk)

I have a file with the contenst below:

$ more file1.txt
10
AAA;
200
BBB;
3
CCC;

I want to delete the carriage return of one line above the line which has ";" at the end to get the below:

10 AAA;
200 BBB;
3 CCC;

Any help will be appreciated.

sed 'N;s/\n\(.*\)\;/ \1\;/' filename

[/tmp]$ echo "10
AAA;
200
BBB;
3
CCC;" | sed -e '/.*[^;]$/{
N
s/\(.*\)\n\(.*;$\)/\1 \2/
}'
10 AAA;
200 BBB;
3 CCC;

Thanx everyone!