From b52438a675b15bdab38ba364ce858b9f0fd83469 Mon Sep 17 00:00:00 2001 From: Richard Cornwell Date: Sun, 23 Oct 2022 17:56:02 -0400 Subject: [PATCH] KA10: Added support for Address Stop (lars) --- PDP10/kx10_cpu.c | 79 +++++++++++++++++++++++++++++++++++++++--- PDP10/tests/adrbrk.do | 60 ++++++++++++++++++++++++++++++++ doc/ka10_doc.doc | Bin 235008 -> 236544 bytes doc/ki10_doc.doc | Bin 163328 -> 164864 bytes doc/pdp6_doc.doc | Bin 108544 -> 111104 bytes 5 files changed, 135 insertions(+), 4 deletions(-) create mode 100644 PDP10/tests/adrbrk.do diff --git a/PDP10/kx10_cpu.c b/PDP10/kx10_cpu.c index 99546b6c..90af3ae7 100644 --- a/PDP10/kx10_cpu.c +++ b/PDP10/kx10_cpu.c @@ -126,6 +126,9 @@ uint64 MI; /* Monitor lights */ uint32 FLAGS; /* Flags */ uint32 AC; /* Operand accumulator */ uint64 SW; /* Switch register */ +#if PDP6 | KA | KI +t_addr AS; /* Address switches */ +#endif int BYF5; /* Flag for second half of LDB/DPB instruction */ int uuo_cycle; /* Uuo cycle in progress */ int SC; /* Shift count */ @@ -138,6 +141,15 @@ int push_ovf; /* Push stack overflow */ int mem_prot; /* Memory protection flag */ #endif int nxm_flag; /* Non-existant memory flag */ +#if KA | KI +int adr_flag; /* Address break flag */ +int adr_cond; /* Address condition swiches */ +#define ADR_IFETCH 020 +#define ADR_DFETCH 010 +#define ADR_WRITE 004 +#define ADR_STOP 002 +#define ADR_BREAK 001 +#endif int clk_flg; /* Clock flag */ int ov_irq; /* Trap overflow */ int fov_irq; /* Trap floating overflow */ @@ -450,7 +462,10 @@ REG cpu_reg[] = { { ORDATAD (PIE, PIE, 8, "Priority Interrupt Enable") }, { ORDATAD (PIENB, pi_enable, 7, "Enable Priority System") }, { ORDATAD (SW, SW, 36, "Console SW Register"), REG_FIT}, - { ORDATAD (MI, MI, 36, "Monitor Display"), REG_FIT}, + { ORDATAD (MI, MI, 36, "Memory Indicators"), REG_FIT}, +#if PDP6 | KA | KI + { ORDATAD (AS, AS, 18, "Console AS Register"), REG_FIT}, +#endif { FLDATAD (BYF5, BYF5, 0, "Byte Flag") }, { FLDATAD (UUO, uuo_cycle, 0, "UUO Cycle") }, #if KA | PDP6 @@ -463,6 +478,10 @@ REG cpu_reg[] = { { FLDATAD (MEMPROT, mem_prot, 0, "Memory protection flag") }, #endif { FLDATAD (NXM, nxm_flag, 0, "Non-existing memory access") }, +#if KA | KI + { FLDATAD (ABRK, adr_flag, 0, "Address break") }, + { ORDATAD (ACOND, adr_cond, 5, "Address condition switches") }, +#endif { FLDATAD (CLK, clk_flg, 0, "Clock interrupt") }, { FLDATAD (OV, ov_irq, 0, "Overflow enable") }, #if PDP6 @@ -1040,6 +1059,9 @@ t_stat dev_pi(uint32 dev, uint64 *data) { #if KI | KL res |= ((uint64)(PIR) << 18); #endif +#if KI + res |= ((uint64)adr_flag << 31); +#endif #if !KL res |= ((uint64)parity_irq << 15); #endif @@ -1501,7 +1523,7 @@ void check_apr_irq() { if (pi_enable && apr_irq) { int flg = 0; clr_interrupt(0); - flg |= inout_fail | nxm_flag; + flg |= inout_fail | nxm_flag | adr_flag; if (flg) set_interrupt(0, apr_irq); } @@ -1652,7 +1674,7 @@ void check_apr_irq() { clr_interrupt(0); flg |= ((FLAGS & OVR) != 0) & ov_irq; flg |= ((FLAGS & FLTOVR) != 0) & fov_irq; - flg |= nxm_flag | mem_prot | push_ovf; + flg |= nxm_flag | mem_prot | push_ovf | adr_flag; if (flg) set_interrupt(0, apr_irq); } @@ -1686,7 +1708,7 @@ t_stat dev_apr(uint32 dev, uint64 *data) { res |= (((FLAGS & FLTOVR) != 0) << 6) | (fov_irq << 7) ; res |= (clk_flg << 9) | (((uint64)clk_en) << 10) | (nxm_flag << 12); res |= (mem_prot << 13) | (((FLAGS & USERIO) != 0) << 15); - res |= (push_ovf << 16) | (maoff >> 1); + res |= (adr_flag << 14) | (push_ovf << 16) | (maoff >> 1); *data = res; sim_debug(DEBUG_CONI, &cpu_dev, "CONI APR %012llo\n", *data); break; @@ -1725,6 +1747,8 @@ t_stat dev_apr(uint32 dev, uint64 *data) { nxm_flag = 0; if (res & 020000) mem_prot = 0; + if (res & 040000) + adr_flag = 0; if (res & 0200000) { #if MPX_DEV mpx_enable = 0; @@ -2998,6 +3022,27 @@ int Mem_write_byte(int n, uint16 *data) { #endif +#if KA | KI +static void +address_conditions (int fetch, int write) +{ + int cond; + if (fetch) + cond = ADR_IFETCH; + else if (write) + cond = ADR_WRITE; + else + cond = ADR_DFETCH; + if (adr_cond & cond) { + if (adr_cond & ADR_STOP) + watch_stop = 1; + if (adr_cond & ADR_BREAK) + adr_flag = 1; + } + check_apr_irq(); +} +#endif + #if KI /* * Load the TLB entry, used for both page_lookup and MAP. @@ -3067,6 +3112,9 @@ int page_lookup(t_addr addr, int flag, t_addr *loc, int wr, int cur_context, int if (page_fault) return 0; + if (adr_cond && addr == AS) + address_conditions (fetch, wr); + /* If paging is not enabled, address is direct */ if (!page_enable) { *loc = addr; @@ -3300,6 +3348,9 @@ int page_lookup_its(t_addr addr, int flag, t_addr *loc, int wr, int cur_context, int uf = (FLAGS & USER) != 0; int ofd = (int)fault_data; + if (adr_cond && addr == AS) + address_conditions (fetch, wr); + /* If paging is not enabled, address is direct */ if (!page_enable) { *loc = addr; @@ -3577,6 +3628,9 @@ int page_lookup_bbn(t_addr addr, int flag, t_addr *loc, int wr, int cur_context, if (page_fault) return 0; + if (adr_cond && addr == AS) + address_conditions (fetch, wr); + /* If paging is not enabled, address is direct */ if (!page_enable) { *loc = addr; @@ -3872,6 +3926,9 @@ int page_lookup_waits(t_addr addr, int flag, t_addr *loc, int wr, int cur_contex /* If this is modify instruction use write access */ wr |= modify; + if (adr_cond && addr == AS) + address_conditions (fetch, wr); + /* Figure out if this is a user space access */ if (flag) uf = 0; @@ -3970,6 +4027,9 @@ int Mem_write_waits(int flag, int cur_context) { #endif int page_lookup_ka(t_addr addr, int flag, t_addr *loc, int wr, int cur_context, int fetch) { + if (adr_cond && addr == AS) + address_conditions (fetch, wr); + if (!flag && (FLAGS & USER) != 0) { if (addr <= Pl) { *loc = (addr + Rl) & RMASK; @@ -4216,6 +4276,10 @@ int Mem_write(int flag, int cur_context) { * Return of 0 if successful, 1 if there was an error. */ int Mem_read_nopage() { +#if KA | KI + if (adr_cond && AB == AS) + address_conditions (0, 0); +#endif if (AB < 020) { MB = get_reg(AB); } else { @@ -4240,6 +4304,10 @@ int Mem_read_nopage() { * Return of 0 if successful, 1 if there was an error. */ int Mem_write_nopage() { +#if KA | KI + if (adr_cond && AB == AS) + address_conditions (0, 1); +#endif if (AB < 020) { set_reg(AB, MB); } else { @@ -13447,6 +13515,9 @@ t_stat cpu_reset (DEVICE *dptr) #if ITS | BBN page_enable = 0; #endif +#endif +#if KA | KI + adr_flag = 0; #endif nxm_flag = clk_flg = 0; PIR = PIH = PIE = pi_enable = parity_irq = 0; diff --git a/PDP10/tests/adrbrk.do b/PDP10/tests/adrbrk.do new file mode 100644 index 00000000..8d34ecde --- /dev/null +++ b/PDP10/tests/adrbrk.do @@ -0,0 +1,60 @@ +;JSR ADRBRK +dep 000042 264000000105 +;CONO CONO APR,200000+PIA +dep 000100 700200200001 +;CONO PI,2200+<200_-PIA> +dep 000101 700600002300 +;MOVE A,100 +dep 000102 200040000100 +;MOVEM A,200 +dep 000103 202040000200 +;JRST 400 +dep 000104 254000000400 +;0 +dep 000105 000000000000 +;CONO APR,40000+PIA +dep 000106 700200040001 +;JRST 12,@ADRBRK +dep 000107 254520000105 +;JRST LOOP +dep 000400 254000000102 + +;Check address stop: data fetch from 100. +dep acond 12 +dep as 100 +go 100 +if (PC != 000103) echof "FAIL: stop dfetch 100"; ex pc; exit 1 + +;Check address stop: write to 200. +dep acond 06 +dep as 200 +continue +if (PC != 000104) echof "FAIL: stop write 200"; ex pc; exit 1 + +;Check address stop: instruction fetch from 400. +dep acond 22 +dep as 400 +continue +if (PC != 000102) echof "FAIL: stop ifetch 400"; ex pc; exit 1 + +;Check address break: data fetch from 100. +break 106 +dep acond 11 +dep as 100 +continue +if (PC != 000106) echof "FAIL: break dfetch 100"; ex pc; exit 1 + +;Check address break: write to 200. +dep acond 05 +dep as 200 +continue +if (PC != 000106) echof "FAIL: break write 200"; ex pc; exit 1 + +;Check address break: instruction fetch from 400. +dep acond 21 +dep as 400 +continue +if (PC != 000106) echof "FAIL: break ifetch 400"; ex pc; exit 1 + +echof "PASS" +exit 0 diff --git a/doc/ka10_doc.doc b/doc/ka10_doc.doc index 7196b5a77298702f418c26883f79e9c4875c51b4..c1a10238662e4bed366705d355225e77700d015f 100644 GIT binary patch delta 15771 zcmdVhe_T~ny7=*Dodb$LAT%&RL?B1a#MBg#3{lC9%*f1fOi9g}#xaI5$ILMyW4sPS zrXI&l<|QJp5iw?h9C8qeVaPGZh|0_i8FRc!WJbm~{``KPb5M_I=j!Ww|GDsb@3qff zYwxpvtiATxdp$d&C?KOOV8sBl^X-A38{6NEqtoqki!*GWwCOlhBtiK5s>@+N$BcG8 z{FHZLv%h=Z<%V4>_hRR0)1i1< z=X;HRM^?F`Bq#Z^fR2vfpwXtC<7Yt+Gu#ps$MASif400w@L%nI&#lt$kv@*5u8Bz} zx{BmSh=lbKnR1&*X^hB`2SpA&EOK~;NYu|ocBP7pUnXL6h!o_D1iUTs_%4yDUx+OB zHBu2}M4}xFLnipA28+yzqMBVt*^?lKNX#8;3D?k;oF%qUW>B zfK2Q|>|(wgCF$&v3^wmM%KwgCfn!TWva&?R{DEDPEz<7=@|UxME7?6*&pu6I_hkK1 zB-i5mazr}5#J+fmg~?ixoL4FQnn)w!Hi#6y&h$4}*qb7KOW4XS6nlqsD>MC>l_?jQ zwM`_sf(5@zx>Kb8`|K6$W#8BQU8Ldz_DrqFqB@S-ry^rN6PdS9WY2z)GheX0qkK<# zBVW)Yvhizn%Q2C%Z#aNrB-a?J^fR)toss43jm+~mQWaoC0*#b*HgY`JNJ$qX$u}9< zi-X}t2J|qJiFzbQ7-_`(NF(d|8L>qhDP)`29x1|~uo1*LG}Mv*S&b<;8>fl ztKoCx4(sjsJ|^(er{Fx_>6tm_f@^%m~}(pB!sp&sQNZ(R22pPrwB6FOX6 zMnZ?nmN6~Xa~UsP_UV(@K#vCaSnTZ{4RHOin;rKJ3k2_^_ zpI@Qr-U{!#nJ&l+SJ9na1BUF5{J7bc6$A1IPW zlOA>x=LF@~hw?3sNS|(@uXp29N0EDJ-dD342X3LgV#WstI-c{32|hf8bHGN+5zEQK z%U8xU_0s@U4_$c^Cg4;&VrGo+>`|^RYhd21&Hs zFOSN+;(O=x_~l)X$&>OcnJdpogxn*kGE06z<_wwVn);Nqb^VW&2T2D?EW^>{q{>qa z=g4EsMV{l=ABH?KQbx%Hxz|;$EmLRlKbI0u@gE^GUE?$4m#*b${%BTXyd?5@2!2@J z{VlpS^T0P+0~ebci{b4#hs1o?*4u)p5J4xBrG{=9mh@m*GATl0}M&X|%?KXc!U zK~#p}h(`j(V4M}4WA3mf=9sV$8^_%TZQzI5n1fVnWsd1#l~Bg|SO+I^Owg#)(%ihK zSw58AyE#(3c1iWFcS+?Pck;G7dBdH&>P}vAC#?s>n*EYlm_Bq=-*#zFh_si{NqywW zvF&`G!Vo`m?^qkZ6MQ6ftdHM3q%b~%B9Dw6<}=k#0=2m2Uzjd_Iz>y|p+6Q{a1xV3 zL?&YjrlJCss6u!sl{|tP6osBxie<>MMy_R(XRT#xGZ_r&-<=CO24OH(V-0f9KAdWW z00bfpb1~2Qhc3kDWz+Tkmp~Ip|LIxsy6~veTVZxs$E#WV1Ud z6xQyG8$8yI&%=N4`K5r%^IQDgpRE`F(>xUE-cV-i+uoy?Zn%urAB5pnbS`^3IhTz} z)4>WIY|=rk4vsVMONyqtV@;k3vbyG(u=M8sT)xqQlhEIlXHV(2HoKEXcXH63>~kk| z?qsJssd6V<-N|Nm(pte;;Wfb?E6nHbf;>JOYt}0!E%?%5l)H2lrXt09D32{#z-n4K zIw;e@ULBlduqL082puFa7*`VG{z3e|P_x9Ue$7M#vZ_U#2Nx@pHS1L~ec+`vC4VSQ z!^M0Vtv|@iuoYoLIVOm(p3P?~@^nQjb(z%J?vnT3qcy2?{g;dL zNB^w@|79YqX|I`|ww@2H+8@I_R?SsS##)){%^AyQgIR68`=$xDYTq<%{(lD4Pi=65 zXmEn$QET-Ev)}S5Fd0_Wn^dnKS-MZ37CFZMm-4w+BG%qFOmFM+*G*3|$;v1&>#T@3 zOtR%uXfmx8nw9>B>2S*tnvrW_z5j+8Vr3SZ6P8br$qZ+{<3H*vYvq5L5!OH6VmCFg zugo+nv&cM=KA#(-EG$~g?G*I>qYfYA49=lvhDa|YVhofThGoanT3l}p-a{F7-FV>G_ zy(>+|;4JP15sO5OK?d}CRY}yv2A`Nq~7#YY#9!gM(3hYNc`o7@4k4zxd8;x<8h)I}?_1J)|&>N5%)FQo( z!Ib6h8_?;bGcgO5E4cik8b{EG&MVzFsqv%tTY(hWoz2h((qmYQDScV*|MIQ383%gN|1~j4xiRo)N`j~{t zn1}gTfOVGp=6)mTCTvAHD$s}~oWbTC9w^{2+P}n4al~N^W@A2bQHXQ!Sxd8u6g)be z!Qq!VfM~?nbyUs&q-r7zYY>%7i-2B8MFS4v5PH4J)*}&Xpbs8OP>S~Xt_L{QoVU%W z8~4h$@&Q^nB8oq&wwOkC)7$3$^au1oPbtb!fl73K&HWIgCuuMALw{so307e>^06LA zpbtDw;S7S-vokOmQ;>q`&<7$DFcAeve4QpQ`E@2@I%Z-63Q&qN)S?bS1uPUj(F^@C z04uNxdB{g0if|74vfuo`PniZbXUv(w+5<{EXC;ZgSf4>I~(S@!5r(Si-1%bt%!{~0?iR^1j8?Y^cI zY%zhCPM-($D+AFP6A@EPbw>kYdEyj@RalJ^Xu*Unl*I-VlyMB+VHyfi1fQ*JGEy)d zjcCH6Khxx)KAk}WR+Li%umJ@qK`B1Q9yH+?S`f621BjW>M_voD2rIA(<)}avd@5K0 z=wq?0?Oe7hY5Y-zYNU^Qm+KBTpb)eF!jZ-7YEopq$8`YT!$FUkPBX6m4g7n~ z+amng$M!W=rPB;bzt{>+)(5XoU^eDs0oEV~8?gyx*aLk~*z@n478s6rOu$4eMg}rb zji%ik5lsDn!;4+mjsCTqPU#HvN#k;C{*c3o&^j6ww+KdyJ@&#Lrli!`>6#VXD!iTR8bD-S+ho5kbaJ_Pul4JY0bW#2S z*L?e0ryiD1+yz~~WW%_ah0y@$Z`v3?qd#k>aevi@aZN8CSoh`5`o}gCoKE4c?!sNQ z@I+n11z3nhXu%nrL+Sy3bznXg;A8{sEtVeS%7;P}q3;o{3z&t+u@k#+2)3h~S@1*q zqdYRtVML!EZ$>TZ5ZcHgKrAL^NV*JJ==n7j67fht z5%l5oPV7R&v2?C*$7rB1997UK*9|y`_-~jIQ!o{!s6N9Apx`|1HmXpKj$&L-yZewP zV*=J8gQwq1&}=hu0@{snS`X(@&cjDFakaKOg$CQ5xW;vGfot-G4<0Ga^u;-JG5W`2 zl^~DDDnVAmTc(S3d6PX^*CGR{ZH;6h8%>x(MR@|Vu>cEE0eya7i#jx-3H^DVKL80B zg(Qqa5%gJq1uC%vI}w)7!~byf#{k444%yI-fmK+I=8o)2Itc=ihI%yN7|!4vhSPx% zkMT&x6PS$+C_ovuq7vHK(Deo*>7fkzq8|ofFxI0GMVQ^m$WkoB5lp0aVkTx`F6Ln~ zN>Gg&)T04mH?nbv!f`YsGm7P*9CTfc=76^7@1Ubzhh7U=FPEEc)`#0n|GTDYZ`h)n zsZxmV&4GY+knF{N)T0qiIF4pWH1sl{tH8f=&$|W~$XM%N}Yi ztT6wwiYkr2Big4^K->EyB~xS?re})v(suK>Zx`)}TT^Kg0?xYXU+dts^@oY}5c9QF zUSUE44tQqmwYK-MhjiQNIgJbFrN46P{c4k7-JM|fcbpy3!|L%DbE}p1u1V8DfYtD> z>Cw*IM^&E_$yZmI1as2rzt$FFrBs=E%?_|u{KfRWIQA>+S4{H_)V{(s)h5xS_;1W6 zYj3r=UB4{Uy8W+am%D5y+c3)3m{@bxil1cphd~YsSzPui0V#ZoYNy-eJBqq?J3(c~`otHQjA)v6*jq&}AED{d=cb zY;7B23$mVl$JW+a{-KGc?A7x=@{;$7m%LAn-Sz!@Tfcu_Yr4NRt#3^mysX!kUY7q) zFM0p%CGV)0ysy0EeeEUh8!vg^ddd6FOWyZh^8V!|@84eXPJ78a>m~2Jmpnr!>5tVN zyO%s)FL`afMes zeLY}i59@;+JX<}#gNAFw&9?2%=15!jEAyP>)n0A#Pp&?>_thuga`nl#UVU=()hFL} z^~nRTKKXWAlks(Js&l{)+v$trLp{cad5quTF@C4V_y~{jksjltJ;v|y7{A+N{2q_- zdp*YQ^BBM1WBdV+@drJ|AMzOgsmJ)wJjNgP7@y`b{)or;43F_gJ;opN82`D)_%CcD zqub5!dAj4>H@p`1sKq5^m~~)>>FC_P#?u+Lm9+*Ey3-h{o2ez#6PWH8j@d0V`n#7v2#&Y@yb; zJliilW~|J!C72K`v;%e6gJx)ej<*^2*+!bKlxcx&9{1rG4h`z@HlKdsn)NonPAL?e zi5zGY(El`3h!$Fha#Z3tG<0aVm2gNm?~ra@zHQ{C&2#U!5AtmTO^B8}fxzGJi~(bz zK}Xj%x0W1-$(V{PXt>g~&8;PuBL}(I3=MR;wz;)rDQd6_4bTv&YnnS)OCCZajw5J3 z&sVHYCARMW!yXIP5Uj2UM^7YSoadYye{5fC;MRCd#1v#g1Gz3c#G9_Hh{0ND8J1%; zDp7SUU)f1x#Hvw;JvgOvExMvAlu#9dHJ0oQ&LQw=b_xDvB^;*`^)I#E|HGNKmr~U` zYoRy{M?A(qZQZ)o7G{mu%ISJXnJwmrvvGEhFxH%nHvgM^G-_=EGOz@h$bQ;Nt6>3g zYgqtG8FcjpXmfCruZFy>Kn-?aC+ezH3-{1#yY3Q&luYo7mRUyTo}!6BSL3pzf-@kcMjJmWqZ z=`|dUaXT19>v3^?yfEl@=?H0y8*h5I87p0SntLASevRiP8h;pzBqU=dG#=5j+KHX53?wb%tt}V!8q3+gLXPJj=tU@6)r19Dpvsc?@<|s!U_TnToDDv8uqAhiZ&e9&C z2*)63T;+8xMrTRHWK2aGG&J+t7gMj>#2ibo8aXJ326tZjQe4}lv((^Y>_rPSKJ+>l zqqE3wd8Cdm7yv>{uXiyzOB}{y0v?A3sb1&W=qzbiiY(+o<6N(EF*-{j%29=S9LDu5 zh6BYMN6?Iu=(mWoAJ?-KDxc00g9MDhLTJ41buLC{$;5K3#tvx6@AWNaO(Q>A_Ay%n z!k(omgy%JQL_Vi>w9k!tYDZo=t37{&=q$a^AA=AF4LZKQ#rW$iiI{@vmVc8iM&p2N zXlR3mHE1Y9R+e>JUwfD}KF&Vax%iB2i3!!nhHPj=gGMu)fJQNl`9tf$=I7|Nib3sKn~rJ|y;Sq=1p1~g~@g9b0;LjxB2z0kTFY<6~ohQRlShAM180W>mU z>hjiQ`q(#_a1D}AfyOB0LSqy(K0#v>f>t`&tp`o0M$vbH1}JE7!XjvJ!mgDbdo)zT z6m~Q0VvriI#9m?#ZFSc_70%x7&82n{jNu!5l1Tw8BN zN7zGYPH%9&9AgWR6!%fUFTW2Rxph(XoAKSXiULWXk5Vt#BFd= z@}P;*00Rv!C`1u9BJp*q4>YEr@b%WC6{SZ@-_6j-0*xx@3XLYvNP^YS2m*PdwRBId zLK;h8gT@eO{6HEshM)>jZ#u(!u>yDMYaSXypz#9*(Aa@7Z?VWt?)U)hsMk*V*kY;^ zn$V|&&NG~_2I`}3Ya%r;X_npJnbt@5s%DMB5@cdM4&g8Yx6puWas9q^#`k3{JL~%; z$?PJf#eD&=hQ*dOJfDHw^LawY1OeACHNS_-{pis%Dc{9vG#ptkiKiP0R;%H z;;!W{9CK*=KsGdfpa_TlCft+pEjwL}gp($Dv+1sH=}bT>Do~02&^LFk*w*ekbpVpF z0;^CCeaGj@(mM4F&OxIOwBuhp{nuizvwMR5OB1dg{@U5!2inQ69sEn6o%}U_cQ__CW)(2*11bP!qZ}2^$VB@A6Rxiv)g!!?D>jm_ z3|Yvob>CD`>3Tb7jIqCBexh*$8?pXFT7I;zqZL35GI>Mc5<3K~$L zfdo+>bL`Lv4Jgn+0)5@7^}L8rWP4W7JUeNl*PC$7Duc!tXncXj7F0rG3&wutYW%I} zRJxTWpVE6i#@Givov)0u&oJR*KVy54iXv=;#vW*_!MuIW@bOfr?iyq;9~xwE5Qm_F z1{!3r$JsqukA%L1r2z)ob)N$5wm*qeIP-<8{jm6nGT50qfy>FA+M7SAp6@+Ct-{F$ z*5e;sAP#b>qRp4?9(?V&*IxVGpr_u|Nq=SgFp>5lRQvDOLHq8t-##4LXJ6RZ+I&u; z`3%+G`yy!Xz4qLfL3{4|HhGrP7s&cS`|q{yz7MqTe&g4krL-4+6SNm!JMeo#JMgQI zd6v?y{2FLizINk}f_CGVedAH;HhoQPE6S1gE&K9&_Ty=mb%xq=mUHwx=P0z3pV!%} z9&PO1toV)`R*tB@H8qy{uz0$Ci3!)2-2$Oq|GCIRJ~HV3&o$2QnH*BW+}*JNNp^QE zz`oXAc1np_3m)+_SVISg5ew;nrO*`E; zK|9;EpFINFzfRw}N3n42YF`2EZa)U?Zr85%xtQng44=(vM(Rs?+V8G??b^?t0PSDb zzV$*>IV0!jDXM+z+N~Z2?M~l-0%(`I1Ukc0bz%CZpZ2Y5zj`B@TKm?uKVAFMOP!Hv zEUdS_4XAzT+K(QA3}|0^pCBWNyd{_f-WIfe-E8Y-O`Fe-zkja%ZPQ)fAZ*4-EZ|MT zg~))uRk+cLOttrNor2EfdF-a{I<*w#I0xaK!#2?O4=*b{UrX!M37CvL!q zyO7omQMLx_n??4X^gjnZYj5(`7bFKE7MV`}411IzYe2fa)?eS7T#9VeUzQc1uTwVQ z2$Cb50U7ql3$q32YnBs`g2o@@>FbwGXvX}=%jWB=uVpU4LS(iEJM3zWOjz0)nJ~^3 znc(cZ%sBL8BFH(ayeE_T6pGa_7HS+Bui{I2StX HOKtxT8npVM delta 15619 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 Lb1Zz>y4>===w_nE diff --git a/doc/ki10_doc.doc b/doc/ki10_doc.doc index 96eab08860d52a87de8951fc974bb3e84431eeee..153633ae007b9ce867487e232afa5cadb615dc67 100644 GIT binary patch delta 10175 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 Vq@Ve<>#r|bxyDSfH~h%T`#<$D;Bo)} delta 9951 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 bZO3l0Z|pQH9BK3IqL)ok$N-_(LAU=0!oQ|a delta 15154 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 p!dS