new NOT_WORKING machine (#5811)
* minor spelling fix * new NOT_WORKING machine Gigatron TTL Microcomputer [Sterophonick] also add a skeleton cpu core * Revert Minor Spelling Fix * Make some fixes thanks cuavas * Fix resolution * gigatron: update cpu device name * update copyright * fix part of gigatron disassembler * Set screen refresh rate * found a set of all the ROM files, update main ROM name * Fix cpu.lua * Whoops * Update gigatron.cpp * gigatron: clear execute_set_input * Update gigatron.h * Update gigatrondasm.cpp * Update gigatrondasm.h * clean up but doesnt compile ffs
This commit is contained in:
parent
317cdaf224
commit
0ff7e2ea0d
@ -2982,6 +2982,22 @@ if (CPUS["CR16B"]~=null or _OPTIONS["with-tools"]) then
|
|||||||
end
|
end
|
||||||
|
|
||||||
--------------------------------------------------
|
--------------------------------------------------
|
||||||
|
-- Gigatron
|
||||||
|
--@src/devices/cpu/gigatron.h,CPUS["GTRON"] = true
|
||||||
|
--------------------------------------------------
|
||||||
|
|
||||||
|
if (CPUS["GTRON"]~=null) then
|
||||||
|
files {
|
||||||
|
MAME_DIR .. "src/devices/cpu/gigatron/gigatron.cpp",
|
||||||
|
MAME_DIR .. "src/devices/cpu/gigatron/gigatron.h",
|
||||||
|
}
|
||||||
|
end
|
||||||
|
|
||||||
|
if (CPUS["GTRON"]~=null or _OPTIONS["with-tools"]) then
|
||||||
|
table.insert(disasm_files , MAME_DIR .. "src/devices/cpu/gigatron/gigatrondasm.cpp")
|
||||||
|
table.insert(disasm_files , MAME_DIR .. "src/devices/cpu/gigatron/gigatrondasm.h")
|
||||||
|
end
|
||||||
|
|
||||||
-- Motorola DSP56000
|
-- Motorola DSP56000
|
||||||
--@src/devices/cpu/dsp56000/dsp56000.h,CPUS["DSP56000"] = true
|
--@src/devices/cpu/dsp56000/dsp56000.h,CPUS["DSP56000"] = true
|
||||||
--------------------------------------------------
|
--------------------------------------------------
|
||||||
@ -3081,4 +3097,5 @@ end
|
|||||||
if (CPUS["RX01"]~=null or _OPTIONS["with-tools"]) then
|
if (CPUS["RX01"]~=null or _OPTIONS["with-tools"]) then
|
||||||
table.insert(disasm_files , MAME_DIR .. "src/devices/cpu/rx01/rx01dasm.cpp")
|
table.insert(disasm_files , MAME_DIR .. "src/devices/cpu/rx01/rx01dasm.cpp")
|
||||||
table.insert(disasm_files , MAME_DIR .. "src/devices/cpu/rx01/rx01dasm.h")
|
table.insert(disasm_files , MAME_DIR .. "src/devices/cpu/rx01/rx01dasm.h")
|
||||||
|
|
||||||
end
|
end
|
||||||
|
129
src/devices/cpu/gigatron/gigatron.cpp
Normal file
129
src/devices/cpu/gigatron/gigatron.cpp
Normal file
@ -0,0 +1,129 @@
|
|||||||
|
// license:BSD-3-Clause
|
||||||
|
// copyright-holders:Sterophonick
|
||||||
|
/*****************************************************************************
|
||||||
|
*
|
||||||
|
* Skeleton device for Gigatron CPU Core
|
||||||
|
*
|
||||||
|
*****************************************************************************/
|
||||||
|
|
||||||
|
#include "emu.h"
|
||||||
|
#include "gigatron.h"
|
||||||
|
#include "debugger.h"
|
||||||
|
|
||||||
|
|
||||||
|
DEFINE_DEVICE_TYPE(GTRON, gigatron_cpu_device, "gigatron", "GTRON")
|
||||||
|
|
||||||
|
|
||||||
|
/* FLAGS */
|
||||||
|
#if 0
|
||||||
|
#define S 0x80
|
||||||
|
#define Z 0x40
|
||||||
|
#define OV 0x20
|
||||||
|
#define C 0x10
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
#define gigatron_readop(A) m_program->read_dword(A)
|
||||||
|
#define gigatron_readmem16(A) m_data->read_dword(A)
|
||||||
|
#define gigatron_writemem16(A,B) m_data->write_dword((A),B)
|
||||||
|
|
||||||
|
|
||||||
|
/***********************************
|
||||||
|
* illegal opcodes
|
||||||
|
***********************************/
|
||||||
|
void gigatron_cpu_device::gigatron_illegal()
|
||||||
|
{
|
||||||
|
logerror("gigatron illegal opcode at 0x%04x\n", m_pc);
|
||||||
|
m_icount -= 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Execute cycles */
|
||||||
|
void gigatron_cpu_device::execute_run()
|
||||||
|
{
|
||||||
|
uint16_t opcode;
|
||||||
|
|
||||||
|
do
|
||||||
|
{
|
||||||
|
debugger_instruction_hook(this, m_pc);
|
||||||
|
|
||||||
|
opcode = gigatron_readop(m_pc);
|
||||||
|
m_pc++;
|
||||||
|
|
||||||
|
switch( opcode )
|
||||||
|
{
|
||||||
|
default:
|
||||||
|
gigatron_illegal();
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
} while( m_icount > 0 );
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void gigatron_cpu_device::device_start()
|
||||||
|
{
|
||||||
|
m_program = &space(AS_PROGRAM);
|
||||||
|
m_data = &space(AS_DATA);
|
||||||
|
|
||||||
|
save_item(NAME(m_pc));
|
||||||
|
save_item(NAME(m_flags));
|
||||||
|
|
||||||
|
// Register state for debugger
|
||||||
|
state_add( GTRON_R0, "PC", m_pc ).formatstr("%02X");
|
||||||
|
state_add( STATE_GENPC, "GENPC", m_r[7] ).noshow();
|
||||||
|
state_add( STATE_GENPCBASE, "CURPC", m_r[7] ).noshow();
|
||||||
|
state_add( STATE_GENFLAGS, "GENFLAGS", m_flags ).noshow();
|
||||||
|
|
||||||
|
m_icountptr = &m_icount;
|
||||||
|
}
|
||||||
|
|
||||||
|
#if 0
|
||||||
|
void gigatron_cpu_device::execute_set_input(int irqline, int state)
|
||||||
|
{
|
||||||
|
switch(irqline)
|
||||||
|
{
|
||||||
|
case GTRON_INT_INTRM: // level-sensitive
|
||||||
|
m_intrm_pending = ((ASSERT_LINE == state) || (HOLD_LINE == state));
|
||||||
|
m_intrm_state = (ASSERT_LINE == state);
|
||||||
|
break;
|
||||||
|
case GTRON_RESET: // edge-sensitive
|
||||||
|
if (CLEAR_LINE != state)
|
||||||
|
m_reset_pending = 1;
|
||||||
|
m_reset_state = (ASSERT_LINE == state);
|
||||||
|
break;
|
||||||
|
case GTRON_INT_INTR: // edge-sensitive
|
||||||
|
if (CLEAR_LINE != state)
|
||||||
|
m_intr_pending = 1;
|
||||||
|
m_intr_state = (ASSERT_LINE == state);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
gigatron_cpu_device::gigatron_cpu_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
|
||||||
|
: cpu_device(mconfig, GTRON, tag, owner, clock)
|
||||||
|
, m_program_config("program", ENDIANNESS_BIG, 8, 32, -1)
|
||||||
|
, m_data_config("data", ENDIANNESS_BIG, 8, 32, 0)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void gigatron_cpu_device::state_string_export(const device_state_entry &entry, std::string &str) const
|
||||||
|
{
|
||||||
|
switch (entry.index())
|
||||||
|
{
|
||||||
|
case STATE_GENFLAGS:
|
||||||
|
str = util::string_format("%c%c%c%c",
|
||||||
|
m_flags & 0x80 ? 'S':'.',
|
||||||
|
m_flags & 0x40 ? 'Z':'.',
|
||||||
|
m_flags & 0x20 ? 'V':'.',
|
||||||
|
m_flags & 0x10 ? 'C':'.');
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
offs_t gigatron_cpu_device::disassemble(char *buffer, offs_t pc, const uint32_t *oprom, const uint32_t *opram, uint32_t options)
|
||||||
|
{
|
||||||
|
return CPU_DISASSEMBLE_NAME(gigatron)(this, buffer, pc, opcodes, params, options);
|
||||||
|
}
|
62
src/devices/cpu/gigatron/gigatron.h
Normal file
62
src/devices/cpu/gigatron/gigatron.h
Normal file
@ -0,0 +1,62 @@
|
|||||||
|
// license:BSD-3-Clause
|
||||||
|
// copyright-holders:Sterophonick
|
||||||
|
/*****************************************************************************
|
||||||
|
*
|
||||||
|
* Skeleton Device for Gigatron CPU Core
|
||||||
|
*
|
||||||
|
*****************************************************************************/
|
||||||
|
|
||||||
|
#ifndef MAME_CPU_GTRON_H
|
||||||
|
#define MAME_CPU_GTRON_H
|
||||||
|
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
enum
|
||||||
|
{
|
||||||
|
GTRON_R0=1, GTRON_R1, GTRON_R2, GTRON_R3,
|
||||||
|
GTRON_R4, GTRON_R5, GTRON_R6, GTRON_R7
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
class gigatron_cpu_device : public cpu_device
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
// construction/destruction
|
||||||
|
gigatron_cpu_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
|
||||||
|
|
||||||
|
protected:
|
||||||
|
// device-level overrides
|
||||||
|
virtual void device_start() override;
|
||||||
|
virtual void device_reset() override;
|
||||||
|
|
||||||
|
// device_execute_interface overrides
|
||||||
|
virtual uint32_t execute_min_cycles() const noexcept override { return 1; }
|
||||||
|
virtual uint32_t execute_max_cycles() const noexcept override { return 7; }
|
||||||
|
virtual uint32_t execute_input_lines() const noexcept override { return 0; }
|
||||||
|
virtual void execute_run() override;
|
||||||
|
virtual void execute_set_input(int inputnum, int state) override;
|
||||||
|
|
||||||
|
// device_state_interface overrides
|
||||||
|
virtual void state_string_export(const device_state_entry &entry, std::string &str) const override;
|
||||||
|
|
||||||
|
|
||||||
|
private:
|
||||||
|
address_space_config m_program_config;
|
||||||
|
|
||||||
|
uint8_t m_pc; /* registers */
|
||||||
|
uint8_t m_flags; /* flags */
|
||||||
|
address_space *m_program;
|
||||||
|
address_space *m_data;
|
||||||
|
int m_icount;
|
||||||
|
|
||||||
|
void gigatron_illegal();
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
DECLARE_DEVICE_TYPE(GTRON, gigatron_cpu_device)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
#endif // MAME_CPU_GTRON_H
|
||||||
|
|
17
src/devices/cpu/gigatron/gigatrondasm.cpp
Normal file
17
src/devices/cpu/gigatron/gigatrondasm.cpp
Normal file
@ -0,0 +1,17 @@
|
|||||||
|
// license:BSD-3-Clause
|
||||||
|
// copyright-holders:Sterophonick
|
||||||
|
|
||||||
|
// Gigatron Disassembler
|
||||||
|
|
||||||
|
#include "emu.h"
|
||||||
|
#include "gigatrondasm.h"
|
||||||
|
|
||||||
|
u32 gigatron_disassembler::opcode_alignment() const
|
||||||
|
{
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
offs_t gigatron_disassembler::disassemble(std::ostream &stream, offs_t pc, const data_buffer &opcodes, const data_buffer ¶ms)
|
||||||
|
{
|
||||||
|
return 0;
|
||||||
|
}
|
24
src/devices/cpu/gigatron/gigatrondasm.h
Normal file
24
src/devices/cpu/gigatron/gigatrondasm.h
Normal file
@ -0,0 +1,24 @@
|
|||||||
|
// license:BSD-3-Clause
|
||||||
|
// copyright-holders:Sterophonick
|
||||||
|
|
||||||
|
// Gigatron disassembler
|
||||||
|
|
||||||
|
#ifndef MAME_CPU_GIGATRON_GIGATRONDASM_H
|
||||||
|
#define MAME_CPU_GIGATRON_GIGATRONDASM_H
|
||||||
|
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
class gigatron_disassembler : public util::disasm_interface
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
gigatron_disassembler() = default;
|
||||||
|
virtual ~gigatron_disassembler() = default;
|
||||||
|
|
||||||
|
virtual u32 opcode_alignment() const override;
|
||||||
|
virtual offs_t disassemble(std::ostream &stream, offs_t pc, const data_buffer &opcodes, const data_buffer ¶ms) override;
|
||||||
|
|
||||||
|
private:
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
50
src/mame/drivers/gigatron.cpp
Normal file
50
src/mame/drivers/gigatron.cpp
Normal file
@ -0,0 +1,50 @@
|
|||||||
|
// license:BSD-3-Clause
|
||||||
|
// copyright-holders:Sterophonick
|
||||||
|
/***************************************************************************
|
||||||
|
|
||||||
|
Skeleton driver for Gigatron TTL Microcomputer
|
||||||
|
Driver by Sterophonick
|
||||||
|
|
||||||
|
***************************************************************************/
|
||||||
|
|
||||||
|
#include "emu.h"
|
||||||
|
#include "cpu/m6502/m6502.h"
|
||||||
|
//#include "cpu/gigatron/gigatron.h"
|
||||||
|
#include "machine/nvram.h"
|
||||||
|
#include "speaker.h"
|
||||||
|
|
||||||
|
#define MAIN_CLOCK 6250000
|
||||||
|
|
||||||
|
class gigatron_state : public driver_device
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
gigatron_state(const machine_config &mconfig, device_type type, const char *tag)
|
||||||
|
: driver_device(mconfig, type, tag)
|
||||||
|
, m_maincpu(*this, "maincpu")
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
void gigatron(machine_config &config);
|
||||||
|
|
||||||
|
private:
|
||||||
|
|
||||||
|
required_device<cpu_device> m_maincpu;
|
||||||
|
};
|
||||||
|
|
||||||
|
static INPUT_PORTS_START(gigatron)
|
||||||
|
INPUT_PORTS_END
|
||||||
|
|
||||||
|
void gigatron_state::gigatron(machine_config &config)
|
||||||
|
{
|
||||||
|
M6502(config, m_maincpu, MAIN_CLOCK); // actually its own custom cpu but i cant get it to work
|
||||||
|
//GTRON(config, m_maincpu, MAIN_CLOCK);
|
||||||
|
SPEAKER(config, "mono").front_center();
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
ROM_START( gigatron )
|
||||||
|
ROM_REGION( 0x00000, "maincpu", 0 )
|
||||||
|
ROM_LOAD( "gigatron.rom", 0x0000, 0x20000, CRC(78995109) SHA1(2395fc48e64099836111f5aeca39ddbf4650ea4e) )
|
||||||
|
ROM_END
|
||||||
|
|
||||||
|
GAME(199?, gigatron, 0, gigatron, gigatron, gigatron_state, empty_init, ROT0, "Marcel van Kervinck", "Gigatron TTL Microcomputer", MACHINE_IS_SKELETON_MECHANICAL)
|
@ -14620,6 +14620,9 @@ touryuu // (c) 200? Yuki Enterprise
|
|||||||
giclasex
|
giclasex
|
||||||
giclassvr
|
giclassvr
|
||||||
|
|
||||||
|
@source:gigatron.cpp
|
||||||
|
gigatron // (c) 2018 Marcel van Kervinck
|
||||||
|
|
||||||
@source:gijoe.cpp
|
@source:gijoe.cpp
|
||||||
gijoe // GX069 (c) 1991 (World)
|
gijoe // GX069 (c) 1991 (World)
|
||||||
gijoea // GX069 (c) 1991 (Asia)
|
gijoea // GX069 (c) 1991 (Asia)
|
||||||
|
@ -315,6 +315,7 @@ geneve.cpp
|
|||||||
geniusiq.cpp
|
geniusiq.cpp
|
||||||
geniusjr.cpp
|
geniusjr.cpp
|
||||||
genpc.cpp
|
genpc.cpp
|
||||||
|
gigatron.cpp
|
||||||
gimix.cpp
|
gimix.cpp
|
||||||
gkidabc.cpp
|
gkidabc.cpp
|
||||||
gizmondo.cpp
|
gizmondo.cpp
|
||||||
|
Loading…
Reference in New Issue
Block a user