Question about which tools to use, bugs, the best way to implement a function, etc should go here. Don't forget to see if your question is answered in the wiki first! When in doubt post here.
Created a simple boot image. Works fine. The next step is to enter protected mode. Just to make sure I was in protected mode I thought I would create a simple routine in turning on the scroll lock key light when I entered protected mode. Tested it before making the switch nothing happens.....
Now as a guide I have been using the book "The Undocumented PC"
So I made sure the keyboard buffer was empty before sending any command. Sent the relivant information but still no luck
Here is the code used.
;;This next thing is just a test....
Loop66:
in al,0x64
jmp $+2
test al,2
jz short Ok
jmp short Loop66
Ok:
mov al,0xed
out 0x60,al
;jmp $+2 ;Clear prefetch que!!!
mov al,0x01
out 0x60,al
;;End test.
Now I have heard somewhere that you have to make a delay after sending any commands to the I/O ports is this true
;;This next thing is just a test....
Loop661:
in al,0x64
test al,2
jz short Ok1
jmp short Loop661
Ok1:
mov al,0xed
out 0x60,al
Loop662:
in al,0x64
test al,2
jz short Ok2
jmp short Loop662
Ok2:
mov al,0x01
out 0x60,al
My 64k OS wrote:
Now I have heard somewhere that you have to make a delay after sending any commands to the I/O ports is this true
It used to be true for some computers. Accessing IO ports is slow, and the CPU/motherboard is supposed to wait for it to happen. Old motherboards for 80286 or 80386 (can't remember exactly which) failed to wait, so programmers had to put little delays after accessing any IO ports. If your OS doesn't support 80386 (or earlier) computers it shouldn't be necessary.
Cheers,
Brendan
For all things; perfection is, and will always remain, impossible to achieve in practice. However; by striving for perfection we create things that are as perfect as practically possible. Let the pursuit of perfection be our guide.