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

⟦1f696ee15⟧

    Length: 14246 (0x37a6)
    Notes: pts_type(SC)
    Names: »TIOEDM.SC«

Derivation

└─⟦13e5fd45a⟧ Bits:30009699 Philips computer tape "600507"
    └─⟦this⟧ »TOSSWORK/TIOEDM.SC« 
└─⟦bc20f3abf⟧ Bits:30009670 Philips computer tape "600126"
    └─⟦this⟧ »TOSSWORK/TIOEDM.SC« 

PTS(SC)

	IDENT TIOEDM 	REL 11.0 81-03-31 870105041100 

			=3 CLEAR STATUS FOR ADM
			=3 81-02-19
			=2, COMMIT,$E PENDING AND EXIT R.C DESTROYED 
			=2, REL 11.0 81-01-30
			=1 RECOVERY AT ERR 
			=1 81-01-26
* 
* 
****************************************************
* 
*   PHILIPS TERMINAL SYSTEM PTS 
* 
*   TIOEDM  = EXTENDED DATA MANAGEMENT I/O
*   TENEDM = TOSS EDM END I/O LKM PROCESSOR 
* 
* 
* 
* 
* 
****************************************************
* 
* 
*   CREATION OF PARAMETER BLOCK FOR EDM 
*   AND ACTIVATION OF EDM TASK
	EJECT		TIOEDM
* 
* 
*********** 
* ENTRIES * 
*********** 
* 
* 
	ENTRY	TIOEDM	I/O NORMAL ENTRY
	ENTRY	TIOECR	COMMIT/ROLLBACK ENTRY 
	ENTRY	TENEDM	END IO EDM
	ENTRY	PABORD 
	ENTRY	PABFC
	ENTRY	PABBA
	ENTRY	PABRL
	ENTRY	PABCW1 
	ENTRY	PABCW2 
	EJECT		TIOEDM
* 
* 
************* 
* EXTERNALS * 
************* 
* 
* 
	EXTRN	DMTIDP	PRIMARY EDM TASK TABLE
	EXTRN	DMTIDS	SECONDARY EDM TASK TABLE
	EXTRN	DWDM01 
	EXTRN	DWTTAB	TTAB ADDRESS
	EXTRN	DWTECB	ECB ADDRESS 
	EXTRN	FWTFNR	FILE NUMBER 
	EXTRN	FWTVOL	VOLUME FILE CODE 1ST EXTENT 
	EXTRN	DFTAB	DISC FILE CODE TABLE 
	EXTRN	DFTABL	LGTH OF DFTAB 
	EXTRN	SCTNOF 
	EXTRN	SCTFWT 
	EXTRN	SCTCDT	CD TABELL 
	EXTRN	MOVUU
	EXTRN	LKMRQE 
	EXTRN	DISIOE	TERM OF IO REQUEST
	EXTRN	LKMQDI	QUEUE AND DISPATCH
	EXTRN	QTJOB	QUEUE TASK 
	EXTRN	DISEND 
	EXTRN	TTB:SA	DISPATCH ADDRESS
	EXTRN	TTB:ID	TASK IDENTIFIER 
	EXTRN	TTB:TD 
	EXTRN	ACTDIS	ACTOT AND DISPATCH
	EXTRN	FNDTID	FIND TTAB ADDRESS FROM TASK ID
	EXTRN	TASHLT	HALT AND LIGHT SOP SWITCHES 
* 
	EJECT		TIOEDM
* 
* 
	EXTRN	ECBRC	RETURN CODE
	EXTRN	ECBEL	EFFECTIV LENGTH
	EXTRN	ECBBA	ECB BUFFER ADDRESS 
	EXTRN	ECBRL	ECB REQUESTED LENGTH 
	EXTRN	ECBCW1	ECB CONTROL WORD 1
	EXTRN	ECBCW2	ECB CONTROL WORD 2
	EXTRN	EXIT	
	EXTRN	SCTMOX	TABLE WITH DISPATCH ADDRESSES 
* 
	EJECT			TIOEDM 
