Хорошая идея, и не сложно должно быть. Единственное, как протестировать не могу придумать… Ну, разберёмся…
«Библиотеки» я не зря в кавычки взял, основная библиотека это ROM 0 для оригинального 128k. Это оттуда все «Write Byte to RS232 Port» и «Read Byte from RS232 Port» копируют, зачем-то тщательно вычищая комментарии. Пользуясь случаем, передаю привет Matthew Wilson, Andrew Owen, Geoff Wearmouth, Rui Tunes и Paul Farrow. С их трудами можно ознакомиться тут (как минимум с 2009-го). Короче, DTS и CTS там были всегда.
Upd 2024-03-30: что-то получилось. Ключик -b выбирает IOB (I/O Port 2), ключик -r включает RTS. Как протестировать — я не соображу. В смысле, подцепиться к ногам 8910 я сейчас не могу, но любая из этих настроек не даёт «общаться» с WiFi модулем, по словам моего знакомого. Мой USB UART с picocom на компьютере демонстрирует удивительное пренебрежение к flow control и работает [почти] всегдаЕдинственное, что могу подтвердить — выбор I/O Port 2, по крайней мере, перестаёт посылать данные в I/O Port 1
В принципе, что RTS/CTS выведены, это ничему не мешает, и ESP-12 и, тем более. USB UART’ы, можно же настроить так, что они будут это всё игнорировать. Кстати, новейший sercp тоже, вроде, отказался от flow control. Интересно, в ROM 0 disasm’е почему-то используется «DTR» вместо «RTS», какой-то исторический казус, как я понимаю, в оригинальной документации для ZX Interface 1, ЕМНИП, было так.
Заодно сделал индикацию всех выбранных ключей/режимов. На выходных постараюсь код выложить, чтобы все желающие могли сами дописывать.
загадки века
Есть непринципиальные моменты, которые у меня точно ни на что не влияют и почему их тащат [предположительно] откуда-то в zx-net-tools и потом в MRF, я понять не могу (предположить, безусловно, могу):
1. Зачем включать Channel B Tone и Channel A Tone в микшере 8912.
2. Зачем при инициализации порта выставляют CTS в low. (Может быть, чтобы передатчик «слил» в никуда свой буфер, пока мы раскачиваемся? Не уверен, как там «унутре» прошивка ESP-12 работает. Мне кажется, это вряд ли на что-то принципиально влияет, учитывая что в zx-net-tools вообще начинают с перезагрузки ESP12, принять пару десятков байт мусора тут ни на что не влияет). В моём коде этого нет по понятным причинам, моя цель — принять как можно точнее всё то, что нам передают.
3. Зачем при приёме второго байта вырезали третью проверку стоп-бита. Опять же, у меня всё работает с третьей проверкой и чему она может помешать непонятно.
Но, это незначительные технические детали, «на скорость не влияют»
[свернуть]
Кстати, @Uzix, а в модуле WiFi RTS (который на самом деле CTS для ESP-12) специально не разведён на разъём и притянут к земле? IIRC, ESP-12 на GPIO15 (pin 16) выводит, вроде. Я себе плату делать, наверное, не буду, на макетке соберу и вдруг есть причина, по которой RTS не должен быть подключен? Или можно соединить, как положено?
uart-v1.0a.zip исходники





Единственное, что могу подтвердить — выбор I/O Port 2, по крайней мере, перестаёт посылать данные в I/O Port 1
Ответить с цитированием