9. Dump the System Constants

#SILENCE

# FK ( -- ) dump system constants
#           also shows how to use "#MACROEXPANSION" and "#NOMACROEXPANSION"
#           to prevent unintentional macro expansion (e.g. "loop" in strings.)

#define kdump=FK

#BUFFER
{K
  "\n n|value     |description\n"
  "--|----------|---------------------------------------------------------\n"
  0 dup K swap " #|#w|address of data stack list head\n"
  1 dup K swap " #|#D0|size of items on the data stack in bytes\n"
  2 dup K swap
#NOMACROEXPANSION
               " #|#w|address of the loop control stack list head\n"
#MACROEXPANSION
  3 dup K swap
#NOMACROEXPANSION
    " #|#D0|size of items on the loop control stack in bytes\n"
#MACROEXPANSION
  4 dup K swap " #|#w|address of the function return stack list head\n"
  5 dup K swap
    " #|#D0|size of items on the function return stack in bytes\n"
  6 dup K swap " #|#w|base address of the code string passed to interp\n"
  7 dup K swap " #|#D0|size of one token in bytes\n"
  8 dup K swap " #|#w|base address of the command vector table\n"
  9 dup K swap
    " #|#D0|size of each command vector table entry in bytes\n"
 10 dup K swap "#|#w|address of NOP (non-operation) function\n"
 11 dup K swap "#|#w|address of UNOP (unknown operation) function\n"
 12 dup K swap "#|#w|address of output number base value (32-bits)\n"
 13 dup K swap "#|#w|address of the base address of the global data area\n"
 14 dup K swap "#|#D0|size of the global data area in bytes\n"
 15 dup K swap "#|#w|address of the base address of the local data area\n"
 16 dup K swap "#|#D0|size of the local data area in bytes\n"
 17 dup K swap
    "#|#w|address of the base address of the system constants area\n"
 18 dup K swap "#|#D0|size of the system constants data area in bytes\n"
 19 dup K swap
    "#|#w|address of the base address of the global function table\n"
 20 dup K swap
    "#|#w|address of the base address of the local function table\n"
 21 dup K swap "#|#w|interp's vector table initialization flag (always 1)\n"
 22 dup K swap "#|#w|address of the base address of ibuf[]\n"
 23 dup K swap "#|#w|address of the base address of ebuf[]\n"
 24 dup K swap "#|#w|argc, number of CLI arguments including command\n"
 25 dup K swap "#|#w|argv[], base address of arg list pointer table\n"
 26 dup K swap "#|#w|address of optind, the first script argument\n"
 27 dup K swap "#|#w|scratchpad1, for computing elapsed time\n"
 28 dup K swap "#|#w|scratchpad2, for computing elapsed time\n"
 29 dup K swap
    "#|#D0|TYPE_OF_BUILD (0=OS, 1=NOFLAGS, 2=NOCLI, 3=SIN, 4=I2)\n"
 30 dup K swap
    "#|#D0|DATA_STACK_DEPTH (default is 1024)\n"
 31 dup K swap
    "#|#D0|LCSP_STACK_DEPTH (default is 1024)\n"
 32 dup K swap
    "#|#D0|FRSP_STACK_DEPTH (default is 1024)\n"
 33 dup K swap
    "#|#D0|VARIABLE_POOL_DEPTH (default is 1024)\n"
 34 dup K swap
    "#|#w|NO_PRIVATE_DATA (default=0/FALSE)\n"
 35 dup K swap
    "#|#D0|INBUF_SIZE (default is 4097)\n"
 36 dup K swap
    "#|#D0|BIGBUF_SIZE (default is 65536)\n"
 37 dup K swap
    "#|#w|ENFORCE_ADDRESS_ALIGNMENT (default=~0/TRUE)\n"
 38 dup K swap
    "#|#w|PRINT_ITERATOR_ADDRESS (default=0/NOT SET)\n"
 39 dup K swap
    "#|#D0|PRINT_ITERATOR_MODE (default=1/auto-increment)\n"
 40 dup K swap
    "#|#w|PRINT_ITERATOR_FIRST_ONE (default=~0/TRUE)\n"
}
#EXECUTE
#PROMPT