cdc:nos2.source:nam5871:nmi_upc
Table of Contents
NMI=UPC
Table Of Contents
- [00038] UPC - UNPACK CONTROL CARD
- [00043] UNPACK CONTROL CARD.
Source Code
- NMI=UPC.txt
- *DECK NMI=UPC
- IDENT SETUPC
- ENTRY SETUPC,SETUPC2
- USE /PACKING/
- LINE BSS 18
- LINEND VFD 6/76B,54/9L
- KBUF BSS 80
- UPCSTAT BSS 1
- UPCOUNT BSS 1
- USE
- ** SETUPC
- * SET UP THE DATA LINE TO BE CRACKED FOR THE
- * PROCESS UPC
- *
- SETUPC EQ *+1S17 ENTRY FOR 8 WORD UPC
- SA1 LINEND
- BX6 X1
- SA6 LINE+8 SET UP TERMINATOR
- SET1 SB1 1
- SB7 KBUF
- SA5 LINE
- RJ =XUPC
- SA6 UPCSTAT SAVE STATUS
- SX7 B6-B1 SAVE
- SA7 UPCOUNT PARAMETER COUNT
- EQ SETUPC
- SETUPC2 EQ *+1S17 ENTRY FOR 16 WORD UPC
- SA1 SETUPC2
- BX6 X1 RESET RETURN ADDRESS
- SA6 SETUPC
- EQ SET1
- END
- IDENT UPC
- ENTRY UPC
- TITLE UPC - UNPACK CONTROL CARD
- UPC SPACE 4,10
- BASE D
- * COMMENT COPYRIGHT CONTROL DATA SYSTEMS INC. 1994.
- UPC SPACE 4,10
- *** UPC - UNPACK CONTROL CARD.
- *
- * G. R. MANSFIELD. 70/12/12.
- * P. C. TAM. 77/05/25.
- *
- * *******************************************************
- * * THIS COMMON DECK IS PART OF THE COMMON COMMON DECKS *
- * * RESIDING ON THE COMPASS PROGRAM LIBRARY, AND BEING *
- * * MAINTAINED BY THE COMPASS PROJECT. ANY CHANGES *
- * * REQUIRED SHOULD BE DIRECTED TO THE COMPASS PROJECT *
- * * THROUGH THE PROPER PROCEDURE. *
- * *******************************************************
- *
- *
- * UPC UNPACKS A CONTROL/DATA STREAM INTO
- * INDIVIDUAL PARAMETERS
- UPC SPACE 4,10
- *** UPC UNPACKS A CONTROL CARD TO INDIVIDUAL PARAMETERS.
- * THE FOLLOWING CONDITIONS ARE NOTED.
- * (1.) IF (B7) IS NEGATIVE ON ENTRY, A BLANK AFTER THE KEYWORD
- * IS A SEPARATOR, OTHERWISE BLANKS ARE IGNORED.
- * (2.) THE SPECIAL (NON A/N) CHARACTERS CONSIDERED AS PARAMETER
- * SEPARATORS.
- * (3.) THE CHARACTER 76B IS CONSIDERED AS THE TERMINATION OF
- * THE CONTROL CARD.
- * (4.) CHARACTER WITH DISPLAY CODE VALUES 00B
- * IS ILLEGAL BEFORE THE TERMINATOR.
- * (5.) THE PARAMETER MUST CONTAIN 7 OR LESS CHARACTERS.
- * (6.) THE PARAMETERS ARE STORED LEFT JUSTIFIED WITH ZERO
- * FILL.
- * (7.) THE SEPARATOR CHARACTER WILL BE PLACED IN THE
- * LOWER 18 BITS OF THE PARAMETER UNLESS IT IS A *,*
- * IN WHICH CASE THE LOWER 18 BITS WILL BE ZERO
- * (8.) TWO SUCCESSIVE SEPARATORS OR A SEPARATOR FOLLOWED BY
- * A TERMINATOR RESULTS IN A PARAMETER OF ALL ZERO.
- *
- * ENTRY (X5) = FIRST WORD OF CONTROL CARD.
- * (A5) = ADDRESS OF FIRST WORD.
- * (B7) = ADDRESS FOR FIRST PARAMETER IF (B7) IS POSITIVE
- * COMPLEMENT OF ADDRESS FOR FIRST PARAMETER IF
- * (B7) IS NEGATIVE.
- * (B1) = 1.
- *
- * EXIT (X6) = 0 IF NO ERROR DURING UNPACK.
- * (B6) = PARAMETER COUNT.
- *
- * USES X - 0, 1, 2, 3, 4, 5, 6, 7.
- * B - 2, 3, 4, 5, 6.
- * A - 1, 2, 3, 5, 6, 7.
- *
- * CALLS NONE.
- UPC SUBR ENTRY/EXIT
- SB2 B7
- PL B2,UPC1 IF (B7) IS NEGATIVE ON ENTRY
- SB2 -B7 IF NEGATIVE, RESET
- UPC1 SA6 B2 PRESET A6 FOR WRITE
- SA3 TERMCHR (X3) = MASK FOR TERMINATORS
- SB5 60 (B5) = CONSTANT 60
- MX0 -6 (X0) = CHARACTER MASK
- BX6 X6-X6 CLEAR ASSEMBLY
- SB2 B5 CLEAR CHARACTER COUNT
- MX2 18 (X2) = EXCESS CHARACTER MASK
- MX4 1 (X4) = CHARACTER COUNTER
- SB6 B0 (B6) = ASSEMBLY INDEX
- EQ UPC3 ENTER LOOP
- UPC2 LX6 6 ADVANCE ASSEMBLY
- SB2 B2-6
- BX6 X6+X7
- UPC3 LX5 6 NEXT CHARACTER
- BX7 -X0*X5
- NZ X7,UPC3A
- SX7 76B CHANGE 00B TO 76B (TERMINATOR)
- UPC3A SB3 X7-1R9 CHECK CHARACTER
- LX4 6 ADVANCE DISASSEMBLY
- PL X4,UPC4
- * 00 CHARACTER IS ILLEGAL AND * IS ALPHANUMERIC.
- SA5 A5+B1
- UPC4 ZR X7,UPC7 IF CHARACTER = 00
- LT B3,B1,UPC2 IF ALPHA/NUMERIC
- * SB4 X7-66B CHARS. 66-77B ARE ILLEGAL
- * GE B4,UPC7
- SB4 X7-1R*
- ZR B4,UPC2 IF CHARACTER = *
- * CHECK FOR BLANK AS SEPARATOR.
- SB4 X7-1R CHECK CHARACTER
- NZ B4,UPC5 NOT BLANK, MUST BE SEPARATOR
- PL B7,UPC3 (B7) POSITIVE, BLANK IGNORED
- NZ B6,UPC3 NOT JUST AFTER KEYWORD, BLANK IGNORED
- * CHECK FOR PARAMETER .GT. 7 CHARACTERS.
- UPC5 BX1 X2*X6 CHECK ASSEMBLY
- LX6 X6,B2 LEFT JUSTIFY ASSEMBLY
- NZ X1,UPC7 IF .GT. 7 CHARACTERS ASSEMBLED
- AX1 X3,B3 CHECK FOR TERMINATOR
- * EQ B4,B1,UPC6 IF SEPARATOR = *,*
- BX6 X6+X7 INSERT SEPARATOR
- UPC6 SA6 A6
- SB2 B5 RESET ASSEMBLY
- BX6 X6-X6
- LX1 59
- SB6 B6+B1
- SA6 A6+B1 CLEAR LAST + 1
- PL X1,UPC3 LOOP IF NOT TERMINATOR
- SA2 A6-B1 CLEAR TERMINATOR
- MX3 42
- BX7 X3*X2
- SA7 A2
- EQ UPCX RETURN
- UPC7 SX6 B1 RETURN ERROR
- SB6 B0
- EQ UPCX RETURN
- TERMCHR VFD 60/400000000B WAS 4100B FOR .) NOW 76B
- UPC SPACE 4,10
- BASE *
- END
cdc/nos2.source/nam5871/nmi_upc.txt ยท Last modified: 2023/08/05 17:22 by Site Administrator