DCC
Table Of Contents
- [00002] DCC - CCC COMMUNICATOR.
- [00012] CCC COMMUNICATOR.
- [00015] CCC COMMUNICATOR.
- [00113] CHTE - CREATE CHANNEL TABLE ENTRY.
- [00130] IAN - REDEFINE IAN WITH 25 SET. * [00159] MAIN PROGRAM * [00160] MAIN PROGRAM. * [00181] DNP - DUMP CCC. * [00264] SUBROUTINES. * [00266] ERR - PROCESS ERROR. * [00317] FCN - CHECK FUNCTION COUPLER. * [00373] RNP - READ CCC. * [00411] SFL - SET CCC ADDRESS AND LENGTH. * [00445] WCB - WRITE CIRCULAR BUFFER. * [00527] INITIALIZATION. * [00529] PRS - PRESET PROGRAM. * [00666] CCC - CLEAR CCC COUPLER. * [00702] SBP - SET BUFFER PARAMETERS. * [00796] SDC - SET DATA CHANNEL. * [00851] SEC - SEARCH FOR EQUIPMENT ON CHANNEL. * [00895] CIT - CHANNEL INSTRUCTION TABLE. * [00900] PBF - PPU BUFFER. </WRAP> === Source Code === <file compass DCC.txt [enable_line_numbers=โtrueโ] > IDENT DCC,DCC TITLE DCC - CCC COMMUNICATOR. *COMMENT DCC - CCC COMMUNICATOR. COMMENT COPYRIGHT CONTROL DATA SYSTEMS INC. 1992. PERIPH BASE MIXED SST QUAL$ EQU 1 DEFINE UNQUALIFIED COMMOM DECKS SPACE 4 * DCC - CCC COMMUNICATOR.
* L. E. LOVETT 84/04/01.
SPACE 4,10
* DCC - CCC COMMUNICATOR. * * CALL - * *T IR 18/ *DCC* 1/1, 23/ 0, 18/ ADDR * * ADDR - *FET* ADDRESS. * *T ADDR 6/ 0, 6/ CH, 18/ LWA, 18/FWA, 12/ 0 *T, 42/ 0, 18/ FIRST *T, 42/ 0, 18/ IN *T, 42/ 0, 18/ OUT *T, 42/ 0, 18/ LIMIT * * CH - CHANNEL NUMBER. * LWA - *CCC* LAST WORD ADDRESS. * FWA - *CCC* FIRST WORD ADDRESS. SPACE 4,10 * DAYFILE AND ERRLOG MESSAGES * * * CCC, CHXX. DCC - CHANNEL ACTIVE BEFORE FUNCTION.* * CHANNEL XX WAS ALREADY ACTIVE WHEN *DCC* TRIED TO SEND * A FUNCTION CODE TO THE CCC. * * * CCC, CHXX. DCC - NO RESPONSE. CHECK CABLES.* * THERE WAS A FUNCTION TIMEOUT ON THE FIRST ATTEMPT TO * SEND A FUNCTION CODE NNNN TO THE CCC ON CHANNEL XX. * * * CCC, CHXX. DCC - FUNCTION NNNN REJECT.* * THERE WAS A FUNCTION TIMEOUT ON AN ATTEMPT TO SEND * A FUNCTION CODE NNNN TO THE CCC ON CHANNEL XX. * * * CCC, CHXX. DCC - INPUT INCOMPLETE.* * DCC ENCOUNTERED AN INCOMPLETE INPUT ON ATTEMPTING TO * READ DATA FROM THE CCC ON CHANNEL XX. * * * CCC, CHXX. DCC - LOAD ADDRESS ERROR.* * THERE WAS AN CHANNEL HANG ON A LOAD ADDRESS FUNCTION * ATTEMPT ON THE CCC ON CHANNEL XX. * * * CCC, CHXX. DCC - CHANNEL NOT AVAILABLE.* * CHANNEL XX WAS NOT AVAILABLE WHEN DCC ATTEMPTED TO * ACCESS IT TO DUMP THE CCC. * * * CCC, CHXX. DCC - CONSTANT CHANNEL FULL.* * AN ATTEMPT TO CLEAR THE CCC ON CHANNEL XX * TIMED OUT WITH A CHANNEL FULL CONDITION. * * * DCC - INCORRECT USER ACCESS.* * USER IS NOT VALIDATED FOR SYSTEM ORIGIN PRIVILEGES * OR SYSTEM IS NOT IN ENGINEERING MODE. * * * DCC - INCORRECT ORIGIN TYPE.* * USER MUST BE SYSTEM ORIGIN TO USE DCC AND IS NOT. * * * DCC - PARAMETER ADDRESS ERROR.* * THE CCC ADDRESSES PASSED WITH THE CALL TO DCC * ARE NOT IN THE VALID ADDRESS RANGE. * * * DCC - LWA+1 OUT OF RANGE.* * THE CCC LAST WORD ADDRESS SPECIFIED IN THE CALL TO * DCC IS BEYOND THE CCC LIMIT ADDRESS. * * * DCC - FWA .GE. LWA+1.* * THE SPECIFIED CCC ADDRESSES ARE NOT IN THE CORRECT * RELATIONSHIP. THEY MAY BE REVERSED. * * * DCC - INCORRECT REQUEST.* * THE REQUEST SPECIFIED IN THE CALL TO DCC IS INCORRECT. * * * DCC - NOT CONTROLWARE CHANNEL.* * THE CHANNEL SPECIFIED IN THE CALL TO DCC IS NOT A * CHANNEL WITH CONTROLWARE. * * * DCC - INCORRECT CCC CONTROLWARE TYPE.* * THE CONTROLWARE TYPE ASSOCIATED WITH THE SPECIFIED * CHANNEL IS NOT ONE THAT DCC IS ALLOWED TO DUMP. * * * DCC - CIRCULAR BUFFER ADDRESS ERROR.* * ONE OF THE CIRCULAR BUFFER POINTERS *FIRST*, *IN*, * *OUT* OR *LAST* POINTS OUTSIDE THE FIELD LENGTH, * *LAST IS NOT GREATER THAN *FIRST*, OR *IN* OR *OUT* * IS NOT WITHIN THE BUFFER LIMITS. * * DCC - INCOMPLETE *CCC* DUMP.* * THE CM BUFFER SIZE IN THE CALLING PROGRAM WAS NOT * LARGE ENOUGH TO HOLD THE ENTIRE *CCC* MEMORY. * * * DCC INCORRECT REQUEST.* * *DCC* WAS NOT CALLED WITH RECALL.
SPACE 4,10
COMMON DECKS. *CALL COMPMAC *CALL COMPCHM *CALL COMSDSL *CALL COMSPIM SPACE 4,10 CHTE - CREATE CHANNEL TABLE ENTRY. * * * CHTE CH,ADDRESS * * ENTRY (ADDRESS) = ADDRESS TO INSERT IN CHANNEL TABLE.
PURGMAC CHTE
CHTE MACRO D,B
LOCAL A
A EQU B CT_D RMT
CON A RMT ENDM
IAN SPACE 4,10 IAN - REDEFINE IAN WITH 25 SET.
CHIN IAN,7040 SPACE 4
ASSEMBLY CONSTANTS. NWC EQU 100*5/2 CCC WORD COUNT EORS EQU 22 END OF RECORD RETURN STATUS FSLA EQU 500 SELECT CCC LOAD ADDRESS AND LENGTH FSRD EQU 701 SELECT CCC READ MEMORY FSMC EQU 740 SELECT CCC MASTER CLEAR INTERFACE SPACE 4,10 SPACE 4 DIRECT LOCATION ASSIGNMENTS.
NA EQU 20 - 21 CCC ADDRESS NL EQU 22 - 23 CCC LIMIT ADDRESS NC EQU 24 CCC WORD COUNT WC EQU 25 BLOCK WORD COUNT EB EQU 27 ERROR BUFFER ADDRESS RQ EQU 30 - 34 REQUEST WORD DA EQU 40 - 44 DATA ADDRESS FT EQU 60 - 61 FIRST IN EQU 62 - 63 IN OT EQU 64 - 65 OUT LM EQU 66 - 67 LIMIT
TITLE MAIN PROGRAM
DCC - MAIN PROGRAM. ORG PPFW DCC RJM PRS PRESET PROGRAM RJM DNP DUMP CCC LDD RQ+4 SET OPERATION COMPLETE SCN 1 LMN 1 STD RQ+4 LDD IR+3 WRITE REQUEST SHN 6 ADD RA SHN 6 ADD IR+4 CWD RQ LDD T4 DROP CHANNEL DCHAN DPP MONITOR DPPM LJM PPR DNP SPACE 4 DNP - DUMP CCC. * * THIS ROUTINE IS CALLED TO DUMP *CCC* MEMORY. * * ENTRY (NA, NA+1) = STARTING ADDRESS FOR DUMP. * (IN, IN+1) = INPUT BUFFER IN POINTER. * (NL, NL+1) = ENDING ADDRESS FOR DUMP. * (NC) = DUMP BLOCK *CCC* WORD COUNT. * (IR+3, IR+4) = DUMP *FET* ADDRESS. * (FT, FT+1) = INPUT BUFFER FIRST WORD ADDRESS. * (LM, LM+1) = INPUT BUFFER LIMIT. * * EXIT (RQ+4) = END OF RECORD STATUS (*EORS*) IF * DUMP IS COMPLETE. * * USES NC, WC, CM - CM+4, DA+3 - DA+4, OT - OT+1. * * CALLS DV5, RNP, WCB.
DNP9 LDN EORS SET END OF RECORD
STD RQ+4
DNP SUBR ENTRY/EXIT
LDD IN DATA ADDRESS = IN STD DA+3 LDD IN+1 STD DA+4
DNP1 LDD NL CHECK CCC ADDRESS
SBD NA SHN 14 ADD NL+1 SBD NA+1 ZJN DNP9 IF END OF DUMP SBD NC PJN DNP2 IF ENOUGH DATA FOR FULL BLOCK RAD NC SET SHORT BLOCK COUNT
DNP2 RJM RNP READ CCC
LDD NC SET CPU WORD COUNT SHN 1 ADN 4 RJM DV5 DIVIDE *PP* WORD COUNT BY FIVE STD WC SAVE *CP* WORD COUNT
DNP3 LDD IR+3 READ OUT
SHN 6 ADD RA SHN 6 ADD IR+4 ADN 3 CRD CM LDD CM+3 SET OUT LPN 37 STD OT SHN 14 LMD CM+4 STD OT+1 SHN -6 SBD FL MJN DNP5 IF IN BOUNDS
DNP4 LJM DNPX RETURN
DNP5 LDD OT CHECK CIRCULAR BUFFER
SBD DA+3 SHN 14 ADD OT+1 SBD DA+4 SBN 1 PJN DNP6 IF OUT WILL NOT HIT BUFFER LIMIT SHN 6 ADD LM SBD FT SHN 14 ADD LM+1 SBD FT+1
DNP6 SBD WC
MJN DNP7 IF NO ROOM IN BUFFER RJM WCB WRITE CIRCULAR BUFFER LJM DNP1 CONTINUE WITH DUMP
DNP7 LDC =C+ DCC - INCOMPLETE *CCC* DUMP.+
RJM DFM LJM DNP9
TITLE SUBROUTINES.
ERR SPACE 4 ERR - PROCESS ERROR. * * ERR DAYFILES AN ERROR MESSAGE AND ABORTS THE JOB. THE * CHANNEL TO THE *CCC* WILL BE DROPPED IF RESERVED. * * ENTRY (A) = ERROR MESSAGE ADDRESS. * (ERRA) = *LDN 1* IF CHANNEL IS RESERVED. * (T4) = CHANNEL. * * EXIT *PPR* ENTERED. * * USES T1, T7. * * CALLS C2D, DFM, PPR. * * MACROS CHTE, DCHAN, MONITOR. ERR STD T7 SAVE MESSAGE ADDRESS ERRA LDN 0 CHANNEL RESERVED FLAG * LDN 1 (CHANNEL RESERVED) ZJN ERR1 IF CHANNEL NOT RESERVED DCN CH LDD T4 DROP CHANNEL DCHAN ERR1 CHTE CH,* LDN CH CONVERT CHANNEL NUMBER RJM C2D CONVERT OCTAL TO DISPLAY STM ERRB+5 LDD T4 LPN 40 ZJN ERR1.1 IF NOT A CONCURRENT CHANNEL LDC 2R C SET CONCURRENT MESSAGE STM ERRB+3 ERR1.1 LDC ERRC STD T1 ERR2 LDI T7 COPY MESSAGE STI T1 ZJN ERR3 IF MOVE IS COMPLETE AOD T7 AOD T1 UJN ERR2 MOVE NEXT WORD OF MESSAGE ERR3 LDC ERRB ISSUE DAYFILE MESSAGE ABT RJM DFM DAYFILE ERROR MESSAGE MONITOR ABTM ABORT JOB LJM PPR TERMINATE PROGRAM ERRB DATA H* CCC, CH00. * ERRC BSS 0 FCN SPACE 4,10 FCN - CHECK FUNCTION COUPLER. * * THIS ROUTINE FUNCTIONS THE EQUIPMENT WITH THE REQUESTED * FUNCTION CODE. THE FUNCTION WILL BE TIMED OUT TO CHECK * COUPLER RESPONSE. * * ENTRY (A) = FUNCTION CODE. * (FCNA) = 1 IF NOT FIRST FUNCTION REQUEST. * * EXIT FUNCTION ACCEPTED. * * ERROR *ERR* CALLED IF CHANNEL ACTIVE OR TIMEOUT. * (A) = ERROR MESSAGE ADDRESS. * * USES T1, T7. * * CALLS C2D, ERR.
FCN4 LDN 1 FLAG FIRST ENTRY TO *FCN* COMPLETED
STM FCNA
FCN SUBR ENTRY/EXIT
STD T1 AJM FCN2,CH FAN CH FUNCTION COUPLER LCN 0 SET TIMEOUT WAIT COUNT
FCN1 IJM FCN4,CH IF NO FUNCTION TIMEOUT
SBN 1 NJN FCN1 IF NOT FUNCTION TIMEOUT LDC 0
* LDC 1 (AFTER FIRST FUNCTION) FCNA EQU *-1
ZJN FCN3 IF FIRST ENTRY LDD T1 CONVERT FUNCTION STD T7 SHN -6 RJM C2D CONVERT OCTAL TO DISPLAY STM FCNC *0000 REJECT.* LDD T7 LPN 77 RJM C2D CONVERT OCTAL TO DISPLAY STM FCNC+1 LDC FCNB *FUNCTION 0000 REJECT.* LJM ERR PROCESS ERROR
FCN2 LDC =C* DCC - CHANNEL ACTIVE BEFORE FUNCTION.*
LJM ERR PROCESS ERROR
FCN3 LDC =C* DCC - NO RESPONSE, CHECK CABLES.*
LJM ERR
FCNB DATA H*FUNCTION * FCNC DATA C*0000 REJECT.* RNP SPACE 4 RNP - READ CCC. * * RNP READS A BLOCK OF DATA FROM THE *CCC* INTO * THE *PP* BUFFER. AN ERROR IS GENERATED IF THE INPUT * IS INCOMPLETE. * * ENTRY (NC) = COUNT OF *CCC* WORDS TO RRAD. * (NA, NA+1) = STARTING ADDRESS OF RRAD. * * EXIT (NA, NA+1) = UPDATED *CCC* ADDRESS. * (PBF) = *PP* BUFFER READ FROM DEVICE. * * ERROR *ERR* CALLED IF READ IS INCOMPLETE. * (A) = ERROR MESSAGE ADDRESS. * * USES NONE. * * CALLS ERR, FCN, SAL, SNA. RNP SUBR ENTRY/EXIT RJM SFL RJM FCN ACN CH LDD NC READ BLOCK SHN 1 IAM PBF,CH NJN RNP1 IF INCOMPLETE INPUT DCN CH LDD NC ADVANCE CCC ADDRESS RAD NA+1 SHN -14 RAD NA UJN RNPX RETURN RNP1 LDC =C* DCC - INPUT INCOMPLETE.* LJM ERR PROCESS ERROR SFL SPACE 4,10 SFL - SET CCC ADDRESS AND LENGTH. * * ENTRY (NC) = LENGTH. * (NA, NA+1) = CCC START ADDRESS. * * EXIT (A) = READ MEMORY FUNCTION. * TO *ERR* IF CHANNEL HUNG. * * CALLS ERR, FCN.
SFL SUBR ENTRY/EXIT
LDC FSLA ADD NA RJM FCN ISSUE LOAD ADDRESS + UPPER 6 OF ADDRESS ACN CH LDD NA+1 OAN CH OUTPUT LOWER 12 OF ADDRESS
SFL1 ADN 1
MJN SFL3 IF TIMEOUT IJM SFL3,CH IF INACTIVE FJM SFL1,CH IF NOT ACCEPTED LDD NC OAN CH OUTPUT LENGTH
SFL2 ADN 1
MJN SFL3 IF HUNG FJM SFL2,CH IF NOT ACCEPTED DCN CH LDC FSRD CCC READ MEMORY FUNCTION CODE UJN SFLX RETURN
SFL3 LDC =C* DCC - LOAD ADDRESS ERROR.*
LJM ERR PROCESS ERROR
WCB SPACE 4 WCB - WRITE CIRCULAR BUFFER. * * WCB WRITES THE *PP* BUFFER TO THE *CM* CIRCULAR BUFFER. * * ENTRY (WC) = *CM* WORD COUNT TO WRITE. * (FT, FT+1) = FIRST WORD ADDRESS OF *CM* BUFFER. * (LM, LM+1) = LIMIT OF *CM* BUFFER. * (DA+3, DA+4) = START ADDRESS OF DATA WRITE. * (IR+3, IR+4) = INPUT *FET* ADDRESS. * (PBF) = *PP* BUFFER TO BE WRITTEN. * * EXIT (DA+3, DA+4) = UPDATED BUFFER POINTER. * INPUT *FET* IN POINTER UPDATED AND BUFFER WRITTEN. * * USES T1, T2. WCB4 LDD IR+3 WRITE IN SHN 6 ADD RA SHN 6 ADD IR+4 ADN 2 CWD DA WCB SUBR ENTRY/EXIT LDD WC SET FIRST PART WORD COUNT STD T1 LDD LM CHECK WORDS TO LIMIT SBD DA+3 SHN 14 ADD LM+1 SBD DA+4 SBD WC PJN WCB1 IF NOT LESS THAN WORD COUNT RAD T1 SET FIRST PART WORD COUNT WCB1 LDD DA+3 WRITE FIRST PART SHN 6 ADD RA SHN 6 ADD DA+4 CWM PBF,T1 LDD T1 ADVANCE IN RAD DA+4 SHN -14 RAD DA+3 LMD LM SHN 14 LMD DA+4 LMD LM+1 ZJN WCB2 IF IN = LIMIT LJM WCB4 RETURN WCB2 LDD WC SET SECOND PART WORD COUNT SBD T1 STD T2 ZJN WCB3 IF NO SECOND PART LDD T1 SET PP BUFFER ADDRESS SHN 2 ADD T1 ADC PBF STM WCBA LDD FT WRITE SECOND PART SHN 6 ADD RA SHN 6 ADD FT+1 CWM ,T2 WCBA EQU *-1 WCB3 LDD T2 SET OUT
ADD FT+1 STD DA+4 SHN -14 ADD FT STD DA+3 LJM WCB4 RETURN SPACE 4
COMMON DECKS. *CALL COMPC2D *CALL COMPDV5 TITLE INITIALIZATION. PRS SPACE 4 PRS - PRESET PROGRAM.
PRS SUBR ENTRY/EXIT
RJM CRS CHECK RECALL STATUS NJN PRS0 IF RECALL SET LDC =C* DCC INCORRECT REQUEST.* LJM ABT
PRS0 RJM CUA CHECK USER ACCESS
ZJN PRS1 IF VALID USER LDD CM ZJN PRS1 IF ENGINEERING ACCESS ALLOWED LDC =C* DCC - INCORRECT USER ACCESS.* LJM ABT ABORT JOB
PRS1 LDD CP CHECK ORIGIN TYPE
ADN JOTW CRD CM LDD CM+3 LPN 77 LMC SYOT ZJN PRS2 IF SYSTEM ORIGIN LDC =C* DCC - INCORRECT ORIGIN TYPE.* LJM ABT ABORT
PRS2 LDC NWC SET CCC WORD COUNT
STD NC LDD IR+3 CHECK ADDRESS LPN 37 SHN 14 ADD IR+4 ADN 5 SHN -6 SBD FL MJN PRS3 IF ADDRESS IN RANGE LDC =C* DCC - PARAMETER ADDRESS ERROR.* LJM ABT ABORT
PRS3 RJM SBP SET BUFFER PARAMETERS
LDN ZERL CLEAR DATA ADDRESS CRD DA LDD IR+3 READ REQUEST LPN 37 SHN 6 ADD RA SHN 6 ADD IR+4 CRD RQ LDD RQ+3 SET CCC FWA STD NA+1 LDD RQ+2 LPN 77 STD NA LDD RQ+2 SET CCC LWA+1 SCN 77 SHN 6 LMD RQ+1 SHN 6 STD NL+1 SHN -14 STD NL *CCC* LIMIT ADDRESS SHN 14 ADD NL+1 ZJN PRS4 IF ADDRESS OUT OF RANGE ADC -0#4001 MJN PRS5 IF IN RANGE
PRS4 LDC =C* DCC - LWA+1 OUT OF RANGE.*
LJM ABT ABORT
PRS5 LDD NA CHECK *CCC* ADDRESS
SBD NL SHN 14 ADD NA+1 SBD NL+1 MJN PRS6 IF *LWA+1* GREATER THAN *FWA* LDC =C* DCC - FWA .GE. LWA+1.* LJM ABT ABORT
PRS6 LDD RQ+4 CHECK *DCC* REQUEST
SHN -1 SBN 2 MJN PRS7 IF VALID REQUEST LDC =C* DCC - INCORRECT REQUEST.* LJM ABT ABORT
PRS7 LDD RQ SET DATA CHANNEL
LPN 77 STD T2 SAVE DATA CHANNEL RJM SEC SEARCH FOR EQUIPMENT ON CHANNEL NJN PRS8 IF EQUIPMENT FOUND LDC =C* DCC - NOT CONTROLWARE CHANNEL.* LJM ABT ABORT JOB
PRS8 LDN 0
STD T3
PRS9 LDM PRSB,T3
ZJN PRS10 IF END OF TABLE LMD CM+3 COMPARE DEVICE MNEMONIC ZJN PRS11 IF CCC CONTROLWARE CHANNEL AOD T3 UJN PRS9 CONTINE SEARCH
PRS10 LDC =C* DCC - INCORRECT CCC CONTROLWARE TYPE.*
LJM ABT ABORT JOB
PRS11 LDD T3 CHECK FOR CMTS
SBN EMTD PJN PRS11.1 IF NOT MT/NT DEVICE TYPE LDD CM LPN 4 ZJN PRS10 IF NOT 698 (CMTS) EQUIPMENT
PRS11.1 LDD T2 RESTORE DATA CHANNEL
RJM SDC SET DATA CHANNEL NJN PRS12 IF CHANNEL AVAILABLE LDC =C* DCC - CHANNEL NOT AVAILABLE.* LJM ERR PROCESS ERROR
PRS12 AOM ERRA SET CHANNEL RESERVED
DCN CH RJM CCC CLEAR *CCC* COUPLER LJM PRSX RETURN
TABLE OF CCC CONTROLLER TYPES. PRSB BSS 0 CON 2RMT 698 (CMTS) CON 2RNT 698 (CMTS) EMTD EQU *-PRSB END OF MT/NT DEVICE TYPES CON 2RCT CTS CON 2RAT ATS CON 2RSS 7990 CON 2RLX 5870 CON 2RLY 5970 CON 2RDC 895/7165 CON 0 END OF TABLE CCC SPACE 4,20 CCC - CLEAR CCC COUPLER. * * CCC ISSUES THE CLEAR COUPLER FUNCTION AND CHECKS CHANNEL * ACTIVITY. AN ERROR MESSAGE IS RETURNED IF THE FUNCTION * DOES NOT TAKE OR THE CHANNEL REMAINS FULL. * * ENTRY CHANNEL INSTRUCTIONS MODIFIED. * * EXIT CHANNEL DISCONNECTED. * * ERROR *ERR* CALLED IF CHANNEL REMAINS FULL. * (A) = ERROR MESSAGE ADDRESS. * * USES T1. * * CALLS ERR, FCN.
CCC SUBR ENTRY/EXIT
LDC 1000 STD T1 ACN CH EJM CCC2,CH IF CHANNEL EMPTY OR INACTIVE IAN CH DCN CH ACN CH
CCC1 EJM CCC2,CH IF CHANNEL EMPTY OR INACTIVE
IAN CH SOD T1 NJN CCC1 IF NOT CHANNEL FULL TIMEOUT LDC =C* DCC - CONSTANT CHANNEL FULL.* LJM ERR PROCESS ERROR
CCC2 DCN CH
UJN CCCX RETURN
SBP SPACE 4 SBP - SET BUFFER PARAMETERS. * * THIS ROUTINE READS THE *CM* CIRCULAR BUFFER POINTERS. * THE POINTERS ARE CHECKED TO BE WITHIN THE JOB-S FIELD LENGTH * AND IN AND OUT WITHIN THE BUFFER LIMITS. THE JOB IS * ABORTED IF THESE CONDITIONS ARE NOT MET. * * ENTRY (IR+3, IR+4) = FILE *CM* ADDRESS OF *FET*. * * EXIT (FT, FT+1) = FIRST WORD ADDRESS OF BUFFER. * (IN, IN+1) = INPUT POINTER TO BUFFER. * (OT, OT+1) = OUTPUT POINTER TO BUFFER. * (LM, LM+1) = LIMIT OF BUFFER. * * ERROR *ABT* CALLED IF BUFFER POINTER OUT OF RANGE. * (A) = ERROR MESSAGE ADDRESS. * * USES CM - CM+4. * * CALLS ABT. SBP SUBR ENTRY/EXIT LDD IR+3 READ LIMIT SHN 6 ADD RA SHN 6 ADD IR+4 ADN 4 READ LIMIT CRD LM-3 SBN 1 READ OUT CRD OT-3 SBN 1 READ IN CRD IN-3 SBN 1 READ FIRST CRD CM LDD LM SET LIMIT LPN 77 STD LM LDD CM+4 SET FIRST STD FT+1 LDD CM+3 LPN 77 STD FT SCN 37 CHECK UPPER PART OF ADDRESSES ADD LM SCN 37 ADD IN SCN 37 ADD OT SCN 37 NJN SBP1 LDD LM CHECK LIMIT SHN 14 ADD LM+1 SBN 1 SHN -6 SBD FL PJN SBP1 IF LIMIT GREATER THAN *FL* LDD FT CHECK FIRST SBD LM SHN 14 ADD FT+1 SBD LM+1 MJN SBP2 IF FIRST LESS THAN LIMIT SBP1 LDC =C* DCC - CIRCULAR BUFFER ADDRESS ERROR.* LJM ABT ABORT JOB SBP2 LDD IN CHECK IN SBD FT SHN 14 ADD IN+1 SBD FT+1 MJN SBP1 IF IN LESS THAN FIRST LDD IN SBD LM SHN 14 ADD IN+1 SBD LM+1 PJN SBP1 IF IN NOT LESS THAN LIMIT LDD OT CHECK OUT SBD FT SHN 14 ADD OT+1 SBD FT+1 MJN SBP1 IF OUT LESS THAN FIRST LDD OT SBD LM SHN 14 ADD OT+1 SBD LM+1 PJN SBP1 IF OUT NOT LESS THAN LIMIT LJM SBPX RETURN SDC SPACE 4 SDC - SET DATA CHANNEL. * * THIS ROUTINE MODIFIES ALL INSTRUCTIONS WHICH CONTAIN A * CHANNEL NUMBER. THE CHANNEL IS RESERVED. * * ENTRY (A) = CHANNEL NUMBER. * * EXIT (A) = ZERO IF CHANNEL NOT RESERVED. * = NON-ZERO IF CHANNEL RESERVED. * (T4) = CHANNEL. * CHANNEL INSTRUCTIONS MODIFIED. * * USES CM - CM+4, T1 - T4. * * MACROS MONITOR, PAUSE.
SDC SUBR ENTRY/EXIT
STD T4 LPN 37 STD T1 SET CHANNEL LDC CTCH SET CHANNEL TABLE ADDRESS STD T2
SDC1 LDI T2 SET NEXT INSTRUCTION ADDRESS
ZJN SDC2 IF ALL CHANNELS MODIFIED STD T3 LDI T3 SCN 37 LMD T1 STI T3 AOD T2 UJN SDC1 MODIFY NEXT INSTRUCTION
SDC2 LDN CTALL CHANNEL TABLE LENGTH
STD T2 LDC 0 FWA OF CHANNEL STATUS TABLE
SDCB EQU *-1
CRM PBF,T2 LDM PBF,T1 LMC 7777 ZJN SDC6 IF CHANNEL NOT AVAILABLE
SDC5 LDD T4 SET CHANNEL NUMBER
STD CM+1 MONITOR CCHM REQUEST CHANNEL LDD CM+2 NJN SDC7 IF ASSIGNED LDN 77 DELAY SBN 1 NJN *-1 IF MORE DELAY PAUSE LDD CM+1 ZJN SDC5 IF NO ERROR FLAGS
SDC6 LDN 0 RETURN WITH A = 0 SDC7 LJM SDCX RETURN SEC SPACE 4,15 SEC - SEARCH FOR EQUIPMENT ON CHANNEL. * * ENTRY (T2) = CHANNEL. * * EXIT (A) = 0, IF NO EQUIPMENT FOUND. * (CM - CM+4) = *EQDE* WORD OF EQUIPMENT ON CHANNEL. * * USES T3, T5, CM - CM+4. * * MACROS SFA. SEC SUBR ENTRY/EXIT LDK ESTP CRD CM LDD CM+2 LAST EST ORDINAL + 1 STD T3 LDN NOPE-1 SET EST ORDINAL STD T5 SEC1 AOD T5 CHECK NEXT EST LMD T3 ZJN SECX IF END OF EST SFA EST,T5 ADK EQDE CRD CM LDD CM+1 CHECK FIRST CHANNEL ZJN SEC2 IF FIRST CHANNEL NOT PRESENT LPN 77 LMD T2 ZJN SEC3 IF FIRST CHANNEL MATCHES SEC2 LDD CM+2 CHECK SECOND CHANNEL ZJN SEC1 IF SECOND CHANNEL NOT PRESENT LPN 77 LMD T2 NJN SEC1 IF SECOND CHANNEL DOES NOT MATCH SEC3 LDN 1 INDICATE SUCCESS UJN SECX RETURN SPACE 4,10 PRESET COMMON DECKS.
*CALL COMPCRS *CALL COMPCUA CIT SPACE 4 CIT - CHANNEL INSTRUCTION TABLE. CHTB CH PBF SPACE 4 PBF - PPU BUFFER.
USE BUFFER
PBF BSS 0 *PP* BUFFER TO READ/WRITE *CCC* PBFL MAX NWC*2,CTALL*5
ERRNG 7777-PBF-PBFL PP OVERFLOW SPACE 4,10 OVERFLOW END
</file>