ASMB,R,B,L,C
*********************************************************** 
* 
*            BCS 210X MICROASSEMBLER
* 
**********************************************************
      NAM MICRO 
      EXT .IOC.,LEADR,.MEM. 
      ENT MICRO 
      JMP MICRO 
      SUP 
* 
      HED  PASS 1 
* 
*   PASS 1 STARTS HERE. 
* 
* 
*   PRINT REQUEST FOR INPUT L.U. #. 
* 
MICRO NOP 
      LDA PNT01,I   GET 
      ADA .3         LWAM 
      LDA 0,I         FROM SYSTEM 
      STA LWAM      SAVE IT 
      LDA .+1       SPACE A FEW LINES ON KEYBOARD.
      LDB .+2 
      JSB SPACE 
      LDA .+2 
      JSB IOSUB     OUTPUT PROGRAM TITLE. 
      DEF TTYO
      DEF MSG1
      DEF .M22
      LDA .+1 
      LDB .+1       SPACE A LINE ON KEYBOARD. 
      JSB SPACE 
D1    LDA B1        SET 1 (KEYBOARD) AS INITIAL 
      STA RDR       "CARD" INPUT L.U. NO. 
      LDA .+2 
      JSB IOSUB 
      DEF TTYO
      DEF MSG2
      DEF .M32
* 
*   INITIALIZE. 
* 
      LDA SYMD
      STA SYMB
      STA HDTAB 
      ADA .+4 
      STA VALU
      INA 
      STA TAG 
      LDA B4        SET 4 AS PUNCH L.U. # 
      STA PCH       DEFAULT VALUE.
      LDA B6        SET 6 AS LIST L.U. # DEFAULT
      STA LIST      VALUE.
      CLA           SET FLAG TO "DON'T SAVE SOURCE
      STA MAG       ON MAG TAPE". 
      STA ILUN
      STA SPRES 
      STA PCNTR 
      STA DBUG
      STA ORFLG 
      STA NMERR 
      STA SYFLG 
      STA BEWFL 
      STA RCFLG 
      CMA 
      STA BASE
      LDA NO        PUT THE 'NO' IN 
      STA DJ+3      'NO ERRORS' MESSAGE.
      LDA RDRAD 
      STA RDCR9 
      LDA .+1 
      STA PASSN 
      LDA OLY2      SET 'JMP INPUT' INSTRUCTION.
      STA OLAY2 
      STA OLAY8 
      LDA OLY3      SET 'JMP .BAD.' INSTRUCTIONS. 
      STA OLAY3 
      STA OLAY4 
      STA OLAY5 
      STA OLAY6 
      STA OLAY7 
      LDA .-2 
      STA LASTP 
      LDA .+5 
      STA PNBUF 
      LDA .1024     CLEAN 
      LDB SYMD      SYMBOL
      JSB CLEAN     TABLE.
      DEF . 
*   NOW SET STARTING BYTE ADDRESSES OF INPUT FIELDS.
      LDB ACARD 
      RBL 
      STB F1ADR 
      ADB .+9 
      STB F2ADR 
      ADB .+5 
      STB F3ADR 
      ADB .+5 
      STB F4ADR 
      ADB .+5 
      STB F5ADR 
      ADB .+5 
      STB F6ADR 
*   END OF ADDRESS SETTING
* 
*   INPUT AND EXAMINE A RECORD. 
* 
INPUT JSB RDCRD     READ CARD 
      LDB CRLEN     WAS CARD A BLANK? 
      SZB,RSS 
      JMP INPUT     YES. IGNORE.  READ NEXT CARD. 
      LDB ACARD     NO.  EXAMINE
      RBL           1ST 
      STB BYTAD     BYTE
      JSB LOADB 
      CPA ASTER     =*? 
      JMP INPUT     YES, IGNORE.
      CPA BUCK      =$? 
      JMP CNTRL     CONTROL STATE.
      LDB ORFLG     HAS ORIGIN BEEN ESTABLISHED?
      SZB,RSS 
      JMP INP3      NO, SO ERROR. 
      CPA SPAC      YES.  LABEL PRESENT?
      JMP INP1      NO. 
      LDB F2ADR     YES.  THIS AN EQU STATEMENT?
      JSB EQU 
      SZA,RSS 
      JMP INPUT     YES.  DONE, GO READ NEXT STATMT.
      CLE           NO.  ADD LABEL TO 
      LDA PCNTR 
      LDB BYTAD 
      JSB SYMAD     SYMBOL TABLE
