since 2007.8 by K-ichi

 

MSXの半角フォントをいじってみた。

一般にゲームなどでは、キャラクタ以外の表示物は半角フォントに当てはめ、PRINT文を使うイメージで処理している。こうして変更されたフォントデータも、BASICに戻ってSCREEN命令を行うと、きれいに初期化される。

ここでは、SCREEN命令でも初期化されない方法を試してみた。

MSXは世界市場で売られていたため、いくつかの仕様がある。funet.fiから受け継がれたアーカイブサイトからデータをもらって見てみたところ、フォントは大きく4種類が確認できた。
日本版、インターナショナル版、韓国版、ブラジル版で、さらにいくつかのマイナーバージョンもある。日本版では、MSX2+以降で平仮名フォントが変更された。ドイツ版は基本的にインターナショナル版だが、ゼロの形が異なる。

半角フォントはMAIN-ROMに入っている。格納アドレスは(0004H)の2バイトに書いてあり、通常は1BBFHを指している。調べた範囲では、韓国版MSX1のみ異なっていた。フォントデータは1文字あたり8バイト、256文字なので計2KB。それを抽出したのが*.FNTファイル(後述)になる。

SCREEN命令は、VRAMに置くパターン内容を、このROM上のデータを使って初期化する。正確には、ワークエリアCGPNT(F91FH)が指す場所にあるデータを使っている。このワークエリアは3バイトで、スロット、アドレス下位、アドレス上位の順に格納されていて、通常は、MAIN-ROMのスロット、BFH、1BHが書かれている。
この機能を利用する。


MSXFONT.ZIP (7,819 bytes)

上記ZIPファイルには、6つの半角フォントファイル(*.FNT)、およびそれをインストールするBASICファイル(MSXFONT.BAS)が入っている。アーカイブを展開して、フロッピのルートにすべて置いておく。そのフロッピをMSXで使う。

フォントの種類は以下の通り。

FS-A1ST.FNT …… 日本のMSX2+以降版
CF-1200.FNT …… 日本のMSX2以前版
NMS8220.FNT …… インターナショナル版
DPC100.FNT …… 韓国版
EXPERTDP.FNT …… ブラジル版
HB75D.FNT …… ドイツ版

MSXFONT.BASの対応機種は、RAM16KB以上のFDD搭載機。
実行すると、以下のような流れになる。

D000H~D7FFHにフォントデータを置くので、まずそこが空いているか調べる。2度目以降の実行では、すでに使用済みとなるため「Are you OK ? (Y/N)」と出るが、Yを入力して実行して構わない。もし最初の実行でこのメッセージが出たら、何かですでに使われているので、やめた方がいい。

次にフロッピ内の*.FNTファイル一覧が表示される。この中から適当なものを選んでファイル名を入力する。

簡単なインジケータが表示され、10秒ほど(MSXturboR時)でインストール完了。画面が一掃され、全キャラクタが表示される。
これ以降、SCREEN命令では、この表示されたキャラクタセットが使われるようになる。

実験用に、1000行以降に、フォントを太らせるルーチンを置いてある。上記でインストール後、GOTO 1000で実行できる。数秒で処理は終わる(MSXturboR時)。終わっても、見た目上の変化はない。ここでSCREEN命令を実行すると、太った文字に変身する。
元には戻せないので、再び任意のフォントをインストールしなおす。

いったんインストールすれば、DOSでもBASICでも往来は自在。


フォントが変わって、海外版の雰囲気を味わえる。独自のフォントを使うこともできる。それだけのツール。ただ、システムに組み込まれてしまうところが、VRAMをいじるだけのものとは違う。

BASICで簡易版として作ったため、問題点もある。

アドレスはD000H~D7FFHに固定している。安全を見越し、かつ簡単にアクセスできるようにするためだが、それなりの無駄エリアが消費されている。D000H以降を使うものはもちろん、大きなプログラムは動かないこともある。

フォントを置くRAMのスロットアドレスを得るのに、FDCのワークエリアにあるRAMAD3(F344H)を使っている。スロットをサーチしてRAMを探すのは、マシン語でないとできない。また、意外と手間でもある。
データエリアを保護するためにHIMSAV(F349H)も書き換えている。CLEAR文で設定されるHIMEM(FC4AH)の最低確保ラインを記録する場所。これもFDCのワークエリアのひとつ。
したがって、FDD搭載は必須になる。

後から気付いたが、じつは文字一覧表示が一文字分左にずれている。
左上角がCHR$(1)で、その上の空行左端にCHR$(0)、右下角の一文字左がCHR$(255)のカーソルになる。見た目だけで実害はないので、そのままとしておく。

日本版MSXには、漢字モードがある。このモードは、VDPのグラフィックモードを使い、漢字ROMのフォントを使っている。そのため、この「フォントいじり」の効果は反映されない。
韓国版にもSCREEN9を使ったハングルモードがあり、同じように接続されたハングルROMのフォントが使われるはずなので、これにも効果は反映されないと思われる。
いずれも、ANKモード、SCREEN0ないしSCREEN1に戻れば、問題はない。


映像は、ケンコー製DVS2500HDでDELL製U2711画面を直接撮影。AviUtlで編集。
ロード、実行、各種フォントのインストール、太文字化効果などを実演。

 

