часы на пдп-11 - PullRequest
       53

часы на пдп-11

2 голосов
/ 21 июня 2010

Я немного запутался из-за простой программы, которую я написал. объясните пожалуйста, почему он выходит после печати только одного символа, я ожидал печатать меня символ каждые 5 секунд, заранее спасибо

tks = 177560
tkb = 177562
tps = 177564
tpb = 177566
lcs = 177546
. = torg + 2000

main:   mov #main, sp

        mov #clock, @#100  ; vector interrupt of the clock 100-102
        mov #300, @#102    ; 

        mov #100, @#lcs    ; here I enable interrupt-enable of the clock

prog:   clr r0             ; here endless loop
        beq prog
        halt

clock:  inc count
        cmp count, timeout
        bne clk_end
        clr count
        mov #'*, @#tpb
clk_end:rti

. = torg + 3000
timeout: .word 300000
count: .word 0

Ответы [ 3 ]

2 голосов
/ 22 июня 2010

Это, безусловно, проблема, связанная с симулятором, поскольку я пытался запустить ваш код, и он отлично работает!

Вы случайно не учитесь в Технионе?

0 голосов
/ 22 июня 2010

Я думаю, что режим для часов должен быть не 0, а 1, загрузить его с 110 вместо 100. См. Руководство по программируемым часам реального времени KW11-P.

0 голосов
/ 22 июня 2010

Я не знаком с PDP-11, но я написал код прерывания для других процессоров.На других процессорах описанное вами поведение может произойти, если регистр флагов не сохраняется подпрограммой прерывания.Если между двумя инструкциями clr r0 и beq prog произошло прерывание, и обработчик прерывания очистил равный бит в регистре флагов, это вызвало бы описанное вами поведение.знаком с ассемблером PDP-11, но вы можете попытаться сохранить состояние регистра флагов при входе в процедуру прерывания и восстановить его непосредственно перед инструкцией rti.Возможно, используя PDP-11 эквивалент инструкции 80x86 push.

...