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>//