Simon Xin Cheng wrote:

rombios.bin. However, when I tried to print out more bytes, I can only get 16 output. What is the problem? My code is right after copy bios to 0xF0000:

mov ax, #0x10
mov ds, ax
mov eax, #0xF0000
mov esi, eax

mov ecx, #0x30 ; loop counter
mov dx, #0x3f8 ; serial port

cld
str_loop: lodsb
out dx, al
loop str_loop


Thats because you have forgotten that the CPU runs several orders of magnitude faster than the serial port. You only get 16 bytes because the 16550 UART FIFO is only 16 bytes deep. After that your bytes are going to the bit bucket.


You have to wait until the busy flag of the 16550 is clear after you write each byte. See the a data sheet on the UART.

_______________________________________________
Linuxbios mailing list
[EMAIL PROTECTED]
http://www.clustermatic.org/mailman/listinfo/linuxbios

Reply via email to