ロジアナの波形を改めて確認していたら、修正前では取りこぼしていたタイミングと同じ感じの場所を見つけたので比較してみた。
修正前
修正後
思った通りの波形になっていることを確認できた。
Arduinoのほうも少し手直ししている。
RC6502 Apple1 SBCからPCへの送信速度を少し早めるためにdelayをdelayMicrosecondsに変更して前後を入れ替えている。
前後の入れ替えはあまり意味はないかもだが。
また、「CR」を「CR」「LF」に変換する場所に不足があり、「CR」「LF」「CR」になっていたので、一文追加してある。
pia_communicator.ino 修正前
void serial_transmit() {
digitalWrite(VIDEO_RDA, HIGH);
if (digitalRead(VIDEO_DA) == HIGH) {
char c = bridge.readPort(IO_VIDEO) & 127;
debug_value("PIA TX", c, 10);
digitalWrite(VIDEO_RDA, LOW);
delay(12);
send_ascii(c);
}
}
void send_ascii(char c) {
if (DEBUG >= 5) Serial.print("[");
switch (c) {
case 0x0d: Serial.println(); /* Replace CR with LF */
default:
Serial.print(c);
}
if (DEBUG >= 5) Serial.print("]");
}
pia_communicator.ino 修正後
void serial_transmit() {
digitalWrite(VIDEO_RDA, HIGH);
if (digitalRead(VIDEO_DA) == HIGH) {
char c = bridge.readPort(IO_VIDEO) & 127;
debug_value("PIA TX", c, 10);
digitalWrite(VIDEO_RDA, LOW);
send_ascii(c);
delayMicroseconds(1500);
}
}
void send_ascii(char c) {
if (DEBUG >= 5) Serial.print("[");
switch (c) {
case 0x0d:
Serial.println(); /* Replace CR with LF */
break;
default:
Serial.print(c);
}
Serial.flush();
if (DEBUG >= 5) Serial.print("]");
}