INP1  JSB SKP       'SKP' PSEUDO OP?
      SZA 
      JMP INPUT     YES. GET NEXT RECORD. 
      ISZ PCNTR     NO.  INCREMENT PROGRAM COUNTER. 
      CLB,INB 
      LDA PCNTR 
      AND =B377     DOES THAT MAKE REL ADDR 
      CPA =B377     = 377 OCT?
      STB BEWFL     YES.  SO SET BEWARE FLAG. 
      LDA PCNTR     NO.  DOES IT MAKE NEXT
      AND =B777     REL ADDR = 401 OCT? 
      CPA =B401 
      RSS 
      JMP INPUT     NO, SO OK.
      LDA BEWFL     IS 'BEWARE, WE PASSED THRU
      CPA =B1       REL ADDR 377' FLAG SET? 
      RSS           YES 
      JMP INPUT     NO, SO OK.
      LDA .-9       PROGRAM IS OUT OF BOUNDS. 
INP2  JSB ERROR     YES.  PRINT ERROR MESSAGE.
      JMP ABORT     QUIT. 
INP3  LDA .-10
      JMP INP2
* 
* CONTROL CARD PROCESSOR
* 
CNTRL INB           CHECK NEXT
      JSB LOADB     BYTE. 
      CPA .O        =O? 
      JMP CTRL1     YES.  'ORIGIN' OR 'OUTPUT'. 
      CPA .S        =S? 
      JMP CTRL2     YES.  COULD BE SYMTAB OR SUPPR. 
      CPA .N        =N? 
      JMP CTRL3     YES COULD BE NOLIST OR NOPUNCH. 
      CPA .E        =E? 
      JMP CTRL4     YES EXTERNAL OR END 
      CPA .I        =I? 
      JMP CTRL7     YES.  INPUT L.U. #. 
      CPA .P        =P? 
      JMP CTRL8     YES.  PASS 2 MAG TAPE L.U. #. 
      CPA .L        =L? 
      JMP CTRL9     YES. LIST L.U. #. 
      CPA .R        =R? 
      JMP CTR10     YES. SUITCASE ROM OBJECT TAPE.
* 
*   BAD CONTROL STATEMENT 
* 
.BAD. LDA .-2       PRINT BAD 
      JSB ERROR     CONTROL STATEMENT MESSAGE.
      LDA .-2       LIST THE STATEMENT, ADJUSTING 
      ADA CRLEN     # OF CHARS TO INCLUDE LIST
      STA CRLEN     DEVICE CONTROL CHARS. 
      LDA .+2 
      JSB IOSUB 
      DEF LIST
      DEF CARD-1
      DEF CRLEN 
      JMP INPUT     READ NEXT CARD. 
* 
*   OUTPUT AND ORIGIN CONTROL STATEMENTS
* 
ORIG  NOP 
CTRL1 INB 
      JSB LOADB 
      CPA .R        ORIGIN CARD?
      JMP CTR15     YES.
      CPA .U        OUTPUT CARD?
      RSS           YES.
OLAY9 JMP .BAD.     NO, THEN ERROR. 
*   OUTPUT STATEMENT
      STB SAVB      FIRST, SEE IF USER TOLD US
      LDB PCH       "NO PUNCH" PREVIOUSLY.
      SZB,RSS 
      JMP .BAD.     YES, HE DID, SO ERROR.
      LDB SAVB      NO, HE DIDN'T.
      JSB LOGUN     GET L.U. #. 
      SOC           # OK? 
      JMP .BAD.     NO, ERROR.
      STA PCH 
OLAY8 JMP INPUT     GO READ NEXT CARD.
*   ORIGIN STATEMENT
CTR15 LDA .EQ.      SKIP TO 
      JSB SKPTO     EQUAL SIGN. 
      SOC           END OF LINE?
OLAY3 JMP .BAD.     YES, ERROR. 
      INB 
      LDA SPAC      SKIP OVER 
      JSB SKIP      BLANKS
      SOC           END OF LINE?
OLAY4 JMP .BAD.     YES, ERROR. 
      CLA           CONVER TO 
      JSB CNVRT     OCTAL 
      SOC           ANY ERRORS? 
OLAY5 JMP .BAD.     YES.
      LDB 0         NO
      AND LOMSK     SEPARATE
      STA T.001     LOWER 
      LDA 1         & 
      AND HIMSK     UPPER 
      STA T.002 
      LDB BASE      HAS BASE
      SSB,RSS       BEEN INITIALIZED? 
      JMP CTR18     YES.
      CMA,INA       NO.  IS SPECIFIED ADDRESS 
      ADA B7400     GREATER THAN MAX ALLOWED? 
      SSA 
