1. |
Re: LPT translator (mind) |
18 sor |
(cikkei) |
2. |
[rnd] Random fuggveny (pas scr) (mind) |
76 sor |
(cikkei) |
3. |
LPTx kiegeszites (mind) |
36 sor |
(cikkei) |
4. |
Re: [line] Vonalhuzo algoritmus (pas scr) (mind) |
36 sor |
(cikkei) |
5. |
LINE INPUT LF-ig (mind) |
31 sor |
(cikkei) |
|
+ - | Re: LPT translator (mind) |
VÁLASZ |
Feladó: (cikkei)
|
Sziasztok!
>Felado : [Hungary]
>Temakor: Re: LPT translator ( 35 sor )
>...azt az adatot kell elcsipni, amit egy
>...progi a DOS LPTx portjara kuld...
A kinalkozo lehetoseg a BiOS 17h -es megszakitasa.
[AH = 00h, AL = kikuldendo char kodja, DX = lpt szama]
Az elso parhuzamus port szama 0, ezt DOS alatt 'LPT1'-nek
hivjak. A megaszakitas visszateresi erteke AH-ban lesz.
Erre raakaszkodva vizsgalhatod meg, hogy az atadott char
benne van e a tablazatban, es szukseg eseten cserelheted
a kodjat.
Gergo
|
+ - | [rnd] Random fuggveny (pas scr) (mind) |
VÁLASZ |
Feladó: (cikkei)
|
Hi Coders!
Most egy random fugveny tarok a cybervilag ele.
Gabry ) kollega megoldasa:
> const
> veletlen:word=0;
> function rand:byte;assembler;
> asm
> mov bx,veletlen
> xchg bh,bl
> add bx,1234h
> xor bx,6512h
> sub bx,9645h
> mov veletlen,bx
> mov al,bl
> end;
Az iRandom fuggvenyemet a te modszereddel tovabfejlesztem.
A szorasa viszonylag nagy de _pontos_ veletlenszamokat csinal.
-=- START
{$A+,B-,D-,E-,F+,G+,I-,L-,N+,O-,P-,Q-,R-,S-,T-,V-,X-}
{$M 16384,0,655360}
Program
prgGabryRandom; { Tooth "Gabry" Gaabor random function. }
{ (c) XiX 1987-98. All rights reserved. }
Var
r0, r1, r2 : Longint;
Function KeyPressed : Boolean; Near; Assembler;
ASM
in al, $60; test al, $80; jnz @F; mov ax,True; jmp @E; @F: mov ax,False; @E:
END; { KeyPressed }
Function Clockmsec : Longint; Near; Assembler;
ASM
push ds; xor dx, dx; mov ds, dx; mov bx, $046C; mov dx,$43; mov al,$4; pushf;
les di, ds:[bx]; out dx,al; lds si, ds:[bx]; in al,$40; mov ah,al; in al,$40;
popf; xchg al,ah; mov cx, es; cmp di, si; je @n; or ax,ax; jns @n; mov di,si;
mov cx, ds; @n: not ax; mov bx, $36ED; mul bx; mov si, dx; mov ax,bx; mul di;
xchg bx, ax; mov di, dx; add bx,si; adc di, 0; xor si,si; mul cx; add ax, di;
adc dx,si; mov dh,dl; mov dl, ah; mov ah,al; mov al,bh; mov di, dx;mov cx,ax;
mov ax, $6216; mul dx; sub cx, dx; sbb di, si; xchg ax,cx; mov dx,di; pop ds;
END;
Function iRandom : Integer; Near; Assembler;
ASM { EAX kezdoerteket direkt nem veszem figyelembe! }
db 66h; add ax, word ptr r0; db 66h; mov word ptr R0, ax;
db 66h; xor ax, word ptr r1; db 66h; mov word ptr R1, ax;
db 66h; sub ax, word ptr r2; db 66h; mov word ptr R2, ax;
END;
.
-=- END
udv: XiX
-=- -=-
-=- Minden masodik szavam hazugsag -=-
-=- Az orokevalosagnak kell elni. Na bumm, legfeljebb nem sikerul -=-
|
+ - | LPTx kiegeszites (mind) |
VÁLASZ |
Feladó: (cikkei)
|
Hali !
Mivel volt nehany erdeklodo, aki szerint nem voltam elegge specifikus
(bar probaltam igyekezni :) ) igy a multkori kiirashoz meg hozzafuznem
az alabbiakat.
Tehat:
1. az LPTx translatornak DOS-ban kellene mukodni, tehat egy DOS TSR-rol
van szo.
2. Bar a tavlati cel altalanos hasznalhatosagu progi irasa lenne , a
gyakorlatban a programnak Clipperes programok Outputjanak Real-time
feldologazasa lenne a fo feladata.
3. Emze kerdesere valaszolva; A TSR-nek csak az LPT portra kuldott
adatot kell elfogni, _nem_ a kozvetlen port machinalo progik
ugyeskedeseit.
A peldad illetve otleted elegge plasztikus, valoban valami olyasfele
program lenne ez mint a port redirektor, azzal a kulonbseggel, hogy ez
feldolgozas utan mindjart tovabb is kuldene az adatot az eredeti portra
!
Es persze termeszetesen ha valakinek tovabbi kerdesei volnanak, csak
kerdezzen meg !
Meg mindig Emze-nek :
> En azt szeretnem megcsinalni, hogy letre hozok egy logikai
> meghajtot, amit a DOS csak file szinten kezel, a tobbit mar
> az en progim csinalna (pont mint a halozati meghajtoknal).
Ez nem valami olyasmi mint egy RAMDISK ? Mert akkor neked valoszinuleg
arrafele kell keresned a megoldast. Valamilyen fajta Block Device-t
kellene irnod.
Udv : Csiszar L.
|
+ - | Re: [line] Vonalhuzo algoritmus (pas scr) (mind) |
VÁLASZ |
Feladó: (cikkei)
|
On 7 May 98 at 3:47, Antal Kovacs > wrote:
> A most kozolt vonalhuzo algoritmust nem en irtam :(
Igen, ez a Bresenham (vagy hogyan irja a nevet) algoritmus, azon
alapul, hogy (az egyenest elvben kiegeszitve a koordinatarendszerrel
parhuzamos szaru haromszogre) a hosszabbik oldal menten lepeget
egyesevel, kozben szamolja a hibat, amit azaltal vet, hogy diszkret
koordinatakba rak pixelt az igazi helyett, es amikor a hiba nagyobb
0.5-nel (fel pixelnel), akkor lep egyet a masik kordinata menten.
Persze nem lebegopontosan szamolja a hibat, az ciki lenne, hanem az
egysegnek (1-nek) a hosszabbik oldal hosszusagat veszi. Ha valaki
megfigyeli a hasonlo haromszogeket, viszonylag konnyen kijon belole
es a fentebbi hibaszamitasbol az algoritmus. Ugyanilyen hibaszamolos
modszerrel lehet sin-cos szamolas valamint szorzas-osztas _nelkul_
kort (pontosabban nyolcad korcikket) rajzolo algoritmust is csinalni,
egy picit bonyolultabb csak.
> de mivel nagyon megtetszett (egyetlen helyen rakja ki
> a pixelt!), kozreadom. Ebbol kiderul miert erdekelt
> az elojel fuggveny optimalizalas :)
No, valojaban e miatt irok: Ilyenek miatt _nem_ erdemes optimalni.
Elojelet csak a cikluson kivul szamolsz, ami vegulis egyetlen
egyszer fut le, szemben az egyenes pixeleivel, amiknek a ciklusmagja
mondjuk atlag 100-szor fut le. Ertelmetlen dolog az ido kb. egy
szazalekat kitevo dolgot optimalni! Ha ezt az egyenesrajzolast
optimalni akarod, akkor a ciklusmaggal probalkozz, peldaul ne az X-Y
koordinatakat szamolja a Bresenham algoritmus, hanem mar eleve a
memoriacimet toszogassa ide-oda, igy megsporolod azt, hogy minden
egyes pixelnel a koordinatabol ki kell szamolod a cimet. stb.
Istvßn
-- Istvan Marosi -- http://www.sch.bme.hu/~marosi --
-- Recosoft Ltd. -- mailto: --
|
+ - | LINE INPUT LF-ig (mind) |
VÁLASZ |
Feladó: (cikkei)
|
Sziasztok. Egy assembly rutin megirasahoz kerem segitsegeteket.
Egy programon dolgozom, ami nagy mennyisegu szovegfile-t kezel. A file-ok
Unix-formatumban vannak, vagyis a sorok veget csak a 10-es byte jelzi 13-10
helyett. A programom pedig Quick BASIC 4.5-ben -- nem rohogni! --, ahol a
LINE INPUT utasitas boldogan beolvas barmilyen szovegsort, de csak ha 13-as
karakterrel van lezarva.
Jelen pillanatban azt teszem, hogy bekonvertalom a szovegeket MS-DOS
formaba (egy DOS-parancs eleg ra: type unixfile > dosfile), aztan LINE
INPUT-tal dolgozom fel. De szeretnem, ha ezt a program felhasznaloinak nem
kellene tenniuk, ezert kellene egy rutin, ami a kovetkezoket tudja:
1. Beolvas egy sornyi szoveget egy megnyitott file-bol (a sorszamat
kezhez kapja), fuggetlenul attol, hogy CR/LF, LF vagy CR zarja-e le, es
visszaadja a BASIC-nek. (Mindharom variacio elofordulhat, meg a mar
bekonvertalt file-jaimat se szeretnem eldobni.)
2. Ezt olyan gyorsan csinalja, mintha gepi kodban lenne -- peldaul mert
abban van.
Tehat a rutinnak nem kell a file-t megnyitni vagy lezarni, a pointert se
kell beallitania olvasas elott -- de utana persze igen, a kovetkezo sor
elejere. Korrektul persze, hiszen ha CR/LF-fel zarult a sor, a pointer nem
mutathat utana az LF byte-ra. Ha szukseges, a jelenlegi pointert
megkaphatja parameterkent.
Nem kell se EOF-jelet (26-ost), se fizikai file-veget figyelnie, mert
egyik se fog elofordulni.
Van valaki a vonalban, aki nalam jobban ert assemblyul es meg tudja ezt
csinalni?
La'ng Attila D. > (latom az ekezeteket)
|
|