Вход

Просмотр полной версии : УКНЦ загрузка через стык С2



Страницы : 1 2 3 [4]

randomizer
22.11.2018, 17:37
Можно разогнать до 115200 заменив кварц с 4608 на 9216 МГц одна ВП-шка у мера работала довольно продолжительное время, сильно грелась и итоге вышла из строя. Попробовал на другую приклеить теплоотвод - работает, но недолгое время, потом начинает сбоить.
В общем не все, но всё же разгоняются, и при должном охлаждении, будет работать.

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


Реальная скорость - примерно 32 кбит\с.
Хм, у меня реальная скорость как раз все 57600
А вот при скорости порта 115200, уже меньше чем предельная скорость, где-то между 80 и 90Кбит/с, но всё равно заметно быстрее чем при скорости 57600

Arix
22.11.2018, 18:21
Можно разогнать до 115200 заменив кварц с 4608 на 9216 МГц одна ВП-шка у мера работала довольно продолжительное время, сильно грелась и итоге вышла из строя.
Я уже об этом читал. Это "истинный" разгон, а при нём всё греется. Тем более, ВП-шка и так горячеватая.


Хм, у меня реальная скорость как раз все 57600
Ничего, пойдёт. Может, ещё в конфигах поковыряться.
Я засекал время копирования файлов. И сам HX Server показывает 4 с чем-то тысячи байт/с.

Теперь хотелось бы сделать и наоборот: чтобы из-под винды лазать по дискам УКНЦ. Такое возможно? Конечно, несбыточная мечта: видеть УКНЦ в "Сетевом окружении" проводника Windows. Но хотя бы косвенно, из-под эмулятора.

randomizer
22.11.2018, 21:32
Тем более, ВП-шка и так горячеватая.
Похоже что вся 1801-я серия сильно греется, причём то что стоит под клавиатурой нагревается ещё сильнее, достаточно её сдвинуть и нагрев заметно уменьшается. А вот если ещё и верхней крышкой закрыть...

Я засекал время копирования файлов. И сам HX Server показывает 4 с чем-то тысячи байт/с.
При копировании нужно учесть время записи на целевое устройство, а HXServer показывает чуть больше 5700 байт/с(в пике проскакивает и 5900).

Теперь хотелось бы сделать и наоборот: чтобы из-под винды лазать по дискам УКНЦ
Плагин для Total Commander позволяет лазать по образам.

Arix
22.11.2018, 22:11
Образы я уже все облазил :) Я имею в виду лазание по реальной УКНЦ из-под винды. Я запускаю эмулятор, например, UKNCBTL на компьютере, к которому подключен УКНЦ. Набираю DIR HXn: и вижу содержимое диска реального УКНЦ. Такое возможно? УКНЦ должен (или должна? Должно?) стать сервером. NETUK.SAV?

У меня и до 5 кб/с доходит. Красота теперь! По сравнению с "флоппинетом" здесь файлы переносятся мухой. Сегодня я решил переразметить жесткий диск в УКНЦ. Сделал бэкап данных с него за каких-то полчаса. Всё скопировал в образы на PC. Переразметил, и, ещё находясь на загрузочной дискете, вернул обратно все файлы на WD0: и загрузился с него. А потом так же быстро вернул и всё остальное.

При загрузке с С2 время автоматически устанавливается. А как сделать, чтобы при загрузке УКНЦ с жесткого диска или дискеты можно было синхронизировать время? То есть, HX Server уже запущен, я включаю УКНЦ, гружу его автономно, время автоматически берется с сервера.

form
23.11.2018, 09:20
При загрузке с С2 время автоматически устанавливается. А как сделать, чтобы при загрузке УКНЦ с жесткого диска или дискеты можно было синхронизировать время? То есть, HX Server уже запущен, я включаю УКНЦ, гружу его автономно, время автоматически берется с сервера.
Это нужно функционал в HX добавить такой :)
У меня время берется по ethernet при загрузке, а тут можно придумать через serial.
Или как вариант, сделать платку в слот сетевого адаптера с часами и читать оттуда.

Arix
23.11.2018, 11:59
по ethernet
У вас в УКНЦ ethernet заведен? Это как??

form
23.11.2018, 13:18
У вас в УКНЦ ethernet заведен? Это как??
Это не на УКНЦ. Сделать на УКНЦ в принципе можно - слот Q-Bus есть, но смысла особого нет - более-менее серьезный софт (и даже драйвер) будет слишком много памяти отъедать.
Разве что использовать исключительно для получения времени (у меня в RT-11SB/FB именно так делается).

Arix
11.08.2019, 15:06
На Алиэкспрессе продаются такие штучки:
https://ru.aliexpress.com/item/32597963995.html?spm=a2g0v.search0302.3.34.542de24 2N8DBtw&ws_ab_test=searchweb0_0,searchweb201602_0_10910_45 3_10911_454_10914_10915_10618_536_317_537_319_1005 9_10696_10084_10083_10887_10307_321_322_10065_1006 8_10301_10103_10884,searchweb201603_0,ppcSwitch_0&algo_pvid=7fae4eda-674f-41b6-b9cd-ffbe4165ffa1&algo_expid=7fae4eda-674f-41b6-b9cd-ffbe4165ffa1-4
Возможно ли вставить её между локальной сетью Ethernet и С2 УКНЦ? Ну, вставить-то возможно, будет ли работать? В первом отзыве пишут про какой-то софт, который пришлось нагуливать. Но, я так понимаю, в устройстве должен быть веб-конфигуратор. Кажется, понял, софт нужен, чтобы Windows увидела СОМ-порт на устройстве как на своём компьютере. Сейчас у меня в качестве такого переходника стоит старый ноутбук с СОМ-портом. На нём и стоит программа НХ-Сервер.

Arix
05.02.2022, 22:21
И чего это тема так заглохла? 2,5 года тишины.
Купил эту китайскую штучку. Похоже, китайцы меня жестоко кинули. Согласно инструкции, СОМ-порт у этой коробочки неполноценный, на нём только TXD, RXD и земля.
https://www.pusr.com/download/M0/USR-TCP232-302-User-Manual_V1.0.3.01.pdf - страница 5. NC - не понял, как это расшифровывается, но, думаю, ничего хорошего это не означает. Вскрыл его, на плате с внешней стороны к этим выводам ничего не подходит. Со стороны деталей - не видать. Спаял кабель без квитирования (соединив со стороны С2 3-7, 2-9). fOutxCtsFlow = FALSЕ.
При попытке открыть с УКНЦ сетевой диск - бесконечные раздумья. При попытке загрузиться -

HX 2.0 - Warm boot v1.2 176578
HX-W-Bad Packet

HX-W-Bad Packet - бесконечно повторяется.

После ресета - ничего не происходит. Чтобы что-то произошло, надо перезапустить HX-server и обязательно ресетнуть УКНЦ.
Неужели моя УКНЦ не может работать без квитирования?
Вот настройки конвертера:

https://i.ibb.co/6N3CfDf/image.png (https://ibb.co/BwXMSTS)

Hunta
05.02.2022, 23:35
NC
Not Connected

Woxem
06.02.2022, 21:33
Стоп бит 1 вроде же надо.

Arix
06.02.2022, 22:34
Так оно вообще не работало.
Для работы конвертера запускается программа USR-VCOM - виртуальный COМ-порт. Когда я запускаю HX Server, эта программа показывает режим передачи: "9600,8,N,2". 8- бит, N - No parity, и 2 стоп-бита. Я выставил в настройках конвертера 2 стоп-бита, и оно хоть что-то начало показывать. Потом я стал смотреть все конфигурационные файлы НХ-Сервера, нашёл Terminal_ComPort_Adapter.ini. Я поменял скорость на 57600. Там есть строка
StopBits = TWOSTOPBITS.
Что надо написать, чтобы сделать один? ONESTOPBITS?

Xrust
06.02.2022, 23:06
Всегда передаются 2 стоп-бита, при приеме выполняется проверка только одного стоп-бита. Принятые данные переписываются в буферный регистр и снимается готовность приемника по окончании интервала первого стоп-бита. Поэтому для надежного приема данных микросхемой 1801ВП1-065 удаленная сторона также должна передавать 2 стоп-бита.
https://github.com/1801BM1/k1801/tree/master/065

