SUBROUTINE ALCORE(NCELLS, IPTR, ISOK) C C *** ROUTINE TO ALLOCATE CORE C $INCLUDE:"COMCORE.FOR" C C INPUTS: C NCELLS = NUMBER OF WORDS TO ALLOCATE C OUTPUTS: C IPTR = START OF FIRST CELL IN CORE C ISOK = 1 IF NO SPACE AVAILABLE; 2 OTHERWISE C C USE CORE FROM THE LIST OF AVAILABLE SPACE IF AVAILABLE C ISOK = 1 IPTR = 0 C IF (NCELLS.LE.NHLA) THEN IF (IHLA(NCELLS) .GT. 0) THEN IPTR = IHLA(NCELLS) IHLA(NCELLS) = ICORE(IPTR) ISOK = 2 ENDIF ENDIF C C IF CORE NOT ALREADY ALLOCATED USE UNUSED CORE C IF (ISOK.EQ.1) THEN IF (NCELLS.LE. (NCORE-IHAVAIL+1)) THEN IPTR = IHAVAIL IHAVAIL = IHAVAIL + NCELLS ISOK = 2 ENDIF ENDIF C RETURN END C SUBROUTINE FRCORE(NCELLS, IPTR) C C *** ROUTINE TO FREE CORE C $INCLUDE:"COMCORE.FOR" C C INPUTS: C NCELLS = NUMBER OF WORDS ALLOCATED C IPTR = START OF FIRST CELL IN CORE C C PUT ON LIST OF AVAILABLE SPACE C IF (NCELLS.LE.NHLA) THEN ICORE(IPTR) = IHLA(NCELLS) IHLA (NCELLS) = IPTR ENDIF C RETURN END C SUBROUTINE STARTCORE C C *** ROUTINE TO INITIALIZE THE CORE MANAGEMENT SYSTEM C $INCLUDE:"COMCORE.FOR" C NHLA = 100 NCORE = 2000000 C DO 10 I = 1, NHLA IHLA(I) = 0 10 CONTINUE C IHAVAIL = 1 C RETURN END