Trailing-Edge
-
PDP-10 Archives
-
BB-R598A-RM_1983
-
swskit-v3/listings/vnp36/rstb.list
There are no other files named rstb.list in the archive.
!END OF MODULE
GSD_MNAME : NOVALUE,
25-Jan-1983 10:20:03 TOPS-20 Bliss-36 2A(142) Page 1
1-Jan-1983 15:04:19 NETPKG:<VNP36>RSTB.BLI.7 (1)
; 0001 !<REL4A.TKB-VNP>RSTB.BLI.3, 3-Dec-79 14:59:04, Edit by SROBINSON
; 0002 MODULE RSTB ( !READ SYMBOL TABLE
; 0003 IDENT = 'X2.0'
; 0004 ) =
; 0005 BEGIN
; 0006 !
; 0007 !
; 0008 !
; 0009 ! COPYRIGHT (c) 1980, 1981, 1982
; 0010 ! DIGITAL EQUIPMENT CORPORATION
; 0011 ! Maynard, Massachusetts
; 0012 !
; 0013 ! This software is furnished under a license and may be used
; 0014 ! and copied only in accordance with the terms of such license
; 0015 ! and with the inclusion of the above copyright notice. This
; 0016 ! software or any other copies thereof may not be provided or
; 0017 ! otherwise made available to any other person. No title to
; 0018 ! and ownership of the software is hereby transferred.
; 0019 !
; 0020 ! The information in this software is subject to change
; 0021 ! without notice and should not be construed as a commitment
; 0022 ! by DIGITAL EQUIPMENT CORPORATION.
; 0023 !
; 0024 ! DIGITAL assumes no responsibility for the use or reliability
; 0025 ! of its software on equipment which is not supplied by
; 0026 ! DIGITAL.
; 0027 !
; 0028
; 0029 !++
; 0030 ! FACILITY: VNP-20
; 0031 !
; 0032 ! ABSTRACT:
; 0033 !
; 0034 !
; 0035 ! THIS MODULE READS A SYMBOL TABLE, EITHER FOR THE KERNEL OR
; 0036 ! FOR A TASK.
; 0037 !
; 0038 !
; 0039 ! ENVIRONMENT: TOPS-20 USER MODE
; 0040 !
; 0041 ! AUTHOR: J. SAUTER, CREATION DATE: 31-MAY-78
; 0042 !
; 0043 ! MODIFIED BY:
; 0044 !
; 0045 ! Scott G. Robinson, 3-DEC-79 : Version X2.0
; 0046 ! - Ensure DECnet-10 Compatibility
; 0047 !
; 0048 !
; 0049 ! , : VERSION
; 0050 ! 01 -
; 0051 !--
; 0052
RSTB 25-Jan-1983 10:20:03 TOPS-20 Bliss-36 2A(142) Page 2
X2.0 1-Jan-1983 15:04:19 NETPKG:<VNP36>RSTB.BLI.7 (1)
; 0053 !<BLF/PAGE>
RSTB 25-Jan-1983 10:20:03 TOPS-20 Bliss-36 2A(142) Page 3
X2.0 1-Jan-1983 15:04:19 NETPKG:<VNP36>RSTB.BLI.7 (2)
; 0054 !
; 0055 ! TABLE OF CONTENTS:
; 0056 !
; 0057
; 0058 FORWARD ROUTINE
; 0059 RD16, !READ A 16-BIT WORD
; 0060 RDLBBL, !READ AN OBJECT BLOCK (NON-DOS FMT)
; 0061 RSTB : NOVALUE, !READ SYMBOL TABLE
; 0062 GET_BYTE, !GET AN 8-BIT BYTE FROM FILE
; 0063 GET_WORD, !GET A 16-BIT WORD FROM FILE
; 0064 OBJ_GSD : NOVALUE, !PROCESS GSD OBJECT ENTRY
; 0065 OBJ_END_GSD : NOVALUE, !END OF GSD ENTRIES
; 0066 OBJ_EOM : NOVALUE, !END OF MODULE
; 0067 GSD_MNAME : NOVALUE, !MODULE NAME
; 0068 GSD_CNAME : NOVALUE, !CSECT NAME (INVALID)
; 0069 GSD_ISN : NOVALUE, !INTERNAL SYMBOL NAME (INVALID)
; 0070 GSD_TRA : NOVALUE, !TRANSFER ADDRESS
; 0071 SEL_GLOBAL, !FIND A GLOBAL SYMBOL
; 0072 GSD_GSN : NOVALUE, !GLOBAL SYMBOL
; 0073 SEL_PSECT, !FIND A PSECT
; 0074 GSD_PSN : NOVALUE, !PSECT
; 0075 GSD_IDENT : NOVALUE, !MODULE IDENTIFICATION
; 0076 GSD_MAP : NOVALUE, !MAPPED ARRAY (INVALID)
; 0077 OBJ_ISD : NOVALUE, !INTERNAL SYMBOL (INVALID)
; 0078 SYM_VAL, !RETURN VALUE OF A SYMBOL
; 0079 SEL_SYMBOL, !FIND A SYMBOL BY NAME
; 0080 GBL_VAL; !RETURN VALUE OF A GLOBAL
; 0081
; 0082 !
; 0083 ! INCLUDE FILES:
; 0084 !
; 0085
; 0086 LIBRARY 'VNPLIB';
; 0087
; 0088 !REQUIRE 'BLOCKH.REQ'; !PREPARE TO DEFINE STORAGE BLOCKS
; 0089 !REQUIRE 'FILE.REQ'; !DEFINE FILE BLOCK
; 0090 !REQUIRE 'FILSW.REQ'; !DEFINE FILE SWITCHES
; 0091 !REQUIRE 'GLOBL.REQ'; !DEFINE GLOBAL BLOCK
; 0092 !REQUIRE 'MODU.REQ'; !DEFINE MODULE BLOCK
; 0093 !REQUIRE 'PSECT.REQ'; !DEFINE PSECT BLOCK
; 0094 !REQUIRE 'BLOCKT.REQ'; !END OF DEFINING STORAGE BLOCKS
; 0095 !
; 0096 ! MACROS:
; 0097 !
; 0098 ! NONE
; 0099 !
; 0100 ! EQUATED SYMBOLS:
; 0101 !
; 0102
; 0103 LITERAL
; 0104 DEBUG = 0;
; 0105
RSTB 25-Jan-1983 10:20:03 TOPS-20 Bliss-36 2A(142) Page 4
X2.0 1-Jan-1983 15:04:19 NETPKG:<VNP36>RSTB.BLI.7 (2)
; 0106 !
; 0107 ! OWN STORAGE:
; 0108 !
; 0109 ! NONE
; 0110 !
; 0111 ! EXTERNAL REFERENCES:
; 0112 !
; 0113
; 0114 EXTERNAL ROUTINE
; 0115 OPEN, !OPEN A FILE
; 0116 CLOSE : NOVALUE, !CLOSE A FILE
; 0117 INPUT, !READ FROM A FILE
; 0118 OUTPUT : NOVALUE, !OUTPUT TO A FILE
; 0119 ERROR : NOVALUE, !SIGNAL PROGRAMMING ERROR
; 0120 ERRMSG : NOVALUE, !ERROR MESSAGE
; 0121 GETSTG, !GET STORAGE
; 0122 FRESTG : NOVALUE, !FREE STORAGE
; 0123 PCRLF : NOVALUE, !PRINT CRLF
; 0124 OUTNUM : NOVALUE, !PRINT A NUMBER
; 0125 OUTSTR : NOVALUE, !PRINT A STRING
; 0126 R50TOA : NOVALUE, !CONVERT RADIX50 TO ASCII
; 0127 GETBLK, !GET A STORAGE BLOCK
; 0128 BLD_CHAIN, !BUILD ONTO A CHAIN
; 0129 FND_CHAIN; !FIND AN ITEM IN A CHAIN
; 0130
RSTB 25-Jan-1983 10:20:03 TOPS-20 Bliss-36 2A(142) Page 5
X2.0 1-Jan-1983 15:04:19 NETPKG:<VNP36>RSTB.BLI.7 (3)
; 0131 ROUTINE RD16 (CHAN, CHKSUM) = !READ A 16-BIT WORD
; 0132
; 0133 !++
; 0134 ! FUNCTIONAL DESCRIPTION:
; 0135 !
; 0136 ! READ A 16-BIT WORD, ASSEMBLING IT FROM THE 8-BIT
; 0137 ! INPUT STREAM. MAINTAIN THE CHECKSUM.
; 0138 !
; 0139 ! FORMAL PARAMETERS:
; 0140 !
; 0141 ! CHAN - THE CHANNEL OVER WHICH TO READ THE 8-BIT BYTES
; 0142 ! CHKSUM - ADDRESS OF THE CHECKSUM CELL
; 0143 !
; 0144 ! IMPLICIT INPUTS:
; 0145 !
; 0146 ! NONE
; 0147 !
; 0148 ! IMPLICIT OUTPUTS:
; 0149 !
; 0150 ! NONE
; 0151 !
; 0152 ! ROUTINE VALUE:
; 0153 !
; 0154 ! THE VALUE OF THE 16-BIT WORD READ, OR -1 IF WE REACHED
; 0155 ! END OF FILE ON INPUT.
; 0156 !
; 0157 ! SIDE EFFECTS
; 0158 !
; 0159 ! READS FROM THE INPUT FILE. MAY REACH EOF.
; 0160 !
; 0161 !--
; 0162
; 0163 BEGIN
; 0164
; 0165 LOCAL
; 0166 BYTE1,
; 0167 BYTE2,
; 0168 RESULT;
; 0169
; 0170 IF ((BYTE1 = INPUT (.CHAN)) LSS 0)
; 0171 THEN
; 0172 .BYTE1
; 0173 ELSE
; 0174 BEGIN
; 0175 .CHKSUM = ..CHKSUM + .BYTE1;
; 0176
; 0177 IF ((BYTE2 = INPUT (.CHAN)) LSS 0)
; 0178 THEN
; 0179 .BYTE2
; 0180 ELSE
; 0181 BEGIN
; 0182 .CHKSUM = ..CHKSUM + .BYTE2;
RSTB 25-Jan-1983 10:20:03 TOPS-20 Bliss-36 2A(142) Page 6
X2.0 1-Jan-1983 15:04:19 NETPKG:<VNP36>RSTB.BLI.7 (3)
; 0183 RESULT = 0;
; 0184 RESULT<8, 8> = .BYTE2; !HIGH-ORDER BYTE
; 0185 RESULT<0, 8> = .BYTE1; !LOW-ORDER BYTE
; 0186 .RESULT
; 0187 END
; 0188
; 0189 END
; 0190
; 0191 END;
TITLE RSTB
TWOSEG
.REQUEST SYS:B362LB.REL
EXTERN OPEN, CLOSE, INPUT, OUTPUT, ERROR, ERRMSG, GETSTG, FRESTG, PCRLF, OUTNUM, OUTSTR, R50TOA
EXTERN GETBLK, BLD_CHAIN, FND_CHAIN
AC0= 0
AC1= 1
AC2= 2
AC3= 3
AC4= 4
AC5= 5
AC6= 6
AC7= 7
AC10= 10
AC11= 11
AC12= 12
AC13= 13
AC14= 14
FP= 15
AC16= 16
SP= 17
RELOC 400000 ; 400000'
RD16: PUSH SP,AC0 ; SP,AC0 400000' 261 17 0 00 000000 0131
PUSH SP,AC10 ; SP,AC10 400001' 261 17 0 00 000010
PUSH SP,-4(SP) ; SP,CHAN 400002' 261 17 0 17 777774 0170
PUSHJ SP,INPUT ; SP,INPUT 400003' 260 17 0 00 000000*
MOVE AC0,AC1 ; BYTE1,AC1 400004' 200 00 0 00 000001
ADJSP SP,-1 ; SP,-1 400005' 105 17 0 00 777777
JUMPGE AC0,L.1 ; BYTE1,L.1 400006' 325 00 0 00 400011'
MOVE AC1,AC0 ; AC1,BYTE1 400007' 200 01 0 00 000000
JRST L.3 ; L.3 400010' 254 00 0 00 400026'
L.1: MOVE AC10,-3(SP) ; AC10,CHKSUM 400011' 200 10 0 17 777775 0175
ADDM AC0,0(AC10) ; BYTE1,0(AC10) 400012' 272 00 0 10 000000
RSTB 25-Jan-1983 10:20:03 TOPS-20 Bliss-36 2A(142) Page 7
X2.0 1-Jan-1983 15:04:19 NETPKG:<VNP36>RSTB.BLI.7 (3)
PUSH SP,-4(SP) ; SP,CHAN 400013' 261 17 0 17 777774 0177
PUSHJ SP,INPUT ; SP,INPUT 400014' 260 17 0 00 000000*
MOVE AC2,AC1 ; BYTE2,AC1 400015' 200 02 0 00 000001
ADJSP SP,-1 ; SP,-1 400016' 105 17 0 00 777777
JUMPGE AC2,L.2 ; BYTE2,L.2 400017' 325 02 0 00 400022'
MOVE AC1,AC2 ; AC1,BYTE2 400020' 200 01 0 00 000002
JRST L.3 ; L.3 400021' 254 00 0 00 400026'
L.2: ADDM AC2,0(AC10) ; BYTE2,0(AC10) 400022' 272 02 0 10 000000 0182
SETZ AC1, ; RESULT, 400023' 400 01 0 00 000000 0183
DPB AC2,C.1 ; BYTE2,[POINT 8,RESULT,27] <8,8> 400024' 137 02 0 00 400031' 0184
DPB AC0,C.2 ; BYTE1,[POINT 8,RESULT,35] <0,8> 400025' 137 00 0 00 400032' 0185
L.3: POP SP,AC10 ; SP,AC10 400026' 262 17 0 00 000010 0131
POP SP,AC0 ; SP,AC0 400027' 262 17 0 00 000000
POPJ SP, ; SP, 400030' 263 17 0 00 000000
C.1: POINT 8,AC1,27 ; 8,RESULT,27 400031' 10 10 0 00 000001
C.2: POINT 8,AC1,35 ; 8,RESULT,35 400032' 00 10 0 00 000001
; Routine Size: 27 words
; 0192 !
RSTB 25-Jan-1983 10:20:03 TOPS-20 Bliss-36 2A(142) Page 8
X2.0 1-Jan-1983 15:04:19 NETPKG:<VNP36>RSTB.BLI.7 (4)
; 0193 ROUTINE RDLBBL (CHAN, FILE_PTR, BYTES_READ) = !READ A LIBRARY BLOCK
; 0194
; 0195 !++
; 0196 ! FUNCTIONAL DESCRIPTION:
; 0197 !
; 0198 ! READ A BLOCK OF DATA FROM THE LIBRARY FILE. THIS BLOCK
; 0199 ! STARTS WITH A COUNT WORD FOLLOWED BY "COUNT" DATA WORDS.
; 0200 ! THE DATA WORDS COMPRISE OBJECT TEXT WHICH MAY CONTAIN
; 0201 ! SEVERAL RECORDS.
; 0202 ! THIS FORMAT IS ALSO USED FOR OBJECT FILES WITHOUT THE "DOS"
; 0203 ! SWITCH.
; 0204 !
; 0205 ! FORMAL PARAMETERS:
; 0206 !
; 0207 ! CHAN - THE CHANNEL OVER WHICH TO READ DATA. IT MUST HAVE
; 0208 ! BEEN OPENED IN WORD MODE.
; 0209 ! FILE_PTR - POINTER TO THE FILE BLOCK FOR
; 0210 ! ERROR MESSAGES.
; 0211 ! BYTES_READ - SET TO THE NUMBER OF BYTES READ FROM THE INPUT
; 0212 ! CHANNEL.
; 0213 !
; 0214 ! IMPLICIT INPUTS:
; 0215 !
; 0216 ! NONE
; 0217 !
; 0218 ! IMPLICIT OUTPUTS:
; 0219 !
; 0220 ! NONE
; 0221 !
; 0222 ! ROUTINE VALUE:
; 0223 !
; 0224 ! A POINTER TO A VECTOR. THE FIRST WORD OF THE VECTOR HAS
; 0225 ! ITS LENGTH IN WORDS. THE SECOND HAS THE LENGTH OF DATA IN
; 0226 ! BYTES. SUBSEQUENT WORDS ARE THE DATA READ, SUITABLE
; 0227 ! FOR SCANNING 8 BITS AT A TIME USING CH$A_RCHAR. IT IS
; 0228 ! THE CALLER'S RESPONSIBILITY TO FREE THIS VECTOR BY CALLING
; 0229 ! FRESTG.
; 0230 ! IF WE REACH EOF, -1 IS RETURNED. IF STORAGE IS NOT AVAILABLE,
; 0231 ! 0 IS RETURNED. AN INVALID FORMAT ALSO RETURNS -1.
; 0232 !
; 0233 ! SIDE EFFECTS
; 0234 !
; 0235 ! READS DATA FROM THE INPUT CHANNEL. MAY GET EOF.
; 0236 ! OBTAINS STORAGE FROM THE FREE LIST.
; 0237 ! WILL RETURN IT ON ERROR.
; 0238 !
; 0239 !--
; 0240
; 0241 BEGIN
; 0242
; 0243 BIND
; 0244 ROUTINE_NAME = UPLIT (%ASCIZ'READ_LIBRARY_BLOCK');
RSTB 25-Jan-1983 10:20:03 TOPS-20 Bliss-36 2A(142) Page 9
X2.0 1-Jan-1983 15:04:19 NETPKG:<VNP36>RSTB.BLI.7 (4)
; 0245
; 0246 MAP
; 0247 FILE_PTR : REF FILE_BLOCK;
; 0248
; 0249 LOCAL
; 0250 BLKPTR,
; 0251 BYTE1,
; 0252 CHKSUM,
; 0253 COUNT,
; 0254 OUTLEN,
; 0255 RESULT : REF VECTOR;
; 0256
; 0257 RESULT = 0;
; 0258 .BYTES_READ = 0;
; 0259 OUTLEN = 0;
; 0260
; 0261 WHILE (.OUTLEN EQL 0) DO
; 0262 BEGIN
; 0263 OUTLEN = RD16 (.CHAN, CHKSUM);
; 0264 .BYTES_READ = ..BYTES_READ + 2;
; 0265 END;
; 0266
; 0267 IF ((.OUTLEN LSS 2) OR (.OUTLEN GTR 128))
; 0268 THEN
; 0269 BEGIN
; 0270
; 0271 IF (.OUTLEN NEQ -1) THEN ERRMSG (0, 10, ROUTINE_NAME, FILE_PTR [FILE_NAME], 0, 0, 0);
; 0272
; 0273 RESULT = -1;
; 0274 END
; 0275 ELSE
; 0276 BEGIN
; 0277
; 0278 IF ((RESULT = GETSTG ((((.OUTLEN)/4) + 3))) LEQ 0)
; 0279 THEN
; 0280 BEGIN
; 0281 ERRMSG (0, 1, ROUTINE_NAME, 0, 0, 0, 0);
; 0282 END
; 0283 ELSE
; 0284 BEGIN
; 0285 RESULT [0] = (((.OUTLEN)/4) + 3); !AMOUNT TO FREE
; 0286 RESULT [1] = .OUTLEN; !NUMBER OF BYTES
; 0287 BLKPTR = CH$PTR (RESULT [2], -1, 8);
; 0288 COUNT = 0;
; 0289
; 0290 WHILE (((COUNT = .COUNT + 1) LEQ .OUTLEN) AND (.BYTE1 GEQ 0)) DO
; 0291 BEGIN
; 0292 BYTE1 = INPUT (.CHAN);
; 0293 .BYTES_READ = ..BYTES_READ + 1;
; 0294
; 0295 IF (.BYTE1 GEQ 0) THEN CH$A_WCHAR (.BYTE1, BLKPTR);
; 0296
RSTB 25-Jan-1983 10:20:03 TOPS-20 Bliss-36 2A(142) Page 10
X2.0 1-Jan-1983 15:04:19 NETPKG:<VNP36>RSTB.BLI.7 (4)
; 0297 END;
; 0298
; 0299 IF (.BYTE1 LSS 0)
; 0300 THEN
; 0301 BEGIN
; 0302 ERRMSG (0, 10, ROUTINE_NAME, FILE_PTR [FILE_NAME], 0, 0, 0);
; 0303 FRESTG (.RESULT, .RESULT [0]);
; 0304 RESULT = -1;
; 0305 END;
; 0306
; 0307 END;
; 0308
; 0309 END;
; 0310
; 0311 .RESULT
; 0312 END; !OF RDLBBL
P.AAA: BYTE (7)"R","E","A","D","_" ; READ_ 400033' 122 105 101 104 137
BYTE (7)"L","I","B","R","A" ; LIBRA 400034' 114 111 102 122 101
BYTE (7)"R","Y","_","B","L" ; RY_BL 400035' 122 131 137 102 114
BYTE (7)"O","C","K",000,000 ; OCK 400036' 117 103 113 000 000
ROUTINE_NAME= P.AAA ; 000000 400033'
RDLBBL: PUSH SP,AC0 ; SP,AC0 400037' 261 17 0 00 000000 0193
PUSH SP,AC10 ; SP,AC10 400040' 261 17 0 00 000010
PUSH SP,AC11 ; SP,AC11 400041' 261 17 0 00 000011
PUSH SP,AC12 ; SP,AC12 400042' 261 17 0 00 000012
ADJSP SP,1 ; SP,1 400043' 105 17 0 00 000001
SETZ AC11, ; RESULT, 400044' 400 11 0 00 000000 0257
MOVE AC10,-6(SP) ; AC10,BYTES_READ 400045' 200 10 0 17 777772 0258
SETZB AC0,0(AC10) ; OUTLEN,0(AC10) 400046' 403 00 0 10 000000
L.4: JUMPN AC0,L.5 ; OUTLEN,L.5 400047' 326 00 0 00 400061' 0261
PUSH SP,-10(SP) ; SP,CHAN 400050' 261 17 0 17 777770 0263
MOVEI AC1,-1(SP) ; AC1,CHKSUM 400051' 201 01 0 17 777777
PUSH SP,AC1 ; SP,AC1 400052' 261 17 0 00 000001
PUSHJ SP,RD16 ; SP,RD16 400053' 260 17 0 00 400000'
MOVE AC0,AC1 ; OUTLEN,AC1 400054' 200 00 0 00 000001
MOVEI AC1,2 ; AC1,2 400055' 201 01 0 00 000002 0264
ADDM AC1,0(AC10) ; AC1,0(AC10) 400056' 272 01 0 10 000000
ADJSP SP,-2 ; SP,-2 400057' 105 17 0 00 777776 0262
JRST L.4 ; L.4 400060' 254 00 0 00 400047' 0261
L.5: CAIGE AC0,2 ; OUTLEN,2 400061' 305 00 0 00 000002 0267
JRST L.6 ; L.6 400062' 254 00 0 00 400065'
CAIG AC0,200 ; OUTLEN,200 400063' 307 00 0 00 000200
JRST L.8 ; L.8 400064' 254 00 0 00 400104'
L.6: CAMN AC0,C.3 ; OUTLEN,[-1] 400065' 316 00 0 00 400202' 0271
JRST L.7 ; L.7 400066' 254 00 0 00 400102'
PUSH SP,C.4 ; SP,[0] 400067' 261 17 0 00 400203'
RSTB 25-Jan-1983 10:20:03 TOPS-20 Bliss-36 2A(142) Page 11
X2.0 1-Jan-1983 15:04:19 NETPKG:<VNP36>RSTB.BLI.7 (4)
PUSH SP,C.5 ; SP,[12] 400070' 261 17 0 00 400204'
PUSH SP,C.6 ; SP,[0,,ROUTINE_NAME] 400071' 261 17 0 00 400205'
MOVE AC1,-12(SP) ; AC1,FILE_PTR 400072' 200 01 0 17 777766
ADDI AC1,2 ; AC1,2 400073' 271 01 0 00 000002
PUSH SP,AC1 ; SP,AC1 400074' 261 17 0 00 000001
PUSH SP,C.4 ; SP,[0] 400075' 261 17 0 00 400203'
PUSH SP,C.4 ; SP,[0] 400076' 261 17 0 00 400203'
PUSH SP,C.4 ; SP,[0] 400077' 261 17 0 00 400203'
PUSHJ SP,ERRMSG ; SP,ERRMSG 400100' 260 17 0 00 000000*
ADJSP SP,-7 ; SP,-7 400101' 105 17 0 00 777771
L.7: SETO AC11, ; RESULT, 400102' 474 11 0 00 000000 0273
JRST L.13 ; L.13 400103' 254 00 0 00 400173' 0267
L.8: MOVE AC1,AC0 ; AC1,OUTLEN 400104' 200 01 0 00 000000 0278
IDIVI AC1,4 ; AC1,4 400105' 231 01 0 00 000004
MOVE AC10,AC1 ; AC10,AC1 400106' 200 10 0 00 000001
ADDI AC10,3 ; AC10,3 400107' 271 10 0 00 000003
PUSH SP,AC10 ; SP,AC10 400110' 261 17 0 00 000010
PUSHJ SP,GETSTG ; SP,GETSTG 400111' 260 17 0 00 000000*
MOVE AC11,AC1 ; RESULT,AC1 400112' 200 11 0 00 000001
ADJSP SP,-1 ; SP,-1 400113' 105 17 0 00 777777
JUMPG AC11,L.9 ; RESULT,L.9 400114' 327 11 0 00 400127'
PUSH SP,C.4 ; SP,[0] 400115' 261 17 0 00 400203' 0281
PUSH SP,C.7 ; SP,[1] 400116' 261 17 0 00 400206'
PUSH SP,C.6 ; SP,[0,,ROUTINE_NAME] 400117' 261 17 0 00 400205'
PUSH SP,C.4 ; SP,[0] 400120' 261 17 0 00 400203'
PUSH SP,C.4 ; SP,[0] 400121' 261 17 0 00 400203'
PUSH SP,C.4 ; SP,[0] 400122' 261 17 0 00 400203'
PUSH SP,C.4 ; SP,[0] 400123' 261 17 0 00 400203'
PUSHJ SP,ERRMSG ; SP,ERRMSG 400124' 260 17 0 00 000000*
ADJSP SP,-7 ; SP,-7 400125' 105 17 0 00 777771 0280
JRST L.13 ; L.13 400126' 254 00 0 00 400173' 0278
L.9: MOVEM AC10,0(AC11) ; AC10,0(RESULT) 400127' 202 10 0 11 000000 0285
MOVEM AC0,1(AC11) ; OUTLEN,1(RESULT) 400130' 202 00 0 11 000001 0286
MOVEI AC1,1(AC11) ; AC1,1(RESULT) 400131' 201 01 0 11 000001 0287
HRLI AC1,141000 ; AC1,141000 400132' 505 01 0 00 141000
MOVE AC12,AC1 ; BLKPTR,AC1 400133' 200 12 0 00 000001
SETZ AC10, ; COUNT, 400134' 400 10 0 00 000000 0288
L.10: ADDI AC10,1 ; COUNT,1 400135' 271 10 0 00 000001 0290
CAMLE AC10,AC0 ; COUNT,OUTLEN 400136' 313 10 0 00 000000
JRST L.12 ; L.12 400137' 254 00 0 00 400153'
JUMPL AC1,L.12 ; BYTE1,L.12 400140' 321 01 0 00 400153'
PUSH SP,-10(SP) ; SP,CHAN 400141' 261 17 0 17 777770 0292
PUSHJ SP,INPUT ; SP,INPUT 400142' 260 17 0 00 000000*
MOVE AC2,-7(SP) ; AC2,BYTES_READ 400143' 200 02 0 17 777771 0293
AOS 0(AC2) ; 0(AC2) 400144' 350 00 0 02 000000
JUMPL AC1,L.11 ; BYTE1,L.11 400145' 321 01 0 00 400151' 0295
IBP AC12 ; BLKPTR 400146' 133 00 0 00 000012
MOVE AC2,AC12 ; AC2,BLKPTR 400147' 200 02 0 00 000012
IDPB AC1,AC2 ; BYTE1,AC2 400150' 136 01 0 00 000002
L.11: ADJSP SP,-1 ; SP,-1 400151' 105 17 0 00 777777 0291
JRST L.10 ; L.10 400152' 254 00 0 00 400135' 0290
L.12: JUMPGE AC1,L.13 ; BYTE1,L.13 400153' 325 01 0 00 400173' 0299
RSTB 25-Jan-1983 10:20:03 TOPS-20 Bliss-36 2A(142) Page 12
X2.0 1-Jan-1983 15:04:19 NETPKG:<VNP36>RSTB.BLI.7 (4)
PUSH SP,C.4 ; SP,[0] 400154' 261 17 0 00 400203' 0302
PUSH SP,C.5 ; SP,[12] 400155' 261 17 0 00 400204'
PUSH SP,C.6 ; SP,[0,,ROUTINE_NAME] 400156' 261 17 0 00 400205'
MOVE AC0,-12(SP) ; AC0,FILE_PTR 400157' 200 00 0 17 777766
ADDI AC0,2 ; AC0,2 400160' 271 00 0 00 000002
PUSH SP,AC0 ; SP,AC0 400161' 261 17 0 00 000000
PUSH SP,C.4 ; SP,[0] 400162' 261 17 0 00 400203'
PUSH SP,C.4 ; SP,[0] 400163' 261 17 0 00 400203'
PUSH SP,C.4 ; SP,[0] 400164' 261 17 0 00 400203'
PUSHJ SP,ERRMSG ; SP,ERRMSG 400165' 260 17 0 00 000000*
MOVEM AC11,0(SP) ; RESULT,0(SP) 400166' 202 11 0 17 000000 0303
PUSH SP,0(AC11) ; SP,0(RESULT) 400167' 261 17 0 11 000000
PUSHJ SP,FRESTG ; SP,FRESTG 400170' 260 17 0 00 000000*
SETO AC11, ; RESULT, 400171' 474 11 0 00 000000 0304
ADJSP SP,-10 ; SP,-10 400172' 105 17 0 00 777770 0301
L.13: MOVE AC1,AC11 ; AC1,RESULT 400173' 200 01 0 00 000011 0193
ADJSP SP,-1 ; SP,-1 400174' 105 17 0 00 777777
POP SP,AC12 ; SP,AC12 400175' 262 17 0 00 000012
POP SP,AC11 ; SP,AC11 400176' 262 17 0 00 000011
POP SP,AC10 ; SP,AC10 400177' 262 17 0 00 000010
POP SP,AC0 ; SP,AC0 400200' 262 17 0 00 000000
POPJ SP, ; SP, 400201' 263 17 0 00 000000
C.3: EXP -1 ; -1 400202' 777777 777777
C.4: EXP 0 ; 0 400203' 000000 000000
C.5: EXP 12 ; 12 400204' 000000 000012
C.6: XWD 0,ROUTINE_NAME ; 0,ROUTINE_NAME 400205' 000000 400033'
C.7: EXP 1 ; 1 400206' 000000 000001
; Routine Size: 104 words
; 0313
RSTB 25-Jan-1983 10:20:03 TOPS-20 Bliss-36 2A(142) Page 13
X2.0 1-Jan-1983 15:04:19 NETPKG:<VNP36>RSTB.BLI.7 (5)
; 0314 GLOBAL ROUTINE RSTB (FILE_CHAN, FILE_PTR) : NOVALUE = !READ SYMBOL TABLE
; 0315
; 0316 !++
; 0317 ! FUNCTIONAL DESCRIPTION:
; 0318 !
; 0319 ! READ A SYMBOL TABLE FOR A TASK OR SYSTEM IMAGE
; 0320 !
; 0321 ! FORMAL PARAMETERS:
; 0322 !
; 0323 ! FILE_CHAN - THE CHANNEL NUMBER TO USE WHEN READING THE FILE.
; 0324 ! FILE_PTR - POINTER TO THE FILE BLOCK WHICH DESCRIBES
; 0325 ! THE SYMBOL TABLE FILE TO BE READ
; 0326 !
; 0327 ! IMPLICIT INPUTS:
; 0328 !
; 0329 ! NONE
; 0330 !
; 0331 ! IMPLICIT OUTPUTS:
; 0332 !
; 0333 ! GETS SPACE FROM FREE STORAGE TO HOLD THE SYMBOLS
; 0334 !
; 0335 ! ROUTINE VALUE:
; 0336 !
; 0337 ! POINTER TO THE CHAIN BLOCK WHICH POINTS TO THE SYMBOLS
; 0338 !
; 0339 ! SIDE EFFECTS
; 0340 !
; 0341 ! READS THE SYMBOL TABLE FILE
; 0342 !
; 0343 !--
; 0344
; 0345 BEGIN
; 0346
; 0347 BIND
; 0348 ROUTINE_NAME = UPLIT (%ASCIZ'READ_SYMBOL_TABLE');
; 0349
; 0350 MAP
; 0351 FILE_PTR : REF FILE_BLOCK;
; 0352
; 0353 LOCAL
; 0354 ASCVAL : VECTOR [CH$ALLOCATION (LEN_PSECT_NAME)],
; 0355 BLKPTR : REF VECTOR,
; 0356 BYTECTR,
; 0357 BYTEPTR,
; 0358 BYTES_READ,
; 0359 CHAR,
; 0360 COUNTER,
; 0361 POINTER,
; 0362 PREV_CHAR : VECTOR [3],
; 0363 R50VAL,
; 0364 READ_DONE,
; 0365 RECORD_TYPE;
RSTB 25-Jan-1983 10:20:03 TOPS-20 Bliss-36 2A(142) Page 14
X2.0 1-Jan-1983 15:04:19 NETPKG:<VNP36>RSTB.BLI.7 (5)
; 0366
; 0367 IF (OPEN (.FILE_CHAN, FILE_PTR [FILE_NAME], 2, 0, UPLIT (%ASCIZ'STB')) NEQ 0)
; 0368 THEN
; 0369 BEGIN !SUCCESSFUL INPUT OPEN
; 0370 READ_DONE = 0;
; 0371
; 0372 DO
; 0373 BEGIN
; 0374 BLKPTR = RDLBBL (.FILE_CHAN, .FILE_PTR, BYTES_READ);
; 0375
; 0376 IF (.BLKPTR LEQ 0)
; 0377 THEN
; 0378 BEGIN
; 0379 ERRMSG (0, 10, ROUTINE_NAME, FILE_PTR [FILE_NAME], 0, 0, 0);
; 0380 READ_DONE = -1;
; 0381 END
; 0382 ELSE
; 0383 BEGIN
; 0384 BYTEPTR = CH$PTR (BLKPTR [2], -1, 8);
; 0385 BYTECTR = .BLKPTR [1];
; 0386
; 0387 IF (DEBUG GEQ 2)
; 0388 THEN
; 0389 BEGIN
; 0390 PCRLF (1);
; 0391 OUTNUM (1, .BYTECTR, 10, 0);
; 0392 COUNTER = .BYTECTR;
; 0393 POINTER = .BYTEPTR;
; 0394 PREV_CHAR [0] = 0;
; 0395 PREV_CHAR [1] = 0;
; 0396 PREV_CHAR [2] = 0;
; 0397 R50VAL = 0;
; 0398
; 0399 WHILE ((COUNTER = .COUNTER - 1) GEQ 0) DO
; 0400 BEGIN
; 0401 CHAR = CH$A_RCHAR (POINTER);
; 0402 PCRLF (1);
; 0403 OUTSTR (1, UPLIT (%ASCIZ' '));
; 0404 OUTNUM (1, .CHAR, 8, 0);
; 0405 OUTPUT (1, %O'11');
; 0406 R50VAL<24, 8> = .PREV_CHAR [1];
; 0407 R50VAL<16, 8> = .PREV_CHAR [0];
; 0408 R50VAL<8, 8> = .CHAR;
; 0409 R50VAL<0, 8> = .PREV_CHAR [2];
; 0410 R50TOA (.R50VAL, ASCVAL [0]);
; 0411 OUTSTR (1, ASCVAL [0]);
; 0412 PREV_CHAR [0] = .PREV_CHAR [1];
; 0413 PREV_CHAR [1] = .PREV_CHAR [2];
; 0414 PREV_CHAR [2] = .CHAR;
; 0415 END;
; 0416
; 0417 END; !DEBUG
RSTB 25-Jan-1983 10:20:03 TOPS-20 Bliss-36 2A(142) Page 15
X2.0 1-Jan-1983 15:04:19 NETPKG:<VNP36>RSTB.BLI.7 (5)
; 0418
; 0419 RECORD_TYPE = GET_BYTE (BYTEPTR, BYTECTR, .FILE_PTR);
; 0420
; 0421 CASE .RECORD_TYPE FROM 1 TO 6 OF
; 0422 SET
; 0423
; 0424 [1] :
; 0425 OBJ_GSD (BYTEPTR, BYTECTR, .FILE_PTR); !GSD
; 0426
; 0427 [2] :
; 0428 OBJ_END_GSD (BYTEPTR, BYTECTR, .FILE_PTR); !END OF GSD
; 0429
; 0430 [5] :
; 0431 OBJ_ISD (BYTEPTR, BYTECTR, .FILE_PTR); !INTERNAL SYMBOL DIRECTORY
; 0432
; 0433 [6] :
; 0434 BEGIN
; 0435 OBJ_EOM (BYTEPTR, BYTECTR, .FILE_PTR); !END OF MODULE
; 0436 READ_DONE = -1;
; 0437 END;
; 0438
; 0439 [3, 4, OUTRANGE] :
; 0440 BEGIN
; 0441 ERRMSG (0, 10, ROUTINE_NAME, FILE_PTR [FILE_NAME], 0, 0, 0);
; 0442 READ_DONE = -1;
; 0443 END;
; 0444 TES;
; 0445
; 0446 FRESTG (.BLKPTR, .BLKPTR [0]);
; 0447 END
; 0448
; 0449 END
; 0450 UNTIL (.READ_DONE NEQ 0);
; 0451
; 0452 CLOSE (.FILE_CHAN);
; 0453 END; !OF SUCCESSFUL INPUT OPEN
; 0454
; 0455 END; !OF READ_FILE
P.AAB: BYTE (7)"R","E","A","D","_" ; READ_ 400207' 122 105 101 104 137
BYTE (7)"S","Y","M","B","O" ; SYMBO 400210' 123 131 115 102 117
BYTE (7)"L","_","T","A","B" ; L_TAB 400211' 114 137 124 101 102
BYTE (7)"L","E",000,000,000 ; LE 400212' 114 105 000 000 000
P.AAC: BYTE (7)"S","T","B",000,000 ; STB 400213' 123 124 102 000 000
P.AAD: BYTE (7)" "," "," "," ",000 ; 400214' 040 040 040 040 000
ROUTINE_NAME= P.AAB ; 000000 400207'
RSTB:: PUSH SP,AC0 ; SP,AC0 400215' 261 17 0 00 000000 0314
RSTB 25-Jan-1983 10:20:03 TOPS-20 Bliss-36 2A(142) Page 16
X2.0 1-Jan-1983 15:04:19 NETPKG:<VNP36>RSTB.BLI.7 (5)
PUSH SP,AC10 ; SP,AC10 400216' 261 17 0 00 000010
PUSH SP,AC11 ; SP,AC11 400217' 261 17 0 00 000011
PUSH SP,AC12 ; SP,AC12 400220' 261 17 0 00 000012
PUSH SP,AC13 ; SP,AC13 400221' 261 17 0 00 000013
ADJSP SP,10 ; SP,10 400222' 105 17 0 00 000010
PUSH SP,-17(SP) ; SP,FILE_CHAN 400223' 261 17 0 17 777761 0367
MOVE AC11,-17(SP) ; AC11,FILE_PTR 400224' 200 11 0 17 777761
MOVE AC12,AC11 ; AC12,AC11 400225' 200 12 0 00 000011
ADDI AC12,2 ; AC12,2 400226' 271 12 0 00 000002
PUSH SP,AC12 ; SP,AC12 400227' 261 17 0 00 000012
PUSH SP,C.8 ; SP,[2] 400230' 261 17 0 00 400376'
PUSH SP,C.4 ; SP,[0] 400231' 261 17 0 00 400203'
PUSH SP,C.9 ; SP,[0,,P.AAC] 400232' 261 17 0 00 400377'
PUSHJ SP,OPEN ; SP,OPEN 400233' 260 17 0 00 000000*
ADJSP SP,-5 ; SP,-5 400234' 105 17 0 00 777773
JUMPE AC1,L.24 ; AC1,L.24 400235' 322 01 0 00 400367'
SETZ AC0, ; READ_DONE, 400236' 400 00 0 00 000000 0370
L.14: PUSH SP,-17(SP) ; SP,FILE_CHAN 400237' 261 17 0 17 777761 0374
PUSH SP,AC11 ; SP,AC11 400240' 261 17 0 00 000011
MOVEI AC1,-4(SP) ; AC1,BYTES_READ 400241' 201 01 0 17 777774
PUSH SP,AC1 ; SP,AC1 400242' 261 17 0 00 000001
PUSHJ SP,RDLBBL ; SP,RDLBBL 400243' 260 17 0 00 400037'
MOVE AC10,AC1 ; BLKPTR,AC1 400244' 200 10 0 00 000001
JUMPG AC10,L.15 ; BLKPTR,L.15 400245' 327 10 0 00 400260' 0376
SETZM 0(SP) ; 0(SP) 400246' 402 00 0 17 000000 0379
PUSH SP,C.5 ; SP,[12] 400247' 261 17 0 00 400204'
PUSH SP,C.10 ; SP,[0,,ROUTINE_NAME] 400250' 261 17 0 00 400400'
PUSH SP,AC12 ; SP,AC12 400251' 261 17 0 00 000012
PUSH SP,C.4 ; SP,[0] 400252' 261 17 0 00 400203'
PUSH SP,C.4 ; SP,[0] 400253' 261 17 0 00 400203'
PUSH SP,C.4 ; SP,[0] 400254' 261 17 0 00 400203'
PUSHJ SP,ERRMSG ; SP,ERRMSG 400255' 260 17 0 00 000000*
SETO AC0, ; READ_DONE, 400256' 474 00 0 00 000000 0380
JRST L.23 ; L.23 400257' 254 00 0 00 400362' 0376
L.15: MOVEI AC1,1(AC10) ; AC1,1(BLKPTR) 400260' 201 01 0 10 000001 0384
HRLI AC1,141000 ; AC1,141000 400261' 505 01 0 00 141000
MOVEM AC1,-4(SP) ; AC1,BYTEPTR 400262' 202 01 0 17 777774
MOVE AC1,1(AC10) ; AC1,1(BLKPTR) 400263' 200 01 0 10 000001 0385
MOVEM AC1,-3(SP) ; AC1,BYTECTR 400264' 202 01 0 17 777775
MOVEI AC1,-4(SP) ; AC1,BYTEPTR 400265' 201 01 0 17 777774 0419
PUSH SP,AC1 ; SP,AC1 400266' 261 17 0 00 000001
MOVEI AC1,-4(SP) ; AC1,BYTECTR 400267' 201 01 0 17 777774
PUSH SP,AC1 ; SP,AC1 400270' 261 17 0 00 000001
PUSH SP,AC11 ; SP,AC11 400271' 261 17 0 00 000011
PUSHJ SP,GET_BYTE ; SP,GET_BYTE 400272' 260 17 0 00 000000V
MOVE AC13,AC1 ; RECORD_TYPE,AC1 400273' 200 13 0 00 000001
MOVE AC1,AC13 ; AC1,RECORD_TYPE 400274' 200 01 0 00 000013 0421
SOJL AC1,L.17 ; AC1,L.17 400275' 361 01 0 00 400307'
CAIGE AC1,6 ; AC1,6 400276' 305 01 0 00 000006
JRST L.16(AC1) ; L.16(AC1) 400277' 254 00 0 01 400301'
JRST L.17 ; L.17 400300' 254 00 0 00 400307'
L.16: JRST L.18 ; L.18 400301' 254 00 0 00 400322'
RSTB 25-Jan-1983 10:20:03 TOPS-20 Bliss-36 2A(142) Page 17
X2.0 1-Jan-1983 15:04:19 NETPKG:<VNP36>RSTB.BLI.7 (5)
JRST L.19 ; L.19 400302' 254 00 0 00 400331'
JRST L.17 ; L.17 400303' 254 00 0 00 400307'
JRST L.17 ; L.17 400304' 254 00 0 00 400307'
JRST L.20 ; L.20 400305' 254 00 0 00 400340'
JRST L.21 ; L.21 400306' 254 00 0 00 400347'
L.17: SETZM 0(SP) ; 0(SP) 400307' 402 00 0 17 000000 0441
PUSH SP,C.5 ; SP,[12] 400310' 261 17 0 00 400204'
PUSH SP,C.10 ; SP,[0,,ROUTINE_NAME] 400311' 261 17 0 00 400400'
PUSH SP,AC12 ; SP,AC12 400312' 261 17 0 00 000012
PUSH SP,C.4 ; SP,[0] 400313' 261 17 0 00 400203'
PUSH SP,C.4 ; SP,[0] 400314' 261 17 0 00 400203'
PUSH SP,C.4 ; SP,[0] 400315' 261 17 0 00 400203'
PUSHJ SP,ERRMSG ; SP,ERRMSG 400316' 260 17 0 00 000000*
SETO AC0, ; READ_DONE, 400317' 474 00 0 00 000000 0442
ADJSP SP,-3 ; SP,-3 400320' 105 17 0 00 777775 0440
JRST L.22 ; L.22 400321' 254 00 0 00 400356' 0421
L.18: MOVEI AC1,-7(SP) ; AC1,BYTEPTR 400322' 201 01 0 17 777771 0425
PUSH SP,AC1 ; SP,AC1 400323' 261 17 0 00 000001
MOVEI AC1,-7(SP) ; AC1,BYTECTR 400324' 201 01 0 17 777771
PUSH SP,AC1 ; SP,AC1 400325' 261 17 0 00 000001
PUSH SP,AC11 ; SP,AC11 400326' 261 17 0 00 000011
PUSHJ SP,OBJ_GSD ; SP,OBJ_GSD 400327' 260 17 0 00 000000V
JRST L.22 ; L.22 400330' 254 00 0 00 400356' 0421
L.19: MOVEI AC1,-7(SP) ; AC1,BYTEPTR 400331' 201 01 0 17 777771 0428
PUSH SP,AC1 ; SP,AC1 400332' 261 17 0 00 000001
MOVEI AC1,-7(SP) ; AC1,BYTECTR 400333' 201 01 0 17 777771
PUSH SP,AC1 ; SP,AC1 400334' 261 17 0 00 000001
PUSH SP,AC11 ; SP,AC11 400335' 261 17 0 00 000011
PUSHJ SP,OBJ_END_GSD ; SP,OBJ_END_GSD 400336' 260 17 0 00 000000V
JRST L.22 ; L.22 400337' 254 00 0 00 400356' 0421
L.20: MOVEI AC1,-7(SP) ; AC1,BYTEPTR 400340' 201 01 0 17 777771 0431
PUSH SP,AC1 ; SP,AC1 400341' 261 17 0 00 000001
MOVEI AC1,-7(SP) ; AC1,BYTECTR 400342' 201 01 0 17 777771
PUSH SP,AC1 ; SP,AC1 400343' 261 17 0 00 000001
PUSH SP,AC11 ; SP,AC11 400344' 261 17 0 00 000011
PUSHJ SP,OBJ_ISD ; SP,OBJ_ISD 400345' 260 17 0 00 000000V
JRST L.22 ; L.22 400346' 254 00 0 00 400356' 0421
L.21: MOVEI AC1,-7(SP) ; AC1,BYTEPTR 400347' 201 01 0 17 777771 0435
PUSH SP,AC1 ; SP,AC1 400350' 261 17 0 00 000001
MOVEI AC1,-7(SP) ; AC1,BYTECTR 400351' 201 01 0 17 777771
PUSH SP,AC1 ; SP,AC1 400352' 261 17 0 00 000001
PUSH SP,AC11 ; SP,AC11 400353' 261 17 0 00 000011
PUSHJ SP,OBJ_EOM ; SP,OBJ_EOM 400354' 260 17 0 00 000000V
SETO AC0, ; READ_DONE, 400355' 474 00 0 00 000000 0436
L.22: MOVEM AC10,0(SP) ; BLKPTR,0(SP) 400356' 202 10 0 17 000000 0446
PUSH SP,0(AC10) ; SP,0(BLKPTR) 400357' 261 17 0 10 000000
PUSHJ SP,FRESTG ; SP,FRESTG 400360' 260 17 0 00 000000*
ADJSP SP,-1 ; SP,-1 400361' 105 17 0 00 777777 0383
L.23: ADJSP SP,-11 ; SP,-11 400362' 105 17 0 00 777767 0373
JUMPE AC0,L.14 ; READ_DONE,L.14 400363' 322 00 0 00 400237' 0450
PUSH SP,-17(SP) ; SP,FILE_CHAN 400364' 261 17 0 17 777761 0452
PUSHJ SP,CLOSE ; SP,CLOSE 400365' 260 17 0 00 000000*
RSTB 25-Jan-1983 10:20:03 TOPS-20 Bliss-36 2A(142) Page 18
X2.0 1-Jan-1983 15:04:19 NETPKG:<VNP36>RSTB.BLI.7 (5)
ADJSP SP,-1 ; SP,-1 400366' 105 17 0 00 777777 0369
L.24: ADJSP SP,-10 ; SP,-10 400367' 105 17 0 00 777770 0314
POP SP,AC13 ; SP,AC13 400370' 262 17 0 00 000013
POP SP,AC12 ; SP,AC12 400371' 262 17 0 00 000012
POP SP,AC11 ; SP,AC11 400372' 262 17 0 00 000011
POP SP,AC10 ; SP,AC10 400373' 262 17 0 00 000010
POP SP,AC0 ; SP,AC0 400374' 262 17 0 00 000000
POPJ SP, ; SP, 400375' 263 17 0 00 000000
C.8: EXP 2 ; 2 400376' 000000 000002
C.9: XWD 0,P.AAC ; 0,P.AAC 400377' 000000 400213'
C.10: XWD 0,ROUTINE_NAME ; 0,ROUTINE_NAME 400400' 000000 400207'
; Routine Size: 116 words
; 0456
RSTB 25-Jan-1983 10:20:03 TOPS-20 Bliss-36 2A(142) Page 19
X2.0 1-Jan-1983 15:04:19 NETPKG:<VNP36>RSTB.BLI.7 (6)
; 0457 ROUTINE GET_BYTE (BYTEPTR, BYTECTR, FILE_PTR) = !GET BYTE
; 0458
; 0459 !++
; 0460 ! FUNCTIONAL DESCRIPTION:
; 0461 !
; 0462 ! FETCH A BYTE FROM THE OBJECT RECORD. MAINTAIN
; 0463 ! THE COUNTER AND GIVE AN ERROR MESSAGE IF IT RUNS OUT.
; 0464 !
; 0465 ! FORMAL PARAMETERS:
; 0466 !
; 0467 ! BYTEPTR - POINTER TO THE BYTE POINTER
; 0468 ! BYTECTR - POINTER TO THE COUNTER CELL
; 0469 ! FILE_PTR - POINTER TO THE FILE BLOCK FOR THE FILE
; 0470 ! BEING READ, FOR ERROR MESSAGES.
; 0471 !
; 0472 ! IMPLICIT INPUTS:
; 0473 !
; 0474 ! THE OBJECT RECORD POINTED TO
; 0475 !
; 0476 ! IMPLICIT OUTPUTS:
; 0477 !
; 0478 ! NONE
; 0479 !
; 0480 ! ROUTINE VALUE:
; 0481 !
; 0482 ! THE VALUE OF THE BYTE, OR -1 IF WE RAN OFF THE END.
; 0483 !
; 0484 ! SIDE EFFECTS
; 0485 !
; 0486 ! NONE
; 0487 !
; 0488 !--
; 0489
; 0490 BEGIN
; 0491
; 0492 BIND
; 0493 ROUTINE_NAME = UPLIT (%ASCIZ'GET_BYTE');
; 0494
; 0495 MAP
; 0496 FILE_PTR : REF FILE_BLOCK;
; 0497
; 0498 IF (..BYTECTR GTR 0)
; 0499 THEN
; 0500 BEGIN
; 0501 .BYTECTR = ..BYTECTR - 1;
; 0502 CH$A_RCHAR (.BYTEPTR)
; 0503 END
; 0504 ELSE
; 0505 BEGIN
; 0506 ERRMSG (0, 10, ROUTINE_NAME, FILE_PTR [FILE_NAME], 0, 0, 0);
; 0507 -1
; 0508 END
RSTB 25-Jan-1983 10:20:03 TOPS-20 Bliss-36 2A(142) Page 20
X2.0 1-Jan-1983 15:04:19 NETPKG:<VNP36>RSTB.BLI.7 (6)
; 0509
; 0510 END; !OF GET_BYTE
P.AAE: BYTE (7)"G","E","T","_","B" ; GET_B 400401' 107 105 124 137 102
BYTE (7)"Y","T","E",000,000 ; YTE 400402' 131 124 105 000 000
ROUTINE_NAME= P.AAE ; 000000 400401'
GET_BYTE:
MOVE AC1,-2(SP) ; AC1,BYTECTR 400403' 200 01 0 17 777776 0498
SKIPG 0(AC1) ; 0(AC1) 400404' 337 00 0 01 000000
JRST L.25 ; L.25 400405' 254 00 0 00 400414'
SOS 0(AC1) ; 0(AC1) 400406' 370 00 0 01 000000 0501
MOVE AC1,-3(SP) ; AC1,BYTEPTR 400407' 200 01 0 17 777775 0502
IBP 0(AC1) ; 0(AC1) 400410' 133 00 0 01 000000
MOVE AC1,0(AC1) ; AC1,0(AC1) 400411' 200 01 0 01 000000
ILDB AC1,AC1 ; AC1,AC1 400412' 134 01 0 00 000001
POPJ SP, ; SP, 400413' 263 17 0 00 000000 0498
L.25: PUSH SP,C.4 ; SP,[0] 400414' 261 17 0 00 400203' 0506
PUSH SP,C.5 ; SP,[12] 400415' 261 17 0 00 400204'
PUSH SP,C.11 ; SP,[0,,ROUTINE_NAME] 400416' 261 17 0 00 400431'
MOVE AC1,-4(SP) ; AC1,FILE_PTR 400417' 200 01 0 17 777774
ADDI AC1,2 ; AC1,2 400420' 271 01 0 00 000002
PUSH SP,AC1 ; SP,AC1 400421' 261 17 0 00 000001
PUSH SP,C.4 ; SP,[0] 400422' 261 17 0 00 400203'
PUSH SP,C.4 ; SP,[0] 400423' 261 17 0 00 400203'
PUSH SP,C.4 ; SP,[0] 400424' 261 17 0 00 400203'
PUSHJ SP,ERRMSG ; SP,ERRMSG 400425' 260 17 0 00 000000*
ADJSP SP,-7 ; SP,-7 400426' 105 17 0 00 777771 0505
SETO AC1, ; AC1, 400427' 474 01 0 00 000000 0498
POPJ SP, ; SP, 400430' 263 17 0 00 000000 0457
C.11: XWD 0,ROUTINE_NAME ; 0,ROUTINE_NAME 400431' 000000 400401'
; Routine Size: 23 words
RSTB 25-Jan-1983 10:20:03 TOPS-20 Bliss-36 2A(142) Page 21
X2.0 1-Jan-1983 15:04:19 NETPKG:<VNP36>RSTB.BLI.7 (7)
; 0511 ROUTINE GET_WORD (BYTEPTR, BYTECTR, FILE_PTR) = !GET WORD
; 0512
; 0513 !++
; 0514 ! FUNCTIONAL DESCRIPTION:
; 0515 !
; 0516 ! FETCH A WORD FROM THE OBJECT RECORD. MAINTAIN
; 0517 ! THE COUNTER AND GIVE AN ERROR MESSAGE IF IT RUNS OUT.
; 0518 !
; 0519 ! FORMAL PARAMETERS:
; 0520 !
; 0521 ! BYTEPTR - POINTER TO THE BYTE POINTER
; 0522 ! BYTECTR - POINTER TO THE COUNTER CELL
; 0523 ! FILE_PTR - POINTER TO FILE BLOCK FOR ERROR MESSAGES
; 0524 !
; 0525 ! IMPLICIT INPUTS:
; 0526 !
; 0527 ! THE OBJECT RECORD POINTED TO
; 0528 !
; 0529 ! IMPLICIT OUTPUTS:
; 0530 !
; 0531 ! NONE
; 0532 !
; 0533 ! ROUTINE VALUE:
; 0534 !
; 0535 ! THE VALUE OF THE WORD, OR -1 IF WE RAN OFF THE END.
; 0536 !
; 0537 ! SIDE EFFECTS
; 0538 !
; 0539 ! NONE
; 0540 !
; 0541 !--
; 0542
; 0543 BEGIN
; 0544
; 0545 BIND
; 0546 ROUTINE_NAME = UPLIT (%ASCIZ'GET_WORD');
; 0547
; 0548 MAP
; 0549 FILE_PTR : REF FILE_BLOCK;
; 0550
; 0551 LOCAL
; 0552 RESULT;
; 0553
; 0554 IF (..BYTECTR GTR 1)
; 0555 THEN
; 0556 BEGIN
; 0557 .BYTECTR = ..BYTECTR - 2;
; 0558 RESULT = CH$A_RCHAR (.BYTEPTR);
; 0559 RESULT<8, 8> = CH$A_RCHAR (.BYTEPTR);
; 0560 .RESULT
; 0561 END
; 0562 ELSE
RSTB 25-Jan-1983 10:20:03 TOPS-20 Bliss-36 2A(142) Page 22
X2.0 1-Jan-1983 15:04:19 NETPKG:<VNP36>RSTB.BLI.7 (7)
; 0563 BEGIN
; 0564 ERRMSG (0, 10, ROUTINE_NAME, FILE_PTR [FILE_NAME], 0, 0, 0);
; 0565 -1
; 0566 END
; 0567
; 0568 END; !OF GET_WORD
P.AAF: BYTE (7)"G","E","T","_","W" ; GET_W 400432' 107 105 124 137 127
BYTE (7)"O","R","D",000,000 ; ORD 400433' 117 122 104 000 000
ROUTINE_NAME= P.AAF ; 000000 400432'
GET_WORD:
MOVE AC1,-2(SP) ; AC1,BYTECTR 400434' 200 01 0 17 777776 0554
MOVEI AC2,1 ; AC2,1 400435' 201 02 0 00 000001
CAML AC2,0(AC1) ; AC2,0(AC1) 400436' 311 02 0 01 000000
JRST L.26 ; L.26 400437' 254 00 0 00 400453'
HRROI AC2,-2 ; AC2,-2 400440' 561 02 0 00 777776 0557
ADDM AC2,0(AC1) ; AC2,0(AC1) 400441' 272 02 0 01 000000
MOVE AC2,-3(SP) ; AC2,BYTEPTR 400442' 200 02 0 17 777775 0558
IBP 0(AC2) ; 0(AC2) 400443' 133 00 0 02 000000
MOVE AC1,0(AC2) ; RESULT,0(AC2) 400444' 200 01 0 02 000000
ILDB AC1,AC1 ; RESULT,RESULT 400445' 134 01 0 00 000001
IBP 0(AC2) ; 0(AC2) 400446' 133 00 0 02 000000 0559
MOVE AC2,0(AC2) ; AC2,0(AC2) 400447' 200 02 0 02 000000
ILDB AC2,AC2 ; AC2,AC2 400450' 134 02 0 00 000002
DPB AC2,C.1 ; AC2,[POINT 8,AC1,27] <8,8> 400451' 137 02 0 00 400031'
POPJ SP, ; SP, 400452' 263 17 0 00 000000 0554
L.26: PUSH SP,C.4 ; SP,[0] 400453' 261 17 0 00 400203' 0564
PUSH SP,C.5 ; SP,[12] 400454' 261 17 0 00 400204'
PUSH SP,C.12 ; SP,[0,,ROUTINE_NAME] 400455' 261 17 0 00 400470'
MOVE AC1,-4(SP) ; AC1,FILE_PTR 400456' 200 01 0 17 777774
ADDI AC1,2 ; AC1,2 400457' 271 01 0 00 000002
PUSH SP,AC1 ; SP,AC1 400460' 261 17 0 00 000001
PUSH SP,C.4 ; SP,[0] 400461' 261 17 0 00 400203'
PUSH SP,C.4 ; SP,[0] 400462' 261 17 0 00 400203'
PUSH SP,C.4 ; SP,[0] 400463' 261 17 0 00 400203'
PUSHJ SP,ERRMSG ; SP,ERRMSG 400464' 260 17 0 00 000000*
ADJSP SP,-7 ; SP,-7 400465' 105 17 0 00 777771 0563
SETO AC1, ; AC1, 400466' 474 01 0 00 000000 0554
POPJ SP, ; SP, 400467' 263 17 0 00 000000 0511
C.12: XWD 0,ROUTINE_NAME ; 0,ROUTINE_NAME 400470' 000000 400432'
; Routine Size: 29 words
RSTB 25-Jan-1983 10:20:03 TOPS-20 Bliss-36 2A(142) Page 23
X2.0 1-Jan-1983 15:04:19 NETPKG:<VNP36>RSTB.BLI.7 (8)
; 0569 ROUTINE OBJ_GSD (BYTEPTR, BYTECTR, FILE_PTR) : NOVALUE = !PROCESS GSD RECORD
; 0570
; 0571 !++
; 0572 ! FUNCTIONAL DESCRIPTION:
; 0573 !
; 0574 ! PROCESS A GLOBAL SYMBOL DIRECTORY ENTRY IN THE OBJECT
; 0575 ! FILE. THIS IS DONE BY FETCHING THE PARAMETERS AND THEN
; 0576 ! TO A SUBROUTINE TO HANDLE THE ENTRY TYPE.
; 0577 !
; 0578 ! FORMAL PARAMETERS:
; 0579 !
; 0580 ! BYTEPTR - POINTER TO THE BYTE POINTER
; 0581 ! BYTECTR - POINTER TO THE COUNTER CELL
; 0582 ! FILE_PTR - POINTER TO THE FILE BLOCK OF THE OBJECT
; 0583 ! FILE BEING READ. THIS IS FOR ERROR MESSAGES AND TO
; 0584 ! POINT TO THE DATA READ.
; 0585 !
; 0586 ! IMPLICIT INPUTS:
; 0587 !
; 0588 ! THE OBJECT RECORD POINTED TO
; 0589 !
; 0590 ! IMPLICIT OUTPUTS:
; 0591 !
; 0592 ! NONE
; 0593 !
; 0594 ! ROUTINE VALUE:
; 0595 !
; 0596 ! NONE
; 0597 !
; 0598 ! SIDE EFFECTS
; 0599 !
; 0600 ! IN MANY CASES, THE HANDLERS FOR THE ENTRY TYPES WILL
; 0601 ! OBTAIN SPACE FROM THE FREE STORAGE LIST
; 0602 !
; 0603 !--
; 0604
; 0605 BEGIN
; 0606
; 0607 BIND
; 0608 ROUTINE_NAME = UPLIT (%ASCIZ'OBJ_GSD');
; 0609
; 0610 MAP
; 0611 FILE_PTR : REF FILE_BLOCK;
; 0612
; 0613 LOCAL
; 0614 MODU_PTR : REF MODU_BLOCK,
; 0615 CHAR,
; 0616 R50VAL,
; 0617 ASCVAL : VECTOR [CH$ALLOCATION (LEN_PSECT_NAME)],
; 0618 FLAGS,
; 0619 ETYPE,
; 0620 VALUE;
RSTB 25-Jan-1983 10:20:03 TOPS-20 Bliss-36 2A(142) Page 24
X2.0 1-Jan-1983 15:04:19 NETPKG:<VNP36>RSTB.BLI.7 (8)
; 0621
; 0622 IF (DEBUG GEQ 1)
; 0623 THEN
; 0624 BEGIN
; 0625 PCRLF (1);
; 0626 OUTPUT (1, %O'11');
; 0627 OUTSTR (1, UPLIT (%ASCIZ'GSD RECORD, LENGTH = '));
; 0628 OUTNUM (1, ..BYTECTR, 10, 0);
; 0629 END; !DEBUG
; 0630
; 0631 IF ((MODU_PTR = .FILE_PTR [FILE_MODU]) NEQ 0)
; 0632 THEN
; 0633 BEGIN
; 0634
; 0635 IF ((.MODU_PTR [MODU_FLAG_EGSD] NEQ 0) AND (.MODU_PTR [MODU_FLAG_ENDED] NEQ 0))
; 0636 THEN
; 0637 ERRMSG (0, 10,
; 0638 ROUTINE_NAME, 0, 0, 0, 0);
; 0639
; 0640 END;
; 0641
; 0642 CHAR = GET_BYTE (.BYTEPTR, .BYTECTR, .FILE_PTR); !UNUSED BYTE
; 0643
; 0644 DO
; 0645 BEGIN
; 0646 R50VAL = 0;
; 0647 R50VAL<16, 16> = GET_WORD (.BYTEPTR, .BYTECTR, .FILE_PTR);
; 0648 R50VAL<0, 16> = GET_WORD (.BYTEPTR, .BYTECTR, .FILE_PTR);
; 0649 R50TOA (.R50VAL, ASCVAL [0]);
; 0650 FLAGS = GET_BYTE (.BYTEPTR, .BYTECTR, .FILE_PTR);
; 0651 ETYPE = GET_BYTE (.BYTEPTR, .BYTECTR, .FILE_PTR);
; 0652 VALUE = GET_WORD (.BYTEPTR, .BYTECTR, .FILE_PTR);
; 0653
; 0654 CASE .ETYPE FROM 0 TO 7 OF
; 0655 SET
; 0656
; 0657 [0] :
; 0658 GSD_MNAME (ASCVAL [0], .FLAGS, .VALUE, .FILE_PTR);
; 0659
; 0660 [1] :
; 0661 GSD_CNAME (ASCVAL [0], .FLAGS, .VALUE, .FILE_PTR);
; 0662
; 0663 [2] :
; 0664 GSD_ISN (ASCVAL [0], .FLAGS, .VALUE, .FILE_PTR);
; 0665
; 0666 [3] :
; 0667 GSD_TRA (ASCVAL [0], .FLAGS, .VALUE, .FILE_PTR);
; 0668
; 0669 [4] :
; 0670 GSD_GSN (ASCVAL [0], .FLAGS, .VALUE, .FILE_PTR);
; 0671
; 0672 [5] :
RSTB 25-Jan-1983 10:20:03 TOPS-20 Bliss-36 2A(142) Page 25
X2.0 1-Jan-1983 15:04:19 NETPKG:<VNP36>RSTB.BLI.7 (8)
; 0673 GSD_PSN (ASCVAL [0], .FLAGS, .VALUE, .FILE_PTR);
; 0674
; 0675 [6] :
; 0676 GSD_IDENT (ASCVAL [0], .FLAGS, .VALUE, .FILE_PTR);
; 0677
; 0678 [7] :
; 0679 GSD_MAP (ASCVAL [0], .FLAGS, .VALUE, .FILE_PTR);
; 0680
; 0681 [OUTRANGE] :
; 0682 ERRMSG (0, 10, ROUTINE_NAME, FILE_PTR [FILE_NAME], 0, 0, 0);
; 0683 TES;
; 0684
; 0685 END
; 0686 UNTIL (..BYTECTR EQL 0);
; 0687
; 0688 END; !OF OBJ_GSD
P.AAG: BYTE (7)"O","B","J","_","G" ; OBJ_G 400471' 117 102 112 137 107
BYTE (7)"S","D",000,000,000 ; SD 400472' 123 104 000 000 000
P.AAH: BYTE (7)"G","S","D"," ","R" ; GSD R 400473' 107 123 104 040 122
BYTE (7)"E","C","O","R","D" ; ECORD 400474' 105 103 117 122 104
BYTE (7)","," ","L","E","N" ; , LEN 400475' 054 040 114 105 116
BYTE (7)"G","T","H"," ","=" ; GTH = 400476' 107 124 110 040 075
BYTE (7)" ",000,000,000,000 ; 400477' 040 000 000 000 000
ROUTINE_NAME= P.AAG ; 000000 400471'
OBJ_GSD:PUSH SP,AC0 ; SP,AC0 400500' 261 17 0 00 000000 0569
PUSH SP,AC10 ; SP,AC10 400501' 261 17 0 00 000010
PUSH SP,AC11 ; SP,AC11 400502' 261 17 0 00 000011
PUSH SP,AC12 ; SP,AC12 400503' 261 17 0 00 000012
PUSH SP,AC13 ; SP,AC13 400504' 261 17 0 00 000013
PUSH SP,AC14 ; SP,AC14 400505' 261 17 0 00 000014
PUSH SP,AC16 ; SP,AC16 400506' 261 17 0 00 000016
ADJSP SP,2 ; SP,2 400507' 105 17 0 00 000002
MOVE AC10,-12(SP) ; AC10,FILE_PTR 400510' 200 10 0 17 777766 0631
HRRZ AC1,14(AC10) ; MODU_PTR,14(AC10) 400511' 550 01 0 10 000014
JUMPE AC1,L.27 ; MODU_PTR,L.27 400512' 322 01 0 00 400530'
LDB AC0,C.13 ; AC0,[POINT 1,5(MODU_PTR),1] <34,1> 400513' 135 00 0 00 400730' 0635
JUMPE AC0,L.27 ; AC0,L.27 400514' 322 00 0 00 400530'
LDB AC0,C.14 ; AC0,[POINT 1,6(MODU_PTR),19] <16,1> 400515' 135 00 0 00 400731'
JUMPE AC0,L.27 ; AC0,L.27 400516' 322 00 0 00 400530'
PUSH SP,C.4 ; SP,[0] 400517' 261 17 0 00 400203' 0637
PUSH SP,C.5 ; SP,[12] 400520' 261 17 0 00 400204'
PUSH SP,C.17 ; SP,[0,,ROUTINE_NAME] 400521' 261 17 0 00 400734'
PUSH SP,C.4 ; SP,[0] 400522' 261 17 0 00 400203'
PUSH SP,C.4 ; SP,[0] 400523' 261 17 0 00 400203'
PUSH SP,C.4 ; SP,[0] 400524' 261 17 0 00 400203'
PUSH SP,C.4 ; SP,[0] 400525' 261 17 0 00 400203'
RSTB 25-Jan-1983 10:20:03 TOPS-20 Bliss-36 2A(142) Page 26
X2.0 1-Jan-1983 15:04:19 NETPKG:<VNP36>RSTB.BLI.7 (8)
PUSHJ SP,ERRMSG ; SP,ERRMSG 400526' 260 17 0 00 000000*
ADJSP SP,-7 ; SP,-7 400527' 105 17 0 00 777771
L.27: MOVE AC0,-14(SP) ; AC0,BYTEPTR 400530' 200 00 0 17 777764 0642
PUSH SP,AC0 ; SP,AC0 400531' 261 17 0 00 000000
MOVE AC16,-14(SP) ; AC16,BYTECTR 400532' 200 16 0 17 777764
PUSH SP,AC16 ; SP,AC16 400533' 261 17 0 00 000016
PUSH SP,AC10 ; SP,AC10 400534' 261 17 0 00 000010
PUSHJ SP,GET_BYTE ; SP,GET_BYTE 400535' 260 17 0 00 400403'
L.28: SETZ AC12, ; R50VAL, 400536' 400 12 0 00 000000 0646
MOVEM AC0,-2(SP) ; AC0,-2(SP) 400537' 202 00 0 17 777776 0647
MOVEM AC16,-1(SP) ; AC16,-1(SP) 400540' 202 16 0 17 777777
MOVEM AC10,0(SP) ; AC10,0(SP) 400541' 202 10 0 17 000000
PUSHJ SP,GET_WORD ; SP,GET_WORD 400542' 260 17 0 00 400434'
DPB AC1,C.15 ; AC1,[POINT 16,R50VAL,19] <16,16> 400543' 137 01 0 00 400732'
MOVEM AC0,-2(SP) ; AC0,-2(SP) 400544' 202 00 0 17 777776 0648
MOVEM AC16,-1(SP) ; AC16,-1(SP) 400545' 202 16 0 17 777777
MOVEM AC10,0(SP) ; AC10,0(SP) 400546' 202 10 0 17 000000
PUSHJ SP,GET_WORD ; SP,GET_WORD 400547' 260 17 0 00 400434'
DPB AC1,C.16 ; AC1,[POINT 16,R50VAL,35] <0,16> 400550' 137 01 0 00 400733'
MOVEM AC12,0(SP) ; R50VAL,0(SP) 400551' 202 12 0 17 000000 0649
MOVEI AC1,-4(SP) ; AC1,ASCVAL 400552' 201 01 0 17 777774
PUSH SP,AC1 ; SP,AC1 400553' 261 17 0 00 000001
PUSHJ SP,R50TOA ; SP,R50TOA 400554' 260 17 0 00 000000*
MOVEM AC0,-2(SP) ; AC0,-2(SP) 400555' 202 00 0 17 777776 0650
MOVEM AC16,-1(SP) ; AC16,-1(SP) 400556' 202 16 0 17 777777
MOVEM AC10,0(SP) ; AC10,0(SP) 400557' 202 10 0 17 000000
PUSHJ SP,GET_BYTE ; SP,GET_BYTE 400560' 260 17 0 00 400403'
MOVE AC14,AC1 ; FLAGS,AC1 400561' 200 14 0 00 000001
MOVEM AC0,-2(SP) ; AC0,-2(SP) 400562' 202 00 0 17 777776 0651
MOVEM AC16,-1(SP) ; AC16,-1(SP) 400563' 202 16 0 17 777777
MOVEM AC10,0(SP) ; AC10,0(SP) 400564' 202 10 0 17 000000
PUSHJ SP,GET_BYTE ; SP,GET_BYTE 400565' 260 17 0 00 400403'
MOVE AC11,AC1 ; ETYPE,AC1 400566' 200 11 0 00 000001
MOVEM AC0,-2(SP) ; AC0,-2(SP) 400567' 202 00 0 17 777776 0652
MOVEM AC16,-1(SP) ; AC16,-1(SP) 400570' 202 16 0 17 777777
MOVEM AC10,0(SP) ; AC10,0(SP) 400571' 202 10 0 17 000000
PUSHJ SP,GET_WORD ; SP,GET_WORD 400572' 260 17 0 00 400434'
MOVE AC13,AC1 ; VALUE,AC1 400573' 200 13 0 00 000001
JUMPL AC11,L.30 ; ETYPE,L.30 400574' 321 11 0 00 400610' 0654
CAIGE AC11,10 ; ETYPE,10 400575' 305 11 0 00 000010
JRST L.29(AC11) ; L.29(ETYPE) 400576' 254 00 0 11 400600'
JRST L.30 ; L.30 400577' 254 00 0 00 400610'
L.29: JRST L.31 ; L.31 400600' 254 00 0 00 400624'
JRST L.32 ; L.32 400601' 254 00 0 00 400633'
JRST L.33 ; L.33 400602' 254 00 0 00 400642'
JRST L.34 ; L.34 400603' 254 00 0 00 400651'
JRST L.35 ; L.35 400604' 254 00 0 00 400660'
JRST L.36 ; L.36 400605' 254 00 0 00 400667'
JRST L.37 ; L.37 400606' 254 00 0 00 400676'
JRST L.38 ; L.38 400607' 254 00 0 00 400705'
L.30: SETZM 0(SP) ; 0(SP) 400610' 402 00 0 17 000000 0682
PUSH SP,C.5 ; SP,[12] 400611' 261 17 0 00 400204'
RSTB 25-Jan-1983 10:20:03 TOPS-20 Bliss-36 2A(142) Page 27
X2.0 1-Jan-1983 15:04:19 NETPKG:<VNP36>RSTB.BLI.7 (8)
PUSH SP,C.17 ; SP,[0,,ROUTINE_NAME] 400612' 261 17 0 00 400734'
MOVE AC1,AC10 ; AC1,AC10 400613' 200 01 0 00 000010
ADDI AC1,2 ; AC1,2 400614' 271 01 0 00 000002
PUSH SP,AC1 ; SP,AC1 400615' 261 17 0 00 000001
PUSH SP,C.4 ; SP,[0] 400616' 261 17 0 00 400203'
PUSH SP,C.4 ; SP,[0] 400617' 261 17 0 00 400203'
PUSH SP,C.4 ; SP,[0] 400620' 261 17 0 00 400203'
PUSHJ SP,ERRMSG ; SP,ERRMSG 400621' 260 17 0 00 000000*
ADJSP SP,-2 ; SP,-2 400622' 105 17 0 00 777776
JRST L.39 ; L.39 400623' 254 00 0 00 400713' 0654
L.31: MOVEI AC1,-5(SP) ; AC1,ASCVAL 400624' 201 01 0 17 777773 0658
PUSH SP,AC1 ; SP,AC1 400625' 261 17 0 00 000001
PUSH SP,AC14 ; SP,FLAGS 400626' 261 17 0 00 000014
PUSH SP,AC13 ; SP,VALUE 400627' 261 17 0 00 000013
PUSH SP,AC10 ; SP,AC10 400630' 261 17 0 00 000010
PUSHJ SP,GSD_MNAME ; SP,GSD_MNAME 400631' 260 17 0 00 000000V
JRST L.39 ; L.39 400632' 254 00 0 00 400713' 0654
L.32: MOVEI AC1,-5(SP) ; AC1,ASCVAL 400633' 201 01 0 17 777773 0661
PUSH SP,AC1 ; SP,AC1 400634' 261 17 0 00 000001
PUSH SP,AC14 ; SP,FLAGS 400635' 261 17 0 00 000014
PUSH SP,AC13 ; SP,VALUE 400636' 261 17 0 00 000013
PUSH SP,AC10 ; SP,AC10 400637' 261 17 0 00 000010
PUSHJ SP,GSD_CNAME ; SP,GSD_CNAME 400640' 260 17 0 00 000000V
JRST L.39 ; L.39 400641' 254 00 0 00 400713' 0654
L.33: MOVEI AC1,-5(SP) ; AC1,ASCVAL 400642' 201 01 0 17 777773 0664
PUSH SP,AC1 ; SP,AC1 400643' 261 17 0 00 000001
PUSH SP,AC14 ; SP,FLAGS 400644' 261 17 0 00 000014
PUSH SP,AC13 ; SP,VALUE 400645' 261 17 0 00 000013
PUSH SP,AC10 ; SP,AC10 400646' 261 17 0 00 000010
PUSHJ SP,GSD_ISN ; SP,GSD_ISN 400647' 260 17 0 00 000000V
JRST L.39 ; L.39 400650' 254 00 0 00 400713' 0654
L.34: MOVEI AC1,-5(SP) ; AC1,ASCVAL 400651' 201 01 0 17 777773 0667
PUSH SP,AC1 ; SP,AC1 400652' 261 17 0 00 000001
PUSH SP,AC14 ; SP,FLAGS 400653' 261 17 0 00 000014
PUSH SP,AC13 ; SP,VALUE 400654' 261 17 0 00 000013
PUSH SP,AC10 ; SP,AC10 400655' 261 17 0 00 000010
PUSHJ SP,GSD_TRA ; SP,GSD_TRA 400656' 260 17 0 00 000000V
JRST L.39 ; L.39 400657' 254 00 0 00 400713' 0654
L.35: MOVEI AC1,-5(SP) ; AC1,ASCVAL 400660' 201 01 0 17 777773 0670
PUSH SP,AC1 ; SP,AC1 400661' 261 17 0 00 000001
PUSH SP,AC14 ; SP,FLAGS 400662' 261 17 0 00 000014
PUSH SP,AC13 ; SP,VALUE 400663' 261 17 0 00 000013
PUSH SP,AC10 ; SP,AC10 400664' 261 17 0 00 000010
PUSHJ SP,GSD_GSN ; SP,GSD_GSN 400665' 260 17 0 00 000000V
JRST L.39 ; L.39 400666' 254 00 0 00 400713' 0654
L.36: MOVEI AC1,-5(SP) ; AC1,ASCVAL 400667' 201 01 0 17 777773 0673
PUSH SP,AC1 ; SP,AC1 400670' 261 17 0 00 000001
PUSH SP,AC14 ; SP,FLAGS 400671' 261 17 0 00 000014
PUSH SP,AC13 ; SP,VALUE 400672' 261 17 0 00 000013
PUSH SP,AC10 ; SP,AC10 400673' 261 17 0 00 000010
PUSHJ SP,GSD_PSN ; SP,GSD_PSN 400674' 260 17 0 00 000000V
JRST L.39 ; L.39 400675' 254 00 0 00 400713' 0654
RSTB 25-Jan-1983 10:20:03 TOPS-20 Bliss-36 2A(142) Page 28
X2.0 1-Jan-1983 15:04:19 NETPKG:<VNP36>RSTB.BLI.7 (8)
L.37: MOVEI AC1,-5(SP) ; AC1,ASCVAL 400676' 201 01 0 17 777773 0676
PUSH SP,AC1 ; SP,AC1 400677' 261 17 0 00 000001
PUSH SP,AC14 ; SP,FLAGS 400700' 261 17 0 00 000014
PUSH SP,AC13 ; SP,VALUE 400701' 261 17 0 00 000013
PUSH SP,AC10 ; SP,AC10 400702' 261 17 0 00 000010
PUSHJ SP,GSD_IDENT ; SP,GSD_IDENT 400703' 260 17 0 00 000000V
JRST L.39 ; L.39 400704' 254 00 0 00 400713' 0654
L.38: MOVEI AC1,-5(SP) ; AC1,ASCVAL 400705' 201 01 0 17 777773 0679
PUSH SP,AC1 ; SP,AC1 400706' 261 17 0 00 000001
PUSH SP,AC14 ; SP,FLAGS 400707' 261 17 0 00 000014
PUSH SP,AC13 ; SP,VALUE 400710' 261 17 0 00 000013
PUSH SP,AC10 ; SP,AC10 400711' 261 17 0 00 000010
PUSHJ SP,GSD_MAP ; SP,GSD_MAP 400712' 260 17 0 00 000000V
L.39: ADJSP SP,-5 ; SP,-5 400713' 105 17 0 00 777773 0645
SKIPE 0(AC16) ; 0(AC16) 400714' 332 00 0 16 000000 0686
JRST L.28 ; L.28 400715' 254 00 0 00 400536' 0644
ADJSP SP,-3 ; SP,-3 400716' 105 17 0 00 777775 0605
ADJSP SP,-2 ; SP,-2 400717' 105 17 0 00 777776 0569
POP SP,AC16 ; SP,AC16 400720' 262 17 0 00 000016
POP SP,AC14 ; SP,AC14 400721' 262 17 0 00 000014
POP SP,AC13 ; SP,AC13 400722' 262 17 0 00 000013
POP SP,AC12 ; SP,AC12 400723' 262 17 0 00 000012
POP SP,AC11 ; SP,AC11 400724' 262 17 0 00 000011
POP SP,AC10 ; SP,AC10 400725' 262 17 0 00 000010
POP SP,AC0 ; SP,AC0 400726' 262 17 0 00 000000
POPJ SP, ; SP, 400727' 263 17 0 00 000000
C.13: POINT 1,5(AC1),1 ; 1,5(MODU_PTR),1 400730' 42 01 0 01 000005
C.14: POINT 1,6(AC1),19 ; 1,6(MODU_PTR),19 400731' 20 01 0 01 000006
C.15: POINT 16,AC12,19 ; 16,R50VAL,19 400732' 20 20 0 00 000012
C.16: POINT 16,AC12,35 ; 16,R50VAL,35 400733' 00 20 0 00 000012
C.17: XWD 0,ROUTINE_NAME ; 0,ROUTINE_NAME 400734' 000000 400471'
; Routine Size: 157 words
RSTB 25-Jan-1983 10:20:03 TOPS-20 Bliss-36 2A(142) Page 29
X2.0 1-Jan-1983 15:04:19 NETPKG:<VNP36>RSTB.BLI.7 (9)
; 0689 ROUTINE OBJ_END_GSD (BYTEPTR, BYTECTR, FILE_PTR) : NOVALUE = !PROCESS END GSD RECORD
; 0690
; 0691 !++
; 0692 ! FUNCTIONAL DESCRIPTION:
; 0693 !
; 0694 ! PROCESS THE END GSD RECORD.
; 0695 !
; 0696 ! FORMAL PARAMETERS:
; 0697 !
; 0698 ! BYTEPTR - POINTER TO THE BYTE POINTER
; 0699 ! BYTECTR - POINTER TO THE COUNTER CELL
; 0700 ! FILE_PTR - POINTER TO FILE BLOCK
; 0701 !
; 0702 ! IMPLICIT INPUTS:
; 0703 !
; 0704 ! NONE
; 0705 !
; 0706 ! IMPLICIT OUTPUTS:
; 0707 !
; 0708 ! SETS A FLAG WHICH FORBIDS ANY MORE GSD RECORDS IN
; 0709 ! THIS MODULE.
; 0710 !
; 0711 ! ROUTINE VALUE:
; 0712 !
; 0713 ! NONE
; 0714 !
; 0715 ! SIDE EFFECTS
; 0716 !
; 0717 ! NONE
; 0718 !
; 0719 !--
; 0720
; 0721 BEGIN
; 0722
; 0723 BIND
; 0724 ROUTINE_NAME = UPLIT (%ASCIZ'OBJ_END_GSD');
; 0725
; 0726 MAP
; 0727 FILE_PTR : REF FILE_BLOCK;
; 0728
; 0729 LOCAL
; 0730 MODU_PTR : REF MODU_BLOCK;
; 0731
; 0732 IF (DEBUG GEQ 1)
; 0733 THEN
; 0734 BEGIN
; 0735 PCRLF (1);
; 0736 OUTPUT (1, %O'11');
; 0737 OUTSTR (1, UPLIT (%ASCIZ'END GSD RECORD, LENGTH = '));
; 0738 OUTNUM (1, ..BYTECTR, 10, 0);
; 0739 END; !DEBUG
; 0740
RSTB 25-Jan-1983 10:20:03 TOPS-20 Bliss-36 2A(142) Page 30
X2.0 1-Jan-1983 15:04:19 NETPKG:<VNP36>RSTB.BLI.7 (9)
; 0741 IF ((MODU_PTR = .FILE_PTR [FILE_MODU]) EQL 0)
; 0742 THEN
; 0743 ERRMSG (0, 10, ROUTINE_NAME, FILE_PTR [FILE_NAME], 0,
; 0744 0, 0)
; 0745 ELSE
; 0746 BEGIN
; 0747
; 0748 IF (.MODU_PTR [MODU_FLAG_EGSD] NEQ 0)
; 0749 THEN
; 0750 ERRMSG (0, 10, ROUTINE_NAME, FILE_PTR [FILE_NAME], 0, 0, 0)
; 0751 ELSE
; 0752 BEGIN
; 0753 MODU_PTR [MODU_FLAG_EGSD] = 1;
; 0754 END;
; 0755
; 0756 END;
; 0757
; 0758 END; !OF OBJ_END_GSD
P.AAI: BYTE (7)"O","B","J","_","E" ; OBJ_E 400735' 117 102 112 137 105
BYTE (7)"N","D","_","G","S" ; ND_GS 400736' 116 104 137 107 123
BYTE (7)"D",000,000,000,000 ; D 400737' 104 000 000 000 000
P.AAJ: BYTE (7)"E","N","D"," ","G" ; END G 400740' 105 116 104 040 107
BYTE (7)"S","D"," ","R","E" ; SD RE 400741' 123 104 040 122 105
BYTE (7)"C","O","R","D","," ; CORD, 400742' 103 117 122 104 054
BYTE (7)" ","L","E","N","G" ; LENG 400743' 040 114 105 116 107
BYTE (7)"T","H"," ","="," " ; TH = 400744' 124 110 040 075 040
BYTE (7)000,000,000,000,000 ; 400745' 000 000 000 000 000
ROUTINE_NAME= P.AAI ; 000000 400735'
OBJ_END_GSD:
PUSH SP,AC0 ; SP,AC0 400746' 261 17 0 00 000000 0689
PUSH SP,AC10 ; SP,AC10 400747' 261 17 0 00 000010
MOVE AC0,-3(SP) ; AC0,FILE_PTR 400750' 200 00 0 17 777775 0741
MOVE AC1,AC0 ; AC1,AC0 400751' 200 01 0 00 000000
HRRZ AC10,14(AC1) ; MODU_PTR,14(AC1) 400752' 550 10 0 01 000014
JUMPN AC10,L.40 ; MODU_PTR,L.40 400753' 326 10 0 00 400763'
PUSH SP,C.4 ; SP,[0] 400754' 261 17 0 00 400203' 0743
PUSH SP,C.5 ; SP,[12] 400755' 261 17 0 00 400204'
PUSH SP,C.19 ; SP,[0,,ROUTINE_NAME] 400756' 261 17 0 00 401006'
MOVE AC1,AC0 ; AC1,AC0 400757' 200 01 0 00 000000
ADDI AC1,2 ; AC1,2 400760' 271 01 0 00 000002
PUSH SP,AC1 ; SP,AC1 400761' 261 17 0 00 000001
JRST L.41 ; L.41 400762' 254 00 0 00 400772'
L.40: LDB AC1,C.18 ; AC1,[POINT 1,5(MODU_PTR),1] <34,1> 400763' 135 01 0 00 401005' 0748
JUMPE AC1,L.42 ; AC1,L.42 400764' 322 01 0 00 401000'
PUSH SP,C.4 ; SP,[0] 400765' 261 17 0 00 400203' 0750
PUSH SP,C.5 ; SP,[12] 400766' 261 17 0 00 400204'
RSTB 25-Jan-1983 10:20:03 TOPS-20 Bliss-36 2A(142) Page 31
X2.0 1-Jan-1983 15:04:19 NETPKG:<VNP36>RSTB.BLI.7 (9)
PUSH SP,C.19 ; SP,[0,,ROUTINE_NAME] 400767' 261 17 0 00 401006'
ADDI AC0,2 ; AC0,2 400770' 271 00 0 00 000002
PUSH SP,AC0 ; SP,AC0 400771' 261 17 0 00 000000
L.41: PUSH SP,C.4 ; SP,[0] 400772' 261 17 0 00 400203'
PUSH SP,C.4 ; SP,[0] 400773' 261 17 0 00 400203'
PUSH SP,C.4 ; SP,[0] 400774' 261 17 0 00 400203'
PUSHJ SP,ERRMSG ; SP,ERRMSG 400775' 260 17 0 00 000000*
ADJSP SP,-7 ; SP,-7 400776' 105 17 0 00 777771
JRST L.43 ; L.43 400777' 254 00 0 00 401002' 0748
L.42: MOVSI AC0,200000 ; AC0,200000 401000' 205 00 0 00 200000 0753
IORM AC0,5(AC10) ; AC0,5(MODU_PTR) 401001' 436 00 0 10 000005
L.43: POP SP,AC10 ; SP,AC10 401002' 262 17 0 00 000010 0689
POP SP,AC0 ; SP,AC0 401003' 262 17 0 00 000000
POPJ SP, ; SP, 401004' 263 17 0 00 000000
C.18: POINT 1,5(AC10),1 ; 1,5(MODU_PTR),1 401005' 42 01 0 10 000005
C.19: XWD 0,ROUTINE_NAME ; 0,ROUTINE_NAME 401006' 000000 400735'
; Routine Size: 33 words
RSTB 25-Jan-1983 10:20:03 TOPS-20 Bliss-36 2A(142) Page 32
X2.0 1-Jan-1983 15:04:19 NETPKG:<VNP36>RSTB.BLI.7 (10)
; 0759 ROUTINE OBJ_ISD (BYTEPTR, BYTECTR, FILE_PTR) : NOVALUE = !PROCESS ISD RECORD
; 0760
; 0761 !++
; 0762 ! FUNCTIONAL DESCRIPTION:
; 0763 !
; 0764 ! PROCESS INTERNAL SYMBOL DIRECTORY RECORD.
; 0765 !
; 0766 ! FORMAL PARAMETERS:
; 0767 !
; 0768 ! BYTEPTR - POINTER TO THE BYTE POINTER
; 0769 ! BYTECTR - POINTER TO THE COUNTER CELL
; 0770 ! FILE_PTR - POINTER TO OBJECT FILE BLOCK
; 0771 !
; 0772 ! IMPLICIT INPUTS:
; 0773 !
; 0774 ! THE OBJECT RECORD POINTED TO
; 0775 !
; 0776 ! IMPLICIT OUTPUTS:
; 0777 !
; 0778 ! ADDS THE INTERNAL SYMBOLS TO THE DATA STRUCTURE
; 0779 !
; 0780 ! ROUTINE VALUE:
; 0781 !
; 0782 ! NONE
; 0783 !
; 0784 ! SIDE EFFECTS
; 0785 !
; 0786 ! NONE
; 0787 !
; 0788 !--
; 0789
; 0790 BEGIN
; 0791
; 0792 BIND
; 0793 ROUTINE_NAME = UPLIT (%ASCIZ'OBJ_ISD');
; 0794
; 0795 IF (DEBUG GEQ 1)
; 0796 THEN
; 0797 BEGIN
; 0798 PCRLF (1);
; 0799 OUTPUT (1, %O'11');
; 0800 OUTSTR (1, UPLIT (%ASCIZ'INTERNAL SYMBOL DIRECTORY RECORD, LENGTH = '));
; 0801 OUTNUM (1, ..BYTECTR, 10, 0);
; 0802 END; !DEBUG
; 0803
; 0804 ERRMSG (0, 12, ROUTINE_NAME, 0, 0, 0, 0);
; 0805 END; !OF OBJ_ISD
P.AAK: BYTE (7)"O","B","J","_","I" ; OBJ_I 401007' 117 102 112 137 111
BYTE (7)"S","D",000,000,000 ; SD 401010' 123 104 000 000 000
P.AAL: BYTE (7)"I","N","T","E","R" ; INTER 401011' 111 116 124 105 122
RSTB 25-Jan-1983 10:20:03 TOPS-20 Bliss-36 2A(142) Page 33
X2.0 1-Jan-1983 15:04:19 NETPKG:<VNP36>RSTB.BLI.7 (10)
BYTE (7)"N","A","L"," ","S" ; NAL S 401012' 116 101 114 040 123
BYTE (7)"Y","M","B","O","L" ; YMBOL 401013' 131 115 102 117 114
BYTE (7)" ","D","I","R","E" ; DIRE 401014' 040 104 111 122 105
BYTE (7)"C","T","O","R","Y" ; CTORY 401015' 103 124 117 122 131
BYTE (7)" ","R","E","C","O" ; RECO 401016' 040 122 105 103 117
BYTE (7)"R","D",","," ","L" ; RD, L 401017' 122 104 054 040 114
BYTE (7)"E","N","G","T","H" ; ENGTH 401020' 105 116 107 124 110
BYTE (7)" ","="," ",000,000 ; = 401021' 040 075 040 000 000
ROUTINE_NAME= P.AAK ; 000000 401007'
OBJ_ISD:PUSH SP,C.4 ; SP,[0] 401022' 261 17 0 00 400203' 0804
PUSH SP,C.20 ; SP,[14] 401023' 261 17 0 00 401034'
PUSH SP,C.21 ; SP,[0,,ROUTINE_NAME] 401024' 261 17 0 00 401035'
PUSH SP,C.4 ; SP,[0] 401025' 261 17 0 00 400203'
PUSH SP,C.4 ; SP,[0] 401026' 261 17 0 00 400203'
PUSH SP,C.4 ; SP,[0] 401027' 261 17 0 00 400203'
PUSH SP,C.4 ; SP,[0] 401030' 261 17 0 00 400203'
PUSHJ SP,ERRMSG ; SP,ERRMSG 401031' 260 17 0 00 000000*
ADJSP SP,-7 ; SP,-7 401032' 105 17 0 00 777771 0790
POPJ SP, ; SP, 401033' 263 17 0 00 000000 0759
C.20: EXP 14 ; 14 401034' 000000 000014
C.21: XWD 0,ROUTINE_NAME ; 0,ROUTINE_NAME 401035' 000000 401007'
; Routine Size: 12 words
RSTB 25-Jan-1983 10:20:03 TOPS-20 Bliss-36 2A(142) Page 34
X2.0 1-Jan-1983 15:04:19 NETPKG:<VNP36>RSTB.BLI.7 (11)
; 0806 ROUTINE OBJ_EOM (BYTEPTR, BYTECTR, FILE_PTR) : NOVALUE = !PROCESS END OF MODULE RECORD
; 0807
; 0808 !++
; 0809 ! FUNCTIONAL DESCRIPTION:
; 0810 !
; 0811 ! PROCESS THE END MODULE RECORD.
; 0812 !
; 0813 ! FORMAL PARAMETERS:
; 0814 !
; 0815 ! BYTEPTR - POINTER TO THE BYTE POINTER
; 0816 ! BYTECTR - POINTER TO THE COUNTER CELL
; 0817 ! FILE_PTR - POINTER TO THE FILE BLOCK FOR THE OBJECT FILE
; 0818 !
; 0819 ! IMPLICIT INPUTS:
; 0820 !
; 0821 ! THE OBJECT RECORD POINTED TO
; 0822 !
; 0823 ! IMPLICIT OUTPUTS:
; 0824 !
; 0825 ! SETS A FLAG TO INDICATE THAT WE ARE BETWEEN MODULES.
; 0826 ! AN EOF IS OK IN THIS CONTEXT.
; 0827 !
; 0828 ! ROUTINE VALUE:
; 0829 !
; 0830 ! NONE
; 0831 !
; 0832 ! SIDE EFFECTS
; 0833 !
; 0834 ! NONE
; 0835 !
; 0836 !--
; 0837
; 0838 BEGIN
; 0839
; 0840 BIND
; 0841 ROUTINE_NAME = UPLIT (%ASCIZ'OBJ_EOM');
; 0842
; 0843 MAP
; 0844 FILE_PTR : REF FILE_BLOCK;
; 0845
; 0846 LOCAL
; 0847 MODU_PTR : REF MODU_BLOCK;
; 0848
; 0849 IF (DEBUG GEQ 1)
; 0850 THEN
; 0851 BEGIN
; 0852 PCRLF (1);
; 0853 OUTPUT (1, %O'11');
; 0854 OUTSTR (1, UPLIT (%ASCIZ'END OF MODULE RECORD, LENGTH = '));
; 0855 OUTNUM (1, ..BYTECTR, 10, 0);
; 0856 END; !DEBUG
; 0857
RSTB 25-Jan-1983 10:20:03 TOPS-20 Bliss-36 2A(142) Page 35
X2.0 1-Jan-1983 15:04:19 NETPKG:<VNP36>RSTB.BLI.7 (11)
; 0858 IF ((MODU_PTR = .FILE_PTR [FILE_MODU]) EQL 0)
; 0859 THEN
; 0860 ERRMSG (0, 10, ROUTINE_NAME, FILE_PTR [FILE_NAME], 0,
; 0861 0, 0)
; 0862 ELSE
; 0863 BEGIN
; 0864
; 0865 IF ((.MODU_PTR [MODU_FLAG_EGSD] EQL 0) OR (.MODU_PTR [MODU_FLAG_ENDED] NEQ 0))
; 0866 THEN
; 0867 ERRMSG (0, 10,
; 0868 ROUTINE_NAME, FILE_PTR [FILE_NAME], 0, 0, 0)
; 0869 ELSE
; 0870 MODU_PTR [MODU_FLAG_ENDED] = 1;
; 0871
; 0872 END;
; 0873
; 0874 END; !OF OBJ_EOM
P.AAM: BYTE (7)"O","B","J","_","E" ; OBJ_E 401036' 117 102 112 137 105
BYTE (7)"O","M",000,000,000 ; OM 401037' 117 115 000 000 000
P.AAN: BYTE (7)"E","N","D"," ","O" ; END O 401040' 105 116 104 040 117
BYTE (7)"F"," ","M","O","D" ; F MOD 401041' 106 040 115 117 104
BYTE (7)"U","L","E"," ","R" ; ULE R 401042' 125 114 105 040 122
BYTE (7)"E","C","O","R","D" ; ECORD 401043' 105 103 117 122 104
BYTE (7)","," ","L","E","N" ; , LEN 401044' 054 040 114 105 116
BYTE (7)"G","T","H"," ","=" ; GTH = 401045' 107 124 110 040 075
BYTE (7)" ",000,000,000,000 ; 401046' 040 000 000 000 000
ROUTINE_NAME= P.AAM ; 000000 401036'
OBJ_EOM:PUSH SP,AC0 ; SP,AC0 401047' 261 17 0 00 000000 0806
PUSH SP,AC10 ; SP,AC10 401050' 261 17 0 00 000010
MOVE AC0,-3(SP) ; AC0,FILE_PTR 401051' 200 00 0 17 777775 0858
MOVE AC1,AC0 ; AC1,AC0 401052' 200 01 0 00 000000
HRRZ AC10,14(AC1) ; MODU_PTR,14(AC1) 401053' 550 10 0 01 000014
JUMPN AC10,L.44 ; MODU_PTR,L.44 401054' 326 10 0 00 401064'
PUSH SP,C.4 ; SP,[0] 401055' 261 17 0 00 400203' 0860
PUSH SP,C.5 ; SP,[12] 401056' 261 17 0 00 400204'
PUSH SP,C.23 ; SP,[0,,ROUTINE_NAME] 401057' 261 17 0 00 401111'
MOVE AC1,AC0 ; AC1,AC0 401060' 200 01 0 00 000000
ADDI AC1,2 ; AC1,2 401061' 271 01 0 00 000002
PUSH SP,AC1 ; SP,AC1 401062' 261 17 0 00 000001
JRST L.46 ; L.46 401063' 254 00 0 00 401075'
L.44: LDB AC1,C.18 ; AC1,[POINT 1,5(AC10),1] <34,1> 401064' 135 01 0 00 401005' 0865
JUMPE AC1,L.45 ; AC1,L.45 401065' 322 01 0 00 401070'
LDB AC1,C.22 ; AC1,[POINT 1,6(MODU_PTR),19] <16,1> 401066' 135 01 0 00 401110'
JUMPE AC1,L.47 ; AC1,L.47 401067' 322 01 0 00 401103'
L.45: PUSH SP,C.4 ; SP,[0] 401070' 261 17 0 00 400203' 0867
PUSH SP,C.5 ; SP,[12] 401071' 261 17 0 00 400204'
RSTB 25-Jan-1983 10:20:03 TOPS-20 Bliss-36 2A(142) Page 36
X2.0 1-Jan-1983 15:04:19 NETPKG:<VNP36>RSTB.BLI.7 (11)
PUSH SP,C.23 ; SP,[0,,ROUTINE_NAME] 401072' 261 17 0 00 401111'
ADDI AC0,2 ; AC0,2 401073' 271 00 0 00 000002 0868
PUSH SP,AC0 ; SP,AC0 401074' 261 17 0 00 000000
L.46: PUSH SP,C.4 ; SP,[0] 401075' 261 17 0 00 400203' 0867
PUSH SP,C.4 ; SP,[0] 401076' 261 17 0 00 400203'
PUSH SP,C.4 ; SP,[0] 401077' 261 17 0 00 400203'
PUSHJ SP,ERRMSG ; SP,ERRMSG 401100' 260 17 0 00 000000*
ADJSP SP,-7 ; SP,-7 401101' 105 17 0 00 777771
JRST L.48 ; L.48 401102' 254 00 0 00 401105' 0865
L.47: MOVEI AC0,200000 ; AC0,200000 401103' 201 00 0 00 200000 0870
IORM AC0,6(AC10) ; AC0,6(MODU_PTR) 401104' 436 00 0 10 000006
L.48: POP SP,AC10 ; SP,AC10 401105' 262 17 0 00 000010 0806
POP SP,AC0 ; SP,AC0 401106' 262 17 0 00 000000
POPJ SP, ; SP, 401107' 263 17 0 00 000000
C.22: POINT 1,6(AC10),19 ; 1,6(MODU_PTR),19 401110' 20 01 0 10 000006
C.23: XWD 0,ROUTINE_NAME ; 0,ROUTINE_NAME 401111' 000000 401036'
; Routine Size: 35 words
RSTB 25-Jan-1983 10:20:03 TOPS-20 Bliss-36 2A(142) Page 37
X2.0 1-Jan-1983 15:04:19 NETPKG:<VNP36>RSTB.BLI.7 (12)
; 0875 ROUTINE GSD_MNAME (ASCPTR, FLAGS, VALUE, FILE_PTR) : NOVALUE = !PROCESS MODULE NAME ENTRY
; 0876
; 0877 !++
; 0878 ! FUNCTIONAL DESCRIPTION:
; 0879 !
; 0880 ! PROCESS THE MODULE NAME ENTRY OF THE GSD RECORD
; 0881 !
; 0882 ! FORMAL PARAMETERS:
; 0883 !
; 0884 ! ASCPTR - POINTER TO NAME, IN ASCII
; 0885 ! FLAGS - THE FLAGS BYTE
; 0886 ! VALUE - THE VALUE WORD
; 0887 ! FILE_PTR - POINTER TO THE FILE BLOCK FOR THE OBJECT FILE
; 0888 !
; 0889 ! IMPLICIT INPUTS:
; 0890 !
; 0891 ! NONE
; 0892 !
; 0893 ! IMPLICIT OUTPUTS:
; 0894 !
; 0895 ! ADDS THE MODULE NAME TO THE DATA STRUCTURE
; 0896 !
; 0897 ! ROUTINE VALUE:
; 0898 !
; 0899 ! NONE
; 0900 !
; 0901 ! SIDE EFFECTS
; 0902 !
; 0903 ! OBTAINS SPACE FROM THE FREE LIST
; 0904 !
; 0905 !--
; 0906
; 0907 BEGIN
; 0908
; 0909 BIND
; 0910 ROUTINE_NAME = UPLIT (%ASCIZ'GSD_MNAME');
; 0911
; 0912 MAP
; 0913 FILE_PTR : REF FILE_BLOCK;
; 0914
; 0915 LOCAL
; 0916 MODU_PTR : REF MODU_BLOCK,
; 0917 FILE_ERROR;
; 0918
; 0919 IF (DEBUG GEQ 1)
; 0920 THEN
; 0921 BEGIN
; 0922 PCRLF (1);
; 0923 OUTPUT (1, %O'11');
; 0924 OUTPUT (1, %O'11');
; 0925 OUTSTR (1, UPLIT (%ASCIZ'MODULE NAME, NAME = '));
; 0926 OUTSTR (1, .ASCPTR);
RSTB 25-Jan-1983 10:20:03 TOPS-20 Bliss-36 2A(142) Page 38
X2.0 1-Jan-1983 15:04:19 NETPKG:<VNP36>RSTB.BLI.7 (12)
; 0927 OUTSTR (1, UPLIT (%ASCIZ', FLAGS = '));
; 0928 OUTNUM (1, .FLAGS, 8, 0);
; 0929 OUTSTR (1, UPLIT (%ASCIZ', VALUE = '));
; 0930 OUTNUM (1, .VALUE, 8, 0);
; 0931 END; !DEBUG
; 0932
; 0933 !
; 0934 FILE_ERROR = 0;
; 0935
; 0936 IF ((MODU_PTR = .FILE_PTR [FILE_MODU]) NEQ 0)
; 0937 THEN
; 0938 BEGIN
; 0939
; 0940 IF (.MODU_PTR [MODU_FLAG_ENDED] EQL 0)
; 0941 THEN
; 0942 BEGIN
; 0943 ERRMSG (0, 10, ROUTINE_NAME, FILE_PTR [FILE_NAME], 0, 0, 0);
; 0944 FILE_ERROR = -1;
; 0945 END
; 0946 ELSE
; 0947 BEGIN
; 0948 ERRMSG (0, 23, ROUTINE_NAME, FILE_PTR [FILE_NAME], 0, 0, 0);
; 0949 FILE_ERROR = -1;
; 0950 END;
; 0951
; 0952 END;
; 0953
; 0954 IF (.FILE_ERROR EQL 0)
; 0955 THEN
; 0956 BEGIN !THERE IS NOT ALREADY A MODULE BEING PROCESSED
; 0957
; 0958 IF ((MODU_PTR = GETBLK (MODU_TYP, MODU_LEN)) EQL 0)
; 0959 THEN
; 0960 ERRMSG (0, 1, ROUTINE_NAME, 0, 0, 0, 0)
; 0961 ELSE
; 0962 BEGIN !WE HAVE STORAGE FOR THE MODULE NAME
; 0963
; 0964 IF ((FILE_PTR [FILE_DOWN] = BLD_CHAIN (.FILE_PTR, .FILE_PTR [FILE_DOWN], .MODU_PTR)) EQL 0)
; 0965 THEN
; 0966 ERRMSG (0, 1, ROUTINE_NAME, 0, 0, 0, 0)
; 0967 ELSE
; 0968 BEGIN !WE HAVE STORAGE FOR THE CHAIN BLOCK
; 0969 CH$MOVE (LEN_MODU_NAME, CH$PTR (.ASCPTR), CH$PTR (MODU_PTR [MODU_NAME]));
; 0970 FILE_PTR [FILE_MODU] = .MODU_PTR;
; 0971 MODU_PTR [MODU_OBJ_FILE] = .FILE_PTR;
; 0972 MODU_PTR [MODU_SECTOR] = 0;
; 0973 END;
; 0974
; 0975 END;
; 0976
; 0977 END;
; 0978
RSTB 25-Jan-1983 10:20:03 TOPS-20 Bliss-36 2A(142) Page 39
X2.0 1-Jan-1983 15:04:19 NETPKG:<VNP36>RSTB.BLI.7 (12)
; 0979 END; !OF GSD_MNAME
P.AAO: BYTE (7)"G","S","D","_","M" ; GSD_M 401112' 107 123 104 137 115
BYTE (7)"N","A","M","E",000 ; NAME 401113' 116 101 115 105 000
P.AAP: BYTE (7)"M","O","D","U","L" ; MODUL 401114' 115 117 104 125 114
BYTE (7)"E"," ","N","A","M" ; E NAM 401115' 105 040 116 101 115
BYTE (7)"E",","," ","N","A" ; E, NA 401116' 105 054 040 116 101
BYTE (7)"M","E"," ","="," " ; ME = 401117' 115 105 040 075 040
BYTE (7)000,000,000,000,000 ; 401120' 000 000 000 000 000
P.AAQ: BYTE (7)","," ","F","L","A" ; , FLA 401121' 054 040 106 114 101
BYTE (7)"G","S"," ","="," " ; GS = 401122' 107 123 040 075 040
BYTE (7)000,000,000,000,000 ; 401123' 000 000 000 000 000
P.AAR: BYTE (7)","," ","V","A","L" ; , VAL 401124' 054 040 126 101 114
BYTE (7)"U","E"," ","="," " ; UE = 401125' 125 105 040 075 040
BYTE (7)000,000,000,000,000 ; 401126' 000 000 000 000 000
ROUTINE_NAME= P.AAO ; 000000 401112'
GSD_MNAME:
PUSH SP,AC0 ; SP,AC0 401127' 261 17 0 00 000000 0875
PUSH SP,AC10 ; SP,AC10 401130' 261 17 0 00 000010
PUSH SP,AC11 ; SP,AC11 401131' 261 17 0 00 000011
SETZ AC11, ; FILE_ERROR, 401132' 400 11 0 00 000000 0934
MOVE AC0,-4(SP) ; AC0,FILE_PTR 401133' 200 00 0 17 777774 0936
MOVE AC1,AC0 ; AC1,AC0 401134' 200 01 0 00 000000
HRRZ AC10,14(AC1) ; MODU_PTR,14(AC1) 401135' 550 10 0 01 000014
JUMPE AC10,L.51 ; MODU_PTR,L.51 401136' 322 10 0 00 401160'
SETO AC11, ; FILE_ERROR, 401137' 474 11 0 00 000000 0944
MOVE AC1,AC0 ; AC1,AC0 401140' 200 01 0 00 000000 0943
ADDI AC1,2 ; AC1,2 401141' 271 01 0 00 000002
LDB AC2,C.22 ; AC2,[POINT 1,6(AC10),19] <16,1> 401142' 135 02 0 00 401110' 0940
JUMPN AC2,L.49 ; AC2,L.49 401143' 326 02 0 00 401147'
PUSH SP,C.4 ; SP,[0] 401144' 261 17 0 00 400203' 0943
PUSH SP,C.5 ; SP,[12] 401145' 261 17 0 00 400204'
JRST L.50 ; L.50 401146' 254 00 0 00 401151'
L.49: PUSH SP,C.4 ; SP,[0] 401147' 261 17 0 00 400203' 0948
PUSH SP,C.25 ; SP,[27] 401150' 261 17 0 00 401236'
L.50: PUSH SP,C.26 ; SP,[0,,ROUTINE_NAME] 401151' 261 17 0 00 401237'
PUSH SP,AC1 ; SP,AC1 401152' 261 17 0 00 000001
PUSH SP,C.4 ; SP,[0] 401153' 261 17 0 00 400203'
PUSH SP,C.4 ; SP,[0] 401154' 261 17 0 00 400203'
PUSH SP,C.4 ; SP,[0] 401155' 261 17 0 00 400203'
PUSHJ SP,ERRMSG ; SP,ERRMSG 401156' 260 17 0 00 000000*
ADJSP SP,-7 ; SP,-7 401157' 105 17 0 00 777771 0938
L.51: JUMPN AC11,L.54 ; FILE_ERROR,L.54 401160' 326 11 0 00 401231' 0954
PUSH SP,C.27 ; SP,[6] 401161' 261 17 0 00 401240' 0958
PUSH SP,C.28 ; SP,[11] 401162' 261 17 0 00 401241'
PUSHJ SP,GETBLK ; SP,GETBLK 401163' 260 17 0 00 000000*
MOVE AC10,AC1 ; MODU_PTR,AC1 401164' 200 10 0 00 000001
RSTB 25-Jan-1983 10:20:03 TOPS-20 Bliss-36 2A(142) Page 40
X2.0 1-Jan-1983 15:04:19 NETPKG:<VNP36>RSTB.BLI.7 (12)
ADJSP SP,-2 ; SP,-2 401165' 105 17 0 00 777776
JUMPE AC10,L.52 ; MODU_PTR,L.52 401166' 322 10 0 00 401201'
PUSH SP,AC0 ; SP,AC0 401167' 261 17 0 00 000000 0964
MOVE AC2,AC0 ; AC2,AC0 401170' 200 02 0 00 000000
HLRZ AC1,13(AC2) ; AC1,13(AC2) 401171' 554 01 0 02 000013
PUSH SP,AC1 ; SP,AC1 401172' 261 17 0 00 000001
PUSH SP,AC10 ; SP,MODU_PTR 401173' 261 17 0 00 000010
PUSHJ SP,BLD_CHAIN ; SP,BLD_CHAIN 401174' 260 17 0 00 000000*
ADJSP SP,-3 ; SP,-3 401175' 105 17 0 00 777775
MOVE AC2,AC0 ; AC2,AC0 401176' 200 02 0 00 000000
HRLM AC1,13(AC2) ; AC1,13(AC2) 401177' 506 01 0 02 000013
JUMPN AC1,L.53 ; AC1,L.53 401200' 326 01 0 00 401213'
L.52: PUSH SP,C.4 ; SP,[0] 401201' 261 17 0 00 400203' 0966
PUSH SP,C.7 ; SP,[1] 401202' 261 17 0 00 400206'
PUSH SP,C.26 ; SP,[0,,ROUTINE_NAME] 401203' 261 17 0 00 401237'
PUSH SP,C.4 ; SP,[0] 401204' 261 17 0 00 400203'
PUSH SP,C.4 ; SP,[0] 401205' 261 17 0 00 400203'
PUSH SP,C.4 ; SP,[0] 401206' 261 17 0 00 400203'
PUSH SP,C.4 ; SP,[0] 401207' 261 17 0 00 400203'
PUSHJ SP,ERRMSG ; SP,ERRMSG 401210' 260 17 0 00 000000*
ADJSP SP,-7 ; SP,-7 401211' 105 17 0 00 777771
JRST L.54 ; L.54 401212' 254 00 0 00 401231' 0964
L.53: MOVE AC1,-7(SP) ; AC1,ASCPTR 401213' 200 01 0 17 777771 0969
MOVEI AC2,-1(AC1) ; AC2,-1(AC1) 401214' 201 02 0 01 777777
HRLI AC2,10700 ; AC2,10700 401215' 505 02 0 00 010700
MOVEI AC5,0(AC10) ; AC5,0(MODU_PTR) 401216' 201 05 0 10 000000
HRLI AC5,10700 ; AC5,10700 401217' 505 05 0 00 010700
MOVEI AC1,7 ; AC1,7 401220' 201 01 0 00 000007
MOVEI AC4,7 ; AC4,7 401221' 201 04 0 00 000007
EXTEND AC1,C.24 ; AC1,[MOVSLJ ] 401222' 123 01 0 00 401235'
JFCL ; 401223' 255 00 0 00 000000
MOVE AC1,AC0 ; AC1,AC0 401224' 200 01 0 00 000000 0970
HRRM AC10,14(AC1) ; MODU_PTR,14(AC1) 401225' 542 10 0 01 000014
HRLM AC0,6(AC10) ; AC0,6(MODU_PTR) 401226' 506 00 0 10 000006 0971
MOVEI AC0,177777 ; AC0,177777 401227' 201 00 0 00 177777 0972
ANDCAM AC0,6(AC10) ; AC0,6(MODU_PTR) 401230' 412 00 0 10 000006
L.54: POP SP,AC11 ; SP,AC11 401231' 262 17 0 00 000011 0875
POP SP,AC10 ; SP,AC10 401232' 262 17 0 00 000010
POP SP,AC0 ; SP,AC0 401233' 262 17 0 00 000000
POPJ SP, ; SP, 401234' 263 17 0 00 000000
C.24: MOVSLJ ; 401235' 016 00 0 00 000000
C.25: EXP 27 ; 27 401236' 000000 000027
C.26: XWD 0,ROUTINE_NAME ; 0,ROUTINE_NAME 401237' 000000 401112'
C.27: EXP 6 ; 6 401240' 000000 000006
C.28: EXP 11 ; 11 401241' 000000 000011
; Routine Size: 75 words
RSTB 25-Jan-1983 10:20:03 TOPS-20 Bliss-36 2A(142) Page 41
X2.0 1-Jan-1983 15:04:19 NETPKG:<VNP36>RSTB.BLI.7 (13)
; 0980 ROUTINE GSD_CNAME (ASCPTR, FLAGS, VALUE, FILE_PTR) : NOVALUE = !PROCESS CSECT NAME ENTRY
; 0981
; 0982 !++
; 0983 ! FUNCTIONAL DESCRIPTION:
; 0984 !
; 0985 ! PROCESS THE CSECT NAME ENTRY OF THE GSD RECORD
; 0986 ! THIS IS IMPLEMENTED BY CONVERTING THE CSECT INTO
; 0987 ! AN APPROPRIATE PSECT.
; 0988 !
; 0989 ! FORMAL PARAMETERS:
; 0990 !
; 0991 ! ASCPTR - POINTER TO NAME, IN ASCII
; 0992 ! FLAGS - THE FLAGS BYTE
; 0993 ! VALUE - THE VALUE WORD
; 0994 ! FILE_PTR - POINTER TO THE FILE BLOCK FOR THE OBJECT FILE
; 0995 !
; 0996 ! IMPLICIT INPUTS:
; 0997 !
; 0998 ! NONE
; 0999 !
; 1000 ! IMPLICIT OUTPUTS:
; 1001 !
; 1002 ! NONE
; 1003 !
; 1004 ! ROUTINE VALUE:
; 1005 !
; 1006 ! NONE
; 1007 !
; 1008 ! SIDE EFFECTS
; 1009 !
; 1010 ! CALLS GSD_PNAME
; 1011 !
; 1012 !--
; 1013
; 1014 BEGIN
; 1015
; 1016 BIND
; 1017 ROUTINE_NAME = UPLIT (%ASCIZ'GSD_CNAME');
; 1018
; 1019 MAP
; 1020 FILE_PTR : REF FILE_BLOCK;
; 1021
; 1022 LOCAL
; 1023 MODU_PTR : REF MODU_BLOCK;
; 1024
; 1025 IF (DEBUG GEQ 1)
; 1026 THEN
; 1027 BEGIN
; 1028 PCRLF (1);
; 1029 OUTPUT (1, %O'11');
; 1030 OUTPUT (1, %O'11');
; 1031 OUTSTR (1, UPLIT (%ASCIZ'CSECT NAME, NAME = '));
RSTB 25-Jan-1983 10:20:03 TOPS-20 Bliss-36 2A(142) Page 42
X2.0 1-Jan-1983 15:04:19 NETPKG:<VNP36>RSTB.BLI.7 (13)
; 1032 OUTSTR (1, .ASCPTR);
; 1033 OUTSTR (1, UPLIT (%ASCIZ', FLAGS = '));
; 1034 OUTNUM (1, .FLAGS, 8, 0);
; 1035 OUTSTR (1, UPLIT (%ASCIZ', VALUE = '));
; 1036 OUTNUM (1, .VALUE, 8, 0);
; 1037 END; !DEBUG
; 1038
; 1039 !
; 1040 ! TURN THE CSECT NAME ENTRY INTO A PSECT BY CALLING GSD_PNAME WITH
; 1041 ! THE APPROPRIATE ARGUMENTS.
; 1042 !
; 1043
; 1044 IF (CH$EQL (LEN_PSECT_NAME, CH$PTR (.ASCPTR), LEN_PSECT_NAME,
; 1045 CH$PTR (UPLIT (%ASCIZ' '
; 1046 ))))
; 1047 THEN
; 1048 BEGIN !BLANK CSECT, MAKE LOCAL PSECT
; 1049 GSD_PSN (.ASCPTR, (1^PSECT_FLG_REL), .VALUE, .FILE_PTR);
; 1050 END
; 1051 ELSE
; 1052
; 1053 IF (CH$EQL (LEN_PSECT_NAME, CH$PTR (.ASCPTR), LEN_PSECT_NAME,
; 1054 CH$PTR (UPLIT (%ASCIZ'. ABS.'
; 1055 ))))
; 1056 THEN
; 1057 BEGIN !ASECT, MAKE AN ABSOLUTE PSECT
; 1058 GSD_PSN (UPLIT (%ASCIZ'. ABS.'), ((1^PSECT_FLG_GBL) + (1^PSECT_FLG_OVR)), .VALUE, .FILE_PTR);
; 1059 END
; 1060 ELSE
; 1061 BEGIN !NAMED CSECT, MAKE A GLOBAL PSECT
; 1062 GSD_PSN (.ASCPTR, ((1^PSECT_FLG_GBL) + (1^PSECT_FLG_REL) + (1^PSECT_FLG_OVR)), .VALUE, .FILE_PTR);
; 1063 END;
; 1064
; 1065 END; !OF GSD_CNAME
P.AAS: BYTE (7)"G","S","D","_","C" ; GSD_C 401242' 107 123 104 137 103
BYTE (7)"N","A","M","E",000 ; NAME 401243' 116 101 115 105 000
P.AAT: BYTE (7)"C","S","E","C","T" ; CSECT 401244' 103 123 105 103 124
BYTE (7)" ","N","A","M","E" ; NAME 401245' 040 116 101 115 105
BYTE (7)","," ","N","A","M" ; , NAM 401246' 054 040 116 101 115
BYTE (7)"E"," ","="," ",000 ; E = 401247' 105 040 075 040 000
P.AAU: BYTE (7)","," ","F","L","A" ; , FLA 401250' 054 040 106 114 101
BYTE (7)"G","S"," ","="," " ; GS = 401251' 107 123 040 075 040
BYTE (7)000,000,000,000,000 ; 401252' 000 000 000 000 000
P.AAV: BYTE (7)","," ","V","A","L" ; , VAL 401253' 054 040 126 101 114
BYTE (7)"U","E"," ","="," " ; UE = 401254' 125 105 040 075 040
BYTE (7)000,000,000,000,000 ; 401255' 000 000 000 000 000
P.AAW: BYTE (7)" "," "," "," "," " ; 401256' 040 040 040 040 040
BYTE (7)" ",000,000,000,000 ; 401257' 040 000 000 000 000
P.AAX: BYTE (7)"."," ","A","B","S" ; . ABS 401260' 056 040 101 102 123
BYTE (7)".",000,000,000,000 ; . 401261' 056 000 000 000 000
RSTB 25-Jan-1983 10:20:03 TOPS-20 Bliss-36 2A(142) Page 43
X2.0 1-Jan-1983 15:04:19 NETPKG:<VNP36>RSTB.BLI.7 (13)
P.AAY: BYTE (7)"."," ","A","B","S" ; . ABS 401262' 056 040 101 102 123
BYTE (7)".",000,000,000,000 ; . 401263' 056 000 000 000 000
ROUTINE_NAME= P.AAS ; 000000 401242'
GSD_CNAME:
PUSH SP,AC0 ; SP,AC0 401264' 261 17 0 00 000000 0980
MOVE AC0,-5(SP) ; AC0,ASCPTR 401265' 200 00 0 17 777773 1044
MOVE AC1,AC0 ; AC1,AC0 401266' 200 01 0 00 000000
MOVEI AC2,-1(AC1) ; AC2,-1(AC1) 401267' 201 02 0 01 777777
HRLI AC2,10700 ; AC2,10700 401270' 505 02 0 00 010700
MOVEI AC1,7 ; AC1,7 401271' 201 01 0 00 000007
MOVEI AC4,7 ; AC4,7 401272' 201 04 0 00 000007
MOVE AC5,C.30 ; AC5,[POINT 7,P.AAW-1,34] <1,7> 401273' 200 05 0 00 401325'
EXTEND AC1,C.29 ; AC1,[CMPSE ] 401274' 123 01 0 00 401324'
JRST L.55 ; L.55 401275' 254 00 0 00 401301'
PUSH SP,AC0 ; SP,AC0 401276' 261 17 0 00 000000 1049
PUSH SP,C.31 ; SP,[40] 401277' 261 17 0 00 401326'
JRST L.57 ; L.57 401300' 254 00 0 00 401316'
L.55: MOVE AC1,AC0 ; AC1,AC0 401301' 200 01 0 00 000000 1053
MOVEI AC2,-1(AC1) ; AC2,-1(AC1) 401302' 201 02 0 01 777777
HRLI AC2,10700 ; AC2,10700 401303' 505 02 0 00 010700
MOVEI AC1,7 ; AC1,7 401304' 201 01 0 00 000007
MOVEI AC4,7 ; AC4,7 401305' 201 04 0 00 000007
MOVE AC5,C.32 ; AC5,[POINT 7,P.AAX-1,34] <1,7> 401306' 200 05 0 00 401327'
EXTEND AC1,C.29 ; AC1,[CMPSE ] 401307' 123 01 0 00 401324'
JRST L.56 ; L.56 401310' 254 00 0 00 401314'
PUSH SP,C.33 ; SP,[0,,P.AAY] 401311' 261 17 0 00 401330' 1058
PUSH SP,C.34 ; SP,[104] 401312' 261 17 0 00 401331'
JRST L.57 ; L.57 401313' 254 00 0 00 401316'
L.56: PUSH SP,AC0 ; SP,AC0 401314' 261 17 0 00 000000 1062
PUSH SP,C.35 ; SP,[144] 401315' 261 17 0 00 401332'
L.57: PUSH SP,-5(SP) ; SP,VALUE 401316' 261 17 0 17 777773
PUSH SP,-5(SP) ; SP,FILE_PTR 401317' 261 17 0 17 777773
PUSHJ SP,GSD_PSN ; SP,GSD_PSN 401320' 260 17 0 00 000000V
ADJSP SP,-4 ; SP,-4 401321' 105 17 0 00 777774 1014
POP SP,AC0 ; SP,AC0 401322' 262 17 0 00 000000 0980
POPJ SP, ; SP, 401323' 263 17 0 00 000000
C.29: CMPSE ; 401324' 002 00 0 00 000000
C.30: POINT 7,P.AAW-1,34 ; 7,P.AAW-1,34 401325' 01 07 0 00 401255'
C.31: EXP 40 ; 40 401326' 000000 000040
C.32: POINT 7,P.AAX-1,34 ; 7,P.AAX-1,34 401327' 01 07 0 00 401257'
C.33: XWD 0,P.AAY ; 0,P.AAY 401330' 000000 401262'
C.34: EXP 104 ; 104 401331' 000000 000104
C.35: EXP 144 ; 144 401332' 000000 000144
; Routine Size: 39 words
RSTB 25-Jan-1983 10:20:03 TOPS-20 Bliss-36 2A(142) Page 44
X2.0 1-Jan-1983 15:04:19 NETPKG:<VNP36>RSTB.BLI.7 (14)
; 1066 ROUTINE GSD_ISN (ASCPTR, FLAGS, VALUE, FILE_PTR) : NOVALUE = !PROCESS INTERNAL SYMBOL NAME ENTRY
; 1067
; 1068 !++
; 1069 ! FUNCTIONAL DESCRIPTION:
; 1070 !
; 1071 ! PROCESS THE INTERNAL SYMBOL NAME ENTRY OF THE GSD RECORD.
; 1072 ! THIS IS NOT IMPLEMENTED SINCE MACY11 DOES NOT PRODUCE
; 1073 ! THESE RECORDS.
; 1074 !
; 1075 ! FORMAL PARAMETERS:
; 1076 !
; 1077 ! ASCPTR - POINTER TO NAME, IN ASCII
; 1078 ! FLAGS - THE FLAGS BYTE
; 1079 ! VALUE - THE VALUE WORD
; 1080 ! FILE_PTR - POINTER TO THE FILE BLOCK FOR THE OBJECT FILE
; 1081 !
; 1082 ! IMPLICIT INPUTS:
; 1083 !
; 1084 ! NONE
; 1085 !
; 1086 ! IMPLICIT OUTPUTS:
; 1087 !
; 1088 ! NONE
; 1089 !
; 1090 ! ROUTINE VALUE:
; 1091 !
; 1092 ! NONE
; 1093 !
; 1094 ! SIDE EFFECTS
; 1095 !
; 1096 ! PRINTS AN ERROR MESSAGE
; 1097 !
; 1098 !--
; 1099
; 1100 BEGIN
; 1101
; 1102 BIND
; 1103 ROUTINE_NAME = UPLIT (%ASCIZ'GSD_ISN');
; 1104
; 1105 IF (DEBUG GEQ 1)
; 1106 THEN
; 1107 BEGIN
; 1108 PCRLF (1);
; 1109 OUTPUT (1, %O'11');
; 1110 OUTPUT (1, %O'11');
; 1111 OUTSTR (1, UPLIT (%ASCIZ'INTERNAL SYMBOL NAME, NAME = '));
; 1112 OUTSTR (1, .ASCPTR);
; 1113 OUTSTR (1, UPLIT (%ASCIZ', FLAGS = '));
; 1114 OUTNUM (1, .FLAGS, 8, 0);
; 1115 OUTSTR (1, UPLIT (%ASCIZ', VALUE = '));
; 1116 OUTNUM (1, .VALUE, 8, 0);
; 1117 END; !DEBUG
RSTB 25-Jan-1983 10:20:03 TOPS-20 Bliss-36 2A(142) Page 45
X2.0 1-Jan-1983 15:04:19 NETPKG:<VNP36>RSTB.BLI.7 (14)
; 1118
; 1119 ERRMSG (0, 12, ROUTINE_NAME, 0, 0, 0, 0);
; 1120 END; !OF GSD_ISN
P.AAZ: BYTE (7)"G","S","D","_","I" ; GSD_I 401333' 107 123 104 137 111
BYTE (7)"S","N",000,000,000 ; SN 401334' 123 116 000 000 000
P.ABA: BYTE (7)"I","N","T","E","R" ; INTER 401335' 111 116 124 105 122
BYTE (7)"N","A","L"," ","S" ; NAL S 401336' 116 101 114 040 123
BYTE (7)"Y","M","B","O","L" ; YMBOL 401337' 131 115 102 117 114
BYTE (7)" ","N","A","M","E" ; NAME 401340' 040 116 101 115 105
BYTE (7)","," ","N","A","M" ; , NAM 401341' 054 040 116 101 115
BYTE (7)"E"," ","="," ",000 ; E = 401342' 105 040 075 040 000
P.ABB: BYTE (7)","," ","F","L","A" ; , FLA 401343' 054 040 106 114 101
BYTE (7)"G","S"," ","="," " ; GS = 401344' 107 123 040 075 040
BYTE (7)000,000,000,000,000 ; 401345' 000 000 000 000 000
P.ABC: BYTE (7)","," ","V","A","L" ; , VAL 401346' 054 040 126 101 114
BYTE (7)"U","E"," ","="," " ; UE = 401347' 125 105 040 075 040
BYTE (7)000,000,000,000,000 ; 401350' 000 000 000 000 000
ROUTINE_NAME= P.AAZ ; 000000 401333'
GSD_ISN:PUSH SP,C.4 ; SP,[0] 401351' 261 17 0 00 400203' 1119
PUSH SP,C.20 ; SP,[14] 401352' 261 17 0 00 401034'
PUSH SP,C.36 ; SP,[0,,ROUTINE_NAME] 401353' 261 17 0 00 401363'
PUSH SP,C.4 ; SP,[0] 401354' 261 17 0 00 400203'
PUSH SP,C.4 ; SP,[0] 401355' 261 17 0 00 400203'
PUSH SP,C.4 ; SP,[0] 401356' 261 17 0 00 400203'
PUSH SP,C.4 ; SP,[0] 401357' 261 17 0 00 400203'
PUSHJ SP,ERRMSG ; SP,ERRMSG 401360' 260 17 0 00 000000*
ADJSP SP,-7 ; SP,-7 401361' 105 17 0 00 777771 1100
POPJ SP, ; SP, 401362' 263 17 0 00 000000 1066
C.36: XWD 0,ROUTINE_NAME ; 0,ROUTINE_NAME 401363' 000000 401333'
; Routine Size: 11 words
RSTB 25-Jan-1983 10:20:03 TOPS-20 Bliss-36 2A(142) Page 46
X2.0 1-Jan-1983 15:04:19 NETPKG:<VNP36>RSTB.BLI.7 (15)
; 1121 ROUTINE GSD_TRA (ASCPTR, FLAGS, VALUE, FILE_PTR) : NOVALUE = !PROCESS TRANSFER ADDRESS ENTRY
; 1122
; 1123 !++
; 1124 ! FUNCTIONAL DESCRIPTION:
; 1125 !
; 1126 ! PROCESS THE TRANSFER ADDRESS ENTRY OF THE GSD RECORD
; 1127 !
; 1128 ! FORMAL PARAMETERS:
; 1129 !
; 1130 ! ASCPTR - POINTER TO NAME, IN ASCII
; 1131 ! FLAGS - THE FLAGS BYTE
; 1132 ! VALUE - THE VALUE WORD
; 1133 ! FILE_PTR - POINTER TO THE FILE BLOCK FOR THE OBJECT FILE
; 1134 !
; 1135 ! IMPLICIT INPUTS:
; 1136 !
; 1137 ! NONE
; 1138 !
; 1139 ! IMPLICIT OUTPUTS:
; 1140 !
; 1141 ! STORES THE TRANSFER ADDRESS IN THE DATA STRUCTURE
; 1142 !
; 1143 ! ROUTINE VALUE:
; 1144 !
; 1145 ! NONE
; 1146 !
; 1147 ! SIDE EFFECTS
; 1148 !
; 1149 ! NONE
; 1150 !
; 1151 !--
; 1152
; 1153 BEGIN
; 1154
; 1155 BIND
; 1156 ROUTINE_NAME = UPLIT (%ASCIZ'GSD_TRA');
; 1157
; 1158 MAP
; 1159 FILE_PTR : REF FILE_BLOCK;
; 1160
; 1161 LOCAL
; 1162 MODU_PTR : REF MODU_BLOCK,
; 1163 PSECT_PTR : REF PSECT_BLOCK,
; 1164 PSECT_INFO : VECTOR [3];
; 1165
; 1166 IF (DEBUG GEQ 1)
; 1167 THEN
; 1168 BEGIN
; 1169 PCRLF (1);
; 1170 OUTPUT (1, %O'11');
; 1171 OUTPUT (1, %O'11');
; 1172 OUTSTR (1, UPLIT (%ASCIZ'TRANSFER ADDRESS, NAME = '));
RSTB 25-Jan-1983 10:20:03 TOPS-20 Bliss-36 2A(142) Page 47
X2.0 1-Jan-1983 15:04:19 NETPKG:<VNP36>RSTB.BLI.7 (15)
; 1173 OUTSTR (1, .ASCPTR);
; 1174 OUTSTR (1, UPLIT (%ASCIZ', FLAGS = '));
; 1175 OUTNUM (1, .FLAGS, 8, 0);
; 1176 OUTSTR (1, UPLIT (%ASCIZ', VALUE = '));
; 1177 OUTNUM (1, .VALUE, 8, 0);
; 1178 END; !DEBUG
; 1179
; 1180 IF ((MODU_PTR = .FILE_PTR [FILE_MODU]) EQL 0)
; 1181 THEN
; 1182 ERRMSG (0, 10, ROUTINE_NAME, 0, 0, 0, 0)
; 1183 ELSE
; 1184 BEGIN
; 1185 PSECT_INFO [0] = .ASCPTR;
; 1186 PSECT_INFO [1] = 0;
; 1187 PSECT_INFO [2] = 0;
; 1188 PSECT_PTR = FND_CHAIN (.MODU_PTR [MODU_PSECTS], SEL_PSECT, PSECT_INFO);
; 1189
; 1190 IF (.PSECT_PTR EQL 0)
; 1191 THEN
; 1192 MODU_PTR [MODU_XFR_OFFSET] = .VALUE
; 1193 ELSE
; 1194 BEGIN
; 1195 MODU_PTR [MODU_XFR_PSECT] = .PSECT_PTR;
; 1196 MODU_PTR [MODU_XFR_OFFSET] = .VALUE + .PSECT_PTR [PSECT_OFFSET];
; 1197 END;
; 1198
; 1199 END;
; 1200
; 1201 END; !OF GSD_TRA
P.ABD: BYTE (7)"G","S","D","_","T" ; GSD_T 401364' 107 123 104 137 124
BYTE (7)"R","A",000,000,000 ; RA 401365' 122 101 000 000 000
P.ABE: BYTE (7)"T","R","A","N","S" ; TRANS 401366' 124 122 101 116 123
BYTE (7)"F","E","R"," ","A" ; FER A 401367' 106 105 122 040 101
BYTE (7)"D","D","R","E","S" ; DDRES 401370' 104 104 122 105 123
BYTE (7)"S",","," ","N","A" ; S, NA 401371' 123 054 040 116 101
BYTE (7)"M","E"," ","="," " ; ME = 401372' 115 105 040 075 040
BYTE (7)000,000,000,000,000 ; 401373' 000 000 000 000 000
P.ABF: BYTE (7)","," ","F","L","A" ; , FLA 401374' 054 040 106 114 101
BYTE (7)"G","S"," ","="," " ; GS = 401375' 107 123 040 075 040
BYTE (7)000,000,000,000,000 ; 401376' 000 000 000 000 000
P.ABG: BYTE (7)","," ","V","A","L" ; , VAL 401377' 054 040 126 101 114
BYTE (7)"U","E"," ","="," " ; UE = 401400' 125 105 040 075 040
BYTE (7)000,000,000,000,000 ; 401401' 000 000 000 000 000
ROUTINE_NAME= P.ABD ; 000000 401364'
GSD_TRA:PUSH SP,AC0 ; SP,AC0 401402' 261 17 0 00 000000 1121
ADJSP SP,3 ; SP,3 401403' 105 17 0 00 000003
RSTB 25-Jan-1983 10:20:03 TOPS-20 Bliss-36 2A(142) Page 48
X2.0 1-Jan-1983 15:04:19 NETPKG:<VNP36>RSTB.BLI.7 (15)
MOVE AC1,-5(SP) ; AC1,FILE_PTR 401404' 200 01 0 17 777773 1180
HRRZ AC0,14(AC1) ; MODU_PTR,14(AC1) 401405' 550 00 0 01 000014
JUMPN AC0,L.58 ; MODU_PTR,L.58 401406' 326 00 0 00 401421'
PUSH SP,C.4 ; SP,[0] 401407' 261 17 0 00 400203' 1182
PUSH SP,C.5 ; SP,[12] 401410' 261 17 0 00 400204'
PUSH SP,C.38 ; SP,[0,,ROUTINE_NAME] 401411' 261 17 0 00 401453'
PUSH SP,C.4 ; SP,[0] 401412' 261 17 0 00 400203'
PUSH SP,C.4 ; SP,[0] 401413' 261 17 0 00 400203'
PUSH SP,C.4 ; SP,[0] 401414' 261 17 0 00 400203'
PUSH SP,C.4 ; SP,[0] 401415' 261 17 0 00 400203'
PUSHJ SP,ERRMSG ; SP,ERRMSG 401416' 260 17 0 00 000000*
ADJSP SP,-4 ; SP,-4 401417' 105 17 0 00 777774
JRST L.61 ; L.61 401420' 254 00 0 00 401446' 1180
L.58: MOVE AC1,-10(SP) ; AC1,ASCPTR 401421' 200 01 0 17 777770 1185
MOVEM AC1,-2(SP) ; AC1,PSECT_INFO 401422' 202 01 0 17 777776
SETZM -1(SP) ; PSECT_INFO+1 401423' 402 00 0 17 777777 1186
SETZM 0(SP) ; PSECT_INFO+2 401424' 402 00 0 17 000000 1187
MOVE AC2,AC0 ; AC2,MODU_PTR 401425' 200 02 0 00 000000 1188
HRRZ AC1,7(AC2) ; AC1,7(AC2) 401426' 550 01 0 02 000007
PUSH SP,AC1 ; SP,AC1 401427' 261 17 0 00 000001
PUSH SP,C.39 ; SP,[0,,SEL_PSECT] 401430' 261 17 0 00 401454'
MOVEI AC1,-4(SP) ; AC1,PSECT_INFO 401431' 201 01 0 17 777774
PUSH SP,AC1 ; SP,AC1 401432' 261 17 0 00 000001
PUSHJ SP,FND_CHAIN ; SP,FND_CHAIN 401433' 260 17 0 00 000000*
MOVE AC2,AC0 ; AC2,MODU_PTR 401434' 200 02 0 00 000000 1192
ADDI AC2,5 ; AC2,5 401435' 271 02 0 00 000005
JUMPN AC1,L.59 ; PSECT_PTR,L.59 401436' 326 01 0 00 401441' 1190
MOVE AC0,-11(SP) ; AC0,VALUE 401437' 200 00 0 17 777767 1192
JRST L.60 ; L.60 401440' 254 00 0 00 401445'
L.59: HRRM AC1,0(AC2) ; PSECT_PTR,0(AC2) 401441' 542 01 0 02 000000 1195
MOVE AC0,-11(SP) ; AC0,VALUE 401442' 200 00 0 17 777767 1196
HLRZ AC3,4(AC1) ; AC3,4(PSECT_PTR) 401443' 554 03 0 01 000004
ADD AC0,AC3 ; AC0,AC3 401444' 270 00 0 00 000003
L.60: DPB AC0,C.37 ; AC0,[POINT 16,0(AC2),17] <18,16> 401445' 137 00 0 00 401452'
L.61: ADJSP SP,-3 ; SP,-3 401446' 105 17 0 00 777775 1153
ADJSP SP,-3 ; SP,-3 401447' 105 17 0 00 777775 1121
POP SP,AC0 ; SP,AC0 401450' 262 17 0 00 000000
POPJ SP, ; SP, 401451' 263 17 0 00 000000
C.37: POINT 16,0(AC2),17 ; 16,0(AC2),17 401452' 22 20 0 02 000000
C.38: XWD 0,ROUTINE_NAME ; 0,ROUTINE_NAME 401453' 000000 401364'
C.39: XWD 0,SEL_PSECT ; 0,SEL_PSECT 401454' 000000 000000V
; Routine Size: 43 words
RSTB 25-Jan-1983 10:20:03 TOPS-20 Bliss-36 2A(142) Page 49
X2.0 1-Jan-1983 15:04:19 NETPKG:<VNP36>RSTB.BLI.7 (16)
; 1202 ROUTINE SEL_GLOBAL (GLOBAL_PTR, GLOBAL_INFO) = !SELECT PROPER GLOBAL
; 1203
; 1204 !++
; 1205 ! FUNCTIONAL DESCRIPTION:
; 1206 !
; 1207 ! SELECT THE GLOBAL DESCRIBED FROM THE LIST OF ALL GLOBALS.
; 1208 ! USED IN A CALL TO FND_CHAIN.
; 1209 !
; 1210 ! FORMAL PARAMETERS:
; 1211 !
; 1212 ! GLOBAL_PTR - POINTER TO GLOBAL TO TEST FOR SUITABILITY
; 1213 ! GLOBAL_INFO - INFORMATION ABOUT THE GLOBAL WE ARE LOOKING FOR
; 1214 !
; 1215 ! IMPLICIT INPUTS:
; 1216 !
; 1217 ! NONE
; 1218 !
; 1219 ! IMPLICIT OUTPUTS:
; 1220 !
; 1221 ! NONE
; 1222 !
; 1223 ! ROUTINE VALUE:
; 1224 !
; 1225 ! POINTER TO THE GLOBAL, OR 0.
; 1226 !
; 1227 ! SIDE EFFECTS
; 1228 !
; 1229 ! NONE
; 1230 !
; 1231 !--
; 1232
; 1233 BEGIN
; 1234
; 1235 MAP
; 1236 GLOBAL_PTR : REF GLOBL_BLOCK,
; 1237 GLOBAL_INFO : REF VECTOR [3];
; 1238
; 1239 !
; 1240 ! THE GLOBAL_INFO VECTOR CONTAINS:
; 1241 !
; 1242 ! 0: POINTER TO THE GLOBAL NAME, IN ASCII
; 1243 ! 1: THE GLOBAL FLAGS
; 1244 ! 2: THE "VALUE" WORD FROM THE GLOBAL
; 1245 !
; 1246
; 1247 IF (CH$NEQ (LEN_GBL_NAME, CH$PTR (.GLOBAL_INFO [0]), LEN_GBL_NAME, CH$PTR (GLOBAL_PTR [GBL_NAME])))
; 1248 THEN
; 1249 0
; 1250 ELSE
; 1251 .GLOBAL_PTR
; 1252
; 1253 END; !OF SEL_GLOBAL
RSTB 25-Jan-1983 10:20:03 TOPS-20 Bliss-36 2A(142) Page 50
X2.0 1-Jan-1983 15:04:19 NETPKG:<VNP36>RSTB.BLI.7 (16)
SEL_GLOBAL:
MOVE AC1,-1(SP) ; AC1,GLOBAL_INFO 401455' 200 01 0 17 777777 1247
MOVE AC1,0(AC1) ; AC1,0(AC1) 401456' 200 01 0 01 000000
MOVEI AC2,-1(AC1) ; AC2,-1(AC1) 401457' 201 02 0 01 777777
HRLI AC2,10700 ; AC2,10700 401460' 505 02 0 00 010700
MOVE AC3,-2(SP) ; AC3,GLOBAL_PTR 401461' 200 03 0 17 777776
MOVEI AC5,0(AC3) ; AC5,0(AC3) 401462' 201 05 0 03 000000
HRLI AC5,10700 ; AC5,10700 401463' 505 05 0 00 010700
MOVEI AC1,7 ; AC1,7 401464' 201 01 0 00 000007
MOVEI AC4,7 ; AC4,7 401465' 201 04 0 00 000007
EXTEND AC1,C.40 ; AC1,[CMPSN ] 401466' 123 01 0 00 401473'
JRST L.62 ; L.62 401467' 254 00 0 00 401471'
TDZA AC1,AC1 ; AC1,AC1 401470' 634 01 0 00 000001
L.62: MOVE AC1,AC3 ; AC1,AC3 401471' 200 01 0 00 000003
POPJ SP, ; SP, 401472' 263 17 0 00 000000 1202
C.40: CMPSN ; 401473' 006 00 0 00 000000
; Routine Size: 15 words
RSTB 25-Jan-1983 10:20:03 TOPS-20 Bliss-36 2A(142) Page 51
X2.0 1-Jan-1983 15:04:19 NETPKG:<VNP36>RSTB.BLI.7 (17)
; 1254 ROUTINE GSD_GSN (ASCPTR, FLAGS, VALUE, FILE_PTR) : NOVALUE = !PROCESS GLOBAL SYMBOL NAME
; 1255
; 1256 !++
; 1257 ! FUNCTIONAL DESCRIPTION:
; 1258 !
; 1259 ! PROCESS THE GLOBAL SYMBOL NAME ENTRY OF THE GSD RECORD
; 1260 !
; 1261 ! FORMAL PARAMETERS:
; 1262 !
; 1263 ! ASCPTR - POINTER TO NAME, IN ASCII
; 1264 ! FLAGS - THE FLAGS BYTE
; 1265 ! VALUE - THE VALUE WORD
; 1266 ! FILE_PTR - POINTER TO THE FILE BLOCK FOR THE OBJECT FILE
; 1267 !
; 1268 ! IMPLICIT INPUTS:
; 1269 !
; 1270 ! NONE
; 1271 !
; 1272 ! IMPLICIT OUTPUTS:
; 1273 !
; 1274 ! ADDS THE GLOBAL SYMBOL TO THE DATA STRUCTURE
; 1275 !
; 1276 ! ROUTINE VALUE:
; 1277 !
; 1278 ! NONE
; 1279 !
; 1280 ! SIDE EFFECTS
; 1281 !
; 1282 ! OBTAINS SPACE FROM THE FREE LIST
; 1283 !
; 1284 !--
; 1285
; 1286 BEGIN
; 1287
; 1288 BIND
; 1289 ROUTINE_NAME = UPLIT (%ASCIZ'GSD_GSN');
; 1290
; 1291 MAP
; 1292 FILE_PTR : REF FILE_BLOCK;
; 1293
; 1294 LOCAL
; 1295 GLOBL_PTR : REF GLOBL_BLOCK,
; 1296 GLOBAL_INFO : VECTOR [3],
; 1297 MODU_PTR : REF MODU_BLOCK,
; 1298 MODU_PTR1 : REF MODU_BLOCK,
; 1299 PSECT_PTR : REF PSECT_BLOCK,
; 1300 TEMP_FLAGS;
; 1301
; 1302 IF (DEBUG GEQ 1)
; 1303 THEN
; 1304 BEGIN
; 1305 PCRLF (1);
RSTB 25-Jan-1983 10:20:03 TOPS-20 Bliss-36 2A(142) Page 52
X2.0 1-Jan-1983 15:04:19 NETPKG:<VNP36>RSTB.BLI.7 (17)
; 1306 OUTPUT (1, %O'11');
; 1307 OUTPUT (1, %O'11');
; 1308 OUTSTR (1, UPLIT (%ASCIZ'GLOBAL SYMBOL NAME, NAME = '));
; 1309 OUTSTR (1, .ASCPTR);
; 1310 OUTSTR (1, UPLIT (%ASCIZ', FLAGS = '));
; 1311 OUTNUM (1, .FLAGS, 8, 0);
; 1312 OUTSTR (1, UPLIT (%ASCIZ', VALUE = '));
; 1313 OUTNUM (1, .VALUE, 8, 0);
; 1314 END; !DEBUG
; 1315
; 1316 IF ((MODU_PTR = .FILE_PTR [FILE_MODU]) EQL 0)
; 1317 THEN
; 1318 ERRMSG (0, 10, ROUTINE_NAME, FILE_PTR [FILE_NAME], 0,
; 1319 0, 0)
; 1320 ELSE
; 1321 BEGIN !WE ARE PROCESSING A MODULE
; 1322 PSECT_PTR = .MODU_PTR [MODU_PSECT];
; 1323 GLOBAL_INFO [0] = .ASCPTR;
; 1324 GLOBAL_INFO [1] = .FLAGS;
; 1325 GLOBAL_INFO [2] = .VALUE;
; 1326 !
; 1327 ! BE SURE THE GLOBAL IS NOT ALREADY CHAINED TO THE CURRENT MODULE.
; 1328 !
; 1329 GLOBL_PTR = FND_CHAIN (.MODU_PTR [MODU_GLOBALS], SEL_GLOBAL, GLOBAL_INFO);
; 1330
; 1331 IF (.GLOBL_PTR NEQ 0)
; 1332 THEN
; 1333 BEGIN !ALREADY CHAINED
; 1334 MODU_PTR1 = .GLOBL_PTR [GBL_DEF_MODU];
; 1335 TEMP_FLAGS = .GLOBL_PTR [GBL_FLAGS];
; 1336 ERRMSG (0, 13, GLOBL_PTR [GBL_NAME], MODU_PTR1 [MODU_NAME], !
; 1337 .GLOBL_PTR [GBL_VALUE] + !
; 1338 (IF (.TEMP_FLAGS<GBL_FLG_REL, 1> EQL 0) THEN 0 ELSE %O'200000'), !
; 1339 MODU_PTR [MODU_NAME], !
; 1340 .VALUE + (IF (.FLAGS<GBL_FLG_REL, 1> EQL 0) THEN 0 ELSE %O'200000'));
; 1341 END
; 1342 ELSE
; 1343 BEGIN !NO PREVIOUS REFERENCE TO THIS SYMBOL
; 1344
; 1345 IF ((GLOBL_PTR = GETBLK (GLOBL_TYP, GLOBL_LEN)) EQL 0)
; 1346 THEN
; 1347 ERRMSG (0, 1, ROUTINE_NAME, 0, 0, 0,
; 1348 0)
; 1349 ELSE
; 1350 BEGIN !WE HAVE STORAGE FOR THE GLOBAL BLOCK
; 1351 CH$MOVE (LEN_GBL_NAME, CH$PTR (.ASCPTR), CH$PTR (GLOBL_PTR [GBL_NAME]));
; 1352 GLOBL_PTR [GBL_FLAGS] = .FLAGS;
; 1353 GLOBL_PTR [GBL_VALUE] = .VALUE;
; 1354 GLOBL_PTR [GBL_DEF_MODU] = .MODU_PTR;
; 1355
; 1356 IF ((MODU_PTR [MODU_GLOBALS] = BLD_CHAIN (.MODU_PTR, .MODU_PTR [MODU_GLOBALS], .GLOBL_PTR))
; 1357 EQL 0)
RSTB 25-Jan-1983 10:20:03 TOPS-20 Bliss-36 2A(142) Page 53
X2.0 1-Jan-1983 15:04:19 NETPKG:<VNP36>RSTB.BLI.7 (17)
; 1358 THEN
; 1359 ERRMSG (0, 1, ROUTINE_NAME, 0, 0, 0, 0);
; 1360
; 1361 IF (.FLAGS<GBL_FLG_REL, 1> NEQ 0)
; 1362 THEN
; 1363 BEGIN
; 1364 GLOBL_PTR [GBL_DEF_PSECT] = .PSECT_PTR;
; 1365 GLOBL_PTR [GBL_DEF_OFFSET] = .PSECT_PTR [PSECT_OFFSET];
; 1366 END;
; 1367
; 1368 END;
; 1369
; 1370 END;
; 1371
; 1372 END;
; 1373
; 1374 END; !OF GSD_GSN
P.ABH: BYTE (7)"G","S","D","_","G" ; GSD_G 401474' 107 123 104 137 107
BYTE (7)"S","N",000,000,000 ; SN 401475' 123 116 000 000 000
P.ABI: BYTE (7)"G","L","O","B","A" ; GLOBA 401476' 107 114 117 102 101
BYTE (7)"L"," ","S","Y","M" ; L SYM 401477' 114 040 123 131 115
BYTE (7)"B","O","L"," ","N" ; BOL N 401500' 102 117 114 040 116
BYTE (7)"A","M","E",","," " ; AME, 401501' 101 115 105 054 040
BYTE (7)"N","A","M","E"," " ; NAME 401502' 116 101 115 105 040
BYTE (7)"="," ",000,000,000 ; = 401503' 075 040 000 000 000
P.ABJ: BYTE (7)","," ","F","L","A" ; , FLA 401504' 054 040 106 114 101
BYTE (7)"G","S"," ","="," " ; GS = 401505' 107 123 040 075 040
BYTE (7)000,000,000,000,000 ; 401506' 000 000 000 000 000
P.ABK: BYTE (7)","," ","V","A","L" ; , VAL 401507' 054 040 126 101 114
BYTE (7)"U","E"," ","="," " ; UE = 401510' 125 105 040 075 040
BYTE (7)000,000,000,000,000 ; 401511' 000 000 000 000 000
ROUTINE_NAME= P.ABH ; 000000 401474'
GSD_GSN:PUSH SP,AC0 ; SP,AC0 401512' 261 17 0 00 000000 1254
PUSH SP,AC10 ; SP,AC10 401513' 261 17 0 00 000010
PUSH SP,AC11 ; SP,AC11 401514' 261 17 0 00 000011
PUSH SP,AC12 ; SP,AC12 401515' 261 17 0 00 000012
ADJSP SP,3 ; SP,3 401516' 105 17 0 00 000003
MOVE AC1,-10(SP) ; AC1,FILE_PTR 401517' 200 01 0 17 777770 1316
HRRZ AC0,14(AC1) ; MODU_PTR,14(AC1) 401520' 550 00 0 01 000014
JUMPN AC0,L.63 ; MODU_PTR,L.63 401521' 326 00 0 00 401535'
PUSH SP,C.4 ; SP,[0] 401522' 261 17 0 00 400203' 1318
PUSH SP,C.5 ; SP,[12] 401523' 261 17 0 00 400204'
PUSH SP,C.45 ; SP,[0,,ROUTINE_NAME] 401524' 261 17 0 00 401710'
ADDI AC1,2 ; AC1,2 401525' 271 01 0 00 000002
PUSH SP,AC1 ; SP,AC1 401526' 261 17 0 00 000001
PUSH SP,C.4 ; SP,[0] 401527' 261 17 0 00 400203'
RSTB 25-Jan-1983 10:20:03 TOPS-20 Bliss-36 2A(142) Page 54
X2.0 1-Jan-1983 15:04:19 NETPKG:<VNP36>RSTB.BLI.7 (17)
PUSH SP,C.4 ; SP,[0] 401530' 261 17 0 00 400203'
PUSH SP,C.4 ; SP,[0] 401531' 261 17 0 00 400203'
PUSHJ SP,ERRMSG ; SP,ERRMSG 401532' 260 17 0 00 000000*
ADJSP SP,-4 ; SP,-4 401533' 105 17 0 00 777774
JRST L.69 ; L.69 401534' 254 00 0 00 401675' 1316
L.63: MOVE AC1,AC0 ; AC1,MODU_PTR 401535' 200 01 0 00 000000 1322
HLRZ AC11,7(AC1) ; PSECT_PTR,7(AC1) 401536' 554 11 0 01 000007
MOVE AC12,-13(SP) ; AC12,ASCPTR 401537' 200 12 0 17 777765 1323
MOVEM AC12,-2(SP) ; AC12,GLOBAL_INFO 401540' 202 12 0 17 777776
MOVE AC1,-12(SP) ; AC1,FLAGS 401541' 200 01 0 17 777766 1324
MOVEM AC1,-1(SP) ; AC1,GLOBAL_INFO+1 401542' 202 01 0 17 777777
MOVE AC1,-11(SP) ; AC1,VALUE 401543' 200 01 0 17 777767 1325
MOVEM AC1,0(SP) ; AC1,GLOBAL_INFO+2 401544' 202 01 0 17 000000
MOVE AC2,AC0 ; AC2,MODU_PTR 401545' 200 02 0 00 000000 1329
HLRZ AC1,10(AC2) ; AC1,10(AC2) 401546' 554 01 0 02 000010
PUSH SP,AC1 ; SP,AC1 401547' 261 17 0 00 000001
PUSH SP,C.46 ; SP,[0,,SEL_GLOBAL] 401550' 261 17 0 00 401711'
MOVEI AC1,-4(SP) ; AC1,GLOBAL_INFO 401551' 201 01 0 17 777774
PUSH SP,AC1 ; SP,AC1 401552' 261 17 0 00 000001
PUSHJ SP,FND_CHAIN ; SP,FND_CHAIN 401553' 260 17 0 00 000000*
MOVE AC10,AC1 ; GLOBL_PTR,AC1 401554' 200 10 0 00 000001
JUMPE AC10,L.65 ; GLOBL_PTR,L.65 401555' 322 10 0 00 401607' 1331
HLRZ AC2,4(AC10) ; MODU_PTR1,4(GLOBL_PTR) 401556' 554 02 0 10 000004 1334
LDB AC1,C.41 ; TEMP_FLAGS,[POINT 8,3(GLOBL_PTR),34] <1,8>
; 401557' 135 01 0 00 401704' 1335
SETZM 0(SP) ; 0(SP) 401560' 402 00 0 17 000000 1336
PUSH SP,C.47 ; SP,[15] 401561' 261 17 0 00 401712'
MOVE AC3,AC10 ; AC3,GLOBL_PTR 401562' 200 03 0 00 000010
ADDI AC3,1 ; AC3,1 401563' 271 03 0 00 000001
PUSH SP,AC3 ; SP,AC3 401564' 261 17 0 00 000003
ADDI AC2,1 ; MODU_PTR1,1 401565' 271 02 0 00 000001
PUSH SP,AC2 ; SP,MODU_PTR1 401566' 261 17 0 00 000002
TRNN AC1,40 ; TEMP_FLAGS,40 401567' 606 01 0 00 000040 1338
TDZA AC1,AC1 ; AC1,AC1 401570' 634 01 0 00 000001
MOVEI AC1,200000 ; AC1,200000 401571' 201 01 0 00 200000
LDB AC2,C.42 ; AC2,[POINT 16,3(GLOBL_PTR),26] <9,16>401572' 135 02 0 00 401705' 1337
ADD AC1,AC2 ; AC1,AC2 401573' 270 01 0 00 000002
PUSH SP,AC1 ; SP,AC1 401574' 261 17 0 00 000001
MOVE AC1,AC0 ; AC1,MODU_PTR 401575' 200 01 0 00 000000 1339
ADDI AC1,1 ; AC1,1 401576' 271 01 0 00 000001
PUSH SP,AC1 ; SP,AC1 401577' 261 17 0 00 000001
LDB AC1,C.43 ; AC1,[POINT 1,FLAGS,30] <5,1> 401600' 135 01 0 00 401706' 1340
JUMPN AC1,L.64 ; AC1,L.64 401601' 326 01 0 00 401603'
TDZA AC1,AC1 ; AC1,AC1 401602' 634 01 0 00 000001
L.64: MOVEI AC1,200000 ; AC1,200000 401603' 201 01 0 00 200000
ADD AC1,-21(SP) ; AC1,VALUE 401604' 270 01 0 17 777757
PUSH SP,AC1 ; SP,AC1 401605' 261 17 0 00 000001
JRST L.66 ; L.66 401606' 254 00 0 00 401624'
L.65: PUSH SP,C.48 ; SP,[5] 401607' 261 17 0 00 401713' 1345
PUSH SP,C.49 ; SP,[10] 401610' 261 17 0 00 401714'
PUSHJ SP,GETBLK ; SP,GETBLK 401611' 260 17 0 00 000000*
MOVE AC10,AC1 ; GLOBL_PTR,AC1 401612' 200 10 0 00 000001
RSTB 25-Jan-1983 10:20:03 TOPS-20 Bliss-36 2A(142) Page 55
X2.0 1-Jan-1983 15:04:19 NETPKG:<VNP36>RSTB.BLI.7 (17)
ADJSP SP,-2 ; SP,-2 401613' 105 17 0 00 777776
JUMPN AC10,L.67 ; GLOBL_PTR,L.67 401614' 326 10 0 00 401627'
SETZM 0(SP) ; 0(SP) 401615' 402 00 0 17 000000 1347
PUSH SP,C.7 ; SP,[1] 401616' 261 17 0 00 400206'
PUSH SP,C.45 ; SP,[0,,ROUTINE_NAME] 401617' 261 17 0 00 401710'
PUSH SP,C.4 ; SP,[0] 401620' 261 17 0 00 400203'
PUSH SP,C.4 ; SP,[0] 401621' 261 17 0 00 400203'
PUSH SP,C.4 ; SP,[0] 401622' 261 17 0 00 400203'
PUSH SP,C.4 ; SP,[0] 401623' 261 17 0 00 400203'
L.66: PUSHJ SP,ERRMSG ; SP,ERRMSG 401624' 260 17 0 00 000000*
ADJSP SP,-6 ; SP,-6 401625' 105 17 0 00 777772
JRST L.69 ; L.69 401626' 254 00 0 00 401675' 1345
L.67: MOVE AC1,AC12 ; AC1,AC12 401627' 200 01 0 00 000012 1351
MOVEI AC2,-1(AC1) ; AC2,-1(AC1) 401630' 201 02 0 01 777777
HRLI AC2,10700 ; AC2,10700 401631' 505 02 0 00 010700
MOVEI AC5,0(AC10) ; AC5,0(GLOBL_PTR) 401632' 201 05 0 10 000000
HRLI AC5,10700 ; AC5,10700 401633' 505 05 0 00 010700
MOVEI AC1,7 ; AC1,7 401634' 201 01 0 00 000007
MOVEI AC4,7 ; AC4,7 401635' 201 04 0 00 000007
EXTEND AC1,C.24 ; AC1,[MOVSLJ ] 401636' 123 01 0 00 401235'
JFCL ; 401637' 255 00 0 00 000000
MOVE AC1,-15(SP) ; AC1,FLAGS 401640' 200 01 0 17 777763 1352
DPB AC1,C.41 ; AC1,[POINT 8,3(GLOBL_PTR),34] <1,8> 401641' 137 01 0 00 401704'
MOVE AC1,-14(SP) ; AC1,VALUE 401642' 200 01 0 17 777764 1353
DPB AC1,C.42 ; AC1,[POINT 16,3(GLOBL_PTR),26] <9,16>401643' 137 01 0 00 401705'
HRLM AC0,4(AC10) ; MODU_PTR,4(GLOBL_PTR) 401644' 506 00 0 10 000004 1354
MOVEM AC0,0(SP) ; MODU_PTR,0(SP) 401645' 202 00 0 17 000000 1356
MOVE AC2,AC0 ; AC2,MODU_PTR 401646' 200 02 0 00 000000
HLRZ AC1,10(AC2) ; AC1,10(AC2) 401647' 554 01 0 02 000010
PUSH SP,AC1 ; SP,AC1 401650' 261 17 0 00 000001
PUSH SP,AC10 ; SP,GLOBL_PTR 401651' 261 17 0 00 000010
PUSHJ SP,BLD_CHAIN ; SP,BLD_CHAIN 401652' 260 17 0 00 000000*
ADJSP SP,-2 ; SP,-2 401653' 105 17 0 00 777776
MOVE AC2,AC0 ; AC2,MODU_PTR 401654' 200 02 0 00 000000
HRLM AC1,10(AC2) ; AC1,10(AC2) 401655' 506 01 0 02 000010
JUMPN AC1,L.68 ; AC1,L.68 401656' 326 01 0 00 401670'
SETZM 0(SP) ; 0(SP) 401657' 402 00 0 17 000000 1359
PUSH SP,C.7 ; SP,[1] 401660' 261 17 0 00 400206'
PUSH SP,C.45 ; SP,[0,,ROUTINE_NAME] 401661' 261 17 0 00 401710'
PUSH SP,C.4 ; SP,[0] 401662' 261 17 0 00 400203'
PUSH SP,C.4 ; SP,[0] 401663' 261 17 0 00 400203'
PUSH SP,C.4 ; SP,[0] 401664' 261 17 0 00 400203'
PUSH SP,C.4 ; SP,[0] 401665' 261 17 0 00 400203'
PUSHJ SP,ERRMSG ; SP,ERRMSG 401666' 260 17 0 00 000000*
ADJSP SP,-6 ; SP,-6 401667' 105 17 0 00 777772
L.68: LDB AC0,C.44 ; AC0,[POINT 1,FLAGS,30] <5,1> 401670' 135 00 0 00 401707' 1361
JUMPE AC0,L.69 ; AC0,L.69 401671' 322 00 0 00 401675'
HRRM AC11,5(AC10) ; PSECT_PTR,5(GLOBL_PTR) 401672' 542 11 0 10 000005 1364
HLRZ AC0,4(AC11) ; AC0,4(PSECT_PTR) 401673' 554 00 0 11 000004 1365
HRLM AC0,5(AC10) ; AC0,5(GLOBL_PTR) 401674' 506 00 0 10 000005
L.69: ADJSP SP,-3 ; SP,-3 401675' 105 17 0 00 777775 1286
ADJSP SP,-3 ; SP,-3 401676' 105 17 0 00 777775 1254
RSTB 25-Jan-1983 10:20:03 TOPS-20 Bliss-36 2A(142) Page 56
X2.0 1-Jan-1983 15:04:19 NETPKG:<VNP36>RSTB.BLI.7 (17)
POP SP,AC12 ; SP,AC12 401677' 262 17 0 00 000012
POP SP,AC11 ; SP,AC11 401700' 262 17 0 00 000011
POP SP,AC10 ; SP,AC10 401701' 262 17 0 00 000010
POP SP,AC0 ; SP,AC0 401702' 262 17 0 00 000000
POPJ SP, ; SP, 401703' 263 17 0 00 000000
C.41: POINT 8,3(AC10),34 ; 8,3(GLOBL_PTR),34 401704' 01 10 0 10 000003
C.42: POINT 16,3(AC10),26 ; 16,3(GLOBL_PTR),26 401705' 11 20 0 10 000003
C.43: POINT 1,-22(SP),30 ; 1,FLAGS,30 401706' 05 01 0 17 777756
C.44: POINT 1,-15(SP),30 ; 1,FLAGS,30 401707' 05 01 0 17 777763
C.45: XWD 0,ROUTINE_NAME ; 0,ROUTINE_NAME 401710' 000000 401474'
C.46: XWD 0,SEL_GLOBAL ; 0,SEL_GLOBAL 401711' 000000 401455'
C.47: EXP 15 ; 15 401712' 000000 000015
C.48: EXP 5 ; 5 401713' 000000 000005
C.49: EXP 10 ; 10 401714' 000000 000010
; Routine Size: 131 words
RSTB 25-Jan-1983 10:20:03 TOPS-20 Bliss-36 2A(142) Page 57
X2.0 1-Jan-1983 15:04:19 NETPKG:<VNP36>RSTB.BLI.7 (18)
; 1375 ROUTINE SEL_PSECT (PSECT_PTR, PSECT_INFO) = !SELECT PROPER PSECT
; 1376
; 1377 !++
; 1378 ! FUNCTIONAL DESCRIPTION:
; 1379 !
; 1380 ! SELECT THE PSECT DESCRIBED FROM THE LIST OF ALL PSECTS.
; 1381 ! USED IN A CALL TO FND_CHAIN.
; 1382 !
; 1383 ! FORMAL PARAMETERS:
; 1384 !
; 1385 ! PSECT_PTR - POINTER TO PSECT TO TEST FOR SUITABILITY
; 1386 ! PSECT_INFO - INFORMATION ABOUT THE PSECT WE ARE LOOKING FOR
; 1387 !
; 1388 ! IMPLICIT INPUTS:
; 1389 !
; 1390 ! NONE
; 1391 !
; 1392 ! IMPLICIT OUTPUTS:
; 1393 !
; 1394 ! NONE
; 1395 !
; 1396 ! ROUTINE VALUE:
; 1397 !
; 1398 ! POINTER TO THE PSECT, OR 0.
; 1399 !
; 1400 ! SIDE EFFECTS
; 1401 !
; 1402 ! NONE
; 1403 !
; 1404 !--
; 1405
; 1406 BEGIN
; 1407
; 1408 MAP
; 1409 PSECT_PTR : REF PSECT_BLOCK,
; 1410 PSECT_INFO : REF VECTOR [3];
; 1411
; 1412 !
; 1413 ! THE PSECT_INFO VECTOR CONTAINS:
; 1414 !
; 1415 ! 0: POINTER TO THE PSECT NAME, IN ASCII
; 1416 ! 1: THE PSECT FLAGS
; 1417 ! 2: THE MAXIMUM LENGTH OF THE PSECT
; 1418 !
; 1419
; 1420 IF (CH$NEQ (LEN_PSECT_NAME, CH$PTR (.PSECT_INFO [0]), LEN_PSECT_NAME, CH$PTR (PSECT_PTR [PSECT_NAME])))
; 1421 THEN
; 1422 0
; 1423 ELSE
; 1424 .PSECT_PTR
; 1425
; 1426 END; !OF SEL_PSECT
RSTB 25-Jan-1983 10:20:03 TOPS-20 Bliss-36 2A(142) Page 58
X2.0 1-Jan-1983 15:04:19 NETPKG:<VNP36>RSTB.BLI.7 (18)
SEL_PSECT:
MOVE AC1,-1(SP) ; AC1,PSECT_INFO 401715' 200 01 0 17 777777 1420
MOVE AC1,0(AC1) ; AC1,0(AC1) 401716' 200 01 0 01 000000
MOVEI AC2,-1(AC1) ; AC2,-1(AC1) 401717' 201 02 0 01 777777
HRLI AC2,10700 ; AC2,10700 401720' 505 02 0 00 010700
MOVE AC3,-2(SP) ; AC3,PSECT_PTR 401721' 200 03 0 17 777776
MOVEI AC5,0(AC3) ; AC5,0(AC3) 401722' 201 05 0 03 000000
HRLI AC5,10700 ; AC5,10700 401723' 505 05 0 00 010700
MOVEI AC1,7 ; AC1,7 401724' 201 01 0 00 000007
MOVEI AC4,7 ; AC4,7 401725' 201 04 0 00 000007
EXTEND AC1,C.40 ; AC1,[CMPSN ] 401726' 123 01 0 00 401473'
JRST L.70 ; L.70 401727' 254 00 0 00 401731'
TDZA AC1,AC1 ; AC1,AC1 401730' 634 01 0 00 000001
L.70: MOVE AC1,AC3 ; AC1,AC3 401731' 200 01 0 00 000003
POPJ SP, ; SP, 401732' 263 17 0 00 000000 1375
; Routine Size: 14 words
RSTB 25-Jan-1983 10:20:03 TOPS-20 Bliss-36 2A(142) Page 59
X2.0 1-Jan-1983 15:04:19 NETPKG:<VNP36>RSTB.BLI.7 (19)
; 1427 ROUTINE GSD_PSN (ASCPTR, FLAGS, VALUE, FILE_PTR) : NOVALUE = !PROCESS PSECT NAME
; 1428
; 1429 !++
; 1430 ! FUNCTIONAL DESCRIPTION:
; 1431 !
; 1432 ! PROCESS THE PROGRAM SECTION NAME ENTRY OF THE GSD RECORD
; 1433 !
; 1434 ! FORMAL PARAMETERS:
; 1435 !
; 1436 ! ASCPTR - POINTER TO NAME, IN ASCII
; 1437 ! FLAGS - THE FLAGS BYTE
; 1438 ! VALUE - THE VALUE WORD
; 1439 ! FILE_PTR - POINTER TO THE FILE BLOCK FOR THE OBJECT FILE
; 1440 !
; 1441 ! IMPLICIT INPUTS:
; 1442 !
; 1443 ! NONE
; 1444 !
; 1445 ! IMPLICIT OUTPUTS:
; 1446 !
; 1447 ! ADDS THE PSECT NAME TO THE DATA STRUCTURE
; 1448 !
; 1449 ! ROUTINE VALUE:
; 1450 !
; 1451 ! NONE
; 1452 !
; 1453 ! SIDE EFFECTS
; 1454 !
; 1455 ! OBTAINS SPACE FROM THE FREE LIST
; 1456 !
; 1457 !--
; 1458
; 1459 BEGIN
; 1460
; 1461 BIND
; 1462 ROUTINE_NAME = UPLIT (%ASCIZ'GSD_PSN');
; 1463
; 1464 MAP
; 1465 FILE_PTR : REF FILE_BLOCK;
; 1466
; 1467 LOCAL
; 1468 MODU_PTR : REF MODU_BLOCK,
; 1469 PSECT_PTR : REF PSECT_BLOCK,
; 1470 PSECT_INFO : VECTOR [3],
; 1471 SEARCH_DONE;
; 1472
; 1473 IF (DEBUG GEQ 1)
; 1474 THEN
; 1475 BEGIN
; 1476 PCRLF (1);
; 1477 OUTPUT (1, %O'11');
; 1478 OUTPUT (1, %O'11');
RSTB 25-Jan-1983 10:20:03 TOPS-20 Bliss-36 2A(142) Page 60
X2.0 1-Jan-1983 15:04:19 NETPKG:<VNP36>RSTB.BLI.7 (19)
; 1479 OUTSTR (1, UPLIT (%ASCIZ'PSECT NAME, NAME = '));
; 1480 OUTSTR (1, .ASCPTR);
; 1481 OUTSTR (1, UPLIT (%ASCIZ', FLAGS = '));
; 1482 OUTNUM (1, .FLAGS, 8, 0);
; 1483 OUTSTR (1, UPLIT (%ASCIZ', VALUE = '));
; 1484 OUTNUM (1, .VALUE, 8, 0);
; 1485 END; !DEBUG
; 1486
; 1487 IF ((MODU_PTR = .FILE_PTR [FILE_MODU]) EQL 0)
; 1488 THEN
; 1489 ERRMSG (0, 10, ROUTINE_NAME, FILE_PTR [FILE_NAME], 0,
; 1490 0, 0)
; 1491 ELSE
; 1492 BEGIN !WE ARE PROCESSING A MODULE
; 1493 PSECT_INFO [0] = .ASCPTR;
; 1494 PSECT_INFO [1] = .FLAGS;
; 1495 PSECT_INFO [2] = .VALUE;
; 1496 !
; 1497 PSECT_PTR = FND_CHAIN (.MODU_PTR [MODU_PSECTS], SEL_PSECT, PSECT_INFO);
; 1498
; 1499 IF (.PSECT_PTR EQL 0)
; 1500 THEN
; 1501 BEGIN !FIRST REFERENCE TO THIS PSECT BY THIS MODULE
; 1502
; 1503 IF ((PSECT_PTR = GETBLK (PSECT_TYP, PSECT_LEN)) EQL 0)
; 1504 THEN
; 1505 ERRMSG (0, 1, ROUTINE_NAME, 0, 0, 0,
; 1506 0)
; 1507 ELSE
; 1508 BEGIN !WE HAVE STORAGE FOR THE PSECT BLOCK
; 1509 CH$MOVE (LEN_PSECT_NAME, CH$PTR (.ASCPTR), CH$PTR (PSECT_PTR [PSECT_NAME]));
; 1510 PSECT_PTR [PSECT_FLAGS] = .FLAGS;
; 1511 PSECT_PTR [PSECT_SIZE] = 0;
; 1512 PSECT_PTR [PSECT_OFFSET] = 0;
; 1513
; 1514 IF ((MODU_PTR [MODU_PSECTS] = BLD_CHAIN (.MODU_PTR, .MODU_PTR [MODU_PSECTS], .PSECT_PTR)) EQL
; 1515 0)
; 1516 THEN
; 1517 ERRMSG (0, 1, ROUTINE_NAME, 0, 0, 0, 0)
; 1518 ELSE
; 1519 PSECT_PTR = FND_CHAIN (.MODU_PTR [MODU_PSECTS], SEL_PSECT, PSECT_INFO);
; 1520
; 1521 IF (.PSECT_PTR EQL 0)
; 1522 THEN
; 1523 ERRMSG (0, 1, ROUTINE_NAME, 0, 0, 0, 0)
; 1524 ELSE
; 1525 BEGIN
; 1526 MODU_PTR [MODU_PSECT] = .PSECT_PTR;
; 1527 PSECT_PTR [PSECT_OFFSET] = (IF (.FLAGS<PSECT_FLG_OVR, 1> NEQ 0) THEN 0 ELSE .PSECT_PTR [
; 1528 PSECT_SIZE] + (IF ((.PSECT_PTR [PSECT_SIZE] MOD 2) EQL 0) THEN 0 ELSE 1));
; 1529 PSECT_PTR [PSECT_SIZE] = (IF (.FLAGS<PSECT_FLG_OVR, 1> NEQ 0) THEN MAX (.PSECT_PTR [
; 1530 PSECT_SIZE], .VALUE) ELSE .PSECT_PTR [PSECT_SIZE] + .VALUE);
RSTB 25-Jan-1983 10:20:03 TOPS-20 Bliss-36 2A(142) Page 61
X2.0 1-Jan-1983 15:04:19 NETPKG:<VNP36>RSTB.BLI.7 (19)
; 1531 PSECT_PTR [PSECT_SECTOR] = .MODU_PTR [MODU_SECTOR];
; 1532
; 1533 IF ((MODU_PTR [MODU_SECTOR] = .MODU_PTR [MODU_SECTOR] + 1) GTR 255)
; 1534 THEN
; 1535 ERRMSG (0, 10,
; 1536 ROUTINE_NAME, FILE_PTR [FILE_NAME], 0, 0, 0);
; 1537
; 1538 END;
; 1539
; 1540 END;
; 1541
; 1542 END; !OF FIRST REFERENCE TO THIS PSECT BY THIS MODULE
; 1543
; 1544 IF (((.PSECT_PTR [PSECT_FLAGS] XOR .FLAGS) AND ((1^PSECT_FLG_HI) OR (1^PSECT_FLG_LIB) OR (1^
; 1545 PSECT_FLG_OVR) OR (1^PSECT_FLG_RO) OR (1^PSECT_FLG_REL) OR (1^PSECT_FLG_GBL) OR (1^PSECT_FLG_DATA)
; 1546 )) NEQ 0)
; 1547 THEN
; 1548 ERRMSG (0, 15, ROUTINE_NAME, MODU_PTR [MODU_NAME], PSECT_PTR [PSECT_NAME],
; 1549 .PSECT_PTR [PSECT_FLAGS], .FLAGS);
; 1550
; 1551 END; !OF PROCESSING A MODULE
; 1552
; 1553 END; !OF GSD_PSN
P.ABL: BYTE (7)"G","S","D","_","P" ; GSD_P 401733' 107 123 104 137 120
BYTE (7)"S","N",000,000,000 ; SN 401734' 123 116 000 000 000
P.ABM: BYTE (7)"P","S","E","C","T" ; PSECT 401735' 120 123 105 103 124
BYTE (7)" ","N","A","M","E" ; NAME 401736' 040 116 101 115 105
BYTE (7)","," ","N","A","M" ; , NAM 401737' 054 040 116 101 115
BYTE (7)"E"," ","="," ",000 ; E = 401740' 105 040 075 040 000
P.ABN: BYTE (7)","," ","F","L","A" ; , FLA 401741' 054 040 106 114 101
BYTE (7)"G","S"," ","="," " ; GS = 401742' 107 123 040 075 040
BYTE (7)000,000,000,000,000 ; 401743' 000 000 000 000 000
P.ABO: BYTE (7)","," ","V","A","L" ; , VAL 401744' 054 040 126 101 114
BYTE (7)"U","E"," ","="," " ; UE = 401745' 125 105 040 075 040
BYTE (7)000,000,000,000,000 ; 401746' 000 000 000 000 000
ROUTINE_NAME= P.ABL ; 000000 401733'
GSD_PSN:PUSH SP,AC0 ; SP,AC0 401747' 261 17 0 00 000000 1427
PUSH SP,AC10 ; SP,AC10 401750' 261 17 0 00 000010
PUSH SP,AC11 ; SP,AC11 401751' 261 17 0 00 000011
PUSH SP,AC12 ; SP,AC12 401752' 261 17 0 00 000012
PUSH SP,AC13 ; SP,AC13 401753' 261 17 0 00 000013
ADJSP SP,3 ; SP,3 401754' 105 17 0 00 000003
MOVE AC0,-11(SP) ; AC0,FILE_PTR 401755' 200 00 0 17 777767 1487
MOVE AC1,AC0 ; AC1,AC0 401756' 200 01 0 00 000000
HRRZ AC12,14(AC1) ; MODU_PTR,14(AC1) 401757' 550 12 0 01 000014
JUMPN AC12,L.71 ; MODU_PTR,L.71 401760' 326 12 0 00 401775'
RSTB 25-Jan-1983 10:20:03 TOPS-20 Bliss-36 2A(142) Page 62
X2.0 1-Jan-1983 15:04:19 NETPKG:<VNP36>RSTB.BLI.7 (19)
PUSH SP,C.4 ; SP,[0] 401761' 261 17 0 00 400203' 1489
PUSH SP,C.5 ; SP,[12] 401762' 261 17 0 00 400204'
PUSH SP,C.54 ; SP,[0,,ROUTINE_NAME] 401763' 261 17 0 00 402215'
MOVE AC1,AC0 ; AC1,AC0 401764' 200 01 0 00 000000
ADDI AC1,2 ; AC1,2 401765' 271 01 0 00 000002
PUSH SP,AC1 ; SP,AC1 401766' 261 17 0 00 000001
PUSH SP,C.4 ; SP,[0] 401767' 261 17 0 00 400203'
PUSH SP,C.4 ; SP,[0] 401770' 261 17 0 00 400203'
PUSH SP,C.4 ; SP,[0] 401771' 261 17 0 00 400203'
PUSHJ SP,ERRMSG ; SP,ERRMSG 401772' 260 17 0 00 000000*
ADJSP SP,-4 ; SP,-4 401773' 105 17 0 00 777774
JRST L.84 ; L.84 401774' 254 00 0 00 402201' 1487
L.71: MOVE AC11,-14(SP) ; AC11,ASCPTR 401775' 200 11 0 17 777764 1493
MOVEM AC11,-2(SP) ; AC11,PSECT_INFO 401776' 202 11 0 17 777776
MOVE AC13,-13(SP) ; AC13,FLAGS 401777' 200 13 0 17 777765 1494
MOVEM AC13,-1(SP) ; AC13,PSECT_INFO+1 402000' 202 13 0 17 777777
MOVE AC1,-12(SP) ; AC1,VALUE 402001' 200 01 0 17 777766 1495
MOVEM AC1,0(SP) ; AC1,PSECT_INFO+2 402002' 202 01 0 17 000000
HRRZ AC1,7(AC12) ; AC1,7(MODU_PTR) 402003' 550 01 0 12 000007 1497
PUSH SP,AC1 ; SP,AC1 402004' 261 17 0 00 000001
PUSH SP,C.39 ; SP,[0,,SEL_PSECT] 402005' 261 17 0 00 401454'
MOVEI AC1,-4(SP) ; AC1,PSECT_INFO 402006' 201 01 0 17 777774
PUSH SP,AC1 ; SP,AC1 402007' 261 17 0 00 000001
PUSHJ SP,FND_CHAIN ; SP,FND_CHAIN 402010' 260 17 0 00 000000*
MOVE AC10,AC1 ; PSECT_PTR,AC1 402011' 200 10 0 00 000001
JUMPN AC10,L.83 ; PSECT_PTR,L.83 402012' 326 10 0 00 402160' 1499
PUSH SP,C.55 ; SP,[7] 402013' 261 17 0 00 402216' 1503
PUSH SP,C.49 ; SP,[10] 402014' 261 17 0 00 401714'
PUSHJ SP,GETBLK ; SP,GETBLK 402015' 260 17 0 00 000000*
MOVE AC10,AC1 ; PSECT_PTR,AC1 402016' 200 10 0 00 000001
ADJSP SP,-2 ; SP,-2 402017' 105 17 0 00 777776
JUMPN AC10,L.72 ; PSECT_PTR,L.72 402020' 326 10 0 00 402033'
SETZM 0(SP) ; 0(SP) 402021' 402 00 0 17 000000 1505
PUSH SP,C.7 ; SP,[1] 402022' 261 17 0 00 400206'
PUSH SP,C.54 ; SP,[0,,ROUTINE_NAME] 402023' 261 17 0 00 402215'
PUSH SP,C.4 ; SP,[0] 402024' 261 17 0 00 400203'
PUSH SP,C.4 ; SP,[0] 402025' 261 17 0 00 400203'
PUSH SP,C.4 ; SP,[0] 402026' 261 17 0 00 400203'
PUSH SP,C.4 ; SP,[0] 402027' 261 17 0 00 400203'
PUSHJ SP,ERRMSG ; SP,ERRMSG 402030' 260 17 0 00 000000*
ADJSP SP,-3 ; SP,-3 402031' 105 17 0 00 777775
JRST L.82 ; L.82 402032' 254 00 0 00 402157' 1503
L.72: MOVE AC1,AC11 ; AC1,AC11 402033' 200 01 0 00 000011 1509
MOVEI AC2,-1(AC1) ; AC2,-1(AC1) 402034' 201 02 0 01 777777
HRLI AC2,10700 ; AC2,10700 402035' 505 02 0 00 010700
MOVEI AC5,0(AC10) ; AC5,0(PSECT_PTR) 402036' 201 05 0 10 000000
HRLI AC5,10700 ; AC5,10700 402037' 505 05 0 00 010700
MOVEI AC1,7 ; AC1,7 402040' 201 01 0 00 000007
MOVEI AC4,7 ; AC4,7 402041' 201 04 0 00 000007
EXTEND AC1,C.24 ; AC1,[MOVSLJ ] 402042' 123 01 0 00 401235'
JFCL ; 402043' 255 00 0 00 000000
DPB AC13,C.50 ; AC13,[POINT 8,3(PSECT_PTR),35] <0,8> 402044' 137 13 0 00 402211' 1510
RSTB 25-Jan-1983 10:20:03 TOPS-20 Bliss-36 2A(142) Page 63
X2.0 1-Jan-1983 15:04:19 NETPKG:<VNP36>RSTB.BLI.7 (19)
HRRZS 3(AC10) ; 3(PSECT_PTR) 402045' 553 00 0 10 000003 1511
HRRZS 4(AC10) ; 4(PSECT_PTR) 402046' 553 00 0 10 000004 1512
MOVEM AC12,0(SP) ; MODU_PTR,0(SP) 402047' 202 12 0 17 000000 1514
HRRZ AC1,7(AC12) ; AC1,7(MODU_PTR) 402050' 550 01 0 12 000007
PUSH SP,AC1 ; SP,AC1 402051' 261 17 0 00 000001
PUSH SP,AC10 ; SP,PSECT_PTR 402052' 261 17 0 00 000010
PUSHJ SP,BLD_CHAIN ; SP,BLD_CHAIN 402053' 260 17 0 00 000000*
ADJSP SP,-2 ; SP,-2 402054' 105 17 0 00 777776
HRRM AC1,7(AC12) ; AC1,7(MODU_PTR) 402055' 542 01 0 12 000007
JUMPN AC1,L.73 ; AC1,L.73 402056' 326 01 0 00 402071'
SETZM 0(SP) ; 0(SP) 402057' 402 00 0 17 000000 1517
PUSH SP,C.7 ; SP,[1] 402060' 261 17 0 00 400206'
PUSH SP,C.54 ; SP,[0,,ROUTINE_NAME] 402061' 261 17 0 00 402215'
PUSH SP,C.4 ; SP,[0] 402062' 261 17 0 00 400203'
PUSH SP,C.4 ; SP,[0] 402063' 261 17 0 00 400203'
PUSH SP,C.4 ; SP,[0] 402064' 261 17 0 00 400203'
PUSH SP,C.4 ; SP,[0] 402065' 261 17 0 00 400203'
PUSHJ SP,ERRMSG ; SP,ERRMSG 402066' 260 17 0 00 000000*
ADJSP SP,-3 ; SP,-3 402067' 105 17 0 00 777775
JRST L.74 ; L.74 402070' 254 00 0 00 402100' 1514
L.73: HRRZ AC1,7(AC12) ; AC1,7(MODU_PTR) 402071' 550 01 0 12 000007 1519
PUSH SP,AC1 ; SP,AC1 402072' 261 17 0 00 000001
PUSH SP,C.39 ; SP,[0,,SEL_PSECT] 402073' 261 17 0 00 401454'
MOVEI AC1,-7(SP) ; AC1,PSECT_INFO 402074' 201 01 0 17 777771
PUSH SP,AC1 ; SP,AC1 402075' 261 17 0 00 000001
PUSHJ SP,FND_CHAIN ; SP,FND_CHAIN 402076' 260 17 0 00 000000*
MOVE AC10,AC1 ; PSECT_PTR,AC1 402077' 200 10 0 00 000001
L.74: JUMPN AC10,L.75 ; PSECT_PTR,L.75 402100' 326 10 0 00 402106' 1521
SETZM 0(SP) ; 0(SP) 402101' 402 00 0 17 000000 1523
PUSH SP,C.7 ; SP,[1] 402102' 261 17 0 00 400206'
PUSH SP,C.54 ; SP,[0,,ROUTINE_NAME] 402103' 261 17 0 00 402215'
PUSH SP,C.4 ; SP,[0] 402104' 261 17 0 00 400203'
JRST L.81 ; L.81 402105' 254 00 0 00 402152'
L.75: HRLM AC10,7(AC12) ; PSECT_PTR,7(MODU_PTR) 402106' 506 10 0 12 000007 1526
SETZ AC3, ; AC3, 402107' 400 03 0 00 000000 1527
LDB AC1,C.51 ; AC1,[POINT 1,FLAGS,33] <2,1> 402110' 135 01 0 00 402212'
JUMPE AC1,L.76 ; AC1,L.76 402111' 322 01 0 00 402115'
MOVEI AC3,1 ; AC3,1 402112' 201 03 0 00 000001
SETZ AC1, ; AC1, 402113' 400 01 0 00 000000
JRST L.78 ; L.78 402114' 254 00 0 00 402124'
L.76: HLRZ AC1,3(AC10) ; AC1,3(PSECT_PTR) 402115' 554 01 0 10 000003 1528
IDIVI AC1,2 ; AC1,2 402116' 231 01 0 00 000002
JUMPN AC2,L.77 ; AC2,L.77 402117' 326 02 0 00 402121'
TDZA AC1,AC1 ; AC1,AC1 402120' 634 01 0 00 000001
L.77: MOVEI AC1,1 ; AC1,1 402121' 201 01 0 00 000001
HLRZ AC2,3(AC10) ; AC2,3(PSECT_PTR) 402122' 554 02 0 10 000003
ADD AC1,AC2 ; AC1,AC2 402123' 270 01 0 00 000002
L.78: HRLM AC1,4(AC10) ; AC1,4(PSECT_PTR) 402124' 506 01 0 10 000004 1527
TRNN AC3,1 ; AC3,1 402125' 606 03 0 00 000001 1529
JRST L.79 ; L.79 402126' 254 00 0 00 402133'
HLRZ AC1,3(AC10) ; AC1,3(PSECT_PTR) 402127' 554 01 0 10 000003
CAMGE AC1,-20(SP) ; AC1,VALUE 402130' 315 01 0 17 777760
RSTB 25-Jan-1983 10:20:03 TOPS-20 Bliss-36 2A(142) Page 64
X2.0 1-Jan-1983 15:04:19 NETPKG:<VNP36>RSTB.BLI.7 (19)
MOVE AC1,-20(SP) ; AC1,VALUE 402131' 200 01 0 17 777760
JRST L.80 ; L.80 402132' 254 00 0 00 402135'
L.79: HLRZ AC1,3(AC10) ; AC1,3(PSECT_PTR) 402133' 554 01 0 10 000003 1530
ADD AC1,-20(SP) ; AC1,VALUE 402134' 270 01 0 17 777760
L.80: HRLM AC1,3(AC10) ; AC1,3(PSECT_PTR) 402135' 506 01 0 10 000003 1529
MOVE AC1,6(AC12) ; AC1,6(MODU_PTR) 402136' 200 01 0 12 000006 1531
DPB AC1,C.52 ; AC1,[POINT 8,3(PSECT_PTR),27] <8,8> 402137' 137 01 0 00 402213'
LDB AC1,C.53 ; AC1,[POINT 16,6(MODU_PTR),35] <0,16> 402140' 135 01 0 00 402214' 1533
ADDI AC1,1 ; AC1,1 402141' 271 01 0 00 000001
DPB AC1,C.53 ; AC1,[POINT 16,6(MODU_PTR),35] <0,16> 402142' 137 01 0 00 402214'
CAIG AC1,377 ; AC1,377 402143' 307 01 0 00 000377
JRST L.82 ; L.82 402144' 254 00 0 00 402157'
SETZM 0(SP) ; 0(SP) 402145' 402 00 0 17 000000 1535
PUSH SP,C.5 ; SP,[12] 402146' 261 17 0 00 400204'
PUSH SP,C.54 ; SP,[0,,ROUTINE_NAME] 402147' 261 17 0 00 402215'
ADDI AC0,2 ; AC0,2 402150' 271 00 0 00 000002 1536
PUSH SP,AC0 ; SP,AC0 402151' 261 17 0 00 000000
L.81: PUSH SP,C.4 ; SP,[0] 402152' 261 17 0 00 400203' 1535
PUSH SP,C.4 ; SP,[0] 402153' 261 17 0 00 400203'
PUSH SP,C.4 ; SP,[0] 402154' 261 17 0 00 400203'
PUSHJ SP,ERRMSG ; SP,ERRMSG 402155' 260 17 0 00 000000*
ADJSP SP,-6 ; SP,-6 402156' 105 17 0 00 777772
L.82: ADJSP SP,-3 ; SP,-3 402157' 105 17 0 00 777775 1501
L.83: LDB AC1,C.50 ; AC1,[POINT 8,3(PSECT_PTR),35] <0,8> 402160' 135 01 0 00 402211' 1544
XOR AC1,AC13 ; AC1,AC13 402161' 430 01 0 00 000013
TRNN AC1,367 ; AC1,367 402162' 606 01 0 00 000367
JRST L.84 ; L.84 402163' 254 00 0 00 402201'
SETZM 0(SP) ; 0(SP) 402164' 402 00 0 17 000000 1548
PUSH SP,C.56 ; SP,[17] 402165' 261 17 0 00 402217'
PUSH SP,C.54 ; SP,[0,,ROUTINE_NAME] 402166' 261 17 0 00 402215'
ADDI AC12,1 ; MODU_PTR,1 402167' 271 12 0 00 000001
PUSH SP,AC12 ; SP,MODU_PTR 402170' 261 17 0 00 000012
MOVE AC0,AC10 ; AC0,PSECT_PTR 402171' 200 00 0 00 000010
ADDI AC0,1 ; AC0,1 402172' 271 00 0 00 000001
PUSH SP,AC0 ; SP,AC0 402173' 261 17 0 00 000000
LDB AC0,C.50 ; AC0,[POINT 8,3(PSECT_PTR),35] <0,8> 402174' 135 00 0 00 402211'
PUSH SP,AC0 ; SP,AC0 402175' 261 17 0 00 000000
PUSH SP,AC13 ; SP,AC13 402176' 261 17 0 00 000013
PUSHJ SP,ERRMSG ; SP,ERRMSG 402177' 260 17 0 00 000000*
ADJSP SP,-6 ; SP,-6 402200' 105 17 0 00 777772
L.84: ADJSP SP,-3 ; SP,-3 402201' 105 17 0 00 777775 1459
ADJSP SP,-3 ; SP,-3 402202' 105 17 0 00 777775 1427
POP SP,AC13 ; SP,AC13 402203' 262 17 0 00 000013
POP SP,AC12 ; SP,AC12 402204' 262 17 0 00 000012
POP SP,AC11 ; SP,AC11 402205' 262 17 0 00 000011
POP SP,AC10 ; SP,AC10 402206' 262 17 0 00 000010
POP SP,AC0 ; SP,AC0 402207' 262 17 0 00 000000
POPJ SP, ; SP, 402210' 263 17 0 00 000000
C.50: POINT 8,3(AC10),35 ; 8,3(PSECT_PTR),35 402211' 00 10 0 10 000003
C.51: POINT 1,-21(SP),33 ; 1,FLAGS,33 402212' 02 01 0 17 777757
C.52: POINT 8,3(AC10),27 ; 8,3(PSECT_PTR),27 402213' 10 10 0 10 000003
C.53: POINT 16,6(AC12),35 ; 16,6(MODU_PTR),35 402214' 00 20 0 12 000006
RSTB 25-Jan-1983 10:20:03 TOPS-20 Bliss-36 2A(142) Page 65
X2.0 1-Jan-1983 15:04:19 NETPKG:<VNP36>RSTB.BLI.7 (19)
C.54: XWD 0,ROUTINE_NAME ; 0,ROUTINE_NAME 402215' 000000 401733'
C.55: EXP 7 ; 7 402216' 000000 000007
C.56: EXP 17 ; 17 402217' 000000 000017
; Routine Size: 169 words
RSTB 25-Jan-1983 10:20:03 TOPS-20 Bliss-36 2A(142) Page 66
X2.0 1-Jan-1983 15:04:19 NETPKG:<VNP36>RSTB.BLI.7 (20)
; 1554 ROUTINE GSD_IDENT (ASCPTR, FLAGS, VALUE, FILE_PTR) : NOVALUE = !PROCESS VERSION IDENT
; 1555
; 1556 !++
; 1557 ! FUNCTIONAL DESCRIPTION:
; 1558 !
; 1559 ! PROCESS THE PROGRAM VERSION IDENTIFICATION ENTRY OF THE
; 1560 ! GSD RECORD. THIS ENTRY IS PRODUCED BY THE ".IDENT"
; 1561 ! ASSEMBLER DIRECTIVE.
; 1562 !
; 1563 ! FORMAL PARAMETERS:
; 1564 !
; 1565 ! ASCPTR - POINTER TO NAME, IN ASCII
; 1566 ! FLAGS - THE FLAGS BYTE
; 1567 ! VALUE - THE VALUE WORD
; 1568 ! FILE_PTR - POINTER TO THE FILE BLOCK FOR THE OBJECT FILE
; 1569 !
; 1570 ! IMPLICIT INPUTS:
; 1571 !
; 1572 ! NONE
; 1573 !
; 1574 ! IMPLICIT OUTPUTS:
; 1575 !
; 1576 ! ADDS THE IDENTIFICATION TO THE DATA STRUCTURE
; 1577 !
; 1578 ! ROUTINE VALUE:
; 1579 !
; 1580 ! NONE
; 1581 !
; 1582 ! SIDE EFFECTS
; 1583 !
; 1584 ! NONE
; 1585 !
; 1586 !--
; 1587
; 1588 BEGIN
; 1589
; 1590 BIND
; 1591 ROUTINE_NAME = UPLIT (%ASCIZ'GSD_IDENT');
; 1592
; 1593 MAP
; 1594 FILE_PTR : REF FILE_BLOCK;
; 1595
; 1596 LOCAL
; 1597 MODU_PTR : REF MODU_BLOCK;
; 1598
; 1599 IF (DEBUG GEQ 1)
; 1600 THEN
; 1601 BEGIN
; 1602 PCRLF (1);
; 1603 OUTPUT (1, %O'11');
; 1604 OUTPUT (1, %O'11');
; 1605 OUTSTR (1, UPLIT (%ASCIZ'PROGRAM VERSION IDENTIFICATION, NAME = '));
RSTB 25-Jan-1983 10:20:03 TOPS-20 Bliss-36 2A(142) Page 67
X2.0 1-Jan-1983 15:04:19 NETPKG:<VNP36>RSTB.BLI.7 (20)
; 1606 OUTSTR (1, .ASCPTR);
; 1607 OUTSTR (1, UPLIT (%ASCIZ', FLAGS = '));
; 1608 OUTNUM (1, .FLAGS, 8, 0);
; 1609 OUTSTR (1, UPLIT (%ASCIZ', VALUE = '));
; 1610 OUTNUM (1, .VALUE, 8, 0);
; 1611 END; !DEBUG
; 1612
; 1613 IF ((MODU_PTR = .FILE_PTR [FILE_MODU]) EQL 0)
; 1614 THEN
; 1615 ERRMSG (0, 10, ROUTINE_NAME, FILE_PTR [FILE_NAME], 0,
; 1616 0, 0)
; 1617 ELSE
; 1618 BEGIN !THERE IS A MODULE BEING PROCESSED
; 1619 CH$MOVE (LEN_MODU_VER, CH$PTR (.ASCPTR), CH$PTR (MODU_PTR [MODU_IDENT]));
; 1620 MODU_PTR [MODU_FLAG_IDENT] = 1;
; 1621 END;
; 1622
; 1623 END; !OF GSD_IDENT
P.ABP: BYTE (7)"G","S","D","_","I" ; GSD_I 402220' 107 123 104 137 111
BYTE (7)"D","E","N","T",000 ; DENT 402221' 104 105 116 124 000
P.ABQ: BYTE (7)"P","R","O","G","R" ; PROGR 402222' 120 122 117 107 122
BYTE (7)"A","M"," ","V","E" ; AM VE 402223' 101 115 040 126 105
BYTE (7)"R","S","I","O","N" ; RSION 402224' 122 123 111 117 116
BYTE (7)" ","I","D","E","N" ; IDEN 402225' 040 111 104 105 116
BYTE (7)"T","I","F","I","C" ; TIFIC 402226' 124 111 106 111 103
BYTE (7)"A","T","I","O","N" ; ATION 402227' 101 124 111 117 116
BYTE (7)","," ","N","A","M" ; , NAM 402230' 054 040 116 101 115
BYTE (7)"E"," ","="," ",000 ; E = 402231' 105 040 075 040 000
P.ABR: BYTE (7)","," ","F","L","A" ; , FLA 402232' 054 040 106 114 101
BYTE (7)"G","S"," ","="," " ; GS = 402233' 107 123 040 075 040
BYTE (7)000,000,000,000,000 ; 402234' 000 000 000 000 000
P.ABS: BYTE (7)","," ","V","A","L" ; , VAL 402235' 054 040 126 101 114
BYTE (7)"U","E"," ","="," " ; UE = 402236' 125 105 040 075 040
BYTE (7)000,000,000,000,000 ; 402237' 000 000 000 000 000
ROUTINE_NAME= P.ABP ; 000000 402220'
GSD_IDENT:
PUSH SP,AC0 ; SP,AC0 402240' 261 17 0 00 000000 1554
PUSH SP,AC10 ; SP,AC10 402241' 261 17 0 00 000010
MOVE AC1,-3(SP) ; AC1,FILE_PTR 402242' 200 01 0 17 777775 1613
HRRZ AC10,14(AC1) ; MODU_PTR,14(AC1) 402243' 550 10 0 01 000014
JUMPN AC10,L.85 ; MODU_PTR,L.85 402244' 326 10 0 00 402260'
PUSH SP,C.4 ; SP,[0] 402245' 261 17 0 00 400203' 1615
PUSH SP,C.5 ; SP,[12] 402246' 261 17 0 00 400204'
PUSH SP,C.57 ; SP,[0,,ROUTINE_NAME] 402247' 261 17 0 00 402276'
ADDI AC1,2 ; AC1,2 402250' 271 01 0 00 000002
PUSH SP,AC1 ; SP,AC1 402251' 261 17 0 00 000001
RSTB 25-Jan-1983 10:20:03 TOPS-20 Bliss-36 2A(142) Page 68
X2.0 1-Jan-1983 15:04:19 NETPKG:<VNP36>RSTB.BLI.7 (20)
PUSH SP,C.4 ; SP,[0] 402252' 261 17 0 00 400203'
PUSH SP,C.4 ; SP,[0] 402253' 261 17 0 00 400203'
PUSH SP,C.4 ; SP,[0] 402254' 261 17 0 00 400203'
PUSHJ SP,ERRMSG ; SP,ERRMSG 402255' 260 17 0 00 000000*
ADJSP SP,-7 ; SP,-7 402256' 105 17 0 00 777771
JRST L.86 ; L.86 402257' 254 00 0 00 402273' 1613
L.85: MOVE AC1,-6(SP) ; AC1,ASCPTR 402260' 200 01 0 17 777772 1619
MOVEI AC2,-1(AC1) ; AC2,-1(AC1) 402261' 201 02 0 01 777777
HRLI AC2,10700 ; AC2,10700 402262' 505 02 0 00 010700
MOVEI AC5,2(AC10) ; AC5,2(MODU_PTR) 402263' 201 05 0 10 000002
HRLI AC5,10700 ; AC5,10700 402264' 505 05 0 00 010700
MOVEI AC1,7 ; AC1,7 402265' 201 01 0 00 000007
MOVEI AC4,7 ; AC4,7 402266' 201 04 0 00 000007
EXTEND AC1,C.24 ; AC1,[MOVSLJ ] 402267' 123 01 0 00 401235'
JFCL ; 402270' 255 00 0 00 000000
MOVSI AC0,400000 ; AC0,400000 402271' 205 00 0 00 400000 1620
IORM AC0,5(AC10) ; AC0,5(MODU_PTR) 402272' 436 00 0 10 000005
L.86: POP SP,AC10 ; SP,AC10 402273' 262 17 0 00 000010 1554
POP SP,AC0 ; SP,AC0 402274' 262 17 0 00 000000
POPJ SP, ; SP, 402275' 263 17 0 00 000000
C.57: XWD 0,ROUTINE_NAME ; 0,ROUTINE_NAME 402276' 000000 402220'
; Routine Size: 31 words
RSTB 25-Jan-1983 10:20:03 TOPS-20 Bliss-36 2A(142) Page 69
X2.0 1-Jan-1983 15:04:19 NETPKG:<VNP36>RSTB.BLI.7 (21)
; 1624 ROUTINE GSD_MAP (ASCPTR, FLAGS, VALUE, FILE_PTR) : NOVALUE = !PROCESS MAPPED ARRAY
; 1625
; 1626 !++
; 1627 ! FUNCTIONAL DESCRIPTION:
; 1628 !
; 1629 ! PROCESS THE MAPPED ARRAY ENTRY OF THE GSD RECORD.
; 1630 ! THIS IS NOT IMPLEMENTED SINCE IT IS NOT PRODUCED BY MACY11.
; 1631 !
; 1632 ! FORMAL PARAMETERS:
; 1633 !
; 1634 ! ASCPTR - POINTER TO NAME, IN ASCII
; 1635 ! FLAGS - THE FLAGS BYTE
; 1636 ! VALUE - THE VALUE WORD
; 1637 ! FILE_PTR - POINTER TO THE FILE BLOCK FOR THE OBJECT FILE
; 1638 !
; 1639 ! IMPLICIT INPUTS:
; 1640 !
; 1641 ! NONE
; 1642 !
; 1643 ! IMPLICIT OUTPUTS:
; 1644 !
; 1645 ! NONE
; 1646 !
; 1647 ! ROUTINE VALUE:
; 1648 !
; 1649 ! NONE
; 1650 !
; 1651 ! SIDE EFFECTS
; 1652 !
; 1653 ! PRINTS AN ERROR MESSAGE
; 1654 !
; 1655 !--
; 1656
; 1657 BEGIN
; 1658
; 1659 BIND
; 1660 ROUTINE_NAME = UPLIT (%ASCIZ'GSD_MAP');
; 1661
; 1662 IF (DEBUG GEQ 1)
; 1663 THEN
; 1664 BEGIN
; 1665 PCRLF (1);
; 1666 OUTPUT (1, %O'11');
; 1667 OUTPUT (1, %O'11');
; 1668 OUTSTR (1, UPLIT (%ASCIZ'MAPPED ARRAY DECLARATION, NAME = '));
; 1669 OUTSTR (1, .ASCPTR);
; 1670 OUTSTR (1, UPLIT (%ASCIZ', FLAGS = '));
; 1671 OUTNUM (1, .FLAGS, 8, 0);
; 1672 OUTSTR (1, UPLIT (%ASCIZ', VALUE = '));
; 1673 OUTNUM (1, .VALUE, 8, 0);
; 1674 END; !DEBUG
; 1675
RSTB 25-Jan-1983 10:20:03 TOPS-20 Bliss-36 2A(142) Page 70
X2.0 1-Jan-1983 15:04:19 NETPKG:<VNP36>RSTB.BLI.7 (21)
; 1676 ERRMSG (0, 12, ROUTINE_NAME, 0, 0, 0, 0);
; 1677 END; !OF GSD_MAP
P.ABT: BYTE (7)"G","S","D","_","M" ; GSD_M 402277' 107 123 104 137 115
BYTE (7)"A","P",000,000,000 ; AP 402300' 101 120 000 000 000
P.ABU: BYTE (7)"M","A","P","P","E" ; MAPPE 402301' 115 101 120 120 105
BYTE (7)"D"," ","A","R","R" ; D ARR 402302' 104 040 101 122 122
BYTE (7)"A","Y"," ","D","E" ; AY DE 402303' 101 131 040 104 105
BYTE (7)"C","L","A","R","A" ; CLARA 402304' 103 114 101 122 101
BYTE (7)"T","I","O","N","," ; TION, 402305' 124 111 117 116 054
BYTE (7)" ","N","A","M","E" ; NAME 402306' 040 116 101 115 105
BYTE (7)" ","="," ",000,000 ; = 402307' 040 075 040 000 000
P.ABV: BYTE (7)","," ","F","L","A" ; , FLA 402310' 054 040 106 114 101
BYTE (7)"G","S"," ","="," " ; GS = 402311' 107 123 040 075 040
BYTE (7)000,000,000,000,000 ; 402312' 000 000 000 000 000
P.ABW: BYTE (7)","," ","V","A","L" ; , VAL 402313' 054 040 126 101 114
BYTE (7)"U","E"," ","="," " ; UE = 402314' 125 105 040 075 040
BYTE (7)000,000,000,000,000 ; 402315' 000 000 000 000 000
ROUTINE_NAME= P.ABT ; 000000 402277'
GSD_MAP:PUSH SP,C.4 ; SP,[0] 402316' 261 17 0 00 400203' 1676
PUSH SP,C.20 ; SP,[14] 402317' 261 17 0 00 401034'
PUSH SP,C.58 ; SP,[0,,ROUTINE_NAME] 402320' 261 17 0 00 402330'
PUSH SP,C.4 ; SP,[0] 402321' 261 17 0 00 400203'
PUSH SP,C.4 ; SP,[0] 402322' 261 17 0 00 400203'
PUSH SP,C.4 ; SP,[0] 402323' 261 17 0 00 400203'
PUSH SP,C.4 ; SP,[0] 402324' 261 17 0 00 400203'
PUSHJ SP,ERRMSG ; SP,ERRMSG 402325' 260 17 0 00 000000*
ADJSP SP,-7 ; SP,-7 402326' 105 17 0 00 777771 1657
POPJ SP, ; SP, 402327' 263 17 0 00 000000 1624
C.58: XWD 0,ROUTINE_NAME ; 0,ROUTINE_NAME 402330' 000000 402277'
; Routine Size: 11 words
; 1678
RSTB 25-Jan-1983 10:20:03 TOPS-20 Bliss-36 2A(142) Page 71
X2.0 1-Jan-1983 15:04:19 NETPKG:<VNP36>RSTB.BLI.7 (22)
; 1679 GLOBAL ROUTINE SYM_VAL (FILE_PTR, SYMBOL_NAME, ERR) = !GET VALUE OF NAMED SYMBOL
; 1680
; 1681 !++
; 1682 ! FUNCTIONAL DESCRIPTION:
; 1683 !
; 1684 ! GET THE VALUE OF A NAMED SYMBOL FROM A (SYMBOL TABLE) FILE
; 1685 !
; 1686 ! FORMAL PARAMETERS:
; 1687 !
; 1688 ! FILE_PTR - THE FILE BLOCK THAT MAY HAVE THE SPECIFIED SYMBOL
; 1689 ! SYMBOL_NAME - NAME OF THE SYMBOL, MAX OF 7 WITH LAST NULL.
; 1690 ! ERR - 0 = PRINT ERROR MESSAGE IF NOT FOUND, 1 = JUST RETURN -1.
; 1691 !
; 1692 ! IMPLICIT INPUTS:
; 1693 !
; 1694 ! NONE
; 1695 !
; 1696 ! IMPLICIT OUTPUTS:
; 1697 !
; 1698 ! NONE
; 1699 !
; 1700 ! ROUTINE VALUE:
; 1701 !
; 1702 ! VALUE OF THE SYMBOL, OR -1 IF UNDEFINED.
; 1703 !
; 1704 ! SIDE EFFECTS
; 1705 !
; 1706 ! NONE
; 1707 !
; 1708 !--
; 1709
; 1710 BEGIN
; 1711
; 1712 BIND
; 1713 ROUTINE_NAME = UPLIT (%ASCIZ'SYMBOL_VALUE');
; 1714
; 1715 MAP
; 1716 FILE_PTR : REF FILE_BLOCK;
; 1717
; 1718 LOCAL
; 1719 GLOBL_PTR : REF GLOBL_BLOCK,
; 1720 MODU_PTR : REF MODU_BLOCK,
; 1721 CHAR_NUMBER,
; 1722 SYMBOL_END,
; 1723 PADDED_SYMBOL : VECTOR [CH$ALLOCATION (LEN_GBL_NAME)];
; 1724
; 1725 IF (.FILE_PTR EQL 0)
; 1726 THEN
; 1727 BEGIN
; 1728 ERRMSG (0, 32, ROUTINE_NAME, .SYMBOL_NAME, FILE_PTR [FILE_NAME], 0, 0);
; 1729 -1
; 1730 END
RSTB 25-Jan-1983 10:20:03 TOPS-20 Bliss-36 2A(142) Page 72
X2.0 1-Jan-1983 15:04:19 NETPKG:<VNP36>RSTB.BLI.7 (22)
; 1731 ELSE
; 1732 BEGIN
; 1733 MODU_PTR = .FILE_PTR [FILE_MODU];
; 1734
; 1735 IF (.MODU_PTR EQL 0)
; 1736 THEN
; 1737 BEGIN
; 1738 ERRMSG (0, 32, ROUTINE_NAME, .SYMBOL_NAME, FILE_PTR [FILE_NAME], 0, 0);
; 1739 -1
; 1740 END
; 1741 ELSE
; 1742 BEGIN
; 1743 SYMBOL_END = CH$FIND_CH (LEN_GBL_NAME-1, CH$PTR (.SYMBOL_NAME), 0);
; 1744
; 1745 IF CH$FAIL (.SYMBOL_END)
; 1746 THEN
; 1747 GLOBL_PTR = FND_CHAIN (.MODU_PTR [MODU_GLOBALS], SEL_SYMBOL,
; 1748 .SYMBOL_NAME)
; 1749 ELSE
; 1750 BEGIN
; 1751 CHAR_NUMBER = CH$DIFF (.SYMBOL_END, CH$PTR (.SYMBOL_NAME));
; 1752 CH$WCHAR (0,
; 1753 CH$COPY (.CHAR_NUMBER, CH$PTR (.SYMBOL_NAME), %C' ', LEN_GBL_NAME-1,
; 1754 CH$PTR (PADDED_SYMBOL)));
; 1755 GLOBL_PTR = FND_CHAIN (.MODU_PTR [MODU_GLOBALS], SEL_SYMBOL, PADDED_SYMBOL);
; 1756 END;
; 1757
; 1758 IF (.GLOBL_PTR EQL 0)
; 1759 THEN
; 1760 BEGIN
; 1761
; 1762 IF (.ERR EQL 0) THEN ERRMSG (0, 32, ROUTINE_NAME, .SYMBOL_NAME, FILE_PTR [FILE_NAME], 0, 0);
; 1763
; 1764 -1
; 1765 END
; 1766 ELSE
; 1767 (GBL_VAL (.GLOBL_PTR)) AND %O'177777'
; 1768
; 1769 END
; 1770
; 1771 END
; 1772
; 1773 END; !OF SYM_VAL
P.ABX: BYTE (7)"S","Y","M","B","O" ; SYMBO 402331' 123 131 115 102 117
BYTE (7)"L","_","V","A","L" ; L_VAL 402332' 114 137 126 101 114
BYTE (7)"U","E",000,000,000 ; UE 402333' 125 105 000 000 000
ROUTINE_NAME= P.ABX ; 000000 402331'
RSTB 25-Jan-1983 10:20:03 TOPS-20 Bliss-36 2A(142) Page 73
X2.0 1-Jan-1983 15:04:19 NETPKG:<VNP36>RSTB.BLI.7 (22)
SYM_VAL::
PUSH SP,AC0 ; SP,AC0 402334' 261 17 0 00 000000 1679
PUSH SP,AC10 ; SP,AC10 402335' 261 17 0 00 000010
PUSH SP,AC11 ; SP,AC11 402336' 261 17 0 00 000011
PUSH SP,AC12 ; SP,AC12 402337' 261 17 0 00 000012
PUSH SP,AC16 ; SP,AC16 402340' 261 17 0 00 000016
ADJSP SP,2 ; SP,2 402341' 105 17 0 00 000002
MOVE AC11,-11(SP) ; AC11,SYMBOL_NAME 402342' 200 11 0 17 777767 1728
MOVE AC10,-12(SP) ; AC10,FILE_PTR 402343' 200 10 0 17 777766 1725
JUMPN AC10,L.87 ; AC10,L.87 402344' 326 10 0 00 402355'
PUSH SP,C.4 ; SP,[0] 402345' 261 17 0 00 400203' 1728
PUSH SP,C.31 ; SP,[40] 402346' 261 17 0 00 401326'
PUSH SP,C.60 ; SP,[0,,ROUTINE_NAME] 402347' 261 17 0 00 402503'
PUSH SP,AC11 ; SP,AC11 402350' 261 17 0 00 000011
MOVE AC0,AC10 ; AC0,AC10 402351' 200 00 0 00 000010
ADDI AC0,2 ; AC0,2 402352' 271 00 0 00 000002
PUSH SP,AC0 ; SP,AC0 402353' 261 17 0 00 000000
JRST L.88 ; L.88 402354' 254 00 0 00 402366'
L.87: HRRZ AC0,14(AC10) ; MODU_PTR,14(AC10) 402355' 550 00 0 10 000014 1733
JUMPN AC0,L.89 ; MODU_PTR,L.89 402356' 326 00 0 00 402373' 1735
PUSH SP,C.4 ; SP,[0] 402357' 261 17 0 00 400203' 1738
PUSH SP,C.31 ; SP,[40] 402360' 261 17 0 00 401326'
PUSH SP,C.60 ; SP,[0,,ROUTINE_NAME] 402361' 261 17 0 00 402503'
PUSH SP,AC11 ; SP,AC11 402362' 261 17 0 00 000011
MOVE AC1,AC10 ; AC1,AC10 402363' 200 01 0 00 000010
ADDI AC1,2 ; AC1,2 402364' 271 01 0 00 000002
PUSH SP,AC1 ; SP,AC1 402365' 261 17 0 00 000001
L.88: PUSH SP,C.4 ; SP,[0] 402366' 261 17 0 00 400203'
PUSH SP,C.4 ; SP,[0] 402367' 261 17 0 00 400203'
PUSHJ SP,ERRMSG ; SP,ERRMSG 402370' 260 17 0 00 000000*
ADJSP SP,-1 ; SP,-1 402371' 105 17 0 00 777777 1737
JRST L.92 ; L.92 402372' 254 00 0 00 402464'
L.89: PUSH SP,C.27 ; SP,[6] 402373' 261 17 0 00 401240' 1743
MOVE AC1,AC11 ; AC1,AC11 402374' 200 01 0 00 000011
MOVEI AC1,-1(AC1) ; AC1,-1(AC1) 402375' 201 01 0 01 777777
HRLI AC1,10700 ; AC1,10700 402376' 505 01 0 00 010700
PUSH SP,AC1 ; SP,AC1 402377' 261 17 0 00 000001
PUSH SP,C.4 ; SP,[0] 402400' 261 17 0 00 400203'
PUSHJ SP,CHFCH% ; SP,CHFCH% 402401' 260 17 0 00 000000*
ADDI AC0,10 ; MODU_PTR,10 402402' 271 00 0 00 000010 1747
JUMPN AC1,L.90 ; SYMBOL_END,L.90 402403' 326 01 0 00 402414' 1745
MOVE AC2,AC0 ; AC2,AC0 402404' 200 02 0 00 000000 1747
HLRZ AC1,0(AC2) ; AC1,0(AC2) 402405' 554 01 0 02 000000
PUSH SP,AC1 ; SP,AC1 402406' 261 17 0 00 000001
PUSH SP,C.61 ; SP,[0,,SEL_SYMBOL] 402407' 261 17 0 00 402504'
PUSH SP,AC11 ; SP,AC11 402410' 261 17 0 00 000011
PUSHJ SP,FND_CHAIN ; SP,FND_CHAIN 402411' 260 17 0 00 000000*
MOVE AC12,AC1 ; GLOBL_PTR,AC1 402412' 200 12 0 00 000001
JRST L.91 ; L.91 402413' 254 00 0 00 402447' 1745
L.90: MOVEM AC1,0(SP) ; SYMBOL_END,0(SP) 402414' 202 01 0 17 000000 1751
MOVE AC1,AC11 ; AC1,AC11 402415' 200 01 0 00 000011
RSTB 25-Jan-1983 10:20:03 TOPS-20 Bliss-36 2A(142) Page 74
X2.0 1-Jan-1983 15:04:19 NETPKG:<VNP36>RSTB.BLI.7 (22)
MOVEI AC1,-1(AC1) ; AC1,-1(AC1) 402416' 201 01 0 01 777777
HRLI AC1,10700 ; AC1,10700 402417' 505 01 0 00 010700
PUSH SP,AC1 ; SP,AC1 402420' 261 17 0 00 000001
PUSHJ SP,CHDIF% ; SP,CHDIF% 402421' 260 17 0 00 000000*
MOVE AC16,AC1 ; CHAR_NUMBER,AC1 402422' 200 16 0 00 000001
SETZ AC3, ; AC3, 402423' 400 03 0 00 000000 1752
MOVE AC1,AC11 ; AC1,AC11 402424' 200 01 0 00 000011 1753
MOVEI AC2,-1(AC1) ; AC2,-1(AC1) 402425' 201 02 0 01 777777
HRLI AC2,10700 ; AC2,10700 402426' 505 02 0 00 010700
MOVEI AC5,-6(SP) ; AC5,PADDED_SYMBOL-1 402427' 201 05 0 17 777772 1754
HRLI AC5,10700 ; AC5,10700 402430' 505 05 0 00 010700
MOVE AC1,AC16 ; AC1,CHAR_NUMBER 402431' 200 01 0 00 000016 1753
MOVEI AC4,6 ; AC4,6 402432' 201 04 0 00 000006
EXTEND AC1,C.59 ; AC1,C.59 402433' 123 01 0 00 402501'
JFCL ; 402434' 255 00 0 00 000000
IDPB AC3,AC5 ; AC3,AC5 402435' 136 03 0 00 000005 1752
MOVE AC2,AC0 ; AC2,AC0 402436' 200 02 0 00 000000 1755
HLRZ AC1,0(AC2) ; AC1,0(AC2) 402437' 554 01 0 02 000000
PUSH SP,AC1 ; SP,AC1 402440' 261 17 0 00 000001
PUSH SP,C.61 ; SP,[0,,SEL_SYMBOL] 402441' 261 17 0 00 402504'
MOVEI AC0,-7(SP) ; AC0,PADDED_SYMBOL 402442' 201 00 0 17 777771
PUSH SP,AC0 ; SP,AC0 402443' 261 17 0 00 000000
PUSHJ SP,FND_CHAIN ; SP,FND_CHAIN 402444' 260 17 0 00 000000*
MOVE AC12,AC1 ; GLOBL_PTR,AC1 402445' 200 12 0 00 000001
ADJSP SP,-1 ; SP,-1 402446' 105 17 0 00 777777 1750
L.91: JUMPN AC12,L.93 ; GLOBL_PTR,L.93 402447' 326 12 0 00 402466' 1758
SKIPE -16(SP) ; ERR 402450' 332 00 0 17 777762 1762
JRST L.92 ; L.92 402451' 254 00 0 00 402464'
SETZM 0(SP) ; 0(SP) 402452' 402 00 0 17 000000
PUSH SP,C.31 ; SP,[40] 402453' 261 17 0 00 401326'
PUSH SP,C.60 ; SP,[0,,ROUTINE_NAME] 402454' 261 17 0 00 402503'
PUSH SP,AC11 ; SP,AC11 402455' 261 17 0 00 000011
ADDI AC10,2 ; AC10,2 402456' 271 10 0 00 000002
PUSH SP,AC10 ; SP,AC10 402457' 261 17 0 00 000010
PUSH SP,C.4 ; SP,[0] 402460' 261 17 0 00 400203'
PUSH SP,C.4 ; SP,[0] 402461' 261 17 0 00 400203'
PUSHJ SP,ERRMSG ; SP,ERRMSG 402462' 260 17 0 00 000000*
ADJSP SP,-6 ; SP,-6 402463' 105 17 0 00 777772
L.92: SETO AC1, ; AC1, 402464' 474 01 0 00 000000 1758
JRST L.94 ; L.94 402465' 254 00 0 00 402471'
L.93: MOVEM AC12,0(SP) ; GLOBL_PTR,0(SP) 402466' 202 12 0 17 000000 1767
PUSHJ SP,GBL_VAL ; SP,GBL_VAL 402467' 260 17 0 00 000000V
ANDI AC1,177777 ; AC1,177777 402470' 405 01 0 00 177777 1758
L.94: ADJSP SP,-6 ; SP,-6 402471' 105 17 0 00 777772 1710
ADJSP SP,-2 ; SP,-2 402472' 105 17 0 00 777776 1679
POP SP,AC16 ; SP,AC16 402473' 262 17 0 00 000016
POP SP,AC12 ; SP,AC12 402474' 262 17 0 00 000012
POP SP,AC11 ; SP,AC11 402475' 262 17 0 00 000011
POP SP,AC10 ; SP,AC10 402476' 262 17 0 00 000010
POP SP,AC0 ; SP,AC0 402477' 262 17 0 00 000000
POPJ SP, ; SP, 402500' 263 17 0 00 000000
C.59: MOVSLJ ; 402501' 016 00 0 00 000000
RSTB 25-Jan-1983 10:20:03 TOPS-20 Bliss-36 2A(142) Page 75
X2.0 1-Jan-1983 15:04:19 NETPKG:<VNP36>RSTB.BLI.7 (22)
EXP 40 ; 40 402502' 000000 000040
C.60: XWD 0,ROUTINE_NAME ; 0,ROUTINE_NAME 402503' 000000 402331'
C.61: XWD 0,SEL_SYMBOL ; 0,SEL_SYMBOL 402504' 000000 000000V
; Routine Size: 105 words
; 1774
RSTB 25-Jan-1983 10:20:03 TOPS-20 Bliss-36 2A(142) Page 76
X2.0 1-Jan-1983 15:04:19 NETPKG:<VNP36>RSTB.BLI.7 (23)
; 1775 ROUTINE SEL_SYMBOL (GLOBL_PTR, SYMBOL_NAME) = !SEE IF THIS IS THE TARGET SYMBOL
; 1776
; 1777 !++
; 1778 ! FUNCTIONAL DESCRIPTION:
; 1779 !
; 1780 ! SEE IF THIS IS THE SYMBOL WE ARE SEARCHING FOR. USED IN
; 1781 ! CALL TO FND_CHAIN.
; 1782 !
; 1783 ! FORMAL PARAMETERS:
; 1784 !
; 1785 ! GLOBL_PTR - POINTER TO THE SYMBOL TO TEST
; 1786 ! SYMBOL_NAME - POINTER TO NAME OF SYMBOL WE ARE LOOKING FOR
; 1787 !
; 1788 ! IMPLICIT INPUTS:
; 1789 !
; 1790 ! NONE
; 1791 !
; 1792 ! IMPLICIT OUTPUTS:
; 1793 !
; 1794 ! NONE
; 1795 !
; 1796 ! ROUTINE VALUE:
; 1797 !
; 1798 ! 0 IF THIS IS NOT THE PROPER SYMBOL (WHICH WILL CAUSE FND_CHAIN
; 1799 ! TO KEEP SEARCHING), OR THE POINTER TO THE GLOBAL BLOCK IF
; 1800 ! THE NAME MATCHES.
; 1801 !
; 1802 ! SIDE EFFECTS
; 1803 !
; 1804 ! NONE
; 1805 !
; 1806 !--
; 1807
; 1808 BEGIN
; 1809
; 1810 MAP
; 1811 GLOBL_PTR : REF GLOBL_BLOCK;
; 1812
; 1813 IF (CH$EQL (LEN_GBL_NAME, CH$PTR (GLOBL_PTR [GBL_NAME]), LEN_GBL_NAME, CH$PTR (.SYMBOL_NAME), 0))
; 1814 THEN
; 1815 .GLOBL_PTR
; 1816 ELSE
; 1817 0
; 1818
; 1819 END; !OF SEL_SYMBOL
SEL_SYMBOL:
MOVE AC3,-2(SP) ; AC3,GLOBL_PTR 402505' 200 03 0 17 777776 1813
MOVEI AC2,0(AC3) ; AC2,0(AC3) 402506' 201 02 0 03 000000
HRLI AC2,10700 ; AC2,10700 402507' 505 02 0 00 010700
MOVE AC1,-1(SP) ; AC1,SYMBOL_NAME 402510' 200 01 0 17 777777
RSTB 25-Jan-1983 10:20:03 TOPS-20 Bliss-36 2A(142) Page 77
X2.0 1-Jan-1983 15:04:19 NETPKG:<VNP36>RSTB.BLI.7 (23)
MOVEI AC5,-1(AC1) ; AC5,-1(AC1) 402511' 201 05 0 01 777777
HRLI AC5,10700 ; AC5,10700 402512' 505 05 0 00 010700
MOVEI AC1,7 ; AC1,7 402513' 201 01 0 00 000007
MOVEI AC4,7 ; AC4,7 402514' 201 04 0 00 000007
EXTEND AC1,C.29 ; AC1,[CMPSE ] 402515' 123 01 0 00 401324'
JRST L.95 ; L.95 402516' 254 00 0 00 402520'
SKIPA AC1,AC3 ; AC1,AC3 402517' 334 01 0 00 000003
L.95: SETZ AC1, ; AC1, 402520' 400 01 0 00 000000
POPJ SP, ; SP, 402521' 263 17 0 00 000000 1775
; Routine Size: 13 words
; 1820
RSTB 25-Jan-1983 10:20:03 TOPS-20 Bliss-36 2A(142) Page 78
X2.0 1-Jan-1983 15:04:19 NETPKG:<VNP36>RSTB.BLI.7 (24)
; 1821 GLOBAL ROUTINE GBL_VAL (GLOBL_PTR) = !RETURN VALUE OF GLOBAL SYMBOL
; 1822
; 1823 !++
; 1824 ! FUNCTIONAL DESCRIPTION:
; 1825 !
; 1826 ! IF THE GLOBAL SYMBOL IS ABSOLUTE, JUST RETURN ITS VALUE CELL.
; 1827 ! IF IT IS RELOCATABLE, WE MUST ADD TO THIS THE BASE OF THE
; 1828 ! PSECT IT WAS DEFINED IN AND THE OFFSET INTO THAT PSECT AT
; 1829 ! THE TIME OF THE DEFINITION.
; 1830 ! AN UNDEFINED SYMBOL RETURNS ZERO AND GIVES AN ERROR MESSAGE.
; 1831 !
; 1832 ! FORMAL PARAMETERS:
; 1833 !
; 1834 ! GLOBL_PTR - POINTER TO THE GLOBAL WHOSE VALUE IS TO BE RETURNED
; 1835 !
; 1836 ! IMPLICIT INPUTS:
; 1837 !
; 1838 ! NONE
; 1839 !
; 1840 ! IMPLICIT OUTPUTS:
; 1841 !
; 1842 ! NONE
; 1843 !
; 1844 ! ROUTINE VALUE:
; 1845 !
; 1846 ! THE VALUE OF THE GLOBAL SYMBOL, WITH THE HIGH-ORDER BIT
; 1847 ! SPREAD.
; 1848 !
; 1849 ! SIDE EFFECTS
; 1850 !
; 1851 ! NONE
; 1852 !
; 1853 !--
; 1854
; 1855 BEGIN
; 1856
; 1857 MAP
; 1858 GLOBL_PTR : REF GLOBL_BLOCK;
; 1859
; 1860 LOCAL
; 1861 FLAGS,
; 1862 PSECT_PTR : REF PSECT_BLOCK,
; 1863 RESULT;
; 1864
; 1865 FLAGS = .GLOBL_PTR [GBL_FLAGS];
; 1866
; 1867 IF (.FLAGS<GBL_FLG_DEF, 1> EQL 0)
; 1868 THEN
; 1869 BEGIN
; 1870 ERRMSG (0, 16, GLOBL_PTR [GBL_NAME], 0, 0, 0, 0);
; 1871 0
; 1872 END
RSTB 25-Jan-1983 10:20:03 TOPS-20 Bliss-36 2A(142) Page 79
X2.0 1-Jan-1983 15:04:19 NETPKG:<VNP36>RSTB.BLI.7 (24)
; 1873 ELSE
; 1874 BEGIN
; 1875
; 1876 IF (.FLAGS<GBL_FLG_REL, 1> EQL 0)
; 1877 THEN
; 1878 RESULT = .GLOBL_PTR [GBL_VALUE]
; 1879 ELSE
; 1880 BEGIN
; 1881 PSECT_PTR = .GLOBL_PTR [GBL_DEF_PSECT];
; 1882 RESULT = .GLOBL_PTR [GBL_VALUE] + .PSECT_PTR [PSECT_BASE] + .GLOBL_PTR [GBL_DEF_OFFSET]
; 1883 END;
; 1884
; 1885 IF (.RESULT<15, 1> NEQ 0) THEN RESULT<16, 20> = -1;
; 1886
; 1887 .RESULT
; 1888 END
; 1889
; 1890 END; !OF GBL_VAL
GBL_VAL::
PUSH SP,AC0 ; SP,AC0 402522' 261 17 0 00 000000 1821
PUSH SP,AC10 ; SP,AC10 402523' 261 17 0 00 000010
MOVE AC10,-3(SP) ; AC10,GLOBL_PTR 402524' 200 10 0 17 777775 1865
LDB AC0,C.41 ; FLAGS,[POINT 8,3(AC10),34] <1,8> 402525' 135 00 0 00 401704'
TRNE AC0,10 ; FLAGS,10 402526' 602 00 0 00 000010 1867
JRST L.96 ; L.96 402527' 254 00 0 00 402545'
PUSH SP,C.4 ; SP,[0] 402530' 261 17 0 00 400203' 1870
PUSH SP,C.62 ; SP,[20] 402531' 261 17 0 00 402565'
MOVE AC1,AC10 ; AC1,AC10 402532' 200 01 0 00 000010
ADDI AC1,1 ; AC1,1 402533' 271 01 0 00 000001
PUSH SP,AC1 ; SP,AC1 402534' 261 17 0 00 000001
PUSH SP,C.4 ; SP,[0] 402535' 261 17 0 00 400203'
PUSH SP,C.4 ; SP,[0] 402536' 261 17 0 00 400203'
PUSH SP,C.4 ; SP,[0] 402537' 261 17 0 00 400203'
PUSH SP,C.4 ; SP,[0] 402540' 261 17 0 00 400203'
PUSHJ SP,ERRMSG ; SP,ERRMSG 402541' 260 17 0 00 000000*
ADJSP SP,-7 ; SP,-7 402542' 105 17 0 00 777771 1869
SETZ AC1, ; AC1, 402543' 400 01 0 00 000000 1867
JRST L.99 ; L.99 402544' 254 00 0 00 402562'
L.96: TRNE AC0,40 ; FLAGS,40 402545' 602 00 0 00 000040 1876
JRST L.97 ; L.97 402546' 254 00 0 00 402551'
LDB AC1,C.42 ; RESULT,[POINT 16,3(AC10),26] <9,16> 402547' 135 01 0 00 401705' 1878
JRST L.98 ; L.98 402550' 254 00 0 00 402560' 1876
L.97: HRRZ AC2,5(AC10) ; PSECT_PTR,5(AC10) 402551' 550 02 0 10 000005 1881
LDB AC0,C.42 ; AC0,[POINT 16,3(AC10),26] <9,16> 402552' 135 00 0 00 401705' 1882
HRRZ AC3,4(AC2) ; AC3,4(PSECT_PTR) 402553' 550 03 0 02 000004
ADD AC0,AC3 ; AC0,AC3 402554' 270 00 0 00 000003
MOVE AC1,AC0 ; RESULT,AC0 402555' 200 01 0 00 000000
HLRZ AC2,5(AC10) ; AC2,5(AC10) 402556' 554 02 0 10 000005
ADD AC1,AC2 ; RESULT,AC2 402557' 270 01 0 00 000002
L.98: TRNE AC1,100000 ; RESULT,100000 402560' 602 01 0 00 100000 1885
RSTB 25-Jan-1983 10:20:03 TOPS-20 Bliss-36 2A(142) Page 80
X2.0 1-Jan-1983 15:04:19 NETPKG:<VNP36>RSTB.BLI.7 (24)
ORCMI AC1,177777 ; RESULT,177777 402561' 465 01 0 00 177777
L.99: POP SP,AC10 ; SP,AC10 402562' 262 17 0 00 000010 1821
POP SP,AC0 ; SP,AC0 402563' 262 17 0 00 000000
POPJ SP, ; SP, 402564' 263 17 0 00 000000
C.62: EXP 20 ; 20 402565' 000000 000020
; Routine Size: 36 words
; 1891
; 1892 END
; 1893
; 1894 ELUDOM
END
; Low segment length: 0 words
; High segment length: 1398 words
; LIBRARY STATISTICS
;
; -------- Symbols -------- Blocks
; File Total Loaded Percent Read
;
; NETPKG:<VNP36>VNPLIB.L36.6 498 87 17 0
; Size: 1229 code + 169 data words
; Run Time: 00:21.5
; Elapsed Time: 01:19.5
; Memory Used: 35 pages
; Compilation Complete