

	ILLUSTRATION OF A SIMPLE PROGRAM IN MEMORY




	      PHYSICAL ADDRESS SPACE

		 _______________
	000000	|		|
		|		|
		|		|
		|		|		MOV 2000,3000
		|		|		HALT
		|		|
	001000	|    016767	|
	001002	|    002000	|
	001004	|    003000	|		MOV @#2000,@#3000
	001006	|    000000	|		HALT
		|		|
	002000	|    123456	|
		|		|
	003000	|    XXXXXX	|
		|		|
		|		|
		|		|
		|		|
		|		|
	177776	|_______________|
	200000	|		|   64K (bytes)
		|		|
		|		|
		|		|
		|		|
		|		|
		|		|
		|		|
		|		|
		|		|
		|		|
		|		|
		|		|
		|		|
		|		|
		|		|
	757776	|_______________|
	760000	|		|  248K (bytes)
		|		|
		|    I/O PAGE	|
		|		|
	777776	|_______________|
				   256K (bytes)



	MAPPING OF A SIMPLE 32K WORD TASK




	     VIRTUAL ADDRESS	    PHYSICAL ADDRESS


					 _______
					|	|    0
					|	|
					|	|
					|	|
					|	|
					|	|
					|	|
					|	|
					|	|
					|	|
					|	|
					|	|
					|	|
		 _______		|_______|
	000000	|	|		|	|
		|_______|-------------->|_______|
	020000	|	|		|	|
		|_______|-------------->|_______|
	040000	|	|		|	|
		|_______|-------------->|_______|
	060000	|	|		|	|
		|_______|-------------->|_______|
	100000	|	|		|	|
		|_______|-------------->|_______|
	120000	|	|		|	|
		|_______|-------------->|_______|
	140000	|	|		|	|
		|_______|-------------->|_______|
	160000	|	|		|	|
		|_______|-------------->|_______|
					|	|
					|	|
					|	|
					|	|
					|	|
					|	|
					|	|
					|	|
					|	|
					|	|
					|	|
					|	|
					|	|
					|_______|
						   256K (bytes)



	MAPPING OF A COMPLEX 32K WORD TASK




	     VIRTUAL ADDRESS		    PHYSICAL ADDRESS

						 _______
						|	|  000000
						|	|
						|	|
						|	|
						|	|
						|	|
						|	|
						|	|
						|	|
						|_______|
						|	|
					      ->|_______|
					     /	|	|
					    / ->|_______|
					   / /	|	|
					  / /	|	|
					 / /	|	|
					/ /	|	|
		 _______	       / /	|_______|
	000000	|	|	      / /	|	|
		|_______|------------/-/------->|_______|
	020000	|	|	    / /		|	|
		|_______|----------/-/--------->|_______|
	040000	|	|	  / /  		|	|
		|_______|--------/-/----------->|_______|
	060000	|	|	/ /		|	|
		|_______|------/-/------------->|_______|
	100000	|	|     / /		|	|
		|_______|----/-/--------------->|_______|
	120000	|	|   / /			|	|
		|_______|\ / /			|	|
	140000	|	| X /			|	|
		|_______|/ X			|	|
	160000	|	| / \			|	|
		|_______|/   \			|	|
			      \			|	|
			       \		|	|
				\		|	|
				 \		|	|
				  \		|	|
				   \		|	|
				    \		|	|
				     \		|_______|
				      \		|	|  760000
				       -------->|_______|



	CALCULATION OF PHYSICAL ADDRESS FROM VIRTUAL ADDRESS




				+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
	VIRTUAL ADDRESS		| APF |		  DF		|
				+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
						  |
						  |
				+-+-+-+		  |
	SELECT APR		| APF |		  |
				+-+-+-+		  v
				      +-+-+-+-+-+-+-+-+-+-+-+-+-+
				      |	    BN	    |	 DIB	|
				      +-+-+-+-+-+-+-+-+-+-+-+-+-+
							  |
							  |
			    +-+-+-+-+-+-+-+-+-+-+-+-+	  |
	PAR		+   |	       PAF	    |	  |
			    +-+-+-+-+-+-+-+-+-+-+-+-+	  |
							  |
			----------------------------------|---------
							  v
			    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
	PHYSICAL ADDRESS    |	       PBN	    |	 DIB	|
			    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+







	APF - ACTIVE PAGE FIELD

	DF - DISPLACEMENT FIELD

	APR - ACTIVE PAGE REGISTER

	BN - BLOCK NUMBER

	DIB - DISPLACEMENT IN BLOCK

	PAR - PAGE ADDRESS REGISTER

	PAF - PAGE ADDRESS FIELD

	PBN - PHYSICAL BLOCK NUMBER



	COMMANDS TO RUN A PROGRAM WHICH USES A DEVICE COMMON




	MCR>SET /MAIN=IOPAGE:177600:200:DEV  ; 7600 FOR 18 BIT PDP11

	MCR>INS LB:[1,1]IOPAGE



	MCR>RUN DEVCOM



	MCR>SET /NOMAIN=IOPAGE



	CREATION OF DEVICE COMMON IMAGE




		.TITLE	IOPAGE

		.PSECT	IOPAGE,GBL,D,OVR

		.BLKW	4096.		;4095. IF APR 7 MAPS I/O PAGE

		.END







	MAC>IOPAGE=IOPAGE





	TKB>LB:[1,1]IOPAGE/-HD/PI,,LB:[1,1]IOPAGE=IOPAGE

	TKB>/

	TKB>STACK=0

	TKB>PAR=IOPAGE:0:20000

	TKB>//



	FORTRAN PROGRAM WHICH USES A DEVICE COMMON




		PROGRAM DEVCOM


		BYTE IO

		INTEGER*2 CSR,CSB,CTR

		COMMON /IOPAGE/IO(8192)		! 8190 IF APR 7 MAPS I/O PAGE

		EQUIVALENCE (IO("12541),CSR),(IO("12543),CSB),(IO("12545),CTR)


		CSB = 0

		CSR = "21		! COUNT UP, 100KHZ, START CLOCK


		DO 100 I=1,100

	100	CONTINUE


		CSR = 0			! STOP CLOCK

		TYPE *,CTR


		STOP

		END




	F4P>DEVCOM=DEVCOM




	TKB>DEVCOM/FP=DEVCOM

	TKB>/

	TKB>COMMON=IOPAGE:RW:5

	TKB>LIBR=F4PRES:RO

	TKB>//



	MACRO SUBROUTINES TO ACCESS A DEVICE COMMON




		.TITLE	DEVCOMM


		.PSECT	IOPAGE,GBL,D,OVR

		CSR	=.+12540

		CSB	=.+12542

		CTR	=.+12544


		.PSECT


	START::	CLR	@#CSB

		MOV	#21,@#CSR	; COUNT UP, 100 KHZ, START CLOCK

		RTS	PC


	STOP::	BIC	#1,@#CSR	; STOP CLOCK

		MOV	@#CTR,@2(R5)

		RTS	PC


		.END








	MAC>DEVCOMM=DEVCOMM



	FORTRAN PROGRAM WHICH CALLS MACRO ROUTINES TO
	ACCESS A DEVICE COMMON




		PROGRAM DEVCOMF


		INTEGER*2 TIME


		CALL START


		DO 100 I=1,100

	100	CONTINUE


		CALL STOP(TIME)

		TYPE *,TIME


		STOP

		END







	F4P>DEVCOMF=DEVCOMF





	TKB>DEVCOM/FP=DEVCOMF,DEVCOMM

	TKB>/

	TKB>COMMON=IOPAGE:RW:5

	TKB>LIBR=F4PRES:RO

	TKB>//
