-
- ? Lasoft / Excess team
- 19.09.2018 23:24
Назим тестирует Insult'ом, если Insult пашет все части, особенно 19-ая с шахматкой, также проверить зайца 90 минут, то значит с БК всё в порядке и искать надо уже в чтении по секторам. Похоже БК нужны новые тесты )
Вкратце у меня с с 90-ых годов БК11М, так вот у меня никогда не работал заяц 90 минут и шахматка ( 19 часть insult от caroline ), я ещё помню расстраивался.. типа бракованная какая-то БКшка, пару лет назад мы перепаяли вп1-037 с Адамом и очудо, всё заработало, а щас вот от перегрева
думаю может какие кондёры посмотреть, поставить доп радиаторы на вм1 и вп1-037, спиртом всё прочистить, может где окислилось.. бк-шке хз.. больше 20 лет ) но работает!
- ? Lasoft / Excess team
- 29.08.2018 00:21
Всем привет, вам действительно нужно чтобы демы в МК-ДОС запускались? В принципе они все в районе 1 Мб, кроме Bad Apple.
На самом деле посекторного чтения нигде нет ( Happy New DiHalt, e-Bun, Odnazhdy ), везде используется 160004, просто подчитка идёт между прерываниями.
¤
Можно попробовать и адаптацию под дисковод сделать ( но там придётся пересмотреть концепцию, не во всех есть свободная память для предзагрузки), надо в общем подумать, хочется просто новые работы делать.
¤
Напомните программу assign ( которая переводит любой логический диск мк доса в диск A или B и запускает ), если можно, с исходниками..
Также давно хочется адаптировать Technological Dreams под винчестер. Она читает на ниазком уровне с диска перед шариками.
- ? Lasoft / Excess team
- 19.08.2018 17:06
0:TST (R0) ; ждём пока таймер дотикает до нуля
BNE 0
1:TST (R0) ; ждём пока не пробьёт ноль
BEQ 1 ; конечно же вот так
¤
не очень удобный форум ( можно тут как-то редактировать сообщение? или система "нипель" ? )
- ? Lasoft / Excess team
- 19.08.2018 17:05
прошу прощения, в коде выше несколько ошибок
¤
1.конечно же не BR 0, а BR FRAME_LOOP
2.запуск таймера не CLRB @#177662, а CLRB (R5)
¤
3.в качестве эксперимента, пробовал ещё вот так:
0:TST (R0) ; ждём пока таймер дотикает до нуля
BNE 0
1:TST (R0) ; ждём пока не пробьёт ноль
BEQ 0
такой финт тоже пробовал...
- ? Lasoft / Excess team
- 19.08.2018 16:51
Да, может быть кому-нибудь будет интересно:
R0 - 200
R5 - 177663
¤
как я уже говорил, 8 команд MOVB R0,(R5) выполняются ровно за одну строку ( БК0011М, 4 Mhz, обычная память ), для справки на 6 Mhz также в обычном памяти - получается 12 колонов, 8 из них видимы на экране ( 4 "обратный ход луча" )
но если например одну из команд сделать CLRB (R5), то она выполнится быстрее чем MOVB R0,(R5)
CLRB (R5) по сути включает 0-ой экран и 0-ую палитру
¤
Да, ещё замечено, что экран и палитры переключаются не одновременно, вначале переключается палитра, а через 8 пикселей переключается экран, можете проверить, пока думаем тоже как заюзать данную возможность )
- ? Lasoft / Excess team
- 19.08.2018 16:42
> А ты насколько точно хочешь поймать луч?
¤
Если видел нашу дему "Однажды" то мы ловим до пикселя ), а переключений на одной строке может быть максимум 8 ( 6 попадает в видимую область, 2 как бы за пределами экрана )
¤
> Напоминаю, время исполнения MOV R0,R0 -- 2 слова пикселей.
¤
Это не правда )
R0 = 200+N палитры ( смотри выше исходник )
R5 - 177663
например команда MOVB R0,(R5) - их ровно 8 за одну строку отрисовки кадра, причём две из них не видны на экране ( в идеальном случае конечно же, начало необязательно самый левый пиксель строки ), так что переключение грубо в районе 40 пикселей? команда MOV R0,R0 не может быть быстрее в 20 раз, чем MOVB R0,(R5)
В деме "Однажды" (логотип) - получилось 8 колонок ( 6 из них на экране, 2 как бы за пределами ), и четыре кадра свдига начала переключения, там у меня рассчитанные задержки, а теперь я хочу выходить на нужную область на экране через системный таймер, чтобы я мог пока луч бежит, обсчитывать какой-то
эффект, а потом в нужный мне сравниться с таймером и включить экран/палитру, понимаете?
¤
> Для команд работы с памятью ещё хуже, время дрожит, так как видеконтроллер и проц работают асинхронно. Так что можно надеяться только поймать с точностью до строки. А для этого играться с вычислением точного момента не нужно.
¤
Выше ответ, точность до 8 колонок я уже сделал, а строку мы ловили в "Электробулке"
¤
> Впрочем, способ есть. Но кривой, так как будет неконтролируемое смещение, зависящее от конкретного экземпляра БК.\
> ...
¤
код я погляжу, спасибо, может быть CMP вместо TST творит чудеса
- ? Lasoft / Excess team
- 19.08.2018 16:26
> Потому что частота таймера = частота процессора / 128.
¤
ну тогда в чём не прав Зальцман? ты с чем-то был не согласен, но сам же противоречишь, не потроллить ради, а просто не совсем тебя понимаю, объясни пожалуйста
¤
> И самый быстрый один тик таймера происходит за 128 тактов процессора, и поэтому никогда не будет возможно поймать переход, если не использовать 0-тактовую память. При 0-тактовом ОЗУ, которое не зависит от ВП1-037, можно точно подобрать команды, т.к. их время выполнения в тактах известно.
> ВЕ таймер нужно запускать дважды, из-за глюка первого перехода через 0 после подачи питания.
> Т.е. запустить таймер, остановить, запустить повторно. Или просто дать ему покрутиться с малым периодом, потом задать нужный и начать использовать.
¤
Ещё раз объясню, я смог поймать точно, но в пределах одного запуска БК, всё чётко, не плавает, луч отлавливается каждый кадр, в нужном мне месте, если выключаем БК и включаем, то луч может отлавливаться теперь уже в другом месте ( до 10-ти вариантов ), и опять же на каждом кадре ровно в том месте.
Посмотрите Однажды - там переключение луча идёт 8 раз за строку.
¤
> А синхронизироваться лучше по прерыванию 50Гц. Потому что, когда оно происходит луч находится всегда в определённой позиции.
¤
и это тоже не совсем так, бывает сбивка ( при включении питания - 2 варианта у меня получилось, причём правильный вариант в 80% случаев наверно ), а то что я пишу про системный таймер, разумеется он работает в паре с кадровым
¤
> Т.е. запускать таймер в прерывании, тогда его отсчёт будет совпадать с ходом луча в каждом кадре, не будет плавать.
¤
Лучше приведу код, чтобы было понятно
¤
; Исходные данные
; 0-ой экран ( 5 страница ) - пустой
; 1-эй экран ( 6 страница ) - полностью залита синим цветом ( 52525o )
...
MOV #177663,R5
MOV #200+12.,R1 ; 1 экран + 12-ая палитра ( red )
MOV #200+1.,R2 ; 1 экран + 1-ая палитра ( yellow )
MOV #0,R3 ; 0 экран, 0 палитра ( black )
¤
MOV #TICK,@#100
CLRB @#177662 ; запускаем кадровый таймер
FRAME_LOOP:
WAIT
0: TST (R0)
BNE 0
MOVB R1,(R5) ; включаем жёлтый цвет, 8 команд дают ровно одну линию
MOVB R1,(R5)
MOVB R1,(R5)
MOVB R1,(R5)
MOVB R1,(R5)
MOVB R1,(R5)
MOVB R1,(R5)
MOVB R1,(R5) MOVB R2,(R5) ; включаем красный цвет, также рисуем одну линию 8-ю командами
MOVB R2,(R5)
MOVB R2,(R5)
MOVB R2,(R5)
MOVB R2,(R5)
MOVB R2,(R5)
MOVB R2,(R5)
MOVB R2,(R5) MOVB R3,(R5) ; выключаем манипуляции и оставляем чёрный цвет на экране
BR 0
TICK:
MOV #177710,R0
MOV #175,@#177706 ; start value
MOV #1,@#177712 ; copy value to timer
MOV #32,@#177712 ; start
0: CMP #174,(R0) ; попробовать засинхрится с таймером, поймав переход
BNE 0
1: CMP #173,(R0) ; и тут тоже
BNE 1
RTI
¤
Что должно быть в итоге: - Самая первая строка экрана должна выводится жёлтым цветом, вторая строка красным цветом, остальное чёрный цвет. Если "правильно" поймать включение питания - то будет то что я написал, в других случаях, начало переключение всегда в разных местах.
- ? Lasoft / Excess team
- 19.08.2018 04:22
> ? Дмитрий - 07.05.2018 18:54
> Вопрос про таймер, который 177706/10/12. У Зальцмана написано, что частота таймера совпадает с частотой проца. А в эмуле CCPU::Timerprocess вызывается каждый 128 такт. Примерный период, вычисленный на нескольких БК, у Зальцмана 42.9 мкс. В итоге с макс. множителем цикл получается 180 сек. Верны ли > данные зальцмана?
> ? gid - 07.05.2018 22:13
> Естественно верны, за исключением утверждения про частоту. А в эмуляторе - эквивалентная схема, которую я позаимствовал у Patrona, она не достоверно точная, но для такой эмуляции, какая у меня - подходит вполне. У Patrona есть и достоверно точный алгоритм, вплоть до эмуляции глюка с пропуском > первого цикла счёта, но я никак не могу придумать, как мне прицепить его модель процессора к своему эмулятору, загвоздка как обычно оказалась в ВП1-037.
¤
Интересное обсуждение, почему "за исключением утверждения про частоту"? По моим тестам на реальном БК0011М на 6 Мгц таймер тикает тоже быстрее, может я просто не понял что ты имел в виду?
Как раз сейчас провожу тесты... и есть один непонятный косяк.. т.к. любая команда бк работает быстрее чем тикает таймер, невозможно точно попасть на переход ( фактический декремент числа счётчика ), есть вообще у кого какие идеи? Проблема в том, что пытаюсь ловить луч, читая значения таймера, но при каждом включении БК, оно всегда находится в разной позиции, если же просто нажимать резет, то как было при включении питания, так перехват в том же месте и держится чётко, то есть резет не влияет, а вот включение питания не позволяет точно отловить луч, он всегда плавает, что интересно, в эмуляторе тоже плавает )
- ? Lasoft / Excess team
- 03.05.2018 21:13
и ещё могу добавить, что примерно переключение палитры происходит раньше чем переключение экрана, вп-шка успевает примерно 8 точек отрисовать с новой палитрой и только потом переключает экран, для примера команда MOVB RN,(R0), где R0=177663
- ? Lasoft / Excess team
- 03.05.2018 21:10
Пожалуйста, уточните, как это мгновенно? Регистр смещения считывается один раз на старте отрисовки каждого кадра, так что это не совсем мгновенно ) вот экран и палитра переключаются да, мгновенно.
- ? Lasoft / Excess team
- 06.04.2018 00:36
>> Нет. СМК считывает 0 сектор на 0 дороге и задает конфигурацию накопителя принудительно.
¤
Дополню, как раз разбираюсь.
Идентификация НЖМД (023) - по этой команде в секторный буфер считывается паспорт диска и формируется запрос DRQ в регистре состояния. Паспорт диска - справочная информация о конфигурации и характеристиках НЖМД. Паспорт занимает один сектор (256. слов) и, обычно, зашит в ПЗУ на плате НЖМД, хотя в некоторых старых моделях накопителей он располагался на одной из рабочих поверхностей магнитных дисков.
¤
У меня кстати ни разу не было проблем с контроллером СМК-512. При подготовке образов - имейте в виду данные инверсные. Лучше использовать образы .hdi ( они кстати инверсные ) из gid эмулятора и через специальную утилиту готовить их для бк ( там она отрезает как я помню первые 512 которые нужны для gid-эмулятора ), может быть ещё в этом проблема.
- ? Lasoft / Excess team
- 19.02.2018 14:57
Александр Тишин (Sandro), можно как-то с вами связаться? я не совсем понял, как у вас устроена эмуляция вм1 и вп1-037?
- ? Lasoft / Excess team
- 13.10.2017 01:54
Чё-то не похоже что это совсем то... Надо в "Базарах" порыться...
- ? Lasoft / Excess team
- 12.10.2017 13:24
UP, ребят скиньте ссылку ещё раз на схему Sound Drive, не проходите мимо ) Спасибо!
- ? Lasoft / Excess team
- 12.05.2017 15:38
gid, snd > tsn у тебя заработал? там полностью не получится восстановить оригинал, т.к. некоторая информация при компиляции теряется, но если работает, то я разберусь
- ? Lasoft / Excess team
- 10.05.2017 23:20
Ого, как то тема прошла мимо меня, VTX это упакованный формат разложенного ay dump'а. То есть не mp3, а реальный AY. Делал естественно давно, в полуручном режиме, переносил ещё по дискетам.
Алгоритм примерно следующий:
1. Внедрился в плеер рок монитора - снял порегистровый дамп на БК ( как сейчас помню 13 файлов и каждый со своим регистром )
2. Перенёс на ПЦ ( возможно инвертнул, не помню уже, т.к. на БК AY инверсный )
3. На пц сделал батник, который всё соединяет и на выходе VTX
¤
Сделал три трека, т.к. хотел автоматизации, потом просто лень стало.
¤
На данный момент, есть идея просто сделать плеер .snd файлов в браузере, вот и всё. Скорее всего сделаю, давно обдумываю, технологии позволяют на js даже сделать без флеша.
Просто мы работаем над новым демо )
?