DataMuseum.dk

Presents historical artifacts from the history of:

Philips Data Systems

This is an automatic "excavation" of a thematic subset of
artifacts from Datamuseum.dk's BitArchive.

See our Wiki for more about Philips Data Systems

Excavated with: AutoArchaeologist - Free & Open Source Software.


top - metrics - download

⟦c5c099b36⟧

    Length: 4544 (0x11c0)
    Notes: pts_type(SC)
    Names: »LOADER.SC«

Derivation

└─⟦efe3a1cfc⟧ Bits:30009667 Philips computer tape "600113"
    └─⟦this⟧ »TOSSWORK/LOADER.SC« 

PTS(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

Full view