Previous 15994 Revisions Next

r1990 Friday 14th March, 2008 at 10:12:59 UTC by Miodrag Milanović
[MIKRO80][UT88] PPI 8255 used as on real machines
[src/mess/machine]mikro80.c ut88.c

src/mess/machine/mikro80.c
r1989r1990
1010#include "driver.h"
1111#include "cpu/i8085/i8085.h"
1212#include "devices/cassette.h"
13#include <stdio.h>
13#include "machine/8255ppi.h"
1414 
15 
1615static int mikro80_keyboard_line;
1716 
18 
1917/* Driver initialization */
2018DRIVER_INIT(mikro80)
2119{
2220}
2321 
22READ8_HANDLER (mikro80_8255_portb_r )
23{   
24   return readinputport(mikro80_keyboard_line);
25}
26 
27READ8_HANDLER (mikro80_8255_portc_r )
28{
29   return readinputport(8) & 0x07;   
30}
31 
32WRITE8_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 
46static 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 
2457MACHINE_RESET( mikro80 )
2558{
59   ppi8255_init(&mikro80_ppi8255_interface);
2660   mikro80_keyboard_line = 0;
2761}
2862 
2963 
3064READ8_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);   
4867}
4968 
5069WRITE8_HANDLER( mikro80_keyboard_w )
5170{
52     mikro80_keyboard_line = data ^ 0xff;
71   ppi8255_0_w(machine, offset^0x03, data);
5372}
5473 
74 
5575WRITE8_HANDLER( mikro80_tape_w )
5676{
5777   cassette_output(image_from_devtype_and_index(IO_CASSETTE, 0),data & 0x01 ? 1 : -1);   
src/mess/machine/ut88.c
r1989r1990
1111#include "cpu/i8085/i8085.h"
1212#include "sound/dac.h"
1313#include "devices/cassette.h"
14#include <stdio.h>
14#include "machine/8255ppi.h"
1515 
1616 
1717static int ut88_keyboard_line;
r1989r1990
2020/* Driver initialization */
2121DRIVER_INIT(ut88)
2222{
23 
2324}
2425 
26 
27READ8_HANDLER (ut88_8255_portb_r )
28{
29   return readinputport(ut88_keyboard_line) & 0x7f;
30}
31 
32READ8_HANDLER (ut88_8255_portc_r )
33{
34   return readinputport(8) & 0x07;   
35}
36 
37WRITE8_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 
51static 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 
2562MACHINE_RESET( ut88 )
2663{
64   ppi8255_init(&ut88_ppi8255_interface);
2765   ut88_keyboard_line = 0;
2866}
2967 
3068 
3169READ8_HANDLER( ut88_keyboard_r )
3270{
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);   
4072}
4173 
4274WRITE8_HANDLER( ut88_keyboard_w )
4375{
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);
5477}
5578 
5679WRITE8_HANDLER( ut88_sound_w )

Previous 15994 Revisions Next


© 1998-2018 The MESS Team