Помимо GDI и DDraw там ещё варианты были - их попробуй. Или поставь режим Bilinear или как его там - тоже никакого тулбара не будет.
Вид для печати
Помимо GDI и DDraw там ещё варианты были - их попробуй. Или поставь режим Bilinear или как его там - тоже никакого тулбара не будет.
Jeffie, ты слишком уж привередливый. Имхо это мелочь по сравнению с процессом перехода от fullscreen к windowed, когда экран винды не обновляется и приходится тыкаться в minimize/maximize, обновлять экран.Цитата:
Сообщение от Jeffie
но я привык. и, почему-то ни разу не переходил от windowed к fullscreen ;)
:) :) :)
Да я вроде и не ругался нигде.........., sos.l как я понимаю не изменил свой формат и новом релизе унреала(в отличии от ini)?
И еще- очень хотелось бы АТМ-срм дискетки читать, у меня много всякой
бодяги на них все еще валяется в чулане, если кот на них не нагадил........
;)
ладно всем привет и спасибо
в GDI можно пофиксить, если напрягает. а в ddraw не должно быть такогоЦитата:
Сообщение от Jeffie
это вроде исправил несколько версий назад...Цитата:
Сообщение от diver
пока мне больше нравится frame resampler, сейчас занимаюсь увеличением его контрастности. даже не знаю, делать что-ли его и оконным тоже, раз такое дело...Цитата:
Сообщение от diver
он поменяется, только если поменяется пршивка BASIC48, поэтому я его не выкладываю каждый разЦитата:
Сообщение от Goga
дык, какие проблемы? :) нужен копировщик типа AMD или Teledisk, и всё...Цитата:
Сообщение от Goga
Одназначно ;) Реальная штука, огромный thx ;)Цитата:
пока мне больше нравится frame resampler, сейчас занимаюсь увеличением его контрастности. даже не знаю, делать что-ли его и оконным тоже, раз такое дело...
Да, кстати... Эмуляция модема в UnrealSpeccy 0.29b изначально неработоспособна в принципе. Пока делал терминалку, доработал чуть-чуть. Тоже кое-чего не хватает еще, но хотя бы работает.
MODEM.C:
Код:void ISA_MODEM::open(unsigned char port)
{
if (open_port == port) return;
whead = wtail = rhead = rtail = 0;
if (hPort && hPort != INVALID_HANDLE_VALUE) CloseHandle(hPort);
open_port = port;
if (!port) return;
char portName[6] = "COM*"; portName[3] = port + '0';
hPort = CreateFile(portName, GENERIC_READ | GENERIC_WRITE, 0, 0, OPEN_EXISTING, 0, 0);
if (hPort == INVALID_HANDLE_VALUE) {
printf("can't open modem on %s (%08X)\n", portName, GetLastError());
conf.modem_port = open_port = 0; return;
}
COMMTIMEOUTS times;
times.ReadIntervalTimeout = MAXDWORD;
times.ReadTotalTimeoutMultiplier = 0;
times.ReadTotalTimeoutConstant = 0;
times.WriteTotalTimeoutMultiplier = 0;
times.WriteTotalTimeoutConstant = 0;
SetCommTimeouts(hPort, ×);
#if 0
DCB dcb;
if (GetCommState(hPort, &dcb)) {
printf(
"modem state:\n"
"rate=%d\n"
"parity=%d, OutxCtsFlow=%d, OutxDsrFlow=%d, DtrControl=%d, DsrSensitivity=%d\n"
"TXContinueOnXoff=%d, OutX=%d, InX=%d, ErrorChar=%d\n"
"Null=%d, RtsControl=%d, AbortOnError=%d, XonLim=%d, XoffLim=%d\n"
"ByteSize=%d, Parity=%d, StopBits=%d\n"
"XonChar=#%02X, XoffChar=#%02X, ErrorChar=#%02X, EofChar=#%02X, EvtChar=#%02X\n\n",
dcb.BaudRate,
dcb.fParity, dcb.fOutxCtsFlow, dcb.fOutxDsrFlow, dcb.fDtrControl, dcb.fDsrSensitivity,
dcb.fTXContinueOnXoff, dcb.fOutX, dcb.fInX, dcb.fErrorChar,
dcb.fNull, dcb.fRtsControl, dcb.fAbortOnError, dcb.XonLim, dcb.XoffLim,
dcb.ByteSize, dcb.Parity, dcb.StopBits,
(BYTE)dcb.XonChar, (BYTE)dcb.XoffChar, (BYTE)dcb.ErrorChar, (BYTE)dcb.EofChar, (BYTE)dcb.EvtChar);
}
#endif
}
void ISA_MODEM::close()
{
if (!hPort || hPort == INVALID_HANDLE_VALUE) return;
CloseHandle(hPort); hPort = INVALID_HANDLE_VALUE;
open_port = 0;
}
void dump1(BYTE *p, unsigned sz)
{
while (sz) {
printf("\t");
unsigned chunk = (sz > 16)? 16 : sz;
for (unsigned i = 0; i < chunk; i++) printf("%02X ", p[i]);
for (; i < 16; i++) printf(" ");
for (i = 0; i < chunk; i++) printf("%c", (p[i] < 0x20)? '.' : p[i]);
printf("\n");
sz -= chunk, p += chunk;
}
printf("\n");
}
void ISA_MODEM::io()
{
if (!hPort || hPort == INVALID_HANDLE_VALUE) return;
unsigned char temp[BSIZE];
int needwrite = whead - wtail; if (needwrite < 0) needwrite += BSIZE;
if (needwrite) {
if (whead > wtail) memcpy(temp, wbuf+wtail, needwrite);
else memcpy(temp, wbuf+wtail, BSIZE-wtail), memcpy(temp+BSIZE-wtail, wbuf, whead);
DWORD written = 0;
if (WriteFile(hPort, temp, needwrite, &written, 0)) {
//printf("\nsend: "); dump1(temp, written);
wtail = (wtail+written) & (BSIZE-1);
}
}
if (((whead+1) & (BSIZE-1)) != wtail) reg[5] |= 0x60;
int canread = rtail - rhead - 1; if (canread < 0) canread += BSIZE;
if (canread) {
DWORD read = 0;
if (ReadFile(hPort, temp, canread, &read, 0) && read) {
for (unsigned i = 0; i < read; i++) rcbuf[rhead++] = temp[i], rhead &= (BSIZE-1);
//printf("\nrecv: "); dump1(temp, read);
}
}
if (rhead != rtail) reg[5] |= 1;
setup_int();
}
void ISA_MODEM::setup_int()
{
reg[6] &= ~0x10;
unsigned char mask = reg[5] & 1;
if (reg[5] & 0x20) mask |= 2, reg[6] |= 0x10;
if (reg[5] & 0x1E) mask |= 4;
// if (mask & reg[1]) cpu.nmi()
if (mask & 4) reg[2] = 6;
else if (mask & 1) reg[2] = 4;
else if (mask & 2) reg[2] = 2;
else if (mask & 8) reg[2] = 0;
else reg[2] = 1;
}
void ISA_MODEM::write(unsigned nreg, unsigned char value)
{
if ((1<<nreg) & ((1<<2)|(1<<5)|(1<<6))) return; // R/O registers
if (nreg < 2 && (reg[3] & 0x80)) {
div[nreg] = value;
DCB dcb;
if (GetCommState(hPort, &dcb)) {
if (divfq == 0) { divfq = 1; }
dcb.BaudRate = 115200 / divfq;
SetCommState(hPort, &dcb);
}
return;
}
if (nreg) {
reg[nreg] = value;
if (nreg == 3) {
// LCR set, renew modem config
DCB dcb;
if (GetCommState(hPort, &dcb)) {
// printf(
"modem state:\n"
"rate=%d\n"
"parity=%d, OutxCtsFlow=%d, OutxDsrFlow=%d, DtrControl=%d, DsrSensitivity=%d\n"
"TXContinueOnXoff=%d, OutX=%d, InX=%d, ErrorChar=%d\n"
"Null=%d, RtsControl=%d, AbortOnError=%d, XonLim=%d, XoffLim=%d\n"
"ByteSize=%d, Parity=%d, StopBits=%d\n"
"XonChar=#%02X, XoffChar=#%02X, ErrorChar=#%02X, EofChar=#%02X, EvtChar=#%02X\n\n",
dcb.BaudRate,
dcb.fParity, dcb.fOutxCtsFlow, dcb.fOutxDsrFlow, dcb.fDtrControl, dcb.fDsrSensitivity,
dcb.fTXContinueOnXoff, dcb.fOutX, dcb.fInX, dcb.fErrorChar,
dcb.fNull, dcb.fRtsControl, dcb.fAbortOnError, dcb.XonLim, dcb.XoffLim,
dcb.ByteSize, dcb.Parity, dcb.StopBits,
(BYTE)dcb.XonChar, (BYTE)dcb.XoffChar, (BYTE)dcb.ErrorChar, (BYTE)dcb.EofChar, (BYTE)dcb.EvtChar);
dcb.fBinary = TRUE;
dcb.fParity = ((reg[3] & 0x8) != 0) ? TRUE : FALSE;
dcb.fOutxCtsFlow = FALSE;
dcb.fOutxDsrFlow = FALSE;
dcb.fDtrControl = DTR_CONTROL_DISABLE;
dcb.fDsrSensitivity = FALSE;
dcb.fTXContinueOnXoff = FALSE;
dcb.fOutX = FALSE;
dcb.fInX = FALSE;
dcb.fErrorChar = FALSE;
dcb.fNull = FALSE;
dcb.fRtsControl = RTS_CONTROL_DISABLE;
dcb.fAbortOnError = FALSE;
dcb.ByteSize = 6 + (reg[3] & 2) - (reg[3] & 1);
if ((reg[3] & 0x8) == 0) {
dcb.Parity = NOPARITY;
} else if ((reg[3] & 0x30) == 0) {
dcb.Parity = ODDPARITY;
} else if ((reg[3] & 0x30) == 0x10) {
dcb.Parity = EVENPARITY;
} else if ((reg[3] & 0x30) == 0x20) {
dcb.Parity = MARKPARITY;
} else {
dcb.Parity = SPACEPARITY;
}
if ((reg[3] & 0x4) == 0) {
dcb.StopBits = ONESTOPBIT;
} else if ((reg[3] & 3) == 1) {
dcb.StopBits = ONE5STOPBITS;
} else {
dcb.StopBits = TWOSTOPBITS;
}
SetCommState(hPort, &dcb);
}
} else if (nreg == 4) {
// MCR set, renew DTR/CTS
if ((reg[4] & 1) == 0) {
EscapeCommFunction(hPort, CLRDTR);
} else {
EscapeCommFunction(hPort, SETDTR);
}
if ((reg[4] & 2) == 0) {
EscapeCommFunction(hPort, CLRRTS);
} else {
EscapeCommFunction(hPort, SETRTS);
}
}
return;
}
reg[5] &= ~0x60;
if (((whead+1) & (BSIZE-1)) == wtail) {
reg[5] |= 2;
} else {
wbuf[whead++] = value, whead &= (BSIZE-1);
if (((whead+1) & (BSIZE-1)) != wtail) reg[5] |= 0x60;
}
setup_int();
}
unsigned char ISA_MODEM::read(unsigned nreg)
{
unsigned char result = reg[nreg];
if (nreg < 2) {
if (reg[3] & 0x80) result = div[nreg];
else if (!nreg) {
reg[5] &= ~1;
if (rhead != rtail) result = reg[0] = rcbuf[rtail++], rtail &= (BSIZE-1);
if (rhead != rtail) reg[5] |= 1;
setup_int();
}
} else if (nreg == 5) reg[5] &= ~0x0E, setup_int();
return result;
}
ну зачем так сразу "в принципе не способен..." у меня работала программа ping 0.3, другого софта я не видел (терминалки не в счёт - мне некуда коннектиться)
спасибо. как я понял, пофиксен глюк с чтением лишнего символа из буфера чтения и спектрум теперь может выбирать скорость и режим обмена, раньше использовались значения, которые автоматически выбрала windows
теперь новый вопрос. сейчас я думаю, а не поддержать ли CD-ROM? но пока не вижу софта, кроме CD-WALK. нужен софт для audio-cd и data-cd. если нет ничего кроме CD-WALK, то, с одной стороны, может cd-rom нафиг не нужен спектрумистам. а, с другой, мне не на чём будет отлаживать эмулятор :(
думаю стоит!и заодно потерроризировать psb^triumph (psbhlw@mail.ru)Цитата:
Сообщение от SMT
т.к этот мегачел сваял в своё время прогу для просмотра видеофильмов на zx (звук через gs).
Обязательно стОит! И ay-mouse хочу...Цитата:
Сообщение от SMT
Есть, начиная с версии UnrealSpeccy v0.28bЦитата:
Сообщение от DizZy
вопрос не в том, стоит или не стоит, а в том, где взять софт!
вот ещё софт:Цитата:
Сообщение от SMT
-----------------
WDC 0.9 + mini CD player 0.2
Эта прога копирует'n'слушает файлы с CD.
Работает толька при наличии IDE-контроллера.
http://zxfiles.raww.net/system/wcd.zip
-------------------------------
а ещё, кажется, newart про видео на CD что-то говорил
сабж :(
frame resampler + full border = megasux :(
а ещё в куче мест не чистится звуковой буфер, поэтому там зацикленный фрагмент повторяется, когда диалог какой-нибудь открыт и т.п.
уже что-чтоЦитата:
Сообщение от MadCat!
первым этот баг нашёл я, вторым - Alex/AT. а вообще, frame resampler + blitter = megarulez :)Цитата:
Сообщение от MadCat!
кому мешает, могут в нужных местах по вкусу навтыкать sound_stop()Цитата:
Сообщение от MadCat!
вот ребус http://zxfiles.raww.net/system/wcd.zip - ссылка на 404. а wdc.zip - скачалось :)
я в этом не сомневаюсь ;)Цитата:
Сообщение от SMT
в каждой бете? :(Цитата:
Сообщение от SMT
а ещё при maxspeed был этот глюк...
Sorry... эт я из-за дублирующихся байтиков при чтении. Имхо они убивают любую прогу ;) Хотя раз ping 0.3 работал... но как?!Цитата:
ну зачем так сразу "в принципе не способен..."
Там еще сигналы RTS/DCD/RI он читать не умеет. Сделаю возможность на днях.
А нечего даунлоадменеджерами пользоваться :) - родная скачка на "секретную страницу" не перепрыгивает (под Win)Цитата:
Сообщение от SMT
очень просто. ошибочно повторно читается только последний байт в буфере. буфер заполняется по сигналу INT, в перерывах между интами происходит чтение данных из модема. если это строка от модема, лишний перевод строки не помешает, а если это пакет (например, ip-пакет), то у него есть поле "длина пакета" и когда получено на байт больше, софт всё равно ориентируется на это поле, не берёт лишнееЦитата:
Сообщение от Alex/AT
ничего не понял. если просто ткнуть в ссылку, показывает страницу с красным треугольником и "The requested URL was not found on this server. "Цитата:
Сообщение от rasmer
можно попробовать дождаться финала, или остановиться для себя на наиболее удобной версии :PЦитата:
Сообщение от MadCat!
Аааа... понятно. У меня чтение не завязано на инты, отсюда и грабли... А FIFO буфер реального COM-порта всего 16 байт, т.е. порядка 9500 тактов на все про все между чтениями на 57600 - иначе труба...Цитата:
буфер заполняется по сигналу INT, в перерывах между интами происходит чтение данных из модема.
З.Ы. Интересно, PING на реальном ZX работать будет? Сдается мне, что нет ;)
это надо у caro спросить :)
залил версию 0.30b на http://sf.net/projects/unrealspeccy/
появилась поддержка kay-256/1024, значительно улучшен фильтр frame resampler, добавлен atapi cd-rom на ide-канале
... пойду съем пирожок и спать :)
со стандартными ПЗУ kay у меня не работает. вот тут пзу с переставленными страницами tr-dos и service
Теледиск и амд(а так-же 22дск) под хр не катят, сейчас ммх-233 надыбал (в чулане валялась) на ней буду пробовать, правда СИММ еще 32пин надо найти :confused:
Там вроде под АТМ новая прошивка появилась, с поддержкой ндд- в унреале надо новую версию ваять......... :wink: :wink: :wink:
не пойму, как название CD-ROM'а, которое в .ini прописывается получить? у меня два алкогольных виртуальника (I и V) и настоящий NEC (X). я и из свойств дисковода пытался название брать, и то, что в биосе, всё равноЦитата:
Сообщение от SMT
:(Цитата:
error: no physical device <_NEC CD-RW NR-9100A 2.12>
легче всего нажать alt-f1, закладку HDD, выбрать контроллер (NEMO, напр.), нажать [...], выбрать cd-rom и скопировать имя устройства вместе со скобками в буфер обмена (или переписать данные при старте из консоли). нужно писать <устройство,номер>, а bios серийный номер не показывает. поэтому траблы
Ну вот! дождались очередного релиза унреала!
Хорошо бы еще добавить кнопку записи новой конфигурации по alt+f1
в ini файлик, чтоб не гимороится каждый раз восстанавливая конфиг- свой.
а ты настраивай не в alt-f1, а сразу в ini-файле
блин, я [hdd]->skipreal не так трактовал, поэтому он у меня отключен был и в "..." ничего не было :) сейчас разобрался. только с двумя виртуальниками проблема: можно выбрать только первый (у них названия одинаковые). Кстати, как оказалось, unrealSpeccy в wdc и DVD поддерживает :)Цитата:
Сообщение от SMT
ещё пара сложноуловимых багов, которые уже давно присутствуют:
1) кнопка Pause иногда срабатывает как SPACE (?или ещё какая-нибудь). лечится выходом в отладчик или в опции с последующим возвратом. Появляется этот глюк периодически (довольно часто) и уже давно присутствует.
2) частенько убиваются какие-то куски эмуля, в результате чего не работает F12 (вместо сброса в service сбрасывает в 48 или не тот rom подсовывается: у меня QC "прошит", а сбрасывается в TR-DOS ). Появляется глюк иногда при загрузке .sna, лечится только перезапуском эмуля (по Alt+F1 перестановка rom-presets ничего не даёт). точно присутствовал в прошлой версии.
об этом я не подумал...Цитата:
с двумя виртуальниками проблема: можно выбрать только первый (у них названия одинаковые)
то есть в бейсике печатается пробел?Цитата:
кнопка Pause иногда срабатывает как SPACE (?или ещё какая-нибудь).
это какие-то определённые SNA, или любые?Цитата:
не работает F12 (вместо сброса в service сбрасывает в 48 или не тот rom подсовывается: у меня QC "прошит", а сбрасывается в TR-DOS ). Появляется глюк иногда при загрузке .sna
Ручками- оно понятно-можно, но хоцца чоб от пимпочки рулила :) :) ;) ;)
Виндовоз всё-таки----пусть трудится;)
Goga: исходники есть. если так надо, ну запиши сотню настроек в тесктовый файл, только не отмазывайся, что си не знаешь :)
Ну я же не попса, ремейки плодить..........
Просто автор заведомо лучше любого знает как и где у него
раскидано по программе........
Разбираться - откровенно говоря времени нет. Работа, хобби, машина, семья, и так далее..... Хозяину проще- заодно блеснуть утонченностью :) ;) :)
Дело в том что при подобное записи уьются все "комментарии" из текущего конфига. А это не есть хорошо.
Хотя, если подумать, наверняка есть библиотеки (может быть и стандартные) для "безопасной" работы с ini-файлами. Которые бы просто подменяли значения, не трогая остального.
ложная тревога. это оказывается PuntoSwitcher косячит. Пока в fullscreen сидел, не видно было.Цитата:
Сообщение от SMT
сейчас посмотрим...Цитата:
Сообщение от SMT
запустил эмуль, сделал .sna, загрузил .sna, F12, SUX ;)
ещё пара багов:
1) в highcolor и truecolor режимах (которые по Shift+F4) при включенном noflic показывается совсем не то, что при 256colors
2) кнопки от диалоговых окон передаются эмулю: когда делал .sna ввёл имя, нажал Enter, и этот Enter передался запущенноё в эмуле проге :(
SMT, а расскажи, как/чем .hdd файл сделать???
блин, неужели такая нужная вешь? всё это делается элементарно, только я считал, что это не нужно. но требуют далеко не первый раз. может, и сделаю...
выше это я про сохранение ini
это QC sux :) мой сервис ром так не делает. частенько зависания бывают у режимов скорпиона и АТМ из-за того, что сброс полагается на содержимое памяти. надо будет кнопочку "clear RAM" сделатьЦитата:
запустил эмуль, сделал .sna, загрузил .sna, F12, SUX
яркость не нравится, или что? эта фича, которую можно задизаблить через ini, только не спрашивай как :)Цитата:
в highcolor и truecolor режимах (которые по Shift+F4) при включенном noflic показывается совсем не то, что при 256colors
а вот и нифига. если нажимать аккуратно, всё ok. буфер очищается, но эмулятор кроме буфера спрашивает и физическое положение кнопки (нажата/отжата). уже после закрытия диалога начинается эмуляция z80 и когда происходит опрос клавиатуры, из-за того, что кнопку до сих пор не отпустили, она считается нажатой :)Цитата:
кнопки от диалоговых окон передаются эмулю: когда делал .sna ввёл имя, нажал Enter, и этот Enter передался запущенноё в эмуле проге
задать CHS и LBA в ini - появится пустой винчестер заданной ёмкости. если с него читать, читаются нули, если писать, файл раздувается вплоть по позиции записи. то есть hdd-файл создаётся любой программой. например, fdisk запишет 1-й сектор, format X: - FATы, просто копирование файлов на виртуальный винт забъёт остаток места. это всё про cp/m, с is-dos аналогично - просто работаешь как с абсолютно читым винтом, файл растёт самЦитата:
SMT, а расскажи, как/чем .hdd файл сделать
а ну ещё можно скопировать винт в HDD-файл с помощью нортон утилит под дос. или в винде \\.\PhysicalDrive0 (аналог линуксового /dev/hda) в файл. к сожалению, утилита винды copy блокирует имена устройств, чтобы юзеры ничего не напортачили, поэтому копировщик элементарно пишется из CreateFile и двух команд в цикле: ReadFile + WriteFile
Конечно нужная. Главным образом из-за того, что каждый раз при выходе новой версии нужно заново выполнять настройку эмулятора.Цитата:
блин, неужели такая нужная вешь? всё это делается элементарно, только я считал, что это не нужно. но требуют далеко не первый раз. может, и сделаю...