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

⟦d6c5add11⟧

    Length: 7482 (0x1d3a)
    Notes: pts_type(SC)
    Names: »INPREO.SC«

Derivation

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

PTS(SC)

	IDENT INPREO 	REL 8.2 78-09-15  870105040820 

* 
**************************************************
* 
*   PHILIPS TERMINAL SYSTEM PTS 
* 
*   INPREO = SUBROUTINE INTERPRETER 
* 
* 
* 
* 
* 
* 
**************************************************
* 
* 
*   THIS IS A SUBROUTINE INTERPRETER TO HANDLE SUBROUTINE 
*   CALLS USING THE A14 STACK. THE INTERPRETER IS CALLED
*   WITH INSTRUCTION CODES /C001 - /C0FF WHERE /1 - /FF IS A
*   INDEX. INDEX VAULES ARE 1,2,3,4...... 
*   THE INDEX IS USED TO GET ABSOLUTE ADDRESS TO THE CALLED 
*   SUBROUTINE FROM A ADDRESS TABLE. START ADDRESS OF THIS TABLE
*   IS STORED IN COMMUNICATION VECTOR TABLE. ('CVTINP') 
* 
*   THE INTERPRETER MAY ALSO EXECUTE THE FOLLOWING TWO INSTRUCTIONS:
* 
*   LD  R1,DISPL,A13   CALLING CODE: CXYY 
* 
*   ST  R1,DISPL,A13   CALLING CODE: DXYY 
* 
*   X =  R1 = REGISTERS A1 -A14 
*   YY = DISPL (DISPLACMENT)
* 
* 
* 
	EJECT
* 
* 
********* 
* ENTRY * 
********* 
* 
* 
	ENTRY	IHINPT	TRAP INTERRUPT ADDRESS
* 
* 
* 
************* 
* EXTERNALS * 
************* 
* 
* 
	EXTRN	CVTINP	FUNCTION TABLE ADDRESS
	EXTRN	UPDLRI	UPDATE LRU QUEUE
	EXTRN	CVTLSB,CVTAPA
	EXTRN	SRUN,PRUN
	EXTRN	TTB:SS,TTB:SP
	EXTRN	TTB:SA 
	EXTRN	LD150	LOADER JUMP
	EXTRN	LKMDIS 
	EXTRN	RETUR3,RETUR8
	EJECT
* 
* 
*   I H I N P T 
* 
*   INTERPRETER TRAP HANDLER
* 
IHINPT	EQU	*
	STR	A1,A15 
	STR	A2,A15 
	STR	A3,A15 
	LD	A1,10,A15	LOAD TRAP ADDRESS 
	LDR*	A2,A1	LOAD TRAP CODE
	ADK	A1,2	
	LDR	A3,A2	SAVE CODE IN A3
	ANKL	A3,/F00	MASK OUT REGISTER CODE
	RF(Z)	INT200	BRANCH IF SUBROUTINE CALL 
* 
* 
*   EXECUTE LOAD/STORE INSTRUCTION
* 
	ST	A1,10,A15	SAVE RETURN ADDRESS 
	SC	A2,DISPL+1	STORE DISPLACMENT
	SRL	A3,1	SHIFT TO FIT INSTRUCTION CODE 
	SLL	A2,3	
	RF(NN)	INT100	BRANCH IF LOAD INSTRUCTION 
	ADK	A3,1	INDICATE STORE INSTRUCTION
INT100	ADKL	A3,/8056	GET COMPLETE INSTRUCTION CODE
	ST	A3,INSTR	STORE INSTRUCTION TO BE EXECUTED 
	LDR*	A3,A15	RESTORE A3 
	LDR*	A2,A15	RESTORE A1-A2
	LDR*	A1,A15
INSTR	DATA	0	LOAD/STORE INSTRUCTION 
DISPL	DATA	0	DISPLACMENT
	STR	A1,A15	SAVE A1 
	CF	A15,IHSTAK	SAVE CONDITION REGISTER
