Diff for /gforth/kernel/nio.fs between versions 1.4 and 1.5

version 1.4, 1998/12/08 22:03:12 version 1.5, 1999/02/03 00:10:25
Line 24 Line 24
 \ hold <# #> sign # #s                                 25jan92py  \ hold <# #> sign # #s                                 25jan92py
   
 : hold    ( char -- ) \ core  : hold    ( char -- ) \ core
       \G Used within @code{<#} and @code{#>}. Append the character char
       \G to the pictured numeric output string.
     pad cell - -1 chars over +! @ c! ;      pad cell - -1 chars over +! @ c! ;
   
 : <# ( -- ) \ core      less-number-sign  : <# ( -- ) \ core      less-number-sign
       \G Initialise/clear the pictured numeric output string.
     pad cell - dup ! ;      pad cell - dup ! ;
   
 : #>      ( xd -- addr u ) \ core       number-sign-greater  : #>      ( xd -- addr u ) \ core       number-sign-greater
       \G Complete the pictured numeric output string by
       \G discarding xd and returning addr u; the address and length
       \G of the formatted string. A Standard program may modify characters
       \G within the string.
     2drop pad cell - dup @ tuck - ;      2drop pad cell - dup @ tuck - ;
   
 : sign    ( n -- ) \ core  : sign    ( n -- ) \ core
       \G Used within @code{<#} and @code{#>}. If n (a @var{single} number)
       \G is negative, append the display code for a minus sign to the pictured
       \G numeric output string. Since the string is built up "backwards"
       \G this is usually used immediately prior to @code{#>}, as shown in
       \G the examples below.
     0< IF  [char] - hold  THEN ;      0< IF  [char] - hold  THEN ;
   
 : #       ( ud1 -- ud2 ) \ core         number-sign  : #       ( ud1 -- ud2 ) \ core         number-sign
       \G Used within @code{<#} and @code{#>}. Add the next least-significant
       \G digit to the pictured numeric output string. This is achieved by dividing ud1
       \G by the number in @code{base} to leave quotient ud2 and remainder n; n
       \G is converted to the appropriate display code (eg ASCII code) and appended
       \G to the string. If the number has been fully converted, ud1 will be 0 and
       \G @code{#} will append a "0" to the string.
     base @ 2 max ud/mod rot 9 over <      base @ 2 max ud/mod rot 9 over <
     IF      IF
         [ char A char 9 - 1- ] Literal +          [ char A char 9 - 1- ] Literal +
     THEN      THEN
     [char] 0 + hold ;      [char] 0 + hold ;
   
 : #s      ( +d -- 0 0 ) \ core  number-sign-s  : #s      ( ud -- 0 0 ) \ core  number-sign-s
       \G Used within @code{<#} and @code{#>}. Convert all remaining digits
       \G using the same algorithm as for @code{#}. @code{#s} will convert
       \G at least one digit. Therefore, if ud is 0, @code{#s} will append
       \G a "0" to the pictured numeric output string.
     BEGIN      BEGIN
         # 2dup or 0=          # 2dup or 0=
     UNTIL ;      UNTIL ;
Line 50 Line 72
 \ print numbers                                        07jun92py  \ print numbers                                        07jun92py
   
 : d.r ( d n -- ) \ double       d-dot-r  : d.r ( d n -- ) \ double       d-dot-r
       \G Display d right-aligned in a field n characters wide. If more than
       \G n characters are needed to display the number, all digits are displayed.
       \G If appropriate, n must include a character for a leading "-".
     >r tuck  dabs  <# #s  rot sign #>      >r tuck  dabs  <# #s  rot sign #>
     r> over - spaces  type ;      r> over - spaces  type ;
   
 : ud.r ( ud n -- ) \ gforth     u-d-dot-r  : ud.r ( ud n -- ) \ gforth     u-d-dot-r
       \G Display ud right-aligned in a field n characters wide. If more than
       \G n characters are needed to display the number, all digits are displayed.
     >r <# #s #> r> over - spaces type ;      >r <# #s #> r> over - spaces type ;
   
 : .r ( n1 n2 -- ) \ core-ext    dot-r  : .r ( n1 n2 -- ) \ core-ext    dot-r
       \G Display n1 right-aligned in a field n2 characters wide. If more than
       \G n2 characters are needed to display the number, all digits are displayed.
       \G If appropriate, n2 must include a character for a leading "-".
     >r s>d r> d.r ;      >r s>d r> d.r ;
   
 : u.r ( u n -- )  \ core-ext    u-dot-r  : u.r ( u n -- )  \ core-ext    u-dot-r
       \G Display u right-aligned in a field n characters wide. If more than
       \G n characters are needed to display the number, all digits are displayed.
     0 swap ud.r ;      0 swap ud.r ;
   
 : d. ( d -- ) \ double  d-dot  : d. ( d -- ) \ double  d-dot
       \G Display (the signed double number) d in free-format. followed by a space.
     0 d.r space ;      0 d.r space ;
   
 : ud. ( ud -- ) \ gforth        u-d-dot  : ud. ( ud -- ) \ gforth        u-d-dot
       \G Display (the signed double number) ud in free-format, followed by a space.
     0 ud.r space ;      0 ud.r space ;
   
 : . ( n -- ) \ core     dot  : . ( n -- ) \ core     dot
       \G Display (the signed single number) n in free-format, followed by a space.
     s>d d. ;      s>d d. ;
   
 : u. ( u -- ) \ core    u-dot  : u. ( u -- ) \ core    u-dot
       \G Display (the unsigned single number) u in free-format, followed by a space.
     0 ud. ;      0 ud. ;
   

Removed from v.1.4  
changed lines
  Added in v.1.5


FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>