PCPROG.3

26 Jul 1993 - 22 Apr 1994

Topics

  1. algoritmi (290)
  2. dizajn (19)
  3. ms.dos (270)
  4. windows (360)
  5. asembler (213)
  6. basic (10)
  7. jezici (148)
  8. pascal (878)
  9. cccc (554)
  10. cpp (195)
  11. clipper (1125)
  12. baze.podataka (232)
  13. razno (540)

Messages - ms.dos

ms.dos.1 djelovic,
Zna li neko kako da ubrzam timer tick interapt tako da mi se izvršava 25 puta u sekundi a ne 18.2?
ms.dos.2 bole,
A zna li neko kako da usporim isti taj interapt? recimo da se izvrsava 1 put u secundi!
ms.dos.3 todorp,
> Zna li neko kako da ubrzam timer tick interapt tako da mi se > izvrsava 25 puta u sekundi a ne 18.2? Zna :) Pogledaj PC.PROG.2 cccc poruku 246 u kojoj je akojovic to objasnio. Pozdrav od Todora.
ms.dos.4 pedjak,
> Zna li neko kako da ubrzam timer tick interapt tako da mi se > izvršava 25 puta u sekundi a ne 18.2? Uh, to sam i ja pitao pre dosta vremena. Može, pogledaj u PC.PROG.2:cccc , tu stvar je detaljno objasnio robert.
ms.dos.5 robert,
>> PC.PROG.2:cccc , tu stvar je detaljno objasnio robert. Bogme, ja to nisam nikad objašnjavao... mora da je neka greška :). žisto da se neko ne prevari da traži poruku pod mojim username-om :). Inače, ne ljutim se :)).
ms.dos.6 iradovic,
MOZE William J. Claff: Writing Assembly Language Interrupt Routines BYTE, 1986 Extra Edition - Inside the IBM PCs, str. 249-262 Ako ovo nije dovoljno mail me za kopiju!
ms.dos.7 pedjak,
> Bogme, ja to nisam nikad objašnjavao... mora da je neka greška :). > žisto da se neko ne prevari da traži poruku pod mojim username-om > :). Inače, ne ljutim se :)). Uh, uh ;) mora da sam nešto pobrkao. A ko je objasnio, pa da i ja potražim ?
ms.dos.8 dejanr,
Download-ovana je iz sveta nova verzija liste svih interaptova, INTER36. Biće u direktorijumo ovi' dana - ovo obaveštenje samo da je neko ne bi bez potrebe još jednom "skidao".
ms.dos.9 dejanr,
Evo jedne zanimljive diskusije sa BIX-a koja se bavi značajnim problemima vezanim za komandu SHARE. Nešto od toga smo ovde već pominjali - može li se nekako "resetovati" SHARE? Savetujem da download-ujete i pročitate, nećete zažaliti! share.zip
ms.dos.10 dejanr,
========== ibm.dos/secrets.4 #110, from wlmoore, 913 chars, Sun Jul 25 18:21:45 1993 ---------- TITLE: Called from a batch file! This is under MS-DOS6 and might be different for previous versions, I haven't checked yet. Offset 0x0315 from the resident portion of command.com ( 0x0325 from MCB ) is a word pointer to the segment of the currently executing batch file or 0 if none executing. Try the following out. Create a batch file with the first line calling your favorite memory mapper. MCB owner for batch stubs is the shell that called them so it should be easy to find. Second line is a call to debug. Enter "d <MCB Owner>:0315". There's your segment for the batch file. Since offset 3 of a batch stub contains the segment of any calling batch file, the trace back is easy! What version started allowing calls from batch files, v3.3? With any luck, this will be consistent all the way back. I wonder how DR-DOS & 4dos/ndos work? Guess things are going to be busy here for a bit. Later! Wayne ========== ibm.dos/secrets.4 #128, from wlmoore, 2302 chars, Sun Aug 1 11:33:07 1993 Comment(s). ---------- TITLE: Shagging batch files. Since my last post about the Batch_Seg word pointer to the segment of the current batch file I have learned a few things. 1: Immediately following the Batch_Seg word is the command line (case preserved) for the "set comspec" command, or the generic comspec if none is issued. This is true for MSDOS v 5 & 6. I haven't tried any other versions yet. 2: At offset 0x42 from this Batch_Seg word is a word pointer to the Batch_Seg word as an offset from the resident command.com MCB. (Batch_Seg_Word_Pointer) 3: The offset to the Batch_Seg word ( from MCB ) in MSDOS v5 is 0x0262, and for MSDOS v6 is 0x0325. What I haven't found yet, is a pointer to the Batch_Seg_Word_Pointer. It doesn't make any sense for this to be something in the transient portion of command.com. I thought there might be a pointer in the DOS Swappable Data Area, but I haven't been able to find one. So I'm left thinking that possibly: 1: There's an internal DOS function that returns a pointer to the Batch_Seg_Word_Pointer. This would be sweet if true. 2: The method I'm using is complicating the hunt. Currently I'm running from a batch file that calls my memory mapper to get the relative segments, then calls debug. So today I'm modifying my mapper to allow a popup window for memory dumping. 3: There is no internal function, just a simple compare/branch whose location is version specific so that the only feasible ways of determining if we're being called from a batch file are to: a: Shag down the MCBs and if we find a batch stub belonging to the current command shell, open the batch file and read up to the files' offset in bytes to see if we're being called. b: Get the Batch_Seg offsets for all versions of MSDOS and create our own version specific tables for this. 4: My search is too simplistic in that I'm looking for a direct pointer to the Batch_Seg_Word_Pointer instead a summation from some start of the resident data area + the offset to the pointer. I'm wide open to any suggestions on where to go with the hunt. Insights, speculations, flaws in my thinking,,, anything, is welcome. Comments anyone? Wayne ========== ibm.dos/secrets.4 #129, from roedy, 433 chars, Sun Aug 1 14:48:59 1993 Comment to 128. Comment(s). More refs to 128. ---------- The other complication is 4DOS. I asked Andrew Shulman about this who called me where problem a while back and his opinion was it was intractable. However, for many applications, insisting on DOS 5.0 or DOS 6.0 is not unreasonable. For example, some inhouse code for a company could make that assumption, or I could -- tell all my clients for whom I write custom code, that they need upgrade if they want the latest goodies. -30- ========== ibm.dos/secrets.4 #130, from roedy, 234 chars, Sun Aug 1 14:49:00 1993 Comment to 128. More refs to 128. ---------- DDION sent me some code called IS_BAT. It is a little utility that figures out if it is running on the command line on in a BAT file. It has no purpose other than to let you use the technique in your own code. Check your mail. -30- ========== ibm.dos/secrets.4 #131, from roedy, 278 chars, Sun Aug 1 16:06:22 1993 Comment to 129. More refs to 129. ---------- "about this who called me where problem" Roedy, either you have been coding too much Forth, or you need some sleep, or you have been hanging out too much with people just learning English. I think you meant to say "I asked Andrew Shulman about this problem a while back" -30- ========== ibm.dos/secrets.4 #132, from tfrost, 181 chars, Sun Aug 1 17:03:19 1993 Comment to 128. Comment(s). More refs to 128. ---------- >Shagging batch files What does the verb "to shag" mean in the USA? In England, its only use for the last couple of centuries has been as a synonym for the four-letter "f" word. ========== ibm.dos/secrets.4 #133, from j_vanderbilt, 304 chars, Sun Aug 1 18:47:59 1993 Comment to 128. Comment(s). ---------- You may find that after a certain point there is no separate pointer to to the pointer you want - it's just in the one or two spots of code that use the variable. In that case it would be reasonable for it to be in the transient part of COMMAND. There seems to be a good bit of ad hoc code in there. ========== ibm.dos/secrets.4 #134, from dave2, 73 chars, Sun Aug 1 20:13:58 1993 Comment to 132. Comment(s). More refs to 132. ---------- In the USA "to shag" use usually used as "to leave some place rapidly." ========== ibm.dos/secrets.4 #135, from wlmoore, 1220 chars, Sun Aug 1 20:49:08 1993 Comment to 129. ---------- Yeup! I was waiting till I had finalized on some method for MS-DOS before taking a look at what 4DOS does. I know I haven't mentioned DR-DOS in this yet, but I have looked at it, it's hairy! I've been hoping to find a realistic solution to MS-DOS first, its approach to shelling is rather simplistic making it easy to track changes. Then applying what I've learned to DR-DOS, hopefully making it easier. Unlike MS-DOS, DR-DOS keeps a 512 byte resident stub low which has offset pointers to the HMA (assuming UMBs HMAs & DR-DOS 6 here, I haven't played with any other configuration yet). The pointer to the Batch_Seg is in the HMA at offset 0x02c? (don't have my notes right now). But their methods on calling and shelling differ and I haven't had the time yet to track things down. While I'm hoping for an elegant answer, realistically I think it's going to come down to following the MCB and comparing batch stub owners to the current shell. Even here there are problems with DR-DOS since a batch file running under a shell has the shell as its MCB owner, yet the parent psp of an executing program is the primary shell. Oh well, it may not be worth the effort after all, but it sure is interesting! Wayne ========== ibm.dos/secrets.4 #137, from mkropp, 464 chars, Sun Aug 1 21:19:12 1993 Comment to 134. ---------- [From dave2 #134] It also means "pick up". This also goes back to something I said somewhere on BIX about using commonly understood terms. BIX is a global community and many members may not understand idioms. I'd rather see precise, if dry, technical talk that can be more easily understood by more BIXen without having to know the context, story, etc. Things like shag, cherry-pit, fluff, etc. do not mean much to many people without prior knowledge. --Mike ========== ibm.dos/secrets.4 #138, from wlmoore, 61 chars, Sun Aug 1 22:09:53 1993 Comment to 133. ---------- That would really stop this tract cold wouldn't it! Wayne ========== ibm.dos/secrets.4 #139, from karenk, 303 chars, Sun Aug 1 23:02:31 1993 Comment to 132. More refs to 132. ---------- > "What does the verb "to shag" mean in the USA?" tr. v. shagged., shagging., shags. 1. To make shaggy; roughen. 2. a. To chase and bring back; fetch. b. BASEBALL To chase and catch (fly balls) in practice. [ME *shagge < OE sceagga, matted hair.] I think meaning 2a was the one intended. Karen ========== ibm.dos/secrets.4 #140, from gmussar, 83 chars, Mon Aug 2 10:24:12 1993 Comment to 132. ---------- [Reply to tfrost #132] I guess that gives "shag carpet" a whole new meaning. Gary
ms.dos.11 akojovic,
O tome sam pisao PC.PROG.2 u temi cccc. Pogledaj pa ako treba neko dodatno objašnjenje traži. Koja
ms.dos.12 mirkot,
Ovde prilazem mali batch program koji moze da sluzi umesto NORTON-ovog NCD. Ulazni argumenti su ime diska i deo imena direktorijuma na koji zelite da predjete. Ukoliko izostavite ime diska podrazumeva se tekuci. Nisam siguran da li program radi sa verzijama DOS-a ispod 5.0, zboga parametara DIR komande. Ja sam program nazvao CCD zbog blizine tastera na tastaturi. NEOPHODNO je da u istom (ili nekom drugom) direktorijumu imate fajl CCD.$$$ koji sadrzi samo tri znaka: slova CD i jedan razmak (space). @echo off copy c:\bat\ccd.$$$ c:\bat\$.bat > nul if %2. == . goto 1_parametar %1 shift :1_parametar dir \ /a:d /s /b | find /i "%1" >> c:\bat\$.bat call c:\bat\$.bat del c:\bat\$.bat cls Mirko
ms.dos.13 bulaja,
**** new file **** R:\IBMPC\INFO\*.* ---------------------- dvint36 zip 92533 Interrupt List DESQview / QEMM API poziva inter36a a01 166567 MSDOS Interrupt List 36, podaci o svim interaptima #1/7 inter36a a02 165789 MSDOS Interrupt List 36, podaci o svim interaptima #2/7 inter36b a01 169567 MSDOS Interrupt List 36, podaci o svim interaptima #3/7 inter36b a02 168004 MSDOS Interrupt List 36, podaci o svim interaptima #4/7 inter36c zip 114507 MSDOS Interrupt List 36, podaci o svim interaptima #5/7 inter36d a01 105567 MSDOS Interrupt List 36, podaci o svim interaptima #6/7 inter36d a02 103670 MSDOS Interrupt List 36, podaci o svim interaptima #7/7
ms.dos.14 mirkot,
Cesto se u batch programima koristi komanda ECHO. da bi se ispisala jedna prazna linija. Potpuno ravnopravno se mogu koristiti i: ECHO+ ECHO[ ECHO] ECHO\ ECHO: ECHO; ECHO" ECHO/ ECHO <Alt-255> Isto vazi i za ispitivanje postojanja argumenata pozvanog batch programa: IF %1+ == + ECHO Nema argumenata ... itd. kao u gornjem primeru. Cak funkcionise i: IF %1<Alt-255> == <Alt-255> ECHO Nema argumenata tako da se u samom listingu ne vidi nista.
ms.dos.15 ssokorac,
─┼┤ IF %1<Alt-255> == <Alt-255> ECHO Nema argumenata Funkcioniše bilo koji kod, jer šta on radi? Doda %1 na prvi kod, a kako je %1 ništa ostaje samo taj kod koji je, naravno, jednak samom sebi.
ms.dos.16 vitez.koja,
#=> ECHO <Alt-255> Aman ;) funkcionise i "ECHO.", što je i zvanicna kombinacija za ispisivanje praznog reda (zašto zvanična ? zato što sam je našao u dve naše knjige o DOSu, a šta su te knjige doli prepisani helpovi i uputstva;).
ms.dos.17 aspasic,
HI :) E, mom ortaku se dešavaju čudne stvari sa compom pa me zamolio da pitam sledeće: Naime desi mu se da mu comp prijavi ono "Internal stack overflow". To se svima bar jednom desilo. Onda resetuješ makinu i to je to! :) E, a kad on posle overflow-a resetuje makinu, ona mu uništi FAT tabelu !!!! Ako neko zna šta je neka lupi reply ili nek' mi pošalje mail. Hvala. ASP
ms.dos.18 vitez.koja,
žudne stvari+FAT => virus :(
ms.dos.19 aspasic,
### žudne stvari+FAT => virus :( Ma nije virus, provereno :( ASP
ms.dos.20 mjova,
da li je kopija FATa uvek u memoriji?
ms.dos.21 ilazarevic,
Pretraživao sam ovu i PC.PROG.2 konferenciju ne bih li našao nešto u direktnom pisanju na ekran, bez poziva DOS-a. Nisam uspeo da nađem - je l' može jedan pointer?
ms.dos.22 dejanr,
>> Pretraživao sam ovu i PC.PROG.2 konferenciju ne bih li našao nešto u >> direktnom pisanju na ekran, bez poziva DOS-a. Nisam uspeo da nađem - je l' >> može jedan pointer? Da li te zanima pisanje preko BIOS-a ili direktno u video memoriju? Da li te zanima tekst ili grafika? Ako je grafika, onda za koju karticu?
ms.dos.23 ilazarevic,
> Da li te zanima pisanje preko BIOS-a ili direktno u video memoriju? Da li Direktno u video memoriju, u text modu, za Herkules. Elem, u međuvremenu mi je djelovic rekao na koju adresu da upisujem. Ostaje mi još jedan problem: kako da upišem znak? Jedini prihvatljiv način je da upisujem ASCII kod, ali onda mi se ne ispiše ništa...
ms.dos.24 dejanr,
>> Direktno u video memoriju, u text modu, za Herkules. Elem, u međuvremenu >> mi je djelovic rekao na koju adresu da upisujem. Ostaje mi još jedan >> problem: kako da upišem znak? Jedini prihvatljiv način je da upisujem >> ASCII kod, ali onda mi se ne ispiše ništa... Treba da upisuješ ASCII znak, ali na svako drugo mesto! Svako prvo je atribut tog znaka, da li je bold, podvučen, inverzan... Malo sam pozaboravljao koji je bit za šta odgovoran što se atributa tiče, ali može da se prelista neka knjiga ako treba.
ms.dos.25 djelovic,
> Treba da upisuješ ASCII znak, ali na svako drugo mesto! Svako prvo je > atribut tog znaka, da li je bold, podvučen, inverzan... Mislim da je obrnuto: prvo idu slova pa onda atributi?
ms.dos.26 ilazarevic,
>> Treba da upisuješ ASCII znak, ali na svako drugo mesto! Svako prvo je >> atribut tog znaka, da li je bold, podvučen, inverzan... > > Mislim da je obrnuto: prvo idu slova pa onda atributi? Hmmm :) Ja sam probao da pišem sam znak, ali na svako prvo mesto, i događa se greška. To je izgledalo ovako (izvinite na juskiju): MemŠ$B800:$0000Ć:='A'; Ovo neće da radi, prijavljuje Type mismatch.
ms.dos.28 ssokorac,
─┼┤ MemŠ$B800:$0000Ć:='A'; ─┼┤ Ovo neće da radi, prijavljuje Type mismatch. Pa, ne možeš da mu šalješ char na mesto bytea :). Dakle, od B000:0000 ideš sledećih 4000 bajtova po ekranu, u paru po dva bajta. 16 bitova: x xxx xxxx xxxxxxxx - --- ---- -------- b b f ASCII l k r kod i g g karaktera n r r k o o u u n n d d Primer: MEMW Š$b000:0Ć:=(WHITE SHL 4 + BLACK) SHL 8 + ORD('A') Ispisuje crno na belom A. P.S. B800:0 je za VGA/EGA, hercules kreće od B000:0.
ms.dos.30 v.nesic,
> MemŠ$B800:$0000Ć:='A'; > > Ovo neće da radi, prijavljuje Type mismatch. Mem[$B000:$0000]:=ord('A') Ovo hoće da radi, ne prijavljuje Type mismatch.
ms.dos.31 isekulovic,
>> Da li te zanima pisanje preko BIOS-a ili direktno u video memoriju? Da >> li te zanima tekst ili grafika? Ako je grafika, onda za koju karticu? Ja sam samostalno uspeo da provalim na hercu kako da gadjam grafiku direktno u memoriju, ali bi me veoma interesovalo isto to za ega/vga, u literaturi sam pronašao da se video memorija nalazi izmedju A000 i C000 ali tu ima mesta samo za jednu stranu 640x350x16.
ms.dos.32 peca.st,
!-> koji je bit za šta odgovoran što se !-> atributa tiče, ali može da se prelista !-> neka knjiga ako treba. Prva četiri bita - boja ispisa, sledeća tri - boja pozadine (nema svetlih nijansi, samo 8 boja) i blink on/off. Peđa.
ms.dos.33 maksa,
Turbo Pascal - Kompletan vodič O'Brien Procedure FastWrite(x,y : Byte; Var s : string fg,bg : Byte) ; Var w : word; i,ColAtr : Byte; Begin ColAtr := (bg Shl 4) + fg; (* Kreira bajt atributa *) w := ((y-1)*80 + (x-1))*2; (* Izračunava pomeraj *) For i := 1 To Length(s) Do Begin MemWŠVS:wĆ := ColAtr Shl 8) + Ord(sŠiĆ); Inc(w,2); End; End; Izvini zbog yuscii-a.
ms.dos.35 milos,
>> video memorija Dekiper je o tome pisao u conf. Izašlo i u računarima, a ovde izgleda nema ko da čita. Evo , prepisujem: Var Adresa:Word; Begin If MemŠ0:$0449Ć=7 then Adresa:=$B000 else Adresa:=$B800; MemWŠAdresa:0Ć=Word('C')+($70 Shl 4); End. I ovde umesto Word('C') upiši npr. Word('A') kao što tebi treba, a ovo $70 Shl 4 predstavlja šemu koja je u stvari onaj drugi bajt (bajt pozadine), jer kao što vidite, koristi se MemW koji traži 2 bajta iliti Word. Dakle Word('A') + ($70 Shl 4) će "taman" popuniti ova dva bajta i stvar je rešena. Ali da znaš da ne smeš prema tome da upisuješ u svaki, nego u svaki drugi bajt ;)) Interesantno je, mada nisam imao vremena za tako nešto, malo čeprkati sa ovim $70, menjati vrednost i videti šta će se desiti. Svaka promena ove vrednosti će rezultovati promenom kombinacije forground/background. Ovo ($70) će dati belo na crnom, a neke druge vrednosti, nešto drugo.
ms.dos.36 eagle,
> x xxx xxxx xxxxxxxx > - --- ---- -------- > b b f ASCII > l k r kod > i g g karaktera > n r r > k o o Ovako je po defaultu, a mogu se odrediti i cela 4 bita za pozadinu (standardna tri plus blink-bit).
ms.dos.37 eagle,
> Evo , prepisujem: > Begin > If MemŠ0:$0449Ć=7 then Adresa:=$B000 else Adresa:=$B800; > MemWŠAdresa:0Ć=Word('C')+($70 Shl 4); > End. Ono u Računarima niš' ne valja. Bolje bi bilo da stoji ($07 Shl 8). U gornjem primeru je rezultat isti, međutim nemoguće je promeniti atribut tako da se dobije bilo koja druga pozadina sem crne, zato što ispada da se gornja 4 bita koriste kao foreground, a donja 4 bita se mešaju sa karakterom. > Interesantno > je, mada nisam imao vremena za tako nešto, malo čeprkati sa > ovim $70, menjati vrednost i videti šta će se desiti. Svaka Veoma interesantno, nikad ne znaš šta će ispasti ;) > Ovo ($70) će dati belo na crnom, a Nije belo nego svetlo-sivo.
ms.dos.38 pedjak,
> MemŠ$B800:$0000Ć:='A'; > Ovo neće da radi, prijavljuje Type mismatch. Naravno da je Type mismatch, kad se u memoriju upisuju bajtovi. Dakle MemŠ$b800;$0000Ć:=ord('A') i sve će biti ok.
ms.dos.39 ssokorac,
─┼┤ Ovako je po defaultu, a mogu se odrediti i cela ─┼┤ 4 bita za pozadinu (standardna tri plus blink-bit). Umesto blinkovanja dobijaš još 8 boja? Kako?
ms.dos.40 milos,
Da li neko zna kako je moguće napisati jednu funkcijicu koja bi detektovala pritisak samo Alt ili Ctrl tastera, nešto slično kao onome u DesQview-u.
ms.dos.41 eagle,
> ─┼┤ Ovako je po defaultu, a mogu se odrediti i cela > ─┼┤ 4 bita za pozadinu (standardna tri plus blink-bit). > Umesto blinkovanja dobijaš još 8 boja? Kako? Prosto, preko 10h prekida. Na primer ovako: procedure blink(x:boolean);assembler; asm mov ah,10h mov al,03h mov bl,byte(x) int 10h end; Sa blink(false) sprečavaš blinkanje, iliti dobijaš 16 boja za pozadinu, a sa blink(true) vraćaš na staro. Treba napomenuti da se ovo posle svake promene video-moda vraća na default, a što se TP-a tiče , procedura textbackground pretvara sve ulazne vrednosti u 0..7, što znači da se ovakvi atributi moraju upisivati direktno u promenljivu textattr.
ms.dos.42 niklaus,
> ─┼┤ Ovako je po defaultu, a mogu se odrediti i cela > ─┼┤ 4 bita za pozadinu (standardna tri plus blink-bit). > > Umesto blinkovanja dobijaš još 8 boja? Kako? I ne samo to. Jako je zanimljiv fazon sa menjanjem RGB parametara (verovatno preko VGA registara, samo kojih?) svakog atributa u text-modu. Svi ste sigurno videli uvodnu sekvencu igre GODS - kada sadržaj DOS text okruženja Fade-Out -ne. Jaaako lepo! (((: (:niklaus:)
ms.dos.43 niklaus,
> Da li neko zna kako je moguće napisati jednu funkcijicu koja bi > detektovala pritisak samo Alt ili Ctrl tastera, nešto slično kao > onome u DesQview-u. Najbolje ti je da prebaciš keyboard-interrupt vekror na svoju proceduricu, a ona bi bila kao nešto što imaš ovde na SEZAMu ( R:ĐIBMPCĐPASCALĐTPFAST40.??? ). Verovatno nećeš ukapirati ovaj pseudo-jezik (odn. klasični programerski žargon), ali napregni sive ćelijice. (; (;niklaus;) P.S. Naravno, šta ti nije jasno - pitaj!
ms.dos.44 eagle,
> I ne samo to. Jako je zanimljiv fazon sa menjanjem RGB > parametara (verovatno preko VGA registara, samo kojih?) svakog > atributa u text-modu. Može i preko Biosa, postoji čitav niz funkcija za rad sa kolor registrima.
ms.dos.45 drpr,
-> Može i preko Biosa, postoji čitav niz funkcija za rad sa -> kolor registrima. Ajd nas uputi gdi da tražimo pa da se i sami sa time zanimamo :) cope
ms.dos.46 ilazarevic,
> MemŠ$B000:$0000Ć:=ord('A') > > Ovo hoće da radi, ne prijavljuje Type mismatch. Hoće, ali ne ispisuje znak :)
ms.dos.47 eagle,
> -> Može i preko Biosa, postoji čitav niz funkcija za rad sa > -> kolor registrima. > Ajd nas uputi gdi da tražimo pa da se i sami sa time zanimamo Ja sam to pronašao u knjizi PC/Rom Bios, a inače ima u svakoj interrupt listi. Ako hoćeš, mogu da ovde prepišem tih šest-sedam funkcija.
ms.dos.48 v.nesic,
>> MemŠ$B000:$0000Ć:=ord('A') >> >> Ovo hoće da radi, ne prijavljuje Type mismatch. > > Hoće, ali ne ispisuje znak :) Probaj B800:0000 ako koristiš kolor karticu :)
ms.dos.49 niklaus,
>> I ne samo to. Jako je zanimljiv fazon sa menjanjem RGB >> parametara (verovatno preko VGA registara, samo kojih?) svakog >> atributa u text-modu. > > Može i preko Biosa, postoji čitav niz funkcija za rad sa kolor > registrima. Koji pozivi? Baži to ovde - za sve nas. (: (:niklaus:)
ms.dos.50 robert,
>> I ne samo to. Jako je zanimljiv fazon sa menjanjem RGB parametara Neko je već kačio mali demo program u ovoj konf. (ali ne i ovoj temi) koji radi zatamnjivanje i ponovno osvetljavanje ekrana. Prekopaj malo ako te zanima.
ms.dos.51 eagle,
> > Može i preko Biosa, postoji čitav niz funkcija za rad sa > > kolor registrima. > Koji pozivi? Baži to ovde - za sve nas. (: Evo ovako: žitanje kolor registara ┌─────────────────────────┐ │ ah = 10h │ │ al = 15h │ │ bx = kolor registar │ │ int 10h │ ├─────────────────────────┤ │ ch = vrednost zelene │ │ cl = vrednost plave │ │ dh = vrednost crvene │ └─────────────────────────┘ Postavljanje kolor registara ┌─────────────────────────────┐ │ ah = 10h │ │ al = 10h │ │ bx = kolor registar │ │ ch = vrednost zelene │ │ cl = vrednost plave │ │ dh = vrednost crvene │ │ int 10h │ └─────────────────────────────┘ Postavljanje bloka u kolor registrima ┌──────────────────────────────────────┐ │ ah = 10h │ │ al = 12h │ │ bx = prvi kolor registar │ │ cx = broj kolor registara │ │ es:dx = seg:ofs kolor tabele │ │ int 10h │ └──────────────────────────────────────┘ Ima tu još par funkcija za straničenje kolor registara, ali mi se čini da nema neke koristi od njih. E sad, u knjizi piše da zbir zelene, crvene i plave vrednosti u dekadnom obliku treba da iznosi 100, tj. da njihove vrednosti predstavljaju procente. U stvarnosti nije tako, već se jednostavno iz svake vrednosti uzima prvih 6 bitova (znači da je najveća vrednost 3Fh) i od njih se pravi boja po principu "što više crvene to crvenija boja". Kolor tabela u poslednjoj funkciji bi trebala biti matrica x * 3 bajta , pri čemu se ovo x unosi u CX.
ms.dos.52 drpr,
-> listi. Ako hoćeš, mogu da ovde prepišem tih šest-sedam -> funkcija. Ma samo uputi koji su interapti koje adrese itd.. ne moraš da pišeš. cope
ms.dos.53 vvelisavljev,
Zanima me kako se ponaša computer kada napišeš FORMAT C:. Da li će pitati nešto u stilu "Are you shure?"? Ovo mi je vrlo važno a nemam nameru da startujem FORMAT na svom HDD-u da bi proverio.
ms.dos.54 peca.st,
!-> Da li će pitati nešto u stilu "Are you !-> shure?"? Pa neće pitati ništa u stilu "Are you shure?" ali u stilu "Are you sure?" hoće. ;) Peđa.
ms.dos.55 spantic,
> Da li će pitati nešto u stilu "Are you shure?"? To beše ono svojevremeno neko sa SEZAMa demonstrirao? Po priči ispada da počne samo procente da broji. Ja posle nisam probao :)
ms.dos.56 magician,
­=> To beše ono svojevremeno neko sa SEZAMa demonstrirao? ­=> Po priči ispada da počne samo procente da broji. Ja posle ­=> nisam probao :) Ja sam se mogao zakleti da si ti bio taj koji je pričao kako je hteo nekome da pokaže da 'format' prvo pita 'da li si siguran' i.... Posle si morao da radiš unformat. :) Ako nisi ti, onda je sigurno neki drugi Pantić :)
ms.dos.57 debelijencija,
!=?> Zanima me kako se ponaša computer kada napišeš FORMAT C:. !=?> Da li će pitati nešto u stilu "Are you shure?"? Koliko se ja sećam: WARNING!! ALL DATA ON NON-REMOVABLE DISK C: WILL BE LOST! CONTINUE (Y/N)?
ms.dos.58 drassa,
>> Da li će pitati nešto u stilu "Are you shure?"? Će da pita... Nego šta! Samo shure = sure :) Bye, Drassa
ms.dos.59 bearboy,
> Zanima me kako se ponaša computer kada napišeš FORMAT C:. > > Da li će pitati nešto u stilu "Are you shure?"? Hoće, barem MS-DOS 6 hoće.
ms.dos.60 ndragan,
/ Ovo mi je vrlo važno a nemam nameru da startujem FORMAT na svom Možda bi moglo da se proba sa RAM diskom? Ako već može da se kešira, pade mi na um i ovo: šta bi se u tom slučaju desilo sa kešerovim baferima?
ms.dos.61 ilazarevic,
> Da li će pitati nešto u stilu "Are you shure?"? Reći će nešto kao: "Svi podaci biće izgubljeni. Da li želiš da nastaviš?"
ms.dos.62 viktor,
A, ovaj put me neces na to upecati ... ;)))
ms.dos.63 spantic,
> Ja sam se mogao zakleti da si ti bio taj koji je pričao kako je hteo > nekome da pokaže da 'format' prvo pita 'da li si siguran' i.... > Posle si morao da radiš unformat. :) Jok ja, mislim da je to bio Dzak :) Nemam ja ništa s tim :))
ms.dos.64 mickeyl,
=> Hoće, barem MS-DOS 6 hoće. 'Oće svaki.
ms.dos.65 ndragan,
/ A, ovaj put me neces na to upecati ... ;))) Nije bila pecaljka, nego obična mentalna vežba. Pretpostavljam da bi se formatirali kešerovi baferi (pod dodatnom pretpostavkom da je upis odložen), a kešer onda ne bi prijavljivao loše klastere dok se formatiranje ne završi, a onda... more, moraću da probam sa nekom manjom particijom na nekom levom disku (kod korisnika). Kad smo kod pecanja, ovde je sad glavna provala da karaši idu ko ludi na stiropor, probali ljudi i stvarno ide. Ona druga provala da smuđevi idu na pertinaks je ipak samo provala.
ms.dos.66 oduz,
>**> Kad smo kod pecanja, ovde je sad glavna provala da karaši >**> idu ko ludi na stiropor, probali ljudi i stvarno ide. Ona >**> druga provala da smuđevi idu Jos malo ce i ljudi na stiropor.... Ogi
ms.dos.67 vvelisavljev,
> Nije bila pecaljka, nego obična mentalna vežba. > Pretpostavljam da bi se Kad napišem Format E: (ramdrive) dos napiše da se ta particija ne može formatirati.
ms.dos.68 kriss,
Evo možda dosadnog pitanja, ali mnogo toga se uči :) žemu 'služe' .BIN datoteke? I uopšte, kakva im je struktura? (Jel mogu da se prevedu u nešto izvršno)
ms.dos.69 niklaus,
(:> Kad napišem Format E: (ramdrive) dos napiše da se ta (:> particija ne može formatirati. Rupa na saksiji. (; Kao ono: "Keyboard not present! Press <F1> to continue!" ((: (:niklaus:)
ms.dos.70 snemcev,
>> "Keyboard not present! >> Press <F1> to continue!" ((: Ovo i nije toliko blesavo kao što na prvi pogled izgleda. Da bi pritisnuo F1 moraš priključiti tastaturu, a time automatski i otklanjaš uzrok problema.
ms.dos.71 mjova,
> "Keyboard not present! > Press <F1> to continue!" ((: ne shvatam. ako tastatura nije prisutna, šta bi trebalo da se desi? meni je ovo logično. "dalje ne idem bez tastature, kad je montiraš daj mi F1" - sasvim logično, zar ne?
ms.dos.72 .bale.,
> žemu 'služe' .BIN datoteke? I uopšte, kakva im je struktura? (Jel > mogu da se prevedu u nešto izvršno) Trebalo bi da struktura bude ista kao .COM, pošto exe2bin od .exe pravi .bin, a kad se to preimenuje u .com, gde, radi! :)
ms.dos.73 kriss,
*­> Trebalo bi da struktura bude ista kao .COM, pošto exe2bin od *­> .exe pravi .bin, a kad se to preimenuje u .com, gde, radi! :) ??? Nije mi jasno. Znači obična BIN=COM ?
ms.dos.74 ndragan,
/ Kad napišem Format E: (ramdrive) dos napiše da se ta particija ne / može formatirati. Svašta će da urade, samo zato što ne znaju da napišu rutinu koja bi obradila loše klastere u istom :)
ms.dos.75 isekulovic,
>> Trebalo bi da struktura bude ista kao .COM, pošto exe2bin od .exe >> pravi .bin, a kad se to preimenuje u .com, gde, radi! :) Preimenuj .exe u .com, i gle čuda radi! :)
ms.dos.76 .bale.,
> Nije mi jasno. Znači obična BIN=COM ? Pa zavisi, možeš i tekst fajl da nazoveš .bin :)
ms.dos.77 .bale.,
> Preimenuj .exe u .com, i gle čuda radi! :) Da, ali i dalje kao .exe :)
ms.dos.78 mjova,
> Preimenuj .exe u .com, i gle čuda radi! :) to nije nikakvo čudo. servis za učitavanje i izvršavanje programa se oslanja na prva dva slova kojima počinje SAMO exe datoteka. ako su ta slova MZ onda se učitava EXE, što znači da se vodi računa o segmentima i obavlja se podešavanje koda (u memoriji). na taj način se omogućava izvršavanje programa u bilo kom segmentu! strukture com i exe se razlikuju, nije im jedina razlika tip. rezlike su značajne jer je .com 'slika' koda kakav mora biti u memoriji, uvek se učitava na org 100h i ne može biti duži od jednog segmenta (u normalni uslovima). exe ima zaglavlje, tabelu za relokaciju, i brdo informacija pored samog koda. exe ne može da radi nikako drugačije no da se potera dosov 'loader', dok se com može relativno lako startovati: alocira se 64k, u taj prostor se učita ceo fajl (od 100h) i jednostavno skoči na 100h.
ms.dos.79 ndragan,
/ Nije mi jasno. Znači obična BIN=COM ? Ima različit ofset. .com ima ORG 100, tako da se pri učitavanju relocira 256 bajta višlje, a ta rupa služi da se u nju strpa pcb (program control block) i ostali zaostaci iz CP/Ma. .bin valjda nema tu relokaciju, i zgodan je što se onda može direktno učitati u memoriju i pozvati kao potprogram (PRINT USR 51000 :). Ovo u zagradi je zezalica, ali ta tehnika upravo pali kad se, recimo, asemblerska rutina učitava i/ili poziva iz foksa ili bejzika.
ms.dos.80 niklaus,
(:>>> "Keyboard not present! (:>>> Press <F1> to continue!" ((: (:> (:> Ovo i nije toliko blesavo kao što na prvi pogled izgleda. Da (:> bi pritisnuo F1 moraš priključiti tastaturu, a time (:> automatski i otklanjaš uzrok problema. Pa recimo, primer: Crkne kabl tastature, ili nešto od vitalne elektronike u samoj njoj. Tu je najveći problem, što se nakon (eventualnog) pritiskanja <F1> kompjuter reboot-uje. Odnosno, kako pristupiti promptu? (recimo u AUTOEXEC-u se nalazi i komanda NC ili WIN ili neka druga aplikacija koju je moguće koristiti bez tastature - mišem) (:niklaus:)
ms.dos.81 janko,
> (:>>> "Keyboard not present! > (:>>> Press <F1> to continue!" ((: Svojevremeno sam se iskidao od smeha na izmišljenu: Press any key to continue or any other key to quit. A ovo je, izgleda, stvarna poruka. Maštovito. :) Evo još jedne stvarne poruke. To se događalo na računaru Mek PowerBook. (jes' da nije ms.dos, ali, da se vidi, da i tuđa žena nije uvek lepa :) ). Instalira se program. (Američki, za podršku faks modema, koji je ugrađen u računar na kome se događa priča). Instaler završi instalaciju i kaže "Program je uspešno instaliran." Zatim, pri butovanju, program označi samog sebe da se nije butovao, i da poruku "Nisam mogao da se učitam, jer ovo nije PowerBook kompjuter." Kako biste se osećali, kada čitate tu poruku na ekranu u čijem ćošku je ugravirano "PowerBook," na računaru u koji je ugrađen hardver specijalizovan za PowerBook, i to hardver iste firme koja je napisala program (dobijen uz hardver, za podršku tom hardveru) koji daje ovako genijalnu poruku? :)) Štos je bio u tome da je program pravljen pre nego što je napravljen baš taj model PowerBook-a, pa pošto je program malo prljavo bio pisan... moralo se doći do novije verzije.
ms.dos.82 snemcev,
>> Tu je najveći problem, što se nakon (eventualnog) pritiskanja >> <F1> kompjuter reboot-uje. Odnosno, kako pristupiti promptu? (recimo >> u AUTOEXEC-u se nalazi i komanda NC ili WIN ili neka druga aplikacija >> koju je moguće koristiti bez tastature - mišem) To uopšte nije problem. Svaki noviji BIOS dopušta da se isključi testiranje ta(ra)stature prilikom podizanja sistema. Pitanje je samo ko će se setiti da isključi proveru pre nego što mu crkne tastatura. ;)) Mada, ako koristi samo programe za koje ne treba tastatura (o, zar i to postoji?), onda je vrlo verovatno da je provera već odavno isključena.
ms.dos.83 eotek,
> block) i ostali zaostaci iz CP/Ma. .bin valjda nema tu relokaciju, i > zgodan je sto se onda moze direktno ucitati u memoriju i pozvati kao > potprogram (PRINT USR 51000 :). Ovo u zagradi je zezalica, ali ta mozda nema sa ovim veze, ali mi treba pomoc !! : u TP 5.5 postoji jedno programce zove se binobj.exe koje fino radi sa fontovima (prebaci ih u .obj, pa se font ulinkuje). e sad, to bih isto ali da radi u C (imam 6.0), ali ne znam kako da font ubacim u exe fajl, dakle da ne mora da se ucitava sa diska, iz posebnog .fon fajla. sigurno ima efikasnog leka, koji li je ? eotek (moze i ma se)
ms.dos.84 cnenad,
Napravio sam ovaj mali BAT fajl kojim zelim sebi olaksati posao prilikom arhiviranja ali nikako nisam uspeo da ga nateram da kad pored prve komande za PKZIP pored %1 koji je ime arhive u tekucem direktorijumu izvrsi arhiviranje odredjenih datoteka a ne svih, a dodao sam jos %2.%3 gde bi to bilo normalno ime.ext ili dzoker znaci ? i * ali nece da radi. U stvari radi samo ako se ubaci *.* ali ne i nesto drugo. Moze li se to doterati ili da zaboravim na to ? BTW razmisljam jos da doteram i ubacim parametre ispred sa kojima bih odredjivao gde ce se arhiva napraviti ali mi se cini previse komplikovanim jer se parametri ubacuju redom kao na primer pkzip -! -ex -%1 -%2 -%3 %4 %5.%6 gde bih povremeno ubacivao odredjene prekidace kad mi zatrebaju ali normalno ako necu neke prekidace ili samo jedan (od u ovom primeru moguca 3) onda ce drugi parametar pogresno protumaciti (a on bi bio ime arhive) i ne bi se napravila arhiva. Evo BAT-a ! @ECHO OFF PKZIP -! -EX %1 PKZIP -! %1 -Z < C:\COMMENT.TXT PKUNZIP -T %1 @ECHO ON
ms.dos.85 dr.grba,
>> pkzip -! -ex -%1 -%2 -%3 %4 %5.%6 Sasvim je dovoljno i ovako (pisano za doskey) : doskey u=pkunzip $1 $2 $3 $4 $5 $6 doskey z=pkzip $1 $2 $3 $4 $5 $6 Šest mesta za argumente - teško da bi mi ikada atrebalo više... A što se tiče kompleksnije .BAT datoteke - pa, bože moj, zašto da ne?...
ms.dos.86 cnenad,
ŁŁŁ doskey u=pkunzip $1 $2 $3 $4 $5 $6 ŁŁŁ doskey z=pkzip $1 $2 $3 $4 $5 $6 ŁŁŁ ŁŁŁ Sest mesta za argumente - tesko da bi mi ikada atrebalo ŁŁŁ vise... Da li se ponasaju onako kako bih ja hteo i kako sam naveo u prethodnoj poruci ?
ms.dos.87 v.nesic,
> Sasvim je dovoljno i ovako (pisano za doskey) : > > doskey u=pkunzip $1 $2 $3 $4 $5 $6 > doskey z=pkzip $1 $2 $3 $4 $5 $6 Umesto $1 ... $6 stavi jedno $* koje prenosi SVE parametre.
ms.dos.88 dr.grba,
>> Da li se ponasaju onako kako bih ja hteo i kako sam naveo u >> prethodnoj poruci ? Da. Na primer : z a:qwerty -ex -m *.txt *.doc -xqwerty.txt Ako si baš navalio na više argumenata, onda ni razlika između z i pkzip ne igra neku ulogu...
ms.dos.89 dr.grba,
>> Umesto $1 ... $6 stavi jedno $* koje prenosi SVE parametre. E, pa lepo, ovo je još bolje. Nisam znao za ovo. Hvala.
ms.dos.90 cnenad,
ŁŁŁ Ako si bas navalio na vise argumenata, onda ni razlika izmedu ŁŁŁ z i pkzip Da, ali ubacim na primer osnovne kao sto su -! -EX -U/F i onda opciono -rp i mozda jos recimo -$[d:]. Hvala !
ms.dos.91 vision,
Video ja one vase diskusije oko prikazivanju karaktera direktno u video memoriji, i zatim primetio da ste spomenuli i kako se moze dobiti jos 8 boja ako se blinkovanje ukine (poruka 41 'eagle'). Sve radi OK ali samo za EGA i navise, za HERCULES nece. Bas sam primetio da to je ipak moguce i uHERCULESU, tu 'foru' upotrebljava Central Point Software (kod CPAV-a, PCShell-a,...). Ako neko zna kako da se to resi i u HERCULES-u, molim da posalje resenje ovde. PS. Thanks.
ms.dos.93 drpr,
Nisam znao da li je ovo najpogodnija tema za pitanje koje sledi ali se nadam da ću naići na odgovor: čelim da uradim program za komunikaciju sa paralelnim portom, nije u pitanju printer već neki uređaj kojem ću ja slati neke kodove ali ću najčešće primati znake sa porta. Potražio sam malko u Helppc šta ima o tome ali mi baš nije sve načisto pa molim nekog da mi pomogne oko ovoga da napiše par reči kako ta komunikacija ide o čemu se vodi računa, koje su adrese itd... U napred hvala, Cope
ms.dos.94 dtadic,
>> čelim da uradim program za komunikaciju sa paralelnim portom, >> nije u pitanju printer već neki uređaj kojem ću ja slati neke >> kodove ali ću najčešće primati znake sa porta. Potražio sam >> malko u Helppc šta ima o tome ali mi baš nije sve načisto pa >> molim nekog da mi pomogne oko ovoga da napiše par reči kako ta >> komunikacija ide o čemu se vodi računa, koje su adrese itd... Svaki paralelni port ima 3 registra: 8-bitni izlazni registar (za LPT1 adresa 3BC) 5-bitni ulazni registar (za LPT1 adresa 3BD) 5-bitni izlazni registar (za LPT1 adresa 3BE) Promenu logičkih nivoa na pinovima na konektoru vršiš upisom vrednosti na odgovarajuću adresu. Na primer, ako hoćes da ti na pinu 2 bude '1', a pinovima 3-9 '0' u Pascalu je dovoljno da napišeš Port[$3BC] := 1. žitanje radiš slično. Obrati pažnju da se radi o jednosmernim portovima tj. signale iz tvog uređaja možeš da dovodiš samo na 5 pinova koji su vezani za registar na adresi 3BD. Nivoi su TTL, a raspored izvoda i adresa za LPT2 i LPT3 imaš u HelpPC-u. Ako te još nešto zanima - pitaj. DT
ms.dos.95 drpr,
-> 8-bitni izlazni registar (za LPT1 adresa 3BC) -> 5-bitni ulazni registar (za LPT1 adresa 3BD) -> 5-bitni izlazni registar (za LPT1 adresa 3BE) Evo ovako da idemo po redu: Parallel Printer Port Port 3BC printer data output (readable) Ovde nisam želeo da prepišem sve jer su svi data za slanje: Port 3BD printer status register (Parallel Printer Port) │7│6│5│4│3│2│1│0│ ports 279, 379, 3BD │ │ │ │ │ │ │ └──── 1 = time-out │ │ │ │ │ └─┴───── unused │ │ │ │ └──────── 1 = error, pin 15 │ │ │ └───────── 1 = on-line, pin 13 │ │ └────────── 1 = out of paper, pin 12 │ └─────────── 0 = Acknowledge, pin 10 └──────────── 0 = busy, pin 11 E sad ti si mi rekao da je ovo ulazni registar znači sve podatke koje dobijam sa paralelnog porta stizaće ovde? Pitanje je da li nekako mogu da organizujem da "kontinualno" kupim podatke sa tog porta (interrupt 17h?). Mislim želim da se okačim o neki interrupt i da skidam podatke kao u seriskoj komunikaciju. I zanima me da li su ovi podatci za pinove napisani samo za printer (out of paper....) a ako nakacim nesto drugo onda postaje ulazni registar? Toliko od mene za sad i u napred hvala cope
ms.dos.96 dtadic,
>> Port 3BD printer status register (Parallel Printer Port) ........................................................... >> E sad ti si mi rekao da je ovo ulazni registar znači sve >> podatke koje dobijam sa paralelnog porta stizaće ovde? Da. Moći ćeš da očitaš stanje na pinovima na centronix konektoru (10-15). >> Pitanje je da li nekako mogu da organizujem da "kontinualno" kupim >> podatke sa tog porta (interrupt 17h?). Mislim želim da se okačim o neki >> interrupt i da skidam podatke kao u seriskoj komunikaciju. Nema potrebe da koristiš interapt 17h - istu stvar možeš da ostvariš direktnim čitanjem porta na adresi 3BD. Nemam iskustva sa kačenjem na interapt, ali evo onoga što znam: LPT-u 1 je dodeljen IRQ7. Međutim, u interapt listi piše da njegova upotreba zavisi od proizvođača hardvera. Nekad se aktivira na promenu signala error (pin15), nekad na promenu on-line (pin13), a nekad se uopšte ne aktivira. >> I zanima me da li su ovi podatci za pinove >> napisani samo za printer (out of paper....) a ako nakacim nesto >> drugo onda postaje ulazni registar? To je ulazni registar, bez obzira šta je na njega vezano. DT
ms.dos.97 bulaja,
**** new file **** R:\IBMPC\INFO\inter*.* ---------------------- inter37 a01 174390 MSDOS Interrupt List 37, podaci o svim interaptima #1/6 inter37 a02 174383 MSDOS Interrupt List 37, podaci o svim interaptima #2/6 inter37 a03 174330 MSDOS Interrupt List 37, podaci o svim interaptima #3/6 inter37 a04 174384 MSDOS Interrupt List 37, podaci o svim interaptima #4/6 inter37 a05 174400 MSDOS Interrupt List 37, podaci o svim interaptima #5/6 inter37 a06 162368 MSDOS Interrupt List 37, podaci o svim interaptima #6/6 <Thanks to drakce & Imtel BBS>
ms.dos.98 d.petrovic,
Ă> v42bis... kod sezama promenim samo %c i ukinem kompresiju... Nema potrebe.
ms.dos.99 d.petrovic,
Ă> , zasto se ta▀da startuje interni zmodem u telemate-u. i moram da Ă> pritiskam ctrl-x da se prekine Isključi Auto-DL
ms.dos.100 drpr,
Haj, imam jedno pitanje. Zanima me da mi neko objasni na kojoj adresi i koliko memorije zauzima upisivanje slike u video memoriju recimo u modu 800x600 u 256 boja? Hteo bi da skinem to u neki fajl i da posle koristim u programu, zanima me o čemu treba voditi računa itd... Gledao sam tekst u računarima (seize) ali mi nije baš pomoglo. Zanima me što i mnogi programi sličene namene skidaju paletu itd. Znači ukratko o VGA karti . U napred hvala, Cope
ms.dos.101 janko,
> imam jedno pitanje. Zanima me da mi neko objasni na > kojoj adresi i koliko memorije zauzima upisivanje > slike u video memoriju recimo u modu 800x600 u 256 boja? 256 boja staje u jedan bajt. 800x600=480000 bajtova. Početna adresa video memorije na EGA i VGA kartama je a000, u jednom trenutku možeš da vidiš samo 64K, a kontrolnim registrima biraš način rada sa tih 64K.
ms.dos.102 spantic,
Uz poruku je primer programiranja na BC++ modula za skrin sejver za Windows 3.1 spheres.zip
ms.dos.103 dejanr,
========== ibm.dos/secrets.4 #381, from egdavis, 1188 chars, Sun Oct 31 11:52:55 1993 Comment to 375. ---------- > I wonder if Andrew et al are working on an Undocumented OS/2? This could From: Andrew Schulman <76320.302@CompuServe.COM> Title: If you could post the following: I have just finished the 2nd edition of Undocumented DOS; it went to the printer last week, and should be available in bookstores in the U.S. in mid-December. This is almost a total rewrite of the book, and has several new chapters, including one on "Other DOSes." This includes an in-depth discussion of the DOS box in OS/2 (mostly 2.0, though some 2.1). I wasn't aware of this PSP thing you mention, but there's plenty on the SDA and other emulated DOS structures. I had some help with IBM with this section, so it should be reasonably accurate, even though I am barely knowledgable about OS/2 2.x. As for "Undocumented OS/2," I occassionally get requests for this, but I don't believe such a book would sell more than maybe 10,000 copies. Doing one of these Undocumented books is so much work, it's not really worth it if you're not going to sell at least 40,000 copies I think. This is also why I don't plan on "Undocumented NT," even though there is also a lot of material there. Regards, Andrew
ms.dos.104 mjova,
ima li šanse da se program pri učitavanju u memoriju postavi na kraj memorije? dakle, nekako umesto FIRST FIT treba da default bude LAST FIT? ne dolazi u obzir pravljenje loadera jer to treba da se ugradi u jedan takav...
ms.dos.105 rakicm,
u vreme Windows-a i ostalih grafickih programa, jedno bezvezno pitanje: kako se programira onaj 9 bit kod menjanja fontova u cistom DOS-u hvala. mladen.
ms.dos.106 nkbog,
> kako se programira onaj 9 bit kod menjanja > fontova u cistom DOS-u Ako mislis na 9x16 fontove za VGA kartice, onda nikako ;). Taj bit se implicitno podržava i to na sledeći način: kodovi 0-191 : 9 kolona su sve nule kodovi 192-223:9 kolona je duplirana osma (ISTO KAO SUSEDNA) kodovi 224-255:9 kolonu čine nule (kao 0-191). Ukratko, mogu se defnisati sva slova tako da imaju punu širinu 8, a preostala 9. kolana služi za razdvajanje slova (pogledaj npr. ALL4YU ćirilicu). Na žalost, ne mogućnošću definisanja 9 kolone se gotovo onemogućava pravljenje korisničkih znakova za crteže na ekranu. Oni fazoni u Nortonu i PC Tools se izvode preko grupe znakova 192-223. NB.
ms.dos.107 mjova,
> Ukratko, mogu se defnisati sva slova tako da imaju punu > širinu 8, a preostala 9. kolana služi za razdvajanje slova > (pogledaj npr. ALL4YU ćirilicu). Na mislim da može programiranjem VGA karte da se napravi da su svi znakovi širine 8 bitova, ali tako da ne postoji onaj koji razdvaja dva susedna znaka. ne zanima me preterano, ali kad budem imao vreman možda ću se ovim pozabaviti.
ms.dos.108 nkbog,
> mislim da može programiranjem VGA karte da se napravi da su svi > znakovi širine 8 bitova, ali tako da ne postoji onaj koji razdvaja > dva susedna znaka. Ima jedan trivijalan: prebaci se kartica u grafički mod ;). Šalu na stranu, sigurno ima i drugi način. NB.
ms.dos.109 dejanr,
========== ibm.at/software #3516, from tmoran, 249 chars, Sun Dec 12 22:42:40 1993 Comment(s). ---------- TITLE: >mouse presence What's a safe, reliable way to test for the presence of a mouse? I've been looking for a non-IRET at the address pointed to by the int 33 vector, but that gets clumsier from protected mode and I wonder if it even is reliable. ========== ibm.at/software #3517, from barryn, 609 chars, Sun Dec 12 22:56:03 1993 Comment to 3516. More refs to 3516. ---------- >...test for mouse presence... I use the following code (intended for the Borland compiler): /*-----------------------------------------------------*/ void mouse_init(void) { void far * far *iv; iv = MK_FP(0x0000, 0x00CC); if (FP_SEG(*iv) == 0x0000) { mouse_exists = FALSE; num_buttons = 0; } else { _AX = 0; geninterrupt(0x33); mouse_exists = _AX; num_buttons = _BX; } } /*-----------------------------------------------------*/
ms.dos.110 rakicm,
To je tacno ono sto mi je trebalo. hvala. mladen.
ms.dos.111 bulaja,
│mislim da može programiranjem VGA karte da se napravi da su svi │znakovi širine 8 bitova, ali tako da ne postoji onaj koji razdvaja │dva susedna znaka. └─── Može - imas u VgaMax mali utility Vga90 koji radi baš to - ukida 9. bit i tako dobijaš 90 znakova u redu umesto 80. Nažalost nisam još provalio kako se to radi :).
ms.dos.112 mjova,
> bit i tako dobijaš 90 znakova u redu umesto 80. Nažalost > nisam još provalio kako se to radi :). ja jesam ;), odavno.
ms.dos.113 niklaus,
Da li je ikako moguće da se miš inicijalizuje (i koristi) bez pre- thodnog učitavanja drajvera? Pošto je u pitanju neka užasno low-level tehnika (portovi), zamolio bih nekog od stručnijih da mi pojasni, šta drajver zapravo radi i da li je neopho- dan. Dok ovo pišem, već postajem svestan da nije, tako da moje pitanje zapravo glasi: Šta je sve potrebno uraditi da bi se "instalirao" interapt 33h? Better yet - postoji već li neka biblioteka, koja radi sa mišem na "go- loj" konfiguraciji? C, Pascal... more, može i asembler... (:niklaus:)
ms.dos.114 mjova,
> bit i tako dobijaš 90 znakova u redu umesto 80. Nažalost > nisam još provalio kako se to radi :). ja jesam ;), odavno.
ms.dos.115 djelovic,
> Pošto je u pitanju neka užasno low-level tehnika (portovi), zamolio bih > nekog od stručnijih da mi pojasni, šta drajver zapravo radi i da li je > neopho- dan. Dok ovo pišem, već postajem svestan da nije, tako da moje > pitanje zapravo glasi: Šta je sve potrebno uraditi da bi se "instalirao" > interapt 33h? Ne verujem da iko zna. BTW, uđi u Telemate (ili šta već koristiš) i prebaci port na onaj na kome se nalazi miš. Kako pomeraš miša, tako će ti se nešto ispisivati na ekranu. Pretpostavljam da je to - to, samo treba to čudo dešifrovati. Takođe, mjova je napravio neku C++ klasu za očitavanje miša (imaš je u RSOFT direktorijumu) koja (mislim) zamenjuje deo drajvera njegovom interapt funkcijom. Pogledaj da li odatle možeš nešto da izbunariš. > Better yet - postoji već li neka biblioteka, koja radi sa mišem na "go- > loj" konfiguraciji? C, Pascal... more, može i asembler... Ne.
ms.dos.116 mjova,
> Better yet - postoji već li neka biblioteka, koja radi sa > mišem na "go- loj" konfiguraciji? C, Pascal... more, može > i asembler... nisam video tako nešto, ali nije problem da se dobavi. uzmeš najjednostavniji veznik za pacova i proteraš ga kroz sourcer. u svakom slučaju moraš obezbediti sve funkcije koje su potrebne (piše o njima u svakom helpu). generalno stvari stoje ovako: okačiš se ;) na neki int vezan za COM x (8 + IRQ n => COM1,3= INT 0Ch; COM2,4= INT 0Bh). kad se generiše int onda se nešto desilo pacovu i treba pročitati sa porta (to već ne znam napamet, ima ih više) šta se na njemu (njima) nalazi. e, onda to treba protumačiti itd. slično je kao i sa tastaturom, samo je ona bolje dokumentovana. pozdrav, mjova.
ms.dos.117 bulaja,
│ja jesam ;), odavno. └─── cutis, a? :)
ms.dos.118 niklaus,
Da li neko može da mi razotrije (za mene) misteriju o DMA kanalima? OK, ponešto znam - Direct Memory Addressing, radi bez korišćenja proce- sora, itd. itd. Da li DMA radi sa video memorijom (trebalo bi)? Ovo "bez trošenja proc. vremena" - znači li to da je moguće šarati po ekranu, dok se obrađuju podaci, koji se bacaju na ekran? Koriste li ih često multi-tasking OSovi ili samo za rad sa pojedinim uređajima (:xe, koji primer - skeneri)? Ma uopšte, koliko je tačno ovo Što sam naveo? (:niklaus:)
ms.dos.119 zormi,
* Da li neko može da mi razotrije (za mene) misteriju o DMA kanalima? Ukratko, DMA omogućava prenos podataka od memorije do periferije ili nazad bez posredovanja procesora (posao obavlja DMA kontroler). Medjutim, pošto se prenos obavlja preko memorijskog bus-a on je za procesor zauzet i za to vreme CPU može da radi samo nešto interno. Problem je što postoji premalo DMA kanala pa je teško ugurati sve uredjaje, a takodje je DMA protokol zastareo pa je spor, tako da programirani IO koji koristi procesor uglavnom radi brže. Zato se recimo ne koristi opcija DMA prenosa za IDE hardove iako postoji.
ms.dos.120 mstanic,
>> DMA kanala pa je teško ugurati sve uredjaje, a takodje je >> DMA protokol zastareo pa je spor, tako da programirani IO >> koji koristi procesor uglavnom radi brže. Zato se recimo >> ne koristi opcija DMA prenosa za IDE hardove iako Ja ne bih tvrdio ovo gore. Po meni je DMA najbrži način za prenos određenog bloka podataka. Nije važno da li je "memory-to-memory" ili "memory-to-I/O". Zaista bih molio (ovo kažem bez ikakve pretencioznosti) za objašnjenje koji je brži način.
ms.dos.121 niklaus,
(:> vreme CPU može da radi samo nešto interno. Problem je što postoji (:> premalo DMA kanala pa je teško ugurati sve uredjaje, a takodje je (:> DMA protokol zastareo pa je spor, tako da programirani IO koji (:> koristi procesor uglavnom radi brže. Zato se recimo ne koristi (:> opcija DMA prenosa za IDE hardove iako postoji. Ma zadovoljan sam i kontrolom jednog uređaja preko DMA kanala. (: DMA protokol? Neki standard ili uobičajena metoda programiranja DMAa? Šta se sve podrazumeva pod uređajima? Video adapter? Miš? Budilnik? (: (:niklaus:)
ms.dos.122 mjova,
> Po meni je DMA najbrži način za prenos određenog bloka > podataka. Nije važno da li je "memory-to-memory" ili > "memory-to-I/O". nisam baš preterano upućen u HW, ali ipak mi se čini da je zormi u pravu. DMA jeste direktan pristup memoriji (u većim blokovima), ali je zastareo. ova druga činjenica sigurno ide u prilog lošijem kvalitetu.
ms.dos.123 dmiladinovic,
>> Da li DMA radi sa video memorijom (trebalo bi)? Trebalo bi, al nije. Komunikacija racunar-video kartica ide preko dogovaranja procesora.
ms.dos.124 saricl,
> Da li neko moze da mi razotrije (za mene) misteriju o DMA kanalima? Soft strana toga mi bas nije poznata,ali sa hard strane stvari stoje ovako: Periferija(periferija=bilo sta eventualno i program) salje zahtev za DMA po prijemu tog zahteva procesor ZAVRSAVA SA TEKUCOM INSTRUKCIJOM i salje potvrdu prekida (DMA ACKNOWLDAGE DACK) I PRELAZI U TRI-STATE znaci odspaja sve svoje pinove logicki od magistrala i PERIFERIJA preuzima kontrolu nad magistralama. P.S.-Ako ovo nije dovoljno jasno postavi konkretnije pitanje,bice mi zadovoljstvo da ti pomognem. SARICL.
ms.dos.126 mstanic,
>> pravu. DMA jeste direktan pristup memoriji (u većim >> blokovima), ali je zastareo. ova druga činjenica sigurno >> ide u prilog lošijem kvalitetu. Možeš li da nam kažeš koji je to noviji i efikasniji (brži) metod za obavljanje poslova za koje je DMA namenjen. Neću da tvrdim da ne postoji, ali ja zaista ne znam za bolji i bilo bi vrlo lepo da saznam nešto više, a verujem da ni ostali koji prate konferenciju nemaju ništa protiv toga.
ms.dos.127 mstanic,
>> kanala. (: DMA protokol? Neki standard ili uobičajena >> metoda programiranja DMAa? Šta se sve podrazumeva pod >> uređajima? Video adapter? Miš? Budilnik? (: DMA (Direct Memory Access) Its basic function of managing CPU-independent transfers between two ports is augmented by an array of features that optimize transfer speed and control with litlle or no external logic in systems. Transfers can be done between any two ports (source and destination), including memory-to-I/O, I/O-to-memory, memory-to-memory and I/O-to-I/O. Dual port addresses are automatically generated for each transaction and may be either fixed or incrementing/decrementing. During a transfer, the DMA assumes control of the system address and data buses. Byte by byte, data is read from one addressable port and written to the other addressable port. The ports may be programmed to be either system main memory or peripheral I/O devices. Thus, a block of data may be written from one peripheral to another, from one area of main memory to another, or from a peripheral to main memory and vice versa. ┌────────┐ ┌─────────┐ │ DMA │ │ I/O │ │ │ │ │ │ │ │ │ ┌────────┐ │ ┌─┼───(3)──┼──> │ │ MEMORY │ │ │ │ │ │ │ <──┼──(1)────┼─┐ │ │ └─────────┘ │ │ │ │ │ │ ┌─────────┐ │ │ │ │ │ │ │ I/O │ │ │ │ │ │ │ │ │ │ <──┼─────────┼─┘ └─┼────────┼──> │ │ │ │ │ │ │ │ <──┼───(2)───┼────────┼────────┼──> │ └────────┘ └────────┘ └─────────┘ 1. transfer memory-to-memory 2. transfer memory-to-I/O and/or vice versa 3. transfer I/O-to-I/O Modes of operation * Byte-at-a-time: (or cycle-stealing) data operations are performed one byte at a time. Between each byte operation the system buses are released to the CPU. The buses are requested again for each suceeding byte operation. * Burst: data operations continue untila port's Ready line (DREQ) to the DMA goes inactive. The DMA then stops and releases the system buses after completing its current byte operation. * Continuous: data operations continue until the end of the programmed block of data is reached before the system buses are released. If a port's Ready line (DREQ) goes inactive before this occurs, the DMA simply pauses until the Ready line comes active again. In all modes, once a byte of data is read into the DMA, the operation on the byte will be completed in an orderly fashion, regardless of the state of other signal's (including a port's Ready line). To je malo teorije. (Izvinite što nije prevedeno). E sad, kako to radi na PC-ju ima malo više da se piše i ja bih te uputio da pročitaš onu dokumentaciju (ima na Sezam-u) Therefxx (xx=neki broj). Mislim da je tamo detaljnije opisano ali ne garantujem.
ms.dos.128 zormi,
*>> DMA kanala pa je teško ugurati sve uredjaje, a takodje je *>> DMA protokol zastareo pa je spor, tako da programirani IO * * Ja ne bih tvrdio ovo gore. * Po meni je DMA najbrži način za prenos određenog bloka * podataka. Nije važno da li je "memory-to-memory" ili * "memory-to-I/O". U teoriji da. Medjutim u praksi baš ne blistaju prema rezultatima koje ja imam. DMA je definisan još na XT-u i po tom standardu prenos se obavlja na 4.77 MHz 8-bitno. Noviji DMA kontroleri (recimo 82380 ovako napamet) za koje imam tehničku dokumentaciju, namenjeni 386+ pločama, imaju nekoliko modova uključujući 32-bitni burst prenos u master modu, 8 DMA kanala i upravljaju magistralom potpuno "pin-to-pin" kompatibilno kao da to radi CPU. Npr. mogu da prenesu i do 20-30 MB/s. Problem je verovatno u tome što periferijski uredjaji zbog kompatibilnosti ne mogu da ih potpuno iskoriste, pogotovu preko ISA bus-a, pa se veće performanse i sigurnija kompatibilnost postižu standardnim programiranim IO mehanizmom (uredjaj pošalje interrupt, CPU obavi posao koristeći svoju brzinu pristupa memoriji, cache-u i bus-u), pogotovu kada se ide na novije bus-eve (EISA burst mode, VESA Local Bus, PCI Local Bus...).
ms.dos.129 mjova,
> Možeš li da nam kažeš koji je to noviji i efikasniji > (brži) metod za obavljanje poslova za koje je DMA > namenjen. koliko mi se čini, taj princip se koristi samo prilikom komunikacije sa flopi diskovima (možda i sa HD, ali ako zormi kaže da IDE ne ide ;) preko DMA...). voleo bih da razjasnim te detalje.
ms.dos.130 mstanic,
>> Sezam-u) Therefxx (xx=neki broj). Mislim da je tamo Da se ispravim: Nije Therefxx već dosref31 u direktorijumu INFO.
ms.dos.131 niklaus,
(:> Neću da tvrdim da ne postoji, ali ja zaista ne znam za (:> bolji i bilo bi vrlo lepo da saznam nešto više, a verujem (:> da ni ostali koji prate konferenciju nemaju ništa protiv (:> toga. Apsolutno ne. A uopšte se ne bi bunio kad bi nam predočio tehnike prog- ramiranja DMA kanala. Ti si, čini se, zadovoljan rezultatima. Osećam da bih bio i ja. (: (:niklaus:)
ms.dos.132 niklaus,
(:> Periferija(periferija=bilo sta eventualno i program) salje zahtev (:> za DMA po prijemu tog zahteva procesor ZAVRSAVA SA TEKUCOM (:> INSTRUKCIJOM i salje potvrdu prekida (DMA ACKNOWLDAGE DACK) I (:> PRELAZI U TRI-STATE znaci odspaja sve svoje pinove logicki od (:> magistrala i PERIFERIJA preuzima kontrolu nad magistralama. Dakle, kažeš da periferija na dalje (od trenutka "odsecanja nogu") radi sama. Baš sama? Većina periferija koje znam, u sebi nema dovoljno logike ni da pređe ulicu (prim. nik. magistralu). (; Proces prepuštanja periferije same sebi započinje slanjem specijalne instrukcije od strane procesora. Kako se izlazi iz DMA "moda". Valjda je pot- rebno da procesor ponovo šalje novu specijalnu naredbu perif. uređaju. Kako da to izvede, kad je uređaj "gluv"? Ili je "nagluv"? (: (:> P.S.-Ako ovo nije dovoljno jasno postavi konkretnije pitanje,bice (:> mi zadovoljstvo da ti pomognem. Neizmerno mi je drago što to čujem. ((: (:niklaus:)
ms.dos.133 mstanic,
>> rezultatima koje ja imam. DMA je definisan još na XT-u i DMA je postojao mnogo pre PC-ja. Naravno, sa pojavom mikroprocesora koji su imali instrukcije tipa LDIR (stari Z80) potreba za takvim uređajima je malo smanjena ali nikako nije nestala. Zapravo, ako znate kako rade instrukcije tog tipa (LDIR, LDDR, INIR itd) odmah ćete znati kako rade DMA kontroleri. Naravno, hardver je brži od softvera. >> po tom standardu prenos se obavlja na 4.77 MHz 8-bitno. XT je (čini mi se) radio baš na toj frekvenciji i imao je 8-bitnu magistralu podataka. >> Noviji DMA kontroleri (recimo 82380 ovako napamet) za >> koje imam tehničku dokumentaciju, namenjeni 386+ pločama, >> imaju nekoliko modova uključujući 32-bitni burst prenos u Noviji mikroprocesori imaju "u sebi" (rogobatnog li izraza) ugrađene DMA kontrolere. (Z280) >> master modu, 8 DMA kanala i upravljaju magistralom >> potpuno "pin-to-pin" kompatibilno kao da to radi CPU. Tako radi svaki DMA kontroler. >> Npr. mogu da prenesu i do 20-30 MB/s. 82380 prenosi do 32MB/s. >> Problem je verovatno u tome što periferijski uredjaji >> zbog kompatibilnosti ne mogu da ih potpuno iskoriste, >> pogotovu preko ISA bus-a, pa se veće performanse i >> sigurnija kompatibilnost postižu standardnim >> programiranim IO mehanizmom (uredjaj pošalje interrupt, >> CPU obavi posao koristeći svoju brzinu pristupa memoriji, >> cache-u i bus-u), pogotovu kada se ide na novije bus-eve Prilikom svakog interapta CPU "gura" na stek sve i svašta, pa zatim postavlja u svoje registre neke adrese i podatke, pa zatim nešto "radi" sa svim tim podacima, pa zatim vraća sadržaj sačuvanih registara sa steka (najčešće i najbrže) što sve čini jedan takav proces prilično sporim. Ne pomaže tu mnogo keš, jer najčešće baš na obradama interapta dolazi do "promašaja keša". (Još jedan rogobatniji izraz, ali mislim da razumete). Ako procesor prenosi blok podataka iz radne memorije u (recimo) video-memoriju, najbrži način je da se upotrebi instrukcija koja se ponavlja (REPNZ na primer). Naravno, i u ovom slučaju je DMA brži ali samo malo. Međutim, u igru ulaze asinhroni događaji (serijska komunikacija, disk i ostalo) koji moraju procesoru na naki način da najave svoj zahtev za određenim prenosom podataka. E onda u igru ulazi gorepomenuta igra sa stekom i prekidima. Kad se koristi DMA situacija je drugačija. Uređaj prekine procesor na početku procesa i onda on (procesor) inicijalizuje DMA kontroler i prepusti mu, recimo transfer bloka podataka. DMA kontroler (ako je serijska komunikacija u pitanju) po prijemu jednog bajta u serijskom uređaju prekida rad mikroprocesora samo za jedan "mašinski ciklus" prenosi taj bajt i čeka prijem sledećeg. Igra oko steka ovde otpada. Tek po prijemu celog bloka podataka DMA još jednom prekida procesor da mu javi da je posao gotov. Dakle, imamo dva puta "igre sa stekom" za recimo, blok podataka od jednog kilobajta, što je zanemarivo ako znamo da za prenos tog istog bloka "preko interapta" imamo istu igru preko hiljadu puta. Sve to važi za disk podsistem, samo što je mehanizam nešto složeniji. >> (EISA burst mode, VESA Local Bus, PCI Local Bus...). Problem nije u DMA uređaju već u sabirnici. DMA radi brže na EISA sabirnici nego na ISA (kao uostalom i svi ostali uređaji). DMA, obično radi onoliko brzo koliko mu to sabirnica dopušta, tj. kolika je propusna moć sabirnice. Pri tom tip sabirnice nema značaja.
ms.dos.134 .bale.,
> Dakle, kažeš da periferija na dalje (od trenutka "odsecanja nogu") > radi sama. Baš sama? Većina periferija koje znam, u sebi nema dovoljno > logike ni da pređe ulicu (prim. nik. magistralu). (; Pa verovatno je mislio na DMA, ne na periferiju. DMA se isprogramira da prebacuje iz memorije/registra za podatke kontrolera periferije u memoriju/registar za podatke kontrolera periferije. > Proces prepuštanja periferije same sebi započinje slanjem specijalne > instrukcije od strane procesora. Kako se izlazi iz DMA "moda". Valjda > je pot- rebno da procesor ponovo šalje novu specijalnu naredbu perif. > uređaju. Kako da to izvede, kad je uređaj "gluv"? Ili je "nagluv"? (: U obićnom modu, tj. non-burst, DMA traži od procesora memorijski ciklus preko DMAREQ pina, a procesor mu daje na znanje da je odgovor potvrdan (ako njemu neće biti potrebna magistrala) preko DMAGNT pina. Kad se ciklus završi, DMA mora ponovo da traži. Za burst mod, kada se prenosi odjednom ceo blok podataka, DMA postaje, zajedno sa procesorom, _bus master_. Tada treba da postoji (mada zavisi od implementacije...) _bus controller_ koji bus master-ima dodeljuje bus kad ga ovi zatraže. Tako DMA zatraži bus, dobije ga, prebaci blok i vrati bus kontroleru. Za to vreme je procesor morao da čeka ako je hteo da se obrati memoriji... Tako je bar teorijski :) (ovo sam napričao po sećanju, ali ako treba, pronaći ću negde i literaturu...)
ms.dos.135 kale,
>> Proces prepuštanja periferije same sebi započinje slanjem specijalne >> instrukcije od strane procesora. Kako se izlazi iz DMA "moda". Valjda je >> potrebno da procesor ponovo šalje novu specijalnu naredbu perif. uređaju. >> Kako da to izvede, kad je uređaj "gluv"? Ili je "nagluv"? (: Ako je gluv, nije nem. ;) Dakle, pošto uređaj završi domaći koji mu je procesor zadao, on cimne istog za rukav putem interapta. Onda procesor lepo počne da izvršava programče za obradu aktiviranog interapta. Negde pri početku tog programčeta (posle čuvanja registara) se nalazi ispitivanje koji uređaj je izazvao interapt (ako više uređaja koristi jedan interapt) i kad se nađe koji je, onda se ispituje zašto (ako postoji više mogućih razloga). Ova testiranja se tipično vrše čitanjem statusnih registara uređaja (ima i drugih rešenja).
ms.dos.136 zormi,
*>> rezultatima koje ja imam. DMA je definisan još na XT-u i * * DMA je postojao mnogo pre PC-ja. Naravno, nije izmišljen na PC-u, nego je još tada upotrebljen za njega pa je morala biti zadržana kompatibilnost do danas. *>> po tom standardu prenos se obavlja na 4.77 MHz 8-bitno. * * XT je (čini mi se) radio baš na toj frekvenciji i imao je * 8-bitnu magistralu podataka. Da. *>> Noviji DMA kontroleri (recimo 82380 ovako napamet) za *>> koje imam tehničku dokumentaciju, namenjeni 386+ pločama, *>> imaju nekoliko modova uključujući 32-bitni burst prenos u * * Noviji mikroprocesori imaju "u sebi" (rogobatnog li izraza) * ugrađene DMA kontrolere. (Z280) E, ako se dobro sećam DMA je zajedno sa interrupt kontrolerom, cache kontrolerom i sl. izdvojen, obično u onaj jedan "ceo PC u chip-u". *>> master modu, 8 DMA kanala i upravljaju magistralom *>> potpuno "pin-to-pin" kompatibilno kao da to radi CPU. * * Tako radi svaki DMA kontroler. Da ako je prilagodjen konkretnom modelu procesora. *>> Npr. mogu da prenesu i do 20-30 MB/s. * * 82380 prenosi do 32MB/s. Na 20 MHz prenosi max. 25.2 MB/s, dakle zavisi od radne frekvencije. žinjenica je ipak da DMA koriste samo neki "gluplji" uredjaji kao što su floppy (uvek), audio kartice (često) i LAN adapteri (retko), dok hardovi i grafičke kartice nikad iako prenose velike količine podataka.
ms.dos.137 zormi,
* Proces prepuštanja periferije same sebi započinje slanjem specijalne * instrukcije od strane procesora. Kako se izlazi iz DMA "moda". Valjda je * pot- rebno da procesor ponovo šalje novu specijalnu naredbu perif. uređaju. * Kako da to izvede, kad je uređaj "gluv"? Ili je "nagluv"? (: Ima više modova DMA i u svakom se specificira način izlaska. Npr. može da izadje posle svakog prenetog byte-a, posle prenetog bloka, posle prenetih svih podataka u zadatom opsegu adresa... itd. Onda vrati magistralu CPU-u i čeka sledeći posao.
ms.dos.138 mstanic,
>> Apsolutno ne. A uopšte se ne bi bunio kad bi nam predočio >> tehnike prog- ramiranja DMA kanala. Pa vidi, ja zaista na PC-ju nisam programirao DMA i zato ne znam kako tačno radi na PC-ju. (PC ne upotrebljavam ni za kakav ozbiljan posao). Imam neki članak o tome ali je, nažalost, na nemačkom. To mogu pročitati (još nekako) ali da prevedem, nažalost ne mogu. So, ako znaš nemački javi pa ću se potruditi ili još bolje ako možemo da se dogovorimo oko fotokopiranja.
ms.dos.139 mstanic,
>>>> Sezam-u) Therefxx (xx=neki broj). Mislim da je tamo >> Da se ispravim: >> Nije Therefxx već dosref31 u direktorijumu INFO. Stalno se ispravljam. Nema ništa o programiranju DMA u fajlovima dosref22, dosref31 niti u helppc. Nažalost.
ms.dos.140 niklaus,
(:> Da se ispravim: (:> Nije Therefxx već dosref31 u direktorijumu INFO. A ja se taman začudio šta ću sa silnim suvoparnim oznakama (GSB?) kontrol- era, flopija i sl. kerefeka... (: Hajd' sad da probamo i DOSREF... (:niklaus:)
ms.dos.141 niklaus,
(:> da IDE ne ide ;) preko DMA...). voleo bih da razjasnim te detalje. I mi bi volEli. (: (:niklaus:)
ms.dos.142 zormi,
*>> Apsolutno ne. A uopšte se ne bi bunio kad bi nam predočio *>> tehnike programiranja DMA kanala. * * Pa vidi, ja zaista na PC-ju nisam programirao DMA i zato ne * znam kako tačno radi na PC-ju. To pomalo zavisi od arhitekture MBD-a i konkretnog modela DMA kontrolera, (tako npr. Norton Backup prvo testira da li DMA uopšte radi, pa ga tek onda koristi za prenos) ali ovako uopšteno na primeru PC AT-a sa dva Intel 8237A-5 DMA chip-a: - prvi ima 4 DMA kanala (0-3), pri čemu mogu da prenose 8-bita od memorije do IO i nazad, a 8 ili 16 bita iz memorije u memoriju u blokovima do 64k. Najčešće je slobodan kanal 3 (za audio kartice i sl), na kanalu 2 je floppy, a 1 (uvek) i 0 (često) se koriste za druge sistemske potrebe. - drugi DMA chip se vezuje preko svog kanala 4 kaskadno preko prvog, a ostaju kanali 5, 6 i 7 za upotrebu i oni su 16-bitni. Blok je do 128k. E sad, kako se programiraju? Mogu ovako na brzinu da dam samo par detalja kako bi stekli utisak, a ako neko ima vremena da napiše tekst (članak) o programiranju DMA... DMA kanalima se upravlja preko registara DMA kontrolera, a njima se obraća preko IO adresa. Adrese Page registara su: Page registar I/O adresa -------------------------- DMA channel 0 0087h DMA channel 1 0083h DMA channel 2 0081h DMA channel 3 0082h DMA channel 5 008Bh (kanal 4 je zauzet) DMA channel 6 0089h DMA channel 7 008Ah Refresh 008Fh A komandnim kodovima se zadaju parametri prenosa: Hex adresa Komandni kod --------------------------- 0C0 bazna i tekuća adresa za kanal 0 0C2 bazni i tekući brojač 0C4/C6 isto za kanal 1 ....itd do kanala 7 ODO registar čitanje statusa/upis komande 0D2 registar za zahtev za upis ....itd (ima toga dosta) postoje tu i neka ograničenja u vezi parnosti adresa itd. Početna stanja registara mora da postavi BIOS pri podizanju računara, čak i ako se ne koriste... itd. Time sam se bavio dosta davno (u vreme kada se u Jugi još radio razvoj a ne samo šrafcigerisanje), pa se dosta toga i pozaboravljalo. Tako, moj prvi zadatak kada sam se zaposlio beše da sklepam jedan MBD sa NEC V20 i napišem BIOS za njega ;). Eh, srećna vremena...
ms.dos.143 mstanic,
>> E, ako se dobro sećam DMA je zajedno sa interrupt >> kontrolerom, cache kontrolerom i sl. izdvojen, obično u >> onaj jedan "ceo PC u chip-u". Da, to je čest slučaj. 82380 je primer te koncepcije. Međutim, neki konstruktori (iz njima znanih razloga) sve integrišu u jedan čip (DMA, interapt kontroler, keš + kontroler, MMU, tajmere itd, i naravno, mikroprocesor). Primeri su dobro poznati V50 (PC kompatibilan) i manje poznati Z280 (Zilog). >>* 82380 prenosi do 32MB/s. >> Na 20 MHz prenosi max. 25.2 MB/s, dakle zavisi od radne >> frekvencije. Na 16MHz prenosi max. 32MB/s. (Po Intelovoj dokumentaciji). >> žinjenica je ipak da DMA koriste samo neki "gluplji" >> uredjaji kao što su floppy (uvek), audio kartice (često) >> i LAN adapteri (retko), dok hardovi i grafičke kartice >> nikad iako prenose velike količine podataka. Ovde si dobro uočio koji tipovi "periferija" koriste DMA a koji ne, samo mi se čini da nisi dobro uočio razloge zašto je tako. Video (grafički) uređaji ne koriste DMA zbog toga što se javlja potreba da se istovremeno sa prenosom vrši i intenzivna obrada istih podataka. A ako formiraju sliku u nekoj neaktivnoj strani video memorije pa je u jednom trenutku podmetnu "video čipu" mnogo je efikasnije imati nekoliko "banki" video memorije ili koristiti MMU. Dobro je da si pomenuo da audio kartice koriste često DMA za prenos podataka. Postoje dobri razlozi za to. Pre svega potrebno je u tačnim vremenskim intervalima prenositi bajt po bajt iz memorije u, recimo, D/A konvertor uz često vrlo intenzivnu obradu video memorije (znači generisanje lepih slika). U tom slučaju se procesor zapošljava za "izradu" slika a DMA u pozadini (uz vrlo malo oduzimanje vremena procesoru), prilično precizno generiše zvuk. To se zove dobra raspodela posla. Dobrih razloga da diskovi koriste DMA ima, ali zavise od samog kontrolera na disku (tj. kako je on konstruisan). Ajde, molim te napiši (ako ti nije teško) šta si mislio pod pojmom "programirani IO". (Nisam ni zloban, ni zajedljiv, več bih voleo da razumem na čega tačno misliš). Nadam se da nisam previše udavio.
ms.dos.144 mstanic,
>> sama. Baš sama? Većina periferija koje znam, u sebi nema >> dovoljno logike ni da pređe ulicu (prim. nik. Periferija sve češće u sebi ima mikroprocesor i ne da ne zna da pređe ulicu nego može da vozi i autobus pun putnika (j****e).
ms.dos.145 saricl,
> ja imam. DMA je definisan jos na XT-u i po tom standardu prenos se > obavlja na 4.77 MHz 8-bitno. Noviji DMA kontroleri (recimo 82380 ovako Upravo to nije spor DMA vec magistrala.
ms.dos.146 saricl,
> sama. Bas sama? Vecina periferija koje znam, u sebi nema dovoljno logike ni > da prede ulicu (prim. nik. magistralu). (; > instrukcije od strane procesora. Kako se izlazi iz DMA "moda". Valjda je > pot- rebno da procesor ponovo salje novu specijalnu naredbu perif. uredaju. > Kako da to izvede, kad je uredaj "gluv"? Ili je "nagluv"? (: > Neizmerno mi je drago sto to cujem. ((: Dakle opet sa hardverske strane.DMA i nije zamisljen da ga koristi "jdnobajtni bafer" ili nesto slicno za takvu kolicinu podataka nevredi se petljati i komplikovati periferije.Za to su izmisljeni interapti. Inace i DMA ti je jedna vrsta interapta samo sto procesor na nju drugacije odgovara.Pretpostavka Br.1. DMA koristis pri prenosu povecih mem. blokova izmedju procesora u viseprocesorskim sistemima.Pri tome nije bitno dali je to sistem dva RISC procesora ili 80386 i video procesora na graf.karti.DMA zahtev upucuje nesto sto ima VECI PRIORITET OD SAMOG PROCESORA U NJEGOVOM SOPSTVENOM SISTEMU,ODNOSNO SISTEM VISE HIJERARHIJE. (Izrazi mozda bas nisu najsrecnije odabrani i predstavljaju slobodnu i "slikovitu" interpretaciju zarad lakseg razumevanja op.aut.) DMA predstavlja potpuno predavanje sistema na upravljanje onom ko je trazio zahtev.(Ovo nije uvek dosledno ispostovano) Postoji pin koji govori o postojanju,i aktivnosti DMA prenosa. Dakle DMA na hardverskom nivou nesalje instrukcije i ne zapocinje procesor vec periferija.Do zabune je doslo zato sto na PC racunarima imas mogucnost sofware slanja zahteva za DMA isto kao i za interapt. Ovi signali su pre svega hardverske prirode,a svaka njihova emulacija od strane sofvera ti uskracuje po neku privilegiju,jer bi u protivnom mogao sa par instrukcija bukvalno da spalis procesor. P.S.-Ako ti nesto nije jasno pitaj konkretno:)))) SARICL.
ms.dos.147 .bale.,
>>>>> Sezam-u) Therefxx (xx=neki broj). Mislim da je tamo >>> Da se ispravim: >>> Nije Therefxx već dosref31 u direktorijumu INFO. > > Stalno se ispravljam. Nema ništa o programiranju DMA u > fajlovima dosref22, dosref31 niti u helppc. Nažalost. Ima li ovde nekog ko je trenutno na IV godini ETF/RTI da prepiše koji programčić i specifikaciju onog Intel-ovog DMA kontrolera za cenjenu masu?
ms.dos.148 v.nesic,
> bi u protivnom mogao sa par instrukcija bukvalno da spalis procesor. > > P.S.-Ako ti nesto nije jasno pitaj konkretno:)))) Kako bi se to uradilo? P.S. Pitam ozbiljno, ne zezam se.
ms.dos.149 .bale.,
> Ajde, molim te napiši (ako ti nije teško) šta si mislio pod > pojmom "programirani IO". (Nisam ni zloban, ni zajedljiv, > več bih voleo da razumem na čega tačno misliš). Postoje tri načina, odnosno nivoa, IO programiranja: - programirani, gde u nekoj petlji stalno ispituješ statusne registre periferije i prenosiš podatke - interrupt driven, kada imaš potprogram koji inicijalizuje periferiju za prenos i interrupt rutinu koja prenosi bajt po bajt (ili reč po reč) prilikom svakog interrupt-a i na kraju obavesti da je završila; za to vreme se u foreground-u izvršava glavni program - DMA IO, kada se DMA isprogramira da prenese blok podataka u nekom od mogućih modova i ne "troši" ni interrupt-e ni CPU.
ms.dos.150 mstanic,
>> zadatak kada sam se zaposlio beše da sklepam jedan MBD sa >> NEC V20 i napišem BIOS za njega ;). Eh, srećna vremena... Eh, da. Ima li još nade.
ms.dos.151 zormi,
*>> Na 20 MHz prenosi max. 25.2 MB/s, dakle zavisi od radne *>> frekvencije. * * Na 16MHz prenosi max. 32MB/s. (Po Intelovoj dokumentaciji). Nemam pri ruci, ali isti izvor kaže ono gore. Možda se tvoj podatak odnosi na memory-to-memory, a onaj gore važi za "sve smerove". Ako je neko dokon može da proba i javi nam koje je ubrzanje i transfer rate sa DMA dobio. Ostajem pri mišljenju da se sa hardom uz DMA ne može dobiti ni blizu modernih 1500-2000 kB/s na ISA bus-u. Ova diskusija se odužila iako je trebalo da bude kratak odgovor na konkretno pitanje "šta je to DMA", a ističe mi i pretplata.
ms.dos.152 saricl,
> P.S. Pitam ozbiljno, ne zezam se. Pa recimo,periferija zatrazi zahtev za DMA a ti procesoru "kazes" da ga ignorise i radi svoj posao.Tada se desava sledeca stvar:i procesor i periferija pokusavaju da zvrljaju istovremeno po istim magistralama.Prezivi onaj ko ima jaci izlazni stepen (bafer) (TTL:LS,s,CMOS,open col i sl).Ovo je naravno samo teoretski posto nisam probao jos ni jedan d spalim.Skupi procesori i sl.:((( Ovo je princip.Detalje ti nemogu dati jer neznam. Ako te nesto vise zanima pitaj nekog ko je STVARNO strucnjak za Comodore.To zato sto je nesto slicno bilo moguce uraditi na C-128.Ovo je provereno video sam rezultat,ali opet neznam koje su instrukcije bile u pitanju. Ako nadjes odgovor na ovo pitanje nesto slicno verovatno moze i na PC. Pozdrav od SARICL.
ms.dos.153 mstanic,
>>> pojmom "programirani IO". (Nisam ni zloban, ni >>> zajedljiv, >> Postoje tri načina, odnosno nivoa, IO programiranja: >> - programirani, gde u nekoj petlji stalno ispituješ >> statusne >> - interrupt driven, kada imaš potprogram koji >> inicijalizuje >> - DMA IO, kada se DMA isprogramira da prenese blok >> podataka u Ako sam dobro razumeo šta si rekao gore, onda ne postoji nikakav poseban "programirani IO", već je u pitanju najobičniji ulaz/izlaz. Mada, sve je pod kontrolom nekog programa. Kakav bi bio "neprogramirani IO" ? OK. Sad vidim da je u pitanju samo terminološka zbrka.
ms.dos.154 mstanic,
>> Ima li ovde nekog ko je trenutno na IV godini ETF/RTI da >> prepiše koji programčić i specifikaciju onog Intel-ovog >> DMA kontrolera za cenjenu masu? Zašto mora biti na ETF/RTI i još na IV godini ? I na koji si kontroler mislio ?
ms.dos.155 vita,
> Ukratko, DMA omogućava prenos podataka od memorije do > periferije ili nazad bez posredovanja procesora (posao obavlja > DMA kontroler). Medjutim, pošto se prenos obavlja preko > memorijskog bus-a on je za procesor zauzet i za to Mislim da postoji i DMA kanal Memory-to-memory! Ako ovo radi , a ja mislim da radi, neka neko proba nesto vise da sazna. (frka mi u skoli :( ) Vita
ms.dos.156 dejanr,
Problem (? možda su tako hteli da bude ;) primećen na DOS-u 6.2 (mislim da komercijalni DOS 6.2 na 3 diskete po 1.44 mega, datiran 27. septembra 1993): Izgleda da su nešto brljali po funkcijama za formatiranje diska. Uzmite disketu od 1.2 megabajta koja je, programom FDFORM, "nabudžena" na 1.44 megabajta. Probajte da je formatirate na 1.2 mega, sa format a: /u. Neće - javi 'Parameters not supported by drive' ili tako nešto. žak i ako uzmete FORMAT.COM iz DOS-a 5.0, i dalje se disketa ne može formatirati na 1.2, znači nije stvar u tom programu nego u samom DOS-u. Ako uzmete neki PCTOOLS ili tako nešto, formatiranje naravno uspeva, jer se tu poziva direktno BIOS. Ovo je potvrđeno na nekoliko računara. Drugi problem se javlja na dva računara, a na tri se ne javlja, dakle ne mora biti isključivo krivica DOS-a. Kada se formatira disketa 3.5 inča, 1.44 megabajta (dakle, najnormalnija situacija), na njoj ostane jedan lost cluster. Posle to CHKDSK B: sredi, i disketa je sasvim normalna. Zanimljivo je da se i na ta dva računara problem ne javlja ako se isključi QEMM 7.01. Nisam stigao da probam upgrade na QEMM 7.03. Sve konfiguracije su testirane "kontra" virusa i nema ih (?).
ms.dos.157 niklaus,
(:> Na 20 MHz prenosi max. 25.2 MB/s, dakle zavisi od radne (:> frekvencije. (:> (:> žinjenica je ipak da DMA koriste samo neki "gluplji" uredjaji kao (:> što su floppy (uvek), audio kartice (često) i LAN adapteri (:> (retko), dok hardovi i grafičke kartice nikad iako prenose velike (:> količine podataka. Koji je razlog tome? Cifra brzina protoka mi se dopada (25.2MB/s). (: Bacite pogled na sledeće (rezultat programa iz WatcomC paketa): ┌──── │ Protected Mode and Extended Memory Performance Measurement -- 3.95 │ Copyright 1988, 1989, 1990 by Rational Systems, Inc. │ │ DOS memory Extended memory CPU is 24.9 MHz 80386. │ ---------- --------------- │ 640 0 K bytes configured (according to BIOS). │ 640 3328 K bytes physically present (SETUP). │ 626 1808 K bytes available for DOS/16M programs. │ (DOS/16M memory range 1272K to 3080K) │ 5.4 (5.0) 5.4 (5.0) MB/sec word transfer rate (wait states). │ 10.7 (5.5) 10.8 (5.0) MB/sec 32-bit transfer rate (wait states). │ 11.8 (0.0) 11.9 (0.0) MB/sec word transfer rate ŠStatic ColumnĆ. │ 23.7 (0.0) 23.5 (0.0) MB/sec 32-bit transfer rate ŠStatic ColumnĆ. │ │ Overall cpu and memory performance (non-floating point) for typical │ DOS programs is 4.19 ˝ 0.59 times an 8MHz IBM PC/AT. │ │ Protected/Real switch rate = 5575/sec (179 Šsec/switch, 92 up + 87 down), │ using DOS/16M switch mode 11 (VCPI). │ └─── Na 32-bitnom transferu memory-memory dobija se brzina taman oko one, koju spominje zormi. Zar su DMA kanali toliki brzi? (: (:niklaus:)
ms.dos.158 niklaus,
(:>>> Nije Therefxx već dosref31 u direktorijumu INFO. (:> (:> Stalno se ispravljam. Nema ništa o programiranju DMA u (:> fajlovima dosref22, dosref31 niti u helppc. Nažalost. Zna li onda iko gde se može takvo što naći (programiranje DMA kanala ili barem programerski orijentisan opis dotičnih)? Ako nije PD/SW -> javite mi na mail. Hvala (:niklaus:)
ms.dos.159 niklaus,
(:> da se obrati memoriji... Tako je bar teorijski :) (ovo sam (:> napričao po sećanju, ali ako treba, pronaći ću negde i (:> literaturu...) Poželjniji je '01' zapis. (: (:niklaus:)
ms.dos.160 niklaus,
(:> * Kako se izlazi iz DMA "moda"? (:> Ima više modova DMA i u svakom se specificira način izlaska. Npr. (:> može da izadje posle svakog prenetog byte-a, posle prenetog bloka, (:> posle prenetih svih podataka u zadatom opsegu adresa... itd. Onda (:> vrati magistralu CPU-u i čeka sledeći posao. Da rezimiramo - iz DMA "moda" (DMAovog burst prenosa) se izlazi po 'request'-u samog DMAa. I dalje ostaje pitanje adresiranja (uopšteno - 'opštenja' (: sa DMA kanalima)... pa da se pređe na programiranje... (:niklaus:)
ms.dos.161 .bale.,
> Kakav bi bio "neprogramirani IO" ? > OK. Sad vidim da je u pitanju samo terminološka zbrka. Pa, programirani je onaj kada se glavni program (uslovno rečeno, uvek ima neki uslov :) bavi kontrolom i komunikacijom sa periferijama. "Neprogramiranih" ima dva: interrupt driven, kada glavni program inicijalizuje proces komunikacije a interrupt rutina ga obavlja, i DMA, kada glavni program inicijalizuje DMA, a DMA ne troši ni interrupt-e nego samo slobodne memorijske cikluse, što se tiče onoga što glavni program može da "oseti" (što će reći, ne oseća ništa). Nije zbrka, ako nije jasna podela, ja ću ponovo :)
ms.dos.162 .bale.,
> Na 32-bitnom transferu memory-memory dobija se brzina taman oko one, > koju spominje zormi. Zar su DMA kanali toliki brzi? (: > > (:niklaus:) Koliko sam video, još uvek fali objašnjenje zašto su sporiji. Postoje, valjda i 32-bitni DMA, ali hajde, recimo da ih na PC-ju ne koriste (?). I, ako ćemo PoŠTeNo, molim da se testiranje izvrši unutar petlje u kojoj se CPU ne obraća memoriji.
ms.dos.163 .bale.,
> Zašto mora biti na ETF/RTI i još na IV godini ? > I na koji si kontroler mislio ? Tada se predaje predmet Projektovanje mikroprocesorskih sistema i proučava Intel 8237 DMA Controller.
ms.dos.164 .bale.,
> Zna li onda iko gde se može takvo što naći (programiranje DMA kanala > ili barem programerski orijentisan opis dotičnih)? Ako nije PD/SW -> > javite mi na mail. Ma, ima toga... U onom TECH Help! mislim da je dat opis svih registara, a neka neko sa IV godine RTI prekuca koji listić iz materijala za vežbe.
ms.dos.165 .bale.,
> Mislim da postoji i DMA kanal > Memory-to-memory! Pa to je jednostavnije od memory-IO, zar ne?
ms.dos.166 .bale.,
> Poželjniji je '01' zapis. (: Kao što rekoh, studenti u akciju :) Ja sam svoje beleške odavno pobacao, potražiću tek kad me ubedite da niko nema.
ms.dos.167 .bale.,
> I dalje ostaje pitanje adresiranja (uopšteno - 'opštenja' (: sa DMA > kanalima)... pa da se pređe na programiranje... Ma i to je boza :) (uopšteno, naravno :), programira se kao i svaka druga periferija, preko kontrolnih, statusnih i data registara...
ms.dos.168 boris,
> Comodore.To zato sto je nesto slicno bilo moguce uraditi na > C-128.Ovo je provereno video sam rezultat,ali opet neznam > koje su instrukcije bile u pitanju. > Ako nadjes odgovor na ovo pitanje nesto slicno verovatno > moze i na PC. Koliko sam ja upoznat,na intelovoj familiji, DMA pre nego što krene da radi posao traži dozvolu od procesora za oslobađanje magistrale (BUS REQUEST) i sačeka odgovor (BUS GRANT), tako da se ne može desiti sudar na magistrali jer ovaj čeka dozvolu. Boris
ms.dos.169 klisa,
>> ne mora biti isključivo krivica DOS-a. Kada se formatira disketa >> 3.5 inča, 1.44 megabajta (dakle, najnormalnija situacija), na njoj >> ostane jedan lost cluster. Posle to CHKDSK B: sredi, i disketa je >> sasvim normalna. Zanimljivo je da se i na ta dva računara problem >> ne javlja ako se isključi QEMM 7.01. Nisam stigao da probam upgrade >> na QEMM 7.03. Da, ovo je bio slučaj sa kombinacijom QEMM v7.01 i, bar u mom slučaju, drajverima DOSDATA.SYS i DOSUP.SYS. Kada sam uklonio pomenute drajvere, sve je radilo OK. Aktuelna verzija QEMM-a nema te probleme.
ms.dos.170 zormi,
* Problem (? možda su tako hteli da bude ;) primećen na DOS-u 6.2 * (mislim da komercijalni DOS 6.2 na 3 diskete po 1.44 mega, datiran * 27. septembra 1993): * * Izgleda da su nešto brljali po funkcijama za formatiranje diska. * Uzmite disketu od 1.2 megabajta koja je, programom FDFORM, "nabudžena" * na 1.44 megabajta. Probajte da je formatirate na 1.2 mega, sa * format a: /u. Neće - javi 'Parameters not supported by drive' ili tako * nešto. Isključi AUTOMOUNT opciju iz DBLSPACE-a (tools, options...), pa probaj ponovo. Izgleda da postoji krupan bug u MS DOS 6.2 jer se sa uključenim AUTOMOUNT-om na nekim računarima uopšte ne može formatirati nova blank disketa koja ranije nije formatirana (?!).
ms.dos.171 dejanr,
>> Isključi AUTOMOUNT opciju iz DBLSPACE-a (tools, options...), >> pa probaj ponovo. Hvala za "bajt lične prirode", ali ni na jednom od tih računara uopšte se ne koristi DBLSPACE. Danas ću probati da na jednom od njih uradim upgrade QEMM-a na 7.03, pa ću javiti da li je problem iščezao.
ms.dos.172 mstanic,
>> Pa, programirani je onaj kada se glavni program (uslovno >> rečeno, uvek ima neki uslov :) bavi kontrolom i >> komunikacijom sa periferijama. "Neprogramiranih" ima dva: >> interrupt driven, kada glavni program inicijalizuje >> proces komunikacije a interrupt rutina ga obavlja, i DMA, >> kada glavni program inicijalizuje DMA, a DMA ne troši ni Sad mi je jasno na čega ste mislili, ali to sve ima svoja imena (pooling, interrupt-driven ..), pa ih možda ne bi bilo loše i koristiti. Ok. Hvala na objašnjenju.
ms.dos.173 .bale.,
ŮŢimena (pooling, interrupt-driven ..), pa ih možda ne bi Pa polling nije baš jednak pojam programiranom IO. Koristi se u mnogim stvarima, pa i u interrupt driven IO :) Regards from .bale. ! #:*)+-<
ms.dos.174 spantic,
> Problem (? možda su tako hteli da bude ;) primećen na DOS-u 6.2 Taj problem se meni javlja i na običnom DOS 6.0, komercijalnom naravno.
ms.dos.175 niklaus,
(:> Ova diskusija se odužila iako je trebalo da bude kratak odgovor na (:> konkretno pitanje "šta je to DMA", a ističe mi i pretplata. I ne samo to, mi jadničci ("programeri") tražimo od nekoga ko se time baktao u nekoj od svojih pro.faza (:nema veze sa mejozom), da nam pošalje pri- merčić funkcionalne sadržine. Dakle, apelujem na znalce. (: (:niklaus:)
ms.dos.176 peacock,
>**< Drugi problem se javlja na dva računara, a na tri se ne >**< javlja, dakle ne mora biti isključivo krivica DOS-a. >**< Kada se formatira disketa 3.5 inča, 1.44 megabajta >**< (dakle, najnormalnija situacija), na njoj ostane jedan >**< lost cluster. Posle to CHKDSK B: sredi, i disketa je >**< sasvim normalna. Zanimljivo je da se i na ta dva >**< računara problem ne javlja ako se isključi QEMM 7.01. >**< Nisam stigao da probam upgrade na QEMM 7.03. Ovo se dešavalo na nekoliko računara dok je bio DOS datiran 22. februar. Nisam istraživao uzroke, mada je moguće da je bilo pod QEMM-om 7.01. Uvek je ostajao jedan loš cluster i bilo mi je čudno da tako važna stvar OS-a ne radi kako treba. Da li sam onda dobio veryiju od 10. marta ili je radjen upgrade QEMM-a, problemi su nestali. Meni se dešava da diskete od 3.5 inča ne mogu da formatiram na 720K ako su prethodno normalno formatirane iz DOS-a.
ms.dos.177 maksa,
>> Meni se dešava da diskete od 3.5 inča ne mogu da >> formatiram na 720K ako su prethodno normalno >> formatirane iz DOS-a. Meni se dešava da virgo intacta diskete (DD, 720K) neće da formatira sa čistim FORMAT (bez svičeva) nego prijavljuje loše sektore, i sl. Diskete su Verbatim, i zamalo da bacim par komada dok se nisam setio da forsiram sa /F:720 ... i sve ok. Svašta ...
ms.dos.178 niklaus,
(:>> I dalje ostaje pitanje adresiranja (uopšteno - 'opštenja' (: sa (:>> DMA kanalima)... pa da se pređe na programiranje... (:> (:> Ma i to je boza :) (uopšteno, naravno :), programira se kao i (:> svaka druga periferija, preko kontrolnih, statusnih i data (:> registara... Neću se smiriti dok ne vidim primerčić (ili mi neko ne približi mat- eriju, tako da dalje mogu sam) koji radi bolje nego bilo koja druga metoda... Tek toliko da se zna. (; (:niklaus:)
ms.dos.179 niklaus,
(:>> Na 32-bitnom transferu memory-memory dobija se brzina taman oko (:>> one, koju spominje zormi. Zar su DMA kanali toliki brzi? (: (:> I, ako ćemo PoŠTeNo, molim da se testiranje izvrši unutar petlje u (:> kojoj se CPU ne obraća memoriji. Ja sam svoj deo posla obavio. (: Sada nek se aktivira neko ko zna sa DMAičićima. (:niklaus:)
ms.dos.180 marzi,
!!! PAčNJA !!! Hitno potreban UPGRADE za DBLSPACE sa DOS 6.0 verzije iz marta na ovu novu 'original'. Sve korisne informacije hitno slati u MAIL Pozdrav, Marko.
ms.dos.181 peca.st,
!-> Hitno potreban UPGRADE za DBLSPACE sa DOS 6.0 verzije iz U zaglavlju poruke mi velikim slovima piše PC.PROG. Potrudite se molim te da sledeći put piše PC.OS Peđa.
ms.dos.183 rakicm,
Javila mi se potreba da iz file handle-a dodjem do imena datoteke koja je vezana za taj handle. Iz SFT (sistem file table) nije moguce doci do toga (tamo postoje FCB imena datoteka i koliko file handle-ova trenutno koris- ti datoteku ali ne i koji handle-ovi je koriste) Najblize resenju mi izgleda struktura PSP-a gde stoji . . . PSP+32h handle array size PSP+34h handle array pointer . . . E sad, handle array size je u stvari maksimalan broj istovremeno otvorenih datoteka, a handle array pointer mi uvek (kod mene) ima vrednost 0000:02C0 na kojoj adresi nema ni pomena o opisima datoteka (pojma nemam sta je). Zna li neko nesto o ovome? hvala. Mladen.
ms.dos.184 djelovic,
> Javila mi se potreba da iz file handle-a dodjem do imena datoteke koja je > vezana za taj handle. Mislim da je to nemoguće. Ono što bi mogao jeste da okačiš neku svoju funkciju na vektor za otvaranje datoteka, pa da pamtiš "saobraćaj" koji tuda ide.
ms.dos.185 mdimitrijevic,
Mislim da je to moguce. Pogledaj u PROGRAM direktorijumu fajl 80x0393.ZIP i datoteku H2NAME.ASM u njemu. Pozdrav, Marjan Dimitrijevic
ms.dos.186 saricl,
> REQUEST) i saceka odgovor (BUS GRANT), tako da se ne moze desiti sudar > na magistrali jer ovaj ceka dozvolu. Ovo mi nije bilo poznato.Hvala na korisnoj informaciji.
ms.dos.187 bojans,
Imam dva pitanja u vezi sa DOS device driverima. 1) Šta se dešava nakon učitavanja device drivera u memoriju? Da li DOS dostavlja potrebne podatke interrupt rutini tako da ona obavi funkciju 0, tj, inicijalizaciju? 2) Na koji način se device driveri mogu trace-ovati u nekom debugeru, s obzirom da se ne učitavaju od adrese 100h već od 0 (ako sam dobro shvatio)?
ms.dos.188 djelovic,
> 1) Sta se desava nakon ucitavanja device drivera u memoriju? Da > li DOS dostavlja potrebne podatke interrupt rutini tako da ona obavi > funkciju 0, tj, inicijalizaciju? ZZ je svojevremeno pisao o tome u "Računarima". Prema tome - RIND u ruke pa traži. Takođe, ne bi bilo loše da pogledaš i u intr*.zip fajlovima u INFO diru, mislim da i tamo ima nešto na tu temu.
ms.dos.189 bojans,
>> ZZ je svojevremeno pisao o tome u "Računarima". Prema tome - >> RIND u ruke pa traži. Naravno da sam pročitao dotične tekstove, ali ono što sam pitao nije eksplicitno objašnjeno. Međutim, više me interesuje odgovor na pitanje br. 2 tj. kako da u nekom debugeru analiziram device driver step-by-step, odnosno da li postoji debuger koji ovo omogućava? žini mi se da si baš ti svojevremeno pominjao neki program koji omogućava učitavanje .sys fajlova iz komandne linije. Gde se može naći taj programčić?
ms.dos.190 maksa,
>> žini mi se da si baš ti svojevremeno pominjao neki program >> koji omogućava učitavanje .sys fajlova iz komandne linije. Gde >> se može naći taj programčić? Evo ga, mada ja s njim nisam uspeo ništa da uradim, sem da zaglavim mašinu, mada se istini za volju nisam preterano zamajavao. čelim ti više sreće. :) idrv01.zip
ms.dos.192 mstanic,
>> Međutim, više me interesuje odgovor na pitanje br. 2 tj. >> kako da u nekom debugeru analiziram device driver >> step-by-step, odnosno da li postoji debuger koji ovo >> omogućava? Pa to bi trebalo da može svaki dibager, zar ne? Nisam probao sa .sys drajverima, ali probaj pa da vidimo (ako ne ide) šta da radimo.
ms.dos.193 vitez.koja,
#=> žini mi se da si baš ti svojevremeno pominjao neki #=> program koji omogućava učitavanje .sys fajlova iz #=> komandne linije. Gde se može naći taj programčić? Imaš u desqviewu DEVICE.COM - ime sve govori. Probao sam sa ansi drajverom - radi :)
ms.dos.194 dr.grba,
>> žini mi se da si baš ti svojevremeno pominjao neki program >> koji omogućava učitavanje .sys fajlova iz komandne linije. Gde >> se može naći taj programčić? Eve ti gu (: Radi mališa, sve zvoni. Pojma nemam odakle mi (: drvinst.zip
ms.dos.195 snemcev,
>> Radi mališa, sve zvoni. Pojma nemam odakle mi (: Uvrediću se! ;)
ms.dos.197 dr.grba,
>> >> Radi mališa, sve zvoni. Pojma nemam odakle mi (: >> >> Uvrediću se! ;) Ne, program nije od tebe. Skinuo sam ga sa nekog BBS-a, verovatno sa Rhinocerosa... P.S. Jel' vam program dobar?
ms.dos.198 dejanr,
========== ibm.dos/long.messages #419, from wlmoore, 8591 chars, Fri Dec 31 20:25:58 1993 ---------- TITLE: Detecting Batch Files /* What I'm attempting here is to establish whether a program has been called from within a batch file. This is pesudo code, and I'm presenting it this way to allow easy digestion by everyone, and so maybe open up a discussion on the topic. The method I'm presenting here is this. 1: Determine how many command shells are present. 2: How many batch files are present and who do they belong to. 3: Which command shell I belong to. What it provides is a chance to identify the entire calling sequence of a program at the expense of being very version specific. Less version specific options are given at some points. AUTHOR: Wayne L. Moore wlmoore@bix.com Enduring tempory exile in Omaha, NE :-) <OK to Post> If anyone is following this, the current alpha of my memory mapper provides descriptive dumps of psp's and batch stubs. If you want to play with it, let me know. READY! SHOOT!! AIM!!! */ /* Magic numbers indicating offset in resident command area which contain the segment of an existing/running batch file. These offsets are from the psp so to obtain we'll use ( mcb_seg + 1 ):( magic_num ) */ #define MSDOS_V50_BAT 0x0252 // These can be done away with #define MSDOS_V60_BAT 0x0315 #define MSDOS_V62_BAT 0x031A #define DOS60_XSEG 0x05E3 // segment of the current executable #define DOS62_XSEG 0x05EA // is located at this offset in DOS v6.x. // I'm not using these here, but they provide // a possible method of cross-checking that // may be useful later. #define BATCH_ID 0x0100 #define BAT_CALLER_PSP 0x0003 #define BAT_CHARS_READ 0x0008 #define BAT_TRUENAME 0x0020 #define PARENT_PSP 0x0016 #define PSP_ARG_TOTAL 0x0080 #define PSP_ARG_LINE 0x0081 /* For this method assume the following struct is used in a doubly-linked */ /* list and that relevant pointers and records are maintained/created in */ /* code not presented here. Global cs_struct_ptr will be used as variable.*/ /* If you're not comfortable with linked lists you can get away with */ /* arrays of structures. Just take precautions for the bizarre, and if */ /* encountered, put the bugger out of his misery and yours. :-) */ typedef struct { word psp; batch_struct *next, *prev; } batch_struct; typedef struct { word psp; word batch_seg; word am_temp; batch_struct *b_file_psp; command_shell_struct *next, *prev; } command_shell_struct; /* Make sure we're working with the MS-DOS versions we want. No lower life forms are allowed, including DR-DOS (Ouch, I Heard that!!), NDos, 4Dos OS/2 (huh? <groan> here it comes!) or any other thing. */ word get_os() begin word result= 0; if( os_version == anything other than MS-DOS v5 or 6 ) return result; else if( os_version == v5 ) return MSDOS_V5_BAT; else return MSDOS_V6x_BAT; /* Another more general method would be to get the primary shell */ /* segment, then do a string search for the COMSPEC variable. */ /* The offset minus 2 is the "magic" number we need. */ end /* Get segment of primary shell from ES returned from Int 2fh/122eh */ word get_error_table() begin return es from Int 2fh/122eh end void get_list_of_lists( var seg, var off ) begin seg= es from Int21h/52h off= bx "" "" end /* Find the psp of my parent shell by tracing up the psp chain until */ /* the current psp == word at offset 0x16 of the current psp. */ word get_parent_shell() begin word cur_psp, tmp_psp, old_psp; cur_psp= my_psp; old_psp= 0; while( cur_psp != old_psp ) begin old_psp= cur_psp; cur_psp= WORD_AT( cur_psp, PARENT_PSP ); end return cur_psp end /* Put information about the current working environment into some globals */ void get_working info() begin primary_shell= get_error_table(); parent_shell= get_parent_shell(); am_i_shelled= primary_shell != parent_shell; end /* About the only special condition I can think of that we have to contend */ /* with is where we have the line "command /c <filename>" within a batch. */ /* We'll exploit the behavior of the psp with regard to the command shell. */ /* To determine this, we'll examine the command line arguments offset in */ /* the psp of the _parent_ command shell. If we find something like: */ /* " /c <filename>", and the first FCB field contains a "C" and the second */ /* FCB field is null, then we've got an occurance. */ word have_command_call( word seg ) word result= 0; begin if(( BYTE_AT( seg, PSP_ARG_TOTAL ) != 0 ) and (( the 1st FCB is "C" ) and ( the 2nd FCB is null ))) begin if( the first non-white chars at [seg, PSP_ARG_LINE] equate to /c ) result= 1; end return result; end /* Trace down the mcb chain locating shells and gathering pertinent info */ /* A more generic alternative would be to search for batch file signatures */ /* verify that they belong to a command shell and then get the info needed */ /* I went this route just to shorten things up a bit here. What we end up */ /* either way is a command shell heirarchy presented as a negotiable list */ void gather_shell_info( word seg, off ) begin word cur_mcb= WORD_AT( seg, off ); while( BYTE_AT( cur_mcb, 0 ) != 'Z' ) begin if(( WORD_AT( cur_mcb + 1, PARENT_PSP ) == ( cur_mcb + 1 )) and ( this isn't our primary shell )) begin /* We have a command shell, get info */ cs_struct_ptr->psp= cur_mcb + 1; cs_struct_ptr->batch_seg= WORD_AT( cur_mcb + 1, magic_bat_offset ); if( have_command_call( cs_struct_ptr->prev->psp )) cs_struct_ptr->am_temp= TRUE; /* update pointers */ end end end /* Now we find existing batch stub information by traversing the MCB */ /* chain again and attaching stub information to the proper command */ /* shell structure. */ void gather_batch_info( word seg, off ) begin word cur_mcb= WORD_AT( seg, off ); while( BYTE_AT( cur_mcb, 0 ) != 'Z' ) begin if(( WORD_AT( cur_mcb + 1, 0 ) == ( BATCH_ID )) and ( WORD_AT( cur_mcb, 3 ) == ( One of our command shells ))) begin /* Attach batch record in calling order to the proper command */ /* shell record. When we get done we should have something */ /* like: <Primary shell command rec>--<batch rec>... | <1st child command rec>... . . . <nth child command rec>--<batch rec>...<current batch rec> */ end end end char *batch_name( word seg ) begin /* Return the fully qualified batch file name located at the offset */ /* contained in BAT_TRUENAME eg: seg:BAT_TRUENAME. You can perform */ /* a far-near copy with sprintf(<char array>,"%Fs",MK_FP(seg,off)) */ end char *get_batch_line( char *bat_file, word chars_to_read ) begin /* read lines from the batch file until the number of characters */ /* read is equal to the value chars_to_read. return the last line */ /* to the caller. Note: CR/LF count toward chars_to_read. */ end /* When we get here, we have a fully formed record structure containing */ /* all the information we need to determine our calling environment. */ int i_am_batched() begin /* traverse the shell struct linked-list until the command shell psp */ /* is equal to my parent_shell. Examine the batch_psp variable for */ /* non-zero and do what you need to. Return TRUE for batch else FALSE*/ end void main() begin if(( magic_bat_offset= get_os()) != 0 ) begin get_working_info(); get_list_of_lists( first_seg, first_off ); /* allocate new shell_struct */ cs_struct_ptr->psp= primary_shell; cs_struct_ptr->batch_seg= WORD_AT( primary_shell, magic_bat_offset ); /* update pointers */ gather_shell_info( first_seg, first_off - 2 ); gather_batch_info( first_seg, first_off - 2 ); if( i_am_batched()) do what you need to do end end Wayne
ms.dos.199 drdjokic,
U jednom od brojeva racunara sam procitao kako se softwerski resetuje PC. Sada taj clanak nikako ne mogu da pronadjem. Da li neko moze da pomogne ? Unapred hvala !
ms.dos.200 djelovic,
> U jednom od brojeva racunara sam procitao kako se softwerski resetuje P > Sada taj clanak nikako ne mogu da pronadjem. Da li neko moze da pomogne ? Bilo je priče o tome ovde i ranije, potraži malo.
ms.dos.201 mjova,
> U jednom od brojeva racunara sam procitao kako se > softwerski resetuje PC. jmp far 0f000:fff0h
ms.dos.202 markom,
■■■ Bilo je priče o tome ovde i ranije, potraži malo. Pointer ... Marko
ms.dos.203 isekulovic,
>> U jednom od brojeva racunara sam procitao kako se softwerski resetuje >> PC. Sada taj clanak nikako ne mogu da pronadjem. Da li neko moze da >> pomogne ? BLP R55 ili ako ti je lakše pc.soft 9.229
ms.dos.204 drdjokic,
Kako softverski da resetujem racunar iz DOS bat fajla ili iz programa u CLIPPERU 5.01
ms.dos.205 arazumenic,
-> Kako softverski da resetujem racunar iz DOS bat fajla ili iz programa u -> CLIPPERU 5.01 Za clipper imaš biblioteku NANFOR i u njoj funkciju ft_reboot(). Saša
ms.dos.206 dvidovic,
> Kako softverski da resetujem racunar iz DOS bat fajla ili iz > programa u CLIPPERU 5.01 Iz dosa, na dva načina. Prvi je da počneš da koristiš 4dos. On ima komandu reboot i može da uradi hard ili soft reset. Drugi je da skineš ovo programče, zakačeno uz poruku. A što se Clipper-a tiče, ne znam. reboot.com
ms.dos.207 ficus,
ima komandu reboot i moze da uradi hard ili soft reset. Drugi je da skines ovo programce, zakaceno uz poruku. A sto se Clipper-a tice, ne znam. ----------------------------------------------------- Za kliper ima Ft_reboot() - nanforum ili moz da pise svoju funkciju u asm-u koja pociva bese ffff:0000 kolko se secam ako gresim onda je f000:0000 ali sam skoro 100% siguran da je ono prvo i onda samo tu funkcijicu ulinkuje u clipper.lib i ko da je clipper komanda savet - nemoj da koristis tako nesto u clipper-u jer isti kreira temp fajlove za svapovanje memorije a i niko ti ne garantuje da ce sve datoteke biti zatvorene dakle napisi jos jednu funk. koja udari close all pa onda je vec sigurnije.
ms.dos.208 dsisic,
> i onda samo tu funkcijicu ulinkuje u clipper.lib i ko da je > clipper komanda Ne bih da se pravim pametan, ali mi je malo bez veze to linkovanje u clipper.lib, jer bolje je da sve svoje modulcice stavis u sopstvenu biblioteku rutina koje ce biti van GorePomenute biblioteke ako nista drugo, a ono zbog toga sto ce ti naici patch za CA CLIPPER 5.xx koji ti nece prihvatiti LIB po kome si dzarao pa ces imati male komplikacije. Na kraju krajeva zasto clipper.lib, a ne dbfntx, terminal, extend... :) Sa druge strane, nista lakse od ukljucivanja te biblioteke u EXE modul :) ... bla bla truc truc
ms.dos.209 dragisha,
-> > U jednom od brojeva racunara sam procitao kako se -> > softwerski resetuje PC. -> -> jmp far 0f000:fff0h Jel' neko probao ovo u DOS prozoru pod Windows? Vrlo nedosljedno od malog mekog. -- [Pick, scrape, roll into a ball, and flick.]
ms.dos.210 cnenad,
ŁŁŁ Iz dosa, na dva načina. Prvi je da počneš da koristiš 4dos. On Ima četiri načina. Pored dva koja si naveo, ostaje još NDOS u kome isto kuca REBOOT a može i preko BE REBOOT.
ms.dos.211 milan,
A propos DOS-a 6.2. Postoji Step Up sa DOS-a 6.0 na 6.2 (bio je valjda i ovde na SEZAM-u). Fajlovi na njemu nose datum 30 sept 1993. Međutim fajlovi na instalacionim disketlama DOS-a 6.2 nose datum 27. sept 1993 (nigde ne piše da je beta pa valjda i nije). No to nije bitno, bitno je da se osnovni fajlovi (io.sys, msdos.sys i commamd.com) razlikuju! Zna li neko u čemu je stvar? Pl poz M
ms.dos.212 drakce,
│ Postoji Step Up sa DOS-a 6.0 na 6.2 (bio je valjda i ovde na SEZAM-u). │ Fajlovi na njemu nose datum 30 sept 1993. Međutim fajlovi na instalacionim │ disketlama DOS-a 6.2 nose datum 27. sept 1993 (nigde ne piše da je beta pa └──────── Vrlo važno, tri dana gore-dole ;). Instalirao sam taj od 27. septembra i nisam imao problema (osim onog sa FORMAT /U, al' to je druga priča). Jedan od mogućih scenariJa bi bio: DOS 6.2 završen 27. septembra i pušten u promet. Trebalo im tri dana da dovrše upgrade verziju. Fajlovi se razlikuju u dužini, jer su hteli da upgrade bude što manji, kako bi se mogao modemom prenositi. Zato su radili "patch"-eve starih fajlova i postigli funkcionalnu jednakost (šta god to značilo), a nisu marili da se baš u bajt poklope. Eto, to mi se javlja. Da li me čujete? :)
ms.dos.213 milan,
> Eto, to mi se javlja. Da li me čujete? :) Da! Pl poz M P.S. A propos, pade mi na pamet da taj vrač-pogađač tako i postiže svoj uspeh. Šta god da prethodno lupi on na kraju kaže: "Da li me čujete?". črtva, kud' će šta će, kaže: "Da!" i tako ispada da je on u pravu. :))))))
ms.dos.214 markom,
■■■ Ima četiri načina. Pored dva koja si naveo, ostaje još NDOS u ■■■ kome isto kuca REBOOT a može i preko BE REBOOT. Aj' sad može i iz programa reboot.exe, a i iz mase debuggera. U onom dosovom 'debuggeru' se to valjda radi sa g FFFF:0000, ali nisam siguran :)) Marko
ms.dos.215 andrejt,
QUOTE>>'debuggeru' se to valjda radi sa g FFFF:0000, ali nisam siguran :)) Da bese u Racunarima (a to je valjda preuzeto sa SEZAMa ;) ). (echo g = ffff : 0000 | debug > nul) (Ne znam dal' je neko spomenuo al' to je isto sto i valjda JMP FFFF0 u bilo kom asmu)
ms.dos.216 markom,
■■■ (Ne znam dal' je neko spomenuo al' to je isto sto i valjda ■■■ JMP FFFF0 u bilo kom asmu) Ajmi napišite program koji će to da radi!! Ja se ubi od pokušavanja, al' neće! Marko
ms.dos.217 mjova,
> -> jmp far 0f000:fff0h > Jel' neko probao ovo u DOS prozoru pod Windows? Vrlo > nedosljedno od malog mekog. lično ne koristim win, ali mislim da nije dovoljno skočiti samo na datu lokaciju. to je bio samo hint, a zapravo potpun odgovor bi bio ovakoav:
ms.dos.218 markom,
■■■ lično ne koristim win, ali mislim da nije dovoljno skočiti ■■■ samo na datu lokaciju. to je bio samo hint, a zapravo potpun ■■■ odgovor bi bio ovakoav: ■■■ ■■■ Kakav ????? Marko
ms.dos.219 mjova,
> ovakoav: ;)) ovakav: mov ax, 40h mov ds, ax mov ax, 1234h mov ds:72h, ax jmp far 0f000h:fff0h dakle, treba malo džarati. ovako nešto piše u tech ref 4.0: 0:0472 2 1234H means Ctrl-Alt-Del reboot is in progress. BIOS checks this to avoid doing a "cold boot" with the time-consuming POST 4321H means reset, preserving memory 5678H, 9abcH, and abcdH (are internal PC Convertible codes) dalje, zar ovakav tag-line na moju poruku? a? ;) > [Pick, scrape, roll into a ball, and flick.]
ms.dos.220 bigbrada,
!##! datu lokaciju. to je bio samo hint, a zapravo potpun odgovor !##! bi bio ovakoav: Dobar odgovor nema šta ;)
ms.dos.221 bearboy,
> lično ne koristim win, ali mislim da nije dovoljno skočiti samo > na datu lokaciju. to je bio samo hint, a zapravo potpun odgovor > bi bio ovakoav: > > Prilično traljav odgovor, ako smem da primetim ;)
ms.dos.222 markom,
■■■ mov ax, 40h ■■■ mov ds, ax ■■■ mov ax, 1234h ■■■ mov ds:72h, ax ■■■ jmp far 0f000h:fff0h ---------------------------- Moj program: ■■■ .model small ■■■ .code ■■■ mov ax, 40h ■■■ mov ds, ax ■■■ mov ax, 1234h ■■■ mov ds:72h, ax ■■■ jmp far 0f000h:ffff0h ■■■ end ---------------------------- Evo šta mi reče TASM: --------------------- ■■■ Assembling file: asm.ASM ■■■ **Error** asm.ASM(7) Illegal immediate ■■■ Error messages: 1 ■■■ Warning messages: None ■■■ Passes: 1 ■■■ Remaining memory: 443k Aj' mi sad recite gde sam pogrešio ... Marko
ms.dos.223 mivel,
++ jmp far 0f000h:0fff0h Dobra zamena: mov ax,-1 push ax inc ax push ax retf
ms.dos.224 mjova,
da li je u pitanju lenjost ili nešto drugo? danas ljudi očekuju potpuno sažvakan i trenutno upotrebljiv odgovor - u protivnom odustaju. ;) .model tiny .code org 100h reboot proc far start: mov ax, 40h mov ds, ax mov ax, 1234h mov ds:72h, ax jmp far ptr rom_init reboot endp ROM_SEG segment at 0f000h org 0fff0h rom_init label ends end start
ms.dos.225 kriss,
˙˙ ■■■ jmp far 0f000h:ffff0h +++++ ˙˙ Aj' mi sad recite gde sam pogrešio ... Nešto mi je veliki ovaj brojčić za 16 bita. ;) Možda je trebalo nulu na početak?
ms.dos.226 markom,
■■■ da li je u pitanju lenjost ili nešto drugo? danas ljudi ■■■ očekuju potpuno sažvakan i trenutno upotrebljiv odgovor - u ■■■ protivnom odustaju. ;) Definitivno je u pitanju lenjost :)) ali dok ima tako dobrih & vrednih kao ti, mi lenji nismo u opasnosti :)))) Hvala za primer, nadam se da radi :) Marko
ms.dos.227 mjova,
> Definitivno je u pitanju lenjost :)) ali dok ima tako > dobrih & vrednih kao ti, mi lenji nismo u opasnosti :)))) traćiti tuđe povorenje i vreme povlači za sobom izvesne konsekvence.
ms.dos.228 dragisha,
-> dalje, zar ovakav tag-line na moju poruku? a? ;) -> -> > [Pick, scrape, roll into a ball, and flick.] THor, sram da ga je i stid!! :)) Radim isto što i ti, ali Windows se zaledi kad se ovo proba. Moraću da probam 4Dos reboot u DOS prozoru, da vidim jel' pametniji:). -- [" If All Fails, READ THE DOCS ! "]
ms.dos.229 niklaus,
(:> Hvala za primer, nadam se da radi :) Ex, baš si lenj. (: Probaj ga, složi utiske, pa se (eventualno) požali ili pohvali mjovu uz preporuku programčeta ostalima... (: Sean :)
ms.dos.230 mstanic,
>> ■■■ jmp far 0f000h:fff0h ^^^^ original >> ■■■ jmp far 0f000h:ffff0h ^^^^^ jedan f viška >> ■■■ **Error** asm.ASM(7) Illegal immediate Za ono što si napisao potrebno je 20 bita, moguće je samo 16. >> Aj' mi sad recite gde sam pogrešio ... Verovatno si prevideo.
ms.dos.231 markom,
■■■ Ex, baš si lenj. (: Probaj ga, složi utiske, pa se ■■■ (eventualno) požali ili pohvali mjovu uz preporuku ■■■ programčeta ostalima... Programče radi :) Mogu da kažem da mi uopšte nešto onakvo nije padalo na pamet i pored svih pokušaja, a bilo ih je ihaaa. Na žalost onaj primer je za mene relativno neupotrbljiv jer ne može da se lin- kuje sa Pascalom :(( Ne može da se linkuje jerbo TP ne podržava skokove u dru- gi kodni segment :(( Marko
ms.dos.232 dcolak,
│ kuje sa Pascalom :(( Ne može da se linkuje jerbo TP ne podržava skokove u │ dru- gi kodni segment :(( Da li je neko pomislio o prelasku na Amigu? Sledge DAMMIR!
ms.dos.233 kriss,
˙˙ Na žalost onaj primer je za mene relativno neupotrbljiv jer ne ˙˙ može da se lin- kuje sa Pascalom :(( Ne može da se linkuje ˙˙ jerbo TP ne podržava skokove u dru- A jel si probao da ga prvo TASM-uješ, pa da obj ulinkuješ?
ms.dos.234 markom,
■■■ A jel si probao da ga prvo TASM-uješ, pa da obj ulinkuješ? Naravno. Marko
ms.dos.236 niklaus,
(:> Na žalost onaj primer je za mene relativno neupotrbljiv jer ne može da (:> se lin- kuje sa Pascalom :(( Ne može da se linkuje jerbo TP ne podržava (:> skokove u dru- gi kodni segment :(( A šta kaže BP.EXE, Target Platform: Protected Mode Application? (: Sean :)
ms.dos.237 markom,
*** A šta kaže BP.EXE, Target Platform: Protected Mode *** Application? Nemam BP, koristim TP, pogledaću taĘno pa ću proslediti ... Marko
ms.dos.238 nikac,
>■>> ■■■ jmp far 0f000h:fff0h >■ žžžž original >■>> ■■■ jmp far 0f000h:ffff0h >■ žžžžž jedan f viška >■>> ■■■ **Error** asm.ASM(7) Illegal immediate >■ >■ Za ono što si napisao potrebno je 20 bita, moguće je >■ samo 16. Da ali isto prijavljuje i za jmp far 0f000h:0ffffh A ako stavis jmp far ptr 0f000h:0ffffh onda se buni "Near call or jump to different CS" oli nesto tako... Za sada radi jedino ono sto je poslao mjova a poneki put prodje i sledece: mov ax,0f000h mov es,ax jmp es:0ffffh Zna li neko u cemu je stos? Napominjem da _cesto_ radi ali poneki put ne?!
ms.dos.239 ficus,
:) Ne bih da se pravim pametan, ali mi je malo bez veze to :) linkovanje u clipper.lib, jer bolje je da sve svoje modulcice U pravu si jednostavno to mi prvo pade na pamet :) Sa druge strane, nista lakse od ukljucivanja te biblioteke :) u EXE modul :) ... bla bla truc truc Slazem se ali eto reko pade mi na pamet ja napisah uostalom moj prvi prg koj je bio vezivan sa clipperom (asm+cliper) je bio tako ubacen jednostavno uradis jednom i vise ne razmisljas do prvog update-a. A da sa neke strane nije prakticno nije.
ms.dos.240 goranr,
// Kako softverski da resetujem racunar iz DOS bat fajla ili iz programa u // CLIPPERU 5.01 Imaš u Cliptool biblioteci na sezamu... ÔOPAH
ms.dos.241 ficus,
:) Na zalost onaj primer je za mene relativno neupotrbljiv jer ne moze da se :) lin- kuje sa Pascalom :(( Ne moze da se linkuje jerbo TP ne podrzava :) skokove u dru- gi kodni segment :(( trebalo bi da podrzava jer postoji far modifikator koj se pise iza funkcija cim postoji tako nesto logicno je.... nazalost ja nemam asm tako da nisam uspeo nista a basm(integrisani asm) ne sljaka bas kako ocu evo saveta: postoji jedna davno zaboravljena naredba turbo pascala i zove se inline drugim recima prevedi prg u obicnom asm-u zatim izvuci opcode i ostlo sto uz to ide i to bi trebalo da radi. Jos jedan praktican savet predji na c on sasvim lepo radi sto se tice takvih vezivanja i slicnog.
ms.dos.242 ficus,
U vezi reseta iz tp-a problem je definitivno resen: procedure res; begin inline($9A/$F0/$FF/$00/$F0); END; ovo pisem online ali je procedura testirana u tp 7.0 i radi ovo je ustvari far jmp na f000:fff0 ali preveden u masinski jezik trebalo je malo prekopati po knjigama za op-code zato nisam poslo prosli put
ms.dos.243 markom,
*** Jos jedan praktican savet predji na c on sasvim lepo radi sto *** se tice takvih vezivanja i slicnog. Znam da C sve to lepo radi, ali i tu imam problema. Vidi temu:cccc ... Marko
ms.dos.244 ialeksic,
pitanja : 1. ansi.sys drajveri raznih proizvodjaca super VGA kartica (npr. TRIDENT, REALTEK,...) za rad sa rezolucijom vecom od 80x25 ne podrzavaju kombinaciju CTRL-TAB koja je zgodna u 4dos-u,na primer. DOS-ov ansi.sys ne podrzava VGA rezime rada iznad 80x25 u karakter modu. Ima li spasa? 2. Hot-key kombinacja SHIFT-F1 za aktiviranje Norton Guide-a radi normalno sa superVGA drajverima npr.tansi.sys ali sa standardnim DOS ANSI.SYS drajverom aktivira se na ekranu tek kad se posle uobicajene SHIFT-F1 kombinacije pritisne jos neka dirka sa tastature !?
ms.dos.245 dens,
>> DOS-ov ansi.sys ne podrzava VGA rezime rada iznad 80x25 u karakter modu. >> Ima li spasa? Uzmi NNANSI. Mnogo je brži i naravno ne brlja u "advanced" text modovima. Ako ga ne nađeš, poslaću ti ga na mail.
ms.dos.246 dragisha,
-> 1. ansi.sys drajveri raznih proizvodjaca super VGA kartica -> (npr. TRIDENT, REALTEK,...) za rad sa rezolucijom vecom od 80x25 -> ne podrzavaju kombinaciju CTRL-TAB koja je zgodna u 4dos-u,na primer. -> DOS-ov ansi.sys ne podrzava VGA rezime rada iznad 80x25 u karakter modu. -> Ima li spasa? Ja koristim 132*34 (vrapci već pričaju:) na Trident i to BEZ ansi.sys. Radi i sa ANSI, ali je problem u onome preko 25og reda. DENS mi je poslao nnansi i on ne brlja preko 25og reda, ali kad uradim cls kursor se izgubi. Zaključio sam da je to zbog toga što u nestandardnim modovima cls radi nuliranje video memorije, a u standardnim punjenje blankovima i odgovarajućim atributom. Ovo se i vidi kad poslije cls (ne vidi se kursor) kucaš neki znak (i dalje se ne vidi) pa backspace (e sad se vidi kursor na mjestu gdje je bio znak). Imam i ANSI.COM i sa njim mi se dešava isto. Interesantno je da DOS mode komanda priznaje samo DOSov ANSI kad probaš MODE CON: lines=43. -- [A dry sense of humor is better than slobbering everywhere]
ms.dos.247 mjova,
> 1. ansi.sys drajveri raznih proizvodjaca super VGA > kartica uzmi nansi sa sezama. nisam video bolji ansi veznik.
ms.dos.248 dens,
>> DENS mi je poslao nnansi i on ne brlja preko 25og reda, ali kad uradim >> cls kursor se izgubi. Zaključio sam da je to zbog toga što u nestandardnim Kako se to izgubi kursor? Kod mene (takođe Trident) radi OK.
ms.dos.249 dragisha,
-> >> DENS mi je poslao nnansi i on ne brlja preko 25og reda, ali kad -> uradim >> cls kursor se izgubi. Zaključio sam da je to zbog toga što u -> nestandardnim -> Kako se to izgubi kursor? Kod mene (takođe Trident) radi OK. boot. Radi! Sve je ok dok ne dođe ispis do dna ekrana, tj dok ne mrdne malo gore ili dok ne uradim cls. Onda se vidi na cmd liniji samo dok ne počnem da kucam (onda nestane). Ponovo se vidi kad uradim BS, na mjestu gdje sam ubio karakter. -- [If you can read this, thank your teacher.]
ms.dos.250 dens,
>> uzmi nansi sa sezama. nisam video bolji ansi veznik. Poslao sam mu nnansi.sys koji je (navodno) nastao iz pomenutog nansi-ja. Probaj...
ms.dos.251 ialeksic,
>> Uzmi NNANSI. Mnogo je brzi... Dobro, ali da bih ga prilagodio svojoj kartici (Trident) treba ponovo prevesti source. Ja medjutim nisam u posedu TASM/TLINK vec kad koristim MASM/LINK. Pa da bi se to prevelo treba menjati source, itd. malo je to "tres complique". Moze li se doci do TASM/TLINK kombinacije?
ms.dos.252 dens,
>> "tres complique". Moze li se doci do TASM/TLINK kombinacije? Verovatno može ;) Pogledaću...
ms.dos.253 ialeksic,
Ipak sam izmenio source i spremio NNANSI drajver sa MASM/LINK kombinacijom. Saljem ovako izmenjen source ako jos nekom bude zatrebalo. Za .SYS verziju treba: MASM nnansi /DTSR=0 LINK nnansi EXE2BIN nnansi.exe nnansi.sys a za .COM: MASM nnansi /DTSR=1 LINK nnansi EXE2BIN nnansi.exe nnansi.com nnansi.arj
ms.dos.254 zzivotic,
Izgleda da DOS funkcija FIND FIRST (4Eh) vraća status da fajl postoji i ako se navede neki od postojećih karakter device drajvera. Recimo FIND FIRST("con") vraća da je sve ok i da postoji fajl sa tim imenom, a atribut mu je postavljen na (nedokumentovanu?) vrednost 40h. Jel ovo oduvek ovako bilo ili je to neki novitet DOS 6.x? Pozdrav, zz
ms.dos.255 todorp,
> FIRST("con") vraca da je sve ok i da postoji fajl sa tim imenom, a > atribut mu je postavljen na (nedokumentovanu?) vrednost 40h. Jel ovo > oduvek ovako bilo ili je to neki novitet DOS 6.x? E svasta, probao ja na DOS-u 5.0 i na Compaq-ovom 3.31 i opet je 40h (7-mi bit je setovan). A nigde se po dokumentaciji ne pominje. Velju 7 i 8 bit reserved for future use. U svakom slucaju trebalo bi da je ovo siguran (?) nacin za proveru da li je nesto file ili neki device. Pozdrav od Todora
ms.dos.256 dr.grba,
DOS program PRINT radi tako što na kraju štampe svake datoteke prosledi FORM FEED štampaču. Ima li neki haker koji bi mogao da nađe način da se ovo isključi?
ms.dos.257 janko,
> Ima li neki haker koji bi mogao da nađe način da se ovo > isključi? Ima, naravno. :)) Malo disasembliranja i krpi se stvar, ali, ko će da to radi za svaku bogovetnu verziju DOS-a? Lakše je jednostavno ne generisati POSLEDNJI FF u datoteci koja će se štampati. Onda PRINT-ov radi što treba. Drugi štos je -- slanje dva zaredom FF-a štampaču može da se izbegne pisanjem rezidentnog programčića, koji ne bi puštao drugi od dva. Meni nikad nije zasmetalo što PRINT to radi, što radi -- uvek mi je BAŠ TO i trebalo.
ms.dos.258 markom,
*** Ima li neki haker koji bi mogao da nađe način da se ovo isključi? Trebalo bi da ima neki svič, ili možda nema ?
ms.dos.259 mbole,
Kad ste već kod print-a, jel moguće nekako ga naterati da štampa binarni file, tj da se ne zaustavi kad naiđe na Ctrl-Z.
ms.dos.260 dr.grba,
>> *** Ima li neki haker koji bi mogao da nađe način da se ovo >> isključi? >> >> Trebalo bi da ima neki svič, ili možda nema ? Nema.
ms.dos.261 mirche,
> file, tj da se ne zaustavi kad naiđe na Ctrl-Z. Za print ne verujem al' probaj: COPY xx.yyy /B lpt1
ms.dos.262 mbole,
> Za print ne verujem al' probaj: COPY xx.yyy /B lpt1 Da samo ovo ne štampa u pozadini dok ja radim nešto drugo.
ms.dos.263 vega,
Imam 286 sa 640 K RAM-a (jer mi je riknuo neki cip pa je otisla EXTENDED memorija). Kako da iz nekog svog programa pristupim neiskoriscenoj memoriji u delu od A0000 do FFFFF, tj. onoj memoriji koju MFT prijavljuje kao unused? Pozdrav, >>> VEGA <<<
ms.dos.264 markom,
*** Da samo ovo ne štampa u pozadini dok ja radim nešto drugo. Pa DOS nije ni predviđen za MTasking ... :)
ms.dos.265 cnenad,
ŁŁŁ *** Da samo ovo ne štampa u pozadini dok ja radim nešto drugo. ŁŁŁ ŁŁŁ Pa DOS nije ni predviđen za MTasking ... :) :)))))
ms.dos.266 mmitrovic,
čŠĐŠč Neću se smiriti dok ne vidim primerčić (ili mi neko ne približi mat- čŠĐŠč eriju, tako da dalje mogu sam) koji radi bolje nego bilo koja druga čŠĐŠč metoda... Tek toliko da se zna. (; Pošto ste toliko zainteresovani za DMA ja sam malo kopao po svojoj dokum. i našao sam isečak (Mark, Cut, Paste) iz jednog starog e-magazina za asm programere. Nije baš sve crno belo al' baca novo svetlo na stvar. BTW, ako ste zainteresovani za taj časopis imam brojeve 2,3,5,12/89, pa mi sendnite mail. Ako bude bilo zainteresovanih okačiću ih u asm. Daklem, sledi "čaršavčić": DMA Transfers for FAST Memory Moves If you ever have the need for super fast moves of blocks of memory and you can put up with a lot of restrictions in order to gain the speed there is a method in the PC environment to move bytes at the rate of one every 3 clock cycles. Compare that to the clocks for a rep movsb and then say that isn't fast. This isn't for every programmer and it certainly isn't for every time you need to move a few bytes. The DMA chip is a four channel device. Channel 0 is reserved for refresh of memory that requires at least 256 consecutive bytes be read some- where in memory at intervals less than about 4ms. The other three channels are available for such things as transferring information to and from the disk drives or the ports. Interesting trivia so far, but not very useful in moving memory around. It gets worse. The 8259 DMA doesn't know anything about segments. It only knows a 64k universe. This is where the Page registers come in. The page registers decide which page (on 64k boundaries) the 8259 will look at for any operation. There are not, as you might guess, 4 page registers,but only 2 plus a default. If it is not channel 1 or 2 then it uses the default register programmed as channel 3. A careful reading of the data sheet of the 8259 discloses that it is capable of doing a memory to memory transfer but only between channels 0 and 1. That is why this method is a little tricky to use. In order to set up your own parameters you have to disable the timer from asking for a DMA from chan- nel 0 every x milliseconds and reconfigure the 8259 and assume the respon- sibility for doing the memory refresh. It actually sounds worse than it is. The configuring and re configuring of the 8259 doesn't take all that long, so the time is made up after only moving a few tens of bytes, and if you move at least 256 CONSECUTIVE bytes the memory refresh requirement is met for another 2 or 3 milliseconds. The page registers are taken care of by setting channels 1 and 3 to the same value. Given below is an example of a program I wrote just to test the idea. A lot of the setup is too complex to explain in this short article, but if you are interested in checking it all out you will need a data sheet on the 8259. This worked nicely on my machine and should on most compatibles just the way it is. With the not-so-compatible it may very well not. I hope this listing is well enough commented so you can figure it out and make use of it sometime. DMA SOURCE PAGE 60,132 TITLE DMA MEMORY TO MEMORY DMA EQU 0 STACK SEGMENT PUBLIC 'STACK' DB 32 DUP('STACK') STACK ENDS DATA SEGMENT PUBLIC 'DATA' SOURCE DW 08000H TARGET DW 09000H NUMBER DW 800H INCDEC DB 0 PAGER DB 0BH ;PAGE (O TO F) FILL DB 0 ;2 IF A FILL OP DATA ENDS ASSUME CS:CODE,DS:DATA,ES:DATA CODE SEGMENT PUBLIC 'CODE' START: MOV AX,DATA MOV DS,AX MOV AX,0B800H MOV ES,AX PAGE: MOV AL,PAGER ;PAGE TO OPERATE IN OUT 83H,AL UNDMA: OUT 0DH,AL ;MASTER RESET OF DMA MOV DX,03D8H MOV AL,1 OUT DX,AL MOV AX,SOURCE ;WHERE IS IT COMING FROM OUT 0H,AL MOV AL,AH OUT 0H,AL MOV AX,TARGET ;WHERE TO PUT IT OUT 2H,AL MOV AL,AH OUT 2H,AL MOV AX,NUMBER ;HOW MANY OUT 3H,AL MOV AL,AH OUT 3H,AL MOV AL,009H ;ENABLE M TO M,COMPRESSED OR AL,FILL ;WILL BE 2 IF FILL OP OUT 8H,AL MOV AL,088H ;BLOCK MODE, INC, READ OR AL,INCDEC ;WILL BE 20H IF DEC OUT 0BH,AL MOV AL,85H ;BLOCK MODE, INC, WRITE OR AL,INCDEC ;WILL BE 20H IF DEC OUT 0BH,AL MOV AL,4 ;THIS IS THE REQUEST OUT 9,AL ;DO IT MOV AL,9 OUT DX,AL RESET: OUT 0DH,AL ;THIS IS A MASTER RESET OUT 0CH,AL ;RESET F/L F/F MOV AL,01 OUT 0,AL OUT 0,AL REINIT: MOV AL,0 OUT 83H,AL ;MOVES REFRESH TO BASE PAGE MOV AL,0FFH OUT 1,AL PUSH AX OUT 1,AL OUT 0BH,AL INC AL ;MODE CHAN3 OUT 0BH,AL PUSH AX POP AX POP AX POP AX MOV AH,4CH INT 21H CODE ENDS END START
ms.dos.267 kriss,
Da li neko zna gde se nalazi (sad ću da lupim) bit koji kontroliše blink efekat na ekranu? Izgleda da mi je to malo čudo (re)setovano, tako da tekst koji treba da blinkuje ne blinkuje, nego se vidi inverzno. P.S. Zaboravih, probao sam INT 10h, funkcija 10h, AL=3 (tad bi trebao da se pojavi blink, ali pored piše i EGA, tako da je na VGA ostalo bez efekta :( ).
ms.dos.268 peca.st,
!-> Da li neko zna gde se nalazi (sad ću da lupim) bit koji kontroliše !-> blink efekat na ekranu? Izgleda da mi je to malo čudo !-> (re)setovano, tako da tekst koji treba da blinkuje ne blinkuje, !-> nego se vidi inverzno. Pa za svaki znak na ekranu imaš dva bajta. Jedan je atribut a drugi je ascii kod. Prva četiri bita atributa su boja znaka, sledeća tri boja pozadine (znači imaš 8 boja za pozadinu, a ne 16) i zadnji je onaj koji tebi treba - blink. Postoji način da se ovaj bit ukine pa da onda imaš svih 16 boja za pozadinu. Video memorija za tekst mod počinje od b800:0000. Imaš 80*25*2 = 4000 bajtova, prvo ide ascii kod pa onda atribut. Ovo je iz glave, nadam se da nisam nešto pobrkao. :) Peđa.
ms.dos.269 kriss,
˙˙ Pa za svaki znak na ekranu imaš dva bajta. Jedan je atribut ˙˙ a drugi je ascii kod. Prva četiri bita atributa su boja znaka, Jest. ˙˙ sledeća tri boja pozadine (znači imaš 8 boja za pozadinu, a ne ˙˙ 16) i zadnji je onaj koji tebi treba - blink. Postoji način da ˙˙ se ovaj bit ukine pa da onda imaš svih 16 boja za pozadinu. Au. Znači moram da protrčim kroz celu video-memoriju i da setujem svaki bit posebno. :( Mada, ipak mislim da neću ništa da uradim. Od kako sam instalirao 4dos, imam dotičnu pojavu. :( ˙˙ Video memorija za tekst mod počinje od b800:0000. Imaš 80*25*2 ˙˙ = 4000 bajtova, prvo ide ascii kod pa onda atribut. OK sad će da napišem nešto što preleće preko i setuje sve živo, pa ću da javim da li radi. ;) ˙˙ Ovo je iz glave, nadam se da nisam nešto pobrkao. :) Jao ako jesi :)))) P.S. Probao - ne radi. Evo ga source, zanima me da li je greška tu ili kod nekog drugog. :(( .model tiny .code org 0100h start: xor bx,bx xor si,si mov ax,0b800h mov ds,ax mov cx,2000 lp: inc si ; znači preskačem ascii, setujem ; zadnji bit atributa. or byte ptr ds:[bx + si],080h inc si ; loop lp mov ah,04ch int 21h end start
ms.dos.270 dzakic,
> Au. Znači moram da protrčim kroz celu video-memoriju i da setujem > svaki bit posebno. :( Mada, ipak mislim da neću ništa da uradim. > Od kako sam instalirao 4dos, imam dotičnu pojavu. :( Tek sad pročitah poruku... Ono što tebi treba je "BrightBG = No" u 4dos.ini-ju. Mislim da je to default, ali ti je neko za odgovor podmetnuo Yes :)