アカウント名:
パスワード:
それじゃあたしもちょっと出題してみましょう――
3E 16 CD 12 00
機種は MZ-80K シリーズ。
# 定石中の定石だったんで脳味噌の片隅に今もこびりついてました。
正解です♪ こういう話題で反応して頂けるとみょ~に嬉しいですね。
ご存知でない方のために軽く説明しときましょう(でも記憶が曖昧なんで用語は不正確かも)。
まずコードは: LD A,16h CALL 0012h になります。
MZ-80K シリーズのアドレス $0000 から 4kB は ROM が載ってまして、 その先頭の方には C3 n m (JP mn)命令が沢山並んでました(こういうの、 ジャンプテーブルって呼ぶんでしたっけ?)。 飛び先は ROM 内の各種サブルーチンで、 ROM のバージョンが変わってルーチンの先頭アドレスがずれても、 このジャンプ命令の位置は変更されないので互換性を保ってたわけですね。
# 全くの余談: この部分をそのまま音階発生ルーチンに順番に渡すと、 # 結構面白い音楽になりました。
アドレス $0012 は、 A レジスタの内容を文字として現在のカーソル位置に表示するルーチンへの入り口でした。
何故これが画面クリアになるかというと、 まぁ要するに 16h がそういうコントロールキャラクタだったからなんですね。 この画面クリアを行う CLR(16h)の他に、 カーソルを 0,0 に戻す HOME(15h だったと思いますが……)と、 現在位置から上下左右に移動する(キャラクタコード完全に忘れました)のがありあました。
で、 このコントロールキャラクタを表記する文字があって、 C、H、上下左右の矢印を、 それぞれ白黒反転したものでした。 SP-50x0 BASIC では PRINT 文のダブルクォーテーションの中でこれ等のキャラクタを使うことが出来ました。 確か 5020 までは CURSOR 命令がなくて、 カーソル移動はこの方法しかなかったんじゃなかったかな?
# 正確には一行編集中にダブルクォーテーションの入力回数が奇数か偶数かで、 # コントロールコードが入力されるか、それともそれが実際に効力を持つかが決まって、 # 編集中の行もろとも画面を消しちゃったりとかしたんですが。 # ダブルクォーテーションを DELETE で消しちゃってもそれは追跡してくれなかったので # 慣れるまではよく混乱しましたね。
カーソルコントロールをビジュアルに表現する方法は、 PET2001のBASICから影響じゃないかと思います。
PET2001 についてはあたしは雑誌で見た事がある程度でした。 なるほど [reset.jp]、 あの 80x50 セミグラフィックも PET の影響でしたか。
超マニヤッククイズ・・・ 以下は詩の一部です。原典は何でしょう?
えと、 あたしが答えちゃっていーのかな? (←書き込みできない職場で答えたくてうずうずしてたくせに)
これ [sakura.ne.jp] ――えぇ、 散々お世話になりましたとも、 ぼろぼろになっちゃうまで。
さらに最近ではバスやDMAを仮想化して, カーネルが提供するAPIを通してアクセスするという方向になっているみたいです. これにより異なるアーキテクチャ間での移植性が向上したりします.
と言っても私なんぞはlittle endianベタベタなコーディングをしていたりするんで, PPCやsolarisでは多分動かないドライバしか作っていないです.
えーと、 確か PC-8001 って Z-80 互換の石使ってましたよね?
だとすると LD A,41h は 3E 41 では?
より多くのコメントがこの議論にあるかもしれませんが、JavaScriptが有効ではない環境を使用している場合、クラシックなコメントシステム(D1)に設定を変更する必要があります。
目玉の数さえ十分あれば、どんなバグも深刻ではない -- Eric Raymond
はじめてのマシン語 (スコア:1)
Re:はじめてのマシン語 (スコア:1)
21 00 F3 32 41 77
機種はPC-8001です。
さてどんなプログラムでしょう。
AVG anti-virus data base out of date
Re:はじめてのマシン語 (スコア:1)
それじゃあたしもちょっと出題してみましょう――
3E 16 CD 12 00
機種は MZ-80K シリーズ。
# 定石中の定石だったんで脳味噌の片隅に今もこびりついてました。
Re:はじめてのマシン語 (スコア:1)
SP-5030で表現すると、
10 PRINT "C"
(Cは反転文字)
と機能的に等価ですね。
個人的には当時使ってたアセンブラがLD A,Rに
対応してなかったのでED 5Fを定石として覚えてました。
Re:はじめてのマシン語 (スコア:1)
正解です♪ こういう話題で反応して頂けるとみょ~に嬉しいですね。
ご存知でない方のために軽く説明しときましょう(でも記憶が曖昧なんで用語は不正確かも)。
まずコードは:
LD A,16h
CALL 0012h
になります。
MZ-80K シリーズのアドレス $0000 から 4kB は ROM が載ってまして、 その先頭の方には C3 n m (JP mn)命令が沢山並んでました(こういうの、 ジャンプテーブルって呼ぶんでしたっけ?)。 飛び先は ROM 内の各種サブルーチンで、 ROM のバージョンが変わってルーチンの先頭アドレスがずれても、 このジャンプ命令の位置は変更されないので互換性を保ってたわけですね。
# 全くの余談: この部分をそのまま音階発生ルーチンに順番に渡すと、 # 結構面白い音楽になりました。
アドレス $0012 は、 A レジスタの内容を文字として現在のカーソル位置に表示するルーチンへの入り口でした。
何故これが画面クリアになるかというと、 まぁ要するに 16h がそういうコントロールキャラクタだったからなんですね。 この画面クリアを行う CLR(16h)の他に、 カーソルを 0,0 に戻す HOME(15h だったと思いますが……)と、 現在位置から上下左右に移動する(キャラクタコード完全に忘れました)のがありあました。
で、 このコントロールキャラクタを表記する文字があって、 C、H、上下左右の矢印を、 それぞれ白黒反転したものでした。 SP-50x0 BASIC では PRINT 文のダブルクォーテーションの中でこれ等のキャラクタを使うことが出来ました。 確か 5020 までは CURSOR 命令がなくて、 カーソル移動はこの方法しかなかったんじゃなかったかな?
# 正確には一行編集中にダブルクォーテーションの入力回数が奇数か偶数かで、 # コントロールコードが入力されるか、それともそれが実際に効力を持つかが決まって、 # 編集中の行もろとも画面を消しちゃったりとかしたんですが。 # ダブルクォーテーションを DELETE で消しちゃってもそれは追跡してくれなかったので # 慣れるまではよく混乱しましたね。
Re:はじめてのマシン語 (スコア:1)
>この方法しかなかったんじゃなかったかな
カーソルコントロールをビジュアルに表現する方法は、PET2001のBASICから影響じゃないかと思います。MZ-80K2Eあたりまでは、いかにも和製PETのような雰囲気だったんですが、MZ-80B以降でその面影がなくなっちゃったんですね。筐体からもBASICからも。
######
超マニヤッククイズ・・・
以下は詩の一部です。原典は何でしょう?
ギリシア神話にでてくるあの若者も、
そうやって宇宙海に広がる光の夢を織っていたのだ。
やがて、彼らは金羊毛を探して船出した。目指すは未来。
ヒント1:彼らはアルゴ船で船出しました。
ヒント2:伝説的なプログラミング教本です。
Re:はじめてのマシン語 (スコア:1)
PET2001 についてはあたしは雑誌で見た事がある程度でした。 なるほど [reset.jp]、 あの 80x50 セミグラフィックも PET の影響でしたか。
えと、 あたしが答えちゃっていーのかな? (←書き込みできない職場で答えたくてうずうずしてたくせに)
これ [sakura.ne.jp] ――えぇ、 散々お世話になりましたとも、 ぼろぼろになっちゃうまで。
Re:はじめてのマシン語 (スコア:0)
Re:はじめてのマシン語 (スコア:1)
あまりにも名著なので「オレンジ本」でもOKなのです。
Re:はじめてのマシン語 (スコア:0)
SP-1002モニタに直接バイナリ(キャラクタ)をゴリゴリ書いて
GOTO$D000
なんてことをやってよく遊んでいました。
画面がスクロールするとプログラムが止まったり暴走してしまうので
異様なスリルを感じておりました。
逆に今 (スコア:1)
場合どうすればいいんでしょうか?NT系じゃハードに
直接アクセスできないし、9x系からDOSをインストール
して・・・かな?
Linux/FreeBSDのカーネル解析始めてから、BIOSを
たたいたりすることを少し理解し、OSが入っていない
原始的な環境にあこがれています。昔のPC-8001とかで
直接マシン語で扱えていた環境にも憧れてしまう 昨今・・・
#コンパイラはVC++か?
-- gonta --
"May Macintosh be with you"
Re:逆に今 (スコア:2, 参考になる)
Re:逆に今 (スコア:0)
カーネルとかドライバにしかハート直叩きは許されないです。
Re:逆に今 (スコア:2, 参考になる)
さらに最近ではバスやDMAを仮想化して, カーネルが提供するAPIを通してアクセスするという方向になっているみたいです. これにより異なるアーキテクチャ間での移植性が向上したりします.
と言っても私なんぞはlittle endianベタベタなコーディングをしていたりするんで, PPCやsolarisでは多分動かないドライバしか作っていないです.
Re:はじめてのマシン語 (スコア:0)
LD (7741h),A
だったかな…。
Re:はじめてのマシン語 (スコア:1)
LD HL,F300h
LD A 41h
LD (HL) A
(アセンブラの表記忘れた。HLレジスタが指すアドレスにAの値を
代入ってこれで良かったっけ)
F300hから始まるVRAM(画面の左上隅)にアスキーコード41hの'A'と
表示するプログラムです。
AVG anti-virus data base out of date
Re:はじめてのマシン語 (スコア:2, すばらしい洞察)
えーと、 確か PC-8001 って Z-80 互換の石使ってましたよね?
だとすると LD A,41h は 3E 41 では?
Re:はじめてのマシン語 (スコア:1)
その通りです。
AVG anti-virus data base out of date