Adventurer #12
31 января 2001

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

<b>Программирование</b> - Процедуры для получения значений необходимых при создании чего-то на бордере или мультиколора.
     (C) Deadie/HorrorSoft/CPU

     Вообще-то я вот о чём. Пока я кодил,
а  точнее  собирал  HorrorFasTest , мне в
голову   закралась  крамольная  мысля  об
autoconfig'е для всяких там multicolor'ов
и  border'ных  эффектов.  Для меня до сих
пор остается загадкой, почему demomaker'ы
фиксят  такие эффекты только (в основном)
под  две  модели  Спектрума  ( Pentagon и
Scorpion ).  Как многие знают, для созда-
ния  чего-то  на бордере или мультиколора
надо знать количество строк (линий) экра-
на  /tpl/  и  количество  тактов  на одну
строку (линию) /lps/. Естественно, исходя
из этих значений и задаются константы для
процедур  вывода  на экран. Вот эти самые
значения  можно получить, использовав ни-
жеприведенные процедурки. Замечу, что ис-
тинные  значения вы получите, только если
выключен турборежим. И для начала приведу
процедуру,  которая  определяет,  включен
или выключен turbo mode:

               ATTENTION!!
  На авторство нижеприведенных процедур
              НЕ ПРЕТЕНДУЮ!

;Определение состояния turbo mode
; вх: -
;вых: A=0 - выкл, A=1 - вкл
TURBO   CALL INT_TRB
        LD A,B
        CP #00
        JR Z,TURBOFF
        CP #02
        JR NC,TURBON
        LD A,C
        CP #41
        JR NC,TURBON
TURBOFF XOR A
        RET
TURBON  LD A,1
        RET
