cdc:nos2.source:opl871:1dl
Table of Contents
1DL
Table Of Contents
- [00009] 1DL - DISPLAY OVERLAY LOADER.
- [00011] DISPLAY OVERLAY LOADER.
- [00093] MAIN PROGRAM.
- [00095] LDO - MAIN PROGRAM.
- [00223] SFO - SEARCH FOR OVERLAY.
- [00334] MSR - MASS STORAGE ERROR PROCESSOR FOR *COMPRNS*.
- [00371] SPL - SEARCH PERIPHERAL LIBRARY DIRECTORY.
- [00449] PRS - PRESET PROGRAM.
- [00481] TCHS - CHANNEL TABLE.
Source Code
- 1DL.txt
- IDENT 1DL,LDO
- PERIPH
- BASE MIXED
- SST
- EOR$ EQU 1 DEFINE EOR POSITION ADVANCE
- MSR$ EQU 1 DEFINE ERROR PROCESSING FOR *RNS*
- *COMMENT 1DL - DISPLAY OVERLAY LOADER.
- COMMENT COPYRIGHT CONTROL DATA SYSTEMS INC. 1992.
- TITLE 1DL - DISPLAY OVERLAY LOADER.
- SPACE 4
- *** 1DL - DISPLAY OVERLAY LOADER.
- * G. R. MANSFIELD. 70/12/11.
- SPACE 4
- *** 1DL MAY BE CALLED TO LOAD OVERLAYS FROM MASS STORAGE
- * FOR DISPLAY PROGRAMS. THE OVERLAYS ARE ASSUMED TO BEGIN AT
- * THE MASS STORAGE ADDRESS SPECIFIED BY THE FIRST OVERLAY
- * WHICH HAS THE SAME FIRST 2 CHARACTERS OF THE REQUESTED
- * OVERLAY AND CONTINUE IN A CONTIGUOUS BLOCK,
- SPACE 4
- *** CALL.
- *
- *
- *T 18/ *1DL*,6/ CP,12/ CH,24/ NAME
- * CP CONTROL POINT NUMBER
- * CH CHANNEL FOR TRANSMISSION OF OVERLAY
- * IF CH IS GREATER THAN 77 THEN A CM TRANSFER WILL BE
- * SELECTED TO THE RECEIVING PPS MSG. BUFFER. CH MUST BE
- * THE RECEIVING PPS INPUT REGISTER ADDRESS.
- * NAME OVERLAY NAME
- SPACE 4
- *** COMMUNICATION.
- *
- *
- * WHEN 1DL IS READY TO TRANSMIT THE OVERLAY TO THE
- * CALLING PROGRAM, BYTE 2 OF THE INPUT REGISTER IS SET TO
- * 7777B. 1DL THEN WAITS FOR BYTE 2 OF THE INPUT REGISTER TO
- * BE SET TO 0. IF THIS DOES NOT TAKE PLACE WITHIN 1 SECOND,
- * 1DL EXITS TO PP RESIDENT, THUS ABORTING THE OVERLAY LOAD.
- * IF A CM TRANSFER IS SELECTED, THE FOLLOWING ADDITIONAL
- * INTERFACE REQUIREMENTS MUST BE FOLLOWED.
- * 1. AFTER 1DL READY TO SEND IS DETECTED, RECEIVER MUST
- * ZERO HIS OUTPUT REGISTER AND THEN SET BYTE 2 OF HIS
- * INPUT REGISTER TO ZERO. -READY TO RECEIVE
- * 2. RECEIVER READS HIS OUTPUT REGISTER. IF BYTE 4 IS
- * ZERO, DELAY 128 MICROSECS AND READ AGAIN. IF BYTE
- * 4 IS NON-ZERO THE LOWER 6 BITS CONTAIN THE BLOCK
- * WORD-COUNT AND THE UPPER 6 BITS CONTAIN A FLAG.
- * THE FLAG INDICATES DATA IS IN THE MSG. BUFFER.
- * IF THE WORD COUNT IS ZERO,THE LAST BLOCK HAS ALREADY
- * BEEN RECEIVED AND THE TRANSFER IS COMPLETE.
- * 3 IF THE WORD-COUNT IS NON-ZERO, READ FROM THE MSG.
- * BUFFER (WORD-COUNT) WORDS. OTHERWISE, END.
- * 4. ZERO THE OUTPUT REGISTER TO INDICATE TO 1DL THAT
- * THE DATA HAS BEEN REMOVED FROM THE BUFFER AND GO TO
- * STEP 2.
- *
- * *WARNING* - DIRECT CHANNEL TRANSFERS ARE LIMITED TO *MXPC*
- * SECTORS; ANY DATA BEYOND THIS LIMIT IS IGNORED. ON CM
- * TRANSFERS AFTER *MXPC* SECTORS, IT IS POSSIBLE FOR *1DL* TO
- * BE TRAPPED BY A STORAGE MOVE OR DROP. IF A PAUSE OCCURS,
- * THE CM TRANSFER PROTOCOL (IN WHICH THE TWO PP-S MONITOR
- * EACH OTHER-S OUTPUT REGISTERS) WILL BREAK DOWN. SINCE
- * *1DL* CANNOT TELL WHETHER OR NOT A PAUSE ACTUALLY OCCURRED,
- * *1DL* MUST THEREFORE RESYNCHRONIZE THE TRANSFER AFTER EACH
- * *MXPC* SECTORS. *1DL* WILL DO THIS BY STARTING OVER WITH
- * THE INITIAL PROTOCOL (*1DL* SETTING BYTE 2 OF ITS INPUT
- * REGISTER SET TO 7777B AND THE CALLING PP SETTING IT TO ZERO).
- * THEREFORE, THE CALLING PP MUST BE PREPARED TO PAUSE (IF *1DL*
- * PAUSES) AND TO RESYNCHRONIZE THE TRANSFER (IN ANY EVENT)
- * AFTER EACH *MXPC* SECTORS ARE TRANSFERRED.
- SPACE 4
- *CALL COMPCHI
- *CALL COMPMAC
- *CALL COMSMSP
- *CALL COMSPIM
- SPACE 4
- **** DIRECT LOCATION ASSIGNMENTS.
- T8 EQU 16 *7SE* PARAMETER WORD
- CN EQU 20 CM WORD BUFFER (5 LOCATIONS)
- OV EQU 25 OVERLAY NAME
- BO EQU 26 BUFFER OVERFLOW
- TN EQU 30 - 34 TRANSFER DIRECT CELLS
- CW EQU 40 - 44 CM TRANSFER CONTROL WORD
- ****
- SPACE 4
- * ASSEMBLY CONSTANT.
- CH EQU CHDS TRANSMISSION CHANNEL
- WT EQU 6 CM WORDS PER CM TRANSFER
- TITLE MAIN PROGRAM.
- LDO SPACE 4
- ** LDO - MAIN PROGRAM.
- ORG PPFW
- LDO RJM PRS PRESET PROGRAM
- LDN 0
- RJM SFO SEARCH FOR OVERLAY
- NJN LDO.1 IF FOUND
- LJM DPP
- * INITIATE TRANSMISSION.
- LDO.1 PAUSE NE
- AOD IR+2
- STD TN SAVE CHANNEL OR CM FLAG (IF CM THE OA)
- LDO0.2 LCN 0 SET TRANSMIT REQUEST
- STD IR+2
- STD TN+1 SET PRIMARY TIMEOUT COUNTER
- LDN 3
- STD TN+2 SET SECONDARY TIMEOUT COUNTER
- LDD IA
- CWD IR
- LDO1 SOD TN+1
- NJN LDO1.1 IF TIME NOT UP YET
- SOD TN+2
- ZJN LDO2 IF TIME UP
- LCN 0
- STD TN+1 RESET PRIMARY TIMEOUT COUNTER
- LDO1.1 LDC 160
- LDOA EQU *-2
- SBN 1
- NJN *-1
- LDD IA READ RESPONSE
- CRD CM
- LDD CM+2
- NJN LDO1 IF RECEIVE NOT READY
- * TRANSMIT OVERLAY.
- LDD TN
- SHN -6
- NJN LDO3 IF CM TRANSFER DESIRED
- LDM BUF+4 FORM PP WORD COUNT
- SHN 2
- ADM BUF+4
- IJM *,CH WAIT FOR ACTIVE CHANNEL
- OAM BUF,CH OUTPUT OVERLAY
- FJM *,CH
- DCN CH+40
- DPP MONITOR DPPM DROP PP
- LJM PPR EXIT TO PP RESIDENT
- * CLEAR READY TO SEND FLAG AND CHANGE THIRD CHARACTER OF NAME
- * SO THAT THE RECEIVING PPU FIGURES OUT *1DL* IS GOING TO DROP.
- LDO2 LDN 0
- STD IR+2
- LDD IR+1 CHANGE NAME
- LPN 77
- STD IR+1
- LDD IA
- CWD IR
- LCN 0 DELAY
- SBN 1
- NJN *-1
- UJN DPP
- LDO3 LDC 4000+WT INITIALIZE TRANSFER COUNT
- STD CW+4
- LDD TN SAVE MESSAGE BUFFER ADDRESS
- ADN 1
- STD TN+1
- LDM BUF+4 SET WORD COUNT
- STD TN+2
- LDN WT SET WORDS PER TRANSFER
- STD TN+3
- LDO4 LDD TN+2 CHECK LAST BLOCK
- SBD TN+3
- PJN LDO5 IF MORE THAN WT WORDS LEFT
- RAD CW+4 UPDATE WORD COUNT IN BLOCK
- LPN 77
- ZJN LDO8 IF END OF BUFFER / DATA
- LDO5 LDN 77 DELAY
- SBN 1
- NJN *-1
- LDD TN
- CRD CM
- LDD CM+4
- NJN LDO5 IF NOT READY TO SEND
- LDD TN+1
- CWM BUF,TN+3 TRANSFER BLOCK
- LDOB EQU *-1
- SBN WT+1
- CWD CW SET DATA READY
- LDN WT*5 UPDATE BLOCK ADDRESS
- RAM LDOB
- LDD CW+4
- LPN 77
- NJN LDO7 IF NOT END OF TRANSFER
- LDO6 LJM DPP
- LDO7 LCN WT
- RAD TN+2
- PJN LDO4 IF STILL MORE WORDS TO TRANSFER
- LDO8 LDD BO
- NJN LDO9 IF BUFFER OVERFLOW
- LDC 4000 SET NULL TRANSFER
- STD CW+4
- UJN LDO5
- LDO9 STM BUF+4 SET REMAINING WORD COUNT
- LDN 0 CLEAR BUFFER OVERFLOW
- STD BO
- PSN
- * UJN LDO10 (CM RESIDENT OVERLAY)
- LDOC EQU *-1
- SETMS READSYS
- LDC BUF+5
- STM LDOB
- SBN 2 (BUF+3)
- STD CN PPU ADDRESS
- LDO10 LDN MXPC
- STD CN+4
- RJM SFO GET THE REST OF THE OVERLAY
- LJM LDO0.2 RESYNCHRONIZE THE TRANSFER
- SFO SPACE 4,15
- ** SFO - SEARCH FOR OVERLAY.
- *
- * ENTRY (A) = 0 IF INITIAL ENTRY.
- * (A) .NE. 0 IF CONTINUATION ENTRY.
- * (T4 - T7) = MASS STORAGE PARAMETERS IF CONTINUATION
- * ENTRY AND NOT CM RESIDENT OVERLAY.
- *
- * EXIT (A) = 0 IF NOT FOUND.
- * (BUF - BUF+N) = OVERLAY FOUND.
- * (T4 - T7) = MASS STORAGE PARAMETERS IF INITIAL ENTRY
- * AND NOT CM RESIDENT OVERLAY.
- *
- * USES BO, CN - CN+4, T4 - T7.
- *
- * CALLS SPL, RNS.
- *
- * MACROS ENDMS, SETMS.
- SFO9 LDI CN
- STD CN+1
- LDM 1,CN
- STD CN+2
- LDD CN READ NEXT SECTOR
- RJM RNS
- SFO10 LDD CN+1 RESTORE 2 BYTES
- STI CN
- LDD CN+2
- STM 1,CN
- LDC 500 ADVANCE SECTOR ADDRESS
- RAD CN
- LDD T1 CHECK WORD COUNT
- SHN -6
- ZJN SFO12 IF EOR
- SOD CN+4
- SFO11 NJN SFO9 IF MORE SECTORS WILL FIT INTO BUFFER
- LDM BUF+4
- ADC -100*MXPC
- ZJN SFO12 IF NEXT SECTOR EOR
- STD BO WORDS LEFT OVER
- LDC MXPC*100 SET MAXIMUM WORD COUNT
- STM BUF+4
- SFO12 ENDMS
- SFO13 LDN 1 INDICATE OVERLAY FOUND
- SFO SUBR ENTRY/EXIT
- NJN SFO11 IF NOT FIRST ENTRY
- * NJN SFO3 IF NOT FIRST ENTRY (CM RESIDENT OVERLAY)
- SFOA EQU *-1
- * SEARCH PLD FOR FIRST OVERLAY OF GROUP.
- SFO1 RJM SPL SEARCH PLD
- ZJN SFOX IF OVERLAY NOT FOUND
- MJP SFO6 IF FOUND IN *RPL*
- SETMS READSYS
- SFO2 LDD CN READ NEXT SECTOR
- RJM RNS
- NJN SFO5 IF NOT EMPTY SECTOR
- ENDMS
- * LDN 0 RETURN WITH (A) = 0
- UJN SFOX
- SFO3 LDC BUF RESET TRANSFER ADDRESS
- STM LDOB
- LDM BUF+4
- UJN SFO7 READ REST OF OVERLAY
- SFO4 LDD T1 CHECK SECTOR WORD COUNT
- SHN -6
- ZJN SFO2 IF SHORT SECTOR
- LDD CN READ NEXT SECTOR
- RJM RNS
- UJN SFO4 LOOP
- * CHECK OVERLAY NAME.
- SFO5 LDM 2,CN
- SHN 6
- LMD IR+4
- SHN 6
- LMM 3,CN
- LMD IR+3
- NJN SFO4 IF NO MATCH
- LDN MXPC SET MAXIMUM SECTOR COUNT
- STD CN+4
- LJM SFO10 READ OVERLAY
- * READ CM RESIDENT OVERLAY.
- SFO6 LDD T4+3
- SFO7 STD T4
- SBK MXPC*100
- MJN SFO8 IF OVERLAY FITS IN BUFFER
- STD BO SAVE REMAINDER
- LDC MXPC*100
- STD T4
- SFO8 LDD T4+1
- LPN 77
- SHN 14
- LMD T4+2
- CRM BUF,T4 READ IN OVERLAY
- ISTORE LDOC,(UJN LDO10)
- ISTORE SFOA,(NJN SFO3)
- LDD T4 SET TRANSFER SIZE
- STM BUF+4
- RAD T4+2 UPDATE READ ADDRESS
- SHN -14
- RAD T4+1
- UJP SFO13 SET OVERLAY FOUND
- MSR SPACE 4,10
- ** MSR - MASS STORAGE ERROR PROCESSOR FOR *COMPRNS*.
- *
- * LOOP TRYING TO READ THE SECTOR UNTIL NO ERROR IS ENCOUNTERED.
- * THE DRIVER WILL AUTOMATICALLY SWITCH TO DIFFERENT SYSTEM
- * DEVICES.
- MSR1 SOM MSRA
- ZJP DPP IF RETRY LIMIT EXHAUSTED
- MSR2 LDD CN RETRY THE READ
- RJM RDS
- MJN MSR1 IF ERROR
- MSR SUBR ENTRY/EXIT
- SFA EST,T5
- ADK EQDE
- CRD CM READ EST ENTRY
- LDD CM
- SHN 21-12
- MJN MSR2 IF ERROR ON SYSTEM DEVICE
- * CALL *7SE* TO REMOVE THE ASR ENTRY FOR THE OVERLAY.
- LDN IR+3 SET *7SE* CALL PARAMETERS
- STD T8
- EXECUTE 7SE,BUF
- LJM SFO1 RETRY
- MSRA CON 10D ERROR RETRY LIMIT
- SPACE 4,10
- * COMMON DECKS.
- *CALL COMPRNS
- SPL SPACE 4,15
- ** SPL - SEARCH PERIPHERAL LIBRARY DIRECTORY.
- *
- * ENTRY (IR+3 - IR+4) = OVERLAY NAME.
- *
- * EXIT (A) = 0 IF NEITHER THE OVERLAY NOR FIRST OVERLAY OF
- * GROUP FOUND.
- * (A) .GT. 0 IF OVERLAY OR FIRST OVERLAY OF GROUP FOUND.
- * (A) .LT. 0 IF OVERLAY FOUND IN *RPL*.
- * (T4 - T7) = MASS STORAGE PARAMETERS.
- * (CN) = BUFFER ADDRESS.
- * (BO) = 0 IF OVERLAY FOUND.
- *
- * USES BO, CN, OV, CM - CM+4, T4 - T7.
- *
- * MACROS MONITOR, SFA.
- SPL3 STD BO CLEAR BUFFER OVERFLOW
- LDC BUF-2 SET BUFFER ADDRESS
- STD CN
- SPL SUBR ENTRY/EXIT
- LDD IA MOVE OVERLAY NAME TO MONITOR CALL
- CRD CM+3-4
- MONITOR SPLM REQUEST LIBRARY SEARCH
- LDD OA SET LOAD PARAMETERS
- CRD T4
- LDD CM+1
- SCN 77
- ZJN SPL3 IF MASS STORAGE RESIDENT
- SHN -7
- NJN SPL1.2 IF NOT IN *RPL*
- STD BO CLEAR BUFFER OVERFLOW
- LDD T4+4 CHECK FOR DUMMY *SFP* ENTRY
- ADD T4+3
- ZJN SPLX IF OVERLAY NOT FOUND
- LCN 1
- SPL1.1 UJN SPLX SET FOUND IN *RPL*
- SPL1 SHN -7
- ZJN SPLX IF IN *RPL*
- SPL1.2 SHN -1
- NJN SPL1 IF 16 BIT OVERLAY
- LDD IR+3
- LMN 1R9
- NJN SPL1 IF NOT CALL FOR DISPLAY OVERLAY
- LDD IR+4 PRESET FIRST OVERLAY IN GROUP
- SCN 77
- * LMN 1RA-1
- STD OV
- SPL2 AOD OV ADVANCE FIRST OVERLAY IN GROUP
- STD CM+3
- LMD IR+4
- ZJN SPL1.1 IF REQUESTED OVERLAY INACCESSIBLE
- LDN 1R9 SET NAME IN MONITOR CALL
- STD CM+2
- MONITOR SPLM REQUEST LIBRARY SEARCH
- LDD OA SET LOAD PARAMETERS
- CRD T4
- LDD CM+1
- SCN 77
- NJN SPL2 IF NOT MASS STORAGE RESIDENT
- SFA EST,T5
- ADK EQDE
- CRD CM
- LDD CM
- SHN 21-12
- PJN SPL2 IF NOT SYSTEM DEVICE
- LDN 0
- LJM SPL3 RETURN
- SPACE 4,10
- ** BUFFER.
- BUF EQU *+2
- BUFL EQU EPFW-BUF BUFFER LENGTH
- MXPC EQU BUFL/500 MAXIMUM PRU COUNT
- PRS SPACE 4,10
- ** PRS - PRESET PROGRAM.
- *
- * USES T1, T2, CM - CM+4.
- *
- * MACROS SFA.
- PRS1 RAI T2 MODIFY CHANNEL INSTRUCTION
- AOD T1 ADVANCE TABLE ADDRESS
- PRS2 LDI T1 SET NEXT INSTRUCTION
- STD T2
- LDD IR+2 CHECK CHANNEL
- CHTL *
- SBN CH
- NJN PRS1 LOOP FOR ALL CHANNEL INSTRUCTIONS
- PRS SUBR ENTRY/EXIT
- LDN DSEQ
- SFA EST FETCH EST ENTRY FOR DISPLAY
- ADK EQAE
- CRD CM
- LDD CM+2 SET TIMEOUT DELAY
- RAM LDOA
- LDN ZERL CLEAR CONTROL WORD
- CRD CW
- LDD IR+2 CHECK CHANNEL
- SHN -6
- NJN PRSX IF CM TRANSFER SELECTED
- LDC TCHS SET CHANNEL TABLE
- STD T1
- UJN PRS2 ENTER LOOP
- TCHS SPACE 4
- ** TCHS - CHANNEL TABLE.
- TCHS CHTB
- SPACE 4
- END
cdc/nos2.source/opl871/1dl.txt ยท Last modified: 2023/08/05 17:24 by Site Administrator