flat assembler
Message board for the users of flat assembler.

flat assembler > OS Construction > A simple request...

Goto page 1, 2  Next
Author
Thread Post new topic Reply to topic
kohlrak



Joined: 21 Jul 2006
Posts: 1421
Location: Uncle Sam's Pad
I would like to prove to my C++ teacher in school, sometime, that you can write programs that don't need windows (since based on his pessimistic view on assembly, he might not think it's possible). So, since i still don't know how to do it, i would like to ask some one to write a simple program that i could burn to a CD and have it run from the boot menu that'll display some text. Do me a favor and fully comment it. I'm requesting it here, rather than using the hello world thing for box, so i know for sure it'll run with nothing extra needed for any programs.
Post 18 Dec 2006, 01:35
View user's profile Send private message Visit poster's website AIM Address Yahoo Messenger MSN Messenger Reply with quote
Dex4u



Joined: 08 Feb 2005
Posts: 1601
Location: web
Theres lots of examples on the board, including demo made for 512b compo.
Go through this topic http://board.flatassembler.net/topic.php?t=2164&start=60

Tomasz Grysztar bootable Tetris game would be a good demo to show.
Post 18 Dec 2006, 02:22
View user's profile Send private message Reply with quote
kohlrak



Joined: 21 Jul 2006
Posts: 1421
Location: Uncle Sam's Pad
you mean that 360 byte thing? I tried burning that to a CD and running it but it didn't work until i used DOSBOX. I might have to write the CD a special way... I've never actually made a boot disk before so if there's somthing other than the put in CD folder and clicking burn method, please tell me. lol
Post 18 Dec 2006, 02:31
View user's profile Send private message Visit poster's website AIM Address Yahoo Messenger MSN Messenger Reply with quote
Dex4u



