User Tag List

Страница 13 из 21 ПерваяПервая ... 91011121314151617 ... ПоследняяПоследняя
Показано с 121 по 130 из 209

Тема: Компьютер "ZXM-Jasper" - Обсуждение

  1. #121
    Moderator Аватар для Mick
    Регистрация
    14.06.2005
    Адрес
    г. Калуга
    Сообщений
    9,924
    Спасибо Благодарностей отдано 
    179
    Спасибо Благодарностей получено 
    697
    Поблагодарили
    368 сообщений
    Mentioned
    19 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Решил, пока не спаяв дискогрызный контроллер, проверить магнитофонный вход на 128Кб конфигурации.
    Сразу оговорюсь, что интенсивно с магнитофонным интерфейсом я работал когда у меня был 48кб Спектрум (отечественный клон естественно), а когда появилась машина с 128кб и дискогрызом, то про магнитофонный вход я забыл напрочь.

    Так вот, сейчас, пока нет дискогрыза решил вернуться. Взял запись оригинальной кассеты с Диззи коллекшен (импортная) и попробовал ввести.
    Вот вроде и грузятся картинки и полоски по экрану бегают, но упорно все сваливаются в 1982 Бейсик. Правда в Диззи 3 еще успел сказать свою фразу Фэнтези ворлд Диззи и опять в Бейсик.
    Загружал через Winamp c компа.

    Вопрос, оригинальные Диззи (записи) чем то отличались от записей отечественного разлива, т.е. работали они на наших 128кб клонах. Мне бы понять причину, то ли косяк с верхней памятью или еще что.

    А пока вот пару скриншотов процесса заргузки





    P.S. Записал в ПЗУ тест DiagROM v1.27, потестировал - Пишет что память в порядке.
    Последний раз редактировалось Mick; 30.11.2017 в 13:19.
    Сайт поддержки моих изделий - http://micklab.ru/
    Группа ВКонтакте - https://vk.com/micklab

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

  3. #122
    Guru Аватар для creator
    Регистрация
    02.07.2006
    Адрес
    Новосибирск
    Сообщений
    2,200
    Спасибо Благодарностей отдано 
    442
    Спасибо Благодарностей получено 
    223
    Поблагодарили
    132 сообщений
    Mentioned
    6 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    usr0?
    В правильно заданном вопросе содержится половина ответа

  4. #123
    Moderator Аватар для Mick
    Регистрация
    14.06.2005
    Адрес
    г. Калуга
    Сообщений
    9,924
    Спасибо Благодарностей отдано 
    179
    Спасибо Благодарностей получено 
    697
    Поблагодарили
    368 сообщений
    Mentioned
    19 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от creator Посмотреть сообщение
    usr0?
    В смысле, мне бы на пальцах как для AAA.

    Более того скачал отсюда tzx файл Dizzy 3 - http://zx-games.ru/dizzy-3-fantasy-world-dizzy/
    Ситуация повторилась - говорит оцифровку и привет в бейсик.
    Сайт поддержки моих изделий - http://micklab.ru/
    Группа ВКонтакте - https://vk.com/micklab

  5. #124
    Guru Аватар для creator
    Регистрация
    02.07.2006
    Адрес
    Новосибирск
    Сообщений
    2,200
    Спасибо Благодарностей отдано 
    442
    Спасибо Благодарностей получено 
    223
    Поблагодарили
    132 сообщений
    Mentioned
    6 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Ну как на не совсем корректных дисковых версиях, рекомендуют загружать не из basic128, а сначала сделать usr0.
    В правильно заданном вопросе содержится половина ответа

  6. #125
    Moderator Аватар для Mick
    Регистрация
    14.06.2005
    Адрес
    г. Калуга
    Сообщений
    9,924
    Спасибо Благодарностей отдано 
    179
    Спасибо Благодарностей получено 
    697
    Поблагодарили
    368 сообщений
    Mentioned
    19 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от creator Посмотреть сообщение
    Ну как на не совсем корректных дисковых версиях, рекомендуют загружать не из basic128, а сначала сделать usr0.
    А причем тут дисковых версиях. Я пробовал загружать через магнитофонный вход
    1. оцифрованные фирменные кассеты
    2. tzx файл Dizzy 3

    Поведение одинаково. Вот я и спрашиваю, какие могут быть причины. Может ПЗУ-ха правленная. Сейчас я поставил ПЗУ от ZX-777. Увы я не помню, загружал ли я на нем с магнитофона, скорее нет чем да. Или в 128кб режиме как то по хитрому загружаться должна.
    Я не знаток, но хотелось бы понять.

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

    Попробовал ПЗУ от Пентагона - все тоже. Значит не в ПЗУ дело наверное.
    Сайт поддержки моих изделий - http://micklab.ru/
    Группа ВКонтакте - https://vk.com/micklab

  7. #126
    Master
    Регистрация
    19.12.2013
    Адрес
    г. Никополь, Украина
    Сообщений
    997
    Спасибо Благодарностей отдано 
    339
    Спасибо Благодарностей получено 
    667
    Поблагодарили
    177 сообщений
    Mentioned
    6 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Mick Посмотреть сообщение
    Взял запись оригинальной кассеты с Диззи коллекшен (импортная) и попробовал ввести.
    Вот вроде и грузятся картинки и полоски по экрану бегают, но упорно все сваливаются в 1982 Бейсик. Правда в Диззи 3 еще успел сказать свою фразу Фэнтези ворлд Диззи и опять в Бейсик.
    Загружал через Winamp c компа.
    А где на исходники проекта можно посмотреть?
    Как там порт чтения клавиатуры и магнитофона реализованы?

  8. #127
    Moderator Аватар для Mick
    Регистрация
    14.06.2005
    Адрес
    г. Калуга
    Сообщений
    9,924
    Спасибо Благодарностей отдано 
    179
    Спасибо Благодарностей получено 
    697
    Поблагодарили
    368 сообщений
    Mentioned
    19 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от andykarpov Посмотреть сообщение
    А где на исходники проекта можно посмотреть?
    Как там порт чтения клавиатуры и магнитофона реализованы?
    Можно, но я пока рисую на AHDL

    Код:
    ----------------------------------------------------------------------------------------------------------------------------
    -- Описание:  Прошивка микросхемы CPLD DD1 (модуль EPM3256AQC208_IGP1)
    -- Проект: ZXM-Jasper 
    -- Автор: Тарасов М.Н. (Mick)
    -- Тип CPLD: EPM3256AQC208
    -- Версия: v1.00  -  2017
    ----------------------------------------------------------------------------------------------------------------------------
    TITLE "ZXM-Jasper System Array Logic";
    
    FUNCTION 2mux1 (a, b, sel) RETURNS (y);
    
    SUBDESIGN MODULE_CPLD
    (
    	-- Входная тактовая частота CLK
        CLK_14MHZ : INPUT;
    
    	-- Сигналы управления RAM памятью
        MA[16..0] : OUTPUT;
        MD[7..0]  : BIDIR;
        WR_RAM    : OUTPUT;
        CS_RAML   : OUTPUT;
        CE_RAM2   : OUTPUT;
    
    	-- Выходные сигналы видео формирователя
        VD[7..0] : OUTPUT;
        HS 	     : OUTPUT;     
        VS 	     : OUTPUT;     
        GI	     : OUTPUT;
            
    	-- Сигналы управления ROM памятью
        ROM_A14  : OUTPUT;
        ROM_A15  : OUTPUT;
        RD_ROM   : OUTPUT;
        WR_ROM   : OUTPUT;
        CS_ROM   : OUTPUT;
    
    	-- Сигналы управления с CPU
        CA[15..0] : INPUT;
        CD[7..0]  : BIDIR;
    
        C_CLK   : OUTPUT;
        C_IORQ  : INPUT;
        C_MREQ  : INPUT;
        C_M1    : INPUT;
        C_RD    : INPUT;
        C_WR    : INPUT;
        C_RFSH  : INPUT;
    
    	-- Общие сигналы
        C_RESET  : INPUT;
        C_MAGIC  : INPUT;
        C_IORQGE : INPUT;
        C_INT    : OUTPUT;
        C_NMI    : OUTPUT;
        C_BLK    : INPUT; --OUTPUT;
        C_BUSRQ  : INPUT; --OUTPUT;
        C_WAIT   : INPUT; --OUTPUT;
    
        C_IODOS  : INPUT; --OUTPUT;
        C_DOS    : OUTPUT;
    
    	-- Сигналы YM2149
        AYCLK   : OUTPUT;
        BC1     : OUTPUT;
        BDIR    : OUTPUT;
    
    	-- Сигналы порта FE
        TAPE_IN  : INPUT;
        TAPE_OUT : OUTPUT;
        BEEP     : OUTPUT;
    
    	-- Сигналы выбора джойстика
        RD_1F  : OUTPUT;
    
    	-- Скандаблер
      	PA[14..0] 	: OUTPUT;			-- адреса знакомест 
      	VWR 	   	: OUTPUT;			-- сигнал записи в видеобуфер 
      	PD[5..0] 	: BIDIR;			-- данные
    
        -- Сигналы клавиатуры
        KBD_CS : INPUT;
        KBD_CLK : INPUT;
        KBD_DI : INPUT
    )
    VARIABLE
    
        Sync_count[2..0]	: DFF; -- 4-х разрядный счетчик, сигналы TI, H0, H1 
        Clk_reg 	: DFF;--системный регистр
        CLKZ		: NODE;-- частота процессора
        H0M			: NODE;-- частота селектора памяти
        H1M			: NODE;-- частота селектора памяти
        VCLK		: NODE; -- опорная частота видеочетчиков 
    
        HSync_count[6..0]: DFF; -- 6-и разрядный счетчик строчной разверкти, сигналы H3..H8 
        HReset		: NODE;		-- сброс счетчиков строчной развертки
        HBlank		: NODE; 	-- сигнал гашения видеосигнала строчный
        HBlank1		: NODE; 	-- сигнал гашения видеосигнала строчный
        HBlank2		: NODE; 	-- сигнал гашения видеосигнала строчный
        HBlank3		: DFF; 	-- сигнал гашения видеосигнала строчный
        HBorder		: NODE; 	-- сигнал строчного бордера
        HSync		: DFF; 		-- строчный синхроимпульс
    	HSync1		: DFF; 		-- синхроимпульс счета кадровых счетчиков
    
        VSync_count[8..0]	: DFF; -- 10-и разрядный счетчик кадровый развертки, сигналы V0..V9
        VReset		: NODE;	--сброс счетчиков кадровой развертки
        VSync		: DFF; 	-- кадровый синхроимпульс
        VBorder		: NODE; -- сигнал кадрового бордера
    
        Border_sync   	: DFF; -- строб бордера
        Int_sync      	: DFF; -- строб прерывания
    	Int_count[3..0] : DFF; -- 4-и разрядный счетчик длительности прерывания
        Flash_count[4..0]	: DFF; -- 6-и разрядный счетчик мерцания, сигнал FLASH 
    		
        REG_rddata[7..0] : TRI; -- буфер чтения памяти 
        DATA_CPU[7..0]   : TRI_STATE_NODE;     
    
    	-- Сигналы управления памятью 
        WR_Buf 	  		: LCELL; -- запись в буферный регистр
        VA[4..0]     	: NODE;   -- адрес видео памяти
        RA[2..0]     	: NODE;   -- адрес видео памяти
        Sel_A45 	  	: NODE; -- доступ к ОЗУ
        Ram_write_r    	: DFF; -- запись в ОЗУ
        Ram_wrdata[7..0]: TRI; -- буфер записи в ОЗУ
        Ram_buf[7..0] 	: DFF;
        Ram_smx 	  	: NODE; -- страницы ОЗУ
        RD_MEMORY       : LCELL;
        ROM_SEL       	: NODE;
    
    	-- Сигналы управления видеоформирователем 
        WRSCR    	    : LCELL; -- сигнал защелкивания видеоинформации
        Reg_inf[7..0]   : DFF; 	 -- регистр видеоинформации
        Reg_pix[7..0]   : DFF; 	 -- регистр пикселей (промежуточный)
        Reg_atr[7..0]   : DFF;	 -- регистр цвета
        Pix_inf    	    : LCELL; -- видеоинформация
        Reg_vid[5..0]   : DFF;	 -- регистр видео выходной
        ColourADR[3..0] : NODE;
    
    	-- Управляющие сигналы 
        IO_ENABLE  		: NODE; -- доступ к портам
        IO_RD      		: LCELL; -- чтение из портов
        IO_WR      		: LCELL; -- запись в порты
    
        Sel_code   		: NODE; -- выбор ПЗУ TRDOS
        Sel_3dxx   		: NODE; -- выбор ПЗУ TRDOS
        DOS_r     		: JKFF;  -- выбор ПЗУ TRDOS
        NMI_r     		: DFF; 	 -- выбор ПЗУ TRDOS
    	DOS_En			: LCELL; --доступ к контроллеру дисковода
    
        RDFE_Sel  		: LCELL; -- выбор клавиатуры
    
    	-- Регистр порта xxFEh
        WR_FE		: LCELL;
        Border_Color_r[2..0] : DFF;
        Tape_r         	: DFF;
        Beep_r         	: DFF;
    
    	-- Регистр порта 7FFDh
        Sel_7FFD		: NODE;
        WR_7FFD			: LCELL;
        RAM0_Page_r[2..0] : DFF; -- основные страницы 128кб   
        SCR128_r     	: DFF; --экран в 4000h или C000h (3 - бит) 
        ROM128_r     	: DFF; -- 128 ПЗУ (4 - бит)
        BLK_Port_r   	: DFF; -- блокировка записи в порт (5 - бит)
    
    	-- Скандаблер
    
    	VHReset		  : NODE;
    	VHBlank		  : NODE;
    	SHReset		  : NODE;
    	VWR_strobe    : NODE;			-- запись в буфер
    	MUX_strobe    : DFF;				-- счетчик переключения буферов
    	MUX_data  	  : LCELL;				-- триггер конца строки
    
    	WHSync_count[6..0] : DFF;			-- счетчик знакомест
    	VHSync_count[2..0] : DFF;			-- счетчик знакомест
    	SHSync_count[2..0] : DFF;			-- счетчик знакомест
    	VD_reg[5..0]	   : DFF;			-- регистр видео
    	REG_wscan[5..0]    : TRI;
        RH 				   : NODE;
    
    
    	-- интерфейс клавиатуры
    	KBD_save_en : NODE;
    	KBD_count[3..0]	: DFFE;
    	KBD_shift_in[7..0] : DFF;
    	KBD_regA8[4..0]  : DFFE;
       	KBD_regA9[4..0]  : DFFE;
       	KBD_regA10[4..0] : DFFE;
       	KBD_regA11[4..0] : DFFE;
       	KBD_regA12[4..0] : DFFE;
       	KBD_regA13[4..0] : DFFE;
       	KBD_regA14[4..0] : DFFE;
       	KBD_regA15[4..0] : DFFE;
    	KBD_rddata[7..0] : TRI;
    
    BEGIN
        ------------------------------------------------------------------------------------
        -- 				               Синхрогенератор
        ------------------------------------------------------------------------------------
        -- Clock frequency 14.000 MHz
        --    	"256 x 192 Screen"
        -- Line  frequency 15625 Hz
        -- Field frequency 50 Hz
        -- Sync polarity: H negative, V negative
        -- Scan type: non interlaced.
        ------------------------------------------------------------------------------------
        -- Системные сигналы
        ------------------------------------------------------------------------------------
        Sync_count[].clk  = CLK_14MHZ;				-- Системные сигналы TI, H0, H1, 2	
        Sync_count[].d   = Sync_count[].q+1;
    
        VCLK = !(Sync_count[].q == B"111"); 
    	------------------------------------------------------------------------------------
        -- Строчная развертка
        ------------------------------------------------------------------------------------
        --       One line:
        --  32 pixels horizontal sync
        --  32 pixels back porch
        --  64 pixels left border
        -- 256 pixels video
        --  64 pixels right border
        ------------------------------------------------------------------------------------
        -- 448 pixels total per line  
        ------------------------------------------------------------------------------------
        --  Реализация
        ------------------------------------------------------------------------------------
        --   32 видимая часть
        --    8 правый бордер                                     
        --    4 начало гасящего импульса
        --    4 строчный импульс
        --    8 левый бордер
        --    =
        --   56 сброс счетчиков строчной развертки
        ------------------------------------------------------------------------------------
    	HSync_count[].clk  = VCLK; 					 -- Сигналы строчной развертки H3, H4, H5, H6, H7, BC
    	HSync_count[].d = HSync_count[].q+1;
       	HSync_count[].clrn = !HReset;
    
        HReset  = (HSync_count[6..4].q == B"111"); 			-- сброс счетчиков в конце второй строки VGA
        HBorder  = HSync_count[6].q;						-- сигнал строчного бордера на второй строке VGA
    
        HBlank1  = !(HSync_count[6..3].q == B"0101");		-- гасящий импульс на первой VGA строке
        HBlank2  = !(HSync_count[6..3].q == B"1100");		-- гасящий импульс на второй VGA строке
    	HBlank = HBlank1 & HBlank2;
    
    	HSync.clk = VCLK;
    	HSync.d   = HBlank # HSync_count[2].q;
    
    	HBlank3.clk = !(HSync_count[6..0].q ==B"1010000");
    	HBlank3.d = GND;
    	HBlank3.prn = !(HSync_count[6..0].q == B"1100101");
        ------------------------------------------------------------------------------------
        -- Кадровая развертка
        ------------------------------------------------------------------------------------
        --       One field:
        --   16 lines vertical sync = porch
        --   56 lines top border
        --  192 lines video
        --   48 lines bottom border
        ------------------------------------------------------------------------------------
        --  312 lines total per field                                        
        ------------------------------------------------------------------------------------
        --  Реализация
        ------------------------------------------------------------------------------------
        --  192 видимая часть
        --    48 нижний бордер                      
        --    16 кадровый импульс = гасящий импульс 
        --    56 верхний бордер
        --    =
        --  312 сброс счетчиков кадровой развертки
        ------------------------------------------------------------------------------------
        HSync1.clk = VCLK;
    	HSync1.d = (HSync_count[6..0] == B"1001101");
    
        VSync_count[].clk  = HSync1.q;					-- Сигналы кадровой развертки V0...V7
        VSync_count[].d    = VSync_count[].q+1;
        VSync_count[].clrn = !VReset;
    
    	VReset  = (VSync_count[8..3].q == B"101000");-- сброс на 320 строке
        VBorder = VSync_count[8].q # (VSync_count[7].q & VSync_count[6].q); 				-- сигнал BK = V8 # (V7 & V6) 
    
    	VSync.clk = VCLK;
    	VSync.d   = !(VSync_count[8..4].q == B"01111");
        ------------------------------------------------------------------------------------
        --  Счетчики мерцания
        ------------------------------------------------------------------------------------
        Flash_count[].clk  = !VSync.q;					--Сигналы счетчиков мерцания BK/, FLASH	
        Flash_count[].d    = Flash_count[].q+1;
        ------------------------------------------------------------------------------------
        --  Строб бордера
        ------------------------------------------------------------------------------------
        Border_sync.d = !(VBorder # HBorder);
        Border_sync.clk = HSync_count[1].q;
        ------------------------------------------------------------------------------------
        --  Счетчик длительности прерывания
        ------------------------------------------------------------------------------------
        Int_count[].clk  = VCLK;					
        Int_count[].d    = Int_count[].q+1;
        Int_count[].clrn = !Int_sync.q;			 
        ------------------------------------------------------------------------------------
        -- Сигнал прерывания
        -- Примечание: прерывание генерится с частотой 48Гц
        ------------------------------------------------------------------------------------
         Int_sync.clk = !VSync.q;    			-- прерывание на 256 импульсе 
         Int_sync.d = GND;
    
         Int_sync.prn = !(Int_count[3..0].q == B"1111");
        ------------------------------------------------------------------------------------
        -- Сигнал прерывания
        -- временно на 121 ногу сигнал EXT1, был 117
        ------------------------------------------------------------------------------------
        C_INT = Int_sync.q;
        ------------------------------------------------------------------------------------
        -- Сигнал синхронизации
        ------------------------------------------------------------------------------------
        HS = HSync.q;
        ------------------------------------------------------------------------------------
        -- Сигнал разрешения SCART
        ------------------------------------------------------------------------------------
        VS = VSync.q;
        ------------------------------------------------------------------------------------
        -- Сигнал гашения
        ------------------------------------------------------------------------------------
        GI = GND;
    	------------------------------------------------------------------------------------
        --                          Видеоформирователь
        ------------------------------------------------------------------------------------
        -- Стробирующие сигналы захвата информации
        ------------------------------------------------------------------------------------
        WRSCR = !(Sync_count[1].q & Sync_count[2].q & HSync_count[0].q); 
        ------------------------------------------------------------------------------------
        -- Сдвиговый регистр пикселей
        ------------------------------------------------------------------------------------
        Reg_pix[].clk = HSync_count[0].q;				-- сигналы H2
        Reg_pix[].d   = MD[];
        ------------------------------------------------------------------------------------
        -- Сдвиговый регистр пикселей
        ------------------------------------------------------------------------------------
        Reg_inf[].clk = Sync_count[0].q;		    	-- сигнал 7MHZ
        IF WRSCR !=0 THEN Reg_inf[].d = (Reg_inf[7-1..0].q,GND);
        ELSE Reg_inf[].d = Reg_pix[];
        END IF;
        ------------------------------------------------------------------------------------
        -- Регистр атрибутов
        ------------------------------------------------------------------------------------
        Reg_atr[].clk = WRSCR;
        Reg_atr[].d   = MD[];     
        ------------------------------------------------------------------------------------
        -- Мерцание знакоместа
        ------------------------------------------------------------------------------------
        Pix_inf = Reg_inf[7].q $ (Flash_count[4].q & Reg_atr[7].q);
        ------------------------------------------------------------------------------------
        -- Адрес палитры
        ------------------------------------------------------------------------------------
    	IF Border_sync.q ==0 THEN
           	ColourADR[0] = Border_Color_r[0].q;
       		ColourADR[1] = Border_Color_r[1].q;
        	ColourADR[2] = Border_Color_r[2].q;
        	ColourADR[3] = GND;
    	ELSE
    		IF Pix_inf ==0 THEN
           		ColourADR[0] = Reg_atr[3].q; 			--Blue  
           		ColourADR[1] = Reg_atr[4].q; 			--Red  
           		ColourADR[2] = Reg_atr[5].q; 			--Green  
           		ColourADR[3] = Reg_atr[6].q;   			--Bright
     	    ELSE
        		ColourADR[0] = Reg_atr[0].q; 			--Blue  
        		ColourADR[1] = Reg_atr[1].q; 			--Red  
        		ColourADR[2] = Reg_atr[2].q; 			--Green  
        		ColourADR[3] = Reg_atr[6].q;   			--Bright
    		END IF;
    	END IF;
    
    
        ------------------------------------------------------------------------------------
        -- Вывод видеоинформации
        ------------------------------------------------------------------------------------
        Reg_vid[].clk  = Sync_count[0].q;		    	-- сигнал 7MHZ
    	Reg_vid[].clrn = HBlank3.q & VSync.q;
    
        Reg_vid[0].d = ColourADR[0]; 		   		-- Blue0
        Reg_vid[1].d = ColourADR[0] & ColourADR[3]; -- Blue1
    
        Reg_vid[2].d  = ColourADR[1];				-- Red0
        Reg_vid[3].d  = ColourADR[1] & ColourADR[3]; -- Red1
    
        Reg_vid[4].d = ColourADR[2];				-- Green0
        Reg_vid[5].d = ColourADR[2] & ColourADR[3]; -- Green1
    
        ------------------------------------------------------------------------------------
        -- Системные сигналы
        ------------------------------------------------------------------------------------
    --    C_BUSRQ  = VCC;
    --    C_WAIT   = VCC;
        ------------------------------------------------------------------------------------
        -- Сигнал формирование частоты процессора
        -- Примечание: процессор на частоте 3,5МГц(NORMAL)
        ------------------------------------------------------------------------------------
        H0M   = Sync_count[1].q;					-- H0
        H1M   = Sync_count[2].q;					-- H1
    
        Clk_reg.d = Sync_count[1].q;
        Clk_reg.clk = Sync_count[0].q;
    
        CLKZ  = !H0M;--Clk_reg.q;
        C_CLK = CLKZ;
        ------------------------------------------------------------------------------------
        --                      Управление памятью RAM
        ------------------------------------------------------------------------------------
        -- Сигнал записи в буферный регистр TI =1 и H0 =0 
        ------------------------------------------------------------------------------------
        WR_Buf = H0M & !H1M;							-- сигнал WRBUF
        ------------------------------------------------------------------------------------
        -- Запись в буферный регистр
        ------------------------------------------------------------------------------------
        Ram_buf[].d   = MD[];
        Ram_buf[].clk = !WR_Buf; 
        ------------------------------------------------------------------------------------
        -- Сигнал мультиплексирования страниц ОЗУ
        ------------------------------------------------------------------------------------
        Ram_smx = CA[15] and CA[14];					-- сигнал SMX = A15 & A14
        ------------------------------------------------------------------------------------
        -- Выбор памяти ОЗУ
        ------------------------------------------------------------------------------------
        Sel_A45 = CA[15] # CA[14];    					-- сигнал A45 = A15 # A14 # BLK
        ------------------------------------------------------------------------------------
        -- Сигнал записи в память
        ------------------------------------------------------------------------------------
        Ram_write_r.d    = Sel_A45 & !C_MREQ & C_RD & C_RFSH; 
        Ram_write_r.clrn = !H1M;						
    
        Ram_write_r.clk  = !CLKZ;--!Clk_reg.q;
        Ram_write_r.prn  = VCC;
        ------------------------------------------------------------------------------------
        -- Запись в память
        ------------------------------------------------------------------------------------
        WR_RAM = !Ram_write_r.q;
    
        Ram_wrdata[].in = CD[];
        Ram_wrdata[].oe = Ram_write_r.q;
        MD[] = Ram_wrdata[].out;
    
        ------------------------------------------------------------------------------------
        -- Формирование адресов видеоконтроллера VА
        ------------------------------------------------------------------------------------
        IF HSync_count[0].q ==0 THEN						-- сигнал H2
      	   	VA[0] = VSync_count[0].q;
    		VA[1] = VSync_count[1].q;
    		VA[2] = VSync_count[2].q;
    		VA[3] = VSync_count[6].q;
    		VA[4] = VSync_count[7].q;
    	ELSE
       		VA[0] = VSync_count[6].q;
    		VA[1] = VSync_count[7].q;
    		VA[2] = GND;
    		VA[3] = VCC;
    		VA[4] = VCC;
    	END IF;
        ------------------------------------------------------------------------------------
        -- Формирование адресов RА
        ------------------------------------------------------------------------------------
    	IF Ram_smx ==0 THEN									-- выборк окна в адресах 0x000..0xBFFF
       		RA[0] = CA[14];
    		RA[1] = CA[15];
    		RA[2] = CA[14];
    	ELSE
    			RA[0] = RAM0_PAGE_r[0].q; 					-- сигнал Page0
        		RA[1] = RAM0_PAGE_r[1].q; 					-- сигнал Page1
        		RA[2] = RAM0_PAGE_r[2].q; 					-- сигнал Page2
    	END IF;
        ------------------------------------------------------------------------------------
        -- Формирование адресов и выбор микросхемы памяти
        ------------------------------------------------------------------------------------
    	IF H1M ==0 THEN
    		MA[13..0] = CA[13..0];
    		MA[16..14] = RA[2..0];
    
    	ELSE
    		MA[4..0] = HSync_count[5..1];					-- сигналы H3...H7 
    		MA[5] = VSync_count[3].q;						-- сигнал V4
        	MA[6] = VSync_count[4].q;						-- сигнал V5
        	MA[7] = VSync_count[5].q;						-- сигнал V6
    
     	   	MA[12..8] = VA[4..0]; 						-- сигналы VA0...VA4  
        	MA[13] = GND; 								-- сигнал 0  
       		MA[14] = VCC; 			 					-- сигнал 1  
        	MA[15] = SCR128_r.q;  						-- сигнал SCR128  	
        	MA[16] = VCC; 								-- сигнал 1  
        END IF;
    	
    	CS_RAML = GND;
    	CE_RAM2 = VCC;
    
    	------------------------------------------------------------------------------------
    	--			Управление памятью ROM
    	------------------------------------------------------------------------------------
    	-- Формирование управляющих сигналов ROM памяти
    	------------------------------------------------------------------------------------
    	ROM_A14 = ROM128_r.q # !DOS_en;			-- сигнал RA14 = ROM128/ & !PRN;
    	ROM_A15 = DOS_en;				-- сигнал RA15 = DOS/ & !PRN;
    	------------------------------------------------------------------------------------
    	-- Сигнал выбора ПЗУ
    	------------------------------------------------------------------------------------
    	ROM_SEL = Sel_A45 # C_MREQ; 
    
    	CS_ROM =  ROM_SEL;
    	------------------------------------------------------------------------------------
    	-- Сигнал чтения из ПЗУ
    	------------------------------------------------------------------------------------
    	RD_ROM = ROM_SEL # C_RD;			-- сигнал RDROM/ = A45 # RD # MREQ
    	-----------------------------------------------------------------------------------
    	-- Сигнал записи в ПЗУ
    	------------------------------------------------------------------------------------
    	WR_ROM = VCC; 							
    
    	------------------------------------------------------------------------------------
    	--			Порты
    	------------------------------------------------------------------------------------
    	-- Сигнал управление портами
    	------------------------------------------------------------------------------------
    	IO_ENABLE = !C_M1 # C_IORQGE; --C_IORQ # C_IORQGE;
    	------------------------------------------------------------------------------------
    	-- Сигнал чтения из портов
    	------------------------------------------------------------------------------------
    	IO_RD  = IO_ENABLE # C_RD;
    	------------------------------------------------------------------------------------
    	-- Сигнал записи в порты
    	------------------------------------------------------------------------------------
    	IO_WR =  IO_ENABLE # C_WR;
    
    	------------------------------------------------------------------------------------
    	-- Порт xx1Fh - Кемпстон джойстик 00011111b
    	-----------------------------------------------------------------------------------
    	RD_1F = CA[7] # !(CA[3..0] == B"1111") # !DOS_En # IO_RD;
    	------------------------------------------------------------------------------------
    	-- Порт xxFEh = 11111110b
    	------------------------------------------------------------------------------------
    	WR_FE = !(CA[3..0] == B"1110") # IO_WR;
    
    	Border_Color_r[2..0].d = CD[2..0];
    	Border_Color_r[2..0].clk   = WR_FE;
    	Border_Color_r[2..0].clrn  = C_RESET;
    
    	Tape_r.d      = CD[3];
    	Tape_r.clk    = WR_FE;
    	Tape_r.clrn   = C_RESET;
    
    	Beep_r.d      = CD[4];
    	Beep_r.clk    = WR_FE;
    	Beep_r.clrn   = C_RESET;
    
    	------------------------------------------------------------------------------------
    	-- Выход магнитофона
    	------------------------------------------------------------------------------------
    	TAPE_OUT = Tape_r.q;
    	------------------------------------------------------------------------------------
    	-- Выход звука
    	------------------------------------------------------------------------------------
    	BEEP = Beep_r.q;
    	------------------------------------------------------------------------------------
    	-- Выход блокировки ПЗУ
    	------------------------------------------------------------------------------------
    	--C_BLK = GND;
    	------------------------------------------------------------------------------------
    	-- Селектор порта 7FFDh
    	-----------------------------------------------------------------------------------
    	Sel_7FFD = CA[15] # !CA[14] # !(CA[3..0] == B"1101") # IO_WR;
    	------------------------------------------------------------------------------------
    	-- Порт 7FFDh 
    	-----------------------------------------------------------------------------------
    	WR_7FFD = Sel_7FFD # BLK_Port_r.q; 
    			
    	RAM0_Page_r[2..0].d = CD[2..0];
    	RAM0_Page_r[2..0].clk   = WR_7FFD;
    	RAM0_Page_r[2..0].clrn  = C_RESET;
    	
    	SCR128_r.d      = CD[3];
    	SCR128_r.clk    = WR_7FFD;
    	SCR128_r.clrn   = C_RESET;
    
    	ROM128_r.d      = CD[4];
    	ROM128_r.clk    = WR_7FFD;
    	ROM128_r.clrn   = C_RESET;
        
    	BLK_Port_r.d    = CD[5];
    	BLK_Port_r.clk  = WR_7FFD;
    	BLK_Port_r.clrn = C_RESET;
    
    	------------------------------------------------------------------------------------
    	-- Порты BFFDh и FFFDh
    	------------------------------------------------------------------------------------
    	BC1  =  CA[15] & CA[14] & (CA[3..0] == B"1101") & !IO_ENABLE;
    	BDIR =  CA[15] & (CA[3..0] == B"1101") & !IO_WR; 
    	------------------------------------------------------------------------------------
    	-- Частота AY-3-8912
    	------------------------------------------------------------------------------------
    	AYCLK  = Sync_count[2].q;		-- сигнал H1 = 1,75МГц
    	------------------------------------------------------------------------------------
    	-- Сигнал IODOS/
    	------------------------------------------------------------------------------------
    --	C_IODOS = VCC;
    	------------------------------------------------------------------------------------
    	-- Доступ к контроллеру дисковода
    	------------------------------------------------------------------------------------
    	DOS_En = !DOS_r.q;
    
    	------------------------------------------------------------------------------------
    	--			TR-DOS контроллер
    	------------------------------------------------------------------------------------
    	--  Выбор окна ПЗУ
    	------------------------------------------------------------------------------------
    	Sel_code = C_M1 # C_MREQ;
    
    	Sel_3dxx = !(CA[15..8] == B"00111101") # !ROM128_r.q # Sel_code;
    	------------------------------------------------------------------------------------
    	-- Сигнал выбора контроллера NMI/
    	------------------------------------------------------------------------------------
    	NMI_r.d    = C_MAGIC # !Sel_A45;
    	NMI_r.clk  = Sel_code;
    	NMI_r.prn  = Sel_3dxx;
    	------------------------------------------------------------------------------------
    	-- Сигнал NMI/
    	------------------------------------------------------------------------------------
    	C_NMI = NMI_r.q;
    	------------------------------------------------------------------------------------
    	-- Сигнал выбора контроллера DOS/
    	------------------------------------------------------------------------------------
    	DOS_r.clrn = C_RESET;
    	DOS_r.j    = !(Sel_3dxx & NMI_r.q);
    	DOS_r.clk  = !CLKZ;
    	DOS_r.k    = !(Sel_code # !Sel_A45);       
    	------------------------------------------------------------------------------------
    	-- Сигнал DOS/
    	------------------------------------------------------------------------------------
    	C_DOS = !DOS_r.q;
    
    	------------------------------------------------------------------------------------
    	--			Интерфейс клавиатуры   
    	------------------------------------------------------------------------------------
    	-- Порт xxFEh - Клавиатура
    	------------------------------------------------------------------------------------
    	RDFE_Sel = !(CA[3..0] == B"1110") # IO_RD;
    	-----------------------------------------------------------------------------------
    	-- Счетчик 
    	------------------------------------------------------------------------------------
    	KBD_save_en = KBD_count[0].q # KBD_count[1].q # KBD_count[2].q # !KBD_count[3].q;
    
    	KBD_count[].clk  = !KBD_CLK;
    	KBD_count[].ena  = KBD_save_en;
    	KBD_count[].clrn = !KBD_CS;
    	KBD_count[].d = KBD_count[].q + 1;
    	------------------------------------------------------------------------------------
    	-- Входной сдвигающий регистр
    	------------------------------------------------------------------------------------
    	KBD_shift_in[].clk = KBD_CLK;
    
    	IF KBD_count[3].q ==0 THEN 
    		KBD_shift_in[].d = (KBD_shift_in[7-1..0].q,KBD_DI);
    	ELSE
    	   	KBD_shift_in[].d = KBD_shift_in[].q; 
    	END IF;
    	------------------------------------------------------------------------------------
    	-- Регистры клавиатуры
    	------------------------------------------------------------------------------------
    	KBD_regA8[4..0].d  = KBD_shift_in[7..3].q;
       	KBD_regA9[4..0].d  = KBD_shift_in[7..3].q;
       	KBD_regA10[4..0].d = KBD_shift_in[7..3].q;
       	KBD_regA11[4..0].d = KBD_shift_in[7..3].q;
       	KBD_regA12[4..0].d = KBD_shift_in[7..3].q;
       	KBD_regA13[4..0].d = KBD_shift_in[7..3].q;
       	KBD_regA14[4..0].d = KBD_shift_in[7..3].q;
       	KBD_regA15[4..0].d = KBD_shift_in[7..3].q;
    
       	KBD_regA8[].clk = KBD_CLK;
       	KBD_regA8[].ena = KBD_count[3].q & (KBD_shift_in[2..0].q == B"000");
       	KBD_regA8[].prn = C_RESET;
    
       	KBD_regA9[].clk = KBD_CLK;
       	KBD_regA9[].ena = KBD_count[3].q & (KBD_shift_in[2..0].q == B"001");
       	KBD_regA9[].prn = C_RESET;
    
       	KBD_regA10[].clk = KBD_CLK;
       	KBD_regA10[].ena = KBD_count[3].q & (KBD_shift_in[2..0].q == B"010");
       	KBD_regA10[].prn = C_RESET;
    
       	KBD_regA11[].clk = KBD_CLK;
       	KBD_regA11[].ena = KBD_count[3].q & (KBD_shift_in[2..0].q == B"011");
       	KBD_regA11[].prn = C_RESET;
    
       	KBD_regA12[].clk = KBD_CLK;
       	KBD_regA12[].ena = KBD_count[3].q & (KBD_shift_in[2..0].q == B"100");
       	KBD_regA12[].prn = C_RESET;
    
       	KBD_regA13[].clk = KBD_CLK;
       	KBD_regA13[].ena = KBD_count[3].q & (KBD_shift_in[2..0].q == B"101");
       	KBD_regA13[].prn = C_RESET;
    
       	KBD_regA14[].clk = KBD_CLK;
       	KBD_regA14[].ena = KBD_count[3].q & (KBD_shift_in[2..0].q == B"110");
       	KBD_regA14[].prn = C_RESET;
    
       	KBD_regA15[].clk = KBD_CLK;
       	KBD_regA15[].ena = KBD_count[3].q & (KBD_shift_in[2..0].q == B"111");
       	KBD_regA15[].prn = C_RESET;
       	------------------------------------------------------------------------------------
       	-- Выходной буфер
       	------------------------------------------------------------------------------------
       	KBD_rddata[0].in = (CA8 # KBD_regA8[0].q) & (CA9 # KBD_regA9[0].q) & (CA10 # KBD_regA10[0].q) & (CA11 # KBD_regA11[0].q) & (CA12 # KBD_regA12[0].q) & (CA13 # KBD_regA13[0].q) & (CA14 # KBD_regA14[0].q) & (CA15 # KBD_regA15[0].q); 
       	KBD_rddata[1].in = (CA8 # KBD_regA8[1].q) & (CA9 # KBD_regA9[1].q) & (CA10 # KBD_regA10[1].q) & (CA11 # KBD_regA11[1].q) & (CA12 # KBD_regA12[1].q) & (CA13 # KBD_regA13[1].q) & (CA14 # KBD_regA14[1].q) & (CA15 # KBD_regA15[1].q); 
       	KBD_rddata[2].in = (CA8 # KBD_regA8[2].q) & (CA9 # KBD_regA9[2].q) & (CA10 # KBD_regA10[2].q) & (CA11 # KBD_regA11[2].q) & (CA12 # KBD_regA12[2].q) & (CA13 # KBD_regA13[2].q) & (CA14 # KBD_regA14[2].q) & (CA15 # KBD_regA15[2].q); 
       	KBD_rddata[3].in = (CA8 # KBD_regA8[3].q) & (CA9 # KBD_regA9[3].q) & (CA10 # KBD_regA10[3].q) & (CA11 # KBD_regA11[3].q) & (CA12 # KBD_regA12[3].q) & (CA13 # KBD_regA13[3].q) & (CA14 # KBD_regA14[3].q) & (CA15 # KBD_regA15[3].q); 
       	KBD_rddata[4].in = (CA8 # KBD_regA8[4].q) & (CA9 # KBD_regA9[4].q) & (CA10 # KBD_regA10[4].q) & (CA11 # KBD_regA11[4].q) & (CA12 # KBD_regA12[4].q) & (CA13 # KBD_regA13[4].q) & (CA14 # KBD_regA14[4].q) & (CA15 # KBD_regA15[4].q); 
    	KBD_rddata[5].in = VCC;
    	KBD_rddata[6].in = TAPE_IN;
    	KBD_rddata[7].in = VCC;
    
    	KBD_rddata[].oe = !RDFE_Sel;
    	DATA_CPU[] = KBD_rddata[].out;
    
       	------------------------------------------------------------------------------------
       	-- Чтение из буферного регистра
       	------------------------------------------------------------------------------------
    	RD_MEMORY = !Sel_A45 # C_MREQ # C_RD;
    
    	REG_rddata[].in = Ram_buf[].q;
    	REG_rddata[].oe = !RD_MEMORY;
    
    	DATA_CPU[] = REG_rddata[].out;
    
    	CD[] = DATA_CPU[].out;
    
    	------------------------------------------------------------------------------------
    	--				Скандаблер на одну строку
    	------------------------------------------------------------------------------------
    	-- Счетчик адреса знакомест
    	------------------------------------------------------------------------------------
    	RH = HReset;
    
    	WHSync_count[].clk   = CLK_14MHZ;
    	WHSync_count[].d     = WHSync_count[].q+1;
    	WHSync_count[].clrn  = !RH;
    
    	VHSync_count[].clk = !WHSync_count[5].q;
    	VHSync_count[].d   = VHSync_count[].q+1;
    	VHSync_count[].clrn  = VHReset & !RH;
    
    	SHSync_count[].clk = !WHSync_count[6].q;
    	SHSync_count[].d   = SHSync_count[].q+1;
    	SHSync_count[].clrn  = SHReset & !RH;
    
    	VHReset = !(VHSync_count[2..0].q ==B"111");
    	VHBlank = !(VHSync_count[2..0].q ==B"101");
    	SHReset = !(SHSync_count[2..0].q ==B"111");
    	------------------------------------------------------------------------------------
    	-- Строб строки знакомест
    	------------------------------------------------------------------------------------
    	MUX_data = !MUX_strobe.q;
    	MUX_strobe.clk = !(SHSync_count[2..0].q ==B"101");
    	MUX_strobe.d = MUX_data;
    
    	PA[9] = MUX_strobe.q $ VWR_strobe;
    	------------------------------------------------------------------------------------
    	-- Запись в буфер знакомест
    	------------------------------------------------------------------------------------
    	VWR_strobe = WHSync_count[0] & CLK_14MHZ;
    
    	VWR = !VWR_strobe;
    	------------------------------------------------------------------------------------
    	-- Aдреса знакомест
    	-----------------------------------------------------------------------------------
    	IF VWR_strobe == 0 THEN
       		PA[0] = WHSync_count[0].q;		-- 7MГЦ
    		PA[1] = WHSync_count[1].q; 		-- 3,5МГЦ
    		PA[2] = WHSync_count[2].q; 		-- 1,75МГЦ
    		PA[3] = WHSync_count[3].q;		-- 0,875МГЦ 
    		PA[4] = WHSync_count[4].q; 		-- 0,875МГЦ 
    		PA[5] = WHSync_count[5].q; 		-- 0,4375МГЦ 
    
    		PA[6] = VHSync_count[0].q;		-- 0,21875МГЦ  
    		PA[7] = VHSync_count[1].q; 		-- 0,109375МГЦ 
    		PA[8] = VHSync_count[2].q; 		-- 0,0546875МГЦ 
    
    	ELSE
    		PA[0] = WHSync_count[1].q; 		-- 3,5МГЦ
    		PA[1] = WHSync_count[2].q; 		-- 1,75МГЦ
    		PA[2] = WHSync_count[3].q;		-- 0,875МГЦ 
    		PA[3] = WHSync_count[4].q; 		-- 0,875МГЦ 
    		PA[4] = WHSync_count[5].q; 		-- 0,4375МГЦ 
    		PA[5] = WHSync_count[6].q;		-- 0,21875МГЦ  
    
    		PA[6] = SHSync_count[0].q; 		-- 0,109375МГЦ 
    		PA[7] = SHSync_count[1].q; 		-- 0,0546875МГЦ 
    		PA[8] = SHSync_count[2].q; 		-- 0,0546875МГЦ 
    	END IF;
    		PA[10] = GND;
    		PA[11] = GND;
    		PA[12] = GND;
    		PA[13] = VCC;
    		PA[14] = GND;
    	------------------------------------------------------------------------------------
    	-- Строб видеоданных
    	------------------------------------------------------------------------------------
    	VD[0] = VD_reg[0].q;		-- Blue0
    	VD[1] = VD_reg[1].q;		-- Blue1
    
    	VD[2] = VD_reg[2].q;		-- Red0
    	VD[3] = VD_reg[3].q;		-- Red1
    	VD[4] = GND;			-- Red2
    
    	VD[5] = VD_reg[4].q;		-- Green0
    	VD[6] = VD_reg[5].q;		-- Green1
    	VD[7] = GND;			-- Green2
    
    	VD_reg[].clk  = CLK_14MHZ;
    	VD_reg[].d    = PD[];
    	VD_reg[].clrn = VHBlank;
    
    	REG_wscan[].in = Reg_vid[].q;
    	REG_wscan[].oe = VWR_strobe;
    
    	PD[] = REG_wscan[].out;
    
    END;
    - - - Добавлено - - -

    Сейчас посмотрел немного код Dizzy 3 в эмуляторе и похоже причина в IM 2. Тоесть когда стоит режим IM 1 то он замечательно работает, но как только переводит в IM 2 то похоже первое же прерывание приводит к краху всю систему
    Сайт поддержки моих изделий - http://micklab.ru/
    Группа ВКонтакте - https://vk.com/micklab

  9. #128
    Guru
    Регистрация
    24.01.2008
    Адрес
    Уфа
    Сообщений
    3,852
    Спасибо Благодарностей отдано 
    84
    Спасибо Благодарностей получено 
    235
    Поблагодарили
    171 сообщений
    Mentioned
    9 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Mick Посмотреть сообщение
    как только переводит в IM 2 то похоже первое же прерывание приводит к краху всю систему
    А что у нас на шине данных в момент IM 2 ?

  10. #129
    Moderator Аватар для Mick
    Регистрация
    14.06.2005
    Адрес
    г. Калуга
    Сообщений
    9,924
    Спасибо Благодарностей отдано 
    179
    Спасибо Благодарностей получено 
    697
    Поблагодарили
    368 сообщений
    Mentioned
    19 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от b2m Посмотреть сообщение
    А что у нас на шине данных в момент IM 2 ?
    А фиг его знает. Надо думу думать.
    Вроде код рабочий (на Игрософте наигрался), хотя и есть небольшие изменения.
    Сайт поддержки моих изделий - http://micklab.ru/
    Группа ВКонтакте - https://vk.com/micklab

  11. #130
    Guru
    Регистрация
    24.01.2008
    Адрес
    Уфа
    Сообщений
    3,852
    Спасибо Благодарностей отдано 
    84
    Спасибо Благодарностей получено 
    235
    Поблагодарили
    171 сообщений
    Mentioned
    9 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Mick Посмотреть сообщение
    А фиг его знает. Надо думу думать.
    Это я к тому, что многие программы рассчитывают, что там FF будет, и располагают адрес вектора перехода по адресу ххFF, где хх - содержимое регистра I
    Видимо, у тебя не FF

Страница 13 из 21 ПерваяПервая ... 91011121314151617 ... ПоследняяПоследняя

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

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

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

Похожие темы

  1. Компьютер "ZXM-Alcyon" - Обсуждение
    от Mick в разделе Phoenix
    Ответов: 32
    Последнее: 28.03.2024, 09:10
  2. Компьютер "ZXM-Pentagon" - Обсуждение
    от Mick в разделе Pentagon
    Ответов: 195
    Последнее: 01.10.2023, 12:07
  3. Ответов: 1076
    Последнее: 11.05.2022, 06:59
  4. Ответов: 105
    Последнее: 16.05.2016, 12:25
  5. Компьютер "ZXM-Zephyr" - Обсуждение
    от Mick в разделе Phoenix
    Ответов: 530
    Последнее: 02.11.2015, 11:55

Ваши права

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