diff --git a/font.ts b/font.ts index 90f7f41..26070e2 100644 --- a/font.ts +++ b/font.ts @@ -16,213 +16,421 @@ // deno-fmt-ignore export const font: {[key: string]: Array} = { - "a": [ + "A": [ + 0, 1, 1, 1, + 0, 1, 0, 1, + 0, 1, 1, 1, + 0, 1, 0, 1, + 0, 1, 0, 1, 0, 0, 0, 0, - 0, 1, 1, 1, - 0, 1, 0, 1, - 0, 1, 1, 1, - 0, 1, 0, 1, - 0, 1, 0, 1, ], - "b": [ - 0, 0, 0, 0, + "B": [ 0, 1, 1, 1, 0, 1, 0, 1, 0, 1, 1, 0, 0, 1, 0, 1, 0, 1, 1, 1, - ], - "c": [ 0, 0, 0, 0, + ], + "C": [ 0, 0, 1, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 1, 1, - ], - "d": [ 0, 0, 0, 0, + ], + "D": [ 0, 1, 1, 0, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 1, 0, - ], - "e": [ 0, 0, 0, 0, + ], + "E": [ 0, 1, 1, 1, 0, 1, 0, 0, 0, 1, 1, 0, 0, 1, 0, 0, 0, 1, 1, 1, - ], - "f": [ 0, 0, 0, 0, + ], + "F": [ 0, 1, 1, 1, 0, 1, 0, 0, 0, 1, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, - ], - "g": [ 0, 0, 0, 0, + ], + "G": [ 0, 0, 1, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 1, 0, 1, 0, 0, 1, 1, - ], - "h": [ 0, 0, 0, 0, + ], + "H": [ 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 1, 1, 0, 1, 0, 1, 0, 1, 0, 1, - ], - "i": [ 0, 0, 0, 0, + ], + "I": [ 0, 1, 1, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 1, 1, - ], - "j": [ 0, 0, 0, 0, + ], + "J": [ 0, 1, 1, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 1, 0, - ], - "k": [ 0, 0, 0, 0, + ], + "K": [ 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 1, 0, 0, 1, 0, 1, 0, 1, 0, 1, - ], - "l": [ 0, 0, 0, 0, + ], + "L": [ 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, - ], - "m": [ 0, 0, 0, 0, + ], + "M": [ 0, 1, 1, 1, 0, 1, 1, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, - ], - "n": [ 0, 0, 0, 0, + ], + "N": [ 0, 1, 1, 0, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, - ], - "o": [ 0, 0, 0, 0, + ], + "O": [ 0, 0, 1, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 1, 0, - ], - "p": [ 0, 0, 0, 0, + ], + "P": [ 0, 1, 1, 1, 0, 1, 0, 1, 0, 1, 1, 1, 0, 1, 0, 0, 0, 1, 0, 0, - ], - "q": [ 0, 0, 0, 0, + ], + "Q": [ 0, 0, 1, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 1, 0, 0, 0, 1, 1, - ], - "r": [ 0, 0, 0, 0, + ], + "R": [ 0, 1, 1, 1, 0, 1, 0, 1, 0, 1, 1, 0, 0, 1, 0, 1, 0, 1, 0, 1, - ], - "s": [ 0, 0, 0, 0, + ], + "S": [ 0, 0, 1, 1, 0, 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 1, 0, 1, 1, 0, - ], - "t": [ 0, 0, 0, 0, + ], + "T": [ 0, 1, 1, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, - ], - "u": [ 0, 0, 0, 0, + ], + "U": [ 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 1, 0, + 0, 0, 0, 0, + ], + "V": [ + 0, 1, 0, 1, + 0, 1, 0, 1, + 0, 1, 0, 1, + 0, 1, 1, 1, + 0, 0, 1, 0, + 0, 0, 0, 0, + ], + "W": [ + 0, 1, 0, 1, + 0, 1, 0, 1, + 0, 1, 0, 1, + 0, 1, 1, 1, + 0, 1, 1, 1, + 0, 0, 0, 0, + ], + "X": [ + 0, 1, 0, 1, + 0, 1, 0, 1, + 0, 0, 1, 0, + 0, 1, 0, 1, + 0, 1, 0, 1, + 0, 0, 0, 0, + ], + "Y": [ + 0, 1, 0, 1, + 0, 1, 0, 1, + 0, 1, 1, 1, + 0, 0, 1, 0, + 0, 1, 0, 0, + 0, 0, 0, 0, + ], + "Z": [ + 0, 1, 1, 1, + 0, 0, 0, 1, + 0, 0, 1, 0, + 0, 1, 0, 0, + 0, 1, 1, 1, + 0, 0, 0, 0, + ], + "a": [ + 0, 0, 0, 0, + 0, 1, 1, 1, + 0, 0, 1, 1, + 0, 1, 0, 1, + 0, 1, 1, 1, + 0, 0, 0, 0, + ], + "b": [ + 0, 1, 0, 0, + 0, 1, 0, 0, + 0, 1, 1, 1, + 0, 1, 0, 1, + 0, 1, 1, 1, + 0, 0, 0, 0, + ], + "c": [ + 0, 0, 0, 0, + 0, 0, 0, 0, + 0, 1, 1, 1, + 0, 1, 0, 0, + 0, 1, 1, 1, + 0, 0, 0, 0, + ], + "d": [ + 0, 0, 0, 1, + 0, 0, 0, 1, + 0, 1, 1, 1, + 0, 1, 0, 1, + 0, 1, 1, 1, + 0, 0, 0, 0, + ], + "e": [ + 0, 0, 0, 0, + 0, 0, 1, 1, + 0, 1, 0, 1, + 0, 1, 1, 0, + 0, 0, 1, 1, + 0, 0, 0, 0, + ], + "f": [ + 0, 0, 1, 1, + 0, 1, 0, 0, + 0, 1, 1, 0, + 0, 1, 0, 0, + 0, 1, 0, 0, + 0, 0, 0, 0, + ], + "g": [ + 0, 0, 0, 0, + 0, 0, 0, 0, + 0, 1, 1, 1, + 0, 1, 0, 1, + 0, 0, 1, 1, + 0, 1, 1, 0, + ], + "h": [ + 0, 1, 0, 0, + 0, 1, 0, 0, + 0, 1, 1, 1, + 0, 1, 0, 1, + 0, 1, 0, 1, + 0, 0, 0, 0, + ], + "i": [ + 0, 0, 1, 0, + 0, 0, 0, 0, + 0, 0, 1, 0, + 0, 0, 1, 0, + 0, 0, 1, 0, + 0, 0, 0, 0, + ], + "j": [ + 0, 0, 1, 0, + 0, 0, 0, 0, + 0, 0, 1, 0, + 0, 0, 1, 0, + 0, 0, 1, 0, + 0, 1, 0, 0, + ], + "k": [ + 0, 1, 0, 0, + 0, 1, 0, 0, + 0, 1, 0, 1, + 0, 1, 1, 0, + 0, 1, 0, 1, + 0, 0, 0, 0, + ], + "l": [ + 0, 0, 1, 0, + 0, 0, 1, 0, + 0, 0, 1, 0, + 0, 0, 1, 0, + 0, 0, 0, 1, + 0, 0, 0, 0, + ], + "m": [ + 0, 0, 0, 0, + 0, 0, 0, 0, + 0, 1, 1, 1, + 0, 1, 1, 1, + 0, 1, 0, 1, + 0, 0, 0, 0, + ], + "n": [ + 0, 0, 0, 0, + 0, 0, 0, 0, + 0, 1, 1, 0, + 0, 1, 0, 1, + 0, 1, 0, 1, + 0, 0, 0, 0, + ], + "o": [ + 0, 0, 0, 0, + 0, 0, 0, 0, + 0, 0, 1, 1, + 0, 1, 0, 1, + 0, 1, 1, 0, + 0, 0, 0, 0, + ], + "p": [ + 0, 0, 0, 0, + 0, 0, 0, 0, + 0, 1, 1, 1, + 0, 1, 0, 1, + 0, 1, 1, 1, + 0, 1, 0, 0, + ], + "q": [ + 0, 0, 0, 0, + 0, 0, 0, 0, + 0, 1, 1, 1, + 0, 1, 0, 1, + 0, 1, 1, 1, + 0, 0, 0, 1, + ], + "r": [ + 0, 0, 0, 0, + 0, 0, 0, 0, + 0, 1, 1, 1, + 0, 1, 0, 0, + 0, 1, 0, 0, + 0, 0, 0, 0, + ], + "s": [ + 0, 0, 0, 0, + 0, 0, 0, 0, + 0, 0, 1, 1, + 0, 0, 1, 0, + 0, 1, 1, 0, + 0, 0, 0, 0, + ], + "t": [ + 0, 0, 1, 0, + 0, 0, 1, 0, + 0, 1, 1, 1, + 0, 0, 1, 0, + 0, 0, 1, 0, + 0, 0, 0, 0, + ], + "u": [ + 0, 0, 0, 0, + 0, 0, 0, 0, + 0, 1, 0, 1, + 0, 1, 0, 1, + 0, 0, 1, 1, + 0, 0, 0, 0, ], "v": [ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 1, - 0, 1, 0, 1, - 0, 1, 1, 1, 0, 0, 1, 0, + 0, 0, 0, 0, ], "w": [ 0, 0, 0, 0, - 0, 1, 0, 1, - 0, 1, 0, 1, + 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 1, 1, 0, 1, 1, 1, + 0, 0, 0, 0, ], "x": [ 0, 0, 0, 0, - 0, 1, 0, 1, + 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 1, 0, 0, 1, 0, 1, - 0, 1, 0, 1, + 0, 0, 0, 0, ], "y": [ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 1, - 0, 1, 1, 1, 0, 0, 1, 0, 0, 1, 0, 0, ], "z": [ 0, 0, 0, 0, - 0, 1, 1, 1, - 0, 0, 0, 1, + 0, 0, 0, 0, + 0, 1, 1, 0, 0, 0, 1, 0, - 0, 1, 0, 0, - 0, 1, 1, 1, + 0, 0, 1, 1, + 0, 0, 0, 0, ], ",": [ 0, 0, 0, 0, @@ -237,8 +445,8 @@ export const font: {[key: string]: Array} = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 1, 0, + 0, 0, 0, 0, ], " ": [ 0, 0, 0, 0, @@ -249,259 +457,259 @@ export const font: {[key: string]: Array} = { 0, 0, 0, 0, ], "<": [ - 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, + 0, 0, 0, 0, ], ">": [ - 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, + 0, 0, 0, 0, ], "=": [ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, + 0, 0, 0, 0, ], "(": [ + 0, 0, 0, 1, + 0, 0, 1, 0, + 0, 0, 1, 0, + 0, 0, 1, 0, + 0, 0, 0, 1, 0, 0, 0, 0, - 0, 0, 0, 1, - 0, 0, 1, 0, - 0, 0, 1, 0, - 0, 0, 1, 0, - 0, 0, 0, 1, ], ")": [ + 0, 1, 0, 0, + 0, 0, 1, 0, + 0, 0, 1, 0, + 0, 0, 1, 0, + 0, 1, 0, 0, 0, 0, 0, 0, - 0, 1, 0, 0, - 0, 0, 1, 0, - 0, 0, 1, 0, - 0, 0, 1, 0, - 0, 1, 0, 0, ], "[": [ + 0, 0, 1, 1, + 0, 0, 1, 0, + 0, 0, 1, 0, + 0, 0, 1, 0, + 0, 0, 1, 1, 0, 0, 0, 0, - 0, 0, 1, 1, - 0, 0, 1, 0, - 0, 0, 1, 0, - 0, 0, 1, 0, - 0, 0, 1, 1, ], "]": [ + 0, 1, 1, 0, + 0, 0, 1, 0, + 0, 0, 1, 0, + 0, 0, 1, 0, + 0, 1, 1, 0, 0, 0, 0, 0, - 0, 1, 1, 0, - 0, 0, 1, 0, - 0, 0, 1, 0, - 0, 0, 1, 0, - 0, 1, 1, 0, ], "{": [ - 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 0, 0, 1, 1, 0, 0, 0, 1, 0, 0, 0, 1, 1, + 0, 0, 0, 0, ], "}": [ - 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 1, 0, 0, 0, 1, 1, 0, 0, 1, 0, 0, 1, 1, 0, + 0, 0, 0, 0, ], ":": [ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, ], ";": [ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, ], "'": [ + 0, 0, 1, 0, + 0, 0, 1, 0, 0, 0, 0, 0, - 0, 0, 1, 0, - 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ], '"': [ + 0, 1, 0, 1, + 0, 1, 0, 1, 0, 0, 0, 0, - 0, 1, 0, 1, - 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ], "1": [ - 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 1, 1, + 0, 0, 0, 0, ], "2": [ - 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 1, 1, 1, + 0, 0, 0, 0, ], "3": [ - 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 1, 1, 0, + 0, 0, 0, 0, ], "4": [ - 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 1, + 0, 0, 0, 0, ], "5": [ - 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 0, 0, 0, 1, 1, 0, 0, 0, 0, 1, 0, 1, 1, 0, + 0, 0, 0, 0, ], "6": [ - 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 1, 1, 1, 0, 1, 0, 1, 0, 1, 1, 1, + 0, 0, 0, 0, ], "7": [ - 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, + 0, 0, 0, 0, ], "8": [ + 0, 1, 1, 1, + 0, 1, 0, 1, + 0, 1, 1, 1, + 0, 1, 0, 1, + 0, 1, 1, 1, 0, 0, 0, 0, - 0, 1, 1, 1, - 0, 1, 0, 1, - 0, 1, 1, 1, - 0, 1, 0, 1, - 0, 1, 1, 1, ], "9": [ - 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 0, 1, 0, 1, 1, 1, 0, 0, 1, 0, 0, 1, 0, 0, + 0, 0, 0, 0, ], "0": [ + 0, 1, 1, 1, + 0, 1, 0, 1, + 0, 1, 0, 1, + 0, 1, 0, 1, + 0, 1, 1, 1, 0, 0, 0, 0, - 0, 1, 1, 1, - 0, 1, 0, 1, - 0, 1, 0, 1, - 0, 1, 0, 1, - 0, 1, 1, 1, ], "+": [ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, ], "-": [ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, ], "_": [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 1, 1, 1, + 0, 0, 0, 0, ], "`": [ - 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, ], "~": [ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, ], "/": [ - 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, + 0, 0, 0, 0, ], "?": [ - 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 0, + 0, 0, 0, 0, ], "\\": [ - 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 1, + 0, 0, 0, 0, ], "|": [ + 0, 0, 1, 0, + 0, 0, 1, 0, + 0, 0, 1, 0, + 0, 0, 1, 0, + 0, 0, 1, 0, 0, 0, 0, 0, - 0, 0, 1, 0, - 0, 0, 1, 0, - 0, 0, 1, 0, - 0, 0, 1, 0, - 0, 0, 1, 0, ], } \ No newline at end of file diff --git a/repl.ts b/repl.ts index a944929..e8c9eb8 100644 --- a/repl.ts +++ b/repl.ts @@ -2,6 +2,7 @@ import faux from "./builtins.ts"; import { getKeysPressed, shiftKeyDown, shiftMap, K } from "./keyboard.ts"; import { font } from "./font.ts"; import { runCode } from "./runcode.ts"; +import { clearScreen } from "./window.ts"; const lineHeight = 6; @@ -75,7 +76,7 @@ const update = () => { textLinesAbove.push(...resultString.split("\n")) } } catch (err) { - textLinesAbove.push(...(err.name+":\n"+err.message).toLowerCase().split("\n")) + textLinesAbove.push(...(err.name+":\n"+err.message).split("\n")) } textLinesAbove = textLinesAbove.slice(-20); maxLineLen = 0; @@ -88,17 +89,19 @@ const update = () => { const drawTextAbove = () => { textLinesAbove.forEach((line, i) => { - faux.draw_rect(0, i*lineHeight, 4*(line.length+1)+1, lineHeight+1, 6); - faux.draw_text(-1, i*lineHeight, line); + faux.draw_rect(0, 1+i*lineHeight, 4*(line.length+1)+1, lineHeight+1, 0); + faux.draw_text(-1, 1+i*lineHeight, line); }); } const draw = () => { + clearScreen(); + drawTextAbove(); - faux.draw_rect(0, textLinesAbove.length*lineHeight, 4*(2+maxLineLen+1)+1, lineHeight+1, 6); + faux.draw_rect(0, 1+textLinesAbove.length*lineHeight, 4*(2+maxLineLen+1)+1, lineHeight+1, 0); faux.draw_rect((2+index)*4, textLinesAbove.length*lineHeight+1, 4, lineHeight-1, 3); - faux.draw_text(-1, textLinesAbove.length*lineHeight, "> "+currentLine); + faux.draw_text(-1, 1+textLinesAbove.length*lineHeight, "> "+currentLine); } export const repl = {