File: DINODA.RA of Disk: Disks/MyPDP/m8-backup-rka1-rkb1
(Source file text) 

/FILE DINODA.RA	 3-OCT-80

/SUBROUTINE DINP

/PURPOSE
/-------
/	READ  DR8-EA 12-BIT INPUT/OUTPUT INTERFACE

/USAGE
/-----
/	CALL DINP(IUNIT,MASK,IERR,INPUT)

/OR
/	INPUT=DINP(IUNIT,MASK,IERR,INPUT)

/DESCRIPTION OF PARAMETERS
/-------------------------
/
/	IUNIT:	INTERFACE NUMBER (IMPLEMENTED 1 & 2)
/
/	MASK:	BIT MASK SELECTING INPUT BITS READ
/
/	IERR:	0:	OK
/		2:	BAD UNIT NUMBER
/		16:	RUNNING UNDER OS/8
/
/	INPUT:	RESULT MASKED WITH MASK
/		RESULT BITS CLEAR INPUT BITS
/
/REMARKS
/-------
/	ROUTINE WORKS ONLY IN MULTI-8 BACKGROUND

/SUBROUTINES REQUIRED
/--------------------
/	NONE

/METHODS
/-------
/	RALF ROUTINE MAKES GIANT IOT CALL (CODE 21,22) TO D1.TK,D2.TK