OLAY6 JMP .BAD.     YES, ERROR. 
      LDA T.002     NO.  SET
      STA BASE      BASE. 
CTR18 LDB T.001     IS NEW ORIGIN VALUE LESS THAN 
      CMB           OLD 'PCNTR' VALUE?
      LDA PCNTR 
      AND =B377 
      ADA 1 
      SSA,RSS 
OLAY7 JMP .BAD.     YES, ERROR. 
      LDA T.001     SET 
      IOR T.002 
      STA PCNTR     PCNTR 
      CLA           CLEAR 'BEWARE WE PASSED THRU
      STA BEWFL     REL ADDR 377' FLAG. 
      LDA .+1       SET 'ORIGIN ESTABLISHED' FLAG.
      STA ORFLG 
OLAY2 JMP INPUT 
      JMP ORIG,I
* 
*   SUPPRESS AND SYMTAB CONTROL STATEMENTS
* 
CTRL2 INB 
      JSB LOADB 
      CPA .U        SECOND CHAR A "U"?
      JMP CTR25     YES.
      CPA .Y        NO. SECOND CHAR A "Y"?
      RSS           YES.
      JMP .BAD.     NO.  THEN ERROR.
*   SYMTAB STATEMENT
      CLA,INA       SET SYMBOL TABLE FLAG.
      STA SYFLG 
      JMP INPUT     GO READ NEXT RECORD.
*   SUPPRESS STATEMENT
CTR25 CCA 
      STA SPRES     SET SUPPRESS FLAG.
      JMP INPUT     GO READ NEXT RECORD.
* 
* NOLIST OR NOPUNCH 
* 
CTRL3 INB           CHECK 
      INB           3RD BYTE
      JSB LOADB 
      CLB 
      CPA .L        =L? 
      JMP *+6 
      CPA .P        =P? 
      RSS 
      JMP .BAD.     NO ERROR
      STB PCH       SUPPRESS PUNCHING 
      JMP INPUT 
      STB LIST      ITS  L THUS NOLIST. 
      JMP INPUT     EXIT. 
* 
*   SUITCASE ROM OBJECT TAPE OPTION 
* 
CTR10 CLA,INA 
      STA RCFLG 
      JMP INPUT 
* 
*  END  OR  EXTERNAL
* 
CTRL4 INB           CHECK NEXT
      JSB LOADB     BYTE. 
      CPA .X        =X? 
      RSS 
      JMP CTR42 
      LDA .EQ.      YES  EXTERNALS SKIP TO
      JSB SKPTO     = SIGN. 
      SOC           END OF CARD?
      JMP .BAD.     YES ERROR 
CTR41 INB           NO
      LDA SPAC      SKIP
      JSB SKIP      BLANKS. 
      SOC           END OF CARD?
      JMP .BAD.     YES ERROR.
      STB SAVM      NO, SAVE ADDR OF SYMBOL.
      LDA SPAC      SKIP TO 
      JSB SKPTO     END OF SYMBOL.
      SOC           END OF CARD?
      JMP .BAD.     YES ERROR 
      LDA SPAC      NO.  SKIP ACROSS
      JSB SKIP      BLANKS. 
      SOC           END OF CARD?
      JMP .BAD.     YES ERROR.
      STB SAVN      SAVE START ADDR OF VALUE. 
      CLA           CONVERT 
      JSB CNVRT     OCTAL VALUE.
      SOC           END OF CARD.OR ERROR. 
      JMP .BAD.     YES ERROR.
      LDB SAVM      GET SYMBOL ADDRESS. 
      CCE           SET E-REG TO INDICATE EXT 
      JSB SYMAD     ADD TO SYMBOL TABLE 
      LDB SAVN      GET START ADDR  OF VALUE. 
      LDA COMMA     SKIP
      JSB SKPTO     TO COMA 
      SOC           END OF CARD?
      JMP INPUT     EXIT
      JMP CTR41     GO BACK.
