+ order => [ 0,5,9,12 , 3,6,10,13,1 , 4,7,8,11,14,15,2 ], # by brightness
+ ansiorder => [ 0,3,10,6,13,12,9,1 , 5,7,11,8,14,4,15,2 ],
+ },
+
+ cpc => {
+ name => 'Amstrad CPC',
+ rgbmap => [
+ 3 => sub {
+ $_[2] + 3 * ($_[0] + 3 * $_[1]),
+ map { $_ && $_ * 127 + 1 } @_
+ },
+ ],
+ },
+ ansi88 => {
+ name => 'rxvt 88 colour extension',
+ rgbmap => [
+ 4 => sub {
+ $_[2] + 4 * ($_[1] + 4 * $_[0]) + 16,
+ map { (0, 139, 205, 255)[$_] } @_
+ },
+ [ map { ($_ + 2 + ($_>0)) * 255/11 } 0 .. 7 ],
+ ],
+ },
+ ansi256 => {
+ name => 'xterm 256 colour extension',
+ href => 'http://web.archive.org/web/20130125000058/http://www.frexx.de/xterm-256-notes/',
+ # \033[38;5;${FG}m
+ rgbmap => [
+ 6 => sub {
+ $_[2] + 6 * ($_[1] + 6 * $_[0]) + 16,
+ map { $_ && $_*40 + 55 } @_
+ },
+ [ map { $_ * 10 + 8 } 0 .. 23 ],
+ ],
+ },
+ 512 => {
+ name => '9-bit RGB map',
+ # atari st, msx2, sega genesis/nomad, turbografx16
+ rgbmap => [8],
+ },
+ '4k' => {
+ name => '12-bit RGB map',
+ # amiga, apple IIgs, game gear, neo geo, lynx, cpc+, nextstation
+ rgbmap => [
+ 12 => sub {
+ join('', map { sprintf '%X', $_ } @_),
+ map { int $_ * 255 / 11 } @_
+ },
+ ],