Previous 15994 Revisions Next

r2181 Monday 31st March, 2008 at 10:12:22 UTC by Robbbert
[VTECH1] Added information screen to snapload. Marked vz200de as NOT WORKING.
[src/mess/drivers]vtech1.c
[src/mess/machine]vtech1.c

src/mess/machine/vtech1.c
r2180r2181
5353#include "devices/printer.h"
5454#include "cpu/z80/z80.h"
5555#include "sound/speaker.h"
56#include "ui.h"
5657
5758
5859#define LOG_VTECH1_LATCH 0
r2180r2181
177178
178179SNAPSHOT_LOAD(vtech1)
179180{
180   UINT8 header[24];
181   UINT16 start, end;
181   UINT8 i, header[24];
182   UINT16 start, end, size;
183   char * pgmname;
184   pgmname = (char *) malloc(18);
182185
183186   /* get the header */
184187   image_fread(image, &header, sizeof(header));
188   for (i = 0; i < 16; i++) pgmname[i] = header[i+4];
189   pgmname[16] = 0;
185190
186191   /* get start and end addresses */
187192   start = pick_integer_le(header, 22, 2);
188193   end = start + snapshot_size - sizeof(header);
194   size = end - start;
189195
190196   /* check if we have enough ram */
191   if (mess_ram_size < end - start)
197   if (mess_ram_size < size)
198   {
199      ui_popup_time(10,"SNAPLOAD: %s\nInsufficient RAM - need %04X",pgmname,size);
200      free(pgmname);
192201      return INIT_FAIL;
202   }
193203
194204   /* write it to ram */
195   image_fread(image, &mess_ram[start - 0x7800], end - start);
205   image_fread(image, &mess_ram[start - 0x7800], size);
196206
197207   /* patch variables depending on snapshot type */
198208   switch (header[21])
199209   {
200   case VZ_BASIC:
210   case VZ_BASIC:      /* 0xF0 */
201211      program_write_byte_8(0x78a4, start % 256); /* start of basic program */
202212      program_write_byte_8(0x78a5, start / 256);
203213      program_write_byte_8(0x78f9, end % 256); /* end of basic program */
r2180r2181
206216      program_write_byte_8(0x78fc, end / 256);
207217      program_write_byte_8(0x78fd, end % 256); /* start free mem, end variable table */
208218      program_write_byte_8(0x78fe, end / 256);
219      popmessage("%s (B)\nsize=%04X : start=%04X : end=%04X",pgmname,size,start,end);
220      free(pgmname);
209221      break;
210222
211   case VZ_MCODE:
223   case VZ_MCODE:      /* 0xF1 */
212224      program_write_byte_8(0x788e, start % 256); /* usr subroutine address */
213225      program_write_byte_8(0x788f, start / 256);
226      popmessage("%s (M)\nsize=%04X : start=%04X : end=%04X",pgmname,size,start,end);
227      free(pgmname);
228      cpunum_set_reg(0, REG_PC, start);            /* start program */
214229      break;
215230
216231   default:
217232      image_seterror(image, IMAGE_ERROR_UNSUPPORTED, "Snapshot format not supported.");
233      free(pgmname);
218234      return INIT_FAIL;
219235      break;
220236   }
src/mess/drivers/vtech1.c
r2180r2181
575575COMP( 1983, las110de,   laser110,   0,      laser110,   vtech1, 0,   laser110,   "Sanyo",                    "Laser 110 (Germany)",              0 )
576576
577577COMP( 1983, laser200,   0,          0,      laser200,   vtech1, 0,   laser110,   "Video Technology",         "Laser 200",                        0 )
578COMP( 1983, vz200de,    laser200,   0,      laser200,   vtech1, 0,   laser110,   "Video Technology",         "VZ-200 (Germany & Netherlands)",   0 )
578COMP( 1983, vz200de,    laser200,   0,      laser200,   vtech1, 0,   laser110,   "Video Technology",         "VZ-200 (Germany & Netherlands)",   GAME_NOT_WORKING )
579579COMP( 1983, fellow,     laser200,   0,      laser200,   vtech1, 0,   laser110,   "Salora",                   "Fellow (Finland)",                 0 )
580580COMP( 1983, tx8000,     laser200,   0,      laser200,   vtech1, 0,   laser110,   "Texet",                    "TX-8000 (UK)",                     0 )
581581

Previous 15994 Revisions Next


© 1998-2018 The MESS Team