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

⟦cce684cfb⟧

    Length: 14352 (0x3810)
    Notes: pts_type(SC)
    Names: »DRSOP1.SC«

Derivation

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

PTS(SC)

	IDENT DRSOP1 	REL 11.0 81-01-26 870105041100 

* 
* 
************************************************************
* 
*   PHILIPS TERMINAL SYSTEM PTS 
* 
*   DRSOP1 = DRIVER FOR SYSTEM OPERATORS PANEL
* 
* 
* 
* 
* 
* 
************************************************************
* 
* 
*   THIS DRIVER HANDLES INPUT AND OUTPUT ON SYSTEM OPERATOR'S 
*   PANEL CONNECTED TO CPU VIA CHCR-SOP 
* 
* 
*   ON AN INPUT REQUEST THE DEVICE SOFTWARE STATUS IS SET 
*   'BUSY' UNTIL THE INPUT INTERRUPT IS TAKEN CARE OF 
* 
* 
*   AT POWER UP RUNNING READ REQUEST IS COMPLETED WITH -2 
*   IN CONTROL WORD.IF NO RUNNING READ REQUEST,POWER UP 
*   IS INDICATED AND NEXT READ REQUEST IS TERMINATED WITH 
*   -2 IN CONTROL WORD
* 
* 
*   ON AN OUTPUT REQUEST THE DEVICE SOFTWARE STATUS IS SET
*   'READY' IMMEDIATELY, SINCE THE OUTPUT DOES NOT REQUIRE
*   AN INTERRUPT. 
* 
	EJECT
* 
* 
*   THE DRIVER CONSISTS OF THE FOLLOWING PARTS: 
* 
*   S O P A S :	READ SWITCHES ENTRY 
* 
*   S O P A L :	ACTIVATE LIGHTS ENTRY 
* 
*   I H S O P :	INTERRUPT HANDLER 
* 
*   S O P R :	RECOVERY ROUTINE
* 
* 
* 
*   THE FOLLOWING ORDERS ARE TREATED: 
* 
*   ORDER 02 :	READ SWITCHES
*         05 :	WRITE LIGHTS ON
*         06 :	WRITE LIGHTS OFF 
*         39 :    WRITE FLASHING LIGHTS 
* 
*   NORMAL REGISTER USAGE:
* 
*   REGISTER A1:	INPUT/OUTPUT 
*            A2:	WORK REGISTER
*            A3:	WORK REGISTER
*            A4:	WORK REGISTER
*            A5:	   ----
*            A6:	DWT-ADDRESS
*            A7:	ORDER
*            A8:	ECB-ADDRESS
* 
* 
	EJECT
* 
************
* ENTRIES: *
************
* 
* 
	ENTRY	SOPCT	S.O.P. CHANNEL UNIT TABLE
	ENTRY	SOPR	S.O.P. RECOVERY ROUTINE 
	ENTRY	IHSOP	S.O.P. INTERRUPT HANDLER (ALIAS) 
	ENTRY	DWSI01	INPUT DWT 
	ENTRY	DWSI02	EXTENDED INPUT DWT
	ENTRY	DWSO01	OUTPUT DWT
* 
**************
* EXTERNALS: *
**************
* 
*  TOSS GLOBALS:
* 
	EXTRN	SAVE8	PUSH REGS A1-A8 ONTO STACK 
	EXTRN	DISIOE	DISPATCHER I/O REQUEST ERROR ENTRY
	EXTRN	TDISP	DISPATCHER LKM ENTRY 
	EXTRN	RETUR8	POP A1-A8 CONT'S AND RETURN 
	EXTRN	TENDIO	END-OF-I/O HOUSEKEEPING AND QUEUEING SUBROUTINE 
	EXTRN	SETIMP 
	EXTRN	SPDLCI	DATA SOP LIGHTS AND FD POWER
	EJECT

* 
************************************
* 
*   DWT DISPLACEMENTS 
* 
************************************
* 
	EXTRN	DWTCHP	CHANNEL PARAMETER 
	EXTRN	DWTST	STATUS 
	EXTRN	DWTECB	ECB ADDRESS 
	EXTRN	DWTOR	DWT INDEX AND ORDER
	EXTRN	DWTADR	DRIVER ADDRESS BLOCK
	EXTRN	DWTTAB	TTAB ADDRESS
	EXTRN	DWTWAT	WAIT/ACTIVATE INDICATOR 
	EXTRN	DWTTQ	TERMINAL QUEUE 
	EXTRN	INTSAV	SAVE AREA FOR LAST INTERRUPT
	EXTRN	ECBEL	EFFECTIVE LENGTH IN ECB
	EXTRN	ECBCW	ECB CONTROL WORD 
