ホームJ-CONT談義ホーム>その他

案内嬢

その他

 パソコンや JavaScript にまつわるよしなし事をそこはかとなく書き綴ったページです。
 限り無く無意味かと思われます。

JavaScript 談義 サイトホーム 履歴転進

コンピュータ遍歴

目当て …と言うほど主体的には弄ってないです。自作さえ考えてましたが…
 (ホントにハンダゴテ持っての「自作」である)とにかく形になったモノとしてはMZ-40Kとか、ワンボードと呼ばれるオモチャからです。あんまりチャチなんで購入は見合わせ、店頭で突ついて遊んでオシマイです。ビープ音ぐらいは鳴らせたかな? GMC-4(ページ下半)
 次の遭遇はボンクラ工業高校内で。教材用に先生が出したのは、スイッチ四つ入力だけの基板二段重ねのモノ。記憶媒体は「紙テープ」。怪獣特撮みたい。プログラムを投げて遊んでいました。
 その時に習ったのは FORTRUN 。楽しかったが誰も理解し得ず、先生も決まり文句しか教えてくれませんでした。動かす実習をどこかの工場でやりましたが、私は就職試験面接で行けなかったので実力は未知数でした。
 (まだ FORTRUN そのモノは現場で使われてるのかねぇ?)
 さて卒業後、絵描き方面になって縁遠くなったある日、「こいば買わんかッパ?」と(ツリー構造を理解出来ないクセにコンピュータ会社に入った)妖怪が訪ねて来て、パソピアとかゆーのを入手。
 一緒に付いてた操典を紐解いて BASIC 東芝方言を習得…のつもりでした。が、何しろ先達←絶対勉強してねぇ。が「オマィ、よー判るやっかッパ!」と頼りない。
 でも日の丸描いたりするだけで終了です。女の子の絵一枚描くのに多数の反比例グラフ(曲線)と無為な時間を費やしただけの様な。
 その内、同人関係者がウチへ98系を持ち込み、単なるゲーム機を経て現在の使われ様になっています。あーツマラン遍歴。


コンピュータの基礎

一応マンガバカじゃないのっ! パソコンなんてモノは1980年代から台頭して来ました。それ以前にも無かった訳ではないのですが、市井の一般人がカチャカチャ鳴らすシチュエーションはなかったという事です。
 コンピュータというモノは何や得体の知れないバケモノと同義語でした。マンガ・アニメ・特撮に出て来るか、リアルの白亜の塔の中にしか無かったのです。穴空き紙テープ読んだりとか。
 実質、一般人の手始めは例のMZ-40Kとか、あの手のオモチャでないかと…私は大変失望して、そちら方面への道を捨てた程でした。
 でもあれらってド基本を習得するのに良かったんだなと後で気付きました。文字通り捨てたもんじゃなかった訳です。
∞♀$☆※〒≧!! といっても現実は、やはりだからどうした的な事しか出来ないオモチャだったワケで。
 (どうしても誉められない)

そぐわぬ暴走マンガ(15禁?)を:
見たい 消えて

 ド古い書籍が見つかった事だし、要らん記事削減キャンペーン中なので、「コンピュータの基礎」と銘打って大昔の知識を開示しようというのがここの魂胆です。それがまた要らん記事にならんきゃイイが。
 書籍の初版は何と昭和三十九年東京オリムピツクの年!ホントに生まれてねぇ。題してNHKブックス「電子頭脳」!!!葵の紋所を突き付けられた感覚だす。
 内容は、現在どこまで出来るか、記憶回路の仕組み、ここまで人間に近付いてますよ…今でも通用する様な、それってさほど進歩してない証しじゃねぇか、という感覚で。
 でもちゃんとビットの事なんかを黒丸並べて懇切丁寧に説明してるから前向きです。で、二進法の計算手順についてズラズラと…まぁ、補数とかいう足し算で引き算とか、そういう内部的な話まで載っけてて多少食傷気味になったりします。

 さてここで取り上げたいのはプログラムの事です。大昔のプログラム。何か Symbolic Input Program 、略して SIP とかいうのを紹介されていますが、ネット上では確認出来ませんでした。
 またそれが恐ろしい姿なんです。いわゆるアセンブリとかありますが、あれよりスゴイ。もっと機械語ベッタリなんです。

