Кросс-ассемблер для PDP11/8080 (Windows/Linux, open-source)

Использование и разработка софта (преимущественно на ПЦ)

Moderator: Shaos

User avatar
Lavr
Supreme God
Posts: 16680
Joined: 21 Oct 2009 08:08
Location: Россия

Re: Кросс-ассемблер для PDP11/8080 (Windows/Linux, open-sour

Post by Lavr »

Сам-то прочитай, что написал:
Shaos wrote:его надо собрать относительно новым компилятором C++, способным генерировать код для Win9X,
а таковых я в природе не наблюдаю...
Я полагаю, что такого никогда и не будет... хоть я и не содержу семью заработками на C++... :mrgreen:

Вопрос в том, что в коде настолько критично, что собирается только под последние Венды компилятором новее 2015 ?
iLavr
User avatar
Shaos
Admin
Posts: 24011
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Re: Кросс-ассемблер для PDP11/8080 (Windows/Linux, open-sour

Post by Shaos »

Lavr wrote:Вопрос в том, что в коде настолько критично, что собирается только под последние Венды компилятором новее 2015 ?
Новые фенечки C++ сильно упрощающие процесс программирования (для тех, кто в теме) - STL в новой реинкарнации, обновлённые exceptions etc.

Наиболее одиозные нововведения стандарта C++11 я убрал - как например автоматическое выведение типа при указании auto и упрощённый цикл for:

было

Code: Select all

for(auto& f : fixups)
стало

Code: Select all

for(std::vector<Fixup>::iterator it=fixups.begin();it!=fixups.end();++it)
Я тут за главного - если что шлите мыло на me собака shaos точка net
User avatar
Lavr
Supreme God
Posts: 16680
Joined: 21 Oct 2009 08:08
Location: Россия

Re: Кросс-ассемблер для PDP11/8080 (Windows/Linux, open-sour

Post by Lavr »

Shaos wrote:Наиболее одиозные нововведения стандарта C++11 я убрал - как например автоматическое выведение типа при указании auto и упрощённый цикл for:
А чего исходниками не поделился, глянуть как ты это сделал?

P.S. Ну а про "одиозные нововведения стандарта C++11" вобще-то пишут следующее:
При разработке каждого раздела будущего стандарта комитет использовал ряд правил:
- поддержка стабильности языка и обеспечение совместимости с C++98 и, по возможности, с Си;
И пишут в ряде источников, что по идее должно всё собираться "в VC98. Ну, или хотя бы в 2005 студии".
iLavr
User avatar
Shaos
Admin
Posts: 24011
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Re: Кросс-ассемблер для PDP11/8080 (Windows/Linux, open-sour

Post by Shaos »

Нагло врут :)

А исходники мои лежат на гитхабе - могу время от времени стягивать и сюда цеплять...

P.S. Прицепил на первой странице топика: http://www.nedopc.org/forum/viewtopic.php?p=132945#p132945
Я тут за главного - если что шлите мыло на me собака shaos точка net
User avatar
Lavr
Supreme God
Posts: 16680
Joined: 21 Oct 2009 08:08
Location: Россия

Re: Кросс-ассемблер для PDP11/8080 (Windows/Linux, open-sour

Post by Lavr »

Спасибо. Скачал - посмотрю...
iLavr
User avatar
Shaos
Admin
Posts: 24011
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Re: Кросс-ассемблер для PDP11/8080 (Windows/Linux, open-sour

Post by Shaos »

Lavr wrote:Спасибо. Скачал - посмотрю...
Вот только я оттуда вытер все куски #ifdef WIN32 :roll:
Так что под винды оно боюсь уже не соберётся...
Я тут за главного - если что шлите мыло на me собака shaos точка net
User avatar
Lavr
Supreme God
Posts: 16680
Joined: 21 Oct 2009 08:08
Location: Россия

Re: Кросс-ассемблер для PDP11/8080 (Windows/Linux, open-sour

Post by Lavr »

Shaos wrote:Так что под винды оно боюсь уже не соберётся...
Оно и так под Вынь 98 не соберется. Я хочу глянуть, что и в какую сторону ты там менял...
iLavr
User avatar
Shaos
Admin
Posts: 24011
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Re: Кросс-ассемблер для PDP11/8080 (Windows/Linux, open-sour

Post by Shaos »

После некоторых прошлогодних изменений pdp11asm перестал собирать исходники патча прошивки МК85 :(

Спотыкается вот на этой строчке:

Code: Select all

	jmp	@funtab-01F8H(r1)	;2*FCh=1F8h @@@
Я тут за главного - если что шлите мыло на me собака shaos точка net
User avatar
piotr433
Novelist
Posts: 49
Joined: 14 Aug 2018 14:30
Location: Szczecin, Польша

Re: Кросс-ассемблер для PDP11/8080 (Windows/Linux, open-sour

Post by piotr433 »

По моему мнению виноват лишний код обработки отрицательных чисел в модуле "parser.cpp".
Предлагаю всё это удалить:

строка 278:

Code: Select all

/* more changes per new patch from Ivanq */
  bool neg = false;
  if(c=='-') {
    neg = true;
    if(*cursor>='0' && *cursor<='9') {
      c = *cursor++;
    }
  }
строка 344:

Code: Select all

    if(neg) n = 0-n;
User avatar
Shaos
Admin
Posts: 24011
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Re: Кросс-ассемблер для PDP11/8080 (Windows/Linux, open-sour

Post by Shaos »

Я тоже на это место грешу, но человек пытался доброе дело сделать - поддержать отрицательные числа...
Я тут за главного - если что шлите мыло на me собака shaos точка net
User avatar
piotr433
Novelist
Posts: 49
Joined: 14 Aug 2018 14:30
Location: Szczecin, Польша

Re: Кросс-ассемблер для PDP11/8080 (Windows/Linux, open-sour

Post by piotr433 »

Я проверил, что отрицательные числа поддерживаются и без данных фрагментов.
User avatar
Shaos
Admin
Posts: 24011
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Re: Кросс-ассемблер для PDP11/8080 (Windows/Linux, open-sour

Post by Shaos »

Наконец-то нашёл время откатить это изменение:

https://gitlab.com/shaos/pdp11asm85/commit/4aa845bf3f6108d5d2add3b81e860c8837089f2b
Я тут за главного - если что шлите мыло на me собака shaos точка net
User avatar
Lavr
Supreme God
Posts: 16680
Joined: 21 Oct 2009 08:08
Location: Россия

Re: Кросс-ассемблер для PDP11/8080 (Windows/Linux, open-sour

Post by Lavr »

Shaos wrote:Наконец-то нашёл время откатить это изменение:
https://gitlab.com/shaos/pdp11asm85/commit/4aa845bf3f6108d5d2add3b81e860c8837089f2b
Скачал твою версию Кросс-ассемблер для PDP11/8080 с первой страницы топика:
viewtopic.php?f=95&t=16953#p132945
Развернул под Windows 7, в качестве теста подсунул ему Монитор отсюда:
MON1986.ASM
В нём заменил строчку:

Code: Select all

;      .psect  1000 = 200h
; на
       ORG  1000
Компильнул pdp11asm.exe, компильнулось без ошибок.

Сравнил через утилиту fc (file compare) с опцией /b - бинарное сравнение с оригиналом:
MONITOR_LH.zip

Обнаружилось 2 разночтения:
; Сравнение файлов C:\TEMP\PDP11ASM\MON1986.bin C:\TEMP\PDP11ASM\MONITOR_LH.bin
; 0000023B: 84 85 1073
; 000002F3: 84 85 1363
По моим прикидкам это попадает на:

Code: Select all

       BVS         M1116
и
       BVS         M1452
Возможно, я где-то ошибся в пересчёте hex-octal, но, тем не менее, глянь, что там не так,
у меня этот код собирался полностью идентично оригиналу...
iLavr
User avatar
Lavr
Supreme God
Posts: 16680
Joined: 21 Oct 2009 08:08
Location: Россия

Re: Кросс-ассемблер для PDP11/8080 (Windows/Linux, open-sour

Post by Lavr »

Lavr wrote:Обнаружилось 2 разночтения:
; Сравнение файлов C:\TEMP\PDP11ASM\MON1986.bin C:\TEMP\PDP11ASM\MONITOR_LH.bin
; 0000023B: 84 85 1073
; 000002F3: 84 85 1363
По моим прикидкам это попадает на:

Code: Select all

       BVS         M1116
и
       BVS         M1452
Да, судя по исходнику, коды для BVS и BVC перепутаны:
BVS.gif
BVS1.gif
Это в файлах pdp11.cpp и c_asm_pdp11.h...

P.S. В общем-то без пересборки файл pdp11asm.exe патчится легко - по смещению, как на картинке,
символы BVS и BVC надо поменять местами, как показано
:
BVS2.gif
You do not have the required permissions to view the files attached to this post.
iLavr
User avatar
Shaos
Admin
Posts: 24011
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Re: Кросс-ассемблер для PDP11/8080 (Windows/Linux, open-sour

Post by Shaos »

Lavr wrote:Да, судя по исходнику, коды для BVS и BVC перепутаны:

Image

Это в файлах pdp11.cpp и c_asm_pdp11.h...
понял - исправлю
Я тут за главного - если что шлите мыло на me собака shaos точка net