суббота, 15 декабря 2012 г.

Turbo Pascal на ALT Linux школьный 5 ( ALT Linux 6)

Задача: установить на Altlinux школьный Turbo Pascal 7.1

Использованные источники:
1. http://www.cyberforum.ru/pascal/thread89342.html
2. http://www.old-games.ru/forum/showthread.php?t=20813&page=71

Выполнение:
1. Скачиваем Turbo Pascal 7.1 здесь
2. Распаковываем скачанный архив.
3. Нам понадобится DosBox. В  ALT Linux школьный 5 DosBox уже установлен. Если не установлен, то через Synaptic ставим его. На день написания настоящей инструкции в репозитории была доступна версия 0.72
4. Предположим, школьники входят в  ALT Linux под логином user. Входим под ним и создаем каталоги для dosbox:
mkdir /home/user/dosbox
mkdir /home/user/dosbox/drive_c

каталог drive_c будет для turbo pascal диском C:\

Далее нужно переместить каталог tp7_1 из распакованного ранее архива в каталог
/home/user/dosbox/drive_c так, чтобы путь до turbo.exe был:
/home/user/dosbox/drive_c/tp7_1/BIN/turbo.exe

5. Теперь сделаем файл конфигурации для DosBox. Он будет стандартный, но с небольшими изменениями. Во-первых, в нем параметру autolock будет присвоено значение false, чтобы курсор автоматически освобождался, когда он выходит за границы окна DosBox. В противном случае придется нажимать CTRL+F10, что, конечно, неудобно. Во-вторых, в конец файла добавим несколько строк для того, чтобы при запуске DosBox автоматически запускался Turbo Pascal.
Итак:
mkdir /home/user/.dosbox
gedit /home/user/.dosbox/dosbox-0.74.conf

Содержимое dosbox-0.74.conf:

# Это конфигурационный файл DOSBox 0.74. (Пожалуйста, используйте самую свежую версию DOSBox.)
# Строки, начинающиеся с # являются комментариями и игнорируются DOSBox.
# Они используются, чтобы кратко описать каждую опцию.
#
# #24306 - Включена поддержка русского языка. Для ее работы нужно скопировать данный файл в
# домашнюю директорию: ~/.dosbox/dosbox-0.74.conf или ~/.dosbox/dosbox.conf
#

[sdl]
#       fullscreen: Запускает DOSBox сразу в полноэкранном режиме. (Для отключения нажмите ALT_ENTER)
#       fulldouble: Использовать двойную буферизацию при полноэкранном режиме. Может уменьшить мерцание экрана, но возможно приведёт к замедлению DOSBox.
#   fullresolution: Какое разрешение использовать для полного экрана: оригинальное или фиксированное значение (например, 1024x768).
#                   Использование "родного" разрешения монитора с параметром aspect=true может дать наилучшие результаты.
#                   Если вы получаете маленькое окошко на большом экране, попробуйте метод вывода отличный от surface.
# windowresolution: Масштабировать окно к этому размеру, ECЛИ устройство
#                   вывода поддерживает аппаратное масштабирование.
#                   (Режим вывода output=surface не поддерживает!)
#           output: Какую видеосистему использовать для вывода.
#                   Возможные значения: surface, overlay, opengl, openglnb, ddraw.
#         autolock: Мышь будет автоматически закреплена при щелчке по экрану. (Чтобы освободиь мышь нажмитеCTRL-F10.)
#      sensitivity: Чувствительность мыши.
#      waitonerror: Ждать перед закрытием консоли, если в DOSBox происходит ошибка.
#         priority: Уровни приоритета процесса DOSBox. Второй параметр (после запятой) используется,
#                   когда DOSBox не активен или свернут.
#                   Значение 'pause' поддерживается только для второго параметра.
#                   Возможные значения: lowest, lower, normal, higher, highest, pause.
#       mapperfile: Файл, используемый для загрузки/сохранения раскладки клавиш. Параметр resetmapper работает только со значением по умолчанию.
#     usescancodes: Обойти использование symkeys, может не работать на всех ОС.

fullscreen=false
fulldouble=false
fullresolution=original
windowresolution=original
output=surface
autolock=false
sensitivity=100
waitonerror=true
priority=higher,normal
mapperfile=mapper-0.74.map
usescancodes=true