Joined: 08 Feb 2005
Posts: 1601
Location: web
Here the code done by Tomasz Grysztar for the 512b compo.
assemble its as a bin file and use rawrite to put it on a floppy.
If you do not have floppy, maybe someone else will make a image.
Code:
; TetrOS; version 1.01 (05-09-2004); coded by Privalov; For your playing pleasure, it's a boot-sector Tetris game.; The quick help on keys:; Left - move left; Right - move right; Up - rotate; Down - drop; Esc - new game at any time; Requires VGA and 386 or higher processor.org 7C00hROWS = 23DELAY = 4virtual at 46Ch clock dw ?end virtualvirtual at bp current dw ? current_column db ? current_row dw ? last_tick dw ? delay dw ? random dw ? score dw ?end virtuallabel well at 9000hlabel pics at well-2*64 cli xor ax,ax mov ss,ax mov ds,ax mov es,ax mov sp,0FFFEh sti push ax push start retfstart: mov al,13h int 10h mov di,3*4 mov ax,int_3 stosw xor ax,ax stosw mov bp,8000h mov di,pics mov cx,64 inc ax rep stosb mov ah,15 mov dx,7 @@: mov al,15 stosb mov al,ah mov cl,6 rep stosb mov al,8 stosb mov ah,7 dec dx jnz @b mov cl,8 rep stosb mov ax,[clock] mov [last_tick],ax mov [random],ax mov byte [current_row+1],well shr 8 xor ax,ax mov [score],ax dec ax stosw stosw stosw mov cl,ROWS new_piece: mov ax,1100000000000011b rep stosw @@: mov bx,[random] mov ax,257 mul bx inc ax mov cx,43243 div cx mov [random],dx and bx,7 cmp bx,7 je @b shl bx,1 mov ax,[pieces+bx] mov [current],ax mov word [current_column],6 + ((3+ROWS-4)*2) shl 8 xor ch,ch mov ax,test_piece int3 mov al,draw_piece and 0FFh int3 or ch,ch jz update_screen xor bp,bpprocess_key: xor ah,ah int 16h mov al,ah dec al jz start or bp,bp jz process_key mov si,rotate cmp al,48h-1 je action mov si,left cmp al,4Bh-1 je action mov si,right cmp al,4Dh-1 je action cmp al,50h-1 je drop_down jmp main_loopaction: call do_move jmp update_screendrop_down: mov si,down call do_move jz drop_downupdate_screen: mov bx,7 mov dx,12h mov ah,2 int 10h mov cl,12 @@: mov ax,[score] shr ax,cl and al,0Fh cmp al,10 sbb al,69h das mov ah,0Eh int 10h sub cl,4 jnc @b push es 0A000h pop es mov si,well+3*2 mov di,320*184+112 draw_well: lodsw push si xchg bx,ax shr bx,2 mov dl,12 draw_row: shr bx,1 salc and ax,64 mov si,pics add si,ax mov al,8 copy_line: mov cx,8 rep movsb add di,320-8 dec ax jnz copy_line sub di,320*8-8 dec dx jnz draw_row sub di,320*8+12*8 pop si cmp si,well+(3+ROWS)*2 jb draw_well pop esmain_loop: mov ah,1 int 16h jnz process_key mov ax,[clock] sub ax,[last_tick] cmp al,DELAY jb main_loop add [last_tick],ax mov si,down call do_move jz update_screen lay_piece: mov dx,1 mov si,well+3*2 mov di,si mov cx,ROWS check_row: lodsw cmp ax,1111111111111111b je remove_row stosw dec cx jmp check_next_row remove_row: shl dx,1 check_next_row: cmp si,well+(3+ROWS)*2 jb check_row add [score],dx jmp new_piecedo_move: mov ax,clear_piece int3 push dword [current] call si xor ch,ch mov al,test_piece and 0FFh int3 mov al,draw_piece and 0FFh pop edx or ch,ch jz @f mov dword [current],edx @@: int3 no_move: retdown: sub byte [current_row],2 retleft: dec [current_column] retright: inc [current_column] retrotate: mov cx,3 @@: bt [current],cx rcl dx,1 add cl,4 cmp cl,16 jb @b sub cl,17 jnc @b mov [current],dx retint_3: mov di,[current_row] mov bx,4 on_piece_row: mov dx,[current] mov cl,bh shr dx,cl and dx,1111b mov cl,[current_column] add cl,4 shl edx,cl shr edx,4 call ax add bh,4 scasw dec bl jnz on_piece_row iretclear_piece: not dx and [di],dx rettest_piece: test [di],dx jz @f or ch,1 @@: retdraw_piece: or [di],dx retpieces dw 0010001000100010b dw 0010011000100000b dw 0010001001100000b dw 0100010001100000b dw 0000011001100000b dw 0100011000100000b dw 0010011001000000brb 7C00h+510-$dw 0AA55h


Last edited by Dex4u on 19 Dec 2006, 19:45; edited 1 time in total
Post 18 Dec 2006, 03:26
View user's profile Send private message Reply with quote
kohlrak



Joined: 21 Jul 2006
Posts: 1421
Location: Uncle Sam's Pad
i lost my floppy last year, and i don't have any here anymore. I havn't seen any at the local walmart... any suggestions on how to write it to a bootable CD?
Post 18 Dec 2006, 03:42
View user's profile Send private message Visit poster's website AIM Address Yahoo Messenger MSN Messenger Reply with quote
tantrikwizard



Joined: 13 Dec 2006
Posts: 142
kohlrak wrote:
i lost my floppy last year, and i don't have any here anymore. I havn't seen any at the local walmart... any suggestions on how to write it to a bootable CD?


Most NERO distributions have the ability to create bootable CDs. The distribution I have requires a floppy or a disk image. You may find WinImage useful for injecting a boot sector into a disk or floppy image http://www.winimage.com. If you have linux or cygwin you can use dd to inject into a floppy disk:
Code:
dd if=boot.bin of=/dev/fd0

or a floppy disk image:
Code:
dd if=boot.bin of=bootdsk.img count=512 notrunc
or something like that, check the syntax with
Code:
dd --help
to be sure
Post 18 Dec 2006, 17:07
View user's profile Send private message Visit poster's website Yahoo Messenger MSN Messenger Reply with quote
kohlrak



