home *** CD-ROM | disk | FTP | other *** search
/ Dream 48 / Amiga_Dream_48.iso / Atari / forth / forst.zoo / forst / lib / intout.s < prev    next >
Text File  |  1990-12-10  |  840b  |  34 lines

  1. ( basic number output words)
  2. ( assumes on stack: addr,#chars,integer)
  3.  
  4. decimal
  5.  
  6. variable base  10 base !
  7. create ipad 20 allot
  8. ipad 20 + address padend
  9.  
  10. another u/mod  \ copy up from the system
  11.  
  12. : <# ( integer--addr,0,integer)
  13.   >r  padend 0  r> ;  called
  14. : #> ( addr,#chars,integer--addr,#chars)
  15.   drop ;  
  16.   
  17. : hold ( addr,#chars,integer,char--addr',#chars',integer)
  18.   { 4 args ptr #chars value char }
  19.   char ptr dec c!
  20.   ptr #chars 1+ value ;  
  21. : sign  0< if 45 hold then ;  
  22. : abs  dup 0< if negate then ;  
  23.  
  24. : #  ( addr,#chars,integer--addr,#chars',integer')
  25.   base @ u/mod  swap
  26.   dup 10 <  if 48 else 55 then +  hold ;  
  27. : #s  ( addr,#chars,integer--addr',#chars',0)
  28.   begin  # dup  0= until ;  
  29.   
  30. : (u.)  <# #s #> ;
  31. : u.  (u.) type space ;
  32. : (.)  dup >r abs <# #s r> sign #> ;
  33. : .  (.) type space ;
  34.