[dosbox]
# language: Выбирает другой языковой файл.
#  machine: Тип машины, который будет эмулироваться.
#           Возможные значения: hercules, cga, tandy, pcjr, ega, vgaonly, svga_s3, svga_et3000, svga_et4000, svga_paradise, vesa_nolfb, vesa_oldvbe.
# captures: Директория, куда будут сохраняться такие вещи, как wave, midi, скриншоты.
#  memsize: Величина памяти для DOSBox в мегабайтах.
#             Это значение лучше оставить по умолчанию, чтобы избежать проблем с некоторыми играми,
#             хотя некоторые другие могут потребовать больших значений.
#             Увеличение этого значения в общем случае не повышает быстродействие.

language=/usr/share/doc/dosbox-0.74/DOSBox-russian-lang/russian.txt
machine=svga_s3
captures=capture
memsize=16

[render]
# frameskip: Сколько кадров DOSBox пропускает перед тем, как отрисовать один.
#    aspect: Выполнять коррекцию соотношения сторон. Если ваш метод вывода не поддерживает
#            масштабирование, это может замедлить работу!
#    scaler: Используется для увеличения/улучшения режимов с низким разрешением.
#            Если после основного значения указано включено 'forced', масштабирование
#            будет использовано, даже если результат может быть нежелательным.
#            Возможные значения: none, normal2x, normal3x, advmame2x, advmame3x, advinterp2x, advinterp3x, hq2x, hq3x, 2xsai, super2xsai, supereagle, tv2x, tv3x, rgb2x, rgb3x, scan2x, scan3x.

frameskip=0
aspect=false
scaler=normal2x

[cpu]
#      core: Ядро ЦПУ используемое в эмуляции. 'auto' переключает 'normal' на 'dynamic', если возможно.
#            Возможные значения: auto, dynamic, normal, simple.
#   cputype: Тип ЦПУ используемый в эмуляции. 'auto' выбирает самый быстрый вариант.
#            Возможные значения: auto, 386, 386_slow, 486_slow, pentium_slow, 386_prefetch.
#    cycles: Число инструкций, которое DOSBox пытается эмулировать каждую  миллисекунду.
#            Установка выше возможностей вашей машины может привести к прерываниям звука и лагам.
#            Может быть установлено тремя способами:
#              'auto'          пытается подобрать нужное игре значение.
#                              Это обычно работает, но для некоторых игр создает проблемы.
#              'fixed #число'  устанавливает фиксированное число циклов. Это то, что обычно нужно, если не сработало 'auto'.
#                              (Например: fixed 4000)
#              'max'           выставит максимальное число циклов, на которое способен ваш компьютер
#          
#            Возможные значения: auto, fixed, max.
#   cycleup: Число циклов для увеличения/уменьшения основного значения по нажатии комбинации клавиш (CTRL-F11/CTRL-F12).
# cycledown: Установка значения менее 100 задаёт изменение основного значения в процентах.

core=auto
cputype=auto
cycles=auto
cycleup=10
cycledown=20

[mixer]
#   nosound: Включает тихий режим, хотя звук все равно эмулируется.
#      rate: Темп микшера. Настройка значения темпа любого другого устройства выше,
#            чем этот возможно ухудшит их качество звука.
#            Возможные значения: 44100, 48000, 32000, 22050, 16000, 11025, 8000, 49716.
# blocksize: Размер блоков микшера, увеличение блоков может помочь с заиканием
#            звука, но звук будет больше отставать.
#            Возможные значения: 1024, 2048, 4096, 8192, 512, 256.
# prebuffer: Сколько миллисекунд данных держать перед размером блока микшера.

nosound=false
rate=44100
blocksize=1024
prebuffer=20

[midi]
#     mpu401: Тип MPU-401 для эмуляции.
#             Возможные значения: intelligent, uart, none.
# mididevice: Устройство, которое будет получать данные MIDI от MPU-401.
#             Возможные значения: default, win32, alsa, oss, coreaudio, coremidi, none.
# midiconfig: Специальные конфигурационные опции для устройства. Обычно это id
#             устройства, которое хотите использовать. Обратитесь к README/Руководству за подробностями.

mpu401=intelligent
mididevice=default
midiconfig=

