News:

MASM32 SDK Description, downloads and other helpful links
MASM32.com New Forum Link
masmforum WebSite

Solar_OS new release on 2006_07_12

Started by BogdanOntanu, July 13, 2006, 11:10:49 PM

Previous topic - Next topic

BogdanOntanu

A new monthly release ...
for Solar_OS

Binary:  http://www.oby.ro/os/files/sol_os_2006_07_12_bin.zip
Sources: http://www.oby.ro/os/files/sol_os_2006_07_12_src.zip

New Things:

1)Sol_Tris Game
----------------------
A graphical Tetris like game
so let me know your high scores.

Funny but Sol_OS did lacked games.
(I agree we need many other things)

3)ACT_NOTIFY callback
--------------------------
For backgrund tasks.

It allows applications to run when minimized
and/or are in another hidden desktop
without adding a timer or becoming a service.

Adds better sepparation of PAINT and RUN methods.

4)ListView control
-----------------------
You know, drag the headers...
I still have to add small icons and view modes to it

5)FDISK becomes more NTFS aware
-----------------------------------
In preparations for NTFS filesystem browse.

In FDISK APP if you press Enter on a NTFS partition
and read BPB in the upcoming Details window -->
then you will find some MFT and FileRecords info

But the transition is mainly internal since analysis and
functions are added in order to support NTFS.


Ah and hopefully I have fixed the bugs kindly found by Hutch in circle drawing routines.

Ambition is a lame excuse for the ones not brave enough to be lazy.
http://www.oby.ro

Citric

Hi Bogdan

Nice to see a new release.

Are you still progressing with SolAsm? are you looking to compile Solar OS with SolAsm in the future?

Keep up the good work  :clap:

Cheers Adam

Casper

Compiling with SolASM, I can't wait to be able to do that.  I am looking forward to adding that assembler as an option in my package.  I bet Hutch is looking forward to it, also.

Paul

BogdanOntanu

Yes, i am still progressing with Sol_ASM also ;)

And it is indeed planned to switch Solar OS development from TASM to SOL_ASM in the future

And yes Sol_ASM  is compatible with MASM syntax also...
Ambition is a lame excuse for the ones not brave enough to be lazy.
http://www.oby.ro

hutch--

Yerp,

It would be good to have a Bogdan assembler available.  :U :U :U
Download site for MASM32      New MASM Forum
https://masm32.com          https://masm32.com/board/index.php

Casper

What does YERP mean?  Is that another OZ word or does it stand for, 'Yes, Eagerly Requesting Program'

Paul

Mark Jones

Hi Bodgan, I tried SolarOS using Virtual PC 2004 on WinXP SP2 and it's cool! But it reports my CPU speed incorrectly (1034MHz instead of 1800MHz, AMD XP 2500+ 23-bit) and I couldn't find the Tetris game (probably something I did wrong.)
"To deny our impulses... foolish; to revel in them, chaos." MCJ 2003.08

BogdanOntanu

Hi Mark,

Thank you for testing!

1)The "tetris game" is in Sol->Applications->Sol_Tris_Game (or should be)

2) It is normal for VPC to report a smaller CPU frequency, because it does not dedicate the full CPU to the virtual machine.

IMHO on a real PC the frequency reported by SOL System_Info application should be the real one.

Ambition is a lame excuse for the ones not brave enough to be lazy.
http://www.oby.ro



BogdanOntanu

Oh well,

AT the time of this post...the sources have been available for free download...

Meanwhile, I have changed my mind and removed the sources from the package.
As it is today: only the binary is released (no sources)...



Ambition is a lame excuse for the ones not brave enough to be lazy.
http://www.oby.ro

BogdanOntanu

But then again I have changed my mind ...
so the above link for the sources is working OK.
Grab it as you still can ...  :U
Ambition is a lame excuse for the ones not brave enough to be lazy.
http://www.oby.ro


korte

Hi Bogdan.

Please Help
I'm using Microsoft VirtualPC.
Your OS full work.

But my litle program not work in vesa lfb mode.

My program changing video mode in vesa 1024*768 with lfb. And filling varius color to screen area.

In native dos6.22 work correct
In emulator DosBox work correct.
In emulator VPC (in XP) changing mode but filling first 64K and halt



what a problem?
How to correct lfb mode use

thx




.386p

assume cs:x_code
assume ds:x_data
assume ss:x_stack

      .model small, stdcall
      option casemap :none



x_data segment para public 'DATA' use16

x_data ends







        GDI_SetVideoMode        PROTO   :DWORD



GDI_VESA_640x400        equ 4100h ; 640x400x256
GDI_VESA_640x480        equ 4101h ; 640x480x256
GDI_VESA_800x600        equ 4103h ; 800x600x256
GDI_VESA_1024x768       equ 4105h ; 1024x768x256
GDI_VESA_1280x1024      equ 4107h ; 1280x1024x256

