RS-232Cケーブル
2024.11.29
いまどきRS-232Cなんてほとんど使わないけど、
ケーブルに「ストレート」なのか「クロス」なのか必ず書いておこうという話。

市販のケーブル自体に「ストレート」「クロス」と直接書いて(刻印または印字)あることは経験上少ない。



自作ならなおさらで、だからこそ、はっきり記入しておきたい。

いざ使いたいという時、たとえば、いますぐにクロスケーブルが欲しい。なかったっけ。あったよな確か。ゴソゴソ・・・

しかしこれはストレートなのか、書いてないからわからない。

試してみて、やっぱりだめか、いや、通信速度の違いで、・・・やっぱりストレートじゃないか。テスターで・・・やはりそうだったか。
こんなふうにもたもたして時間を浪費してしまう。

ここで、一時しのぎで(特に自作の場合)結線を変えてしまって間に合わせるが、そのままどこかへ放り込んでしまい、次に使う時にも困ったりする。

昔の職場にも、謎のケーブルがたくさんあった。いわゆるみかん箱にたくさん突っ込んであり、みんなDサブ25Pなのだが、ストレートなのかクロスなのか、はたまた、全結線なのか最低限の結線しかしてないのか。開けてみないと謎だったのである。

最低限というのはTXDとRXDとGNDしかつないでない物。
それだけしか結線してないのか、RTS、CTS等を折り返してあるのか、そのあたりもみんなバラバラ。それで混乱が生じる。

少なくとも「ストレート」、「クロス」は書いておきたい。

どちらなのかを調べるにはテスターで2,3ピン(9Pも25Pも)の導通を調べる。同じピン同士がつながっていたらストレート。交互になっていたらクロス。

昔、容易に判定できる機器を自作した。原理は書くまでもない。マイコンなんかいらない。
テスターだと特にメス側が当たりにくいから(オスのコネクタを一時的に装着したりする)、こういった機器があると便利。
押入れで寝る
2024.11.29
とにかく寒い。
建物自体がおそらく安上がりな作りで、断熱材も入っているのか疑わしい。

夜中に寒くてトイレに行きたくなる。これは年齢のせいかもしれないが、寒いのは確か。

ベッドには断熱シート等の工夫はしてある。
もっと寒くなれば、小さな電気カーペットを仕込んで足元を温めるようにしている。

さらに、周囲を囲うものがあればどうかと考えていたが・・・

南側の部屋に移ったら、ちょっとはマシになるだろうか、とも考えたりして・・・

そうやって考えていたら、思いついた。
ドラえもん!
そう、ドラえもんは押入れの中で寝ているのであった。

押入れだったら、周囲が囲まれているし、風も入らない。保温にはピッタリではないか。
もちろん酸欠防止のために、戸は片方開けておくべき。

子どもの頃、押入れで寝てみたことがある。
朝になるとなぜか普通にいつもの部屋の布団で寝ていた。

寝ている間に鬼が来てさらっていったのだろう(笑)
ごみすて
2024.11.28
うちは、パーツの購入などで通販の利用が多い為、ダンボールの溜まる速さがおそらく一般家庭の10倍ぐらいじゃないかと。(当社比)

ざっと、45リットルのゴミ袋が1週間でいっぱいになるぐらい。

それなのに、市は月1回しか回収してくれません。一般家庭のペースに合わせているので仕方ありません。

そして、その月1回の大事な日を忘れてしまうのです。

ああっ! そういえば今日は資源物の日だった。意外と朝早くに回収が来てしまうので、気付いた時には手遅れ。

翌月へ持ち越しに。

さらにその翌月も忘れて、また積み上がり・・・とうとうドアが開かなくなりました。

そのドアが開かなくても別ルートがあるので支障はありませんが、遠回りにはなってしまう。

うちは、どっちかというと事業者になるので産廃業者に回収を頼むべきなのでしょう。しかし微妙なところです。
実際、許可を受けている業者に回収を頼んだりしていますが、それなりに費用はかかります。
ハンドアセンブル
2024.11.27
昔、いまのような便利な開発環境は無かったから、紙にプログラムを書いて手作業でマシン語に変換していた。これをハンドアセンブルと呼んでいた。

Z80の命令表を下敷き(カードケース)に挟んで、いつも身近に置いて活用していた。8080と互換性のある命令だけなら1ページにおさまるし、十分足りる。

できればシフト命令の動きなど書いてあると便利。ややこしくて、今まで全然覚えきれなかった。
えーと、キャリーフラグを巻き込んでローテートシフトするのは何だっけ・・・ってな具合。
RLCAの動きは・・・とか。

マシン語は、自然に覚えてしまった。

特によく使う命令だけだが・・・いまでもJPとくればC3、LDIRはED B0で、LD A,nは3Eとか、OUT(E8H),AはD3 E8、HALTは76、LD B,nは06、とか。

プログラムのある番地から別の番地へ移動したい場合、
LD HL,元の番地
LD DE,先の番地
LD BC,バイト数
LDIR
RET

これを 21 00 80 11 00 90 01 00 01 ED B0 C9 と直接打ち込んだりしていた。
マシン語を始めた時
2024.11.27
確か高校生になってからマシン語の勉強を始めた。(Z80)

図書館でMSX用のマシン語の本を借りてきて、まずは画面にAという文字を表示させてみた。
次にループを作って、これを画面いっぱいに表示させてみてBASICと比べてみたらどうか。当たり前だけどBASICより速い。一瞬で出た。こんなに速いんだ、と。
こんなところからのスタートでした。

何を作ろうという目標はなかったけど、たとえば結果が画面に出るのはわかりやすかった。

マシン語に詳しい同級生から色々指導を受けた事もある。
たとえば、グラフィック画面を白黒反転するプログラムを作れ、とか。
画面の指定した範囲を、行き先の座標を指定して移動させろ、とか。
持ち帰って考えてみて、わからなかったら翌日聞いてみて、ああ、こんなふうにすればよかったのか、と。

そもそも最初はループを作るにはどうしたらいいか、というレベル。

DJNZはわかった。

でもグラフィックだったらアドレス空間だから8bitのDJNZでは足りない。16ビットのカウントはどうしたらよいか。

LD HL,0C000H
LD BC,02000H
LOOP:
LD A,(HL)
CPL
LD (HL),A
INC HL
DEC BC
LD A,B
OR C
JR NZ,LOOP
たとえば、こんなふうに書く。

OR C とか JR NZ, なんかは最初わからなかった。

フラグというものを利用する。
たとえば計算結果がゼロになったらZフラグが立つ。
ゼロか、ゼロでないか、という判断ができる。
そのほかに、キャリーというフラグもある。

上記では、BもCもゼロになるまでループするわけだ。つまり、2000H回繰り返す。

それなら、BとCを直接ORすればいいのにという疑問が出てくるけど、そういう命令はZ80には存在しない。Aと他のレジスタとの演算になるので、Bを一旦Aに入れてからCとORして、その結果のフラグを見る。

結果ゼロでなければ(NZ:ノンゼロ) LOOPへジャンプする。

プログラムの最後もきちんとしないといけない。たとえばBASICから呼び出しているならRETにするだろう。
何らかの止める命令を入れておかないと、これ以後も命令を実行し続けてしまい暴走する。
止めて良いならHALTとか、STOP: JR STOP のようにする。

JR命令は相対アドレスのジャンプ命令で、ハンドアセンブルの時はFF FE FD FC FB FA...と逆方向にジャンプ先まで数えていた。
絶対アドレスでも良いけど、1バイト増える。もったいない。(という考え方があった)

- CafeLog -