Hollosi Information eXchange /HIX/
HIX CODER 135
Copyright (C) HIX
1998-06-15
Új cikk beküldése (a cikk tartalma az író felelőssége)
Megrendelés Lemondás
1 ES=0a000h (Re: Re: Kis tanfolyam) (mind)  29 sor     (cikkei)
2 DMA problema (mind)  42 sor     (cikkei)
3 visszateresem + asm header (mind)  66 sor     (cikkei)
4 C-ben filekezeles (mind)  11 sor     (cikkei)
5 Ismet itt vagyok (mind)  111 sor     (cikkei)

+ - ES=0a000h (Re: Re: Kis tanfolyam) (mind) VÁLASZ  Feladó: (cikkei)

Hali!

 wrote:
> >    mov ax,0a000h
> >    mov es,ax
> >
> > 		Les	;praktikusabb	
> Ezt itt hogy erted? Hogyan raksz be ES-be 0xa000h-t LES-sel?

LES-el gondolom ugy hogy csinal egy pointert 0a000h:0-ra es azt
rakja bele, mindenesetre en nem ugy szoktam.
Az en moccerem: (ez a leheto legrovidebb kodu!)
 ASM
   push 0a000h     ; 3 byte
   pop es          ; 1 byte
 END
hatranya hogy 286-ra forditas opcio kell hozza, de hat ki az aki
XT-re fordit ilyesmit? :)


A'rpi / mnemonic

,-------------------------------------------------------|
| ifj.  Gereoffy Arpad     mailto:  |
| GyikSoft of [ESP-team]-> http://banki1.banki.hu/~arpi |
|----------------------------- Phone +36-1-138-1405 ----'
NEWS: BAPC v2.4b4 released! * ESP v1.9 Pro coming soon! *
od: 140270 107007 134330 110000 140216 000271 024401 024766
WinErr: 020 Error recording error codes - Remaining errors will be lost.
+ - DMA problema (mind) VÁLASZ  Feladó: (cikkei)

Hali!

Mostanaban irogatok egy rezidens MP3 lejatszot DOS-hoz, es
egy erdekes (es szivatos) problema merult fel:
A GUS-os player ugy jatszik le, hogy a memoriaban levo 2db
puffert (mivel stereo) felvaltva kuldi ki DMA-val a GUS-nak.
Ezugybol nem autoinites DMA-t hasznaltam, hanem mindig
ujrainditom mexakitasbol.
Na de adodott egy erdekes hiba, ui. nemelyik programnal
(foleg a Borland Pascalosokra jellemzo ez) osszekeveredtek
a file-pufferek vagy mi, mert se a prog, se a player nem azt
olvasta be a filebol amit kellett volna.
Hetekig azt hittem hogy a filekezelesem a bugos, miutan
vegso elkeseredesemben sorra iktattam ki a rutinokat,
igy derult ki hogy a DMA atvitellel van a gaz.
Es a poen az, hogy ha atirom autoinit-es DMA-ra, akkor
stabilan mukodik, nem keveredik semmi se.
(csak az autoinites dma elegge megbonyolitja igy az
egesz programot)
Tehat csak a player inditasakor programozom be 1x a DMA
vezerlot, es az a vegtelelensegig nyomja ki ugyanazt
az _1_ puffert. (ezert felvatva kell REP MOVSD-zni a 2
pufferem abba a 3.-ba amit a DMA kuld kifele)
(Ez kivedheto lenne ha a GUS-nal is be lehetne allitani
a DMA atvitel hosszat, mint SB16-nal)

Szoval amit nem ertek, hogy miert nem lehet nem autoinites
DMA-t hivogatni? Az a baj hogy a DMA beallitasok idejere
le van tiltva a DMA vezerlo? vagy le sincs tiltva? (maszk
regiszter) Meg arra is gondoltam, hogy egy DMA vezerlo
egyszerre csak egy atvitelt kepes bonyolitani, hiaba van 4
csatornaja. (de ez kizarva, mivel autoinittel meg muxik)

A'rpi / mnemonic

,-------------------------------------------------------|
| ifj.  Gereoffy Arpad     mailto:  |
| GyikSoft of [ESP-team]-> http://banki1.banki.hu/~arpi |
|----------------------------- Phone +36-1-138-1405 ----'
NEWS: BAPC v2.4b4 released! * ESP v1.9 Pro coming soon! *
od: 140270 107007 134330 110000 140216 000271 024401 024766
A computer without Windows is like a fish without a bicycle.
+ - visszateresem + asm header (mind) VÁLASZ  Feladó: (cikkei)

Hali!

