Speccy - наш выбор!

Speccy - наш выбор! (http://zx-pk.ru/index.php)
-   Вектор (http://zx-pk.ru/forumdisplay.php?f=55)
-   -   Вектор-06Ц: Эмуляция (http://zx-pk.ru/showthread.php?t=8634)

ivagor 17th November 2009 13:44

Уже поднимался вопрос с CSW, но ничем не закончился, может все же его реализовать?

---------- Post added at 14:43 ---------- Previous post was at 14:42 ----------

Проблему размера WAVов это в значительной степени решит.

---------- Post added at 14:44 ---------- Previous post was at 14:43 ----------

Или, как вариант, добавить прозрачную для пользователя распаковку wavов из zip или rar.

b2m 17th November 2009 13:49

Я делал, как-то, эмуляцию битиков, но для РК86, Юниора и Спекки. Именно поэтому кроме .wav в диалоге открытия файла для эмуляции кассеты есть *.rk, *.bt и *.tzx Однако нужно учитывать скорость записи битов, формат кодирования байта и формат синхро-последовательности с синхробайтом. В принципе, нет ничего невозможного.

Ramiros 17th November 2009 13:49

Quote:

Originally Posted by Tim0xA (Post 232925)
Ramiros, по поводу перехвата функций я не настаиваю. Достаточно того, что есть у b2m. Речь идет больше о том, чтобы иметь возможность загружаться не из WAV, а из CAS-файла. С той же скоростью. Т.е. на вход компаратора подавать битики 0,1 из CAS, а не уровень сигнала из WAV.

Вообщето в cas файле хранятся уже готовые байты программы а не биты для компаратора, или я неправ?

Tim0xA 17th November 2009 13:53

Quote:

Originally Posted by Ramiros (Post 232933)
Вообщето в cas файле хранятся уже готовые байты программы а не биты для компаратора, или я неправ?

Да, там хранятся байты, которые состоят из битов. Т.е. берешь байт, пропихиваешь 8 бит в компаратор, берешь следующий байт и т.д.

К слову, ранее выложенный файл testtp.cas я сделал в твоем же конвертере, записывая байт передаваемый процедуре OutByte в отдельный файл.

b2m 17th November 2009 13:53

Неупакованный CSW (первой версии) можно добавить, а распаковщик (для второй версии) мне показался уж очень объёмным, не хочется добавлять к эмулятору лишние пару десятков килобайт... Хотя упакованный CSW, как правило, раз в 7-8 компактнее.

Ramiros 17th November 2009 13:55

Можно сконвертировать wav в формат где каждое состояние компаратора будет описыватся одним битом, тогда удастся уменьшить размер образов касет как минимум в 8 раз, это я могу в будущем реализовать, но это ничего общего с существующим cas форматом иметь не будет.

ZEman 17th November 2009 13:58

Quote:

Originally Posted by b2m (Post 232932)
В принципе, нет ничего невозможного.

надеюсь.
http://pic.ipicture.ru/uploads/091117/OhK9MP23a2.gif

b2m 17th November 2009 14:01

Quote:

Originally Posted by Ramiros (Post 232936)
Можно сконвертировать wav в формат где каждое состояние компаратора будет описыватся одним битом.

Это и есть формат CSW!!!

ZEman 17th November 2009 14:02

Ramiros, ну а почему бы и нет, необязательно ведь следовать строго старому формату cas, главное чтоб это работало, грузилось как положенно и весило мало.

Tim0xA 17th November 2009 14:09

Quote:

Originally Posted by Ramiros (Post 232936)
Можно сконвертировать wav в формат где каждое состояние компаратора будет описыватся одним битом, тогда удастся уменьшить размер образов касет как минимум в 8 раз, это я могу в будущем реализовать, но это ничего общего с существующим cas форматом иметь не будет.

Под cas-форматом я не подразумеваю какой-то стандарт от спектрума или еще какой-нибудь там общепризнанный вариант CAS. Это чисто бинарный файл. Я употребляю расширение CAS только чтобы обозначить его отношение к способу записи на кассету. Для "Радио-86РК" подобный файл имеет расширение *.rk

Например для Вектора описан таким образом

-- ФОРМАТ MON ---------------------------------------------------------------
Формат записи на магнитную ленту директивой Монитора W следующий:
1. Вначале записывается заголовок MON и имя файла:
- header 256*0h байт;
- синхробайт 0E6h;
- 4*0D2h байт;
- имя (до 11 байт);
- 3*0h байт.
2. Далее пишется сам файл:
- header 256*0h байт;
- синхробайт 0E6h;
- ст., мл. байт адреса начала;
- ст., мл. байт адреса конца;
- байты файла;
- 1 байт контр. суммы всех байтов без переноса.


Вроде бы всё просто. В чём проблема реализовать это?

По-моему формат где каждое состояние компаратора будет описыватся одним битом не сильно отличается от того, что я предлагаю сделать, а практически то же самое.

Ramiros 17th November 2009 14:38

а чем этот CSW можно получить?

ZEman 17th November 2009 14:40

наверно пока ничем.
конвертер нужен

Ramiros 17th November 2009 14:44

Да был вроде конвертор гдето, Wav2rom там помоему такое было, но где его взять? у себя я его чето ненахожу, походу затер :(

ZEman 17th November 2009 14:48

1 Attachment(s)
вот утилита wav2rom у меня сохранилась.

ivagor 17th November 2009 15:02

CSW 1.30, там формат описан (все просто). Это первая версия csw (я и не знал, что вторая есть). Хотелось бы вторую, со сжатием, надеюсь b2m подскажет, где найти описание, утилиты и исходники.
Пробовал прогу на бейсике в csw, потом обратно в wav (csw преобразует .csw в .voc, но это не проблема) - читается.

b2m 17th November 2009 15:24

http://k1.dyndns.org/Develop/project...order/csw.html

b2m 17th November 2009 15:36

1 Attachment(s)
Блин, чёто не гуглится, выложу тут.

Tim0xA 18th November 2009 13:59

b2m, дай рекомендации по настройке секции "cas : tape-recorder" в конфигурационном файле.

Например, для монитора-отладчика (который зашит в загрузчик, вызов F4+ВВОД+БЛК) я сделал следующее:

biproc[F840-F889]=rk
biproc[F840-F889].check="C5D50E0057DB01E610"

boproc[F89B-F8C4]=sp
boproc[F89B-F8C4].check="C5D5F5573E0232FCFF"

Если использовать в конфиге перехват только для записи или только для чтения, то все ОК. Но если одновременно оба, то запись командой W работает, но вот при чтении файлов командой R монитор вызывает также процедуру по адресу F89B, что вызывает сначала диалог "Сохранить как...", а уже после него появляется диалог "Открыть", но в итоге файл грузится с ошибкой. Как настроить конфиг в этом случае?

Также есть ряд вопросов для уточнения:
1. Что означает rk (формат рк86?), ag (Агат?), sp ? Какие еще есть?
2. Почему для Вектор-бейсика при чтении "rk", а при записи "sp"? А в Радио-86РК "rk" в обоих случаях - и на чтение и на запись.
3. biproc, boproc - input/output бинарных файлов?
4. tiproc, toproc - input/output токенизированных файлов?
5. iproc,oproc -?
6. tproc - ?

b2m 18th November 2009 15:35

Есть ещё одна фича: просто перепрыгнуть код - это tproc, при помощи её можно обойти этот ненужный CALL.

По поводу вопросов:
Я сам путаюсь, и постоянно лезу в код, чтобы найти подходящий вариант :) Для biproc и boproc это способ передачи параметров, т.е. в каком регистре будет байт, нужен ли поиск синхробайта. Обычно это весьма специфично для каждого компьютера и формата файла, поэтому есть уже такие варианты: rk, sp, mx, zx, bk, bkm, ag. Догадаться, какой для какого компьютера - не сложно :)

tproc - пропуск кода (обычно запись/чтение синхро-тона, которого в файле обычно нет)
iproc,oproc - чтение/запись блока (HL-начало, DE-конец, BC-контрольная сумма)
biproc, boproc - чтение/запись байта (параметры определяются типом, указанным после "=" )
tiproc, toproc - поиск-пропуск/запись синхробайтов, т.е. если формат файла предусматривает "магические" байты для обозначения синхро-тона.

ivagor 18th November 2009 15:39

Quote:

Originally Posted by b2m (Post 233275)
есть уже такие варианты: rk, sp, mx, zx, bk, bkm, ag. Догадаться, какой для какого компьютера - не сложно

интересно, все догадываются, что форматы Старта-1200 rk и rkb?

b2m 18th November 2009 16:00

biproc[]=rk
на входе: А - максимальное количество считываемых бит, либо 8 для нормального чтения, либо 255 для поиска 0xE6
на выходе: А - считанный байт
boproc[]=rk
на входе: C - записываемый байт
запись в файл производится только после получения 0xE6

biproc[]=sp
на выходе: А - считанный байт
boproc[]=sp
на входе: A - записываемый байт
запись в файл производится только после получения 0xE6

biproc[]=mx
на выходе: А - считанный байт
boproc[]=mx
на входе: C - записываемый байт
запись в файл производится сразу

---------- Post added at 17:00 ---------- Previous post was at 16:57 ----------

Quote:

Originally Posted by ivagor (Post 233277)
интересно, все догадываются, что форматы Старта-1200 rk и rkb?

rkb не бывает :)

ivagor 18th November 2009 16:08

Quote:

Originally Posted by b2m (Post 233281)
rkb не бывает

на 17:15 18.11.2009 бывает

---------- Post added at 17:08 ---------- Previous post was at 17:07 ----------

время уфимское :)

