memset(0xe000, 0, 8000);
memset((char *)0xe000, 0, 8000);
ctk_80col_init(void){  int i;    setup_nmi();    /* Turn on hires mode, bank 0 ($c000 - $ffff) and $e000/$c000 for     hires/colors. */  VIC.ctrl1 = 0x3b;  /* $D011 */  VIC.addr  = 0x78;  /* $D018 */  VIC.ctrl2 = 0xc8;  /* $D016 */  CIA2.pra  = 0x00;  /* $DD00 */  VIC.bordercolor = 0x06; /* $D020 */  VIC.bgcolor0 = 0x0b; /* $D021 */    /* Fill color memory. */  asm("sei");  asm("lda $01");  asm("pha");  asm("lda #$30");  asm("sta $01");  asm("ldx #0");  asm("lda #$0");  asm("fillcolorloop:");  asm("sta $dc00,x");  asm("sta $dd00,x");  asm("sta $de00,x");  asm("sta $df00,x");  asm("inx");  asm("bne fillcolorloop");  /* Setup sprite pointers */  asm("ldx #$fd");  asm("stx $dff8");  asm("inx");  asm("stx $dff9");  asm("pla");  asm("sta $01");  asm("cli");  /* Fill hires memory with 0. */  memset(0xe000, 0, 8000);  for(i = 0; i < 256; ++i) {#if 0    ctk_80col_lefttab[i] =      ((i & 0x40) << 1) |      ((i & 0x20) << 1) |      ((i & 0x08) << 2) |      ((i & 0x02) << 3);    ctk_80col_righttab[i] =      ((i & 0x40) >> 3) |      ((i & 0x20) >> 3) |      ((i & 0x08) >> 2) |      ((i & 0x02) >> 1);#else    ctk_80col_lefttab[i] =      ((i & 0x40) << 1) |      ((i & 0x10) << 2) |      ((i & 0x04) << 3) |      ((i & 0x01) << 4);    ctk_80col_righttab[i] =      ((i & 0x40) >> 3) |      ((i & 0x10) >> 2) |      ((i & 0x04) >> 1) |      ((i & 0x01));#endif  }  #if 0  /* Setup mouse pointer sprite. */  asm("lda %v+%w", ctk_80col_theme,      offsetof(struct ctk_80col_theme, pointermaskcolor));  asm("sta $d027");  asm("lda %v+%w", ctk_80col_theme,      offsetof(struct ctk_80col_theme, pointercolor));  asm("sta $d028");  ptr1 = ctk_80col_theme.pointer;  ptr2 = (unsigned char *)0xff40;    for(i = 0; i < 0x80; ++i) {    *ptr2++ = *ptr1++;  }#endif  return;}