X-Git-Url: http://wien.tomnetworks.com/gitweb/?a=blobdiff_plain;f=2_isa%2Fsrc%2Fbootrom.s;h=87b7f83f1a508bbd913707b723f90962ada6ad48;hb=a80e63bb420d4ae8dee66703bca59035d672c9fb;hp=18bc1ca4dc54cfb2cbc2cbcd35611d31207e9bd7;hpb=ca9e114da60c0ed09408ed049e017760d45b41b9;p=calu.git diff --git a/2_isa/src/bootrom.s b/2_isa/src/bootrom.s index 18bc1ca..87b7f83 100644 --- a/2_isa/src/bootrom.s +++ b/2_isa/src/bootrom.s @@ -24,24 +24,20 @@ main: ldih r10, UART_BASE@hi ldi r11, PBASE@lo ldih r11, PBASE@hi -;poll: -; ldw r3, UART_STATUS(r10) -; andx r3, UART_RECV_NEW -; brzs+ poll; branch if zero - +poll: 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 + breq+ bt_H + br poll ; else ;----- send_byte: ldw r3, UART_STATUS(r10) andx r3, UART_TRANS_EMPTY brnz+ send_byte ; branch if not zero - stb r1, UART_TRANS(r10) + stw r1, UART_TRANS(r10) ret ;----- @@ -58,11 +54,11 @@ 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) + ldw r0, UART_RECV(r10) ret ;----- @@ -89,9 +85,8 @@ recv_word: ;----- bootrom: call recv_byte - br tehend - xor r1, r1, r1 + cmpi r0, 0x57 ; 'W' breq- bt_W @@ -114,26 +109,26 @@ bootrom: bt_H: ldi r1, 0x4f ; 'O' call send_byte - call send_byte br bootrom bt_W: - call recv_word ; receive addr - stw r0, PADDR(r11) - call recv_word ; receive instr - stw r0, PDATA(r11) - ldi r1, 0x44 ; 'D' - call send_byte + ; call recv_word ; receive addr + ; stw r0, PADDR(r11) + ; call recv_word ; receive instr + ; stw r0, PDATA(r11) + ; ldi r1, 0x44 ; 'D' + ; call send_byte br bootrom bt_R: - call recv_word ; receive addr - mov r2, r0 - ldi r1, 0x46 ; 'F' - call send_byte - ldx r1, 0(r2) - call send_word - br bootrom + ;call recv_word ; receive addr + ;mov r2, r0 + ;ldi r1, 0x46 ; 'F' + ;call send_byte + ;ldx r1, 0(r2) + ;call send_word + ;br bootrom + br tehend bt_Q: call recv_word ; receive addr @@ -158,3 +153,12 @@ bt_J: brr r0 tehend: + xor r1, r1, r1 + ldi r1, 0x41 ; 'A' + call send_byte + xor r1, r1, r1 + ldi r1, 0x42 ; 'B' + call send_byte + xor r1, r1, r1 + ldi r1, 0x43 ; 'C' + call send_byte