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:
parent
430051635d
commit
6f2a157de0
@ -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
|
||||
}
|
||||
}
|
||||
|
@ -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
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user