ASMB,R,Q,C * NAME: LIMEM * SOURCE: 92070-18204 * RELOC: 92070-1X204 * PGMR: HLC * * * **************************************************************** * * (C) COPYRIGHT HEWLETT-PACKARD COMPANY 1979. ALL RIGHTS * * * RESERVED. NO PART OF THIS PROGRAM MAY BE PHOTOCOPIED, * * * REPRODUCED OR TRANSLATED TO ANOTHER PROGRAM LANGUAGE WITHOUT * * * THE PRIOR WRITTEN CONSENT OF HEWLETT-PACKARD COMPANY. * * **************************************************************** * * NAM LIMEM,7 92070-1X204 REV.1941 790205 ENT LIMEM * EXT .ENTR,$CSEG,$LIBR EXT $LIBX,$LOW,$FWBG EXT $LOBP,$SISZ,$ROM * * A EQU 0 B EQU 1 * * LIMEM NOP TRUE ENTRY POINT LDA LIMEM STA LIM.. CLA STA CSEG SET UP OPTIONAL PARAMETER DEFAULTS STA CLNG JMP LIM..+1 * * WHCH NOP LSEG NOP LLNG NOP CSEG NOP CLNG NOP LIM.. NOP PSEUDO-ENTRY POINT JSB .ENTR GET PARAMETER ADDRESSES DEF WHCH LDA $CSEG,I RAL,CLE,ERA CLEAR THE 'AM' BIT LDB WHCH,I JSB $LIBR TURN OFF MEMORY PROTECT NOP CCE,SSB,RSS JMP GET ALLOCATE AVAILABLE MEMORY STA $CSEG,I DE-ALLOCATE EXIT JSB $LIBX DEF LIM.. * * GET STA CSEG,I STA LSEG,I SAVE START OF FREE MEMORY LDB $LOW,I CPB $FWBG JMP BG BACKGROUND PROGRAM CLA STA LLNG,I REAL TIME GETS NO FREE MEMORY STA CLNG,I JMP EXIT * * BG RAL,ERA SET 'AM' BIT STA $CSEG,I LDA $LOBP,I CLB RRL 6 PUT THE NUMBER OF SEGMENTS IN B CMB,INB,SZB,RSS JMP NOSGS NONE STB LIMEM LDB $LOW,I ADB =D4 * LP LDA B,I HIGH MAIN OF SEGMENT CMA,CLE,INA ADA LSEG,I FIND LARGEST SEGMENT LDA B,I SEZ,RSS STA LSEG,I NEW HIGH, SAVE IT ADB $SISZ BUMP TO NEXT SEGMENT ISZ LIMEM JMP LP NOSGS LDA LSEG,I CMA,INA ADA $ROM SUBTRACT HIGH SEGMENT FROM END OF MEMORY STA LLNG,I * LDA CSEG,I CMA,INA ADA $ROM SUBTRACT CURRENT SEGMENT FROM END OF MEMORY STA CLNG,I JMP EXIT DONE * END