IPB
ЛогинПароль:

> Правила раздела!

1. Заголовок или название темы должно быть информативным !
2. Все тексты фрагментов программ должны помещаться в теги [code] ... [/code] или [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ" и используйте ПОИСК !
4. НЕ используйте форум для личного общения!
5. Самое главное - это раздел теоретический, т.е. никаких задач и программ (за исключением небольших фрагментов) - для этого есть отдельный раздел!

2 страниц V  1 2 >  
 Ответить  Открыть новую тему 
> Pascal под DOS
сообщение
Сообщение #1


Новичок
*

Группа: Пользователи
Сообщений: 11
Пол: Мужской
Реальное имя: yurpos
Jabber: yurpos

Репутация: -  0  +


Подскажите пожалуйста, можно ли Pascal загрузить без запуска WINDOWS? и если можно, то какую версию лучше использовать? и можно ли запустить его с флешки?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


Большевик–концептуал
**

Группа: Пользователи
Сообщений: 141
Пол: Мужской
Реальное имя: Иван Левашев
Jabber: octagram@jabber.ru
Skype: i.levashew
QQ: 3152538431
WeChat
Ада: Сторонник
Embarcadero Delphi: Сторонник
Free Pascal: Разработчик
Turbo Pascal: Установлен

Репутация: -  1  +


А если не Windows, то что?

Linux + School Pak для Linux, например, подойдёт?

Если действительно DOS, то всё тот же School Pak, если из него взять pak, вполне готов для настоящего DOS и отлаживался, например, на bochs.

Сообщение отредактировано: OCTAGRAM -


--------------------
If you want to get to the top, you have to start at the bottom
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


Новичок
*

Группа: Пользователи
Сообщений: 11
Пол: Мужской
Реальное имя: yurpos
Jabber: yurpos

Репутация: -  0  +


Цитата(OCTAGRAM @ 7.08.2017 17:14) *

А если не Windows, то что?


я наверно двигаюсь задом наперёд), но что поделать если сначала всё осваиваешь через винду
наверно надо уточнить по вопросу, программа написана и отлажена в досовском окне под виндой, но проблема в следующем: возникла необходимость чтобы запустить её только в чистом dos, поскольку для программы важно чтобы она работала в реальном времени, а как оказалось, винда накладывает в ходе выполнения свои (непредсказуемые) ограничения, поскольку время в винде понятие относительное))

Сообщение отредактировано: yurpos -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4


Большевик–концептуал
**

Группа: Пользователи
Сообщений: 141
Пол: Мужской
Реальное имя: Иван Левашев
Jabber: octagram@jabber.ru
Skype: i.levashew
QQ: 3152538431
WeChat
Ада: Сторонник
Embarcadero Delphi: Сторонник
Free Pascal: Разработчик
Turbo Pascal: Установлен

Репутация: -  1  +


Может быть, у вас такая проблема только из-за модуля Crt? В оригинале там был пустой цикл со счётчиком, потом на мощных машинах из-за такого подхода деление на 0 получилось, потом эту проблему как бы «починили», но общий подход остался прежним, задержки всё так же пустым циклом делаются, а реальные интервалы времени стали меньше.

Версий модуля Crt было несколько, и та, что в School Pak, ориентируется по системным часам, не ест CPU и делает задержку без уменьшений. Программы, собранные этой версией модуля, проверялись в NTVDM тоже. Попробуйте просто пересобрать и сравнить.


Эскизы прикрепленных изображений
Прикрепленное изображение Прикрепленное изображение

--------------------
If you want to get to the top, you have to start at the bottom
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #5


Новичок
*

Группа: Пользователи
Сообщений: 11
Пол: Мужской
Реальное имя: yurpos
Jabber: yurpos

Репутация: -  0  +


Цитата(OCTAGRAM @ 7.08.2017 18:18) *

Может быть, у вас такая проблема только из-за модуля Crt?

я в программировании новичок), но то что я почитал наталкивает меня на мысль что проблема скорее всего в приоритетах потоков, которые организует винда и организовать их правильно (если это вообще возможно) врядли у меня получиться, поэтому напрашивается решение... исключить винду вооще

Сообщение отредактировано: yurpos -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #6


Знаток
****

Группа: Пользователи
Сообщений: 475
Пол: Мужской
Реальное имя: Федосеев Павел

Репутация: -  9  +


Сейчас уже не существует старого форума wasm.ru, на котором обсуждалась тема, что DOS не является ОС реального времени. Причина - на материнской плате много устройств и периодически (несколько раз в секунду) возникают прерывания ACPI (кажется, так было написано), которые нарушают ход времени выполнения программы пользователя.

