Различия между версиями 10 и 11
Версия 10 от 2017-01-26 18:53:45
Размер: 5953
Редактор: FrBrGeorge
Комментарий:
Версия 11 от 2017-02-20 21:27:34
Размер: 5951
Редактор: ArsenyMaslennikov
Комментарий: fix link to FreeDosInstall
Удаления помечены так. Добавления помечены так.
Строка 10: Строка 10:
  * [[../FreeDosInstall|Подробные инструкции]]   * [[/FreeDosInstall|Подробные инструкции]]

Настройка DosEmu

Установка нового FreeDOS

  • Скачиваем новенький FreeDOS 1.2 (ISO)

  • Устанавливаем его в qemu:
    $ qemu-img create disk.raw 1G
    Formatting 'disk.raw', fmt=raw size=1073741824
    $ qemu -m 48M -cdrom FD12CD.iso -hda disk.raw -boot d
  • Распаковываем образ в каталог:
    $ mkdir dosemu
    $ 7z x disk.raw -odosemu

Запускаем FreeDOS в DOSEmu

  • $ xdosemu -i`realpath dosemu`
    • Должно получиться примерно так:
      • snap-0126-09_41_28.png

  • Выход из xdosemuCtrl+Alt+PageDown

Настраиваем русский в FreeDOS

  • Редактируем AUTOEXEC.BAT и FDCONFIG.SYS по вкусу, должно остаться что-то вроде этого:

    • FDCONFIG.SYS:

      SWITCHES=/F
      
      SET DOSDIR=C:\FDOS
      
      !COUNTRY=007,866,C:\FDOS\BIN\COUNTRY.SYS
      !LASTDRIVE=Z
      !BUFFERS=20
      !FILES=40
      
      DOS=HIGH
      DOS=UMB
      DOSDATA=UMB
      DEVICE=C:\FDOS\BIN\HIMEMX.EXE
      SHELLHIGH=C:\FDOS\BIN\COMMAND.COM C:\FDOS\BIN /E:1024 /P=C:\AUTOEXEC.BAT
    • AUTOEXEC.BAT:

      @ECHO OFF
      SET DOSDIR=C:\FDOS
      SET LANG=RU
      SET TZ=UTC
      SET PATH=%dosdir%\BIN
      SET NLSPATH=%dosdir%\NLS
      SET HELPPATH=%dosdir%\HELP
      SET TEMP=%dosdir%\TEMP
      SET TMP=%TEMP%
      SET BLASTER=A220 I5 D1 H5 P330
      SET DIRCMD=/P /OGN /Y
      SET COPYCMD=/-Y
      
      IF EXIST %DOSDIR%\BIN\DOSLFN.COM LH DOSLFN
      NLSFUNC %dosdir%\BIN\COUNTRY.SYS
      DISPLAY CON=(EGA,866,2)
      MODE CON CP PREP=((866) %dosdir%\CPI\EGA3.CPX)
      MODE CON CP SELECT 866
      
      SET AUTOFILE=%0
      SET CFGFILE=C:\FDCONFIG.SYS
      alias reboot=fdapm warmboot
      alias reset=fdisk /reboot
      alias halt=fdapm poweroff
      alias shutdown=fdapm poweroff
      alias cfg=edit %cfgfile%
      alias auto=edit %0
      
      set OS_NAME=FreeDOS
      set OS_VERSION=1.2
      unix -e
  • Обратите внимание на то, что в dosemu для ALT приезжает «диск D:» с полезными утилитами
  • Русские буквы уже есть: snap-0126-10_10_09.png

Настраиваем русский в DosEmu

  • Настроим преобразование utf→cp866, а заодно и раскладку для консольной версии dosemu. Для этого в системный файл /etc/dosemu.conf или в пользовательский ~/.dosemurc впишем такое:

    $_layout = "ru"
    $_external_char_set = "utf8"
    $_internal_char_set = "cp866"
  • Проверяем:
    • snap-0126-10_15_55.png

      • и
    $ ls dosemu            
    AUTOEXEC.BAT  COMMAND.COM  FDCONFIG.SYS  FDOS  KERNEL.SYS  голоса.txt
    $ hexdump -C dosemu/голоса.txt 
    00000000  8a e3 aa a0 e0 a5 aa e3  21 20 0d 0a              |........! ..|
  • Что ещё смешнее, всё это работает и в консоли:
    $ dosemu
    . . .
    C:\>dir
     Volume in drive C is mu/drives/c
     Directory of C:\
    
    FDOS                 <DIR>  26.01.2017  6:23
    AUTOEXEC BAT           683  26.01.2017 10:02
    COMMAND  COM        66 945  28.08.2006 23:38
    FDCONFIG SYS           241  26.01.2017  9:45
    KERNEL   SYS        46 685  11.05.2016 21:42
    ГОЛОСА   TXT            12  26.01.2017 10:15
             5 file(s)        114 566 bytes
             1 dir(s)   2 147 450 880 bytes free

Обработка командной строки

Чтобы, например, скомпилировать файл с помощью BPC.EXE, надо:

  • Положить BP куда-нибудь (например, на C:)

  • Сделать так, чтобы компилируемый файл лежал в корне отдельного диска (чтобы не заморачваться с путями)
  • Перенаправить В/В

Итак:

  • Скопируем Паскаль на С:
    $ cp -a /var/home/george/.doses/BP/BP dosemu 
  • Добавим C:\BP в путь (в AUTOEXEC.BAT, его надо отредактировать; если бинарники BP лежат не там, на, например, в c:\BP\BIN, добавим этот путь):

    $ grep PATH dosemu/AUTOEXEC.BAT 
    SET PATH=%dosdir%\BIN;D:\DOSEMU;C:\BP
  • Положим туда вот такой сценарий BPCE.BAT:

    $ cat > dosemu/BP/BPCE.BAT <<EOF
    heredoc> @echo off
    e:
    if _%1==_ goto bp
    bpc /Uc:\bp %1 %2 %3 %4 %5 %6 %7 %8 %9
    goto end
    :bp
    bp /Uc:\bp
    :end
    EOF
  • Положим в linux-путь (например, в /usr/local/bin/ или в ~/bin/) пользователя вот такой скрипт bpc:

       1 #!/bin/sh
       2 
       3 ENC=cp866
       4 DEHOME="$HOME/.dosemu"
       5 
       6 case "$#" in
       7   0) rm -f "$DEHOME/drives/e" ; ln -s "$(pwd)" "$DEHOME/drives/e"
       8      xdosemu bpce ;;
       9  *)  FILE="$1"; shift
      10      DIR="$(dirname $(realpath $FILE))"
      11      rm -f "$DEHOME/drives/e" ; ln -s "$DIR" "$DEHOME/drives/e"
      12      dosemu -dumb "bpce $(iconv -t $ENC <<< "$(basename $FILE) $*")" | iconv -f $ENC | tr '[[:upper:]]' '[[:lower:]]'
      13         ;;
      14 esac
    
    • Не забудем сделать chmod +x этому bpc

Использование всей этой тряхобрахии

  • BP запускается с помощью bpc

  • Компиляция файла с выводом ошибок в stdoutbpc file.pas

  • Запуск файла — xdosemu файл.exe, можно с полным путём

TODO

  • /!\ TODO Настройка geany, чтобы он ошибки парсил

  • /!\ минимизация freedos в стиле dosemu-freedos (в перспектив — вместо)

Meetings/762/DosEmu (последним исправлял пользователь ArsenyMaslennikov 2017-02-20 21:27:34)