Вот новая версия программы:
Кстати, вполне возможно, что после чтения блока ленты в буфер контроллера командой "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 - перемотка ленты на блок вперёд




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