cdc:nos2.source:opl871:1to
Table of Contents
1TO
Table Of Contents
- [00007] 1TO - TERMINAL INPUT/OUTPUT.
- [00009] TERMINAL INPUT/OUTPUT.
- [00085] TEPS - TABLE OF ENTRY POINTERS (SORTED).
- [00157] MAIN ROUTINE.
- [00255] DPP - DROP PP.
- [00263] ABT - ABORTS IAF.
- [00283] CAB - COMPUTE ALLOWABLE BLOCKSIZE.
- [00320] CKN - CHECK THE NEXT EQUIPMENT.
- [00351] CUA - CHECK UNIT ACTIVITY.
- [00448] PRC - PROCESS *1RO* CALL.
- [00502] IDP - INPUT DATA PROCESSING.
- [00582] DPB - DUMP POT BUFFER TO DISK.
- [00618] RPD - READ POT DATA TO PPU BUFFER.
- [00689] SLB - SET SECTOR LINKAGE BYTES.
- [00741] WES - WRITE EOI SECTOR.
- [00778] PRESET.
- [00780] PRS - PRESET.
- [01001] CEQ - CHECK EQUIPMENT.
- [01029] GNE - GET NEXT ENTRY.
- [01091] POR - PROCESS OUTPUT REQUEST.
- [01163] RIT - REQUEST INPUT TRACKS.
- [01223] SEP - SORT ENTRY POINTERS.
- [01287] OUTPUT PROCESSING SUBROUTINES.
- [01303] ODP - OUTPUT DATA PROCESSING.
- [01367] PRO - SUBROUTINES.
- [01368] OUTPUT PROCESSING SUBROUTINES.
- [01370] ANR - ASSURE NETWORK REQUIREMENTS.
- [01432] LDP - LOAD DATA INTO POTS.
- [01537] RAS - READ ADDITIONAL SECTORS.
- [01598] RDD - READ DATA FROM DISK.
- [01655] SDI - SEARCH DISK FOR BEGINNING LINE.
- [01725] SSE - SEARCH SECTOR FOR LINE NUMBER OF LAST LINE IN BUFFER.
- [01775] SUL - SET UP LINE NUMBER.
- [01861] UDA - UPDATE DISK ADDRESSES.
- [01919] UTT - UPDATE TERMINAL TABLE.
- [01995] BUFFERS.
Source Code
- 1TO.txt
- IDENT 1TO,ITO
- PERIPH
- BASE MIXED
- SST
- *COMMENT 1TO - TERMINAL INPUT/OUTPUT.
- COMMENT COPYRIGHT CONTROL DATA SYSTEMS INC. 1992.
- TITLE 1TO - TERMINAL INPUT/OUTPUT.
- SPACE 4
- *** 1TO - TERMINAL INPUT/OUTPUT.
- *
- * R. E. TATE. 70/09/13.
- * L. G. ALEXANDER. 77/04/01.
- * A. J. KOMOR. 77/11/01.
- * L. K. TUTTLE 81/11/02.
- SPACE 4
- *** 1TO IS CALLED BY *IAF* TO PROCESS A QUEUE OF
- * REQUESTS FOR TERMINAL INPUT AND OUTPUT WHICH REQUIRE
- * DISK ACCESSES. THE QUEUE PASSED TO *1TO* IS SORTED IN
- * ORDER OF REQUEST TYPE, INPUT FIRST. *1TO* WILL ACCESS THE
- * EJT TO OBTAIN DISK INFORMATION. REQUESTS OF EACH
- * TYPE ARE THEN PROCESSED BY EQUIPMENT AND TRACK TO
- * MINIMIZE DISK TIME. IF THERE ARE REQUESTS FOR MORE THAN
- * ONE MASS STORAGE DEVICE, THE ENTRIES ARE PROCESSED ON
- * A DEVICE BASIS IN ORDER OF AVAILABLE CHANNELS.
- *
- * *1TO* MAY ALSO BE CALLED BY *1RO* TO PROCESS THE
- * FIRST BUFFER OF DATA ON A ROLLOUT.
- *
- * UPON *1TO* COMPLETION, THE REQUEST QUEUE IS
- * RETURN TO IAF. THE UPDATED POT POINTERS IN
- * IT ARE USED TO DROP DUMPED SOURCE INPUT POTS, AND TO
- * ASSIGN FILLED OUTPUT DATA POTS.
- SPACE 4,20
- *** CALL.
- *
- *
- * FROM *IAF* -
- *
- *T 18/ *1TO*,6/ CP,12/ PP,6/ ,18/ RETURN ADDRESS
- *
- * CP IAF CONTROL POINT NUMBER.
- * PP POT POINTER TO FIRST POT OF REQUESTS.
- *
- *
- * CALL FROM *1RO*.
- *
- * 18/ *1TO*,6/ CP,24/ 0,12/ TN
- *
- * CP IAF CONTROL POINT NUMBER.
- * TN TERMINAL NUMBER / APPLICATION CONNECTION NUMBER.
- SPACE 4,20
- *** *IAF* REQUEST QUEUE FORMAT.
- *
- *
- * FORMAT WHEN CALLED.
- *
- *T, 6/ FT,6/ RT,12/ EJTO,12/ NP,12/ FP,12/ TN
- *
- * FT FILE TYPE.
- * 0 = PRIMARY FILE.
- * 1 = ROLLOUT FILE.
- * RT REQUEST TYPE.
- * 0 = DUMP INPUT TO PRIMARY FILE.
- * 1 = OUTPUT TO TERMINAL.
- * EJTO EJT ORDINAL OF JOB.
- * NP NUMBER OF POTS TO DUMP TO PRIMARY FILE (INPUT).
- * FP FIRST POT FOR EITHER INPUT OR OUTPUT.
- * TN TERMINAL NUMBER / APPLICATION CONNECTION NUMBER.
- *
- * THE REQUEST UNDERGOES SIGNIFICANT CHANGE IN PRESET.
- * THE ENTRY AND EXIT FORMATS FOR PRESET ARE FOUND IN PRESET
- * HEADER DOCUMENTATION.
- *
- *
- * FORMAT ON TERMINATION -
- *
- *T 6/ RT,6/ NP,12/ 0,12/ LP,12/ FP,12/ TN
- *
- * RT REQUEST TYPE.
- * NP NUMBER OF POTS FILLED (OUTPUT ONLY).
- * LP LAST POT TO DROP OR ASSIGN (0 IF NONE TO DROP).
- * FP FIRST POT OF INPUT OR FOR OUTPUT (0 IF NONE TO DROP).
- * TN TERMINAL NUMBER / APPLICATION CONNECTION NUMBER.
- TEPS SPACE 4,10
- ** TEPS - TABLE OF ENTRY POINTERS (SORTED).
- *
- * EACH ENTRY CONSISTS OF TWO BYTES -
- * THE FIRST BYTE CONTAINS THE POINTER TO THE REQUEST IN EBUF.
- * THE SECOND BYTE CONTAINS
- * FOR INPUT - THE SECTOR NUMBER OF THE CURRENT EOI.
- * FOR OUTPUT - THE WORD COUNT IN THE CURRENT SECTOR.
- SPACE 4,10
- ** ABORT CONDITIONS.
- *
- * *1TO* WILL ABORT *IAF* IF THE FOLLOWING CONDITIONS ARE
- * ENCOUNTERED. A DAYFILE MESSAGE * 1TO ABORT NN, PPPP.* WILL
- * BE ISSUED WHERE *NN* = ERROR CODE AND *PPPP* = PARAMETER
- * POT POINTER.
- *
- * INPUT REQUESTS AFTER OUTPUT REQUESTS FROM IAF. (NN = 1)
- * NO REQUESTS IN THE QUEUE. (NN = 2)
- * REQUEST FOR A NON - MASS STORAGE DEVICE. (NN = 3)
- * *UTEM* REJECT OR UNEXPECTED EJT STATUS. (NN = 4)
- * ENTRY COUNT LOST WHILE SORTING QUEUE. (NN = 5)
- * PC = 0 ON SOURCE DUMP. (NN = 6)
- * PP = 0 ON OUTPUT REQUEST. (NN = 7)
- SPACE 4
- ** ASSEMBLY VARIABLES FOR DEFINITION COMMON DECKS.
- WEI$ EQU 1 DEFINE VARIABLE BUFFER (FOR *COMPWEI*)
- SPACE 4
- ** DEFINITION COMMON DECKS.
- SPACE 4
- *CALL,COMPMAC
- *CALL COMSEJT
- *CALL,COMSMSP
- *CALL COMSJRO
- *CALL COMSPIM
- *CALL,COMSREM
- *CALL COMSTCM
- *CALL COMSWEI
- SPACE 4
- **** DIRECT LOCATION ASSIGNMENTS.
- SPACE 2
- S3 EQU 17 SCRATCH CELL
- FS EQU 20 - 24 FILE STATUS BYTES (5 LOCATIONS)
- CN EQU 25 - 31 TERMINAL TABLE VROT WORD (5 LOCATIONS)
- TN EQU 32 TERMINAL NUMBER
- TT EQU 33 - 34 TERMINAL TABLE ADDRESS (2 LOCATIONS)
- CT EQU 35 POT LENGTH
- SC EQU 36 NUMBER OF WORDS IN CURRENT SECTOR
- LW EQU 41 LAST WORD IN PREVIOUS SECTOR
- S2 EQU 42 SCRATCH CELL (OUTPUT PROCESSING)
- LN EQU 43 - 47 LINE NUMBER (5 LOCATIONS)
- IN EQU LN INPUT REQUEST COUNTER (PRS)
- OT EQU LN+1 OUTPUT REQUEST COUNTER (PRS)
- EC EQU LN+2 ENTRY COUNT (PRS)
- NW EQU 50 USER BLOCKSIZE IN CM WORDS.
- WL EQU 51 NUMBER OF WORDS OF OUTPUT IN BUFFER.
- PP EQU 52 POT POINTER
- PL EQU 53 LENGTH OF LAST POT
- S1 EQU PL SCRATCH CELL
- PC EQU 54 NUMBER OF POTS TO BE DUMPED
- PA EQU 60 - 61 POT ADDRESS (2 LOCATIONS)
- BC EQU 62 BUFFER COUNT
- BA EQU 63 CURRENT FWA OF BUFFER
- EP EQU 64 CURRENT ENTRY POINTER
- CB EQU 65 CONTROL BYTE INDEX
- WC EQU 66 WORD COUNT (POSITION) IN CURRENT SECTOR
- ****
- EJECT
- 1TO TITLE MAIN ROUTINE.
- ** 1TO - MAIN ROUTINE.
- *
- * THIS ROUTINE PROCESSES A LIST OF REQUESTS ON ONE OR MORE
- * EQUIPMENTS. IF MORE THAN ONE EQUIPMENT IS PRESENT ALL
- * LIST ENTRIES ARE SEARCHED FOR THE ONE WITH THE SMALLEST
- * DEVICE ACTIVITY. ONCE THIS SELECTION IS MADE THE
- * INPUT/OUTPUT OPERATION IS PERFORMED AND THE CHANNEL IS
- * RELEASED. FINALLY THE ENTRY PROCESSING IS COMPLETED BY
- * EITHER TERMINATING THE SOURCE PROCESSING (IF INPUT
- * PROCESSING) OR FILLING POTS (IF OUTPUT PROCESSING).
- * AFTER ALL ENTRIES IN THE LIST HAVE BEEN PROCESSED *IAF*
- * IS SENT NOTIFICATION THAT ALL ENTRIES ARE COMPLETE.
- ORG PPFW
- ITO LJM PRS PRESET
- ITO1 LDM ITOB REMAINING INPUT REQUESTS
- ADN 0 2TO LOADED FLAG
- ITOA EQU *-1
- NJN ITO2 IF LOADING NOT NECESSARY
- RJM DRC DROP RESERVED CHANNEL
- EXECUTE 2TO
- AOM ITOA SET 2TO LOADED
- LDN 0 SET NO EQUIPMENT
- STD T5
- ITO2 RJM CKN CHECK NEXT EQUIPMENT
- ZJN ITO3 IF SAME EQUIPMENT
- RJM CUA CHECK UNIT ACTIVITY
- * PROCESS ENTRY.
- ITO3 SETMS IO,(ND)
- LDM 4,EP SET TERMINAL NUMBER
- STD TN
- RJM STA SET TERMINAL TABLE ADDRESS
- ADN VROT
- CRD CN *VROT*
- LDM 3,EP SET POT POINTER
- STD PP
- LDM 1,EP SET TRACK
- STD T6
- STD FS+2
- LDM 2,EP SET SECTOR
- STD T7
- STD FS+3
- LDM CKNB SET EXTRA PARAMETER
- STD T1
- LDM 1,T1
- STD WC
- LDC 0 CHECK INPUT REQUEST COUNT
- ITOB EQU *-1
- ZJN ITO4 IF NO INPUT REQUESTS REMAINING
- LDD WC SET CURRENT EOI
- STD T7
- RJM IDP INPUT DATA PPOCESSING
- SOM ITOB DECREMENT INPUT REQUEST COUNT
- LDN 0 SET INPUT REQUEST PROCESSED
- UJN ITO5 CONTINUE PROCESSING QUEUE
- ITO4 RJM /2TO/ODP PROCESS OUTPUT REQUEST
- LDC 100
- ADD PC
- * RETURN HERE AT END OF INPUT/OUTPUT PROCESSING.
- ITO5 STI EP SET REQUEST TYPE
- LDN 0 SET REQUEST PROCESSED
- STM 1,EP
- SOM TCRQ DECREMENT TOTAL COUNT OF REQUESTS
- ZJN ITO6 IF NO MORE ENTRIES
- LJM ITO1 PROCESS NEXT ENTRY
- * ALL ENTRIES ARE COMPLETED AND NOTIFICATION SENT TO *IAF*.
- ITO6 ENDMS
- LDD IA RETURN ENTRIES AND COMPLETE
- CRD IR
- ITO7 RJM SPA WRITE REQUEST POT
- CWM EBUF,CT
- ITOC EQU *-1 REQUEST QUEUE ADDRESS
- LDN VCPC*5
- RAM ITOC
- RJM UPP UPDATE POT POINTER
- NJN ITO7 IF MORE POTS TO WRITE
- LDD IA
- CRD IR
- LDN 0 SET COMPLETION FOR *IAF*
- STD IR
- STD IR+1
- LDD IR+3
- SHN 6
- ADD RA
- SHN 6
- ADD IR+4
- CWD IR
- * UJN DPP DROP PP
- DPP SPACE 4,10
- ** DPP - DROP PP.
- DPP MONITOR DPPM DROP PP
- LJM PPR EXIT TO PP RESIDENT
- TRQC SPACE 4,10
- TCRQ CON 0 TOTAL COUNT OF ALL REQUESTS
- ABT SPACE 4,10
- ** ABT - ABORTS IAF.
- *
- * ENTRY (A) = ERROR CODE.
- * PARAMETER POT POINTER SET IN MESSAGE.
- *
- * CALLS C2D, DFM.
- *
- * MACROS MONITOR.
- ABT SUBR ENTRY
- RJM C2D
- STM ABTA+6
- LDC ABTA ISSUE * 1TO ABORT NN, PPPP.*
- RJM DFM DAYFILE MESSAGE
- MONITOR ABTM
- LJM PPR EXIT TO PP RESIDENT
- ABTA DATA C* 1TO ABORT NN, PPPP.*
- CAB SPACE 4,10
- ** CAB - COMPUTE ALLOWABLE BLOCKSIZE.
- *
- * ENTRY (TN) = TERMINAL NUMBER.
- *
- * EXIT (A) = BLOCKSIZE IN CM WORDS.
- * (NW) = SAME AS (A).
- *
- * USES CM - CM+4.
- CAB SUBR ENTRY/EXIT
- LDM PRCA
- SBD TN
- PJN CAB1 IF MUX TERMINAL
- LDD RA
- SHN 6
- ADK VMST
- CRD CM
- LDD CM+1
- SHN 6
- ADD RA
- SHN 6
- ADD CM+2
- ADD TN
- CRD CM
- LDD CM+3
- SHN -6
- LPN 37
- SHN 3
- UJN CAB2 SET NETWORK TERMINAL BLOCKSIZE
- CAB1 LDK VOPL*VCPC SET MUX TERMINAL BLOCKSIZE
- CAB2 SBN 2 ALLOW FOR LINKAGE WORDS
- STD NW
- UJN CABX RETURN
- TTL 1TO - GENERAL SUBROUTINES.
- CKN SPACE 4,15
- ** CKN - CHECK THE NEXT EQUIPMENT.
- *
- * ENTRY (T5) = CURRENT EST ORDINAL.
- * (CKNB) = POINTER TO LAST ENTRY ADDRESS.
- *
- * EXIT (A) .EQ. 0, IF THE SAME EST ORDINAL.
- * (A) .NE. 0, NO REQUEST OF SAME TYPE AND EQ FOUND.
- * (T5) = CURRENT EST ORDINAL.
- * (EP) = POINTER TO NEXT REQUEST.
- *
- * USES EP.
- CKN2 LDN 1 SET NOT FOUND
- CKN SUBR ENTRY/EXIT
- LDD T5
- ZJN CKN2 IF NO EQUIPMENT TO MATCH
- LDN 2 ADVANCE TO NEXT ENTRY
- RAM CKNB
- LMM CUAD
- ZJN CKN2 IF END OF REQUESTS OF SAME TYPE
- LDM * NEXT ENTRY TO PROCESS - RESET BY *CUA*
- CKNB EQU *-1
- STD EP
- LDM 1,EP
- ZJN CKN2 IF NEXT ENTRY ALREADY PROCESSED
- LDD T5 CURRENT EQUIPMENT
- LMI EP
- UJN CKNX EXIT
- CUA SPACE 4,10
- ** CUA - CHECK UNIT ACTIVITY.
- * DETERMINES THE BEST EQUIPMENT TO PROCESS ENTRIES FOR WITHIN
- * AN INPUT OR OUTPUT GROUP. THIS DETERMINATION IS BASED ON
- * MASS STORAGE ACTIVITY.
- *
- * ENTRY (ITOB) = INPUT REQUESTS REMAINING.
- * (CUAA) = FWA OF OUTPUT REQUEST GROUP.
- * (CUAB) = LWA+1 OF ALL REQUESTS.
- * (CUAC) = FWA OF GROUP TO BE PROCESSED.
- * (CUAD) = LWA+1 OF GROUP TO BE PROCESSED.
- *
- * CUAA - CUAD CONTAIN POINTERS INTO *TEPS*.
- *
- * EXIT (EP) = CORRECT ENTRY POINTER.
- * (T5) = CORRECT EQUIPMENT.
- * (CKNB) = POINTER TO ENTRY POINTER IN *TEPS*.
- *
- * USES T1 - T5, CM - CM+4, EP.
- *
- * CALLS DRC.
- *
- * MACROS ENDMS, SFA.
- CUA SUBR ENTRY/EXIT
- RJM DRC DROP RESERVED CHANNEL
- LDM ITOB
- NJN CUA1 IF INPUT GROUP NOT PROCESSED
- LDC TEPS SET FWA OF OUTPUT REQUEST GROUP
- CUAA EQU *-1 (SET BY PRS)
- STM CUAC
- LDC TEPS SET LWA+1 OF ALL ENTRIES
- CUAB EQU *-1 (SET BY PRS)
- STM CUAD
- CUA1 LDC TEPS START SEARCH AT BEGINNING OF GROUP
- CUAC EQU *-1
- STD T3
- LCN 0 INITIALIZE EQUIPMENT
- STD T5
- STD T2 INITIALIZE ACTIVITY COUNT
- * PROCESS ENTRY.
- CUA2 LDI T3 SET ENTRY ADDRESS
- STD EP
- LDM 1,EP
- ZJN CUA3 IF ENTRY ALREADY PROCESSED
- LDI EP
- LMD T5
- ZJN CUA3 IF THIS EQUIPMENT ALREADY CHECKED
- LMD T5
- STD T5 CHECK ACTIVITY
- SFA EST
- ADK EQDE
- CRD CM
- LDD CM+4
- SHN 3
- ADN DALL
- CRD CM
- LDD CM
- SBD T2
- PJN CUA3 IF NOT BETTER THAN PREVIOUS BEST
- RAD T2
- LDD EP
- STD T1
- LDD T3 MOVE TEPS POINTER
- STD T4
- LDD T2
- ZJN CUA4 IF NO ACTIVITY ON DEVICE
- CUA3 LDN 2 CHECK NEXT ENTRY
- RAD T3
- LMC * LWA+1 OF CURRENT GROUP
- CUAD EQU *-1
- NJP CUA2 IF MORE ENTRIES
- LDD T1 SET BEST ENTRY
- STD EP
- LDI EP
- STD T5
- CUA4 LDD T4
- STM CKNB
- LJM CUAX EXIT
- DRC SPACE 4,10
- ** DRC DROP RESERVED CHANNEL.
- *
- * ENTRY (T5) = EST ORDINAL IF CHANNEL RESERVED.
- *
- * MACROS ENDMS.
- DRC SUBR ENTRY/EXIT
- LDD T5
- ZJN DRCX IF NO CHANNEL RESERVED
- ENDMS
- LDN 0
- STD T5
- UJN DRCX EXIT
- PRC SPACE 4,10
- ** PRC - PROCESS *1RO* CALL.
- *
- * ENTRY (TN) = TERMINAL NUMBER.
- * (WC) = 0.
- * (PRCA) = LAST MUX TERMINAL NUMBER.
- *
- * EXIT TO *DPP*.
- *
- * USES CM - CM+4.
- *
- * CALLS LDP, UTT.
- *
- * MACROS DELAY, EXECUTE, MONITOR, PAUSE.
- PRC EXECUTE 2TO LOAD OUTPUT OVERLAY
- AOM /2TO/UTTA SKIP THE *UDA* CALL
- LDC IROB
- RJM /2TO/LDP LOAD POTS
- RJM /2TO/UTT UPDATE TERMINAL TABLE
- LDD PC PUT POT COUNT IN REQUEST
- STM PRCB+1
- PRC1 LDD MA MAKE OUTPUT ASSIGNMENT
- CWM PRCB,ON
- LDK ZERL
- CRD CM
- MONITOR TSEM
- LDD CM+1
- ZJP DPP IF *IAF* INACCESSIBLE OR ERROR
- LMC 7777
- NJP DPP IF REQUEST ACCEPTED
- PAUSE ST
- LDC 3600 *TSEM* QUEUE FULL - DELAY AND RETRY
- STD T1
- PRC2 DELAY
- SOD T1
- ZJN PRC1 IF TIME TO REISSUE REQUEST
- UJN PRC2 CONTINUE TO DELAY
- PRCA CON 0 LAST MUX TERMINAL
- PRCB VFD 12/VASO,12/,12/,12/,12/
- SPACE 4,10
- ** COMMON DECKS.
- *CALL COMPC2D
- *CALL COMPSPA
- *CALL COMPSTA
- EJT$ EQU 1 SELECT EJT PROCESSOR
- IFP$ EQU 1 SELECT REMOTE INITIALIZATION CODE
- *CALL COMPGFP
- *CALL COMPUPP
- IDP TITLE INPUT DATA PROCESSING.
- ** IDP - INPUT DATA PROCESSING.
- *
- * ENTRY (PP) = POT POINTER.
- * (T5 - T7) = DISK PARAMETERS.
- * DRIVER LOADED.
- *
- * EXIT CHANNEL RELEASED.
- * (TESA) = UPDATED DISK INFORMATION.
- * INPUT DATA APPENDED TO PRIMARY FILE.
- *
- * USES BA, LP, PC, PL, PP.
- *
- * CALLS ABT, DPB, RPD, SLB, WES.
- *
- * MACROS ENDMS, MONITOR, SETMS.
- IDP SUBR ENTRY/EXIT
- LDM 2,EP SET LENGTH OF DATA IN LAST POT
- SHN -11
- ADC LDNI
- STM IDPA
- LDM 2,EP SET NUMBER OF POTS TO PROCESS
- LPC 777
- STM IDPB
- NJN IDP1 IF POTS TO DUMP
- * ABORT IAF ON ILLEGAL POT COUNT.
- ENDMS
- LDN 6
- RJM ABT ABORT IAF
- * SET POT PARAMETERS.
- IDP1 LDC IBUF BUFFER ADDRESS
- STD BA
- IDPA LDN 0 LENGTH OF DATA IN LAST POT
- STD PL
- LDC 0 NUMBER OF POTS TO PROCESS
- IDPB EQU *-1
- STD PC SET POT COUNT
- ADC -BUFP
- MJN IDP2 IF ROOM IN ONE BUFFER
- STM IDPB
- LDC BUFP ONE BUFFER FULL
- STD PC
- LDN 0 PROCESS ALL OF LAST POT
- STD PL
- UJN IDP3 PROCESS BUFFER
- IDP2 LDN 0 SET COMPLETE
- STM IDPB
- * APPEND INPUT TO PRIMARY FILE.
- IDP3 RJM RPD READ POT DATA TO PP BUFFER
- SETMS IO,(ND),IBUF
- LDC IBUF
- STD BA
- RJM SLB SET SECTOR LINKAGE BYTES
- LDC IBUF RESET BUFFER ADDRESS
- STD BA
- RJM DPB DUMP BUFFER TO DISK
- LDM IDPB
- ZJN IDP4 IF PROCESS COMPLETE
- LJM IDP1 LOOP FOR NEXT BUFFER
- IDP4 RJM WES WRITE EOI SECTOR
- * UPDATE TERMINAL TABLE.
- AOD CN+4 SET TERMINAL TABLE COMPLETE
- LDD TT UPDATE TERMINAL TABLE
- SHN 14
- ADD TT+1
- ADN VROT
- CWD CN
- LJM IDPX RETURN
- DPB SPACE 4,10
- ** DPB - DUMP POT BUFFER TO DISK.
- *
- * ENTRY (BA) = BUFFER ADDRESS.
- * (BC) = BUFFER COUNT.
- * (T4) = CHANNEL.
- * (T5) = EQUIPMENT.
- * (T6) = CURRENT TRACK.
- * (T7) = CURRENT SECTOR.
- *
- * EXIT (T6) = CURRENT TRACK AFTER WRITE.
- * (T7) = NEXT SECTOR AFTER WRITE.
- *
- * USES BA, BC, T6, T7.
- *
- * CALLS POS, WDS.
- DPB SUBR ENTRY/EXIT
- DPB1 LDD BA WRITE DISK SECTOR
- LMC WCSF WRITE CONSECUTIVE SECTOR
- RJM WDS
- MJN DPBX IF FATAL DISK ERROR
- AOD T7 ADVANCE SECTOR
- LDI BA SET NEXT SECTOR TO WRITE
- SHN 6
- PJN DPB2 IF NOT NEW TRACK
- SHN -6
- STD T6
- LDN 0
- STD T7
- DPB2 LDC 502 ADVANCE BUFFER POINTER
- RAD BA
- SOD BC DECREMENT BUFFER COUNT
- NJN DPB1 IF NOT LAST SECTOR
- UJN DPBX RETURN
- RPD SPACE 4,15
- ** RPD - READ POT DATA TO PPU BUFFER.
- *
- * ENTRY (BA) = FWA PP BUFFER.
- * (PP) = FIRST POT POINTER.
- * (PC) = POT COUNT.
- * (PL) = LENGTH OF DATA IN LAST POT.
- *
- * EXIT ((BA)) = LOADED WITH DATA FROM POTS.
- * (BC) = NUMBER OF SECTORS READ (BUFFER COUNT).
- * REQUEST QUEUE ENTRY UPDATED.
- * WORD COUNT SET IN SECTOR CONTROL BYTES.
- *
- * USES BA, BC, T3, WC.
- *
- * CALLS SPA, UPP.
- RPD7 AOD BC COUNT BUFFER
- LDD WC SET WORD COUNT IN SECTOR CONTROL BYTES
- STI BA
- LDM RPDA ADVANCE BUFFER ADDRESS
- STD BA
- LDD PC
- NJN RPD1 IF NOT LAST POT
- LDD T3 SET POTS TO DROP IN QUEUE ENTRY
- STM 2,EP
- NJN RPDX IF POTS TO DROP
- STM 3,EP CLEAR FIRST POT POINTER
- RPD SUBR ENTRY/EXIT
- LDN 0 INITIALIZE BUFFER COUNT
- STD BC
- STD T3
- RPD1 AOD BA SET FWA OF DATA IN BUFFER
- ADN 1
- STM RPDA
- LDN 0 RESET WORD COUNT
- STD WC
- * READ NEXT POT TO BUFFER.
- RPD2 RJM SPA SET POT ADDRESS
- CRM *,CT
- RPDA EQU *-1
- SOD PC DECREMENT POT COUNT
- NJN RPD3 IF NOT LAST POT
- LDD PL
- NJN RPD4 IF POT LENGTH PASSED
- RPD3 LDD PP SET LAST POT TO DROP
- STD T3
- * ADVANCE TO NEXT POT.
- LDN VCPC
- RPD4 RAD WC ADVANCE WORD COUNT
- LDN VCPC*5 ADVANCE READ ADDRESS
- RAM RPDA
- RJM UPP UPDATE POT POINTER
- LDD PP
- ZJN RPD6 IF END OF CHAIN
- LDD WC
- SHN -6
- NJN RPD5 IF FULL SECTOR
- LDD PC
- NJN RPD2 IF NOT LAST POT
- RPD5 LJM RPD7 TERMINATE SECTOR
- RPD6 STD PC TERMINATE DATA PROCESSING
- STM IDPB
- UJN RPD5 TERMINATE SECTOR
- SLB SPACE 4,10
- ** SLB - SET SECTOR LINKAGE BYTES.
- *
- * NOTE - IT IS ASSUMED THAT THE SECTOR LIMIT OF THE
- * DEVICE WHICH THE PRIMARY FILE RESIDES UPON IS LESS THAN
- * THE MAXIMUM NUMBER OF SECTORS CONTAINED IN *BUFF*.
- *
- * ENTRY (BA) = BUFFER ADDRESS.
- * (T5) = EQUIPMENT.
- * (T6) = TRACK.
- * (T7) = SECTOR.
- *
- * EXIT ((BA)) = LINKAGE BYTES SET.
- * (BC) = TRUNCATED, IF ADDITIONAL TRACK UNAVAILABLE.
- *
- * USES CM - CM+4, T1, T2, T3.
- SLB SUBR ENTRY/EXIT
- LDM SLM SET LAST BUFFER ON THIS TRACK
- SBN 1
- STD T3
- SBD T7 SET NUMBER OF SECTORS REMAINING ON TRACK
- STD SC
- SBD BC
- PJN SLB1 IF ROOM ON PRESENT TRACK
- RJM SNT SET TRACK LINK
- STD CM+4
- NJN SLB1 IF TRACK ASSIGNED
- LDD SC TRUNCATE DATA
- STD BC
- * SET LINKAGE BYTE.
- SLB1 LDD T7 SET SECTOR INDEX
- STD T1
- LDD BC SET BUFFER COUNT
- STD T2
- SLB2 LDD T1
- LMD T3
- NJN SLB3 IF NOT LAST BUFFER ON THIS TRACK
- STD T1 RESET SECTOR INDEX
- LDD CM+4 SET NEXT TRACK IN LINKAGE
- UJN SLB4
- SLB3 AOD T1 ADVANCE SECTOR INDEX
- SLB4 STI BA SET SECTOR LINKAGE
- LDC 502 ADVANCE BUFFER ADDRESS
- RAD BA
- SOD T2
- NJN SLB2 IF NOT LAST BUFFER
- LJM SLBX RETURN
- WES SPACE 4,10
- ** WES - WRITE EOI SECTOR.
- *
- * ENTRY (T5) = EQUIPMENT.
- * (T6) = CURRENT TRACK.
- * (T7) = CURRENT SECTOR.
- * (TN) = TERMINAL NUMBER.
- *
- * EXIT EOI SECTOR WRITTEN, UPDATED DISK INFORMATION SET.
- *
- * CALLS STA, WEI.
- WES SUBR ENTRY/EXIT
- RJM STA SET TERMINAL TABLE ADDRESS
- ADN VUIT GET EJT
- CRD CM
- LDD CM+4
- SFA EJT
- ADN PRFE
- CRD CM
- LDD CM+4 SET FIRST TRACK OF FILE IN EOI SECTOR
- STM BUFF+FTEI
- LDC BUFF WRITE EOI
- RJM WEI
- UJN WESX RETURN
- SPACE 4,10
- ** COMMON DECKS.
- *CALL COMPSNT
- IF DEF,FA,1
- ERR *FA* MUST NOT BE DEFINED FOR *COMPWEI*
- *CALL COMPWEI
- IBUF SPACE 4,10
- ** INPUT BUFFER SPACE.
- IBUF EQU * INPUT BUFFER FWA
- TITLE PRESET.
- PRS SPACE 4,10
- ** PRS - PRESET.
- *
- * ENTRY REQUEST QUEUE FORMAT FOR IAF REQUEST QUEUE -
- *
- *T 4/ ,1/ PFIC,1/ FT,6/ RT,12/ EJTO,12/ NP,12/ FP,12/ TN
- *
- * PFIC = PRIMARY FILE INITIAL CALL FLAG.
- * 1 = PRIMARY FILE INITIAL CALL.
- * 0 = PRIMARY OR ROLLOUT FILE CONTINUATION CALL.
- * FT = FILE TYPE.
- * 0 = PRIMARY FILE.
- * 1 = ROLLOUT FILE.
- * RT = REQUEST TYPE.
- * 0 = DUMP INPUT TO PRIMARY FILE.
- * 1 = OUTPUT TO TERMINAL.
- * EJTO = EJT ORDINAL OF JOB.
- * NP = NUMBER OF POTS TO DUMP TO PRIMARY FILE (INPUT).
- * FP = FIRST POT FOR EITHER INPUT OR OUTPUT.
- * TN = TERMINAL NUMBER.
- *
- * EXIT REQUEST QUEUE FORMAT FOR IAF REQUEST QUEUE -
- *
- *T, 12/ EQ,12/ TK,12/ P1,12/ P2,12/ TN
- *
- * EQ = EST ORDINAL.
- * TK = TRACK NUMBER.
- * INPUT - CURRENT EOI.
- * OUTPUT - FIRST SECTOR OF OUTPUT.
- * - FIRST CALL ON LIST, FROM *PRFE* IN EJT.
- * - CONTINUATION CALL, FROM SCHEDULE FIELD IN EJT.
- * P1 = INPUT - WORD COUNT IN LAST POT, THREE TOP BITS.
- * - NUMBER OF POTS TO DUMP, NINE BOTTOM BITS.
- * OUTPUT - FIRST SECTOR OF OUTPUT.
- * - FIRST CALL ON LIST, 1.
- * - CONTINUATION CALL, FROM SCHEDULE FIELD IN EJT.
- * P2 = FIRST POT POINTER.
- * INPUT - POT TO BEGIN DUMPING TO PRIMARY FILE.
- * OUTPUT - POT TO WRITE OUTPUT INTO.
- * TN = TERMINAL NUMBER.
- *
- * *TEPS* ENTRY -
- *
- * 12/ PTR,12/ EXP
- *
- * PTR = POINTER TO ENTRY.
- * EXP = EXTRA PARAMETER.
- * INPUT - SECTOR NUMBER OF CURRENT EOI.
- * OUTPUT - WORD COUNT IN CURRENT SECTOR OF OUTPUT, FROM
- * SCHEDULE FIELD ON CONTINUATION CALL.
- PRS RJM IFP INITIALIZE *COMPGFP*
- LDN VCPC SET LENGTH OF A POT
- STD CT
- LDD RA
- SHN 6
- ADN VNTP
- CRD T5 SET FWA OF NETWORK TERMINALS
- LDD T5+2
- SBN 1 SET LAST MULTIPLEXOR TERMINAL ADDRESS
- PJN PRS0 IF NETWORK TERMINALS DEFINED
- LDD RA GET MAXIMUM USER COUNT
- SHN 6
- ADK VMNL
- CRD T5
- LDD T5+4
- ADK VPST-1 NUMBER OF PSEUDO TERMINALS
- PRS0 STM PRCA STORE LAST MUX TERMINAL NUMBER
- LDD IR+2
- SHN -6 FORMAT MESSAGE
- RJM C2D CONVERT DIGITS
- STM ABTA+10
- LDD IR+2
- RJM C2D
- STM ABTA+11
- LDD IR+2
- NJP PRS4 IF IAF CALL
- * PROCESS *1RO* CALL.
- LDC PRCB SET ENTRY POINTER
- STD EP
- LDD IR+4 SET TERMINAL NUMBER
- STD TN
- STM PRCB+4
- RJM STA SET TERMINAL TABLE ADDRESS
- ADK VUIT
- CRD FS
- ADN VROT-VUIT
- CRD CN
- LDD CN+4 CHECK OUTPUT AVAILABLE
- SHN 21-4
- PJN PRS2 IF NO OUTPUT DATA
- * IF A FULL SECTOR OF DATA RESIDES IN THE *1RO* BUFFER AND IF
- * THE TERMINAL HAS A BLOCKSIZE OF GREATER THAN ONE SECTOR,
- * THEN *1TO* MUST MAKE A NULL OUTPUT ASSIGNMENT IN ORDER TO
- * AVOID SPLITTING WHAT COULD BE A LINE LESS THAN BLOCKSIZE
- * WORDS ACROSS TWO DOWNLINE BLOCKS BECAUSE THERE IS NO ROOM
- * IN THE BUFFER TO READ IN ADDITIONAL SECTORS.
- RJM CAB COMPUTE ALLOWABLE BLOCKSIZE
- LDM IROB+1
- STD WL
- SHN -6
- ZJN PRS1 IF ALL OUTPUT CONTAINED IN *1RO* BUFFER
- LDD WL
- SBD NW
- MJN PRS2 IF BLOCKSIZE EXCEEDS ONE SECTOR
- PRS1 LDK ZERL
- CRD CM
- LDD NW
- ADK 7+2 ADD ROUNDUP AND LINKAGE WORDS FACTORS
- SHN -3
- ERRNZ VCPC-10 CODE DEPENDS ON POT SIZE OF 10B
- STD CM+1
- MONITOR TGPM GET POTS
- LDD CM+1
- STD PP
- STM PRCB+3
- NJN PRS3 IF A POT WAS GIVEN
- PRS2 LJM PRC1 ASSIGN NULL OUTPUT
- PRS3 LMC 7777
- NJN PRS3.1 IF NOT A FUNCTION REJECT
- LDC 3600 REISSUE REQUEST AFTER DELAY
- STD T1
- PRS3.0 DELAY
- SOD T1
- NJN PRS3.0 IF NOT TIME TO REISSUE REQUEST
- UJN PRS1 TRY AGAIN
- PRS3.1 LDN 0
- STD WC
- SFA EJT,FS+4
- ADN SCHE
- CRD CM
- LDD CM+3 MOVE CURRENT TRACK
- STD FS+2
- LDD CM+4 MOVE CURRENT SECTOR
- STD FS+3
- LJM PRC ENTER MAIN LOOP FOR *1RO* CALL
- * PRESET IAF REQUEST QUEUE CALL.
- PRS4 RJM SPA SET POT ADDRESS (PP= IR+2)
- CRM EBUF,CT READ UP ENTRIES
- PRSA EQU *-1
- LDN VCPC*5 UPDATE POINTER
- RAM PRSA
- STD T2
- RJM UPP UPDATE POT POINTER
- NJN PRS4 IF MORE ENTRIES TO READ
- STM 1,T2 SET TERMINATOR BYTE
- STD IN INITIALIZE INPUT REQUEST COUNT
- STD OT INITIALIZE OUTPUT REQUEST COUNT
- STD EC INITIALIZE ENTRY COUNT
- LDC EBUF ENTRY POINTER
- STD EP
- PRS5 LDM 1,EP GET EJTO
- ZJN PRS10 IF ALL ENTRIES PROCESSED
- SFA EJT READ EJT
- ADN JSNE
- CRD CM
- ADN SCHE-JSNE
- CRD FS
- ADN PRFE-SCHE
- CRD CN
- LDI EP
- LPN 77
- ZJN PRS6 IF INPUT OPERATION
- * PROCESS OUTPUT REQUESTS.
- AOD OT COUNT OUTPUT REQUEST
- RJM POR PROCESS OUTPUT REQUEST
- UJN PRS7 COMPLETE PROCESSING
- * PROCESS INPUT REQUESTS.
- PRS6 AOD IN COUNT INPUT REQUEST
- LDD OT
- NJN PRS8 IF REQUESTS OUT OF ORDER
- RJM RIT RESERVE INPUT TRACKS
- * COMPLETE PROCESSING FOR BOTH REQUEST TYPES.
- PRS7 STM SNTB,EC SAVE SECTOR NUMBER OR WORD COUNT
- AOD EC
- LDN 5
- RAD EP
- UJN PRS5 LOOP FOR NEXT ENTRY
- PRS8 LDN 1 REQUEST OUT OF ORDER
- PRS9 RJM ABT ABORT
- * SET LWA AND REQUEST COUNTS.
- PRS10 LDD IN NUMBER OF INPUT REQUESTS
- STM ITOB
- SHN 1 * 2
- RAM CUAA SET FWA OF OUTPUT REQUEST POINTERS
- STM CUAD SET LWA+1 OF INPUT REQUEST POINTERS
- LDD IN
- SHN 2
- ADD IN
- RAM GNEC LWA+1 OF INPUT REQUEST GROUP
- LDD OT NUMBER OF OUTPUT ENTRIES
- ADD IN TOTAL OF ALL REQUESTS
- NJN PRS11 IF REQUESTS
- LDN 2 NO REQUESTS
- UJN PRS9 ABORT
- PRS11 STM TCRQ SET TOTAL NUMBER OF REQUESTS
- SHN 1 * 2
- RAM CUAB
- RJM SEP SORT ENTRY POINTERS
- LDN 0 INITIALIZE EST ORDINAL
- STD T5
- LJM ITO1 ENTER MAIN LOOP
- CEQ SPACE 4,10
- ** CEQ - CHECK EQUIPMENT.
- *
- * ENTRY (A) = EST ORDINAL.
- * (EP) = ENTRY ADDRESS.
- *
- * EXIT ((EP)) = EST ORDINAL+4000.
- *
- * USES T0 - T4.
- *
- * CALLS ABT.
- *
- * MACROS SFA.
- CEQ SUBR ENTRY/EXIT
- LMC 4000 SET NOT SORTED ENTRY FLAG
- STI EP SAVE EST
- LMC 4000
- ZJN CEQ1 IF NOT MASS STORAGE
- SFA EST READ EST ENTRY
- ADK EQDE
- CRD T0
- LDD T0
- SHN 21-13
- MJN CEQX IF MASS STORAGE
- CEQ1 LDN 3 NOT MASS STORAGE
- RJM ABT ABORT
- GNE SPACE 4,20
- ** GNE - GET NEXT ENTRY.
- *
- * ENTRY (GNEA) = IF OUTPUT GROUP, NUMBER OF INPUT ENTRIES.
- * (GNEB) = FWA FOR ENTRIES IN THIS GROUP.
- * (GNEC) = LWA+1 FOR ENTRIES IN THIS GROUP.
- *
- * EXIT (T5) = SELECTED EQUIPMENT.
- * (T6) = SELECTED TRACK.
- * (CN+1) = POINTER TO SELECTED ENTRY.
- * (CN+2) = ENTRY NUMBER.
- * ENTRY MARKED AS PROCESSED.
- *
- * CALLS ABT.
- GNE SUBR ENTRY/EXIT
- GNEA LDN 0 (PROCESSING INPUT)
- * LDN N (PROCESSING OUTPUT, N = NUMBER OF INPUTS)
- STD CN+3 ENTRY NUMBER TO START AT
- LCN 0
- STD T5
- STD T6
- LDC EBUF FWA ENTRIES
- GNEB EQU *-1
- STD CN
- GNE1 LDI CN
- SHN 21-13
- PJN GNE2 IF ALREADY PROCESSED
- SHN 13-21
- LPC 3777 SET EQUIPMENT
- STD T0
- SBD T5
- MJN GNE4 IF BETTER CHOICE
- ZJN GNE3 IF SAME EQUIPMENT
- GNE2 AOD CN+3 INCREMENT ENTRY COUNT
- LDN 5
- RAD CN
- LMC EBUF
- GNEC EQU *-1
- NJN GNE1 IF GROUP NOT COMPLETED
- LDD T5 MARK ENTRY PROCESSED
- STI CN+1
- LMC 7777
- ZJN GNE5 IF NO ENTRY FOUND
- LJM GNEX EXIT
- GNE3 LDM 1,CN CHECK TRACK
- SBD T6
- PJN GNE2 IF NOT A BETTER CHOICE
- GNE4 LDD T0 UPDATE EQ
- STD T5
- LDM 1,CN UPDATE TK
- STD T6
- LDD CN UPDATE POINTER
- STD CN+1
- LDD CN+3 SAVE ENTRY NUMBER
- STD CN+2
- UJN GNE2 CHECK NEXT ENTRY
- GNE5 LDN 5 NO ENTRY FOUND
- RJM ABT ABORT
- POR SPACE 4,10
- ** POR - PROCESS OUTPUT REQUEST.
- *
- * ENTRY (FS - FS+4) = EJT ENTRY WORD *SCHE*.
- * (CN - CN+4) = EJT ENTRY WORD *PRFE*.
- * (CM - CM+4) = EJT ENTRY WORD *JSNE*.
- *
- * EXIT ((EP)) = FORMATTED REQUEST - EQ,TK,SC,FP,TN.
- * (A) = WORD COUNT.
- *
- * USES CM - CM+4.
- *
- * CALLS ABT, CEQ.
- *
- * MACROS MONITOR.
- POR SUBR ENTRY/EXIT
- LDI EP CHECK FILE TYPE
- SHN 21-6
- PJN POR2 IF NOT ROLLOUT FILE OUTPUT
- LDD FS INSERT RO EQ INTO REQUEST
- RJM CEQ CHECK EQUIPMENT
- POR1 LDD FS+3 SET CURRENT TRACK
- STM 1,EP
- LDD FS+4 SET CURRENT SECTOR
- STM 2,EP
- LDD FS+2 SET WORD COUNT
- LPN 77
- UJN PORX RETURN
- POR2 LPN 1
- LMC LDNI
- STM PORA
- LDD CN+3 SET PRIMARY FILE EQUIPMENT
- RJM CEQ CHECK PRIMARY FILE EQUIPMENT
- LDN 0 CONTINUATION CALL
- PORA EQU *-1 (PRIMARY FILE INITIAL CALL)
- ZJN POR1 IF CONTINUATION CALL
- * START NEW OUTPUT ON PRIMARY FILE.
- LDM 1,EP SET EJT ADDRESS
- SFA EJT
- STD CM+4
- SHN -14
- STD CM+3
- LDD CN+4 PRESET CT=FT
- STM 1,EP
- LDN FSMS PRESET CURRENT SECTOR = 1
- STM 2,EP
- LDD MA SET I/O JOB STATUS
- CWM PORB,ON
- LDN 1
- STD CM+1
- MONITOR UTEM
- LDD CM+1
- NJN POR4 IF OPERATION NOT COMPLETE
- LDD MA CHECK OLD STATUS
- CRD CM
- LDD CM+4
- SBN IOJS
- ZJN POR3 IF IOJS STATUS
- SBN DOJS-IOJS
- NJN POR4 IF NOT DOJS STATUS
- POR3 LJM PORX EXIT
- POR4 LDN 4
- RJM ABT ABORT
- PORB VFD 6/JSNE,6/5,6/1,42/IOJS
- RIT SPACE 4,10
- ** RIT - REQUEST INPUT TRACKS.
- *
- * ENTRY (CN - CN+4) = EJT ENTRY WORD *PRFE*.
- *
- * EXIT (A) = SECTOR NUMBER OF EOI ON THE DEVICE.
- * TRT RESET TO NEW EOI.
- *
- * USES T0, T4, T5, CM - CM+4.
- *
- * CALLS ABT, CEQ, SEI.
- *
- * MACROS MONITOR.
- RIT SUBR ENTRY/EXIT
- LDD CN+4 MOVE PRIMARY FILE FIRST TRACK
- STD T6
- LDD CN+3 MOVE PRIMARY FILE EQUIPMENT
- STD T5
- RJM CEQ CHECK EQUIPMENT
- * CHECK FOR ROOM ON DISK.
- LDM 2,EP COMPUTE SECTOR COUNT
- SHN -11
- STD T0
- LDM 2,EP
- LPC 777
- SHN 3
- ADD T0
- ADN 77
- SHN -6 SECTOR COUNT
- STD T4
- RJM SEI SET T7
- LDD T6 SAVE CURRENT EOI POSITION
- STD CM+2
- STM 1,EP
- LDD T5
- STD CM+1
- LDM SLM
- SBN 1
- SBD T7
- SBD T4
- PJN RIT1 IF ROOM ON TRACK
- LMC -0 SET SECTORS NEEDED
- STD CM+4
- SHN -14
- STD CM+3
- MONITOR RTCM
- UJN RIT2 CHECK NEXT ENTRY
- RIT1 LDD T7 SET NEW EOI POSITION
- ADD T4
- STD CM+3
- LDC -4000
- RAD CM+2
- MONITOR DTKM
- RIT2 LDD T7
- LJM RITX EXIT
- SEP SPACE 4,10
- ** SEP - SORT ENTRY POINTERS.
- *
- * ENTRY (EP) = LWA+1 ALL REQUESTS.
- * (IN) = INPUT REQUEST COUNT.
- * (OT) = OUTPUT REQUEST COUNT.
- *
- * EXIT ENTRIES SORTED BY EQUIPMENT AND TRACK, POINTERS
- * STORED IN THAT ORDER IN *TEPS*.
- *
- * USES T3, T4, T7, CN - CN+4.
- *
- * CALLS GNE.
- SEP SUBR ENTRY/EXIT
- LDC TEPS
- STD T7
- SEP1 LDD IN
- ZJN SEP4 IF NO INPUT REQUESTS, SWITCH TO OUTPUT
- SEP2 RJM GNE GET NEXT ENTRY
- LDD CN+1 SET POINTER TO ENTRY
- STI T7
- AOD T7 MOVE EOI SECTOR OR WORD COUNT
- LDM SNTB,CN+2
- STI T7
- AOD T7
- SOD IN
- NJN SEP2 IF MORE ENTRIES OF THIS TYPE
- LDD OT CHECK OUTPUT REQUEST COUNT
- ZJN SEPX IF NO MORE REQUESTS
- * SWITCH TO OUTPUT REQUESTS.
- LDM ITOB
- RAM GNEA
- LDM GNEC
- STM GNEB
- SEP4 LDD EP
- STM GNEC
- LDD OT
- STD IN
- LDN 0
- STD OT
- UJN SEP1 SORT OUTPUT REQUESTS
- SPACE 4,10
- SPACE 4,10
- ** COMMON DECKS.
- *CALL COMPSEI
- IFP HERE
- BUFFERS SPACE 4,10
- ** PRESET BUFFERS.
- USE BUFFERS
- SNTB EQU * SECTOR NUMBER / WORD COUNT
- ERRPL SNTB+VRQB*VCPC-EBUF OVERFLOW INTO ENTRY BUFFER
- SPACE 4,10
- OVERFLOW
- TTL 1TO - TERMINAL INPUT/OUTPUT.
- TITLE OUTPUT PROCESSING SUBROUTINES.
- QUAL 2TO
- IDENT 2TO,TTOX OUTPUT PROCESSING ROUTINES.
- *COMMENT 1TO - OUTPUT PROCESSING ROUTINES.
- COMMENT COPYRIGHT CONTROL DATA SYSTEMS INC. 1992.
- SPACE 4,10
- *** *2TO* IS LOADED TO PROVIDE THE ROUTINES NECESSARY FOR
- * PROCESSING DOWNLINE OUTPUT.
- ORG IDP+5
- TTO SUBR ENTRY/EXIT
- UJN TTOX RETURN
- TTL 1TO/2TO - OUTPUT DATA PROCESOR.
- ODP TITLE OUTPUT DATA PROCESSING.
- ** ODP - OUTPUT DATA PROCESSING.
- *
- * ENTRY (PP) = POT POINTER.
- * (EP) = POINTER TO ENTRY TO PROCESS.
- * (T4 - T7) = DISK INFORMATION.
- * (FS+2) = TRACK NUMBER OF FIRST SECTOR TO READ.
- * (FS+3) = SECTOR NUMBER OF FIRST SECTOR TO READ.
- * (WC) = POSITION TO START AT IN FIRST SECTOR.
- *
- * EXIT (T5) = EST ORDINAL.
- *
- * USES T1, BA, CB, WC, CM - CM+4, LN - LN+4.
- *
- * CALLS CAB, LDP, SDI, SPA, SUL, UTT.
- ODP SUBR ENTRY/EXIT
- LDC BUFF SET BUFFER ADDRESS
- STD BA
- LDC EBUF-2 SET CONTROL BYTE TABLE ADDRESS
- STD CB
- RJM CAB COMPUTE ALLOWABLE BLOCKSIZE
- LDD PP
- ZJP ODP5 IF NO POTS SUPPLIED
- RJM SPA SET POT ADDRESS OF USER TEXT POT
- CRD LN READ UP LINE NUMBER
- LDN LN CONVERT LINE NUMBER TO BINARY
- STD T1
- RJM SUL
- LDD CM
- SHN 14
- ADD CM+1
- ZJN ODP1 IF START AT BEGINNING OF FILE
- LMC -0 SET LINE NUMBER TO SEARCH ON
- STM SSEA+1
- STM SDIA+1
- SHN -14
- LMC ADCI
- STM SSEA
- STM SDIA
- RJM SDI SEARCH DISK FOR LINE NUMBER
- UJN ODP4 TRANSFER LINE TO POTS
- ODP1 RJM RDD READ THE FIRST SECTOR OF DATA
- PJN ODP2 IF NOT AN EMPTY FILE
- LDN 0
- STD WL
- UJN ODP4 SEND A *0014* BYTE ONLY
- ODP2 STD SC SAVE SECTOR WORD COUNT
- SBD WC
- PJN ODP3 IF POINTER .LT. WC (ONLY VALID CONDITION)
- LDN 0 RESET WORD COUNT (NEEDED FOR RECOVERY)
- STD WC
- ODP3 RJM RAS READ ADDITIONAL SECTORS UP TO BLOCKSIZE
- ODP4 LDC BUFF
- RJM LDP LOAD POTS
- RJM UTT UPDATE TERMINAL TABLE
- LDI EP RESTORE EST ORDINAL
- STD T5
- LJM ODPX RETURN
- ODP5 LDN 7 NO POT POINTER FOUND
- RJM ABT ABORT
- TITLE PRO - SUBROUTINES.
- TITLE OUTPUT PROCESSING SUBROUTINES.
- ANR SPACE 4,10
- ** ANR - ASSURE NETWORK REQUIREMENTS.
- *
- * *ANR* ENSURES THAT NO MORE THAN BLOCKSIZE WORDS OF DATA ARE
- * EVER SENT TO THE TERMINAL IN A SINGLE DOWNLINE BLOCK. IF
- * THERE ARE LESS THAN BLOCKSIZE WORDS OF DATA REMAINING, ALL
- * DATA IS SENT. IF THERE ARE BLOCKSIZE OR MORE WORDS OF DATA,
- * *ANR* MAKES SURE THAT AS MANY WHOLE LINES AS POSSIBLE ARE
- * SENT WITHOUT EXCEEDING THE BLOCKSIZE LIMIT. A PARTIAL LINE
- * IS ONLY SENT IN THE CASE WHERE THE FIRST LINE OF DATA
- * IN THE BUFFER IS LONGER THAN BLOCKSIZE WORDS.
- *
- * ENTRY (BA) = BUFFER ADDRESS.
- * (NW) = USER BLOCKSIZE IN CM WORDS.
- * (WL) = NUMBER OF WORDS LOADED IN BUFFER.
- *
- * EXIT (A) = NUMBER OF WORDS TO SEND TO THE TERMINAL.
- * (NW) = SAME AS (A).
- * (CN+4) = OUTPUT AVAILABLE FLAG UPDATED.
- *
- * USES S1.
- ANR3 LDD NW
- ANR SUBR ENTRY/EXIT
- LDD WL
- SBD NW
- PJN ANR1 IF NUMBER WORDS IN BUFFER .GE. BLOCKSIZE
- LCN VOPR CLEAR OUTPUT AVAILABLE FLAG
- RAD CN+4
- LDD WL SEND ALL THE DATA
- STD NW
- UJN ANRX RETURN
- * ADJUST THE NUMBER OF WORDS TO SEND TO THE TERMINAL TO
- * INCLUDE AS MANY COMPLETE LINES AS EXIST IN THE FIRST
- * BLOCKSIZE WORDS. IF NO COMPLETE LINES ARE FOUND,
- * (LINE IS LONGER THAN BLOCKSIZE WORDS) THEN SEND THE
- * FIRST BLOCKSIZE-1 WORDS OF THE LINE.
- ANR1 LDM PRCA
- SBD TN
- PJN ANR3 IF MUX TERMINAL
- LDD NW CHECK BACKWARDS THROUGH DATA FOR EOL
- STD WL
- ADD WC
- SHN 2
- ADD NW
- ADD WC
- ADD BA
- ADN 1
- STD S1
- ANR2 LDI S1
- ZJN ANR3 IF EOL FOUND
- LCN 5
- RAD S1
- SOD NW
- NJN ANR2 IF MORE WORDS LEFT TO CHECK
- SOD WL
- STD NW
- LJM ANRX SEND (BLOCKSIZE - 1) WORDS
- LDP SPACE 4,10
- ** LDP - LOAD DATA INTO POTS.
- *
- * ENTRY (A) = BUFFER ADDRESS.
- * (WC) = WORD INDEX INTO FIRST SECTOR.
- * (PP) = FIRST POT TO FILL.
- * (EP) = ENTRY POINTER.
- * (NW) = USER BLOCKSIZE IN CM WORDS.
- * (WL) = NUMBER OF WORDS LOADED IN BUFFER.
- *
- * EXIT (WL) = NUMBER OF WORDS TRANSFERRED TO POTS.
- * (CN+4) = OUTPUT AVAILABLE FLAG UPDATED IF RAN OUT
- * OF POTS.
- *
- * USES BA, CM - CM+4, S1, S2, T3.
- *
- * CALLS ANR, SPA, UPP.
- LDP SUBR ENTRY/EXIT
- STD BA SAVE BUFFER ADDRESS
- LDN 0 INITIALIZE POT COUNT
- STD PC
- LDN 2 SET TO LEAVE ROOM FOR HEADER WORDS
- STD S2
- RJM SPA PUT FIRST POT ADDRESS IN (PA - PA+1)
- LDK ZERL ZERO OUT SECOND WORD OF POT CHAIN HEADER
- CRD CM
- LDD PA
- SHN 14
- LMD PA+1
- ADN 1
- CWD CM
- RJM ANR ASSURE NETWORK REQUIREMENTS
- STD WL
- NJN LDP1 IF DATA AVAILABLE TO TRANSFER
- STD T3
- LDM 3,EP
- STM 2,EP
- AOD PC COUNT OUTPUT POT
- LJM LDP5 RETURN A *0014* CONTROL BYTE ONLY
- LDP1 LDD WC COMPUTE ADDRESS OF FIRST WORD TO TRANSFER
- SHN 2
- ADD WC
- ADD BA
- ADN 2
- STM LDPB
- LDK VCPC-2
- STD S1
- STD T3
- UJN LDP3 ENTER TRANSFER LOOP
- LDP2 LDD S1
- SHN 2
- ADD S1
- RAM LDPB
- LDK VCPC
- STD T3
- STD S1
- LDN 0 SET TO NOT LEAVE ROOM FOR HEADER WORDS
- STD S2
- RJM UPP
- NJN LDP3 IF MORE POTS AVAILABLE
- LDD CN+4 SET OUTPUT AVAILABLE TO RECALL *1TO*
- SCN VOPR
- LMN VOPR
- STD CN+4
- LDD WL
- SBD NW
- STD WL
- LJM LDPX RETURN
- LDP3 LDD NW
- SBD S1
- STD NW
- PJN LDP4 IF AT LEAST ONE FULL POT TO TRANSFER
- ADD S1
- STD T3
- LDN 0 SET END OF DATA
- STD NW
- LDP4 RJM SPA
- ADD S2
- CWM *,T3 TRANSFER WORDS INTO POT
- LDPB EQU *-1
- LDD PP
- STM 2,EP
- AOD PC COUNT OUTPUT POT
- LDD NW
- SBN 1
- PJP LDP2 IF MORE DATA TO TRANSFER
- LDD T3
- SBD S1
- ZJP LDPX IF DATA ENDS EXACTLY ON A POT BOUNDARY
- LDP5 LDK ZERL
- CRD CM
- LDN 2R"IB" ADD *0014* BYTE TO MARK END OF DATA
- STD CM
- LDD PA
- SHN 14
- LMD PA+1
- ADD T3
- ADD S2
- CWD CM
- LJM LDPX RETURN
- RAS SPACE 4,10
- ** RAS - READ ADDITIONAL SECTORS.
- *
- * *RAS* CONTINUES TO READ SECTORS OF DATA INTO THE BUFFER
- * UNTIL EITHER BLOCKSIZE WORDS HAVE BEEN LOADED OR UNTIL
- * NO DATA REMAINS TO BE READ.
- *
- * ENTRY (BA) = BUFFER ADDRESS.
- * (SC) = SECTOR WORD COUNT.
- * (WC) = POSITION IN FIRST SECTOR.
- * (NW) = USER BLOCKSIZE IN CM WORDS.
- * (CB) = INDEX INTO CONTROL BYTE TABLE.
- * (CN - CN+4) = *VROT* WORD.
- *
- * EXIT (CB) = UPDATED TO POINT TO CONTROL BYTES OF LAST
- * SECTOR LOADED.
- * (WL) = NUMBER OF WORDS OF OUTPUT IN BUFFER.
- *
- * USES BA, SC, S1.
- *
- * CALLS RDD.
- RAS SUBR ENTRY/EXIT
- LDD SC
- SBD WC
- STD WL
- LDD NW GET BLOCKSIZE
- ADD WC
- STD S1
- RAS1 LDD SC
- SBD S1
- PJN RASX IF THIS PRU SATISFIES REQUIREMENT
- LMC -0
- STD S1
- LDD SC
- SHN -6
- NJN RAS2 IF NOT EOR
- LDD CN+4
- SHN 21-6
- PJN RASX IF NOT LIST FILE
- RAS2 LDD SC UPDATE BUFFER ADDRESS
- SHN 2
- ADD SC
- RAD BA
- ADC 502+1
- SBD CB
- PJN RASX IF NO MORE BUFFER SPACE
- LCN 2
- RAD CB
- RJM RDD READ DISK
- STD SC
- MJP RASX IF EOI
- RAD WL
- UJN RAS1 PROCESS NEXT SECTOR
- * THE CALCULATION IN ROUTINE *RAS* FOR NUMBER OF CM WORDS
- * NEEDED FOR A NETWORK TERMINAL MUST BE ALTERED IF THE
- * NUMBER OF WORDS IN A POT IS CHANGED.
- ERRNZ VCPC-10 NUMBER OF WORDS PER POT
- RDD SPACE 4,15
- ** RDD - READ DATA FROM DISK.
- *
- * ENTRY (BA) = BUFFER ADDRESS.
- * (CB) = INDEX INTO CONTROL BYTE TABLE.
- * (T4) = CHANNEL.
- * (T5) = EQUIPMENT.
- * (T6) = TRACK.
- * (T7) = SECTOR.
- *
- * EXIT (A) = WORD COUNT = NEGATIVE IF EOI.
- * (T6 - T7) = UPDATED.
- *
- * USES T3, S2, S3.
- *
- * CALLS RDS.
- RDD4 LDN 0 SET EOI
- STI CB
- STM 1,CB
- RDD5 LCN 0 INDICATE EOI
- RDD SUBR ENTRY/EXIT
- LDI BA PRESERVE DATA OVERLAID BY CONTROL BYTES
- STD S2
- LDM 1,BA
- STD S3
- LDD BA READ SECTOR
- RJM RDS
- SHN -20 PRESERVE ERROR FLAG
- STD T3
- LDM 1,BA MOVE CONTROL BYTES TO TABLE
- STM 1,CB
- LDI BA
- STI CB
- LDD S2 RESTORE ORIGINAL DATA INTO PLACE
- STI BA
- LDD S3
- STM 1,BA
- LDD T3
- NJN RDD4 IF READ ERROR
- LDI CB
- NJN RDD1 IF NOT EOF
- LDM 1,CB
- ZJN RDD5 IF EOI
- RDD1 STD T7 UPDATE SECTOR
- SHN 6
- PJN RDD2 IF NOT NEW TRACK
- SHN -6
- STD T6 SET NEW TRACK
- LDN 0 RESET SECTOR
- STD T7
- RDD2 LDI CB
- ZJN RDD3 IF EOF
- LDM 1,CB
- RDD3 LJM RDDX RETURN
- SDI SPACE 4,15
- ** SDI - SEARCH DISK FOR BEGINNING LINE.
- *
- * ENTRY (T4) = CHANNEL.
- * (T5) = EQUIPMENT.
- * (T6) = TRACK.
- * (T7) = SECTOR.
- *
- * EXIT (WC)= POSITION OF BEGINNING OF LINE NUMBER
- * (WL) = NUMBER OF CM WORDS IN LINE.
- *
- * USES FS+2, FS+3, LW, SC, T1, T3.
- *
- * CALLS RAS, RDD, SSE, SUL.
- SDI9 LDN 0 INDICATE NO LINE FOUND
- STD WL
- SDI SUBR ENTRY/EXIT
- LDN 0 PRESET LAST WORD
- STD WC PRESET CM WORD COUNT
- SDI1 STD LW
- SDI2 LDD T6 SAVE DISK INFORMATION
- STD FS+2
- LDD T7
- STD FS+3
- RJM RDD READ DISK
- MJN SDI9 IF EOI
- ZJN SDI1 IF ZERO LENGTH SECTOR
- STD SC SAVE SECTOR WORD COUNT
- RJM SSE SEARCH SECTOR
- ZJN SDI2 IF NOT FOUND
- LDC BUFF+1
- STD T1
- LDD LW
- SDI3 ZJN SDI5 IF ZERO BYTE FOUND
- LDN 5
- SDI4 RAD T1
- AOD WC COUNT CM WORD
- LDI T1
- UJN SDI3 CHECK NEXT WORD
- SDI5 AOD T1
- RJM SUL SET LINE NUMBER
- LDD CM
- SHN 14
- ADD CM+1
- SDIA ADC * -(LINE NUMBER)
- PJN SDI6 IF FIND MADE
- LDN 5-1
- UJN SDI4 LOOP
- SDI6 RJM RAS READ ADDITIONAL SECTORS UP TO BLOCKSIZE
- LDD LN+4
- ZJN SDI10 IF NOT SINGLE LINE
- LDN 0
- STD T3
- SOD T1
- SDI7 LDN 5 FIND NUMBER OF WORDS IN THE LINE
- RAD T1
- AOD T3
- LDI T1
- ZJN SDI8 IF EOL FOUND
- LDD T3
- SBD WL
- MJN SDI7 IF MORE WORDS TO CHECK
- SDI8 LDD T3 SAVE NUMBER OF WORDS
- STD WL
- SDI10 LJM SDIX RETURN
- SSE SPACE 4,15
- ** SSE - SEARCH SECTOR FOR LINE NUMBER OF LAST LINE IN BUFFER.
- *
- * ENTRY (BUFF) = SECTOR TO SEARCH.
- * (A) = SECTOR WORD COUNT.
- * (LW) = LAST BYTE IN PREVIOUS SECTOR.
- *
- * EXIT (A) = 0, IF LINE NUMBER NOT FOUND.
- * (LW) = IF NUMBER FOUND, LAST BYTE OF PREVIOUS SECTOR.
- * IF NOT FOUND, LAST BYTE OF CURRENT SECTOR.
- *
- * USES LW, S2, T1, T2.
- *
- * CALLS SUL.
- SSE SUBR ENTRY/EXIT
- STD S2 SET PP WORD COUNT
- SHN 2
- RAD S2
- LDD LW SET LAST WORD FOR SEARCH
- STM BUFF+1
- LDC BUFF+1-5 SET STARTING SEARCH ADDRESS
- STD T2
- ADD S2
- STD T1
- * T1 CONTAINS THE ADDRESS OF BYTE FOUR OF THE SECOND TO LAST
- * CM WORD IN THE BUFFER.
- SSE1 LDI T1
- ZJN SSE3 IF ZERO BYTE FOUND
- LCN 5
- RAD T1
- LMD T2
- NJN SSE1 IF NOT AT BEGINNING OF BUFFER
- SSE2 LDM BUFF+1,S2 GET LAST BYTE IN BUFFER
- STD LW
- LDN 0 INDICATE FAILURE
- LJM SSEX EXIT
- SSE3 AOD T1
- RJM SUL SET UP FOUND LINE NUMBER
- LDD CM
- SHN 14
- ADD CM+1
- SSEA ADC * -(LINE NUMBER)
- MJN SSE2 IF DATA NOT IN THIS SECTOR
- LDN 1
- LJM SSEX EXIT
- SUL SPACE 4,10
- ** SUL - SET UP LINE NUMBER.
- *
- * *SUL* CONVERTS A LINE NUMBER UP TO FIVE DIGITS LONG
- * FROM DISPLAY CODE INTO BINARY.
- *
- * ENTRY (T1) = ADDRESS OF FIRST BYTE OF LINE NUMBER.
- *
- * EXIT (T1) = UNCHANGED.
- * (CM - CM+1) = RESULT.
- *
- * USES T2.
- SUL SUBR ENTRY/EXIT
- LDN 0 CLEAR RESULT
- STD CM
- STD CM+1
- LDI T1
- SHN -6
- SBN 1R+
- PJN SULX IF NON-NUMERIC
- ADN 1R+-1R0
- MJN SULX IF NON-NUMERIC
- STD CM+1
- LDI T1
- LPN 77
- SBN 1R+
- PJN SULX IF NON-NUMERIC
- ADN 1R+-1R0
- SUL1 MJN SULX IF NON-NUMERIC
- STD T2
- LDD CM+1
- SHN 2
- ADD CM+1
- SHN 1
- ADD T2
- STD CM+1
- LDM 1,T1
- SHN -6
- SBN 1R+
- SUL2 PJN SULX IF NON-NUMERIC
- ADN 1R+-1R0
- MJN SUL1 IF NON-NUMERIC
- STD T2
- LDD CM+1
- SHN 2
- ADD CM+1
- SHN 1
- ADD T2
- STD CM+1
- LDM 1,T1
- LPN 77
- SBN 1R+
- PJN SUL2 IF NON-NUMERIC
- ADN 1R+-1R0
- SUL3 MJN SUL1 IF NON-NUMERIC
- STD T2
- LDD CM+1
- SHN 2
- ADD CM+1
- SHN 1
- ADD T2
- STD CM+1
- SHN -14
- STD CM
- LDM 2,T1
- SHN -6
- SBN 1R+
- PJN SUL2 IF NON NUMERIC
- ADN 1R+-1R0
- MJN SUL3 IF NON-NUMERIC
- STD T2
- LDD CM
- SHN 14
- ADD CM+1
- SHN 10
- ADD CM
- SHN 14
- ADD CM+1
- SHN 1
- ADD T2
- STD CM+1
- SHN -14
- STD CM
- LJM SULX RETURN
- UDA SPACE 4,10
- ** UDA - UPDATE DISK ADDRESSES.
- *
- * ENTRY (FS+2) = TRACK NUMBER OF FIRST SECTOR LOADED.
- * (FS+3) = SECTOR NUMBER OF FIRST SECTOR LOADED.
- * (WC) = WORD INDEX INTO FIRST SECTOR.
- * (WL) = NUMBER OF WORDS TRANSFERRED TO POTS.
- * (CB) = INDEX TO CONTROL BYTES OF LAST SECTOR READ.
- *
- * EXIT (A) = 0, IF AT END OF DATA ON ROLLOUT FILE
- * (FS+2) = TRACK NUMBER OF SECTOR TO BE ACCESSED ON
- * THE NEXT CALL.
- * (FS+3) = SECTOR NUMBER OF SECTOR TO BE ACCESSED
- * ON THE NEXT CALL.
- * (WL) = CONTINUATION POINT IN SECTOR.
- UDA SUBR ENTRY/EXIT
- LCN 2 MARK END OF CONTROL BYTE TABLE
- RAD CB
- LDK 7777
- STI CB
- STM 1,CB
- LDC EBUF-2 RESET INDEX TO START OF TABLE
- STD CB
- LDD WC
- RAD WL
- UDA1 LDI CB
- ZJN UDA2 IF EOF
- LDD WL
- SBM 1,CB
- MJN UDAX IF UPDATE COMPLETE
- STD WL
- NJN UDA2 IF DATA DOES NOT END ON SECTOR BOUNDARY
- LDM 1,CB
- SHN -6
- NJN UDA2 IF LAST SECTOR WAS FULL
- LDD CN+4
- SHN 21-6
- MJN UDA2 IF LIST FILE
- LCN VOPR NO MORE DATA ON ROLLOUT FILE
- RAD CN+4
- LDN 0
- LJM UDAX EXIT
- UDA2 LDI CB UPDATE TRACK AND SECTOR
- NJN UDA3 IF NOT EOF
- LDM 1,CB
- UDA3 STD FS+3
- SHN 6
- PJN UDA4 IF NOT A NEW TRACK
- SHN -6
- STD FS+2
- LDN 0
- STD FS+3
- UDA4 LCN 2
- RAD CB
- LJM UDA1 CHECK NEXT SECTOR
- UTT SPACE 4,10
- ** UTT - UPDATE TERMINAL TABLE.
- *
- * ENTRY (CN - CN+4) = *VROT* WORD.
- * (FS+2) = TRACK NUMBER OF FIRST SECTOR LOADED.
- * (FS+3) = SECTOR NUMBER OF FIRST SECTOR LOADED.
- * (TT - TT+1) = TERMINAL TABLE ADDRESS.
- * (WC) = WORD INDEX INTO FIRST SECTOR.
- * (WL) = NUMBER OF WORDS TRANSFERRED TO POTS.
- * (CB) = INDEX INTO CONTROL BYTE TABLE.
- *
- * EXIT TERMINAL TABLE WORD *VROT* UPDATED.
- * SCHEDULE FIELD IN EJT UPDATED IF CONTINUATION.
- *
- * USES CM - CM+4.
- *
- * CALLS ABT, UDA.
- *
- * MACROS MONITOR.
- UTT SUBR ENTRY/EXIT
- LDD CN+4 CHECK FOR MORE OUTPUT
- SHN 21-4
- PJN UTT2 IF NO MORE OUTPUT
- LDN 0
- * LDN 1 (*1RO* CALL)
- UTTA EQU *-1
- NJN UTT1 IF NO NEED TO UPDATE DISK ADDRESSES
- RJM UDA
- ZJN UTT2 IF NO MORE OUTPUT
- UTT1 LDD FS+3 STORE SECTOR
- STD CM+4
- LDD FS+2 STORE TRACK
- STD CM+3
- LDD WL STORE WORD COUNT
- STD CM+2
- LDC SCHE*100+30D
- STD CM
- LDN 0
- STD CM+1
- LDD MA STORE MESSAGE BUFFER
- CWD CM
- UJN UTT3 UPDATE SCHEDULE FIELD
- UTT2 LDD MA
- CWM UTTB,ON SET REQUEST TO CHANGE JOB STATUS
- UTT3 LDD TT GET TERMINAL TABLE ADDRESS
- SHN 14
- ADD TT+1
- ADK VUIT
- CRD CM
- ADN VROT-VUIT
- CWD CN
- * UPDATE EJT - JOB STATUS OR SCHEDULE FIELD.
- SFA EJT,CM+4 SET EJT ADDRESS
- STD CM+4
- SHN -14
- STD CM+3
- LDN 0
- STD CM+2
- LDN 1
- STD CM+1
- MONITOR UTEM
- LDD CM+1
- NJN UTT4 IF REJECT
- LJM UTTX EXIT
- UTT4 LDN 4 UNEXPECTED EJT STATUS
- RJM ABT ABORT IAF
- UTTB VFD 6/JSNE,6/5,6/1,42/DOJS
- SPACE 4,10
- QUAL *
- TITLE BUFFERS.
- USE BUFFERS
- BUFFERS SPACE 4,10
- ** GENERAL BUFFERS.
- BUFF EQU * INPUT/OUTPUT BUFFER
- TEPS EQU EPFW-2*VCPC*VRQB
- EBUF EQU TEPS-VRQB*VCPC*5-2 REQUEST QUEUE BUFFER
- BUFL EQU EBUF-BUFF-2*12 *BUFF* LENGTH - MAXIMUM CONTROL
- * BYTE COUNT FOR PPU MEMORY
- ERRNG BUFL-VSEC*500 BUFFER AT LEAST MINIMUM SECTORS LONG
- IBUFL EQU EBUF-IBUF-2*12 INPUT BUFFER LENGTH
- ISEC EQU IBUFL/500B INPUT BUFFER IN SECTORS
- BUFP EQU ISEC*100B/VCPC NUMBER OF POTS IN INPUT BUFFER
- OVERFLOW /2TO/TTOX,IROB
- TTL 1TO - TERMINAL INPUT/OUTPUT.
- END
cdc/nos2.source/opl871/1to.txt ยท Last modified: 2023/08/05 17:24 by Site Administrator