CGA и CF IDE адаптер на Altera MAX10

16-битные ПЦ-совместимые компьютеры с процессорами 8086/8088/80286 работающие под управлением ДОС

Moderator: Shaos

newold86
Devil
Posts: 716
Joined: 30 Nov 2013 11:08
Location: WWW

Re: CGA и CF IDE адаптер на Altera MAX10

Post by newold86 »

Tronix wrote:Приложил архивом в предыдущем посте.
Спасибо !

Схема несложная, но вижу проблему в эмуляции 8051 - почти однозначно есть что-то, завязанное на конкретные скорости обработки, а FPGA ядра точно будут работать не совсем идентично. Без исходников прошивки сложновато будет... Но попробовать можно
Tronix
Doomed
Posts: 662
Joined: 18 Nov 2013 02:38
Location: Москва

Re: CGA и CF IDE адаптер на Altera MAX10

Post by Tronix »

newold86 wrote:Но попробовать можно
Просто если эта хрень "в принципе" работать будет, то можно и клон саундбластера восьмибитного сделать, а то у людей какая-то проблема со звуком ISA 8.
newold86
Devil
Posts: 716
Joined: 30 Nov 2013 11:08
Location: WWW

Re: CGA и CF IDE адаптер на Altera MAX10

Post by newold86 »

Правильнее, конечно, сразу на HDL мутить... Вообще я давно посматриваю на предмет утащить SB из проекта AO486, но это довольно непросто для меня - там все завязано на шину Avalon...
newold86
Devil
Posts: 716
Joined: 30 Nov 2013 11:08
Location: WWW

Re: CGA и CF IDE адаптер на Altera MAX10

Post by newold86 »

newold86 wrote:Подзадолбало пока выискивать причину зависания
Пришла смутная мысль в голову, копаться сильно не стал, просто заменил модуль работы с SD картой по SPI на другой (тоже мой, просто о нем я уже умудрился забыть), после чего вроде зависания прекратились...

Нужно бы DMA добавить, чтобы скорость поприличнее получилась. Никто меня носом не ткнет в код для копирования блока данных из порта в память ? А то я совсем разленился, неохота документацию читать и вспоминать :)
Vic3Dexe
Doomed
Posts: 370
Joined: 16 Dec 2014 11:58
Location: Киев

Re: CGA и CF IDE адаптер на Altera MAX10

Post by Vic3Dexe »

newold86 wrote:код для копирования блока данных из порта в память ?
В смысле код для CPU или FPGA?
Вот сетап DMA под чтение с флопа, выдернул из своего биоса.
Но это только сетап, дальше диску отправляется команда на обмен, и, собственно, происходит обмен :)

Code: Select all

DMA_CH2_BASE		=		04h
DMA_CH2_CNTR		=		05h
DMA_MODE		=		0Bh
DMA_CLEAR_FF		=		0Ch
DMA_CH2_PAGE		=		81h
;------------------------------------------------------------------------------
;----- cf FDCSetupDMA(si = cmd, ES:di->dst, byte [bp]=sector count) -----------
;------------------------------------------------------------------------------
			align		2
FDCSetupDMA:		cli
			;защелка и режим
			out		DMA_CLEAR_FF,al
			mov		ax,si
			out		DMA_MODE,al
			;адрес
			mov		ax,ES
			mov		cl,4
			rol		ax,cl
			mov		ch,al
			and		al,0F0h
			add		ax,di
			adc		ch,0
			;пишем
			push		ax
			out		DMA_CH2_BASE,al
			mov		al,ah
			out		DMA_CH2_BASE,al
			mov		al,ch
			out		DMA_CH2_PAGE,al
			;кол-во
			mov		ah,[bp]
			mov		al,0
			shr		ax,1					;sect*128
			push		ES
			push		di
			les		di,[1Eh*4]
			mov		cl,[ES:di+TFDC_DPT.BPS]
			pop		di
			pop		ES
			shl		ax,cl					;sect*BPS
			dec		ax
			push		ax
			out		DMA_CH2_CNTR,al
			mov		al,ah
			out		DMA_CH2_CNTR,al
			sti
			pop		dx
			pop		ax
			add		ax,dx
			jnc		.1
			mov		[FDCRetCode],FDC_DMA_FAIL
.1:			retn
Если код для FPGA, то я вообще вопроса не понял. :)
newold86
Devil
Posts: 716
Joined: 30 Nov 2013 11:08
Location: WWW

Re: CGA и CF IDE адаптер на Altera MAX10

Post by newold86 »

Естественно, для CPU
Есть порт, из которого нужно прочитать 512 байт и положить в нужное место в памяти
Vic3Dexe
Doomed
Posts: 370
Joined: 16 Dec 2014 11:58
Location: Киев

Re: CGA и CF IDE адаптер на Altera MAX10

Post by Vic3Dexe »

