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

⟦0307a01d6⟧

    Length: 7764 (0x1e54)
    Notes: pts_type(SC)
    Names: »ASOINT.SC«

Derivation

└─⟦110b7ed5e⟧ Bits:30009664 Philips computer tape "600106"
    └─⟦this⟧ »TOSSWORK/ASOINT.SC« 

PTS(SC)

	IDENT ASOINT 	REL 9.2 79-11-16  870105040920 

* 
**************************************************
* 
*   PHILIPS TERMINAL SYSTEM PTS 
* 
*   ASOINT = SUBROUTINE INTERPRETER 
*	    FOR ASSEMBLY OVERLAY AND
*	    MMU PAGING
* 
* 
**************************************************
* 
* 
*   A14 STACK CONTENTS AT SUBROUTINE CALLS
* 
*   1:  PROGRAM STATUS WORD 
*   2:  RETURN ADDRESS
*   3:  CURRENT SEGMENT POINTER (=0 IF ROOT)
*   4:  PARAMETER= 2ND WORD AFTER USER TRAP CODE
*   5:  PARAMETER= 1ST WORD AFTER USER TRAP CODE
* 
* 
**************************************************
* 
* 
*   USED TRAP CODES:
* 
*	/6001-/61FF EXCEPT /60FF FOR SUBROUTINE CALLS 
*	/60FF                    FOR RETURN FROM SUBROUTINE 
*	/6401-/65FF              FOR JUMP REQUESTS
* 
*   THE LAST 9 BITS POINTS INTO THE SUBROUTINE TABLE
* 
**************************************************
	EJECT			INPREO 
* 
* 
********* 
* ENTRY * 
********* 
* 
* 
	ENTRY	IHINPT	TRAP INTERRUPT ADDRESS
* 
* 
* 
************* 
* EXTERNALS * 
************* 
* 
* 
	EXTRN	UPDLRI	UPDATE LRU QUEUE
	EXTRN	SCTLAC	LOGICAL ADDRESS OF THE ROOT 
	EXTRN	PRUN 
	EXTRN	TTB:PW	PROGRAM STATUS WORD 
	EXTRN	TTB:SB	SEGMENT BLOCK ADDRESS 
	EXTRN	TTB:LA	LAST SEGENT LOAD ADDRESS
	EXTRN	TTB:SA 
	EXTRN	TTB:ST 
	EXTRN	TTB:MT	MMU TABLE ENTRY 
	EXTRN	SCTLAP	LOGICAL ADDRESS OF PAGES
	EXTRN	SCTSEG	ADDRESS TO SEGMENT TABLE
	EXTRN	MONMMU	MMU TABLE FOR MONITOR 
* 
*    CONSTANTS
* 
FUNCTB	EQU	0	RELATIVE ADDRESS OF FUNCTION TABLE IN ROOT 
	EJECT			INPREO 
******************************************************* 
* 
*   I H I N P T 
* 
*   INTERPRETER TRAP HANDLER
* 
******************************************************* 
* 
IHINPT	EQU	*
	MS	8,-14,A15	SAVE A1 TO A8 ON USER STACK 
	LD	A6,4,A15	GET TRAP ADDRESS 
	ELR	A5,A6	AND TRAP CODE
	CWK	A5,/60FF 
	RF(E)	IHIN10	RETURN REQUEST
	LDR	A1,A5	*** SAVE TRAP CODE IN A5 
	ANKL	A1,/400 
	RF(NZ)	IHIN10	JUMP REQUEST 
	SUKL	A14,10
IHIN10	EQU	*
	LDR	A1,A15 
	LDR	A2,A14 
	LDK	A3,16
	SUK	A1,14
	SUK	A2,14
	MVSU	A3
	SUKL	A14,16
	ADK	A6,2	RETURN ADDRESS
	EJECT			INPREO 
******************************************************
* 
*   EXAMINE TRAP CODE 
* 
******************************************************* 
* 
	LD	A4,PRUN	TTAB-ADDRESS OF RUNNING PROGRAM 
	LD	A8,TTB:LA,A4	*** SAVE CURRENT SEGMENT IN A8 
	LDR	A2,A5	TRAP CODE
	LDR	A1,A2
	ANKL	A2,/1FF	GET INDEX 

	ANKL	A1,/400 
	RF(NE)	INT600	EXECUTE JUMP 

	CWK	A2,/FF 
	RF(E)	INT400	EXECUTE RETURN
	EJECT
******************************************************* 
* 
*   EXECUTE SUBROUTINE CALL/ JUMP 
* 
******************************************************* 
* 
	LD	A3,2,A15	GET PROGRAM STATUS WORD
	ES	A3,16+2,A14	SAVE IT 
	ES	A6,16+4,A14	STORE RETURN ADDRESS ON STACK 
	ES	A8,16+6,A14	STORE SP ON STACK 
	ELR	A1,A6	GET PARAMETER 1
	ES	A1,16+10,A14	SAVE IT ON USER STACK
	EL	A1,2,A6	GET PARAMETER 2 
	ES	A1,16+8,A14	SAVE IT ON USE STACK
