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.

484 lines
8.7 KiB

2 months ago
#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: