Files
VGMPLAY.WMF/build/wc_api/wc_strset.lst
T

39 lines
2.2 KiB
Plaintext

1 .module wc_strset
2 .area _CODE
3 .globl _wc_strset
00000000 4 _wc_strset::
00000000 DD E5 [15] 5 push ix
00000002 DD 21 00 00 [14] 6 ld ix, #0
00000006 DD 39 [15] 7 add ix, sp
8
00000008 DD 7E 04 [19] 9 ld a, 4(ix) ; c (из-за push ix)
0000000B DD E1 [14] 10 pop ix
11
12 ; записываем первый байт
0000000D 77 [ 7] 13 ld (hl), a
14
0000000E 42 [ 4] 15 ld b, d
0000000F 4B [ 4] 16 ld c, e
17
18 ; len == 1 → всё
00000010 0B [ 6] 19 dec bc
00000011 78 [ 4] 20 ld a, b
00000012 B1 [ 4] 21 or c
00000013 28 05 [12] 22 jr z, _wc_strset_done
23
24 ; DE = HL + 1
00000015 E5 [11] 25 push hl
00000016 D1 [10] 26 pop de
00000017 13 [ 6] 27 inc de
28
29 ; BC = len - 1 уже
30
00000018 ED B0 [21] 31 ldir
32
0000001A 33 _wc_strset_done:
34 ; очистка стека
0000001A C1 [10] 35 pop bc
0000001B 33 [ 6] 36 inc sp
0000001C C5 [11] 37 push bc
0000001D C9 [10] 38 ret