mirror of
https://github.com/KarolS/millfork.git
synced 2025-08-10 01:25:31 +00:00
More C64 I/O routines
This commit is contained in:
@@ -4,3 +4,38 @@ import c64_kernal
|
||||
|
||||
// print a 16-bit number on the standard output
|
||||
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
|
||||
}
|
||||
}
|
||||
|
@@ -8,3 +8,21 @@ void putstr(pointer str, byte len) {
|
||||
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
|
||||
}
|
||||
|
Reference in New Issue
Block a user