Trailing-Edge
-
PDP-10 Archives
-
BB-R598A-RM_1983
-
swskit-v3/listings/vnp36/vfio10.list
There are no other files named vfio10.list in the archive.
Scott G. Robinson, 3-DEC-79 : Ve
25-Jan-1983 10:14:51 TOPS-20 Bliss-36 2A(142) Page 1
1-Jan-1983 15:42:42 NETPKG:<VNP36>VFIO10.BLI.7 (1)
; 0001 !<REL4A.TKB-VNP>FIO10.BLI.5, 3-Dec-79 14:28:00, Edit by SROBINSON
; 0002 MODULE FIO10 ( ! FILE I/O
; 0003 IDENT = 'X2.0-1'
; 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: TKB-20 AND VNP-20
; 0031 !
; 0032 ! ABSTRACT:
; 0033 !
; 0034 !
; 0035 ! THIS MODULE DOES FILE I/O FOR THE TASK BUILDER.
; 0036 !
; 0037 ! THE CALLS ARE: OPEN, CLOSE, INPUT AND OUTPUT.
; 0038 ! ALL TAKE A 'CHANNEL' ARGUMENT. CHANNEL NUMBERS ARE BETWEEN
; 0039 ! 0 AND 15. CHANNEL 0 IS ALWAYS OPEN TO THE TERMINAL.
; 0040 !
; 0041 !
; 0042 ! ENVIRONMENT: TOPS-10 USER MODE
; 0043 !
; 0044 ! AUTHOR: J. SAUTER, CREATION DATE: 14-DEC-77
; 0045 !
; 0046 ! MODIFIED BY:
; 0047 !
; 0048 ! Scott G. Robinson, 15-NOV-78 : VERSION X0.1-2A
; 0049 ! - Add %C' ' to the break set for file names
; 0050 !
; 0051 ! Scott G. Robinson, 28-NOV-78 : VERSION X0.2
; 0052 ! - Make this module FIO10 because it is for a
FIO10 25-Jan-1983 10:14:51 TOPS-20 Bliss-36 2A(142) Page 2
X2.0-1 1-Jan-1983 15:42:42 NETPKG:<VNP36>VFIO10.BLI.7 (1)
; 0053 ! TOPS-10 I/O Scheme
; 0054 !
; 0055 ! Scott G. Robinson, 13-JUN-79 : VERSION X0.3
; 0056 ! - Add routine STOP_PROGRAM
; 0057 !-----------------------------------------------------------------------
; 0058 !
; 0059 ! Scott G. Robinson, 3-DEC-79 : Version X2.0
; 0060 ! - Ensure DECnet-10 Compatibility
; 0061 !
; 0062 ! Scott G. Robinson, 15-JUL-80 : Version X2.0-1
; 0063 ! - Add Terminal Output Logging
; 0064 !
; 0065 ! , : VERSION
; 0066 ! 01 -
; 0067 !--
; 0068
; 0069 !<BLF/PAGE>
FIO10 25-Jan-1983 10:14:51 TOPS-20 Bliss-36 2A(142) Page 3
X2.0-1 1-Jan-1983 15:42:42 NETPKG:<VNP36>VFIO10.BLI.7 (2)
; 0070 !
; 0071 ! TABLE OF CONTENTS:
; 0072 !
; 0073
; 0074 FORWARD ROUTINE
; 0075 RESET_ALL : NOVALUE, !RESET ALL I/O
; 0076 SIXBIT, !TRANSLATE ASCII TO SIXBIT
; 0077 OPEN, !OPEN A FILE (GLOBAL)
; 0078 CLOSE : NOVALUE, !CLOSE A FILE (GLOBAL)
; 0079 INPUT, !READ FROM A FILE (GLOBAL)
; 0080 OUTPUT : NOVALUE, !WRITE ON A FILE (GLOBAL)
; 0081 STOP_PROGRAM : NOVALUE; !TERMINATE PROGRAM
; 0082
; 0083 !
; 0084 ! INCLUDE FILES:
; 0085 !
; 0086 ! NONE
; 0087 !
; 0088 ! MACROS:
; 0089 !
; 0090 ! NONE
; 0091 !
; 0092 ! EQUATED SYMBOLS:
; 0093 !
; 0094
; 0095 LITERAL
; 0096 DEBUG = 0;
; 0097
; 0098 !
; 0099 ! OWN STORAGE:
; 0100 !
; 0101
; 0102 OWN
; 0103 CHAN_STATUS : VECTOR [16],
; 0104 CHAN_HEADER : VECTOR [16],
; 0105 CHAN_BUFFER : VECTOR [16],
; 0106 CHAN_WORD : VECTOR [16],
; 0107 CHAN_CTR : VECTOR [16],
; 0108 CHAN_DIRECTION : VECTOR [16];
; 0109
; 0110 LITERAL
; 0111 FILE_NAME_LEN = CH$ALLOCATION (40);
; 0112
; 0113 OWN
; 0114 CHAN_FNAME : VECTOR [16*FILE_NAME_LEN];
; 0115
; 0116 !
; 0117 ! EXTERNAL REFERENCES:
; 0118 !
; 0119
; 0120 EXTERNAL ROUTINE
; 0121 ERROR, !PROGRAMMING ERROR
FIO10 25-Jan-1983 10:14:51 TOPS-20 Bliss-36 2A(142) Page 4
X2.0-1 1-Jan-1983 15:42:42 NETPKG:<VNP36>VFIO10.BLI.7 (2)
; 0122 ERRMSG, !ERROR MESSAGE PRINTER
; 0123 GETSTG, !GET STORAGE FROM FREE LIST
; 0124 FRESTG; !RETURN STORAGE TO FREE LIST
; 0125
FIO10 25-Jan-1983 10:14:51 TOPS-20 Bliss-36 2A(142) Page 5
X2.0-1 1-Jan-1983 15:42:42 NETPKG:<VNP36>VFIO10.BLI.7 (3)
; 0126 GLOBAL ROUTINE RESET_ALL : NOVALUE = !RESET ALL I/O
; 0127
; 0128 !++
; 0129 ! FUNCTIONAL DESCRIPTION:
; 0130 !
; 0131 !
; 0132 ! ROUTINE TO RESET ALL I/O. IT DOES THIS BY ISSUEING THE
; 0133 ! TOPS-10 "RESET" UUO.
; 0134 !
; 0135 !
; 0136 ! FORMAL PARAMETERS:
; 0137 !
; 0138 ! NONE
; 0139 !
; 0140 ! IMPLICIT INPUTS:
; 0141 !
; 0142 ! NONE
; 0143 !
; 0144 ! IMPLICIT OUTPUTS:
; 0145 !
; 0146 ! NONE
; 0147 !
; 0148 ! ROUTINE VALUE:
; 0149 !
; 0150 ! NONE
; 0151 !
; 0152 ! SIDE EFFECTS
; 0153 !
; 0154 ! RESETS ALL I/O
; 0155 !
; 0156 !--
; 0157
; 0158 BEGIN
; 0159
; 0160 BUILTIN
; 0161 UUO;
; 0162
; 0163 UUO (0, %O'047', 0, 0);
; 0164 END; !OF RESET_ALL
TITLE FIO10
TWOSEG
.REQUEST SYS:B361LB.REL
RELOC 0 ; 000000'
CHAN_STATUS:
BLOCK 20 ; 000000'
CHAN_HEADER:
FIO10 25-Jan-1983 10:14:51 TOPS-20 Bliss-36 2A(142) Page 6
X2.0-1 1-Jan-1983 15:42:42 NETPKG:<VNP36>VFIO10.BLI.7 (3)
BLOCK 20 ; 000020'
CHAN_BUFFER:
BLOCK 20 ; 000040'
CHAN_WORD:
BLOCK 20 ; 000060'
CHAN_CTR:
BLOCK 20 ; 000100'
CHAN_DIRECTION:
BLOCK 20 ; 000120'
CHAN_FNAME:
BLOCK 200 ; 000140'
EXTERN ERROR, ERRMSG, GETSTG, FRESTG
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'
RESET_ALL::
CALLI 0,0 ; 0,0 400000' 047 00 0 00 000000 0163
POPJ SP, ; SP, 400001' 263 17 0 00 000000 0126
; Routine Size: 2 words
; 0165
FIO10 25-Jan-1983 10:14:51 TOPS-20 Bliss-36 2A(142) Page 7
X2.0-1 1-Jan-1983 15:42:42 NETPKG:<VNP36>VFIO10.BLI.7 (4)
; 0166 ROUTINE SIXBIT (ASCII_PTR) = !ASCII TO SIXBIT
; 0167
; 0168 !++
; 0169 ! FUNCTIONAL DESCRIPTION:
; 0170 !
; 0171 !
; 0172 ! ROUTINE TO CONVERT UP TO SIX CHARACTERS OF ASCII STRING TO
; 0173 ! SIXBIT.
; 0174 !
; 0175 !
; 0176 ! FORMAL PARAMETERS:
; 0177 !
; 0178 ! ASCII_PTR - POINTER TO ASCII STRING
; 0179 !
; 0180 ! IMPLICIT INPUTS:
; 0181 !
; 0182 ! NONE
; 0183 !
; 0184 ! IMPLICIT OUTPUTS:
; 0185 !
; 0186 ! NONE
; 0187 !
; 0188 ! ROUTINE VALUE:
; 0189 !
; 0190 ! THE VALUE OF THE STRING, IN SIXBIT.
; 0191 !
; 0192 ! SIDE EFFECTS
; 0193 !
; 0194 ! NONE
; 0195 !
; 0196 !--
; 0197
; 0198 BEGIN
; 0199
; 0200 LOCAL
; 0201 OUTPTR,
; 0202 INPTR,
; 0203 CHAR,
; 0204 CHAR_CTR,
; 0205 RESULT;
; 0206
; 0207 !
; 0208 RESULT = 0;
; 0209 OUTPTR = CH$PTR (RESULT, -1, 6);
; 0210 INPTR = CH$PTR (.ASCII_PTR, -1, 7);
; 0211 CHAR = 0;
; 0212 CHAR_CTR = 0;
; 0213 !
; 0214
; 0215 DO
; 0216 BEGIN
; 0217 CHAR = CH$A_RCHAR (INPTR);
FIO10 25-Jan-1983 10:14:51 TOPS-20 Bliss-36 2A(142) Page 8
X2.0-1 1-Jan-1983 15:42:42 NETPKG:<VNP36>VFIO10.BLI.7 (4)
; 0218
; 0219 IF ((.CHAR GEQ %C' ') AND (.CHAR LEQ %C'_')) THEN CH$A_WCHAR (.CHAR - %O'40', OUTPTR);
; 0220
; 0221 CHAR_CTR = .CHAR_CTR + 1;
; 0222 END
; 0223 UNTIL ((.CHAR EQL 0) OR (.CHAR_CTR GEQ 6));
; 0224
; 0225 .RESULT
; 0226 END;
SIXBIT: PUSH SP,AC0 ; SP,AC0 400002' 261 17 0 00 000000 0166
ADJSP SP,1 ; SP,1 400003' 105 17 0 00 000001
SETZM 0(SP) ; RESULT 400004' 402 00 0 17 000000 0208
MOVEI AC1,-1(SP) ; AC1,RESULT-1 400005' 201 01 0 17 777777 0209
HRLI AC1,60600 ; AC1,60600 400006' 505 01 0 00 060600
MOVE AC5,AC1 ; OUTPTR,AC1 400007' 200 05 0 00 000001
MOVE AC1,-3(SP) ; AC1,ASCII_PTR 400010' 200 01 0 17 777775 0210
MOVEI AC1,-1(AC1) ; AC1,-1(AC1) 400011' 201 01 0 01 777777
HRLI AC1,100700 ; AC1,100700 400012' 505 01 0 00 100700
SETZB AC2,AC3 ; CHAR,CHAR_CTR 400013' 403 02 0 00 000003 0211
L.1: IBP AC1 ; INPTR 400014' 133 00 0 00 000001 0217
MOVE AC2,AC1 ; CHAR,INPTR 400015' 200 02 0 00 000001
ILDB AC2,AC2 ; CHAR,CHAR 400016' 134 02 0 00 000002
CAIL AC2,40 ; CHAR,40 400017' 301 02 0 00 000040 0219
CAILE AC2,137 ; CHAR,137 400020' 303 02 0 00 000137
JRST L.2 ; L.2 400021' 254 00 0 00 400027'
MOVE AC4,AC2 ; AC4,CHAR 400022' 200 04 0 00 000002
SUBI AC4,40 ; AC4,40 400023' 275 04 0 00 000040
IBP AC5 ; OUTPTR 400024' 133 00 0 00 000005
MOVE AC0,AC5 ; AC0,OUTPTR 400025' 200 00 0 00 000005
IDPB AC4,AC0 ; AC4,AC0 400026' 136 04 0 00 000000
L.2: ADDI AC3,1 ; CHAR_CTR,1 400027' 271 03 0 00 000001 0221
JUMPE AC2,L.3 ; CHAR,L.3 400030' 322 02 0 00 400033' 0223
CAIGE AC3,6 ; CHAR_CTR,6 400031' 305 03 0 00 000006
JRST L.1 ; L.1 400032' 254 00 0 00 400014' 0215
L.3: MOVE AC1,0(SP) ; AC1,RESULT 400033' 200 01 0 17 000000 0166
ADJSP SP,-1 ; SP,-1 400034' 105 17 0 00 777777
POP SP,AC0 ; SP,AC0 400035' 262 17 0 00 000000
POPJ SP, ; SP, 400036' 263 17 0 00 000000
; Routine Size: 29 words
; 0227
FIO10 25-Jan-1983 10:14:51 TOPS-20 Bliss-36 2A(142) Page 9
X2.0-1 1-Jan-1983 15:42:42 NETPKG:<VNP36>VFIO10.BLI.7 (5)
; 0228 GLOBAL ROUTINE OPEN (CHANX, FNAME, MODE, IO, DEFEXT) : = !OPEN A FILE
; 0229
; 0230 !++
; 0231 ! FUNCTIONAL DESCRIPTION:
; 0232 !
; 0233 !
; 0234 !
; 0235 ! OPEN A FILE.
; 0236 !
; 0237 !
; 0238 ! FORMAL PARAMETERS:
; 0239 !
; 0240 ! CHANX - THE CHANNEL NUMBER TO OPEN.
; 0241 ! FNAME - POINTER TO FILE NAME STRING.
; 0242 ! MODE - I/O MODE: 1 = CHARACTER, 2 = WORD.
; 0243 ! IO - 0 = INPUT, 1 = OUTPUT.
; 0244 ! DEFEXT - POINTER TO DEFAULT EXTENSION (3 CHARS)
; 0245 !
; 0246 ! IMPLICIT INPUTS:
; 0247 !
; 0248 ! NONE
; 0249 !
; 0250 ! IMPLICIT OUTPUTS:
; 0251 !
; 0252 ! NONE
; 0253 !
; 0254 ! ROUTINE VALUE:
; 0255 !
; 0256 ! 1 IF OPEN SUCCESSFUL, 0 IF NOT.
; 0257 !
; 0258 ! SIDE EFFECTS
; 0259 !
; 0260 ! ASSOCIATES CHANNEL NUMBER WITH DEVICE BY DOING UUOS
; 0261 ! AND MODIFYING OWN STORAGE.
; 0262 !
; 0263 !--
; 0264
; 0265 BEGIN
; 0266
; 0267 BIND
; 0268 ROUTINE_NAME = UPLIT (%ASCIZ'OPEN');
; 0269
; 0270 LOCAL
; 0271 ACCUM,
; 0272 ACCUM_CTR,
; 0273 ACCUM_PTR,
; 0274 BUF_PTR,
; 0275 CHAN,
; 0276 CHAR,
; 0277 DEV_NAME,
; 0278 END_SCAN,
; 0279 FILE_NAME,
FIO10 25-Jan-1983 10:14:51 TOPS-20 Bliss-36 2A(142) Page 10
X2.0-1 1-Jan-1983 15:42:42 NETPKG:<VNP36>VFIO10.BLI.7 (5)
; 0280 FILE_EXT,
; 0281 FILN_PTR,
; 0282 FIL_PTR,
; 0283 HEADER_PTR,
; 0284 LOOKUP_BLOCK : VECTOR [4],
; 0285 OPEN_BLOCK : VECTOR [3],
; 0286 RESULT,
; 0287 SAVEJOBFF,
; 0288 SUCCESS;
; 0289
; 0290 EXTERNAL LITERAL
; 0291 %NAME ('.JBFF');
; 0292
; 0293 BUILTIN
; 0294 UUO;
; 0295
; 0296 CHAN = .CHANX;
; 0297 RESULT = 0;
; 0298
; 0299 IF (.CHAN EQL 0)
; 0300 THEN
; 0301 ERROR (UPLIT (%ASCIZ'MAY NOT OPEN CHANNEL 0 - OPEN'))
; 0302 ELSE
; 0303
; 0304 IF ((.CHAN GTR 15) OR (.CHAN LSS 0))
; 0305 THEN
; 0306 ERROR (UPLIT (%ASCIZ'INVALID CHANNEL NUMBER - OPEN'))
; 0307 ELSE
; 0308
; 0309 IF (.CHAN_STATUS [.CHAN] NEQ 0)
; 0310 THEN
; 0311 ERROR (UPLIT (%ASCIZ'CHANNEL ALREADY OPEN - OPEN'))
; 0312 ELSE
; 0313
; 0314 IF ((.MODE NEQ 1) AND (.MODE NEQ 2))
; 0315 THEN
; 0316 ERROR (UPLIT (%ASCIZ'ILLEGAL MODE - OPEN'))
; 0317 ELSE
; 0318 BEGIN !THINGS SEEM OK.
; 0319 DEV_NAME = 0;
; 0320 FILE_NAME = 0;
; 0321 FILE_EXT = 0;
; 0322 ACCUM = 0;
; 0323 END_SCAN = 0;
; 0324 !
; 0325 FIL_PTR = CH$PTR (.FNAME, -1, 7);
; 0326 FILN_PTR = CH$PTR (CHAN_FNAME [.CHAN*FILE_NAME_LEN], -1, 7);
; 0327 ACCUM_PTR = CH$PTR (ACCUM, -1, 6);
; 0328 ACCUM_CTR = 0;
; 0329 !
; 0330
; 0331 DO
FIO10 25-Jan-1983 10:14:51 TOPS-20 Bliss-36 2A(142) Page 11
X2.0-1 1-Jan-1983 15:42:42 NETPKG:<VNP36>VFIO10.BLI.7 (5)
; 0332 BEGIN !SCAN THE FILE NAME STRING
; 0333 CHAR = CH$A_RCHAR (FIL_PTR);
; 0334 CH$A_WCHAR (.CHAR, FILN_PTR);
; 0335
; 0336 SELECTONE .CHAR OF
; 0337 SET
; 0338
; 0339 [0,%C' '] :
; 0340 END_SCAN = 1;
; 0341
; 0342 [%C'A' TO %C'Z', %C'0' TO %C'9', %C'A' + %O'40' TO %C'Z' + %O'40'] :
; 0343 BEGIN !ALPHANUMERIC
; 0344
; 0345 IF ((ACCUM_CTR = .ACCUM_CTR + 1) GTR 6)
; 0346 THEN
; 0347 ERRMSG (0, 2, ROUTINE_NAME,
; 0348 .FNAME, 0, 0, 0)
; 0349 ELSE
; 0350 CH$A_WCHAR (.CHAR - %O'40', ACCUM_PTR);
; 0351
; 0352 END;
; 0353
; 0354 [%C':'] :
; 0355 BEGIN ! WE HAVE SCANNED A DEVICE NAME
; 0356 DEV_NAME = .ACCUM;
; 0357 ACCUM = 0;
; 0358 ACCUM_CTR = 0;
; 0359 ACCUM_PTR = CH$PTR (ACCUM, -1, 6);
; 0360 END;
; 0361
; 0362 [%C'.'] :
; 0363 BEGIN ! WE HAVE SCANNED A FILE NAME
; 0364 FILE_NAME = .ACCUM;
; 0365 ACCUM = 0;
; 0366 ACCUM_CTR = 0;
; 0367 ACCUM_PTR = CH$PTR (ACCUM, -1, 6);
; 0368 END;
; 0369
; 0370 [OTHERWISE] :
; 0371 ERRMSG (0, 2, ROUTINE_NAME, .FNAME, 0, 0, 0);
; 0372 TES;
; 0373
; 0374 END
; 0375 WHILE (.END_SCAN EQL 0);
; 0376
; 0377 !
; 0378 ! SUBSTITUTE THE DEFAULTS
; 0379 !
; 0380
; 0381 IF (.FILE_NAME EQL 0)
; 0382 THEN
; 0383 BEGIN !NAME IS ZERO, CHECK FOR UNDELIMITED NAME
FIO10 25-Jan-1983 10:14:51 TOPS-20 Bliss-36 2A(142) Page 12
X2.0-1 1-Jan-1983 15:42:42 NETPKG:<VNP36>VFIO10.BLI.7 (5)
; 0384 FILE_NAME = .ACCUM;
; 0385 ACCUM = 0;
; 0386 ACCUM_CTR = 0;
; 0387 END;
; 0388
; 0389 IF (.FILE_EXT EQL 0)
; 0390 THEN
; 0391 BEGIN !EXTENSION IS ZERO, USE LAST NAME PROVIDED.
; 0392 FILE_EXT = .ACCUM;
; 0393
; 0394 IF (.ACCUM_CTR GTR 3) THEN ERRMSG (0, 2, ROUTINE_NAME, .FNAME, 0, 0, 0);
; 0395
; 0396 ACCUM = 0;
; 0397 ACCUM_CTR = 0;
; 0398 END;
; 0399
; 0400 IF (.DEV_NAME EQL 0) THEN DEV_NAME = SIXBIT (UPLIT (%ASCIZ'DSK'));
; 0401
; 0402 IF (.FILE_EXT EQL 0) THEN FILE_EXT = SIXBIT (.DEFEXT);
; 0403
; 0404 IF (.FILE_NAME EQL 0)
; 0405 THEN
; 0406 ERRMSG (0, 2, ROUTINE_NAME, .FNAME, 0, 0, 0)
; 0407 ELSE
; 0408 BEGIN
; 0409 OPEN_BLOCK [0] = (.MODE - 1)*%O'14'; !CHAR = 0, WORD = 14 OCTAL.
; 0410 OPEN_BLOCK [1] = .DEV_NAME;
; 0411
; 0412 IF ((HEADER_PTR = GETSTG (3)) EQL 0)
; 0413 THEN
; 0414 ERRMSG (0, 1, ROUTINE_NAME, 0, 0, 0, 0)
; 0415 ELSE
; 0416 BEGIN
; 0417
; 0418 IF (.IO NEQ 0)
; 0419 THEN
; 0420 OPEN_BLOCK [2] = (.HEADER_PTR)^18
; 0421 ELSE
; 0422 OPEN_BLOCK [2] = (.HEADER_PTR);
; 0423
; 0424 CHAN_HEADER [.CHAN] = .HEADER_PTR;
; 0425
; 0426 IF (UUO (1, %O'050', .CHAN, OPEN_BLOCK) EQL 0) THEN ! ISSUE OPEN UUO
; 0427 ERRMSG (0, 3, ROUTINE_NAME, .FNAME, 0, 0, 0)
; 0428 ELSE
; 0429 BEGIN !OPEN UUO SUCCEEDED.
; 0430
; 0431 IF ((BUF_PTR = GETSTG (%O'203')) EQL 0)
; 0432 THEN
; 0433 ERRMSG (0, 1, ROUTINE_NAME, 0,
; 0434 0, 0, 0)
; 0435 ELSE
FIO10 25-Jan-1983 10:14:51 TOPS-20 Bliss-36 2A(142) Page 13
X2.0-1 1-Jan-1983 15:42:42 NETPKG:<VNP36>VFIO10.BLI.7 (5)
; 0436 BEGIN
; 0437 SAVEJOBFF = .(%NAME ('.JBFF'));
; 0438 %NAME ('.JBFF') = .BUF_PTR;
; 0439 CHAN_BUFFER [.CHAN] = .BUF_PTR;
; 0440 LOOKUP_BLOCK [0] = .FILE_NAME;
; 0441 LOOKUP_BLOCK [1] = .FILE_EXT;
; 0442 LOOKUP_BLOCK [2] = LOOKUP_BLOCK [3] = 0;
; 0443
; 0444 IF (.IO NEQ 0)
; 0445 THEN
; 0446 UUO (0, %O'065', .CHAN, 1) !OUTBUF
; 0447 ELSE
; 0448 UUO (0, %O'064', .CHAN, 1); !INBUF
; 0449
; 0450 %NAME ('.JBFF') = .SAVEJOBFF;
; 0451
; 0452 IF (.IO NEQ 0)
; 0453 THEN
; 0454 SUCCESS = UUO (1, %O'077', .CHAN, LOOKUP_BLOCK) !ENTER
; 0455 ELSE
; 0456 SUCCESS = UUO (1, %O'076', .CHAN, LOOKUP_BLOCK); !LOOKUP
; 0457
; 0458 IF (.SUCCESS EQL 0)
; 0459 THEN
; 0460 ERRMSG (0, 4, ROUTINE_NAME, .FNAME,
; 0461 .LOOKUP_BLOCK [3], 0, 0)
; 0462 ELSE
; 0463 BEGIN
; 0464 CHAN_STATUS [.CHAN] = .MODE;
; 0465 CHAN_DIRECTION [.CHAN] = .IO;
; 0466 CHAN_CTR [.CHAN] = 0;
; 0467 RESULT = 1; !FLAG SUCCESSFUL OPEN
; 0468 END; !OF LOOKUP/ENTER SUCCEEDED
; 0469
; 0470 END; !OF BUFFER STORAGE OBTAINED
; 0471
; 0472 END; !OF OPEN UUO SUCCEEDED
; 0473
; 0474 END; !OF HEADER STORAGE OBTAINED
; 0475
; 0476 END; !OF FILE NAME PROVIDED
; 0477
; 0478 END; !OF PARMS SEEM OK
; 0479
; 0480 .RESULT
; 0481 END; !OF ROUTINE OPEN
P.AAA: BYTE (7)"O","P","E","N",000 ; OPEN 400037' 117 120 105 116 000
P.AAB: BYTE (7)"M","A","Y"," ","N" ; MAY N 400040' 115 101 131 040 116
BYTE (7)"O","T"," ","O","P" ; OT OP 400041' 117 124 040 117 120
BYTE (7)"E","N"," ","C","H" ; EN CH 400042' 105 116 040 103 110
FIO10 25-Jan-1983 10:14:51 TOPS-20 Bliss-36 2A(142) Page 14
X2.0-1 1-Jan-1983 15:42:42 NETPKG:<VNP36>VFIO10.BLI.7 (5)
BYTE (7)"A","N","N","E","L" ; ANNEL 400043' 101 116 116 105 114
BYTE (7)" ","0"," ","-"," " ; 0 - 400044' 040 060 040 055 040
BYTE (7)"O","P","E","N",000 ; OPEN 400045' 117 120 105 116 000
P.AAC: BYTE (7)"I","N","V","A","L" ; INVAL 400046' 111 116 126 101 114
BYTE (7)"I","D"," ","C","H" ; ID CH 400047' 111 104 040 103 110
BYTE (7)"A","N","N","E","L" ; ANNEL 400050' 101 116 116 105 114
BYTE (7)" ","N","U","M","B" ; NUMB 400051' 040 116 125 115 102
BYTE (7)"E","R"," ","-"," " ; ER - 400052' 105 122 040 055 040
BYTE (7)"O","P","E","N",000 ; OPEN 400053' 117 120 105 116 000
P.AAD: BYTE (7)"C","H","A","N","N" ; CHANN 400054' 103 110 101 116 116
BYTE (7)"E","L"," ","A","L" ; EL AL 400055' 105 114 040 101 114
BYTE (7)"R","E","A","D","Y" ; READY 400056' 122 105 101 104 131
BYTE (7)" ","O","P","E","N" ; OPEN 400057' 040 117 120 105 116
BYTE (7)" ","-"," ","O","P" ; - OP 400060' 040 055 040 117 120
BYTE (7)"E","N",000,000,000 ; EN 400061' 105 116 000 000 000
P.AAE: BYTE (7)"I","L","L","E","G" ; ILLEG 400062' 111 114 114 105 107
BYTE (7)"A","L"," ","M","O" ; AL MO 400063' 101 114 040 115 117
BYTE (7)"D","E"," ","-"," " ; DE - 400064' 104 105 040 055 040
BYTE (7)"O","P","E","N",000 ; OPEN 400065' 117 120 105 116 000
P.AAF: BYTE (7)"D","S","K",000,000 ; DSK 400066' 104 123 113 000 000
EXTERN .JBFF
ROUTINE_NAME= P.AAA ; 000000 400037'
OPEN:: PUSH SP,AC0 ; SP,AC0 400067' 261 17 0 00 000000 0228
PUSH SP,AC10 ; SP,AC10 400070' 261 17 0 00 000010
PUSH SP,AC11 ; SP,AC11 400071' 261 17 0 00 000011
PUSH SP,AC12 ; SP,AC12 400072' 261 17 0 00 000012
PUSH SP,AC13 ; SP,AC13 400073' 261 17 0 00 000013
PUSH SP,AC14 ; SP,AC14 400074' 261 17 0 00 000014
PUSH SP,AC16 ; SP,AC16 400075' 261 17 0 00 000016
ADJSP SP,14 ; SP,14 400076' 105 17 0 00 000014
MOVE AC11,-30(SP) ; CHAN,CHANX 400077' 200 11 0 17 777750 0296
SETZM -3(SP) ; RESULT 400100' 402 00 0 17 777775 0297
JUMPN AC11,L.4 ; CHAN,L.4 400101' 326 11 0 00 400104' 0299
PUSH SP,C.3 ; SP,[0,,P.AAB] 400102' 261 17 0 00 400443' 0301
JRST L.7 ; L.7 400103' 254 00 0 00 400121'
L.4: CAIG AC11,17 ; CHAN,17 400104' 307 11 0 00 000017 0304
JUMPGE AC11,L.5 ; CHAN,L.5 400105' 325 11 0 00 400110'
PUSH SP,C.4 ; SP,[0,,P.AAC] 400106' 261 17 0 00 400444' 0306
JRST L.7 ; L.7 400107' 254 00 0 00 400121'
L.5: SKIPN CHAN_STATUS(AC11) ; CHAN_STATUS(CHAN) 400110' 336 00 0 11 000000' 0309
JRST L.6 ; L.6 400111' 254 00 0 00 400114'
PUSH SP,C.5 ; SP,[0,,P.AAD] 400112' 261 17 0 00 400445' 0311
JRST L.7 ; L.7 400113' 254 00 0 00 400121'
L.6: MOVE AC0,-26(SP) ; AC0,MODE 400114' 200 00 0 17 777752 0314
CAIE AC0,1 ; AC0,1 400115' 302 00 0 00 000001
CAIN AC0,2 ; AC0,2 400116' 306 00 0 00 000002
FIO10 25-Jan-1983 10:14:51 TOPS-20 Bliss-36 2A(142) Page 15
X2.0-1 1-Jan-1983 15:42:42 NETPKG:<VNP36>VFIO10.BLI.7 (5)
JRST L.8 ; L.8 400117' 254 00 0 00 400124'
PUSH SP,C.6 ; SP,[0,,P.AAE] 400120' 261 17 0 00 400446' 0316
L.7: PUSHJ SP,ERROR ; SP,ERROR 400121' 260 17 0 00 000000*
ADJSP SP,-1 ; SP,-1 400122' 105 17 0 00 777777
JRST L.39 ; L.39 400123' 254 00 0 00 400427' 0314
L.8: SETZB AC13,-1(SP) ; DEV_NAME,FILE_NAME 400124' 403 13 0 17 777777 0320
SETZM -2(SP) ; FILE_EXT 400125' 402 00 0 17 777776 0321
SETZB AC12,-4(SP) ; END_SCAN,ACCUM 400126' 403 12 0 17 777774 0322
MOVE AC1,-27(SP) ; AC1,FNAME 400127' 200 01 0 17 777751 0325
MOVEI AC0,-1(AC1) ; AC0,-1(AC1) 400130' 201 00 0 01 777777
HRLI AC0,100700 ; AC0,100700 400131' 505 00 0 00 100700
MOVE AC1,AC11 ; AC1,CHAN 400132' 200 01 0 00 000011 0326
IMULI AC1,10 ; AC1,10 400133' 221 01 0 00 000010
MOVEI AC1,CHAN_FNAME-1(AC1) ; AC1,CHAN_FNAME-1(AC1) 400134' 201 01 0 01 000137'
HRLI AC1,100700 ; AC1,100700 400135' 505 01 0 00 100700
MOVEM AC1,0(SP) ; AC1,FILN_PTR 400136' 202 01 0 17 000000
MOVEI AC1,-5(SP) ; AC1,ACCUM-1 400137' 201 01 0 17 777773 0327
HRLI AC1,60600 ; AC1,60600 400140' 505 01 0 00 060600
MOVE AC10,AC1 ; ACCUM_PTR,AC1 400141' 200 10 0 00 000001
SETZ AC14, ; ACCUM_CTR, 400142' 400 14 0 00 000000 0328
L.9: IBP AC0 ; FIL_PTR 400143' 133 00 0 00 000000 0333
MOVE AC16,AC0 ; CHAR,FIL_PTR 400144' 200 16 0 00 000000
ILDB AC16,AC16 ; CHAR,CHAR 400145' 134 16 0 00 000016
IBP 0(SP) ; FILN_PTR 400146' 133 00 0 17 000000 0334
MOVE AC1,0(SP) ; AC1,FILN_PTR 400147' 200 01 0 17 000000
IDPB AC16,AC1 ; CHAR,AC1 400150' 136 16 0 00 000001
JUMPE AC16,L.10 ; CHAR,L.10 400151' 322 16 0 00 400154' 0336
CAIE AC16,40 ; CHAR,40 400152' 302 16 0 00 000040
JRST L.11 ; L.11 400153' 254 00 0 00 400156'
L.10: MOVEI AC12,1 ; END_SCAN,1 400154' 201 12 0 00 000001 0340
JRST L.19 ; L.19 400155' 254 00 0 00 400230' 0336
L.11: CAIGE AC16,60 ; CHAR,60 400156' 305 16 0 00 000060
JRST L.12 ; L.12 400157' 254 00 0 00 400162'
CAIG AC16,71 ; CHAR,71 400160' 307 16 0 00 000071
JRST L.14 ; L.14 400161' 254 00 0 00 400171'
L.12: CAIGE AC16,101 ; CHAR,101 400162' 305 16 0 00 000101
JRST L.13 ; L.13 400163' 254 00 0 00 400166'
CAIG AC16,132 ; CHAR,132 400164' 307 16 0 00 000132
JRST L.14 ; L.14 400165' 254 00 0 00 400171'
L.13: CAIL AC16,141 ; CHAR,141 400166' 301 16 0 00 000141
CAILE AC16,172 ; CHAR,172 400167' 303 16 0 00 000172
JRST L.15 ; L.15 400170' 254 00 0 00 400202'
L.14: ADDI AC14,1 ; ACCUM_CTR,1 400171' 271 14 0 00 000001 0345
CAILE AC14,6 ; ACCUM_CTR,6 400172' 303 14 0 00 000006
JRST L.18 ; L.18 400173' 254 00 0 00 400217'
MOVE AC1,AC16 ; AC1,CHAR 400174' 200 01 0 00 000016 0350
SUBI AC1,40 ; AC1,40 400175' 275 01 0 00 000040
IBP AC10 ; ACCUM_PTR 400176' 133 00 0 00 000010
MOVE AC2,AC10 ; AC2,ACCUM_PTR 400177' 200 02 0 00 000010
IDPB AC1,AC2 ; AC1,AC2 400200' 136 01 0 00 000002
JRST L.19 ; L.19 400201' 254 00 0 00 400230' 0336
L.15: CAIE AC16,72 ; CHAR,72 400202' 302 16 0 00 000072
FIO10 25-Jan-1983 10:14:51 TOPS-20 Bliss-36 2A(142) Page 16
X2.0-1 1-Jan-1983 15:42:42 NETPKG:<VNP36>VFIO10.BLI.7 (5)
JRST L.16 ; L.16 400203' 254 00 0 00 400206'
MOVE AC13,-4(SP) ; DEV_NAME,ACCUM 400204' 200 13 0 17 777774 0356
JRST L.17 ; L.17 400205' 254 00 0 00 400212'
L.16: CAIE AC16,56 ; CHAR,56 400206' 302 16 0 00 000056 0336
JRST L.18 ; L.18 400207' 254 00 0 00 400217'
MOVE AC1,-4(SP) ; AC1,ACCUM 400210' 200 01 0 17 777774 0364
MOVEM AC1,-1(SP) ; AC1,FILE_NAME 400211' 202 01 0 17 777777
L.17: SETZB AC14,-4(SP) ; ACCUM_CTR,ACCUM 400212' 403 14 0 17 777774 0365
MOVEI AC1,-5(SP) ; AC1,ACCUM-1 400213' 201 01 0 17 777773 0367
HRLI AC1,60600 ; AC1,60600 400214' 505 01 0 00 060600
MOVE AC10,AC1 ; ACCUM_PTR,AC1 400215' 200 10 0 00 000001
JRST L.19 ; L.19 400216' 254 00 0 00 400230' 0336
L.18: PUSH SP,C.7 ; SP,[0] 400217' 261 17 0 00 400447' 0371
PUSH SP,C.8 ; SP,[2] 400220' 261 17 0 00 400450'
PUSH SP,C.9 ; SP,[0,,ROUTINE_NAME] 400221' 261 17 0 00 400451'
PUSH SP,-32(SP) ; SP,FNAME 400222' 261 17 0 17 777746
PUSH SP,C.7 ; SP,[0] 400223' 261 17 0 00 400447'
PUSH SP,C.7 ; SP,[0] 400224' 261 17 0 00 400447'
PUSH SP,C.7 ; SP,[0] 400225' 261 17 0 00 400447'
PUSHJ SP,ERRMSG ; SP,ERRMSG 400226' 260 17 0 00 000000*
ADJSP SP,-7 ; SP,-7 400227' 105 17 0 00 777771
L.19: JUMPE AC12,L.9 ; END_SCAN,L.9 400230' 322 12 0 00 400143' 0375
SKIPE -1(SP) ; FILE_NAME 400231' 332 00 0 17 777777 0381
JRST L.20 ; L.20 400232' 254 00 0 00 400236'
MOVE AC0,-4(SP) ; AC0,ACCUM 400233' 200 00 0 17 777774 0384
MOVEM AC0,-1(SP) ; AC0,FILE_NAME 400234' 202 00 0 17 777777
SETZB AC14,-4(SP) ; ACCUM_CTR,ACCUM 400235' 403 14 0 17 777774 0385
L.20: SKIPE -2(SP) ; FILE_EXT 400236' 332 00 0 17 777776 0389
JRST L.22 ; L.22 400237' 254 00 0 00 400256'
MOVE AC0,-4(SP) ; AC0,ACCUM 400240' 200 00 0 17 777774 0392
MOVEM AC0,-2(SP) ; AC0,FILE_EXT 400241' 202 00 0 17 777776
CAIG AC14,3 ; ACCUM_CTR,3 400242' 307 14 0 00 000003 0394
JRST L.21 ; L.21 400243' 254 00 0 00 400255'
PUSH SP,C.7 ; SP,[0] 400244' 261 17 0 00 400447'
PUSH SP,C.8 ; SP,[2] 400245' 261 17 0 00 400450'
PUSH SP,C.9 ; SP,[0,,ROUTINE_NAME] 400246' 261 17 0 00 400451'
PUSH SP,-32(SP) ; SP,FNAME 400247' 261 17 0 17 777746
PUSH SP,C.7 ; SP,[0] 400250' 261 17 0 00 400447'
PUSH SP,C.7 ; SP,[0] 400251' 261 17 0 00 400447'
PUSH SP,C.7 ; SP,[0] 400252' 261 17 0 00 400447'
PUSHJ SP,ERRMSG ; SP,ERRMSG 400253' 260 17 0 00 000000*
ADJSP SP,-7 ; SP,-7 400254' 105 17 0 00 777771
L.21: SETZB AC14,-4(SP) ; ACCUM_CTR,ACCUM 400255' 403 14 0 17 777774 0396
L.22: JUMPN AC13,L.23 ; DEV_NAME,L.23 400256' 326 13 0 00 400263' 0400
PUSH SP,C.10 ; SP,[0,,P.AAF] 400257' 261 17 0 00 400452'
PUSHJ SP,SIXBIT ; SP,SIXBIT 400260' 260 17 0 00 400002'
MOVE AC13,AC1 ; DEV_NAME,AC1 400261' 200 13 0 00 000001
ADJSP SP,-1 ; SP,-1 400262' 105 17 0 00 777777
L.23: SKIPE -2(SP) ; FILE_EXT 400263' 332 00 0 17 777776 0402
JRST L.24 ; L.24 400264' 254 00 0 00 400271'
PUSH SP,-24(SP) ; SP,DEFEXT 400265' 261 17 0 17 777754
PUSHJ SP,SIXBIT ; SP,SIXBIT 400266' 260 17 0 00 400002'
FIO10 25-Jan-1983 10:14:51 TOPS-20 Bliss-36 2A(142) Page 17
X2.0-1 1-Jan-1983 15:42:42 NETPKG:<VNP36>VFIO10.BLI.7 (5)
MOVEM AC1,-3(SP) ; AC1,FILE_EXT 400267' 202 01 0 17 777775
ADJSP SP,-1 ; SP,-1 400270' 105 17 0 00 777777
L.24: SKIPE -1(SP) ; FILE_NAME 400271' 332 00 0 17 777777 0404
JRST L.25 ; L.25 400272' 254 00 0 00 400276'
PUSH SP,C.7 ; SP,[0] 400273' 261 17 0 00 400447' 0406
PUSH SP,C.8 ; SP,[2] 400274' 261 17 0 00 400450'
JRST L.28 ; L.28 400275' 254 00 0 00 400331'
L.25: MOVE AC1,-26(SP) ; AC1,MODE 400276' 200 01 0 17 777752 0409
SUBI AC1,1 ; AC1,1 400277' 275 01 0 00 000001
IMULI AC1,14 ; AC1,14 400300' 221 01 0 00 000014
MOVEM AC1,-7(SP) ; AC1,OPEN_BLOCK 400301' 202 01 0 17 777771
MOVEM AC13,-6(SP) ; DEV_NAME,OPEN_BLOCK+1 400302' 202 13 0 17 777772 0410
PUSH SP,C.11 ; SP,[3] 400303' 261 17 0 00 400453' 0412
PUSHJ SP,GETSTG ; SP,GETSTG 400304' 260 17 0 00 000000*
MOVE AC0,AC1 ; HEADER_PTR,AC1 400305' 200 00 0 00 000001
ADJSP SP,-1 ; SP,-1 400306' 105 17 0 00 777777
JUMPE AC0,L.30 ; HEADER_PTR,L.30 400307' 322 00 0 00 400341'
MOVEI AC1,-7(SP) ; AC1,OPEN_BLOCK 400310' 201 01 0 17 777771 0420
ADDI AC1,2 ; AC1,2 400311' 271 01 0 00 000002
SKIPN -25(SP) ; IO 400312' 336 00 0 17 777753 0418
JRST L.26 ; L.26 400313' 254 00 0 00 400316'
HRLZM AC0,0(AC1) ; HEADER_PTR,0(AC1) 400314' 516 00 0 01 000000 0420
JRST L.27 ; L.27 400315' 254 00 0 00 400317' 0418
L.26: MOVEM AC0,0(AC1) ; HEADER_PTR,0(AC1) 400316' 202 00 0 01 000000 0422
L.27: MOVEM AC0,CHAN_HEADER(AC11) ; HEADER_PTR,CHAN_HEADER(CHAN) 400317' 202 00 0 11 000020' 0424
MOVEI AC1,-7(SP) ; AC1,OPEN_BLOCK 400320' 201 01 0 17 777771 0426
HRLI AC1,50000 ; AC1,50000 400321' 505 01 0 00 050000
DPB AC11,C.1 ; CHAN,[POINT 4,AC1,12] <23,4> 400322' 137 11 0 00 400441'
XCT AC1 ; AC1 400323' 256 00 0 00 000001
TDZA AC0,AC0 ; AC0,AC0 400324' 634 00 0 00 000000
MOVEI AC0,1 ; AC0,1 400325' 201 00 0 00 000001
JUMPN AC0,L.29 ; AC0,L.29 400326' 326 00 0 00 400334'
PUSH SP,C.7 ; SP,[0] 400327' 261 17 0 00 400447' 0427
PUSH SP,C.11 ; SP,[3] 400330' 261 17 0 00 400453'
L.28: PUSH SP,C.9 ; SP,[0,,ROUTINE_NAME] 400331' 261 17 0 00 400451'
PUSH SP,-32(SP) ; SP,FNAME 400332' 261 17 0 17 777746
JRST L.31 ; L.31 400333' 254 00 0 00 400345'
L.29: PUSH SP,C.12 ; SP,[203] 400334' 261 17 0 00 400454' 0431
PUSHJ SP,GETSTG ; SP,GETSTG 400335' 260 17 0 00 000000*
MOVE AC0,AC1 ; BUF_PTR,AC1 400336' 200 00 0 00 000001
ADJSP SP,-1 ; SP,-1 400337' 105 17 0 00 777777
JUMPN AC0,L.32 ; BUF_PTR,L.32 400340' 326 00 0 00 400347'
L.30: PUSH SP,C.7 ; SP,[0] 400341' 261 17 0 00 400447' 0433
PUSH SP,C.13 ; SP,[1] 400342' 261 17 0 00 400455'
PUSH SP,C.9 ; SP,[0,,ROUTINE_NAME] 400343' 261 17 0 00 400451'
PUSH SP,C.7 ; SP,[0] 400344' 261 17 0 00 400447'
L.31: PUSH SP,C.7 ; SP,[0] 400345' 261 17 0 00 400447'
JRST L.37 ; L.37 400346' 254 00 0 00 400413'
L.32: MOVE AC1,.JBFF ; SAVEJOBFF,.JBFF 400347' 200 01 0 00 000000* 0437
MOVEM AC0,.JBFF ; BUF_PTR,.JBFF 400350' 202 00 0 00 000000* 0438
MOVEM AC0,CHAN_BUFFER(AC11) ; BUF_PTR,CHAN_BUFFER(CHAN) 400351' 202 00 0 11 000040' 0439
MOVE AC0,-1(SP) ; AC0,FILE_NAME 400352' 200 00 0 17 777777 0440
FIO10 25-Jan-1983 10:14:51 TOPS-20 Bliss-36 2A(142) Page 18
X2.0-1 1-Jan-1983 15:42:42 NETPKG:<VNP36>VFIO10.BLI.7 (5)
MOVEM AC0,-13(SP) ; AC0,LOOKUP_BLOCK 400353' 202 00 0 17 777765
MOVE AC0,-2(SP) ; AC0,FILE_EXT 400354' 200 00 0 17 777776 0441
MOVEM AC0,-12(SP) ; AC0,LOOKUP_BLOCK+1 400355' 202 00 0 17 777766
SETZM -10(SP) ; LOOKUP_BLOCK+3 400356' 402 00 0 17 777770 0442
SETZM -11(SP) ; LOOKUP_BLOCK+2 400357' 402 00 0 17 777767
SKIPN -25(SP) ; IO 400360' 336 00 0 17 777753 0444
JRST L.33 ; L.33 400361' 254 00 0 00 400365'
MOVEI AC0,1 ; AC0,1 400362' 201 00 0 00 000001 0446
HRLI AC0,65000 ; AC0,65000 400363' 505 00 0 00 065000
JRST L.34 ; L.34 400364' 254 00 0 00 400367'
L.33: MOVEI AC0,1 ; AC0,1 400365' 201 00 0 00 000001 0448
HRLI AC0,64000 ; AC0,64000 400366' 505 00 0 00 064000
L.34: DPB AC11,C.2 ; CHAN,[POINT 4,AC0,12] <23,4> 400367' 137 11 0 00 400442'
XCT AC0 ; AC0 400370' 256 00 0 00 000000
MOVEM AC1,.JBFF ; SAVEJOBFF,.JBFF 400371' 202 01 0 00 000000* 0450
SKIPN -25(SP) ; IO 400372' 336 00 0 17 777753 0452
JRST L.35 ; L.35 400373' 254 00 0 00 400377'
MOVEI AC1,-13(SP) ; AC1,LOOKUP_BLOCK 400374' 201 01 0 17 777765 0454
HRLI AC1,77000 ; AC1,77000 400375' 505 01 0 00 077000
JRST L.36 ; L.36 400376' 254 00 0 00 400401'
L.35: MOVEI AC1,-13(SP) ; AC1,LOOKUP_BLOCK 400377' 201 01 0 17 777765 0456
HRLI AC1,76000 ; AC1,76000 400400' 505 01 0 00 076000
L.36: DPB AC11,C.1 ; CHAN,[POINT 4,AC1,12] <23,4> 400401' 137 11 0 00 400441'
XCT AC1 ; AC1 400402' 256 00 0 00 000001
TDZA AC0,AC0 ; AC0,AC0 400403' 634 00 0 00 000000
MOVEI AC0,1 ; AC0,1 400404' 201 00 0 00 000001
JUMPN AC0,L.38 ; SUCCESS,L.38 400405' 326 00 0 00 400420' 0458
PUSH SP,C.7 ; SP,[0] 400406' 261 17 0 00 400447' 0460
PUSH SP,C.14 ; SP,[4] 400407' 261 17 0 00 400456'
PUSH SP,C.9 ; SP,[0,,ROUTINE_NAME] 400410' 261 17 0 00 400451'
PUSH SP,-32(SP) ; SP,FNAME 400411' 261 17 0 17 777746
PUSH SP,-14(SP) ; SP,LOOKUP_BLOCK+3 400412' 261 17 0 17 777764
L.37: PUSH SP,C.7 ; SP,[0] 400413' 261 17 0 00 400447'
PUSH SP,C.7 ; SP,[0] 400414' 261 17 0 00 400447'
PUSHJ SP,ERRMSG ; SP,ERRMSG 400415' 260 17 0 00 000000*
ADJSP SP,-7 ; SP,-7 400416' 105 17 0 00 777771
JRST L.39 ; L.39 400417' 254 00 0 00 400427' 0458
L.38: MOVE AC0,-26(SP) ; AC0,MODE 400420' 200 00 0 17 777752 0464
MOVEM AC0,CHAN_STATUS(AC11) ; AC0,CHAN_STATUS(CHAN) 400421' 202 00 0 11 000000'
MOVE AC0,-25(SP) ; AC0,IO 400422' 200 00 0 17 777753 0465
MOVEM AC0,CHAN_DIRECTION(AC11) ; AC0,CHAN_DIRECTION(CHAN) 400423' 202 00 0 11 000120'
SETZM CHAN_CTR(AC11) ; CHAN_CTR(CHAN) 400424' 402 00 0 11 000100' 0466
MOVEI AC0,1 ; AC0,1 400425' 201 00 0 00 000001 0467
MOVEM AC0,-3(SP) ; AC0,RESULT 400426' 202 00 0 17 777775
L.39: MOVE AC1,-3(SP) ; AC1,RESULT 400427' 200 01 0 17 777775 0228
ADJSP SP,-14 ; SP,-14 400430' 105 17 0 00 777764
POP SP,AC16 ; SP,AC16 400431' 262 17 0 00 000016
POP SP,AC14 ; SP,AC14 400432' 262 17 0 00 000014
POP SP,AC13 ; SP,AC13 400433' 262 17 0 00 000013
POP SP,AC12 ; SP,AC12 400434' 262 17 0 00 000012
POP SP,AC11 ; SP,AC11 400435' 262 17 0 00 000011
POP SP,AC10 ; SP,AC10 400436' 262 17 0 00 000010
FIO10 25-Jan-1983 10:14:51 TOPS-20 Bliss-36 2A(142) Page 19
X2.0-1 1-Jan-1983 15:42:42 NETPKG:<VNP36>VFIO10.BLI.7 (5)
POP SP,AC0 ; SP,AC0 400437' 262 17 0 00 000000
POPJ SP, ; SP, 400440' 263 17 0 00 000000
C.1: POINT 4,AC1,12 ; 4,AC1,12 400441' 27 04 0 00 000001
C.2: POINT 4,AC0,12 ; 4,AC0,12 400442' 27 04 0 00 000000
C.3: XWD 0,P.AAB ; 0,P.AAB 400443' 000000 400040'
C.4: XWD 0,P.AAC ; 0,P.AAC 400444' 000000 400046'
C.5: XWD 0,P.AAD ; 0,P.AAD 400445' 000000 400054'
C.6: XWD 0,P.AAE ; 0,P.AAE 400446' 000000 400062'
C.7: EXP 0 ; 0 400447' 000000 000000
C.8: EXP 2 ; 2 400450' 000000 000002
C.9: XWD 0,ROUTINE_NAME ; 0,ROUTINE_NAME 400451' 000000 400037'
C.10: XWD 0,P.AAF ; 0,P.AAF 400452' 000000 400066'
C.11: EXP 3 ; 3 400453' 000000 000003
C.12: EXP 203 ; 203 400454' 000000 000203
C.13: EXP 1 ; 1 400455' 000000 000001
C.14: EXP 4 ; 4 400456' 000000 000004
; Routine Size: 248 words
; 0482
FIO10 25-Jan-1983 10:14:51 TOPS-20 Bliss-36 2A(142) Page 20
X2.0-1 1-Jan-1983 15:42:42 NETPKG:<VNP36>VFIO10.BLI.7 (6)
; 0483 GLOBAL ROUTINE CLOSE (CHANX) : NOVALUE = ! CLOSE A CHANNEL
; 0484
; 0485 !++
; 0486 ! FUNCTIONAL DESCRIPTION:
; 0487 !
; 0488 ! THE CLOSE ROUTINE CLOSES A CHANNEL.
; 0489 !
; 0490 ! FORMAL PARAMETERS:
; 0491 !
; 0492 ! CHANX - THE CHANNEL TO CLOSE.
; 0493 !
; 0494 ! IMPLICIT INPUTS:
; 0495 !
; 0496 ! NONE
; 0497 !
; 0498 ! IMPLICIT OUTPUTS:
; 0499 !
; 0500 ! NONE
; 0501 !
; 0502 ! ROUTINE VALUE:
; 0503 !
; 0504 ! NONE
; 0505 !
; 0506 ! SIDE EFFECTS
; 0507 !
; 0508 ! CLOSES THE CHANNEL BY DOING UUOS AND MODIFYING OWN STORAGE
; 0509 !
; 0510 !--
; 0511
; 0512 BEGIN
; 0513
; 0514 LOCAL
; 0515 CHAN;
; 0516
; 0517 BUILTIN
; 0518 UUO;
; 0519
; 0520 CHAN = .CHANX;
; 0521
; 0522 IF (.CHAN EQL 0)
; 0523 THEN
; 0524 ERROR (UPLIT (%ASCIZ'YOU MAY NOT CLOSE CHANNEL 0 - CLOSE'))
; 0525 ELSE
; 0526
; 0527 IF ((.CHAN LSS 0) OR (.CHAN GTR 15))
; 0528 THEN
; 0529 ERROR (UPLIT (%ASCIZ'INVALID CHANNEL NUMBER - CLOSE'))
; 0530 ELSE
; 0531
; 0532 IF (.CHAN_STATUS [.CHAN] EQL 0)
; 0533 THEN
; 0534 ERROR (UPLIT (%ASCIZ'CHANNEL IS NOT OPEN - CLOSE'))
FIO10 25-Jan-1983 10:14:51 TOPS-20 Bliss-36 2A(142) Page 21
X2.0-1 1-Jan-1983 15:42:42 NETPKG:<VNP36>VFIO10.BLI.7 (6)
; 0535 ELSE
; 0536 BEGIN !CHANNEL NUMBER SEEMS OK
; 0537
; 0538 IF (.CHAN_DIRECTION [.CHAN] EQL 1)
; 0539 THEN
; 0540 BEGIN !ADJUST BYTE POINTER TO LAST BYTE
; 0541
; 0542 INCR COUNTER FROM 1 TO 8 DO
; 0543 OUTPUT (.CHAN, 0);
; 0544
; 0545 END;
; 0546
; 0547 UUO (0, %O'070', .CHAN, 0); !CLOSE
; 0548 FRESTG (.CHAN_BUFFER [.CHAN], %O'203');
; 0549 FRESTG (.CHAN_HEADER [.CHAN], 3);
; 0550 CHAN_STATUS [.CHAN] = 0;
; 0551 END; !CHANNEL NUMBER OK
; 0552
; 0553 END; !OF ROUTINE CLOSE
P.AAG: BYTE (7)"Y","O","U"," ","M" ; YOU M 400457' 131 117 125 040 115
BYTE (7)"A","Y"," ","N","O" ; AY NO 400460' 101 131 040 116 117
BYTE (7)"T"," ","C","L","O" ; T CLO 400461' 124 040 103 114 117
BYTE (7)"S","E"," ","C","H" ; SE CH 400462' 123 105 040 103 110
BYTE (7)"A","N","N","E","L" ; ANNEL 400463' 101 116 116 105 114
BYTE (7)" ","0"," ","-"," " ; 0 - 400464' 040 060 040 055 040
BYTE (7)"C","L","O","S","E" ; CLOSE 400465' 103 114 117 123 105
BYTE (7)000,000,000,000,000 ; 400466' 000 000 000 000 000
P.AAH: BYTE (7)"I","N","V","A","L" ; INVAL 400467' 111 116 126 101 114
BYTE (7)"I","D"," ","C","H" ; ID CH 400470' 111 104 040 103 110
BYTE (7)"A","N","N","E","L" ; ANNEL 400471' 101 116 116 105 114
BYTE (7)" ","N","U","M","B" ; NUMB 400472' 040 116 125 115 102
BYTE (7)"E","R"," ","-"," " ; ER - 400473' 105 122 040 055 040
BYTE (7)"C","L","O","S","E" ; CLOSE 400474' 103 114 117 123 105
BYTE (7)000,000,000,000,000 ; 400475' 000 000 000 000 000
P.AAI: BYTE (7)"C","H","A","N","N" ; CHANN 400476' 103 110 101 116 116
BYTE (7)"E","L"," ","I","S" ; EL IS 400477' 105 114 040 111 123
BYTE (7)" ","N","O","T"," " ; NOT 400500' 040 116 117 124 040
BYTE (7)"O","P","E","N"," " ; OPEN 400501' 117 120 105 116 040
BYTE (7)"-"," ","C","L","O" ; - CLO 400502' 055 040 103 114 117
BYTE (7)"S","E",000,000,000 ; SE 400503' 123 105 000 000 000
CLOSE:: PUSH SP,AC0 ; SP,AC0 400504' 261 17 0 00 000000 0483
PUSH SP,AC10 ; SP,AC10 400505' 261 17 0 00 000010
MOVE AC10,-3(SP) ; CHAN,CHANX 400506' 200 10 0 17 777775 0520
JUMPN AC10,L.40 ; CHAN,L.40 400507' 326 10 0 00 400512' 0522
PUSH SP,C.15 ; SP,[0,,P.AAG] 400510' 261 17 0 00 400557' 0524
JRST L.43 ; L.43 400511' 254 00 0 00 400522'
L.40: JUMPL AC10,L.41 ; CHAN,L.41 400512' 321 10 0 00 400515' 0527
CAIG AC10,17 ; CHAN,17 400513' 307 10 0 00 000017
FIO10 25-Jan-1983 10:14:51 TOPS-20 Bliss-36 2A(142) Page 22
X2.0-1 1-Jan-1983 15:42:42 NETPKG:<VNP36>VFIO10.BLI.7 (6)
JRST L.42 ; L.42 400514' 254 00 0 00 400517'
L.41: PUSH SP,C.16 ; SP,[0,,P.AAH] 400515' 261 17 0 00 400560' 0529
JRST L.43 ; L.43 400516' 254 00 0 00 400522'
L.42: SKIPE CHAN_STATUS(AC10) ; CHAN_STATUS(CHAN) 400517' 332 00 0 10 000000' 0532
JRST L.44 ; L.44 400520' 254 00 0 00 400524'
PUSH SP,C.17 ; SP,[0,,P.AAI] 400521' 261 17 0 00 400561' 0534
L.43: PUSHJ SP,ERROR ; SP,ERROR 400522' 260 17 0 00 000000*
JRST L.47 ; L.47 400523' 254 00 0 00 400553' 0532
L.44: MOVEI AC0,1 ; AC0,1 400524' 201 00 0 00 000001 0538
CAME AC0,CHAN_DIRECTION(AC10) ; AC0,CHAN_DIRECTION(CHAN) 400525' 312 00 0 10 000120'
JRST L.46 ; L.46 400526' 254 00 0 00 400537'
MOVEI AC0,1 ; COUNTER,1 400527' 201 00 0 00 000001 0542
L.45: PUSH SP,AC10 ; SP,CHAN 400530' 261 17 0 00 000010 0543
PUSH SP,C.7 ; SP,[0] 400531' 261 17 0 00 400447'
PUSHJ SP,OUTPUT ; SP,OUTPUT 400532' 260 17 0 00 000000V
ADJSP SP,-2 ; SP,-2 400533' 105 17 0 00 777776
ADDI AC0,1 ; COUNTER,1 400534' 271 00 0 00 000001 0542
CAIG AC0,10 ; COUNTER,10 400535' 307 00 0 00 000010
JRST L.45 ; L.45 400536' 254 00 0 00 400530'
L.46: MOVEI AC0,0 ; AC0,0 400537' 201 00 0 00 000000 0547
HRLI AC0,70000 ; AC0,70000 400540' 505 00 0 00 070000
DPB AC10,C.2 ; CHAN,[POINT 4,AC0,12] <23,4> 400541' 137 10 0 00 400442'
XCT AC0 ; AC0 400542' 256 00 0 00 000000
PUSH SP,CHAN_BUFFER(AC10) ; SP,CHAN_BUFFER(CHAN) 400543' 261 17 0 10 000040' 0548
PUSH SP,C.12 ; SP,[203] 400544' 261 17 0 00 400454'
PUSHJ SP,FRESTG ; SP,FRESTG 400545' 260 17 0 00 000000*
PUSH SP,CHAN_HEADER(AC10) ; SP,CHAN_HEADER(CHAN) 400546' 261 17 0 10 000020' 0549
PUSH SP,C.11 ; SP,[3] 400547' 261 17 0 00 400453'
PUSHJ SP,FRESTG ; SP,FRESTG 400550' 260 17 0 00 000000*
SETZM CHAN_STATUS(AC10) ; CHAN_STATUS(CHAN) 400551' 402 00 0 10 000000' 0550
ADJSP SP,-3 ; SP,-3 400552' 105 17 0 00 777775 0536
L.47: ADJSP SP,-1 ; SP,-1 400553' 105 17 0 00 777777 0512
POP SP,AC10 ; SP,AC10 400554' 262 17 0 00 000010 0483
POP SP,AC0 ; SP,AC0 400555' 262 17 0 00 000000
POPJ SP, ; SP, 400556' 263 17 0 00 000000
C.15: XWD 0,P.AAG ; 0,P.AAG 400557' 000000 400457'
C.16: XWD 0,P.AAH ; 0,P.AAH 400560' 000000 400467'
C.17: XWD 0,P.AAI ; 0,P.AAI 400561' 000000 400476'
; Routine Size: 46 words
; 0554
FIO10 25-Jan-1983 10:14:51 TOPS-20 Bliss-36 2A(142) Page 23
X2.0-1 1-Jan-1983 15:42:42 NETPKG:<VNP36>VFIO10.BLI.7 (7)
; 0555 GLOBAL ROUTINE INPUT (CHANX) = ! READ FROM AN I/O DEVICE
; 0556
; 0557 !++
; 0558 ! FUNCTIONAL DESCRIPTION:
; 0559 !
; 0560 ! READ A BYTE OR WORD FROM THE SPECIFIED CHANNEL
; 0561 ! EOF OR ERROR RETURNS A -1
; 0562 !
; 0563 ! FORMAL PARAMETERS:
; 0564 !
; 0565 ! CHANX - THE CHANNEL OVER WHICH TO READ THE BYTE OR WORD
; 0566 !
; 0567 ! IMPLICIT INPUTS:
; 0568 !
; 0569 ! NONE
; 0570 !
; 0571 ! IMPLICIT OUTPUTS:
; 0572 !
; 0573 ! NONE
; 0574 !
; 0575 ! ROUTINE VALUE:
; 0576 !
; 0577 ! THE BYTE OR WORD READ
; 0578 !
; 0579 ! SIDE EFFECTS
; 0580 !
; 0581 ! REMOVES ONE BYTE OR WORD FROM THE INPUT STRING
; 0582 !
; 0583 !--
; 0584
; 0585 BEGIN
; 0586
; 0587 LOCAL
; 0588 CHAN,
; 0589 CHAN_WORD_TMP,
; 0590 CHARACTER,
; 0591 FILI : REF VECTOR [3],
; 0592 STATUS;
; 0593
; 0594 BUILTIN
; 0595 UUO;
; 0596
; 0597 CHAN = .CHANX;
; 0598 CHARACTER = 0;
; 0599
; 0600 IF ((.CHAN LSS 0) OR (.CHAN GTR 15))
; 0601 THEN
; 0602 ERROR (UPLIT (%ASCIZ'INVALID CHANNEL NUMBER - INPUT'))
; 0603 ELSE
; 0604
; 0605 IF (.CHAN EQL 0)
; 0606 THEN
FIO10 25-Jan-1983 10:14:51 TOPS-20 Bliss-36 2A(142) Page 24
X2.0-1 1-Jan-1983 15:42:42 NETPKG:<VNP36>VFIO10.BLI.7 (7)
; 0607 BEGIN !CHANNEL 0 IS THE TERMINAL
; 0608 UUO (0, %O'051', 4, CHARACTER); !INCHWL
; 0609 END
; 0610 ELSE
; 0611 BEGIN !NOT CHANNEL 0
; 0612
; 0613 IF (.CHAN_STATUS [.CHAN] EQL 0)
; 0614 THEN
; 0615 ERROR (UPLIT (%ASCIZ'CHANNEL NOT OPEN - INPUT'))
; 0616 ELSE
; 0617
; 0618 IF (.CHAN_DIRECTION [.CHAN] NEQ 0)
; 0619 THEN
; 0620 ERROR (UPLIT (%ASCIZ'CHANNEL NOT OPEN FOR INPUT - INPUT'))
; 0621 ELSE
; 0622 BEGIN !LOOKS OK
; 0623 CHAN_WORD_TMP = .CHAN_WORD [.CHAN];
; 0624
; 0625 IF (.CHAN_CTR [.CHAN] NEQ 0)
; 0626 THEN
; 0627 BEGIN !TAKE A BYTE FROM CURRENT WORD
; 0628 CHARACTER = .CHAN_WORD_TMP<(CASE .CHAN_CTR [.CHAN] FROM 1 TO 3 OF
; 0629 SET
; 0630 [1] : 26;
; 0631 [2] : 0;
; 0632 [3] : 8;
; 0633 TES), 8>;
; 0634 CHAN_CTR [.CHAN] = .CHAN_CTR [.CHAN] + 1;
; 0635
; 0636 IF (.CHAN_CTR [.CHAN] EQL 4) THEN CHAN_CTR [.CHAN] = 0;
; 0637
; 0638 END
; 0639 ELSE
; 0640 BEGIN !NEED A NEW WORD
; 0641 FILI = .CHAN_HEADER [.CHAN];
; 0642
; 0643 IF ((FILI [2] = .FILI [2] - 1) LEQ 0)
; 0644 THEN
; 0645 BEGIN !NEED A NEW BUFFER
; 0646
; 0647 IF (UUO (1, %O'056', .CHAN, 0) NEQ 0) !IN UUO
; 0648 THEN
; 0649 BEGIN
; 0650 BEGIN
; 0651
; 0652 IF (UUO (1, %O'063', .CHAN, %O'20000') NEQ 0) !STATZ UUO
; 0653 THEN
; 0654 BEGIN
; 0655 UUO (0, %O'062', .CHAN, STATUS); ! GETSTS
; 0656 ERRMSG (0, 5, UPLIT (%ASCIZ'INPUT'), CHAN_FNAME [.CHAN*FILE_NAME_LEN],
; 0657 .STATUS, 0, 0);
; 0658 END;
FIO10 25-Jan-1983 10:14:51 TOPS-20 Bliss-36 2A(142) Page 25
X2.0-1 1-Jan-1983 15:42:42 NETPKG:<VNP36>VFIO10.BLI.7 (7)
; 0659
; 0660 END;
; 0661 CHARACTER = -1; !THIS VALUE RETURNED ON EOF OR ERROR
; 0662 END
; 0663 ELSE
; 0664 BEGIN
; 0665 FILI [1] = CH$PLUS (.FILI [1], -1);
; 0666 CHARACTER = CH$A_RCHAR (FILI [1]);
; 0667 END
; 0668
; 0669 END
; 0670 ELSE
; 0671 CHARACTER = CH$A_RCHAR (FILI [1]);
; 0672
; 0673 IF ((.CHAN_STATUS [.CHAN] EQL 2) AND (.CHARACTER GEQ 0))
; 0674 THEN
; 0675 BEGIN !WORD INPUT MODE, NOT EOF
; 0676 CHAN_WORD [.CHAN] = .CHARACTER;
; 0677 CHAN_WORD_TMP = .CHARACTER;
; 0678 CHAN_CTR [.CHAN] = 1;
; 0679 CHARACTER = .CHAN_WORD_TMP<18, 8>;
; 0680 END;
; 0681
; 0682 END; !OF NEED NEW LONG WORD
; 0683
; 0684 END; !OF "LOOKS OK"
; 0685
; 0686 END; !OF NOT CHANNEL 0
; 0687
; 0688 .CHARACTER
; 0689 END; !OF INPUT ROUTINE
P.AAJ: BYTE (7)"I","N","V","A","L" ; INVAL 400562' 111 116 126 101 114
BYTE (7)"I","D"," ","C","H" ; ID CH 400563' 111 104 040 103 110
BYTE (7)"A","N","N","E","L" ; ANNEL 400564' 101 116 116 105 114
BYTE (7)" ","N","U","M","B" ; NUMB 400565' 040 116 125 115 102
BYTE (7)"E","R"," ","-"," " ; ER - 400566' 105 122 040 055 040
BYTE (7)"I","N","P","U","T" ; INPUT 400567' 111 116 120 125 124
BYTE (7)000,000,000,000,000 ; 400570' 000 000 000 000 000
P.AAK: BYTE (7)"C","H","A","N","N" ; CHANN 400571' 103 110 101 116 116
BYTE (7)"E","L"," ","N","O" ; EL NO 400572' 105 114 040 116 117
BYTE (7)"T"," ","O","P","E" ; T OPE 400573' 124 040 117 120 105
BYTE (7)"N"," ","-"," ","I" ; N - I 400574' 116 040 055 040 111
BYTE (7)"N","P","U","T",000 ; NPUT 400575' 116 120 125 124 000
P.AAL: BYTE (7)"C","H","A","N","N" ; CHANN 400576' 103 110 101 116 116
BYTE (7)"E","L"," ","N","O" ; EL NO 400577' 105 114 040 116 117
BYTE (7)"T"," ","O","P","E" ; T OPE 400600' 124 040 117 120 105
BYTE (7)"N"," ","F","O","R" ; N FOR 400601' 116 040 106 117 122
BYTE (7)" ","I","N","P","U" ; INPU 400602' 040 111 116 120 125
BYTE (7)"T"," ","-"," ","I" ; T - I 400603' 124 040 055 040 111
BYTE (7)"N","P","U","T",000 ; NPUT 400604' 116 120 125 124 000
FIO10 25-Jan-1983 10:14:51 TOPS-20 Bliss-36 2A(142) Page 26
X2.0-1 1-Jan-1983 15:42:42 NETPKG:<VNP36>VFIO10.BLI.7 (7)
P.AAM: BYTE (7)"I","N","P","U","T" ; INPUT 400605' 111 116 120 125 124
BYTE (7)000,000,000,000,000 ; 400606' 000 000 000 000 000
INPUT:: PUSH SP,AC0 ; SP,AC0 400607' 261 17 0 00 000000 0555
PUSH SP,AC10 ; SP,AC10 400610' 261 17 0 00 000010
PUSH SP,AC11 ; SP,AC11 400611' 261 17 0 00 000011
MOVE AC10,-4(SP) ; CHAN,CHANX 400612' 200 10 0 17 777774 0597
SETZ AC0, ; CHARACTER, 400613' 400 00 0 00 000000 0598
JUMPL AC10,L.48 ; CHAN,L.48 400614' 321 10 0 00 400617' 0600
CAIG AC10,17 ; CHAN,17 400615' 307 10 0 00 000017
JRST L.49 ; L.49 400616' 254 00 0 00 400621'
L.48: PUSH SP,C.22 ; SP,[0,,P.AAJ] 400617' 261 17 0 00 400755' 0602
JRST L.52 ; L.52 400620' 254 00 0 00 400633'
L.49: JUMPN AC10,L.50 ; CHAN,L.50 400621' 326 10 0 00 400624' 0605
TTCALL 4,AC0 ; 4,CHARACTER 400622' 051 04 0 00 000000 0608
JRST L.64 ; L.64 400623' 254 00 0 00 400744' 0605
L.50: SKIPE CHAN_STATUS(AC10) ; CHAN_STATUS(CHAN) 400624' 332 00 0 10 000000' 0613
JRST L.51 ; L.51 400625' 254 00 0 00 400630'
PUSH SP,C.23 ; SP,[0,,P.AAK] 400626' 261 17 0 00 400756' 0615
JRST L.52 ; L.52 400627' 254 00 0 00 400633'
L.51: SKIPN CHAN_DIRECTION(AC10) ; CHAN_DIRECTION(CHAN) 400630' 336 00 0 10 000120' 0618
JRST L.53 ; L.53 400631' 254 00 0 00 400636'
PUSH SP,C.24 ; SP,[0,,P.AAL] 400632' 261 17 0 00 400757' 0620
L.52: PUSHJ SP,ERROR ; SP,ERROR 400633' 260 17 0 00 000000*
ADJSP SP,-1 ; SP,-1 400634' 105 17 0 00 777777
JRST L.64 ; L.64 400635' 254 00 0 00 400744' 0618
L.53: MOVE AC11,CHAN_WORD(AC10) ; CHAN_WORD_TMP,CHAN_WORD(CHAN) 400636' 200 11 0 10 000060' 0623
MOVE AC1,CHAN_CTR(AC10) ; AC1,CHAN_CTR(CHAN) 400637' 200 01 0 10 000100' 0625
JUMPE AC1,L.59 ; AC1,L.59 400640' 322 01 0 00 400662'
SUBI AC1,1 ; AC1,1 400641' 275 01 0 00 000001 0628
JRST L.54(AC1) ; L.54(AC1) 400642' 254 00 0 01 400643'
L.54: JRST L.55 ; L.55 400643' 254 00 0 00 400646'
JRST L.56 ; L.56 400644' 254 00 0 00 400650'
JRST L.57 ; L.57 400645' 254 00 0 00 400651'
L.55: MOVEI AC1,32 ; AC1,32 400646' 201 01 0 00 000032
JRST L.58 ; L.58 400647' 254 00 0 00 400652'
L.56: TDZA AC1,AC1 ; AC1,AC1 400650' 634 01 0 00 000001
L.57: MOVEI AC1,10 ; AC1,10 400651' 201 01 0 00 000010
L.58: MOVE AC2,C.18 ; AC2,[POINT 8,CHAN_WORD_TMP,35] <0,8> 400652' 200 02 0 00 400751'
DPB AC1,C.19 ; AC1,[POINT 6,AC2,5] <30,6> 400653' 137 01 0 00 400752'
LDB AC0,AC2 ; CHARACTER,AC2 400654' 135 00 0 00 000002
AOS CHAN_CTR(AC10) ; CHAN_CTR(CHAN) 400655' 350 00 0 10 000100' 0634
MOVEI AC1,4 ; AC1,4 400656' 201 01 0 00 000004 0636
CAMN AC1,CHAN_CTR(AC10) ; AC1,CHAN_CTR(CHAN) 400657' 316 01 0 10 000100'
SETZM CHAN_CTR(AC10) ; CHAN_CTR(CHAN) 400660' 402 00 0 10 000100'
JRST L.64 ; L.64 400661' 254 00 0 00 400744'
L.59: MOVE AC1,CHAN_HEADER(AC10) ; FILI,CHAN_HEADER(CHAN) 400662' 200 01 0 10 000020' 0641
SOSLE 2(AC1) ; 2(FILI) 400663' 373 00 0 01 000002 0643
JRST L.62 ; L.62 400664' 254 00 0 00 400730'
MOVEI AC3,0 ; AC3,0 400665' 201 03 0 00 000000 0647
HRLI AC3,56000 ; AC3,56000 400666' 505 03 0 00 056000
FIO10 25-Jan-1983 10:14:51 TOPS-20 Bliss-36 2A(142) Page 27
X2.0-1 1-Jan-1983 15:42:42 NETPKG:<VNP36>VFIO10.BLI.7 (7)
DPB AC10,C.20 ; CHAN,[POINT 4,AC3,12] <23,4> 400667' 137 10 0 00 400753'
XCT AC3 ; AC3 400670' 256 00 0 00 000003
TDZA AC2,AC2 ; AC2,AC2 400671' 634 02 0 00 000002
MOVEI AC2,1 ; AC2,1 400672' 201 02 0 00 000001
JUMPE AC2,L.61 ; AC2,L.61 400673' 322 02 0 00 400725'
MOVEI AC3,20000 ; AC3,20000 400674' 201 03 0 00 020000 0652
HRLI AC3,63000 ; AC3,63000 400675' 505 03 0 00 063000
DPB AC10,C.20 ; CHAN,[POINT 4,AC3,12] <23,4> 400676' 137 10 0 00 400753'
XCT AC3 ; AC3 400677' 256 00 0 00 000003
TDZA AC2,AC2 ; AC2,AC2 400700' 634 02 0 00 000002
MOVEI AC2,1 ; AC2,1 400701' 201 02 0 00 000001
JUMPE AC2,L.60 ; AC2,L.60 400702' 322 02 0 00 400723'
MOVEI AC1,2 ; AC1,STATUS 400703' 201 01 0 00 000002 0655
HRLI AC1,62000 ; AC1,62000 400704' 505 01 0 00 062000
DPB AC10,C.1 ; CHAN,[POINT 4,AC1,12] <23,4> 400705' 137 10 0 00 400441'
XCT AC1 ; AC1 400706' 256 00 0 00 000001
PUSH SP,C.7 ; SP,[0] 400707' 261 17 0 00 400447' 0656
PUSH SP,C.25 ; SP,[5] 400710' 261 17 0 00 400760'
PUSH SP,C.26 ; SP,[0,,P.AAM] 400711' 261 17 0 00 400761'
MOVE AC1,AC10 ; AC1,CHAN 400712' 200 01 0 00 000010
IMULI AC1,10 ; AC1,10 400713' 221 01 0 00 000010
ADDI AC1,CHAN_FNAME ; AC1,CHAN_FNAME 400714' 271 01 0 00 000140'
PUSH SP,AC1 ; SP,AC1 400715' 261 17 0 00 000001
PUSH SP,AC2 ; SP,STATUS 400716' 261 17 0 00 000002
PUSH SP,C.7 ; SP,[0] 400717' 261 17 0 00 400447'
PUSH SP,C.7 ; SP,[0] 400720' 261 17 0 00 400447'
PUSHJ SP,ERRMSG ; SP,ERRMSG 400721' 260 17 0 00 000000*
ADJSP SP,-7 ; SP,-7 400722' 105 17 0 00 777771 0654
L.60: SETO AC0, ; CHARACTER, 400723' 474 00 0 00 000000 0661
JRST L.63 ; L.63 400724' 254 00 0 00 400733' 0645
L.61: SETO AC2, ; AC2, 400725' 474 02 0 00 000000 0665
ADJBP AC2,1(AC1) ; AC2,1(FILI) 400726' 133 02 0 01 000001
MOVEM AC2,1(AC1) ; AC2,1(FILI) 400727' 202 02 0 01 000001
L.62: IBP 1(AC1) ; 1(FILI) 400730' 133 00 0 01 000001 0671
MOVE AC0,1(AC1) ; CHARACTER,1(FILI) 400731' 200 00 0 01 000001
ILDB AC0,AC0 ; CHARACTER,CHARACTER 400732' 134 00 0 00 000000
L.63: MOVEI AC1,2 ; AC1,2 400733' 201 01 0 00 000002 0673
CAME AC1,CHAN_STATUS(AC10) ; AC1,CHAN_STATUS(CHAN) 400734' 312 01 0 10 000000'
JRST L.64 ; L.64 400735' 254 00 0 00 400744'
JUMPL AC0,L.64 ; CHARACTER,L.64 400736' 321 00 0 00 400744'
MOVEM AC0,CHAN_WORD(AC10) ; CHARACTER,CHAN_WORD(CHAN) 400737' 202 00 0 10 000060' 0676
MOVE AC11,AC0 ; CHAN_WORD_TMP,CHARACTER 400740' 200 11 0 00 000000 0677
MOVEI AC1,1 ; AC1,1 400741' 201 01 0 00 000001 0678
MOVEM AC1,CHAN_CTR(AC10) ; AC1,CHAN_CTR(CHAN) 400742' 202 01 0 10 000100'
LDB AC0,C.21 ; CHARACTER,[POINT 8,CHAN_WORD_TMP,17] <18,8>
; 400743' 135 00 0 00 400754' 0679
L.64: MOVE AC1,AC0 ; AC1,CHARACTER 400744' 200 01 0 00 000000 0555
POP SP,AC11 ; SP,AC11 400745' 262 17 0 00 000011
POP SP,AC10 ; SP,AC10 400746' 262 17 0 00 000010
POP SP,AC0 ; SP,AC0 400747' 262 17 0 00 000000
POPJ SP, ; SP, 400750' 263 17 0 00 000000
C.18: POINT 8,AC11,35 ; 8,CHAN_WORD_TMP,35 400751' 00 10 0 00 000011
FIO10 25-Jan-1983 10:14:51 TOPS-20 Bliss-36 2A(142) Page 28
X2.0-1 1-Jan-1983 15:42:42 NETPKG:<VNP36>VFIO10.BLI.7 (7)
C.19: POINT 6,AC2,5 ; 6,AC2,5 400752' 36 06 0 00 000002
C.20: POINT 4,AC3,12 ; 4,AC3,12 400753' 27 04 0 00 000003
C.21: POINT 8,AC11,17 ; 8,CHAN_WORD_TMP,17 400754' 22 10 0 00 000011
C.22: XWD 0,P.AAJ ; 0,P.AAJ 400755' 000000 400562'
C.23: XWD 0,P.AAK ; 0,P.AAK 400756' 000000 400571'
C.24: XWD 0,P.AAL ; 0,P.AAL 400757' 000000 400576'
C.25: EXP 5 ; 5 400760' 000000 000005
C.26: XWD 0,P.AAM ; 0,P.AAM 400761' 000000 400605'
; Routine Size: 107 words
; 0690
FIO10 25-Jan-1983 10:14:51 TOPS-20 Bliss-36 2A(142) Page 29
X2.0-1 1-Jan-1983 15:42:42 NETPKG:<VNP36>VFIO10.BLI.7 (8)
; 0691 GLOBAL ROUTINE OUTPUT (CHANX, OUTWRD) : NOVALUE = ! WRITE ON AN I/O DEVICE
; 0692
; 0693 !++
; 0694 ! FUNCTIONAL DESCRIPTION:
; 0695 !
; 0696 ! WRITE THE SPECIFIED BYTE OR WORD OUT THROUGH THE CHANNEL.
; 0697 !
; 0698 ! FORMAL PARAMETERS:
; 0699 !
; 0700 ! CHANX - THE CHANNEL TO SEND DATA THROUGH
; 0701 ! OUTWRD - THE BYTE OR WORD TO SEND
; 0702 !
; 0703 ! IMPLICIT INPUTS:
; 0704 !
; 0705 ! NONE
; 0706 !
; 0707 ! IMPLICIT OUTPUTS:
; 0708 !
; 0709 ! NONE
; 0710 !
; 0711 ! ROUTINE VALUE:
; 0712 !
; 0713 ! NONE
; 0714 !
; 0715 ! SIDE EFFECTS
; 0716 !
; 0717 ! PLACES ONE MORE WORD OR BYTE ON THE I/O DEVICE
; 0718 !
; 0719 !--
; 0720
; 0721 BEGIN
; 0722
; 0723 LOCAL
; 0724 CHAN,
; 0725 CHAN_WORD_TMP,
; 0726 CHARACTER,
; 0727 FILI : REF VECTOR [3],
; 0728 STATUS;
; 0729
; 0730 BUILTIN
; 0731 UUO;
; 0732
; 0733 CHAN = .CHANX;
; 0734
; 0735 IF ((.CHAN LSS 0) OR (.CHAN GTR 15))
; 0736 THEN
; 0737 ERROR (UPLIT (%ASCIZ'INVALID CHANNEL NUMBER - OUTPUT'))
; 0738 ELSE
; 0739
; 0740 IF (.CHAN EQL 0)
; 0741 THEN
; 0742 BEGIN !CHANNEL 0 IS THE TERMINAL
FIO10 25-Jan-1983 10:14:51 TOPS-20 Bliss-36 2A(142) Page 30
X2.0-1 1-Jan-1983 15:42:42 NETPKG:<VNP36>VFIO10.BLI.7 (8)
; 0743 OUTPUT(1,.OUTWRD); !LOG TERMINAL OUTPUT TO CHAN 1
; 0744 UUO (0, %O'051', 1, OUTWRD); !OUTCHR
; 0745 END
; 0746 ELSE
; 0747 BEGIN !NOT CHANNEL 0
; 0748
; 0749 IF (.CHAN_STATUS [.CHAN] EQL 0)
; 0750 THEN
; 0751 ERROR (UPLIT (%ASCIZ'CHANNEL NOT OPEN - OUTPUT'))
; 0752 ELSE
; 0753
; 0754 IF (.CHAN_DIRECTION [.CHAN] NEQ 1)
; 0755 THEN
; 0756 ERROR (UPLIT (%ASCIZ'CHANNEL NOT OPEN FOR OUTPUT - OUTPUT'))
; 0757 ELSE
; 0758 BEGIN !LOOKS OK
; 0759 CHAN_WORD_TMP = .CHAN_WORD [.CHAN];
; 0760
; 0761 IF (.CHAN_STATUS [.CHAN] EQL 2)
; 0762 THEN
; 0763 BEGIN !BINARY MODE, PACK BYTES
; 0764 CHAN_WORD_TMP<(CASE .CHAN_CTR [.CHAN] FROM 0 TO 3 OF
; 0765 SET
; 0766 [0] : 18;
; 0767 [1] : 26;
; 0768 [2] : 0;
; 0769 [3] : 8;
; 0770 TES), 8> = .OUTWRD;
; 0771 CHAN_CTR [.CHAN] = .CHAN_CTR [.CHAN] + 1;
; 0772
; 0773 IF (.CHAN_CTR [.CHAN] EQL 4) THEN CHAN_CTR [.CHAN] = 0;
; 0774
; 0775 END !BINARY MODE PACKING
; 0776 ELSE
; 0777 CHAN_WORD_TMP = .OUTWRD<0, 7>;
; 0778
; 0779 IF (.CHAN_CTR [.CHAN] EQL 0)
; 0780 THEN
; 0781 BEGIN !NEED TO WRITE LONG WORD
; 0782 FILI = .CHAN_HEADER [.CHAN];
; 0783
; 0784 IF ((FILI [2] = .FILI [2] - 1) LEQ 0)
; 0785 THEN
; 0786 BEGIN !DUMP BUFFER
; 0787
; 0788 IF (UUO (1, %O'057', .CHAN, 0) NEQ 0) !OUT UUO
; 0789 THEN
; 0790 BEGIN
; 0791 UUO (0, %O'062', .CHAN, STATUS); ! GETSTS
; 0792 ERRMSG (0, 5, UPLIT (%ASCIZ'OUTPUT'), CHAN_FNAME [.CHAN*FILE_NAME_LEN],
; 0793 .STATUS, 0, 0);
; 0794 END
FIO10 25-Jan-1983 10:14:51 TOPS-20 Bliss-36 2A(142) Page 31
X2.0-1 1-Jan-1983 15:42:42 NETPKG:<VNP36>VFIO10.BLI.7 (8)
; 0795 ELSE
; 0796 FILI [1] = CH$PLUS (.FILI [1], -1);
; 0797
; 0798 END;
; 0799
; 0800 CH$A_WCHAR (.CHAN_WORD_TMP, FILI [1]);
; 0801 END; !OF NEED TO WRITE LONG WORD
; 0802
; 0803 CHAN_WORD [.CHAN] = .CHAN_WORD_TMP;
; 0804 END; !OF "LOOKS OK"
; 0805
; 0806 END; !OF NOT CHANNEL 0
; 0807
; 0808 END; !OF OUTPUT ROUTINE
P.AAN: BYTE (7)"I","N","V","A","L" ; INVAL 400762' 111 116 126 101 114
BYTE (7)"I","D"," ","C","H" ; ID CH 400763' 111 104 040 103 110
BYTE (7)"A","N","N","E","L" ; ANNEL 400764' 101 116 116 105 114
BYTE (7)" ","N","U","M","B" ; NUMB 400765' 040 116 125 115 102
BYTE (7)"E","R"," ","-"," " ; ER - 400766' 105 122 040 055 040
BYTE (7)"O","U","T","P","U" ; OUTPU 400767' 117 125 124 120 125
BYTE (7)"T",000,000,000,000 ; T 400770' 124 000 000 000 000
P.AAO: BYTE (7)"C","H","A","N","N" ; CHANN 400771' 103 110 101 116 116
BYTE (7)"E","L"," ","N","O" ; EL NO 400772' 105 114 040 116 117
BYTE (7)"T"," ","O","P","E" ; T OPE 400773' 124 040 117 120 105
BYTE (7)"N"," ","-"," ","O" ; N - O 400774' 116 040 055 040 117
BYTE (7)"U","T","P","U","T" ; UTPUT 400775' 125 124 120 125 124
BYTE (7)000,000,000,000,000 ; 400776' 000 000 000 000 000
P.AAP: BYTE (7)"C","H","A","N","N" ; CHANN 400777' 103 110 101 116 116
BYTE (7)"E","L"," ","N","O" ; EL NO 401000' 105 114 040 116 117
BYTE (7)"T"," ","O","P","E" ; T OPE 401001' 124 040 117 120 105
BYTE (7)"N"," ","F","O","R" ; N FOR 401002' 116 040 106 117 122
BYTE (7)" ","O","U","T","P" ; OUTP 401003' 040 117 125 124 120
BYTE (7)"U","T"," ","-"," " ; UT - 401004' 125 124 040 055 040
BYTE (7)"O","U","T","P","U" ; OUTPU 401005' 117 125 124 120 125
BYTE (7)"T",000,000,000,000 ; T 401006' 124 000 000 000 000
P.AAQ: BYTE (7)"O","U","T","P","U" ; OUTPU 401007' 117 125 124 120 125
BYTE (7)"T",000,000,000,000 ; T 401010' 124 000 000 000 000
OUTPUT::PUSH SP,AC0 ; SP,AC0 401011' 261 17 0 00 000000 0691
PUSH SP,AC10 ; SP,AC10 401012' 261 17 0 00 000010
PUSH SP,AC11 ; SP,AC11 401013' 261 17 0 00 000011
MOVE AC10,-5(SP) ; CHAN,CHANX 401014' 200 10 0 17 777773 0733
JUMPL AC10,L.65 ; CHAN,L.65 401015' 321 10 0 00 401020' 0735
CAIG AC10,17 ; CHAN,17 401016' 307 10 0 00 000017
JRST L.66 ; L.66 401017' 254 00 0 00 401022'
L.65: PUSH SP,C.30 ; SP,[0,,P.AAN] 401020' 261 17 0 00 401160' 0737
JRST L.69 ; L.69 401021' 254 00 0 00 401041'
L.66: JUMPN AC10,L.67 ; CHAN,L.67 401022' 326 10 0 00 401031' 0740
PUSH SP,C.13 ; SP,[1] 401023' 261 17 0 00 400455' 0743
FIO10 25-Jan-1983 10:14:51 TOPS-20 Bliss-36 2A(142) Page 32
X2.0-1 1-Jan-1983 15:42:42 NETPKG:<VNP36>VFIO10.BLI.7 (8)
PUSH SP,-5(SP) ; SP,OUTWRD 401024' 261 17 0 17 777773
PUSHJ SP,OUTPUT ; SP,OUTPUT 401025' 260 17 0 00 401011'
TTCALL 1,-6(SP) ; 1,OUTWRD 401026' 051 01 0 17 777772 0744
ADJSP SP,-2 ; SP,-2 401027' 105 17 0 00 777776 0742
JRST L.82 ; L.82 401030' 254 00 0 00 401151' 0740
L.67: MOVE AC0,CHAN_STATUS(AC10) ; AC0,CHAN_STATUS(CHAN) 401031' 200 00 0 10 000000' 0749
JUMPN AC0,L.68 ; AC0,L.68 401032' 326 00 0 00 401035'
PUSH SP,C.31 ; SP,[0,,P.AAO] 401033' 261 17 0 00 401161' 0751
JRST L.69 ; L.69 401034' 254 00 0 00 401041'
L.68: MOVEI AC1,1 ; AC1,1 401035' 201 01 0 00 000001 0754
CAMN AC1,CHAN_DIRECTION(AC10) ; AC1,CHAN_DIRECTION(CHAN) 401036' 316 01 0 10 000120'
JRST L.70 ; L.70 401037' 254 00 0 00 401044'
PUSH SP,C.32 ; SP,[0,,P.AAP] 401040' 261 17 0 00 401162' 0756
L.69: PUSHJ SP,ERROR ; SP,ERROR 401041' 260 17 0 00 000000*
ADJSP SP,-1 ; SP,-1 401042' 105 17 0 00 777777
JRST L.82 ; L.82 401043' 254 00 0 00 401151' 0754
L.70: MOVE AC11,CHAN_WORD(AC10) ; CHAN_WORD_TMP,CHAN_WORD(CHAN) 401044' 200 11 0 10 000060' 0759
CAIE AC0,2 ; AC0,2 401045' 302 00 0 00 000002 0761
JRST L.77 ; L.77 401046' 254 00 0 00 401075'
MOVE AC0,CHAN_CTR(AC10) ; AC0,CHAN_CTR(CHAN) 401047' 200 00 0 10 000100' 0764
MOVE AC1,AC0 ; AC1,AC0 401050' 200 01 0 00 000000
JRST L.71(AC1) ; L.71(AC1) 401051' 254 00 0 01 401052'
L.71: JRST L.72 ; L.72 401052' 254 00 0 00 401056'
JRST L.73 ; L.73 401053' 254 00 0 00 401060'
JRST L.74 ; L.74 401054' 254 00 0 00 401062'
JRST L.75 ; L.75 401055' 254 00 0 00 401063'
L.72: MOVEI AC1,22 ; AC1,22 401056' 201 01 0 00 000022
JRST L.76 ; L.76 401057' 254 00 0 00 401064'
L.73: MOVEI AC1,32 ; AC1,32 401060' 201 01 0 00 000032
JRST L.76 ; L.76 401061' 254 00 0 00 401064'
L.74: TDZA AC1,AC1 ; AC1,AC1 401062' 634 01 0 00 000001
L.75: MOVEI AC1,10 ; AC1,10 401063' 201 01 0 00 000010
L.76: MOVE AC0,C.18 ; AC0,[POINT 8,AC11,35] <0,8> 401064' 200 00 0 00 400751' 0770
DPB AC1,C.27 ; AC1,[POINT 6,AC0,5] <30,6> 401065' 137 01 0 00 401155'
MOVE AC2,-4(SP) ; AC2,OUTWRD 401066' 200 02 0 17 777774
DPB AC2,AC0 ; AC2,AC0 401067' 137 02 0 00 000000
AOS CHAN_CTR(AC10) ; CHAN_CTR(CHAN) 401070' 350 00 0 10 000100' 0771
MOVEI AC0,4 ; AC0,4 401071' 201 00 0 00 000004 0773
CAMN AC0,CHAN_CTR(AC10) ; AC0,CHAN_CTR(CHAN) 401072' 316 00 0 10 000100'
SETZM CHAN_CTR(AC10) ; CHAN_CTR(CHAN) 401073' 402 00 0 10 000100'
JRST L.78 ; L.78 401074' 254 00 0 00 401076'
L.77: LDB AC11,C.28 ; CHAN_WORD_TMP,[POINT 7,OUTWRD,35] <0,7>
; 401075' 135 11 0 00 401156' 0777
L.78: SKIPE CHAN_CTR(AC10) ; CHAN_CTR(CHAN) 401076' 332 00 0 10 000100' 0779
JRST L.81 ; L.81 401077' 254 00 0 00 401150'
MOVE AC0,CHAN_HEADER(AC10) ; FILI,CHAN_HEADER(CHAN) 401100' 200 00 0 10 000020' 0782
MOVE AC1,AC0 ; AC1,FILI 401101' 200 01 0 00 000000 0784
SOS 2(AC1) ; 2(AC1) 401102' 370 00 0 01 000002
MOVE AC1,AC0 ; AC1,FILI 401103' 200 01 0 00 000000
SKIPLE 2(AC1) ; 2(AC1) 401104' 333 00 0 01 000002
JRST L.80 ; L.80 401105' 254 00 0 00 401143'
MOVEI AC2,0 ; AC2,0 401106' 201 02 0 00 000000 0788
FIO10 25-Jan-1983 10:14:51 TOPS-20 Bliss-36 2A(142) Page 33
X2.0-1 1-Jan-1983 15:42:42 NETPKG:<VNP36>VFIO10.BLI.7 (8)
HRLI AC2,57000 ; AC2,57000 401107' 505 02 0 00 057000
DPB AC10,C.29 ; CHAN,[POINT 4,AC2,12] <23,4> 401110' 137 10 0 00 401157'
XCT AC2 ; AC2 401111' 256 00 0 00 000002
TDZA AC1,AC1 ; AC1,AC1 401112' 634 01 0 00 000001
MOVEI AC1,1 ; AC1,1 401113' 201 01 0 00 000001
JUMPE AC1,L.79 ; AC1,L.79 401114' 322 01 0 00 401136'
MOVEI AC1,2 ; AC1,STATUS 401115' 201 01 0 00 000002 0791
HRLI AC1,62000 ; AC1,62000 401116' 505 01 0 00 062000
DPB AC10,C.1 ; CHAN,[POINT 4,AC1,12] <23,4> 401117' 137 10 0 00 400441'
XCT AC1 ; AC1 401120' 256 00 0 00 000001
PUSH SP,C.7 ; SP,[0] 401121' 261 17 0 00 400447' 0792
PUSH SP,C.25 ; SP,[5] 401122' 261 17 0 00 400760'
PUSH SP,C.33 ; SP,[0,,P.AAQ] 401123' 261 17 0 00 401163'
MOVE AC1,AC10 ; AC1,CHAN 401124' 200 01 0 00 000010
IMULI AC1,10 ; AC1,10 401125' 221 01 0 00 000010
ADDI AC1,CHAN_FNAME ; AC1,CHAN_FNAME 401126' 271 01 0 00 000140'
PUSH SP,AC1 ; SP,AC1 401127' 261 17 0 00 000001
PUSH SP,AC2 ; SP,STATUS 401130' 261 17 0 00 000002
PUSH SP,C.7 ; SP,[0] 401131' 261 17 0 00 400447'
PUSH SP,C.7 ; SP,[0] 401132' 261 17 0 00 400447'
PUSHJ SP,ERRMSG ; SP,ERRMSG 401133' 260 17 0 00 000000*
ADJSP SP,-7 ; SP,-7 401134' 105 17 0 00 777771 0790
JRST L.80 ; L.80 401135' 254 00 0 00 401143' 0788
L.79: SETO AC1, ; AC1, 401136' 474 01 0 00 000000 0796
MOVE AC2,AC0 ; AC2,FILI 401137' 200 02 0 00 000000
ADJBP AC1,1(AC2) ; AC1,1(AC2) 401140' 133 01 0 02 000001
MOVE AC2,AC0 ; AC2,FILI 401141' 200 02 0 00 000000
MOVEM AC1,1(AC2) ; AC1,1(AC2) 401142' 202 01 0 02 000001
L.80: MOVE AC1,AC0 ; AC1,FILI 401143' 200 01 0 00 000000 0800
IBP 1(AC1) ; 1(AC1) 401144' 133 00 0 01 000001
MOVE AC3,AC0 ; AC3,FILI 401145' 200 03 0 00 000000
MOVE AC2,1(AC3) ; AC2,1(AC3) 401146' 200 02 0 03 000001
IDPB AC11,AC2 ; CHAN_WORD_TMP,AC2 401147' 136 11 0 00 000002
L.81: MOVEM AC11,CHAN_WORD(AC10) ; CHAN_WORD_TMP,CHAN_WORD(CHAN) 401150' 202 11 0 10 000060' 0803
L.82: POP SP,AC11 ; SP,AC11 401151' 262 17 0 00 000011 0691
POP SP,AC10 ; SP,AC10 401152' 262 17 0 00 000010
POP SP,AC0 ; SP,AC0 401153' 262 17 0 00 000000
POPJ SP, ; SP, 401154' 263 17 0 00 000000
C.27: POINT 6,AC0,5 ; 6,AC0,5 401155' 36 06 0 00 000000
C.28: POINT 7,-4(SP),35 ; 7,OUTWRD,35 401156' 00 07 0 17 777774
C.29: POINT 4,AC2,12 ; 4,AC2,12 401157' 27 04 0 00 000002
C.30: XWD 0,P.AAN ; 0,P.AAN 401160' 000000 400762'
C.31: XWD 0,P.AAO ; 0,P.AAO 401161' 000000 400771'
C.32: XWD 0,P.AAP ; 0,P.AAP 401162' 000000 400777'
C.33: XWD 0,P.AAQ ; 0,P.AAQ 401163' 000000 401007'
; Routine Size: 107 words
; 0809
FIO10 25-Jan-1983 10:14:51 TOPS-20 Bliss-36 2A(142) Page 34
X2.0-1 1-Jan-1983 15:42:42 NETPKG:<VNP36>VFIO10.BLI.7 (9)
; 0810 GLOBAL ROUTINE STOP_PROGRAM : NOVALUE = !TERMINATE PROGRAM
; 0811
; 0812 !++
; 0813 ! FUNCTIONAL DESCRIPTION:
; 0814 !
; 0815 !
; 0816 ! TERMINATE PROGRAM EXECUTION PROBABLY DUE TO SOME FATAL
; 0817 ! ERROR. USES "EXIT" UUO.
; 0818 !
; 0819 !
; 0820 ! FORMAL PARAMETERS:
; 0821 !
; 0822 ! NONE
; 0823 !
; 0824 ! IMPLICIT INPUTS:
; 0825 !
; 0826 ! NONE
; 0827 !
; 0828 ! IMPLICIT OUTPUTS:
; 0829 !
; 0830 ! NONE
; 0831 !
; 0832 ! ROUTINE VALUE:
; 0833 !
; 0834 ! NONE
; 0835 !
; 0836 ! SIDE EFFECTS
; 0837 !
; 0838 ! HALTS THE PROGRAM
; 0839 !
; 0840 !--
; 0841
; 0842 BEGIN
; 0843
; 0844 BUILTIN
; 0845 UUO;
; 0846
; 0847 UUO (0, %O'047', 1, %O'12');
; 0848 END; !OF STOP_PROGRAM
STOP_PROGRAM::
CALLI 1,12 ; 1,12 401164' 047 01 0 00 000012 0847
POPJ SP, ; SP, 401165' 263 17 0 00 000000 0810
; Routine Size: 2 words
; 0849
; 0850 !
; 0851 END
; 0852
FIO10 25-Jan-1983 10:14:51 TOPS-20 Bliss-36 2A(142) Page 35
X2.0-1 1-Jan-1983 15:42:42 NETPKG:<VNP36>VFIO10.BLI.7 (9)
; 0853 ELUDOM
END
; Low segment length: 224 words
; High segment length: 630 words
; 0854 ! Local Modes:
; 0855 ! Comment Start:!
; 0856 ! Comment Column:36
; 0857 ! Auto Save Mode:2
; 0858 ! Mode:Fundamental
; 0859 ! End:
; Size: 541 code + 313 data words
; Run Time: 00:10.1
; Elapsed Time: 00:31.2
; Memory Used: 32 pages
; Compilation Complete