#8088 machine code, IBM PC DOS, 57 bytes **Listing:** MOV SI, OFFSET PAT ; load color bar table MOV CL, 12 ; loop through 12 items LOOP_BAR: LODSB ; load next color byte MOV BL, AL ; move to BL CALL DISP_COL ; display color LOOP LOOP_BAR ; loop next color byte RET ; exit to DOS DISP_COL PROC PUSH CX ; save outer loop MOV CL, 1 ; display 1 char MOV AX, 09DBH ; AH = 9 (write char with attr), AL= DBH (block char) INT 10H ; call PC BIOS MOV AH, 3 ; get curson position function INT 10H ; call BIOS TEST BL, BL ; if color byte is 0, move to next line JNZ NEXT_COL ; if not 0, move to next column MOV DL, 0 ; move to first column INC DH ; move to next row JMP UPD_POS ; jump to update position NEXT_COL: INC DL ; move to next column UPD_POS: MOV AH, 2 ; set cursor position function INT 10H ; call BIOS POP CX ; restore outer loop RET DISP_COL ENDP PAT DB 0CH, 0EH, 0DH, 0, 0EH, 0AH, 0BH, 0, 0DH, 0BH, 1, 0 ; color table This uses the IBM PC BIOS `INT 10H` video services to write the color grid to the screen. Unfortunately the only way to write a specific color attribute requires also writing code to place the cursor in the next correct location, so there's a lot of extra code for that. Here's the output running on an IBM PC CGA (in 40x25 text mode to make it bigger). [![enter image description here][1]][1] [1]: https://i.sstatic.net/Xc4mq.png