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

⟦7760a8e18⟧

    Length: 10752 (0x2a00)
    Notes: pts_type(SC)
    Names: »DRDI01.SC«

Derivation

└─⟦110b7ed5e⟧ Bits:30009664 Philips computer tape "600106"
    └─⟦this⟧ »TOSSWORK/DRDI01.SC« 

PTS(SC)

	IDENT DRDI01 	REL 9.2 79-11-16  870105040920 

* 
* 
******************************************************* 
* 
*   PHILIPS TERMINAL SYSTEM PTS 
* 
*   DRDI01 = DRIVER INDICATOR DISPLAY 
* 
* 
* 
* 
* 
* 
******************************************************* 
* 
* 
*   THIS DRIVER HANDLES OUTPUT TO SIGNAL DISPLAYS PTS 6241
*   AND 6242. IT ALSO CONTROLS LAMPS ON KEYBOARDS PTS 6232
*   6233, 6236 AND 633, 62361.
* 
*   THESE DEVICES MUST BE CONNECTED TO CPU VIA CHLT OR CHRT 
* 
*   THE DRIVER CONSISTS OF THE FOLLOWING PARTS: 
* 
*   A C D I :	ACTIVATION PART 
* 
*   I H D I :	INTERRUPT HANDLER 
* 
*   R C D I :	RECOVERY ROUTINE
* 
*   THE FOLLOWING ORDERS ARE TREATED: 
* 
*   ORDER 05:	WRITE LIGHTS ON 
*         06:	WRITE LIGHTS OFF
*         07:	WRITE PROGRAM DISPLAY 
*         39:     WRITE  FLASHING LIGHTS
	EJECT
* 
* 
*   NORMAL REGISTER USAGE:
* 
*   REGISTER A1:	RETURN CODE
*            A2:  OUTPUT
*            A3:	WORK REGISTER
*            A4:	WORK REGISTER
*            A5:	WORK REGISTER
*            A6:	DWT-ADDRESS
*            A7:	ORDER
*            A8:	ECB-ADDRESS
* 
* 
*   SYSTEM ADAPTATION 
* 
*   DISPLAY TYPE MUST BE DEFINED IN FIRST WORD IN DWT 
* 
*   BIT 10 = 1   IF PROGRAM DISPLAY   (PTS 6241)
*   BIT 11 = 1   FOR PTS 6232,6331,6236 
*   BIT 11 = 0   FOR PTS 6241,6242,6233 
* 
*   ORDER 07, WRITE PROGRAM DISPLAY MAY BE EXCLUDED BY
*   CONDITIONAL ASSEMBLY
* 
	EJECT
* 
* 
*************** 
*    ENTRIES  * 
*************** 
* 
	ENTRY	DIAD	ADDRESS TO ADDRESS-BLOCK
* 
******************* 
*    EXTERNALS    * 
******************* 
* 
	EXTRN	SAVE8	SAVE REGS
	EXTRN	TENDIO	END I/O 
	EXTRN	DISEND	PERFORM END I/O AND DISPATCH
	EXTRN	TDISP	DISPATCHER ORDINARY INT. 
	EXTRN	OUTLIN	OUTPUT ONE CHAR.
	EXTRN	GETCHR	GET CHARACTER 
	EXTRN	DISIOE	I/O REQUEST ERROR 
	EXTRN	DWTST	STATUS 
	EXTRN	DWTBC	BYTE COUNTER 
	EXTRN	DWTECB	ECB ADDRESS 
* 
	EXTRN	SETIMP	SET TIMER 
* 
* 
	EJECT
* 
* 
*************** 
*    TABLES  *
*************** 
* 
* 
	DATA	DVBLEN	BUFFER SIZE (MMU)
	DATA	2	DEVICE INDEX
* 
DIAD	EQU	*	ADDRESS BLOCK
	DATA	ACDI	ACTIVATION DRIVER
	DATA	0	ABORT ROUTINE ADDRESS 
	DATA	IHDI	INTERRUPT HANDLER
	DATA	RCDI	RECOVERY ROUTINE 
* 
CCERR	EQU	/4	CODE CHECK ERROR 
* 
	EJECT
* 
* 
************************* 
*  CONDITIONAL ASSEMBLY * 
************************* 
* 
* 
*   ORDER 07, WRITE PROGRAM DISPLAY MAY BE EXCLUDED BY
*   SETTING X:A=0 
* 
X:A	EQU	0 
ORD7	EQU	X:A
* 
* 
*   THIS DRIVER CAN BE MADE TO HANDLE CREDIT ORDERS 
*   BY SETTING CREDIT = 1 
*   ORDERS 05,06AND 07 ARE THEN REPLACED BY 
*   ORDERS 37,38 AND 06 
* 
CREDIT	EQU	0
* 
* 
*   ORDER 39, WRITE FLASHING LIGHTS MAY BE INCLUDED 
*   IN THIS DRIVER BY SETTING X:B=1 
* 
X:B	EQU	0 
FLASH	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
* 
	EJECT
