bt_readln() now operates at lower level