モミジイチゴ(Rubus palmatusに続き、28日にはカジイチゴ(R. trifidus)も開花した。
いつもは先走りが必ずあるのだが、今年は寒さが厳しかったせいか、ひとつもなかった。


クサイチゴ(R. hirsutus)は土手などで咲き乱れている。
裏山の林道を眺めた感じでは、日当たりの良いところで5分咲き手前といったところか。

右の写真は、その際出会ったビロードツリアブ

大型のアブ、ハチはまだ出てきてないはずなのに、結構な羽音。そちらを見やると、「もふもふ」の茶色い物体が、モミジイチゴに蜜を吸いに来ていた。

楕円の「もふもふ」からは、細く長い頼りない足が伸びる。それよりは幾分か丈夫そうな、やはり長い口。萌えるスタイルとはアンバランスに、ちょっとワルそうな顔。常に半ホバリング状態で、一定以上近づくと別の花に移ってしまう。ピント合わせのとろいCaplioR2には難物。
ちなみに、人を刺したりはしないという。
そっくりさんに、トラツリアブというのもいる。こちらはワル顔ではない。



トヨラクサイチゴ
ヒメカジイチゴ
昨日はトヨラクサイチゴ(R. × toyorensis)が、今日はヒメカジイチゴ(R. × medius)が開花。
これらは片親をカジイチゴとする。前者はクサイチゴとの、後者はニガイチゴとの雑種。カジイチゴファミリーが続々と咲く。

トヨラクサイチゴは、クサイチゴの棘をほとんど失くし、大振りにした感じ。葉は、新しいシュートでは特に顕著に、複雑に裂け分かれる。
ヒメカジイチゴも、ニガイチゴの棘を失くし、大振りにした感じ。葉は弱く3裂する程度。
いずれも両親を受け継いでいるイメージ。


その片親であるニガイチゴ(R. microphyllus)も今日開花。



クマイチゴ

ボイセンベリー
クマイチゴ(R. crataegifolius)やボイセンベリー(R. ursinus × R.idaeus ※)などにも、順調に蕾が出てきている。



学名出典:

無印……YList
※……Wikipedia キイチゴ属
※※……文献無し

 

すっかりソシペンの端くれになっている今日この頃。あちらでは、サムチョンペンなる言葉もあるとか。

先月、日本では初となる、UHA味覚糖e-maのど飴のCMが発表された。キャンディーつながりなのか、Kissing youを彷彿とさせる白基調は悪くない。が、ストップモーション風の演出はどうだろう。彼女らは動いてナンボだと思う。

本国ではもちろん、多くの番組、CMに出ている。とりあえず適当なキーワードでググれば、結構な数が出てくる。
テレビ番組では、農村体験をする青春不敗、子どもを育てるHello Babyといったレギュラーの他、ハッピートゥゲザー言いたい放題少女時代あたりも、かなりキツめに弾けていて面白い。

CMでは、ドミノピザIntel、LG CYON chocolate phone、同cooky phone(原曲はMickey)、ディオールクムネチキンVita500……ググればまだまだある。「エンタメ少女時代」ページにも、まとまって置いてある。

そんな中に「バナナ牛乳」とな。

바나나맛 우유ばななま うゆとは「バナナ味 牛乳」のこと。銭湯のフルーツ牛乳のようなものにまでソシを使うのか……と調べてみると、それなりの伝統はあるらしい。

빙그레びんぐれWikipedia/翻訳)は'67に設立。'74には바나나맛 우유ばななま うゆを売り出した。いまでは国民的ブランドとなり、加工乳の過半のシェアを持つ。セブンイレブンなどコンビニにも、普通に置いてある、のだとか。
外見も伝統を守っており、日本でいえば、ヤクルトあたりの定番感なのかも。

出演は、태연てよん써니そに서현そひょん수영すよん유리ゆり
他にも、メイキング英訳付き個人バージョンなどいろいろある。


ここで歌っているメロディ、聞き覚えがある。確か、だみ声でビールの宣伝に使われていた。

アサヒ・スーパードライに使われていたのは、ジプシーキングスボラーレ。南米のどこかの、と勝手に想像していたが、実はイタリアの曲だった。
原曲は、'58のドメニコ・モデューノによるNel blu dipinto di blu(Volare)という。
ちなみにイタリア語で、volareは飛ぶ、cantareは歌う、だそう。

それにしてもこの曲、すごいカバーの数……

 

ようやく通常のコマーシャルも戻ってきたが、しばらくはテレビでもラジオでもACのものばかり流れていた。

巷では、「♪ ポポポポ~~ン」で通っているらしいコマーシャル。「あいさつの魔法。」という。歌は松本野々歩さん。

なぜか「♪ おはよっ」が耳に残って、「♪ おはよっ おはよっ おはよっ」になって、「♪ 僕は誰かな?」ときてしまった。


「僕は誰」では記憶喪失の歌のようだから「君は誰」だったかな……などと調べてみると、谷山浩子さんの「おはようクレヨン」とのこと。「僕は誰」で正解だった。
この曲、いったいどこで聴いて覚えたんだろう。

映像で歌っているのは素人さん。下手ですから、と言っているが、新田恵利といい勝負ではないか?


世の中には才能のある人はいる。

オーケストラ風の「壮大」バージョン。
これに歌声の重なっているバージョンもある。


 

鼻歌を歌っていると、いつのまにか別の曲になっている。そんな感じの。


少女時代(SNSD) - 좋은 일만 생각하기 (Day by Day)
少女時代(소녀시대そにょしで)のDAY BY DAY。

