Посадка на Луну
Aug. 8th, 2020 12:58 pmНаконец-то, можно нормально играть в посадку на Луну: https://github.com/besm6/bega-re/blob/master/landing.pas
https://github.com/besm6/bega-re/blob/master/landing.sh
Дело было в том, что по умолчанию вывод на экран в Паскаль-автокоде делается через Пульт, который всё печатает в сокращенном наборе символов для телетайпа (например, ! превращается в .I), и принудительно делая перевод строки после 72 символов. "Посадка" пыталась это обойти с помощью выдачи экстракода вывода на экран, указывая предполагаемый адрес буфера файла output, но почему-то в нашем случае это не работало.
Я эти мелочи проигнорировал. Теперь с помощью этой программы можно давать задачки по физмату и программированию:
1) Покажите, что на уровне 0 (15000 фунтов топлива) сесть невозможно.
2а) Напишите программу, за короткое время находящую последовательность действий, приводящих к мягкой посадке на уровне 1 (15500 фунтов топлива).
2б) Максимизируйте количество оставшегося при посадке топлива.
https://github.com/besm6/bega-re/blob/master/landing.sh
Дело было в том, что по умолчанию вывод на экран в Паскаль-автокоде делается через Пульт, который всё печатает в сокращенном наборе символов для телетайпа (например, ! превращается в .I), и принудительно делая перевод строки после 72 символов. "Посадка" пыталась это обойти с помощью выдачи экстракода вывода на экран, указывая предполагаемый адрес буфера файла output, но почему-то в нашем случае это не работало.
Я эти мелочи проигнорировал. Теперь с помощью этой программы можно давать задачки по физмату и программированию:
1) Покажите, что на уровне 0 (15000 фунтов топлива) сесть невозможно.
2а) Напишите программу, за короткое время находящую последовательность действий, приводящих к мягкой посадке на уровне 1 (15500 фунтов топлива).
2б) Максимизируйте количество оставшегося при посадке топлива.
no subject
Date: 2020-08-09 07:44 am (UTC)no subject
Date: 2020-08-09 02:35 pm (UTC)no subject
Date: 2020-08-09 07:38 pm (UTC)no subject
Date: 2020-08-15 05:31 pm (UTC)no subject
Date: 2020-08-15 05:46 pm (UTC)https://gist.github.com/kristopherjohnson/83c6a6b8a1b7c6929ced83e922abccc1
no subject
Date: 2020-08-19 12:26 pm (UTC)no subject
Date: 2020-08-19 06:30 pm (UTC)2. В каталоге с образами дисков сделать ссылки 2248 -> svs2048.bin, 2053 -> svs2053.bin
3. Взять из https://github.com/besm6/bega-re/ файлы landing.sh (в нем поправить путь к выполняемому файлу dispak на необходимый), pult2.b6 и landing.pas и положить их в текущий каталог.
4. Запустить landing.sh
no subject
Date: 2020-08-19 08:50 pm (UTC)Бинарник dispak собирается так:
no subject
Date: 2020-08-19 08:58 pm (UTC)В файле langing.sh во второй строке убираем путь к dispak, пусть вызывается через PATH:
В файле pult2.b6 убираем строку 5: "лент 50(1234-ЗП)^". Эта лента не нужна.
Запускаем:
$ ./landing.sh spawn dispak -s pult2.b6 000 СИСТЕМА ПУЛЬТ 19.08.80 ... ПАСКАЛЬ-АВТОКОД 9.(17.05.88) ________________________________________________________________________________________________________________________________ АВТОКОД 00.00.70. БЛОК N 000001 ЛИСТ 000000 ЕNGLISН / РУССКИЙ ?р ЦЕНТР УПРАВЛЕНИЯ ВЫЗЫВАЕТ ЛУННЫЙ МОДУЛЬ: ДЛЯ ПОСАДКИ ПЕРЕЙДИТЕ НА РУЧНОЕ УПРАВЛЕНИЕ. КАКОВ ВАШ ОПЫТ: 0 1 2(НОРМА) 3 4 5 6 7 8 9(ОПЫТА НЕТ) ? ЧТО У ВАС ? 2 ВЫ ДОЛЖНЫ УКАЗЫВАТЬ СКОРОСТЬ РАСХОДА ТОПЛИВА ЧЕРЕЗ КАЖДЫЕ 10 СЕКУ НД. РАСХОД ДОЛЖЕН БЫТЬ ИЛИ 0 ИЛИ ОТ 8 ДО 200 ФУНТОВ В СЕКУНДУ. У ВАС 16000 ФУНТОВ ТОПЛИВА. ВЕС КАПСУЛЫ СЕЙЧАС 32500 ФУНТОВ, ВКЛЮЧАЯ ТОПЛИВО. НАЧИНАЙТЕ ПОСАДКУ. ПЕРВЫЙ РАДИОЛОКАЦИОННЫЙ ЗАМЕР ВЫСОТЫ: ВРЕМЯ(СЕК) ВЫС(МИЛИ + ФУТЫ) СКОРОСТЬ(Ф/С) ТОПЛ(ФУН) 0 120 0 5280 16000 РАСХОД=Ну и так далее.no subject
Date: 2020-08-19 09:06 pm (UTC)no subject
Date: 2020-08-19 11:31 pm (UTC)no subject
Date: 2020-08-19 11:33 pm (UTC)Oops, спасибо. Этот же скрипт у меня для декомпиляции используется.
no subject
Date: 2020-08-20 12:02 am (UTC)no subject
Date: 2020-08-20 05:11 pm (UTC)no subject
Date: 2020-08-20 06:48 pm (UTC)Сам по себе КРАБ через simh можно запускать так:
https://github.com/besm6/besm6.github.io/blob/master/wiki/examples/besm6-krab.expect
Или так:
https://github.com/besm6/besm6.github.io/blob/master/wiki/examples/besm6-run.expect
Подробности здесь: https://groups.google.com/d/msg/besm6/WnK7JIx-QoI/CSduoZABMxsJ
no subject
Date: 2020-08-20 08:06 pm (UTC)no subject
Date: 2020-08-20 08:29 pm (UTC)Поэтому для игр использовалась диалоговая система Пульт. В ней был компилятор Паскаля. Программу можно было скомпилировать и тут же запустить. Ничего подобного КРАБ не умел.
no subject
Date: 2020-08-20 09:46 pm (UTC)no subject
Date: 2020-08-20 11:11 pm (UTC)Впрочем, Бейсика на БЭСМ-6 тоже, скорее всего, не было. По крайней мере, я не слышал.
no subject
Date: 2020-08-21 04:00 am (UTC)Все же ,то мне нужно сделать, чтоьы запустить игру из симулятора, т.е. из Диспака, а не из под Линукса.?
no subject
Date: 2020-08-21 06:59 am (UTC)Но вызывать не КРАБ, а Пульт, как в landing.sh.
no subject
Date: 2020-08-21 08:45 pm (UTC)http://www.besm6.org/wiki/Pult-editor.html
Вызывается Пульт командой PULT. Ну и шифр пользователя надо добавить. Есть команда "дай" с кучей разнообразных параметров. Если параметры неверные, отвечает "не дам". Выход по команде "конец":
no subject
Date: 2020-08-23 05:00 am (UTC)Ещё нашёлся ляп: make пытается копировать некоторые диски в PREFIX/share/besm6, т.е. требует sudo, чего не должен. configure зачем-то хочет SDL, который в dispak не используется.
no subject
Date: 2020-08-23 06:11 am (UTC)Наверное, диски надо копировать в ~/.besm6, а дальше пусть сам юзер разбирается.
no subject
Date: 2020-10-07 02:14 pm (UTC)Вроде весь файл ввёлся.
Далее происходит следующее
ПАС ПОСАД
ПACKAЛЬ-ABTОKОД 9.(09.12.88)
ABОCT 000016
PASCALИHФ О CTEKE CBEPXУ
1. AДPEC CTEKA=26423БEЗ PMД
2. AДPEC CTEKA=26386БEЗ PMД
3. AДPEC CTEKA=26379БEЗ PMД
4. AДPEC CTEKA=26342БEЗ PMД
5. AДPEC CTEKA=12287БEЗ PMД
ЭTО БЫЛ PMD ПPОГPAMMЫ...
При попытке трансляции с записью в другой файл ЗОНГП, происходит АВОСТ 000016 при этом записи в конечный файл не происходит
ПАС ПОСАД-ЗОНГП ПОСАДТ
ПACKAЛЬ-ABTОKОД 9.(09.12.88)
ABОCT 000016
PASCALИHФ О CTEKE CBEPXУ
1. AДPEC CTEKA=26423БEЗ PMД
2. AДPEC CTEKA=26386БEЗ PMД
3. AДPEC CTEKA=26379БEЗ PMД
4. AДPEC CTEKA=26342БEЗ PMД
5. AДPEC CTEKA=12287БEЗ PMД
ЭTО БЫЛ PMD ПPОГPAMMЫ...
РЕД ПОСАДТ
ПPОЧTEHО (670121:20)
С
ФAЙЛ ПУCTОЙ
Однако если после ввода ПАС ПОСАД, ввести приказ С, то получаем
С
1. U07_31200_25209_354_3_206U_2007900_23200_Ю_200Ж_22000_Ю_200З_22001*_200
*_Ю_201Г_22002F_2005_220030_200._220040_2009_22005F_2004_22007F_2007*_200*_Ю1
ГF_200(-_Ю_XF_20050_2409-_220@F_2007U_2004003/_Ю)F_2007U_20050020000_200+F0(F
_200,0_2409-_220[F_2007F0,/_Ю*F_2007U_2006005000F_2007F06_354_214_156000_354_257_343000_Ю_200У0_240[- _367_Ю_200У0_240Й-_ЮA0_200/_354_217_342_372_20030_200-0P+U08_332002P,0P+_354_220_350_354_257_343000U_20080_2005F0.F_2004_Ю0^000F_200,0_2409-_ЮTF_2008U_200,006U_20030_2000U_200,008U_20030_2000FF.U_2003000U_200,0_2005F0,/_ЮИ000_Ю_200У0_240A- _357/_170+_Ю_200Ф0_240/-_220Ш_Ю_200Ж0_240?-_220Ш/_ЮЩ0000_200,_354_217_3420_200,_Ю0X_354_214_156000_354_257_343000_Ю_200Ф0_240@-_ЮD0_200._354_217_342000_Ю_200ЖF0@_Ю_200*F0 _Ю_200WF0/U07_31200_25209_354_3_206U_2007900_23200_Ю_200Ж_22000_Ю_200З_22001F_2005_220030_200 _220040_2009_22005F_2004_22007U_20030_2000_22008F_200(-_Ю%0_200+F0(F_20050_2409-_220_ГF_2007U_2004003/_Ю_==000F_2007U_2005002000/_Ю_VE000F_2007U_2007005000_354_214_156000_354_257_343000_Ю_200У0_240Й-_220_151F_200/0_2409-_Ю?0_200=_354_217_342U_200 _Ю_201ГU_2007002F_2007U_200 _Ю1Г_372_20030_200/0P+U08_332002P,0P+_354_220_350000_354_257_3430000_200-F0 /_Ю_205000U_200 _Ю_200_243F0/0_200+F0 000F_200/0_2409-_Ю_201U_200/0_2000F_240@-_Ю_162U_200/0_2002F0//_Ю_200000U_200/0_20040_240+-_Ю_1660_200;_354_217_342/_Ю
2. 000U_200/0_20060_240@-_220U_200/0_2003F0/000U_200/0_20060_240+-_Ю
Это оттранслированный текст в буфере?
Если далее ввести ПАС-ВЫП, то получим
ПАС-ВЫП
**ЛEKCEMA=04 ОШ=07
IDENT BЫП QU
Что я делаю неправильно?