Previous 15994 Revisions Next

r4698 Wednesday 13th May, 2009 at 19:42:24 UTC by Curt Coder
[PC8201] Fixed memory sizes, and RTC TP pulse.
[docs]messnew.txt
[src/mess/drivers]kyocera.c
[src/mess/machine]upd1990a.c

src/mess/machine/upd1990a.c
r4697r4698
147147
148148         /* 1 Hz data out pulse */
149149         upd1990a->data_out = 1;
150         timer_adjust_periodic(upd1990a->data_out_timer, attotime_zero, 0, ATTOTIME_IN_HZ((device->clock/32768)*2));
150         timer_adjust_periodic(upd1990a->data_out_timer, attotime_zero, 0, ATTOTIME_IN_HZ(1*2));
151151
152152         /* 64 Hz time pulse */
153         timer_adjust_periodic(upd1990a->tp_timer, attotime_zero, 0, ATTOTIME_IN_HZ((device->clock/512)*2));
153         timer_adjust_periodic(upd1990a->tp_timer, attotime_zero, 0, ATTOTIME_IN_HZ(64*2));
154154         break;
155155
156156      case UPD1990A_MODE_SHIFT:
r4697r4698
167167         devcb_call_write_line(&upd1990a->out_data_func, upd1990a->data_out);
168168
169169         /* 32 Hz time pulse */
170         timer_adjust_periodic(upd1990a->tp_timer, attotime_zero, 0, ATTOTIME_IN_HZ((device->clock/1024)*2));
170         timer_adjust_periodic(upd1990a->tp_timer, attotime_zero, 0, ATTOTIME_IN_HZ(32*2));
171171         break;
172172
173173      case UPD1990A_MODE_TIME_SET:
r4697r4698
194194         }
195195
196196         /* 32 Hz time pulse */
197         timer_adjust_periodic(upd1990a->tp_timer, attotime_zero, 0, ATTOTIME_IN_HZ((device->clock/1024)*2));
197         timer_adjust_periodic(upd1990a->tp_timer, attotime_zero, 0, ATTOTIME_IN_HZ(32*2));
198198         }
199199         break;
200200
r4697r4698
217217
218218         /* 512 Hz data out pulse */
219219         upd1990a->data_out = 1;
220         timer_adjust_periodic(upd1990a->data_out_timer, attotime_zero, 0, ATTOTIME_IN_HZ((device->clock/64)*2));
220         timer_adjust_periodic(upd1990a->data_out_timer, attotime_zero, 0, ATTOTIME_IN_HZ(512*2));
221221
222222         /* 32 Hz time pulse */
223         timer_adjust_periodic(upd1990a->tp_timer, attotime_zero, 0, ATTOTIME_IN_HZ((device->clock/1024)*2));
223         timer_adjust_periodic(upd1990a->tp_timer, attotime_zero, 0, ATTOTIME_IN_HZ(32*2));
224224         }
225225         break;
226226
r4697r4698
228228         if (LOG) logerror("UPD1990A TP = 64 Hz Set Mode\n");
229229         
230230         /* 64 Hz time pulse */
231         timer_adjust_periodic(upd1990a->tp_timer, attotime_zero, 0, ATTOTIME_IN_HZ((device->clock/512)*2));
231         timer_adjust_periodic(upd1990a->tp_timer, attotime_zero, 0, ATTOTIME_IN_HZ(64*2));
232232         break;
233233
234234      case UPD1990A_MODE_TP_256HZ_SET:
235235         if (LOG) logerror("UPD1990A TP = 256 Hz Set Mode\n");
236236         
237237         /* 256 Hz time pulse */
238         timer_adjust_periodic(upd1990a->tp_timer, attotime_zero, 0, ATTOTIME_IN_HZ((device->clock/128)*2));
238         timer_adjust_periodic(upd1990a->tp_timer, attotime_zero, 0, ATTOTIME_IN_HZ(256*2));
239239         break;
240240
241241      case UPD1990A_MODE_TP_2048HZ_SET:
242242         if (LOG) logerror("UPD1990A TP = 2048 Hz Set Mode\n");
243243
244244         /* 2048 Hz time pulse */
245         timer_adjust_periodic(upd1990a->tp_timer, attotime_zero, 0, ATTOTIME_IN_HZ((device->clock/16)*2));
245         timer_adjust_periodic(upd1990a->tp_timer, attotime_zero, 0, ATTOTIME_IN_HZ(2048*2));
246246         break;
247247
248248      case UPD1990A_MODE_TEST:
src/mess/drivers/kyocera.c
r4697r4698
3030
3131   TODO:
3232
33   - pc8201 halts after boot
33   - discrete sound
34   - pc8201 memory banking
35   - pc8201 I/O control registers
36   - NEC PC-8233 floppy controller
37   - NEC floppy disc drives (PC-8031-1W, PC-8031-2W, PC-80S31)
38   - NEC PC-8240 video monitor adapter
39   - Tandy Portable Disk Drive (TPDD: 100k 3½", TPDD2: 200k 3½")
40   - Chipmunk disk drive (384k 3½")
3441   - soft power on/off
35   - discrete sound
3642   - RS232/modem select
43   - trsm200 RTC alarm
44   - trsm200 TCM5089 sound
3745   - IM6042 UART
38   - trsm200 TCM5089 sound
39   - trsm200 RTC alarm
4046
4147*/
4248
r4697r4698
5864
5965/* Read/Write Handlers */
6066
67static UINT8 sio;
68
6169static READ8_HANDLER( pc8201_bank_r )
6270{
6371   kyocera_state *state = space->machine->driver_data;
6472
65   return state->bank;
73   return (sio & 0xc0) | state->bank;
6674}
6775
6876static void pc8201_bankswitch(running_machine *machine, UINT8 data)
r4697r4698
92100   switch (ram_bank)
93101   {
94102   case 0:
95      memory_install_readwrite8_handler(program, 0x8000, 0xbfff, 0, 0, SMH_UNMAP, SMH_UNMAP);
96      memory_install_readwrite8_handler(program, 0xc000, 0xffff, 0, 0, SMH_BANK(2), SMH_BANK(2));
103      if (mess_ram_size > 16 * 1024)
104      {
105         memory_install_readwrite8_handler(program, 0x8000, 0xffff, 0, 0, SMH_BANK(2), SMH_BANK(2));
106      }
107      else
108      {
109         memory_install_readwrite8_handler(program, 0x8000, 0xbfff, 0, 0, SMH_UNMAP, SMH_UNMAP);
110         memory_install_readwrite8_handler(program, 0xc000, 0xffff, 0, 0, SMH_BANK(2), SMH_BANK(2));
111      }
97112      break;
98113
99114   case 1:
r4697r4698
101116      break;
102117
103118   case 2:
104      if (mess_ram_size > 16 * 1024)
119      if (mess_ram_size > 32 * 1024)
105120         memory_install_readwrite8_handler(program, 0x8000, 0xffff, 0, 0, SMH_BANK(2), SMH_BANK(2));
106121      else
107122         memory_install_readwrite8_handler(program, 0x8000, 0xffff, 0, 0, SMH_UNMAP, SMH_UNMAP);
108123      break;
109124
110125   case 3:
111      if (mess_ram_size > 48 * 1024)
112         memory_install_readwrite8_handler(program, 0x8000, 0xffff, 0, 0, SMH_BANK(2), SMH_BANK(2));
113      else
114         memory_install_readwrite8_handler(program, 0x8000, 0xffff, 0, 0, SMH_UNMAP, SMH_UNMAP);
126      memory_install_readwrite8_handler(program, 0x8000, 0xffff, 0, 0, SMH_UNMAP, SMH_UNMAP);
115127      break;
116128   }
117129
r4697r4698
133145      1     
134146      2
135147      3
136      4
137      5      STB         RTC strobe
148      4      STB         RTC strobe
149      5     
138150      6
139151      7
140152
141153   */
142154
143155   kyocera_state *state = space->machine->driver_data;
156   
157   sio = data;
144158
145   upd1990a_stb_w(state->upd1990a, BIT(data, 5));
159   upd1990a_stb_w(state->upd1990a, BIT(data, 4));
146160}
147161
148162static WRITE8_HANDLER( pc8201_e0_w )
r4697r4698
925939   /* configure ROM banking */
926940   memory_configure_bank(machine, 1, 0, 1, memory_region(machine, I8085_TAG), 0);
927941   memory_configure_bank(machine, 1, 1, 1, memory_region(machine, "ext"), 0);
928   memory_configure_bank(machine, 1, 2, 2, mess_ram + 0x4000, 0x8000);
942   memory_configure_bank(machine, 1, 2, 2, mess_ram + 0x8000, 0x8000);
929943   memory_set_bank(machine, 1, 0);
930944
931945   /* configure RAM banking */
932946   memory_configure_bank(machine, 2, 0, 1, mess_ram, 0);
933   memory_configure_bank(machine, 2, 2, 2, mess_ram + 0x4000, 0x8000);
947   memory_configure_bank(machine, 2, 2, 2, mess_ram + 0x8000, 0x8000);
934948   memory_set_bank(machine, 2, 0);
935949
936950   pc8201_bankswitch(machine, 0);
r4697r4698
12171231
12181232static SYSTEM_CONFIG_START( pc8201 )
12191233   CONFIG_RAM_DEFAULT   (16 * 1024)
1220   CONFIG_RAM         (48 * 1024)
1221   CONFIG_RAM         (80 * 1024)
1234   CONFIG_RAM         (32 * 1024)
1235   CONFIG_RAM         (64 * 1024)
12221236SYSTEM_CONFIG_END
12231237
12241238static SYSTEM_CONFIG_START( trsm100 )
docs/messnew.txt
r4697r4698
10.131.1
10.131.1
22
33New System Drivers Supported (in no particular order):
44------------------------------------------------------
r4697r4698
7272
7373- [CRVISION] Added support for stereo tapes. [Curt Coder]
7474
75- [KYOCERA] All systems (except npc8201) are now usable. [Curt Coder, Fabio Priuli]
75- [KYOCERA] All systems are now working without sound. [Curt Coder, Fabio Priuli]
7676
7777- [ORIC] Various bioses added for different languages. [Miodrag Milanovic]
7878

Previous 15994 Revisions Next


© 1998-2018 The MESS Team