[sblaster]
#  sbtype: Тип эмулируемого SoundBlaster. Значение gb означает Gameblaster.
#          Возможные значения: sb1, sb2, sbpro1, sbpro2, sb16, gb, none.
#  sbbase: Адрес порта ввода/вывода (IO) SoundBlaster.
#          Возможные значения: 220, 240, 260, 280, 2a0, 2c0, 2e0, 300.
#     irq: Номер прерывания (IRQ) SoundBlaster.
#          Возможные значения: 7, 5, 3, 9, 10, 11, 12.
#     dma: Номер ПДП (DMA) SoundBlaster.
#          Возможные значения: 1, 5, 0, 3, 6, 7.
#    hdma: Номер верхнего ПДП (High DMA) SoundBlaster.
#          Возможные значения: 1, 5, 0, 3, 6, 7.
# sbmixer: Позволить микшеру SoundBlaster модифицировать микшер DOSBox.
# oplmode: Тип эмуляции OPL. При 'auto' режим определяется типом SoundBlaster.
#          Все режимы OPL совместимы с Adlib, кроме 'cms'.
#          Возможные значения: auto, cms, opl2, dualopl2, opl3, none.
#  oplemu: Реализация эмуляции OPL. Возможно 'compat' сможет обеспечить лучшее качество (см. также 'oplrate').
#          Возможные значения: default, compat, fast.
# oplrate: Темп эмуляции OPL музыки. Укажите 49716 для наилучшего качества (установите соответствующий темп микшера).
#          Возможные значения: 44100, 49716, 48000, 32000, 22050, 16000, 11025, 8000.

sbtype=sb16
sbbase=220
irq=7
dma=1
hdma=5
sbmixer=true
oplmode=auto
oplemu=default
oplrate=44100

[gus]
#      gus: Включить эмуляцию Gravis Ultrasound.
#  gusrate: Темп эмуляции Gravis Ultrasound.
#           Возможные значения: 44100, 48000, 32000, 22050, 16000, 11025, 8000, 49716.
#  gusbase: Адрес порта ввода/вывода (IO) Gravis Ultrasound.
#           Возможные значения: 240, 220, 260, 280, 2a0, 2c0, 2e0, 300.
#   gusirq: Номер прерывания (IRQ) Gravis Ultrasound.
#           Возможные значения: 5, 3, 7, 9, 10, 11, 12.
#   gusdma: Номер ПДП (DMA) Gravis Ultrasound.
#           Возможные значения: 3, 0, 1, 5, 6, 7.
# ultradir: Путь к директории Gravis Ultrasound. В этой директории должна быть директория
#           MIDI, которая содержит файлы патчей для воспроизведения GUS. Файлы патчей,
#           используемые с Timidity должны работать нормально.

gus=false
gusrate=44100
gusbase=240
gusirq=5
gusdma=3
ultradir=C:\ULTRASND

[speaker]
# pcspeaker: Включить эмуляцию динамика ПК.
#    pcrate: Темп генерации звука динамика ПК.
#            Возможные значения: 44100, 48000, 32000, 22050, 16000, 11025, 8000, 49716.
#     tandy: Включить эмуляцию звуковой системы Tandy. Для режима 'auto' эмуляция включается,
#            только если тип машины установлен как 'tandy'.
#            Возможные значения: auto, on, off.
# tandyrate: Темп генерации трёхголосого Tandy.
#            Возможные значения: 44100, 48000, 32000, 22050, 16000, 11025, 8000, 49716.
#    disney: Включить эмуляцию Disney Sound Source. Совместимо с Covox Voice Master and
#            Speech Thing.

pcspeaker=true
pcrate=44100
tandy=auto
tandyrate=44100
disney=true

[joystick]
# joysticktype: Типы джойстиков для эмуляции: auto (установлено по умолчанию), none,
#               2axis (поддерживается два джойстика),
#               4axis (поддерживается один джойстик, используется первый),
#               4axis_2 (поддерживается один джойстик, используется второй),
#               fcs (Thrustmaster), ch (CH Flightstick).
#               none отключает эмуляцию джойстика.
#               auto выбирает значение в зависимости от реально подключенного джойстика(ов).
#               (Не забудьте сбросить настройку раскладки клавиш DOSBox, если вы её сохраняли.)
#               Возможные значения: auto, 2axis, 4axis, 4axis_2, fcs, ch, none.
#        timed: Включить временные интервалы для осей. Поэкспериментируйте с этим параметром, если джойстик "уплывает".
#     autofire: Кнопки продолжают нажиматься постоянно, пока вы их держите нажатыми.
#       swap34: Меняет местами 3ю и 4ю оси джойстика (может быть полезно для некоторых
#               моделей джойстиков).
#   buttonwrap: Осуществляет подмену количества реальных кнопок на количество эмулируемых.

