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

⟦cdd71db2d⟧

    Length: 7824 (0x1e90)
    Notes: pts_type(SC)
    Names: »DRDN01.SC«

Derivation

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

PTS(SC)

	IDENT DRDN01 	REL 9.2 79-11-16  870105040920 

* 
* 
*************************************************** 
* 
*   PHILIPS TERMINAL SYSTEM PTS 
* 
*   DRDN01 = DRIVER NUMERIC DISPLAY 
* 
* 
* 
* 
* 
* 
*************************************************** 
* 
* 
*    THIS DRIVER HANDLES THE NUMERIC DISPLAY
*    ON INDICATOR UNIT PTS 6241 CONNECTED TO
*    THE SYSTEM VIA CHLT OR CHRT. 
* 
*    THE DISPLAY MAY BE USED AS AN ORDINARY 
*    OUTPUT DEVICE WHERE NUMERIC INFORMATION
*    ARE DISPLAYED FROM THE USER PROGRAM. IT
*    MAY ALSO BE USED AS AN ECHO-DEVICE TO
*    ANY KEYBOARD THAT WORKS UNDER THE GENERAL
*    KEYBOARD DRIVER DRKB01.
* 
*    THE DRIVER CONSISTS OF FOLLOWING PARTS:
* 
*    A C D N       ACTIVATION PART
* 
*    I H D N       INTERRUPT HANDLER
* 
*    R C D N       RECOVERY ROUTINE 
* 
*    E C H O D N   ECHO FUNCTIONS 
	EJECT			DRDN01 
* 
* 
*    THE FOLLOWING ORDERS ARE THREATED: 
* 
*    ORDER 05: ERASE NUMERIC DISPLAY
*          06: WRITE NUMERIC DISPLAY
* 
* 
*    NORMAL REGISTER USAGE: 
* 
*    REGISTER: A1 = RETURN CODE 
*              A2 = OUTPUT CHARACTER
*              A3 = BUFFER INDEX
*              A4 = WORK REGISTER 
*              A5 = STACK BASE
*              A6 = DWT-ADDRESS 
*              A7 = ORDER 
*              A8 = ECB-ADDRESS 
* 
* 
*    SYSTEM ADAPTATION
* 
*    BY MEANS OF CONDITIONAL ASSEMBLY ORDER 06
*    WRITE NUMERIC DISPLAY MAY BE EXCLUDED. 
*    TO BE USED IN SYSTEMS WHERE THE DISPLAY
*    FIGURES ONLY AS AN ECHO-DEVICE.
* 
* 
	EJECT			DRDN01 
* 
* 
*********** 
* ENTRIES * 
*********** 
* 
* 
	ENTRY	DNAD	ADDRESS TO ADDRESS-BLOCK
* 
* 
********************************************
*    EXTERNAL TOSS MODULE ENTRIES          *
********************************************
* 
* 
	EXTRN	TDISP	DISPATCHER 
	EXTRN	GETCHR	GET CHARACTER FROM ECB
	EXTRN	DISIOE	I/O REQUEST ERROR 
	EXTRN	TENDIO	END I/O 
	EXTRN	OUTPUT	SEND CHARACTER
	EXTRN	LDREG	RESTORE REGISTERS A4,A3,A5,A7,A8 AND RETURN
	EXTRN	SAVE8	SAVE REGISTERS A1-A8 
	EXTRN	ECHRTN	RETURN FROM ECHOING 
* 
* 
****************************
*    DWT PARAMETERS        *
****************************
* 
* 
	EXTRN	DWTST	STATUS 
	EXTRN	DWTBC	BYTE COUNTER 
	EXTRN	DWTECB	ECB ADDRESS 
	EJECT			DRDN01 
* 
* 
**************************
*  CONDITIONAL ASSEMBLY  *
**************************
* 
*    BY SETTING X:A = 0 THIS DRIVER HANDLES 
*    ONLY ORDER 05 ERASE NUMERIC DISPLAY
* 
X:A	EQU	1 
DNWRIT	EQU	X:A	ORDER 6
* 
*   THIS DRIVER CAN BE MADE TO HANDLE CREDIT ORDERS 
*   BY SETTING CREDIT = 1 
*   ORDER 05 IS THEN REPLACED BY ORDER /31
* 
CREDIT	EQU	0
* 
*	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
* 
* 
***************** 
*    CONSTANTS  * 
***************** 
* 
CCERR	EQU	/4	CODE CHECK ERROR 
* 
*   MEMORY MANAGEMENT BUFFER SIZE 
* 
X:B	EQU	16
DVBLEN	EQU	X:B
	EJECT			DRDN01 