Arix
24.02.2022, 12:35
Ох, эти чёртовы китайцы! А, возможно, все -чёртовы. Дурят нашего брата везде, где только можно. Стараются сэкономить на любой мелочи. Я уже, вроде, писал, что первые попытки связи между УКНЦ и современным компьютером делал на ноутбуке через преобразователь USB-RS232. И оно работало очень медленно. Вчера узнал, что надо в диспетчере устройств зайти в свойства СОМ-порта, там можно выставить скорость. По умолчанию стоит 9600. Это я брал преобразователь у нас на работе. Хотел купить свой, но посмотрел цены - около 2000 руб. А тут увидел в Чипе с Дипом за 490 руб. Купил, где-то год назад. Недавно, когда экспериментировал с LAN-RS232, заодно попробовал и этот переходник. Так вот, ни фига УКНЦ с ним не работает. Вчера воткнул в него СОМ-овскую мышку - не определяется. Мышка рабочая, при подключении к компьютеру, имеющему родной СОМ-порт, она работает. Переходник называется usb-serial ch340. Стал смотреть информацию, он тоже урезанный! TXD, RXD, GND и всё! Да что же это чертовщина?! Зачем их делают урезанными? Откуда же мне было знать, что может быть такая засада. Я думал, что СОМ-порт - он и в Африке СОМ-порт. Иначе отнёсся бы к приобретению данных конвертеров более внимательно. Теперь, вот, научен горьким опытом.

Hunta
24.02.2022, 12:52
Так это не COM порт, это конвертер такой.
И даже у китайцев можно найти нормальные - только они на чипсете FTDI (ну или на его "аналоге")

Такой вариант был первым купленным на aliexpress - он с выходом на low TTL - покупался под DE10 - и вроде (проводки есть, но не проверял) с полным набором сигналов. Кстати, его достаточно просто доделать до RS232 - на том же ali есть конвертеры TTL-RS232. Сейчас я использую их на выходе из DE10 - и втыкаю уже в COM порты на PC.

Arix
21.05.2022, 23:48
Итак, я решил-таки победить эту коробочку.
Сейчас у меня УКНЦ соединена со старым ноутбуком Sony-Vaio, имеющим СОМ-порт. Кабель с квитированием. Скорость 57600.
Для начала я сделал так:

Разъем Разъем
Стык С2 DB9S
1,10 (102) ■─────────────── ─────■ 5 (GND)

5 (103) ■──────────┐ ┌────■ 3 (TD)
┌────■│■────┘
6 (104) ■────┘ └──────────■ 2 (RD)

3 (+5В) ■────┐ ┌────■ 4 (DTR)
│ │
7 (109) ■────┘ ├────■ 1 (CD)

└────■ 6 (DSR)

2 (108) ■────┐ ┌────■ 7 (RTS)
│ │
9 (107) ■────┘ └────■ 8 (CTS)

Работает без изменения настроек.
Затем снял перемычки на стороне РС:


Разъем Разъем
Стык С2 DB9S
1,10 (102) ■─────────────── ─────■ 5 (GND)

5 (103) ■──────────┐ ┌────■ 3 (TD)
┌────■│■────┘
6 (104) ■────┘ └──────────■ 2 (RD)

3 (+5В) ■────┐ ■ 4 (DTR)

7 (109) ■────┘ ■ 1 (CD)

■ 6 (DSR)

2 (108) ■────┐ ■ 7 (RTS)

9 (107) ■────┘ ■ 8 (CTS)
Не работает. В Terminal_ComPort_Adapter.ini везде, где было TRUE, поставил FALSE. Работает.
Попробовал менять fDtrControl и fRtsControl, если хоть где-либо поставить disable, УКНЦ не грузится. Надо или enable, или handshake. Непонятно, зачем это включать, если данные линии не задействованы?

Затем я подключил УКНЦ к современнному ноутбуку через адаптер USB-COM этим же кабелем с теми же настройками HX Server. Не работает. Помучался, перешёл к конвертеру Ethernet-COM. При попытке загрузиться на УКНЦ появляется первая строка загрузчика, что-то там, "WARM BOOT...", потом бесконечные сообщения "HW-Bad packet". Я попробовал играться с конфигом, это ничего не дало. Потом УКНЦ вообще перестала как-либо реагировать. Я перешёл на ноутбук, с которого я пытался загрузить УКНЦ через USB-COM, т.к. он стоит рядом с нею. И там ничего не получалось. Потом меня осенило: на конвертере ком-порт - гнездо, а не вилка, как на компьютерах. Может, там RxD и TxD поменяны местами? Глянул инструкцию - ну точно! Уже забыл об этом. Видимо, первый раз я "ошибся" и воткнул проводочки "неправильно", а на самом деле, правильно, вот, УКНЦ что-то и показывала. Переткнул провода - всё равно ничего.

Я стал читать эту тему с самого начала. Наткнулся на это:

Сначала надо проверить, принимают ли приёмники обеих сторон то, что передаёт другая сторона.

Можно запустить на PC любую терминалку, настроенную на работу с используемым COM-портом, а на УКНЦ - смотреть в пульте содержимое регистров С2: 176570 - 176576

Если нажать клавишу в окне терминалки на PC - в регистре состояния приёмника С2 ( 176570 ) должен установиться признак готовности, а в регистре данных ( 176572 ) - появиться код нажатой клавиши.

Если же записать ASCII-код в регистр данных передатчика С2 ( 176576 ) - этот же символ должен появиться в окне терминалки на PC.
Коды клавиш, нажимаемых на РС, в регистре 176572 появляются. Ура! А в обратную - нет.


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

Что-то здесь не вставляется цитата. Но при редактировании сообщения она есть.
https://zx-pk.ru/threads/16001-uknts-zagruzka-cherez-styk-s2.html?p=847144&viewfull=1#post847144


Начать лучше с проверки качества связи.

1. Открыть в пульте адреса регистров С2 ( 176570, 176572, 176574, 176576 ) и убедиться, что они присутствуют на шине.

2. Ввести в пульте следующий код :

Код:

@1000/10037
@1002/176576
@1004/775


3. Код непрерывно выводит содержимое R0 в порт передатчика С2 - занести в R0 код буквы A и запустить программу с адреса 1000 :

Код:

@R0/000000 101
@1000G

Результатом должен стать приём на PC непрерывной последовательности букв 'A'.
Сделал - на РС никакой реакции. Однако, я заметил, что на конвертере огонёк в разъеме RJ-45 быстро мигает. Нажимаю СТОП на УКНЦ - мигание прекращается. При заносе кода в регистр 176576 этот огонек кратковременно вспыхивает. Я захожу в веб-интерфейс конвертера, смотрю статистику, счетчик переданных и принятых байтов увеличивается. То есть, от УКНЦ до конвертера данные доходят, а до РС - нет. Моё сообщение 759 на предыдущей странице, скрин настроек конвертера: Remote server addres. Там указан адрес моего стационарного компьютера. Вот, на него с УКНЦ данные и идут, а их там никто не ждёт. Поменял IP на IP ноута - при заносе кодов в 176576 буквы во вкладке Teletype стали появляться. И при запуске этой программки из пульта УКНЦ буквы А побежали. Второе "Ура"!

Теперь пробую загрузку - опять HW-W-Bad packet. Кстати, почему pAcket? Ведь "пакет" по-английски - pOcket. Читаю тему дальше. Предлагаются тестовые Boot_RT-11_from_HX0_(176570).bin. Запускаю с ними - пишет "Timeout". По HX Log видно, что мелкие пакеты идут, а большие, по 16 с чем-то кБ - не проходят.

Hunta
22.05.2022, 00:07
Кстати, почему pAcket? Ведь "пакет" по-английски - pOcket.
Пакет - это именно packet, а pocket - это карман

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


Теперь пробую загрузку - опять HW-W-Bad packet.
Или кто то за кем то (скорее всего УК-НЦ за PC) не успевает или просто банально скорость для -065-той в УК-НЦ велика.

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

Если нет аппаратного (DTR, ЕМНИП) или программного (обычно ^S ^Q) уповещение передающей стороны, что не успевают обрабатывать - вполне возможно первое

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

У меня на паре - FTDI <-> DE10 (то есть ОЧЕНЬ быстрый проц) вполне нормально работает на 115200, а если плата с T-11 - на 38400 дурит, а с F-11 - норм (на обеих платах набортный uart выше не даёт)

Arix
22.05.2022, 08:59
Со старым ноутбуком УКНЦ прекрасно работает на скорости 57600 с той же распайкой кабеля, т.е. без квитирования и без перемычек со стороны РС. Значит, для УКНЦ скорость нормальная и она за РС успевает. А с конвертером LAN-COM не получается. Конвертер тормозной? Неохота лезть в УКНЦ и перепаивать перемычки...

Не могу найти тег OFF. Пришлось применить спойлер.

Пакет - это именно packet, а pocket - это карман
Да, точно. Видимо, до этого я никогда не встречал слова packet через а.

Hunta
22.05.2022, 10:51
Со старым ноутбуком УКНЦ прекрасно работает на скорости 57600 с той же распайкой кабеля

А с конвертером LAN-COM не получается
Ответ, по моему, очевиден - проблема в конвертере.

От себя добавлю (но это мысли на основе теории, так как у меня ковертеров COM-Etnernet нет).

Для начала я бы попробовал задействовать аппаратное квитирование.

