User Tag List

Страница 1 из 2 12 ПоследняяПоследняя
Показано с 1 по 10 из 26

Тема: Программирование Турбо 2+ в режиме 320x200x16

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

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

    Регистрация
    16.01.2005
    Адрес
    Москва
    Сообщений
    1,992
    Спасибо Благодарностей отдано 
    227
    Спасибо Благодарностей получено 
    310
    Поблагодарили
    115 сообщений
    Mentioned
    3 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от norduk Посмотреть сообщение
    Может быть есть какие-то куски примеров кода как инициализировать графический режим АТМки 320x200x16, как установить палитру, как нарисовать точку или что-то вроде того (или исходники какие-нибудь)?
    Ну, давай начнем просто с включения режима 320х200 (остальное как-нибудь в следующий раз):

    Код:
    ;включение графического режима 320х200 в ATM-turbo 2+ из обычной конфигурации TR-DOS:
    
    		LD A,%10101000	;биты 4-7 обязательны именно в таком 
    						;виде, бит 3=1 – турбо включено
    						;биты 0-2 код экрана - %000 – режим 320x200
    						;соответственно %10100000 тоже самое, но с 
    						;выключенной турбой, а %10101011 – ZX-экран
    		LD BC,retadr		;адрес возврата из TR-DOS
    		PUSH BC			;на стек
    		LD BC, #2A53		;адрес подпрограммы в TR-DOS с командой OUT (C),A:RET
    		PUSH BC			;на стек
    		LD BC, #FF77		;скрытый системный порт ATM
    		JP # 3D2F		;переходим в TR-DOS для доступа к скрытому порту
    retadr		…			;здесь продолжается программа пользователя
    
    
    ;включение графического режима 320х200 в ATM-turbo 2+ из ОС TASiS:
    
    		XOR A			;задание режима системному вызову на получение
    		INC A			; в HL’ адрес спецблока системных переменных OS TASiS
    		LD C,#79			;задаем номер системного вызова(рестарта) $PAL
    		RST #10			;получаем их адрес
    		EXX
    		PUSH HL
    		POP IX			;перекидываем адрес блока в индексный регистр
    		LD A, %10101011	;задаем экран 320х200 (значение байта точно как и выше)
    		LD (IX+55),A		;ставим номер экрана в «экранную» переменную
    		XOR A			;режим «восстановления» для следующего рестарта
    		LD BC,#007B		;рестарт #7B $set_pg (в регистре B один из режимов работы)
    		RST #10			;меняем экран
    		…				;продолжение программы пользователя
    
    P.S. В этом примере изменится экран только в программе пользователя, а при выходе из нее в систему
    восстановится «системный» экран (сейчас по умолчанию текстовый). Чтобы поменять системный экран,
    используйте (IX+54).
    Последний раз редактировалось Максагор; 07.09.2019 в 01:57.
    Максагор, NedoPC group
    ПК ATM-turbo 2+ 1024Kb RAM, 1,7Gb HDD, CD-ROM, Turbo FM, GS-512
    [ZX rulezzz 4reva!!!]
    http://atmturbo.nedopc.com
    http://vk.com/atmturbo
    http://maksagor.livejournal.com
    http://moskprf.ru
    [СССР][Коммунизм][КПРФ] ну [ZX], естественно...

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

    norduk(07.09.2019)

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

  3. #2

    Регистрация
    17.08.2013
    Адрес
    г. Москва
    Сообщений
    965
    Спасибо Благодарностей отдано 
    64
    Спасибо Благодарностей получено 
    67
    Поблагодарили
    42 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Максагор Посмотреть сообщение
    Ну, давай начнем просто с включения режима 320х200
    Так. Решил попробовать. Скачал SJAsm с редактором вот отсюда, взял где-то в ютубе пример простейшей программки

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



    device atmturbo512
    org 30000

    TVFL equ 5C3Ch

    start:
    xor a
    ld(TVFL),a
    ld a,'*'
    rst 16
    ret

    rep:
    jp rep
    end

    savesna "test.sna",start
    [свернуть]


    , чтобы в принципе запустить хоть что-то, где я потом буду включать нужный мне 320 на 200.

    (device atmturbo512 - это, как я понимаю, указание компилятору под какую адресацию генерировать .sna)

    И вот с чем столкнулся. Если я указываю device zxspectrum48, то генерируемый .sna в эмуляторе, который прилагается в данном пакете запускается, а если выбираю нужный мне atmturbo512, то результат не работает (как, кстати и при указании zxspectrum128).

    Я понимаю, что в АТМке (как и в 128 машине) адресация более сложная и, тем не менее, непонятно, почему простейшая программа не запускается в данном пакете.

    Что я делаю не так?

    И есть ли какой-нибудь настроенный пакет для кросс-разработки именно под АТМ? А-то, судя по всему, эмулятор Speccy, который запускает SJAsm из данного пакета режимы АТМки не понимает.

  4. #3

    Регистрация
    22.05.2011
    Адрес
    г. Дзержинск, Украина
    Сообщений
    6,829
    Спасибо Благодарностей отдано 
    483
    Спасибо Благодарностей получено 
    663
    Поблагодарили
    513 сообщений
    Mentioned
    10 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от norduk Посмотреть сообщение
    Что я делаю не так?
    1. зачем то юзаешь процедуры ПЗУ-шки
    когда нормальные люди так обычно не делают

    2. sna врятли поддерживает 512к АТМ-ки
    да и вообще есть ли хоть какой то формат снапшотов поддерживающих больше 128?

    3. ну и скорей всего проблема в не инициализированных системных переменных
    (по моему в sjasm-е есть такоя)
    и выходит она из пункта 1

    4. после того ret-a произойдет возврат в бейсик или в некуда
    до jp rep проц не дойдет



    лучше для начала
    попикай бипером
    а потом лезь в экран

    - - - Добавлено - - -

    у себя нормально скомпилировал и запустил
    Код:
    	device zxspectrum128
    	org 30000
    
    TVFL equ 5C3Ch
    
    start:
    	xor a
    	ld (TVFL),a
    	ld a,'*'
    	rst 16
    	ret
    
    rep:
    	jp rep
    ;	end
    
    	savesna "test.sna",start
    - - - Добавлено - - -

    сейчас я в основном пользуюсь z00m-овской веткой сджасма
    https://github.com/z00m128/sjasmplus/releases
    правда на нее усердно ругается антивирусник

    - - - Добавлено - - -

    Цитата Сообщение от norduk Посмотреть сообщение
    UnrealSpeccy умеет из командной строки цеплять бинарник и запускать сразу?
    бинарник не знаю
    а sna вполне запускает

    например тем же батником что и компилить сорец
    Код:
    sjasmplus test.asm
    "Q:\SomeFolders\us\unreal.exe" test.sna
    Последний раз редактировалось NEO SPECTRUMAN; 08.09.2019 в 02:30.

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

    norduk(08.09.2019)

  5. #4

    Регистрация
    17.08.2013
    Адрес
    г. Москва
    Сообщений
    965
    Спасибо Благодарностей отдано 
    64
    Спасибо Благодарностей получено 
    67
    Поблагодарили
    42 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Максагор Посмотреть сообщение
    давай начнем просто с включения режима 320х200
    Это получилось. Как теперь его очистить? Как и к каким, вообще, обращаться страницам, которые содержат данный об изображении?

  6. #5

    Регистрация
    27.02.2005
    Адрес
    москва
    Сообщений
    14,289
    Записей в дневнике
    1
    Спасибо Благодарностей отдано 
    202
    Спасибо Благодарностей получено 
    1,456
    Поблагодарили
    946 сообщений
    Mentioned
    18 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от norduk Посмотреть сообщение
    к каким, вообще, обращаться страницам, которые содержат данный об изображении?
    все? ответы есть в книжке на сайте у Макса
    http://atmturbo.nedopc.com/inf/books/turbo2/turbo2.zip
    тут вроде качество получше
    http://atmturbo.nedopc.com/inf/books...c/atm_hard.zip
    Последний раз редактировалось goodboy; 09.09.2019 в 14:59.

  7. #6

    Регистрация
    17.08.2013
    Адрес
    г. Москва
    Сообщений
    965
    Спасибо Благодарностей отдано 
    64
    Спасибо Благодарностей получено 
    67
    Поблагодарили
    42 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от goodboy Посмотреть сообщение
    все? ответы есть в книжке на сайте у Макса
    Тогда уж скорее http://atmturbo.nedopc.com/inf/books...c/atm_hard.zip
    Только без практических примеров это всё мне непонятно. Понятно только то, что адресация мудрёная.

    Например, читаю в разделе 5.4.EGA-режим 320х200(x16): Страницы #05 и #01 ОЗУ при D3=0 порта #7FFD или страница #07 и #03 ОЗУ при D3=1 порта #7FFD. Пропорции пикселей 1:1. Размер экрана 32000 байт (разделен на 4 независимые группы).

    Я как бы понимаю, что нужно к этим страницам как-то обратиться, но далее этого моя соображалка не работает. И потом, почему D3 может быть 0, а может быть и 1 - тоже не ясно. В этом же документе читаю про адресацию в АТМ и вообще перестаю что-либо понимать))

    Я для того и создал тему, чтобы если кому-то не будет очень лень, показали практические примеры. Это не отменяет чтения данной литературы.

  8. #7

    Регистрация
    27.02.2005
    Адрес
    москва
    Сообщений
    14,289
    Записей в дневнике
    1
    Спасибо Благодарностей отдано 
    202
    Спасибо Благодарностей получено 
    1,456
    Поблагодарили
    946 сообщений
    Mentioned
    18 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от norduk Посмотреть сообщение
    Я как бы понимаю, что нужно к этим страницам как-то обратиться, но далее этого моя соображалка не работает.
    не знаешь как z80 пишет в порт ?
    Последний раз редактировалось goodboy; 09.09.2019 в 15:43.

  9. #8

    Регистрация
    17.08.2013
    Адрес
    г. Москва
    Сообщений
    965
    Спасибо Благодарностей отдано 
    64
    Спасибо Благодарностей получено 
    67
    Поблагодарили
    42 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от goodboy Посмотреть сообщение
    не знаешь как z80 пишет в порт ?
    Вероятно,

    LD A, %00001000
    OUT (#7FFD), A

    так?!

    - - - Добавлено - - -

    Цитата Сообщение от NEO SPECTRUMAN Посмотреть сообщение
    так 2 экрана переключаются еще со времен спектрум 128...
    Уже яснее.

    Правильно ли я понимаю, что раз страниц аж 4, то каждая размером 16000 байт? (Раз весь экран это 32000, а у нас двойная буферизация)

    - - - Добавлено - - -

    https://www.screencast.com/t/983Sa2akeES
    Правильно ли я понимаю, что активные страницы располагаются по адресам #0000 и #2000?

  10. #9

    Регистрация
    22.05.2011
    Адрес
    г. Дзержинск, Украина
    Сообщений
    6,829
    Спасибо Благодарностей отдано 
    483
    Спасибо Благодарностей получено 
    663
    Поблагодарили
    513 сообщений
    Mentioned
    10 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от norduk Посмотреть сообщение
    LD A, %00001000
    OUT (#7FFD), A

    так?!
    скорей так
    ld bc,$7FFD
    out (c),a

  11. #10

    Регистрация
    22.05.2011
    Адрес
    г. Дзержинск, Украина
    Сообщений
    6,829
    Спасибо Благодарностей отдано 
    483
    Спасибо Благодарностей получено 
    663
    Поблагодарили
    513 сообщений
    Mentioned
    10 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от norduk Посмотреть сообщение
    И потом, почему D3 может быть 0, а может быть и 1 - тоже не ясно.
    а потому что если строить изображение прямо в одном экране
    сначала рисовать фон потом рисовать поверх спрайты итд
    все на экране будет жестко мигать тк видео контролер будет все время читать и пулять на экран еще не готовое изображение

    для этого и запилена двойная буферизация
    есть 2 экрана
    в один мы рисуем
    другой щас отображается видео контроллером

    а 3-м битом порта 7FFD
    мы вибираем от куда видео контроллер будет читать данные

    так 2 экрана переключаются еще со времен спектрум 128...

Страница 1 из 2 12 ПоследняяПоследняя

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

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

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

Похожие темы

  1. Муз. сопроцессор в турбо-режиме
    от KALDYH в разделе Звук
    Ответов: 13
    Последнее: 18.10.2021, 12:26
  2. Опознать дисковод 5.25. Будет ли он работать в режиме DS/DD?
    от gushin в разделе Внешние накопители
    Ответов: 10
    Последнее: 01.12.2017, 09:22
  3. Ответов: 17
    Последнее: 05.10.2012, 20:11
  4. Работа NemoBus устройств в TURBO режиме
    от Black_Cat в разделе Внешние накопители
    Ответов: 4
    Последнее: 06.07.2011, 08:33
  5. Глюк в режиме 512 точек
    от tki в разделе Вектор
    Ответов: 13
    Последнее: 31.01.2011, 20:47

Ваши права

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