ASMB,R,L,C
      HED RTE MICRODEBUG EDITOR SUBROUTINE-MDES 
      NAM MDES,7 92061-16005 REV.1926 790416
      EXT LURQ,WLOAD,CREAT,CLOSE,WRITF,EXEC,REIO,IFBRK
      ENT MDES
* 
*   ********************************************************* 
*   * (C) COPYRIGHT HEWLETT-PACKARD COMPANY 1976.           * 
*   *                                                       * 
*   * ALL RIGHTS RESERVED.  NO PART OF THIS PROGRAM MAY BE  * 
*   * PHOTOCOPIED, REPRODUCED, OR TRANSLATED TO ANOTHER     * 
*   * PROGRAM LANGUAGE WITHOUT THE PRIOR WRITTEN CONSENT OF * 
*   * HEWLETT-PACKARD COMPANY.                              * 
*   ********************************************************* 
* 
*     CALL MDES:
* 
*                   EXT MDES
*                   . 
*                   . 
*             CALL  JSB MDES     TRANSFER CONTROL TO MDES 
*                   DEF RTURN    RETURN POINT 
*                   DEF LU1      OPERATOR CONSOLE LU(OPT. DEFAULT=1)
*                   DEF LU2      WCS LU(OPTIONAL) 
*                   DEF LU3      2ND WCS LU(OPTIONAL) 
*                   DEF LU4      3RD WCS LU(OPTIONAL) 
*                   DEF ECODE    ERROR CODE ADDRESS 
*             RTURN EQU * 
*                   . 
*                   . 
*             LU1   DEC XX       OPERATOR CONSOLE(OPTIONAL) 
*             LU2   DEC XX       WCS LU NUMBER(OPTIONAL)
*             LU3   DEC XX       ADDITIONAL WCS LU(OPTIONAL)
*             LU4   DEC XX       ADDITIONAL WCS LU(OPTIONAL)
*             ECODE OCT 0        ERROR CODE(0=SUCCESSFUL,-1=ABORTED)
* 
*     MDES CONTAINS THE ACTUAL MICRODEBUG EDITOR. IT ALLOWS 
*     LOADING AND DUMPING OF BINARY MICRO-OBJECT CODE.
*     MICROPROGRAMS MAY BE MODIFIED AND/OR DEBUGGED(WHILE 
*     WCS RESIDENT) USING MDES. DVR36 IS REQUIRED.
* 
*     THE PROGRAM MAP CONSISTS OF THE FOLLOWING SECTIONS IN 
*     THE ORDER SHOWN:
* 
*                   INITIALIZATION SECTION
*                   CONTROL SECTION 
*                   COMMAND ROUTINES
*                   SUBROUTINES                  **** 
*                   TABLES AND BUFFERS           *   *
*                   MESSAGES                     *   *
*                   CONSTANTS,LINKS AND STORAGE  *  ****
*                                                ****   * 
*                                                   *   * 
*                                                   *   * 
*                                                   ****
      HED MDES
      SUP 
A     EQU 0 
B     EQU 1 
S     EQU 1 
* 
*     INITIALIZATION SECTION
* 
*     1.  SAVES REGISTERS FOR RU COMMAND USE. 
*     2.  GETS PARAMETERS FROM CALLING PROGRAM. 
*     3.  CONFIGURES OPERATOR CONSOLE.
*     4.  CHECKS PARAMETERS.
*     5.  SETS MX OR MX-E COMPUTER TYPE FLAG. 
*     6.  BUILDS WCSLT. 
*     7.  LOCKS ANY WCS LU'S IN WCSLT.
* 
CLU   NOP           ADDRESS OF CONSOLE LU 
WLU1  NOP           ADDRESS OF 1ST WCS LU 
WLU2  NOP           ADDRESS OF 2ND WCS LU 
WLU3  NOP           ADDRESS OF 3RD WCS LU 
PERR  NOP           ADDRESS OF ERROR CODE 
MDES  NOP 
      STA A.REG     SAVE
      STB B.REG      REGISTERS
      LIB S           UPON
      STB S.REG        ENTRY
      STX X.REG         OF MDES 
      STY Y.REG 
      CLA 
      SOC 
      INA 
      STA O.REG 
      CLA 
      SEZ 
      INA 
      STA E.REG 
      CLA           CLEAR 
      STA CLU        PARAMETERS 
      STA WLU1        POINTERS
      STA WLU2         AREA 
      STA WLU3
      STA PERR
      JSB GTPAR     GET PARAMETERS
      DEF CLU        FROM CALLING PROGRAM 
      LDA CLU       ANY OPERATOR CONSOLE
      SZA,RSS        LU PASSED TO MDES? 
      JMP MDE12     NO.TREAT AS DEFAULT 
      LDA CLU,I     DEFAULT THE 
      SZA,RSS        OPERATOR CONSOLE LU? 
      SKP 
