flat assembler
Message board for the users of flat assembler.
![]() Goto page 1, 2 Next |
Author |
|
ASHLEY4 22 Dec 2004, 04:16
You can try the New v2os coded with fasm, code named v3os, this is just a demo of what could be the next v2os.
Down load here: http://www.falconrybells.co.uk/ A 32bit supper Dos ![]() \\\\||//// (@@) ASHLEY4. Batteries not included, Some assembly required. Last edited by ASHLEY4 on 27 Dec 2004, 23:07; edited 1 time in total |
|||
![]() |
|
roticv 22 Dec 2004, 06:25
I see you, Ashley
![]() Do you intend to make it just like DOS or make a GUI for it? |
|||
![]() |
|
ASHLEY4 22 Dec 2004, 20:56
Thanks jas20,
roticv, It will boot to a menu saying Gui CLI Pmode CLI Real mode CLI Depending which you choose it will run 16bit com/exe file, or 32bit bin file, the GUI will be more like the xbox skinable and menu driven. The kernel can be run from dos, so you can run dos program if you like. Here is a simple hello world! prog. Code: ;=========================================================;; hello 19/12/04 ;;---------------------------------------------------------;; \\|// ;; (@ @) ;; ASHLEY4. ;; c:\fasm hello.asm hello.v2a ;;=========================================================;use32ORG 0x200000 jmp startmsg1: db "hello world!", 0start: ;----------------------------------------------------; ; Display start message. ; ;----------------------------------------------------; mov esi,msg1 mov al,0x00 mov ah,0x09 int 40h ret \\\\||//// (@@) ASHLEY4. Batteries not included, Some assembly required. |
|||
![]() |
|
smiddy 22 Dec 2004, 22:06
Hi,
I did take a look at it. The RUN command only works with upper case lettering. Also, placing A: infront of the executeable wasn't parsed out. Other than that it looks like a good start. I was hoping to see a MEM[ORY] command or PART[LIST] but then again...this is a demo. ![]() Bochs I was unable to get it to run properly. It appears that nothing is getting written to the screen when typed. However, the cursor moves. Also, hitting enter keeps the cursor moving, I expect this is a mapping issue? Using DOSBox appears to work (started it from the command line). I tried RUN IMAGE.V2A and received two errors: ERROR! Floppy not ready! Bad command of file name. Oh, you may want to include a command EXIT to unload the kernel. It is currently stuck in my DOSBox. ![]() I can't wait to see the rest of it when it is ready. Thanks for the preview! |
|||
![]() |
|
ASHLEY4 22 Dec 2004, 23:59
Thanks smiddy,
It does not seem to run with bochs (as you said keyboard seem to the problem) ,i will take a look to see what the problem is, as for the upper case it should work as i convert all input to upper case. When you say DOSBox do you mean as in this : http://dosbox.sourceforge.net/news.php?show_news=1 In the next release i will be puting a exit command for just such a case. Thanks for your test info. \\\\||//// (@@) ASHLEY4. Batteries not included, Some assembly required. |
|||
![]() |
|
smiddy 23 Dec 2004, 20:33
Yes, that's the DOSBox...
I have some code for determining if you're in DOS or not at the house. When I get home I'll see if I can scare it up. It isn't all inclusive (work in progress; NASM-ish but should convert alright) but you can work with it to determine if a reboot is needed or exit to DOS. (The only thing I may have not included in the code is looking for the in DOS flag...which I vaguely remember is somewhere in memory area 400 - 500, I think). I'll post it later this evening. No problem, glad to help. I have four machines I can test it on... |
|||
![]() |
|
jas20 23 Dec 2004, 22:54
I can use the keyboard now!
The only problem is that the floppy can't be read. qemu.exe -L . -fda win98sec.img (v3os.ima in same folder) win98sec.img is on bootdisk.com I use qemu 0.6.0 (0.6.1 doesn't keep cmd window). When win98sec is booted > go to cmd windows and enter: change fda v3os.ima > Back in qemu at a: type : kernelv2 > Your now in v3os. Unable to run hello.v2a, image.v2a, dir (floppy problems). So it seems that keyboard works if you have dos (I'll try a true dos image later). Jas20 |
|||
![]() |
|
smiddy 24 Dec 2004, 01:17
@Ashley4:
Here's some working code...commenting is downward, meaning the last thing written is the last result. Initial stuff was weird...enjoy! Code: ; ---------------------------------------------------------------------------- ; Functions used ... ; ---------------------------------------------------------------------------- ; ; Detect if DOS is loaded ; ; - Check initial interrupt vector table for INT 0x21 ; - If vector is present run INT 0x21 AX=3306 ; - Check for CF for non-used function ; - Experiments without DOS loaded yeilding the same result ; on two different machines: ; Major Version: 00 ; Minor Version: F0 ; Revision: FF ; Assuming if Major Version = 0 there isn't a compatible DOS loaded in ; memory for use of its functions. ; - PC-DOS 3.3: 6A.02 - 68 (may have to revert to AX=3300) ; - Win98: 07.0A - 00 ; - FreeCOM 0.86 & 0.83: 07.0A - 00 ; - Millenium 4.90.3000: 08.00 - 00 ; - Bootup: 00. ; ; - Changing to display everything and update run above ; ; - Now I need to change the display to decimal since hex isn't used when ; displaying the version, especially for PC-DOS 3.30 (0.06.0015) ; -- Also added version number for program in this format: ; Major.Minor.Build ; --- Major is a release version, currently 0, not released ; --- Minor is the number of functions before a Major version number or ; after a major version number before the next release. After is the ; number of added functions from a major release. ; --- Build this is the number of assembles/compiles of that version, shown ; in hex. ; ; - First run with ToDecimal was not spectacular, need to fix (0.06.0016). ; Had to fix the decimal printout. Below are the findings: ; -- In WinXP Pro DOS Box: 00A7107Ch, 5.0, 5.50 - 0 ; -- Boot MSI: F000ED8Ah, 0.48, 0.0 - 0 ; -- Boot ASUS: F000EF6Fh, 0.48, 0.0 - 0 ; -- PC-DOS 3.3: 026A1460h, 3.30, 0.0 - 0 ; -- Win98 DOS: 00C90FB2h, 7.10, 7.10 - 0 ; -- WinXP DOS: FFFF3CA0h, 8.0, 8.0 - 0 (FFFF0 + 3CA0 = 1A3C90) ; -- FreeDOS 0.82: 00CF109Ah, 7.10, 7.10 - 0 ; -- FreeDOS 0.83: 00700032h, 7.10, 7.10 - 0 ; -- WinXP Dos Box: 007A107Ch, 5.0, 5.50 - 0 ; ; - I hear there is a DOS variable in CMOS. Need to investigate and ; implement (0.6.0017). Also, need to check if we're WM86 too... ; ; - Added the detection of VM86 (0.6.0018). ; ; ---------------------------------------------------------------------------- CheckDOS: ; Look at interrupt 0x21 vector table (0000:0084 0x21 x 0x04 = 0x84) push es ; Save ES push di ; Save DI xor ebx,ebx mov ax,0x0000 mov es,ax ; Point ES:DI to interrupt 0x21 mov di,0x0084 mov ax,word [es:di+2] mov bx,word [es:di] shl eax,0x10 ; Move high order number into high EAX add eax,ebx ; Put low order into AX mov [TheEAX],eax ; Save EAX mov cl,0x20 call ToHex ; Prepare to printout mov si,InterruptVectorMessage call Message mov si,HexBuffer ; Display HexBuffer call Message mov si,TheHexAfter ; Put an 'h' after the hex output call Message ; mov eax,[TheEAX] ; Restore EAX ; cmp eax,0x00000000 ; Check for zero ; je NEAR .NoDOS ; No sense in continuing ;---> It appears the above code might be wasted since most BIOSes I've run across place this vector ; within F000:0000 -> F000:FFFF ;---> Check for VM86 mode. smsw ax ; This assumes 286+ and eax,1 ; CR0.PE bit cmp eax,1 je .V86Mode jmp .CheckBIOS .V86Mode: mov si,V86ModeMessage call Message .CheckBIOS: mov eax,0x00000000 ; Zero out registers (xor is faster...) mov ebx,0x00000000 mov ecx,0x00000000 mov edx,0x00000000 ; Call int 0x21 AX=3000 (Original Get DOS Version 2+) mov ax,0x3000 int 0x21 ; jc NEAR .NoDOS mov [DOSMajor],al mov [DOSMinor],ah mov [DOSInstalled],al ; Tell the program that DOS is installed mov si,DOSDetected call Message mov si,INT21AX3000 call Message mov si,DOSVersion call Message xor eax,eax ; Zero out EAX mov al,byte [DOSMajor] call ToDecimal mov si,DecimalBuffer call Message mov si,TheDot call Message xor eax,eax ; Zero out EAX mov al,byte [DOSMinor] call ToDecimal mov si,DecimalBuffer call Message mov si,TheEndOfLine call Message mov eax,0x00000000 mov ebx,0x00000000 mov ecx,0x00000000 mov edx,0x00000000 ; Then call int 0x21 ax=3306 (Get MS-DOS Version 5+) mov ax,0x3306 int 0x21 ; jc .NoDOS ; CF set then it doesn't have DOS mov [DOSMajor],bl mov [DOSMinor],bh mov [DOSRev],dl mov [DOSFlags],dh ; cmp bl,0x00 ; Check for a Major Version (removed to see everything) ; je .NoDOS mov si,INT21AX3306 call Message mov si,DOSVersion call Message xor eax,eax ; Zero out EAX mov al,byte [DOSMajor] call ToDecimal mov si,DecimalBuffer call Message mov si,TheDot call Message xor eax,eax ; Zero out EAX mov al,byte [DOSMinor] call ToDecimal mov si,DecimalBuffer call Message mov si,DOSRevision call Message xor eax,eax ; Zero out EAX mov al,byte [DOSRev] call ToDecimal mov si,DecimalBuffer call Message mov si,TheEndOfLine call Message jmp .Done ; Else tell user DOS is not loaded. .NoDOS: mov si,DOSNotDetected call Message .Done: pop di pop es RET I hope this helps your cause for an EXIT routine... ![]() |
|||
![]() |
|
ASHLEY4 24 Dec 2004, 02:43
Thanks a lot smiddy, i will do a check in realmode before going to pmode, and set a var, so people running it from dos etc, can swich back to dos or exit emulators.
I will give you a mention in the credits. I also tryed DOSBox for the first time and i was impressed, got some good screen shots but only of the command interface, as i got the same result as the both of you with the floppy and emulators. jas2o, thanks for your work with emulators, hopefully the atapi code will work with emulators, so people who use them can test and RUN v2a progs. \\\\||//// (@@) ASHLEY4. Batteries not included, Some assembly required. |
|||
![]() |
|
smiddy 24 Dec 2004, 14:07
Hey Ashley4,
No sweat, anything to help the learning process. I think I've gotten more from your CDPOD code...I haven't had the opportunity to look at IDE or ATAPI so your code has gotten my thoughts rolling. THANKS! You are certainly welcome to use it as you see fit. If you credit me, then thank you. It's a work in progress and quite possibly more needs to be done to determine is DOS or say Windows or OS/2 or some other OS is loaded. I think the VM86 code (don't forget to check for the processor type) will alleviate any problems you would incounter getting into PMODE, I think. BTW, great tag line...I'm trying to think of something just as snappy. Something along the lines of I have the tools to assemble it...though that isn't as impressive. ![]() I'll be away from the coomputer during the Holidays. Have a great time coding. See you back here around the 3rd of next year. |
|||
![]() |
|
ASHLEY4 24 Dec 2004, 14:44
Thanks smiddy, have a good holiday.
PS: What about "There may be 8bits, but can you understand 1bit of it?" \\\\||//// (@@) ASHLEY4. Batteries not included, Some assembly required. |
|||
![]() |
|
jas20 27 Dec 2004, 10:09
SOMETHING HAS HAPPENED!
ASHLEY4 wrote: I have decided Not to implement v3os as v2os, there is too much in fighting from old v2os 0.70 members and it does not look good for new member to see this, i will still be Dev my OS on the same lines that i have out lined, i will start my own forum, anyone is welcome to join, i will let you know as soon as i have a forum setup. |
|||
![]() |
|
bubach 27 Dec 2004, 17:14
about time..
never did like the v2os "admins".. ![]() |
|||
![]() |
|
ASHLEY4 27 Dec 2004, 23:05
You can see Y v2os has not moved forwards in year's and Y these left v2os to start on there own http://unununium.org/
\\\\||//// (@@) ASHLEY4. Batteries not included, Some assembly required. |
|||
![]() |
|
jas20 28 Dec 2004, 01:20
Quote: about time.. FYI I'm sure v2os has no 'good side' (the only 'good side' they had was dos extreme. Jas2o / Jas20 |
|||
![]() |
|
ASHLEY4 28 Dec 2004, 03:33
Yes let see how much of our code ends up in 0.70.
PS: Can someone switch the lights off over at the v2os forum, i may of left them on ![]() \\\\||//// (@@) ASHLEY4. Batteries not included, Some assembly required. |
|||
![]() |
|
jas20 28 Dec 2004, 03:43
I think they lights are off, I removed my avatar, changed my board settings (i'm hidden now!), and reset the time.
Is there a licence that makes the project open source but can only be used on that project or on others if they ask the author? Will some of the darkside members cross over to the forum to steal the code? Jas20 |
|||
![]() |
|
bubach 28 Dec 2004, 12:28
hehe, no i think that the "admins" will never use that code, since "it has to bad process communication"..
lol, they will never get any coding done with all fancy goals; and people (non coders especially) is intrested in results not design issues. |
|||
![]() |
|
crc 29 Dec 2004, 03:01
Quote: Is there a licence that makes the project open source but can only be used on that project or on others if they ask the author? It wouldn't really be open source if you restrict certain groups from using the code in their projects... |
|||
![]() |
|
Goto page 1, 2 Next < Last Thread | Next Thread > |
Forum Rules:
|
Copyright © 1999-2023, Tomasz Grysztar. Also on GitHub, YouTube.
Website powered by rwasa.