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

⟦8e6b4099e⟧

    Length: 11062 (0x2b36)
    Notes: pts_type(SC)
    Names: »DRSW01.SC«

Derivation

└─⟦4358b8014⟧ Bits:30009669 Philips computer tape "600124"
    └─⟦this⟧ »MON10/DRSW01.SC« 
└─⟦79fbed147⟧ Bits:30009697 Philips computer tape "600414"
    └─⟦this⟧ »M:DECE/DRSW01.SC« 
└─⟦bf903a231⟧ Bits:30009665 Philips computer tape "600109"
    └─⟦this⟧ »MON10/DRSW01.SC« 

PTS(SC)

	IDENT DRSW01 	REL 10.0 80-03-14 870105041000 



* 
* 
******************************************************************* 
* 
*   PHILIPS TERMINAL SYSTEM PTS 
* 
*   DRSW01 = DRIVER SWITCH
* 
* 
* 
* 
* 
* 
******************************************************************* 
* 
* 
*   THIS MODULE CONTAINS THE FOLLOWING FUNCTIONS
*   WHICH ARE COMMON PARTS FOR CHANNEL UNIT DRIVERS.
* 
* 
*   -OUTPUT   SEND ONE CHARACTER,SAVE A3-A5 AND RETURN TO DISPATCHER
* 
*   -OUTLIN   CHECK WHICH CHANNEL UNIT DRIVER TO USE
* 
*   -STREG    SAVE A3-A5 AND RETURN TO DISPATCHER 
* 
*   -LDREG    IF INTERRUPT IS ALLOWED, RESTORE A3-A5 AND RETURN 
*             TO USER VIA A5
* 
*   -LDREGE   RESTORE A3-A5 AND RETURN TO USER VIA A5 
* 
*   -GETCHR   GET ONE CHARACTER FROM ECB-BUFFER 
* 
*   -ECHO     ECHO CHARACTER
* 
*   -ECHEND   END OF ECHO 
* 
* 
	EJECT
* 
*********** 
* ENTRIES * 
*********** 
* 
* 
	ENTRY	OUTLIN	SEND CHARACTER
	ENTRY	OUTPUT	SAVE REGISTERS, SEND CHAR. AND DISPATCH 
	ENTRY	LDREG	RESTORE A3-A5 ANDRETURN
	ENTRY	LDREGE	WAY BACK FROM ECHO HANDLING 
	ENTRY	LDREGF	RETURN
	ENTRY	STREG	SAVE REGISTERS A3-A5 IN DWT
	ENTRY	GETCHR	GET ONE CHARACTER FROM ECB-BUFFER 
	ENTRY	ECHRTN	RETURN FROM ECHO
	ENTRY	ECHO	ECHO ROUTINE
	ENTRY	ECHEND	END OF ECHO 
	EJECT
* 
* 
********************************
* EXTERNAL TOSS MODULE ENTRIES *
********************************
* 
	EXTRN	SAVE8	SAVE REGISTERS A1-A8 
	EXTRN	TDISP	DISPATCHER 
	EXTRN	TENDIO	END I/O 
	EXTRN	OUTLRT	DRIVER FOR LOCAL OR REMOTE TERMINALS
	EXTRN	OUTSAL	SALCUZ DRIVER 
	EXTRN	OUTASC	ASCU4Z DRIVER 
	EJECT
* 
******************
* DWT PARAMETERS *
******************
* 
* 
	EXTRN	DWTST	STATUS 
	EXTRN	DWTOR	ORDER
	EXTRN	DWTECB	ECB-ADDRESS 
	EXTRN	DWTADR	ADDRESS TO ADDRESSBLOCK 
	EXTRN	DWTWAT	WAIT/ACTIVATE INDICATOR 
	EXTRN	DWTA3	SAVE AREA A3 
	EXTRN	DWTA4	SAVE AREA A4 
	EXTRN	DWTA5	SAVE AREA A5 
	EXTRN	DWTSB2	STACK BASE 2
	EXTRN	DWTECH	ECHO DEVICE DWT 
* 
	EXTRN	ECHADR	ECHO ADDRESS DISPLACEMENT 
* 
	EJECT
