From 1f2f7cf380dfdc4dc251ca3c5d293fb3096c4467 Mon Sep 17 00:00:00 2001
From: kieron <kieron@6dbc8c32-bb84-406f-8558-d1cf31a0ab0c>
Date: Fri, 19 May 2017 16:11:50 +0000
Subject: [PATCH] Paging stuff.

git-svn-id: https://spexeah.com:8443/svn/Asuro@114 6dbc8c32-bb84-406f-8558-d1cf31a0ab0c
---
 Asuro.iso             | Bin 5083136 -> 5083136 bytes
 bin/kernel.bin        | Bin 28900 -> 28900 bytes
 iso/boot/asuro.bin    | Bin 28900 -> 28900 bytes
 lib/console.ppu       | Bin 16074 -> 16074 bytes
 lib/idt.ppu           | Bin 2969 -> 2969 bytes
 lib/irq.ppu           | Bin 930 -> 930 bytes
 lib/isr0.ppu          | Bin 1981 -> 1981 bytes
 lib/isr1.ppu          | Bin 1981 -> 1981 bytes
 lib/isr10.ppu         | Bin 1994 -> 1994 bytes
 lib/isr11.ppu         | Bin 1994 -> 1994 bytes
 lib/isr12.ppu         | Bin 1994 -> 1994 bytes
 lib/isr13.ppu         | Bin 1994 -> 1994 bytes
 lib/isr14.ppu         | Bin 1994 -> 1994 bytes
 lib/isr15.ppu         | Bin 1994 -> 1994 bytes
 lib/isr16.ppu         | Bin 1994 -> 1994 bytes
 lib/isr17.ppu         | Bin 1994 -> 1994 bytes
 lib/isr18.ppu         | Bin 1994 -> 1994 bytes
 lib/isr2.ppu          | Bin 1981 -> 1981 bytes
 lib/isr3.ppu          | Bin 1981 -> 1981 bytes
 lib/isr32.ppu         | Bin 1972 -> 1972 bytes
 lib/isr33.ppu         | Bin 1983 -> 1983 bytes
 lib/isr4.ppu          | Bin 1981 -> 1981 bytes
 lib/isr40.ppu         | Bin 1972 -> 1972 bytes
 lib/isr5.ppu          | Bin 1981 -> 1981 bytes
 lib/isr6.ppu          | Bin 1981 -> 1981 bytes
 lib/isr7.ppu          | Bin 1981 -> 1981 bytes
 lib/isr8.ppu          | Bin 1981 -> 1981 bytes
 lib/isr9.ppu          | Bin 1981 -> 1981 bytes
 lib/kernel.ppu        | Bin 2143 -> 2147 bytes
 lib/keyboard.ppu      | Bin 2966 -> 2966 bytes
 lib/libpconsole.a     | Bin 64564 -> 64564 bytes
 lib/libpmultiboot.a   | Bin 27222 -> 27222 bytes
 lib/libpsystem.a      | Bin 127680 -> 127680 bytes
 lib/memorymanager.ppu | Bin 2320 -> 2307 bytes
 lib/paging.ppu        | Bin 2681 -> 2695 bytes
 lib/util.ppu          | Bin 6674 -> 6368 bytes
 src/kernel.pas        |   9 +++++++++
 src/paging.pas        |  28 ++++++++++++++++++++--------
 src/util.pas          |   5 +++--
 39 files changed, 32 insertions(+), 10 deletions(-)

diff --git a/Asuro.iso b/Asuro.iso
index ab7811918b13a571a52a4a9093bad6334b983d9c..147bd4556f5fc8002eaab9eb0ba9631333c55203 100644
GIT binary patch
delta 10781
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

delta 10798
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

