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

User Tag List

Страница 83 из 135 ПерваяПервая ... 798081828384858687 ... ПоследняяПоследняя
Показано с 821 по 830 из 1345

Тема: Программирование на УКНЦ как?

  1. #821
    Guru Аватар для form
    Регистрация
    27.05.2009
    Адрес
    СССР, Новосибирск
    Сообщений
    5,501
    Спасибо Благодарностей отдано 
    2
    Спасибо Благодарностей получено 
    92
    Поблагодарили
    77 сообщений
    Mentioned
    13 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от nzeemin Посмотреть сообщение
    Как сделать так чтобы секция DSECT могла использоваться в программе как и сейчас -- т.е. чтобы под неё выделялась память, но чтобы она НЕ включалась в готовый SAV-файл?
    В RT-11 наверное никак - там линкер автоматом включает в SAV все, что декларировалось - независимо от использования (в отличие от RSX к примеру - там метка сама по себе еще не основание считать, что это часть файла). Как вариант - сделать пустую секцию в конце программы, а после вызывать .SETTOP для проверки места или в XM мапить окно.
    PDP-11/83, Электроника МС0511 (УК-НЦ), DECserver 90M
    Q-Bus: H9278-A, DLV11-J, DZQ11, DHV11, DELQA-M, LPV11, CQD-420/TM, DRV11
    PMI: KDJ11-BF, MSV11-JE
    VT220, CM7209

  2. #822
    Guru
    Регистрация
    02.03.2015
    Адрес
    г. Караганда, Казахстан
    Сообщений
    2,017
    Спасибо Благодарностей отдано 
    16
    Спасибо Благодарностей получено 
    119
    Поблагодарили
    99 сообщений
    Mentioned
    11 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от nzeemin Посмотреть сообщение
    Секция DSECT -- это переменные и массивы, которые нужны уже только после запуска.
    Сейчас вся секция DSECT -- это нули, и она включена в SAV-файл, что собственно только расходует лишние блоки на диске.
    Да, помнится, после ассемблера Системы-360 мне тоже сильно не хватало аппарата фиктивных секций - не столько для экономии места, сколько для манипулирования разнообразными таблицами, которые расположены не здесь в программе, а где-то в другом месте. В Системе-360 все просто: описал таблицу в отдельном DSECT'е, занес ее адрес в какой-то регистр, сделал для этого регистра USING на начало этой фиктивной секции и пиши имена полей из таблицы, как будто это твои переменные.

    А здесь - изба фигвам. Регистров мало (у Системы-360 их 16), привязка какой-то секции к регистру не предусмотрена, такой стиль программирования (очень удобный, кстати) здесь просто не предусмотрен.

    Для работы с таблицами я, помнится, сочинил какую-то макрокоманду, которая позволяла компактно описать таблицу, присваивая именам ее полей значения смещений от ее начала, после чего пользовал их в явном виде (типа MOV NAME1(R5),R0, здесь NAME1 - имя какого-то поля из таблицы, начальный адрес которой лежит в R5), что явно лучше, чем MOV 12(R5),R0. А вот в том виде, в каком эта задача поставлена, она не решается вообще...
    Кто мешает тебе выдумать порох непромокаемый? (К.Прутков, мысль № 133)

  3. #823
    Banned
    Регистрация
    05.07.2010
    Адрес
    Москва
    Сообщений
    1,070
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    1
    Поблагодарили
    1 сообщение
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Удаление в знак протеста против действий MM
    Последний раз редактировалось MacBuster; 27.01.2019 в 09:04. Причина: Удаление в знак протеста против действий MM

  4. #824
    Guru Аватар для form
    Регистрация
    27.05.2009
    Адрес
    СССР, Новосибирск
    Сообщений
    5,501
    Спасибо Благодарностей отдано 
    2
    Спасибо Благодарностей получено 
    92
    Поблагодарили
    77 сообщений
    Mentioned
    13 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от hobot Посмотреть сообщение
    CL.SYS только в составе собранных систем попадается в архиве.
    Что-то подзабыл про CL. Выложил сюда.
    Последний раз редактировалось form; 05.04.2017 в 14:13.
    PDP-11/83, Электроника МС0511 (УК-НЦ), DECserver 90M
    Q-Bus: H9278-A, DLV11-J, DZQ11, DHV11, DELQA-M, LPV11, CQD-420/TM, DRV11
    PMI: KDJ11-BF, MSV11-JE
    VT220, CM7209

  5. #825
    Banned
    Регистрация
    05.07.2010
    Адрес
    Москва
    Сообщений
    1,070
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    1
    Поблагодарили
    1 сообщение
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Удаление в знак протеста против действий MM
    Вложения Вложения
    Последний раз редактировалось MacBuster; 27.01.2019 в 09:05. Причина: Удаление в знак протеста против действий MM

  6. #826
    Оператор ДВК Аватар для hobot
    Регистрация
    30.08.2011
    Адрес
    Зеленоград
    Сообщений
    6,077
    Спасибо Благодарностей отдано 
    1,462
    Спасибо Благодарностей получено 
    148
    Поблагодарили
    129 сообщений
    Mentioned
    6 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    MacBuster, посмотрел! Красиво и цвет радует - фиолетовый не обычный для УК-НЦ по определению, правда при рендеринге и расширению приближённому к реальному монитору планетку плющит сбоков и по Y растягивает до
    яйцевидной формы.
    Архив программ для УК-НЦ, ДВК и БК.

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

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

  8. #827
    Banned
    Регистрация
    05.07.2010
    Адрес
    Москва
    Сообщений
    1,070
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    1
    Поблагодарили
    1 сообщение
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Удаление в знак протеста против действий MM
    Последний раз редактировалось MacBuster; 27.01.2019 в 09:05. Причина: Удаление в знак протеста против действий MM

  9. #828
    Guru
    Регистрация
    30.11.2015
    Адрес
    г. Самара
    Сообщений
    3,331
    Спасибо Благодарностей отдано 
    71
    Спасибо Благодарностей получено 
    134
    Поблагодарили
    112 сообщений
    Mentioned
    4 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от nzeemin Посмотреть сообщение
    Как сделать так чтобы секция DSECT могла использоваться в программе как и сейчас -- т.е. чтобы под неё выделялась память, но чтобы она НЕ включалась в готовый SAV-файл?
    Поздно увидел... Ну, может ещё пригодится. Я делал примерно так:
    Код:
    .MACRO $COMMON NAME=<.$$$$.>
      .PSECT 'NAME', RW, D, OVR, GBL
    .ENDM $COMMON
     
    .MACRO $CODE
      .PSECT $CODE$, I, RO
    .ENDM $CODE
     
    .MACRO $IDATA
      .PSECT $IDATA, D, RW
    .ENDM $IDATA
     
    .MACRO $PDATA
      .PSECT $PDATA, D, RO
    .ENDM $PDATA
     
    .MACRO $ASCII
      .PSECT $ASCII, D, RO
    .ENDM $ASCII
     
    .MACRO $VBOT
      .PSECT .99997, D, RW
    .ENDM $VBOT
     
    .MACRO $VIRT
      .PSECT .99998, D, RW
    .ENDM $VIRT
     
    .MACRO $VTOP
      .PSECT .99999, D, RW
    .ENDM $VTOP
     
    .MACRO $USER
    .ENDM $USER
     
    .MACRO VINIT
      .SAVE
         $VIRT
      .IF NDF ..VB.
        ..VB. =: .
        ..VC. = ^O<0>
        .MACRO $VSET
          .BLKW
          .MACRO $VSET
          .ENDM $VSET
        .ENDM $VSET
      .IFF
        .IF NE ..VC.
          ..VB. =: .
          .WORD ..VC.
          ..VC. = ^O<0>
        .ENDC
        .MACRO $VSET
        .ENDM $VSET
      .ENDC
      .RESTORE
    .ENDM VINIT
     
    .MACRO V.EVEN
      ..VC.=<..VC.+^O<1>>&^C<1>
    .ENDM V.EVEN
     
    .MACRO V.ODD
      ..VC.=<..VC.&^C<1>>+^O<1>
    .ENDM V.ODD
     
    .MACRO V.BLKW LAB LEN=<1>
      VALLOC LAB LEN WORDS
    .ENDM V.BLKW
     
    .MACRO V.BLKB LAB LEN=<1>
      VALLOC LAB LEN BYTES
    .ENDM V.BLKB
     
    .MACRO VALLOC LAB LEN UNIT
      .SAVE
        $VIRT
        LAB =: ..VB.+..VC.
        .IF NB LEN
          .IF IDN <LEN>, <BYTE>
            $VSET
            ..VC.=..VC.+^O<1>
            .RESTORE
            .MEXIT
          .ENDC
          .IF IDN <LEN>, <WORD>
            .IIF NE ..VC.&^O<1> .ERROR ; ODD count
            V.EVEN
            $VSET
            ..VC.=..VC.+^O<2>
            .RESTORE
            .MEXIT
          .ENDC
          ..VM.=^O<0>
          .IIF IDN <UNIT>, <BYTES> ..VM.=^O<1>
          .IIF IDN <UNIT>, <WORDS> ..VM.=^O<2>
          .IF EQ ..VM.
            .ERROR ; Invalid units - 'UNIT'
            .RESTORE
            .MEXIT
          .ENDC
          .IF EQ ..VM.-^O<2>
            .IIF NE ..VC.&^O<1> .ERROR ; ODD count
            V.EVEN
          .ENDC
          $VSET
          ..VC.=<'LEN'>*..VM.+..VC.
        .ENDC
      .RESTORE
    .ENDM VALLOC
     
    .MACRO $ORDER
      .SAVE
        $CODE
        $ASCII
        $PDATA
        $IDATA
        $USER
        $VBOT
        $VIRT
        $VTOP
     
        VINIT
      .RESTORE
    .ENDM $ORDER
     
    .MACRO ADJUST
      .SAVE
        $PDATA
        .EVEN
        $IDATA
        .EVEN
        $ASCII
        .EVEN
        $VIRT
        V.EVEN
      .RESTORE
    .ENDM ADJUST
    Библиотечные функции

    Код:
    ; 00009
    .INCLUDE /LB:[MACROS]MACROS.MAC/
     
    MODULE VM0, VER=03, LIBR=YES, COMM=<Подпрограммы виртуальной памяти>
     
      .IIF DF R$$T11 FROM SYSMAC IMPORT .SETTOP
      .IIF DF R$$11M FROM SYSMAC IMPORT GREG$S, EXTK$S
     
      EXPORT QUALIFIED VTOP, INIVM, CLRVM, CLRMEM
     
      ;+
      ;
      ; INIVM - Инициализация системы вирт. памяти
      ;   Вход:
      ;   Выход:
      ;     VTOP - Первый неиспользуемый байт памяти
      ;
      ;
      ; CLRVM - Обнуление вирт. памяти
      ;   Вход:
      ;   Выход:
      ;
      ;
      ; CLRMEM- Обнуление области памяти
      ;   Вход:
      ;     R1 - Стартовый адрес
      ;     R2 - Длина в байтах
      ;   Выход:
      ;
      ;-
     
      $IDATA
        VTOP: .BLKW
     
      $VBOT
        BOT:
     
      $VTOP
        TOP:
          MOV  #240, INIVM     ; !!!   NOP  !!!
          MOV  #207, INIVM+2   ; !!! RTS %7 !!!
     
          MOV  #BOT, VTOP
          PUSH R0
          MOV  #TOP, R0
          SUB  #BOT, R0
          IF RESULT IS EQ THEN
            POP  R0
            RETURN
          END
          .SAVR1
          ASR  R0
          MOV  #BOT, R1
          CLR  R2
          THRU R0
            ADD  (R1)+, R2
          END
          .IF DF R$$T11
            ADD  #TOP-2, R2
            .SETTOP R2
            IF R2 HIS R0 THEN
              ADD  #2, R2
              MOV  R2, VTOP
            END
          .ENDC
          .IF DF R$$11M
            ADD  #TOP, R2
            MOV  #TOP, R3           ; получить размер задачи в памяти
            GREG$S , R3             ; от Executive'а
            MOV  G.RGRS(R3), R3
            ASH  #6, R3             ; в байты
            SUB  R2, R3
            NEG  R3
            ADD  #100, R3           ; выравнивание
            ASH  #-6, R3            ; в кол-во 100(8) байтных блоков
            EXTK$S R3               ; расширить
            MOV  #TOP, R3           ; получить новый размер задачи
            GREG$S , R3             ; от Executive'а
            MOV  G.RGRS(R3), R3     ; в R1
            ASH  #6, R3             ; в байты
            CMP  R3, R2             ;
          .ENDC
          POP R0
          RETURN
     
      PROCEDURE INIVM
      BEGIN
        JMP TOP
      END INIVM
     
      PROCEDURE CLRVM
      BEGIN
        PUSH <R1, R2>
        MOV #BOT, R1
        MOV VTOP, R2
        SUB R1, R2
        ADD #2, R2
        CALL CLRMEM
        POP <R2, R1>
        RETURN
      END CLRVM
     
      PROCEDURE CLRMEM
      BEGIN
        PUSH <R1, R2>
     
        IF #1 SET.IN R1 THEN
          CLRB (R1)+
          DEC R2
        END
     
        ASR R2
        ROL -(SP)
     
        THRU R2
          CLR (R1)+
        END
     
        ROR (SP)+
        IF RESULT IS CS THEN
          CLRB (R1)+
        END
     
        POP <R2, R1>
        RETURN
      END CLRMEM
     
    END VM0
     
    .END

    Пример использования

    Код:
      ;
      ;  MODULE VM0
      ;
     
      PROCEDURE  INIVM    EXTERNAL
      PROCEDURE  CLRVM    EXTERNAL
    
      $VIRT
     
        V.BLKW ELDEST REST
        V.BLKW ELD    NCODES
     
        V.BLKB CHARS  REST
        V.BLKB CHAR   NCODES
          V.EVEN
    
      ...
    
      PROCEDURE MAIN
     
      BEGIN
        CALL INIVM
        ON.ERROR THEN
          PRINT$ #PRFX, #'$
          PRINT <Не хватает памяти>, #'+
          EXIT$S
        END
        LOOP
          CALL CLRVM
          ...
        END
      END MAIN
    - - - Добавлено - - -

    Ещё мне память подсказывает, что вроде начиная с какой версии MACRO-11 появилась .VSECT, с аналогичным поведением (место в готовой проге не выделяется), но.. надо вспоминать - так ли это и как работать...

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

    Или это было с прицелом на FORTRAN с VIRTUAL объявлением под RSX...

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

    Не, похоже такое мог делать только компилятор с FORTRAN. MACRO послал

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

    Цитата Сообщение от AFZ Посмотреть сообщение
    А вот в том виде, в каком эта задача поставлена, она не решается вообще...
    Никогда не говори Никогда

  10. #829
    Оператор ДВК Аватар для hobot
    Регистрация
    30.08.2011
    Адрес
    Зеленоград
    Сообщений
    6,077
    Спасибо Благодарностей отдано 
    1,462
    Спасибо Благодарностей получено 
    148
    Поблагодарили
    129 сообщений
    Mentioned
    6 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от MacBuster Посмотреть сообщение
    Подскажите, пожалуйста,
    В разделе УК-НЦ, в папке Alphaprog, на образе sysimage.dsk
    (ух! какая легенда чуете? как в сказке да?) есть исходник программы
    (C) by Alex_K
    SCAN .MAC 3 12-Sep-1994
    - сканкоды кнопок УК-НЦ читает вроде бы, но там комментариев нет,
    программа написана на МАКРО-11 естественно ) Эти дискеты прилагались
    к ранним версиям UKNCBTL когда-то )
    Архив программ для УК-НЦ, ДВК и БК.

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

  11. #830
    Member
    Регистрация
    14.06.2017
    Адрес
    г. Воронеж
    Сообщений
    186
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    2
    Поблагодарили
    2 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    добрый вечер.
    подскажите как сделать или есть ли шаблончик для вывода на экран содержимого двух ячеек памяти или регистров в бинарном виде, а следом в строке в О виде.
    чтобы как то так:
    регистр1, ячейка1 0110100001101010 64152
    регистр2, ячейка2 1110100011111111 164377

Страница 83 из 135 ПерваяПервая ... 798081828384858687 ... ПоследняяПоследняя

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

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

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

Похожие темы

  1. Программирование на Эмуляторе. Возможно ли это?
    от Toxic в разделе Программирование
    Ответов: 10
    Последнее: 20.01.2008, 19:20
  2. Программирование Altera и JTAG
    от Mikka_A в разделе Unsorted
    Ответов: 7
    Последнее: 18.01.2008, 09:07
  3. Программирование и софтмейк на NES
    от Splinter в разделе Nintendo
    Ответов: 7
    Последнее: 30.06.2006, 04:31

Ваши права

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