TIME	EQU	5	FLASH TIME 
	EJECT
*	CONDITIONAL ASSEMBLY
*	EXTENDED SOP INPUT DWT OR NOT 
*	SOPX=0 => NOT EXTENDED
* 

X:A	EQU	0 
SOPX	EQU	X:A
**
**
*   THE ORDER /39, WRITE FLASHING LIGHTS CAN BE INCLUDED BY 
*   SETTING X:B=1 
* 
X:B	EQU	0 
WRFLA	EQU	X:B 
* 
* 
*	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
* 
DVBLEN	EQU	0	MMU BUFFER SIZE
DEVIND	EQU	-2	SOP DEVICE INDEX
* 
	EJECT
* 
* 
DWTDRD	EQU	/10	START OF DRIVER DEFINED PART 
* 
	IFT	MMUPAG=0 
START	EQU	DWTDRD
	XIF
* 
	IFT	MMUPAG=1 
START	EQU	DWTDRD+4
	XIF
* 
DWTTP	EQU	START+/00	TIMER POINTER 
* 
	EJECT
* 
**************************
* S.O.P. DEVICE ADDRESS: *
**************************
* 
* 
SOPDA	EQU	/2E	DEVICE ADDRESS
* 
* 
* 
******************************
*                            *
*  S.O.P. CHANNEL UNIT TABLE *
*                            *
******************************
* 
* 
SOPCT	EQU	*	TABLE STARTS WITH ADDRESS BLOCK:
* 
	DATA	DVBLEN	MMU BUFFER SIZE
	DATA	DEVIND	DEVICE INDEX 
SOPADI	EQU	*	INPUT ADDRESS BLOCK (FOR READ ORDERS)
* 
	DATA	SOPAS	ACTIVATE SWITCHES ENTRY 
	DATA	0	ABORT ROUTINE ADDRESS 
* 
	DATA	DVBLEN	MMU BUFFER SIZE
	DATA	DEVIND	DEVICE INDEX 
SOPADU	EQU	*	ACTIVATE LIGHTS ENTRY
* 
	DATA	SOPAL	ACTIVATE LIGHTS ENTRY 
	DATA	0	ABORT ROUTINE ADDRESS 
* 
*			BIT 0 CONTROLS FD POWER 
*			(0=ON, 1=OFF) 
	EJECT
* 
******************************
*                            *
* S.O.P. ACTIVATION ROUTINE: *
*                            *
******************************
* 
*   THE ORDER IS ANALYZED AND THE CORRESPONDING I/O ACTION
*   IS CARRIED OUT. 
* 
SOPAS	EQU	*	SWITCHES ACTIVATION ENTRY 
* 
	LDR	A4,A7	COPY ORDER 
* 
	SUK	A4,/02	SEE IF READ ORDER:
* 
	RF(NZ)	SOPER	ERROR IF NOT READ ORDER 
* 
*   INPUT SWITCH VALUE
* 
SOPIN	LDR*	A2,A6	POWER UP INDICATION ?
	RF(NZ)	EXIT	NO 
	STR	A7,A6	YES
	RF	IHSOP3
* 
	EJECT
* 
*    ENTRY FOR CHANGES OF S.O.P. LIGHTS 
* 
SOPAL	EQU	*	ACTIVATE LIGHTS ENTRY 
* 
	LD	A3,10,A8	CHANGED LIGHTS 
	ANKL	A3,/07FF	BITS 5-15 CONTROLS LIGHTS
* 
	LDR	A4,A7	COPY ORDER 
	IFT	WRFLA=1
	CCK	A4,/3939 
	RF(E)	SOPFL
	XIF
	SUK	A4,/37 
	RF(Z)	SOPON	IF SO, TURN ON LIGHTS
* 
	SUK	A4,1	SEE IF LIGHTS OFF ORDER 
	RF(Z)	SOPOFF 
SOPER	ABL(NZ)	DISIOE	ILLEGAL ORDER
	IFT	WRFLA=1
	EJECT
