Scr#1
\ UTILITIES 1 DECOMPILER

: #WORDS 0 CONTEXT @ @  BEGIN
  ?DUP WHILE 2- @ SWAP 1+ SWAP
  REPEAT ;

: HIGH-NFA CONTEXT @ @ HERE
   BEGIN 2 PICK 2 PICK U<
   WHILE DROP DUP 2- @ SWAP
  REPEAT UNDER UNDER ;
: ID. ID. SPACE ;
' BL 1+ @ CONSTANT DOCON
'  : 1+ @ CONSTANT DOCOL
  27099   CONSTANT NEXT
' BASE 1+ @ CONSTANT DOUSER
VARIABLE HIGHADDRESS

: SEE: 3 + BEGIN DUP @ DUP >NAME
  ID. DUP DUP >R LIT LIT = IF
 DROP 2+ DUP ? ELSE DUP LIT
 BRANCH =  OVER LIT ?BRANCH = OR
  OVER LIT (DO) = OR
  OVER LIT (?DO) = OR
                        IF
  DROP 2+ DUP @ OVER  - .
  ELSE DUP LIT (.") =
  OVER LIT (ABORT") = OR
  IF DROP 2+  COUNT 2DUP TYPE
  &" EMIT SPACE + 2- ELSE DUP
  LIT COMPILE = IF DROP 2+ DUP @
  >NAME ID. -->


Scr#2
\ UTILITIES 2 DECOMPILER

 ELSE LIT (;CODE) = IF 3 + DUP
 @ DOCOL - IF R> DROP LIT EXIT
 >R THEN
 THEN THEN THEN THEN THEN 2+
 R> LIT EXIT = UNTIL
 DROP ;

: WDUMP DUP HIGHADDRESS @ OVER -
  100 MIN DUMP ;
: (SEE) DUP U. DUP HIGH-NFA 2-
  HIGHADDRESS ! DUP >NAME
 C@ 64 AND IF  ." IMMEDIATE "
 THEN DUP C@  205 - IF
 ." CODEWORD " WDUMP ELSE DUP 1+
 @ DUP DOCON = IF ." CONSTANT="
 DROP DUP 3 + ? ELSE
 DUP DOCOL = IF ." : " DROP DUP
 SEE: ELSE DUP NEXT = IF
 ." CREATE " DROP WDUMP
     ELSE DUP DOUSER = IF
." USER=" DROP DUP 3 + C@
27039 + ? ELSE HIGH-NFA 2- @
ID. WDUMP THEN THEN THEN THEN
 THEN
CR HIGHADDRESS @ SWAP - 3 - .
." BYTES ALLOTTED " ;

: SEE ' (SEE) ;