MDE12 EQU * 
      LDA B1        YES 
      STA CLU       SAVE IT 
      IOR CW01      CONFIGURE CONSOLE 
      STA CW01       INTO CONTROL WORDS 
      AND B77 
      IOR CW04
      STA CW04
      LDA CTYPE     ALREADY HAVE THE
      SZA            COMPUTER TYPE? 
      JMP MDE11     YES 
      JSB M.OUT     NO.ASK
      DEF HEADR      OPERATOR 
      DEF .29         FOR TYPE
      JSB M.IN      GET THE 
      DEF SAVE0      OPERATOR'S 
      DEF .1          RESPONSE
      LDA SAVE0     GET SINGLE
      ALF,ALF        CHARACTER
      AND B377        RESPONSE
      CPA ONE       IS IT A 21MX? 
      JMP MDE01     YES 
      CPA TWO       NO.IS IT A 21MX E-SERIES? 
      JMP MDE02     YES 
      JMP MDE07     NO.ILLEGAL-ABORT MDES 
MDE01 EQU * 
      LDA B1        SET MX
      RSS            FLAG 
MDE02 EQU * 
      LDA B100K     SET MX-E FLAG 
      STA CTYPE     SAVE TYPE 
MDE11 EQU * 
      LDA WLU1      DEFAULT 
      SZA,RSS        1ST WCS LU?
      JMP MDE08     YES.GO ON TO NEXT 
      LDA WLU1,I    NO.IS THE 1ST WCS 
      SZA,RSS        LU PASSED=0? 
      JMP MDE08     YES.DEFAULT IT
      JSB CHKLU     NO.CHECK 1ST WCS LU 
      JMP MDE08     LU ERROR.DON'T ADD TO WCSLT 
      LDA WLU1,I    ADD LU
      JSB ADDLU      TO WCSLT 
      SKP 
MDE08 EQU * 
      LDA WLU2      DEFAULT 
      SZA,RSS        2ND WCS LU?
      JMP MDE13     YES.GO ON TO NEXT 
      LDA WLU2,I    NO.IS THE 2ND WCS 
      SZA,RSS        LU PASSED=0? 
      JMP MDE13     YES.DEFAULT IT
      JSB CHKLU     NO.CHECK 2ND WCS LU 
      JMP MDE13     LU ERROR.DON'T ADD TO WCSLT 
      LDA WLU2,I    ADD LU
      JSB ADDLU      TO WCSLT 
MDE13 EQU * 
      LDA WLU3      DEFAULT 
      SZA,RSS        3RD WCS LU?
      JMP MDE09     YES.NO MORE WCS LU'S
      LDA WLU3,I    NO.IS THE 3RD WCS 
      SZA,RSS        LU PASSED=0? 
      JMP MDE09     YES.DEFAULT IT
      JSB CHKLU     NO.CHECK 3RD WCS LU 
      JMP MDE09     LU ERROR.DON'T ADD TO WCSLT 
      LDA WLU3,I    ADD LU
      JSB ADDLU      TO WCSLT 
MDE09 EQU * 
      JSB LOCK      LOCK WCS LU'S IN WCSLT
      CLA           CLEAR 
      STA PERR,I     ERROR CODE 
      SKP 
