COPYRT COMMON SSOVL IDENT SSOVL ENTRY SSOVL ENTRY SSOVL SYSCOM B1 SSOVL TITLE SSOVL - LOAD *SSEXEC* OVERLAYS. *COMMENT LOAD *SSEXEC* OVERLAYS. COMMENT COPYRIGHT CONTROL DATA SYSTEMS INC. 1992. *CALL COMCMAC SPACE 4,30 *** SSOVL - LOAD *SSEXEC* OVERLAYS. * * SSOVL(OVLLEV,XFRADR); ( *SYMPL* CALL ) * * ENTRY (OVLLEV) = OVERLAY LEVEL. THE FORMAT IS - * 48/ 0, 6/ PRIMARY LEVEL, 6/ SECONDARY * LEVEL. * * (XFRADR) = TRANSFER ADDRESS, ENTRY TO OVERLAY. * IF 0, ENTER OVERLAY AT ENTRY POINT ADDRESS. * ELSE, ENTER OVERLAY AT SPECIFIED ABSOLUTE * ADDRESS. * * EXIT THE RETURN ADDRESS IS PLACED IN THE OVERLAY. * CONTROL TRANSFERS TO THE OVERLAY. * * USES A - 1, 2, 5, 6. * B - 1, 6, 7. * X - 0, 1, 2, 5, 6, 7. * * CALLS FOL.LOV. * * NOTES IT IS ASSUMED THAT THE ENTRY POINT ADDRESS OF EACH * OVERLAY CONTAINS (IN BITS 47-30) THE ADDRESS OF THE * ROUTINE TO BE EXECUTED. THIS MODIFICATION IN OVERLAY * DESIGN IS DONE TO HANDLE *SYMPL* PROCEDURES. * * DAYFILE MESSAGE * OVERLAY NOT FOUND.* SSOVL SUBR ENTRY/EXIT SSOVL0 BSS 0 ENTRY FROM *RCOVL* SB1 1 SX6 A1 PARAMETER LIST ADDRESS SA2 A1+B1 SA3 X2 GET *XFRADR* PARAMETER BX7 X3 SA7 XFRADR SAVE TRANSFER ADDRESS SA6 OVLPARAM * DETERMINE IF REQUESTED OVERLAY IS PRIMARY OR SECONDARY. * IF IT IS ALREADY LOADED, SKIP THE LOAD. SA1 X1 LEVEL OF REQUESTED OVERLAY MX7 -6 BX0 -X7*X1 EXTRACT SECONDARY LEVEL NUMBER ZR X0,OVL.1 IF PRIMARY OVERLAY REQUESTED SX0 B1 OVL.1 BSS 0 SA5 X0+OVLLEV LEVEL OF CURRENT OVERLAY SA2 X0+OVLEPTA SB7 X2 CURRENT OVERLAY ENTRY POINT ADDRESS BX6 X1-X5 ZR X6,OVL1 IF OVERLAY IS ALREADY IN FL BX6 X1 SA6 A5 SAVE OVERLAY LEVEL NZ X0,OVL.2 IF SECONDARY LOAD MX6 0 SA6 OVLLEV+1 CLEAR SECONDARY LEVEL NUMBER OVL.2 BSS 0 * LOAD THE OVERLAY. RJ =XFOL.LOV CALL OVERLAY LOADER NG B7,OVL3 IF OVERLAY NOT FOUND SA2 OVLC INCREMENT OVERLAY COUNTER SX6 X2+B1 SA6 A2 SX6 B7 ENTRY POINT ADDRESS SA6 X0+OVLEPTA SAVE ENTRY POINT ADDRESS * SET UP RETURN ADDRESS AND ENTER THE OVERLAY. OVL1 BSS 0 SA2 SSOVL GET RETURN ADDRESS BX6 X2 SA5 B7 GET ADDRESS TO PROCEDURE LX5 30 SB7 X5 ENTRY POINT ADDRESS TO PROCEDURE SA6 B7 PLACE RETURN ADDRESS SB7 B7+B1 ADVANCE TO TRANSFER ADDRESS SA1 OVLPARAM PARAMETER LIST ADDRESS SA2 XFRADR ZR X2,OVL2 IF TRANSFER TO ENTRY POINT SB7 X2 TRANSFER ADDRESS OVL2 SA1 X1+2 ADVANCE PARAMETER POINTER JP B7 SIMULATED CALL TO PROGRAM OVL3 MESSAGE MADDR ISSUE ERROR MESSAGE ABORT ABORT *CALL COMXOVL MADDR DATA 40C OVERLAY NOT FOUND. XFRADR BSSZ 1 SAVED TRANSFER ADDRESS OVLEPTA BSSZ 2 ENTRY POINT ADDRESS OF CURRENT OVERLAY OVLLEV BSSZ 2 LEVEL NUMBER OF CURRENT OVERLAY OVLPARAM BSSZ 1 ADDRESS TO CALLER PARAMETER LIST RSOVL TITLE RSOVL - REPLACE CURRENT OVERLAY. ** RSOVL - REPLACE CURRENT OVERLAY. * * RSOVL(OVLLEV,XFRADR); ( *SYMPL* CALL ) * * ENTRY (OVLLEV) = OVERLAY LEVEL. THE FORMAT IS - * 48/ 0, 6/ PRIMARY LEVEL, 6/ SECONDARY * LEVEL. * * (XFRADR) = TRANSFER ADDRESS, ENTRY TO OVERLAY. * IF 0, ENTER OVERLAY AT ENTRY POINT ADDRESS. * ELSE, ENTER OVERLAY AT SPECIFIED ABSOLUTE * ADDRESS. * *SSOVL* MUST HAVE BEEN CALLED PREVIOUSLY TO LOAD * THE PRIMARY OVERLAY. * * EXIT (A1) = *FWA* OF PARAMETER LIST. * * CALLS SSOVL * * NOTES *RSOVL* CAN BE CALLED ONLY TO GO FROM ONE SECONDARY * OVERLAY TO ANOTHER SECONDARY OVERLAY. THE CURRENT * SECONDARY OVERLAY IS REPLACED BY THE REQUESTED * SECONDARY OVERLAY. *RSOVL* CANNOT BE USED TO GO * FROM ONE PRIMARY OVERLAY TO ANOTHER PRIMARY OVERLAY. RSOVL SUBR ENTRY/EXIT EQ SSOVL0 ALTERNATE ENTRY TO *SSOVL* END