Всем здраствуте.
Вот изобретаю спой велосипед с нуля для разминки мозга.
Столкнулся с проблемой при подключении PS/2 клавы.
Перепробовал все... 2 недели шаманю, а воз и ныне там. Хоть бросай все.
Вот сама схемка (неммного упрощенная). ~STB даю кнопкой а не с HC595 как в оригинале... Что б избежать конфлита LS и HC серии. Все на LS.
https://zx-pk.ru/attachment.php?atta...6&d=1629067257
Вот что на осцилографе (желтый - ~STB строб, красный - ~INT)
https://zx-pk.ru/attachment.php?atta...7&d=1629067267
Для уверенности в самом начале гружу в А 55H, что и видно на порту А.
https://zx-pk.ru/attachment.php?atta...8&d=1629067273
Вот собственно ПЗУ прошито этим.
0001 0000 ; Test #08
0002 0000 ; Test PIO interrupt on port B
0003 0000
0004 0000 PORTA .equ 80h ; port A data
0005 0000 CNTRLA .equ 81h ; port A control
0006 0000 PORTB .equ 82h ; port B data
0007 0000 CNTRLB .equ 83h ; port B control
0008 0000
0009 0000 .org 0h ; RESET
0010 0000 31 F0 FF ld sp, 0fff0h
0011 0003
0012 0003 ED 5E im 2 ; cpu interrupt mode 2 (vectored)
0013 0005 3E 00 ld a, 0h
0014 0007 ED 47 ld i, a
0015 0009
0016 0009 3E 0F ld a, 0fh ; output
0017 000B D3 81 out (CNTRLA), a
0018 000D
0019 000D 3E 4F ld a, 4fh ; input
0020 000F D3 83 out (CNTRLB), a
0021 0011
0022 0011 3E 28 ld a, 28h ; vector address
0023 0013 D3 83 out (CNTRLB), a
0024 0015
0025 0015 3E 87 ld a, 10000111b ; 87h, 83h - enable interrupts 10000111b
0026 0017 D3 83 out (CNTRLB), a
0027 0019
0028 0019 3E 55 ld a, 55h
0029 001B 21 00 80 ld hl, 8000h
0030 001E 77 ld (hl), a
0031 001F
0032 001F FB ei
0033 0020
0034 0020 7E MAIN: ld a, (hl)
0035 0021 D3 80 out (PORTA), a
0036 0023 C3 20 00 jp MAIN
0037 0026
0038 0026
0039 0028 .org 28h
0040 0028 08 ex af, af' ; save A, FLAGS
0041 0029 7E ld a, (hl)
0042 002A 3C inc a
0043 002B 77 ld (hl), a
0044 002C 08 ex af, af' ; restore A, FLAGS
0045 002D FB ei
0046 002E ED 4D reti
0047 0030
0048 0030 .END
Схему саму прозвонил раз 20, все правильно (соответствует задуманной).... Код тоже перепробовал разный... 87h, 83h для включения прерываний.
По адресам тоже вроде, как видно в .lst файле.
Если написать без прерываний, просто выдавать входной порт на выходной - работает.
Посмотрите свежим глазом, может я какого-нить костыля не вижу... глаз замылился?