ここら辺は 80x86コードが読めないとダメなので…
合言葉は CD 1Bなのですが、これは 80x86で言えと int 1bhに当たります。
この int 1bhは PC-98の場合ディスクアクセスファンクションなので これを中心に調べて行きます。
1000:0072 B94C01 MOV CX,014C
1000:0075 BAF601 MOV DX,01F6
1000:0078 BB1000 MOV BX,0010
1000:007B CD1B INT 1B
とりあえず該当部分。
CX, DXレジスタは 読み込む場所指定で この場合 4C:01:F6:01を読み込みます。
というか これは NP2D_M.D88のチェックセクタっすね(笑)
これがどこから呼ばれてるかと言うと…
1000:0018 E84300 CALL 005E
1000:001B 7316 JNB 0033
1000:001D BA0400 MOV DX,0004
:
1000:0033 BEB900 MOV SI,00B9
1000:0036 EB03 JMP 003B
1000:0038 BE9C00 MOV SI,009C
1000:003B AC LODSB
CALL 005E で 次の JNB 0033で分岐してます。
005Eをコールしてセクタを読んで、失敗したら 0033番地へ、成功ならそのまま続行で 001D番地へ飛びます。
で、失敗したらプロテクトに引っ掛かりますので 失敗しても強制的に続行させるように書換えて…
その先を追っていくと結局 成功の場合は 0038番地、失敗の時は 0033番地が通るコードになってます。
面倒なので 最初の分岐で 強制的に成功ルーチンへ飛ばしてしまいましょう。
1000:001B 7316 JNB 0033
↓ ↓ ↓
1000:001B EB1B JMP 0038
これでプロテクト解除です。
NP2D.W3Mはこのように書換えています。
これはかなり簡単な例で、実際にはどこでリードしてるか解りづらくしたり、暗号化させたり、書換えたらプロテクトに引っ掛かるようにしたりと、色々トラップがあるでしょう。
8086コードが読めて PC-98のハードがちょっと解れば…あとは時間と根気だけの世界です。