MACRO 00001000 DMSFRT &CSECT 00002000 PUSH PRINT 00002200 AIF ('&SYSPARM' NE 'SUP').ACC01 00002400 PRINT OFF,NOGEN 00002600 .ACC01 ANOP 00002800 AIF ('&CSECT' NE 'CSECT' AND '&CSECT' NE 'TEST').D 00003000 .C ANOP 00004000 ENTRY DMSFRT 00005000 DMSFRT DS 0D 00006000 AIF ('&CSECT' EQ 'CSECT').CE 00007000 FRDSECT EQU * 00008000 AGO .CE 00009000 .D ANOP 00010000 FRDSECT DSECT 00011000 .CE ANOP 00012000 SPACE 00013000 * THE FOLLOWING ARE THE FOUR FREE CHAIN ELEMENT HEADER BLOCKS 00014000 FREELN DC 3F'0',AL1(FLNU+FLPA,NUCKEY,NUCCODE,0) LOWCORE NUCLEUS 00015000 FREELU DC 3F'0',AL1(0,USERKEY,USERCODE,0) LOWCORE USER CHAIN 00016000 FREEHN DC 3F'0',AL1(FLNU+FLHC,NUCKEY,NUCCODE,0) HIGHCORE NUCLEUS 00017000 FREEHU DC 3F'0',AL1(FLHC,USERKEY,USERCODE,0) HIGHCORE USER CHAIN 00018000 SPACE 00019000 * THE FOLLOWING SYMBOLIC EQUATES DESCRIBE THE FORMAT OF EACH OF THE 00020000 * FOUR FREE CHAIN ELEMENT HEADER BLOCKS. 00021000 POINTER EQU 0 POINT TO FIRST FREE ELEMENT 00022000 NUM EQU 4 NUMBER OF ELEMENTS IN CHAIN 00023000 MAX EQU 8 MAXIMUM SIZE OF AN ELEMENT 00024000 FLAGS EQU 12 FLAG BYTE 00025000 SKEY EQU 13 STORAGE KEY FOR THIS CHAIN 00026000 TCODE EQU 14 FREETAB TABLE CODE 00027000 *UNUSED EQU 15 00028000 BLOCKLEN EQU 16 SYMBOLIC LENGTH OF BLOCK 00029000 SPACE 00030000 * DEFINITIONS FOR THE 'FLAGS' FLAG BYTE 00031000 FLCLN EQU X'80' CLEAN-UP FLAG 00032000 FLCLB EQU X'40' CLOBBERED CHAIN FLAG 00033000 FLHC EQU X'20' HIGH-CORE FLAG 00034000 FLNU EQU X'10' NUCLEUS FLAG 00035000 FLPA EQU X'08' PAGE AVAILABLE ON CHAIN 00036000 SPACE 00037000 * DEFINITIONS FOR 'SKEY' STORAGE KEY VALUES 00038000 USERKEY EQU X'E0' USER STORAGE KEY 00039000 NUCKEY EQU X'F0' NUCLEUS STORAGE KEY 00040000 SPACE 00041000 * DEFINITIONS FOR 'TCODE' FREETAB TABLE CODE VALUES 00042000 USERCODE EQU 1 USER FREE STORAGE PAGE 00043000 NUCCODE EQU 2 NUCLEUS FREE STORAGE PAGE 00044000 TRNCODE EQU 3 TRANSIENT AREA PAGE 00045000 USARCODE EQU 4 USER AREA PAGE 00046000 SYSCODE EQU 5 SYSTEM PAGE 00047000 MAXCODE EQU 5 MAXIMUM POSSIBLE CODE VALUE 00048000 SPACE 3 00049000 AFREETAB DC A(0) ADDRESS OF FREETAB TABLE 00050000 FREELOW1 DS F ORIGINAL VALUE OF FREELOWE *00051000 (SET BY INIT2) 00052000 ACALL DS A ADDRESS OF CALLER (FOR ERRORS) 00053000 SPACE 2 00054000 * FLAGS SET BY EXAMINIG SVC 203 HALFWORD CODE 00055000 FREEFLG1 DC BL1'0' 00056000 FRF1C EQU X'80' CONDITIONAL REQUEST 00057000 FRF1V EQU X'40' VARIABLE REQUEST 00058000 FRF1N EQU X'20' NUCLEUS REQUEST 00059000 FRF1E EQU X'10' FREE (VS FRET) REQUEST 00060000 FRF1L EQU X'08' LOW-CORE IS OK 00061000 FRF1H EQU X'04' HIGH-CORE IS OK 00062000 FRF1M EQU X'02' MESSAGES WANTED ON ERROR 00063000 FRF1B EQU X'01' 'TYPCALL' EQUALS 'BALR' IN MACRO 00064000 SPACE 00065000 * THE FOLLOWING BYTE HOLDS FLAGS INTERNAL TO THE DMSFRE ROUTINE. 00066000 FREEFLG2 DC BL1'0' 00067000 FRF2CL EQU X'80' CLEANUP FLAG 00068000 FRF2SVP EQU X'40' SCHVPGE FLAG 00069000 FRF2NOI EQU X'20' 2ND INITIALIZATION ROUTINE HAS *00070000 NOT YET BEEN CALLED BY DMSINS 00071000 FRF2CKE EQU X'10' DO A 'CHECK' EQCH TIME FREE *00072000 OR FRET IS CALLED 00073000 FRF2CKT EQU X'08' DO A CHECK THIS TI ME 00074000 FRF2CKX EQU X'04' EXECUTING 'CHECK' ROUTINE NOW 00075000 SPACE 4 00076000 * FREE CHAIN ELEMENT DESCRIPTION. 00077000 *POINTER EQU 0 POINTER TO NEXT FREE ELEMENT 00078000 SIZE EQU 4 SIZE OF THIS ELEMENT IN BYTES 00079000 EJECT 00080000 POP PRINT 00080100 MEND 00081000