Важная информация

User Tag List

Страница 3 из 109 ПерваяПервая 1234567 ... ПоследняяПоследняя
Показано с 21 по 30 из 1084

Тема: ЭТЮДЫ

  1. #21
    Veteran Аватар для GriV
    Регистрация
    18.02.2005
    Адрес
    Набережные Челны
    Сообщений
    1,574
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    3
    Поблагодарили
    2 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Вообще то тема уже несколько раз открывалась, посмотреть можно было повнимательнее ;-)
    А посчёт этюдов есть такие вот зарисовки.
    Есть такие замечательные команды как adc и sbc - используют флаг CY

    Например типовая задача уменьшить значение аккумулятора не менее какого то (например 23).
    обычно делают:
    dec a
    cp 23
    jr nc,$+3
    inc a
    а можно вот так аккуратно:
    sub 23
    adc a,22
    работает много элегантнее и что очень важно имеет всегда одну и ту же длительность (что особенно интересно демописателям где каждый раз приходиться пересчитывать такты).
    Или обратная задача - увеличить значение но не более какого то (например 75)
    В этом случае делаем так:
    add a,-75
    sbc a,-1-75
    В этом случае выше 75 ну никак не поднимется с теми же преимуществами.
    Кстати аналогичные вещи можно делать с HL используя те же команды.
    Или задача: в зависимости от значения флага CY заполнить аккумулятор либо значением 23 либо 75:
    sbc a,a
    and 75-23
    add a,23
    В итоге - если включен флаг CY то в аккумуляторе будет 75, иначе будет 23.
    Последний раз редактировалось GriV; 24.12.2008 в 15:14.
    Биты рулят лучше байтов, байты рулят шустрее!
    View, Звук, Цвет

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

    Jukov (12.01.2022)

  3. #22
    Master Аватар для GM BIT
    Регистрация
    27.11.2008
    Адрес
    Красноярск
    Сообщений
    747
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    1
    Поблагодарили
    1 сообщение
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Смотрел. Темы 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. Причина: Добавлено сообщение

  4. #23
    Master
    Регистрация
    20.01.2005
    Адрес
    Россия, Вологда
    Сообщений
    957
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    0
    Поблагодарили
    0 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от GriV Посмотреть сообщение
    а можно вот так аккуратно:
    sub 23
    adc a,0
    Поправлю малость.
    sub X
    adc a,X-1

    Где X - число, меньше которого уменьшать аккумулятор нельзя.
    axor/Perspective
    http://abzac.retropc.ru/

  5. #24
    Veteran
    Регистрация
    08.05.2007
    Адрес
    Dnepropetrovsk
    Сообщений
    1,053
    Спасибо Благодарностей отдано 
    218
    Спасибо Благодарностей получено 
    47
    Поблагодарили
    31 сообщений
    Mentioned
    3 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Процедура деления 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

  6. #25
    Master Аватар для GM BIT
    Регистрация
    27.11.2008
    Адрес
    Красноярск
    Сообщений
    747
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    1
    Поблагодарили
    1 сообщение
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    А кто подскажет.
    просто:
    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. Причина: Добавлено сообщение

  7. #26
    Banned Аватар для psndcj
    Регистрация
    22.02.2005
    Адрес
    triebkraft
    Сообщений
    712
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    0
    Поблагодарили
    0 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    потому что используется стандартный обработчик прерываний из ПЗУ - а там и кнопки опрашиваются и еще чтото делается... надо задавать табличку для своего обработчика и включать 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

  8. #27
    Master Аватар для GM BIT
    Регистрация
    27.11.2008
    Адрес
    Красноярск
    Сообщений
    747
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    1
    Поблагодарили
    1 сообщение
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    А IM 2 шагает сразу по INT или с задержкой?

  9. #28
    Banned Аватар для psndcj
    Регистрация
    22.02.2005
    Адрес
    triebkraft
    Сообщений
    712
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    0
    Поблагодарили
    0 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    когда приходит прерывания процессор читает из адреса I*256+#ff (но на самом деле младший байт может плавать на многих клонах, для этого и делается табличка 257 байт) - и переходит на этот адрес. при этом выполняется предыдущая команда до конца - поэтому даже если если процесор выполнял HALT - наш обработчик будет работать сначала фрейма +0.3 такта... это как-то можно устранить программно - но тут уж я не помощник - помню в ZX-Ревю каком-то было полное описание работы бордюрных и мультиколорных эффектов.

  10. #29
    R.I.P. Аватар для VNN_KCS
    Регистрация
    11.10.2007
    Адрес
    Донецкая обл. г.Енакиево
    Сообщений
    2,316
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    2
    Поблагодарили
    2 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от GM BIT Посмотреть сообщение
    Может VNN_KCS подскажет!
    psndcj всё правильно тебе обьяснил. В твоем варианте прога работает с 1-м видом прерываний, а надо 2-й, чтоб обработчик отрабатывал одни и те-же такты ВСЕГДА. Я тут повторил твой вариант(правда немного подрихтовал), попробуй первый. Там есть точки на экране для оценки расположения полоски. Нажми any key, кроме пробела, потом отпусти и оцени результат.
    Во втором варианте я добавил IM 2, там хоть жми, хоть не жми - результат один.
    З.Ы. Ну а скролл запустил? Если что - пиши в личку.
    Вложения Вложения

  11. #30
    Master Аватар для GM BIT
    Регистрация
    27.11.2008
    Адрес
    Красноярск
    Сообщений
    747
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    1
    Поблагодарили
    1 сообщение
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Я уже в принципе все понял. Скрол бегать не хотить
    А вот кстати про одни и те-же такты не согласен. Откомпилил мелодию в ProTrackere и тупо вставил play после вывода на бордюр в im 2 - на экране ничего не поменялось, стоит все на месте!

Страница 3 из 109 ПерваяПервая 1234567 ... ПоследняяПоследняя

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

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

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

Похожие темы

  1. Этюды: как бы написать поизящнее.
    от AndTorp в разделе Программирование
    Ответов: 5
    Последнее: 17.03.2008, 00:43
  2. Ответов: 0
    Последнее: 18.08.2006, 22:40
  3. Этюды: печать шрифтом 5x5...
    от breeze в разделе Программирование
    Ответов: 12
    Последнее: 27.03.2005, 05:21

Метки этой темы

Ваши права

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