File: VOCAB.LS of Disk: V50/Source/Source-Listing-FORTRAN-2
(Source file text) 


RALF V50A   24-JUL-20    PAGE 1

                    SECT    VOCAB
                    EXTERN  SIXOUT
            /       SUBROUTINE VOCAB(ID1,ID2,INIT,V)
            /       OS/8: SUBROUTINE VOCAB(ID, INIT, V)
            /C
            /C LOOK UP ID1:ID2 IN THE VOCABULARY (ATAB AND A2TAB)
            /C Note: A2TAB not used on the '8
            /C AND RETURN ITS "DEFINITION" (KTAB), OR
            /C -1 IF NOT FOUND. IF INIT IS POSITIVE, THIS IS AN INIT CALL SETTING
            /C UP A KEYWORD VARIABLE, AND NOT FINDING IT CONSTITUTES A BUG. IT ALSO MEANS
            /C THAT ONLY KTAB VALUES WHICH TAKEN OVER 1000 EQUAL INIT MAY BE CONSIDERED.
            /C (THUS "STEPS", WHICH IS A MOTION VERB AS WELL AS AN OBJECT, MAY BE LOCATED
            /C AS AN OBJECT.) AND IT ALSO MEANS THE KTAB VALUE IS TAKEN MOD 1000.
            /C
            /       IMPLICIT INTEGER (A-Z)
            /       COMMON /VOCCOM/ KTAB,ATAB,A2TAB,TABSIZ
            /       DIMENSION KTAB(300),ATAB(300),A2TAB(300)
            
                    EXTERN  BUG
                    EXTERN  MOD
00000 1030          JA      #ST
00001 0111  
            #XR,    ORG     .+10
00012 2617          TEXT    +VOCAB+
00013 0301  
00014 0200  
00015 1100  #RET,   SETX    #XR
00016 0002  
00017 1110          SETB    #BASE
00020 0023  
00021 1030          JA      .+3
00022 0024  
            #BASE,  ORG     .+3
            ID,     ORG     .+3
            INIT,   ORG     .+3
00034 0001  ONE,    F 1.0
00035 2000  
00036 0000  
00037 0003  FOUR,   F 4.0
00040 2000  
00041 0000  
00042 0012  THOUS,  F 1000.0
00043 3720  
00044 0000  
00045 0002  TWO,    F 2.0
00046 2000  
00047 0000  
00050 0003  SIX,    F 6.0
00051 3000  
00052 0000  
                    ORG     #BASE+30
00053 0040          FNOP
00054 1030          JA      #RET
00055 0015  
00056 0040          FNOP
00057 0000  #GOBAK, 0;0
RALF V50A   24-JUL-20    PAGE 1-1

00060 0000  
            #VAL,   ORG     .+6
00067 0000  ZERO,   F 0.0
00070 0000  
00071 0000  
            I,      ORG     .+3
            KTABI,  ORG     .+3
00100 0005  K21,    F 21.0
00101 2500  
00102 0000  
00103 0003  K5,     F 5.0
00104 2400  
00105 0000  
                    #LBL=.
                    COMMON  VOCCOM
            KTAB,   ORG     .+1604
            ATAB,   ORG     .+1604
            TABSIZ, ORG     .+3
                    ORG     #LBL
            #RTN,   BASE    #BASE
00106 0212          FLDA    #VAL
00107 1030          JA      #GOBAK
00110 0057  
00111 0006  #ST,    STARTD
00112 0210          0210
00113 6400          FSTA    #GOBAK,0
00114 0057  
00115 0200          0200
00116 1100          SETX    #XR
00117 0002  
00120 1110          SETB    #BASE
00121 0023  
00122 0101          LDX     0,1
00123 0000  
00124 6200          FSTA    #BASE
00125 0710          FLDA%   #BASE,1+
00126 6201          FSTA    ID
00127 0710          FLDA%   #BASE,1+
00130 6202          FSTA    INIT
00131 0005          STARTF
00132 0602          FLDA%   INIT
00133 6202          FSTA    INIT
00134 0601          FLDA%   ID
00135 6201          FSTA    ID
            /        DO 1 I=1,TABSIZ
00136 0203          FLDA    ONE
00137 6215          FSTA    I
            
            /        IF(KTAB(I).EQ.-1)GOTO 2
