User Tag List

Страница 20 из 31 ПерваяПервая ... 161718192021222324 ... ПоследняяПоследняя
Показано с 191 по 200 из 338

Тема: Ассемблер Радио-86РК

Комбинированный просмотр

Предыдущее сообщение Предыдущее сообщение   Следующее сообщение Следующее сообщение
  1. #1

    Регистрация
    18.01.2005
    Адрес
    Тихвин
    Сообщений
    509
    Спасибо Благодарностей отдано 
    3
    Спасибо Благодарностей получено 
    15
    Поблагодарили
    8 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Сто лет не писал на ассемблере, а на ассемблере ВМ80 никогда. Прошу помощи с пониманием!

    Написал маленькую программулину (пишу в эмуляторе на сайте http://rk86.ru/, к реалу доступа нет сейчас). Она делает следующее: в паре BC у нас координаты X и Y, подпрограмма coord рассчитывает адрес в экранной области и печатает туда символ 0. Далее через процедуру из ПЗУ мы опрашиваем клавиатуру и ждем нажатия "пробела", если нажат печатаем еще один символ, и так пока не достигнем конца экрана.

    Засада в том, что при нажатии пробела печатается некое количество символов, как будто клавиша залипает. Ни как не могу это победить!


    Скрытый текст

    Код:
    keyb_ask:	        EQU     0F812H	;опрос состояния клавиатуры
    keyb_enter:	EQU     0F803H	;ввод символа с клавиатуры код в A
    keyb_ask_key:	EQU	   0F81BH	;опрос кода нажатой клавиши код в A
    prn_symb: 	EQU     0F809H	;печать символа в C код символа
    prn_line:	        EQU     0F818H	;печать строки в HL адрес строки
    prn_hex		EQU 	   0F815H	;печать в HEX в A байт
    prompt  	        EQU 	   0F86Ch
    
    		org	0
    		mvi	b, 0
    		mvi	c, 10
    start:	call	coord
    		mvi	m, '0'
    start1:	call	keyb_ask_key
    		cpi	20H
    		jnz	start1
    		mov	a,b
    		cpi	64
    		jz	prompt
    		inr	b
    		jmp	start
    
    
    
    coord:	push	d	;B это x C это y
    		push b
    		lxi 	h,77c2h
    		lxi	d,004eh
    coord1:	dad	d
    		dcr	c
    		jnz	coord1
    		mov 	e,b
    		dad	d
    		pop	b
    		pop 	d
    		ret
    [свернуть]
    УКНЦ+FDD+HDD; ZX-NEXT; Scorpion 256k; ZXM Phoenix+TurboSoundFM; Spectrum 48k; ZX Hobbit; Radio 86RK

  2. #1
    С любовью к вам, Yandex.Direct
    Размещение рекламы на форуме способствует его дальнейшему развитию

  3. #2

    Регистрация
    12.12.2011
    Адрес
    г. Иркутск
    Сообщений
    2,509
    Спасибо Благодарностей отдано 
    10
    Спасибо Благодарностей получено 
    22
    Поблагодарили
    20 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Voxel, Завтра проверю на железе.

  4. #3
    HardWareMan
    Гость

    По умолчанию

    Voxel, всё правильно. 0F812H опрашивает клавиатуру без ожидания. Используй 0F803H или сделай ещё один цикл проверки на отпускание кнопки.

  5. #4

    Регистрация
    18.01.2005
    Адрес
    Тихвин
    Сообщений
    509
    Спасибо Благодарностей отдано 
    3
    Спасибо Благодарностей получено 
    15
    Поблагодарили
    8 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    В общем задержка решила проблему.

    Ниже программа умеющая двигать ноль по экрану, но убого кривая. Может кто-то предложит лучше вариант?

    Скрытый текст


    Код:
    keyb_ask	EQU     0F812H	;опрос состояния клавиатуры
    keyb_enter	EQU     0F803H	;ввод символа с клавиатуры код в A
    keyb_ask_key	EQU	0F81BH	;опрос кода нажатой клавиши код в A
    prn_symb 	EQU     0F809H	;печать символа в C код символа
    prn_line	EQU     0F818H	;печать строки в HL адрес строки
    prn_hex		EQU	0F815H	;печать в HEX в A байт
    prompt  	EQU 	0F86Ch
    up		EQU	19h
    down		EQU	1ah
    left		EQU	08h
    right		EQU	18h
    enter		EQU	0dh
    
    		org	0
    		mvi	c,1fh
    		call	prn_symb
    		mvi	b, 0
    		mvi	c, 1
    start:		call	coord
    		mvi	m, '0'
    		call	delay
    		mvi	m, ' '
    start1:		call	keyb_ask_key
    		cpi	up
    		jz	go_up
    		cpi	down
    		jz	go_down
    		cpi	left
    		jz	go_left
    		cpi	right
    		jz	go_right
    		cpi	enter
    		jz	prompt
    		jmp	start
    
    
    go_up:		mov	a,c
    		cpi	1
    		jz	start1
    		dcr	c
    		jmp	start
    go_down:	mov	a,c
    		cpi	26
    		jz	start1
    		inr	c
    		jmp	start
    go_left:	mov	a,b
    		cpi	0
    		jz	start1
    		dcr	b
    		jmp	start
    go_right:	mov	a,b
    		cpi	64
    		jz	start1
    		inr	b
    		jmp	start
    
    
    
    coord:		push	d	;B это x C это y
    		push 	b
    		lxi 	h,77c2h
    		lxi	d,004eh
    coord1:		dad	d
    		dcr	c
    		jnz	coord1
    		mov 	e,b
    		dad	d
    		pop	b
    		pop 	d
    		ret
    
    delay:		push	b
    		mvi	b,020h
    delay2:		mvi	c,0ffh
    delay1:		nop
    		dcr	c
    		jnz	delay1
    		dcr	b
    		jnz	delay2
    		pop	b
    		ret
    [свернуть]
    УКНЦ+FDD+HDD; ZX-NEXT; Scorpion 256k; ZXM Phoenix+TurboSoundFM; Spectrum 48k; ZX Hobbit; Radio 86RK

  6. #5

    Регистрация
    07.08.2008
    Адрес
    г. Уфа
    Сообщений
    8,391
    Спасибо Благодарностей отдано 
    763
    Спасибо Благодарностей получено 
    2,367
    Поблагодарили
    1,317 сообщений
    Mentioned
    39 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Например так

    Скрытый текст

    Код:
    		org	0
    		mvi	c,1fh
    		call	prn_symb
    		mvi	b, 0
    		mvi	c, 1
    		lxi 	h,77c2h
    		shld XY
    start:
    		lhld XY
    		xchg
    		call	coord
    		call cmpHLDE
    		jz start1
    		mvi	m, '0'
    		shld XY
    		xchg
    		mvi m, ' '
    start1:
    		call	keyb_ask_key
    		cpi 0FFh
    		jz start1
    		
    		mov e,a
    		cpi	up
    		jnz	ChkDown
    		dcr c
    		jnz ChkDown
    		inr c
    ChkDown:
    		cpi	down
    		jnz	ChkLeft
    		mvi a,26
    		cmp c
    		jz	ChkLeft
    		inr c
    ChkLeft:
    		mov a,e
    		cpi	left
    		jnz	ChkRight
    		dcr b
    		jp	ChkRight
    		inr b
    ChkRight:
    		cpi	right
    		jnz ChkEnter
    		mvi a,64
    		cmp b
    		jz	ChkEnter
    		inr b
    ChkEnter:
    		mov a,e
    		cpi	enter
    		jz	prompt
    		call	delay
    		jmp	start
    
    coord:		push	d	;B это x C это y
    		push 	b
    		lxi 	h,77c2h
    		lxi	d,78
    coord1:		dad	d
    		dcr	c
    		jnz	coord1
    		mov 	e,b
    		dad	d
    		pop	b
    		pop 	d
    		ret
    
    delay:		push	b
    		lxi	b,0400h
    delay1:	dcr	c
    		jnz	delay1
    		dcr	b
    		jnz	delay1
    		pop	b
    		ret
    		
    cmpHLDE:
    		mov a,l
    		sub e
    		rnz
    		mov a,h
    		sbb d
    		ret
    
    XY:		dw 0
    [свернуть]
    Последний раз редактировалось ivagor; 14.08.2019 в 20:03. Причина: исправил некритичные помарки в двух местах

    Этот пользователь поблагодарил ivagor за это полезное сообщение:

    Voxel(14.08.2019)

  7. #6

    Регистрация
    02.02.2019
    Адрес
    г. Одинцово
    Сообщений
    66
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    8
    Поблагодарили
    5 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Добрый вечер. Собрал себе компьютер Радио-86рк, но он отказывается работать. Методика отладки компьютера предполагает использование чипа ПЗУ с особой тестирующей прошивкой. В седьмом выпуске журнала Радио за 1988 год приведен код этой программы на ассемблере. Я в этом языке не силен и не знаю, как преобразовать его в бинарный файл, который можно будет зашить в ПЗУ. Прошу вашей помощи.

    Вот сайт, на котором есть ассемблер для Радио-86рк http://rk86.ru/

    Вот вырезка из исходной статьи


    Вот тот же самый код, но в печатном виде
    ;Программа для наладки РАДИО-86РК
    C000 = VG75 EQU 0C000H
    E000 = VT57 EQU 0E000H
    8000 = VV55 EQU 8000H
    F800 ORG 0F800H
    F800 C303F8 JMP BEGIN
    ;Инициализация KP580BB55
    F803 ЗЕ8А MVI A,9AH
    F805 320380 STA W55+3
    ;Инициализация КР580ВГ75
    F808 2101C0 BEGIN: LXI H,VG75+1
    F80B 3600 MVI M,B
    F00D 2В DCX H
    F80E 364D MVI M,4DH
    F010 361D MVI M,1DH
    F812 3699 MVI M,99H
    F814 3693 MVI M,93H
    ; Инициализация КР580BT57
    F816 3E80 MVI A,80H
    P818 3208Е0 STA VT57+8
    F818 2104E0 LXI H,VT57+4
    F81E 36D0 MVI M,BD0H
    F82a 3636 MVI M,36H
    F822 23 INX H
    F923 3623 MVI M,23H
    f825 3649 MVI M,49H
    ; Старт ПДП
    F827 3EA4 MVI A,0A4H
    F829 3208E0 STA VT57+8
    ; Заполнение экранной области ОЗУ
    F82С 210036 LXI Н,3600Н
    F82F 7D LABEL1: MOV A,L
    F850 E67F ANI 7FH
    F832 77 MOV M,A
    F833 23 INX H
    F834 7C MOV A,H
    F835 FE40 CPI 40Н
    FB37 C22AF8 JNZ LABEL1
    ; Старт отображений
    F83A 3E27 MVI A,27H
    F83C 3201C0 STA VG75+1
    ; Проверка работы клавиатуры
    F83F 210080 LXI H,W55
    F842 367F MVI M,7FH
    F844 7E LABEL2: MOV A,M
    F845 07 RLC
    F846 77 MOV M,A
    F847 3A0180 LABEL3: LDA VV55+1
    F84A 3C INR A
    F84B C247F8 JNZ LABEL3
    F84E C344F8 JMP LABEL2
    F851 END
    Последний раз редактировалось Kuprin; 01.09.2019 в 20:47.

  8. #7

    Регистрация
    25.12.2017
    Адрес
    г. Москва
    Сообщений
    652
    Спасибо Благодарностей отдано 
    124
    Спасибо Благодарностей получено 
    160
    Поблагодарили
    95 сообщений
    Mentioned
    3 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Kuprin, этот тест нехороший. На экране Вы ничего путного не увидите. Не заморачивайтесь с ним, запускайте обычный монитор.
    А если хочется посмотреть тест, то в левом столбце адрес, правее код команды. Вот этот код забивайте по соотв. адресу, и получите прошивку. Правые столбцы листинга не нужны.

  9. #8

    Регистрация
    02.02.2019
    Адрес
    г. Одинцово
    Сообщений
    66
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    8
    Поблагодарили
    5 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от IgorR76 Посмотреть сообщение
    Kuprin, этот тест нехороший. На экране Вы ничего путного не увидите. Не заморачивайтесь с ним, запускайте обычный монитор.
    А если хочется посмотреть тест, то в левом столбце адрес, правее код команды. Вот этот код забивайте по соотв. адресу, и получите прошивку. Правые столбцы листинга не нужны.
    Спасибо за ответ.

    В том то и дело, что собранный компьютер отказывается выводить что-либо на экран. Поэтому этот тест должен быть самым подходящим в моем случае.

    Правда, товарищи с другого форума говорят, что в коде возможно есть ошибки.
    Последний раз редактировалось Kuprin; 01.09.2019 в 22:49.

  10. #9

    Регистрация
    25.12.2017
    Адрес
    г. Москва
    Сообщений
    652
    Спасибо Благодарностей отдано 
    124
    Спасибо Благодарностей получено 
    160
    Поблагодарили
    95 сообщений
    Mentioned
    3 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Именно неработоспособность теста я и имел ввиду. Он не выводит на экран нормальную картинку.
    Есть другой, большой тест, который сначала проверяет озу и периферию, потом уж пытается рисовать на телевизоре.
    Поищите, он есть в архивах. Вспомнил, он с "шагателем", кнопка такая, по которой выполняется одна команда. Можно тестером следить за состоянием шин.

    Вообще запуск только что самостоятельно спаянного компьютера дело непростое. Спаять - легко. Запустить и отладить - сложно.
    Если это у Вас первый раз, то форумы вряд ли помогут. Нужен специалист с опытом и приборами, желательно локально у компа. Но возможно и удалённо, по видеосвязи.
    Последний раз редактировалось IgorR76; 01.09.2019 в 23:46.

  11. #10

    Регистрация
    02.02.2019
    Адрес
    г. Одинцово
    Сообщений
    66
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    8
    Поблагодарили
    5 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от IgorR76 Посмотреть сообщение
    Именно неработоспособность теста я и имел ввиду. Он не выводит на экран нормальную картинку.
    Есть другой, большой тест, который сначала проверяет озу и периферию, потом уж пытается рисовать на телевизоре.
    Поищите, он есть в архивах. Вспомнил, он с "шагателем", кнопка такая, по которой выполняется одна команда. Можно тестером следить за состоянием шин.
    Мне кажется, вы именно об этом тесте и говорите. Вот статья целиком http://www.emuverse.ru/wiki/%D0%A0%D...B4%D0%BA%D0%B5

    Как раз предлагается подключить пошагиватель и проверять сигналы. А ближе к концу советуют подключить экран.

Страница 20 из 31 ПерваяПервая ... 161718192021222324 ... ПоследняяПоследняя

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Похожие темы

  1. РАДИО-86РК на Z80
    от Vladimir_S в разделе Радио-86РК
    Ответов: 310
    Последнее: 06.06.2017, 21:13
  2. Радио-86РК: По страницам журнала "Радио"
    от Viktor2312 в разделе Радио-86РК
    Ответов: 79
    Последнее: 13.02.2014, 08:34
  3. Радио 86рк на AVR
    от PWA в разделе Радио-86РК
    Ответов: 6
    Последнее: 10.06.2013, 13:01
  4. Радио 86РК
    от Shnurkov в разделе Барахолка (архив)
    Ответов: 1
    Последнее: 02.01.2009, 12:52

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •