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

⟦08cc034f2⟧

    Length: 6112 (0x17e0)
    Notes: pts_type(SC)
    Names: »TIMER.SC«

Derivation

└─⟦c47f25c27⟧ Bits:30009688 Philips computer tape "600318"
    └─⟦this⟧ »M:KMDV/TIMER.SC« 
└─⟦efe3a1cfc⟧ Bits:30009667 Philips computer tape "600113"
    └─⟦this⟧ »TOSSWORK/TIMER.SC« 
└─⟦fcfed1ed9⟧ Bits:30009706 Philips computer tape "M_167"
    └─⟦this⟧ »M:167D/TIMER.SC« 

PTS(SC)

	IDENT TIMER 	REL 8.2 78-09-15  870105040820

* 
*************************************************** 
* 
*   PHILIPS TERMINAL SYSTEM PTS 
* 
*   TIMER = TIMER FUNCTIONS 
* 
* 
* 
* 
* 
* 
*************************************************** 
* 
* 
*   THIS MODULE CONTAINS TIMER LKM PROCESSORS AND 
*   THE FOLLOWING SUBROUTINES:
* 
*   -SETIME:  SET BLOCK IN TIMER QUEUE
*   -SETIMP:  SETIME + STORE TIMER POINTER
* 
* 
	EJECT
* 
* 
*********** 
* ENTRIES * 
*********** 
* 
* 
	ENTRY	TIMER	LKM-PROCESSOR
	ENTRY	SETIME	SET BLOCK IN TIMER QUEUE
	ENTRY	SETIMP	SETIME + STORE TIMER POINTER
* 
* 
*********** 
* EXTRNALS *
************
* 
* 
	EXTRN	TDISP	DISPATCHER 
	EXTRN	SRUN	POINTER TO RUNNING SEGMENT IN LSBT
	EXTRN	LKMQDI	QUEUE TERMINAL AND DISPARCH 
	EXTRN	LKMRQE	LKM REQUEST ERROR 
	EXTRN	GETBLK	GET A FREE BLOCK
	EXTRN	FREBLK	SET A BLOCK FREE
	EXTRN	FNDTID	FIND TTAB-ADDRESS 
	EXTRN	QTJOB	QUEUE TERMINAL JOB 
	EXTRN	ACTOT	ACTIVATE A TERMINAL
	EXTRN	SAVE8	SAVE 8 REGISTERS ON STACK
	EXTRN	TIMQUE	POINTER TO FIRST BLOCK IN TIMER QUEUE 
	EXTRN	IHRET8	RESTORE 8 REGISTERS FROM STACK
	EJECT
* 
*   T I M E R 
* 
*   THIS IS THE TIMER LKM PROCESSOR.
*   IT IS ENTERED FROM THE LKM-HANDLER WITH THE FOLLOWING 
*   PARAMETERS: 
* 
*   1. PROGRAM DELAY
* 
*   A4 = 0
*   A5 = TTAB-ADDRESS 
*   A8 = DELAY
* 
* 
*   2. TIMING AND ACTIVATION
* 
*   A1 = PARAMETER
*   A4 = DISPATCH ADDRESS OF PROGRAM TO BE ACTIVATED
*   A5 = TTAB-ADDRESS OF CALLING PROGRAM
*   A7 = TERMINAL IDENTIFICATION OF PROGRAM TO BE ACTIVATED 
*   A8 = DELAY
* 
* 
TIMER	EQU	* 
	LDR	A4,A4	TIMING AND ACTIVATION ?
	RF(NZ)	TIM010	YES
* 
* 
*   PROGRAM DELAY 
* 
	LDR	A1,A5	SET PARAMETER
	ST	A8,PAR1+2	SET TIME
	CF	A15,SETIME
PAR1	DATA	DELAY,0 
TTDIS	ABL	TDISP	GO TO DISPATCHER
	EJECT
* 
* 
*   TIMING AND ACTIVATION 
* 
TIM010	EQU	*
	CF	A15,FNDTID	FIND TTAB-ADDRESS
	LDR	A2,A2	 
	ABL(Z)	LKMRQE	TTAB NOT FOUND 
	LDR	A3,A2	IN BLOCK A3=TTAB-ADDRESS 
	LDR	A2,A4	         A2=DISPATCH ADDRESS 
	CF	A15,GETBLK	         A1=PARAMETER
	LDR	A1,A4	SET BLOCK ADDRESS AS PARAMETER 
	ST	A8,PAR2+2	SET TIME
	CF	A15,SETIME
PAR2	DATA	TIMACT,0
	ABL	LKMQDI 
	EJECT
* 
* 
*   RETURN AFTER TIME OUT 
* 
*   1.PROGRAM DELAY 
* 
DELAY	EQU	* 
	LDR	A5,A1	SET TTAB-ADDRESS 
	CF	A15,QTJOB	AND QUEUE FOR DISPATCHING 
	RB	TTDIS 
* 
* 
*   2. TIMING AND ACTIVATION
* 
TIMACT	EQU	*
	LDR	A4,A1	GET BLOCK ADDRESS
	CF	A15,FREBLK	AND SET IT FREE
	LDR	A5,A3	SET TTAB-ADDRESS 
	LD	A3,SRUN	GET POINTER TO RUNNIG SEGMENT 
	RF(Z)	TIMA	JMP IF ROOT SEGMENT 
	SU	A2,2,A3	ELSE CALCULATE RELATIVE ADDRESS 
TIMA	EQU	*
	LDK	A7,0	MONITOR ACTIVATION PARAMETER
	CF	A15,ACTOT	AND ACTIVATE TERMINAL 
	RB	TTDIS 
	EJECT
* 
* 
*   S E T I M E , S E T I M P 
* 
*   SUBROUTINE TO SET BLOCK IN TIMER QUEUE
*   AND IF SETIMP, STORE TIMER POINTER
*   ENTRY PARAMETERS:-
* 
*   A1 = PARAMETER
*   A4 = IF SETIMP: TIMER POINTER ADDRESS 
*   P1 = DISPATCH ADDRESS AFTER TIME OUT
*   P2 = DELAY
* 
*   P1 AND P2 ARE STORED AFTER THE SUBROUTINE REQUEST 
* 
*   EXIT PARAMETER:-
* 
*   A4 = ADDRESS TO TIMER 
* 
* 
SETIME	EQU	*
	LDK	A4,0 
SETIMP	EQU	*
	CF	A15,SAVE8 
	LDR	A6,A4	SAVE TIMER POINTER ADDRESS 
	LDR	A3,A4
	LD	A5,20,A15	LOAD FIRST PARAMETER ADDRESS
	LDR*	A2,A5	DISPATCH ADDRESS IN A2
	ADK	A5,2 
	LDR*	A8,A5	TIME IN A8
	ADK	A5,2 
	ST	A5,20,A15	ADJUST PROGRAM COUNTER
	CF	A15,GETBLK	GET A FREE BLOCK 
	LDR	A2,A4
	C1R	A1,A8
	CF	A15,GETBLK	GET TIMER BLOCK
	LD	A1,TIMQUE 
	STR	A1,A4	SET BLOCK IN QUEUE 
	ST	A4,TIMQUE 
	ADK	A4,4 
	ST	A4,10,A15	SET TIMER ADDRESS A4 ON STACK 
	LDR	A6,A6
	RF(Z)	SETEND	-SETIME 
	STR	A4,A6	-SETIMP  STORE TIMER POINTER 
SETEND	ABL	IHRET8 
* 
	END

Full view