-
- ? Дмитрий
- 26.04.2017 15:49
Перевести плееры с асма спека на асм БК, подкорректировав вывод в регистры AY - больше никак. Сырцы плееров есть в архиве с сырцами плеера Бульбы.
- ? Дмитрий
- 26.04.2017 15:11
>> А уже из этих модулей можно и плеер сварганить
Так есть же плеер с сырцами Бульбы с мульеном форматов. Только он там, емнип, встроил в плеер эмулятор zx и формат пережевывает чуть ли не оригинальный ZX-плеер, который загружен в эмулятор. А сам плеер уже ловит регистры в эмуляторе и генерит звук по ним. Давно ковырял исходники, многое уже не помню и могу ошибаться.
- ? Дмитрий
- 25.04.2017 17:58
void CMotherBoard::RunOut()
{
// Run all commands to function end
CDebugger::InitOutMode();
UnbreakCPU(GO_OUT);
}
¤
Почему InitOutMode вызывается по имени класса (а где он создан?), а не по определенному CMotherBoard->m_pDebugger??
¤
>> Добавлю что нежелательно писать
Это для примера, для полного понимания.
- ? Дмитрий
- 25.04.2017 15:06
Хм и еще одно сомнение: CMotherBoard::SetWord и GetWord в switch в нескольких OnSetSystemRegister используется num и тут же вычисляется адрес через addr, а ветке default опять же addr.
- ? Дмитрий
- 25.04.2017 14:53
И не проще ли для ускорения вычислять адрес один раз в переменную, чем каждый раз заново?
- ? Дмитрий
- 25.04.2017 14:51
Еще вопрос:
¤
В CMotherBoard::GetWord и SetWord вычисляется адрес как m_MemoryMap[nBank].nOffset + (addr & 007777). А в CMotherBoard::GetWordIndirect и SetWordIndirect как m_MemoryMap[nBank].nOffset + (addr & 007776). Т.е в первом случае маска &O7777, а во втором &O7776. Тут не ошибка ли?
- ? Дмитрий
- 25.04.2017 11:24
>> между поклонниками строгой типизации и сишниками, постигшими дзен Си
Я ни в коем разе не в плане холивара. Каждый пишет как ему удобнее. Просто везде, на каждом углу говорят: хочешь изучить Си - читай код профессионалов. В принципе согласен (что и делаю), но в 99% случаев код написан профи для профи и начинающему разбирать профи-кашу, вкупе с полностью отсутствующими комментариями в коде (не в данном случае), часто не под силу, особливо не знающему вышеописанных тонкостей.
¤
>> Так, если писать много кода не лень
Значит я не ошибся. Пока начинающий - не лень. Надо уметь писать полностью. Когда опыт придет, можно и сокращать. Когда детей учат писать - заставляют писать правильно. Научится - пусть хоть стенографирует. :)
¤
Благодарю. Появятся вопросы - напишу сюда еще.
- ? Дмитрий
- 24.04.2017 22:16
Опытные сишники, просветите в следующем. В качестве Си-экспириенса разбираюсь в сырцах эмуля. Вроде все понятно, но натыкаюсь на некоторые места, коих насчитал 6 - а именно: реализации get_src_arg/get_dst_arg/set_dst_arg. С чем сравнивается, к примеру, m_nMethSrc (метод адресации 0..7) в коде:
¤
if (m_bSign)
{
m_datarg = (m_nMethSrc) ? GetByte(m_nSrcAddr) : LOBYTE(m_RON[m_nSrcAddr]);
}
else
{
m_datarg = (m_nMethSrc) ? GetWord(m_nSrcAddr) : m_RON[m_nSrcAddr];
}
¤
==0, !=0, больше чего-то, меньше? Компилятору мб и понятно что с чем кушать, но читающему непрофессионалу - вряд ли. С булевым значением все ясно - (m_nMethSrc) равнозначно (m_nMethSrc == true). А с целочисленной переменной?
¤
Встретился еще один затык в CCPU::TranslateInstruction, в именно в if (nInterruptVector), но тут по смыслу оказалось (или показалось??), что эта запись равносильна if (nInterruptVector !=0)
¤
Вот теперь думаю, а не так ли должен выглядеть код с явным указанием что с чем проверяется??
¤
if (m_bSign)
{
m_datarg = (m_nMethSrc != 0) ? GetByte(m_nSrcAddr) : LOBYTE(m_RON[m_nSrcAddr]);
}
else
{
m_datarg = (m_nMethSrc != 0) ? GetWord(m_nSrcAddr) : m_RON[m_nSrcAddr];
}
- ? Дмитрий
- 18.04.2017 21:52
Если RUN, то адрес 135242
- ? Дмитрий
- 18.04.2017 10:22
Просто по фразе
¤
>> способ запуска Бейсик программ без компиляции, сразу
¤
так и понимается, что компиляция не нужна от слова "совсем", на что я и написал, что это невозможно.
¤
А по идее нужна программа, которой можно подсунуть дамп (к примеру 2000-37777) с исходником и уже сформированной таблицей кодов, из которого программа сделает запускаемый модуль, убрав все лишнее и исправив адреса текстовых строк (которые можно разместить после таблицы). Получится компактная программа, которая будет запускаться сразу.
- ? Дмитрий
- 17.04.2017 22:32
>> Где-то у меня был записан способ запуска Бейсик программ без компиляции, сразу
Без компиляции это невозможно. Программа сначала должна быть оттранслирована в "шитый код". Далее MOV #<адрес_таблицы_кодов>,R4 и JMP @(R4)+
- ? Дмитрий
- 17.04.2017 13:15
>> как обычные бинарные из монитора БК10
Была программулина, которая запускала код, получающийся при трансляции бейсиковских файлов - фактически таблица адресов п/программ. Но, если мне склероз не изменяет, недостатки в ней были. Главный - некорректная работа со строками, ибо код ссылается на них в сам исходник. Т.е. без исходника запуск был невозможен. Единственный плюс - мгновенный запуск программы.
- ? Дмитрий
- 22.03.2017 21:34
>> но теперь уже повторно найти, в каком образе видел, уже не получается
http://pdp-11.ru/mybk/IMG/svib/06-97.img
- ? Дмитрий
- 22.03.2017 21:21
В 4-х цветное - бесполезно, в ч/б - использовать dithering (к примеру, Floyd-Steinberg). Самое простое - IrfanView.
- ? Дмитрий
- 07.03.2017 20:24
>> Clang LLVM для PDP-11
Оо, это интересно. Я поглядел в сырцы на предмет написания backend'а для LLVM - там моих познаний в Си категорически недостаточно для написания. Максимум - парсер LLVM-асма для компиляции в код.
- ? Дмитрий
- 07.03.2017 15:19
Порылся в своих архивах - чет не нашел. Есть у кого асм-исходник блока эмуляции EIS/FIS/FPU? В СМК зашит обработчик только первых двух.
- ? Дмитрий
- 03.03.2017 11:08
А чем не устроила новая плата в корпус БК? Сделать на 1-2 1806, чтоб не городить этажерки на костылях. Либо сделать базовый комп на 1806 с разъемом для подключения второго 1806 со своими плюшками.
- ? Дмитрий
- 27.02.2017 18:43
Интересный оптимизатор у этой сборки. Нормально работает только -O1. С другими (-O2..-Os) простейший пример сложения двух float-чисел в асм-выводе (ключ -S вместо -c) теряет одно число! С -O1 оба числа на месте.
¤
Кстати, -m10 работает только с отключенной оптимизацией. -mint32 также работает только с отключенной оптимизацией.
- ? Дмитрий
- 26.02.2017 02:09
И почему-то не работают опции "PDP-11 instruction set extentions" и "PDP-11 CPU model options" из bin\gcc-help.txt. Правда проверял я на сдвиге как раз. Пробовал и инструкции запрещать и модель ЦПУ менял - результата ноль.
- ? Дмитрий
- 26.02.2017 02:03
А исходник msoft-float\libgcc есть? Ручками вытащить все, что нужно, и собрать в один модуль, а потом его к асму цеплять. ASH/ASHC заменить потом на ROL/ROR.
- ? Дмитрий
- 26.02.2017 00:20
Обжи извлек, __adddf3 нашел. Но! В obj все ссылки на подпрограммы нулевые и фактически ссылаются на начало obj-кода. objdump не может (не умеет) брать имена из соотв. секции и подставлять вместо нуля. Как их искать вручную - я хз. Нужен исходник msoft-float\libgcc.
- ? Дмитрий
- 26.02.2017 00:02
1) Ключ -m10 не работает. Простейший пример:
¤
int shift(int a, int b)
{ return (a >> b); }
¤
int primer()
{ return shift(345,3); }
¤
выдает ошибку:
¤
test2.c: In function 'shift':
test2.c:2:1: error: unrecognizable insn:
(insn 8 7 9 3 (set (reg:HI 26)
(ashift:HI (reg/v:HI 24 [ a ])
(reg:HI 27))) test2.c:2 -1
(expr_list:REG_EQUAL (ashiftrt:HI (reg/v:HI 24 [ a ])
(reg/v:HI 25 [ b ]))
(nil)))
test2.c:2:1: internal compiler error: in extract_insn, at recog.c:2109
¤
2) Запихнуть в обж код эмуляции FPU так и не могу.
- ? Дмитрий
- 25.02.2017 20:27
И еще. Не могу избавиться от "не-БК" инструкций. При использовании сдвига опция -Wa,-mno-extentions не работает - в код все равно суется ash/ashc.
- ? Дмитрий
- 24.02.2017 18:33
>> смысле ручками дописать функции под ту операционку, под которую планируется.
Я уже попробовал. В принципе годится. Не сахар, но уже что-то. Правда все include приходится выкидывать либо серьезно править. Но это решаемо, ибо мне не офис под pdp собирать.
¤
>> Да, но никто процесс сборки не проверяет и никакого тестирования не проводится.
Даже больше скажу - код никто уже не правит.
¤
>> Должна быть тут - lib\gcc\pdp11-aout\4.6.2\msoft-float
Нашел. А как сделать, чтобы при компиляции эти реализации сразу цеплялись к объектнику? Так сказать получить на выходе "все-в-одном", без зависимостей?
- ? Дмитрий
- 24.02.2017 16:55
Кстати, при отключении аппаратного fpu код ссылается на реализацию команд. А где сама реализация этих команд?
- ? Дмитрий
- 24.02.2017 16:41
>> PDP-11 для GCC4.x уже официально не поддерживается
Его никуда не выпиливали. В последнем 6.3.0 все еще есть код для pdp-11. Надо только собрать под него компилятор.
¤
>> Поэтому все ручками.
Не, все ручками не годится. return (a+b) я и на чистом асме напишу. Я Си знаю на базовом уровне - код худо-бедно (не слишком сложный) прочитать смогу, а вот писать на этом ужасе - увольте...
- ? Дмитрий
- 24.02.2017 01:55
Не находит sys\types.h. Папку include взял от готового компилятора. Миллион ошибок из-за проблем в этих файлах. Нужна папка include, которая должна лежать в папке pdp11-aout.
- ? Дмитрий
- 24.02.2017 01:34
Все либы нашел.
- ? Дмитрий
- 24.02.2017 01:07
minGW32-gcc-6.3.0 у меня стоит (качал отсюда https://sourceforge.net/projects/mingw-w64/files/mingw-w64/ ). Там этих библиотек нет.
- ? Дмитрий
- 23.02.2017 21:07
0xс0000005
- ? Дмитрий
- 23.02.2017 21:07
Благодарю.
¤
Не запускается - говорит нет libgmp-10.dll и libiconv-2.dll. Нашел в инете, но с ними ошибка 0x00000005 при запуске.
- ? Дмитрий
- 23.02.2017 20:32
поддержки РТ-11 не надо. мне, по сути, нужно собрать в объектники сырцы, там уже сам выдерну то что нужно.
- ? Дмитрий
- 23.02.2017 18:04
Нет ли у кого готовых бинарников сабжа под win? Собирать с нуля для меня - темный лес. Либо сможет ли кто собрать готовый из последних исходников?
- ? Дмитрий
- 29.11.2016 09:14
Кстати, а никто не смотрел как организована "матрица" клавиш в современных клавах? Может проще отключить чип-кляксу и брать линии непосредственно с выводов пленки, чем городить адаптеры PS/2 на проце, который мощнее проца в БК??
- ? Дмитрий
- 26.11.2016 14:06
>> http://t-h-s.ru/bk/ad.rar
Файл недоступен
- ? Дмитрий
- 25.11.2016 20:47
>> Да был такой архивчик, восстановлен с hdd Новака
Ссылочку, плиз, в студию... И неплохо бы все восстановленное тоже...
- ? Дмитрий
- 01.11.2016 22:42
>> А БК уже 2 загнулись.
Мб потому что Львов собран на простяцких микросхемах и там нет сложных микрух типа серии 1801ВП1-ххх?
- ? Дмитрий
- 01.11.2016 15:04
Экономили на всем - вот и слепили "из того, что было". Кто мешал сразу сделать аналог 11М? Кто мешал поставить меньшее кол-во МС памяти того же объема? Либо поставить 1 (да хоть импортную) как в 11М-01 Воланда? А сделать сразу с 256/512/1024 Кб доп. ОЗУ? С нормальным (пусть и невысокого разрешения - хотя бы 384х256) цветным видеоконтроллером? Не будем замахиваться на 256 цветов и выше - хоть 16-цветный? Да, машинка получилась бы дороговатая по сравнению с тем, что было.
- ? Дмитрий
- 23.09.2016 21:04
>> Если кто сумеет, пусть мне покажет, как это делается.
Не помню уже как делал - примерно так (пусть поправят меня, если накосячил где):
CreateFile("\\.\A:",GENERIC_READ+GENERIC_WRITE,FILE_SHARE_WRITE,NULL,OPEN_EXISTING,FILE_FLAG_NO_BUFFERING,NULL) + ReadFile/WriteFile + SetFilePointer + CloseHandle.
¤
Читаем/пишем, ессно, целыми секторами.
- ? Дмитрий
- 19.09.2016 21:00
>> https://youtu.be/a9xz2OqGexc
>> Пообсирайте шоль пока
Музон из видоса есть в виде файла? Желательно в формате РокМонитора.
- ? Дмитрий
- 01.08.2016 17:46
Есть ли какие-то подвижки в проекте? Давно ни слуху, ни духу. Когда ожидать долгострой?
- ? Дмитрий
- 13.05.2016 20:24
А чой-то там заклеено "Экспертиза ЦРУ"?
- ? Дмитрий
- 11.05.2016 14:25
а чего непонятно? https://github.com/oitofelix/mininim/releases/download/v0.10/mininim-0.10.tar.gz ссылка есть
- ? Дмитрий
- 27.04.2016 22:20
Эти вопросы надо адресовать разработчикам десятки.
- ? Дмитрий
- 12.04.2016 16:03
>> А за такой конкретный обман этих "продавцов" просто выкинут с aliexpress
Там море таких "шутников". И появляются все новые. Так что "выкинут", "честность" - это не про всех китайцев. Приятель заказывал ворох какой-то фигни, пришла половина рабочих, половина откровенно дохлых. Написал на форуме отзыв про этого шутника, так он задолбал на ломаном англ. писать, чтоб приятель убрал негативный отзыв. Приятель наотрез отказался. Даже в случае полного возмещения стоимости покупки.
- ? Дмитрий
- 12.04.2016 15:59
>> Совершенно не такие. Речь шла об форматах SD(MMC) и CF(Compact Flash - твердотельный микродиск с эл.сигналами как у IDE/PATA-интерфейса),см. хотя бы http://www.kenrockwell.com/tech/lexar/600x-32gb.htm
Я не то имел в виду. И я в курсе как выглядят SD и CF. Китайский CF на 8/16Гб может оказаться на самом деле закольцованной флэшкой на 1Гб, по цене полноценного 8/16 гигового аналога.
- ? Дмитрий
- 12.04.2016 00:23
>> CF - карты есть в продаже ... и на aliexpress.
https://geektimes.ru/post/142651/
¤
Эти карты будут типа такого "винта"? Не, спасибо...
- ? Дмитрий
- 10.04.2016 16:09
>> идеальным вариантом был бы не 5" вариант CD-диска, а уменьшенный стандарт - там что-то в районе 200 Мбайт объём.
Без разницы. Диски уменьшенного размера и объема есть, а приводов нет. Так что все равно будет 5,25 привод висеть.
¤
И да, согласен, писать на БК не нужно. Главное, чтобы читал. Писать архивы можно и на РС.
- ? Дмитрий
- 10.04.2016 01:32
>> у них на "гребенке"(IDC-34) из штатных 34 контактов отсутствует едва ли не половина, и,благодаря чему,сами эти дисководы ФИЗИЧЕСКИ не поддерживают форматы с объемом МЕНЕЕ стандартного
>> 1.44М(нет датчика плотности "720/1.44",только "защита записи")
У меня "полный" IDC флопа, один хрен не имеет датчика плотности. Надо искать старые флопы - последних лет выпуска (перед сворачиванием производства) 100% не имеют датчиков плотности.
¤
>> Вообще, я бы хотел для БК пишущий CD-привод подключить, чтобы полноценно записывать-читать болванки.
Нет никаких преград. Читать БК с сидюка может хоть сейчас (это обычное IDE-устройство), главное написать драйвер разбора структуры данных. А для записи нужен отдельный драйвер. Либо сразу писать прозрачный драйвер пакетной записи. Тогда чтение/запись такого сидюка ничем не будет отличаться от чтения/записи винта.
- ? Дмитрий
- 07.04.2016 21:51
А зачем? У меня вообще безо всяких программулек диски БК читались на РС и наоборот. Хз как насчет обычного КНГМД, но СМК делал это "из коробки". Там в одном месте задержка ставилась в два раза больше и все работало.
-
«
1 | ... | 5 | 6 | 7 | 8 | 9 | »
?