Страница 55 из 61

Re: Радио Рк-86

Добавлено: Вт окт 22, 2013 19:34:00
Ратмир
uldemir писал(а):Вот мой комментированный исходник
Спойлер

Код: Выделить всё

; ПОДПРОГРАММА ОПРОСА СОСТОЯНИЯ КЛАВИАТУРЫ
; ВЫХОДНЫЕ ПАРАМЕТРЫ В АККУМУЛЯТОРЕ
; A=00 КЛАВИША НЕ НАЖАТА
; A=FF КЛАВИША НАЖАТА
; ПОДПРОГРАММА МОДИФИЦИРУЕТ ВСЕ ЯЧЕЙКИ
;
CNSTAT: LDA     PC55    ; КЛАВИША РУС/ЛАТ НАЖАТА?
        ANI     80H
        JZ      RLPR    ; ЕСЛИ ДА, ТО JMP
        LDA     BUFLAG  ; А БЫЛА НАЖАТА ?
        ORA     A
        RNZ
RLPR:   PUSH    H
        LHLD    LASTKY  ; ЧИТАЕМ КОД ПОСЛЕДНЕЙ КЛАВИШИ
        CALL    SCAN    ; ОПРАШИВАЕМ КЛАВИАТУРУ
        CMP     L       ; СРАВНИВАЕМ С ТЕМ ЧТО БЫЛО
        MOV     L,A
        JZ      OLDKOD  ; КОД ТОТ-ЖЕ - ПОДАВЛЯЕМ ДРЕБЕЗГ
NEWKOD: MVI     A,01H   ; КОД НОВЫЙ, НАЖАТИЕ ПЕРВОЕ
        STA     PRNFLG
        MVI     H,15H   ; ИНИЦИИРУЕМ СЧЕТЧИК ПОДАВЛ. ДРЕБЕЗГА
QUT1:   XRA     A
QUT2:   SHLD    LASTKY  ; ПИШЕМ НОВЫЙ КОД
        POP     H
        STA     BUFLAG  ; И ВОЗВРАЩАЕМ 0
        RET
OLDKOD: DCR     H       ; УМЕНЬШАЕМ СЧЕТЧИК ПОДАВИТЕЛЯ
        JNZ     QUT1
        INR     A       ; СРОК ВЫШЕЛ.
        JZ      QUT2    ; ЕСЛИ ДЛЯ НЕНАЖАТОЙ КНОПКИ
        INR     A
        JZ      RUSLAT  ; ЕСЛИ ДЛЯ РУС/ЛАТ
        PUSH    B
        LXI     B,SNDKEY; ДЛЯ ОСТАЛЬНЫХ КЛАВИШ:
        CALL    L92     ; ВЫДАТЬ ЗВУК
        POP     B
        LDA     PRNFLG
        MVI     H,0E0H  ; ИНИЦИИРУЕМ СЧЕТЧИК ЗАДЕРЖКИ ДЛЯ
        DCR     A       ; АВТОПОВТОРА.
        STA     PRNFLG
        JZ      WTSECN
        MVI     H,40H   ; ИЛИ ПЕРИОД АВТОПОВТОРА.
WTSECN: MVI     A,0FFH  ; И ВОЗВРАЩАЕМ ПРИЗНАК НАЖАТИЯ.
        JMP     QUT2
RUSLAT: LDA     PC55    ; ОПРАШИВАЕМ РУС/ЛАТ
        ANI     80H
        JZ      RUSLAT  ; ПОКА НАЖАТА.
        LDA     REGR    ; ОТПУСТИЛИ...
        CMA             ; ТОГДА ИНВЕРТИРУЕМ РЕГИСТР
        STA     REGR
        JMP     NEWKOD
;
; ПОДПРОГРАММА ВВОДА СИМВОЛА С КЛАВИАТУРЫ
; ОЖИДАЕТ НАЖАТИЕ НА КЛАВИШУ И ВОЗВРАЩАЕТ
; В АККУМУЛЯТОРЕ КОД СИМВОЛА
; МОДИФИЦИРУЕТ ЯЧЕЙКУ ФЛАГА НАЖАТИЯ НА
; КЛАВИШУ
;
CONIN:  CALL    CNSTAT  ; ОПРОСИТЬ СОСТОЯНИЕ КЛАВИАТУРЫ
        ORA     A
        JZ      CONIN   ; ЖДАТЬ, ЕСЛИ НЕ НАЖАТА
        XRA     A
        STA     BUFLAG  ; ЗАПИСАТЬ ПРИЗНАК ОПУСТОШЕНИЯ БУФЕРА
        LDA     LASTKY  ; ПРОЧИТАТЬ КОД ИЗ БУФЕРА.
        RET
