С любовью к вам, Yandex.Direct
Размещение рекламы на форуме способствует его дальнейшему развитию
Вот только не ясно как, я что-то не заметил никаких передаваемых символов при сбросе и появлении надписи * ЗАГРУЗКА ИЗ СЕТИ *. Это правда может быть связанно с особеностями самого моего USB->COM TTL переходника, мне кажется что он ничего не передает до тех пор пока УК-НЦ не считает значение из регистра 176560 (но это не точно!) Нужно будет еще повозиться и проверить что происходит при сбросе или выборе пункта "Сеть"
Вот код ПЗУ УКНЦ, выполняющийся при выборе пункта "Загрузка из сети":
Код:; Загрузчик из сети 164160$: MTPS #340 ; Запретить прерывания MOVB @#176561,R5 ; Выделение в R5 номера сетевой станции MOV R5,R0 BIC #177760,R5 ASR R0 BIC #177717,R0 BIS R0,R5 MOVB R5,164556$ ; Сохранение номера сетевой станции MOVB 164572$,R0 ; R0 = 173(8) XOR R5,R0 ; R0 = 173(8) XOR номер_сетевой_станции MOVB R0,164572$ MOV #30,R0 ; R0 = 30 (адрес вектора команды EMT) MOV #164500$-164160$+1000,(R0)+ ; Установка вектора прерывания EMT CLR (R0)+ ; Установка ССП при вызове EMT MOV #164512$-164160$+1000,(R0)+ ; Установка вектора прерывания TRAP CLR (R0)+ ; Установка ССП при вызове TRAP 164244$:MOV #10000,SP ; Установка указателя стека MOV #164526$-164160$+1000,@#100 ; Устан. вект. прер. сет. таймера CLR @#102 MTPS #0 ; Разрешить прерывания CLR 164534$ ; Очистка счетчика ожидания 164272$:TRAP 0 ; Чтение пришедшего байта CMP 164534$,#5 ; Счетчик ожидания больше пяти BLO 164272$ ; Нет 164304$:EMT 0 ; Посылка и чтение очередного байта CMPB #376,R0 ; Пришедший байт равен 376(8) BNE 164304$ ; Нет MOV #164554$-164160$+1000,R1 ; R1 = адрес блока передачи 164320$:MOVB (R1)+,R0 ; R0 = очередной байт из блока передачи CMPB #376,R0 ; Он равен 376(8) ? BEQ 164334$ ; Да EMT 0 ; Посылка и чтение очередного байта BR 164320$ 164334$:EMT 0 ; Посылка и чтение очередного байта CMPB #377,R0 ; Прочитанный байт равен 377(8) ? BNE 164334$ ; Нет EMT 0 ; Посылка и чтение очередного байта CMPB R5,R0 ; Полученный байт равен номеру станции ? BNE 164334$ ; Нет MOV #377,R4 ; R4 = 377(8) (контрольная сумма) XOR R0,R4 ; R4 = 377(8) XOR номер_сетевой_станции MOV #50000,R1 ; R1 = адрес расположения загрузчика EMT 0 ; Посылка и чтение очередного байта MOV R0,R3 ; R3 = считанный байт XOR R0,R4 ; Подсчет контрольной суммы 164372$:EMT 0 ; Посылка и чтение очередного байта CMPB #373,R0 ; Считанный байт равен 373(8) ? BLOS 164410$ ; Выше или равен 373(8) XOR R0,R4 ; Подсчет контрольной суммы MOVB R0,(R1)+ ; Передача принятого байта в память BR 164372$ 164410$:BNE 164426$ ; Принятый байт равен не равен 373(8) EMT 0 ; Посылка и чтение очередного байта COM R0 ; Инверсия принятого байта XOR R0,R4 ; Подсчет контрольной суммы MOVB R0,(R1)+ ; Передача принятого байта в память COM R0 ; Инверсия для передачи BR 164372$ 164426$:CMPB #374,R0 ; Принятый байт равен 374(8) BNE 164244$ ; Нет EMT 0 ; Посылка и передача байта CMPB R0,R4 ; Он равен контрольной сумме ? BNE 164244$ ; Нет EMT 0 ; Посылка и передача байта BISB #10,R0 ; R0 = R0 OR 10(8) EMT 0 ; Посылка и передача байта CMPB #377,R0 ; Принятый байт равен 377(8) BNE 164244$ ; Нет EMT 0 ; Посылка и передача байта MOV #4,@#176560 ; Включение кольцевой сети MTPS #340 ; Запретить прерывания JMP @#50000 ; Переход на исполнение загрузчика ; Подпрограмма передачи байта в локальную сеть (исполнение команды EMT) 164500$:TSTB @#176564 ; Передатчик СА готов ? BPL 164500$ ; Нет MOVB R0,@#176566 ; Передача байта в сеть ; Подпрограмма чтения байта, пришедшего по сети (исполнение команды TRAP) 164512$:TSTB @#176560 ; Приемник СА готов ? BPL 164512$ ; Нет MOVB @#176562,R0 ; Прием байта из сети RTI ; Подпрограмма исполнения прерываний таймера 164526$:CLR @#176560 ; Включение режима загрузки INC (PC)+ ; Инкремент счетчика ожидания 164534$:.WORD 0 CMP 164534$,#1000 ; Счетчик ожидания превысил лимит времени ? BHI 164550$ ; Да RTI 164550$:JMP 164244$ ; Блок передачи в сеть 164554$:.BYTE 377,0,0,204,0,0,0,0,0,0,0,0,0,374,173,60,377,376,0,0
---------- Post added at 13:00 ---------- Previous post was at 12:37 ----------
Загрузчик начинает работу с того, что на протяжении 0.1 сек пропускает все приходящие с сервера байты, а потом начинает их копировать со входа на выход до тех пор, пока сервер не пришлёт 376. Как только сервер пришлёт 376 - начнётся процедура загрузки. Если за 10 секунд с момента начала пропуска байтов процедура загрузки не завершится - произойдёт принудительный сброс и всё повторится по-новой.
Последний раз редактировалось Patron; 14.02.2013 в 15:49.
Комплект сервера HX для работы через порт CA: HX_Server 2.2_-_UKNC_-_CA_15.02.13_17-42
Изменения:
1. Добавлен объект UKNC_NET_Loader, позволяющий передавать загрузчик по протоколу сети УКНЦ для запуска с адреса 050000
2. Добавлен начальный загрузчик CAPre2.bin, передаваемый при выборе в УКНЦ пункта "ЗАГРУЗКА ИЗ СЕТИ" и имитирующий работу загрузчика УКНЦ для порта С2.
3. Добавлен файл конфигурации CA11_HX_COM.cfg, загружающий из образа CAsys54.DSK специальную версию RT-11 - CA11SJ.SYS, использующую порт СА в качестве порта терминала.
4. Добавлен загрузчик Boot_CA-11_from_HX0.bin, выводящий сообщения об ошибках в порт СА и образ системного диска CAsys54.DSK с монитором CA11SJ.SYS.
...
Последний раз редактировалось Patron; 23.09.2014 в 14:34.
Patron, но это для доработанного СА верно?
Patron, спасибо! Мне важно фразу не вводящую в заблуждение на сайт написать, так что я в плане общей информации, а предметно это уже понятно надо
читать тему, изучать вопрос детально )
Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)