Но в плане формирования программным способом временнОй диаграммы на контактах LPT (или COM) порта, осциллограмма будет меньше искажена в DOS, чем в Windows.

Полгода-год назад на другом форуме я советовал взять другой инструмент для решения задачи. А именно, обратить внимание на ПЛК (свободно программируемые промышленные контроллеры) и ПР (программируемые реле).
ПЛК и ПР - это не Arduino и не отдельные микросхемы, а законченные изделия. Разница между ПЛК и ПР лишь в количестве входов/выходов и количеством поддерживаемых языков программирования - у ПР все проще.

Время программного цикла у ПЛК сравнительно не высоко - 5-20мс, т.е. с частотой 200-50Гц. Но больше и не требуется, т.к. предназначение ПЛК - управление через промежуточные реле (время сработки которых - 10-20мс) разными электроприводами.

У ПР не замерял, но думаю, что сопоставимо.

Причина, толкающая на отказ от DOS. Из-за проблем с драйверами к разному оборудованию, вы фактически превращаете компьютер за 1000 USD в ПЛК или ПР. В случае поломки компьютера будет трудно найти ему замену - на современных материнках нет LPT и COM. Также, оборудование, подключаемое к компьютеру будет подключено без гальванической развязки, что приведёт к быстрой, в течение года, поломке оборудования у заказчика.

А ПЛК и ПР уже предназначены для работы в неблагоприятных условиях помех и имеют индивидуальные или групповые изоляторы входов.

Примеры ПР - Siemens !Logo, ОВЕН ПР114, ОВЕН ПР200, Zelie.
Примеры ПЛК - найдёте в сети по фирмам Siemens, Omron, Beckoff, ОВЕН, Segnetic и многих других.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #7


Новичок
*

Группа: Пользователи
Сообщений: 11
Пол: Мужской
Реальное имя: yurpos
Jabber: yurpos

Репутация: -  0  +


Цитата(Федосеев Павел @ 8.08.2017 4:05) *

Время программного цикла у ПЛК сравнительно не высоко - 5-20мс, т.е. с частотой 200-50Гц. Но больше и не требуется

В том то и дело что очень даже требуется) программа не очень то похожа на модуль управления каким нибудь устройством, вернее ничего общего с ним не имеет...
но всё равно огромное Спасибо за подробный ответ! радует то что в DOS влияние на скорость выполнения программы (пока предположительно) всё же меньше... и сейчас меня интересует можно ли pascal загрузить с флешки под dos, как это раньше делалось с дискеты в 3,5 дюйма???
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #8


Большевик–концептуал
**

Группа: Пользователи
Сообщений: 141
Пол: Мужской
Реальное имя: Иван Левашев
Jabber: octagram@jabber.ru
Skype: i.levashew
QQ: 3152538431
WeChat
Ада: Сторонник
Embarcadero Delphi: Сторонник
Free Pascal: Разработчик
Turbo Pascal: Установлен

Репутация: -  1  +


Насколько мне известно, BIOS/EFI умеют эмулировать флеш либо как HDD, либо как CD-ROM. Для первого сценария можно
  • установить VirtualBox или bochs
  • создать новый виртуальный компьютер, образ жёсткого диска не создавать
  • скачать и подключить как загрузочный образ дискеты PC-DOS (моё предпочтение) или MS-DOS или DOS'овской дискеты Windows 95/98/Millenium; крайне не советую FreeDOS, там какие-то глюки, файлы пропадают, перезагрузишься в нормальный DOS — снова есть, но с ошибками в файловой системе.
  • подключить в виртуальный компьютер флеш как HDD (возможно, потребуется вручную отмонтировать разделы из «Мой компьютер » Управление » Управление дисками», не отключая флешку как устройство)
  • включить виртуальный компьютер
  • если C: не виден, разбить этот HDD из виртуальной машины с помощью FDISK (данные потеряются).
  • если C: виден, но не читается (в частности, после FDISK), отформатировать раздел C: (данные потеряются) при помощи FORMAT C:
  • сделать загрузочным при помощи SYSTEM C:
  • выключить виртуальный компьютер
  • отключить флеш как устройство через значок в трее и подключить обратно
  • дописать на флеш файлы программы
  • пробовать перезагрузиться с флеш

bochs может потребоваться запускать с правами администратора, чтобы он мог получить низкоуровневый доступ к флеш.

Также полезно иметь под рукой dd для Windows, например, чтобы узнать, под каким именем нужно монтировать флеш как диск в bochs.

