ASMB,R,Q,C
      HED #OCV0   91750-1X201 REV.2013 * (C) HEWLETT-PACKARD CO. 1980 
      NAM #OCV0,7 91750-1X201 REV.2013 800207 ALL 
      SPC 1 
******************************************************************
*  * (C) COPYRIGHT HEWLETT-PACKARD COMPANY 1980.  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.       *
******************************************************************
      SPC 2 
      ENT #OCV0 
* 
      EXT #NODE,.MVW
*                                         ************************
* NAME:   #OCV0                           *                      *
* SOURCE: 91750-18201                     *  THIS MODULE KNOWS   *
* RELOC:  PART OF 91750-12002             *  ONLY ABOUT LEVEL 0  *
* PGMR:   JIM HARTSELL                    *  MESSAGE FORMATS     *
*                                         *                      *
*                                         ************************
* 
* 
* SUBROUTINE TO PERFORM REQUEST-SPECIFIC CONVERSION FOR "OTCNV".
* 
*  <<<<<   CALLED AFTER CONVERSION FROM LEVEL 1 TO LEVEL 0   >>>>>
* 
*  <<<<<       A-REGISTER = ADDRESS OF LEVEL 0 REQUEST       >>>>>
*  <<<<<       B-REGISTER = LENGTH  OF LEVEL 0 REQUEST       >>>>>
* 
      SPC 5 
      SUP 
B     EQU 1 
* 
#OCV0 NOP           ENTRY.
      STA RQADR     SAVE ADDRESS OF REQUEST.
      STB RQLEN     SAVE LENGTH OF REQUEST. 
* 
      LDA RQADR,I   GET STREAM WORD.
      RAL           IF THIS IS
      SSA             A REPLY, NO 
      JMP EXIT          CONVERSION IS REQUIRED. 
* 
      RAR 
      AND B77 
      CPA B3        CHECK STREAM TYPE.
      RSS 
      CPA B5
      RSS 
      JMP EXIT      NOT DEXEC: NO CONVERSION. 
* 
      LDB RQADR     DEXEC: GET REQUEST CODE.
      ADB B4
      STB TEMP      MAINTAIN POINTER TO REAL ONE. 
      LDA B,I 
      AND B377
      STA ICODE     SAVE MASKED ONE FOR COMPARE.
* 
      LDA TEMP,I    IF REQUEST CODE 
      AND NOT11 
      LDB ICODE       IS 9 OR 23, 
      CPB D9
      RSS               REMOVE "CLONE OK" BIT (11)
      CPB D23 
      STA TEMP,I          FOR LEVEL 0 NODE. 
* 
      CPB D11       CHECK IF REQ CODE = 1,2,3,11,13.
      JMP ADJ0
      CPB D13 
      JMP ADJ0
      ADB N4
      SSB,RSS 
      JMP EXIT      NONE OF THE ABOVE. EXIT NOW.
* 
ADJ0  LDA TEMP,I    GET REAL REQUEST CODE.
      ALF           DLUEX CALL TO LEVEL 0 NODE? 
      SLA,RSS         (BIT 12 SET?) 
      JMP ADJ1      NO. 
* 
      LDA RQADR,I   YES. ERROR. 
      IOR BIT14     SET REPLY BIT.
      STA RQADR,I 
      DLD "IO01     SET ERROR TO "IO01".
      DST TEMP,I    (TEMP POINTS TO REPLY ERROR WORDS.) 
      LDA #NODE     SET ERROR NODE NUMBER 
      IOR BIT15       AND "ASCII ERROR" BIT.
      LDB TEMP
      ADB B2
      STA B,I 
      JMP ERTN      TAKE ERROR EXIT.
* 
ADJ1  CCA           PRIME FOR ICODE 1,2,3.
      LDB ICODE     IF ICODE IS 11 OR 13, 
      CPB D11         ADD 3 TO LENGTH 
      JMP *+2         FOR PLACEHOLDERS. 
      CPB D13       IF ICODE IS 1,2, OR 3,
      LDA B3          DECREMENT LENGTH BY 1 TO
      ADA RQLEN       COMPENSATE FOR 1-WORD CONWD.
      STA RQLEN 
      CPB D11       IF TIME REQ, WE'RE DONE.
      JMP EXIT
* 
      LDB TEMP      FOR ICODE 1,2,3,13 MOVE 
      ADB B2          EVERYTHING BELOW #CNW 
      LDA B           UP 1 WORD.
      INA 
      JSB .MVW
      DEF B3
      NOP 
* 
EXIT  ISZ #OCV0     SET FOR NORMAL RETURN.
ERTN  LDB RQLEN     RETURN WITH LENGTH OF REQUEST.
      JMP #OCV0,I 
* 
* 
B2    OCT 2 
B3    OCT 3 
B4    OCT 4 
B5    OCT 5 
B77   OCT 77
B377  OCT 377 
BIT14 OCT 040000
BIT15 OCT 100000
NOT11 OCT 173777
D9    DEC 9 
D11   DEC 11
D13   DEC 13
D23   DEC 23
N4    DEC -4
"IO01 ASC 2,IO01
TEMP  NOP 
ICODE NOP 
RQLEN NOP 
RQADR NOP 
* 
      BSS 0         SIZE OF MODULE. 
* 
      END 
                                                  