I find the maze looks better if you alter the print () routine:
...
if( leftwall(cell) )
ch = '|';
else
{ ch='_';
if( !botwall(cell) && !botwall(neighbor(cell, LEFT)) )
ch='.';
}
putchar(ch);
(Actually my version uses neighbour instead of neighbor throughout)
This alteration only prints full stops not next to underlines.
(I hope this has SOME approval :-)