;
; ПОДПРОГРАММА ОПРОСА СОСТОЯНИЯ КЛАВИАТУРЫ
; ОПРАШИВАЕТ МАТРИЦУ. РЕЗУЛЬТАТ ВОЗВРАЩАЕТ
; В АККУМУЛЯТОРЕ:
; A=0FF - НЕ НАЖАТА
; A=0FE - РУС/LAT
; ИНАЧЕ КОД КЛАВИШИ
; ЯЧЕЙКИ НЕ МОДИФИЦИРУЕТ, РАБОТАЕТ С ЖЕЛЕЗОМ
;
SCAN:   LDA     PC55    ;
        ANI     80H     ; ПРОВЕРЯЕТ РУС/ЛАТ
        JNZ     CONT1
        MVI     A,0FEH  ; ЕСЛИ НАЖАТА,ТО ВОЗВР.0FEH
        RET
CONT1:  XRA     A
        STA     PA55    ; НА ВСЕ ГОРИЗОНТАЛИ ВЫДАТЬ 0
        STA     PC55    ; ПОГАСИТЬ СВЕТОДИОД
        LDA     REGR    ; КАКОЙ ТЕКУЩИЙ РЕГИСТР?
        ANI     01H
        ORI     06H
        STA     PU55    ; ЗАЖЕЧЬ СВЕТОДИОД В СООТВ. С ЯЧЕЙКОЙ
        LDA     PB55    ; ПРОЧИТАТЬ ВЕРТИКАЛЬНЫЕ ШИНЫ
        INR     A
        JNZ     PRESS
        DCR     A       ; ЕСЛИ  НЕ НАЖАТЫ, ТО ВОЗВР. 0FFH
        RET
PRESS:  PUSH    H       ; СКАНИРУЕМ МАТРИЦУ
        MVI     L,01H   ; H - СКОЛЬКО, L - ЧТО
        MVI     H,07H
SCNCYC: MOV     A,L
        RRC             ; СДВИГАЕМ ВПРАВО
        MOV     L,A     ; И ВЫВОДИМ НА ГОРИЗОНТАЛЬ 0
        CMA
        STA     PA55
        LDA     PB55    ; ЧИТАЕМ ВЕРТИКАЛЬНЫЕ ШИНЫ
        CMA
        ORA     A
        JNZ     WTPRSS     ; ЕСЛИ НАЖАТА, ТО ВЫВАЛИВАЕМСЯ
        DCR     H
        JP      SCNCYC
QNPRSS: MVI     A,0FFH  ; НЕНАЖАТА? ЗНАЧИТ ПОКАЗАЛОСЬ...
        POP     H       ; ВОЗВРАЩАЕМ 0FFH
        RET
WTPRSS: MVI     L,20H   ; H - # ВЕРТИКАЛИ. ПРОВ. УСТОЙЧИВОСТЬ
WTCYC:  LDA     PB55    ; ЕЩЕ РАЗ ПРОЧИТАЛИ,
        CMA
        ORA     A
        JZ      QNPRSS  ; ЧЕРТ, ВСЕ-ТАКИ ПОКАЗАЛОСЬ.
        DCR     L
        JNZ     WTCYC
        MVI     L,08H
CLCOD:  DCR     L       ; ВЫЧИСЛЯЕМ КОД КЛАВИШИ
        RLC
        JNC     CLCOD
        MOV     A,H
        MOV     H,L
        MOV     L,A     ; H- #HOR, L=A- #VERT.
        CPI     01H     ; ВЕРТИКАЛЬ ДЛЯ ДОП.КЛАВИАТУРЫ?
        JZ      DOPKEY  ; A=1
        JC      EXTKEY  ; A=0     0000VVV
        RLC             ;         000VVV0
        RLC             ;         00VVV00
        RLC             ;         0VVV000
        ADI     20H     ;       + 0010000
        ORA     H       ;         0VVVHHH
        CPI     5FH     ; ЕСЛИ СКАН-КОД = 5F
        JNZ     NOSPKY  ; ТО ЭТО ВСЕГДА ПРОБЕЛ
        MVI     A,20H
        POP     H
        RET
