Объявление форума |
Если пользуетесь личными сообщениями и получили по электронной почте оповещение о новом письме, не отвечайте, пожалуйста, почтой. Зайдите на форум и ответьте отправителю через ЛС. |
Полигон-2 » IBM PC-совместимое. До 2000 года включительно » Реплика Innovation SSI 2001 |
<<Назад Вперед>> | Страницы: 1 2 3 4 5 6 7 * 8 9 | Печать |
uav1606
Advanced Member
Откуда: Енакиево Всего сообщений: 4373 Рейтинг пользователя: 0 Ссылка Дата регистрации на форуме: 16 янв. 2008 |
Профиль | Сообщить модератору
NEW! Сообщение отправлено: 29 марта 2018 0:16 Сообщение отредактировано: 29 марта 2018 0:22
scg написал: А с чем конкретно возникли проблемы? Так и не разобрался как выделить память размером с сегмент или немного больше. Используются вот эти функции: http://www.datadoctor.biz/data...age23.html Единственный нюанс, который я помню, это что по умолчанию DOS запускаемой программе (особенно это касается COM-файла) выделяет всю доступную память, и, соответственно, выделить её функцией 48h не получится. Помнится, я её сначала освобождал, а потом заново выделял. :-) Как-то так:
Первая функция (4ah) уменьшает уже выделенную память, вторая её выделяет. Естественно, число 1000h подходило для моей маленькой программы, у Вас оно будет другое. |
scg |
uav1606 написал: Этого я не знал. С другой стороны, во-первых, не понятно, сколько нужно оставить памяти, тем более, что программа использует димамическое выделение объектов. А во-вторых, я правильно понимаю, что по умолчанию вся доступная память доступна для аллокатора c++? Однако, у меня не получается выделить 2 блока по 64К: по выходу из программы появляется о шибка о проблемах с памятью и невозможностью запустить command.com. На самом деле памяти нужно не очень много: 64K - RAM, 64K - ROM и IO, еще 64K временно на загрузку файла, плюс немного на динамические структуры и объекты. 640К действительно должно хватить, но не хвататет. Сейчас смотрю в сторону EMS. Единственный нюанс, который я помню, это что по умолчанию DOS запускаемой программе (особенно это касается COM-файла) выделяет всю доступную память, и, соответственно, выделить её функцией 48h не получится. Помнится, я её сначала освобождал, а потом заново выделял. :-) |
uav1606
Advanced Member
Откуда: Енакиево Всего сообщений: 4373 Рейтинг пользователя: 0 Ссылка Дата регистрации на форуме: 16 янв. 2008 |
Профиль | Сообщить модератору
NEW! Сообщение отправлено: 29 марта 2018 14:16 Сообщение отредактировано: 29 марта 2018 14:18
А в C++ Вы потом память освобождаете через free? В конце программы? |
scg |
Профиль | Сообщить модератору
NEW! Сообщение отправлено: 29 марта 2018 14:45 Сообщение отредактировано: 29 марта 2018 14:46
uav1606 Разумеется. Только не через free(), а через delete. |
uav1606
Advanced Member
Откуда: Енакиево Всего сообщений: 4373 Рейтинг пользователя: 0 Ссылка Дата регистрации на форуме: 16 янв. 2008 |
Может, тогда попробуете через malloc и free? А то насчёт delete я вообще не уверен, под DOS'ом не пользовался. Если что, я сейчас про Turbo С++. |
scg |
uav1606 написал: Как это ни странно, помог farmalloc() и только с huge указателем. Причем, превод компилятора в huge режим эффекта не давал. Пришлось менять типы указателей по всему коду. Удалось выделить два буфера для эмулятора процессора и загрузить файл SID. Посмотрим, что будет дальше. Может, тогда попробуете через malloc и free? |
scg |
Профиль | Сообщить модератору
NEW! Сообщение отправлено: 4 апреля 2018 0:11 Сообщение отредактировано: 4 апреля 2018 0:13
Готов релиз для DOS версии: https://stdio.ru/download/ssi-2001/osp2001-0.1.zip Поскольку исходники Open Cubic Player распространялись под лицензией GPL2, то я тоже обязан их опубликовать. Исходный код и последние релизы можно найти здесь: https://stdio.ru/download/ssi-2001/ Было бы неплохо, если бы кто-нибудь проверил минимальную конфигурацию машины, на которой DOS проигрывателя cохранит работоспособность. По поим ощущениям 20-30МГц должно хватить. Запас производительности можно прикинуть нажатием кнопки 'F' (Fast Forward). В этом случае симуляция не синхронизируется с таймером и идет с максимально возможной скоростью. Также, если запустить программу с ключом /V (verbose), то в строке времени отобразится поле TE (Timer Error). Его значение увеличивается каждый раз, когда прерывание от таймера приходит раньше чем завершится обработка предыдущего - то есть тормозит симуляция. |
Fagear
Advanced Member
Откуда: Москва, САО Всего сообщений: 1228 Рейтинг пользователя: 0 Ссылка Дата регистрации на форуме: 22 янв. 2010 |
scg написал: Не сочтите за рекламу, но именно этим я сейчас займусь онлайн, Было бы неплохо, если бы кто-нибудь проверил минимальную конфигурацию машины, на которой DOS проигрывателя cохранит работоспособность.вот тут. |
Fagear
Advanced Member
Откуда: Москва, САО Всего сообщений: 1228 Рейтинг пользователя: 0 Ссылка Дата регистрации на форуме: 22 янв. 2010 |
scg написал: В общем, получил некоторые результаты. Было бы неплохо, если бы кто-нибудь проверил минимальную конфигурацию машины, на которой DOS проигрывателя cохранит работоспособность. Версию под win9x проверял вплоть до Pentium (на Socket 5) на частоте 60x1.5=90 МГц. Тянет без проблем, запас ещё большой по скорости. Версия под DOS дала такие результаты: 386DX-33 хватает с минимальным запасом, 386SX-40 тоже вроде хватает, но запаса практически нет. 286-20 уже явно не хватает, воспроизведение заторможенное. Сюрпризом же стало то, что оно завелось даже на TurboXT машине! Единственное, была выведена только одна строка (название композиции), а имя автора, копирайт и время не вывелось. Однако воспроизведение пошло! Пусть и ооооочень медленно, но тем не менее. Однако, при ближайшем сравнении я обнаружил, что этот плеер звучит немного иначе, чем старый вариант под win9x под кодовым именем "ssidpl9x" (он же "ssid_w9x"). Вот один пример. Кусок на ssid_w9x Кусок на osp2001-win На мой слух osp2001 съедает часть звуков, комбинированные звуки "рассыпаются" по времени, в целом звучит немного странно. Возможно, слишком редко отправляет данные в SID? |
scg |
Fagear написал: Спасибо, посмотрел запись вашего стрима. Я хоть и знал, что на 286-м он не пойдет, но надеялся до последнего. В общем, получил некоторые результаты. Fagear написал: По правде говоря, скорость обновления задается в заголовке файла, либо выставляется настройкой Коммодоровского таймера CIA1. И то и другое я учитываю. Тут нужно брать конкретный SID и разбираться. На мой слух osp2001 съедает часть звуков, комбинированные звуки "рассыпаются" по времени, в целом звучит немного странно. Возможно, слишком редко отправляет данные в SID? С другой стороны, есть SID файлы, в которых передача данных на SID идет постоянно, поэтому требуется точная потактовая симуляция процессора 6510. Такие файлы называются RSID (Real SID) и у них специально изменен Magic Dword в заголовке, чтобы отличать их от обычных SID. Кроме Magic'ов эти два вида файлов никак не отличаются. Так вот, ssidpl9x умеет играть такие файлы, а osp2001 - нет (там симуляция процессора более грубая). Человек, который грабил этот SID вполне мог по ошибке указать неверный тип. Тут, повторюсь, мне нужно где-то взять этот файл и поразбираться - возможно что и у меня баг. |
<<Назад Вперед>> | Страницы: 1 2 3 4 5 6 7 * 8 9 | Печать |
Полигон-2 » IBM PC-совместимое. До 2000 года включительно » Реплика Innovation SSI 2001 |
1 посетитель просмотрел эту тему за последние 15 минут |
В том числе: 1 гость, 0 скрытых пользователей |
Последние | |
[Москва] LIQUID-Акция. Сливаются разъемы CF МС7004 и 7004А на AT и XT Пайка термотрубок Проммать s478 PEAK 715VL2-HT ( Full-Size SBC) Подскажите по 386 материке по джамперам. |
Самые активные 5 тем | |