File ISWR.SB (8k SABR macro assembler source file)

Directory of image this file is from
This file as a plain text file

///	SOLITARY SWITCH REGISTER ROUTINE.
/
/	IRSLT = ISWR(IBIT)	/READ SWITCH REGISTER.
/
/--------------------
/
/	'IBIT' = DESIGNATION FOR JUST ONE BIT, OR FOR ALL BITS.
/		 IF = 0  THE ACTION IS PERFORMED ON ALL BITS.
/		 IF FROM 1 - 12, INDICATES BIT NUMBER.
/	"B>12"	 *ERROR* IF .LT. 0 OR .GT. 12 .
/
/	'IRSLT' =  ENTIRE REGISTER IF 'BIT' = 0.
/		   OTHERWISE, = 1 IF BIT SET, 0 IF NOT.
/		   IN RANGE (-2048) - 2047.
/
/------------
///


	LAP

OPDEF	TADI  1400

ENTRY	ISWR

SETERR,	CALL 1,ERROR
	ARG SETERM
SETERM,	0276;6162	/ERROR MESSAGE  'B>12'.

ISWR,	BLOCK 2
	JMS GETARG
	JMS SETBIT
	OSR
	AND BITPAT
	ISZ BITPAT	/WAS THIS FOR A SINGLE BIT?
	SNA		/YES, ANY RESULT?
	JMP SXIT2	/NO. RETURN ORIGINAL VALUE.
	CLA IAC		/CONVERT NON-ZERO TO A 1..
SXIT2,	RETRN ISWR


GETARG,	0
	TAD ISWR	/NOW GET ARG INFO.
	DCA GET10
	JMS GETONE
	JMP I GETARG

GETONE,	0
GET10,	HLT		/(CDF TO CALLING FIELD.)
	TADI ISWR#	/CDF TO ARG FIELD.
	DCA GET20
	INC ISWR#
	TADI ISWR#	/LOCATION OF ARG.
	DCA PARA
	INC ISWR#	/MOVE TO RETURN ADDRESS.
GET20,	HLT		/(CDF TO ARG. DATA FIELD)
	TADI PARA	/GET INTEGER PARAMETER.
	JMP I GETONE
PARA,	0

SETBIT,	0
	SNA		/SPECIFIC BIT?
	JMP SET20	/NO.   SET ALL.
	CIA
	DCA BITPAT
	CLL CMA		/SET UP BIT (NEGATED)
SET10,	RAR
	SNL
	JMP SETERR	/OUT OF RANGE.
	ISZ BITPAT
	JMP SET10
SET20,	CMA
	DCA BITPAT
	JMP I SETBIT
BITPAT,	0

	END



Feel free to contact me, David Gesswein djg@pdp8online.com with any questions, comments on the web site, or if you have related equipment, documentation, software etc. you are willing to part with.  I am interested in anything PDP-8 related, computers, peripherals used with them, DEC or third party, or documentation. 

PDP-8 Home Page   PDP-8 Site Map   PDP-8 Site Search