00000000: 85 81 9F 2F 2A 20 D2 4F 55 54 49 4E 53 20 46 4F |.../* .OUTINS FO|
00000010: 52 20 53 54 4F 52 41 47 45 20 41 4C 4C 4F 43 41 |R STORAGE ALLOCA|
00000020: 54 49 4F 4E 20 2A 2F 0D 1C 0D 1C 0D 1F 23 44 45 |TION */......#DE|
00000030: 46 49 4E 45 20 CC CF D7 CC C9 CD C9 D4 20 20 20 |FINE ........ |
00000040: 30 58 43 30 30 31 20 20 2F 2A 20 4C 4F 57 20 20 |0XC001 /* LOW |
00000050: 20 4C 49 4D 49 54 20 46 4F 52 20 4D 45 4D 4F 52 | LIMIT FOR MEMOR|
00000060: 59 20 41 4C 4C 4F 43 41 54 49 4F 4E 20 2A 2F 0D |Y ALLOCATION */.|
00000070: 1F 23 44 45 46 49 4E 45 20 C8 C9 C7 C8 CC C9 CD |.#DEFINE .......|
00000080: C9 D4 20 20 30 58 44 30 30 30 20 20 2F 2A 20 55 |.. 0XD000 /* U|
00000090: 50 50 45 52 20 2E 2E 2E 2E 20 20 20 20 20 20 20 |PPER .... |
000000A0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | |
000000B0: 20 2A 2F 0D 1F 0D 1C 0D 1C 53 54 41 54 49 43 20 | */......STATIC |
000000C0: 49 4E 54 20 4D 45 4D 4F 52 59 50 54 52 20 3D 20 |INT MEMORYPTR = |
000000D0: CC CF D7 CC C9 CD C9 D4 3B 0D 1C 0D 1C 0D 1C 43 |........;......C|
000000E0: 48 41 52 20 2A 4D 41 4C 4C 4F 43 28 53 45 49 5A |HAR *MALLOC(SEIZ|
000000F0: 45 29 0D 1C 0D 1C 49 4E 54 20 53 45 49 5A 45 3B |E)....INT SEIZE;|
00000100: 0D 1C 0D 1C DB 0D 1C 0D 1C 43 48 41 52 20 2A 4D |.........CHAR *M|
00000110: 45 4D 4F 52 59 41 44 44 52 20 3D 20 30 3B 0D 1C |EMORYADDR = 0;..|
00000120: 0D 1C 0D 1C 20 20 20 20 20 49 46 20 28 4D 45 4D |.... IF (MEM|
00000130: 4F 52 59 50 54 52 2B 53 45 49 5A 45 20 3C 3D 20 |ORYPTR+SEIZE <= |
00000140: C8 C9 C7 C8 CC C9 CD C9 D4 29 0D 1C 20 20 20 20 |.........).. |
00000150: 20 20 20 DB 0D 1C 20 20 20 20 20 20 20 20 4D 45 | ... ME|
00000160: 4D 4F 52 59 41 44 44 52 20 3D 20 4D 45 4D 4F 52 |MORYADDR = MEMOR|
00000170: 59 50 54 52 3B 0D 1C 20 20 20 20 20 20 20 20 4D |YPTR;.. M|
00000180: 45 4D 4F 52 59 50 54 52 20 2B 3D 20 53 45 49 5A |EMORYPTR += SEIZ|
00000190: 45 3B 0D 1C 20 20 20 20 20 20 20 DD 0D 1C 0D 1C |E;.. .....|
000001A0: 20 20 20 20 20 52 45 54 55 52 4E 20 28 4D 45 4D | RETURN (MEM|
000001B0: 4F 52 59 41 44 44 52 29 3B 0D 1C 0D 1C DD 0D 1C |ORYADDR);.......|
000001C0: 0D 1C 0D 1C 49 4E 54 20 4D 46 52 45 45 28 53 45 |....INT MFREE(SE|
000001D0: 49 5A 45 29 0D 1C 0D 1C 49 4E 54 20 53 45 49 5A |IZE)....INT SEIZ|
000001E0: 45 3B 0D 1C 0D 1C DB 0D 1C 0D 1C 20 20 20 20 49 |E;......... I|
000001F0: 46 20 28 4D 45 4D 4F 52 59 50 54 52 2D 53 45 49 |F (MEMORYPTR-SEI|
00000200: 5A 45 20 3E 3D 20 CC CF D7 CC C9 CD C9 D4 29 0D |ZE >= ........).|
00000210: 1C 20 20 20 20 20 20 20 4D 45 4D 4F 52 59 50 54 |. MEMORYPT|
00000220: 52 20 2D 3D 20 53 45 49 5A 45 3B 0D 1C 0D 1C 2F |R -= SEIZE;..../|
00000230: 2A 20 52 45 54 55 52 4E 20 4E 55 4D 42 45 52 20 |* RETURN NUMBER |
00000240: 4F 46 20 42 59 54 45 53 20 52 45 4D 41 4E 49 4E |OF BYTES REMANIN|
00000250: 47 20 49 4E 20 41 4C 4C 4F 43 41 54 49 4F 4E 20 |G IN ALLOCATION |
00000260: 41 52 45 41 20 2A 2F 0D 1C 0D 1C 20 20 20 20 52 |AREA */.... R|
00000270: 45 54 55 52 4E 20 28 C8 C9 C7 C8 CC C9 CD C9 D4 |ETURN (.........|
00000280: 2D 4D 45 4D 4F 52 59 50 54 52 2B 31 29 3B 0D 1C |-MEMORYPTR+1);..|
00000290: 0D 1C DD 0D 1C 0D 00 |....... |
.../* ROUTINS FOR STORAGE ALLOCATION */.
.....#DEFINE LOWLIMIT 0XC001 /* LOW
LIMIT FOR MEMORY ALLOCATION */..#DEFINE
HIGHLIMIT 0XD000 /* UPPER ....
*/......STATIC INT MEMO
RYPTR = LOWLIMIT;......CHAR *MALLOC(SEIZ
E)....INT SEIZE;.........CHAR *MEMORYADD
R = 0;...... IF (MEMORYPTR+SEIZE <=
HIGHLIMIT).. ... MEMORYADDR
= MEMORYPTR;.. MEMORYPTR += SEIZ
E;.. ..... RETURN (MEMORYADDR)
;...........INT MFREE(SEIZE)....INT SEIZ
E;......... IF (MEMORYPTR-SEIZE >= LO
WLIMIT).. MEMORYPTR -= SEIZE;..../
* RETURN NUMBER OF BYTES REMANING IN ALL
OCATION AREA */.... RETURN (HIGHLIMIT
-MEMORYPTR+1);.........
×
C64 Image
> CLICK IMAGE PREVIEW FOR FULL MODAL