Joined: 21 Jul 2006
Posts: 1421
Location: Uncle Sam's Pad
As for creating a disk image in the first place.... Or does that come with winimage? Because my cd software that comes with my exturnal burner, happens to have support for burning what i am pretty sure are images. I never thought of actually going as far as injecting it into the image, but that'd be a nice way of going about it. lol But, since it's shareware and i'm still living with my father, i will need to find a way to manually inject stuff into the image, but hopefully i'll be able to understand how it's done by looking at a simple hex of it. But i can figure that out myself. What i need now is a standard image file that i can use with it. Would it happen to be a file the size of a CD with nothing but 00s in it?

By the way, the software i'm stuck with using for burning CDs is Roxio. If i knew everything about the format of an image i'd hex my own image together and i wouldn't need a sharewear program to do it. lol That's what i'm gonna do with the XM format so i can create my own XM files and programs to make those XM files.
Post 19 Dec 2006, 05:58
View user's profile Send private message Visit poster's website AIM Address Yahoo Messenger MSN Messenger Reply with quote
bubach



Joined: 17 Sep 2004
Posts: 342
Location: Trollhättan, Sweden
you could pad the asm file with "db 0" so it assembles to the right size, you can do that with (IIRC) "rb FILE_STARTLABEL+FILESIZE_IN_BYTES-$"
Post 19 Dec 2006, 11:09
View user's profile Send private message Reply with quote
kohlrak



Joined: 21 Jul 2006
Posts: 1421
Location: Uncle Sam's Pad
I would do that, but i don't know the format. It it simply a file the size of a CD filled with 0s? If so, shouldn't the boot sector be zero, and i could easily create an image file by taking 702 * 1024 * 1024 then subtracting the size of my program so far, then compile it and i could use that?
Post 19 Dec 2006, 11:50
View user's profile Send private message Visit poster's website AIM Address Yahoo Messenger MSN Messenger Reply with quote
shoorick



Joined: 25 Feb 2005
Posts: 1603
Location: Ukraine
there: http://board.flatassembler.net/topic.php?t=3954 you can find a project, which produces valid floppy image while compilation. then you can point it to use as boot image while burning cd (select option "floppy image")
Post 19 Dec 2006, 12:33
View user's profile Send private message Visit poster's website Reply with quote
zhak



Joined: 12 Apr 2005
Posts: 489
Location: Belarus
muhaha!!! kohlrak, I don't believe that such an ignorant person can exist... Does he know about DOS? Or does he think that DOS was created under Windows Vista? But Bill thought that it's better not to show Vista till 2006 in commercial purposes? to my mind, this man doesn't cost any time to lose.
Post 19 Dec 2006, 13:19
View user's profile Send private message Reply with quote
kohlrak



Joined: 21 Jul 2006
Posts: 1421
Location: Uncle Sam's Pad
Zhak, i am experienced with my burning program comming up with many errors if the CD image is not in a certain format. Now if you don't mind, i'd like to learn how it's done, and you have not provided one bit of evidence of your accusations against me, nor do you have anything constructive in this post to say, so i will say something to you. Grow up.
Post 19 Dec 2006, 21:41
View user's profile Send private message Visit poster's website AIM Address Yahoo Messenger MSN Messenger Reply with quote
vid
Verbosity in development


Joined: 05 Sep 2003
Posts: 7109
Location: Slovakia
kohlrak: i think zhak was talking about your techer, not about you. He deserves aplogize
Post 19 Dec 2006, 21:54
View user's profile Send private message Visit poster's website AIM Address MSN Messenger ICQ Number Reply with quote
kohlrak



Joined: 21 Jul 2006
Posts: 1421
Location: Uncle Sam's Pad
Oh, pardon me, Zhak. I honestly appologize irregardlessly of weather a mod says so or not (not disrespect), but it's been a long day and some stuff has been goin' on so i'm a little jumpy. Please forgive me.
Post 19 Dec 2006, 21:56
View user's profile Send private message Visit poster's website AIM Address Yahoo Messenger MSN Messenger Reply with quote
Dex4u