Tim0xA 18th November 2009 16:21

Для монитора-отладчика получилось сделать таким образом:

Code:

cas : tape-recorder {

  ; бейсик 2.5

  biproc[2B05-2B55]=rk
  biproc[2B05-2B55].check="C5D50E0057DB01E610"
  boproc[2B60-2B84]=sp
  boproc[2B60-2B84].check="C5D5F5570E087A0757"

  ; монитор-отладчик 3.5

  tproc[EDDC-EDE2]=rk
  tproc[EDDC-EDE2].check="CD1097FB76F3C9"
  biproc[F840-F889]=rk
  biproc[F840-F889].check="C5D50E0057DB01E610"
  boproc[F89B-F8C4]=sp
  boproc[F89B-F8C4].check="C5D5F5573E0232FCFF"

  filter="Vector CAS files (*.cas)|*.cas"
  ext="cas"
  noisefilterfreq=3000
}

Работает и чтение и запись :)

b2m 18th November 2009 16:21

ivagor, да где?!!
На сайте архив от 04.11.2009, ни в одном из конфигов строчка "rkb" не встречается!

З.Ы. Мы тут не про расширение файлов, а про настройки конфигов беседуем :)

Ramiros 18th November 2009 16:26

Сделал поддержку формата CSW версии 1.х
У меня такой вопрос - сделать чтобы при открытии файла ленточного образа плейер стартовал автоматически, или оставить как есть - в ручном режиме по Alt+F6 ?

