Create Operating System with FASM! - loading photo!!

Question about which tools to use, bugs, the best way to implement a function, etc should go here. Don't forget to see if your question is answered in the wiki first! When in doubt post here.
Post Reply
snakemedia
Posts: 5
Joined: Tue Jul 28, 2009 6:31 pm

Create Operating System with FASM! - loading photo!!

Post by snakemedia »

Hi @all guys,

i want to know about loading image or pixel. like this logo. example BootLoader by Ubuntu 9.04
If my bootloader loads bitmap or image than bootloader will to prompt once loading boot.
I have been found from emu8086 assemblier for fasm from internet.

Please tell about assemblier or c script will load image / pixel from currect drive!

Important files for created operating system
Where is api include packs for unix version?
examples:
windows.h
button.h
sticky.h
and more headers and c scripts

Howto Does boot load binaries like. myboot.bin loads myos.mb or myos mb = mybinary like an example for..
How do i know about loading binary from boot???

Regards SnakeMedia

Code: Select all

package flexos
{
	import flexos.system.*;
	import flexos.apps.*;
	import mx.controls.*;
	import flash.events.*;

	public class flexos_bootloader extends boot
	{
		// That is Actionscript 3 with Flex Builder... \oOo/
	}
}
I am Fun for Flex Builder
User avatar
prajwal
Member
Member
Posts: 154
Joined: Sat Oct 23, 2004 11:00 pm
Contact:

Re: Create Operating System with FASM! - loading photo!!

Post by prajwal »

Was this mail actually composed by a naive artificially intellegent program ? :roll:
If yes, good. If No....
complexity is the core of simplicity
User avatar
Creature
Member
Member
Posts: 548
Joined: Sat Dec 27, 2008 2:34 pm
Location: Belgium

Re: Create Operating System with FASM! - loading photo!!

Post by Creature »

I honestly understand little of what you are saying, but it appears to me as you want this:
  • Make a bootloader in FASM.
  • Load some sort of bitmap as boot image from the floppy (like Ubuntu has).
  • A load of other people's code in C whilst you're coding in Assembly to get you going...
  • Find out how to load binaries from the floppy through a bootloader.
Point 1 isn't really different from making another bootloader in Assembly I believe, except the fact that the syntax might be a little different in FASM. Point 4 is the actual point of a bootloader. Both of these points can be found on the WIKI (see the huge banner above? It's there for you!).