좋은 일만 생각하기ちょうん いるまん せんがかぎとか사랑은 선율을 타고さらぐん そにゅる たごとかの副題があるが、映像は前者。こちらが本来の歌
2008年秋の韓国ドラマ、ベートーベン・ウイルスで使われた曲でもあり、後者がそれらしい。そちらの歌詞は少し替えてあるという。
[MV] Vanilla Acoustic - Good Morning Lady (굿모닝레이디)
バニラ・アコースティック(Vanilla Acoustic)のグッドモーニングレディ(굿모닝레이디くっもにんれいでぃ)。

こちらは先日、気になって買った曲。2009年6月発売とあり、DAY BY DAYのほうが先のよう。

絶対似てる、Aメロが同じ、と思っていたが、並べて聞くと結構違う。しかし、イメージは被ってしまう。
ネット上にも同意見が、多少、ある程度、それなりに、僅かに散見される。


こちらは同じ曲。

snsd gee Acoustic version
GeeのAcoustic version。その1。

Youtubeを眺めていたら、その少女時代の「Gee」をカバーしていた。
つまり、GeeのVanilla Acousticによるバージョン。
SNSD Gee Acoustic HD
GeeのAcoustic version。その2。

こちらは本家による、Geeアコースティックバージョン。何かの番組のよう。
……というか、これはアコースティックなのか? バラード風、ロック風の2パターンで歌っている。

歌組(?)の5人だけで、スヨン(수영すよん)などは出ていない。左からサニー(써니そに)、ソヒョン(서현そひょん)、テヨン(태연てよん)、ジェシカ(제시카じぇしか)、ティファニー(티파니てぃぱに)。


