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

User Tag List

Страница 4 из 91 ПерваяПервая 12345678 ... ПоследняяПоследняя
Показано с 31 по 40 из 907

Тема: Мощная среда ZXDev для разработки НА ПЯТИ ЯЗЫКАХ для ZX готова к тестированию

  1. #31
    Guru Аватар для bigral
    Регистрация
    12.07.2006
    Адрес
    г. Киев, Украина
    Сообщений
    2,147
    Спасибо Благодарностей отдано 
    25
    Спасибо Благодарностей получено 
    95
    Поблагодарили
    82 сообщений
    Mentioned
    2 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от newart Посмотреть сообщение
    Что это значит?
    Типа прикол в том чтоб засунуть уже инициализированную структуру (массив данных) в сам EXE-шник и подгрузив его сразу использовать, вместо того чтобы иметь кусок кода который создает эту структуру.

    А как бы ты сделал?
    Использование знаковых типов вместо беззнаковых тупо, ясное дело что для координат speccy экрана нужно использовать unsigned char.

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

  3. #32
    Veteran
    Регистрация
    08.05.2007
    Адрес
    Dnepropetrovsk
    Сообщений
    1,053
    Спасибо Благодарностей отдано 
    218
    Спасибо Благодарностей получено 
    47
    Поблагодарили
    31 сообщений
    Mentioned
    3 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от newart Посмотреть сообщение
    А как бы ты сделал?
    А ведь и в самом деле, вариантов особо и нет. Сравнение двух чисел со знаком на больше/меньше - задача, которая не имеет эффективного решения на Z80. Если беззнаковые числа можно сравнивать командой CP и потом проверять флаг C - то для знаковых чисел таких простых решений нет. Нужно выполнять как минимум две проверки.

    Отсюда вывод: пользоваться знаковыми целыми при компиляции под Z80 не следует без необходимости. Операции сравнения таких чисел в разы медленнее, и размер кода растет.

    Любопытно, как SDCC работает с дробными числами. Применяется ли там некое подобие ПЗУшного псевдокода "калькулятора" или какой-то другой подход, наподобие прямого вызова подпрограмм работы с дробными числами? Надо будет глянуть.

    Насчет модификации компилятора с целью передачи единственного аргумента функции в аккумуляторе - это полумера. Если уж делать - то полноценную передачу аргументов функций в регистрах (fastcall).

  4. #33
    Veteran Аватар для Oleg N. Cher
    Регистрация
    24.08.2007
    Адрес
    Днепропетровская обл.
    Сообщений
    1,593
    Спасибо Благодарностей отдано 
    2,159
    Спасибо Благодарностей получено 
    130
    Поблагодарили
    96 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Barmaley_m Посмотреть сообщение
    Насчет модификации компилятора с целью передачи единственного аргумента функции в аккумуляторе - это полумера. Если уж делать - то полноценную передачу аргументов функций в регистрах (fastcall).
    Да, согласен, но надо с чего-то начинать. Пусть первый шаг будет полумерой, это всё ж лучше, чем просто мечатать о fastcall. Вот в самом BlackBox реализовано нечто среднее между стековой и регистровой передачей параметров, вещь любопытная: один параметр процедуры передаётся в регистре всегда. Остальные в стеке. Это очень даже хорошо. Намного проще, чем fastcall, но намного эффективнее, чем если все в стеке. Надо искать разумные компромиссы, которые можно реализовать быстро. Девелопинг штука чрезвычайно гибкая, и можно превратить начатое нечто в законченное абсолютно что угодно, поэтому меня даже удивляет, почему многие разработчики так любят делать всё с нуля, игнорируя готовые здравые наработки, которые дают очень неплохой старт.

  5. #34
    Veteran Аватар для Oleg N. Cher
    Регистрация
    24.08.2007
    Адрес
    Днепропетровская обл.
    Сообщений
    1,593
    Спасибо Благодарностей отдано 
    2,159
    Спасибо Благодарностей получено 
    130
    Поблагодарили
    96 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от vinxru Посмотреть сообщение
    Запускаю BlackBox.exe раскапованный в папку c:\Oleg-N-Cher-BB-XDev-e216b8d. Он показывает главное окно с меню и выводит MessageBox с ошибкой.
    Сегодня получил ответ на баг-репорт от Oberon Microsystems:

    From: Blackbox Support Oberon microsystems AG
    Subj: Re: [BLACKBOX] Bug report (keyboard interrupt just after starting BlackBox)

    Thank you very much, Oleg.

    Even though I run BlackBox 1.6-rc6 on 32-bit Windows XP every day, I never encountered this problem before. Do you have any additinal hints fow what the cause could be? Maybe the Intel Q9950 processor?

    Thanks again and kind regards,
    Marc
    Я ответил так:

    Dear Marc,
    I don't have any hints or ideas.
    I and other people in this mail list have started BB
    on thousands of different machines, and have no problems.
    It's a wonder, probably it's really some particularities of the CPU.
    Ну, может они и найдут ошибку, со временем. Проблема в том, что Оберон-технологиями сравнительно мало людей занимается, и тестит соответственно тоже...

  6. #35
    Veteran Аватар для Oleg N. Cher
    Регистрация
    24.08.2007
    Адрес
    Днепропетровская обл.
    Сообщений
    1,593
    Спасибо Благодарностей отдано 
    2,159
    Спасибо Благодарностей получено 
    130
    Поблагодарили
    96 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Вот ещё от пользователя Romiras:

    Set of possible reasons that can affect:

    * Implementation of BlackBox (Std, Host, Kernel) or its configuration. First, try previous versions: 1.5, 1.6 RC5
    * Software environment: modified distribution of Windows, specific drivers, specific system configuration or even key-logger (who knows?).
    * Hardware: bad keyboard (some key pressed down all the time), CPU (instructions in DevCP*486)
    Кстати, vinxru, а в самом деле попробуйте BlackBox 1.5 (с оф.сайта). Скопируйте в установленный ББ папки ZXDev, Nav и Ofront.

    Возможно, Ofront понадобится пересобрать: /Ofront/docu/Rebuild-Ofront.odc

  7. #36
    Veteran Аватар для Oleg N. Cher
    Регистрация
    24.08.2007
    Адрес
    Днепропетровская обл.
    Сообщений
    1,593
    Спасибо Благодарностей отдано 
    2,159
    Спасибо Благодарностей получено 
    130
    Поблагодарили
    96 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Свежие новости по проекту.

    Получил разрешение от Йозефа Темпла на распространение в составе XDev/ZXDev модифицированного транслятора Ofront. Более того, Йозеф перевёл его под более либеральную лицензию BSD. Теперь Ofront можно совершенно свободно использовать в любых целях, а также дорабатывать.

    Экспериментировал с беззнаковыми типами. В принципе, простое решение уже найдено, хотя парочка проблем всё ещё остаётся. В Git не выкладывал, вначале надо потестировать.

    Разобрался таки с селекторами (аналог #ifdef, хотя и не буквальный), изумительная штуковина. Прямого аналога нет ни в одной из известных мне IDE. В стандартных фирменных сборках ББ работа с селекторами в меню не выведена, поэтому возможность остаётся всё-таки скрытой. Вывел в меню Dev->Paste Left View/Paste Middle View/Paste Right View. Подробнее о работе с селекторами можно прочесть в статье Евгения Темиргалеева “DevSelectors — переключатели вариантов в исходном коде”.

    Если нужна более традиционная реализация макросов, остаётся возможность использовать компонент CpcPreprocessor, который легко встраивается в ББ. С ним я не экспериментировал, как-то особо не было нужды. Не знаю что он умеет. Но полагаю, на его основе можно наваять всё что может понадобиться.

    Планирую пропиарить ZXDev на форуме World of Spectrum.

    Так что основные проблемы ZXDev в качестве практического инструмента для ZX-разработки считаю решёнными.

    Написал ли кто-нибудь хоть что-то маленькое на Обероне для ZX?
    Последний раз редактировалось Oleg N. Cher; 29.03.2014 в 04:15.

  8. #37
    Veteran Аватар для Oleg N. Cher
    Регистрация
    24.08.2007
    Адрес
    Днепропетровская обл.
    Сообщений
    1,593
    Спасибо Благодарностей отдано 
    2,159
    Спасибо Благодарностей получено 
    130
    Поблагодарили
    96 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Найдено решение ещё одной проблемы ZXDev. Теперь возможно получение очень маленьких программ, куда из библиотек линкуются только лишь необходимые функции. Для облегчения разбивки исходных сишных текстов на "модули" (в терминологии SDCC), а на деле просто на фрагменты с отдельными функциями, я написал утилиту ZXDev/Bin/smartlinkrel, облегчающую подготовку библиотек. Она автоматически делит сишный исходник на несколько (по отдельным функциям или как-либо ещё). Заголовок и "линии отреза" задаются с помощью специального вида комментариев.

    Модуль, демонстрирующий принцип работы "умной" линковки:
    Код:
    MODULE TinyHello; IMPORT Basic; BEGIN Basic.PRSTR("Hello World") END TinyHello.
    Целевой бинарник этой программы занимает всего лишь 45 байт! Для программы на языке высокого уровня это вполне близко к идеалу. А можно ли меньше? Да, возможность сделать TinyHello ещё меньше появится когда Филипп Краузе реализует передачу параметров в регистрах.

    Подробнее читайте на форуме поддержки ZXDev в теме "Умная" линковка (smart linking) в ZXDev/SDCC.

    Теперь, когда найден способ смартлинковать сущности из библиотек, среда ZXDev стала ещё привлекательнее в качестве высокоуровневого клея между ассемблерными подпрограммами и исходниками на ЯВУ, в качестве средства для накопления и наработки библиотек. Трёхуровневая система разработки, в которой умелый программист может извлечь пользу из любого уровня (низкий-асм, средний-Си и высокий-Оберон), — идеальный на данный момент структурно-модульный клей между всеми тремя уровнями (без оверхеда на каждом из них). Поэтому утверждаю, что ZXDev — это не "игрушечная" среда. Это серьёзный инструмент, предназначенный как для начинающих, так и для профессионалов, позволяющий выполнить разработку практически любого софта. И в то же время идеологически он выполнен в духе SDCC, которому не чужды промежуточные уровни представления кода.

  9. #38
    Master
    Регистрация
    27.01.2005
    Сообщений
    888
    Спасибо Благодарностей отдано 
    25
    Спасибо Благодарностей получено 
    163
    Поблагодарили
    131 сообщений
    Mentioned
    2 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от bigral Посмотреть сообщение
    Типа прикол в том чтоб засунуть уже инициализированную структуру (массив данных) в сам EXE-шник и подгрузив его сразу использовать, вместо того чтобы иметь кусок кода который создает эту структуру.

    Это обходится. Немного коряво, но приемлемо.

    Определяешь структуру как const что-то, а в *.h файле объявляешь её же без const. Например:

    файл vars.c

    const int a=0x3456;

    файл vars.h

    external int a;

    Отдельно компилишь vars.c в объектники и всё путём...

    КРиво, я знаю. не пинайся.

  10. #39
    Veteran Аватар для Oleg N. Cher
    Регистрация
    24.08.2007
    Адрес
    Днепропетровская обл.
    Сообщений
    1,593
    Спасибо Благодарностей отдано 
    2,159
    Спасибо Благодарностей получено 
    130
    Поблагодарили
    96 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Проект ZXDev анонсирован на World of Spectrum. Приём получился гораздо теплее, чем здесь. Raydac оказался прав.

    Исправлен глюк со сбросом примера на Laser Basic. Проблема будет интересна всем, кто юзает SDCC. Это даже не глюк, допущенный случайно. Дело в том, что я после извлечения параметров функций допускал изменение регистра IX. А делать оказывается этого нельзя, ибо SDCC иногда полагается на его значение после возвращения из функции. (Как написал Филипп: “IX is a calle-saves register”).

    Благодаря помощи Филиппа Краузе и Eltaron’а реализована экспериментальная поддержка модели вызова fastacall (передача параметров в регистрах). Из-за отсутствия (пока) в SDCC поддержки fastcall присутствует серьёзное ограничение: параметры должны быть только константами, вычислямыми в процессе компиляции. Фишка по умолчанию отключена. Включить можно в Libs/BasicCfg.h

    С использованием модели fastcall получается такой код:
    Код:
    B.BORDER(B.Black); B.PAPER(B.Green); B.CLS;
    
    ;HelloWorld.c:15: Basic_BORDER(0);
    	xor a,a
    	call 0x229B
    ;HelloWorld.c:16: Basic_PAPER(4);
    	ld c,#4
    	call	_Basic_PAPER_fastcall
    ;HelloWorld.c:17: Basic_CLS();
    	call	_Basic_CLS
    Реорганизовал структуру ZXDev и, как по мне, стало логичнее и удобнее.

    Начата работа над многофункциональной утилитой для конвертирования BIN/IHX в форматы TAP/TRD (возможно, будет поддержан и TZX). Пишу на Обероне с прицелом на трансляцию через Ofront в Си. Принимается любая помощь, в т.ч. идеи.

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

    По умолчанию

    Могу поделиться Delphi-исходниками своей TapTool на Delphi.

Страница 4 из 91 ПерваяПервая 12345678 ... ПоследняяПоследняя

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

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

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

Похожие темы

  1. мощная игрушка
    от ZEman в разделе Игры
    Ответов: 129
    Последнее: 23.03.2024, 17:05
  2. Ответов: 5
    Последнее: 20.06.2011, 03:18
  3. Видеоконтроллер из пяти микросхем
    от zx-kit в разделе Изображение
    Ответов: 20
    Последнее: 31.03.2011, 14:48

Метки этой темы

Ваши права

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