diff options
author | nickysn <nickysn@3ad0048d-3df7-0310-abae-a5850022a9f2> | 2020-04-21 16:48:54 +0000 |
---|---|---|
committer | nickysn <nickysn@3ad0048d-3df7-0310-abae-a5850022a9f2> | 2020-04-21 16:48:54 +0000 |
commit | 80d824868785cf9a8808ac28741dd259d697f072 (patch) | |
tree | 37c58098c39054031302a0dba8ff3730007d2f5b /rtl/z80 | |
parent | a035a398ddb9ee89176d0f59895e24abac29b086 (diff) | |
download | fpc-80d824868785cf9a8808ac28741dd259d697f072.tar.gz |
* FillChar changed to a pure assembler procedure
git-svn-id: https://svn.freepascal.org/svn/fpc/branches/z80@44965 3ad0048d-3df7-0310-abae-a5850022a9f2
Diffstat (limited to 'rtl/z80')
-rw-r--r-- | rtl/z80/z80.inc | 46 |
1 files changed, 22 insertions, 24 deletions
diff --git a/rtl/z80/z80.inc b/rtl/z80/z80.inc index 0d03c0da19..f1497417cc 100644 --- a/rtl/z80/z80.inc +++ b/rtl/z80/z80.inc @@ -56,34 +56,32 @@ end; {$define FPC_SYSTEM_HAS_FILLCHAR} -Procedure FillChar(var x;count:SizeInt;value:byte); +Procedure FillChar(var x;count:SizeInt;value:byte);assembler; label skip, loop; -begin - asm - ld c, (count) - ld b, (count+1) - bit 7, b - jp NZ, skip - - ld a, b - or a, c - jp Z, skip - - ld e, (value) - ld a, 0 - ld l, (x) - ld h, (x+1) +asm + ld c, (count) + ld b, (count+1) + bit 7, b + jp NZ, skip + + ld a, b + or a, c + jp Z, skip + + ld e, (value) + ld a, 0 + ld l, (x) + ld h, (x+1) loop: - ld (hl), e - inc hl - dec bc - cp a, c - jp NZ, loop - cp a, b - jp NZ, loop + ld (hl), e + inc hl + dec bc + cp a, c + jp NZ, loop + cp a, b + jp NZ, loop skip: - end; end; |