home *** CD-ROM | disk | FTP | other *** search
/ Power-Programmierung / CD1.mdf / forth / compiler / fpc / tcom / debugger / wdump.seq < prev   
Text File  |  1989-09-16  |  2KB  |  71 lines

  1. \ WDUMP.SEQ      A word dump utility
  2.  
  3. \ anew wdumpstuff
  4. DECIMAL
  5.  
  6. \ The dump utility gives you a formatted hex dump with the ascii
  7. \ text corresponding to the bytes on the right hand side of the
  8. \ screen.  In addition you can use the SM word to set a range of
  9. \ memory locations to desired values.  SM displays an address and
  10. \ its contents.  You can go forwards or backwards depending upon
  11. \ which character you type. Entering a hex number changes the
  12. \ contents of the location.  DL can be used to dump a line of
  13. \ text from a screen.
  14.  
  15.  
  16. : %DUMP@       ( A1 --- C1 )
  17.                 DUMPSEG @ SWAP @L ;
  18.  
  19. DEFER DUMP@    ' %DUMP@ IS DUMP@
  20.  
  21. headerless
  22.  
  23. : .2Ww   ( n -- )   0 <#   # # # #   #>   TYPE   SPACE   ;
  24.  
  25. : D.2Ww   ( addr len -- )   BOUNDS ?DO   I DUMP@ .2Ww   2 +LOOP   ;
  26.  
  27. headers
  28.  
  29. : DLNw   ( addr --- )
  30.         CR   ." │"    DUMPSEG @ 0 <# ':' HOLD # # # # #> TYPE
  31.         DUP 0 <# # # # # #> TYPE ." │ "
  32.         16 D.2Ww   ." │"  ;
  33. headerless
  34.  
  35. : .HEADw ( addr len -- addr' len' )
  36.         OVER 15 AND
  37.         CR ." ╒═════════╤"
  38.         41 0 DO ." ═" LOOP  ." ╕"
  39.         CR ." │ SEG:OFF │ "
  40.         16 0 DO  DUP I + 15 AND 3 .R 2 SPACES  2 +LOOP ." │"  drop
  41.         CR ." ╞═════════╪"
  42.         41 0 DO ." ═" LOOP  ." ╡" ;
  43.  
  44. : .FOOTw ( --- )
  45.         CR ." ╘═════════╧"
  46.         41 0 DO ." ═" LOOP  ." ╛" CR ;
  47.  
  48. headers
  49.  
  50. : LWDUMP         ( SEG addr len -- )
  51.                 ROT DUMPSEG !
  52.                 BASE @ -ROT HEX .HEADw BOUNDS
  53.                 DO      I DLNw  KEY? ?LEAVE
  54.             16 +LOOP    BASE !  .FOOTw ;
  55.  
  56. : WDUMP          ( A1 N1 --- )
  57.                 ?CS: -ROT LWDUMP ;
  58.  
  59. : YWDUMP         ( A1 N1 --- )
  60.                 YSEG @ -ROT LWDUMP ;
  61.  
  62. : XWDUMP         ( SEG N1 --- )
  63.                 SWAP +XSEG 0 ROT LWDUMP ;
  64.  
  65. : WDU            ( addr -- addr+64 )
  66.                 DUP 64 DUMPSEG @ -ROT LWDUMP 64 +   ;
  67.  
  68. behead
  69.  
  70.  
  71.