Previous 15994 Revisions Next

r2879 Sunday 22nd June, 2008 at 18:17:39 UTC by Nathan Woods
[TI99] Implemented loading and saving of the battery-backed RAM of the
MiniMemory cartridge. [Michael Zapf]
[docs]messnew.txt
[src/mess/machine]ti99_4x.c

src/mess/machine/ti99_4x.c
r2878r2879
3737     SNUG's BwG and HFDC fdcs).
3838   * Hard disk (HFDC and IDE).
3939   * Mechatronics mouse.
40   * save minimemory contents
4041
4142   Compatibility looks quite good.
4243
r2878r2879
4748   * support for other peripherals and DSRs as documentation permits
4849   * implement the EVPC palette chip
4950   * finish 99/4p support: ROM6, HSGPL (implemented, but not fully debugged)
50   * save minimemory contents
5151*/
5252
5353#include <math.h>
r2878r2879
548548
549549   case SLOT_MINIMEM:
550550      cartridge_minimemory = TRUE;
551      /* Load the NVRAM. Need to BIG_ENDIANIZE it.
552         MiniMemory has only one cartridge page. */
553      image_battery_load(image, cartridge_pages[0]+0x800,0x1000);
554      for (i = 0x800; i < 0x1000; i++)
555         cartridge_pages[0][i] = BIG_ENDIANIZE_INT16(cartridge_pages[0][i]);
556      break;
551557   case SLOT_MBX:
552      if (type == SLOT_MBX)
553         cartridge_mbx = TRUE;
558      cartridge_mbx = TRUE;
559      break;
554560   case SLOT_CROM:
555561      if (ti99_model == model_99_8)
556562      {
557         image_fread(image, cartridge_pages_8[0], 0x2000);
563         if (cartridge_minimemory)
564            /* Only load 4K so we don't overwrite the NVRAM. */
565            image_fread(image, cartridge_pages_8[0], 0x1000);
566         else
567            image_fread(image, cartridge_pages_8[0], 0x2000);
558568         current_page_ptr_8 = cartridge_pages_8[0];
559569      }
560570      else
561571      {
572          if (cartridge_minimemory)
573          {
574         /* Only load 4K so we don't overwrite the NVRAM that
575            has been loaded already. */
576         image_fread(image, cartridge_pages[0], 0x1000);
577         for (i = 0; i < 0x0800; i++)
578            cartridge_pages[0][i] = BIG_ENDIANIZE_INT16(cartridge_pages[0][i]);
579          }
580          else
581          {
562582         image_fread(image, cartridge_pages[0], 0x2000);
563583         for (i = 0; i < 0x1000; i++)
564584            cartridge_pages[0][i] = BIG_ENDIANIZE_INT16(cartridge_pages[0][i]);
565         current_page_ptr = cartridge_pages[0];
585          }
586          current_page_ptr = cartridge_pages[0];
566587      }
567588      break;
568589
r2878r2879
588609
589610DEVICE_IMAGE_UNLOAD( ti99_cart )
590611{
612   int i;
591613   int id = image_index_in_device(image);
592614
593615   /* There is a circuitry in TI99/4(a) that resets the console when a
r2878r2879
611633
612634   case SLOT_MINIMEM:
613635      cartridge_minimemory = FALSE;
614      /* we should insert some code to save the minimem contents... */
636      if (ti99_model == model_99_8)
637      {
638         image_battery_save(image, cartridge_pages_8[0] + 0x1000, 0x1000);
639         memset(cartridge_pages_8[0] + 0x1000, 0, 0x1000);
640      }
641      else
642      {
643         /* We BIG_ENDIANIZE before saving. This is consistent
644            with the cartridge save format. */
645         for (i = 0x800; i < 0x1000; i++)
646            cartridge_pages[0][i] = BIG_ENDIANIZE_INT16(cartridge_pages[0][i]);
647         image_battery_save(image, cartridge_pages[0] + 0x800, 0x1000);
648         memset(cartridge_pages[0] + 0x800, 0, 0x1000);
649      }
650      break;
615651   case SLOT_MBX:
616652      if (slot_type[id] == SLOT_MBX)
617653         cartridge_mbx = FALSE;
618654         /* maybe we should insert some code to save the memory contents... */
655                break;
619656   case SLOT_CROM:
620657      if (ti99_model == model_99_8)
621658      {
622         memset(cartridge_pages_8[0], 0, 0x2000);
659         if (cartridge_minimemory)
660            /* Don't wipe the RAM before it is saved. */
661            memset(cartridge_pages_8[0], 0, 0x1000);
662         else
663            memset(cartridge_pages_8[0], 0, 0x2000);
623664      }
624665      else
625666      {
626         memset(cartridge_pages[0], 0, 0x2000);
667         if (cartridge_minimemory)
668            memset(cartridge_pages[0], 0, 0x1000);
669         else
670            memset(cartridge_pages[0], 0, 0x2000);
627671      }
628672      break;
629673
r2878r2879
9831027   Memory handlers.
9841028
9851029   TODO:
986   * save minimem RAM when quitting
9871030   * actually implement GRAM support and GPL port support
9881031*/
9891032
docs/messnew.txt
r2878r2879
105105
106106- [UT88] Added SHA-1's.  [Fabio Priuli]
107107
108- [TI99] Implemented loading and saving of the battery-backed RAM of the
109  MiniMemory cartridge.  [Michael Zapf]
110
108111- [X68000] Added basic SASI hard disk support [Barry Rodewald]:
109112  Currently supported SASI commands:
110113  * Rezero Unit

Previous 15994 Revisions Next


© 1998-2018 The MESS Team