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

⟦690d6409b⟧

    Length: 10976 (0x2ae0)
    Notes: pts_type(SC)
    Names: »TPROC.SC«

Derivation

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

PTS(SC)

	IDENT TPROC 	REL 8.2 78-09-15  870105040820

* 
**************************************************
* 
*   PHILIPS TERMINAL SYSTEM PTS 
* 
*   TPROC = TOSS LKM PROCESSORS 
*           TIO,TWAIT,TEXIT,TACTOT,TPAUSE 
* 
* 
* 
* 
* 
**************************************************
* 
* 
* 
*   THIS MODULE CONTAINS MANDATORY LKM PROCESSORS 
*   FOR TOSS. THESE ARE:
* 
*   -TIO     INPUT/OUTPUT 
* 
*   -TWAIT   WAIT 
* 
*   -TEXIT   EXIT 
* 
*   -TACTOT  ACTIVATE/RESTART TERMINAL
**
*   -TPAUSE  PAUSE TERMINAL 
* 
	EJECT
* 
*********** 
* ENTRIES * 
*********** 
* 
* 
	ENTRY	TIO	I/O PROCESSOR
* 
	ENTRY	TWAIT	WAIT PROCESSOR 
* 
	ENTRY	TEXIT	EXIT PROCESSOR 
* 
	ENTRY	TACTOT	ACTIVATE/RESTART PROCESSOR
* 
	ENTRY	TPAUSE	PAUSE PROCESSOR 
* 
	ENTRY	TIOQ20	QUEUE DEVICE
	ENTRY	TIOERR	END REQUEST 
	ENTRY	TPQUE	QUEUE JOB AND DISPATCH 
* 
	EJECT
* 
************* 
* EXTERNALS * 
************* 
* 
* 
	EXTRN	DWTADR	DWT ADDRESS BLOCK POINTER 
	EXTRN	DWTTAB	DWT TTAB ADDRESS
	EXTRN	DWTWAT	WAIT/ACTIVATE INDICATOR 
	EXTRN	DWTTDM	DM TASK TTAB ADDRESS
	EXTRN	FNDDWT	SEARCH DWT
	EXTRN	QTJOB	QUEUE TERM.PROG. FOR DISP. 
	EXTRN	DWTOR	ORDER
	EXTRN	DWTECB	ECB ADDRESS 
	EXTRN	DWTST	STATUS 
	EXTRN	TDISP	DISPATCHER 
	EXTRN	SRUN	POINTER TO RUNNING SEGMENT IN LSBT
	EXTRN	LKMRQE	LKM REQUEST ERROR 
	EXTRN	GETBLK	PUT BLOCK IN PENDING QUEUE
	EXTRN	FREBLK	RELEASE BLOCK FROM PENDING QUEUE
	EXTRN	EXIT	PROGRAM EXIT
	EXTRN	TTMJOB	TTAB-ADDRESS OF MJOBS 
	EXTRN	TTB:PP	PENDING PROGRAM POINTER 
	EXTRN	TTB:ID	TERMINAL IDENTIFICATION 
	EXTRN	FNDTID	SEARCH TERMINAL IDENTIFICATION
	EXTRN	ACTOT	'ACTIVATE' TERMINAL
	EXTRN	TTB:ST	TASK STATUS AND LEVEL 
	EXTRN	TTB:SA	SAVE AREA 
	EXTRN	TIODM	ENTRY ADDR 
	EXTRN	ATTACH	ATTACH ENTRY
	EXTRN	DETACH	DETACH ENTRY
	EJECT
* 
* 
************* 
* CONSTANTS * 
************* 
* 
*   DISPLACEMENT IN DEVICE WORK TABLE AND EVENT CONTROL BLOCK 
* 
DWTTQ	EQU	/0E	TASK QUEUE IN DWT 
DWTSB2	EQU	/1E	STACK BASE 2 IN DWT
DWTECH	EQU	/22	ECHO-DEVICE DWT
ECBEL	EQU	/06	EFFECTIVE LENGTH IN ECB 
ECBRC	EQU	/08	RETURN CODE IN ECB
	EJECT

