Previous 199869 Revisions Next

r33795 Wednesday 10th December, 2014 at 09:52:02 UTC by Curt Coder
(MESS) victor9k: Centronics, keyboard, mirroring WIP. (nw)
[src/mess/drivers]victor9k.c
[src/mess/includes]victor9k.h
[src/mess/machine]victor9kb.c

trunk/src/mess/drivers/victor9k.c
r242306r242307
1313
1414    TODO:
1515
16   - centronics
16    - keyboard
1717   - expansion bus
1818      - Z80 card
1919      - Winchester DMA card (Xebec S1410 + Tandon TM502/TM603SE)
2020      - RAM cards
2121      - clock cards
2222    - floppy 8048
23    - keyboard
2423    - hires graphics
2524    - brightness/contrast
2625    - MC6852
r242306r242307
4140//-------------------------------------------------
4241
4342static ADDRESS_MAP_START( victor9k_mem, AS_PROGRAM, 8, victor9k_state )
44//  AM_RANGE(0x00000, 0xdffff) AM_RAM
43   AM_RANGE(0x00000, 0x1ffff) AM_RAM
4544   AM_RANGE(0x20000, 0xdffff) AM_NOP
46   AM_RANGE(0xe0000, 0xe0001) AM_DEVREADWRITE(I8259A_TAG, pic8259_device, read, write)
47   AM_RANGE(0xe0020, 0xe0023) AM_DEVREADWRITE(I8253_TAG, pit8253_device, read, write)
48   AM_RANGE(0xe0040, 0xe0043) AM_DEVREADWRITE(UPD7201_TAG, upd7201_device, cd_ba_r, cd_ba_w)
45   AM_RANGE(0xe0000, 0xe0001) AM_MIRROR(0x7f00) AM_DEVREADWRITE(I8259A_TAG, pic8259_device, read, write)
46   AM_RANGE(0xe0020, 0xe0023) AM_MIRROR(0x7f00) AM_DEVREADWRITE(I8253_TAG, pit8253_device, read, write)
47   AM_RANGE(0xe0040, 0xe0043) AM_MIRROR(0x7f00) AM_DEVREADWRITE(UPD7201_TAG, upd7201_device, cd_ba_r, cd_ba_w)
4948   AM_RANGE(0xe8000, 0xe8000) AM_MIRROR(0x7f00) AM_DEVREADWRITE(HD46505S_TAG, mc6845_device, status_r, address_w)
5049   AM_RANGE(0xe8001, 0xe8001) AM_MIRROR(0x7f00) AM_DEVREADWRITE(HD46505S_TAG, mc6845_device, register_r, register_w)
5150   AM_RANGE(0xe8020, 0xe802f) AM_MIRROR(0x7f00) AM_DEVREADWRITE(M6522_1_TAG, via6522_device, read, write)
r242306r242307
5655   AM_RANGE(0xe80c0, 0xe80cf) AM_MIRROR(0x7f00) AM_DEVREADWRITE(FDC_TAG, victor_9000_fdc_t, cs6_r, cs6_w)
5756   AM_RANGE(0xe80e0, 0xe80ef) AM_MIRROR(0x7f00) AM_DEVREADWRITE(FDC_TAG, victor_9000_fdc_t, cs7_r, cs7_w)
5857   AM_RANGE(0xf0000, 0xf0fff) AM_MIRROR(0x1000) AM_RAM AM_SHARE("video_ram")
59   AM_RANGE(0xfe000, 0xfffff) AM_ROM AM_REGION(I8088_TAG, 0)
58   AM_RANGE(0xf8000, 0xf9fff) AM_MIRROR(0x6000) AM_ROM AM_REGION(I8088_TAG, 0)
6059ADDRESS_MAP_END
6160
6261
r242306r242307
169168{
170169   m_ssda_irq = state;
171170
172   m_pic->ir3_w(m_ssda_irq || m_via1_irq || m_via2_irq || m_via3_irq || m_fdc_irq);
171   m_pic->ir3_w(m_ssda_irq || m_via1_irq || m_via3_irq || m_fdc_irq);
173172}
174173
175174
r242306r242307
190189
191190   */
192191
192   // centronics
193   m_centronics->write_data0(BIT(data, 0));
194   m_centronics->write_data1(BIT(data, 1));
195   m_centronics->write_data2(BIT(data, 2));
196   m_centronics->write_data3(BIT(data, 3));
197   m_centronics->write_data4(BIT(data, 4));
198   m_centronics->write_data5(BIT(data, 5));
199   m_centronics->write_data6(BIT(data, 6));
200   m_centronics->write_data7(BIT(data, 7));
201
202   // IEEE-488
193203   m_ieee488->dio_w(data);
194204}
195205
r242306r242307
211221
212222       bit     description
213223
214       PB0     DAV
215       PB1     EOI
224       PB0     DAV / DATA STROBE
225       PB1     EOI / VFU?
216226       PB2     REN
217227       PB3     ATN
218228       PB4     IFC
r242306r242307
222232
223233   */
224234
235   // centronics
236   m_centronics->write_strobe(BIT(data, 0));
237
225238   // IEEE-488
226239   m_ieee488->dav_w(BIT(data, 0));
227240   m_ieee488->eoi_w(BIT(data, 1));
r242306r242307
241254{
242255   m_via1_irq = state;
243256
244   m_pic->ir3_w(m_ssda_irq || m_via1_irq || m_via2_irq || m_via3_irq || m_fdc_irq);
257   m_pic->ir3_w(m_ssda_irq || m_via1_irq || m_via3_irq || m_fdc_irq);
245258}
246259
247260WRITE8_MEMBER( victor9k_state::via2_pa_w )
r242306r242307
304317}
305318
306319
307WRITE_LINE_MEMBER( victor9k_state::via2_irq_w )
308{
309   m_via2_irq = state;
310
311   m_pic->ir3_w(m_ssda_irq || m_via1_irq || m_via2_irq || m_via3_irq || m_fdc_irq);
312}
313
314
315320/*
316321    bit    description
317322
r242306r242307
348353{
349354   m_via3_irq = state;
350355
351   m_pic->ir3_w(m_ssda_irq || m_via1_irq || m_via2_irq || m_via3_irq || m_fdc_irq);
356   m_pic->ir3_w(m_ssda_irq || m_via1_irq || m_via3_irq || m_fdc_irq);
352357}
353358
354359
r242306r242307
359364WRITE_LINE_MEMBER( victor9k_state::kbrdy_w )
360365{
361366   //logerror("KBRDY %u\n", state);
367
362368   m_via2->write_cb1(state);
363
364   m_pic->ir6_w(state ? CLEAR_LINE : ASSERT_LINE);
365369}
366370
367371WRITE_LINE_MEMBER( victor9k_state::kbdata_w )
368372{
369373   //logerror("KBDATA %u\n", state);
374
370375   m_via2->write_cb2(state);
371376   m_via2->write_pa6(state);
372377}
r242306r242307
376381{
377382   m_fdc_irq = state;
378383
379   m_pic->ir3_w(m_ssda_irq || m_via1_irq || m_via2_irq || m_via3_irq || m_fdc_irq);
384   m_pic->ir3_w(m_ssda_irq || m_via1_irq || m_via3_irq || m_fdc_irq);
380385}
381386
382387
r242306r242307
390395   save_item(NAME(m_brt));
391396   save_item(NAME(m_cont));
392397   save_item(NAME(m_via1_irq));
393   save_item(NAME(m_via2_irq));
394398   save_item(NAME(m_via3_irq));
395399   save_item(NAME(m_fdc_irq));
396400   save_item(NAME(m_ssda_irq));
397401
398   // memory banking
399   address_space &program = m_maincpu->space(AS_PROGRAM);
400   program.install_ram(0x00000, m_ram->size() - 1, m_ram->pointer());
401
402402   // patch out SCP self test
403403   m_rom->base()[0x11ab] = 0xc3;
404404
r242306r242307
422422}
423423
424424
425
425426//**************************************************************************
426427//  MACHINE CONFIGURATION
427428//**************************************************************************
r242306r242307
446447
447448   MCFG_PALETTE_ADD_MONOCHROME_GREEN_HIGHLIGHT("palette")
448449
449   MCFG_MC6845_ADD(HD46505S_TAG, HD6845, SCREEN_TAG, 1000000) // HD6845 == HD46505S
450   MCFG_MC6845_ADD(HD46505S_TAG, HD6845, SCREEN_TAG, XTAL_30MHz/11) // HD6845 == HD46505S
450451   MCFG_MC6845_SHOW_BORDER_AREA(true)
451452   MCFG_MC6845_CHAR_WIDTH(10)
452453   MCFG_MC6845_UPDATE_ROW_CB(victor9k_state, crtc_update_row)
r242306r242307
501502   MCFG_DEVICE_ADD(M6522_2_TAG, VIA6522, XTAL_30MHz/30)
502503   MCFG_VIA6522_WRITEPA_HANDLER(WRITE8(victor9k_state, via2_pa_w))
503504   MCFG_VIA6522_WRITEPB_HANDLER(WRITE8(victor9k_state, via2_pb_w))
504   MCFG_VIA6522_IRQ_HANDLER(WRITELINE(victor9k_state, via2_irq_w))
505   MCFG_VIA6522_IRQ_HANDLER(DEVWRITELINE(I8259A_TAG, pic8259_device, ir6_w))
505506
506507   MCFG_DEVICE_ADD(M6522_3_TAG, VIA6522, XTAL_30MHz/30)
507508   MCFG_VIA6522_WRITEPB_HANDLER(WRITE8(victor9k_state, via3_pb_w))
508509   MCFG_VIA6522_IRQ_HANDLER(WRITELINE(victor9k_state, via3_irq_w))
509510
511   MCFG_CENTRONICS_ADD(CENTRONICS_TAG, centronics_devices, "printer")
512   MCFG_CENTRONICS_BUSY_HANDLER(DEVWRITELINE(M6522_1_TAG, via6522_device, write_pb5))
513   MCFG_CENTRONICS_ACK_HANDLER(DEVWRITELINE(M6522_1_TAG, via6522_device, write_pb6))
514   MCFG_CENTRONICS_SELECT_HANDLER(DEVWRITELINE(M6522_1_TAG, via6522_device, write_pb7))
515
510516   MCFG_RS232_PORT_ADD(RS232_A_TAG, default_rs232_devices, NULL)
511517   MCFG_RS232_RXD_HANDLER(DEVWRITELINE(UPD7201_TAG, z80dart_device, rxa_w))
512518   MCFG_RS232_DCD_HANDLER(DEVWRITELINE(UPD7201_TAG, z80dart_device, dcda_w))
r242306r242307
521527   MCFG_RS232_CTS_HANDLER(DEVWRITELINE(UPD7201_TAG, z80dart_device, ctsb_w))
522528   MCFG_RS232_DSR_HANDLER(DEVWRITELINE(M6522_2_TAG, via6522_device, write_pa5))
523529
524   MCFG_DEVICE_ADD(VICTOR9K_KEYBOARD_TAG, VICTOR9K_KEYBOARD, 0)
530   MCFG_DEVICE_ADD(KB_TAG, VICTOR9K_KEYBOARD, 0)
525531   MCFG_VICTOR9K_KBRDY_HANDLER(WRITELINE(victor9k_state, kbrdy_w))
526532   MCFG_VICTOR9K_KBDATA_HANDLER(WRITELINE(victor9k_state, kbdata_w))
527533
r242306r242307
533539   // internal ram
534540   MCFG_RAM_ADD(RAM_TAG)
535541   MCFG_RAM_DEFAULT_SIZE("128K")
536   MCFG_RAM_EXTRA_OPTIONS("256K,384K,512K,640K,768K,896K")
537542
538543   // software list
539544   MCFG_SOFTWARE_LIST_ADD("flop_list", "victor9k_flop")
trunk/src/mess/includes/victor9k.h
r242306r242307
1515#define __VICTOR9K__
1616
1717#include "bus/rs232/rs232.h"
18#include "bus/centronics/ctronics.h"
1819#include "cpu/i86/i86.h"
1920#include "formats/victor9k_dsk.h"
2021#include "imagedev/floppy.h"
r242306r242307
4748#define RS232_A_TAG     "rs232a"
4849#define RS232_B_TAG     "rs232b"
4950#define SCREEN_TAG      "screen"
50#define VICTOR9K_KEYBOARD_TAG   "victor9kb"
51#define KB_TAG         "kb"
5152#define FDC_TAG         "fdc"
5253
5354class victor9k_state : public driver_device
r242306r242307
6667      m_cvsd(*this, HC55516_TAG),
6768      m_crtc(*this, HD46505S_TAG),
6869      m_ram(*this, RAM_TAG),
69      m_kb(*this, VICTOR9K_KEYBOARD_TAG),
70      m_kb(*this, KB_TAG),
7071      m_fdc(*this, FDC_TAG),
72      m_centronics(*this, CENTRONICS_TAG),
7173      m_rs232a(*this, RS232_A_TAG),
7274      m_rs232b(*this, RS232_B_TAG),
7375      m_palette(*this, "palette"),
r242306r242307
7678      m_brt(0),
7779      m_cont(0),
7880      m_via1_irq(CLEAR_LINE),
79      m_via2_irq(CLEAR_LINE),
8081      m_via3_irq(CLEAR_LINE),
8182      m_fdc_irq(CLEAR_LINE),
8283      m_ssda_irq(CLEAR_LINE)
r242306r242307
9596   required_device<ram_device> m_ram;
9697   required_device<victor9k_keyboard_device> m_kb;
9798   required_device<victor_9000_fdc_t> m_fdc;
99   required_device<centronics_device> m_centronics;
98100   required_device<rs232_port_device> m_rs232a;
99101   required_device<rs232_port_device> m_rs232b;
100102   required_device<palette_device> m_palette;
r242306r242307
115117   DECLARE_WRITE8_MEMBER( via2_pb_w );
116118   DECLARE_WRITE_LINE_MEMBER( write_ria );
117119   DECLARE_WRITE_LINE_MEMBER( write_rib );
118   DECLARE_WRITE_LINE_MEMBER( via2_irq_w );
119120
120121   DECLARE_WRITE8_MEMBER( via3_pb_w );
121122   DECLARE_WRITE_LINE_MEMBER( via3_irq_w );
r242306r242307
136137
137138   /* interrupts */
138139   int m_via1_irq;
139   int m_via2_irq;
140140   int m_via3_irq;
141141   int m_fdc_irq;
142142   int m_ssda_irq;
trunk/src/mess/machine/victor9kb.c
r242306r242307
177177   PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_KEYBOARD )
178178
179179   PORT_START("Y6")
180   PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_KEYBOARD )
181   PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_KEYBOARD )
182   PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_KEYBOARD )
183   PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_KEYBOARD )
184   PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_KEYBOARD )
185   PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_KEYBOARD )
186   PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_KEYBOARD )
187   PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_KEYBOARD )
180   PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_Q)
181   PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_W)
182   PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_E)
183   PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_R)
184   PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_T)
185   PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_Y)
186   PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_U)
187   PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_I)
188188
189189   PORT_START("Y7")
190190   PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_KEYBOARD )
r242306r242307
286286   m_kbrdy_handler(*this),
287287   m_kbdata_handler(*this),
288288   m_y(0),
289   m_kbrdy(1),
290   m_kbdata(1),
289   m_kbrdy(-1),
290   m_kbdata(-1),
291291   m_kback(1)
292292{
293293}
r242306r242307
371371      m_y = data & 0x0f;
372372   }
373373
374   //logerror("P1 %02x\n", data);
374   //logerror("%s P1 %02x\n", machine().describe_context(), data);
375375}
376376
377377
r242306r242307
408408      m_kbdata_handler(m_kbdata);
409409   }
410410
411   //logerror("P2 %02x\n", data);
411   //logerror("%s P2 %01x\n", machine().describe_context(), data&0x0f);
412412}
413413
414414


Previous 199869 Revisions Next


© 1997-2024 The MAME Team