From 2788d81f7c35d7bc78640c5a8ddde0276360cd7f Mon Sep 17 00:00:00 2001 From: kieron Date: Fri, 19 May 2017 23:49:33 +0000 Subject: [PATCH] Kek git-svn-id: https://spexeah.com:8443/svn/Asuro@126 6dbc8c32-bb84-406f-8558-d1cf31a0ab0c --- Asuro.iso | Bin 5087232 -> 5087232 bytes lib/libpconsole.a | Bin 64564 -> 64564 bytes lib/libpmultiboot.a | Bin 27222 -> 27222 bytes lib/libpsystem.a | Bin 129474 -> 129474 bytes src/lmemorymanager.pas | 105 +++++++++++++++++++++++++++++++++++++++++ 5 files changed, 105 insertions(+) create mode 100644 src/lmemorymanager.pas diff --git a/Asuro.iso b/Asuro.iso index 87a71e022d05f7a3f79cf2d0f9e8a672e6cb4ead..f2ef77d489453504bf727b891dbf27ebd835cb3d 100644 GIT binary patch delta 9095 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 delta 9099 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 Z`n~~e&-jM0z3&^u_Q@cJX8t_Q1OR!-=V1T< delta 694 zcmdn;gL%sj<_Yr5hQ`JlmE<`<^kf5m@y*d3KbWB$vCZ!mY-XA)&(8-E*lfVh$O4v` zU?;xWTR05DF<36XdAIm9m>%)X+0xsNYp%-GxXc7~O<08uXMHH^-Up zhL{6#kg-)1*g=~o*vYbk-MhgRV&G(u6X$y_0_y~GqJ8H& zrfiDjgm@36A}1I8Ejb5~ z0R=X11sg&}x8@&0k86V%LVe`p;5Pc z3MA?tOm}A7%s=fMBRF6lOc#V$1Tukp_6KB5TbL%FSilR89f&Ch!LpkTmd|J09Jurj z!~}!o)d;5^UF8RN>g4w!-jf}AST@(J-w*XBFz`b+ODTYjY|snYeC%>3!uHJTMlx{A Z`n~~e&-jM0z3&^u_Q@cJX8t_Q1OQw9=8*sZ diff --git a/lib/libpmultiboot.a b/lib/libpmultiboot.a index 0053aa03b0bf6185a137b656fe9278ddb8ed5692..b2038ee8893a3bf5c6aad18f06f54512c98561df 100644 GIT binary patch delta 484 zcmcb1h4I=I#tHJwM&?Evl>}Kq^yCZTVw-(f|1!fldP3WoCQI`0Kn27%+w=TlLY3td zg2{?)))P96D$8%Km#?p2Xkuwy|11?kU3fq18*}5Z9bv4kCD$9Xb{3`py$Ll-_#a@ z=@8q@qVLWE_gJ-=6yxT4lShn5B7b0>5#Kz~k_(}6i_KyfM|^X)vlQdxdK1CP3z&E& zzjj}{Ip0-~kc$5%L2UCG&(jFb2H)?9@H`L|ijdKZYe#U-B_f6N Sxx^hzd=@A+ZZ1fF#smPI=#>5d delta 484 zcmcb1h4I=I#tHJwhQ`Jll>}Kq^yCZTVw-(f|1!fldP3WoCQI`0Kn27%+w=TlLY3td zg2{?)))P96D$8%Km#?p2Xkuwy|11?kU3fq18*}5Z9bv4kCD$9Xb{3`py$Ll-_#a@ z=@8q@qVLWE_gJ-=6yxT4lShn5B7b0>5#Kz~k_(}6i_KyfM|^X)vlQdxdK1CP3z&E& zzjj}{Ip0-~kc$5%L2UCG&(jFb2H)?9@H`L|ijdKZYe#U-B_f6N Sxx^hzd=@A+ZZ1fF#smN^{*;OU diff --git a/lib/libpsystem.a b/lib/libpsystem.a index fc7c73a544a4a1e8d4d27c7a0555391e04960b6f..34685d66f99b2b8c9023586c947cfad52c44f2af 100644 GIT binary patch delta 2508 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 lO8{{T@vVq^dS diff --git a/src/lmemorymanager.pas b/src/lmemorymanager.pas new file mode 100644 index 00000000..6ddec1ed --- /dev/null +++ b/src/lmemorymanager.pas @@ -0,0 +1,105 @@ +unit lmemorymanager; + +interface + +uses + util, + vmemorymanager, + console; + +type + TBlock_Entry = packed record + Present : Boolean; + Length : uint8; + end; + +const + ALLOC_SPACE = 8; //64-Bit Allocations + MAX_ENTRIES = 0x60000; + +var + Memory_Start : uint32; + Memory_Manager : packed array[1..MAX_ENTRIES] of TBlock_Entry; + +procedure init; + +implementation + +procedure init; +var + i : uint32; + +begin + console.writestringln('VMM: INIT BEGIN.'); + For i:=0 to MAX_ENTRIES-1 do begin + Memory_Manager[i].Present:= False; + end; + Memory_Start:= uint32(@util.endptr); + console.writestringln('VMM: INIT END.'); +end; + +function kalloc(size : uint32) : void; +var + blocks : uint32; + rem : uint32; + i,j : uint32; + miss : boolean; + +begin + blocks:= size div ALLOC_SPACE; + rem:= size - (blocks * ALLOC_SPACE); + if rem > 0 then blocks:= blocks + 1; + kalloc:= nil; + for i:=0 to MAX_ENTRIES-1 do begin + miss:= false; + for j:=0 to blocks-1 do begin + if Memory_Manager[i+j].Present then begin + miss:= true; + break; + end; + end; + if not miss then begin + kalloc:= void(Memory_Start+(i * ALLOC_SPACE)); + for j:=0 to blocks-1 do begin + Memory_Manager[i+j].Present:= true; + Memory_Manager[i+j].Length:= 0; + if j = 0 then Memory_Manager[i+j].Length:= blocks; + end; + console.writestring('Allocated '); + console.writeint(blocks); + console.writestring(' Block(s). [Block: '); + console.writeint(i); + console.writestringln(']'); + break; + end; + end; +end; + +procedure kfree(area : void); +var + Block : uint32; + bLength : uint8; + i : uint32; + +begin + if uint32(area) < Memory_Start then begin + asm + INT 13 + end; + end; + Block:= (uint32(Area) - Memory_Start) div ALLOC_SPACE; + if Memory_Manager[Block].Present then begin + If Memory_Manager[Block].Length > 0 then begin + bLength:= Memory_Manager[Block].Length; + for i:=0 to bLength-1 do begin + Memory_Manager[Block+i].Present:= False; + end; + end else begin + asm + INT 13 + end; + end; + end; +end; + +end. \ No newline at end of file