数字記号意味
0X払え clear (X)
1A足せ Add
2B引け suBtract
3Tしまえ sTore
4J飛べ Jump
5JM負なら飛べ Jump Minus
6R読め Read
7O出せ Out

 何か大昔の電子計算機操典の様な雰囲気になってきたでしょ。こんなのだけでプログラムを書くんです、アドレス操作単位の。

 3 + 4 - 2 という計算をしてみませう。まず11番地に3、12番地に4、13番地に2、と書込みます。紙テープで読み込ませるんですよ。
 手順は:
またかッ! 「11番地を読め」「12番地を読め」「13番地を読め」
 「アキュムレーター(計算する所)を払え」
 「11番地の数を足せ」「12番地の数を足せ」「13番地の数を引け」
 「14番地へしまえ」「14番地の数を出せ」「9番地へ飛べ」

 つまり一個のアキュムレーター(計算する所)に数字を入れたり出したりしているだけなのです。現在のホントのコンピュータでも、こんな事を繰返しているだけなのですよ、一秒間に数千万回以上。
 こういうのを一番地式命令法式というそうです。あ、9番地ってスタート地点と思って下さい。さて、これをさっきの SIP で表現すると:

0 R 11
1 R 12
2 R 13
3 X ∼
4 A 11
5 A 12
6 B 13
7 T 14
8 O 14
9 J  9
 味気ない…。左列の数字は行番号(手順番号)です。見えてる数字は計算する数値ではなくてアドレス番号なんですね。いかに低水準、すなわちコンピュータに近い所でやってるか判ろうモノです。
 「∼」は単に「払え」の命令ではアキュムレーターだと決まってるんで番地の指定は要らないよという印です。
 実際は番地の番号も「変数」に収めて次の様にします。
U = 11.
V = 12.
W = 13.
Y = 14.
R / U.
R / V.
R / W.
X / ∼.
A / U.
A / V.
B / W.
T / Y.
O / Y.
P)J / P.
 露骨に手順書です。U, V, W, Y が変数でしょう。P) とはスタート地点(9番地)の事かな?Pで始めて最後にPに飛べ、ですので「オシマイ」です。
 コンピュータそのモノの仕組みを理解するには良さそうですが、なんか箸の上げ下ろしまでクドクドネチネチ言ってやらないとダメだというのでたいへんウザイのであります。

 そこで多少高水準な言語が登場する訳です。例えば「アルゴル」…昔の書籍ですから。書いてみると次の通り:

begin integer U, V, W, Y;
	READ(U); READ(V); READ(W);
	Y := U + V - W;
	PRINT(Y)
end
 だそうです。なんか見慣れた感じ。やから、決められた一定の手順を一言で言える様になった訳です。
 いちいち「11番を持って来て12番を上から乗せて…」と言わんでも「+」の一文字で済むのです、いや頭イイ。しかしあんまり変わり映えがしないという事は、進歩が…。

 ちなみに JavaScript で似た様な事をしてみます。

+ - =
function keisan()
{
	var u = eval(document.FM.HK0.value);
	var v = eval(document.FM.HK1.value);
	var w = eval(document.FM.HK2.value);
//
	var y = u + v - w;
	document.FM.HK3.value = y;
}
 対比の為にワザと引数を使わない書き方をしてるので多少もっさりしてますが…更に単純になってます。単に足し算引き算して答えを表示してるだけ。
 引数を使えば、最初の三行も要りません。
 (実際は「全消」やら、秘密の仕掛けやら、追加)
 つまりこりゃ何かというと、コンピュータさんの翻訳技術が過去よりも向上したという証し。人間の方が遥かに楽を出来る様になったのです。
 だってプログラムの事知らんでも、なんか計算してんなって判るでしょ。それに読ませる紙テープも要らないしね。

 それでも低水準言語は生き続けています。なぜかというと、コンピュータさんが翻訳するという余計な手間が省けて作業効率が飛躍的に上がるからです。
 (なぜ「さん」付け?)

ページトップ


GMC-4 買ってアセンブれ ←ヲヤヂ

 まず「GMC-4」とは何かと言うと、「学研・大人の科学vol.24」のフロクで出て来た4ビットマイコンです。私たちの世代にはムズムズするアイテムです。まーもっとも、ワタクシはこの兄弟分を見て興味を無くしたやうな気もするのですが。
 さて、とは言っても4ビットCPUは既に存在しないので、8ビットの中で架空的に作ってるそうです。そんな能書きはイイ、動けば。
 醍醐味はこの厄介煩雑なるハンドアセンブル。手打込みです。しかも一番地ずつ。地に足の付いた作業、第一次産業(手植え)的なプログラミング「作業」です。