Интересный вопрос, с какой геометрией будет монтироваться диск BIOS'ом. Скорее всего, два из трёх параматеров максимальные, а третий определяется объёмом флеш, но это не точно. Для DOS, Windows 9x и Windows NT это критично. По крайней мере, Windows 2003 переносил с HP RAID в Xen снятым dd образом, и она не грузилась именно из-за отличий в геометрии. На загрузочных секторах пишутся не линейные смещения, как у Линукса и БСД, а трёхмерные координаты. Помог их пересчитать только TestDisk.

Для второго сценария (флеш как CD-ROM) нужно отмонтировать разделы из «Мой компьютер » Управление » Управление дисками», не отключая флешку как устройство, и записать образ ISO на флеш средствами dd.

dd — опасная штука, не зря её шутливо называют disk destroyer. На сайте советуют переименовать dd.exe в dd-removable.exe , чтобы запретить запись по ошибке в обычный жёсткий диск.


--------------------
If you want to get to the top, you have to start at the bottom
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #9


Новичок
*

Группа: Пользователи
Сообщений: 11
Пол: Мужской
Реальное имя: yurpos
Jabber: yurpos

Репутация: -  0  +


Цитата(OCTAGRAM @ 8.08.2017 13:39) *

Насколько мне известно

))) для меня пока это только тёмный лес, огромное спасибо за варианты помощи, буду пошагово пробовать всё это переварить, думаю по ходу ещё не один вопрос появится)
Кроме всего прочего всё это придётся перекачивать через DELPHI - PASCAL - DOS - PASCAL - DELPHI пока не закончиться процесс отладки

Сообщение отредактировано: yurpos -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #10


Знаток
****

Группа: Пользователи
Сообщений: 475
Пол: Мужской
Реальное имя: Федосеев Павел

Репутация: -  9  +


FreeDOS раньше загружалась с CD-ROM. Если всё прям серьёзно, то выделяйте компьютер и устанавливайте на него FreeDOS. Когда 5 лет назад FreeDOS была моей основной ОС ставил достаточно много драйверов для ускорения работы с жёсткими дисками - иначе скорость обмена снижалась в 10 раз по сравнению с Windows на этом же компьютере. Работал с USB-Flash, но скорость обмена была очень медленной.
Кроме того, для комфортной работы в DOS устанавливал и настраивал дополнительные программы.

Мой совет, если никогда не работали в DOS - не лезьте. Настройка займёт много времени, а выигрыш - будет незначительный, а главное - бесполезно потраченное время.

Если всё же будете работать в DOS - попробуйте сравнить скорости работы разных компиляторов Pascal:
- Turbo Pascal x16 (real mode)
- Borland Pascal x16 (protected mode)
- Free Pascal for DOS (real mode)
- Free Pascal for DOS (protected mode)
- Virtual Pascal for DOS (protected mode)

Больше расположен к Free Pascal из-за развитых библиотек. А там смотрите.
--------------------------------------------
По опыту знаю, что все, кто пытается ускорить выполнение программы, после DOS лезут в ассемблер. Так что вы лишь в самом начале пагубного пути.

И еще раз. Я уже предупреждал: не лезьте - потеряете время, решение нужно искать другими средствами.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #11


Знаток
****

Группа: Пользователи
Сообщений: 475
Пол: Мужской
Реальное имя: Федосеев Павел

Репутация: -  9  +


Я работал только с FreeDOS 1.0 и 1.1. Для возможности кириллицы патчил ядро (не понимаю, что делал - по бумажке заменял одни файлы на другие).
Т.к. работал в чистом DOS, не в виртуальной машине, то никаких пропаданий файлов не замечал. Это нормальная ОС. Работал во FreeDOS на протяжении нескольких лет с утра до вечера.

Для русификатора ещё подбирал шрифты - т.к. большинство шрифтов рассчитаны на VGA дисплеи и на LCD смотрятся нечитабельно.

Для попытки знакомства с DOS вполне подойдёт DOSBox. Её тоже нужно настраивать, но в интернете много материалов.
Работа с DOS через VirtualBox очень неудобна - нет связи с DOS, т.е. затруднительно обмениваться файлами.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #12


Новичок
*

Группа: Пользователи
Сообщений: 11
Пол: Мужской
Реальное имя: yurpos
Jabber: yurpos

Репутация: -  0  +


Цитата(Федосеев Павел @ 8.08.2017 14:33) *

для ускорения работы с жёсткими дисками

работа с жёстким диском только открыть файл вначале работы и записать в конце
на этом этапе главное максимальная синхронизация скорости обработки и реального времени
на что точно не хотелось бы тратить время так это перебирать различные варианты программ и варианты загрузок, поэтому и вопрос в этой теме, хорошо что уже появились варианты решения проблемы

