/[gxemul]/trunk/src/devices/dev_vga.c
This is repository of my old source code which isn't updated any more. Go to git.rot13.org for current projects!
ViewVC logotype

Diff of /trunk/src/devices/dev_vga.c

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 18 by dpavlin, Mon Oct 8 16:19:11 2007 UTC revision 20 by dpavlin, Mon Oct 8 16:19:23 2007 UTC
# Line 25  Line 25 
25   *  SUCH DAMAGE.   *  SUCH DAMAGE.
26   *     *  
27   *   *
28   *  $Id: dev_vga.c,v 1.86 2005/10/27 14:01:14 debug Exp $   *  $Id: dev_vga.c,v 1.90 2005/11/13 00:14:10 debug Exp $
29   *   *
30   *  VGA charcell and graphics device.   *  VGA charcell and graphics device.
31   *   *
# Line 53  Line 53 
53    
54    
55  /*  For videomem -> framebuffer updates:  */  /*  For videomem -> framebuffer updates:  */
56  #define VGA_TICK_SHIFT          19  #define VGA_TICK_SHIFT          18
57    
58  #define MAX_RETRACE_SCANLINES   420  #define MAX_RETRACE_SCANLINES   420
59  #define N_IS1_READ_THRESHOLD    50  #define N_IS1_READ_THRESHOLD    50
# Line 777  static void vga_crtc_reg_write(struct ma Line 777  static void vga_crtc_reg_write(struct ma
777                  case 0x01:                  case 0x01:
778                          d->cur_mode = MODE_CHARCELL;                          d->cur_mode = MODE_CHARCELL;
779                          d->max_x = 40; d->max_y = 25;                          d->max_x = 40; d->max_y = 25;
780                          d->pixel_repx = 2; d->pixel_repy = 1;                          d->pixel_repx = machine->x11_scaleup * 2;
781                            d->pixel_repy = machine->x11_scaleup;
782                          d->font_width = 8;                          d->font_width = 8;
783                          d->font_height = 16;                          d->font_height = 16;
784                          d->font = font8x16;                          d->font = font8x16;
# Line 787  static void vga_crtc_reg_write(struct ma Line 788  static void vga_crtc_reg_write(struct ma
788                  case 0x03:                  case 0x03:
789                          d->cur_mode = MODE_CHARCELL;                          d->cur_mode = MODE_CHARCELL;
790                          d->max_x = 80; d->max_y = 25;                          d->max_x = 80; d->max_y = 25;
791                          d->pixel_repx = d->pixel_repy = 1;                          d->pixel_repx = d->pixel_repy = machine->x11_scaleup;
792                          d->font_width = 8;                          d->font_width = 8;
793                          d->font_height = 16;                          d->font_height = 16;
794                          d->font = font8x16;                          d->font = font8x16;
# Line 797  static void vga_crtc_reg_write(struct ma Line 798  static void vga_crtc_reg_write(struct ma
798                          d->max_x = 160; d->max_y = 200;                          d->max_x = 160; d->max_y = 200;
799                          d->graphics_mode = GRAPHICS_MODE_4BIT;                          d->graphics_mode = GRAPHICS_MODE_4BIT;
800                          d->bits_per_pixel = 4;                          d->bits_per_pixel = 4;
801                          d->pixel_repx = 4;                          d->pixel_repx = 4 * machine->x11_scaleup;
802                          d->pixel_repy = 2;                          d->pixel_repy = 2 * machine->x11_scaleup;
803                          break;                          break;
804                  case 0x09:                  case 0x09:
805                  case 0x0d:                  case 0x0d:
# Line 806  static void vga_crtc_reg_write(struct ma Line 807  static void vga_crtc_reg_write(struct ma
807                          d->max_x = 320; d->max_y = 200;                          d->max_x = 320; d->max_y = 200;
808                          d->graphics_mode = GRAPHICS_MODE_4BIT;                          d->graphics_mode = GRAPHICS_MODE_4BIT;
809                          d->bits_per_pixel = 4;                          d->bits_per_pixel = 4;
810                          d->pixel_repx = d->pixel_repy = 2;                          d->pixel_repx = d->pixel_repy =
811                                2 * machine->x11_scaleup;
812                          break;                          break;
813                  case 0x0e:                  case 0x0e:
814                          d->cur_mode = MODE_GRAPHICS;                          d->cur_mode = MODE_GRAPHICS;
815                          d->max_x = 640; d->max_y = 200;                          d->max_x = 640; d->max_y = 200;
816                          d->graphics_mode = GRAPHICS_MODE_4BIT;                          d->graphics_mode = GRAPHICS_MODE_4BIT;
817                          d->bits_per_pixel = 4;                          d->bits_per_pixel = 4;
818                          d->pixel_repx = 1;                          d->pixel_repx = machine->x11_scaleup;
819                          d->pixel_repy = 2;                          d->pixel_repy = machine->x11_scaleup * 2;
820                          break;                          break;
821                  case 0x10:                  case 0x10:
822                          d->cur_mode = MODE_GRAPHICS;                          d->cur_mode = MODE_GRAPHICS;
823                          d->max_x = 640; d->max_y = 350;                          d->max_x = 640; d->max_y = 350;
824                          d->graphics_mode = GRAPHICS_MODE_4BIT;                          d->graphics_mode = GRAPHICS_MODE_4BIT;
825                          d->bits_per_pixel = 4;                          d->bits_per_pixel = 4;
826                          d->pixel_repx = d->pixel_repy = 1;                          d->pixel_repx = d->pixel_repy = machine->x11_scaleup;
827                          break;                          break;
828                  case 0x12:                  case 0x12:
829                          d->cur_mode = MODE_GRAPHICS;                          d->cur_mode = MODE_GRAPHICS;
830                          d->max_x = 640; d->max_y = 480;                          d->max_x = 640; d->max_y = 480;
831                          d->graphics_mode = GRAPHICS_MODE_4BIT;                          d->graphics_mode = GRAPHICS_MODE_4BIT;
832                          d->bits_per_pixel = 4;                          d->bits_per_pixel = 4;
833                          d->pixel_repx = d->pixel_repy = 1;                          d->pixel_repx = d->pixel_repy = machine->x11_scaleup;
834                          break;                          break;
835                  case 0x13:                  case 0x13:
836                          d->cur_mode = MODE_GRAPHICS;                          d->cur_mode = MODE_GRAPHICS;
837                          d->max_x = 320; d->max_y = 200;                          d->max_x = 320; d->max_y = 200;
838                          d->graphics_mode = GRAPHICS_MODE_8BIT;                          d->graphics_mode = GRAPHICS_MODE_8BIT;
839                          d->bits_per_pixel = 8;                          d->bits_per_pixel = 8;
840                          d->pixel_repx = d->pixel_repy = 2;                          d->pixel_repx = d->pixel_repy =
841                                2 * machine->x11_scaleup;
842                          break;                          break;
843                  default:                  default:
844                          fatal("TODO! video mode change hack (mode 0x%02x)\n",                          fatal("TODO! video mode change hack (mode 0x%02x)\n",
# Line 891  static void vga_sequencer_reg_write(stru Line 894  static void vga_sequencer_reg_write(stru
894          int regnr, int idata)          int regnr, int idata)
895  {  {
896          switch (regnr) {          switch (regnr) {
897          case VGA_SEQ_MAP_MASK:          /*  0x02  */          case VGA_SEQ_RESET:
898            case VGA_SEQ_MAP_MASK:
899            case VGA_SEQ_SEQUENCER_MEMORY_MODE:
900                    debug("[ vga_sequencer_reg_write: select %i: TODO ]\n", regnr);
901                  break;                  break;
902          default:fatal("[ vga_sequencer_reg_write: select %i ]\n", regnr);          default:fatal("[ vga_sequencer_reg_write: select %i ]\n", regnr);
903                  /*  cpu->running = 0;  */                  /*  cpu->running = 0;  */
# Line 908  static void vga_graphcontr_reg_write(str Line 914  static void vga_graphcontr_reg_write(str
914          struct vga_data *d, int regnr, int idata)          struct vga_data *d, int regnr, int idata)
915  {  {
916          switch (regnr) {          switch (regnr) {
917          case VGA_GRAPHCONTR_MASK:               /*  0x08  */          case VGA_GRAPHCONTR_READMAPSELECT:
918            case VGA_GRAPHCONTR_GRAPHICSMODE:
919            case VGA_GRAPHCONTR_MISC:
920            case VGA_GRAPHCONTR_MASK:
921                    debug("[ vga_graphcontr_reg_write: select %i: TODO ]\n", regnr);
922                  break;                  break;
923          default:fatal("[ vga_graphcontr_reg_write: select %i ]\n", regnr);          default:fatal("[ vga_graphcontr_reg_write: select %i ]\n", regnr);
924                  /*  cpu->running = 0;  */                  /*  cpu->running = 0;  */
# Line 1189  void dev_vga_init(struct machine *machin Line 1199  void dev_vga_init(struct machine *machin
1199          d->control_base   = control_base;          d->control_base   = control_base;
1200          d->max_x          = 80;          d->max_x          = 80;
1201          d->max_y          = 25;          d->max_y          = 25;
         d->pixel_repx     = 1;  
         d->pixel_repy     = 1;  
1202          d->cur_mode       = MODE_CHARCELL;          d->cur_mode       = MODE_CHARCELL;
1203          d->crtc_reg[0xff] = 0x03;          d->crtc_reg[0xff] = 0x03;
1204          d->charcells_size = 0x8000;          d->charcells_size = 0x8000;
1205          d->gfx_mem_size   = 1;  /*  Nothing, as we start in text mode  */          d->gfx_mem_size   = 1;  /*  Nothing, as we start in text mode  */
1206            d->pixel_repx = d->pixel_repy = machine->x11_scaleup;
1207    
1208          /*  Allocate in full pages, to make it possible to use bintrans:  */          /*  Allocate in full pages, to make it possible to use bintrans:  */
1209          allocsize = ((d->charcells_size-1) | (machine->arch_pagesize-1)) + 1;          allocsize = ((d->charcells_size-1) | (machine->arch_pagesize-1)) + 1;
# Line 1232  void dev_vga_init(struct machine *machin Line 1241  void dev_vga_init(struct machine *machin
1241          }          }
1242    
1243          memory_device_register(mem, "vga_charcells", videomem_base + 0x18000,          memory_device_register(mem, "vga_charcells", videomem_base + 0x18000,
1244              allocsize, dev_vga_access, d, MEM_DYNTRANS_OK |              allocsize, dev_vga_access, d, DM_DYNTRANS_OK |
1245              MEM_DYNTRANS_WRITE_OK | MEM_READING_HAS_NO_SIDE_EFFECTS,              DM_DYNTRANS_WRITE_OK | DM_READS_HAVE_NO_SIDE_EFFECTS,
1246              d->charcells);              d->charcells);
1247          memory_device_register(mem, "vga_gfx", videomem_base, GFX_ADDR_WINDOW,          memory_device_register(mem, "vga_gfx", videomem_base, GFX_ADDR_WINDOW,
1248              dev_vga_graphics_access, d, MEM_DEFAULT |              dev_vga_graphics_access, d, DM_DEFAULT |
1249              MEM_READING_HAS_NO_SIDE_EFFECTS, d->gfx_mem);              DM_READS_HAVE_NO_SIDE_EFFECTS, d->gfx_mem);
1250          memory_device_register(mem, "vga_ctrl", control_base,          memory_device_register(mem, "vga_ctrl", control_base,
1251              32, dev_vga_ctrl_access, d, MEM_DEFAULT, NULL);              32, dev_vga_ctrl_access, d, DM_DEFAULT, NULL);
1252    
1253          d->fb = dev_fb_init(machine, mem, VGA_FB_ADDR, VFB_GENERIC,          d->fb = dev_fb_init(machine, mem, VGA_FB_ADDR, VFB_GENERIC,
1254              d->fb_max_x, d->fb_max_y, d->fb_max_x, d->fb_max_y, 24, "VGA");              d->fb_max_x, d->fb_max_y, d->fb_max_x, d->fb_max_y, 24, "VGA");

Legend:
Removed from v.18  
changed lines
  Added in v.20

  ViewVC Help
Powered by ViewVC 1.1.26