Внимание! Это временный неофициальный архив старой версии форума Полигон Призраков, созданный сочувствующим форуму участником. Этот сайт просуществует лишь до тех пор, пока администрация Полигона не сдержит своё обещание и не откроет официальный архив по адресу old.sannata.org.

Полигон-2

Форум о старых компьютерах

Объявление форума

Если пользуетесь личными сообщениями и получили по электронной почте оповещение о новом письме, не отвечайте, пожалуйста, почтой. Зайдите на форум и ответьте отправителю через ЛС.

Полигон-2 »   Технический флейм »   Пишет ли кто-то новый софт под XT? Демки, игры?
RSS

Пишет ли кто-то новый софт под XT? Демки, игры?

<<Назад  Вперед>> Страницы: 1 2 * 3 4
Печать
 
alecv
Advanced Member


Откуда: Санкт-Петербург
Всего сообщений: 5545
Рейтинг пользователя: 0


Ссылка


Дата регистрации на форуме:
5 окт. 2004
Ээээ. На первый взгляд непонятно, почему сравнение идет с 8-битной половинкой AH а не с регистром AX. Подробно честно не смотрел.
Planet001
Member


Всего сообщений: 191
Рейтинг пользователя: 0


Ссылка


Дата регистрации на форуме:
5 дек. 2015
я ставил AX. Сразу туфта. Движения вправо нет.

Принцип таков: текущая координата\320. Выходит, например 1,43.
Берется остаток - 0,43 (в DX) и множится на 320. Получается координата в горизонтальной строке (линии) в 320 пикселей. Потом проверка, чтобы за 320 не вылезало. Но по факту доступно только 255.
Сергей С
Member


Всего сообщений: 151
Рейтинг пользователя: 0


Ссылка


Дата регистрации на форуме:
5 янв. 2017
[q]
Принцип таков: текущая координата\320. ... Потом проверка, чтобы за 320 не вылезало.
[/q]
Достаточно ли будет наличие только второго действия?
Const14
Junior Member


Откуда: Москва
Всего сообщений: 87
Рейтинг пользователя: 0


Ссылка


Дата регистрации на форуме:
3 янв. 2010
Planet001 написал:
[q]
Принцип таков: текущая координата\320. Выходит, например 1,43.Берется остаток - 0,43 (в DX) и множится на 320.
[/q]
Не понял я чего-то про 1,43 и 0,43. Допустим текущая координата 325, то есть до деления DX=0 AX=325. Выполняем деление на 320. Получаем DX=5 AX=1. Или пусть текущая координата 319, то есть DX=0 AX=319. Делим на 320 и получаем DX=319 AX=0. Разве не так?
Planet001
Member


Всего сообщений: 191
Рейтинг пользователя: 0


Ссылка


Дата регистрации на форуме:
5 дек. 2015
Сергей С
А как только второго? От текущей координаты же нужно считать.
Const14
Нет. в DX пишется остаток. Это была инфа из какого-то справочника.
325\320 = 1,015. В DX пишется 0,015.
Затем 320 * DX это 4,8 . Нам нужно только 4. Итого: 325 это 4 позиция в строке в сетке 320х200.
Может есть и другие варианты подсчета. Но я другого не смог придумать.

Вот выдержка из справочника:
"Если аргументом является регистр из 2 байт(напримерdiv bx), то процессор поделит число, старшие биты которого хранит регистр dx, а младшие ax на значение, хранящееся в регистре bx. Результат от деления запишется в регистр ax, а остаток запишется в регистр dx.
(dx,ax)/bx = ax, dx"

Но что-то все равно не так в итоге... до 320 проверку осуществить не удается, значит что-то теряется.
Const14
Junior Member


Откуда: Москва
Всего сообщений: 87
Рейтинг пользователя: 0


Ссылка


Дата регистрации на форуме:
3 янв. 2010
Planet001 написал:
[q]
Нет. в DX пишется остаток. Это была инфа из какого-то справочника.
[/q]
Во-первых, процессор имеет дело с целочисленной арифметикой, а во-вторых, ОСТАТОК от целочисленного деления, и ДРОБНАЯ часть действительного числа - это разные вещи. Похоже, Вы их путаете. Целочисленное деление 325 на 320 даёт 1 и в остатке 5!!!

P.S. Как Вы себе представляете число 0.015 в регистре DX?
Planet001
Member


Всего сообщений: 191
Рейтинг пользователя: 0


Ссылка


Дата регистрации на форуме:
5 дек. 2015
Ну, вообще-то да. Непонятно. Но граница 1(левая)-254(правая) работают.
Надо тогда через остаток сделать. Попробую. Да, верно. ерунда какая-то, конечно. Там же целые числа везде...
Const14
Junior Member


Откуда: Москва
Всего сообщений: 87
Рейтинг пользователя: 0


Ссылка


Дата регистрации на форуме:
3 янв. 2010
Не люблю давать советы, особенно если о них не просят, но хочу Вам порекомендовать всегда выполнять пошаговую отладку ассемблерных программ в Турбо Дебаггере.
Planet001
Member


Всего сообщений: 191
Рейтинг пользователя: 0


Ссылка


Дата регистрации на форуме:
5 дек. 2015
right:
push ax
push bx
push dx
inc cnt2

mov ax,cnt2
mov dx,0
mov bx,320
div bx

cmp dx,310 (!!!!!!!!!!!!!!!!!!!)
ja c1

pop ax
pop bx
pop dx
jmp spr_lp

c1:
dec cnt2
pop ax
pop bx
pop dx
jmp spr_lp

спасибо всем! да, конечно, требуется только одно действие и проверка остатка.

Есть еще один вопрос: как организовать задержку по таймеру, который IRQ 0 System Timer?

Через int 15h на XT что-то не пашет...
mov ah,86h
mov cx,000Fh
mov dx,4240h
int 15h

Через циклы как-то не очень хорошо выглядит...
Const14
Junior Member


Откуда: Москва
Всего сообщений: 87
Рейтинг пользователя: 0


Ссылка


Дата регистрации на форуме:
3 янв. 2010
Так, как Вы написали - это для AT и PS.

Опять же мнение основанное на собственных пристрастиях. Я раньше часто изучал исходники библиотечных функций BC3.1 в дирректории CRTL\CLIB. Они снабжены достаточным количеством комментариев. Как организовать задержку в нужное количество миллисекунд, можно посмотреть в исходнике функции delay (файл delay.cas) Кстати, не уверен, что в DOSBOX'e все эти действия с таймером и портами будут работать правильно.

И ещё, не пойму, зачем нужно применять деление, если движение спрайта происходит всякий раз всего на один пиксел? На первый взгляд достаточно только проверки на граничные условия. Возможно, я не достаточно хорошо вник в суть программы.
<<Назад  Вперед>> Страницы: 1 2 * 3 4
Печать
Полигон-2 »   Технический флейм »   Пишет ли кто-то новый софт под XT? Демки, игры?
RSS

0 посетителей просмотрели эту тему за последние 15 минут
В том числе: 0 гостей, 0 скрытых пользователей

Последние RSS
[Москва] LIQUID-Акция. Сливаются разъемы CF
МС7004 и 7004А на AT и XT
Пайка термотрубок
Проммать s478 PEAK 715VL2-HT ( Full-Size SBC)
Подскажите по 386 материке по джамперам.

Самые активные 5 тем RSS