flat assembler
Message board for the users of flat assembler.
![]() |
Author |
|
me239 17 Jul 2011, 08:33
Well I added a few more features to my OS and also decided to stop calling it 'xOS Beta'. I thought it was about time to release a 'real' version. I'm not calling it Ver 1.0, but rather 0.1 because it still lacks many features I wish to soon implement. Anyways here it goes...
FEATURES: *Basic file I (not I/O because there isn't any writing yet so for now just I) *12 API's via int 21h & 20h *'DIR' simple wild cards eg. '*.com' *COM and EXE execution *TSR support I've also included some more example programs including a command line bitmap viewer (file must be less than 64k). here is the readme from the folder Code: -----xOS version 0.1 user guide------------ 1. About 2. Command line 3. Programming 4. API's ============================================ 1. About----------------------------------- ============================================ xOS is a simple Hobby OS written in FASM that aims to be an education learning platform for beginner OS developers. xOS is free to modify and distribute as long as the author (Me239) is given credit and is licensed under the GNU General Public License. ============================================ 2. Command line----------------------------- ============================================ xOS features a simple command line interface capable of running applications with multiple arguments and parameters and allows wild cards for it's 'dir' command. xOS uses standard MS-DOS executables COM and EXE files. To run a COM file, simple type the name with or without the .com extension. To run an EXE, the .exe extension MUST be specified, otherwise the COM file with that name will be executed or a 'Bad command or file name' message will be produced. For help using the command line in xOS simply type 'help' in the command line and a list of valid commands will be brought up along with an explanation of each command's functions. ============================================ 3. Programming------------------------------ ============================================ xOS features several API's for general program usage. The kernel's main interrupts are interrupt 21h for programs and also interrupt 20h for program termination. xOS allows for both of these interrupts to be hooked, but can be disabled by typing 'restart' at the prompt. TSR's are also one of xOS's features. xOS gives each TSR a spot in HIMEM in respect to it's size. Each program is loaded at segment 0x1010 in order to provide enough room for disk buffers used by the kernel, so memory access below segment 0x1010 is highly discouraged otherwise the system may crash. Whenever a program is executed, the first 31 bytes of the command line is placed at offset 0x80 to allow input from the command line interface. Here is an example 'Hello World' program written for xOS in FASM: org 100h ; standard MS-DOS COM file start: mov ah, 03 ; xOS's print string function mov si, msg ; address of the string int 21h ; xOS's kernel interrupt int 20h ; terminate our program msg db 'Hello World!', 0 ; NULL terminated string to be printed Many other examples are included in the 'Examples' folder along with the source. ============================================= 4. API's------------------------------------- ============================================= Here is a list of all the functions currently supported in xOS *INT 20H* No parameters, ends program *INT 21h* *MessageBox (Creates a red messagebox in the center of the screen with text) AH = 01 DS:SI = location of message ---------------------------------- *Create fullscreen box with status bar AH = 02 DH = top and bottom status bar color DL = foreground color DS:SI = text to printed to status bar --------------------------------- *Print string AH = 03 DS:SI = location of NULL terminated string --------------------------------- *Clear-screen AH = 04 --------------------------------- *Allocate TSR memory block AH = 05 CX = number of paragraphs to be allocated +1 for rounding return: AX = new segment for tsr block -------------------------------- *Hook interrupt AH = 06 AL = Interrupt number BX = Segment of handler DX = Offset of handler -------------------------------- *Read/execute file AH = 07 AL = 1 for read file or 2 for execute file DS:BX = segment and offset to read or execute file into DS:SI = location of file name to load return: CX = file size ------------------------------- *Print character to STDOUT AH = 08 AL = character ------------------------------- *Get Interrupt handler AH = 09 AL = Interrupt number Returns: AX = handler offset BX = handler segment ------------------------------- *Delete file AH = 0ah DS:SI = file to delete ------------------------------- *Rename file AH = 0bh DS:SI = original file name ES:DI = new filename ![]()
|
|||||||||||
![]() |
|
< Last Thread | Next Thread > |
Forum Rules:
|
Copyright © 1999-2025, Tomasz Grysztar. Also on GitHub, YouTube.
Website powered by rwasa.