;               ТАБ,LF ,CR ,BSP,<- ,UP ,-> ,DOW
TABL1:  DB      09H,0AH,0DH,7FH,08H,19H,18H,1AH
;               HOM,ERA,ESC,F1 ,F2 ,F3 ,F4 ,F5 , А ЭТО ЗАЧЕМ?
TABL2:  DB      0CH,1FH,1BH,00H,01H,02H,03H,04H,05H
EXTKEY: MOV     A,H
        LXI     H,TABL2
        JMP     CLCTAB  ; ВЫБИРАЕМ ТАБЛИЦУ ПЕРЕКОДИРОВКИ
DOPKEY: MOV     A,H
        LXI     H,TABL1
CLCTAB: ADD     L       ; ВЫБРАЛИ ТАБЛИЦУ
        MOV     L,A     ; ВЫЧИСЛЯЕМ. В Н И М А Н И Е ! ! !
        MOV     A,M     ; ПЕРЕНОС В СТ. БАЙТ НЕ ПРОИЗВОДИТСЯ
        CPI     40H     ; ЕСЛИ СИМВОЛ НЕ "ЗБ",ТО ВОЗВРАЩАЕМСЯ
        POP     H
        RC
        PUSH    H
NOSPKY: MOV     L,A     ; КОД В "L"
        LDA     PC55    ; ЧИТАЕМ УПР. КЛАВИШИ
        MOV     H,A     ; И СОХРАНЯЕМ В "H"
        ANI     40H     ; ВЫДЕЛЯЕМ "CTRL"
        JNZ     NOCTRL
        MOV     A,L
        CPI     40H     ; КОД НЕ БУКВЕННЫЙ?
        JM      SHNOPR  ; ИДЕМ СМОТРЕТЬ "SHIFT"
        ANI     1FH
        POP     H
        RET
NOCTRL: LDA     REGR    ; CTRL НЕ НАЖАТА
        ORA     A       ; ЧИТАЕМ РЕГИСТР
        JZ      BASREG  ; ЕСЛИ LAT, ТО JMP
        MOV     A,L
        CPI     40H     ; КОД НЕ БУКВЕННЫЙ?
        JM      BASREG  ; ТОГДА ОБХОДИМ МАСКИРОВАНИЕ
        ORI     20H
        MOV     L,A
BASREG: MOV     A,H     ; "SHIFT" НАЖАТ ?
        ANI     20H
        JNZ     SHNOPR
        MOV     A,L     ; ДА? ТО ПЕРЕВОРАЧИВАЕМ 6-Й РАЗРЯД
        CPI     40H     ; ДЛЯ БУКВЕННЫХ КЛАВИШ.
        JM      NOLIT
        MOV     A,L
        XRI     20H
        POP     H       ; И ВОЗВРАЩАЕМСЯ.
        RET
NOLIT:  MOV     A,L     ; ЕСЛИ ЦИФРОВАЯ, ТО ОТНИМАЕМ 10H
        ANI     2FH
        MOV     L,A
SHNOPR: MOV     A,L     ; ЕСЛИ БУКВЕННЫЙ, ТО ВОЗВРАЩАЕМСЯ
        CPI     40H
        POP     H
        RP
        PUSH    H
        MOV     L,A
        ANI     0FH
        CPI     0CH
        MOV     A,L
        JM      CYFR    ; ЕСЛИ КЛАВИШИ ВЕРХНЕГО РЯДА,
        XRI     10H     ; ТО ВОЗВРАТ, ИНАЧЕ ПЕРЕВЕРНУТЬ
CYFR:   POP     H
        RET
uldemir а инициализацию, настройку 8255 ты где производил?

Re: Радио Рк-86

Добавлено: Вт окт 22, 2013 19:52:32
uldemir
Я - нет. Это авторы. А инициализация в самом начале

Код: Выделить всё

L00:MVI  A,8AH
    STA  PU55
т.е. в регистр управляющего слова загружается 8A и всё...

Re: Радио Рк-86

Добавлено: Вт окт 22, 2013 21:47:39
Rokl
Bear2011 писал(а): Вы можете использовать 2764-27256 надо просто подтянуть неиспользуемые разряды к +5В или 0 "земле" Правда они 28-выводные но извратиться можно.
Именно, вся прелесть 2732 в том, что они 24 ногие и отлично влезают по распиновке в панельку вместо РФ5.
Ратмир писал(а):В Москве кстати они есть под заказ http://www.chiptrade.ru/catalog/art_35_2732.html
только выдают на Митино :( минимум на 50 баксов
Привет, Ратмир.
В том то и дело, что в Москве их тоже нет. Будет как в том анекдоте, ты пойдешь искать 50 баксов, а они пойдут искать 2732. :)