* 
* 
***************************************** 
* 
*	CONDITIONAL ASSEMBLY
* 
***************************************** 
* 
*	A PROGRAM VERSION USING TOSS MMU PAGING 
*	IS OBTAINED BY SETTING MMUPAG EQU 1.
* 
MMUPAG	EQU	0
* 
* 
*	A PROGRAM VERSION USING THE EXTENDED INSTRUCTION
*	SET IS OBTAINED BY SETTING CPU852 EQU 0.
* 
CPU852	EQU	1
* 
	EJECT		TIOEDM
* 
* 
************* 
* CONSTANTS * 
************* 
* 
* 
* 
*		BASE PARAMETER BLOCK DISPLACEMENTS 
* 
PABORD	EQU	2	ORDER WORD 
PABFC	EQU	4	FILE CODE 
PABBA	EQU	6	BUFFER ADDRESS
PABRL	EQU	8	REQUESTED LENGTH
PABCW1	EQU	10	CONTROL WORD 1
PABCW2	EQU	12	CONTROL WORD 2

* 
	EJECT		TIOEDM
* 
**********
* TIOEDM *
**********
* 
*   THIS MODULE IS ENTERED FROM TIO 
*   WITH THE FOLLOWING PARAMETERS:
* 
*   INPUT:   A6 = FWT ADDRESS 
*            A8 = ECB ADDRESS 
* 
*   OUTPUT:  A1 = ADDRESS OF PARAMETER BLOCK
*            A2 = EDM TASK IDENTITY (VIA ACTOT) 
*            A4 = USER TASK IDENTITY
* 
*	CREATE PARAMETER BLOCK FOR NORMAL I/O 
* 
TIOEDM	EQU	*
	LD	A5,DWTTAB,A6	USER TTAB
	AD	A5,TTB:TD,A5	DEVICE TABLE LENGTH
	ADKL	A5,TTB:TD	BASE PAR BLOCK ADDR 
	LDR*	A2,A5	ACT TYPE
	OR	A2,PABORD,A5	ORDER WORD 
	RF(NZ)	REQER2	OTHER REQ BUSY	=1
	CWK	A6,DWDM01	LOCAL DWT
	RF(E)	TIOE05	OPEN
	LD	A2,FWTFNR,A6	FILE NUMBER
TIOE05	EQU	*
	ANK	A2,/FF 
	STR	A2,A5
	LD	A7,DWTTAB,A6	USER TTAB ADDR 
	LD	A7,TTB:SA+14,A7	ORDER CODE
	ST	A7,PABORD,A5	ORDER WORD 
	EJECT		TIOEDM
* 
* 
	IFT	CPU852=1 
	LDR*	A2,A8	1ST ECB 
	ST	A2,PABFC,A5	FILE CODE 
	LD	A2,ECBBA,A8 
	ST	A2,PABBA,A5	BUFFER ADDRESS
	LD	A2,ECBRL,A8 
	ST	A2,PABRL,A5	REQUESTED LENGTH
	LD	A2,ECBCW1,A8
	ST	A2,PABCW1,A5	CONTROL WORD 1 
	LD	A2,ECBCW2,A8
	ST	A2,PABCW2,A5	CONTROL WORD 2 
	XIF
* 
	IFT	CPU852=0 
	MLR	3,A8	FC,BA,RL
	MS	3,PABFC,A5
	ML	2,ECBCW1,A8 
	MS	2,PABCW1,A5 
	XIF
* 
	EJECT		TIOEDM
* 
*	ACTIVATE PRIMARY OR SECONDARY EDM TASK
* 
	LDR	A1,A5	PARAMETER BLOCK ADDRESS
	INH
	LDR	A5,A7	ORDER
	LDKL	A7,'$D'	TASK ID 
	CWK	A6,DWDM01
	RF(E)	TIOE50	FILE NOT OPENED 
	ANK	A5,/7F 
	SUK	A5,/21 
	RF(Z)	REQER1	OPEN
	SUK	A5,/22-/21 
	RF(Z)	TIOE40	CLOSE 
	LDKL	A3,DFTABL	LENGTH OF FILE CODE TABLE 
	LC	A2,FWTVOL,A6	VOLUME FILE CODE 
