Важная информация

User Tag List

Страница 20 из 35 ПерваяПервая ... 161718192021222324 ... ПоследняяПоследняя
Показано с 191 по 200 из 342

Тема: PASCAL + MACRO11 (УКНЦ-ДВК).

  1. #191
    R.I.P. Аватар для hobot
    Регистрация
    30.08.2011
    Адрес
    Зеленоград
    Сообщений
    7,161
    Спасибо Благодарностей отдано 
    2,979
    Спасибо Благодарностей получено 
    370
    Поблагодарили
    309 сообщений
    Mentioned
    13 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    образ похоже та сам и делал когда то там?<br>
    Код:
    <br>
    <br>
    DEVICE TT001: NOT IN CONFIGURATION<br>
    <br>
    &nbsp;&nbsp;RSX-11M V4.8 BL70 &nbsp; 28.K<br>
    &gt;RED HD:=SY:<br>
    &gt;RED HD:=LB:<br>
    &gt;MOU HD:RSX11MBL70<br>
    &gt;@HD:[1,2]STARTUP<br>
    &gt;* Please enter time and date (DD-MMM-YYYY HH:MM) [S]:<br>
    Цитата Сообщение от form Посмотреть сообщение
    Ну в RSX-то никто не мешает перенести прямо со стакана.<b
    SYS$GAMES:GANG.TSK
    выкачать, засунуть в образ для ДВК
    TSK файл - чистфй image, преобразований не требуется.
    стоп стоп стоп! Я последний раз (совсем недавно!) наверное где-то в логах видно,коннектился через эмуль VT52 с помощью CTAKAH.cfg и потом копию закидывал на стакан и игрался,а вот с эмулятором ДВК + RSX + NET < --- я даже не на вы... ))) Иначе бы не спрашивал.
    Архив программ для УК-НЦ, ДВК и БК.

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

  2. #192
    Guru
    Регистрация
    30.11.2015
    Адрес
    г. Самара
    Сообщений
    6,996
    Спасибо Благодарностей отдано 
    285
    Спасибо Благодарностей получено 
    631
    Поблагодарили
    531 сообщений
    Mentioned
    13 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    "RSX-11M V4.8 BL70 28.K" - это круть. Игрушка будет летать

  3. #193
    R.I.P. Аватар для hobot
    Регистрация
    30.08.2011
    Адрес
    Зеленоград
    Сообщений
    7,161
    Спасибо Благодарностей отдано 
    2,979
    Спасибо Благодарностей получено 
    370
    Поблагодарили
    309 сообщений
    Mentioned
    13 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    у меня в комплекте эмулятора HDRSX.DSK и конфиг к нему...Но там же просто так не запихнёшь , ПКМ я не знаю как.

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

    Цитата Сообщение от Hunta Посмотреть сообщение
    Игрушка будет летать
    там ожидание нажатия на каждом действии - далеко не улетит
    Архив программ для УК-НЦ, ДВК и БК.

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

  4. #194
    R.I.P. Аватар для hobot
    Регистрация
    30.08.2011
    Адрес
    Зеленоград
    Сообщений
    7,161
    Спасибо Благодарностей отдано 
    2,979
    Спасибо Благодарностей получено 
    370
    Поблагодарили
    309 сообщений
    Mentioned
    13 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от form Посмотреть сообщение
    IORESULT - вроде фича всяких TP/BP/FPK (ну может и еще чья).
    на одной из дискет для ДВК нашлось несколько мощных примеров :

    Контроль Ошибок:
    Код:
    PROGRAM ERROR;    (* ERROR PROCESSING *)
    (*$T-,A- TURN OFF STACK OVERFLOW CHECKING IN CASE THAT WAS THE ERROR! *)
    
    (*$E+    MAKE THIS AN EXTERNAL PROCEDURE DEFINITION
        ДАННАЯ ПРОЦЕДУРА ЯВЛЯЕТСЯ ВНЕШНЕЙ *)
    
    TYPE
        ERRORTYPE = (FATAL, IOERROR, WARNING);
        MESSAGE = ARRAY [1..100] OF CHAR;
    
    PROCEDURE ERROR(CLASS:ERRORTYPE; ERRORNUMBER,ERRORMSGLENGTH:INTEGER;
            VAR MSG:MESSAGE; VAR XFILE:TEXT; IOSTATUS,USERPC:INTEGER;
            FILENAMELENGTH: INTEGER; VAR FILENAME: MESSAGE);
    
    VAR    I:INTEGER;
    
    BEGIN
        WRITELN;
        CASE CLASS OF
            WARNING: WRITE('WARNING: ');
            IOERROR: WRITE('?I/O ERROR: ');
            ELSE WRITE('?FATAL ERROR: ');
        END;
        WRITELN(MSG:ERRORMSGLENGTH);
        IF CLASS=IOERROR THEN BEGIN
            IF FILENAMELENGTH > 0 THEN
            WRITELN(' FILENAME: "',FILENAME:FILENAMELENGTH,'"');
               WRITELN(' I/O STATUS: ',IOSTATUS:1);
        END;
        WRITELN(' PROGRAM COUNTER: ',USERPC:-1);
    END;
    какой-то Интэррапт-же
    Код:
    (*    INTRPT V1.2  ---  INTERRUPT INITIALIZATION
                  ИНИЦИАЛИЗАЦИЯ ВЕКТОРА ПРЕРЫВАНИЯ *)
    
    PROCEDURE INTERRUPT( VECTOR:INTEGER; PROCEDURE ROUTINE; PS:INTEGER);
      VAR
        PROTFAIL : BOOLEAN;
        VECTORS ORIGIN 0B : ARRAY [0..100B] OF RECORD
                TRAPADDR : INTEGER;
                PROCESSORSTATUS : INTEGER;
                         END;
      BEGIN
    (*$C    .MCALL .PROTECT
        .GLOBL  RTAREA, $USRPC, $RESR5
        CLRB    PROTFAIL(6)
        .PROTECT #RTAREA,VECTOR(6)
        ROLB    PROTFAIL(6)
    *)  IF PROTFAIL THEN
          WRITELN('VECTOR AT ',VECTOR:-1,' NOT AVAILABLE')
         ELSE
          BEGIN
        WITH VECTORS[VECTOR DIV 4] DO
          BEGIN
    (*$C    MOV    VECTOR-4(6),@%3
    *)(*        TRAP := ROUTINEADDR; *)
            PROCESSORSTATUS := PS;
          END;
          END;
      END;
    
    
    
    
    PROCEDURE SAVREG;
      BEGIN
    (*$C    MOV %5,-(6)
        MOV %4,-(6)
        MOV %3,-(6)
        MOV %2,-(6)
        MOV %1,-(6)
        MOV %0,-(6)
        MOVB @#^O56,-(6)
        MOV $USRPC,-(6)
        MOV $RESR5,%5
        JMP @16(6)
    *)
      END;
    
    
    PROCEDURE RESREG;
      BEGIN
    (*$C    TST (6)+
        MOV (6)+,$USRPC
        MOVB (6)+,@#^O56
        MOV (6)+,%0
        MOV (6)+,%1
        MOV (6)+,%2
        MOV (6)+,%3
        MOV (6)+,%4
        MOV (6)+,%5
        TST (6)+
        RTI
    *)
      END;
    Работа с CSI - честно не понял - это обработка входящих параметров?

    Код:
    (*    CSI V1.2  ---  COMMAND STRING INTERPRETER (GENERAL) INTERFACE
                   ИНТЕРФЕЙС ДЛЯ РАБОТЫ С CSI *)
    
    CONST
        INMAX = 6;    (* MAXIMUM NUMBER OF INPUT FILES *)
                (* МАКСИМАЛЬНОЕ ЧИСЛО ВХОДНЫХ ФАЙЛОВ *)
    
    
    TYPE
        TSTRING    = ARRAY [1..80] OF CHAR;
        CSIEXTENSIONS = ARRAY [1..12] OF CHAR;
    
        CSIDATA = RECORD
            O1,O2,O3 : TEXT;
            OFLAG1, OFLAG2, OFLAG3 : BOOLEAN;
            INN : ARRAY [1..INMAX] OF TEXT;
            IFLAG : ARRAY [1..INMAX] OF BOOLEAN;
            SWITCHCOUNT : INTEGER;
            SWITCH : ARRAY ['@'..'Z'] OF RECORD
                GIVEN, ARGFOUND : BOOLEAN;
                ARGVALUE : INTEGER;
               END;
            END;
    
    
    
    FUNCTION CSI( STR:TSTRING;  DEFEXTTEXT:CSIEXTENSIONS;
                   VAR CSIDAT:CSIDATA ) : BOOLEAN;
      VAR
        CHANSFREE, CSIVALUE : BOOLEAN;
        C : CHAR;
        I, N, CINDEX, RINDEX : INTEGER;
        VAL : 0..65535;
        DEFEXT : ARRAY [1..4] OF INTEGER;
    
    
        FUNCTION WAITCHN( CHN : INTEGER ) : BOOLEAN;
          VAR FLAG : BOOLEAN;
          BEGIN
            FLAG := TRUE;
    (*$C    .MCALL    .WAIT
        .WAIT    CHN(6)
        BCC    1$
        CLRB    FLAG(6)
    1$: *)
            WAITCHN := FLAG;
          END;
    
    
        PROCEDURE SETOPEN( VAR FIL:TEXT;  CHN:INTEGER;  RESETFLAG:BOOLEAN;
                VAR RESULTFLAG:BOOLEAN );
          CONST
        STATTEXT = 200B;    (* TEXT TYPE FILE (VS. BINARY RECORDS) *)
        STATWRITE = 20B;    (* FILE OPEN FOR WRITING *)
        STATREAD =  10B;    (* FILE OPEN FOR READING *)
        STATSEEK =   4B;    (* FILE IS RANDOM-ACCESS TYPE (SEEK ALLOWED) *)
        STATSPAN =   2B;    (* RECORDS SPAN BLOCK
                    BOUNDARIES (DOUBLE SIZE BUFFER) *)
        
        BUFFERLEN = 512;    (* SIZE OF FILE BUFFER IN BYTES *)
          TYPE
            BUFFER = ARRAY [1..BUFFERLEN] OF CHAR;
            CHANBLOCK = RECORD
                PTR : ^BUFFER;
                STAT, DEV, NAME, NAM2, EXT, FSIZ, CHAN, BLOK: 0..65535;
                BUFF : ^BUFFER;
                BSIZ, HAND, REC : INTEGER;
                DATA : ^BUFFER;
                PER : INTEGER;
                    END;
          VAR
            CHNBLOCK : ^CHANBLOCK;
            PTRFILE : RECORD CASE INTEGER OF
                1: (P: ^CHANBLOCK);
                2: (F: TEXT);
                  END;
          BEGIN
            RESULTFLAG := WAITCHN(CHN);
            IF RESULTFLAG THEN
              BEGIN
            NEW(CHNBLOCK);
            PTRFILE.P := CHNBLOCK;  FIL := PTRFILE.F;
            WITH CHNBLOCK^ DO
              BEGIN
            IF RESETFLAG THEN STAT := STATREAD ELSE STAT := STATWRITE;
            STAT := STAT OR STATTEXT;
            DEV := 0;
            NAME := (ORD('C')*40+ORD('S'))*40+ORD('I')-39488;
            NAM2 := (CHN + 31)*40*40;
            EXT := 0;
            FSIZ := 0;
            CHAN := CHN;
            BLOK := 0;
            BSIZ := BUFFERLEN;
            HAND := 100000B;  (* RAN ACC DEVICE *)
            REC := 1;         (* RECORDSIZE: 1 *)
            PER := 1000B DIV REC;
            NEW(BUFF);  DATA := BUFF;  PTR := BUFF;
              END;
    (*$C        .GLOBL $CHAN0
            MOV CHN(6),%0
            ASL %0
            MOV CHNBLOCK(6),$CHAN0(0)
    *)
            IF RESETFLAG THEN GET(FIL);
              END;
          END;
    
    
    
      BEGIN (* CSI *)
        CSIVALUE := TRUE;
        CINDEX := 1;
        FOR RINDEX := 1 TO 4 DO
          BEGIN
        VAL := 0;
        FOR I := 1 TO 3 DO
          BEGIN
            C := DEFEXTTEXT[CINDEX];  CINDEX := CINDEX+1;
            IF (C>='А') AND (C<='З') THEN N := ORD(C)-96 ELSE
              IF (C>='A') AND (C<='Z') THEN N := ORD(C)-ORD('@') ELSE
            IF (C>='0') AND (C<='9') THEN N := ORD(C)-ORD('0')+31 ELSE
                N := 0;
            VAL := VAL*40+N;
          END;
        DEFEXT[RINDEX] := VAL;
          END;
        WITH CSIDAT DO
          BEGIN
        OFLAG1:=FALSE;  OFLAG2:=FALSE;  OFLAG3:=FALSE;
        FOR I := 1 TO INMAX DO IFLAG[I]:=FALSE;
        SWITCHCOUNT := 0;
        FOR C := '@' TO 'Z' DO
          WITH SWITCH[C] DO BEGIN
            GIVEN:=FALSE; ARGFOUND:=FALSE; ARGVALUE:=0;
          END;
        CLOSE(O1);  CLOSE(O2);  CLOSE(O3);
        FOR I := 1 TO INMAX DO CLOSE(INN[I]);
        CHANSFREE := TRUE;
        FOR I := 0 TO 8 DO IF WAITCHN(I) THEN CHANSFREE := FALSE;
        IF NOT CHANSFREE THEN
            WRITELN('CHANNELS 0..8 ARE NOT AVAILABLE FOR CSI')
          ELSE
            BEGIN
    
    (*$C    .MCALL    .CSIGEN
        .GLOBL    $KORE,    LOWSTK,    HISTK
        MOV    %6,%1            ;SET THE STACK TO
                        ;THE USR SWAP SCRATCH AREA
        MOV    %1, %0            ;
        ADD    #STR, %0        ;
        ADD    #DEFEXT,%1
        CALL    LOWSTK            ;
        MOV    %6, %4            ;
        MOV    #^O1000, @#^O46        ;
        .CSIGEN    $KORE, %1, %0        ;DECODE LINE AND OPEN FILES
        CLR    @#^O46            ;
        BCS    10$            ;ERROR OCCURED?
        MOV    (6)+,%0            ;GET COUNT OF SWITCHES
        MOV    %0,136(3)
        BEQ    6$
        BR    1$            ;
    10$:    MOV    %4, %6            ;
        CALL    HISTK            ;
    *)
    
        CSIVALUE := FALSE;
    
    (*$C
        BR    7$            ;
    1$:    MOV    (6)+,%1            ;GET THE SWITCH CHAR AND ARG FLAG
        MOV    %1,%2
        BIC    #^O177600,%2
        CMP    %2,#^O172            ;MAKE SURE THE SWITCH IS ALPHA
        BHI    4$
        CMP    %2,#^O140
        BLO    2$
        SUB    #^O40,%2
    2$:    CMP    %2,#^O132
        BHI    4$
        CMP    %2,#^O100
        BLO    4$
        SUB    #^O100,%2
    3$:    ASL    %2            ;MAKE THE SWITCH CHAR AN ARRAY INDEX
        ASL    %2
        ADD    %3,%2
        ADD    #138,%2            ;POINT TO ELEMENT OF SWITCH ARRAY
        MOVB    #1,(2)            ;SET SWITCH FOUND
        TST    %1
        BPL    5$
        MOVB    #1,1(2)            ;SET ARG FOUND
        MOV    (6)+,2(2)        ;   AND SWITCH VALUE
        BR    5$
    4$:    TST    %1
        BPL    5$
        TST    (6)+
    5$:    DEC    %0            ;COUNT DOWN A SWITCH
        BNE    1$
    6$:    MOV    %4, %6            ;
        CALL    HISTK            ;
    7$:                    ;
    *)
            FOR I := 1 TO INMAX DO
                SETOPEN(INN[I],I+2,TRUE,IFLAG[I]);
            SETOPEN(O1,0,FALSE,OFLAG1);
            SETOPEN(O2,1,FALSE,OFLAG2);
            SETOPEN(O3,2,FALSE,OFLAG3);
            END;
          END;
    CSI := CSIVALUE;
      END; (* CSI *)
    Это с дискет, которые публиковал по личной инициативе Patron.
    Архив программ для УК-НЦ, ДВК и БК.

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

  5. #195
    Veteran Аватар для Oleg N. Cher
    Регистрация
    24.08.2007
    Адрес
    Днепропетровская обл.
    Сообщений
    1,611
    Спасибо Благодарностей отдано 
    2,189
    Спасибо Благодарностей получено 
    140
    Поблагодарили
    106 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Вопрос к Хоботу. Как лучше всего хранить в тексте исходника данные спрайтов? Вот так не работает:

    Код:
    PROCEDURE PutSpr (x, y: INTEGER; spr: PROCEDURE); EXTERNAL;
    
    PROCEDURE Sprt; BEGIN /*C
      .BYTE 5, 5
      ...
    */
    END {Sprt};
    
    BEGIN
      PutSpr(100, 100, @Sprt);
    Ты как хранишь? Константными массивами? Слова или байты? Как быть, если код символа >127 ?

  6. #196
    Veteran Аватар для Oleg N. Cher
    Регистрация
    24.08.2007
    Адрес
    Днепропетровская обл.
    Сообщений
    1,611
    Спасибо Благодарностей отдано 
    2,189
    Спасибо Благодарностей получено 
    140
    Поблагодарили
    106 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Вот так в OMSI тоже не работает (это код для Pascal FAST):

    Код:
    CONST
        Queen : ARRAY [0..22] OF Integer = ($505,
        	$0060, $0406, $0260, $F066, $0F06, $31F8,
        	$C31F, $8C3B, $FDC1, $DFB8, $1FFF, $81FF, 
        	$F80F, $FF00, $FFF0, $0FFF, $007F, $E007,
        	$FE00, $7FE0, $03FC, $0000);
    
    BEGIN
      PutSpr(100, 100, @Queen);
    - - - Добавлено - - -

    Похоже, константных массивов OMSI Pascal не понимает. А вот процедурные параметры поддерживает, но с неизвестным синтаксисом. Есть какие-то ещё исходники для OMSI Pascal'я, где это может встретиться?



    Этот самый "Pascal User Manual and Report" я вроде бы нашёл, но там ничего такого нет.

  7. #196
    С любовью к вам, Yandex.Direct
    Размещение рекламы на форуме способствует его дальнейшему развитию

  8. #197
    Member
    Регистрация
    26.03.2019
    Адрес
    г. Киев, Украина
    Сообщений
    98
    Спасибо Благодарностей отдано 
    133
    Спасибо Благодарностей получено 
    51
    Поблагодарили
    26 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Может, таки, взять более адекватный инструмент для решения задачи?

    И стоит смотреть в DESS, что (какой код) генерит язык высокого уровня.

  9. #198
    Veteran Аватар для Oleg N. Cher
    Регистрация
    24.08.2007
    Адрес
    Днепропетровская обл.
    Сообщений
    1,611
    Спасибо Благодарностей отдано 
    2,189
    Спасибо Благодарностей получено 
    140
    Поблагодарили
    106 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Ну, это едва ли не самая серьёзная проблема тут. В остальном инструмент очень хороший, простой.
    С нативным Си честно не хочется заморачиваться. С каким-то недопиленным GCC тоже, тем более, Вы помогать не хотите ;-)

  10. #199
    R.I.P. Аватар для hobot
    Регистрация
    30.08.2011
    Адрес
    Зеленоград
    Сообщений
    7,161
    Спасибо Благодарностей отдано 
    2,979
    Спасибо Благодарностей получено 
    370
    Поблагодарили
    309 сообщений
    Mentioned
    13 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Oleg N. Cher Посмотреть сообщение
    Как лучше всего хранить в тексте исходника данные спрайтов?
    я никак не храню, поскольку нет движка.
    Спрайты храняться так
    в отдельном файле .MAC, имя каждого 6 уникальных символов с глобальной меткой ::
    сверху вниз, первая строка размеры спрайта, левый верхний соотв (как у экрана)
    прогоняем в OBJ

    В другом файле 1 глобальная метка
    SPRTAB:: - таблица спрайтов !!!
    ниже сверху вниз уникальные имена глобальных меток из библиотеки спрайтов.
    прогоняем в OBJ

    все наши функции - процедуры через таблицу ссылаются на спрайты (первый в таблице № 0).

    так работал утерянный движок.
    при линковке естественно все эти файлы через запятую с программой
    Архив программ для УК-НЦ, ДВК и БК.

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

  11. #200
    Veteran Аватар для Oleg N. Cher
    Регистрация
    24.08.2007
    Адрес
    Днепропетровская обл.
    Сообщений
    1,611
    Спасибо Благодарностей отдано 
    2,189
    Спасибо Благодарностей получено 
    140
    Поблагодарили
    106 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Понятно. Значит идёт обращение по номерам-индексам, а движок уже пересчитывает в адреса. Но тогда движок должен как-то знать, где лежит таблица спрайтов. Вшивать спрайты в движок это плохая идея. Думаем дальше.

    А почему движок утерянный? Есть ли игры, в которых он применялся? Раз он утерян, откуда инфа как он работал?

Страница 20 из 35 ПерваяПервая ... 161718192021222324 ... ПоследняяПоследняя

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

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

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

Похожие темы

  1. "Исходники" Turbo Pascal нужны кому ?
    от esl в разделе Программирование
    Ответов: 2
    Последнее: 19.10.2018, 11:33
  2. Продам МС5310 блок дисководов к УКНЦ+КМД УКНЦ
    от Mad Killer/PG в разделе Барахолка (архив)
    Ответов: 7
    Последнее: 19.03.2012, 11:27
  3. в розыске дисковая версия Pascal.
    от goblinish в разделе Программирование
    Ответов: 18
    Последнее: 16.08.2011, 16:30
  4. Pascal
    от Andrew771 в разделе Программирование
    Ответов: 22
    Последнее: 24.05.2011, 21:20
  5. Скопировать/вставить из/в HiSoft Pascal в эмуляторе
    от kit в разделе Программирование
    Ответов: 1
    Последнее: 05.02.2010, 15:35

Метки этой темы

Ваши права

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