Uknc
Добро пожаловать на страницу эмулятора УКНЦ -- UKNC Back to Life !
|
|
Последние новости
NZeemin 13:57, 23 March 2007 (EDT)
Если вставить в эмулятор НЕзагрузочный диск (а вставить его можно командой Emulator|Floppy0) и выбрать в начальном меню пункт 1 - диск
, то спустя несколько секунд мы увидим вот такую картинку:
Это всё уже достижения Феликса, моих знаний для отладки таких чудес давно уже не хватает. Зато я делал для него отладчик :) Но об отладчике — в другой раз, вернёмся к надписи на экране. По крайней мере, я могу объяснить вам откуда она взялась.
С диска был запрошен на чтение сектор 1 дорожки 0. Эти данные прочитались в память ЦПУ с адреса 000000 и выглядят они вот так:
000000 000240 000005 000404 000000 000000 041420 116020 000400 =··········C·°·· 000020 004067 000044 000015 000000 005000 041077 047517 026524 7·$·······?BOOT- 000040 026525 067516 061040 067557 020164 067157 073040 066157 U-No boot on vol 000060 066565 006545 005012 000200 105737 177564 100375 112037 ume···-·ъ-tЪЩ-·¦ 000100 177566 100372 000777 000000 000000 000000 000000 000000 vЪЗ-Ъ··········· 000120 000000 000000 000000 000000 000000 000000 000000 000000 ················ 000140 000000 000000 000000 000000 000000 000000 000000 000000 ················ 000160 000000 000000 000000 000000 000000 000000 000000 000000 ················
Этому соответствует вот такой код:
000020 004067 JSR R0, 000070 000022 000044 --- 000024 ; Тут собственно последовательность байт для передачи на терминал --- 000070 105737 TSTB @#177564 ; Проверяем слово состояния терминала 000072 177564 000074 100375 BPL 000070 ; Терминал готов принять очередной символ? 000076 112037 MOVB (R0)+, @#177566 ; Отправляем символ на терминал 000100 177566 000102 100372 BPL 000070 ; Появился не-символ - значит все выдали 000104 000777 BR 000104 ; Зацикливание
При переходе на адрес 000070, в регистр R0 попадает значение 000024, по которому находится серия символов для терминала. После конца последовательности находится НЕ-символ, отличающийся наличием верхнего бита, и этот НЕ-символ по совместительству является командой по адресу 000070.
P.S. Кстати, приведённый здесь дамп и код — это copy/paste из консоли нашего отладчика. Ну, кроме комментариев, конечно…
Эта страница будет пополняться по мере разработки эмулятора.