アカウント名:
パスワード:
汎用ロジック+プログラムでフロッピーディスクに読み書きをすると言う点じゃないかと。アセンブラバリバリで、この命令が〇クロックで動くから、ああしてこうしてという職人芸のソースコードなのでしょう。
実際、Apple ][のゲーム等でプロテクトがかけられたとき、解析の糸口として使いまわされるリードルーチンを探してから解析したと聞いてます(………つまり、難読化をしてなかったわけだな)。
アセンブラバリバリで、この命令が〇クロックで動くから、ああしてこうしてという職人芸のソースコードなのでしょう。
職人技でも何でも無い普通のコードでしょう. と感じるのが当時の一般的なプログラマのレベルだと思います. クロック数をちゃんと数えないと, 処理が間にあうかどうか分からない, ハードリアルタイム処理に近いことが要求されていましたし, 信号線や間に入るロジック回路の延停を考慮してNOP命令を入れるなんてことも.
ましてや難読化なんて実行性能や使用メモリ容量に悪影響を及ぼすことは全くのナンセンス. 自己改変コードも, シングルスレッド前提でリエントラントは考慮しなくていいし, 組み込み用途みたいに明確にROMのコード領域とRAMのデータ領域が分かれていなければ使うのが当然というところがありました.
まあ, それもコードの規模が小さいから出来たことでしょうけど.
いや、当時すでに8ビット機でもディスク周りはある程度インテリジェント化され、apple2のようなバカなデバイス設計は、時代遅れと言うか珍しいと言うか頑固と言うか独特と言うか、そんな感じだった。(まあ、あのころはどのマシンも独特だけど)
だから、CPU側でプログラミングでディスクへの書き込みタイミングをいじれるので、すなわちこのDOSに頼らずにかなりのことができるので、プロテクトに使いやすく、そんな技が結構あったと聞いている(僕はappleの解析はやったことないので伝聞)
「アセンブラバリバリ」が当時としては当然で、職人芸でもなんでもないのには同意。
解析した香港のクラッカーもまたすごかったということでしょう。
クラックした上に、自分の名前入れた独自のスプラッシュスクリーンとか仕込んでたからArtの領域です。
>汎用ロジック+プログラムでフロッピーディスクに読み書きをすると言う点じゃないかとFDC-I/Fを考えたのはwozだったけどDOSを書いたのはwozじゃないみたいだからDOSには物理層入っていないんじゃない?(ぢゃないとブートできない)
その辺は考えてみりゃテープと変わらんな。速度が全然違うけど。PC-8001で9600ボーとかテープでやっていた記憶がある。今のプロセッサなら振幅多値にしてイコライザとか入れられるんだろうけどあんときゃ1/0の矩形波だけだった。
この命令が〇クロックで動くから、ああしてこうしてという職人芸のソースコードなのでしょう。
“The source code of the low-level read/write routines by Steve Wozniak and Randy Wigginton.” とコメントされてる Apple_DOS_RW_30May1978.txt [amazonaws.com] 見ても、とてもそんな感じの内容ではないですが。
APPLE2のディスクコントローラはバッファがないので、厳密なクロック数で1バイトずつI/Oアドレスに書き続ける実行するコードを書かないと、正しくディスクにデータを書き込むことができません。例えば8サイクルで書き込むとデータとして扱われ、10サイクルで書き込むと同期バイトとして扱われる…みたいな感じです。また、if文の様な条件分岐では1サイクル追加されるので、アセンブルするアドレスにも気を遣う必要があります。
それってそういうハードでは当たり前でしょう? どこが職人芸??
そのころすでに「それってそういうハード」が当たり前ではなくなっていたから、当時としても驚かれていたのですよ。
今でもAVRのSoftUSBが、そんな感じのコードですね。いい意味でとってもアマチュア的。
ハードウェアの構造として時代遅れなのであって、プログラムとして特に高度なことをしてるわけじゃないんだけど?
MacのFDDはBDのように(角速度一定ではなく)線速度一定だった記憶があるけど、AppleIIはどうだったんでしょう。
角速度一定です。フロッピーに位置決めの穴が開いていますが、全てソフトで管理しているので穴は見ていません。
より多くのコメントがこの議論にあるかもしれませんが、JavaScriptが有効ではない環境を使用している場合、クラシックなコメントシステム(D1)に設定を変更する必要があります。
ソースを見ろ -- ある4桁UID
あれのDOSの大変なところは (スコア:0)
汎用ロジック+プログラムでフロッピーディスクに読み書きをすると言う点じゃないかと。
アセンブラバリバリで、この命令が〇クロックで動くから、ああしてこうしてという職人芸のソースコードなのでしょう。
実際、Apple ][のゲーム等でプロテクトがかけられたとき、解析の糸口として使いまわされるリードルーチンを探してから解析したと聞いてます(………つまり、難読化をしてなかったわけだな)。
Re:あれのDOSの大変なところは (スコア:1)
職人技でも何でも無い普通のコードでしょう. と感じるのが当時の一般的なプログラマのレベルだと思います. クロック数をちゃんと数えないと, 処理が間にあうかどうか分からない, ハードリアルタイム処理に近いことが要求されていましたし, 信号線や間に入るロジック回路の延停を考慮してNOP命令を入れるなんてことも.
ましてや難読化なんて実行性能や使用メモリ容量に悪影響を及ぼすことは全くのナンセンス. 自己改変コードも, シングルスレッド前提でリエントラントは考慮しなくていいし, 組み込み用途みたいに明確にROMのコード領域とRAMのデータ領域が分かれていなければ使うのが当然というところがありました.
まあ, それもコードの規模が小さいから出来たことでしょうけど.
Re: (スコア:0)
いや、当時すでに8ビット機でもディスク周りはある程度インテリジェント化され、apple2のような
バカなデバイス設計は、時代遅れと言うか珍しいと言うか頑固と言うか独特と言うか、そんな感じだった。
(まあ、あのころはどのマシンも独特だけど)
だから、CPU側でプログラミングでディスクへの書き込みタイミングをいじれるので、
すなわちこのDOSに頼らずにかなりのことができるので、
プロテクトに使いやすく、そんな技が結構あったと聞いている(僕はappleの解析はやったことないので伝聞)
「アセンブラバリバリ」が当時としては当然で、職人芸でもなんでもないのには同意。
Re: (スコア:0)
解析した香港のクラッカーもまたすごかったということでしょう。
クラックした上に、自分の名前入れた独自の
スプラッシュスクリーンとか仕込んでたから
Artの領域です。
Re: (スコア:0)
>汎用ロジック+プログラムでフロッピーディスクに読み書きをすると言う点じゃないかと
FDC-I/Fを考えたのはwozだったけどDOSを書いたのはwozじゃないみたいだから
DOSには物理層入っていないんじゃない?(ぢゃないとブートできない)
その辺は考えてみりゃテープと変わらんな。速度が全然違うけど。
PC-8001で9600ボーとかテープでやっていた記憶がある。
今のプロセッサなら振幅多値にしてイコライザとか入れられるんだろうけど
あんときゃ1/0の矩形波だけだった。
Re: (スコア:0)
この命令が〇クロックで動くから、ああしてこうしてという職人芸のソースコードなのでしょう。
“The source code of the low-level read/write routines by Steve Wozniak and Randy Wigginton.” とコメントされてる Apple_DOS_RW_30May1978.txt [amazonaws.com] 見ても、とてもそんな感じの内容ではないですが。
Re:あれのDOSの大変なところは (スコア:1)
APPLE2のディスクコントローラはバッファがないので、厳密なクロック数で1バイトずつI/Oアドレスに書き続ける実行するコードを書かないと、正しくディスクにデータを書き込むことができません。例えば8サイクルで書き込むとデータとして扱われ、10サイクルで書き込むと同期バイトとして扱われる…みたいな感じです。
また、if文の様な条件分岐では1サイクル追加されるので、アセンブルするアドレスにも気を遣う必要があります。
Re: (スコア:0)
それってそういうハードでは当たり前でしょう? どこが職人芸??
Re: (スコア:0)
そのころすでに「それってそういうハード」が当たり前ではなくなっていたから、
当時としても驚かれていたのですよ。
Re: (スコア:0)
今でもAVRのSoftUSBが、そんな感じのコードですね。いい意味でとってもアマチュア的。
Re: (スコア:0)
ハードウェアの構造として時代遅れなのであって、プログラムとして特に高度なことをしてるわけじゃないんだけど?
Re: (スコア:0)
MacのFDDはBDのように(角速度一定ではなく)線速度一定だった記憶があるけど、AppleIIはどうだったんでしょう。
Re: (スコア:0)
角速度一定です。フロッピーに位置決めの穴が開いていますが、全てソフトで管理しているので穴は見ていません。