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.


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

Похожие статьи:
Новости - пару не очень свежих новостей from Brest.
Обзор - Обзор новых игровых программ : KOMANDO-2, PEDRO NA OSTROVE PIRATOV, DIRT TRACK RACER, DOUBLE DRAGON-2, THE CYCLES, STUNT MAN SEYMOUR, CHOY LEE FUT KUNG FU WARRIOR, ARKARUM, KING VALLEY, MURK 3320, THE MYSTER of ARKHAM MAVOR, СКАЗЫ ДРЕВНЕЙ РУСИ: ВИТЯЗЬ СВЯТОГОР И КОЛДУН КАРАЧУН, MAGICIAN LAND, RALLY CROSS, MOVING TARGET, KLADEMINER , LOST CAVES and the TOMB of DOOM, WIZARD WILLY.
Новости - коротко о многом: "Черный Ворон", все же не будет последней игрой Славы Медноногова, ИНФОРКОМ приказал долго жить, у Spectrum Expert - хорошее будущее, "Легенда о Кирандии" никогда не появится на Speccy.
Презентация - Авторские программы: SpectrumGuide v1. 0
Вступление - Стихтвореное от Green'a 1.

В этот день...   1 января

SibNews #08, Woot! #01, Spectrum Magazine #01, ACNews #25, Psychoz #14, ACNews #14, Last 128 #08, Last 128 #06, Last 128 #05, Last 128 #04, Last 128 #03, Last 128 #02, Last 128 #09, Last 128 #3.5, Last 128 #8.025, Sinclair Club #05, Last 128 #M!R 01, Fantadrom #01, Buzz #20, Last 128 #01, DonNews #13, Nicron #120, Promised Land #01, Inferno #01, Marazm #25, Ultimathum #01, Marazm #21, Hooy Mag #02, KrNews #11, Marazm #22, Marazm #23, ZX Football 2000 #01, Codemania #01, Always #03, Bugs #02, IzhNews #08, Virtual Worlds #01, Listok #04, Scenergy #02, Flash Info #18, Marazm #16, Marazm #17, Zed #01, Balagan #02, ZX Format #08, ZX Power #03, Shock #01, Impulse #02, Deja Vu #03, ZX Club #08, ZX Club #06, Numberology #01, Marazm #13, Marazm #12, Marazm #14, Gorodok #02, Zodiac #01, Marazm #15, Deja Vu #07, Marazm #11, Deja Vu #07, Playboy #03, Crazy News #2, Crazy News #4, ZX Light #01, Crazy News #5, Playboy #02, ZX News #03, ZX Review #1-2, Read Me #02, Crazy News #3, Nicron #13, Read Me #01, Public Spirit #01, Faultless #06, Faultless #05, ZX Software #01, Stump #04, Speccy #07, Возраждение #0, Speccy #03, On-Line #17, Scene+ #01, Welcome Press #01, ZX Konig #04, Adventurer #01, Faultless #05, Faultless #04, Di Halt #01, Faultless #01, Playboy #01, Crazy News #1, Faultless #03, Pioneer #03, Sinclair Town #02, ZX Magazine #01, Eldorado #01, ZX Magazine #02, Spectron #01, ZX News #01, ZX Konig #02, 200 #W, Welcome Press #00, Dune #07, Subliminal Extacy #01, Subliminal Extacy #02, ZX Konig #01, Subliminal Extacy #00, Muchomor #01, Spectrofon #01, ZX Revija #02, Outlet #01, Outlet #1-3