User Tag List

Страница 72 из 157 ПерваяПервая ... 686970717273747576 ... ПоследняяПоследняя
Показано с 711 по 720 из 1564

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

  1. #711

    Регистрация
    27.05.2009
    Адрес
    СССР, Новосибирск
    Сообщений
    5,850
    Спасибо Благодарностей отдано 
    9
    Спасибо Благодарностей получено 
    289
    Поблагодарили
    233 сообщений
    Mentioned
    30 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию По мотивам недавней темы...

    Пример выполнения определенного кода при любом выходе из программы (.EXIT, CTRL/C, ?MON-F-Ошибка):
    Код:
    $E16LS	==:	316				;СМЕЩЕНИЕ ДО ТАБЛИЦЫ EMT 340-357
    $JOBNU	==:	322				;ТЕКУЩИЙ НОМЕР ЗАДАНИЯ
    
    E6.EXI	=:	20				;ХУК ДЛЯ .EXIT
    
    	.MCALL	.PRINT				;СИСТЕМНЫЕ МАКРОСЫ
    
    START::	MOV	@#$SYPTR,R5			;ПОЛУЧАЕМ АДРЕС RMON
    	ADD	R5,JOBNU			;СОХРАНЯЕМ АДРЕС JOBNUM
    	ADD	$E16LS(R5),R5			;ПОЛУЧАЕМ АДРЕС ТАБЛИЦЫ EMT
    	MOV	E6.EXI(R5),R0			;ПОЛУЧАЕМ АДРЕС ПОДПРОГРАММЫ
    	ADD	R5,R0				;...ОБРАБОТКИ .EXIT
    	MOV	R0,E6EXI			;СОХРАНЯЕМ
    	MOV	#EHOOK,R0			;УСТАНАВЛИВАЕМ ХУК
    	SUB	R5,R0				;...
    	MOV	R0,E6.EXI(R5)			;...ДЛЯ .EXIT
    
    	JMP	R0				;КОМАНДА, ВЫЗЫВАЮЩАЯ ПАДЕНИЕ
    
    EHOOK::	TST	@(PC)+				;ФОНОВОЕ ЗАДАНИЕ АКТИВНО?
    JOBNU::	.WORD	$JOBNU				;
    	BNE	10$				;НЕТ
    ;+
    ;ЗДЕСЬ ПОМЕЩАЕМ ЛЮБОЙ КОД КОТОРЫЙ ДОЛЖЕН ВЫПОЛНЯТЬСЯ ПРИ ЛЮБОМ ВЫХОДЕ
    ;ИЗ ФОНОВОГО ЗАДАНИЯ. ДЛЯ .EXIT ИМЕЕТ ЗНАЧЕНИЕ РАВЕН R0 НУЛЮ ИЛИ НЕТ.
    ;ПОСКОЛЬКУ МЫ ЛОВИМ ТОЛЬКО СВОЙ ОСТАНОВ, ПРОСТО СЧИТАЕМ, ЧТО ЕМУ НЕ НУЖНО
    ;БЫТЬ РАВНЫМ НУЛЮ (НЕ ВЫПОЛНЯТЬ .HRESET ПО ВЫХОДУ).
    ;-
    	.PRINT	#EXMSG				;ПЕЧАТАЕМ СООБЩЕНИЕ
    	MOV	@#$SYPTR,R0			;ПОЛУЧАЕМ АДРЕС RMON
    	ADD	$E16LS(R0),R0			;ПОЛУЧАЕМ АДРЕС ТАБЛИЦЫ EMT
    	MOV	E6EXI,-(SP)			;УБИРАЕМ
    	SUB	R0,@SP				;...ХУК
    	MOV	(SP)+,E6.EXI(R0)		;...ДЛЯ .EXIT
    10$:	JMP	@(PC)+				;ВЫПОЛНЯЕМ .EXIT
    E6EXI::	.BLKW					;
    
    EXMSG:	.ASCIZ	<15><12>/*** BYE BYE ***/<15><12>
    
    	.END	START
    Код:
    .EX ATEXIT
    
    ?MON-F-Trap to 10 001042
    
    *** BYE BYE ***
    
    
    .
    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. #712

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

    По умолчанию

    Цитата Сообщение от shattered Посмотреть сообщение
    С небольшой правкой (stricmp -> strcasecmp) собирается и не под visual studio :-)
    Мне по-другому пришлось заменить для VS2008:
    Код:
    #define stricmp _stricmp
    А так вообще MACRO11.exe собралось и работает, и походу тот же объектный файл даёт.

    Ещё бы LINK под современную систему получить.

  3. #713

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

    По умолчанию

    А можно глупый вопрос? Новые игры для УКНЦ кто-то делает сейчас или все что есть из игр это то что написано было во времена УКНЦ?

  4. #714

    Регистрация
    08.10.2005
    Адрес
    Москва
    Сообщений
    14,403
    Спасибо Благодарностей отдано 
    1,703
    Спасибо Благодарностей получено 
    2,223
    Поблагодарили
    875 сообщений
    Mentioned
    69 Post(s)
    Tagged
    1 Thread(s)

    По умолчанию

    Цитата Сообщение от DJs3000 Посмотреть сообщение
    А можно глупый вопрос? Новые игры для УКНЦ кто-то делает сейчас или все что есть из игр это то что написано было во времена УКНЦ?
    Похоже, что пока никто.

    Хотя, некоторые грозились, вплоть до SuperMario (благо, палитра позволяет).

  5. #715

    Регистрация
    11.09.2009
    Адрес
    Москва
    Сообщений
    4,806
    Спасибо Благодарностей отдано 
    9
    Спасибо Благодарностей получено 
    148
    Поблагодарили
    79 сообщений
    Mentioned
    16 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Интересный способ применяется в ранних версиях Unix для получения указателя на структуру ( заголовок буфера ) из любого указателя на любой член структуры ( на текущую позицию в буфере ).

    Для этого нужно, чтобы размер буфера и его выравнивание в памяти были кратны степени 2 ( например: буфера по 8 байтов, выровненные в памяти по границе 010 ) - тогда простое стирание соответствующего количества младших битов ( 07 ) у любого указателя на содержимое буфера даёт указатель на заголовок буфера.

    Такой подход позволяет обслуживать связанные списки без хранения отдельных указателей на элементы списка. В тех случаях, когда нужен указатель на заголовок текущего элемента списка - достаточно любого указателя на его содержимое.

  6. #716

    Регистрация
    12.07.2006
    Адрес
    г. Киев, Украина
    Сообщений
    2,147
    Спасибо Благодарностей отдано 
    25
    Спасибо Благодарностей получено 
    95
    Поблагодарили
    82 сообщений
    Mentioned
    2 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Patron Посмотреть сообщение
    Интересный способ применяется в ранних версиях Unix для получения указателя на структуру ( заголовок буфера ) из любого указателя на любой член структуры ( на текущую позицию в буфере ).

    Для этого нужно, чтобы размер буфера и его выравнивание в памяти были кратны степени 2 ( например: буфера по 8 байтов, выровненные в памяти по границе 010 ) - тогда простое стирание соответствующего количества младших битов ( 07 ) у любого указателя на содержимое буфера даёт указатель на заголовок буфера.

    Такой подход позволяет обслуживать связанные списки без хранения отдельных указателей на элементы списка. В тех случаях, когда нужен указатель на заголовок текущего элемента списка - достаточно любого указателя на его содержимое.
    Жесть, ну вот как гуру обычно изьясняются публично не заботясь особенно о том что обычные люди, типа меня, читают форум и ничего понять не могут из этого? Неужели так сложно по человечески обьяснить? Ну как может быть связный список без связей?

    Если я правильно понял то суть вопроса в том, что обычно для вычисления адресса элемента массива нужно умножить длинну элемента массива на индекс элемента и прибавить к адресу начала массива. Эта задача может быть ускоренна если сами массивы распологать начиная с адрессов кратным степеням 2 и использовать длинну элемента массива тоже кратную степеням 2-ки, так как в этом случае операция умножения превращается "в сдвиг в лево". Кроме того из любого указателя на адрес внутри любого элемента можно будет легко вычислить адрес начала елемента наложив на него маску (соответствующую длинне 1 элемента массива) операцией AND.
    Последний раз редактировалось bigral; 23.01.2015 в 19:04.

  7. #717

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

    По умолчанию

    bigral, а мне вот интересно 010 и 07 - в сообщении Patrona, это восьмиричные
    числа?
    Архив программ для УК-НЦ, ДВК и БК.

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

  8. #718

    Регистрация
    11.09.2009
    Адрес
    Москва
    Сообщений
    4,806
    Спасибо Благодарностей отдано 
    9
    Спасибо Благодарностей получено 
    148
    Поблагодарили
    79 сообщений
    Mentioned
    16 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от bigral Посмотреть сообщение
    как может быть связный список без связей
    Список со связями, но нигде в программе нет ни одного отдельного указателя ни на один из заголовков элементов списка ( только указатели на хранимое в списке содержимое ). Когда надо добавить или исключить элемент списка - у любого из указателей на содержимое нужного элемента обнуляются младшие биты и он превращается в указатель на заголовок этого элемента списка.

  9. #719

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

    По умолчанию

    Цитата Сообщение от form Посмотреть сообщение
    Исходники LINK от RT-11 V5.7...
    Чтиво очень интересное, но с виду тут нехватает модулей LNKEM и LNKLB1 для полноты картины. Можете посмотреть, есть ли они там поблизости? возможно это не исходники а просто объектные модули.

  10. #720

    Регистрация
    27.05.2009
    Адрес
    СССР, Новосибирск
    Сообщений
    5,850
    Спасибо Благодарностей отдано 
    9
    Спасибо Благодарностей получено 
    289
    Поблагодарили
    233 сообщений
    Mentioned
    30 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от nzeemin Посмотреть сообщение
    нехватает модулей LNKEM и LNKLB1 для полноты картины. Можете посмотреть, есть ли они там поблизости?
    В архиве.
    Вложения Вложения
    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

Страница 72 из 157 ПерваяПервая ... 686970717273747576 ... ПоследняяПоследняя

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

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

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

Похожие темы

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

Ваши права

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