?? RIGHT := 110 ??
?? NEWTITLE := 'NOS/VE Dump Analyzer : Decode Command' ??
MODULE dum$decode_command;

{ PURPOSE:
{   This module contains the code for the decode command.

?? NEWTITLE := 'Global Declarations Referenced by This Module', EJECT ??
?? PUSH (LISTEXT := ON) ??
*copyc duc$dump_analyzer_constants
*copyc due$exception_condition_codes
?? POP ??
*copyc clp$close_display
*copyc clp$convert_integer_to_rjstring
*copyc clp$open_display_reference
*copyc clp$put_display
*copyc dup$access_real_memory
*copyc dup$copy_virtual_memory_pva
*copyc dup$copy_virtual_memory_sva
*copyc dup$evaluate_parameters
*copyc dup$new_page_procedure
*copyc dup$retrieve_exchange_package
*copyc osp$append_status_integer
*copyc osp$append_status_parameter
*copyc osp$disestablish_cond_handler
*copyc osp$establish_block_exit_hndlr
*copyc osp$set_status_abnormal
?? EJECT ??
*copyc duv$dump_environment_p
*copyc duv$execution_environment
*copyc duv$title_data
?? OLDTITLE ??
?? NEWTITLE := 'Global Declarations Declared by This Module', EJECT ??

  TYPE
    t$instruction_designation = (c$id_non_bdp, c$id_bdp_one, c$id_bdp_two),

    t$instruction_entry = RECORD
      instruction: string (24),
      format: t$instruction_format,
      designation: t$instruction_designation,
    RECEND,

    t$instruction_format = (c$it_unimplemented, c$it_jk, c$it_jkid, c$it_jkq);
?? EJECT ??
VAR
  v$instruction_list: ARRAY [0 .. 0ff(16)] OF t$instruction_entry :=
   {00} [['HALT                    ', c$it_jk,            c$id_non_bdp],
   {01}  ['SYNC                    ', c$it_jk,            c$id_non_bdp],
   {02}  ['EXCHANGE                ', c$it_jk,            c$id_non_bdp],
   {03}  ['INTRUPT    Xk           ', c$it_jk,            c$id_non_bdp],
   {04}  ['RETURN                  ', c$it_jk,            c$id_non_bdp],
   {05}  ['PURGE      Xj,k         ', c$it_jk,            c$id_non_bdp],
   {06}  ['POP                     ', c$it_jk,            c$id_non_bdp],
   {07}  ['PSFSA      k            ', c$it_jk,            c$id_non_bdp],
   {08}  ['CPYTX      Xk,Xj        ', c$it_jk,            c$id_non_bdp],
   {09}  ['CPYAA      Ak,Aj        ', c$it_jk,            c$id_non_bdp],
   {0A}  ['CPYXA      Ak,Xj        ', c$it_jk,            c$id_non_bdp],
   {0B}  ['CPYAX      Xk,Aj        ', c$it_jk,            c$id_non_bdp],
   {0C}  ['CPYRR      Xk,Xj        ', c$it_jk,            c$id_non_bdp],
   {0D}  ['CPYXX      Xk,Xj        ', c$it_jk,            c$id_non_bdp],
   {0E}  ['CPYSX      Xk,Xj        ', c$it_jk,            c$id_non_bdp],
   {0F}  ['CPYXS      Xk,Xj        ', c$it_jk,            c$id_non_bdp],
   {10}  ['INCX       Xk,j         ', c$it_jk,            c$id_non_bdp],
   {11}  ['DECX       Xk,j         ', c$it_jk,            c$id_non_bdp],
   {12}  ['NO OP CODE              ', c$it_unimplemented, c$id_non_bdp],
   {13}  ['NO OP CODE              ', c$it_unimplemented, c$id_non_bdp],
   {14}  ['LBSET      Xk,Aj,X0     ', c$it_jk,            c$id_non_bdp],
   {15}  ['NO OP CODE              ', c$it_unimplemented, c$id_non_bdp],
   {16}  ['TPAGE      Xk,Aj        ', c$it_jk,            c$id_non_bdp],
   {17}  ['LPAGE      Xk,Xj,X1     ', c$it_jk,            c$id_non_bdp],
   {18}  ['IORX       Xk,Xj        ', c$it_jk,            c$id_non_bdp],
   {19}  ['XORX       Xk,Xj        ', c$it_jk,            c$id_non_bdp],
   {1A}  ['ANDX       Xk,Xj        ', c$it_jk,            c$id_non_bdp],
   {1B}  ['NOTX       Xk,Xj        ', c$it_jk,            c$id_non_bdp],
   {1C}  ['INHX       Xk,Xj        ', c$it_jk,            c$id_non_bdp],
   {1D}  ['NO OP CODE              ', c$it_unimplemented, c$id_non_bdp],
   {1E}  ['MARK       Xk,X1,j      ', c$it_jk,            c$id_non_bdp],
   {1F}  ['ENTZ       Xk           ', c$it_jk,            c$id_non_bdp],
   {20}  ['ADDR       Xk,Xj        ', c$it_jk,            c$id_non_bdp],
   {21}  ['SUBR       Xk,Xj        ', c$it_jk,            c$id_non_bdp],
   {22}  ['MULR       Xk,Xj        ', c$it_jk,            c$id_non_bdp],
   {23}  ['DIVR       Xk,Xj        ', c$it_jk,            c$id_non_bdp],
   {24}  ['ADDX       Xk,Xj        ', c$it_jk,            c$id_non_bdp],
   {25}  ['SUBX       Xk,Xj        ', c$it_jk,            c$id_non_bdp],
   {26}  ['MULX       Xk,Xj        ', c$it_jk,            c$id_non_bdp],
   {27}  ['DIVX       Xk,Xj        ', c$it_jk,            c$id_non_bdp],
   {28}  ['INCR       Xk,j         ', c$it_jk,            c$id_non_bdp],
   {29}  ['DECR       Xk,j         ', c$it_jk,            c$id_non_bdp],
   {2A}  ['ADDAX      Ak,Xj        ', c$it_jk,            c$id_non_bdp],
   {2B}  ['NO OP CODE              ', c$it_unimplemented, c$id_non_bdp],
   {2C}  ['CMPR       X1,Xj,Xk     ', c$it_jk,            c$id_non_bdp],
   {2D}  ['CMPX       X1,Xj,Xk     ', c$it_jk,            c$id_non_bdp],
   {2E}  ['BRREL      Xk           ', c$it_jk,            c$id_non_bdp],
   {2F}  ['BRDIR      Aj,Xk        ', c$it_jk,            c$id_non_bdp],
   {30}  ['ADDF       Xk,Xj        ', c$it_jk,            c$id_non_bdp],
   {31}  ['SUBF       Xk,Xj        ', c$it_jk,            c$id_non_bdp],
   {32}  ['MULF       Xk,Xj        ', c$it_jk,            c$id_non_bdp],
   {33}  ['DIVF       Xk,Xj        ', c$it_jk,            c$id_non_bdp],
   {34}  ['ADDD       Xk,Xj        ', c$it_jk,            c$id_non_bdp],
   {35}  ['SUBD       Xk,Xj        ', c$it_jk,            c$id_non_bdp],
   {36}  ['MULD       Xk,Xj        ', c$it_jk,            c$id_non_bdp],
   {37}  ['DIVD       Xk,Xj        ', c$it_jk,            c$id_non_bdp],
   {38}  ['NO OP CODE              ', c$it_unimplemented, c$id_non_bdp],
   {39}  ['ENTX       X1,z         ', c$it_jk,            c$id_non_bdp],
   {3A}  ['CNIF       Xk,Xj        ', c$it_jk,            c$id_non_bdp],
   {3B}  ['CNFI       Xk,Xj        ', c$it_jk,            c$id_non_bdp],
   {3C}  ['CMPF       X1,Xj,Xk     ', c$it_jk,            c$id_non_bdp],
   {3D}  ['ENTP       Xk,j         ', c$it_jk,            c$id_non_bdp],
   {3E}  ['ENTN       Xk,j         ', c$it_jk,            c$id_non_bdp],
   {3F}  ['ENTL       X0,z         ', c$it_jk,            c$id_non_bdp],
   {40}  ['ADDFV      Ak,Aj,Ai,d   ', c$it_jkid         , c$id_non_bdp],
   {41}  ['SUBFV      Ak,Aj,Ai,d   ', c$it_jkid         , c$id_non_bdp],
   {42}  ['MULFV      Ak,Aj,Ai,d   ', c$it_jkid         , c$id_non_bdp],
   {43}  ['DIVFV      Ak,Aj,Ai,d   ', c$it_jkid         , c$id_non_bdp],
   {44}  ['ADDXV      Ak,Aj,Ai,d   ', c$it_jkid         , c$id_non_bdp],
   {45}  ['SUBXV      Ak,Aj,Ai,d   ', c$it_jkid         , c$id_non_bdp],
   {46}  ['NO OP CODE              ', c$it_unimplemented, c$id_non_bdp],
   {47}  ['NO OP CODE              ', c$it_unimplemented, c$id_non_bdp],
   {48}  ['IORV       Ak,Aj,Ai,d   ', c$it_jkid         , c$id_non_bdp],
   {49}  ['XORV       Ak,Aj,Ai,d   ', c$it_jkid         , c$id_non_bdp],
   {4A}  ['ANDV       Ak,Aj,Ai,d   ', c$it_jkid         , c$id_non_bdp],
   {4B}  ['CNIFV      Ak,Aj,d      ', c$it_jkid         , c$id_non_bdp],
   {4C}  ['CNFIV      Ak,Aj,d      ', c$it_jkid         , c$id_non_bdp],
   {4D}  ['SHFV       Ak,Aj,Ai,d   ', c$it_jkid         , c$id_non_bdp],
   {4E}  ['NO OP CODE              ', c$it_unimplemented, c$id_non_bdp],
   {4F}  ['NO OP CODE              ', c$it_unimplemented, c$id_non_bdp],
   {50}  ['COMPEQV    Ak,Aj,Ai,d   ', c$it_jkid         , c$id_non_bdp],
   {51}  ['CMPLTV     Ak,Aj,Ai,d   ', c$it_jkid         , c$id_non_bdp],
   {52}  ['CMPGEV     Ak,Aj,Ai,d   ', c$it_jkid         , c$id_non_bdp],
   {53}  ['CMPNEV     Ak,Aj,Ai,d   ', c$it_jkid         , c$id_non_bdp],
   {54}  ['MRGV       Ak,Aj,Ai,d   ', c$it_jkid         , c$id_non_bdp],
   {55}  ['GTHV       Ak,Aj,Xi,d   ', c$it_jkid         , c$id_non_bdp],
   {56}  ['SCTV       Ak,Aj,Xi,d   ', c$it_jkid         , c$id_non_bdp],
   {57}  ['SUMFV      Xk,Ai,d      ', c$it_jkid         , c$id_non_bdp],
   {58}  ['TPSFV      Ak,Aj,Ai,X0,d', c$it_jkid         , c$id_non_bdp],
   {59}  ['TPDFV      Ak,Aj,Ai,X0,d', c$it_jkid         , c$id_non_bdp],
   {5A}  ['TSPFV      Ak,Aj,Ai,X0,d', c$it_jkid         , c$id_non_bdp],
   {5B}  ['TDPFV      Ak,Aj,Ai,X0,d', c$it_jkid         , c$id_non_bdp],
   {5C}  ['SUMPFV     Xk,Aj,Ai,d   ', c$it_jkid         , c$id_non_bdp],
   {5D}  ['GTHIV      Ak,Aj,Ai,d   ', c$it_jkid         , c$id_non_bdp],
   {5E}  ['SCTIV      Ak,Aj,Ai,d   ', c$it_jkid         , c$id_non_bdp],
   {5F}  ['NO OP CODE              ', c$it_unimplemented, c$id_non_bdp],
   {60}  ['NO OP CODE              ', c$it_unimplemented, c$id_non_bdp],
   {61}  ['NO OP CODE              ', c$it_unimplemented, c$id_non_bdp],
   {62}  ['NO OP CODE              ', c$it_unimplemented, c$id_non_bdp],
   {63}  ['NO OP CODE              ', c$it_unimplemented, c$id_non_bdp],
   {64}  ['NO OP CODE              ', c$it_unimplemented, c$id_non_bdp],
   {65}  ['NO OP CODE              ', c$it_unimplemented, c$id_non_bdp],
   {66}  ['NO OP CODE              ', c$it_unimplemented, c$id_non_bdp],
   {67}  ['NO OP CODE              ', c$it_unimplemented, c$id_non_bdp],
   {68}  ['NO OP CODE              ', c$it_unimplemented, c$id_non_bdp],
   {69}  ['NO OP CODE              ', c$it_unimplemented, c$id_non_bdp],
   {6A}  ['NO OP CODE              ', c$it_unimplemented, c$id_non_bdp],
   {6B}  ['NO OP CODE              ', c$it_unimplemented, c$id_non_bdp],
   {6C}  ['NO OP CODE              ', c$it_unimplemented, c$id_non_bdp],
   {6D}  ['NO OP CODE              ', c$it_unimplemented, c$id_non_bdp],
   {6E}  ['NO OP CODE              ', c$it_unimplemented, c$id_non_bdp],
   {6F}  ['NO OP CODE              ', c$it_unimplemented, c$id_non_bdp],
   {70}  ['ADDN,Aj,X0 Ak,X1        ', c$it_jk,            c$id_bdp_two],
   {71}  ['SUBN,Aj,X0 Ak,X1        ', c$it_jk,            c$id_bdp_two],
   {72}  ['MULN,Aj,X0 Ak,X1        ', c$it_jk,            c$id_bdp_two],
   {73}  ['DIVN,Aj,X0 Ak,X1        ', c$it_jk,            c$id_bdp_two],
   {74}  ['CMPN,Aj,X0 Ak,X1        ', c$it_jk,            c$id_bdp_two],
   {75}  ['MOVN,Aj,X0 Ak,X1        ', c$it_jk,            c$id_bdp_two],
   {76}  ['MOVB,Aj,X0 Ak,X1        ', c$it_jk,            c$id_bdp_two],
   {77}  ['CMPB,Aj,X0 Ak,X1        ', c$it_jk,            c$id_bdp_two],
   {78}  ['NO OP CODE              ', c$it_unimplemented, c$id_non_bdp],
   {79}  ['NO OP CODE              ', c$it_unimplemented, c$id_non_bdp],
   {7A}  ['NO OP CODE              ', c$it_unimplemented, c$id_non_bdp],
   {7B}  ['NO OP CODE              ', c$it_unimplemented, c$id_non_bdp],
   {7C}  ['NO OP CODE              ', c$it_unimplemented, c$id_non_bdp],
   {7D}  ['NO OP CODE              ', c$it_unimplemented, c$id_non_bdp],
   {7E}  ['NO OP CODE              ', c$it_unimplemented, c$id_non_bdp],
   {7F}  ['NO OP CODE              ', c$it_unimplemented, c$id_non_bdp],
   {80}  ['LMULT      Xk,Aj,q      ', c$it_jkq,           c$id_non_bdp],
   {81}  ['SMULT      Xk,Aj,q      ', c$it_jkq,           c$id_non_bdp],
   {82}  ['LX         Xk,Aj,q      ', c$it_jkq,           c$id_non_bdp],
   {83}  ['SX         Xk,Aj,q      ', c$it_jkq,           c$id_non_bdp],
   {84}  ['LA         Ak,Aj,q      ', c$it_jkq,           c$id_non_bdp],
   {85}  ['SA         Ak,Aj,q      ', c$it_jkq,           c$id_non_bdp],
   {86}  ['LBYTP,j    Xk,q         ', c$it_jkq,           c$id_non_bdp],
   {87}  ['ENTC       X1,y         ', c$it_jkq,           c$id_non_bdp],
   {88}  ['LBIT       Xk,Aj,q,X0   ', c$it_jkq,           c$id_non_bdp],
   {89}  ['SBIT       Xk,Aj,q,X0   ', c$it_jkq,           c$id_non_bdp],
   {8A}  ['ADDRQ      Xk,Xj,q      ', c$it_jkq,           c$id_non_bdp],
   {8B}  ['ADDXQ      Xk,Xj,q      ', c$it_jkq,           c$id_non_bdp],
   {8C}  ['MULRQ      Xk,Xj,q      ', c$it_jkq,           c$id_non_bdp],
   {8D}  ['ENTE       Xk,q         ', c$it_jkq,           c$id_non_bdp],
   {8E}  ['ADDAQ      Ak,Aj,q      ', c$it_jkq,           c$id_non_bdp],
   {8F}  ['ADDPXQ     Ak,Xj,q      ', c$it_jkq,           c$id_non_bdp],
   {90}  ['BRREQ      Xj,Xk,q      ', c$it_jkq,           c$id_non_bdp],
   {91}  ['BRRNE      Xj,Xk,q      ', c$it_jkq,           c$id_non_bdp],
   {92}  ['BRRGT      Xj,Xk,q      ', c$it_jkq,           c$id_non_bdp],
   {93}  ['BRRGE      Xj,Xk,q      ', c$it_jkq,           c$id_non_bdp],
   {94}  ['BRXEQ      Xj,Xk,q      ', c$it_jkq,           c$id_non_bdp],
   {95}  ['BRXNE      Xj,Xk,q      ', c$it_jkq,           c$id_non_bdp],
   {96}  ['BRXGT      Xj,Xk,q      ', c$it_jkq,           c$id_non_bdp],
   {97}  ['BRXGE      Xj,Xk,q      ', c$it_jkq,           c$id_non_bdp],
   {98}  ['BRFEQ      Xj,Xk,q      ', c$it_jkq,           c$id_non_bdp],
   {99}  ['BRFNE      Xj,Xk,q      ', c$it_jkq,           c$id_non_bdp],
   {9A}  ['BRFGT      Xj,Xk,q      ', c$it_jkq,           c$id_non_bdp],
   {9B}  ['BRFGE      Xj,Xk,q      ', c$it_jkq,           c$id_non_bdp],
   {9C}  ['BRINC      Xj,Xk,q      ', c$it_jkq,           c$id_non_bdp],
   {9D}  ['BRSEG      X1,Aj,Ak,q   ', c$it_jkq,           c$id_non_bdp],
   {9E}  ['BROVR      Xk,q         ', c$it_jkq,           c$id_non_bdp],
   {9F}  ['BRCR       j,k,q        ', c$it_jkq,           c$id_non_bdp],
   {A0}  ['LAI        Ak,Aj,Xi,d   ', c$it_jkid,          c$id_non_bdp],
   {A1}  ['SAI        Ak,Aj,Xi,d   ', c$it_jkid,          c$id_non_bdp],
   {A2}  ['LXI        Xk,Aj,Xi,d   ', c$it_jkid,          c$id_non_bdp],
   {A3}  ['SXI        Xk,Aj,Xi,d   ', c$it_jkid,          c$id_non_bdp],
   {A4}  ['LBYT,X0    Xk,Aj,Xi,d   ', c$it_jkid,          c$id_non_bdp],
   {A5}  ['SBYT,X0    Xk,Aj,Xi,d   ', c$it_jkid,          c$id_non_bdp],
   {A6}  ['NO OP CODE              ', c$it_unimplemented, c$id_non_bdp],
   {A7}  ['ADDAD      Ak,Ai,d,j    ', c$it_jkid,          c$id_non_bdp],
   {A8}  ['SHFC       Xk,Xj,Xi,d   ', c$it_jkid,          c$id_non_bdp],
   {A9}  ['SHFX       Xk,Xj,Xi,d   ', c$it_jkid,          c$id_non_bdp],
   {AA}  ['SHFR       Xk,Xj,Xi,d   ', c$it_jkid,          c$id_non_bdp],
   {AB}  ['NO OP CODE              ', c$it_unimplemented, c$id_non_bdp],
   {AC}  ['ISOM       Xk,Xi,d      ', c$it_jkid,          c$id_non_bdp],
   {AD}  ['ISOB       Xk,Xj,Xi,d   ', c$it_jkid,          c$id_non_bdp],
   {AE}  ['INSB       Xk,Xj,Xi,d   ', c$it_jkid,          c$id_non_bdp],
   {AF}  ['NO OP CODE              ', c$it_unimplemented, c$id_non_bdp],
   {B0}  ['CALLREL    Aj,Ak,q      ', c$it_jkq,           c$id_non_bdp],
   {B1}  ['KEYPOINT   j,Xk,q       ', c$it_jkq,           c$id_non_bdp],
   {B2}  ['MULXQ      Xk,Xj,q      ', c$it_jkq,           c$id_non_bdp],
   {B3}  ['ENTA       X0,y         ', c$it_jkq,           c$id_non_bdp],
   {B4}  ['CMPXA      Xk,Aj,X0,q   ', c$it_jkq,           c$id_non_bdp],
   {B5}  ['CALLSEG    Aj,Ak,q      ', c$it_jkq,           c$id_non_bdp],
   {B6}  ['NO OP CODE              ', c$it_unimplemented, c$id_non_bdp],
   {B7}  ['NO OP CODE              ', c$it_unimplemented, c$id_non_bdp],
   {B8}  ['NO OP CODE              ', c$it_unimplemented, c$id_non_bdp],
   {B9}  ['NO OP CODE              ', c$it_unimplemented, c$id_non_bdp],
   {BA}  ['NO OP CODE              ', c$it_unimplemented, c$id_non_bdp],
   {BB}  ['NO OP CODE              ', c$it_unimplemented, c$id_non_bdp],
   {BC}  ['NO OP CODE              ', c$it_unimplemented, c$id_non_bdp],
   {BD}  ['NO OP CODE              ', c$it_unimplemented, c$id_non_bdp],
   {BE}  ['NO OP CODE              ', c$it_unimplemented, c$id_non_bdp],
   {BF}  ['NO OP CODE              ', c$it_unimplemented, c$id_non_bdp],
   {C0}  ['NO OP CODE              ', c$it_unimplemented, c$id_non_bdp],
   {C1}  ['NO OP CODE              ', c$it_unimplemented, c$id_non_bdp],
   {C2}  ['NO OP CODE              ', c$it_unimplemented, c$id_non_bdp],
   {C3}  ['NO OP CODE              ', c$it_unimplemented, c$id_non_bdp],
   {C4}  ['NO OP CODE              ', c$it_unimplemented, c$id_non_bdp],
   {C5}  ['NO OP CODE              ', c$it_unimplemented, c$id_non_bdp],
   {C6}  ['NO OP CODE              ', c$it_unimplemented, c$id_non_bdp],
   {C7}  ['NO OP CODE              ', c$it_unimplemented, c$id_non_bdp],
   {C8}  ['NO OP CODE              ', c$it_unimplemented, c$id_non_bdp],
   {C9}  ['NO OP CODE              ', c$it_unimplemented, c$id_non_bdp],
   {CA}  ['NO OP CODE              ', c$it_unimplemented, c$id_non_bdp],
   {CB}  ['NO OP CODE              ', c$it_unimplemented, c$id_non_bdp],
   {CC}  ['NO OP CODE              ', c$it_unimplemented, c$id_non_bdp],
   {CD}  ['NO OP CODE              ', c$it_unimplemented, c$id_non_bdp],
   {CE}  ['NO OP CODE              ', c$it_unimplemented, c$id_non_bdp],
   {CF}  ['NO OP CODE              ', c$it_unimplemented, c$id_non_bdp],
   {D0}  ['LBYTS,1    Xk,Aj,Xi,d   ', c$it_jkid,          c$id_non_bdp],
   {D1}  ['LBYTS,2    Xk,Aj,Xi,d   ', c$it_jkid,          c$id_non_bdp],
   {D2}  ['LBYTS,3    Xk,Aj,Xi,d   ', c$it_jkid,          c$id_non_bdp],
   {D3}  ['LBYTS,4    Xk,Aj,Xi,d   ', c$it_jkid,          c$id_non_bdp],
   {D4}  ['LBYTS,5    Xk,Aj,Xi,d   ', c$it_jkid,          c$id_non_bdp],
   {D5}  ['LBYTS,6    Xk,Aj,Xi,d   ', c$it_jkid,          c$id_non_bdp],
   {D6}  ['LBYTS,7    Xk,Aj,Xi,d   ', c$it_jkid,          c$id_non_bdp],
   {D7}  ['LBYTS,8    Xk,Aj,Xi,d   ', c$it_jkid,          c$id_non_bdp],
   {D8}  ['SBYTS,1    Xk,Aj,Xi,d   ', c$it_jkid,          c$id_non_bdp],
   {D9}  ['SBYTS,2    Xk,Aj,Xi,d   ', c$it_jkid,          c$id_non_bdp],
   {DA}  ['SBYTS,3    Xk,Aj,Xi,d   ', c$it_jkid,          c$id_non_bdp],
   {DB}  ['SBYTS,4    Xk,Aj,Xi,d   ', c$it_jkid,          c$id_non_bdp],
   {DC}  ['SBYTS,5    Xk,Aj,Xi,d   ', c$it_jkid,          c$id_non_bdp],
   {DD}  ['SBYTS,6    Xk,Aj,Xi,d   ', c$it_jkid,          c$id_non_bdp],
   {DE}  ['SBYTS,7    Xk,Aj,Xi,d   ', c$it_jkid,          c$id_non_bdp],
   {DF}  ['SBYTS,8    Xk,Aj,Xi,d   ', c$it_jkid,          c$id_non_bdp],
   {E0}  ['NO OP CODE              ', c$it_unimplemented, c$id_non_bdp],
   {E1}  ['NO OP CODE              ', c$it_unimplemented, c$id_non_bdp],
   {E2}  ['NO OP CODE              ', c$it_unimplemented, c$id_non_bdp],
   {E3}  ['NO OP CODE              ', c$it_unimplemented, c$id_non_bdp],
   {E4}  ['SCLN,Aj,X0 Ak,X1,Xi,d   ', c$it_jkid,          c$id_bdp_two],
   {E5}  ['SCLR,Aj,X0 Ak,X1,Xi,d   ', c$it_jkid,          c$id_bdp_two],
   {E6}  ['NO OP CODE              ', c$it_unimplemented, c$id_non_bdp],
   {E7}  ['NO OP CODE              ', c$it_unimplemented, c$id_non_bdp],
   {E8}  ['NO OP CODE              ', c$it_unimplemented, c$id_non_bdp],
   {E9}  ['CMPC,Aj,X0 Ak,X1,Ai,d   ', c$it_jkid,          c$id_bdp_two],
   {EA}  ['NO OP CODE              ', c$it_unimplemented, c$id_non_bdp],
   {EB}  ['TRANB,Aj,X0 Ak,X1,Ai,d  ', c$it_jkid,          c$id_bdp_two],
   {EC}  ['NO OP CODE              ', c$it_unimplemented, c$id_non_bdp],
   {ED}  ['EDIT,Aj,X0 Ak,X1,Ai,d   ', c$it_jkid,          c$id_bdp_two],
   {EE}  ['NO OP CODE              ', c$it_unimplemented, c$id_non_bdp],
   {EF}  ['NO OP CODE              ', c$it_unimplemented, c$id_non_bdp],
   {F0}  ['NO OP CODE              ', c$it_unimplemented, c$id_non_bdp],
   {F1}  ['NO OP CODE              ', c$it_unimplemented, c$id_non_bdp],
   {F2}  ['NO OP CODE              ', c$it_unimplemented, c$id_non_bdp],
   {F3}  ['SCNB,X0,   Ak,X1,Ai,d   ', c$it_jkid,          c$id_bdp_one],
   {F4}  ['NO OP CODE              ', c$it_unimplemented, c$id_non_bdp],
   {F5}  ['NO OP CODE              ', c$it_unimplemented, c$id_non_bdp],
   {F6}  ['NO OP CODE              ', c$it_unimplemented, c$id_non_bdp],
   {F7}  ['NO OP CODE              ', c$it_unimplemented, c$id_non_bdp],
   {F8}  ['NO OP CODE              ', c$it_unimplemented, c$id_non_bdp],
   {F9}  ['MOVI,Xi,d  Ak,X1,j      ', c$it_jkid,          c$id_bdp_one],
   {FA}  ['CMPI,Xi,d  Ak,X1,j      ', c$it_jkid,          c$id_bdp_one],
   {FB}  ['ADDI,X1,d  Ak,X1,j      ', c$it_jkid,          c$id_bdp_one],
   {FC}  ['NO OP CODE              ', c$it_unimplemented, c$id_non_bdp],
   {FD}  ['NO OP CODE              ', c$it_unimplemented, c$id_non_bdp],
   {FE}  ['NO OP CODE              ', c$it_unimplemented, c$id_non_bdp],
   {FF}  ['NO OP CODE              ', c$it_unimplemented, c$id_non_bdp]];
?? OLDTITLE ??
?? NEWTITLE := 'dup$decode_command', EJECT ??

{ PURPOSE:
{   This procedure decodes object code from memory.

  PROCEDURE [XDCL] dup$decode_command
    (    parameter_list: clt$parameter_list;
     VAR status: ost$status);

{ PROCEDURE decode (
{   address, a: integer = $required
{   bytes, b: integer 0..duc$maximum_memory_display = 8
{   exchange, e: any of
{       key
{         (active a) (monitor m) (job j)
{       keyend
{       integer 0..0ffffffff(16)
{     anyend = 0ffffffff(16)
{   processor, p: integer 0..3 = 0
{   address_mode, am: key
{       (process_virtual_address pva) (system_virtual_address sva) (real_memory_address rma)
{     keyend = process_virtual_address
{   output, o: file
{   title, t: string 1..31 = 'decode'
{   status)

?? PUSH (LISTEXT := ON) ??
?? FMT (FORMAT := OFF) ??
  VAR
    pdt: [STATIC, READ, cls$declaration_section] record
      header: clt$pdt_header,
      names: array [1 .. 15] of clt$pdt_parameter_name,
      parameters: array [1 .. 8] of clt$pdt_parameter,
      type1: record
        header: clt$type_specification_header,
        qualifier: clt$integer_type_qualifier,
      recend,
      type2: record
        header: clt$type_specification_header,
        qualifier: clt$integer_type_qualifier,
        default_value: string (1),
      recend,
      type3: record
        header: clt$type_specification_header,
        qualifier: clt$union_type_qualifier,
        type_size_1: clt$type_specification_size,
        element_type_spec_1: record
          header: clt$type_specification_header,
          qualifier: clt$keyword_type_qualifier,
          keyword_specs: array [1 .. 6] of clt$keyword_specification,
        recend,
        type_size_2: clt$type_specification_size,
        element_type_spec_2: record
          header: clt$type_specification_header,
          qualifier: clt$integer_type_qualifier,
        recend,
        default_value: string (13),
      recend,
      type4: record
        header: clt$type_specification_header,
        qualifier: clt$integer_type_qualifier,
        default_value: string (1),
      recend,
      type5: record
        header: clt$type_specification_header,
        qualifier: clt$keyword_type_qualifier,
        keyword_specs: array [1 .. 6] of clt$keyword_specification,
        default_value: string (23),
      recend,
      type6: record
        header: clt$type_specification_header,
      recend,
      type7: record
        header: clt$type_specification_header,
        qualifier: clt$string_type_qualifier,
        default_value: string (8),
      recend,
      type8: record
        header: clt$type_specification_header,
      recend,
    recend := [
    [1,
    [90, 4, 16, 9, 12, 35, 916],
    clc$command, 15, 8, 1, 0, 0, 0, 8, ''], [
    ['A                              ',clc$abbreviation_entry, 1],
    ['ADDRESS                        ',clc$nominal_entry, 1],
    ['ADDRESS_MODE                   ',clc$nominal_entry, 5],
    ['AM                             ',clc$abbreviation_entry, 5],
    ['B                              ',clc$abbreviation_entry, 2],
    ['BYTES                          ',clc$nominal_entry, 2],
    ['E                              ',clc$abbreviation_entry, 3],
    ['EXCHANGE                       ',clc$nominal_entry, 3],
    ['O                              ',clc$abbreviation_entry, 6],
    ['OUTPUT                         ',clc$nominal_entry, 6],
    ['P                              ',clc$abbreviation_entry, 4],
    ['PROCESSOR                      ',clc$nominal_entry, 4],
    ['STATUS                         ',clc$nominal_entry, 8],
    ['T                              ',clc$abbreviation_entry, 7],
    ['TITLE                          ',clc$nominal_entry, 7]],
    [
{ PARAMETER 1
    [2, clc$normal_usage_entry, clc$non_secure_parameter,
    $clt$parameter_spec_methods[clc$specify_by_name, clc$specify_positionally],
    clc$pass_by_value, clc$immediate_evaluation, clc$standard_parameter_checking, 20, clc$required_parameter,
  0, 0],
{ PARAMETER 2
    [6, clc$normal_usage_entry, clc$non_secure_parameter,
    $clt$parameter_spec_methods[clc$specify_by_name, clc$specify_positionally],
    clc$pass_by_value, clc$immediate_evaluation, clc$standard_parameter_checking, 20,
  clc$optional_default_parameter, 0, 1],
{ PARAMETER 3
    [8, clc$normal_usage_entry, clc$non_secure_parameter,
    $clt$parameter_spec_methods[clc$specify_by_name, clc$specify_positionally],
    clc$pass_by_value, clc$immediate_evaluation, clc$standard_parameter_checking, 269,
  clc$optional_default_parameter, 0, 13],
{ PARAMETER 4
    [12, clc$normal_usage_entry, clc$non_secure_parameter,
    $clt$parameter_spec_methods[clc$specify_by_name, clc$specify_positionally],
    clc$pass_by_value, clc$immediate_evaluation, clc$standard_parameter_checking, 20,
  clc$optional_default_parameter, 0, 1],
{ PARAMETER 5
    [3, clc$normal_usage_entry, clc$non_secure_parameter,
    $clt$parameter_spec_methods[clc$specify_by_name, clc$specify_positionally],
    clc$pass_by_value, clc$immediate_evaluation, clc$standard_parameter_checking, 229,
  clc$optional_default_parameter, 0, 23],
{ PARAMETER 6
    [10, clc$normal_usage_entry, clc$non_secure_parameter,
    $clt$parameter_spec_methods[clc$specify_by_name, clc$specify_positionally],
    clc$pass_by_value, clc$immediate_evaluation, clc$standard_parameter_checking, 3, clc$optional_parameter, 0
  , 0],
{ PARAMETER 7
    [15, clc$normal_usage_entry, clc$non_secure_parameter,
    $clt$parameter_spec_methods[clc$specify_by_name, clc$specify_positionally],
    clc$pass_by_value, clc$immediate_evaluation, clc$standard_parameter_checking, 8,
  clc$optional_default_parameter, 0, 8],
{ PARAMETER 8
    [13, clc$normal_usage_entry, clc$non_secure_parameter,
    $clt$parameter_spec_methods[clc$specify_by_name],
    clc$pass_by_reference, clc$immediate_evaluation, clc$standard_parameter_checking, 3,
  clc$optional_parameter, 0, 0]],
{ PARAMETER 1
    [[1, 0, clc$integer_type], [clc$min_integer, clc$max_integer, 10]],
{ PARAMETER 2
    [[1, 0, clc$integer_type], [0, duc$maximum_memory_display, 10],
    '8'],
{ PARAMETER 3
    [[1, 0, clc$union_type], [[clc$integer_type, clc$keyword_type],
    FALSE, 2],
    229, [[1, 0, clc$keyword_type], [6], [
      ['A                              ', clc$abbreviation_entry, clc$normal_usage_entry, 1],
      ['ACTIVE                         ', clc$nominal_entry, clc$normal_usage_entry, 1],
      ['J                              ', clc$abbreviation_entry, clc$normal_usage_entry, 3],
      ['JOB                            ', clc$nominal_entry, clc$normal_usage_entry, 3],
      ['M                              ', clc$abbreviation_entry, clc$normal_usage_entry, 2],
      ['MONITOR                        ', clc$nominal_entry, clc$normal_usage_entry, 2]]
      ],
    20, [[1, 0, clc$integer_type], [0, 0ffffffff(16), 10]]
    ,
    '0ffffffff(16)'],
{ PARAMETER 4
    [[1, 0, clc$integer_type], [0, 3, 10],
    '0'],
{ PARAMETER 5
    [[1, 0, clc$keyword_type], [6], [
    ['PROCESS_VIRTUAL_ADDRESS        ', clc$nominal_entry, clc$normal_usage_entry, 1],
    ['PVA                            ', clc$abbreviation_entry, clc$normal_usage_entry, 1],
    ['REAL_MEMORY_ADDRESS            ', clc$nominal_entry, clc$normal_usage_entry, 3],
    ['RMA                            ', clc$abbreviation_entry, clc$normal_usage_entry, 3],
    ['SVA                            ', clc$abbreviation_entry, clc$normal_usage_entry, 2],
    ['SYSTEM_VIRTUAL_ADDRESS         ', clc$nominal_entry, clc$normal_usage_entry, 2]]
    ,
    'process_virtual_address'],
{ PARAMETER 6
    [[1, 0, clc$file_type]],
{ PARAMETER 7
    [[1, 0, clc$string_type], [1, 31, FALSE],
    '''decode'''],
{ PARAMETER 8
    [[1, 0, clc$status_type]]];
?? FMT (FORMAT := ON) ??
?? POP ??

    CONST
      p$address = 1,
      p$bytes = 2,
      p$exchange = 3,
      p$processor = 4,
      p$address_mode = 5,
      p$output = 6,
      p$title = 7,
      p$status = 8;

    VAR
      pvt: array [1 .. 8] of clt$parameter_value;

    TYPE
      t$bdp_part = RECORD
        part_1: 0 .. 0ffff(16),
        part_2: 0 .. 0ffff(16),
      RECEND,

      t$data_line = RECORD
        CASE boolean OF
        = TRUE =
          line: string (60),
        = FALSE =
          space_1: string (2),
          address: string (8),
          space_2: string (3),
          op_code_jk: string (4),
          space_3: string (1),
          q_part: string (4),
          space_4: string (3),
          instruction: string (24),
        CASEND,
      RECEND,

      t$op_code_jk = PACKED RECORD
        CASE 0 .. 2 OF
        = 0 =
          op_code: 0 .. 0ff(16),
          j: 0 .. 0f(16),
          k: 0 .. 0f(16),
        = 1 =
          op_code_part: 0 .. 0ff(16),
          j_left: 0 .. 3,
          j_right: 0 .. 3,
          k_part: 0 .. 0f(16),
        = 2 =
          op_code_jk: 0 .. 0ffff(16),
        CASEND,
      RECEND,

      t$q_id_part = PACKED RECORD
        CASE 0 .. 2 OF
        = 0 =
          q: 0 .. 0ffff(16),
        = 1 =
          i: 0 .. 0f(16),
          d: 0 .. 0fff(16),
        = 2 =
          i_part: 0 .. 0f(16),
          d_bit_1: 0 .. 1,
          d_rest: 0 .. 7ff(16),
        CASEND,
      RECEND;

    VAR
      access_data: dut$access_data,
      address: dut$ee_address_parameter,
      bdp_index: 1 .. 2,
      bdp_loop_count: 0 .. 2,
      bdp_part_p: ^t$bdp_part,
      bytes: ost$segment_length,
      data_line: t$data_line,
      data_seq_p: ^SEQ ( * ),
      decode_address: ost$segment_offset,
      default_list: ARRAY [1 .. 3] OF dut$default_change_list_entry,
      display_control: clt$display_control,
      display_string: string (osc$max_string_size),
      exchange_package_p: ^dut$exchange_package,
      ignore_status: ost$status,
      index: 1 .. 24,
      instruction: string (24),
      memory_p: ^cell,
      new_byte_size: ost$segment_length,
      op_code_jk_p: ^t$op_code_jk,
      output_display_opened: boolean,
      processor: 0 .. duc$de_maximum_processors,
      q_id_part_p: ^t$q_id_part,
      ring_attributes: amt$ring_attributes,
      string_length: integer;

*copy dup$abort_handler
?? NEWTITLE := 'clean_up', EJECT ??

{ PURPOSE:
{   This procedure is called from the abort handler to close the file.

    PROCEDURE [INLINE] clean_up;

      VAR
        ignore_status: ost$status;

      IF output_display_opened THEN
        clp$close_display (display_control, ignore_status);
      IFEND;

    PROCEND clean_up;
?? OLDTITLE, EJECT ??

    status.normal := TRUE;

    { Change the default value for the EXCHANGE, PROCESSOR and ADDRESS_MODE parameters.

    default_list [1].default_name := duc$dp_exchange;
    default_list [1].number := p$exchange;
    default_list [2].default_name := duc$dp_processor;
    default_list [2].number := p$processor;
    default_list [3].default_name := duc$dp_address_mode;
    default_list [3].number := p$address_mode;
    dup$evaluate_parameters (parameter_list, default_list, #SEQ (pdt), ^pvt, status);
    IF NOT status.normal THEN
      RETURN;  {---->
    IFEND;

    IF duv$dump_environment_p = NIL THEN
      osp$set_status_abnormal (duc$dump_analyzer_id, due$no_restart_file, '', status);
      RETURN;  {---->
    IFEND;

    IF (duv$execution_environment.processing_options = duc$ee_po_no_memory) OR
          (NOT duv$dump_environment_p^.central_memory.available AND
          NOT duv$dump_environment_p^.critical_memory.available) THEN
      osp$set_status_abnormal (duc$dump_analyzer_id, due$data_not_on_dump, 'The central memory is', status);
      RETURN;  {---->
    IFEND;
    IF pvt [p$bytes].value^.integer_value.value = 0 THEN
      RETURN;  {---->
    IFEND;

    IF (pvt [p$address_mode].value^.keyword_value <> 'PROCESS_VIRTUAL_ADDRESS') AND
          pvt [p$exchange].specified THEN
      osp$set_status_abnormal (duc$dump_analyzer_id, due$rma_and_exc_specified, '', status);
      RETURN;  {---->
    IFEND;

    output_display_opened := FALSE;
    osp$establish_block_exit_hndlr (^abort_handler);

   /display_opened/
    BEGIN

      { Prepare the output display file.

      IF pvt [p$output].specified THEN
        ring_attributes.r1 := #RING (^ring_attributes);
        ring_attributes.r2 := #RING (^ring_attributes);
        ring_attributes.r3 := #RING (^ring_attributes);
        clp$open_display_reference (pvt [p$output].value^.file_value^, ^dup$new_page_procedure, fsc$list,
              ring_attributes, display_control, status);
        IF NOT status.normal THEN
          EXIT /display_opened/;  {---->
        IFEND;
        output_display_opened := TRUE;
      ELSE
        display_control := duv$execution_environment.output_file.display_control;
        display_control.line_number := display_control.page_length + 1;
      IFEND;

      duv$title_data.build_title := TRUE;
      duv$title_data.command_name := pvt [p$title].value^.string_value^;

      address.rma_part := pvt [p$address].value^.integer_value.value;
      bytes := pvt [p$bytes].value^.integer_value.value;
      processor := pvt [p$processor].value^.integer_value.value;

      IF pvt [p$address_mode].value^.keyword_value = 'PROCESS_VIRTUAL_ADDRESS' THEN
        STRINGREP (display_string, string_length, 'segment =', address.pva_part.seg: #(16));
        clp$put_display (display_control, display_string (1, string_length), clc$no_trim, status);
      IFEND;

      IF (pvt [p$address_mode].value^.keyword_value = 'PROCESS_VIRTUAL_ADDRESS') OR
            (pvt [p$address_mode].value^.keyword_value = 'SYSTEM_VIRTUAL_ADDRESS') THEN
        PUSH data_seq_p: [[REP bytes OF cell]];
        IF data_seq_p = NIL THEN
          osp$set_status_abnormal (duc$dump_analyzer_id, due$nil_pointer, '', status);
          EXIT /display_opened/;  {---->
        IFEND;
        RESET data_seq_p;
      IFEND;

      IF pvt [p$address_mode].value^.keyword_value = 'PROCESS_VIRTUAL_ADDRESS' THEN
        dup$retrieve_exchange_package (processor, pvt [p$exchange].value^, exchange_package_p, status);
        IF NOT status.normal THEN
          EXIT /display_opened/;  {---->
        IFEND;
        dup$copy_virtual_memory_pva (address.pva_part, exchange_package_p^, processor, bytes, TRUE,
              new_byte_size, data_seq_p, access_data, status);
        IF NOT status.normal AND (status.condition <> due$memory_partially_avail) THEN
          EXIT /display_opened/;  {---->
        IFEND;
        IF access_data.page_fault AND NOT access_data.memory_found THEN
          osp$set_status_abnormal (duc$dump_analyzer_id, due$page_fault_error_severity, '', status);
          osp$append_status_parameter (osc$status_parameter_delimiter, ', segment = ', status);
          osp$append_status_integer (osc$status_parameter_delimiter, address.pva_part.seg, 16, TRUE, status);
          osp$append_status_parameter (osc$status_parameter_delimiter, ', offset = ', status);
          osp$append_status_integer (osc$status_parameter_delimiter, access_data.page_fault_offset, 16, TRUE,
                status);
          EXIT /display_opened/;  {---->
        IFEND;

      ELSEIF pvt [p$address_mode].value^.keyword_value = 'SYSTEM_VIRTUAL_ADDRESS' THEN
        dup$copy_virtual_memory_sva (address.sva_part, processor, bytes, TRUE, new_byte_size,
              data_seq_p, access_data, status);
        IF NOT status.normal AND (status.condition <> due$memory_partially_avail) THEN
          EXIT /display_opened/;  {---->
        IFEND;
        IF access_data.page_fault AND NOT access_data.memory_found THEN
          osp$set_status_abnormal (duc$dump_analyzer_id, due$page_fault_error_severity, '', status);
          osp$append_status_parameter (osc$status_parameter_delimiter, ', asid = ', status);
          osp$append_status_integer (osc$status_parameter_delimiter, address.sva_part.asid.value, 16, TRUE,
                status);
          osp$append_status_parameter (osc$status_parameter_delimiter, ', offset = ', status);
          osp$append_status_integer (osc$status_parameter_delimiter, access_data.page_fault_offset, 16, TRUE,
                status);
          EXIT /display_opened/;  {---->
        IFEND;

      ELSE  { pvt [p$address_mode].value^.keyword_value = 'REAL_MEMORY_ADDRESS' }
        dup$access_real_memory (bytes, address.rma_part, memory_p, new_byte_size, status);
        IF NOT status.normal AND (status.condition <> due$memory_partially_avail) THEN
          EXIT /display_opened/;  {---->
        IFEND;
        RESET duv$execution_environment.memory_file_p^.segment_pointer.sequence_pointer TO memory_p;
        NEXT data_seq_p: [[REP new_byte_size OF cell]] IN
              duv$execution_environment.memory_file_p^.segment_pointer.sequence_pointer;
        IF data_seq_p = NIL THEN
          osp$set_status_abnormal (duc$dump_analyzer_id, due$nil_pointer, '', status);
          EXIT /display_opened/;  {---->
        IFEND;
      IFEND;

      decode_address := address.pva_part.offset;
      RESET data_seq_p;
      WHILE new_byte_size > 0 DO
        data_line.line := ' ';
        clp$convert_integer_to_rjstring (decode_address, 16, FALSE, '0', data_line.address, ignore_status);

        IF (new_byte_size - #SIZE (t$op_code_jk)) < 0 THEN
          EXIT /display_opened/;  {---->
        IFEND;
        NEXT op_code_jk_p IN data_seq_p;
        IF op_code_jk_p = NIL THEN
          osp$set_status_abnormal (duc$dump_analyzer_id, due$nil_pointer, '', status);
          EXIT /display_opened/;  {---->
        IFEND;
        new_byte_size := new_byte_size - #SIZE (op_code_jk_p^);
        decode_address := decode_address + #SIZE (op_code_jk_p^);
        clp$convert_integer_to_rjstring (op_code_jk_p^.op_code_jk, 16, FALSE, '0', data_line.op_code_jk,
              ignore_status);

        IF (v$instruction_list [op_code_jk_p^.op_code].format = c$it_jkid) OR
              (v$instruction_list [op_code_jk_p^.op_code].format = c$it_jkq) THEN
          IF (new_byte_size - #SIZE (t$q_id_part)) < 0 THEN
            EXIT /display_opened/;  {---->
          IFEND;
          NEXT q_id_part_p IN data_seq_p;
          IF q_id_part_p = NIL THEN
            osp$set_status_abnormal (duc$dump_analyzer_id, due$nil_pointer, '', status);
            EXIT /display_opened/;  {---->
          IFEND;
          new_byte_size := new_byte_size - #SIZE (q_id_part_p^);
          decode_address := decode_address + #SIZE (q_id_part_p^);
          clp$convert_integer_to_rjstring (q_id_part_p^.q, 16, FALSE, '0', data_line.q_part, ignore_status);
        IFEND;

        instruction := v$instruction_list [op_code_jk_p^.op_code].instruction;
        FOR index := 1 TO #SIZE (instruction) DO
          IF instruction (index) = 'j' THEN
            IF (op_code_jk_p^.op_code >= 40(16)) AND (op_code_jk_p^.op_code < 60(16)) AND
                  (q_id_part_p^.d_bit_1 = 1) THEN
              instruction (index - 1) := 'X';
            IFEND;
            clp$convert_integer_to_rjstring (op_code_jk_p^.j, 16, FALSE, '0', instruction (index),
                  ignore_status);
          ELSEIF instruction (index) = 'k' THEN
            clp$convert_integer_to_rjstring (op_code_jk_p^.k, 16, FALSE, '0', instruction (index),
                  ignore_status);
          ELSEIF instruction (index) = 'i' THEN
            clp$convert_integer_to_rjstring (q_id_part_p^.i, 16, FALSE, '0', instruction (index),
                  ignore_status);
          ELSEIF instruction (index) = 'd' THEN
            clp$convert_integer_to_rjstring (q_id_part_p^.d, 16, FALSE, '0', instruction (index, 3),
                  ignore_status);
          ELSEIF instruction (index) = 'q' THEN
            clp$convert_integer_to_rjstring (q_id_part_p^.q, 16, FALSE, '0', instruction (index, 4),
                  ignore_status);
          ELSEIF instruction (index) = 'z' THEN
            clp$convert_integer_to_rjstring (op_code_jk_p^.j, 16, FALSE, '0', instruction (index),
                  ignore_status);
            clp$convert_integer_to_rjstring (op_code_jk_p^.k, 16, FALSE, '0', instruction (index+1),
                  ignore_status);
          ELSEIF instruction (index) = 'y' THEN
            clp$convert_integer_to_rjstring (op_code_jk_p^.j, 16, FALSE, '0', instruction (index),
                  ignore_status);
            clp$convert_integer_to_rjstring (op_code_jk_p^.k, 16, FALSE, '0', instruction (index+1),
                  ignore_status);
            clp$convert_integer_to_rjstring (q_id_part_p^.q, 16, FALSE, '0', instruction (index+2, 4),
                  ignore_status);
          IFEND;
        FOREND;
        IF op_code_jk_p^.op_code = 9E(16) THEN
          IF op_code_jk_p^.j_right = 0 THEN
            instruction (1, 5) := 'BROVR';
          ELSEIF op_code_jk_p^.j_right = 1 THEN
            instruction (1, 5) := 'BRUND';
          ELSEIF (op_code_jk_p^.j_right = 2) OR (op_code_jk_p^.j_right = 3) THEN
            instruction (1, 5) := 'BRUND';
          IFEND;
        IFEND;
        data_line.instruction := instruction;
        clp$put_display (display_control, data_line.line, clc$trim, ignore_status);

        IF v$instruction_list [op_code_jk_p^.op_code].designation = c$id_bdp_one THEN
          bdp_loop_count := 1;
        ELSEIF v$instruction_list [op_code_jk_p^.op_code].designation = c$id_bdp_two THEN
          bdp_loop_count := 2;
        ELSE
          bdp_loop_count := 0;
        IFEND;

        FOR bdp_index := 1 TO bdp_loop_count DO
          data_line.line := ' ';
          clp$convert_integer_to_rjstring (decode_address, 16, FALSE, '0', data_line.address, ignore_status);
          IF (new_byte_size - #SIZE (t$bdp_part)) < 0 THEN
            EXIT /display_opened/;  {---->
          IFEND;
          NEXT bdp_part_p IN data_seq_p;
          IF bdp_part_p = NIL THEN
            osp$set_status_abnormal (duc$dump_analyzer_id, due$nil_pointer, '', status);
            EXIT /display_opened/;  {---->
          IFEND;
          new_byte_size := new_byte_size - #SIZE (bdp_part_p^);
          decode_address := decode_address + #SIZE (bdp_part_p^);
          clp$convert_integer_to_rjstring (bdp_part_p^.part_1, 16, FALSE, '0', data_line.op_code_jk,
                ignore_status);
          clp$convert_integer_to_rjstring (bdp_part_p^.part_2, 16, FALSE, '0', data_line.q_part,
                ignore_status);
          clp$put_display (display_control, data_line.line, clc$trim, ignore_status);
        FOREND;
      WHILEND;

    END /display_opened/;

    IF output_display_opened THEN
      clp$close_display (display_control, ignore_status);
    IFEND;
    osp$disestablish_cond_handler;

  PROCEND dup$decode_command;
MODEND dum$decode_command;
