isa/examples: minor fixes at bootrom.s
authorBernhard Urban <lewurm@gmail.com>
Tue, 26 Oct 2010 18:29:59 +0000 (20:29 +0200)
committerBernhard Urban <lewurm@gmail.com>
Wed, 27 Oct 2010 16:15:41 +0000 (18:15 +0200)
2_isa/src/bootrom.s

index 9ae2570fffbf51c0695132d54337f670f8ec6e9c..13e4e45b21c4b81cde0f41e27ba9aa2cf49ac212 100644 (file)
        UART_TRANS_EMPTY=0
        UART_RECV_NEW=1
 
+       TIMEOUT_START=0x13371337
+       DEFAULT_PROG_START=0x200
+       STACKSTART=0x500 ; FIXME
+;-----
+main:
+       ; setup stackframe
+       ldil r15, STACKSTART@lo
+       ldih r15, STACKSTART@hi
+
+       ldil r3, TIMEOUT_START@lo
+       ldih r3, TIMEOUT_START@hi
+
+timeout_loop:
+       ldil r3, UART_STATUS@lo
+       ldih r3, UART_STATUS@hi
+       ldw r3, 0(r3)
+       andi r3, r3, 1 << UART_RECV_NEW
+       jumpzs+ next; jump if zero
+
+       branch recv_byte
+       ; we received the enter bootrom sign
+       cmp r0, 0x48 ; 'H'
+       jumpeq- bt_H
+
+next:
+       subi r3, r3, 1
+       jumpnz+ timeout_loop
+
+       ; branch to default entry point
+       ldil r0, DEFAULT_PROG_START@lo
+       ldih r0, DEFAULT_PROG_START@hi
+       jumpreg r0
+
+;-----
 send_byte:
        ldil r3, UART_STATUS@lo 
        ldih r3, UART_STATUS@hi
+       ldw r3, 0(r3)
        andi r3, r3, 1 << UART_TRANS_EMPTY
        jumpzs+ send_byte ; jump if zero
        ldil r3, UART_TRANS@lo  
@@ -27,6 +62,7 @@ send_byte:
        stb r0, 0(r3)
        ret
 
+;-----
 send_word:
        ; TODO: loop? (less codesize...)
        branch send_byte
@@ -38,9 +74,11 @@ send_word:
        branch send_byte
        ret
 
+;-----
 recv_byte:
        ldil r3, UART_STATUS@lo 
        ldih r3, UART_STATUS@hi
+       ldw r3, 0(r3)
        andi r3, r3, 1 << UART_RECV_NEW
        jumpzs+ send_byte ; jump if zero
        ldil r3, UART_RECV@lo   
@@ -48,6 +86,7 @@ recv_byte:
        lwb r0, 0(r3)
        ret
 
+;-----
 recv_word:
        ldil r1, 0x0 
        branch recv_byte
@@ -69,6 +108,7 @@ recv_word:
        ret
 
 
+;-----
 bootrom:
        branch recv_byte
 
@@ -136,36 +176,4 @@ bt_J:
        branch recv_word
        jumpreg r0
 
-       
-       TIMEOUT_START=0x13371337
-       DEFAULT_PROG_START=0x200
-       STACKSTART=0x500 ; FIXME
-main:
-       ; setup stackframe
-       ldil r15, STACKSTART@lo 
-       ldih r15, STACKSTART@hi
-
-       ldil r3, TIMEOUT_START@lo       
-       ldih r3, TIMEOUT_START@hi
-
-timeout_loop:
-       ldil r3, UART_STATUS@lo 
-       ldih r3, UART_STATUS@hi
-       andi r3, r3, 1 << UART_RECV_NEW
-       jumpzs+ next; jump if zero
-
-       branch recv_byte
-       ; we received the enter bootrom sign
-       cmp r0, 0x48 ; 'H'
-       jumpeq- bt_H
-
-next:
-       subi r3, r3, 1
-       jumpnz+ timeout_loop
-       
-       ; branch to default entry point
-       ldil r0, DEFAULT_PROG_START@lo  
-       ldih r0, DEFAULT_PROG_START@hi
-       jumpreg r0
-
-; 99 instr. please update after modification
+; 101 instr. please update after modification