소녀시대(Girls' Generation) _ 소원을말해봐(Genie) _ MusicVideo(뮤직비디오)
Wikipediaによれば、少女時代のGenie(소원을 말해봐(지니)そうぉぬ まれば(じに))には盗作疑惑が出ていたのだとか。
Dineyra - Raqsga tushgin
ウズベキスタン版。ディネイラによる。

この曲はもともと、ノルウェーのDsign Musicなどが製作したもの。版権を持つユニバーサルミュージックは、少女時代側のSMエンターテイメントに独占的な使用権を与えているという。

まるっきり同じものを盗作して出すとも思えないので、契約がまとまる以前に、何か手違いがあったのだろう。
曲の発表はこちらが先だったため、少女時代側に盗作疑惑が発生してしまったらしい。
Nathalie Makoma - I Just Wanna Dance (OFFICIAL VIDEO)
オランダ版。ナタリー・マコマによる。

こちらは正規のカバー曲、とのこと。「I Just Wanna Dance」は作曲時の原題。
怖いぐらいに実にパワフル。

3曲とも、テンポまで同じ。それでも、それぞれの色が出ていると感じるのは、映像のせいだろうか。
[HD] 少女時代 - Genie Japanese (Dance Ver.) MV
ついでに、本家による日本版。

モー娘。の韓国版か、ぐらいに斜に構えていたが、いつのまにか斜め前に向かっている自分がいた。
歌も上手いし、このヒールでよくも踊れるものだと思う。
ただ日本語版は、化粧が濃すぎて、当初は誰が誰だか判らなかった。

 

すぐ書くつもりが、ありえないNMIタスクが発生してしまった。3号炉では、また煙が立ち昇ったという。FDD工作自体も実は割り込みだったのだが……
ともかく、本編の完成までの顛末や、失敗例などを書き連ねてみる。


まずはドライブ選び。
右の写真、一番上が内蔵されていたもの。

古いPCを漁ってもよかったが、単体で購入した記憶があったのでそれを探す。Panasonic製JU-257A073Hと、TEAC製FD-235HGを発見。前者はメモ書きが見当たらないが、RY/DCなどのジャンパもある。おそらく「たんせい」あたりで、MSX対応を謳っていたのを購入したのだと思われる。後者は、地元のパソコン屋で前世紀末に購入とあった。こちらはジャンパレスのPC専用品。

とりあえず、ジャンパ設定で何とかなりそうなJU-257を載せてみようと思ったが、コネクタ位置が反対になっていた。TOP VIEWでお尻を見ると左側に主コネクタ。これではマイク入力にぶつかってしまうため使えない。

PC専用のTEAC品を使うことにし、この際なので、PC用FDDには手を加えず、そのまま使ってしまおうと考えた。

左の写真は、TEACのドライブのフロントベゼルを外したところ。
薄い上蓋を外すと、ベゼル4隅の爪がよく見える。イジェクトボタンもカバー状で、引っ掛けてあるだけなので簡単に外れてしまう。このボタンカバーは使用する。


MSXにFDDをつなぐ時に問題になるREADY信号。これはどんな信号か、Web情報やFDDのデータシート(TEAC/Y-E DATA)などを当たってみた。以下に関わりのありそうな信号を列挙する。

太字が信号名、入出力の別はMSX側から見たもの、続く文字列はこの記事で使う略記。
FDDインターフェースは全て負論理だが、ここでは特にオーバーラインは付けない。

READY/入力/RDY…………ディスクが読み書き可能な状態を表す。MOTOR ONの後500ms以内に出る。
DISK CHANGE/入力/DC…………電源投入後、およびディスクイジェクト状態で即アクティブになる。ディスクが入った状態でSTEPを受けると、その前縁でインアクティブになる。
MOTOR ON/出力/MTO…………FDDのモータを起動させる。この信号だけはDRIVE SELECTに依存しない。
STEP/出力/STEP…………ヘッドをシークさせる。
DRIVE SELECT/出力/DS…………ドライブにアクセス対象であることを知らせる。MOTOR ON以外の信号は、自らに向けられたこの信号がアクティブなときだけ有効・動作となる。
INDEX/入力/IDX…………ディスク1回転ごとにパルスを発生する。2DD通常動作時(300rpm)で、パルス幅1ms~8ms、200ms±1.5%間隔。レベルではなくパルスの前縁で処理せよとの記述がある。


ざっと見ると、RDYとDCは相反する信号。DCに多少手を加えれば作り出せそうな感じがする。ただ、STEPを受けないとインアクティブになってくれない。STEPはヘッド移動に絡むため、下手に生成しては問題が起こりそう。

Web情報を漁っていると、MZユーザのページでIDXから作っているという記述を発見。あらためてデータシートを眺めると、MTO後にIDXが出たところでRDYとすれば良さそう。IDXは単なる回転情報ではなく、安定した回転になってドライブがREADY状態にならないと出力されない、とある。つまり、通常は、MTOが出てIDXが出たらRDYを出し、MTOがインアクティブになったら切ればいい。

おとなしく使う分にはこれで良いが、途中でイジェクトしたときには、それも検出したい。DCはイジェクトに即反応するので、この前縁を使えば良さそう。ということで、ロジックICのHC74、HC14などを使って作ったのが左の回路。

残念ながら、これは使い物にならなかった。
起動直後やフロッピ挿入直後は、必ずDevice I/Oエラーになる。2度目からは、問題なく使える。強制的にディスクイジェクトすると、ちゃんとすぐ反応する。もう一度アクセスするとエラー。さらにアクセスを試みると正常。

1度目だけエラーになる原因は、DCもDSに依存するためだった。イジェクト状態でDCの波形を見ると、29μsアクティブ+29μsインアクティブ+2μsアクティブ+約2msインアクティブ、というパターンを繰り返していた。FDCがDS操作をすることによって、不必要な立ち上がりエッジができてしまい、RDYを安定させられないでいた。

DSが出ているときだけDCをチェックしてやれば良さそうだが、あまり回路を大きくしたくないので、このタイプは断念した。


ここで思い出したのが、かつてのMODチップ。ドライブからのプロテクト信号を真似る(?)ことで正規ソフトに見せかける。処理内容的にも速度的にも、PICにうってつけのカテゴリ。
ざっと構想を練ると、ほとんど部品が要らなくなりそうなので、コレでいくことにした。

PICは手持ちの12F675を使う。
FDDインターフェースは、負論理、オープンコレクタで、150Ω以上でプルアップ、と決められている。最低33mAのシンクが必要だが、実際には1kΩのプルアップが標準になっている。PICは、ソース、シンクとも24mAあるので、実働上問題ない。また、3ステート出力なので、オープンコレクタ風出力もできる。オープンコレクタのバスなので、プルアップしないと'H'レベルが取れない場合があるが、PICにはプルアップも内蔵されている。マイコンが動作するにはクロックが必要だが、12F675には4MHz±1%のクロック源が内蔵されており、外部には不要。
実に至れり尽くせりのハードウェア。

プログラムは、本編にあるように、MTOとIDXを監視し、RDYを作り出す、というもの。DCによるイジェクト検出も行いたかったが、DSの状態はFDC依存であり、FDCにも系統があるため、汎用性に自信がもてない。それ以外の方法で検出することにした。

データシートを眺めていると、IDXは正常な回転において200ms間隔(360rpm=1.2MB 2HD時を除く)でパルスを出す、とある。つまりこの間隔を外れたら、異常事態であり、イジェクトとみなせるのではないか、と考えた。0.2秒のタイムラグなら、人間には瞬時と感じる。幸いマイコンなので、比較的正確に時間は測れる。

結果的には、これも失敗だった。
アクセスしているがDOSが立ち上がらない。FILESしてみると、成功したり失敗したり、半分成功したり。

このプログラムでは、誤差を見込んで195msほど待ってから、10msほどの間IDXの検出をし、再び195ms……という手法を採った。動作が不安定なので、誤差揺らぎがもっと大きいのかもしれないと考え、IDX検出を20msほどまで伸ばしてみた。結果は散々で、成功する回数の方が少なくなってしまった。原因はわからずじまい。

少々倦んでしまったが、立ち返って考えてみれば、RDYはGND直結でも使える信号。明らかにおかしいときだけ自動的に切れてくれればいい。
基本的に全ての信号はDSに依存するため、FDCの為すがまま。DCにせよIDXにせよ、いつ消えても文句は言えない。あまり肩肘張らずに、ゆったり構えることにした。

結局成功したのは、MTOがアクティブの間、0.5ms毎に2000回(≒1s)IDXをチェックする方法。その間1度もIDXが出ていなかったら異常、イジェクト、もしくはFDCがアクセスしてない状態であろう、と判断することにした。


PICで作れば、柔軟性をもたせつつハードウェアは簡易にできる。ただ、PICライタなど開発環境は、どこにでもあるわけではない。そこで、汎用のロジックICを使った回路も試してみた。

考え方としては、PIC版を踏襲する。一定期間コトが起きなければ終了……これはリトリガラブル・ワンショットそのもの。HC123や4528、4538あたりが考えられるが、個人的になじみのある4538を使うことにした。ちなみに共立電子では、4538BよりHC4538の方が安く買える(@¥99-)

まず、各信号はプルアップする。自分が信号を取れればいいので、1kΩでも100kΩでもよい。本体側のプルアップ抵抗は外から見えないようで、プルアップしないとIDXが拾えなかった。
回路動作としては、4538の半分を使い、MTOが'L'の間のIDXの立下りを検出する。検出した時点でRDYをアクティブに。時定数は1秒(HC4538では0.7秒)とする。MTOの立ち上がり時は通常IDX='H'であり、このエッジも拾われてしまうので、残り半分でMTOの立ち上がりからリセット信号を生成。MTO立ち上がりでRDYは即インアクティブになるようにした。
接続はICソケットを使い、PICと挿し替えて動作確認した。

コンデンサはフィルムの0.33μFの3並列とした。かなり存在感がある。
4538Bはt=CR、HC4538はt=0.7CR。HC4538を使ったので、PIC版より多少時定数が短くなるが、特に問題はなかった。
リセット信号を作る側に、時定数用のコンデンサがないが、これはIC内部の数pFで十分なため省略してある。
HC4538であれば4mAのシンク能力がある。おそらくプルアップは1kΩ程度であり、オープンコレクタバスなので、真面目にトランジスタで組まず直結でも問題は起こらないと思われる。


できてしまえばそう難しい回路でもないのだが、Web上に見当たらないのは何故だろう。まだ見えぬ問題を抱えているのかもしれない。

PIC版には、空きピンがまだある。DCとDS、STEPを監視すれば、より確度が高められそうな気もする。いつかモチベーションが上がったら試してみよう。

 

最近は、フラッシュなどを使った動きのあるWebページが多い。伝統的なGIFアニメも使われる。いずれにせよ作成ツールが必要で、手間もかかる。
たくさんの画像が既にあり、それからパラパラアニメ動画(紙芝居)を作ろうというときには、スクリプトを使うと効率がいい。簡単なスライドショーのようなこともできる。気象庁のPNG画像を使った地震記事もこの手法を使った。おまけを含めて、忘れないうちにメモっておく。

まずは、320×240画像3枚をただ並べる。

なぜか微妙な間隔が開く。
<img src="A.GIF">
<img src="B.GIF">
<img src="C.GIF">


CSSを使って2枚を重ねてみる。

外枠でposition:relativeとすることで、表示の絶対位置はブラウザ任せにする。その中でposition:absoluteで絶対値指定をする。ここの絶対値は、直近のposition指定に対するものになるので、top:0px; left:0pxで1枚目にぴったり合う。

あとから表示したものが上になるが、下に敷きたければz-indexなどで順位をつける。

B.GIFの表示サイズを圧縮しC.GIFは削除した。
<div style="position:relative;">
<img src="A.GIF">
<img src="B.GIF" style="position:absolute; top:0px; left:0px; height:100px;">
                 
</div>


CSSを使って透過させてみる。

B.GIFに対し、opacityを使って50%透過させる。opacityプロパティはIEは非対応なので、相当するfilterプロパティを使う。
<div style="position:relative;">
<img src="A.GIF">
<img src="B.GIF" style="position:absolute; top:0px; left:0px; height:100px; opacity:0.5; filter:alpha(opacity=50);">
</div>


CSSでは、縦横自在に伸び縮みさせられる。はみ出す不要部もカットできる。

B.GIFの横幅を元の倍にし、位置も調整。overflow:hiddenで、はみ出し部分をカット。ただしこれは、widthやheightでサイズを指定する必要がある。
<div style="position:relative; overflow:hidden; width:320px; height:240px;">
<img src="A.GIF">
<img src="B.GIF" style="position:absolute; top:0px; left:-160px; height:100px; width:640px; opacity:0.5; filter:alpha(opacity=50);">
</div>


JAVA Scriptを使って画像を切り替えてみる。

A.GIFとC.GIFを1000ms毎に切り替える。差し換えるA.GIFには、スクリプトから参照するための目印としてid属性を付けておく。idは唯一無二の文字列でなければならない。bloggerでは、複数記事が同時に表示される場合があるので、当稿日時を含ませるなど重複しないよう配慮する。

document.getElement……は、そのidを持つところにアクセスするもの。setTimeout関数は、function内全ての処理が終わった後に、指定秒数経過後に指定文字列を実行する。指定文字列は必ずクオーテーションで囲む。ここでは自分自身を呼び出ているので、永遠に繰り返すことになる。
<div style="position:relative; overflow:hidden; width:320px; height:240px;">
<img src="A.GIF" id="20110320_id00">
<img src="B.GIF" style="position:absolute; top:0px; left:-160px; height:100px; width:640px; opacity:0.5; filter:alpha(opacity=50);">
</div>
<script language="javascript">
<!--
function changeGif(){
 if(fn=="A"){
  fn = "C";
 } else {
  fn = "A";
 }
 document.getElementById("20110320_id00").src=fn+".GIF";
 setTimeout("changeGif()",1000);
}

fn = "X";
changeGif();
// -->
</script>




JAVA Scriptを使って文字表示を切り替えてみる。

画像ではimg要素があるので、その属性に対してアクセスを行う。文字の場合は、適当な空要素(ここではspan)を作って、そこへ処理を行う。これにもidを振っておく。

処理の流れは画像切り替えに倣う。
空要素内に文字列を埋め込むには、innerHTMLを使う。文字列表示は通常document.write()を用いるが、これは新たにページを作ってしまうので上手くない。
<span style="font-weight:bold; font-size:200%; color:pink;" id="20110320_id01"></span><br />
<br />
<script language="javascript">
<!--
function changeMes(){
 if(mes=="굿모닝 레이디と"){
  mes = "좋은 일만 생각하기は似てる。";
 } else {
  mes = "굿모닝 레이디と";
 }
 document.getElementById("20110320_id01").innerHTML=mes;
 setTimeout("changeMes()",2000);
}

mes = "소녀시대いいね!";
changeMes();
// -->
</script>




ボタンからスクリプトを実行する例。

実行するだけならidは不要。押すたびにボタンの表示内容を書き換えるため、idを振っている。表示内容変更は、素直にvalue属性へアクセスする。
<input type="button" value="スクリプト実行ボタン" onClick="_exec_script()" id="20110320_exec_script" /><br />
<br />
<script language="javascript">
<!--
function _exec_script(){
 d = new Date();
 old_time = d.getHours()+":"+d.getMinutes()+":"+d.getSeconds();
 alert("現在時刻は "+old_time);
 document.getElementById("20110320_exec_script").value = "さっきの時刻は "+old_time;
}
// -->
</script>


 

気象庁の発表によると、ソメイヨシノが静岡で開花したらしい。全国でもっとも早い。

例年、カジイチゴ(Rubus trifidus)が先走ってポツリポツリと咲き始めるのだが、今年はそれがなかった。今日、モミジイチゴ(R. palmatus)のキレハ株が1番手で開花した。

もう少し花柄が伸びてくれれば、一般的な下を向いた形になるのだが、芽吹いてすぐ咲くせいで上を向いてしまっている。冬芽がほころんできたな、と思った日から半月経ってない。ちなみにこの花は、雌蕊は育っていなかった。


そのカジイチゴ。1週間前の様子。

冬芽のほころびは、どれよりも早かった。ひと月前から、ゆっくりと冷静に着実に蕾を膨らませている。
まったく節操がない、と書いたのが知れたのか?


親に似て、カジイチゴ系の目覚めは早い。

左のカジモミジ(R. trifidus × R.palmatus ※※)、真ん中のトヨラクサイチゴ(R. × toyorensis)、右のヒメカジイチゴ(R. × medius)、およびコジキカジ(R. sumatranus × R.trifidus ※※)も、蕾を出している。
いよいよ雑種たちも開花しそう。


足元では、フユイチゴ(R. buergeri)がシーズンを終えている。2月に入る頃まで実を付けていた。
地際からは新芽も出てきている。


その他のキイチゴたちも、冬芽をほころばせている。

ヒメバライチゴ(R. minusculus)は、蕾出しの一歩手前、バライチゴ(R. illecebrosus)は枯れ野原の地際から新芽。ラズベリー(R. idaeus ※)は、冬芽の先端に僅かに黄緑色を見る。ブラックベリー(R. fruticosus ※)は、気持ち芽が膨らんできたかな、という程度だが、一方でブラックベリーの血が入っているというボイセンベリー(R. ursinus × R.idaeus ※)は、しっかり芽吹いている。


学名出典:

無印……YList
※……Wikipedia キイチゴ属
※※……文献無し

 

とある動画を見ていて、そこでほんの一節口ずさまれたフレーズ。いつだったか、どこかで聴いた覚えがある。韓国の童謡だという。
トムピリビチューリップを足して割って味付けしたようなイメージ……を持っていたが、よくよく辿るとこれだった。英語の数え歌の方が似ているか。

目が怖いとか言われているようだけど、かわいい。

これは하두리(HADURI)に投稿された映像のようで、토끼 세마리トキセマリとある。「ウサギ3匹」という意味らしい。日本語的に正しくは兎三羽か。
子供向け人気番組の主題歌か何かか……ぐらいに思っていたが、童謡らしい。さらに調べを進めると、ここで歌っているのは替え歌っぽい。中ほどでは「セクシーえ」と聞こえる。


本来の歌は、곰 세 마리コン セ マリ。고の下がᄆなので、コムセマリの方が正しいかもしれない。意味は「熊 3 匹」。ユンジさんが歌っている。振りなども、これが基本なんだろう。daumキッズ歌詞があった。

곰 세 마리:作者不詳

【歌詞】
곰 세 마리가 한집에 있어
아빠 곰 엄마 곰 애기 곰

아빠 곰은 뚱뚱해
엄마 곰은 날씬해
애기 곰은 너무 귀여워
으쓱으쓱 잘한다
(繰り返し)

【内容】
くまの家族が住んでました
父さん、母さん、子ぐま

父さんくまは太っちょで
母さんくまはスマートで
子ぐまはかわいくて
エッヘンエッヘン上手でしょ

韓国語は全く解らないので、Google翻訳に掛けてみた。だいたいこんな意味らしいが、最後はものすごく適当。
「ウサギ3匹」では、「엄마 곰은 섹시해」と言ってるっぽい。아빠 곰も変えているが、こちらは聞き取れない。


ちなみにこれ、フルハウスという韓国ドラマでは頻繁に歌われていたらしく、韓流に浸かっている人たちにとっては、有名な曲のよう。
ドラマで使われるほどの童謡ということは、あちらでは知らない人はいないくらいメジャーなんだろう。

ところでこのドラマ、渡る世間みたいな感じなのか?

 

巨大地震・東北地方太平洋沖地震で、ちゃんと止まったはずの原発。建物も炉も、激しい揺れには耐え、緊急停止するところまでは問題なかった。ところが、停電やポンプの故障などで冷却ができず、相次いで炉心溶融、爆発、放射能漏れ……挙句は、定期点検中で燃料を抜いてあった4号炉まで燃え出す始末。発電所が停電で困るとは悪い冗談か、と。
ついにスリーマイルと並んでレベル5に、場合によってはその上も、というところまで来ているらしい。ちなみに、炉心から吹き上げたチェルノブイリはレベル7。

爆発しているのに「大量の白煙が」。昼間に起こったのに、夜中になるまで公式コメントは無し。東電が悪いのか政府が悪いのか、情報も小出しで内容がなく、当たり障りのない言い回しに終始。そんな状況で「心配ない」と言ったところで、安心すると本気で思っているのか。IAEAにまで「情報を出せ」と言われる始末。

爆発の報を聞いたその日、ネットを漁ってみたが、日本の報道のサイトでは、その瞬間の映像は見つけられなかった。ところがなぜか、英BBCには置いてある。「Japan earthquake: Footage of blast at nuclear plant」で1号炉のシーンが見られる。
3号炉は「Japan quake: Second blast at Fukushima nuclear plant」。ちなみにこれの撮影は日テレ。


炉心溶融、爆発、海水注入で廃炉が確定的なこの1号炉、建造時の映像などが「福島の原子力」という記録映画になっている。以下はその紹介記事
福島の原子力は原子力発電の仕組み、構造、工程、安全性などを分かりやすく説明。
また黎明は建設までの地質、気候などのあらゆる調査の模様をを描いた作品。
原子力発電の夜明けは茨城県東海村に日本で最初に建設された原発の工事記録。中々の秀作。

「福島の原子力」はこの2日間で、359人が1,028回再生し、34時間視聴。なお1,000回の再生回数は1ヶ月間のトップの件数である。しかも昨日、twitterがリンク元件数が、じつに150件とは驚きである

テレビで即時性の爆発の模様などは見られるが、内部構造などの映像は全くない。コメンテイターも約40年前に建設されたものであり、実際の建造物とか内容は知らないようない様である。

なお黎明が125回、原子力発電の夜明けは175回再生されている。。将にネット時代。今回は科学映像館の映像アーカイブとしての存在感を再認識。twitterでも情報が飛び交い、インターネットの情報力に脱帽する。

 

3月11日、M9.0というとてつもない地震が起きた。
気象庁の命名は、東北地方太平洋沖地震。一般には、東日本巨大地震などと呼ばれる。

三陸沖、宮城県沖では頻繁に大地震が起こっており、「宮城県沖は2010年以降に起きる確率が80%」などとある。予想規模は、大きくてもM8クラス。それがさらに30倍もの規模で起こってしまった。

9日昼前、三陸沖でM7.2の地震が起きた。震度5弱ではあるが、大きな地震。余震は軽微で収束するかに見えたが、翌々11日14:46、M7.9の大地震が発生。震度7。その日のうちにM8.8に修正され、さらに精査の結果M9.0に再修正された。9日の前震を含め、M7クラスの余震が何度も起きている。
三陸沖を震源とするが、岩手~福島の400km、続いて福島~茨城の100kmの計500km、幅200kmに及ぶプレートが、いっぺんに破壊されたという。「日本海溝が全部壊れた」と言う人もいる。この地震の規模は、世界的に見ても五指に入る。津波は10mを超え、家を車を畑を呑み込んでいく映像は、テレビで繰り返し放送されている。1万人をくだらない不明者も出ている。

直撃を受けた福島第一原発などでは、自動停止はしたものの冷却装置が故障し、炉心溶融がおき、建屋が爆発するというショッキングな事故も起きた。避難指示範囲はどんどん広がり、次から次へとトラブルが続いて、いまだに収束していない。

一方で、何10年と言われ続けている東海地震。東南海、南海地震との同時発生も危惧される。もし南海トラフが全部壊れたら……しっかり内包される浜松住民としては他人事ではない。浜岡原発も、30kmあまり先に鎮座する。
そんなこんなを書いているうちにまた地震。富士宮で震度6強という。こちらは直下のようで、東海地震とは関係ない模様。


気象庁の「地震情報」ページのPNGファイルを、javascriptで連続表示させてみた。気象庁のページで普通に閲覧できるのは、最近1週間のみ。ファイルはそれ以上の期間残されているようだが、いつまで残っているかはわからない。期間は、11日昼前の前震から、今夜の富士宮地震の余震までとしてみた。

日本近海のプレートの状況も重ね合わせてある。ボタンで表示/非表示の選択ができる。このプレート画像は、海上保安庁の「海上保安レポート2007」より拝借。

「<」「>」ボタンで前後の地震へ移動もできる。「fast」「slow」ボタンで、時間の進み具合を600倍~38倍程度の5段階で調整できる。

本震以降、一気に余震が増え、震源も広範囲に渡ることが判る。内陸や日本海側で起こったものも、基本的に北アメリカプレート上。長野や富士宮の地震は、北アメリカプレートの外れもしくは境界あたり。巨大地震の影響で誘発されたように見える。






 

久々にMSXを引っ張り出してみたら、拗ねられてしまった。モータがぐゎんぐゎんと唸っている。アクセスはできるが、頻繁にエラーを吐き不安定。修理が必要と判断した。

MSXのFDDは、基本的にベルトドライブが用いられている。手許のFS-A1ST(MSX turboR)もご多分に漏れず。モータの小さなプーリーからディスクのハブへ、ゴムベルトで伝達する。
いざ開けて見てみると、一見きれいな状態。融けたり割れたりはしてない。ただ、硬化していて、モータ付近で滑っている模様。ベルトは消耗品であり、数年に一度は取り替えが必要とされる。この際なので、ダイレクトドライブで市場に大量供給されている、PC用のFDDに換装することにした。

使用したのは、TEACのFD-235HGPDF)。メモ記述によれば、パソコン屋で前世紀末に2980円で購入したもの。
フロントベゼル付きだが、4箇所の爪が掛かっているだけなので簡単に外せる。上手い具合に寸法が合っていて、左の写真のように、MSX本体にすっぽり収まる。元々との違いは、イジェクトボタンの色と挿入口の蓋の有無くらい。ケース加工は一切不要。

