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

/MAGTAPE EMULATOR FOR MULTI8
/LAST EDIT 8-JAN-79, ELC
/CREATED 5/11/77, ELC

	*200

	"M^100+"E&3777	/NAME IS ME
	200		/ONE PAGE SHOULD BE SUFFICIENT
	0

ME,	JMP MEINIT	/INITIALIZE EMULATOR
	SZL		/RELEASE ?
	 JMP MEEXIT	/YES, EXIT
	DCA MEBASE	/POINTER TO USER AREA
	TAD MEBASE
	TAD (UDTV
	JMS DEFER	/GET FUNCTION WORD
	AND C3700	/EXTRACT LENGTH BITS
	SZA CLA		/SPECIAL FUNCTION ?
	 JMP NORMAL	/NO
	TAD I X
	AND C7		/GET SPECIAL FUNCTION
	SNA		/FOR FUNCTIONS 1...4 MAKE
	 JMP NOSWP	/THE BACKGROUND INACTIVE BECAUSE
	TAD (-4		/THEY MAY LAST SOME TIME
	SMA SZA CLA	/
	 JMP NOSWP
	TAD I MEBASE
	TAD (INACTIVE-EMULATE
	DCA I MEBASE
	JMS MONITOR
	   SIGNAL
	   BSSLOT
	TAD MEBASE
	TAD (UDTV
	DCA X
NOSWP,	TAD I X		/GET FUNCTION WORD AGAIN
	AND (7707	/ZERO FIELD BITS
	DCA ZTEM1
	TAD I X
	AND C7		/EXTRACT SPECIAL FUNCTION CODE
	CLL RTL
	RAL		/SHIFT SPECIAL FUNCTION TO BITS 6-8
	TAD ZTEM1
	DCA I X		/AND STORE IN FUNCTION WORD
GO,	TAD I X		/GET FUNCTION WORD
	AND C7770	/ZERO UNIT NUMBER FIELD
	DCA I X
	TAD MEBASE
	TAD (UAC
	DCA MEUAC
	TAD I MEUAC	/GET USERS AC
	AND C7		/GET UNIT NUMBER FROM USERS AC
	TAD I X		/AND ADD INTO FUNCTION WORD
	DCA I X
	TAD X
	JMS MONITOR	/CALL MT
	   CALL
	   "M^100+"T&3777
	 JMP .-3	/BUSY ? WAIT
	DCA .+3
	JMS MONITOR
	   WAIT
	   0
	CDF 10
	CLL RAL		/
	DCA I MEUAC	/PASS COMPLETION STATUS TO BACKGROUND
	TAD I MEBASE
	SMA		/INACTIVE ?
	 JMP MERTRN	/NO
	TAD (-INACTIVE+EMULATE
	DCA I MEBASE
	JMS MONITOR
	   SIGNAL
	   BSSLOT
MERTRN,	CLA CLL		/
	JMS MONITOR
	   RETURN

NORMAL,	TAD I X		/GET FUNCTION WORD
	AND C70		/EXTRACT VIRTUAL FIELD NUMBER
	TAD I MEBASE	/GENERATE INCORE REQUEST
	TAD (-EMULATE+INCORE
	DCA I MEBASE
	JMS MONITOR
	   SIGNAL
	   BSSLOT
	TAD MEBASE
	TAD (USLOT
	JMS DEFER
	DCA .+3
	JMS MONITOR
	   WAIT
	   0
	MQL		/AC IS REAL FIELD NUMBER
	TAD MEBASE
	TAD (UDTV
	JMS DEFER
	AND (7707	/ZERO FIELD BITS
	MQA		/OR-IN REAL FIELD NUMBER
	DCA I X
	JMP GO		/PERFORM TRANSFER NOW

MEINIT,	DCA BASE
	TAD (ASEMTB-1
	DCA AUTO10
	TAD I AUTO10
	SZA CLA		/SEARCH FOR A FREE ENTRY
	 JMP .-2	/IN ASEMTB
	TAD AUTO10
	DCA MENTRY	/STORE ADDRESS OF ENTRY
	CDF 0		//
	TAD I (CURTSK	//GET MY TCBP
	CDF 10		/
	DCA I MENTRY	/AND PUT IT IN ASEMTB
	TAD (NOP
	DCA ME		/REMOVE JMP MEINIT
	TAD BASE	/RELOAD AC
	JMP ME		/AND START

MEEXIT,	CLA
	DCA I MENTRY	/CLEAR ENTRY IN ASEMTB
	JMS MONITOR
	   EXIT SWPOUT

MEBASE,	0
MEUAC,	0
MENTRY,	0