Но это только в БК-0011, в БК-0010(есть в БК-0011) это прерывание от вывода ПРТ разъемов "МПИ" и "УП".
Вид для печати
В БК0010-01 таймер был недокументирован. В Армянских БК-шках он вообще не работал.
В БК0011М было прерывание по таймеру.
У меня есть подпрограмма синхронизации экрана с таймером БК-0010. Закончу игру - выложу исходники. Сможете взять оттуда.
Вложение 68354
Вложение 68355
Генератор случайных чисел спрашивали. Вот, например. Простой, короткий, быстрый, с хорошим разбросом.
Использование таймера закомментировано (символами "точка с запятой"), но кому надо - может раскомментировать. Единственное, между запуском таймера и началом работы генератора вставьте какую-то пользовательскую активность типа нажатия клавиш в меню и т.п., чтобы при каждом запуске получалось действительно случайно.
Первая картинка - код, вторая результат вывода на экран 16536 случайных слов:
Вложение 68360 Вложение 68361
Ну и, понятное дело, если в вашей программе много свободных регистров, то надобность в ячейках памяти RND1 и RND2 отпадает, всё можно хранить в регистрах R1 и R2. Такая процедура будет работать раза в два быстрее. Или в три.Код:; Random generator for BK-0010 (c) Manwe/SandS 2019
; Compile this source with PDPy11: https://github.com/imachug/PDPy11
; TIMER=177712 ; timer port address
; MOV #123,@#TIMER-4 ; timer initial value
; MOV #1,@#TIMER ; stop and init timer
; MOV #20,@#TIMER ; start timer
MOV #20000,R0 ; generate 20000 random numbers
MOV #40000,R3 ; screen address
1: CALL RND
MOV R1,(R3)+ ; put random number on the screen
SOB R0,1
HALT
RND: MOV RND1,R1
MOV RND2,R2
ROR R1
ROL R2
SWAB R2
; ADD @#TIMER-2,R2
XOR R2,R1
MOV R1,RND1
MOV R2,RND2
RET
RND1: .WORD 173451
RND2: .WORD 54102
.END
у меня такая - но игрушки все работали нормально, фотка платы тут,
машинка кстати живая тока клавиатура дребезг ужасен
Как будет выглядеть самый красивый PUSHA;POPA...
Несколько я уже видел... не впечатлили...
Первое предложение, которое пришло в голову:
Занимает больше, чем 5 push’ей или 5 pop’ов подряд. Так что практического смысла не имеет.Код:PUSHA: MOV R0,-(SP)
ADD #100,PUSHA
DEC #5
BPL PUSHA
POPA: MOV (SP)+,R5
DEC POPA
DEC #5
BPL POPA
А также эти процедуры одноразовые. Так как самомодифицируются. Стало быть, надо их выправлять перед началом.