00140 0215  #G0001, FLDA    I
00141 0027          ATX     7
00142 0477          FLDA    KTAB-3,7
00143 7775  
00144 6216          FSTA    KTABI
00145 1203          FADD    ONE
00146 1000          JEQ     #2
RALF V50A   24-JUL-20    PAGE 1-2

00147 0204  
            /        IF(INIT.GE.0.AND.KTAB(I)/1000.NE.INIT)GOTO 1
00150 0202          FLDA    INIT
00151 1050          JLT     #M1
00152 0162  
00153 0216          FLDA    KTABI
00154 3205          FDIV    THOUS
                    EXTERN  #FIX
00155 1120          JSA     #FIX
00156 0000  
00157 2202          FSUB    INIT
00160 1040          JNE     #1
00161 0167  
            /        IF(ATAB(I).EQ.ID1 .AND. A2TAB(I).EQ.ID2)GOTO 3
            /        OS/8: IF(ATAB(I).EQ.ID)GOTO 3
00162 0470  #M1,    FLDA    ATAB-0003,7
00163 1601  
00164 2201          FSUB    ID
00165 1000          JEQ     #3
00166 0244  
            /1       CONTINUE
            / do loop end
00167 0215  #1,     FLDA    I
00170 1203          FADD    ONE
00171 6215          FSTA    I
00172 2400          FSUB    TABSIZ
00173 3410  
00174 1020          JLE     #G0001
00175 0140  
            /        CALL BUG(21)
00176 1130          JSR     BUG
00177 0000  
00200 1030          JA      .+0004
00201 0204  
00202 1030          JA      K21
00203 0100  
            
            /2       V=-1
00204 0203  #2,     FLDA    ONE
00205 0003          FNEG
00206 6212          FSTA    #VAL
            /        IF(INIT.LT.0)RETURN
00207 0202          FLDA    INIT
00210 1050          JLT     #RTN
00211 0106  
            
            /        TYPE 100,ID
00212 1130  #G0002, JSR     SIXOUT
00213 0000  
00214 1030          JA      .+10
00215 0224  
00216 1030          JA      #100
00217 0264  
00220 1030          JA      ZERO
00221 0067  
00222 1030          JA      TWO
RALF V50A   24-JUL-20    PAGE 1-3

00223 0045  
            
00224 1130          JSR     SIXOUT
00225 0000  
00226 1030          JA      .+10
00227 0236  
00230 1030          JA      ID
00231 0026  
00232 1030          JA      TWO
00233 0045  
00234 1030          JA      ONE
00235 0034  
            
            /        CALL BUG(5)
00236 1130          JSR     BUG
00237 0000  
00240 1030          JA      .+0004
00241 0244  
00242 1030          JA      K5
00243 0103  
            
            /3       V=KTAB(I)
00244 0216  #3,     FLDA    KTABI
00245 6212          FSTA    #VAL
            /        IF(INIT.GE.0)V=MOD(V,1000)
00246 0202          FLDA    INIT
00247 1050          JLT     #RTN
00250 0106  
00251 1130          JSR     MOD
00252 0000  
00253 1030          JA      .+0006
00254 0261  
00255 1030          JA      #VAL
00256 0061  
00257 1030          JA      THOUS
00260 0042  
00261 6212          FSTA    #VAL
            /        RETURN
            /        END
00262 1030          JA      #RTN
00263 0106  
            /100     FORMAT(' KEYWORD = ',2A2)
            / OS/8: ,A4
00264 1335  #100,    TEXT   'K]EYWORD = @'
00265 0531  
00266 2717  
00267 2204  
00270 4075  
00271 4000  
RALF V50A   24-JUL-20    PAGE 1-4

NO ERRORS 
36 SYMBOLS, NO ABS REFS 

 #      C 00000   #BASE    00023   #FIX   X 00000   #GOBAK   00057  
 #G0001   00140   #G0002   00212   #LBL     00106   #MAIN  S 00000  
 #M1      00162   #RET     00015   #RTN     00106   #ST      00111  
 #VAL     00061   #XR      00002   #1       00167   #100     00264  
 #2       00204   #3       00244   ATAB     01604   BUG    X 00000  
 FOUR     00037   I        00072   ID       00026   INIT     00031  
 KTAB     00000   KTABI    00075   K21      00100   K5       00103  
 MOD    X 00000   ONE      00034   SIX      00050   SIXOUT X 00000  
 TABSIZ   03410   THOUS    00042   TWO      00045   VOCAB  S 00272  
 VOCCOM C 03413   ZERO     00067