コモドール64とIBMのフォーマットが混在するフロッピーディスク 55
ストーリー by hayakawa
お宝発見 部門より
お宝発見 部門より
あるAnonymous Coward 曰く、
本家「PC Historian Finds Puzzling Game Diskette Image」より。
昔のゲームを発掘し、アーカイブすることを趣味とする"Trixter"氏は、先日5ドルで古いDOSゲームなどを購入したそうだ。その中に含まれていた「Mental Blocks」というゲームのアーカイブに取り掛かかろうとしたところ、ゲームのマニュアルに「コモドール64でもIBMでも、ラベル面を上にしてディスクを挿入する」という文言を目にしたそうだ。当時のコモドール64/IBM用やApple/IBM用のディスクはそれぞれがどちらか片面を使用する両面ディスク("flippy"disk)であることが常だったため、マニュアルのTypoだと思いながらディスクのFAT12を確認したところ、"BAD"とマークされているセクションが所々に存在していた。DIRをかけると、使用可能領域は通常の360KBではなく256KBとなっており、トラックエディタはMFMデータとして認識されないトラックがあることを示していたとのこと。
この「Mental Blocks」というゲーム、どうもIBMとコモドール64のフォーマットが混在しているディスクで販売されていたようなのである。Trixter氏は、このディスクが生まれた背景を次のように推測している。
- IBM版ゲームの容量は160KB以上であり、ディスクの片面には収まる容量ではなかった。恐らく4/2色のCGA/Herc版と16色のEGA/Tandy版の両方を収めようとしたためと思われる。
- MFMデータとして認識されないデータ量から推測すると、コモドール64版ゲームの容量は80KB程と思われる。
- 発売当時、パッケージやメディアのコストなどの理由から、ゲームを1枚のディスクに収める必要があった。
- IBM版はCGAとEGA両方で発売したかったため、開発者の誰かがDOSではコモドール64トラックを読み込ませずに、かつコモドール64でもディスクを読み取りブートできるようなフォーマットを構築した。
どんな開発者が、どのようにこのフォーマットを構築したのだろうか。是非話を聞いてみたいところだ。また、/.J諸氏でこのようなディスクにお目にかかったことのある方はいるだろうか?
そんなに珍しくもなかったような (スコア:2, 参考になる)
わりとあったと記憶してます。
4機種ぐらいは自動で判別するとかもあったような。
すっかり忘れましたが。
Re:そんなに珍しくもなかったような (スコア:1, 参考になる)
かつてはよくあったことです (スコア:2, すばらしい洞察)
このタレコミを垂れ込んだ人も採用した人も若い人なんだろうなぁ、私は既に若くないんだなぁ、ということがよくわかりました。はぁ。年取ったんだな。
Re:かつてはよくあったことです (スコア:1)
> このタレコミを垂れ込んだ人も採用した人も若い人なんだろうなぁ
ご想像のとおり、私は20代の若者です(^^ゞ
一応、MSX、PC-9801VM,RXあたりは使ってたのですが、
正直この手の話題は斬新に感じました。
他のコメントも拝見させていただきましたが、
昔は結構メジャー(?)だったのですね、勉強になりました。
混沌の中にこそ真実がある・・・かもしれないけど探すのめんどい
Re:かつてはよくあったことです (スコア:1)
調べ始めた若い人が少なくとも数人はいると推測してます。
Re:かつてはよくあったことです (スコア:1)
そうなんですよねぇ・・・
最近ははじめて使ったPCにWindowsXPが入ってたなんて新人も多くて、
昔は8ビットCPUでメインメモリが最大64KBでなんて言っても
『まぁたまたご冗談を』とか
『嘘つけこのハゲ』かなんか言われてしまうだろう。
# 最近のCPUのオンダイキャッシュより小さいし。
## そんなこと言ったら上限1MBの8086でもOUTだろーが。
### 16MBの80286ですら危ういぞ。
Re:かつてはよくあったことです (スコア:1)
あのころは、ディスクフォーマットのプログラムが教科書に書いてあったりして、CP/Mの移植とかやろうと思うと、フォーマッタとかブートローダとか読み書きプログラムを自作するのは必須でしたね。
オレサマフォーマットで少しだけ容量を増やしたフロッピーを作ったりして喜んでたものです。
その中で、特殊なフォーマットを使ってプロテクト代わりにしたソフトなんてのも目にしました。(もちろんクラックされて自分のところに回ってきたわけですが)
実例 (スコア:1)
この例ですが。通常のデータ領域の外側にデータの1部が書き込んであって、ハードウエアを叩いてそこを読みに行かせるしくみのソフトがありました。
通常のDISKCOPYだとその特殊データまではコピーできないので、コピーは動作しません。そういうコピープロテクトでした。
ちなみに、MagicCopyというコピーソフトを使うとシーク可能なすべての領域をチェックしてコピーするため、コピーも動作したみたいです。秋葉原でデモをしているのを見ました。
# もう何年前のことか。総てが懐かしい...
Re: (スコア:0)
>>通常のデータ領域の外側にデータの1部が書き込んであって
オーバートラックですね。
プロテクト全盛の時代のフロッピーは、アンフォーマットが混じってたり、セクタが異様に短かったり長かったり、回転数変えて書き込みされてたり、インデックスホールの数が妙に多かったり、特定のセクタにレーザーで穴が開けられていたり、もうやりたい放題でしたね。
# アインシュタインが欲しくて悶えた中学2年の夏
Re:実例 (スコア:1)
JTSS
Re: (スコア:0)
空いている奴をバックアップするのに、分度器で角度を調べて穿孔したとか言ってたなぁ。
ソフト名とかは覚えていませんが。
自分は学生の時分は既にPC-98x1が主流で、Wizard V3とかのファイラー頼りでした。
渋谷のマックスロード(桜ヶ丘方面)にお世話になった記憶が。店は摘発され閉店したな。
関係ないけど、このストーリーを見てSACD Hybridを思い出しました。
#時効・・・になっているといいなーと思いつつACでスイマセン。
Re: (スコア:0)
Re:実例 (スコア:1)
少なくともプログラマにはなっていなかっただろうなあ。
Re: (スコア:0)
そんな初期的なコピープロテクトを使っているところなんてほとんどなかっただろうね。
> ちなみに、MagicCopyというコピーソフトを使うと
某コピーソフトは、プロテクトチェックルーチンにパッチ当てていたよ。
Re: (スコア:0)
でも、かつてっていっても
64ビットのゲームマシンはあったってことですよね。
# ;-)
ここでMFMなんて言葉が出てくるとわ… (スコア:2, 興味深い)
私も若いころは、I/Oポートを直接いじって、モータが回りだしたり、アクセスランプが点灯したり、MB8877を駆って他機種のFDを読んだもんです。
(2DDのドライブで2Dは読めるけど、書き込むと相手の2Dドライブでは読めなかった…)
uPD765Aはコマンドやデータを順番に書き込んでいかないとならないので、ちょっと面倒でしたね。おまけに、リザルトステータスとかの読み出しバイト数を間違えると、以降の動作がおかしくなるし。
そして今… FPGAでオリジナルなFDCを設計して、IBMフォーマットの1.44MのFDを読み込んでる人を知ってます(ドライブはPC/ATで使う一般的な3.5インチ・ドライブ)
「ミッシングクロックの判定が難しくてなぁ~」とか言ってました…
いわゆるおっさんホイホイスレッド (スコア:2, おもしろおかしい)
一番最近MFMという文字列を見たのは近鉄の自動券売機のデバッグ画面?でした。3年ほど前。
磁気カードにもある [tacy.co.jp]んだなあと。
#ST-506とかSASIとかはすでに、もうすぐSCSIもロストテクノロジーに入るんだろうかな。
Re: (スコア:0)
久しぶりに聞いたなぁ、そのチップ。
どちらかというとその手のチップの知識とFDのフォーマットの知識を土台に
フロッピーとか(その後)MOとかの復旧には随分役立ったものでした。
#最近は自前で復旧することしなくて、バックアップ取ってなきゃ終了にしてるから。
Re:ここでMFMなんて言葉が出てくるとわ… (スコア:1)
MB8877やμPD765Aとは論理が逆なので、
X1やPC88で書いたFDをMZで読むときは0/1を逆にしなきゃいけないという…
Re: (スコア:0)
98はシリンダ・トラック・セクタを指定してINT 1Bhを叩いてやればIBMフォーマットでも読み書きできたのでそのあたりの苦労はなかったのですが
FATにあたる部分の仕様解析とEBCDICという謎の文字コードの対応表づくりに苦労した記憶があります。
(仕様手に入れる苦労より解析したほうがてっとりばやかった)
C64とIBMのハイブリッドのような特殊フォーマットや独自フォーマットは、こと日本においてはゲームやプロテクトよりワープロのフロッピーに多かったかもしれません。
Re: (スコア:0)
今じゃネットでいくらでも調べられる時代。変わったものです。
昔は、自分の世界ならJIS(or ShiftJIS)だけで事足りた。
いやUNIXな人はEUCか。
あれ?それって有名な何かじゃなかったっけか… (スコア:1)
たしかブートコードが複数のプロセッサのどれであっても、最初の何バイトかで適切なアドレスにジャンプするように記述されていたとかいう記憶が…
fjの教祖様
それとは違う気がする (スコア:1)
変調方式が違うなら、「同じブートセクタから別のセクタにジャンプさせて…」というのは不可能では。
ひとつのメディアに複数の変調方式って、どうやって書き込んだんだろう。
FDCを経由せずにヘッドに直接信号を送るとか?
うじゃうじゃ
Re:それとは違う気がする (スコア:1)
fjの教祖様
Re: (スコア:0)
業務用のディスクライターならいくらでも。
PCでもFDCリセットなんかで。
何かがトラック0だけFMだったような記憶があるんだけど、なんだったっけ。
N-BASICだったっけなあ。
Re: (スコア:0)
8インチの倍密度フロッピーでしょう。
http://ja.wikipedia.org/wiki/IBM%E5%BD%A2%E5%BC%8F%E3%83%95%E3%83%AD%E... [wikipedia.org]
>IBM形式では、0シリンダの表側をインデックス領域として使う。
>インデックス部はFM方式で書き込まれ、データ部はMFM方式で書き込まれる。
懐かしすぎて・・・ (スコア:0)
IPL(Re:懐かしすぎて・・・ (スコア:3, 参考になる)
確か、どちらかのNOPが条件判定になってるので(Z80のNOP=6809のBNEでしたっけ?)、IPL読み込み時の分岐条件フラグがクリヤされてるのを逆手に取って、ジャンプ先アドレスとして記述されてる一バイトをもう片方がスキップすれば済むという、仕掛けが分かれば「なーんだ」的な物でしたが…
確か、ザインソフトのトリトーン [retropc.net]の5インチ版がFM-7とPC8801SR両対応だったような
…後は一部のコピーツールで対応機種以外からブートすると、違うCPUのマシンであっても「間違っています」みたいなメッセージ吐くのがあったような…EXPERTだったかCOPYBOYだったか忘れましたが、そういう余りにHACKERな真似と言うのが競われていた時代だったんですわ。
Re: (スコア:0)
誰か各アセンブラに翻訳してくだちい。
Re: (スコア:0)
Z-80の場合
LD BC,0E9C0H
DEC SP
NOP
JR 020H -> ここで分岐?
8086の場合
ADD AX,AX
JMP 040H -> ここで分岐?
6809の場合
??? ググって見つけたopcode表では01は未定義っぽい?
68派だった方お願いします。
$01命令はNOPではなかったです(Re:IPL(Re:懐かしすぎて・・・ (スコア:1)
で、結論だけ書くと、6809 [6809.net]と上位互換品であるHD6309 [6809.net]で割り当てが違って、
・HD6309ではoim (ダイレクトモード) と言う独自命令
・6809ではneg (ダイレクトモード) = $00命令と同等
のようです。
# ダイレクトモード=(DPFM-7エミュレータのソースコードを持ってきてソースコード(vm/cpu_x86.asm , disasm.c)を読み取るハメになったので、あくまでも非公式と言うことで…発掘すれば未定義命令を調べたI/O誌の記事があると思うのですが(;´Д`)
Re: (スコア:0)
98と68Kは最近の話なのでわかりません。
AMIGA/ST Formatの付録 (スコア:0)
AMIGAとATARI STの両方で読み込めるようになっていた。
ちと意味がわからないんだけれども (スコア:0)
っていうけど、ディスクの片面容量は
>使用可能領域は通常の360KBではなく256KBとなっており、
だから収まるんじゃないの?
Re:ちと意味がわからないんだけれども (スコア:1, 参考になる)
本家には、ちゃんと180KB以上と書いてある。タレコミ人のミス
>使用可能領域は通常の360KBではなく256KBとなっており、
IBM版ゲームの容量が180KB以上あると片面の360KBに入らないので
A面はIBMのCGA/Herc版(MFM(倍密度) FAT)
B面はIBMのEGA/Tandy版(MFM(倍密度) FAT)余ったところをBADセクターにして容量を256KBにする
B面コモドールはMFMフォーマットが読めないのでMFMのBADで空けた160KBをFM(単密度)フォーマットして80KBにコモドール64版ゲームを入れる
Re: (スコア:0)
Re:ちと意味がわからないんだけれども (スコア:1, 参考になる)
5インチ2Dのディスクのはずなので、通常のディスク全体(両面)の容量が360KBで、片面の容量は180KBです。 元記事 [wordpress.com] (日本語訳 [blogspot.com]) には160KB以上と書かれていますが、180KB上の間違いじゃないかなと思います。ただ、#1430387 [srad.jp]に書かれている本家での指摘というのがどこにあるのかはよくわかりませんでした。
ディスクの構成は#1430387に書かれたようなものではなく、A面がIBM (256 - (360 / 2) = 76KB分) とC64 (360 - 256 = 84KB分) のハイブリッドで、B面はIBM用のデータ (180KB分) のみ記録されています。IBM用のドライブは両面対応なので、IBMでもC64でも常にA面を表にして使用します。
Re:ちと意味がわからないんだけれども (スコア:1, 興味深い)
#1430387の発言者です。
書いてありませんでした。見間違いでした。ごめん。
Re: (スコア:0)
>
>>使用可能領域は通常の360KBではなく256KBとなっており、
5インチ2Dの両面の容量でしょ。1セクタ512バイトのフォーマットで360KBですよ。
Re: (スコア:0)
ファルコムなんかが1024バイト×5で400kB、「3-5フォーマット」と呼んでた。
「リトルバンパイア」だったか、1024バイト×5+256バイト×2で440kB突っ込んでるのもあった。
え? (スコア:0)
いまだって某業務ソフトで、特殊フォーマットをかけて、業務ソフト上からは見えるけどとWindowsからは見えない、みたいなことやっているソフトあるね。Windowsから見たら空なのでフォーマットかけちゃったなんてヘマがある。
Re: (スコア:0)
わざわざフロッピーの物理フォーマットを変える理由として、
1.一枚で容量を稼ぐ(reservedな場所までデータを読み書き)
2.一枚で複数の機種に対応させる
3.コピープロテクトをかける(製品フロッピーだと物理フォーマットがされていないはずの
領域を読みにいって、エラーしなければコピーだと判定)
2.から、複数の機種で解釈がことなるバイナリを埋め込んで機種判別とか、
3.から、さまざまなコピープロテクト技術(NECを代表するFDCであるμPD765シリーズとか、富士通を代表するMB8877シリーズとか)に派生したりとか。
#もちろん、そういうミスを昔もやったことはありますよ。
#ラベル貼ってないフロッピーが読めなくて実はなにかはいってたとか。
Re: (スコア:0)
IBMふぉーまっとって (スコア:0)
0シリンダだけFM。
最近某測定器のシステムディスク(2DD)をバックアップとろうとして
現用PCで四苦八苦してました。結局linux嬢のfdrawread(だっけか)で吸い出して解決。
これが0シリンダFMで、、、
#かくいう私もアインシュタイン世代 蝮の執念とか
#RATS&STARとか
いやまぢでWizard&98を引っ張り出そうかと思った。
某測定器ってシステムメニューにシステムディスクのバックアップが無いのよ。
Re: (スコア:0)
なつかしのSHARP MZシリーズ (スコア:0)
の5インチ FDDは表面と裏面の信号の論理を逆に解釈して
ソフトが作られていたため、表裏逆に記録されていた。
こいつを利用して他機種でも利用できるFDができた。
APPLE II (スコア:0)
やろうと思えばなんでもありの楽しいシステムでした。
変調、セクタサイズ、セクタ数、セクタ間隔、セクタインターリーブ、トラックピッチ、etc.
(シーク用のステッピングモータを半位相ずつずらしてスパイラルのようなフォーマットまで可能)
Re:APPLE II (スコア:1)
読めなくなるという超絶技巧or自虐ネタなプロテクトもありましたよね?
Re:APPLE II (スコア:1)
忘れもしない純正品をわざわざ取り寄せた Ultima II。
もちろん本体もFDDもモッキンボードも全部純正品。
ぜんぶコンパチ品の後輩の家では起動するのに、ウチので起動しない。
仕方ないのでコピーを作ったら、なぜかそいつでは大丈夫。
暫く頭かかえちゃいましたよ。
別のコメントに通常 Side 0 Track 0 Sector 0 が最初に読み込まれるってな感じの記事が
ありましたけど、
TRS-80って、たしか真ん中辺りにコントロールブロックとかディレクトリがあったはず。
平均シーク時間を下げようとしたんだろうなぁ。Boot block もそこにあったかは忘れました。
Re: (スコア:0)