ivagor 18th November 2009 16:30

Версия 04.11.2009 (как и более ранние) поддерживает rk?, а здесь есть rkb. Ты же не будешь отрицать, что:
1. Файлы rkb существуют (причем на твоем сайте)
2. Их можно загрузить и запустить в твоем эмуляторе, т.е. он их поддерживает
:)

b2m 18th November 2009 16:32

Quote:

Originally Posted by Tim0xA (Post 233294)
Для монитора-отладчика получилось сделать ...
Работает и чтение и запись :)

Предлагаешь поместить в официальную версию? :)
Кстати, использовать точку с запятой в качестве обозначения комментария - это не моя идея, но придётся наверное добавить :)

---------- Post added at 17:32 ---------- Previous post was at 17:31 ----------

Quote:

Originally Posted by b2m (Post 233295)
ivagor, да где?!!
На сайте архив от 04.11.2009, ни в одном из конфигов строчка "rkb" не встречается!

З.Ы. Мы тут не про расширение файлов, а про настройки конфигов беседуем :)

Я пост подправлял...

ivagor 18th November 2009 16:39

Quote:

Originally Posted by Ramiros (Post 233297)
У меня такой вопрос - сделать чтобы при открытии файла ленточного образа плейер стартовал автоматически, или оставить как есть - в ручном режиме по Alt+F6 ?

Может сделать эту опцию настраиваемой?
Здорово бы еще добавить опцию для автоматического ускорения на время воспроизведения csw.

---------- Post added at 17:39 ---------- Previous post was at 17:34 ----------

b2m, тогда такой вопрос (я его и хотел сразу спросить, но не туда уехал :) ) - может для Старта-1200 отдельное расширение ввести?

b2m 18th November 2009 16:44

Эмуляторов Старта-1200 не много, предлагай :)

ivagor 18th November 2009 16:54

Quote:

Originally Posted by b2m (Post 233306)
предлагай

s12
str
ves
vst :)
v12
и т.п.

---------- Post added at 17:54 ---------- Previous post was at 17:50 ----------

или .vs, тогда еще место для b остается.

b2m 18th November 2009 17:30

А много ли файлов для Старт-1200 существует?

Tim0xA 18th November 2009 18:16

Quote:

Originally Posted by b2m (Post 233300)
Предлагаешь поместить в официальную версию?

Вот теперь можно добавлять :)

Code:

