.TITLE PSEC.MAR ;+ THIS PROGRAM ILLUSTRATES THE USE OF PRIVATE SECTIONS. ; IT CREATES A FILE, THEN CREATES AND MAPS THIS FILE AS ; A PRIVATE SECTION. THE SECTION IS THEN WRITTEN TO ;- AND PRINTED. ; DATA $JPIDEF SECFAB: $FAB FNM=, FOP=,- ; MINIMUM ALQ=10, FAC=PUT ; FAB FIELDS MAPRANGE: .BLKL ; FIRST PAGE .LONG ^X1FFFFFFF ; LAST PAGE RETRANGE: BEGIN: .BLKL ; FIRST PAGE MAPPED .BLKL ; LAST PAGE MAPPED OUTPUT: .LONG 10 STR_LOC:.BLKL NUM: .LONG ^X30 GETVADR:.WORD 4 .WORD JPI$_FREP0VA .LONG MAPRANGE .LONG 0 .LONG 0 START: .WORD 0 ; CREATE FILE FOR PRIVATE SECTION $CREATE FAB=SECFAB BLBC R0, ERROR ; OBTAIN ADDRESS OF FIRST FREE PAGE IN PROGRAM (P0) SPACE $GETJPI_S ITMLST=GETVADR BLBC R0, ERROR ; CREATE AND MAP SECTION FOR READ/WRITE ACCESS AND ; DEMAND ZERO PAGING $CRMPSC_S INADR=MAPRANGE, RETADR=RETRANGE,- PAGCNT=#10, FLAGS=#SEC$M_WRT,- CHAN=SECFAB+FAB$L_STV BLBC R0, ERROR ; POINT TO START OF SECTION ADDL3 BEGIN,#2048,R2 ; WRITE TO SECTION LOOP: MOVB NUM, (R2)+ AOBLEQ #^X39, NUM, LOOP ; COMPLETE OUTPUT STRING DESCRIPTOR AND ; PRINT WHAT WAS WRITTEN TO SECTION MOVL BEGIN, STR_LOC PUSHAQ OUTPUT CALLS #1, LIB$PUT_OUTPUT BLBC R0, ERROR RET ERROR: $EXIT_S R0 .END START