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

User Tag List

Страница 27 из 38 ПерваяПервая ... 232425262728293031 ... ПоследняяПоследняя
Показано с 261 по 270 из 377

Тема: Ищу Си для Z80

  1. #261

    Регистрация
    16.12.2008
    Адрес
    Kharkov, Ukraina
    Сообщений
    2,221
    Спасибо Благодарностей отдано 
    4
    Спасибо Благодарностей получено 
    21
    Поблагодарили
    18 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Учитесь у буржуя=) Мысли по делу излагать. Мини Хелп с разжёвыванием как оно работает.

    Хотя он там об оптимизации кода говорит или ... Да и пусть. Любитель.

    - - - Добавлено - - -

    Вы еще Си не нашли, тогда вам к нам HI-TECH Z80 C Compiler. Занимает 30кБ +30кБ +30кБ. Адекватен. Понятен. Доступен всем!!!

    - - - Добавлено - - -

    HI-TECH Z80 C Compiler написан на Си HI-TECH Z80 C Compiler. ВО!!!. Академичные алгоритмы мало интересны для Z80 если они не могут переплюнуть разработку 83 года) Тем более не адекватностью генерируемого кода зашкаливает у новоделов.

    Знаем, смотрели Си HI-TECH Z80 в IDA Pro с хитрыми макросами. Написан на СИ.
    Последний раз редактировалось OrionExt; 22.09.2016 в 02:25.
    Электроника КР-02, MSX YIS-503IIR, Орион-128, Ленинград-2, Pentagon-128k, MSX2 YIS-503IIIR, MSX-EXT, ...

  2. #262

    Регистрация
    24.08.2007
    Адрес
    Днепропетровская обл.
    Сообщений
    1,681
    Спасибо Благодарностей отдано 
    2,716
    Спасибо Благодарностей получено 
    170
    Поблагодарили
    130 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    HI-TECH Z80 C Compiler запускается из-под CP/M. Во! ;-) И имеет глюки, которые уже никто не исправит. Тоже во! ;-) И нам без разницы на чём он написан, потому что исходников нет. И эмоциями тут делу не поможешь.

    Smalovsky, насчёт вашего глюка. Я рискну предположить, что вы инклюдите не хидер *.h, а *.c-файл. Это плохо. Потому что инклюдить нужно только хидеры, как бы руки ни чесались. Так задумано.

    Второе, это наверняка ваша main() расположена не первой, а программа стартует с самой первой функции. Из-за отсутствия правильного crt0, который переходит к стартовой точке - ф-ции main().

    Всё это вкупе даёт такой глюк:

    Код:
    #include "mufuncs.c" // <--
    
    void main(void) {
      return;
    }
    Программа будет стартовать с первой ф-ции из файла mufuncs.c - рискну предположить, что там ф-ция задания цвета, которая получает на вход случайный аргумент?

    Рискну предложить такой crt0:

    Код:
    	.module crt0
    	.globl	_main
    	jp	_main
    Записываете его в файл crt0.s и ассемблируете:

    sdasz80 -o ..\crt0.rel crt0.s

  3. #263

    Регистрация
    16.12.2008
    Адрес
    Kharkov, Ukraina
    Сообщений
    2,221
    Спасибо Благодарностей отдано 
    4
    Спасибо Благодарностей получено 
    21
    Поблагодарили
    18 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Oleg N. Cher Посмотреть сообщение
    HI-TECH Z80 C Compiler запускается из-под CP/M. Во! ;-) И имеет глюки, которые уже никто не исправит. Тоже во! ;-) И нам без разницы на чём он написан, потому что исходников нет. И эмоциями тут делу не поможешь.
    У меня нет эмоций. Все понятно, и еще раз понятно.
    Мучайтесь дальше=)

    Мазохисты форевер уже лет 20)
    Электроника КР-02, MSX YIS-503IIR, Орион-128, Ленинград-2, Pentagon-128k, MSX2 YIS-503IIIR, MSX-EXT, ...

  4. #264

    Регистрация
    24.08.2007
    Адрес
    Днепропетровская обл.
    Сообщений
    1,681
    Спасибо Благодарностей отдано 
    2,716
    Спасибо Благодарностей получено 
    170
    Поблагодарили
    130 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Мы наслаждаемся...

    - - - Добавлено - - -

    Как будто бы сношаться с эмулем CP/M это не мазохизм?

    Я вот сделал ставку на SDCC в своё время, и ни капельки не жалею. Компилятор жив, открыт, мультиплатформенн, развивается, можно пообщаться с разработчиками. Пока я совершенствовал Ofront, команда SDCC развивала мой бэк-энд. А с учётом появления фич __preserves_regs, __z88dk_callee и __z88dk_fastcall мне вообще все другие компилеры не пригодятся. Кстати, HITECH C неоптимально использует стек при передаче однобайтовых параметров ф-циям. А в версии 7.50 есть глюки, на что указал мне приватно Alcoholics Anonymous. А юзать компилер с глюками и без надежды на их исправление - та ещё байда.

    Так что "где-то когда-то видел в дизасме код, и я тащусь" слабо актуально. Это вы ещё не видели код после peephole оптимизатора z88dk-sdcc.

    - - - Добавлено - - -

    Да, кстати, а есть в HITECH C возможность не занимать рег. IY? В SDCC есть --reserve-regs-iy. И вообще, прислушиваться надо к мнению тех, кто кодил на нём, а не "где-то что-то" видел.

  5. #265

    Регистрация
    15.02.2015
    Адрес
    г. Могилёв, Беларусь
    Сообщений
    931
    Спасибо Благодарностей отдано 
    15
    Спасибо Благодарностей получено 
    119
    Поблагодарили
    73 сообщений
    Mentioned
    3 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Немного разобрался. crt0.s нужен был. Взял с форума тэсэлыча.)) У денпопова в тетрисе такой же.
    Проект компилируется, запускается подготовленный тап. Только компилятор глобальный массив инициализирует с ключевым словом const - иначе никак. Может, получше crt0.s найду потом - пока этого хватит.
    Я тут написал inkey().

    unsigned char inkey(){
    __asm
    ld a, (23560)
    ld l, a
    ld h, #0
    ld a, #0
    ld (23560), a
    ret
    __endasm;
    }

    Только функция чего-то символы псевдографики и udg ловит. Стартаповый файл, видимо, режим ввода меняет. Буду разбираться.

    - - - Добавлено - - -

    Ничего не понял... Кукую переменную надо поменять, что бы изменить режим ввода? Прочитал о MODE и FLAGS. Менял MODE - inkey() ловит коды в режиме G.
    Может, лучше задействовать K_STATE( ячейка #5C04( 23556) )?
    ¡Un momento, señor fiscal!


  6. #266

    Регистрация
    24.08.2007
    Адрес
    Днепропетровская обл.
    Сообщений
    1,681
    Спасибо Благодарностей отдано 
    2,716
    Спасибо Благодарностей получено 
    170
    Поблагодарили
    130 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Если из массива производится только чтение, то const рекомендую и оставить. Иначе же данные массива сдублируются два раза - копия начального состояния массива всё равно будет храниться. Так что это примерно то же самое, что и завести два массива - константный и обычный, и копировать при старте из константного в обычный. Только делается в стартовой секции crt0 неявно. Мой вариант crt0 урезан и эту инициализацию не выполняет.

    У меня INKEY устроен иначе:

    Код:
    unsigned char Basic_INKEY (void) {
    __asm
        LD   A, (#0x5C07)
        CP   #0xFF
        JR   Z, INKEY_RET_0X$
        CALL 0x28E
        LD   C, #0
        JR   NZ, INKEY_RET_0X$
        CALL 0x31E
        JR   NC, INKEY_RET_0X$
        DEC  D
        LD   E, A
        CALL 0x333
        LD   L, A
        RET
    INKEY_RET_0X$:
        LD   L, #0
    __endasm;
    } //Basic_INKEY

  7. #267

    Регистрация
    23.12.2006
    Адрес
    Славный город Самара
    Сообщений
    484
    Спасибо Благодарностей отдано 
    135
    Спасибо Благодарностей получено 
    16
    Поблагодарили
    12 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Smalovsky Посмотреть сообщение
    Я тут написал inkey().
    А теперь правильный инкей:

    Код:
    unsigned char inkey(void) __naked
    {
    __asm
    	ld a,(0x5c04) ; BASIC var
    	ld	l,a
    
    1$:	ld  a,(0x5c04)
    	inc a
    	ret z
    	jr 1$
    __endasm;
    }
    В моём варианте 2048 клавиатура опрашивается так.
    Можно укоротить на 1 байт и 1 такт:

    Код:
    	ld hl,(0x5c04) ; BASIC var
    - - - Добавлено - - -

    Цитата Сообщение от Oleg N. Cher Посмотреть сообщение
    Рискну предложить такой crt0:
    Здравствуйте, - а как же будут переменные и массивы инициализироваться?!
    Последний раз редактировалось Sergey; 27.09.2016 в 20:08.
    С уважением,
    Gris / Red Triangle.
    _____________________________________
    ZX-EVO/TS-Labs config/NGS/HDD/SD-card
    Amiga A1200/Blizzard 1230@50/32/60GB
    Amiga A1200/Apollo 1260@66/32/60GB
    UnAmiga (C5) AGA GM7123 VideoDAC

  8. #268

    Регистрация
    24.08.2007
    Адрес
    Днепропетровская обл.
    Сообщений
    1,681
    Спасибо Благодарностей отдано 
    2,716
    Спасибо Благодарностей получено 
    170
    Поблагодарили
    130 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Ну, до сих пор для ZXDev такого crt0 хватало (в Обероне нет проинициализированных переменных и массивов).

  9. #269

    Регистрация
    15.02.2015
    Адрес
    г. Могилёв, Беларусь
    Сообщений
    931
    Спасибо Благодарностей отдано 
    15
    Спасибо Благодарностей получено 
    119
    Поблагодарили
    73 сообщений
    Mentioned
    3 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Я тут, кое-что напрограммировал. Делаю головоломку. Оцените скорость генерации уровня и качество перемещения фишки. После изображения уровня нажмите любую клавишу для появления фишки. Пожалуйста, отпишитесь.
    По компилятору возникло много вопросов. Например, глобальные переменные видны только main, и их придится передовать в качестве параметров другим функциям. Компилируется с ошибками, когда доступ к стуктуре происходит через указатель.
    Pr1.7z
    Последний раз редактировалось Smalovsky; 28.09.2016 в 16:51.
    ¡Un momento, señor fiscal!


  10. #270

    Регистрация
    19.06.2014
    Адрес
    г. Харьков, Украина
    Сообщений
    731
    Спасибо Благодарностей отдано 
    6
    Спасибо Благодарностей получено 
    16
    Поблагодарили
    15 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Smalovsky Посмотреть сообщение
    Например, глобальные переменные видны только main, и их придится передовать в качестве параметров другим функциям.
    Почитай что нить по си хотя бы классику, Керниган и Ритчи

Страница 27 из 38 ПерваяПервая ... 232425262728293031 ... ПоследняяПоследняя

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

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

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

Ваши права

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