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

User Tag List

Страница 2 из 2 ПерваяПервая 12
Показано с 11 по 18 из 18

Тема: Прерывания IM2 в Специалисте на КР580

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

    По умолчанию

    Цитата Сообщение от jerri Посмотреть сообщение
    barsik, чем вам не нравится rst#38 и DI при старте?
    Почему не нравится? Нравится и поначалу так и сделаю. Просто возникла красивая идея, я и поделился.

    Вариант когда прерывания по RST можно использовать только в конкретной программе, которая грузится на адрес 0000, подставляя свой обработчик прерывания на адрес RST.

    А вариант с прерываниями по CALL, т.е с ВН59 (или с его более простой имитацией на буфере) позволяют всегда иметь включённые прерывания при любых прогоняемых программах. Тогда можно на прерываниях подключить и Kempston-Mouse и с клавиатурой избежать потери нажатий. Пригодится, когда выполняется обслуживание линии связи с IBM PC в реальном времени, а с 0 надо загружать другие программы.

    Во вложении тест прерываний. Замеряет число тактов CPU между прерываниями. Это позволяет проверить точно ли в эмуляторе реализован период 50 Гц. Для нахождения периода надо умножить число тактов на период клока CPU.
    Вложения Вложения
    • Тип файла: rar INT.rar (689 байт, Просмотров: 51)

  2. #12
    Guru Аватар для jerri
    Регистрация
    01.03.2005
    Адрес
    Samara
    Сообщений
    4,746
    Спасибо Благодарностей отдано 
    256
    Спасибо Благодарностей получено 
    265
    Поблагодарили
    199 сообщений
    Mentioned
    12 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от barsik Посмотреть сообщение
    Почему не нравится? Нравится и поначалу так и сделаю. Просто возникла красивая идея, я и поделился.

    Вариант когда прерывания по RST можно использовать только в конкретной программе, которая грузится на адрес 0000, подставляя свой обработчик прерывания на адрес RST.

    А вариант с прерываниями по CALL, т.е с ВН59 (или с его более простой имитацией на буфере) позволяют всегда иметь включённые прерывания при любых прогоняемых программах. Тогда можно на прерываниях подключить и Kempston-Mouse и с клавиатурой избежать потери нажатий. Пригодится, когда выполняется обслуживание линии связи с IBM PC в реальном времени, а с 0 надо загружать другие программы.

    Во вложении тест прерываний. Замеряет число тактов CPU между прерываниями. Это позволяет проверить точно ли в эмуляторе реализован период 50 Гц. Для нахождения периода надо умножить число тактов на период клока CPU.
    на данный момент прерывания никак не используются специалистом
    соответственно нет и программ использующих прерывания.
    соответственно чтобы не было проблем нельзя использовать старые программы с включенными прерываниями
    иначе могут быть неприятности различного плана.

    для использования прерывания должны быть написаны новые программы.
    а там уже и адрес #0038 имеет смысл. и прочее
    С уважением,
    Jerri / Red Triangle.

  3. #13
    Banned
    Регистрация
    05.10.2016
    Адрес
    г. Санкт-Петербург
    Сообщений
    1,080
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    5
    Поблагодарили
    5 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от jerri Посмотреть сообщение
    На данный момент... нет и программ использующих прерывания. Соответственно, чтобы не было проблем, нельзя, использовать старые программы с включенными прерываниями, иначе могут быть неприятности
    Нет, не могут. Потому что старые программы Специалиста уже проверены на отсутствие кода DI, так как, если встречается команда DI, то при наличии журнальной схемы 8 цветов, ОЗУ целиком отключается и компьютер улетает.

    Так что, если сделать прерывания по CALL (обработчик в области, которую не использует ни одна программа), то при этом не возникнет конфликта ни с одной программой.

    Как Вы не поймёте, что именно для того, чтобы не было проблем с старыми программами из-за прерываний и нужен контроллер прерываний, чтобы поиметь прерывания с CALL, а не с RST.
    Последний раз редактировалось barsik; 12.03.2018 в 19:47.

  4. #14
    Guru Аватар для jerri
    Регистрация
    01.03.2005
    Адрес
    Samara
    Сообщений
    4,746
    Спасибо Благодарностей отдано 
    256
    Спасибо Благодарностей получено 
    265
    Поблагодарили
    199 сообщений
    Mentioned
    12 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    barsik, что произойдет если в момент забора графики со стека придет прерывание?

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

    Цитата Сообщение от barsik Посмотреть сообщение
    Нет, не могут. Потому что старые программы Специалиста уже проверены на отсутствие кода DI, так как, если встречается команда DI, то при наличии журнальной схемы 8 цветов, ОЗУ целиком отключается и компьютер улетает.

    Так что, если сделать прерывания по CALL (обработчик в области, которую не использует ни одна программа), то при этом не возникнет конфликта ни с одной программой.

    Как Вы не поймёте, что именно для того, чтобы не было проблем с старыми программами из-за прерываний и нужен контроллер прерываний, чтобы поиметь прерывания с CALL, а не с RST.
    ну вот
    только хотелось восхититься гениальностью авторов Специалиста и вдруг оказалось что какой то "альтернативно одаренный" инженер вместо колес прибил двумя гвоздями к велосипеду три пирамиды.

    что там такое с DI/EI?
    С уважением,
    Jerri / Red Triangle.

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

    По умолчанию

    Цитата Сообщение от jerri Посмотреть сообщение
    barsik, что произойдет если в момент забора графики со стека придет прерывание?
    Ничего не произойдёт. Данные ведь передаются выше текущей позиции стека, а при CALL или RST по прерыванию будет испорчено 2 байта ниже, где не хранится ничего полезного.

    Цитата Сообщение от jerri Посмотреть сообщение
    что там такое с DI/EI ?
    Да Вы и без того знаете, об этом писалось множество раз. Но повторю.

    В Специалисте А.Волкова было всего 4 цвета полученные установкой всего двух 565 РУ3-их на имеющиеся РУ3-тьи вторым этажом. На входы этих двух РУ3-тих подавались два свободных бита с ППА клавиатуры.

    Таким образом регистр цвета, из которого цвет автоматически переписывается в ОЗУ, находится внутри ППА. Эти два бита на каждый видеобайт давали 4 цвета для цвета INK, цвет PAPER всегда чёрный.

    А в августе 1990 изобретатели Иванов и Медведков решили удвоить часло цветов, напаяв вторым этажом ещё одну РУ3. Но свободных битов в ППА уже не было. Тогда они решили поиметь этот бит в ППА, за счёт того, что бит PC4 освободили от функции формирования сигнала начальный пуск НП. А в качесте сигнала начальный пуск они решили задействовать выход INTE. Для отключения НП, одной из первых команд КР580 выполняет команду EI и ОЗУ включается убирая ПЗУ из всего адресного пространства. Тем самым они освободили PC4 для целей цвета (и цветов стало 8), но истратили прерывания на цели начального сброса машины.

    Потому, если при 8-ми цветной схеме цветовой приставки включить прерывания, то из адресного пространства совсем исчезает ОЗУ и компьютер улетает. Хуже того, если на Специалисте не имеющем 8-ми цветов запустить 8-ми цветную программу, то компьютер тоже улетает.

    Это же идиотизм и поэтому совершенно справедливо считать этих авторов дибилами. Предельно глупо делать такие доработки, что приводят к полному улету цветных программ на монохромной базовой конструкции.

    Но по-крайней мере для прерываний это легко исправляется, если схему сброса сделать по схеме от РК86. Ставится RS-триггер, который взводится по /RESET, а сбрасывается сигналоv /WR процессора.

    Тогда до первой записи CPU во всём адресном пространстве включено ПЗУ и процессор читает с адреса 0 первую команду JMP C000 и уходит на C000. Программа на C000 четвёртой командой записывает байт 82 в ППА+3, а возниший при этом сигнал /WR сбрасывает триггер, включая ОЗУ. RS-триггер легко сделать из двух вентилей из 155 ЛА3 или из половинки 155 ТМ2.
    Последний раз редактировалось barsik; 12.03.2018 в 23:25.

  6. #16
    Guru Аватар для jerri
    Регистрация
    01.03.2005
    Адрес
    Samara
    Сообщений
    4,746
    Спасибо Благодарностей отдано 
    256
    Спасибо Благодарностей получено 
    265
    Поблагодарили
    199 сообщений
    Mentioned
    12 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от barsik Посмотреть сообщение
    Ничего не произойдёт. Данные ведь передаются выше текущей позиции стека, а при CALL или RST по прерыванию будет испорчено 2 байта ниже, где не хранится ничего полезного.
    нет
    та графика на которую указывает SP будет убита

    а поскольку прерывание будет приходить абы где
    то скоро вся графика игры будет выпилена полностью
    и заменена адресом возврата.

    так что там с DI/EI?
    С уважением,
    Jerri / Red Triangle.

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

  8. #17
    Banned
    Регистрация
    05.10.2016
    Адрес
    г. Санкт-Петербург
    Сообщений
    1,080
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    5
    Поблагодарили
    5 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от jerri Посмотреть сообщение
    нет, та графика на которую указывает SP будет убита
    Каким образом использование стека подпрограммой может принести хоть какой-то вред? Что же программист полный идиот, чтобы ставить стек на область в которой хранятся нужные данные?

    Может быть Вы имеете в виду случай когда стеком делается ролик экрана. В мониторе Орлова ролик тормозной без стека, а вот в ленинградском мониторе ролик делается стеком. Естественно, когда стек используют не по назначению, то прерывания запрещают.
    Последний раз редактировалось barsik; 12.03.2018 в 23:27.

  9. #18
    Guru Аватар для jerri
    Регистрация
    01.03.2005
    Адрес
    Samara
    Сообщений
    4,746
    Спасибо Благодарностей отдано 
    256
    Спасибо Благодарностей получено 
    265
    Поблагодарили
    199 сообщений
    Mentioned
    12 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

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

    вред будет нанесен если ктото по незнанию внесет изменения в программу
    например включит прерывания или воткнет свою собственную процедуру прерывания
    во время освежения экрана через стек

    вот вам кусок кода для вывода графики на экран.
    правда под спектрум и Z80 но нам это без разницы совершенно

    данный код работает с включенными прерываниями и специальным обработчиком прерывания
    если внезапно там окажется другой обработчик то вся графика будет минут за 10 полностью уничтожена.

    Код:
    rend_line
    	dup	32
    	push	hl	;11
    	ld	l,(hl)	;6
    	ld	h,a	;bg_font/2048	;7	
    	add	hl,hl	;11	
    	add	hl,hl	;11
    	add	hl,hl	;11
    	ld	c,(hl)	;7
    	inc	l	;4
    	ld	b,(hl)	;7
    	inc	l	;4
    	ld	sp,hl	;6
    	ld	l,e	;4
    	ld	h,d	;4	
    
    	dup	3	
    	ld	(hl),c	;7
    	inc	h	;4	
    	ld	(hl),b	;7
    	inc	h	;4
    	pop	bc	;10
    	edup
    			;96
    
    	ld	(hl),c	;7
    	inc	h	;4	
    	ld	(hl),b	;7
    
    	ld	sp,ix	;10
    	pop	hl	;10
    	inc	e	;4
    	inc	l	;4
    ;			;236
    	edup
    rend_size	equ	($-rend_line)/32
    	org	$-1
    
    	ld	bc,-31
    	add	hl,bc
    	jp	rend_line

    Может быть Вы имеете в виду случай когда стеком делается ролик экрана. В мониторе Орлова ролик тормозной без стека, а вот в ленинградском мониторе ролик делается стеком. Естественно, когда стек используют не по назначению, то прерывания запрещают.
    в том числе и ролик экрана
    когда программист что-то пишет он твердо знает обычно где и как будет работать его программа
    освежение экрана через стек дает значительное ускорение по сравнению с другими способами.
    С уважением,
    Jerri / Red Triangle.

Страница 2 из 2 ПерваяПервая 12

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

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

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

Похожие темы

  1. Разработка системы на КР580 серии
    от Viktor2312 в разделе Разное
    Ответов: 45
    Последнее: 21.10.2015, 23:58
  2. КР580 - 2,5 Мгц only?
    от alex-eller в разделе Разное
    Ответов: 88
    Последнее: 09.05.2015, 08:41
  3. IM2 в TR-DOS
    от VELESOFT в разделе Софт
    Ответов: 1
    Последнее: 02.02.2013, 19:17
  4. im2 и call 3d13
    от moroz1999 в разделе Программирование
    Ответов: 36
    Последнее: 20.01.2007, 13:00
  5. IM2, вектор прерывания
    от Jukov в разделе Программирование
    Ответов: 18
    Последнее: 20.09.2006, 09:32

Ваши права

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