mirror of
https://github.com/joncampbell123/dosbox-x.git
synced 2025-05-09 03:41:10 +08:00
commit
8cc6c6059e
@ -68,6 +68,10 @@
|
|||||||
for IOCTL. (cimarronm)
|
for IOCTL. (cimarronm)
|
||||||
- Clean up of DOS device and attribute flag usage
|
- Clean up of DOS device and attribute flag usage
|
||||||
(cimarronm)
|
(cimarronm)
|
||||||
|
- Integrated commits from mainline (Allofich)
|
||||||
|
- Use real pointer with font data for reading
|
||||||
|
characters. Also ignore page number for modes with
|
||||||
|
only one page.
|
||||||
0.83.24
|
0.83.24
|
||||||
- Release notes for this version:
|
- Release notes for this version:
|
||||||
https://dosbox-x.com/release-0.83.24.html
|
https://dosbox-x.com/release-0.83.24.html
|
||||||
|
@ -1307,13 +1307,13 @@ void ReadCharAttr(uint16_t col,uint16_t row,uint8_t page,uint16_t * result) {
|
|||||||
switch (machine) {
|
switch (machine) {
|
||||||
case MCH_CGA:
|
case MCH_CGA:
|
||||||
case MCH_HERC:
|
case MCH_HERC:
|
||||||
fontdata=PhysMake(0xf000,0xfa6e);
|
fontdata=RealMake(0xf000,0xfa6e);
|
||||||
break;
|
break;
|
||||||
case TANDY_ARCH_CASE:
|
case TANDY_ARCH_CASE:
|
||||||
fontdata=Real2Phys(RealGetVec(0x44));
|
fontdata=RealGetVec(0x44);
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
fontdata=Real2Phys(RealGetVec(0x43));
|
fontdata=RealGetVec(0x43);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
@ -1327,7 +1327,7 @@ void ReadCharAttr(uint16_t col,uint16_t row,uint8_t page,uint16_t * result) {
|
|||||||
*result = real_readw(GetTextSeg(), (row * real_readw(BIOSMEM_SEG, BIOSMEM_NB_COLS) + col) * 2);
|
*result = real_readw(GetTextSeg(), (row * real_readw(BIOSMEM_SEG, BIOSMEM_NB_COLS) + col) * 2);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
fontdata=Real2Phys(RealGetVec(0x43));
|
fontdata=RealGetVec(0x43);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1335,13 +1335,14 @@ void ReadCharAttr(uint16_t col,uint16_t row,uint8_t page,uint16_t * result) {
|
|||||||
|
|
||||||
for (uint16_t chr=0;chr<256;chr++) {
|
for (uint16_t chr=0;chr<256;chr++) {
|
||||||
|
|
||||||
if (chr==128 && split_chr) fontdata=Real2Phys(RealGetVec(0x1f));
|
if (chr==128 && split_chr) fontdata=RealGetVec(0x1f);
|
||||||
|
|
||||||
bool error=false;
|
bool error=false;
|
||||||
uint16_t ty=(uint16_t)y;
|
uint16_t ty=(uint16_t)y;
|
||||||
for (uint8_t h=0;h<cheight;h++) {
|
for (uint8_t h=0;h<cheight;h++) {
|
||||||
uint8_t bitsel=128;
|
uint8_t bitsel=128;
|
||||||
uint8_t bitline=mem_readb(fontdata++);
|
uint8_t bitline=mem_readb(Real2Phys(fontdata));
|
||||||
|
fontdata=RealMake(RealSeg(fontdata),RealOff(fontdata)+1);
|
||||||
uint8_t res=0;
|
uint8_t res=0;
|
||||||
uint8_t vidline=0;
|
uint8_t vidline=0;
|
||||||
uint16_t tx=(uint16_t)x;
|
uint16_t tx=(uint16_t)x;
|
||||||
@ -1355,7 +1356,7 @@ void ReadCharAttr(uint16_t col,uint16_t row,uint8_t page,uint16_t * result) {
|
|||||||
ty++;
|
ty++;
|
||||||
if(bitline != vidline){
|
if(bitline != vidline){
|
||||||
/* It's not character 'chr', move on to the next */
|
/* It's not character 'chr', move on to the next */
|
||||||
fontdata+=(unsigned int)(cheight-(unsigned int)h-1u);
|
fontdata=RealMake(RealSeg(fontdata),RealOff(fontdata)+cheight-h-1);
|
||||||
error = true;
|
error = true;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@ -1371,6 +1372,7 @@ void ReadCharAttr(uint16_t col,uint16_t row,uint8_t page,uint16_t * result) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void INT10_ReadCharAttr(uint16_t * result,uint8_t page) {
|
void INT10_ReadCharAttr(uint16_t * result,uint8_t page) {
|
||||||
|
if(CurMode->ptotal==1) page=0;
|
||||||
if(page==0xFF) page=real_readb(BIOSMEM_SEG,BIOSMEM_CURRENT_PAGE);
|
if(page==0xFF) page=real_readb(BIOSMEM_SEG,BIOSMEM_CURRENT_PAGE);
|
||||||
uint8_t cur_row=CURSOR_POS_ROW(page);
|
uint8_t cur_row=CURSOR_POS_ROW(page);
|
||||||
uint8_t cur_col=CURSOR_POS_COL(page);
|
uint8_t cur_col=CURSOR_POS_COL(page);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user