Радио Рк-86
Re: Радио Рк-86
Жалко там нет исходников. Так можно было бы спортировать на те микросхемы, что есть под рукой.
- Реклама
Re: Радио Рк-86
да только 48 или 88 мегу надоuldemir писал(а):Жалко там нет исходников.
хотя в магазинах их полно
Re: Радио Рк-86
Кстати по поводу МОНИТОРа на 32 странице есть дизассеблированный текст без комментариев uldemir выкладывал
http://radiokot.ru/forum/viewtopic.php? ... 9#p1249959
http://radiokot.ru/forum/viewtopic.php? ... 9#p1249959
Re: Радио Рк-86
Ду ужBear2011 писал(а): есть дизассеблированный текст без комментариев uldemir выкладывал
http://radiokot.ru/forum/viewtopic.php? ... 9#p1249959
нашел один комментарий
- Вложения
-
- ввод.JPG
- (34.97 КБ) 1112 скачиваний
Последний раз редактировалось Ратмир Пн окт 21, 2013 15:29:58, всего редактировалось 1 раз.
-
petrenko
- Друг Кота
- Сообщения: 5326
- Зарегистрирован: Вт фев 21, 2012 13:51:55
- Откуда: Начинающий
- Контактная информация:
Re: Радио Рк-86
Подскажу пренепременно, только сейчас я маленько занят, к 23 часам доберусь до хаты, сообщу точки входа в подпрограммы.
И этот кусочек кода тоже постараюсь прокомментировать, разъяснить что именно там делается..
И этот кусочек кода тоже постараюсь прокомментировать, разъяснить что именно там делается..
Последний раз редактировалось petrenko Пн окт 21, 2013 15:32:14, всего редактировалось 1 раз.
< виртуальная "кнопочка" >--( WWW ) <- Убедительная просьба интересующимся старыми компьютерами типа РК86 - не пишите в теме в барахолке, пишите Ваши вопросы в ( лс ) пожалуйста
- Реклама
Re: Радио Рк-86
Хорошоpetrenko писал(а):Подскажу пренепременно, к 23 часам доберусь до хаты, сообщу точки входа в подпрограммы.
Re: Радио Рк-86
Вот мой комментированный исходник, когда я переделывал монитор под 60к. Так что отличия уже могут быть.
Спойлер
Код: Выделить всё
; ПОДПРОГРАММА ОПРОСА СОСТОЯНИЯ КЛАВИАТУРЫ
; ВЫХОДНЫЕ ПАРАМЕТРЫ В АККУМУЛЯТОРЕ
; 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
RETRe: Радио Рк-86
uldemir Вопрос если можно, какой объем занимает Монитор?, и возможно его изменение в сторону увеличения, т.е. увеличение размера самой программы.
Re: Радио Рк-86
Монитор занимает одну ПЗУ ёмкостью 2 килобайта. В своё время тоже мучился с этой проблемой. Первое решение - выкинуть ненужное: команды X и, соответственно, упростил команду G. Так как для отладки пользовался другими средствами. Потом еще чего-то... А потом сделал так что можно было использовать 2 ПЗУ по 2 килобайта. Один чисто с функциями ввода-вывода, а второй, с программой монитор. Правда монитор мне особо не был нужен, так как я грузил CP/M и работал уже в нём. Или ФОРТ.
Увлёкся. А по делу - увеличить можно всё... Проблема в другом - кто это будет поддерживать.
Увлёкся. А по делу - увеличить можно всё... Проблема в другом - кто это будет поддерживать.
Re: Радио Рк-86
Я про изменения которые предложил petrenko, для адаптации моей "супер" клавиатуры 
нашел на первой странице твой пост
нашел на первой странице твой пост
Вообще-то пару лет назад у меня тож был бздык - делал один проектик и для него надо было кошерную РК (без доработок) - так вот самая большая проблема для меня оказалась - клавиатура.
Re: Радио Рк-86
Удастся уместить или нет - трудно сказать, пока не будет точно ясно какие изменения нужно внести. А вторую ПЗУ добавить проблемы нет. Собственно, даже можно найти и воткнуть вместо РФ2 - 27C32. И тогда просто завести туда еще одну линию адреса. А для второй ПЗУ надо делать дополнительный дешифратор (для него потребуется одна микросхема типа ЛА3).
Re: Радио Рк-86
Для второй ПЗУ РФ2 доп дешифратор делать не надо, достаточно на ножки выбора кристалла обеих ПЗУ вывести старшую адресную линию (А13) на доп ПЗУ её нужно вывести через свободный инвертор.uldemir писал(а): Собственно, даже можно найти и воткнуть вместо РФ2 - 27C32. И тогда просто завести туда еще одну линию адреса. А для второй ПЗУ надо делать дополнительный дешифратор (для него потребуется одна микросхема типа ЛА3).
А ПЗУ 2732 найти не реально. их и в то время не найти было, т.к. в Союзе их не выпускали, только в ГДР делали U2732СС.
Есть у меня одна U2732CC. Не юзаная, как раритетный экспонат держу. А вот U2704CC разломал давно по глупости, остался только корпус керамический, теперь жалею.
Re: Радио Рк-86
Так для такого случая тебе Микроком и нужен. Ассемблер есть, подключай свою хитрую клаву к ВВ55 на Микрокоме, которая на старую клавиатуру работала и ваяй драйвер, благо в энергонезависимом RAMДиске можно промежуточные варианты драйвера сохранять. Как клава заработает, оттранслируешь драйвер ассемблером на любой нужный тебе адрес и дальше придется монтировать новый монитор для РК. Благо в старом мониторе есть переход на второе ПЗУ монитора с адреса F000. с этого адреса оттранслируешь машинные коды драйвером и твоя клава будет работать с РК. Это в общем твои действия, а часности нужно смотреть по мере продвижения проекта вперед.Ратмир писал(а):... , как ты себе представляешь мои дальнейшие действия![]()
мне проще выковорить необходимое колличество кнопок и собрать на мотажке![]()
Или, выковыривай кнопки и ваяй обычную РКшную клаву. Герконовые кнопки отличные. С ними РКшная клава работает без дребезга, без залипаний, мягко и надежно. Клава РКшки с обычными кнопками в подметки ей не годится.
Re: Радио Рк-86
Rokl Привет! Рад встрече
На счет Микрокома это в точку!
как я сам не допер
нас молодежь все время учить надо
немного не понятно как будущий драйвер затолкать в "Монитор", но это мелочи..
теперь я хоть буду знать в каком направлении двигаться
на счет 2732 - К573РФ3 не аналог ли?
С уважением,
Ратмир
На счет Микрокома это в точку!
немного не понятно как будущий драйвер затолкать в "Монитор", но это мелочи..
теперь я хоть буду знать в каком направлении двигаться
на счет 2732 - К573РФ3 не аналог ли?
С уважением,
Ратмир
Последний раз редактировалось Ратмир Вт окт 22, 2013 18:43:54, всего редактировалось 1 раз.
Re: Радио Рк-86
Нет РФ3 16-разрядное ПЗУ с организацией 4К*16на счет 2732 - К573РФ3 не аналог ли?
Вы можете использовать 2764-27256 надо просто подтянуть неиспользуемые разряды к +5В или 0 "земле" Правда они 28-выводные но извратиться можно. А можно зашить в них несколько разных МОНИТОРов и переключать вручную
Re: Радио Рк-86
В Москве кстати они есть под заказ http://www.chiptrade.ru/catalog/art_35_2732.html
только выдают на Митино
минимум на 50 баксов
только выдают на Митино
- Вложения
-
- облом.JPG
- (34.64 КБ) 345 скачиваний
-
petrenko
- Друг Кота
- Сообщения: 5326
- Зарегистрирован: Вт фев 21, 2012 13:51:55
- Откуда: Начинающий
- Контактная информация:
Re: Радио Рк-86
Добрый вечер.
Нет, РФ3 не аналог ни разу, если у Вас такие есть - "застолблю" на всякий случай все - они мне в ДВК дюже треба.
Вам найду нужные хоть наши хоть "буржуйские"..
там вместо кусочка кода ( любезно прокомментированного "uldemir" ) :получится :
Но и этот код можно ещё оптимизировать..
Точки входа ( как и обещал, выкладывю ) :
Нет, РФ3 не аналог ни разу, если у Вас такие есть - "застолблю" на всякий случай все - они мне в ДВК дюже треба.
Вам найду нужные хоть наши хоть "буржуйские"..
Мои изменения не увеличат объём кода .Ратмир писал(а):Я про изменения которые предложил petrenko, для адаптации моей "супер" клавиатуры
нашел на первой странице твой пост..
там вместо кусочка кода ( любезно прокомментированного "uldemir" ) :
Код: Выделить всё
SCNCYC: MOV A,L
RRC ; СДВИГАЕМ ВПРАВО
MOV L,A ; И ВЫВОДИМ НА ГОРИЗОНТАЛЬ 0Код: Выделить всё
SCNCYC: MOV A,L
DCR A ; уменьшаем на 1 то есть после ид3 в сущности тоже сдвигаем - "0"бит "бежит" по 16 линиям так же, как "бежал" по 8 линиям..
MOV L,A ; И ВЫВОДИМ НА ГОРИЗОНТАЛЬ 0Точки входа ( как и обещал, выкладывю ) :
Для удобства разбора ниже под "спойлером" прокомментированный код из Вашего сообщения :0F803h Ввод символа с клавиатуры - в регистре A получим код
0F812h Опрос состояния клавиатуры (A==00 )=>ни одна не нажата (A==0FFh)=>есть нажатия
0F81Bh Опрос кода нажатой клавиши (A==0FFh)=>ни одна не нажата (A==0FEh)=>"РУС/ЛАТ" другие значения - код нажатой
Спойлер
Код: Выделить всё
;============
;wwod s klaviatury
;====
FE01: LDA 8002 ; Из-за особенностей вм80 и дешифратора выбора устройств лучше применить LDA 8282
ANI 80h ;логическое "и" A и байта 80hex==1000 0000bin то есть обнуление младших 7 бит A
JZ FE0E ; ну а если старший бит, который не обнуляли тоже оказался "0", то "прыг" на адрес FE0E
LDA 7605 ; содержимое ячейки памяти по адресу 7605 заслать в A
ORA A ;
RNZ ; если A не равно "0", то возврат из подпрограммы
FE0E: PUSH H ; сохранение в стек пары HL
LHLD 7609 ;загруз. содержимого ячеек памяти с адресами 7609 и 760A в пару HL
CALL FE72 ; вызов подпрограммы по адресу
CMP L ; сравнение содерж. рег. A и L
MOV L,A ;
JZ FE2A ; если A==0 то прыг на адрес
FE1A: MVI A,01h ; засыл 01hex в A
STA 760B ; из A в яч.памяти с адресом 760B
MVI H,15h ; засыл 15hex в рег. H
FE21: XRA A ;
FE22: SHLD 7609 ; содержимое пары HL в яч.пам. с адресами 7609 и 760A
POP H ; извлечение-восстановление содержимого пары HL из стека
STA 7605 ; A в яч.пам. с адресом 7605
RET ; возврат из подпрограммы
FE2A: DCR H ; (HL)<=(HL-1)
JNZ FE21 ; если A не равно "0", то прыг на адрес FE21
INR A ; (A)<=(A+1)
JZ FE22 ; если A==0 ,то прыг на адрес FE22
INR A ; (A)<=(A+1)
JZ FE51 ; если A==0 ,то прыг на адрес FE51
PUSH B ; сохранение пары BC в стеке
LXI B,5003 ; загруз. в пару BC содерж.яч.пам. с адресами 5003 и 5004
CALL FD27 ; вызов подпрограммы по адресу
POP B ; извлечение-восстановление пары BC из стека
LDA 760B ; загруз. в A содерж.яч.пам. с адресом 760B
MVI H,E0h ; в рег.H байт E0hex
DCR A ;
STA 760B ; содерж.рег. A в яч.пам. с адресом 760B
JZ FE4C ; если A==0 ,то прыг на адрес
MVI H,40h ; в рег.H байт 40hex
FE4C: MVI A,FFh ; в рег.A байт FFhex
JMP FE22 ; прыг на адрес< виртуальная "кнопочка" >--( WWW ) <- Убедительная просьба интересующимся старыми компьютерами типа РК86 - не пишите в теме в барахолке, пишите Ваши вопросы в ( лс ) пожалуйста
Re: Радио Рк-86
День добрый!
к сожалению РФ3 у меня нет
думаю как бы не сдутся, я понимаю что знать ассемблер это нужная вещь, но чтоб мне его изучить надо кучу времени, которого у меня нет
из меня радиолюбитель то хреновый, а программист вообще никакой 
к сожалению РФ3 у меня нет
думаю как бы не сдутся, я понимаю что знать ассемблер это нужная вещь, но чтоб мне его изучить надо кучу времени, которого у меня нет
Re: Радио Рк-86
Тогда остаётся искать еще одну клавиатуру, чтобы дать энтузиасту, который будет себе писать и с другими поделится.
Re: Радио Рк-86
Понял
, буду изучать ассемблер