Кроме того, нужно помнить, в отличии от чистого последовательного канала, где для передачи байта нужно будет минимум 10 бит, в случае (чистого) Ethernet нужно 576 бит, то есть скорость уже на этом падает почти в 58 раз, а если ещё используется и что то более высокоуровневое (лень искать в теме, так что пусть будет тоже как теория) типа IP - то минимальный пакет будет (ещё плюс 160 бит) 736 бит, а если ещё более высокоровневое (типа TCP, будем надеется что на ещё более высокий уровень - типа http или telnet - софт конвертера не лезет) - то ещё и служебные байты и трафик. И всё это не добавляет скорости. Да, на чистом Ethernet получается вполне неплохо - для скорости 100 мбит - реальная скорость падает до (грубо) 2 мбит, то есть по идее должно вполне справится с 57600, только вот что там и насколько хорошо реализовано в конвертере - кто его знает

Arix
22.05.2022, 18:47
Для начала я бы попробовал задействовать аппаратное квитирование.
Это невозможно. У конвертера нет этих линий, только RxD и TxD.

Ну что же, так и придётся лезть в УКНЦ с паяльником и пробовать её притормозить.

Я заметил две вещи. Изменение скорости в Terminal_ComPort_Adapter.ini ни на что не влияет. Влияет только при её изменении в настройках конвертера. На компьютере же со своим СОМ-портом - влияет. При работе через данный конвертер, если после начала загрузки закрыть HX Server, УКНЦ продолжает выдавать сообщения HX-W-Timeout, на конвертере мигает индикатор активности. Прекращает только после выключения конвертера. Если же закрыть HX Server га компьютере с СОМ-портом, загрузка на УКНЦ останавливается и никаких сообщений больше нет.

Hunta
22.05.2022, 18:59
Это невозможно. У конвертера нет этих линий, только RxD и TxD.
Если на ноуте есть usb порт - может стоит купить нормальный конвертер?


Изменение скорости в Terminal_ComPort_Adapter.ini ни на что не влияет. Влияет только при её изменении в настройках конвертера.
Значит, соотвествующий интерфейс этот типа COM порт не реализует

Arix
06.06.2022, 22:19
Да как же его понять, насколько он нормальный... Да, проблема в самом конвертере. Я соединил через него два РС - такая же ерунда. В Гипертерминале нажимаешь клавиши, на другом компьютере эти буквы печатаются. Но файлы не передаются. Надо сначала добиться нормальной работы на РС, если это возможно (:) ). Я сейчас в командировке, пока эксперименты приостановлены.

Hunta
06.06.2022, 23:46
Да как же его понять, насколько он нормальный
Вот такие https://www.chipdip.ru/product/vscom-usb-com-mini у меня работает без проблем. По крайне мере до 115200, выше не проверял из за особенностей HX сервера. И вот почти такой https://www.chipdip.ru/product/usb2-8com-m-cbl (только у меня 16-ти портовка) - тоже без проблем до 115200. И ещё один, то же на основе чипа FTDI, купленный на али - тоже без проблем до 115200. Но насчёт китайских поделок, как я понимаю - как свезёт.

BlaireCas
24.06.2022, 00:04
банально скорость для -065-той в УК-НЦ велика
This.

А вообще если про скорости выше 57600 для -065-й это вообще как?
Я на своей СЭМЗ-овой запарился (учитывая скиллы паяльника) подтягивать и опускать ее (-065-й) ноги для выставления 57600 для загрузки через HХ. На этой скорости кстати ну в-принципе окей работает.
Конвертер USB-RS232 (не то чтобы прям обычный, не знаю какой из них обычный). FTDI что-то там.
Провод с замыканиями "на себя" контрольных сигналов.

Hunta
24.06.2022, 08:06
А вообще если про скорости выше 57600 для -065-й это вообще как?
Кварц удвоенной частоты

Alex
24.06.2022, 09:32
В -65й есть возможность тактировать внешней произвольной частотой. Соответственно скорость либо выбирается из стандартного ряда, либо определяется произвольной частотой.
У -65й есть флаги(2 шт. На вход и выход, подключать либо на RTS+CTS, либо на DTR+DSR), кои работают аппаратно, в отличии от 35-й, в итоге -65я может с ними работать, своеобразно правда,
то 35-я обладает только одним(на вход)... И его можно использовать только лишь на определение того(в случае пары 35-й), воткнут ли кабель или входной однобитный порт :)
Аппаратные особенности -65й вытягиваются за счёт протокола программного обмена. Видел обмен не только с PC, но и с компьютерами ЯМР-спектрографов BRUKER. Причём эти компьютеры(благо диски были по тем временам большими) могли работать в качестве серверов для загрузки ДВК. Файлы изначально между разными системами вполне таскались сначала Кермитом, но это было медленно ... Потом написали свои программы.

BlaireCas
24.06.2022, 10:31
Кварц удвоенной частоты

В -65й есть возможность тактировать внешней произвольной частотой
Ну вот это уже шаманство какое-то :)

На всякий случай продублирую программку которая ЯКОБЫ должна менять скорость последовательного интерфейса в УКНЦ (программно!).

Сразу скажу - добиться желаемого программно либо не удалось. Либо удалось - но мой FTDI не понял изменений скорости "на лету". Либо кабель не тот (либо еще чего).
Пробовал ее со всякими изменениями - самое интересное что что-то происходит! То-есть вроде даже что-то меняется, но надо было сидеть видимо с прибором и мерять напряжения/частоты на выводах КР1801ВП1-065 в зависимости от того как периферийный процессор пишет в ячейки 177704 177700 (они в периферийном процессоре вроде как "резерв" описаны)
Тем не менее кто-то эту программу писал и явно оно когда-то работало!


.Title rs232 test
.ident /v01.00/
.mcall .ttyin .ttyout .exit .print .scca

jsw = 44
exchr = 3
reptch = 5
speedc = 11
nrept = 100.

int = ^b1000000
ready = ^b10000000
ovf = ^b1000000000000
err = ^b1000000000000000

break = ^b1
test = ^b001

rxrs = 176570
rxrd = rxrs+2
rxvec = 370
txrs = rxrd+2
txrd = txrs+2
txvec = rxvec+4


.macro mput adrmp
jsr r2,mput$
.word adrmp
.endm
rsk2 = 176674
rdk2 = rsk2+2



start: .print #prom1
.scca #area,#adrsc
bis #10100,@#jsw
mov @#rxvec,oldrxV
mov @#txvec,oldtxV
mov #rxloc,@#rxvec
bis #int,@#rxrs

; br .

1$: mov #1,r1
.ttyin
cmpb r0,#speedc
bne 11$
call setspd
br 1$
11$: cmpb r0,#exchr
beq exit$
cmpb r0,#reptch
bne 2$
.ttyout #64.
movb #reptch,r0
mov #nrept,r1
2$: tstb @#txrs
bpl .-4
movb r0,@#txrd
sob r1,2$
cmpb r0,#reptch
bne 1$
.ttyout #65.
.ttyout #12
.ttyout #15
br 1$

exit$: mov oldrxv,@#rxvec
mov oldtxv,@#txvec
bic #int,@#rxrs
.print #ex.ok
.exit

rxloc:
bit #ready,@#rxrs
beq 10$
movb @#rxrd,r0
cmpb r0,#reptch
beq rxloc
cmpb r0,#exchr
beq exit$
.ttyout
bit #ovf,@#rxrs
beq 1$
.ttyout #177
inc errovf
1$:
bit #err,@#rxrs
beq 10$
.ttyout #177
inc errpar
br rxloc
10$: rti

; Подпрограмма перемещения в К2 адреса МП
mput$:
call 5$ ; Подождем готовности К2
1$: call 4$ ; Вытолкнем в К2 первые 2 байта адреса
cmp r2,#2$ ; Байты завершения переданы ?
beq 3$ ; ..да - перейдем к проверке ответа
clrb @-(r2) ; Очистим байт ответа
jsr r2,1$ ; Передадим 2 байта завершения 377
.word -1 ; Байты завершения
2$: tstb @(r2)+ ; Проверим ответ
3$: rts r2 ; Выйдем в основную программу (или на 2$)
4$: mov pc,-(sp) ; Обеспечим повторный вход
movb (r2)+,@#rdk2 ; Передача байта в К2
5$: tstb @#rsk2 ; Ожидание готовности К2
bpl 5$
return ; выход [ 20 слов ]



SETSPD:
.print #lspd
.ttyin
sub #'A,r0
bmi retbad
cmp r0,#12.
bgt retbad
movb valspd(r0),spd.pm
mov r0,r1
mul #14.,r1
add #sspd,r1
mov #10.,r2
mov #str.pm+1,r0
movb (r1)+,(r0)+
sob r2,.-2
mput mp.put
mput mp.exe
.print #clrstr
return
retbad:
.ttyout #7
.print #clrstr
return
;spd.pm: .word 0
pp.beg:
spd.pm = .+2
mov #0,@#177704
bis #400,@#177700
bic #400,@#177700
mov pc,r0
add #str.pm-.,r0
mov r0,xxx
emt 52
xxx: .word 0
return
str.pm: .byte 1.
.blkb 10.
.byte 0
.even
pp.end:

mp.put: .byte 0,20,32,0
.word 1100
.word pp.beg,<pp.end-pp.beg>/2


mp.exe: .byte 0,30,32,0
.word 1100



.word 111111
errpar: .word 0
errovf: .word 0
area: .blkw 2
adrsc: .word 0
oldrxv: .blkw 1
oldtxv: .blkw 1

prom1: .ascii / ╙╣╣╣╣╣╣╣╣╣╣╣╣╣╣╣ ╣╣╣╣╣╣╣╣╣╣╣╣╣╣╣ё/<15><12><33><'K>
.ascii / ╥ rs232 test started ╥/<15><12>
.ascii / ╥ ^C - Exit ╥/<15><12><33><'K>
.ascii / ╥ ^E - move 100. chars to C2 ╥/<15><12><33><'K>
.ascii / ╥ <tab> - set speed ╥/<15><12><33><'K>
.ascii / ╕╣╣╣╣╣╣╣╣╣╣╣╣╣╣╣ ╣╣╣╣╣╣╣╣╣╣╣╣╣╣╣╧/<15><12><33><'K>
.byte 200
ex.ok: .ascii <15><12>/Exit OK/
.byte 33,'K,0
clrstr: .byte 15,33,'K,200
lspd: .byte 12, 15
sspd: .ascii / A - 50 /<15><12><33><'K>
.ascii / B - 75 /<15><12><33><'K>
.ascii / C - 100 /<15><12><33><'K>
.ascii / D - 150 /<15><12><33><'K>
.ascii / E - 200 /<15><12><33><'K>
.ascii / F - 300 /<15><12><33><'K>
.ascii / G - 600 /<15><12><33><'K>
.ascii / H - 1200 /<15><12><33><'K>
.ascii / I - 2400 /<15><12><33><'K>
.ascii / J - 4800 /<15><12><33><'K>
.ascii / K - 9600 /<15><12><33><'K>
.ascii / L - 19200/<15><12><33><'K>
.ascii / M - 57600/<33><'K><15><12>
.ascii /Установите скорость : /<33><'K><200>
valspd: .byte 5,4,7,6,1,0,3,2,15,14,17,16,11
.end start


Собственно интересный момент вот тут, который выполняется в периферийном процессоре УКНЦ (остальное это обвязка в ЦП и пересылка куска кода в ПП)

pp.beg:
spd.pm = .+2
mov #0,@#177704
bis #400,@#177700
bic #400,@#177700


Ну и до кучи ссылка на пост с описанием КР1801ВП1-065 чтобы кто-нибудь долго не искал как поставить нужную скорость.
https://zx-pk.ru/threads/12945-tekh-opisanie-na-kr1801vp1-065/page2.html

Alex
24.06.2022, 14:23
Сообщение от Alex
В -65й есть возможность тактировать внешней произвольной частотой
Ну вот это уже шаманство какое-то
Не шаманство, штатно предусмотренный режим работы разработчиками :)
Но вот конкретно реализации не знаю ни одной :(
Хорошо, что Vslav произвёл вскрытие -65й.
Эту странность работы с флагами - знать бы тогда ... :)
Точнее догадки были, что там что-то не так, но это были гнусные домыслы и измышления, да ещё не исключался тупо брак... :)
И в однотомнике(первое издание) было прописано FR3-0, что при каком-то сочетании помеченной Vslav, как "Останов" использовался внешний источник тактовой частоты, который и задавал произвольную скорость обмена.
Но возможно, что это была ошибка в книге(скорее всего добросовестное заблуждение, такие данные дали), я Vslav более верю :)
По поводу установки скорости, в программе закомментированно:
;spd.pm: .word 0
Да и в инструкции на УКНЦ не заявлено изменение скоростей...
Вообще - надо схему смотреть... Чтобы понять куды там FR0-3 подведены....

Xrust
24.06.2022, 18:38
В -65й есть возможность тактировать внешней произвольной частотой. Соответственно скорость либо выбирается из стандартного ряда, либо определяется произвольной частотой.
Ничего не понял. Разве не в любом случае -065 тактируется произвольной внешней частотой? FR3-0 только определяют коэффициент деления.

BlaireCas
24.06.2022, 19:22
По поводу установки скорости, в программе закомментированно:
;spd.pm: .word 0
Да и в инструкции на УКНЦ не заявлено изменение скоростей...
Вообще - надо схему смотреть... Чтобы понять куды там FR0-3 подведены....
Для квантовой УКНЦ оно кажется непригодно вообщем. Там вроде по схеме тупо на землю или +5В через перемычки.

Однако на схеме СЭМЗ немного иначе..
https://i.imgur.com/5QxhjlR.png
У меня как-раз СЭМЗовая железка и эта программка что-то делает.