CTR42 CPA .N        "N" 
      RSS 
      JMP .BAD.     NO, BAD CONTROL STATE 
      LDA MAG       YES, '$END'. SOURCE ON MAG TAPE?
      SZA,RSS 
      JMP CTR47     NO. 
      LDA .+3       YES.  WRITE END-OF-FILE(EOF). 
      JSB IOSUB 
      DEF MAG 
      DEF *         DUMMY PARAMETERS, SINCE THESE 
      DEF *         NOT NEEDED TO WRITE EOF.
      NOP 
      LDA B400      REWIND TAPE TO START OF 
      STA MCODE     SOURCE FILE.
      LDA .+3 
      JSB IOSUB 
      DEF MAG 
      DEF *         DUMMY PARAMETERS, SINCE THESE 
      DEF *        NOT NEEDED TO REWIND TAPE. 
      NOP 
      LDA B100      NOW REFIX MAG TAPE SUBFUNCTION
      STA MCODE     CODE FOR NON-REWIND OPERATIONS. 
      NOP 
CTR47 LDA SYFLG     SYMBOL TABLE
      SZA,RSS       WANTED? 
      JMP PASS2     NO, SO GO TO PASS 2.
      LDA HDTAB     YES.  GET 
      STA PNTR      START OF TABLE
      CPA SYMB      END?
      JMP PASS2     YES.  GO TO PASS2.
      LDB LIST
      JSB TTYIO     WE LISTING ON TTY?
      SZA 
      JMP CTR49     NO. 
      LDA .+1       YES.  SO JUST SPACE A FEW LINES.
      LDB .+2 
      JSB SPACE 
      RSS 
CTR49 JSB EJECT     EJECT A PAGE
      LDA .+2       PRINT SYMBOL TABLE HEADING. 
      JSB IOSUB 
      DEF LIST
      DEF HED1
      DEF .-14
      LDA LIST
      LDB .+2 
      JSB SPACE 
PR1   LDA .+10      FILL THE PERTINENT PART OF
      LDB ACARD     ASCII OUTPUT BUFFER WITH
      JSB CLEAN     SPACES. 
      DEF BLNK2 
*   NOW WE STORE THE SYMBOL (LABEL) IN THE
*   INPUT BUFFER, WHICH WE ARE USING AS PART OF OUR 
*   ASCII OUTPUT BUFFER.
      LDA PNTR,I
      STA CARD
      ISZ PNTR
      LDA PNTR,I
      STA CARD+1
      ISZ PNTR
      LDA PNTR,I
      STA CARD+2
      ISZ PNTR
      LDA PNTR,I
      STA CARD+3
*   NOW PICK UP OCTAL LOCATION (I.E. VALUE) OF SYMBOL.
      ISZ PNTR
      LDA PNTR,I
      ISZ PNTR
      SSA           IS THIS AN EQU SYMBOL?
      JMP PR4       YES. THEN NO PRINT SYMB VAL.
*   CONVERT TO ASCII AND STORE IN 
*   NEXT LOCATION IN OUTPUT BUFFER. 
      LDB ACARD 
      RBL 
      ADB .+10
      STB SAVB      SAVE BYTE ADDRESS.
      JSB OCTL
      DEC 6 
      LDA PNTR,I
      SZA,RSS 
      JMP *+3 
      LDA .X
      RSS 
      LDA SPAC
      LDB SAVB      GET BYTE ADDR OF VALUE. 
      ADB .+6       INC PAST VALUE. 
      JSB STORB     STORE SPACE OR 'X' THERE. 
PR4   LDA BLNK2 
      STA CARD-1
      LDA .+2 
      JSB IOSUB 
      DEF LIST      ENTRY 
      DEF CARD-1
      DEF .M20
      ISZ PNTR      POINT 
      LDA PNTR      TO
      CPA SYMB      NEXT ENTRY. END?
      RSS 
      JMP PR1       NO, GO DO NEXT. 
      JSB EJECT     YES EJECT FOR PASS 2. 
      JMP PASS2     NOW GO TO PASS2.
* 
*   INPUT CARD
* 
CTRL7 STB SAVB      FIRST, SEE IF USER TOLD US
      LDB PCH       "NO PUNCH" PREVIOUSLY.
      SZB,RSS 
      JMP .BAD.     YES, HE DID, SO ERROR.
      LDB SAVB
      JSB LOGUN     GET L.U.#.
      SOC           # OK? 
       JMP .BAD.    NO, ERROR.
      STA RDR       YES, OK.
      JMP INPUT     GO READ NEXT CARD.
* 
*   PASS2 CARD
* 
CTRL8 JSB LOGUN     GET L.U. #. 
      SOC           # OK? 
      JMP .BAD.     NO, BAD.
      STA MAG 
      JMP INPUT     GO READ NEXT CARD.
