ASMB,R,L,T,C,B **CMD: BUS COMMAND ROUTINE **   REV A
      HED ** CMD: BUS COMMAND ROUTINE **                     REV A
      NAM CMD,6 
      ENT CMD 
      EXT .ENTR,.IOC. 
      SKP 
* 
* 
* 
UREF# OCT 0 
WHO1  OCT 0 
WHAT1 OCT 0 
WHO2  OCT 0 
WHAT2 OCT 0 
WHO3  OCT 0 
DUMY  OCT 0 
* 
CMD   NOP 
      JSB .ENTR     GET ADDR'S OF PARAMETERS
      DEF UREF# 
* 
*     CONFIGURE REQUEST CODES WITH UINIT REF #
* 
      LDA RC1 
      IOR UREF#,I 
      STA RC1C
      STA RCCLC 
      LDA RC2 
      IOR UREF#,I 
      STA RCWRT 
      LDA RC3 
      IOR UREF#,I 
      STA RCSTA 
* 
*     INITIALIZE PARAMETERS 
* 
      LDA PARMA     GET ADDR OF FIRST PARAM IN LIST 
      RSS 
      LDA A,I 
      RAL,CLE,SLA,ERA 
      JMP *-2 
      STA PARMA 
      STA PARMP     PUT IT INTO POINTER 
      CLB 
      STB WWFLG     INITILIZE WHO/WHAT FLAG 
      STB DUMY      NOP LAST PARAM ADDR TO INSURE 
*                                   EXIT
      SKP 
* 
***  MAIN LOOP  *** 
* 
LOOP  LDB PARMP,I   GET ADDR OF PARMETER
      SZB,RSS       TEST FOR MORE PARAMS
      JMP END       0:NO MORE PARAM'S 
      LDA B,I       GET CHAR COUNT
      AND =B377     MASK OFF MYSTERIOUS BIT 9 
      CMA,INA       MAKE IT NEGATIVE
      STA LENTH     PUT IT INTO THE CALLING SEQUENCE
      INB           SET BUFFER ADDR TO WD2 OF BUFFER
      STB BUFAD     PUT IT INTO THE CALLING SEQUENCE
* 
*     CHECK IF DIVER IS READY FOR NEXT OPERATION
* 
      JSB .IOC.     INITIATE A STATUS REQUEST 
RCSTA OCT 040000    RCODE = STAUTS REQUEST
      SSA           TEST FOR COMPLETION 
      JMP *-3       NO:REPEAT STATUS CHECK
* 
*     SET-UP AND EXECUTE CONTROL REQUEST
*     IF ODD # PARAM,SET INTO CONTRILLER MODE 
*     IF EVEN # PARAM,CLEAR CONTROLLER MODE 
* 
      LDB WWFLG     GET WHO/WHAT MODE FLAG
      LDA RC1C      GET CTL RCODE TO CLR CTRL MODE
      SLB,RSS       TEST MODE 
      IOR =B000200  WHO: SET CONTOLLER MODE 
      STA RCCTL     PUT INTO THE CALLING
      JSB .IOC.     INITATE A CONTROL REQUEST 
RCCTL OCT 030000    CONTROL REQUEST 
      JMP *-2 
* 
*     OUTPUT THE WHO OR WHAT FIELD
* 
      JSB .IOC.     INITIATE A WRITE REQUEST
RCWRT OCT 020100    RCODE=WRITE BINARY
      JMP *-2       REPEAT REQUEST IF REJECTED
BUFAD DEF BUFAD     POINTER TO BUFFER 
LENTH OCT  0        # OF CHAR.
* 
*     SET UP OR NEXT PARAMETER
* 
      LDB WWFLG     GET WHO/WHAT
      INB           TOGGLE IT 
      STB WWFLG     REPLACE IT
      ISZ PARMP     INCREMENT PARAMETER POINTER 
      JMP LOOP
      SKP 
* 
*     ZERO OUT PARAM ADDR S FOR NEXT EXECUTION
* 
END   LDA PARMA 
      STA PARMP 
      LDB =D-5
      CLA 
      STA PARMP,I 
      ISZ PARMP 
      INB,SZB 
      JMP *-3 
      LDA WWFLG     GET WHO/WHAT FLAG 
      SLA,RSS       TEST IF WHO OR WHAT WAS LAST
      JMP CMD,I     WHAT: EXIT
*                                   WHO: CLEAR CONTROLLER MODE
* 
*     CLEAR CONTROLLER MODE BEFORE EXIT 
* 
      JSB .IOC. 
RCCLC OCT 034400
      JMP *-2 
      JMP CMD,I 
      SKP 
* 
* STORAGE 
* 
RC1C  BSS 1 
PARMP BSS 1 
WWFLG BSS 1 
A     EQU 0 
B     EQU 1 
* 
* CONSTANTS 
* 
RC1   OCT 034400
RC2   OCT 020100
RC3   OCT 040000
PARMA DEF WHO1
      END 
                        