|
|
DataMuseum.dkPresents historical artifacts from the history of: Philips Data Systems |
This is an automatic "excavation" of a thematic subset of
See our Wiki for more about Philips Data Systems Excavated with: AutoArchaeologist - Free & Open Source Software. |
top - metrics - download
Length: 4544 (0x11c0)
Notes: pts_type(SC)
Names: »LOADER.SC«
└─⟦efe3a1cfc⟧ Bits:30009667 Philips computer tape "600113"
└─⟦this⟧ »TOSSWORK/LOADER.SC«
IDENT LOADER REL 8.2 78-09-15 870105040820 * ************************************************** * * PHILIPS TERMINAL SYSTEM PTS * * LOADER = TOSS LKM-PROCESSOR FOR SEGMENT LOADING * FROM DISC * * * * * ************************************************** * * THIS MODULE CONTAINS THE LKM-PROCESSOR * * L O A D E R * * THIS MODULE IS ENTERED WHEN LOADING OF A SEGMENT * IS REQUIRED. * THE MODULE IS CALLED BY THE LKM-HANDLING MODULE. * * ENTRY PARAMETERS: * A5= TTAB ADDRESS * A7= SEGMENT NUMBER * A8= DISPLACEMENT * * IF SEGMENT ZERO THE JOB WILL BE PUT IN * DIPATCHER QUEUE ELSE A LOAD-TASK IS ACTIVATED WITH ADDRESS * OF A LOAD PARAMETER BLOCK IN A1 AS THE ONLY PARAMETER. * * EXIT PARAMETERS TO LOAD TASK: * A1= ADDRESS TO BLOCK IN MONITOR BLOCK POOL * CONTAINING: FIRST PARAM= SEGMENT POINTER IN LSBT * SECOND PARAM= DISPLACEMNT * THIRD PARAM= TTAB-ADDRESS * * IF AN ERROR CONDITION IS DETECTED THE ERROR * RETURN WILL BE PERFORMED AT THE INSTRUCTION * FOLLOWING THE LKM-REQUEST * * EXIT PARAMETER: * A7= -1 EJECT * *********** * ENTRIES * *********** * * ENTRY LOADER SEGMENT LOAD PROCESSOR ENTRY LD150 ENTRY FROM INTERPRETER * ************* * EXTERNALS * ************* * * EXTRN GETBLK EXTRN LDTASK EXTRN ACTOT EXTRN QTJOB EXTRN TDISP EXTRN LKMRQE LKM REQUEST ERROR ROUTINE EXTRN TTB:SS START ADDRESS OF LAST SEGMENT EXTRN TTB:SP POINTER TO LAST SEGMENT IN LSBT EXTRN TTB:SA DISPATCH ADDRESS EXTRN TTABLD LOAD TASK TABLE * ************* * CONSTANTS * ************* * * CVTLSB EQU /9A START ADDRESS OF LOAD SEGM BLK FIRST WORD CONTAINS LSBT-LENGTH CVTAPA EQU /94 APPLICATION ADDRESS EJECT * * CHECK IF WANTED SEGMENT = ROOT SEGMENT * LOADER EQU * SUKL A8,1 ADR A8,A8 LDR A7,A7 SEGMENT NBR 0? RF(NZ) LD050 NO! LD A2,CVTAPA YES CALCULATE DISPATCH ADDRESS CM TTB:SP,A5 CM TTB:SS,A5 LD010 EQU * ADR A2,A8 GET DISPATCH ADDRESS LDR* A2,A2 ASOLUTE ADDRESS ST A2,TTB:SA,A5 UPDATE TTAB CF A15,QTJOB QUEUE JOB RF LD200 EJECT * * CHECK VALIDITY OF SEGMENT NBR * LD050 EQU * LDR A3,A7 CALCULATE 12 TIMES SEGNBR SLL A3,2 LDR A2,A3 SLL A2,1 ADR A3,A2 CW* A3,CVTLSB CMP WITH LSB-LENGTH RF(NL) LDERR * * SEGMENT ALREADY LOADED * AD A3,CVTLSB GET LOAD STATUS OF SEGMENT ADK A3,2 LDR* A2,A3 RF(N) LD100 LOAD IF NOT LOADED ST A3,TTB:SP,A5 UPDATE POINTER LD A2,2,A3 NEW LOAD ADDRESS ST A2,TTB:SS,A5 UPDATE RB LD010 QUEUE JOB AND DISPATCH EJECT * * GET PARAMETER BLOCK AND FILL IN * SEGNBR,DISPL AND TTAB-ADDRESS * LD100 EQU * LDR A2,A8 LOAD DISPLACEMENT LDR A1,A5 LOAD TTAB-ADDRESS LD150 EQU * CF A15,GETBLK GET MONITOR BLOCK * * ACTIVATE LOAD TASK AND PUT IT IN THE DISPATCHER QUEUE * LDR A1,A4 LOAD PARAMETER LDKL A2,LDTASK LOAD DISPATCH ADDRESS LDKL A5,TTABLD LDK A3,0 CF A15,ACTOT ACTIVATE LOAD TASK * * EXIT TO TERMINAL DISPATCHER * LD200 EQU * ABL TDISP * * ERROR EXIT * LDERR EQU * ABL LKMRQE SET A7=-1 QUE AND DISPATCH END