ちなみにこのドライブには、ジャンパやスイッチの類は全く無い。あくまでPC専用と割り切った製品。

ピンアサイン調査なども兼ねてググってみると、MSXのFDD換装ネタはいくつも掛かる。
FDDの信号は基本的に同一なので、相応の信号同士をつなげばよい。ただ、PC用FDDには、MSXに必要なREADY信号がない。ディスクを入れっぱなし(≒常にREADY)にしておく条件で、READYをGNDにつなぐ簡易方法が一般的らしい。FDDインターフェースはローアクティブのオープンコレクタなので、これで常にアクティブになる。ただしこの場合、ディスクを抜くと、MSXがアクセスしっぱなしになり暴走してしまう。READYをいったん切るスイッチを設ければ、手動回避もできるが、少々スマートでない。

ここでは、ケーブル途中にREADY信号を生成する回路を付加し、そのままのMSXにそのままのFDDをつなぐことを目指した。MSXにもPC用FDDにも一切の加工はしない。

動作確認ができた回路は次の2パターン。
ひとつはPICマイコンを使うタイプ。かつては名を馳せていたMODチップのような使い方になる。もうひとつはロジックICの4538を使ったもの。PICの開発環境を持ってない場合にはこちらが使える。

もっともスマートと思われる物理的接続方法は、まず既存FDDからハンダ鏝を使ってコネクタごとケーブルを外す。これを本回路に接続。本回路からは34ピンケーブル、および4ピン電源ケーブルでPC用FDDにつなぐ。
残念ながら手許のMSXは中古品で改造済みだったため、この方法は採れなかった。MSX本体基板に簾ケーブルが直ハンダ付けされていたので、このケーブルにボックスヘッダを圧着して代用した。


【PIC版】

ハードウェアは、ひたすら配線するのみ。ケーブル類のほかは、PICとパスコンだけ。パスコンは回路図にはないが、電源とGND間に0.1μFほどの積層セラミックコンデンサを付けておく。

PICは12F675を使った。下位互換の12F629なら、HEXファイルはそのまま使えるはず。難しいことはしておらず、割り込みもペリフェラルも使っていないので、その他機種でも初期化の部分などを書き換えれば、容易に移植が可能。

PICのソースファイルなど:FDD-IF_PIC.zip (1442 bytes)


【4538版】

PIC版より部品点数は増える。書いてないが、こちらにもパスコンは必要。

タイミングはシビアではないものの、コンデンサはフィルムタイプを推奨する。電解コンデンサでは経年変化で容量が減ってしまう。大容量の積層セラミックも入手できるが、これは温度や電圧でかなり変化してしまう。状況により最悪-80%という記述もある。

回路図ではHC4538を使っているが、4538Bにも置き換え可能なはず。この場合、時定数が変わるが、問題はない。

Q1は小信号用の適当なNPNトランジスタ(例えば2SC1815)でよい。HC4538を使った場合、/Q出力を直接使うことで、R3とQ1は省略できるかもしれない。


FDDなどのピンアサインは以下のとおり。
名称が各方面で少し異なるが、最も適すると思われるものに統一、変更してある。

