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: 55 4E 53 49 47 4E 45 44 20 49 4E 54 20 4D 45 4D |UNSIGNED INT MEM|
000000D0: 4F 52 59 50 54 52 20 3D 20 CC CF D7 CC C9 CD C9 |ORYPTR = .......|
000000E0: D4 3B 0D 1C 0D 1C 0D 1C 43 48 41 52 20 2A 4D 41 |.;......CHAR *MA|
000000F0: 4C 4C 4F 43 28 53 45 49 5A 45 29 0D 1C 0D 1C 49 |LLOC(SEIZE)....I|
00000100: 4E 54 20 53 45 49 5A 45 3B 0D 1C 0D 1C DB 0D 1C |NT SEIZE;.......|
00000110: 0D 1C 43 48 41 52 20 2A 4D 45 4D 4F 52 59 41 44 |..CHAR *MEMORYAD|
00000120: 44 52 20 3D 20 30 3B 0D 1C 0D 1C 0D 1C 20 20 20 |DR = 0;...... |
00000130: 20 20 49 46 20 28 4D 45 4D 4F 52 59 50 54 52 2B | IF (MEMORYPTR+|
00000140: 53 45 49 5A 45 20 3C 3D 20 C8 C9 C7 C8 CC C9 CD |SEIZE <= .......|
00000150: C9 D4 29 0D 1C 20 20 20 20 20 20 DB 0D 1C 20 20 |..).. ... |
00000160: 20 20 20 20 20 20 4D 45 4D 4F 52 59 41 44 44 52 | MEMORYADDR|
00000170: 20 3D 20 4D 45 4D 4F 52 59 50 54 52 3B 0D 1C 20 | = MEMORYPTR;.. |
00000180: 20 20 20 20 20 20 20 4D 45 4D 4F 52 59 50 54 52 | MEMORYPTR|
00000190: 20 2B 3D 20 53 45 49 5A 45 3B 0D 1C 20 20 20 20 | += SEIZE;.. |
000001A0: 20 20 DD 0D 1C 0D 1C 20 20 20 20 20 52 45 54 55 | ..... RETU|
000001B0: 52 4E 20 28 4D 45 4D 4F 52 59 41 44 44 52 29 3B |RN (MEMORYADDR);|
000001C0: 0D 1C 0D 1C DD 0D 1C 0D 1C 0D 1C 49 4E 54 20 4D |...........INT M|
000001D0: 46 52 45 45 28 53 45 49 5A 45 29 0D 1C 0D 1C 55 |FREE(SEIZE)....U|
000001E0: 4E 53 49 47 4E 45 44 20 49 4E 54 20 53 45 49 5A |NSIGNED INT SEIZ|
000001F0: 45 3B 0D 1C 0D 1C DB 0D 1C 0D 1C 20 20 20 20 49 |E;......... I|
00000200: 46 20 28 4D 45 4D 4F 52 59 50 54 52 2D 53 45 49 |F (MEMORYPTR-SEI|
00000210: 5A 45 20 3E 20 CC CF D7 CC C9 CD C9 D4 2D 31 29 |ZE > ........-1)|
00000220: 0D 1C 20 20 20 20 20 20 20 4D 45 4D 4F 52 59 50 |.. MEMORYP|
00000230: 54 52 20 2D 3D 20 53 45 49 5A 45 3B 0D 1C 0D 1C |TR -= SEIZE;....|
00000240: 2F 2A 20 52 45 54 55 52 4E 20 4E 55 4D 42 45 52 |/* RETURN NUMBER|
00000250: 20 4F 46 20 42 59 54 45 53 20 52 45 4D 41 4E 49 | OF BYTES REMANI|
00000260: 4E 47 20 49 4E 20 41 4C 4C 4F 43 41 54 49 4F 4E |NG IN ALLOCATION|
00000270: 20 41 52 45 41 20 2A 2F 0D 1C 0D 1C 20 20 20 20 | AREA */.... |
00000280: 52 45 54 55 52 4E 20 28 C8 C9 C7 C8 CC C9 CD C9 |RETURN (........|
00000290: D4 2D 4D 45 4D 4F 52 59 50 54 52 2B 31 29 3B 0D |.-MEMORYPTR+1);.|
000002A0: 1C 0D 1C DD 0D 1C 0D 00 |........ |
.../* ROUTINS FOR STORAGE ALLOCATION */.
.....#DEFINE LOWLIMIT 0XC001 /* LOW
LIMIT FOR MEMORY ALLOCATION */..#DEFINE
HIGHLIMIT 0XD000 /* UPPER ....
*/......STATIC UNSIGNED
INT MEMORYPTR = LOWLIMIT;......CHAR *MA
LLOC(SEIZE)....INT SEIZE;.........CHAR *
MEMORYADDR = 0;...... IF (MEMORYPTR+
SEIZE <= HIGHLIMIT).. ... ME
MORYADDR = MEMORYPTR;.. MEMORYPTR
+= SEIZE;.. ..... RETURN (MEMO
RYADDR);...........INT MFREE(SEIZE)....U
NSIGNED INT SEIZE;......... IF (MEMOR
YPTR-SEIZE > LOWLIMIT-1).. MEMORYP
TR -= SEIZE;..../* RETURN NUMBER OF BYTE
S REMANING IN ALLOCATION AREA */....
RETURN (HIGHLIMIT-MEMORYPTR+1);.........
×
C64 Image
> CLICK IMAGE PREVIEW FOR FULL MODAL