mirror of
https://github.com/holub/mame
synced 2025-04-26 18:23:08 +03:00
do you user-defined literal? also some more notes on the digital scale (nw)
This commit is contained in:
parent
30add0e064
commit
7168abee36
@ -162,7 +162,7 @@ device_t *machine_config::device_add(device_t *owner, const char *tag, device_ty
|
||||
device_t *machine_config::device_add(device_t *owner, const char *tag, device_type type, const XTAL &clock)
|
||||
{
|
||||
std::string msg = std::string("Instantiating device ") + tag;
|
||||
clock.check(msg);
|
||||
clock.validate(msg);
|
||||
return device_add(owner, tag, type, clock.value());
|
||||
}
|
||||
|
||||
@ -202,7 +202,7 @@ device_t *machine_config::device_replace(device_t *owner, const char *tag, devic
|
||||
device_t *machine_config::device_replace(device_t *owner, const char *tag, device_type type, const XTAL &clock)
|
||||
{
|
||||
std::string msg = std::string("Replacing device ") + tag;
|
||||
clock.check(msg);
|
||||
clock.validate(msg);
|
||||
return device_replace(owner, tag, type, clock.value());
|
||||
}
|
||||
|
||||
|
@ -96,6 +96,7 @@ const double XTAL::known_xtals[] = {
|
||||
4'915'200,
|
||||
5'000'000, /* Mutant Night */
|
||||
5'068'800, /* Usually used as MC2661 or COM8116 baud rate clock */
|
||||
5'185'000, /* Intel INTELLEC® 4 */
|
||||
5'460'000, /* ec1840 and ec1841 keyboard */
|
||||
5'529'600, /* Kontron PSI98 keyboard */
|
||||
5'626'000, /* RCA CDP1869 PAL dot clock */
|
||||
@ -343,7 +344,7 @@ double XTAL::last_correct_value = -1;
|
||||
double XTAL::xtal_error_low = 0;
|
||||
double XTAL::xtal_error_high = 0;
|
||||
|
||||
bool XTAL::check(double base_clock)
|
||||
bool XTAL::validate(double base_clock)
|
||||
{
|
||||
if(base_clock == last_correct_value)
|
||||
return true;
|
||||
@ -396,15 +397,15 @@ bool XTAL::check(double base_clock)
|
||||
return false;
|
||||
}
|
||||
|
||||
void XTAL::check(const char *message) const
|
||||
void XTAL::validate(const char *message) const
|
||||
{
|
||||
if(!check(m_base_clock))
|
||||
if(!validate(m_base_clock))
|
||||
fail(m_base_clock, message);
|
||||
}
|
||||
|
||||
void XTAL::check(const std::string &message) const
|
||||
void XTAL::validate(const std::string &message) const
|
||||
{
|
||||
if(!check(m_base_clock))
|
||||
if(!validate(m_base_clock))
|
||||
fail(m_base_clock, message);
|
||||
}
|
||||
|
||||
@ -545,7 +546,6 @@ reveals the following shipping frequencies as of 1/1/2008:
|
||||
5.000MHz
|
||||
5.0688MHz
|
||||
5.120MHz
|
||||
5.185MHz
|
||||
5.223438MHz
|
||||
5.5MHz
|
||||
5.5296MHz
|
||||
|
@ -64,8 +64,8 @@ public:
|
||||
friend constexpr XTAL operator *(unsigned int mult, const XTAL &xtal);
|
||||
friend constexpr XTAL operator *(double mult, const XTAL &xtal);
|
||||
|
||||
void check(const char *message) const;
|
||||
void check(const std::string &message) const;
|
||||
void validate(const char *message) const;
|
||||
void validate(const std::string &message) const;
|
||||
|
||||
private:
|
||||
double m_base_clock, m_current_clock;
|
||||
@ -75,7 +75,7 @@ private:
|
||||
static const double known_xtals[];
|
||||
static double last_correct_value, xtal_error_low, xtal_error_high;
|
||||
static void fail(double base_clock, std::string message);
|
||||
static bool check(double base_clock);
|
||||
static bool validate(double base_clock);
|
||||
static void check_ordering();
|
||||
};
|
||||
|
||||
@ -86,4 +86,8 @@ constexpr XTAL operator *(int mult, const XTAL &xtal) { return XTAL(xta
|
||||
constexpr XTAL operator *(unsigned int mult, const XTAL &xtal) { return XTAL(xtal.base(), mult * xtal.dvalue()); }
|
||||
constexpr XTAL operator *(double mult, const XTAL &xtal) { return XTAL(xtal.base(), mult * xtal.dvalue()); }
|
||||
|
||||
constexpr XTAL operator ""_Hz_XTAL(long double clock) { return XTAL(double(clock)); }
|
||||
constexpr XTAL operator ""_kHz_XTAL(long double clock) { return XTAL(double(clock * 1e3)); }
|
||||
constexpr XTAL operator ""_MHz_XTAL(long double clock) { return XTAL(double(clock * 1e6)); }
|
||||
|
||||
#endif // MAME_EMU_DRIVERS_XTAL_H
|
||||
|
@ -1040,7 +1040,7 @@ private:
|
||||
----------------------------------*/
|
||||
|
||||
MACHINE_CONFIG_DERIVED(mod4_state::mod4, intellec4)
|
||||
MCFG_CPU_ADD("maincpu", I4004, 5185000. / 7)
|
||||
MCFG_CPU_ADD("maincpu", I4004, 5.185_MHz_XTAL / 7)
|
||||
MCFG_I4004_ROM_MAP(intellec4_rom)
|
||||
MCFG_I4004_RAM_MEMORY_MAP(intellec4_ram_memory)
|
||||
MCFG_I4004_ROM_PORTS_MAP(intellec4_rom_ports)
|
||||
@ -1231,7 +1231,7 @@ private:
|
||||
----------------------------------*/
|
||||
|
||||
MACHINE_CONFIG_DERIVED(mod40_state::mod40, intellec4)
|
||||
MCFG_CPU_ADD("maincpu", I4040, 5185000. / 7)
|
||||
MCFG_CPU_ADD("maincpu", I4040, 5.185_MHz_XTAL / 7)
|
||||
MCFG_I4040_ROM_MAP(intellec4_rom)
|
||||
MCFG_I4040_RAM_MEMORY_MAP(intellec4_ram_memory)
|
||||
MCFG_I4040_ROM_PORTS_MAP(intellec4_rom_ports)
|
||||
|
@ -98,7 +98,7 @@ TODO:
|
||||
#include "softlist.h"
|
||||
|
||||
|
||||
#define MAIN_CLOCK XTAL(15'974'400)
|
||||
static constexpr XTAL MAIN_CLOCK = 15.9744_MHz_XTAL;
|
||||
|
||||
|
||||
static ADDRESS_MAP_START( osborne1_mem, AS_PROGRAM, 8, osborne1_state )
|
||||
|
@ -2,8 +2,9 @@
|
||||
/*
|
||||
Sartorius 3733 digital scale
|
||||
|
||||
Visible ICs:
|
||||
* Intel D4040 CPU
|
||||
Mainboard:
|
||||
* 4194.304 kHz crystal
|
||||
* Intel D4040 4-bit CPU
|
||||
* Intel D4289 8-bit memory controller
|
||||
* 2 * Intel P4002-1 (64+16)*4 RAM (sockets for 2 * Intel P4002-2 unpopulated)
|
||||
* 2 * 2708 1k*8 ROM labelled "129/0" and "129/1"
|
||||
@ -11,15 +12,38 @@
|
||||
* Intersil IM6561AIJN 256*4 CMOS RAM
|
||||
* RCA CD4007AE dual complementary pair plus inverter
|
||||
* National Semicondictor CD4049CN hex inverting buffer
|
||||
* Intel P4201A clock generator
|
||||
* 4 * Motorola MC14099B 8-bit addressable latch
|
||||
* 2 * RCA CD4052BE 2-channel 4:1 analog switch
|
||||
|
||||
Display board (connects to mainboard via 28-pin edge connector):
|
||||
* MM74C42 1-of-10 decoder
|
||||
* RCA CD4071BE Quad 2-input OR gate
|
||||
* RCA CD4011BE Quad 2-input NAND gate
|
||||
* RCA CD4055BE BCD to 7-segment decoder with high-voltage outputs
|
||||
* 12 TO-92 transistors near the MM74C42 and CD4071BE
|
||||
* 7 TO-92 transistors near the CD4011BE
|
||||
* 7 TO-92 transistors near the CD4055BE
|
||||
|
||||
Front panel has a digital display, an "R" button for switching between
|
||||
300g and 3kg ranges, and a T button for zeroing. Rear panel has a
|
||||
three-position rotary switch to select between standalone operation and
|
||||
data acquisition modes, and a 50-pin micro ribbon connector for data
|
||||
communication.
|
||||
|
||||
The vacuum fluorescent display has seven 7-segment digits, each of
|
||||
which can be followed by a . (stop) or , (comma) for digit grouping or
|
||||
decimal point. The last digit can also show the vulgar fraction ½
|
||||
using the G segment as the fraction bar and additional 1 and 2 segments
|
||||
(these could potentially be used independently as well). To the right
|
||||
of the least significant digit, the display can show % (percent) or g
|
||||
(lowecase G). To the legt of the leftmost digit, the display has,
|
||||
from top to bottom, + (plus), - (minus), and a small circle.
|
||||
|
||||
Strangely, the P4201A clock generator IC is a long way from the
|
||||
crystal. The mode pin is tied to Vss, putting it in divide-by-seven
|
||||
mode.
|
||||
|
||||
No dates or other ASCII strings in program ROM. IC date codes up to
|
||||
1978.
|
||||
*/
|
||||
|
Loading…
Reference in New Issue
Block a user