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

User Tag List

Страница 8 из 15 ПерваяПервая ... 456789101112 ... ПоследняяПоследняя
Показано с 71 по 80 из 147

Тема: Компьютер "Кристалл 2"

  1. #71
    Banned
    Регистрация
    01.12.2010
    Адрес
    г. Санкт-Петербург
    Сообщений
    1,657
    Записей в дневнике
    21
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    2
    Поблагодарили
    1 сообщение
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    ага IDA Pro

  2. #72
    Banned
    Регистрация
    01.12.2010
    Адрес
    г. Санкт-Петербург
    Сообщений
    1,657
    Записей в дневнике
    21
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    2
    Поблагодарили
    1 сообщение
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Доработал прошивку, добавил обработку esc-последовательности перемещающую курсор. Теперь Тетрис от ЮТ-88 (и ряд других программ) запускается.

    Я разобрался с системными переменными. Там оказалось 6 байт неиспользуемого пространства. А мне как раз был нужен один байт для обработки esc-последовательностей. (Да и несколько переменных можно было использовать без последствий в собственных целях.)

    Код:
    		org 0F7C0h
    
    defCursorAddr:	ds 2	; Адрес курсора по умолчанию
    loadErrorPtr:	ds 2	; Указатель на loadError. Запускается в случае ошибки загрузки программы с магнитофона.
    vinxru_nocursor:ds 1	; ПАТЧ. Отключение отбражения курсора, если FF
    vinxru_escFlag:	ds 1	; ПАТЧ. Обработка esc-последовательности устаналивающей положение курсора
    tapeFormat:	ds 1	; Формат записи на магнитофон: 0-собственный, FF-РК86 (Изменяется директивой УС+S)
    unknown_3:	ds 1	; Инициализируется значением 3 и не используется
    forCmdO:	ds 1	; Длина имени введенная в директиве O (используется только директивой O)
    charAtCursor:	ds 1	; Символ находящийся под курсором
    cursorAddr:	ds 2	; Адрес курсора в видеопамяти
    outputTapeDely:	ds 1	; Скорость записи на магнитофон
    inputTapeDelay:	ds 1	; Скорость загрузки с магнитофона
    forInputTape:	ds 1	; Используется только функцией загрузки с магнитофона. Содержит 0 или FF
    cmdLineLastChr:	ds 2	; Функция inputString заносит сюда адрес последнего символа в строке
    lastJmp:	ds 2	; Используется только директивой J. Она заносит сюда первый аргумент, если агрумент не указан, то использует это значение.
    		ds 4    ; НЕ ИСПОЛЬЗУЕТСЯ
    forDirL:	ds 2	; Используется только директивой L. Она заносит сюда первый аргумент, если агрумент не указан, то использует это значение.
    cmd_param3:	ds 2	; 1 параметр (Заполняется фунукуией parseParams и директивой I)
    cmd_param2:	ds 2	; 2 параметр
    cmd_param1:	ds 2	; 3 параметр
    cmdLine:	ds 32	; Командная строка 32 байта.
    Патч вот

    Код:
    vinxru_esc:	; Переход в зависимости от ESC
    		ld      a, (vinxru_escFlag)
    		dec     a
    		ld      a, c
    		jp      m,  esc_step0
    		jp      z,  esc_step1
    		jp      po, esc_step2
    esc_step3:	; Шаг 3
    		sbc     a, 20h 
    		ld      e, a
    		xor	a
    		ld	d, a
    		add	hl, de    
    		; Выход
    esc_ret0:	xor	a    
                    jp	esc_ret4
    ;----------------------------------------------------------------------------
    esc_step0:	; Шаг 0
    		cp    1Bh
                    jp    nz, esc_none
                    ld    a, 1
                    jp    esc_ret4
    ;----------------------------------------------------------------------------
    esc_none:	cp	1Fh		; удаленный оригинальный код
    		jp	z, clearScreen	; удаленный оригинальный код
    		jp	putChar_er	; переход на оригинальный код
    ;----------------------------------------------------------------------------
    esc_step1:	; Шаг 1
    		cp      59h ; 'Y'
    		jp      nz, esc_ret0
    		ld      a, 2
    		jp      esc_ret4
    ;----------------------------------------------------------------------------
    esc_step2:	; Шаг 2
    		and    1Fh
    		ld    l, a        ; h-будет обрезано ниже
    		add    hl, hl
    		add    hl, hl
    		add    hl, hl
    		add    hl, hl
    		add    hl, hl
    		add    hl, hl
    		ld      a, 4
    ; ---------------------------------------------------------------------------
    esc_ret4:	ld (vinxru_escFlag), a
    		; На всякий случай. Если изменить положение курсора в 
    		; середине esc-последовательности, то будет баг.
    		ld a, h
    		and 07h
    		or (VIDEO_MEM>>8)&~7
    		ld h, a
    		; ***
                    jp saveCursorAddr
    И целиком исходники, компилятор, скомпилированная прошивка во вложении.

    Надо бы еще добавить все стандартные точки входа РК86. Все необходимые функции в прошивке присутствуют, только нет точек входа.

    И еще сделать отключение курсора, а то он в играх закрывает изображение.
    Вложения Вложения
    Последний раз редактировалось vinxru; 30.04.2012 в 01:14.

  3. #73
    Banned
    Регистрация
    01.12.2010
    Адрес
    г. Санкт-Петербург
    Сообщений
    1,657
    Записей в дневнике
    21
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    2
    Поблагодарили
    1 сообщение
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    2 ИСПРАВЛЕНИЕ ОШИБКИ

    Еще одна ошибка, из за которой визуально-некорректно работает удаление в консоли. Вместо перемещения курсора влево (код 8), в консоль выводилась псевдографика (код 3)
    ROM:F919 ld a, 3
    заменил на
    ROM:F919 ld a, 8

    3 ДОРАБОТКА ДЛЯ СОВМЕСТИМОСТИ С ПРОГРАММАМИ РК86

    Директива X отключает и включает отображение курсора. (Например, игра Бармен со включенным курсором не запустится вообще).

    ---------- Post added at 15:22 ---------- Previous post was at 15:05 ----------



    Бармен запустился Вот этой последовательностью команд:

    УС+T <- Включает режим записи на магнитофон РК-86
    УС+R <- Включает режим очистки экрана РК-86
    X <- Отключает курсор
    R <- Загружает с автоопределением скорости.

    Выложил прошивку.
    Последний раз редактировалось vinxru; 30.04.2012 в 14:35.

  4. #74
    Banned
    Регистрация
    01.12.2010
    Адрес
    г. Санкт-Петербург
    Сообщений
    1,657
    Записей в дневнике
    21
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    2
    Поблагодарили
    1 сообщение
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    4 Функция вывода символа (F809) портит регистр A. Например, из за этого не работал Пекмен.

    5 Расширил точки входа. Функция инициализации перенесена в конец ПЗУ (на её месте теперь точки входа). Изменена одна команда в стандартной функции сканирования клавиатуры для того, что бы сделать сканирование без ожидания (F81B).

    Функция загрузки с магнитофона (F824) возвращает расчетный CRC, а не считанный с ленты. Вообще поведение функций загрузки (F824) и сохранения (F827) будeт сильно отличаться от РК86.

    Остальные точки входа работают стандартно.
    Последний раз редактировалось vinxru; 30.04.2012 в 01:16.

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

    По умолчанию

    6 Теперь компьютер пищит при выводе в консоль символа с кодом 7. Место в прошивке кончилось, поэтому пришлось пожертвовать функцией F824 загрузка программы с магнитофона. Её никто все равно не использует.

    7 При очистке экрана курсор теперь устанавливается в верхний левый угол.

    Прошивку выложил.

    Игр на ней работает уже много. CHESS2.RKR, CIRCUS.RKR, KALAH.RKR, KRESTNO.RKR, RENDZU.RKR, REVERSI2.RKR, RIKOSHET.RKR, SP_GAMES.RKR, TETRIS1.RKR, TETRIS4.RKR... дальше пока не смотрел.

    Основная проблема - это высота экрана в 32 символа. Многие игры очищают экран 25-ю переводами строк и верхние 5 строк при этом не очищаются.

    ---------- Post added at 00:57 ---------- Previous post was at 00:36 ----------

    И да. Клавиши ЗБ (аналог Backspace) у этого компьютера нет. Вместо ЗБ там стоит клавиша подчеркивания. А функцию удаления выполняет стрелка влево, она возвращает код 8.

    И для сравнения, эта клавиша _ реагирует на шифт и контрол. А клавиши управления курсором, ввод, пробел не реагируют.
    Последний раз редактировалось vinxru; 02.05.2012 в 11:01.

  6. #76
    Banned
    Регистрация
    01.12.2010
    Адрес
    г. Санкт-Петербург
    Сообщений
    1,657
    Записей в дневнике
    21
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    2
    Поблагодарили
    1 сообщение
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Спаял плату. Не хватает только ерунды (двух разъемов, нескольких конденсаторов, резисторов, диодов, переменника и КТ315).



    Разъемы:
    1) 2 контакта - Сброс
    2) 2 контакта - Выход звука
    3) 2 контакта - Выход видео
    4) 34 контакта - Клавиатура + магнитофон + неиспользуемые 4 бита порта ВВ55 под расширение
    5) 40 контактов - Системная шина
    6) 4 контакта - Питание
    Последний раз редактировалось vinxru; 02.05.2012 в 11:05.

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

  8. #77
    Banned
    Регистрация
    01.12.2010
    Адрес
    г. Санкт-Петербург
    Сообщений
    1,657
    Записей в дневнике
    21
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    2
    Поблагодарили
    1 сообщение
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Воткнул кварц на 16 Мгц (пиксель клок 8 Мгц), получившийся видеосигнал распознался монитором. Точно измерить частоту строк не могу, так как в синхросигнале почему то находится символ-клок. Из за этого и полосы на мониторе. Возможно коротыш.



    Причем, сначала полосы были черные на белом фоне. А потом стали белые на черном фоне.
    Последний раз редактировалось vinxru; 03.05.2012 в 01:26.

  9. #78
    Banned
    Регистрация
    01.12.2010
    Адрес
    г. Санкт-Петербург
    Сообщений
    1,657
    Записей в дневнике
    21
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    2
    Поблагодарили
    1 сообщение
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    3 забытых соединения в схеме. 15 оборванных дорожек. 1 ошибка в ПЗУ.

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

  10. #79
    Banned
    Регистрация
    01.12.2010
    Адрес
    г. Санкт-Петербург
    Сообщений
    1,657
    Записей в дневнике
    21
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    2
    Поблагодарили
    1 сообщение
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Судя по тому, что к D4 подключена логическая единица, ширина символа 7 пикселей.



    Так как сдвиг регистра происходит с фиксированной частотой 8 Мгц. Он не может быстрее сдвигаться никак. Первый такт на выходе лог. единица, второй такт из ПЗУ и т.д. Следовательно, что бы увидеть символ целиком, должно быть 7 тактов на символ.

    Но счетчик считает только до 6. На схеме не использован вывод счетчика D2, что бы организовать сравнение с семью. И вообще, элементов не хватает.

    Или подбирать конденсатор с точностью до пикофарада, что бы организовать деление на 7 (что крайне извращенно), либо в схеме ошибка.

  11. #80
    Guru
    Регистрация
    26.02.2010
    Адрес
    Запорожье
    Сообщений
    2,171
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    0
    Поблагодарили
    0 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    по "оригинальной схеме" вообще не сильно понятно откуда берутся сигналы 8,9,10
    .

Страница 8 из 15 ПерваяПервая ... 456789101112 ... ПоследняяПоследняя

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

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

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

Похожие темы

  1. Ответов: 179
    Последнее: 28.03.2018, 08:30
  2. Ответов: 13
    Последнее: 24.06.2014, 14:22
  3. Ответов: 0
    Последнее: 15.08.2010, 14:38
  4. Ответов: 27
    Последнее: 19.12.2009, 18:49
  5. Ответов: 0
    Последнее: 26.06.2005, 11:52

Ваши права

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