TIOE20	EQU	*
	SUK	A3,1 
	RF(N)	ERRHLT	FILE CODE NOT IN TABLE
	CC	A2,DFTAB,A3 
	RB(NE)	TIOE20	FILE CODE NOT FOUND
	LC	A7,DMTIDP,A3
	ADK	A7,'D' 
	CF	A15,FNDTID	TTAB ADDRESS 
	LDR	A5,A2	TTAB ADDRESS 1ST EDM TASK
	RF(Z)	ERRHLT	TTAB NOT FOUND
	LD	A4,TTB:SA,A2	DISPATCHER ADDRESS 
	RF(Z)	TIOE70	TASK NOT ACTIVE 
	LC	A7,DMTIDS,A3	SECONDARY
	ADK	A7,'D' 
	RF	TIOE50
	EJECT		TIOEDM
* 
* 
TIOE40	EQU	*	CLOSE
	LDR	A4,A6	DWT ADDRESS
	CF	A15,FND:FC	FIND FILE CODE ENTRY 
	LD	A4,DWTTAB,A6	USER TTAB ADDR 
	SLC	A4,3 
	XRR*	A4,A3	COMPARE IDENTITIES
	ANKL	A4,/FF00
	RF(NZ)	REQER1	WRONG TASK 
	SCR	A4,A3	CLEAR ID/STATUS BYTE FOR ADM	=3
	LDKL	A4,DWDM01	DWT ADDRESS 
	ST	A4,2,A3	IN TABLE
* 
	EJECT		TIOEDM
* 
* 
**********
* TIOECR *
**********
* 
* 
*   COMMIT ROLLBACK ENTRY FROM TIODM
*   ACTIVATE EDM TASK 
* 
* 
TIOECR	EQU	*
TIOE50	EQU	*
	CF	A15,FNDTID
	LDR	A5,A2	TTAB ADDRESS 2ND EDM TASK
	RF(NZ)	TIOE70	TTAB FOUND 
* 
	EJECT		TIOEDM
* 
* 
ERRHLT	EQU	*
	ABL	TASHLT 
* 
*	REQUEST ERROR 
* 
*   TERMINATE ERRONEOUS IO
*    A6 = FWT ADDR
* 
* 
REQER1	EQU	*
	CMR	A1	FREE PARAM BLOCK	=1 
	CM	PABORD,A1	FREE PARAM BLOCK	=1 
REQER2	EQU	*		=1
	ABL	DISIOE 
REQERR	EQU	*
	ABL	LKMRQE 
* 
	EJECT
* 
TIOE70	EQU	*
	LD	A4,SCTMOX	START ADDRESS OF DISPATCH ADDRESS TABLE 
	LDR	A2,A4
	ADR*	A2,A4	END ADDRESS 
	SUK	A4,2	ADJUST POINTER
TIOE80	EQU	*
	ADK	A4,4	NEXT ENTRY
	CWR	A4,A2
	RB(E)	ERRHLT	TASK ID NOT IN TABLE
	CWR*	A7,A4 
	RB(NE)	TIOE80	NOT SAME TASK ID 
	LD	A2,2,A4	GET DISPATCH ADDRESS
	LDR*	A4,A1	ORDER CODE
	SUKL	A4,/100	COMMIT
	RF(Z)	TIOE90	COMMMIT 
	LD	A4,DWTTAB,A6	CALLING TASK TTAB
	RF	TIOE91
TIOE90	LDR	A4,A6	TTAB USER
TIOE91	EQU	*
	LD	A4,TTB:ID,A4	CALLING TASK TASK ID 
	ABL	ACTDIS	ACTIVATE AND DISPATCH 
* 
	EJECT			TIOEDM 
* 
* 
**********
* TENEDM *
**********
* 
* 
*   THIS IS THE EDM END I/O LKM PROCESSOR.
* 
*   IT IS ENTERED FROM THE LKM HANDLER
*   WITH THE FOLLOWING PARAMETERS:
* 
*   A5 = TTAB CALLING TASK
*   A7 = FUNCTION PARAMETER 
*        BIT15=1 MEANS IMPLICIT EXIT PERFORMED
*        BIT14=1 MEANS IMPLICIT MOVE OF BUFFER FROM EDM-TASK
*        BIT13=1 MEANS ANNULING OF REQUEST WITHOUT ACTIVATION OF USER TASK
*        BIT12=1 MEANS END I/O OF AN OPEN REQUEST 
*        BIT11=1 MEANS TERMINATION OF COMMIT/ROLLBACK 
*   A8 = BUFFER ADDRESS IN EDM TASK OR TASK ID
* 
TENEDM	EQU	*
	SRC	A7,5	BIT 11 TO SIGN BIT
	RF(NN)	EIO090	NOT COMMIT,ROLLBACK
	LD	A6,TTB:SA+4,A5	GET RETURN CODE	=2 
	EJECT
* 
*   TERMINATION OF COMMIT/ROLLBACK
* 
	SLC	A7,4	BIT 15 TO SIGN BIT
	RF(NN)	EIO070	NO EXIT
	CF	A15,EXIT
	RF	EIO080
EIO070	CF	A15,QTJOB	ACT EDM 
EIO080	EQU	*
	LDR	A7,A8	TASK ID
	CF	A15,FNDTID	GET TTAB IN A2 
	LDR	A5,A2	TTAB 
	RB(Z)	ERRHLT	NO TASK ID
	ADK	A6,0	TEST IF R.C. OK	=2
	RF(Z)	EIO085	NO ERROR
	ST	A6,TTB:SA+14,A5	ERR CODE
EIO085	EQU	*
	LDR	A6,A5	USER TTAB
	AD	A6,TTB:TD,A6	 
	CM	TTB:TD,A6	MARK PAR BLOCK FREE 
	CM	TTB:TD+2,A6	DITTO 
	ABL	LKMQDI	QUEUE AND DISPATCH
	EJECT
* 
*   TERMINATION OF I/O REQUEST
* 
EIO090	SLC	A7,1	BIT 12 TO SIGN BIT
	LD	A1,TTB:SA+10,A5	FILE NUMBER 
	RB(N)	REQERR	FILE NUMBER < 0, REQUEST ERROR
	RF(Z)	EIO103	OPEN,DO EXIT,FILE NBR=0 
	CW	A1,SCTNOF	NUMBER OF FILES 
	RB(G)	REQERR	REQUESTED FILE NUMBER TOO BIG 
	LDKL	A6,SCTFWT	POINTER TO FWT ANCHOR 
* 
EIO100	EQU	*
	LDR*	A6,A6	GET NEXT FWT
	SUK	A1,1 
	RB(P)	EIO100	NEXT FILE 
	ANKL	A6,/FFFE	MAKE ADDRESS EVEN JUST IN CASE 
* 
	EJECT			TIOEDM 
* 
*	FILE FOUND, GET TTAB AND ECB OF USER TASK 
* 
	LDR	A1,A8	SOURCE BUFFER ADDRESS
	LDR	A7,A7
	RF(NN)	EIO105	NOT OPEN ORDER 
	LDKL	A4,DWDM01	LOCAL DWT ADDR
	CF	A15,FND:FC	FILE CODE ENTRY IN TABLES
	ADK	A3,0 
	RB(Z)	REQERR	FILE CODE NOT FOUND 
	ST	A6,2,A3	SAVE FWT ADDRESS
	LDKL	A6,DWDM01	LOCAL DWT FWT 
	LD	A6,DWTTAB,A6	USER TTAB AADDDR 
	SRC	A6,5 
	SCR	A6,A3	MARK FILE CODE FOR ONE TASK
EIO103	EQU	*
	LDKL	A6,DWDM01	LOCAL DWT ADDRESS 
EIO105	EQU	*
	LD	A8,DWTECB,A6	GET USER ECB 
	LD	A4,DWTTAB,A6	TTAB USER TASK 
	LDR	A2,A4	USER TTAB
	AD	A2,TTB:TD,A4
	CM	TTB:TD,A2	MARK PARAM BLOCK FREE 
	CM	TTB:TD+2,A2	DITTO 
	SLC	A7,1	BIT 13 TO SIGN BIT
	RF(NN)	EIO110	NO CANCEL OF REQUEST 
