BMW-small -100 bytes / fix for help cmd

This commit is contained in:
bg 2009-12-15 22:20:46 +00:00
parent 58cc633be2
commit 24e4a90f4a
2 changed files with 46 additions and 60 deletions

View File

@ -2107,43 +2107,9 @@ dst0 = 10
dst1 = 11
.global bmw256
bmw256:
push_range 2, 11
stack_alloc_large 64+4
adiw r30, 1
movw ctx0, r30
movw dst0, r24
movw msg0, r22
movw len0, r18
movw len2, r20
movw r24, ctx0
rcall bmw256_init
20:
mov r18, len2
or r18, len3
breq 50f
movw r24, ctx0
movw r22, msg0
rcall bmw_small_nextBlock
ldi r20, 2
sub len1, r20
sbc len2, r1
sbc len3, r1
ldi r20, 64
add msg0, r20
adc msg1, r1
rjmp 20b
50:
movw r24, ctx0
movw r22, msg0
movw r20, len0
rcall bmw_small_lastBlock
movw r24, dst0
movw r22, ctx0
rcall bmw256_ctx2hash
stack_free_large 64+4
pop_range 2, 11
ret
push r16
ldi r16, 1
rjmp bmw_small_all
/*******************************************************************************
* void bmw224(void* dest, const void* msg, uint32_t length_b){
@ -2174,6 +2140,10 @@ dst0 = 10
dst1 = 11
.global bmw224
bmw224:
push r16
clr r16
bmw_small_all:
push_range 2, 11
stack_alloc_large 64+4
adiw r30, 1
@ -2183,7 +2153,11 @@ bmw224:
movw len0, r18
movw len2, r20
movw r24, ctx0
rcall bmw224_init
ldi r30, pm_lo8(init_lut)
ldi r31, pm_hi8(init_lut)
add r30, r16
adc r31, r1
icall
20:
mov r18, len2
or r18, len3
@ -2206,7 +2180,19 @@ bmw224:
rcall bmw_small_lastBlock
movw r24, dst0
movw r22, ctx0
rcall bmw224_ctx2hash
ldi r30, pm_lo8(c2h_lut)
ldi r31, pm_hi8(c2h_lut)
add r30, r16
adc r31, r1
icall
stack_free_large 64+4
pop_range 2, 11
pop r16
ret
init_lut:
rjmp bmw224_init
rjmp bmw256_init
c2h_lut:
rjmp bmw224_ctx2hash
rjmp bmw256_ctx2hash

View File

@ -38,7 +38,7 @@
* param cmdlist: r24:r25
*/
TMP_CNT_0 = 26
TMP_CNT_1 = 27
TMP_CNT_1 = 27
.global max_cmd_length
max_cmd_length:
movw r30, r24
@ -68,10 +68,10 @@ max_cmd_length:
brge 1b
movw r24, TMP_CNT_0
rjmp 1b
/******************************************************************************/
.global echo_ctrl
echo_ctrl:
echo_ctrl:
call strstrip
tst r24
brne 3f
@ -95,14 +95,14 @@ echo_ctrl:
cpi r20, 'n'
breq exit_1
cpi r20, 'f'
breq exit_0
breq exit_0
ret
exit_1:
exit_1:
ldi r20, 1
rjmp exit
exit_0:
ldi r20, 0
exit:
exit:
sts cli_echo, r20
ret
print_echo_status:
@ -128,12 +128,12 @@ print_echo_status:
clr r25
ldi r24, '\n'
rcall cli_putc
ret
ret
pecho:
.asciz "\r\necho is o"
/******************************************************************************/
/* int8_t search_and_call(char* cmd, uint16_t maxcmdlength, PGM_VOID_P cmdlist)
/* int8_t search_and_call(char* cmd, uint16_t maxcmdlength, PGM_VOID_P cmdlist)
* param cmd: r24:r25
* param maxcmdlength: r22:r23
* param cmdlist: r20:r21
@ -146,7 +146,7 @@ CMD_1 = 17
snc_auto_help:
movw r24, r22
movw r22, r20
rcall cli_auto_help
rcall cli_auto_help
snc_return_1:
ldi r24, 1
rjmp snc_return
@ -154,7 +154,7 @@ snc_return_2:
ldi r24, 2
snc_return:
clr r25
ret
ret
.global search_and_call
search_and_call:
@ -183,7 +183,7 @@ search_and_call:
tst r18
brne 1f
2: rjmp snc_auto_help
1:
1:
push r28
push r29
push CMD_0
@ -237,7 +237,7 @@ snc_found:
icall
ldi r24, 1
rjmp 5f
4: ldi r24, 2
4: ldi r24, 2
snc_return_0:
clr r24
5: pop LEN_1
@ -261,7 +261,7 @@ nocommand_str:
* param cmdlist: r22:r23
*/
ITM_0 = 12
ITM_1 = 13
ITM_1 = 13
CMD_0 = 14
CMD_1 = 15
LEN_0 = 16
@ -300,7 +300,7 @@ cli_option_listing:
movw r24, ITM_0
rcall cli_putstr_P
rjmp 1b
99:
99:
ldi r24, lo8(prompt_str)
ldi r25, hi8(prompt_str)
rcall cli_putstr_P
@ -310,9 +310,9 @@ cli_option_listing:
pop_range 12, 17
ret
prompt_str:
prompt_str:
.asciz "\r\n>"
itemprefix_str:
itemprefix_str:
.asciz "\r\n "
/******************************************************************************/
@ -322,7 +322,7 @@ itemprefix_str:
*/
TMP_0 = 14
TMP_1 = 15
TMP_1 = 15
LEN_0 = 16
LEN_1 = 17
LST_0 = 28
@ -341,7 +341,7 @@ cli_auto_help:
lpm r25, Z+
movw r28, r30
adiw r24, 0
breq 99f
breq 99f
movw TMP_0, r24
rcall cli_putstr_P
movw r24, TMP_0
@ -357,9 +357,9 @@ cli_auto_help:
brne 2b
4: ldi r24, lo8(sep_str)
ldi r25, hi8(sep_str)
rcall cli_putstr_P
ldi r22, lo8(none_str)
ldi r23, hi8(none_str)
rcall cli_putstr_P
movw r30, r28
lpm r24, Z+
lpm r25, Z+
@ -369,7 +369,7 @@ cli_auto_help:
ldi r22, lo8(yes_str)
ldi r23, hi8(yes_str)
5: movw r24, r22
rcall cli_putstr_P
rcall cli_putstr_P
ldi r24, lo8(sep2_str)
ldi r25, hi8(sep2_str)
rcall cli_putstr_P
@ -388,7 +388,7 @@ cli_auto_help:
rcall cli_putc
adiw r28, CMDLIST_ENTRY_SIZE-4
rjmp 1b
99:
99:
pop_range 28, 29
pop_range 14, 17
ret