diff --git a/bin/kernel.bin b/bin/kernel.bin
index 9fd93488b986cd9163c2697e3f1052f4ece6cc16..b73562910de480001552bf0c1b2bbadcc9720828 100755
GIT binary patch
delta 1034
zcmX}rYe*DP6bJBo*T-%uI;*p9cipu$k*roTNm_h`SeS;8CSlMD`G5p7%Sc1ZO3KU+
zN2s8vFwqZT;y`RdwjTtGKGc^Yv4@tzR0ax`QQ~&aU25U}_uTuNGc$LFnV;kHb9~e+
z@%vzrGQ*c$j6p$`6&fTHuZDAytkGKGy41mI!K6>)UZp@kz<E6^#Csy^^o*&6U`t5h
zx1b<F=EYE%Fv9mhgzV84ONhx1@XBu94nA4dq#B`B?j<%L#}V7XYY=QeHYlxz{hU97
zDPu+SQWRtU0~u04t%Ow5Sw0MdCQsy040fG|8B+>>2iz?4ZZMj!5t<RBLueLg5oi%;
zLB#V>r$wMupjDt1aYG2L0&N0q0&R%85ZVML3QQE3h^P%=qCmSqyFfc)WC-m79ReK!
z9f%PjbO=lmnA96R9ftdMm*c))!bp<2;}TuHJRBEy(&7+RN2t1um3lfJ;{-jFGTMBa
z1w*Et#w`bf>iExK(9iI9xk#O2xXjdId}aPuVc7qjGuB%)JC1)$Wk$yCt(8cDu36p^
z<8Pn~c<}<?s-pajH1W`6{c7oAPtju6FWpJ!IGxw8q2_sd1`p}Jo9NI8I@A$zESWk<
z-ba3ce1WQdXmr}^ZqWRRm{X--73#wdrnXRD9_c7)1y(&px}N-S^$;xvXt9&3Nvg8{
zu}<CfpM6xlg=MFms}SdU%$t<wF3x$U@*;Uc$Db-!HZO7RfwnC{%B>=|VJdB&-J00F
z6L=piXSrEl)_aP<vrIQEWuDPEH!8=r$8wF+4eeR$)VO0N^6n<Q3B6LCeMeL4n!%^P
z?>EN56^yaZ7^OcjhCgBq%wgo>yHRg`!suVX=$ps*N^OI*b>}Kpwl$2}FBr#XF&<1~
z)P2AxR59Ma0bkBdKC1l5c^xs9U+>a#{C0UBgF4?uSn;JpdW|_{)gT45Mk!#z;l`1H
UBNs;rjw&2SaWpH3Yr13q0(-fJT>t<8

delta 979
zcmX|;T}TvB6vyvf-E~u2N1b(N_RC#UGwfsYD>cb4gdVgqQXvRhAJm}0!q^@vjUpe^
zEY5=jg+vI2V$r;8OW6iOL@z>wg<@(eOyq-xWgn8AbBB63zx~hs-7|B~-Pi(;E%3*R
z#JfP13gTb-8H2M$PB<kw_)fSY$);%)hNNy@0*=%jJXxzwz0Y|mETsi3`%)Rx)4-LU
z!%stXy38HWoIcJKFw21ihlKL02P))jUJpT8Hm%zsBoC0bqfR01h6=mTcGR*KvLELB
zI=sqgN{S{j7CyFDit4$r-EoOufDuQ)5=zFdqcG#h;bXuRnYTcOa)YFTGRcsNkgAZX
zkSa=iA9boiI)!u!=|s83kWL|8Lb`->p|l#(C8S$Ow~%g>35IkF=@HT+qz9$NkRBnu
zLVAVtqBI-QD`cjSnFC1=<8bcmMx1*X#xs@fX8O869v4e#F+}Mkr8AiHgK3Cbx)d)B
z|5HK4Xqc4M%}qV>9g%~7Qg|v3JKk`{2I}S`_`~!$J7fI~%YAjrSAST~`y#l;!X`2?
z8tD-oqoYyEi|S_l&=;?<0VC5VX~Q6GxJU<CqSOy}eV+E4^!!{rQ_?UQeb~YDF6yf!
z`+#f{roK9BUsb$*oEF2h*hA?VrILTzs_*}=gOsMg@AvR|sPsSORoYKK=lqEFJ8Qzq
z2enB43g-+)cWn}P3+_Q`qk&pe;shRpm93t$9fFO5Y;YG|Hmzi7cM5IXw6YDxivCbj
z@r<Q27Y|Ua^_L8r+8Sr@66=2<TGkMYpAZe-5br-C-Yy^x&^^CiL`*IrUc?a2S;Pp9
z?OVs>+Ca2@M%<f6%zi)&%^_-Z#MWuJRd$>AX!+&u%n&UPJgMsNLuc?BEC-8{+wD>`
fgw=}$zE(wD!@x77s13`7m4{V~Rim9~?X~>{=AUkp

diff --git a/iso/boot/asuro.bin b/iso/boot/asuro.bin
index 9fd93488b986cd9163c2697e3f1052f4ece6cc16..b73562910de480001552bf0c1b2bbadcc9720828 100755
GIT binary patch
delta 1034
zcmX}rYe*DP6bJBo*T-%uI;*p9cipu$k*roTNm_h`SeS;8CSlMD`G5p7%Sc1ZO3KU+
zN2s8vFwqZT;y`RdwjTtGKGc^Yv4@tzR0ax`QQ~&aU25U}_uTuNGc$LFnV;kHb9~e+
z@%vzrGQ*c$j6p$`6&fTHuZDAytkGKGy41mI!K6>)UZp@kz<E6^#Csy^^o*&6U`t5h
zx1b<F=EYE%Fv9mhgzV84ONhx1@XBu94nA4dq#B`B?j<%L#}V7XYY=QeHYlxz{hU97
zDPu+SQWRtU0~u04t%Ow5Sw0MdCQsy040fG|8B+>>2iz?4ZZMj!5t<RBLueLg5oi%;
zLB#V>r$wMupjDt1aYG2L0&N0q0&R%85ZVML3QQE3h^P%=qCmSqyFfc)WC-m79ReK!
z9f%PjbO=lmnA96R9ftdMm*c))!bp<2;}TuHJRBEy(&7+RN2t1um3lfJ;{-jFGTMBa
z1w*Et#w`bf>iExK(9iI9xk#O2xXjdId}aPuVc7qjGuB%)JC1)$Wk$yCt(8cDu36p^
z<8Pn~c<}<?s-pajH1W`6{c7oAPtju6FWpJ!IGxw8q2_sd1`p}Jo9NI8I@A$zESWk<
z-ba3ce1WQdXmr}^ZqWRRm{X--73#wdrnXRD9_c7)1y(&px}N-S^$;xvXt9&3Nvg8{
zu}<CfpM6xlg=MFms}SdU%$t<wF3x$U@*;Uc$Db-!HZO7RfwnC{%B>=|VJdB&-J00F
z6L=piXSrEl)_aP<vrIQEWuDPEH!8=r$8wF+4eeR$)VO0N^6n<Q3B6LCeMeL4n!%^P
z?>EN56^yaZ7^OcjhCgBq%wgo>yHRg`!suVX=$ps*N^OI*b>}Kpwl$2}FBr#XF&<1~
z)P2AxR59Ma0bkBdKC1l5c^xs9U+>a#{C0UBgF4?uSn;JpdW|_{)gT45Mk!#z;l`1H
UBNs;rjw&2SaWpH3Yr13q0(-fJT>t<8

delta 979
zcmX|;T}TvB6vyvf-E~u2N1b(N_RC#UGwfsYD>cb4gdVgqQXvRhAJm}0!q^@vjUpe^
zEY5=jg+vI2V$r;8OW6iOL@z>wg<@(eOyq-xWgn8AbBB63zx~hs-7|B~-Pi(;E%3*R
z#JfP13gTb-8H2M$PB<kw_)fSY$);%)hNNy@0*=%jJXxzwz0Y|mETsi3`%)Rx)4-LU
z!%stXy38HWoIcJKFw21ihlKL02P))jUJpT8Hm%zsBoC0bqfR01h6=mTcGR*KvLELB
zI=sqgN{S{j7CyFDit4$r-EoOufDuQ)5=zFdqcG#h;bXuRnYTcOa)YFTGRcsNkgAZX
zkSa=iA9boiI)!u!=|s83kWL|8Lb`->p|l#(C8S$Ow~%g>35IkF=@HT+qz9$NkRBnu
zLVAVtqBI-QD`cjSnFC1=<8bcmMx1*X#xs@fX8O869v4e#F+}Mkr8AiHgK3Cbx)d)B
z|5HK4Xqc4M%}qV>9g%~7Qg|v3JKk`{2I}S`_`~!$J7fI~%YAjrSAST~`y#l;!X`2?
z8tD-oqoYyEi|S_l&=;?<0VC5VX~Q6GxJU<CqSOy}eV+E4^!!{rQ_?UQeb~YDF6yf!
z`+#f{roK9BUsb$*oEF2h*hA?VrILTzs_*}=gOsMg@AvR|sPsSORoYKK=lqEFJ8Qzq
z2enB43g-+)cWn}P3+_Q`qk&pe;shRpm93t$9fFO5Y;YG|Hmzi7cM5IXw6YDxivCbj
z@r<Q27Y|Ua^_L8r+8Sr@66=2<TGkMYpAZe-5br-C-Yy^x&^^CiL`*IrUc?a2S;Pp9
z?OVs>+Ca2@M%<f6%zi)&%^_-Z#MWuJRd$>AX!+&u%n&UPJgMsNLuc?BEC-8{+wD>`
fgw=}$zE(wD!@x77s13`7m4{V~Rim9~?X~>{=AUkp

diff --git a/lib/console.ppu b/lib/console.ppu
index 74363deab1a857cbeb78a4975fd4e229bbe4f0af..2a8f1bc1753c692e4b927a249868b4453949cf5d 100644
GIT binary patch
delta 19
acmX?Ad#ZLq35Tp(XXi@;{o0K+es%y{0|<@)

delta 19
acmX?Ad#ZLq35WVJr(|)tq%|9B{OkZ%jtB_=

diff --git a/lib/idt.ppu b/lib/idt.ppu
index d6fe95035c4476d46634c7002bb2c06b9e98e4b1..07ad4788297961da57acbf9d06ce7160e15e0cc0 100644
GIT binary patch
delta 19
bcmbO!K2v-`4#(E_yDz;o(68NCqRI^bS#Aih

delta 19
bcmbO!K2v-`4#&N(tfk^|NozKisB!}UOiBkz

diff --git a/lib/irq.ppu b/lib/irq.ppu
index c6cca14dc8366bea1302c9dc051860f9f19dbff4..fca17a82b0265fd4626c76b04724539e25b4e59d 100644
GIT binary patch
delta 19
bcmZ3)zKDH74#(E_yDz;o(68NCqQ?vXSeyu>

delta 19
bcmZ3)zKDH74#&N(tfk^|NozKi=rIETOLzx8

diff --git a/lib/isr0.ppu b/lib/isr0.ppu
index e89e9ad6c87efb7e26d75e8489e3ff81e24bcb7a..2dde928f9fcfd32f0b4b91f52ba8e7a505f05037 100644
GIT binary patch
delta 19
bcmdnXzn6bP9>>=AyDz;o(68NC=FScPUC;>%

delta 19
bcmdnXzn6bP9>=|}tfk^|NozKixw8WRP^<@}

diff --git a/lib/isr1.ppu b/lib/isr1.ppu
index a23058fd3106462eded02c4c6083e3f10e8bce97..732df46c3e8a42ceb67617bee50b189bd6e15fd4 100644
GIT binary patch
delta 19
bcmdnXzn6bP9>>=AyDz;o(68NC=FScPUC;>%

delta 19
bcmdnXzn6bP9>=|}tfk^|NozKixw8WRP^<@}

diff --git a/lib/isr10.ppu b/lib/isr10.ppu
index 9b5a1b888c4cfab4289efdd8cd4a626b1e7ea61a..0d3982f5b0674f3867fa362081079a9fc477a966 100644
GIT binary patch
delta 19
bcmX@be~N!X0ms(&yDz;o(68NC5yTDvU)%{Z

delta 19
bcmX@be~N!X0mr?stfk^|NozJ%1hE4EQn&}r

diff --git a/lib/isr11.ppu b/lib/isr11.ppu
index ca654e91382f1f4a70cf07682798355a38ba2537..1282659b9f4caa12b45abbd9d39e3cd1ebdddba3 100644
GIT binary patch
delta 19
bcmX@be~N!X0ms(&yDz;o(68NC5yTDvU)%{Z

delta 19
bcmX@be~N!X0mr?stfk^|NozJ%1hE4EQn&}r

diff --git a/lib/isr12.ppu b/lib/isr12.ppu
index ee81d54cef3d32cce7a586b9a174715bed1527f0..b6e34812d8c5f029a407c14ebf71b69db50a9c0c 100644
GIT binary patch
delta 19
bcmX@be~N!X0ms(&yDz;o(68NC5yTDvU)%{Z

delta 19
bcmX@be~N!X0mr?stfk^|NozJ%1hE4EQn&}r

diff --git a/lib/isr13.ppu b/lib/isr13.ppu
index b436974935a5ee42862f1edd65f33812e446f5ac..04c91d0577f58bb541a31679992375313a70bdd8 100644
GIT binary patch
delta 19
bcmX@be~N!X0ms(&yDz;o(68NC5yTDvU)%{Z

delta 19
bcmX@be~N!X0mr?stfk^|NozJ%1hE4EQn&}r

diff --git a/lib/isr14.ppu b/lib/isr14.ppu
index d7947cb4db4c264588eb9b0f269e3e6c8a1a402f..bdd9cd39ccbf77fa6c9ec0424b757e3e5f5f1937 100644
GIT binary patch
delta 19
bcmX@be~N!X0ms(&yDz;o(68NC5yTDvU)%{Z

delta 19
bcmX@be~N!X0mr?stfk^|NozJ%1hE4EQn&}r

diff --git a/lib/isr15.ppu b/lib/isr15.ppu
index ed43f454fd7dbf5be834c3390c1a1a0e13109e1b..03f68c7a461fa7aa74110b99724103fad1a07c35 100644
GIT binary patch
delta 19
bcmX@be~N!X0ms(&yDz;o(68NC5yTDvU)%{Z

delta 19
bcmX@be~N!X0mr?stfk^|NozJ%1hE4EQn&}r

diff --git a/lib/isr16.ppu b/lib/isr16.ppu
index 8e39a322fd04ea81e29ea45709f4ce725733a8e8..65e81bf7b962805cde9a8cf8328f0f549de51466 100644
GIT binary patch
delta 19
bcmX@be~N!X0ms(&yDz;o(68NC5yTDvU)%{Z

delta 19
bcmX@be~N!X0mr?stfk^|NozJ%1hE4EQn&}r

diff --git a/lib/isr17.ppu b/lib/isr17.ppu
index 36e621c582d89d8c4cce8ab05ea14f970097603d..f1d1a9b0ee3b1bc0e319afea9bd076f96949ced2 100644
GIT binary patch
delta 19
bcmX@be~N!X0ms(&yDz;o(68NC5yTDvU)%{Z

delta 19
bcmX@be~N!X0mr?stfk^|NozJ%1hE4EQn&}r

diff --git a/lib/isr18.ppu b/lib/isr18.ppu
index 4439aa499807167362515f72cf78b3a9856f50bc..720459cfac2b6b99d285767c63a7c42fe1d34275 100644
GIT binary patch
delta 19
bcmX@be~N!X0ms(&yDz;o(68NC5yTDvU)%{Z

delta 19
bcmX@be~N!X0mr?stfk^|NozJ%1hE4EQn&}r

diff --git a/lib/isr2.ppu b/lib/isr2.ppu
index 3f3b5ac81bb99e23e9916f1ef2cc5d68579a3ff9..3e5e13ea6a30d7a4fea5b9b86f09d2e6c2e1fac4 100644
GIT binary patch
delta 19
bcmdnXzn6bP9>>=AyDz;o(68NC=FScPUC;>%

delta 19
bcmdnXzn6bP9>=|}tfk^|NozKixw8WRP^<@}

diff --git a/lib/isr3.ppu b/lib/isr3.ppu
index a244486de5978c8059e59dd1672b01c4345c88eb..725c037873ef62256e8faf80c1fbe194a857c5d6 100644
GIT binary patch
delta 19
bcmdnXzn6bP9>>=AyDz;o(68NC=FScPUC;>%

delta 19
bcmdnXzn6bP9>=|}tfk^|NozKixw8WRP^<@}

diff --git a/lib/isr32.ppu b/lib/isr32.ppu
index 42ea1f018ff89d2b18cc6e6ef221a4055a8fd6c4..f0aba13914f7d2df3e0c9227c570e32bd84e2064 100644
GIT binary patch
delta 19
bcmdnOzlDE70ms(&yDz;o(68NCVZ#mpT$l*)

delta 19
bcmdnOzlDE70mr?stfk^|NozJ%*suctPjm;1

diff --git a/lib/isr33.ppu b/lib/isr33.ppu
index 71d3b4d93d8d240b6730b613673bb1ea437ead67..b4a524fa846ec499b5fa1eb197f6f3e78738b5cb 100644
GIT binary patch
delta 19
bcmdnbzn_0X0ms(&yDz;o(68NC;m!^KUOEX9

delta 19
bcmdnbzn_0X0mr?stfk^|NozJ%xU&NQQ5FZR

diff --git a/lib/isr4.ppu b/lib/isr4.ppu
index 07921b8b2047e16690032bc343a4f764bdc450e9..0a5d950f185e089ae78c074c10ecba087e1ca445 100644
GIT binary patch
delta 19
bcmdnXzn6bP9>>=AyDz;o(68NC=FScPUC;>%

delta 19
bcmdnXzn6bP9>=|}tfk^|NozKixw8WRP^<@}

diff --git a/lib/isr40.ppu b/lib/isr40.ppu
index c82b5acb21202a4cce96c8e51c9c93bf844ccb0e..9537f1eb4aa4cce8490b3e76b974378de46ee6a0 100644
GIT binary patch
delta 19
bcmdnOzlDE70ms(&yDz;o(68NCVZ#mpT$l*)

delta 19
bcmdnOzlDE70mr?stfk^|NozJ%*suctPjm;1

diff --git a/lib/isr5.ppu b/lib/isr5.ppu
index 3e0386cbce0c9ee699a97b668f368b59e0e7eb35..6b1fa54155cd39d1be4ab1ebebf49779458963c6 100644
GIT binary patch
delta 19
bcmdnXzn6bP9>>=AyDz;o(68NC=FScPUC;>%

delta 19
bcmdnXzn6bP9>=|}tfk^|NozKixw8WRP^<@}

diff --git a/lib/isr6.ppu b/lib/isr6.ppu
index a75d23f027abd0dc4994e956529b7f0871ba54f8..72663fb6a6293529f77664bd64a972aed727974a 100644
GIT binary patch
delta 19
bcmdnXzn6bP9>>=AyDz;o(68NC=FScPUC;>%

delta 19
bcmdnXzn6bP9>=|}tfk^|NozKixw8WRP^<@}

diff --git a/lib/isr7.ppu b/lib/isr7.ppu
index 083e423fad32500aaecdc3160993b4c5dc6a97ad..7a99a3375664af20d9e6a156541575ad02457dfd 100644
GIT binary patch
delta 19
bcmdnXzn6bP9>>=AyDz;o(68NC=FScPUC;>%

delta 19
bcmdnXzn6bP9>=|}tfk^|NozKixw8WRP^<@}

diff --git a/lib/isr8.ppu b/lib/isr8.ppu
index 2d948be8c4efec567568ac2cca3a7dd0964a3783..05899f7d9cdb4397df717bd12ccbdca3c3c7cd19 100644
GIT binary patch
delta 19
bcmdnXzn6bP9>>=AyDz;o(68NC=FScPUC;>%

delta 19
bcmdnXzn6bP9>=|}tfk^|NozKixw8WRP^<@}

diff --git a/lib/isr9.ppu b/lib/isr9.ppu
index 5978b17894b25d0ab6fdd1f2162f1d78add25206..1e6811ac817eb3479b12ca36643a30c2cc9b745d 100644
GIT binary patch
delta 19
bcmdnXzn6bP9>>=AyDz;o(68NC=FScPUC;>%

delta 19
bcmdnXzn6bP9>=|}tfk^|NozKixw8WRP^<@}

diff --git a/lib/kernel.ppu b/lib/kernel.ppu
index c14d3a6db961153223a6f5a49e3981572fed0e11..7638a71e86b64fa4160a772e28933db8afeb338e 100644
GIT binary patch
delta 148
zcmcaF@K``LARyGx*p#K2k%5`vK!6g1H3tJj+KrX}17(9|icXX@X6}}dpBQY)vGx7#
zOD_%dYbQ>)$kEgl%s)k*@7&}}#u`T1$<G*9O%`CzgJQAGb<A^^dEYQHz`=*f>g=Yh
hKY=2@CnvJU2r@Fkr5IR&Y`)3o*s~eMCtGo-0sv4xC`SMQ