Alex
27.06.2022, 09:38
Смотреть надо что такое регистр D24, и откуда данные на него приходят...
Судя по схеме, через него может задаваться скорость.
Но сама программка - недописана :(
То есть меню выбора скорости есть, а вот далее :(
Это адресное пространство периферийного процессора:
177700 - регистр состояния клавиатуры
177702 - скан код клавиатуры
177704 - отмечен как РЕЗЕРВ, ФОРМИРУЕТСЯ СИГНАЛ "СИП"
- возможно тут собака и порылась ... Но без схемы что-то сказать сложно :(
177710 - программируемый таймер...

1515ХМ1-031 - надо смотреть, как я подозреваю, но это всё мои гнусные домыслы и измышления ;)

max232cpe
21.04.2023, 20:09
В укнц производства "Квант" стык 2 какое имеет соответствие выводам компорта?

103 TxD
104 RxD
107 CTS
108 RTS
109 DSR

Или я что-то путаю???

BlaireCas
23.04.2023, 18:41
Они должны быть одинаковые что Квант что СЭМЗ.
Если нужно кабель собрать для загрузки со стык-С2 - да вот такой пойдет что от копипасты ниже.
Всякие RTS CTS там сто лет не нужны, работает нормально по шлейфу 3метра на скорости 57600 (ну мне пришлось подтягивать у микросхемы выводы нахально на 0 и +5В для выставления скорости 57600 ибо СЭМЗ, а в КВАНТе перемычки есть заранее)

Если верить описанию прототипа УКНЦ (есть на www.emuverse.ru) то будет как-то так:


ТАБЛИЦА 47

----------------------------------------------------------------
НОМЕР КОНТАКТА!ОБОЗНАЧЕНИЕ! НАИМЕНОВАНИЕ И НАЗНАЧЕНИЕ СИГНАЛА
!СИГНАЛА !
--------------+-----------+------------------------------------
1 ! 102 !ЦЕПЬ 102, СИГНАЛЬНОЕ ЗАЗЕМЛЕНИЕ
2 ! 105 !ЦЕПЬ 105, ЗАПРОС ПЕРЕДАЧИ
3 ! 108 !ЦЕПЬ 108, ОКОНЕЧНОЕ ОБОРУДОВАНИЕ
! !ДАННЫХ ГОТОВО
5 ! 103 !ЦЕПЬ 103, ПЕРЕДАВАЕМЫЕ ДАННЫЕ
6 ! 104 !ЦЕПЬ 104, ПРИНИМАЕМЫЕ ДАННЫЕ
7 ! 109 !ЦЕПЬ 109, ДЕТЕКТОР ПРИНИМАЕМОГО
! !ЛИНЕЙНОГО СИГНАЛА
8 ! 107 !ЦЕПЬ 107, АППАРАТУРА ПЕРЕДАЧИ ДАНН-
! !НЫХ ГОТОВА
9 ! 106 !ЦЕПЬ 106, ГОТОВ К ПЕРЕДАЧЕ
10 ! 102 !ЦЕПЬ 102, СИГНАЛЬНОЕ ЗАЗЕМЛЕНИЕ
-----------------------------------------------------------------





А мне удалось купить МС9022.02 которые в СЭМЗ ставили.

опробовал шнурок без квитирования с такой схемой


Разъем Разъем
Стык С2 DB9S
1,10 (102) ■─────────────── ─────■ 5 (GND)

5 (103) ■──────────┐ ┌────■ 3 (TD)
┌────■│■────┘
6 (104) ■────┘ └──────────■ 2 (RD)

3 (+5В) ■────┐ ┌────■ 4 (DTR)
│ │
7 (109) ■────┘ ├────■ 1 (CD)

└────■ 6 (DSR)

2 (108) ■────┐ ┌────■ 7 (RTS)
│ │
9 (107) ■────┘ └────■ 8 (CTS)

загрузилось.

Интересно другое, что при fRtsControl = RTS_CONTROL_HANDSHAKE не передается "@" в РС и загрузка не начинается.

Alex
24.04.2023, 08:39
Прежде всего у 65-й прошивки всего два флага, по одному на вход и выход...
Надо схему смотреть, какие и как флаги используются.
65-я про всё богатство заявленное и не ведает.
Варианта два, либо сигналы флагов объединены мелкой логикой в один,
либо часть этих флагов идёт мимо 65й прошивки.

BlaireCas
21.06.2023, 15:37
Чтобы избавиться от старого советского блока питания - купил такую вот штуку: TMH0512D TRACO POWER (https://www.tme.eu/en/details/tmh0512d/dc-dc-converters/traco-power/)
Вроде как конвертер 5В -> +/- 12В 80mA
Ну так вот - в итоге оно превратилось в +16В и -8В при подсоединенном штеккере стыка-С2.
С моим ком-портом обычного компьютера вполне работает, загрузка через HX идет, волшебный синий дымок не пошел. Но смущают такие напряжения. (хотя в разнице они и дают 24В)

Это я просто к тому что видимо "не все йогурты одинаково полезны" :)

max232cpe
21.06.2023, 15:48
Самое оно это блок питания от двд плееров, там +5 3-5а и + -12в до 1а
И купить двд можно за 100-300р

https://cdn.discordapp.com/attachments/622806098851790849/1121059634703253604/IMG_20230621_175012.jpg

BlaireCas
26.06.2023, 00:15
Опытным путем удалось выяснить что если кто-то начнет закидывать ровно 512 байт в стык-С2 и причем этот стык будет не железным, а скажем-так факапным усб-уарт. То часть байт не закинется. Виноваты какие-то буфера. Я не знаю как сделал Патрон свой HX сервер (поскольку он у него работает даже с лажовыми нежелезными этими вещами навроде ftdi микросхемы) - вообщем помогло закидывание банального килобайта дописав под конец кучу нулей (код УКНЦ не переварит все-равно больше 512 байт, то-есть блока).

Alex
26.06.2023, 00:25
Самый простой способ - сделать задержку между отправленными символами...
Потом, как зальётся загрузчик - можно использовать протокол свой.

Hunta
26.06.2023, 09:00
даже с лажовыми нежелезными этими вещами навроде ftdi микросхемы
ftdi весьма приличная микросхема - у меня с ней вообще проблем нет - как при работе FPGA варианта uart, так и при работе всяких последовательных портов от железных PDP-11 (LSI, F11, J11 и ВМ3 (-065) плат), а на стороне PC был не только Патроновский VT52 и HX, но эмулятор TU58, который я переписал с C на C# и где модуль работы с COM портом точно не Патроновский

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

Поправка. Если это оригинальные ftdi, а не китайское вольное сочинение на тему ftdi - с ним (по отзывам, у меня только один ковертер с подозрением на то, что не оригинальный) может быть всё, что угодно.

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


вообщем помогло закидывание банального килобайта дописав под конец кучу нулей
И сразу вопрос - если

часть байт не закинется
то что прилетит на сторону УК-НЦ при закидывании килобайта??

Alex
26.06.2023, 09:22
ежели "китайское вольное сочинение на тему ftdi"
То да, результат трудно предсказуем ... А уж закидывать нули, это вообще неправильно :(
Данные из буфера должны уходить вне зависимости от того, сколько там байт осталось.

Alex_K
26.06.2023, 10:03
вообщем помогло закидывание банального килобайта дописав под конец кучу нулей (код УКНЦ не переварит все-равно больше 512 байт, то-есть блока).
Я уже написал в соответствующем ТГ-канале, что так делать нельзя.


то что прилетит на сторону УК-НЦ при закидывании килобайта??
Если кабель без квитирования, т.е. без поддержки CTS/RTS и в DCB-блоке соответствующие настройки, то стандартный загрузчик примет 512 байт, запустит их. А остальные 512 будут лететь в буфер 1801ВП1-065, но т.к. их никто не считывает, то будет стоять бит переполнения в регистре статуса.
В случае кабеля с квитированием и соответствующими настройками, УКНЦ примет 512 байт, запустит загрузчик. А вот программа, посылающая килобайт, будет ждать готовности от стыка С2, а его не будет.

Hunta
26.06.2023, 10:07
Если кабель без квитирования..
В случае кабеля с квитированием и соответствующими настройками...
Это всё понятно и всё это прошёл на практике - причем - в процесс создания uart-а и реализации чего-то по мотивам KL11.
Просто товарищь написал - кидаем 512 байт данных, потом 512 нулей и.. типа всё будет тип-топ?? Ню ню.

Alex
26.06.2023, 10:29
Если надо кидать нули, значит буфферизация в чипе - не работает ...

Hunta
26.06.2023, 10:48
Если надо кидать нули, значит буфферизация в чипе - не работает ...
А типа нули чип будет игнорировать??

AlexG
26.06.2023, 11:46
Чтобы избавиться от старого советского блока питания - купил такую вот штуку: TMH0512D TRACO POWER (https://www.tme.eu/en/details/tmh0512d/dc-dc-converters/traco-power/)
Вроде как конвертер 5В -> +/- 12В 80mA
Ну так вот - в итоге оно превратилось в +16В и -8В при подсоединенном штеккере стыка-С2.
С моим ком-портом обычного компьютера вполне работает, загрузка через HX идет, волшебный синий дымок не пошел. Но смущают такие напряжения. (хотя в разнице они и дают 24В)
Это я просто к тому что видимо "не все йогурты одинаково полезны" :)
Сии девайсы(подобного класса БП) имеют "чудное"(не сильно очевидное свойство) - они без нагрузки НЕ работают. Обычно просят нагрузку от 10% от номинала. "Этот" возможно потребует от 20%.

BlaireCas
26.06.2023, 12:26
Просто товарищь написал - кидаем 512 байт данных, потом 512 нулей и.. типа всё будет тип-топ?? Ню ню.
Я понимаю что это "кривота" и так видимо делать нельзя. Скорей-всегда какая-то буферизация в виндузе работает, пока не разобрался где ее отключить или как сделать flush этому буферу.

Hunta
26.06.2023, 12:32
Я понимаю что это "кривота" и так видимо делать нельзя. Скорей-всегда какая-то буферизация в виндузе работает
Добраться до УК-НЦ сейчас мне тяжело, так что пока про УК-НЦ ничего не скажу.
В других же случаях ещё на было случая, что бы эта буферизация (и не в Windows, а в железе, скажем, у моих FTDI стоит умолчание - 4096 байт) как-то мешала.


где ее отключить
В настройках COM порта


или как сделать flush этому буферу
Я так понимаю, что что-то самописное используется для общения с УК-НЦ через COM порт?

Alex_K
26.06.2023, 13:00
BlaireCas, а учитывая, что у вас COM через USB, можете опробовать мою утилитку загрузки? Это тот же UkncComSender, только с другим загрузчиком и параметром для скорости. Мой загрузчик учитывает тайм-аут и считает контрольную сумму. Если что не так, то на экране будет вывод, что произошла ошибка. На железном порту всё прекрасно, но учитывая, что USB плюётся пакетами, не будет ли ошибки тайм-аута.
Вызов: UkncComSender COM-порт FileName [BaudRate]. Третий параметр необязательный, по умолчания 9600. В вашем случае надо 57600.

Актуальная версия дальше по теме.

BlaireCas
26.06.2023, 13:01
Я так понимаю, что что-то самописное используется для общения с УК-НЦ через COM порт?
Со стороны УКНЦ стандартный загрузчик из ПЗУ. Он банально грузит 512 байт по адресам 0-777 и если первый код = nop - то запускает прямо с адреса 0.
Со стороны ПК юзается софт Никиты (https://github.com/nzeemin/ukncbtl-utils/blob/master/UkncComSender/UkncComSender.cpp, понятно с некими уже моими модификациями ибо мне не надо грузить .sav, а только загрузить 512 байт)

Hunta
26.06.2023, 13:12
Со стороны УКНЦ стандартный загрузчик из ПЗУ
Это понятно


Со стороны ПК юзается софт Никиты
Ну вот в нём и надо разбираться - раз из эмулятора Патрона всё норм

BlaireCas
26.06.2023, 13:17
можете опробовать мою утилитку загрузки?
Ваша версия "почти прокатила" :) Выдало
Loading...
?UKNCMSN-F-Timeout

(я так понимаю просто после загрузчика шел payload и поэтому загрузчик-то полностью забросился, а вот сам файл уже недошел, тут похоже правда какая-то проблема с буферизацией и последние сколько-то байт у меня из винды недоходят)

Alex_K
26.06.2023, 13:20
Loading...
?UKNCMSN-F-Timeout
Ясно. Вот из-за USB-COM видно и вышло. Наверное тайм-аут надо увеличивать или убирать его.

А на каком файле, какого объёма?

BlaireCas
26.06.2023, 13:27
А на каком файле, какого объёма?
Файлик довольно простенький, 1024 байта (впрочем я разные пробовал).
79051

Alex_K
26.06.2023, 13:36
Файлик довольно простенький, 1024 байта (впрочем я разные пробовал).
79051
Попробуйте загрузить Замок Гоблинов, файл довольно большой, как раз хорош для теста.

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

Попробую увеличить тайм-аут, потом выложу новую версию.

BlaireCas
26.06.2023, 14:04
Попробую увеличить тайм-аут, потом выложу новую версию.

Похоже помогла вот такая шляпа под конец программки!


::Sleep(2000);
::FlushFileBuffers(hComPort);
::PurgeComm(hComPort, PURGE_RXCLEAR);
::PurgeComm(hComPort, PURGE_TXCLEAR);

Внимание! Sleep - важен перед flush. Точного значения сколько "спать" я не определил. Поставил на глаз.

(откуда узнал про sleep - нууу.. гуглением)


I think I figured it out. For some reason, I need to add a delay before flushing. These two lines added before returning fd seem to have done the trick:

sleep(2); //required to make flush work, for some reason
tcflush(fd,TCIOFLUSH);

--- оттуда-же ---


The cause of this problem lies in using a USB serial port. If you use a regular serial port, you will not have this problem.

Most USB serial port drivers don't support flushing properly, probably because there's no way of knowing if there's still data in the internal shift register, FIFO or in the USB subsystem.

See also Greg's reply to a similar problem reported earlier here.

Your sleep may cure the problem, but it's only a work-around. Unfortunately there is no solution other than using a regular serial port.

Hunta
26.06.2023, 14:24
Можно в начале расскоментировать .asect и .=0, после строчки PPUEND: добавить


.BLKB ^O<1000>-.

И собрать командой

link/nobitmap/stack:0/top:1000 TSTCLR

1000 из .BLKB ^O<1000>-. должна быть синхронизирована с 1000 из /top:1000

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

tcflush (и по идее FlushFileBuffers) - это НЕ ОЖИДАНИЕ передачи всего буфера, а его СБРОС

"tcflush() — Flush input or output on a terminal

Flushes input data that has been received by the system but not read by an application.

Flushes output data that has been written by an application but not sent to the terminal."

И, похоже (Sleep(2000) намекает), проблема банальна - в буфере на com порт ещё есть что-то для передачи, а программа уже завершилась и windows СБРАСЫВАЕТ все буфера для COM порта или же это делают вот эти два вызова

::PurgeComm(hComPort, PURGE_RXCLEAR);
::PurgeComm(hComPort, PURGE_TXCLEAR);

если они были в первоначальном варианте

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

И ещё комментарий по тексту загружаемого. Если закомментить


.asect
.=0

То программа будет собрана с адреса 1000 и при загрзуке её с адреса 0 работать, по идее, не будет - много абсолютных ссылок, типа:


mov #PPUSTA, R4 ; run PPU code
...
PPMSG: .word PPARR ; address of beginning of array
...
PPSEN: mov #PPMSG, R0 ; array address

BlaireCas
26.06.2023, 14:24
::PurgeComm(hComPort, PURGE_RXCLEAR);
::PurgeComm(hComPort, PURGE_TXCLEAR);

если они были в первоначальном варианте

Не :) Это "мое" уже дополнение. В первоначальном варианте просто было закрытие файла порта да и все. (::CloseHandle(hComPort);)
Это я уже развлекаюсь так-сказать. Но sleep действительно помог.

Hunta
26.06.2023, 14:29
Но sleep действительно помог.
С его помощью идёт ожидание в лоб завершения процесса передачи. Теперь понятно, почему 512 нулей в конце так же помогли - забили буфер windows и/или com порта, а пока оно пыхтит в процесс переноса их от проги в буфер - нужная инфа (первый 512 байт) гарантированно ушли в УК-НЦ

BlaireCas
26.06.2023, 14:31
::PurgeComm(hComPort, PURGE_RXCLEAR);
::PurgeComm(hComPort, PURGE_TXCLEAR);

если они были в первоначальном варианте

Не :) Это "мое" уже дополнение. В первоначальном варианте просто было закрытие файла порта да и все. (::CloseHandle(hComPort);)
Это я уже развлекаюсь так-сказать. Но sleep действительно помог.


Если закомментить
Оно собственно и закомменчено для РТ-11. Савка-то работает для системы.
Если раскомментить - то это вариант для загрузки по адресу 0, там правда чет с ПП накосячено, но это мелочи, код в него грузится и даже исполняется.

Hunta
26.06.2023, 14:32
В общем, надо разбираться с Windows API - как ДОЖДАТЬСЯ опустошения буфера. По хорошему - и Windows и COM порта, так как я не уверен, что Windows не сбрасывает COM порт, если программа, которая его использовала - вызвала функция закрытия хендла com порта или не завершилась.

И понятно, почему и у Патрона и у меня всё работает - и там и там приложение класса Сервер - то есть они не завершают свою работу после передачи чего-либо

BlaireCas
26.06.2023, 14:39
то есть они не завершают свою работу после передачи чего-либо
ВООТ! Тут видимо "собака и покопалась". А когда UkncComSender банально завершился - то винда видимо посбрасывала буфера и УКНЦ не дождался собственно ничего.

Hunta
26.06.2023, 14:45
Я и написал - разбираться - как ждать завершения передачи

BlaireCas
26.06.2023, 14:54
разбираться - как ждать завершения передачи
Теоретически как-то дождаться ответа "с той" стороны загрузчика что загрузилось всё. И потом уже можно видимо закрывать порт, выходить из приложения и т.д.

Понятно что если это загрузчик самого лоадера - то никаких таких ответов от него недождаться и тут все верно, нужно будет как-то понять в какой момент винда передала все данные. А если уже лоадер загрузился - то он вполне может чем-то там отвечать.

Hunta
26.06.2023, 15:08
В общем, я пока счастливо эту проблему избежал, так что пока - не знаю как :) Но вопрос хороший, может, как нть покапаюсь, так как есть у меня некоторые задумки насчёт настандатного использования com порта :)