Azt hittem reg mexunt ez a lista, mert honapok ota nem kaptam meg... :-o
erre most kaptam egy szamot, es a levelek olvasva ugy tunik hogy
mas kapta folyamatosan...  mindenesetre erdeCACHE.

Na mind1.

olvasgatom itt a levelket, pl:

> >Nekem sokkal konnyebb ezt irni:
> >Procedure Tingli ( parameter : Longint); Near; Assembler;
> >ASM
> > ...
> >END;
> >mint a TASM fele extern, public, stb.
1. miert kene extern meg ilyesmi TASM-ban?
   az csak akkor kell ha kulon .OBJ-kbe dolgozol.
2. probaltad mar a BAssPasC forditot?
   pont erre es hasonlo ASM-os macerakra van kitalalva.
   pl. az egesz asm fejlec es lab helyettesitheto egyetlen ".386"
   vagy a kivant CPU-nak megfelelo sorral. a rutinok megadasa
   is "runtin_neve::" formaju, nem kell PROC NEAR meg ENDP.


>   De vajon miert hasznalnak allandoan assembly kodot a Pascal-utasitasok
> helyett? Miert jobb a writeln eljarast assembly hivassal helyettesiteni,
Mert tetu lassuak a pascal rutinjai, nincs nagyon sok problemara megoldas
vagy sokkal egyszerubb asm-ben beirni mint pascalban.
En mondjuk nem hasznalok csak a fejlecekert pascalt, de majdnem minden
pascal programomban van asm resz.
Pl. vegyuk csak a billentyuzetre varakozast:
PASCAL:
   uses crt;  {mert enelkul nem megy, ezzel +6kB, es grafikus modban
               emiatt nem tudsz szoveget kiirni}
   ...
   gomb:=readkey;
   if gomb=0 then skod:=readkey else skod:=0;
   ...

ASM betettel:
   ASM
     xor ah,ah
     int 16h
     mov gomb,al
     mob skod,ah
   END
Ennek meg az az elonye is megvan (Azon kivul hogy nem kell a CRT unit hozza)
hogy rendelkezesedre all az ascii es az scan kod is, nem csak az egyik.

de ez csak egy pelda volt, millio egyeb esetben is celszerubb asm betetet
(nem szarnyasat!:)) hasznalni.

> >ui: Nem lehet konvertert irni??? PATA -> Pacal Asm To Asm :)
es annak mi ertelme lenne?


A'rpi / mnemonic

,-------------------------------------------------------|
| ifj.  Gereoffy Arpad     mailto:  |
| GyikSoft of [ESP-team]-> http://banki1.banki.hu/~arpi |
|----------------------------- Phone +36-1-138-1405 ----'
NEWS: BAPC v2.4b4 released! * ESP v1.9 Pro coming soon! *
od: 140270 107007 134330 110000 140216 000271 024401 024766
WinErr: 01E Timing error - Please wait. And wait. And wait. And wait...
+ - C-ben filekezeles (mind) VÁLASZ  Feladó: (cikkei)

Hello !

Most eppen C-ben irogatok egy progit es egy kisebb gondom van.
Amikor adatokat olvasok ki a file-bol akkor eggyel kessob veszi a FEOF jelet. 
Ugy ertem meg egyszer vegigmegy a ciklus pedig mar a file vegen vegyok, nem
kepja meg a file vege jelet(feof makroval tesztelve), csak miutaN
megegyszer vegigment rajta. Tud valaki segiteni? Ha kell akkor a codot is
elkuldom (nem hosszu). 
A valaszokat legyszi magan e-mailban kuldjetek.

Elore is koszi and bye
+ - Ismet itt vagyok (mind) VÁLASZ  Feladó: (cikkei)

Sziasztok Kodorgok! <= de rossz szojatek :)

Akit erdekel meg a gepikodu okossagom az lent meg olvashat rola.

Szeretnek kerni egy kis segitseget.

FoxPro Dos-os verziojaban kellene egy kis programot osszehoznom, vagy ot
eve nem nyultam ilyesmihez. Teljesen elfelejtettem mit hogy kell mar, ha
tudnatok rovid example-kat kuldeni azt nagyon megkoszonnem. Az a gond nekem
valami iszonyuan kicsontozott foxpro van meg mert az demo dolgok sincsenek
meg. Ha kuldesz forrast akkor ugy kuld hogy minden programresz meglegyen
meg az alapok is. Ja az ido nagyon surget. Pentekre meg kellene lenni egy
nyilvantarto programnak. Varom a segitseget. Lehetoleg magan levelbe es max
500-600K-ig. Nekem a Coder kb. 2-3 naponta jon meg, de akkor aztan 3 is
egyszerre.

