Да, ладно, пусть набивает, если хочется. Всего 44 килобайта текста)
Вот недописанный тест каналов (всего-то) занимает уже 80 килобайт)
Вид для печати
Нихт гутен. RT-11 по запросам все складывает в буфер и устанавливает флаг разрешения прерывания (в 177564). А уже п/п обработки прерывания опустошает этот буфер. Так что лучше выводить через 177564/177566 в режиме опроса флага готовности без всяких прерываний.
---------- Post added at 21:01 ---------- Previous post was at 21:00 ----------
Господи!!! :o:o:o А там то что можно такое тестировать?
А вот так-то. Попробуй подкопайся, когда нужно управлять и ЦП, и ПП одновременно, при этом честно под системой, при этом в реальном времени меняя условия возникновения прерываний, снятия запросов и т.д.
---------- Post added at 21:08 ---------- Previous post was at 21:07 ----------
Распиши подробно на примере.
Со стороны ЦП:
Канал 0 (приемник, клавиатура) - бит прерываний все время стоит, но если не жать клавишу, то и не помешает.
Канал 0 (источник, терминал) - бит прерываний сбрасывает операционная система, когда опустошиться буфер.
Канал 1 (приемник) - вообще стандартно не используется.
Канал 1 (источник, принтер) - т.к. не используется, то и прерывания запрещены.
Канал 2 (источник) - стандартно драйвер MZ разрешает прерывания после передачи адреса массива параметров. После того как ПП выполнил работу, он читает четвертый байт и возникает прерывание в ЦП. Но т.к. программа уже прочитана, то и прерывания запрещены.
Со стороны ПП все проще - запуск п/п пользователя имеет самый низкий приоритет в диспетчере процессов, так что после того как все обработается (в том числе и вывод на экран), тогда и вызовется подпрограмма.
Так что ничего запрещать не надо, а во время теста просто не жать клавиши.
Эти тайминги (на первый взгляд) один в один совпадают с таймингами ВМ1:
С точностью до такта.Код:R0 (R0) (R0)+ @(R0)+ -(R0) @-(R0) Addr @#Addr @Tab(R0)
Tst 14 29 29 42 30 43 42 42 56
TstB 14 29 29 42 30 43 42 42 56
MTPS 26 35 35 48 35 49 48 48 61
MFPS 14 41 41 54 41 55 54 54 67
XOr 14 43 43 56 44 56 56 56 70
SXt 14 41 41 54 41 55 54 54 67
SwaB 14 41 41 54 41 55 54 54 67
Clr 14 41 41 54 41 55 54 54 67
ClrB 14 41 41 54 41 55 54 54 67
Inc 14 41 41 54 41 55 54 54 67
IncB 14 41 41 54 41 55 54 54 67
Dec 14 41 41 54 41 55 54 54 67
DecB 14 41 41 54 41 55 54 54 67
AdC 14 41 41 54 41 55 54 54 67
AdCB 14 40 40 54 41 55 54 54 67
SbC 14 41 40 54 41 55 54 54 67
SbCB 14 40 41 54 41 55 54 54 67
ASL 14 41 41 54 41 55 54 54 67
ASLB 14 41 41 54 41 55 54 54 67
ASR 14 41 40 54 41 55 54 54 67
ASRB 14 41 41 54 41 55 54 54 67
RoL 14 40 41 54 41 55 54 54 67
RoLB 14 40 40 54 41 55 54 54 67
RoR 14 41 40 54 41 55 54 54 67
RoRB 14 41 41 54 41 55 54 54 67
Com 14 40 41 54 41 55 54 54 67
ComB 14 40 41 54 41 55 54 54 67
Neg 14 41 40 54 41 55 54 54 67
NegB 14 41 41 54 41 55 54 54 67
Jmp 24 26 35 35 35 48
Call 39 40 49 49 49 61
Я еще делаю перед тестом вот это:
KeyOFF: .ASCII <27><91><50><104><128>
Чтобы не реагировал на клавиши пользователя.
---------- Post added at 22:19 ---------- Previous post was at 22:17 ----------
Может быть у них и абсолютно одинаковое ядро, но предвыборка команды в ВМ2 должна влиять. Да и скорость работы памяти надо учитывать. У нас же тест на конкретном железе, с конкретной памятью.
Если команда выполняется ядром быстрее, чем цикл шины "ВВОД" ( а это справедливо для большинства регистровых команд ), то предвыборка влиять не может.
Что же до быстродействия памяти - то да, безусловно.
Потому я и удивился, что число тактов, затрачиваемых на выполнение большинства команд - совпадают в обоих тестах один-в-один.