Решение о посылке сигнала должен принимать оператор. Таймаутов ведь нет.
Вид для печати
А причем тут время? Если ты отправил пакет и он не битый, ответ будет. Если пакет битый - мы слетели с протокола. Шлем BREAK и другая сторона мгновенно знает, что проблема есть.
Конечно это не решит всех вопросов - вроде падения программы на обратной стороне, но "штатные" нештатные ситуации поможет решить.
Ну на подтверждение можно заложить определенное число циклов готовности опять таки без таймаута. Вобщем на любой вкус.
В том числе и по решению оператора можно опять таки послать BREAK который гарантированно дойдет на ту сторону как BREAK, а не потеряется/исказится как символ :)
Поскольку все потерянные пакеты попадают в терминальный обмен (и выводятся на экран), то именно оператору проще всего или принудительно отправить команду "пакет потерян" ( которую отправляет приёмник при несовпадении контрольной суммы ), или команду "выход в пульт" ( для последующей перезагрузки системы ).
Загрузчик для отправки через VTCOM.
Грузит RT11SJ.SYS с MX0.
Можно править:
Запускается командой:Код:5000-5002 время суток в тиках
5004 дата в формате RT-11
5006-5010 имя файла монитора в RADIX-50 (без SYS)
5014 название драйвера в RADIX-50 (на случай если MX но не MX) ;)
5016 номер дисковода 0-3
UPD: добавлен сокращенный вариант MXBNZ.TXT - то же самое, но не передает нули. Слегка сокращает время передачи. Перед тем как передавать для надежности стоит зачистить память:Код:@5020G
Код:@R6/XXXXXX 160000
@0/XXXXXX 4747
@0G
000002
@
Написал для байтового потока эмуляторную утилиту ODT_Loader для загрузки любых кодов в память компьютера через терминальный интерфейс ODT.
Утилита начинает загрузку скрипта при совпадении двух условий:
1. Всё готово для загрузки скрипта и на экране приглашение ODT: @
2. Состояние утилиты "Load" активировано.
Скрипты - это наборы обычных текстовых команд ODT с одним дополнением: конец строки преобразуется в <CR>, символ "¬" - в <LF>.
В результате такой скрипт:
Даёт такой результат:Код:R0/¬
¬
¬
¬
¬
¬
¬
RS/
А такой скрипт:Код:@R0/000113
R1/130422
R2/000000
R3/146772
R4/000000
R5/000036
R6/130402
R7/150214
@RS/000004
@
Даёт такой результат:Код:10000/5000¬
12701¬
177720¬
12702¬
177722¬
10012¬
12711¬
1¬
5012¬
12711¬
2¬
5012¬
12711¬
3¬
12712¬
400¬
12711¬
4¬
12711¬
5¬
106427¬
340¬
137¬
0
10000G
Код:@10000/177777 5000
010002/000000 12701
010004/177777 177720
010006/000000 12702
010010/177777 177722
010012/000000 10012
010014/177777 12711
010016/000000 1
010020/177777 5012
010022/000000 12711
010024/177777 2
010026/000000 5012
010030/177777 12711
010032/000000 3
010034/177777 12712
010036/000000 400
010040/177777 12711
010042/000000 4
010044/177777 12711
010046/000000 5
010050/177777 106427
010052/000000 340
010054/177777 137
010056/000000 0
@10000GHD Boot-I-Cold boot..
HD (177720) disk driver v1.0b 2011
SL V08.00 [SW] Сторожевых С.В. 1988
RT-11SJ (S) V05.04
- Ничего сложно... Практически любой 286 может это... И не надо определенных контроллеров...
Это читать оригинальные дискеты MX сложно, а форматировать и писать спец дискеты просто... Это не совсем дискеты MX, они отличаются от обычных MX, отформатированных на ДВК... Но ДВК понимает эти дискеты без проблем...