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

Apple ][のDOSのソースコードが公開される」記事へのコメント

  • by Anonymous Coward on 2013年11月15日 13時04分 (#2495952)

    汎用ロジック+プログラムでフロッピーディスクに読み書きをすると言う点じゃないかと。
    アセンブラバリバリで、この命令が〇クロックで動くから、ああしてこうしてという職人芸のソースコードなのでしょう。

    実際、Apple ][のゲーム等でプロテクトがかけられたとき、解析の糸口として使いまわされるリードルーチンを探してから解析したと聞いてます(………つまり、難読化をしてなかったわけだな)。

    • アセンブラバリバリで、この命令が〇クロックで動くから、ああしてこうしてという職人芸のソースコードなのでしょう。

      職人技でも何でも無い普通のコードでしょう. と感じるのが当時の一般的なプログラマのレベルだと思います. クロック数をちゃんと数えないと, 処理が間にあうかどうか分からない, ハードリアルタイム処理に近いことが要求されていましたし, 信号線や間に入るロジック回路の延停を考慮してNOP命令を入れるなんてことも.

      ましてや難読化なんて実行性能や使用メモリ容量に悪影響を及ぼすことは全くのナンセンス. 自己改変コードも, シングルスレッド前提でリエントラントは考慮しなくていいし, 組み込み用途みたいに明確にROMのコード領域とRAMのデータ領域が分かれていなければ使うのが当然というところがありました.

      まあ, それもコードの規模が小さいから出来たことでしょうけど.

      親コメント
      • by Anonymous Coward

        いや、当時すでに8ビット機でもディスク周りはある程度インテリジェント化され、apple2のような
        バカなデバイス設計は、時代遅れと言うか珍しいと言うか頑固と言うか独特と言うか、そんな感じだった。
        (まあ、あのころはどのマシンも独特だけど)

        だから、CPU側でプログラミングでディスクへの書き込みタイミングをいじれるので、
        すなわちこのDOSに頼らずにかなりのことができるので、
        プロテクトに使いやすく、そんな技が結構あったと聞いている(僕はappleの解析はやったことないので伝聞)

        「アセンブラバリバリ」が当時としては当然で、職人芸でもなんでもないのには同意。

    • by Anonymous Coward

      解析した香港のクラッカーもまたすごかったということでしょう。

      クラックした上に、自分の名前入れた独自の
      スプラッシュスクリーンとか仕込んでたから
      Artの領域です。

    • by Anonymous Coward

      >汎用ロジック+プログラムでフロッピーディスクに読み書きをすると言う点じゃないかと
      FDC-I/Fを考えたのはwozだったけどDOSを書いたのはwozじゃないみたいだから
      DOSには物理層入っていないんじゃない?(ぢゃないとブートできない)

      その辺は考えてみりゃテープと変わらんな。速度が全然違うけど。
      PC-8001で9600ボーとかテープでやっていた記憶がある。
      今のプロセッサなら振幅多値にしてイコライザとか入れられるんだろうけど
      あんときゃ1/0の矩形波だけだった。

    • by Anonymous Coward

      この命令が〇クロックで動くから、ああしてこうしてという職人芸のソースコードなのでしょう。

      “The source code of the low-level read/write routines by Steve Wozniak and Randy Wigginton.” とコメントされてる Apple_DOS_RW_30May1978.txt [amazonaws.com] 見ても、とてもそんな感じの内容ではないですが。

      • by Anonymous Coward on 2013年11月16日 0時37分 (#2496371)

        APPLE2のディスクコントローラはバッファがないので、厳密なクロック数で1バイトずつI/Oアドレスに書き続ける実行するコードを書かないと、正しくディスクにデータを書き込むことができません。例えば8サイクルで書き込むとデータとして扱われ、10サイクルで書き込むと同期バイトとして扱われる…みたいな感じです。
        また、if文の様な条件分岐では1サイクル追加されるので、アセンブルするアドレスにも気を遣う必要があります。

        親コメント
        • by Anonymous Coward

          それってそういうハードでは当たり前でしょう? どこが職人芸??

          • by Anonymous Coward

            そのころすでに「それってそういうハード」が当たり前ではなくなっていたから、
            当時としても驚かれていたのですよ。

            • by Anonymous Coward

              今でもAVRのSoftUSBが、そんな感じのコードですね。いい意味でとってもアマチュア的。

            • by Anonymous Coward

              ハードウェアの構造として時代遅れなのであって、プログラムとして特に高度なことをしてるわけじゃないんだけど?

        • by Anonymous Coward

          MacのFDDはBDのように(角速度一定ではなく)線速度一定だった記憶があるけど、AppleIIはどうだったんでしょう。

          • by Anonymous Coward

            角速度一定です。フロッピーに位置決めの穴が開いていますが、全てソフトで管理しているので穴は見ていません。

犯人は巨人ファンでA型で眼鏡をかけている -- あるハッカー

処理中...