2004-03-05 [VI] A bitmapped font (from a BIOS listing) 8x8 and a [minimalist curses] based font displayer. You need a relatively big window - say 124x55 to see this well. 2004-10-12 [VI] Changed to support changes in [minimalist curses] No more getch or timeout ====== set fontmap { 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x7E 0x81 0xA5 0x81 0xBD 0x99 0x81 0x7E 0x7E 0xFF 0xDB 0xFF 0xC3 0xE7 0xFF 0x7E 0x6C 0xFE 0xFE 0xFE 0x7C 0x38 0x10 0x00 0x10 0x38 0x7C 0xFE 0x7C 0x38 0x10 0x00 0x38 0x7C 0x38 0xFE 0xFE 0x92 0x10 0x7C 0x00 0x10 0x38 0x7C 0xFE 0x7C 0x38 0x7C 0x00 0x00 0x18 0x3C 0x3C 0x18 0x00 0x00 0xFF 0xFF 0xE7 0xC3 0xC3 0xE7 0xFF 0xFF 0x00 0x3C 0x66 0x42 0x42 0x66 0x3C 0x00 0xFF 0xC3 0x99 0xBD 0xBD 0x99 0xC3 0xFF 0x0F 0x07 0x0F 0x7D 0xCC 0xCC 0xCC 0x78 0x3C 0x66 0x66 0x66 0x3C 0x18 0x7E 0x18 0x3F 0x33 0x3F 0x30 0x30 0x70 0xF0 0xE0 0x7F 0x63 0x7F 0x63 0x63 0x67 0xE6 0xC0 0x99 0x5A 0x3C 0xE7 0xE7 0x3C 0x5A 0x99 0x80 0xE0 0xF8 0xFE 0xF8 0xE0 0x80 0x00 0x02 0x0E 0x3E 0xFE 0x3E 0x0E 0x02 0x00 0x18 0x3C 0x7E 0x18 0x18 0x7E 0x3C 0x18 0x66 0x66 0x66 0x66 0x66 0x00 0x66 0x00 0x7F 0xDB 0xDB 0x7B 0x1B 0x1B 0x1B 0x00 0x3E 0x63 0x38 0x6C 0x6C 0x38 0x86 0xFC 0x00 0x00 0x00 0x00 0x7E 0x7E 0x7E 0x00 0x18 0x3C 0x7E 0x18 0x7E 0x3C 0x18 0xFF 0x18 0x3C 0x7E 0x18 0x18 0x18 0x18 0x00 0x18 0x18 0x18 0x18 0x7E 0x3C 0x18 0x00 0x00 0x18 0x0C 0xFE 0x0C 0x18 0x00 0x00 0x00 0x30 0x60 0xFE 0x60 0x30 0x00 0x00 0x00 0x00 0xC0 0xC0 0xC0 0xFE 0x00 0x00 0x00 0x24 0x66 0xFF 0x66 0x24 0x00 0x00 0x00 0x18 0x3C 0x7E 0xFF 0xFF 0x00 0x00 0x00 0xFF 0xFF 0x7E 0x3C 0x18 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x18 0x3C 0x3C 0x18 0x18 0x00 0x18 0x00 0x6C 0x6C 0x6C 0x00 0x00 0x00 0x00 0x00 0x6C 0x6C 0xFE 0x6C 0xFE 0x6C 0x6C 0x00 0x18 0x7E 0xC0 0x7C 0x06 0xFC 0x18 0x00 0x00 0xC6 0xCC 0x18 0x30 0x66 0xC6 0x00 0x38 0x6C 0x38 0x76 0xDC 0xCC 0x76 0x00 0x30 0x30 0x60 0x00 0x00 0x00 0x00 0x00 0x18 0x30 0x60 0x60 0x60 0x30 0x18 0x00 0x60 0x30 0x18 0x18 0x18 0x30 0x60 0x00 0x00 0x66 0x3C 0xFF 0x3C 0x66 0x00 0x00 0x00 0x18 0x18 0x7E 0x18 0x18 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x18 0x18 0x30 0x00 0x00 0x00 0x7E 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x18 0x18 0x00 0x06 0x0C 0x18 0x30 0x60 0xC0 0x80 0x00 0x7C 0xCE 0xDE 0xF6 0xE6 0xC6 0x7C 0x00 0x30 0x70 0x30 0x30 0x30 0x30 0xFC 0x00 0x78 0xCC 0x0C 0x38 0x60 0xCC 0xFC 0x00 0x78 0xCC 0x0C 0x38 0x0C 0xCC 0x78 0x00 0x1C 0x3C 0x6C 0xCC 0xFE 0x0C 0x1E 0x00 0xFC 0xC0 0xF8 0x0C 0x0C 0xCC 0x78 0x00 0x38 0x60 0xC0 0xF8 0xCC 0xCC 0x78 0x00 0xFC 0xCC 0x0C 0x18 0x30 0x30 0x30 0x00 0x78 0xCC 0xCC 0x78 0xCC 0xCC 0x78 0x00 0x78 0xCC 0xCC 0x7C 0x0C 0x18 0x70 0x00 0x00 0x18 0x18 0x00 0x00 0x18 0x18 0x00 0x00 0x18 0x18 0x00 0x00 0x18 0x18 0x30 0x18 0x30 0x60 0xC0 0x60 0x30 0x18 0x00 0x00 0x00 0x7E 0x00 0x7E 0x00 0x00 0x00 0x60 0x30 0x18 0x0C 0x18 0x30 0x60 0x00 0x3C 0x66 0x0C 0x18 0x18 0x00 0x18 0x00 0x7C 0xC6 0xDE 0xDE 0xDC 0xC0 0x7C 0x00 0x30 0x78 0xCC 0xCC 0xFC 0xCC 0xCC 0x00 0xFC 0x66 0x66 0x7C 0x66 0x66 0xFC 0x00 0x3C 0x66 0xC0 0xC0 0xC0 0x66 0x3C 0x00 0xF8 0x6C 0x66 0x66 0x66 0x6C 0xF8 0x00 0xFE 0x62 0x68 0x78 0x68 0x62 0xFE 0x00 0xFE 0x62 0x68 0x78 0x68 0x60 0xF0 0x00 0x3C 0x66 0xC0 0xC0 0xCE 0x66 0x3A 0x00 0xCC 0xCC 0xCC 0xFC 0xCC 0xCC 0xCC 0x00 0x78 0x30 0x30 0x30 0x30 0x30 0x78 0x00 0x1E 0x0C 0x0C 0x0C 0xCC 0xCC 0x78 0x00 0xE6 0x66 0x6C 0x78 0x6C 0x66 0xE6 0x00 0xF0 0x60 0x60 0x60 0x62 0x66 0xFE 0x00 0xC6 0xEE 0xFE 0xFE 0xD6 0xC6 0xC6 0x00 0xC6 0xE6 0xF6 0xDE 0xCE 0xC6 0xC6 0x00 0x38 0x6C 0xC6 0xC6 0xC6 0x6C 0x38 0x00 0xFC 0x66 0x66 0x7C 0x60 0x60 0xF0 0x00 0x7C 0xC6 0xC6 0xC6 0xD6 0x7C 0x0E 0x00 0xFC 0x66 0x66 0x7C 0x6C 0x66 0xE6 0x00 0x7C 0xC6 0xE0 0x78 0x0E 0xC6 0x7C 0x00 0xFC 0xB4 0x30 0x30 0x30 0x30 0x78 0x00 0xCC 0xCC 0xCC 0xCC 0xCC 0xCC 0xFC 0x00 0xCC 0xCC 0xCC 0xCC 0xCC 0x78 0x30 0x00 0xC6 0xC6 0xC6 0xC6 0xD6 0xFE 0x6C 0x00 0xC6 0xC6 0x6C 0x38 0x6C 0xC6 0xC6 0x00 0xCC 0xCC 0xCC 0x78 0x30 0x30 0x78 0x00 0xFE 0xC6 0x8C 0x18 0x32 0x66 0xFE 0x00 0x78 0x60 0x60 0x60 0x60 0x60 0x78 0x00 0xC0 0x60 0x30 0x18 0x0C 0x06 0x02 0x00 0x78 0x18 0x18 0x18 0x18 0x18 0x78 0x00 0x10 0x38 0x6C 0xC6 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0xFF 0x30 0x30 0x18 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x78 0x0C 0x7C 0xCC 0x76 0x00 0xE0 0x60 0x60 0x7C 0x66 0x66 0xDC 0x00 0x00 0x00 0x78 0xCC 0xC0 0xCC 0x78 0x00 0x1C 0x0C 0x0C 0x7C 0xCC 0xCC 0x76 0x00 0x00 0x00 0x78 0xCC 0xFC 0xC0 0x78 0x00 0x38 0x6C 0x64 0xF0 0x60 0x60 0xF0 0x00 0x00 0x00 0x76 0xCC 0xCC 0x7C 0x0C 0xF8 0xE0 0x60 0x6C 0x76 0x66 0x66 0xE6 0x00 0x30 0x00 0x70 0x30 0x30 0x30 0x78 0x00 0x0C 0x00 0x1C 0x0C 0x0C 0xCC 0xCC 0x78 0xE0 0x60 0x66 0x6C 0x78 0x6C 0xE6 0x00 0x70 0x30 0x30 0x30 0x30 0x30 0x78 0x00 0x00 0x00 0xCC 0xFE 0xFE 0xD6 0xD6 0x00 0x00 0x00 0xB8 0xCC 0xCC 0xCC 0xCC 0x00 0x00 0x00 0x78 0xCC 0xCC 0xCC 0x78 0x00 0x00 0x00 0xDC 0x66 0x66 0x7C 0x60 0xF0 0x00 0x00 0x76 0xCC 0xCC 0x7C 0x0C 0x1E 0x00 0x00 0xDC 0x76 0x62 0x60 0xF0 0x00 0x00 0x00 0x7C 0xC0 0x70 0x1C 0xF8 0x00 0x10 0x30 0xFC 0x30 0x30 0x34 0x18 0x00 0x00 0x00 0xCC 0xCC 0xCC 0xCC 0x76 0x00 0x00 0x00 0xCC 0xCC 0xCC 0x78 0x30 0x00 0x00 0x00 0xC6 0xC6 0xD6 0xFE 0x6C 0x00 0x00 0x00 0xC6 0x6C 0x38 0x6C 0xC6 0x00 0x00 0x00 0xCC 0xCC 0xCC 0x7C 0x0C 0xF8 0x00 0x00 0xFC 0x98 0x30 0x64 0xFC 0x00 0x1C 0x30 0x30 0xE0 0x30 0x30 0x1C 0x00 0x18 0x18 0x18 0x00 0x18 0x18 0x18 0x00 0xE0 0x30 0x30 0x1C 0x30 0x30 0xE0 0x00 0x76 0xDC 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x10 0x38 0x6C 0xC6 0xC6 0xFE 0x00 } package require curses proc boxscreen {} { set cols [curses info cols] set lines [curses info lines] curses attr off underline curses attr on reverse for {set i 0} {$i < $cols } {incr i} { curses move 0 $i curses puts " " curses move [expr $lines - 1] $i curses puts " " } for {set i 0} {$i < $lines} {incr i} { curses move $i 0 curses puts " " curses move $i [expr $cols - 1] curses puts " " } } proc bigstr {str row col} { curses attr off reverse set reverse 0 set charno 0 set fo [open debug a] foreach char [split $str {}] { puts $fo "Char: $char" binary scan $char c f set index [expr $f * 8] puts $fo "Index: $index" for {set line 0} {$line < 8} {incr line} { set bitline [lindex $::fontmap [expr $index + $line]] puts $fo "Bitline: $bitline" binary scan [binary format c $bitline] B8 charline set cix 0 foreach c [split $charline {}] { if {$c} { curses attr on reverse curses move [expr $row + $line] [expr $col + $charno * 8 + $cix] curses puts " " } incr cix } } incr charno } close $fo } proc dolow off { curses erase boxscreen for {set i 0} {$i < 6} {incr i} { for {set j 0} {$j < 14} {incr j} { bigstr [binary format c [expr $off + $i * 14 + $j]] [expr 2 + $i * 8] [expr 2 + $j * 8] } } curses refresh read stdin 1 } fconfigure stdin -buffering none dolow 0 dolow 44 ====== <>Text Screen