ZXevolution + RS-232

ZX evolution software and hardware

Postby DimkaM » 19 Aug 2011, 12:17

CHRV wrote:З.Ы. Рекомендую проверить работу с Камилевской картой MC (имеется ввиду совместимость по RTS/CTS)

Карты нету у меня, а по сравнению с Унреалом - одинаково получается.
ZX-Evo rev B, ZX-Evo rev C, ZXNetUsb rev A, ZXNetUsb rev С
http://nedoos.ru/ http://ti6.zxevo.ru/
DimkaM
 
Posts: 1387
Joined: 24 Mar 2010, 13:42
Location: джунгли Амазонки
Group: Registered users

Postby deathsoft » 19 Aug 2011, 19:50

DimkaM wrote:А то мну надо уже определится как процедуры писать.

Писать процедуры для совместимости с говнокодом - самому стать говнокодером, надо писать под то - как должно быть, а говнокод чтобы исправляли, а не костыли писать для совместимости с говнокодом.
User avatar
deathsoft
 
Posts: 358
Joined: 07 Apr 2007, 01:58
Group: Registered users

Postby DimkaM » 19 Aug 2011, 22:46

to deathsoft: У меня Унреал(0.37.5 и 0.37.6) СTS не принимает, все время в единичке висит, не подскажешь чё не так делаю? RTS выпускает нормально.
ZX-Evo rev B, ZX-Evo rev C, ZXNetUsb rev A, ZXNetUsb rev С
http://nedoos.ru/ http://ti6.zxevo.ru/
DimkaM
 
Posts: 1387
Joined: 24 Mar 2010, 13:42
Location: джунгли Амазонки
Group: Registered users

Postby deathsoft » 20 Aug 2011, 01:15

DimkaM wrote:to deathsoft: У меня Унреал(0.37.5 и 0.37.6) СTS не принимает

Текущий унриал не умеет читать CTS. Можно это доделать, только надо доку на уарт смотреть из какого бита и какого порта читается CTS.
Посмотрел доку: Бит 4 - порта 6 это CTS, бит 0 порта 6 - это CTS delta (устанавливается при изменении CTS).

Выслал в мыло исправленную версию (сам не тестировал).
User avatar
deathsoft
 
Posts: 358
Joined: 07 Apr 2007, 01:58
Group: Registered users

Postby DimkaM » 20 Aug 2011, 12:10

deathsoft wrote:Выслал в мыло исправленную версию (сам не тестировал).

Чёта всё равно не CTS не читается. Может виноват эмулятор компортовый. Пробовал и com0com и сериал сплиттер. Связываю две писюковые проги, CTS работает, а Унрил даже при "замыкании" RTS-CTS, не хочет.
deathsoft wrote:Посмотрел доку: Бит 4 - порта 6 это CTS, бит 0 порта 6 - это CTS delta (устанавливается при изменении CTS).
Вроде всё верно, по сути когда прога(Спековая)читает порт #FEEF, эмуль должен выдать значение из порта 06h ПиСюка. Можно с маской %00010001.
ZX-Evo rev B, ZX-Evo rev C, ZXNetUsb rev A, ZXNetUsb rev С
http://nedoos.ru/ http://ti6.zxevo.ru/
DimkaM
 
Posts: 1387
Joined: 24 Mar 2010, 13:42
Location: джунгли Амазонки
Group: Registered users

Postby deathsoft » 20 Aug 2011, 15:26

Вот фрагмент кода из унриала (функция unsigned char ISA_MODEM::read(unsigned nreg)) (может с чемто наебался, т.к. делал ночью):
Code: Select all
   if (nreg == 6)
   {
       DWORD ModemStatus;
       GetCommModemStatus(hPort, &ModemStatus);
       u8 r6 = reg[6];
       reg[6] &= ~(1 << 4);
       reg[6] |= (ModemStatus & MS_CTS_ON) ? (1 << 4): 0;
       reg[6] &= ~1;
       reg[6] |= ((r6 ^ reg[6]) & (1 << 4)) >> 4;
       result = reg[6];
   }
User avatar
deathsoft
 
Posts: 358
Joined: 07 Apr 2007, 01:58
Group: Registered users

Postby DimkaM » 20 Aug 2011, 16:55

deathsoft wrote:Вот фрагмент кода из унриала (функция unsigned char ISA_MODEM::read(unsigned nreg)) (может с чемто наебался, т.к. делал ночью):
Ну и загнул, походу твой мозг уже спал.
Я в С не очень, но может что то типа:
Code: Select all
if (nreg == 6)
   {
       DWORD ModemStatus;
       GetCommModemStatus(hPort, &ModemStatus);
       reg[6]= ((u8) ModemStatus)&%00010001;
       result = reg[6];
   }

Нахрена дельту вычислять, она уже есть в порте 06h. Биты один в один совппадают с Кондратьевым.
Last edited by DimkaM on 20 Aug 2011, 20:18, edited 1 time in total.
ZX-Evo rev B, ZX-Evo rev C, ZXNetUsb rev A, ZXNetUsb rev С
http://nedoos.ru/ http://ti6.zxevo.ru/
DimkaM
 
Posts: 1387
Joined: 24 Mar 2010, 13:42
Location: джунгли Амазонки
Group: Registered users

Postby DimkaM » 20 Aug 2011, 18:44

Блин я ступил, GetCommModemStatus не возвращает дельту. Тогда гдето так
Code: Select all
   if (nreg == 6)
   {
       DWORD ModemStatus;
       GetCommModemStatus(hPort, &ModemStatus);
       u8 r6 = reg[6] & MS_CTS_ON;
       reg[6] = ((u8)ModemStatus) & MS_CTS_ON;
       reg[6] |= (r6 ^ reg[6]) >> 4;
       result = reg[6];
   }
ZX-Evo rev B, ZX-Evo rev C, ZXNetUsb rev A, ZXNetUsb rev С
http://nedoos.ru/ http://ti6.zxevo.ru/
DimkaM
 
Posts: 1387
Joined: 24 Mar 2010, 13:42
Location: джунгли Амазонки
Group: Registered users

Postby deathsoft » 20 Aug 2011, 20:26

DimkaM wrote:Тогда гдето так

Мой код делает все независимо от значения микрософтовских констант, а твой заточен исключительно на то что они совпадают с битами порта. Более того ты еще и все биты порта обнуляешь вместо нужных.
User avatar
deathsoft
 
Posts: 358
Joined: 07 Apr 2007, 01:58
Group: Registered users

Postby DimkaM » 20 Aug 2011, 20:38

deathsoft wrote:а твой заточен исключительно на то что они совпадают с битами порта. Более того ты еще и все биты порта обнуляешь вместо нужных.
Я ж предупреждал что в С не силён. Твой код проанализировал, вроде всё правильно. Где затык х.з. Завтра на реальном СОМе проверю. Ща реальных ком портов нету у меня.

Да кстати, смотрю дату изменения emul.exe 17.08.2011 22.57
Толи браузер из кеша взял, толи ты мне не то выслал :crazy:
ZX-Evo rev B, ZX-Evo rev C, ZXNetUsb rev A, ZXNetUsb rev С
http://nedoos.ru/ http://ti6.zxevo.ru/
DimkaM
 
Posts: 1387
Joined: 24 Mar 2010, 13:42
Location: джунгли Амазонки
Group: Registered users

PreviousNext

Return to Пентева - софт и железо

Who is online

Users browsing this forum: Google [Bot] and 1 guest

cron