-
После очередной разборки с винтами (я всё ещё надеюсь навести на них порядок) вернулся к "бесполезному" (с точки зрения некоторых) процессу восстановления исходников.
Доделка исходников DIR из DDP1. Есть пара процедур, написанных... хм.. своеобразно. Одна из них попроще (по логике работы) - двоичное в десятичное Ascii представление с указанием количества цифр, а вот вторая... (R50 -> Ascii).. Ну то есть чуйкой я понимаю, что это деление на 50(8), а вот как оно делается... Лана. прически кода это не мешает, может потом разберусь и прокомментю или вдруг кто заинтересуется. Пока просто код причешу, комменты расставлю - и выложу
- - - Добавлено - - -
А, нет, не процедура перевода в десятичный ascii меня поразила (как я и написал - там всё более менее), а перевод даты в ASCII - почти дотягивает до R50ASC :)
- - - Добавлено - - -
Обновил исходники DDP1 - добавилась DIR
-
Последняя утилита из комплекта DDP1 - DTCOPY - создание копии ленты DT.
Из занимательного
- источник строго на DT0
- приёмник - на DT1-DT7, задаётся с переключателей, причем в этот момент программа в останове и надо будет давануть кнопс Продолжить
- крайне активное использование EMT, в том числе для сохранения-восстановления регистров
- занимательный вариант вычисления смещения в таблице EMT процедур. Несмотря на очевидность приёма (как не работать с байтами), вроде больше такого нигде не видел:
Код:
MOV R0, -(SP) ; сохранили R0
MOV 2(SP), R0 ; адрес возврата
MOV -(R0), R0 ; адрес команды EMТ, код команды EMT -> R0
ASL R0 ; типа - словное смещение
MOV EMTTAB-<EMT*^O<2>>(R0), R0 ; указатель на процедуру обработки -> R0
RTS R0 ; PC <- R0 (процедура обработки), POP R0 (восстановили R0)
Восстановление исходника в самом начале, как закончу - как обычно выложу
-
В восстановлении DTCOPY сделано много, но ещё не всё. Из занимательного - таблица EMT содержит 35 входов (от EMT 0 до EMT 42), но программа использует далеко не все - примерно 10 (если не ошибся с подсчётом) - не используется, хотя соотвествующие процедуры присутствуют.
Причёсан почти весь код, но не вся логика разобрана - особенно те EMT, которые есть, но не используются. В первую очередь смотрю на те, которые используются.