К основному контенту

Сообщения

Работа с часами

Работа с часами.  Мы часто сталкиваемся с ситуацией когда нужно вывести таймер. Я не буду расписывать порты, благо это сделано до меня, дам лишь простой пример, как в регистр "A" получить, часы, минуты, секунды. В нашем случае нет разницы, программируете вы на Base conf или Ts conf. TIME         LD A,#80                    LD BC,#EFF7                    OUT (C),A                    LD A,0;   если 0 - получаем секунды, если 2 - получаем минуты, если 4 - получаем часы.                    CALL READCMOS                    RET REACMOS                    LD BC,#DFF7                    OUT (C),A                    LD B,#BF                    IN A,(C)                    RET ;   Вызвали процедуру TIME, на выходе в регистр А время. В данном примере получим секунды, но можно получить и минуты и часы, меняйте регистра А на входе, где стоит коментарий. Время выдается в формате BCD, потому переводим его в удобоваримую форму:                    LD A,C                    AND #F0             
Недавние сообщения

Печать спрайта в TS CONF 256 color

  TS-CONF по умолчанию имеет аппаратные спрайты и тайлы которые используют 16 цветов, однако это не значит, что нет возможности использовать спрайты в 256 цветов. Для того, чтобы вывести такой спрайт, нужно воспользоватся DMA в режиме BLT1. В этом режиме перекидываются любые данные если они не равны нулю. Рисуем спрайты любыми цветами, но нулевой цвет оставляем для фона который нужно будет вырезать. Как всегда процедура и спрайты для теста тут: SPR.TRD Ниже привожу пример процедуры:             ORG       30000              LD            HL,0; X COORDINATE            LD            BC,0; Y COORDINATE             LD            (XX),BC LD            D,#C0; ADDRESS SPRITE IN MEMORY LD            E,#10; START VIDEO PAGE CALL       PERECHET; GET NUMBER PAGE PUSH     DE POP        HL LD            DE,16 SBC         HL,DE LD            DE,(XX) ADD        HL,DE PUSH     HL POP       DE LD           (PAGETO),A LD            B,6; SPRITE SIZE X ABSCISSA LD            C,15; SPRIT

Battle City под TS-CONF

В общем мой эксперимент по созданию игры на железе, да на старом софте закончился и весьма удачно. Игра Battle City доделана, и почти без глюков. Спасибо огромное людям которые мне помогали, а именно: TS-Conf   (информационная поддержка) Nik-o   (музыка и звуки к игре) Black Cat (тестил игру) Sergei Smirnov (тоже немного потестил + информ. поддержка) Игру вы можете скачать тут:  http://pmc-wagner.su Сразу скажу, что сделал две версии, с разной палитрой. Первая версия - это игра с оригинальной палитрой Dandy (Famicom), но с ней могут быть проблемы на некоторых мониторах в силу технических особенностей машины. Вторая версия для тех у кого голая Eva без Vdac. Цвета урезаны, да палитра некрасивая, зато монитор не рябит.  Видео отчет по игре:    Технические детали:  Игра вышла под: TS-Config.  Разрешение: 320х240 при 16 цветах на точку.  Количество миссий: 32  Игроков: 2   Особенности игры: Тайлы: кирпичи, лес, бетон, вода, песок (последний тормозит танки). В игре есть два босса. Бонусы:

Печать текста на ZX EVOLUTION

Печать текста на ZX - EVO при помощи DMA . Процедуру качать тут . Запускаем в XAS на железе и тестируем. Процедура использует 16 цветов при разрешении 320х240 Вызывается процедура так:              ld hl , mytext ; собственно тут наш текст                      ld ( textw ), hl ; сохраняем адрес текста в буфер                      ld d ,# c 0; адрес нашего шрифта                       ld e ,#10; адрес начала видеопамяти. Я использую #10                      ld bc ,00; координата X                       ld hl ,00; координата Y                       call text ;   вызываем процедуру mytext            dm “наш текст пишем сюда”                       db 255;    если встречаем байт 255 то выходим из процедуру. Конец текста. ; если встречаем символ 254 то процедура автоматические делает переход на следующую строку ;          пример mytext                       dm “строка 1”                                      db 254; перенос   строки                    

ZX EVO: Вывод тайлов

    Печатать тайлы просто. Готовая программа с комментариями в XAS'm как всегда лежит тут.     CREAT             LD BC,PAGE3; переключаем страницу памяти                         LD A,#08                         OUT (C),A                           LD HL,49152; в адрес 49152 закидываем тестовый тайл                         LD A,2                         LD (HL),A                          INC HL; в памяти содержиться сразу 2 слоя тайлов                         INC HL; потому я делаю 2 раза inc hl                         LD A,3                         LD (HL),A; закидываем еще тайл с номером 3     TILES                  LD BC,T0PAGE;   указываем страницу со спрайтами                            LD A,#C0                            OUT (C),A                           LD BC,TMPAG;    указываем страницу с картой тайлов                         LD A,#08                         OUT (C),A                              LD BC,PALSEL;   устонавл

ZX EVO: Выводим графику средствами DMA

ZX EVO:  Выводим графику средствами DMA DMA (англ. direct memory access) кидает данные со скоростью 7мб/c.  Запустить исходник процедуры в XAS можно тут .  LTEXT "TSCONFI2" ; грузим данные портов  ORG 32768  LCODE "src" ; грузим нашу картинку  ORG 26000    LD BC,DMASADH ;  указываем откуда брать нашу картинку, старший байт  LD A,#80  OUT (C),A  LD BC,DMASADL ;  указываем откуда брать нашу картинку, младший байт  LD A,#00  OUT (C),A  LD BC,DMASADX ;  с какой страницы памяти брать картинку  LD A,#02  OUT (C),A  LD BC,DMADADH ;  указываем куда отправляем нашу картинку, старший байт  LD A,#40  OUT (C),A  LD BC,DMADADL ;  указываем куда отправляем нашу картинку, младший байт  LD A,#00  OUT (C),A  LD BC,DMADADX ;  в какую страницу отправляем  LD A,#05  OUT (C),A  LD BC,DMALEN ; размер блока памяти который кидаем  LD A,#7F  OUT (C),A  LD BC,DMANUM ; кол-во блоков  LD A,#1A  OUT (C),A  LD BC,DMACTR ;  собственно кидаем картинку на экран  LD A,%00000001  OUT (C),A  RET  Разм

Литература в помощь программисту на ассемблере

Две настольные книги, которыми я пользуюсь. Для тех, кто только начинает делать игры для ZXEVO, есть две хорошие книги которые способны быстро ввести вас в курс дела. Первая книга А. Евдокимова и компании - " Как написать игру на ассемблере " фактически легенда и святое писание мира spectrum. Она написана простым и понятным языком для тех, кто первый раз видит ассемблер, но сразу хочет делать игры. Вторая книга от " Инфоркома " которую лично я использую как удобный справочник по командам процессора zilog. В книге очень доступно раскрывается связь между архитектурой и командами процессора.  В обеих книгах есть очень много примеров. Также вам может быть полезен вот этот список литературы.