1
0
mirror of https://github.com/KarolS/millfork.git synced 2026-04-19 10:42:10 +00:00

Add strzpaste and scrstrzpaste

This commit is contained in:
Karol Stasiak
2019-11-04 02:29:16 +01:00
parent 4abfab41df
commit 00841d685b
6 changed files with 76 additions and 1 deletions
+1
View File
@@ -4,6 +4,7 @@ import string
alias scrstrzlen = strzlen
alias scrstrzcmp = strzcmp
alias scrstrzcopy = strzcopy
alias scrstrzpaste = strzpaste
alias scrstrzappendchar = strzappendchar
alias scrstrz2word = strz2word
alias scrstrzappend = strzappend
+12
View File
@@ -39,3 +39,15 @@ void scrstrzcopy(pointer dest, pointer src) {
i += 1
} while c != nullchar_scr
}
void strzpaste(pointer dest, pointer src) {
byte i
byte c
i = 0
while true {
c = src[i]
if c == nullchar_scr { return }
dest[i] = c
i += 1
}
}
+22
View File
@@ -42,6 +42,18 @@ void scrstrzcopy(pointer dest, pointer src) {
? JP NZ, ___scrstrzcopy_loop
}
}
void scrstrzpaste(pointer dest, pointer src) {
asm {
? LD HL,(src)
? LD DE,(dest)
___scrstrzpaste_loop:
LD A,(HL)
? CP nullchar_scr
? RET Z
LD (DE),A
? JP ___scrstrzpaste_loop
}
}
#else
void scrstrzcopy(pointer dest, pointer src) {
byte c
@@ -52,4 +64,14 @@ void scrstrzcopy(pointer dest, pointer src) {
dest += 1
} while c != nullchar_scr
}
void scrstrzpaste(pointer dest, pointer src) {
byte c
while true {
c = src[0]
if c == nullchar_scr { return }
dest[0] = c
src += 1
dest += 1
}
}
#endif
+12
View File
@@ -35,3 +35,15 @@ void strzcopy(pointer dest, pointer src) {
i += 1
} while c != nullchar
}
void strzpaste(pointer dest, pointer src) {
byte i
byte c
i = 0
while true {
c = src[i]
if c == nullchar { return }
dest[i] = c
i += 1
}
}
+22
View File
@@ -38,6 +38,18 @@ void strzcopy(pointer dest, pointer src) {
? JP NZ, ___strzcopy_loop
}
}
void strzpaste(pointer dest, pointer src) {
asm {
? LD HL,(src)
? LD DE,(dest)
___strzpaste_loop:
LD A,(HL)
? CP nullchar
? RET Z
LD (DE),A
? JP ___strzpaste_loop
}
}
#else
void strzcopy(pointer dest, pointer src) {
byte c
@@ -48,4 +60,14 @@ void strzcopy(pointer dest, pointer src) {
dest += 1
} while c != nullchar
}
void strzpaste(pointer dest, pointer src) {
byte c
while true {
c = src[0]
if c == nullchar { return }
dest[0] = c
src += 1
dest += 1
}
}
#endif