PDA

Просмотр полной версии : Снова о подключении ZX-PC



izzx
05.08.2021, 19:10
Со стародавних времён хочу подключить свой Scorpion к PC. А знаний не хватает. Поможите советами, пожалуйста.

Тут нашёл несколько тем, как подключить через порты LPT и джойстика к порту LPT на PC. Надо бы осовременить, перейти на USB.
Надеюсь, скоро добрые люди докрутят WiFi, но и простое подключение кабелем тоже вещь интересная.

Причём, я хочу чтобы был аппаратный контроль передачи и скорость могла быть любой. Хоть по байту в секунду в фоновом режиме. Никакой фиксированной скорости. По моим прикидкам, нужно минимум по два управляющих сигнала в каждую сторону. Всего хотя бы 6 проводов.

Вот есть у меня такая хорошая железка "Адаптер FT232RL FTDI USB в TTL". Если её напрямую подключить к порту принтера и джойстика на ZX и написать какой-то софт, то взлетит? Как управлять этим устройством из Win пока не представляю. Могу только что-нибудь простенькое написать на C#.

Например, в стриме недавно Robus (Rob F) сказал, что у него есть на звуковой плате выход UART, через него можно гонять файлы со скоростью до 900 Кбит. Достаточно подать пару команд IN из бейсика.

В общем, надо что-то состроить на UART, я так думаю.


Upd. Мой вариант решения для ZX+AY+BDI/DivMMC+ESP-12E тут, в папке AY232:
https://drive.google.com/drive/folders/19-O-MY2XkgRUmUUZ98xZ83juCuaBe32I?usp=sharing

https://pic.maxiol.com/thumbs2/1637659301.1597373949..png (https://pic.maxiol.com/?v=1637659301.1597373949..png&dp=2)https://pic.maxiol.com/thumbs2/1637342073.3165277814..png (https://pic.maxiol.com/?v=1637342073.3165277814..png&dp=2)

reddie
05.08.2021, 19:22
А цель сей затеи какова, не совсем врубаюсь)) Сделать сетку из PC и Спектрума, чтобы обмениваться файлами?
Фоновый режим - это лишь со стороны PC. На Спектруме обменом будет заниматься процессор, соответственно, никакого фонового и никаких 900 кбит.

izzx
05.08.2021, 19:55
А цель сей затеи какова, не совсем врубаюсь)) Сделать сетку из PC и Спектрума, чтобы обмениваться файлами?
Фоновый режим - это лишь со стороны PC. На Спектруме обменом будет заниматься процессор, соответственно, никакого фонового и никаких 900 кбит.
Да, для получения образов TRD из расшареной папки, в первую очередь. Ну и вообще на что фантазии хватит. Хоть интернет. Главное наладить связь. А потом, например, играть музычку и подгружать картинку не спеша, фоном.

haywire
05.08.2021, 19:57
Максимальная скорость будет 19200.

siemensC35
05.08.2021, 20:06
Вот есть у меня такая хорошая железка "Адаптер FT232RL FTDI USB в TTL". Если её напрямую подключить к порту принтера и джойстика на ZX и написать какой-то софт, то взлетит? Как управлять этим устройством из Win пока не представляю. Могу только что-нибудь простенькое написать на C#.
СОМ и терминал ....

izzx
05.08.2021, 20:30
Максимальная скорость будет 19200.
А если больше сигналов на приём и передачу? По 4 бита за раз, например.


СОМ и терминал ....
Воткнуть карту типа ZXMC с COM портом и не думать? Не знаю позволяет ли она чем то заниматься кроме передачи данных одновременно... Но зато готовое решение.

Serg6845
05.08.2021, 20:41
Да, для получения образов TRD из расшареной папки, в первую очередь. Ну и вообще на что фантазии хватит. Хоть интернет. Главное наладить связь. А потом, например, играть музычку и подгружать картинку не спеша, фоном.

здесь вопрос - нужно обойтись тем что на спеке уже есть или можно довешивать железо?
у меня например среди прочего довешен аппаратный UART (MAX3110) - xmodem на 115200 вполне работает, и ENC28J60 - Ethernet (идея и основа софта - speccyboot, только SPI порт аппаратный, скорость заметно поболее).

izzx
05.08.2021, 21:08
здесь вопрос - нужно обойтись тем что на спеке уже есть или можно довешивать железо?
Было бы хорошо подключить внешнее устройство к имеющимся портам. Ну или в ZXBUS воткнуть. Но и прочие варианты не исключаются.

у меня например среди прочего довешен аппаратный UART (MAX3110) - xmodem на 115200 вполне работает, и ENC28J60 - Ethernet (идея и основа софта - speccyboot, только SPI порт аппаратный, скорость заметно поболее).
Вот про это всё хотелось бы узнать подробнее.

Serg6845
05.08.2021, 21:36
Было бы хорошо подключить внешнее устройство к имеющимся портам. Ну или в ZXBUS воткнуть. Но и прочие варианты не исключаются.

Вот про это всё хотелось бы узнать подробнее.

SPI порт - за основу взята схема вот отсюда:
http://spetsialist-mx.ru/index32.html
он дает приличную скорость по SPI - у меня тактируется от 14МГц.
на него навешаны собственно навешаны UART, Ethernet и 2 SD карты (DIVMMC)
все это запихано в ПЛИС и приделано к первому Ленинграду.
Speccyboot - здесь
https://patrikpersson.github.io/speccyboot/
для начала можно собрать по оригинальной схеме (мой вариант требует доработки софта, благо он в исходниках)
НО - на момент когда я ее собирал - версия 1.6 у меня не взлетела. откопал где-то старые версии - все до 1.5 включительно заработали, после правки ошибки в DHCP протоколе. сейчас уже не нашел где...
а на сайте новое глобальное обновление, его я не пробовал.

reddie
05.08.2021, 21:41
Было бы хорошо подключить внешнее устройство к имеющимся портам. Ну или в ZXBUS воткнуть
Это две очень больших разницы =) Через шину возможны скорости в разы больше, даже на порядки больше.


Максимальная скорость будет 19200
Лет 20 назад соединял напрямую магнитофонные гнезда двух Спектрумов кросс-кабелем и скорость получал около 50к.
Точнее не помню, там был модифицированный загрузчик с другим алгоритмом передачи битов.
Это были эксперименты для нашей "сетевой" игрушки, дальше демоверсии так и не ушедшей...

izzx
05.08.2021, 22:16
Лет 20 назад соединял напрямую магнитофонные гнезда двух Спектрумов кросс-кабелем и скорость получал около 50к.

Про аудио вход то я и забыл. Тоже вариант.

reddie
05.08.2021, 22:57
Про аудио вход то я и забыл. Тоже вариант.
Через него можно вообще загружать на древний Спектрум без дисковода прямо из эмулятора командой Save =)
Ну или проигрывая wav-файлы виндой. Медленно, зато никаких CF и прочих извратов.

izzx
06.08.2021, 12:07
Через него можно вообще загружать на древний Спектрум без дисковода прямо из эмулятора командой Save =)
Ну или проигрывая wav-файлы виндой. Медленно, зато никаких CF и прочих извратов.
Это я пробовал. Разные форматы снапов. Со сжатием и своим загрузчиком оно довольно быстро грузится. Но не много не то. Тут хотелось бы произвольно выбирать файл/образ диска для загрузки. Но есть, конечно, замечательные проги типа D-T_COPI, оно позволяет хоть файлы, хоть образы копировать через звук на двойной-тройной скорости.

izzx
15.09.2021, 19:01
В этой теме упоминают про обмен через rs-232 https://zx-pk.ru/threads/32157-sizif-512.html?p=1130392&viewfull=1#post1130392.
Но там в основном всё под DivMMC/IDE заточено.

Вопрос 1: Если к отечественному клону прикрутить такой же порт как в фирменном ZX, то должен же работать готовый софт для обмена? Ну может чуть тайминги не те будут.
Подключу к 7,8,11,12 ногам AY вот такую штуку и будет на PC нормальный com-порт https://www.aliexpress.com/item/WAVGAT-FT232RL-FTDI-USB-3-3V-5-5V-to-TTL-Serial-Adapter-Module-for-Arduino-FT232/32519490747.html?spm=a2g0s.9042311.0.0.274233edpxW 0dn?

Вопрос 2: Где взять готовый софт для фирменного порта rs-232? Например, стандартный терминал, чтобы подключиться к какому-нибудь устройству и настраивать...
На WOS пару прог для обмена нашёл по запросу "rs 232". Но что-то без инструкции не понятно.

reddie
15.09.2021, 22:53
Если к отечественному клону прикрутить такой же порт как в фирменном ZX
На Скорпионах, начиная с первых (желтых) типа сделан RS-232, но программ для работы с ним никто не видел =)) Кто видел - отпишите.
Вообще, через последовательный порт к Спектруму подключали принтеры, но на Скорпионе обмен шел сразу через Centronix, сам так печатал.

