In this project I was able to develop a simple OS which have kernel and a Shell by configuring a given simple OS. You can find that preliminary OS by reading this article,
http://asiri.rathnayake.org/articles/hacking-josh-operating-system-tutorial/
I implemented a new command for my operating system which prints hardware information about the computer.To achieve that functionality after some research work over the internet and experts of this area I found several waysto get hardware information using x86 Assembly language.
They were BIOS interrupt calls, CPUID instruction, BIOS data area, SMBIOS – Collection of tables which can provides you hardware information. In these methods I choose interrupt calls, CPUID instruction to display hardware information of the system.
In my function which I add to existing kernel it can show Processor Brand, Processor Type, Ram Size, system date and time, check the availability of serial ports, floppy drives, printers, co-processors and mouse.
Following articles will explain the steps which I took to develop this operating system, It will explain step by step to develop a OS like that.
http://www.insightforfuture.blogspot.com/2010/11/useful-techniques-in-assembly.html
http://www.insightforfuture.blogspot.com/2010/11/x86-assembly-if-else-control-structures.html
http://www.insightforfuture.blogspot.com/2010/11/bios-interrupt-calls-to-get-hardware.html
http://www.insightforfuture.blogspot.com/2010/11/find-hardware-infodo-you-know-how.html
http://www.insightforfuture.blogspot.com/2010/11/smbios-gives-hardware-specifications.html
Next I will Explain the source code of this new functionality,
This is the shell command which is responsible for run the hardware info;
This is the code where the original functionality lies, These assembly code are responsible to retrieve hardware info by using interrupt calls.
;;;;;;;;;;;;;;Start of Hardware Info;;;;;;;;;;;;;;
hardware_info:
mov si,ent
call _disp_str
mov si,hwinfo
call _disp_str
mov si,ent
call _disp_str
;;;;;;;;;;;;Processor Info Display;;;;;;;;;;;;;;;;
mov si,pinfo
call _disp_str
mov eax,0
cpuid
mov [vendor_id],ebx ;getting the cpu brand from ebx,ecx,edx
mov [vendor_id+4],edx
mov [vendor_id+8],ecx
mov si,processor
call _disp_str
mov si,vendor_id
call _disp_str
mov si,ent
call _disp_str
mov si,processort
call _disp_str
mov eax,80000002h
cpuid
mov [processor_type],eax ;getting the cpu type string brand from ebx,ecx,edx,eax
mov [processor_type+4],ebx
mov [processor_type+8],ecx
mov [processor_type+12],edx
mov si,processor_type
call _disp_str
mov eax,80000003h
cpuid
mov [processor_type1],eax
mov [processor_type1+4],ebx
mov [processor_type1+8],ecx
mov [processor_type1+12],edx
mov si,processor_type1
call _disp_str
mov eax,80000004h
cpuid
mov [processor_type2],eax
mov [processor_type2+4],ebx
mov [processor_type2+8],ecx
mov [processor_type2+12],edx
mov si,processor_type2
call _disp_str
mov si,ent
call _disp_str
;;;;;;;;;;;;;;;RAM Info Display;;;;;;;;;;;;;;;;;;
mov si,rinfo
call _disp_str
mov si,ram
call _disp_str
MOV AX, 0xE801
INT 0x15 ;calling the intruupt to get ram size in 64kb blocks
call hex2dec
mov si,ent
call _disp_str
;;;;;;;;;;;;;;;Other Info Display;;;;;;;;;;;;;;;;;
int 11h ;calling the intruupt to get pheriperal device info
mov cx,ax
mov si,oinfo
call _disp_str
;;;;;;;;;;;;;;Check for Floppy Drive;;;;;;;;;;;;;;
and ax,1h
cmp ax,0h
jz ifblock0
jmp elseblock0
ifblock0:
mov si, floppyNotPresent
call _disp_str
jmp end0
elseblock0:
mov si, floppyPresent
call _disp_str
end0:
mov ax,cx
;;;;;;;;;;;;;;Check for Math Co-Processor;;;;;;;;
and ax,2h
cmp ax,0h
jz ifblock1
jmp elseblock1
ifblock1:
mov si, mathaNotPresent
call _disp_str
jmp end1
elseblock1:
mov si, mathaPresent
call _disp_str
end1:
mov ax,cx
;;;;;;;;;;;;;Check for Joystick;;;;;;;;;;;;;;;;;;
and ax,800h
cmp ax,0h
jz ifblock2
jmp elseblock2
ifblock2:
mov si, joyNotPresent
call _disp_str
jmp end2
elseblock2:
mov si, joyPresent
call _disp_str
end2:
mov ax,cx
;;;;;;;;;;;;;Check for Serial Printer;;;;;;;;;;;;;
and ax,1000h
cmp ax,0h
jz ifblock3
jmp elseblock3
ifblock3:
mov si, printerNotPresent
call _disp_str
jmp end3
elseblock3:
mov si, printerPresent
call _disp_str
end3:
mov ax,cx
;;;;;;;;;;;;Check for Serial Ports;;;;;;;;;;;;;;;;
and ax,700h
cmp ax,0h
jz ifblock4_s0
ifblock4_s0:
mov si, s0
call _disp_str
jmp end4
cmp ax,100h
jz ifblock4_s1
ifblock4_s1:
mov si, s1
call _disp_str
jmp end4
cmp ax,200h
jz ifblock4_s2
ifblock4_s2:
mov si, s2
call _disp_str
jmp end4
cmp ax,300h
jz ifblock4_s3
ifblock4_s3:
mov si, s3
call _disp_str
jmp end4
cmp ax,400h
jz ifblock4_s4
ifblock4_s4:
mov si, s4
call _disp_str
jmp end4
cmp ax,500h
jz ifblock4_s5
ifblock4_s5:
mov si, s5
call _disp_str
jmp end4
cmp ax,600h
jz ifblock4_s6
ifblock4_s6:
mov si, s6
call _disp_str
jmp end4
cmp ax,700h
jz ifblock4_s7
ifblock4_s7:
mov si, s7
call _disp_str
jmp end4
end4:
mov ax,cx
;;;;;;;;;;;;;;Check for Mouse;;;;;;;;;;;;;;;;
int 33h ; call interrupt 33h function 0
cmp ax,0ffffh ; compare AX and FFFFh (installed)
jz endmouse ; it is? Jump to the end!
mov si, nmouse
call _disp_str
jmp end5
endmouse:
mov si, mouse
call _disp_str
end5:
;;;;;;;;;;;;;;Display Date and Time;;;;;;;;;;;;
call os_get_date_string
mov si,date_time
call _disp_str
mov si, BX
call _disp_str
call os_get_time_string
mov si, space
call _disp_str
mov si, BX
call _disp_str
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
jmp else
If you want further info about this please contact me.
http://asiri.rathnayake.org/articles/hacking-josh-operating-system-tutorial/
I implemented a new command for my operating system which prints hardware information about the computer.To achieve that functionality after some research work over the internet and experts of this area I found several waysto get hardware information using x86 Assembly language.
They were BIOS interrupt calls, CPUID instruction, BIOS data area, SMBIOS – Collection of tables which can provides you hardware information. In these methods I choose interrupt calls, CPUID instruction to display hardware information of the system.
In my function which I add to existing kernel it can show Processor Brand, Processor Type, Ram Size, system date and time, check the availability of serial ports, floppy drives, printers, co-processors and mouse.
Following articles will explain the steps which I took to develop this operating system, It will explain step by step to develop a OS like that.
http://www.insightforfuture.blogspot.com/2010/11/useful-techniques-in-assembly.html
http://www.insightforfuture.blogspot.com/2010/11/x86-assembly-if-else-control-structures.html
http://www.insightforfuture.blogspot.com/2010/11/bios-interrupt-calls-to-get-hardware.html
http://www.insightforfuture.blogspot.com/2010/11/find-hardware-infodo-you-know-how.html
http://www.insightforfuture.blogspot.com/2010/11/smbios-gives-hardware-specifications.html
Next I will Explain the source code of this new functionality,
This is the shell command which is responsible for run the hardware info;
hwi: ;;;;;;;;This is the place hardware info Procedure Starts
mov SI,strCmd0
mov DI,hw
call os_string_strincmp ;check is the entered command is HW_Info
jc hardware_info ;if it is call the hardware info function
jmp _cmd_ver ;else go to next shell command
else:
jmp _cmd_done ;;;;;;;;;End of the Hardware info call
mov SI,strCmd0
mov DI,hw
call os_string_strincmp ;check is the entered command is HW_Info
jc hardware_info ;if it is call the hardware info function
jmp _cmd_ver ;else go to next shell command
else:
jmp _cmd_done ;;;;;;;;;End of the Hardware info call
This is the code where the original functionality lies, These assembly code are responsible to retrieve hardware info by using interrupt calls.
;;;;;;;;;;;;;;Start of Hardware Info;;;;;;;;;;;;;;
hardware_info:
mov si,ent
call _disp_str
mov si,hwinfo
call _disp_str
mov si,ent
call _disp_str
;;;;;;;;;;;;Processor Info Display;;;;;;;;;;;;;;;;
mov si,pinfo
call _disp_str
mov eax,0
cpuid
mov [vendor_id],ebx ;getting the cpu brand from ebx,ecx,edx
mov [vendor_id+4],edx
mov [vendor_id+8],ecx
mov si,processor
call _disp_str
mov si,vendor_id
call _disp_str
mov si,ent
call _disp_str
mov si,processort
call _disp_str
mov eax,80000002h
cpuid
mov [processor_type],eax ;getting the cpu type string brand from ebx,ecx,edx,eax
mov [processor_type+4],ebx
mov [processor_type+8],ecx
mov [processor_type+12],edx
mov si,processor_type
call _disp_str
mov eax,80000003h
cpuid
mov [processor_type1],eax
mov [processor_type1+4],ebx
mov [processor_type1+8],ecx
mov [processor_type1+12],edx
mov si,processor_type1
call _disp_str
mov eax,80000004h
cpuid
mov [processor_type2],eax
mov [processor_type2+4],ebx
mov [processor_type2+8],ecx
mov [processor_type2+12],edx
mov si,processor_type2
call _disp_str
mov si,ent
call _disp_str
;;;;;;;;;;;;;;;RAM Info Display;;;;;;;;;;;;;;;;;;
mov si,rinfo
call _disp_str
mov si,ram
call _disp_str
MOV AX, 0xE801
INT 0x15 ;calling the intruupt to get ram size in 64kb blocks
call hex2dec
mov si,ent
call _disp_str
;;;;;;;;;;;;;;;Other Info Display;;;;;;;;;;;;;;;;;
int 11h ;calling the intruupt to get pheriperal device info
mov cx,ax
mov si,oinfo
call _disp_str
;;;;;;;;;;;;;;Check for Floppy Drive;;;;;;;;;;;;;;
and ax,1h
cmp ax,0h
jz ifblock0
jmp elseblock0
ifblock0:
mov si, floppyNotPresent
call _disp_str
jmp end0
elseblock0:
mov si, floppyPresent
call _disp_str
end0:
mov ax,cx
;;;;;;;;;;;;;;Check for Math Co-Processor;;;;;;;;
and ax,2h
cmp ax,0h
jz ifblock1
jmp elseblock1
ifblock1:
mov si, mathaNotPresent
call _disp_str
jmp end1
elseblock1:
mov si, mathaPresent
call _disp_str
end1:
mov ax,cx
;;;;;;;;;;;;;Check for Joystick;;;;;;;;;;;;;;;;;;
and ax,800h
cmp ax,0h
jz ifblock2
jmp elseblock2
ifblock2:
mov si, joyNotPresent
call _disp_str
jmp end2
elseblock2:
mov si, joyPresent
call _disp_str
end2:
mov ax,cx
;;;;;;;;;;;;;Check for Serial Printer;;;;;;;;;;;;;
and ax,1000h
cmp ax,0h
jz ifblock3
jmp elseblock3
ifblock3:
mov si, printerNotPresent
call _disp_str
jmp end3
elseblock3:
mov si, printerPresent
call _disp_str
end3:
mov ax,cx
;;;;;;;;;;;;Check for Serial Ports;;;;;;;;;;;;;;;;
and ax,700h
cmp ax,0h
jz ifblock4_s0
ifblock4_s0:
mov si, s0
call _disp_str
jmp end4
cmp ax,100h
jz ifblock4_s1
ifblock4_s1:
mov si, s1
call _disp_str
jmp end4
cmp ax,200h
jz ifblock4_s2
ifblock4_s2:
mov si, s2
call _disp_str
jmp end4
cmp ax,300h
jz ifblock4_s3
ifblock4_s3:
mov si, s3
call _disp_str
jmp end4
cmp ax,400h
jz ifblock4_s4
ifblock4_s4:
mov si, s4
call _disp_str
jmp end4
cmp ax,500h
jz ifblock4_s5
ifblock4_s5:
mov si, s5
call _disp_str
jmp end4
cmp ax,600h
jz ifblock4_s6
ifblock4_s6:
mov si, s6
call _disp_str
jmp end4
cmp ax,700h
jz ifblock4_s7
ifblock4_s7:
mov si, s7
call _disp_str
jmp end4
end4:
mov ax,cx
;;;;;;;;;;;;;;Check for Mouse;;;;;;;;;;;;;;;;
int 33h ; call interrupt 33h function 0
cmp ax,0ffffh ; compare AX and FFFFh (installed)
jz endmouse ; it is? Jump to the end!
mov si, nmouse
call _disp_str
jmp end5
endmouse:
mov si, mouse
call _disp_str
end5:
;;;;;;;;;;;;;;Display Date and Time;;;;;;;;;;;;
call os_get_date_string
mov si,date_time
call _disp_str
mov si, BX
call _disp_str
call os_get_time_string
mov si, space
call _disp_str
mov si, BX
call _disp_str
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
jmp else
If you want further info about this please contact me.
Nice blog Get more on Hacking Course Online
ReplyDeleteThis comment has been removed by the author.
ReplyDeletecami avizesi - no deposit bonus forex 2021 - takipçi satın al - takipçi satın al - takipçi satın al - takipcialdim.com/tiktok-takipci-satin-al/ - instagram beğeni satın al - instagram beğeni satın al - google haritalara yer ekleme - btcturk - tiktok izlenme satın al - sms onay - youtube izlenme satın al - google haritalara yer ekleme - no deposit bonus forex 2021 - tiktok jeton hilesi - tiktok beğeni satın al - binance - takipçi satın al - uc satın al - finanspedia.com - sms onay - sms onay - tiktok takipçi satın al - tiktok beğeni satın al - twitter takipçi satın al - trend topic satın al - youtube abone satın al - instagram beğeni satın al - tiktok beğeni satın al - twitter takipçi satın al - trend topic satın al - youtube abone satın al - instagram beğeni satın al - tiktok takipçi satın al - tiktok beğeni satın al - twitter takipçi satın al - trend topic satın al - youtube abone satın al - instagram beğeni satın al - perde modelleri - instagram takipçi satın al - takipçi satın al - instagram takipçi satın al - betboo
ReplyDeleteperde modelleri
ReplyDeletesms onay
turkcell mobil ödeme bozdurma
nft nasıl alınır
ankara evden eve nakliyat
TRAFİK SİGORTASI
dedektör
website.kurma
aşk kitapları
Good content. You write beautiful things.
ReplyDeletemrbahis
mrbahis
hacklink
korsan taksi
vbet
vbet
hacklink
taksi
sportsbet
hatay
ReplyDeletekars
mardin
samsun
urfa
D33
دهانات خارجية
ReplyDeleteدهانات