* 
* 
*   MMU BUFFER SIZE 
* 
X:C	EQU	4 
DVBLEN	EQU	X:C
* 
* 
********************* 
* DWT-DISPLACEMENTS * 
********************* 
* 
* 
DWTDRD	EQU	/10	START OF DRIVER DEFINED PART 
* 
	IFT	MMUPAG=0 
START	EQU	DWTDRD
	XIF
* 
	IFT	MMUPAG=1 
START	EQU	DWTDRD+4
	XIF
* 
DWTDIB	EQU	START+/02	SAVE AREA
DWTFLA	EQU	START+/08	SAVE AREA FOR FLASH IMAGE
DWTTP	EQU	START+/0A	TIMER POINTER 
TIME	EQU	5	FLASH TIME 
* 
	EJECT
* 
*    A C D I
* 
*   ACTIVATION PART: CHECKS VALIDITY OF ORDERS AND STARTS 
*   THE PROCESSING
* 
* 
ACDI	EQU	*
	IFT	ORD7-CREDIT=1
	CCK	A7,/0707 
	RF(E)	ADI050	ORDER /07 
	XIF
	IFT	ORD7+CREDIT=2
	CCK	A7,/0606 
	RF(E)	ADI050	ORDER /06 
	XIF
	LD	A4,10,A8	CONTROL WORD TO A4 
	LDR*	A3,A6 
	ANK	A3,/10	TEST IF ONE OR TWO CHARACTER DEVICE 
	RF(NZ)	ADI005	ONE CHARACTER DEVICE 
	LDR	A3,A4	CONTROL WORD tO A3 
	ANK	A4,/F
	ANK	A3,/F0 
	SLL	A3,4 
	ORR	A4,A3	LAMPCODES IN A4
ADI005	EQU	*
	IFT	FLASH=1
	CCK	A7,/3939 
	RF(E)	FLA05
	XIF
	IFT	CREDIT=0 
	SUK	A7,5 
	XIF
	IFT	CREDIT=1 
	SUK	A7,/37 
	XIF
	RF(E)	ADI010	ORDER 05
	SUK	A7,1	
	RF(E)	ADI007	ORDER 06
	ABL(NE)	DISIOE	REQUEST ERROR 
* 
	EJECT
* 
* 
	IFT	FLASH=1
* 
*     FLASH    ORDER /39
* 
* 
FLA05	ORS	A4,DWTFLA,A6	SAVE FLASH IMMAGE
	LD	A1,DWTTP,A6	GET TIMER POINTER 
	RF(NZ)	FLA10	TIMER ALREADY STARTED 
	LDK	A4,DWTTP	START TIMER 
	ADR	A4,A6
	LDR	A1,A6
	CF	A15,SETIMP
	DATA	FLTUT,TIME
	ST	A4,DWTTP,A6 
	LDKL	A4,/FFBF
	ANRS	A4,A6	CHECK ON-OFF INDICATOR
FLA10	EQU	* 
	LD	A4,DWTFLA,A6
	LDR*	A2,A6	CHECK ON-OFF INDICATOR
	ANK	A2,/40 
	RF(Z)	FLA20	WRITE FLASHING LIGHTS OFF
	ORS	A4,DWTDIB,A6	ON + FLASH
	RF	ADI030	TURN ON LAMPS
FLA20	C1R	A4,A4 
	ANS	A4,DWTDIB,A6	ON-FLASH
	RF	ADI030	TURN ON LAMPS
FLTUT	EQU	*	FLASH TIME OUT ROUTINE
	LDR	A6,A1
	LD	A4,DWTFLA,A6
	RF(Z)	FLA30	IF NO MORE LAMPS TO FLASH GO TO DISPATCHER 
	LDKL	A1,-TIME	RESTART TIMER
	ST*	A1,DWTTP,A6
	LDK	A4,/40 
	XRRS	A4,A6	SWITCH 0N-OFF FLAG
	RB	FLA10 
FLA30	CM	DWTTP,A6 
	RF	EXIT
	XIF