/	FORMAT:		TAD	(21,22
/			6770
/			JMP .+4
/			0000
/			MASK
/			DATA
/SUBROUTINE DOUT

/PURPOSE
/-------
/	SET  DR8-EA 12-BIT INPUT/OUTPUT INTERFACE

/USAGE
/-----
/	CALL DOUT(IUNIT,MASK,IERR,IDATA)

/OR
/	IOUT=DOUT(IUNIT,MASK,IERR,IDATA)

/DESCRIPTION OF PARAMETERS
/-------------------------
/
/	IUNIT:	INTERFACE NUMBER (IMPLEMENTED 1 & 2)
/
/	MASK:	BIT MASK SELECTING BITS ALLOWED TO CHANGE
/
/	IERR:	0:	OK
/		1:	BAD INTERFACE (ONLY UNIT 1)
/		2:	BAD UNIT NUMBER
/		16:	RUNNING UNDER OS/8
/
/	IDATA:	BIT VALUES SETTING (BIT=1) OR CLEARING (BIT=0)
/		ONLY BITS IN MASK RANGE CHANGE OUTPUT
/
/	IOUT:	CONTENTS OF NEW OUTPUT REGISTER

/REMARKS
/-------
/	ROUTINE WORKS ONLY IN MULTI-8 BACKGROUND

/SUBROUTINES REQUIRED
/--------------------
/	NONE

/METHODS
/-------
/	RALF ROUTINE MAKES GIANT IOT CALL (CODE 21,22) TO D1.TK,D2.TK

/	FORMAT:		TAD	(21,22
/			6770
/			JMP .+4
/			0001
/			MASK
/			DATA
/FUNCTION DAC

/PURPOSE
/-------
/	SET  DAC 9-BIT DIGITAL TO ANALOG CONVERTER

/USAGE
/-----
/	IOUT=DAC(IUNIT,MASK,IERR,IDATA)
/

/DESCRIPTION OF PARAMETERS
/-------------------------
/
/	IUNIT:	INTERFACE NUMBER (IMPLEMENTED 1 , 2 & 3)
/
/	MASK:	BIT MASK SELECTING BITS ALLOWED TO CHANGE
/
/	IERR:	0:	OK
/		1:	BAD INTERFACE (FLAG NOT SETTING)
/		2:	BAD UNIT NUMBER
/		16:	RUNNING UNDER OS/8
/
/	IDATA:	BIT VALUES SETTING ANALOG VALUE
/		ONLY BITS IN MASK RANGE CHANGE OUTPUT
/
/	IOUT:	MASKED VALUE COMES BACK (TRUNCATED TO 9 BITS)

/REMARKS
/-------
/	ROUTINE WORKS ONLY IN MULTI-8 BACKGROUND

/SUBROUTINES REQUIRED
/--------------------
/	NONE

/METHODS
/-------
/	RALF ROUTINE MAKES GIANT IOT CALL (CODE 23) TO DA.TK

/	FORMAT:		TAD	(23
/			6770
/			JMP .+4
/			0000
/			UNIT
/			DATA
	SECT	DINP
	JA	#ST	/JUMP TO START OF SUBROUTINE
#XR,	0		/FOR TRACEBACK
	ORG	.+7	/RESERVE FOR AUTOINDEX
	TEXT	+DINODA+	/ERROR TRACE BACK
#RET,	SETX	#XR	/SET MY WORLD AFTER FOREIGN JSR
	SETB	#BASE
	JA	.+3
#BASE,	ORG	.+3
#ARGS,	ORG	.+3
IUNIT,	ORG	.+3
MASK,	ORG	.+3
IERR,	ORG	.+3
IDATA,	ORG	.+3
F4096,	F 4096.
F1,	F 1.
	ORG	#BASE+30
	FNOP
	JA	#RET
	FNOP
#GOBAK,	0;0

	BASE 0
SETUP,	JA	.
	STARTD
	FLDA	10*3
	FSTA	#GOBAK,0
	FLDA	0
	SETX	#XR
	SETB	#BASE
	BASE	#BASE
	LDX	0,1
	FSTA	#BASE
	FLDA%	#BASE,1+
	FSTA	IUNIT
	FLDA%	#BASE,1+
	FSTA	MASK
	FLDA%	#BASE,1+
	FSTA	IERR
	FLDA%	#BASE,1+
	FSTA	IDATA
	SETX	DIO8
	STARTF
	FLDA%	IUNIT
	ATX	2	/IUNIT IN XR2
	FLDA%	MASK
	ATX	3	/MASK IN XR3
	FLDA%	IDATA
	ATX	4	/IDATA FOR DOUT IN XR4
	JA	SETUP

WRAPUP,	XTA	5	/ERROR IN XR5
	FSTA%	IERR
	FLDA	#ARGS	/GET FUNCTION RETURN
	JA	#GOBAK

#ST,	JSA	SETUP	/ENTRY DINP
	TRAP4	DIN8	/GO TO 8 CODE
	XTA	4
	JGE	INP
	FADD	F4096
INP,	FSTA	#ARGS	/SAVE FOR FUNCTION RETURN
	FSTA%	IDATA	/ALSO FP
	JA	WRAPUP

	ENTRY	DOUT
DOUT,	JSA	SETUP	/ENTRY DOUT
	TRAP4	DOU8
	XTA	4	/OLD REG FOR FUNCTION
	JGE	OUP
	FADD	F4096
OUP,	FSTA	#ARGS
	JA	WRAPUP

	ENTRY	DAC
DAC,	JSA	SETUP	/ENTRY DAC
	TRAP4	DAC8
	XTA	4	/MASKED VALUE ALWAYS POSITIVE
	JA	OUP
	SECT8	DIN8

	0		/ENTRY POINT 8-MODE DIG. IN
	CLA
	DCA	IOCOMM	/INPUT COMMAND
	JMS	GIOT	/GOTO COMMON CODE
	CIF CDF 0
	JMP%	DIN8

DOU8,	0		/ENTRY POINT 8-MODE DIG. OUT
	CLA IAC
	DCA	IOCOMM	/OUTPUT COMMAND
	JMS	GIOT	/COMMON CODE
	CIF CDF 0
	JMP%	DOU8

DIO8,	0		/COVER PDP8 XR'S !!!!!!
	0
UNIT8,	0
MASK8,	0
DATA8,	0
IERR8,	0
	0
	0

DAC8,	0		/ENTRY POINT 8-MODE DAC
	CLA
	DCA	IOCOMM	/CLEAR ERROR ALWAYS COMMAND 0
	TAD	DATA8
	AND	MASK8	/APPLY MASK HERE
	AND	P777	/ONLY 9 BITS
	DCA	DATA8
	TAD	UNIT8
	DCA	MASK8	/TRANSFER UNIT #
	CLA CLL CML IAC RAL	/3
	DCA	UNIT8	/SET UNIT = 3 FOR GIOT 23
	JMS	GIOT	/CALL COMMON CODE
	CIF CDF 0
	JMP%	DAC8
GIOT,	0
	TAD	MASK8
	DCA	IOMASK	/TO FOREGROUND
	TAD	DATA8
	DCA	IODATA	/TO FOREGROUND
	TAD	UNIT8
	SPA SNA
	JMP	UNERR	/BAD UNIT
	TAD	M3
	SMA SZA CLA
	JMP	UNERR	/BAD UNIT
	TAD	UNIT8
	TAD	P20
	6770		/GIANT IOT TO MULTI8 (CODE 21,22)
	JMP	.+4
IOCOMM,	0
IOMASK,	0
IODATA,	0
	SZA CLA		/WAS IT MULTI8 ?
	TAD	P20	/NO, RETURN WITH ERROR 16
	TAD	IOCOMM	/+FOREGROUND ERROR
	DCA	IERR8	/SET ERROR XR
	TAD	IODATA
	DCA	DATA8	/COPY IODATA FOR RESULT
	JMP%	GIOT

UNERR,	CLA CLL CML RTL	/2
	6254		/SKP ON M8
	TAD	P20
	DCA	IERR8
	JMP%	GIOT

M3,	-3
P20,	20
P777,	777

	END