パスワードを忘れた? アカウント作成
この議論は賞味期限が切れたので、アーカイブ化されています。 新たにコメントを付けることはできません。

初めて作った自作プログラムは?」記事へのコメント

  • 3e xx 01 xx xx 11 xx xx 21 xx xx cd xx xx c9 こげな感じ。
    • by hohehohe (11394) on 2002年10月07日 1時06分 (#178514)
      20年たった今でもそらで覚えています。
      21 00 F3 32 41 77
      機種はPC-8001です。
      さてどんなプログラムでしょう。
      --
      AVG anti-virus data base out of date
      親コメント
      • それじゃあたしもちょっと出題してみましょう――

        3E 16 CD 12 00

        機種は MZ-80K シリーズ。

        # 定石中の定石だったんで脳味噌の片隅に今もこびりついてました。

        親コメント
        • はい、画面クリア。

          SP-5030で表現すると、

          10 PRINT "C"
          (Cは反転文字)

          と機能的に等価ですね。

          個人的には当時使ってたアセンブラがLD A,Rに
          対応してなかったのでED 5Fを定石として覚えてました。
          親コメント
          • 正解です♪ こういう話題で反応して頂けるとみょ~に嬉しいですね。

            ご存知でない方のために軽く説明しときましょう(でも記憶が曖昧なんで用語は不正確かも)。

            まずコードは:
            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 で消しちゃってもそれは追跡してくれなかったので
            # 慣れるまではよく混乱しましたね。

            親コメント
            • by Oyajikusai (1187) on 2002年10月08日 11時31分 (#179446)
              >確か 5020 までは CURSOR 命令がなくて、カーソル移動は
              >この方法しかなかったんじゃなかったかな

              カーソルコントロールをビジュアルに表現する方法は、PET2001のBASICから影響じゃないかと思います。MZ-80K2Eあたりまでは、いかにも和製PETのような雰囲気だったんですが、MZ-80B以降でその面影がなくなっちゃったんですね。筐体からもBASICからも。

              ######
              超マニヤッククイズ・・・
              以下は詩の一部です。原典は何でしょう? 


              ギリシア神話にでてくるあの若者も、
              そうやって宇宙海に広がる光の夢を織っていたのだ。
              やがて、彼らは金羊毛を探して船出した。目指すは未来。


              ヒント1:彼らはアルゴ船で船出しました。
              ヒント2:伝説的なプログラミング教本です。
              親コメント
        • MZ-80KシリーズはメインメモリにI/Oがマッピングされていたので
          SP-1002モニタに直接バイナリ(キャラクタ)をゴリゴリ書いて

          GOTO$D000

          なんてことをやってよく遊んでいました。

          画面がスクロールするとプログラムが止まったり暴走してしまうので
          異様なスリルを感じておりました。
      • by gonta (11642) on 2002年10月07日 11時24分 (#178751) 日記
        こういう、VRAM直アクセスのプログラムとかを書きたい
        場合どうすればいいんでしょうか?NT系じゃハードに
        直接アクセスできないし、9x系からDOSをインストール
        して・・・かな?

        Linux/FreeBSDのカーネル解析始めてから、BIOSを
        たたいたりすることを少し理解し、OSが入っていない
        原始的な環境にあこがれています。昔のPC-8001とかで
        直接マシン語で扱えていた環境にも憧れてしまう 昨今・・・

        #コンパイラはVC++か?
        --
        -- gonta --
        "May Macintosh be with you"
        親コメント
        • Re:逆に今 (スコア:2, 参考になる)

          by ahiguti (10103) on 2002年10月07日 15時15分 (#178910)
          VRAM直接アクセスするのなら、Windows(含NT系)ならDirectDraw、Linux等ならばXFree86 DGA拡張を使えば簡単にできます。今のOSでもroot権限が有ればユーザ空間から物理メモリへの直接アクセスは可能です。Linuxだと/dev/memをmmapすれば物理メモリをいじれますし、IOポートも叩けます。デバイスドライバが必要になるのは、割り込みとDMA転送が必要な場合くらいです。当時のハードはまともな割り込みもDMA転送もありませんでした。MMUもメモリ保護もありませんので、しくじると暴走です。今のようにしょっちゅうクラッシュするようなプログラムが実用されるなどということはありませんでしたから、そういう意味では楽園だったかもしれません。
          親コメント
        • by Anonymous Coward
          OS上で動くプログラムは、OSのサービスを利用するのが流儀です。

          カーネルとかドライバにしかハート直叩きは許されないです。
          • Re:逆に今 (スコア:2, 参考になる)

            by SteppingWind (2654) on 2002年10月07日 18時41分 (#179027)

            さらに最近ではバスやDMAを仮想化して, カーネルが提供するAPIを通してアクセスするという方向になっているみたいです. これにより異なるアーキテクチャ間での移植性が向上したりします.

            と言っても私なんぞはlittle endianベタベタなコーディングをしていたりするんで, PPCやsolarisでは多分動かないドライバしか作っていないです.

            親コメント
      • LD HL,F300h
        LD (7741h),A
        だったかな…。

Stableって古いって意味だっけ? -- Debian初級

処理中...