Warning: this is an htmlized version!
The original is here, and the conversion rules are here. |
\ ============================================================================== \ \ RubyFORTH -- Copyright (C) 2007-8, Marc Simpson (GPL). \ \ Block to text converter. Assumes 64x16 blocks. \ \ ============================================================================== \ --[ Tools ]------------------------------------------------------------------- : hr ( n -- ) 0 do char - emit loop ; \ --[ Variables ]--------------------------------------------------------------- variable block-file variable block# \ --[ File Words ]-------------------------------------------------------------- : set-block-file ( filename$ -- ) r/o open block-file ! 0 block# ! ; : read-next-line ( -- readline$ ) block-file @ 64 read ; \ --[ Printing ]---------------------------------------------------------------- : spaces ( n -- ) 0 do space loop ; : .margin ( -- ) ." | " ; : .filler ( -- ) .margin 64 spaces .margin ; : .line ( -- ) .margin read-next-line type .margin cr ; : .heading ( -- ) block# @ dup 0 > if .filler then cr ." +----[ Block: " 3 .r space ." ]-----------------------------------------------+" cr .filler cr ; \ --[ Blocks ]------------------------------------------------------------------ : eob? ( -- f ) block-file @ eof? ; : block++ ( -- ) 1 block# +! ; : .block ( -- ) .heading 16 0 do eob? if unloop else .line then loop ; : .blocks ( -- ) cr begin eob? not while .block block++ repeat 67 hr ; \ --[ Toplevel ]---------------------------------------------------------------- : deblock ( filename$ -- ) set-block-file .blocks ; : deblock: ( "filename" -- ) bl parse deblock ; \ ------------------------------------------------------------------------------