User Tag List

Страница 15 из 40 ПерваяПервая ... 111213141516171819 ... ПоследняяПоследняя
Показано с 141 по 150 из 398

Тема: Игра "Зона" на ДВК

  1. #141

    Регистрация
    07.10.2007
    Адрес
    п.Пудость Гатчинского р-на Лен.обл.
    Сообщений
    3,250
    Спасибо Благодарностей отдано 
    360
    Спасибо Благодарностей получено 
    639
    Поблагодарили
    415 сообщений
    Mentioned
    46 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Alex_K Посмотреть сообщение
    И с адреса 1000 по всей видимости объявление внешней процедуры или функции в вызовом типа FORTRAN.
    Действительно. В качестве примера:

    Скрытый текст

    Код:
    PROGRAM A;
    FUNCTION SUMM(VAR A,B:REAL):REAL; FORTRAN;
    VAR A,B,C:REAL;
    BEGIN
     A:=1; B:=2; C:=SUMM(A,B)
    END.
    Код:
            .GLOBL  $RESR6,$RESR5,$KORE,$SAV10,$VER
            .GLOBL  $BEGIN,FILE,$TTY,$END
            .RADIX  10
            .GLOBL  SUMM
    L0:     JSR     %0,$B74
            .GLOBL  $B74
            JSR     %7,$B126
            .GLOBL  $B126
            JSR     %7,SUMM
            MOV     %1,20(6)
            MOV     %0,18(6)
            MOV     $RESR5,%5
            JSR     %0,$B76
            .GLOBL  $B76
            MOV     (6),6(6)
            ADD     #6,%6
            RTS     %7
            $VER=59.
    $BEGIN:
            ADD     #12,$KORE
            JSR     %7,$B127
            .GLOBL  $B127
            MOV     #1,-(6)
            JSR     %7,$B88
            .GLOBL  $B88
            MOV     (6)+,@%5
            MOV     (6)+,2(5)
            MOV     #2,-(6)
            JSR     %7,$B88
            MOV     (6)+,4(5)
            MOV     (6)+,6(5)
            CMP     -(6),-(6)
            MOV     %5,-(6)
            MOV     %5,%0
            ADD     #4,%0
            MOV     %0,-(6)
            MOV     #2,-(6)
            MOV     %6,%4
            JSR     %7,L0
    
    
            MOV     (6)+,8(5)
            MOV     (6)+,10(5)
            JMP     $END
            .END
    [свернуть]

    Этот пользователь поблагодарил Alex_K за это полезное сообщение:

    nzeemin(11.04.2021)

  2. #142

    Регистрация
    20.12.2005
    Адрес
    Москва
    Сообщений
    2,051
    Спасибо Благодарностей отдано 
    1,142
    Спасибо Благодарностей получено 
    1,473
    Поблагодарили
    525 сообщений
    Mentioned
    20 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Alex_K Посмотреть сообщение
    Действительно. В качестве примера:
    Да, уже разобрался с этим.
    Там вот что было:
    Код:
    function RANDU(var A,B:integer):real; fortran;
    
    function L01046(A,B:integer):integer;
    begin
    	L01046:=ROUND(A+(B-A)*RANDU(VAR42,VAR44));
    end;
    RANDU принимает по ссылке два целых числа - текущие данные; возвращает очередное псевдослучайное число в диапазоне от 0 до 1.
    Последний раз редактировалось nzeemin; 11.04.2021 в 19:23.

    Этот пользователь поблагодарил nzeemin за это полезное сообщение:

    Alex_K(11.04.2021)

  3. #143

    Регистрация
    07.10.2007
    Адрес
    п.Пудость Гатчинского р-на Лен.обл.
    Сообщений
    3,250
    Спасибо Благодарностей отдано 
    360
    Спасибо Благодарностей получено 
    639
    Поблагодарили
    415 сообщений
    Mentioned
    46 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от nzeemin Посмотреть сообщение
    Отличается только параметром #3 в первой строчке - может это не та версия Фортрана.
    В данном случае 3 - это количество параметров. Отличаются чуть-чуть RANDU. В приведенной вами функции есть передача результата по адресу третьего параметра:
    Код:
        MOV    (R5)+, R3
        MOV    R0, (R3)+
        MOV    R1, @R3

    Этот пользователь поблагодарил Alex_K за это полезное сообщение:

    nzeemin(11.04.2021)

  4. #144

    Регистрация
    20.12.2005
    Адрес
    Москва
    Сообщений
    2,051
    Спасибо Благодарностей отдано 
    1,142
    Спасибо Благодарностей получено 
    1,473
    Поблагодарили
    525 сообщений
    Mentioned
    20 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Продолжаю копать.
    Нужно ещё 8 блоков, ~2300 слов заполнить осмысленным кодом на Паскале.
    Добился возможности проверять код побайтово, за исключением строк.

    Эти 3 пользователя(ей) поблагодарили nzeemin за это полезное сообщение:

    Alex_K(14.04.2021), hobot(14.04.2021), Oleg N. Cher(14.04.2021)

  5. #145

    Регистрация
    19.11.2012
    Адрес
    г. Луганск
    Сообщений
    698
    Спасибо Благодарностей отдано 
    29
    Спасибо Благодарностей получено 
    83
    Поблагодарили
    55 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от nzeemin Посмотреть сообщение
    Продолжаю копать.
    А что потом если не секрет?

  6. #146

    Регистрация
    30.08.2011
    Адрес
    Зеленоград
    Сообщений
    7,161
    Спасибо Благодарностей отдано 
    2,979
    Спасибо Благодарностей получено 
    374
    Поблагодарили
    311 сообщений
    Mentioned
    13 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от nzeemin Посмотреть сообщение
    Продолжаю копать.
    Никита, возможно тебе пригодится для ускорения / упрощения *пусть и не большого
    при работе с одной и той же версией Паскаля и без необходимости использования системной библиотеки Фортрана,
    ты можешь переименовать .OBJ который всегда нужен в SYSLIB.OBJ - и тогда при линковке его явно указывать не надо.
    Архив программ для УК-НЦ, ДВК и БК.

    Ищу игру "СТРАНА МОНСТРОВ" [monstr.sav] для ДВК.

  7. #147

    Регистрация
    01.12.2017
    Адрес
    г. Воронеж
    Сообщений
    1,129
    Спасибо Благодарностей отдано 
    625
    Спасибо Благодарностей получено 
    742
    Поблагодарили
    312 сообщений
    Mentioned
    12 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Можно будет потом портировать куда угодно, в т.ч. и на современные версии windows.
    Думаю, паскалевский исходник будет не слишком сложно адаптировать для сборки современными компиляторами.

  8. #148

    Регистрация
    20.12.2005
    Адрес
    Москва
    Сообщений
    2,051
    Спасибо Благодарностей отдано 
    1,142
    Спасибо Благодарностей получено 
    1,473
    Поблагодарили
    525 сообщений
    Mentioned
    20 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Первый проход закончил - по объёму код уже весь - ~1230 строк, примерно как и ожидал.
    Но осталась куча мелких ошибок. Прохожу по второму разу, исправляю эти мелочи.

    Эти 3 пользователя(ей) поблагодарили nzeemin за это полезное сообщение:

    Alex_K(15.04.2021), Oleg N. Cher(15.04.2021), svofski(15.04.2021)

  9. #149

    Регистрация
    20.12.2005
    Адрес
    Москва
    Сообщений
    2,051
    Спасибо Благодарностей отдано 
    1,142
    Спасибо Благодарностей получено 
    1,473
    Поблагодарили
    525 сообщений
    Mentioned
    20 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Вот интересное место:
    Код:
    L36040:	CMP	000032(R5), #000012	; < 10. ?
    L36046:	BLT	L36054
    L36050:	CLR	R0
    L36052:	BR	L36060
    L36054:	MOV	#000001, R0
    L36060:	COMB	R0
    L36062:	MOVB	000047(R5), R1		; Фонарь горит?
    L36066:	BICB	R0, R1
    L36070:	CMP	000032(R5), #000001
    L36076:	BGT	L36104
    L36100:	CLR	R0
    L36102:	BR	L36110
    L36104:	MOV	#000001, R0
    L36110:	COMB	R0
    L36112:	BICB	R0, R1
    L36114:	BNE	L36122
    L36116:	JMP	L36144
    Текущий перевод в Паскаль:
    Код:
    if (VAR32 < 10) and VAR47 and (VAR32 > 1) then
    Проблема в том чтобы сгенерировать точно такой же код, как в оригинале, но Паскаль даёт несколько другой код:
    Код:
    ; if (VAR32 < 10) and VAR47 and (VAR32 > 1) then
    	CMP 	26(5),#10
    	BLT	L792
    	CLR	%0
    	BR	L793
    L792:	MOV	#1,%0
    L793:
    	MOVB	39(5),%1
    	COM 	%1
    	BICB	%1,%0
    	CMP 	26(5),#1
    	BGT	L794
    	CLR	%1
    	BR	L795
    L794:	MOV	#1,%1
    L795:
    	COMB	%1
    	BICB	%1,%0
    	BNE	L796
    	JMP	L797
    L796:
    Пробовал разные комбинации, пока не нашёл.

  10. #150

    Регистрация
    07.10.2007
    Адрес
    п.Пудость Гатчинского р-на Лен.обл.
    Сообщений
    3,250
    Спасибо Благодарностей отдано 
    360
    Спасибо Благодарностей получено 
    639
    Поблагодарили
    415 сообщений
    Mentioned
    46 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от nzeemin Посмотреть сообщение
    Пробовал разные комбинации, пока не нашёл.
    if (VAR47 and (VAR32 < 10)) and (VAR32 > 1) then

    - - - Добавлено - - -

    Вроде работает и так:
    if VAR47 and (VAR32 < 10) and (VAR32 > 1) then

    Эти 3 пользователя(ей) поблагодарили Alex_K за это полезное сообщение:

    hobot(16.04.2021), nzeemin(15.04.2021), Oleg N. Cher(16.04.2021)

Страница 15 из 40 ПерваяПервая ... 111213141516171819 ... ПоследняяПоследняя

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Похожие темы

  1. Ответов: 17
    Последнее: 26.12.2015, 23:22
  2. Ответов: 31
    Последнее: 15.04.2012, 19:24
  3. [аукцион] "корзины" от ДВК, Э-60
    от Agat в разделе Барахолка (архив)
    Ответов: 8
    Последнее: 08.11.2011, 14:22
  4. Ответов: 0
    Последнее: 15.08.2010, 14:38

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •