ASMB,R,L,C,Z    ASSEMBLE STATEMENT FOR RTE IV 
*ASMB,R,L,C,N   ASSEMBLE STATEMENT FOR RTE II 
      HED EXTND ROUTINE 
*     NAME:   EXTND 
*     SOURCE: 92067-18031 
*     RELOC:  92067-16028 
*     PGMR:   A.M.G.
*     RTE 4:  C.M.M.
* 
*  ***************************************************************
*  * (C) COPYRIGHT HEWLETT-PACKARD COMPANY 1977.  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.       *
*  ***************************************************************
* 
      NAM EXTND,17,10 92067-16028 REV.1805 771115 
* 
      SUP 
      EXT SP.CL 
* 
      EXT EXEC,RMPAR,$LIBR,$LIBX
      EXT $PVCN,$CIC,$YCIC
* 
FUNC  BSS 1 
EQTAD BSS 1 
ETYPE BSS 5 
* 
EXTND JSB RMPAR 
      DEF *+2 
      DEF FUNC
      LDA FUNC
      SZA           INITIALIZE CALL FROM GASP?
      JMP EXTN2     NO. 
* 
TERM  JSB EXEC      TERMINATE EXECUTION.
      DEF *+2 
      DEF D6
* 
EXTN2 SSA 
      JMP EXTN3     MUST CALL UP SPOUT. 
* 
*  GET A FILE EXTENSION 
* 
      LDA EQTAD     GET EQT ADDRESS AND 
      ADA D12       INDEX TO EQT EXTENSION. 
      LDA 0,I 
      ADA D4        GET CURRENT EXTENSION # (EQT20) 
      LDB 0,I       AND INCREMENT IT. 
      INB 
      STB TEMP6 
      ADA D7        PICK UP DIRECTORY ADDRESS 
      STA DIRCT     OF MASTER ENTRY.
      INA           (EQT27 AND EQT28) 
      STA DIRCT+1 
      CCA           IS NEW EXTENT NUMBER
      CPB D256      GREATER THAN 256? 
      JMP EXTN4     YES - TAKE ERROR PATH.
      JSB EXEC      CALL D.RTR TO GET 
      DEF *+8       AN EXTENSION. 
      DEF D23 
      DEF FMDR
      DEF 1717B 
      DEF TEMP6 
DIRCT BSS 2 
      DEF ETYPE 
      JSB RMPAR     GET PARAMETERS BACK 
      DEF *+2       FROM D.RTR. 
      DEF TEMP1 
      LDA TEMP1 
EXTN4 JSB $LIBR 
      NOP 
      LDB DIRCT 
      ADB M6
      SSA,RSS       ERRORS? 
      JMP OK        NO. 
      CCA           YES - PUT NEGATIVE # IN EQT21.
      STA 1,I 
      JMP EXTNO     GET OUT OF HERE.
OK    LDA TEMP5     PUT BEGINNING SECTOR
      AND B377      IN EQT21. 
      STA 1,I 
      ADB D4        ALSO IN EQT25.
      STA 1,I 
      ADB M1        PUT BEGINNING TRACK # 
      LDA TEMP4     IN EQT24. 
      STA 1,I 
      ADB M6        ALSO IN EQT18.
      STA 1,I 
      INB 
      INB 
      LDA TEMP6     SAVE NEW
      STA 1,I       EXTENSION # (EQT20).
* 
*  SET UP TO INTERRUPT DVS43. 
* 
EXTNO LDA RETPT     SAVE RETURN POINT.
      STA $CIC
      CLA 
      STA $PVCN     CLEAR PRIVILEGED COUNTER. 
      LDB EQTAD     INDEX THROUGH EQT TO THE
      ADB D3        SELECT CODE AND LOAD IT.
      LDA 1,I 
      AND B77       FAKE THE INTERRUPT TO THE 
      SJP $YCIC     DRIVER TO TELL IT WE ARE
RETPT DEF TERM      DONE. 
* 
EXTN3 JSB EXEC      HAVE A REQUEST FROM SMD 
      DEF *+8       TO CALL SPOUT BACK AND
      DEF D18       PASS IT THE SAVE CLASS
      DEF ZERO      PARAMETERS. 
      DEF ZERO
      DEF ZERO
      DEF EQTAD     CLASS PARAMETERS PASSED 
      DEF ETYPE     FROM SPOUT TO SMD EQT.
      DEF SP.CL     SPOUT CLASS ID. 
      JMP TERM      RETURN. 
* 
*  STORAGE
* 
XEQT  EQU 1720B 
D6    DEC 6 
TEMP1 EQU ETYPE 
TEMP2 EQU ETYPE+1 
TEMP3 EQU ETYPE+2 
TEMP4 EQU ETYPE+3 
TEMP5 EQU ETYPE+4 
TEMP6 EQU FUNC
ZERO  DEC 0 
B77   OCT 77
B377  OCT 377 
D3    DEC 3 
D4    DEC 4 
D7    DEC 7 
D12   DEC 12
D18   DEC 18
D23   DEC 23
D256  DEC 256 
M1    DEC -1
M4    DEC -4
M5    DEC -5
M6    DEC -6
FMDR  ASC 3,D.RTR 
* 
      END EXTND 
                                                                                                                        