* 
* 
**************
*    TABLES  *
**************
* 
* 
	DATA	DVBLEN	MMU BUFFER SIZE
	DATA	2	DEVICE  INDEX 
DNAD	EQU	*	ADDRESS BLOCK
	DATA	ACDN	ACTIVATION PART
	DATA	0	ABORT ROUTINE ADDRESS 
	DATA	IHDN	INTERRUPT HANDLER
	DATA	RCDN	RECOVERY ROUTINE 
	DATA	ECHODN	DEVICE-DEPENDENT ECHO-SUBROUTINE 
* 
	EJECT			DRDN01 
* 
*    A C D N
* 
*    ACDN = ACTIVATION DRIVER NUMERIC DISPLAY 
* 
*    THE FOLLOWING ORDERS ARE THREATED: 
* 
*    ORDER 05: ERASE NUMERIC DISPLAY
*    ORDER 06: WRITE ON NUMERIC DISPLAY 
* 
*    IF ORDER 5 ERASE CHARACTER /40 IS SENT TO DISPLAY. 
*    IF ORDER 6 CHARACTERS IN ECB-BUFFER ARE SENT TO DISPLAY
* 
ACDN	EQU	*
	IFT	CREDIT=0 
	SUK	A7,5	ORDER 5?
	RF(E)	ADN010 
	XIF
	IFT	CREDIT=1 
	SUK	A7,/31 
	RF(Z)	ADN010 
	ADK	A7,/2C 
	XIF
* 
	IFT	DNWRIT=1 
* 
	SUK	A7,1	ORDER 6?
	RF(E)	ADN015 
* 
	XIF
* 
	ABL	DISIOE	I/O REQUEST ERROR 
* 
	EJECT			DRDN01 
* 
*    ORDER 05 
* 
ADN010	EQU	*
	LDK	A2,/40	ERASE DISPLAY 
	CF	A5,OUTPUT	SEND CHARACTER
	RF	ENDIO 
* 
*    ORDER 06 
* 
	IFT	DNWRIT=1 
* 
ADN015	LDK	A3,0	RESET BUFFER INDEX
ADN020	CF	A15,GETCHR	GET CHARACTER
	LDR	A1,A1	FOUND? 
	RF(NP)	ENDIO	NO, READY ! 
* 
	EJECT			DRDN01 
* 
*    CHECK CHARACTER
* 
	LDR	A4,A2
	SUK	A4,/3F	BLANK?
	RF(E)	ADN025 
	ADK	A4,6	KEY > /39?
	RF(P)	ADN030 
	ADK	A4,9	KEY < /30 
	RF(N)	ADN030 
ADN025	EQU	*
	CF	A5,OUTPUT	SEND CHARACTER
	RB	ADN020
ADN030	LDK	A1,CCERR	INDICATE CODE CHECK ERROR 
	ORS	A1,8,A8	RETURN CODE
	RB	ADN020
* 
	XIF
* 
ENDIO	CF	A15,TENDIO	END I/O 
EXIT	ABL	TDISP
* 
	EJECT			DRDN01 
* 
*    I H D N
* 
*    INTERRUPT
* 
IHDN	EQU	*
	LD	A4,DWTST,A6	BUSY? 
	RB(N)	EXIT 
	SLL	A4,2	ECHO MODE ? 
	RF(N)	IHDN10 
	LDR	A1,A1	RETURN CODE FROM CHLT? 
	RB(NE)	ENDIO 
IHDN10	EQU	*
	ABL	LDREG
* 
	EJECT			DRDN01 
* 
*    R C D N
* 
*    RECOVERY 
* 
RCDN	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
* 
	LDKL	A2,/7FFF	 
	ANS	A2,DWTST,A6	SET DEVICE BUSY
	LDK	A2,/40	ERASE CHARACTER 
	CF	A5,OUTPUT	SEND ERASE
	LD	A8,DWTECB,A6
	RB(E)	ENDIO
	RB	ACDN	RETURN TO ACTIVATINO PARTONI 
* 
	EJECT			DRDN01 
* 
*    E C H O D N
* 
*    ECHO-ROUTINE 
* 
ECHODN	EQU	*
	LDR	A7,A7	EOR? 
	RF(N)	ECH050 
	LDR	A3,A2
	SUK	A3,/8	BACKSPACE? 
	RF(E)	ECH050 
	SUK	A3,/10	CLEAR?
	RF(NE)	ECH040	NO 
	LDK	A2,/40	ERASE DISPLAY 
ECH040	CF	A5,OUTPUT	SEND CHARACTER
ECH050	ABL	ECHRTN	RETURN TO KEYBOARD DRIVER 
* 
* 
* 
	END

Full view