С любовью к вам, Yandex.Direct
Размещение рекламы на форуме способствует его дальнейшему развитию
Тут похожая ситуация:
1. Если исходно Aисх<x (в примере x=75), то на выходе A=Aисх+1
2. Если исходно FF>=Aисх>=x, то на выходе A=Aисх
- - - Добавлено - - -
Автор того поста не упомянул один момент - чтобы эти конструкции работали, надо чтобы исходное значение было "корректным" (>=x в случае декремента и <=x в случае инкремента).
Смотрел. Темы 2005, 06гТак же оставленны без внимания.
А sbc не каждый профи подумает таким образом использовать CY, а новички тем более.
Может начнем с процедуры вывода точки с использованием таблицы? Вроде была такая (Старых в голове).
Добавлено через 8 часов 10 минут
На входе B-y, C-x + 1024 таблица
LD L,C
LD H,ТАБЛ/256
LD A,(HL)
INC H
LD D,(HL)
INC H
LD L,C
ADD A,(HL)
LD E,A
INC H
LD A,(DE)
LD OR (HL)
LD (DE),A
Добавлено через 8 часов 11 минут
Кто быстрее?
Последний раз редактировалось GM BIT; 13.12.2008 в 19:49. Причина: Добавлено сообщение
axor/Perspective
http://abzac.retropc.ru/
Процедура деления 16/8 by Andrew Strikes Code
Вход: HL - делимое, A - делитель
Выход: HL - частное, A - остаток
DIV_21:
NEG
LD C,A
LD B,#11
XOR A
DIV210:
ADC A,A
ADD A,C
JR C,DIV211
SUB C
OR A
DIV211:
ADC HL,HL
DJNZ DIV210
RET
А кто подскажет.
просто:
EI
HALT
Добавлено через 12 минут
Неподумал.
Стабилизация эффектов на бордюре.
Если сделать
ORG 25000
EI
LD C,254
LD H,0
LD L,7
L1 HALT
LD DE,2000 : маленько задержим
L2 DEC DE
LD A,D
OR E
JR C,L2
OUT (C),L
OUT (C),H
LD A,127
IN A ,(254)
RRA
JR C,L1
RET
Почему эта полосочка на бодюре не стоит на месте а дергается, может IM 2 или как? Еще жмешь на клаву что-то меняется.
Помогите (раньше делал сейчас не могу вспомнить!).
Добавлено через 14 минут
Может VNN_KCS подскажет!
Последний раз редактировалось GM BIT; 04.01.2009 в 19:36. Причина: Добавлено сообщение
потому что используется стандартный обработчик прерываний из ПЗУ - а там и кнопки опрашиваются и еще чтото делается... надо задавать табличку для своего обработчика и включать IM 2 типа так
di
ld hl,imtab:ld a,h,i,a
ld a,low int_jump
ld (hl),a:inc l:jr nz,$-2
inc h:ld (hl),a
ld l,h:ld (hl),#c3 //код команды JP #xxxx
ld de,ТВОЙ_ОБРАБОТЧИК
ld (hl),e:inc hl:ld (hl),d
im 2:ei
imtab - табличка 257 байт с ровного адреса (#xx00), inter - джампер на обработчик (младший и старший байты равны) - к примеру в наших демах используется #be00 и #bfbf соответственно.
а и важно - чтобы работало везде - надо ставить в памяти в пределах #8000-#bfff
А IM 2 шагает сразу по INT или с задержкой?
когда приходит прерывания процессор читает из адреса I*256+#ff (но на самом деле младший байт может плавать на многих клонах, для этого и делается табличка 257 байт) - и переходит на этот адрес. при этом выполняется предыдущая команда до конца - поэтому даже если если процесор выполнял HALT - наш обработчик будет работать сначала фрейма +0.3 такта... это как-то можно устранить программно - но тут уж я не помощник - помню в ZX-Ревю каком-то было полное описание работы бордюрных и мультиколорных эффектов.
psndcj всё правильно тебе обьяснил. В твоем варианте прога работает с 1-м видом прерываний, а надо 2-й, чтоб обработчик отрабатывал одни и те-же такты ВСЕГДА. Я тут повторил твой вариант(правда немного подрихтовал), попробуй первый. Там есть точки на экране для оценки расположения полоски. Нажми any key, кроме пробела, потом отпусти и оцени результат.
Во втором варианте я добавил IM 2, там хоть жми, хоть не жми - результат один.
З.Ы. Ну а скролл запустил? Если что - пиши в личку.
Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)