English | Magyar
JS ki | CSS ki | Ékezetek ki | HiContrast
Lapozó:  (0 - 1424) 
<== | ==>
Ugrás a végére | Összes megjelenítése | Utolsó oldal
OpenOpera patches | Opera-SSL patches | Opera 12.15 source (Git repository) | Opera 12.15 source (Torrent) | Opera internal pages | Otter Browser Linux x64 - Qt5.15.2/QtWebKit5.602.1 (2024.04.27. 20:05)
OS for MC680x0 | OS for PPC | OS for Sparc64 | besztofbégéaefcé | CSÉNDZSLOG | WebToolz | DDG Shit Filter | Google Shit Filter | Progz | Fast CSS Box | Browser | OS | Agent | Statisztika | BBCode
Monospace font-family: Courier New | Browser default monospace
Email értesítő / Email notification ===> 
Keresés
Σ: 1 post

TCH  (statz) Főfasz
#1, Főfasz (10443)
4853 | #29b4 | ^ | Idézet | Fri, 03 Jan 2014 23:12:28 +01
31.46.*.* Linux x86 Opera Classic Hungary *.catv.pool.telekom.hu
@saxus:
FYI: rakszám alapján ma már mindent le lehet már követni a Postán, olyan nincs, hogy valamiről ne tudják megmondani, hogy az hol van vagy hogy mi lett vele.
Akkor hova lett Flood3r és Prometheus csomagja?
@saxus:
(igen, az emberek szeretik nem észrevenni a "vámkezelt" pecsétet a "köcsög posta által felbontott csomagon", holott azt a vámhivatal bontotta ki.)
Itt senki nem mondta, hogy a vám által felbontott csomag a posta hibája.
@saxus:
Napi "szaraposta" gyorstalpalónkat hallották.
Értem, akkor ezekre is van valami "gyorstalpalód"? (Tuti lesz.)

?m=0&o=8969&c=1
?m=0&o=9569&c=1
Viszont a javaslatod a menetközbeni újramérésről szöget ütött a fejembe, hogy hátha mégis lehet. És rájöttem, hogy lehet, csak kicsit másképp, mint ahogy te javasoltad. Ha az utasításfeldolgozásnál - ahol az adott utasítás utáni várakozás van - mérem ki, hogy mennyi idő telt el a várakozás alatt (2-7 µs), akkor amennyiben eltérést észlelek, akkor tudok korrigálni. Nem a timert írtam át, mert a timerben menetközben nem lehet mérni, hanem menetközben belekotrok a ciklusszámlálóba.

Beleraktam az időzítőt, ami elméletileg 1000 ns alatt 0.7-et késik, viszont ez ugye üres forciklusban volt. Az utasításfeldolgozásban kimértem és loggoltam, hogy mennyi és mekkora eltérés van. Nagyjából 5%-nyi volt, cca. minden 20. µsec után késett egyet, 5655 ciklusra ~300 ciklusnyi késés jutott. Mondanom sem kell, ez így még baromira nem volt elég, hiszen ez egy perc alatt már három másodpercnyi késést jelentene!
Ezután beraktam a két mérőpontot az utasításfeldolgozóba, majd az elágazást, hogy ha a várt és a mért érték között eltérés van, akkor az eltérés 8x-osát vonja ki a számlálóból. (A különbség előjeles, tehát ha nem késik, hanem siet, akkor negatív számot von ki, azaz hozzáad.)
Ezzel a pillanatnyi eltéréseket sikerült nagyjából a negyedére (1-2%-ra) csökkenteni: már csak minden ~80. µs után késik vagy siet egyet; eddig csak késett, de mivel most már felváltva késik és siet, ezért a teljes eltérést sikerült gyakorlatilag nullára redukálni. (Tetszőleges számú ciklusra (értsd: 0-∞) jut 0-5 ciklusnyi eltérés.)

A teljes szinkronnal tehát tökéletesen meg vagyok elégedve, tényleg "teljes szinkron". A pillanatnyi szinkron a maga 1-2%-os eltérésével már-már kielégítőnek mondható, majd még próbálok finomhangolni rajta, de gyanítom, hogy ez már nem fog bezavarni az időzítésbe, nem hinném, hogy létezne C64-re olyan lemeztöltő rutin, aminek az időzítője annyira ki van centizve, hogy még az is bezavarna, hogy usque 80 ciklusra jut egy ciklusnyi eltérés.