Сообщение отредактировано: yurpos -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #13


Большевик–концептуал
**

Группа: Пользователи
Сообщений: 141
Пол: Мужской
Реальное имя: Иван Левашев
Jabber: octagram@jabber.ru
Skype: i.levashew
QQ: 3152538431
WeChat
Ада: Сторонник
Embarcadero Delphi: Сторонник
Free Pascal: Разработчик
Turbo Pascal: Установлен

Репутация: -  1  +


А что подразумевается под «реальным временем»? По моему опыту основная проблема с программами для DOS — это то, что они приучены есть CPU в циклах, а планировщик этого не любит, он даёт большие кванты, но если этот квант полностью съесть, то потом ставит в очередь на подождать. Если отдавать процессор регулярно через прерывание IDLE (оно где-то на мультиплексе висит), то NTVDM даёт работать вполне нормально. Раз на 18 в секунду пробуждений, я думаю, можно полагаться.

Цитата(Федосеев Павел @ 8.08.2017 4:05) *
компьютер за 1000 USD
Что-то цены какие-то заоблачные. У меня все пять компьютеров дома, наверное, столько не стоят в сумме на момент покупки.

Вот новый Compute Stick за 4500руб., а б/у нетбук без матрицы я брал за 2000руб. года 4 назад, сейчас, может, чуть подороже будет. Обычно б/у нетбук с матрицей раза в два дешевле нового, а без матрицы это же типа катастрофа, цена на б/у нетбук уменьшается на цену новой матрицы, и получается интересно.


--------------------
If you want to get to the top, you have to start at the bottom
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #14


Знаток
****

Группа: Пользователи
Сообщений: 475
Пол: Мужской
Реальное имя: Федосеев Павел

Репутация: -  9  +


Это, конечно, не относится к теме. Но новый компьютер в сборе (системник, монитор, клавиатура, мышь) всегда стоил примерно 1000 USD.

Сообщение отредактировано: Федосеев Павел -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #15


Новичок
*

Группа: Пользователи
Сообщений: 11
Пол: Мужской
Реальное имя: yurpos
Jabber: yurpos

Репутация: -  0  +