BlaireCas
26.06.2023, 15:34
Очередная версия с увеличенным тайм-аутом и одной исправленной ошибкой.

Плиз поставь ::Sleep(3000) перед закрытием хендла ком-порта, мне это помогло в Никитиной версии (без всяких там Flush и прочего).

Alex_K
26.06.2023, 15:37
Плиз поставь ::Sleep(3000) перед закрытием хендла ком-порта, мне это помогло в Никитиной версии (без всяких там Flush и прочего).
Так же вылетает с ошибкой?

BlaireCas
26.06.2023, 15:43
Так же вылетает с ошибкой?
Угу, только по ощущениям дольше ждет

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

Хотя собственно Хунта тут и сказал что всякие слипы могут не помочь. Например на скорости 9600 часть остатка непереданного буфера может передаваться я х.з. скок. Поэтому можно хот 10сек поставить слип. Это конечно такое-себе решение

Alex_K
26.06.2023, 15:53
Угу, только по ощущениям дольше ждет
Да, тайм-аут большой. Сейчас поставлю.

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


Угу, только по ощущениям дольше ждет
Кстати, по поводу дольше ждёт. У меня там два SOB - один на 030, другой на максимум - 0. Они ожидают готовности стыка С2. Время довольно большое, даже более трёх секунд.

BlaireCas
26.06.2023, 15:55
Сейчас поставлю.
А вот эта версия рабочая. Гоблины правда не загрузились, а мое 1кб творение вполне пошло, УРА!

Alex_K
26.06.2023, 15:57
А вот эта версия рабочая. Гоблины правда не загрузились, а мое 1кб творение вполне пошло, УРА!
А по гоблинам так же тайм-аут? Если ошибка, то можно значение регистров?

BlaireCas
26.06.2023, 15:59
Болдер даш кст (который крутой BLDR.SAV) - загрузился нормально. Фуф.. ну вообщем проблема немного ясна стала. Спасибо господа за участие. Теперь надо думать что с ней делать ибо sleep ну как-то не вариант да..

Alex_K
26.06.2023, 16:02
Болдер даш кст (который крутой BLDR.SAV) - загрузился нормально. Фуф.. ну вообщем проблема немного ясна стала. Спасибо господа за участие. Теперь надо думать что с ней делать ибо sleep ну как-то не вариант да..
Это который ещё ANT называется? А так если десять раз загрузится, то тогда нормально.

BlaireCas
26.06.2023, 16:06
А по гоблинам так же тайм-аут?
Неа, загружается по видимому просто потом зависон. Но тем-не менее говорю-же - болдер пошел нормально. Разумеется неохота тестировать совсем уж все игры.
Вообщем скажем так "рабочее уже".

c:\Projects\uknc\00_code\tests>UkncComSender.exe COM3 GOBLIN.SAV 57600
UkncComSender Utility ...

Serial port COM3 opened.
Serial port configured.
Opening the input file GOBLIN.SAV...
Reading the first block...
Waiting for byte 0100...
0x40
Sending loader...
Waiting for byte 0101...
0x41
Sending data .................................................. ..............
COM port closed.

c:\Projects\uknc\00_code\tests>

Alex_K
26.06.2023, 16:09
Неа, загружается по видимому просто потом зависон. Но тем-не менее говорю-же - болдер пошел нормально. Разумеется неохота тестировать совсем уж все игры.
И даже через минуту не вылетает? Сам Замок Гоблинов у меня прекрасно грузится и идёт.