Joined: 08 Feb 2005
Posts: 1601
Location: web
@kohlrak, you can burn DexOS as a demo, you will find ISO here:
http://www.dex4u.com/download.htm
Its a older ver, has the ISO are not kept as up to data as the images
Post 20 Dec 2006, 00:31
View user's profile Send private message Reply with quote
rugxulo



Joined: 09 Aug 2005
Posts: 2279
Location: Usono (aka, USA)
Dex4u wrote:
Here the code done by Tomasz Grysztar for the 512b compo.
assemble its as a bin file and use rawrite to put it on a floppy.
If you do not have floppy, maybe someone else will make a image.


I never got this originally (though I vaguely remember reading about the contest). Cool stuff!

And it works in DOSBOX 0.65 too (boot tetros.bin)! Smile Much simpler than writing to floppy.

EDIT: Score in hex, that's probably a first! Here's a screenie for everyone to marvel at. Laughing


Description:
Filesize: 1.45 KB
Viewed: 2314 Time(s)

tetros.png


Post 20 Dec 2006, 02:27
View user's profile Send private message Visit poster's website Reply with quote
kohlrak



Joined: 21 Jul 2006
Posts: 1421
Location: Uncle Sam's Pad
Just booted it up here and then tried menuet. Havin' a little trouble with menuet, but i'm gonna see if i can use some other examples too, incase it's not convincing enough that it's not a simple source code that can run as-well. (I'm gonna attempt to run a DVD, and i might be able to find a temporary replacement for a floppy, i just noticed that there is an emulation setting on my burner, so i can emulate a floppy, the real question will be if i burn the image, could i directly just put any old size bin file and it'll try to boot the bin..? Well, one way to find out, i'm taking it step by step, but if it works i can just use this emulation file that my burning thing made and store it on my jump drive for debugging apps later. If this test works (i havn't tried the non-image bin yet) does anyone want me to upload the 1.44 floppy emulation file?
Post 20 Dec 2006, 03:21
View user's profile Send private message Visit poster's website AIM Address Yahoo Messenger MSN Messenger Reply with quote
Dex4u



Joined: 08 Feb 2005
Posts: 1601
Location: web
Cool i did not know you could do the "boot filename.bin"
The latest DosBox works for CdPod too, which means, it emulates vesa2 .

PS: It does not emulate the atapi as the cd player does not work in DosBox.


Description:
Filesize: 1.8 KB
Viewed: 2302 Time(s)

CdPod.png


Post 20 Dec 2006, 03:37
View user's profile Send private message Reply with quote
kohlrak



Joined: 21 Jul 2006
Posts: 1421
Location: Uncle Sam's Pad
Crap, it's more than just the bin file. I'm gonna start asking people offline if they have a floppy that they'd trade for an unused CD-RW. (They have no clue what they'd loose out on. lol)

Dex4u works great, except that i can't access a few menues and since i'm running it from a CD i can't save anything so i really can't do my asm development in it, not that it really matters anyway since i don't think it can read my USB drive.
Post 20 Dec 2006, 04:37
View user's profile Send private message Visit poster's website AIM Address Yahoo Messenger MSN Messenger Reply with quote
TmX



Joined: 02 Mar 2006
Posts: 815
Location: Jakarta, Indonesia
rugxulo wrote:
Dex4u wrote:
Here the code done by Tomasz Grysztar for the 512b compo.
assemble its as a bin file and use rawrite to put it on a floppy.
If you do not have floppy, maybe someone else will make a image.


I never got this originally (though I vaguely remember reading about the contest). Cool stuff!

And it works in DOSBOX 0.65 too (boot tetros.bin)! Smile Much simpler than writing to floppy.

EDIT: Score in hex, that's probably a first! Here's a screenie for everyone to marvel at. Laughing


how do you do that ?
put the tetros.bin in the same directory as dosbox ?
Post 20 Dec 2006, 05:11
View user's profile Send private message Reply with quote
Display posts from previous:
Post new topic Reply to topic

Jump to:  
Goto page 1, 2  Next

< Last Thread | Next Thread >

Forum Rules:
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum
You cannot attach files in this forum
You can download files in this forum


Copyright © 2004-2018, Tomasz Grysztar.

Powered by rwasa.