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

User Tag List

Страница 1 из 8 12345 ... ПоследняяПоследняя
Показано с 1 по 10 из 74

Тема: Осваиваем Hi-Tech C v3.09 для CP/M

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

    По умолчанию Осваиваем Hi-Tech C v3.09 для CP/M

    Цель-минимум: собрать рабочий Hello World для Спектрума. Эмулятор CP/M берём здесь.

    Пока столкнулся с тем, что не работает #asm / #endasm

    Такой исходник:

    Код:
    void main (void) {
      #asm
         ld a,10
      #endasm
    }
    даёт такой выхлоп:

    H:\Archive\Projects\XDev\ZXDevHC\Bin\CPM>..\cpm C -O -M -S Hello.c
    HI-TECH C COMPILER (CP/M-80) V3.09
    Copyright (C) 1984-87 HI-TECH SOFTWARE
    HELLO.C: main()
    5: EOF in #asm

    Поскольку явного EOF'а in #asm не наблюдается, пробую менять в исходнике код окончания строк с LF (UNIX) на CR (вроде в CP/M так). Тогда компилятор вообще зависает.

    Если убрать секцию #asm/#endasm, пустой void main (void) {} собирается в HELLO.COM для CP/M размером 256 байт. Как сгенерить бинарь для ZX - пока непонятно. Возможно, придётся генерировать ассемблерный листинг и ассемблировать отдельно.

    А вот что пишет один MSX'ер на форуме по MSX:
    Цитата Сообщение от Manuel
    I've used Hi-Tech (free (as in beer), CP/M version) quite a bit. It's OK, but not great.
    Также высокохвалёный Sayman'ом хайтех 3.09 не понимает комментов вида //

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

  3. #2
    Guru Аватар для Sayman
    Регистрация
    16.02.2006
    Адрес
    Новосибирск
    Сообщений
    3,277
    Спасибо Благодарностей отдано 
    17
    Спасибо Благодарностей получено 
    91
    Поблагодарили
    54 сообщений
    Mentioned
    2 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    как я уже говорил, у каждого компилятора есть свои гус. Для хайтеха запись дериктив асм не сначала строки приведёт к ошибке. попробуй сделать #asm и #endasm сначала строки, а не с середины.
    0A заповедей:
    I. Не удаляй каталог свой.
    II. Не удаляй до времени ни одного файла.
    III. Не кради файлы.
    IV. Не желай программы ближнего своего.
    V. Почитай BDOS и BIOS как родителей своих ...
    ---
    Sprinter resurrect:
    Telegram
    Discord
    Repo
    Forum

  4. #3
    Activist Аватар для Sergey
    Регистрация
    23.12.2006
    Адрес
    Славный город Самара
    Сообщений
    473
    Спасибо Благодарностей отдано 
    93
    Спасибо Благодарностей получено 
    12
    Поблагодарили
    8 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Oleg N. Cher Посмотреть сообщение
    Пока столкнулся с тем, что не работает #asm / #endasm
    По-моему, это, вообще, не работает. Сталкивался с этим.
    Асмовыми вставками не пользуюсь - пишу в отдельных модулях всё, а потом собираю в либу.
    С уважением,
    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

  5. #4
    Guru Аватар для Sayman
    Регистрация
    16.02.2006
    Адрес
    Новосибирск
    Сообщений
    3,277
    Спасибо Благодарностей отдано 
    17
    Спасибо Благодарностей получено 
    91
    Поблагодарили
    54 сообщений
    Mentioned
    2 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    во1х, работает. во2х, оптимизатор съедает часть вашего кода на асме, если будете прогонять исходник через него.
    0A заповедей:
    I. Не удаляй каталог свой.
    II. Не удаляй до времени ни одного файла.
    III. Не кради файлы.
    IV. Не желай программы ближнего своего.
    V. Почитай BDOS и BIOS как родителей своих ...
    ---
    Sprinter resurrect:
    Telegram
    Discord
    Repo
    Forum

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

    По умолчанию

    Цитата Сообщение от Sergey Посмотреть сообщение
    По-моему, это, вообще, не работает. Сталкивался с этим.
    Sayman прав - если # в начале строки, то работает, даже так можно:
    Код:
    void main (void) {
    #  asm
         ld a,10
    #  endasm
    }
    На форумах упоминается ещё такой способ для хайтеха: #asm("NOP");
    Но не работает:

    HELLO.C: main()
    2: #asm("NOP");
    ^ illegal '#' directive

    Как получить бинарь вместо HELLO.COM для CP/M?

    Вроде упоминалось, что эта версия компилера выдаёт бинарь, всегда кратный 128 байтам. Неприятно, но терпеть можно. Но как его получить?

    Также напомните, как вызвать оптимизатор. Его вызывает сам C.COM или дёргаем отдельно?

    Можно асмовый код собирать в библиотеки, чтобы его не переиначивал оптимизатор. Кто-нибудь уже создавал и использовал библиотеки с LIBR.COM ? Поддерживается ли хоть какая-то смартлинковка?

    Можно ли исходники держать отдельно от файлов компилятора? Директорий в CP/M нет, может можно на другом диске?

  7. #6
    Veteran
    Регистрация
    03.07.2007
    Адрес
    Мариуполь-Киев
    Сообщений
    1,112
    Спасибо Благодарностей отдано 
    33
    Спасибо Благодарностей получено 
    14
    Поблагодарили
    13 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Oleg N. Cher Посмотреть сообщение
    Вроде упоминалось, что эта версия компилера выдаёт бинарь, всегда кратный 128 байтам
    Так в CP/M все файлы кратны 128 байтам. Это особенность файловой системы.

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


    Profi 6.2 Rev.B / 1024
    Profi v5.02 /1024/палитра/FDD3,5"/FDD5,25"/HDD130/XT-Keyb/Covox
    Profi v4.00 /1024
    АТМ Turbo /512/ - собран но еще не запускался
    ATM Turbo 2+ v7.10 - собран на 80%
    Pentagon 128 - в планах восстановить (раскуроченная плата)
    ZXMC20/NemoIDE/AT-Keyb (by Caro)
    Revers U8EP3C
    Speccy2010, r2
    [свернуть]

  8. #7
    Master
    Регистрация
    15.02.2015
    Адрес
    г. Могилёв, Беларусь
    Сообщений
    835
    Спасибо Благодарностей отдано 
    12
    Спасибо Благодарностей получено 
    98
    Поблагодарили
    65 сообщений
    Mentioned
    3 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Я ,дык, незнаю что делать... Я провёл расследование в теме - программирование в Bascom. Не знаю, можно ли вообще пользоваться си? Хочу услышать ваше мнение. Накрайняк, перепишу код головоломки на бейсике( она у меня простая).
    ¡Un momento, señor fiscal!


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

    По умолчанию

    Пользоваться Си можно. Проверено. Мин нет Местами мины есть. Но кому щас легко.

    Зачем переписывать туда-сюда? Уже пиши на чём начал.

    Ну и, наконец, только Оберон спасёт отца беларуской демократии! ;-)

  10. #9
    Activist Аватар для Sergey
    Регистрация
    23.12.2006
    Адрес
    Славный город Самара
    Сообщений
    473
    Спасибо Благодарностей отдано 
    93
    Спасибо Благодарностей получено 
    12
    Поблагодарили
    8 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Oleg N. Cher Посмотреть сообщение
    Как получить бинарь вместо HELLO.COM для CP/M?
    Вот, скрипт на лучшем в мире языке программирования. Почти интуитивно понятный.
    Соль в этой строке:
    cpm -h link.com -Z -Ptext=5D59H -C5D59H -O"||binfpathname||" STD48.OBJ std48.lib

    5D59 - адрес компиляции.
    Вложения Вложения
    Последний раз редактировалось Sergey; 14.01.2017 в 03:06.
    С уважением,
    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

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

    По умолчанию

    Насколько я понимаю, -C5D59H это точка входа и стартовый адрес машкода. Что задаёт -Ptext=5D59H ? Можно ли задать адрес для размещения данных? (в SDCC можно) Или данные размещаются всегда строго после кода?

Страница 1 из 8 12345 ... ПоследняяПоследняя

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

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

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

Похожие темы

  1. Осваиваем микрокомпьютер (1 и 2 ч.)
    от kas29 в разделе Пресса
    Ответов: 2
    Последнее: 06.02.2020, 01:27
  2. Видеоподкаст: "Old Gold Tech"
    от unbeliever в разделе Разный софт
    Ответов: 1
    Последнее: 12.06.2010, 13:41

Ваши права

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