BlaireCas
26.06.2023, 16:20
Это который ещё ANT называется?
Ну там лягушка такая бегает и написан под два процессора судя по-всему.

https://i.imgur.com/H6X7IgX.jpg

Alex_K
26.06.2023, 17:07
Ну там лягушка такая бегает и написан под два процессора судя по-всему.
Он меньше по размеру, чем Гоблины. А в ПП там только передача скан-кодов клавиатуры, да и щелчки. Ну ещё палитру ставит в ячейках 2470 и 2472. Всё остальное в ЦП.

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


А вот эта версия рабочая. Гоблины правда не загрузились, а мое 1кб творение вполне пошло, УРА!
Ещё версия. Вставил FlushFileBuffers, ибо так советуют в SDK.

The FlushFileBuffers function clears the buffers for the specified file and causes all buffered data to be written to the file.

If a thread uses PurgeComm to flush an output buffer, the deleted characters are not transmitted. To empty the output buffer while ensuring that the contents are transmitted, call the FlushFileBuffers function (a synchronous operation). Note, however, that FlushFileBuffers is subject to flow control but not to write time-outs, and it will not return until all pending write operations have been transmitted.

--------------------------------------------------------------------------------------------------------------------------
Ещё доработка - если файл по размеру 512 байт и менее, то грузит только его, не переделывает в загрузчик.

BlaireCas
28.06.2023, 09:31
Ещё версия. Вставил FlushFileBuffers, ибо так советуют в SDK.
Не, не заработало. Думается проблема в самих гоблинах. Он этот GOBLIN.SAV у меня какой-то кривой. Там первый блок довольно странный. В обычных .SAV-ках он фактически пустой, а в этих гоблинах он забит чем-то. Плюс у меня там хакнуто на 77 жизней (в них кто-то копался вообщем).

Alex_K
28.06.2023, 10:07
Не, не заработало. Думается проблема в самих гоблинах. Он этот GOBLIN.SAV у меня какой-то кривой. Там первый блок довольно странный. В обычных .SAV-ках он фактически пустой, а в этих гоблинах он забит чем-то. Плюс у меня там хакнуто на 77 жизней (в них кто-то копался вообщем).
Это оригинальный GOBLIN. А по поводу информации в нулевом блоке, зависит от того, как она размещена. У меня не переносится всё что ниже адреса 0500, адреса от 0 до 0476 считаются векторами прерываний и исполнимый код там не рекомендуется хранить.

Так же я странслировал ваш TSTCLR с секцией .ASECT, у меня нормально загрузилось.

BlaireCas
28.06.2023, 10:37
Это оригинальный GOBLIN.
Да. С этим (оригинальным) все в порядке, грузится. Спасибо. А то у меня какой-то "крякнутый" и прилично меньшего размера (24кб). (В прям нулевом блоке даже строка размещена Kracked by Oleg H. 06. 09. 92.)

Alex_K
28.06.2023, 10:42
Да. С этим (оригинальным) все в порядке, грузится. Спасибо. А то у меня какой-то "крякнутый" и прилично меньшего размера (24кб). (В прям нулевом блоке даже строка размещена Kracked by Oleg H. 06. 09. 92.)
Oleg H. - это Олег Ховайко, кстати автор прошивки для IDE-контроллера. Интересно, что он там сделал? Может какой-то упаковщик применил?

Radon17
28.06.2023, 14:17
Так у него спросить наверно можно (если помнит)
https://zx-pk.ru/members/5864-olegh.html

Alex_K
28.06.2023, 15:15
Так у него спросить наверно можно (если помнит)
https://zx-pk.ru/members/5864-olegh.html
А зачем спрашивать? Есть DESS, взял и посмотрел.

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


Так у него спросить наверно можно (если помнит)
https://zx-pk.ru/members/5864-olegh.html

А зачем спрашивать? Есть DESS, взял и посмотрел.
Посмотрел. Проблема в том, что там расположен упаковщик с адреса 0550. А у меня при старте SP=01000, да и вызов п/п идёт, портится код в Гоблинах. Поправим.

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

Исправленная версия, нормально загружается упакованный код.

Alex_K
02.07.2023, 16:57
Обновлённая версия UkncComSender.

В данной версии поддерживается файл настроек UkncComSender.ini, расположенный в том же каталоге, где и исполнимый модуль.
Командная строка для запуска: UkncComSender COM_порт Имя_файла [Скорость]. В качестве первого параметра используется имя COM-порта, с которым программа будет работать, например COM1. Второй параметр - имя загружаемого файла. Если размер файла меньше или равен 512 байт, т.е. состоит из одного блока, то такой файл загружается без изменений. В другом случае из нулевого блока файла загружается только информация в смещении 0500-0776, т.к. для загрузки файла сперва загружается загрузчик, затем этот загрузчик загружает файл, начиная с первого блока. Третий параметр задаёт скорость обмена в бодах, может отсутствовать, по умолчанию 9600.
По умолчанию в программе используется такой блок DCB для настройки COM-порта:
dcb.BaudRate = dwBaudRate;
dcb.ByteSize = 8;
dcb.fBinary = 1;
dcb.fParity = FALSE;
dcb.fOutxCtsFlow = FALSE;
dcb.fOutxDsrFlow = FALSE;
dcb.fDtrControl = DTR_CONTROL_ENABLE;
dcb.fDsrSensitivity = FALSE;
dcb.fTXContinueOnXoff = FALSE;
dcb.fOutX = dcb.fInX = FALSE;
dcb.fErrorChar = FALSE;
dcb.fNull = FALSE;
dcb.fRtsControl = RTS_CONTROL_ENABLE;
dcb.fAbortOnError = FALSE;
dcb.Parity = NOPARITY;
dcb.StopBits = TWOSTOPBITS;

Настройки программы можно изменить через файл UkncComSender.ini. В текущей версии поддерживаются следующие параметры:

Секция [Main].
В этой секции параметр Sleep, задающий паузу в миллисекундах перед сбросом содержимого COM-порта и его закрытием в программе. Будет полезен в случае использования USB-переходников. Пример:
Sleep = 3000
Задаются пауза в 3000 мс (3 сек).

Секция [DCB].
В этой секции задаются параметры блока DCB, которые вы хотите изменить. В текущей версии поддерживаются следующие параметры:
BaudRate - задаёт скорость передачи в бодах. Он является более приоритетным перед параметром, который задаётся в командной строке.
fDtrControl - задаёт управление линией DTR. Может принимать значения DTR_CONTROL_ENABLE, DTR_CONTROL_DISABLE, DTR_CONTROL_HANDSHAKE.
fRtsControl - задаёт управление линией RTS. Может принимать значения RTS_CONTROL_ENABLE, RTS_CONTROL_DISABLE, RTS_CONTROL_HANDSHAKE.
fOutxDsrFlow - разрешает или запрещает слежение за линией DSR. Может принимать значения TRUE или FALSE.
fOutxCtsFlow - разрешает или запрещает слежение за линией CTS. Может принимать значения TRUE или FALSE.
StopBits - задаёт количество стоп-битов. Может принимать значения ONESTOPBIT или TWOSTOPBITS.

При изменении какого либо параметра в секции DCB, он выводится на экран. Если вывод отсутствует, то значит вы ошиблись в наборе нужного параметра. Текущие значения Sleep и BaudRate выводятся всегда.

Пример файла UkncComSender.ini:

[Main]
Sleep = 2000
[DCB]
BaudRate = 9600
fDtrControl = DTR_CONTROL_ENABLE
fRtsControl = RTS_CONTROL_HANDSHAKE
fOutxDsrFlow = FALSE
fOutxCtsFlow = TRUE
StopBits = TWOSTOPBITS

Hunta
02.07.2023, 17:17
В другом случае из нулевого блока файла загружается только информация в смещении 0500-0776, т.к. для загрузки файла сперва загружается загрузчик, затем этот загрузчик загружает файл, начиная с первого блока.
Загрузить загрузчик (512 байт), который при запуске переместится в верх памяти и примет файл - как он есть.

Alex_K
02.07.2023, 17:56
Загрузить загрузчик (512 байт), который при запуске переместится в верх памяти и примет файл - как он есть.
Вот этого я точно делать не буду. По спецификации RT-11 из нулевого блока загружается всё со смещения 0500. В диапазоне 0-0476 грузится в соответствии с таблицей защиты $LOWMA. К тому же это изменено в версии 5.2, там для загрузки диапазона 0500-0776 нужно установить бит 8 в JSW. Ну и при такой загрузке будут стёрты все вектора прерывания, в т.ч. заглушка на таймер, а в УКНЦ он по умолчанию включён. Это придётся как минимум ставить заглушку на таймер, и у меня при запуске устанавливается клавиатура в режим прерываний с п/п заглушки, которая считывает регистр 0177562. Была одна игрушка, которая не использовала сервисов RT-11, а просто меняла вектор 060 на себя.