* 
*	CANCELLING OF REQUEST 
* 
	CM	DWTECB,A6	PREPARE FOR TENDIO
	LDKL	A2,-4	ADJUST USER DISPATCH ADDRESS
	ADS	A2,TTB:SA,A4 
	SLC	A7,1 
	RF	EIO120	TEST IF EXIT 
* 
EIO110	EQU	*
	SLC	A7,1	BIT 14 TO SIGN BIT
	RF(NN)	EIO120	NO MOVE
* 
*	MOVE FROM EDM TASK TO USER BUFFER 
* 
	LD	A2,ECBBA,A8	DESTINATION BUFFER ADDRESS
	LD	A3,TTB:SA+2,A5	BUFFER LENGTH
	CF	A15,MOVUU	MOVE FROM USER TO USER
	LD	A8,DWTECB,A6	RESET USER ECB ADDR
	EJECT			TIOEDM 
* 
* 
EIO120	EQU	*
	IFT	CPU852=1 
	LD	A1,TTB:SA+2,A5	FILL ECB 
	ST	A1,ECBEL,A8 
	LD	A2,TTB:SA+4,A5
	ST	A2,ECBRC,A8 
	LD	A3,TTB:SA+6,A5
	ST	A3,ECBCW1,A8
	LD	A4,TTB:SA+8,A5
	ST	A4,ECBCW2,A8
	XIF
* 
	IFT	CPU852=0 
	ML	4,TTB:SA+2,A5	EFF.LEN,RTN CODE,CW1,CW2
	MS	4,ECBEL,A8	EFF.LEN,RTN CODE,CW1,CW2 
	XIF
* 
	SLC	A7,1	BIT 15 TO SIGN BIT
	RF(NN)	EIO130	NO EXIT
* 
*	EXIT
* 
	CF	A15,EXIT	A5 = TTAB CALLING TASK 
* 
*	END I/O 
* 
EIO130	EQU	*
	LDK	A1,0	RETURN CODE ALREADY SET 
	ABL	DISEND	TENDIO AND TDISP
	EJECT		TIOEDM
* 
* 
**********
* FND:FC *
**********
* 
* 
*   FIND ENTRY CORRESPONDING TO FILE CODE 
*   FROM CDTAB OR TTAB
* 
* 
*   INPUT :  A4 = DWT ADDRESS 
* 
*   OUTPUT:  A3 = ADDRESS TO ENTRY
*            A3 = 0  IF NO ENTRY
*            A2 = FILE CODE 
*            A4 = USED
*            A8 = ECB ADDRESS 
* 
FND:FC	EQU	*
	LD	A8,DWTECB,A4	ECB ADDRESS
	LDR*	A2,A8	FILE CODE 
	ANK	A2,/FF 
	LD	A4,DWTTAB,A4	TTAB ADDRESS 
	ADKL	A4,TTB:TD	ADDRESS TO DEVICE TABLE 
	LDR*	A3,A4	LENGTH OF DEVICE TABLE
	ADR	A3,A4	END OF TABLE ADDRESS 
	ADK	A4,2	BEG OF TABLE ADDRESS
FND:10	EQU	*
	CWR	A3,A4
	RF(E)	FND:20	TABLE SEARCHED
	SUK	A3,4 
	CC	A2,1,A3	FILE CODES
	RF(E)	FND:50	ENTRY FOUND 
	RB	FND:10	NEXT ENTRY 
* 
	EJECT		TIOEDM
* 
* 
FND:20	EQU	*
	LD	A4,SCTCDT	COMMON DEVICE TABLE 
	LDR*	A3,A4	LENGTH
	ADR	A3,A4	END OF TABLE ADDRESS 
	ADK	A4,2	BEG OF TABLE ADDRESS
FND:40	EQU	*
	CWR	A3,A4
	RF(E)	FND:45	TABLE SEARCHED
	SUK	A3,4 
	CC	A2,1,A3	FILE CODES
	RF(E)	FND:50	FILE CODE FOUND 
	RB	FND:40	NEXT ENTRY 
FND:45	EQU	*
	LDK	A3,0	INDICATE ENTRY NOT FOUND
FND:50	EQU	*
	RTN	A15
* 
* 
	END

Full view