TRB_INT DI
        LD A,#C3
        LD (#BCBC),A
        LD HL,INT_TR1
        LD (#BCBD),HL
        LD A,#BA
        LD I,A
        IM 2
        LD DE,#0000
        EI
        HALT
        LD HL,INT_TR2
        LD (#BCBD),HL
TRB_IN3 INC DE
        LD B,#0F
        DJNZ $
        LD A,R
        JR INT_TR3
TRB_IN1 EI
        RET
TRB_IN2 POP HL
        LD C,E
        LD B,D
        IM 1
        EI
        RET

     А  теперь  самое главное - процедуры
расчета lps и tpl:

;Рассчет кол-ва строк растра
;(линий в экране)
; вх: -
;вых: DE - lps
CLC_LPS CALL IM2SET
        LD A,#C3
        LD (#FEFE),A
        LD HL,LPS2
        LD (#FEFF),HL
        LD DE,0
        EI
        HALT
        LD HL,LPS3
        LD (#FEFF),HL
LPS1    INC DE
        LD B,#0F
        DJNZ $
        LD A,R
        JR LPS1
LPS2    EI
        RET
LPS3    POP HL
        CALL IM1SET
        EI
        RET

     Почти во всех Спектрумах сделано 312
либо  320 строчек (к примеру: в фирменном
312, в Пентагоне - 320). Продолжим:

;Рассчет кол-ва тактов в строке растра
; (линии экрана)
; вх: -
;вых: A - tpl
CLC_TPL CALL IM2SET
        LD A,#C3
        LD (#FEFE),A
        LD HL,TPL1
        LD (#FEFF),HL
        LD DE,0
        LD HL,TPL2
        EI
        HALT
TPL1    LD (#FEFF),HL
        LD HL,TPL3
        EI
        HALT
TPL2    LD (#FEFF),HL
        NOP
        NOP
        NOP
        INC HL
        EI
        INC DE
        JP $-1
TPL3    POP HL
        POP HL
        EX DE,HL
        ADD HL,HL
        ADD HL,HL
        ADD HL,HL
        LD A,N ;N=0 -312, N<>0 -320 строк
        OR A;^сюда заносите число
        LD BC,156
        JR Z,TPL4;156 (312) и 160 (320)
        LD BC,160
        XOR A
TPL4    OR A
        SBC HL,BC
        INC A
        JR NC,TPL4
        CALL IM1SET
        EI
        RET

;Процедурки установки прерываний
IM2SET  DI
        LD HL,#FE00
        LD A,H
        LD B,L
IM2SETL LD (HL),A
        DEC HL
        DJNZ IM2SETL
        LD (HL),A
        LD A,H
        LD I,A
        IM 2
        RET

IM1SET  DI
        LD A,#3F
        LD I,A
        IM 1
        RET


     А длина INT'а в тактах рассчитывает-
ся еще проще: tpl*lps (только  для noWAIT
Спеков ) и все!

     ┌───────╥─────────┬─────────┐
     │ lps   ║ 312 tpl │ 320 tpl │
     ├───────╫─────────┼─────────┤
     │ 216   ║ 67392   │ 69120   │
     │ 220   ║ 68640   │ 70400   │
     │ 224   ║ 69888   │ 71680   │
     │ 228   ║ 71136   │ 72960   │
     │ 232   ║ 72384   │ 74240   │
     └───────╨─────────┴─────────┘

     Вообще-то,  для настройки необходимо
знать положение INT'а относительно начала
кадра, но об этом в следующей серии...

     Вместо  PS:  Я не кодер, поэтому мои
измышления  по  поводу  autoconfig'а надо
взять  за теорему, которую надо еще дока-
зать.  Надеюсь,  что  мои  догадки все же
превратятся и в аксиому, а эта информация
вам хоть как-то поможет.



Другие статьи номера:

От авторов - Вступительное слово. Материалы из журнала BORN DEAD.

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

События - Отчёт с посещения питерского пати CHAOS CONSTRUCTION'2000 от Programmer & GreenPix.

События - Hurtman Joe раскрывает организаторские косяки на CHAOS CONSTRUCTION'2000.

События - Отчёт с посещения питерского пати CHAOS CONSTRUCTION'2000 от Paparazzi.

События - Отчёт с посещения питерского пати CHAOS CONSTRUCTION'2000 от n00tr0pil.

События - Отчёт с посещения питерского пати CHAOS CONSTRUCTION'2000 от Andy Harchenko.

События - Отчёт с посещения питерского пати CHAOS CONSTRUCTION'2000 от weIrd.

События - Список посетителей CHAOS CONSTRUCTION'2000.

События - Отчёт с посещения питерского пати CHAOS CONSTRUCTION'2000 от Tangerine/T-Rex/The SandS/Looker House.

События - FAQ по CHAOS CONSTRUCTION'2000.

События - Мнение редактора о CHAOS CONSTRUCTION'2000 (UnBEL!EVER).

События - Отчёт главного организатора CHAOS CONSTRUCTION'2000 - Random^CC.

События - CHAOS CONSTRUCTION'2000 как показатель расцвета спектрумской сцены.

Игры - Прохождение игры Times of Lore.

Рассказ - Время Познания.

Железо - Схемы для с HD FDD дисководами и дисками на спектруме.

Оттяг - Вступление от редактора.

Оттяг - Почему овцы лучше женщин.

Оттяг - 10 вещей, которые может сделать .. если ...

Оттяг - Список полезных вещей о сексе.

Оттяг - Полезное о сексе.

События - Репортаж о CC'000 (Elf/CPU).

События - О недостатках и недоработках CC'000.

Письма - Письма в редакцию: Prog Master, Kristoph.

Люди - Инфомация о творческой группе Studio Stall.

Программы - Презентация текстового редактора HorrorWord.

Игры - Описание игры ЛУННЫЙ ВЕТЕР.

Программы - Описание музыкального плеера MMC Player.

Игры - Описание игры Mechanic Wars.

Авторы - Авторы журнала и их фото.

Авторы - Список авторов журнала и адрес редакции.

Программы - HEWLE PECKER - домашняя видеостудия у Вас дома.

Интервью - Интервью с CC'000. Главные редактор журнала ZX Format - Ruster/XL-Design.

Интервью - Интервью с CC'000. MADCAT/THE MAD MAILMEN LEAGUE.

Интервью - Интервью с CC'000. FREE ART (EX-FATALITY).

Интервью - Интервью с CC'000. Вячеслав Медноногов/COPPER FEET.

Интервью - Интервью с CC'000. Белорусская тусовка.

Интервью - Интервью с CC'000. VOLGA SOFT AND OTHERS.

Интервью - Интервью с CC'000. MINISOFT/ASCENDANCY.

Интервью - Интервью с CC'000. VIRUS/THE HOT HEADS.

События - Объявления результатов CC'000.

Интервью - Интервью с CC'000. BRAIN WAVE.

Интервью - Интервью с CC'000. RANDOM/CONCERN CHAOS.

Интервью - Интервью с CC'000. 4TH DIMENSION.

Интервью - Интервью с CC'000. PLACEBO (EX-ETERNITY INDUSTRY).

Интервью - Интервью с CC'000. EX-LIGHT FUTURE GROUP.

Интервью - Интервью с CC'000. LEGENDARY BORN DEAD CREW.


Темы: Игры, Программное обеспечение, Пресса, Аппаратное обеспечение, Сеть, Демосцена, Люди, Программирование

Похожие статьи:
Интeрвью c Wlodek Black'om - Влaдиmир, пoлyчил нeдaвнo пocлeднюю вepcию 1.666 pyлeзoв СС000 и был пopaжeн yвидeв Вaшy фamилию в кaчecтвe coopгaнaйзepa...
Новiны - обзор местных новостей.
Новые программы - Обзор программы No Kempston.
Music - Nik-O из Краснодара рассказывает о музыкописании.
News - новости от Таганрогских спектрумистов.

В этот день...   20 апреля