*     CONTROL SECTION 
* 
*     1.  ISSUES PROMPT.
*     2.  TAKES INPUT FROM OPERATOR CONSOLE.
*     3.  DIRECTS COMMAND TO ITS COMMAND ROUTINE. 
*     4.  REPORTS SOME ERRORS.
*     5.  RETURNS TO CALLING PROGRAM. 
* 
MDE03 EQU * 
      JSB M.OUT     ISSUE 
      DEF $          PROMPT 
      DEF .1
      JSB M.IN      TAKE FIRST
PNT04 DEF IBUFF      COMMAND
      DEF M.80         INPUT
      STB COUNT     SAVE CHARACTER COUNT
      LDA B         INITIALIZE SUBROUTINES
      LDB PNT04      "XGET" AND "XGETN" TO
      JSB XGETI       THE INPUT ASCII STRING
      CLE           CHECK INPUT FOR 
      LDB COUNT      CORRECT SYNTAX 
      JSB SCAN
      JMP MDE06     ERROR 
      LDX M1        X=-1
      LDB PNT05     POINT TO COMMANDS TABLE 
MDE04 EQU * 
      CPA B,I       LOOK
      JMP MDE05      UP 
      XAX             COMMAND 
      CPA B,I 
      JMP MDE06     COULDN'T FIND THE COMMAND-ERROR 
      XAX 
      ADB .2
      JMP MDE04 
MDE05 EQU * 
      INB           GO TO 
      LDA B,I        COMMAND
      JMP A,I         ROUTINE 
MDE10 EQU * 
      JSB ERROR     MDE 
      DEF .2         ERROR 002
      JMP MDE03     TRY AGAIN 
MDE06 EQU * 
      JSB ERROR     MDE 
      DEF .5         ERROR 005
      JMP MDE03     TRY AGAIN 
MDE07 EQU * 
      LDA PERR      DID CALLING PROGRAM 
      SZA,RSS        PASS AN ERROR CODE ADDRESS?
      JMP EXIT      NO.EXIT MDES
      CCB           YES.SET ERROR 
      STB A,I        CODE = -1
      JMP EXIT      RETURN TO CALLING PROGRAM 
      HED COMMAND ROUTINES IN ALPHANUMERIC ORDER
      SKP 
*     B R E A K 
* 
*     SETS BREAKPOINTS INTO CONTROL MEMORY. 
* 
*     $BR [,XXXXX [,YYYYY [,ZZZZZ]]]
* 
*         XXXXX,YYYYY & ZZZZZ ARE CONTROL STORE ADDRESSES OF
*         DESIRED BREAKPOINT LOCATIONS. A MAXIMUM OF 3
*         BREAKPOINTS ARE ALLOWED.
* 
BREAK EQU * 
      CLA           ADD BREAKPOINTS FLAG
BRE10 EQU * 
      STA FLAG1     SAVE FLAG 
      LDA PNT34     INITIAILIZE POINTER TO
      STA SAVE6      START OF BREAKPOINTS TABLE 
      LDA RTMAC     MDE BREAKPOINT
      SZA,RSS        MICROCODE BEEN LOCATED?
      JMP BRE02     NO.GO REPORT ERROR
      LDB .3583     SET UPPER 
      JSB CKTYP      LIMIT OF 
      LDB UP.XE       COMPUTER FOR
      STB ADRS2        SUBROUTINE "GETLU" 
      CLE           GET 1ST 
      JSB GTNUM      ADDRESS
      SZA           DEFAULTED?
      JMP BRE05     NO
      SZB,RSS       YES.PARAMETERS END? 
      JMP BRE11     YES.GO POSSIBLY CLEAR AND DISPLAY 
      JMP BRE04     NO.GO TO NEXT BREAKPOINT