* 
*   LIST CARD 
* 
CTRL9 STB SAVB      FIRST, SEE IF USER TOLD US
      LDB LIST      "NO LIST" PREVIOUSLY. 
      SZB,RSS 
      JMP .BAD.     YES, HE DID, SO ERROR.
      LDB SAVB
      JSB LOGUN     GET L.U. #. 
      SOC           # OK? 
      JMP .BAD.     NO, ERROR.
      STA LIST      YES, OK.
      JMP INPUT     GO READ NEXT CARD.
      HED  PASS 2 
* 
* 
*    PASS 2 STARTS HERE.
* 
* 
* 
*   INITIALIZATION FOR PASS 2.
* 
PASS2 LDA .+2 
      STA PASSN 
      LDA MAG       IS SOURCE ON MAG TAPE?
      SZA 
      JMP P20F      YES.  SKIP 'RELOAD SOURCE' MSG. 
      LDA .+1 
      LDB .+2 
      JSB SPACE 
      LDA .+2 
      JSB IOSUB 
      DEF .+2 
      DEF MSG5
      DEF .M28
      LDA .+1 
      LDB .+2 
      JSB SPACE 
      HLT 34B 
* 
*   INITIALIZE FLAGS, COUNTERS, ETC, FOR 2ND PASS.
*   GENERATE LEADER.
* 
P20F  CLA 
      STA PCNTR 
      STA OLAY2 
      CMA 
      STA BASE
      CLA,INA 
      STA LINE# 
      LDA OLAY2+1 
      STA OLAY3 
      STA OLAY4 
      STA OLAY5 
      STA OLAY6 
      STA OLAY7 
      STA OLAY8 
      STA OLAY9 
      JSB LEEDR 
* 
*   READ A SOURCE RECORD. 
* 
P21   CLA 
      STA EQUFL     CLEAR EQU FLAG. 
      JSB RDCRD     READ CARD.
      LDB CRLEN     WAS CARD A BLANK? 
      SZB,RSS 
      JMP P21       YES. IGNORE. READ NEXT CARD.
      LDB ACARD     NO.  CHECK
      RBL           1ST 
      JSB LOADB     BYTE. 
      CPA ASTER     =*? 
      JMP P21A      YES,IGNORE BUT PRINT
      CPA BUCK      =$? 
      RSS 
      JMP P21B      NO, GOOD CODE.
      INB           YES 
      JSB LOADB 
      CPA .O        =ORIGIN?
      RSS 
      JMP P21AB     NO,CHECK FOR END
      CLA           YES 
      STA OLAY2     PROCESS 
      JSB ORIG      ORIGIN CARD 
      JMP P21A
P21AB CPA .E        BYTE IS E?
      RSS 
      JMP P21A      NO, NOT END IGNORE IT 
      INB           YES 
      JSB LOADB     BYTE IS N?
      CPA .N
      JMP END 
P21A  LDA CRLEN     LIST THE RECORD IN FORMAT 1.
      JSB LSTR
      ISZ LINE# 
      JMP P21       GO BACK.
P21B  JSB SKP       'SKP' PSEUDO OP?
      SZA 
      JMP P21       YES.  ALREADY PROCESSED.
      LDA ORFLG     NO.  HAS ORIGIN BEEN
      SZA,RSS       ESTABLISHED?
      RSS           NO, THEN ERROR. 
      JMP P21C      YES, SO OK. 
P21B4 LDA .+10      PRINT ERROR MESSAGE.
      JSB ERROR 
      JMP ABORT     QUIT. 
* 
*   DETERMINE STATEMENT TYPE. 
* 
P21C  JSB ONEST     'ONES' STATEMENT? 
      SZA 
      JMP P21C2     YES. WAS PROCESSED. 
      JSB ZERST     NO.  'ZEROES' STATEMENT?
      SZA 
      JMP P21C2     YES.  WAS PROCESSED.
      LDB F2ADR     NO. GET FIELD 2 START BYTE ADDR.
      JSB DEF       DEF STATEMENT?
      SZA 
      JMP P21C3     NO. 
P21C2 JSB OUTPT     YES.  OUTPUT IT.
      JMP P21       GO READ NEXT RECORD.
P21C3 LDB F2ADR 
      JSB EQU       EQU STATEMENT?
      SZA 
      JMP P21C5     NO. 
      CLA,INA       YES.  PRINT IT. 
      STA EQUFL 
      JSB OUTPT 
      JMP P21       GO READ NEXT RECORD.