れんしう まーナマイキな

 ※ 0123456789ABCDEF という16進並びを理解されている前提で進む※
 スイッチを入れるとデコーダ(数字表示器)に「F」と表示、これは元々「棚・00番地」に入ってる空き箱の詰め物ようなモノで(余計判らん例え)、まー「カラ」である印だと覚えときましょう。
 試しに「E」と押すとデコーダ表示が「E」になります。このままでは仮決めなので、INCRを押して流すと(←やや表現変です)「棚・00番地」の中身が詰め物から「E」に変えられます…て、付属の書籍に書いてるね、完璧に。('A`)

番地 命令
 00 E (Eを押してINCR)
 01 7 (7を押してINCR)
 これが私の最初のオリジナルプログラム。動かすには RESET, 1, RUN と押します。でも単に轟音を鳴らすだけですし、止まりません。※RESETを押せば止められるよ
 止まらないのは止める命令が無いから。コンピって、そーゆー融通の無さがあります。
 まず第一歩は「止めてみる」事にしましょう。しかしGMC-4には止める命令はありません!ではどうするかというと、ある所で無限に終わらない仕事(というか「しぐさ」)をさせます。「無限ループ」という方法です。
02 F (JUMP命令「〜番地へ飛ばす」)
03 0 (番地番号その1)
04 2 (番地番号その2)
 「02番地」以降を付け足しました。これで一回轟音が鳴った後、無限ループに突入。「02番地」から「02番地(同じ場所)へ飛ばす」訳ですから、その場でジタバタしてるのがお判りかと思います。ハタから見てると止まってる訳です。
 00〜01までと、02〜04までが、それぞれ一塊の「文」です。(ここまででレベル1か?)

 音を何度か鳴らす
00 A TIY    Yレジスタ(まな板Y)に
01 0 <0>    0を置く
02 8 TIA    Aレジスタ(まな板A)に
03 2 <2>    2を置く
04 E CAL    呼ぶぞ命令
05 C TIMR    「待った」
06 E CAL    呼ぶぞ命令
07 7 ENDS    「オシマイ」
08 B AIY    Yレジスタに加算
09 1 <1>    1だけ ※F(10進では16)以上になると、フラグ=1
0A F JUMP  フラグ1なら飛ばすぞ
0B 0 <0>    0と
0C A <A>    Aで0Aへ
0D F JUMP  フラグ1なら飛ばすぞ
0E 0 <0>    0と
0F 4 <4>    4で04へ
 付随書籍とは書き順が違いますが、この方が書きやすかったから。お判りでしょうが、実際の打込みは左から二列目だけです。<〜>は数値を素のまま参照するという意味。
 急に難しくなったようですが、積み木が重なっただけです。やる事は決まってます。
 「レジスタ」なんて言うから判らん、「まな板」にしました。余計に判らん?とにかく数値等を置いておく場所です架空の。
 最初のYレジスタ0置き(00)は数のリセット(掃除)の様なモノ。Aレジの2置き(02)は意味があって、待ち時間に関わります。
 Eで始まる一群の外部命令系(サブルーチン)があります。待ちタイマー(04〜05)や轟音命令(06〜07・この程度なら順番不問かな?)がそうです。待ち時間はAレジ数値を参照して決まります。(Aレジ数値+1)*0.1秒です。
 Yレジに指定値1を加算(08〜09)。命令AIYは、桁上がりすると実行フラグ1ですが、でないと実行フラグ0です。(他所でも判定してるが、略)
 JUMP命令は、フラグの具合で振舞いが変わります。0Aでは、フラグ0なら素通りして(ただしそれでフラグ1になる)、0Dで04へ飛ばされます。
 Yレジが加算され続けてF(10進では16)を超えると桁上がりになって、0AでJUMP命令による無限ループでプログラムが止められます。つまり16回鳴る訳です。

GMC-4マンガ 実はこの後、最後にEND音出したりとかいろいろ作ってみたのですが、行きついた先がまるで付随書籍の丸写しのような様子に陥り…目的地が同じだ(出来る事が少ない)からそういう事になります。
 逆に言うと、中でどのような処理を行うか予想出来れば、高級言語でもより軽いプログラムを組む事が出来る、という訳です。
 本来、この手合いはトレーニングキットとして発売されたのですから。
 ただしGMC-4に限って言えば、必ずしもその様な使い方が出来るとは断言出来ません。使えんとも言いません。

ページトップ


JavaScript 談義 サイトホーム 履歴転進
(c) PHALSAIL HeadQuarters