User Tag List

Страница 28 из 30 ПерваяПервая ... 24252627282930 ПоследняяПоследняя
Показано с 271 по 280 из 292

Тема: Компьютер для CP/M. Формулировка ТЗ.

  1. #271
    Master Аватар для Xrust
    Регистрация
    12.04.2017
    Адрес
    г. Тольятти
    Сообщений
    907
    Спасибо Благодарностей отдано 
    204
    Спасибо Благодарностей получено 
    147
    Поблагодарили
    70 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от TomaTLAB Посмотреть сообщение
    Сподобился я тоже, и запилил тестовый стенд из платы принтера СМ6337, там и ВН59 и ВИ53 наличествует.
    Погонял Ваши примеры и убедился, что и без прерываний, и с прерываниями в том виде как у Вас (с поправкой на мое железо), ожидаемо давится и не может прожевать поток символов. Нужен буфер. И основная Ваша ошибка, что долго "сидите" в обработчике прерывания.
    Так нельзя делать, попав в прерывание нужно максимально быстро сделать необходимый минимум и выметаться оттудова.
    В проекте с ВВ51 и клавиатурой, кстати, тоже самое.
    В том примере, мной приведенном, на самом деле есть грубая ошибка. Главный цикл отсутствует. Плюс еще была аппаратная ошибка с формированием сигнала прерывания. От того и работало все загадочно и неправильно. До "потока символов" там дело не дошло, помешал мой "поток сознания", прошитый во флешку
    Надо было бы давно поправить пост, да руки не доходят. А с потерями символов я расправился аппаратным управлением. На время "пережевывания" символа я просто торможу прием. Ни одной потери символа Ни единого разрыва! (С)

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

  3. #272
    Master Аватар для TomaTLAB
    Регистрация
    09.03.2017
    Адрес
    г. Троицк
    Сообщений
    607
    Спасибо Благодарностей отдано 
    124
    Спасибо Благодарностей получено 
    63
    Поблагодарили
    47 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Xrust Посмотреть сообщение
    А с потерями символов я расправился аппаратным управлением. На время "пережевывания" символа я просто торможу прием.
    Это если есть возможность его организовать. Иногда бывает нежелательно, либо невозможно.
    Или такой вариант оправдан когда имеется жесткое ограничение по памяти под буфер. Но тогда теряется смысл прерываний, можно и софтово зарулить.
    Если есть возможность выделить буфер, то и прерывания, и процессорное время рационально используется. Можно и на передачу примерно также сделать.
    Особенно ощутимо будет на низких скоростях и коротких сообщениях размером меньше буфера.
    Какая нибудь сторонняя железяка, которая время от времени пуляет сообщениями в десяток другой символов, вроде сканера штрихкодов.
    Ну а "тормоз" приема прикрутить уже к переполнению буфера.
    Последний раз редактировалось TomaTLAB; 28.08.2017 в 15:47.

  4. #273
    Master Аватар для Xrust
    Регистрация
    12.04.2017
    Адрес
    г. Тольятти
    Сообщений
    907
    Спасибо Благодарностей отдано 
    204
    Спасибо Благодарностей получено 
    147
    Поблагодарили
    70 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

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

  5. #274
    Banned
    Регистрация
    19.01.2017
    Адрес
    г. Арзамас
    Сообщений
    2,208
    Записей в дневнике
    40
    Спасибо Благодарностей отдано 
    6
    Спасибо Благодарностей получено 
    65
    Поблагодарили
    46 сообщений
    Mentioned
    3 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Кстати, о птичках:
    http://www.sinclairzxworld.com/viewtopic.php?t=1553

  6. #275
    Master
    Регистрация
    24.05.2005
    Адрес
    г. Запорожье, Украина
    Сообщений
    992
    Спасибо Благодарностей отдано 
    571
    Спасибо Благодарностей получено 
    365
    Поблагодарили
    239 сообщений
    Mentioned
    2 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Шынни Посмотреть сообщение
    ZX-Spectrum-Next-Next грядёт походу )

    p.s. Макетная плата - АГОНЬ )

  7. #276
    Master Аватар для Xrust
    Регистрация
    12.04.2017
    Адрес
    г. Тольятти
    Сообщений
    907
    Спасибо Благодарностей отдано 
    204
    Спасибо Благодарностей получено 
    147
    Поблагодарили
    70 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Нажмите на изображение для увеличения. 

