User Tag List

Показано с 11 по 20 из 124

Тема: Загрузка с магнитофона на БК-0011(М)

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

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

    Регистрация
    25.11.2015
    Адрес
    г. Москва
    Сообщений
    192
    Спасибо Благодарностей отдано 
    12
    Спасибо Благодарностей получено 
    16
    Поблагодарили
    14 сообщений
    Mentioned
    2 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Для выравнивания веток лучше всего использовать не NOP, а такие же команды как используются в длинной ветке, а ненужные результаты записывать в Rtemp. Ну а команду сохранения меняем на команду загрузки, только указатель не увеличиваем. Данному коду требуется, чтобы длина короткой полуволны была больше, чем время выполнения от SET1 до RTS, а вместе с пачкой BIT/BEQ была перекрыта и длинная полуволна(иначе будет непонятно где середина устойчивого приёма). Можно для начала сделать и со счётчиком, правда там придётся делать его загрузку, проверку и условный переход, что несколько снизит максимальную скорость приёма. Вообще для выравнивания времени выполнения кода можно сделать следующее:
    1) подать на вход сигнал с некоторой частотой(с ним будем сравнивать время выполнения кода)
    2) дождаться начала положительного импульса(это нужно будет делать для каждого измерения)
    3) выполнить эталонную ветку заменив условные переходы на безусловные
    4) скопировать 256 раз состояние входа в память, после чего вывести полученную зебру на экран
    5) дождаться нового импульса и выполнить другой код
    6) прочитать 256 раз состояние входа и вывести рядом с первым
    7) по сдвигу между выведенными полосками мы сможем определить насколько совпадает время их выполнения
    8) добавляем или убираем команды и повторяем эксперимент

    PS: можно вообще дождаться импульс, после чего 256 раз прогонять код и записывать по 1 значению входа, тогда вид зебр станет одинаковым при идеальной подгонке кода, иначе чем ближе к концу, тем больше будет расползаться.

    PPS: Пришла тут мысль, что лучше использовать кодирование 3 длинных/3 коротких, там всего 20 комбинаций, но если выкинуть 011011011, 001001001 и еще парочку, то соотношение 0 и 1 во всех случаях будет 4/5, и код несколько упрощается:
    Код:
    LDDAT:	MOV 1,Rdata	; флаг для отлова окончания слова
    LDIDX:	MOVB -4,Ridx	; 6 флагов для отлова окончания индекса
    WAIT0:	MOV Tune,Rcnt	
    INC0:	DEC Rcnt
    	BIT
    	BNE INC0
    	ASL Rdata	; всего здесь слово будет сдвинуто 3 раза
    	ASLB Ridx	; индекс двигаем 2 раза чтобы не двигать в длинной ветке
    	ASLB Ridx
    	ASL Rcnt		; добавляем едриницу в предпоследний бит
    	ADCB Ridx
    	ASL Rcnt
    	ADCB Ridx	; add NOPS
    WAIT1:	MOV Tune,Rcnt
    INC1:	DEC Rcnt
    	BIT
    	BEQ INC1
    	ASL Rcnt		; устанавливаем младший бит индекса
    	ADC Ridx
    	BMI WAIT0	; add NOPS если индекс еще не закончился
    	ASL Rdata	; 4й раз сдвигаем данные и проверяем не закончилось ли слово
    	BCC BADD
    	ADD (Table+Ridx),Rdata ; сохраняем если закончилось
    	MOV Rdata,(Rbuf)++
    	DEC Rlen	
    	BNE LDDAT
    	RTS
    BADD:	ADD (Table+Ridx),Rdata
    	BR LDIDX	; add NOPS
    Если нам не требуется фиксированная скорость, и вход позволяет принимать данные при соотношении H и L равном 1 к 2 или наоборот, можно всё существенно упростить, причём ветка с сохранением получается достаточно короткой:
    Код:
    	MOV 1,Rdata	
    	MOV Tune,Rcnt	
    WAIT0:	DEC Rcnt		; ждём первый и нечётные биты
    	BIT
    	BNE WAIT0
    	ASL Rdata	
    	ASL Rcnt		
    	MOV Tune,Rcnt
    	ADC Rdata	
    	ASL Rdata	; сдвигаем здесь, чтобы не двигать когда придёт последний бит
    	BCC WAIT2	; add NOPS
    WAIT1:	DEC Rcnt		; ждём последний бит
    	BIT
    	BEQ WAIT1
    	ASL Rcnt	
    	MOV Tune,Rcnt
    	ADC Rdata
    	MOV Rdata,(Rbuf)++
    	MOV 1,Rdata	
    	DEC Rlen	
    	BNE WAIT0
    	RTS
    WAIT2:	DEC Rcnt		; ждём чётные биты, кроме последнего
    	BIT
    	BEQ WAIT2
    	ASL Rcnt	
    	MOV Tune,Rcnt
    	ADC Rdata
    	BR WAIT0	; add NOPS
    Последний раз редактировалось blackmirror; 13.04.2019 в 22:20.

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

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

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

Похожие темы

  1. Ремонт БК-0011
    от RTeh в разделе БК-0010/0011
    Ответов: 4
    Последнее: 25.10.2013, 13:24
  2. Документация БК-0011
    от pilgrim в разделе БК-0010/0011
    Ответов: 5
    Последнее: 28.04.2012, 20:09
  3. ленин - 1 загрузка с магнитофона
    от sevol в разделе Ленинград
    Ответов: 15
    Последнее: 10.07.2010, 22:49
  4. Загрузка с магнитофона Spectrum +2A
    от Andrey_Ak в разделе Разный софт
    Ответов: 9
    Последнее: 13.11.2009, 16:14

Ваши права

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