joysticktype=auto
timed=true
autofire=false
swap34=false
buttonwrap=false

[serial]
# serial1: Устанавливает тип устройства, соединенного с COM портом.
#          Может быть: disabled, dummy, modem, nullmodem, directserial.
#          Дополнительные параметры должны быть заданы на той же строке, в виде
#          параметр:значение. Параметры для всех типов: irq  (необязательно).
#          для directserial: realport (необходимо), rxdelay (необязательно).
#                           (realport:COM1 realport:ttyS0).
#          для modem: listenport (необязательно).
#          для nullmodem: server, rxdelay, txdelay, telnet, usedtr,
#                         transparent, port, inhsocket (все - необязательно).
#          Пример: serial1=modem listenport:5000
#          Возможные значения: dummy, disabled, modem, nullmodem, directserial.
# serial2: См. serial1
#          Возможные значения: dummy, disabled, modem, nullmodem, directserial.
# serial3: См. serial1
#          Возможные значения: dummy, disabled, modem, nullmodem, directserial.
# serial4: См. serial1
#          Возможные значения: dummy, disabled, modem, nullmodem, directserial.

serial1=dummy
serial2=dummy
serial3=disabled
serial4=disabled

[dos]
#            xms: Включить поддержку XMS.
#            ems: Включить поддержку EMS.
#            umb: Включает поддержку UMB.
# keyboardlayout: Код языка для клавиатурной раскладки (или 'none').

xms=true
ems=true
umb=true
keyboardlayout=RU

[ipx]
# ipx: Включает эмуляцию ipx над UDP/IP.

ipx=false

[autoexec]
# Команды в этой секции будут выполнены при запуске.
# Вы можете указать здесь ваши команды монтирования устройств (MOUNT).
# Каталог /home/user/dosbox/drive_c будет диском C:\
mount c: /home/user/dosbox/drive_c
# Каталог /home/user/Desktop, т.е. рабочий стол будет диском D:\
mount d: /home/user/Desktop
# Переход на диск D:\, чтобы задать его текущим каталогом для Turbo Pascal
d:
# Запуск Turbo Pascal с автоматическим созданием файла unnamed.pas
c:\tp7_1\BIN\turbo.exe d:\unnamed.pas

6. Далее нужно сказать DosBox, что комбинация клавиш CTRL+F9 не должна закрывать его. Вообще можно запустить DosBox и нажать CTRL+F1 для переназначения клавиш, и там щелкнуть по Shutdown, затем слева щелкнуть по mod1 и mod2. mod1 - это CTRL, mod2 - ALT. Таким образом, DosBox будет закрываться нажатием CTRL+ALT+F9.
Это было отступление. Так как далее будем писать скрипт для автоматизации всего этого дела, то я предлагаю создать файл назначения клавиш для DosBox.
gedit /home/user/.dosbox/mapper-0.74.map

Содержимое mapper-0.74.map:

hand_shutdown "key 290 mod1 mod2"
hand_capmouse "key 291 mod1"
hand_fullscr "key 13 mod2"
hand_pause "key 19 mod2"
hand_mapper "key 282 mod1"
hand_speedlock "key 293 mod2"
hand_recwave "key 287 mod1"
hand_caprawmidi "key 289 mod1 mod2"
hand_scrshot "key 286 mod1"
hand_video "key 286 mod1 mod2"
hand_decfskip "key 288 mod1"
hand_incfskip "key 289 mod1"
hand_cycledown "key 292 mod1"
hand_cycleup "key 293 mod1"
hand_caprawopl "key 288 mod1 mod2"
hand_swapimg "key 285 mod1"
key_esc "key 27"
key_f1 "key 282"
key_f2 "key 283"
key_f3 "key 284"
key_f4 "key 285"
key_f5 "key 286"
key_f6 "key 287"
key_f7 "key 288"
key_f8 "key 289"
key_f9 "key 290"
key_f10 "key 291"
key_f11 "key 292"
key_f12 "key 293"
key_grave "key 96"
key_1 "key 49"
key_2 "key 50"
key_3 "key 51"
key_4 "key 52"
key_5 "key 53"
key_6 "key 54"
key_7 "key 55"
key_8 "key 56"
key_9 "key 57"
key_0 "key 48"
key_minus "key 45"
key_equals "key 61"
key_bspace "key 8"
key_tab "key 9"
key_q "key 113"
key_w "key 119"
key_e "key 101"
key_r "key 114"
key_t "key 116"
key_y "key 121"
key_u "key 117"
key_i "key 105"
key_o "key 111"
key_p "key 112"
key_lbracket "key 91"
key_rbracket "key 93"
key_enter "key 13"
key_capslock "key 301"
key_a "key 97"
key_s "key 115"
key_d "key 100"
key_f "key 102"
key_g "key 103"
key_h "key 104"
key_j "key 106"
key_k "key 107"
key_l "key 108"
key_semicolon "key 59"
key_quote "key 39"
key_backslash "key 92"
key_lshift "key 304"
key_lessthan "key 60"
key_z "key 122"
key_x "key 120"
key_c "key 99"
key_v "key 118"
key_b "key 98"
key_n "key 110"
key_m "key 109"
key_comma "key 44"
key_period "key 46"
key_slash "key 47"
key_rshift "key 303"
key_lctrl "key 306"
key_lalt "key 308"
key_space "key 32"
key_ralt "key 307"
key_rctrl "key 305"
key_printscreen "key 316"
key_scrolllock "key 302"
key_pause "key 19"
key_insert "key 277"
key_home "key 278"
key_pageup "key 280"
key_delete "key 127"
key_end "key 279"
key_pagedown "key 281"
key_up "key 273"
key_left "key 276"
key_down "key 274"
key_right "key 275"
key_numlock "key 300"
key_kp_divide "key 267"
key_kp_multiply "key 268"
key_kp_minus "key 269"
key_kp_7 "key 263"
key_kp_8 "key 264"
key_kp_9 "key 265"
key_kp_plus "key 270"
key_kp_4 "key 260"
key_kp_5 "key 261"
key_kp_6 "key 262"
key_kp_1 "key 257"
key_kp_2 "key 258"
key_kp_3 "key 259"
key_kp_enter "key 271"
key_kp_0 "key 256"
key_kp_period "key 266"
jbutton_0_0
jbutton_0_1
jaxis_0_1-
jaxis_0_1+
jaxis_0_0-
jaxis_0_0+
jbutton_0_2
jbutton_0_3
jbutton_1_0
jbutton_1_1
jaxis_0_2-
jaxis_0_2+
jaxis_0_3-
jaxis_0_3+
jaxis_1_0-
jaxis_1_0+
jaxis_1_1-
jaxis_1_1+
jbutton_0_4
jbutton_0_5
jhat_0_0_0
jhat_0_0_3
jhat_0_0_2
jhat_0_0_1
mod_1 "key 306" "key 305"
mod_2 "key 308" "key 307"
mod_3

7. Готово. Можно запустить DosBox и проверить, что Turbo Pascal запускается.
8. Сейчас напишем скрипт, чтобы автоматизировать процесс. Создадим отдельную папку:
mkdir /home/user/turbo
mkdir /home/user/turbo/dosbox

в каталог dosbox скопируем файлы настроек DosBox:
cp /home/user/.dosbox/* /home/user/turbo/dosbox/

в каталог сам Turbo Pascal:
cp /home/user/dosbox/drive_c/tp7_1 /home/user/turbo/

и, собственно, скрипт:
gedit /home/user/turbo/instp

Пишем ($PWD - текущая директория):

#!/bin/sh
mkdir /home/user/dosbox
mkdir /home/user/dosbox/drive_c
cp -r $PWD/tp7_1 /home/user/dosbox/drive_c/
mkdir /home/user/.dosbox
cp $PWD/dosbox/* /home/user/.dosbox/
# Если скрипт будете выполнять из под root, то нужны еще два строки
chown -R user:user /home/user/dosbox
chown -R user:user /home/user/.dosbox

9. Еще можно было бы ярлык на рабочий стол поставить, но это сами распишите в скрипте.
Вот и все. Папку turbo можно закинуть на флешку или в сетевую папку, а потом с каждого компа заходить в нее и выполнять команду
sh instp

На  ALT Linux 6 Centaurus все это дело ставиться также, как на  ALT Linux школьный 5.

Если данная инструкция оказалась полезной для вас, напишите, пожалуйста, об этом в комментарии.

2 комментария:

  1. приветствую...
    а как с Вами связаться можно? спасибо

    ОтветитьУдалить
  2. Завели Free Pascal IDE: http://forum.altlinux.org/index.php/topic,1692.msg216634.html#msg216634

    ОтветитьУдалить