ベーシックレベルⅢでは使えているデータレコーダが、ホームベーシックで使えない件を調べる。Z80にDEBUGログを吐かせて、2つの違いを追ってみました。
_CPU_DEBUG_LOG
_DEBUG_LOG
どうやらホームベーシックは、データレコーダを使用する際に、SIG_DATAREC_REMOTEを投げないようですが、eSC-3000は受け取る前提で実装していました。やっつけのパッチを適用した。
SIG_DATAREC_OUTを受け取ったら、処理する前にSIG_DATAREC_REMOTEを投げてしまう。
if(id == SIG_DATAREC_OUT) { bool signal = ((data & mask) != 0); // if(rec && remote && signal != out) { if(rec && signal != out) { change = true; if (!remote) { remote = true; write_signals(&outputs_remote, remote ? 0xffffffff : 0); update_event(); } } out = signal; }
void DATAREC::load_image()の最後でSIG_DATAREC_REMOTEを投げてしまう。
play = true; update_event(); if (!remote) { remote = true; write_signals(&outputs_remote, remote ? 0xffffffff : 0); update_event(); }