CREATE  3 ALLOT
0 VALUE .
0 VALUE .
0 VALUE .
0 VALUE .

: . ( c-addr -- )
  FALSE TO .
  >R
  .
  BEGIN
    DUP CELL+ 1
    R@ 1 COMPARE 0=
    IF CELL+ CHAR+ COUNT TYPE SPACE RDROP EXIT THEN
    @ DUP 0=
  UNTIL RDROP DROP
  TRUE TO .
;
: . ( c-addr -- )
  >R
  .
  BEGIN
    DUP
    CELL+ 2
    R@ 2 COMPARE 0=
    IF CELL+ CHAR+ CHAR+ COUNT TYPE SPACE RDROP FALSE
       DUP TO . EXIT
    THEN
    @ DUP 0=
  UNTIL DROP
  .
  BEGIN
    DUP
    CELL+ 1
    R@ 1 COMPARE 0=
    IF CELL+ CHAR+ CHAR+ COUNT TYPE SPACE RDROP TRUE
       FALSE TO . EXIT
    THEN
    @ DUP 0=
  UNTIL RDROP DROP TRUE
;
: . ( c-addr n -- )
  >R
  >R
  .
  BEGIN
    DUP CELL+ 1
    R@ 1 COMPARE 0=
    IF CELL+ CHAR+ COUNT RDROP R> IF + COUNT THEN
       TYPE SPACE
       FALSE TO . EXIT
    THEN
    @ DUP 0=
  UNTIL RDROP RDROP DROP
;

: -- ( n -- )
   .
   1+ .
  IF  2 + SWAP .
  ELSE DROP THEN
;
: 
  ." "
   CHAR+ CHAR+ C@
  >R
  R@ [CHAR] 0 = R@ [CHAR] 4 > OR
   CHAR+ C@ [CHAR] 1 = OR
  IF ."  " RDROP EXIT THEN
  R@ [CHAR] 1 =
  IF SPACE RDROP EXIT THEN
  RDROP ."  "
;
: 
  ." "
   CHAR+ CHAR+ C@
  >R
  R@ [CHAR] 0 = R@ [CHAR] 4 > OR
   CHAR+ C@ [CHAR] 1 = OR
  IF ."  " RDROP EXIT THEN
  R@ [CHAR] 1 =
  IF SPACE RDROP EXIT THEN
  RDROP ."  "
;
: 
  ." "
   CHAR+ CHAR+ C@
  >R
  R@ [CHAR] 0 = R@ [CHAR] 4 > OR
   CHAR+ C@ [CHAR] 1 = OR
  IF SPACE RDROP EXIT THEN
  R@ [CHAR] 1 =
  IF ."  " RDROP EXIT THEN
  RDROP ."  "
;
  
CREATE  '  , '  , '  , ' NOOP ,

: 
  . 0=
  IF  CELLS  + @ EXECUTE
  ELSE DROP THEN
;
CREATE  12 ALLOT

: $ ( $ -- )
  DUP 0< IF ."   " ABS THEN
  0 <# #S #> 12 MIN
   12 [CHAR] 0 FILL
  12 OVER -
   + SWAP MOVE
   12
  0 DO DUP I +
        3 MOVE
       I 6 =
       --
       I 3 / 
    3 +LOOP DROP
;
: $DM ( $ -- )
  DUP 0< IF ."   " ABS THEN
  0 <# #S #> 12 MIN
   12 [CHAR] 0 FILL
  12 OVER -
   + SWAP MOVE
   12
  0 DO DUP I +
        3 MOVE
       I 6 = I 9 = OR
       --
       I 3 / 
    3 +LOOP DROP
;

: 
  BEGIN
    REFILL SOURCE NIP 0<> AND
  WHILE
    HERE
    . ,
    TO .
    TIB C@ C,
    BL WORD DROP BL WORD ",
  REPEAT
;
: 
  BEGIN
    REFILL SOURCE NIP 0<> AND
  WHILE
    HERE
    . ,
    TO .
    TIB C@ C,
    TIB CHAR+ C@ C,
    BL WORD DROP BL WORD ",
  REPEAT
;
: 
  BEGIN
    REFILL SOURCE NIP 0<> AND
  WHILE
    HERE
    . ,
    TO .
    TIB C@ C,
    BL WORD DROP BL WORD ", BL WORD ",
  REPEAT
;


1 
2 
3 
4 
5 
6 
7 
8 
9 


10 
11 
12 
13 
14 
15 
16 
17 
18 
19 
20 
30 
40 
50 
60 
70 
80 
90 


1           
2             
3             
4       
5           
6         
7           
8       
9       

