Miracle #03
16 июля 1999

Кто там кодит? - Fast 42 print: быстрая процедура печати 42 символов в строке.

<b>Кто там кодит?</b> - Fast 42 print: быстрая процедура печати 42 символов
 в строке.
    (c) Death Moroz
    ----------------

   Быстрая процедура печати
     42 символов в строке 

    Хотел бы поделиться некоторыми свои-
ми  изысканиями  в  области  вывода 42-х
символов  в  строке,  вся  суть которого
состоит  в том, что в памяти создается 3
дополнительных  фонта,  процедуры для их
создания примерно следующие:

    FONT  EQU ADRES ;АДРЕС БАЗОВОГО ФОНТА
    FONT2 EQU 49152
    FONT3 EQU FONT2+4096
    FONT4 EQU FONT3+4096 ;АДРЕСА БУДУЩИХ ФОНТОВ
                         ;ИХ РАЗМЕРЫ  БУДУТ В 2
                         ;РАЗА БОЛЬШЕ ИСХОДНОГО

    ;ПРОЦЕДУРА  СОЗДАНИЯ  ФОНТА СО СМЕЩЕНИЕМ 6
    ;БИТ ОТ НАЧАЛА ЗНАКОМЕСТА:

          LD DE,FONT2
          LD HL,FONT
          LD BC,2048
    F_CR1 LD A,(HL)
          RLCA
          RLCA
          PUSH AF
          AND 3
          LD (DE),A
          INC DE
          POP AF
          АND 252
          LD (DE),A
          INC DE
          INC HL
          DEC BC
          LD A,B
          OR C
          JR NZ,F_CR1

    ;ПРОЦЕДУРА  СОЗДАНИЯ  ФОНТА СО СМЕЩЕНИЕМ 4
    ;БИТA ОТ НАЧАЛА ЗНАКОМЕСТА:

          LD DE,FONT3
          LD HL,FONT
          LD BC,2048
    F_CR2 LD A,(HL)
          RRCA
          RRCA
          RRCA
          RRCA
          PUSH AF
          AND 15
          LD (DE),A
          INC DE
          POP AF
          АND 240
          LD (DE),A
          INC DE
          INC HL
          DEC BC
          LD A,B
          OR C
          JR NZ,F_CR2

    ;ПРОЦЕДУРА  СОЗДАНИЯ  ФОНТА СО СМЕЩЕНИЕМ 6
    ;БИТ ОТ НАЧАЛА ЗНАКОМЕСТА:

          LD DE,FONT4
          LD HL,FONT
          LD BC,2048
    F_CR3 LD A,(HL)
          RRCA
          RRCA
          PUSH AF
          AND 63
          LD (DE),A
          INC DE
          POP AF
          АND 192
          LD (DE),A
          INC DE
          INC HL
          DEC BC
          LD A,B
          OR C
          JR NZ,F_CR3

    Далее  пример вывода строки фонтами,
созданными таким способом. На входе в HL
адрес текста, экран должен быть очищен.

          LD (SP_+1),SP
    BEGIN LD A,(HL)
          CP #0D ;ПРИЗНАК КОНЦА СТРОКИ
          JP Z,SP_
          INC HL
          EXX
          EX AF,AF'
    S_ADR LD DE,#4000 ;КУДА ВЫВОДИТЬ
    BITS  LD A,0 ;СМЕЩЕНИЕ ОТ НАЧАЛА ЗНАКОМЕСТА
          OR A
          JR Z,BIT0
          CP 6
          JR Z,BIT6
          CP 4
          JR Z,BIT4

          XOR A
          LD BC,FONT4
          JR S_OUT

    BIT4  LD A,2
          LD BC,FONT3
          JR S_OUT
    BIT6  LD BC,FONT2
          LD A,4
    S_OUT LD(BITS+1),A
          EX AF,AF'
          LD L,A
          LD H,0
          ADD HL,HL
          ADD HL,HL
          ADD HL,HL
          ADD HL,HL
          ADD HL,BC
          LD SP,HL
          EX DE,HL
    ;───────────────┐
          POP BC;   │
          LD A,C;   │
          OR (HL);  │
          LD (HL),A;│ ПОВТОРИТЬ
          INC L;    │    4
          LD (HL),B;│   РАЗА
          INC H;    │
          POP BC;   │
          LD (HL),B;│
          DEC L;    │
          LD A,C;   │
          OR (HL);  │
          LD (HL),A;│
          INC H;    │
    ;───────────────┘
          LD A,(S_ADR+1)
          INC A
          LD (S_ADR+1),A
          EXX
          JR BEGIN

    BIT0  EX AF,AF'
          LD L,A
          LD H,0
          ADD HL,HL
          ADD HL,HL
          ADD HL,HL
          LD BC,FONT
          ADD HL,BC
          LD SP,HL
          EX DE,HL
    ;───────────────┐
          POP BC;   │
          LD (HL),C;│ ПОВТОРИТЬ
          INC H;    │    4
          LD (HL),B;│   РАЗА
          INC H;    │
    ;───────────────┘
          LD A,6
          LD (BITS+1),A
          EXX
          JP BEGIN
    SP_   LD SP,0
          RET

    На последок дам примерчик процедурки