P21C5 LDB F2ADR     GET FIELD 2 STARTING BYTE ADR.
      LDA .+1       GO GET AN 
      JSB $SRCH     'OPCODE' BINARY OPCODE. 
      CPA .-1       BAD MNEMONIC? 
      RSS           YES.
      JMP P21D      NO. 
      LDA .+3       YES.  OUTPUT
      JSB ERROR     MESSAGE.
      JSB NOPER     CREATE NOP MICROINSTRUCTION.
      JMP TY1.6     GO PROCESS IT.
P21D  STA 1 
      AND HHMSK     SAVE BINARY 
      STA FLD2      OPCODE. 
      LDA 1         ISOLATE 
      AND HHHMS     WORD TYPE.
      ALF 
      CPA .+1       WORD TYPE 1?
      JMP TYPE1     YES.
      CPA .+2       WORD TYPE 2?
      JMP TYPE2     YES.
      LDB F3ADR     GET FIELD 3 STRTNG BYTE ADDR. 
      LDA .+2       GO GET A
      JSB $SRCH     'SPECIAL' BINARY OPCODE.
      CPA .-1       BAD MNEMONIC? 
      RSS           YES.
      JMP P21E      NO. 
      LDA .+4       YES.   OUTPUT ERROR MESSAGE.
      JSB ERROR 
      JSB NOPER     NOP WORD TYPE 1 FIELDS. 
      JMP TY1.6     GO OUTPUT WD TYPE 1 INSTR.
P21E  STA FLD3      SAVE 'SPECIAL' OPCODE.
      CPA CNDX      WAS FIELD 3 'CNDX'? 
      RSS           YES.
      JMP TYPE4     NO, SO WORD TYPE 4. 
      LDA FLD2      WAS FIELD 2 'JMP'?
      CPA JMP 
      JMP TYPE3     YES, SO WORD TYPE 3.
      JMP TYPE4     NO, SO (BAD) WORD TYPE 4. 
* 
      SKP 
* 
*   CREATE A WORD TYPE 1 INSTRUCTION. 
* 
*   FIRST, CHECK MNEMONICS AND COLLECT THE BINARY 
*   CODES FOR EACH FIELD. 
* 
TYPE1 LDA .+2       GO GET A 'SPECIAL' CODE 
      LDB .+3       FROM FIELD 3. 
      JSB CODE
      LDA FLD3
      CPA JTAB      WAS IT 'JTAB'?
      JMP TY1.0     YES.  'JMP-SPEC' BUT OK.
      CPA RTN       WAS IT 'RTN'? 
      JMP TY1.0     YES. 'JMP-SPECIAL' BUT OK.
      ADA .M24      NO.  OTHER 'JMP-SPECIAL'? 
      SSA,RSS 
      RSS           YES, SO ERROR.
      JMP TY1.0     NO. 
      LDA .+4       PRINT ERROR MESSAGE.
      JSB ERROR 
      LDA .+2       STORE A NOP IN THE
      ADA DEFLT     FIELD 3 
      LDA 0,I       WORD. 
      LDB .+3 
      ADB FWORD 
      STA 1,I 
TY1.0 LDA .+4       GO GET AN 'ALU' CODE
      LDB .+4       FROM FIELD 4. 
      JSB CODE
      LDA .+6       GO GET A 'STORE' CODE 
      LDB .+5       FROM FIELD 5. 
      JSB CODE
      LDA .+7       GO GET AN 'S-BUS' CODE
      LDB .+6       FROM FIELD 6. 
      JSB CODE
* 
*   NOW PUT TOGETHER THE FIELDS OF THE TYPE 1 WORD. 
* 
TY1.6 LDA FLD3      BITS 0-4 GET FIELD 3 (HERE, 
      STA INST1     A 'SPECIAL'). 
      LDA FLD5      BITS 5-9 GET FIELD 5 (HERE, 
      ALF           A 'STORE'). 
      ALS 
      IOR INST1 
      STA INST1 
      LDA FLD6      BITS 10-14 GET FIELD 6 (HERE, 
      ALF,ALF       AN 'S-BUS'.)
      ALS 
      ALS 
      IOR INST1 
      STA INST1 
      LDA FLD4      BITS 15-19 GET FIELD 4 (HERE, AN
      RAR           'ALU'). 
      AND MSK15 
      IOR INST1 
      STA INST1     BIT 15 DONE.
      LDA FLD4
      ARS 
      STA INST2     BITS 16-19 (0-3) DONE.
      LDA FLD2      BITS 20-23 (4-7) GET
      ALF           FIELD 2(HERE, 'OPCODE').
      IOR INST2 
      STA INST2 
                                                                                                                                                                                              