izzx
19.11.2021, 20:28
Начитался интернетов про ESP 8266 и включил её в режим моста. Команда SAVETRANSLINK.
Прошивка заводская.
Сделал клиента для ZX и сервер UDP для PC. Теперь можно скачивать образы TRD сразу на диск.
ESP подключается тремя проводами к AY. Скорость обмена 57600. Дискета за 3:20 прилетает по WiFi.

Пока что без контроля целостности. Две дискеты пришли целые, третья с ошибками. Но это ничего, потом сделаю контрольные суммы.

Есть две проблемы. Режим моста на ESP иногда капризничает. И не могу подключиться через домашний роутер. Где-то надо настроить.
А когда точка доступа на телефоне, усё работает.

https://pic.maxiol.com/thumbs2/1637342036.3165277814..png (https://pic.maxiol.com/?v=1637342036.3165277814..png&dp=2)https://pic.maxiol.com/thumbs2/1637342073.3165277814..png (https://pic.maxiol.com/?v=1637342073.3165277814..png&dp=2)

izzx
23.11.2021, 12:35
Всё, выложил в первом сообщении свои наработки.
Через домашний роутер работает, просто уровень сигнала был низкий.
И чтобы заставить работать ESP в режиме моста, её надо перезагрузить лишний раз ).
Сделал контрольные суммы для пакетов, но, оказывается, и так довольно надёжно работает.

valerium
23.11.2021, 14:02
Всё, выложил в первом сообщении свои наработки.
Через домашний роутер работает, просто уровень сигнала был низкий.

Проект интересный, можно по нему ещё пару уточнений ?
Это сейчас работает с железным BDI или только с эмулированным ? Настоящий образ на настоящую дискету этим путем можно залить ?
если да, то заливка выполняется 1:1 образом или пофайлово ?

И касаемо передачи - как я понимаю, трансфер реализован на UDP, а почему не на reliable-транспорте, TCP, например ? На дейтаграммном протоколе ж весь контроль передачи приходится заново отстраивать.

izzx
23.11.2021, 14:19
Это сейчас работает с железным BDI или только с эмулированным ? Настоящий образ на настоящую дискету этим путем можно залить ?
Я проверял запись на виртуальные дискеты SMUC. То есть на карту CF. Но на реальную дискету должно без проблем записаться. Вечером проверю. И на образ через DivMMC/IDE как я понимаю должно, но не проверял.



если да, то заливка выполняется 1:1 образом или пофайлово ?
1:1, блоками по 1024 байт весь образ записывается. 640 частей. Точная копия. По файлам хотел сделать, может потом.




И касаемо передачи - как я понимаю, трансфер реализован на UDP, а почему не на reliable-транспорте, TCP, например ? На дейтаграммном протоколе ж весь контроль передачи приходится заново отстраивать.
На TCP хотел, но не получилось. Там как-то надо сессию сначала открывать. А на UDP всё, что приходит на Rx вход ESP, хоть один байт, всё сразу улетает на сервер. А контроль передачи я сделал сам.

Upd. Кстати, сервер теоретически может работать с несколькими клиентами одновременно. Но я не проверял. А файлы в общую папку можно подкидывать не останавливая сервер.

valerium
23.11.2021, 16:19
Я проверял запись на виртуальные дискеты SMUC. То есть на карту CF. Но на реальную дискету должно без проблем записаться. Вечером проверю. И на образ через DivMMC/IDE как я понимаю должно, но не проверял.