BRE05 EQU * 
      SZB,RSS       MORE PARAMETERS?
      JMP BRE01     NO.GO ON TO DO A SINGLE BREAKPOINT
      STA ADDRS     SAVE ADDRESS
      JSB CKADR     CHECK ADDRESS 
      JSB GETLU     GET WCS LU # CONTAINING THE ADDRESS 
      JMP E11       COULDN'T FIND ANY 
      JSB READ1     READ MICROINSTRUCTION THERE 
      JMP MDE03     ERROR OCCURRED.TAKE NEXT COMMAND
      LDA FLAG1     ADD A 
      SZA            BREAKPOINT?
      JMP *+3       NO.CLEAR ONE
      JSB ADBRK     YES.ADD BREAKPOINT TO TABLE 
      RSS           SKIP OVER CLEAR 
      JSB CLBRK     CLEAR BREAKPOINT FROM TABLE 
BRE04 EQU * 
      JSB GTNUM     GET NEXT ADDRESS
      SZA           DEFAULTED?
      JMP BRE06     NO
      SZB,RSS       YES.PARAMETERS END? 
      JMP BRE03     YES.GO DISPLAY BREAKPOINTS
      JMP BRE07     NO.GO TO NEXT BREAKPOINT
      SKP 
BRE06 EQU * 
      SZB,RSS       MORE PARAMETERS?
      JMP BRE01     NO.GO ON
      STA ADDRS     SAVE ADDRESS
      JSB CKADR     CHECK ADDRESS 
      JSB GETLU     GET WCS LU # CONTAINING THE ADDRESS 
      JMP E11       COULDN'T FIND ANY.ERROR 
      JSB READ1     READ MICROINSTRUCTION THERE 
      JMP MDE03     ERROR OCCURRED.TAKE NEXT COMMAND
      LDA FLAG1     ADD A 
      SZA            BREAKPOINT?
      JMP *+3       NO.GO CLEAR A BREAKPOINT
      JSB ADBRK     YES.ADD BREAKPOINT TO TABLE 
      RSS           SKIP OVER CLEAR 
      JSB CLBRK     CLEAR BREAKPOINT
BRE07 EQU * 
      JSB GTNUM     GET LAST ADDRESS
      SZB           MORE PARAMETERS?
      JMP MDE10     YES.ILLEGAL 
      SZA,RSS       DEFAULTED?
      JMP BRE03     YES.GO DISPLAY BREAKPOINTS
BRE01 EQU * 
      STA ADDRS     SAVE ADDRESS
      JSB CKADR     CHECK ADDRESS 
      JSB GETLU     GET WCS LU # CONTAINING THE ADDRESS 
      JMP E11       COULDN'T FIND ANY.ERROR 
      JSB READ1     READ MICROINSTRUCTION THERE 
      JMP MDE03     ERROR OCCURRED.TAKE NEXT COMMAND
      LDA FLAG1     ADD A 
      SZA            BREAKPOINT?
      JMP *+3       NO.CLEAR A BREAKPOINT 
      JSB ADBRK     YES.ADD BREAKPOINT TO TABLE 
      RSS           SKIP CLEAR BREAKPOINTS
      JSB CLBRK     CLEAR BREAKPOINT
BRE03 EQU * 
      LDA ONE       INITIALIZE BREAKPOINT 
      STA SAVE6      # AND ADDRESS
      LDA PNT40       IN OUTPUT LINE
      STA SAVE5        BUFFER 
      LDA PNT34     INITIALIZE BREAKPOINT 
      STA SAVE4      TABLE POINTER
BRE09 EQU * 
      LDA .30       INITIALIZE SUBROUTINE 
      LDB PNT04      "XPUT" FOR 6 CHARACTERS
      JSB XPUTI       TO BUFFER "XBUFF" 
