Trailing-Edge
-
PDP-10 Archives
-
BB-4172H-BM
-
4-1-sources/mapper.mac
There are 20 other files named mapper.mac in the archive. Click here to see a list.
; UPD ID= 59, FARK:<5-1-WORKING-SOURCES.UTILITIES>MAPPER.MAC.3, 10-Nov-82 14:26:21 by WEETON
;Edit 5 - update version number to 5.
; UPD ID= 7, FARK:<5-WORKING-SOURCES.UTILITIES>MAPPER.MAC.2, 8-Apr-82 11:57:19 by ZIMA
;Edit 4 - add code to allow running under 4.1 or 5.
;<5.UTILITIES>MAPPER.MAC.5, 28-Oct-81 15:24:56, EDIT BY GRANT
;Change major version to 5
; UPD ID= 1694, SNARK:<5.UTILITIES>MAPPER.MAC.4, 12-Mar-81 11:55:54 by GRANT
;Update Copyright
; UPD ID= 1579, SNARK:<5.UTILITIES>MAPPER.MAC.3, 24-Feb-81 17:02:09 by BLOUNT
;UPDATE VERSION NUMBER TO 5
; UPD ID= 1288, SNARK:<5.UTILITIES>MAPPER.MAC.2, 18-Nov-80 14:51:17 by OSMAN
;Change GET to reflect new args
;<4.1.UTILITIES>MAPPER.MAC.2, 9-Nov-79 10:42:46, EDIT BY DBELL
;TCO 4.2569 - DON'T DO RLJFN AFTER GET JSYS
;<4.UTILITIES>MAPPER.MAC.6, 7-May-79 12:38:32, EDIT BY KIRSCHEN
;REMOVE EXTRA BRACKET ON ERJMP AFTER GET
;<4.UTILITIES>MAPPER.MAC.5, 7-May-79 11:33:54, EDIT BY HURLEY
;CLEAR THE CACHE BEFORE LOADING IT
;<4.UTILITIES>MAPPER.MAC.4, 2-May-79 13:25:32, EDIT BY KIRSCHEN
;ADD ERROR MESSAGE IF GET FAILS
;<4.UTILITIES>MAPPER.MAC.3, 10-Mar-79 14:16:56, Edit by KONEN
;UPDATE COPYRIGHT FOR RELEASE 4
;<4.UTILITIES>MAPPER.MAC.1, 16-Nov-78 14:17:56, EDIT BY HURLEY
;THIS SOFTWARE IS FURNISHED UNDER A LICENSE AND MAY ONLY BE USED
; OR COPIED IN ACCORDANCE WITH THE TERMS OF SUCH LICENSE.
;
;COPYRIGHT (C) 1976,1977,1978,1979,1980,1981 BY DIGITAL EQUIPMENT CORPORATION, MAYNARD, MASS.
TITLE MAPPER - PROGRAM TO LOAD THE PROGRAM NAME CACHE
SEARCH MONSYM,MACSYM
SALL
;REVISION HISTORY
;
;4 JGZ 8-APR-82
; Add code to enable running under either 4.1 or 5 or later.
;
;5 RWW 10-NOV-82
; Update version number to 5.
;
;END REVISION HISTORY
;VERSION NUMBER
VMAJOR==5 ;[5]MAJOR VERSION
VMINOR==0 ;MAINTENANCE RELEASE NUMBER
VEDIT==5 ;EDIT NUMBER
VWHO==0 ;CUSTOMER EDIT NUMBER
VMAPPER==<VWHO>B2!<VMAJOR>B11!<VMINOR>B17!VEDIT
ENTVEC: JRST START ;START POINT
JRST START ;REENTER
VMAPPER ;VERSION NUMBER
;AC DEFINITIONS - TOPS-20 STANDARDS APPLY
T1=1 ;TEMPORARY ACS
T2=2
T3=3
T4=4
Q1=5 ;PERMANENT ACS
Q2=6
Q3=7
P1=10
P2=11
P3=12
P4=13
P5=14
P6=15
CX=16 ;TEMP
P=17 ;PUSH DOWN POINTER
FPAG==10 ;FIRST PAGE TO USE FOR MAPPING
LPAG==770-NPAG ;LAST PAGE FOR MAPPING
NPAG==2 ;NUMBER OF PAGES TO BE MAPPED
DEFINE ERRMES (A) < ;FATAL ERROR
JRST [ MOVEI T1,.PRIOU ;OUTPUT ERROR INFO TO CONTROLING TTY
HRLOI T2,.FHSLF
SETZ T3,
ERSTR
JFCL
JFCL
HRROI T1,A ;OUTPUT REMAINDER OF MESSAGE
PSOUT
HALTF ;THEN STOP
JRST START]>
DEFINE WARN (A,B) < ;WARNING MESSAGE - NON-FATAL
JRST [ MOVEI T1,.PRIOU
HRLOI T2,.FHSLF
SETZ T3,
ERSTR
JFCL
JFCL
MOVEI T1," "
PBOUT
HRROI T1,B ;OUTPUT THE WARNING MESSAGE
PSOUT
HRROI T1,[ASCIZ/
/]
PSOUT
A]> ;DO THE INSTRUCTION SUPPLIED IN CALL
START: RESET ;INITIALIZE THE WORLD
MOVE P,[IOWD PDLEN,PDL] ;SET UP A PUSH DOWN LIST
MOVEI T1,.FHSLF
SETOB T2,T3
EPCAP ;ENABLE WHEEL OR OPERATOR
MOVEI T1,FPAG ;INIT STARTING VARIABLES
MOVEM T1,MPAG ;FIRST FREE PAGE FOR MAPPING IN NON-EXE FILES
MOVEI T1,.FHSLF ;USE THE CURRENT FORK BEFORE GETTING ANOTHER
MOVEM T1,FORKH
;**;[4] Add 6 lines and change 1 at START: +9L JGZ 8-APR-82
MOVX T1,<0,,.SCOUN> ;[4] SEE IF SCOUNTS TABLE IS IN MONITOR
GETAB ;[4] TO DETERMINE VERSION LEVEL
TDZA Q1,Q1 ;[4] FAILED - MUST BE A 4 MONITOR
SETOM Q1 ;[4] TABLE EXISTS, V5 OR LATER
MOVEI T1,0 ;[4] OLD WAY TO FLUSH PROGRAM CACHE
SKIPE Q1 ;[4] TEST WHICH
MOVX T1,GT%ARG ;[4] NEW WAY - SAY ARG BLOCK IN AC2
MOVEI T2,[ GT%CCH] ;SAY TO CLEAR CACHE
GET ;DO IT
ERJMP .+1
MOVSI T1,(GJ%SHT!GJ%OLD)
HRROI T2,[ASCIZ/SYSTEM:PROGRAM-NAME-CACHE.TXT/]
GTJFN ;LOOKUP THE LIST OF FILES TO BE CACHED
ERRMES (<[ASCIZ/SYSTEM:PROGRAM-NAME-CACHE.TXT/]>)
MOVEM T1,PNCJFN ;SAVE THE JFN
MOVE T2,[070000,,OF%RD]
OPENF ;OPEN THE LIST OF FILES
ERRMES <[ASCIZ/SYSTEM:PROGRAM-NAME-CACHE.TXT/]>
LOOP: MOVEI P1,5 ;SET UP TO READ IN A LINE FROM THE LIST
MOVE P2,[RD%TOP!RD%JFN] ;BREAK ON CR-LF
HRLZ P3,PNCJFN ;GET JFN OF FILE
HRRI P3,377777
HRROI P4,STRING ;READ LINE INTO STRING
MOVEI P5,STRINC ;LENGTH OF STRING AREA
MOVEI T1,P1
TEXTI ;READ IN A LINE
ERJMP DONE ;IF NO MORE, THEN DONE
MOVSI T1,(GJ%SHT!GJ%OLD)
HRROI T2,STRING ;NOW LOOKUP THE FILE INDICATED IN LIST
GTJFN
WARN (<JRST LOOP>,<STRING>)
MOVEM T1,JFN ;SAVE THE JFN
HRROI T1,TYPSTR
HRRZ T2,JFN
MOVX T3,1B11
JFNS ;GET THE FILE TYPE
MOVE T1,TYPSTR
CAMN T1,[ASCIZ/EXE/] ;IS THIS AN .EXE FILE?
JRST LOOP1 ;YES, GO DO A GET JSYS
HRRZ T1,JFN ;NO, USE PMAP TO MAP IN THE PAGES
MOVE T2,[440000,,OF%RD] ;MAP IT FOR READ ONLY
OPENF ;OPEN THE FILE TO BE CACHED
WARN (<JRST LOOP>,<STRING>)
FFFFP ;MAP UP TO THE FIRST HOLE
HRRZ T3,T1 ;GET THE NUMBER OF PAGES IN THE FIRST BLOCK
CAIL T3,LPAG ;MAKE SURE IT WILL FIT IN A FORK
MOVEI T3,LPAG-1 ;IF NOT, THEN LIMIT IT TO ONE FORK
MOVE T2,MPAG ;GET THE START OF THE AREA TO MAP INTO
ADD T2,T3
CAILE T2,LPAG ;IS THERE ENOUGH ROOM IN THIS FORK?
JRST [ SETZ T1,
CFORK ;NO, GET ANOTHER FORK
JRST LOOP
MOVEM T1,FORKH ;SAVE THE NEW FORK HANDLE
SETZM MPAG ;START AT THE BEGINNING
JRST .+1]
HRLZ T1,JFN ;NOW MAP THE FILE
MOVE T2,MPAG ;STARTING AT MPAG
HRL T2,FORKH ;INTO THE DESIGNATED FORK
HRLI T3,(PM%CNT!PM%RD) ;T3 HAS THE COUNT OF PAGES
PMAP ;LEAVING THE PAGES MAPPED REDUCES THE
; ACCESS TIME FOR SUBSEQUENT MAPPINGS
; BY OTHER USERS
HRRZ T1,T3
ADDM T1,MPAG ;UPDATE THE STARTING FREE PAGE
JRST LOOP ;LOOP BACK FOR OTHER FILES IN LIST
LOOP1: SETZB T1,T2 ;GET A FORK TO DO THE GET INTO
CFORK
WARN (<JRST LOOP3>,<STRING>)
MOVEM T1,FORK ;SAVE THE FORK HANDLE
HRRZ T1,JFN ;GET THE JFN OF THE .EXE FILE
;**;[4] Revamp code at LOOP1: +5L JGZ 8-APR-82
SKIPN Q1 ;[4] TEST VERSION
TXOA T1,GT%FL2 ;[4] USE OLD FORM
TXO T1,GT%ARG ;[4] NEW FORM - SAY ARG BLOCK ADDRESS IN AC2
HRL T1,FORK ;GET THE FORK TO LOAD INTO
MOVX T3,G2%FCH ;[4] OLD FORM AC3 SETUP (IRRELEVANT TO LATER)
SKIPN Q1 ;[4] TEST VERSION
TDZA T2,T2 ;[4] OLD FORM - CLEAR T2, FLAGS IN T3
MOVEI T2,[ GT%CSH] ;[4] NEW FORM - SAY TO CACHE THIS PROGRAM
GET ;GET THE EXE FILE
ERJMP [WARN (<JRST LOOP3>,STRING)]
LOOP2: HRRZ T1,FORK
KFORK ;KILL THE FORK (THE FILE REMAINS CACHED)
JRST LOOP ;LOOP BACK (WITHOUT DOING THE RLJFN!!)
LOOP3: HRRZ T1,JFN ;RELEASE THE JFN
RLJFN
JFCL
JRST LOOP ;LOOP BACK FOR THE OTHER FILES
DONE: HRRZ T1,PNCJFN ;CLOSE THE LIST FILE
CLOSF
JFCL
WAIT ;GO INTO AN ENDLESS SLEEP
HALTF
JRST .-1
PDLEN==20
PDL: BLOCK PDLEN ;PUSH DOWN LIST
STRNGL==40
STRINC=STRNGL*5-1
STRING: BLOCK STRNGL ;TEMP STRING
TYPSTR: BLOCK 10
MPAG: 0 ;FIRST FREE PAGE IN MAPPER FORK
JFN: 0 ;JFN OF FILE BEING MAPPED
FORK: 0 ;FORK TO DO GET'S INTO
FORKH: 0 ;FORK TO DO MAP'S INTO
PNCJFN: 0 ;JFN OF LIST FILE
END <3,,ENTVEC>