diff --git a/src/ints/int10_put_pixel.cpp b/src/ints/int10_put_pixel.cpp index a3207d34..145288cc 100644 --- a/src/ints/int10_put_pixel.cpp +++ b/src/ints/int10_put_pixel.cpp @@ -200,6 +200,26 @@ void INT10_GetPixel(Bit16u x,Bit16u y,Bit8u page,Bit8u * color) { *color=(val>>(((7-(x&7))))) & 1 ; } break; + case M_TANDY16: + { + bool is_32k = (real_readb(BIOSMEM_SEG, BIOSMEM_CURRENT_MODE) >= 9)?true:false; + Bit16u segment, offset; + if (is_32k) { + if (machine==MCH_PCJR) { + Bitu cpupage = (real_readb(BIOSMEM_SEG, BIOSMEM_CRTCPU_PAGE) >> 3) & 0x7; + segment = cpupage << 10; + } else segment = 0xb800; + offset = (y >> 2) * (CurMode->swidth >> 1) + (x>>1); + offset += (8*1024) * (y & 3); + } else { + segment = 0xb800; + offset = (y >> 1) * (CurMode->swidth >> 1) + (x>>1); + offset += (8*1024) * (y & 1); + } + Bit8u val=real_readb(segment,offset); + *color=(val>>((x&1)?0:4)) & 0xf; + } + break; case M_EGA: { /* Calculate where the pixel is in video memory */