BRE08 EQU * 
      LDA BLANK     FILL OUTPUT 
      JSB XPUT       LINE BUFFER
      RSS             WITH BLANKS 
      JMP BRE08 
      SKP 
      LDA PNT35     MOVE BREAK
      ADA .2         MESSAGE TO 
      LDB PNT04       OUTPUT LINE 
      MVW .3           BUFFER 
      LDA .6        INITIALIZE SUBROUTINE 
      LDB PNT03      "XPUT" FOR 6 CHARACTERS
      JSB XPUTI       TO BUFFER "XBUFF" 
      LDB SAVE4     GET BREAKPOINT
      LDA B,I        ADDRESS
      ADB .3        POINT TO
      STB SAVE4      NEXT ENTRY 
      JSB XOCAS     CONVERT BREAKPOINT ADDRESS TO ASCII 
      JSB MBTS      MOVE TO OUTPUT
      DEF OBUFF+5    LINE BUFFER
      LDB SAVE5     FORM CURRENT
      LDA SAVE6      BREAKPOINT # 
      STA B,I         IN OUTPUT 
      INA              LINE BUFFER
      STA SAVE6     BUMP # TO NEXT BREAKPOINT # 
      JSB M.OUT     WRITE BREAKPOINT
      DEF OBUFF      MESSAGE
      DEF .9          ON CONSOLE
      LDA SAVE6     GET BREAKPOINT
      AND B7         NUMBER 
      CPA .4        DONE? 
      JMP MDE03     YES.TAKE NEXT COMMAND 
      JMP BRE09     NO.CONTINUE 
BRE11 EQU * 
      LDA FLAG1     NEED TO CLEAR 
      SZA,RSS        ALL BREAKPOINTS? 
      JMP BRE03     NO.GO DISPLAY CURRENT BREAKPOINTS 
      LDB PNT34     YES.INITIALIZE A POINTER
      STB SAVE6      TO THE BREAKPOINT TABLE
      LDA B,I       START CLEAR WITH
      STA ADDRS      FIRST ENTRY
      SZA,RSS       IS THERE AN ENTRY?
      JMP BRE12     NO.SKIP TO NEXT ONE 
      JSB GETLU     GET WCS LU
      NOP            # CONTAINING ADDRESS 
      STA CONWD     SAVE IT 
      JSB CLBRK     CLEAR 1ST BREAKPOINT
BRE12 EQU * 
      LDB SAVE6     BUMP POINTER
      ADB .3         TO NEXT
      STB SAVE6       BREAKPOINT ENTRY
      LDA B,I       NOW TRY 
      STA ADDRS      SECOND ENTRY 
      SZA,RSS       IS THERE AN ENTRY?
      JMP BRE13     NO.SKIP TO LAST ONE 
      JSB GETLU     YES.GET WCS LU
      NOP            # CONTAINING ADDRESS 
      STA CONWD     SAVE IT 
      JSB CLBRK     CLEAR 2ND BREAKPOINT
      SKP 
BRE13 EQU * 
      LDB SAVE6     POINT TO
      ADB .3         LAST ENTRY 
      LDA B,I       NOW TRY 
      STA ADDRS      LAST ENTRY 
      SZA,RSS       IS THERE AN ENTRY?
      JMP BRE03     NO.GO DISPLAY BREAKPOINTS 
      JSB GETLU     YES.GET WCS LU
      NOP            # CONTAINING ADDRESS 
      STA CONWD     SAVE IT 
      JSB CLBRK     CLEAR LAST BREAKPOINT 
      JMP BRE03     GO DISPLAY BREAKPOINTS
BRE02 EQU * 
      JSB ERROR     MDE 
      DEF .22        ERROR 022
      JMP MDE03     TAKE NEXT COMMAND 
      SKP 
*     C L E A R 
* 
*     CLEARS DESIRED OR ALL BREAKPOINTS CURRENTLY SET IN THE
*     USER MICROPROGRAM.
* 
*     $CL [,XXXXX [,YYYYY [,ZZZZZ]]]
* 
*         XXXXX,YYYYY & ZZZZZ ARE CONTROL STORE ADDRESSES OF
*         DESIRED BREAKPOINT LOCATIONS TO BE CLEARED. A 
*         MAXIMUM OF 3 BREAKPOINTS ARE ALLOWED. 
* 
CLEAR EQU * 
      CCA           CLEAR BREAKPOINTS FLAG
      JMP BRE10     GO USE "BREAK" CODE FOR CLEAR 
      SKP 
