Hollosi Information eXchange /HIX/
HIX CODER 523
Copyright (C) HIX
1999-07-19
Új cikk beküldése (a cikk tartalma az író felelőssége)
Megrendelés Lemondás
1 Clipper - adatbazis ertekadas (mind)  19 sor     (cikkei)
2 File attributs (mind)  5 sor     (cikkei)
3 Re: Interrupt kezeles C-ben (mind)  17 sor     (cikkei)
4 Delphi 4 (mind)  11 sor     (cikkei)
5 XWindows kepernyokimelo (mind)  8 sor     (cikkei)
6 timer interrupt (mind)  119 sor     (cikkei)

+ - Clipper - adatbazis ertekadas (mind) VÁLASZ  Feladó: (cikkei)

Sziasztok,

Nem ertem, miert nem mukodik az alabbi egyszeru kis program.

Az adatbazis letezik. Csak az ures rekordot adja hozza, de az 
erteket nem, pedig az megvan, letezik. Esetleg valami replace-
szeru dolog hianyozna?
A kony szerint ami nekem van ennek mukodnie kellene... :(

DbUseArea(,,datbase)
DbGoBottom()
DbAppend()
tick:=ertek[1]
DbCloseAll()


Udvozlettel:
            Istvan
            
+ - File attributs (mind) VÁLASZ  Feladó: (cikkei)

Hi Coder!
    Hogyan lehet beallitani es lekerdezni a fajl atributumait? Mire 
hasznalhato a 7-ik es 8-adik bitje?
Elore is kossz    
    Formater
+ - Re: Interrupt kezeles C-ben (mind) VÁLASZ  Feladó: (cikkei)

Sziasztok!

> Az XT idejen altalanos szabaly volt hogy max 10..20 asm utasitast szabad
> betenni, mert akkor meg marad ido a tobbire is. Szerintem ez most sem tobb
> 100 -nal. Nem csak te vagy oda belancolodva...

Csak annyi hozzaszolasom lenne (szemelyes tapasztalatok alapjan) hogy meg az
XT is elbirt TimerIT szinten tobb szaz sornyi Pascal kodot. Eleg komoly 
meretu
rutinokat kellett futtanom egyszer, amikor ki is probaltam a terhelhetoseget.
Tobb ezer sornyi kodnal kezdett darabos lenni a kepernyokezeles.
Ugyhogy a TimerIT-nel inkabb csak arra kell vigyazni, hogy pl. Dos vagy Mouse
interruptokat ne nagyon (ugy nagyjabol egyaltalan ne:-) hivogasson az ember,
mert attol aztan le tud fagyni rendesen a gep. BIOS IT mehet, pl. RS232, de
arra sem art odafigyelni.

Istvan
+ - Delphi 4 (mind) VÁLASZ  Feladó: (cikkei)

Hello    

Egy Delphi 4-el kapcsolatos kerdesem lenne:

Hogyan lehet elerni, hogy ha kezelek egy adatbazist, es vegrehajtom
a "TTable.Delete" parancsot, hogy a progi ne csak toroltnek jelolje
be a rekordot (nem torli ki fizikailag, csak megjeloli toroltkent), hanem
TENYLEGESEN kitorolje? (Remelem erthetoen mondtam... ;)

Na bye, koszi a segitseget elore is, okvetlenul jojjon maganba IS
mailto:
+ - XWindows kepernyokimelo (mind) VÁLASZ  Feladó: (cikkei)

Sziasztok!

Tudjatok hogyan lehet Linux/XWindows ala kepernyokimelot irni? Mert en
nem, de nagyon erdekel a dolog. Hol lehet utananezni a temanak?

Koszonettel, udv.: Nova
-= IRC: _Nova_ * ICQ: #26357624 * http://hp.elte.hu/~nova =-
           -= SuSE Linux 6.0 * kernel v_2.2.9 =-
+ - timer interrupt (mind) VÁLASZ  Feladó: (cikkei)

>>> Egy olyan interruptot szeretnek installalni, ami x masodpercenkent
>>> meghivodik. Melyik ez? Lehet allitani, hogy milyen gyakran hivodjon
>>0x1C kb 18* hivodik masodpercenkent. Ha ennel surubbet akarsz,
>>lehet azt is, de fejbol nem tudom. Mar csinaltam. Tomor asm....
>>Elsore annyira emlexem, hogy at kell programozni a 8253 timer ic
>>valamelyik csatornajat. Meg at kell venni az egesz
>Egyszeru:
>TR_LOW            equ   0ffh
>TR_HIGH           equ   003h
>cli
>mov al,036h
>out 043h,al
>jmp $+2 ; ha jol emlekszem csak 8086-nak kell ez
>mov al,TR_LOW
>out 040h,al
>jmp $+2
>mov al,TR_HIGH
>out 040h,al
>jmp $+2
>; .. es atvenni a int 8-et a sajat hadler-rel !!
>; getvector ... setvector ...
>sti
>Az eredeti ertekek : TR_LOW es TR_HIGH mindketto 0ffh
>igy a timer interrupt 1193180/65536 -szor tortenik minden mp-be (~18.2)
>Ha gyorsabban akarod akkor meg kell valtoztatni a TR_HIGH es TR_LOW
>szamokat.
>Pelda: ha 64-szer gyorsabban akarod a megszakitast, akkor
>0ffffh/040h = 03ffh, TR_HIGH = 003h, TR_LOW = 0ffh
>igy az int 8 1193180/1280 szor tortenik, kb 932.2 szer (minden 1.073 ms)
>Tobb problemak ott vannak hogy az eredeti int 8 fuggveny neked
>MUSZAJ az eredeti idobe hivni, igy szamolni kell es minden
>64-edszer hivni kell. Es el nem felejteni a sajat handler vegen
>a PIC-nak megmondani hogy vege van a megszakitasnak
>mov al,020h
>out 020h,al
>Na es ha vege van a programnak akkor mindent vissza kell allitani
>eredetire!!

Hello!

Bocs, de a timer interrupthoz egy kis pontositas:
Az eredeti TR_LOW es TR_HIGH egyarant 0 es nem 0ffh, azaz a szamlalo
specifikacio szerint 65536 es nem 65535, igy az eredeti visszaallitasa:

 cli    ; Disable interrupts
 mov al,36h
 out 43h,al   ; port 43h, 8253 timer control
 out 0ebh,al
 xor al,al   ; Zero register
 out 40h,al   ; port 40h, 8253 timer 0 clock
out 0ebh,al
 out 40h,al   ; port 40h, 8253 timer 0 clock

Hasonloan:
TR_HIGH = 003h, TR_LOW = 0ffh helyett:
TR_HIGH = 004h, TR_LOW = 0 a pontos.


A portra valo iras/olvasas muveletek kozott mindig ajanlatos egy kis
kesleltetes, mert az alaplapok es BIOS beallitasok kulonbozosege miatt
elofordulhatnak problemak. jmp $+2 vagy nop Pentiumtol folfele nemigen
kesleltet, ezert van a fenti kodban out 0ebh,al , ami egy ures, nem letezo
portra valo kiiras es egyben hatekony kesleltetes (ld. AWARD BIOS).

Elvileg Win NT alatt a szamlalot nem lehet ilyen egyszeruen atprogramozni,
sot, meg Win9x alatt sem (ld. TSS I/O map).

A legfinomabb idozitest a CMOS real-time ora interrupt (int 70h - IRQ 8)
felhasznalasaval lehet elerni: masodpercenkent 1024 idozito interrupt. Ez
komplikaltabb, mert a CMOS oranak is meg kell parancsolni, hogy adjon IRQ-t
a procinak, stb.
Ha csak idomeresre kell, kvazi millisec pontossagot ad. Egy (elnagyolt)
pelda:

Count_Set:        ;a szamlalo inicializalasa BIOS-on keresztul (ez most
TENYLEG 0ffffffffh [cx:dx])
stc
push ds
 sbb dx,dx
pop es
 mov ax,8300h
 sbb cx,cx
 mov bx,offset watch_flag    ;szamlalas kb. 2^12 sec (jo oraig) ideig
visszafele,
int 15h                                ;a szamlalo 40:9ch alatt 4 byte-on,
microsec-ben, 1/1024 sec felbontassal
 jnc Count_OK

 mov ax,8301h                ;ha nem megy, lodd le az elozo szamlalast.
Ugyanez mehet a progi vegere is!
 int 15h
 jmp Count_Set            ;probald ujra (jobb lenne a carry flag detect, ha
ez sem megy [pl. NT DOS ablak])

Count_OK:
 ...

ha pedig most msec pontossagu meres kell:

Num_1000 dd 1000
 ...
Get_Time proc near    ;ezt hivjuk idomereskor
push 40h
pop gs
 mov eax,gs:[9ch]        ;kiolvassuk a microsec szamlalot
xor edx,edx
 neg eax                ;novekvo idoertekek kellenek
 div Num_1000    ;legyen a microsecbol millisec
 push eax            ;a msec-t eax reg.-ben vagy dx:ax reg.-ben kapjuk
vissza (16/32 bites izles szerint :-))
 pop ax
 pop dx
 retn
Get_Time endp

Tovabbi ajanlott irodalom: Ralf Brown interrupt list file (pl. Chip CD)

Udv:
PlyR

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