Andrey_Ak WEB: www.tis.kz ICQ: 345-005-908 Mail: admin@tis.kz Fido: 2:5083/1 Radio: UN7GKQ
Если после нажатия "P" лента не читается - значит всё идёт в рамках ранее определённой нами логики контроллера: нет бита 200 в регистре 176732 - значит первый код команды чтения ( 33407 ) контроллером не выполнен.
Теперь нужно понять, почему контроллер не выполняет первый код команды чтения.
В драйвере ПЗУ - команды
Mov #33407,@#176732
Mov #1,@#176730
идут прямо друг за другом.
Поэтому здесь большая задержка точно не нужна.
Возможно, как-то "мешается" предыдущее непрочитанное значение в 176732. И из-за этого код команды с первого раза не проходит.
Чтобы это проверить - предлагаю повторить прогон ещё раз. При этом - после останова по адресу 01060:
1. Открыть 176732
2. Открыть 176730
3. Записать 1 в 176730
Подождать пару секунд.
4. Открыть 176732
5. Нажать "P"
Идея в том, чтобы проверить, установится ли бит 0200 в регистре 176732 после ручной записи "1" в регистр 176730.
Сейчас проверю..
---------- Post added at 01:38 ---------- Previous post was at 01:23 ----------
@
@1000G 001060
@176732/000066
@176730/000040 1 (Прочитал ленту)
@176732/000200
@
@20000/000000
@P 001122
@20000/000001
020002/000666
020004/000666
@
Andrey_Ak WEB: www.tis.kz ICQ: 345-005-908 Mail: admin@tis.kz Fido: 2:5083/1 Radio: UN7GKQ
Теперь слегка модифицируем нашу программу, чтобы подавать первый код команды вручную.
После запуска программа выполнит останов по адресу 01030, после чего нужно вручную:Код:001000/005000 001002/012701 001004/020000 001006/012702 001010/176730 001012/012703 001014/176732 001016/032712 001020/000040 001022/001001 001024/000000 001026/012713 / 000 001030/000007 / 240 001032/012712 / 240 001034/000001 / 240 001036/032712 001040/000040 001042/001775 001044/032712 001046/000010 001050/001406 001052/111304 001054/100401 001056/000000 001060/006204
1. Записать "7" в регистр 176732
2. Записать "1" в регистр 176730
3. Нажать "P"
Последний раз редактировалось Patron; 05.04.2011 в 23:48.
@
@1000G 001030
@176732/000066 7
@176730/000040 1 (Прочитал ленту)
@P 001122
@20000/000001
020002/000666
020004/000666
@
Andrey_Ak WEB: www.tis.kz ICQ: 345-005-908 Mail: admin@tis.kz Fido: 2:5083/1 Radio: UN7GKQ
Значит, есть только два варианта "улучшения" нашей реализации алгоритма чтения:
1. Читать 176732 перед записью.
2. Вставить для задержки пару команд типа Cmp @#0,@#0 между записью 7 в 176732 и 1 в 176730.
Для проверки каждого из вариантов нужен свой вариант программы.
Сделаю их завтра :)
Хорошо, спасибо!
Andrey_Ak WEB: www.tis.kz ICQ: 345-005-908 Mail: admin@tis.kz Fido: 2:5083/1 Radio: UN7GKQ
Вот новая версия программы:
Кстати, вполне возможно, что после чтения блока ленты в буфер контроллера командой "7" - содержимое буфера можно читать в компьютер командой "2" больше одного раза.Код:.NList SEQ, LOC TPS =: 176730 TPD =: 176732 Buffer =: 20000 Start: Clr R0 ; 005000 Mov #Buffer, R1 ; 012701 ; 020000 Mov #TPS, R2 ; 012702 ; 176730 Mov #TPD, R3 ; 012703 ; 176732 BiT #40, (R2) ; 032712 ; 000040 BNE 1$ ; 001001 Halt ; 000000 1$: MovB (R3), R4 ; 111304 Cmp @#240,@#240 ; 023737 ; 000240 ; 000240 Mov #7, (R3) ; 012713 ; 000007 Cmp @#240,@#240 ; 023737 ; 000240 ; 000240 Mov #1, (R2) ; 012712 ; 000001 2$: BiT #40, (R2) ; 032712 ; 000040 BEq 2$ ; 001775 BiT #10, (R2) ; 032712 ; 000010 BEq 7$ ; 001406 MovB (R3), R4 ; 111304 BMi 6$ ; 100401 Halt ; 000000 6$: ASR R4 ; 006204 BCC 7$ ; 103001 Halt ; 000000 7$: Mov #2, (R3) ; 012713 ; 000002 Mov #1, (R2) ; 012712 ; 000001 4$: BiT #60, (R2) ; 032712 ; 000060 BNE 3$ ; 001006 BiT #10, (R2) ; 032712 ; 000010 BEq 4$ ; 001772 MovB (R3), (R1)+ ; 111321 Inc R0 ; 005200 Br 4$ ; 000767 3$: Halt ; 000000 .End Start ;
Это тоже нужно будет проверить.
...
В настоящее время нам известны следующие коды команд:
Код:00 - сброс контроллера (?) 01 - ... 02 - чтение буфера контроллера 03 - перемотка ленты на начало 04 - запись маркера "Tape Mark" 05 - ... 06 - ... 07 - чтение блока ленты в буфер 10 - перемотка ленты на файл назад 11 - перемотка ленты на файл вперёд 12 - перемотка ленты на блок назад 13 - перемотка ленты на блок вперёд
Последний раз редактировалось Patron; 06.04.2011 в 16:49.
Похоже, что при записи всех магнитных лент такого типа используется общий формат файлов, описанный в стандарте ANSI Standard X3.27–1978, File Structure and Labeling of Magnetic Tapes for Information Interchange.
Операционные системы фирмы DEC используют подмножество этого стандарта с ограничением на размер блока в 512 байт.
Код:ВСЯ ИНФОРМАЦИЯ НА МАГНИТНОЙ ЛЕНТЕ РАСПОЛОЖЕНА В ЛОГИ- ЧЕСКИХ БЛОКАХ. МАГНИТНАЯ ЛЕНТА В СИСТЕМЕ ИМЕЕТ СТАНДАРТНЫЙ НАБОР МЕТОК, КОТОРЫЙ НЕОБХОДИМ ДЛЯ УПРАВЛЕНИЯ ДАННЫМИ. В МЕТКАХ НАХОДИТСЯ ИНФОРМАЦИЯ, ИСПОЛЬЗУЕМАЯ ДЛЯ КОНТРОЛЯ. НАПРИМЕР, В МЕТКЕ МОЖЕТ СОДЕРЖАТЬСЯ ЧИСЛО БЛОКОВ В ФАЙЛЕ. ПОСЛЕ РАБО- ТЫ С ФАЙЛОМ МОЖЕТ БЫТЬ ПРОИЗВЕДЕНА ПРОВЕРКА КОЛИЧЕСТВА ИМЕЮЩИХСЯ В ФАЙЛЕ БЛОКОВ С УКАЗАННЫМ В МЕТКЕ. НЕСОВПАДЕНИЕ ЭТИХ ДВУХ ЗНАЧЕНИЙ В НЕКОТОРЫХ СЛУЧАЯХ УКАЗЫВАЕТ НА ОШИБКУ ПРИ ОБРАБОТКЕ ФАЙЛА. СТАНДАРТНЫЕ МЕТКИ: МЕТКА ТОМА (VOL1) - МАГНИТНАЯ ЛЕНТА В СИСТЕМЕ ИМЕЕТ ТОЛЬКО ОДИН ТОМ; НЕ ИСПОЛЬЗУЕТСЯ МЕТКА КОНЦА ТОМА EOV, ПОЭТОМУ НЕЛЬЗЯ РАСПОЛАГАТЬ ФАЙЛ НА ДВУХ ЛЕНТАХ; ЛЕНТОЧНЫЙ МАРКЕР (*) - МЕТКИ ОТ ДАННЫХ ОТДЕЛЯЮТСЯ ЛЕНТОЧНЫМ МАРКЕРОМ; ДВА ЛЕНТОЧНЫХ МАРКЕРА ОЗНАЧАЮТ ЛОГИЧЕСКИЙ КОНЕЦ ЛЕНТЫ; МЕТКА НАЧАЛА ФАЙЛА (HDR1) - МЕТКА СОДЕРЖИТ ВСЮ НЕОБХОДИМУЮ ИНФОРМАЦИЮ О ФАЙЛЕ, ЗА ИСКЛЮЧЕНИЕМ ДЛИНЫ ФАЙЛА; ДЛИНА ФАЙЛА РАВНА 0; МЕТКА КОНЦА ФАЙЛА (EOF1) - МЕТКА ПОЛНОСТЬЮ ПОВТОРЯЕТ ИНФОРМАЦИЮ, СОДЕРЖАЩУЮСЯ В МЕТКЕ HDR1, ЗА ИСКЛЮЧЕНИЕМ ДЛИНЫ ФАЙЛА; ДЛИНА РАВНА ЧИСЛУ БЛОКОВ ДАННЫХ; МЕЖБЛОЧНЫЙ ПРОМЕЖУТОК - СЛУЖЕБНАЯ ЗАПИСЬ, РАЗДЕЛЯЮЩАЯ БЛОКИ ДАННЫХ МЕЖДУ СОБОЙ; НЕОБХОДИМА ДЛЯ РАЗГОНА И ОСТАНОВА БОБИНЫ МАГНИТНОЙ ЛЕНТЫ ПРИ СЧИТЫВАНИИ ИЛИ ЗАПИСИ ИНФОРМА- ЦИИ. СИСТЕМНЫЕ ПРОГРАММЫ DIR, DUP, PIP И Т.Д. ОСУЩЕСТВЛЯЮТ ЗАПИСЬ НА ЛЕНТУ ИЛИ СЧИТЫВАНИЕ ПОБЛОЧНО, Т.Е. ЗАПИСЯМИ ПО 512 БАЙТ. ФАЙЛ, СОЗДАННЫЙ НА МАГНИТНОЙ ЛЕНТЕ, ИМЕЕТ ВИД: HDR1 * ДАННЫЕ * EOF1 * ТОМ, СОДЕРЖАЩИЙ ОДИН ФАЙЛ, ИМЕЕТ ФОРМАТ: VOL1 HDR1 * ДАННЫЕ * EOF1 * * * ТОМ, СОДЕРЖАЩИЙ ДВА ФАЙЛА, ИМЕЕТ ФОРМАТ: VOL1 HDR1 * ДАННЫЕ * EOF1 * HDR1 * ДАННЫЕ * EOF1 * * * МАГНИТНАЯ ЛЕНТА, КОТОРАЯ БЫЛА ИНИЦИАЛИЗИРОВАНА, ИМЕЕТ СЛЕДУЮЩИЙ ФОРМАТ: VOL1 HDR1 * * EOF1 * * * НАЧАЛЬНЫЙ ЗАГРУЗЧИК МАГНИТНОЙ ЛЕНТЫ ТОМА ИМЕЕТ ФОРМАТ: VOL1 МBOOT HDR1 * ДАННЫЕ * EOF1 * * * ПРИ СОЗДАНИИ ЗАГРУЗЧИКА НА МАГНИТНОЙ ЛЕНТЕ ФАЙЛ MBOOT.BOT (ПЕРВИЧНЫЙ ЗАГРУЗЧИК) ДОЛЖЕН ИСПОЛЬЗОВАТЬСЯ ДЛЯ КОПИРОВАНИЯ ВТОРИЧНОГО ЗАГРУЗЧИКА МАГНИТНОЙ ЛЕНТЫ. ПЕРВЫЙ ФАЙЛ, КОТОРЫЙ ДОЛЖЕН БЫТЬ ЗАПИСАН ПОСЛЕ ПЕРВИЧНОГО ЗАГРУЗ- ЧИКА (МBOOT), ЭТО MSBOOT.BOT, КОТОРЫЙ СОДЕРЖИТ ВТОРИЧНЫЙ ЗАГРУЗЧИК МАГНИТНОЙ ЛЕНТЫ. ПЕРВИЧНЫЙ ЗАГРУЗЧИК ЗАНИМАЕТ ОДИН БЛОК (512 БАЙТОВ). КАЖДАЯ МЕТКА НА МАГНИТНОЙ ЛЕНТЕ ИСПОЛЬЗУЕТ ТОЛЬКО ПЕР- ВЫЕ 80 БАЙТОВ (ИЗ ЗАНИМАЕМЫХ 512 БАЙТОВ), И КАЖДЫЙ БАЙТ В МЕТКЕ СОДЕРЖИТ ИНФОРМАЦИЮ В СИМВОЛЬНОМ КОДЕ. ИНФОРМАЦИЯ, СОДЕРЖАЩАЯСЯ В МЕТКЕ ТОМА, ПРЕДСТАВЛЕНА В ТАБЛ. 9. ТАБЛИЦА 9 ФОРМАТ МЕТКИ ТОМА (VOL1) ------------------------------------------------------- ! !ДЛИНА ! ЗНАЧЕНИЕ ПОЛЯ ПОЗИЦИЯ !ИМЯ ПОЛЯ!ПОЛЯ, ! (ПО УМОЛЧАНИЮ ЗАПИСЫВАЕТСЯ ПОЛЯ ! !БАЙТЫ ! В КОДЕ КОИ-7) ------------------------------------------------------- !ИДЕНТИ- ! 3 ! !ФИКАТОР ! ! 1 - 3 ! (ID) ! ! VOL ! МЕТКИ ! ! ----------!--------!------!---------------------------- 4 ! НОМЕР ! 1 ! 1 ! МЕТКИ ! ! ----------!--------!------!---------------------------- ! ! ! RAFOS, ЗА КОТОРЫМ СЛЕДУЕТ 5 - 10 ! ID ТОМА! 6 ! ОДИН ПРОБЕЛ (МЕТКА ТОМА), ! ! ! ЕСЛИ НЕТ, ТО ID ТОМА ----------!--------!------!---------------------------- 11 ! ! 1 ! ПРОБЕЛ ----------!--------!------!---------------------------- ! НЕ ! ! 12 - 37 ! ИСПОЛЬ-! 26 ! ПРОБЕЛЫ ! ЗУЕТСЯ ! ! ----------!--------!------!---------------------------- 38 - 50 !ID ПОЛЬ-! 13 ! С 38 ПО 40 ID D&B; !ЗОВАТЕЛЯ! ! С 41 ПО 50 ID ПОЛЬЗОВАТЕЛЯ ! ! ! ИЛИ ПРОБЕЛЫ ----------!--------!------!---------------------------- !СТАНДАР-! ! 51 ! ТНАЯ ! 1 ! 1 ! ВЕРСИЯ ! ! ! СИСТЕМЫ! ! ----------!--------!------!---------------------------- ! НЕ ! ! 52 - 79 !ИСПОЛЬ- ! 28 ! ПРОБЕЛЫ ! ЗУЕТСЯ ! ! ----------!--------!------!---------------------------- !СТАНДАР-! ! 80 ! ТНАЯ ! 1 ! 3 ! ВЕРСИЯ ! ! ! МЕТКИ ! ! ИНФОРМАЦИЯ, СОДЕРЖАЩАЯСЯ В МЕТКЕ ФАЙЛА, ПРЕДСТАВЛЕНА В ТАБЛ. 10. ТАБЛИЦА 10 ФОРМАТ МЕТКИ ФАЙЛА (HDR1) ------------------------------------------------------- ! !ДЛИНА ! ЗНАЧЕНИЕ ПОЛЯ ПОЗИЦИЯ !ИМЯ ПОЛЯ !ПОЛЯ, !(ПО УМОЛЧАНИЮ ЗАПИСЫВАЕТСЯ ПОЛЯ ! !БАЙТЫ ! В КОДЕ КОИ-7) ------------------------------------------------------- 1 - 3 !ID МЕТКИ ! 3 ! HDR ----------!---------!------!--------------------------- 4 ! НОМЕР ! 1 ! 1 ! МЕТКИ ! ! ----------!---------!------!--------------------------- 5 - 21 !ID ФАЙЛА ! 17 ! ИМЯ, РАЗДЕЛИТЕЛЬ (".") ! ! ! И ТИП ----------!---------!------!--------------------------- 22 - 27 !ID ЗАПИСИ! 6 ! RAFOS, ЗА КОТОРЫМ СЛЕДУЕТ ! ФАЙЛА ! ! ОДИН ПРОБЕЛ ----------!---------!------!--------------------------- ! НОМЕР ! ! 28 - 31 ! СЕКЦИИ ! 4 ! 0001 ! ФАЙЛА ! ! (В ВОСЬМЕРИЧНОМ ВИДЕ) ----------!---------!------!--------------------------- !ПОРЯДКО- ! ! ПЕРВЫЙ ФАЙЛ ИМЕЕТ НОМЕР 32 - 35 !ВЫЙ НОМЕР! 4 ! 0001; НОМЕР СЛЕДУЮЩЕГО ! ФАЙЛА ! ! ФАЙЛА УВЕЛИЧИВАЕТСЯ НА 1; ! ! ! ПОСЛЕ ИНИЦИАЛИЗАЦИИ ЛЕНТЫ ! ! ! ЕГО ЗНАЧЕНИЕ РАВНО 0000 ! ! ! (В ВОСЬМЕРИЧНОМ ВИДЕ) ----------!---------!------!--------------------------- ! НОМЕР ! ! 0001 36 - 39 !ГЕНЕРАЦИИ! 4 ! (В ВОСЬМЕРИЧНОМ ВИДЕ) ----------!---------!------!--------------------------- ! ВЕРСИЯ ! ! 00 40 - 41 !ГЕНЕРАЦИИ! 2 ! (В ВОСЬМЕРИЧНОМ ВИДЕ) ----------!---------!------!--------------------------- ! ДАТА ! ! ПРОБЕЛ, ЗА КОТОРЫМ СЛЕДУ- 42 - 47 !СОЗДАНИЯ ! 6 ! ЕТ (ГОД * 1000 + ДЕНЬ) ----------!---------!------!--------------------------- ! ДАТА ! ! ПРОБЕЛ, ЗА КОТОРЫМ СЛЕДУЮТ 48 - 53 !ОКОНЧАНИЯ! 6 ! ПЯТЬ НУЛЕЙ ----------!---------!------!--------------------------- 54 ! МЕТОД ! 1 ! ПРОБЕЛ ! ДОСТУПА ! ! ----------!---------!------!--------------------------- 55 - 60 ! СЧЕТЧИК ! 6 ! 000000 ! БЛОКОВ ! ! (В ВОСЬМЕРИЧНОМ ВИДЕ) ----------!---------!------!--------------------------- 61 - 73 ! КОД ! 13 ! INERAFOS ! СИСТЕМЫ ! ! ----------!---------!------!--------------------------- ! НЕ ! ! 74 - 80 ! ИСПОЛЬ- ! 7 ! ПРОБЕЛЫ ! ЗУЕТСЯ ! ! ПРИМЕЧАНИЕ. ДАТА СОЗДАНИЯ (DAT) ЗАПОМИНАЕТСЯ СЛЕДУЮЩИМ ОБРАЗОМ: DAT = Г * 1000 + Д (4.4) ГДЕ Г - ГОД; Д - КОЛИЧЕСТВО ДНЕЙ ОТ НАЧАЛА ГОДА. НАПРИМЕР, ДАТА 5.05.83. БУДЕТ ПРЕДСТАВЛЕНА В ВИДЕ 83 * 1000 + (31 + 28 + 31 + 30 + 5) = 83125 ЕСЛИ ДАТА ОТСУТСТВУЕТ, ТО ДАННЫЕ ПОЗИЦИИ ЗАПОЛНЯЮТСЯ НУЛЯМИ (ПРИЧЕМ, ПЕРВЫМ СТОИТ ОДИН ПРОБЕЛ, ЗА КОТОРЫМ СЛЕДУЮТ ПЯТЬ НУЛЕЙ). МЕТКА КОНЦА ФАЙЛА (EOF1) ТОЧНО ТАКАЯ ЖЕ, КАК И МЕТКА НАЧАЛА ФАЙЛА (HDR1), ЗА ИСКЛЮЧЕНИЕМ НЕСКОЛЬКИХ БАЙТОВ, КОТОРЫЕ УКАЗАНЫ В ТАБЛ. 11. ТАБЛИЦА 11 СТРУКТУРА МЕТКИ КОНЦА ФАЙЛА (EOF1) ------------------------------------------------------- ! !ДЛИНА ! ЗНАЧЕНИЕ ПОЛЯ ПОЗИЦИЯ !ИМЯ ПОЛЯ!ПОЛЯ, ! (ПО УМОЛЧАНИЮ ЗАПИСЫВАЕТСЯ ПОЛЯ ! !БАЙТЫ ! В КОДЕ КОИ-7) ------------------------------------------------------- 1 - 3 !ID МЕТКИ! 3 ! EOF ----------!--------!------!---------------------------- ! ! !КОЛИЧЕСТВО БЛОКОВ ДАННЫХ, ! ! !СОДЕРЖАЩИХСЯ В ФАЙЛЕ (ЕСЛИ 55 - 60 ! СЧЕТЧИК! 6 !ФАЙЛ НЕ СОЗДАН МАКРОКОМАНДОЙ ! БЛОКОВ ! !.SPFUN); ПРИ СОЗДАНИИ ФАЙЛА ! ! !МАКРОКОМАНДОЙ .SPFUN СЧЕТЧИК ! ! !РАВЕН НУЛЮ; ЕСЛИ .SPFUN ПРИ ! ! !ЗАПИСИ ИСПОЛЬЗУЕТ БЛОКИ ПО ! ! !256 (ДЕСЯТИЧНОЕ) СЛОВ, ТО ! ! !СЧЕТЧИК БЛОКОВ УСТАНАВЛИВА- ! ! !ЕТСЯ КАК ОБЫЧНО
Magtape Label and Header Formats:
Note that the 000007 in the EOF1 label indicates that there are 7 data blocks in the DATA AREA.Код:*** MTFMGR: DB MU0:, 256. Words, (Base 8) *** 047526 030514 052122 030461 020101 020040 020040 020040 *VOL1RT11A * 020040 020040 020040 020040 020040 020040 020040 020040 * * 020040 020040 042040 041045 020040 020040 020040 020040 * D%B * 020040 020061 020040 020040 020040 020040 020040 020040 * 1 * 020040 020040 020040 020040 020040 020040 020040 031440 * 3* *** MTFMGR: DB MU0:, 256. Words, (Base 8) *** 042110 030522 042532 047522 042105 055056 055132 020040 *HDR1FILE.DAT * 020040 020040 051040 030524 040461 030040 030060 030061 * RT11A 00010 * 030060 030060 030060 030061 020060 030060 030060 020060 *001000100 00000 * 030060 030060 020060 030060 030060 030060 042504 051103 *00000 000000DECR* 030524 040461 020040 020040 020040 020040 020040 020040 *T11A * ** Tape Mark ** DATA AREA - 256-word fixed-length blocks. These blocks are exactly the same as the disk files that they represent. ** Tape Mark ** *** MTFMGR: DB MU0:, 256. Words, (Base 8) *** 047505 030506 042532 047522 042105 055056 055132 020040 *EOF1FILE.DAT * 020040 020040 051040 030524 040461 030040 030060 030061 * RT11A 00010 * 030060 030060 030060 030061 020060 030060 030060 020060 *001000100 00000 * 030060 030060 020060 030060 030060 030060 042504 051103 *00000 000007DECR* 030524 040461 020040 020040 020040 020040 020040 020040 *T11A * ** Tape Mark ** ** Tape Mark ** ** Tape Mark **
Последний раз редактировалось Patron; 06.04.2011 в 17:16.
Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)