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

⟦80c8b5877⟧

    Length: 7582 (0x1d9e)
    Notes: pts_type(SC)
    Names: »TIMER.SC«

Derivation

└─⟦245262b9f⟧ Bits:30009679 Philips computer tape "600220"
    └─⟦this⟧ »M:92SP/TIMER.SC« 
└─⟦a25d6defe⟧ Bits:30009676 Philips computer tape "600210"
    └─⟦this⟧ »M:92SP/TIMER.SC« 

PTS(SC)

	IDENT TIMER 	REL 9.2 79-11-16  870105040920

* 
* 
*************************************************** 
* 
*   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			TIMER
* 
* 
*********** 
* ENTRIES * 
*********** 
* 
* 
	ENTRY	TIMER	LKM PROCESSOR
	ENTRY	SETIME	SET BLOCK IN TIMER QUEUE
	ENTRY	SETIMP	SETIME + STORE TIMER POINTER



* 
* 
*********** 
* EXTRNALS *
************
* 
* 
	EXTRN	TDISP	DISPATCHER 
	EXTRN	LKMQDI	QUEUE TERMINAL AND DISPATCH 
	EXTRN	LKMRQE	LKM REQUEST ERROR 
	EXTRN	GETBLK	GET A FREE BLOCK
	EXTRN	FREBLK	SET A BLOCK FREE
	EXTRN	FNDTID	FIND TTAB ADDRESS 
	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			TIMER
* 
* 
***************************************** 
* 
*	CONDITIONAL ASSEMBLY
* 
***************************************** 
* 
*	A PROGRAM VERSION USING THE EXTENDED INSTRUCTION
*	SET IS OBTAINED BY SETTING CPU852 EQU 0.
* 
CPU852	EQU	0
* 
	EJECT			TIMER
* 
* 
*   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	* 
	ADK	A4,0	SET CR
	RF(NZ)	TIM010	TIMING AND ACTIVATION? 
* 
	EJECT			TIMER
* 
*   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			TIMER
* 
*   TIMING AND ACTIVATION 
* 
TIM010	EQU	*
	CF	A15,FNDTID	FIND TTAB ADDRESS
	ADK	A2,0	SET CR
	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
* 
QUEDIS	EQU	*
	ABL	LKMQDI 
* 
	EJECT			TIMER
* 
* 
*   RETURN AFTER TIME OUT 
* 
*   1.PROGRAM DELAY 
* 
DELAY	EQU	* 
	LDR	A5,A1	SET TTAB ADDRESS 
	RB	QUEDIS	QUEUE TASK FOR DISPATCHING 
* 
*   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 
	LDK	A7,0	MONITOR ACTIVATION PARAMETER
	CF	A15,ACTOT	AND ACTIVATE TERMINAL 
	RB	TTDIS 
* 
	EJECT			TIMER
* 
* 
*   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	*
	IFT	CPU852=1 
	CF	A15,SAVE8	SAVE A1-A8 ON STACK 
	XIF
* 
	IFT	CPU852=0 
	INH
	MSR	8,A15	SAVE A1-A8 ON STACK
	XIF
* 
	EJECT			TIMER
* 
* 
	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 
* 
	EJECT			TIMER
* 
* 
SETEND	EQU	*
	IFT	CPU852=1 
	ABL	IHRET8	RESTORE A1-A8 AND RETURN
	XIF
* 
	IFT	CPU852=0 
	MLR	8,A15	RESTORE A1-A8 FROM STACK...
	RTN	A15	...AND RETURN
	XIF
* 
* 
* 
	END

Full view