IHSTAK	LDR*	A1,A15	GET COND. REG
	ST	A1,6,A15	STORE IN RETURN PSW
	LDR*	A1,A15	DUMMY TO ADJUST STACK
	LDR*	A1,A15	RELOAD A1
	RTN	A15	RETURN TO USER PROGRAM 
	EJECT
* 
* 
*    EXECUTE SUBROUTINE CALL
* 
INT200	EQU	*
	STR	A4,A15 
	STR	A5,A15 
	STR	A6,A15 
	STR	A7,A15 
	STR	A8,A15 
	LD	A4,PRUN	TTAB-ADDRESS OF RUNNING PROGRAM 
	ANK	A2,/FF	GET INDEX 
	CWK	A2,/FF	RETURN ?
	RF(E)	INT400	YES 
	LD	A3,18,A15	PSW 
	ST	A3,-6,A14	STORE ON A14 STACK
	LD	A3,SRUN	SEGMENT POINTER 
	ST	A3,-2,A14	STORE SP ON STACK 
	ST	A1,-4,A14	STORE ABS ADDRESS ON STACK
	LD	A5,2,A3	LOAD ADDRESS
	STR	A5,A14 
	SUKL	A14,8 
	SUK	A2,1 
	ADR	A2,A2	DOUBLE INDEX 
	AD	A2,CVTINP	ADD FUNCTION TABLE START ADDRESS
	LDR*	A2,A2	GET SUBROUTINE POINTER
	LDR	A3,A2
	ANK	A2,/FF 
	SUK	A2,1 
	ADR	A2,A2
	SRL	A3,8 
	RF(E)	INT250	SEGMENT 0 
	SLL	A3,2 
	LDR	A1,A3
	SLL	A3,1 
	ADR	A3,A1
	AD	A3,CVTLSB	SEGMENT POINTER 
	ADK	A3,2 
	LDR*	A1,A3	LOADED ?
	RF(N)	INT300	NO
	LD	A1,2,A3	LOAD ADDRESS
INT230	EQU	*
	ADR	A2,A1
	LDR*	A2,A2 
RETTUR	EQU	*
	ST	A2,20,A15 
	ST	A2,TTB:SA,A4	DISPATCH ADDRESS 
	ST	A3,TTB:SP,A4	SAVE SEGMENT PIOINTER
	ST	A3,SRUN	SEGMENT RUNNING 
	ST	A1,TTB:SS,A4	LAST START ADDRESS 
	LDR	A6,A3
	RF(E)	INT240 
	CF	A15,UPDLRI
INT240	EQU	*
	ABL	RETUR8 
INT250	LD	A1,CVTAPA 
	RB	INT230
INT270	EQU	*
	NGR	A2,A2
INT300	CM	SRUN
	CM	TTB:SP,A4 
	CM	TTB:SS,A4 
	ST	A14,TTB:SA+28,A4
	ST	A13,TTB:SA+26,A4
	ST	A12,TTB:SA+24,A4
	ST	A11,TTB:SA+22,A4
	ST	A10,TTB:SA+20,A4
	ST	A9,TTB:SA+18,A4 
	LDKL	A1,TTB:SA 
	ADR	A1,A4
	LDK	A6,16
	ADK	A1,16
INT350	LDR*	A5,A15
	STR	A5,A1
	SUK	A1,2 
	SUK	A6,2 
	RB(NE)	INT350
	SUKL	A15,16
	LDKL	A7,LKMDIS 
	ST	A7,20,A15 
	LDKL	A7,/C000
	ST	A7,18,A15 
	LDR	A1,A4	TTAB ADDRESS 
	ABL	LD150	JUMP TO LOADER 
INT400	EQU	*
	ADKL	A14,8 
	LD	A2,-4,A14	UNMODIFIED RETURN ADRESS
	LD	A1,-6,A14	PSW FROM  STACK 
	ST	A1,18,A15 
	LD	A3,-2,A14	SEGMENT POINTER 
	RB(E)	RETTUR 
	SUR*	A2,A14	SUB LAST LOAD ADR
	LDR*	A1,A3	LOADED ?
	RB(N)	INT270 
	LD	A1,2,A3	LOAD ADDRESS
	ADR	A2,A1
	RB	RETTUR
* 
* 
	END

Full view