Andrey_Ak WEB: www.tis.kz ICQ: 345-005-908 Mail: admin@tis.kz Fido: 2:5083/1 Radio: UN7GKQ
С любовью к вам, Yandex.Direct
Размещение рекламы на форуме способствует его дальнейшему развитию
Если присмотреться внимательнее - коды там есть ( на месте комментариев ).
Глюк...
Последний раз редактировалось Andrey_Ak; 07.04.2011 в 02:10.
Andrey_Ak WEB: www.tis.kz ICQ: 345-005-908 Mail: admin@tis.kz Fido: 2:5083/1 Radio: UN7GKQ
Останов с адресом 01026 - признак того, что на момент начала работы программы - контроллер не имеет признака готовности, т.е. не установлен бит 040 в регистре 176730.
При останове по адресу 01026 нужно вручную открыть 176730 и убедиться, что там установлен бит 040 - и только затем нажать "P"
@10/010021
000012/077202
000014/000000
@R0/000777
R1/000016
R2/000000
@10G 000000
@R1/160002
010054/000777
010056/000777
@20000/000777
020002/000777
020004/000777
@1000/005000
001002/012701
001004/020000
001006/012702
001010/176730
001012/012703
001014/176732
001016/032712
001020/000040
001022/001001
001024/000000
001026/111304
001030/023737
001032/000240
001034/000240
001036/012713
001040/000007
001042/023737
001044/000240
001046/000240
001050/012712
001052/000001
001054/032712
001056/000040
001060/001775
001062/032712
001064/000010
001066/001406
001070/111304
001072/100401
001074/000000
001076/006204
001100/103001
001102/000000
001104/012713
001106/000002
001110/012712
001112/000001
001114/032712
001116/000060
001120/001006
001122/032712
001124/000010
001126/001772
001130/111321
001132/005200
001134/000767
001136/000000
001140/000777
@
@
@
@
@176730/000054
176732/000066
176734/
BUS ERROR
@176730/000044
176732/000066
176734/
BUS ERROR
@176730/000044
176732/000066
176734/
BUS ERROR
@176730/000044
176732/000066
176734/
BUS ERROR
@176730/000044
176732/000066
176734/
BUS ERROR
@
@1000G 001076
@
@1000G 001076
@
@1000G 001076
@
@176732/000066
@176730/000040
@176730/000040
176732/000066
176734/
BUS ERROR
@
@176730/000040
176732/000066
176734/
BUS ERROR
@P 001140
@
@176730/000044
176732/000066
176734/
BUS ERROR
@176730/000044
176732/000066
176734/
BUS ERROR
@
@
@
@176730/000044
176732/000066
176734/
BUS ERROR
@
@
@
@1000G 001076
@176730/000040 1 (Прочитал ленту)
@20000/000777
@P 001140 (Записал блок из памяти контроллера в память)
@20000/000001
020002/000666
020004/000666
020006/000666
---------- Post added at 04:00 ---------- Previous post was at 03:52 ----------
@176730/000044
176732/000203 00
@176730/000040 1
@
@176730/000054
176732/000203
176734/
BUS ERROR
@
@
@
@
@176730/000044
176732/000203 0
@176730/000040 1
@
@1000G 001076
@176732/000066
@176730/000040
176732/000066
176734/
BUS ERROR
@
@176730/000040
176732/000066
176734/
BUS ERROR
@R0/000000
R1/020000
R2/176730
R3/176732
R4/000066
R5/000030
R6/177776
R7/001076
R0/000000
@
Andrey_Ak WEB: www.tis.kz ICQ: 345-005-908 Mail: admin@tis.kz Fido: 2:5083/1 Radio: UN7GKQ
Останов по адресу 01076 - это всё та же проблема, решить которую пока не помогло ни чтение регистра 176732 перед записью в него, ни вставка команды Cmp @#240,@#240 ( для дополнительной задержки ) между записью "7" в регистр 176732 и "1" в 176730.
Однако, теперь у нас есть место в коде, чтобы вставить ещё одну команду записи "1" в 176730.
Код:001024/000000 001026/111304 001030/023737 001032/000240 001034/000240 001036/012713 001040/000007 001042/023737 / 012712 001044/000240 / 000001 001046/000240 001050/012712 001052/000001 001054/032712 001056/000040 001060/001775
@176730/000054
176732/000066
176734/
BUS ERROR
@
@176730/000044
176732/000066
176734/
BUS ERROR
@
@1000G 001076
@
@1000G 001076
@176730/000040
176732/000066
176734/
@176730/000040
176732/000066
176734/
@P 001140 (Ленту не прочитал)
@
@20000/000777
@1000G 001076
@
@R0/000000
R1/020000
R2/176730
R3/176732
R4/000066
R5/000030
R6/177776
R7/001076
@176730/000040
176732/000066
@176730/000040
176732/000066
@176730/000040 1 (Прочитал ленту)
@
@20000/000777
@P 001140 (Скопировал буфер контроллера в память)
@20000/000001
020002/000666
020004/000666
---------- Post added at 13:22 ---------- Previous post was at 13:10 ----------
@20000/000777
020002/000777
020004/000777
020006/000777
@1042/012712
001044/000001
001046/000240 0 (Меняем NOP на Halt)
@
@
@1000G 001050
@P 001140 (Прочитал ленту)
@
@20000/000004
020002/000666
020004/000666
020006/000666
@
- Похоже надо выставить задержку в 1046
---------- Post added at 13:29 ---------- Previous post was at 13:22 ----------
@1042/000000
001044/000240
001046/000240
@20000/000777
020002/000777
020004/000777
@
@
@1000G 001044
@P 001140
@
@20000/000002
020002/000666
020004/000666
020006/000666
@
Похоже второй раз записывать 1 в 176730 не надо, нужно просто
выставить больше задержку...
---------- Post added at 13:38 ---------- Previous post was at 13:29 ----------
Так, увеличиваем задержку:
@1042/012705
001044/123456
001046/077501
@
@20000/000777
020002/000777
020004/000777
@
@1000G 001140 (Прочитал ленту)
@
@20000/000004
020002/000666
020004/000666
020006/000666
@
---------- Post added at 13:40 ---------- Previous post was at 13:38 ----------
Итак, код рабочей программки чтения:
@
@1000/005000
001002/012701
001004/020000
001006/012702
001010/176730
001012/012703
001014/176732
001016/032712
001020/000040
001022/001001
001024/000000
001026/111304
001030/023737
001032/000240
001034/000240
001036/012713
001040/000007
001042/012705
001044/123456
001046/077501
001050/012712
001052/000001
001054/032712
001056/000040
001060/001775
001062/032712
001064/000010
001066/001406
001070/111304
001072/100401
001074/000000
001076/006204
001100/103001
001102/000000
001104/012713
001106/000002
001110/012712
001112/000001
001114/032712
001116/000060
001120/001006
001122/032712
001124/000010
001126/001772
001130/111321
001132/005200
001134/000767
001136/000000
---------- Post added at 13:45 ---------- Previous post was at 13:40 ----------
С задержкой понятно, этот контроллер работал на Эл.60,
а теперь на ВМ2 поэтому и не успевает обработать команду...
Последний раз редактировалось Andrey_Ak; 08.04.2011 в 06:24.
Andrey_Ak WEB: www.tis.kz ICQ: 345-005-908 Mail: admin@tis.kz Fido: 2:5083/1 Radio: UN7GKQ
Думаю, что вместо задержки можно попробовать использовать бит 04 регистра 176730. Этот бит сбрасывается, когда контроллер готов к выполнению кода команды, записанного в 176732 ( т.е. в тот момент, когда нужно записывать "1" в 176730 ). После записи кода команды в 176732 можно вставить проверку сброса этого бита и не записывать "1" в 176730 до тех пор, пока бит 04 в 176730 установлен.
Код:001042/023737 / 032712 001044/000240 / 000004 001046/000240 / 001375
Последний раз редактировалось Patron; 07.04.2011 в 14:14.
@1042/012705 032712
001044/123456 4
001046/077501 1375
@
@1000G 001076
@
@176730/000040
176732/000066
- Нет, так не читает...
---------- Post added at 08:06 ---------- Previous post was at 08:05 ----------
@1042/032712 12705
001044/000004 123456
001046/001375 77501
@
@
@1000G 001140
@
@20000/000002
020002/000666
020004/000666
020006/000666
@
- А так читает...
---------- Post added at 09:15 ---------- Previous post was at 08:06 ----------
- Скорее всего надо просто выдерживать паузу после записи команды
в 176732....
---------- Post added at 09:16 ---------- Previous post was at 09:15 ----------
В принципе читать получилось, надо-бы разобраться как писать...![]()
Andrey_Ak WEB: www.tis.kz ICQ: 345-005-908 Mail: admin@tis.kz Fido: 2:5083/1 Radio: UN7GKQ
Делать паузу в 1000 раз более длинной, чем это необходимо - не всегда оправдано. Гораздо лучше (на мой взгляд) иметь универсальный алгоритм, который в любых условиях даёт гарантированный результат c минимальной задержкой.
Поэтому, предлагаю попробовать следующий вариант:
Думаю, нет смысла заниматься записью до тех пор, пока драйвер TP.SYS для RT-11 ( который ещё нужно написать ) не начнёт нормально читать ленты.Код:001024/000000 001026/111304 001030/023737 / 012713 001032/000240 / 000007 001034/000240 / 032712 001036/012713 / 000004 001040/000007 / 001375 001042/012705 / 012712 001044/123456 / 000001 001046/077501 / 022712 001050/012712 / 000040 001052/000001 / 001773 001054/032712 001056/000040 001060/001775
Мне представляется, что следующим шагом должно стать исследование работы контроллера при чтении стандартной разметки ленты ( блок VOL1, блок HDR1, метка "Tape Mark", блоки данных, метка "Tape Mark", блок EOF1, метка "Tape Mark" ).
Весьма важно ( на мой взгляд ) выяснить, как контроллер сигнализирует о том, что вместо ожидаемого заголовка блока на ленте попался "Tape Mark". Не зная этого - невозможно отличить блок данных файла от метки конца файла ( метка конца файла по своей сути - это точно такой же блок данных ).
Для этого тестирования программу нужно модифицировать так, чтобы она подавала только команду "2" и копировала буфер контроллера в компьютер, а команда "7" подавалась вручную. Это даст возможность после каждой команды "7" проверять содержимое регистров 176730 и 176732, чтобы определить те биты, которые контроллер устанавливает там при обнаружении на ленте различных меток.
Затем нужно взять ленту, содержащую файлы RT-11 и пройтись по ней, выдавая вручную команды "7" и проверяя регистры.
Запуская программу копирования буфера в компьютер - нужно прежде всего проверять значение R0, где возвращается число скопированных байт. Для блоков по 512 байт это должно быть число 514 ( 2 байта номера блока + 512 байт данных ).
Последний раз редактировалось Patron; 08.04.2011 в 14:55.
Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)