Before attempting point 2 I would make sure your bootloader works correctly and can load binaries. If it does that, I believe (but I'm not sure) a way to display an image would be using BIOS interrupts.

I'm not sure about point 3.
When the chance of succeeding is 99%, there is still a 50% chance of that success happening.
snakemedia
Posts: 5
Joined: Tue Jul 28, 2009 6:31 pm

Re: Create Operating System with FASM! - loading photo!!

Post by snakemedia »

Hi @mosman and @Creature:

Sorry: I will make a boot in fasm and my boot shoulds to load image.

But i can not find from google because my boot loads image or picture. like this Windows Logo Ubuntu Logo or Apple Logo from BootLoader. Well, i want to try.. Can you show an example for bootloader with image/pixel and loading binary?

Thank you!

Remark:
I do not know because you are advanced coders for Operating System Coding.... xD

Regards, SnakeMedia

Code: Select all

package flexos
{
	import flexos.system.*;
	import flexos.apps.*;
	import mx.controls.*;
	import flash.events.*;

	public class flexos_bootloader extends boot
	{
		// That is Actionscript 3 with Flex Builder... \oOo/
	}
}
I am Fun for Flex Builder
User avatar
Andr3w
Member
Member
Posts: 76
Joined: Tue Jun 09, 2009 4:09 am
Location: Somewhere

Re: Create Operating System with FASM! - loading photo!!

Post by Andr3w »

snakemedia wrote:Hi @mosman and @Creature:

Sorry: I will make a boot in fasm and my boot shoulds to load image.

But i can not find from google because my boot loads image or picture. like this Windows Logo Ubuntu Logo or Apple Logo from BootLoader. Well, i want to try.. Can you show an example for bootloader with image/pixel and loading binary?
Hi snakemedia,
it's hard to understand what you're trying to say.

You can switch to VGA 0x13 video mode and draw your image pixel-by-pixel.
I think if you wanna read your image from FD you must make a second-stage bootloader.

Maybe you should read wiki or tutorials?
User avatar
Creature
Member
Member
Posts: 548
Joined: Sat Dec 27, 2008 2:34 pm
Location: Belgium

Re: Create Operating System with FASM! - loading photo!!

Post by Creature »

snakemedia wrote:Hi @mosman and @Creature:

Sorry: I will make a boot in fasm and my boot shoulds to load image.

But i can not find from google because my boot loads image or picture. like this Windows Logo Ubuntu Logo or Apple Logo from BootLoader. Well, i want to try.. Can you show an example for bootloader with image/pixel and loading binary?

Thank you!

Remark:
I do not know because you are advanced coders for Operating System Coding.... xD

Regards, SnakeMedia
Is something like this what you're looking for?

Image

Like the FreeDOS screen or this:

Image

? Cause if that's what you want, I believe you have to switch to graphics mode and simply draw the image on the background and then draw whatever you want. Sort of like a mini-GUI. I believe it's also possible to combine text mode and VGA mode like FreeDOS does (I'm not sure about that though).
When the chance of succeeding is 99%, there is still a 50% chance of that success happening.
User avatar
Dex
Member
Member
Posts: 1444
Joined: Fri Jan 27, 2006 12:00 am
Contact:

Re: Create Operating System with FASM! - loading photo!!

Post by Dex »

Its simple you just
Kernel32.asm

Code: Select all

;**************************************************;
; DISPLAY 640x480 IMAGE DEMO.                      ;
;                                                  ;
; by Dex (of DexOS fame.)                          ;
;                                                  ;
; It can be assembled with fasm and maybe          ;
; nasm ?.To assemble do this:                      ;
; (c:\fasm BmpView.asm kernel32.exe)               ;
; just change "test.bmp" before assembling to      ;
; change image,(NOTE: most be 640x480 256 colors)  ;
;                                                  ;
; You can run it from pure dos or from bootprog    ;
; by Alexei A. Frounze (http://alexfru.chat.ru)    ;
;                                                  ;
; On running it, it sets up vesa mode 640x480 8bpp ;
; goes to pmode and diplays a 640x480 8bpp bmp     ;
; image "test.bmp", it prints error if no vesa2    ;
;                                                  ;
; Thanks to Tomasz Grysztar (for fasm),Christopher ;
; Giese,and any one else who has helped me.        ;
;                                                  ;
; More Demos, tut and DexOS, can be found at       ;
;                                                  ;
;                www.dex4u.com                     ;
;                                                  ;
;**************************************************;                                 

format MZ
        use16
        jmp   start
        header equ [ModeInfo_PhysBasePtr]
        linear_sel equ  linear_sel_1-gdt
        sys_code   equ  sys_code_1-gdt
        sys_data   equ  sys_data_1-gdt    
        Real_code  equ  Real_code_1-gdt
        Real_data  equ  Real_data_1-gdt
        
        include 'vesainfo.inc'                  ; VESA information block,we need the for Vesa info
        

;'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''';
;                              This sets vesa info                                             ;
;..............................................................................................;
start:
        push  cs
        pop   ds
        mov   ax,ds
        mov   es,ax
        ;------------------------------------------------------------
        ; Purpose: Checks to see if VESA is available and if the desired mode is
        ; available.
        ; Inputs:  None
        ; Outputs: VESAInfo and VESA_Info structures filled (if successful)
        ;------------------------------------------------------------
        mov   dword [VESAInfo_Signature],'VBE2'
        mov   ax,4f00h                         ; Is Vesa installed ?                       
        mov   di,VESA_Info		       ; This is the address of how info block.
        int   10h
 
        cmp   ax,004Fh                         ; Is vesa installed ?,
	jne   near NoVesa2                     ; If not print a mesage & quit.

        mov   ax,4f01h                         ; Get Vesa Mode information. 
        mov   di,Mode_Info	               ; This is the address of how info block.
        mov   cx,0x4101 ;0x4112                        ; 4112h = 32/24bit ; 0x4101 = 256bit ;4111h = 65535bit (640*480)
	and   cx,0xfff
        int   10h 

        cmp   dword [VESAInfo_Signature], 'VESA'
        jne   near NoVesa2
        
        cmp   byte [VESAInfo_Version+1], 2
        jb    NoVesa2                          ; VESA version below 2.0

        mov   ax,4f02h                         ; set vesa screen mode
        mov   bx,0x4101                        ; 4101h = 640x480 256 
        int   10h 

        cmp   ax,004Fh
	jne   NoVesa2                          ; jump if no vesa 2
;'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''';
;                               This sets up going into pmode                                  ;
;..............................................................................................;
        call  enable_A20
        xor   ebx,ebx
	mov   bx,ds                            ; BX=segment
	shl   ebx,4                            ; BX="linear" address of segment base
	mov   eax,ebx
	mov   [sys_code_1 + 2],ax              ; set base address of 32-bit segments
	mov   [sys_data_1 + 2],ax
	mov   [Real_code_1 + 2],ax             ; set base address of 16-bit segments
	mov   [Real_data_1 + 2],ax
	shr   eax,16
	mov   [sys_code_1 + 4],al
	mov   [sys_data_1 + 4],al
	mov   [Real_code_1 + 4],al
	mov   [Real_data_1 + 4],al

	mov   [sys_code_1 + 7],ah
	mov   [sys_data_1 + 7],ah
	mov   [Real_code_1 + 7],ah
	mov   [Real_data_1 + 7],ah

        add   ebx,gdt		               ; EBX=linear address of gdt
	mov   [gdtr + 2],ebx
        
        cli                                    ; Disable interrupts, 
        mov   ax,cs
	mov   [RealModeCS],ax
        lgdt  [gdtr]                           ; Load the GDT descriptor

        mov   eax, cr0                         ; Copy the contents of CR0 into EAX
        or    eax, 1                           ; Set bit 0
        mov   cr0, eax                         ; Copy the contents of EAX into CR0

        jmp   10h:clear_pipe                   ; Jump to code segment, offset clear_pipe

NoVesa2:
        mov   ax,0xB800
	mov   es,ax
        lea  si,[NoVesa2Msg]                    ; Just print's a error mesage and end's.
	mov  di,(80 * 5 + 6) * 2         
	mov  cx,58
	cld
	rep movsb

NoVesa2End:
        jmp   NoVesa2End   
USE32                                          ; We now need 32-bit instructions
clear_pipe:

;'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''';
;                                    We are in pmode                                           ;
;..............................................................................................;

       xor   edi,edi
       xor   esi,esi
       mov   ax, 18h                           ; Save data segment identifyer
       mov   ds, ax                            ; Move a valid data segment into the data segment register
       mov   ss, ax                            ; Move a valid data segment into the stack segment register
       mov   es,ax
       nop
       mov   es,ax
       mov   fs,ax
       mov   gs,ax
	
       
     
mainloop:
       call  Fdd_motor_off
       call  DisplayBMP
       jmp   $

;**********************************************************************************************;
;                                      Procedure's                                             ;
;**********************************************************************************************;

;::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;
;                                     load image to screen                                     ;
;::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;
 ;----------------------------------------------------;
 ; Check valid bmp.                                   ;
 ;----------------------------------------------------;
DisplayBMP:
        mov   esi,LoadMeHere
        cmp   word [ds:esi],'BM'	
	jnz   bmp_error
        mov   bx,[ds:esi + 18]	                      ; picture width 12
	mov   ebp,[ds:esi + 22]	                      ; picture depth 16
	cmp   bx,640                                  ; W
	ja    bmp_error
	cmp   ebp,480                                 ; H
	ja    bmp_error
	cmp   word [ds:esi + 28],8		      ; bits per pixel
	jnz   bmp_error

 ;----------------------------------------------------;
 ; Set pal.                                           ;
 ;----------------------------------------------------;
	add   esi,0x36		                      ; start of palette
        xor   ecx,ecx
	mov   cx,256			              ; number of colors
	mov   dx,0x03c8
	mov   al,0
	out   dx,al
	inc   dx

set_pal:				              ; Convert 4 byte BGR -> 3 byte RGB
	mov   al,[esi+2]		              ; red
	shr   al,2
	out   dx,al
	mov   al,[esi+1]		              ; green
	shr   al,2
	out   dx,al
	mov   al,[esi]			              ; blue
	shr   al,2
	out   dx,al
	add   esi,4
	loop  set_pal

	lea   dx,[bx+3]		                      ; round bmp width
 	and   dx,-4
       	imul  edi,ebp,640 
        add   edi,[ModeInfo_PhysBasePtr] 
        mov   ax,08h
        mov   es,ax
        add   edi,640 
new_line:
	sub   edi,640 
	pushad
	mov   cx,bx			              ; columns
	rep   movsb
	popad
	add   esi,edx			              ; start of next bmp line
	dec   ebp
	jnz   new_line
        jmp   @f
 ;----------------------------------------------------;
 ; Error message.                                     ;
 ;----------------------------------------------------;
bmp_error:
 ;----------------------------------------------------;
 ; wait for key press                                 ;
 ;----------------------------------------------------;
@@:
        ret

;::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;
;                                     enable  A20 line                                         ;
;::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;

enable_A20:
        pusha
        cli                                    ; Disable all irqs
        cld
        mov   al,255                           ; Mask all irqs
        out   0xa1,al
        out   0x21,al
l.5:    in    al,0x64                          ; Enable A20
        test  al,2                             ; Test the buffer full flag
        jnz   l.5                              ; Loop until buffer is empty
        mov   al,0xD1                          ; Keyboard: write to output port
        out   0x64,al                          ; Output command to keyboard
l.6:    in    al,0x64                          
        test  al,2
        jnz   l.6                              ; Wait 'till buffer is empty again
        mov   al,0xDF                          ; keyboard: set A20
        out   0x60,al                          ; Send it to the keyboard controller
        mov   cx,14h
l.7:                                           ; this is approx. a 25uS delay to wait
        out   0edh,ax                          ; for the kb controler to execute our
        loop  l.7                              ; command.
        sti
        popa
        ret



;::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;
;                                   Turn floppy motor off.                                     ;
;::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;

Fdd_motor_off:
        mov   dx,0x3f2                         
        mov   al,0
        out   dx,al
        ret


;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;                                         Proc End                                             ;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
NoVesa2Msg:   db "Y O U   N E E D   V E S A 2   F O R   T H I S   D E M O !  "

JustInCase:
         dd 0
RealModeCS:
	 dw 0

ridtr:	 dw 0xFFFF		            ; limit=0xFFFF
	 dd 0			            ; base=0

count1:  dw 0

count:   db 0
;::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;
;                                          GDT                                                 ;
;::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;  
gdtr:	dw gdt_end - gdt - 1	           ; GDT limit
	dd gdt                             ; (GDT base gets set above)

gdt:	                                   ; Address for the gdt 
        dw 0			           ; limit 15:0    (0h) Null Segment
	dw 0			           ; base 15:0
	db 0			           ; base 23:16
	db 0			           ; type
	db 0			           ; limit 19:16, flags
	db 0			           ; base 31:24

linear_sel_1:	
       dw 0xFFFF		           ; (8h) linear Data segment, read/write, expand down
       dw 0			                   
       db 0
       db 10010010b		                   
       db 11001111b                               
       db 0

sys_code_1:                                ; (10h) Code segment, read/execute, nonconforming
       dw 0FFFFh
       dw 0
       db 0
       db 10011010b
       db 11001111b
       db 0

sys_data_1:                                ; (18h) Data segment, read/write, expand down
       dw 0FFFFh
       dw 0
       db 0
       db 10010010b
       db 11001111b
       db 0

Real_code_1:                               ; (20h) Real mode code segment
       dw 0xFFFF
       dw 0			                         
       db 0
       db 10011010b			                          
       db 0			                          
       db 0

Real_data_1:                               ; (28h) Real mode data segment
       dw 0xFFFF
       dw 0			                          
       db 0
       db 10010010b			                          
       db 0			                          
       db 0

gdt_end:                                   ; Used to calculate the size of the GDT


LoadMeHere: 
file  'test.bmp'
vesainfo.inc

Code: Select all

;=========================================================;
; Vesa Information Block                         11/12/03 ;
;---------------------------------------------------------;
; DOS EXTREME OS V0.01 (DexOS)                            ;
;                                                         ;
;                                                         ;                                                    
;=========================================================;

;-------------------------------- FASM VESA INFORMATION BLOCK -----------------------------------

VESA_Info:		
VESAInfo_Signature		rb	4      ; VBE Signature
VESAInfo_Version		rw	1      ; VBE Version
VESAInfo_OEMStringPtr		rd	1      ; VbeFarPtr to OEM String
VESAInfo_Capabilities		rb	4      ; Capabilities of graphics controller
VESAInfo_VideoModePtr		rd	1      ; VbeFarPtr to VideoModeList
VESAInfo_TotalMemory		rw	1      ; Number of 64kb memory blocks
VESAInfo_OEMSoftwareRev		rw	1      ; VBE implementation Software revision
VESAInfo_OEMVendorNamePtr	rd	1      ; VbeFarPtr to Vendor Name String
VESAInfo_OEMProductNamePtr	rd	1      ; VbeFarPtr to Product Name String
VESAInfo_OEMProductRevPtr	rd	1      ; VbeFarPtr to Product Revision String
VESAInfo_Reserved		rb	222    ; Reserved for VBE implementation scratch area
VESAInfo_OEMData		rb	256    ; Data Area for OEM Strings

;============================== VESA MODE INFORMATION ===========================================

Mode_Info:		
ModeInfo_ModeAttributes		rw	1      ; mode attributes
ModeInfo_WinAAttributes		rb	1      ; window A attributes
ModeInfo_WinBAttributes		rb	1      ; window B attributes
ModeInfo_WinGranularity		rw	1      ; window granularity
ModeInfo_WinSize		rw	1      ; window size
ModeInfo_WinASegment		rw	1      ; window A start segment
ModeInfo_WinBSegment		rw	1      ; window B start segment
ModeInfo_WinFuncPtr		rd	1      ; real mode pointer to window function
ModeInfo_BytesPerScanLine	rw	1      ; bytes per scan line
ModeInfo_XResolution		rw	1      ; horizontal resolution in pixels or characters
ModeInfo_YResolution		rw	1      ; vertical resolution in pixels or characters
ModeInfo_XCharSize		rb	1      ; character cell width in pixels
ModeInfo_YCharSize		rb	1      ; character cell height in pixels
ModeInfo_NumberOfPlanes		rb	1      ; number of memory planes
ModeInfo_BitsPerPixel		rb	1      ; bits per pixel
ModeInfo_NumberOfBanks		rb	1      ; number of banks
ModeInfo_MemoryModel		rb	1      ; memory model type
ModeInfo_BankSize		rb	1      ; bank size in KB
ModeInfo_NumberOfImagePages	rb	1      ; number of images
ModeInfo_Reserved_page		rb	1      ; reserved for page function
ModeInfo_RedMaskSize		rb	1      ; size of direct color red mask in bits
ModeInfo_RedMaskPos		rb	1      ; bit position of lsb of red mask
ModeInfo_GreenMaskSize		rb	1      ; size of direct color green mask in bits
ModeInfo_GreenMaskPos		rb	1      ; bit position of lsb of green mask
ModeInfo_BlueMaskSize		rb	1      ; size of direct color blue mask in bits
ModeInfo_BlueMaskPos		rb	1      ; bit position of lsb of blue mask
ModeInfo_ReservedMaskSize	rb	1      ; size of direct color reserved mask in bits
ModeInfo_ReservedMaskPos	rb	1      ; bit position of lsb of reserved mask
ModeInfo_DirectColorModeInfo	rb	1      ; direct color mode attributes
; VBE 2.0 extensions
ModeInfo_PhysBasePtr		rd	1      ; *physical address for flat memory frame buffer*
ModeInfo_OffScreenMemOffset	rd	1      ; Reserved - always set to 0
ModeInfo_OffScreenMemSize	rw	1      ; Reserved - always set to 0
; VBE 3.0 extensions
ModeInfo_LinBytesPerScanLine	rw	1      ; bytes per scan line for linear modes
ModeInfo_BnkNumberOfPages	rb	1      ; number of images for banked modes
ModeInfo_LinNumberOfPages	rb	1      ; number of images for linear modes
ModeInfo_LinRedMaskSize		rb	1      ; size of direct color red mask (linear modes)
ModeInfo_LinRedFieldPos		rb	1      ; bit position of lsb of red mask (linear modes)
ModeInfo_LinGreenMaskSize	rb	1      ; size of direct color green mask (linear modes)
ModeInfo_LinGreenFieldPos	rb	1      ; bit position of lsb of green mask (linear modes)
ModeInfo_LinBlueMaskSize	rb	1      ; size of direct color blue mask (linear modes)
ModeInfo_LinBlueFieldPos	rb	1      ; bit position of lsb of blue mask (linear modes)
ModeInfo_LinRsvdMaskSize	rb	1      ; size of direct color reserved mask (linear modes)
ModeInfo_LinRsvdFieldPos	rb	1      ; bit position of lsb of reserved mask (linear modes)
ModeInfo_MaxPixelClock		rd	1      ; maximum pixel clock (in Hz) for graphics mode
; Reserved
ModeInfo_Reserved		rb	190    ; remainder of ModeInfoBlock
;======================================= START OF PROGRAM  ======================================
And you endup with
test.bmp
Image

Note: you need to get bootprog to load the mz exe once assembled.
Last edited by Dex on Thu Jul 30, 2009 4:34 am, edited 1 time in total.
snakemedia
Posts: 5
Joined: Tue Jul 28, 2009 6:31 pm

Re: Create Operating System with FASM! - loading photo!!

Post by snakemedia »

Hi @Dex, wow nice Idea!
A lot of thanks! I try now.. When i try a sample bootloader with image Flex OS.

@Creature, That is an example bootloader with image. Thank you.

I give you $$$$ money because you work long... sorry i do not fake you. I want to help for you. When you work good than you can go my company :D .

Thanks I give a lot of thanks :D

Edit:
But it does not show in VirtualBox 3.0x :(
I am trying with bootloader with image. I have been compiled:
Directory: C:\FlexOS-Src\
boot.asm
test.bmp
vesainfo.inc

To asembling:
fasm boot.asm boot.bin

Show no error and no illegal...

copy boot.bin+test.bmp+vesainfo.inc boot.img
I try into VirtualBox 3.0x with boot.img.
I see Emulator of VirtualBox. But my boot.img is not working because it is unbootabled... Why?? Same did you use under linux?

Regards, SnakeMedia

Code: Select all

package flexos
{
	import flexos.system.*;
	import flexos.apps.*;
	import mx.controls.*;
	import flash.events.*;

	public class flexos_bootloader extends boot
	{
		// That is Actionscript 3 with Flex Builder... \oOo/
	}
}
I am Fun for Flex Builder
User avatar
Thor
Member
Member
Posts: 51
Joined: Mon Jul 06, 2009 12:55 am
Location: Kamloops, BC, Canada

Re: Create Operating System with FASM! - loading photo!!

Post by Thor »

You need to copy the stage 1 bootloader to the bootsector of the floppy in order to make it bootable.
Vancouver Canucks fan for life
User avatar
Troy Martin
Member
Member
Posts: 1686
Joined: Fri Apr 18, 2008 4:40 pm
Location: Langley, Vancouver, BC, Canada
Contact:

Re: Create Operating System with FASM! - loading photo!!

Post by Troy Martin »

snakemedia wrote:I give you $$$$ money because you work long... sorry i do not fake you. I want to help for you. When you work good than you can go my company :D .
Uhhh, I call troll on this. Or someone that hasn't read the Beginner Mistakes...
Image
Image
Solar wrote:It keeps stunning me how friendly we - as a community - are towards people who start programming "their first OS" who don't even have a solid understanding of pointers, their compiler, or how a OS is structured.
I wish I could add more tex
snakemedia
Posts: 5
Joined: Tue Jul 28, 2009 6:31 pm

Re: Create Operating System with FASM! - loading photo!!

Post by snakemedia »

Hi

@Thor, are you sure? I do not believe it, Okay I copy with stage1 i can understand now. Why does pinguin need only important folders or files to imports?? I do not believe this. :D Sorry i retry now.

Regards, SnakeMedia

Code: Select all

package flexos
{
	import flexos.system.*;
	import flexos.apps.*;
	import mx.controls.*;
	import flash.events.*;

	public class flexos_bootloader extends boot
	{
		// That is Actionscript 3 with Flex Builder... \oOo/
	}
}
I am Fun for Flex Builder
User avatar
Dex
Member
Member
Posts: 1444
Joined: Fri Jan 27, 2006 12:00 am
Contact:

Re: Create Operating System with FASM! - loading photo!!

Post by Dex »

Do you not read the how to assemble ?, you take "kernel32.asm" make sure that "vesainfo.inc" and "test.bmp" are in the same dir, then assemble like this:
fasm kernel32.asm kernel32.exe <enter>
Then as it say you need to get "bootprog"
http://alexfru.chat.ru/epm.html#bootprog
Once you have a floppy with bootprog on you just put the kernel32.exe on the floppy and boot.
If you are using emulators you need to set for vesa uses.

In here is a self extracting exe that will do it all for you, you need a floppy and windows
The file is "ImageView.exe"
http://dex4u.com/code/BmpView.zip
User avatar
Coty
Member
Member
Posts: 286
Joined: Thu Feb 12, 2009 5:12 pm

Re: Create Operating System with FASM! - loading photo!!

Post by Coty »

@Dex: true, if you are using Fasm for DOS, but if he have fasm for win32 he would have to edit the include tag. and copy and paste the kernel into into fasm and click Run > Compile (or CTRL + F9)

Code: Select all

Include 'C:\files\vesainfo.inc'
Attachments
Display.PNG
My hero, is Mel.
User avatar
gravaera
Member
Member
Posts: 737
Joined: Tue Jun 02, 2009 4:35 pm
Location: Supporting the cause: Use \tabs to indent code. NOT \x20 spaces.

Re: Create Operating System with FASM! - loading photo!!

Post by gravaera »

snakemedia wrote:Hi @Dex, wow nice Idea!
A lot of thanks! I try now.. When i try a sample bootloader with image Flex OS.

I give you $$$$ money because you work long... sorry i do not fake you. I want to help for you. When you work good than you can go my company :D .

Thanks I give a lot of thanks :D

Edit:
But it does not show in VirtualBox 3.0x :(
I am trying with bootloader with image. I have been compiled:
Directory: C:\FlexOS-Src\
boot.asm
test.bmp
vesainfo.inc

To asembling:
fasm boot.asm boot.bin

Show no error and no illegal...

copy boot.bin+test.bmp+vesainfo.inc boot.img
I try into VirtualBox 3.0x with boot.img.
I see Emulator of VirtualBox. But my boot.img is not working because it is unbootabled... Why?? Same did you use under linux?

Regards, SnakeMedia
About the money thing...I think it would have been better if you just offered him a fee via paypal or something. :D
17:56 < sortie> Paging is called paging because you need to draw it on pages in your notebook to succeed at it.
Post Reply