type VGA_Colour* {.pure.} = enum black = 0, blue = 1, green = 2, cyan = 3, red = 4, magenta = 5, brown = 6, lightGrey = 7, darkGrey = 8, lightBlue = 9, lightGreen = 10, lightCyan = 11, lightRed = 12, lightMagenta = 13, lightBrown = 14, white = 15 VGADoubleByte* = distinct uint16 proc vgaEntryColour*(fg: VGA_Colour, bg: VGA_Colour): int = result = ord(fg) or (ord(bg) shl 4) proc vgaEntry*(c: char, colour: int): VGADoubleByte = result = (uint16(int(c) or (colour shl 8))).VGADoubleByte