*     D E L E T 
* 
*     DELETES A RANGE OF MICROINSTRUCTIONS. 
* 
*     $DE,XXXXX [,YYYYY]
* 
*         XXXXX IS THE LOWER CONTROL STORE ADDRESS OF THE RANGE OF
*         MICROINSTRUCTIONS TO BE DELETED.
* 
*         YYYYY IS THE UPPER CONTROL STORE ADDRESS OF THE RANGE OF
*         MICROINSTRUCTIONS TO BE DELETED.
* 
DELET EQU * 
      JSB RANGE     PICK UP RANGE OF MICROINSTRUCTIONS
      SZA,RSS       MORE PARAMETERS LEFT? 
      JMP MDE10     YES.ILLEGAL 
      CCA           SET NO
      STA FLAG3      LU'S FLAG
DEL01 EQU * 
      JSB GETLU     GET LU # OF WCS WITH CURRENT ADDRESS
      JMP DEL02     NO LU'S HAVE CURRENT WCS ADDRESS
      STA FLAG3     CLEAR NO LU'S FLAG
      JSB NOP       DELETE CURRENT MICROINSTRUCTION 
      JMP MDE03     ERROR OCCURRED.TERMINATE DELETE 
      JSB IFBRK     GET BREAK FLAG
      DEF *+1        FROM ID SEGMENT
      SSA           SET?
      JMP DEL04     YES.GO BREAK
      LDA ADDRS     NO.JUST DELETE
      CPA ADRS2      LAST ADDRESS?
      JMP MDE03     YES 
      ISZ ADDRS     NO.BUMP WCS ADDRESS 
      JMP DEL01     CONTINUE
DEL02 EQU * 
      LDA ADRS2     CURRENT WCS 
      CMA,INA        ADDRESS < OR = 
      ADA ADDRS       THE UPPER 
      SSA,RSS          WCS ADDRESS? 
      JMP DEL03     NO.GO CHECK END OF OPERATION
      LDA ADDRS     YES.BUMP
      AND MASK1      CURRENT WCS
      ADA .256        ADDRESS UP TO 
      STA ADDRS        NEXT MODULE
      JMP DEL01     CONTINUE LOOKING
DEL03 EQU * 
      ISZ FLAG3     FIND ANY LU'S?
      JMP MDE03     YES.DONE.TAKE NEXT COMMAND
      JMP E11       NO.MDE ERROR 011
DEL04 EQU * 
      JSB ERROR     MDE 
      DEF .0         ERROR 000
      JMP MDE03     TAKE NEXT COMMAND 
      SKP 
*     D U M P 
* 
*     DUMPS MICRO-OBJECT CODE FROM WCS TO A FILE OR LOGICAL UNIT. 
* 
*     $DU,NAMR1[,XXXXX[,YYYYY]] 
* 
*         NAMR1 IS THE FILE OR LOGICAL UNIT BEING DUMPED TO.
* 
*         XXXXX IS THE LOWER CONTROL STORE ADDRESS OF THE RANGE OF
*         MICROCODE TO BE DUMPED. 
* 
*         YYYYY IS THE UPPER CONTROL STORE ADDRESS OF THE RANGE OF
*         MICROCODE TO BE DUMPED. 
* 
DUMP  EQU * 
      CLA           INITIALIZE OUTPUT 
      STA FLAG2      FLAG TO 0
      CLE 
      JSB PICK      GET NAMR
      JMP MDE10     ILLEGAL PARAMETER 
      SZB,RSS       DEFAULT NAMR? 
      JMP MDE10     YES.ILLEGAL 
      CPB .1        IS IT A DEVICE? 
      JMP DUM01     YES 
      CLB           NO.CLEAR DEVICE FLAG
DUM02 EQU * 
      STB FLAG1     SAVE DEVICE FLAG
      SZA           DEFAULT REMAINING PARAMETERS? 
      JMP DUM03     NO.GET THEM 
      STA ADRS1     YES 
      LDB .3583     SET UPPER LIMIT 
      JSB CKTYP      TO THE COMPUTER'S
      LDB UP.XE       UPPER LIMIT 
DUM05 EQU * 
      STB ADRS2     SAVE IT 