cas : tape-recorder {

  ; бейсик 2.5

  biproc[2B05-2B55]=rk
  biproc[2B05-2B55].check="C5D50E0057DB01E610"
  boproc[2B60-2B84]=sp
  boproc[2B60-2B84].check="C5D5F5570E087A0757"

  ; монитор-отладчик 3.5

  tproc[EDDC-EDE2]=rk
  tproc[EDDC-EDE2].check="CD1097FB76F3C9"
  biproc[F840-F889]=rk
  biproc[F840-F889].check="C5D50E0057DB01E610"
  boproc[F89B-F8C4]=sp
  boproc[F89B-F8C4].check="C5D5F5573E0232FCFF"

  ; лс-паскаль 2.1 (интерпретатор)

  tproc[2728-272C]=rk
  tproc[2728-272C].check="CD2C0176F3"
  tproc[2805-280B]=rk
  tproc[2805-280B].check="CD2C01FB76F3C9"
  biproc[0AEC-0B35]=rk
  biproc[0AEC-0B35].check="C5D50E0057DB01E610"
  tproc[2646-2648]=rk
  tproc[2646-2648].check="CDA726"
  tproc[219D-219F]=rk
  tproc[219D-219F].check="CD8C26"
  boproc[0B41-0B65]=sp
  boproc[0B41-0B65].check="C5D5F5570E087A0757"

  filter="Vector CAS files (*.cas)|*.cas"
  ext="cas"
  noisefilterfreq=3000
}

b2m, твой конфиг невероятно крут!

b2m 18th November 2009 18:51

Quote:

Originally Posted by Tim0xA (Post 233328)
Вот теперь можно добавлять :)

Сказано - сделано.

Quote:

Originally Posted by Tim0xA (Post 233328)
b2m, твой конфиг невероятно крут!

Сам удивляюсь! :)

Кстати, любая строчка, в которой нет символов {}= считается комментарием, так что точку-с-запятой даже не обязательно ставить :rolleyes:

Tim0xA 18th November 2009 19:45

Quote:

Originally Posted by b2m (Post 233342)
Кстати, любая строчка, в которой нет символов {}= считается комментарием, так что точку-с-запятой даже не обязательно ставить

Но ты всё-таки сделай поддержку точки-с-запятой, чтобы можно было комментировать строки, в которых есть символы {}=. Так будет легче отлаживать конфиг.

---------- Post added at 17:45 ---------- Previous post was at 17:05 ----------

b2m, а как насчет варианта

boproc[]=???
на входе: A - записываемый байт
запись в файл производится сразу

есть такой?

ZEman 18th November 2009 20:01

ivagor, полностью с тобой согласен, лучше добавить в эмулятор опцию загружать файлы автоматически или же стартовать потом, ускоренная загрузка тоже не помешает.

Tim0xA, так какой формат будет поддерживаться, cas или csw ?
или другой сделаете, например какойнибудь vcs

Tim0xA 18th November 2009 21:00

Quote:

Originally Posted by ZEman (Post 233371)
Tim0xA, так какой формат будет поддерживаться, cas или csw ?

Одно другому не мешает.

b2m 18th November 2009 21:24

Quote:

Originally Posted by Tim0xA (Post 233348)
b2m, а как насчет варианта

boproc[]=???
на входе: A - записываемый байт
запись в файл производится сразу

есть такой?

Нет. Обычно синхробайт 0хЕ6 пишется той-же самой процедурой, я уж не помню, почему в Специалисте-МХ какая-то другая синхронизация.

Tim0xA 18th November 2009 23:18

Quote:

Originally Posted by b2m (Post 233389)
Обычно синхробайт 0хЕ6 пишется той-же самой процедурой

Да, но если бы был режим, в котором в файл записывались все байты, а не только байты после E6, то можно было бы записывать CAS-файлы с преамбулой.

b2m 19th November 2009 00:05

Сделай себе "преамбулу" и копируй её и записанный файл в третий файл "с преамбулой" командой copy /b :)

Ramiros 19th November 2009 10:49

Готова новая версия. Сделана поддержка формата CSW версии 1.х, введена опция автопроигрывания при открытии, а также форсирования CPU Speed на время загрузки.
Если включить Auto Run, и отключить эмуляцию FDD (поставить галку Without FDD Controller) то образы ленты достаточно только открыть, а все остальное эмулятор сделает автоматически.
Много полезного написал в мануале, советую почитать.

Кстати в конверторе CSW13.EXE обнаружился один глюк (в данном случае безобидный) - если длинна одной полярности более 255 точек, то в образе она представлена последовательностью $00+4 байта(само значение), так вот эта последовательность зачем то дублируется 3 раза, что увеличивает паузы соответственно тоже в 3 раза.

---------- Post added at 11:49 ---------- Previous post was at 11:47 ----------

Tim0xA, Обнови эмуль


All times are GMT +4. The time now is 23:41.

Powered by vBulletin® Version 3.8.3
Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.