ModeInfoBlock   struc

     ; Mandatory information for all VBE revisions
     ModeAttributes      dw ?      ; mode attributes
     WinAAttributes      db ?      ; window A attributes
     WinBAttributes      db ?      ; window B attributes
     WinGranularity      dw ?      ; window granularity
     WinSize             dw ?      ; window size
     WinASegment         dw ?      ; window A start segment
     WinBSegment         dw ?      ; window B start segment
     WinFuncPtr          dd ?      ; pointer to window function
     BytesPerScanLine    dw ?      ; bytes per scan line

     ; Mandatory information for VBE 1.2 and above
     XResolution         dw ?      ; horizontal resolution in pixels or chars
     YResolution         dw ?      ; vertical resolution in pixels or chars
     XCharSize           db ?      ; character cell width in pixels
     YCharSize           db ?      ; character cell height in pixels
     NumberOfPlanes      db ?      ; number of memory planes
     BitsPerPixel        db ?      ; bits per pixel
     NumberOfBanks       db ?      ; number of banks
     MemoryModel         db ?      ; memory model type
     BankSize            db ?      ; bank size in KB
     NumberOfImagePages  db ?      ; number of images
     Reserved1           db ?      ; reserved for page function

     ; Direct Color fields (required for direct/6 and YUV/7 memory models)
     RedMaskSize         db ?      ; size of direct color red mask in bits
     RedFieldPosition    db ?      ; bit position of lsb of red mask
     GreenMaskSize       db ?      ; size of direct color green mask in bits
     GreenFieldPosition  db ?      ; bit position of lsb of green mask
     BlueMaskSize        db ?      ; size of direct color blue mask in bits
     BlueFieldPosition   db ?      ; bit position of lsb of blue mask
     RsvdMaskSize        db ?      ; size of direct color reserved mask in bits
     RsvdFieldPosition   db ?      ; bit position of lsb of reserved mask
     DirectColorModeInfo db ?      ; direct color mode attributes

     ; Mandatory information for VBE 2.0 and above
     PhysBasePtr         dd ?      ; physical address for flat frame buffer
     OffScreenMemOffset  dd ?      ; pointer to start of off screen memory
     OffScreenMemSize    dw ?      ; amount of off screen memory in 1k units
     Reserved2            db 206 dup (?)  ; remainder of ModeInfoBlock
ModeInfoBlock ends




x_data segment para public 'DATA' use16
gdi_seg_id      db      'GDI'

vesabuf         db      1024 dup (0)
vesasign        db      'VESA'
db 1024 dup (0)



x_data ends

x_code segment para public 'CODE' use16
GDI_ScreenAddr  dd      0
        assume  ds:x_data

GDI_SetVideoMode        proc    mode:DWORD
        mov     es,cs:[x_data_seg]
        mov     eax,4f02h
        mov     ebx,[mode]
        int     10h
        mov     ax,4f01h
        mov     ecx,[mode]
        mov     edi,offset vesabuf
        int     10h
        mov     ebx,ModeInfoBlock.PhysBasePtr
        mov     edi,offset vesabuf
        add     edi,ebx
        mov     eax,[edi]
        mov     cs:[GDI_ScreenAddr],eax
        ret

GDI_SetVideoMode        endp



x_code ends


x_code segment para public 'CODE' use16

x_data_seg dw seg x_data
x_stack_seg dw seg x_stack
d_memory_seg    dw      seg memory
d_psp_seg dw 0



start:

        mov     cs:[d_psp_seg],ds
        mov     bx,cs:[d_memory_seg]
        mov     ax,ds
        sub     bx,ax
        mov     ax,4a00h
        int     21h

mov ds,cs:[x_data_seg]

mov ax,cs:[x_stack_seg]
cli
mov ss,ax
mov sp,50000
sti

invoke GDI_SetVideoMode,GDI_VESA_1024x768


xor eax,eax
mov es,ax
toci:
mov ecx,1024*768/4
        mov ebx,cs:[GDI_ScreenAddr]

xx:
mov es:[ebx],eax
add ebx,4
dec ecx
jnz xx
add eax,010101010h
jmp toci


x_code ends



x_stack segment public 'STACK' use16

dw 25000 dup (?)

stack_pointer label word

x_stack ends


memory  segment para memory 'memmory' use16
memory  ends


end start
end




BogdanOntanu

Sorry...

But I am not in the bussiness of correcting other people's code... not DOS 16 bits code anyway :D

You have my version that is working, and yours that is not... work it out compare results and find out why!

This is an important skill for somebody that wants to write OS or low level software...
othwerwise you will "get by" for now and hit a harder wall later on.

Usually (in this line of work) you DO NOT have a sample that is working to compare with :D

A very quick glance shows me this:
===========================
- exotic definition and usage of program segments... do you really need that?
and why is video address placed into a "code" segment?

- do you check the results of VESA BIOS calls?
Maybe the mode setup failed because some parameter was wrong
real mode 16bits code knows nothing about EBX, ESI, EDI and stuff ... use only 16bits registers :P

-From your description it looks like you have setup a BANK mode and not a LFB mode...
What is the address where you can only write 64K? is it A0000 ?

- What is the mode that fails? all? only one? do others work? lower ones like 640x480?

- int21h ? are you using DOS? do you have DOS installed in VPC?

- do you know the limits of the video board emulated by VPC?

You really need to learn to test and debug your programand and then describe a problem much better...

Throwing code at us and expecting that somebody will READ, UNDERSTAND and FIX it for you ...
is NAIVE and not well mannered at all.

And how is this related to the thread's title and SOL OS release?

The nice way to go is to create a new thread with a relevand title (like: "Failing to setup VESA mode XXX") and describe the problem as accurate as possible.

Do not worry ;) I am just amazed...not aggravated
Work it out and come back with a much better (and simpler) description of your problem.
Ambition is a lame excuse for the ones not brave enough to be lazy.
http://www.oby.ro