Kösz a tippet, majd ha megvan a ware, akkor beleraklak a thxlistába.
Viszont a timeren sikerült még egy picit optimalizálni, pontosabban felvettem még egy timeval-t, hogy a két fpgettimeofday() semmi más ne legyen, csak amit mérni kell. Tudom triviális, de eddig valahogy nem esett le. :P
Itt a - remélhetőleg végleges - timer:
unit cusleep_lib;

interface

var
	cusleep_time: longint;

procedure cusleep(usec: longint);
procedure init_cusleep;

implementation

uses unix;

procedure cusleep(usec: longint); assembler;
label l0;
asm

	{$ifdef cpu386}
	movl usec, %eax
	movl cusleep_time, %ecx
	mul %ecx
	xorl %ecx, %ecx
	l0:
	incl %ecx
	cmpl %eax, %ecx
	jne l0
	{$endif cpu386}

	{$ifdef cpux86_64}
	movl usec, %eax
	movl cusleep_time, %ecx
	mul %ecx
	xorl %ecx, %ecx
	l0:
	incl %ecx
	cmpl %eax, %ecx
	jne l0
	{$endif cpux86_64}

	{$ifdef cpupowerpc}
	ld r1, 0(usec)
	ld r0, 0(cusleep_time)
	mul r0, r0, r1
	xor r1, r1, r1
	l0:
	addi r1, r1, 1
	cmp cr0, 1, r0, r1
	bne cr0, l0
	{$endif cpupowerpc}

end;

procedure init_cusleep;
var
	bt: int64;
	tv, tv2: timeval;
	i: longint;
label l0;
begin
	fpgettimeofday(@tv, nil);
	asm

		{$ifdef cpu386}
		xorl %eax, %eax
		xorl %ecx, %ecx
		l0:
		incl %ecx
		cmpl %eax, %ecx
		jne l0
		{$endif cpu386}

		{$ifdef cpux86_64}
		xorl %eax, %eax
		xorl %ecx, %ecx
		l0:
		incl %ecx
		cmpl %eax, %ecx
		jne l0
		{$endif cpux86_64}

		{$ifdef cpupowerpc}
		xor r0, r0, r0
		xor r1, r1, r1
		l0:
		addi r1, r1, 1
		cmp cr0, 1, r0, r1
		bne cr0, l0
		{$endif cpupowerpc}

	end;
	fpgettimeofday(@tv2, nil);
	bt := tv2.tv_sec * 1000000 + tv2.tv_usec;
	cusleep_time := ($100000000 div (bt - (tv.tv_sec * 1000000 + tv.tv_usec)));
	for i := 1 to 1000000 do
	begin
		cusleep(1);
	end;
	fpgettimeofday(@tv, nil);
	cusleep_time := cusleep_time - ((((tv.tv_sec * 1000000 + tv.tv_usec) - bt) - 1000000) div 1000);
end;

end.

http://hup.hu/szavazasok/20140103/szukseg_lenne-e_szerinted_magyar_szakszervezetre_a_sw_mernokok_szamara
XDDDDDDDDDDD


English | Magyar
JS ki | CSS ki | Ékezetek ki | HiContrast
Lapozó:  (0 - 1424) 
<== | ==>
Ugrás a végére | Összes megjelenítése | Utolsó oldal
OpenOpera patches | Opera-SSL patches | Opera 12.15 source (Git repository) | Opera 12.15 source (Torrent) | Opera internal pages | Otter Browser Linux x64 - Qt5.15.2/QtWebKit5.602.1 (2024.04.27. 20:05)
OS for MC680x0 | OS for PPC | OS for Sparc64 | besztofbégéaefcé | CSÉNDZSLOG | WebToolz | DDG Shit Filter | Google Shit Filter | Progz | Fast CSS Box | Browser | OS | Agent | Statisztika | BBCode
Monospace font-family: Courier New | Browser default monospace
Email értesítő / Email notification ===> 
Keresés

Név: (max 255 byte)

Email: (max 255 byte) Nem kötelező!

Üzenet: (max 65536 kar.) 65536-0=65536




crap_vkn v4.34.0 by TCH
Thx to saxus for the escaped string decoder function (PHP), the realIP function (PHP) & the SQL handle layer (PHP), to thookerov for the int_divide function (PHP), to Jeff Anderson for the getSelText function (JS), to Alex King for the insertAtCursor function (JS), Flood3r for the new CSS styles, Pety for the spamprotection idea and some design and comfort ideas, MaxMind for the IP2Country database, famfamfam for the flags of countries and an unknown PHP programmer for the removeAccents function.



Kecskebaszók ide!