установки  атрибутов  в  42-х символьной
строке (без единого pop/push'a;)).:

          LD BC,TEXT_ADR
          LD DE,#5800 ;АДРЕС В АТРИБУТАХ
          LD A,68 ;ЦВЕТ ПО УМОЛЧАНИЮ
          LD (COLOR+1),A
    A_S0  LD HL,A_TABL
    A_S1  LD A,(BC)
          INC BC
          CP 32
          JR NC,A_K
          CP 3 ;КОД КОНЦА ТЕКСТА
          RET Z
          CP #0D ;КОД КОНЦА СТРОКИ
          JR Z,A_N
          CP #10 ;КОД СМЕНЫ АТРИБУТА
          JR Z,A_C
    ;
    A_K   LD A,E
          EX AF,AF'
          LD A,E
          ADD A,(HL)
          LD E,A
    COLOR LD A,0
          LD (DE),A
          EX AF,AF'
          LD E,A
          INC HL
          JR A_S1
    A_C   LD A,(BC)
          LD (COLOR+1),A
          INC BC
          JR A_S1
    A_N   LD A,E
          EX AF,AF'
          LD A,E
          ADD A,(HL)
          LD E,A
          LD A,(COLOR+1)
          LD (DE),A
          EX AF,AF'
          LD E,A
          LD HL,32
          ADD HL,DE
          EX DE,HL
          LD A,D
          CP #5B
          JR C,A_S0
          RET

    A_TAB DB 0,0,1,2,3,3,4,5,6,6,7,8,9,9,10,11
          DB 12,12,13,14,15,15,16,17,18,18,19
          DB 20,21,21,22,23,24,24,25,26,27,27
          DB 28,29,30,30,31,31

    Пользуясь случаем, хотелось бы выра-
зить свое мнение по поводу "ассемблеров,
которые  мы  выбираем":  лично  для меня
крутизна   ассемблера   определяется  не
скоростью  компиляции,  не наличием кучи
всяких  сетапов и оверлеев в виде минера
& Co, а скоростью и удобством редактора,
коим,  на мой взгляд, является XAS, ведь
только в можно набрать:

    (hl)   .40
и получить:
    ld (hl),#40

    Всеми  хваленый alasm завалил бы вас
кучей  вопросов,  а  новоявленный  storm
обладает  таким мизерным объемом свобод-
ной   памяти,  что  весь  его  фреймовый
скроллинг  сводится  на  нет (хорошо,что
хоть нет мультиколорного скрин-савера;))
Для  XAS'а  же  достаточно  не портить 1
банк...

    А   об   макросах,   многооконности,
пометках  строк  для быстрого перехода и
прочего я вообще "молчу". Короче, кто им
пользуется,  меня поймет. Всем несоглас-
ным  просьба  обращаться в редакцию жур-
нала...%)



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

От редакции - Предисловие: С какой целью мы выпускаем журнал?

От редакции - Оболочка: описание новой оболчки к журналу.

От редакции - письма в журнал: Dr.Sioux/Phantom Family, Fistsoft, Mr.Z/HardWave, Куров Н., Eagle/Computer Ratz Group, Rom Corp/Virtual Vision Group.

От редакции - в этом номере: содержание номера.

