принтер в пдп-11 - PullRequest
       33

принтер в пдп-11

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

У меня есть этот фрагмент кода. Может кто-нибудь объяснить, почему это не работает, я хочу каждые 5 секунд печатать "Синтаксическая ошибка"

заранее спасибо

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

main:   mov #main, sp

 mov #outp, @#64
 mov #200, @#66

        mov #clock, @#100
        mov #300, @#102

 mov #101, @#tks
 mov #100, @#tps
 mov #100, @#lcs

prog:   mov #msg, -(sp)
 br outp


clock:  inc time_is
 cmp time_is, time_out
 bne clk_end
 clr time_is
 jmp prog
clk_end:rti


outp:   
 mov r1,-(sp)
        mov r2,-(sp)
        mov 6(sp),r2
str_loop:
        movb (r2)+,r1
        beq pr_str_end
        jsr pc, print_char
        br str_loop
pr_str_end:
        mov (sp)+,r2
        mov (sp)+,r1
        rts pc

print_char: 
        tstb @#tps
        bpl print_char
        movb r1, @#tpb
        rts pc

. = torg + 3000
msg:.ascii<Syntax Error>
    .byte 0
    .even

time_out: .word 300
time_is: .word 0


buffer: .blkw 3

Ответы [ 2 ]

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

Discailmer: мои знания о PDP-11 немного устарели, поэтому убедитесь, что это имеет смысл ...

У вас 2 проблемы в вашем коде:

  1. Часть main вызывает prog, что вызывает outp, когда она должна просто бесконечно повторяться, так что clock вызовет функцию печати.Попробуйте поставить mainloop: br mainloop в конце main (непосредственно перед prog).

  2. То, как это написано прямо сейчас, вы вводите outp путем ветвления, новыход из него с rts pc, что неправильно.clock можно вызвать prog, используя jsr prog.

Другая небольшая проблема заключается в том, что печать сообщения может занять более 5 секунд (кто знает?), Поэтому вам нужно защититьclock метод снова вызывает outp, если это еще не сделано.

Удачи.

1 голос
/ 21 июня 2010

Выглядит, что указатель строки в стеке равен 4 (sp), а не 6 (sp).

...