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

⟦7d2cc6d74⟧

    Length: 13990 (0x36a6)
    Notes: pts_type(SC)
    Names: »DRSOP1.SC«

Derivation

└─⟦18bf30ff4⟧ Bits:30009692 Philips computer tape "600409"
    └─⟦this⟧ »BDKMON/DRSOP1.SC« 
└─⟦71472ef1e⟧ Bits:30009661 Philips computer tape "600103"
    └─⟦this⟧ »BDKMON/DRSOP1.SC« 

PTS(SC)

	IDENT  DRSOP1 	REL=7.2  DATE=77-09-09
			UPDATE   #0   77-09-09 
* 
************************************************************
* 
*   PHILIPS TERMINAL SYSTEM PTS 
* 
*   DRSOP1 = DRIVER FOR SYSTEM OPERATORS PANEL
* 
* 
*   LEVEL     #2  77-09-09
* 
*   RELEASE   #7  77-09-09
* 
************************************************************
* 
* 
*   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:	   ----
*            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 
	EJECT

* 
************************************
* 
*   DWT DISPLACEMENTS 
* 
************************************
* 
	EXTRN	DWTCHP	CHANNEL PARAMETER 
	EXTRN	DWTST	STATUS 
	EXTRN	DWTECB	ECB ADDRESS 
	EXTRN	DWTOR	ORDER
	EXTRN	DWTADR	POINTER TO ADDRESS-BLOCK
	EXTRN	DWTTAB	TTAB-ADDRESS
	EXTRN	DWTWAT	WAIT ACTIVATE INDICATOR 
	EXTRN	DWTTQ	TERMINAL QUEUE 
	EXTRN	DWTWA	WORK AREA
	EXTRN	INTSAV	SAVE AREA FOR LAST INTERRUPT
	EXTRN	ECBCW	ECB CONTROL WORD 
TIME	EQU	5	FLASH TIME 
DWTTP	EQU	/10	TIMER POINTER 
	EJECT
*	CONDITIONAL ASSEMBLY
*	EXTENDED SOP INPUT DWT OR NOT 
*	SOPX=0 => NOT EXTENDED
* 

X:A	EQU	0 
SOPX	EQU	X:A
**
**
*   THIS DRIVER CAN BE MADE TO HANDLE CREDIT ORDERS 
*   BY SETTING CREDIT = 1 
*   ORDERS 05 AND 06 ARE THEN REPLACED BY ORDERS
*   /37 AND /38 RESPECTIVLY 
*   BY SETTING CREDIT=1 THE SOP-SWITCHES IS INDEXED:1,2,3,... 
*   1 CORRESPONDS TO THE RIGHTMOST SWITCH.
*   IN CASE OF POWER ON ZERO IS STORED IN THE CONTROL WORD
*   OF THE ECB. 
**

CREDIT	EQU	0
**
**
*   THE ORDER /39, WRITE FLASHING LIGHTS CAN BE INCLUDED BY 
*   SETTING X:B=1 
* 
X:B	EQU	0 
WRFLA	EQU	X:B 
	EJECT
* 
**************************
* S.O.P. DEVICE ADDRESS: *
**************************
* 
* 
SOPDA	EQU	/2E	DEVICE ADDRESS
* 
* 
* 
* 
******************************
*                            *
*  S.O.P. CHANNEL UNIT TABLE *
*                            *
******************************
* 
* 
SOPCT	EQU	*	TABLE STARTS WITH ADDRESS BLOCK:
* 
SOPADI	EQU	*	INPUT ADDRESS BLOCK (FOR READ ORDERS)
* 
	DATA	SOPAS	ACTIVATE SWITCHES ENTRY 
* 
SOPADU	EQU	*	ACTIVATE LIGHTS ENTRY
* 
	DATA	SOPAL	ACTIVATE LIGHTS ENTRY 
* 
SPDLCI	DATA	0	LIGHT'S CORE IMAGE
* 
	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 ?
	IFT	CREDIT=0 
	RF(Z)	EXIT	NO
	CMR	A6	YES CLEAR FOR NEXT REQ. 
	XIF
	IFT	CREDIT=1 
	RF(NZ)	EXIT	NO 
	STR	A7,A6	YES
	XIF
	RF	IHSOP3
* 
* 
SOPAL	EQU	*	ACTIVATE LIGHTS ENTRY 
* 
	LDR	A4,A7	COPY ORDER 
	IFT	WRFLA=1
	CCK	A4,/3939 
	RF(E)	SOPFL
	XIF
	IFT	CREDIT=0 
	SUK	A4,/05	SEE IF 'LIGHTS ON' ORDER
	XIF
	IFT	CREDIT=1 
	SUK	A4,/37 
	XIF
	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	* 
	LD	A4,10,A8	GET CONTROL WORD 
	ORS	A4,FLASH	STORE NEW LAMPS TO A4,FLASH 
FL015	LD	A1,DWTST,A6
	ANK	A1,/40 
	RF(Z)	FL020
	ORS	A4,SPDLCI	FIXA TILL DET HELA!
	RF	SOPONOFF
FL020	EQU	* 
	C1R	A4,A4
	ANS	A4,SPDLCI
	RF	SOPONOF 
FLTUT	EQU	*	FLASH TIME OUT
	LDKL	A6,DWSO01 
	LD	A4,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	C1	A4,10,A8	GET COMPLEMENTED CONTROL WORD
	ANS	A4,SPDLCI	MASK OUT LIGHTS TO BE TURNED OFF 
	IFT	WRFLA=1
	ANS	A4,FLASH	STOP SOME FLASHING
	XIF
	RF	SOPONOF	BRANCH TO COMMON ON/OFF PATH
* 
* 
*  TURN ON LIGHTS INDICATED BY '1' BITS:
* 
SOPON	LD	A4,10,A8	GET CONTROL WORD
	ORS	A4,SPDLCI	SET LIGHTS TO BE TURNED ON 
	IFT	WRFLA=1
	C1R	A4,A4
	ANS	A4,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	CF	A15,SAVE8
	ST	P,INTSAV	SAVE LAST INTERRUPT
	INR	A1,0,SOPDA	GET SWITCH
	SRN	A1,A2	CALC INDEX 
	IFT	CREDIT=0 
	SLL	A2,1 
	XIF
	IFT	CREDIT=1 
	ADK	A2,1 
	XIF

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 
	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	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 
* 
	CF	A15,SAVE8	SAVE REGS.
	CIO	A1,1,SOPDA	ACTIVATE INPUT
* 
	LD	A1,SPDLCI	GET LIGHTS' CORE IMAGE
	OTR	A1,0,SOPDA	AND OUTPUT TO THE LIGHTS
* 
	IFT	CREDIT=0 
	LDKL	A2,-2	POWER UP INDICATOR
	XIF
	IFT	CREDIT=1 
	LDK	A2,0 
	XIF

	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
* 
*   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
	DATA	0	TIMER POINTER 
FLASH	DATA	0	SAVE AREA FOR FLASHING LAMPS 
	EJECT

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

DWSI02	EQU	*
	IFF	SOPX=0 
	DATA	0 
	DATA	/8000 
	DATA	0,0 
	DATA	SOPADI
	DATA	0,0,0 
	XIF
	END

Full view