NASM - The Netwide Assembler
NASM Forum => Using NASM => Topic started by: Zulfi Khan on July 06, 2009, 10:18:32 AM
-
Hi,
Can somebody plz help me with copying this code to sector2 of my floppy. I am using partcopy but its not working.
;--- test kernel.bin---
; push cs
; push cs
; pop ds
; pop es
mov si, msg
mov ah, 0Eh
mov bx, 7
top:
lodsb
cmp al, 0
jz blackhole
int 10h
jmp short top
blackhole:
hlt
jmp blackhole
msg db 'Welcome to the Kernel!', 0
D:\NASMPR~1>partcopy test.bin 0 200 -f0 200
Failed to read source at offset 2C
D:\NASMPR~1>
Zulfi.
-
Zulfi, stop spamming the nasm-devel list with repeats of questions here.
Continue to do so, and you will find that more people will ignore you than help you.
-
Yeah! (statistically, more people are ignoring him than helping him now! :)
I think the only problem with "partcopy" is that you're asking it to read more than you've got in the file. Cut it down to:
partcopy test.bin 0 2C -f0 200
May work... An alternative... You've got the lame little program "writeit.asm":
; Your boot sector: DOS FILE: WRITEIT.ASM
; nasm -f bin -o writeit.com writeit.asm
[BITS 16]
[ORG 0x100]
mov ax,3D00h
mov dx,filename
int 21h
; check for errors here!
jc exit
mov bx,ax
mov ah,3Fh
mov dx,buffer
mov cx,512
int 21h
; check for errors here!
jc exit
; at an equivalent point, "partcopy" apparently checks the
; number of bytes actually read (in ax). We could do the same.
; ... but we won't :)
mov ah,3Eh ; close input file...
int 21h
push ds ; don't think we need this...
pop es ; won't hurt.
mov bx, buffer
mov dl, 00h
mov dh, 0
mov cl, 1 ; change this to 2 for sector 2
mov ch, 0
mov ah, 03h
mov al, 1
int 13h
exit:
mov ax, 4C00h
int 21h
filename db 'BOOT.BIN',0 ; change to "test.bin" or whatever
;buffer times 512 db 0 ; is this correct nasm syntax?
; yeah, the syntax is fine, but why clutter up our executable
; with zeros?
section .bss
buffer resb 512
;-----------------------
Copy "writeit.asm" to "writek.asm" or something, make those couple changes, and it might work for you. But it's strictly a "one trick pony" - will only write a single sector, etc. We could make it a lot more powerful... prompt for the filename, show the length read and how many sectors it will take up, ask which sector to start writing it at, display results, prompt for another filename... until done. Might make an interesting "project" - sector to CHS arithmetic is a PITA... (example in Deb Wiles' "bootsect.bin", which you've got). But it's "been done".
You could also copy multiple .bin files to a single "image.bin" and write it to floppy with "rawwrite" or such:
copy /b boot.bin+map.bin+root.bin+kernel.bin+shell.bin image.bin
rawwrite image.bin
There's more than one way to skin a cat (but it makes a really small fur coat :)
Best,
Frank
-
Sorry I am not much familiar with these forums. That's why I put my questions on SourceForge as well as on nabble. But this time i wrongly put it on the deve forum and i would take care of it next time.
I am still working on the solutions.
Zulfi.