You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
483 lines
8.7 KiB
483 lines
8.7 KiB
#CC-RL Compiler RL78 Assembler Source
|
|
#@ CC-RL Version : V1.15.00 [06 Dec 2024]
|
|
#@ Commmand :
|
|
#@ -cpu=S3
|
|
#@ -S
|
|
#@ -Olite
|
|
#@ -I .
|
|
#@ -asm_path=tmp
|
|
#@ r_main.c
|
|
#@ owi.c
|
|
#@ app_owi_service.c
|
|
#@ compiled at Tue Sep 15 15:24:24 2026
|
|
|
|
.EXTERN _memset
|
|
.PUBLIC _app_owi_read_basic
|
|
.EXTERN _R_WDT_Restart
|
|
.EXTERN _OWI_ReadBytesRaw
|
|
.EXTERN _delay_us
|
|
.PUBLIC _app_owi_write_basic
|
|
.EXTERN _OWI_CommandModeRaw
|
|
.PUBLIC _app_owi_write_t_basic
|
|
.EXTERN _OWI_T_CommandModeRaw
|
|
|
|
.SECTION .textf,TEXTF
|
|
.TYPE _app_owi_from_raw@1,function,.LFE1-_app_owi_from_raw@1
|
|
_app_owi_from_raw@1:
|
|
.STACK _app_owi_from_raw@1 = 338
|
|
subw sp, #0xFE
|
|
subw sp, #0x4E
|
|
movw [sp+0x02], ax
|
|
pop ax
|
|
push bc
|
|
movw de, #0x0148
|
|
clrw bc
|
|
movw ax, sp
|
|
addw ax, #0x0004
|
|
call !!_memset
|
|
movw ax, [sp+0x00]
|
|
or a, x
|
|
bz $.BB@LABEL@1_2
|
|
.BB@LABEL@1_1: ; entry.bb6_crit_edge
|
|
oneb a
|
|
br $.BB@LABEL@1_3
|
|
.BB@LABEL@1_2: ; bb5
|
|
clrb a
|
|
.BB@LABEL@1_3: ; bb6
|
|
cmp0 a
|
|
bnz $.BB@LABEL@1_5
|
|
.BB@LABEL@1_4: ; if_then_bb
|
|
mov [sp+0x04], #0x00
|
|
br $.BB@LABEL@1_9
|
|
.BB@LABEL@1_5: ; if_break_bb
|
|
pop de
|
|
push de
|
|
mov a, [de]
|
|
mov [sp+0x04], a
|
|
mov a, [de+0x01]
|
|
mov [sp+0x05], a
|
|
movw ax, [de+0x02]
|
|
movw [sp+0x06], ax
|
|
pop bc
|
|
push bc
|
|
movw ax, 0x0144[bc]
|
|
push bc
|
|
movw bc, sp
|
|
movw 0x014A[bc], ax
|
|
pop bc
|
|
mov a, 0x0146[bc]
|
|
movw bc, sp
|
|
mov 0x014A[bc], a
|
|
clrw bc
|
|
pop hl
|
|
push hl
|
|
br $.BB@LABEL@1_7
|
|
.BB@LABEL@1_6: ; bb33
|
|
movw ax, sp
|
|
addw ax, #0x0004
|
|
addw ax, bc
|
|
addw ax, #0x0004
|
|
movw [sp+0x00], ax
|
|
movw ax, hl
|
|
addw ax, bc
|
|
addw ax, #0x0004
|
|
movw de, ax
|
|
mov a, [de]
|
|
mov d, a
|
|
movw ax, [sp+0x00]
|
|
xchw ax, de
|
|
mov [de], a
|
|
incw bc
|
|
.BB@LABEL@1_7: ; bb48
|
|
movw ax, bc
|
|
cmpw ax, [hl+0x02]
|
|
bnc $.BB@LABEL@1_9
|
|
.BB@LABEL@1_8: ; bb48
|
|
cmpw ax, #0x0140
|
|
bc $.BB@LABEL@1_6
|
|
.BB@LABEL@1_9: ; bb67
|
|
movw ax, sp
|
|
addw ax, #0x0004
|
|
movw bc, ax
|
|
movw ax, [sp+0x02]
|
|
movw de, #0x0148
|
|
call !!_memcpy
|
|
addw sp, #0xFE
|
|
addw sp, #0x4E
|
|
ret
|
|
.LFE1:
|
|
.TYPE _is_long_owi_read@1,function,.LFE2-_is_long_owi_read@1
|
|
_is_long_owi_read@1:
|
|
.STACK _is_long_owi_read@1 = 4
|
|
cmpw ax, #0x007F
|
|
bz $.BB@LABEL@2_2
|
|
.BB@LABEL@2_1: ; entry
|
|
clrb b
|
|
br $.BB@LABEL@2_3
|
|
.BB@LABEL@2_2: ; entry
|
|
oneb b
|
|
.BB@LABEL@2_3: ; entry
|
|
cmpw ax, #0x0077
|
|
bz $.BB@LABEL@2_5
|
|
.BB@LABEL@2_4: ; entry
|
|
clrb a
|
|
br $.BB@LABEL@2_6
|
|
.BB@LABEL@2_5: ; entry
|
|
oneb a
|
|
.BB@LABEL@2_6: ; entry
|
|
or a, b
|
|
ret
|
|
.LFE2:
|
|
.TYPE _looks_bad_tail@1,function,.LFE3-_looks_bad_tail@1
|
|
_looks_bad_tail@1:
|
|
.STACK _looks_bad_tail@1 = 8
|
|
subw sp, #0x04
|
|
cmpw ax, #0x0000
|
|
bnz $.BB@LABEL@3_2
|
|
.BB@LABEL@3_1: ; entry.bb81_crit_edge
|
|
oneb a
|
|
br $.BB@LABEL@3_15
|
|
.BB@LABEL@3_2: ; if_break_bb
|
|
movw hl, ax
|
|
movw ax, [hl+0x02]
|
|
movw de, ax
|
|
cmpw ax, #0x0018
|
|
bc $.BB@LABEL@3_1
|
|
.BB@LABEL@3_3: ; if_break_bb17
|
|
clrb b
|
|
mov a, b
|
|
mov [sp+0x03], a
|
|
movw ax, de
|
|
addw ax, #0xFFE8
|
|
movw [sp+0x00], ax
|
|
mov a, b
|
|
mov [sp+0x02], a
|
|
br $.BB@LABEL@3_13
|
|
.BB@LABEL@3_4: ; bb22
|
|
movw ax, [sp+0x00]
|
|
movw bc, ax
|
|
addw ax, hl
|
|
addw ax, #0x0004
|
|
movw de, ax
|
|
mov a, [de]
|
|
mov x, a
|
|
cmp0 x
|
|
bz $.BB@LABEL@3_6
|
|
.BB@LABEL@3_5: ; bb22.if_break_bb38_crit_edge
|
|
clrb a
|
|
br $.BB@LABEL@3_7
|
|
.BB@LABEL@3_6: ; if_then_bb35
|
|
mov a, [sp+0x02]
|
|
inc a
|
|
.BB@LABEL@3_7: ; if_then_bb35
|
|
mov [sp+0x02], a
|
|
inc x
|
|
bz $.BB@LABEL@3_9
|
|
.BB@LABEL@3_8: ; if_break_bb38.if_break_bb48_crit_edge
|
|
clrb a
|
|
br $.BB@LABEL@3_10
|
|
.BB@LABEL@3_9: ; if_then_bb44
|
|
mov a, [sp+0x03]
|
|
inc a
|
|
.BB@LABEL@3_10: ; if_then_bb44
|
|
mov [sp+0x03], a
|
|
mov a, [sp+0x02]
|
|
cmp a, #0x08
|
|
bnc $.BB@LABEL@3_1
|
|
.BB@LABEL@3_11: ; if_break_bb48
|
|
mov a, [sp+0x03]
|
|
cmp a, #0x08
|
|
bnc $.BB@LABEL@3_1
|
|
.BB@LABEL@3_12: ; if_break_bb68
|
|
incw bc
|
|
pop ax
|
|
push bc
|
|
.BB@LABEL@3_13: ; bb71
|
|
movw ax, [sp+0x00]
|
|
cmpw ax, [hl+0x02]
|
|
bc $.BB@LABEL@3_4
|
|
.BB@LABEL@3_14: ; bb71.bb81_crit_edge
|
|
clrb a
|
|
.BB@LABEL@3_15: ; bb81
|
|
addw sp, #0x04
|
|
ret
|
|
.LFE3:
|
|
.TYPE _looks_bad_last_bytes@1,function,.LFE4-_looks_bad_last_bytes@1
|
|
_looks_bad_last_bytes@1:
|
|
.STACK _looks_bad_last_bytes@1 = 8
|
|
subw sp, #0x04
|
|
cmpw ax, #0x0000
|
|
bz $.BB@LABEL@4_13
|
|
.BB@LABEL@4_1: ; if_break_bb
|
|
movw de, ax
|
|
movw ax, [de+0x02]
|
|
cmpw ax, #0x0003
|
|
bc $.BB@LABEL@4_13
|
|
.BB@LABEL@4_2: ; if_break_bb17
|
|
addw ax, #0xFFFD
|
|
movw [sp+0x02], ax
|
|
oneb a
|
|
mov [sp+0x00], a
|
|
clrb c
|
|
oneb a
|
|
mov b, a
|
|
br $.BB@LABEL@4_8
|
|
.BB@LABEL@4_3: ; bb22
|
|
shrw ax, 8+0x00000
|
|
addw ax, [hl+0x02]
|
|
addw ax, de
|
|
addw ax, #0x0004
|
|
movw hl, ax
|
|
mov a, [hl]
|
|
cmp0 a
|
|
skz
|
|
.BB@LABEL@4_4: ; if_then_bb38
|
|
clrb b
|
|
.BB@LABEL@4_5: ; if_break_bb39
|
|
inc a
|
|
bz $.BB@LABEL@4_7
|
|
.BB@LABEL@4_6: ; if_then_bb45
|
|
clrb a
|
|
mov [sp+0x00], a
|
|
.BB@LABEL@4_7: ; if_break_bb46
|
|
inc c
|
|
.BB@LABEL@4_8: ; bb49
|
|
movw hl, sp
|
|
mov a, c
|
|
cmp a, #0x03
|
|
bc $.BB@LABEL@4_3
|
|
.BB@LABEL@4_9: ; bb55
|
|
cmp0 b
|
|
bnz $.BB@LABEL@4_13
|
|
.BB@LABEL@4_10: ; bb55
|
|
mov a, [hl]
|
|
cmp0 a
|
|
bnz $.BB@LABEL@4_13
|
|
.BB@LABEL@4_11: ; bb67
|
|
clrb a
|
|
.BB@LABEL@4_12: ; bb67
|
|
addw sp, #0x04
|
|
ret
|
|
.BB@LABEL@4_13: ; bb74
|
|
oneb a
|
|
br $.BB@LABEL@4_12
|
|
.LFE4:
|
|
.TYPE _ends_with_ff_pair@1,function,.LFE5-_ends_with_ff_pair@1
|
|
_ends_with_ff_pair@1:
|
|
.STACK _ends_with_ff_pair@1 = 4
|
|
cmpw ax, #0x0000
|
|
bz $.BB@LABEL@5_5
|
|
.BB@LABEL@5_1: ; if_break_bb
|
|
movw de, ax
|
|
movw ax, [de+0x02]
|
|
movw bc, ax
|
|
cmpw ax, #0x0002
|
|
bc $.BB@LABEL@5_5
|
|
.BB@LABEL@5_2: ; if_break_bb17
|
|
addw ax, de
|
|
addw ax, #0x0002
|
|
movw hl, ax
|
|
mov a, [hl]
|
|
inc a
|
|
bnz $.BB@LABEL@5_4
|
|
.BB@LABEL@5_3: ; bb32
|
|
movw ax, bc
|
|
addw ax, de
|
|
addw ax, #0x0003
|
|
movw de, ax
|
|
mov a, [de]
|
|
inc a
|
|
bz $.BB@LABEL@5_5
|
|
.BB@LABEL@5_4: ; bb46
|
|
clrb a
|
|
ret
|
|
.BB@LABEL@5_5: ; bb53
|
|
oneb a
|
|
ret
|
|
.LFE5:
|
|
.TYPE _needs_retry_for_long_read@1,function,.LFE6-_needs_retry_for_long_read@1
|
|
_needs_retry_for_long_read@1:
|
|
.STACK _needs_retry_for_long_read@1 = 8
|
|
push bc
|
|
push ax
|
|
movw ax, bc
|
|
call $!_is_long_owi_read@1
|
|
cmp0 a
|
|
bz $.BB@LABEL@6_9
|
|
.BB@LABEL@6_1: ; if_break_bb
|
|
movw ax, [sp+0x00]
|
|
or a, x
|
|
bnz $.BB@LABEL@6_3
|
|
.BB@LABEL@6_2: ; if_break_bb.bb88_crit_edge
|
|
oneb a
|
|
br $.BB@LABEL@6_10
|
|
.BB@LABEL@6_3: ; if_break_bb23
|
|
pop de
|
|
push de
|
|
mov a, [de]
|
|
cmp0 a
|
|
bz $.BB@LABEL@6_2
|
|
.BB@LABEL@6_4: ; if_break_bb39
|
|
mov a, [de+0x01]
|
|
cmp0 a
|
|
bnz $.BB@LABEL@6_2
|
|
.BB@LABEL@6_5: ; if_break_bb49
|
|
pop hl
|
|
push hl
|
|
movw ax, [sp+0x02]
|
|
cmpw ax, [hl+0x02]
|
|
bh $.BB@LABEL@6_2
|
|
.BB@LABEL@6_6: ; if_break_bb59
|
|
movw ax, hl
|
|
call $!_looks_bad_tail@1
|
|
cmp0 a
|
|
bnz $.BB@LABEL@6_2
|
|
.BB@LABEL@6_7: ; if_break_bb68
|
|
movw ax, [sp+0x00]
|
|
call $!_looks_bad_last_bytes@1
|
|
cmp0 a
|
|
bnz $.BB@LABEL@6_2
|
|
.BB@LABEL@6_8: ; if_break_bb77
|
|
movw ax, [sp+0x00]
|
|
call $!_ends_with_ff_pair@1
|
|
cmp0 a
|
|
bnz $.BB@LABEL@6_2
|
|
.BB@LABEL@6_9: ; if_break_bb86
|
|
clrb a
|
|
.BB@LABEL@6_10: ; bb88
|
|
addw sp, #0x04
|
|
ret
|
|
.LFE6:
|
|
.TYPE _app_owi_read_basic,function,.LFE7-_app_owi_read_basic
|
|
_app_owi_read_basic:
|
|
.STACK _app_owi_read_basic = 340
|
|
subw sp, #0xFE
|
|
subw sp, #0x52
|
|
movw [sp+0x06], ax
|
|
mov a, c
|
|
mov [sp+0x02], a
|
|
movw ax, de
|
|
movw [sp+0x04], ax
|
|
call !!_R_WDT_Restart
|
|
movw ax, sp
|
|
addw ax, #0x0008
|
|
movw [sp+0x00], ax
|
|
movw de, ax
|
|
mov a, [sp+0x02]
|
|
mov c, a
|
|
movw ax, [sp+0x04]
|
|
call !!_OWI_ReadBytesRaw
|
|
call !!_R_WDT_Restart
|
|
movw ax, [sp+0x04]
|
|
movw bc, ax
|
|
movw ax, [sp+0x00]
|
|
call $!_needs_retry_for_long_read@1
|
|
cmp0 a
|
|
bz $.BB@LABEL@7_5
|
|
.BB@LABEL@7_1: ; if_then_bb
|
|
call !!_R_WDT_Restart
|
|
clrw bc
|
|
movw ax, #0x0BB8
|
|
call !!_delay_us
|
|
call !!_R_WDT_Restart
|
|
movw ax, sp
|
|
addw ax, #0x0008
|
|
movw [sp+0x00], ax
|
|
movw de, ax
|
|
mov a, [sp+0x02]
|
|
mov c, a
|
|
movw ax, [sp+0x04]
|
|
call !!_OWI_ReadBytesRaw
|
|
call !!_R_WDT_Restart
|
|
movw ax, [sp+0x04]
|
|
movw bc, ax
|
|
movw ax, [sp+0x00]
|
|
call $!_needs_retry_for_long_read@1
|
|
cmp0 a
|
|
bz $.BB@LABEL@7_5
|
|
.BB@LABEL@7_2: ; bb
|
|
mov a, [sp+0x08]
|
|
cmp0 a
|
|
bz $.BB@LABEL@7_5
|
|
.BB@LABEL@7_3: ; bb25
|
|
mov a, [sp+0x09]
|
|
cmp0 a
|
|
bnz $.BB@LABEL@7_5
|
|
.BB@LABEL@7_4: ; if_then_bb45
|
|
mov [sp+0x08], #0x00
|
|
mov [sp+0x09], #0x01
|
|
movw ax, #0xFFFE
|
|
movw bc, sp
|
|
movw 0x014C[bc], ax
|
|
movw bc, sp
|
|
mov 0x014E[bc], #0xFE
|
|
.BB@LABEL@7_5: ; if_break_bb50
|
|
movw ax, sp
|
|
addw ax, #0x0008
|
|
movw bc, ax
|
|
movw ax, [sp+0x06]
|
|
call $!_app_owi_from_raw@1
|
|
addw sp, #0xFE
|
|
addw sp, #0x52
|
|
ret
|
|
.LFE7:
|
|
.TYPE _app_owi_write_basic,function,.LFE8-_app_owi_write_basic
|
|
_app_owi_write_basic:
|
|
.STACK _app_owi_write_basic = 340
|
|
subw sp, #0xFE
|
|
subw sp, #0x50
|
|
movw [sp+0x04], ax
|
|
mov a, c
|
|
mov [sp+0x01], a
|
|
push de
|
|
pop hl
|
|
mov a, b
|
|
mov [sp+0x00], a
|
|
movw ax, sp
|
|
addw ax, #0x0006
|
|
movw [sp+0x02], ax
|
|
movw de, ax
|
|
pop bc
|
|
push bc
|
|
mov a, [sp+0x00]
|
|
mov c, a
|
|
movw ax, hl
|
|
call !!_OWI_CommandModeRaw
|
|
movw ax, [sp+0x02]
|
|
movw bc, ax
|
|
movw ax, [sp+0x04]
|
|
call $!_app_owi_from_raw@1
|
|
addw sp, #0xFE
|
|
addw sp, #0x50
|
|
ret
|
|
.LFE8:
|
|
.TYPE _app_owi_write_t_basic,function,.LFE9-_app_owi_write_t_basic
|
|
_app_owi_write_t_basic:
|
|
.STACK _app_owi_write_t_basic = 340
|
|
subw sp, #0xFE
|
|
subw sp, #0x50
|
|
movw [sp+0x04], ax
|
|
mov a, c
|
|
mov [sp+0x01], a
|
|
push de
|
|
pop hl
|
|
mov a, b
|
|
mov [sp+0x00], a
|
|
movw ax, sp
|
|
addw ax, #0x0006
|
|
movw [sp+0x02], ax
|
|
movw de, ax
|
|
pop bc
|
|
push bc
|
|
mov a, [sp+0x00]
|
|
mov c, a
|
|
movw ax, hl
|
|
call !!_OWI_T_CommandModeRaw
|
|
movw ax, [sp+0x02]
|
|
movw bc, ax
|
|
movw ax, [sp+0x04]
|
|
call $!_app_owi_from_raw@1
|
|
addw sp, #0xFE
|
|
addw sp, #0x50
|
|
ret
|
|
.LFE9:
|
|
|