diff --git a/Makefile b/Makefile index 06f677a..ced05fe 100644 --- a/Makefile +++ b/Makefile @@ -7,5 +7,8 @@ buildit: run: buildit cd build && make run +altrun: buildit + cd build && make alt && make altrun + clean: cd build && make clean diff --git a/README.md b/README.md index af653d4..d33504e 100644 --- a/README.md +++ b/README.md @@ -37,20 +37,30 @@ To compile it: ## Running pdp7-unix You will need [simh](http://simh.trailing-edge.com/) 4.0 to run pdp7-unix. You can get the source code [here](https://github.com/simh/simh). -On 64-bit systems, you may need to set the C compiler's optimisation -level to -O1. +On 64-bit systems, you may need to set the C compiler's optimisation level to -O1. + +### Running from source To run pdp-unix from the pdp7-unix source tree, do: `make run` -
-cd binaries
-pdp7 ../build/unixv0.simh
-
- Press `ctl-e` to break out the simulator into simh +### Precompiled Binaries + +You can also run pdp7-unix from precompiled binaries in the [/binaries](/binaries) directory. There are **orig** binaries and **alt** binaries. + +The orig binaries use the unixv0 directory semantics as restored from the printouts. To run pdp7-unix orig: + +`cd binaries/orig; pdp7 unixv0.simh` + +The alt binaries use the more familiar "." and ".." diretory semanatics as found in later unix. To run pdp7-unix alt: + +`cd binaries/alt; pdp7 unixv0.simh` + +### Typical Output + A typical pdp7-unix session on simh looks like:
diff --git a/binaries/a.rim b/binaries/a.rim
deleted file mode 100644
index 402c942..0000000
--- a/binaries/a.rim
+++ /dev/null
@@ -1 +0,0 @@
-„€€ผ€ „€ฐœŒ„€‡ฟฟฟ„€€€š„€‘ธ€‚„€’„ญป„€“€„€”„€š„€•€™„€–„€„€—ญป„€˜ฐ€›„€™€€š„€š€€€„€›ธ€‚„€œ„ญป„€ดˆ‚„€ž„ญผ„€Ÿ€ˆ„€ „ญฝ„€ก€‰„€ข„ญพ„€ฃˆŽผ„€ค€€Š„€ฅ€ญฟ„€ฆ€€†„€ง€š„€จ„ฎ…„€ฉฟฟฟ„€ช„ œ„€ซ„ ˜„€ฌฌž„€ญˆŽจ„€ฎ€ ฐ„€ฏ€ ข„€ฐˆž„€ฑธ€ข„€ฒฟฟฟ„€ณœฎ…„€ดˆŽข„€ตˆŽจ„€ถ€ก“„€ท€‚ฎ„€ธฐ‰ซ„€นœ‚„€บ„€ป„€ปฒ€€„€ฐคฉ„ˆ’ฑ„‚Œญป„ƒธ€ข„„ œ„…ผ‚€„†ฐŽ„‡ˆŽผ„ˆ€ญ„„‰€ฟ€„Š€€„‹ฝ€€„Œˆ‘ท„€ธ€„ŽŒ ˜„ˆƒ„ผˆ€„‘ฐ‰ฎ„’ˆŽผ„“€ญฟ„”€€Š„•€€†„–ญพ„—„€‰„˜ญฝ„™„€ˆ„šญผ„›ต€„œญป„ฒฎ…„ž€€€„Ÿธ€ข„ ˆˆป„ก€€ƒ„ขฐฉ„ฃˆˆป„ค€€„ฅผˆ€„ฆฐ „งŒ ข„จฐ‚„ฉ„กง„ชˆˆป„ซ€€‚„ฌฐฑ„ญˆˆป„ฎ€€„ฏฐฑ„ฐฐฟ„ฑž„ฒ„ฎŠ„ณธ€‚„ดกš„ตžฎ‰„ถ†ฎ‰„ทธ€ข„ธˆ’ผ„น€ธ€„บฎฌ„ปผŠ€„ผฐฟ„ฝพคˆ„พˆ–’„ฟธ€‚„‚€ก „‚žกง„‚‚†กง„‚ƒธ€ข„‚„ˆ’ผ„‚…€ฐ€„‚†ฎŠ„‚‡„ž„‚ˆ พ„‚‰„ ข„‚Аฎฌ„‚‹ผ‚€„‚Œˆ–’„‚Œฌž„‚Žธ€‚„‚ฒž„‚ฐ‚„‚‘€‰ฎ„‚’€„›„‚“€†›„‚”€‡™„‚•€ˆ€„‚–€†ต„‚—€„ž„‚˜€„ถ„‚™€‡•„‚š€„ผ„‚›€…ง„‚œ€…ถ„‚€…ผ„‚ž€‰ธ„‚Ÿ€†„‚ €‚ฏ„‚ก€†’„‚ข€„Œ„‚ฃ€„–„‚ค€‰ซ„‚ฅ€‚ฒ„‚ฆ€‰ซ„‚ง€„„„‚จ€„ˆ„‚ฉ€ƒช„‚ช€‰ซ„‚ซ€Šš„‚ฌ€Š„„‚ญ€‰Ž„‚ฎ‚€„‚ฏญป„‚ฐ„ฎญ„‚ฑฐ‚„‚ฒญป„‚ณจก’„‚ดˆŽจ„‚ต€ ฑ„‚ถ€ƒ„‚ทˆž„‚ธœ‚ฝ„‚น„‚บ„‚บ€€„‚ป„ญป„‚ผฐƒ„‚ฝ‚ฝ„‚พ€˜”„‚ฟ€ฎผ„ƒ€€ญป„ƒ€ญ„„ƒ‚€Žผ„ƒƒ€„ƒ„€Žจ„ƒ…€‘“„ƒ†€‘ซ„ƒ‡€ฟ€„ƒˆ€ฌผ„ƒ‰€—ค„ƒŠ€ฌ „ƒ‹€ช„ƒŒ€Ž‰„ƒ€ญ€„ƒŽ€ญ‚„ƒ€€‘„ƒ€€€„ƒ‘ ˜„ƒ’ผ‚€„ƒ“ฒƒ„ƒ” ™„ƒ•ผŠ€„ƒ–ฐƒ™„ƒ—ฌฎ„ƒ˜ฐƒก„ƒ™ š„ƒšผŠ€„ƒ›ฒƒ„ƒœฌฎ„ƒผˆ€„ƒžฒƒ„ƒŸŒ š„ƒ ฐƒข„ƒกŒ ™„ƒขฎญ„ƒฃผ‚€„ƒคฒƒ„ƒฅฟฟฟ„ƒฆ„ ˜„ƒงธ€ข„ƒจคƒ„ƒฉฒƒ„ƒชˆ–š„ƒซ„ƒฐ„ƒฌˆ–š„ƒญ„ƒณ„ƒฎฎˆ„ƒฏˆ—ค„ƒฐ€€€„ƒฑˆž„ƒฒˆ—ค„ƒณ€€€„ƒดˆž„ƒตˆ˜”„ƒถญป„ƒทจก’„ƒธˆŽจ„ƒน€ก„ƒบ€ก‘„ƒปˆž„ƒผ„ƒฟ„ƒฝˆŽผ„ƒพ€ฎผ„ƒฟ€€€„„€€€Œ„„ฏ‰„„‚†€‰„„ƒฐ‚„„„ญป„„…„ฎฌ„„†ˆ–’„„‡ฐƒ„„ˆŒฎฌ„„‰พคˆ„„Šˆ–’„„‹ฐƒ„„Œˆ–น„„ญป„„Žจ ฝ„„ต€„„ฎผ„„‘จกค„„’ด€‚„„“„ฎผ„„”ˆ˜ซ„„•ฐ‚„„–ˆ–น„„—ญป„„˜„ฏ„„„™ˆ˜ซ„„šฐ‚„„›ฎ†„„œ„ญป„„ฐƒ„„žˆ–ช„„Ÿœฎ‹„„ ผ‰€„„กˆž„„ขต€„„ฃฏ‘„„คจ ฑ„„ฅผŠ€„„ฆˆ„ญ„„งดˆ‚„„จˆŽจ„„ฉ€ ฐ„„ช€ฏ†„„ซˆœ‡„„ฌฐ„ฒ„„ญดˆ‚„„ฎˆŽจ„„ฏ€ ฐ„„ฐ€ฏ†„„ฑฏ†„„ฒ„ฏ’„„ณ„ญป„„ดˆ”‡„„ตฐƒ„„ถˆ–ช„„ทผ€„„ธœ ฑ„„นœฎ‹„„บ„ญป„„ปฐƒ„„ผˆ–š„„ฝ„…„„„พˆ–š„„ฟ„…‡„…€ˆ–š„…„…‹„…‚ ด„…ƒˆ—ค„…„€€€„……ˆž„…†ˆ—ค„…‡€€€„…ˆˆž„…‰„ฎ‹„…ŠˆŽผ„…‹€€€„…Œ€ฌฆ„…€€„„…ސฎˆ„…ˆ—ค„…€ฌฆ„…‘ผˆ€„…’ˆž„…“ ฑ„…”„ฌข„…•ˆ“„…–ˆ”ธ„…—ฎ‹„…˜ˆ˜”„…™ฎป„…š„ฏ‰„…›ˆŽผ„…œ€ฌฆ„…€ฏŠ„…ž€€„„…Ÿฏ‡„… „ฏŽ„…กฟฟฟ„…ขœฏ…„…ฃ„ฏ…„…คˆ˜ซ„…ฅˆ™ฃ„…ฆฐ‚„…งˆ–ž„…จ„ฎ‹„…ฉ ฑ„…ช„ฌข„…ซˆ“„…ฌŒฏ‰„…ญˆ™ฃ„…ฎฎ‹„…ฏˆ˜”„…ฐคฏ…„…ฑฐ…ด„…ฒˆ—‚„…ณŒฎผ„…ดˆ˜ซ„…ตฐƒ„…ถฎ†„…ทผ€„…ธˆž„…นญป„…บ„ฎ†„…ปฐƒ„…ผˆ–š„…ฝ„†‚„…พˆ–š„…ฟ„†ˆ„†€ฎˆ„†ˆ—ค„†‚€€€„†ƒˆž„†„ ฑ„†…„ฌข„††ˆ“„†‡ˆŽผ„†ˆ€€€„†‰€ฏŠ„†Š€€„„†‹ˆ™ฃ„†Œฐ‚„†ญ‘„†Ž„ญป„†ญ’„†„ญผ„†‘ฐƒ„†’ˆ–ž„†“ˆ˜”„†”ฎผ„†•จ พ„†–ผŠ€„†—ˆž„†˜ฎป„†™„ฎˆ„†šฐ‚„†›ˆ–š„†œ„†ฅ„†ˆ–š„†žผ‚€„†Ÿ ฑ„† ผŠ€„†ก ฒ„†ข„ฌข„†ฃฎˆ„†คˆ—ค„†ฅ€€€„†ฆˆž„†งˆ˜”„†จˆ“„†ฉฎผ„†ชจ พ„†ซผŠ€„†ฌฐ‡’„†ญฌข„†ฎจ ฑ„†ฏผŠ€„†ฐฐ‡’„†ฑฎ†„†ฒผ€„†ณˆž„†ดฐ‡’„†ต ฑ„†ถ„ฌข„†ทˆ–š„†ธ„†บ„†นˆŽผ„†บ€€€„†ป€ฌฆ„†ผ€€„„†ฝฎˆ„†พˆ—ค„†ฟ€ฌฆ„‡€ฐ‡Ž„‡ˆ˜”„‡‚ˆ“„‡ƒฎผ„‡„จ พ„‡…ผŠ€„‡†ฐ‡Š„‡‡ฎ†„‡ˆผ€„‡‰ˆž„‡Šˆ—‚„‡‹ฝ€€„‡Œˆœ‡„‡ฐ‡’„‡Žˆ“„‡ญป„‡จ ฝ„‡‘ˆ•‚„‡’ˆ“œ„‡“ˆž„‡”ฐƒ„‡•ˆ›ฝ„‡–Œฏ‘„‡—ˆ”‡„‡˜ฐƒ„‡™ˆ–š„‡šจก’„‡›„ฎ‹„‡œˆ–š„‡„ฎŒ„‡žฎ‹„‡ŸˆŽจ„‡ €ก„‡ก€ก’„‡ขˆž„‡ฃœฎŒ„‡คˆŽจ„‡ฅ€ฎ‹„‡ฆ€ก’„‡งˆž„‡จ„ฎ„‡ฉˆ›ฝ„‡ชฏ‘„‡ซจ ฑ„‡ฌผ‚€„‡ญˆž„‡ฎฎผ„‡ฏจก€„‡ฐผŠ€„‡ฑฐ‡ท„‡ฒธ€‚„‡ณฎป„‡ดœ‹™„‡ต„‡ถ„‡ถฒ€€„‡ทฎ‹„‡ธ„‡ฝ„‡นฎŒ„‡บ„‡พ„‡ปฏ’„‡ผˆšป„‡ฝ€€€„‡พ€€€„‡ฟฐˆก„ˆ€ˆ–š„ˆจก’„ˆ‚„ฎ‹„ˆƒˆ–š„ˆ„„ฎŒ„ˆ…œฎ‹„ˆ†ˆŽจ„ˆ‡€ฎ‹„ˆˆ€ก’„ˆ‰ˆž„ˆŠ„ฎ„ˆ‹ˆ›ฝ„ˆŒฏ‘„ˆจ ฑ„ˆŽผŠ€„ˆˆž„ˆฎผ„ˆ‘จก€„ˆ’ผŠ€„ˆ“ฐˆ™„ˆ”ธ€‚„ˆ•ฎป„ˆ–œ‹™„ˆ—„ˆ˜„ˆ˜ฒ€€„ˆ™ฎ‹„ˆš„ˆŸ„ˆ›ฎŒ„ˆœ„ˆ „ˆฏ’„ˆžˆšด„ˆŸ€€€„ˆ €€€„ˆก„ญป„ˆขœฏ’„ˆฃ„ฏ’„ˆคˆ˜ซ„ˆฅˆ”‡„ˆฆฐƒ„ˆง€€€„ˆจ’ˆง„ˆฉ„กฉ„ˆชฟฟถ„ˆซ„กจ„ˆฌพญ’„ˆญ„€ˆ„ˆฎ’€ˆ„ˆฏ„ฌฎ„ˆฐ’€ˆ„ˆฑ„ฌฏ„ˆฒ’€ˆ„ˆณ„ฌฐ„ˆด’€ˆ„ˆต„ฌฑ„ˆถŠกฉ„ˆทคกจ„ˆธฐˆฎ„ˆนคˆง„ˆบฒˆง„ˆป€€€„ˆผˆˆง„ˆฝ€‰„ˆพคˆป„ˆฟคˆป„‰€ฒˆป„‰€€€„‰‚ฌฎ„‰ƒผˆ„‰„ผˆ„‰…จ ท„‰†ฎˆป„‰‡ผˆ€„‰ˆฒ‰„‰‰ฟฟฝ„‰Šœ€ˆ„‰‹จก’„‰Œคˆป„‰ฒˆป„‰Žˆˆป„‰€€€„‰ผˆ€„‰‘ˆž„‰’„กช„‰“คฌญ„‰”ฌญ„‰•„ญป„‰–พƒ„‰—„ฎŠ„‰˜กš„‰™žฎ‰„‰š†ฎ‰„‰›ˆ’ผ„‰œ€ธ€„‰กช„‰ž„ฎ‰„‰Ÿก˜„‰ –ฎ‰„‰ก†ฎ‰„‰ขฎ‡„‰ฃ„ญป„‰คฌญ„‰ฅ„ฎ‡„‰ฆคกช„‰ง†กช„‰จคฎ…„‰ฉŒฎญ„‰ชฐƒ„‰ซธ€ค„‰ฌฟฟฟ„‰ญ„€‡„‰ฎ ฑ„‰ฏˆ˜”„‰ฐฝ€€„‰ฑˆšด„‰ฒ€€„‰ณ€€„‰ดˆšด„‰ต€ญป„‰ถ€€„‰ทˆ˜ซ„‰ธฎฌ„‰นผŠ€„‰บฐ‰ฝ„‰ปพคˆ„‰ผˆ–’„‰ฝˆ‹‰„‰พ’ฎ‰„‰ฟจก—„Š€†ฎ‰„Ёคฎ‰„Š‚Žฎ‰„Šƒˆž„Š„ˆ‹‰„Š…ก˜„Іžฎ‰„Ї†ฎ‰„Šˆพ€‚„Љœฎ‰„ŠŠ„กซ„Š‹ฟฟฟ„ŠŒ†กซ„Šˆž„ŠŽพ€‚„Šœฎ‰„А„กซ„Š‘’กซ„Š’ผ€„Š“„ญป„Š”Žกซ„Š•คกซ„Š–’กซ„Š—„ญผ„Š˜Žกซ„Š™ฐƒ„Ššญป„Š›ผ‹€„Šœˆž„Šˆˆง„Šž€Šค„ŠŸพ€‚„Š œฎ‰„Šก„กฌ„ŠขŽกฌ„Šฃˆž„Šค€€€„Šฅฌฏ„Šฆฌญป„Šงผˆ€„ŠจฒŠค„Šฉฌฐ„Šชฌกฆ„ŠซฐŠบ„Šฌก˜„Šญžฎ‰„Šฎ†ฎ‰„Šฏพ€‚„Šฐœฎ‰„Šฑ„กฌ„Šฒญป„Šณ†กฌ„Šดˆž„Šตพ€‚„Šถœฎ‰„Šท„กฌ„ŠธŽกฌ„ŠนฐŠš„Šบฟฟฝ„Šปœ€ˆ„Šผ„กฌ„Šฝกข„Šพžกฌ„Šฟ†กฌ„‹€คกฌ„‹คกฌ„‹‚ฎ‡„‹ƒผ€„‹„†กฌ„‹…คกฌ„‹†ญผ„‹‡†กฌ„‹ˆฐ‚„‹‰€€€„‹Šˆˆง„‹‹€‹„‹Œฒ‹‰„‹€€€„‹Žฎ‡„‹ฌฌฐ„‹ผˆ€„‹‘ฒ‹„‹’ฟฟฝ„‹“œ€ˆ„‹”„กญ„‹•กข„‹–žกญ„‹—†กญ„‹˜ฒ‹„‹™ฒ‹•„‹š€‹ฃ„‹›€‹ค„‹œ€Œ„‹€Œถ„‹ž€‹ฃ„‹Ÿ€‹ฃ„‹ €‹ด„‹ก€Œฎ„‹ข€‚„‹ฃˆ’ฑ„‹คˆข„‹ฅ ฑ„‹ฆˆช„‹งฐ‹ฐ„‹จจก‰„‹ฉˆŽจ„‹ช€กƒ„‹ซ€ก…„‹ฌผˆ€„‹ญœก€„‹ฎถ‡‰„‹ฏฐ˜„‹ฐˆ”ก„‹ฑ€ฌฒ„‹ฒˆž„‹ณฐ‹ค„‹ดˆข„‹ตˆ”„‹ถผŠ€„‹ทฐ”š„‹ธต€„‹นฌณ„‹บผ‰€„‹ปฐŒƒ„‹ผ”ก„‹ฝ„ฌณ„‹พดˆ‚„‹ฟธ„†„Œ€ฌ บ„ŒˆŸฎ„Œ‚ฐ”š„Œƒดˆ‚„Œ„„ฌซ„Œ… ฒ„Œ†ˆ„Œ‡ผˆ€„Œˆฐ”š„Œ‰ˆ”ก„ŒŠ€ฌณ„Œ‹ˆž„ŒŒฐ‹ด„Œˆข„ŒŽ ณ„Œˆช„ŒฐŒช„Œ‘ต€„Œ’จกˆ„Œ“ฌก„Œ”ฐŒš„Œ•ดˆ‚„Œ–จก‡„Œ—ฌก†„Œ˜ผˆ€„Œ™ฐŒ„Œšดˆ‚„Œ›” พ„Œœต€„Œดˆ‚„Œž„ฎ„ŒŸˆข„Œ ฎ„Œกˆ•ฅ„ŒขฐŒง„Œฃˆ”ก„Œค€ฌธ„Œฅˆž„ŒฆฐŒŸ„Œงฎ„Œจถ‡‰„Œฉฐ˜„Œชˆ”ก„Œซ€ฌด„Œฌˆž„ŒญฐŒ„Œฎˆข„Œฏˆ”„Œฐˆ•ฅ„Œฑฐ”š„Œฒˆ”ก„Œณ€ฌธ„Œดˆž„ŒตฐŒฎ„Œถ ด„Œทˆช„ŒธฐŒป„Œนถ‡‰„Œบฐ˜„Œปฌต„Œผผ€„Œฝธ„„Œพˆ”ก„Œฟ€ฌต„€ˆž„ฐŒถ„‚ˆ”„ƒผŠ€„„ฐ”š„…ต€„†ฌถ„‡ผ‰€„ˆฐŽ„‰”ก„Š„ฌถ„‹ดˆ‚„Œธ‚„„ฐ”š„Žดˆ‚„„ฌซ„ ต„‘ˆ„’ผˆ€„“ฐ”š„”ˆ”ก„•€ฌถ„–ˆž„—ฐ‚„˜ฌกŽ„™ฐ‚„š†ฎ‹„› ฑ„œ„ญป„ฐƒ„ž€€€„Ÿฟฟฟ„ „ญป„กฐƒ„ข€€€„ฃŒ ˜„คˆƒ„ฅผˆ€„ฆฐ‰ฎ„งฟฟฟ„จ„ ˜„ฉฒข„ช€€€„ซฟฟฟ„ฌœญ…„ญผ‰€„ฎฐป„ฏ„ญ…„ฐœ จ„ฑˆŽข„ฒ„กฎ„ณˆ„ด€ฟ€„ต€€„ถกฎ„ทˆ‘ซ„ธŒ œ„นกฎ„บฒช„ปญ„„ผผŠ€„ฝˆ’ฑ„พ„ญ†„ฟˆ‘“„Ž€ฟ€„ށ„ญ„„Ž‚ˆŽผ„Žƒ€ฟ„Ž„€ญ‡„Ž…€€‰„ކ บ„އ„ญ…„Žˆฐซ„މ€€€„ŽŠต€„Ž‹ญ…„ŽŒฌ บ„ŽฐŽ•„ŽŽœ จ„Ž„กฎ„ސดˆ‚„Ž‘†กฎ„Ž’Œ œ„Ž“คญ…„Ž”ฒމ„Ž•ญ„„Ž–„ฟ€„Ž—ˆŽผ„Ž˜€ญ‡„Ž™€ฟ„Žš€€‰„Ž›ดˆ‚„Žœ„ญ„„Žˆ‘ซ„ŽžŒ œ„ŽŸ ฑ„Ž „ญ…„Žกฒމ„Žข€€€„Žฃจก’„Žคœกš„Žฅ„Žฆ„Žฆ€€„ŽงฒŽข„Žจ€€€„Žฉต„„Žช’Žจ„Žซ„กฏ„ŽฌคŽจ„Žญดˆ‚„Žฎžกฏ„Žฏผ€„ŽฐฐŽธ„Žฑ’Žจ„Žฒ„กฏ„ŽณคŽจ„Žดดˆ‚„Žตžกฏ„Žถผ€„Žทผ‹€„ŽธคŽจ„Žนดˆ‚„Žบผ€„ŽปฒŽจ„Žผ€€€„Žฝฟฟฟ„ŽพžŽผ„Žฟ„€ˆ„€คŽผ„ฟฟฟ„‚žŽผ„ƒ„€‰„„คŽผ„…ฟฟฟ„†žŽผ„‡ผ€„ˆ„กฏ„‰คŽผ„Š’€ˆ„‹†€‰„Œคกฏ„ฐŠ„ŽฒŽผ„€€€„ฟฟฟ„‘ž„’„€ˆ„“ค„”ฟฟฟ„•ž„–ผ€„—„กฏ„˜ค„™Ž€ˆ„šคกฏ„›ฐ™„œฒ„€€€„ž„กฐ„Ÿฝ€€„ ˆด„กฒ„ขœก•„ฃ„ง„คกฐ„ฅˆŽ„ฆฌซ„ง„ขฃ„จค„ฉฒ„ช€€€„ซˆด„ฌฒช„ญœก›„ฎ„ฑ„ฏฝ€€„ฐˆŽ„ฑขฃ„ฒคช„ณฒช„ด€€€„ตผ ˆ„ถœ ช„ท„พ„ธœกก„น„Š„บœ ฑ„ป„‰„ผœกž„ฝ„‚„พข’„ฟผŠ€„€ฒด„„ฌช„‚ฌข“„ƒฐˆ„„œกš„…„†„†ขข„‡ฐŠ„ˆฝ€€„‰„ข“„Š„ข’„‹คด„Œฌช„ฒด„Ž€€€„ผ ˆ„œ ฉ„‘„Ÿ„’œ ฑ„“„ „”œก™„•„–„–ข‘„—ผŠ€„˜ฐž„™œก”„š„œ„›ฌช„œ„ขข„ฐ „žฌช„Ÿ„ข’„ „ข“„กฒŽ„ข€€€„ฃ„กณ„คฟฟผ„ฅ„กฑ„ฆพจ™„ง„กฒ„จกณ„ฉฌกฒ„ชฒข„ซพ„ฌœกฒ„ญคกฒ„ฎคกฑ„ฏฐจ„ฐคข„ฑฒข„ฒ€€€„ณฝ€€„ดˆข„ตฐธ„ถพจ™„ท„กฒ„ธกฒ„น„‘…„บœกƒ„ป„‘„„ผผ€„ฝœ ฑ„พœฌ„ฟจก’„‘€ผŠ€„‘ฐ‘‡„‘‚„‘†„‘ƒˆŽผ„‘„€€€„‘…€€€„‘†€€€„‘‡ฟพฟ„‘ˆœฌ„‘‰„กฑ„‘Šœ ฑ„‘‹„‘„‘Œฌฌ„‘†กฑ„‘ŽˆŽผ„‘€ฟ€„‘€€€„‘‘€€„‘’ฒฒ„‘“€€€„‘”ˆŽจ„‘•€ ฒ„‘–€ก„‘—ˆ’ฑ„‘˜ฌฌฌ„‘™ฒ‘“„‘š„ฌฌ„‘›ˆข„‘œฐ‘ก„‘ฌฌ„‘žˆ‘ท„‘Ÿ€ฐ€„‘ ฐ‘ฉ„‘กŽกฒ„‘ขพ€„‘ฃœกฒ„‘ค„‘ฆ„‘ฅˆŽผ„‘ฆ€€€„‘ง€ฟ€„‘จ€€„‘ฉˆฒ„‘ชฒ‘“„‘ซ€€€„‘ฌˆŽจ„‘ญ€ ฒ„‘ฎ€ก„‘ฏˆ’ฑ„‘ฐˆ‘ท„‘ฑ€ธ€„‘ฒฌฌ„‘ณˆข„‘ดŽกฒ„‘ตˆฒ„‘ถฒ‘ซ„‘ท€€€„‘ธ„ฌฌ„‘นผ €„‘บต›“„‘ป€„‘ผ„กด„‘ฝดˆ‚„‘พต›“„‘ฟ€€Š„’€„กต„’ด†–„’‚”กต„’ƒด‡ˆ„’„„กต„’…กด„’†ต›“„’‡€€Š„’ˆ„กด„’‰ด†–„’Š”กด„’‹”กต„’Œ”กš„’„กด„’Žˆ’•„’ฟฟ€„’€ฟ€„’‘€กด„’’€‘ท„’“ค‘ท„’”ฒ‘ท„’•€€€„’–ฟฟถ„’—„กต„’˜ฟฟฟ„’™œ’•„’š„€Œ„’›ธนก„’œ’€Œ„’ธน”„’ž’€Œ„’Ÿธนข„’ ’€Œ„’กˆŽข„’ขธน„„’ฃŒ ž„’ค’€Œ„’ฅˆŽข„’ฆˆŽข„’งธนค„’จ ž„’ฉผŠ€„’ชฐ’จ„’ซ Ÿ„’ฌผ€„’ญฒ€Œ„’ฎคกต„’ฏฐ’˜„’ฐˆ’ฑ„’ฑ€€€„’ฒคกถ„’ณฐ’ฒ„’ดธ€‚„’ตผ€ „’ถˆŽผ„’ทพ€€„’ธ€€„’น€€„’บผ€ „’ปฐ’บ„’ผ€€€„’ฝผ €„’พด‡ƒ„’ฟ„กท„“€ˆ’•„“ฟฟ€„“‚€ญป„“ƒ€กท„“„€’ผ„“…กท„“†œ พ„“‡„กท„“ˆˆ’•„“‰ฟ€€„“Ё€€„“‹€กท„“Œ€’ผ„“ค’ผ„“Žฒ’ผ„“€€€„“ฎผ„“‘ต€„“’ฎ†„““ผ‰€„“”ฒ“„“•ฌฏ„„“–ด…‚„“—ดˆ‚„“˜จฌข„“™ผ‚€„“šฒ“„“›ˆž„“œ€€€„“ฟฟถ„“ž„กธ„“Ÿกธ„“ œ บ„“กˆ“ต„“ขˆ’ฑ„“ฃฏ‘„“คผ€„“ฅฐ“ฉ„“ฆคกธ„“งฐ“Ÿ„“จฒ“œ„“ฉฌข„“ช”ก„“ซ„ฏ‘„“ฌฎป„“ญ„ฏ“„“ฎกธ„“ฏœ บ„“ฐ„ญป„“ฑŒฏ’„“ฒˆ”‡„“ณค“œ„“ดฒ“œ„“ต€€€„“ถˆŽจ„“ท€ ฐ„“ธ€ น„“นฒ“ต„“บผ €„“ปต™’„“ผ€€ƒ„“ฝดˆ‚„“พœ ฃ„“ฟ„กน„”€„”‚„”ˆŽผ„”‚€€€„”ƒ€ฏ‘„”„€€ƒ„”…ค“ต„”†ฒ“ต„”‡€€€„”ˆกน„”‰„”Œ„”ŠˆŽผ„”‹€ฏ‘„”Œ€€€„”€€ƒ„”Žฒ”‡„”€€€„”ฎ‹„”‘ฌฎ„”’ฐ”ž„”“ฎ‹„””ผ€ˆ„”•’ฎ‹„”–ผ„€„”—ด…‰„”˜จกŒ„”™ฒ”„”šฎ‹„”›˜ก„”œ„ฎ‹„”ฐ”„”žฎŒ„”Ÿ„ญป„” ฐƒ„”ก€€€„”ขพญ’„”ฃ„€ˆ„”คกš„”ฅต€„”ฆ’ฎ‰„”งฎ€ˆ„”จฐ”ฏ„”ฉค€ˆ„”ชค€ˆ„”ซค€ˆ„”ฌฝ€€„”ญด…„”ฎฐ”ฆ„”ฏœก˜„”ฐ†ฎ‰„”ฑ’”ก„”ฒ„กบ„”ณ’กบ„”ดด€‚„”ต†กบ„”ถค”ก„”ทฒ”ก„”ธ€€€„”นŒฏˆ„”บผˆ€„”ปคฏˆ„”ผฏˆ„”ฝˆ™‰„”พฏ‰„”ฟผ‚€„•€ฐ”ป„•ฒ”ธ„•‚€€€„•ƒ„กป„•„ˆ”ธ„•… พ„•†„ฎป„•‡คฎป„•ˆฎป„•‰ˆ˜”„•Аฎผ„•‹ผ‰€„•Œฐ•‡„•ฎป„•Ž„ฏ‰„•ˆŽผ„•€ฌฆ„•‘€ฏŠ„•’€€„„•“คญ„•”ญ„••„ฏŽ„•–„ฏ‡„•—กป„•˜”ก„•™„ฎผ„•šฎ†„•›„ฏ„„•œฟฟฟ„•„ฏ…„•žŒฏ†„•Ÿˆ„• €ฎฝ„•ก€€‡„•ขˆ˜ซ„•ฃˆ™ฃ„•คฒ•‚„•ฅ€€€„•ฆจก‰„•งผŠ€„•จฒ•ฅ„•ฉฌ ป„•ชฐ•ต„•ซต€„•ฌฌ บ„•ญˆ–„•ฎ’ค†„•ฏฌก„•ฐฐ•ท„•ฑด€‚„•ฒ†ค†„•ณคค†„•ดฒ•ฅ„•ตˆ–‹„•ถฒ•ฅ„•ทค†„•ธฌ ฆ„•นฐ–‡„•บ„€ˆ„•ปก„•ผ†€ˆ„•ฝฝ€€„•พถ†™„•ฟ†ค†„–€ฒ•ฅ„–€€€„–‚ค‡„–ƒฌก„„–„ฐ–‡„–…คค‡„–†ฒ–„–‡ก„–ˆธค”„–‰ค•ฅ„–Šฒ•ฅ„–‹€€€„–Œ ง„–„ค†„–ސก„–„ค‹„–Œค‡„–‘ฒ–‹„–’€€€„–“ธ€‚„–”ธ…„–•„ฌŸ„––ฟฟฟ„–—„ญ€„–˜ธ€ข„–™ฒ–’„–š€€€„–›’ฎ…„–œคฎ…„–ฒ–š„–ž€€€„–Ÿˆ–š„– „–ข„–กˆŽผ„–ข€€€„–ฃ€ฌฆ„–ค€€„„–ฅฎˆ„–ฆˆ—ค„–ง€ฌฆ„–จˆž„–ฉฒ–ž„–ช€€€„–ซˆ–š„–ฌ„ฎ‹„–ญˆ–š„–ฎ„ฎ„–ฏˆ›ฝ„–ฐฎ„–ฑผŠ€„–ฒฒ–ช„–ณฌ ฑ„–ดฐ–ท„–ตฏ†„–ถฒ–ช„–ทฏ’„–ธฒ–ช„–น€€€„–บˆ–ž„–ปˆ˜”„–ผฎ†„–ฝผ€„–พฌฏ„„–ฟผˆ€„—€ˆž„—ฒ–น„—‚€€€„—ƒฟฟน„—„„กผ„—… ค„—†„กฝ„—‡’กฝ„—ˆผŠ€„—‰ฐ—„—Аฎผ„—‹จกš„—ŒผŠ€„—ฐ—š„—Žฟฟ€„—„กพ„— ฅ„—‘„กฟ„—’’กฝ„—“ˆ‘“„—”’กฟ„—•ผ‚€„—–ˆŽ‰„——คกฟ„—˜คกพ„—™ฐ—’„—š’กฝ„—›ˆŽ‰„—œŽกฝ„—คกฝ„—žคกผ„—Ÿฐ—‡„— ฎผ„—กจกŸ„—ข„ฎผ„—ฃฒ—‚„—ค€€€„—ฅˆ˜”„—ฆฟฟฟ„—งž—ค„—จ„ข„—ฉค—ค„—ชฎผ„—ซจ พ„—ฌผŠ€„—ญฒ—ค„—ฎฟฟธ„—ฏœฏ†„—ฐผ€„—ฑถ…ƒ„—ฒ„ข€„—ณผŠ€„—ดฒ—ค„—ตŒฏˆ„—ถฏˆ„—ทˆ™‰„—ธฏ‰„—นผŠ€„—บฐ˜„—ปข„—ผ„€ˆ„—ฝฏŠ„—พฎ€ˆ„—ฟผˆ€„˜€ฐ˜„˜ฏ‹„˜‚ฎ€ˆ„˜ƒผˆ€„˜„ฐ˜„˜…ฏŒ„˜†ฎ€ˆ„˜‡ผˆ€„˜ˆฐ˜„˜‰ฏ„˜Šฎ€ˆ„˜‹ผˆ€„˜Œฐ˜„˜ฏ‰„˜Žค—ค„˜ฒ—ค„˜คฏˆ„˜‘คข€„˜’ฐ—ถ„˜“ฒ—ค„˜”€€€„˜•„ฎป„˜–ผ €„˜—ต›“„˜˜€€…„˜™„ข‚„˜šดˆ‚„˜›œ ฒ„˜œ„ขƒ„˜ˆ‘“„˜žข‚„˜Ÿผ €„˜ ต™’„˜ก€€Œ„˜ขดˆ‚„˜ฃœ ฅ„˜ค„ข‚„˜ฅ„˜ง„˜ฆˆŽผ„˜ง€€€„˜จ€ฎผ„˜ฉ€€Œ„˜ชฒ˜”„˜ซ€€€„˜ฌขƒ„˜ญˆ‘“„˜ฎพฎป„˜ฏ„€ˆ„˜ฐฟฟฟ„˜ฑœข‚„˜ฒ„€‰„˜ณฟฟด„˜ด„ข„„˜ต’€ˆ„˜ถฎ€‰„˜ทผˆ€„˜ธฐ˜ผ„˜นคข„„˜บฐ˜ต„˜ปฒ˜ซ„˜ผฟฟฟ„˜ฝœ€ˆ„˜พ„€ˆ„˜ฟฟฟฟ„™€œ€‰„™„€‰„™‚’€ˆ„™ƒ†€‰„™„คข„„™…ฐ™‚„™†ขƒ„™‡ˆ‘ซ„™ˆฒ˜ซ„™‰€€€„™Š„ฏˆ„™‹ถ‡ƒ„™Œ„ข…„™ˆ™ฏ„™Ž„ข†„™ˆ‘“„™ข…„™‘จก‚„™’œ ฅ„™“„ข‡„™”„™–„™•ˆŽผ„™–€€€„™—€ฏ‰„™˜€€ˆ„™™ข…„™šœ ธ„™›ˆŽจ„™œ€ ฐ„™€ฏ†„™žผˆ€„™Ÿฒ™‰„™ ˆœ‡„™กŒฏ‰„™ขฒ™‰„™ฃ€€€„™คข†„™ฅˆ‘“„™ฆข‡„™ง„™ช„™จˆŽผ„™ฉ€ฏ‰„™ช€€€„™ซ€€ˆ„™ฌข†„™ญˆ‘ซ„™ฎฒ™ฃ„™ฏ€€€„™ฐถ…†„™ฑ„ขˆ„™ฒฎผ„™ณจกš„™ดผ‚€„™ตฐš•„™ถขˆ„™ทˆŽจ„™ธ€ ฐ„™น€ ถ„™บฐš‚„™ปœ ค„™ผ„ขˆ„™ฝ’ขˆ„™พผŠ€„™ฟˆช„š€†ขˆ„šฒ™ฏ„š‚ˆช„šƒ„ข‰„š„ˆŽผ„š…€ฎฝ„š†€ฟ€„š‡€€‡„šˆˆ„š‰€ฟ‡„šŠ€€น„š‹ข‰„šŒˆ‘ซ„šข‰„šŽ„ฎฝ„šˆ„š€ฎพ„š‘€€†„š’ฎผ„š“”กš„š”„ฎผ„š•ขˆ„š–ถ…†„š—ˆŽจ„š˜€ ฐ„𙀠ถ„ššˆ’ฑ„š›œ ค„šœ„ข‰„š’ข‰„šžผŠ€„šŸˆช„š †ข‰„šก„ขŠ„šขˆ‘“„šฃขˆ„šคจก‚„šฅœ ฅ„šฆ„ข‰„šง’ข‰„šจผ‚€„šฉฒ™ฏ„šชˆช„šซ„ขˆ„šฌขŠ„šญˆ‘“„šฎขˆ„šฏ†ข‰„šฐขŠ„šฑˆ‘ซ„šฒขˆ„šณฒ™ฏ„šด€€€„šต„ข‹„šถšด„šท„šป„šธ›ข„šน„šด„šบฐšฟ„šป€€€„šผ„ข‹„šฝœ•„šพ„šด„šฟฟฟฟ„›€žšป„›„€Š„›‚„€‹„›ƒคšป„›„’šป„›…„ขŒ„›†คšป„›‡ก–„›ˆ šด„›‰ฏ†„›Šผ€„›‹œข‹„›Œผ€„›ˆŽจ„›Ž€ ฐ„›€ขŒ„›ขŒ„›‘„ข„›’ผ€„›“œ ฑ„›”ผŠ€„›•ฒšป„›–„ขŒ„›—ข‹„›˜ˆ™ฏ„›™„ขŽ„›šˆ‘“„››ข‹„›œจก‚„›œ ฅ„›žœกฆ„›Ÿ šด„› ฐ›ฃ„›ก„€Š„›ขผˆ€„›ฃ„€‹„›ค’€‹„›ฅ†€Š„›ฆคข‹„›งคขŒ„›จฐ›ด„›ฉ šด„›ชฐ›ฒ„›ซข‹„›ฌˆŽจ„›ญ€ ฐ„›ฎ€ฏ†„›ฏ„ฏ†„›ฐขŽ„›ฑˆ‘ซ„›ฒข„›ณฒšป„›ดข‹„›ตจก‚„›ถผ‚€„›ทฐ›ค„›ธ šด„›นฐ›—„›บขŽ„›ปˆ‘ซ„›ผฐ›—„›ฝ€€€„›พญป„›ฟˆ“ต„œ€ˆž„œฏ‘„œ‚ผ€„œƒˆž„œ„ฏ“„œ…ˆ˜”„œ†ฒ›ฝ„œ‡€€€„œˆ„ฏ†„œ‰ˆ˜ซ„œŠฏ†„œ‹ฒœ‡„œŒ„ ›„œธ€„œŽฐœฉ„œธคŠ„œ„ฌ „œ‘คญ’„œ’ผˆ€„œ“คญ‘„œ”คฌž„œ•ผ€€„œ–ฟฟฟ„œ—„€‡„œ˜ธ€ค„œ™ฌฅ„œšผ‰€„œ›คฌฅ„œœผˆ€„œˆœ„œžญ€„œŸผŠ€„œ ฐŸ„œกค „œขผˆ€„œฃฐœฝ„œคฌ ณ„œฅฐŸ„œฆคญ€„œงฐŸ„œจฐœฝ„œฉธน‘„œชฐœฑ„œซฟฟฟ„œฌ„ ž„œญธนš„œฎ„ Ÿ„œฏธนก„œฐฐŸ„œฑธˆช„œฒผˆ„œณฐœฝ„œดธ…„œตญ€„œถผŠ€„œทฐŸ„œธœกฅ„œนผŠ€„œบฐœฝ„œป„ญ€„œผฐŸ„œฝธƒ„œพฐ—„œฟฌฅ„€ผ€„คฌฅ„‚ธƒŠ„ƒ„ฌซ„„ฌก‹„…ฐŸณ„† ฑ„‡ˆ„ˆŒฌซ„‰ฌฒ„ŠˆŸ”„‹„ฌฒ„Œฌซ„ฌกŠ„Žผˆ€„ฐŸ„ฌณ„‘ผ€„’”ก„“„ฌณ„”ˆŸฎ„•ˆœ„–ฐŸ„—ธ„„˜ฐธ„™ธ„‚„šˆœ„›ฐŸ„œ€€€„ฌฅ„žผ‰€„Ÿฒœ„ ฌฃ„กŒฌฃ„ขผ‚€„ฃฐจ„คคฌฅ„ฅ ฒ„ฆˆช„งฐด„จธ„†„ฉฌ บ„ชˆŸฎ„ซฌ ผ„ฌผˆ€„ญฒœ„ฎฌฅ„ฏœ พ„ฐผ „ฑผ€„ฒ„ฌฅ„ณฒœ„ดฌณ„ตˆŸ”„ถ„ฌณ„ทฒœ„ธธฃ„นฐž†„บธฃ„„ปธฃŠ„ผ„ฌซ„ฝฌ ฟ„พฐ †„ฟ ณ„ž€ˆ„žผ€€„ž‚ฌด„žƒˆŸ”„ž„„ฌด„ž…ฐŸ„ž†ธ„ž‡ฐžฌ„žˆฌค„ž‰ผŠ€„žŠฐž„ž‹„ฌซ„žŒธŠ„ž„ฌค„žŽฐž‘„žธŠ„ž„ฌซ„ž‘ฌซ„ž’ผŠ€„ž“ฐžš„ž” ด„ž•ˆ„ž–ฐžฆ„ž—ฌซ„ž˜ฌ ด„ž™ฐžจ„žšฌค„ž›ผŠ€„žœฐž „ž„ฌซ„žžŒฌค„žŸฐž‘„ž ธ„„žกฌต„žขˆŸ”„žฃ”ก„žค„ฌต„žฅฐŸ„žฆฌซ„žง„ฌค„žจฌต„žฉˆŸ”„žช„ฌต„žซฐŸ„žฌธ‚„žญฐžธ„žฎธ‚‚„žฏ ต„žฐˆช„žฑฐžด„žฒธ‚„„žณฐŸ„žดฌถ„žตˆŸ”„žถ„ฌถ„žทฐŸ„žธธค„žนฐŸ‡„žบธค„„žปธคŠ„žผ„ฌก„žฝจก„žพผŠ€„žฟฐŸ„Ÿ€ˆ–‹„Ÿฌธ„Ÿ‚ˆŸ”„Ÿƒ„ฌธ„Ÿ„ฝ€€„Ÿ…ธค”„Ÿ†ฐŸ„Ÿ‡ธท„ŸˆฐŸŽ„Ÿ‰ธทŠ„ŸŠ„ญƒ„Ÿ‹ฟฟฟ„ŸŒ„ญ‚„ŸฐŸ„ŸŽธทŠ„Ÿ€€„Ÿผ€ˆ„Ÿ‘ ›„Ÿ’ธ€ข„Ÿ“ฒ€€„Ÿ”€€€„Ÿ•„ข„Ÿ–ฟฟถ„Ÿ—„ข„Ÿ˜  „Ÿ™„Ÿข„Ÿš ก„Ÿ›„Ÿฃ„Ÿœข„Ÿผ€ˆ„Ÿž„ข„ŸŸผ€„Ÿ ฐŸค„Ÿกกข„Ÿขœ€€„Ÿฃ„€€„ŸคŸข„Ÿฅœ ด„Ÿฆ„Ÿข„ŸงŸฃ„Ÿจœ ด„Ÿฉ„Ÿฃ„Ÿชคข„ŸซฐŸœ„Ÿฌฝ€€„ŸญฒŸ”„Ÿฎ€€€„Ÿฏ ผ„Ÿฐ„ฌฃ„Ÿฑฝ€€„ŸฒฒŸฎ„Ÿณ ถ„Ÿด„ ™„Ÿต ฑ„Ÿถˆช„Ÿทผˆ€„ŸธฐŸต„Ÿน ฒ„Ÿบˆช„Ÿปผˆ€„ŸผฐŸน„Ÿฝฌฒ„ŸพˆŸ”„Ÿฟ„ฌฒ„ €ฌณ„ ˆŸ”„ ‚„ฌณ„ ƒˆƒ„ „ฐŸ„ …ฐ ”„ † ท„ ‡„ š„ ˆ ณ„ ‰ˆช„ Šผˆ€„ ‹ฐ ˆ„ Œฌด„ ˆŸ”„ Ž„ฌด„ ฌธ„ ˆŸ”„ ‘„ฌธ„ ’ˆƒ„ “ฐŸ„ ”€€„ •„€„ – ›„ —ฐ€‘„ ˜€€€„ ™€€€„ š€€€„ ›€€€„ œ€€€„ €€€„ ž€€€„ Ÿ€€€„  œญ“„ ก„ญ“„ ข€€ž„ ฃ€ฎŽ„ ค€ฎฝ„ ฅ€ฟ€„ ฆ€จ–„ ง€ค‹„ จ€ญ†„ ฉ„ข’„ ชข’„ ซ€ขข„ ฌ‰ฎ„ ญ‰ด„ ฎ„€ „ ฏ„€ „ ฐ€€€„ ฑ€€„ ฒ€€‚„ ณ€€ƒ„ ด€€„„ ต€€…„ ถ€€†„ ท€€‡„ ธ€€ˆ„ น€€‰„ บ€€Š„ ป€€Œ„ ผ€€„ ฝ€€„ พ€€„ ฟ€€›„ก€€€ „ก€€ญ„ก‚€€ฟ„กƒ€„ก„€€ก„ก…€š„ก†€œ„ก‡€Ÿ„กˆ€ญ„ก‰€ฟ„กŠ€‚Š„ก‹€ƒฝ„กŒ€‡ฟ„ก€€„กŽ€ €„กผฟ„ก€€„ก‘ฟฒ„ก’ฟฟ„ก“‚€„ก”„€€„ก•„€„ก–‡€€„ก—‡ฟฟ„ก˜ˆ€€„ก™Œ€€„ก𐀀„ก›€„กœ˜€€„ก €€„กžจ€€„กŸฏฟฟ„ก ฐ€€„กกด€€„กขธ€€„กฃฟฟ€„กคฟฟฐ„กฅฟฟฝ„กฆฟฟฟ„ข’€ขข„ข“€ค„„ขข€ขค„ขฃ€€€„ขค€ขฆ„ขฅ€€€„ขฆ€ขจ„ขง€€€„ขจ€ขช„ขฉ€€€„ขช€ขฌ„ขซ€€€„ขฌ€ขฎ„ขญ€€€„ขฎ€ขฐ„ขฏ€€€„ขฐ€ขฒ„ขฑ€€€„ขฒ€ขด„ขณ€€€„ขด€ขถ„ขต€€€„ขถ€ขธ„ขท€€€„ขธ€ขบ„ขน€€€„ขบ€ขผ„ขป€€€„ขผ€ขพ„ขฝ€€€„ขพ€ฃ€„ขฟ€€€„ฃ€€ฃ‚„ฃ€€€„ฃ‚€ฃ„„ฃƒ€€€„ฃ„€ฃ†„ฃ…€€€„ฃ†€ฃˆ„ฃ‡€€€„ฃˆ€ฃŠ„ฃ‰€€€„ฃŠ€ฃŒ„ฃ‹€€€„ฃŒ€ฃŽ„ฃ€€€„ฃŽ€ฃ„ฃ€€€„ฃ€ฃ’„ฃ‘€€€„ฃ’€ฃ”„ฃ“€€€„ฃ”€ฃ–„ฃ•€€€„ฃ–€ฃ˜„ฃ—€€€„ฃ˜€ฃš„ฃ™€€€„ฃš€ฃœ„ฃ›€€€„ฃœ€ฃž„ฃ€€€„ฃž€ฃ „ฃŸ€€€„ฃ €ฃข„ฃก€€€„ฃข€ฃค„ฃฃ€€€„ฃค€ฃฆ„ฃฅ€€€„ฃฆ€ฃจ„ฃง€€€„ฃจ€ฃช„ฃฉ€€€„ฃช€ฃฌ„ฃซ€€€„ฃฌ€ฃฎ„ฃญ€€€„ฃฎ€ฃฐ„ฃฏ€€€„ฃฐ€ฃฒ„ฃฑ€€€„ฃฒ€ฃด„ฃณ€€€„ฃด€ฃถ„ฃต€€€„ฃถ€ฃธ„ฃท€€€„ฃธ€ฃบ„ฃน€€€„ฃบ€ฃผ„ฃป€€€„ฃผ€ฃพ„ฃฝ€€€„ฃพ€ค€„ฃฟ€€€„ค€€ค‚„ค€€€„ค‚€ค„„คƒ€€€„ค„€€€„ค…€€€„คˆ†จฏ„ค‰Œฟ „คŠŽ€€„คฉŒ€„คชธ›‚„คซธ€ข„คฌธ€ค„คญพฐ€„คฎธข†„คฏˆ–‹„คฐพคˆ„คฑˆ–’„คฒฝ€€„คณˆ‘ท„คด€ฐ€„คตˆŽผ„คถ€ฟ€„คท€ญ„„คธ€€„คน ณ„คบˆ—ค„คป€ ฌ„คผˆ’ฑ„คฝˆ˜”„คพฝ€€„คฟˆšป„ฅ€€€„ฅ€€„ฅ‚ฑ€€„ฌ€ฌ„ฌญ€€„ญ“‹ˆ€„ญ”€€„ญ•€€€„ญ–€€€„ญ—ƒˆ „ญ˜€€€„ญ™€€€„ญš€€€„ญ›ƒ‰€„ญœ€€€„ญ€€€„ญž€€€„ญŸƒ‰ „ญ €€€„ญก€€€„ญข€€€„ญฃƒŠ€„ญค€€€„ญฅ€€€„ญฆ€€€„ญงƒŠ „ญจ€€€„ญฉ€€€„ญช€€€„ญซƒ‹€„ญฌ€€€„ญญ€€€„ญฎ€€€„ญฏƒ‹ „ญฐ€€€„ญฑ€€€„ญฒ€€€„ญณƒŒ€„ญด€€€„ญต€€€„ญถ€€€„ญทƒŒ „ญธ€€€„ญน€€€„ญบ€€€„ญป€€€„ญผ€€€„ฎ†ฟฟฟ„ฎ‡€€„ฎˆ€€ƒ„ฎ‰€ญ“„ฎŠ€€€„ฎ‹€€€„ฎŒ€€€„ฎ€€€„ฎฌ€€€„ฎญ€€„ฏ“€€€ผ€ 
\ No newline at end of file
diff --git a/binaries/alt/a.rim b/binaries/alt/a.rim
new file mode 100644
index 0000000..3ad059c
--- /dev/null
+++ b/binaries/alt/a.rim
@@ -0,0 +1 @@
+„€€ผ€ „€ฐœ‡„€‡ฟฟฟ„€€€š„€‘ธ€‚„€’„ฎ™„€“€„€”„€š„€•€™„€–„€„€—ฎ™„€˜ฐ€›„€™€€š„€š€€€„€›ธ€‚„€œ„ฎ™„€ดˆ‚„€ž„ฎš„€Ÿ€ˆ„€ „ฎ›„€ก€‰„€ข„ฎœ„€ฃˆŽท„€ค€€Š„€ฅ€ฎ„€ฆ€€†„€ง€š„€จ„ฎฃ„€ฉฟฟฟ„€ช„ บ„€ซ„ ถ„€ฌฌผ„€ญˆŽฃ„€ฎ€กŽ„€ฏ€ก€„€ฐˆž„€ฑธ€ข„€ฒฟฟฟ„€ณœฎฃ„€ดˆŽ„€ตˆŽฃ„€ถ€กฑ„€ท€‚ฎ„€ธฐ‰ฆ„€นœ‚„€บ„€ป„€ปฒ€€„€ฐฅ‡„ˆ’ฌ„‚Œฎ™„ƒธ€ข„„ บ„…ผ‚€„†ฐŽ„‡ˆŽท„ˆ€ญข„‰€ฟ€„Š€€„‹ฝ€€„Œˆ‘ฒ„€ธ€„ŽŒ ถ„ˆƒ„ผˆ€„‘ฐ‰ฉ„’ˆŽท„“€ฎ„”€€Š„•€€†„–ฎœ„—„€‰„˜ฎ›„™„€ˆ„šฎš„›ต€„œฎ™„ฒฎฃ„ž€€€„Ÿธ€ข„ ˆˆถ„ก€€ƒ„ขฐฉ„ฃˆˆถ„ค€€„ฅผˆ€„ฆฐ „งŒก€„จฐ‚„ฉ„ข…„ชˆˆถ„ซ€€‚„ฌฐฑ„ญˆˆถ„ฎ€€„ฏฐฑ„ฐฐฟ„ฑž„ฒ„ฎจ„ณธ€‚„ดกธ„ตžฎง„ถ†ฎง„ทธ€ข„ธˆ’ท„น€ธ€„บฏŠ„ปผŠ€„ผฐฟ„ฝพคฆ„พˆ–„ฟธ€‚„‚€กพ„‚žข…„‚‚†ข…„‚ƒธ€ข„‚„ˆ’ท„‚…€ฐ€„‚†ฎจ„‚‡„ž„‚ˆกœ„‚‰„ก€„‚АฏŠ„‚‹ผ‚€„‚Œˆ–„‚Œฌผ„‚Žธ€‚„‚ฒž„‚ฐ‚„‚‘€‰ฉ„‚’€„–„‚“€†–„‚”€‡”„‚•€‡ป„‚–€†ฐ„‚—€„™„‚˜€„ฑ„‚™€‡„‚š€„ท„‚›€…ข„‚œ€…ฑ„‚€…ท„‚ž€‰ณ„‚Ÿ€†ˆ„‚ €‚ฏ„‚ก€†„‚ข€„‡„‚ฃ€„‘„‚ค€‰ฆ„‚ฅ€‚ฒ„‚ฆ€‰ฆ„‚ง€ƒฟ„‚จ€„ƒ„‚ฉ€ƒช„‚ช€‰ฆ„‚ซ€Š•„‚ฌ€‰ฟ„‚ญ€‰‰„‚ฎ‚€„‚ฏฎ™„‚ฐ„ฏ‹„‚ฑฐ‚„‚ฒฎ™„‚ณจกฐ„‚ดˆŽฃ„‚ต€ก„‚ถ€ƒ„‚ทˆ™„‚ธœ‚ฝ„‚น„‚บ„‚บ€€„‚ป„ฎ™„‚ผฐƒ„‚ฝ‚ฝ„‚พ€˜„‚ฟ€ฏš„ƒ€€ฎ™„ƒ€ญข„ƒ‚€Žท„ƒƒ€Š„ƒ„€Žฃ„ƒ…€‘Ž„ƒ†€‘ฆ„ƒ‡€ฟ€„ƒˆ€ญš„ƒ‰€—Ÿ„ƒŠ€ฌพ„ƒ‹€ฅ„ƒŒ€Ž„„ƒ€ญž„ƒŽ€ญ „ƒ€€‘„ƒ€€€„ƒ‘ ถ„ƒ’ผ‚€„ƒ“ฒƒ„ƒ” ท„ƒ•ผŠ€„ƒ–ฐƒ™„ƒ—ฌฎฎ„ƒ˜ฐƒก„ƒ™ ธ„ƒšผŠ€„ƒ›ฒƒ„ƒœฌฎฎ„ƒผˆ€„ƒžฒƒ„ƒŸŒ ธ„ƒ ฐƒข„ƒกŒ ท„ƒขฏ‹„ƒฃผ‚€„ƒคฒƒ„ƒฅฟฟฟ„ƒฆ„ ถ„ƒงธ€ข„ƒจคƒ„ƒฉฒƒ„ƒชˆ–•„ƒซ„ƒฎ„ƒฌฎฆ„ƒญˆ—Ÿ„ƒฎ€€€„ƒฏˆ™„ƒฐˆ˜„ƒฑฎ™„ƒฒจกฐ„ƒณˆŽฃ„ƒด€กฎ„ƒต€กฏ„ƒถˆ™„ƒท„ƒบ„ƒธˆŽท„ƒน€ฏš„ƒบ€€€„ƒป€€Œ„ƒผฏง„ƒฝ†€‰„ƒพฐ‚„ƒฟฎ™„„€„ฏŠ„„ˆ–„„‚ฐƒ„„ƒŒฏŠ„„„พคฆ„„…ˆ–„„†ฐƒ„„‡ˆ–ด„„ˆฎ™„„‰จก›„„Šต€„„‹ฏš„„Œจข‚„„ด€‚„„Ž„ฏš„„ˆ˜ฆ„„ฐ‚„„‘ˆ–ด„„’ฎ™„„“„ฏข„„”ˆ˜ฆ„„•ฐ‚„„–ฎค„„—„ฎ™„„˜ฐƒ„„™ˆ–ฅ„„šœฎฉ„„›ผ‰€„„œˆ™„„ต€„„žฏฏ„„Ÿจก„„ ผŠ€„„กˆ„จ„„ขดˆ‚„„ฃˆŽฃ„„ค€กŽ„„ฅ€ฏค„„ฆˆœ‚„„งฐ„ญ„„จดˆ‚„„ฉˆŽฃ„„ช€กŽ„„ซ€ฏค„„ฌฏค„„ญ„ฏฐ„„ฎ„ฎ™„„ฏˆ”‚„„ฐฐƒ„„ฑˆ–ฅ„„ฒผ€„„ณœก„„ดœฎฉ„„ต„ฎ™„„ถฐƒ„„ทˆ–•„„ธ„„ฟ„„นˆ–•„„บ„…‚„„ปˆ–•„„ผ„…†„„ฝฎฆ„„พˆ—Ÿ„„ฟ€€€„…€ˆ™„…ˆ—Ÿ„…‚€€€„…ƒˆ™„…„„ฎฉ„……ˆŽท„…†€€€„…‡€ญ„„…ˆ€€„„…‰ฎฆ„…Šˆ—Ÿ„…‹€ญ„„…Œผˆ€„…ˆ™„…ސก„…„ญ€„…ˆ“Š„…‘ˆ”ณ„…’ฎฉ„…“ˆ˜„…”ฏ™„…•„ฏง„…–ˆŽท„…—€ญ„„…˜€ฏจ„…™€€„„…šฏฅ„…›„ฏฌ„…œฟฟฟ„…œฏฃ„…ž„ฏฃ„…Ÿˆ˜ฆ„… ˆ™ž„…กฐ‚„…ขˆ–™„…ฃ„ฎฉ„…คก„…ฅ„ญ€„…ฆˆ“Š„…งŒฏง„…จˆ™ž„…ฉฎฉ„…ชˆ˜„…ซคฏฃ„…ฌฐ…ฏ„…ญˆ–ฝ„…ฎŒฏš„…ฏˆ˜ฆ„…ฐฐƒ„…ฑฎค„…ฒผ€„…ณˆ™„…ดฎ™„…ต„ฎค„…ถฐƒ„…ทˆ–•„…ธ„…ฝ„…นˆ–•„…บ„†ƒ„…ปฎฆ„…ผˆ—Ÿ„…ฝ€€€„…พˆ™„…ฟก„†€„ญ€„†ˆ“Š„†‚ˆŽท„†ƒ€€€„†„€ฏจ„†…€€„„††ˆ™ž„†‡ฐ‚„†ˆญฏ„†‰„ฎ™„†Šญฐ„†‹„ฎš„†Œฐƒ„†ˆ–™„†Žˆ˜„†ฏš„†จกœ„†‘ผŠ€„†’ˆ™„†“ฏ™„†”„ฎฆ„†•ฐ‚„†–ˆ–•„†—„† „†˜ˆ–•„†™ผ‚€„†šก„†›ผŠ€„†œก„†„ญ€„†žฎฆ„†Ÿˆ—Ÿ„† €€€„†กˆ™„†ขˆ˜„†ฃˆ“Š„†คฏš„†ฅจกœ„†ฆผŠ€„†งฐ‡„†จญ€„†ฉจก„†ชผŠ€„†ซฐ‡„†ฌฎค„†ญผ€„†ฎˆ™„†ฏฐ‡„†ฐก„†ฑ„ญ€„†ฒˆ–•„†ณ„†ต„†ดˆŽท„†ต€€€„†ถ€ญ„„†ท€€„„†ธฎฆ„†นˆ—Ÿ„†บ€ญ„„†ปฐ‡‰„†ผˆ˜„†ฝˆ“Š„†พฏš„†ฟจกœ„‡€ผŠ€„‡ฐ‡…„‡‚ฎค„‡ƒผ€„‡„ˆ™„‡…ˆ–ฝ„‡†ฝ€€„‡‡ˆœ‚„‡ˆฐ‡„‡‰ˆ“Š„‡Šฎ™„‡‹จก›„‡Œˆ”ฝ„‡ˆ“—„‡Žˆ™„‡ฐƒ„‡ˆ›ธ„‡‘Œฏฏ„‡’ˆ”‚„‡“ฐƒ„‡”ˆ–•„‡•จกฐ„‡–„ฎฉ„‡—ˆ–•„‡˜„ฎช„‡™ฎฉ„‡šˆŽฃ„‡›€กฎ„‡œ€กฐ„‡ˆ™„‡žœฎช„‡ŸˆŽฃ„‡ €ฎฉ„‡ก€กฐ„‡ขˆ™„‡ฃ„ฎซ„‡คˆ›ธ„‡ฅฏฏ„‡ฆจก„‡งผ‚€„‡จˆ™„‡ฉฏš„‡ชจกž„‡ซผŠ€„‡ฌฐ‡ฒ„‡ญธ€‚„‡ฎฏ™„‡ฏœ‹”„‡ฐ„‡ฑ„‡ฑฒ€€„‡ฒฎฉ„‡ณ„‡ธ„‡ดฎช„‡ต„‡น„‡ถฏฐ„‡ทˆšถ„‡ธ€€€„‡น€€€„‡บฐˆœ„‡ปˆ–•„‡ผจกฐ„‡ฝ„ฎฉ„‡พˆ–•„‡ฟ„ฎช„ˆ€œฎฉ„ˆˆŽฃ„ˆ‚€ฎฉ„ˆƒ€กฐ„ˆ„ˆ™„ˆ…„ฎซ„ˆ†ˆ›ธ„ˆ‡ฏฏ„ˆˆจก„ˆ‰ผŠ€„ˆŠˆ™„ˆ‹ฏš„ˆŒจกž„ˆผŠ€„ˆŽฐˆ”„ˆธ€‚„ˆฏ™„ˆ‘œ‹”„ˆ’„ˆ“„ˆ“ฒ€€„ˆ”ฎฉ„ˆ•„ˆš„ˆ–ฎช„ˆ—„ˆ›„ˆ˜ฏฐ„ˆ™ˆšฏ„ˆš€€€„ˆ›€€€„ˆœ„ฎ™„ˆœฏฐ„ˆž„ฏฐ„ˆŸˆ˜ฆ„ˆ ˆ”‚„ˆกฐƒ„ˆข€€€„ˆฃ’ˆข„ˆค„ข‡„ˆฅฟฟถ„ˆฆ„ข†„ˆงพญฐ„ˆจ„€ˆ„ˆฉ’€ˆ„ˆช„ญŒ„ˆซ’€ˆ„ˆฌ„ญ„ˆญ’€ˆ„ˆฎ„ญŽ„ˆฏ’€ˆ„ˆฐ„ญ„ˆฑŠข‡„ˆฒคข†„ˆณฐˆฉ„ˆดคˆข„ˆตฒˆข„ˆถ€€€„ˆทˆˆข„ˆธ€ˆผ„ˆนคˆถ„ˆบคˆถ„ˆปฒˆถ„ˆผ€€€„ˆฝญŒ„ˆพผˆ„ˆฟผˆ„‰€จก•„‰ฎˆถ„‰‚ผˆ€„‰ƒฒˆผ„‰„ฟฟฝ„‰…œ€ˆ„‰†จกฐ„‰‡คˆถ„‰ˆฒˆถ„‰‰ˆˆถ„‰Š€€€„‰‹ผˆ€„‰Œˆ™„‰„ขˆ„‰Žคญ‹„‰ญ‹„‰„ฎ™„‰‘พƒ„‰’„ฎจ„‰“กธ„‰”žฎง„‰•†ฎง„‰–ˆ’ท„‰—€ธ€„‰˜ขˆ„‰™„ฎง„‰šกถ„‰›–ฎง„‰œ†ฎง„‰ฎฅ„‰ž„ฎ™„‰Ÿญ‹„‰ „ฎฅ„‰กคขˆ„‰ข†ขˆ„‰ฃคฎฃ„‰คŒฏ‹„‰ฅฐƒ„‰ฆธ€ค„‰งฟฟฟ„‰จ„€‡„‰ฉก„‰ชˆ˜„‰ซฝ€€„‰ฌˆšฏ„‰ญ€€„‰ฎ€€„‰ฏˆšฏ„‰ฐ€ฎ™„‰ฑ€€„‰ฒˆ˜ฆ„‰ณฏŠ„‰ดผŠ€„‰ตฐ‰ธ„‰ถพคฆ„‰ทˆ–„‰ธˆ‹„„‰น’ฎง„‰บจกต„‰ป†ฎง„‰ผคฎง„‰ฝŽฎง„‰พˆž„‰ฟˆ‹„„Š€กถ„Ёžฎง„Š‚†ฎง„Šƒพ€‚„Š„œฎง„Š…„ข‰„Іฟฟฟ„Ї†ข‰„Šˆˆž„Љพ€‚„ŠŠœฎง„Š‹„ข‰„ŠŒ’ข‰„Šผ€„ŠŽ„ฎ™„ŠŽข‰„Аคข‰„Š‘’ข‰„Š’„ฎš„Š“Žข‰„Š”ฐƒ„Š•ฎ™„Š–ผ‹€„Š—ˆ™„Š˜ˆˆข„Š™€ŠŸ„Ššพ€‚„Š›œฎง„Šœ„ขŠ„ŠŽขŠ„Šžˆ™„ŠŸ€€€„Š ญ„Šกฌฎ™„Šขผˆ€„ŠฃฒŠŸ„ŠคญŽ„Šฅฌข„„ŠฆฐŠต„Šงกถ„Šจžฎง„Šฉ†ฎง„Šชพ€‚„Šซœฎง„Šฌ„ขŠ„Šญฎ™„Šฎ†ขŠ„Šฏˆž„Šฐพ€‚„Šฑœฎง„Šฒ„ขŠ„ŠณŽขŠ„ŠดฐŠ•„Šตฟฟฝ„Šถœ€ˆ„Šท„ขŠ„Šธข€„ŠนžขŠ„Šบ†ขŠ„ŠปคขŠ„ŠผคขŠ„Šฝฎฅ„Šพผ€„Šฟ†ขŠ„‹€คขŠ„‹ฎš„‹‚†ขŠ„‹ƒฐ‚„‹„€€€„‹…ˆˆข„‹†€‹ˆ„‹‡ฒ‹„„‹ˆ€€€„‹‰ฎฅ„‹ŠฌญŽ„‹‹ผˆ€„‹Œฒ‹ˆ„‹ฟฟฝ„‹Žœ€ˆ„‹„ข‹„‹ข€„‹‘žข‹„‹’†ข‹„‹“ฒ‹ˆ„‹”ฒ‹„‹•€‹ž„‹–€‹Ÿ„‹—€Œˆ„‹˜€Œฑ„‹™€‹ž„‹š€‹ž„‹›€‹ฏ„‹œ€Œฉ„‹€Œฝ„‹žˆ’ฌ„‹Ÿˆ„‹ ก„‹กˆฅ„‹ขฐ‹ซ„‹ฃจกง„‹คˆŽฃ„‹ฅ€กก„‹ฆ€กฃ„‹งผˆ€„‹จœกž„‹ฉถ‡‰„‹ชฐ“„‹ซˆ”œ„‹ฌ€ญ„‹ญˆž„‹ฎฐ‹Ÿ„‹ฏˆ„‹ฐˆ”Š„‹ฑผŠ€„‹ฒฐ”•„‹ณต€„‹ดญ‘„‹ตผ‰€„‹ถฐ‹พ„‹ท”กป„‹ธ„ญ‘„‹นดˆ‚„‹บธ„†„‹ปฌก˜„‹ผˆ Œ„‹ฝฐ”•„‹พดˆ‚„‹ฟ„ญ‰„Œ€ก„Œˆ˜„Œ‚ผˆ€„Œƒฐ”•„Œ„ˆ”œ„Œ…€ญ‘„Œ†ˆž„Œ‡ฐ‹ฏ„Œˆˆ„Œ‰ก‘„ŒŠˆฅ„Œ‹ฐŒฅ„ŒŒต€„Œจกฆ„ŒŽฌกŸ„ŒฐŒ•„Œดˆ‚„Œ‘จกฅ„Œ’ฌกค„Œ“ผˆ€„Œ”ฐŒ˜„Œ•ดˆ‚„Œ–”กœ„Œ—ต€„Œ˜ดˆ‚„Œ™„ฎซ„Œšˆ„Œ›ฎซ„Œœˆ• „ŒฐŒข„Œžˆ”œ„ŒŸ€ญ–„Œ ˆž„ŒกฐŒš„Œขฎซ„Œฃถ‡‰„Œคฐ“„Œฅˆ”œ„Œฆ€ญ’„Œงˆž„ŒจฐŒˆ„Œฉˆ„Œชˆ”Š„Œซˆ• „Œฌฐ”•„Œญˆ”œ„Œฎ€ญ–„Œฏˆž„ŒฐฐŒฉ„Œฑก’„Œฒˆฅ„ŒณฐŒถ„Œดถ‡‰„Œตฐ“„Œถญ“„Œทผ€„Œธธ„„Œนˆ”œ„Œบ€ญ“„Œปˆž„ŒผฐŒฑ„Œฝˆ”Š„ŒพผŠ€„Œฟฐ”•„€ต€„ญ”„‚ผ‰€„ƒฐ‰„„”กป„…„ญ”„†ดˆ‚„‡ธ‚„„ˆฐ”•„‰ดˆ‚„Š„ญ‰„‹ก“„Œˆ˜„ผˆ€„Žฐ”•„ˆ”œ„€ญ”„‘ˆž„’ฐŒฝ„“ฌกฌ„”ฐ‚„•†ฎฉ„–ก„—„ฎ™„˜ฐƒ„™€€€„šฟฟฟ„›„ฎ™„œฐƒ„€€€„žŒ ถ„Ÿˆƒ„ ผˆ€„กฐ‰ฉ„ขฟฟฟ„ฃ„ ถ„คฒ„ฅ€€€„ฆฟฟฟ„งœญฃ„จผ‰€„ฉฐถ„ช„ญฃ„ซœก†„ฌˆŽ„ญ„ขŒ„ฎˆŠ„ฏ€ฟ€„ฐ€€„ฑขŒ„ฒˆ‘ฆ„ณŒ บ„ดขŒ„ตฒฅ„ถญข„ทผŠ€„ธˆ’ฌ„น„ญค„บˆ‘Ž„ปฟ€„ผ„ญข„ฝˆŽท„พ€ฟ„ฟ€ญฅ„Ž€€€‰„ށก˜„Ž‚„ญฃ„Žƒฐฆ„Ž„€€€„Ž…ต€„ކญฃ„އฌก˜„Žˆฐސ„މœก†„ŽŠ„ขŒ„Ž‹ดˆ‚„ŽŒ†ขŒ„ŽŒ บ„ŽŽคญฃ„ŽฒŽ„„ސญข„Ž‘„ฟ€„Ž’ˆŽท„Ž“€ญฅ„Ž”€ฟ„Ž•€€‰„Ž–ดˆ‚„Ž—„ญข„Ž˜ˆ‘ฆ„Ž™Œ บ„Žšก„Ž›„ญฃ„ŽœฒŽ„„Ž€€€„Žžจกฐ„ŽŸœกธ„Ž „Žก„Žก€€„ŽขฒŽ„Žฃ€€€„Žคต„„Žฅ’Žฃ„Žฆ„ข„ŽงคŽฃ„Žจดˆ‚„Žฉžข„Žชผ€„ŽซฐŽณ„Žฌ’Žฃ„Žญ„ข„ŽฎคŽฃ„Žฏดˆ‚„Žฐžข„Žฑผ€„Žฒผ‹€„ŽณคŽฃ„Žดดˆ‚„Žตผ€„ŽถฒŽฃ„Žท€€€„Žธฟฟฟ„ŽนžŽท„Žบ„€ˆ„ŽปคŽท„Žผฟฟฟ„ŽฝžŽท„Žพ„€‰„ŽฟคŽท„€ฟฟฟ„žŽท„‚ผ€„ƒ„ข„„คŽท„…’€ˆ„††€‰„‡คข„ˆฐ…„‰ฒŽท„Š€€€„‹ฟฟฟ„ŒžŠ„„€ˆ„ŽคŠ„ฟฟฟ„žŠ„‘ผ€„’„ข„“คŠ„”Ž€ˆ„•คข„–ฐ”„—ฒŠ„˜€€€„™„ขŽ„šฝ€€„›ˆฏ„œฒ˜„œกณ„ž„ข„ŸขŽ„ ˆ‰„กญ‰„ข„ฃ„ฃค˜„คฒ˜„ฅ€€€„ฆˆฏ„งฒฅ„จœกน„ฉ„ฌ„ชฝ€€„ซˆ‰„ฌฃ„ญคฅ„ฎฒฅ„ฏ€€€„ฐผ ˆ„ฑœกˆ„ฒ„น„ณœกฟ„ด„…„ตœก„ถ„„„ทœกผ„ธ„ฝ„นขฐ„บผŠ€„ปฒฏ„ผ„ญˆ„ฝฌขฑ„พฐƒ„ฟœกธ„€„„ฃ€„‚ฐ…„ƒฝ€€„„„ขฑ„…„ขฐ„†คฏ„‡ญˆ„ˆฒฏ„‰€€€„Šผ ˆ„‹œก‡„Œ„š„œก„Ž„›„œกท„„‘„‘ขฏ„’ผŠ€„“ฐ™„”œกฒ„•„—„–ญˆ„—„ฃ€„˜ฐ›„™ญˆ„š„ขฐ„›„ขฑ„œฒ‰„€€€„ž„ข‘„Ÿฟฟผ„ „ข„กพจท„ข„ข„ฃข‘„คฌข„ฅฒ„ฆพ„งœข„จคข„ฉคข„ชฐฃ„ซค„ฌฒ„ญ€€€„ฎฝ€€„ฏˆ„ฐฐณ„ฑพจท„ฒ„ข„ณข„ด„‘€„ตœกก„ถ„ฟ„ทผ€„ธœก„นœฌป„บจกฐ„ปผŠ€„ผฐ‘‚„ฝ„‘„พˆŽท„ฟ€€€„‘€€€€„‘€€€„‘‚ฟพฟ„‘ƒœฌป„‘„„ข„‘…œก„‘†„‘‹„‘‡ญŠ„‘ˆ†ข„‘‰ˆŽท„‘Š€ฟ€„‘‹€€€„‘Œ€€„‘ฒญ„‘Ž€€€„‘ˆŽฃ„‘€ก„‘‘€กญ„‘’ˆ’ฌ„‘“ฌญŠ„‘”ฒ‘Ž„‘•„ญŠ„‘–ˆ„‘—ฐ‘œ„‘˜ญŠ„‘™ˆ‘ฒ„‘š€ฐ€„‘›ฐ‘ค„‘œŽข„‘พ€„‘žœข„‘Ÿ„‘ก„‘ ˆŽท„‘ก€€€„‘ข€ฟ€„‘ฃ€€„‘คˆญ„‘ฅฒ‘Ž„‘ฆ€€€„‘งˆŽฃ„‘จ€ก„‘ฉ€กญ„‘ชˆ’ฌ„‘ซˆ‘ฒ„‘ฌ€ธ€„‘ญญŠ„‘ฎˆ„‘ฏŽข„‘ฐˆญ„‘ฑฒ‘ฆ„‘ฒ€€€„‘ณ„ญŠ„‘ดผ €„‘ตต›“„‘ถ€„‘ท„ข’„‘ธดˆ‚„‘นต›“„‘บ€€Š„‘ป„ข“„‘ผด†–„‘ฝ”ข“„‘พด‡ˆ„‘ฟ„ข“„’€ข’„’ต›“„’‚€€Š„’ƒ„ข’„’„ด†–„’…”ข’„’†”ข“„’‡”กธ„’ˆ„ข’„’‰ˆ’„’Šฟฟ€„’‹€ฟ€„’Œ€ข’„’€‘ฒ„’Žค‘ฒ„’ฒ‘ฒ„’€€€„’‘ฟฟถ„’’„ข“„’“ฟฟฟ„’”œ’„’•„€Œ„’–ธนก„’—’€Œ„’˜ธน”„’™’€Œ„’šธนข„’›’€Œ„’œˆŽ„’ธน„„’žŒ ผ„’Ÿ’€Œ„’ ˆŽ„’กˆŽ„’ขธนค„’ฃ ผ„’คผŠ€„’ฅฐ’ฃ„’ฆ ฝ„’งผ€„’จฒ€Œ„’ฉคข“„’ชฐ’“„’ซˆ’ฌ„’ฌ€€€„’ญคข”„’ฎฐ’ญ„’ฏธ€‚„’ฐผ€ „’ฑˆŽท„’ฒพ€€„’ณ€€„’ด€€„’ตผ€ „’ถฐ’ต„’ท€€€„’ธผ €„’นด‡ƒ„’บ„ข•„’ปˆ’„’ผฟฟ€„’ฝ€ฎ™„’พ€ข•„’ฟ€’ท„“€ข•„“œกœ„“‚„ข•„“ƒˆ’„“„ฟ€€„“…€€„“†€ข•„“‡€’ท„“ˆค’ท„“‰ฒ’ท„“Š€€€„“‹ฏš„“Œต€„“ฎค„“Žผ‰€„“ฒ“Š„“ฌฏข„“‘ด…‚„“’ดˆ‚„““จญ€„“”ผ‚€„“•ฒ“Š„“–ˆ™„“—€€€„“˜ฟฟถ„“™„ข–„“šข–„“›œก˜„“œˆ“ฐ„“ˆ’ฌ„“žฏฏ„“Ÿผ€„“ ฐ“ค„“กคข–„“ขฐ“š„“ฃฒ“—„“คญ€„“ฅ”กป„“ฆ„ฏฏ„“งฏ™„“จ„ฏฑ„“ฉข–„“ชœก˜„“ซ„ฎ™„“ฌŒฏฐ„“ญˆ”‚„“ฎค“—„“ฏฒ“—„“ฐ€€€„“ฑˆŽฃ„“ฒ€กŽ„“ณ€ก—„“ดฒ“ฐ„“ตผ €„“ถต™’„“ท€€ƒ„“ธดˆ‚„“นœก„“บ„ข—„“ป„“ฝ„“ผˆŽท„“ฝ€€€„“พ€ฏฏ„“ฟ€€ƒ„”€ค“ฐ„”ฒ“ฐ„”‚€€€„”ƒข—„”„„”‡„”…ˆŽท„”†€ฏฏ„”‡€€€„”ˆ€€ƒ„”‰ฒ”‚„”Š€€€„”‹ฎฉ„”Œฌฎซ„”ฐ”™„”ސฎฉ„”ผ€ˆ„”’ฎฉ„”‘ผ„€„”’ด…‰„”“จกช„””ฒ”Š„”•ฎฉ„”–˜กป„”—„ฎฉ„”˜ฐ”‹„”™ฎช„”š„ฎ™„”›ฐƒ„”œ€€€„”พญฐ„”ž„€ˆ„”Ÿกธ„” ต€„”ก’ฎง„”ขฎ€ˆ„”ฃฐ”ช„”คค€ˆ„”ฅค€ˆ„”ฆค€ˆ„”งฝ€€„”จด…„”ฉฐ”ก„”ชœกถ„”ซ†ฎง„”ฌ’”œ„”ญ„ข˜„”ฎ’ข˜„”ฏด€‚„”ฐ†ข˜„”ฑค”œ„”ฒฒ”œ„”ณ€€€„”ดŒฏฆ„”ตผˆ€„”ถคฏฆ„”ทฏฆ„”ธˆ™„„”นฏง„”บผ‚€„”ปฐ”ถ„”ผฒ”ณ„”ฝ€€€„”พ„ข™„”ฟˆ”ณ„•€กœ„•„ฏ™„•‚คฏ™„•ƒฏ™„•„ˆ˜„•…ฏš„•†ผ‰€„•‡ฐ•‚„•ˆฏ™„•‰„ฏง„•ŠˆŽท„•‹€ญ„„•Œ€ฏจ„•€€„„•Žคญฎ„•ญฎ„•„ฏฌ„•‘„ฏฅ„•’ข™„•“”กป„•”„ฏš„••ฎค„•–„ฏข„•—ฟฟฟ„•˜„ฏฃ„•™Œฏค„•šˆŠ„•›€ฏ›„•œ€€‡„•ˆ˜ฆ„•žˆ™ž„•Ÿฒ”ฝ„• €€€„•กจกง„•ขผŠ€„•ฃฒ• „•คฌก™„•ฅฐ•ฐ„•ฆต€„•งฌก˜„•จˆ•ผ„•ฉ’คค„•ชฌกป„•ซฐ•ฒ„•ฌด€‚„•ญ†คค„•ฎคคค„•ฏฒ• „•ฐˆ–†„•ฑฒ• „•ฒคค„•ณฌก„„•ดฐ–‚„•ต„€ˆ„•ถกป„•ท†€ˆ„•ธฝ€€„•นถ†™„•บ†คค„•ปฒ• „•ผ€€€„•ฝคฅ„•พฌกข„•ฟฐ–‚„–€คคฅ„–ฒ•ผ„–‚กซ„–ƒธค”„–„ค• „–…ฒ• „–†€€€„–‡ก…„–ˆ„คค„–‰กป„–Š„คฉ„–‹Œคฅ„–Œฒ–†„–€€€„–Žธ€‚„–ธ…„–„ฌฝ„–‘ฟฟฟ„–’„ญž„–“ธ€ข„–”ฒ–„–•€€€„––’ฎฃ„–—คฎฃ„–˜ฒ–•„–™€€€„–šˆ–•„–›„–„–œˆŽท„–€€€„–ž€ญ„„–Ÿ€€„„– ฎฆ„–กˆ—Ÿ„–ข€ญ„„–ฃˆ™„–คฒ–™„–ฅ€€€„–ฆˆ–•„–ง„ฎฉ„–จˆ–•„–ฉ„ฎซ„–ชˆ›ธ„–ซฎซ„–ฌผŠ€„–ญฒ–ฅ„–ฎฌก„–ฏฐ–ฒ„–ฐฏค„–ฑฒ–ฅ„–ฒฏฐ„–ณฒ–ฅ„–ด€€€„–ตˆ–™„–ถˆ˜„–ทฎค„–ธผ€„–นฌฏข„–บผˆ€„–ปˆ™„–ผฒ–ด„–ฝ€€€„–พฟฟน„–ฟ„ขš„—€ก‚„—„ข›„—‚’ข›„—ƒผŠ€„—„ฐ—˜„—…ฏš„—†จกธ„—‡ผŠ€„—ˆฐ—•„—‰ฟฟ€„—Š„ขœ„—‹กƒ„—Œ„ข„—’ข›„—Žˆ‘Ž„—’ข„—ผ‚€„—‘ˆŽ„„—’คข„—“คขœ„—”ฐ—„—•’ข›„—–ˆŽ„„——Žข›„—˜คข›„—™คขš„—šฐ—‚„—›ฏš„—œจกฝ„—„ฏš„—žฒ–ฝ„—Ÿ€€€„— ˆ˜„—กฟฟฟ„—ขž—Ÿ„—ฃ„ขŸ„—คค—Ÿ„—ฅฏš„—ฆจกœ„—งผŠ€„—จฒ—Ÿ„—ฉฟฟธ„—ชœฏค„—ซผ€„—ฌถ…ƒ„—ญ„ขž„—ฎผŠ€„—ฏฒ—Ÿ„—ฐŒฏฆ„—ฑฏฆ„—ฒˆ™„„—ณฏง„—ดผŠ€„—ตฐ˜‹„—ถขŸ„—ท„€ˆ„—ธฏจ„—นฎ€ˆ„—บผˆ€„—ปฐ˜‹„—ผฏฉ„—ฝฎ€ˆ„—พผˆ€„—ฟฐ˜‹„˜€ฏช„˜ฎ€ˆ„˜‚ผˆ€„˜ƒฐ˜‹„˜„ฏซ„˜…ฎ€ˆ„˜†ผˆ€„˜‡ฐ˜‹„˜ˆฏง„˜‰ค—Ÿ„˜Šฒ—Ÿ„˜‹คฏฆ„˜Œคขž„˜ฐ—ฑ„˜Žฒ—Ÿ„˜€€€„˜„ฏ™„˜‘ผ €„˜’ต›“„˜“€€…„˜”„ข „˜•ดˆ‚„˜–œก„˜—„ขก„˜˜ˆ‘Ž„˜™ข „˜šผ €„˜›ต™’„˜œ€€Œ„˜ดˆ‚„˜žœกƒ„˜Ÿ„ข „˜ „˜ข„˜กˆŽท„˜ข€€€„˜ฃ€ฏš„˜ค€€Œ„˜ฅฒ˜„˜ฆ€€€„˜งขก„˜จˆ‘Ž„˜ฉพฏ™„˜ช„€ˆ„˜ซฟฟฟ„˜ฌœข „˜ญ„€‰„˜ฎฟฟด„˜ฏ„ขข„˜ฐ’€ˆ„˜ฑฎ€‰„˜ฒผˆ€„˜ณฐ˜ท„˜ดคขข„˜ตฐ˜ฐ„˜ถฒ˜ฆ„˜ทฟฟฟ„˜ธœ€ˆ„˜น„€ˆ„˜บฟฟฟ„˜ปœ€‰„˜ผ„€‰„˜ฝ’€ˆ„˜พ†€‰„˜ฟคขข„™€ฐ˜ฝ„™ขก„™‚ˆ‘ฆ„™ƒฒ˜ฆ„™„€€€„™…„ฏฆ„™†ถ‡ƒ„™‡„ขฃ„™ˆˆ™ช„™‰„ขค„™Šˆ‘Ž„™‹ขฃ„™Œจก „™œกƒ„™Ž„ขฅ„™„™‘„™ˆŽท„™‘€€€„™’€ฏง„™“€€ˆ„™”ขฃ„™•œก–„™–ˆŽฃ„™—€กŽ„™˜€ฏค„™™ผˆ€„™šฒ™„„™›ˆœ‚„™œŒฏง„™ฒ™„„™ž€€€„™Ÿขค„™ ˆ‘Ž„™กขฅ„™ข„™ฅ„™ฃˆŽท„™ค€ฏง„™ฅ€€€„™ฆ€€ˆ„™งขค„™จˆ‘ฆ„™ฉฒ™ž„™ช€€€„™ซถ…†„™ฌ„ขฆ„™ญฏš„™ฎจกธ„™ฏผ‚€„™ฐฐ𐄙ฑขฆ„™ฒˆŽฃ„™ณ€กŽ„™ด€ก”„™ตฐ™ฝ„™ถœก‚„™ท„ขฆ„™ธ’ขฆ„™นผŠ€„™บˆฅ„™ป†ขฆ„™ผฒ™ช„™ฝˆฅ„™พ„ขง„™ฟˆŽท„š€€ฏ›„š€ฟ€„š‚€€‡„šƒˆŠ„š„€ฟ‡„š…€€น„š†ขง„š‡ˆ‘ฆ„šˆขง„š‰„ฏ›„šŠˆŠ„š‹€ฏœ„šŒ€€†„šฏš„šŽ”กธ„š„ฏš„šขฆ„š‘ถ…†„š’ˆŽฃ„š“€กŽ„š”€ก”„š•ˆ’ฌ„š–œก‚„š—„ขง„š˜’ขง„š™ผŠ€„ššˆฅ„š›†ขง„šœ„ขจ„šˆ‘Ž„šžขฆ„šŸจก „š œกƒ„šก„ขง„šข’ขง„šฃผ‚€„šคฒ™ช„šฅˆฅ„šฆ„ขฆ„šงขจ„šจˆ‘Ž„šฉขฆ„šช†ขง„šซขจ„šฌˆ‘ฆ„šญขฆ„šฎฒ™ช„šฏ€€€„šฐ„ขฉ„šฑšฏ„šฒ„šถ„šณ›„šด„šฏ„šตฐšบ„šถ€€€„šท„ขฉ„šธœข„šน„šฏ„šบฟฟฟ„šปžšถ„šผ„€Š„šฝ„€‹„šพคšถ„šฟ’šถ„›€„ขช„›คšถ„›‚กด„›ƒ šฏ„›„ฏค„›…ผ€„›†œขฉ„›‡ผ€„›ˆˆŽฃ„›‰€กŽ„›Š€ขช„›‹ขช„›Œ„ขซ„›ผ€„›Žœก„›ผŠ€„›ฒšถ„›‘„ขช„›’ขฉ„›“ˆ™ช„›”„ขฌ„›•ˆ‘Ž„›–ขฉ„›—จก „›˜œกƒ„›™œข„„›š šฏ„››ฐ›ž„›œ„€Š„›ผˆ€„›ž„€‹„›Ÿ’€‹„› †€Š„›กคขฉ„›ขคขช„›ฃฐ›ฏ„›ค šฏ„›ฅฐ›ญ„›ฆขฉ„›งˆŽฃ„›จ€กŽ„›ฉ€ฏค„›ช„ฏค„›ซขฌ„›ฌˆ‘ฆ„›ญขซ„›ฎฒšถ„›ฏขฉ„›ฐจก „›ฑผ‚€„›ฒฐ›Ÿ„›ณ šฏ„›ดฐ›’„›ตขฌ„›ถˆ‘ฆ„›ทฐ›’„›ธ€€€„›นฎ™„›บˆ“ฐ„›ปˆ™„›ผฏฏ„›ฝผ€„›พˆ™„›ฟฏฑ„œ€ˆ˜„œฒ›ธ„œ‚€€€„œƒ„ฏค„œ„ˆ˜ฆ„œ…ฏค„œ†ฒœ‚„œ‡„ น„œˆธงก„œ‰ฐœš„œŠธงฑ„œ‹ธงช„œŒ„ญš„œผˆ„œŽฐœ•„œธงŠ„œ„ญ„œ‘ฟฟฟ„œ’„ญ›„œ“ญš„œ”ผ€ˆ„œ•ผ€„œ–ฐŸญ„œ—ฟฟฟ„œ˜„ญœ„œ™ฐŸญ„œšธ€„œ›ฐœถ„œœธคŠ„œ„ฌพ„œžคญฐ„œŸผˆ€„œ คญฏ„œกคฌผ„œขผ€€„œฃฟฟฟ„œค„€‡„œฅธ€ค„œฆญƒ„œงผ‰€„œจคญƒ„œฉผˆ€„œชˆบ„œซญž„œฌผŠ€„œญฐŸญ„œฎค ป„œฏผˆ€„œฐฐŠ„œฑฌก‘„œฒฐŸญ„œณคญž„œดฐŸญ„œตฐŠ„œถธน‘„œทฐœพ„œธฟฟฟ„œน„ ผ„œบธนš„œป„ ฝ„œผธนก„œฝฐŸญ„œพธˆช„œฟผˆ„€ฐ‘„ธ…„‚ญž„ƒผŠ€„„ฐŸญ„…œขƒ„†ผŠ€„‡ฐŠ„ˆ„ญž„‰ฐŸญ„Šก„‹„ญž„Œฌฝ„ธ…ง„Žฟฟถ„„ ป„ฐŸญ„‘ผˆ„’ฐ•„“ธ‡ข„”ฐŸญ„•ผ€„–ฐ›„—ธˆŠ„˜„ญŸ„™ธ‡“„šฐŸญ„›ธƒ„œฐต„ญƒ„žผ€„Ÿคญƒ„ ธƒŠ„ก„ญ‰„ขฌกฉ„ฃฐ ‘„คก„ฅˆ˜„ฆŒญ‰„งญ„จˆŸฒ„ฉ„ญ„ชญ‰„ซฌกจ„ฌผˆ€„ญฐŸญ„ฎญ‘„ฏผ€„ฐ”กป„ฑ„ญ‘„ฒˆ Œ„ณˆบ„ดฐŸญ„ตธ„„ถฐž–„ทธ„‚„ธˆบ„นฐŸญ„บ€€€„ปญƒ„ผผ‰€„ฝฒบ„พญ„ฟŒญ„ž€ผ‚€„žฐž†„ž‚คญƒ„žƒก„ž„ˆฅ„ž…ฐž’„ž†ธ„†„ž‡ฌก˜„žˆˆ Œ„ž‰ฌกš„žŠผˆ€„ž‹ฒบ„žŒญƒ„žœกœ„žŽผ „žผ€„ž„ญƒ„ž‘ฒบ„ž’ญ‘„ž“ˆŸฒ„ž”„ญ‘„ž•ฒบ„ž–ธฃ„ž—ฐžค„ž˜ธฃ„„ž™ธฃŠ„žš„ญ‰„ž›ฌก„žœฐ ค„žก‘„žžˆ˜„žŸผ€€„ž ญ’„žกˆŸฒ„žข„ญ’„žฃฐŸญ„žคธ„žฅฐŸŠ„žฆญ‚„žงผŠ€„žจฐžญ„žฉ„ญ‰„žชธŠ„žซ„ญ‚„žฌฐžฏ„žญธŠ„žฎ„ญ‰„žฏญ‰„žฐผŠ€„žฑฐžธ„žฒก’„žณˆ˜„žดฐŸ„„žตญ‰„žถฌก’„žทฐŸ†„žธญ‚„žนผŠ€„žบฐžพ„žป„ญ‰„žผŒญ‚„žฝฐžฏ„žพธ„„žฟญ“„Ÿ€ˆŸฒ„Ÿ”กป„Ÿ‚„ญ“„ŸƒฐŸญ„Ÿ„ญ‰„Ÿ…„ญ‚„Ÿ†ญ“„Ÿ‡ˆŸฒ„Ÿˆ„ญ“„Ÿ‰ฐŸญ„ŸŠธ‚„Ÿ‹ฐŸ–„ŸŒธ‚‚„Ÿก“„ŸŽˆฅ„ŸฐŸ’„Ÿธ‚„„Ÿ‘ฐŸญ„Ÿ’ญ”„Ÿ“ˆŸฒ„Ÿ”„ญ”„Ÿ•ฐŸญ„Ÿ–ธค„Ÿ—ฐŸฅ„Ÿ˜ธค„„Ÿ™ธคŠ„Ÿš„ฌฟ„Ÿ›จกซ„ŸœผŠ€„ŸฐŸญ„Ÿžˆ–†„ŸŸญ–„Ÿ ˆŸฒ„Ÿก„ญ–„Ÿขฝ€€„Ÿฃธค”„ŸคฐŸญ„Ÿฅธท„ŸฆฐŸฌ„ŸงธทŠ„Ÿจ„ญก„Ÿฉฟฟฟ„Ÿช„ญ „ŸซฐŸญ„ŸฌธทŠ„Ÿญ€€„Ÿฎผ€ˆ„Ÿฏ น„Ÿฐธ€ข„Ÿฑฒ€€„Ÿฒ€€€„Ÿณ„ขญ„Ÿดฟฟถ„Ÿต„ขฎ„Ÿถ พ„Ÿท„ €„Ÿธ ฟ„Ÿน„ „Ÿบขญ„Ÿปผ€ˆ„Ÿผ„ขญ„Ÿฝผ€„Ÿพฐ ‚„Ÿฟข€„ €œ€€„ „€€„ ‚ €„ ƒœก’„ „„ €„ … „ †œก’„ ‡„ „ ˆคขฎ„ ‰ฐŸบ„ Šฝ€€„ ‹ฒŸฒ„ Œ€€€„ กš„ Ž„ญ„ ฝ€€„ ฒ Œ„ ‘ก”„ ’„ ท„ “ก„ ”ˆฅ„ •ผˆ€„ –ฐ “„ —ก„ ˜ˆฅ„ ™ผˆ€„ šฐ —„ ›ญ„ œˆŸฒ„ „ญ„ žญ‘„ ŸˆŸฒ„  „ญ‘„ กˆƒ„ ขฐŸญ„ ฃฐ ฒ„ คก•„ ฅ„ ธ„ ฆก‘„ งˆฅ„ จผˆ€„ ฉฐ ฆ„ ชญ’„ ซˆŸฒ„ ฌ„ญ’„ ญญ–„ ฎˆŸฒ„ ฏ„ญ–„ ฐˆƒ„ ฑฐŸญ„ ฒ€€„ ณ„€„ ด น„ ตฐ€‘„ ถ€€€„ ท€€€„ ธ€€€„ น€€€„ บ€€€„ ป€€€„ ผ€€€„ ฝ€€€„ พœญฑ„ ฟ„ญฑ„ก€€€ž„ก€ฎฌ„ก‚€ฏ›„กƒ€ฟ€„ก„€จด„ก…€คฉ„ก†€ญค„ก‡„ขฐ„กˆขฐ„ก‰€ฃ€„กŠ‰ฎ„ก‹‰ด„กŒ„€ „ก„€ „กŽ€€€„ก€€„ก€€‚„ก‘€€ƒ„ก’€€„„ก“€€…„ก”€€†„ก•€€‡„ก–€€ˆ„ก—€€‰„ก˜€€Š„ก™€€Œ„กš€€„ก›€€„กœ€€„ก€€›„กž€€ „กŸ€€ญ„ก €€ฟ„กก€„กข€€ก„กฃ€š„กค€œ„กฅ€Ÿ„กฆ€ญ„กง€ฟ„กจ€‚Š„กฉ€ƒฝ„กช€‡ฟ„กซ€€„กฌ€ €„กญผฟ„กฎ€€„กฏฟฒ„กฐฟฟ„กฑ‚€„กฒ„€€„กณ„€„กด‡€€„กต‡ฟฟ„กถˆ€€„กทŒ€€„กธ€€„กน€„กบ˜€€„กป €€„กผจ€€„กฝฏฟฟ„กพฐ€€„กฟด€€„ข€ธ€€„ขฟฟ€„ข‚ฟฟฐ„ขƒฟฟฝ„ข„ฟฟฟ„ขฐ€ฃ€„ขฑ€คข„ฃ€€ฃ‚„ฃ€€€„ฃ‚€ฃ„„ฃƒ€€€„ฃ„€ฃ†„ฃ…€€€„ฃ†€ฃˆ„ฃ‡€€€„ฃˆ€ฃŠ„ฃ‰€€€„ฃŠ€ฃŒ„ฃ‹€€€„ฃŒ€ฃŽ„ฃ€€€„ฃŽ€ฃ„ฃ€€€„ฃ€ฃ’„ฃ‘€€€„ฃ’€ฃ”„ฃ“€€€„ฃ”€ฃ–„ฃ•€€€„ฃ–€ฃ˜„ฃ—€€€„ฃ˜€ฃš„ฃ™€€€„ฃš€ฃœ„ฃ›€€€„ฃœ€ฃž„ฃ€€€„ฃž€ฃ „ฃŸ€€€„ฃ €ฃข„ฃก€€€„ฃข€ฃค„ฃฃ€€€„ฃค€ฃฆ„ฃฅ€€€„ฃฆ€ฃจ„ฃง€€€„ฃจ€ฃช„ฃฉ€€€„ฃช€ฃฌ„ฃซ€€€„ฃฌ€ฃฎ„ฃญ€€€„ฃฎ€ฃฐ„ฃฏ€€€„ฃฐ€ฃฒ„ฃฑ€€€„ฃฒ€ฃด„ฃณ€€€„ฃด€ฃถ„ฃต€€€„ฃถ€ฃธ„ฃท€€€„ฃธ€ฃบ„ฃน€€€„ฃบ€ฃผ„ฃป€€€„ฃผ€ฃพ„ฃฝ€€€„ฃพ€ค€„ฃฟ€€€„ค€€ค‚„ค€€€„ค‚€ค„„คƒ€€€„ค„€ค†„ค…€€€„ค†€คˆ„ค‡€€€„คˆ€คŠ„ค‰€€€„คŠ€คŒ„ค‹€€€„คŒ€คŽ„ค€€€„คŽ€ค„ค€€€„ค€ค’„ค‘€€€„ค’€ค”„ค“€€€„ค”€ค–„ค•€€€„ค–€ค˜„ค—€€€„ค˜€คš„ค™€€€„คš€คœ„ค›€€€„คœ€คž„ค€€€„คž€ค „คŸ€€€„ค €คข„คก€€€„คข€€€„คฃ€€€„คฆ†จฏ„คงŒฟ „คจŽ€€„ฅ‡Œ€„ฅˆธ›‚„ฅ‰ธ€ข„ฅŠธ€ค„ฅ‹พฐ€„ฅŒธข†„ฅˆ–†„ฅŽพคฆ„ฅˆ–„ฅฝ€€„ฅ‘ˆ‘ฒ„ฅ’€ฐ€„ฅ“ˆŽท„ฅ”€ฟ€„ฅ•€ญข„ฅ–€€„ฅ—ก‘„ฅ˜ˆ—Ÿ„ฅ™€กŠ„ฅšˆ’ฌ„ฅ›ˆ˜„ฅœฝ€€„ฅˆšถ„ฅž€€„ฅŸ€€„ฅ ฑ€€„ฌป€ฌป„ญ‹€€„ญฑ‹ˆ€„ญฒ€€„ญณ€€€„ญด€€€„ญตƒˆ „ญถ€€€„ญท€€€„ญธ€€€„ญนƒ‰€„ญบ€€€„ญป€€€„ญผ€€€„ญฝƒ‰ „ญพ€€€„ญฟ€€€„ฎ€€€€„ฎƒŠ€„ฎ‚€€€„ฎƒ€€€„ฎ„€€€„ฎ…ƒŠ „ฎ†€€€„ฎ‡€€€„ฎˆ€€€„ฎ‰ƒ‹€„ฎŠ€€€„ฎ‹€€€„ฎŒ€€€„ฎƒ‹ „ฎŽ€€€„ฎ€€€„ฎ€€€„ฎ‘ƒŒ€„ฎ’€€€„ฎ“€€€„ฎ”€€€„ฎ•ƒŒ „ฎ–€€€„ฎ—€€€„ฎ˜€€€„ฎ™€€€„ฎš€€€„ฎคฟฟฟ„ฎฅ€€„ฎฆ€€ƒ„ฎง€ญฑ„ฎจ€€€„ฎฉ€€€„ฎช€€€„ฎซ€€€„ฏŠ€€€„ฏ‹€€„ฏฑ€€€ผ€ 
\ No newline at end of file
diff --git a/binaries/image.fs b/binaries/alt/image.fs
similarity index 99%
rename from binaries/image.fs
rename to binaries/alt/image.fs
index 501ed5b..1786bc4 100644
Binary files a/binaries/image.fs and b/binaries/alt/image.fs differ
diff --git a/binaries/alt/unixv0.simh b/binaries/alt/unixv0.simh
new file mode 100644
index 0000000..38593b0
--- /dev/null
+++ b/binaries/alt/unixv0.simh
@@ -0,0 +1,13 @@
+set cpu 8k
+set cpu eae
+set cpu history=100
+show cpu
+
+set tti unix
+set rb ena
+att rb image.fs
+show dev
+
+load -S a.rim
+dep pc 0100
+go
diff --git a/binaries/orig/a.rim b/binaries/orig/a.rim
new file mode 100644
index 0000000..28832a1
--- /dev/null
+++ b/binaries/orig/a.rim
@@ -0,0 +1 @@
+„€€ผ€ „€ฐœŒ„€‡ฟฟฟ„€€€š„€‘ธ€‚„€’„ฎž„€“€„€”„€š„€•€™„€–„€„€—ฎž„€˜ฐ€›„€™€€š„€š€€€„€›ธ€‚„€œ„ฎž„€ดˆ‚„€ž„ฎŸ„€Ÿ€ˆ„€ „ฎ „€ก€‰„€ข„ฎก„€ฃˆŽผ„€ค€€Š„€ฅ€ฎข„€ฆ€€†„€ง€š„€จ„ฎจ„€ฉฟฟฟ„€ช„ ฟ„€ซ„ ป„€ฌญ„€ญˆŽจ„€ฎ€ก“„€ฏ€ก…„€ฐˆž„€ฑธ€ข„€ฒฟฟฟ„€ณœฎจ„€ดˆŽข„€ตˆŽจ„€ถ€กถ„€ท€‚ฎ„€ธฐ‰ซ„€นœ‚„€บ„€ป„€ปฒ€€„€ฐฅŒ„ˆ’ฑ„‚Œฎž„ƒธ€ข„„ ฟ„…ผ‚€„†ฐŽ„‡ˆŽผ„ˆ€ญง„‰€ฟ€„Š€€„‹ฝ€€„Œˆ‘ท„€ธ€„ŽŒ ป„ˆƒ„ผˆ€„‘ฐ‰ฎ„’ˆŽผ„“€ฎข„”€€Š„•€€†„–ฎก„—„€‰„˜ฎ „™„€ˆ„šฎŸ„›ต€„œฎž„ฒฎจ„ž€€€„Ÿธ€ข„ ˆˆป„ก€€ƒ„ขฐฉ„ฃˆˆป„ค€€„ฅผˆ€„ฆฐ „งŒก…„จฐ‚„ฉ„ขŠ„ชˆˆป„ซ€€‚„ฌฐฑ„ญˆˆป„ฎ€€„ฏฐฑ„ฐฐฟ„ฑž„ฒ„ฎญ„ณธ€‚„ดกฝ„ตžฎฌ„ถ†ฎฌ„ทธ€ข„ธˆ’ผ„น€ธ€„บฏ„ปผŠ€„ผฐฟ„ฝพคซ„พˆ–’„ฟธ€‚„‚€ขƒ„‚žขŠ„‚‚†ขŠ„‚ƒธ€ข„‚„ˆ’ผ„‚…€ฐ€„‚†ฎญ„‚‡„ž„‚ˆกก„‚‰„ก…„‚Аฏ„‚‹ผ‚€„‚Œˆ–’„‚Œญ„‚Žธ€‚„‚ฒž„‚ฐ‚„‚‘€‰ฎ„‚’€„›„‚“€†›„‚”€‡™„‚•€ˆ€„‚–€†ต„‚—€„ž„‚˜€„ถ„‚™€‡•„‚š€„ผ„‚›€…ง„‚œ€…ถ„‚€…ผ„‚ž€‰ธ„‚Ÿ€†„‚ €‚ฏ„‚ก€†’„‚ข€„Œ„‚ฃ€„–„‚ค€‰ซ„‚ฅ€‚ฒ„‚ฆ€‰ซ„‚ง€„„„‚จ€„ˆ„‚ฉ€ƒช„‚ช€‰ซ„‚ซ€Šš„‚ฌ€Š„„‚ญ€‰Ž„‚ฎ‚€„‚ฏฎž„‚ฐ„ฏ„‚ฑฐ‚„‚ฒฎž„‚ณจกต„‚ดˆŽจ„‚ต€ก”„‚ถ€ƒ„‚ทˆž„‚ธœ‚ฝ„‚น„‚บ„‚บ€€„‚ป„ฎž„‚ผฐƒ„‚ฝ‚ฝ„‚พ€˜”„‚ฟ€ฏŸ„ƒ€€ฎž„ƒ€ญง„ƒ‚€Žผ„ƒƒ€„ƒ„€Žจ„ƒ…€‘“„ƒ†€‘ซ„ƒ‡€ฟ€„ƒˆ€ญŸ„ƒ‰€—ค„ƒŠ€ญƒ„ƒ‹€ช„ƒŒ€Ž‰„ƒ€ญฃ„ƒŽ€ญฅ„ƒ€€‘„ƒ€€€„ƒ‘ ป„ƒ’ผ‚€„ƒ“ฒƒ„ƒ” ผ„ƒ•ผŠ€„ƒ–ฐƒ™„ƒ—ฌฎณ„ƒ˜ฐƒก„ƒ™ ฝ„ƒšผŠ€„ƒ›ฒƒ„ƒœฌฎณ„ƒผˆ€„ƒžฒƒ„ƒŸŒ ฝ„ƒ ฐƒข„ƒกŒ ผ„ƒขฏ„ƒฃผ‚€„ƒคฒƒ„ƒฅฟฟฟ„ƒฆ„ ป„ƒงธ€ข„ƒจคƒ„ƒฉฒƒ„ƒชˆ–š„ƒซ„ƒฐ„ƒฌˆ–š„ƒญ„ƒณ„ƒฎฎซ„ƒฏˆ—ค„ƒฐ€€€„ƒฑˆž„ƒฒˆ—ค„ƒณ€€€„ƒดˆž„ƒตˆ˜”„ƒถฎž„ƒทจกต„ƒธˆŽจ„ƒน€กณ„ƒบ€กด„ƒปˆž„ƒผ„ƒฟ„ƒฝˆŽผ„ƒพ€ฏŸ„ƒฟ€€€„„€€€Œ„„ฏฌ„„‚†€‰„„ƒฐ‚„„„ฎž„„…„ฏ„„†ˆ–’„„‡ฐƒ„„ˆŒฏ„„‰พคซ„„Šˆ–’„„‹ฐƒ„„Œˆ–น„„ฎž„„Žจก „„ต€„„ฏŸ„„‘จข‡„„’ด€‚„„“„ฏŸ„„”ˆ˜ซ„„•ฐ‚„„–ˆ–น„„—ฎž„„˜„ฏง„„™ˆ˜ซ„„šฐ‚„„›ฎฉ„„œ„ฎž„„ฐƒ„„žˆ–ช„„Ÿœฎฎ„„ ผ‰€„„กˆž„„ขต€„„ฃฏด„„คจก”„„ฅผŠ€„„ฆˆ„ญ„„งดˆ‚„„จˆŽจ„„ฉ€ก“„„ช€ฏฉ„„ซˆœ‡„„ฌฐ„ฒ„„ญดˆ‚„„ฎˆŽจ„„ฏ€ก“„„ฐ€ฏฉ„„ฑฏฉ„„ฒ„ฏต„„ณ„ฎž„„ดˆ”‡„„ตฐƒ„„ถˆ–ช„„ทผ€„„ธœก”„„นœฎฎ„„บ„ฎž„„ปฐƒ„„ผˆ–š„„ฝ„…„„„พˆ–š„„ฟ„…‡„…€ˆ–š„…„…‹„…‚ก—„…ƒˆ—ค„…„€€€„……ˆž„…†ˆ—ค„…‡€€€„…ˆˆž„…‰„ฎฎ„…ŠˆŽผ„…‹€€€„…Œ€ญ‰„…€€„„…ސฎซ„…ˆ—ค„…€ญ‰„…‘ผˆ€„…’ˆž„…“ก”„…”„ญ…„…•ˆ“„…–ˆ”ธ„…—ฎฎ„…˜ˆ˜”„…™ฏž„…š„ฏฌ„…›ˆŽผ„…œ€ญ‰„…€ฏญ„…ž€€„„…Ÿฏช„… „ฏฑ„…กฟฟฟ„…ขœฏจ„…ฃ„ฏจ„…คˆ˜ซ„…ฅˆ™ฃ„…ฆฐ‚„…งˆ–ž„…จ„ฎฎ„…ฉก”„…ช„ญ…„…ซˆ“„…ฌŒฏฌ„…ญˆ™ฃ„…ฎฎฎ„…ฏˆ˜”„…ฐคฏจ„…ฑฐ…ด„…ฒˆ—‚„…ณŒฏŸ„…ดˆ˜ซ„…ตฐƒ„…ถฎฉ„…ทผ€„…ธˆž„…นฎž„…บ„ฎฉ„…ปฐƒ„…ผˆ–š„…ฝ„†‚„…พˆ–š„…ฟ„†ˆ„†€ฎซ„†ˆ—ค„†‚€€€„†ƒˆž„†„ก”„†…„ญ…„††ˆ“„†‡ˆŽผ„†ˆ€€€„†‰€ฏญ„†Š€€„„†‹ˆ™ฃ„†Œฐ‚„†ญด„†Ž„ฎž„†ญต„†„ฎŸ„†‘ฐƒ„†’ˆ–ž„†“ˆ˜”„†”ฏŸ„†•จกก„†–ผŠ€„†—ˆž„†˜ฏž„†™„ฎซ„†šฐ‚„†›ˆ–š„†œ„†ฅ„†ˆ–š„†žผ‚€„†Ÿก”„† ผŠ€„†กก•„†ข„ญ…„†ฃฎซ„†คˆ—ค„†ฅ€€€„†ฆˆž„†งˆ˜”„†จˆ“„†ฉฏŸ„†ชจกก„†ซผŠ€„†ฌฐ‡’„†ญญ…„†ฎจก”„†ฏผŠ€„†ฐฐ‡’„†ฑฎฉ„†ฒผ€„†ณˆž„†ดฐ‡’„†ตก”„†ถ„ญ…„†ทˆ–š„†ธ„†บ„†นˆŽผ„†บ€€€„†ป€ญ‰„†ผ€€„„†ฝฎซ„†พˆ—ค„†ฟ€ญ‰„‡€ฐ‡Ž„‡ˆ˜”„‡‚ˆ“„‡ƒฏŸ„‡„จกก„‡…ผŠ€„‡†ฐ‡Š„‡‡ฎฉ„‡ˆผ€„‡‰ˆž„‡Šˆ—‚„‡‹ฝ€€„‡Œˆœ‡„‡ฐ‡’„‡Žˆ“„‡ฎž„‡จก „‡‘ˆ•‚„‡’ˆ“œ„‡“ˆž„‡”ฐƒ„‡•ˆ›ฝ„‡–Œฏด„‡—ˆ”‡„‡˜ฐƒ„‡™ˆ–š„‡šจกต„‡›„ฎฎ„‡œˆ–š„‡„ฎฏ„‡žฎฎ„‡ŸˆŽจ„‡ €กณ„‡ก€กต„‡ขˆž„‡ฃœฎฏ„‡คˆŽจ„‡ฅ€ฎฎ„‡ฆ€กต„‡งˆž„‡จ„ฎฐ„‡ฉˆ›ฝ„‡ชฏด„‡ซจก”„‡ฌผ‚€„‡ญˆž„‡ฎฏŸ„‡ฏจกฃ„‡ฐผŠ€„‡ฑฐ‡ท„‡ฒธ€‚„‡ณฏž„‡ดœ‹™„‡ต„‡ถ„‡ถฒ€€„‡ทฎฎ„‡ธ„‡ฝ„‡นฎฏ„‡บ„‡พ„‡ปฏต„‡ผˆšป„‡ฝ€€€„‡พ€€€„‡ฟฐˆก„ˆ€ˆ–š„ˆจกต„ˆ‚„ฎฎ„ˆƒˆ–š„ˆ„„ฎฏ„ˆ…œฎฎ„ˆ†ˆŽจ„ˆ‡€ฎฎ„ˆˆ€กต„ˆ‰ˆž„ˆŠ„ฎฐ„ˆ‹ˆ›ฝ„ˆŒฏด„ˆจก”„ˆŽผŠ€„ˆˆž„ˆฏŸ„ˆ‘จกฃ„ˆ’ผŠ€„ˆ“ฐˆ™„ˆ”ธ€‚„ˆ•ฏž„ˆ–œ‹™„ˆ—„ˆ˜„ˆ˜ฒ€€„ˆ™ฎฎ„ˆš„ˆŸ„ˆ›ฎฏ„ˆœ„ˆ „ˆฏต„ˆžˆšด„ˆŸ€€€„ˆ €€€„ˆก„ฎž„ˆขœฏต„ˆฃ„ฏต„ˆคˆ˜ซ„ˆฅˆ”‡„ˆฆฐƒ„ˆง€€€„ˆจ’ˆง„ˆฉ„ขŒ„ˆชฟฟถ„ˆซ„ข‹„ˆฌพญต„ˆญ„€ˆ„ˆฎ’€ˆ„ˆฏ„ญ‘„ˆฐ’€ˆ„ˆฑ„ญ’„ˆฒ’€ˆ„ˆณ„ญ“„ˆด’€ˆ„ˆต„ญ”„ˆถŠขŒ„ˆทคข‹„ˆธฐˆฎ„ˆนคˆง„ˆบฒˆง„ˆป€€€„ˆผˆˆง„ˆฝ€‰„ˆพคˆป„ˆฟคˆป„‰€ฒˆป„‰€€€„‰‚ญ‘„‰ƒผˆ„‰„ผˆ„‰…จกš„‰†ฎˆป„‰‡ผˆ€„‰ˆฒ‰„‰‰ฟฟฝ„‰Šœ€ˆ„‰‹จกต„‰Œคˆป„‰ฒˆป„‰Žˆˆป„‰€€€„‰ผˆ€„‰‘ˆž„‰’„ข„‰“คญ„‰”ญ„‰•„ฎž„‰–พƒ„‰—„ฎญ„‰˜กฝ„‰™žฎฌ„‰š†ฎฌ„‰›ˆ’ผ„‰œ€ธ€„‰ข„‰ž„ฎฌ„‰Ÿกป„‰ –ฎฌ„‰ก†ฎฌ„‰ขฎช„‰ฃ„ฎž„‰คญ„‰ฅ„ฎช„‰ฆคข„‰ง†ข„‰จคฎจ„‰ฉŒฏ„‰ชฐƒ„‰ซธ€ค„‰ฌฟฟฟ„‰ญ„€‡„‰ฎก”„‰ฏˆ˜”„‰ฐฝ€€„‰ฑˆšด„‰ฒ€€„‰ณ€€„‰ดˆšด„‰ต€ฎž„‰ถ€€„‰ทˆ˜ซ„‰ธฏ„‰นผŠ€„‰บฐ‰ฝ„‰ปพคซ„‰ผˆ–’„‰ฝˆ‹‰„‰พ’ฎฌ„‰ฟจกบ„Š€†ฎฌ„Ёคฎฌ„Š‚Žฎฌ„Šƒˆž„Š„ˆ‹‰„Š…กป„Іžฎฌ„Ї†ฎฌ„Šˆพ€‚„Љœฎฌ„ŠŠ„ขބЋฟฟฟ„ŠŒ†ขŽ„Šˆž„ŠŽพ€‚„Šœฎฌ„А„ขބБ’ขބВผ€„Š“„ฎž„Š”ŽขބЕคขބЖ’ขބЗ„ฎŸ„Š˜ŽขބЙฐƒ„Ššฎž„Š›ผ‹€„Šœˆž„Šˆˆง„Šž€Šค„ŠŸพ€‚„Š œฎฌ„Šก„ข„ŠขŽข„Šฃˆž„Šค€€€„Šฅญ’„Šฆฌฎž„Šงผˆ€„ŠจฒŠค„Šฉญ“„Šชฌข‰„ŠซฐŠบ„Šฌกป„Šญžฎฌ„Šฎ†ฎฌ„Šฏพ€‚„Šฐœฎฌ„Šฑ„ข„Šฒฎž„Šณ†ข„Šดˆž„Šตพ€‚„Šถœฎฌ„Šท„ข„ŠธŽข„ŠนฐŠš„Šบฟฟฝ„Šปœ€ˆ„Šผ„ข„Šฝข…„Šพžข„Šฟ†ข„‹€คข„‹คข„‹‚ฎช„‹ƒผ€„‹„†ข„‹…คข„‹†ฎŸ„‹‡†ข„‹ˆฐ‚„‹‰€€€„‹Šˆˆง„‹‹€‹„‹Œฒ‹‰„‹€€€„‹Žฎช„‹ฌญ“„‹ผˆ€„‹‘ฒ‹„‹’ฟฟฝ„‹“œ€ˆ„‹”„ข„‹•ข…„‹–žข„‹—†ข„‹˜ฒ‹„‹™ฒ‹•„‹š€‹ฃ„‹›€‹ค„‹œ€Œ„‹€Œถ„‹ž€‹ฃ„‹Ÿ€‹ฃ„‹ €‹ด„‹ก€Œฎ„‹ข€‚„‹ฃˆ’ฑ„‹คˆข„‹ฅก”„‹ฆˆช„‹งฐ‹ฐ„‹จจกฌ„‹ฉˆŽจ„‹ช€กฆ„‹ซ€กจ„‹ฌผˆ€„‹ญœกฃ„‹ฎถ‡‰„‹ฏฐ˜„‹ฐˆ”ก„‹ฑ€ญ•„‹ฒˆž„‹ณฐ‹ค„‹ดˆข„‹ตˆ”„‹ถผŠ€„‹ทฐ”š„‹ธต€„‹นญ–„‹บผ‰€„‹ปฐŒƒ„‹ผ”ข€„‹ฝ„ญ–„‹พดˆ‚„‹ฟธ„†„Œ€ฌก„Œˆ ‘„Œ‚ฐ”š„Œƒดˆ‚„Œ„„ญŽ„Œ…ก•„Œ†ˆ„Œ‡ผˆ€„Œˆฐ”š„Œ‰ˆ”ก„ŒŠ€ญ–„Œ‹ˆž„ŒŒฐ‹ด„Œˆข„ŒŽก–„Œˆช„ŒฐŒช„Œ‘ต€„Œ’จกซ„Œ“ฌกค„Œ”ฐŒš„Œ•ดˆ‚„Œ–จกช„Œ—ฌกฉ„Œ˜ผˆ€„Œ™ฐŒ„Œšดˆ‚„Œ›”กก„Œœต€„Œดˆ‚„Œž„ฎฐ„ŒŸˆข„Œ ฎฐ„Œกˆ•ฅ„ŒขฐŒง„Œฃˆ”ก„Œค€ญ›„Œฅˆž„ŒฆฐŒŸ„Œงฎฐ„Œจถ‡‰„Œฉฐ˜„Œชˆ”ก„Œซ€ญ—„Œฌˆž„ŒญฐŒ„Œฎˆข„Œฏˆ”„Œฐˆ•ฅ„Œฑฐ”š„Œฒˆ”ก„Œณ€ญ›„Œดˆž„ŒตฐŒฎ„Œถก—„Œทˆช„ŒธฐŒป„Œนถ‡‰„Œบฐ˜„Œปญ˜„Œผผ€„Œฝธ„„Œพˆ”ก„Œฟ€ญ˜„€ˆž„ฐŒถ„‚ˆ”„ƒผŠ€„„ฐ”š„…ต€„†ญ™„‡ผ‰€„ˆฐŽ„‰”ข€„Š„ญ™„‹ดˆ‚„Œธ‚„„ฐ”š„Žดˆ‚„„ญŽ„ก˜„‘ˆ„’ผˆ€„“ฐ”š„”ˆ”ก„•€ญ™„–ˆž„—ฐ‚„˜ฌกฑ„™ฐ‚„š†ฎฎ„›ก”„œ„ฎž„ฐƒ„ž€€€„Ÿฟฟฟ„ „ฎž„กฐƒ„ข€€€„ฃŒ ป„คˆƒ„ฅผˆ€„ฆฐ‰ฎ„งฟฟฟ„จ„ ป„ฉฒข„ช€€€„ซฟฟฟ„ฌœญจ„ญผ‰€„ฎฐป„ฏ„ญจ„ฐœก‹„ฑˆŽข„ฒ„ข‘„ณˆ„ด€ฟ€„ต€€„ถข‘„ทˆ‘ซ„ธŒ ฟ„นข‘„บฒช„ปญง„ผผŠ€„ฝˆ’ฑ„พ„ญฉ„ฟˆ‘“„Ž€ฟ€„ށ„ญง„Ž‚ˆŽผ„Žƒ€ฟ„Ž„€ญช„Ž…€€‰„ކก„އ„ญจ„Žˆฐซ„މ€€€„ŽŠต€„Ž‹ญจ„ŽŒฌก„ŽฐŽ•„ŽŽœก‹„Ž„ข‘„ސดˆ‚„Ž‘†ข‘„Ž’Œ ฟ„Ž“คญจ„Ž”ฒމ„Ž•ญง„Ž–„ฟ€„Ž—ˆŽผ„Ž˜€ญช„Ž™€ฟ„Žš€€‰„Ž›ดˆ‚„Žœ„ญง„Žˆ‘ซ„ŽžŒ ฟ„ŽŸก”„Ž „ญจ„Žกฒމ„Žข€€€„Žฃจกต„Žคœกฝ„Žฅ„Žฆ„Žฆ€€„ŽงฒŽข„Žจ€€€„Žฉต„„Žช’Žจ„Žซ„ข’„ŽฌคŽจ„Žญดˆ‚„Žฎžข’„Žฏผ€„ŽฐฐŽธ„Žฑ’Žจ„Žฒ„ข’„ŽณคŽจ„Žดดˆ‚„Žตžข’„Žถผ€„Žทผ‹€„ŽธคŽจ„Žนดˆ‚„Žบผ€„ŽปฒŽจ„Žผ€€€„Žฝฟฟฟ„ŽพžŽผ„Žฟ„€ˆ„€คŽผ„ฟฟฟ„‚žŽผ„ƒ„€‰„„คŽผ„…ฟฟฟ„†žŽผ„‡ผ€„ˆ„ข’„‰คŽผ„Š’€ˆ„‹†€‰„Œคข’„ฐŠ„ŽฒŽผ„€€€„ฟฟฟ„‘ž„’„€ˆ„“ค„”ฟฟฟ„•ž„–ผ€„—„ข’„˜ค„™Ž€ˆ„šคข’„›ฐ™„œฒ„€€€„ž„ข“„Ÿฝ€€„ ˆด„กฒ„ขœกธ„ฃ„ง„คข“„ฅˆŽ„ฆญŽ„ง„ฃ†„จค„ฉฒ„ช€€€„ซˆด„ฌฒช„ญœกพ„ฎ„ฑ„ฏฝ€€„ฐˆŽ„ฑฃ†„ฒคช„ณฒช„ด€€€„ตผ ˆ„ถœก„ท„พ„ธœข„„น„Š„บœก”„ป„‰„ผœข„ฝ„‚„พขต„ฟผŠ€„€ฒด„„ญ„‚ฌขถ„ƒฐˆ„„œกฝ„…„†„†ฃ…„‡ฐŠ„ˆฝ€€„‰„ขถ„Š„ขต„‹คด„Œญ„ฒด„Ž€€€„ผ ˆ„œกŒ„‘„Ÿ„’œก”„“„ „”œกผ„•„–„–ขด„—ผŠ€„˜ฐž„™œกท„š„œ„›ญ„œ„ฃ…„ฐ „žญ„Ÿ„ขต„ „ขถ„กฒŽ„ข€€€„ฃ„ข–„คฟฟผ„ฅ„ข”„ฆพจผ„ง„ข•„จข–„ฉฌข•„ชฒข„ซพ„ฌœข•„ญคข•„ฎคข”„ฏฐจ„ฐคข„ฑฒข„ฒ€€€„ณฝ€€„ดˆข„ตฐธ„ถพจผ„ท„ข•„ธข•„น„‘…„บœกฆ„ป„‘„„ผผ€„ฝœก”„พœญ€„ฟจกต„‘€ผŠ€„‘ฐ‘‡„‘‚„‘†„‘ƒˆŽผ„‘„€€€„‘…€€€„‘†€€€„‘‡ฟพฟ„‘ˆœญ€„‘‰„ข”„‘Šœก”„‘‹„‘„‘Œญ„‘†ข”„‘ŽˆŽผ„‘€ฟ€„‘€€€„‘‘€€„‘’ฒฒ„‘“€€€„‘”ˆŽจ„‘•€ก•„‘–€กฒ„‘—ˆ’ฑ„‘˜ฌญ„‘™ฒ‘“„‘š„ญ„‘›ˆข„‘œฐ‘ก„‘ญ„‘žˆ‘ท„‘Ÿ€ฐ€„‘ ฐ‘ฉ„‘กŽข•„‘ขพ€„‘ฃœข•„‘ค„‘ฆ„‘ฅˆŽผ„‘ฆ€€€„‘ง€ฟ€„‘จ€€„‘ฉˆฒ„‘ชฒ‘“„‘ซ€€€„‘ฌˆŽจ„‘ญ€ก•„‘ฎ€กฒ„‘ฏˆ’ฑ„‘ฐˆ‘ท„‘ฑ€ธ€„‘ฒญ„‘ณˆข„‘ดŽข•„‘ตˆฒ„‘ถฒ‘ซ„‘ท€€€„‘ธ„ญ„‘นผ €„‘บต›“„‘ป€„‘ผ„ข—„‘ฝดˆ‚„‘พต›“„‘ฟ€€Š„’€„ข˜„’ด†–„’‚”ข˜„’ƒด‡ˆ„’„„ข˜„’…ข—„’†ต›“„’‡€€Š„’ˆ„ข—„’‰ด†–„’Š”ข—„’‹”ข˜„’Œ”กฝ„’„ข—„’Žˆ’•„’ฟฟ€„’€ฟ€„’‘€ข—„’’€‘ท„’“ค‘ท„’”ฒ‘ท„’•€€€„’–ฟฟถ„’—„ข˜„’˜ฟฟฟ„’™œ’•„’š„€Œ„’›ธนก„’œ’€Œ„’ธน”„’ž’€Œ„’Ÿธนข„’ ’€Œ„’กˆŽข„’ขธน„„’ฃŒก„’ค’€Œ„’ฅˆŽข„’ฆˆŽข„’งธนค„’จก„’ฉผŠ€„’ชฐ’จ„’ซก‚„’ฌผ€„’ญฒ€Œ„’ฎคข˜„’ฏฐ’˜„’ฐˆ’ฑ„’ฑ€€€„’ฒคข™„’ณฐ’ฒ„’ดธ€‚„’ตผ€ „’ถˆŽผ„’ทพ€€„’ธ€€„’น€€„’บผ€ „’ปฐ’บ„’ผ€€€„’ฝผ €„’พด‡ƒ„’ฟ„ขš„“€ˆ’•„“ฟฟ€„“‚€ฎž„“ƒ€ขš„“„€’ผ„“…ขš„“†œกก„“‡„ขš„“ˆˆ’•„“‰ฟ€€„“Ё€€„“‹€ขš„“Œ€’ผ„“ค’ผ„“Žฒ’ผ„“€€€„“ฏŸ„“‘ต€„“’ฎฉ„““ผ‰€„“”ฒ“„“•ฌฏง„“–ด…‚„“—ดˆ‚„“˜จญ…„“™ผ‚€„“šฒ“„“›ˆž„“œ€€€„“ฟฟถ„“ž„ข›„“Ÿข›„“ œก„“กˆ“ต„“ขˆ’ฑ„“ฃฏด„“คผ€„“ฅฐ“ฉ„“ฆคข›„“งฐ“Ÿ„“จฒ“œ„“ฉญ…„“ช”ข€„“ซ„ฏด„“ฌฏž„“ญ„ฏถ„“ฎข›„“ฏœก„“ฐ„ฎž„“ฑŒฏต„“ฒˆ”‡„“ณค“œ„“ดฒ“œ„“ต€€€„“ถˆŽจ„“ท€ก“„“ธ€กœ„“นฒ“ต„“บผ €„“ปต™’„“ผ€€ƒ„“ฝดˆ‚„“พœก†„“ฟ„ขœ„”€„”‚„”ˆŽผ„”‚€€€„”ƒ€ฏด„”„€€ƒ„”…ค“ต„”†ฒ“ต„”‡€€€„”ˆขœ„”‰„”Œ„”ŠˆŽผ„”‹€ฏด„”Œ€€€„”€€ƒ„”Žฒ”‡„”€€€„”ฎฎ„”‘ฌฎฐ„”’ฐ”ž„”“ฎฎ„””ผ€ˆ„”•’ฎฎ„”–ผ„€„”—ด…‰„”˜จกฏ„”™ฒ”„”šฎฎ„”›˜ข€„”œ„ฎฎ„”ฐ”„”žฎฏ„”Ÿ„ฎž„” ฐƒ„”ก€€€„”ขพญต„”ฃ„€ˆ„”คกฝ„”ฅต€„”ฆ’ฎฌ„”งฎ€ˆ„”จฐ”ฏ„”ฉค€ˆ„”ชค€ˆ„”ซค€ˆ„”ฌฝ€€„”ญด…„”ฎฐ”ฆ„”ฏœกป„”ฐ†ฎฌ„”ฑ’”ก„”ฒ„ข„”ณ’ข„”ดด€‚„”ต†ข„”ถค”ก„”ทฒ”ก„”ธ€€€„”นŒฏซ„”บผˆ€„”ปคฏซ„”ผฏซ„”ฝˆ™‰„”พฏฌ„”ฟผ‚€„•€ฐ”ป„•ฒ”ธ„•‚€€€„•ƒ„ขž„•„ˆ”ธ„•…กก„•†„ฏž„•‡คฏž„•ˆฏž„•‰ˆ˜”„•АฏŸ„•‹ผ‰€„•Œฐ•‡„•ฏž„•Ž„ฏฌ„•ˆŽผ„•€ญ‰„•‘€ฏญ„•’€€„„•“คญณ„•”ญณ„••„ฏฑ„•–„ฏช„•—ขž„•˜”ข€„•™„ฏŸ„•šฎฉ„•›„ฏง„•œฟฟฟ„•„ฏจ„•žŒฏฉ„•Ÿˆ„• €ฏ „•ก€€‡„•ขˆ˜ซ„•ฃˆ™ฃ„•คฒ•‚„•ฅ€€€„•ฆจกฌ„•งผŠ€„•จฒ•ฅ„•ฉฌกž„•ชฐ•ต„•ซต€„•ฌฌก„•ญˆ–„•ฎ’คฉ„•ฏฌข€„•ฐฐ•ท„•ฑด€‚„•ฒ†คฉ„•ณคคฉ„•ดฒ•ฅ„•ตˆ–‹„•ถฒ•ฅ„•ทคฉ„•ธฌก‰„•นฐ–‡„•บ„€ˆ„•ปข€„•ผ†€ˆ„•ฝฝ€€„•พถ†™„•ฟ†คฉ„–€ฒ•ฅ„–€€€„–‚คช„–ƒฌกง„–„ฐ–‡„–…คคช„–†ฒ–„–‡กฐ„–ˆธค”„–‰ค•ฅ„–Šฒ•ฅ„–‹€€€„–ŒกŠ„–„คฉ„–ސข€„–„คฎ„–Œคช„–‘ฒ–‹„–’€€€„–“ธ€‚„–”ธ…„–•„ญ‚„––ฟฟฟ„–—„ญฃ„–˜ธ€ข„–™ฒ–’„–š€€€„–›’ฎจ„–œคฎจ„–ฒ–š„–ž€€€„–Ÿˆ–š„– „–ข„–กˆŽผ„–ข€€€„–ฃ€ญ‰„–ค€€„„–ฅฎซ„–ฆˆ—ค„–ง€ญ‰„–จˆž„–ฉฒ–ž„–ช€€€„–ซˆ–š„–ฌ„ฎฎ„–ญˆ–š„–ฎ„ฎฐ„–ฏˆ›ฝ„–ฐฎฐ„–ฑผŠ€„–ฒฒ–ช„–ณฌก”„–ดฐ–ท„–ตฏฉ„–ถฒ–ช„–ทฏต„–ธฒ–ช„–น€€€„–บˆ–ž„–ปˆ˜”„–ผฎฉ„–ฝผ€„–พฌฏง„–ฟผˆ€„—€ˆž„—ฒ–น„—‚€€€„—ƒฟฟน„—„„ขŸ„—…ก‡„—†„ข „—‡’ข „—ˆผŠ€„—‰ฐ—„—АฏŸ„—‹จกฝ„—ŒผŠ€„—ฐ—š„—Žฟฟ€„—„ขก„—กˆ„—‘„ขข„—’’ข „—“ˆ‘“„—”’ขข„—•ผ‚€„—–ˆŽ‰„——คขข„—˜คขก„—™ฐ—’„—š’ข „—›ˆŽ‰„—œŽข „—คข „—žคขŸ„—Ÿฐ—‡„— ฏŸ„—กจข‚„—ข„ฏŸ„—ฃฒ—‚„—ค€€€„—ฅˆ˜”„—ฆฟฟฟ„—งž—ค„—จ„ขค„—ฉค—ค„—ชฏŸ„—ซจกก„—ฌผŠ€„—ญฒ—ค„—ฎฟฟธ„—ฏœฏฉ„—ฐผ€„—ฑถ…ƒ„—ฒ„ขฃ„—ณผŠ€„—ดฒ—ค„—ตŒฏซ„—ถฏซ„—ทˆ™‰„—ธฏฌ„—นผŠ€„—บฐ˜„—ปขค„—ผ„€ˆ„—ฝฏญ„—พฎ€ˆ„—ฟผˆ€„˜€ฐ˜„˜ฏฎ„˜‚ฎ€ˆ„˜ƒผˆ€„˜„ฐ˜„˜…ฏฏ„˜†ฎ€ˆ„˜‡ผˆ€„˜ˆฐ˜„˜‰ฏฐ„˜Šฎ€ˆ„˜‹ผˆ€„˜Œฐ˜„˜ฏฌ„˜Žค—ค„˜ฒ—ค„˜คฏซ„˜‘คขฃ„˜’ฐ—ถ„˜“ฒ—ค„˜”€€€„˜•„ฏž„˜–ผ €„˜—ต›“„˜˜€€…„˜™„ขฅ„˜šดˆ‚„˜›œก•„˜œ„ขฆ„˜ˆ‘“„˜žขฅ„˜Ÿผ €„˜ ต™’„˜ก€€Œ„˜ขดˆ‚„˜ฃœกˆ„˜ค„ขฅ„˜ฅ„˜ง„˜ฆˆŽผ„˜ง€€€„˜จ€ฏŸ„˜ฉ€€Œ„˜ชฒ˜”„˜ซ€€€„˜ฌขฆ„˜ญˆ‘“„˜ฎพฏž„˜ฏ„€ˆ„˜ฐฟฟฟ„˜ฑœขฅ„˜ฒ„€‰„˜ณฟฟด„˜ด„ขง„˜ต’€ˆ„˜ถฎ€‰„˜ทผˆ€„˜ธฐ˜ผ„˜นคขง„˜บฐ˜ต„˜ปฒ˜ซ„˜ผฟฟฟ„˜ฝœ€ˆ„˜พ„€ˆ„˜ฟฟฟฟ„™€œ€‰„™„€‰„™‚’€ˆ„™ƒ†€‰„™„คขง„™…ฐ™‚„™†ขฆ„™‡ˆ‘ซ„™ˆฒ˜ซ„™‰€€€„™Š„ฏซ„™‹ถ‡ƒ„™Œ„ขจ„™ˆ™ฏ„™Ž„ขฉ„™ˆ‘“„™ขจ„™‘จกฅ„™’œกˆ„™“„ขช„™”„™–„™•ˆŽผ„™–€€€„™—€ฏฌ„™˜€€ˆ„™™ขจ„™šœก›„™›ˆŽจ„™œ€ก“„™€ฏฉ„™žผˆ€„™Ÿฒ™‰„™ ˆœ‡„™กŒฏฌ„™ขฒ™‰„™ฃ€€€„™คขฉ„™ฅˆ‘“„™ฆขช„™ง„™ช„™จˆŽผ„™ฉ€ฏฌ„™ช€€€„™ซ€€ˆ„™ฌขฉ„™ญˆ‘ซ„™ฎฒ™ฃ„™ฏ€€€„™ฐถ…†„™ฑ„ขซ„™ฒฏŸ„™ณจกฝ„™ดผ‚€„™ตฐš•„™ถขซ„™ทˆŽจ„™ธ€ก“„™น€ก™„™บฐš‚„™ปœก‡„™ผ„ขซ„™ฝ’ขซ„™พผŠ€„™ฟˆช„š€†ขซ„šฒ™ฏ„š‚ˆช„šƒ„ขฌ„š„ˆŽผ„š…€ฏ „š†€ฟ€„š‡€€‡„šˆˆ„š‰€ฟ‡„šŠ€€น„š‹ขฌ„šŒˆ‘ซ„šขฌ„šŽ„ฏ „šˆ„š€ฏก„š‘€€†„š’ฏŸ„š“”กฝ„š”„ฏŸ„š•ขซ„š–ถ…†„š—ˆŽจ„š˜€ก“„š™€ก™„ššˆ’ฑ„š›œก‡„šœ„ขฌ„š’ขฌ„šžผŠ€„šŸˆช„š †ขฌ„šก„ขญ„šขˆ‘“„šฃขซ„šคจกฅ„šฅœกˆ„šฆ„ขฌ„šง’ขฌ„šจผ‚€„šฉฒ™ฏ„šชˆช„šซ„ขซ„šฌขญ„šญˆ‘“„šฎขซ„šฏ†ขฌ„šฐขญ„šฑˆ‘ซ„šฒขซ„šณฒ™ฏ„šด€€€„šต„ขฎ„šถšด„šท„šป„šธ›ข„šน„šด„šบฐšฟ„šป€€€„šผ„ขฎ„šฝœง„šพ„šด„šฟฟฟฟ„›€žšป„›„€Š„›‚„€‹„›ƒคšป„›„’šป„›…„ขฏ„›†คšป„›‡กน„›ˆ šด„›‰ฏฉ„›Šผ€„›‹œขฎ„›Œผ€„›ˆŽจ„›Ž€ก“„›€ขฏ„›ขฏ„›‘„ขฐ„›’ผ€„›“œก”„›”ผŠ€„›•ฒšป„›–„ขฏ„›—ขฎ„›˜ˆ™ฏ„›™„ขฑ„›šˆ‘“„››ขฎ„›œจกฅ„›œกˆ„›žœข‰„›Ÿ šด„› ฐ›ฃ„›ก„€Š„›ขผˆ€„›ฃ„€‹„›ค’€‹„›ฅ†€Š„›ฆคขฎ„›งคขฏ„›จฐ›ด„›ฉ šด„›ชฐ›ฒ„›ซขฎ„›ฌˆŽจ„›ญ€ก“„›ฎ€ฏฉ„›ฏ„ฏฉ„›ฐขฑ„›ฑˆ‘ซ„›ฒขฐ„›ณฒšป„›ดขฎ„›ตจกฅ„›ถผ‚€„›ทฐ›ค„›ธ šด„›นฐ›—„›บขฑ„›ปˆ‘ซ„›ผฐ›—„›ฝ€€€„›พฎž„›ฟˆ“ต„œ€ˆž„œฏด„œ‚ผ€„œƒˆž„œ„ฏถ„œ…ˆ˜”„œ†ฒ›ฝ„œ‡€€€„œˆ„ฏฉ„œ‰ˆ˜ซ„œŠฏฉ„œ‹ฒœ‡„œŒ„ พ„œธงก„œŽฐœŸ„œธงฑ„œธงช„œ‘„ญŸ„œ’ผˆ„œ“ฐœš„œ”ธงŠ„œ•„ญข„œ–ฟฟฟ„œ—„ญ „œ˜ญŸ„œ™ผ€ˆ„œšผ€„œ›ฐŸฒ„œœฟฟฟ„œ„ญก„œžฐŸฒ„œŸธ€„œ ฐœป„œกธคŠ„œข„ญƒ„œฃคญต„œคผˆ€„œฅคญด„œฆคญ„œงผ€€„œจฟฟฟ„œฉ„€‡„œชธ€ค„œซญˆ„œฌผ‰€„œญคญˆ„œฎผˆ€„œฏˆฟ„œฐญฃ„œฑผŠ€„œฒฐŸฒ„œณคก€„œดผˆ€„œตฐ„œถฌก–„œทฐŸฒ„œธคญฃ„œนฐŸฒ„œบฐ„œปธน‘„œผฐƒ„œฝฟฟฟ„œพ„ก„œฟธนš„€„ก‚„ธนก„‚ฐŸฒ„ƒธˆช„„ผˆ„…ฐ–„†ธ…„‡ญฃ„ˆผŠ€„‰ฐŸฒ„Šœขˆ„‹ผŠ€„Œฐ„„ญฃ„ŽฐŸฒ„ก”„„ญฃ„‘ญ‚„’ธ…ง„“ฟฟถ„”„ก€„•ฐŸฒ„–ผˆ„—ฐš„˜ธ‡ข„™ฐŸฒ„šผ€„›ฐ „œธˆŠ„„ญค„žธ‡“„ŸฐŸฒ„ ธƒ„กฐบ„ขญˆ„ฃผ€„คคญˆ„ฅธƒŠ„ฆ„ญŽ„งฌกฎ„จฐ –„ฉก”„ชˆ„ซŒญŽ„ฌญ•„ญˆŸท„ฎ„ญ•„ฏญŽ„ฐฌกญ„ฑผˆ€„ฒฐŸฒ„ณญ–„ดผ€„ต”ข€„ถ„ญ–„ทˆ ‘„ธˆฟ„นฐŸฒ„บธ„„ปฐž›„ผธ„‚„ฝˆฟ„พฐŸฒ„ฟ€€€„ž€ญˆ„žผ‰€„ž‚ฒฟ„žƒญ†„ž„Œญ†„ž…ผ‚€„ž†ฐž‹„ž‡คญˆ„žˆก•„ž‰ˆช„žŠฐž—„ž‹ธ„†„žŒฌก„žˆ ‘„žŽฌกŸ„žผˆ€„žฒฟ„ž‘ญˆ„ž’œกก„ž“ผ „ž”ผ€„ž•„ญˆ„ž–ฒฟ„ž—ญ–„ž˜ˆŸท„ž™„ญ–„žšฒฟ„ž›ธฃ„žœฐžฉ„žธฃ„„žžธฃŠ„žŸ„ญŽ„ž ฌกข„žกฐ ฉ„žขก–„žฃˆ„žคผ€€„žฅญ—„žฆˆŸท„žง„ญ—„žจฐŸฒ„žฉธ„žชฐŸ„žซญ‡„žฌผŠ€„žญฐžฒ„žฎ„ญŽ„žฏธŠ„žฐ„ญ‡„žฑฐžด„žฒธŠ„žณ„ญŽ„žดญŽ„žตผŠ€„žถฐžฝ„žทก—„žธˆ„žนฐŸ‰„žบญŽ„žปฌก—„žผฐŸ‹„žฝญ‡„žพผŠ€„žฟฐŸƒ„Ÿ€„ญŽ„ŸŒญ‡„Ÿ‚ฐžด„Ÿƒธ„„Ÿ„ญ˜„Ÿ…ˆŸท„Ÿ†”ข€„Ÿ‡„ญ˜„ŸˆฐŸฒ„Ÿ‰ญŽ„ŸŠ„ญ‡„Ÿ‹ญ˜„ŸŒˆŸท„Ÿ„ญ˜„ŸŽฐŸฒ„Ÿธ‚„ŸฐŸ›„Ÿ‘ธ‚‚„Ÿ’ก˜„Ÿ“ˆช„Ÿ”ฐŸ—„Ÿ•ธ‚„„Ÿ–ฐŸฒ„Ÿ—ญ™„Ÿ˜ˆŸท„Ÿ™„ญ™„ŸšฐŸฒ„Ÿ›ธค„ŸœฐŸช„Ÿธค„„ŸžธคŠ„ŸŸ„ญ„„Ÿ จกฐ„ŸกผŠ€„ŸขฐŸฒ„Ÿฃˆ–‹„Ÿคญ›„ŸฅˆŸท„Ÿฆ„ญ›„Ÿงฝ€€„Ÿจธค”„ŸฉฐŸฒ„Ÿชธท„ŸซฐŸฑ„ŸฌธทŠ„Ÿญ„ญฆ„Ÿฎฟฟฟ„Ÿฏ„ญฅ„ŸฐฐŸฒ„ŸฑธทŠ„Ÿฒ€€„Ÿณผ€ˆ„Ÿด พ„Ÿตธ€ข„Ÿถฒ€€„Ÿท€€€„Ÿธ„ขฒ„Ÿนฟฟถ„Ÿบ„ขณ„Ÿปกƒ„Ÿผ„ …„Ÿฝก„„Ÿพ„ †„Ÿฟขฒ„ €ผ€ˆ„ „ขฒ„ ‚ผ€„ ƒฐ ‡„ „ข…„ …œ€€„ †„€€„ ‡ …„ ˆœก—„ ‰„ …„ Š †„ ‹œก—„ Œ„ †„ คขณ„ ŽฐŸฟ„ ฝ€€„ ฒŸท„ ‘€€€„ ’กŸ„ “„ญ†„ ”ฝ€€„ •ฒ ‘„ –ก™„ —„ ผ„ ˜ก”„ ™ˆช„ šผˆ€„ ›ฐ ˜„ œก•„ ˆช„ žผˆ€„ Ÿฐ œ„  ญ•„ กˆŸท„ ข„ญ•„ ฃญ–„ คˆŸท„ ฅ„ญ–„ ฆˆƒ„ งฐŸฒ„ จฐ ท„ ฉกš„ ช„ ฝ„ ซก–„ ฌˆช„ ญผˆ€„ ฎฐ ซ„ ฏญ—„ ฐˆŸท„ ฑ„ญ—„ ฒญ›„ ณˆŸท„ ด„ญ›„ ตˆƒ„ ถฐŸฒ„ ท€€„ ธ„€„ น พ„ บฐ€‘„ ป€€€„ ผ€€€„ ฝ€€€„ พ€€€„ ฟ€€€„ก€€€€„ก€€€„ก‚€€€„กƒœญถ„ก„„ญถ„ก…€€ž„ก†€ฎฑ„ก‡€ฏ „กˆ€ฟ€„ก‰€จน„กŠ€คฎ„ก‹€ญฉ„กŒ„ขต„กขต„กŽ€ฃ…„ก‰ฎ„ก‰ด„ก‘„€ „ก’„€ „ก“€€€„ก”€€„ก•€€‚„ก–€€ƒ„ก—€€„„ก˜€€…„ก™€€†„กš€€‡„ก›€€ˆ„กœ€€‰„ก€€Š„กž€€Œ„กŸ€€„ก €€„กก€€„กข€€›„กฃ€€ „กค€€ญ„กฅ€€ฟ„กฆ€„กง€€ก„กจ€š„กฉ€œ„กช€Ÿ„กซ€ญ„กฌ€ฟ„กญ€‚Š„กฎ€ƒฝ„กฏ€‡ฟ„กฐ€€„กฑ€ €„กฒผฟ„กณ€€„กดฟฒ„กตฟฟ„กถ‚€„กท„€€„กธ„€„กน‡€€„กบ‡ฟฟ„กปˆ€€„กผŒ€€„กฝ€€„กพ€„กฟ˜€€„ข€ €€„ขจ€€„ข‚ฏฟฟ„ขƒฐ€€„ข„ด€€„ข…ธ€€„ข†ฟฟ€„ข‡ฟฟฐ„ขˆฟฟฝ„ข‰ฟฟฟ„ขต€ฃ…„ขถ€คง„ฃ…€ฃ‡„ฃ†€€€„ฃ‡€ฃ‰„ฃˆ€€€„ฃ‰€ฃ‹„ฃŠ€€€„ฃ‹€ฃ„ฃŒ€€€„ฃ€ฃ„ฃŽ€€€„ฃ€ฃ‘„ฃ€€€„ฃ‘€ฃ“„ฃ’€€€„ฃ“€ฃ•„ฃ”€€€„ฃ•€ฃ—„ฃ–€€€„ฃ—€ฃ™„ฃ˜€€€„ฃ™€ฃ›„ฃš€€€„ฃ›€ฃ„ฃœ€€€„ฃ€ฃŸ„ฃž€€€„ฃŸ€ฃก„ฃ €€€„ฃก€ฃฃ„ฃข€€€„ฃฃ€ฃฅ„ฃค€€€„ฃฅ€ฃง„ฃฆ€€€„ฃง€ฃฉ„ฃจ€€€„ฃฉ€ฃซ„ฃช€€€„ฃซ€ฃญ„ฃฌ€€€„ฃญ€ฃฏ„ฃฎ€€€„ฃฏ€ฃฑ„ฃฐ€€€„ฃฑ€ฃณ„ฃฒ€€€„ฃณ€ฃต„ฃด€€€„ฃต€ฃท„ฃถ€€€„ฃท€ฃน„ฃธ€€€„ฃน€ฃป„ฃบ€€€„ฃป€ฃฝ„ฃผ€€€„ฃฝ€ฃฟ„ฃพ€€€„ฃฟ€ค„ค€€€€„ค€คƒ„ค‚€€€„คƒ€ค…„ค„€€€„ค…€ค‡„ค†€€€„ค‡€ค‰„คˆ€€€„ค‰€ค‹„คŠ€€€„ค‹€ค„คŒ€€€„ค€ค„คŽ€€€„ค€ค‘„ค€€€„ค‘€ค“„ค’€€€„ค“€ค•„ค”€€€„ค•€ค—„ค–€€€„ค—€ค™„ค˜€€€„ค™€ค›„คš€€€„ค›€ค„คœ€€€„ค€คŸ„คž€€€„คŸ€คก„ค €€€„คก€คฃ„คข€€€„คฃ€คฅ„คค€€€„คฅ€คง„คฆ€€€„คง€€€„คจ€€€„คซ†จฏ„คฌŒฟ „คญŽ€€„ฅŒŒ€„ฅธ›‚„ฅŽธ€ข„ฅธ€ค„ฅพฐ€„ฅ‘ธข†„ฅ’ˆ–‹„ฅ“พคซ„ฅ”ˆ–’„ฅ•ฝ€€„ฅ–ˆ‘ท„ฅ—€ฐ€„ฅ˜ˆŽผ„ฅ™€ฟ€„ฅš€ญง„ฅ›€€„ฅœก–„ฅˆ—ค„ฅž€ก„ฅŸˆ’ฑ„ฅ ˆ˜”„ฅกฝ€€„ฅขˆšป„ฅฃ€€„ฅค€€„ฅฅฑ€€„ญ€€ญ€„ญ€€„ญถ‹ˆ€„ญท€€„ญธ€€€„ญน€€€„ญบƒˆ „ญป€€€„ญผ€€€„ญฝ€€€„ญพƒ‰€„ญฟ€€€„ฎ€€€€„ฎ€€€„ฎ‚ƒ‰ „ฎƒ€€€„ฎ„€€€„ฎ…€€€„ฎ†ƒŠ€„ฎ‡€€€„ฎˆ€€€„ฎ‰€€€„ฎŠƒŠ „ฎ‹€€€„ฎŒ€€€„ฎ€€€„ฎŽƒ‹€„ฎ€€€„ฎ€€€„ฎ‘€€€„ฎ’ƒ‹ „ฎ“€€€„ฎ”€€€„ฎ•€€€„ฎ–ƒŒ€„ฎ—€€€„ฎ˜€€€„ฎ™€€€„ฎšƒŒ „ฎ›€€€„ฎœ€€€„ฎ€€€„ฎž€€€„ฎŸ€€€„ฎฉฟฟฟ„ฎช€€„ฎซ€€ƒ„ฎฌ€ญถ„ฎญ€€€„ฎฎ€€€„ฎฏ€€€„ฎฐ€€€„ฏ€€€„ฏ€€„ฏถ€€€ผ€ 
\ No newline at end of file
diff --git a/binaries/orig/image.fs b/binaries/orig/image.fs
new file mode 100644
index 0000000..3bb1469
Binary files /dev/null and b/binaries/orig/image.fs differ
diff --git a/binaries/orig/unixv0.simh b/binaries/orig/unixv0.simh
new file mode 100644
index 0000000..bde540d
--- /dev/null
+++ b/binaries/orig/unixv0.simh
@@ -0,0 +1,31 @@
+set cpu 8k
+set cpu eae
+set cpu history=100
+show cpu
+
+# set up SIMH devices:
+
+# UNIX character translations (CR to NL, ESC to ALTMODE):
+set tti unix
+
+# RB09 fixed head disk:
+set rb ena
+att rb image.fs
+
+# uncomment to TELNET in GRAPHICS-2 keyboard/display(!!)
+# (requires github.com/philbudne/simh)
+#set g2in ena
+#att -U g2in 12345
+
+# disable hardware UNIX-7 doesn't know about:
+set lpt disa
+set drm disa
+set dt disa
+
+# show device settings:
+show dev
+
+# load and start the system:
+load -S a.rim
+dep pc 0100
+go
diff --git a/build/Makefile b/build/Makefile
index bfcf26a..ff1b392 100644
--- a/build/Makefile
+++ b/build/Makefile
@@ -21,7 +21,7 @@ TESTDIR=tests
 BINARIES=../binaries/
 
 
-all: cmd others a.rim image.fs copybinaries
+all: cmd others a.rim image.fs
 
 # Make alternative everything: no dd but . and ..
 alt: altcmd altothers alt/a.rim alt/image.fs
@@ -33,7 +33,18 @@ run:
 
 # Alternative run, use the alt/image.fs
 altrun:
-	$(PDP7) alt/unixv0.simh
+	cd alt; $(PDP7) unixv0.simh
+
+dist: all alt
+	mkdir -p $(BINARIES)
+	mkdir -p $(BINARIES)/orig
+	mkdir -p $(BINARIES)/alt
+	cp image.fs $(BINARIES)/orig
+	cp a.rim $(BINARIES)/orig
+	cp unixv0.simh $(BINARIES)/orig
+	cp alt/image.fs $(BINARIES)/alt
+	cp alt/a.rim $(BINARIES)/alt
+	cp alt/unixv0.simh $(BINARIES)/alt
 
 # Warm boot Unix kernel: boots into init and a login prompt
 a.rim:
@@ -63,12 +74,6 @@ alt/image.fs: altcmd altothers
 	$(MKFS) -1 -2 -3 -o alt/image.fs alt/proto
 	$(FSCK) -3 alt/image.fs
 
-
-copybinaries:
-	mkdir -p $(BINARIES)
-	cp image.fs $(BINARIES)
-	cp a.rim $(BINARIES)
-
 clean:
 	rm -f a.rim image.fs a.lst n.out alt/image.fs alt/a.rim alt/a.lst
 	rm -rf $(BINDIR) $(TESTDIR)
diff --git a/build/alt/a.lst b/build/alt/a.lst
new file mode 100644
index 0000000..adb4508
--- /dev/null
+++ b/build/alt/a.lst
@@ -0,0 +1,5376 @@
+		"** 01-s1.pdf page 62
+		" sop
+		dac = 0040000			" MEM: deposit AC
+	040000  
+		jms = 0100000			" MEM: jump to subroutine
+	100000  
+		dzm = 0140000			" MEM: deposit zero to memory
+	140000  
+		lac = 0200000			" MEM: load AC
+	200000  
+		xor = 0240000			" MEM: XOR with AC
+	240000  
+		add = 0300000			" MEM: one's complement add
+	300000  
+		tad = 0340000			" MEM: two's complement add
+	340000  
+		xct = 0400000			" MEM: execute
+	400000  
+		isz = 0440000			" MEM: increment and skip if zero
+	440000  
+		and = 0500000			" MEM: AND
+	500000  
+		sad = 0540000			" MEM: skip if AC different
+	540000  
+		jmp = 0600000			" MEM: jump
+	600000  
+		nop = 0740000			" OPR: no-op
+	740000  
+		i = 020000			" indirect
+	020000  
+		law = 0760000			" OPR: load accumulator with (instr)
+	760000  
+		cma = 0740001			" OPR: complement AC
+	740001  
+		las = 0750004			" OPR: load AC from switches
+	750004  
+		ral = 0740010			" OPR: rotate AC left
+	740010  
+		rar = 0740020			" OPR: rotate AC right
+	740020  
+		hlt = 0740040			" OPR: halt
+	740040  
+		sma = 0740100			" OPR: skip on minus AC
+	740100  
+		sza = 0740200			" OPR: skip on zero AC
+	740200  
+		snl = 0740400			" OPR: skip on non-zero link
+	740400  
+		skp = 0741000			" OPR: skip unconditionally
+	741000  
+		spa = 0741100			" OPR: skip on positive AC
+	741100  
+		sna = 0741200			" OPR: skip on non-zero AC
+	741200  
+		szl = 0741400			" OPR: skip on zero link
+	741400  
+		rtl = 0742010			" OPR: rotate two left
+	742010  
+		rtr = 0742020			" OPR: rotate two right
+	742020  
+		cll = 0744000			" OPR: clear link
+	744000  
+		rcl = 0744010			" OPR: clear link, rotate left
+	744010  
+		rcr = 0744020			" OPR: clear link, rotate right
+	744020  
+		cla = 0750000			" OPR: clear AC
+	750000  
+		lrs = 0640500			" EAE: long right shift
+	640500  
+		lrss = 0660500			" EAE: long right shift, signed
+	660500  
+		lls = 0640600			" EAE: long left shift
+	640600  
+		llss = 0660600			" EAE: long left shift, signed
+	660600  
+		als = 0640700			" EAE: AC left shift
+	640700  
+		alss = 0660700			" EAE: AC left shift, signed
+	660700  
+		mul = 0653122			" EAE: multiply
+	653122  
+		idiv = 0653323			" EAE: integer divide
+	653323  
+		lacq = 0641002			" EAE: load AC with MQ
+	641002  
+		clq = 0650000			" EAE: clear MQ
+	650000  
+		omq = 0640002			" EAE: OR MQ into AC
+	640002  
+		cmq = 0650004			" EAE: complement MQ
+	650004  
+		lmq = 0652000			" EAE: load MQ from AC
+	652000  
+		dscs = 0707141			" DSK: clear status register
+	707141  
+		dslw = 0707124			" DSK: clear and load WC from AC
+	707124  
+		dslm = 0707142			" DSK: clear and load MAC from AC
+	707142  
+		dsld = 0707104			" DSK: clear and load TA and SA from AC
+	707104  
+		dsls = 0707144			" DSK: load status
+	707144  
+		dssf = 0707121			" DSK: skip on flags
+	707121  
+		dsrs = 0707132			" DSK: read status register
+	707132  
+		iof = 0700002			" PIC: interrupts off
+	700002  
+		ion = 0700042			" PIC: interrupts on
+	700042  
+		caf = 0703302			" CPU: clear all flags
+	703302  
+		clon = 0700044			" CLK: clear flag, enable
+	700044  
+		clsf = 0700001			" CLK: skip if overflow
+	700001  
+		"** 01-s1.pdf page 63
+		clof = 0700004			" CLK: clear flag, disable
+	700004  
+		ksf = 0700301			" KBD: skip if flag set
+	700301  
+		krb = 0700312			" KBD: read buffer
+	700312  
+		tsf = 0700401			" TTY: skip if flag set
+	700401  
+		tcf = 0700402			" TTY: clear flag
+	700402  
+		tls = 0700406			" TTY: load buffer, select
+	700406  
+		sck = 0704301			" G-2: skip on console keyboard
+	704301  
+		cck = 0704304			" G-2: clear console keyboard
+	704304  
+		lck = 0704312			" G-2: load console keyboard
+	704312  
+		rsf = 0700101			" PTR: skip if flag set
+	700101  
+		rsa = 0700104			" PTR: select alphanumeric mode
+	700104  
+		rrb = 0700112			" PTR: clear flag, or read buffer
+	700112  
+		psf = 0700201			" PTP: skip if flag set
+	700201  
+		pcf = 0700202			" PTP: clear flag
+	700202  
+		psa = 0700204			" PTP: alphanumeric mode
+	700204  
+		cdf = 0700501			" G-2: clear display flags
+	700501  
+		lds = 0701052			" G-2: load display status
+	701052  
+		lda = 0701012			" G-2: load display address
+	701012  
+		wcga = 0704206			" G-2: ???
+	704206  
+		raef = 0700742			" G-2: resume after edges flag
+	700742  
+		rlpd = 0700723			" G-2: resume after light pen stop, disabled
+	700723  
+		beg = 0700547			" G-2: begin
+	700547  
+		spb = 0704401			" G-2: skip on push button flag
+	704401  
+		cpb = 0704404			" G-2: clear push button flag
+	704404  
+		lpb = 0704412			" G-2: load push buttons
+	704412  
+		wbl = 0704424			" G-2: write button lights
+	704424  
+		dprs = 0704752			" dataphone: read status
+	704752  
+		dpsf = 0704741			" dataphone: skip on flag
+	704741  
+		dpcf = 0704761			" dataphone: clear flag
+	704761  
+		dprc = 0704712			" dataphone: read character
+	704712  
+		crsf = 0706701			" CDR: skip if ready
+	706701  
+		crrb = 0706712			" CDR: read buffer
+	706712  
+		" S1
+		.. = 0
+	000000  
+		t = 0
+	000000  
+		orig:
+		   hlt				" overwritten with interrupt return addr
+000000: 740040  
+		   jmp pibreak			" dispatch to interrupt processing
+000001: 603407  
+		. = orig+7
+	1000007  
+		   -1				" only ever set (to -1): never read?!
+000007: 777777  
+		. = orig+020			" syscall (CAL) and user "interrupt" processing
+	1000020  
+		   1f				" addr for "CAL I": store return here on "CAL"
+000020: 000032  
+		   iof				" interrupts off
+000021: 700002  
+		   dac u.ac			" save user AC
+000022: 045631  
+		   lac 020			" save user return addr
+000023: 200020  
+		   dac 1f			" save as if "CAL I"
+000024: 040032  
+		   lac 1f-1
+000025: 200031  
+		   dac 020			" restore location 20
+000026: 040020  
+		   lac u.ac			" restore user AC
+000027: 205631  
+		   jmp 1f+1			" join "CAL I" processing
+000030: 600033  
+		   1f				" literal to restore location 20
+000031: 000032  
+		1: 0				" "CAL I" PC stored here
+000032: 000000  
+		   iof				" interrupts off
+000033: 700002  
+		   dac u.ac			" save user AC
+000034: 045631  
+		   lacq
+000035: 641002  
+		   dac u.mq			" save user MQ
+000036: 045632  
+		   lac 8
+000037: 200010  
+		   dac u.rq			" save user auto-index location 8
+000040: 045633  
+		   lac 9
+000041: 200011  
+		   dac u.rq+1			" save user auto-index location 9
+000042: 045634  
+		   jms copy; 10; u.rq+2; 6	" save user auto-index locations 10-15
+000043: 101667  
+000044: 000012  
+000045: 005635  
+000046: 000006  
+		   lac 1b			" load user PC after system call
+000047: 200032  
+		   dac u.rq+8			" save user PC
+000050: 045643  
+		   -1				" load -1
+000051: 777777  
+		   dac .savblk			" set "save" flag (cleared by disk I/O?)
+000052: 044072  
+		   dac .insys			" set "in system" flag
+000053: 044066  
+		   lac uquant			" load user quantum count
+000054: 205474  
+		   jms betwen; d0; maxquant	" check if between 0 & maxquant??
+000055: 101643  
+000056: 004116  
+000057: 004100  
+		      jms swap			" no: swap processes
+000060: 100136  
+		   ion				" interrupts on
+000061: 700042  
+		   -1
+000062: 777777  
+		   tad u.rq+8			" get address of system call
+000063: 345643  
+		   jms laci			" load AC indirect??
+000064: 101635  
+		   jms betwen; o20001; swn	" range check
+000065: 101643  
+000066: 004161  
+000067: 000256  
+		      jmp badcal		" bad system call
+000070: 601146  
+		   tad swp			" add system call table base
+000071: 340220  
+		   dac .+1			" save as next instruction
+000072: 040073  
+		   jmp .. i			" dispatch system call
+000073: 620000  
+		. = orig+0100
+	1000100  
+		   jmp coldentry		" here to start kernel
+000100: 604507  
+		   jms halt
+000101: 102254  
+		okexit:
+		   dzm u.ac			" 'OK' system call exit: clear user AC
+000102: 145631  
+		sysexit:			" common system call exit code
+		   ion				" enable interrupts
+000103: 700042  
+		   lac .savblk			" load "save" flag
+000104: 204072  
+		   sza				" is zero (cleared by disk I/O)?
+000105: 740200  
+		   jmp 1f			" no: no disk I/O done?
+000106: 600116  
+		   jms copy; sysdata; dskbuf; 64 " copy system data to disk buffer
+000107: 101667  
+000110: 005542  
+000111: 007700  
+000112: 000100  
+		   cla
+000113: 750000  
+		   jms dskio; 07000		" save to disk?
+000114: 102162  
+000115: 007000  
+		1:
+		   dzm .insys			" clear "in system call" flag
+000116: 144066  
+		   jms chkint			" pending user interrupt?
+000117: 100320  
+		      skp			"  no
+000120: 741000  
+		   jmp .save			"   yes: dump core
+000121: 601151  
+		   jms copy; u.rq+2; 10; 6	" restore auto-index locations 10-15
+000122: 101667  
+000123: 005635  
+000124: 000012  
+000125: 000006  
+		   lac u.rq+1			" restore auto-index location 9
+000126: 205634  
+		   dac 9
+000127: 040011  
+		   lac u.rq			" restore auto-index location 8
+000130: 205633  
+		   dac 8
+000131: 040010  
+		   lac u.mq			" restore MQ register
+000132: 205632  
+		   lmq
+000133: 652000  
+		   lac u.ac			" restore AC register
+000134: 205631  
+		   jmp u.rq+8 i			" return to user
+000135: 625643  
+			" scheduler / idle loop
+		swap: 0
+000136: 000000  
+		   ion
+000137: 700042  
+		1:
+		   jms lookfor; 3 " out/ready
+000140: 101066  
+000141: 000003  
+		      jmp 1f
+000142: 600151  
+		   jms lookfor; 1 " in/ready
+000143: 101066  
+000144: 000001  
+		      skp
+000145: 741000  
+		   jmp 1b			" loop until a process becomes ready
+000146: 600140  
+		   dzm maxquant			" in/ready (self?): come back next tick!
+000147: 144100  
+		   jmp 3f
+000150: 600215  
+		1:				" here with out/ready process
+		   dac 9f+t			" save process pointer (swapped out) in t0
+000151: 044205  
+		   jms lookfor; 2 " in/notready	" find a swapped in process to swap out?
+000152: 101066  
+000153: 000002  
+		      jmp 1f
+000154: 600161  
+		   jms lookfor; 1 " in/ready
+000155: 101066  
+000156: 000001  
+		      jmp 1f
+000157: 600161  
+		   jmp 2f
+000160: 600177  
+		1:
+		   lac swap
+000161: 200136  
+		   dac u.swapret		" return to caller when swapped back
+000162: 045650  
+		   iof
+000163: 700002  
+		   lac o200000			" change status to swapped out
+000164: 204170  
+		   tad u.ulistp i
+000165: 365647  
+		   dac u.ulistp i
+000166: 065647  
+		   ion
+000167: 700042  
+		   jms dskswap; 07000		" swap process out
+000170: 102267  
+000171: 007000  
+		   lac u.dspbuf
+000172: 205712  
+		   sna				" process using display??
+000173: 741200  
+		   jmp 2f			"  no
+000174: 600177  
+		   law dspbuf			" reset to default display buffer
+000175: 764446  
+		   jms movdsp
+000176: 102615  
+		2:
+		   iof				" disable interrupts
+000177: 700002  
+		   lac o600000			" change status (1->7???]
+000200: 204176  
+		   tad 9f+t i
+000201: 364205  
+		   dac 9f+t i
+000202: 064205  
+		   ion				" enable interrupts
+000203: 700042  
+		   jms dskswap; 06000		" read process in?
+000204: 102267  
+000205: 006000  
+		   lac u.swapret		" set our return addr
+000206: 205650  
+		   dac swap			" to saved return addr
+000207: 040136  
+		   lac o20			" reset maxquant to 16 ticks
+000210: 204134  
+		   dac maxquant
+000211: 044100  
+		   lac u.dspbuf
+000212: 205712  
+		   sza				" using display?
+000213: 740200  
+		"** 01-s1.pdf page 4
+		   jms movdsp			"  yes. switch to user display bufferx
+000214: 102615  
+		3:
+		   dzm uquant			" no. reset process tick count
+000215: 145474  
+		   iof
+000216: 700002  
+		   jmp swap i			" return
+000217: 620136  
+		t = t+1
+	000001  
+		swp:			" system call dispatch table
+		   jmp .		" base instruction
+000220: 600220  
+		   .save; .getuid; .open; .read; .write; .creat; .seek; .tell
+000221: 001151  
+000222: 000426  
+000223: 000626  
+000224: 000724  
+000225: 000773  
+000226: 000660  
+000227: 000431  
+000230: 000461  
+		   .close; .link; .unlink; .setuid; .rename; .exit; .time; .intrp
+000231: 000720  
+000232: 000467  
+000233: 000542  
+000234: 000561  
+000235: 000567  
+000236: 001163  
+000237: 000610  
+000240: 000257  
+		   .chdir; .chmod; .chown; badcal; .sysloc; badcal; .capt; .rele
+000241: 000615  
+000242: 000407  
+000243: 000421  
+000244: 001146  
+000245: 000262  
+000246: 001146  
+000247: 000377  
+000250: 000403  
+		   .status; badcal; .smes; .rmes; .fork
+000251: 000352  
+000252: 001146  
+000253: 001225  
+000254: 001177  
+000255: 001111  
+		swn:
+		   .-swp-1 i		" count of system calls, plus indirect!
+000256: 020035  
+			" AC/ new value for intflg (non-zero to ignore interrupt char)
+			"   sys intrp
+		.intrp:
+		   lac u.ac
+000257: 205631  
+		   dac u.intflg
+000260: 045713  
+		   jmp okexit
+000261: 600102  
+			" syscall to retrieve system addresses (data & routines!!)
+			" AC/ index (1..17)
+			"   sys sysloc
+			" AC/ address (or -1 on bad index)
+		.sysloc:
+		   lac u.ac
+000262: 205631  
+		   and o17777
+000263: 504160  
+		   jms betwen; d1; locn
+000264: 101643  
+000265: 004117  
+000266: 000317  
+		      jms error
+000267: 101531  
+		   tad locsw
+000270: 340275  
+		   dac .+1
+000271: 040272  
+		   lac ..
+000272: 200000  
+		   dac u.ac
+000273: 045631  
+		   jmp sysexit
+000274: 600103  
+		locsw:			" table of system addresses for sysloc
+		   lac .
+000275: 200275  
+		   iget; inode; userdata; sysdata; copy; copyz; betwen; dskrd
+000276: 003017  
+000277: 005732  
+000300: 005631  
+000301: 005542  
+000302: 001667  
+000303: 001712  
+000304: 001643  
+000305: 002116  
+		   dskwr; dskbuf; dpdata; namei; pbsflgs; alloc; free; dspdata
+000306: 002146  
+000307: 007700  
+000310: 005532  
+000311: 002737  
+000312: 005476  
+000313: 001545  
+000314: 001604  
+000315: 005536  
+		   crdata
+000316: 005540  
+		locn:
+		   .-locsw-1
+000317: 000021  
+			" check if "interrupt" for current process
+			" checks .int1 and .int2 (contain i-number of interrupt source)
+			" compared against process stdin
+			"
+			" call:
+			" .insys/ 0
+			"   jms chkint
+			"    no: no interrupt, or intflg set (discards interrupt)
+			"   yes: PI off, .insys set
+		chkint: 0
+000320: 000000  
+		   lac .insys
+000321: 204066  
+		   sza				" in system?
+000322: 740200  
+		   jmp chkint i			"  yes: return
+000323: 620320  
+		   lac .int1			" get inumber of interrupt1 source?
+000324: 204067  
+		   sna				" zero?
+000325: 741200  
+		   jmp 1f			"  yes: skip stdin check
+000326: 600331  
+		   sad u.ofiles+2		" non-zero: compare to stdin inumber
+000327: 545656  
+		   jmp 2f			"  same
+000330: 600341  
+		1:
+		   lac .int2			" get inum of interrupt 2 source?
+000331: 204070  
+		   sna				" zero?
+000332: 741200  
+		   jmp chkint i			"  yes: return
+000333: 620320  
+		   sad u.ofiles+2		" non-zero: compare to stdin inumber
+000334: 545656  
+		   skp				"  match!
+000335: 741000  
+		   jmp chkint i			"   no match: return
+000336: 620320  
+		   dzm .int2			" clear int2 source
+000337: 144070  
+		   jmp 1f
+000340: 600342  
+		2:
+		   dzm .int1			" clear int1 source
+000341: 144067  
+		1:
+		"** 01-s1.pdf page 5
+		   lac u.intflg			" get user intflg
+000342: 205713  
+		   sza				" zero?
+000343: 740200  
+		   jmp chkint i			"  no: ignore
+000344: 620320  
+		   -1
+000345: 777777  
+		   dac .insys			" set "in system" flag
+000346: 044066  
+		   ion				" enable interrupts
+000347: 700042  
+		   isz chkint			" give skip return
+000350: 440320  
+		   jmp chkint i
+000351: 620320  
+		"** 01-s1.pdf page 7
+		" s2
+			" file status (stat) system call
+			" AC/ pointer to status (inode) buffer + i-num (13 words)
+			"   sys status; dir_name_ptr; file_name_ptr
+			"   NO_DD version: sys status; file_name_ptr
+		.status:
+		   jms arg			" fetch file name pointer
+000352: 102625  
+		   dac .+3
+000353: 040356  
+		   lac u.cdir			" get current working directory
+000354: 205646  
+		   jms namei; ..		" look up file
+000355: 102737  
+000356: 000000  
+		      jms error			"  not found: return error
+000357: 101531  
+		   jms iget			" read file inode
+000360: 103017  
+		   lac u.ac			" get user buffer pointer
+000361: 205631  
+		   and o17777			" truncate to 13 bits
+000362: 504160  
+		   jms betwen; o10000; o17762	" is user memory (but not last 14 wds)?
+000363: 101643  
+000364: 004156  
+000365: 004157  
+		      jms error			"  no: error
+000366: 101531  
+		   dac .+3			" save as copy destination
+000367: 040372  
+		   jms copy; inode; ..; 12	" copy inode to user buffer
+000370: 101667  
+000371: 005732  
+000372: 000000  
+000373: 000014  
+		   lac d.i			" copy i-num from last dnode read ??
+000374: 205747  
+		   dac 9 i			" save thru index 9 (pre-increment) ??
+000375: 060011  
+		   jmp okexit
+000376: 600102  
+			" capture display?
+		.capt:
+		   lac u.ac			" get user AC
+000377: 205631  
+		   dac u.dspbuf			" save as user display buffer
+000400: 045712  
+		   jms movdsp			" switch to user display buffer
+000401: 102615  
+		   jmp sysexit
+000402: 600103  
+			" release display?
+		.rele:
+		   dzm u.dspbuf			" clear user display buffer pointer
+000403: 145712  
+		   law dspbuf			" get default display buffer
+000404: 764446  
+		   jms movdsp			" change to it
+000405: 102615  
+		   jmp sysexit
+000406: 600103  
+		.chmod:
+		   jms isown			" check if user owns file arg
+000407: 102664  
+		   lac u.ac			" get new permissions
+000410: 205631  
+		   and o17			" mask to read/write bits
+000411: 504133  
+		   lmq				" save in MQ
+000412: 652000  
+		   lac i.flags			" get file flags
+000413: 205732  
+		   and o777760			" clear permissions
+000414: 504202  
+		   omq				" or in new permissions from MQ
+000415: 640002  
+		   dac i.flags			" save in inode
+000416: 045732  
+		   jms iput			" write inode back
+000417: 103046  
+		   jmp okexit
+000420: 600102  
+		.chown:
+		   jms isown			" check if user owns file arg
+000421: 102664  
+		   lac u.ac			" get new owner
+000422: 205631  
+		   dac i.uid			" save in inode
+000423: 045742  
+		   jms iput			" write inode back
+000424: 103046  
+		   jmp okexit
+000425: 600102  
+		.getuid:			" getuid system call
+		   lac u.uid
+000426: 205644  
+		   dac u.ac			" return u.uid in user AC
+000427: 045631  
+		   jmp sysexit
+000430: 600103  
+		.seek:
+		   jms seektell
+000431: 102645  
+		   tad u.base
+000432: 345651  
+		"** 01-s1.pdf page 8
+		   spa
+000433: 741100  
+		   jms error
+000434: 101531  
+		   lmq
+000435: 652000  
+		   lac f.flags
+000436: 205757  
+		   and d1
+000437: 504117  
+		   sna
+000440: 741200  
+		   jms 1f
+000441: 100450  
+		   lacq
+000442: 641002  
+		   jms betwen; d0; i.size
+000443: 101643  
+000444: 004116  
+000445: 005744  
+		      jms dacisize
+000446: 103402  
+		   jmp 2f
+000447: 600455  
+		1:
+		   lacq
+000450: 641002  
+		   jms betwen; d0; i.size
+000451: 101643  
+000452: 004116  
+000453: 005744  
+		      lac i.size
+000454: 205744  
+		2:
+		   dac f.badd
+000455: 045760  
+		   dac u.ac
+000456: 045631  
+		   jms fput
+000457: 102402  
+		   jmp sysexit
+000460: 600103  
+		.tell:
+		   jms seektell
+000461: 102645  
+		   cma
+000462: 740001  
+		   tad d1
+000463: 344117  
+		   tad u.base
+000464: 345651  
+		   dac u.ac
+000465: 045631  
+		   jmp sysexit
+000466: 600103  
+		.link:
+		   jms arg			" Save the argument pointers in
+000467: 102625  
+		   dac 0f			"0f, 1f and 2f
+000470: 040477  
+		   jms arg
+000471: 102625  
+		   dac 1f
+000472: 040502  
+		   jms arg
+000473: 102625  
+		   dac 2f
+000474: 040506  
+		   lac u.cdir			" Search the current directory
+000475: 205646  
+		   jms namei; 0:0		" for the first argument
+000476: 102737  
+000477: 000000  
+		      jms error			" Didn't find it
+000500: 101531  
+		   jms namei; 1:0		" In the i-num found by 1st namei,
+000501: 102737  
+000502: 000000  
+		      jms error			" search for 2nd argument, err not found
+000503: 101531  
+		   dac u.base			" save in user data
+000504: 045651  
+		   jms copy; 2:0; name; 4
+000505: 101667  
+000506: 000000  
+000507: 005504  
+000510: 000004  
+		   lac u.cdir			" Search the process' current directory
+000511: 205646  
+		   jms namei; name		" for the third argument
+000512: 102737  
+000513: 005504  
+		      skp
+000514: 741000  
+		   jms error			" Error if it already exists
+000515: 101531  
+		   lac d1
+000516: 204117  
+		   dac mode			" Save mode bits for access
+000517: 045500  
+		   jms access			" check access (or return error to user)
+000520: 102312  
+		   jms dslot			" allocate directory slot
+000521: 102463  
+		   lac u.base			" get source file i-number
+000522: 205651  
+		   jms iget			" read inode in
+000523: 103017  
+		   lac ii			" get the i-num
+000524: 205731  
+		   dac d.i			" Save the i-num in the directory entry
+000525: 045747  
+		   jms copy; name; d.name; 4	" Copy the new link name into the directory entry
+000526: 101667  
+000527: 005504  
+000530: 005750  
+000531: 000004  
+		   lac i.uniq			" Copy the i-node unique number into
+000532: 205745  
+		   dac d.uniq			" the directory entry
+000533: 045754  
+		   -1
+000534: 777777  
+		   tad i.nlks			" Decrement link count, i.e. one more link
+000535: 345743  
+		   dac i.nlks
+000536: 045743  
+		"** 01-s1.pdf page 9
+		   jms iput			" Save the i-node and directory entry for
+000537: 103046  
+		   jms dput			" the new link
+000540: 103136  
+		   jmp okexit			" and return OK
+000541: 600102  
+		.unlink:
+		   jms argname			" fetch filename, inode
+000542: 102631  
+		   dac u.base			" save i-number
+000543: 045651  
+		   lac d1			" write mode bit
+000544: 204117  
+		   dac mode			" save for access call
+000545: 045500  
+		   jms access			" check access or return error (reads inode)
+000546: 102312  
+		   dzm d.i			" clear directory i-num
+000547: 145747  
+		   jms dput			" write directory entry back
+000550: 103136  
+		   lac u.base			" get i-number back
+000551: 205651  
+		   jms iget			" read inode back
+000552: 103017  
+		   isz i.nlks			" increment link count (kept as negative count)
+000553: 445743  
+		   jmp 1f			"  not zero
+000554: 600557  
+		   jms itrunc			" zero links: free blocks
+000555: 102675  
+		   dzm i.flags			" clear status (free inode)
+000556: 145732  
+		1:
+		   jms iput			" write inode back to disk
+000557: 103046  
+		   jmp sysexit
+000560: 600103  
+		.setuid:			" setuid system call
+		   lac u.uid			" load current user id
+000561: 205644  
+		   sma				" negative (super user)
+000562: 740100  
+		   jms error			"  no: error!!
+000563: 101531  
+		   lac u.ac			" load user AC
+000564: 205631  
+		   dac u.uid			" save as new uid
+000565: 045644  
+		   jmp sysexit
+000566: 600103  
+			" rename system call:
+			"   sys rename; old_name_ptr; new_name_ptr
+			" Questions:
+			"   when is directory entry read??
+			"   is access check on directory or src file??
+			"   check for existing file with new name??
+			"   when is directory entry written back??
+		.rename:
+		   jms arg			" fetch first arg (old name pointer)
+000567: 102625  
+		   dac 0f			" save for namei
+000570: 040575  
+		   jms arg			" fetch second arg (new name pointer)
+000571: 102625  
+		   dac 1f			" save for copy
+000572: 040603  
+		   lac u.cdir			" get CWD
+000573: 205646  
+		   jms namei; 0:0		" search for (old) name
+000574: 102737  
+000575: 000000  
+		      jms error			"  not found: return error
+000576: 101531  
+		   lac d1			" get write mode bit
+000577: 204117  
+		   dac mode			" save for access call
+000600: 045500  
+		   jms access			" access OK? (or return error to user)
+000601: 102312  
+		   jms copy; 1:0; d.name; 4	" copy new name into directory entry
+000602: 101667  
+000603: 000000  
+000604: 005750  
+000605: 000004  
+		   jms dput			" and write it to disk
+000606: 103136  
+		   jmp okexit
+000607: 600102  
+			" time system call returns line (mains) frequency ticks
+			" high order bits returned in AC, low order in MQ
+			" s.tim is located in "system" block (written to disk)
+			" so this is a running count of uptime since first boot!
+			" at 60Hz, 36 bits would last 36+ years!
+		.time:
+		   lac s.tim			" load high order bits
+000610: 205557  
+		   dac u.ac			" return in AC
+000611: 045631  
+		   lac s.tim+1			" load low order bits
+000612: 205560  
+		   dac u.mq			" return in MQ
+000613: 045632  
+		   jmp sysexit
+000614: 600103  
+		.chdir:
+		   jms argname			" fetch argument as filename
+000615: 102631  
+		   jms iget			" (re)read inode(?]
+000616: 103017  
+		   lac i.flags			" get flags
+000617: 205732  
+		   and o20			" get directory bit
+000620: 504134  
+		   sna				" is a directory?
+000621: 741200  
+		   jms error			"  no: return error to user
+000622: 101531  
+		   lac ii			" yes: get i-number
+000623: 205731  
+		   dac u.cdir			" save as current working directory
+000624: 045646  
+		"** 01-s1.pdf page 10
+		   jmp okexit
+000625: 600102  
+			" open system call
+			"   sys open; filename_ptr; flags (0 for read, 1 for write)
+			" returns w/ "fd" in AC (or -1 if not found)
+		.open:
+		   jms arg			" get filename
+000626: 102625  
+		   dac 0f			" save for namei
+000627: 040640  
+		   jms arg			" get flags
+000630: 102625  
+		   sza				" zero (read)
+000631: 740200  
+		   lac d1			"  no: get write mode bit
+000632: 204117  
+		   sna				" non-zero (write)?
+000633: 741200  
+		   lac d2			"  no: get read mode bot
+000634: 204120  
+		   dac mode			" save for access call
+000635: 045500  
+		   lac u.cdir			" get current working directory
+000636: 205646  
+		   jms namei; 0:0		" search for file
+000637: 102737  
+000640: 000000  
+		      jms error			" error: return -1
+000641: 101531  
+		   jms iget			" load inode
+000642: 103017  
+		   jms access			" check access (may return w/ error to user)
+000643: 102312  
+		   lac i.flags			" get file flags
+000644: 205732  
+		   and o20			" get directory bit
+000645: 504134  
+		   sna				" is directory?
+000646: 741200  
+		   jmp open1			"  no, join common code
+000647: 600715  
+		   lac mode			" get access mode
+000650: 205500  
+		   and d1			" get write bit
+000651: 504117  
+		   sna				" write access?
+000652: 741200  
+		   jmp open1			"  no, continue
+000653: 600715  
+		   lac u.uid			" yes: get uid?
+000654: 205644  
+		   sma				" negative? (-1 is superuser)
+000655: 740100  
+		   jms error			"  no: return error
+000656: 101531  
+		   jmp open1			" yes: join common code
+000657: 600715  
+		.creat:
+		   lac d1			" mode bit 1 (write)
+000660: 204117  
+		   dac mode			" save for access call
+000661: 045500  
+		   jms arg			" get name pointer
+000662: 102625  
+		   dac .+2			" save for copy
+000663: 040665  
+		   jms copy; ..; name; 4	" copy filename to "name"
+000664: 101667  
+000665: 000000  
+000666: 005504  
+000667: 000004  
+		   lac u.cdir
+000670: 205646  
+		   jms namei; name		" look up in current working directory
+000671: 102737  
+000672: 005504  
+		      jmp 1f			"  not found
+000673: 600711  
+		   jms iget			" file exists: read inode
+000674: 103017  
+		   jms access			" check access (or return error to user)
+000675: 102312  
+		   lac i.flags			" get flags
+000676: 205732  
+		   and o20			" get directory bit
+000677: 504134  
+		   sna				" is a directory?
+000700: 741200  
+		   jmp .+4			"  no: skip to truncate
+000701: 600705  
+		   lac u.uid			" get user
+000702: 205644  
+		   sma				" is super user?
+000703: 740100  
+		   jms error			"  no: error
+000704: 101531  
+		   jms itrunc			" yes: truncate
+000705: 102675  
+		   cla
+000706: 750000  
+		   jms dacisize			" clear i.size
+000707: 103402  
+		   jmp open1
+000710: 600715  
+		1:
+		   jms access			" here if not found
+000711: 102312  
+		   lac u.ac			" get access bits from user AC (zero for lock!)
+000712: 205631  
+		   and o17			" mask to permissions
+000713: 504133  
+		   jms icreat
+000714: 102475  
+		open1:				" common exit for open/creat
+		   jms fassign			" assign fd slot
+000715: 102327  
+		      jms error			"  none free, return -1
+000716: 101531  
+		   jmp sysexit
+000717: 600103  
+		"** 01-s1.pdf page 11
+		.close:
+		   jms finac			" get fnode (open file) for fd in user AC
+000720: 103370  
+		   dzm f.flags			" clear flags
+000721: 145757  
+		   jms fput			" write fnode back to u.ofiles
+000722: 102402  
+		   jmp sysexit
+000723: 600103  
+		.read:
+		   jms arg			" get argument
+000724: 102625  
+		   and o17777			" mask to address
+000725: 504160  
+		   dac u.base			" save as I/O base
+000726: 045651  
+		   jms arg			" get second argument
+000727: 102625  
+		   dac u.count			" save as count
+000730: 045652  
+		   lac u.base			" get base
+000731: 205651  
+		   jms betwen; o10000; o17777	" end inside user memory?
+000732: 101643  
+000733: 004156  
+000734: 004160  
+		      jms error			"  no: error
+000735: 101531  
+		   tad u.count			" get end of buffer
+000736: 345652  
+		   jms betwen; u.base; o17777	" inside buffer/user memory?
+000737: 101643  
+000740: 005651  
+000741: 004160  
+		      jms error			"  no: error
+000742: 101531  
+		   dac u.limit			" yes: save as I/O limit
+000743: 045653  
+		1:
+		   jms finac			" get fnode for fd in user AC
+000744: 103370  
+		   lac f.flags			" get open file flags
+000745: 205757  
+		   and d1			" get write bit
+000746: 504117  
+		   sza				" open for write?
+000747: 740200  
+		   jms error			"  yes: error
+000750: 101531  
+		   lac i.flags			" get inode flags
+000751: 205732  
+		   and o40			" get special file bit
+000752: 504136  
+		   sna				" special?
+000753: 741200  
+		   jmp 1f			"  no
+000754: 600762  
+		   iof				" yes: disable interrupts
+000755: 700002  
+		   lac ii			" get i number
+000756: 205731  
+		   tad swr			" add to base instruction
+000757: 341324  
+		   dac .+1
+000760: 040761  
+		   jmp .. i			" dispatch to read routine
+000761: 620000  
+		1:
+		   lac u.base			" get user base
+000762: 205651  
+		   dac 1f+1			" save as iread base
+000763: 040770  
+		   lac u.count			" get user count
+000764: 205652  
+		   dac 1f+2			" save as iread count
+000765: 040771  
+		   lac f.badd			" get file offset
+000766: 205760  
+		1:
+		   jms iread; ..; ..
+000767: 103266  
+000770: 000000  
+000771: 000000  
+		   jmp exitrw
+000772: 601034  
+			" write system call:
+			" AC/ fd
+			"   sys write; buffer; count
+			" AC/ count or -1 on error
+		.write:
+		   jms arg			" pick up buffer
+000773: 102625  
+		   and o17777			" mask to addr
+000774: 504160  
+		   dac u.base			" save as I/O base
+000775: 045651  
+		   jms arg			" pick up count
+000776: 102625  
+		   dac u.count			" save as count
+000777: 045652  
+		   tad u.base			" add base (get limit)
+001000: 345651  
+		   jms betwen; u.base; o17777	" check between base and end of memory
+001001: 101643  
+001002: 005651  
+001003: 004160  
+		      jms error			"  no: error
+001004: 101531  
+		   dac u.limit			" yes: save as limit
+001005: 045653  
+		   jms finac			" get fnode with fd from user AC
+001006: 103370  
+		   lac f.flags			" get open file table flags
+001007: 205757  
+		   and d1			" open for write?
+001010: 504117  
+		   sna				" if yes, skip
+001011: 741200  
+		   jms error			"   no: error
+001012: 101531  
+		   lac i.flags			" get inode flags
+001013: 205732  
+		   and o40			" get device bit
+001014: 504136  
+		"** 01-s1.pdf page 12
+		   sna				" special?
+001015: 741200  
+		   jmp 1f			"  no
+001016: 601024  
+		   iof				" yes, special: turn interrupts off
+001017: 700002  
+		   lac ii			" get i number
+001020: 205731  
+		   tad sww			" get write routine entry addr
+001021: 341324  
+		   dac .+1
+001022: 041023  
+		   jmp .. i			" dispatch to write routine
+001023: 620000  
+		1:				" here with regular file
+		   lac u.base			" get base
+001024: 205651  
+		   dac 1f+1			" save as iwrite arg 1
+001025: 041032  
+		   lac u.count			" get count
+001026: 205652  
+		   dac 1f+2			" save as iwrite 2
+001027: 041033  
+		   lac f.badd			" get fd offset
+001030: 205760  
+		1:
+		   jms iwrite; ..; ..		" write to file
+001031: 103257  
+001032: 000000  
+001033: 000000  
+		exitrw:				" common exit for read/write system calls
+		   dac u.ac			" save return in user AC
+001034: 045631  
+		   tad f.badd
+001035: 345760  
+		   dac f.badd			" update file offset
+001036: 045760  
+		   jms iput			" release inode
+001037: 103046  
+		   jms fput			" release fnode
+001040: 102402  
+		   jmp sysexit			" return to user
+001041: 600103  
+		"** 01-s1.pdf page 14
+		" s3
+			" search for user (process) table entry
+			" call:
+			"   jms searchu; worker_routine_addr
+			" worker called with copy of a process table entry in "lu"
+			"	can return directly (from caller of searchu)
+			"	index location 8 points to next process table entry
+		searchu: 0
+001042: 000000  
+		   lac searchu i		" fetch argument
+001043: 221042  
+		   dac 9f+t+1			" in t1
+001044: 044207  
+		   -mnproc			" loop counter
+001045: 777766  
+		   dac 9f+t			" in t0
+001046: 044206  
+		   law ulist-1			" ulist ptr
+001047: 765560  
+		   dac 8			" in index 8
+001050: 040010  
+		1:
+		   lac 8 i			" copy ulist entry to lu
+001051: 220010  
+		   dac lu
+001052: 045514  
+		   lac 8 i
+001053: 220010  
+		   dac lu+1
+001054: 045515  
+		   lac 8 i
+001055: 220010  
+		   dac lu+2
+001056: 045516  
+		   lac 8 i
+001057: 220010  
+		   dac lu+3
+001060: 045517  
+		   jms 9f+t+1 i			" call argument as subroutine
+001061: 124207  
+		   isz 9f+t			" returned: loop done?
+001062: 444206  
+		   jmp 1b			"  no, do it again
+001063: 601051  
+		   isz searchu			" skip argument
+001064: 441042  
+		   jmp searchu i
+001065: 621042  
+		t = t+2
+	000003  
+			" look for a process with matching status
+			"   jms lookfor; status
+			"    found: ulist ptr in AC
+			"   not found
+		lookfor: 0
+001066: 000000  
+		   jms searchu; 1f
+001067: 101042  
+001070: 001074  
+		   isz lookfor			" skip argument
+001071: 441066  
+		   isz lookfor			" give skip return
+001072: 441066  
+		   jmp lookfor i
+001073: 621066  
+		1: 0				" worker called by searchu
+001074: 000000  
+		   lac lu
+001075: 205514  
+		   rtl; rtl; and o7		" bits 0:2 of lu
+001076: 742010  
+001077: 742010  
+001100: 504125  
+		   sad lookfor i		" match argument?
+001101: 561066  
+		   skp				"  yes
+001102: 741000  
+		   jmp 1b i			"   no, return, keep going
+001103: 621074  
+		   -3
+001104: 777775  
+		   tad 8			" roll index 8 back to this entry
+001105: 340010  
+		   and o17777
+001106: 504160  
+		   isz lookfor			" skip lookfor argument
+001107: 441066  
+		   jmp lookfor i		" non-skip return
+001110: 621066  
+			" fork system call:
+			"   sys fork
+			"    return at +1 in parent, child pid in AC
+			"   return at +2 in child, parent pid in AC
+		.fork:
+		   jms lookfor; 0 " not-used	" find an unused process slot
+001111: 101066  
+001112: 000000  
+		      skp
+001113: 741000  
+		      jms error			" none found- return error
+001114: 101531  
+		   dac 9f+t			" save ulist ptr in t0
+001115: 044210  
+		   isz uniqpid			" generate new pid
+001116: 445513  
+		   lac uniqpid
+001117: 205513  
+		   dac u.ac			" return in child pid in AC
+001120: 045631  
+		   law sysexit
+001121: 760103  
+		   dac u.swapret		" return from system call when swapped back in
+001122: 045650  
+		   lac o200000			" change process status to out/ready (1->3)
+001123: 204170  
+		   tad u.ulistp i
+001124: 365647  
+		   dac u.ulistp i
+001125: 065647  
+		   jms dskswap; 07000		" swap parent out
+001126: 102267  
+001127: 007000  
+		   lac 9f+t			" get unused ulist slot back
+001130: 204210  
+		   dac u.ulistp			" set ulist pointer
+001131: 045647  
+		   lac o100000			" mark child in/notready? (3->2)
+001132: 204166  
+		   xor u.ulistp i
+001133: 265647  
+		   dac u.ulistp i
+001134: 065647  
+		   lac u.pid			" get old (parent) pid
+001135: 205645  
+		"** 01-s1.pdf page 15
+		   dac u.ac			" return parent pid in AC
+001136: 045631  
+		   lac uniqpid
+001137: 205513  
+		   dac u.pid			" set child pid
+001140: 045645  
+		   isz 9f+t			" advance to second word in process table
+001141: 444210  
+		   dac 9f+t i			" set pid in process table
+001142: 064210  
+		   isz u.rq+8			" give skip return
+001143: 445643  
+		   dzm u.intflg			" clear int flag
+001144: 145713  
+		   jmp sysexit			" return in child process
+001145: 600103  
+		t= t+1
+	000004  
+		badcal:				" bad (unimplemented) system call
+		   clon				" clear any pending clock interrupt?
+001146: 700044  
+		   -1
+001147: 777777  
+		   dac 7			" set location 7 to -1?!
+001150: 040007  
+			" fall into "save" system call
+			" Ken says save files could be resumed, and used for checkpointing!
+		.save:				" "sys save" system call
+		   lac d1			" get inode 1 (core file?)
+001151: 204117  
+		   jms iget
+001152: 103017  
+		   cla
+001153: 750000  
+		   jms iwrite; 4096; 4096	" dump core
+001154: 103257  
+001155: 010000  
+001156: 010000  
+		   jms iwrite; userdata; 64	" and user area
+001157: 103257  
+001160: 005631  
+001161: 000100  
+		   jms iput
+001162: 103046  
+		.exit:
+		   lac u.dspbuf
+001163: 205712  
+		   sna				" process using display?
+001164: 741200  
+		   jmp .+3			"  no
+001165: 601170  
+		   law dspbuf			"   yes: get default display buffer
+001166: 764446  
+		   jms movdsp			"   move display
+001167: 102615  
+		   jms awake
+001170: 101304  
+		   lac u.ulistp i
+001171: 225647  
+		   and o77777			" mark process table entry free
+001172: 504165  
+		   dac u.ulistp i
+001173: 065647  
+		   isz u.ulistp
+001174: 445647  
+		   dzm u.ulistp i		" clear pid in process table
+001175: 165647  
+		   jms swap			" find a new process to run
+001176: 100136  
+			" exit falls into "rmes" !!!
+			" rmes system call
+			"   sys smes
+			" returns with message delivered, or error if process does not exit
+			" AC/ sending pid
+			" MQ/ message
+		.rmes:
+		   jms awake
+001177: 101304  
+		   lac o100000			" mark this process "not ready"
+001200: 204166  
+		   tad u.ulistp i		" by incrementing status
+001201: 365647  
+		   dac u.ulistp i
+001202: 065647  
+		   law 2
+001203: 760002  
+		   tad u.ulistp
+001204: 345647  
+		   dac 9f+t			" pointer to msg status in proc table
+001205: 044211  
+		   -1
+001206: 777777  
+		   dac 9f+t i			" set to -1 (waiting for message)
+001207: 064211  
+		   jms swap			" switch processes
+001210: 100136  
+		   law 2
+001211: 760002  
+		   tad u.ulistp
+001212: 345647  
+		   dac 9f+t
+001213: 044211  
+		   lac 9f+t i			" get msg status word
+001214: 224211  
+		   cma				" complement (get sender pid)
+001215: 740001  
+		   dac u.ac			" return in user AC
+001216: 045631  
+		   dzm 9f+t i			" clear status word
+001217: 164211  
+		   isz 9f+t
+001220: 444211  
+		   lac 9f+t i			" get message
+001221: 224211  
+		   dac u.mq			" return in user MQ
+001222: 045632  
+		   dzm 9f+t i			" clear message
+001223: 164211  
+		   jmp sysexit
+001224: 600103  
+		t = t+1
+	000005  
+		"** 01-s1.pdf page 16
+			" smes system call
+			" AC/ pid
+			" MQ/ message
+			"   sys smes
+			" returns with message delivered, or error if process does not exit
+		.smes:
+		   lac u.ac			" get pid from user AC
+001225: 205631  
+		   sna spa			" >0?
+001226: 741300  
+		   jms error			"  no: error
+001227: 101531  
+		   jms searchu; 1f		" search for process
+001230: 101042  
+001231: 001237  
+		   law 2
+001232: 760002  
+		   tad u.ulistp
+001233: 345647  
+		   dac 9f+t
+001234: 044212  
+		   dzm 9f+t i
+001235: 164212  
+		   jms error
+001236: 101531  
+		1: 0				" worker for searchu
+001237: 000000  
+		   lac lu+1			" get pid
+001240: 205515  
+		   sad u.ac			" match?
+001241: 545631  
+		   skp				"  yes
+001242: 741000  
+		   jmp 1b i			"   no
+001243: 621237  
+		   lac lu+2			" get mailbox status
+001244: 205516  
+		   sad dm1			" -1?
+001245: 544204  
+		   jmp 1f			"  yes
+001246: 601265  
+		   lac o100000			" no: bump our process status (to notready?)
+001247: 204166  
+		   tad u.ulistp i
+001250: 365647  
+		   dac u.ulistp i
+001251: 065647  
+		   law 2
+001252: 760002  
+		   tad u.ulistp
+001253: 345647  
+		   dac 9f+t
+001254: 044212  
+		   lac u.ac
+001255: 205631  
+		   dac 9f+t i
+001256: 064212  
+		   jms swap
+001257: 100136  
+		   law 2
+001260: 760002  
+		   tad u.ulistp
+001261: 345647  
+		   dac 9f+t
+001262: 044212  
+		   dzm 9f+t i
+001263: 164212  
+		   jmp .smes
+001264: 601225  
+		1:
+		   -3
+001265: 777775  
+		   tad 8
+001266: 340010  
+		   dac 9f+t			" pointer to dest process ulist entry
+001267: 044212  
+		   lac o700000			" complement process status? marks ready??
+001270: 204200  
+		   tad 9f+t i
+001271: 364212  
+		   dac 9f+t i
+001272: 064212  
+		   isz 9f+t
+001273: 444212  
+		   isz 9f+t			" point to mailbox word?
+001274: 444212  
+		   lac u.pid			" get our pid
+001275: 205645  
+		   cma				" complement
+001276: 740001  
+		   dac 9f+t i			" store in mailbox??
+001277: 064212  
+		   isz 9f+t			" advance to next word
+001300: 444212  
+		   lac u.mq			" get user MQ
+001301: 205632  
+		   dac 9f+t i			" save as message
+001302: 064212  
+		   jmp okexit
+001303: 600102  
+		t = t+1
+	000006  
+			" wake up process hanging on rmes for current process??
+		awake: 0
+001304: 000000  
+		   jms searchu; 1f
+001305: 101042  
+001306: 001310  
+		   jmp awake i
+001307: 621304  
+		1: 0				" searchu worker
+001310: 000000  
+		   lac u.pid			" get caller pid
+001311: 205645  
+		   sad lu+2			" match mailbox status?
+001312: 545516  
+		   skp				"  yes
+001313: 741000  
+		   jmp 1b i			"   no, return
+001314: 621310  
+		   -3
+001315: 777775  
+		   tad 8			" get pointer to process table entry
+001316: 340010  
+		   dac 9f+t			" save in t0
+001317: 044213  
+		"** 01-s1.pdf page 17
+		   lac o700000
+001320: 204200  
+		   tad 9f+t i			" complement process status (mark ready)??
+001321: 364213  
+		   dac 9f+t i
+001322: 064213  
+		   jmp 1b i			" return from worker
+001323: 621310  
+		t = t+1
+	000007  
+		swr:
+		sww:
+		   jmp .-4 i
+001324: 621320  
+		   .halt; rttyi; rkbdi; rppti; .halt
+001325: 001336  
+001326: 001337  
+001327: 001410  
+001330: 001461  
+001331: 001336  
+		   .halt; wttyo; wdspo; wppto
+001332: 001336  
+001333: 001357  
+001334: 001451  
+001335: 001475  
+		.halt: jms halt
+001336: 102254  
+			" read routine for ttyin special file
+		rttyi:
+		   jms chkint1
+001337: 101535  
+		   lac d1		" ** written d3 ttyin2
+001340: 204117  
+		   jms getchar
+001341: 101745  
+		      jmp 1f
+001342: 601353  
+		   and o177
+001343: 504147  
+		   jms betwen; o101; o132	" upper case?
+001344: 101643  
+001345: 004141  
+001346: 004143  
+		      skp			"  no
+001347: 741000  
+		   tad o40			"   yes: convert to lower
+001350: 344136  
+		   alss 9
+001351: 660711  
+		   jmp passone
+001352: 601523  
+		1:
+		   jms sleep; sfiles+0
+001353: 102434  
+001354: 005520  
+		   jms swap
+001355: 100136  
+		   jmp rttyi
+001356: 601337  
+			" write routine for ttyout special file
+		wttyo:
+		   jms chkint1
+001357: 101535  
+		   jms forall
+001360: 102412  
+		   sna
+001361: 741200  
+		   jmp fallr
+001362: 602425  
+		   lmq
+001363: 652000  
+		   lac sfiles+1
+001364: 205521  
+		   spa
+001365: 741100  
+		   jmp 1f
+001366: 601376  
+		   xor o400000
+001367: 244173  
+		   dac sfiles+1
+001370: 045521  
+		   lacq
+001371: 641002  
+		   tls				" load output buffer
+001372: 700406  
+		   sad o12			" newline?
+001373: 544130  
+		   jms putcr			"  yes, put CR as well
+001374: 104014  
+		   jmp fallr
+001375: 602425  
+		1:
+		   lacq
+001376: 641002  
+		   dac char
+001377: 045511  
+		   lac d2	"** written: d6 ttyout
+001400: 204120  
+		   jms putchar
+001401: 101730  
+		      skp
+001402: 741000  
+		   jmp fallr
+001403: 602425  
+		   jms sleep; sfiles+1
+001404: 102434  
+001405: 005521  
+		   jms swap
+001406: 100136  
+		   jmp wttyo
+001407: 601357  
+			" read routine for (display) "keyboard" special file
+		rkbdi:
+		   jms chkint1
+001410: 101535  
+		   lac d3
+001411: 204121  
+		   jms getchar
+001412: 101745  
+		"** 01-s1.pdf page 18
+		      jmp 3f
+001413: 601445  
+		   lmq
+001414: 652000  
+		   and o155
+001415: 504146  
+		   sad o55
+001416: 544137  
+		   jmp 1f			" -/=? map to =?-/ ???
+001417: 601425  
+		   lacq
+001420: 641002  
+		   and o137
+001421: 504145  
+		   sad o134
+001422: 544144  
+		   skp				" \| map to Ll ???
+001423: 741000  
+		   jmp 2f
+001424: 601430  
+		1:
+		   lacq
+001425: 641002  
+		   xor o20
+001426: 244134  
+		   lmq
+001427: 652000  
+		2:
+		   lacq
+001430: 641002  
+		   dac u.limit
+001431: 045653  
+		1:
+		   jms chkint1
+001432: 101535  
+		   lac u.limit
+001433: 205653  
+		   jms dspput
+001434: 102540  
+		      jmp 1f
+001435: 601442  
+		   jms sleep; sfiles+6
+001436: 102434  
+001437: 005526  
+		   jms swap
+001440: 100136  
+		   jmp 1b
+001441: 601432  
+		1:
+		   lac u.limit
+001442: 205653  
+		   alss 9
+001443: 660711  
+		   jmp passone
+001444: 601523  
+		3:
+		   jms sleep; sfiles+2
+001445: 102434  
+001446: 005522  
+		   jms swap
+001447: 100136  
+		   jmp rkbdi
+001450: 601410  
+			" write routine for (graphic) "display" special file
+		wdspo:
+		   jms chkint1
+001451: 101535  
+		   jms forall
+001452: 102412  
+		   jms dspput			" put char (fallr "returns" here)
+001453: 102540  
+		      jmp fallr			" go back for next (continuation!)
+001454: 602425  
+		   jms sleep; sfiles+6
+001455: 102434  
+001456: 005526  
+		   jms swap
+001457: 100136  
+		   jmp wdspo
+001460: 601451  
+			" read routine for paper tape reader special file
+		rppti:
+		   lac d4
+001461: 204122  
+		   jms getchar
+001462: 101745  
+		      jmp .+3
+001463: 601466  
+		   alss 9
+001464: 660711  
+		   jmp passone
+001465: 601523  
+		   lac sfiles+3
+001466: 205523  
+		   sma
+001467: 740100  
+		   rsa
+001470: 700104  
+		1:
+		   jms sleep; sfiles+3
+001471: 102434  
+001472: 005523  
+		   jms swap
+001473: 100136  
+		   jmp rppti
+001474: 601461  
+		"** 01-s1.pdf page 19
+			" write routine for paper tape punch special file
+		wppto:
+		   jms forall
+001475: 102412  
+		   sna
+001476: 741200  
+		   jmp fallr
+001477: 602425  
+		   lmq
+001500: 652000  
+		   lac sfiles+4
+001501: 205524  
+		   spa
+001502: 741100  
+		   jmp 1f
+001503: 601511  
+		   xor o400000
+001504: 244173  
+		   dac sfiles+4
+001505: 045524  
+		   lacq
+001506: 641002  
+		   psa
+001507: 700204  
+		   jmp fallr
+001510: 602425  
+		1:
+		   lacq
+001511: 641002  
+		   dac char
+001512: 045511  
+		   lac d5
+001513: 204123  
+		   jms putchar
+001514: 101730  
+		      skp
+001515: 741000  
+		   jmp fallr
+001516: 602425  
+		   jms sleep; sfiles+4
+001517: 102434  
+001520: 005524  
+		   jms swap
+001521: 100136  
+		   jmp wppto
+001522: 601475  
+			" common exit for special file input
+		passone:
+		   sad o4000			" CTRL/D?
+001523: 544154  
+		   jmp okexit			"  yes: return zero
+001524: 600102  
+		   dac u.base i			" no: save for user
+001525: 065651  
+		   lac d1			" return 1
+001526: 204117  
+		   dac u.ac
+001527: 045631  
+		   jmp sysexit
+001530: 600103  
+		error: 0
+001531: 000000  
+		   -1
+001532: 777777  
+		   dac u.ac
+001533: 045631  
+		   jmp sysexit
+001534: 600103  
+		chkint1: 0
+001535: 000000  
+		   dzm .insys
+001536: 144066  
+		   jms chkint
+001537: 100320  
+		      skp
+001540: 741000  
+		   jmp .save
+001541: 601151  
+		   -1
+001542: 777777  
+		   dac .insys
+001543: 044066  
+		   jmp chkint1 i
+001544: 621535  
+		"** 01-s1.pdf page 21
+		" s4
+			" allocate a free disk block for a file (data or indirect)
+		alloc: 0
+001545: 000000  
+		   -1			" Decrement the # free block numbers in the cache
+001546: 777777  
+		   tad s.nfblks		" kept at s.fblks. Jump to 1f if no free blocks left.
+001547: 345543  
+		   spa
+001550: 741100  
+		   jmp 1f
+001551: 601566  
+		   dac s.nfblks		" Update the count of free block numbers
+001552: 045543  
+		   tad fblksp
+001553: 344106  
+		   jms laci
+001554: 101635  
+		   dac 9f+t
+001555: 044214  
+		   jms copyz; dskbuf; 64
+001556: 101712  
+001557: 007700  
+001560: 000100  
+		   lac 9f+t
+001561: 204214  
+		   jms dskwr
+001562: 102146  
+		   dzm .savblk
+001563: 144072  
+		   lac 9f+t
+001564: 204214  
+		   jmp alloc i		" Return from routine
+001565: 621545  
+		1:
+		   lac s.nxfblk
+001566: 205542  
+		   sna
+001567: 741200  
+		   jms halt " OUT OF DISK
+001570: 102254  
+		   dac s.fblks
+001571: 045544  
+		   jms dskrd
+001572: 102116  
+		   lac dskbuf
+001573: 207700  
+		   dac s.nxfblk
+001574: 045542  
+		   jms copy; dskbuf+1; s.fblks+1; 9
+001575: 101667  
+001576: 007701  
+001577: 005545  
+001600: 000011  
+		   lac d10
+001601: 204130  
+		   dac s.nfblks
+001602: 045543  
+		   jmp alloc+1
+001603: 601546  
+			" free the disk block whose number is in AC
+		free: 0
+001604: 000000  
+		   lmq
+001605: 652000  
+		   lac s.nfblks
+001606: 205543  
+		   sad d10
+001607: 544130  
+		   jmp 1f
+001610: 601620  
+		   tad fblksp
+001611: 344106  
+		   dac 9f+t
+001612: 044214  
+		   lacq
+001613: 641002  
+		   dac 9f+t i
+001614: 064214  
+		   dzm .savblk
+001615: 144072  
+		   isz s.nfblks
+001616: 445543  
+		   jmp free i
+001617: 621604  
+		1:
+		   lac s.nxfblk
+001620: 205542  
+		   dac dskbuf
+001621: 047700  
+		   jms copy; s.fblks+1; dskbuf+1; 9
+001622: 101667  
+001623: 005545  
+001624: 007701  
+001625: 000011  
+		   lacq
+001626: 641002  
+		   dac s.nxfblk
+001627: 045542  
+		   jms dskwr
+001630: 102146  
+		   dzm .savblk
+001631: 144072  
+		   lac d1
+001632: 204117  
+		   dac s.nfblks
+001633: 045543  
+		   jmp free i				" Return from the routine
+001634: 621604  
+		t = t+1
+	000010  
+			" load AC indirect (without using indirect!)
+			" AC/ address
+			"   jms laci
+			" AC/ contents of address
+		laci: 0
+001635: 000000  
+		   and o17777				" clear everything but addr
+001636: 504160  
+		   tad o200000				" make into "lac addr"
+001637: 344170  
+		   dac .+1
+001640: 041641  
+		   lac ..				" fetch
+001641: 200000  
+		   jmp laci i				" return
+001642: 621635  
+		"** 01-s1.pdf page 22
+			" skip if AC between two values (inclusive)
+			"   jms betwen; low_ptr; high_ptr
+			"    
+			"  
+			" listing has an alternate written in
+			"  (which would require 'lac ptr' instead of 'ptr' args?)
+		betwen: 0
+001643: 000000  
+		   lmq cmq			" get ~AC in MQ
+001644: 652004  
+		   lac betwen i			" get low_ptr
+001645: 221643  
+		   dac 9f+t
+001646: 044215  
+		   isz betwen			" skip low_ptr
+001647: 441643  
+		   lacq				" get ~AC (-AC-1) from MQ
+001650: 641002  
+		   tad 9f+t i			" get low-AC-1
+001651: 364215  
+		   sma				" negative (AC >= low)?
+001652: 740100  
+		   jmp 1f			"  no, return w/o skip
+001653: 601663  
+		   lac betwen i			" fetch high_ptr
+001654: 221643  
+		   dac 9f+t
+001655: 044215  
+		   isz betwen			" skip high_ptr
+001656: 441643  
+		   lacq				" get -AC-1
+001657: 641002  
+		   tad 9f+t i			" add to high value (high-AC-1)
+001660: 364215  
+		   cma				" complement (AC-high)
+001661: 740001  
+		   spa sna			" AC-high <= 0?
+001662: 741300  
+		1:
+		   isz betwen			"  no: give happy (skip) return
+001663: 441643  
+		   lacq				" restore ~AC
+001664: 641002  
+		   cma				" restore AC
+001665: 740001  
+		   jmp betwen i			" return w/o skip
+001666: 621643  
+			" copy memory
+			" call:
+			"   jms copy; src; dest; count
+		copy: 0
+001667: 000000  
+		   -1
+001670: 777777  
+		   tad copy i
+001671: 361667  
+		   dac 8
+001672: 040010  
+		   isz copy
+001673: 441667  
+		   -1
+001674: 777777  
+		   tad copy i
+001675: 361667  
+		   dac 9
+001676: 040011  
+		   isz copy
+001677: 441667  
+		   -1
+001700: 777777  
+		   tad copy i
+001701: 361667  
+		   cma
+001702: 740001  
+		   dac 9f+t
+001703: 044215  
+		   isz copy
+001704: 441667  
+		1:
+		   lac 8 i
+001705: 220010  
+		   dac 9 i
+001706: 060011  
+		   isz 9f+t
+001707: 444215  
+		   jmp 1b
+001710: 601705  
+		   jmp copy i
+001711: 621667  
+			" copy zeroes (clear memory)
+			" call:
+			"   jms copyz; pointer; count
+		copyz: 0
+001712: 000000  
+		   -1
+001713: 777777  
+		   tad copyz i			" get call PC
+001714: 361712  
+		   dac 8			" save in index (pre-increments)
+001715: 040010  
+		   isz copyz			" skip pointer
+001716: 441712  
+		   -1
+001717: 777777  
+		   tad copyz i			" get count-1
+001720: 361712  
+		   cma				" get negative count
+001721: 740001  
+		   dac 9f+t			" save in t0
+001722: 044215  
+		   isz copyz			" skip count
+001723: 441712  
+		1:
+		   dzm 8 i			" zero word
+001724: 160010  
+		   isz 9f+t			" done?
+001725: 444215  
+		   jmp 1b			"  no: loop
+001726: 601724  
+		   jmp copyz i			" return
+001727: 621712  
+		t = t+1
+	000011  
+			" put queued character
+			" CALLED FROM PI: AVOIDS INDIRECT!!
+			" queue number in AC
+		putchar: 0
+001730: 000000  
+		"** 01-s1.pdf page 23
+		   dac 9f+t
+001731: 044216  
+		   cla
+001732: 750000  
+		   jms takeq
+001733: 101757  
+		      jmp putchar i
+001734: 621730  
+		   tad o40001
+001735: 344163  
+		   dac .+4
+001736: 041742  
+		   lac 9f+t
+001737: 204216  
+		   jms putq
+001740: 102011  
+		   lac char
+001741: 205511  
+		   dac q2+1 ..
+001742: 044301  
+		   isz putchar
+001743: 441730  
+		   jmp putchar i
+001744: 621730  
+		t = t+1
+	000012  
+			" get queued character
+			" CALLED FROM PI: AVOIDS INDIRECT!!
+			" queue number in AC:
+			"  1: tty input
+			"  2: tty output
+			"  3: display keyboard
+			"  4: paper tape reader
+			"  5: paper tape punch
+		getchar: 0
+001745: 000000  
+		   jms takeq
+001746: 101757  
+		      jmp i getchar
+001747: 621745  
+		   tad o200001
+001750: 344171  
+		   dac .+3
+001751: 041754  
+		   cla
+001752: 750000  
+		   jms putq
+001753: 102011  
+		   lac q2+1 ..
+001754: 204301  
+		   isz getchar
+001755: 441745  
+		   jmp i getchar
+001756: 621745  
+			" CALLED FROM PI: AVOIDS INDIRECT!!
+		takeq: 0
+001757: 000000  
+		   rcl
+001760: 744010  
+		   tad lacq1
+001761: 344110  
+		   dac .+7
+001762: 041771  
+		   tad o640000
+001763: 344177  
+		   dac .+17
+001764: 042005  
+		   tad d1
+001765: 344117  
+		   dac .+14
+001766: 042004  
+		   tad o500000
+001767: 344174  
+		   dac .+5
+001770: 041775  
+		   lac q1 ..
+001771: 204260  
+		   sna
+001772: 741200  
+		   jmp takeq i
+001773: 621757  
+		   dac lnkaddr
+001774: 045510  
+		   sad q1+1 ..
+001775: 544261  
+		   jmp .+5
+001776: 602003  
+		   tad o200000
+001777: 344170  
+		   dac .+1
+002000: 042001  
+		   lac q2 ..
+002001: 204300  
+		   jmp .+3
+002002: 602005  
+		   cla
+002003: 750000  
+		   dac q1+1 ..
+002004: 044261  
+		   dac q1 ..
+002005: 044260  
+		   isz takeq
+002006: 441757  
+		   lac lnkaddr
+002007: 205510  
+		   jmp i takeq
+002010: 621757  
+		putq: 0
+002011: 000000  
+		   rcl
+002012: 744010  
+		   tad dacq1
+002013: 344107  
+		   dac .+14
+002014: 042032  
+		   tad d1
+002015: 344117  
+		   dac .+13
+002016: 042033  
+		   tad o140000
+002017: 344167  
+		   dac .+1
+002020: 042021  
+		   lac q1-1 ..
+002021: 204257  
+		"** 01-s1.pdf page 24
+		   sna
+002022: 741200  
+		   jmp .+6
+002023: 602031  
+		   tad o40000
+002024: 344162  
+		   dac .+2
+002025: 042027  
+		   lac lnkaddr
+002026: 205510  
+		   dac q2 ..
+002027: 044300  
+		   jmp .+3
+002030: 602033  
+		   lac lnkaddr
+002031: 205510  
+		   dac q1 ..
+002032: 044260  
+		   dac q1+1 ..
+002033: 044261  
+		   jmp putq i
+002034: 622011  
+		srcdbs: 0
+002035: 000000  
+		   dac 9f+t+2   "* lmq
+002036: 044221  
+		   -ndskbs
+002037: 777774  
+		   dac 9f+t
+002040: 044217  
+		   law dskbs	"* -1 dac 8 written
+002041: 765067  
+		   dac 9f+t+1	"* lacq
+002042: 044220  
+		1:
+		   lac 9f+t+2	"** crossed out
+002043: 204221  
+		   sad 9f+t+1	"** isz 8 written
+002044: 544220  
+		   jmp srcdbs i
+002045: 622035  
+		   law 65	"** ??? crossed out
+002046: 760101  
+		   tad 9f+t+1	"** crossed out isz 8 written
+002047: 344220  
+		   isz 9f+t+1
+002050: 444220  
+		   isz 9f+t
+002051: 444217  
+		   jmp 1b
+002052: 602043  
+		   isz srcdbs
+002053: 442035  
+		   jmp srcdbs i
+002054: 622035  
+		collapse: 0
+002055: 000000  
+		   cla
+002056: 750000  
+		   jms srcdbs
+002057: 102035  
+		      jmp 1f
+002060: 602063  
+		   law dskbs
+002061: 765067  
+		   dac 9f+t+1	"** 9f+t+1 crossed out: 8 written in
+002062: 044220  
+		1:
+		   lac 9f+t+1	"** 9f+t+1 crossed out: 8 written in
+002063: 204220  
+		   dac 0f+1
+002064: 042100  
+		   tad d65	"** crossed out: d2-- original obscured
+002065: 344141  
+		   dac 0f
+002066: 042077  
+		   cma
+002067: 740001  
+		   tad d1
+002070: 344117  
+		   tad edskbsp
+002071: 345473  
+		   and o17777
+002072: 504160  
+		   sna
+002073: 741200  
+		   jmp 0f+3
+002074: 602102  
+		   dac 0f+2
+002075: 042101  
+		   jms copy; 0:..; ..; ..
+002076: 101667  
+002077: 000000  
+002100: 000000  
+002101: 000000  
+		   -65
+002102: 777677  
+		   tad edskbsp
+002103: 345473  
+		   dac 9f+t
+002104: 044217  
+		   tad d1
+002105: 344117  
+		   dac 0f
+002106: 042113  
+		   lac dskaddr
+002107: 205512  
+		   dac 9f+t i
+002110: 064217  
+		   jms copy; dskbuf; 0:..; 64
+002111: 101667  
+002112: 007700  
+002113: 000000  
+002114: 000100  
+		   jmp collapse i
+002115: 622055  
+		dskrd: 0
+002116: 000000  
+		   jms betwen; d2; d7999
+002117: 101643  
+002120: 004120  
+002121: 004155  
+		"** 01-s1.pdf page 25
+		      jms halt
+002122: 102254  
+		   sad dskaddr
+002123: 545512  
+		   jmp dskrd i
+002124: 622116  
+		   dac dskaddr
+002125: 045512  
+		   jms srcdbs
+002126: 102035  
+		      jmp 1f
+002127: 602134  
+		   lac dskaddr
+002130: 205512  
+		   jms dskio; 06000
+002131: 102162  
+002132: 006000  
+		   jmp 2f
+002133: 602144  
+		1:
+		   dzm 9f+t+1 i
+002134: 164220  
+		   law 1
+002135: 760001  
+		   tad 9f+t+1
+002136: 344220  
+		   dac .+2
+002137: 042141  
+		   jms copy; ..; dskbuf; 64
+002140: 101667  
+002141: 000000  
+002142: 007700  
+002143: 000100  
+		2:
+		   jms collapse
+002144: 102055  
+		   jmp dskrd i
+002145: 622116  
+			" write a file block (data, inode or indirect)
+			" AC/ block
+		dskwr: 0
+002146: 000000  
+		   jms betwen; d2; d7999
+002147: 101643  
+002150: 004120  
+002151: 004155  
+		      jms halt
+002152: 102254  
+		   jms dskio; 07000
+002153: 102162  
+002154: 007000  
+		   lac dskaddr
+002155: 205512  
+		   jms srcdbs
+002156: 102035  
+		      dzm 9f+t+1 i
+002157: 164220  
+		   jms collapse
+002160: 102055  
+		   jmp dskwr i
+002161: 622146  
+		t = t+3
+	000015  
+			" AC/ block
+			"   jms dskio; dsld_bits
+		dskio: 0
+002162: 000000  
+		   dac dskaddr
+002163: 045512  
+		   cll; idiv; 80
+002164: 744000  
+002165: 653323  
+002166: 000120  
+		   dac 9f+t
+002167: 044222  
+		   lacq
+002170: 641002  
+		   idiv; 10
+002171: 653323  
+002172: 000012  
+		   dac 9f+t+1
+002173: 044223  
+		   lls 22
+002174: 640626  
+		   xor 9f+t+1
+002175: 244223  
+		   als 8
+002176: 640710  
+		   dac 9f+t+1
+002177: 044223  
+		   lac 9f+t
+002200: 204222  
+		   idiv; 10
+002201: 653323  
+002202: 000012  
+		   dac 9f+t
+002203: 044222  
+		   lls 22
+002204: 640626  
+		   xor 9f+t
+002205: 244222  
+		   xor 9f+t+1
+002206: 244223  
+		   xor o200000
+002207: 244170  
+		   dac 9f+t
+002210: 044222  
+		   jms dsktrans; -64; dskbuf; 9f+t; dskio
+002211: 102220  
+002212: 777700  
+002213: 007700  
+002214: 004222  
+002215: 002162  
+		   isz dskio
+002216: 442162  
+		   jmp dskio i
+002217: 622162  
+		t = t+1
+	000016  
+			" called with:
+			"   jms dsktrans; -WC; MAC; addr_ptr?; dsld_ptr
+		dsktrans: 0
+002220: 000000  
+		   -10
+002221: 777766  
+		   dac 9f+t
+002222: 044223  
+		1:
+		   -1
+002223: 777777  
+		   tad dsktrans
+002224: 342220  
+		   dac 12
+002225: 040014  
+		"** 01-s1.pdf page 26
+		   dscs				" clear status register
+002226: 707141  
+		   lac 12 i
+002227: 220014  
+		   dslw				" load WC
+002230: 707124  
+		   lac 12 i
+002231: 220014  
+		   dslm				" load MAC
+002232: 707142  
+		   lac 12 i
+002233: 220014  
+		   jms laci
+002234: 101635  
+		   dsld				" load TA & SA
+002235: 707104  
+		   dzm .dskb
+002236: 144074  
+		   lac 12 i
+002237: 220014  
+		   jms laci
+002240: 101635  
+		   jms laci
+002241: 101635  
+		   dsls				" load status
+002242: 707144  
+		   lac .dskb			" check for interrupt
+002243: 204074  
+		   sna
+002244: 741200  
+		   jmp .-2
+002245: 602243  
+		   lac .dske			" get status from interrupt
+002246: 204075  
+		   sma
+002247: 740100  
+		   jmp 12 i			" return
+002250: 620014  
+		   isz 9f+t
+002251: 444223  
+		   jmp 1b
+002252: 602223  
+		   jms halt " 10 disk errors
+002253: 102254  
+		t = t+1
+	000017  
+		halt: 0
+002254: 000000  
+		   isz 9f+t			" spin for a while (process interrupts)
+002255: 444224  
+		   jmp .-1
+002256: 602255  
+		   iof				" disable interrupts
+002257: 700002  
+		   hlt				" halt
+002260: 740040  
+		   jms copy; law; 4096; 4096	" continued: copy system up to user memory?
+002261: 101667  
+002262: 760000  
+002263: 010000  
+002264: 010000  
+		   hlt; jmp .-1			" halt for good
+002265: 740040  
+002266: 602265  
+		t = t+1
+	000020  
+		"** 01-s1.pdf page 28
+		" s5
+			" read/write a process from/to swap space
+			" call:
+			" AC/ first word of process table
+			"   jms dskswap; DSLD bits
+		dskswap: 0
+002267: 000000  
+		   cll; als 3			" get process disk address
+002270: 744000  
+002271: 640703  
+		   dac 9f+t			" save in t0
+002272: 044225  
+		   jms dsktrans; -64; userdata; 9f+t; dskswap	" read/write user area
+002273: 102220  
+002274: 777700  
+002275: 005631  
+002276: 004225  
+002277: 002267  
+		   lac 9f+t			" get swap addr back
+002300: 204225  
+		   tad o20			" advance by 16??
+002301: 344134  
+		   dac 9f+t			" save
+002302: 044225  
+		   jms dsktrans; -4096; 4096; 9f+t; dskswap	" read/write user memory
+002303: 102220  
+002304: 770000  
+002305: 010000  
+002306: 004225  
+002307: 002267  
+		   isz dskswap			" skip bits
+002310: 442267  
+		   jmp dskswap i		" return
+002311: 622267  
+		t = t+1
+	000021  
+		access: 0
+002312: 000000  
+		   lac i.flags			" get inode flags
+002313: 205732  
+		   lmq				" save in MQ
+002314: 652000  
+		   lac u.uid			" get user id
+002315: 205644  
+		   spa				" negative?
+002316: 741100  
+		   jmp access i			"  yes: super user, return
+002317: 622312  
+		   sad i.uid			" compare to file owner
+002320: 545742  
+		   lrs 2			"  same: shift flags down two
+002321: 640502  
+		   lacq				" get inode flags back
+002322: 641002  
+		   and mode			" AND with mode from system call
+002323: 505500  
+		   sza				" access allowed?
+002324: 740200  
+		   jmp access i			"  yes: return
+002325: 622312  
+		   jms error			" no: return error from system call
+002326: 101531  
+		fassign: 0
+002327: 000000  
+		   -10				" loop count
+002330: 777766  
+		   dac 9f+t			" in t0
+002331: 044226  
+		1:
+		   lac 9f+t			" get count
+002332: 204226  
+		   tad d10			" turn into fd
+002333: 344130  
+		   jms fget			" fetch open file into "fnode"
+002334: 102360  
+		      jms halt " will not happen
+002335: 102254  
+		   lac f.flags			" get fnode flags
+002336: 205757  
+		   sma				" sign bit set (active)?
+002337: 740100  
+		   jmp 1f			"  no: free
+002340: 602344  
+		   isz 9f+t			" increment loop count & loop until zero
+002341: 444226  
+		   jmp 1b
+002342: 602332  
+		   jmp fassign i
+002343: 622327  
+		1:
+		   lac mode			" get mode from system call
+002344: 205500  
+		   xor o400000			" set sign bit
+002345: 244173  
+		   dac f.flags			" save in fnode
+002346: 045757  
+		   lac ii			" get i-number
+002347: 205731  
+		   dac f.i			" save in fnode
+002350: 045761  
+		   lac 9f+t
+002351: 204226  
+		   tad d10			" get fd
+002352: 344130  
+		   dac u.ac			" return in user AC
+002353: 045631  
+		   dzm f.badd			" clear file offset in fnode
+002354: 145760  
+		   jms fput			" copy fnode back into u.ofiles
+002355: 102402  
+		   isz fassign			" give skip return
+002356: 442327  
+		   jmp fassign i
+002357: 622327  
+		t = t+1
+	000022  
+			" load fnode (open file entry) from u.ofiles
+			" AC/ user fd
+			"   jms fget
+			"    bad fd
+			"   return with fnode set
+		fget: 0
+002360: 000000  
+		   jms betwen; d0; d9		" fd 0..9?
+002361: 101643  
+002362: 004116  
+002363: 004127  
+		      jmp fget i		"  no, return
+002364: 622360  
+		   cll; mul; 3			" multiply by three
+002365: 744000  
+002366: 653122  
+002367: 000003  
+		   lacq
+002370: 641002  
+		"** 01-s1.pdf page 29
+		   tad ofilesp			" get pointer into u.ofiles
+002371: 344101  
+		   dac 9f+t			" save in t0
+002372: 044227  
+		   dac .+2			" save as copy source
+002373: 042375  
+		   jms copy; ..; fnode; 3	" copy to "fnode"
+002374: 101667  
+002375: 000000  
+002376: 005757  
+002377: 000003  
+		   isz fget			" give skip return
+002400: 442360  
+		   jmp fget i
+002401: 622360  
+			" copy fnode back to u.ofiles
+			" uses temp value set by "fget"
+			" (fget and fput calls must be paired)
+		fput: 0
+002402: 000000  
+		   lac 9f+t
+002403: 204227  
+		   dac .+3
+002404: 042407  
+		   jms copy; fnode; ..; 3
+002405: 101667  
+002406: 005757  
+002407: 000000  
+002410: 000003  
+		   jmp fput i
+002411: 622402  
+		t = t+1
+	000023  
+			" helper for special device write routines
+			" return to caller with next character to write:
+			" when done return character count to user.
+		forall: 0
+002412: 000000  
+		   lac u.base
+002413: 205651  
+		   sad u.limit
+002414: 545653  
+		   jmp 1f			" done
+002415: 602431  
+		   lac u.base			" get base pointer (again?)
+002416: 205651  
+		   ral				" rotate MSB into LINK
+002417: 740010  
+		   lac u.base i			" fetch word via base pointer
+002420: 225651  
+		   snl				" link set?
+002421: 740400  
+		   lrs 9			"  no: get low 9 bits
+002422: 640511  
+		   and o777			" mask to 9 bits
+002423: 504152  
+		   jmp forall i			" return char
+002424: 622412  
+		fallr:				" jump here for subsequent characters
+		   lac u.base			" get base
+002425: 205651  
+		   add o400000			" advance pointer
+002426: 304173  
+		   dac u.base			" start from top
+002427: 045651  
+		   jmp forall+1
+002430: 602413  
+		1:
+		   lac u.count
+002431: 205652  
+		   dac u.ac
+002432: 045631  
+		   jmp sysexit
+002433: 600103  
+			" wait for a condition variable
+			" call:
+			"   jmr sleep; sfiles+N
+		sleep: 0
+002434: 000000  
+		   law ulist-1		" pointer to process table
+002435: 765560  
+		   dac 8		" in index register
+002436: 040010  
+		   lac o200000
+002437: 204170  
+		   lmq			" get 200000 in MQ
+002440: 652000  
+		1:
+		   lac u.ulistp i	" get current process status word
+002441: 225647  
+		   sad 8 i		" compare to next process table entry
+002442: 560010  
+		   jmp 1f		"  match
+002443: 602452  
+		   isz 8		" no match: skip other 3 words of process table
+002444: 440010  
+		   isz 8
+002445: 440010  
+		   isz 8
+002446: 440010  
+		   cla; lrs 1		" shift MQ down one
+002447: 750000  
+002450: 640501  
+		   jmp 1b		" loop
+002451: 602441  
+		1:
+		   tad o100000		" mark process not ready
+002452: 344166  
+		   dac u.ulistp i
+002453: 065647  
+		   lac sleep i		" get sleep variable pointer
+002454: 222434  
+		   dac 9f+t
+002455: 044230  
+		   lac 9f+t i		" get sleep variable contents
+002456: 224230  
+		   omq			" or in MQ (bit vector of processes waiting)
+002457: 640002  
+		   dac 9f+t i		" save
+002460: 064230  
+		   isz sleep		" skip sleep variable pointer
+002461: 442434  
+		   jmp sleep i
+002462: 622434  
+		t = t+1
+	000024  
+		"** 01-s1.pdf page 30
+			" look for a free directory entry??
+		dslot: 0
+002463: 000000  
+		   dzm di
+002464: 145746  
+		   skp
+002465: 741000  
+		1:
+		   isz di
+002466: 445746  
+		   lac di
+002467: 205746  
+		   jms dget			" get directory entry
+002470: 103104  
+		   lac d.i			" get i number
+002471: 205747  
+		   sza				" zero (free)?
+002472: 740200  
+		   jmp 1b			"  no keep looking
+002473: 602466  
+		   jmp dslot i			" yes: return index
+002474: 622463  
+			" called with:
+			" AC/ mode
+			" name/ file name
+		icreat: 0
+002475: 000000  
+		   dac 9f+t			" save mode in t0
+002476: 044231  
+		   jms dslot
+002477: 102463  
+		   lac o20			" look for a free inode starting at 17
+002500: 204134  
+		   dac ii
+002501: 045731  
+		1:
+		   isz ii
+002502: 445731  
+		   lac ii
+002503: 205731  
+		   jms iget
+002504: 103017  
+		   lac i.flags
+002505: 205732  
+		   spa				" "in use" bit bit clear?
+002506: 741100  
+		   jmp 1b			"  no, guess again
+002507: 602502  
+		   lac ii
+002510: 205731  
+		   dac d.i
+002511: 045747  
+		   jms copy; name; d.name; 4
+002512: 101667  
+002513: 005504  
+002514: 005750  
+002515: 000004  
+		   isz s.uniq			" get a new unique number
+002516: 445556  
+		   lac s.uniq
+002517: 205556  
+		   dac d.uniq			" save in directory entry
+002520: 045754  
+		   dac i.uniq			" and inode
+002521: 045745  
+		   lac 9f+t			" get mode
+002522: 204231  
+		   xor o400000			" set "in use"
+002523: 244173  
+		   dac i.flags
+002524: 045732  
+		   lac u.uid			" get user
+002525: 205644  
+		   dac i.uid			" set owner
+002526: 045742  
+		   -1
+002527: 777777  
+		   dac i.nlks			" -1 links?!
+002530: 045743  
+		   dzm i.size			" empty
+002531: 145744  
+		   jms copyz; i.dskps; 7	" clear disk block numbers
+002532: 101712  
+002533: 005733  
+002534: 000007  
+		   jms iput			" write inode
+002535: 103046  
+		   jms dput			" write directory entry
+002536: 103136  
+		   jmp icreat i
+002537: 622475  
+		t = t+1
+	000025  
+			" output character to display
+		dspput: 0
+002540: 000000  
+		   and o177			" mask to 7 bits
+002541: 504147  
+		   sna
+002542: 741200  
+		   jmp i dspput			" discard NUL
+002543: 622540  
+		   sad o14			" Form Feed?
+002544: 544131  
+		   jmp 1f			"  yes
+002545: 602560  
+		   lmq				" save char in MQ
+002546: 652000  
+		   sad o12			" newline?
+002547: 544130  
+		   jms dspnl			"  yes
+002550: 102574  
+		   lac dsploc i			" get display word
+002551: 224444  
+		   sad o400000			" TRAP?
+002552: 544173  
+		   jmp dspleft			"  yes (first character)
+002553: 602562  
+		   omq				" no: or in second character
+002554: 640002  
+		   dac dsploc i			" save both characters
+002555: 064444  
+		   isz dsploc			" advance display pointer
+002556: 444444  
+		   jmp i dspput
+002557: 622540  
+		"** 01-s1.pdf page 31
+		1:				" here on form feed
+		   jms dspinit			" clear display
+002560: 102606  
+		   jmp dspput i
+002561: 622540  
+		dspleft:
+		   lac dsploc			" get display pointer
+002562: 204444  
+		   sad edspbuf			" end of the buffer?
+002563: 544104  
+		   jmp 1f			"  yes: light up a button!?
+002564: 602602  
+		   dac 8			" no: store in index
+002565: 040010  
+		   lac o400000			" get TRAP instruction
+002566: 204173  
+		   dac 8 i			" store as next
+002567: 060010  
+		   cla; llss 18+7		" shift MQ upto "char1" position
+002570: 750000  
+002571: 660631  
+		   dac dsploc i			" store word with char1
+002572: 064444  
+		   jmp dspput i
+002573: 622540  
+		dspnl: 0			" only called once!
+002574: 000000  
+		   lac dsplno			" get display line number
+002575: 204445  
+		   sad d33			" 33?
+002576: 544142  
+		   jmp 1f			"  yes: light a button!
+002577: 602602  
+		   isz dsplno			" no: increment line number
+002600: 444445  
+		   jmp dspnl i
+002601: 622574  
+		1:
+		   lac o2000			" get bit for push button 7
+002602: 204153  
+		   wbl				" write button lights
+002603: 704424  
+		   isz dspput
+002604: 442540  
+		   jmp dspput i
+002605: 622540  
+		dspinit: 0
+002606: 000000  
+		   lac dspbufp3			" get pointer to dspbuf+3
+002607: 204105  
+		   dac dsploc			" store location
+002610: 044444  
+		   lac o400000			" display "TRAP" instruction (end of list)
+002611: 204173  
+		   dac dspbuf+3			" save in buffer
+002612: 044451  
+		   dzm dsplno			" clear display line number
+002613: 144445  
+		   jmp dspinit i
+002614: 622606  
+			" "move display" (change display buffer pointer)
+			" called with new buffer pointer in AC??
+		movdsp: 0
+002615: 000000  
+		   iof
+002616: 700002  
+		   cdf
+002617: 700501  
+		   dac dspbufp
+002620: 045475  
+		   -1
+002621: 777777  
+		   dac .dspb
+002622: 045536  
+		   ion
+002623: 700042  
+		   jmp movdsp i
+002624: 622615  
+			" fetch user argument from word after "sys" call, return in AC
+		arg: 0
+002625: 000000  
+		   lac u.rq+8 i			" fetch word after return PC
+002626: 225643  
+		   isz u.rq+8			" bump PC
+002627: 445643  
+		   jmp arg i
+002630: 622625  
+			" fetch user pathname argument from pointer word after "sys" call
+			" into "name" and look it up (in current working directory)
+			" if lookup fails: returns error to user (not caller)
+			" if lookup OK: returns with file i-inode read (into "inode")
+			"	and i-number in AC
+		argname: 0
+002631: 000000  
+		   jms arg			" fetch name pointer
+002632: 102625  
+		   dac .+2			" save as copy source
+002633: 042635  
+		   jms copy; ..; name; 4	" copy to "name"
+002634: 101667  
+002635: 000000  
+002636: 005504  
+002637: 000004  
+		   lac u.cdir			" get CWD
+002640: 205646  
+		   jms namei; name		" look up file
+002641: 102737  
+002642: 005504  
+		      jms error			"  failed: return error directly to user
+002643: 101531  
+		   jmp argname i
+002644: 622631  
+		seektell: 0
+002645: 000000  
+		   jms arg
+002646: 102625  
+		   dac u.base
+002647: 045651  
+		"** 01-s1.pdf page 32
+		   jms arg
+002650: 102625  
+		   dac u.limit
+002651: 045653  
+		   jms finac
+002652: 103370  
+		   lac u.limit
+002653: 205653  
+		   sna
+002654: 741200  
+		   jmp seektell i
+002655: 622645  
+		   sad d1
+002656: 544117  
+		   jmp .+3
+002657: 602662  
+		   lac i.size
+002660: 205744  
+		   jmp seektell i
+002661: 622645  
+		   lac f.badd
+002662: 205760  
+		   jmp seektell i
+002663: 622645  
+			" system call helper
+			" fetch system call argument name pointer from after "sys" call
+			" read inode; if current user is not owner, return error to user
+		isown: 0
+002664: 000000  
+		   jms argname
+002665: 102631  
+		   jms iget
+002666: 103017  
+		   lac u.uid			" get user id
+002667: 205644  
+		   sma				" super user?
+002670: 740100  
+		   sad i.uid			"  no: does user own file?
+002671: 545742  
+		   skp				"   yes, or super user
+002672: 741000  
+		   jms error			"    not super user, not owner: return error
+002673: 101531  
+		   jmp isown i
+002674: 622664  
+		"** 01-s1.pdf page 34
+		" s6
+		itrunc: 0
+002675: 000000  
+		   -7					" loop 7 times
+002676: 777771  
+		   dac 9f+t				" in t0
+002677: 044232  
+		   lac idskpp				" pointer to inode block numbers
+002700: 204102  
+		   dac 9f+t+1				" save in t1
+002701: 044233  
+		1:			" top of loop for inode blocks
+		   lac 9f+t+1 i				" fetch next block number
+002702: 224233  
+		   sna					" allocated?
+002703: 741200  
+		   jmp 4f				"  no
+002704: 602730  
+		   lac i.flags				" check flags
+002705: 205732  
+		   and o200000				
+002706: 504170  
+		   sna					" large file?
+002707: 741200  
+		   jmp 3f				"  no
+002710: 602725  
+		   -64					" loop 64 times
+002711: 777700  
+		   dac 9f+t+2				" save count in t2
+002712: 044234  
+		   lac dskbufp				" get pointer to dskbuf
+002713: 204103  
+		   dac 9f+t+3				" in t3
+002714: 044235  
+		2:			" inner loop for indirect blocks
+		   lac 9f+t+1 i				" get indirect block number
+002715: 224233  
+		   jms dskrd				" read it
+002716: 102116  
+		   lac 9f+t+3 i				" read block number from indirect
+002717: 224235  
+		   sza					" free?
+002720: 740200  
+		   jms free				"  no: free it
+002721: 101604  
+		   isz 9f+t+3				" increment pointer into indirect block
+002722: 444235  
+		   isz 9f+t+2				" increment loop counter, skip if done
+002723: 444234  
+		   jmp 2b				"  not done: loop
+002724: 602715  
+		3:			" here with small file
+		   lac 9f+t+1 i				" load block number
+002725: 224233  
+		   jms free				" free it
+002726: 101604  
+		   dzm 9f+t+1 i				" clear block number
+002727: 164233  
+		4:			" bottom of loop for inode block ptrs
+		   isz 9f+t+1				" increment block pointer
+002730: 444233  
+		   isz 9f+t				" increment count, skip if done
+002731: 444232  
+		   jmp 1b				"  not done
+002732: 602702  
+		   lac i.flags
+002733: 205732  
+		   and o577777				" clear large file flag
+002734: 504175  
+		   dac i.flags
+002735: 045732  
+		   jmp itrunc i
+002736: 622675  
+		t = t+4
+	000031  
+					" Given a pointer to a 4-word filename after
+					" the jms to namei, and with AC holding the
+					" i-num of the directory it is in, return the
+					" i-number of the filename (and skip)
+					" return zero in AC if not found (no skip)
+		namei: 0
+002737: 000000  
+		   jms iget		" Get the inode from the i-num in the AC
+002740: 103017  
+		   -1
+002741: 777777  
+		   tad namei i		" get argptr-1
+002742: 362737  
+		   dac 9f+t+1		" save in t1
+002743: 044237  
+		   isz namei		" skip over argument
+002744: 442737  
+		   lac i.flags
+002745: 205732  
+		   and o20		" get directory bit
+002746: 504134  
+		   sna			" Is this a directory?
+002747: 741200  
+		   jmp namei i		"  no: return without skip
+002750: 622737  
+		   -8
+002751: 777770  
+		   tad i.size		" Subtract 8 from the file's size
+002752: 345744  
+		   cma
+002753: 740001  
+		   lrss 3
+002754: 660503  
+		   dac 9f+t		" negative count of directory entries in t0
+002755: 044236  
+		   sna			" any?
+002756: 741200  
+		   jmp namei i		"  no: return without skip
+002757: 622737  
+		   dzm di		" Store zero in di
+002760: 145746  
+		1:
+		   lac di
+002761: 205746  
+		"** 01-s1.pdf page 35
+		   jms dget		" Get a directory entry from the dirblock
+002762: 103104  
+		   lac d.i		" get i-num
+002763: 205747  
+		   sna			" in use?
+002764: 741200  
+		   jmp 2f		"  no
+002765: 603013  
+		   lac 9f+t+1		" get argptr-1
+002766: 204237  
+		   dac 8
+002767: 040010  
+		   lac d.name		" Compare the four words of the filename in the
+002770: 205750  
+		   sad 8 i		" directory entry with the argument to namei
+002771: 560010  
+		   skp
+002772: 741000  
+		   jmp 2f		" No match
+002773: 603013  
+		   lac d.name+1
+002774: 205751  
+		   sad 8 i
+002775: 560010  
+		   skp
+002776: 741000  
+		   jmp 2f		" No match
+002777: 603013  
+		   lac d.name+2
+003000: 205752  
+		   sad 8 i
+003001: 560010  
+		   skp
+003002: 741000  
+		   jmp 2f		" No match
+003003: 603013  
+		   lac d.name+3
+003004: 205753  
+		   sad 8 i
+003005: 560010  
+		   skp
+003006: 741000  
+		   jmp 2f		" No match
+003007: 603013  
+		   lac d.i		" A match. Get the i-number into AC
+003010: 205747  
+		   isz namei		" give skip return
+003011: 442737  
+		   jmp namei i
+003012: 622737  
+		2:
+		   isz di		" No match, move up to the next direntry
+003013: 445746  
+		   isz 9f+t		" any left?
+003014: 444236  
+		   jmp 1b		"  yes: keep going
+003015: 602761  
+		   jmp namei i		" Didn't find it, return zero in AC (without skip)
+003016: 622737  
+		t = t+2
+	000033  
+		                        " Given an i-number in AC, fetch that i-node
+		                        " from disk and store it in the inode buffer
+		iget: 0
+003017: 000000  
+		   dac ii		" Store the i-number in ii
+003020: 045731  
+		   cll; idiv; 5		" Divide by 5: 5 inodes in a block
+003021: 744000  
+003022: 653323  
+003023: 000005  
+		   dac 9f+t		" Store the remainder in 9f+t: the i-node
+003024: 044240  
+		   lacq			" number within the block
+003025: 641002  
+		   tad d2		" Add 2 to the quotient to get the block number
+003026: 344120  
+		   dac 9f+t+1		" and store in 9f+t+1
+003027: 044241  
+		   jms dskrd		" Get the block
+003030: 102116  
+		   lac 9f+t
+003031: 204240  
+		   cll; mul; 12		" Multiply the i-num within the block by 12
+003032: 744000  
+003033: 653122  
+003034: 000014  
+		   lacq			" to get the offset into the block
+003035: 641002  
+		   tad dskbufp		" Add on the base of the disk buffer
+003036: 344103  
+		   dac 9f+t
+003037: 044240  
+		   dac .+2
+003040: 043042  
+		   jms copy; ..; inode; 12	" Copy 12 words from buffer to inode
+003041: 101667  
+003042: 000000  
+003043: 005732  
+003044: 000014  
+		   jmp iget i		" and return
+003045: 623017  
+		iput: 0
+003046: 000000  
+		   lac 9f+t+1
+003047: 204241  
+		   jms dskrd
+003050: 102116  
+		   law inode-1
+003051: 765731  
+		   dac 8
+003052: 040010  
+		   -1
+003053: 777777  
+		   tad 9f+t
+003054: 344240  
+		   dac 9
+003055: 040011  
+		   -12
+003056: 777764  
+		   dac 9f+t+2
+003057: 044242  
+		1:
+		   lac 8 i
+003060: 220010  
+		"** 01-s1.pdf page 36
+		   sad 9 i
+003061: 560011  
+		   skp
+003062: 741000  
+		   jmp 2f
+003063: 603067  
+		   isz 9f+t+2
+003064: 444242  
+		   jmp 1b
+003065: 603060  
+		   jmp iput i
+003066: 623046  
+		2:
+		   -1
+003067: 777777  
+		   tad 8
+003070: 340010  
+		   dac 8
+003071: 040010  
+		   -1
+003072: 777777  
+		   tad 9
+003073: 340011  
+		   dac 9
+003074: 040011  
+		1:
+		   lac 8 i
+003075: 220010  
+		   dac 9 i
+003076: 060011  
+		   isz 9f+t+2
+003077: 444242  
+		   jmp 1b
+003100: 603075  
+		   lac 9f+t+1
+003101: 204241  
+		   jms dskwr
+003102: 102146  
+		   jmp iput i
+003103: 623046  
+		t = t+3
+	000036  
+			" allocate directory entry
+			" AC/ entry number
+		dget: 0
+003104: 000000  
+		   dac di			" save entry number
+003105: 045746  
+		   alss 3			" get word number
+003106: 660703  
+		   dac 9f+t			" save in t0
+003107: 044243  
+		   jms pget			" get free disk block
+003110: 103152  
+		   dac 9f+t+1			" save in t1
+003111: 044244  
+		   jms dskrd
+003112: 102116  
+		   lac 9f+t
+003113: 204243  
+		   and o77
+003114: 504140  
+		   tad dskbufp
+003115: 344103  
+		   dac 9f+t+2
+003116: 044245  
+		   dac .+2
+003117: 043121  
+		   jms copy; ..; dnode; 8
+003120: 101667  
+003121: 000000  
+003122: 005747  
+003123: 000010  
+		   lac 9f+t
+003124: 204243  
+		   tad d8
+003125: 344126  
+		   jms betwen; d0; i.size
+003126: 101643  
+003127: 004116  
+003130: 005744  
+		      skp
+003131: 741000  
+		   jmp dget i
+003132: 623104  
+		   jms dacisize
+003133: 103402  
+		   dzm d.i
+003134: 145747  
+		   jmp dget i
+003135: 623104  
+		dput: 0
+003136: 000000  
+		   lac 9f+t+1
+003137: 204244  
+		   jms dskrd
+003140: 102116  
+		   lac 9f+t+2
+003141: 204245  
+		   dac .+3
+003142: 043145  
+		   jms copy; dnode; ..; 8
+003143: 101667  
+003144: 005747  
+003145: 000000  
+003146: 000010  
+		   lac 9f+t+1
+003147: 204244  
+		   jms dskwr
+003150: 102146  
+		   jmp dput i
+003151: 623136  
+		t = t+3
+	000041  
+			" get a block number for a file, returns disk block number
+			" allocates block if not allocated
+			" AC/ file offset
+			"   jms pget
+			" AC/ disk block number
+		pget: 0
+003152: 000000  
+		   lrss 6				" convert offset to block
+003153: 660506  
+		   dac 9f+t				" save as t0
+003154: 044246  
+		   lac i.flags
+003155: 205732  
+		"** 01-s1.pdf page 37
+		   and o200000
+003156: 504170  
+		   sza					" large file bit set?
+003157: 740200  
+		   jmp 2f				"  yes
+003160: 603220  
+		   lac 9f+t				" no: small file
+003161: 204246  
+		   jms betwen; d0; d6			" block 0..6?
+003162: 101643  
+003163: 004116  
+003164: 004124  
+		      jmp 1f				"  no
+003165: 603175  
+		   tad idskpp				" make into block number pointer
+003166: 344102  
+		   dac 9f+t				" save in t0
+003167: 044246  
+		   lac 9f+t i				" get disk block number
+003170: 224246  
+		   sna					" allocated?
+003171: 741200  
+		   jms alloc				"  no: allocate now
+003172: 101545  
+		   dac 9f+t i				" save (new) disk block number
+003173: 064246  
+		   jmp pget i				" return disk block number
+003174: 623152  
+		1:					" here when file block>=7, not "large"
+		   jms alloc				" allocate indirect block
+003175: 101545  
+		   dac 9f+t+1				" save as t1
+003176: 044247  
+		   jms copy; i.dskps; dskbuf; 7		" copy all the disk block numbers
+003177: 101667  
+003200: 005733  
+003201: 007700  
+003202: 000007  
+		   jms copyz; dskbuf+7; 64-7		" zero rest of indirect block
+003203: 101712  
+003204: 007707  
+003205: 000071  
+		   lac 9f+t+1				" get indirect block number back
+003206: 204247  
+		   jms dskwr				" write indirect block to disk
+003207: 102146  
+		   lac 9f+t+1
+003210: 204247  
+		   dac i.dskps				" save indirect as new first block
+003211: 045733  
+		   jms copyz; i.dskps+1; 6		" zero rest of block pointers
+003212: 101712  
+003213: 005734  
+003214: 000006  
+		   lac i.flags
+003215: 205732  
+		   xor o200000				" set "large file"
+003216: 244170  
+		   dac i.flags
+003217: 045732  
+		2:					" here with "large file"
+		   lac 9f+t				" get file block number
+003220: 204246  
+		   lrss 6				" divide by 64 (indirects/block)
+003221: 660506  
+		   jms betwen; d0; d6			" ok now?
+003222: 101643  
+003223: 004116  
+003224: 004124  
+		      jms halt " file too big		"  no, you lose!
+003225: 102254  
+		   tad idskpp				" yes: get indirect block pointer
+003226: 344102  
+		   dac 9f+t+1				" save in t1
+003227: 044247  
+		   lac 9f+t+1 i				" get indirect block number
+003230: 224247  
+		   sna					" allocated?
+003231: 741200  
+		   jms alloc				"  no, get it now
+003232: 101545  
+		   dac 9f+t+1 i				" save (new) indirect block
+003233: 064247  
+		   dac 9f+t+2				" save as t2
+003234: 044250  
+		   jms dskrd				" read indirect block
+003235: 102116  
+		   lac 9f+t				" get original block number
+003236: 204246  
+		   and o77				" mod by 64
+003237: 504140  
+		   tad dskbufp				" get pointer to disk block number
+003240: 344103  
+		   dac 9f+t+1				" save as t1
+003241: 044247  
+		   lac 9f+t+1 i				" fetch disk block number
+003242: 224247  
+		   sza					" allocated?
+003243: 740200  
+		   jmp pget i				"  yes: return
+003244: 623152  
+		   jms alloc				" no: allocate data block
+003245: 101545  
+		   dac 9f+t				" save as t0
+003246: 044246  
+		   lac 9f+t+2				" get indirect block number
+003247: 204250  
+		   jms dskrd				" read it in
+003250: 102116  
+		   lac 9f+t				" get data block number
+003251: 204246  
+		   dac 9f+t+1 i				" save data block number
+003252: 064247  
+		   lac 9f+t+2
+003253: 204250  
+		   jms dskwr				" write indirect block back
+003254: 102146  
+		   lac 9f+t				" get data block back
+003255: 204246  
+		   jmp pget i				" return it
+003256: 623152  
+		t = t+3
+	000044  
+		iwrite: 0
+003257: 000000  
+		   dac 9f+t				" save arg in t0
+003260: 044251  
+		   lac iwrite				" load return address
+003261: 203257  
+		"** 01-s1.pdf page 38
+		   dac iread				" save as iread return addr
+003262: 043266  
+		   lac cskp				" load skip instruction
+003263: 203335  
+		   dac iwrite				" save as iwrite instruction
+003264: 043257  
+		   jmp 1f
+003265: 603272  
+			" iread from file referenced by loaded inode
+			" AC/ file offset
+			"    jms iread; addr; count
+		iread: 0
+003266: 000000  
+		   dac 9f+t				" save offset in t0
+003267: 044251  
+		   lac cnop				" get nop
+003270: 203442  
+		   dac iwrite				" save as iwrite instruction
+003271: 043257  
+		1:
+		   -1
+003272: 777777  
+		   tad iread i				" get word before return addr
+003273: 363266  
+		   dac 10				" store in index 10 & 11
+003274: 040012  
+		   dac 11
+003275: 040013  
+		   isz iread				" increment return addr
+003276: 443266  
+		   lac iread i				" load addr
+003277: 223266  
+		   dac 9f+t+1				" save in t1
+003300: 044252  
+		   isz iread				" increment return addr
+003301: 443266  
+		   lac o70000
+003302: 204164  
+		   xct iwrite				" skip if write
+003303: 403257  
+		   lac i.size				"  read: get file size
+003304: 205744  
+		   cma
+003305: 740001  
+		   tad 9f+t				" add offset
+003306: 344251  
+		   cma
+003307: 740001  
+		   jms betwen; d0; 9f+t+1
+003310: 101643  
+003311: 004116  
+003312: 004252  
+		      lac 9f+t+1
+003313: 204252  
+		   dac 9f+t+2
+003314: 044253  
+		   cma
+003315: 740001  
+		   tad d1
+003316: 344117  
+		   sna
+003317: 741200  
+		   jmp iread i
+003320: 623266  
+		   dac 9f+t+1
+003321: 044252  
+		1:
+		   lac 9f+t
+003322: 204251  
+		   jms pget
+003323: 103152  
+		   dac 9f+t+3
+003324: 044254  
+		   jms dskrd
+003325: 102116  
+		   lac 9f+t
+003326: 204251  
+		   and o77
+003327: 504140  
+		   tad dskbufp
+003330: 344103  
+		   tad dm1
+003331: 344204  
+		   xct iwrite
+003332: 403257  
+		   jmp .+3
+003333: 603336  
+		   dac 10
+003334: 040012  
+		cskp:
+		   skp
+003335: 741000  
+		   dac 11
+003336: 040013  
+		2:
+		   lac 11 i
+003337: 220013  
+		   dac 10 i
+003340: 060012  
+		   isz 9f+t
+003341: 444251  
+		   isz 9f+t+1
+003342: 444252  
+		   jmp 3f
+003343: 603357  
+		      xct iwrite
+003344: 403257  
+		      jmp 4f
+003345: 603355  
+		      lac 9f+t
+003346: 204251  
+		      jms betwen; d0; i.size
+003347: 101643  
+003350: 004116  
+003351: 005744  
+		         dac i.size
+003352: 045744  
+		      lac 9f+t+3
+003353: 204254  
+		      jms dskwr
+003354: 102146  
+		   4:
+		"** 01-s1.pdf page 38
+		      lac 9f+t+2
+003355: 204253  
+		      jmp iread i
+003356: 623266  
+		3:
+		   lac 9f+t
+003357: 204251  
+		   and o77
+003360: 504140  
+		   sza
+003361: 740200  
+		   jmp 2b
+003362: 603337  
+		   xct iwrite
+003363: 403257  
+		   jmp 1b
+003364: 603322  
+		   lac 9f+t+3
+003365: 204254  
+		   jms dskwr
+003366: 102146  
+		   jmp 1b
+003367: 603322  
+		t = t+4
+	000050  
+			" system call helper
+			" AC/ fd
+			"   jms finac
+			" return with: fnode and inode loaded
+			"	or makes error return to user
+		finac: 0
+003370: 000000  
+		   lac u.ac
+003371: 205631  
+		   jms fget
+003372: 102360  
+		      jms error
+003373: 101531  
+		   lac f.flags
+003374: 205757  
+		   sma
+003375: 740100  
+		   jms error
+003376: 101531  
+		   lac f.i
+003377: 205761  
+		   jms iget
+003400: 103017  
+		   jmp finac i
+003401: 623370  
+			" update inode file size with value in AC
+		dacisize: 0
+003402: 000000  
+		   dac i.size
+003403: 045744  
+		   jms iput
+003404: 103046  
+		   lac i.size
+003405: 205744  
+		   jmp dacisize i
+003406: 623402  
+		"** 01-s1.pdf page 41
+		" s7
+		pibreak:			" priority interrupt break processing "chain"
+		   dac .ac			" save interrupt AC
+003407: 044071  
+			"** CROSSED OUT....
+		   dpsf
+003410: 704741  
+		   jmp 1f		" disable the Graphics-2 I/O
+003411: 603432  
+		   dpcf
+003412: 704761  
+		   dprs
+003413: 704752  
+		   dac dpstat
+003414: 045532  
+		   sma ral
+003415: 740110  
+		   jmp 2f
+003416: 603425  
+		   dprc
+003417: 704712  
+		   dac dpchar
+003420: 045535  
+		   -1
+003421: 777777  
+		   dac dpread
+003422: 045533  
+		   lac dpstat
+003423: 205532  
+		   ral
+003424: 740010  
+		2:
+		   sma
+003425: 740100  
+		   jmp piret
+003426: 603755  
+		   -1
+003427: 777777  
+		   dac dpwrite
+003430: 045534  
+		   jmp piret	"** END OF CROSSOUT
+003431: 603755  
+		1: clsf			" clock overflow (line frequency ticks)?
+003432: 700001  
+		   jmp 1f		"  no
+003433: 603466  
+		   lpb			" load display push buttons
+003434: 704412  
+		   dac pbsflgs		" save
+003435: 045476  
+		   isz s.tim+1		" increment low order tick count
+003436: 445560  
+		   skp			"  no overflow, skip second increment
+003437: 741000  
+		   isz s.tim		"   low order overflowed, increment high order count
+003440: 445557  
+		   isz uquant		"    increment user quantum counter
+003441: 445474  
+			"** written: ttydelay -> ttyd1
+			"** written: ttyrestart -> ttyres1
+		cnop:			" fetched as constant in iread
+		   nop			
+003442: 740000  
+		   -1
+003443: 777777  
+		   dac 7		" set location 7 to -1 (nothing ever clears it)
+003444: 040007  
+		   clon			" enable clock interrupts, reset flag
+003445: 700044  
+		   lac ttydelay		" tty delay positive?
+003446: 205503  
+		   spa			"  yes: skip to skp
+003447: 741100  
+		   isz ttydelay		"   no: done delaying?
+003450: 445503  
+		   skp			"    not done
+003451: 741000  
+		   jms ttyrestart	"     yes: start output
+003452: 103572  
+			"** START CROSSED OUT: written: lac tty
+		   lac .dspb
+003453: 205536  
+		   sna
+003454: 741200  
+		   jmp piret
+003455: 603755  
+		   isz .dsptm
+003456: 444073  
+		   skp
+003457: 741000  
+		   jmp dsprestart
+003460: 603512  
+		   sad d3
+003461: 544121  
+		   jmp piret
+003462: 603755  
+		   isz .dspb
+003463: 445536  
+		   jmp piret
+003464: 603755  
+		   jmp dsprestart "** END CROSSED OUT
+003465: 603512  
+		1: dssf				" disk flag set?
+003466: 707121  
+		   jmp 1f			"  no
+003467: 603476  
+		   -1				" set .dskb = -1
+003470: 777777  
+		   dac .dskb
+003471: 044074  
+		"** 01-s1.pdf page 42
+		   dsrs				" get disk status in .dske
+003472: 707132  
+		   dac .dske
+003473: 044075  
+		   dscs				" clear status register
+003474: 707141  
+		   jmp piret
+003475: 603755  
+				"** BEGIN CROSSED OUT
+		1: lds				" load display status (see 03-scope.pdf pg 25)
+003476: 701052  
+		   sma ral			" display trap set? (and rotate left)
+003477: 740110  
+		   jmp 1f			"  not set
+003500: 603521  
+		   cdf				" display done executing; clear display flags
+003501: 700501  
+		   lac .dspb
+003502: 205536  
+		   sna
+003503: 741200  
+		   jmp piret			" return now if .dspb == 0
+003504: 603755  
+		   tad dm3
+003505: 344203  
+		   sna
+003506: 741200  
+		   jmp dsprestart		" start display if .dspb == 3
+003507: 603512  
+		   dac .dspb			" otherwise, .dspb -= 3 and return
+003510: 045536  
+		   jmp piret
+003511: 603755  
+		dsprestart:
+		   lac d1
+003512: 204117  
+		   dac .dspb			" set .dspb = 1
+003513: 045536  
+		   lac dspbufp			" load display buf pointer
+003514: 205475  
+		   beg				" start display processor
+003515: 700547  
+		   -10
+003516: 777766  
+		   dac .dsptm			" set .dsptm = -10 (10 ticks)
+003517: 044073  
+		   jmp piret
+003520: 603755  
+		1: sma ral			" edges flag set?? (and rotate)
+003521: 740110  
+		   jmp .+3			"  no
+003522: 603525  
+		   raef				" "resume after edges flag"
+003523: 700742  
+		   jmp piret			" return
+003524: 603755  
+		   sma				" light pen flag?
+003525: 740100  
+		   jmp 1f			"  no
+003526: 603533  
+		   lda				" G-2: load display address
+003527: 701012  
+		   dac .lpba			" save
+003530: 045537  
+		   rlpd				" G-2: resume after light pen stop
+003531: 700723  
+		   jmp piret
+003532: 603755  
+		1: ksf				" (TTY) keyboard flag set?
+003533: 700301  
+		   jmp 1f			"  no
+003534: 603565  
+		   lac ttydelay			" get TTY delay
+003535: 205503  
+		   sma				" minus (waiting for output)?
+003536: 740100  
+		   isz ttydelay			"  no: increment??? (make more positive)
+003537: 445503  
+		   krb				" read keyboard buffer
+003540: 700312  
+		   dac char			" save in char
+003541: 045511  
+		   sad o375			" interrupt char (TTY ALT MODE?)
+003542: 544151  
+		   jmp intrp1			"  yes
+003543: 604021  
+		   lac d1
+003544: 204117  
+		   jms putchar
+003545: 101730  
+		      dzm char
+003546: 145511  
+		   lac sfiles+0			" get sleep word for ttyin
+003547: 205520  
+		   jms wakeup			" wake processes
+003550: 103762  
+		   dac sfiles+0			" clear sleep word
+003551: 045520  
+		   lac char			" get character
+003552: 205511  
+		   sad o212			" new line (with parity)??
+003553: 544150  
+		   skp				"  yes
+003554: 741000  
+		   jmp piret			"   no: done
+003555: 603755  
+		   lac sfiles+1			" get ttyout sleep word
+003556: 205521  
+		   sma				" highest bit set?
+003557: 740100  
+		   xor o400000			" no, make it so (why?]
+003560: 244173  
+		   dac sfiles+1			" save back
+003561: 045521  
+		"** 01-s1.pdf page 43
+		   jms putcr			" output CR next
+003562: 104014  
+		   jms ttyrestart		" start output
+003563: 103572  
+		   jmp piret
+003564: 603755  
+		1: tsf				" TTY output flag set?
+003565: 700401  
+		   jmp 1f			"  no
+003566: 603626  
+		   tcf				" yes: clear flag
+003567: 700402  
+		   jms ttyrestart		" transmit next character
+003570: 103572  
+		   jmp piret
+003571: 603755  
+		ttyrestart: 0
+003572: 000000  
+		   lac ttydelay			" get tty delay
+003573: 205503  
+		   spa				" positive?
+003574: 741100  
+		   jmp ttyrestart i		"  no: keep waiting
+003575: 623572  
+		   lac nttychar			" get pending CR, if any
+003576: 205501  
+		   dzm nttychar			" clear it
+003577: 145501  
+		   sza				" need to send CR?
+003600: 740200  
+		   jmp 3f			"  yes
+003601: 603606  
+		   isz ttydelay			" increment ttydelay (make more positive)
+003602: 445503  
+		   lac d2
+003603: 204120  
+		   jms getchar			" get a character
+003604: 101745  
+		      jmp 2f			"  none found??
+003605: 603622  
+		3:
+		   tls				" start output
+003606: 700406  
+		   sad o12			" newline?
+003607: 544130  
+		   jms putcr			" yes: put CR next
+003610: 104014  
+		   sad o15			" CR?
+003611: 544132  
+		   skp				"  yes
+003612: 741000  
+		   jmp ttyrestart i		"   no: return
+003613: 623572  
+		   lac ttydelay			" get current tty delay
+003614: 205503  
+		   tad o20			" bump by 16
+003615: 344134  
+		   rcr				" divide by two
+003616: 744020  
+		   cma				" complement
+003617: 740001  
+		   dac ttydelay			" save
+003620: 045503  
+		   jmp ttyrestart i
+003621: 623572  
+		2:
+		   lac sfiles+1			" run out of characters to send: wake user(s)
+003622: 205521  
+		   jms wakeup
+003623: 103762  
+		   dac sfiles+1
+003624: 045521  
+		   jmp ttyrestart i	"** written arrow up 2 copies
+003625: 623572  
+					"** BEGIN CROSSED OUT
+		1: sck				" Graphic-2 keyboard flag set?
+003626: 704301  
+		   jmp 1f			"  no.
+003627: 603644  
+		   cck				" yes: clear flag
+003630: 704304  
+		   lck				" read character
+003631: 704312  
+		   dac char
+003632: 045511  
+		   sad o33			" code 33 (ESCAPE?)
+003633: 544135  
+		   jmp intrp2			"  yes: mark interrupt
+003634: 604044  
+		   lac d3
+003635: 204121  
+		   jms putchar
+003636: 101730  
+		      nop
+003637: 740000  
+		   lac sfiles+2
+003640: 205522  
+		   jms wakeup
+003641: 103762  
+		   dac sfiles+2
+003642: 045522  
+		   jmp piret
+003643: 603755  
+		1: rsf				" paper tape ready?
+003644: 700101  
+		   jmp 1f			"  no
+003645: 603712  
+		"** 01-s1.pdf page 44
+		   lac npptchar
+003646: 205502  
+		   sna
+003647: 741200  
+		   jmp .+5
+003650: 603655  
+		   dac char
+003651: 045511  
+		   rrb
+003652: 700112  
+		   dac npptchar
+003653: 045502  
+		   jmp .+3
+003654: 603657  
+		   rrb
+003655: 700112  
+		   dac char
+003656: 045511  
+		3:
+		   lac char
+003657: 205511  
+		   sna
+003660: 741200  
+		   jmp 2f
+003661: 603670  
+		   lac d4
+003662: 204122  
+		   jms putchar
+003663: 101730  
+		      jmp 3f
+003664: 603704  
+		   lac char
+003665: 205511  
+		   sad d4
+003666: 544122  
+		   jmp 4f
+003667: 603706  
+		2:
+		   lac npptchar
+003670: 205502  
+		   sna
+003671: 741200  
+		   jmp .+4
+003672: 603676  
+		   dac char
+003673: 045511  
+		   dzm npptchar
+003674: 145502  
+		   jmp 3b
+003675: 603657  
+		   rsa
+003676: 700104  
+		   lac sfiles+3
+003677: 205523  
+		   jms wakeup
+003700: 103762  
+		   xor o400000
+003701: 244173  
+		   dac sfiles+3
+003702: 045523  
+		   jmp piret
+003703: 603755  
+		3:
+		   lac char
+003704: 205511  
+		   dac npptchar
+003705: 045502  
+		4:
+		   lac sfiles+3
+003706: 205523  
+		   jms wakeup
+003707: 103762  
+		   dac sfiles+3
+003710: 045523  
+		   jmp piret
+003711: 603755  
+		1: psf					" paper tape ready?
+003712: 700201  
+		   jmp 1f				"  no
+003713: 603726  
+		   pcf					" clear ptp flag
+003714: 700202  
+		   lac d5
+003715: 204123  
+		   jms getchar				" get next char
+003716: 101745  
+		   jmp .+3
+003717: 603722  
+		   psa
+003720: 700204  
+		   jmp piret
+003721: 603755  
+		   lac sfiles+4
+003722: 205524  
+		   jms wakeup
+003723: 103762  
+		   dac sfiles+4
+003724: 045524  
+		   jmp piret
+003725: 603755  
+				"** BEGIN CROSSED OUT
+		1: spb					" any graphic-2 push button?
+003726: 704401  
+		   jmp 1f				"  no
+003727: 603745  
+		   cpb					" clear push button flag
+003730: 704404  
+		   lpb					" load push button value
+003731: 704412  
+		   dac pbsflgs+1
+003732: 045477  
+		"** 01-s1.pdf page 45
+		   and o2000				" get push button 7
+003733: 504153  
+		   sna					" set?
+003734: 741200  
+		   jmp piret				"  no: done
+003735: 603755  
+		   jms dspinit				" yes: reset display buffer
+003736: 102606  
+		   lac sfiles+6				" wake up anyone sleeping on display
+003737: 205526  
+		   jms wakeup
+003740: 103762  
+		   dac sfiles+6
+003741: 045526  
+		   cla					" clear button lights
+003742: 750000  
+		   wbl
+003743: 704424  
+		   jmp piret	"** END CROSSED OUT
+003744: 603755  
+		1: crsf					" card reader flag set?
+003745: 706701  
+		   jmp 1f				"  no
+003746: 603754  
+		   crrb
+003747: 706712  
+		   dac crchar
+003750: 045541  
+		   -1
+003751: 777777  
+		   dac crread
+003752: 045540  
+		   jmp piret
+003753: 603755  
+		1: crrb					" read card reader buffer??
+003754: 706712  
+		piret:					" return from priority interrupt
+		   lac 0				" get LINK/PC
+003755: 200000  
+		   ral					" restore LINK
+003756: 740010  
+		   lac .ac				" restore AC
+003757: 204071  
+		   ion					" reenable interrupts
+003760: 700042  
+		   jmp 0 i				" return from interrupt
+003761: 620000  
+			" wake sleeping processes
+			" NOTE!! Called from interrupt service, so avoids indirect!!!
+			" call:
+			" AC/ sfiles word (bit vector of processes to wake)
+			"   jms wakeup
+			" AC/ 0 (to store in sfiles word)
+		wakeup: 0
+003762: 000000  
+		   dac 9f+t				" save vector in t0
+003763: 044255  
+		   -mnproc
+003764: 777766  
+		   dac 9f+t+1				" loop count in t1
+003765: 044256  
+		   lac tadu				" get "tad ulist"
+003766: 204076  
+		   dac 2f
+003767: 044000  
+		   lac dacu				" get "dac ulist"
+003770: 204077  
+		   dac 2f+1
+003771: 044001  
+		1:
+		   lac 9f+t
+003772: 204255  
+		   ral					" rotate vector up one
+003773: 740010  
+		   dac 9f+t
+003774: 044255  
+		   sma					" high bit set?
+003775: 740100  
+		   jmp 2f+2				"  no: skip the fun
+003776: 604002  
+		   lac o700000				" yes: decrement process status (wake)
+003777: 204200  
+		2: tad ..				" (avoiding indirect)
+004000: 340000  
+		   dac ..
+004001: 040000  
+		   lac 2b				" advance tad operand by 4 words
+004002: 204000  
+		   tad d4
+004003: 344122  
+		   dac 2b
+004004: 044000  
+		   lac 2b+1				" advance tad operand by 4 words
+004005: 204001  
+		   tad d4
+004006: 344122  
+		   dac 2b+1
+004007: 044001  
+		   isz 9f+t+1				" done?
+004010: 444256  
+		   jmp 1b				"  no, keep going
+004011: 603772  
+		   cla					" return zero in AC
+004012: 750000  
+		   jmp wakeup i
+004013: 623762  
+		t = t+2
+	000052  
+			" call to output CR after LF (NL)
+		putcr: 0
+004014: 000000  
+		   lac o15
+004015: 204132  
+		   dac nttychar
+004016: 045501  
+		"** 01-s1.pdf page 46
+		   cla
+004017: 750000  
+		   jmp putcr i
+004020: 624014  
+		intrp1:				" here with TTY interrupt character
+		   lac d6			" get keyboard special device number
+004021: 204124  
+		   dac .int1			" save as interrupt source
+004022: 044067  
+		   lac d1			" drain tty input buffer?
+004023: 204117  
+		   jms getchar
+004024: 101745  
+		      skp
+004025: 741000  
+		   jmp .-3
+004026: 604023  
+		   lac d2			" drain tty output buffer?
+004027: 204120  
+		   jms getchar
+004030: 101745  
+		      skp
+004031: 741000  
+		   jmp .-3
+004032: 604027  
+		   lac sfiles+0			" wake ttyin sleepers
+004033: 205520  
+		   jms wakeup
+004034: 103762  
+		   dac sfiles+0
+004035: 045520  
+		   lac sfiles+1			" wake ttyout sleepers
+004036: 205521  
+		   jms wakeup
+004037: 103762  
+		   dac sfiles+1
+004040: 045521  
+		   jms chkint			" check if user interrupted
+004041: 100320  
+		      jmp piret			"  no, return from PI
+004042: 603755  
+		   jmp 1f			" yes: return thru system call code (dump core)
+004043: 604062  
+		intrp2:				" here with display interrupt character
+		   lac d7			" get keyboard special device number
+004044: 204125  
+		   dac .int2			" save as interrupt source
+004045: 044070  
+		   lac d3			" drain keyboard buffer?
+004046: 204121  
+		   jms getchar
+004047: 101745  
+		      skp
+004050: 741000  
+		   jmp .-3
+004051: 604046  
+		   lac sfiles+2			" wake up any "keyboard" sleepers
+004052: 205522  
+		   jms wakeup
+004053: 103762  
+		   dac sfiles+2
+004054: 045522  
+		   lac sfiles+6			" wake up any "display" sleepers
+004055: 205526  
+		   jms wakeup
+004056: 103762  
+		   dac sfiles+6
+004057: 045526  
+		   jms chkint			" check if user interrupted
+004060: 100320  
+		      jmp piret			"  no, return from PI
+004061: 603755  
+		1:
+		   lac 0			" get interrupt PC
+004062: 200000  
+		   dac 020			" save as system call return PC
+004063: 040020  
+		   lac .ac			" restore AC from interrupt
+004064: 204071  
+		   jmp 021			" join system call processing (dump core?)
+004065: 600021  
+		"** 01-s1.pdf page 48
+		" s8
+		" manifests
+		mnproc = 10
+	000012  
+		dspbsz = 270
+	000416  
+		ndskbs = 4
+	000004  
+		" flags
+		.insys: 0			" "in system"
+004066: 000000  
+		.int1: 0			" inode for user interrupt 1
+004067: 000000  
+		.int2: 0			" inode for user interrupt 2
+004070: 000000  
+		.ac: 0				" saved AC from Priotity Interrupt
+004071: 000000  
+		.savblk: 0			" set by system call, cleared by disk i/o
+004072: 000000  
+		.dsptm: 0			" display restart countdown (10 ticks)
+004073: 000000  
+		.dskb: 0			" set on disk interrupt
+004074: 000000  
+		.dske: 0			" status from disk interrupt
+004075: 000000  
+		" pointers
+		tadu: tad ulist
+004076: 345561  
+		dacu: dac ulist
+004077: 045561  
+		maxquant: 30
+004100: 000036  
+		ofilesp: u.ofiles
+004101: 005654  
+		idskpp: i.dskps
+004102: 005733  
+		dskbufp: dskbuf
+004103: 007700  
+		edspbuf: dspbuf+dspbsz
+004104: 005064  
+		dspbufp3: dspbuf+3
+004105: 004451  
+		fblksp: s.fblks
+004106: 005544  
+		dacq1: dac q1
+004107: 044260  
+		lacq1: lac q1
+004110: 204260  
+		q2p: q2
+004111: 004300  
+		" strings
+		initf:
+		   n;t;< > ;< > "
+004112: 151156  
+004113: 151164  
+004114: 040040  
+004115: 040040  
+		" constants
+		d0: 0
+004116: 000000  
+		d1: 1
+004117: 000001  
+		d2: 2
+004120: 000002  
+		d3: 3
+004121: 000003  
+		d4: 4
+004122: 000004  
+		d5: 5
+004123: 000005  
+		d6: 6
+004124: 000006  
+		d7: o7: 07
+004125: 000007  
+		d8: 8
+004126: 000010  
+		d9: 9
+004127: 000011  
+		o12: d10: 10
+004130: 000012  
+		o14: 014
+004131: 000014  
+		o15: 015
+004132: 000015  
+		o17: 017
+004133: 000017  
+		o20: 020
+004134: 000020  
+		o33: 033
+004135: 000033  
+		o40: 040
+004136: 000040  
+		o55: 055
+004137: 000055  
+		o77: 077
+004140: 000077  
+		d65:o101: 0101
+004141: 000101  
+		d33: 33
+004142: 000041  
+		o132: 0132
+004143: 000132  
+		o134: 0134
+004144: 000134  
+		o137: 0137
+004145: 000137  
+		o155: 0155
+004146: 000155  
+		o177: 0177
+004147: 000177  
+		"** 01-s1.pdf page 49
+		o212: 0212
+004150: 000212  
+		o375: 0375
+004151: 000375  
+		o777: 0777
+004152: 000777  
+		o2000: 02000
+004153: 002000  
+		o4000: 04000
+004154: 004000  
+		d7999: 7999
+004155: 017477  
+		o10000: 010000
+004156: 010000  
+		o17762: 017762
+004157: 017762  
+		o17777: 017777
+004160: 017777  
+		o20001: 020001
+004161: 020001  
+		o40000: 040000
+004162: 040000  
+		o40001: 040001
+004163: 040001  
+		o70000: 070000
+004164: 070000  
+		o77777: 077777
+004165: 077777  
+		o100000: 0100000
+004166: 100000  
+		o140000: 0140000
+004167: 140000  
+		o200000: 0200000
+004170: 200000  
+		o200001: 0200001
+004171: 200001  
+		o300000: 0300000
+004172: 300000  
+		o400000: 0400000
+004173: 400000  
+		o500000: 0500000
+004174: 500000  
+		o577777: 0577777
+004175: 577777  
+		o600000: 0600000
+004176: 600000  
+		o640000: 0640000
+004177: 640000  
+		o700000: 0700000
+004200: 700000  
+		o777700: 0777700
+004201: 777700  
+		o777760: 0777760
+004202: 777760  
+		dm3: -3
+004203: 777775  
+		dm1: -1
+004204: 777777  
+		9: .=.+t			" per-routine temp variables
+	1004257  
+		c1: .=.+1			" not used?
+	1004260  
+		q1: q2;q2+98	" ** 90?  96??	" queue element free list?
+004260: 004300  
+004261: 004442  
+		   .=.+14
+	1004300  
+			" queues (two words each, head and tail pointers?)
+			"  1: tty input
+			"  2: tty output
+			"  3: display keyboard
+			"  4: paper tape reader
+			"  5: paper tape punch
+		q2:
+		   .+2;0;.+2;0;.+2;0;.+2;0;.+2;0;.+2;0;.+2;0;.+2;0;.+2;0;.+2;0
+004300: 004302  
+004301: 000000  
+004302: 004304  
+004303: 000000  
+004304: 004306  
+004305: 000000  
+004306: 004310  
+004307: 000000  
+004310: 004312  
+004311: 000000  
+004312: 004314  
+004313: 000000  
+004314: 004316  
+004315: 000000  
+004316: 004320  
+004317: 000000  
+004320: 004322  
+004321: 000000  
+004322: 004324  
+004323: 000000  
+		   .+2;0;.+2;0;.+2;0;.+2;0;.+2;0;.+2;0;.+2;0;.+2;0;.+2;0;.+2;0
+004324: 004326  
+004325: 000000  
+004326: 004330  
+004327: 000000  
+004330: 004332  
+004331: 000000  
+004332: 004334  
+004333: 000000  
+004334: 004336  
+004335: 000000  
+004336: 004340  
+004337: 000000  
+004340: 004342  
+004341: 000000  
+004342: 004344  
+004343: 000000  
+004344: 004346  
+004345: 000000  
+004346: 004350  
+004347: 000000  
+		   .+2;0;.+2;0;.+2;0;.+2;0;.+2;0;.+2;0;.+2;0;.+2;0;.+2;0;.+2;0
+004350: 004352  
+004351: 000000  
+004352: 004354  
+004353: 000000  
+004354: 004356  
+004355: 000000  
+004356: 004360  
+004357: 000000  
+004360: 004362  
+004361: 000000  
+004362: 004364  
+004363: 000000  
+004364: 004366  
+004365: 000000  
+004366: 004370  
+004367: 000000  
+004370: 004372  
+004371: 000000  
+004372: 004374  
+004373: 000000  
+		   .+2;0;.+2;0;.+2;0;.+2;0;.+2;0;.+2;0;.+2;0;.+2;0;.+2;0;.+2;0
+004374: 004376  
+004375: 000000  
+004376: 004400  
+004377: 000000  
+004400: 004402  
+004401: 000000  
+004402: 004404  
+004403: 000000  
+004404: 004406  
+004405: 000000  
+004406: 004410  
+004407: 000000  
+004410: 004412  
+004411: 000000  
+004412: 004414  
+004413: 000000  
+004414: 004416  
+004415: 000000  
+004416: 004420  
+004417: 000000  
+		   .+2;0;.+2;0;.+2;0;.+2;0;.+2;0;.+2;0;.+2;0;.+2;0;.+2;0;0;0
+004420: 004422  
+004421: 000000  
+004422: 004424  
+004423: 000000  
+004424: 004426  
+004425: 000000  
+004426: 004430  
+004427: 000000  
+004430: 004432  
+004431: 000000  
+004432: 004434  
+004433: 000000  
+004434: 004436  
+004435: 000000  
+004436: 004440  
+004437: 000000  
+004440: 004442  
+004441: 000000  
+004442: 000000  
+004443: 000000  
+		dsploc: .=.+1
+	1004445  
+		dsplno: .=.+1
+	1004446  
+		dspbuf:
+		   0065057;0147740;0160000	" display commands: see 03-scope.pdf pg 20
+004446: 065057  
+004447: 147740  
+004450: 160000  
+			" PARAM: clear blink, clear light pen, scale=1, intensity=3
+			" X-Y: invisible, no delay, Y=01740 (992)
+			" X-Y: invisible, settling delay, X=0
+		   .=.+30
+	1004507  
+		coldentry:
+		   dzm 0100 " not re-entrant
+004507: 140100  
+		   caf				" clear all flags
+004510: 703302  
+		   ion				" enable interrupts
+004511: 700042  
+		   clon				" clear clock flag
+004512: 700044  
+		   law 3072			" initialize display....
+004513: 766000  
+		   wcga
+004514: 704206  
+		   jms dspinit
+004515: 102606  
+		   law dspbuf			" set display buffer to default
+004516: 764446  
+		   jms movdsp
+004517: 102615  
+		   cla				" read system block from disk
+004520: 750000  
+		   jms dskio; 06000
+004521: 102162  
+004522: 006000  
+		   jms copy; dskbuf; sysdata; ulist-sysdata	" copy to system data
+004523: 101667  
+004524: 007700  
+004525: 005542  
+004526: 000017  
+		   lac d3			" look for "init" in default directory
+004527: 204121  
+		   jms namei; initf
+004530: 102737  
+004531: 004112  
+		      jms halt
+004532: 102254  
+		"** 01-s1.pdf page 50
+		   jms iget
+004533: 103017  
+		   cla
+004534: 750000  
+		   jms iread; 4096; 4096	" read in "init"
+004535: 103266  
+004536: 010000  
+004537: 010000  
+		   jmp 4096			" start process 1
+004540: 610000  
+		   . = dspbuf+dspbsz+3
+	1005067  
+		dskbuf = 07700
+	007700  
+		dskbs: .=.+65+65+65+65
+	1005473  
+		edskbsp: .
+005473: 005473  
+		uquant: .=.+1			" number of ticks user has been running
+	1005475  
+		dspbufp: .=.+1			" pointer to display buffer
+	1005476  
+		pbsflgs: .=.+2			" buttons on last tick, last button interrupt
+	1005500  
+		mode: .=.+1
+	1005501  
+		nttychar: .=.+1			" CR to send next, or zero
+	1005502  
+		npptchar: .=.+1
+	1005503  
+		ttydelay: .=.+1			" delay count for TTY output
+	1005504  
+		name: .=.+4
+	1005510  
+		lnkaddr: .=.+1
+	1005511  
+		char: .=.+1
+	1005512  
+		dskaddr: .=.+1
+	1005513  
+		uniqpid: 1			" pid generator
+005513: 000001  
+		lu: .=.+4			" user (process) table entry copy
+	1005520  
+		sfiles: .=.+10			" wait addresses for special files
+	1005532  
+				" (bit vector of waiting processes?)
+				" offsets:	0: ttyin, 1: ttyout, 2: keyboard,
+				"		3: ptr,   4: ptp,    6: display
+		dpdata:
+		   dpstat: .=.+1
+	1005533  
+		   dpread: .=.+1
+	1005534  
+		   dpwrite: .=.+1
+	1005535  
+		   dpchar: .=.+1
+	1005536  
+		dspdata:
+		   .dspb: .=.+1
+	1005537  
+		   .lpba: .=.+1	"** 4 written on listing
+	1005540  
+		crdata:
+		   crread: .=.+1
+	1005541  
+		   crchar: .=.+1
+	1005542  
+		sysdata:			" system data 64 words saved to disk
+		   s.nxfblk: .=.+1		" pointer to next free block??
+	1005543  
+		   s.nfblks: .=.+1		" number of free blocks (in fblks?)
+	1005544  
+		   s.fblks: .=.+10		" cached free block numbers
+	1005556  
+		   s.uniq: .=.+1		" next unique value
+	1005557  
+		   s.tim: .=.+2			" (up?)time in 60Hz ticks (low, high)
+	1005561  
+			" process table
+			" first word
+			"   bits 0:2 -- status
+			"	0: free slot
+			"	1: in/ready
+			"	2: in/notready
+			"	3: out/ready
+			"	4: out/notready??
+			"   bits 3:17 -- disk swap address/8
+			" second word: process pid
+			" third word:  smes/rmes status:
+			"	0: not waiting
+			"	-1: this process waiting (rmes)
+			"	other: complement of sender pid
+			" fourth word: smes message
+		ulist:
+		   0131000;1;0;0
+005561: 131000  
+005562: 000001  
+005563: 000000  
+005564: 000000  
+		   0031040;0;0;0
+005565: 031040  
+005566: 000000  
+005567: 000000  
+005570: 000000  
+		   0031100;0;0;0
+005571: 031100  
+005572: 000000  
+005573: 000000  
+005574: 000000  
+		   0031140;0;0;0
+005575: 031140  
+005576: 000000  
+005577: 000000  
+005600: 000000  
+		   0031200;0;0;0
+005601: 031200  
+005602: 000000  
+005603: 000000  
+005604: 000000  
+		   0031240;0;0;0
+005605: 031240  
+005606: 000000  
+005607: 000000  
+005610: 000000  
+		   0031300;0;0;0
+005611: 031300  
+005612: 000000  
+005613: 000000  
+005614: 000000  
+		   0031340;0;0;0
+005615: 031340  
+005616: 000000  
+005617: 000000  
+005620: 000000  
+		   0031400;0;0;0
+005621: 031400  
+005622: 000000  
+005623: 000000  
+005624: 000000  
+		   0031440;0;0;0
+005625: 031440  
+005626: 000000  
+005627: 000000  
+005630: 000000  
+		userdata:			" "ustruct" (swappable)
+		   u.ac: 0			" user AC
+005631: 000000  
+		   u.mq: 0			" user MQ
+005632: 000000  
+		   u.rq: .=.+9			" user 010-017, user PC
+	1005644  
+		   u.uid: -1			" user id
+005644: 777777  
+		   u.pid: 1			" process id
+005645: 000001  
+		   u.cdir: 3			" connected directory (inode number?)
+005646: 000003  
+		   u.ulistp: ulist		" pointer to process table entry
+005647: 005561  
+		   u.swapret: 0			" kernel routine to resume at after swap in
+005650: 000000  
+		   u.base: 0			" start of user buffer
+005651: 000000  
+		   u.count: 0			" size of user buffer
+005652: 000000  
+		"** 01-s1.pdf page 51
+		   u.limit: 0			" end of user buffer
+005653: 000000  
+		   u.ofiles: .=.+30		" open files (10 "fnode" entries)
+	1005712  
+		   u.dspbuf: 0
+005712: 000000  
+		   u.intflg: 1
+005713: 000001  
+		      .=userdata+64
+	1005731  
+		ii: .=.+1			" The current i-node number stored in inode
+	1005732  
+		inode:				" disk inode in memory:
+		   i.flags: .=.+1		" inode flags
+	1005733  
+						" 400000 in use
+						" 200000 large file
+						" 000040 special device (indicated by inum)
+						" 000020 directory
+						" 000010 owner read
+						" 000004 owner write
+						" 000002 world read
+						" 000001 world write
+		   i.dskps: .=.+7		" disk block numbers (indirect if "large file")
+	1005742  
+		   i.uid: .=.+1			" owner
+	1005743  
+		   i.nlks: .=.+1		" link count (negative)
+	1005744  
+		   i.size: .=.+1		" size (in words)
+	1005745  
+		   i.uniq: .=.+1		" unique number
+	1005746  
+		      .= inode+12
+	1005746  
+		di: .=.+1			" directory index
+	1005747  
+		dnode:				" directory entry:
+		   d.i: .=.+1			" inode number
+	1005750  
+		   d.name: .=.+4		" name (space padded)
+	1005754  
+		   d.uniq: .=.+1		" unique number from directory inode
+	1005755  
+		      . = dnode+8
+	1005757  
+		fnode:				" open file entry
+		   f.flags: .=.+1		" see below
+	1005760  
+		   f.badd: .=.+1		" offset
+	1005761  
+		   f.i: 0			" file i-number
+005761: 000000  
+		"	f.flags:
+		"		400000	in use
+		"		000002	read
+		"		000001	write
+
+Labels:
+.ac      004071 r
+.capt    000377 r
+.chdir   000615 r
+.chmod   000407 r
+.chown   000421 r
+.close   000720 r
+.creat   000660 r
+.dskb    004074 r
+.dske    004075 r
+.dspb    005536 r
+.dsptm   004073 r
+.exit    001163 r
+.fork    001111 r
+.getuid  000426 r
+.halt    001336 r
+.insys   004066 r
+.int1    004067 r
+.int2    004070 r
+.intrp   000257 r
+.link    000467 r
+.lpba    005537 r
+.open    000626 r
+.read    000724 r
+.rele    000403 r
+.rename  000567 r
+.rmes    001177 r
+.savblk  004072 r
+.save    001151 r
+.seek    000431 r
+.setuid  000561 r
+.smes    001225 r
+.status  000352 r
+.sysloc  000262 r
+.tell    000461 r
+.time    000610 r
+.unlink  000542 r
+.write   000773 r
+access   002312 r
+alloc    001545 r
+arg      002625 r
+argname  002631 r
+awake    001304 r
+badcal   001146 r
+betwen   001643 r
+c1       004257 r
+char     005511 r
+chkint   000320 r
+chkint1  001535 r
+cnop     003442 r
+coldentr 004507 r
+collapse 002055 r
+copy     001667 r
+copyz    001712 r
+crchar   005541 r
+crdata   005540 r
+crread   005540 r
+cskp     003335 r
+d.i      005747 r
+d.name   005750 r
+d.uniq   005754 r
+d0       004116 r
+d1       004117 r
+d10      004130 r
+d2       004120 r
+d3       004121 r
+d33      004142 r
+d4       004122 r
+d5       004123 r
+d6       004124 r
+d65      004141 r
+d7       004125 r
+d7999    004155 r
+d8       004126 r
+d9       004127 r
+dacisize 003402 r
+dacq1    004107 r
+dacu     004077 r
+dget     003104 r
+di       005746 r
+dm1      004204 r
+dm3      004203 r
+dnode    005747 r
+dpchar   005535 r
+dpdata   005532 r
+dpread   005533 r
+dpstat   005532 r
+dput     003136 r
+dpwrite  005534 r
+dskaddr  005512 r
+dskbs    005067 r
+dskbufp  004103 r
+dskio    002162 r
+dskrd    002116 r
+dskswap  002267 r
+dsktrans 002220 r
+dskwr    002146 r
+dslot    002463 r
+dspbuf   004446 r
+dspbufp  005475 r
+dspbufp3 004105 r
+dspdata  005536 r
+dspinit  002606 r
+dspleft  002562 r
+dsplno   004445 r
+dsploc   004444 r
+dspnl    002574 r
+dspput   002540 r
+dspresta 003512 r
+edskbsp  005473 r
+edspbuf  004104 r
+error    001531 r
+exitrw   001034 r
+f.badd   005760 r
+f.flags  005757 r
+f.i      005761 r
+fallr    002425 r
+fassign  002327 r
+fblksp   004106 r
+fget     002360 r
+finac    003370 r
+fnode    005757 r
+forall   002412 r
+fput     002402 r
+free     001604 r
+getchar  001745 r
+halt     002254 r
+i.dskps  005733 r
+i.flags  005732 r
+i.nlks   005743 r
+i.size   005744 r
+i.uid    005742 r
+i.uniq   005745 r
+icreat   002475 r
+idskpp   004102 r
+iget     003017 r
+ii       005731 r
+initf    004112 r
+inode    005732 r
+intrp1   004021 r
+intrp2   004044 r
+iput     003046 r
+iread    003266 r
+isown    002664 r
+itrunc   002675 r
+iwrite   003257 r
+laci     001635 r
+lacq1    004110 r
+lnkaddr  005510 r
+locn     000317 r
+locsw    000275 r
+lookfor  001066 r
+lu       005514 r
+maxquant 004100 r
+mode     005500 r
+movdsp   002615 r
+name     005504 r
+namei    002737 r
+npptchar 005502 r
+nttychar 005501 r
+o10000   004156 r
+o100000  004166 r
+o101     004141 r
+o12      004130 r
+o132     004143 r
+o134     004144 r
+o137     004145 r
+o14      004131 r
+o140000  004167 r
+o15      004132 r
+o155     004146 r
+o17      004133 r
+o177     004147 r
+o17762   004157 r
+o17777   004160 r
+o20      004134 r
+o2000    004153 r
+o200000  004170 r
+o200001  004171 r
+o20001   004161 r
+o212     004150 r
+o300000  004172 r
+o33      004135 r
+o375     004151 r
+o40      004136 r
+o4000    004154 r
+o40000   004162 r
+o400000  004173 r
+o40001   004163 r
+o500000  004174 r
+o55      004137 r
+o577777  004175 r
+o600000  004176 r
+o640000  004177 r
+o7       004125 r
+o70000   004164 r
+o700000  004200 r
+o77      004140 r
+o777     004152 r
+o777700  004201 r
+o777760  004202 r
+o77777   004165 r
+ofilesp  004101 r
+okexit   000102 r
+open1    000715 r
+orig     000000 r
+passone  001523 r
+pbsflgs  005476 r
+pget     003152 r
+pibreak  003407 r
+piret    003755 r
+putchar  001730 r
+putcr    004014 r
+putq     002011 r
+q1       004260 r
+q2       004300 r
+q2p      004111 r
+rkbdi    001410 r
+rppti    001461 r
+rttyi    001337 r
+s.fblks  005544 r
+s.nfblks 005543 r
+s.nxfblk 005542 r
+s.tim    005557 r
+s.uniq   005556 r
+searchu  001042 r
+seektell 002645 r
+sfiles   005520 r
+sleep    002434 r
+srcdbs   002035 r
+swap     000136 r
+swn      000256 r
+swp      000220 r
+swr      001324 r
+sww      001324 r
+sysdata  005542 r
+sysexit  000103 r
+tadu     004076 r
+takeq    001757 r
+ttydelay 005503 r
+ttyresta 003572 r
+u.ac     005631 r
+u.base   005651 r
+u.cdir   005646 r
+u.count  005652 r
+u.dspbuf 005712 r
+u.intflg 005713 r
+u.limit  005653 r
+u.mq     005632 r
+u.ofiles 005654 r
+u.pid    005645 r
+u.rq     005633 r
+u.swapre 005650 r
+u.uid    005644 r
+u.ulistp 005647 r
+ulist    005561 r
+uniqpid  005513 r
+uquant   005474 r
+userdata 005631 r
+wakeup   003762 r
+wdspo    001451 r
+wppto    001475 r
+wttyo    001357 r
diff --git a/build/alt/a.rim b/build/alt/a.rim
new file mode 100644
index 0000000..3ad059c
--- /dev/null
+++ b/build/alt/a.rim
@@ -0,0 +1 @@
+„€€ผ€ „€ฐœ‡„€‡ฟฟฟ„€€€š„€‘ธ€‚„€’„ฎ™„€“€„€”„€š„€•€™„€–„€„€—ฎ™„€˜ฐ€›„€™€€š„€š€€€„€›ธ€‚„€œ„ฎ™„€ดˆ‚„€ž„ฎš„€Ÿ€ˆ„€ „ฎ›„€ก€‰„€ข„ฎœ„€ฃˆŽท„€ค€€Š„€ฅ€ฎ„€ฆ€€†„€ง€š„€จ„ฎฃ„€ฉฟฟฟ„€ช„ บ„€ซ„ ถ„€ฌฌผ„€ญˆŽฃ„€ฎ€กŽ„€ฏ€ก€„€ฐˆž„€ฑธ€ข„€ฒฟฟฟ„€ณœฎฃ„€ดˆŽ„€ตˆŽฃ„€ถ€กฑ„€ท€‚ฎ„€ธฐ‰ฆ„€นœ‚„€บ„€ป„€ปฒ€€„€ฐฅ‡„ˆ’ฌ„‚Œฎ™„ƒธ€ข„„ บ„…ผ‚€„†ฐŽ„‡ˆŽท„ˆ€ญข„‰€ฟ€„Š€€„‹ฝ€€„Œˆ‘ฒ„€ธ€„ŽŒ ถ„ˆƒ„ผˆ€„‘ฐ‰ฉ„’ˆŽท„“€ฎ„”€€Š„•€€†„–ฎœ„—„€‰„˜ฎ›„™„€ˆ„šฎš„›ต€„œฎ™„ฒฎฃ„ž€€€„Ÿธ€ข„ ˆˆถ„ก€€ƒ„ขฐฉ„ฃˆˆถ„ค€€„ฅผˆ€„ฆฐ „งŒก€„จฐ‚„ฉ„ข…„ชˆˆถ„ซ€€‚„ฌฐฑ„ญˆˆถ„ฎ€€„ฏฐฑ„ฐฐฟ„ฑž„ฒ„ฎจ„ณธ€‚„ดกธ„ตžฎง„ถ†ฎง„ทธ€ข„ธˆ’ท„น€ธ€„บฏŠ„ปผŠ€„ผฐฟ„ฝพคฆ„พˆ–„ฟธ€‚„‚€กพ„‚žข…„‚‚†ข…„‚ƒธ€ข„‚„ˆ’ท„‚…€ฐ€„‚†ฎจ„‚‡„ž„‚ˆกœ„‚‰„ก€„‚АฏŠ„‚‹ผ‚€„‚Œˆ–„‚Œฌผ„‚Žธ€‚„‚ฒž„‚ฐ‚„‚‘€‰ฉ„‚’€„–„‚“€†–„‚”€‡”„‚•€‡ป„‚–€†ฐ„‚—€„™„‚˜€„ฑ„‚™€‡„‚š€„ท„‚›€…ข„‚œ€…ฑ„‚€…ท„‚ž€‰ณ„‚Ÿ€†ˆ„‚ €‚ฏ„‚ก€†„‚ข€„‡„‚ฃ€„‘„‚ค€‰ฆ„‚ฅ€‚ฒ„‚ฆ€‰ฆ„‚ง€ƒฟ„‚จ€„ƒ„‚ฉ€ƒช„‚ช€‰ฆ„‚ซ€Š•„‚ฌ€‰ฟ„‚ญ€‰‰„‚ฎ‚€„‚ฏฎ™„‚ฐ„ฏ‹„‚ฑฐ‚„‚ฒฎ™„‚ณจกฐ„‚ดˆŽฃ„‚ต€ก„‚ถ€ƒ„‚ทˆ™„‚ธœ‚ฝ„‚น„‚บ„‚บ€€„‚ป„ฎ™„‚ผฐƒ„‚ฝ‚ฝ„‚พ€˜„‚ฟ€ฏš„ƒ€€ฎ™„ƒ€ญข„ƒ‚€Žท„ƒƒ€Š„ƒ„€Žฃ„ƒ…€‘Ž„ƒ†€‘ฆ„ƒ‡€ฟ€„ƒˆ€ญš„ƒ‰€—Ÿ„ƒŠ€ฌพ„ƒ‹€ฅ„ƒŒ€Ž„„ƒ€ญž„ƒŽ€ญ „ƒ€€‘„ƒ€€€„ƒ‘ ถ„ƒ’ผ‚€„ƒ“ฒƒ„ƒ” ท„ƒ•ผŠ€„ƒ–ฐƒ™„ƒ—ฌฎฎ„ƒ˜ฐƒก„ƒ™ ธ„ƒšผŠ€„ƒ›ฒƒ„ƒœฌฎฎ„ƒผˆ€„ƒžฒƒ„ƒŸŒ ธ„ƒ ฐƒข„ƒกŒ ท„ƒขฏ‹„ƒฃผ‚€„ƒคฒƒ„ƒฅฟฟฟ„ƒฆ„ ถ„ƒงธ€ข„ƒจคƒ„ƒฉฒƒ„ƒชˆ–•„ƒซ„ƒฎ„ƒฌฎฆ„ƒญˆ—Ÿ„ƒฎ€€€„ƒฏˆ™„ƒฐˆ˜„ƒฑฎ™„ƒฒจกฐ„ƒณˆŽฃ„ƒด€กฎ„ƒต€กฏ„ƒถˆ™„ƒท„ƒบ„ƒธˆŽท„ƒน€ฏš„ƒบ€€€„ƒป€€Œ„ƒผฏง„ƒฝ†€‰„ƒพฐ‚„ƒฟฎ™„„€„ฏŠ„„ˆ–„„‚ฐƒ„„ƒŒฏŠ„„„พคฆ„„…ˆ–„„†ฐƒ„„‡ˆ–ด„„ˆฎ™„„‰จก›„„Šต€„„‹ฏš„„Œจข‚„„ด€‚„„Ž„ฏš„„ˆ˜ฆ„„ฐ‚„„‘ˆ–ด„„’ฎ™„„“„ฏข„„”ˆ˜ฆ„„•ฐ‚„„–ฎค„„—„ฎ™„„˜ฐƒ„„™ˆ–ฅ„„šœฎฉ„„›ผ‰€„„œˆ™„„ต€„„žฏฏ„„Ÿจก„„ ผŠ€„„กˆ„จ„„ขดˆ‚„„ฃˆŽฃ„„ค€กŽ„„ฅ€ฏค„„ฆˆœ‚„„งฐ„ญ„„จดˆ‚„„ฉˆŽฃ„„ช€กŽ„„ซ€ฏค„„ฌฏค„„ญ„ฏฐ„„ฎ„ฎ™„„ฏˆ”‚„„ฐฐƒ„„ฑˆ–ฅ„„ฒผ€„„ณœก„„ดœฎฉ„„ต„ฎ™„„ถฐƒ„„ทˆ–•„„ธ„„ฟ„„นˆ–•„„บ„…‚„„ปˆ–•„„ผ„…†„„ฝฎฆ„„พˆ—Ÿ„„ฟ€€€„…€ˆ™„…ˆ—Ÿ„…‚€€€„…ƒˆ™„…„„ฎฉ„……ˆŽท„…†€€€„…‡€ญ„„…ˆ€€„„…‰ฎฆ„…Šˆ—Ÿ„…‹€ญ„„…Œผˆ€„…ˆ™„…ސก„…„ญ€„…ˆ“Š„…‘ˆ”ณ„…’ฎฉ„…“ˆ˜„…”ฏ™„…•„ฏง„…–ˆŽท„…—€ญ„„…˜€ฏจ„…™€€„„…šฏฅ„…›„ฏฌ„…œฟฟฟ„…œฏฃ„…ž„ฏฃ„…Ÿˆ˜ฆ„… ˆ™ž„…กฐ‚„…ขˆ–™„…ฃ„ฎฉ„…คก„…ฅ„ญ€„…ฆˆ“Š„…งŒฏง„…จˆ™ž„…ฉฎฉ„…ชˆ˜„…ซคฏฃ„…ฌฐ…ฏ„…ญˆ–ฝ„…ฎŒฏš„…ฏˆ˜ฆ„…ฐฐƒ„…ฑฎค„…ฒผ€„…ณˆ™„…ดฎ™„…ต„ฎค„…ถฐƒ„…ทˆ–•„…ธ„…ฝ„…นˆ–•„…บ„†ƒ„…ปฎฆ„…ผˆ—Ÿ„…ฝ€€€„…พˆ™„…ฟก„†€„ญ€„†ˆ“Š„†‚ˆŽท„†ƒ€€€„†„€ฏจ„†…€€„„††ˆ™ž„†‡ฐ‚„†ˆญฏ„†‰„ฎ™„†Šญฐ„†‹„ฎš„†Œฐƒ„†ˆ–™„†Žˆ˜„†ฏš„†จกœ„†‘ผŠ€„†’ˆ™„†“ฏ™„†”„ฎฆ„†•ฐ‚„†–ˆ–•„†—„† „†˜ˆ–•„†™ผ‚€„†šก„†›ผŠ€„†œก„†„ญ€„†žฎฆ„†Ÿˆ—Ÿ„† €€€„†กˆ™„†ขˆ˜„†ฃˆ“Š„†คฏš„†ฅจกœ„†ฆผŠ€„†งฐ‡„†จญ€„†ฉจก„†ชผŠ€„†ซฐ‡„†ฌฎค„†ญผ€„†ฎˆ™„†ฏฐ‡„†ฐก„†ฑ„ญ€„†ฒˆ–•„†ณ„†ต„†ดˆŽท„†ต€€€„†ถ€ญ„„†ท€€„„†ธฎฆ„†นˆ—Ÿ„†บ€ญ„„†ปฐ‡‰„†ผˆ˜„†ฝˆ“Š„†พฏš„†ฟจกœ„‡€ผŠ€„‡ฐ‡…„‡‚ฎค„‡ƒผ€„‡„ˆ™„‡…ˆ–ฝ„‡†ฝ€€„‡‡ˆœ‚„‡ˆฐ‡„‡‰ˆ“Š„‡Šฎ™„‡‹จก›„‡Œˆ”ฝ„‡ˆ“—„‡Žˆ™„‡ฐƒ„‡ˆ›ธ„‡‘Œฏฏ„‡’ˆ”‚„‡“ฐƒ„‡”ˆ–•„‡•จกฐ„‡–„ฎฉ„‡—ˆ–•„‡˜„ฎช„‡™ฎฉ„‡šˆŽฃ„‡›€กฎ„‡œ€กฐ„‡ˆ™„‡žœฎช„‡ŸˆŽฃ„‡ €ฎฉ„‡ก€กฐ„‡ขˆ™„‡ฃ„ฎซ„‡คˆ›ธ„‡ฅฏฏ„‡ฆจก„‡งผ‚€„‡จˆ™„‡ฉฏš„‡ชจกž„‡ซผŠ€„‡ฌฐ‡ฒ„‡ญธ€‚„‡ฎฏ™„‡ฏœ‹”„‡ฐ„‡ฑ„‡ฑฒ€€„‡ฒฎฉ„‡ณ„‡ธ„‡ดฎช„‡ต„‡น„‡ถฏฐ„‡ทˆšถ„‡ธ€€€„‡น€€€„‡บฐˆœ„‡ปˆ–•„‡ผจกฐ„‡ฝ„ฎฉ„‡พˆ–•„‡ฟ„ฎช„ˆ€œฎฉ„ˆˆŽฃ„ˆ‚€ฎฉ„ˆƒ€กฐ„ˆ„ˆ™„ˆ…„ฎซ„ˆ†ˆ›ธ„ˆ‡ฏฏ„ˆˆจก„ˆ‰ผŠ€„ˆŠˆ™„ˆ‹ฏš„ˆŒจกž„ˆผŠ€„ˆŽฐˆ”„ˆธ€‚„ˆฏ™„ˆ‘œ‹”„ˆ’„ˆ“„ˆ“ฒ€€„ˆ”ฎฉ„ˆ•„ˆš„ˆ–ฎช„ˆ—„ˆ›„ˆ˜ฏฐ„ˆ™ˆšฏ„ˆš€€€„ˆ›€€€„ˆœ„ฎ™„ˆœฏฐ„ˆž„ฏฐ„ˆŸˆ˜ฆ„ˆ ˆ”‚„ˆกฐƒ„ˆข€€€„ˆฃ’ˆข„ˆค„ข‡„ˆฅฟฟถ„ˆฆ„ข†„ˆงพญฐ„ˆจ„€ˆ„ˆฉ’€ˆ„ˆช„ญŒ„ˆซ’€ˆ„ˆฌ„ญ„ˆญ’€ˆ„ˆฎ„ญŽ„ˆฏ’€ˆ„ˆฐ„ญ„ˆฑŠข‡„ˆฒคข†„ˆณฐˆฉ„ˆดคˆข„ˆตฒˆข„ˆถ€€€„ˆทˆˆข„ˆธ€ˆผ„ˆนคˆถ„ˆบคˆถ„ˆปฒˆถ„ˆผ€€€„ˆฝญŒ„ˆพผˆ„ˆฟผˆ„‰€จก•„‰ฎˆถ„‰‚ผˆ€„‰ƒฒˆผ„‰„ฟฟฝ„‰…œ€ˆ„‰†จกฐ„‰‡คˆถ„‰ˆฒˆถ„‰‰ˆˆถ„‰Š€€€„‰‹ผˆ€„‰Œˆ™„‰„ขˆ„‰Žคญ‹„‰ญ‹„‰„ฎ™„‰‘พƒ„‰’„ฎจ„‰“กธ„‰”žฎง„‰•†ฎง„‰–ˆ’ท„‰—€ธ€„‰˜ขˆ„‰™„ฎง„‰šกถ„‰›–ฎง„‰œ†ฎง„‰ฎฅ„‰ž„ฎ™„‰Ÿญ‹„‰ „ฎฅ„‰กคขˆ„‰ข†ขˆ„‰ฃคฎฃ„‰คŒฏ‹„‰ฅฐƒ„‰ฆธ€ค„‰งฟฟฟ„‰จ„€‡„‰ฉก„‰ชˆ˜„‰ซฝ€€„‰ฌˆšฏ„‰ญ€€„‰ฎ€€„‰ฏˆšฏ„‰ฐ€ฎ™„‰ฑ€€„‰ฒˆ˜ฆ„‰ณฏŠ„‰ดผŠ€„‰ตฐ‰ธ„‰ถพคฆ„‰ทˆ–„‰ธˆ‹„„‰น’ฎง„‰บจกต„‰ป†ฎง„‰ผคฎง„‰ฝŽฎง„‰พˆž„‰ฟˆ‹„„Š€กถ„Ёžฎง„Š‚†ฎง„Šƒพ€‚„Š„œฎง„Š…„ข‰„Іฟฟฟ„Ї†ข‰„Šˆˆž„Љพ€‚„ŠŠœฎง„Š‹„ข‰„ŠŒ’ข‰„Šผ€„ŠŽ„ฎ™„ŠŽข‰„Аคข‰„Š‘’ข‰„Š’„ฎš„Š“Žข‰„Š”ฐƒ„Š•ฎ™„Š–ผ‹€„Š—ˆ™„Š˜ˆˆข„Š™€ŠŸ„Ššพ€‚„Š›œฎง„Šœ„ขŠ„ŠŽขŠ„Šžˆ™„ŠŸ€€€„Š ญ„Šกฌฎ™„Šขผˆ€„ŠฃฒŠŸ„ŠคญŽ„Šฅฌข„„ŠฆฐŠต„Šงกถ„Šจžฎง„Šฉ†ฎง„Šชพ€‚„Šซœฎง„Šฌ„ขŠ„Šญฎ™„Šฎ†ขŠ„Šฏˆž„Šฐพ€‚„Šฑœฎง„Šฒ„ขŠ„ŠณŽขŠ„ŠดฐŠ•„Šตฟฟฝ„Šถœ€ˆ„Šท„ขŠ„Šธข€„ŠนžขŠ„Šบ†ขŠ„ŠปคขŠ„ŠผคขŠ„Šฝฎฅ„Šพผ€„Šฟ†ขŠ„‹€คขŠ„‹ฎš„‹‚†ขŠ„‹ƒฐ‚„‹„€€€„‹…ˆˆข„‹†€‹ˆ„‹‡ฒ‹„„‹ˆ€€€„‹‰ฎฅ„‹ŠฌญŽ„‹‹ผˆ€„‹Œฒ‹ˆ„‹ฟฟฝ„‹Žœ€ˆ„‹„ข‹„‹ข€„‹‘žข‹„‹’†ข‹„‹“ฒ‹ˆ„‹”ฒ‹„‹•€‹ž„‹–€‹Ÿ„‹—€Œˆ„‹˜€Œฑ„‹™€‹ž„‹š€‹ž„‹›€‹ฏ„‹œ€Œฉ„‹€Œฝ„‹žˆ’ฌ„‹Ÿˆ„‹ ก„‹กˆฅ„‹ขฐ‹ซ„‹ฃจกง„‹คˆŽฃ„‹ฅ€กก„‹ฆ€กฃ„‹งผˆ€„‹จœกž„‹ฉถ‡‰„‹ชฐ“„‹ซˆ”œ„‹ฌ€ญ„‹ญˆž„‹ฎฐ‹Ÿ„‹ฏˆ„‹ฐˆ”Š„‹ฑผŠ€„‹ฒฐ”•„‹ณต€„‹ดญ‘„‹ตผ‰€„‹ถฐ‹พ„‹ท”กป„‹ธ„ญ‘„‹นดˆ‚„‹บธ„†„‹ปฌก˜„‹ผˆ Œ„‹ฝฐ”•„‹พดˆ‚„‹ฟ„ญ‰„Œ€ก„Œˆ˜„Œ‚ผˆ€„Œƒฐ”•„Œ„ˆ”œ„Œ…€ญ‘„Œ†ˆž„Œ‡ฐ‹ฏ„Œˆˆ„Œ‰ก‘„ŒŠˆฅ„Œ‹ฐŒฅ„ŒŒต€„Œจกฆ„ŒŽฌกŸ„ŒฐŒ•„Œดˆ‚„Œ‘จกฅ„Œ’ฌกค„Œ“ผˆ€„Œ”ฐŒ˜„Œ•ดˆ‚„Œ–”กœ„Œ—ต€„Œ˜ดˆ‚„Œ™„ฎซ„Œšˆ„Œ›ฎซ„Œœˆ• „ŒฐŒข„Œžˆ”œ„ŒŸ€ญ–„Œ ˆž„ŒกฐŒš„Œขฎซ„Œฃถ‡‰„Œคฐ“„Œฅˆ”œ„Œฆ€ญ’„Œงˆž„ŒจฐŒˆ„Œฉˆ„Œชˆ”Š„Œซˆ• „Œฌฐ”•„Œญˆ”œ„Œฎ€ญ–„Œฏˆž„ŒฐฐŒฉ„Œฑก’„Œฒˆฅ„ŒณฐŒถ„Œดถ‡‰„Œตฐ“„Œถญ“„Œทผ€„Œธธ„„Œนˆ”œ„Œบ€ญ“„Œปˆž„ŒผฐŒฑ„Œฝˆ”Š„ŒพผŠ€„Œฟฐ”•„€ต€„ญ”„‚ผ‰€„ƒฐ‰„„”กป„…„ญ”„†ดˆ‚„‡ธ‚„„ˆฐ”•„‰ดˆ‚„Š„ญ‰„‹ก“„Œˆ˜„ผˆ€„Žฐ”•„ˆ”œ„€ญ”„‘ˆž„’ฐŒฝ„“ฌกฌ„”ฐ‚„•†ฎฉ„–ก„—„ฎ™„˜ฐƒ„™€€€„šฟฟฟ„›„ฎ™„œฐƒ„€€€„žŒ ถ„Ÿˆƒ„ ผˆ€„กฐ‰ฉ„ขฟฟฟ„ฃ„ ถ„คฒ„ฅ€€€„ฆฟฟฟ„งœญฃ„จผ‰€„ฉฐถ„ช„ญฃ„ซœก†„ฌˆŽ„ญ„ขŒ„ฎˆŠ„ฏ€ฟ€„ฐ€€„ฑขŒ„ฒˆ‘ฆ„ณŒ บ„ดขŒ„ตฒฅ„ถญข„ทผŠ€„ธˆ’ฌ„น„ญค„บˆ‘Ž„ปฟ€„ผ„ญข„ฝˆŽท„พ€ฟ„ฟ€ญฅ„Ž€€€‰„ށก˜„Ž‚„ญฃ„Žƒฐฆ„Ž„€€€„Ž…ต€„ކญฃ„އฌก˜„Žˆฐސ„މœก†„ŽŠ„ขŒ„Ž‹ดˆ‚„ŽŒ†ขŒ„ŽŒ บ„ŽŽคญฃ„ŽฒŽ„„ސญข„Ž‘„ฟ€„Ž’ˆŽท„Ž“€ญฅ„Ž”€ฟ„Ž•€€‰„Ž–ดˆ‚„Ž—„ญข„Ž˜ˆ‘ฆ„Ž™Œ บ„Žšก„Ž›„ญฃ„ŽœฒŽ„„Ž€€€„Žžจกฐ„ŽŸœกธ„Ž „Žก„Žก€€„ŽขฒŽ„Žฃ€€€„Žคต„„Žฅ’Žฃ„Žฆ„ข„ŽงคŽฃ„Žจดˆ‚„Žฉžข„Žชผ€„ŽซฐŽณ„Žฌ’Žฃ„Žญ„ข„ŽฎคŽฃ„Žฏดˆ‚„Žฐžข„Žฑผ€„Žฒผ‹€„ŽณคŽฃ„Žดดˆ‚„Žตผ€„ŽถฒŽฃ„Žท€€€„Žธฟฟฟ„ŽนžŽท„Žบ„€ˆ„ŽปคŽท„Žผฟฟฟ„ŽฝžŽท„Žพ„€‰„ŽฟคŽท„€ฟฟฟ„žŽท„‚ผ€„ƒ„ข„„คŽท„…’€ˆ„††€‰„‡คข„ˆฐ…„‰ฒŽท„Š€€€„‹ฟฟฟ„ŒžŠ„„€ˆ„ŽคŠ„ฟฟฟ„žŠ„‘ผ€„’„ข„“คŠ„”Ž€ˆ„•คข„–ฐ”„—ฒŠ„˜€€€„™„ขŽ„šฝ€€„›ˆฏ„œฒ˜„œกณ„ž„ข„ŸขŽ„ ˆ‰„กญ‰„ข„ฃ„ฃค˜„คฒ˜„ฅ€€€„ฆˆฏ„งฒฅ„จœกน„ฉ„ฌ„ชฝ€€„ซˆ‰„ฌฃ„ญคฅ„ฎฒฅ„ฏ€€€„ฐผ ˆ„ฑœกˆ„ฒ„น„ณœกฟ„ด„…„ตœก„ถ„„„ทœกผ„ธ„ฝ„นขฐ„บผŠ€„ปฒฏ„ผ„ญˆ„ฝฌขฑ„พฐƒ„ฟœกธ„€„„ฃ€„‚ฐ…„ƒฝ€€„„„ขฑ„…„ขฐ„†คฏ„‡ญˆ„ˆฒฏ„‰€€€„Šผ ˆ„‹œก‡„Œ„š„œก„Ž„›„œกท„„‘„‘ขฏ„’ผŠ€„“ฐ™„”œกฒ„•„—„–ญˆ„—„ฃ€„˜ฐ›„™ญˆ„š„ขฐ„›„ขฑ„œฒ‰„€€€„ž„ข‘„Ÿฟฟผ„ „ข„กพจท„ข„ข„ฃข‘„คฌข„ฅฒ„ฆพ„งœข„จคข„ฉคข„ชฐฃ„ซค„ฌฒ„ญ€€€„ฎฝ€€„ฏˆ„ฐฐณ„ฑพจท„ฒ„ข„ณข„ด„‘€„ตœกก„ถ„ฟ„ทผ€„ธœก„นœฌป„บจกฐ„ปผŠ€„ผฐ‘‚„ฝ„‘„พˆŽท„ฟ€€€„‘€€€€„‘€€€„‘‚ฟพฟ„‘ƒœฌป„‘„„ข„‘…œก„‘†„‘‹„‘‡ญŠ„‘ˆ†ข„‘‰ˆŽท„‘Š€ฟ€„‘‹€€€„‘Œ€€„‘ฒญ„‘Ž€€€„‘ˆŽฃ„‘€ก„‘‘€กญ„‘’ˆ’ฌ„‘“ฌญŠ„‘”ฒ‘Ž„‘•„ญŠ„‘–ˆ„‘—ฐ‘œ„‘˜ญŠ„‘™ˆ‘ฒ„‘š€ฐ€„‘›ฐ‘ค„‘œŽข„‘พ€„‘žœข„‘Ÿ„‘ก„‘ ˆŽท„‘ก€€€„‘ข€ฟ€„‘ฃ€€„‘คˆญ„‘ฅฒ‘Ž„‘ฆ€€€„‘งˆŽฃ„‘จ€ก„‘ฉ€กญ„‘ชˆ’ฌ„‘ซˆ‘ฒ„‘ฌ€ธ€„‘ญญŠ„‘ฎˆ„‘ฏŽข„‘ฐˆญ„‘ฑฒ‘ฆ„‘ฒ€€€„‘ณ„ญŠ„‘ดผ €„‘ตต›“„‘ถ€„‘ท„ข’„‘ธดˆ‚„‘นต›“„‘บ€€Š„‘ป„ข“„‘ผด†–„‘ฝ”ข“„‘พด‡ˆ„‘ฟ„ข“„’€ข’„’ต›“„’‚€€Š„’ƒ„ข’„’„ด†–„’…”ข’„’†”ข“„’‡”กธ„’ˆ„ข’„’‰ˆ’„’Šฟฟ€„’‹€ฟ€„’Œ€ข’„’€‘ฒ„’Žค‘ฒ„’ฒ‘ฒ„’€€€„’‘ฟฟถ„’’„ข“„’“ฟฟฟ„’”œ’„’•„€Œ„’–ธนก„’—’€Œ„’˜ธน”„’™’€Œ„’šธนข„’›’€Œ„’œˆŽ„’ธน„„’žŒ ผ„’Ÿ’€Œ„’ ˆŽ„’กˆŽ„’ขธนค„’ฃ ผ„’คผŠ€„’ฅฐ’ฃ„’ฆ ฝ„’งผ€„’จฒ€Œ„’ฉคข“„’ชฐ’“„’ซˆ’ฌ„’ฌ€€€„’ญคข”„’ฎฐ’ญ„’ฏธ€‚„’ฐผ€ „’ฑˆŽท„’ฒพ€€„’ณ€€„’ด€€„’ตผ€ „’ถฐ’ต„’ท€€€„’ธผ €„’นด‡ƒ„’บ„ข•„’ปˆ’„’ผฟฟ€„’ฝ€ฎ™„’พ€ข•„’ฟ€’ท„“€ข•„“œกœ„“‚„ข•„“ƒˆ’„“„ฟ€€„“…€€„“†€ข•„“‡€’ท„“ˆค’ท„“‰ฒ’ท„“Š€€€„“‹ฏš„“Œต€„“ฎค„“Žผ‰€„“ฒ“Š„“ฌฏข„“‘ด…‚„“’ดˆ‚„““จญ€„“”ผ‚€„“•ฒ“Š„“–ˆ™„“—€€€„“˜ฟฟถ„“™„ข–„“šข–„“›œก˜„“œˆ“ฐ„“ˆ’ฌ„“žฏฏ„“Ÿผ€„“ ฐ“ค„“กคข–„“ขฐ“š„“ฃฒ“—„“คญ€„“ฅ”กป„“ฆ„ฏฏ„“งฏ™„“จ„ฏฑ„“ฉข–„“ชœก˜„“ซ„ฎ™„“ฌŒฏฐ„“ญˆ”‚„“ฎค“—„“ฏฒ“—„“ฐ€€€„“ฑˆŽฃ„“ฒ€กŽ„“ณ€ก—„“ดฒ“ฐ„“ตผ €„“ถต™’„“ท€€ƒ„“ธดˆ‚„“นœก„“บ„ข—„“ป„“ฝ„“ผˆŽท„“ฝ€€€„“พ€ฏฏ„“ฟ€€ƒ„”€ค“ฐ„”ฒ“ฐ„”‚€€€„”ƒข—„”„„”‡„”…ˆŽท„”†€ฏฏ„”‡€€€„”ˆ€€ƒ„”‰ฒ”‚„”Š€€€„”‹ฎฉ„”Œฌฎซ„”ฐ”™„”ސฎฉ„”ผ€ˆ„”’ฎฉ„”‘ผ„€„”’ด…‰„”“จกช„””ฒ”Š„”•ฎฉ„”–˜กป„”—„ฎฉ„”˜ฐ”‹„”™ฎช„”š„ฎ™„”›ฐƒ„”œ€€€„”พญฐ„”ž„€ˆ„”Ÿกธ„” ต€„”ก’ฎง„”ขฎ€ˆ„”ฃฐ”ช„”คค€ˆ„”ฅค€ˆ„”ฆค€ˆ„”งฝ€€„”จด…„”ฉฐ”ก„”ชœกถ„”ซ†ฎง„”ฌ’”œ„”ญ„ข˜„”ฎ’ข˜„”ฏด€‚„”ฐ†ข˜„”ฑค”œ„”ฒฒ”œ„”ณ€€€„”ดŒฏฆ„”ตผˆ€„”ถคฏฆ„”ทฏฆ„”ธˆ™„„”นฏง„”บผ‚€„”ปฐ”ถ„”ผฒ”ณ„”ฝ€€€„”พ„ข™„”ฟˆ”ณ„•€กœ„•„ฏ™„•‚คฏ™„•ƒฏ™„•„ˆ˜„•…ฏš„•†ผ‰€„•‡ฐ•‚„•ˆฏ™„•‰„ฏง„•ŠˆŽท„•‹€ญ„„•Œ€ฏจ„•€€„„•Žคญฎ„•ญฎ„•„ฏฌ„•‘„ฏฅ„•’ข™„•“”กป„•”„ฏš„••ฎค„•–„ฏข„•—ฟฟฟ„•˜„ฏฃ„•™Œฏค„•šˆŠ„•›€ฏ›„•œ€€‡„•ˆ˜ฆ„•žˆ™ž„•Ÿฒ”ฝ„• €€€„•กจกง„•ขผŠ€„•ฃฒ• „•คฌก™„•ฅฐ•ฐ„•ฆต€„•งฌก˜„•จˆ•ผ„•ฉ’คค„•ชฌกป„•ซฐ•ฒ„•ฌด€‚„•ญ†คค„•ฎคคค„•ฏฒ• „•ฐˆ–†„•ฑฒ• „•ฒคค„•ณฌก„„•ดฐ–‚„•ต„€ˆ„•ถกป„•ท†€ˆ„•ธฝ€€„•นถ†™„•บ†คค„•ปฒ• „•ผ€€€„•ฝคฅ„•พฌกข„•ฟฐ–‚„–€คคฅ„–ฒ•ผ„–‚กซ„–ƒธค”„–„ค• „–…ฒ• „–†€€€„–‡ก…„–ˆ„คค„–‰กป„–Š„คฉ„–‹Œคฅ„–Œฒ–†„–€€€„–Žธ€‚„–ธ…„–„ฌฝ„–‘ฟฟฟ„–’„ญž„–“ธ€ข„–”ฒ–„–•€€€„––’ฎฃ„–—คฎฃ„–˜ฒ–•„–™€€€„–šˆ–•„–›„–„–œˆŽท„–€€€„–ž€ญ„„–Ÿ€€„„– ฎฆ„–กˆ—Ÿ„–ข€ญ„„–ฃˆ™„–คฒ–™„–ฅ€€€„–ฆˆ–•„–ง„ฎฉ„–จˆ–•„–ฉ„ฎซ„–ชˆ›ธ„–ซฎซ„–ฌผŠ€„–ญฒ–ฅ„–ฎฌก„–ฏฐ–ฒ„–ฐฏค„–ฑฒ–ฅ„–ฒฏฐ„–ณฒ–ฅ„–ด€€€„–ตˆ–™„–ถˆ˜„–ทฎค„–ธผ€„–นฌฏข„–บผˆ€„–ปˆ™„–ผฒ–ด„–ฝ€€€„–พฟฟน„–ฟ„ขš„—€ก‚„—„ข›„—‚’ข›„—ƒผŠ€„—„ฐ—˜„—…ฏš„—†จกธ„—‡ผŠ€„—ˆฐ—•„—‰ฟฟ€„—Š„ขœ„—‹กƒ„—Œ„ข„—’ข›„—Žˆ‘Ž„—’ข„—ผ‚€„—‘ˆŽ„„—’คข„—“คขœ„—”ฐ—„—•’ข›„—–ˆŽ„„——Žข›„—˜คข›„—™คขš„—šฐ—‚„—›ฏš„—œจกฝ„—„ฏš„—žฒ–ฝ„—Ÿ€€€„— ˆ˜„—กฟฟฟ„—ขž—Ÿ„—ฃ„ขŸ„—คค—Ÿ„—ฅฏš„—ฆจกœ„—งผŠ€„—จฒ—Ÿ„—ฉฟฟธ„—ชœฏค„—ซผ€„—ฌถ…ƒ„—ญ„ขž„—ฎผŠ€„—ฏฒ—Ÿ„—ฐŒฏฆ„—ฑฏฆ„—ฒˆ™„„—ณฏง„—ดผŠ€„—ตฐ˜‹„—ถขŸ„—ท„€ˆ„—ธฏจ„—นฎ€ˆ„—บผˆ€„—ปฐ˜‹„—ผฏฉ„—ฝฎ€ˆ„—พผˆ€„—ฟฐ˜‹„˜€ฏช„˜ฎ€ˆ„˜‚ผˆ€„˜ƒฐ˜‹„˜„ฏซ„˜…ฎ€ˆ„˜†ผˆ€„˜‡ฐ˜‹„˜ˆฏง„˜‰ค—Ÿ„˜Šฒ—Ÿ„˜‹คฏฆ„˜Œคขž„˜ฐ—ฑ„˜Žฒ—Ÿ„˜€€€„˜„ฏ™„˜‘ผ €„˜’ต›“„˜“€€…„˜”„ข „˜•ดˆ‚„˜–œก„˜—„ขก„˜˜ˆ‘Ž„˜™ข „˜šผ €„˜›ต™’„˜œ€€Œ„˜ดˆ‚„˜žœกƒ„˜Ÿ„ข „˜ „˜ข„˜กˆŽท„˜ข€€€„˜ฃ€ฏš„˜ค€€Œ„˜ฅฒ˜„˜ฆ€€€„˜งขก„˜จˆ‘Ž„˜ฉพฏ™„˜ช„€ˆ„˜ซฟฟฟ„˜ฌœข „˜ญ„€‰„˜ฎฟฟด„˜ฏ„ขข„˜ฐ’€ˆ„˜ฑฎ€‰„˜ฒผˆ€„˜ณฐ˜ท„˜ดคขข„˜ตฐ˜ฐ„˜ถฒ˜ฆ„˜ทฟฟฟ„˜ธœ€ˆ„˜น„€ˆ„˜บฟฟฟ„˜ปœ€‰„˜ผ„€‰„˜ฝ’€ˆ„˜พ†€‰„˜ฟคขข„™€ฐ˜ฝ„™ขก„™‚ˆ‘ฆ„™ƒฒ˜ฆ„™„€€€„™…„ฏฆ„™†ถ‡ƒ„™‡„ขฃ„™ˆˆ™ช„™‰„ขค„™Šˆ‘Ž„™‹ขฃ„™Œจก „™œกƒ„™Ž„ขฅ„™„™‘„™ˆŽท„™‘€€€„™’€ฏง„™“€€ˆ„™”ขฃ„™•œก–„™–ˆŽฃ„™—€กŽ„™˜€ฏค„™™ผˆ€„™šฒ™„„™›ˆœ‚„™œŒฏง„™ฒ™„„™ž€€€„™Ÿขค„™ ˆ‘Ž„™กขฅ„™ข„™ฅ„™ฃˆŽท„™ค€ฏง„™ฅ€€€„™ฆ€€ˆ„™งขค„™จˆ‘ฆ„™ฉฒ™ž„™ช€€€„™ซถ…†„™ฌ„ขฆ„™ญฏš„™ฎจกธ„™ฏผ‚€„™ฐฐ𐄙ฑขฆ„™ฒˆŽฃ„™ณ€กŽ„™ด€ก”„™ตฐ™ฝ„™ถœก‚„™ท„ขฆ„™ธ’ขฆ„™นผŠ€„™บˆฅ„™ป†ขฆ„™ผฒ™ช„™ฝˆฅ„™พ„ขง„™ฟˆŽท„š€€ฏ›„š€ฟ€„š‚€€‡„šƒˆŠ„š„€ฟ‡„š…€€น„š†ขง„š‡ˆ‘ฆ„šˆขง„š‰„ฏ›„šŠˆŠ„š‹€ฏœ„šŒ€€†„šฏš„šŽ”กธ„š„ฏš„šขฆ„š‘ถ…†„š’ˆŽฃ„š“€กŽ„š”€ก”„š•ˆ’ฌ„š–œก‚„š—„ขง„š˜’ขง„š™ผŠ€„ššˆฅ„š›†ขง„šœ„ขจ„šˆ‘Ž„šžขฆ„šŸจก „š œกƒ„šก„ขง„šข’ขง„šฃผ‚€„šคฒ™ช„šฅˆฅ„šฆ„ขฆ„šงขจ„šจˆ‘Ž„šฉขฆ„šช†ขง„šซขจ„šฌˆ‘ฆ„šญขฆ„šฎฒ™ช„šฏ€€€„šฐ„ขฉ„šฑšฏ„šฒ„šถ„šณ›„šด„šฏ„šตฐšบ„šถ€€€„šท„ขฉ„šธœข„šน„šฏ„šบฟฟฟ„šปžšถ„šผ„€Š„šฝ„€‹„šพคšถ„šฟ’šถ„›€„ขช„›คšถ„›‚กด„›ƒ šฏ„›„ฏค„›…ผ€„›†œขฉ„›‡ผ€„›ˆˆŽฃ„›‰€กŽ„›Š€ขช„›‹ขช„›Œ„ขซ„›ผ€„›Žœก„›ผŠ€„›ฒšถ„›‘„ขช„›’ขฉ„›“ˆ™ช„›”„ขฌ„›•ˆ‘Ž„›–ขฉ„›—จก „›˜œกƒ„›™œข„„›š šฏ„››ฐ›ž„›œ„€Š„›ผˆ€„›ž„€‹„›Ÿ’€‹„› †€Š„›กคขฉ„›ขคขช„›ฃฐ›ฏ„›ค šฏ„›ฅฐ›ญ„›ฆขฉ„›งˆŽฃ„›จ€กŽ„›ฉ€ฏค„›ช„ฏค„›ซขฌ„›ฌˆ‘ฆ„›ญขซ„›ฎฒšถ„›ฏขฉ„›ฐจก „›ฑผ‚€„›ฒฐ›Ÿ„›ณ šฏ„›ดฐ›’„›ตขฌ„›ถˆ‘ฆ„›ทฐ›’„›ธ€€€„›นฎ™„›บˆ“ฐ„›ปˆ™„›ผฏฏ„›ฝผ€„›พˆ™„›ฟฏฑ„œ€ˆ˜„œฒ›ธ„œ‚€€€„œƒ„ฏค„œ„ˆ˜ฆ„œ…ฏค„œ†ฒœ‚„œ‡„ น„œˆธงก„œ‰ฐœš„œŠธงฑ„œ‹ธงช„œŒ„ญš„œผˆ„œŽฐœ•„œธงŠ„œ„ญ„œ‘ฟฟฟ„œ’„ญ›„œ“ญš„œ”ผ€ˆ„œ•ผ€„œ–ฐŸญ„œ—ฟฟฟ„œ˜„ญœ„œ™ฐŸญ„œšธ€„œ›ฐœถ„œœธคŠ„œ„ฌพ„œžคญฐ„œŸผˆ€„œ คญฏ„œกคฌผ„œขผ€€„œฃฟฟฟ„œค„€‡„œฅธ€ค„œฆญƒ„œงผ‰€„œจคญƒ„œฉผˆ€„œชˆบ„œซญž„œฌผŠ€„œญฐŸญ„œฎค ป„œฏผˆ€„œฐฐŠ„œฑฌก‘„œฒฐŸญ„œณคญž„œดฐŸญ„œตฐŠ„œถธน‘„œทฐœพ„œธฟฟฟ„œน„ ผ„œบธนš„œป„ ฝ„œผธนก„œฝฐŸญ„œพธˆช„œฟผˆ„€ฐ‘„ธ…„‚ญž„ƒผŠ€„„ฐŸญ„…œขƒ„†ผŠ€„‡ฐŠ„ˆ„ญž„‰ฐŸญ„Šก„‹„ญž„Œฌฝ„ธ…ง„Žฟฟถ„„ ป„ฐŸญ„‘ผˆ„’ฐ•„“ธ‡ข„”ฐŸญ„•ผ€„–ฐ›„—ธˆŠ„˜„ญŸ„™ธ‡“„šฐŸญ„›ธƒ„œฐต„ญƒ„žผ€„Ÿคญƒ„ ธƒŠ„ก„ญ‰„ขฌกฉ„ฃฐ ‘„คก„ฅˆ˜„ฆŒญ‰„งญ„จˆŸฒ„ฉ„ญ„ชญ‰„ซฌกจ„ฌผˆ€„ญฐŸญ„ฎญ‘„ฏผ€„ฐ”กป„ฑ„ญ‘„ฒˆ Œ„ณˆบ„ดฐŸญ„ตธ„„ถฐž–„ทธ„‚„ธˆบ„นฐŸญ„บ€€€„ปญƒ„ผผ‰€„ฝฒบ„พญ„ฟŒญ„ž€ผ‚€„žฐž†„ž‚คญƒ„žƒก„ž„ˆฅ„ž…ฐž’„ž†ธ„†„ž‡ฌก˜„žˆˆ Œ„ž‰ฌกš„žŠผˆ€„ž‹ฒบ„žŒญƒ„žœกœ„žŽผ „žผ€„ž„ญƒ„ž‘ฒบ„ž’ญ‘„ž“ˆŸฒ„ž”„ญ‘„ž•ฒบ„ž–ธฃ„ž—ฐžค„ž˜ธฃ„„ž™ธฃŠ„žš„ญ‰„ž›ฌก„žœฐ ค„žก‘„žžˆ˜„žŸผ€€„ž ญ’„žกˆŸฒ„žข„ญ’„žฃฐŸญ„žคธ„žฅฐŸŠ„žฆญ‚„žงผŠ€„žจฐžญ„žฉ„ญ‰„žชธŠ„žซ„ญ‚„žฌฐžฏ„žญธŠ„žฎ„ญ‰„žฏญ‰„žฐผŠ€„žฑฐžธ„žฒก’„žณˆ˜„žดฐŸ„„žตญ‰„žถฌก’„žทฐŸ†„žธญ‚„žนผŠ€„žบฐžพ„žป„ญ‰„žผŒญ‚„žฝฐžฏ„žพธ„„žฟญ“„Ÿ€ˆŸฒ„Ÿ”กป„Ÿ‚„ญ“„ŸƒฐŸญ„Ÿ„ญ‰„Ÿ…„ญ‚„Ÿ†ญ“„Ÿ‡ˆŸฒ„Ÿˆ„ญ“„Ÿ‰ฐŸญ„ŸŠธ‚„Ÿ‹ฐŸ–„ŸŒธ‚‚„Ÿก“„ŸŽˆฅ„ŸฐŸ’„Ÿธ‚„„Ÿ‘ฐŸญ„Ÿ’ญ”„Ÿ“ˆŸฒ„Ÿ”„ญ”„Ÿ•ฐŸญ„Ÿ–ธค„Ÿ—ฐŸฅ„Ÿ˜ธค„„Ÿ™ธคŠ„Ÿš„ฌฟ„Ÿ›จกซ„ŸœผŠ€„ŸฐŸญ„Ÿžˆ–†„ŸŸญ–„Ÿ ˆŸฒ„Ÿก„ญ–„Ÿขฝ€€„Ÿฃธค”„ŸคฐŸญ„Ÿฅธท„ŸฆฐŸฌ„ŸงธทŠ„Ÿจ„ญก„Ÿฉฟฟฟ„Ÿช„ญ „ŸซฐŸญ„ŸฌธทŠ„Ÿญ€€„Ÿฎผ€ˆ„Ÿฏ น„Ÿฐธ€ข„Ÿฑฒ€€„Ÿฒ€€€„Ÿณ„ขญ„Ÿดฟฟถ„Ÿต„ขฎ„Ÿถ พ„Ÿท„ €„Ÿธ ฟ„Ÿน„ „Ÿบขญ„Ÿปผ€ˆ„Ÿผ„ขญ„Ÿฝผ€„Ÿพฐ ‚„Ÿฟข€„ €œ€€„ „€€„ ‚ €„ ƒœก’„ „„ €„ … „ †œก’„ ‡„ „ ˆคขฎ„ ‰ฐŸบ„ Šฝ€€„ ‹ฒŸฒ„ Œ€€€„ กš„ Ž„ญ„ ฝ€€„ ฒ Œ„ ‘ก”„ ’„ ท„ “ก„ ”ˆฅ„ •ผˆ€„ –ฐ “„ —ก„ ˜ˆฅ„ ™ผˆ€„ šฐ —„ ›ญ„ œˆŸฒ„ „ญ„ žญ‘„ ŸˆŸฒ„  „ญ‘„ กˆƒ„ ขฐŸญ„ ฃฐ ฒ„ คก•„ ฅ„ ธ„ ฆก‘„ งˆฅ„ จผˆ€„ ฉฐ ฆ„ ชญ’„ ซˆŸฒ„ ฌ„ญ’„ ญญ–„ ฎˆŸฒ„ ฏ„ญ–„ ฐˆƒ„ ฑฐŸญ„ ฒ€€„ ณ„€„ ด น„ ตฐ€‘„ ถ€€€„ ท€€€„ ธ€€€„ น€€€„ บ€€€„ ป€€€„ ผ€€€„ ฝ€€€„ พœญฑ„ ฟ„ญฑ„ก€€€ž„ก€ฎฌ„ก‚€ฏ›„กƒ€ฟ€„ก„€จด„ก…€คฉ„ก†€ญค„ก‡„ขฐ„กˆขฐ„ก‰€ฃ€„กŠ‰ฎ„ก‹‰ด„กŒ„€ „ก„€ „กŽ€€€„ก€€„ก€€‚„ก‘€€ƒ„ก’€€„„ก“€€…„ก”€€†„ก•€€‡„ก–€€ˆ„ก—€€‰„ก˜€€Š„ก™€€Œ„กš€€„ก›€€„กœ€€„ก€€›„กž€€ „กŸ€€ญ„ก €€ฟ„กก€„กข€€ก„กฃ€š„กค€œ„กฅ€Ÿ„กฆ€ญ„กง€ฟ„กจ€‚Š„กฉ€ƒฝ„กช€‡ฟ„กซ€€„กฌ€ €„กญผฟ„กฎ€€„กฏฟฒ„กฐฟฟ„กฑ‚€„กฒ„€€„กณ„€„กด‡€€„กต‡ฟฟ„กถˆ€€„กทŒ€€„กธ€€„กน€„กบ˜€€„กป €€„กผจ€€„กฝฏฟฟ„กพฐ€€„กฟด€€„ข€ธ€€„ขฟฟ€„ข‚ฟฟฐ„ขƒฟฟฝ„ข„ฟฟฟ„ขฐ€ฃ€„ขฑ€คข„ฃ€€ฃ‚„ฃ€€€„ฃ‚€ฃ„„ฃƒ€€€„ฃ„€ฃ†„ฃ…€€€„ฃ†€ฃˆ„ฃ‡€€€„ฃˆ€ฃŠ„ฃ‰€€€„ฃŠ€ฃŒ„ฃ‹€€€„ฃŒ€ฃŽ„ฃ€€€„ฃŽ€ฃ„ฃ€€€„ฃ€ฃ’„ฃ‘€€€„ฃ’€ฃ”„ฃ“€€€„ฃ”€ฃ–„ฃ•€€€„ฃ–€ฃ˜„ฃ—€€€„ฃ˜€ฃš„ฃ™€€€„ฃš€ฃœ„ฃ›€€€„ฃœ€ฃž„ฃ€€€„ฃž€ฃ „ฃŸ€€€„ฃ €ฃข„ฃก€€€„ฃข€ฃค„ฃฃ€€€„ฃค€ฃฆ„ฃฅ€€€„ฃฆ€ฃจ„ฃง€€€„ฃจ€ฃช„ฃฉ€€€„ฃช€ฃฌ„ฃซ€€€„ฃฌ€ฃฎ„ฃญ€€€„ฃฎ€ฃฐ„ฃฏ€€€„ฃฐ€ฃฒ„ฃฑ€€€„ฃฒ€ฃด„ฃณ€€€„ฃด€ฃถ„ฃต€€€„ฃถ€ฃธ„ฃท€€€„ฃธ€ฃบ„ฃน€€€„ฃบ€ฃผ„ฃป€€€„ฃผ€ฃพ„ฃฝ€€€„ฃพ€ค€„ฃฟ€€€„ค€€ค‚„ค€€€„ค‚€ค„„คƒ€€€„ค„€ค†„ค…€€€„ค†€คˆ„ค‡€€€„คˆ€คŠ„ค‰€€€„คŠ€คŒ„ค‹€€€„คŒ€คŽ„ค€€€„คŽ€ค„ค€€€„ค€ค’„ค‘€€€„ค’€ค”„ค“€€€„ค”€ค–„ค•€€€„ค–€ค˜„ค—€€€„ค˜€คš„ค™€€€„คš€คœ„ค›€€€„คœ€คž„ค€€€„คž€ค „คŸ€€€„ค €คข„คก€€€„คข€€€„คฃ€€€„คฆ†จฏ„คงŒฟ „คจŽ€€„ฅ‡Œ€„ฅˆธ›‚„ฅ‰ธ€ข„ฅŠธ€ค„ฅ‹พฐ€„ฅŒธข†„ฅˆ–†„ฅŽพคฆ„ฅˆ–„ฅฝ€€„ฅ‘ˆ‘ฒ„ฅ’€ฐ€„ฅ“ˆŽท„ฅ”€ฟ€„ฅ•€ญข„ฅ–€€„ฅ—ก‘„ฅ˜ˆ—Ÿ„ฅ™€กŠ„ฅšˆ’ฌ„ฅ›ˆ˜„ฅœฝ€€„ฅˆšถ„ฅž€€„ฅŸ€€„ฅ ฑ€€„ฌป€ฌป„ญ‹€€„ญฑ‹ˆ€„ญฒ€€„ญณ€€€„ญด€€€„ญตƒˆ „ญถ€€€„ญท€€€„ญธ€€€„ญนƒ‰€„ญบ€€€„ญป€€€„ญผ€€€„ญฝƒ‰ „ญพ€€€„ญฟ€€€„ฎ€€€€„ฎƒŠ€„ฎ‚€€€„ฎƒ€€€„ฎ„€€€„ฎ…ƒŠ „ฎ†€€€„ฎ‡€€€„ฎˆ€€€„ฎ‰ƒ‹€„ฎŠ€€€„ฎ‹€€€„ฎŒ€€€„ฎƒ‹ „ฎŽ€€€„ฎ€€€„ฎ€€€„ฎ‘ƒŒ€„ฎ’€€€„ฎ“€€€„ฎ”€€€„ฎ•ƒŒ „ฎ–€€€„ฎ—€€€„ฎ˜€€€„ฎ™€€€„ฎš€€€„ฎคฟฟฟ„ฎฅ€€„ฎฆ€€ƒ„ฎง€ญฑ„ฎจ€€€„ฎฉ€€€„ฎช€€€„ฎซ€€€„ฏŠ€€€„ฏ‹€€„ฏฑ€€€ผ€ 
\ No newline at end of file
diff --git a/build/alt/image.fs b/build/alt/image.fs
new file mode 100644
index 0000000..d37e641
Binary files /dev/null and b/build/alt/image.fs differ
diff --git a/build/alt/unixv0.simh b/build/alt/unixv0.simh
index ea840ac..38593b0 100644
--- a/build/alt/unixv0.simh
+++ b/build/alt/unixv0.simh
@@ -5,8 +5,9 @@ show cpu
 
 set tti unix
 set rb ena
-att rb alt/image.fs
+att rb image.fs
 show dev
 
-load -S alt/a.rim
+load -S a.rim
 dep pc 0100
+go