Блин, всё так просто :D
1) Если модуль это просто набор подпрограмм то пишешь их в отдельный файл и include
2) Для массивов удобнее всего использовать индексные регистры ix,iy. С их помощью можно обращаться к элементам в диапазоне +-128 байтов. Ну и смотря что ты с массивом хочешь сделать. Например я в игрухах делаю примерно так:

При вызове doEnemies каждый враг из списка сдвинется вниз на 1 и его энергия уменьшиться на 1 :)


enemiesList
;один враг - 3 байта
;0,1 байты координаты y,x
;2 энергия
;описываем 4 врага
    defb 04,07,64
    defb 14,21,64
    defb 06,11,64
    defb 06,04,64

    defb 255; 255 - конец списка врагов

doEnemies

    ;указатель на начало списка врагов
    ld ix,enemiesList

    ;размер структуры
    ld bc,3

        doOneEnemy

        ;проверяем не дошли ли мы до конца списка
        ld a,(ix+4);один враг 3 байта
        cp 255; сравниваем с 255
        ret z ;возвращаемся если 255

        ;сдвигаем каждого врага по y на единичку

        ld a,(ix);нулевой байт - у координата
        dec a ;уменьшаем на 1
        ld (ix),a ;сохраняем

        ;и уменьшаем энергию на 1
        ld a,(ix+2)
        dec a ;уменьшаем на 1
        ld (ix+2),a ;сохраняем

        add ix,bc ;сдвигаем указатель на размер структуры

        jr doOneEnemy ;переходим к следующему врагу

  • avatar nyuk
  • 2
Анонимные фанаты хайпа. Наверняка, хорошие ребята. Человек в бороде с хвостом, и женщина в синих волосах не могут быть плохими!
Подстраховаться и экранировать область видимости меток можно через директивы MODULE/ENDMODULE.

            MODULE mydemo
somemethod
            ;some code here
            RET
            ENDMODULE


в таком случае обратиться к меткам модуля можно через префикс mydemo, например CALL mydemo.somemethod
Ок, спасибо. Какой аналог в асме GOSUB/RETURN?) Я так понял, там какая-то работа со стеком, но не очень допер, что и как реально работает.
  • avatar ShaMAN
  • 1
оу! типа не с первого байта, а со стодвадцатьвосьмого? круто, чо)
  • avatar nyuk
  • 2
Местами ужос конечно. Особенно разборка-сборка PCX впечатлила. Автор тогда еще не знал, что можно просто вот так:
incbin "res/Sosochi.pcx", 128
  • avatar ShaMAN
  • 1
вот мне как-то Нючек пример накидал yadi.sk/d/xn5k9AYxv9GYB
  • avatar oisee
  • 0
Кто же это?
  • avatar ShaMAN
  • 0
асмах*
  • avatar ShaMAN
  • 3
incbin "..." — инклудит бинарные данные
include "..." — инклудит другой файл асм

в бинарниках у тебя может быть картинка, музыка, что-то еще (прекалк)
ну а в амсах могут быть отдельные процедуры, которые не стоит копировать из проекта в проект, а проще приинклудить из какой-то общей папки
Еще бы он работал полностью, да?) Не за что, скоро пофикшу, что-то тут накопилось у меня дел (
  • avatar nyuk
  • 3
Меня не устроил билдер. встроенный в саблим-плагин. Корячить готовый продукт не хотелось, по-быстрому накидал свой. По F7 собираю проект и сразу запускаю, прямо из саблима.

{
	"working_dir": "$file_path\\..\\",
	"cmd": "make.cmd",
	"file_regex": "^[ ]*File \"(...*?)\", line ([0-9]*)",
	"encoding": "cp866"
}
Меня тормозит сейчас вот такой список насущных вопросов:
1) Как разбить код на модули? Т.е., я понимаю, что там есть какая-то система подпрограмм, но я не допер, как с этим работать.
2) Как хранить и работать с кусками кода, например, массивы. Это вообще возможно?) Я понимаю, что из «переменных» у нас только регистры, но должен же быть «precalculated» способ.

Это что навскидку тормозит
  • avatar ShaMAN
  • 0
ага, уже обратил внимание))
  • avatar VBI
  • 2
отметь что там есть ещё отдельные скрипты для разных систем, и по запуску тоже, и ваще хороших плаг :)
  • avatar ShaMAN
  • 1
Z80Asm > Settings > Build script (win)
слона-то я и не приметил!)))
этож красивее и умнее можно сделать!))
как минимум проверять на маке. бат и запускать его если имеется, иначе по дефолту сделать как у меня.
/me потирает руки
  • avatar VBI
  • 3
наверное некоторое недопонимание возникло :)
Z80Asm > Settings > Build script (win)
тут и батничек уже готовый
  • avatar ShaMAN
  • 0
кхм… тогда вопрос как это делается? ибо саблим с плагом имеются, собсна в саблиме и пушу
  • avatar VBI
  • 2
ну конечно. я тоже пишу имя один раз :))
но это мелочи всё.
я говорю о том что в сублим текст с плагом под з80 эти вопросы (батников) уже решены.