Для общего развития наваял загрузчик с HX для KDJ11-B. Загрузчик совсем простой: не проверяет что считал, не отслеживает возможное отсутствие готовности передатчика. Определяет наличие HX и ругается если нету. В идеале надо ROM просить написать "starting system" сразу после определения наличия HX, но уже лень переделывать
Код:Commands are Help, Boot, List, Setup, Map and Test. Type a command then press the RETURN key: L Device Unit name numbers Source Device type DU 0-255 CPU ROM RDnn, RXnn, RC25, RAnn DL 0-3 CPU ROM RL01, RL02 DX 0-1 CPU ROM RX01 DY 0-1 CPU ROM RX02 DD 0-1 CPU ROM TU58 DK 0-7 CPU ROM RK05 MU 0-255 CPU ROM TK50, TU81 MS 0-3 CPU ROM TK25, TS05 XH 0-1 CPU ROM DECNET ETHERNET NU 0-15 CPU ROM DECNET DUV11 NE 0-15 CPU ROM DECNET DLV11-E NF 0-15 CPU ROM DECNET DLV11-F HX 0 EEPROM TTY MUX Commands are Help, Boot, List, Setup, Map and Test. Type a command then press the RETURN key: B HX Trying HX0 Message 15 Non existent drive Commands are Help, Boot, List, Setup, Map and Test. Type a command then press the RETURN key:PS. DAY в системе 5.4G которая идет в комплекте - стабильно "?MON-F-Trap to 4 001264"Код:.TITLE HXBOOT CSR == 177560 ;CSR ПО УМОЛЧАНИЮ ;DEC РЕКОМЕНДУЕТ ИСПОЛЬЗОВАТЬ НАЧАЛЬНЫЙ АДРЕС 40000. .ASECT .=40000 ;ТОЧКА ВХОДА В ЗАГРУЗЧИК. В ЭТОМ МЕСТЕ: ; - MMU ВЫКЛЮЧЕН ; - 22-БИТНАЯ АДРЕСАЦИЯ ВЫКЛЮЧЕНА ; - ВЫБРАН ОСНОВНОЙ НАБОР РЕГИСТРОВ ; - R0 СОДЕРЖИТ UNIT (ВСЕГДА 0) ; - R1 СОДЕРЖИТ 0 ИЛИ УКАЗАННЫЙ CSR START: TST R1 ;CSR УКАЗАН? BNE 10$ ;ДА MOV #CSR,R1 ;НЕТ, ИСПОЛЬЗУЕМ ОБЫЧНЫЙ 10$: MOV #IDENT,R5 ;ПОСЫЛАЕМ КОМАНДУ ПРОВЕРКИ CALL SEND ; MOV #2,R3 ;ПРИНИМАЕМ 2 БАЙТА CALL RECV ; BCS 30$ ;CS - НЕТ УСТРОЙСТВА CMP #375,-(R4) ;HX ДОЛЖЕН ВЕРНУТЬ 375 BNE 40$ ;КЮ! MOV #BOOT,R5 ;ПОСЫЛАЕМ КОМАНДУ ЗАГРУЗКИ CALL SEND ; MOV #512.,R3 ;ПРИНИМАЕМ ЗАГРУЗЧИК CALL RECV ; BCS 40$ ;КЮ! MOV #1,R5 ;ЗАПРАШИВАЕМ "STARTING SYSTEM" ;В ДОКУМЕНТАЦИИ DEC, ПОПАВШЕЙ ПОД РУКУ, НИЧЕГО НЕ ГОВОРИТСЯ ПРО ;СТЕК. ОДНАКО ЕСЛИ ЕГО ОСТАВИТЬ БЕЗ ИЗМЕНЕНИЯ ПРИ ЗАПРОСЕ СООБЩЕНИЯ, ;АДРЕС ВОЗВРАТА ЗАТРЕТСЯ И БУДЕТ ОШИБКА "E 75". ДЛЯ ЗАПРОСА СООБЩЕНИЙ ;ОБ ОШИБКАХ УСТАНАВЛИВАТЬ СТЕК НЕ ТРЕБУЕТСЯ. MOV #START,SP ;УСТАНАВЛИВАЕМ СТЕК 20$: CALL @#165762 ;ЗАПРАШИВАЕМ СООБЩЕНИЕ CLR PC ;ЗАПУСКАЕМ СИСТЕМУ 30$: MOV #ERASE,R5 ;СТИРАЕМ МУСОР ОТ ЗАПРОСА HX CALL SEND ; MOV #275,R5 ;ОШИБКА - NONEXISTENT DRIVE BR 20$ ;ВОЗВРАТ В ROM 40$: MOV #301,R5 ;ОШИБКА - DRIVE ERROR BR 20$ ;ВОЗВРАТ В ROM RECV:: MOV #-1,R2 ;УСТАНАВЛИВАЕМ ЧИСЛО ПОПЫТОК 10$: TSTB @R1 ;ЖДЕМ ГОТОВНОСТИ BPL 20$ ; MOVB 2(R1),(R4)+ ;ПОЛУЧАЕМ БАЙТ SOB R3,RECV ;ЦИКЛИМСЯ ДО КОНЦА RETURN ;ВОЗВРАТ (C СБРОШЕН - TSTB) 20$: SOB R2,10$ ;ПОВТОРЯЕМ ПОПЫТКУ SEC ;УСТАНАВЛИВАЕМ C RETURN ;ВОЗВРАТ SEND:: MOVB (R5)+,R4 ;ПОЛУЧАЕМ КОЛИЧЕСТВО БАЙТОВ 10$: TSTB 4(R1) ;ЖДЕМ ГОТОВНОСТИ BPL 10$ ; MOVB (R5)+,6(R1) ;ПОСЫЛАЕМ БАЙТ SOB R4,10$ ;ЦИКЛИМСЯ ДО КОНЦА RETURN ;ВОЗВРАТ IDENT: .BYTE 4,1,376,0,0 BOOT: .BYTE 3,4,10,0 ERASE: .BYTE 3,10,40,10 .END





Ответить с цитированием