* 
* 
*    ORDER 06: SWITCH OFF LAMPS 
* 
ADI007	EQU	*
	C1R	A4,A4
	ANS	A4,DWTDIB,A6	RESET BITS IN DWT-BUFFER
	IFT	FLASH=1
	ANS	A4,DWTFLA,A6	RESET BITS IN FLASH IMAGE 
	XIF
	RF	ADI030
* 
* 
	EJECT
* 
* 
*    ORDER 05: TURN ON LAMPS
* 
* 
* 
ADI010	ORS	A4,DWTDIB,A6	SET BITS IN DWT-BUFFER
	IFT	FLASH=1
	C1R	A4,A4
	ANS	A4,DWTFLA,A6	RESET BITS IN FLASH IMAGE 
	XIF
ADI030	LC	A2,DWTDIB,A6	GET FIRST CHARACTER
ADI035	LDK	A1,1 
	SC	A1,DWTST+1,A6	SET START VALUE IN BYTE COUNTER 
	LDR*	A3,A6	TWO OUTPUTS ? 
	ANK	A3,/10 
	RF(NZ)	IHDI10	NO 
	RF	IHDI20	YES
* 
* 
	IFT	ORD7=1 
	EJECT
* 
* 
*   ORDER 07: WRITE PROGRAM DISPLAY 
* 
ADI050	LDK	A3,0 
ADI060	CF	A15,GETCHR	GET CHARACTER
	LDR	A1,A1	LAST CHARACTER ? 
	RF(Z)	ADI070	YES 
	LDR	A4,A2
	SRL	A4,4 
	SUK	A4,3	UNDEFINED CHARACTER ? 
	RF(L)	ADI100	YES 
	CWK	A4,3	UNDEFINED ? 
	RF(G)	ADI100	YES 
	ADKL	A4,DWTDIB+2 
	ADR	A4,A6	 
	SCR	A2,A4	STORE CHARACTER IN DWT-BUFFER
	RB	ADI060	GET NEXT CHARACTER 
ADI070	SC	A1,DWTST+1,A6	SET START VALUE IN BYTE COUNTER 
	RF	IHDI10	SEND CHARACTERS
* 
* 
*    CODE CHECK ERROR 
* 
ADI100	LDK	A1,CCERR	SET RETURN CODE 
	ORS	A1,8,A8	IN ECB 
	RB	ADI060	GET NEXT CHARACTER 
	XIF
* 
	EJECT
* 
*    I H D I
* 
*   INTERRUPT HANDLER: PROCESS OF INTERRUPT 
* 
IHDI	EQU	*
	LDR	A1,A1	RETURN CODE
	RF(NE)	ENDIO	YES END I/O 
	LD	A4,DWTST,A6	GET STATUS
	ANK	A4,/FF 
	SUK	A4,2	TWO CHARS. SENT 
	IFT	ORD7=1 
	RF(NZ)	IHDI05	NO 
	LDR*	A3,A6	GET CHANNEL PARAMETER 
	ANK	A3,/20	PROGRAM STEP ?
	RF(Z)	ENDIO	NO. PERFORM ENDIO
IHDI05	SUK	A4,4	LAST CHARACTER ?
	RF(Z)	ENDIO	YES. PERFORM ENDIO 
IHDI10	LDKL	A2,DWTDIB 
	ADR	A2,A6	 
	LD	A4,DWTST,A6 
	ANK	A4,/FF 
	ADR	A2,A4
	LCR	A2,A2	GET CHARACTER
	XIF
	IFT	ORD7=0 
	RF(Z)	ENDIO
IHDI10	LC	A2,DWTDIB+1,A6	GET SECOND CHARACTER 
	XIF
	LD	A8,DWTECB,A6
	RF(Z)	OUTPUT	IF POWER FAIL NO BELL 
	LD	A3,10,A8	BELL?
	RF(NN)	OUTPUT	NO 
	ORK	A2,/40	INDICATE BELL 
* 
OUTPUT	IM	DWTST,A6	INCREMENT BYTE COUNTER 
IHDI20	CF	A15,OUTLIN	OUTPUT CHAR. 
EXIT	ABL	TDISP
ENDIO	ABL	DISEND	PERFORM END I/O AND DISPATCH 
* 
	EJECT
* 
*    R C D I
* 
*   RECIVERY ROUTINE: AT POWER UP ALL LIGHTS ARE FED WITH 
*   THE VALUES EXISTENT AT POWER FAILURE TIME.THE INFORMATION 
*   OM PROGRAM DISPLAY IS ALSO RESTORED 
* 
* 
RCDI	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
* 
	LC	A2,DWTDIB,A6	GET FIRST CHARACTER
	RB	ADI035
* 
* 
* 
	END





Full view