[ stefanpn @ 13.03.2008. 22:38 ] @
Zna li neko kako da procitam serijski broj hard drajva ili neku drugu oznaku hardware-a (Procesora, Maticne Ploce, i sl.) koristeci FreeBASIC DOS Compiler. Nasao sam primere za C(Win primer), Visual Basic i FreePASCAL(DOS primer), ali nigde nisam pronasao QBasic ili FreeBASIC. Pa ako neko moze da mi pomogne bilo bi lepo...

Evo dajem vam primere za C i FreePASCAL, VB primer koristi WIN32 API pa mislim da mi to ne moze pomoci...

Unapred hvala...
[ Eurora3D Team @ 14.03.2008. 01:19 ] @
Cisto na prvi pogled ... Ovo je kod za Device Drivere (ntddk == NT Driver Development Kit) sto znaci da izvrsivi fajlovi kompajlovani iz ovog koda predstavljaju real mode drivere koji rade na povlascenom (niskom) nivou OS-a. Ovaj kod nije lako napisati a i za kompajlovanje (c++) treba da se ima DDK.
Ako nadjem nesto sto bi moglo da se prebaci u FreeBasic poslacu ovde ...
Mozda jos neko nadje nesto ... bilo je na sajtu

Bolje da si postavio VB6 primer & Video sam u FreeBasic primerima da ima primer za driver ali nisam uspeo da ga iskompajlujem
[ stefanpn @ 14.03.2008. 02:01 ] @
Jedini problem u svemu tome predstavlja to sto ce program morati da radi u DOS-u.

Ovo radi samo pod DOS-om, ne u Windows modu!!!

Tako da jedino sto mi sada pada na pamet je da sa IN naredbom zatrazim od kontrolera stanje na port-u $01F7 pa kada bude 58 t.j. spreman, da procitam 2^8 puta sa adrese $01F0 i da taj niz pretvorim u string. I onda mi je mid$(Data,27,46) = model a mid$(Data,10,19) = serijski broj. Samo ne znam sta ce se tad desavati ako je SCSI disk... :( Verovatno nikad nece doci 58.

A sto se tice citanja parametara biosa, evo kratkog koda, koji ispisuje datum iz ROM-a:

QBasic:

Code:

DEF SEG = &HF000
PRINT "Datum: ";
FOR I = 0 TO 7
PRINT CHR$(PEEK(&HFFF5 + I));
NEXT
PRINT
DEF SEG
SYSTEM


S tim da pod Windows-om ispisuje neke, kako bih rekao, SPAGETE... Sto znaci da se ta informacija kada je windows podignut ne nalazi tu...

Ako neko ima neko bolje resenje neka se javi, svaka pomoc je dobrodosla!

Nisam postavio VB primer, jer svi primeri koriste api pa sam smatrao da nam nece mnogo pomoci

Edit: A sad se setih, postoji jedan mali Dos program(~1Kb) koji cita parametre BIOS-a, e to bi mi zavrsilo posao nego ako bi mogao neko da ko zna assambler da ga malo prepravi, bar da ne trazi da se pritisne dugme, po izlazu. Tako bi zavrsio posao "NA GURKU" ali bi zavrsio... BTW. Program moze da prepozna samo AMI, AWARD i PC-BIOS ili kaze da nije prepoznao...


[Ovu poruku je menjao stefanpn dana 14.03.2008. u 03:14 GMT+1]
[ Eurora3D Team @ 14.03.2008. 02:23 ] @
Sto ne pogledas DOS interrupt rutine npr na http://spike.scu.edu.au/~barry/interrupts.html
To je tad bio API za OS ... trebalo bi da ima nesto o tome.
U DOS - u su registi 16 bitni me stavljaj npr. eah nego ah ili al
Evo ti primer poziva funkcije iz nekog asm koda za DOS
Parametri se stavljaju u oderdjene registre i onda se poziva INT 21h
Code:

        mov ah, 40h                    ; the DOS function number.
        mov bx, 1                      ; the screen handle.
        mov cx, 11                     ; the length of the text to display.
        mov dx, offset Greeting        ; the address of the text.
        int 21h                        ; get DOS to execute the function.
        mov ax, 4Ch                    ; the TERMINATE process function.
        int 21h                        ; call DOS again to EXIT.

U FreeBasicu sintaksa za inline assembler je
Code:

Asm
        push [Nesto]       'pointeri su u [] zagradi
        pop NestoDrugo
End Asm

Ince ja sam jednom postavio VB 6 kod za citanje podataka o BIOSU itd koji koristi neku komponentu windowsa ali ne mogu da nadjem.
A sto bas DOS pa niko vise ne koristi taj OS ili ti treba za Linux ?
[ stefanpn @ 14.03.2008. 02:40 ] @
Program mora da radi na DOS-u jer je takav dogovor bio(a kad vec to radim napravicu da radi i na linux-u). A i FreeDos zauzime 1.38 MB + Moj program 7-8Mb i sto je najbolje to radi i na 386...

E sad samo jos sebe da zastitim od neovlascenog kopiranja.

Nemam ASM od ovog programcica, to i jeste problem.

Ali procackacu jos malo.