* 
* 
*     FLASH LIGHTS
* 
* 
SOPFL	EQU	* 
	LD	A4,DWTTP,A6 
	RF(NE)	FL010	TIMER ALREADY STARTED 
	LDK	A4,DWTTP 
	ADR	A4,A6
	LDR	A1,A6
	CF	A15,SETIMP
	DATA	FLTUT,TIME
	ST	A4,DWTTP,A6 
	LDKL	A1,/FFBF
	ANS	A1,DWTST,A6	SET ON FLAG
FL010	EQU	* 
*    A3 CONTAINS LIGHTS THAT SHOULD FLASH 
	ORS	A3,FLASH	STORE NEW LAMPS TO FLASH
FL015	LD	A1,DWTST,A6
	ANK	A1,/40 
	RF(Z)	FL020
	ORS	A3,SPDLCI	FIXA TILL DET HELA!
	RF	SOPONOFF
FL020	EQU	* 
	C1R	A3,A3
	ANS	A3,SPDLCI
	RF	SOPONOF 
* 
	EJECT
* 
FLTUT	EQU	*	FLASH TIME OUT
	LDKL	A6,DWSO01 
	LD	A3,FLASH
	RF(Z)	FL030	NO MORE FLASHING FOR THIS TIME 
	LDKL	A1,-TIME	RESTART TIMER
	ST*	A1,DWTTP,A6
	LDK	A1,/40 
	XRS	A1,DWTST,A6
	RB	FL015 
FL030	CM	DWTTP,A6 
	RF	EXIT	END I/O
	XIF
	EJECT
* 
SOPOFF	EQU	*
	C1R	A3,A3	GET COMPLEMENTED CONTROL WORD
	ANS	A3,SPDLCI	MASK OUT LIGHTS TO BE TURNED OFF 
	IFT	WRFLA=1
	ANS	A3,FLASH	STOP SOME FLASHING
	XIF
	RF	SOPONOF	BRANCH TO COMMON ON/OFF PATH
* 
* 
*  TURN ON LIGHTS INDICATED BY '1' BITS:
* 
SOPON	EQU	* 
*    A3 CONTAINS CONTROL WORD 
	ORS	A3,SPDLCI	SET LIGHTS TO BE TURNED ON 
	IFT	WRFLA=1
	C1R	A3,A3
	ANS	A3,FLASH	STOP SOME OTHER FLASHING
	XIF
* 
*  COMMON ON/OFF PATH:
* 
SOPONOFF	LD	A1,SPDLCI	GET LIGHTS' CORE IMAGE
	OTR	A1,0,SOPDA	AND OUTPUT TO S.O.P.
* 
	RF	ENDIO	PERFORM TENDIO
	EJECT
* 
****************************
*                          *
* S.O.P. INTERRUPT HANDLER *
*                          *
****************************
* 
* 
*   THE INTERRUPT HANDLER WILL TAKE CARE OF ALL INTERRUPTS. 
* 
*   IF NO REQUEST IS IN PROCEEDING THE INTERRUPT IS IGNORED.
* 

IHSOP	EQU	* 
	IFT	CPU852=1 
	CF	A15,SAVE8	SAVE A1-A8 ON STACK 
	XIF
* 
	IFT	CPU852=0 
	MSR	8,A15	SAVE A1-A8 ON STACK
	XIF
* 
	ST	P,INTSAV	SAVE LAST INTERRUPT
	INR	A1,0,SOPDA	GET SWITCH
	SRN	A1,A2	CALC INDEX 
	ADK	A2,1 

IHSOP1	EQU	*
	IFF	SOPX=0 
	LDKL	A6,DWSI02	ANY REQUEST ON
	LD	A4,DWTST,A6	STATUS WORD 
	RF(N)	IHSOP2	NO
	LD	A8,DWTECB,A6	GET ECB-ADDRESS
	ST	A2,ECBCW,A8	STORE INDEX 
	CM	ECBEL,A8	RESET EFFECTIVE LENGTH 
	LDK	A1,0 
	CF	A15,TENDIO	END I/O
	XIF

IHSOP2	LDKL	A6,DWSI01	ANY REQUEST ON
	LD	A4,DWTST,A6	STATUS WORD 
	RF(N)	EXIT	NO
	LD	A8,DWTECB,A6	GET ECB-ADDRESS

IHSOP3	ST	A2,ECBCW,A8	STORE INDEX 

