Важная информация

User Tag List

Страница 1 из 2 12 ПоследняяПоследняя
Показано с 1 по 10 из 17

Тема: Программирование и отладка в VisualStudio Code

  1. #1
    Member
    Регистрация
    18.07.2021
    Адрес
    г. Хмельницкий, Украина
    Сообщений
    99
    Спасибо Благодарностей отдано 
    10
    Спасибо Благодарностей получено 
    30
    Поблагодарили
    23 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию Программирование и отладка в VisualStudio Code

    Здравствуйте, граждане.
    Нравится мне VisualStudio Code, поэтому, после того, как я передрал содержимое своих древних дискет, на которых когда-то программировал, в первую очередь, начал искать плагины для программирования под ZX именно для этого редактора. Нашел и установил всего два плагина - Z80 Macro-Assembler (mborik.z80-macroasm) и DeZog (maziac.dezog).
    Ну и что-то не получается мне в них работать. Возможно, они между собой не дружат, возможно, они не дружат со sjasmplus, возможно, это я с ними не дружу.
    Сложно сразу объяснить, в чём конкретно проблема. Я взял образ .trd со своими исходниками, запустил эмулятор, запустил в нём GENS4, открыл исходник, откомпилировал. Компиляция прошла без ошибок, запустил - программа запустилась. Делаю то же самое в VS Code - прога компилится, но виснет в начале. Ну, с этим ладно, скорее всего, при переносе GENS - VS где-то получились некорректные метки (у меня в коде есть метки с совпадающими названиями, но в GENS4 эти метки находятся в разных файлах, которые, при компиляции, подгружаются как инклюды, поэтому там проблем не было), или стек расположил неправильно, или ещё что - с этим буду разбираться, отлавливать трассировкой.
    Но пока что большие трудности у меня с самим редактором. Вроде бы, смотрю в мануал по SjASMPlus, но всё работает как-то непонятно. Например, на скриншоте, я объявил модуль TXT43, в нём есть метка OUT43. Почему мне автоподстановка не предлагает переход к этой метке?
    У кого-нибудь вообще есть опыт работы с DeZog, или, может, что-то другое посоветуете?



    Последний раз редактировалось 0xDEAD; 24.07.2021 в 17:10.

  2. #1
    С любовью к вам, Yandex.Direct
    Размещение рекламы на форуме способствует его дальнейшему развитию

  3. #2
    Сибирский антропоморфн Аватар для Black Cat / Era CG
    Регистрация
    06.05.2010
    Адрес
    Бердск, НСО
    Сообщений
    4,561
    Спасибо Благодарностей отдано 
    923
    Спасибо Благодарностей получено 
    871
    Поблагодарили
    635 сообщений
    Mentioned
    5 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Может быть сей плагин не знает о модулях сжасма.
    Личка заполнена! И чистить я ее не буду! Пользуйтесь адекватными средствами связи! Спасибо.

    Seamos realistas y hagamos lo imposible!

    Ernesto Che Guevara
    Переехал сюда: SteinBlume (ex ATM CP/M Explorer)
    http://era-cg.su

    Скрытый текст

    Speccy2010 r2 (Спасибо m.d. & xlat),
    Sinclair ZX Spectrum + (Спасибо stepmotor),
    ZX Evolution rev.C + 5'25 FDD Epson SD-700AA + NedoPC PAL-Coder (Спасибо m.d. & xlat)
    [свернуть]

  4. #3
    Sinclair User Аватар для Eltaron
    Регистрация
    16.01.2005
    Адрес
    Ekaterinburg
    Сообщений
    2,045
    Записей в дневнике
    7
    Спасибо Благодарностей отдано 
    144
    Спасибо Благодарностей получено 
    463
    Поблагодарили
    326 сообщений
    Mentioned
    4 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Black Cat / Era CG Посмотреть сообщение
    Может быть сей плагин не знает о модулях сжасма.
    Запросто, на Западе же больше по pasmo угорают, а плагины вроде не наши
    Граф Дракула наш кумир, патамушта он вомпир!
    VKINK 9 : BORDER NOT PI

  5. #4
    Member
    Регистрация
    18.07.2021
    Адрес
    г. Хмельницкий, Украина
    Сообщений
    99
    Спасибо Благодарностей отдано 
    10
    Спасибо Благодарностей получено 
    30
    Поблагодарили
    23 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию



    Установил ASM Code Lens от того же maziac - появились, вроде, подсказки на ссылки. Буду пилить дальше.

  6. #5
    Veteran Аватар для nzeemin
    Регистрация
    20.12.2005
    Адрес
    Москва
    Сообщений
    1,996
    Спасибо Благодарностей отдано 
    1,062
    Спасибо Благодарностей получено 
    1,224
    Поблагодарили
    478 сообщений
    Mentioned
    15 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Может я конечно чего-то не понимаю, но эти плагины обычно открытые.
    Что-то мешает найти его исходники на гитхабе и создать там баг-репорт?

  7. #6
    Member
    Регистрация
    18.07.2021
    Адрес
    г. Хмельницкий, Украина
    Сообщений
    99
    Спасибо Благодарностей отдано 
    10
    Спасибо Благодарностей получено 
    30
    Поблагодарили
    23 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Мешает отсутствие чёткого понимания, баг это, или я что-то не так настроил, или я использую неверный синтаксис, или вообще так и должно быть по задумке автора.
    Можно и автору плагина вопрос задать, не проблема - просто я сначала хотел спросить пользователей (если бы такие нашлись), чем задавать банальные вопросы автору.

    upd
    Между тем, проблема с зависанием программы после запуска была совсем не в метках.
    Оказывается, если сохранять результат компиляции в .sna, то происходят некоторые чудеса с прерываниями.
    The snapshot header content is hard-wired in sjasmplus binary (disabled interrupts may surprise some users)
    When a SNA file is created with the SAVESNA pseudo-op, interrupts are disabled by default. The raw assembled output behaves as expected, so it appears to be an issue with the SNA container file?
    Последний раз редактировалось 0xDEAD; 25.07.2021 в 22:06.

  8. #7
    Member
    Регистрация
    18.07.2021
    Адрес
    г. Хмельницкий, Украина
    Сообщений
    99
    Спасибо Благодарностей отдано 
    10
    Спасибо Благодарностей получено 
    30
    Поблагодарили
    23 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    В общем, по истечении месяца работы: мне нравится. Как-то кривовато работает отладка во внешних эмуляторах (CSpect, ZEsarUX), но для отладки чего-нибудь не чересчур заумного, встроенного эмулятора вполне достаточно.
    Ещё думаю, для разнообразия, попробовать SpectNetIde на Visual Studio 2019, благо, она установлена с незапамятных времён.
    Последний раз редактировалось 0xDEAD; 15.09.2022 в 12:11.

  9. #8
    Super Moderator Аватар для Alex Rider
    Регистрация
    07.02.2008
    Адрес
    г. Рязань
    Сообщений
    2,908
    Спасибо Благодарностей отдано 
    29
    Спасибо Благодарностей получено 
    89
    Поблагодарили
    31 сообщений
    Mentioned
    4 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию VS Code: Запуск Unreal по F5

    Хотелка

    Хочется компилить и отлаживать в Unreal Spectrum проекты для Спектрума в Visual Studio Code тем же хоткеем, который я использую для других языков.


    Проблема

    Я давно освоил Visual Studio Code и использую ее, например, для проектов на Python. При этом все мои проекты для Спектрума жили в Sublime Text с расширением Z80Asm от Breeze, и я решил смигрировать их в более привычный VS Code.

    В VS Code есть понятие Build Task, позволяющее запустить только компиляцию workspace (и, вообще говоря, выполнить любую команду shell) и отдельно debugger'ы, свои для каждого типа workspace. Если для языка установлено отладочное расширение, то по F5 (у меня клавиатурная тема от MSVS) workspace компилится при наличии изменений, и сборка запускается в отладчике. А запускать вместо отладчика команду shell (и Unreal Spectrum) нельзя, нужно отладочное расширение. Итого: для Python использую F5, для Z80 - Shift+Ctrl+B, и постоянно путаю их.


    Чуть подробнее

    Для разработки на Z80 есть расширение Z80 Macro-Assembler, которое понимает синтаксис Z80 и имеет еще всяческие фишки (подробнее про это писал камрад sq в статье Как быстро настроить среду разработки на ZX: Visual Studio Code + Z80MacroAsm boilerplate). Однако расширения, позволяющего запускать Unreal Spectrum в качестве отладчика нет.
    Переопределить шоткат F5 для проекта невозможно, глобально переопределить его на Build Task - тоже не выход, потому что оно тогда будет так работать и для всех остальных языков.
    Надо сделать как-то так, чтобы для workspace Z80 F5 вызывал Build Task, в котором можно выполнить команду shell и запустить что хочется, а для других проектов поведение оставалось прежним: компиляция (если есть) и запуск отладчика из расширение.

    На просторах Интернета накопал способ переопределить шоткат для проекта, которым на всякий случай делюсь. Суть способа такая:
    • пользовательские шоткаты переопределяют системные, при этом, если условие when для пользовательского шотката не выполнено, то работает штатный шоткат из клавиатурной схемы;
    • условие вычисляемое, в нем можно использовать настройки, в том числе, и уровня проекта;
    • суть решения: добавляем в проект некоторую кастомную настройку, наличие которой является условием пользовательского шотката на запуск Build Task, а при ее отсутствии работает штатный шоткат VS Code для запуска дебаггера.



    Инструкция

    1. Нажать Shift+Crtl+B (или ваш шоткат для билда) чтобы появилось предложение создать tasks.json. Если дефолтные таски в конфигах самой VS Code уже есть, то, по Вашему вкусу, можно либо добавлять новые таски туда, либо создать в проекте файл .vscode/tasks.json
    2. Вставить в tasks.json пример сборочных тасков из справки extension'а Z80 Macro-Assembler и настроить его на свой вкус. Для настройки шотката интересен только параметр label. Назовем его, например, Compile and run. В параметр command пишется shell-команда, которую хотим прикрутить к шоткату;
    3. Нажать Shift+Ctrl+P (или ваш шоткат для поиска команд) и выполнить Preferences: Open workspace settings (JSON). Добавить в него параметр
      Код:
      "runTaskInsteadOfDebug": true
    4. Нажать Shift+Ctrl+P (или ваш шоткат для поиска команд) и выполнить Preferences: Open Keyboard Shortcuts (JSON). Добавить в него:
      Код:
              {
                  "key": "f5",
                  "command": "workbench.action.tasks.runTask",
                  "when": "config.runTaskInsteadOfDebug && taskCommandsRegistered",
                  "args": "Compile and run"
              }



    Собственно, все. Теперь в проектах, в которых есть .vscode/settings.json с параметром "runTaskInsteadOfDebug": true, по кнопке F5 будет вызываться таск с именем Compile and run, а в проектах без этой опции - отладчик по умолчанию для workspace.


    Например, я себе в проектах Saboteur сделал по F5 сборку и запуск отладочной версии, по Ctrl+F5 - релизной, а по Shift+F5 - только компиляцию без запуска.
    ZX Evolution Rev C + ZXM-SoundCard Extreme + NeoGS.

  10. Этот пользователь поблагодарил Alex Rider за это полезное сообщение:

    CityAceE (15.01.2024)

  11. #9
    Member Аватар для Кря Кря
    Регистрация
    16.05.2021
    Адрес
    г. Харьков, Украина
    Сообщений
    122
    Спасибо Благодарностей отдано 
    66
    Спасибо Благодарностей получено 
    17
    Поблагодарили
    13 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    А можно просто настроить launch.json и будет по f5 запускать, это конфиг и нужен для запуска программы или отладчиков

  12. #10
    Member
    Регистрация
    18.07.2021
    Адрес
    г. Хмельницкий, Украина
    Сообщений
    99
    Спасибо Благодарностей отдано 
    10
    Спасибо Благодарностей получено 
    30
    Поблагодарили
    23 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Это все здорово, конечно, но вот я был вынужден отключить Z80 Macro-Assembler, так как использую ASM Code Lens, который также работает как language server, но показывает еще и количество линков на метку и позволяет их просмотреть - а одновременно эти расширения работать не могут. Возможно, ASM Code Lens тоже можно так настроить, но мне не сложно нажать ctrl-shift-b.
    Последний раз редактировалось 0xDEAD; 15.01.2024 в 18:22.
    программирование сильно возрастает!
    https://zx-pk.ru/threads/474-deb-ass...ull=1#post7841

Страница 1 из 2 12 ПоследняяПоследняя

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Похожие темы

  1. "Byte-01" CP/M code to BASIC code
    от Gelip в разделе Программирование
    Ответов: 13
    Последнее: 31.05.2021, 00:47
  2. Отладка монитора на FPGA (Орион-ПРО)
    от andreil в разделе Орион
    Ответов: 12
    Последнее: 14.04.2021, 21:26
  3. Отладка Pentagon-128 (2014)
    от Eraserstp в разделе Pentagon
    Ответов: 154
    Последнее: 21.11.2017, 22:47
  4. Отладка ленинграда (сич-48)
    от DrMoriarty в разделе Ленинград
    Ответов: 86
    Последнее: 14.04.2017, 19:36

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •