Adventurer #08: Обмен опытом: руководство по операциям с длинными числами

Авторы статьи

Упомянутые люди

(C) Maximum/INTEGER

LONG ??? Что это такое ?

Так обозначаются длинные числа на PC и на AMIGA. Т. е это числа, лежащие в диапазоне от 0 до 4294967295, для представления которых отводится 4 (четыре) байта в памяти. В данной статье я научу вас оперировать с такими числами. И для чего это надо? например, вы пишете игру, в которой есть такие параметры, как деньги, золото и т. д. Как водится, денег в таких играх бывает намного больше, чем 65535. Вот здесь-то как раз и пригодятся LONG циферки... Итак, у нас есть число 12.000.00. В Long оно выглядит так: #00B71B00 В ассемблере же стоит набирать так: long_num DW #00B7, #1B00 Формат задания любого Long числа: ... LD HL,#00B7 EXX LD HL,#1B00 ... Т.е в HL старшая часть числа, а в HL' его младшая часть.

Сложение двух Long чисел

Надо просто сложить младшие части, а потом с учетом флага C сложить и старшие: L_ADD ADD HL,DE EXX ADC HL,DE EXX RET На входе у процедуры: HL и HL' - первое число, в DE и DE' - второе число. На выходе: HL и HL' сумма двух чисел.

Разность двух Long чисел

Здесь примерно то же самое: L_SUB AND A SBC HL,DE EXX SBC HL,DE RET Параметры такие же, как у L_ADD.

Печать Long чисел

Для печати числа нам нужно его перекодировать из Long в ASCII коды, что и делает следующая процедура: L_PR LD IX,L_TAB; см.ниже LD A,10 ; число из 10 знаков L_PR0 EX AF,AF' EXX LD E,(IX+0); ст.слово из табл. LD D,(IX+1) EXX LD E,(IX+2); мл.слово из табл. LD D,(IX+3) LD A,'0'-1 L_PR1 CALL L_SUB ; отнимаем пока не INC A ; включится флаг C JR NC,L_PR1; CALL L_ADD ; востановим число LD (BC),A ; в буфер его INC BC INC IX INC IX INC IX INC IX EX AF,AF' DEC A JR NZ,L_PR0; все числа RET ; ...

;таблица чисел:

L_TAB DW #3B9A,#CA00 ; 1000000000 DW #05F5,#E100 ; 100000000 DW #0098,#9680 ; 10000000 DW #000F,#4240 ; 1000000 DW #0001,#86A0 ; 100000 DW #0000,#2710 ; 10000 DW #0000,#03E8 ; 1000 DW #0000,#0064 ; 100 DW #0000,#000A ; 10 DW #0000,#0001 ; 1

Перед вызовом в HL и HL' число, а в BC адрес буфера для числа. Пример:

ORG #6000 LD HL,#FFFF EXX LD HL,#FFFF LD BC,BUFF CALL L_PR CALL 3435 LD A,2 CALL 5633 LD HL,BUFF LD B,10 LOOP LD A,(HL) RST 16 INC HL DJNZ LOOP RET

BUFF DS 10

Ввод Long числа.

Вернее не ввод, а преобразование числа из ASCII кодов в Long формат. Применить это можно так:

... LD HL,BUFF ... CALL INPUT ;Вводим число LD HL,BUFF CALL L_DC ...

На входе у процедуры: HL-адрес буфера, где сидит число:

BUFF DB "212042067" DB 0 ;Маркер конца т.е ;код <"0" и >"9"

После вызова в HL и HL' будет число.

