From: Bernhard Urban Date: Tue, 11 Jan 2011 17:11:31 +0000 (+0100) Subject: uartint.s: testprogramm fuers proggen X-Git-Url: http://wien.tomnetworks.com/gitweb/?p=calu.git;a=commitdiff_plain;h=be305acf4a40fd92a8bbf1c433928693fba2e281 uartint.s: testprogramm fuers proggen --- diff --git a/3_test/uartint.s b/3_test/uartint.s index ed9df57..d2b7d58 100644 --- a/3_test/uartint.s +++ b/3_test/uartint.s @@ -1,7 +1,18 @@ .data str: - .fill 0x41424344 - .fill 0x0a0d0000 + ; "zlol" + .fill 0x5a4c4f4c + .fill 0x00000a0d + +int2hex: + ;3210 + .fill 0x33323130 + ;7654 + .fill 0x37363534 + ;ba98 + .fill 0x62613938 + ;fedc + .fill 0x66656463 .text .define UART_BASE, 0x2000 .define UART_STATUS, 0x0 @@ -15,6 +26,8 @@ start: br+ main ret main: + xor r10, r10, r10 + xor r7, r7, r7 ldi r10, UART_BASE@lo ldih r10, UART_BASE@hi ldw r5, UART_STATUS(r10) @@ -25,19 +38,23 @@ main: xor r1, r1, r1 xor r2, r2, r2 xor r3, r3, r3 - ; ldi r1, str - ; ldi r1, 0x58 - ; stb r1, str(r3) - ldw r1, str(r3) + ldi r1, str ldi r2, 6 - ;call send_string - call send_byte + call send_string + xor r1, r1, r1 + xor r2, r2, r2 + ldi r1, 0x12bd + ldih r1, 0x1337 + call debug_uint + ldi r1, 0x1337 + ldih r1, 0x12bd + call debug_uint main2: ldw r5, UART_STATUS(r10) andx r5, UART_RECV_NEW brzs+ main2 ; no new data? - ldw r7, UART_RECV(r10) ; load data + ldb r7, UART_RECV(r10) ; load data uartnrdy: ldw r5, 0(r0) andx r5, UART_TRANS_EMPTY @@ -54,7 +71,7 @@ send_string_int: reteq- ldb r1, 0(r3) call send_byte - addi r2, r2, 0-1 + addis r2, r2, 0-1 addi r3, r3, 1 br send_string_int @@ -62,5 +79,34 @@ send_byte: ldw r9, UART_STATUS(r10) andx r9, UART_TRANS_EMPTY brnz+ send_byte ; branch if not zero - stw r1, UART_TRANS(r10) + stb r1, UART_TRANS(r10) ret + +debug_uint: + addi r8, r1, 0 + ;usb_sendbuffersafe ("0x", 2); + xor r1, r1, r1 + ldi r1, 0x30 + call send_byte + xor r1, r1, r1 + ldi r1, 0x78 + call send_byte + ;j = 0 + xor r7, r7, r7 + xor r6, r6, r6 + ldi r6, int2hex@lo + ldih r6, int2hex@hi +debug_unit_loop: + ;for (j = 0; j < 8; ++j) { + cmpi r7, 8 + reteq + ;usb_sendbuffersafe (&int2hex[(i >> 28) & 0xf], 1); + lrs r1, r8, 28 + andx r1, 0xf + add r9, r6, r1 + ldb r1, 0(r9) + call send_byte + ;i <<= 4; + lls r8, r8, 4 + addi r7, r7, 1 + br debug_unit_loop