Previous 199869 Revisions Next

r33882 Monday 15th December, 2014 at 00:01:42 UTC by Ramiro Polla
Fix crash on fatalerror from winwindow_video_window_create()
[src/emu/cpu/tms0980]tms0980.c tms0980.h
[src/mess/drivers]ampro.c mathmagi.c pc9801.c tandy12.c
[src/mess/layout]tandy12.lay
[src/osd/windows]drawd3d.c input.c

trunk/src/emu/cpu/tms0980/tms0980.c
r242393r242394
9292#define M_SSE               0x00080000 /* Special Status Enable */
9393#define M_SSS               0x00100000 /* Special Status Sample */
9494
95#define M_RSTR              0x00200000 /* -> line #36, F_RSTR (TMS02x0 custom) */
96#define M_UNK1              0x00400000 /* -> line #37, F_???? (TMS0270 custom) */
95#define M_RSTR              0x00200000 /* -> line #36, F_RSTR (TMC02x0 custom) */
96#define M_UNK1              0x00400000 /* -> line #37, F_???? (TMC0270 custom) */
9797
9898/* Standard/fixed instructions - these are documented more in their specific handlers below */
9999#define F_BR                0x00000001
r242393r242394
154154// - 32-term microinstructions PLA between the RAM and ROM, supporting 15 microinstructions
155155// - 16-term output PLA and segment PLA above the RAM (rotate opla 90 degrees)
156156const device_type TMS0970 = &device_creator<tms0970_cpu_device>; // 28-pin DIP, 11 R pins
157// TMS0950 is same?
158157
159// TMS0270 on the other hand, is a TMS0980 with earrings and a new hat. The new changes look like a quick afterthought, almost hacky
158// TMC0270 on the other hand, is a TMS0980 with earrings and a new hat. The new changes look like a quick afterthought, almost hacky
160159// - RAM, ROM, and main instructions PLA is exactly the same as TMS0980
161160// - 64-term microinstructions PLA between the RAM and ROM, supporting 20 microinstructions plus optional separate lines for custom opcode handling
162161// - 48-term output PLA above the RAM (rotate opla 90 degrees)
163const device_type TMS0270 = &device_creator<tms0270_cpu_device>; // 40-pin DIP, 16 O pins, 8+ R pins (some R pins are internally hooked up to support more I/O)
164// TMS0260 is same? except opla is 32 instead of 48 terms
162const device_type TMC0270 = &device_creator<tmc0270_cpu_device>; // 40-pin DIP, 16 O pins, 8+ R pins (some R pins are internally hooked up to support more I/O)
163// TMC0260 is same? except opla is 32 instead of 48 terms
165164
166165
167166static ADDRESS_MAP_START(program_11bit_9, AS_PROGRAM, 16, tms1xxx_cpu_device)
r242393r242394
250249}
251250
252251
253tms0270_cpu_device::tms0270_cpu_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
254   : tms0980_cpu_device(mconfig, TMS0270, "TMS0270", tag, owner, clock, 16, 16, 4, 7, 9, 4, 12, ADDRESS_MAP_NAME(program_11bit_9), 8, ADDRESS_MAP_NAME(data_64x9_as4), "tms0270", __FILE__)
252tmc0270_cpu_device::tmc0270_cpu_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
253   : tms0980_cpu_device(mconfig, TMC0270, "TMC0270", tag, owner, clock, 16, 16, 4, 7, 9, 4, 12, ADDRESS_MAP_NAME(program_11bit_9), 8, ADDRESS_MAP_NAME(data_64x9_as4), "tmc0270", __FILE__)
255254{
256255}
257256
r242393r242394
310309}
311310
312311
313static MACHINE_CONFIG_FRAGMENT(tms0270)
312static MACHINE_CONFIG_FRAGMENT(tmc0270)
314313
315314   // main opcodes PLA, microinstructions PLA, output PLA
316315   MCFG_PLA_ADD("ipla", 9, 22, 24)
r242393r242394
321320   MCFG_PLA_FILEFORMAT(PLA_FMT_BERKELEY)
322321MACHINE_CONFIG_END
323322
324machine_config_constructor tms0270_cpu_device::device_mconfig_additions() const
323machine_config_constructor tmc0270_cpu_device::device_mconfig_additions() const
325324{
326   return MACHINE_CONFIG_NAME(tms0270);
325   return MACHINE_CONFIG_NAME(tmc0270);
327326}
328327
329328
r242393r242394
397396   m_cs = 0;
398397   m_r = 0;
399398   m_o = 0;
399   m_o_index = 0;
400400   m_cki_bus = 0;
401401   m_c4 = 0;
402402   m_p = 0;
r242393r242394
434434   save_item(NAME(m_cs));
435435   save_item(NAME(m_r));
436436   save_item(NAME(m_o));
437   save_item(NAME(m_o_index));
437438   save_item(NAME(m_cki_bus));
438439   save_item(NAME(m_c4));
439440   save_item(NAME(m_p));
r242393r242394
474475   m_icountptr = &m_icount;
475476}
476477
477void tms0270_cpu_device::device_start()
478void tmc0270_cpu_device::device_start()
478479{
479480   // common init
480481   tms1xxx_cpu_device::device_start();
r242393r242394
634635   UINT32 mask = m_mpla->read(sel);
635636   mask ^= 0x43fc3; // invert active-negative
636637   
637   // M_RSTR is specific to TMS02x0, it redirects to F_RSTR
638   // M_UNK1 is specific to TMS0270, unknown yet
638   // M_RSTR is specific to TMC02x0, it redirects to F_RSTR
639   // M_UNK1 is specific to TMC0270, unknown yet
639640   //                      _______  ______                                _____  _____  _____  _____  ______  _____  ______  _____                            _____
640641   const UINT32 md[22] = { M_NDMTP, M_DMTP, M_AUTY, M_AUTA, M_CKM, M_SSE, M_CKP, M_YTP, M_MTP, M_ATN, M_NATN, M_MTN, M_15TN, M_CKN, M_NE, M_C8, M_SSS, M_CME, M_CIN, M_STO, M_RSTR, M_UNK1 };
641642   
r242393r242394
682683      m_micro_direct[op] = decode_micro(op);
683684}
684685
685void tms0270_cpu_device::device_reset()
686void tmc0270_cpu_device::device_reset()
686687{
687688   // common reset
688689   tms0980_cpu_device::device_reset();
r242393r242394
746747   next_pc();
747748}
748749
749void tms0270_cpu_device::read_opcode()
750void tmc0270_cpu_device::read_opcode()
750751{
751752   tms0980_cpu_device::read_opcode();
752753   
r242393r242394
763764
764765void tms1xxx_cpu_device::write_o_output(UINT8 index)
765766{
767   m_o_index = index;
768   
766769   // a hardcoded table is supported if the output pla is unknown
767770   m_o = (c_output_pla == NULL) ? m_opla->read(index) : c_output_pla[index];
768771   m_write_o(0, m_o & m_o_mask, 0xffff);
r242393r242394
770773
771774void tms0970_cpu_device::write_o_output(UINT8 index)
772775{
776   m_o_index = index;
777
773778   m_o = m_spla->read(index);
774779   m_write_o(0, m_o & m_o_mask, 0xffff);
775780}
776781
777782
778void tms0270_cpu_device::dynamic_output()
783void tmc0270_cpu_device::dynamic_output()
779784{
780785   // TODO..
781786   
r242393r242394
793798   return (k & 0xf) | k3;
794799}
795800
796UINT8 tms0270_cpu_device::read_k_input()
801UINT8 tmc0270_cpu_device::read_k_input()
797802{
798803   // TODO..
799804   
r242393r242394
10141019}
10151020
10161021
1017// TMS0270-specific
1018void tms0270_cpu_device::op_tdo()
1022// TMC0270-specific
1023void tmc0270_cpu_device::op_tdo()
10191024{
10201025   // TDO: transfer data out
10211026   if (m_status)
r242393r242394
10261031   // write to output is done in dynamic_output
10271032}
10281033
1029void tms0270_cpu_device::op_setr()
1034void tmc0270_cpu_device::op_setr()
10301035{
10311036   // same as default, but handle write to output in dynamic_output
10321037   m_r = m_r | (1 << m_y);
10331038}
10341039
1035void tms0270_cpu_device::op_rstr()
1040void tmc0270_cpu_device::op_rstr()
10361041{
10371042   // same as default, but handle write to output in dynamic_output
10381043   m_r = m_r & ~(1 << m_y);
trunk/src/emu/cpu/tms0980/tms0980.h
r242393r242394
55  TMS0980/TMS1000-family MCU cores
66
77*/
8
98#ifndef _TMS0980_H_
109#define _TMS0980_H_
1110
r242393r242394
1312#include "machine/pla.h"
1413
1514
16// K input pins
15#define MCFG_TMS1XXX_OUTPUT_PLA(_pla) \
16   tms1xxx_cpu_device::set_output_pla(*device, _pla);
17
1718#define MCFG_TMS1XXX_READ_K_CB(_devcb) \
1819   tms1xxx_cpu_device::set_read_k_callback(*device, DEVCB_##_devcb);
1920
20// O/Segment output pins
2121#define MCFG_TMS1XXX_WRITE_O_CB(_devcb) \
2222   tms1xxx_cpu_device::set_write_o_callback(*device, DEVCB_##_devcb);
2323
24// R output pins (also called D on some chips)
2524#define MCFG_TMS1XXX_WRITE_R_CB(_devcb) \
2625   tms1xxx_cpu_device::set_write_r_callback(*device, DEVCB_##_devcb);
2726
28// OFF opcode on TMS0980 and up
2927#define MCFG_TMS1XXX_POWER_OFF_CB(_devcb) \
3028   tms1xxx_cpu_device::set_power_off_callback(*device, DEVCB_##_devcb);
3129
32// Use this if the output PLA is unknown:
33// If the microinstructions (or other) PLA is unknown, try using one from another romset.
34#define MCFG_TMS1XXX_OUTPUT_PLA(_pla) \
35   tms1xxx_cpu_device::set_output_pla(*device, _pla);
3630
37
38
3931class tms1xxx_cpu_device : public cpu_device
4032{
4133public:
r242393r242394
7062   template<class _Object> static devcb_base &set_power_off_callback(device_t &device, _Object object) { return downcast<tms1xxx_cpu_device &>(device).m_power_off.set_callback(object); }
7163   static void set_output_pla(device_t &device, const UINT16 *output_pla) { downcast<tms1xxx_cpu_device &>(device).c_output_pla = output_pla; }
7264   
65   // driver debugging
66   UINT8 debug_peek_o_index() { return m_o_index; }
67
7368protected:
7469   // device-level overrides
7570   virtual void device_start();
r242393r242394
137132   UINT8   m_cs;        // chapter subroutine bit
138133   UINT16  m_r;
139134   UINT16  m_o;
135   UINT8   m_o_index;
140136   UINT8   m_cki_bus;
141137   UINT8   m_c4;
142138   UINT8   m_p;         // 4-bit adder p(lus)-input
r242393r242394
287283};
288284
289285
290class tms0270_cpu_device : public tms0980_cpu_device
286class tmc0270_cpu_device : public tms0980_cpu_device
291287{
292288public:
293   tms0270_cpu_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
289   tmc0270_cpu_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
294290
295291protected:
296292   // overrides
r242393r242394
326322extern const device_type TMS1300;
327323extern const device_type TMS0970;
328324extern const device_type TMS0980;
329extern const device_type TMS0270;
325extern const device_type TMC0270;
330326
331327
332328#endif /* _TMS0980_H_ */
trunk/src/mess/drivers/ampro.c
r242393r242394
181181   MCFG_TIMER_DRIVER_ADD_PERIODIC("ctc_tick", ampro_state, ctc_tick, attotime::from_hz(XTAL_16MHz / 8))
182182   MCFG_WD1772x_ADD("fdc", XTAL_16MHz / 2)
183183   MCFG_FLOPPY_DRIVE_ADD("fdc:0", ampro_floppies, "525dd", floppy_image_device::default_floppy_formats)
184   MCFG_SOFTWARE_LIST_ADD("flop_list", "ampro")
185184MACHINE_CONFIG_END
186185
187186/* ROM definition */
trunk/src/mess/drivers/mathmagi.c
r242393r242394
2222
2323
2424  TODO:
25  - some of the led symbols are probably wrong, output PLA is unknown
26  - microinstructions PLA is not verified
25  - some of the led symbols are probably wrong, output pla is unknown
2726 
2827***************************************************************************/
2928
r242393r242394
8483WRITE16_MEMBER(mathmagi_state::write_o)
8584{
8685   // O1-O7: led segments A-G
87   // O0: N/C
8886   m_o = data;
8987}
9088
r242393r242394
164162   PORT_CONFNAME( 0x01, 0x00, "Players")
165163   PORT_CONFSETTING(    0x00, "1" )
166164   PORT_CONFSETTING(    0x01, "2" )
167   PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_UNUSED )
168   PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_UNUSED )
169   PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_UNUSED )
165   PORT_BIT( 0x0e, IP_ACTIVE_HIGH, IPT_UNUSED )
170166INPUT_PORTS_END
171167
172168
r242393r242394
200196
201197static const UINT16 mathmagi_output_pla[0x20] =
202198{
199   /* O output PLA configuration currently unknown */
203200   lA+lB+lC+lD+lE+lF,      // 0
204201   lB+lC,                  // 1
205202   lA+lB+lG+lE+lD,         // 2
trunk/src/mess/drivers/pc9801.c
r242393r242394
13511351   {
13521352      src = src_tmp << (dst_off - src_off);
13531353      src |= m_egc.leftover[plane];
1354      m_egc.leftover[plane] = src_tmp >> (16 - (dst_off - src_off));
1354      m_egc.leftover[plane] = src_tmp >> (15 - (dst_off - src_off));
13551355   }
13561356   else
13571357   {
13581358      src = src_tmp >> (src_off - dst_off);
13591359      src |= m_egc.leftover[plane];
1360      m_egc.leftover[plane] = src_tmp << (16 - (src_off - dst_off));
1360      m_egc.leftover[plane] = src_tmp << (15 - (src_off - dst_off));
13611361   }
13621362
13631363   for(int i = 7; i >= 0; i--)
r242393r242394
13801380
13811381   if((((m_egc.regs[2] >> 11) & 3) == 1) || ((((m_egc.regs[2] >> 11) & 3) == 2) && !BIT(m_egc.regs[2], 10)))
13821382   {
1383      UINT16 end_mask = 0xffff, start_mask = 0xffff;
1383      // mask off the bits past the end of the blit
1384      if(m_egc.count < 16)
1385         mask &= dir ? ((1 << m_egc.count) - 1) : ~((1 << (16 - m_egc.count)) - 1);
1386
13841387      // mask off the bits before the start
13851388      if(m_egc.first)
13861389      {
13871390         m_egc.leftover[0] = m_egc.leftover[1] = m_egc.leftover[2] = m_egc.leftover[3] = 0;
1388         start_mask = dir ? ~((1 << dst_off) - 1) : ((1 << (15 - dst_off)) - 1);
1391         mask &= dir ? ~((1 << dst_off) - 1) : ((1 << (16 - dst_off)) - 1);
13891392      }
1390
1391      // mask off the bits past the end of the blit
1392      if(m_egc.count < 16)
1393      {
1394         end_mask = dir ? ((1 << m_egc.count) - 1) : ~((1 << (16 - m_egc.count)) - 1);
1395         // if the blit is less than 16 bits, adjust the masks
1396         if(start_mask != 0xffff)
1397         {
1398            if(dir)
1399               end_mask <<= dst_off;
1400            else
1401               end_mask >>= (15 - dst_off);
1402         }
1403      }
1404      mask &= end_mask & start_mask;
14051393   }
14061394
14071395   for(int i = 0; i < 4; i++)
trunk/src/mess/drivers/tandy12.c
r242393r242394
22// copyright-holders:hap
33/***************************************************************************
44
5  Tandy Radio Shack Computerized Arcade (1981, 1982, 1995)
5  Tandy Radio Shack Tandy-12 - Computerized Arcade
66  * TMS1100 CD7282SL
77 
8  This handheld contains 12 minigames. It looks and plays like "Fabulous Fred"
9  by the Japanese company Mego Corp. in 1980, which in turn is a mix of Merlin
10  and Simon. Unlike Merlin and Simon, spin-offs like these were not successful.
11  There were releases with and without the prefix "Tandy-12", I don't know
12  which name was more common. Also not worth noting is that it needed five
13  batteries; 4 C-cells and a 9-volt.
8  This tabletop game looks and plays like "Fabulous Fred" by the Japanese
9  company Mego Corp. in 1980, which in turn is a mix of Merlin and Simon.
10  Unlike Merlin and Simon, these spin-offs were not successful.
1411 
15  Some of the games require accessories included with the toy (eg. the Baseball
16  game is played with a board representing the playing field). To start a game,
17  hold the [SELECT] button, then press [START] when the game button lights up.
18  As always, refer to the official manual for more information.
19 
20  See below at the input defs for a list of the games.
21
22 
23  TODO:
24  - output PLA is not verified
25  - microinstructions PLA is not verified
26
2712***************************************************************************/
2813
2914#include "emu.h"
r242393r242394
4328   tandy12_state(const machine_config &mconfig, device_type type, const char *tag)
4429      : driver_device(mconfig, type, tag),
4530      m_maincpu(*this, "maincpu"),
46      m_button_matrix(*this, "IN"),
4731      m_speaker(*this, "speaker")
4832   { }
4933
5034   required_device<tms1xxx_cpu_device> m_maincpu;
51   required_ioport_array<5> m_button_matrix;
5235   required_device<speaker_sound_device> m_speaker;
5336
37   UINT16 m_o;
5438   UINT16 m_r;
5539
5640   DECLARE_READ8_MEMBER(read_k);
r242393r242394
6953
7054READ8_MEMBER(tandy12_state::read_k)
7155{
72   UINT8 k = 0;
73   
74   // read selected button rows
75   for (int i = 0; i < 5; i++)
76      if (m_r >> (i+5) & 1)
77         k |= m_button_matrix[i]->read();
78
79   return k;
56   return 0;
8057}
8158
8259WRITE16_MEMBER(tandy12_state::write_o)
8360{
84   // O0-O7: button lamps 1-8
85   for (int i = 0; i < 8; i++)
86      output_set_lamp_value(i, data >> i & 1);
61   m_o = data;
8762}
8863
8964WRITE16_MEMBER(tandy12_state::write_r)
9065{
91   // R0-R3: button lamps 9-12
92   for (int i = 0; i < 4; i++)
93      output_set_lamp_value(i + 8, data >> i & 1);
94
9566   // R10: speaker out
9667   m_speaker->level_w(data >> 10 & 1);
97
98   // R5-R9: input mux
68   
9969   m_r = data;
10070}
10171
r242393r242394
10777
10878***************************************************************************/
10979
110/* physical button layout and labels is like this:
111
112        REPEAT-2              SPACE-2
113          [O]     OFF--ON       [O]
114
115    [purple]1     [blue]5       [l-green]9
116    ORGAN         TAG-IT        TREASURE HUNT
117   
118    [l-orange]2   [turquoise]6  [red]10
119    SONG WRITER   ROULETTE      COMPETE
120   
121    [pink]3       [yellow]7     [violet]11
122    REPEAT        BASEBALL      FIRE AWAY
123
124    [green]4      [orange]8     [brown]12
125    TORPEDO       REPEAT PLUS   HIDE 'N SEEK
126
127          [O]        [O]        [O]
128         START      SELECT    PLAY-2/HIT-7
129*/
130
13180static INPUT_PORTS_START( tandy12 )
132   PORT_START("IN.0") // R5
133   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_EQUALS) PORT_CODE(KEYCODE_PLUS_PAD) PORT_NAME("12")
134   PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_MINUS) PORT_CODE(KEYCODE_MINUS_PAD) PORT_NAME("11")
135   PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_0) PORT_CODE(KEYCODE_0_PAD) PORT_NAME("10")
136   PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_9) PORT_CODE(KEYCODE_9_PAD) PORT_NAME("9")
137
138   PORT_START("IN.1") // R6
139   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_T) PORT_NAME("Space-2")
140   PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_E) PORT_NAME("Play-2/Hit-7")
141   PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_W) PORT_NAME("Select")
142   PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_Q) PORT_NAME("Start")
143
144   PORT_START("IN.2") // R7
145   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_R) PORT_NAME("Repeat-2")
146   PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_UNUSED )
147   PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_UNUSED )
148   PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_UNUSED )
149
150   PORT_START("IN.3") // R8
151   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_4) PORT_CODE(KEYCODE_4_PAD) PORT_NAME("4")
152   PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_3) PORT_CODE(KEYCODE_3_PAD) PORT_NAME("3")
153   PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_2) PORT_CODE(KEYCODE_2_PAD) PORT_NAME("2")
154   PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_1) PORT_CODE(KEYCODE_1_PAD) PORT_NAME("1")
155
156   PORT_START("IN.4") // R9
157   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_8) PORT_CODE(KEYCODE_8_PAD) PORT_NAME("8")
158   PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_7) PORT_CODE(KEYCODE_7_PAD) PORT_NAME("7")
159   PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_6) PORT_CODE(KEYCODE_6_PAD) PORT_NAME("6")
160   PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_5) PORT_CODE(KEYCODE_5_PAD) PORT_NAME("5")
16181INPUT_PORTS_END
16282
16383
r242393r242394
17090
17191void tandy12_state::machine_start()
17292{
93   m_o = 0;
17394   m_r = 0;
95
96   save_item(NAME(m_o));
17497   save_item(NAME(m_r));
17598}
17699
177100
178101static const UINT16 tandy12_output_pla[0x20] =
179102{
180   // these are certain
181   0x00, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40,
182   0x80, 0x00, 0x00, 0x00, 0x00,
183   
184   // rest is unused?
185   0x00, 0x00, 0x00,
186   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
187   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
103   /* O output PLA configuration currently unknown */
104   0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
105   0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f,
106   0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17,
107   0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f
188108};
189109
190110
r242393r242394
226146ROM_END
227147
228148
229CONS( 1981, tandy12, 0, 0, tandy12, tandy12, driver_device, 0, "Tandy Radio Shack", "Tandy-12 - Computerized Arcade", GAME_SUPPORTS_SAVE )
149CONS( 1981, tandy12, 0, 0, tandy12, tandy12, driver_device, 0, "Tandy Radio Shack", "Tandy-12 - Computerized Arcade", GAME_SUPPORTS_SAVE | GAME_NOT_WORKING )
trunk/src/mess/layout/tandy12.lay
r242393r242394
22<mamelayout version="2">
33
44
5<!-- ugly layout is temp, will be improved soon -->
6
7
8
9
105<!-- define elements -->
116
12   <element name="lamp_dot" defstate="0">
13      <disk state="1"><color red="1.0" green="0.3" blue="0.2" /></disk>
14      <disk state="0"><color red="0.125490" green="0.035294" blue="0.0235294" /></disk>
15   </element>
167
178
18
199<!-- build screen -->
2010
2111   <view name="Internal Layout">
2212      <bounds left="0" right="100" top="0" bottom="100" />
2313
24      <bezel name="lamp0" element="lamp_dot"><bounds x="10" y="10" width="5" height="5" /></bezel>
25      <bezel name="lamp4" element="lamp_dot"><bounds x="20" y="10" width="5" height="5" /></bezel>
26      <bezel name="lamp8" element="lamp_dot"><bounds x="30" y="10" width="5" height="5" /></bezel>
2714
28      <bezel name="lamp1" element="lamp_dot"><bounds x="10" y="20" width="5" height="5" /></bezel>
29      <bezel name="lamp5" element="lamp_dot"><bounds x="20" y="20" width="5" height="5" /></bezel>
30      <bezel name="lamp9" element="lamp_dot"><bounds x="30" y="20" width="5" height="5" /></bezel>
31
32      <bezel name="lamp2" element="lamp_dot"><bounds x="10" y="30" width="5" height="5" /></bezel>
33      <bezel name="lamp6" element="lamp_dot"><bounds x="20" y="30" width="5" height="5" /></bezel>
34      <bezel name="lamp10" element="lamp_dot"><bounds x="30" y="30" width="5" height="5" /></bezel>
35
36      <bezel name="lamp3" element="lamp_dot"><bounds x="10" y="40" width="5" height="5" /></bezel>
37      <bezel name="lamp7" element="lamp_dot"><bounds x="20" y="40" width="5" height="5" /></bezel>
38      <bezel name="lamp11" element="lamp_dot"><bounds x="30" y="40" width="5" height="5" /></bezel>
39
40
4115   </view>
4216</mamelayout>
trunk/src/osd/windows/drawd3d.c
r242393r242394
250250   if (d3d == NULL)
251251      return;
252252
253   if (d3d->get_shaders()->recording())
253   if (d3d->get_shaders() != NULL && d3d->get_shaders()->recording())
254254      d3d->get_shaders()->window_record();
255255
256256   // free the memory in the window
r242393r242394
10401040
10411041void renderer::device_delete()
10421042{
1043   // free our effects
1044   m_shaders->delete_resources(false);
1043   if (m_shaders != NULL)
1044   {
1045      // free our effects
1046      m_shaders->delete_resources(false);
10451047
1046   // delete the HLSL interface
1047   global_free(m_shaders);
1048      // delete the HLSL interface
1049      global_free(m_shaders);
1050   }
10481051
10491052   // free our base resources
10501053   device_delete_resources();
r242393r242394
10701073
10711074void renderer::device_delete_resources()
10721075{
1073   m_texture_manager->delete_resources();
1076   if (m_texture_manager != NULL)
1077      m_texture_manager->delete_resources();
10741078   // free the vertex buffer
10751079   if (m_vertexbuf != NULL)
10761080      (*d3dintf->vertexbuf.release)(m_vertexbuf);
trunk/src/osd/windows/input.c
r242393r242394
506506void windows_osd_interface::input_exit()
507507{
508508   // acquire the lock and turn off input (this ensures everyone is done)
509   osd_lock_acquire(input_lock);
510   input_enabled = false;
511   osd_lock_release(input_lock);
509   if (input_lock != NULL)
510   {
511      osd_lock_acquire(input_lock);
512      input_enabled = false;
513      osd_lock_release(input_lock);
512514
513   // free the lock
514   osd_lock_free(input_lock);
515      // free the lock
516      osd_lock_free(input_lock);
517   }
515518}
516519
517520


Previous 199869 Revisions Next


© 1997-2024 The MAME Team