PCPROG.5

05 Jan 1995 - 02 Oct 1995

Topics

  1. algoritmi (106)
  2. comment (2)
  3. ms.dos (27)
  4. windows (332)
  5. asembler (203)
  6. basic (228)
  7. jezici (126)
  8. pascal (1085)
  9. cccc (546)
  10. cpp (117)
  11. clipper (1048)
  12. baze.podataka (194)
  13. fox (231)
  14. cavo (192)
  15. razno (593)

Messages - ms.dos

ms.dos.1 pedjak,
Da li vas je ikada zanimalo da li je pri startovanju vašeg programa izvršena redirekcija ulaza ili izlaza..? Evo načina da se to sazna: Function 44h I/O Control for Devices (IOCTL) Get or Set Device Information entry AH 44h AL 00h Get Device Information (from DX) BX file or device handle return DX device info If bit 7 set: (character device) bit 0: console input device 1: console output device 2: NUL device 3: CLOCK$ device 4: device is special 5: binary (raw) mode 6: not EOF 12: network device (DOS 3.x) 14: can process IOCTL control strings (func 2-5) If bit 7 clear: (file) bits 0-5: block device number 6: file has not been written 12: Network device (DOS 3.x) 15: file is remote (DOS 3.x) ================== Dakle, šta treba uraditi..? AX = 4400h BX = 0/1 ( 0 - input, 1 - output ) INT 21h Ukoliko je sedmi bit setovan, nema redirekcije. Evo, konačne implementacije u Paskalu: function redirected(handle:word):boolean;assembler; asm mov ax,$4400 mov bx,handle int $21 jc čerror and dl,$80 jz čerror xor al,al jmp čend čerror: mov al,1 čend: end;
ms.dos.2 mmitrovic,
Ů█▀█Ţ function redirected(handle:word):boolean;assembler; Ů█▀█Ţ asm Imaš propust u implementaciji. U slučaju greške funkcija vraća true, tj informaciju da je I/O ide kroz fajl, što je nepouzdano. Vraćanje false vrednosti bi isto bilo pogrešno, ali ipak sa manjom štetom. Ionako se greška javlja samo pri navođenju nepostojećeg handle-a, pa bi vraćanje true vrednosti samo pogoršalo stvar i dovelo do nove, veće greške (kada bi recimo, korisnik posle dobijanja potvrdne informacije pokušao da zatvori nepostojeći fajl, ili kad program zbog ovoga počne da ispisuje tekst u standardnom ascii-u umesto u reprogramiranom proširenom set-u. Prošireni set lepo izgleda ne ekranu (pr. Norton), ali kad se spusti u fajl posle se dobiju kuke i kvake). Izvinjavam se što sam ovako opširan, ali sve je bilo u najboljoj nameri. Moj savet: (posle int 21h) mov al,0 ; nikako xor al,al - poremetice flagove jc čEnd and dl,80h jnz čEnd inc al čEnd: Ako će se funkcija koristiti za handlove 0 i 1, treba da se izbaci linija jc čError, pošto u tom slučaju do greške ne može nikako doći. Tada i mov al,0 može da pređe u xor al,al.
ms.dos.3 pedjak,
> i kvake). Izvinjavam se što sam ovako opširan, ali sve je bilo u > najboljoj nameri. > Ako će se funkcija koristiti za handlove 0 i 1, treba da se > izbaci linija jc čError, pošto u tom slučaju do greške ne može > nikako doći. Tada i mov al,0 može da pređe u xor al,al. Da sad ne citiram sve ono iznad... Primedbe stoje, ali stoji i tvoj zaključak. Rutina je namenjena isključivo za hedlove 0 i 1, tako da do greške ne može doći. Rutinu sam sklepao na brzaka :) tako da ni sam ne znam zašto sam stavio ispitivanje greške :) Hvala ti :)
ms.dos.4 szeman,
>> Da li vas je ikada zanimalo da li je pri startovanju vašeg programa >> izvršena redirekcija ulaza ili izlaza..? Evo načina da se to sazna: Na koji način može da se sazna ime datoteke(a) za redirekciju ?
ms.dos.5 mibak,
Nije valjda da niko ne može da mi pomogne da na LX-300 ESC sekvencom promenim kodnu stranu?
ms.dos.6 djelovic,
Da li postoji neki način da se na Super VGa kartama dobije 132 znaka u redu? Naravno, u tekst modu.
ms.dos.7 omega,
Ţ Da li postoji neki nacin da se na Super VGa kartama dobije 132 znaka u ah=0, al=broj_moda, int 10h. Ako je VESA kompatibilna, nemaš nikakvih problema: 109h 132x25 text 10Ah 132x43 text 10Bh 132x50 text 10Ch 132x60 text Ako nije, pogledaj VGADOC.
ms.dos.8 iritel,
Da li neko ima diskete koje se dobijaju uz knjigu PC INTERN od Michael Tischer-a!!!! Javite se i na e-mail: IRITEL
ms.dos.9 maksa,
>> ah=0, al=broj_moda, int 10h. >> Ako je VESA kompatibilna, nemaš nikakvih problema: >> 109h 132x25 text >> 10Ah 132x43 text Ok, ovo radi. Kako sad da objasnim DOS-u da imam više od 25 redova na ekranu ? Konkretno, kada ovako (programčetom) promenim text mod u, recimo, 132x50, dir (iz 4dos-a) mi izlista 25 fajlova kako treba, a ostatak ispuca u jednom redu. Ne znam da l' sam baš jasan ... Kako se ovo rešava ?
ms.dos.10 omega,
Ţ>> ah=0, al=broj_moda, int 10h. Ţ>> 10Ah 132x43 text Ţ Ţ Ok, ovo radi. Iskreno, nije mi jasno kako si uspeo da u AL uguras 109h ;) Bas probah ovo dole i sve je ok pod 4DOS-om. Izgleda da nisi bio dovoljno jasan. .model tiny .code org 100h start: mov ax, 4f02h ; setuj mod (VESA BIOS) mov bx, 010ah ; broj moda int 10h int 20h end start
ms.dos.11 vitez.koja,
#=> recimo, 132x50, dir (iz 4dos-a) mi izlista 25 fajlova kako treba, #=> a ostatak ispuca u jednom redu. Ne znam da l' sam baš jasan ... #=> Kako se ovo rešava ? Poslednji put sam ovo rešio stavljanjem ansi drajvera u config.sys. :) Ozbiljno, bez obzira na smajli. sk
ms.dos.12 maksa,
>> Iskreno, nije mi jasno kako si uspeo da u AL uguras 109h ;) Prav' da ti kažem, to nisam ni pokušao. ;) ... mov ah, 0 mov ax, 55h int 10h ... Ovo mi je komad inline asm-a u cpp-u, i stvar radi super, tj. menjam modove kako hoću. Jedino što mi se ekran u DOS-u ponaša kao da još uvek ima 25 redova, u koji god ga mod bacim. PS A ovo tvoje mi zakucava kompjuter ... System Halted. ;)
ms.dos.13 maksa,
>> Poslednji put sam ovo rešio stavljanjem ansi drajvera u >> config.sys. :) Ozbiljno, bez obzira na smajli. Neće. :(
ms.dos.14 omega,
Ţ Jedino sto mi se ekran u DOS-u ponasa kao da jos uvek ima 25 redova Jesi li probao na clean boot? Ţ PS A ovo tvoje mi zakucava kompjuter ... System Halted. ;) Verovatno nisi linkovao sa tlink /t :) Btw, koju imas karticu?
ms.dos.15 mmitrovic,
::::: Ovo mi je komad inline asm-a u cpp-u, i stvar radi super, tj. ::::: menjam modove kako hoću. Jedino što mi se ekran u DOS-u ponaša ::::: kao da još uvek ima 25 redova, u koji god ga mod bacim. Probaj sledeće: (jes da je teška prljavština, al probaj) mov dx,3d4h mov ax, (bpl<<8)+6 out dx,ax dec ax dec ax out dx,ax ako to ne radi probaj da dodaš na kraju i sledeće: mov ax, (bcr<<8)+1; out dx,ax ne znam da li je ovo zadnje potrebno jer na mom monitoru ne mogu da izvučem te egzotične modove. Zato javi šta si uradio. I naravno: bpl je broj linija u modu, a bcr je broj karaktera po redu. Umesto ovih formula ti izračunaj vrednosti (pošto su sve konstante) i zameni formule tim vrednostima.
ms.dos.16 mmitrovic,
::::: Probaj sledeće: (jes da je teška prljavština, al probaj) makso, proba li ti ovo? ne javljaš se.
ms.dos.17 dragulj,
// >> Poslednji put sam ovo rešio stavljanjem ansi drajvera u // >> config.sys. :) Ozbiljno, bez obzira na smajli. // // Neće. :( žovek je u pravu da treba ANSI drajver, ali koji? B)) DOS-ov ANSI.SYS ne podržava 132x50. To ćeš morati sa izvedeš sa drajverom koji valjda imaš uz svoju video kartu. Kod mene je to TANSI.SYS (karta je TVGA 9000), ali koristim NNANSI.SYS jer je MNOGO brži ispis. Ovo bi moralo da ti pomogne, pogotovo što uz NNANSI (ima ga na Sezamu) imaš i sors pa ugradi odgovarajuće rutine za prebacivanje moda u svoj program.
ms.dos.18 vojas,
> Ok, ovo radi. Kako sad da objasnim DOS-u da imam više od 25 redova > na ekranu ? Konkretno, kada ovako (programčetom) promenim text mod u, > recimo, 132x50, dir (iz 4dos-a) mi izlista 25 fajlova kako treba, a DOS, u principu, uvek zna koliko redova imaš. Međutim, ovde ne zna kako da tim redovima pristupi jer to nije video mod 3, na koji je navikao. Ne znam kako bi mogao da rešiš to, pošto mi ne radi 123x60 kako valja, ali probaj da slažeš DOS da si u modu 3 tako što ćeš upisati 3 na adresu 0:449h. Heechee of the Ancients
ms.dos.19 bulaja,
**** new file **** MSDOS - R:\INFOPROG ---------------------- inter46a zip 362000 MSDOS Interrupt List 46: podaci o svim interaptima #1/6 inter46b zip 360175 MSDOS Interrupt List 46: podaci o svim interaptima #2/6 inter46c zip 361279 MSDOS Interrupt List 46: podaci o svim interaptima #3/6 inter46d zip 101055 MSDOS Interrupt List 46: podaci o svim interaptima #4/6 inter46e zip 338581 MSDOS Interrupt List 46: podaci o svim interaptima #5/6 inter46f zip 164513 MSDOS Interrupt List 46: podaci o svim interaptima #6/6 6 file(s) 1648 kb Biće sutra (ili u utorak:) i na Sezam PRO-BA.
ms.dos.20 rmitrovic,
UPOMOC !!!! Potreban mi je virtuelni disk identican disku b: (1.44) Identican znaci da ima isti broj sektora, velicina sektora, max. #entries u root-u, FAT.... Virtuelan znaci da bi egzistirao u memoriji ili (jos bolje) kao fajl na disku (znaci fajl velicine 1.44mb) Naredba COPY bi kopirala fajlove na njega, i (normalno) vodila racuna o FATU t.j ponasala se isto kao da se radi o disketi. Kad bi ovakav virtuelni disk postojao u obliku fajla (velicine 1.44mb) na hardu, njegovim kopiranjem (ne obicnim, vec kao slike diskete) na disketu bi trebalo da se dobije normalna upotrebljiva disketa puna fajlova... Probao sam sa RAM diskom (RAMDRIVE.SYS) ali ne mogu da 'ubodem' vrednosti (velicina diska,sektora....).Mozda postoji program koji ovo radi??
ms.dos.21 dvesic,
>> Potreban mi je virtuelni disk identican disku b: (1.44) >> Identican znaci da ima isti broj sektora, velicina sektora, >> max. #entries u root-u, FAT.... R:\system\srdsk205.zip
ms.dos.23 jasicp,
Da li Win95 i OS/2 imaju ekonomicniji rad sa prostorom na disku ? Evo sta se dogadja sa diskom od 1GB: Na 200MB instaliranog softvera, ode 300MB prostora na disku :(. To je zbog LBA moda (32kb minimum zauzeto od _svakog_ fajla), pa je slack prakticno ovde 30% :((. Da li OS/2 3.0 ima bolji/ekonomicniji rad sa prostorom na disku ? Mislim da u toku instalacije on radi konverziju DOS diska u HPFS, dakle ide i na DOS disk,(mislim ?) pa da vidimo zauzet prostor.
ms.dos.24 wizard,
> Da li Win95 i OS/2 imaju ekonomicniji rad sa prostorom na disku ? Evo > sta se dogadja sa diskom od 1GB: Win95 koristi u osnovi isti onaj fajl sistem koji je projektovan za jednostrane diskete od 160K pa su zato ti problemi. Pod OS/2, ako instaliraš HPFS inicijalna veličina zauzeća na hardu za svaki fajl je 1K i raste u koracima od 512 bajta. Dakle nema tako velikih gubitaka. Te veličine su konstatne sve do maksimalne veličine particije koja je bilao dovoljno velika da ne pamtim broj... S druge strane, HPFS potroši "for system use" (najviše za B-tree indeks koji se koristi za brz pristup fajlovima) nekih 3% veličine particije, ali je ta veličina konstantna i ne zavisi od popunjenosti diska. Verovatno je slično i sa NTFS-om. Iako dobro zamišljen i projektovan HPFS nije baš programersko remek-delo kada je o brzini reč (što i ne čudi pošto ga je radio MS ;), ali je zato bar izuzetno pouzdan i stabilan (posebno ove poslednje verzije). > Mislim da u toku instalacije on radi konverziju > DOS diska u HPFS, dakle ide i na DOS disk,(mislim ?) pa da vidimo > zauzet prostor. Na žalost OS/2 u toku instalaicije ne ume da konvertuje FAT u HPFS (čak šta više, ne ume to ni nakon instalacije ;). Postoje komercijalni programi koji to omogućavaju, ali pošto se to, u principu, radi samo jednom mislim da je bolje napraviti bekap pa posle sve vratiti. A nije ni loše preformatirati disk s vremena na vreme...
ms.dos.25 djelovic,
Tema: Detekcija CD-ROM drajva Problem: MS-DOS CD-ROM drajv ne vidi kao "removable" device, te svi pozivi ioctl funkcija i sl. zapravo javljaju pogrešnu vrednost. Rešenje: Rešenje je u funkciji IsCDROMDrive: │ static BOOL NEAR PASCAL IsCDROMDrive(WORD wDrive) │ │ /* drive: 0 - A, 1 - B, ... */ │ │ { │ BOOL f; │ │ asm { │ mov ax, 1500h /* first test for presence of MSCDEX */ │ xor bx, bx │ int 2fh │ mov ax, bx /* MSCDEX is not there if bx is zero */ │ or ax, ax /* ...so return FALSE */ │ jz no_mscdex │ mov ax, 150bh /* MSCDEX driver check API */ │ mov cx, wDrive /* ...cx is drive index */ │ int 2fh │ } │ no_mscdex: │ asm { │ mov f,ax │ } │ return f; │ }
ms.dos.26 jasicp,
> principu, radi samo jednom mislim da je bolje napraviti bekap pa > posle sve vratiti. A nije ni lose preformatirati disk s vremena Da li ti to hoces da kazes da uradim backup oko 600MB softvera? Lele, jadan li sam... Koji programi to mogu bez bekapa (a da su sigurni)?
ms.dos.27 wizard,
> Da li ti to hoces da kazes da uradim backup oko 600MB softvera? Lele, > jadan li sam... Koji programi to mogu bez bekapa (a da su sigurni)? Zaboravio sam kako se zove. A koliko se sećam ne može da konvertuje particiju na kojoj se on sam nalazi ili na kojoj se nalazi aktivan OS. Ja u principu nikad ne bih ni koristio takve programe bez prethodnog bekapa. žinjenica je da bi bilo zgodinije da sam OS pod svojom kontrolom može da izvrši konverziju, pretpostaljam da na zapadu nije uobičajena situacija da treba reinstalirati čak 600MB softvera, a da je, nasuprot tome, uobičajeno da se svi podaci ionako već nalaze na redovnom bekapu... ;)