User Tag List

Показано с 1 по 10 из 587

Тема: Периферия "ОрионПро"

Древовидный режим

Предыдущее сообщение Предыдущее сообщение   Следующее сообщение Следующее сообщение
  1. #11

    Регистрация
    14.08.2006
    Адрес
    Владимир
    Сообщений
    4,581
    Спасибо Благодарностей отдано 
    64
    Спасибо Благодарностей получено 
    112
    Поблагодарили
    97 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Denn Посмотреть сообщение
    Никакой документации по программированию нет (или у кого-то есть?). Есть чужая утилита работы с этими часами, там никаких откровений, и с ней глюк тот же самый. Как понять задумку авторов?
    В 90-х я запускал ВИ1 по инструкции из Радиоежегодника-89 (легко прогугливается в djvu), в т.ч. и начальную программу использовал сначала именно ту что публиковалась там, только перевел в мнемоники Z80, она потом "обросла мясом", перетекла в драйвер для CP/M и т.п. Но инициализация и режимы скорее всего остались "как в учебнике", и описываемой проблемы я не припоминаю. Кстати, режимы используются другие чем например в VC Ориона-ПРО (например режим BCD-счета, возможно и другие). А проблема на всех экземплярах ВИ1 воспроизводится?
    Вот как оно в коде инициализируется:

    Скрытый текст


    Код:
    ADDRVI  EQU     0F760H   ;                           
    
    ; инициализация апп. часов
    	LD      BC,270AH      ; ПИШЕМ В РЕГ. А    Q=32768 Гц   SQW=512 Гц
    	call    VIset
    	LD      BC,860BH      ; ЗАПРЕТИТЬ СЧЕТ, ДВОИЧНЫЙ ФОРМАТ
    	call    VIset
    	LD      C,0        ; УСТАНОВИТЬ СЧЕТЧИКИ:
    	LD      A,(SEC)
    	LD      B,A        ; СЕКУНД
    	call    VIset
    	LD      C,2
    	LD      A,(MIN)
    	LD      B,A        ; МИНУТ
    	call    VIset
    	LD      C,4
    	LD      A,(HOUR)
    	LD      B,a        ; ЧАСОВ
    	call    VIset
    	LD      BC,060Bh      ; РАЗРЕШИТЬ СЧЕТ
    ;
    ; Set byte to 512VI1 CMOS. Inp: C=register(address), B=value
    ;
    VIset:
    SetVI128:
    	ld	(ADDRVI),bc   
    	ret
    [свернуть]


    И далее так используется:

    Скрытый текст


    Код:
    ; получить дату в формате ДД:ММ:ГГ
    IGETDT: ld      hl,BUFFER+17
    	ld      de,BUFFER+20
    	ld      bc,17
    	lddr
    	CALL    GETDAT0
    	ld      hl,DAY
    	ld      de,BUFFER
    	ld      bc,3
    	ldir
    	ld      a,3
    	jp      ADDNBF
    
    GETDAT0:LD      A,(VI1)         ; 0 - программ., 1 - 512ВИ1
    	OR      A
    	RET     Z               ; выход, если прогр. часы
    GETDAT1:LD      C,0Ah
    	call    VIget
    	RLCA
    	JR      C,GETDAT1       ; цикл, если идет обновление
    	LD      C,7
    	call    VIget
    	ld      (DAY),a
    	ld      C,8
    	call    VIget
    	ld      (MON),a
    	ld      C,9
    	call    VIget
    	ld      (YEAR),a
    	ret
    
    
    ; установить дату в формате ДД:ММ:ГГ
    ISETDT: ld      hl,PARBUF
    	ld      de,DAY
    	ld      bc,3
    	ldir
    	LD      A,(VI1)         ; 0 - програм., 1 - 512ВИ1
    	OR      A
    	RET     Z
    ; установка даты апп. часов
    SETDAT1:LD      C,0Ah
    	call    VIget
    	RLCA
    	JR      C,SETDAT1       ; цикл, если идет обновление
    	LD      C,7        ; УСТАНОВИТЬ СЧЕТЧИКИ:
    	LD      A,(DAY)
    	LD      B,A        ; дней месяца
    	call    VIset
    	LD      C,8
    	LD      A,(MON)
    	LD      B,A        ; месяцев
    	call    VIset
    	LD      C,9
    	LD      A,(YEAR)
    	LD      B,a        ; лет
    	jp      VIset
    ;
    ; Get byte from 512VI1 CMOS. Inp: C=register(address), Out:A=value
    ;
    VIget:
    GetVI128:
    	ld	a,c
    	ld	(ADDRVI),a
    	ld	a,(ADDRVI+1)
    	ret
    [свернуть]

    Из того что еще вспоминается: никак не работало тогда корректное определение сбоя регистров часов по пропаданию питания (в ВИ1 есть спец бит в каком-то регистре). Не работало как описано: то нормально определит, то глюк, так и не понял почему. И в итоге стали тупо писать в некоторые ячейки пользовательского ОЗУ ВИ1 некий хеш, и при старте ОС проверять его как флаг того что данные валидны. Т.е. в реальной ВИ1 не всё может быть как оно в теории в даташите.

    Что забавно: работы с ВИ1 начал только потому, что случайно купил этот Радиоежегодник (в 89г. у меня еще не было Ориона, я тогда тупо скупал в книжном все интересные журналы по радиотехнике, и должен заметить, во Владимире их было очень мало, даже приходилось посидеть в библиотеке в охотку) и также случайно году в 93-94 когда Орион у меня уже был, в магазе что-то очень задешево продавались сами ВИ1.
    Последний раз редактировалось Error404; 01.08.2017 в 13:28.
    Лучше сделать и жалеть, чем не сделать и жалеть.

    Некоторые из моих поделок тут: https://github.com/serge-404

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

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

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

Похожие темы

  1. Ответов: 17
    Последнее: 26.12.2015, 23:22
  2. Ответов: 51
    Последнее: 11.08.2014, 10:40
  3. Ответов: 0
    Последнее: 15.08.2010, 14:38
  4. Ответов: 6
    Последнее: 20.11.2007, 11:29
  5. Ответов: 0
    Последнее: 26.06.2005, 11:52

Ваши права

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