1 //
2 // Copyright (c) 2004 K. Wilkins
3 //
4 // This software is provided 'as-is', without any express or implied warranty.
5 // In no event will the authors be held liable for any damages arising from
6 // the use of this software.
7 //
8 // Permission is granted to anyone to use this software for any purpose,
9 // including commercial applications, and to alter it and redistribute it
10 // freely, subject to the following restrictions:
11 //
12 // 1. The origin of this software must not be misrepresented; you must not
13 // claim that you wrote the original software. If you use this software
14 // in a product, an acknowledgment in the product documentation would be
15 // appreciated but is not required.
16 //
17 // 2. Altered source versions must be plainly marked as such, and must not
18 // be misrepresented as being the original software.
19 //
20 // 3. This notice may not be removed or altered from any source distribution.
21 //
22
23 //////////////////////////////////////////////////////////////////////////////
24 // Handy - An Atari Lynx Emulator //
25 // Copyright (c) 1996,1997 //
26 // K. Wilkins //
27 //////////////////////////////////////////////////////////////////////////////
28 // ROM emulation class //
29 //////////////////////////////////////////////////////////////////////////////
30 // //
31 // This class emulates the system ROM (512B), the interface is pretty //
32 // simple: constructor, reset, peek, poke. //
33 // //
34 // K. Wilkins //
35 // August 1997 //
36 // //
37 //////////////////////////////////////////////////////////////////////////////
38 // Revision History: //
39 // ----------------- //
40 // //
41 // 01Aug1997 KW Document header added & class documented. //
42 // //
43 //////////////////////////////////////////////////////////////////////////////
44
45 #define ROM_CPP
46
47 //#include <crtdbg.h>
48 //#define TRACE_ROM
49
50 #include "system.h"
51 #include "rom.h"
52
53 #include <errno.h>
54
CRom(const char * romfile)55 CRom::CRom(const char *romfile)
56 {
57 mWriteEnable=false;
58 Reset();
59
60 // Initialise ROM
61 for(int loop=0;loop<ROM_SIZE;loop++) mRomData[loop]=DEFAULT_ROM_CONTENTS;
62
63 // Load up the file
64
65 {
66 MDFNFILE *BIOSFile = file_open(romfile);
67
68 if(!BIOSFile)
69 {
70 /* Could not open Lynx boot ROM. */
71 return;
72 }
73
74 if(BIOSFile->size < 512)
75 {
76 /* Lynx Boot ROM image is of an incorrect size. */
77 return;
78 }
79
80 // memcpy(mRomData, BIOSFile->data, 512);
81 file_read(BIOSFile, mRomData, 512, 1);
82
83 file_close(BIOSFile);
84 }
85 }
86
Reset(void)87 void CRom::Reset(void)
88 {
89 // Nothing to do here
90 }
91
92
93 //END OF FILE
94