Отлично, надо будет попробовать. Я просто ищу способ писать живые флопики из образов, но без железного контроллера fdd на PC И вариант лить на флопик спека "извне" вполне подходит.
Надо только проверить, какова будет реальная скорость записи на настоящий флопик, а также то, что BDI ограничивает ввод/вывод (за счёт блокировки /IORQ) для остальных устройств, соот-но на время работы с флопом будет теряться контроль за передачей через AY. Ну в целом это можно пооптимизировать.
Если контроль передачи файла с сервера на клиента осуществляет клиент на спеке (серией запросов вида "дай файл имя такое-то, смещение такое-то, длина блока такая-то"(например, равная 1 сектору флопа), то можно получать блок данных (сектор, один или несколько) в буфер ОЗУ, затем передача на AY уходит в ожидание и Спек пишет данные на флоп. и т д. со следующими блоками.
Ну и можно попытаться уйти от синхронного сериального интерфейса в сторону асинхронного параллельного, это и продуктивнее по скорости, и удобнее контролировать передачу. Что у нас может аппаратно реализовывать передачу по параллельному интерфейсу аналогично всяким ИРПР, существует ещё такое ? Чтоб данные из ESP забирать без "подсчёта тактов", а просто по готовности данных в буфере интерфейсного контроллера

polikarpov76
23.11.2021, 16:57
А esp8266 сам не умеет как-то обратиться к сетевой шаре (NFS или SMB, пусть даже на роутере, многие роутеры это умеют) с темой 'слыш дай мне список файлов, или 'хочу скачать файл такой-то'? То-есть как бы обязательно иметь самописный сервер?

izzx
23.11.2021, 17:10
Если контроль передачи файла с сервера на клиента осуществляет клиент на спеке (серией запросов вида "дай файл имя такое-то, смещение такое-то, длина блока такая-то"(например, равная 1 сектору флопа), то можно получать блок данных (сектор, один или несколько) в буфер ОЗУ, затем передача на AY уходит в ожидание и Спек пишет данные на флоп. и т д. со следующими блоками.
Так и есть.



Надо только проверить, какова будет реальная скорость записи на настоящий флопик
Есть даже код для отправки на скорости 115200. Но нет кода для приёма. Была ещё мысль сделать 115200 в режиме турбо, просто подогнав код для скорости 57600. Но это получится под конкретную модель. Потому как ускорение в турбе разное.



Что у нас может аппаратно реализовывать передачу по параллельному интерфейсу аналогично всяким ИРПР, существует ещё такое ?
Вот этого не знаю. Были наработки в теме про WiFi. Или какой-нибудь BB55. Хотя у AY 8 бит шина IO, должно хватить и на передачу, и на контроль.

- - - Добавлено - - -


А esp8266 сам не умеет как-то обратиться к сетевой шаре (NFS или SMB, пусть даже на роутере, многие роутеры это умеют) с темой 'слыш дай мне список файлов, или 'хочу скачать файл такой-то'? То-есть как бы обязательно иметь самописный сервер?
На заводской прошивке вряд ли. Но надо почитать интернеты.
Ещё была у меня идея читать через ESP карту SD. Библиотеки для этого есть.

Upd. Забыл сказать главную фишку: тут нет аппаратного контроля передачи. Просто сервер шлёт пакеты всегда определённого размера, а клиент пока не примет нужный объём, не остановится.

Kulich
23.11.2021, 18:27
А вообще лучше брать нормальный FIFO UART да с контролем потока. А не дергать ноги ай думая о турбо или нет оно.

izzx
23.11.2021, 19:09
Потестил скоростя в режиме 3.5 герц:
С карты CF на дискету - 2:10
С сервера на карту CF - 3:30 (без контрольных сумм)
С сервера на дискету - 5:38 (без контрольных сумм)

Наверное, можно чуть ускорить, если писать по дорожкам, а не по 1024 байт. То есть сделать буфер 16*256. И, возможно, отформатировать дискету с другим интервалом.


А вообще лучше брать нормальный FIFO UART да с контролем потока.
А с ним не надо держать определённую скорость? Я вот выше писал, что лучше бы достаточное количество сигналов, и такое устройство, чтобы скорость могла быть любой.

valerium
23.11.2021, 19:21
А вообще лучше брать нормальный FIFO UART да с контролем потока. А не дергать ноги ай думая о турбо или нет оно.
Ну сейчас есть прототип, какой есть, автор молодец, что в целом концепцию охватил. Сейчас можно по частям все обдумать и проработать.
А вообще любую передачу, конечно, надо взваливать на контроллер интерфейса, чтоб работа с обменом со стороны cpu выглядела как запись данных в один порт, запись команды в другой порт, а затем циклическое считывание статусного регистра на предмет переваривания/готовности ответных данных от контроллера.
Последовательный интерфейсы - это тепло и лампово, как магнитофон с полосками на бордюре, но мне кажется, что параллельная передача здесь была бы куда более к месту.
И если уж говорить про ESP, то у него должно быть достаточно своих gpio-ног для реализации слейв-устройства с параллельным обменом по 8-разрядной шине данных, адресации регистров импровизированного контроллера и линий управления (rd и wr). То есть аппаратно спековскую часть можно бы сократить до дешифратора адреса(ов) и самого esp, а уж потом он будет цепляться к серверу и по сути реализовывать проксирование, отдавая спеку данные небольшими блоками.
Про то, что хватит быстродействия, я особо не сомневаюсь - хотя бы потому что подобный интерфейс реализовывали неплохо даже на avr-ках (эмулятор вг93+флопа by Helbr тому пример).
У меня есть несколько идей, но пока нет опыта в работе с esp, я пока только чужие проекты собирал и вливал в него. Поизучаю, может чего и придумается.

- - - Добавлено - - -



А с ним не надо держать определённую скорость? Я вот выше писал, что лучше бы достаточное количество сигналов, и такое устройство, чтобы скорость могла быть любой.
Там скорость его [FIFO UART] передачи определяется его собственным кварцем и делителем, записанным в один и его специальных регистров. То есть отдал ему данные в буфер - и он их на соответствующей скорости со всеми дополнительными битами (старт/стоп/четность) передал. Если в ответ чего-то ждём, поллим статусный регистр, как в нем увидели готовность принятых данных - забрали их чтением из соотв.регистров. За счёт FIFO можем не очень мгновенно и не очень равномерно принятые данные забирать. Так что это значительно удобнее.

izzx
23.11.2021, 21:48
Теперь я понял весь план.
Делаем универсальную платку с портом кондратьева для системного разъёма и ZX BUS.
Подключаем к ней ESP на скорости 921600.
Включаем турбо на ZX, если есть.
Гоняем образы TRD с космической скоростью через мой сервер или бродим по инету через браузер Nihirash.

Возможно, сервер не понадобится, потому что Nihirash что-то говорил про облако (ЕМНИП).
И возможно, ребята такое устройство уже допилили и откроют продажи к рождеству. Говорю наугад, инфы у меня нет.

Только если оставлять UDP сервер и ESP режиме моста, то как её переводить в заводской режим для браузера? Хоть две делай.

- - - Добавлено - - -


И если уж говорить про ESP, то у него должно быть достаточно своих gpio-ног для реализации слейв-устройства с параллельным обменом по 8-разрядной шине данных, адресации регистров импровизированного контроллера и линий управления (rd и wr). То есть аппаратно спековскую часть можно бы сократить до дешифратора адреса(ов) и самого esp, а уж потом он будет цепляться к серверу и по сути реализовывать проксирование, отдавая спеку данные небольшими блоками
Да, только тут наверное придётся программировать ESP.

Kulich
23.11.2021, 23:08
Вооо, в правильном направлении мысль пошла. Сделать ком порт совместимым с каким-то хоть стандартом , реализованном например в Эво и ZXMCARD. Всю грязную работу свалить на какой-нить 16550. Разве что мегабит это перебор и смысла не имеет. Спектрум и 115200 с трудом вытягивает насколько я вижу. Дело за выбором про окола обмена. И главное в написании софта который будет эту самую сеть реализовывать.

valerium
24.11.2021, 06:59
. Разве что мегабит это перебор и смысла не имеет. Спектрум и 115200 с трудом вытягивает насколько я вижу.
Тут мы опять путаем теплое с мягким. 115200 не удается вытянуть в _программном_ режиме, отдавая весь проц на построение потока данных (и считая такты). А это куча пауз и в общем-то выкинутого впустую времени.
Если обмен сделать на чем-то автономном относительно cpu, то и скорость можно получить иную, а может и вообще иначе реализовать обмен. Никто ж не ругается, что обмен с ВГ93 по 8-битной шине медленный - я вот за такой же вариант обмена, хоть и программного, но весьма продуктивного.

16550 можно пересадить на действующую схему, поиграть с ней в плане "а надо ли вообще", а потом углубляться в реализацию параллельного обмена (на avr я себе это представляю, неужто на esp с этим несправиться?)

reddie
24.11.2021, 08:23
Никто ж не ругается, что обмен с ВГ93 по 8-битной шине медленный
При этом скорость потока чтения/записи дискеты 250 Кбит, или 30 Кбайт в секунду, что явно больше, чем 115200. В два раза. Но это параллельный интерфейс, причём с ожиданием готовности. Вот хотя бы на эти цифры стоит ориентироваться.

izzx
24.11.2021, 08:27
Разве что мегабит это перебор и смысла не имеет
Ну не совсем. Я вот прикинул, что мне для потока видео надо 1600 000 бит/с. Смотреть фильмы прямо с сервера ).



16550 можно пересадить на действующую схему,
Да. Я клиента подправлю для железного порта и готово.

Глянул на ZXMC - что-то мне кажется, что там 115200 максимум. Маловато будет.

valerium
24.11.2021, 09:18
При этом скорость потока чтения/записи дискеты 250 Кбит, или 30 Кбайт в секунду, что явно больше, чем 115200. В два раза. Но это параллельный интерфейс, причём с ожиданием готовности. Вот хотя бы на эти цифры стоит ориентироваться.

Я именно про это же. 115200 это всё-таки ощутимо медленно (кто на PC данные по нульмодему гонял, хорошо ощущает), а работа по параллельному интерфейсу (в данном примере работа с ВГ93 и флопом) дискомфорта не вызывает. Короче, надо будет осваивать GPIO на esp и перестраивать все на параллельный интерфейс. Я попробую, правда вряд ли раньше новогодних каникул, за это время что-то вроде тз должно в голове улечься.

Serg6845
24.11.2021, 09:25
При этом скорость потока чтения/записи дискеты 250 Кбит, или 30 Кбайт в секунду, что явно больше, чем 115200. В два раза. Но это параллельный интерфейс, причём с ожиданием готовности. Вот хотя бы на эти цифры стоит ориентироваться.

по факту без турбо тянет 300, вряд ли сильно больше. (8085 на 4МГц тянет 500, т.е. HD дискеты, но с привлечением аппаратных средств. но это совсем другая история)

Kulich
24.11.2021, 12:10
У вас 250 кбит между дисководом и ВГ93 или между ВГ93 и Z80? ) Это 2 большие разницы. Ну и давайте посчитаем, 3.5 МГц, я прикинул что если не стараться ну сильно извергаться нужно тактов 40 на байт или бит, смотря чем дрыгаем, это будет в районе 87500 байт или бит. Но это минимальное время идеал но железа без вейтов, занятой шины и не занятых портов.

reddie
24.11.2021, 12:19
У вас 250 кбит между дисководом и ВГ93 или между ВГ93 и Z80? ) Это 2 большие разницы.

Это скорость потока данных от ВГ93, под неё уже подстраивается протокол обмена с флопом.
Приводилось просто как пример для ориентира. Можно вообще к LDIR весь обмен свести, дело лишь в реализации.

Kulich
24.11.2021, 15:24
Это скорость потока данных от ВГ93, под неё уже подстраивается протокол обмена с флопом.
Приводилось просто как пример для ориентира. Можно вообще к LDIR весь обмен свести, дело лишь в реализации.
Это как? Меняет скорость вращения диска чтоль? ) Как-раз скорость чтение диска константна, и она равна 250,500 и прочие кбит, а вот компьютер может читать данные с ВГ как ему удобнее.

То что 115200 у человека получилось получить только сильно извернувшись и поломав голову и говорит о том что где-то в этих пределах и лежит максимальная скорострельность в операциях, правда организация потока, проверка готовности устройства заметно еще скосят скорость даже при параллельном подключении, еще на таких скоростях у UARTов начинается еррор рейт заметный, значит еще и коррекция ошибок понадобится.

Кстати для того чтобы успешно работать на шине нужен достаточно быстрый контроллер, чтобы он успевал дергаться.
Т.е. там порядка 500-700 нс на то чтоб получить прерывание и выставить ответ или просто отреагировать.
Вот тут интересная статья про эмуляцию дисковода и картриджа на STM32
https://www.kernelcrash.com/blog/emulating-roms-and-floppy-drives-in-msx/2020/06/14/

izzx
24.11.2021, 16:05
То что 115200 у человека получилось получить только сильно извернувшись и поломав голову и говорит о том что где-то в этих пределах и лежит максимальная скорострельность в операциях,
Подождите. На скорпе копирование с карты на карту через SMUC занимает 5 сек целая дискета. В турбе. А это значит около 1.2 мегабита. И причём это сначала чтение, потом запись. А там шина 8 бит.

А при обмене на 57600 процессор даже не в турбе довольно много ждёт. И по одному биту всё проталкивает. А на 115200 предел возможностей, похоже, для нетурбы. Но это для UART протокола.

reddie
24.11.2021, 16:31
компьютер может читать данные с ВГ как ему удобнее

Это уже если лезть в технические дебри контроллера и флопа. На стандартном обмене скорость фиксированная, не просто же так существуют эти обороты диска в 300, 360 и другие. Частота ВГ определяет скорость записи данных. Спектрум обязан принять/отослать данные в порт ВГ по сигналу готовности, иначе вылетит ошибка. Вот эта стандартная скорость и есть 250 Кбит (5 оборотов в секунду, 6 Кб на дорожке, итого 30 Кбайт).

Выше уже отписали о копировании дискеты за 5 секунд, что довольно неплохо. Да, с карты на карту, но что мешает реализовать эти скорости для других типов хранения (приема) данных?

Kulich
24.11.2021, 18:49
Это уже если лезть в технические дебри контроллера и флопа. На стандартном обмене скорость фиксированная, не просто же так существуют эти обороты диска в 300, 360 и другие. Частота ВГ определяет скорость записи данных. Спектрум обязан принять/отослать данные в порт ВГ по сигналу готовности, иначе вылетит ошибка. Вот эта стандартная скорость и есть 250 Кбит (5 оборотов в секунду, 6 Кб на дорожке, итого 30 Кбайт).

