Hollosi Information eXchange /HIX/
HIX CODER 102
Copyright (C) HIX
1998-05-09
Új cikk beküldése (a cikk tartalma az író felelőssége)
Megrendelés Lemondás
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)

AGYKONTROLL ALLAT AUTO AZSIA BUDAPEST CODER DOSZ FELVIDEK FILM FILOZOFIA FORUM GURU HANG HIPHOP HIRDETES HIRMONDO HIXDVD HUDOM HUNGARY JATEK KEP KONYHA KONYV KORNYESZ KUKKER KULTURA LINUX MAGELLAN MAHAL MOBIL MOKA MOZAIK NARANCS NARANCS1 NY NYELV OTTHON OTTHONKA PARA RANDI REJTVENY SCM SPORT SZABAD SZALON TANC TIPP TUDOMANY UK UTAZAS UTLEVEL VITA WEBMESTER WINDOWS