IDENT XHC,XHC PERIPH BASE MIXED SST TITLE XHC - HOSTCOPY DRIVER FOR 5870/5970 NIP. *COMMENT XHC - HOSTCOPY DRIVER FOR 5870/5970 NIP. COMMENT COPYRIGHT CONTROL DATA SYSTEMS INC. 1992. XHC SPACE 4,10 *** XHC TRANSFERS DATA TO THE HOSTCOPY UTILITY * RESIDING ON A NIP PRINTER. 128 8-BIT BYTES OR 80 * 8-BIT BYTES ARE TRANSFERED AT A TIME. * * L. M. BURGHER 84/09/22. * S. V. PRESTON 84/09/22. SPACE 4,10 *** CALL. * *T 18/ *XHC*, 24/, 18/ CNTB * * CNTB ADDRESS OF CONTROL BLOCK *CNTB*. SPACE 4,10 ** CNTB - CONTROL BLOCK. * * COMMUNICATION BETWEEN XHC AND THE CALLING CP PROGRAM * OCCURS IN *CNTB*. * *T CNTC 3/ ,9/ EQ ,11/ ,1/ T,11/ ,1/ I,11/ ,1/C *T DRPC 42/ , 18/ DRP * * EQ = EQUIPMENT NUMBER. * T = (1), TERMINATE XHC. * I = (1), CARD IMAGE. * C = (1), REQUEST COMPLETE. * DRP = DATA RECORD ADDRESS. SPACE 4,10 *** DAYFILE AND ERRLOG MESSAGES. * * *EQXXX CHYY ADDDD INCOMPLETE TRANSFER.* = * AN INCOMPLETE DATA TRANSFER WAS DETECTED. * * *EQXXX CHYY GSSSS COUPLER STATUS.* = * CCC COUPLER STATUS. * * *EQXXX CHYY CONTROLWARE NOT LOADED.*= * CCC CONTROLWARE NOT SUCCESSFULLY LOADED. * * *EQXXX CHYY RESERVED.* = EQUIPMENT FOUND RESERVED. * * *EQXXX INCORRECT EQUIPMENT TYPE.* = * EQUIPMENT REQUESTED WAS NOT OF TYPE *LX* OR *LY*. * * *EQXXX INCORRECT EQUIPMENT NUMBER.* = * EQUIPMENT NUMBER NOT IN EST. * * *EQXXX NOT AVAILABLE.* = EQUIPMENT REQUESTED IS DOWN AND OFF. * * *TABLE NOT IN FL.* = HSTCOPY TABLE POINTER IS OUTSIDE FL. * * *INCORRECT JOB ORIGIN.* = CALLING PROGRAM IS NOT SYSTEM ORIGIN * * WHERE - * EQ = EQUIPMENT TYPE (LX, LY). * XXX = EST ORDINAL. * YY = CHANNEL. * DDDD = NUMBER OF BYTES REMAINING. * SSSS = COUPLER STATUS. SPACE 4,10 ** COMMON DECKS. *CALL COMPCHI *CALL COMPMAC TITLE ASSEMBLY CONSTANTS. SPACE 4,10 **** DIRECT CELL ASSIGNMENTS. BC EQU 25 BYTE COUNT EQ EQU 27 EQUIPMENT NUMBER ES EQU 30 - 34 EST ENTRY FC EQU 35 FUNCTION CODE T8 EQU 36 TEMPORARY TM EQU 45 TERMINATE REQUEST FLAG SPACE 4,10 ** CONTROL BLOCK DEFINITIONS. CNTC EQU 0 CONTROL BLOCK WORD DRPC EQU 1 DATA RECORD POINTER CNTBL EQU 2 CONTROL BLOCK LENGTH SPACE 4,10 ** DAYFILE MESSAGE CODES. LOC 0 EITM BSS 1 *EQXXX CHYY ADDDD INCOMPLETE TRANSFER.* EGSM BSS 1 *EQXXX CHYY GSSSS COUPLER STATUS.* ENLM BSS 1 *EQXXX CHYY CCC CONTROLWARE NOT LOADED.* ERSM BSS 1 *EQXXX CHYY RESERVED.* ETYM BSS 1 *EQXXX INCORRECT EQUIPMENT TYPE.* ENMM BSS 1 *EQXXX INCORRECT EQUIPMENT NUMBER.* ENAM BSS 1 *EQXXX NOT AVAILABLE.* EFLM BSS 1 *TABLE NOT IN FL.* EJOM BSS 1 *INCORRECT JOB ORIGIN.* LOC *O SPACE 4,10 ** CCC FUNCTION DEFINITIONS. FSUF EQU 0 SELECT UNIT FGSF EQU 12 GENERAL STATUS FTDF EQU 20 TRANSPARENT DATA TRANSFER SPACE 4,10 ** MISCELLANEOUS CONSTANTS. BFCL EQU 128D*8D/60D+1 BUFF LENGTH IN CM WORDS BINL EQU 128D*8D/12D+1 BINARY BUFFER LENGTH CRDL EQU 80D*8D/12D+1 CARD IMAGE BUFFER LENGTH CH EQU 12 CHANNEL NUMBER NILP EQU 377777 NIL POINTER **** TITLE MAIN PROGRAM. ** XHC - MAIN PROGRAM. ORG PPFW XHC RJM PRS PRESET *XHC* XHC1 RJM RCB READ CONTROL BLOCK ZJN XHC2 IF NO DATA TO TRANSFER CRM BUFF,T2 READ DATA RECORD RJM XDR TRANSFER DATA RECORD UJN XHC3 CHECK FOR MOVE REQUEST XHC2 LDD TM NJN TRM IF REQUEST TO TERMINATE XHC3 PAUSE PAUSE FOR STORAGE MOVE LDD CM+1 ZJN XHC1 IF NO CONTROL POINT ERROR UJN TRM1 ERROR EXIT TITLE TERMINATION PROCESSORS. TRM SPACE 4,10 ** TRM - TERMINATION PROCESSOR. * * EXIT TO *PPR*. * * CALLS CRQ, DEQ. * * MACROS MONITOR. TRM RJM CRQ COMPLETE REQUEST * TRM1 IS A SECONDARY ENTRY POINT FOR TRM. TRM1 RJM DEQ DROP EQUIPMENT MONITOR DPPM DROP PP LJM PPR EXIT TO PP RESIDENT ABT SPACE 4,10 ** ABT - ABORT JOB. * * EXIT TO *PPR*. * * CALLS DEQ. * * MACROS MONITOR. ABT RJM DEQ DROP EQUIPMENT MONITOR ABTM ABORT JOB LJM PPR EXIT TO PP RESIDENT TITLE ERR - ERROR PROCESSOR. ERR SPACE 4,10 ** ERR - ERROR PROCESSOR. * * ENTRY (A) = MESSAGE CODE. * (FC) = STATUS/BYTES REMAINING. * (ES - ES+4) = EST ENTRY. * * USES T1, T2, T5. * * CALLS C2D, DFM. ERR SUBR ENTRY/EXIT SHN 1 GET TABLE ADDRESS STD T1 LDM TDFP+1,T1 SET MESSAGE ADDRESS STD T5 LDM TDFP,T1 SET PROCESSING ADDRESS STD T2 LJM 0,T2 FORMAT ERROR MESSAGE ERR3 LDD FC CONVERT STATUS / BYTE COUNT REMAINING SHN -6 RJM C2D STM 6,T5 LDD FC RJM C2D STM 7,T5 ERR4 LDD ES+1 CONVERT CHANNEL NUMBER TO DISPLAY CODE RJM C2D STM 4,T5 LDD ES+3 SET EQUIPMENT TYPE STI T5 ERR5 LDM CNTB+CNTC*5+0 CONVERT EQUIPMENT NUMBER SHN -3 RJM C2D STM 1,T5 LDM CNTB+CNTC*5+0 RJM C2D SHN 6 LMN 1R STM 2,T5 ERR6 LDD T5 SEND MESSAGE TO DAYFILE RJM DFM LDC ERLN SEND MESSAGE TO ERROR LOG LMD T5 RJM DFM LJM ERRX RETURN SPACE 4,10 ** TDFP - TABLE OF PROCESSORS AND MESSAGES. * * *TDFP* IS INDEXED WITH DAYFILE MESSAGE CODES. * * ENTRY - 2 WORDS. * * INDEXED BY (MESSAGE CODE * 2). TDFP EQU * LOC 0 CON ERR3,=C*EQXXX CHYY ADDDD INCOMPLETE TRANSFER.* CON ERR3,=C*EQXXX CHYY GSSSS ADAPTER STATUS.* CON ERR4,=C*EQXXX CHYY CCC CONTROLWARE NOT LOADED.* CON ERR4,=C*EQXXX CHYY RESERVED.* CON ERR5,=C*EQXXX INCORRECT EQUIPMENT TYPE.* CON ERR5,=C*EQXXX INCORRECT EQUIPMENT NUMBER.* CON ERR5,=C*EQXXX NOT AVAILABLE.* CON ERR6,=C*TABLE NOT IN FL.* CON ERR6,=C*INCORRECT JOB ORIGIN.* LOC *O TDFPL EQU *-TDFP USE LITERALS TITLE XDR - TRANSFER DATA RECORD. XDR SPACE 4,10 ** XDR - TRANSFER DATA RECORD. * * ENTRY (BC) = BYTE COUNT. * (BUFF) = DATA BUFFER. * * ERROR TO *TRM1*, IF CONTROL POINT ERROR. * * TO *ABT*, IF INCOMPLETE DATA TRANSFER OR * BAD ADAPTER STATUS. * * USES FC. * * CALLS CRQ, ERR, FCN. XDR3 RJM CRQ COMPLETE REQUEST XDR SUBR ENTRY/EXIT LDN FTDF ISSUE TRANSPARENT DATA TRANSFER FUNCTION RJM FCN LDD BC BYTE COUNT OAM BUFF,CH OUTPUT BUFFER ZJN XDR1 IF TRANSFER COMPLETE STD FC REMAINING BYTE COUNT LDN EITM *EQXXX CHYY INCOMPLETE TRANSFER.* UJN XDR2 REPORT ERROR XDR1 FJM *,CH IF XFER INCOMPLETE DCN CH+40 LDN FGSF ISSUE GENERAL STATUS FUNCTION RJM FCN IAN CH ZJN XDR3 IF STATUS OK STD FC SAVE STATUS LDN EGSM *EQXXX CHYY GSSSS ADAPTER STATUS.* XDR2 RJM ERR PROCESS ERROR LJM ABT ABORT JOB TITLE SUBROUTINES. CAD SPACE 4,15 ** CAD - COMPUTE ABSOLUTE ADDRESS. * * ENTRY (A) = WORD COUNT. * (T1) = INDIRECT ADDRESS OF ADDRESS. * ((T1)) - ((T1)+1) = ADDRESS. * * EXIT (A) = ABSOLUTE ADDRESS. * (T2) = WORD COUNT. * * ERROR TO *ERR*, IF TABLE NOT IN FL. * * USES T2. * * CALLS ERR. CAD2 LDI T1 LOAD ABSOLUTE ADDRESS LPN 77 SHN 6 ADD RA SHN 6 ADM 1,T1 CAD SUBR ENTRY/EXIT STD T2 SAVE WORD COUNT LDI T1 LPN 77 SHN 14 MJN CAD1 IF OUT OF RANGE LMM 1,T1 ADD T2 SHN -6 SBD FL MJN CAD2 IF < FL - WORD COUNT CAD1 LDN EFLM *TABLE NOT IN FL.* RJM ERR PROCESS ERROR LJM ABT ERROR EXIT CRQ SPACE 4,15 ** CRQ - COMPLETE REQUEST. * * ENTRY (IR+3) - (IR+4) = CNTB ADDRESS. * * EXIT CNTB UPDATED IN CM. * * USES T1, CM - CM+4. * * CALLS CAD. * * MACROS MONITOR. CRQ SUBR ENTRY/EXIT AOM CNTB+CNTC*5+4 SET REQUEST BIT LDN IR+3 CONTROL BLOCK ADDRESS STD T1 LDN CNTBL CONTROL BLOCK LENGTH RJM CAD COMPUTE ABSOLUTE ADDRESS CWM CNTB,ON UPDATE CONTROL WORD LDD CP ADN STSW FETCH CONTROL POINT STATUS WORD CRD CM LDD CM CHECK CPU STATE SHN -11 LMN 6 NJN CRQX IF NOT IN *I* STATUS MONITOR RCPM UJN CRQX RETURN DEQ SPACE 4,10 ** DEQ - DROP EQUIPMENT. * * ENTRY (EQ) = 0, IF NO EQUIPMENT ASSIGNED. * (EQ) = EQUIPMENT NUMBER. * (ES - ES+4) = EST ENTRY. * * EXIT (EQ) = 0. * * USES CM - CM+4. * * MACROS DCHAN, MONITOR. DEQ SUBR ENTRY/EXIT LDD EQ ZJN DEQX IF NO EQUIPMENT ASSIGNED. LDD ES+1 DROP CHANNEL DCHAN LDD EQ DROP EQUIPMENT STD CM+1 MONITOR DEQM * LDN 0 INDICATE EQUIPMENT RELEASED STD EQ UJN DEQX RETURN FCN SPACE 4,15 ** FCN - ISSUE FUNCTION TO EQUIPMENT. * * ENTRY (A) = FUNCTION CODE. * * EXIT CHANNEL ACTIVE. * * ERROR TO *TRM1*, IF CONTROL POINT ERROR. * * USES FC. * * MACROS PAUSE. FCN2 ACN CH ACTIVATE CHANNEL FCN SUBR ENTRY/EXIT STD FC SAVE FUNCTION CODE FAN CH ISSUE FUNCTION FCN1 IJM FCN2,CH IF FUNCTION ACCEPTED SBN 1 NJN FCN1 IF NOT TIMED OUT PAUSE PAUSE FOR STORAGE MOVE LDD CM+1 ZJN FCN1 IF NO CONTROL POINT ERROR DCN CH+40 LJM TRM1 ERROR EXIT RCB SPACE 4,15 ** RCB - READ CONTROL BLOCK. * * ENTRY (IR+3) - (IR+4) = CNTB ADDRESS. * * EXIT (A) = 0, IF NO DATA TO TRANSFER. * (A) = DATA RECORD ADDRESS. * (T2) = *BFCL*, IF (A) = DATA RECORD ADDRESS. * (CNTB) UPDATED, IF (A) = DATA RECORD ADDRESS. * (TM) <> 0, IF REQUEST TO TERMINATE. * * USES T1. * * CALLS CAD. RCB1 AOD TM SET *TERMINATE REQUEST* RCB2 LDN 0 INDICATE NO REQUEST RCB SUBR ENTRY/EXIT LDN IR+3 CNTB ADDRESS STD T1 LDN CNTBL CNTB LENGTH RJM CAD COMPUTE ABSOLUTE ADDRESS CRM CNTB,T2 READ CNTB LDM CNTB+CNTC*5+4 CHECK REQUEST BIT SHN 21-0 MJN RCB2 IF NO REQUEST LDM CNTB+CNTC*5+1 CHECK TERMINATE REQUEST SHN 21-0 MJN RCB1 IF NOT REQUEST TO TERMINATE LDM CNTB+DRPC*5+3 GET DATA RECORD POINTER SHN 14 ADM CNTB+DRPC*5+4 LMC NILP ZJN RCBX IF NIL LDC CNTB+DRPC*5+3 DATA RECORD ADDRESS STD T1 LDN BFCL DATA RECORD LENGTH RJM CAD COMPUTE ABSOLUTE ADDRESS UJP RCBX RETURN SPACE 4,10 ** COMMON DECKS. *CALL COMPC2D SPACE 4,10 USE BUFFER BUFF EQU * DATA RECORD BUFFER BUFE EQU BUFF+BFCL*5 END OF DATA BUFFER CNTB EQU BFMS-CNTBL*5 CONTROL BLOCK ERRNG CNTB-BUFE ERRNG CNTB-PRSE TITLE XHC PRESET. PRS SPACE 4,15 ** PRS - XHC PRESET. * * ENTRY (IR+3 - IR+4) = CONTROL BLOCK ADDRESS. * * EXIT (BC) = CRDL, IF CARD IMAGE FILE. * (BC) = BINL, IF BINARY FILE. * (EQ) = EQUIPMENT NUMBER. * (ES - ES+4) = EST ENTRY. * CHANNEL INSTRUCTIONS MODIFIED. * EQUIPMENT AND CHANNEL RESERVED. * NIP UNIT SELECTED. * * ERROR TO *ABT*, IF INCORRECT JOB ORIGIN OR * EQUIPMENT PROBLEM. * * TO *TRM1*, IF CONTROL POINT ERROR. * * USES BC, CM - CM+4, EQ, ES - ES+4, FR, TM, T8. * * CALLS CRQ, ERR, FCN, GST, MCI, RCB. * * MACROS MONITOR, PAUSE, RCHAN. PRS SUBR ENTRY/EXIT LDN 0 STD EQ EQUIPMENT NOT ASSIGNED STD TM TERMINATE NOT REQUESTED LDD CP CHECK FOR SYOT ORIGIN ADN JOTW CRD CM LDD CM+3 * LMN SYOT ZJN PRS1 IF SYSTEM ORIGIN LDN EJOM *INCORRECT JOB ORIGIN.* UJN PRS4 PROCESS ERROR PRS1 RJM RCB READ CONTROL BLOCK LDM CNTB+CNTC*5+3 SHN 21-0 MJN PRS2 IF CARD IMAGE FILE LDC BINL UJN PRS3 PRS2 LDN CRDL PRS3 STD BC LDN ESTP GET EST TABLE ADDRESS CRD CM LDM CNTB+CNTC*5+0 GET EQUIPMENT NUMBER LPC 777 STD T8 STD CM+1 SBD CM+2 MJN PRS5 IF ENTRY IN EST LDN ENMM *EQXXX CHYY INCORRECT EQUIPMENT NUMBER.* PRS4 RJM ERR PROCESS ERROR LJM ABT ABORT JOB PRS5 SFA EST,CM+1 ADK EQDE CRD ES READ EST ENTRY LDD ES+3 CHECK FOR NIP LMC 2RLX ZJN PRS6 IF 5870 LMN 2RLY&2RLX ZJN PRS6 IF 5970 LDN ETYM *EQXXX INCORRECT EQUIPMENT TYPE.* UJN PRS4 ERROR EXIT PRS6 STD CM+2 LDD ES CHECK STATUS OF EQUIPMENT SHN 21-5 PJN PRS8 IF NOT DOWN AND OFF LDN ENAM *EQXXX NOT AVAILABLE.* PRS7 UJN PRS4 ERROR EXIT PRS8 SHN 1 PJN PRS9 IF CONTROLWARE LOADED LDN ENLM *EQXXX CHYY CONTROLWARE NOT LOADED.* UJN PRS7 PROCESS ERROR PRS9 MONITOR REQM REQUEST EQUIPMENT LDD CM+1 NJN PRS10 IF EQUIPMENT ASSIGNED LDN ERSM *EQXXX CHYY RESERVED.* UJN PRS7 PROCESS ERROR PRS10 LDD T8 SET EQUIPMENT RESERVED STD EQ LDD ES+1 CLEAR UPPER BITS OF CHANNEL LPN 37 STD ES+1 RJM MCI MODIFY CHANNEL INSTRUCTIONS LDD ES+1 RCHAN RESERVE CHANNEL * CONNECT EQUIPMENT. LDN FSUF SELECT UNIT RJM FCN LDD ES+4 OUTPUT UNIT NUMBER SHN 0-11 OAN CH+40 PRS11 EJM PRS12,CH IF CONNECT RESPONSE RECEIVED SBN 1 NJN PRS11 IF NOT TIMED OUT PAUSE PAUSE FOR STORAGE MOVE LDD CM+1 ZJN PRS11 IF NO CONTROL POINT ERROR DCN CH+40 LJM TRM1 ERROR EXIT PRS12 DCN CH+40 LDN FGSF GET GENERAL STATUS RJM FCN IAN CH ZJN PRS13 IF GOOD STATUS STD FC LDN EGSM *EQXXX CHYY GSSSS ADAPTER STATUS.* RJM ERR PROCESS ERROR LJM ABT ABORT JOB PRS13 RJM CRQ COMPLETE REQUEST LJM PRSX RETURN MCI SPACE 4,10 ** MCI - MODIFY CHANNEL INSTRUCTIONS. * * (ES+1) = CHANNEL NUMBER. * * USES T1, T2. MCI SUBR ENTRY/EXIT LDC TCHS LOAD FWA OF CHANNEL TABLE ADDRESSES STD T1 MCI1 LDI T1 ZJN MCIX IF NO MORE INSTRUCTIONS TO MODIFY STD T2 LDI T2 SCN 37 LMD ES+1 STI T2 AOD T1 UJN MCI1 MODIFY NEXT INSTRUCTION SPACE 4,10 ** TCHS - CHANNEL TABLE. TCHS CHTB SPACE 4,10 PRSE EQU * OVERFLOW END