Leo
Но... Нужно обеспечить наличие в 37-м листе кода административной
системы Паскаль-Автокода (см. стандартный паспорт ДЖИНа).
Все модули ДЖИНа были написаны на Паскаль-Автокоде и для своей работы
требовали эту административку...
> Загрузить его с нулевого листа, передать управление на ячейку 00007
> (AFAIR)...
>
> Но... Нужно обеспечить наличие в 37-м листе кода административной
> системы Паскаль-Автокода (см. стандартный паспорт ДЖИНа).
Стандартный паспорт ссылается на область.
Какие были у этого кода отличительные признаки, чтобы найти его на сыром диске?
> Все модули ДЖИНа были написаны на Паскаль-Автокоде и для своей работы
> требовали эту административку...
Не требовали ли они чего-нибудь еще? Листа связи с другими блоками
ДЖИНа, например?
Leo
Аналогично в зонах 1230--1235 старого ИТМовского диска 2048 находится
модуль КАЛАХ.
> Загрузить его с нулевого листа, передать управление на ячейку 00007
> (AFAIR)...
Похоже на то.
> Но... Нужно обеспечить наличие в 37-м листе кода административной
> системы Паскаль-Автокода (см. стандартный паспорт ДЖИНа).
Судя по коду, в 36-м листе:
1230.0007: пв 74003(10) мода
1230.0010: слиа -10(10) пб 12533(10)
И берётся 36-й лист из зоны 1006. Но у меня пока вылетает по делению
на нуль.
___
Сергей
1007 зону в 37-й лист стоит прочитать, наверное.
Leo
Нет, туда идёт 1035-я зона.
Оказывается, готовые программы Паскаль-автокода можно выполнять из
Пульта директивой ПАСКАЛ-ВЫП. Например:
паскал-вып 400125 5
Первый параметр - начало, второй - длина. Но бега и калах выходят на
конец задачи: хотят "ТАМБОВ" в ячейке 76233.
___
Сергей
1 ноября 2009 г. 20:46 пользователь Сергей В.
<serge.v...@gmail.com> написал:
1 ноября 2009 г. 21:11 пользователь Sergey Ryzhkov <s...@rinet.ru> написал:
Да, работает. examples/pult.b6, вызывается в эмуляторе Диспака.
И тираж работает, я даже нашел один файл, который им можно напечатать:
dispak/dispak -p examples/tirazh.b6
боб 2048
печ 654 2
Leo
Поставил тамбов через отладчик. Теперь выходит на контроль команды по
адресу 77410.
СИСТЕМА ПУЛЬТ 01.11.89
^C
Interrupt
56551: 10 30 00053 uj
- 76233=1442005410227042
- g
паскал-вып 400125 5
77410: 00 000 0000 atx
acc = 0000000000012525 Y = 0000000000000000 R = 000111
11346 12525 12530 01020 66131 66000 67015 00000
12126 00070 12530 10673 11374 10700 12536
АВОСТ 000024
РАSСАLИНФ О СТЕКЕ СВЕРХУ
1. АДРЕС СТЕКА=5464БЕЗ РМД
2. АДРЕС СТЕКА=5461БЕЗ РМД
3. АДРЕС СТЕКА=4838БЕЗ РМД
ЭТО БЫЛ РМD ПРОГРАММЫ...
паскал-вып 410230 6
КОНТРОЛЬ КОМАНДЫ
77410: 00 000 0000 atx
acc = 0000000000013754 Y = 0000000000000000 R = 000111
12704 13754 13761 01020 66131 66000 67015 00000
13546 00070 13761 12502 13014 12507 13767
___
Сергей
ШИФР 419900^
ВРЕМ 110^
АЦПУ 15^
ЛИСТ 0-14,32,34-37^
ЛЕНТ 50(2048)^
ТРАК 20^
РОСП 0^
ТЕЛЕ^
СПЕЦ^
ВХОД 70000^
Е
В 70000
К 00 110 0007 00 040 0006
К 07 24 00064 15 24 77773
К 00 170 0007
К 00 110 0007 00 113 0010
К 00 100 0007 15 37 70002
К 00 170 0011
К 00 30 70012
С 0010 0000 0050 1125
С 0000 0100 0000 0001
С 0010 3600 0050 1006
К 00 170 0101
К 00 110 0100 00 100 6233
К 00 30 00007
В 70100
С 14420054 10227042
С 0010 3700 0050 1035
ЕКОНЕЦ
Получаю некорректный Э70 по адресу 77412: пытается прочесть
в 0-й (!) лист 140-ю зону с виртуального номера 40:
0010000000400140
Leo
On 1 ноя, 21:33, Basil Dolmatov <vdolma...@gmail.com> wrote:Так и должно быть... :) Это В.В. такое средство от запуска через Пульт сделал. Совершенно отдельная история. :) P.S. Если убить эту проверку, то все будет работать. :)Поставил тамбов через отладчик. Теперь выходит на контроль команды по адресу 77410.
1. ДЖИН не индифферентен к номеру устройства и зоне...
Он живет на 40... :)
2. И сдвиг можно теперь подвычислить... Если в 1000-й зоне в 7-й ячейке
есть осмысленные команды, то я бы заказал 2048 на 40, в стандартном
паспорте поставил бы туда сдвиг на 640(8) зон и попробовал бы еще разок
> 0010000000400140
>
> Leo
>
> >
>
Адреса входов, надеюсь, были те же, что и в стандартной? Иначе как
компилятор знал, для какой версии административки компилировать?
> а "ТАМБОВ" - это еще и опознаватель элементов ДЖИНа, это слово должно быть в
> каждом блоке, на него проверялось при перегрузке блоков, чтобы не передавать
> управление куда попало, если блок будет затерт.
Еще вот в чем дело. Вот трасса экстракодов прямого запуска:
70002:070.70007(0010000000501125) 0010000000501125
70002:070.70007(0010010000501126) 0010010000501126
70002:070.70007(0010020000501127) 0010020000501127
70002:070.70007(0010030000501130) 0010030000501130
70002:070.70007(0010040000501131) 0010040000501131
70005:070.70011(0010360000501006) 0010050000501132
70012:070.70101(0010370000501035) 0010360000501006
74243:070.74357(0010340000270000) 0000000000074252
11110:063.00004(1402011014220104) 0000000000000001
11112:053.00010(4257777043011100) 0000000000000062
11117:071.12526(7777777777777777) 7777777777777777
77412:070.77547(0010000000400140) 0010000000400140
Что он хочет в 34-й лист с 0-го тракта барабана 27?
1. ДЖИН не индифферентен к номеру устройства и зоне...
Он живет на 40... :)
ОК.
2. И сдвиг можно теперь подвычислить... Если в 1000-й зоне в 7-й ячейке
есть осмысленные команды, то я бы заказал 2048 на 40, в стандартном
паспорте поставил бы туда сдвиг на 640(8) зон и попробовал бы еще разок
В 1000-й зоне дешифратор пульта. Осмысленные команды, среди которых
встречается текстовая константа "ИГР" - в 1140 зоне.
Но какой сдвиг ни ставь, он все 32 листа в цикле читает и теряет управление.
Leo
То есть 37-я страница от пульта не подойдет? :(
> Кстати, если проискать диски, то все элементы ДЖИНа можно будет выловить...
Поиск на диске 2049:
Searching for 'тамбов' on disk 2049/0000, 10000 zones
1126.0630: В 0000 НЕТ00ТАМБОВИГР КОН СОN В БЛОКЕ НЕТ ПРИКАЗА
0000НЕ П
1225.0277: БЛОКА А00000ТАМБОВ -= ОТЛАДКА =-000ДАЙ РАБОТУ
<ТАБ,АНК,КОН,ВЫХ>
Поиск на ИТМовском диске 2048:
Searching for 'тамбов' on disk 2148/0000, 10000 zones
0540.0601: АDМIN+00000ТАМБОВОТЛКАД501300<*> ОТЛАДКА
<*>0000КАД000СПРЗАФИ
0545.0561: 00000ТАМБОВ<*> ОТЛАДКА <*>0000УСТ000СЛУ000ПЕЧ000ВЦП000Э
0553.0464: 0≠4000ТАМБОВ-= ОТЛАДКА =-000000СЛУВАМ НЕЛЬЗЯ00ВЫХ 0000К
0560.0614: ВАМ НЕЛЬЗЯ00ТАМБОВ<*> ОТЛАДКА
<*>0000КАД000СПР000VVО000СОN000П
0565.0753: ЛЬЗЯ000Ц(000ТАМБОВ<*> ОТЛАДКА
<*>0000КАД000СПР000ТАБ000АРХПАРО
1010.0232: 0000:0000:ТАМБОВ00000СRЕQ НЕТ БОБИНЫ00КОН ДО СВИДАНИЯ !
000
1126.0630: В 0000 НЕТ00ТАМБОВИГР КОН СОN В БЛОКЕ НЕТ ПРИКАЗА
0000НЕ П
1225.0277: БЛОКА А00000ТАМБОВ -= ОТЛАДКА =-000ДАЙ РАБОТУ
<ТАБ,АНК,КОН,ВЫХ>
На сосновоборском 2048 вообще ничего нет.
___
Сергей
70002:070.70007(0010000000401125) 0010000000401125
70002:070.70007(0010010000401126) 0010010000401126
70002:070.70007(0010020000401127) 0010020000401127
70002:070.70007(0010030000401130) 0010030000401130
70002:070.70007(0010040000401131) 0010040000401131
70005:070.70011(0010360000401006) 0010050000401132
70012:070.70101(0010370000400064) 0010360000401006
70014:050.00112(0400000000000000) 0000000000400020
Тираж тоже читает этот барабан, но ему от этого не плохеет.
74243:070.74357(0010340000270000) 0000000000074252
11110:063.00004(1402011014220104) 0000000000000001
11112:053.00010(4257777043011100) 0000000000000062
11117:071.12526(7777777777777777) 7777777777777777
76104:071.77013(7777777777777777) 0000000000000001
76525:071.76401(0420000011000000) 0000000000000000
НЕ ПОНИМАЮ
Явно у нас в эмуляторе диспака какая-то ошибка в Э71 - или что-то не
реализовано.
77412:071.76402(0120000000000000) 1000000200000012
02755:063.00004(1402011014220104) 0000000000011346
76104:071.77013(7777777777777777) 0000000000000001
76525:071.76401(0420000011000000) 0000000000000000
ВАШЕ ВРЕМЯ ИСТЕКЛО
Это совсем странно. Э63 4 должен возвращать что-то очень близкое к нулю.
77412:071.76402(0120000000000000) 1000000200000012
10616:063.00004(1402011014220104) 0000000000011346
10623:053.00010(4257777043011100) 0000000000000000
76222:070.76234(0010000000660730) 0010000000660730
ОШ.В ИНФ.СЛ.ЭКСТ
А теперь еще и 66-е устройство! Там-то что?
Leo
Переставь на 40 номер со смещением 1000.
Вот мой вариант:
шифр 412020^
озу 32^
врем 19^
лент 40(2049-1000)^
лент 57(2049)^
вход 70000^
e
в 70000
к 00 170 0100 00 22 00000
к 00 170 0101 00 22 00000
к 00 170 0102 00 22 00000
к 00 170 0103 00 22 00000
к 00 170 0104 00 22 00000
к 00 170 0105 00 22 00000
к 00 170 0200 00 22 00000
к 00 110 0201 00 100 6233
к 00 30 00007 00 22 00000
в 70100
с 0010 3600 0040 0006
с 0010 0000 0040 0125
с 0010 0100 0040 0126
с 0010 0200 0040 0127
с 0010 0300 0040 0130
с 0010 0400 0040 0131
в 70200
с 0010 3700 0040 0035
бTAMБОВ
еконец
Подчитывает что-то с зон 1140-1176 в память, переходит туда и теряет
управление.
___
Сергей
Он и возвращает, но сравнивается это время с разметочным кодом,
прочитанным с барабана (тракт, в который еще ни разу не писали,
отдается нулями или разметочным кодом?). Если условный переход
обмануть, то пытается в цикле выдавать Э71, который немедленно
завершается, не ожидая приема, и Э63 4. Нужно на эмуляторе машины
пробовать - перегонять диски в новый формат.
Leo
Близок локоть...
Leo
2009/11/1 Leo Broukhis <le...@mailcom.com>:
Да уж. Я добавил в dispak трассировку выполнения команд по "-t -t".
Получаю то же, что и ты: НЕ ПОНЯТНО, ВАШЕ ВРЕМЯ ИСТЕКЛО, ОШ.В
ИНФ.СЛ.ЭКСТ. Дальше прорубиться не получается.
Мне кажется, количество заказанного времени имело значение.
___
Сергей
-~----------~----~----~----~------~----~------~--~---
Какой прием? Там скорее всего с нулевым словом опрос...
>> и Э63 4.
Э63 4, AFAIR - это "дай время на авост"... Да, джин заказывал себе 1-2
секунды.
>> Нужно на эмуляторе машины
>> пробовать - перегонять диски в новый формат.
>>
>>
Команды пока выглядят разумно :)
>> Leo
>>
>>
И совершенно не понимаю, почему "ОШ в ИНФ.СЛ.ЭКСТ"
Это к какому экстракоду относится?
Что-то есть (но не знаю, что это - никаких интересных текстовых
констант там нет).
> И совершенно не понимаю, почему "ОШ в ИНФ.СЛ.ЭКСТ"
>
> Это к какому экстракоду относится?
Это относится к экстракоду чтения с 66-го направления.
Но это все позади.
ИГРА К ВАШИМ УСЛУГАМ
НУЖНЫ ПРАВИЛА ?
=-* да
ПРАВИЛА ИГРЫ:
ПОЛЕ ДЛЯ ИГРЫ СОСТОИТ ИЗ 11 КЛЕТОК.
КЛЕТКИ ПОЛЯ ИМЕЮТ НОМЕРА ОТ 0 ДО 10.
В ИГРЕ ПРИНИМАЮТ УЧАСТИЕ ТРИ БЕЛЫЕ И ОДНА ЧЕРНАЯ ФИШКИ.
НАЧАЛЬНОЕ ПОЛОЖЕНИЕ ИЗОБРАЖЕНО НА РИСУНКЕ:
------- ------- -------
I1 bb I-----I6 I-----I7 I
------- ------- -------
/ I \ I / I \
------- ------- ------- ------- --------
I0 bb I-----I2 I-----I5 ~~ I-----I8 I-----I10 I
------- ------- ------- ------- --------
\ I / I \ I /
------- ------- -------
I3 bb I-----I4 I-----I9 I
------- ------- -------
Дальше хуже (ДЖИН сильно пользуется ГОСТ-овскими эквивалентами
управляющих кодов видеотона, которых мы не знаем), но уже что-то.
Всего-то делов было - поместить команду "ШАШ" в 0-е слово зоны,
читаемой с барабана.
Leo
Аккуратно выходя из шашек и аккуратно вызывая другие игры, можно
пощупать "крестики" (рисует таблицу, потом жестоко умирает), бега
(вроде работает - буйство управляющих символов в коде ГОСТ), калах
(сначала "в блоке нет приказа ШАШ", потом "ТУРНИР ЗАКРЫТ" после
запроса даты/времени и использования логарифма - собственно программу
"калах" вызывать не пытается).
Я расписал весь лист константой "ШАШ<377>", и оказалось, что
ПОСАДКА/LANDING берут оттуда свои тексты (вместо любых текстов
выводится лишь "ШАШ ШАШ ШАШ ..."), но что-то математическое считает,
пользуясь Э50 5 (ln x), и вроде как-то играет.
Leo
Барабан: для работы ДЖИНа нужен 1 (один!) тракт барабана.. .Обычно
заказывалось два, потому что в каких-то крайне редких случаях ДИСПАК
считал, что нужно их два, и снимал задачу по авосту "ДАЙ ТРАКТЫ"
Сам ДЖИН барабаном не не пользуется! То есть вообще!
С ним работает только административка Паскаль-Автокода, и как и для чего
его при этом использует - вопрос смутный.
Поэтому, если что-то записать на барабан и потом это видно при работе
ДЖИНа, значит, что-то кардинально неправильно.
Никакого занесения никакой информации на барабан от программиста не было.
Если есть живой блок, то...
Переключатель команд в ДЖИНе был реализован так:
1. в каждом блоке основная программа состояла только из переключателя,
все команды вынесены в процедуры, исполнение любой команды этого блока -
один ПВ в переключателе.
2. Некоторые блоки состояли из нескольких субблоков, перегрузка которых
проходила невидимо для пользователя (не выдавался текст "Вы вошли в
блок..."). Переключатель каждого субблока содержал команды всех субблоков
3. Все остальные неизвестные субблоку команды вызывали загрузку
основного блока джина, единственного, где был полный переключатель всех
команд.
4. Команда, которую надо исполнять, если требовалась перегрузка блока,
"забрасывалась" куда-то в административку (там было найдена типа пара
неиспользуемых ячеек) - (именно поэтому административка была
зафиксирована, при смене ее версии запись туда команды начинала что-то
затирать) а после завершения перегрузки - бралась и сразу использовалась
для поиска по переключателю.
5. Для перегрузки блока использовалась маленькая процедурка-цикл (где-то
в верхних адресах, куда точно садилась уже не помню). Вся перегрузка
примитивна - чтение N зон c нулевого листа и ПБ в 7-ю ячейку.
Калах - турнир... Если загрузить именно блок КАЛАХ, то можно играть и
когда турнир закрыт, заказа тренировочную партию, что-то типа "КАЛ ТРЕ"
HTH
>> Аккуратно выходя из шашек и аккуратно вызывая другие игры, можно
>> пощупать "крестики" (рисует таблицу, потом жестоко умирает),
> Это так и должно работать... Игра "Крестики" - на самом деле просто
> разметка экрана для игры двух человек, сидящих около терминала... :)
Я знаю. В оригинале там была какая-то хитрость, позволявшая ДЖИНу
завершаться без выдачи "КОНЕЦ СЕАНСА", а в эмуляторе диспака после
таблицы выдается куча мусора и происходит "ош в инф. сл. экст."
> Барабан: для работы ДЖИНа нужен 1 (один!) тракт барабана.. .Обычно
> заказывалось два, потому что в каких-то крайне редких случаях ДИСПАК
> считал, что нужно их два, и снимал задачу по авосту "ДАЙ ТРАКТЫ"
>
> Сам ДЖИН барабаном не не пользуется! То есть вообще!
> С ним работает только административка Паскаль-Автокода, и как и для чего
> его при этом использует - вопрос смутный.
По крайней мере команда, приведшая к вызову блока, передается через него.
> Поэтому, если что-то записать на барабан и потом это видно при работе
> ДЖИНа, значит, что-то кардинально неправильно.
>
> Никакого занесения никакой информации на барабан от программиста не было.
Параметры, наверное, через него передавались, и массив строк для
локализации был параметром.
> Калах - турнир... Если загрузить именно блок КАЛАХ, то можно играть и
> когда турнир закрыт, заказа тренировочную партию, что-то типа "КАЛ ТРЕ"
Завтра попробую, если Сергей до меня не успеет. Где жила таблица
дебютов и как примерно она выглядела?
Leo
>а в эмуляторе диспака после
> таблицы выдается куча мусора и происходит "ош в инф. сл. экст."
в эмуляторе именно диспака? значит, не реализована эта ветка в Э71.
>
>> Барабан: для работы ДЖИНа нужен 1 (один!) тракт барабана.. .Обычно
>> заказывалось два, потому что в каких-то крайне редких случаях ДИСПАК
>> считал, что нужно их два, и снимал задачу по авосту "ДАЙ ТРАКТЫ"
>>
>> Сам ДЖИН барабаном не не пользуется! То есть вообще!
>> С ним работает только административка Паскаль-Автокода, и как и для чего
>> его при этом использует - вопрос смутный.
>
> По крайней мере команда, приведшая к вызову блока, передается через него.
>
>> Поэтому, если что-то записать на барабан и потом это видно при работе
>> ДЖИНа, значит, что-то кардинально неправильно.
>>
>> Никакого занесения никакой информации на барабан от программиста не было.
>
> Параметры, наверное, через него передавались, и массив строк для
> локализации был параметром.
Еще раз и медленно: код ДЖИНа ничего целенаправленно на барабан не писал
и с барабана не читал. Содержимое барабана никак не использовалось из
паскалевских текстов ДЖИНа. (Это я как разработчик говорю :) ).
>
>> Калах - турнир... Если загрузить именно блок КАЛАХ, то можно играть и
>> когда турнир закрыт, заказа тренировочную партию, что-то типа "КАЛ ТРЕ"
>
> Завтра попробую, если Сергей до меня не успеет. Где жила таблица
> дебютов и как примерно она выглядела?
Не помню. Для меня это не было нужной информацией :)
>
>> Я знаю. В оригинале там была какая-то хитрость, позволявшая ДЖИНу
>> завершаться без выдачи "КОНЕЦ СЕАНСА",
> "Хитрость" - тривиальная... :)
> Прежде чем завершиться задача _отказывалась_ от терминала.
> Поэтому на момент выполнения экстракода КЗ ДИСПАКу не было необходимости
> информировать этот терминал об окончании сеанса. :)
>
>>а в эмуляторе диспака после
>> таблицы выдается куча мусора и происходит "ош в инф. сл. экст."
> в эмуляторе именно диспака? значит, не реализована эта ветка в Э71.
Да, именно диспака. В эмуляторе машины происходит некорректное
обращение на первом же Э71 - обычно это значит, что задан неверный
номер терминала.
>>> Сам ДЖИН барабаном не не пользуется! То есть вообще!
>>> С ним работает только административка Паскаль-Автокода, и как и для чего
>>> его при этом использует - вопрос смутный.
>>
>> По крайней мере команда, приведшая к вызову блока, передается через него.
>>
>>> Поэтому, если что-то записать на барабан и потом это видно при работе
>>> ДЖИНа, значит, что-то кардинально неправильно.
>>>
>>> Никакого занесения никакой информации на барабан от программиста не было.
>>
>> Параметры, наверное, через него передавались, и массив строк для
>> локализации был параметром.
> Еще раз и медленно: код ДЖИНа ничего целенаправленно на барабан не писал
> и с барабана не читал. Содержимое барабана никак не использовалось из
> паскалевских текстов ДЖИНа. (Это я как разработчик говорю :) ).
Спрошу по-другому: как передавались параметры при вызове субблока? Тот
же субблок "бега" реализует и бега, и шашки, и посадку, и крестики -
как (примерно) в паскалевском тексте выглядел его вызов, чтобы субблок
сразу знал, во что играть?
Как вообще была устроена передача параметров при вызове "оверлеев" в
Паскаль-автокоде?
Leo
До таблицы дебютов дело не дошло:
В БЛОКЕ НЕТ ПРИКАЗА ШАШ - артефакт росписи барабана
==* кал
ТУРНИР ЗАКРЫТ
==* кал тре
КАТЕГОРИЯ ? <Ю,К,У,Э>
=-* ю
КТО НАЧИНАЕТ ? <ДЖИН,ПОЛЬЗ>
=-* д
...
10420: *62 55 (=0000000000000136) acc=0000000000000000
Пока рано
Это запрос адреса реакции на авост. Разрешение этого экстракода
приводит к уже знакомому "ош. в инф. сл. экст." при попытке обратиться
к 66-му направлению, но не к зоне 730, как обычно при любом приказе,
не обрабатываемом блоком, а к зоне 1013. Или это он как раз таблицу
дебютов пытается читать?
Leo
>
> Спрошу по-другому: как передавались параметры при вызове субблока? Тот
> же субблок "бега" реализует и бега, и шашки, и посадку, и крестики -
> как (примерно) в паскалевском тексте выглядел его вызов, чтобы субблок
> сразу знал, во что играть?
>
в одном из предыдущих писем пытался это рассказать.
> Как вообще была устроена передача параметров при вызове "оверлеев" в
> Паскаль-автокоде?
Единственный передаваемый параметр - имя команды, которую нужно выполнять.
И это не имеет никакого отношения к "оверлеям" в Паскаль-автокоде...
Эта технология сделана в ДЖИНе и только в ДЖИНе.
>
Экстракод *63 4, похоже, должен возвращать время, оставшееся до конца
сеанса, в виде отрицательного целого. После правки пропало сообщение
"ваше время истекло".
> Завтра попробую, если Сергей до меня не успеет. Где жила таблица
> дебютов и как примерно она выглядела?
Сегодня уже рабочий день, а игровой блок пускает только с пятницы по
воскресенье. :) Для бегов надо обнулить 50-ю ячейку, для калаха - 26-
ю. Если в 12-ю ячейку занести 1, субблок станет считать себя
автономным и перестанет делать попытки перейти в основной блок джина
(правда, появляются другие глюки). Нулевую зону 27-го барабана
достаточно растереть нулями.
Теперь калах вываливается на экстракоде *62 55 - не реализовано. Что
это?
Я добавил kalah.b6 и games.b6 в каталог examples.
___
Сергей
У Тюрина написано иначе.
>> Завтра попробую, если Сергей до меня не успеет. Где жила таблица
>> дебютов и как примерно она выглядела?
>
> Сегодня уже рабочий день, а игровой блок пускает только с пятницы по
> воскресенье. :) Для бегов надо обнулить 50-ю ячейку, для калаха - 26-
> ю. Если в 12-ю ячейку занести 1, субблок станет считать себя
> автономным и перестанет делать попытки перейти в основной блок джина
> (правда, появляются другие глюки). Нулевую зону 27-го барабана
> достаточно растереть нулями.
Или сделать setenv ZERODRUM 1.
> Теперь калах вываливается на экстракоде *62 55 - не реализовано. Что
> это?
Это запрос адреса реакции на авост. У тебя есть тюринская
"Операционная система Диспак" из серии "Библиотечка программиста"?
Leo
Я посмотрел у Тюрина... Но по трассировке выполнения "бегов"
получается иначе. Надо в тексты диспака залезть.
> > Нулевую зону 27-го барабана достаточно растереть нулями.
>
> Или сделать setenv ZERODRUM 1.
Давай сделаем по умолчанию?
> > Теперь калах вываливается на экстракоде *62 55 - не реализовано. Что
> > это?
>
> Это запрос адреса реакции на авост. У тебя есть тюринская
> "Операционная система Диспак" из серии "Библиотечка программиста"?
Есть дома, но сейчас я на работе.
Я добавил выполнение *62 55 вхолостую - калах начал играть. Но после
первого моего хода задумался навсегда. Не выполняя никаких
экстракодов. Он что, по авосту от таймера должен прекращать поиск
хода? А таблица дебютов как же?
___
Сергей
> Я посмотрел у Тюрина... Но по трассировке выполнения "бегов"
> получается иначе. Надо в тексты диспака залезть.
>
>> > Нулевую зону 27-го барабана достаточно растереть нулями.
>>
>> Или сделать setenv ZERODRUM 1.
>
> Давай сделаем по умолчанию?
Разные программы ожидают разного. Это может как-то зависеть от раздела
паспорта РОСП, но неясно, как именно.
>
> Я добавил выполнение *62 55 вхолостую - калах начал играть. Но после
> первого моего хода задумался навсегда. Не выполняя никаких
> экстракодов. Он что, по авосту от таймера должен прекращать поиск
> хода? А таблица дебютов как же?
Таблицу дебютов, возможно, он нашел. Зачекинь примеры, пожалуйста.
Leo
"Куда-то в административку" - это один из нескольких тысяч вариантов.
>> Как вообще была устроена передача параметров при вызове "оверлеев" в
>> Паскаль-автокоде?
> Единственный передаваемый параметр - имя команды, которую нужно выполнять.
Хорошо. Зачем в первых же командах после вызова программы безусловно
делается чтение с барабана?
00007: vjm 74003(10) (=4300000000000000) acc=0000000000400020 r[10]=00000
74003: uj (10) (=4257777043011100) acc=0000000000400020 r[10]=00010
00010: utm -10(10) (=0000000000000000) acc=0000000000400020 r[10]=00010
00010: uj 11100(10) (=6311134100000000) acc=0000000000400020 r[10]=00000
11100: vjm 11341(14) (=0037000300100005) acc=0000000000400020 r[14]=00000
11341: ntr 3 (=0000000000200030) acc=0000000000400020
11341: xta 5 (=0000000000011346) acc=0000000000400020
11342: ati 1 (=1022244310007417) acc=0000000000011346
11342: mtj 17(1) (=0260137600120601) acc=0000000000011346 r[1]=11346
11343: mtj 13(1) (=0010000000000630) acc=0000000000011346 r[1]=11346
11343: vjm 74027(15) (=0307425100000000) acc=0000000000011346 r[15]=00000
74027: uj 74251 (=0110521173174242) acc=0000000000011346
74251: xta 75211 (=0010340000270000) acc=0000000000011346
74251: vjm 74242(16) (=0006000260440016) acc=0010340000270000 r[16]=00112
74242: atx 74357 (=0000000000000000) acc=0010340000270000
74242: ita 16 (=0000000001660730) acc=0010340000270000
74243: atx 74356 (=0000000000000000) acc=0000000000074252
74243: *70 74357 (=0010340000270000) acc=0000000000074252
Leo
Разве ДИСПАК не всегда расписывал барабаны нулём? Вроде РОСП относится
к МОЗУ.
> Таблицу дебютов, возможно, он нашел. Зачекинь примеры, пожалуйста.
Не вижу никаких лишних обращений к диску. Зачекинил:
http://besm6.svn.sourceforge.net/viewvc/besm6/examples/games.b6?view=markup
http://besm6.svn.sourceforge.net/viewvc/besm6/examples/kalah.b6?view=markup
___
Сергей
>> Разные программы ожидают разного. Это может как-то зависеть от раздела
>> паспорта РОСП, но неясно, как именно.
>
> Разве ДИСПАК не всегда расписывал барабаны нулём? Вроде РОСП относится
> к МОЗУ.
Нужно смотреть, что делалось при чтении еще не образованного тракта барабана.
>> Таблицу дебютов, возможно, он нашел. Зачекинь примеры, пожалуйста.
>
> Не вижу никаких лишних обращений к диску. Зачекинил:
Есть чтение из зоны 1013 НУ 66, причем в режиме монопольного захвата диска.
В этой зоне находится кусок исходников АРФЫ в кодировке БЕМШ.
Leo
Нет, шифры пока не делали. Я еще не решил, как дисковое пространство
народу выделять. Кстати, Серега, ты с технологией Ajax знаком? Можно
её приспособить для эмуляции терминалов через веб-сайт? И как именно?
___
Сергей
Вроде там какие-то бинарные данные... Но может и не те, поэтому он
циклится.
$ besmtool view 2148 --start=01013 --length=1 | less
1013.0000: 000001 ⊃0000e0000001 ```````````R````````````
1013.0004: 0000 00000Г00001|002009 ````Ч``````#`````X``````
1013.0010: 00000000000000000000008З ```````````````````````'
1013.0014: 1 3900 062А- 01 F- -2Р. `````````` `````@`````0`
1013.0020: 2Р/2Р22Р3 00 F/2А 00 0/ `0``0``0`````@`` ```````
1013.0024: 03 02e32e200 e210000 ````````````````````````
1013.0030: 2e/2e.20- 3 00 50 2 ````````````````````````
1013.0034: Ь F5203ТF2К А900Р 0 Э ``;`@````2@`*` ```0````<
1013.0040: 1 V Ю ) 0[00 e;8Р00+ ``J``=``````````````0```
1013.0044: Ю1 *Р 0 ЯР 0Р00900У 0 ``=```0````>0``0`````3``
1013.0050: Ю1 )Р 0 DР 0Р00 ЮР 0 ``=```0````?0``0````=0``
1013.0054: FР 0Р00Ы 100 e00e00× ``@0``0``:``````````````
1013.0060: 2А2 022А3 2 0А 0e 00 07 ` ````` `````` `````````
1013.0064: 072А- 01 F- /2Р.2Р/2Р4 ```` `````@`````0``0``0`
1013.0070: 2Р52Р62Р72Р200 e 8000> `0``0``0``0`````````````
1013.0074: 2Р3 00 F/2А 00 0e 03 0 `0`````@`` `````````````
1013.0100: 2e32e22e72e62e52e42e/2e. ````````````````````````
___
Сергей
ЧТО- ПРО 2148 1013
ВЫДАТЬ- БЕ
ВЫДАТЬ- 0
0000)
0001) ФУНТМ2
...
0660) ФУНТМ2
0661)
0662) КОНСТ
0663) 8
0664) ЗАКРБУ
0665)
0666) ТОМ009
0667)
0670) БУФ001
0671) Т
0672) БУФ011
0673)
0674) ТОМ002
0675) 7
0676) ТОМ003
0677) 7
0700) БУФ012
0701) 7
0702) ТОМ009
0703)
0704) БУФ001
0705) Т
0706) БУФ011
0707)
0710) УИМ 1
...
0732) *УСТАН
0733) АВЛИВА
0734) ЕМ Р15
0735) НА АД
0736) РЕС ТЕ
0737) КУЩЕЙ
0740) ОБЛ СО
0741) СТ
Явный БЕМШ, но между яч. 1 и 660 ничего текстового нет. Но это неважно
- главное, что калах это читает, но это вовсе не дебюты.
Leo
Нулевую зону 27-го барабана достаточно растереть нулями.Или сделать setenv ZERODRUM 1.Давай сделаем по умолчанию?Разные программы ожидают разного. Это может как-то зависеть от раздела паспорта РОСП, но неясно, как именно.
2009/11/2 Сергей В. <serge.v...@gmail.com>:Разные программы ожидают разного. Это может как-то зависеть от раздела паспорта РОСП, но неясно, как именно.Разве ДИСПАК не всегда расписывал барабаны нулём? Вроде РОСП относится к МОЗУ.Нужно смотреть, что делалось при чтении еще не образованного тракта барабана.
> Тракты барабана не "образовывались", а назначались...
Ты меня понял. :)
> Система не давала никаких гарантий по поводу содержания только что назначенных трактов барабана (кроме систем с ЭФ=1, там другая песнь :) ).
Это странно. Нужно проверить по коду.
После росписи пресловутого 0-го тракта МБ 27 константой "ШАШ<377>00" и
исправления Э71, чтобы выдачу в коде терминала завершал по нулевому
байту, шашки играют, как родные, разве что поле пока не
перерисовывается.
Leo
2009/11/2 Basil Dolmatov <vdol...@gmail.com>:Leo Broukhis пишет:Спрошу по-другому: как передавались параметры при вызове субблока? Тот же субблок "бега" реализует и бега, и шашки, и посадку, и крестики - как (примерно) в паскалевском тексте выглядел его вызов, чтобы субблок сразу знал, во что играть?в одном из предыдущих писем пытался это рассказать."Куда-то в административку" - это один из нескольких тысяч вариантов.
Как вообще была устроена передача параметров при вызове "оверлеев" в Паскаль-автокоде?Единственный передаваемый параметр - имя команды, которую нужно выполнять.Хорошо. Зачем в первых же командах после вызова программы безусловно делается чтение с барабана?
00007: vjm 74003(10) (=4300000000000000) acc=0000000000400020 r[10]=00000 74003: uj (10) (=4257777043011100) acc=0000000000400020 r[10]=00010 00010: utm -10(10) (=0000000000000000) acc=0000000000400020 r[10]=00010 00010: uj 11100(10) (=6311134100000000) acc=0000000000400020 r[10]=00000 11100: vjm 11341(14) (=0037000300100005) acc=0000000000400020 r[14]=00000 11341: ntr 3 (=0000000000200030) acc=0000000000400020 11341: xta 5 (=0000000000011346) acc=0000000000400020 11342: ati 1 (=1022244310007417) acc=0000000000011346 11342: mtj 17(1) (=0260137600120601) acc=0000000000011346 r[1]=11346 11343: mtj 13(1) (=0010000000000630) acc=0000000000011346 r[1]=11346 11343: vjm 74027(15) (=0307425100000000) acc=0000000000011346 r[15]=00000 74027: uj 74251 (=0110521173174242) acc=0000000000011346 74251: xta 75211 (=0010340000270000) acc=0000000000011346 74251: vjm 74242(16) (=0006000260440016) acc=0010340000270000 r[16]=00112 74242: atx 74357 (=0000000000000000) acc=0010340000270000 74242: ita 16 (=0000000001660730) acc=0010340000270000 74243: atx 74356 (=0000000000000000) acc=0000000000074252 74243: *70 74357 (=0010340000270000) acc=0000000000074252
> "Куда-то в административку" - это один из нескольких тысяч вариантов.
>
> Да, именно так. Извини, не помню... Может 76012, а может 77577. :)
>
> Выяснить, в принципе, несложно... Запускается любой блок ДЖИНа, дается "не
> его" команда и когда управление уходит в верхний лист, просто смотрится, где
> в этом же листе лежит эта команда... AFAIR - в ячейке три буквы, добитые
> нулями слева (а может и наоборот :) )
Все-таки нули справа, судя по поведению.
> Никто не знал, что делала административка ПУЛЬТа с этим одним траком, но его
> её нужно было заказать.
Почему ПУЛЬТа? Это административка Паскаль-автокода читает (74ххх -
это 36-й лист).
> 74243: *70 74357 (=0010340000270000) acc=0000000000074252
>
> Кстати, судя по адресам, административка получается два листа? 36-й, 37-й?
> Кстати, да, 37-й - административка ПУЛЬТа, 36-й - Паскаль-Автокода
>
> По секрету могу сказать, что любая программа на Паскаль-автокоде первым
> делом бегала в административку, которая ей открывала input и output и
> привязывала их к терминалу. :)
Понятное дело.
> А так - код типично ДЖИНовсский...
>
> Вход в 7-ю, прыжок на program (который в конце блока лежит), там, сначала
> прыжок в административку...
> Самое интересное тут начинается с 11343 и дальше :) Что там нарисовано?
Ты себе еще эмулятор не поставил?
> А по административке ходить - только время тратить... :)
>
> Кстати, опять для сведения: переменные program - индексировались по М1,
> переменные процедур и функций в програм по М2, переменные вложенных глубже
> процедур - по М3 и так далее... На М7 - Паскаль-Автокод ломался :)
Спасибо. Может, декомпилятор написать?
Leo
Однако на 0-м тракте МБ 27 дофига параметров хранится. Открыты ли блок
игр и турнир калаха, шифр и фамилия юзера, текущая выполняемая
команда.
___
Сергей
Значит, мне повезло, что этак константа ничего не портит. Потому что
когда я попытался писать в каждое слово его восьмеричный адрес в
текстовом виде, чтобы узнать, что пытается выводить "посадка" и
скоррелировать эти адреса со смещениями ожидаемых сообщений в зоне на
диске, у меня все сломалось.
И что нам мешало делать эти эксперименты полтора года назад, как
только мы калах обнаружили?
Leo
Калах заработал после того, как диск на НУ 66 я объявил большим куском и сделал
setenv ZERODRUM 1, чтобы он считался нулями:
ПРИВЕТСТВУЮ ТЕБЯ, НЕТ !!
МОЙ ХОД: ДЖИН 0 0 0000 Ю
=++> 3 ПРИВЕТСТВУЮ ТЕБЯ, НЕТ !!
...
=++> 2 Я ПРОСМОТРЕЛ 36 ПОЗИЦИЙ, А ТЫ ?
...
=++> 6 ПОЧЕМУ МОЛЧИШЬ ?
И пр.
Leo
Или, проще, обнулить зону 1013 диска 2148 и разрешить в него запись.
Тогда ведется счет и можно откладывать партии.
Leo
Вот в это - верю... :)
>> Или, проще, обнулить зону 1013 диска 2148 и разрешить в него запись.
>> Тогда ведется счет и можно откладывать партии.
>
> Вот в это - верю... :)
Под шифром пользователя 0000 и фио "НЕТ". Если это победить - и
написать какую-нибудь плюшку в зону 730, чтобы ловила неизвестные
блоку приказы, то можно будет открывать доступ. :)
Восстановить программу "турнир" должно быть не очень сложно, а вот
дебюты перегенерировать (они нужны для уровней "участник" и "эфенди")
- задача непростая.
Я нашел еще (бесполезный для нас) блок "БИБЛ", (бесполезную для нас)
запускалку Джина из области АРФЫ, блок "КАДРЫ"(?) и теоретически
полезный блок "СТАТ", который не запускается, видимо, потому что
неавтономный.
http://groups.google.com/group/besm6/web/2048--2049
Leo
> Восстановить программу "турнир" должно быть не очень сложно, а вот
> дебюты перегенерировать (они нужны для уровней "участник" и "эфенди")
> - задача непростая.
ага... еще и закодировать их так, как надо... :(
проще найти диск где они не потерты.
>
> Я нашел еще (бесполезный для нас) блок "БИБЛ", (бесполезную для нас)
> запускалку Джина из области АРФЫ, блок "КАДРЫ"(?)
наплюй... неюзабельно.
> и теоретически
> полезный блок "СТАТ", который не запускается, видимо, потому что
> неавтономный.
автономный.
>
А СТАТ - это команда по статистике ДЖИНа...
Не особо и иинтересно.
>>
>
> http://groups.google.com/group/besm6/web/2048--2049
>
Эхолот - да...
Программа, анализировавшая, в частности, использование стека в
Паскалевской программе...
Потому и "эхолот" - меряла "глубину колодца стека". :)
Делал ее, по-моему, Тихорский...
СТРУК - это что-то знакомое, типа красивой печати... Ей, вроде бы,
печаталась документация ДЖИНа.
dol@
>> Восстановить программу "турнир" должно быть не очень сложно, а вот
>> дебюты перегенерировать (они нужны для уровней "участник" и "эфенди")
>> - задача непростая.
> ага... еще и закодировать их так, как надо... :(
> проще найти диск где они не потерты.
Так, одной проблемой меньше:
==* тур
ТУРНИР " Д Ж И Н Н - Ч Е Л О В Е К "
С 1V.1V.1V ПО 03.11.09 НА 20.17
=========================================
IМЕСТО ШИФР ФАМИЛИЯ НОМО ДЖИН ФОРI
-----------------------------------------
I‾‾‾‾‾‾‾‾‾‾‾ Э Ф Е Н Д И ‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾I
I 1 07+ НЕТ ТАКОГО 165 168 0 I
I 2 01+8 НЕТ ТАКОГО 1 160 >> I
I 3 5049 НЕТ ТАКОГО 0 0 1 I
I 4 03+8 НЕТ ТАКОГО 3 80 >> I
I 5 0003 НЕТ ТАКОГО 84 7 0 I
I 6 5049 НЕТ ТАКОГО 0 0 1 I
I 7 07+8 НЕТ ТАКОГО 3 80 >> I
I 8 5049 НЕТ ТАКОГО 0 0 1 I
...
Leo
> Я нашел еще (бесполезный для нас) блок "БИБЛ", (бесполезную для нас)
> запускалку Джина из области АРФЫ, блок "КАДРЫ"(?)наплюй... неюзабельно.