Společnost Proton AG stojící za Proton Mailem a dalšími službami přidala do svého portfolia online tabulky Proton Sheets v Proton Drive.
O víkendu (15:00 až 23:00) probíha EmacsConf 2025, tj. online konference vývojářů a uživatelů editoru GNU Emacs. Sledovat ji lze na stránkách konference. Záznamy budou k dispozici přímo z programu.
Provozovatel internetové encyklopedie Wikipedia jedná s velkými technologickými firmami o uzavření dohod podobných té, kterou má s Googlem. Snaží se tak zpeněžit rostoucí závislost firem zabývajících se umělou inteligencí (AI) na svém obsahu. Firmy využívají volně dostupná data z Wikipedie k trénování jazykových modelů, což zvyšuje náklady, které musí nezisková organizace provozující Wikipedii sama nést. Automatické programy
… více »Evropská komise obvinila síť 𝕏 z porušení unijních pravidel, konkrétně nařízení Evropské unie o digitálních službách (DSA). Vyměřila jí za to pokutu 120 milionů eur (2,9 miliardy Kč). Pokuta je podle názoru amerického ministra zahraničí útokem zahraničních vlád na americký lid. K pokutě se vyjádřil i americký viceprezident: „EU by měla podporovat svobodu projevu, a ne útočit na americké společnosti kvůli nesmyslům“.
Společnost Jolla spustila kampaň na podporu svého nového telefonu Jolla Phone se Sailfish OS. Dodání je plánováno na první polovinu příštího roku. Pokud bude alespoň 2 000 zájemců. Záloha na telefon je 99 €. Cena telefonu v rámci kampaně je 499 €.
Netflix kupuje Warner Bros. včetně jejích filmových a televizních studií HBO Max a HBO. Za 72 miliard dolarů (asi 1,5 bilionu korun).
V Las Vegas dnes končí pětidenní konference AWS re:Invent 2025. Společnost Amazon Web Services (AWS) na ní představila celou řadu novinek. Vypíchnout lze 192jádrový CPU Graviton5 nebo AI chip Trainium3.
Firma Proxmox vydala novou serverovou distribuci Datacenter Manager ve verzi 1.0 (poznámky k vydání). Podobně jako Virtual Environment, Mail Gateway či Backup Server je založená na Debianu, k němuž přidává integraci ZFS, webové administrační rozhraní a další. Datacenter Manager je určený ke správě instalací právě ostatních distribucí Proxmox.
Byla vydána nová verze 2.4.66 svobodného multiplatformního webového serveru Apache (httpd). Řešeno je mimo jiné 5 bezpečnostních chyb.
Programovací jazyk JavaScript (Wikipedie) dnes slaví 30 let od svého oficiálního představení 4. prosince 1995.
Rád bych v DosBoxu emuloval rychlost I/O operací starých pevných disků či nedejbože disketové mechaniky (DosBox nemá implementovaný FDC – to jen tak pro zajímavost), které měly přístupové doby několik stovek milisekund až klidně celé sekundy. Jak to vypadá? Nějak takto.
Zpomalení cyklů vykonávání na to nemá příliš vliv. Je to implementováno jako read() volání a to na dnešních strojích může být i pár volání a zachvilku je několik MB dat v paměti než stačí člověk lusknout prstem. Dodám že DosBox samotný (aspoň SVN verze) má implementovaný zpomalovací mechanismus pro I/O operace. Jeden v iohandleru.cpp:#define IODELAY_READ_MICROSk (Bit32u)(1024/1.0)
#define IODELAY_WRITE_MICROSk (Bit32u)(1024/0.75)
inline void IO_USEC_read_delay() {
Bits delaycyc = CPU_CycleMax/IODELAY_READ_MICROSk;
if(GCC_UNLIKELY(CPU_Cycles < 3*delaycyc)) delaycyc = 0; //Else port acces will set cycles to 0. which might trigger problem with games which read 16 bit values
CPU_Cycles -= delaycyc;
CPU_IODelayRemoved += delaycyc;
}
inline void IO_USEC_write_delay() {
Bits delaycyc = CPU_CycleMax/IODELAY_WRITE_MICROSk;
if(GCC_UNLIKELY(CPU_Cycles < 3*delaycyc)) delaycyc=0;
CPU_Cycles -= delaycyc;
CPU_IODelayRemoved += delaycyc;
}
a konkrétně pro diskové operace nad lokálními soubory se o to stará procedura modify_cycles();
#ifndef DOSBOX_CPU_H
#include "cpu.h"
#endif
static inline void modify_cycles(Bits value) {
if((4*value+5) < CPU_Cycles) {
CPU_Cycles -= 4*value;
CPU_IODelayRemoved += 4*value;
} else {
CPU_IODelayRemoved += CPU_Cycles/*-5*/; //don't want to mess with negative
CPU_Cycles = 5;
}
}
//použito:
if (DOS_ReadFile(reg_bx,dos_copybuf,&toread)) {
MEM_BlockWrite(SegPhys(ds)+reg_dx,dos_copybuf,toread);
reg_ax=toread;
CALLBACK_SCF(false);
} else {
reg_ax=dos.errorcode;
CALLBACK_SCF(true);
}
modify_cycles(reg_ax);
dos.echo=false;
break;
V proměnné reg_ax/value je počet bajtů co se bude číst/zapisovat a podle toho se nějak spočte prodleva a prskne se tam. Bohužel to není dokonalé a ač to znatelně zpomaluje I/O operace (když se to zaDEFuje tak jsou I/O operace tak rychlé že načítací obrazovky jen problikávají) stále je to příliš rychlé a to úplně nezávisle na tom co se do toho zadá.
Vysledoval jsem si použití proměnné CPU_IODelayRemoved, bohužel ta má pouze informativní účel (používá se pouze ustanovování dynamicky se měnící rychlosti) a nemá žádný vliv na samotné plánování vykonávání. O to se stará proměnná CPU_Cycles respektive to co v ní zbude. Bohužel v tom je také zakopaný celý pes. I když zbude jen pár cyklů je to furt dost na to aby to načetlo spoustu dat za pár instrukcí do paměti (volá se dál fread() a to už je vlastně systémová funkce a jede rychlostí systému).
Jedním funkčním řešením je vklínění funkce usleep() či něčeho podobného do volané procedury. Stačí zadat v milisekundách jak dlouho se má spát a samotné načítání pak funguje tak jako kdysi za starých časů, jenže po dobu co se spí je samozřejmě suspendováno také vykonávání celého virtuálního stroje DOSu, takže místo prodlev to v reálné čase vypadá tak že DosBox laguje jak kráva. Což není úplně přesně to čeho chci dosáhnout.
Má někdo nějaký lepší nápad jak to implementovat? Jak se to vlastně dělalo v reálném DOSu/BIOSu že vykonávání celé mašiny nebylo zastaveno (jednoznačně si pamatuju že třeba blikal kurzor) zatímco jednotka (a přitom úplně šumák jestli ta pevná nebo ta zplihlá) seekovala a četla?
Nejde o úplně standardní dotaz, takže se asi nebudu zlobit když se na nic lepšího nepodaří přijít. Ani nemůžu.
Blikání kurzoru dělá grafická karta. Proto existují textové režimy. Rychlost blikání a velikost kurzoru (první a poslední řádek ve znaku) se dá nastavit. Detaily si už nepamatuji, protože jsem to používal naposledy tak někdy před dvaceti lety. Kurzor bude blikat, i když se procesor zastaví.
Přístup k disketové mechanice skrze BIOS je blokující. Programy, co při formátování dělali ještě něco jiného, buď pracovali přímo s I/O porty a dokončení operací kontrovaly pollingem nebo prostě dělali operace po malých blocích a prokládali je s jiným užitečným programem. Ten užitečný program stejně většinou jen čekal na stisk klávesy a pak překreslil pár znaků. Takový kooperativní taskwitching byl samozřejmě poznat, že interaktivita psaní na klávesnici šla do háje.
Tak jsem našel na disku jednotku v Pascalu. K nastavení tvaru kurzoru jsem používal službu 01h na přerušení 10h. Podle tohoto návodu je možné místo přerušení BIOSu si popovídat přímo s grafickou kartou kartou skrze I/O porty 0x3d4 a 0x3d5.
Frekvenci blikání prý ale standardně měnit nelze. Asi se mi to popletlo s pozorování, že když se změnil textový režim, změnila se i rychlost blikání kurzoru. Ta je totiž daná vertikální obnovovací frekvencí obrazovky a ta se s rozlišením mění.
Přístup k disketové mechanice skrze BIOS je blokující. Programy, co při formátování dělali ještě něco jiného, buď pracovali přímo s I/O porty a dokončení operací kontrovaly pollingem nebo prostě dělali operace po malých blocích a prokládali je s jiným užitečným programem.Jenže jak tohle implementovat? Nemůžu prostě na pár milisekund zastavit vykonávání virtuálního stroje. Resp. můžu ale chování moc neodpovídá tomu jak se to opravdu chovalo (až na to přehrávání OPLka, to to simuluje při zátěži vcelku věrně). Týden jsem se rýpal nacpáním ZMBV do mého SVN buildu abych to demonstroval a jen pro to abych zjistil, že usleep se na nahraném videu (zcela logicky ani nemůže, zastavená je aplikace a vnitřní hodiny běží jinou rychlostí a nějaké uspávání je nezajímá) se absolutně neprojevuje. V tom nahrávací obrazovka jenom blinke
Tiskni
Sdílej: