Neither SF nor LIAR currently performs that reduction, so every
character written to a generic I/O port was causing a rest list to be
consed up and control to go through a generic microcode primitive
trampoline to do the reduction at run-time.
Also use FIX:<= rather than <=, since the numbers in question are all
fixnums.
ob
(cond ((char=? char #\tab)
(fix:+ column (fix:- 8 (fix:remainder column 8))))
- ((<= #x20 (char->integer char) #x7E)
+ ((and (fix:<= #x20 (char->integer char))
+ (fix:<= (char->integer char) #x7E))
(fix:+ column 1))
(else #f))))))
#t)))