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