; ; C10COR - Basic Storage Allocation ; ; This file is ITS dependent. ; TITLE CCORE .INSRT NC .INSRT NM .GLOBAL FNWORD ; ; GETCORE - BASIC CORE ALLOCATOR ; ; GETCORE (SIZE) => SIZE,,ADDR ; CENTRY GETCORE,[BSIZE],[NPAGES,PTR] MOVE B,BSIZE ADDI B,1777 LSH B,-10. ; NUMBER OF PAGES NEEDED MOVEM B,NPAGES CALL PGJGET,[NPAGES] ; GET PAGES MOVN B,NPAGES ; MINUS NUMBER OF PAGES JUMPLE A,CODE [ CROAK STORAGE EXHAUSTED GO DOT ] MOVEM A,PTR HRL A,B ; AOBJN POINTER TO NEW PAGES TRYAGN: .CALL [SETZ 'CORBLK 1000,,300000 ; WANT READ AND WRITE ACCESS 1000,,-1 ; PUT PAGE IN MY MAP A ; WHERE TO PUT THEM 401000,,400001 ; GET FRESH PAGES ] GO CODE [ CROAK UNABLE TO GET CORE MOVEI 0,30. .SLEEP 0, GO TRYAGN ] MOVE A,PTR LSH A,10. ; POINTER TO FIRST PAGE MOVE B,NPAGES LSH B,10. ; NUMBER OF WORDS GOTTEN ADDM B,FNWORDS ; SAVE FOR STATS HRL A,B ; SIZE,,ADDR RETURN END