mirror of
https://github.com/mamedev/mame.git
synced 2024-11-16 07:48:32 +01:00
telercas/tmc600: Implement quickload for SBASIC programs. [Curt Coder]
New working software list items ------------------------------- tmc600_quik: Esittelyohjelma, Telmac SBASIC Menu, Väriesittelyohjelma [Marcel van Tongeren]
This commit is contained in:
parent
6fe16f6a60
commit
cf0f8bc748
3 changed files with 93 additions and 2 deletions
47
hash/tmc600_quik.xml
Normal file
47
hash/tmc600_quik.xml
Normal file
|
@ -0,0 +1,47 @@
|
|||
<?xml version="1.0"?>
|
||||
<!DOCTYPE softwarelist SYSTEM "softwarelist.dtd">
|
||||
<!--
|
||||
license:CC0-1.0
|
||||
-->
|
||||
<softwarelist name="tmc600_quik" description="Telmac TMC-600 quickload">
|
||||
|
||||
<software name="demo">
|
||||
<description>Esittelyohjelma</description>
|
||||
<year>1982</year>
|
||||
<publisher>Telercas</publisher>
|
||||
<info name="usage" value="W, RUN" />
|
||||
|
||||
<part name="quik" interface="tmc600_quik">
|
||||
<dataarea name="quik" size="4672">
|
||||
<rom name="demo.tmc600" size="4672" crc="fce7ad03" sha1="fada958bb9648619eb5ce04dc4c829091e34b665"/>
|
||||
</dataarea>
|
||||
</part>
|
||||
</software>
|
||||
|
||||
<software name="demo2">
|
||||
<description>Telmac SBASIC Menu</description>
|
||||
<year>1982</year>
|
||||
<publisher>Telercas</publisher>
|
||||
<info name="usage" value="W, RUN" />
|
||||
|
||||
<part name="quik" interface="tmc600_quik">
|
||||
<dataarea name="quik" size="2025">
|
||||
<rom name="demo2.tmc600" size="2025" crc="592e97c7" sha1="8f92f0dd7aee3b3aae56a06a4117796ff4643811"/>
|
||||
</dataarea>
|
||||
</part>
|
||||
</software>
|
||||
|
||||
<software name="snoopy">
|
||||
<description>Väriesittelyohjelma</description>
|
||||
<year>1982</year>
|
||||
<publisher>Telercas</publisher>
|
||||
<info name="usage" value="W, RUN" />
|
||||
|
||||
<part name="quik" interface="tmc600_quik">
|
||||
<dataarea name="quik" size="817">
|
||||
<rom name="snoopy.tmc600" size="817" crc="884976b0" sha1="0c2dc1a0fef94ac359313414b43a281b909bc7f2"/>
|
||||
</dataarea>
|
||||
</part>
|
||||
</software>
|
||||
|
||||
</softwarelist>
|
|
@ -48,6 +48,16 @@ Notes:
|
|||
CDP1870 - RCA CDP1870CE Video Interface System (VIS) Color Video (DOT XTAL at 5.6260MHz, CHROM XTAL at 8.867238MHz)
|
||||
CN1 - RF connector [TMC-700]
|
||||
CN2 - 10x2 pin printer connector [TMC-700]
|
||||
GND 1 2 D0
|
||||
GND 3 4 D1
|
||||
GND 5 6 D2
|
||||
GND 7 8 D3
|
||||
GND 9 10 D4
|
||||
GND 11 12 D5
|
||||
GND 13 14 D6
|
||||
GND 15 16 D7
|
||||
GND 17 18 BUSY
|
||||
GND 19 20 _STROBE
|
||||
CN3 - 32x3 pin EURO connector
|
||||
CN4 - DIN5D tape connector
|
||||
1 input (500 mV / 47 Kohm)
|
||||
|
@ -256,6 +266,31 @@ void tmc600_state::out3_w(uint8_t data)
|
|||
m_out3 = data;
|
||||
}
|
||||
|
||||
QUICKLOAD_LOAD_MEMBER(tmc600_state::quickload_cb)
|
||||
{
|
||||
int size = image.length();
|
||||
|
||||
if (size < 16)
|
||||
return std::make_pair(image_error::INVALIDLENGTH, "Image is too short");
|
||||
|
||||
if ((size - 16) > (m_ram->size() - 0x300))
|
||||
return std::make_pair(image_error::INVALIDLENGTH, "Image is larger than RAM");
|
||||
|
||||
address_space &program = m_maincpu->space(AS_PROGRAM);
|
||||
|
||||
image.fseek(0x5, SEEK_SET);
|
||||
image.fread(program.get_write_ptr(0x6181), 4); // DEFUS and EOP
|
||||
image.fread(program.get_write_ptr(0x6192), 4); // STRING and ARRAY
|
||||
|
||||
image.fseek(0x9, SEEK_SET);
|
||||
image.fread(program.get_write_ptr(0x6199), 2); // EOD
|
||||
|
||||
image.fseek(0xf, SEEK_SET);
|
||||
image.fread(program.get_write_ptr(0x6300), size); // program
|
||||
|
||||
return std::make_pair(std::error_condition(), std::string());
|
||||
}
|
||||
|
||||
/* Machine Drivers */
|
||||
|
||||
void tmc600_state::tmc600(machine_config &config)
|
||||
|
@ -280,11 +315,9 @@ void tmc600_state::tmc600(machine_config &config)
|
|||
m_bwio->mode_cb().set_constant(1);
|
||||
m_bwio->do_cb().set(FUNC(tmc600_state::out3_w));
|
||||
|
||||
#if 0
|
||||
// address bus demux for expansion bus
|
||||
cdp1852_device &demux(CDP1852(config, CDP1852_BUS_TAG)); // clock is expansion bus TPA
|
||||
demux.mode_cb().set_constant(0);
|
||||
#endif
|
||||
|
||||
// printer output latch
|
||||
cdp1852_device &prtout(CDP1852(config, CDP1852_TMC700_TAG)); // clock is CDP1802 TPB
|
||||
|
@ -299,11 +332,19 @@ void tmc600_state::tmc600(machine_config &config)
|
|||
CASSETTE(config, m_cassette);
|
||||
m_cassette->set_default_state(CASSETTE_STOPPED | CASSETTE_MOTOR_ENABLED | CASSETTE_SPEAKER_ENABLED);
|
||||
|
||||
// quickload
|
||||
quickload_image_device &quickload(QUICKLOAD(config, "quickload", "tmc600"));
|
||||
quickload.set_load_callback(FUNC(tmc600_state::quickload_cb));
|
||||
quickload.set_interface("tmc600_quik");
|
||||
|
||||
// expansion bus connector
|
||||
TMC600_EUROBUS_SLOT(config, m_bus, tmc600_eurobus_cards, nullptr);
|
||||
|
||||
// internal RAM
|
||||
RAM(config, RAM_TAG).set_default_size("8K");
|
||||
|
||||
// software lists
|
||||
SOFTWARE_LIST(config, "quik_list").set_original("tmc600_quik");
|
||||
}
|
||||
|
||||
/* ROMs */
|
||||
|
|
|
@ -14,6 +14,7 @@
|
|||
#include "machine/ram.h"
|
||||
#include "machine/timer.h"
|
||||
#include "sound/cdp1869.h"
|
||||
#include "softlist_dev.h"
|
||||
#include "speaker.h"
|
||||
|
||||
#define SCREEN_TAG "screen"
|
||||
|
@ -95,6 +96,8 @@ private:
|
|||
void cdp1869_page_ram(address_map &map);
|
||||
void tmc600_io_map(address_map &map);
|
||||
void tmc600_map(address_map &map);
|
||||
|
||||
DECLARE_QUICKLOAD_LOAD_MEMBER(quickload_cb);
|
||||
};
|
||||
|
||||
#endif // MAME_TELERCAS_TMC600_H
|
||||
|
|
Loading…
Reference in a new issue