newold86 wrote:Естественно, для CPU
Нифига не естественно, учитывая, что код кучи разных биосов у вас есть :) Не хотелось верить, что кто-то ленив больше, чем я. Думал удерживать первенство еще годков 20 как минимум :mrgreen:
newold86 wrote:Есть порт, из которого нужно прочитать 512 байт и положить в нужное место в памяти
Инит ДМА, старт команды диску (512 байт "каг бэ" намекает, что порт из клана дисковых).
Собсна, все. Радуемся свеженькому сектору в памяти.
newold86
Devil
Posts: 716
Joined: 30 Nov 2013 11:08
Location: WWW

Re: CGA и CF IDE адаптер на Altera MAX10

Post by newold86 »

Vic3Dexe wrote:старт команды диску
Ну, диска тут особо нет - это для SD карты, поэтому еще буду доделывать соответствующий модуль FPGA, чтобы нужные команды принимал и сигналы генерил... Хотя могу плюнуть и так и оставить с rep movsb - и так дает около 200KB/s чтения на стандартной XT. Хотя с DMA интереснее :)

P.S. Кстати, такое впечатление, что таинственные зависания происходили из-за метастабильности. Эх, пора полностью на синхронный дизайн переходить, но он так не вяжется с PC железом...
Vic3Dexe
Doomed
Posts: 370
Joined: 16 Dec 2014 11:58
Location: Киев

Re: CGA и CF IDE адаптер на Altera MAX10

Post by Vic3Dexe »

newold86 wrote:Ну, диска тут особо нет - это для SD карты
Интерфейс тоже называется "SD карта"? Или все-таки IDE? Или на суть команд влияет наличие вращающихся блинов? :)
newold86 wrote:таинственные зависания происходили из-за метастабильности
Вэлкам ту клаб, как грицца.
Метастабильность как явление, я еще осилил. Но вот методы борьбы с оной, как и конкретные прописки по этому поводу в .sdc - увы. Маловато практики, учитывая, что ссыклон 4 быстрее всего забортного железа на порядок, а иногда и на два.

Ладно, это уже оффтоп, проехали.
newold86
Devil
Posts: 716
Joined: 30 Nov 2013 11:08
Location: WWW

Re: CGA и CF IDE адаптер на Altera MAX10

Post by newold86 »

Vic3Dexe wrote:
newold86 wrote:Ну, диска тут особо нет - это для SD карты
Интерфейс тоже называется "SD карта"? Или все-таки IDE?
Интерфейс - мой собственный от начала и до конца (сама карта физически подключена по SPI), поэтому использую также собственный обработчик INT13 при обращениях к "жесткому диску".
Vic3Dexe
Doomed
Posts: 370
Joined: 16 Dec 2014 11:58
Location: Киев

Re: CGA и CF IDE адаптер на Altera MAX10

Post by Vic3Dexe »

newold86 wrote:Интерфейс - мой собственный от начала и до конца
Гмммм...
Ну так тогда вам и писать код от начала и до конца.

Тем более не понял исходного вопроса, если стандартный код не подходит.
newold86
Devil
Posts: 716
Joined: 30 Nov 2013 11:08
Location: WWW

Re: CGA и CF IDE адаптер на Altera MAX10

Post by newold86 »

Vic3Dexe wrote:Тем более не понял исходного вопроса, если стандартный код не подходит.
Просто неохота заново разбираться с программированием 8237 (и прочего связанного). Я предполагаю, что где-то есть уже готовый кусок кода, который просто берет с помощью DMA из порта нужное количество байтов и запихивает их в память. На входе (условно говоря) - адрес порта, адрес памяти и количество байт.
Что обидно - я вообще все это писал, только было это около 25 лет назад...
Tronix
Doomed
Posts: 662
Joined: 18 Nov 2013 02:38
Location: Москва

Re: CGA и CF IDE адаптер на Altera MAX10

Post by Tronix »

newold86 wrote: Что обидно - я вообще все это писал, только было это около 25 лет назад...
Зачем? В смысле, что за разработка была? Интересно просто...
Vic3Dexe
Doomed
Posts: 370
Joined: 16 Dec 2014 11:58
Location: Киев

Re: CGA и CF IDE адаптер на Altera MAX10

Post by Vic3Dexe »

newold86 wrote:Я предполагаю, что где-то есть уже готовый кусок кода,
Давайте определимся.
Либо междумордие стандартное, и тогда работают все куски кода из биоса, включая приведенное мной (по мотивам PC/ХТ, слегка причесаное под себя), либо оно ни разу не стандартное, и тогда (увы) это ваши персональные грабли. К чему надо быть готовым, рожая собственные интерфейсы.

"Готовых" на 100% кусков кода нет и быть не может, просто потому что их никто не писал. Потому что даже в стандартном PC биосе есть подпрограммы "setup_transfer", "send_fdc_cmd", "send_hdd_cmd" и т.п.

Их нужно просто просмотреть и адаптировать.
newold86 wrote:Просто неохота
:)
newold86
Devil
Posts: 716
Joined: 30 Nov 2013 11:08
Location: WWW

Re: CGA и CF IDE адаптер на Altera MAX10

Post by newold86 »

Tronix wrote:Зачем? В смысле, что за разработка была? Интересно просто...
Драйверы сетевых адаптеров