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