hello,
first you need to write an assembly program that is 512 byte in length or smaller.
then use an exe2bin program (see FAQ)
then write another program to write this to sector zero on the floppy.
on PC boot this sector is loaded into 7C00h and executed. think first byte has to be EBh...
3gl to 1gl is big mistake - i wouldnt bother because higher generation languages produce more redundant code (infact masses of unused libraries etc)
you can chose a 1gl like assembly - technical but thin is size and fast!!!!
or you can choose a 3gl like VB or C++ - not very technical (ie a...
hmm, didnt mean to confuse you. i havnt got technical data but i was hoping to give you an eye opener as to what the problem is.
more than 1 register port... sometimes ports come as a pair, 1 is the control and the other is the data. you set a particular value in the control port, for example...
if not OS then video card!
when in text mode the base address tends to be the same but when in higher resolution the OS will not be using the standard base address. it may be using a different page for the CMD or that particular video card wont allow the OS to process the standard base address...
also, in protected mode you need to ensure you have a valid data segment configured in your GDT or LDT.
0040:0000 is a real mode segmented address and if used in protected mode will cause exception 13 #GP if segment 0040 hasnt been setup correctly.
if you want to know more about protected mode...
Hello,
port addresses used to be hard wired on the bus so they are always the same address. more recently they can be setup using cmos but they still remain the same due to convention.
you need to look at how your TSS has been configured for your protected mode program. port access can be...
hello,
i notice the annotations say portA when portB is written.
a couple of things to consider (if not already)
is zero a valid port code?
sometimes another register is used to set the port mode.
some port commands require a series of bytes to complete and before another command will be...
it depends how you want it to work - i got confused along the way lol
ok - my 2 suggestions.
1st is simple - it sounds when any door is open and will only resound after all doors have been closed.
write the status of each pin to consecutive bits in a byte. if the byte>zero then set the alarm...
you ever heard of ralf brown's interrupt list?
it covers all bios calls including the extended hard disk and pci calls etc.
if you are an experienced vet youll pick it up NP!
just search google for ralf brown interrupt list
duno if thats any help
"There are 10 types of people in this...
let me find the URL so you can download the datasheet for the 82077AA floppy controller - it explains everything about it - all ports and how to program read/write/verify/format/seek functions etc
its great - just cant seem 2 find it atm :(
"There are 10 types of people in this world...
hmm, i know a little about this but not alot ;)
when you perform a sector read or write - i beleive it works something liek this - initialise drive for read/write, during process: the floppy controller fires an interrupt for each byte of a sector and you need a short routine to either...
erm, maybe you cant provide the same functionality for all pin at the same time?
if you examine PIC architecture you will see that every pin can be given a priority. the PIC will service each pin interrupt in order of priority until no interrupt requests exist and so on.
multitasking does not...
yes, the whole purpose of the bp register is to access parameters passed to a called routine.
however, recent complexity of routines are requiring alot more paramters to be passed. have you looked at the enter and leave opcodes? these opcodes are specifically used to pass a block of paramters...
there is an FAQ stating a URL where to download the intel manuals. These manuals explain everything about the programming assemly on the 80x86 and specifically explains the differences of what occurs and how the processor reacts when near and far opcodes are used.
and ofcorse a whole lot more...
for your information
i put an FAQ that points to a url where you can download some intel manuals on the 80x86 series processors.
they are a must for all assembly programmers as the manuals go deeply in all the commands and usage.
one section is dedicated on index and addressing modes and...
thinking about it tho - i might redesign the linear map so the gdt and idt start from 0000:0000 so i wouldnt need to juggle the gdtr and idtr around when a change of code size occurs.
this would also bring benifits to the global code area which i have specifically designed to reduce the number...
personally - i have not had any problem in acheiving my aims with TASM v5 - which can be downloaded for free.
alot of protected mode tutorials are quite good but i find alot of them forget to mention the difference between 16bit mode and 32bit mode in regard to the gdt and idt.
when executing...
i notice you have alot of subroutines that are the same but with only minor register value diferences.
you could make your program alot smaller if you had the subroutines push the different values onto the stack then call the same routine which poped these different values off the stack and...
the retf seems a bit long winded to me
when ever i want to perform a hard coded far jump i always use the following
this is 16bit code so the address after the opcode is a word and not a dword.
my ASM code would look something like:
db 0EAh ;Opcode for JMP FAR Immediate
dw 0h,0FFFFh...
nice little routine you made :)
just a couple things of interest...
i notice you are using a far jump at the start. you could use a relative jump as the code segment on boot is set to 07C0h theres no need for far jumps here.
also...
personally i lost the org 0100h directive and wrote the com...
This site uses cookies to help personalise content, tailor your experience and to keep you logged in if you register.
By continuing to use this site, you are consenting to our use of cookies.