Re: Радио Рк-86

Добавлено: Вт окт 22, 2013 23:20:31
petrenko
Я возможно нашёл, где в Москве вроде как есть ПЗУ-шки... Завтра позвоню человеку... :dont_know: Авось..

А Ассемблера не бойтесь, у 8080 он несложный. :)

И ещё - можно сфотографировать клавиатуру так, чтоб просматривались все дорожки по возможности ? ( в макро-режиме там или как то.. )
Если уж дописывать подпрограмму опроса, то заодно и таблицу соответствия придётся подправить.. :wink:

Re: Радио Рк-86

Добавлено: Ср окт 23, 2013 03:52:03
Ратмир
Rokl они есть, не проблема, если нужно скажи, могу прикупить себе и тебе с десяток :) кстати с Сингапура или с Ченьженя до Москвы посылка идет всего 3 дня, а до Уфы 14 дней :))
:) http://www.ebay.com/sch/i.html?_trksid= ... &_from=R40
но при подключении к Микрокому, они пока мне не потребуется, в Мониторе Микрокома я так понял у меня вообще нет инициализации ППА. Эта микросхема не задействована.
petrenko писал(а):
И ещё - можно сфотографировать клавиатуру так, чтоб просматривались все дорожки по возможности ?

на 53 странице я выкладывал фото в огромном формате :) но могу есще пофоткать

Re: Радио Рк-86

Добавлено: Ср окт 23, 2013 05:26:20
Bear2011
вся прелесть 2732 в том, что они 24 ногие и отлично влезают по распиновке в панельку вместо РФ5
Это понятно. Просто если с ними такие сложности не проще ли сделать переходку для 2764-27256. Делали ведь во времена "Спектрума" переходку для AY8910 чтобы ставить в панельку AY9812 Плюс еще возможность иметь несколько разных МОНИТОРов

P.S. А 2732 я сам ни разу в руках не держал :dont_know:

Re: Радио Рк-86

Добавлено: Ср окт 23, 2013 06:58:04
Ратмир
Кто подскажет! на PC-шной клаве "АР2" какая кнопка? в редакторе Микрон используется.

Для начала нашел табличку, может с нее начать адаптацию Микрокома к суперклаве :dont_know: и вней внести исправления от petrenko
Вроде программка Монитор крохотная, а сколько нужно знать :write:

Re: Радио Рк-86

Добавлено: Ср окт 23, 2013 17:03:58
uldemir
АР2 - "авторегистр 2" - код 0x1F, а по буржуйски просто ESC - escape. :))

Re: Радио Рк-86

Добавлено: Ср окт 23, 2013 17:24:45
Ратмир
В общем просто нужные клавиши обособлю и все! и МГТФ-ом смонтирую!
petrenko микрушки выкусывать не буду :) я сунулся там такая каша, век надо разбираться.
А ассемблер обязательно потихоньку освою :beer:
спасибо

Re: Радио Рк-86

Добавлено: Ср окт 23, 2013 17:53:52
Rokl
Ратмир писал(а):Кто подскажет! на PC-шной клаве "АР2" какая кнопка? в редакторе Микрон используется.:
Кнопка левая "Alt".
Для начала нашел табличку, может с нее начать адаптацию Микрокома к суперклаве :dont_know: и вней внести исправления от petrenko
Вроде программка Монитор крохотная, а сколько нужно знать :write:
Ппрограмма работы с клавой в мониторе находится с адреса 0FE72h по 0FF51h.
Попробуй, заменить только подпрограмму "ввод символа с клавиатуры"...Должно всё заработать.

Re: Радио Рк-86

Добавлено: Ср окт 23, 2013 18:06:36
Ратмир
На той клавиатуре с линиями разобраться не могу, начал прозванивать, некоторые выходят на к155кп5

Re: Радио Рк-86