* 
************************
* CONDITIONAL ASSEMBLY *
************************
* 
*   ECHO FUNCTION CAN BE EXCLUDED 
*   BY SETTING X:A=0
* 
X:A	EQU	1 
CECHO	EQU	X:A 
* 
*   BY SETTING X:B=1 DRIVER FOR LOCAL OR
*   REMOTE TERMINALS CAN BE USED
* 
X:B	EQU	1 
LRT	EQU	01
* 
*   BY SETTING X:C=1 SALCUZ DRIVER CAN BE USED
* 
X:C	EQU	1 
SALCUZ	EQU	00 
* 
* 
*   BY SETTING X:D=1 ASCU4Z DRIVER CAN BE USED
* 
X:D	EQU	1 
ASCU4Z	EQU	00 
* 
*   A PROGRAM VERSION USING THE EXTENDED INSTRUCTION SET
*   IS OBTAINED BY SETTING CPU852 EQU 0 
* 
CPU852	EQU	0
* 
	EJECT
* 
*   O U T L I N 
* 
*   CHECK CHANNEL PARAMETER WHICH CHANNEL UNIT
*   DRIVER TO USE 
* 
* 
OUTLIN	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
* 
	LDR*	A1,A6	CHANNEL PARAMETER 
	ANK	A1,/F	CHANNEL INDEX
* 
	IFT	LRT=1
	SUK	A1,/C
	ABL(N)	OUTLRT	CULT OR CURT 
	ADK	A1,/C
	XIF
* 
	IFT	ASCU4Z=1 
	LDR	A7,A1
	SUK	A7,/C
	RF(N)	OUTL10 
	SUK	A7,/3
	ABL(N)	OUTASC	ASCU4Z 
	XIF
* 
OUTL10	EQU	*
	IFT	SALCUZ=1 
	SUK	A1,/F
	ABL(E)	OUTSAL	SALCUZ 
	XIF
	RF	EXIT
	EJECT
* 
*   O U T P U T 
* 
*   SEND ONE CHARACTER VIA 'OUTLIN' INDICATE INTERRUPTS 
*   ALLOWED AND SAVE A3-A5 IN DWT.
* 
* 
OUTPUT	EQU	*
	ANK	A2,/FF 
	LDR	A1,A2
	SUK	A1,/82	STX ? 
	RF(E)	OUTP05	YES 
	SUK	A1,/15	ETB ? 
	RF(NE)	OUTP10	NO 
OUTP05	EQU	*
	LDR*	A1,A6	CHANNEL PARAMETER 
	ANK	A1,/C	LT?
	RF(E)	LDRE10	YES 
	SUK	A1,/C	RT?
	RF(E)	LDRE10	NO
OUTP10	EQU	*
	CF	A15,OUTLIN	SEND ONE CHARACTER VIA CHANNEL UNIT
	EJECT
* 
* 
*   S T R E G 
* 
*   INDICATE INTERRUPTS ALLOWED AND SAVE A3-A5 IN DWT 
* 
* 
STREG	EQU	* 
	INH
	LDKL	A1,/100 
	ORS	A1,DWTST,A6	INDICATE INTERRUPTS ALLOWED
	ST	A3,DWTA3,A6	SAVE REGISTER A3
	ST	A4,DWTA4,A6	              A4
	ST	A5,DWTA5,A6	              A5
EXIT	ABL	TDISP
	EJECT
* 
*   L D R E G 
* 
*   IF INTERRUPT ALLOWED RESTORE A3-A5 FROM DWT AND RETURN
*   VIA A5. ELSE GO TO DISPATCHER.
* 
* 
LDREG	EQU	* 
	LD	A3,DWTST,A6 
	ANKL	A3,/100 
	RB(Z)	EXIT 
	XRS	A3,DWTST,A6
* 
* 
*   L D R E G E 
* 
*   RESTORE A3-A5 FROM DWT AND RETURN TO USER VIA A5
* 
* 
LDREGF	EQU	*
	LD	A5,DWTA5,A6	                A5
LDREGE	EQU	*
	LD	A3,DWTA3,A6	RELOAD REGISTER A3
	LD	A4,DWTA4,A6	                A4