* 
* 
*	T I O 
* 
* 
* THIS MODULE IS ENTERED WHEN TERMINAL I/O
* IS REQUIRED. IF A REQUEST CANNOT BE SERVICED
* DUE TO E.G. BUSY DEVICE, THE REQUEST IS QUEUED
* AND THE TERMINAL PROGRAM SET IN WAIT STATE. 
* THIS MODULE IS CALLED BY THE LKM HANDLING MODULE
* WITH THE FOLLOWING PARAMETERS:- 
* 
*  A1 = PARAMETER WHEN I/O AND ACTIVATION 
* 
*  A4 = ZERO, NORMAL I/O REQUEST
*       NOT ZERO, I/O AND ACTIVATION
* 
*  A5 = TTAB ADDRESS
* 
*  A7 = CODE
* 
*  A8 = ECB ADDRESS 
* 
* 
* THE 'TIO'-ROUTINE EXITS TO REQUESTED ACTIVATION DRIVER
* WITH THE FOLLOWING REGISTER VAULES:-
* 
*  A5 = STACK BASE 2 IN DWT 
* 
*  A6 = DWT-ADDRESS 
* 
*  A7 = ORDER 
* 
*  A8 = ECB-ADDRESS 
* 
	EJECT
* 
* THE FOLLOWING DWT FIELDS ARE UPDATED:-
* 
*  -DWTOR  DWT-INDEX AND ORDER
*  -DWTECB ECB ADDRESS
*  -DWTST  READY AND ECHO FIELDS
*  -DWTTAB TTAB ADDRESS 
*  -DWTWAT WAIT/ACTIVE INDICATOR
* 
* 
* THE FOLLOWING ECB FIELDS ARE RESET:-
* 
*  -BITS 0-7 IN THE FIRST WORD
*  -ECBEL  EFFECTIVE LENGTH 
*  -ECBRC  RETURN CODE
* 



* 
*	GET DWT ADDRESS AND CHECK IF DEVICE IS BUSY 
* 


TIO	CF	A15,FNDDWT	SEARCH DWT ADDRESS
	LDKL	A3,/8000
	LDR	A6,A6
	ABL(Z)	TIOERR	FILE CODE UNKNOWN
	LD	A9,2,A5	TASK STATUS 
	LDR	A11,A9	SAVE TASK STATUS
	RF(N)	TIO020	DMTASK CALLING
	LDKL	A9,/4000	REQUEST BUSY BIT 
	AN	A9,DWTST,A6 
	RF(NZ)	TIOQ20	REQ BUSY,NOT DMTASK CALL 
TIO020	EQU	*
	CCK	A7,/BB00 
	ABL(E)	ATTACH	ATTACH ORDER 
	CCK	A7,/BC00 
	ABL(E)	DETACH	DETACH ORDER 
	LDR	A11,A11	TASK STATUS
	RF(N)	TIO030	DM TASK,SKIP ATTACH CONTROL 
	LDKL	A10,/0800	ATTACH BIT
	AN	A10,DWTST,A6
	RF(Z)	TIO030	NOT ATTACHED
	CW	A5,DWTTAB,A6
	RF(NE)	TIOQ20	ATTACHED TO OTHER TASK 
	AN	A3,DWTST,A6 
	RF(Z)	TIOQ05	DEVICE BUSY 
TIO030	EQU	*
	AN	A3,DWTST,A6 
	RF(Z)	TIOQ20	DEVICE BUSY 
