mirror of
https://github.com/KarolS/millfork.git
synced 2024-11-01 05:05:32 +00:00
Add strzpaste and scrstrzpaste
This commit is contained in:
parent
4abfab41df
commit
00841d685b
@ -20,7 +20,12 @@ If any of the strings is longer than 255 bytes, then the behaviour is undefined
|
||||
|
||||
#### `void strzcopy(pointer dest, pointer src)`
|
||||
|
||||
Copies the source null-terminated string into the destination buffer.
|
||||
Copies the source null-terminated string into the destination buffer, including the string terminator.
|
||||
If the source string is longer than 255 bytes, then the behaviour is undefined (might even crash).
|
||||
|
||||
#### `void strzpaste(pointer dest, pointer src)`
|
||||
|
||||
Copies the source null-terminated string into the destination buffer, excluding the string terminator.
|
||||
If the source string is longer than 255 bytes, then the behaviour is undefined (might even crash).
|
||||
|
||||
#### `word strz2word(pointer str)`
|
||||
@ -42,6 +47,7 @@ It contains functions for handling strings in the screen encoding with the same
|
||||
#### `byte scrstrzlen(pointer str)`
|
||||
#### `sbyte scrstrzcmp(pointer str1, pointer str2)`
|
||||
#### `void scrstrzcopy(pointer dest, pointer src)`
|
||||
#### `void scrstrzpaste(pointer dest, pointer src)`
|
||||
#### `word scrstrz2word(pointer str)`
|
||||
#### `void scrstrzappend(pointer buffer, pointer str)`
|
||||
#### `void scrstrzappendchar(pointer buffer, byte char)`
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
}
|
||||
}
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
}
|
||||
}
|
||||
|
@ -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
|
||||
|
Loading…
Reference in New Issue
Block a user