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