trunk/src/mess/includes/osi.h
| r26691 | r26692 | |
| 30 | 30 | public: |
| 31 | 31 | enum |
| 32 | 32 | { |
| 33 | | TIMER_CASSETTE, |
| 34 | 33 | TIMER_SETUP_BEEP |
| 35 | 34 | }; |
| 36 | 35 | |
| r26691 | r26692 | |
| 63 | 62 | DECLARE_WRITE8_MEMBER( keyboard_w ); |
| 64 | 63 | DECLARE_WRITE8_MEMBER( ctrl_w ); |
| 65 | 64 | DECLARE_WRITE_LINE_MEMBER( cassette_tx ); |
| 65 | TIMER_DEVICE_CALLBACK_MEMBER( tape_tick ); |
| 66 | 66 | |
| 67 | 67 | /* keyboard state */ |
| 68 | 68 | UINT8 m_keylatch; |
| r26691 | r26692 | |
| 96 | 96 | required_ioport m_io_sound; |
| 97 | 97 | required_ioport m_io_reset; |
| 98 | 98 | optional_device<beep_device> m_beeper; |
| 99 | | emu_timer *m_cassette_timer; |
| 100 | 99 | |
| 101 | 100 | protected: |
| 102 | 101 | virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr); |
trunk/src/mess/drivers/osi.c
| r26691 | r26692 | |
| 644 | 644 | |
| 645 | 645 | /* Machine Start */ |
| 646 | 646 | |
| 647 | TIMER_DEVICE_CALLBACK_MEMBER( sb2m600_state::tape_tick ) |
| 648 | { |
| 649 | m_acia_0->write_rx((m_cassette->input() > 0.0) ? 1 : 0); |
| 650 | } |
| 651 | |
| 647 | 652 | WRITE_LINE_MEMBER( sb2m600_state::cassette_tx ) |
| 648 | 653 | { |
| 649 | 654 | m_cassette->output(state ? +1.0 : -1.0); |
| r26691 | r26692 | |
| 796 | 801 | |
| 797 | 802 | /* cassette */ |
| 798 | 803 | MCFG_CASSETTE_ADD("cassette", default_cassette_interface) |
| 804 | MCFG_TIMER_DRIVER_ADD_PERIODIC("tape", sb2m600_state, tape_tick, attotime::from_hz(44100)) |
| 799 | 805 | |
| 800 | 806 | /* internal ram */ |
| 801 | 807 | MCFG_RAM_ADD(RAM_TAG) |
| r26691 | r26692 | |
| 817 | 823 | |
| 818 | 824 | /* cassette */ |
| 819 | 825 | MCFG_CASSETTE_ADD("cassette", default_cassette_interface) |
| 826 | MCFG_TIMER_DRIVER_ADD_PERIODIC("tape", sb2m600_state, tape_tick, attotime::from_hz(44100)) |
| 820 | 827 | |
| 821 | 828 | /* internal ram */ |
| 822 | 829 | MCFG_RAM_ADD(RAM_TAG) |
| r26691 | r26692 | |
| 850 | 857 | |
| 851 | 858 | /* cassette */ |
| 852 | 859 | MCFG_CASSETTE_ADD("cassette", default_cassette_interface) |
| 860 | MCFG_TIMER_DRIVER_ADD_PERIODIC("tape", sb2m600_state, tape_tick, attotime::from_hz(44100)) |
| 853 | 861 | |
| 854 | 862 | /* internal ram */ |
| 855 | 863 | MCFG_RAM_ADD(RAM_TAG) |
| r26691 | r26692 | |
| 921 | 929 | { |
| 922 | 930 | switch (id) |
| 923 | 931 | { |
| 924 | | case TIMER_CASSETTE: |
| 925 | | m_acia_0->write_rx(((m_cassette)->input() > 0.0) ? 1 : 0); |
| 926 | | break; |
| 927 | 932 | case TIMER_SETUP_BEEP: |
| 928 | 933 | m_beeper->set_state(0); |
| 929 | 934 | m_beeper->set_frequency(300); |
| r26691 | r26692 | |
| 936 | 941 | DRIVER_INIT_MEMBER(c1p_state,c1p) |
| 937 | 942 | { |
| 938 | 943 | timer_set(attotime::zero, TIMER_SETUP_BEEP); |
| 939 | | m_cassette_timer = timer_alloc(TIMER_CASSETTE); |
| 940 | | m_cassette_timer->adjust(attotime::from_hz(44100), 0, attotime::from_hz(44100)); |
| 941 | 944 | } |
| 942 | 945 | |
| 943 | 946 | |