DUM04 EQU * 
      LDA ADRS2     GET UPPER WCS ADDRESS 
      JSB CKADR     CHECK IT
      LDA ADRS1     GET LOWER WCS ADDRESS 
      JSB CKADR     CHECK IT
      LDA ADRS1     GET LOWER WCS ADDRESS 
      CMA,INA       IS IT GREATER 
      ADA ADRS2      THAN THE UPPER 
      SSA             WCS ADDRESS?
      JMP MDE10     YES.ILLEGAL 
      LDA ADRS1     INITIALIZE CURRENT WCS
      STA ADDRS      ADDRESS TO LOWER LIMIT 
      CCA           SET NO
      STA FLAG3      LU'S FLAG
      SKP 
DUM09 EQU * 
      JSB GETLU     GET LU # OF WCS WITH CURRENT ADDRESS
      JMP DUM06     NO LU'S HAVE CURRENT WCS ADDRESS
      STA FLAG3     CLEAR NO LU'S FLAG
      STA LU        SAVE LU # FOR READ WCS
      CPB B66       FULL RECORD LENGTH? 
      RSS           YES 
      ADB .2        NO.NEED TO BUMP 2 
      STB WLOG      SAVE (# OF MICROINSTRUCTIONS) X 2 
      JSB EXEC      READ
      DEF DUM08      CURRENT
      DEF .1          BLOCK OF
      DEF LU           MICROINSTRUCTIONS
PNT21 DEF IOBUF+5 
      DEF WLOG
      DEF ADDRS 
DUM08 EQU * 
      LDA WLOG      FORMAT DATA 
      LDB ADDRS      READ INTO
      JSB FXDAT       A RECORD
      LDA FLAG1     IS IT A DUMP
      SZA,RSS        TO A DEVICE? 
      JMP DUM13     NO.DUMPING TO A FILE
      LDA OUTLU     YES.GET 
      JSB GTEQT      EQUIPMENT TYPE 
      ADA M30       DVR # LESS
      SSA,RSS        THAN 30? 
      JMP DUM10     NO.ERROR
      LDA OUTLU     YES.GET OUTPUT LU 
      LDB FLAG2     FIRST OUTPUT
      SZB,RSS        TRANSFER?
      JSB LEADR     YES.GENERATE LEADER 
      CCA           SET OUTPUT
      STA FLAG2      FLAG 
      LDA OUTLU     WRITE RECORD
      JSB WRITE      ON OUTPUT LU 
DUM07 EQU * 
      LDB WLOG      GET (# OF MICROINSTRUCTIONS) X 2 IN B 
      LDA ADDRS     GET CURRENT WCS ADDRESS 
      BRS           BUMP CURRENT ADDRESS
      ADA B          BY AMOUNT OF LAST TRANSFER 
      STA ADDRS 
      CPA ADRS2     DONE? 
      JMP DUM11     YES 
      JMP DUM09     NO.CONTINUE 
DUM01 EQU * 
      LDB NUMB      SAVE
      STB OUTLU      LU # 
      JMP DUM02 
      SKP 
DUM03 EQU * 
      JSB GTNUM     GET LOWER WCS ADDRESS 
      STA ADRS1     SAVE IT 
      SZB,RSS       DEFAULT THE UPPER ADDRESS?
      JMP DUM16     YES 
      JSB GTNUM     GET UPPER WCS ADDRESS 
      CPB .1        MORE PARAMETERS LEFT? 
      JMP MDE10     YES.ILLEGAL 
      STA ADRS2     SAVE UPPER WCS ADDRESS
      JMP DUM04 
DUM10 EQU * 
      JSB ERROR     MDE 
      DEF .7         ERROR 007
      JMP MDE03     TAKE NEXT COMMAND 
DUM06 EQU * 
      LDA ADRS2     CURRENT WCS 
      CMA,INA        ADDRESS LESS THAN
      ADA ADDRS       OR EQUAL TO 
      SSA,RSS          THE UPPER WCS ADDRESS? 
      JMP DUM18     NO.GO CHECK FINISH OF OPERATION 
      LDA ADDRS     YES.BUMP CURRENT
      AND MASK1      WCS ADDRESS UP 
      ADA .256        TO NEXT MODULE
      STA ADDRS        ADDRESS 0
      JMP DUM09     CONTINUE
DUM18 EQU * 
      ISZ FLAG3     FIND ANY LU'S?
      JMP DUM11     YES.FINISH OPERATION
E11   EQU * 
      JSB ERROR     NO.MDE
      DEF .11        ERROR 011
      JMP MDE03     TAKE NEXT COMMAND 
DUM11 EQU * 
      LDA B2000     FORM
      STA IOBUF      LAST 
      LDA B120K       RECORD
      STA IOBUF+1      OF 
      STA IOBUF+2       OUTPUT
      CLA 
      STA IOBUF+3 
      LDA .4
      STA XFER
      LDA FLAG1     DUMP TO 
      SZA,RSS        A DEVICE?
      JMP DUM17     NO.GO WRITE EOR & CLOSE FILE
      LDA OUTLU     WRITE LAST
      JSB WRITE      RECORD 
      LDA OUTLU     GENERATE
      JSB TRAIL      TRAILER
      SKP 
      LDA OUTLU     FORM
      IOR B100       CONTROL WORD 
      STA CONWD       FOR EOF 
      JSB EXEC      WRITE AN
      DEF *+3        EOF IN CASE
      DEF .3          DEVICE IS A 
      DEF CONWD        MAG TAPE 
      JMP MDE03     TAKE NEXT COMMAND 
DUM13 EQU * 
      LDA FLAG2     FIRST OUTPUT
      SZA            TRANSFER?
      JMP DUM15     NO
      JSB CREAT     YES.CREATE
      DEF DUM14      A
      DEF IOBUF+60    FILE
      DEF SAVE0 
      DEF PRAM
      DEF .20 
      DEF .5
      DEF SECOD 
      DEF CRLBL 
DUM14 EQU * 
      LDA SAVE0     ERROR 
      SSA,RSS        OCCUR? 
      JMP DUM15     NO
      JSB FMPER     YES.REPORT FMP ERROR
      JMP MDE03     TAKE NEXT COMMAND 
DUM15 EQU * 
      CCA           SET OUTPUT
      STA FLAG2      FLAG 
      JSB WRIFL     WRITE CURRENT RECORD TO FILE
      JMP DUM07     CONTINUE
DUM17 EQU * 
      JSB WRIFL     WRITE END-OF-RECORD TO FILE 
      JSB CLOSE     CLOSE 
      DEF DUM19      FILE 
      DEF IOBUF+60
      DEF SAVE0 
DUM19 EQU * 
      LDA SAVE0     ERROR 
      SSA,RSS        OCCUR? 
      JMP MDE03     NO.DONE.TAKE NEXT COMMAND 
      JSB FMPER     YES.REPORT FMP ERROR
      JMP MDE03     TAKE NEXT COMMAND 
DUM16 EQU * 
      LDB ADRS1     DUMP THE
      JMP DUM05      SINGLE ADDRESS 
      SKP 
*     E X I T 
* 
*     RETURNS MDES TO THE CALLING PROGRAM.
* 
*     $EX 
* 
EXIT  EQU * 
      CLO           RESTORE 
      LDA O.REG      REGISTERS
      SZA            ON EXIT
      STO             OF MDES 
      LDA E.REG 
      ERA 
      LDA S.REG 
      OTA S 
      LDX X.REG 
      LDY Y.REG 
      LDB B.REG 
      LDA A.REG 
      JMP MDES,I    RETURN TO CALLING PROGRAM 
      SKP 
*     L O A D 
* 
*     LOADS WCS FROM A FILE OR LU.
* 
*     $LD,NAMR1 
* 
*         NAMR1 IS EITHER A FILE CREATED BY THE $CODE CONTROL 
*         STATEMENT IN A MICROASSEMBLY OR A DU COMMAND FROM MDE,
                                                                                                                                                                              