タイトル/名前 | 更新者 | 更新日 |
---|---|---|
読書/SFなど | msakamoto-sf | 2009-11-16 09:51:32 |
Ruby/codepiece/LOAD_PATH($:) | msakamoto-sf | 2009-11-16 09:02:21 |
Ruby | msakamoto-sf | 2009-11-16 08:56:59 |
Ruby/codepiece/ENV | msakamoto-sf | 2009-11-16 08:56:31 |
日記/2009/11/13/自縄自縛 | msakamoto-sf | 2009-11-13 14:11:33 |
日記/2009/11/10/適応障害が再発したっぽい。 | msakamoto-sf | 2009-11-10 03:19:51 |
日記/2009/11/08/「へぇへぇ」ってへりくだっておいて、裏で「べーっ」すればいいんじゃね? | msakamoto-sf | 2009-11-08 23:27:04 |
日記/2009/11/07/MavenとEclipse(m2eclipse)メモ | msakamoto-sf | 2009-11-07 18:23:18 |
日記/2009/11/03/8259A(PIC)のIOポート番号が謎だった件 | msakamoto-sf | 2009-11-03 19:54:00 |
日記/2009/11/02/仕事観 | msakamoto-sf | 2009-11-02 02:35:09 |
SF的な本ではこんなのを読んでます。いずれも2-3回読み直してますので、まぁ結構人生観に影響を与えた本に違いありません。
ちなみに、読んだ順番に紹介してます。
小学生時代の1990-1991年頃かな?アインシュタイン・ロマンというNHKスペシャルが全6回にわたり放映されました。
相対性理論とか重力とかブラックホールとか、SFチックな部分に惹かれて見ていました。
たまたま、TV放送を見逃して、本を先に読む事になったのがこの第5回目に相当する「E=mc2隠された設計図」です(その後、高校生くらいになってビデオで見ました)。まぁ小学生にはちょっと早すぎる内容で、高校生くらいになって読み直して、初めて味わえた本でした。
全6回に渡るシリーズの中で、この第5回目だけ極めて異色に見えます。他は相対性理論や宇宙論などを語っているのに対し、この回だけは原子爆弾とアインシュタインの関連や、アインシュタイン個人の科学観、そして巨大化する科学「産業」への考察という重たいテーマを扱っています。
哀しいかな、もはや増刷も無く中古でしか入手できませんが、科学と社会の関わりに繋がるテーマだけに、今でも充分考えさせられる内容です。
確か中学生の頃、近所の本屋で土曜日半日かけて立ち読みで読み切った小説です。もちろんその後ちゃんと買いましたが。
SFバイオホラーとして映画化もされたしゲームにもなりました。
この本で生物学方面に目覚めさせられましたね。
これも中学生の頃に読んだ本です。さすがに立ち読みでは無理で、素直に買って家に戻ってから読みました。
レトロウィルスやRNAだの遺伝子だの、この当時自分の中ではSFといえばバイオ系がメインでした。
エボラウィルス系は確かに恐ろしいのですが、基本接触(体液)感染な上に、短期間で発病して死に至る為、インフルエンザに比べればまだまだ爆発の可能性は低いと思います。それでもWHOのRSSフィードなどを見ていると散発的に、アフリカでぽつぽつoutbreakしてはいるようですが。
それよりもやはり、日常的な食中毒や風邪、インフルエンザなどをきちんと対処しておきたいものです。
「パラサイト・イヴ」と同じ瀬名秀明氏の著作です。今度は脳科学SFです。
脳科学, 人工生命, ヒトと霊長類の意識の問題, 神の概念などてんこ盛りです。正直、科学的な解説部分を楽しめないとついていけないかもしれません。
高校1年位で読んだのですが、当時すでにパラサイト・イヴとホット・ゾーンでどっぷりと生物学の怪しげな知識に嵌っていましたので、その部分は難なく楽しめました(それでも脳科学の部分についていくのはしんどかった)。
当時BASICやC言語プログラミングに触り始めてましたので、コンピュータ上で蠢く人工生命ネタは面白かったですね。プログラミングの学習意欲をSF小説で掻き立てられました。
社会人になってから読んだ本です。
角川文庫版のカバーの絵は、実は「BRAIN VALLEY」の物語中で重要なヒントとして出てきます。
そして扱っているネタも「神の概念」「人工生命」と若干オーバーラップしてますので、セットで読む事をオススメしたい所です。「神」の概念に対する切り口は全然異なりますが。
SF系は好きですが、かといってそんなに読んでるわけでもありません。
Amazonのレビューでも、既に古典SFでこのネタは使われているよ、という指摘があったりします。
でもまぁ、古典SFは読まずにぶっちゃけ「表紙買い」で偶々読んだ本に刺激されて、「将来はここに出てくるような科学者になったり、ソフトウェアを作ったり、ネタ元を自分で調べてみたいなぁ」と夢をふくらませていたのは確かですので、そういう楽しみ方も有りなんじゃないかなぁと。
幼稚園位の頃、小児喘息でよく家で寝込んでいた。またそのせいで体力が無く、運動音痴だった。
走り回る他の子供たちの輪に入れず、運動ではなくて勉強で認めてもらおうとした。
幸い家で寝込んでいる最中は、学習漫画を読む時間に事欠かず、知識面では他の子供たちより背伸びする事ができた。
周りより抜きんでた知識や技術を持つ事に拘ってしまうのは、子供の頃の体験をベースとし、知識や技術でもって周りから認められたい、役に立つ人間だと思われたい、という思いがあるからだ、という事にようやく気づいた。だから自分より深く技術を知っている人間と出会うと、自分の存在価値を崩される危機感を感じて不安になるし、そうでない人間と出会うと、安心してしまう。
技術書を読む時間も取れないのに買い込んでしまうのも、「いずれは読むのだから=自分の技術・知識になるのだから」と、自分の存在価値を補強しようとしているのだろう。時々本棚を人に見せたくなるのも、「自分はこれだけの本を読んだ、あるいは読んで勉強しようとしている=価値のある人間だと認めて欲しい」という思いがあるからだろう。
一方で、プログラミングの世界というのは幅は広いし深さもピンキリ。マシン語の世界からスクリプト言語の世界まで、あるいはネットワークの世界やハードウェアの世界など、一生かけても網羅しきれるかどうかという世界。システム開発の技法にしてもウォーターフォールやアジャイル、スパイラル開発など出てくるし、開発のサポートツールにしてもバージョン管理やビルドシステムなど次から次へと出てくる。
そういう世界に身を置きながら、「周囲より抜きんでた知識・技術を持つ事が自分の存在価値」としてしまう生き方・考え方は、蟻地獄に嵌ってしまったようだ、ということにようやく気づきつつある。
周囲の技量が低ければ満足感は得られるが、逆に「自分の持つ技能が活かせない」と物足りなさを感じてしまうし、かといって周囲の技量が高ければ、「自分の存在価値が無いのでは」と焦りを感じるし不安に思い、「あの言語もこの言語も勉強しないと駄目だ、ネットワークも勉強しないとアレも勉強しないと」とプライベートタイムを費やして勉強しなければ、と思う技術知識は積もっていくばかりだ。
さらに、一方では「エンジニアは~~でなければならない」論が渦巻き、「コミュニケーションに長けていなければならない」「ホウレンソウをしっかり行わなければならない」「技術者のリーダーはかくあるべし」「経営の視点を持たなければならない」云々。「これからはアジャイル開発だ」「テストファーストだ」「人が問題だ」「やる気が、モチベーションが」「組織がどーたらこーたら」云々。
そういうのを目にする度に、自分の存在価値を自分で認める為には、「認めて貰えたと錯覚」するには、「キャッチアップ」というお題目の下、@ITや自分戦略研究所だの日経○○だののWeb記事を日々チェックし、ハテブをチェックし、他人の呟きを必死にかき集めて自分のものと錯覚する為の毎日が続く。
日々の仕事を真面目にこなそうとし、更に重ねてWebの世界の潮流が気になって仕方がない、という生活を送る。自分の存在価値を高めようとしてWebの世界の情報・記事や新技術にキャッチアップしようともがくたびに、日々の仕事とのギャップは開き、さらに悩みが増えていく。
自分自身で、自ら蟻地獄に嵌りに行ったようなものだった。
仕事に不安を覚えるたびに、「自己分析が足りていない」と過去をほじくり返し、その度にトラウマ紛いの思い出にぶちあたり「やはり自分は○○に向いていないんだ」と落ち込む。周りに対する感謝の気持ちなどそっちのけで、ネガティブ方向に「自分が、自分が」と内向きに落ちていく。
転職先では早く馴染まな「ければならない」、新しい職場の仕事の進め方に早く慣れな「ければならない」、将来どういう人間と職場で一緒になるのか分からないから、どんな人間とも上手く付き合えな「ければならない」・・・「~でなければならない」のオンパレード。「~でなければならない」お題目通りにできない、そう感じる毎に、「やっぱり自分は~」と自己否定に走り、「やっぱりこの仕事には向いていないのでは」と不安が募り、別の仕事・会社に目移りする。
蟻地獄を作っていたのは自分自身で、間抜けな事に自分で創った蟻地獄に嵌りに行ったのも、これまた自分から進んで嵌りに行った、というわけだ。
とある出向先のとある部長に、「君は、欲張りだな」と言われた。同時に「最強って何だと思う?」とも聞かれた。恐らく、自分のこうした性質を見抜いていたのだろう。
社会人になってからの対人行動の全部が、「自分を認めて欲しい、必要だと言って欲しい、愛して欲しい」という自己憐憫や自己愛ベースの、他人の気持ちなど毛ほども考えない自分勝手な行動だった。
全部が全部妄想の中の独り相撲で、自己愛と自己憐憫と自己承認の押しつけで、蟻地獄に落ちた挙げ句が適応障害だのでメンタルクリニックに駆け込んで、プロジェクトをドロップアウトして周りの人間に負担を強いるだけ。
反吐がでる。
・・・けどまぁ、メッキ剥がしてお面を外してみれば、自分も良くいる凡夫の一人に過ぎなかったという事で。
自分でも信じられない。
今日・・・既に昨日か、朝からうっすらとした頭痛を感じていて、やばそうな感じはしていたのだけれど一応電車に乗って会社に行こうとした。電車から降りて地下鉄駅の改札を出て階段を上がろうとしたところで軽いめまいと同時に倦怠感が一気に体を襲った。そのまま改札出口と階段の間を暫くうろうろしていて、最初は自分の状態が分からなかったのだけれど、10分ほどして「やばい、これ、適応障害っぽい。」と自覚してすぐ、自宅に戻る事にした。そのまま携帯電話の電源を切って伏せっている。
怖い。怖がる対象は分かっている。職場のメンバーと上手く意思疎通が取れない。関係者と上手く意思疎通が取れない、取れていないように自分では思えてしまう。「これで合っているのか」と些末な確認事項があるのだが、質問できる雰囲気ではなくてただただ周りの仕事のスピードに圧倒されてしまい呆然と立ちすくんでしまっている。自分の仕事や割り振られたタスクの詳細すら、質問したら馬鹿にされ「そんなことも分からずに仕事しに来ているのか」と罵倒されているような被害者妄想を抱えてしまっている。
周りが「あうん」「ツーカー」で動いているのに取り残されている恐怖を感じる。本来なら「それってどういうことですか?」と突っ込んで質問しないと駄目なのに、上手く切り出すタイミングを計れず、質問する機会を逃してしまう。
他人が作ったシステムに対して保守運用案件で改修や機能追加を行うのは今の現場が初めて、という訳ではない。急な手伝いや正式な案件などで何度か経験している。ただし、よくよく振り返るに、少なからず今回の適応障害に似た、居心地の悪さ、というのは感じていた。
さらに振り返れば、2005-2006年に携わった半年ほどの案件で、既存の決済システムに機能追加を入れる仕事があり、あの時も一種の適応障害を起こしていた可能性が高い。単純に自分がとりまとめ役になっていた責任感で、欠勤やプロジェクトドロップアウトに至らなかっただけで、毎日毎日目の前のチームメンバーに怯えて過ごしていた。
多分、他人の作ったシステムの保守運用+新規開発的な現場で、背景事情や歴史を呑み込めずに次から次へとタスクを割り振られ、こなしていくというスタイルに合わないのかも知れない。
自分は決して呑み込みや要領の良い方ではなくて、本筋から外れた些末な事をぐだぐだと質問したり、弄っては壊してを繰り返して、回り道して、ある日突然、「あ、そーゆーことか!」と理解する。多分客観的に見ればあまり頭が回る方ではないと思う。そして自分一人でシステムを組むのは慣れているが、他人が作ったシステムに対して手を入れるのは非常に厄介だという苦手意識というか恐怖心がある。
他人が描いて、既に完成している絵に対して「ここにもう一つ、お花を描き入れて欲しい」と頼まれたような。
全て他人が既に完成させた「流儀」に従わないと、システムが破綻してしまう。右も左も分からないので、あちこちに聞き回る事になる。関係者が増えてくると、自分は只の伝書鳩になってしまう。「Aさんはああいった」「Bさんはこう言ってる」「Cさんはこっちだという」
そうなってしまうのも、「自分はこのシステムをこうしたい」という意志が元々欠落しているから。
中学生の頃、美術部に所属していた。そこでは運動会の度に紅組・白組で分かれて、4.5畳ほどの大看板を作り、流行の映画やアニメの絵などをみんなで描く習わしがあった。
当時一年の自分はここで、「自分ならこうする」と図々しく言いだし、一部分を描いた。
が、見事に失敗した。
その後上手く謝れず先輩からも叱られたもので、とにかく小・中のころから、5-10人を超える集団で何か作ろう、という時は大抵、上手く動けず失敗している。
・・・書いてて思うに、よくよく思い出せばアレもコレも適応障害だったなぁと。小中では運動会の練習が嫌で嫌で溜まらなくて、腹痛だったり倦怠感におそわれたりしたし。中学校では、小学校までの「よい子」が通用しなくて壊れかけたし。
なんだよ、適応障害の常習者じゃないか、自分。というか小・中でのトラウマが多すぎる。思い出したくもない事ばかりだ。それも全て、グループワークに関する事ばかり。
小・中でのグループワークに関する経験で、もしかしたら「グループワークでは自分で何かしようとすると失敗する」という刷り込みでも成立してしまったのかも知れない。あるいは「他人の流儀に合わせるのを最優先し、自分ならこうする、という意志を持ち込んではならない」という恐怖を自分で勝手に刷り込んだのかも知れない。小学・中学での経験上、自分の流儀で何かすると、周りが作り上げてきたものをぶちこわしにしてしまう経験しかない。
自分の意志で「これがいい」というものを、他人が作り上げたシステム・絵・世界の中で実現させた時、「成功」した記憶がない、経験がない。
全部、「ぶちこわしにした」経験や記憶ばかりだ。周りと合わない、他人と合っていない、自己の世界で完結してしまってどうにも異分子になってしまう。
幼稚園の時、お絵かきをしていた時。周りはお日様を赤い丸で描いていた。しかし自分だけ、見たまんまに黄色いクレヨンで丸く塗った。そのとき、「なんでみんなお日様を赤く塗るんだろう」と不思議に思った。
他人の流儀に合わせられずぶちこわしにするくせに、じゃぁ自分の流儀で何が作れるんだと言われれば、大学時代に作ったテキストエディタしかり、このYakiBikiしかり、随分と自己満足的なものしか作れない。
まぁ、スパゲッティ料理やチャーハンなどは、ちゃんと基本から勉強していたのもあってか、実家にいた頃は家族受けも良かったのだけれど・・・。
うーん、じゃぁ自己満足で技能を高める事が出来る世界なら上手く摺り合わせられるのかな?
今のところ、過去、それが最もリンクしていたのがお絵かきや料理なのだけれど、さすがにそれもな・・・。
プログラミングもリンクしてはいるのだけれど、「システム開発」には上手くリンクしてないんだよな。
だって他人の流儀に合わせる=「自分で意志を持ってはいけない」という刷り込みが、こと「システム開発」においては強く影響しすぎている。2004-2005年にかけての数ヶ月に渡る案件で、「自分で勝手にコーディングするな!Javaを知らない人間が見て分からないコードをJavaで書くな!どんなに不満があっても、今既に動いているコードの書き方から逸脱するな!」と徹底的に叩かれて、トラウマになってしまっている。
だからか・・・。運用保守+新規開発などで、いつも不安に苛まれるのは。「これでいいのか」「このやり方であっているのか」「既に完成された暗黙の不文律を壊していないか」、その現場ではベテランであるリーダクラスからすればどうでも言いような細かい部分について不安感を覚えてしまい、質問・・・しようと思っても出来なくて不安ばかりが大きくなるのは。
逆に、失敗もあるけどそれと同じくらいの「成功感」を感じた仕事というのは、基本的にゼロから自分で作れる仕事で、しかも「前歴無し」。従うべき過去の不文律が無い状態で、自分の知見を注ぎ込むことが出来た仕事。
そして、ほぼ自分一人か2-3人のチームで担当した仕事。
お互いの担当範囲を話し合ってすぐ分担でき、互いにすぐフォローしあう事ができた仕事。
まぁ当たり前過ぎるけど。
でもな。それでも、料理やお絵かきの時に感じた「愉悦」レベルを感じた事は少ない。サンプルデータの作成でプログラムを分散させた時、ゼロから作った決済システムの総合テストが完了した時、YakiBikiのACLのテストコードが動き出した時、clas3hiftでBCELを使ったクラスのすり替え実証コードが動いた時。これら、自分の持ちうるありったけの技法や知見を注ぎ込んで、状況に合わせて絶妙の塩こしょう・調味料・香辛料を加減し、狙ったとおりの筆使い・色使いで質感を表現できた時、あの舞い上がって椅子から飛び跳ねて小躍りしたくなるような、ニヤリと笑ってお茶を一服したくなるような、あの気分は、中々感じられなかった。というか書いてて、半分以上は個人の時間だったな・・・。
結論。集団不適合。少なくとも「他者が作った既存システムに対する保守+新機能開発を集団で行う仕事」は確実に不適合。
いい加減思い知れ、自分。
「ズルだ!」っつー先輩はぼろくそ言われてるし、一方で「全体最適を考えない部分最適は不味い、大体引き継ぎ問題もあるし。」という慎重論も出てて、これ質問者が納得しきれる回答ってあるのか?と思う。
ちょい気になったのは次の下り。
しかし業務をどう効率よくして作業をするかを考え実践するのも仕事のうちだと思うのですが
私の考えは間違ってますか?
「正しい」or「間違っている」っていう二元論が、なんか学校の優等生臭い。そこだけ引っ掛かる。・・・以前、自分自身が、そういう罠に嵌って痛い思いをした事があったから。
仕事観なんて場所・人それぞれなのだから、まぁその先輩には「へぇへぇ、すんませんでした」と上辺だけへりくだっておいて、裏側で舌出して「べーっ」ってしとくだけでいいんじゃね?何も他の社員にVBマクロ広めるだとか、全体最適まで考えて提案するとかまで頑張らなくても良いと思う。
あとマクロで組む云々それ自体に関して、「あなたが居なくなったらマクロを使える人が居なくなり、メンテナンスできないのでみんなが迷惑する」という論調もあるのだけれど。
そもそも今の時点でマクロ使ってないんだから、マクロを使える人が居なくなったら、単に今と同じ手作業に戻るだけでいいんでないの?それが嫌だったり、戻してみたらやっぱり手作業は非効率でした~となれば、まじめな人が居れば「じゃぁ自分が」とマクロの勉強し始めるかも知れないし、あるいは上司や経営層がシステム化について少しは本腰入れるかも知れない。
というかなんでそこまで、自分が居なくなったときのこと考えなくちゃいけないんだよ。それ言いだしたら、もう全員が全員「もし明日交通事故なりで自分が死んだら・・・」ということを考えて仕事をしなくちゃいけなくなって、滅茶苦茶面倒くさい事になるぞ?怖がって誰も新しい事に手を出さなくなるし、新しい仕事をしなくなるぞ?
質問者、真面目すぎ。もっと気ぃ抜いてOKっす。マクロを組めるのは実力の内だから、内職でも良いのでその技能を伸ばしてくださいな。ほんでうるさい先輩が居なくなったタイミングとかで楽しましょ。
まるで昔の自分を見ているようだ・・・。
仕事場でMavenを使ったプロジェクトをEclipseで開発する必要が発生した。
ので、職場のメンバーからMaven本を借りて、今日一日だらだらと読んでEclipseで弄ったりしてた。
薄割りには内容が無駄なくコンパクトにまとまっていて、一日で読み切れる内容だった。
で、手持ちのEclipse(3.5)にm2eclipseを入れてみようとして若干嵌ったメモ。
これまだやってなかった。ので、eclipse.exeと同じディレクトリにあるeclipse.iniの "-vmargs" の上に以下の2行を追加。
-vm C:/Program Files/Java/jdk1.6.0_12/bin/javaw.exe
最初コマンドラインでMavenを試してみて、その時は何事もなく動いてくれたので全く気にしてなかったのだが、m2eclipseを入れて色々弄っている内に"settings.xmlがねえぞ( ゚Д゚)ゴルァ!!"というようなメッセージに出会ったので、とりあえず普通にApacheサイトからDLしたMavenに入ってたsettings.xmlをコピーしておいたらどうにか動いてくれた。
依存関係の追加で検索しようとしても出てこない。ばかりか、"Search error"とか出る。Eclipseの設定画面からインデックス再構築をかけようとすると、
[WARN] Error scanning context: local Cannot delete \ C:\eclipse3.5\.metadata\.plugins\org.maven.ide.eclipse\nexus\local\_0.cfs Unable to reindex local repository
とか出てしまう。
↑これと同じ症状だった。pom.xml手動編集して自分で追加したらどうにか動いてくれた。
log4j 1.2.15 と 1.2.14 とでは依存関係が変化した影響で、1.2.15になるとセントラルリポジトリからの依存関係の解決が上手く行かなくなる、という話。
m2eclipseウゼェという場合は、ビルドパスの解決のみ行う軽量版があるという話。
以上。
作りながら学ぶOSカーネル―保護モードプログラミングの基本と実践
を、暫く前からだらだらと読み進めていて、ようやく4章の割り込みの所に到達した。
で、PIC(Programmable Interrupt Controller)の初期化と割り込みハンドラのソースコードの部分で基礎的な知識が無かった故に「??」となってしまった部分があるのでメモしておく。
103pからの「ソース4-6 kernel2.asm」で、デフォルトの割り込みハンドラ"isr_ignore"とTimer用割り込みハンドラ"isr_32_timer"で、
MOV AL, 0x20 OUT 0x20, AL
というのが出てくるが、これの解説がどうも載っていない。コメントも無い。
また100pから始まる「ソース4-5 boot2.asm」にもPICの初期化処理で"OUT"命令が出てくるが、そのIOポートが次の4種類出てくる。
OUT 0x20, AL OUT 0x21, AL OUT 0xA0, AL OUT 0xA1, AL
この違いについて調べてみた。本の解説にもあるとおり、割り込みはIntelの8259Aというコントローラ(とその互換chip)が担当しているとの事で、PIC 8259Aを中心に色々Googleに訊いてまわる事になった。
8259Aの物理的な構造としてD0-D7pin, A0pinが今回の件に関連している。PICの初期化や内部レジスタの操作にはA0pin, D0-D7pinで行う。データバスを介して行われるPICの処理命令(Command Words)とA0pinの関係についてまずまとめる。初期化処理系(ICWx)は一度のみ、操作処理系(OCWx)は初期化完了後は何度でも呼べる。
前述のboot2.asm, kernel2.asmで使われているのはICW1-4, OCW1-2である。それぞれをOUTで指定する時のIOポートアドレスをA0pinの状態と比べてみる。
ICW1 | A0=0 | OUT 0x20/0xA0 |
ICW2 | A0=1 | OUT 0x21/0xA1 |
ICW3 | A0=1 | OUT 0x21/0xA1 |
ICW4 | A0=1 | OUT 0x21/0xA1 |
OCW1 | A0=1 | OUT 0x21/0xA1 |
OCW2 | A0=0 | OUT 0x20/0xA0 |
このように、0x20/0xA0ならA0=0, 0x21/0xA1ならA0=1というように対応している。
結論から言うと、このA0pin/D0-D7pinとIOポート番号の対応はBIOSのPOST処理により設定される。
命令の種類として、A0pin = 0 のものは主に初期化処理や内部レジスタの状態を変更する命令、 A0pin = 1 のものは内部レジスタの値を直接操作したり、アドレスoffsetを操作する透過的なデータ操作命令として、以下のような分類にしているようだ。A0pinのON/OFF切り替えはCPU内部で行われているものと思われる(*1)。
0x20/0xA0 | 初期化命令, EOI指示(ICW1, OCW2, OCW3) |
0x21/0xA1 | マスク/値の設定(ICW2, ICW3, ICW4, OCW1) |
ICW4は追加命令なので0x20/0xA0の方がふさわしいように思えるが、それ以外はおおむね分類として合っているように思われる。
ここで、boot2.asm, kernel2.asm のソースに戻って見直してみる。
まずboot2.asmでは、ICW1-4の設定を行うところは順に 0x20/0xA0(ICW1), 0x21/0xA1(ICW2-4) へOUTしている。
また
mov al, 0xFF ; スレーブPICの全ての割り込みを out 0xA1, al ; 防いでおく。 dw 0x00eb, 0x00eb mov al, 0xFB ; マスターPICのIRQ2番を除いた、 out 0x21, al ; 全ての割り込みを防いでおく。
ここの部分は OCW1、mask設定になる為これも 0x21/0xA1へのOUTとなっている。
kernel2.asmの無限ループへ入る直前、
mov al, 0xFE ; 防いでおいた割り込み中、 out 0x21, al ; タイマーだけを有効にする。
こちらもOCW1, mask設定で 0x21へのOUTとなっている。
今回の調査に駆り立てたきっかけである、isr_ignore, isr_32_timerの次の箇所を読み解いてみる。
mov al, 0x20 out 0x20, al
まず0x20へのOUTで、0x20というコマンド値は OCW2, EOI指定である。8259Aの仕様では0x20は「非指定EOI」である。
ここでEOIの意味について簡単にまとめておく。
8259Aの内部レジスタには以下の3つがある。
PICはEOIを受け付けると、該当するISRビットを"0"にする。これにより、次の割り込みが受け付けられるようになる。EOIには次の3種類がある。
boot2.asmのICW4ではAEOIビットがズバリ、"0"になっている。このため割り込みハンドラの中でOCW2, EOIコマンドを発行する必要があった。非指定EOIを使っているのは、割り込み番号を特に指定する必要のない小規模な実験コードだからだろう。
IOポート番号や8259Aの仕様など、非常にハード寄りの部分の調査になった為、それなりに大変だった。ここまで調べたが、かといって8259Aの仕様を完全に理解したのかと言われると否。今回はA0pinとIOポート番号のmappingがどこで行われているのかを最優先にして資料を流し読みしたため、ICWやOCWの各命令詳細やPICの内部ダイアグラムまで追っかけたわけではない。
486アーキテクチャなどのハード系はインターネットが一般に広まる1995年以前に完成していた為、Google先生に訊いてもなかなか日本語で分かりやすい資料が見つからず、結局英語資料の方が役に立った。
しかし近年のアーキテクチャではAPICとしてCPUのコアに統合されているらしく、これを使うと数十の割り込みコントローラを連結させたりする事も出来るらしい。非常に奥が深い世界なのだと思い知らされた。
「どんな仕事をしたいのか?」と聞かれれば、多分条件反射でこう答えてしまうだろう。
「夭逝した銅版画家、清原啓子のような仕事をしたい」、と。
コツコツとひたすら地道な作業の果てに、驚くべき緻密さ、バランス、危うさで成り立つ世界を作る。
電子計算機技術の道で、あの流儀で仕事を出来るのはどの業界だろう。
それとも。
行き先を間違えたのか。