NewsProductsSprinterSupportDownloadSprinter ForumAbout usLinksSite map Russian site

Russian
   >> Программирование для компьютера Sprinter
Thread views: 230 View all threadsNext thread*Threaded Mode

Pages in this thread: 1 | 2 | 3 | 4 | (show all)
cr0acker
(member)
2003/05/27 22:40
Re: Графика new [re: Shaos]Reply to this post

>Открываешь исходники SPRINT-а и внимательно изучаешь :)
А вы батенька Недописишник:)



Shaos
(Registered Developer)
2003/05/27 22:41
Re: Графика new [re: cr0acker]Reply to this post

> И можно ли видео ОЗУ открыть под адересу #4000

Если я правильно понимаю политику партии, то открыть можно в любом из четырех окон

Alexander Shabarshin (shaos@mail.ru)
NedoPC Project

Shaos
(Registered Developer)
2003/05/27 22:45
Re: Графика new [re: cr0acker]Reply to this post

>>Открываешь исходники SPRINT-а и внимательно изучаешь :)
>А вы батенька Недописишник:)

В свое время, чтобы раскусить формат текстовой видеопамяти, мне пришлось дизассемблировать форт для спринтера :)
Дизассемблировал я его естественно с помощью SPRINT-а!



Alexander Shabarshin (shaos@mail.ru)
NedoPC Project

cr0acker
(member)
2003/05/27 22:47
Re: Графика new [re: Shaos]Reply to this post

Я же не буду спрайты по точкам выводить:) Хочу с помошью акселератора спрвайтами кидаться:)



cr0acker
(member)
2003/05/27 23:08
Re: Графика new [re: cr0acker]Reply to this post

Чё то я ещё не понимаю. Вот в режиме 320*256 одна точка занимает оддин байт. Если умножить 320*256=81920 байт, те 81Кб, отсюда вопрос как 81Кб запихался в 16Кбйтовове окно:)



Shaos
(Registered Developer)
2003/05/27 23:13
Re: Графика new [re: cr0acker]Reply to this post

> вопрос как 81Кб запихался в 16Кбйтовове окно:)

а никак - одна строка только в окно запихивается
и переключается по порту 89h (см. BACK_SP.A)

Alexander Shabarshin (shaos@mail.ru)
NedoPC Project

cr0acker
(member)
2003/05/28 00:19
Re: Графика new [re: Shaos]Reply to this post

Вот блин нету документацаи:( Вот как фигово:(



Shaos
(Registered Developer)
2003/05/28 01:31
Re: Графика new [re: cr0acker]Reply to this post

> Вот блин нету документацаи:( Вот как фигово:(

Есть она - внимательнее читать надо ;)

Alexander Shabarshin (shaos@mail.ru)
NedoPC Project

cr0acker
(member)
2003/05/28 01:43
Re: Графика new [re: Shaos]Reply to this post

>Есть она - внимательнее читать надо ;)
Хде? Ткни мне ей?



Shaos
(Registered Developer)
2003/05/28 08:06
Re: Графика new [re: cr0acker]Reply to this post

> Ткни мне ей?

http://petersplus.ru/sprinter/arhitecture.htm

и вот еще цитата из форума:


Функции для работы с экраном:


Сейчас DOS поддерживает четыре режима экрана.
Два текстовых:
40x32 символов c 16 цветами (режим 02h);
80x32 символов c 16 цветами (режим 03h);
и два графических:
320x256 точек с 256 цветами (режим 81h);
640x256 точек с 16 цветами (режим 82h);
Основным режимом является текстовый режим 80x32 (03h), если вашапрограмма
работает в другом режиме, то вам следует перед переключением
режимаполучить
номер текущего режима функцией 51h GETVMOD и сохранить его, а
передзавершением
программы восстановить его.

Например:

LD C,51h ;получить режим экрана
RST 10h
LD C,A ;поместить номер режима экрана в регистр C
PUSH BC ;и сохранить на стеке (B - страница, C - режим)
.
. ;ваша программа
.

POP BC ;взять со стека режим экрана
LD A,C ;поместить номер режима экрана в регистр A
LD C,50h ;установить режим экрана
RST 10h
LD C,41h ;завершить программу.
RST 10h

DSS имеет функции вывода на текстовый экран символов и символьных
строк.Для
графических режимов требуются собственные процедуры вывода на
экран.Например,
при завершении программы вы можете выдать строку на текстовый экран:

LD HL,STRING ;указатель на строку символов
LD C,5Ch ;вывод строки символов
RST 10h

STRING DB "Thank you for using my program..." ;текстовая строка
DB 13,10 ;символы возврата каретки и перевода строки
DB 0 ;символ конца строки

Для вывода на графический экран, вам необходимо подключить видео память
водно
из трех окон памяти 04000h-07FFFh, 08000h-0BFFFh, 0C000h-0FFFFh.
Этоосуществля-
ется выводом значения 50h в соответствующий порт 0A2h, 0C2h или 0E2h в
зависимости от окна памяти. При подключении обратите внимание на то,
чтобыстек
вашей программы не попадал в это адресное пространство.

Например, если вам нужно поставить точку на экране, то подпрограмма
длярежима
81h будет выглядеть так:

; HL - горизонтальная координата
; DE - вертикальная координата

IN A,(0E2h) ;считать из порта номер страницы подключенной в
;третье окно памяти
LD C,A ;запомнить в регистре C
LD A,50h ;страница видео памяти
OUT (0E2h),A ;подключение видео памяти
LD A,E ;поместить вертикальную координату в регистр A.
OUT (89h),A ;выдать в порт
LD DE,0C000h ;адрес начала третьего окна памяти
ADD HL,DE ;получить адрес точки (адрес начала окна +
;горизонтальная координата)
LD A,255 ;цвет выводимой точки (от 0 до 255)
LD (HL),A ;вывод точки на экран
LD A,C ;вспомнить номер страницы памяти
OUT (0E2h) ;подключить страницу памяти вместо страницы видео
;памяти

Перед выводом точек следует установить необходимые цвета в
палитре.Различные
режимы вывода на экран задаются номером видео страницы от 50h до
5Fh.Подробнее
о режимах вывода вы можете прочитать в описании архитектуры компьютера.

50h (80) SETVMOD (Выбор режима экрана)

входные данные:

A - режим экрана
02h - текстовый 40x32x16 цветов
03h - текстовый 80x32x16 цветов
81h - графический 320x256x256 цветов
82h - графический 640x256x16 цветов
B - страница экрана 0/1
C - 50h

выходные данные:

A - код ошибки, если CF=1

Функция устанавливает режим экрана. Седьмой бит режима экрана установлен
для графических режимов и сброшен для текстовых. Существуют два
текстовыхрежима
и два графических.


51h (81) GETVMOD (Получить текущий режим экрана)

входные данные:

C - 51h

выходные данные:

A - текущий режим экрана
B - страница экрана 0/1

Функция возвращает текущий режим экрана и номер страницы экрана.




Alexander Shabarshin (shaos@mail.ru)
NedoPC Project


Pages in this thread: 1 | 2 | 3 | 4 | (show all)
View all threadsNext thread*Threaded Mode
Jump to