Выше уже отписали о копировании дискеты за 5 секунд, что довольно неплохо. Да, с карты на карту, но что мешает реализовать эти скорости для других типов хранения (приема) данных?

Ну для 7 мегагерц там уже веселее я за 3.5 приводил расчет. Кажется я знаю как работает это копирование, без участия памяти вообще, так-как это тактов 28 на байт из которых in/out 20 съедают точно.

Но вообще это дело десятое, максимальная скорость. Главное чтоб работало=) Я гофернеты в районе 9600 бороздю и не жалуюсь )

izzx
24.11.2021, 20:19
То-есть как бы обязательно иметь самописный сервер?
Немного почитал. В общем, с завода умеет работать через TCP, команда
AT+CIPSEND Отправить данные TCP/IP
Как я понимаю, так работает гофер браузер. Посылает текстовые запросы типа GET на HTTP сервер.
Но мне такое не подходит, потому что ответы от сервера могут быть разной длины. Тут нужен контроль передачи, чтобы приостанавливать. А так на 57600 времени на анализ пакета нет. Комп всё время ждёт данные.
А у меня все пакеты от сервера равной длины, поэтому просто.
И размер их около килобайта, потому что у меня не получилось за раз пропихнуть через ESP больше, чем примерно 1200 байт. Если пакет больше, она просто игнорирует его ).

Ещё для ESP бывает FTP клиент, он может тягать файлы с сервера и записывать в свою примитивную файловую систему в память или на SD карту.

Доп.
А когда не знаешь какой длины придёт пакет, вопрос когда остановить приём. Сервер http наверное шлёт в конце пакета символ типа 13 или 0. Значит надо выкроить время анализировать каждый байт на лету. И ещё загвоздка в том, что когда выставляешь бит остановить передачу, она останавливается не сразу. Можно битик и потерять.

valerium
24.11.2021, 20:41
Кажется я знаю как работает это копирование, без участия памяти вообще, так-как это тактов 28 на байт из которых in/out 20 съедают точно.

Даже если эту перезапись реализовать сдвигами напрямую из одной карты в другую (по SPI или по полному 4-разрядному интерфейсу SD), то все равно надо много доп.информации передавать каждой из карте для адресации единиц размещения (файловую систему-то она сама по себе не детализирует, а как без ее разбора ?). Но в СМУКе ж и этого нет. Как копировать без участия памяти-то ?
И как за 5 сек вся дискета - разъясните, а то аж уснуть не могу )

Что касается предела скорости обмена, тут Kulich действительно прикинул довольно точно.
Вот такой фрагмент кода читает данные из условного "порта данных" некоей идеализированной железяки, которая в идеальном случае успевает формировать очередной байт данных к каждому новому чтению из порта. После чтения байт сохраняется в буфер в ОЗУ.


ld hl, srcaddr
ld de, length
ld bc, portaddr
loop: in a, (c) 12T
ld (hl), a 7T
inc hl 6T
dec de 6T
jr nz, loop 12T

На это уходит 43 (то есть даже больше, чем 40) тактов на один цикл (=байт), и это без какой-либо прочей обработки полученных данных и контроля готовности очередных данных перед приемом. 81395 циклов в секунду. Но это "сферический конь в вакууме".
Если в действительности будет даже вдвое меньше, то ~40Кбайт/с при байтном обмене по 8-разрядной шине уже было бы неплохим результатом (~16 сек суммарное время на получение данных всех фрагментов TRD от сервера + обычное суммарное время записи из памяти на флоп с ожиданием позиционирования).
Если бы такое удалось, уже классно. Все зависит действительно от того, насколько хорошо удастся оптимизировать обработку прерывания при обращении к ESP на чтение. Для нас, начинающих, та еще задачка )

reddie
24.11.2021, 21:04
Вот такой фрагмент кода читает данные из условного "порта данных"
Команда inc de никак не влияет на флаги, но это не главное


это "сферический конь в вакууме"
Сферический конь без проверки готовности данных состоит из одной команды inir/otir, это 21 такт =) Если же раскранчить код в памяти (кучу команд ini/outi), то вообще 16 тактов.

Kulich
24.11.2021, 21:35
"И как за 5 сек вся дискета - разъясните, а то аж уснуть не могу )"
Как 5 секунд дискета не знаю, но без памяти просто, in из порта и следом out в порт эти же данные. Но если честно я абсолютно не знаю как работает IDE, наверное там нужно еще выбирать откуда и куда)

izzx
24.11.2021, 21:35
Так. Немного уменьшаю рыбу. Телефон не сохранил скрины секундомера, но я записал видео и выложил в ту папку, что в первом сообщении.
Копирование с карты на карту образа TRD через WDC занимает примерно 1:10.
А через GMXCOM почти целая дискета, 2446 секторов, копируется с карты на карту примерно за 6,5 секунд.
Так что я почти не соврал.

Kulich
24.11.2021, 21:42
А вот inir и otir это интересно. Действительно 21 такт на байт и так до 256 байт строчит. Просто под Z80 я почти не пишу, вот и думаю как писал под 8080 )

valerium
24.11.2021, 22:17
"И как за 5 сек вся дискета - разъясните, а то аж уснуть не могу )"
Как 5 секунд дискета не знаю, но без памяти просто, in из порта и следом out в порт эти же данные. Но если честно я абсолютно не знаю как работает IDE, наверное там нужно еще выбирать откуда и куда)

Из какого и в какой порт ? Там все непросто хотя бы потому, что IDE 16-разрядный и процессор одним движением эти данные обработать в любом случае не может.
Еще у него записью в отдельные регистры адресуется каждый сектор (или LBA-блок, в зависимости от режима адресации), а внутри него есть еще таблица разделов, внутри которых лежат структуры файловых систем. Так что одно IDE-устройство со своей файловой системы корректно отдать данные в файловую систему другого устройства просто не сможет, нужен промежуточный интеллект )

Upd: про разделы, наверное, гоню, это ж не esxdos, который работает со всеми фишками писишных устройств, наверное тут данные организованы проще. Но структуры, контролирующие размещение файлов, точно никто не отменит )

- - - Добавлено - - -


Команда inc de никак не влияет на флаги, но это не главное

Вариант был мало того, что неоптимальный, так еще и неправильный. Лет 20 почти ничего под Z80 не писал - похоже и начинать уже не надо )


Сферический конь без проверки готовности данных состоит из одной команды inir/otir, это 21 такт =) Если же раскранчить код в памяти (кучу команд ini/outi), то вообще 16 тактов.
Красиво. Респект )

Kulich
25.11.2021, 11:44
Из какого и в какой порт ?
Как оно там работает на GMX не знаю, может там все хитро. Авторы GMX commandera прям прямо писали что там они что-то хитрое делали и обещали обмен до 300кб/с при том что стандартный софт пишет больше минуты.

valerium
25.11.2021, 12:27
Как оно там работает на GMX не знаю, может там все хитро. Авторы GMX commandera прям прямо писали что там они что-то хитрое делали и обещали обмен до 300кб/с при том что стандартный софт пишет больше минуты.
Такое возможно только в том случае, когда копируемые данные не покидают контроллер и у проца нет необходимости их все усваивать.
Повспоминал программный режим ATAPI, предположу, что при копировании файлов, когда в регистрах IDE уже определены конкретные сектор-источник на одном винте и сектор-приемник на другом, одному винту записывается команда на чтение сектора, другому на запись, а затем выбираются оба устройства, у обоих выставляется адрес регистра данных , после чего за 256 циклов выполняется передача одного сектора между их регистрами данных (256 16-разрядных слов) через общую у них шину данных. А процессор эти данные не видит и они ему неинтересны, ему надо только 256 раз стробирующим сигналом дрыгнуть.
При строго последовательном размещении секторов файла так можно даже читать-писать группы секторов. Но выигрыш будет только если файлы хранятся в последовательных секторах и нет необходимости строить сложный каталог с таблицами размещения.
В той файловой системе есть подобие FAT-таблиц ?

izzx
25.11.2021, 13:43
когда в регистрах IDE уже определены конкретные сектор-источник на одном винте и сектор-приемник на другом
Но тут то карта одна. Только образы дисков разные.


В той файловой системе есть подобие FAT-таблиц ?
Не знаю, но думаю непрерывное пространство внутри одного образа TRD, без всяких там фрагментаций.

valerium
25.11.2021, 14:32
Но тут то карта одна. Только образы дисков разные.

Тогда вся моя гипотеза идёт мимо.
Магия )



Не знаю, но думаю непрерывное пространство внутри одного образа TRD, без всяких там фрагментаций.
А если один файл trd в середине диска удалить, чтоб задействовать его пространство, уплотнять данные требуется?
Если да, то уплотнение тоже происходит с магической скоростью или занимает ощутимое время ? Хочу понять, читает ли в себя z80 при таком обмене