Добрый день, спасибо огромное за советы, что то я уже попробовал, что то ещё нет, но столкнулся с такой проблемой:
1. не могу в паскале создать массив более 65Кбайт... может это как то возможно побороть, может какую конкретную версию установить?
2. пишет что что в программе слишком много переменных (в программе 12 массивов по 1Мбайту, может это тоже от версии зависит?
Программа под DEPHI переделана под PASCAL. Весит примерно 40Кбайт.
Может с такими входными данными PASCAL вообще не заточен работать???

Сообщение отредактировано: yurpos -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #16


Большевик–концептуал
**

Группа: Пользователи
Сообщений: 141
Пол: Мужской
Реальное имя: Иван Левашев
Jabber: octagram@jabber.ru
Skype: i.levashew
QQ: 3152538431
WeChat
Ада: Сторонник
Embarcadero Delphi: Сторонник
Free Pascal: Разработчик
Turbo Pascal: Установлен

Репутация: -  1  +


В Turbo Pascal — действительно такие ограничения. Модель программы такова, что в программе один сегмент данных на всё (в 16-разрядной программе сегмент — это максимум 64Кб) и несколько сегментов кода (то есть, разными юнитами и BINOBJ можно напихать больше, чем 64Кб). Дополнительно к этому в реальном режиме без ухищрений вроде XMS доступно для адресации только 640Кб. В защищённом режиме Turbo Pascal должно быть возможно выделить больше, чем 640Кб, если делать по несколько сегментов.


Разумно тут 32-разрядный компилятор для защищённого режима взять. Таким программам, чтобы работать в DOS, требуется окружение DPMI. Поскольку 32-разрядные компиляторы на поверку компилируют для Windows как правило, а DOS быстро ушёл, то такой DPMI, скорее всего, будет поддерживать бинарники для Windows. Например, я работал с WDOSX, а ещё есть HX DOS Extender и DosWin32.

Я бы попробовал скомбинировать Delphi или Ada с одним из них.


--------------------
If you want to get to the top, you have to start at the bottom
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #17


Знаток
****

Группа: Пользователи
Сообщений: 475
Пол: Мужской
Реальное имя: Федосеев Павел

Репутация: -  9  +


Возвращайтесь в Windows.

Другой вариант - 32-разрядный компилятор под DOS
- Free Pascal for DOS
- Watcom C for DOS
- DJ Delorie C for DOS (порт gcc)
Но не жалуйтесь на скорость работы - прерывания остаются в реальном режиме, а программа работает в защищённом. При возникновении аппаратного прерывания производится переключение в реальный режим, а потом - в защищённый.
В целом - программа будет шустро работать, но тогда и выгоды от миграции с Windows нет. Но тут я не на 100% уверен - посмотрю на ваши результаты.

Ещё есть смысл пересмотреть алгоритм и структуры данных.
-------------------
Пробовал HX DOS Extender в чистом FreeDOS. Запускал консольные программы с FreePascal, GUI - не получалось. А потом изменилась версия FPC и программы, скомпилированные в этой новой версии перестали запускаться под HX DOS Extender.

Сообщение отредактировано: Федосеев Павел -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #18


Новичок
*

Группа: Пользователи
Сообщений: 11
Пол: Мужской
Реальное имя: yurpos
Jabber: yurpos

Репутация: -  0  +


Цитата(Федосеев Павел @ 5.09.2017 23:01) *

Возвращайтесь в Windows.

В Windows программа работает, но работает некорректно
добавлю некоторые пояснения: программа постоянно опрашивает буфер клавиатуры (должна опрашивать через равные минимально возможные промежутки времени), так вот под DELPHI это происходит рывками. То что я могу оценить по выходным данным девиация составляет от 10 до 20 раз, а это для конечного результата вряд ли можно назвать реальным временем. Ну хотя бы 1-2%. Что на это влияет могу только догадываться, если посмотреть диспетчер там всегда какое ни будь движение, что нибудь отключается, что нибудь включается, что нибудь контролируется...Если бы все потоки можно было замкнуть на программе, и из прерываний исключить всё кроме клавиатуры... тогда возможно и в винде можно было бы запускать программу
Очень хорошее предложение с использование ПЛК... но не в моём случае. i7-4770, 3.40х3.4 0, 32ГБ в существующем железе раскачивают программу на 1-2% от необходимого, а дальше о реальном времени вообще говорить не приходится)
Мне бы ваши знания и опыт по программированию... тогда может я что нибудь и наваял)... а так я программист почти никакой (очень узкая область задач и изучение материала только в этой узкой части, на более глубокое изучение просто физически нет времени)
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #19


Большевик–концептуал
**

Группа: Пользователи
Сообщений: 141
Пол: Мужской
Реальное имя: Иван Левашев
Jabber: octagram@jabber.ru
Skype: i.levashew
QQ: 3152538431
WeChat
Ада: Сторонник
Embarcadero Delphi: Сторонник
Free Pascal: Разработчик
Turbo Pascal: Установлен

Репутация: -  1  +


Цитата(Федосеев Павел @ 5.09.2017 23:01) *
Пробовал HX DOS Extender в чистом FreeDOS. Запускал консольные программы с FreePascal, GUI - не получалось. А потом изменилась версия FPC и программы, скомпилированные в этой новой версии перестали запускаться под HX DOS Extender.


С DWPL было довольно интересно. Версию Delphi не помню, это, наверное 2005-2007 ещё была. Там прямо матёрая реализация VCL. Рисуешь формочки в Delphi, пишешь обработчики. В настройках проекта задаёшь такое соответствие модулей, чтоб вместо обычных графических компоновались текстовые для ДОС, и нарисованные формочки работают в текстовом (консольном) режиме. Позиции элементов в пикселах делятся на 8 и 16, и это становится координатами в текстовом режиме. Какой-то клон Turbo Vision с API, идентичному VCL.


Ещё могу предложить такой реалистичный вариант для Turbo Pascal. Берёте драйвер RAMDISK, размещаете там все ваши массивы в виде файлов и работаете через ввод/вывод произвольного доступа (file of). Есть шанс, что издержки на RAMDISK окажутся достаточно незаметными.


--------------------
If you want to get to the top, you have to start at the bottom
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #20


Знаток
****

Группа: Пользователи
Сообщений: 475
Пол: Мужской
Реальное имя: Федосеев Павел

Репутация: -  9  +


Какая-то странная тема.
С одной стороны непростые требования - реальное время и большие массивы (но при этом не решается задача управления внешним устройством), с другой - неготовность к реализации.

Поэтому, думаю, что решение в пересмотре алгоритмов и структур данных. Как вариант - распараллеливание вычислений. Работа в нескольких потоках. Но тут моего опыта очень мало.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

2 страниц V  1 2 >
 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 




- Текстовая версия 23.05.2018 2:18
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"