Changeset 00bb6965 in mainline for uspace/fb/ega.c
- Timestamp:
- 2006-12-11T23:17:58Z (19 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- df496c5
- Parents:
- dff0a94
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
uspace/fb/ega.c
rdff0a94 r00bb6965 83 83 int i; 84 84 85 for (i =0; i < scr_width*scr_height; i++) {86 scr_addr[i *2] = ' ';87 scr_addr[i *2+1] = style;85 for (i = 0; i < scr_width*scr_height; i++) { 86 scr_addr[i * 2] = ' '; 87 scr_addr[i * 2 + 1] = style; 88 88 } 89 89 } … … 93 93 int ega_cursor; 94 94 95 ega_cursor =col+scr_width*row;95 ega_cursor = col + scr_width * row; 96 96 97 outb(EGA_IO_ADDRESS 98 outb(EGA_IO_ADDRESS + 1, (ega_cursor >> 8) & 0xff);99 outb(EGA_IO_ADDRESS 97 outb(EGA_IO_ADDRESS, 0xe); 98 outb(EGA_IO_ADDRESS + 1, (ega_cursor >> 8) & 0xff); 99 outb(EGA_IO_ADDRESS, 0xf); 100 100 outb(EGA_IO_ADDRESS + 1, ega_cursor & 0xff); 101 101 } … … 105 105 uint8_t stat; 106 106 107 outb(EGA_IO_ADDRESS 107 outb(EGA_IO_ADDRESS, 0xa); 108 108 stat=inb(EGA_IO_ADDRESS + 1); 109 outb(EGA_IO_ADDRESS 110 outb(EGA_IO_ADDRESS + 1 ,stat | (1<<5));109 outb(EGA_IO_ADDRESS, 0xa); 110 outb(EGA_IO_ADDRESS + 1, stat | (1 << 5)); 111 111 } 112 112 … … 115 115 uint8_t stat; 116 116 117 outb(EGA_IO_ADDRESS 117 outb(EGA_IO_ADDRESS, 0xa); 118 118 stat=inb(EGA_IO_ADDRESS + 1); 119 outb(EGA_IO_ADDRESS 120 outb(EGA_IO_ADDRESS + 1 ,stat & (~(1<<5)));119 outb(EGA_IO_ADDRESS, 0xa); 120 outb(EGA_IO_ADDRESS + 1, stat & (~(1 << 5))); 121 121 } 122 122 … … 125 125 int i; 126 126 if (rows > 0) { 127 memcpy (scr_addr,((char *)scr_addr) + rows * scr_width * 2,127 memcpy(scr_addr, ((char *) scr_addr) + rows * scr_width * 2, 128 128 scr_width * scr_height * 2 - rows * scr_width * 2); 129 for (i = 0; i < rows * scr_width ; i++)130 (((short *) scr_addr) + scr_width * scr_height - rows *131 scr_width) 129 for (i = 0; i < rows * scr_width; i++) 130 (((short *) scr_addr) + scr_width * scr_height - rows * 131 scr_width)[i] = ((style << 8) + ' '); 132 132 } else if (rows < 0) { 133 memcpy 133 memcpy(((char *)scr_addr) - rows * scr_width * 2, scr_addr, 134 134 scr_width * scr_height * 2 + rows * scr_width * 2); 135 for (i = 0; i < - rows * scr_width; i++)136 ((short *)scr_addr) 135 for (i = 0; i < -rows * scr_width; i++) 136 ((short *)scr_addr)[i] = ((style << 8 ) + ' '); 137 137 } 138 138 } … … 140 140 static void printchar(char c, unsigned int row, unsigned int col) 141 141 { 142 scr_addr[(row *scr_width + col)*2] = c;143 scr_addr[(row *scr_width + col)*2+1] = style;142 scr_addr[(row * scr_width + col) * 2] = c; 143 scr_addr[(row * scr_width + col) * 2 + 1] = style; 144 144 145 cursor_goto(row, col+1);145 cursor_goto(row, col + 1); 146 146 } 147 147 … … 150 150 int i; 151 151 152 for (i=0; i < scr_width*scr_height; i++) { 153 scr_addr[i*2] = data[i].character; 154 scr_addr[i*2+1] = EGA_STYLE(data[i].style.fg_color, data[i].style.bg_color); 152 for (i = 0; i < scr_width * scr_height; i++) { 153 scr_addr[i * 2] = data[i].character; 154 scr_addr[i * 2 + 1] = EGA_STYLE(data[i].style.fg_color, 155 data[i].style.bg_color); 155 156 } 156 157 } … … 160 161 int i; 161 162 162 for (i=0; ( i < MAX_SAVED_SCREENS) && (saved_screens[i].data); i++)163 for (i=0; (i < MAX_SAVED_SCREENS) && (saved_screens[i].data); i++) 163 164 ; 164 165 if (i == MAX_SAVED_SCREENS) 165 166 return EINVAL; 166 if (!(saved_screens[i].data =malloc( 2 * scr_width*scr_height)))167 if (!(saved_screens[i].data = malloc(2 * scr_width * scr_height))) 167 168 return ENOMEM; 168 169 memcpy(saved_screens[i].data, scr_addr, 2 * scr_width * scr_height); … … 174 175 { 175 176 if (saved_screens[i].data) 176 memcpy(scr_addr, saved_screens[i].data, 2 * scr_width * scr_height); 177 else return EINVAL; 177 memcpy(scr_addr, saved_screens[i].data, 2 * scr_width * 178 scr_height); 179 else 180 return EINVAL; 178 181 return i; 179 182 } … … 204 207 case IPC_M_PHONE_HUNGUP: 205 208 client_connected = 0; 206 ipc_answer_fast(callid, 0,0,0);209 ipc_answer_fast(callid, 0, 0, 0); 207 210 return; /* Exit thread */ 208 211 case IPC_M_AS_AREA_SEND: 209 212 /* We accept one area for data interchange */ 210 213 intersize = IPC_GET_ARG2(call); 211 if (intersize >= scr_width*scr_height*sizeof(*interbuf)) { 212 receive_comm_area(callid,&call,(void *)&interbuf); 214 if (intersize >= scr_width * scr_height * 215 sizeof(*interbuf)) { 216 receive_comm_area(callid, &call, (void *) 217 &interbuf); 213 218 continue; 214 219 } … … 238 243 break; 239 244 } 240 printchar(c, row,col);245 printchar(c, row, col); 241 246 retval = 0; 242 247 break; … … 248 253 break; 249 254 } 250 cursor_goto(row, col);255 cursor_goto(row, col); 251 256 retval = 0; 252 257 break; 253 258 case FB_SCROLL: 254 259 i = IPC_GET_ARG1(call); 255 if (i > scr_height || i < (- (int)scr_height)) {260 if (i > scr_height || i < -((int) scr_height)) { 256 261 retval = EINVAL; 257 262 break; … … 296 301 retval = ENOENT; 297 302 } 298 ipc_answer_fast(callid, retval,0,0);303 ipc_answer_fast(callid, retval, 0, 0); 299 304 } 300 305 } … … 305 310 size_t sz; 306 311 307 308 ega_ph_addr=(void *)sysinfo_value("fb.address.physical"); 309 scr_width=sysinfo_value("fb.width"); 310 scr_height=sysinfo_value("fb.height"); 312 ega_ph_addr = (void *) sysinfo_value("fb.address.physical"); 313 scr_width = sysinfo_value("fb.width"); 314 scr_height = sysinfo_value("fb.height"); 311 315 iospace_enable(task_get_id(), (void *) EGA_IO_ADDRESS, 2); 312 316
Note:
See TracChangeset
for help on using the changeset viewer.