TIO035	EQU	*
	SC	A2,DWTOR,A6	STORE DWT INDEX 
	LDK	A2,/40	CHECK IF ECHO 
	ANR	A2,A7
	RF(Z)	TIO100	NOT ECHO
	LDKL	A2,TIODM
	CW	A2,DWTADR,A6
	RF(E)	TIO090	DM-REQUEST
	LD	A2,DWTECH,A6	LOAD ECHO DEVICE 
	RF(Z)	TIO100	NO ECHO DEVICE
	LDKL	A10,/100	BIT 7=INPUT DEVICE 
	ANR*	A10,A6	ECHO ALLOWED?
	RF(Z)	TIO100	NO! 
	LDKL	A10,/0800	ATTACH BIT
	AN	A10,DWTST,A2
	RF(Z)	TIO040	ECHO DEVICE NOT ATTACHED
	CW	A5,DWTTAB,A2
	RF(NE)	TIOQ10	ECHO ATTACHED TO OTHER TASK
	AN	A3,DWTST,A2 
	RF(Z)	TIOQ00	ECHO DEVICE BUSY
TIO040	AN	A3,DWTST,A2 
	RF(Z)	TIOQ10	ECHO DEVICE BUSY
	LDKL	A3,/A000
	XRS	A3,DWTST,A2	UPDATE BUSY AND ECHO IN DWT


* 
*	UPDATE ECB AND DWT FIELDS 
* 

TIO090	LDKL	A3,/A000	BUSY AND EA BIT FOR DM 

TIO100	XRS	A3,DWTST,A6	UPDATE BUSY AND ECHO IN DWT
	LDKL	A3,/7FFF
	ANRS	A3,A8	RESET BIT 0 IN ECB FILE-CODE
	CM	ECBEL,A8	 -EFFECTIVE LENGTH 
	CM	ECBRC,A8	 -RETURN CODE
	LDR	A3,A7	SAVE CODE
	ANK	A7,/3F 
	SC	A7,DWTOR+1,A6	STORE ORDER IN DWT
	LDKL	A2,TIODM
	CW	A2,DWTADR,A6	DM REQUEST?
	RF(E)	TIO110	YES!
	ST	A5,DWTTAB,A6	SAVE TTAB ADDRESS IN DWT 
	RF	TIO120
TIO110	EQU	*
	ST	A5,DWTTDM,A6	SAVE TTAB ADDRESS IN DWTTDM
TIO120	EQU	*
	ST	A8,DWTECB,A6	 -ECB ADDRESS
	EJECT

* 
*	UPDATE DWTWAT (WAIT/ACTIVE INDICATOR) 
* 

	LDR	A2,A4	CHECK PARAMETER
	RF(NZ)	TIO200	I/O AND ACTIVATION 

	ANK	A3,/80	NORMAL I/O CHECK IF WAIT REQUESTED
	RF(Z)	TIO220	NOT WAIT
	LDK	A4,1	INDICATE WAIT 
	RF	TIO230
TIO200	LD	A3,SRUN	SEGM. POINTER 
	RF(Z)	TIO210	JUMP IF ROOT
	SU	A2,2,A3	RELATIVE ADDRESS

TIO210	CF	A15,GETBLK	SAVE PARAMETER AND DISPATCH ADDRESS
TIO220	CF	A15,QTJOB	QUEUE TASK FOR DISPATCHING

TIO230	ST	A4,DWTWAT,A6	STORE WAIT/ACTIVE INDICATOR
	LDK	A5,DWTSB2	LOAD STACK BASE 2 IN A5
	ADR	A5,A6
	ABI*	DWTADR,A6	GO TO DRIVER ACTIVATION 
	EJECT
* 
*  QUEUE ECHO DEVICE FIRST
* 
TIOQ00	LDR	A6,A2

* 
*    QUEUE DEVICE FIRST 
* 
TIOQ05	EQU	*
	ADK	A6,DWTTQ	GET QUEUE ANCHOR
	LDR	A2,A6
	LDR*	A6,A6 
	RF	TIOQ40	INSERT FIRST IN QUEUE

TIOQ10	LDR	A6,A2	QUEUE ECHO DEVICE

TIOQ20	ADK	A6,DWTTQ	GET QUEUE ANCHOR
	LC	A1,TTB:ST+1,A5	GET LEVEL
TIOQ30	LDR	A2,A6
	LDR*	A6,A6	FOLLOW QUEUE TO END 
	RF(Z)	TIOQ40	END FOUND 
	CC	A1,TTB:ST+1,A6	COMPARE LEVELS 
	RB(NL)	TIOQ30	TRY NEXT 

