программа для DOS

Вопросы программирования и использования среды Lazarus.

Модератор: Модераторы

Vadim
долгожитель
Сообщения: 4112
Зарегистрирован: 05.10.2006 08:52:59
Откуда: Красноярск

Сообщение Vadim »

Velial
До понедельника подождёте? Я сечас подумаю маленько. В понедельник приеду, тогда Вам расскажу, хорошо? ;)
Сквозняк
энтузиаст
Сообщения: 1159
Зарегистрирован: 29.06.2006 22:08:32

Сообщение Сквозняк »

Если программа не содержит ничего лазарусного, то не проще-ли писать её прямо из под доса в редакторе fp? Не потребуется никакой кросскомпиляции. Есть и 32 битные версии дос, например полученные при помощи загрузочной дискеты от Win95, FAT32 оттуда видно.
Mr.Smart
долгожитель
Сообщения: 1796
Зарегистрирован: 29.03.2008 00:01:11
Откуда: из леса!

Сообщение Mr.Smart »

Сквозняк как связаны разрядность кода и файловая система?
Сквозняк
энтузиаст
Сообщения: 1159
Зарегистрирован: 29.06.2006 22:08:32

Сообщение Сквозняк »

Прямой связи нет, но кроме MS DOS 7 и FreeDos были и другие версии. В PC DOS 7 даже начали пилить многозадачность. Виндовс 95 сколько битный? Вот тебе ссылка на краткую инфу по досам http://ru.wikipedia.org/wiki/DOS А конкретно про связь разрядности и фс, так в 32 разрядной системе, по сравнению с 16 разрядной, проще устроить быстрый доступ к большим адресам дискового пространства. У FAT 16 пространство не больше 2 ГБ, а у Fat 32 его уже так много, что пользователю даже не нужно знать максимальную величину. Но минздрав очень не рекомендует писать из под доса или WIN XP (без сервиспаков) на фатовские адреса свыше 100-120 Гб - испортится информация на разделах, да и сами разделы будут пропадать. У меня так было, думал на вирус, а оказалось хрюша адреса попутала.
Velial
новенький
Сообщения: 36
Зарегистрирован: 02.07.2010 21:23:11

Сообщение Velial »

Vadim
Подожду.

Сквозняк писал(а):Если программа не содержит ничего лазарусного, то не проще-ли писать её прямо из под доса в редакторе fp?

Можно конечно плюнуть и реализовать например на том же TP, но хотелось бы решить проблему, а не обходить ее.
Vadim
долгожитель
Сообщения: 4112
Зарегистрирован: 05.10.2006 08:52:59
Откуда: Красноярск

Сообщение Vadim »

Итак, "бархатный путь" компиляции досовских (сиречь go32v2-ских) программ в Lazarus'е. :)
1. Нужно скачать досовский дистрибутив, который на ftp-шке лежит в каталоге GO32V2. Дистрибутив должен быть той же версии, что и уже установленный виндовый компилятор. Это важно.
2. Просмотреть все zip'ы дистрибутива и там, где встретился каталог UNITS, распаковать его в то же место, где стоит виндовый компилятор. Теперь в каталоге UNITS должно лежать два подкаталога - I386-WIN32 и GO32V2.
3. Из бинарников нужен будет только досовский линковщик - ld.exe. Распаковать его в тот же каталог, где лежит компилятор (..\bin\i386-win32\) с одновременным переименованием его в I386-GO32V2-LD.exe. Это важно!!! Иначе затрёте виндовый линковщик, у которого то же название.

В принципе, это всё. Теперь нужно только в параметрах проекта выбрать ОС назначения - go32v2 и виндовый компилятор правильно всё откомпилирует, а вот окончательную сборку будет проводить новый линковщик - i386-go32v2-ld.exe.
Для того, чтобы программа работала в досе, нужен будет ещё дополнительный файл, драйвер DPMI - cwsdpmi.exe. Возможно и ещё какой-нибудь файл потребуется, мне просто не на чем проверить, но если ещё что-то нужно будет, то выскочит сообщение при запуске, посмотрите потом этот файл в досовском дистрибутиве.
Velial
новенький
Сообщения: 36
Зарегистрирован: 02.07.2010 21:23:11

