.define INT_GLOBAL_BIT, 0x01
.define INT_UART_REC_BIT, 0x02
+ .define TIMER_BASE, 0x2040
+ .define TIMER_STCFG, 0x0
+ .define TIMER_VAL, 0x4
+
u_recv_byte:
ldw r3, UART_STATUS(r10)
andx r3, UART_RECV_NEW
stw r1, 0(r2)
ret
-;for deepjit
+t_init:
+ ldis r11, TIMER_BASE@lo
+ ldih r11, TIMER_BASE@hi
+ ret
+
+t_start:
+ ldis r1, 0x1
+ stw r1, TIMER_STCFG(r11)
+ ret
+
+t_stop:
+ ldis r1, 0x0
+ stw r1, TIMER_STCFG(r11)
+ ret
+
+t_valget:
+ ldw r0, TIMER_VAL(r11)
+ ret
+
+t_valset:
+ stw r1, TIMER_VAL(r11)
+ ret
+
+;for deepjit: start for programarea
prog_start:
call+ u_recv_byte
call u_send_newline
+ call t_init
+ ldis r1, 0
+ call t_valset
+ call t_start
+
ldi r1, 9;
ldi r10, list@lo ; global pointer
ldih r10, list@hi
call+ fibcall;
push r0
+ call t_init
+ call t_stop
+ call t_valget
+ pop r3
+ push r0
+ push r3
+
call u_init ; weil r10 ueberschrieben wird
ldis r1, str@lo
ldih r1, str@hi
pop r1
call+ u_send_uint
call u_send_newline
+ pop r1
+ call+ u_send_uint
+ call u_send_newline
hang:
br hang
#include "dt_inc.s"
.text
.org 0x0
- .define TIMER_BASE, 0x2040
- .define T_STCFG, 0x0
- .define T_VAL, 0x4
start:
br+ main
br+ main
ldis r1, 0x42
call u_send_byte
- ldis r11, TIMER_BASE@lo
- ldih r11, TIMER_BASE@hi
-
- ldis r1, 0x1
- stw r1, T_STCFG(r11)
+ call t_init
+ call t_start
loop:
call u_recv_byte
cmpi r0, 0x42
- breq bla
- ldw r1, T_VAL(r11)
+ breq reset_timer
+ call t_valget
+ addi r1, r0, 0
call u_send_uint
call u_send_newline
br loop
-bla:
+reset_timer:
ldis r1, 0
- stw r1, T_VAL(r11)
+ call t_valset
br loop