ASMB
      NAM RMOVE,7 92069-16015 REV.2026 800124 
* 
* 
******************************************************************
* (C) COPYRIGHT HEWLETT-PACKARD COMPANY 1979. 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. 
******************************************************************* 
* 
* 
*     SOURCE:    92069-18055
*     RELOC:     92069-16015
* 
* 
*****************************************************************:
* 
***************************************************************** 
*  THESE ROUTINES MOVE INFORMATION TO AND FROM THE ROOT TABLE 
*  WHICH IS LOCATED IN THE SPACE AFTER THE LONGEST PROGRAM SEGMENT
***************************************************************** 
* 
* 
*   SROOT 
* 
*   CALLING SEQUENCE: 
* 
*   CALL SROOT(I,VALUE) 
* 
*   WHERE:  I = BYTE OFFSET IN THE TABLE
*             NOTE: OFFSETS START WITH ZERO 
*           VALUE = WORD TO BE STORED IN THE TABLE
* 
* 
* 
      ENT SROOT,RSGET,RSPUT,ROOTA 
      EXT SGET,SPUT,.ENTR,ERXIT,EXEC,ERRM 
*$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ JANUARY 23,1980 
* 
* 
*                      CONSTANTS IN COMMON
* 
* 
* 
      COM CARD(36),CHAR,CODE,CPACK(100),CRDPR 
      COM DSEC,DCRN 
      COM ENTL,ERROR
      COM NMFLG 
      COM FWAM
      COM GGERR 
      COM ICNT,IDCB(144),INDX 
      COM INFPT,INFO(6),IGLOB(10),INPUT,ITMTB 
      COM KPACK(50) 
      COM LDCB(144),LGLOB,LIST,LWAM 
      COM MEDIA 
      COM NPACK(50),NSETS(50) 
      COM OVRHD 
      COM PTHTB(32) 
      COM RDEF(64),RESNO,RFILE(3),RINDX 
      COM SCNT,SETTB,SINDX,SORTI(255),SORTS(50),STYPE 
      COM TYPE,PRGFG
* 
*$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ JANUARY 23,1980 
* CHANGED TO INCREASE SIZE OF PTHTB 
* 
OFFST NOP 
VALUE NOP 
SROOT NOP 
      JSB .ENTR 
      DEF OFFST 
* 
      LDA OFFST,I   COMPUTE 
      ARS                 WORD
      ADA FWAM        ADDRESS 
      STA 1             OF ROOT TABLE 
      CMB,INB       IS THERE ROOM?
      ADB LWAM
      SSB 
      JMP ERR       NO! 
      LDB VALUE,I   GET DATA
      STB 0,I         AND STORE IT
      JMP SROOT,I       AND RETURN
* 
ERR   JSB ERXIT     ERROR 
      DEF *+2 
      DEF NOMEM 
* 
****************************************************************
* 
*     GET 
*     GET RETRIEVES A CHARACTER FROM ROOT TABLE 
* 
*     CALLING SEQUENCE: 
* 
*     CALL RSGET(INDEX,CHRX)
* 
*     WHERE:  IINDX = CHARACTER INDEX IN ROOT TABLE 
*                     NOTE: INDEXING STARTS AT ZERO 
*             CHRX = THE CHARACTER
* 
****************************************************************
* 
INDEX NOP 
CHRX  NOP 
RSGET NOP 
      JSB .ENTR 
      DEF INDEX 
      LDA INDEX,I 
      INA 
      STA II
* 
      JSB SGET
      DEF *+4 
      DEF FWAM,I
      DEF II
      DEF CHRX,I
* 
      LDA CHRX,I       MASK OFF ANYTHING IN THE LEFT BYTE 
      AND LOW 
      STA CHRX,I
* 
      JMP RSGET,I 
* 
* 
LOW   OCT 377 
II    DEF *-* 
****************************************************************
* 
*     PUT 
*     PUT STORES A CHARACTER INTO THE ROOT TABLE
* 
*     CALLING SEQUENCE: 
* 
*     CALL RSPUT(IINDX,CHR) 
* 
*     WHERE  IINDX = CHARACTER INDEX IN THE ROOT TABLE
*                   NOTE: INDEXING STARTS AT ZERO 
*            CHR  = IS THE CHARACTER
* 
****************************************************************
* 
IINDX  NOP
CHR   NOP 
RSPUT   NOP 
      JSB .ENTR 
      DEF IINDX 
      LDA IINDX,I   GET BYTE OFFSET FOR SPUT
      INA 
      STA I2        GET WORD ADDRESS
      CCB 
      ADA 1 
      ARS 
      ADA FWAM      IS THERE ROOM 
      CMA,INA 
      ADA LWAM
      SSA 
      JMP E7010 
* 
      JSB SPUT      PUT THE BYTE IN MEMORY
      DEF *+4 
      DEF FWAM,I
      DEF I2
      DEF CHR,I 
      JMP RSPUT,I 
* 
E7010 JSB ERXIT 
      DEF *+2 
      DEF NOMEM 
* 
I2    DEF *-* 
* 
****************************************************************
* 
*     ROOTA 
*     ROOTA IS A FUNCTION THAT RETURNS A SPECIFIED WORD OF THE
*     ROOT TABLE. 
* 
*     CALLING SEQUENCE: 
* 
*     A=ROOTA(X)
* 
*     WHERE:   X = THE BYTE OFFSET IN THE ROOT TABLE
*                  NOTE: OFFSETTING STARTS AT ZERO
* 
****************************************************************
* 
X     NOP 
ROOTA NOP 
      JSB .ENTR 
      DEF X 
* 
      LDA X,I 
      ARS 
      ADA FWAM
      LDA 0,I 
      JMP ROOTA,I   VALUE IS IN A REGISTER
* 
.6    DEF 6 
NOMEM DEF 30
      END 
                                                                                                                                                    