File: GE.TK of Disk: Disks/MyPDP/m8-blue-rka1-rkb1
(Source file text) 

/GE.TK 9-JUN-80
/**UASEM VERSION**
/THIS TASK SERVES AS A PLOTTEREMULATOR.
/IT PACKS THE DATA IN A BUFFER AND CALLS PL, THE PLOTTER
/DRIVER TASK.
/
/
	*0
	CDF 10
IFDEF XY8E <
	XY8E%10+EMTAB	/ >
IFDEF KLPLOT <
	KLPLOT%10+EMTAB	/ >
	"G^100+"E&3777
	*200

PLTEMP,	"G^100+"E&3777
	600		/A THREE-PAGE TASK
XINIT,	INIT		/POINTER TO INITIALIZATION CODE
XRTV,	RTV		/POINTER TO READER TRANSFER VECTOR
PLCAI,	NXTLOC		/READER CURRENT ADDRESS POINTER
PLBASE,	0		/BASE OF CURRENT BG

GE,	JMP I XINIT	//GO INITIALIZE THIS TASK. OVERLAYED WITH:
/	SZL		//EXIT CALL ?
	 JMP PLEND	//MAKE END OF FILE
	DCA PLBASE	//ADDRESS OF USERS DATA
	AC0006		//= UINST
	TAD PLBASE	//
	JMS DEFER	//GET THE INSTRUCTION
	AND C7		//IOP'S
	TAD (JMP PLTAB	//BRANCH THROUGH TABLE
	DCA .+1		//
	 HLT		//
PLTAB,	JMP PLNOP	//IOT 0
	JMP PLSKP	//IOT 1
	JMP PLNOP	//IOT 2
IFDEF XY8E <JMP PLUP	//IOT 3 >
IFDEF KLPLOT <JMP PLNOP	//IOT 3 >
	JMP PLGO	//IOT 4
IFDEF XY8E <JMP PLDWN	//IOT 5 >
IFDEF KLPLOT <JMP PLNOP	//IOT 5 >
	JMP PLGO	//IOT 6
	JMP PLNOP	//IOT 7
IFDEF XY8E <
PLUP,	CLA IAC		//UP=1
PLDWN,	IAC		//DOWN=1
	DCA PLTEMP	//REMEMBER UP OR DOWN
PLNEW,	TAD PLSTEP
	JMS PLOUT	//OUTPUT PREVIOUS STEP TO FILE
	TAD PLTEMP
	DCA PLSTEP
	JMP PLRET	// >

ERROR,	TAD (1-SKP
PLSKP,	TAD (SKP-NOP
PLNOP,	TAD C7000
PLRET,	JMS MONITOR	//RETURN TO CENTRAL EMULATOR
	   RETURN	//

PLGO,	TAD PLBASE
	TAD (UAC
	JMS DEFER	//GET HIS AC
IFDEF XY8E <
	AND C77		//THESE ARE THE BITS
	DCA PLTEMP
	TAD PLSTEP
	AND C77
	CIA
	TAD PLTEMP
	SZA CLA		//SAME STEP AGAIN ?
	 JMP PLNEW
PLADD,	CLL IAC BSW	//ADD ONE TO COUNT
	TAD PLSTEP
	DCA PLSTEP
	SNL		//OVERFLOW ?
	 JMP PLRET	//NO, RETURN
	TAD PLSTEP
	TAD M100
	JMS PLOUT	//WRITE THIS TO THE FILE
	JMP PLRET	//THE NEW ONE IS IN ALREADY >
IFDEF KLPLOT <
	SNA		/CLOSE ?
	 JMP PLEND	/YES, CLOSE THIS PLOT FILE
	JMS PLOUT	/SEND THE WORD TO THE FILE
	JMP PLRET	/AND BACK AGAIN >
PLOUT,	0		//PUT A PLOTTER WORD IN THE BUFFER
	CDTOIF		/BUFFERS ARE IN THIS FIELD
	DCA I PLCAI
	ISZ PLCAI
	NOP
	ISZ PLWCI	/END OF BUFFER ?
	 JMP I PLOUT	/NO
	CDF 10
X1,	AC2000		//SET BG INACTIVE
	TAD I PLBASE
	DCA I PLBASE
GETRY,	CDTOIF
	TAD XRTV	/POINTER TO TRANSFER VECTOR
	JMS MONITOR
	   CALL
	   "P^100+"L&3777
	 JMP GEWAIT	//PLOTTER BUSY, WAIT A WHILE
	DCA GESLOT
	JMS MONITOR
	   WAIT
GESLOT,	   0
	CDF 10
	SZA CLA
	 JMP ERROR	/ERROR: SPOOL.PL NOT FOUND ?
X2,	AC6000		//-INACTIVE+EMULATE
	TAD I PLBASE	//
	DCA I PLBASE	//
	TAD M400	/REST WC
	DCA PLWCI
	TAD RTV+1
	DCA PLCAI	/RESET BUFFER POINTER
	JMP I PLOUT	/

GEWAIT,	JMS MONITOR
	   STALL
	   DGNTICK
	CLA CLL
	JMP GETRY	/TRY AGAIN
PLEND,	CLA
	TAD PLOUT
	SNA CLA		/ANYTHING TO SEND ?
	 JMP END	/NO, QUIT
	DCA X1
	DCA X2		/DON'T TOUCH BG STATUS NOW
	JMS PLOUT
	ISZ (-400	/CRUMMY!
	 JMP .-2
END,	JMS MONITOR	/CLOSE CALL
	   CALL
	   "P^100+"L&3777
	 JMP .-3
	CDF 10
	CLA CLL
	JMS MONITOR
	   EXIT SWPOUT

RTV,	ZBLOCK 2

PLSTEP,	2		/INITIAL PEN-UP !!!!NOT ZERO!!!!
PLWCI,	NXTLOC-BUFFER-400

PAGE
IFDEF XY8E <
NXTLOC, >
BUFFER,	0		/END OF PAGE HEADER
IFDEF KLPLOT <
	12	/LINEFEED
	"[	/[
DA,	ZBLOCK 2
	"-&177	/-
MON,	ZBLOCK 3
	"-&177	/-
	ZBLOCK 2
	" 	/SPACE
TIM,	ZBLOCK 2
	":	/:
	ZBLOCK 2
	"]	/]
	15
	12
	12
	40
NXTLOC,	0
	CDF 10
	TAD I (7666
	CLL RTR
	RAR		/EXTRACT DAY
	AND C37
	JMS DIGITS
	TAD I (7666
	CLL RTL
	RTL
	RAL
	AND C17
	DCA ZTEM1
	TAD ZTEM1
	TAD ZTEM1
	TAD ZTEM1
	TAD TADI
	DCA TADI
	ISZ STPNT	/BUMP POINTER PAST -
TADI,	TAD MONTH
	JMS STORE
	ISZ TADI
	ISZ (-3
	 JMP TADI
	TAD I (7666
	AND C7
	DCA ZTEM1
	CDF 0
	TAD I C7777
	RTR
	RTR
	AND (30
	TAD (106	/70 DECIMAL
	TAD ZTEM1
	ISZ STPNT	/BUMP POINTER PAST -
	JMS DIGITS
	JMP I NXTLOC

DIGITS,	0
DIG0,	TAD (-12
	SPA
	 JMP DIG1
	ISZ TENS
	JMP DIG0
DIG1,	TAD (12
	DCA ZTEM1
	TAD TENS
	TAD ("0&177
	JMS STORE
	TAD ZTEM1
	TAD ("0&177
	JMS STORE
	DCA TENS
	JMP I DIGITS
STORE,	0
STPNT,	DCA DA
	ISZ STPNT
	JMP I STORE

TENS,	0

MONTH,	"B&177
	"A&177
	"D&177
	"J&177
	"A&177
	"N&177
	"F&177
	"E&177
	"B&177
	"M&177
	"A&177
	"R&177
	"A&177
	"P&177
	"R&177
	"M&177
	"A&177
	"Y&177
	"J&177
	"U&177
	"N&177
	"J&177
	"U&177
	"L&177
	"A&177
	"U&177
	"G&177
	"S&177
	"E&177
	"P&177
	"O&177
	"C&177
	"T&177
	"N&177
	"O&177
	"V&177
	"D&177
	"E&177
	"C&177		/ >

PAGE
XGE,	GE
YRTV,	RTV
YBUF,	BUFFER
REF2,	RTV+1
IFDEF KLPLOT <
XDATE,	NXTLOC
XSTORE,	STORE
XDIGITS,DIGITS	/ >
XBASE,	0

INIT,	DCA XBASE	/SAVE POINTER TO DATA AREA
	SZL		/JUST A CLOSE ?
	 JMP GCLOSE	/YES, DO NOTHING !
	TAD XBASE	/GET BG-USTAT AGAIN
	TAD (UASEM-1	/SETUP POINTER TO UASEM
	DCA ZTEM7	/IN OUR BG TABLE
GEASLP,	ISZ ZTEM7
	TAD I ZTEM7	/LOOK AT ENTRY
	SNA		/IS IT FREE ?
	 JMP GEASFR	/YES, GO PUT IN MY NAME
	CIA
	TAD GENAME	/WAS IT ALREADY USED BY ME ?
	SZA CLA
	 JMP GEASLP	/NO, SOME OTHER TASK, LOOK FOR MORE
GEASFR,	TAD GENAME
	DCA I ZTEM7	/OK, PUT MY NAME IN UASEM TABLE
	CDTOIF
	TAD (4200	/WRITE 2 PAGES
	RIF		/FROM THIS FIELD
	DCA I YRTV	/PUT THIS IN THE OUTPUT TV
	TAD YBUF
	DCA I REF2	/
	TAD (SZL
	DCA I XGE	/PATCH FIRST INSTRUCTION OF TASK
IFDEF KLPLOT <
	TAD (15
	DCA I YBUF	/FIRST LOC OF HEADER
	JMS I XDATE	/SETUP DATE IN HEADER
	TAD (" &177
	JMS I XSTORE
	TAD I (TIME+3	/HOURS
	TAD (30
	JMS I XDIGITS
	TAD (":&177
	JMS I XSTORE
	TAD I (TIME+2	/MINUTES
	TAD (74
	JMS I XDIGITS	/ >
	TAD XBASE
	CLL		/!
	CDF 10
	JMP I XGE	//START THE TASK

GENAME,	"G^100+"E&3777
GCLOSE,	JMS MONITOR
	   EXIT SWPOUT
	PAGE
	$-$-$