1
0
mirror of https://github.com/KarolS/millfork.git synced 2025-02-06 01:30:13 +00:00

More C64 I/O routines

This commit is contained in:
Karol Stasiak 2018-01-20 22:03:56 +01:00
parent 430051635d
commit 6f2a157de0
2 changed files with 55 additions and 2 deletions

View File

@ -3,4 +3,39 @@
import c64_kernal
// print a 16-bit number on the standard output
asm void putword(word xa) @$BDCD extern
asm void putword(word xa) @$BDCD extern
asm void readline() @$A560 extern
const pointer readline_out = $200
byte readword_err
word readword() {
readline()
readword_err = 0
word result
word four
result = 0
byte char
byte i
i = 0
while true {
char = readline_out[i]
if char == 0 {
if i == 0 {
readword_err = 1
}
return result
}
if 48 <= char <= 48+9 {
four = result
four <<= 2
result += four
result <<= 1
result += char - 48
} else {
readword_err = 1
return result
}
i += 1
}
}

View File

@ -7,4 +7,22 @@ void putstr(pointer str, byte len) {
putchar(str[index])
index += 1
}
}
}
void putstrz(pointer str) {
byte index
index = 0
while str[index] != 0 {
putchar(str[index])
index += 1
}
}
byte strzlen(pointer str) {
byte index
index = 0
while str[index] != 0 {
index += 1
}
return index
}