1
0
mirror of https://github.com/KarolS/millfork.git synced 2024-11-01 05:05:32 +00:00
millfork/include/c64_basic.mfk
2018-01-20 22:03:56 +01:00

42 lines
809 B
Plaintext

// Routines from C64 BASIC ROM
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
}
}