mirror of
https://github.com/holub/mame
synced 2025-05-24 23:05:32 +03:00
Fix missing speaker levels for trs80 (level2) by initializing speaker_sound_device with custom 4 levels.
This commit is contained in:
parent
a056bf3ffa
commit
207718b436
@ -5,7 +5,7 @@ TRS80 memory map
|
|||||||
|
|
||||||
0000-2fff ROM R D0-D7
|
0000-2fff ROM R D0-D7
|
||||||
3000-37ff ROM on Model III R D0-D7
|
3000-37ff ROM on Model III R D0-D7
|
||||||
unused on Model I
|
unused on Model I
|
||||||
37de UART status R/W D0-D7
|
37de UART status R/W D0-D7
|
||||||
37df UART data R/W D0-D7
|
37df UART data R/W D0-D7
|
||||||
37e0 interrupt latch address (lnw80 = for the realtime clock)
|
37e0 interrupt latch address (lnw80 = for the realtime clock)
|
||||||
@ -16,7 +16,7 @@ TRS80 memory map
|
|||||||
37e5 select disk drive 2 W
|
37e5 select disk drive 2 W
|
||||||
37e7 select disk drive 3 W
|
37e7 select disk drive 3 W
|
||||||
37e0-37e3 floppy motor W D0-D3
|
37e0-37e3 floppy motor W D0-D3
|
||||||
or floppy head select W D3
|
or floppy head select W D3
|
||||||
37e8 send a byte to printer W D0-D7
|
37e8 send a byte to printer W D0-D7
|
||||||
37e8 read printer status R D7
|
37e8 read printer status R D7
|
||||||
37ec-37ef FDC WD179x R/W D0-D7
|
37ec-37ef FDC WD179x R/W D0-D7
|
||||||
@ -42,10 +42,10 @@ It is assumed that the TRS80L2 UART setup is identical to the System80, apart fr
|
|||||||
Due to the above, the only working emulated UART is for the Model 3.
|
Due to the above, the only working emulated UART is for the Model 3.
|
||||||
|
|
||||||
Cassette baud rates: Model I level I - 250 baud
|
Cassette baud rates: Model I level I - 250 baud
|
||||||
Model I level II and all clones - 500 baud
|
Model I level II and all clones - 500 baud
|
||||||
Model III/4 - 500 and 1500 baud selectable at boot time
|
Model III/4 - 500 and 1500 baud selectable at boot time
|
||||||
- When it says "Cass?" press L for 500 baud, or Enter otherwise.
|
- When it says "Cass?" press L for 500 baud, or Enter otherwise.
|
||||||
LNW-80 - 500 baud @1.77MHz and 1000 baud @4MHz.
|
LNW-80 - 500 baud @1.77MHz and 1000 baud @4MHz.
|
||||||
|
|
||||||
I/O ports
|
I/O ports
|
||||||
FF:
|
FF:
|
||||||
@ -92,29 +92,29 @@ Model 4 - C0-CF = hard drive (optional)
|
|||||||
- 80-8F hires graphics (optional)
|
- 80-8F hires graphics (optional)
|
||||||
|
|
||||||
About the ht1080z - This was made for schools in Hungary. Each comes with a BASIC extension roms
|
About the ht1080z - This was made for schools in Hungary. Each comes with a BASIC extension roms
|
||||||
which activated Hungarian features. To activate - start emulation - enter SYSTEM
|
which activated Hungarian features. To activate - start emulation - enter SYSTEM
|
||||||
Enter /12288 and the extensions will be installed and you are returned to READY.
|
Enter /12288 and the extensions will be installed and you are returned to READY.
|
||||||
The ht1080z is identical to the System 80, apart from the character rom.
|
The ht1080z is identical to the System 80, apart from the character rom.
|
||||||
The ht1080z2 has a modified extension rom and character generator.
|
The ht1080z2 has a modified extension rom and character generator.
|
||||||
|
|
||||||
About the RTC - The time is incremented while ever the cursor is flashing. It is stored in a series
|
About the RTC - The time is incremented while ever the cursor is flashing. It is stored in a series
|
||||||
of bytes in the computer's work area. The bytes are in a certain order, this is:
|
of bytes in the computer's work area. The bytes are in a certain order, this is:
|
||||||
seconds, minutes, hours, year, day, month. On a model 1, the seconds are stored at
|
seconds, minutes, hours, year, day, month. On a model 1, the seconds are stored at
|
||||||
0x4041, while on the model 4 it is 0x4217. A reboot always sets the time to zero.
|
0x4041, while on the model 4 it is 0x4217. A reboot always sets the time to zero.
|
||||||
|
|
||||||
Model 4 memory organisation -
|
Model 4 memory organisation -
|
||||||
Mode 0: ROM=0-37E7 and 37EA-3FFF; Printer=37E8-37E9; Keyboard=3800-3BFF; Video=3C00-3FFF
|
Mode 0: ROM=0-37E7 and 37EA-3FFF; Printer=37E8-37E9; Keyboard=3800-3BFF; Video=3C00-3FFF
|
||||||
Mode 1: Keyboard and Video as above; 0-3FFF read=ROM and write=RAM
|
Mode 1: Keyboard and Video as above; 0-3FFF read=ROM and write=RAM
|
||||||
Mode 2: Keyboard=F400-F7FF; Video=F800-FFFF; the rest is RAM
|
Mode 2: Keyboard=F400-F7FF; Video=F800-FFFF; the rest is RAM
|
||||||
Mode 3: All RAM
|
Mode 3: All RAM
|
||||||
In the "maincpu" memory map, the first 64k is given to the ROM, keyboard, printer and video,
|
In the "maincpu" memory map, the first 64k is given to the ROM, keyboard, printer and video,
|
||||||
while the second 64k is RAM that is switched in as needed. The area from 4800-FFFF
|
while the second 64k is RAM that is switched in as needed. The area from 4800-FFFF
|
||||||
is considered a "black hole", any writes to there will disappear.
|
is considered a "black hole", any writes to there will disappear.
|
||||||
The video is organised as 2 banks of 0x400 bytes, except in Mode 2 where it becomes contiguous.
|
The video is organised as 2 banks of 0x400 bytes, except in Mode 2 where it becomes contiguous.
|
||||||
|
|
||||||
Model 4P - is the same as Model 4 except:
|
Model 4P - is the same as Model 4 except:
|
||||||
- ROM is only 0000-0FFF, while 1000-37FF is given over to RAM
|
- ROM is only 0000-0FFF, while 1000-37FF is given over to RAM
|
||||||
- There is no cassette support in hardware.
|
- There is no cassette support in hardware.
|
||||||
|
|
||||||
***************************************************************************
|
***************************************************************************
|
||||||
|
|
||||||
|
@ -593,6 +593,7 @@ WRITE8_MEMBER( trs80_state::trs80_ff_w )
|
|||||||
d1, d0 Cassette output */
|
d1, d0 Cassette output */
|
||||||
|
|
||||||
static const double levels[4] = { 0.0, -1.0, 0.0, 1.0 };
|
static const double levels[4] = { 0.0, -1.0, 0.0, 1.0 };
|
||||||
|
static int init = 0;
|
||||||
|
|
||||||
m_cassette->change_state(( data & 4 ) ? CASSETTE_MOTOR_ENABLED : CASSETTE_MOTOR_DISABLED,CASSETTE_MASK_MOTOR );
|
m_cassette->change_state(( data & 4 ) ? CASSETTE_MOTOR_ENABLED : CASSETTE_MOTOR_DISABLED,CASSETTE_MASK_MOTOR );
|
||||||
m_cassette->output(levels[data & 3]);
|
m_cassette->output(levels[data & 3]);
|
||||||
@ -600,6 +601,13 @@ WRITE8_MEMBER( trs80_state::trs80_ff_w )
|
|||||||
|
|
||||||
m_mode = (m_mode & 0xfe) | ((data & 8) >> 3);
|
m_mode = (m_mode & 0xfe) | ((data & 8) >> 3);
|
||||||
|
|
||||||
|
if (!init)
|
||||||
|
{
|
||||||
|
init = 1;
|
||||||
|
static INT16 speaker_levels[4] = { 0, -32768, 0, 32767 };
|
||||||
|
m_speaker->static_set_levels(*m_speaker, 4, speaker_levels);
|
||||||
|
|
||||||
|
}
|
||||||
/* Speaker for System-80 MK II - only sounds if relay is off */
|
/* Speaker for System-80 MK II - only sounds if relay is off */
|
||||||
if (~data & 4)
|
if (~data & 4)
|
||||||
m_speaker->level_w(data & 3);
|
m_speaker->level_w(data & 3);
|
||||||
|
Loading…
Reference in New Issue
Block a user