L_DC PUSH HL LD B,0 L_DC1 LD A,(HL) ;Подсчитаем сколько CP "0" ;циферок у нашего JR C,L_DC2 ;числа CP "9"+1 JR NC,L_DC2 INC B INC HL JR L_DC1 L_DC2 EXX POP BC ;в BC его LD HL,0 ;Обнолим EXX ;новое LD HL,0 ;число EXX L_DC3 LD A,B ;все зделали ? LD DE,0-4 AND A RET Z ;нееет ! EXX DEC A ;используя таблицу LD IX,L_TAB+36 JR Z,L_DC4 ;найдем ADD IX,DE ;нужный DEC A ;нам JR Z,L_DC4 ;разряд ADD IX,DE ;числа DEC A JR Z,L_DC4 ADD IX,DE DEC A JR Z,L_DC4 ADD IX,DE DEC A JR Z,L_DC4 ADD IX,DE DEC A JR Z,L_DC4 ADD IX,DE DEC A JR Z,L_DC4 ADD IX,DE DEC A JR Z,L_DC4 ADD IX,DE DEC A JR Z,L_DC4 ADD IX,DE L_DC4 DEC B ;ага, нашли LD E,(IX) ;берем то что LD D,(IX+1) ;мы будем EXX ;прибавлять LD E,(IX+2) ;к LD D,(IX+3) ;новому числу LD A,(BC) ;какое у вас число ? INC BC L_DC5 CP "0" ;пока не "ноль" JR Z,L_DC3 CALL L_ADD ;прибавляем разряд DEC A JR L_DC5

Ну все, я дал уже достаточно много информации про Long, так что пользуйтесь на здоровье... Надеюсь, что данная статья кому-то поможет. Еще хочу напомнить, что такими числами уже успешно воспользовался всем известный Слава Медноногов в своей UFO. Больше я такого метода пока нигде не встречал.

* * *