MSX turboR (24pin zigzag-inline)
15V5V 2
3NC5V 4
55VREADY 6
7GNDGND 8
9SIDE ONE SELECTGND10
11READ DATAWRITE PROTECT12
13TRACK 00WRITE GATE14
15GNDWRITE DATA16
17GNDSTEP18
19DIRECTIONMOTOR ON20
21NCDRIVE SELECT22
23INDEXDISK CHANGE24
turboRでは、本体基板上に番号が振ってある。
2ドライブ分のパターンが並んでいるが、MOTOR ON、DRIVE SELECT、DISK CHANGE以外は共通になっている。
turboR以外の機種は、Web上の情報を参照のこと。


PC用FDD (34pin boxheader)
1NCNC 2
3KEYNC 4
5NCNC 6
7GNDINDEX 8
9GNDNC*10
11GNDDRIVE SELECT12
13GNDNC**14
15GNDMOTOR ON16
17GNDDIRECTION18
19GNDSTEP20
21GNDWRITE DATA22
23GNDWRITE GATE24
25GNDTRACK 0026
27GNDWRITE PROTECT28
29GNDREAD DATA30
31GNDSIDE ONE SELECT32
33GNDDICK CHANGE34
FDDは、PCで使う状態での信号。
KEYはピンが抜かれている。NCは接続なし。
PC用FDDケーブル(先端が一部捻じってある)を使う場合、NC*にMOTOR ON、NC**にDRIVE SELECTとしておくと、捻じった先のFDDをアクセスできる。

ここで使ったFD-235HGは、コネクタが逆についていた。1ピンを示す▼マークではなく、必ずKEYの抜けているピンで確認する。


FDDの電源コネクタ。
図はFD-235HGのPDFから拝借し追記した。

ちなみに、相当に古いFDDでは、4ピンに12Vを必要とする。入手の際には念のため、5Vのみで動くかどうか確認した方がいいかもしれない。


その他、詳細などは別稿につづく

関連記事


この記事へのリンク by 関連記事、被リンク記事をリストアップする」記事

ブログ アーカイブ