Важная информация

User Tag List

Страница 30 из 34 ПерваяПервая ... 262728293031323334 ПоследняяПоследняя
Показано с 291 по 300 из 336

Тема: Эмулятор Союз-Неон ПК-11/16 - EmuStudio

  1. #291
    Guru Аватар для nzeemin
    Регистрация
    20.12.2005
    Адрес
    Москва
    Сообщений
    2,001
    Спасибо Благодарностей отдано 
    1,073
    Спасибо Благодарностей получено 
    1,247
    Поблагодарили
    480 сообщений
    Mentioned
    20 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Если вдруг кому-то интересно -- первичный загрузчик, режим USER:
    Код:
    000000    NOP
    000002    BR      000036
    000036    BR      000040
    000040    JMP     @#000574
    000574    MOV     #010000, SP
    000600    MOV     @#177130, -(SP)
    000604    BIC     #177774, (SP)
    000604    BIC     #177774, (SP)
    000610    MOV     (SP), 000332
    000614    SWAB    000332
    000620   MOV     #000002, R0
    000624    MOV     #002000, R1
    000630    MOV     #001000, R2
    000634    CALL    000210
    000210    NOP
    000212    MOV     #000010, 000316
    000220    MOV     R0, 000330
    000224    MOVB    @#177130, 000333
    000232    BIC     #176377, 000332
    000240    BISB    #000010, 000333
    000246    MOV     R2, 000334
    000252    MOV     R1, 000336
    000256    MOV     PC, R0
    000260    ADD     #000050, R0
    000264    MOV     R0, @#177130
    000270    NOP
    000272    TSTB    @#177130
    000276    BPL     000272
    000300    NOP
    000302    MTPS    #000000
    000306    TSTB    @#177131
    000312    BEQ     000326
    000326    RETURN
    000640    MOV     #000210, @#004730
    000646    MOV     #023040, @#004716
    000654    MOV     (SP)+, @#004722
    000660    JMP     @#001000
    Дальше исполняется код из 3-го сектора:
    Код:
    001000    MOV     #003336, @#000100
    001006    CLR     @#000102
    001012    CLR     R3
    001014    MOV     (R3), 004734
    001020    CLR     (R3)+
    001024    MOV     SP, #000000
    001030    MOV     #001104, (R3)
    001034    MOV     (R3), @#000010
    001040    unknown 000007 -- MFPT -- TRAP 10
    001104    TST     003636
    001110    BMI     001152
    ...
    - - - Updated - - -

    Цитата Сообщение от Alex_K Посмотреть сообщение
    Да вроде нет, они там так чисто информационные.

    Вторичный загрузчик занимает на нулевой дорожке 3-й, 4-й, 5-й и 6-й сектора.

    Вот тут и вопрос. Насколько я понимаю, контроллер считывает сектор в буфер и устанавливает в своем регистре статуса готовность. Далее этот буфер должна считать программа. А вот как далее - даётся команда на чтение следующего сектора или контроллеру можно дать задание на чтение нескольких секторов? Доку на контроллер дисковода пока не читал.
    Спасибо за инфу. Пока у меня читается только 3-й сектор, буду смотреть почему.
    Про то как управляется/работает контроллер - инфы пока мало. Есть конечно отдельные спеки на 8272A и WD1010, но то как работает именно Неон-овский совмещённый контроллер - это только из исходников, плюс часть по железу определили, но всё ещё многое непонятно.

    - - - Updated - - -

    По документации на 8272A - да, там есть режим "Multi-Sector Read Operation" - когда за одним сектором сразу автоматически читается следующий, надо разбираться в деталях. Завершение чтения секторов обозначается передачей сигнала Terminal Count (TC).
    Последний раз редактировалось nzeemin; 01.01.2023 в 21:48.

  2. #292
    Guru
    Регистрация
    07.10.2007
    Адрес
    п.Пудость Гатчинского р-на Лен.обл.
    Сообщений
    3,210
    Спасибо Благодарностей отдано 
    346
    Спасибо Благодарностей получено 
    608
    Поблагодарили
    400 сообщений
    Mentioned
    46 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от nzeemin Посмотреть сообщение
    По документации на 8272A - да, там есть режим "Multi-Sector Read Operation" - когда за одним сектором сразу автоматически читается следующий, надо разбираться в деталях.
    Так там всё-таки стоит 1810ВГ72А, а не 1818ВГ72А из ТО? А то про 1818ВГ72А ничего не нашёл.

  3. #293
    Guru Аватар для nzeemin
    Регистрация
    20.12.2005
    Адрес
    Москва
    Сообщений
    2,001
    Спасибо Благодарностей отдано 
    1,073
    Спасибо Благодарностей получено 
    1,247
    Поблагодарили
    480 сообщений
    Mentioned
    20 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Alex_K Посмотреть сообщение
    Так там всё-таки стоит 1810ВГ72А, а не 1818ВГ72А из ТО? А то про 1818ВГ72А ничего не нашёл.
    В ТО тоже в двух местах по-разному:
    Код:
    КР1810ВГ72А (161070─161076)
    FD.CSR	  ═ 161070
    FD.BUF	  ═ 161072
    FD.CNT	  ═ 161076
         ─ контроллер накопителя на гибком магнитном диске.

  4. #294
    Guru
    Регистрация
    08.10.2005
    Адрес
    Москва
    Сообщений
    13,659
    Спасибо Благодарностей отдано 
    1,254
    Спасибо Благодарностей получено 
    1,879
    Поблагодарили
    711 сообщений
    Mentioned
    67 Post(s)
    Tagged
    1 Thread(s)

    По умолчанию

    Вот, как у меня FDD сделан в эмуляторе.

    Понятно, что я его не эмулировал целиком, а только то, что было не обходимо для работоспособности FDD.
    И как это работает, я уже не помню)

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


    Код:
    static struct {								// Определить структуру, описывающую дисководы
    			   UINT8 Track,					// Номер трека (00..79, при over-позицировании > 79)
    					 Side,					// Сторона (0 - нижняя головка, 1 - верхняя головка)
    				     Motor,					// Мотор (00 - включен, иначе выключен)
    					 PrevMotor,				// Предыдущее состояние мотора (для иконок дискет)
    					 Mode,					// Режим (00 - нет чтения/записи, 01 - чтение, 02 - запись)
    					 Sector;				// Текущий сектор (0..9)
    			   UINT8 *ImagePTR;				// Указатель на образ диска (образ 819200 байт)
    			  } Floppy[2];
    
    static UINT8 FDD_DataBuf[2048];				// Буфер для сектора HDD/FDD
    static UINT32 FDD_DataBufAdr;				// Указатель адреса в буферном ОЗУ контроллера HDD/FDD
    static UINT8 FDD_ComDim[256];				// Буфер для команд ввода-вывода
    static UINT8 FDD_ComAdr;					// Указатель на текущий адрес в массиве данных ввода-вывода
    static UINT8 FDD_ComLen;					// Оставшееся число байт до конца пакета
    static UINT8 *FDD_DataAdr;					// Указатель на массив сектора в памяти
    static UINT32 FDD_DataPTR = 0;				// Позиция внутри сектора 0..511
    
    static const MaxTrack = 79;					// Максимальный разрешенный номер трека
    
    static UINT8 FD_CSR = 0x80;					// Регистр статуса FDD
    											// Бит 7: 0 - контроллер не готов, 1 - контроллер готов
    											// Бит 6: 0 - обмен по чтению, 1 - обмен по записи
    
    static char FDDImageNames[4][1024];			// Имена файлов для 4-х образов дисков
    
    
    
    
    static UINT16 FASTC	CPU_RdW_HD_BUF(void)				// hd.buf
    {	
    	UINT8 Byte;
    
    	//printf("Read word from CPU register HD.BUF from location PC=0x%X\n",
    	//	   (UINT16)CPU->l.PC);
    
    	Byte = FDD_DataBuf[FDD_DataBufAdr & 0x07FF];		// Чтение байта из буферного ОЗУ контроллера HDD/FDD
    	
    	FDD_DataBufAdr++;
    
    	return(Byte);
    }
    
    
    
    static UINT16 FASTC	CPU_RdW_HD_CSR(void)				// hd.csr
    {				
    	//printf("Read word from CPU register HD.CSR from location PC=0x%X\n",
    	//	   (UINT16)CPU->l.PC);
    
    	FDD_DataBufAdr = 0;									// [T] Сброс адресного указателя буферного ОЗУ
    														// (пока что считаем, что он сбрасывается при чтении hd.csr
    
    	return(0x41);										// Первичная готовность да, вторичная - нет
    }
    
    
    
    
    
    static UINT16 FASTC	CPU_RdW_FD_BUF(void)					// fd.buf
    {		
    	UINT8 Byte = 0;
    	
    	Byte = FDD_ComDim[FDD_ComAdr++];						// Взять байт из буфера
    
    	if (FDD_ComAdr == FDD_ComLen)							// Если конец пакета, то
    	{	
    		switch (FDD_ComDim[0])
    		{
    			case 0x08:										// Sence Interrupt Status (Опрос состояния)
    //						FDDNum = FDD_ComDim[1] & 0x3;		// FDDNum - номер дисковода
    						
    //						Floppy[FDDNum].Track = 0;			// Установиться на трек 00
    
    						FD_CSR = 0x80;						// Установить готовность записи данных в контроллер
    						FDD_ComAdr = 0;						// Обнулить указатель адреса в буфере обмена
    
    						break;
    
    			case 0x45:										// Write Data MFM
    						
    						FD_CSR = 0x80;						// Установить готовность записи данных в контроллер
    						FDD_ComAdr = 0;						// Обнулить указатель адреса в буфере обмена
    						break;
    
    			case 0x46:										// Read Data MFM
    						
    						FD_CSR = 0x80;						// Установить готовность записи данных в контроллер
    						FDD_ComAdr = 0;						// Обнулить указатель адреса в буфере обмена
    						break;
    
    			default:   
    						printf ("WARNING FDD 002!!!\n");
    		}
    	}
    
    	//printf("Read word 0x%02X from CPU register FD.BUF from location PC=0x%X\n",
    	//	   Byte, (UINT16)CPU->l.PC);
    
    	return(Byte);
    }
    
    
    
    static void FASTC	CPU_WrW_HD_CSR(UINT16 Data)		// [T] hd.csr
    {		
    	//printf("Write word 0x%04X to unrealized CPU register HD.CSR from location PC = 0x%X\n",
    	//	   Data, (UINT16)CPU->l.PC);
    
    	if (Data == 0x0010)								// [T] Если записали 0x0010 в порт, то
    		PIC_IRQM |= 0x02;							// дать запрос на прерывание от FDD/HDD
    													// (чтобы контроллер отстал и не тормозил)
    	return;
    }
    
    
    static void FASTC	CPU_WrW_FD_BUF(UINT16 Data)		// [T] fd.buf
    {	
    	UINT8 Byte = (UINT8)Data,
    		  FDDNum,
    		  BCnt;
    
    	//printf("Write word 0x%04X to CPU register FD.BUF from location PC = 0x%X\n",
    	//	   Data, (UINT16)CPU->l.PC);
    
    	if (FDD_ComAdr == 0)									// Если адрес в буфере обмена = 0, то код команды
    	{
    
    		switch (Byte)
    		{
    			case 0x03:										// Specify (Задание параметров)
    //					   printf("FDD Command: Specify\n");
    
    					   FDD_ComLen = 3;						// Длина команды
    		
    					   FDD_ComDim[0] = Byte;				// Записать команду в начало буфера
    					   break;
    
    			case 0x07:										// Recalibrate (Трек-0)
    					   //printf("FDD Command: Track-0\n");
    
    					   FDD_ComLen = 2;						// Длина команды
    		
    					   FDD_ComDim[0] = Byte;				// Записать команду в начало буфера
    					   break;
    
    			case 0x08:										// Sence Interrupt Status (Опрос состояния)
    //					   printf("FDD Command: Sence Status\n");
    
    					   FDD_ComLen = 3;						// Длина команды
    		
    					   FDD_ComDim[0] = Byte;				// Записать команду в начало буфера
    
    					   FDD_ComDim[1] = 0x20;				// Записать байт корректного результата в буфер ($20)
    					   FDD_ComDim[2] = 0;					// (Остальные байты не опрашиваются)
    
    					   FD_CSR = 0xC0;						// Установить готовность чтения данных из контроллера
    					   break;
    
    			case 0x0F:										// Seek (Перемещение)
    //					   printf("FDD Command: Seek\n");
    
    					   FDD_ComLen = 3;						// Длина команды
    		
    					   FDD_ComDim[0] = Byte;				// Записать команду в начало буфера
    					   break;
    
    			case 0x45:										// Write Data MFM
    //					   printf("FDD Command: Write Data MFM\n");
    
    					   FDD_ComLen = 9;						// Длина команды
    		
    					   FDD_ComDim[0] = Byte;				// Записать команду в начало буфера
    					   break;
    
    			case 0x46:										// Read Data MFM
    //					   printf("FDD Command: Read Data MFM\n");
    
    					   FDD_ComLen = 9;						// Длина команды
    		
    					   FDD_ComDim[0] = Byte;				// Записать команду в начало буфера
    					   break;
    
    			default:
    					   printf("WARNING! FDD Command 0x%02X unrealized!\n", Byte);
    		}
    
    		FDD_ComAdr++;										// Перейти к следующей позиции в буфере
    
    	}
    
    	else													// Иначе блок данных команды
    	{
    		FDD_ComDim[FDD_ComAdr++] = Byte;					// Записать байт в буфер
    
    		if (FDD_ComAdr == FDD_ComLen)						// Если конец пакета, то
    		{	
    
    			switch (FDD_ComDim[0])
    			{
    				case 0x03:									// Specify (Задание параметров)
    
    						   // Данные игнорируем				// [T]
    
    						   FDD_ComAdr = 0;					// Обнулить указатель адреса в буфере обмена
    						   break;
    
    				case 0x07:									// Recalibrate (Трек-0)
    						   FDDNum = FDD_ComDim[1] & 0x3;	// FDDNum - номер дисковода
    						   
    						   Floppy[FDDNum].Track = 0;		// Установиться на трек 00
    
    						   PIC_IRQM |= 0x02;				// Запрос на прерывание от FDD/HDD
    						   FDD_ComAdr = 0;					// Обнулить указатель адреса в буфере обмена
    						   break;
    
    				case 0x0F:									// Seek (Перемещение)
    						   FDDNum = FDD_ComDim[1] & 0x3;	// FDDNum - номер дисковода
    						   
    						   Floppy[FDDNum].Track = FDD_ComDim[2]; // Установиться на трек nn
    
    						   //printf("FDD - Seek to track %d\n", Floppy[FDDNum].Track);
    
    						   PIC_IRQM |= 0x02;				// Запрос на прерывание от FDD/HDD
    						   FDD_ComAdr = 0;					// Обнулить указатель адреса в буфере обмена
    						   break;
    
    				case 0x45:									// Write Data MFM
    						   FDDNum = FDD_ComDim[1] & 0x3;	// FDDNum - номер дисковода
    						   
    						   Floppy[FDDNum].Track = FDD_ComDim[2]; // Трек
    						   Floppy[FDDNum].Side = (FDD_ComDim[1] >> 2) & 1; // Сторона
    						   Floppy[FDDNum].Sector = FDD_ComDim[4]; // Сектор
    
    						   if (Floppy[FDDNum].Track > MaxTrack) // Ограничить максимальный номер трека
    							   Floppy[FDDNum].Track = MaxTrack;
    
    						   if (Floppy[FDDNum].Sector > 10)	// Ограничить максимальный номер сектора (1..10)
    							   Floppy[FDDNum].Sector = 10;
    
    						   FDD_ComDim[9] = 0x20;			// Записать байт корректного результата в буфер ($20)
    						   FDD_ComDim[10] = 0;				// (Остальные байты не опрашиваются)
    						   FDD_ComDim[11] = 0;				//
    						   FDD_ComDim[12] = 0;				//
    						   FDD_ComDim[13] = 0;				//
    						   FDD_ComDim[14] = 0;				//
    						   FDD_ComDim[15] = 0;				//
    
    						   BCnt = 4 - (FD_CNT & 0x3);		// BCnt - счетчик секторов для записи за один раз
    
    						   //printf("FDD - Write MFM: Drive: %d, Track: %d, Head: %d, Sector: %d, Len: %d\n",
    							  //    FDDNum, FDD_ComDim[2], FDD_ComDim[3], FDD_ComDim[4], BCnt); 
    
    						   // Самой записи пока нет
    
    						   FDD_ComLen += 7;					// Увеличить длину команды на 7 байт (ответ контроллера)
    
    						   PIC_IRQM |= 0x02;				// Запрос на прерывание от FDD/HDD
    						   FD_CSR = 0xC0;					// Установить готовность чтения данных из контроллера
    						   break;
    
    				case 0x46:									// Read Data MFM
    						   FDDNum = FDD_ComDim[1] & 0x3;	// FDDNum - номер дисковода
    						   
    						   Floppy[FDDNum].Track = FDD_ComDim[2]; // Трек
    						   Floppy[FDDNum].Side = (FDD_ComDim[1] >> 2) & 1; // Сторона
    						   Floppy[FDDNum].Sector = FDD_ComDim[4]; // Сектор
    
    						   if (Floppy[FDDNum].Track > MaxTrack) // Ограничить максимальный номер трека
    							   Floppy[FDDNum].Track = MaxTrack;
    
    						   if (Floppy[FDDNum].Sector > 10)	// Ограничить максимальный номер сектора (1..10)
    							   Floppy[FDDNum].Sector = 10;
    
    						   FDD_ComDim[9] = 0x20;			// Записать байт корректного результата в буфер ($20)
    						   FDD_ComDim[10] = 0;				// (Остальные байты не опрашиваются)
    						   FDD_ComDim[11] = 0;				//
    						   FDD_ComDim[12] = 0;				//
    						   FDD_ComDim[13] = 0;				//
    						   FDD_ComDim[14] = 0;				//
    						   FDD_ComDim[15] = 0;				//
    
    						   BCnt = 4 - (FD_CNT & 0x3);		// BCnt - счетчик секторов для чтения за один раз
    
    															// Копируем сектор в буферное ОЗУ контроллера
    						   memcpy(FDD_DataBuf,
    							      (Floppy[FDDNum].ImagePTR +
    								   ((Floppy[FDDNum].Track << 1) + (Floppy[FDDNum].Side & 0x1)) * 5120 +
    								   ((Floppy[FDDNum].Sector - 1) * 512)),
    							      512 * BCnt);
    
    						   //printf("FDD - Read MFM: Drive: %d, Track: %d, Head: %d, Sector: %d, Len: %d\n",
    							  //    FDDNum, FDD_ComDim[2], FDD_ComDim[3], FDD_ComDim[4], BCnt); 
    
    						   FDD_ComLen += 7;					// Увеличить длину команды на 7 байт (ответ контроллера)
    
    						   PIC_IRQM |= 0x02;				// Запрос на прерывание от FDD/HDD
    						   FD_CSR = 0xC0;					// Установить готовность чтения данных из контроллера
    						   break;
    
    				default:   
    						   printf ("WARNING FDD 001!!!\n");
    			}
    		}
    	}
    
    
    
    	return;
    }
    
    
    static void FASTC	CPU_WrW_FD_CNT(UINT16 Data)		// [T] fd.cnt
    {	
    	//printf("Write word 0x%04X to CPU register FD.CNT from location PC = 0x%X\n",
    	//	   Data, (UINT16)CPU->l.PC);
    
    	FD_CNT = (UINT8)Data;
    
    	if (Data == 0x10)								// Инициализация регистров контроллера?
    	{
    		FD_CSR = 0x80;								// Установить готовность записи данных в контроллер
    		FDD_ComAdr = 0;								// Обнулить указатель адреса в буфере обмена
    	}
    
    	if ((Data >= 0) && (Data < 4))					// Если число в диапазоне от 0..3, то это 
    	{												// число секторов (блоков) для чтения в буферное ОЗУ контроллера
    		;
    	}
    
    
    	return;
    }
    [свернуть]

  5. Эти 2 пользователя(ей) поблагодарили Titus за это полезное сообщение:

    Alex_K (01.01.2023), nzeemin (01.01.2023)

  6. #295
    Guru Аватар для nzeemin
    Регистрация
    20.12.2005
    Адрес
    Москва
    Сообщений
    2,001
    Спасибо Благодарностей отдано 
    1,073
    Спасибо Благодарностей получено 
    1,247
    Поблагодарили
    480 сообщений
    Mentioned
    20 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Titus, ты подтвердил мои догадки насчёт нижних двух бит FD.CNT

    Цитата Сообщение от Titus Посмотреть сообщение
    BCnt = 4 - (FD_CNT & 0x3);

  7. #296
    Guru
    Регистрация
    07.10.2007
    Адрес
    п.Пудость Гатчинского р-на Лен.обл.
    Сообщений
    3,210
    Спасибо Благодарностей отдано 
    346
    Спасибо Благодарностей получено 
    608
    Поблагодарили
    400 сообщений
    Mentioned
    46 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от nzeemin Посмотреть сообщение
    FD.CNT ═ 161076
    У самого контроллера адресный вход только один, потому регистры FD.CSR и FD.BUF относятся к нему непосредственно. А FD.CNT выполнен на внешней логике, тут уже схему надо смотреть.

  8. Этот пользователь поблагодарил Alex_K за это полезное сообщение:

    nzeemin (01.01.2023)

  9. #297
    Guru Аватар для nzeemin
    Регистрация
    20.12.2005
    Адрес
    Москва
    Сообщений
    2,001
    Спасибо Благодарностей отдано 
    1,073
    Спасибо Благодарностей получено 
    1,247
    Поблагодарили
    480 сообщений
    Mentioned
    20 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Alex_K Посмотреть сообщение
    У самого контроллера адресный вход только один, потому регистры FD.CSR и FD.BUF относятся к нему непосредственно. А FD.CNT выполнен на внешней логике, тут уже схему надо смотреть.
    @xolod говорит, нижние байты FD.CNT выбирают буфер.
    Рабочая гипотеза у меня такая: данные читаются с указанного буфера до последнего (3-го). Если перед чтением выбран буфер #3 - читается один буфер (один сектор), если выбран буфер #0 - читаются четыре буфера.

  10. #298
    Guru
    Регистрация
    07.10.2007
    Адрес
    п.Пудость Гатчинского р-на Лен.обл.
    Сообщений
    3,210
    Спасибо Благодарностей отдано 
    346
    Спасибо Благодарностей получено 
    608
    Поблагодарили
    400 сообщений
    Mentioned
    46 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от nzeemin Посмотреть сообщение
    @xolod говорит, нижние байты FD.CNT выбирают буфер.
    Рабочая гипотеза у меня такая: данные читаются с указанного буфера до последнего (3-го). Если перед чтением выбран буфер #3 - читается один буфер (один сектор), если выбран буфер #0 - читаются четыре буфера.
    Тут лучше глянуть схему. А чтение запускается в каком режиме - DMA или INT?

  11. #299
    Master Аватар для xolod
    Регистрация
    01.02.2010
    Адрес
    Москва
    Сообщений
    743
    Спасибо Благодарностей отдано 
    157
    Спасибо Благодарностей получено 
    174
    Поблагодарили
    86 сообщений
    Mentioned
    10 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Alex_K Посмотреть сообщение
    А так интересно, когда сбрасывается счётчик буфера, автоматически после операции чтения или его как-то через регистр сбрасывают. Также перед записью его надо заполнить.
    Счетчик буфера сбрасывается при записи любого значения в порт 161076.

    - - - Добавлено - - -

    Цитата Сообщение от Alex_K Посмотреть сообщение
    Тут лучше глянуть схему. А чтение запускается в каком режиме - DMA или INT?
    Ну я так понимаю что для ВГ72 это режим с чтением во внешний буфер, а для СPU его просто потом по байтово копирует в DRAM.

  12. Эти 2 пользователя(ей) поблагодарили xolod за это полезное сообщение:

    Alex_K (02.01.2023), nzeemin (02.01.2023)

  13. #300
    Guru
    Регистрация
    07.10.2007
    Адрес
    п.Пудость Гатчинского р-на Лен.обл.
    Сообщений
    3,210
    Спасибо Благодарностей отдано 
    346
    Спасибо Благодарностей получено 
    608
    Поблагодарили
    400 сообщений
    Mentioned
    46 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от xolod Посмотреть сообщение
    Ну я так понимаю что для ВГ72 это режим с чтением во внешний буфер
    ВГ72 работает в режиме DMA или INT. При инициализации контроллера командой SPECIFY устанавливается режим работы, вместе со временами шага и загрузки головки.

  14. Этот пользователь поблагодарил Alex_K за это полезное сообщение:

    nzeemin (02.01.2023)

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

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

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

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

Похожие темы

  1. Эмулятор УКНЦ - EmuStudio
    от Titus в разделе Эмуляторы отечественных компьютеров
    Ответов: 1191
    Последнее: 15.02.2024, 13:32
  2. Эмулятор МС-0515 - EmuStudio
    от Titus в разделе Эмуляторы отечественных компьютеров
    Ответов: 143
    Последнее: 09.02.2023, 10:44
  3. Эмулятор ТИА-МЦ-1 EmuStudio
    от Titus в разделе Эмуляторы отечественных компьютеров
    Ответов: 104
    Последнее: 15.01.2022, 01:17
  4. EmuStudio-ZX
    от Titus в разделе Эмуляторы
    Ответов: 597
    Последнее: 09.03.2020, 17:30
  5. ПК-11 'Союз-Неон'
    от Keeper в разделе ДВК, УКНЦ
    Ответов: 12
    Последнее: 16.10.2013, 05:07

Ваши права

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