Оглавление издания: Adventurer #08

  • От автора - Shaitan
    Технические детали нового интерфейса программы для ZX Spectrum. Обсуждаются улучшения и функции, такие как прокрутка и изменение цвета. Предоставлены инструкции по навигации с помощью клавиатуры и кнопок.
  • От автора
    Введение от автора и информация о редакционной команде.
  • Презентация
    Статья представляет программный установщик для создания автозапускаемых дисков и знакомит с новой адвентюрной игрой, созданной с помощью QUILL доктором Лазером.
  • Презентация программного обеспечения TRICK
    Статья представляет TRICK, новое программное обеспечение для защиты программ, разработанное Eternity Industry, и обсуждает его бета- и коммерческие версии. Автор, Александр Калинин (aka Paracels/EI), обращает внимание на предыдущие недостатки программного обеспечения и подчеркивает его улучшенный интерфейс. В статье также содержатся детали приобретения программы и приглашение читателям заказать её.
  • Презентация
    Статья содержит подробное руководство пользователя для HELP_Z80, бесплатной утилиты для ZX Spectrum, которая служит электронным справочником по командам микропроцессора Z80. В ней описывается, как загрузить и использовать программное обеспечение, включая объяснения команд, функции поиска и интеграцию с ассемблерами. Кроме того, включены распределение памяти, функциональные особенности и ссылки для дальнейшего чтения.
  • Интерфейс
    Статья обсуждает отзывы читателей о интерфейсе журнала, касаясь вопросов цен и тенденций программного обеспечения в сообществе ZX Spectrum. В ней представлено письмо от читателя, который высказывает мысли о ценах на игры и уменьшении числа пользователей платформы. Также обсуждаются разработки программного обеспечения и вовлеченность пользователей.
  • Интерфейс
    Статья делится опытом автора после покупки Амиги, сравнивая ее с ПК и обсуждая ее использование для игр, графики и музыки, отмечая при этом некоторые ограничения программного обеспечения.
  • Интерфейс
    Статья обсуждает проблемы поддержки пользователей со стороны производителей 'железа' SCORPION и NEMO для устройств ZX Spectrum. Критика SCORPION за плохое обслуживание клиентов при том, что они являются лидерами рынка, и похвала NEMO за оперативную поддержку. Автор выражает беспокойство о текущем состоянии рынка 'железа' для ZX Spectrum.
  • Интерфейс
    Статья обсуждает будущее платформы Spectrum, затрагивая демографию пользователей, проблемы производства софта и возможности эволюции аппаратного обеспечения.
  • Интерфейс
    Статья обсуждает разочарования пользователя Speccy в связи с проблемами аппаратного обеспечения, трудностями современной вычислительной техники и преданностью платформе Speccy.
  • Интерфейс
    Статья рассматривает жизнь и судьбы пользователей ZX Spectrum, включая личные воспоминания автора о друзьях и их взаимодействии с компьютерами.
  • Система
    Статья рассматривает различные программы для ZX Spectrum, включая текстовые редакторы, аудиоплееры и графические утилиты. В ней представлены независимые мнения о их характеристиках и удобстве использования, выделяя как сильные, так и слабые стороны. В статье подчеркивается эволюция и улучшение программных средств, доступных для этой классической платформы.
  • Обзор игрушек
    Обзор заметных игр для ZX Spectrum с акцентом на графику, звук и игровые механики. Каждая игра сопровождается кратким описанием и рейтингом. Рекомендуется любителям ретро-игр.
  • Обзор игрушек
    Статья рассматривает демо-версии различных игр, подчеркивая их потенциал и уникальные особенности. Акцентируется внимание на дефиците таких релизов на рынке и оцениваются качество и механика выбранных игр. Автор делится мнениями о прогрессе и ожиданиях к будущим полным версиям этих игр.
  • Гости
    Статья описывает образование и деятельность группы Eternity Industry, её участников, проекты и планы на будущие релизы и соревнования.
  • Гости - Dr. John
    Интервью с Феликсом из Virtual Brothers о его переходе от ZX Spectrum к ПК, разработке игры 'Винни-Пух' и планах на будущее.
  • Гости
    Интервью с музыкантами Маратом и Демоном из группы 'Disgust', обсуждающими свою музыкальную эволюцию, влияния и взгляды на жизнь и творчество.
  • Раскрутка
    Статья представляет собой подробный мануал к игре 'ENCYCLOPEDIA of WAR', описывающий выбор армий, типы юнитов и механики битвы.
  • Раскрутка
    Статья представляет собой руководство по игре, описывающее необходимые предметы и стратегии для преодоления различных испытаний, включая столкновения с динозаврами и навигацию по деревням.
  • Раскрутка
    Статья представляет собой обзор игры в жанре arcade adventure 'ELOPEMENT' от Omega HG, описывая ее особенности и давая советы по прохождению.
  • Раскрутка
    Статья описывает текстовую адвентюру 'Остров тьмы' на QUILL, предлагая советы для игроков. Упоминаются механики и персонажи, включая загадки и взаимодействия. В конце представлена карта острова.
  • Раскрутка 'Knightmare'
    Статья описывает игру 'Knightmare', подробно рассказывая о командах, механике игрового процесса и начальных квестах. Игрок управляет рыцарем, который должен взаимодействовать с персонажами и решать загадки для продвижения. Это руководство по навигации в игровом окружении и целям.
  • Обмен опытом
    Статья критикует адвентюрную игру 'Island of Darkness' Пауля Москоу, подчеркивая её нелогичный дизайн, отсутствие подробных описаний предметов и нехватку подсказок для игроков.
  • Обмен опытом
    Статья представляет собой мануал по доработке ассемблера ZX ASM 3.0, вводя функции отладки и управления выполнением программ на ZX Spectrum.
  • Обмен опытом
    Статья описывает феномен, наблюдаемый с видеоконтроллером ZX Spectrum, когда переключение между двумя экранами может создавать неожиданные визуальные артефакты. В ней изложена конкретная программа, которая демонстрирует этот эффект за счет быстрой смены экранов. Автор обсуждает последствия и возможные применения данного поведения.
  • Обмен опытом - Иван Рощин
    Статья представляет собой руководство по переносу эффекта заставки 'iris.ss' из Dos Navigator на ZX Spectrum, включая исходный код и советы по модификации.
  • Обмен опытом - Иван Рощин
    Описание процедуры OPEN_W для создания границ окна. Включает детали о настройке символов и размеров. Используется PRSYM для печати символов.
  • Обмен опытом - Maximum
    Введение в операции с длинными числами для разработки игр на ZX Spectrum, включая сложение, вычитание и преобразование в ASCII.
  • Обмен опытом
    Статья обсуждает кастомизацию графического редактора ART STUDIO путем создания дополнительных модулей, которые улучшают его функциональность, включая функции воспроизведения музыки и отображения координат курсора.
  • Обмен опытом
    Статья описывает программу, разработанную для улучшения визуального качества атрибутного сообщения с пиксельным движением на ZX Spectrum. Приведены детали реализации, включая использование массивов данных для задания траектории движения и рендеринга изображений. Программа снабжена комментариями для облегчения понимания и может быть изменена для создания различных эффектов.
  • Оттяг
    Статья содержит юмористические зарисовки и комментарии о различных аспектах жизни и технологий, включая анекдоты о вымышленном персонаже и его опыте с процессором Pentium.
  • Тест фармацевта
    Статья представляет собой юмористические тесты, предназначенные для определения, является ли человек настоящим фармацевтом или самозванцем, с ситуационными вопросами и оценкой знаний.
  • Странности и самооценка в 'Оттяг'
    Статья 'Оттяг' представляет собой юмористическую и критическую самооценку автора, исследующую различные жизненные опыты и причуды, подчеркивающие его необычные черты личности.
  • Юмористический Тест: Оцени Свое Чувство Юмора
    Статья представляет собой юмористический тест для оценки чувства юмора и сексуальных установок через различные ситуационные вопросы, раскрывающие абсурдные и комические перспективы.
  • Оттяг
    Статья представляет собой юмористический тест для определения, какой ты студент — от весельчака до старательного ученика. В ней есть ряд вопросов оtypичных студенческих действиях и реакциях. Результаты классифицируют студентов по набранным баллам от беззаботных до ботаников.
  • Как Правильно Мучить Windows 95 - Maximum
    Статья описывает иронический подход к установке и эксплуатации операционной системы Windows 95, включая способы ее 'мучения' и троллинга. В тексте используются гиперболизированные примеры взаимодействия с ОС для создания комичного эффекта. Это развлекательный материал с элементами юмора.
  • Оттяг
    Статья - это юмористическая нарративная история о Винни-Пухе и его друзьях, которые возвращаются в Вечнозеленый лес, где их беззаботная жизнь превращается в хаос. Описываются их шалости, включая пьянство и злоключения, когда они воссоединяются и сталкиваются с различными трудностями. История раскрывает личности персонажей и их взаимодействия в комедийном ключе.
  • Новелла
    Статья описывает юмористическую новеллу, в которой капрал Джонлан рассказывает о своем первом военном задании и общении с внуком за пивом.
  • Новелла
    Новелла описывает приключенческий побег из базы глотов на старом космическом корабле, подчеркивая столкновения и хитрые маневры главного героя.
  • Новелла
    Статья рассказывает о забавной истории о двух ежиках, Пухлом и Заразe, которые после странного события обзаводятся крыльями и должны справляться с новыми обстоятельствами. История сочетает фантазию и юмор, поскольку персонажи сталкиваются с неожиданными изменениями и трудностями. Это новелла, демонстрирующая imaginative storytelling.
  • Новости
    Статья обсуждает последние новости из Рыбинска, связанные с пати FunTop, описывая вклад различных участников и команд в журнал 'Adventurer' и конкурс демо.
  • Новости
    Статья сообщает о событиях в сообществе Спектрумистов Ярославля, включая информацию о разработчиках программного обеспечения и их текущих проектах.
  • Реклама
    Статья представляет собой сборник рекламных объявлений и анонсов, связанных с ZX Spectrum, приглашая к сотрудничеству программистов, художников и музыкантов, а также подробно описывая, как получить журнал и программное обеспечение.