src/mess/machine/mikro80.c
| r1989 | r1990 | |
| 10 | 10 | #include "driver.h"
|
| 11 | 11 | #include "cpu/i8085/i8085.h"
|
| 12 | 12 | #include "devices/cassette.h"
|
| 13 | | #include <stdio.h>
|
| 13 | #include "machine/8255ppi.h"
|
| 14 | 14 | |
| 15 | | |
| 16 | 15 | static int mikro80_keyboard_line;
|
| 17 | 16 | |
| 18 | | |
| 19 | 17 | /* Driver initialization */
|
| 20 | 18 | DRIVER_INIT(mikro80)
|
| 21 | 19 | {
|
| 22 | 20 | }
|
| 23 | 21 | |
| 22 | READ8_HANDLER (mikro80_8255_portb_r )
|
| 23 | {
|
| 24 | return readinputport(mikro80_keyboard_line);
|
| 25 | }
|
| 26 | |
| 27 | READ8_HANDLER (mikro80_8255_portc_r )
|
| 28 | {
|
| 29 | return readinputport(8) & 0x07;
|
| 30 | }
|
| 31 | |
| 32 | WRITE8_HANDLER (mikro80_8255_porta_w )
|
| 33 | {
|
| 34 | switch (data ^ 0xff) {
|
| 35 | case 0x01 : mikro80_keyboard_line = 0;break;
|
| 36 | case 0x02 : mikro80_keyboard_line = 1;break;
|
| 37 | case 0x04 : mikro80_keyboard_line = 2;break;
|
| 38 | case 0x08 : mikro80_keyboard_line = 3;break;
|
| 39 | case 0x10 : mikro80_keyboard_line = 4;break;
|
| 40 | case 0x20 : mikro80_keyboard_line = 5;break;
|
| 41 | case 0x40 : mikro80_keyboard_line = 6;break;
|
| 42 | case 0x80 : mikro80_keyboard_line = 7;break;
|
| 43 | }
|
| 44 | }
|
| 45 | |
| 46 | static const ppi8255_interface mikro80_ppi8255_interface =
|
| 47 | {
|
| 48 | 1,
|
| 49 | {NULL},
|
| 50 | {mikro80_8255_portb_r},
|
| 51 | {mikro80_8255_portc_r},
|
| 52 | {mikro80_8255_porta_w},
|
| 53 | {NULL},
|
| 54 | {NULL},
|
| 55 | };
|
| 56 | |
| 24 | 57 | MACHINE_RESET( mikro80 )
|
| 25 | 58 | {
|
| 59 | ppi8255_init(&mikro80_ppi8255_interface);
|
| 26 | 60 | mikro80_keyboard_line = 0;
|
| 27 | 61 | }
|
| 28 | 62 | |
| 29 | 63 | |
| 30 | 64 | READ8_HANDLER( mikro80_keyboard_r )
|
| 31 | | {
|
| 32 | | if (offset==2) { |
| 33 | | switch (mikro80_keyboard_line) {
|
| 34 | | case 0x01 : return readinputport(0);break;
|
| 35 | | case 0x02 : return readinputport(1);break;
|
| 36 | | case 0x04 : return readinputport(2);break;
|
| 37 | | case 0x08 : return readinputport(3);break;
|
| 38 | | case 0x10 : return readinputport(4);break;
|
| 39 | | case 0x20 : return readinputport(5);break;
|
| 40 | | case 0x40 : return readinputport(6);break;
|
| 41 | | case 0x80 : return readinputport(7);break;
|
| 42 | | }
|
| 43 | | }
|
| 44 | | if (offset==1) {
|
| 45 | | return readinputport(8) & 0x07;
|
| 46 | | }
|
| 47 | | return 0xff;
|
| 65 | {
|
| 66 | return ppi8255_0_r(machine, offset^0x03);
|
| 48 | 67 | }
|
| 49 | 68 | |
| 50 | 69 | WRITE8_HANDLER( mikro80_keyboard_w )
|
| 51 | 70 | {
|
| 52 | | mikro80_keyboard_line = data ^ 0xff;
|
| 71 | ppi8255_0_w(machine, offset^0x03, data);
|
| 53 | 72 | }
|
| 54 | 73 | |
| 74 | |
| 55 | 75 | WRITE8_HANDLER( mikro80_tape_w )
|
| 56 | 76 | {
|
| 57 | 77 | cassette_output(image_from_devtype_and_index(IO_CASSETTE, 0),data & 0x01 ? 1 : -1);
|
src/mess/machine/ut88.c
| r1989 | r1990 | |
| 11 | 11 | #include "cpu/i8085/i8085.h"
|
| 12 | 12 | #include "sound/dac.h"
|
| 13 | 13 | #include "devices/cassette.h"
|
| 14 | | #include <stdio.h>
|
| 14 | #include "machine/8255ppi.h"
|
| 15 | 15 | |
| 16 | 16 | |
| 17 | 17 | static int ut88_keyboard_line;
|
| r1989 | r1990 | |
| 20 | 20 | /* Driver initialization */
|
| 21 | 21 | DRIVER_INIT(ut88)
|
| 22 | 22 | {
|
| 23 | |
| 23 | 24 | }
|
| 24 | 25 | |
| 26 | |
| 27 | READ8_HANDLER (ut88_8255_portb_r )
|
| 28 | {
|
| 29 | return readinputport(ut88_keyboard_line) & 0x7f;
|
| 30 | }
|
| 31 | |
| 32 | READ8_HANDLER (ut88_8255_portc_r )
|
| 33 | {
|
| 34 | return readinputport(8) & 0x07;
|
| 35 | }
|
| 36 | |
| 37 | WRITE8_HANDLER (ut88_8255_porta_w )
|
| 38 | {
|
| 39 | switch (data ^ 0xff) {
|
| 40 | case 0x01 : ut88_keyboard_line = 0;break;
|
| 41 | case 0x02 : ut88_keyboard_line = 1;break;
|
| 42 | case 0x04 : ut88_keyboard_line = 2;break;
|
| 43 | case 0x08 : ut88_keyboard_line = 3;break;
|
| 44 | case 0x10 : ut88_keyboard_line = 4;break;
|
| 45 | case 0x20 : ut88_keyboard_line = 5;break;
|
| 46 | case 0x40 : ut88_keyboard_line = 6;break;
|
| 47 | case 0x80 : ut88_keyboard_line = 7;break;
|
| 48 | }
|
| 49 | }
|
| 50 | |
| 51 | static const ppi8255_interface ut88_ppi8255_interface =
|
| 52 | {
|
| 53 | 1,
|
| 54 | {NULL},
|
| 55 | {ut88_8255_portb_r},
|
| 56 | {ut88_8255_portc_r},
|
| 57 | {ut88_8255_porta_w},
|
| 58 | {NULL},
|
| 59 | {NULL},
|
| 60 | };
|
| 61 | |
| 25 | 62 | MACHINE_RESET( ut88 )
|
| 26 | 63 | {
|
| 64 | ppi8255_init(&ut88_ppi8255_interface);
|
| 27 | 65 | ut88_keyboard_line = 0;
|
| 28 | 66 | }
|
| 29 | 67 | |
| 30 | 68 | |
| 31 | 69 | READ8_HANDLER( ut88_keyboard_r )
|
| 32 | 70 | {
|
| 33 | | if (offset==2) {
|
| 34 | | return ut88_keyboard_line;
|
| 35 | | }
|
| 36 | | if (offset==1) {
|
| 37 | | return readinputport(8) & 0x07;
|
| 38 | | }
|
| 39 | | return 0xff;
|
| 71 | return ppi8255_0_r(machine, offset^0x03);
|
| 40 | 72 | }
|
| 41 | 73 | |
| 42 | 74 | WRITE8_HANDLER( ut88_keyboard_w )
|
| 43 | 75 | {
|
| 44 | | switch (data ^ 0xff) {
|
| 45 | | case 0x01 : ut88_keyboard_line = readinputport(0) & 0x7f;break;
|
| 46 | | case 0x02 : ut88_keyboard_line = readinputport(1) & 0x7f;break;
|
| 47 | | case 0x04 : ut88_keyboard_line = readinputport(2) & 0x7f;break;
|
| 48 | | case 0x08 : ut88_keyboard_line = readinputport(3) & 0x7f;break;
|
| 49 | | case 0x10 : ut88_keyboard_line = readinputport(4) & 0x7f;break;
|
| 50 | | case 0x20 : ut88_keyboard_line = readinputport(5) & 0x7f;break;
|
| 51 | | case 0x40 : ut88_keyboard_line = readinputport(6) & 0x7f;break;
|
| 52 | | case 0x80 : ut88_keyboard_line = readinputport(7) & 0x7f;break;
|
| 53 | | }
|
| 76 | ppi8255_0_w(machine, offset^0x03, data);
|
| 54 | 77 | }
|
| 55 | 78 | |
| 56 | 79 | WRITE8_HANDLER( ut88_sound_w )
|