%EXTERNALROUTINESPEC ECTM REPORT LONG(%STRING(63) MESS, %C %INTEGER DR0, DR1) %EXTERNALROUTINESPEC ECTM REPORT INT(%STRING(63) MESS, %INTEGER I) %EXTERNALSTRING(31)%FNSPEC ECTM NEXT TEMP ! %SYSTEMROUTINESPEC MOD DIR FILE(%INTEGER EP, %C %STRING(31) DIR FILE, ENTRY, FILENAME, %C %INTEGER TYPE, DR0, DR1, %INTEGERNAME FLAG) %SYSTEMROUTINESPEC FIND ENTRY(%STRING(31) ENTRY, %C %INTEGER TYPE, DAD, %STRINGNAME FILE, %C %INTEGERNAME DR0, DR1, FLAG) %EXTERNALROUTINESPEC COPY(%STRING(255) S) %EXTERNALINTEGERFNSPEC EXIST(%STRING(31) FILE) %SYSTEMROUTINESPEC LOAD FILE(%STRING(31) S, %INTEGER MODE, %C %INTEGERNAME FLAG) %SYSTEMINTEGERMAPSPEC COMREG(%INTEGER I) ! %EXTERNALLONGINTEGERFN ROUTE DESCRIPTOR(%STRING(31) FILE, %C %STRINGNAME TEMP) ! ! Loads the named file, returns a descriptor to the entry 'ROUTE' ! (if found in this file), removes any entry names etc from the ! session directory. ! %INTEGER FLAG, GLA, DR0, DR1 %LONGINTEGER R ! GLA = COMREG(44) %IF FILE -> ("T#").TEMP %AND EXIST(FILE) # 0 %THEN TEMP = FILE %C %ELSE %START TEMP = ECTM NEXT TEMP COPY(FILE.",".TEMP) %FINISH LOAD FILE(TEMP,2,FLAG) %IF FLAG > 0 %THEN %RESULT = 0 FIND ENTRY("ROUTE",0,0,TEMP,DR0,DR1,FLAG) %IF FLAG > 0 %THEN %RESULT = 0 ECTM REPORT LONG("ROUTE entry found in '".TEMP."'",DR0,DR1) MOD DIR FILE(5,"","","",GLA,0,0,FLAG) ! INTEGER(ADDR(R)) = DR0 INTEGER(ADDR(R)+4) = DR1 %RESULT = R %END ! %EXTERNALINTEGERFN RAM DESCRIPTORS(%STRING(31) FILE, %C %STRINGNAME TEMP, %C %INTEGERNAME RAM DR0, RAM DR1, ACC1 DR0, ACC1 DR1, %C ACC2 DR0, ACC2 DR1) ! ! Does a similar trick to ROUTE DESCRIPTOR ! %INTEGER GLA, FLAG ! GLA = COMREG(44) TEMP = ECTM NEXT TEMP COPY(FILE.",".TEMP) LOAD FILE(TEMP,2,FLAG) %IF FLAG > 0 %THEN %RESULT = FLAG ! FIND ENTRY("RAM",0,0,TEMP, RAM DR0, RAM DR1, FLAG) %IF FLAG > 0 %THEN %RESULT = FLAG ECTM REPORT LONG("RAM entry found in '".TEMP."'",RAMDR0,RAMDR1) FIND ENTRY("ACCESS1",0,0,TEMP, ACC1 DR0, ACC1 DR1, FLAG) %IF FLAG > 0 %THEN %RESULT = FLAG ECTM REPORT LONG("ACCESS1 entry found in '".TEMP."'",ACC1DR0,ACC1DR1) FIND ENTRY("ACCESS2",0,0,TEMP, ACC2 DR0, ACC2 DR1, FLAG) %IF FLAG > 0 %THEN %RESULT = FLAG ECTM REPORT LONG("ACCESS2 entry found in '".TEMP."'",ACC2DR0,ACC2DR1) ! ! Now convince the loader to forget all about this object ! file, so that we can load the same file (or another with ! the same entries) on the next 'select' call. ! MOD DIR FILE(5,"","","",GLA,0,0,FLAG) %RESULT = 0 %END ! %ENDOFFILE