Сообщение Velial »

Vadim
Скачал go32v2.
Распаковал units в C:\lazarus\fpc\2.4.2\units\go32v2 .
Скопировал ld.exe в C:\lazarus\fpc\2.4.2\bin\i386-win32\I386-GO32V2-LD.exe
в параметрах компилятор C:\lazarus\fpc\2.4.2\bin\i386-win32\fpc.exe
в свойствах проекта Операционная система - go32v2
нажимаю ОК и получаю
Изображение

После этого пытаюсь скомпилировать проект и получаю всё ту же ошибку "project1.lpr(1,1) Fatal: Can't find unit system used by project1"

Что я делаю не так?

P.S. lazarus 0.9.30 FPC 2.4.2 go32v2 2.4.2
Vadim
долгожитель
Сообщения: 4112
Зарегистрирован: 05.10.2006 08:52:59
Откуда: Красноярск

Сообщение Vadim »

Velial
1. Вы скачали версию 2.4.2 или 2.4.4?
2. Перечислите первые пять названий каталогов в C:\lazarus\fpc\2.4.2\units\go32v2.
Velial
новенький
Сообщения: 36
Зарегистрирован: 02.07.2010 21:23:11

Сообщение Velial »

1. 2.4.2
2. все
chm
fcl-base
fcl-db
fcl-fpcunit
fcl-image
fcl-json
fcl-net
fcl-passrc
fcl-process
fcl-registry
fcl-res
fcl-xml
fpmkunit
fppkg
fv
gdbint
graph
hash
lexyacc
libgd
pasjpeg
paszlib
regexpr
rtl
symbolic
unzip
Vadim
долгожитель
Сообщения: 4112
Зарегистрирован: 05.10.2006 08:52:59
Откуда: Красноярск

Сообщение Vadim »

В каталоге C:\lazarus\fpc\2.4.2\bin\i386-win32\ найдите файл fpc.cfg и найдите в нём строки, которые начинаются с -Fu.
Velial
новенький
Сообщения: 36
Зарегистрирован: 02.07.2010 21:23:11

Сообщение Velial »

-Fuc:\lazarus\fpc\2.4.2/units/$FPCTARGET/httpd13/
-Fuc:\lazarus\fpc\2.4.2/units/$FPCTARGET/httpd20
-Fuc:\lazarus\fpc\2.4.2/units/$FPCTARGET/httpd22
-Fuc:\lazarus\fpc\2.4.2/units/$FPCTARGET/
-Fuc:\lazarus\fpc\2.4.2/units/$FPCTARGET/*
-Fuc:\lazarus\fpc\2.4.2/units/$FPCTARGET/rtl
Vadim
долгожитель
Сообщения: 4112
Зарегистрирован: 05.10.2006 08:52:59
Откуда: Красноярск

Сообщение Vadim »

Velial
Поставьте вот эту строку:
-Fuc:\lazarus\fpc\2.4.2/units/$FPCTARGET/rtl
на первое место.
Velial
новенький
Сообщения: 36
Зарегистрирован: 02.07.2010 21:23:11

Сообщение Velial »

не помогло
Vadim
долгожитель
Сообщения: 4112
Зарегистрирован: 05.10.2006 08:52:59
Откуда: Красноярск

Сообщение Vadim »

Судя по ошибке, не находятся досовские модули, либо модули не той версии, что и компилятор. С путями вроде всё ок, модули Вы мне написали той же версии, что компилятор. Моя фантазия иссякла. :(
Если что-нибудь придумаю, напишу Вам.

Добавлено спустя 2 минуты 2 секунды:
Проверьте каталог C:\lazarus\fpc\2.4.2\units\go32v2\rtl\, не пустой ли он. system.ppu там есть?
Velial
новенький
Сообщения: 36
Зарегистрирован: 02.07.2010 21:23:11

Сообщение Velial »

C:\lazarus\fpc\2.4.2\units\go32v2\rtl\ не пустой, system.ppu есть
Ответить