LDRE10	LD	A7,DWTOR,A6	GET ORDER 
	ANK	A7,/FF 
	LD	A8,DWTECB,A6
	RTN	A5	RETURN VIA A5-STACK 
	EJECT
* 
* 
*    G E T C H R
* 
*    SUBROUTINE TO GET ONE CHARACTER FROM ECB-BUFFER
* 
*    ON ENTRY:
* 
*    A3 = BUFFER INDEX
*    A8 = ECB-ADDRESS 
* 
*    ON EXIT: 
* 
*    A2 = CHARACTER 
*    A1 = 0 IF LAST CHARACTER ELSE # 0
* 
*    IF LAST CHARACTER IS REACHED A3 IS STORED IN ECB EFFECTIVE LENGTH
* 
* 
GETCHR	EQU	*
	LD	A1,4,A8	REQUESTED LENGTH
	SUR	A1,A3
	RF(NP)	GCH010	LAST CHARACTER REACHED 
	LD	A2,2,A8	GET BUFFER ADDRESS
	ADR	A2,A3
	LCR	A2,A2	CHAR. TO A2
	ANK	A2,/FF 
	ADK	A3,1	INCREMENT BUFFER INDEX
	RF	GCH020
GCH010	ST	A3,6,A8	STORE EFFECTIVE LENGTH
GCH020	EQU	*
RTNA15	ADKL	A15,2	RETURN AND ENABLE 
	ENB
	LDR*	P,A15 
	EJECT
* 
* 
*    E C H O , E C H E N D
* 
*    SUBROUTINE TO ECHO CHARACTER CONTAINING TWO PARTS, 
*    ONE GENERAL AND ONE DEVICE-DEPENDENT 
* 
*    PART ONE: FIND DWT-ADDRESS OF ECHO-DEVICE, 
*              LOAD STACKBASE AND FIND ADDRESS
*              TO DEVICE-DEPENDENT ECHO-ROUTINE 
* 
*    PART TWO: ECHO ONE OR MORE CHARACTERS
*              CORRESPONDING TO ONE CHARACTER 
*              TO BE STORED IN INPUT ECB-BUFFER 
* 
* 
*    PART ONE FOLLOWS AND PART TWO CAN BE FOUND 
*    IN THE DRIVER MODULE CORRESPONDING TO ECHO 
*    OUTPUT DEVICE
* 
*    RESTRICTIONS IN DEVICE DEPENDENT ECHO DRIVER 
* 
*    A7 MUST NOT BE DESTROYED 
*    THE ECHO-ROUTINE SHOULD BE TERMINATED WITH A 
*    JUMP TO 'ECHRTN'.
* 
ECHEND	EQU	*
* 
	IFT	CECHO=1
* 
	LDKL	A7,/8000	INDICATE END I/O 
	XIF
ECHO	EQU	*
	IFT	CECHO=1
	ST	A3,DWTA3,A6	SAVE A3-A5 IN DWT 
	ST	A4,DWTA4,A6 
	ST	A5,DWTA5,A6 
	LD	A1,DWTST,A6	STATUS
	SLL	A1,2 
	RF(NN)	RETUR	NO ECHO REQUESTED 
	LDR	A4,A6	SAVE DWT-ADDRESS OF INPUT DEVICE 
	LD	A6,DWTECH,A6	DWT-ADDRESS OF OUTPUT DEVICE 
	ST	A4,DWTWAT,A6	SAVE DWT-ADDRESS OF INPUT DEVICE 
	LDKL	A5,DWTSB2 
	ADR	A5,A6	STACKBASE-ADDRESS IN A5
	LD	A1,DWTADR,A6	ADDRESS TO ADDRESS-BLOCK 
	ABI	ECHADR,A1	GO TO ECHO-ROUTINE DEVICE-DEPENDENT
	XIF
ECHRTN	EQU	*
	IFT	CECHO=1
	LDR	A7,A7	END? 
	RF(NN)	ERETUR	NO 
	CF	A15,TENDIO	END I/O OUTPUT DEVICE
ERETUR	LD	A6,DWTWAT,A6	RELOAD DWT-ADDRESS OF INPUT DEVICE 
RETUR	ABL	LDREGF	RELOAD A3-A5 AND RETURN VIA A5 
* 
	END

Full view