INT600	EQU	*
	SUK	A2,1 
	ADR	A2,A2	DOUBLE INDEX 
	LD	A3,SCTLAC	LOG ADDRESS OF COMMON PART
	ADKL	A3,FUNCTB 
	ELR	A3,A3	FUNCTION TABLE START 
	ADR	A2,A3
	ELR	A2,A2	SUBROUTINE POINTER 
	LDR	A3,A2
	ANK	A2,/FF 
	SUK	A2,1 
	ADR	A2,A2
	SRL	A3,8 
	RF(Z)	INT250	SEGMENT 0 
	LDR	A6,A3	*** SAVE WANTED SEGMENT IN A6
	SLL	A3,3 
	AD	A3,SCTSEG	SEG TABLE POINTER 
	CW	A3,TTB:SB,A4	SAME SEG?
	RF(NE)	NEWSEG	NO - GET NEW SEGMENT 
* 

INT220	EQU	*
	LD	A1,SCTLAP	LOGICAL ADDRESS OF PAGES
	ADK	A1,8 
INT230	EQU	*
	ADR	A2,A1
	ELR	A2,A2
	LDR	A1,A14 
	ADKL	A14,16
	RF	RETTUR	CONTINUE USER PROGRAM
* 
INT250	EQU	*
	LD	A1,SCTLAC	LOGICAL ADDRESS OF COMMON PART
	ADK	A2,2	EXCLUDE FIRST WORD OF ROOT
	RB	INT230
* 
	EJECT			INPREO 
******************************************************* 
* 
*   EXECUTE RETURN TRAP 
* 
******************************************************* 
* 
INT400	EQU	*
	EL	A2,16+4,A14	UNMODIFIED RETURN ADRESS

	EL	A3,16+6,A14	GET CURRENT SEGMENT 
	RF(Z)	INT500	ROOT SEGMENT
	CW	A3,TTB:SB,A4	SAME SEG ? 
	RF(E)	INT500 
	LDR	A6,A3
	SU	A6,SCTSEG 
	SRL	A6,3	*** SAVE WANTED SEGMENT IN A6 
	RF	NEWSEG	GET NEW SEGMENT
* 

INT500	EQU	*
	EL	A1,16+2,A14	GET PSW FROM USER STACK 
	ST	A1,2,A15
	LDR	A1,A14 
	ADKL	A14,16+10	UPDATE STACK POINTER FOR RETURN 
	RF	RETTUR
	EJECT
******************************************************* 
* 
*   CONTINUE USER PROGRAM 
* 
*	A1= POINTER TO SAVE AREA ON A14 STACK 
*	A2= RETURN ADDRESS
*	A3= CURRENT SEGMENT POINTER 
* 
******************************************************* 
* 

RETTUR	EQU	*
	ST	A2,4,A15
	ST	A2,TTB:SA,A4	DISPATCH ADDRESS 
	ST	A3,TTB:LA,A4	STORE CURRENT SEGM =TTB:SB OR 0
	LDR	A2,A15	RESTORE A1-A8 
	ADK	A1,2 
	SUK	A2,14
	LDK	A3,16
	MVUS	A3
	ML	8,-14,A15 
	RTN	A15	RETURN TO USER PROGRAM 
* 
	EJECT
******************************************************* 
* 
*   GET REQUESTED SEGMENT 
* 
*	A5= TRAP CODE 
*	A6= REQUESTED SEGMENT NBR 
* 
******************************************************* 
* 
NEWSEG	EQU	*
	ADKL	A15,4 
	LDR	A7,A6
	ENB
	LKM
	DATA	9 
	INH
	SUKL	A15,4 
	LD	A1,TTB:PW,A4
	ORK	A1,1	SET USER MODE 
	ST	A1,2,A15	SET USER MODE
	ST	A1,TTB:PW,A4
	CWR	A7,A6	SEGMENT CORRECTLY LOADED 
	RF(NE)	ERROR	NO - ERROR
	CWK	A5,/60FF 
	RB(NE)	INT220	END SUBROUTINE CALL/ JUMP
	RB	INT500	END RETURN REQUEST 
	EJECT
******************************************************* 
* 
*   ERROR HANDLING
* 
*   AT ENTRY: 
*	A7= -1. REQUEST ERROR 
*	A7= -2. DISC I/O ERROR
*	A7= -3. DISC NOT OPERABLE 
* 
*	A3= SEGMENT POINTER OF REQUESTED SEGMENT
*	A4= TTAB ADDRESS OF CALLING TASK
*	A5= TRAP CODE 
*	A6= EXPECTED SEGMENT NBR
*	A8= SEGMENT POINTER AT CALL 
* 
******************************************************* 
* 
ERROR	EQU	* 
	LD	A2,SCTLAC	CALCULATE DISPATCH ADDRESS OF ERROR ROUTINE 
	ADKL	A2,FUNCTB 
	ELR	A2,A2
	SUK	A2,2 
	ELR	A2,A2	DISPATCH ADDRESS 
	ES	A7,14,A14	SET RETURN CODE IN A7 
	LDR	A1,A14 
	ADKL	A14,16+10 
	DATA	/6300	*** JUMP TO DEBUGGER ***
	LDK	A3,0 
	RB	RETTUR
* 
* 
	END

Full view