izzx
25.11.2021, 14:49
А если один файл trd в середине диска удалить, чтоб задействовать его пространство, уплотнять данные требуется?
Если удалить целый образ trd, то он так просто из коллекции не удаляется. Там пачками по 51 диск.
А если удалить файлик в начале одного образа и сделать move, то вечером попробую.

reddie
25.11.2021, 16:34
сли удалить файлик в начале одного образа и сделать move
Главное - забить TRD под завязку или около, чтобы MOVE действительно работало с полным объемом дискеты, а не вид делало.

izzx
25.11.2021, 20:26
Новое кривое видео на нашем канале. Нашёл в GMXCom кнопку копировать диск в диск. И оно отрабатывает за 5,6 сек. Быстрее, чем по файлам, что логично.
Затем на забитом под 0 диске удалил первый файл и сделал уплотнение. Это где-то 6,5 сек.
Умели раньше делать софт, титаны.

valerium
26.11.2021, 22:51
Новое кривое видео на нашем канале. Нашёл в GMXCom кнопку копировать диск в диск. И оно отрабатывает за 5,6 сек. Быстрее, чем по файлам, что логично.
Затем на забитом под 0 диске удалил первый файл и сделал уплотнение. Это где-то 6,5 сек.
Умели раньше делать софт, титаны.
В схемах СМУКа ничего магического не нашел.. По идее все данные таскаются через процессор.
640кбайт за 5,6 сек - это грубо 114кбайт в секунду, причем за эту секунду 114кбайт прочитано и 114кбайт записано. В сумме 228К проходит через 8-битную шину.
3,5М/~228K= ~15-16 тактов на байт (ну или чуть больше, учитывая погрешность измерений с секундомером). Действительно похоже на цепочки ini/outi при чтении/записи сектора. Точнее уже только глядя в код можно сказать.
Надо снапшот памяти при работе коммандера дернуть и глянуть, есть ли там массовые ini или outi.
Вывод такой: чтобы это максимально быстро работало через параллельный порт, надо, чтоб железка могла последовательно отдавать байты блока при чтении из определенного регистра. И читать их через кучу ini или через inir. Это к вопросу реализации этого порта на ESP, если дело дойдет.

Сейчас пока для последовательной версии леплю макетку с ПЛИСкой для дешифратора портов (вроде говорилось про F8EFh, но это всегда можно будет поправить) и как придет 16c550, попробую его с кварцем 18,432мгц на предмет, а сумеет ли он 115200 и 230400 (при таком кварце делитель 10 и 5 соответственно). ESP все это должен смочь.

Kulich
26.11.2021, 23:06
Дешифрации порта можно сделать на 76688 ну или на паре из, или на одной gal16v8. А особые эстеты могут взять 28С512 )

valerium
26.11.2021, 23:33
Дешифрации порта можно сделать на 76688 ну или на паре из, или на одной gal16v8. А особые эстеты могут взять 28С512 )
Думаю, что китайская цена у них всех примерно одна. У меня просто скопилась кучка epm3032, которые заказывал по несколько штук, т.к среди них было много залоченных по JTAG. Потом удалось всю мертвечину оживить, надо теперь ее расходовать.
Собственно, разницы нет, на чем прототип сделать. Надо же просто идею проверить )

izzx
27.11.2021, 19:44
3,5М/~228K= ~15-16 тактов на байт
GMXCom работает на 7 мегагерц, напоминаю на всякий случай.



Точнее уже только глядя в код можно сказать.
А вот в эмуляторе посмотрел во время чтения и во время записи:

https://pic.maxiol.com/thumbs2/1638031076.3165279670.gmxcom.png (https://pic.maxiol.com/?v=1638031076.3165279670.gmxcom.png&dp=2)https://pic.maxiol.com/thumbs2/1638031117.3165279670.gmxcom.png (https://pic.maxiol.com/?v=1638031117.3165279670.gmxcom.png&dp=2)



как придет 16c550, попробую его с кварцем 18,432мгц на предмет, а сумеет ли он 115200 и 230400
А сразу хотя бы мегабит нельзя? Раз автор командера писал о 300Кб/сек, значит надо ориентироваться на около 3 мегабит ). В интернете пишут ESP может до 4.5 мегабит.

И ESP будет же в режиме с аппаратным контролем? С линиями CTS и RTS.

Kulich
27.11.2021, 21:05
GMXCom работает на 7 мегагерц, напоминаю на всякий случай.
А вот в эмуляторе посмотрел во время чтения и во время записи:
https://pic.maxiol.com/thumbs2/1638031076.3165279670.gmxcom.png (https://pic.maxiol.com/?v=1638031076.3165279670.gmxcom.png&dp=2)https://pic.maxiol.com/thumbs2/1638031117.3165279670.gmxcom.png (https://pic.maxiol.com/?v=1638031117.3165279670.gmxcom.png&dp=2)
А сразу хотя бы мегабит нельзя? Раз автор командера писал о 300Кб/сек, значит надо ориентироваться на около 3 мегабит ). В интернете пишут ESP может до 4.5 мегабит.
И ESP будет же в режиме с аппаратным контролем? С линиями CTS и RTS.

Ну да сжатенько и развернуто там все )
Для мегабитных скоростей наверное UART не лучшее решение, нужно параллельный интерфейс между спектрумом и ESP без лишней конвертации, ну или на худой конец преобразователь в шина <-> ISP

valerium
27.11.2021, 21:17
А сразу хотя бы мегабит нельзя? Раз автор командера писал о 300Кб/сек, значит надо ориентироваться на около 3 мегабит ). В интернете пишут ESP может до 4.5 мегабит.

И ESP будет же в режиме с аппаратным контролем? С линиями CTS и RTS.
Еще не знаю, что можно и чего нельзя. Сама железяка ведь тоже имеет определенные пределы, может при правильной разводке соединительных линий и можно вылезти за пределы. В даташитах частоты выше 128000 не рассматриваются.
Скорость задается двумя параметрами: 1. частотой генератора 16550, 2. делителем, который является собой 16-разрядное число и пишется в один из регистров 16550.
Кварцы используются на 1,8432 мгц, 3,072мгц и 18,432мгц, а скорость передачи (= частота) это (частота генератора/<делитель>)/16.
И вот с кварцем 1,8432мгц с минимальным делителем 1 мы получаем максимальную частоту 115200,
с кварцем 3,072мгц и делителем 1 получаем частоту 192000, с делителем 2 - 96000, между ними соот-но нет промежуточных значений. Ну и дальше частоты уже ниже.
С кварцем 18,432мгц и делителем 1 - частоту 1152000, с делителем 2 - 576000, дел=3 - 384000, дел=4 - 288000, дел=5 - 230400, дел=10 - 115200.
Так что частоты не любые, а вполне опеределенная сетка получается. И далеко не все из того, что мы можем настроить на второй стороне. К тому же чем выше скорости, тем выше "percent error" из-за возможной рассинхронизации.

Что касается аппаратного контроля, то линии-то есть и задействовать на 16550 их, видимо, можно. Алгоритм передачи будет соот-но ориентирован на них. Но сможем ли того же добиться от esp - еще вопрос, там для меня пока сплошная неизвестность.

Что касается скринов, то в первом как раз видно, что выполняется чтение из двух портов попеременно (то из D*256+C, то из E*256+C) с сохранением в память в (HL), это видимо старший и младший байты каждого читаемого с ШД IDE слова. И одно из этих чтений должно дергать строб чтения этого самого слова с IDE, только один байт сразу забирается, а другой защелкивается в промежуточном регистре и потом читается через второй порт. Номера портов не скажу, надо закапываться в схемы (а то еще и прошивки ?) СМУКа, но зато уже хоть видно, что не магия.

Kulich
27.11.2021, 21:29
Еще не знаю, что можно и чего нельзя. Сама железяка ведь тоже имеет определенные пределы, может при правильной разводке соединительных линий и можно вылезти за пределы. В даташитах частоты выше 128000 не рассматриваются.
Скорость задается двумя параметрами: 1. частотой генераатора 16550, 2. делителем, который является собой 16-разрядное число и пишется в один из регистров 16550.
Кварцы используются на 1,8432 мгц, 3,072мгц и 18,432мгц, а скорость передачи (= частота) это (частота генератора/<делитель>)/16.
И вот с кварцем 1,8432мгц с минимальным делителем 1 мы получаем максимальну. частоту 115200,
с кварцем 3,072мгц и делителем 1 получаем частоту 192000, с делителем 2 - 96000, между ними соот-но нет промежуточных значений. Ну и дальше частоты уже ниже.
С кварцем 18,432мгц и делителем 1 - частоту 1152000, с делителем 2 - 576000, дел=3 - 384000, дел=4 - 288000, дел=5 - 230400, дел=10 - 115200.
Так что частоты не любые, а вполне опеределенная сетка получается. И далеко не все из того, что мы можем настроить на второй стороне. К тому же чем выше скорости, тем выше "percent error" из-за возможной рассинхронизации.

Что касается аппаратного контроля, то линии-то есть и задействовать на 16550 их, видимо, можно. Алгоритм передачи будет соот-но ориентирован на них. Но сможем ли того же добиться от esp - еще вопрос, там для меня пока сплошная неизвестность.

У меня на МГТФ и соплях ни на MSX, ни на АТМ не удалось добиться уверенной работы связки 16550 и ESP на скорости выше 38400, так что не уверен что оно легко возьмет такие скорости.

valerium
27.11.2021, 21:41
У меня на МГТФ и соплях ни на MSX, ни на АТМ не удалось добиться уверенной работы связки 16550 и ESP на скорости выше 38400, так что не уверен что оно легко возьмет такие скорости.

Про "легко" и не говорим... Именно поэтому и хотелось уйти от последовательного интерфейса вообще. Но раз уж вторая половина на нем сделана и работает, вначале будем пробовать )

izzx
27.11.2021, 21:44
Что касается аппаратного контроля, то линии-то есть и задействовать на 16550 их, видимо, можно. Алгоритм передачи будет соот-но ориентирован на них. Но сможем ли того же добиться от esp - еще вопрос, там для меня пока сплошная неизвестность.
На ESP всё есть с завода. Делаем команду типа такой, и готово. Выводы уже предусмотрены.
AT+UART_CUR=576000,8,1,0,3

AT+UART_CUR
Настройка последовательного интерфейса для текущего сеанса (current, т.е. без сохранения во flash память)
базовая AT+ UART_CUR= baudrate, databits, stopbits, parity, flow control
скорость 4400-4608000
биты данных
5:5 бит
6:6 бит
7:7 бит
8:8 бит
стоп биты
1:1 стоп бит
2:1.5 стоп бит
3:2 стоп бит
контроль четности
0: нет
1:Odd
2:EVEN
flow control
0:flow control отключен
1:включен RTS
2:включен CTS
3:включены оба RTS и CTS
(MTCK - UART0 CTS , MTDO - UART0 RTS)
Пример:
AT+UART=115200,8,1,0,0

izzx
28.11.2021, 12:15
Сразу не догадался проверить клиента в режиме пентагона. Оказалось, работает.

izzx
01.12.2021, 19:56
1. Мне тут ссылку дали на подключение ESP32 к ZX81 через ТВ/магнитофонный вход. Было тут подобное? Наверное, так же можно сделать для спека.
Суть по-моему такая: по команде LOAD"" из ESP автоматом загружается оболочка, а потом она общается с ESP на повышенных скоростях, выводит меню игр и даже распознаёт что вводит на клавиатуре человек. Сами игры/проги хранятся в памяти ESP и меняются через WEB интерфейс.
По-моему шикарная вещь.
Но для спека попроще будет. Без распознавания. Только кнопку добавить старт загрузки, а то тут не определить начало. Ну и прошивку свою.

https://forum.tlienhard.com/phpBB3/viewtopic.php?t=3360
https://forum.tlienhard.com/phpBB3/viewtopic.php?t=3922&_x_tr_sl=auto&_x_tr_tl=ru&_x_tr_hl=ru

2. Небольшое наблюдение для тех, кто захочет запустить AY232: с моим сервером или с просто общими сетевыми папками черех один мой домашний роутер, или через смартфон, работает без проблем. А вот другой, D-Link 2640U, шалит. Но я и раньше знал его фишку, так что не удивился.
В общем, если сервер подключен через провод - всё ок. А если через WiFi - тогда надо в настройках роутера поставить галку "Clients Isolation". И применить. А потом сразу убрать эту галку и снова применить. Вот тогда работает. Но до перезагрузки.
Может и вам попадётся капризный роутер.

Kulich
01.12.2021, 20:57
Вот это извращение с магнитофонным входом, зато около 100% совместимость со всеми Спектрумами, но всеж изврат )

djs
01.12.2021, 21:26
Вот это извращение с магнитофонным входом, зато около 100% совместимость со всеми Спектрумами, но всеж изврат )

Там вся фишка в том, что всё работает без изменений в ПЗУ, без дополнительной схемотехники, если не считать обвязку ESP32, т.е. через два провода к магнитофону и ULA, помимо питания ESP!

Но тут есть важный момент: на ZX81, в отличие от Спектрума, полностью софтовая отрисовка экрана силами процессора.
Кому интересно, можно почитать тут: https://web.archive.org/web/20181018024355/http://www.user.dccnet.com/wrigter/index_files/ZX%20Video%20Tutorial.htm
При выполнении BASIC-команды LOAD или SAVE происходит какая-то характерная для этих команд ситуация с сигналами, выводимыми на телевизор, которые ESP перехватывает. А поскольку ZX81 не подозревает, что его подслушивают и подсматривают, ESP подсовывает ему по кассетному проводу
свою ZX81-программку ("бут") с меню и списком загруженных во встроенную в ESP SPIFFS через Wifi-сервер программ. И потом, наверно, грузит уже на максимальной скорости выбранную из списка программу (згрузка реально происходит за пару секунд вместо 5-7 минут). Команда SAVE при этом
работает на штатной скорости ZX81. Ведь у нас ПЗУ ZX81 без изменений!
Есть две версии этой приставки WESPI: обычная, минималистичная, и видео-расширенная, WESPI-VGA, в которой добавлен выход на SPI-дисплей и на VGA, а недавно сделан OCR с экрана, чтобы при команде LOAD распознавать имя программы и грузить её напрямую, без загрузки меню.
На Спектруме такое не прокатит, надо дешифрацию адресов или портов городить, свою ПЗУ, всё как всегда.

PS. Если глючит кодировка на странице веб-архива, стоит попробовать более ранний снимок, не будет ромбов со знаком вопроса.

Недостаток этой SPI-приставки - отсутствие поддержки SPIFFS директорий. С поддержкой SD-карт автор не заморачивался. И ещё, на ESP32 с 4 мегабайтами внутренней флэшки доступно примерно 960КБ под загрузки программ. Я экспериментировал с модулем ESP32 на 8МБ (у меня есть и модуль на 16МБ), но удалось получить только 3 мегабайта свободного места на SPIFFS. Почему так - не знаю, но получается так. Наверно реализация доступа к SD избавила бы от этого ограничения.

Kulich
01.12.2021, 21:31
Зачем какие-то изменения?Максимум кнопку для начала проигрывания загрузчика нужна, да хоть по резету есп )

izzx
01.12.2021, 22:05
Я тоже не вижу причин, почему не будет работать на спеке. А к ESP наверно и карту памяти пожирнее можно прицепить.

djs
01.12.2021, 22:55
А чем тогда всё это отличается от TZXDuino, например, с картой памяти, на которую можно закидать всё, что угодно, и потом с неё грузить?
Зачем городить огород с Wifi и ESP? Глюки с дешёвыми роутерами, пароли от Wifi в прошивке без открытых исходников...
Набрал на Спектруме LOAD "", на этом Duino нажал на кнопку и всё.

- - - Добавлено - - -


Вот это извращение с магнитофонным входом, зато около 100% совместимость со всеми Спектрумами, но всеж изврат )

Для ZX81 миллион разных штук сделано, но эта была гениальной по простоте, дешевизне и гибкости. И совместимости.

Kulich
01.12.2021, 23:00
Ну это же универсальнее типа. После того как загрузчик загружен, можно уже что угодно через порт передавать, хоть странички, хоть файлы, хоть терминальный доступ. Что не отменяет в целом извращенность подхода )

djs
02.12.2021, 00:21
Оффтоп, ради прикола, часть дерева папок у меня по аппаратным примочкам ZX81. По Спектруму там раза в три меньше :)
76572
Движок форума урезал разрешение картинки, ничего не читается... Короче, для ZX81 море вещей сделано, благодаря его примитивности но гибкости.

izzx
02.12.2021, 10:35
А чем тогда всё это отличается от TZXDuino
Скоростью загрузки, и тем, что можно не таскать карту памяти туда-сюда, а по воздуху менять файлы. Но только надо заранее включить. С этой стороны, всегда включенный сервер может быть удобнее.
И ещё, тут не решён вопрос с турбо режимом.

По ZX81 молодцы мужики, знатно развлекаются.

Kulich
02.12.2021, 11:01
Просто с Z81 больше нечего особо делать кроме как развлекаться так. Вот они и стругают примочки. Нормальный человек за Zx81 сидеть не будет )

djs
02.12.2021, 14:25
Просто с Z81 больше нечего особо делать кроме как развлекаться так. Вот они и стругают примочки. Нормальный человек за Zx81 сидеть не будет )

Неумное замечание.
Если так рассуждать, то "нормальный человек не будет за Спектрумом сидеть". Нормальный человек на работу будет ходить, а по вечерам и по выходным спортом заниматься и семьёй.
Я сейчас собираю клон компа 1977-го года, который по характеристикам даже проще, чем ZX81. У меня в 1978-м он был настоящий. Что, нормальный человек этим заниматься не будет?