ENDIO	CM	ECBEL,A8	RESET EFFECTIVE LENGTH
	LDK	A1,0 
	CF	A15,TENDIO	END I/O

EXIT	ABL	TDISP	GO TO DISPATCHER 
	EJECT
* 
************************************* 
*                                   * 
* S.O.P POWER UP RECOVERY ROUTINE   * 
*                                   * 
************************************* 
* 
* 
*   THIS ROUTINE IS A SUBROUTINE TO THE POWER FAILURE 
*   RECOVERY ROUTINE (PFAR). IT'S ENTRY POINT SHOULD
*   BE PRESENT IN THE POWER FAILURE RECOVERY TABLE (PFTAB). 
*   IF RUNNING READ REQUEST THIS IS COMPLETED WITH -2 IN
*   CONTROL WORD. ELSE -2 IS SAVED IN DWTCHP
* 
* 
SOPR 	EQU	*	ENTRY POINT 
	IFT	CPU852=1 
	CF	A15,SAVE8	SAVE A1-A8 ON STACK 
	XIF
* 
	IFT	CPU852=0 
	MSR	8,A15	SAVE A1-A8 ON STACK
	XIF
* 
	CIO	A1,1,SOPDA	ACTIVATE INPUT
* 
	LD	A1,SPDLCI	GET LIGHTS' CORE IMAGE
	OTR	A1,0,SOPDA	AND OUTPUT TO THE LIGHTS
* 
	LDK	A2,0 

	IFF	SOPX=0 
	LDKL	A6,DWSI02	ANY REQUEST ON
	LD	A4,DWTST,A6	GET STATUS WORD 
	RF(NN)	SOPR1	YES 
	STR	A2,A6	IND POWER UP 
	XIF

SOPR1	LDKL	A6,DWSI01	ANY REQUEST ON 
	LD	A4,DWTST,A6	STATUS WORD 
	RF(NN)	SOPR2	YES 
	STR	A2,A6	IND POWER UP 

SOPR2	RB	IHSOP1 
	EJECT
* 
*   D W S I 0 1 : INPUT DWT 
* 
DWSI01	EQU	*
	DATA	0	CHANNEL PARAMETER: POWER UP IND 
	DATA	/8000	/8000 MEANS DEVICE IS READY 
	DATA	0	ECB ADDRESS 
	DATA	0	ORDER 
	DATA	SOPADI
	DATA	0 
	DATA	0 
	DATA	0	TERMINAL QUEUE
	IFT	MMUPAG=1 
	DATA	0	SAVE AREA USER ECB ADDRESS
	DATA	DEVECI	MMU ECB ADDRESS
DEVECI	EQU	*
	DATA	0,0,0,0,0,0 
	XIF
* 
*   D W S O 0 1 : OUTPUT DWT
* 
* 
DWSO01	EQU	*
	DATA	/0040	CHANNEL PARAMETER 
	DATA	/8000	/8000 MEANS DEVICE IS READY 
	DATA	0	ECB ADDRESS 
	DATA	0	ORDER 
	DATA	SOPADU	POINTER TO ADDRESS BLOCK 
	DATA	0	TTAB-ADDRESS
	DATA	0	WAIT/ACTIVATE INDICATOR 
	DATA	0	TERMINAL QUEUE
	IFT	MMUPAG=1 
	DATA	0	SAVE AREA USER ECB ADDRESS
	DATA	DEVECO	MMU ECB ADDRESS
	XIF
	DATA	0	TIMER POINTER 
FLASH	DATA	0	SAVE AREA FOR FLASHING LAMPS 
	IFT	MMUPAG=1 
DEVECO	EQU	*
	DATA	0,0,0,0,0,0 
	XIF
	EJECT

* 
*   D W S I 0 2 :  EXTENDED INPUT DWT 
* 

DWSI02	EQU	*
	IFF	SOPX=0 
	DATA	0 
	DATA	/8000 
	DATA	0	ECB ADDRESS 
	DATA	0	ORDER 
	DATA	SOPADI
	DATA	0,0,0 
	IFT	MMUPAG=1 
	DATA	0	SAVE AREA USER ECB ADDRESS
	DATA	DEVEC1	MMU ECB ADDRESS
DEVEC1	EQU	*
	DATA	0,0,0,0,0,0 
	XIF
* 
* 
* 
	END

Full view