User Tag List

Страница 15 из 30 ПерваяПервая ... 111213141516171819 ... ПоследняяПоследняя
Показано с 141 по 150 из 361

Тема: Секреты и трюки программирования (в том числе и игр) для РК-86

Комбинированный просмотр

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

    Регистрация
    12.11.2009
    Адрес
    Москва
    Сообщений
    403
    Спасибо Благодарностей отдано 
    50
    Спасибо Благодарностей получено 
    90
    Поблагодарили
    66 сообщений
    Mentioned
    2 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    По поводу работу ПДП в РК.
    Пересылка байт из ОЗУ в ВГ75 происходит следующим образом. После торможения процессора, контроллер ПДП выставляет адрес на шину адреса и формирует сигнал чтения для ОЗУ через выход /MEMW. Появившиеся данные на шине данных ПДП проталкивает в ВГ75 сигналом /IORD. То есть по факту ВТ57 в себя не загружает эти данные, они просто находятся на шине данных.

    Подробнее можно прочитать в книжке "Домашний компьютер" от авторов РК, на стр. 45.

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

  3. #2
    HardWareMan
    Гость

    По умолчанию

    SegaBoy, ПДП не только в РК так делает, он это делает @design. Смысл в том, что ПДП при приходе DRQ (будем считать, что канал настроен и прочее) запрашивает шину у ЦП, и как только ЦП подтвердит, что шина свободна, ПДП формирует полный адрес памяти для доступа и активирует шины управления памятью MEMRD/MEMWR а так же подтверждает доступ устройству DACK. Устройство изначально настроено так, чтобы при приходе DACK сразу выдавать данные на шину либо принимать их с нее, в зависимости от направления передачи. У устройства могут быть несколько DACK и, соответственно, несколько DRQ, которые могут быть настроены на разные режимы. К примеру популярная SB16 использует 2 DMA канала, одна для 8ми битной передачи и вторая для 16ти битной. Либо сразу для дуплексного режима (одновременно воспроизведение и запись).

    Таким образом да, ПДП выступает в качестве арбитра, который связывает приемник и передатчик на шине, минуя процессор. Более сложный ПДП умеет копирование памяти, для этого он имеет регистр хранения данных и формирует он 2 операции (одну запись и одно чтение).

    Но особенность работы ПДП 8257 именно в РК заключается в особом подключении выводов MEMRD/MEMWR и IORD/IOWR самого контроллера. Поэтому операция при программировании выглядит не логичной.

    Но это все только из-за упрощения схемы самого РК, логику работы самого ПДП оно не нарушает.
    Последний раз редактировалось HardWareMan; 15.03.2017 в 17:27.

  4. #3

    Регистрация
    12.11.2009
    Адрес
    Москва
    Сообщений
    403
    Спасибо Благодарностей отдано 
    50
    Спасибо Благодарностей получено 
    90
    Поблагодарили
    66 сообщений
    Mentioned
    2 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    HardWareMan, спасибо!
    Ну да, я это и имел в виду. Полезно иногда проговаривать в слух очевидные для одних вещи, не очевидные для других. На форуме полно тем, где многие нюансы раскрыты не до конца и максимум предлагается пойти и почитать. По-любому интерес к ВГ75 и ВТ57 возникнет не один раз, а читать книжки не всегда получается с пониманием. Даташиты и мануалы же везде разложены, но язык там такой непривычный, что люди постоянно переспрашивают - как это работает = ))

  5. #4

    Регистрация
    22.05.2011
    Адрес
    г. Дзержинск, Украина
    Сообщений
    6,829
    Спасибо Благодарностей отдано 
    483
    Спасибо Благодарностей получено 
    663
    Поблагодарили
    513 сообщений
    Mentioned
    10 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    ладно тогда напишу сам и потом выложу...

  6. #5

    Регистрация
    31.01.2007
    Адрес
    Москва
    Сообщений
    811
    Спасибо Благодарностей отдано 
    11
    Спасибо Благодарностей получено 
    78
    Поблагодарили
    60 сообщений
    Mentioned
    7 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Подсчет контрольной суммы я уже выкладывал в составе исходника позавчера, честно говоря не думал что для кого то это может быть проблемой.
    Код:
    cs	= 0
    	lua	pass3
    	mems=_c("binBegin")
    	meme=_c("binEnd")
    	cs=0
    	for i=mems,meme-2 do
    	cs=(cs+sj.get_byte(i)*257)
    	end
    	cs=(cs-cs%256+(cs+sj.get_byte(meme-1))%256)%65536
    	_pl("cs	= "..cs)
    	endlua
    	display cs
    	db	0,0,#e6,cs/#100,cs&#ff
    Раз такое дело положу темплейт полностью

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

    Код:
    	device	zxspectrum48
    	org	#0000
    rkBegin
    	db	progBegin/#100,progBegin&#ff
    	db	(progEnd-1)/#100,(progEnd-1)&#ff
    binBegin
    	disp	#0000
    progBegin
    ;-------------------------------------------
    ; code here
    	jp	$
    ;-------------------------------------------
    progEnd
    	ent
    binEnd
    cs	= 0
    	lua	pass3
    	mems=_c("binBegin")
    	meme=_c("binEnd")
    	cs=0
    	for i=mems,meme-2 do
    	cs=(cs+sj.get_byte(i)*257)
    	end
    	cs=(cs-cs%256+(cs+sj.get_byte(meme-1))%256)%65536
    	_pl("cs	= "..cs)
    	endlua
    	display cs
    	db	0,0,#e6,cs/#100,cs&#ff
    rkEnd
    	savebin "prog.rk",rkBegin,rkEnd-rkBegin
    [свернуть]
    Последний раз редактировалось krt17; 15.03.2017 в 22:09.

  7. #6

    Регистрация
    22.05.2011
    Адрес
    г. Дзержинск, Украина
    Сообщений
    6,829
    Спасибо Благодарностей отдано 
    483
    Спасибо Благодарностей получено 
    663
    Поблагодарили
    513 сообщений
    Mentioned
    10 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от krt17 Посмотреть сообщение
    Подсчет контрольной суммы я уже выкладывал в составе исходника позавчера, честно говоря не думал что для кого то это может быть проблемой.

    плясал плясал с бубном...
    пытался я эту сумму вычислить всем чем только можно
    и копипастил уже готовое
    и видоизменял на случай очепяток
    и пробовал другой вариант (тут попался)

    в конечном итоге глянул что РК-шная сумма для
    defb 1,2,3
    0606
    и сделал
    простое прогоняние всех байтов через

    csum = (csum + (sj.get_byte(cnt) * 257))

    и контрольная сума подходит!!!
    пробовал разные файлы...

    по крайней мере нету знака вопроса (я не знаю как должен выглядеть tape loading error)))))
    и всего 3 строки
    как в других нормальных файлах



    короче считаю что это был ЗАГАВАР
    не иначе!!!

    3Ы на всякий случай надо добавить
    csum = (csum + (sj.get_byte(cnt) * 257)) % 65536
    чтоб не вступить в плавающие запятые...
    Последний раз редактировалось NEO SPECTRUMAN; 16.03.2017 в 23:57.

  8. #7

    Регистрация
    31.01.2007
    Адрес
    Москва
    Сообщений
    811
    Спасибо Благодарностей отдано 
    11
    Спасибо Благодарностей получено 
    78
    Поблагодарили
    60 сообщений
    Mentioned
    7 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от zebest Посмотреть сообщение
    Косяк в Ужасм-е или снова у меня? или?
    Ужасм портит, device zxspectrum48 виноват большую слишком прогу вы сделали

  9. #8

    Регистрация
    22.05.2011
    Адрес
    г. Дзержинск, Украина
    Сообщений
    6,829
    Спасибо Благодарностей отдано 
    483
    Спасибо Благодарностей получено 
    663
    Поблагодарили
    513 сообщений
    Mentioned
    10 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Проверяем тесты на железных апогеях
    подход\код несколько брутальный и вероятность того что он даст нормальный результат стремится к 0
    tzts.zip
    возможно я там накосячил и оно вообще не может работать
    но нормально отладить мне не на чем...




    Цитата Сообщение от zebest Посмотреть сообщение
    я так думаю это из за disp #0000

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


    это только смещение для компилируемого кода
    (оно рассчитано на компиляцию процедур которые будут потом перемещены)
    lua видит память спектрума без какого либа смещения
    нужно делать -/+4 в lua

    мне задолбалось ловить глюки вызванные этим смещением
    и я решил что проще отдать первые 4 байта

    хотя можно компилировать

    а потом при помощи другого исходника
    в котором incbin результат работы пред компиляции
    и считание контрольных сумм

    все сделать в одном батнике, которым все и компилируют

    может можно будет
    после savebin
    сразу же сделать incbin только что сохраненного по смещению 4
    добавить адреса спереди и КС

    ЭТО Я ОТВЕТИЛ НЕ ДОЧИТАВ О ЧЕМ РЕЧЬ...


    мдаааа.....
    Код:
    01   0000             	device	zxspectrum48
    02   0000             	org	#0000
    03   0000             rkBegin
    04   0000 00 00       	db	progBegin/#100,progBegin&#ff
    05   0002 73 16       	db	(progEnd-1)/#100,(progEnd-1)&#ff
    06   0004             binBegin
    07   0004             	disp	#0000
    08   0000             progBegin
    09   0000             ;-------------------------------------------
    10   0000             ; code here
    11   0000             ;	jp	$
    12   0000                     incbin "RK-86.bin"	
    13   7317             ;-------------------------------------------
    14   7317             progEnd
    15   7317             	ent
    16   731B             binEnd
    17   731B             cs	= 0
    18   731B             	lua	pass3
    19   731B~            	mems=_c("binBegin")
    20   731B~            	meme=_c("binEnd")
    21   731B~            	cs=0
    22   731B~            	for i=mems,meme-2 do
    23   731B~            	cs=(cs+sj.get_byte(i)*257)
    24   731B~            	end
    25   731B~            	cs=(cs-cs%256+(cs+sj.get_byte(meme-1))%256)%65536
    26   731B~            	_pl("cs	= "..cs)
    27   731B             cs	= 11373
    27   731B             	endlua
    28   731B             	display cs
    29   731B 0000E62C6D  	db	0,0,#e6,cs/#100,cs&#ff
    30   7320             rkEnd
    31   7320             	savebin "prog.rk",rkBegin,rkEnd-rkBegin
    
    Value    Label
    ------ - -----------------------------------------------------------
    0x0000   rkBegin
    0x0000   progBegin
    0x7317   progEnd
    0x0004 X binBegin
    0x731B X binEnd
    0x2C6D   cs
    0x7320   rkEnd
    прикольно сджасм крашится при попытке сделать lua allpass

    может єто традиционные траблы со всякими include-ми?
    нужно запихнуть все єто в виде defb и нлянуть
    ...нет bin2hex щас под рукой...
    [свернуть]


    СКОРМИЛ СВЕЖЕМУ SJASM-У
    https://github.com/mkoloberdin/sjasm...s/tag/20170311
    И ВРОДЕ ВСЕ НОРМ!!!!
    Последний раз редактировалось NEO SPECTRUMAN; 21.03.2017 в 18:28.

  10. #9

    Регистрация
    12.11.2009
    Адрес
    Москва
    Сообщений
    403
    Спасибо Благодарностей отдано 
    50
    Спасибо Благодарностей получено 
    90
    Поблагодарили
    66 сообщений
    Mentioned
    2 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от NEO SPECTRUMAN Посмотреть сообщение
    Проверяем тесты на железных апогеях
    подход\код несколько брутальный и вероятность того что он даст нормальный результат стремится к 0
    tzts.zip
    возможно я там накосячил и оно вообще не может работать
    но нормально отладить мне не на чем...
    Тесты 1, 3 и 4 на реальном Апогее ничего не показывают.
    Тест 2 выдаёт такую картинку:

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



    [свернуть]

    При этом синхронизация периодически срывается.

    Сейчас остальные попробую..

    С остальными тестами то же самое - ничего нет на экране
    Последний раз редактировалось SegaBoy; 21.03.2017 в 19:03.

  11. #10

    Регистрация
    11.01.2008
    Адрес
    Ладошкино
    Сообщений
    1,811
    Записей в дневнике
    4
    Спасибо Благодарностей отдано 
    386
    Спасибо Благодарностей получено 
    339
    Поблагодарили
    244 сообщений
    Mentioned
    14 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    ну да, скрипт на lua - это же так просто.
    Profi v3.2 -=- Speccy2010,r2

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

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

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

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

Похожие темы

  1. Ответов: 210
    Последнее: 26.07.2019, 11:45
  2. Ответов: 6
    Последнее: 07.02.2016, 11:55
  3. Трюки с контроллером FDD 82077
    от Titus в разделе Утилиты
    Ответов: 4
    Последнее: 10.06.2011, 19:17

Ваши права

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