Hunta
02.07.2023, 18:02
По спецификации RT-11 из нулевого блока загружается всё со смещения 0500.
Дело хозяйское, но кто сказал, что .SAV - это обязательно .SAV или что грузить можно только .SAV?
И насчёт .SAV - LINK то позволяет писать в блок 0 что угодно и где угодно - я так образы всяких ПЗУ делаю.
И прерывания таймера - тоже мешать не будут, даже если их и не запрещать - всего лишь в процессе загрузки контролировать запись в 100 и 102

Но ещё раз - дело хозяйское.

Arix
11.09.2023, 22:38
Ну вот и закончилась моя эпопея! Если кто помнит, я всё пытался использовать в качестве посредника для передачи файлов из Windows на УКНЦ конвертер Ethernet to RS232. В виду того, что главный компьютер и УКНЦ у меня стоят в разных комнатах.
начало (https://zx-pk.ru/threads/16001-uknts-zagruzka-cherez-styk-s2.html?p=1023530&viewfull=1#post1023530)
Далее - описание моих мучений и шампанских танцев, так и не давших никакого результата.
Теперь я купил МОХУ - MOXA NPort 5110 (https://moxa.ru/shop/com_v_ethernet/standart/5100/nport-5110/). Естественно, б/у на Авито, на порядок дешевле, чем на официальном сайте. И всё заработало с первого раза! УКНЦ грузится через С2 на скорости 57600, при автономной загрузке видит сетевые диски. Файлы копируются. Ура!
Так что, освобождаю место на полке, занятое ноутбуком-посредником (старый ноут с СОМ-портом), Моху куда-нибудь спрячу в уголок. У неё питание 12 - 48 В, так что, не надо покупать блок питания - можно использовать БП от любого ноута.

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

Что-то с версией HX_Server.exe 0,97j нестабильно работает. Загрузился по сети, перезагрузился с ЖД, на диски HX*: зайти не могу. И с сети после этого УКНЦ не грузится, приходится перезапускать НХ-сервер. 0,92 нормально работает, но он мне NumLock гасит. Но это и через ноут так же было.

Patron
12.09.2023, 19:41
0,92 нормально работает, но он мне NumLock гасит
В каталоге эмулятора есть файл Terminal.ini, в котором (помимо прочего) есть настройки работы терминала с клавиатурой:



KeyboardControlling = 1
NumLockControlling = 1
NumpadSwapping = 1
Use_NumLock_as_PF1 = 0

Если установить NumLockControlling = 0 - терминал не будет управлять состоянием NumLock.

Arix
12.09.2023, 20:53
Ещё как управляет! Оказывается, я с этим уже мучался.
https://zx-pk.ru/threads/20683-protokol-hx-imitatsiya-blochnogo-ustrojstva-s-posledovatelnym-interfejsom/page29.html

Можно взять exe-файл из свежего комплекта эмулятора ДВК и переименовать в HX_Server.exe
А с ним вышеуказанные глюки.
Может, есть ещё версии, выше 0,92, но ниже 0,97?

Patron
12.09.2023, 21:01
Может, есть ещё версии, выше 0,92, но ниже 0,97?
Все версии эмулятора доступны для скачивания по адресу: https://emulator.pdp-11.org.ru/DVK/distr/

ra3qdp
13.09.2023, 11:29
а какие среди них версии "без прерываний" ? подскажите, пожалуйста.

Arix
13.09.2023, 21:10
Все версии эмулятора доступны для скачивания по адресу: https://emulator.pdp-11.org.ru/DVK/distr/
Решил скачать все. Осталось штук 8, перестало качаться, сайт не открывается. Может, меня забанили, слишком много качаю?

Patron
13.09.2023, 21:26
а какие среди них версии "без прерываний" ?
Это, вроде, не к эмуляторам относилось, а к изменённым версиям RT-11.

Arix
13.09.2023, 22:36
Как оказалось, 0.92 тоже имеет подобный глюк, когда не происходит повторной загрузки. Т.е., я загрузился с С2, нажал сброс, снова пытаюсь загрузиться с С2 - и ничего не происходит. Или УКНЦ вываливается в СТОП. Надо перезапускать НХ Сервер. Я попробовал самую последнюю версию из того, что удалось скачать - 0.97p. Хотя бы при загрузке с ЖД диски HX* открываются без проблем. Даже если я на ходу закрою НХ_Сервер на одном компьютере и запущу на другом, сетевые диски открываются.
Неужели я обрушил сайт emulator.pdp-11.org.ru? Так и не открывается. :v2_conf3:

gid
14.09.2023, 06:24
Осталось штук 8, перестало качаться, сайт не открывается. Может, меня забанили, слишком много качаю?
На хосте pdp-11.org.ru стоит ограничение на одновременное количество открытых сессий с одного IP.
Я когда делал себе зеркало архива Hobotа неосторожно превысил лимит, и мой IP тож забанился на какое-то время.
Я пробовал скачать одновременно 10 файлов, и всё, облом. Потом пробовал через 3 дня зайти на сайт - не открывался.
Но я уже более аккуратно зазеркалил архив с другого IP и узнавать, сколько времени длится бан не стал, может неделю. Через месяц - архив Hobotа с моего IP снова открывался.

Arix
14.09.2023, 22:52
Запроксировался, докачал. Раньше было проще, когда у меня был динамический IP. Переподключился к интернету и всё. А сейчас надо суток на двое отключаться, чтоб IP сменился.
По поводу моей Мохи. Наверное, всё так замечательно работает оттого, что у неё есть режим Real COM. То есть, удаленный СОМ видится как свой собственный. Я даже попробовал СОМ-мышку к Мохе подключить - не заработала. У другого конвертера такого режима нет.
79478
Я попробовал у Мохи другие режимы - не работает.

ra3qdp
15.09.2023, 09:30
к изменённым версиям RT-11.
а где скачать эти версии ? Изменения в RT-11 делаются штатно при генерации или Вы сами что-то в ней переделывали ?

Patron
15.09.2023, 16:05
а где скачать эти версии ?
Версий две:

1) RT11SP (emulator.pdp-11.org.ru/misc/Pro350_HX_SP.DSK.zip) - универсальный вариант для всех машин.
1) RT11SP2 (emulator.pdp-11.org.ru/misc/Pro350_HX_SP2.DSK.zip) - вариант, использующий таймер Э-85.



Изменения в RT-11 делаются штатно при генерации или Вы сами что-то в ней переделывали ?
Сам изменил исходники RT-11 v5.4, добавив системе возможность осуществлять терминальный ввод и вывод при отсутствии прерываний терминала.

Также в комплект входит изменённая программа RESORC.SAV, получающая от SP-монитора информацию об обнаружении либо отсутствии прерываний терминала:



TT.Bad:
.ASCII /NO /
TT.Good:
.ASCII /Terminal Interrupts/
TT.x:
.ASCIZ/ OK/
TTI.Bad:
.ASCII /NO /
TTI.Good:
.ASCII /Terminal Input Interrupts/
TTI.x:
.ASCIZ/ OK/
TTO.Bad:
.ASCII /NO /
TTO.Good:
.ASCII /Terminal Output Interrupts/
TTO.x:
.ASCIZ/ OK/

ra3qdp
15.09.2023, 17:55
при отсутствии прерываний терминала.
а прерывания от таймера все равно должны быть ?

Patron
15.09.2023, 19:10
а прерывания от таймера все равно должны быть ?
Чтобы загрузить по HX или с диска МХ монитор RT-11SP на чём-то вроде ДВК - прерывания не нужны вообще.

ra3qdp
16.09.2023, 07:48
на чём-то вроде ДВК

я спрашиваю как раз не про ДВК, интересует для различных самоделок и не полностью работающих конфигураций.

Был вариант загрузки по HX для ODT Unibus машин, где скачать ?

Hunta
16.09.2023, 09:15
Там же. И даже для моего FullODT - там же.

Patron
16.09.2023, 19:00
я спрашиваю как раз не про ДВК, интересует для различных самоделок и не полностью работающих конфигураций.
Всё, что нужно - образ диска с системой RT-11SP и правильная настройка конфига.



Был вариант загрузки по HX для ODT Unibus машин, где скачать ?
Где скачать такой конфиг - уже не помню, но помню, как его сделать.

Нужно узнать, какое приглашение выдаёт ODT целевой машины и указать этот символ в конфиге (параметр PromptChar):



[ODT_Loader.ini]
ScriptFile="HX Boot.odt"
InitialStateOf[Load]=0
SaveChangesFor[Load]=0
Wait_at_Prompt_sec=1
PromptChar="@"
SendDelay_MS=0


Если связь быстрая, а машина медленная - можно также задать задержку после отправки машине каждого символа скрипта параметром SendDelay_MS.

ra3qdp
16.09.2023, 22:38
нету "HX Boot.odt" в среди файлов в архивах скачанных по ссылкам выше.


еще бы поправить в RT-11 адреса регистров порта и назначение битов в них.