SoftLight
02.12.2021, 15:05
крутая тема, такое бы для spectrum сделать

Kulich
02.12.2021, 17:07
Неумное замечание.
Если так рассуждать, то "нормальный человек не будет за Спектрумом сидеть". Нормальный человек на работу будет ходить, а по вечерам и по выходным спортом заниматься и семьёй.
Я сейчас собираю клон компа 1977-го года, который по характеристикам даже проще, чем ZX81. У меня в 1978-м он был настоящий. Что, нормальный человек этим заниматься не будет?

А я про паять как-раз и говорил что это лучшее что с такими машинами можно делать, ну еще писать софт под спаянное. А что потом вы будете делать с этим компьютером, запускать те полторы программы что на него есть, хотя может он в cpm,тогда можете в нее поиграть немного, а дальше? Спектрум хотяб вменяемые игры и демо умеет в них можно играть и смотреть, послушать музыку. Хотя я даже на АТМ не могу без рукоблудия. То интернет подключу, то таск менеджер напишу. Заказал платы для прикручивания расширенной палитры.

reddie
02.12.2021, 17:19
А что потом вы будете делать с этим компьютером, запускать те полторы программы


Хотя я даже на АТМ не могу без рукоблудия. Заказал платы для прикручивания расширенной палитры.

И в чем разница между вами? =)) Что там, что там комп будет, по сути, в единственном экземпляре.
Главное, чтоб саму человеку было интересно то, чем он занимается. Неважно, комп 77 года собирает или палитры к АТМ прикручивает.

Kulich
02.12.2021, 17:24
И в чем разница между вами? =)) Что там, что там комп будет, по сути, в единственном экземпляре.
Главное, чтоб саму человеку было интересно то, чем он занимается. Неважно, комп 77 года собирает или палитры к АТМ прикручивает.

В общем-то никакой =) Просто немного самоиронии. Ну и то что ZX81 крайне ограниченная платформа это тоже факт.

djs
02.12.2021, 23:16
А я про паять как-раз и говорил что это лучшее что с такими машинами можно делать, ну еще писать софт под спаянное. А что потом вы будете делать с этим компьютером, запускать те полторы программы что на него есть, хотя может он в cpm,тогда можете в нее поиграть немного, а дальше? Спектрум хотяб вменяемые игры и демо умеет в них можно играть и смотреть, послушать музыку. Хотя я даже на АТМ не могу без рукоблудия. То интернет подключу, то таск менеджер напишу. Заказал платы для прикручивания расширенной палитры.

Если честно, то да: я боюсь закончить пайку и доделать всё до финала.
У меня сейчас в полуразобранном состоянии ZX81, два клона Спектрума и этот Ohio Scientific C1P (ещё тва Тауона, если их можно считать, в процессе доводки до ума).
Из 5000 игр на Спектруме у меня дай бог десяток-два-три игр типа Элиты и Квазатрона, в которые я играл какое-то время и которые захочется запустить снова.
Демки? Запустил на днях Lyra II и больше ничего не надо. Бордюрные эффекты и прочее баловство с IM2 я знал в 1991 году по дико раритетной книжке, которую мне кто-то подогнал (тогда как бы интернет не совсем был, такие вещи передавались в распечатках на матричных принтерах).
На ZX81 я, болея в детстве, первый раз посадил самолёт в игре Flight, авиасимуляторе с графикой 44х64.
https://www.youtube.com/watch?v=4BBF83iBX5E
Отец мне придвинул к кровати табуретку с ZX81 тогда. Это было в 1981 году, мне было 10 лет.
А на ZX80 были потрясающие игры про Star Trek с Клингонами, Ромуленами и фотонными торпедами.
Помню, было вот такое: https://www.youtube.com/watch?v=YPP-RhYWCUs&list=PLqor55NW4vJKsQkm64KpWV5QaQcXURlHL
В 1990-х через меня прошли эти 5000 игр, когда я снимал с них защиту, делал загрузчики, делал бесконечные жизни, по кассете за ночь.
https://zx-pk.ru/threads/794-sokhranim-zx-soft-nashej-molodosti!.html?p=1118962&viewfull=1#post1118962
https://zxpress.ru/book.php?id=161
Сейчас всё началось с того, что я нашёл на даче плату расширения памяти для ZX81 в гараже, ржавую и в паутине. Потом я купил Тауон, потом Сизиф. Теперь со своим зрением пытаюсь паять smd :)

Ммм.. собственно, я хотел сказать, что мне интересен сейчас процесс гораздо больше, чем результат.


Кстати, я тут случайно нашёл ошибку в ПЗУ ZX81, про которую никто 40 лет не знал :):):) https://forum.tlienhard.com/phpBB3/viewtopic.php?p=51595#p51595

izzx
13.12.2021, 20:28
Обновил свою софтину AY232. Теперь умеет гонять trd в обе стороны, с сервера и на сервер.
Попутно заметил, что ESP ещё любит засыпать после простоя. Если мне не показалось. Попробую разобраться с этим.

С железным портом UART было бы легче. Тут если пакет куда-то пропал, например ESP заснула, то можно было б устроить ожидание N времени и снова послать пакет.
А сейчас клиент ждёт ответа до упора. Если бы не скорпион с его теневиком, хоть начинай приём файла заново.

Почитал немного про AZ для БК и прочих. Мощная вещь. Только там, как я понял, ESP держит WebDAV сервер, немного не такой подход. Похож на решение FYSETC, которое собирал valerium.

valerium
13.12.2021, 20:48
С железным портом UART было бы легче. Тут если пакет куда-то пропал, например ESP заснула, то можно было б устроить ожидание N времени и снова послать пакет.
А сейчас клиент ждёт ответа до упора. Если бы не скорпион с его теневиком, хоть начинай приём файла заново.

Приехали мне сегодня 2 шт 16C550CFN (plcc-корпус). Макетка давно собрана, оставалось только засунуть 1 корпус UART в панельку, но не тут-то было. Не запустилось вообще ничего, он шину данных держит в каком-то промежуточном состоянии (0,61-0,64в) и, судя по всему, не пускается генератор на 18,432МГц (собирал по схеме из даташита на все 16550, Rp=1MOhm, Rx2=1,5 kOhm, C1=15pf, C2=47pf). Осциллографа с такой полосой у меня нету, но по обеим ногам кварца в районе 0,3в догадываюсь, что генератор не взлетел.
Только уже после заметил, что в даташите на 16550Dxx кварц на 18,432Мгц упоминается, а на 16550Сxx - вообще нет, для него максимум тактовой частоты 14,9 Мгц. А у меня именно 16C550Cfn. Ну или два перемаркированных муляжа.
Почти вся схема включения 16550 под копирку взята с BaDCaT Wifi для MSX, там вроде все прозрачно. При неактивном сбросе и сигналах выборки он на ШД гадить не должен. Так что ставлю на генератор. Буду пробовать с меньшей частотой.

Serg6845
13.12.2021, 21:57
Приехали мне сегодня 2 шт 16C550CFN (plcc-корпус). Макетка давно собрана, оставалось только засунуть 1 корпус UART в панельку, но не тут-то было. Не запустилось вообще ничего, он шину данных держит в каком-то промежуточном состоянии (0,61-0,64в) и, судя по всему, не пускается генератор на 18,432МГц (собирал по схеме из даташита на все 16550, Rp=1MOhm, Rx2=1,5 kOhm, C1=15pf, C2=47pf). Осциллографа с такой полосой у меня нету, но по обеим ногам кварца в районе 0,3в догадываюсь, что генератор не взлетел.
Только уже после заметил, что в даташите на 16550Dxx кварц на 18,432Мгц упоминается, а на 16550Сxx - вообще нет, для него максимум тактовой частоты 14,9 Мгц.

это с 3.3В питания. с 5В - 16. но как-то странно - номиналы конденсаторов указаны для кварцев 1.8432 и 3.072МГц. для 18МГц 47пф выглядит многовато.


А у меня именно 16C550Cfn. Ну или два перемаркированных муляжа.


можно подать на ножку XIN частоту хоть с 6 ноги Z80 и посмотреть появится ли сигнал на XOUT. если не появится - муляж...

Kulich
04.04.2022, 19:10
А я тем временем за этот год успел купить ZXNETUSB. Карта конечно хороша, но поддерживается только недоОС и стоит денег. А вот идея с ESP подкупает своей ценой, переносимостью и совместимостью, драйвер конкретного ком порта написать относительно просто. Так что я не стал отпаивать от АТМ и ESPху )

izzx
04.04.2022, 19:40
А я тем временем за этот год успел купить ZXNETUSB.
Интересная вещь, к ней и сервер есть. Но смущает, что с проводами.


драйвер конкретного ком порта написать относительно просто. Так что я не стал отпаивать от АТМ и ESPху )
У меня теперь есть Эва. Но лень подпаиваться. Вот был бы разъём для TTL уровней, щас бы свою прогу подкрутил и опробовал. Достаточно хотя бы драйвер поменять.