TIOQ40	LDK	A3,0 
	STR	A6,A5	INSERT IN QUEUE
	STR	A5,A2
	SUK	A3,4 
	LDR	A4,A4	CHECK IF ACTIVATION
	RF(Z)	TIOQ50	NO
	SUK	A3,2	YES 
TIOQ50	ADS	A3,TTB:SA,A5	UPDATE PC TO REPEAT LKM 
	RF	TPDIS 


* 
*	ERROR FILE CODE UNKNOWN 
* 

TIOERR	ST	A3,ECBRC,A8	INDICATE ERROR IN ECB 
TPQUE	CF	A15,QTJOB	QUEUE TASK FOR DISPATCING
TPDIS	ABL	TDISP 
	EJECT
* 
* 
*	W A I T 
* 
* THIS MODULE IS ENTERED WHEN THE APPLICATION PROGRAM 
* WANTS TO SYNCHRONIZE WITH A PARTICULAR EVENT. 
* IT IS CALLED BY THE LKM HANDLER WITH THE FOLLOWING
* PARAMETERS:-
* 
*  A5 = TTAB ADDRESS
* 
*  A8 = ECB ADDRESS 
* 
* 
* 
TWAIT	EQU	* 
	CF	A15,FNDDWT	SEARCH DWT ADDRESS 
	LDR	A6,A6
	RF(Z)	TAC010	FILE CODE UNKNOWN 
	LDR*	A1,A8	RETURN IF EVENT COMPLETED 
	RB(N)	TPQUE	COMPLETED
	IM	DWTWAT,A6	SET WAIT INDICATOR IN DWT 
	RB	TPDIS	GO TO DISPATCHER
	EJECT
* 
* 
*	E X I T 
* 
* 
* THIS MODULE IS ENTERED WHEN A TERMINAL PROGRAM
* EXITS. IF ANY PROGRAM IS PENDING FOR THE
* TERMINAL IT IS STARTED. 
* THIS MODULE IS CALLED BY THE LKM HANDLER
* WITH THE FOLLOWING PARAMETERS:- 
* 
*  A5 = TTAB ADDRESS
* 
* 
TEXIT	EQU	* 
	CF	A15,EXIT	CALL PROGRAM EXIT
	RB	TPDIS	GO TO DISPATCHER
	EJECT
* 
* 
*	T A C T O T 
* 
* 
* THIS MODULE IS ENTERED FROM THE LKM HANDLER 
* WHEN A TERMINAL HAS TO BE ACTIVATED.
* 
* THE FOLLOWING PARAMETERS ARE SUPPLIED:- 
*  A1 = PARAMETER WHEN A4 NOT ZERO
*  A4 = START ADDRESS AT ACTIVATION, ELSE ZERO
*  A5 = TTAB
*  A7 = IDENTIFICATION FOR TERMINAL TO BE ACTIVATED 
* 
* 
TACTOT	EQU	*
	CF	A15,FNDTID	FIND TTAB ADDRESS
	LDR	A2,A2
TAC010	EQU	*
	ABL(Z)	LKMRQE	TERMINAL NOT IN SYSTEM 
	CF	A15,QTJOB	QUEUE CALLING TERMINAL FOR DISPATCHING
	LDR	A5,A2
	LDR	A2,A4
	RB(Z)	TPQUE	RESTART: QUEUE FOR DISPATCHING 
	LD	A3,SRUN	SEGMENT POINTER 
	RF(E)	TAC020	JUMP IF ROOT
	SU	A2,2,A3	RELATIVE ADDRESS
TAC020	EQU	*
	LDK	A7,0	ABORT PARAMETER 
	CF	A15,ACTOT	ACTIVATION
	RB	TPDIS	GO TO DISPACHER 
	EJECT
* 
* 
*	T P A U S E 
* 
* 
TPAUSE	EQU	TPDIS	GO TO DISPATCHER 
* 
	END

Full view