delta 136
zcmaDXa9=<+ARyGx*p#K2k%5`vK!6g1IR^tn+KrX}17(9|icFL>X5Ps!H!;|h<K9=+
zQgOMYH4`UX<Y0=FpC$a@M&#s7#u`S+$<G*9ZJxr^#lri7kpT|gOx9*MW&H{i`93+7
ZJx1^^k{lxw0|VFOOYGT<!jtVdQ~?D&B}M=M

diff --git a/lib/keyboard.ppu b/lib/keyboard.ppu
index 5eaacf0e6b5c7a4b6e06eb639b640251cbc6cf7e..100b457e8f4fa9a3a2e8c64ea51aaf19b39db082 100644
GIT binary patch
delta 19
bcmbOxK23Z=7suB3yDz;o(68M%iG>>gTD}Oy

delta 19
bcmbOxK23Z=7stJ?tfk^|NozJvV&Mh=O_~Q^

diff --git a/lib/libpconsole.a b/lib/libpconsole.a
index e5ef38d8d7550c27419b259fff10ab1e915d30ab..c4235bcc72037ad3689e8e5126f763c4c0ac895f 100644
GIT binary patch
delta 787
zcmdn;gL%sj<_WSahQ{Vb8x`d^z>LX-mnAkwb9`e4^EQ8+c$#Ul0zWrG&Yk}SL~ioK
zKJm?7!l5h>xs8h@Ht!an0+j=qk}bUjiML;in{l(7!bT>9QNqeQ&=q`AM^><3YY$vO
z=;Q$9bDJ0G??f`7+~@#8e)9ygb|??zG9#-<sLMdSWp=FW2#Y~(ne3(@u=$bOLa1>d
z=g;?C05t%_i}sxZH(X+JxsmtgxWG~*3*LqBLM;G!Ry^_pn(Dk*nCimIlA98bqe<(f
zB1vyPkO7l_*e9`hagH96MQ`$Dkt|XzIfF21Gj9b8lALbMA0&M)4WdXPP|^|$<po}s
z-2ATNHPquE-nZ`O5Z>m8eLN5ofH8j!s^Vdv<mMmKwHY__Pdmd12}Fp{ceoK!n|Wuy
zfg15~;wdHp6GOdxeFX(W6H8MgQ2GKI2NE?x6WzGD3ToZP#S0iWpI>ncZh`pbBddH7
z?w|ZF#AmWY56kA7^?RXy1VvKlW(ftblQtJ#z5_KX@VbW#L=0@HsR5d$5K(jo2L61^
F1OO7K5pMth

delta 787
zcmdn;gL%sj<_WSa2Idy#8x`d^z>LX-mnAkwb9`e4^EQ8+c$#Ul0zWrG&Yk}SL~ioK
zKJm?7!l5h>xs8h@Ht!an0+j=qk}bUjiML;in{l(7!bT>9QNqeQ&=q`AM^><3YY$vO
z=;Q$9bDJ0G??f`7+~@#8e)9ygb|??zG9#-<sLMdSWp=FW2#Y~(ne3(@u=$bOLa1>d
z=g;?C05t%_i}sxZH(X+JxsmtgxWG~*3*LqBLM;G!Ry^_pn(Dk*nCimIlA98bqe<(f
zB1vyPkO7l_*e9`hagH96MQ`$Dkt|XzIfF21Gj9b8lALbMA0&M)4WdXPP|^|$<po}s
z-2ATNHPquE-nZ`O5Z>m8eLN5ofH8j!s^Vdv<mMmKwHY__Pdmd12}Fp{ceoK!n|Wuy
zfg15~;wdHp6GOdxeFX(W6H8MgQ2GKI2NE?x6WzGD3ToZP#S0iWpI>ncZh`pbBddH7
z?w|ZF#AmWY56kA7^?RXy1VvKlW(ftblQtJ#z5_KX@VbW#L=0@HsR5d$5K(jo2L61^
F1OVw)6GH$1

diff --git a/lib/libpmultiboot.a b/lib/libpmultiboot.a
index b0894276bea954290c3f4b22579c95baf8e4e43a..ffbf49cf08e204ccc80c8985f089d2c32f0ed356 100644
GIT binary patch
delta 518
zcmcb1h4I=I#tE`4hQ{Vb8x;ju!HmfVwZ%94u>NL7@brYXGw~Vg<?AaLnpm0|fs_MP
zNo=;~`N4#y$`oCd_+~w!gXpTv(N#%omY3FIoLp}rFxi$_dh$O5&&~E)ER2&orK(^S
zfRxC<9VM|jTuuwl6W=^X@hF@pxw%eN5QV47IC;JS|K!_@LYq&h?PKHx`33Hk%?GtL
z;Ht$pv*^3BAndF*lVaRlZ}NZ<S?CwsKN6cKT5=$1-eR*5&Xd^O?JNcIli=h9Ogxic
zyRY4x?<&a1Yk+JyI2^m3{~?*U)QtyjhWO?)o+pub8+^a=z+57}`9M@KlAK;#D-!Qq
UB66soOWeW4Yk^^Ld-{1M03@TH4*&oF

delta 518
zcmcb1h4I=I#tE`42Idy#8x;ju!HmfVwZ%94u>NL7@brYXGw~Vg<?AaLnpm0|fs_MP
zNo=;~`N4#y$`oCd_+~w!gXpTv(N#%omY3FIoLp}rFxi$_dh$O5&&~E)ER2&orK(^S
zfRxC<9VM|jTuuwl6W=^X@hF@pxw%eN5QV47IC;JS|K!_@LYq&h?PKHx`33Hk%?GtL
z;Ht$pv*^3BAndF*lVaRlZ}NZ<S?CwsKN6cKT5=$1-eR*5&Xd^O?JNcIli=h9Ogxic
zyRY4x?<&a1Yk+JyI2^m3{~?*U)QtyjhWO?)o+pub8+^a=z+57}`9M@KlAK;#D-!Qq
UB66soOWeW4Yk^^Ld-{1M04Q;v6aWAK

diff --git a/lib/libpsystem.a b/lib/libpsystem.a
index b686df0735e38351e2faf3e8e0c2e5ed9423163e..629c1c928e70d0e072037f1e09042d220da2ded5 100644
GIT binary patch
delta 2698
zcmZuze@xX?6yGu20|p4o1*qiLwb7K49;AdebC3h^cNVjteC$D6Obq|gVkA(x*>v#i
zwp~g`pt-1&#B1F`QOr?^CO^_rhw*4i&QV~SBZp(1`@Q#k-{a|j_jB&K=bZaFpL4(8
zjvKCy8!lf`m^(cqt#!@|iS~jOS@EJa@y<g5<Vij{g{`%sZHp+fB189{N!EMzSx@q*
zDIsTvQ_TKgU$$8K#96bi(Arc&;P;B^w1Z|35vxu+&-`Uk>|~frY)o&1Soi!lQ!UGK
zKb^TCO%;v#5`|~+BfvUVM2YguUx5-U^Bt#*1Xh=`QnWAGKiR_Cmz+}xL_^j&=VXGY
z%ZUf}lrL5sTK3Z<^FR8ysL7k58Nk(ZU`M#Mx;w~qU_C}qCH=Q9IPk!FiqM-+5qk4Y
zghd4up(d|{`8-!u0Cs$8gs3WN12)qWrSFEj!sq$M+@vNiTkQ7!9zblj_nxYV7v@2@
z*jIcUVlzTm6HS{irz)?f^cP(<ni5P?n>KlcRZj5{F{`}azGL{7(+_9?R)9Gzv0<y6
zRE5PhZ0%>h>W4+nwi6JW9$JLEa+V=+T@|giyi2P+J80FqlUBXEXmz`m=(}BuSMgOx
zivo7RG(gdJq+ZjP;))QTevI@jt`DN`NIhLoQys=e8-BA1Iks<d6T-x3L#w%#yRt+?
z?x#yCH18mxB1=hZg~)9_V7!fm<u=<I7V{2~5^D0iqOgTdB4ULtn&9WZKJx&AZH-G?
z<8gfRMR1AQ@35<BA%yB#kR<xSKCd{@_JyfNq4Vv*sJ|l^4W9`{_kIjUQC);oB}3hM
z+W6c{5F;MHxC+>s?ux+J4Rw#{oMNyq$~5@)C0fCiN}8O0T7f^@*ubBvrz!Wk(Io?a
ziP%0wq#|P5hq`PvdTx<+-NWWV67FFWpkkEzsNNXgzh@mDvPI(^Lhj)b<{$5}JKubl
zPM}rz$IUy$-Bs|q7@7D?2e2U<nK;Wm)ez0!D1fy`mxlqL&7mwVBXrPIOJt7=G-J{~
z6@nfpwL#5tS0>8v7)Z9Kl9ffq@xQ0SVb-{&k=MsU86SuSBVXegp&4V?SNT>PP=gfQ
zIo*LqgR(vzh(TlGXtH%FD`tWbrn;L~9!i4G19$au#M<%wM*-D&-xXELpC5BlDtI~B
zfmFfGx%X9oCLOrzNvZ((vd2i?OTEt>P1^mBbjKZgD@PXqwG-jDnGQmxIC45q#y$%J
zru}q#Yn2H$f2k7;{MmA87IYd{xRS{IYhZ;eTL#k&+xTUa`*I;EjO4DX#b`t?o|1TK
zqd8#ULSQ}DqGZF1kYu8(HeSvLm*bZp$6tnO1MyXo*I$L8M~Wl7s$?&376AzrE9O}7
z967rfj6QK*w2h<foGns0Rt%?MTBiM61iqa3eU%GKA?S0<5uR5^V&tsNM2iwdseGv%
z8Uvyz<%m0#XPivg0;gb_e%zhl_90&NHgu}dl3ClRWE~AROf-qnablIzYwwVgGSVLg
zR>@m-V6&7<#d{EV7Q7PeG^90qpp<v-()rlo=y3VT2VlP4Ty09+q@0LN&XzhSCmKyo
z?SJ<p^0zTZ+{ur8h&R4g4_)R<qd1J&OI0BEUXIY_Fk1e#SJAHL#bHMF9-!nCO-^z&
z(uGN(E59_Cp3zLLaHa$I9KGpwTQdJ}P#LxaERHrkGK*Rr;+i&P%hdud866_z2<<-x
znSTs^fN2XtgrY?M%J;B*E{Q%~p8OMfgOvN#5SX_dON<xlZ!ylD9x6E6;ul81`CCko
JV<R}R{{zyRnTr4b

delta 2698
zcmZuze@xX?6yGt}Lk9@U1*qiLwb8^9AEbyjbCLtWADG1~DIa^%76Ze7v=|9gZZ;i0
zyKR?}5oj(dAn{ta@E7K&L=zz`br_GP<QxUIIdeGHx!-%w_dOo|cR%Nzd(OF^^EvnX
z?YQacxasmGhRsi3l-@S`g#>%S3avO%lW_Nu0P-XqnZ)v}DBB_mttp{<i<0!7eb$q7
zYEsDAp}A&%pf^)2d+My&S12!q5cs{KD)o@rL&U05&oh5%Bs&@A5}VT6A;vxL%@oVB
z+|OhzNL58+z69Y}@))p=+(=QD@hebbWxnf_5zqE!tr91e9vE+7CzhU52}J$!bI!?l
zu{SFY*nD4%XkPKtIP*XHxTwyVt{K49b6`ify{0?JwSPTEP$m7hE;w-idWz7KPZ4_Z
zO@zf8DMEEl5%YPjsQ~O)_+(L8*bZ!lCsN-HcZJXMjk!s6PNvx7{XKx#9`6HH5iiJr
z2vN8B7{sK9uqGNyFsCZ-V(~A!YBa^0rZ$#%g;hrJ5izT*&%R^C*3%DZ0ak!HEwN#n
z99M<KHf-x-zN$w>*7oBNlNMTpyJDsxaa|>?w!TZNeLHE@wu@FhyJ>Z&hUmLfgIDoY
zMTw2<f@y%F?{KZAZ?0>y`1E6>Z%J(seTQr5dYbAmHd6naO~}!@@l6O5BlT_OTJDM>
zG35YVQlaESgbFPsv0RbebkKMk3(Ib@H7t^wNeR_CUQy6WClRrNR!#8pU!Qph!M4Vw
zt?^jC<r26=&3D+<)DS}TEJzalK(ALEZ~wwnqtN*i!Kkkz7!92XMh|`rMv+~FR3(Gm
zdfND$%MdM|ytEqF+V1ke*bR2y(>cXJZ=`APoy)X>s}(dkeY669gt37?MNd=q4Wmm2
z{vxqskVr+ub_{meYV_PD?Yf7|gCyKTCP4WJ^-;YszJJd;JY<T7yM)|BMa)0iWp}>m
zKAk|T@Q<2zh`TG{bum2lnGRq>HavEgd#WIczp)YWj;ss=K8r(XY<lRRsg}r#F3^lg
ze>em^P-=sk<*rDO5z&xjPbDjz63hP%hZfebwt?5iKq>E!0wZ7JIaxEtu&?s1SfB<e
zxNDjNjRs|H91w%X#L;ByQkKsEBTRKSuWU|)&jWY$a>Uy4{l@{-IpK;b<<CzzDHXhu
z<Up$6)|?3yph*YrdYURgzU(oQ4^k$$qe;8}k><E#Z{^4WpmrksHp4;46h}^zWz4hC
zZ`x0{w^o~A^OiZmz@I6XEr(9y3Re@je=X$7(iJexu#I0vS(gooVI+55Ek+}H@sz|<
zo6G?N7XrI@JyO=c2#F@TYU7oBa5;YQa`a`WG7w)SdE-?GdZakQYfAR=Rw0m3v0{!D
z&z7?`gV86>i?(sJowG$M?`?+DFg3$|E&^Xp{JzSC#Srwl<p|HKBhhl^7NSLoqFBCE
z1`PpG6m!I#$}?8Z-3q5*s(##^;PxS2`8IT_(UQxzQ^`6SZkT8iqvOOXr`O&gCuO8R
z46Ks3?!;y(m-6=@@GN*G+G$9u_dzl5-mUYomZ%8%$p>J*-CS)-+@zd{P0rT6PEItM
zoZA2XN91o~j<}N_{t$0`y%xI6mqu|Iy`QQ;?!6qL&0&=MYrmph&x^y1>^Vru#~PjF
zXrv31LRWohE<L@8TH#Cw?m2qX?Y3loOHdiM1T2m=Ju-{i9O4>FGUXZpmyHe)a)kCD
zgUmk)Kfu%lAwp52f8~2vIfq0aCr|zfJweL-Y7op@jwQwk^|u)7P74(rZSf1k;QTGd
K%X`B(vHt`6N1lKH

diff --git a/lib/memorymanager.ppu b/lib/memorymanager.ppu
index f51fd2fb9b308541317d2d16c20b36711b4b9a06..8552070de86eba9eb70050b5d8d02b38017c44f9 100644
GIT binary patch
delta 151
zcmbOr)GQ<$5D;o;Y|7Hi$iU2SAV7)XHU|SkSmVm4@|$)RicFMsWM*cQpO`4mvGx7#
zOD_%dYbSPeGp?L0!gyr!Q^qV--V8<tILMhC!*0V`3KS`yJeNI7uog+K5y)<zEWuI4
dIAL-(hZ^TJsNDR?yErsB7eaZ<C%@)U1prstCENf2

delta 164
zcmZn`njj<_5D;o;Y|7Hi$iU2SAV7)X1qTB|SmVm4@|$)RicXYuWG*->J26q7<K9=+
zQgOMYH4{6!*|sq<Ffa;EZe$XftjoB1@<vAS&5sxpSb0l<;xJG-*`M8pwFxNFGI;`f
qmS7i>Tpy4<WimHM5#!v+bsTD(i=lFBCa>kt;9LjgZJB(JLlppFR4AeV

diff --git a/lib/paging.ppu b/lib/paging.ppu
index 97047017e5a5e51a29e9af7c244aa97f5f60b9f4..74f2d03da0422432ae913a3ee62f4fdcce88af04 100644
GIT binary patch
delta 350
zcmew<(k?0!5D;o;Y|7Hi$iU2SAV7&Bo{NE@sVkU&iag)Bi83Zk@0m6Roo8a=;+(9^
ztjWa9IoXd{mx+gSaxJqiBk$zZ%vwx*oRhCJt1<C&PW}(%32;u<X3^Fa<YZ-lfH)}4
z0i@M{m`R2gNOC%sC1&O%Cgr3uFbYksXAzas1k3RONglVN#N1TJl$4^>;$j9y;mNC6
zRx(OV4rSG1lH{D+$g0UC#W{Hmt1go?=j7Y0x{NZDIoY(BWH~3BvS~8OaZXMEQu3UW
zyV<mL72wXe4m2195YCVS@{paOIQc#s%o)-^Ii3)Z^We@<+RV+~&B!P=c{+y*qxj@K
i9IA|}lOF*|waFZuDvX+wbvc(a>Q27OSqdb*x%2>DenoQt

delta 368
zcmZn{{V5_75D;o;Y|7Hi$iU2SAV7&Bkc)wVDN=rx@PiwX6J<=8mNRY)I?u$!DKuG`
zS(AxVX0ji%E)%EP<XUE3My|=LnYEa>#3x^8R%7B)octfe)0nKyq8-Z3$;to$aZs8A
zNGky`lMFAAWOXb{%*<h6<bkV8hpOWQ(rRFJd_a=Zttc@!)iEWdh=GxJ@+Ov*j6#!R
zShbjhgeG^eYBCAQOy10@%Os>W`4Ouwqwr(_HZ3M$@yRx9noPoqlhZ+z_T))y+MyzF
zd#*$6LAXZ>C<1ejC|unGs5*puq=6!wA&E&jQ1^&!mSpc{WE7aZltYD4aPlb*RYu9l
dAAqFPWHC+^M%l^MoXZ&%CqL#a1(K0mdH{+FKPCVG

diff --git a/lib/util.ppu b/lib/util.ppu
index 4187a1c436435950c1fc09ea24eb476c72af358e..20e05682884983eabf9c7352c502b22e43ca3689 100644
GIT binary patch
delta 946
zcmYk4T}YEr7{|}Ecbm3N=iJ_X)aI6LnJ$>ah999L6ilc#FmJRF!a<8ohaY$mwu?xj
zi(o!=*~eWM6<t_Rh_MKvx{3;du7s{EOfMq55bS?mH+jzs|M&kszvnsUJ?A`2r`F?v
zbb2J-kucsQp@?$2S-kcN@oH=3%SL-_AzBK=6ssC6rSgpegDjd(XlgC(dCY@GL>(L_
z*K#}kBz|DD@L6S)-x`|OZmeB?udI=`LCfDos-Q9HHMi5ik4@((!GBDP)WdV;MT+vS
zxlHZ6T2rPZ->CgY*Le8QHeKcc%QmGsVf{<<+-7@0MgC!XLy!1g-5M?NX#E=9;*k9#
zJzM@|KTb5j4oA)(mJ7Dop}$EkyFa$zcZg$+UA)q`K*Zfne|L>R2sb#XCaB?R7S1BA
zAW?U~Y9z}|336ANlkYksy*^~%*id7I8mH!FuL$y5EA_zxT3?~_f_zmP;caICJFj=0
zq&S~;#i^6?E<g419hbk@k6Mp5^I@oxoy-XeRu>-vlwnf+P;)+$pUKP$3RS009q^Fk
zg_&F?QxJ5t%16LkLCD=Kd1i8=Fgq<MY|?%lp)m(C40tB+HjR%XgIm-=hrG}p1yUJ(
zTvR)(gNO{tD0Z`|UQlJrq;y%s@RvB`PO2`DjE-dCr!^u^@w$!_;cxQ?)EogR>BxQf
zhg|R^)d0v79eE1>QX@f-RULT;{|Thu_f;4D4!>Uc_V8zSr~4S{Hgp-A@c$Ifd;8P~
z(4Gz{=w%z1y-BqNM3tRg89w-CkbXy07mdMpA=-`Rv+;AE_eAUdaW|oi)G*W%9=SMl
TZah1g#brjR(nV)@(--*<?(~<l

delta 1068
zcmZ9KT}V@57{}jd+d0lno%=Z3(j7nckvc7%8YSWu7?hDYp><Pa3}+7ZVL5}ksL0rj
zP|OFan}jaBDw6O*${R28!V80_t1d+FA}A_@1QWxa_w0j1@5O)r^Zfoh@B2RI*$m8f
z%i(Y&&~;2V4NS{c!fy8U5MvuV!jz*f`tnFlZr2VylXFAK{%Xb;7>tQ{bYvu!8a+Ch
z2CDD{qm5jR|1&`e=2Z#i-aEvkj-uvSu)RLm0;~W%xMzg`{?bH5K}#vq;;?oToEH8E
z*rzaqOWZ4N*MbAWAavssAqzcNCuYHq^WqA$<5<}W1hGl~3F5e~--gThy?h&naKrE$
zZsJGd0^GsriZ?KaeU+<_Lv7V6JixW8HF&Xzro#aJ__jLX9^)Ifnn=GDuSfnT_hou^
zl9hL0uDZ58f2o55%`TBWPQhao=!dDBP`WyHh<=Zkr~JH)Ov5F=bmS`w&pMowj>~2O
zc2%N=yr+~1I{Pqdz7B1;Yj(+<RJT(eB)++3JWkG_oCDYi3|MNZCxaGW{VB>hm7I}O
zm!8T*894JN26h&678%00Kzb3^Ep61jJxc(h*k*OXI1X4{cT@BRhw_FRQf)kyU{GJ&
zDnpQ$L2{9b$yjnSmSNCP+~9VJH*h{NnTW+E7&I37y%KkGPUAI^xlw8<u&jmxxMMwS
z=5ukC&q-m8;-Ia|n50UYS7{t(Z098#*(p`(7Ww=5!xoZwvu0G}5&5SI;pcy@BJ<>5
z;bSQz$wZb^WSRUs4BGq6>#FJp@}H?1k{T($r6OO*Z*wAhi2PBJzvM+e*|Z$|<J*1Y
zOoa-sTFJX~*y{*NP4wtfp%(I;_|OrOT8Q+jNQnFyg|reGR*?w#D@1xQ?esP`3(Ba}
dQ3xb2slgk$FmP@po{H1g^Fv{fuHmxN_YXS?v`YX0

diff --git a/src/kernel.pas b/src/kernel.pas
index ffc46138..5aee4dd9 100644
--- a/src/kernel.pas
+++ b/src/kernel.pas
@@ -54,6 +54,9 @@ begin
      memorymanager.init();
      scheduler.init();
 
+     pint:= puint32(0);
+     pint^:= 10;
+
      STI;
      isr32.hook(uint32(@bios_data_area.tick_update));
 
@@ -67,6 +70,12 @@ begin
 
      //drivers
      keyboard.init(keyboard_layout);
+     if PageDirectory[KERNEL_PAGE_NUMBER].Present then begin
+        console.writestringln('!');
+     end else begin
+        console.writestringln('?');  
+     end;
+     while true do begin end;
 
      asm
         MOV dds, CS
diff --git a/src/paging.pas b/src/paging.pas
index a8e7294e..6123859c 100644
--- a/src/paging.pas
+++ b/src/paging.pas
@@ -6,20 +6,32 @@ type
     PPageTableEntry = ^TPageTableEntry;
 
     TPageTableEntry = bitpacked record
-        Present, Writable, UserMode, WriteThrough,
-        NotCacheable, Accessed, Dirty, AttrIndex,
+        Present, 
+        Writable, 
+        UserMode, 
+        WriteThrough,
+        NotCacheable, 
+        Accessed, 
+        Dirty, 
+        AttrIndex,
         GlobalPage: Boolean;
-        Avail: UBit3;
-        FrameAddr: UBit20;
+        Available: UBit3;
+        FrameAddress: UBit20;
     end;
 
     PPageDirEntry = ^TPageDirEntry;
     TPageDirEntry = bitpacked record
-        Present, Writable, UserMode, WriteThrough,
-        NotCacheable, Accessed, Reserved, PageSize,
+        Present, 
+        Writable, 
+        UserMode, 
+        WriteThrough,
+        NotCacheable, 
+        Accessed, 
+        Reserved, 
+        PageSize,
         GlobalPage: Boolean;
-        Avail: UBit3;
-        TableAddr: UBit20;
+        Available: UBit3;
+        TableAddress: UBit20;
     end;
 
     TPageDirectory = Array[1..1024] of TPageDirEntry;
diff --git a/src/util.pas b/src/util.pas
index 7c625ab4..3f5d7351 100644
--- a/src/util.pas
+++ b/src/util.pas
@@ -32,7 +32,8 @@ function inl(port : uint16) : uint32;
 procedure memset(location : uint32; value : uint8; size : uint32);
 procedure psleep(t : uint16);
 
-procedure endptr(); external '__end' name '__end';
+var
+    endptr : uint32; external name '__end';
 
 implementation
 
@@ -174,7 +175,7 @@ var
     i   : uint32;
 
 begin
-    for i:=0 to size do begin
+    for i:=0 to size-1 do begin
         loc:= puint8(location + i);
         loc^:= value;
     end;