Добавлено: Ср окт 23, 2013 18:14:44
Rokl
Ратмир писал(а):Rokl они есть, не проблема, если нужно скажи, могу прикупить себе и тебе с десяток :) кстати с Сингапура или с Ченьженя до Москвы посылка идет всего 3 дня, а до Уфы 14 дней :))
:) http://www.ebay.com/sch/i.html?_trksid= ... &_from=R40
но при подключении к Микрокому, они пока мне не потребуется, в Мониторе Микрокома я так понял у меня вообще нет инициализации ППА. Эта микросхема не задействована.
В Микрокоме 3 микры ППА. Первая, старая клавная, она инициализируется и работает со светиком на плате (РУС/ЛАТ) и, если допаять детальки, то и с магнитофоном. Вторая ППА инициализируется импульсом "Сброс" и используется при обращении Микрокома к LPT порту, Ну и третья ППА инициализируется импульсом "сброс" и постоянно работает с RAM/ROM диском.
Тебе D2732 нужна будет только в РК для увеличения количества директив и драйверов. Главный вопрос, как тебе её потом запрограммировать. Мне ПЗУ 2732 нужно исключительно из любопытства. Для конкретного дела они мне не нужны, ну, если только РКшную плату не сваяю в PCADе и клон задумаю сделать, естественно с RAM/ROM диском. Тогда 2732 будет просто необходима. :)

Re: Радио Рк-86

Добавлено: Ср окт 23, 2013 18:35:06
Rokl
Ратмир писал(а):На той клавиатуре с линиями разобраться не могу, начал прозванивать, некоторые выходят на к155кп5
Просто клава 8х8 + куча светодиодов.
одна ИЕ5 гоняет ИД3 по кругу, а вторая КП5. получается с выхода КП5 идет сигнал нажатой клавиши, который останавливает счетчики на момент нажатия кнопки и можно считать код нажатой клавиши..
Но это не долее чем предположение, но работать клава должна приблизительно так. Дополнительные 8 выводов ИД3 идут наверное на включение кучи светодиодов, а кучка ТМ2 похоже рулит спецклавишами.

Re: Радио Рк-86

Добавлено: Ср окт 23, 2013 18:38:50
Ратмир
Да уже давно бы спаял, petrenko просит не курочить :))

Re: Радио Рк-86

Добавлено: Ср окт 23, 2013 18:57:51
Bear2011
одна ИЕ5 гоняет ИД3 по кругу, а вторая КП5. получается с выхода КП5 идет сигнал нажатой клавиши, который останавливает счетчики на момент нажатия кнопки и можно считать код нажатой клавиши.
Если так то очень похоже на схему из Радио №11 или 12 за 1986 г. Там была статья про мембранную клавиатуру работающую по такому же принципу. Если найдете схему может поможет вам разобраться со своей

Re: Радио Рк-86

Добавлено: Ср окт 23, 2013 19:37:55
Ратмир
Да схожесть есть из 12 номера 40,41 стр.
у меня 565РТ4 , 155кп5, а 589ир12 вообще нет.
была бы схема, было бы проще, а так я слепышь

Вечером решил, дай подключу РК-шку, включил! на экране белая линия и мишура. Все думаю приплыл. потом вспомнил как учил Rokl, искать обрыв или залипуху. За пять минут нашел обрыв дорожки, видно перетравил была как волосок. Все работает как часики.

Клавиатуру все-таки делаю обычную, ненужные дорокжи со стороны кнопок, где не подлезь просто высверлил аккуратно и незаметно.

Re: Радио Рк-86

Добавлено: Пт окт 25, 2013 05:11:28
petrenko
Эх жаль.
Ведь если данная клавиатура "по кругу крутит", то РК могла бы вообще опросом и антидребезгом не заниматься - только готовый код из регистра считывать и всё ! А как "подвесить" регистр в адресное пространство - сообразили бы, не сложно..

( А я занят был, вот только сейчас до WWW добрался.. )

Re: Радио Рк-86

Добавлено: Пт окт 25, 2013 08:59:20
Ратмир
petrenko писал(а):Эх жаль.
( А я занят был, вот только сейчас до WWW добрался.. )
Да не расстраивайся, кстати один кот примерно такую же продает, но без корпуса. в разделе "Продам"

а какая длина проводков допускается от клавиатуры до платы РК-86?

Re: Радио Рк-86

Добавлено: Пт окт 25, 2013 23:36:53
Rokl
Ратмир писал(а):а какая длина проводков допускается от клавиатуры до платы РК-86?
У меня к Микрокому проводок от РКшной клавы с пол метра и нормально работает.

Re: Радио Рк-86

Добавлено: Сб окт 26, 2013 05:16:34
Ратмир
Rokl писал(а): с пол метра и нормально работает.
Это очень хорошо! 0,5 метра вполне достаточно.