mirror of
https://github.com/KarolS/millfork.git
synced 2024-12-26 12:29:26 +00:00
46 lines
902 B
Plaintext
46 lines
902 B
Plaintext
// Routines from C64 BASIC ROM
|
|
|
|
#if not(CBM_64)
|
|
#warn c64_basic module should be only used on C64-compatible targets
|
|
#endif
|
|
|
|
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
|
|
}
|
|
}
|