home *** CD-ROM | disk | FTP | other *** search
/ RISC DISC 1 / RISC_DISC_1.iso / pd_share / code / forthmacs / !Forthmacs / extend / printf < prev    next >
Encoding:
Text File  |  1994-07-24  |  881 b   |  28 lines

  1. : based.  ( n base -- )
  2.    base @ >r base !  <# #s #> type
  3.    r> base !
  4. ;
  5. : xemit  ( char -- )  dup newline =  if  drop cr  else  emit  then  ;
  6. : .cstring  ( adr -- )  begin  dup c@  ?dup  while  xemit 1+   repeat  drop  ;
  7. : printf  ( argn .. arg1 format -- )
  8.    ( ... format )
  9.    begin  dup c@ ?dup  while
  10.       dup ascii % <>  if  emit  else   ( ... arg adr char )
  11.          drop
  12.          ca1+ dup c@                   ( ... arg adr' char )
  13.          case
  14.             ascii c of  swap xemit         endof
  15.             ascii s of  swap .cstring      endof
  16.             ascii x of  swap d# 16 based.  endof
  17.             ascii d of  swap d# 10 based.  endof
  18.             ascii o of  swap d#  8 based.  endof
  19.             ascii b of  swap d#  2 based.  endof
  20.             ( default ) dup xemit
  21.          endcase
  22.       then
  23.       ca1+                             ( adr' )
  24.    repeat
  25.    drop
  26. ;
  27.  
  28.