1
0
mirror of https://github.com/KarolS/millfork.git synced 2024-12-23 23:30:22 +00:00
millfork/include/c64_basic.mfk

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
}
}