Код:
MUZA::
MOV R0,-(SP)
MOV PC,R0 ;Вычислить адрес программы обработки
ADD #Sndm-.,R0 ;прерываний от программируемого таймера
MOV R0,@#100 ;Загрузить этот адрес в вектор прерывания
MOV PC,R0 ;Вычислить адрес программы обработки
ADD #MUZON-.,R0 ;музыкой
MOV R0,BEGIN ;Загрузить этот адрес в ячейку BEGIN
MOV R0,ADRESS ;Загрузить этот адрес в ячейку ADRESS
MOV (SP)+,R0
RTS PC
BEGIN: .WORD 0 ;Ячейка хранения начального адреса массива
ADRESS: .WORD 0 ;Ячейка хранения текущего адреса
Sndm:
BIS #400,@#177054
MTPS #0 ; Разрешить все прерывания
MOV R0,-(SP)
MOV R1,-(SP)
MOV R2,-(SP)
MOV R3,-(SP)
MOV ADRESS, R1
MOV #177101, R2
MOV #177102, R3
1$:
CLR R0
BISB (R1)+,R0
CMPB R0 , #375 ;375
BNE 2$
MOV BEGIN,R1
BR 4$
2$:
CMPB R0, #377
BEQ 4$
3$:
MOV #177777, (R3); @#177102 COM #0 подготавливаем шину
COM R0
MOV R0, (R2) ;@#177101 ; передали № регистра
MOV #177774,(R3) ; @#177102 ; COM #3 записали № регистра
CLR R0
BISB (R1)+,R0
MOV #177777,(R3) ; @#177102 ; COM #0 подготавливаем шину
COM R0
MOV R0, (R2) ;@#177101 ; передали данные регистра
MOV #177775,(R3) ; @#177102 ; COM #2 записали данные регистра
BR 1$
4$:
MOV R1, ADRESS
MOV (SP)+,R3
MOV (SP)+,R2
MOV (SP)+,R1
MOV (SP)+,R0
MTPS #340 ; Запрет для гарантии окончания V100
BIC #400,@#177054 ; Включить сетевой таймер в ПП
RTI
MUZON:
.BYTE 377,0, 337, 1, 3, 2, 65, 4, 12, 5, 1, 7, 20, 10, 17, 11
.BYTE 13, 12, 17, 13, 120, 15, 14, 377, 1, 5, 2, 117, 4, 326, 5, 0
.BYTE 7, 70, 11, 14, 12, 16, 377, 1, 7, 2, 237, 4, 76, 5, 1, 10
.BYTE 16, 11, 15, 12, 15, 377, 1, 11, 4, 12, 10, 14, 377, 1, 1, 4
.BYTE 326, 5, 0, 7, 71, 10, 20, 12, 14, 377, 2, 236, 4, 76, 5, 1
проверено - работает.