>Felado : Antal Kovacs
>Hello Moonlight! MI szeretjuk a (kis) tanfolyamokat :)))
>Ezek szerint konstassal valo szorzas MAX 2 sor???
>Pl: y*640
> lea eax, [eax+eax*4] ; eax*5
> shl eax, 7           ; eax*128
>De joooo :)

Pontosan igy van. 
De segitek pl. 3-al valo szorzas is egy Lea
Lea eax, [eax+eax*2]
Azert erdemes az eax-el csinalni mert gyorsabban vegzi a proci a szamitast
de ez minimalis dolog.

Az az igazsag manapsag senki sem optimalizal. Gyorsak a gepek meg kulonben
is minek. Engem meg zavar az ilyesmi. Annak idejen irtam olyan memoria
mozgato rutint ami DWORD-re igazitott. Ez azert jo mert a processzor
lenyegesen gyorsabban dolgozik igy. Azert hogy ertheto legyen:

ha masolsz
pl.
0010h -cimrol 1024 byte-ot MOVSD-vel az gyors de ha
0007h -cimrol ugyanez mar lassu mert a proci ugy vegzi betolti a 4-es
cimrol a dword-ot megtartja az utolso byte-ot, majd a kovetkezo 8-as cimrol
a 3 elso byte-ot es csak utanna teszi le a memoriaba es ha ott is tort cim
van akkor ez duplan megbosszulja magat.

Aki nem hiszi nezzen utanna, vagy probalja ki. jo 20-30%-al gyorsabb lesz a
kod ha figyelunk az ilyesmire.

>Felado :  [Hungary]
>Temakor: Re: Kis tanfolyam ( 20 sor )
>>
>>    mov ax,0a000h
>>    mov es,ax
>>
>> 		Les	;praktikusabb	
>Ezt itt hogy erted? Hogyan raksz be ES-be 0xa000h-t LES-sel?

Hat itt kicsit elhamarkodtam, ugyanis ez csak cimrol mukodik. Vagyis

LES DI, [Kepernyocim] igy di:=0, es:=0A000h
 ...
 ..
 .
Kepernyocim 	dw 0A000h	; lehet hogy forditva kell erre mar nem emlekszem
		dw 0
Jo itt a peldanal nem sok ertelme van eloszor az DI-t letarolni
Mov[Kepernyocim+2],DI-vel aztan meg LES-es betolteni.
de pl egy dos szoveg kiiratasanal ahol a ds a szoveg segmense es a dx a
szoveg offsetje ott kivalo a 

mov	ax,9h
lds    dx, [szoveg]
int	21h

Vegul egy kis szosszenet a nyelvek harcosainak. Megprobalok objektiv maradni.

Assembly: Keves a jo assembly programozo(en se tartom magam annak) meg
manapsag minek.

Pascal: nagyon egyszeru es jo atlathato nyelv. A hiresztelesekkel
ellentetben nem tudtok olyat mondani amit ne lehetne pascalban megcsinalni
es C-ben igen. Igaz az viszont hogy a forditott kod az kb 10%-al lasabb
mint a C de ez sem mindig igaz.

C: a rendszernyelv. Minden rendszer szinte C-ben keszul. Ha a
hordozhatosagra torekszel, (ami azert a pascalnal nem a legjobb) akkor a C
kodod nem lesz igazan gyors. Eleg nehezen atlathato, foleg ha nem te irtad.
Nagyon szabad az egesz akar az egesz nyelvet ujrairhatod. Akinek ez fontos
es szeret ilyesmikkel bibelodni am legyen.

A kettorol szerintem:

A pascalt sokan kirohogik. De nagyon jol lehet vele fejleszteni amig nem
halozatkezeles, vagy egy kisebb oprendszer a feladat. Meg lehet vele
csinalni de tobb a szivas vele mint a C-nel. Viszont a pascal forditasi
ideje joval gyorsabb.

Ha megnezzuk a mostani fejlesztorendszereket.
Watcom C, C++ Builder, Delphi 3.

A delphi 3 (ami pascal alapu) mindet veri. Gyorsabb es optimalisabb kodot
general igaz csak Win95-ala de a C++ Builder is. A forditasi ido kb,3-5
masodperc a C++-nak ugyanez csak egy sima hello world-nel is 1-2 perc.

Vegul is szerintem hulyeseg azon vitatkozni melyik a jo nyelv. Mindnek
vannak elonyei es hatranyai is. Kinek mi a fontos. Na meg ki mit ismer jobban.

Hat ennyi, kicsit hosszu lett ez a level.

Varom a FoxPro segitsegeket.

Udv,
		Moonlight.

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