До понедельника подождёте? Я сечас подумаю маленько. В понедельник приеду, тогда Вам расскажу, хорошо?
программа для DOS
Модератор: Модераторы
Velial
До понедельника подождёте? Я сечас подумаю маленько. В понедельник приеду, тогда Вам расскажу, хорошо?
До понедельника подождёте? Я сечас подумаю маленько. В понедельник приеду, тогда Вам расскажу, хорошо?
Если программа не содержит ничего лазарусного, то не проще-ли писать её прямо из под доса в редакторе fp? Не потребуется никакой кросскомпиляции. Есть и 32 битные версии дос, например полученные при помощи загрузочной дискеты от Win95, FAT32 оттуда видно.
Сквозняк как связаны разрядность кода и файловая система?
Прямой связи нет, но кроме 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 Гб - испортится информация на разделах, да и сами разделы будут пропадать. У меня так было, думал на вирус, а оказалось хрюша адреса попутала.
Vadim
Подожду.
Можно конечно плюнуть и реализовать например на том же TP, но хотелось бы решить проблему, а не обходить ее.
Подожду.
Сквозняк писал(а):Если программа не содержит ничего лазарусного, то не проще-ли писать её прямо из под доса в редакторе fp?
Можно конечно плюнуть и реализовать например на том же TP, но хотелось бы решить проблему, а не обходить ее.
Итак, "бархатный путь" компиляции досовских (сиречь 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. Возможно и ещё какой-нибудь файл потребуется, мне просто не на чем проверить, но если ещё что-то нужно будет, то выскочит сообщение при запуске, посмотрите потом этот файл в досовском дистрибутиве.
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. Возможно и ещё какой-нибудь файл потребуется, мне просто не на чем проверить, но если ещё что-то нужно будет, то выскочит сообщение при запуске, посмотрите потом этот файл в досовском дистрибутиве.
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
Скачал 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
Velial
1. Вы скачали версию 2.4.2 или 2.4.4?
2. Перечислите первые пять названий каталогов в C:\lazarus\fpc\2.4.2\units\go32v2.
1. Вы скачали версию 2.4.2 или 2.4.4?
2. Перечислите первые пять названий каталогов в C:\lazarus\fpc\2.4.2\units\go32v2.
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
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
В каталоге C:\lazarus\fpc\2.4.2\bin\i386-win32\ найдите файл fpc.cfg и найдите в нём строки, которые начинаются с -Fu.
-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
-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
Velial
Поставьте вот эту строку:
-Fuc:\lazarus\fpc\2.4.2/units/$FPCTARGET/rtl
на первое место.
Поставьте вот эту строку:
-Fuc:\lazarus\fpc\2.4.2/units/$FPCTARGET/rtl
на первое место.
не помогло
Судя по ошибке, не находятся досовские модули, либо модули не той версии, что и компилятор. С путями вроде всё ок, модули Вы мне написали той же версии, что компилятор. Моя фантазия иссякла.
Если что-нибудь придумаю, напишу Вам.
Добавлено спустя 2 минуты 2 секунды:
Проверьте каталог C:\lazarus\fpc\2.4.2\units\go32v2\rtl\, не пустой ли он. system.ppu там есть?
Если что-нибудь придумаю, напишу Вам.
Добавлено спустя 2 минуты 2 секунды:
Проверьте каталог C:\lazarus\fpc\2.4.2\units\go32v2\rtl\, не пустой ли он. system.ppu там есть?
C:\lazarus\fpc\2.4.2\units\go32v2\rtl\ не пустой, system.ppu есть