Kulich
04.04.2022, 19:48
Интересная вещь, к ней и сервер есть. Но смущает, что с проводами.


У меня теперь есть Эва. Но лень подпаиваться. Вот был бы разъём для TTL уровней, щас бы свою прогу подкрутил и опробовал. Достаточно хотя бы драйвер поменять.
Да, толстый кабель мешается, норовит выдернуть карту из гнезда проца. Но у меня он стоит у стенки и не мешается сильно, а вот посреди стола уже мешался бы.
Про ТТЛ полностью поддерживаю. Но конвертер типа макс232 занедорого можно поставить, а если делать карту в слот, то там все что хочешь вертеть можно, но хочется простоты и совместимости )

izzx
05.04.2022, 14:29
Но конвертер типа макс232 занедорого можно поставить
Пример можно? Я нашёл, но там только RXD и TXD, а надо ещё RTS CTS.
https://aliexpress.ru/item/4000055222836.html?spm=a2g2w.productlist.0.0.50372 0e7bNg9h1&sku_id=10000000123041066

HardWareMan
05.04.2022, 15:13
Пример можно? Я нашёл, но там только RXD и TXD, а надо ещё RTS CTS.
У 232й 2 канала туда и два обратно. В чём проблема зацепить RTS/CTS?

izzx
05.04.2022, 16:29
В чём проблема зацепить RTS/CTS?
Значит, с выхода 232 Эвы цепляю RTS/CTS прямо на ESP?

А есть у кого пример работы с портом Кондратьева? На асме.

Kulich
05.04.2022, 17:46
Пример можно? Я нашёл, но там только RXD и TXD, а надо ещё RTS CTS.
https://aliexpress.ru/item/4000055222836.html?spm=a2g2w.productlist.0.0.50372 0e7bNg9h1&sku_id=10000000123041066

Таких и правда нет, я искал. Но есть просто платки с обвязкой на 1-2-4 канала и просто чипы отдельно, а уж прикрутить DB9 уже не проблема )

- - - Updated - - -


Значит, с выхода 232 Эвы цепляю RTS/CTS прямо на ESP?

А есть у кого пример работы с портом Кондратьева? На асме.

Напрямую вот не надо только RS232 кидать на ЕСП ) она 5в толерантна обычно, но не до такой степени чтоб от -15 до +15 выдерживать.

Пример кода, у меня есть пример кода для Кондратьева, но там я проверял его только в эмуляторе, соответственно RTS/CTS скорее всего не проверял. Ну и код там не сильно хорош )
Но по крайней мере Эмулятор Эво через него лез в Гофернет.
Честно украденный и переосмысленный код uart из Moon Rabbit by Nihirash.

https://github.com/Kulicheg/ATM_Turbo/blob/main/evo-uart.asm

izzx
05.04.2022, 18:19
У 232й 2 канала туда и два обратно. В чём проблема зацепить RTS/CTS?
А, в смысле там должны быть свободные каналы, просто не задействованы.

HardWareMan
05.04.2022, 18:20
Напрямую вот не надо только RS232 кидать на ЕСП ) она 5в толерантна обычно, но не до такой степени чтоб от -15 до +15 выдерживать.
Берём MAX3232 и запитываем её от 3,3в ESPшки, подключаем все 4 канала RXD/TXD/RTS/CTS и радуемся полноценному RS232 без проблем со стороны LVTTL.
https://i.ibb.co/r5hHsHp/image.png
В чём проблема?

Kulich
05.04.2022, 18:23
Берём MAX3232 и запитываем её от 3,3в ESPшки, подключаем все 4 канала RXD/TXD/RTS/CTS и радуемся полноценному RS232 без проблем со стороны LVTTL.
https://i.ibb.co/r5hHsHp/image.png
В чём проблема?

В том что не нужно напрямую RS232 цеплять к ESP )

izzx
05.04.2022, 19:22
Берём MAX3232
Сложновато. Плату разводить что ли надо? Я пока хочу попроще.

Но есть просто платки с обвязкой на 1-2-4 канала
А вот такой пример на 4 канала? Видел такие, входы туда-сюда, + и -.
А сразу готовое?
Но я понял, что можно доколхозить тот пример, что я приводил.

Kulich
05.04.2022, 20:29
Заколхозить тоже можно, к смд просто неудобно. Если хочется навесить все мгтф и навесом, то да для прототипа прозвонить свободные ноги чтоб они там не были на земле какой и подпаять пару проводов с одной стороны и пару с другой.
Сейчас посмотрел на этот конвертер в 4 линии, хоть на нем RX - TX написано, но судя по тому что там только транзисторы, то это простой level shifter так подписан.

reddie
05.04.2022, 20:56
это простой level shifter так подписан
Да, Макс это чисто преобразователь уровней. В древние 2000-е, лет 15 и больше назад, на них делались переходные кабели с USB для мобильников.
Поскольку тогда мобилы с USB были экзотикой, а вот компорт поддерживали почти все. У самого где-то валялось несколько таких.
Плату там разводить необязательно, при желании и МГТФ-ом можно распаять, это ж не ПЛИС на 100 ног какой-нибудь =)

izzx
05.04.2022, 21:58
https://github.com/Kulicheg/ATM_Turb...n/evo-uart.asm
А там аппаратный контроль используется?
Судя по этой строчке нет. Но это просто комментарий.
AT+UART_CUR=38400,8,1,0,0

Kulich
05.04.2022, 22:45
Я же говорю, проверял только в эмуляторе, с подключенной по USB esp8266. Поэтому если бы я на ней включил контроль, то ничего бы и не получил, а железа чтоб отладить нет. При том код этот в рамках кролика работает. Который получает и отправляет по 1 байту за раз.
Это пример как работает Кондратьев, а не готовый код для терминала или клиента.

izzx
06.04.2022, 09:51
Всем спасибо. Закажу себе такую штуку для опытов:
https://aliexpress.ru/item/1005001579670565.html?spm=a2g2w.productlist.0.0.38 6a474aZtRIge&sku_id=12000016669573600

izzx
14.03.2023, 18:12
Новая версия проги AY232K (копирование дисков TRD по сети):
v0.0.4
Больше не используется метод прямой передачи (SAVETRANSLINK):
не надо включать и выключать особый режим, не надо нажимать кнопку сброса.
Снято ограничение на количество файлов в каталоге сервера. Листается страницами по 64 файла.
Отдельный драйвер для устройства, который можно заменить.
Мелкие улучшения.

Ссылка в подписи.

Кстати, сервер от этой программы можно использовать для сетевой игры. Если какую-то игру адаптировать, то можно резаться на двух и больше спеках. Хотя бы в пределах одной домашней сетки. Вряд ли кто-то будет играть на спеке в сетевые игры, но технически сделать не проблема.

izzx
08.12.2023, 19:40
AY232K
v0.0.5
Улучшена стабильность передачи пакетов.
Добавлено копирование по одному файлу с сервера на ZX.

izzx
07.01.2024, 12:40
Попробовал запустить сервер под линуксом через wine. На удивление работает.
Версию взял бесплатную alce-2.12.46.6-17.04.2023_15.09 и поставил в виртуальной машине.

Запуск сервера в Astra Linux CE.
В менеджере пакетов Synaptic добавить пакет playonlinux (с ним поставится wine и прочие пакеты).
Скопировать exe и trd файлы в отдельную папку и запустить из терминала Fly:
wine ZXNServerK.exe
На предложение поставить пакет "wine-mono" согласиться.

gdv2002
07.01.2024, 13:18
Поженить бы это дело с ZXM-Phoenix

izzx
07.01.2024, 14:10
Поженить бы это дело с ZXM-Phoenix
Для Эво люди делали платку с ESP, которая втыкается в com порт. Наверно подойдёт, лишь бы питание подать.
Или подпаять ESP12 прямо к max232.

izzx
25.02.2025, 17:57
AY232K
2025 02 25
v0.1.0

Включена поддержка HDD (SMUCv2, SMUCv1, NemoStd, NemoA8, ATMide, PROFIide, ZC, DivMMC) с драйверами от LW.
Копирует файлы FAT32 с короткими именами.
Напрямую копировать между TRD и FAT пока не умеет.
Размер каталога FAT32 - первые 128 файлов.
Умеет:
пофайлово копировать с дискеты TRD в образ TRD на сервере и обратно,
целиком TRD с дискеты на сервер и обратно,
пофайлово с раздела FAT32 на сервер и обратно.
Переделана сетевая часть.
Адрес сервера и порт считываются из файла конфигурации.
Сервер поддерживает максимальный размер файла 65 Мбайт.
Если файл был, он перезаписывается без предупреждения!

Спасибо LW за мощные драйверы. Я, правда, использую их далеко не в полную силу.
Проверял в эмуле ГМХ и на железной Эве.
Ссылка в подписи. Потом положу на гитхаб.

izzx
20.03.2025, 13:36
2025 03 20
v0.1.3
Клиент и сервер переделаны на протокол TCP, вместо UDP.