X-Git-Url: http://wien.tomnetworks.com/gitweb/?a=blobdiff_plain;f=2_isa%2Fsrc%2Fbootrom.s;h=18bc1ca4dc54cfb2cbc2cbcd35611d31207e9bd7;hb=ca9e114da60c0ed09408ed049e017760d45b41b9;hp=dc484d7fea490ffa0b0b5d321494cba2ea36319d;hpb=0221dfbdde27d9a2113565b7cd0d9109e65513ee;p=calu.git diff --git a/2_isa/src/bootrom.s b/2_isa/src/bootrom.s index dc484d7..18bc1ca 100644 --- a/2_isa/src/bootrom.s +++ b/2_isa/src/bootrom.s @@ -9,6 +9,10 @@ .define UART_TRANS_EMPTY, 0x1 .define UART_RECV_NEW, 0x2 + .define PBASE, 0x2030 + .define PADDR, 0x4 + .define PDATA, 0x8 + ;----- start: br+ main @@ -18,17 +22,19 @@ start: main: ldi r10, UART_BASE@lo ldih r10, UART_BASE@hi -poll: - ldw r3, UART_STATUS(r10) - andx r3, UART_RECV_NEW - brzs+ poll; branch if zero + ldi r11, PBASE@lo + ldih r11, PBASE@hi +;poll: +; ldw r3, UART_STATUS(r10) +; andx r3, UART_RECV_NEW +; brzs+ poll; branch if zero call recv_byte ; we received the enter bootrom sign - xor r1, r1, r1 cmpi r0, 0x48 ; 'H' + xor r1, r1, r1 ; TODO: wieder raufziehen breq- bt_H - br poll ; else + ; br poll ; else ;----- send_byte: @@ -52,16 +58,15 @@ send_word: ;----- recv_byte: - ldw r3, UART_STATUS(r10) - andx r3, UART_RECV_NEW - brzs+ recv_byte; branch if zero +; ldw r3, UART_STATUS(r10) +; andx r3, UART_RECV_NEW +; brzs+ recv_byte; branch if zero xor r0, r0, r0 - ldb r0, UART_RECV(r10) +; ldb r0, UART_RECV(r10) ret ;----- recv_word: - xor r0, r0, r0 xor r1, r1, r1 call recv_byte or r1, r0, r1 @@ -79,13 +84,12 @@ recv_word: or r1, r0, r1 addi r0, r1, 0 - ret ;----- bootrom: - br tehend call recv_byte + br tehend xor r1, r1, r1 cmpi r0, 0x57 ; 'W' @@ -110,14 +114,14 @@ bootrom: bt_H: ldi r1, 0x4f ; 'O' call send_byte - ; br bootrom ; FIXME - br tehend + call send_byte + br bootrom bt_W: call recv_word ; receive addr - mov r6, r0 + stw r0, PADDR(r11) call recv_word ; receive instr - stx r0, 0(r6) + stw r0, PDATA(r11) ldi r1, 0x44 ; 'D' call send_byte br bootrom