IDENT 1CD,ICD
PERIPH
BASE MIXED
SST
*COMMENT 1CD - BATCHIO COMBINED DRIVER.
COMMENT COPYRIGHT CONTROL DATA SYSTEMS INC. 1992.
TITLE 1CD - BATCHIO COMBINED DRIVER.
SPACE 4,10
*** 1CD - *BATCHIO* COMBINED DRIVER.
*
* G. R. MANSFIELD. 70/09/01.
* P. D. HAAS. 73/12/20.
* R. M. YASUHARA. 75/01/17.
* D. R. HILGREN. 79/01/15.
* D. R. HILGREN. 79/04/25. RESEQUENCED.
* A. F. JOHNSTON. 84/11/16. 5870/5970 DRIVER.
SPACE 4,10
*** *1CD* IS THE DEVICE DRIVER FOR *BATCHIO*. EACH *1CD* CAN
* DRIVE A SET OF DEVICES, DEFINED BY THE SUB-DRIVER ITS RUNS.
* THE FOLLOWING SUB-DRIVERS AND THE DEVICES THEY HANDLE ARE
* AS FOLLOWS:
*
* DCC SUB-DRIVER (UP TO 8 DEVICES PER *1CD*)
* 3555/512 - 580
* 3446/415
* 3447/405
*
* CCC SUB-DRIVER (UP TO 8 DEVICES PER *1CD*)
* 5870
* 5970
SPACE 4,10
*** 1CD CALL.
*
*T IR 18/ 1CD, 6/, 12/ DN, 12/ COUNT, 12/ SDT
*
* DN DRIVER NUMBER (ASSIGNMENT ADDRESS).
* COUNT NUMBER OF DEVICES BEING DRIVEN.
* SDT SUB-DRIVER TYPE
* 0 - 6681 DEVICES (LPDT, CRDT, CPDT).
* 1 - CCC DEVICES (NPDT).
SPACE 4,10
*** 3555/512 - 580 DRIVER CHARACTERISTICS.
*
* LINE SPACING IS NORMALLY DONE IN THE *AUTO EJECT* MODE. THIS
* MEANS CREASES IN THE PAPER ARE SKIPPED VIA THE 3555 OR 580
* AUTOMATIC LINE SPACING. THUS, IT IS NECESARY FOR AUTO EJECT
* TO BE DESELECTED IF ONE WANTS TO USE FORMAT CHANNELS TO
* ADVANCE FROM PRIOR TO BOTTOM OF FORM TO BEYOND TOP OF FORM.
* AN EXAMPLE OF THIS WOULD BE WITH THE TYPICAL *NOS* FORMAT
* TAPE WHICH HAS ONLY 1 HOLE IN CHANNEL 6 THUS PROVIDING AN
* EJECT OF UP TO TWO PAGES IN ORDER TO INSURE ALL BANNER PAGES
* COME OUT FACE UP IF THE PAPER IS PUT IN THE PRINTER
* CORRECTLY. IT SHOULD ALSO BE NOTED THAT DESELECTION OF AUTO
* EJECT MODE ON A 512/580 WILL RESULT IN DESELECTION OF
* 8 LINES/INCH IF PREVIOUSLY SELECTED.
*
* THE FIRST CHARACTER OF THE PRINT LINE CONTROLS THE OPTIONAL
* FORMATS. THIS CHARACTER IS NOT PRINTED. THE PRINT
* LINE THEREFORE CONSISTS OF UP TO 136 CHARACTERS.
*
* THE FORMAT CONTROL CHARACTERS, THE NUMBER OF LINES CHARGED
* FOR THEM, AND THEIR FUNCTION FOLLOWS -
* CHAR. LINE CHARGE FUNCTION
* C 4 SKIP TO FORMAT CHANNEL 6 AFTER PRINT
* D 3 SKIP TO FORMAT CHANNEL 5 AFTER PRINT
* E 3 SKIP TO FORMAT CHANNEL 4 AFTER PRINT
* F 2 SKIP TO FORMAT CHANNEL 3 AFTER PRINT
* G 2 SKIP TO FORMAT CHANNEL 2 AFTER PRINT
* H 1 SKIP TO FORMAT CHANNEL 1 AFTER PRINT
* Q 0 SUPPRESS AUTO EJECT
* R 0 SET AUTO EUECT
* S 0 CLEAR 8 LINES/INCH (512/580 ONLY)
* T 0 SET 8 LINES/INCH (512/580 ONLY)
* V PL6L OR PL8L EJECT PAGE / RELOAD 580 PFC MEMORY
* 0 2 SPACE 1 LINE BEFORE PRINT
* 1 PL6L OR PL8L EJECT PAGE BEFORE PRINT
* 2 PL6L/2 OR PL8L/2 ADV TO BOTTOM OF FORM BEFORE PRINT
* 3 4 SKIP TO FORMAT CHANNEL 6 BEFORE PRINT
* 4 3 SKIP TO FORMAT CHANNEL 5 BEFORE PRINT
* 5 3 SKIP TO FORMAT CHANNEL 4 BEFORE PRINT
* 6 2 SKIP TO FORMAT CHANNEL 3 BEFORE PRINT
* 7 2 SKIP TO FORMAT CHANNEL 2 BEFORE PRINT
* 8 1 SKIP TO FORMAT CHANNEL 1 BEFORE PRINT
* + 1 SUPPRESS SPACE BEFORE PRINT
* - 3 SPACE 2 LINES BEFORE PRINT
* / 1 SUPPRESS SPACE AFTER PRINT
* SPACE 1 NO LINE CONTROL
* OTHER 1 NO LINE CONTROL
*
* ANY FORMAT CONTROL OTHER THAN *Q*, *R*, *S*, AND *T*
* ARE PROCESSED ONCE FOR THE LINE PRINTED.
*
* IF THE FIRST TWO CHARACTERS OF THE LINE ARE *PM* THEN
* THE MESSAGE TEXT ON THE REMAINDER OF THE LINE WILL BE
* DISPLAYED ON THE *I* DISPLAY AND THE PRINTING OF THE
* FILE WILL BE HALTED UNTIL THE OPERATOR ENTERS A
* *CONTINUE* COMMAND. *PM* MESSAGE PROCESSING WILL BE
* ALLOWED ONLY FOR USERS THAT HAVE THE *CBIO* VALIDATION
* PARAMETER SET IN *AACW*.
SPACE 4,10
*** 3446/415 DRIVER CHARACTERISTICS.
*
* HOLLERITH CARDS ARE PUNCHED FROM A LINE CONSISTING OF UP TO
* 90 CHARACTERS. HOWEVER, ONLY THE FIRST 80 CHARACTERS
* OF THE LINE ARE ACTUALLY PUNCHED. THE DISPLAY CODE
* TO O26/O29 CONVERSION IS ACCOMPLISHED BY A
* DISPLAY CODE TO BINARY COLUMN IMAGE CONVERSION IN THE
* DRIVER. THE CARD IS THEN PUNCHED IN BINARY MODE
* ON THE 3446.
*
* BINARY DATA ARE PUNCHED IN THE FOLLOWING FORMAT
* COLUMN 1 = WORD COUNT AND BINARY CARD INDICATOR (79)
* COLUMN 2 = BINARY DATA CHECKSUM MODULO 4095
* COLUMNS 3 - 77 = 15 CENTRAL WORDS OF DATA
* COLUMN 78 = BLANK
* COLUMNS 79 - 80 = 24 BIT BINARY CARD SEQUENCE NUMBER
*
* ABSOLUTE BINARY DATA ARE PUNCHED 16 CENTRAL WORDS/CARD WITH
* NO SPECIAL PUNCHES.
*
* END OF RECORD CARDS CONTAIN A 7/8/9 PUNCH IN COLUMN 1
* AND THE REMAINDER OF THE CARD IS BLANK.
* END OF FILE CARDS CONTAIN A 6/7/9 PUNCH IN COLUMN 1
* AND THE REMAINDER OF THE CARD IS BLANK.
*
* CARDS OFFSET ARE AS FOLLOWS -
* 1. ALL END OF RECORD CARDS.
* 2. THE END OF INFORMATION CARD.
* 3. A CARD ON WHICH A COMPARE ERROR WAS DETECTED WILL BE
* OFFSET AND ALSO THE FOLLOWING CARD. THESE 2 CARDS WILL
* BE REPUNCHED UNTIL NO ERROR IS DETECTED.
SPACE 4,10
*** 3447/405 DRIVER CHARACTERISTICS.
*
* HOLLERITH CARDS ARE READ WITH TRAILING SPACES DELETED.
* UP TO 80 CHARACTERS MAY BE TRANSFERRED TO THE CM BUFFER.
* HOLLERITH TO DISPLAY CODE TRANSLATION IS ACCOMPLISHED BY
* VERIFYING AND CONVERTING THE HOLLERITH DATA TO EXTERNAL BCD
* FOLLOWED BY A BCD TO DISPLAY CONVERSION IN THE DRIVER.
* ILLEGAL HOLLERITH CODES ARE TRANSLATED AS BLANKS.
* HOLLERITH CONVERSION MAY BE CHANGED BY THE USE OF A CARD WITH
* 5/7/9 PUNCHES IN COLUMN 1 AND THE CONVERSION MODE IN
* COLUMN 2. THE ASSUMED MODE IS O26. A MODE CHANGE IS IN
* EFFECT UNTIL CHANGED.
*
* CONVERSION MODE PUNCHES IN COLUMN 2 -
* BLANK O26
* 9 O29
* 4/5/6/7/8/9 LITERAL INPUT
* CARDS ARE READ IN BINARY FORMAT WITH NO CONVERSION
* OR CHECKING UNTIL A CARD WHICH IS IDENTICAL IN ALL
* 80 COLUMNS IS READ.
*
* HOLLERITH CONVERSION MAY ALSO BE SIGNALLED BY PUNCHING
* *26* OR *29* IN COLUMNS 79 AND 80 OF THE FOLLOWING CARDS -
* JOB CARD
* EOR (7/8/9) CARD
* EOF (6/7/9) CARD
*
* BINARY CARDS MUST CONFORM TO THE ABOVE SPECIFICATION FOR
* PUNCHED BINARY DATA.
*
* AN END OF RECORD CONSISTS OF A CARD WITH 7/8/9 PUNCHES IN
* COLUMN 1.
* AN END OF FILE CONSISTS OF A CARD WITH 6/7/9 PUNCHES IN
* COLUMN 1.
* AN END OF INFORMATION CONSISTS OF A CARD WITH 6/7/8/9
* PUNCHES IN COLUMN 1.
* IN ANY CASE, THE REMAINDER OF THE CARD IS NOT CONSIDERED
* AS DATA.
SPACE 4,10
*** 5870/5970 DRIVER CHARACTERISTICS.
*
* THE DRIVER FOR THE 5870/5970 IS SIMILAR TO THE 3555/512 - 580
* DRIVER.
*
* THE FIRST CHARACTER OF THE PRINT LINE CONTAINS THE FORMAT
* CONTROL CHARACTER. THIS CHARACTER IS NOT PRINTED. THE PRINT
* LINE CONSISTS OF UP TO 150 CHARACTERS.
*
* THE FORMAT CONTROL CHARACTERS, THE NUMBER OF LINES CHARGED
* FOR THEM, AND THEIR FUNCTION FOLLOWS -
*
* CHAR. LINE CHARGE FUNCTION
* C 1 SKIP TO FORMAT CHANNEL 6 AFTER PRINT
* D 1 SKIP TO FORMAT CHANNEL 5 AFTER PRINT
* E 1 SKIP TO FORMAT CHANNEL 4 AFTER PRINT
* F 1 SKIP TO FORMAT CHANNEL 3 AFTER PRINT
* G 1 SKIP TO FORMAT CHANNEL 2 AFTER PRINT
* H 1 SKIP TO FORMAT CHANNEL 1 AFTER PRINT
* Q 0 LINE IGNORED
* R 0 LINE IGNORED
* S 0 LINE IGNORED
* T 0 LINE IGNORED
* V 0 LINE IGNORED
* 0 2 SPACE 1 LINE BEFORE PRINT
* 1 1 EJECT PAGE BEFORE PRINT
* 2 1 ADVANCE TO BOTTOM OF FORM BEFORE PRINT
* 3 1 SKIP TO FORMAT CHANNEL 6 BEFORE PRINT
* 4 1 SKIP TO FORMAT CHANNEL 5 BEFORE PRINT
* 5 1 SKIP TO FORMAT CHANNEL 4 BEFORE PRINT
* 6 1 SKIP TO FORMAT CHANNEL 3 BEFORE PRINT
* 7 1 SKIP TO FORMAT CHANNEL 2 BEFORE PRINT
* 8 1 SKIP TO FORMAT CHANNEL 1 BEFORE PRINT
* + 1 SUPPRESS SPACE BEFORE PRINT
* - 3 SPACE 2 LINES BEFORE PRINT
* / 1 SUPPRESS SPACE AFTER PRINT
* SPACE 1 NO LINE CONTROL
* OTHER 1 NO LINE CONTROL
*
* IF THE FIRST TWO CHARACTERS OF THE LINE ARE *PM*, THEN
* THE REMAINDER OF THE LINE, UP TO 80 CHARACTERS, ARE
* CONSIDERED A MESSAGE FOR THE 5870/5970. THIS IS ONLY
* ALLOWED FOR USERS WITH THE *CBIO* VALIDATION.
SPACE 4,10
*** ERRLOG MESSAGES.
*
*
* *EQXXX CCC/NIP STATUS ERROR.* = A STATUS OF 5XXX WAS
* RETURNED FROM THE CCC.
*
* *EQXXX CHANNEL PARITY ERROR.* = A PARITY ERROR WAS DETECTED
* ON A CONVERTER OR EQUIPMENT.
*
* *EQXXX COMPARE ERROR.* = COMPARE ERROR WAS DETECTED.
*
* *EQXXX CONTROLLER HUNG BUSY.* = THE CONTROLLER DOES NOT DROP
* BUSY STATUS.
*
* *EQXXX FEED FAILURE.* = CARD FEED PROBLEM WAS DETECTED.
*
* *EQXXX FUNCTION TIMEOUT* = A FUNCTION TIMEOUT WAS DETECTED
* ON A CONVERTER OR EQUIPMENT FUNCTION.
*
* *EQXXX INCOMPLETE DATA TRANSFER.* = AN INCOMPLETE DATA
* TRANSFER WAS DETECTED.
*
* *EQXXX INTERNAL/EXTERNAL REJECT.* = AN INTERNAL OR EXTERNAL
* REJECT WAS DETECTED.
*
* *EQXXX NNNN PRINT ERRORS.* = PRINT ERRORS DETECTED.
*
* *EQXXX PFC ERROR.* = ERROR LOADING PFC MEMORY.
*
* *EQXXX PRINT ERROR LIMIT EXCEEDED.* = PRINT ERROR LIMIT WAS
* EXCEEDED.
*
* *EQXXX TRANSMISSION PARITY ERROR.* = A TRANSMISSION PARITY
* ERROR WAS DETECTED.
*
* *EQXXX TURNED OFF BY SYSTEM.* = FAULTY EQUIPMENT
* WAS TURNED OFF BY THE SYSTEM.
*
* WHERE -
* EQ = EQUIPMENT MNEMONIC.
* XXX = EST ORDINAL.
* NNNN = NUMBER OF PRINT ERRORS.
SPACE 4,10
*** OPERATOR *I* DISPLAY STATUS MESSAGES.
*
* *NOT READY.* = DEVICE IS NOT READY.
*
* *NO PAPER.* = PRINTER HAS A PAPER OUT CONDITION.
*
* *COMPARE ERROR.* = CARD PUNCH HAS A COMPARE ERROR.
*
* *FEED FAILURE.* = CARD PUNCH HAS A CARD FEED PROBLEM.
*
* *HOLD.* = DEVICE IS SKIPPING OR HAS BEEN PLACED IN HOLD.
*
* *PM MESSAGE.* = PRINTER IS WAITING; CHECK *PM* MESSAGE
* THEN ENTER *CONTINUE,EST.* FROM *DSD*.
*
* *PRINT ERROR.* = CORRECT PRINTER ERROR THEN ENTER
* *CONTINUE,EST.* FROM *DSD*.
*
* *RE-RD CD COMPARE ERR.* = CARD READER HAS A CARD COMPARE
* ERROR. OPERATOR SHOULD RE-READ THE LAST CARD IN THE OUTPUT
* HOPPER.
*
* *ADV 1 CD RE-RD 3 CDS.* = CARD READER HAS ENCOUNTERED A
* TRANSMISSION PARITY ERROR, AN INCOMPLETE DATA TRANSFER, OR A
* BINARY CHECKSUM ERROR. IN ORDER TO RECOVER, THE OPERATOR
* MUST ADVANCE THE NEXT CARD IN THE INPUT HOPPER, AND THEN
* RE-READ THE LAST 3 CARDS IN THE OUTPUT HOPPER.
*
* *INTERVENTION NEEDED.* = THE 5870/5970 REQUIRES OPERATOR
* INTERVENTION.
SPACE 4,10
*** CHANNEL ERROR PROCESSING.
*
*
* THE FOLLOWING CHANNEL ERRORS ARE RETRIED *ERRL* TIMES -
* CONNECT REJECT.
* FUNCTION REJECT.
* TRANSMISSION PARITY ERROR.
* INCOMPLETE DATA TRANSFER.
* THE FOLLOWING CHANNEL ERRORS ARE NOT RETRIED -
* 6681 FUNCTION TIMEOUT.
* EQUIPMENT FUNCTION TIMEOUT.
* AFTER THE RETRY LIMIT IS REACHED OR AFTER A FUNCTION
* TIMEOUT IS DETECTED, ERROR HANDLING PROCEEDS AS FOLLOWS -
* OUTPUT FILES ARE REQUEUED.
* TRACKS FOR INPUT FILES ARE DROPPED.
* THE FAULTY EQUIPMENT IS TURNED OFF AND DROPPED.
* ERROR LOG MESSAGES ARE ISSUED.
SPACE 4,10
*** *1CD* - *QAP* INTERFACE.
*
*
* *1CD* AND *QAP* COMMUNICATE PRIMARILY VIA BYTE 4 OF THE
* FIRST WORD OF THE FET. WHEN *1CD* MAKES A REQUEST,
* THIS BYTE IS SET WITH THE REQUEST CODE AND BIT 0
* IS CLEARED, INDICATING THAT THIS BUFFER
* IS BUSY. UPON COMPLETION OF THE REQUESTED TASK,
* QAP* SETS BIT 0 OF THIS BYTE, INDICATING THE
* BUFFER IS NO LONGER BUSY.
SPACE 4,10
*** NOTES.
*
*
* (1) LINES PRODUCING PRINTER *PRINT ERRORS* ARE FLAGGED
* ON THE LISTING, AND THEN REPRINTED. THE OPERATOR MAY
* BYPASS ERROR PROCESSING BY TURNING ON SSW1, OR BY MANUALLY
* DEPRESSING THE *ERROR OVERRIDE* SWITCH. THE LATTER
* INHIBITS PRINT ERROR ON THE STATUS LINE, AND AS SUCH WILL
* SUPPRESS STATISTICS REPORTED IN THE *ERRLOG*.
* IF ERROR PROCESSING IS NOT BYPASSED AND MORE THAN
* *PERL* CONSECUTIVE LINES HAVE *PRINT ERRORS*, THEN
* THE FILE IS REQUEUED AND THE PRINTER IS TURNED OFF.
*
* (2) INCOMPLETE DATA TRANSFERS AND TRANSMISSION PARITY
* ERRORS DETECTED WHILE PUNCHING CARDS ARE COUNTED AND
* RETRIED A MAXIMUM OF *ERRL* TIMES PER CARD IMAGE.
* IF *ERRL* IS REACHED, THEN THE PUNCH FILE WILL BE
* REQUEUED AND THE EQUIPMENT TURNED OFF. IF *ERRL*
* IS NOT REACHED, ONLY THE LAST BAD CARD IS OFFSET FOR
* A GIVEN CARD IMAGE, INDEPENDENT OF THE NUMBER OF
* RETRIES FOR THAT CARD IMAGE.
*
* (3) THE CARD PUNCH ERROR COUNT IS PUNCHED IN COLUMN
* 40 OF THE EOI CARD.
SPACE 4,10
** PROGRAMMING CONSIDERATIONS.
*
*
* (1) BEFORE ADDING CODE TO THIS ROUTINE, ONE SHOULD
* UNDERSTAND WHAT HAPPENS ON A FUNCTION REJECT OR WAIT NOT
* BUSY CONDITION. SEE SUBROUTINES *FCN* AND *WNB*.
*
* (2) THE PROGRAMMER SHOULD BE AWARE OF THE IMPLICATIONS
* OF JUMPING TO MANAGER FROM A SUBROUTINE. IF THAT
* SUBROUTINE IS CALLED MORE THAN ONCE, ANOTHER EQUIPMENT
* DRIVEN BY THIS SAME *1CD* COULD CONCEIVABLY CALL THE
* SAME SUBROUTINE FROM A DIFFERENT LOCATION. THUS, THE
* RETURN ADDRESS WOULD NOT BE CORRECT FOR THE EQUIPMENT
* THAT FIRST CALLED THE SUBROUTINE WHEN IT RESUMES
* PROCESSING.
SPACE 4,10
*** PROGRAMS CALLED.
*
* CIO - COMBINED I/O.
* QAP - QUEUE AUXILIARY PROCESSOR.
SPACE 4,10
* COMMON DECKS.
*CALL COMPMAC
LIST X
*CALL COMSBIO
LIST *
*CALL COMSCPS
*CALL COMSJIO
*CALL COMSPIM
SPACE 4,10
**** DIRECT CELL USAGE.
DB EQU 15 DATA BUFFER ADDRESS
FC EQU 16 FUNCTION CODE
PA EQU 17 PROCESSING ADDRESS
FP EQU 20 - 24 FILE PARAMETERS (FET+5) (5 LOCATIONS)
BF EQU FP BUFFER POINT OFFSET
BI EQU 25 PP BUFFER CONTROL INDEX
DA EQU 26 DATA ADDRESS
BR EQU 27 BUSY RETURN
F2 EQU 30 - 34 FILE PARAM WORD 2 (FET+12) (5 LOCATIONS)
CS EQU F2 CONVERTER STATUS (FET+12 - BYTE 0)
ST EQU F2+1 EQUIPMENT STATUS (FET+12 - BYTE 1)
UL EQU F2+3 - F2+4 USER LIMIT (FET+12 - BYTES 3 AND 4)
CR EQU 35 CHANNEL RESERVED
EQ EQU 36 EQUIPMENT TYPE NUMBER
TL EQU 37 CONVERSION TABLE LENGTH
BS EQU 40 - 44 BUFFER STATUS (5 LOCATIONS)
SB EQU 46 STATUS BLOCK WRITE LOCKOUT
BL EQU 47 EQUIPMENT STATUS BLOCK LENGTH
FA EQU 57 ADDRESS OF FST ENTRY
FT EQU 60 - 61 FIRST ADDRESS OF CM BUFFER (2 LOCATIONS)
IN EQU 62 - 63 NEXT INPUT ADDRESS (2 LOCATIONS)
OT EQU 64 - 65 NEXT OUTPUT ADDRESS (2 LOCATIONS)
LM EQU 66 - 67 LIMIT ADDRESS OF CM BUFFER (2 LOCATIONS)
SPACE 4,10
* ASSEMBLY CONSTANTS.
* PROGRAMMERS NOTE - THE DEFAULT CHANNEL SHOULD REMAIN 16B.
* THE MAIN LOOP OF *1CD* ASSUMES THAT A CHANNEL IS ALREADY
* RESERVED AND IT WILL BE DROPPED WHEN NECESSARY. IN ORDER TO
* ELIMINATE SPECIAL CASE CODE, CHANNEL 16B IS USED IN PRESET
* SINCE IT IS DEFINED TO BE NON-DEDICATED AND MAY ALWAYS BE
* REQUESTED AND DROPPED. USE OF ANY OTHER CHANNEL MAY RESULT
* IN DEADLOCK WITH PP PROGRAMS WHICH MAY USE THAT CHANNEL IN A
* DEDICATED MODE (SUCH AS *1TD*).
CH EQU 16B CHANNEL NUMBER
BUFS EQU 2 BUFFER TABLE ENTRY LENGTH
****
SPACE 4,10
* CONVERSION TABLE AREA.
CTID EQU MSFW
CTBL EQU CTID+1
CTBLL EQU CTID+5*CTLN
TITLE MACRO DEFINITIONS.
SPACE 4,10
** MACRO DEFINITIONS.
FMTC SPACE 4,10
** FMTC C,L,F1,F2
*
* GENERATE ENTRY IN FORMAT CONTROL TABLE.
*
*T, 12/ASCII8
*T+1, 6/L,6/F2
* ASCII8 = 12-BIT ASCII CODE.
* C = CONTROL CHARACTER IN 12 BIT ASCII, RIGHT-
* JUSTIFIED.
* L = NUMBER OF LINES CHARGED THRU ACCOUNTING.
* F2 = FUNCTION CODE FOR 512/580.
FMTC MACRO C,L,F1,F2
NOREF YY
CODE ASCII
YY SET 1R_C+40B
VFD 12/YY
CODE *
VFD 6/L,6/F2
ENDM
NFMTC SPACE 4,15
** NFMTC - NON-IMPACT PRINTER FORMAT CONTROL TABLE.
*
* NFMTC IS USED TO GENERATE A ENTRY IN THE FORMAT CONTROL
* TABLE FOR A NON-IMPACT PRINTER.
*
* NFMTC C,NP,L,F1,F2
*
* ENTRY *C* = CONTROL CHARACTER.
* *NP* = IF PRESENT, DO NOT PRINT LINE.
* *L* = ADDITIONAL LINES TO CHARGE.
* *F1* = FUNCTION TO ISSUE TO CCC.
* *F2* = ADDITIONAL FUNCTION TO ISSUE AFTER *F1*.
PURGMAC NFMTC
NFMTC MACRO C,NP,L,F1,F2
MACREF NFMTC
NOREF YY
CODE ASCII
YY SET 1R_C+40B
VFD 12/YY
CODE *
VFD 6/L
.A IFC EQ,$NP$$
VFD 6/0
.A ELSE
VFD 6/1
.A ENDIF
.A IFC EQ,$F2$$
VFD 12/F1,12/0
.A ELSE
VFD 12/F2,12/F1
.A ENDIF
NFMTC ENDM
RELM SPACE 4,10
** RELM
* REDEFINE -M- TYPE DATA INSTRUCTIONS FOR AUTOMATIC BIAS
* BY *EQSB* IF -M- PART OF ADDRESS .LE. *CMDA*.
* ORIGINAL FORM AVAILABLE WITH *.* SUFFIX.
RELM MACRO OPC
OPC. OPSYN OPC
OPC= MACRO M,D
IF DEF,M
IFLE M,CMDA
IFC EQ,*D**
OPC. M+EQSB
ELSE
OPC. M,D
ENDIF
OPC= ENDM
OPC OPSYN OPC=
RELM ENDM
RELM LDM
RELM ADM
RELM SBM
RELM LMM
RELM STM
RELM RAM
RELM AOM
RELM SOM
STR SPACE 4,10
** STR - GENERATE ASCII STRING.
*
* STR IS USED TO GENERATE A STRING OF ASCII CHARACTERS.
* THE CHARACTERS ARE STORED ONE PER BYTE, RIGHT-ADJUSTED.
*
* STR (ABCD)
*
* ENTRY *ABCD* = STRING TO GENERATE.
PURGMAC STR
STR MACRO STRING
MACREF STR
NOREF .1,.2,.3
.B MICRO 1,,(STRING(
.1 MICCNT .B
.2 SET 1
CODE ASCII
DUP .1,4
.C MICRO .2,1,#".B"#
.3 SET 1R".C"+40B
VFD 12/.3
.2 SET .2+1
CODE *
STR ENDM
SPACE 4,10
** COMMON DECKS.
*CALL COMPCHI
TITLE MANAGER.
ICD SPACE 4,10
** MGR - EQUIPMENT MANAGER.
ORG PPFW
ICD LJM PRS PRESET PROGRAM
MGR EQU *-1
STM CMAR SAVE -A- REGISTER
LDM MGR STORE PROGRAM ADDRESS
STM CMPA
LDN FRJI CLEAR FUNCTION REJECT RETRY COUNT
RJM CRV
MGRA LDN 0 RESET TIMEOUT COUNTER
* LDN 1 (1X PP SPEED)
* LDN 2 (2X PP SPEED)
* LDN 4 (4X PP SPEED)
STM CMTC
* *MGR1* IS A SECONDARY ENTRY POINT FOR *MGR*.
MGR1 LDD BR STORE BUSY RETURN
STM CMBR
* PAUSE FOR STORAGE MOVE / CHANNEL REQUESTED.
PSE LDN CMCL READ STORAGE MOVE CONTROL
CRD CM
LDD CP CHECK CONTROL POINT
SHN -7
LMD CM
ZJN PSE2 IF MOVE REQUESTED
LCN 0
STD T0
LDD CR
STD T1
PSE1 AOD T0 DETERMINE CHANNEL WORD ADDRESS
LCN 5
RAD T1
PJN PSE1 IF CORRECT CHANNEL WORD NOT REACHED
LDC 0
PSEA EQU *-1 (CHANNEL TABLE ADDRESS)
ADD T0
CRD CM
LDM CM+5,T1 CHECK CHANNEL
SHN -13
ZJN MGR2 IF CHANNEL NOT REQUESTED
PSE2 LDD CR RELEASE CHANNEL
DCHAN
LDD CR RESERVE CHANNEL
RCHAN
* LDN 0 CLEAR EQUIPMENT COUNTER
MGR2 STD T7
LDD RA READ REQUEST WORD
SHN 6
ADN DRQR
CRD CM
LDD SB
NJN MGR2.1 IF STATUS BLOCK INTERLOCKED
RJM SFA
ADN EDSO STORE STATUS BLOCK
CWM EQSB,BL
MGR2.1 LDD CM
LMD IR+2
NJN MGR3 IF NO REQUEST
RJM SEA SET EQUIPMENT ASSIGNMENT
MGR3 LDN BUFS ADVANCE BUFFER ADDRESS
RAD BI
LMC CBUFL
NJN MGR4 IF NOT END OF BUFFERS
LCN CBUFL-CBUF
RAD BI
MGR4 LDI BI
ADM 1,BI
NJN MGR5 IF EQUIPMENT ACTIVE
AOD T7 ADVANCE EQUIPMENT COUNTER
LMN MEQD
NJN MGR3 IF NOT LAST EQUIPMENT
LDD CR RELEASE CHANNEL
DCHAN
LDD RA
SHN 6
ADD IR+2
CWD CM
MONITOR DPPM DROP PP
LJM PPR EXIT TO PP RESIDENT
MGR5 RJM SFA READ FET PARAMETERS
CRD BS BUFFER STATUS
ADN QAPO
CRD T1 QUEUE ACCESS PARAMETER BLOCK
ADN FPW2-QAPO
CRD F2 FILE PARAMETER WORD 2
SBN FPW2-5
CRD FP FILE PARAMETER WORD 1 (FET+5)
SBN 1
CRD LM-3 LIMIT
CRD T6
SBN 1
CRD OT-3 OUT
SBN 1
CRD IN-3 IN
SBN 1
CRD CM FIRST
ADN EDSO-1
CRM EQSB,BL
LDM CMEN SET EQUIPMENT TYPE
LPN 7
STD EQ
LDM CMBR SET BUSY RETURN
STD BR
LDD CM+3
LPN 37
STD FT
LDD CM+4
STD FT+1
LDD BS+4
SHN 21-0
MJN MGR6 IF FILE NOT BUSY
LDD T1+4
SHN 21-0
PJN MGR6 IF QUEUE ACCESS PARAMETER BLOCK BUSY
AOD BS+4 SET FILE NOT BUSY
SOD T1+4 SET QUEUE ACCESS PARAMETER BLOCK BUSY
RJM SFA WRITE BUFFER STATUS
CWD BS
ADN QAPO WRITE QUEUE ACCESS PARAMETER BLOCK
CWD T1
MGR6 LDD T6 SET FST ADDRESS
ZJN MGR7 IF NO FNT ENTRY
SBN FSTL
MGR7 STD FA
LDM CMSB SET STATUS BLOCK INTERLOCK FLAG
LPN 2
STD SB
NJN MGR9 IF INTERLOCKED
LDM CMDB SET DATA ADDRESS
STD DA
NFA BF,R READ BUFFER POINT WORD
CRD CM
LDD CM+4 CHECK FOR OPERATOR REQUEST
LPN 77
ZJN MGR8 IF NO REQUEST
RJM POF PROCESS OPERATOR REQUEST
MGR8 RJM PMR PROCESS MESSAGE REQUEST
NJN MGR9 IF REQUEST PENDING
RJM ** ENTER SUB-DRIVER PROCESSOR
MGRB EQU *-1 (SET BY *PRS*)
* RJM /3CZ/SDP
* RJM /3CY/SDP
MGR9 LJM PSE CHECK FOR STORAGE MOVE
TEQD SPACE 4,10
** TEQD - TABLE OF EQUIPMENT DRIVERS.
*
* INDEXED BY EQUIPMENT TYPE CODE.
TEQD INDEX
INDEX LPDT,/3CZ/LPD
INDEX CPDT,/3CZ/CPD
INDEX CRDT,/3CZ/CRD
INDEX NPDT,/3CY/NPD
INDEX MXDT
TDCM SPACE 4,10
** TDCM - TABLE OF DEFAULT CONVERSION MODES.
*
* INDEXED BY EQUIPMENT TYPE CODE.
TDCM INDEX
INDEX LPDT,CDX8
INDEX CPDT,CDXH
INDEX CRDT,C6XD
INDEX NPDT,CDX8
INDEX MXDT
TNRP SPACE 4,10
** TNRP - TABLE OF *NOT READY* PROCESSORS.
*
* INDEXED BY EQUIPMENT TYPE CODE.
TNRP INDEX
INDEX LPDT,/3CZ/LPE
INDEX CPDT,/3CZ/CPE
INDEX CRDT,/3CZ/CRE
INDEX NPDT,/3CY/NPE
INDEX MXDT
SEA SPACE 4,15
** SEA - SET EQUIPMENT ASSIGNMENT.
*
* ENTRY (CM - CM+4) = EQUIPMENT ASSIGNMENT.
*
* EXIT BUFFER INITIALIZED.
*
* USES EQ, IR+3, T1, CM - CM+4.
*
* CALLS CLB, SFA.
*
* MACROS MONITOR.
SEA2 MONITOR HNGM HANG PP
SEA SUBR ENTRY/EXIT
LDD CM+1 SET EQUIPMENT TYPE
LPN 7
STD EQ
SBN MXDT
PJN SEA2 IF DRIVER NOT AVAILABLE
LDC CBUF-BUFS SET BUFFER ADDRESS
STD T1
SEA1 LDN BUFS ADVANCE BUFFER ADDRESS
RAD T1
LMC CBUFL
ZJN SEAX IF ALL BUFFERS BUSY
LDI T1
ADM 1,T1
NJN SEA1 IF BUFFER IN USE
STD SB
LDD T1
STD BI
LDD CM+3 SET BUFFER ADDRESS
STI BI
LDD CM+4
STM 1,BI
RJM SFA READ DRIVER STATUS BLOCK
ADN EDSO
CRM EQSB,BL
RJM CLB CLEAR STATUS BLOCK
LDN ZERL CLEAR REQUEST
CRD CM
AOD IR+3 ADVANCE ENTRY COUNT
LDD RA UPDATE EQUIPMENT COUNT
SHN 6
ADD IR+2
CWD IR
SBD IR+2
ADN DRQR
CWD CM
LJM MGR1 STORE STATUS BLOCK
TITLE PROCESS OPERATOR REQUESTS.
CPH SPACE 4,10
** CPH - CLEAR PRINTER HOLDING.
*
* EXIT TO *POF1*.
CPH LDN 0 CLEAR HOLD FLAG
STM CMHF
* UJN POF1 PROCESS OPERATOR FLAG
POF SPACE 4,15
** POF - PROCESS OPERATOR FLAG.
*
* ENTRY (A) = OPERATOR REQUEST.
* (EQ) = DEVICE TYPE.
* (CM - CM+4) = BUFFER POINT WORD.
*
* USES CM+4, T1, T3.
*
* CALLS PROCESSOR WITH THE FOLLOWING CONDITIONS -
* (EQ) = DEVICE TYPE.
* (T3) = REQUEST PARAMETER.
* BUFFER NOT BUSY.
*
* MACROS NFA.
POF1 LDM CMER SET REPEAT COUNT
SHN 6
STD CM+4
NFA BF,R STORE BUFFER POINT WORD
CWD CM
POF SUBR ENTRY/EXIT
STD T1 SET REQUEST
SBN FPRE
PJN POF1 IF ILLEGAL REQUEST
LDD BS+4
LPN 1
ZJN POFX IF BUFFER BUSY
LDM CMPA
LMC TOPA
ZJN POFX IF TERMINATION PROCESSING
LDD CM+4 SET REQUEST PARAMETER
SHN -6
STD T3
LDM TOPF,T1 PROCESS REQUEST
STD T1
LJM 0,T1 EXIT TO PROCESSOR
CNT SPACE 4,10
** CNT - CONTINUE PRINTING.
*
* EXIT TO *POFX*.
*
* CALLS SDM.
CNT LDN 0
STM CMHF
LDN CNTM SEND DAYFILE MESSAGE
RJM SDM
CNT1 UJN POFX RETURN
HLD SPACE 4,10
** HLD - HOLD PRINTING.
*
* EXIT TO *CNT1*.
*
* CALLS MSG, SDM.
HLD LDN HLDM
RJM SDM SEND DAYFILE MESSAGE
LDN EHLD
RJM MSG ISSUE BUFFER POINT MESSAGE
LDM CMHF
SCN 1 SET HOLD FLAG
HLD1 LMN 1
STM CMHF
HLD2 UJN CNT1 RETURN
PPF SPACE 4,10
** PPF - POSITION PRINT FILE.
*
* EXIT TO *HLD1* IF DRIVER NOT HOLDING.
* TO *HLD2* IF DRIVER HOLDING.
*
* USES CM - CM+4.
*
* CALLS CPS.
*
* MACROS NFA.
PPF LDM CMHF CHECK DRIVER HOLDING
LPN 2
ZJN HLD1 IF DRIVER NOT HOLDING
LDN ZERL SET UP BUFFER POINT PARAMETERS
CRD CM
LDN EHLD
STD CM SET MESSAGE CODE
LDM CMER
STD CM+4 SET REPEAT COUNT
NFA BF,R
ADN 1 STORE BUFFER POINT WORD
CWD CM
LDC PORF+1000 PROCESS OPERATOR REQUEST
RJM CPS
UJN HLD2 RETURN
RRN SPACE 4,10
** RRN - PROCESS RERUN.
*
* ENTRY (EQ) = DEVICE TYPE.
*
* EXIT TO *END2* IF CARD READER.
* TO *TOP1* IF PUNCH OR PRINTER.
*
* CALLS SDM.
RRN LDD EQ
SBK CRDT
ZJN END2 IF CARD READER
LDN RRNM ISSUE RERUN MESSAGE
RJM SDM
* LDN 0 CLEAR MESSAGE REQUEST
STM CMMR
LDC RQFF+1000 REQUEUE FILE
LJM TOP1 TERMINATE OPERATION
END SPACE 4,10
** END - PROCESS *END*.
*
* ENTRY (T3) = NUMBER OF ENDS TO FORCE.
*
* EXIT TO *PSE*.
*
* USES T1, T3.
*
* CALLS ECB, SDM, SFA.
END LDD T3 FORCE ONE END
NJN END1 IF .GE. ONE END
AOD T3
END1 AOM CMER DECREMENT REPEAT COUNT
SBD T3
PJN END2 IF REPEAT COUNT .GE. END COUNT
ADN 1 CLEAR REPEAT COUNT
RAD T3
LDN 0 CLEAR REPEAT COUNT
END2 STM CMER
LDN ENDM SEND DAYFILE MESSAGE
RJM SDM
LDC 1031 SET EOI/EOF
STD BS+4
RJM SFA STORE BUFFER STATUS
CWD BS
RJM ECB EMPTY CENTRAL BUFFER
LDM ENDA,EQ
STM CMPA
LJM PSE PAUSE
ENDA INDEX *END* PROCESSOR
INDEX LPDT,/3CZ/LPN PRINT DAYFILE
INDEX CPDT,/3CZ/PED END OF FILE
INDEX CRDT,TOP TERMINATE OPERATION
INDEX NPDT,/3CY/NPN PRINT DAYFILE
INDEX MXDT
REP SPACE 4,15
** REP - PROCESS REPEAT.
*
* ENTRY (T3) = NUMBER OF REPEATS.
*
* EXIT TO *POFX*.
*
* USES T3.
*
* CALLS SDM.
REP LDD T3
NJN REP1 IF .GE. ONE REPEAT
AOD T3
REP1 RAM CMER ADVANCE REPEAT COUNT
SHN -6
ZJN REP2 IF REPEAT COUNT .LE. 77
LDN 77
STM CMER
REP2 LDN REPM SEND DAYFILE MESSAGE
RJM SDM
REP3 LJM POFX RETURN
SUP SPACE 4,10
** SUP - TOGGLE SUPPRESS FLAG.
*
* EXIT TO *REP3*.
*
* CALLS SDM.
SUP LDM CMSF TOGGLE SUPPRESS FLAG
LMN 4
STM CMSF
LDN SUPM SEND DAYFILE MESSAGE
RJM SDM
UJN REP3 RETURN
TOPF SPACE 4,30
** TOPF - TABLE OF OPERATOR REQUESTS PROCESSORS.
*
* INDEXED BY REQUEST CODE. (DEFINED IN COMSBIO)
* ONE WORD ENTRY IN FORMAT -
*
*T, 12/ ADDR
* ADDR ADDRESS OF REQUEST PROCESSOR.
TOPF INDEX
INDEX ENDM,END END
INDEX REPM,REP REPEAT
INDEX SUPM,SUP SUPPRESS
INDEX RRNM,RRN RERUN
INDEX HLDM,HLD HOLD
INDEX CNTM,CNT CONTINUE
INDEX BKPO,PPF BACKSPACE PRUS
INDEX BKRO,PPF BACKSPACE RECORDS
INDEX BKFO,PPF BACKSPACE FILES
INDEX SKPO,PPF SKIP PRUS
INDEX SKRO,PPF SKIP RECORDS
INDEX SKFO,PPF SKIP FILES
INDEX CPHP,CPH CLEAR PRINTER HOLDING
INDEX LNLP,PPF LOCATE NEXT LINE
INDEX LCBP,PPF LOAD CENTRAL BUFFER
INDEX FPRE TABLE TERMINATOR
TITLE COMMON SUBROUTINES.
ACT SPACE 4,10
** ACT - PROCESS ACCOUNTING INFORMATION.
*
* EXIT (A) = STATUS RESPONSE FROM *CPS*.
*
* USES CM, CM+3 - CM+4.
*
* CALLS CPS.
ACT SUBR ENTRY/EXIT
LDD EQ
STD CM+1 ENTER EQUIPMENT TYPE
LDM CMRC
STD CM+3
LDM CMRC+1
STD CM+4
LDD FT STORE REQUEST IN BUFFER
SHN 6
ADD RA
SHN 6
ADD FT+1
CWD CM
LDC ACTF+1000 PROCESS ACCOUNTING
RJM CPS
UJN ACTX RETURN
ADB SPACE 4,10
** ADB - ASSIGN DATA BUFFER.
*
* ENTRY (DB) = FWA OF LAST DATA BUFFER USED.
*
* EXIT (A) = (DA) = (CMDB) = BUFFER ADDRESS.
* (DB) = FWA OF DATA BUFFER ASSIGNED.
* ((DB)) = RELATIVE LOCATION BUFFER INDEX.
* TO *MGR1* IF NO DATA BUFFER AVAILABLE.
*
* USES DA, DB, T7.
ADB3 LDD BI SET BUFFER ASSIGNED
STI DB
LDD DB ADDRESS OF DATA BUFFER
ADN 1
STM CMDB FWA OF DATA (DB+1) IN DATA BUFFER
ADB4 STD DA
ADB SUBR ENTRY/EXIT
LDM CMDB
NJN ADB4 IF DATA BUFFER IS ASSIGNED TO THIS DEVICE
STD T7
ADB1 LDI DB
ZJN ADB3 IF THIS DATA BUFFER NOT ASSIGNED
LDC 0 CHECK NEXT DATA BUFFER
ADBA EQU *-1 (DATA BUFFER SIZE SET BY *PRS*)
RAD DB
LMC 0
ADBB EQU *-1 (LWA+1 OF DATA BUFFERS SET BY *PRS*)
NJN ADB2 IF NOT LAST DATA BUFFER
LDC 0 LOOP TO FIRST DATA BUFFER
ADBC EQU *-1 (FWA OF DATA BUFFERS SET BY *PRS*)
STD DB
ADB2 AOD T7
ADBD LMN 0 (NUMBER OF DATA BUFFERS SET BY *PRS*)
NJN ADB1 IF NOT ALL DATA BUFFERS CHECKED
LJM MGR1 IGNORE REQUEST
AOP SPACE 4,10
** AOP - ADVANCE OUT POINTER.
*
* ENTRY (A) = NUMBER OF WORDS TO ADVANCE POINTER.
*
* USES OT - OT+1.
*
* CALLS CDB.
AOP SUBR ENTRY/EXIT
RAD OT+1 ADVANCE OUT POINTER
SHN -14
RAD OT
SBD LM OUT - LIMIT
SHN 14
ADD OT+1
SBD LM+1
MJN AOP1 IF NO WRAP AROUND
ADD FT+1
STD OT+1
SHN -14
ADD FT
STD OT
AOP1 RJM CDB CHECK DATA REMAINING IN BUFFER
UJN AOPX RETURN
CCE SPACE 4,15
** CCE - CHECK FOR CHANNEL ERROR.
*
* ENTRY (A) = STATUS/DATA INDEX.
* (T5) = FUNCTION CODE.
*
* EXIT (A) = 0 IF NO ERROR.
* 1 IF CHANNEL ERROR FLAG SET.
*
* USES T1, FC.
*
* CALLS CRV, PRE.
CCE1 LDD T5 SAVE FUNCTION CODE FOR ERROR MESSAGE
STD FC
LDD T1 PROCESS RETRIED ERROR
RJM PRE
LDN 1 ERROR RETURN
CCE SUBR ENTRY/EXIT
STD T1 SAVE STATUS/DATA INDEX
CCEA SFM. CCE1,CH IF CHANNEL ERROR FLAG SET
RJM CRV CHECK FOR RECOVERED ERROR
* LDN 0
UJN CCEX RETURN
CDB SPACE 4,10
** CDB - CHECK DATA IN OUTPUT BUFFER.
*
* EXIT (A) = (CMBE) = NUMBER OF WORDS IN BUFFER.
CDB SUBR ENTRY/EXIT
LDD IN LENGTH = IN - OUT
SBD OT
SHN 14
ADD IN+1
SBD OT+1
PJN CDB1 IF IN .GE. OUT
SHN 6 LENGTH = (LIMIT - OUT) + (IN - FIRST)
ADD LM
SBD FT
SHN 14
ADD LM+1
SBD FT+1
CDB1 STM CMBE SET LENGTH
UJN CDBX RETURN
CEP SPACE 4,10
** CEP - CHANNEL ERROR PROCESSOR.
*
* EXIT TO *TOP2*.
*
* USES BR.
*
* CALLS RDB.
CEP RJM RDB RELEASE DATA BUFFER
STM CMMR CLEAR DAYFILE MESSAGE REQUEST
AOD BR SET BUSY RETURN
LDC CECF+1000 DEACTIVATE EQUIPMENT
STM CMLR
LJM TOP2 TERMINATE OPERATION ON DEVICE
CIB SPACE 4,15
** CIB - CHECK INPUT BUFFER.
*
* EXIT (A) = WORD COUNT OF BUFFER.
* IF WORD COUNT .LT. 1 SECTOR, A CALL WILL BE MADE TO
* DUMP BUFFER.
* IF FIRST WRITE, MAKE PP SERVICE CALL TO INITIATE
* INPUT FILE.
*
* USES BS+4, T1.
*
* CALLS CPS.
CIB SUBR ENTRY/EXIT
LDD BS+4 CHECK CURRENT STATUS
LPN 21
LMN 20
ZJP MGR1 IF BUFFER BUSY AND EOR
LDD OT LENGTH = OUT - IN
SBD IN
SHN 14
ADD OT+1
SBD IN+1
ZJN CIB1 IF IN = OUT
PJN CIB2 IF IN .LT. OUT
CIB1 SHN 6
ADD LM
SBD FT LENGTH = (LIMIT - IN) + (OUT - FIRST)
SHN 14
ADD LM+1
SBD FT+1
CIB2 SBN 1
STD T1 SAVE LENGTH
SHN -6
NJN CIB4 IF LENGTH .GE. 1 SECTOR
LDD BS+4
LPN 3
STD BS+4 REQUEST BUFFER WRITE
LDD FA
ZJN CIB3 IF FIRST WRITE
LDC WTIF+1000&14
CIB3 LMC WTIF+1000 SET REQUEST
RJM CPS
CIB4 LDD T1 SET LENGTH
LJM CIBX RETURN
CLB SPACE 4,15
** CLB - CLEAR INTERNAL BUFFER.
*
* ENTRY (EQ) = EQUIPMENT TYPE CODE.
*
* EXIT (A) = 0.
* (T3) = ADDRESS OF *CMER*.
* (BR) .NE. 0 (BUSY RETURN SET).
* (CMPA) = PROCESSOR ADDRESS.
* (CMCT) = DEFAULT CONVERSION MODE.
CLB SUBR ENTRY/EXIT
LDC EQSB+CMER SET LOWER LIMIT
STD BR
ADN CMDA-CMER-1 SET UPPER LIMIT
STD T3
LDM TEQD,EQ SET PROCESSOR ADDRESS
STM CMPA
LDM TDCM,EQ SET DEFAULT CONVERSION MODE
STM CMCT
CLB1 LDN 0 CLEAR BUFFER
STI T3
SOD T3 DECREMENT BUFFER ADDRESS
LMD BR
NJN CLB1 IF NOT LOWER LIMIT
UJN CLBX RETURN
COB SPACE 4,15
** COB - CHECK OUTPUT BUFFER.
*
* EXIT (A) = WORD COUNT OF BUFFER.
* IF WORD COUNT .LT. 1 SECTOR AND STATUS .NE. EOR
* OR EOF, A CALL WILL BE MADE TO FILL BUFFER.
* IF FILE IS A 12 BIT ASCII PRINT FILE, THE WORD
* COUNT THRESHOLD CHECK MADE IS FOR .LT. 2 SECTORS
* RATHER THAN 1 SECTOR.
* IF BUFFER IS EMPTY, AND STATUS = EOR OR EOF, EXIT
* WILL BE TAKEN TO APPROPRIATE PROCESSOR.
*
* USES BS+4, T1 - T2.
*
* CALLS CDB, CPS.
COB3 LDD BS+4
LPN 1
ZJN COB4 IF BUFFER BUSY
STD BS+4
LDM COBC,EQ REQUEST READ
RJM CPS
COB4 LDD T1 RETURN WITH LENGTH
COB SUBR ENTRY/EXIT
RJM CDB CHECK DATA IN OUTPUT BUFFER
STD T1 SAVE LENGTH
SBM CMBT
PJN COB4 IF LENGTH .LT. 1 OR 2 SECTORS
LDD BS+4 CHECK BUFFER STATUS
LPN 20
ZJN COB3 IF NOT EOR/EOF
LDD T1
NJN COBX IF BUFFER NOT EMPTY
LDD BS+4
LPN 10
NJN COB1 IF EOF/EOI
LDM COBA,EQ
UJN COB2 SET EOR PROCESSOR
COB1 LDM COBB,EQ SET EOF/EOI PROCESSOR
COB2 STD T2
LJM 0,T2 PROCESS EOF
* END OF RECORD PROCESSORS.
COBA INDEX
INDEX LPDT,COB3 READ NEXT RECORD
INDEX CPDT,/3CZ/PER PUNCH EOR
INDEX NPDT,COB3 READ NEXT RECORD
INDEX MXDT
* END OF FILE PROCESSORS.
COBB INDEX
INDEX LPDT,/3CZ/LEF LIST END OF INFORMATION
INDEX CPDT,/3CZ/PEF PUNCH END OF FILE
INDEX NPDT,/3CY/NEF LIST END OF INFORMATION
INDEX MXDT
* READ REQUEST CODES.
COBC INDEX
INDEX LPDT,600 READEI
INDEX CPDT,10 READ
INDEX NPDT,600 READEI
INDEX MXDT
CPS SPACE 4,15
** CPS - CALL PP SERVICE PROGRAM.
*
* ENTRY (A) = REQUEST.
*
* EXIT (A) = 0 IF REQUEST NOT ACCEPTED.
*
* USES BS+4, T0, CM - CM+4.
*
* CALLS *CIO*, *QAP*, SFA.
*
* MACROS EXECUTE, MONITOR.
CPS SUBR ENTRY/EXIT
STD T0 SAVE REQUEST
SHN -9D
STD CM+2
ZJN CPS1 IF CIO REQUEST
SHN 9D CLEAR UPPER THREE BITS OF REQUEST
LMD T0
STD T0
LDC 3RPQA&3ROCI
CPS1 LMC 3ROCI
STD CM
SHN -6
SCN 77
STD CM+1
LDD BS+4 SAVE CURRENT BUFFER STATUS
STM CPSB
LPN 1
ZJN CPSX IF BUFFER BUSY
LMD BS+4
LMD T0
ZJN CPSX IF SAME OPERATION
LDD T0 SET REQUEST
STD BS+4
LDD CM+2
STM CMSB
LDI BI SET FET ADDRESS IN CALL
STD CM+3
LDM 1,BI
STD CM+4
RJM SFA STORE BUFFER STATUS
CWD BS
EXECUTE CIO,=
EXECUTE QAP,=
LDD MA
CWD CM
LDN 0 ENABLE QUEUING OF PP REQUEST
STD CM+1
MONITOR RPPM
LDD CM+1
NJN CPS2 IF PP ASSIGNED
LDC *
CPSB EQU *-1
STD BS+4 RESTORE ORIGINAL STATUS
RJM SFA SET FET ADDRESS
CWD BS
LDN 0
STM CMSB
CPS2 LJM CPSX RETURN
CRV SPACE 4,10
** CRV - CHECK FOR RECOVERED ERROR.
*
* ENTRY (A) = INDEX OF ERROR.
*
* EXIT (A) = 0.
*
* USES T1, T3.
*
* CALLS SDM.
CRV SUBR ENTRY/EXIT
STD T1 SAVE INDEX
LDM FRCI+EQSB,T1 GET ERROR COUNT
ZJN CRVX IF NO PREVIOUS ERROR
SHN 6
STD T3 SAVE RETRY COUNT
LDN 0
STM FRCI+EQSB,T1 CLEAR ERROR COUNTER
LDM TERC,T1
RJM SDM
* LDN 0
UJN CRVX RETURN
CUL SPACE 4,15
** CUL - CHECK USER LIMIT REACHED.
*
* ENTRY (A) = DECREMENT OF RECORD COUNT.
* (EQ) = EQUIPMENT TYPE CODE.
*
* EXIT (A) = 0 IF USER LIMIT NOT EXCEEDED.
* IF THE USER LIMIT IS EXCEEDED,
* THEN EXIT IS MADE TO THE RESPECTIVE
* DRIVER.
*
* USES T1.
*
* CALLS CPS, ECB, MGR.
CUL4 LDN 0 RETURN WITH (A) = 0
CUL SUBR ENTRY/EXIT
LMC -0
RAM CMRC+1
PJN CUL4 IF NO UNDERFLOW
AOM CMRC+1
SOM CMRC
PJN CUL4 IF USER LIMIT NOT EXCEEDED
AOM CMRC
* AN EXIT TO *CULX* IS NOT POSSIBLE AFTER THIS POINT.
* (SEE *PROGRAMMING CONSIDERATIONS*.)
CUL1 RJM MGR GO TO MANAGER
LDD BS+4 CHECK IF BUFFER ACTIVE
SHN 21-0
PJN CUL1 IF BUFFER ACTIVE
RJM ECB EMPTY CENTRAL BUFFER
CUL2 LDC PLEF+1000 REQUEST OUTPUT FILE TERMINATION
RJM CPS
CUL3 RJM MGR GO TO MANAGER
ZJN CUL2 IF REQUEST NOT ENTERED
LDD BS+4
SHN 21-0
PJN CUL3 IF REQUEST NOT COMPLETE
LDM CMSF CLEAR 6/12 AND 8/12 ASCII STATUS
SCN 50
STM CMSF
LDM CULA,EQ SET PROCESSOR ADDRESS
STD T1
LJM 0,T1 PROCESS USER VALIDATION EXCEEDED
CULA INDEX VALIDATION EXCEEDED PROCESSORS
INDEX LPDT,/3CZ/LPD4
INDEX CPDT,/3CZ/CPD3
INDEX NPDT,/3CY/NPD4
INDEX MXDT
ECB SPACE 4,10
** ECB - EMPTY CIRCULAR BUFFER.
*
* EXIT IN = OUT = FIRST.
*
* CALLS SOP.
ECB SUBR ENTRY/EXIT
LDK FT-EQSB SET OUT = FIRST
RJM SOP STORE OUT POINTER
SBN 1 STORE IN POINTER
CWD CM
UJN ECBX RETURN
MCC SPACE 4,10
** MCC - MOVE AND CONVERT CHARACTER.
*
* ENTRY (A) = DISPLAY CODE CHARACTER.
* (T2) = BYTE INDEX.
*
* EXIT (T0) = 0#23, IF ILLEGAL CHARACTER.
* (T2) DECREMENTED, IF CHARACTER NOT ESCAPE CODE.
* (T3) = UNCONVERTED CHARACTER.
*
* USES T2, T3.
MCC3 ADN 76 SAVE UNCONVERTED NORMAL CHARACTER
MCC4 STD T3
SOD T2 DECREMENT BUFFER INDEX
LDM CTBL,T3 CONVERT CHARACTER
MCC5 STM 1,T2
MCC SUBR ENTRY/EXIT
UJN MCC4 CONVERT CHARACTER
* PSN (IF ASCII 6/12 FILE)
MCCA EQU *-1
SBN 74
ZJN MCC1 IF CHARACTER IS ESCAPE CODE 74
SBN 76-74
NJN MCC3 IF CHARACTER IS NOT ESCAPE CODE 76
LDD T3
ZJN MCC2 IF 7600
SBN 37
PJN MCC2 IF 7637 - 7677
ADC 140+37
UJN MCC5 STORE CONVERTED CHARACTER
MCC1 LDD T3
SBN MCCBL
PJN MCC2 IF ILLEGAL CHARACTER
LDM MCCB,T3
NJN MCC5 IF LEGAL CHARACTER
MCC2 LDN 0#23 FLAG ILLEGAL CHARACTER
STD T0
LDN 0#20 REPLACE WITH BLANK
UJN MCC5 STORE CHARACTER
* TABLE OF 74XX CHARACTERS.
MCCB BSS 0
CON 0 ILLEGAL
CON 100 COMMERCIAL AT
CON 136 CIRCUMFLEX
CON 0 ILLEGAL
MCCC CON 72 COLON (64 CHARACTER SET)
* CON 45 PERCENT (63 CHARACTER SET)
CON 0 ILLEGAL
CON 0 ILLEGAL
CON 140 GRAVE
MCCBL EQU *-MCCB
MSG SPACE 4,10
** MSG - SET BUFFER POINT MESSAGE.
*
* ENTRY (A) = MESSAGE NUMBER.
*
* USES T1, CM - CM+4.
*
* MACROS NFA.
MSG SUBR ENTRY/EXIT
STD T1
NFA BF,R READ MESSAGE CONTROL
ADN 1
CRD CM
LDD CM CHECK PREVIOUS MESSAGE
LMD T1
ZJN MSGX IF SAME AS CURRENT MESSAGE
LDD T1 SET BUFFER POINT MESSAGE
STD CM
SBN ENEC
MJN MSG1 IF NOT ERROR CONDITION
LDD CP STORE CONTROL POINT MESSAGE
ADN MS2W
CWM MSGA,TR
MSG1 NFA BF,R STORE BUFFER POINT MESSAGE
ADN 1
CWD CM
UJN MSGX RETURN
MSGA DATA C+$REQUEST *I* DISPLAY.+
PMR SPACE 4,10
** PMR - PROCESS MESSAGE REQUEST.
*
* EXIT (A) = 0 IF NO REQUEST OR REQUEST PROCESSED.
*
* USES BS+4.
*
* CALLS CPS, SFA.
PMR2 LDD BS+4 CHECK BUFFER BUSY
LPN 1
ZJN PMR4 IF BUSY
LDM CMBS
STD BS+4 RESTORE PREVIOUS STATUS
RJM SFA SET FET ADDRESS
CWD BS
LDN 0
PMR3 STM CMMR INDICATE REQUEST IN PROGRESS/COMPLETED
ADN 1
PMR4 LMN 1 SET EXIT CONDITIONS
PMR SUBR ENTRY/EXIT
LDM CMMR
ZJN PMRX IF NO REQUEST
SHN 6
MJN PMR2 IF REQUEST IN PROGRESS
LDC PDMF+1000 PROCESS DAYFILE MESSAGE
RJM CPS
ZJN PMR4 IF REQUEST NOT HONORED
LDM CPSB
LMC PDMF+3
ZJN PMR1 IF PREVIOUS STATUS MESSAGE PROCESSING
LMC PDMF+3
STM CMBS SAVE PREVIOUS STATUS
PMR1 LCN 7
UJN PMR3 SET REQUEST IN PROGRESS
PRE SPACE 4,10
** PRE - PROCESS RETRIED ERROR.
*
* ENTRY (A) = INDEX OF ERROR.
*
* EXIT TO *CEP* IF MAXIMUM RETRIES REACHED.
*
* USES T1.
*
* CALLS SDM, WST.
PRE SUBR ENTRY/EXIT
STD T1 SAVE INDEX
RJM WST WRITE STATUS TO FET
AOM FRCI+EQSB,T1 INCREMENT ERROR COUNTER
SBM TMAX,T1 COMPARE TO MAXIMUM
NJN PREX IF NOT AT MAXIMUM
* ISSUE MESSAGE AND TERMINATE OPERATION.
LDM FRCI+EQSB,T1 GET RETRY COUNT
SHN 6
ADN 1 SET UNRECOVERED FLAG
STD T3
LDN 0 CLEAR COUNTER
STM FRCI+EQSB,T1
LDM TERC,T1
RJM SDM
LJM CEP CHANNEL ERROR PROCESSOR
TERC SPACE 4,10
** TERC - TABLE OF ERROR CODES.
TERC INDEX
INDEX DRRI,EITM INCOMPLETE DATA TRANSFER
INDEX FRJI,ERJM INTERNAL/EXTERNAL REJECT
INDEX SCEI,ECRE CHANNEL PARITY ERROR - STATUS
INDEX DCPI,ECRE CHANNEL PARITY ERROR - DATA
INDEX PERI,EPLM PRINT ERROR
INDEX MXRI
TMAX SPACE 4,10
** TMAX - TABLE OF MAXIMUM RETRIES.
TMAX INDEX
INDEX DRRI,ERRL INCOMPLETE DATA TRANSFER
INDEX FRJI,ERRL INTERNAL/EXTERNAL REJECT
INDEX SCEI,CHPR CHANNEL PARITY ERROR - STATUS
INDEX DCPI,CHPR CHANNEL PARITY ERROR - DATA
INDEX PERI,PERL PRINT ERROR
INDEX MXRI
PSD SPACE 4,15
** PSD - PRESET DRIVER.
*
* ENTRY (FA) = FST ADDRESS.
* (UL - UL+1) = USER LIMITS.
*
* EXIT FILE REWOUND.
* USER LIMITS SET IN *CMRC*.
* 6/12 AND 8/12 ASCII PRINT FLAGS SET/CLEAR IN *CMSF*.
*
* USES CM - CM+4.
*
* MACROS NFA.
PSD SUBR ENTRY/EXIT
LDD F2+2 SET/CLEAR ASCII PRINT FILE FLAGS
LPN 24
SHN 1
STM CMSF
NFA FA,R READ FST INFORMATION
CRD CM
LDD CM+1 REWIND FILE
STD CM+2
LDN FSMS
STD CM+3
NFA FA,R STORE FST INFORMATION
CWD CM
LDD UL SET USER LIMITS
STM CMRC
LDD UL+1
STM CMRC+1
UJN PSDX RETURN
RCB SPACE 4,15
** RCB - READ CODED BUFFER.
*
* ENTRY (A) = CM WORD LIMIT FOR LINE/CARD IMAGE.
*
* EXIT (A) = (CMLR) = LENGTH OF LINE/CARD IN BYTES.
* (T2 - T6) = FIRST WORD NEXT LINE/CARD.
* (CM - CM+4) = LAST WORD CURRENT LINE/CARD.
* (OT - OT+1) UPDATED.
* (T1) = ADDRESS + 1 OF LAST CHARACTER TRANSLATED.
*
* USES T1 - T7.
*
* CALLS MCC, RNL, SCN.
RCB3 LDI T7 CHECK NEXT CHARACTER
LPC 3777 IGNORE HIGH-ORDER BIT
SBN 40
MJN RCB4 IF INCORRECT CHARACTER
SBK 177-40
MJN RCB5 IF LEGAL CHARACTER
RCB4 LDN 40 SUBSTITUTE BLANK
STI T7
LDN 43 SET INCORRECT CHARACTER IN LINE
STM 1,DA
RCB5 AOD T7 ADVANCE BUFFER ADDRESS
LMD T1
RCB6 NJN RCB3 IF NOT EOL
* PSN (NON-IMPACT PRINTER)
RCBA EQU RCB6
RCB7 LDD OT READ NEXT WORD
SHN 6
ADD RA
SHN 6
ADD OT+1
CRD T2
LDD T1 SET BYTE COUNT FOR LINE/CARD IMAGE
SBD DA
STM CMLR
RCB SUBR ENTRY/EXIT
STD T3
LDC 1S12 READ CODED LINE/CARD
LMD DA
RJM RNL
LDD T1
SBD T7
ZJN RCB7 IF EMPTY LINE OR CARD
LDM CMSF CHECK MODE OF FILE
LPN 50
ZJN RCB1 IF NOT ASCII FILE
LPN 10
NJN RCB6 IF 8/12 ASCII FILE
STD T0 INITIALIZE ILLEGAL CHARACTER FLAG
UJN RCB1.1 ENABLE 6/12 CONVERSION IN *MCC*
* CONVERT LINE OR CARD IMAGE.
RCB1 LDC ** DISABLE 6/12 CONVERSION IN *MCC*
ORG *-1
LOC MCCA
UJN MCC4 SKIP 6/12 CONVERSION
LOC *O
RCB1.1 STM MCCA
RJM SCN LOAD CONVERSION TABLE
SOD T1 SET END OF DATA IN BUFFER
STD T4
ADN 1
SBD DA SET END OF UNPACKED DATA
SHN 1
ADD DA
STD T1
SBN 1
STD T2
LDI T4 SAVE LAST CHARACTER FOR PUNCH DRIVER
LPN 77
STD T7
RCB2 LDI T4 UNPACK DATA BYTE
LPN 77
RJM MCC MOVE AND CONVERT CHARACTER
LDI T4
SHN -6
RJM MCC MOVE AND CONVERT CHARACTER
SOD T4 DECREMENT DATA ADDRESS
SBD DA
PJN RCB2 IF NOT START OF BUFFER
LDM CMSF
LPN 40
ZJN RCB2.3 IF NOT 6/12 ASCII
LDD DA SET BUFFER INDEX
STD T3
RCB2.1 AOD T2
SBD T1
PJN RCB2.2 IF END OF DATA
LDI T2 MOVE DATA BYTE
STI T3
AOD T3
UJN RCB2.1 READ NEXT BYTE
RCB2.2 LDD T3 SET NEW LWA+1
STD T1
LDD T0
ZJN RCB2.3 IF NO ILLEGAL CHARACTERS IN LINE
STM 1,DA FLAG ILLEGAL CHARACTER(S)
RCB2.3 LJM RCB7 READ NEXT WORD
RDB SPACE 4,10
** RDB - RELEASE DATA BUFFER.
*
* ENTRY (CMDB) = FWA+1 OF DATA BUFFER ASSIGNED.
*
* EXIT (A) = (CMDB) = 0.
* (DB) = FWA OF DATA BUFFER RELEASED.
* ((DB)) = 0.
*
* USES DB.
RDB1 SBN 1
STD DB
LDN 0 RELEASE DATA BUFFER
STI DB
STM CMDB
RDB SUBR ENTRY/EXIT
LDM CMDB
NJN RDB1 IF DATA BUFFER IS ASSIGNED
UJN RDBX RETURN
RNL SPACE 4,15
** RNL - READ NEXT LINE (CARD).
*
* ENTRY (A) BITS 0 - 11 = PP BUFFER ADDRESS.
* BITS 12 - 17 = 0 IF BINARY READ.
* = 1 IF CODED READ.
* (T3) = NUMBER OF WORDS TO READ.
* (CMBE) = NUMBER OF WORDS IN CENTRAL BUFFER.
*
* EXIT (T1) = END OF DATA IN PP BUFFER (CODED READ ONLY).
* (T3) = ACTUAL WORD COUNT TO END OF LINE (CARD).
* (T7) = PP BUFFER ADDRESS.
*
* USES T0 - T1, T3 - T7.
*
* CALLS AOP.
RNL SUBR ENTRY/EXIT
STM RNLB SET PP BUFFER ADDRESS
STD T1
STD T7
SHN -14 SAVE BINARY / CODED READ FLAG
STD T6
LDM CMBE CHECK DATA IN CENTRAL BUFFER
SBD T3
PJN RNL1 IF SUFFICIENT DATA
RAD T3
RNL1 LDD T3 NUMBER OF WORDS TO READ
STD T5
LDD LM LIMIT - OUT
SBD OT
SHN 14
ADD LM+1
SBD OT+1
STD T0 NUMBER OF WORDS FROM *OUT* TO *LIMIT*
SBD T3
PJN RNL2 IF NO WRAP AROUND
LMC -0 NUMBER OF WORDS STARTING AT *FIRST*
STD T4
LDD T0 WORD COUNT FROM *OUT* TO *LIMIT*
STD T5
SHN 2
ADD T5
ADD T1 BUFFER ADDRESS FOR FIRST READ
STM RNLA
LDD FT READ WRAP AROUND
SHN 6
ADD RA
SHN 6
ADD FT+1
CRM **,T4
RNLA EQU *-1
RNL2 LDD OT READ LINE
SHN 6
ADD RA
SHN 6
ADD OT+1
CRM **,T5
RNLB EQU *-1
LDD T6
ZJN RNL7 IF BINARY READ
SOD T1
LDN 0
STD T4
RNL3 LDN 5 SEARCH FOR EOL
RAD T1
AOD T4
LMD T3
ZJN RNL5 IF REQUESTED NUMBER OF WORDS CHECKED
LDI T1
NJN RNL3 IF NOT EOL
RNL4 SOD T1
RNL5 LDI T1
ZJN RNL4 IF EOL
AOD T1
SBD T7
PJN RNL6 IF NOT EMPTY LINE
LDD T7
STD T1
RNL6 LDD T4
STD T3
RNL7 LDD T3 ADVANCE OUT POINTER
RJM AOP
LJM RNLX RETURN
SCN SPACE 4,10
** SCN - SET CONVERSION TABLE.
SCN SUBR ENTRY/EXIT
LDM CMCT CHECK TABLE IN MEMORY
LMM CTID
ZJN SCNX IF TABLE LOADED
LDD RA LOAD CONVERSION TABLE
SHN 6
ADN CTIR
ADM CMCT
CRM CTID,TL
UJN SCNX RETURN
SDM SPACE 4,10
** SDM - SEND DAYFILE MESSAGE.
*
* ENTRY (A) = MESSAGE CODE.
* (T3) = MPARAM 1 (RETRIED ERRORS ONLY).
* (FC) = MPARAM 3.
* (SEE BUFFER POINT AREA DESCRIPTION IN
* *COMSBIO* FOR *MPARAM* VALUES.)
*
* EXIT (A) = 0.
*
* USES T1, T2, T4, T5, CM - CM+4.
*
* MACROS NFA.
SDM1 LDN ** SET BY *PRS*
SDMA EQU *-1 PP NUMBER
STD T4 (T4) = PP NUMBER
LDD FC
STD T5
NFA BF,R READ MESSAGE CONTROL
SDM2 ADN 1
CRD CM
LDD CM PRESERVE *I* DISPLAY
STD T1
NFA BF,R STORE MESSAGE PARAMETERS
ADN 1
CWD T1
LDN 0
SDM SUBR ENTRY/EXIT
STM CMMR
STD T2 STORE MESSAGE CODE
SBN ORME
PJN SDM1 IF NOT OPERATOR REQUEST
LDM CMER
SHN 6 ENTER REPEAT COUNT
STD CM+4
NFA BF,R STORE REPEAT COUNT
CWD CM
UJN SDM2 READ MESSAGE CONTROL
SFA SPACE 4,10
** SFA - SET FET ADDRESS.
*
* ENTRY ((BI - BI+1)) = RELATIVE FET ADDRESS.
*
* EXIT (A) = FET ADDRESS.
SFA SUBR ENTRY/EXIT
LDI BI
SHN 6
ADD RA
SHN 6
ADM 1,BI
UJN SFAX RETURN
SOP SPACE 4,10
** SOP - STORE OUT POINTER.
*
* ENTRY (A) = ADDRESS OF VALUE TO BE PLACED IN POINTER.
*
* EXIT (A) = ADDRESS OF OUT POINTER.
* (CM - CM+4) = OUT POINTER.
*
* USES T0, CM - CM+4.
*
* CALLS SFA.
SOP SUBR ENTRY/EXIT
ADC EQSB
STD T0
LDN ZERL CLEAR ASSEMBLY
CRD CM
LDI T0 GENERATE POINTER WORD
STD CM+3
AOD T0
LDI T0
STD CM+4
RJM SFA STORE OUT POINTER
ADN 3
CWD CM
UJN SOPX RETURN
TOF SPACE 4,10
** TOF - TERMINATE OUTPUT FILE.
*
* USES BS+4, CM - CM+4.
*
* CALLS CLB, ECB, RDB, SFA.
*
* MACROS NFA.
TOF NFA BF,R READ BUFFER POINT WORD
CRD CM
RJM RDB RELEASE DATA BUFFER
SOM CMER
MJN TOP IF REPEAT COUNT SATISFIED
SHN 6
STD CM+4
NFA BF,R STORE ADJUSTED REPEAT COUNT
CWD CM
LDK ZERL
CRD CM
LDN 1 RESET BUFFER STATUS
STD BS+4
RJM SFA STORE BUFFER STATUS
CWD BS
ADN FPSN
CWD CM CLEAR CURRENT RANDOM INDEX
RJM ECB EMPTY CIRCULAR BUFFER
LDD BI INITIALIZE BUFFER
RJM CLB
LJM MGR1 GO TO MANAGER
TOP SPACE 4,10
** TOP - TERMINATE OPERATION.
*
* USES BR, IR+3, CM - CM+4, T6 - T7.
*
* CALLS CPS, MGR, RDB, REC, SFA.
*
* MACROS MONITOR, NFA.
TOP LDN 60 *UNLOAD* FILE
* *TOP1* IS A SECONDARY ENTRY POINT FOR *TOP*.
TOP1 STM CMLR SAVE LAST REQUEST
RJM RDB RELEASE DATA BUFFER
AOD BR SET BUSY RETURN
RJM MGR GO TO MANAGER
RJM ** RELEASE EQUIPMENT
TOPB EQU *-1 (SET BY *PRS*)
* RJM /3CZ/REC
* RJM /3CY/REC
* *TOP2* IS A SECONDARY ENTRY POINT FOR *TOP*.
TOP2 LDM CMLR ISSUE LAST REQUEST
ZJN TOP4 IF NO REQUEST
RJM CPS CALL *QAP*/*CIO*
TOP3 RJM MGR GO TO MANAGER
TOPA EQU *
ZJN TOP2 IF REQUEST NOT ISSUED
LDD BS+4
LPN 1
LMN 1
NJN TOP3 IF REQUEST NOT COMPLETE
* *TOP4* IS A SECONDARY ENTRY POINT FOR *TOP*.
TOP4 LDN ZERL CLEAR BUFFER STATUS
CRD CM-2
RJM SFA SET FET ADDRESS
CWD CM-2
LDM CMEN SET EQUIPMENT NUMBER
SHN -3
STD CM+1
NFA BF,R STORE BUFFER POINT WORD
CWD CM-2
SOD IR+3 DECREMENT ENTRY COUNT
LDD RA
SHN 6
ADD IR+2
CWD IR
AOD SB DISABLE STATUS BLOCK UPDATE
MONITOR DEQM
* LDN 0 CLEAR BUFFER ASSIGNMENT
STI BI
STM 1,BI
LJM PSE RETURN TO MANAGER
WST SPACE 4,10
** WST - WRITE STATUS TO FET.
*
* CALLS SFA.
WST SUBR ENTRY/EXIT
RJM SFA
ADN FPW2
CWD F2
UJN WSTX RETURN
SPACE 4,10
** COMMON DATA BUFFER AREA.
CBUF BSSZ BUFS*MEQD BUFFER ASSIGNMENT TABLE
CBUFL BSS 0 LWA+1 OF BUFFER ASSIGNMENT TABLE
EQSB SPACE 4,10
** EQSB - EQUIPMENT STATUS BUFFER.
EQSB BSS 0 FWA OF DRIVER STATUS BLOCK
EQSBL EQU EQSB+EDSBL*5 LWA+1 OF DRIVER STATUS BLOCK
ZBA SPACE 4,15
** ZBA - ZERO DATA BUFFER ASSIGNMENT.
*
* ENTRY (T1) = FWA OF DATA BUFFERS.
* (T2) = DATA BUFFER SIZE.
* (T3) = LWA+1 OF DATA BUFFERS.
*
* EXIT (CTID) = 7777.
* (MSD) = 0.
* TO *MGR1*.
*
* NOTE THIS ROUTINE IS OVERLAYED BY *EQSB*.
ZBA BSS 0 ENTRY
ZBA1 LDN 0 CLEAR BUFFER ASSIGNMENT
STI T1
LDD T2 SET NEXT BUFFER
RAD T1
LMD T3
NJN ZBA1 IF MORE TO CLEAR
STM MSD CLEAR MASS STORAGE DESIGNATOR
LCN 0 ENSURE INITIAL CONVERSION TABLE LOAD
STM CTID
LJM MGR1 EXIT TO MANAGER
SPACE 4,10
** SUB-DRIVER OVERLAY AREA.
*
* NOTE OVERLAY HEADER IS OVERLAYED BY *EQSB*.
OVLA EQU EQSBL-4 FWA OF SUBDRIVER OVERLAY AREA
ERRNG OVLA-*-5 OVERLAY LOAD DESTROYS **
TITLE DRIVER PRESET.
PRS SPACE 4,20
** PRS - DRIVER PRESET.
*
* ENTRY (IR+4) = SUB-DRIVER NUMBER.
*
* EXIT (BI) = *CBUF*.
* (TL) = CONVERSION TABLE LENGTH.
*
* ERROR *HNGM* MONITOR FUNCTION ISSUED. PP DROPPED AND EXIT
* TO *PPR* WHEN *HNGM* REQUESTED CLEARED.
*
* CALLS EXR.
*
* MACROS MONITOR.
PRS3 MONITOR HNGM HANG PP
MONITOR DPPM
LJM PPR EXIT TO PPR
PRS BSS 0 ENTRY
LDD IR+4
SBN MXSD
PJN PRS3 IF INVALID SUB-DRIVER
LDK CHTP GET CHANNEL TABLE POINTER
CRD CM
LDD CM+3 SET CHANNEL TABLE ADDRESS
STM PSEA
LDD CM+2
RAM PSEA-1
LDN CTLN SET TABLE LENGTH
STD TL
LDN EDSBL SET EQUIPMENT STATUS BLOCK LENGTH
STD BL
STD SB
LDC CBUF INITIALIZE BUFFER TABLE SERACH
STD BI
LDK IPRL CHECK SYSTEM DEFAULT KEYPUNCH MODE
CRD CM
LDD CM+2
SHN 21-13
PJN PRS1 IF DEFAULT IS O26
LDN C9XD SET O29 CONVERSION MODE FOR CARD READER
STM TDCM+CRDT
PRS1 LDK MABL FETCH PP SPEED INDICATOR
CRD CM
LDD CM+4 SET TIMEOUT VALUE
SHN 1
NJN PRS2 IF NOT 1X PPS
LDN 1
PRS2 RAM MGRA
LDN PPCP PRESET PP NUMBER
CRD CM
LDD IA
SBD CM+4
SHN -3
RAM SDMA PP NUMBER FOR BML MESSAGE
LDM TDBF,IR+4 SET FWA OF FIRST DATA BUFFER
STM ADBC
LDM TDBN,IR+4 SET NUMBER OF DATA BUFFERS
RAM ADBD
LDM TDBL,IR+4 SET LWA+1 OF DATA BUFFERS
STM ADBB
LDM TDBS,IR+4 SET DATA BUFFER SIZE
STM ADBA
LDM TREC,IR+4 SET RELEASE EQUIPMENT ADDRESS
STM TOPB
LDM TSDP,IR+4 SET SUB-DRIVER PROCESSOR ADDRESS
STM MGRB
LDC 1R3*10000 SET SUB-DRIVER OVERLAY NAME
LMM TSDO,IR+4
EXECUTE 3CZ,=
EXECUTE 3CY,=
RJM EXR EXECUTE SUB-DRIVER
TDBF SPACE 4,10
** TDBF - TABLE OF FWA OF FIRST DATA BUFFER.
*
* INDEXED BY SUB-DRIVER TYPE.
TDBF INDEX
INDEX 0,/3CZ/DBUF
INDEX 1,/3CY/DBUF
INDEX MXSD
TDBN SPACE 4,10
** TDBN - TABLE OF NUMBER OF DATA BUFFERS.
*
* INDEXED BY SUB-DRIVER TYPE.
TDBN INDEX
INDEX 0,/3CZ/NDBUF
INDEX 1,/3CY/NDBUF
INDEX MXSD
TDBL SPACE 4,10
** TDBL - TABLE OF LWA+1 OF DATA BUFFERS.
*
* INDEXED BY SUB-DRIVER TYPE.
TDBL INDEX
INDEX 0,/3CZ/DBUFL
INDEX 1,/3CY/DBUFL
INDEX MXSD
TDBS SPACE 4,10
** TDBS - TABLE OF DATA BUFFER SIZES.
*
* INDEXED BY SUB-DRIVER TYPE.
TDBS INDEX
INDEX 0,/3CZ/DBUFS
INDEX 1,/3CY/DBUFS
INDEX MXSD
TREC SPACE 4,10
** TREC - TABLE OF RELEASE EQUIPMENT PROCESSORS.
*
* INDEXED BY SUB-DRIVER TYPE.
TREC INDEX
INDEX 0,/3CZ/REC
INDEX 1,/3CY/REC
INDEX MXSD
TSDO SPACE 4,10
** TSDO - TABLE OF SUB-DRIVER OVERLAY NAMES.
*
* INDEXED BY SUB-DRIVER TYPE.
TSDO INDEX
INDEX 0,2RCZ
INDEX 1,2RCY
INDEX MXSD
TSDP SPACE 4,10
** TSDP - TABLE OF SUB-DRIVER PROCESSOR ADDRESSES.
*
* INDEXED BY SUB-DRIVER TYPE.
TSDP INDEX
INDEX 0,/3CZ/SDP
INDEX 1,/3CY/SDP
INDEX MXSD
XCD TTL 1CD/3CZ - BATCHIO COMBINED DRIVER.
TITLE
QUAL 3CZ
IDENT 3CZ,XCDX
*COMMENT 1CD - DRIVE *DCC*-CONNECTED DEVICES.
COMMENT COPYRIGHT CONTROL DATA SYSTEMS INC. 1992.
3CZ SPACE 4,10
*** 1CD/3CZ - BATCHIO COMBINED DRIVER.
*
* THIS SUB-DRIVER OVERLAY CONTAINS DRIVERS TO ACCESS DEVICES
* THAT ARE CONNECTED VIA A DATA CHANNEL CONVERTER (DCC).
3CZ SPACE 4,10
ORG OVLA
XCD SUBR ENTRY/EXIT
CHTE CCEA
LJM PRS PRESET
TITLE 3555/512 - 580 DRIVER SECTION.
LPD SPACE 4,10
** LPD - 3555/512 - 580 DRIVER.
LPD RJM PSD PRESET DRIVER
LPD1 LDC GBPF+2000 REQUEST BANNER PAGE GENERATION
RJM CPS
LPD2 RJM MGR GO TO MANAGER
ZJN LPD1 IF REQUEST NOT ACCEPTED
LDD BS+4 CHECK BUFFER STATUS
LMC GBPF+1
ZJN LPD4 IF OPERATION COMPLETE
LMN 4
ZJN LPD3 IF USER FORMS CONTROL ON PREVIOUS JOB
LMC CECF&GBPF+4
NJN LPD2 IF NOT PFC ERROR
LJM TOP4 TERMINATE OPERATION
* PHASE 1. LOAD BUFFER.
LPD3 SCN 2 SET DRIVER HOLDING
LMN 2
STM CMHF
* *LPD4* IS A SECONDARY ENTRY POINT FOR *LPD*.
LPD4 LDN 1 SET BUSY RETURN
STD BR
RJM MGR GO TO MANAGER
LDM CMHF
NJN LPD3 IF HOLD INITIATED
RJM COB CHECK OUTPUT BUFFER
SBN DBUFW*2+1
PJN LPD5 IF AT LEAST 1 LINE AND 1 WORD
LDD BS+4
LPN 20
ZJN LPD4 IF NOT EOR/EOF/EOI
LPD5 RJM ADB ASSIGN DATA BUFFER
LDN 0
STM LPFT CLEAR FORMAT TAPE AND PM MESSAGE FLAGS
STD BR CLEAR BUSY RETURN
LDM CMSF CHECK MODE OF FILE
LPN 50
ZJN LPD6 IF NOT 6/12 OR 8/12 ASCII PRINT FILE
LDN DBUFW
LPD6 ADN DBUFW READ CODED BUFFER
RJM RCB
NJN LPD8 IF NOT EMPTY LINE
LPD7 LDN 40 SET SPACE CHARACTER
STI T1
AOD T1
AOM CMLR ADVANCE BYTE COUNT FOR LINE
LPD8 SBN 2
MJN LPD7 IF NOT 2 CHARACTERS IN LINE
LDM CMSF
LPN 10
NJN LPD9 IF 12 BIT ASCII PRINT FILE
LPDA PSN
* UJN LPD9 (SYSTEM IN 63 CHARACTER SET)
LDM -1,T1 CHECK LAST CHARACTER IN LINE
LMN 72
NJN LPD9 IF NOT COLON
LDN 40 REPLACE WITH BLANK
STM -1,T1
LPD9 SOM CMLR DEDUCT CARRIAGE CONTROL CHARACTER
ADC -137D
LPDB EQU *-1
PJN LPD9 IF LINE TOO LONG
LDD T2 SET FORMAT CONTROL FOR NEXT LINE
STM LPFC
LDD OT SAVE *OUT* POINTER
STM LPOT
LDD OT+1
STM LPOT+1
RJM MGR GO TO MANAGER
* PHASE 2. PROCESS FORMAT CONTROL.
LDM CMSF
LPN 4
NJN LPD10.2 IF SUPPRESS FLAG SET
LDI DA CHECK FORMAT CHARACTER
LPC 3777 REMOVE UPPER BIT
STI DA
LMN 40 ASCII BLANK
ZJN LPD10.2 IF ASCII BLANK
RJM WNB WAIT NOT BUSY
RJM SPC PROCESS SPACE CONTROL
RJM MGR GO TO MANAGER
ZJN LPD10 IF NOT *Q*, *R*, *S*, *T* FORMAT CONTROL
LJM LPD4 LOAD BUFFER
LPD10 LDI DA CHECK FOR PM MESSAGE
ADC -120
NJN LPD10.2 IF NOT PM MESSAGE
AOD DA CHECK NEXT CHARACTER
LDI DA
ADC -115
NJN LPD10.1 IF NOT PM MESSAGE
LDN 2 SET PM MESSAGE FLAG
RAM LPFT
LPD10.1 SOD DA RESTORE DATA ADDRESS
LPD10.2 LDM CMBE
ZJN LPD13 IF BUFFER EMPTY
LDM CMSF
LPN 10
NJN LPD11 IF 12 BIT ASCII
LDM LPFC CHECK FORMAT CHARACTER OF NEXT LINE
SHN -6
LMN 1R+
UJN LPD12 CHECK FOR *+*
LPD11 LDM LPFC
LPC 3777 REMOVE UPPER BIT
LMN 53 ASCII *+*
LPD12 NJN LPD13 IF NOT *+*
LDM LPFT CHECK FORMAT TAPE FLAG
LPN 1
NJN LPD13 IF FUNCTION .GE. 31
RJM WNB WAIT NOT BUSY
LDN 6 SUPPRESS SPACE AFTER PRINT
RJM FCN
* PHASE 3. PRINT LINE.
LPD13 LDN ECLE CLEAR *I* DISPLAY
RJM MSG
AOD DA DO NOT PRINT FORMAT CHARACTER
LDM LPPR
ZJN LPD14 IF NO PRINT ERRORS
LDC 0#5F STORE ASCII *_*
STI DA
LPD14 LDC 16S12+OAMI OUTPUT PRINT RECORD
RJM XDR
RJM RDB RELEASE DATA BUFFER
LDC * SET REENTRY ADDRESS FOR FUNCTION REJECT
STM CMPA
LDN 22 SELECT END OF OPERATION INTERRUPT
RJM FCN
RJM MGR GO TO MANAGER
* PHASE 4. PROCESS POST PRINT OPERATIONS.
LDM LPFT CHECK FORMAT TAPE FLAG
LPN 1
ZJN LPD15 IF NOT SET
RJM WNB WAIT NOT BUSY
LDN 7 CONDITIONAL CLEAR FORMAT
RJM FCN
LPD15 LDD ST
SHN -12 CHECK PRINT ERROR STATUS LINE
LPN 1
NJN LPR IF SET
LDN PERI
RJM CRV CHECK FOR RECOVERED ERROR
LPD16 LDN LPOT STORE *OUT* POINTER
RJM SOP
AOM LPLP INCREMENT LINE COUNT
SBM LPLL
MJN LPD17 IF NOT END OF PAGE
LDM LPLL CHECK USER LIMITS
RJM CUL
STM LPLP CLEAR LINE COUNT FOR PAGE
LPD17 RJM PPM CHECK FOR PM MESSAGE
LJM LPD4 CONTINUE PRINTING
LPR SPACE 4,15
** LPR - PROCESS PRINT ERROR.
*
* USES CM - CM+4.
*
* CALLS MSG, PRE.
LPR AOM CMEC ADVANCE ERROR COUNT
LDD CP
ADN SNSW CHECK ERROR REPORTING ENABLED
CRD CM
LDD CM+4 INTERROGATE SENSE SWITCH 1
SHN 21-6
MJN LPD16 IF ERROR REPORTING AND RETRYING DISABLED
LDN PERI
RJM PRE PROCESS RETRIED ERROR
* *LPR1* IS A SECONDARY ENTRY POINT FOR *LPR*.
LPR1 LDD CP CHECK ERROR STOP ENABLED
ADN SNSW
CRD CM
LDD CM+4 INTERROGATE SENSE SWITCH 2
SHN 21-7
MJN LPR2 IF HOLDING ON ERRORS
LJM LPD4 CONTINUE PRINTING
LPR2 LDN EPRH *I* DISPLAY MESSAGE CODE
* *LPR3* IS A SECONDARY ENTRY POINT FOR *LPR*.
LPR3 RJM MSG ISSUE BUFFER POINT MESSAGE
LDN 1
LJM LPD3 SET DRIVER HOLDING
LPE SPACE 4,10
** LPE - ERROR PROCESSOR.
*
* ENTRY (A) = EQUIPMENT STATUS FOLLOWING CONNECT.
*
* EXIT TO *PSE*.
*
* CALLS MSG.
LPE LPN 10
ZJN LPE1 IF NO PAPER FAULT
LDN ENPA-ENRD
LPE1 ADN ENRD *NOT READY*
RJM MSG
LJM PSE RETURN
LPN SPACE 4,10
** LPN - PROCESS *END*.
*
* USES BS+4, CM - CM+4.
*
* CALLS SFA.
*
* MACROS NFA.
LPN LDN 0 CLEAR HOLD FLAG
STM CMHF
LDM CMSF CHECK END FLAG
LPN 2
NJN LPN3 IF SET PREVIOUSLY
LDN 2 SET END FLAG
RAM CMSF
NFA FA,R READ FST INFORMATION
CRD CM
LDD FP+1 RESET FILE STATUS
ZJN LPN3 IF NO DAYFILE
STD CM+2
LDD FP+2
STD CM+3
NFA FA,R UPDATE FST INFORMATION
CWD CM
* *LPN1* IS A SECONDARY ENTRY POINT FOR *LPN*.
LPN1 LDN 1 RESET BUFFER STATUS
* *LPN2* IS A SECONDARY ENTRY POINT FOR *LPN*.
LPN2 STD BS+4
RJM SFA STORE BUFFER STATUS
CWD BS
LJM LPD4 RETURN TO MAIN DRIVER
LPN3 UJN LEF1 CHECK ACCOUNTING PROCESSED
LEF SPACE 4,10
** LEF - LIST END OF INFORMATION.
*
* USES BR, FC, T4.
*
* CALLS ACT, MGR, SDM.
LEF LDD BS+4 CHECK BUFFER STATUS
SHN 21-11
PJN LPN1 IF NOT EOI
LDD F2+2 CHECK ABORT FLAG
LPN 2
ZJN LEF1 IF NO ABORT FLAG
LDN 0 CLEAR REPEAT COUNT
STM CMER
LJM LPN PROCESS *END*
* *LEF1* IS A SECONDARY ENTRY POINT FOR *LEF*.
LEF1 AOD BR
LDM CMSF CHECK ACCOUNT FLAG
LPN 1
NJN LEF4 IF SET
AOM CMSF SET ACCOUNT FLAG
SCN 50 CLEAR 6/12 AND 8/12 ASCII PRINT FLAGS
STM CMSF
LEF2 RJM ACT PROCESS ACCOUNTING
LEF3 RJM MGR GO TO MANAGER
ZJN LEF2 IF REQUEST NOT ENTERED
LDD BS+4
SHN 21-0
PJN LEF3 IF ACCOUNTING NOT COMPLETE
LJM LPD4 PRINT LINE COUNT
* *LEF4* IS A SECONDARY ENTRY POINT FOR *LEF*.
LEF4 LDM CMEC
ZJN LEF5 IF NO PRINT ERRORS
STD FC (FC) = PRINT ERROR COUNT
LDN EPEM *EQXXX NNNN PRINT ERRORS.*
RJM SDM
LEF5 LJM TOF TERMINATE OUTPUT FILE
PPM SPACE 4,15
** PPM - PROCESS PM MESSAGE.
*
* EXIT TO CALLER IF NO *PM* MESSAGE OR USER DOES
* NOT HAVE *CBIO* PRIVILEGES.
* TO *LPR3* IF *PM* MESSAGE AND USER HAS
* *CBIO* PRIVILEGES (HOLD FLAG SET).
*
* CALLS MSG.
PPM SUBR ENTRY/EXIT
LDM LPFT CHECK PM FLAG
LPN 2
ZJN PPMX IF NO PM MESSAGE
LDD F2+2 CHECK USER *CBIO* PRIVILEGES
LPN 1
ZJN PPMX IF USER DOES NOT HAVE *CBIO* PRIVILEGES
LDN EPMM
LJM LPR3 ISSUE BUFFER POINT MESSAGE
SPC SPACE 4,10
** SPC - PROCESS SPACE CONTROL.
*
* ENTRY ((DA)) = FORMAT CONTROL BYTE.
*
* EXIT (A) = 0 IF LINE TO BE PRINTED.
*
* USES BR, T4.
*
* CALLS CPS, CUL, FCN, MGR, RDB, SOP, WNB.
SPC SUBR ENTRY/EXIT
LDC TFCC-2 SET TABLE ADDRESS
STD T4
SPC1 LDN 2 ADVANCE TABLE
RAD T4
LDI T4
ZJN SPCX IF END OF TABLE
LMI DA
NJN SPC1 IF NO MATCH
* CHARGE FOR NUMBER OF LINES.
LDI T4 CHECK FOR PAGE EJECT
SBN 61 ASCII *1*
ZJN SPC2 IF NORMAL PAGE EJECT
SBN 126-61 ASCII *V* - ASCII *1*
NJN SPC3 IF NOT USER FORMS CONTROL
SPC2 LDM LPLL CHARGE FOR CURRENT PAGE
RJM CUL
STM LPLP CLEAR LINE COUNT FOR PAGE
SPC3 LDI T4 CHECK FOR LAST LINE OF FORM
SBN 62 ASCII *2*
NJN SPC4 IF NOT ADVANCE TO LAST LINE OF FORM
LDM LPLL
SHN -1 CHARGE FOR LAST LINE OF FORM (*PLXL*/2)
RAM LPLP
SPC4 LDM 1,T4
SHN 14
RAM LPLP
* ISSUE FORMAT FUNCTION.
SHN -14
ZJN SPC7 IF NO FORMAT SELECTION
RJM FCN
LDI T4 CHECK SELECTED FORMAT
ADC -121 ASCII *Q*
ZJN SPC5 IF *Q*
SBN 122-121 ASCII *R* - ASCII *Q*
NJN SPC8 IF NOT *R*
SPC5 LDD F2+2 GET BIO FLAGS
LPN 10 CHECK FOR FORCED 8 LPI
ZJN SPC6 IF NOT FORCED 8 LPI
RJM MGR GO TO MANAGER
RJM WNB WAIT NOT BUSY
LDN 10 SET 8 LPI
RJM FCN ISSUE FUNCTION
SPC6 LDN LPOT STORE *OUT* POINTER
RJM SOP
* LDN 1 SET NO PRINT ON RETURN
SPC7 LJM SPCX RETURN
SPC8 SBN 123-122 ASCII *S* - ASCII *R*
ZJN SPC9 IF *S*
SBN 124-123 ASCII *T* - ASCII *S*
NJN SPC11 IF NOT *T*
LDN LP8L-LP6L
SPC9 STD T4
LDM LP6L+EQSB,T4 SET LINE LIMIT FOR PAGE
STM LPLL
SPC10 UJN SPC5 SET NO PRINT ON RETURN
SPC11 SBN 126-124 ASCII *V* - ASCII *T*
ZJN SPC12 IF *V*
LDM LPFT
SCN 1
STM LPFT
LDD FC
SBN 30+1
SHN 0-21
LMN 1 SET FORMAT TAPE FLAG
RAM LPFT
LDN 0
UJN SPC7 RETURN
SPC12 LDM 1,DA CHECK PFC ARRAY TO BE CHANGED
SBN 66 ASCII *6*
ZJN SPC13 IF 6 LPI
SBN 70-66 ASCII *8* - ASCII *6*
ZJN SPC13 IF 8 LPI
SBN 103-70 ASCII *C* - ASCII *8*
NJN SPC10 IF NOT 8 LPI ACROSS 2 LINES
SPC13 AOD BR SET BUSY RETURN
RJM RDB RELEASE DATA BUFFER
SPC14 RJM MGR GO TO MANAGER
LDD BS+4 CHECK BUFFER STATUS
LPN 1
ZJN SPC14 IF BUFFER BUSY
LDD BS+4 SAVE BUFFER STATUS
STM CMBS
SPC15 LDC PFCF+2000 REQUEST RELOAD PFC MEMORY
RJM CPS
SPC16 RJM MGR GO TO MANAGER
ZJN SPC15 IF REQUEST NOT ACCEPTED
LDD BS+4 CHECK BUFFER STATUS
LMC 1031
NJN SPC17 IF NOT INVALID USER / ERROR IN PFC IMAGE
LJM LPD4 CONTINUE / TERMINATE PRINT JOB
SPC17 LMC PFCF&1030
NJN SPC18 IF NOT PFC LOAD COMPLETE
LDM CMBS
LJM LPN2 RESET BUFFER STATUS AND CONTINUE
SPC18 LMN CECF&PFCF
NJN SPC16 IF NOT PFC ERROR
LJM TOP4 TERMINATE OPERATION
TFCC SPACE 4,10
** TFCC - TABLE OF FORMAT CONTROL CHARACTERS.
*
* TWO WORD ENTRY.
*
* PROGRAMMERS NOTE - THE *+* FORMAT CONTROL CHARACTER IS
* PROCESSED IN THE MAIN DRIVER BECAUSE THERE IS NO
* DIRECTLY EQUIVALENT CONTROLLER FUNCTION. CONTROLLER
* FUNCTION 6 IS USED FOR BOTH */* AND *+*, AND THE
* TIMING OF WHEN THE FUNCTION 6 IS SENT DETERMINES IF
* SPACING IS SUPPRESSED BEFORE OR AFTER PRINTING.
TFCC BSS 0
FMTC C,3,16,36 SKIP TO CHANNEL 6 AFTER PRINT
FMTC D,2,15,35 SKIP TO CHANNEL 5 AFTER PRINT
FMTC E,2,14,34 SKIP TO CHANNEL 4 AFTER PRINT
FMTC F,1,13,33 SKIP TO CHANNEL 3 AFTER PRINT
FMTC G,1,12,32 SKIP TO CHANNEL 2 AFTER PRINT
FMTC H,0,11,31 SKIP TO CHANNEL 1 AFTER PRINT
FMTC Q,0,10,30 CLEAR AUTO EJECT
FMTC R,0,5,5 SELECT AUTO EJECT
FMTC S,0,0,11 CLEAR 8 LINES/INCH
FMTC T,0,0,10 SET 8 LINES/INCH
FMTC V,0,0,4 EJECT AND CHANGE PFC IMAGE
FMTC 0,1,1,1 SPACE 1 LINE BEFORE PRINT
FMTC 1,0,4,4 EJECT BEFORE PRINT
FMTC 2,0,3,3 ADVANCE TO LAST LINE BEFORE PRINT
FMTC 3,3,26,56 SKIP TO CHANNEL 6 BEFORE PRINT
FMTC 4,2,25,55 SKIP TO CHANNEL 5 BEFORE PRINT
FMTC 5,2,24,54 SKIP TO CHANNEL 4 BEFORE PRINT
FMTC 6,1,23,53 SKIP TO CHANNEL 3 BEFORE PRINT
FMTC 7,1,22,52 SKIP TO CHANNEL 2 BEFORE PRINT
FMTC 8,0,21,51 SKIP TO CHANNEL 1 BEFORE PRINT
* FMTC +,0,0,0 PROCESSED IN MAIN DRIVER
FMTC -,2,2,2 SPACE 2 LINES BEFORE PRINT
FMTC /,0,6,6 SUPPRESS SPACE AFTER PRINT
CON 0
TITLE 3446/415 DRIVER SECTION.
CPD SPACE 4,10
** CPD - 3446/415 DRIVER.
CPD RJM PSD PRESET DRIVER
LDC 4000 SET NO COMPARISON MODE FOR HEADER CARD
STM CPPM
LDD FP+2 SET PUNCH FORMAT
LPN 7
STM CPFM
LMN PHFR
ZJN CPD1 IF O26 CONVERSION MODE
LMN P9FR&PHFR
NJN CPD1 IF NOT O29 CONVERSION
LDN CDXA SET O29 CONVERSION MODE
STM CMCT
CPD1 LDC GLCF+1000 REQUEST LACE CARD GENERATION
RJM CPS
CPD2 RJM MGR GO TO MANAGER
ZJN CPD1 IF REQUEST NOT ENTERED
LDD BS+4 CHECK BUFFER STATUS
LMC GLCF+1
NJN CPD2 IF REQUEST NOT COMPLETE
* *CPD3* IS A SECONDARY ENTRY POINT FOR *CPD*.
*
* ENTRY BUFFER NOT BUSY.
CPD3 RJM MGR GO TO MANAGER
RJM ADB ASSIGN DATA BUFFER
LDN 0 CLEAR BUSY RETURN
STD BR
LDN 20 READ BINARY BUFFER
STD T3
RJM CDB CHECK DATA IN BUFFER
LDD DA
RJM RNL READ NEXT CARD
RJM MGR GO TO MANAGER
RJM PBC PUNCH BINARY CARD
RJM ECB EMPTY CIRCULAR BUFFER
LDD OT OUT1=OUT2=OUT
STM CPO1
STM CPO2
LDD OT+1
STM CPO1+1
STM CPO2+1
* *CPD4* IS A SECONDARY ENTRY POINT FOR *CPD*.
CPD4 LDN 0 INITIALIZE CARD COUNT
STM CPCN
STM CPCN+1
* *CPD5* IS A SECONDARY ENTRY POINT FOR *CPD*.
CPD5 AOD BR SET BUSY RETURN
RJM MGR GO TO MANAGER
RJM ADB ASSIGN DATA BUFFER
LDM CPO2 OUT = OUT2
STD OT
LDM CPO2+1
STD OT+1
LDM CPFM SELECT PUNCH PROCESSOR
ZJN CPD6 IF DEFAULT
LMN PHFR
ZJN CPD6 IF PUNCH CODED 026
LMN P9FR&PHFR
NJN CPD7 IF NOT PUNCH CODED 029
CPD6 LJM CPC PUNCH CODED
CPD7 LMN PBFR&P9FR
ZJN CPB1 IF PUNCH SYSTEM BINARY
LMN P8FR&PBFR
ZJN CPB IF PUNCH ABSOLUTE, 80 COLUMN BINARY
LJM TOF TERMINATE OUTPUT FILE
CPB SPACE 4,10
** CPB - PUNCH BINARY.
*
* USES BR, T1 - T3.
*
* CALLS CCI, CKC, COB, PBC, RNL, MGR.
* PHASE 1. LOAD BUFFER AND GENERATE CHECKSUM.
CPB LDN 1 ABSOLUTE 80 COLUMN BINARY
CPB1 ADN 17
STD T3
RJM COB CHECK OUTPUT BUFFER
SBD T3
PJN CPB2 IF FULL CARD
RAD T3
SHN 2
ADD T3
ADD DA
RJM CCI CLEAR CARD IMAGE
LDD BS+4 CHECK LAST STATUS
LPN 20
NJN CPB2 IF EOR / EOF
LJM MGR1 RETURN TO MANAGER
CPB2 LDM CPFM SET DATA ADDRESS
LMN P8FR
ZJN CPB3 IF ABSOLUTE, 80 COLUMN BINARY
LDN 2 SYSTEM BINARY
CPB3 STD T2
ADD DA READ NEXT CARD
RJM RNL
LDD OT OUT2 = OUT
STM CPO2
LDD OT+1
STM CPO2+1
LDD T2
NJN CPB4 IF NOT ABSOLUTE BINARY
LJM CPB6 CLEAR BUSY RETURN
CPB4 LDD T3 SET WORD COUNT + BINARY INDICATOR
SHN 6
ADN 5
STI DA
LDD DA SET FIRST DATA ADDRESS
ADN 2
STD T1
ADC 113
STD T2
LDN 0 CLEAR CHECKSUM
STD T3
CPB5 LDI T1 GENERATE CHECKSUM
LMC 770000
RAD T3
AOD T1
LMD T2
NJN CPB5 IF NOT END OF DATA
STM 115,DA CLEAR COLUMN 78
SBD T3
STM 1,DA STORE CHECKSUM
AOM CPCN+1 STORE BINARY CARD NUMBER
STM 117,DA
SHN -14
RAM CPCN
STM 116,DA
CPB6 LDN 0 CLEAR BUSY RETURN
STD BR
RJM MGR GO TO MANAGER
* PHASE 2. PUNCH CARD.
RJM PBC PUNCH BINARY CARD
RJM MGR GO TO MANAGER
* PHASE 3. CHECK PREVIOUS CARD.
RJM CKC CHECK CARD
PJN CPB8 IF NO COMPARE ERROR
CPB7 LCN 2 DECREMENT BINARY CARD NUMBER
RAM CPCN+1
PJN CPB8 IF NO UNDERFLOW
SOM CPCN
AOM CPCN+1
CPB8 LJM CPD5 LOOP FOR NEXT CARD
CPC SPACE 4,10
** CPC - PUNCH CODED.
*
* USES BR, T1.
*
* CALLS AOP, CCI, CKC, COB, PBC, RCB, MGR.
* PHASE 1. LOAD BUFFER.
CPC RJM COB CHECK OUTPUT BUFFER
SBN 11
PJN CPC1 IF AT LEAST 1 CARD AND 1 WORD
LDD BS+4 CHECK LAST STATUS
LPN 20
NJN CPC1 IF EOR / EOF
LJM MGR1 RETURN TO MANAGER
CPC1 LDN 10 READ CODED CARD
RJM RCB
ZJN CPC3 IF EMPTY CARD
LMC 120
NJN CPC2 IF CURRENT CARD NOT FULL
LDM CMBE
ZJN CPC2 IF BUFFER EMPTY
LDD T2 CHECK NEXT WORD
ADD T3
ADD T4
ADD T5
ADD T6
NJN CPC2 IF NOT END OF CARD
LDN 1 ADVANCE *OUT* POINTER
RJM AOP
CPC2 LDD T7 CHECK LAST CHARACTER PROCESSED
NJN CPC3 IF NOT PART OF EOL
SOD T1
CPC3 LDD T1 CLEAR REMAINDER OF CARD IMAGE
RJM CCI
LDD OT OUT2 = OUT
STM CPO2
LDD OT+1
STM CPO2+1
LDN 0 CLEAR BUSY RETURN
STD BR
RJM MGR GO TO MANAGER
* PHASE 2. PUNCH CARD.
RJM PBC PUNCH BINARY CARD
RJM MGR GO TO MANAGER
* PHASE 3. CHECK PREVIOUS CARD.
RJM CKC CHECK CARD
LJM CPD5 LOOP FOR NEXT CARD
CPX SPACE 4,10
** CPX - PROCESS TRANSMISSION PARITY ERROR/INCOMPLETE
* DATA TRANSFER.
*
* EXIT TO *MGR1*.
CPX AOM CPPM SET PUNCH MODE TO OFFSET
LJM MGR1 RETURN TO MANAGER
CKC SPACE 4,10
** CKC - CHECK CARD.
*
* EXIT (A) .LT. 0 IF COMPARE ERROR.
*
* USES BR, CM - CM+4.
*
* CALLS CUL, FCN, MSG, SDM, SFA, SOP, WST.
CKC5 LDM CPO2 OUT1 = OUT2
STM CPO1
LDM CPO2+1
STM CPO1+1
AOD BR SET BUSY RETURN
RJM CUL CHECK USER LIMITS
CKC SUBR ENTRY/EXIT
LDM CPPM CHECK PUNCH MODE
ZJN CKC3 IF COMPARE
SHN 6
MJN CKC1 IF NO COMPARE, NO OFFSET
LDN 3 OFFSET CARD
RJM FCN
CKC1 LDN 0 SET PUNCH MODE TO COMPARE
STM CPPM
LDN ECLE CLEAR ERROR MESSAGE
RJM MSG
CKC2 UJN CKC5 SET OUT POINTERS
CKC3 LDD ST CHECK STATUS
SHN 7
MJN CKC4 IF COMPARE ERROR
LDN CPO1 STORE OUT POINTER
RJM SOP
UJN CKC2 SET OUT POINTERS
CKC4 LDN 3 OFFSET CARD
RJM FCN
LDN ECPE *COMPARE ERROR.*
RJM MSG
RJM WST WRITE STATUS
LDN ECEM *EQXXX COMPARE ERROR.*
RJM SDM
RJM SFA OUT2 = OUT
ADN 3
CRD CM
LDD CM+3
STM CPO2
STM CPO1 OUT1 = OUT
LDD CM+4
STM CPO2+1
STM CPO1+1
AOM CPPM SET PUNCH MODE TO OFFSET
AOM CMEC ADVANCE ERROR COUNT
LCN 0
LJM CKCX RETURN
CCI SPACE 4,10
** CCI - CLEAR CARD IMAGE.
*
* ENTRY (A) = STARTING ADDRESS TO CLEAR TO.
* (DA) = DATA BUFFER ADDRESS.
*
* EXIT (T1) = ADDRESS OF END OF CARD IMAGE.
*
* USES T0 - T1.
CCI1 LDN 0 CLEAR BUFFER
STI T0
SOD T0 DECREMENT ADDRESS
CCI2 SBD T1
PJN CCI1 IF NOT START OF DATA
CCI SUBR ENTRY/EXIT
STD T1
LDD DA
ADC 121 SET LIMIT ADDRESS
STD T0
UJN CCI2 ENTER LOOP
PBC SPACE 4,10
** PBC - PUNCH BINARY CARD.
*
* ENTRY (DA) = DATA ADDRESS.
*
* CALLS FCN, RDB, XDR.
PBC SUBR ENTRY/EXIT
LDC 120 SET BYTE COUNT FOR BINARY CARD
STM CMLR
LDN 1 SELECT BINARY
RJM FCN
LDC 16S12+OAMI OUTPUT PUNCH RECORD
RJM XDR
RJM RDB RELEASE DATA BUFFER
UJN PBCX RETURN
PED SPACE 4,10
** PED - PROCESS *END*.
*
* EXIT TO *TOF* IF *END* SET PREVIOUSLY.
*
* CALLS MGR.
PED LDM CMSF CHECK END FLAG
LPN 2
ZJN PED1 IF NOT SET
LJM TOF TERMINATE OUTPUT FILE
PED1 LDN 2 SET END FLAG
RAM CMSF
RJM MGR GO TO MANAGER
* LJM PEF PUNCH EOF
PEF SPACE 4,10
** PEF - PUNCH END OF FILE.
*
* USES BR.
*
* CALLS ACT, ADB, CCI, FCN, MGR, PBC.
PEF RJM ADB ASSIGN DATA BUFFER
RJM CCI CLEAR CARD IMAGE
LDD BS+4 CHECK BUFFER STATUS
SHN 21-11
MJN PEF2 IF EOI
LDN 15
LJM PER1 SET EOF INDICATORS
PEF2 LDN 17 SET EOI INDICATORS
STI DA
STM 117,DA
LDN 0 CLEAR BUSY RETURN
STD BR
LDM CMEC ENTER ERROR COUNT
STM 47,DA
RJM MGR GO TO MANAGER
RJM PBC PUNCH BINARY CARD
RJM MGR GO TO MANAGER
LDN 3 OFFSET CARD
RJM FCN
RJM MGR GO TO MANAGER
LDN 4 GATE LAST CARD
RJM FCN
RJM MGR GO TO MANAGER
LDN 3 OFFSET EOI
RJM FCN
AOD BR SET BUSY RETURN
PEF3 RJM ACT PROCESS ACCOUNTING
PEF4 RJM MGR GO TO MANAGER
ZJN PEF3 IF REQUEST NOT ENTERED
LDD BS+4
SHN 21-0
PJN PEF4 IF ACCOUNTING NOT COMPLETE
LJM TOF TERMINATE OUTPUT FILE
PER SPACE 4,10
** PER - PUNCH END OF RECORD.
*
* USES BR, BS+4.
*
* CALLS CCI, CKC, FCN, MGR, PBC, SFA.
PER LDD DA CLEAR CARD IMAGE
RJM CCI
LDN 7 SET EOR INDICATOR
PER1 STI DA
STM 117,DA
LDN 0 CLEAR BUSY RETURN
STD BR
RJM MGR GO TO MANAGER
LDM CPPM
ZJN PER2 IF NO OFFSET
LDN 3 OFFSET CARD
RJM FCN
RJM MGR GO TO MANAGER
PER2 RJM PBC PUNCH BINARY CARD
RJM MGR GO TO MANAGER
RJM CKC CHECK CARD
PJN PER3 IF NO COMPARE ERROR ON PREVIOUS CARD
LJM CPB7 REPUNCH CARD IN ERROR
PER3 LDN 1 CLEAR EOR/EOF
STD BS+4
RJM SFA STORE BUFFER STATUS
CWD BS
AOM CPPM SELECT OFFSET
LJM CPD4 EXIT TO DRIVER
CPE SPACE 4,10
** CPE - ERROR PROCESSOR.
*
* ENTRY (A) = EQUIPMENT STATUS FOLLOWING CONNECT.
*
* EXIT TO *PSE*.
*
* CALLS MSG, SDM, WST.
CPE2 LDN ENRD *NOT READY*
CPE3 RJM MSG SET BUFFER POINT MESSAGE
LJM PSE RETURN
CPE SHN 21-6
PJN CPE2 IF NO *FEED FAILURE*
LDM CPES
NJN CPE1 IF NOT FIRST FAILURE
AOM CPES
RJM WST WRITE STATUS
LDN EFFM *EQXXX FEED FAILURE.*
RJM SDM
CPE1 LDN EFED *FEED FAILURE.*
UJN CPE3 SET BUFFER POINT MESSAGE
TITLE 3447/405 DRIVER SECTION.
CRD SPACE 4,10
** CRD - 3447/405 DRIVER.
CRD LDN 0 CLEAR BINARY CARD SEQUENCE ERROR
STD FP+1
AOM CRRC INITIALIZE LOGICAL RECORD COUNT
STM CRSN INITIALIZE CARD COUNT IN RECORD
LDC 120 SET RECORD LENGTH
STM CMLR
RJM ECB EMPTY CIRCULAR BUFFER
* *CRD1* IS A SECONDARY ENTRY POINT FOR *CRD*.
CRD1 LDN 0
STD BR
RJM MGR GO TO MANAGER
* *CRD2* IS A SECONDARY ENTRY POINT FOR *CRD*.
*
* PHASE 1. CHECK MODE OF CARD.
CRD2 RJM CIB CHECK INPUT BUFFER
SBN 20
MJN CRD1 IF NOT ROOM FOR 1 CARD
LDN 0
STM CRBE
LDN ECLE CLEAR ERROR MESSAGE
RJM MSG
LDD ST CHECK CARD STATUS
SHN 21-12
PJN CRD3 IF NO ERROR
RJM WST WRITE STATUS
LDN ECEM *EQXXX COMPARE ERROR.*
RJM SDM ISSUE ERROR LOG MESSAGE
RJM EBF EMPTY BUFFER
LJM MGR1 RETURN TO MANAGER
CRD3 RJM ADB ASSIGN DATA BUFFER
LDN 1 NEGATE BCD CONVERSION
RJM FCN
LDM CRLI SET DATA ADDRESS
RAD DA
LDC 15S12+IAMI INPUT CARD
RJM XDR
AOD BR SET BUSY RETURN
RJM MGR GO TO MANAGER
LDM CRLI
NJN CRD4 IF LITERAL INPUT
LDI DA CHECK FOR BINARY CARD
LPN 5
LMN 5
NJN CRC IF NOT BINARY CARD
LJM CRB PROCESS BINARY CARD
CRD4 LJM CRL PROCESS LITERAL INPUT
CRC SPACE 4,10
** CRC - PROCESS CODED CARD.
*
* USES T1 - T3.
*
* CALLS CHD, CKM, MGR, SCN, WBB.
* PHASE 2. CONVERT TO DISPLAY CODE AND DELETE TRAILING SPACES.
CRC LDD DA SET DATA ADDRESS OF BINARY INPUT
STD T1
STD T2 SET LAST NON-SPACE ADDRESS
STD T3 SET DATA ADDRESS FOR STORING DISPLAY CODE
ADN 120/2 SET END OF DISPLAY CODE IN BUFFER
STD T6
LDM CRFR CHECK JOB CARD FOR KEYPUNCH MODE
NJN CRC1 IF NOT JOB CARD
RJM CKM CHECK KEYPUNCH MODE
CRC1 RJM SCN SET CONVERSION TABLE
RJM CHD CONVERT HOLLERITH DATA
LDI T2 GET LAST BYTE TRANSLATED
LPN 77 CHECK LAST CHARACTER
NJN CRC2 IF NOT 00 CHARACTER
AOD T2 RETAIN 00 CHARACTER WITH SPACE PADDING
LDC 2R
STI T2
CRC2 AOD T2 ENSURE END OF LINE
STM CRCA
LDN ZERL GET ZEROED CM WORD
CRM **,ON
CRCA EQU *-1
AOD T2 CALCULATE BYTE COUNT + OFFSET (1)
SBD DA
STD T1 CALCULATE WORD COUNT ( = BYTE COUNT/5)
SHN -3 BYTE COUNT/8
ADD T1 BYTE COUNT/8 + BYTE COUNT
SHN -1 (BYTE COUNT/8 + BYTE COUNT)/2
ADD T1 (BYTE COUNT/8 + BYTE COUNT)/2 + BYTE COUNT
SHN -3 DIVIDE BY 8
ADN 1 ADD IN END OF LINE LENGTH (1)
RJM MGR GO TO MANAGER
STD T1 SET WORD COUNT
* PHASE 3. DUMP BUFFER.
LDD DA WRITE BINARY BUFFER
RJM WBB
LJM CRD5 GO TO PHASE 4
CRB SPACE 4,10
** CRB - PROCESS BINARY CARD.
*
* USES BR, T1 - T4.
*
* CALLS EBF, PCE, MGR, MSG.
* PHASE 2. PROCESS EOR AND EOF, AND CHECK CHECKSUM.
CRB LDD DA SET DATA ADDRESS
STD T1
LDI T1 CHECK FIRST WORD
LPN 37
LMN 5
ZJN CRB1 IF BINARY DATA CARD
LJM CRF PROCESS SPECIAL FORM
CRB1 LDI T1 SET WORD COUNT
SHN -6
STD T4
SHN 2 SET BYTE LIMIT
ADD T4
ZJN CRB5 IF ZERO WORD COUNT
ADD DA
ADN 2
STD T2
LDI T1
LPN 40
STD T3 CLEAR CHECKSUM
NJN CRB3 IF CORRECTION PUNCH
AOD T1 COMPUTE CHECKSUM
CRB2 LDI T1
LMC 770000
RAD T3
AOD T1
LMD T2
NJN CRB2 IF NOT END OF BUFFER
LDD T3
NJN CRB5 IF ERROR
CRB3 LDM CRSN CHECK BINARY SEQUENCE ERROR
LMM 117,DA
NJN CRB8 IF SEQUENCE ERROR
CRB4 LDD T4 SET WORD COUNT
STI DA
RJM MGR GO TO MANAGER
* PHASE 3. DUMP BUFFER.
LDI DA SET WORD COUNT
STD T1
LJM CRL9 WRITE BINARY BUFFER
* *CRB5* IS A SECONDARY ENTRY POINT FOR *CRB*.
*
* PROCESS BINARY CHECKSUM / TRANSMISSION ERRORS.
CRB5 LDN 0 CLEAR BUSY RETURN
STD BR
LDN ERCB *RE-READ 3 CARDS.*
RJM MSG
CRB6 RJM MGR GO TO MANAGER
LDD ST
LPN 40
ZJN CRB6 IF INPUT TRAY NOT EMPTY
RJM EBF EMPTY BUFFER
LDN 1 SET BINARY CARD ERROR FLAG
STM CRBE
CRB7 RJM MGR GO TO MANAGER
UJN CRB7 WAIT FOR *NOT READY*
* PROCESS CARD OUT OF SEQUENCE ERROR.
CRB8 RJM PCE PROCESS CARD ERROR
LDM 117,DA ALIGN SEQUENCE CHECK
STM CRSN
LJM CRB4 RETURN TO MAIN LOOP
CRL SPACE 4,10
** CRL - PROCESS LITERAL INPUT.
*
* USES T1 - T3.
*
* CALLS MGR, WBB.
* PHASE 2. CHECK FOR END OF LITERAL INPUT.
CRL LDM 2,DA CHECK FOR EOI
LMN 17
NJN CRL5 IF NOT EOI
LDD DA CHECK COLUMNS 2 THROUGH 79
ADN 2+1
STD T1
ADN 47-1
STD T2
ADN 117-47
STD T3
CRL1 LDI T1
NJN CRL5 IF NOT EOI CARD
AOD T1
LMD T2
NJN CRL2 IF NOT COLUMN 40
AOD T1 IGNORE COLUMN 40
CRL2 LDD T1
LMD T3
NJN CRL1 IF MORE COLUMNS TO CHECK
LDI T1 CHECK COLUMN 40
NJN CRL3 IF COLUMN 80 NOT BLANK
LDI T2 CHECK COLUMN 40
UJN CRL4 TEST FOR COLUMN 40 NON BLANK
CRL3 LMN 17
CRL4 NJN CRL5 IF NOT EOI
STM CRLI CLEAR LITERAL INPUT FLAG
LDN 17 SET EOI INDICATOR
STI DA
LJM RER PROCESS EOI
CRL5 LDM 2,DA CHECK FOR FORMAT CHANGE
LMN 25
NJN CRL7 IF NOT FORMAT CHANGE
LDM 3,DA
LMN 77
NJN CRL8 IF NOT LITERAL INPUT FLAG
STD T3 COMPUTE CHECKSUM
LDD DA
ADN 2
STD T1
ADC 120
STD T2
CRL6 LDD T3
LMI T1
SHN 1
STD T3
SHN -14
RAD T3
AOD T1
LMD T2
NJN CRL6 IF NOT END OF CARD
LDD T3 COMPARE CHECKSUM
LMM CRLC
CRL7 NJN CRL8 IF NOT IDENTICAL CHECKSUM
STM CRLI CLEAR LITERAL INPUT FLAG
LJM CRD1 GO TO PHASE 1
* PHASE 3. DUMP BUFFER.
CRL8 RJM MGR GO TO MANAGER
LDN 20 SET WORD COUNT
STD T1
* *CRL9* IS A SECONDARY ENTRY POINT FOR *CRL*.
CRL9 LDD DA WRITE BINARY BUFFER
ADN 2
RJM WBB
* LJM CRD5 GO TO PHASE 4
CRD5 SPACE 4,10
* *CRD5* IS A SECONDARY ENTRY POINT FOR *CRD*.
*
* PHASE 4. STORE IN AND UPDATE RECORD COUNT.
CRD5 RJM RDB RELEASE DATA BUFFER
AOM CRSN ADVANCE CARD COUNT
LDN ZERL
CRD CM
LDD IN
STD CM+3
LDD IN+1
STD CM+4
RJM SFA SET FET ADDRESS
ADN 2
CWD CM
LDM CRFR
NJN CRD6 IF NOT FIRST CARD
AOM CRFR ADVANCE FIRST RECORD FLAG
CRD6 AOM CMRC+1 INCREMENT CARD COUNT
SHN -14
RAM CMRC
LJM CRD1 LOOP TO PHASE 1
CHD SPACE 4,50
** CHD - CONVERT HOLLERITH DATA.
*
* ENTRY (DA) = (T1) = (T2) = (T3) = BUFFER ADDRESS.
* (T6) = END OF DISPLAY CODE BUFFER ADDRESS.
*
* EXIT (T2) = ADDRESS OF LAST NON-BLANK CHARACTER PAIR.
*
* USES T1 - T5.
*
* CALLS PCE.
CHD18 RJM PCE PROCESS CARD ERROR
CHD19 LDN 1R SET BLANK CHARACTER
CHD20 STD T4 SAVE DISPLAY CODE CHARACTER
AOD T1 ADVANCE BUFFER ADDRESS
SBD DA
LPN 1
ZJN CHD21 IF PACKING LOWER CHARACTER
LDD T4 SET UPPER CHARACTER IN BYTE
SHN 6
STI T3
UJN CHD1 PROCESS NEXT COLUMN
CHD21 LDD T4 SET LOWER CHARACTER IN BYTE
RAI T3
LMC 2R
ZJN CHD22 IF BLANK CHARACTER PAIR
LDD T3 ADVANCE LAST NON-BLANK CHARACTER ADDRESS
STD T2
CHD22 AOD T3 ADVANCE ADDRESS FOR DISPLAY CODE
LMD T6
NJN CHD1 IF NOT END OF CARD IMAGE
CHD SUBR ENTRY/EXIT
CHD1 LDI T1 CHECK NEXT COLUMN
ZJN CHD19 IF BLANK CHARACTER
* EVALUATE 1, 8, AND 9 PUNCHES.
LPC 403
ZJN CHD5 IF NO 1, 8, OR 9 PUNCH
SBN 1
ZJN CHD2 IF 9 PUNCH ONLY
SBN 1
ZJN CHD4 IF 8 PUNCH
ADC -376
NJN CHD3 IF COMBINED PUNCHES (ILLEGAL)
LCN 8D
CHD2 ADN 9D SET VALUE FOR 9 PUNCH
STD T5
LDI T1 CHECK FOR PUNCHES 2 THROUGH 8
LPC 376
ZJN CHD12 IF NO PUNCHES 2 THROUGH 8
CHD3 LJM CHD18 CONVERT ILLEGAL COMBINATION TO BLANK
CHD4 LDN 8D SET VALUE FOR 8 PUNCH
CHD5 STD T5
* EVALUATE PUNCHES 2 THROUGH 7.
LDI T1
SHN -2
LPN 77
ZJN CHD12 IF NO PUNCHES 2 THROUGH 7
SBN 1
ZJN CHD7 IF 7 PUNCH ONLY
SBN 1
ZJN CHD8 IF 6 PUNCH ONLY
SBN 2
ZJN CHD9 IF 5 PUNCH ONLY
SBN 4
ZJN CHD10 IF 4 PUNCH ONLY
SBN 10
ZJN CHD11 IF 3 PUNCH ONLY
CHD6 SBN 20
NJN CHD3 IF ILLEGAL PUNCH COMBINATION
LCN 7-2 PRESET 2 PUNCH CONVERSION
CHD7 ADN 1
CHD8 ADN 1
CHD9 ADN 1
CHD10 ADN 1
CHD11 ADN 3
RAD T5
* EVALUATE ZONE PUNCHES.
CHD12 LDI T1 ISOLATE ZONE PUNCHES
SHN -9D
SBN 6
PJN CHD6 IF ILLEGAL COMBINATION
ADN 1
ZJN CHD15 IF + 0 COMBINATION
ADN 1
ZJN CHD13 IF + PUNCH ONLY
ADN 1
ZJN CHD17 IF - 0 COMBINATION
CHD13 ADN 3
SHN 4
CHD14 RAD T5
LDM CTBL,T5 CONVERT CHARACTER
LJM CHD20 ASSEMBLE CARD IMAGE IN DISPLAY CODE
CHD15 LDD T5
CHD16 NJN CHD6 IF ILLEGAL PUNCH COMBINATION
LDN 72
UJN CHD14 ASSEMBLE CARD IMAGE
CHD17 LDD T5
NJN CHD16 IF ILLEGAL PUNCH COMBINATION
LDN 52
UJN CHD14 ASSEMBLE CARD IMAGE
CKM SPACE 4,10
** CKM - CHECK KEYPUNCH MODE CHANGE.
*
* ENTRY (DA) = BUFFER ADDRESS OF CARD TO BE CHECKED.
*
* EXIT (CMCT) = NEW CONVERSION TABLE INDEX.
CKM SUBR ENTRY/EXIT
LDM 116,DA EXAMINE COLUMN 79
LMC 200
NJN CKMX IF NOT *2*
LDM 117,DA EXAMINE COLUMN 80
LMN 10
ZJN CKM1 IF *6*
LMN 1&10
NJN CKMX IF NOT *9*
LDN C9XD&C6XD USE O29 CONVERSION TABLE INDEX
CKM1 LMN C6XD USE O26 CONVERSION TABLE INDEX
STM CMCT
UJN CKMX RETURN
CRE SPACE 4,10
** CRE - NOT READY PROCESSOR.
*
* ENTRY (A) = EQUIPMENT STATUS FOLLOWING CONNECT.
*
* EXIT TO *PSE*.
*
* CALLS MSG.
CRE1 LDN ENRD *NOT READY*
CRE2 RJM MSG
LDM CRBE
ZJN CRE3 IF ERROR FLAG NOT SET
LDC CRD2
STM CMPA SET PHASE 1
CRE3 LJM PSE RETURN
CRE SHN 21-12
PJN CRE1 IF NO COMPARE ERROR
LDN ERCA *RE-RD 1 CD. COMPARE ERROR.*
UJN CRE2 SET BUFFER POINT MESSAGE
CRF SPACE 4,10
** CRF - PROCESS SPECIAL FORM.
*
* USES T1 - T3.
CRF LDI DA CHECK FIRST WORD
LMN 25
ZJN CRF1 IF CONVERSION CHANGE
LJM RER PROCESS END OF RECORD
CRF1 LDM 1,DA CHECK FORMAT REQUEST
ZJN CRF2 IF O26 CONVERSION
LMN 1
NJN CRF4 IF NOT O29
LDN C9XD&C6XD
CRF2 LMN C6XD SET CONVERSION MODE
STM CMCT
CRF3 LJM CRD1 GO TO PHASE 1
CRF4 LMN 77&1
NJN CRF3 IF UNKNOWN CONVERSION
STD T3
LDN 2 SET LITERAL INPUT FLAG
STM CRLI
LDD DA
STD T1
ADC 120 COMPUTE CHECKSUM
STD T2
CRF5 LDD T3
LMI T1
SHN 1
STD T3
SHN -14
RAD T3
AOD T1
LMD T2
NJN CRF5 IF NOT END OF CARD
LDD T3
STM CRLC STORE CHECKSUM
UJN CRF3 GO TO PHASE 1
EBF SPACE 4,10
** EBF - EMPTY BUFFER.
*
* EXIT TO *XDR1* IF CHANNEL HANGS EMPTY.
*
* USES FC, T3.
*
* CALLS IFN, SDM.
EBF2 IAN CH+40 INITIATE BUFFER FLUSH
DCN CH+40
CFM EBFX,CH IF CHANNEL ERROR FLAG CLEAR
LDN 0
STD T3
LDD T5 SAVE FUNCTION CODE FOR ERROR MESSAGE
STD FC
LDK ECRE *EQXXX CHANNEL PARITY ERROR.*
RJM SDM SEND DAYFILE MESSAGE
EBF SUBR ENTRY/EXIT
LDN 14 INPUT TO EOR
RJM IFN ISSUE FUNCTION
LDN 77 DELAY FOR BYTE TRANSMISSION FROM READER
EBF1 FJM EBF2,CH IF CHANNEL NOT HUNG EMPTY
SBN 1
NJN EBF1 IF DELAY NOT EXCEEDED
DCN CH+40
LDN ERRL-1 FORCE EQUIPMENT TURN OFF
STM CMDR
LDC 120 SET BYTES REMAINING COUNT
LJM XDR1 PROCESS INCOMPLETE TRANSFER ERROR
PCE SPACE 4,15
** PCE - PROCESS CARD ERROR.
*
* ENTRY (T3) = 0 IF BINARY CARD SEQUENCE ERROR.
* .NE. 0 IF ILLEGAL HOLLERITH PUNCH DETECTED.
* (BA - BA+1) = ABSOLUTE FET ADDRESS.
* (FP - FP+4) = FILE PARAMETER WORD (FET+5).
*
* EXIT ERROR STATUS STORED IN (FET+5).
*
* USES FP+1 - FP+2.
*
* CALLS SFA.
PCE SUBR ENTRY/EXIT
LDD FP+1
NJN PCEX IF PREVIOUS ERROR
LDM CRSN SET CARD NUMBER
STD FP+1
LDD T3
ZJN PCE1 IF BINARY CARD ERROR
LDC 4000 FLAG ILLEGAL HOLLERITH CODE
PCE1 LMM CRRC SET RECORD NUMBER
STD FP+2
RJM SFA STORE FILE PARAMETER WORD
ADN 5
CWD FP
UJN PCEX RETURN
RER SPACE 4,10
** RER - PROCESS END OF RECORD.
*
* USES BS+4, T2.
*
* CALLS ACT, CKM, CLB, CON, CPS, MGR, RDB, SFA.
RER LDM CRFR
NJN RER1 IF NOT FIRST CARD
LJM RER6 SKIP EMPTY FILE
RER1 LDI DA REQUEST WRITE
LPN 10
LMC WRIF+1000
STD T2
LDD FA
ZJN RER2 IF FIRST WRITE
LDC WRIF+1000&24
RER2 LMD T2 SET REQUEST
RJM CPS
RER3 RJM MGR GO TO MANAGER
ZJN RER1 IF REQUEST NOT ENTERED
LDD BS+4 CHECK OPERATION
LPN 21
LMN 21
NJN RER3 IF REQUEST NOT COMPLETE
LDI DA CHECK CARD
LPN 37
LMN 17
ZJN RER4 IF EOI
RJM CKM CHECK KEYPUNCH MODE
AOM CRRC BUMP LOGICAL RECORD COUNT
LDN 1
STM CRSN RESET SEQUENCE ERROR COMPARITIVE NUMBER
STD BS+4 CLEAR LAST OPERATION
RJM SFA
CWD BS
LJM CRD1 LOOP TO PHASE 1
* PROCESS EOI.
RER4 RJM ACT PROCESS ACCOUNTING
RER5 RJM MGR GO TO MANAGER
ZJN RER4 IF REQUEST NOT ENTERED
LDD BS+4 WAIT ACCOUNTING COMPLETE
LMC 1031
NJN RER5 IF ACCOUNTING NOT COMPLETE
RER6 RJM RDB RELEASE DATA BUFFER
LDC * SET RETURN FROM *WNB*
STM CMPA
RJM CON CONNECT EQUIPMENT
NJN RER7 IF CONNECT REJECT
LDD ST
LPN 1
ZJN RER7 IF NOT READY
RJM CLB
LJM MGR1 RETURN TO DRIVER VIA MANAGER
RER7 LDN 0 DROP EQUIPMENT
LJM TOP1 TERMINATE OPERATION
TITLE DRIVER SUBROUTINES.
CON SPACE 4,15
** CON - CONNECT EQUIPMENT.
*
* EXIT (A) .NE. 0 IF FUNCTION REJECT.
* (FC) = CONNECT CODE.
* (ST) = EQUIPMENT STATUS.
* EXITS TO *FCN2* IF FUNCTION TIMEOUT.
*
* USES FC, ST, T1 - T3.
*
* CALLS CCE, FCN, IFN, STS, WNB.
*
* MACROS DCHAN, RCHAN.
CON SUBR ENTRY/EXIT
LDM CMCE CHECK CHANNEL
LPN 77
STD T3
CHTE *
LMN CH
ZJN CON3 IF CORRECT CHANNEL
LDC TCHS-1
STD T1
LDD CR RELEASE LAST CHANNEL
DCHAN
CHTE CR
* LDN 0
CON1 RAI T2 MODIFY NEXT CHANNEL
AOD T1
CON2 LDI T1
STD T2
LDD T3
CHTL *
SBN CH
NJN CON1 IF MORE CHANNELS TO MODIFY
LDD CR RESERVE NEW CHANNEL
RCHAN
CON3 LDN 10 SELECT MODE II CONNECT
RJM IFN ISSUE FUNCTION
LDM CMCE OUTPUT CONNECT CODE
SCN 77
OAN CH+40
STD FC SAVE CONNECT CODE FOR *REJECT* MESSAGE
LDC 100D TIMEOUT CONVERTER
CONA EQU *-1
* LDC 200D (2X PP)
* LDC 400D (4X PP)
CON4 EJM CON5,CH IF FUNCTION ACCEPT / CONVERTER REJECT
SBN 4
PJN CON4 IF NOT TIMED OUT
LJM FCN2 PROCESS FUNCTION TIMEOUT
CON5 DCN CH+40
CON6 LDN 13 SELECT EQUIPMENT STATUS
RJM IFN ISSUE FUNCTION
IAN CH+40
DCN CH+40
STD ST STORE EQUIPMENT STATUS
LDN SCEI STATUS PARITY ERROR
RJM CCE CHECK FOR CHANNEL ERROR
NJN CON6 IF ERROR
RJM STS GET CONVERTER STATUS
NJN CON9 IF ERROR
LDD EQ
SBK LPDT
ZJN CON7 IF PRINTER
RJM WNB
CON7 LDN 24 SELECT ABNORMAL *EOP* INTERRUPT
RJM FCN
CON8 LDD CS RETURN WITH STATUS
LPN 7
CON9 LJM CONX RETURN
FCN SPACE 4,15
** FCN - OUTPUT FUNCTION TO EQUIPMENT.
*
* ENTRY (A) = FUNCTION CODE.
*
* EXIT (FC) = FUNCTION CODE.
* IF FUNCTION REJECT, THEN EXIT IS MADE TO *MGR1*.
* THUS, ALL CODE SINCE THE LAST *RJM MGR* WILL BE
* EXECUTED AGAIN PRIOR TO A RETRY ON THE FUNCTION.
* IF THE RETRY LIMIT IS REACHED OR IF THE FUNCTION
* TIMES OUT, THEN EXIT IS MADE TO *CEP*.
*
* USES FC.
*
* CALLS SDM, STS.
FCN4 RJM STS CHECK 6681 STATUS
ZJN FCNX IF FUNCTION ACCEPTED
LJM MGR1 GO TO MANAGER
FCN SUBR ENTRY/EXIT
FAN CH ISSUE FUNCTION
STD FC SAVE FUNCTION FOR REJECT MESSAGE
LDM CONA
FCN1 IJM FCN4,CH IF FUNCTION ACCEPTED
SBN 4
PJN FCN1 IF NOT TIMED OUT
* *FCN2* IS A SECONDARY ENTRY POINT FOR *FCN*.
*
* FUNCTION TIMEOUT ERROR PROCESSOR.
FCN2 DCN CH+40
LDN EFTM *EQXXX FUNCTION TIMEOUT.*
RJM SDM FORMAT DAYFILE MESSAGE
FCN3 LJM CEP CHANNEL ERROR PROCESSOR
IFN SPACE 4,10
** IFN - ISSUE FUNCTION TO CONVERTER.
*
* ENTRY (A) = FUNCTION CODE.
*
* EXIT CHANNEL ACTIVE.
* (T5) = FUNCTION CODE.
* IF THE FUNCTION TIMES OUT, THEN EXIT IS MADE TO
* *CEP* VIA *FCN2*.
*
* USES FC, T5.
IFN2 ACN CH
IFN SUBR ENTRY/EXIT
SHN 6
FAN CH ISSUE FUNCTION
STD T5 SAVE FUNCTION
LDN 6 SET TIME LIMIT
IFN1 IJM IFN2,CH IF FUNCTION ACCEPTED
SBN 1
NJN IFN1 IF NOT TIMED OUT
LDD T5
STD FC FUNCTION CODE FOR ERROR MESSAGE
UJN FCN2 FUNCTION TIMEOUT ERROR PROCESSOR
SPACE 4,10
** COMMON DECKS.
*CALL COMPWBB
SPACE 4,10
RTBL BSS 0 START OF RELOCATED CODE
LOC CTBLL
REC SPACE 4,10
** REC - RELEASE EQUIPMENT CONNECT.
*
* CALLS CON, FCN.
REC SUBR ENTRY/EXIT
RJM CON CONNECT EQUIPMENT
NJN RECX IF CONNECT REJECT
* LDN 0 RELEASE AND DISCONNECT EQUIPMENT
RJM FCN
UJN RECX RETURN
SDP SPACE 4,10
** SDP - SUB-DRIVER PROCESSOR.
SDP SUBR ENTRY/EXIT
LDD BR
NJN SDP2 IF BUSY RETURN REQUESTED
RJM CON CONNECT EQUIPMENT
NJN SDPX IF CONNECT REJECT
LDD ST
SHN 21-0
MJN SDP1 IF EQUIPMENT READY
LDM TNRP,EQ
STD PA
LDD ST (A) = EQUIPMENT STATUS
UJN SDP3 ENTER NOT READY PROCESSOR
SDP1 SHN 1+21-1
PJN SDP2 IF EQUIPMENT NOT BUSY
SHN 2+21-10
PJN SDPX IF NOT END OF OPERATION INTERRUPT
SDP2 LDM CMPA SET PROGRAM ADDRESS
STD PA
LDM CMAR RESET (A)
SDP3 LJM 0,PA RETURN TO NEXT DRIVER ADDRESS
STS SPACE 4,10
** STS - GET CONVERTER STATUS.
*
* EXIT (A) = BITS 0 - 2 OF 6681 STATUS.
* (CS) = CONVERTER STATUS.
*
* CALLS CCE, IFN, PRE, SDM.
STS SUBR ENTRY/EXIT
STS1 LDN 12 SELECT 6681 STATUS
RJM IFN ISSUE FUNCTION
IAN CH+40
DCN CH+40
STD CS
LDN SCEI STATUS PARITY ERROR
RJM CCE CHECK FOR CHANNEL ERROR
NJN STS1 IF ERROR
LDD CS
LPN 7
ZJN STSX IF NO ERRORS
* FUNCTION REJECT/TRANSMISSION PARITY ERROR PROCESSOR.
LDN FRJI CHECK ERROR LIMIT EXCEEDED
RJM PRE
LDD CS
LPN 7
UJN STSX RETURN
WNB SPACE 4,15
** WNB - WAIT NOT BUSY.
*
* ENTRY (ST) = DEVICE STATUS.
*
* EXIT IF DEVICE BUSY, THEN EXIT IS MADE
* TO *MGR1*. THUS, ALL CODE SINCE
* LAST RETURN TO MANAGER WILL BE
* EXECUTED AGAIN PRIOR TO PROCEEDING.
* IF BUSY RETRY COUNT REACHED,
* EXIT IS MADE TO *CEP*.
*
* CALLS SDM.
WNB3 STM CMCB CLEAR CONTROLLER BUSY RETRY COUNT
WNB SUBR ENTRY/EXIT
LDD ST CHECK EQUIPMENT STATUS FOR BUSY
LPN 2
ZJN WNB3 IF DEVICE NOT BUSY
SOM CMCB DECREMENT RETRY COUNT
ZJN WNB2 IF RETRY COUNT EXHAUSTED
WNB1 LJM MGR1 RETURN TO MANAGER
WNB2 SOM CMTC
NJN WNB1 IF NOT AT ABSOLUTE RETRY LIMIT
LDN ECBM *EQXXX CONTROLLER HUNG BUSY.*
RJM SDM SEND DAYFILE MESSAGE
LJM CEP CHANNEL ERROR PROCESSOR
XDR SPACE 4,20
** XDR - TRANSMIT DATA RECORD (TO/FROM EXTERNAL EQUIPMENT).
*
* ENTRY (A) BITS 0-11 = INSTRUCTION (IAM/OAM).
* 12-17 = CONVERTER FUNCTION.
*
* USES CS, FC, T1.
*
* CALLS CCE, CRV, FCN, IFN, PRE, STS.
XDR SUBR ENTRY/EXIT
CHTE *
LMN CH SET INSTRUCTION WITH CHANNEL
STM XDRA
SHN -14 SET I/O FUNCTION
STD FC
LDD DA SET BUFFER ADDRESS
STM XDRA+1
LDD FC ISSUE CONVERTER FUNCTION
RJM IFN
LDM CMLR
XDRA OAM. **,CH OUTPUT (INPUT) DATA RECORD
* IAM **,CH
FJM *,CH
DCN CH+40
NJN XDR1 IF INCOMPLETE DATA TRANSFER
LDN DCPI CHECK FOR DATA PARITY ERROR
RJM CCE
NJN XDR2 IF ERROR
LDN DRRI
RJM CRV CHECK FOR RECOVERED ERROR
RJM STS GET CONVERTER STATUS
NJN XDR2 IF ERROR
UJN XDRX RETURN
* *XDR1* IS A SECONDARY ENTRY POINT FOR *XDR*.
XDR1 STD CS
LDN DRRI PROCESS RECOVERABLE ERROR
RJM PRE
XDR2 LDN 0 CLEAR AND DISCONNECT EQUIPMENT
RJM FCN
AOM CMEC
LDM XDRB,EQ
STD T1
LJM 0,T1 EXIT TO RETRY PROCESSOR
XDRB BSS 0 RETRY PROCSSING ADDRESS
LOC 0
CON LPR1 LINE PRINTER
CON CPX CARD PUNCH
CON CRB5 CARD READER
LOC *L+XDRB
TCHS SPACE 4,10
** TCHS - CHANNEL TABLE.
TCHS CHTB
ERRNG ICD-* RELOCATED CODE OVERLAPS
LOC *O
RTBLL EQU *-RTBL
TITLE PRESET.
PRS SPACE 4,15
** PRS - PRESET SUB-DRIVER OVERLAY.
*
* EXIT (CR) = CHANNEL RESERVED.
* (DB) = FIRST DATA BUFFER ADDRESS.
* TO *ZBA*.
*
* USES CM - CM+4, T1 - T3.
*
* MACROS RCHAN.
PRS BSS 0 ENTRY
LDC CTBLL MOVE TABLES TO PP RESIDENT
STD T1
LDC RTBL
STD T2
PRS1 LDI T2
STI T1
AOD T1
AOD T2
LMC RTBL+RTBLL
NJN PRS1 IF NOT END OF TABLES
LDN IPRL CHECK SYSTEM DEFAULT KEYPUNCH MODE
CRD CM
LDD CM+2
LPN 1
NJN PRS4 IF SYSTEM NOT IN 63 CHARACTER SET MODE
LDC *
ORG *-1
LOC LPDA
UJN LPD9 PROCESS 63 CHARACTER SET LINE
LOC *O
STM LPDA
LDN 45 CHANGE 6/12 COLON CONVERSION TO PERCENT
STM MCCC
PRS4 LDK MABL FETCH PP SPEED INDICATOR
CRD CM
LDD CM+4 SET TIMEOUT VALUE
RAM PRSA
LDN 100D/4 SET CONVERTER TIMEOUT
PRSA SHN 2
STM CONA
LDN CH RESERVE CHANNEL
STD CR
RCHAN
LDN ZERL
CRD CM
LDD MA CLEAR *CIO* REQUEST PARAMETERS
ADN 1
CWD CM
* INITIALIZE SYSTEM PAGE PARAMETERS
LDN IPPL FETCH SYSTEM PAGE PARAMETERS
CRD CM
LDD CM+3 SET PRINT WIDTH
LPC PWUL
ADN 1
LMC -0
STM LPDB
LDC DBUF SET BUFFER INFORMATION
STD DB
STD T1
LDK DBUFS
STD T2
LDC DBUFL
STD T3
LJM ZBA CLEAR DATA BUFFER ASSIGNMENTS
SPACE 4,10
OVERFLOW OVLA
DBUF SPACE 4,20
** DBUF - BUFFER AREAS.
DBUFS EQU PWMX+5 DATA BUFFER SIZE
DBUFW EQU DBUFS/10D DATA BUFFER SIZE IN CM WORDS
DBUF EQU RTBL
.L SET 7777-DBUF
NDBUF EQU .L/DBUFS NUMBER OF DATA BUFFERS
DBUFL EQU DBUF+NDBUF*DBUFS LWA+1 OF DATA BUFFERS
* IF THE FOLLOWING TEST PRODUCES A NEGATIVE NUMBER,
* PERFORMANCE MAY BE DEGRADED (SINCE THERE ARE LESS THAN
* 4 DATA BUFFERS).
7 ERRNG NDBUF-4
ERRNG 10000-DBUFL BUFFERS WRAP PP MEMORY
XCD TTL 1CD/3CY - BATCHIO COMBINED DRIVER.
TITLE
QUAL 3CY
IDENT 3CY,XCDX
*COMMENT 1CD - DRIVE *CCC*-CONNECTED DEVICES.
COMMENT COPYRIGHT CONTROL DATA SYSTEMS INC. 1992.
3CY SPACE 4,10
*** 1CD/3CY - BATCHIO COMBINED DRIVER.
*
* THIS SUB-DRIVER OVERLAY CONTAINS DRIVERS TO ACCESS DEVICES
* CONNECTED VIA A CYBER CHANNEL COUPLER (CCC).
3CY SPACE 4,10
ORG OVLA
XCD SUBR ENTRY/EXIT
CHTE CCEA
LJM PRS PRESET
TITLE 5870/5970 DRIVER SECTION.
NPD SPACE 4,10
** NPD - 5870/5970 DRIVER.
NPD RJM PSD PRESET DRIVER
NPD1 LDC GBPF+1000 REQUEST BANNER PAGE GENERATION
RJM CPS
NPD2 RJM MGR GO TO MANAGER
ZJN NPD1 IF REQUEST NOT ACCEPTED
LDD BS+4 CHECK BUFFER STATUS
LMC GBPF+1
NJN NPD2 IF OPERATION NOT COMPLETE
UJN NPD4 PRINT BANNER PAGE
* PHASE 1. LOAD BUFFER.
NPD3 SCN 2 SET DRIVER HOLDING
LMN 2
STM CMHF
* *NPD4* IS A SECONDARY ENTRY POINT FOR *NPD*.
NPD4 LDN 1 SET BUSY RETURN
STD BR
RJM MGR GO TO MANAGER
LDM CMHF
NJN NPD3 IF HOLD INITIATED
RJM COB CHECK OUTPUT BUFFER
SBN DBUFW*2+1
PJN NPD5 IF AT LEAST 1 LINE AND 1 WORD
LDD BS+4
LPN 20
ZJN NPD4 IF NOT EOR/EOF/EOI
NPD5 RJM ADB ASSIGN DATA BUFFER
LDN 0
STD BR CLEAR BUSY RETURN
STM NPLC CLEAR LINE COUNT
LDM CMSF CHECK MODE OF FILE
LPN 50
ZJN NPD6 IF NOT 6/12 OR 8/12 ASCII PRINT FILE
LDN DBUFW
NPD6 ADN DBUFW READ CODED BUFFER
RJM RCB
NJN NPD8 IF NOT EMPTY LINE
NPD7 LDN 40 SET SPACE CHARACTER
STI T1
AOD T1
AOM CMLR ADVANCE BYTE COUNT FOR LINE
NPD8 SBN 2
MJN NPD7 IF NOT 2 CHARACTERS IN LINE
LDM CMSF
LPN 10
NJN NPD9 IF 12 BIT ASCII PRINT FILE
NPDA PSN
* UJN NPD9 (SYSTEM IN 63 CHARACTER SET)
LDM -1,T1 CHECK LAST CHARACTER IN LINE
LMN 72
NJN NPD9 IF NOT COLON
LDN 40 REPLACE WITH BLANK
STM -1,T1
NPD9 SOM CMLR DEDUCT CARRIAGE CONTROL CHARACTER
SBK PXMX+1
PJN NPD9 IF LINE TOO LONG
LDD T2 SET FORMAT CONTROL FOR NEXT LINE
STM NPFC
LDD OT SAVE *OUT* POINTER
STM NPOT
LDD OT+1
STM NPOT+1
RJM MGR GO TO MANAGER
* PHASE 2. PROCESS FORMAT CONTROL.
LDN 4 PRESET SINGLE SPACE AFTER PRINT
STM NPWF
LDI DA CHECK FORMAT CHARACTER
LPC 3777
STI DA
LMN 40 ASCII BLANK
ZJN NPD11 IF ASCII BLANK
RJM PFC PROCESS FORMAT CONTROL
ZJN NPD10 IF PRINT LINE
RJM RDB RELEASE DATA BUFFER
LDN NPOT UPDATE *FET*
RJM SOP STORE OUT POINTER
LJM NPD4 GO TO PHASE 1
NPD10 LDI DA CHECK FOR *PM* MESSAGE
SBK 120
NJN NPD11 IF NOT *P*
LDM 1,DA
LPC 3777
SBK 115
NJN NPD11 IF NOT *PM*
LDM CMLR CHECK RECORD LENGTH
SBN 1
ZJN NPD11 IF ONLY *PM*
RJM PPM PROCESS PM MESSAGE
NPD11 LDM CMBE
ZJN NPD14 IF BUFFER EMPTY
LDM CMSF
LPN 10
NJN NPD12 IF 12 BIT ASCII MODE
LDM NPFC CHECK FORMAT CHARACTER OF NEXT LINE
SHN -6
LMN 1R+
UJN NPD13 CHECK FOR *+*
NPD12 LDM NPFC CHECK FORMAT CHARACTER OF NEXT LINE
LPC 3777
LMN 53 (ASCII *+*)
NPD13 NJN NPD14 IF NOT *+*
LDN 7 WRITE WITHOUT SPACING
STM NPWF
* PHASE 3. PRINT LINE.
NPD14 RJM MGR RETURN TO MANAGER
LDN ECLE CLEAR *I* DISPLAY
RJM MSG
AOD DA DO NOT PRINT FORMAT CHARACTER
LDM NPWF SET WRITE FUNCTION CODE
RJM WDR WRITE DATA RECORD
RJM RDB RELEASE DATA BUFFER
* PHASE 4. PROCESS POST PRINT OPERATIONS.
LDN NPOT STORE *OUT* POINTER
RJM SOP
AOM NPLC CHECK USER LIMITS
RJM CUL
LJM NPD4 GO TO PHASE 1
NEF SPACE 4,10
** NEF - LIST END OF INFORMATION.
*
* USES BR, T4.
*
* CALLS ACT, MGR, NPN.
NEF LDD BS+4 CHECK BUFFER STATUS
SHN 21-11
MJN NEF1 IF EOI
LJM NPN1 RESET BUFFER STATUS
NEF1 LDD F2+2 CHECK ABORT FLAG
LPN 2
ZJN NEF2 IF NO ABORT FLAG
LDN 0 CLEAR REPEAT COUNT
STM CMER
LJM NPN PROCESS *END*
* *NEF2* IS A SECONDARY ENTRY POINT FOR *NEF*.
NEF2 AOD BR
LDM CMSF CHECK ACCOUNT FLAG
LPN 1
ZJN NEF3 IF ACCOUNT FLAG NOT SET
LJM TOF TERMINATE OUTPUT FILE
NEF3 AOM CMSF SET ACCOUNT FLAG
SCN 50 CLEAR 6/12 AND 8/12 ASCII PRINT FLAGS
STM CMSF
NEF4 LDN 0 SET PRINTER FOR *QAP*
STD EQ
RJM ACT PROCESS ACCOUNTING
NEF5 RJM MGR GO TO MANAGER
ZJN NEF4 IF REQUEST NOT ENTERED
LDD BS+4
SHN 21-0
PJN NEF5 IF ACCOUNTING NOT COMPLETE
LJM NPD4 PRINT LINE COUNT
NPE SPACE 4,10
** NPE - ERROR PROCESSOR.
*
* ENTRY (A) = DEVICE STATUS.
*
* EXIT TO *PSE*.
*
* CALLS MSG.
NPE BSS 0 ENTRY
LPN 4
ZJN NPE1 IF NO INTERVENTION REQUIRED
LDN EIVR&ENRD
NPE1 LMN ENRD SEND *NOT READY.* MESSAGE
RJM MSG
LJM PSE RETURN
NPN SPACE 4,10
** NPN - PROCESS *END*.
*
* USES BS+4, CM - CM+4.
*
* CALLS SFA.
*
* MACROS NFA.
NPN LDN 0 CLEAR HOLD FLAG
STM CMHF
LDM CMSF CHECK END FLAG
LPN 2
NJN NPN2 IF SET PREVIOUSLY
LDN 2 SET END FLAG
RAM CMSF
NFA FA,R READ FST INFORMATION
CRD CM
LDD FP+1 RESET FILE STATUS
ZJN NPN2 IF NO DAYFILE
STD CM+2
LDD FP+2
STD CM+3
NFA FA,R UPDATE FST INFORMATION
CWD CM
* *NPN1* IS A SECONDARY ENTRY POINT FOR *NPN*.
NPN1 LDN 1 RESET BUFFER STATUS
STD BS+4
RJM SFA STORE BUFFER STATUS
CWD BS
LJM NPD4 RETURN TO MAIN DRIVER
NPN2 LJM NEF2 PROCESS ACCOUNTING
PFC SPACE 4,20
** PFC - PROCESS FORMAT CONTROL.
*
* ENTRY ((DA)) = FORMAT CONTROL CHARACTER (ASCII).
*
* EXIT (A) = 0 IF LINE SHOULD BE PRINTED.
* (NPLC) = LINE COUNT.
* (NPWF) = WRITE FUNCTION CODE.
*
* ERROR TO *MGR1* IF FUNCTION REJECTED.
*
* USES T4.
*
* CALLS FCN, GST.
PFC3 LDM 1,T4 SET LINE CHARGE COUNT
SHN 14
STM NPLC
SHN -14
PFC SUBR ENTRY/EXIT
LDC TPFC-4 SET FWA OF FORMAT CONTROL TABLE
STD T4
PFC1 LDN 4 SET NEXT ADDRESS
RAD T4
LDI T4
ZJN PFCX IF END OF TABLE
LMI DA
NJN PFC1 IF NO MATCH
LDM 2,T4 SET SECOND WRITE FUNCTION
STM NPWF
LDM 3,T4 SET FIRST WRITE FUNCTION
PFC2 ZJN PFC3 IF NO FUNCTION TO ISSUE
RJM FCN ISSUE FUNCTION
RJM GST GET GENERAL STATUS
ZJN PFC2 IF NO ERROR
LJM MGR1 RETURN TO *MGR*
TPFC SPACE 4,10
** TPFC - TABLE OF FORMAT CONTROL CHARACTERS.
*
* FOUR WORDS PER ENTRY.
TPFC BSS 0
NFMTC C,,0,66 SKIP TO CHANNEL 6 AFTER PRINT
NFMTC D,,0,65 SKIP TO CHANNEL 5 AFTER PRINT
NFMTC E,,0,64 SKIP TO CHANNEL 4 AFTER PRINT
NFMTC F,,0,63 SKIP TO CHANNEL 3 AFTER PRINT
NFMTC G,,0,62 SKIP TO CHANNEL 2 AFTER PRINT
NFMTC H,,0,61 SKIP TO CHANNEL 1 AFTER PRINT
NFMTC Q,1,0,0 LINE IGNORED
NFMTC R,1,0,0 LINE IGNORED
NFMTC S,1,0,0 LINE IGNORED
NFMTC T,1,0,0 LINE IGNORED
NFMTC V,1,0,0 LINE IGNORED
NFMTC 0,,1,1,4 SPACE 1 LINE BEFORE PRINT
NFMTC 1,,0,21,4 EJECT BEFORE PRINT
NFMTC 2,,0,54 ADVANCE TO LAST LINE BEFORE PRINT
NFMTC 3,,0,46 SKIP TO CHANNEL 6 BEFORE PRINT
NFMTC 4,,0,45 SKIP TO CHANNEL 5 BEFORE PRINT
NFMTC 5,,0,44 SKIP TO CHANNEL 4 BEFORE PRINT
NFMTC 6,,0,43 SKIP TO CHANNEL 3 BEFORE PRINT
NFMTC 7,,0,42 SKIP TO CHANNEL 2 BEFORE PRINT
NFMTC 8,,0,41 SKIP TO CHANNEL 1 BEFORE PRINT
* NFMTC +,,0,0 PROCESSED IN MAIN DRIVER
NFMTC -,,2,2,4 SPACE 2 LINES BEFORE PRINT
NFMTC /,,0,7 SUPPRESS SPACE AFTER PRINT
DATA 0 END OF TABLE
PPM SPACE 4,10
** PPM - PROCESS PM MESSAGE.
*
* ENTRY (DA) = FWA OF LINE RECORD.
* (FP+2) = VALIDATION FLAGS.
* (CMLR) = RECORD LENGTH - 1.
*
* EXIT (CMLR) = LENGTH OF *DJDE* ENTRY.
*
* USES T1, T2, T4.
*
* CALLS MVE.
PPM SUBR ENTRY/EXIT
LDD F2+2 CHECK VALIDATION
LPN 1
ZJN PPMX IF NOT *CBIO* VALIDATED
LDC 80D+1 INSURE MAX LENGTH OF 80 CHARACTERS
SBM CMLR
PJN PPM1 IF .LE. 80 CHARACTERS
RAM CMLR
PPM1 LDD DA SET LWA+1 OF SOURCE
ADM CMLR
ADN 1
STD T1
ADN PPMAL-1 SET LWA+1 OF DESTINATION
STD T2
ADN PPMBL SET LWA+1 OF ENDING STRING
STD T4
SOM CMLR MOVE TEXT STRING
RJM MVE
LDC PPMB+PPMBL
STD T1
LDD T4
STD T2
LDN PPMBL MOVE ENDING STRING
RJM MVE
LDC PPMA+PPMAL
STD T1
LDD DA
ADN PPMAL+1
STD T2
LDN PPMAL MOVE BEGINING STRING
RJM MVE
LDN PPMAL+PPMBL SET RECORD LENGTH
RAM CMLR
LJM PPMX RETURN
PPMA STR ("DJDE"OTEXT=)
DATA 50 (
STR (')
PPMAL EQU *-PPMA
PPMB STR (',1,WAIT)
DATA 51 )
STR (;END;)
PPMBL EQU *-PPMB
CON SPACE 4,15
** CON - CONNECT TO EQUIPMENT.
*
* ENTRY (CMCE) = UNIT NUMBER.
*
* EXIT (A) = GENERAL STATUS.
* (ST) = GENERAL STATUS.
*
* ERROR TO *FCN3* IF FUNCTION TIMEOUT.
*
* CALLS FCN, GST.
CON2 DCN CH+40
RJM GST GET GENERAL STATUS
CON SUBR ENTRY/EXIT
LDN 0 ISSUE SELECT UNIT FUNCTION
RJM FCN
LDM CMCE SET UNIT NUMBER
SHN -11
ACN CH
OAN CH+40
CON1 ADD ON
EJM CON2,CH IF FUNCTION ACCEPTED
NJN CON1 IF NOT TIMED OUT
UJN FCN3 PROCESS FUNCTION TIMEOUT
FCN SPACE 4,15
** FCN - OUTPUT FUNCTION TO EQUIPMENT.
*
* ENTRY (A) = FUNCTION CODE.
*
* EXIT (FC) = CURRENT FUNCTION CODE.
* (FC) = PRIOR FUNCTION CODE IF CURRENT FUNCTION CODE IS
* A GENERAL STATUS.
*
* ERROR TO *CEP* IF FUNCTION TIMEOUT.
*
* USES T1.
*
* CALLS SDM.
FCN SUBR ENTRY/EXIT
FAN CH ISSUE FUNCTION
LMN 12
ZJN FCN1 IF GENERAL STATUS FUNCTION
LMN 12
STD FC SAVE FUNCTION CODE FOR ERROR MESSAGE
FCN1 LDK 1000D*4 FOUR SECOND DELAY
ERRPL 1000D*4-7777 DELAY COUNT OVERFLOWS
STD T1 SET TIMEOUT COUNTDOWN INCREMENT
FCN2 LDM .DLY DELAY 1 MILLISECOND
SHN 2
FCN2.4 IJM FCNX,CH IF FUNCTION ACCEPTED
SBN 1
NJN FCN2.4 IF INNER LOOP NOT EXPIRED
SOD T1
PJN FCN2 IF TIMEOUT NOT ELAPSED
SOM CMTC
NJN FCN1 IF TIMEOUT NOT ELAPSED
* *FCN3* IS A SECONDARY ENTRY POINT FOR *FCN*.
FCN3 DCN CH+40
LDN EFTM *EQXXX FUNCTION TIMEOUT.*
RJM SDM
LJM CEP PROCESS CHANNEL ERROR
GST SPACE 4,15
** GST - GET GENERAL STATUS OF CCC.
*
* ENTRY CHANNEL INSTRUCTIONS SET.
*
* EXIT (A) = GENERAL STATUS.
* (ST) = GENERAL STATUS.
*
* ERROR TO *FCN2* IF FUNCTION TIMEOUT.
* TO *CEP* IF STATUS ERROR.
*
* CALLS CCE, FCN, SDM.
GST2 LDD ST
GST SUBR ENTRY/EXIT
GST1 LDN 12 ISSUE GENERAL STATUS FUNCTION
RJM FCN
ACN CH
IAN CH+40
DCN CH+40
STD ST
LDN SCEI STATUS PARITY ERROR
RJM CCE CHECK FOR CHANNEL ERROR
NJN GST1 IF ERROR
LDD ST CHECK FOR STATUS ERROR
SHN -11
LMN 5
NJN GST2 IF NO ERROR
LDN ECSE *EQXXX CCC/NIP STATUS ERROR.*
RJM SDM
LJM CEP PROCESS CHANNEL ERROR
MCI SPACE 4,10
** MCI - MODIFY CHANNEL INSTRUCTIONS.
*
* ENTRY (CMCE) = CHANNEL FOR DEVICE.
* (CR) = CURRENT CHANNEL.
*
* EXIT (CR) = CHANNEL RESERVED.
*
* USES T1 - T3.
*
* MACROS DCHAN, RCHAN.
MCI1 RAI T2 MODIFY NEXT CHANNEL
AOD T1
MCI2 LDI T1
STD T2
LDD T3
CHTL *
SBN CH
NJN MCI1 IF MORE CHANNELS TO MODIFY
LDD CR RESERVE NEW CHANNEL
RCHAN
MCI SUBR ENTRY/EXIT
LDM CMCE CHECK CHANNEL
LPN 77
STD T3
CHTE *
LMN CH
ZJN MCIX IF CORRECT CHANNEL
LDD CR RELEASE LAST CHANNEL
DCHAN
CHTE CR UPDATE *CR* DIRECT CELL
LDC TCHS MODIFY CHANNELS
STD T1
UJN MCI2 MODIFY FIRST CHANNEL
MVE SPACE 4,10
** MVE - MOVE BUFFER.
*
* ENTRY (A) = NUMBER OF BYTES TO MOVE.
* (T1) = LWA+1 OF SOURCE BUFFER.
* (T2) = LWA+1 OF DESTINATION BUFFER.
*
* USES T1, T2, T3.
MVE1 SOD T1
SOD T2
LDI T1
STI T2
SOD T3
MVE2 NJN MVE1 IF MOVE NOT COMPLETE
MVE SUBR ENTRY/EXIT
STD T3
UJN MVE1 BEGIN MOVE
REC SPACE 4,10
** REC - RELEASE EQUIPMENT CONNECT.
REC SUBR ENTRY/EXIT
UJN RECX RETURN
SDP SPACE 4,10
** SDP - SUB-DRIVER PROCESSOR.
*
* CALLS CON, MCI.
SDP SUBR ENTRY/EXIT
LDD BR
NJN SDP1 IF BUSY RETURN REQUESTED
RJM MCI MODIFY CHANNEL INSTRUCTIONS
RJM CON CONNECT TO EQUIPMENT
ZJN SDP1 IF CONNECTED AND READY
SHN 21-1
MJN SDPX IF BUSY
LDM TNRP,EQ SET NOT READY PROCESSING ADDRESS
STD PA
LDD ST (A) = STATUS
UJN SDP2 ENTER ROUTINE
SDP1 LDM CMPA SET PROGRAM ADDRESS
STD PA
LDM CMAR RESET (A)
SDP2 LJM 0,PA RETURN TO NEXT DRIVER ADDRESS
WDR SPACE 4,10
** WDR - WRITE DATA RECORD.
*
* ENTRY (A) = WRITE FUNCTION.
* (DA) = FWA OF DATA RECORD.
* (CMLR) = OUTPUT RECORD LENGTH.
*
* ERROR TO *MGR1* IF RETRY REQUIRED.
*
* CALLS CRV, FCN, GST, PRE.
WDR SUBR ENTRY/EXIT
RJM FCN ISSUE WRITE FUNCTION
LDD DA SET RECORD ADDRESS
STM WDRA
LDM CMLR SET RECORD LENGTH
ACN CH
OAM **,CH
WDRA EQU *-1 (RECORD ADDRESS)
FJM *,CH IF TRANSFER NOT COMPLETE
DCN CH+40
NJN WDR1 IF INCOMPLETE TRANSFER
LDN DRRI
RJM CRV CHECK FOR RECOVERED ERROR
RJM GST GET GENERAL STATUS
NJN WDR2 IF ERRORS
UJN WDRX RETURN
WDR1 STD CS SAVE BYTE COUNT
LDN DRRI
RJM PRE PROCESS RECOVERED ERROR
WDR2 LJM MGR1 RETURN TO MANAGER
TCHS SPACE 4,10
** TCHS - CHANNEL TABLE.
TCHS CHTB
TITLE PRESET.
PRS SPACE 4,15
** PRS - PRESET SUB-DRIVER OVERLAY.
*
* EXIT (CR) = CHANNEL RESERVED.
* (DB) = FIRST DATA BUFFER ADDRESS.
* TO *ZBA*.
*
* USES CM - CM+4, T1 - T3.
*
* MACROS RCHAN.
PRS BSS 0 ENTRY
LDN IPRL CHECK CHARACTER SET MODE
CRD CM
LDD CM+2
LPN 1
NJN PRS1 IF SYSTEM NOT IN 63 CHARACTER SET MODE
ISTORE NPDA,(UJN NPD9)
PRS1 LDN CH RESERVE CHANNEL
STD CR
RCHAN
STM RCBA
LDN ZERL CLEAR *CIO* REQUEST PARAMETERS
CRD CM
LDD MA
ADN 1
CWD CM
LDC DBUF SET BUFFER INFORMATION
STD DB
STD T1
LDC DBUFS
STD T2
LDC DBUFL
STD T3
LJM ZBA CLEAR DATA BUFFER ASSIGNMENTS
SPACE 4,10
OVERFLOW OVLA
DBUF SPACE 4,10
** DBUF - DATA BUFFER AREA.
DBUFS EQU PXMX+5 DATA BUFFER SIZE
DBUFW EQU DBUFS/10D DATA BUFFER SIZE IN CM WORDS
DBUF EQU PRS FWA OF DATA BUFFERS
.L SET 7777-DBUF
NDBUF EQU .L/DBUFS NUMBER OF DATA BUFFERS
DBUFL EQU DBUF+DBUFS*NDBUF LWA+1 OF DATA BUFFERS
ERRNG 10000-DBUFL BUFFERS WRAP PP MEMORY
SPACE 4,10
END