Проект года - презентация версии игры Robo от KT-soft/ETC.

Проект года - презентация игры от группы Spark: Городки.

Проект года - презентация игры "12 Тайных книг".

Проект года - несколько слов о готовящейся к выходу игре Chip & Dale.

Проект года - потрясающая новелла к игре "Навигатор".

Проект года - Мир тьмы: описание новой real-time strategy.

Погремушки - свежие и не очень, но смачные читы.

Погремушки - крематорий: игра Сталкер - описание всех предметов.

Погремушки - крематорий: Страна мифов - советы спеца.

Основы SWAP'А - информация для начинающих, а также несколько хитрых извратов, которые можно провернуть с почтой.

Кто там кодит? - Быстрая графика: несколько рецептов от Zetter'а (печать спрайтов, обновление экрана).

Кто там кодит? - Packer'ы и Depacker'ы: вся правда о паковщиках, или разглагольствования сэра Kot'а.

Кто там кодит? - Работаем с MS-DOS: Все о mod файлах - полное описание структуры mod-файла, а также описание всех эффектов.

Кто там кодит? - Работаем с MS-DOS: Ms-Dos дискеты - описание структуры Ms-Dos диска.

Кто там кодит? - Chanky flame: описание алгоритма чанкового огня.

Кто там кодит? - Attribute bump mapping: bump mapping для тех кто не въехал.

Кто там кодит? - Гуру медитирует: оптимизация программ по времени исполнения и по размеру.

Кто там кодит? - Приближенный поиск заданной последовательности байт!

Кто там кодит? - Fast 42 print: быстрая процедура печати 42 символов в строке.

Party zone - KidSoft'98: репортаж с Воронежского фестиваля компьютерного искусства.

Party zone - EarthQuake'99: репортаж с Челябинского фестиваля компьютерного искусства.

Я сама - 128 цветов на Spectrum: схема доработки до 128 цветов от донецкой группы Spark.

Я сама - Чайникам: подключение General Sound к Profi через системный разъем.

Я сама - Бесперебойные блоки питания: информация об UPS-технологии.

Я сама - General Sound Filter: рассказ о новой примочке к GS.

Я сама - Модемы: Схемы, схемы! Схемы Г.Шепелева и М.Кондратьева подключения Hayes модема.

Я сама - Модемы: Описание команд - описание команд терминала.

Я сама - Модемы: Тотальная модемизация - призыв к подключению момедов.

Системный софт - FastCopy 3.0: полное описание навороченного турбо-копировщика.

Системный софт - Pro Tracker глюки!!! несколько глючков в ProTracker'ах.

Системный софт - Pro Tracker 3.4 final презентация ремикса Pro Tracker из Самары.

Новости - Челябинск: X-Raizor вернулся на спектрум, Wocen пишет boot, Blade отдахыет, Steelzer вступил в Triumph, Crite доделал альфа версию "Мира тьмы", Bytic купил GS, Edison делает сайт, Ironman хочет купить спектрум.

Новости - Омск: полный состав и ожидаемы продукты от группы U98.

Новости - Калининград: громкая смерть или тихая жизнь Spectrum в Калининграде.

Techno-nature - Электронная музыка: Dj.Ironman рассказывает о техно (часть 1).

Techno-nature - Электронная музыка: Dj.Ironman рассказывает о техно (часть 2).

Techno-nature - Internet music-sites: куча адресов,где можно узнать нового об электронной музыке.

Techno-nature - Наркомания XX: байка от Dj.Ironman'а.

Без четверти четыре - рассказ из повседневной жизни от X-Raizor'а.

Комната смеха - Запахи вокруг и внутри: прикольный рассказ из журнала ПТЮЧ.

Комната смеха - Пердмен: убийственный рассказ из все того-же ПТЮЧ'а.

Комната смеха - Фитиль: неколько сценариев из киножурнала ФИТИЛЬ.

Комната смеха - Ореол: окончание рассказа опубликованного во втором номере.

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

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


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

Похожие статьи:
Вступление - содержание номера.
Открытые письма Nemo №2.10
Реклама - реклама и объявления.
WANTED - Розыск программ.
WEC LE MANS - Небольшое вскрытие WEC LE MANS.

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