Team Ai
Datasetpublic

hschumann2/TempleOS-Source-Code

sourceHugging Faceupdated 1y agoView on Hugging Face
0likes847downloads
GrPalette.txt95 linesDownload Raw Back to Gr
1 2#help_index "Graphics/Color"3public U8 gr_rainbow_10[10]={4  BLACK,BROWN,RED,LTRED,YELLOW,GREEN,BLUE,PURPLE,LTGRAY,WHITE};5 6DefineLstLoad("ST_RAINBOW_10",7  "BLACK\0BROWN\0RED\0LTRED\0YELLOW\0GREEN\0BLUE\0PURPLE\0LTGRAY\0WHITE\0");8 9U0 GrPaletteIndicesSet()10{//There is a level of indirection that we identity map.11// Set 16-colors to use first 16 DAC BGR entries, so we12// never need to worry about indexes, just DAC palette settings.13  I64 i;14  if (!Bt(&sys_run_level,RLf_VGA)) return;15  PUSHFD16  CLI17  while (LBts(&sys_semas[SEMA_VGA],0))18    Yield;19  InU8(VGAP_INPUT_STAT); //Rsts attr index/data20  for (i=0;i<COLORS_NUM;i++) {21    OutU8(VGAP_ATTR_INDEX,i);22    OutU8(VGAP_ATTR_DATA_WRITE,i);23  }24  OutU8(VGAP_ATTR_INDEX,0x20);25  OutU8(VGAP_ATTR_DATA_WRITE,0); //Dummy write26  InU8(VGAP_INPUT_STAT); //Rsts attr index/data27  LBtr(&sys_semas[SEMA_VGA],0);28  POPFD29}30 31public U0 GrPaletteColorSet(I64 color_num,CBGR48 bgr48)32{//VGA has 6-bits for blue, for green, and for red.33  if (!Bt(&sys_run_level,RLf_VGA)) return;34  PUSHFD35  CLI36  while (LBts(&sys_semas[SEMA_VGA],0))37    Yield;38  OutU8(VGAP_PALETTE_MASK,0xFF);39  OutU8(VGAP_REG_WRITE,color_num);40  OutU8(VGAP_PALETTE_DATA,bgr48.r>>10);41  OutU8(VGAP_PALETTE_DATA,bgr48.g>>10);42  OutU8(VGAP_PALETTE_DATA,bgr48.b>>10);43  LBtr(&sys_semas[SEMA_VGA],0);44  POPFD45}46 47public CBGR48 GrPaletteColorGet(I64 color_num)48{//VGA has 6-bits for blue, for green, and for red.49  CBGR48 res=0;50  if (!Bt(&sys_run_level,RLf_VGA)) return 0;51  PUSHFD52  CLI53  while (LBts(&sys_semas[SEMA_VGA],0))54    Yield;55  OutU8(VGAP_PALETTE_MASK,0xFF);56  OutU8(VGAP_REG_READ,color_num);57  res.r=0xFFFF<<10*InU8(VGAP_PALETTE_DATA)/0xFC00;58  res.g=0xFFFF<<10*InU8(VGAP_PALETTE_DATA)/0xFC00;59  res.b=0xFFFF<<10*InU8(VGAP_PALETTE_DATA)/0xFC00;60  LBtr(&sys_semas[SEMA_VGA],0);61  POPFD62  return res;63}64 65public CBGR48 gr_palette_std[COLORS_NUM]={660x000000000000,0x00000000AAAA,0x0000AAAA0000,0x0000AAAAAAAA,670xAAAA00000000,0xAAAA0000AAAA,0xAAAA55550000,0xAAAAAAAAAAAA,680x555555555555,0x55555555FFFF,0x5555FFFF5555,0x5555FFFFFFFF,690xFFFF55555555,0xFFFF5555FFFF,0xFFFFFFFF5555,0xFFFFFFFFFFFF};70 71public CBGR48 gr_palette_gray[COLORS_NUM]={720x000000000000,0x111111111111,0x222222222222,0x333333333333,730x444444444444,0x555555555555,0x666666666666,0x777777777777,740x888888888888,0x999999999999,0xAAAAAAAAAAAA,0xBBBBBBBBBBBB,750xCCCCCCCCCCCC,0xDDDDDDDDDDDD,0xEEEEEEEEEEEE,0xFFFFFFFFFFFF};76 77public U0 GrPaletteGet(CBGR48 *bgr48)78{//16 colors79  I64 i;80  for (i=0;i<COLORS_NUM;i++)81    bgr48[i]=GrPaletteColorGet(i);82}83 84public U0 GrPaletteSet(CBGR48 *bgr48)85{//16 colors86  I64 i;87  for (i=0;i<COLORS_NUM;i++)88    GrPaletteColorSet(i,bgr48[i]);89}90 91public U0 PaletteSetStd()92{//Activate std palette.93  GrPaletteSet(gr_palette_std);94}95