Название:	IMG_20170917_192734.jpg 
Просмотров:	154 
Размер:	77.5 Кб 
ID:	62209
    Ну вот, жизненный цикл макетки подошел к завершению. Свои задачи она выполнила и теперь ей на смену должна прийти другая, более сложная.
    Вот простейший "монитор", который я для нее написал. Работает он через последовательный порт. Его основная функция - загрузка файлов через терминал в ОЗУ и запуск программ с адреса 8000h. Кроме того имеются подпрограммы ввода и вывода. Ввод с использованием прерываний и аппаратным управлением потоком.
    Код:
    include "8085.inc"
    ;----RST 0---------------------------------------------------------------------------------------------------------
    	di
    	lxi	sp,ramtop
    	jmp	init
    	nop
    ;----RST 1---Разрешение передачи /RTS вкл-----------------------------------------------------
    	mvi	a,rxe+txen+dtr+rts
    	out	cusart
    	ret
    	nop
    	nop
    	nop
    ;----RST 2---Вывод строки [HL] в терминал---------------------------------------------------
    strout:	mov	a,m	; загрузка символа
    	ana	a	; проверка конца сообщения
    	rz
    	rst	3	; вывод символа
    	inx	h
    	jmp	strout	; к следующему символу
    ;----RST 3--Вывод символа в терминал---------------------------------------------------------
    chout:	push	psw
    sym1:	in	cusart	; загрузка слова состояния
    	ani	txrdy+dsr	; проверочная маска
    	cpi	txrdy+dsr	; проверка готовности передатчика
    	jnz	sym1	; если не готов то sym1
    	pop	psw
    	out	dusart	; вывод в порт
    	ret
    	nop
    	nop
    ;----RST 5--Вывод HEX в терминал---------------------------------------------------------------
    hexout:	push	psw
    	rrc
    	rrc
    	rrc
    	rrc
    	call	nibout
    	pop	psw
    	call	nibout
    	ret
    	nop
    	nop
    	nop
    ;----RST 7--Обработчик прерываний УСАПП------------------------------------------------
    int:	push	psw
    	mvi	a,rxe+txen+dtr
    	out	cusart	; /RTS выкл
    	in	dusart	; чтение из порта
    	sta	lastch	; сохранение символа в переменной
    	pop	psw
    	ei
    	ret
    ;------Главный цикл--------------------------------------------------------------------------------------
    loop:	hlt		; ожидание
    	lda	lastch	; последний принятый символ
    	rst	3	; вывод символа
    	cpi	6Ch	; если "L"
    	jz	sload	; то переход к загрузке
    	cpi	67h	; если "G"
    	jz	goto	; запуск программы в озу
    	rst	1	; /RTS вкл
    	jmp	loop
    ;------Загрузка через порт--------------------------------------------------------------------------
    sload:	lxi	h,loadstr	; адрес строки
    	rst	2	; вывод строки
    	lxi	h,ramp	; загрузка указателя
    	rst	1	; /RTS вкл
    sload1:	hlt
    	lda	lastch	; загружаем байт в аккумулятор
    	mov	m,a	; записываем в память
    	inx	h	; HL+1
    	rst	3	; вывод символа
    	rst	1	; /RTS вкл
    	jmp	sload1	; цикл загрузки
    ;------Запуск программы с адреса 8000h---------------------------------------------------
    goto:	lxi	h,gotostr	; адрес строки
    	rst	2	; вывод строки
    	rst	1	; /RTS вкл
    	call	8000h
    	lxi	h,endstr	; адрес строки
    	rst	2	; вывод строки
    	rst	1	; /RTS вкл
    	ret
    ;------Инициализация-----------------------------------------------------------------------------------
    init:	call	initusart
    	lxi	h,introstr	; адрес строки
    	rst	2	; вывод строки
    	ei
    	jmp	loop
    ;---Установка ВВ51 в исходное состояние-----------------------------------------------
    initusart:	xra	a
    	out	cusart
    	out	cusart
    	out	cusart
    	mvi	a,ir	; Сброс
    	out	cusart
    	mvi	a,s2400
    	out	cusart	; Установка режима порта
    	rst	1	; /RTS вкл
    	ret
    ;----печать HEX младшего полубайта----------------------------------------------------
    nibout:	ani	0Fh
    	cpi	0Ah
    	jm	nib1
    	adi	7
    nib1:	adi	30h
    	rst	3	; вывод символа
    	ret
    ;-------------------------------------Данные----------------------------------------------------------------
    introstr:	db	0dh,'Monitor nano:',0dh,00h
    loadstr:	db	0dh,'Loading:',0dh,00h
    gotostr:	db	0dh,'Go 8000h',0dh,00h
    endstr:	db	0dh,'End program.',0dh,00h
    ;--------------------Константы и указатели--------------------------------------------------------
    ramtop=	087DFh	; Верхушка свободной памяти
    ramp=	08000h	; Начало оперативной памяти
    lastch=	087E1h	; Редактируемый символ
    ;---Адреса регистров УСАПП----------------------------------------------------------------------
    dusart=	00h		; регистр данных
    cusart=	01h		; регистр команд
    ;---Режимы УСАПП--------------------------------------------------------------------------------------
    s9600=	04Eh	;9600_8_no_1
    s2400=	04Fh	;2400_8_no_1
    ;---Команды УСАПП------------------------------------------------------------------------------------
    txen=	01h	; Передатчик включен
    dtr=	02h	; Устройство готово
    rxe=	04h	; Приемник включен
    sbrk=	08h	; Прерывание передачи
    er=	10h	; Сброс ошибок приема
    rts=	20h	; Передача разрешена
    ir=	40h	; Программный сброс
    eh=	80h	; Режим Hunt
    ;---Регистр состояния УСАПП-----------------------------------------------------------------------
    txrdy=	01h	; Передатчик готов
    rxrdy=	02h	; Приемник готов
    txe=	04h	; Передача закончена
    pe=	08h	; Ошибка четности
    oe=	10h	; Ошибка переполнения
    fe=	20h	; Ошибка формата
    syndet=	40h	; Синхросимвол найден
    dsr=	80h	; Передатчик терминала готов
    Схема контроллера простейшая, включение компонентов типовое - КР580ВМ80, КР580ГФ24 с кварцем 22.1184 Мгц, КР580ВК28(38), В качестве ПЗУ используется AT28C64, начинается с адреса 0000h, ОЗУ статика КР537РУ10 2кб с адреса 8000h. "Дешифратор адреса" выполнен на ЛА3, тактовая частота процессора 2.4576 МГц подается и на тактовый вход КР580ВВ51. Поделенные на 16 при помощи ИЕ5 тактовые импульсы подаются на /TxC /RxC ВВ51, обеспечивая скорость порта 2400 и 9600.

  8. #277
    Member
    Регистрация
    18.01.2010
    Адрес
    Крым
    Сообщений
    136
    Спасибо Благодарностей отдано 
    2
    Спасибо Благодарностей получено 
    22
    Поблагодарили
    17 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Как то сурово всё - rst 2, rst 3, которые комментировать нужно... Какие то коды 0dh, 0ah, 30h. Неужто нагляднее нельзя? Нафига тогда макро люди придумали? Вывод текста тоже как-то простенько. Разве нельзя типа, PrintStr db CR, LF,'Hello',0, чем придумывать метки, а затем долго глядеть, а что ж там по этой метке? Или это стиль ТОГО времени? Не 80-х даже.))

  9. #278
    Master Аватар для Xrust
    Регистрация
    12.04.2017
    Адрес
    г. Тольятти
    Сообщений
    907
    Спасибо Благодарностей отдано 
    204
    Спасибо Благодарностей получено 
    147
    Поблагодарили
    70 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от M80 Посмотреть сообщение
    Как то сурово всё - rst 2, rst 3
    Ну не я суровые интеловские мнемоники придумывал А в своем проекте никто не мешает более благозвучные макросы написать. Здесь же это скорее усложнит понимание.

    Цитата Сообщение от M80 Посмотреть сообщение
    Разве нельзя типа
    Не все сразу. Я же не программист, откуда у меня стиль?

  10. #279
    Member
    Регистрация
    18.01.2010
    Адрес
    Крым
    Сообщений
    136
    Спасибо Благодарностей отдано 
    2
    Спасибо Благодарностей получено 
    22
    Поблагодарили
    17 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Понятно, что "кто как хочет, так и...", но что мешает стремиться к лучшему? rst не несёт никакой смысловой информации, поэтому либо нужно помнить что оно делает, либо комментировать. Определив макрос, Вы уже можете вместо rst писать что то более осмысленное. Ну и в дальнейшем, если захотите изменить rst на другой (или на call, или на группу команд), просто меняете макро определения, а не все rst в тексте. Это простые примеры и это Ваше дело, применять их или нет. Макросредства ведь придумали для улучшения жизни. И с ними очень много чего можно намутить. И кроме наглядности, реально меньше текста нужно вводить. Но это так, мысли вслух.))

  11. #280
    Master Аватар для Xrust
    Регистрация
    12.04.2017
    Адрес
    г. Тольятти
    Сообщений
    907
    Спасибо Благодарностей отдано 
    204
    Спасибо Благодарностей получено 
    147
    Поблагодарили
    70 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    M80, видно, что вы нифига не педагог. Надо сначала похвалить, а потом указывать на недостатки Иначе никто не захочет стремиться к лучшему

Страница 28 из 30 ПерваяПервая ... 24252627282930 ПоследняяПоследняя

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

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

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

Похожие темы

  1. Посоветуйте компьютер для сборки!
    от Demige в разделе Для начинающих
    Ответов: 16
    Последнее: 17.02.2012, 18:07
  2. Куплю FDD для Atari XL/XE или в комплекте компьютер+дисковод
    от Нrundel в разделе Барахолка (архив)
    Ответов: 0
    Последнее: 22.01.2007, 13:06
  3. Лучший компьютер.
    от Shiru в разделе Зарубежные компьютеры
    Ответов: 12
    Последнее: 22.05.2005, 14:01

Ваши права

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