diff --git a/src/mame/drivers/radionic.cpp b/src/mame/drivers/radionic.cpp index 1fa698aaffc..ae7115f3f26 100644 --- a/src/mame/drivers/radionic.cpp +++ b/src/mame/drivers/radionic.cpp @@ -28,7 +28,7 @@ Komtek 1 (Radionic R1001) memory map 3c00-3fff static video RAM and colour ram, banked 4000-ffff dynamic main RAM -Printer: Level II usually 37e8 +Printer: Usually 37e8, but you can use the PPI instead. Cassette baud rate: 500 baud @@ -49,35 +49,53 @@ SYSTEM commands: - / to execute last program loaded - /nnnnn to execute program at nnnnn (decimal) -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: - seconds, minutes, hours, days. The seconds are stored at 0x4041. - A reboot always sets the time to zero. +Inbuilt Monitor - its existence is not revealed to the user. + - SYSTEM then /12710 = enter machine-language monitor + Monitor commands: + - B : return to Basic + - Dnnnn : Dump hex to screen. Press down-arrow for more. Press enter to quit. + - Mnnnn : Modify memory. Enter new byte and it increments to next address. X to quit. + - Gnnnn : Execute program at nnnn + - Gnnnn,tttt : as above, breakpoint at tttt + - R : modify registers + The monitor appears to end at 33D3, however the rom contains more code through to 35EB. + But, the 34xx area is overwitten by the optional RS-232 expansion box. + +About the RTC - The time is incremented while it is enabled via the Machine Configuration. The time + is stored in a series of bytes in the computer's work area. The bytes are in a certain order, + this being: seconds, minutes, hours, days. The seconds are stored at 0x4041. A reboot always + sets the time to zero. About colours - The computer has 16 colours with a byte at 350B controlling the operation. POKE 13579,2 : monochrome POKE 13579,4 : programmable colour POKE 13579,12 : automatic colour - There's no schematic or documentation of the Colour Board, however some more information... + More information was discovered, this being - It doesn't have to be 350B (13579), anything in the 35xx range will do. - d0 : write of vram goes to vram (0 = yes, 1 = no) - d1 : write of vram goes to colour ram (0 = yes, 1 = no) - d2 : colour enable (0 = monochrome, 1 = colour) - d3 : programmable or automatic (0 = programmable, 1 = automatic) - List of colour codes: - 0 = off white; 1 = light green; 2 = red; 3 = dark green; 4 = blue; 5 = greenish blue; - 6 = rose red; 7 = dusty blue; 8 = greenish yellow; 9 = light yellow (greenish); 10 = golden red - 11 = grey; 12 = reddish green; 13 = pale yellow; 14 = orange; 15 = ogre green. - As you can see, the descriptions are quite vague, and appear to be background only. The foreground - is assumed to always be white. + The colour codes and names are listed in the palette below. The descriptions are quite vague, + and appear to be background only. The foreground is assumed to always be white. Automatic is a preset colour set by internal jumpers. - No schematic or technical info for the colour board - No information on the settings of the Automatic mode - The "User Friendly Manual" has a bunch of mistakes (page 15). - - When reading video ram, it is not known how this is affected if colour ram is enabled + - It's not known if colour ram can be read. But LDOS won't scroll if it can't always read vram. - No colour programs exist in the wild, so nothing can be verified. So, some guesswork has been done. +About the PPI - A selling point of this computer was the ability to sense and control external gadgets. + For example, it could join to a temperature sensor, and when the temperature reached a certain value + the computer could instruct a device to turn on or off. There's 4 input jacks and 6 output jacks. + The PPI can also control a parallel printer. To enable this, enter SYSTEM then /12367 . + +About the RS-232 unit - This is an external box that plugs into the expansion port. It takes over memory + region 3400-34FF, although it only uses 3400 and 3401. It has a baud generator consisting of 2x 74LS163 + and a dipswitch block to choose one of 5 possible rates. The UART and RS-232 parts are conventional. + There's no programming of the unit from the inbuilt roms; you need to write your own. + ******************************************************************************************************** To Do / Status: @@ -85,7 +103,6 @@ To Do / Status: - Difficulty loading real tapes. - Writing to floppy is problematic; freezing/crashing are common issues. -- Add rs232 board - Add fdc doubler (only some info available) *******************************************************************************************************/ @@ -122,6 +139,10 @@ private: void cctrl_w(offs_t offset, u8 data); void video_w(offs_t offset, u8 data); u8 video_r(offs_t offset); + void ppi_pa_w(offs_t offset, u8 data); + void ppi_pb_w(offs_t offset, u8 data); + void ppi_pc_w(offs_t offset, u8 data); + u8 ppi_pc_r(offs_t offset); void mem_map(address_map &map); static void floppy_formats(format_registration &fr); u8 m_cctrl = 2; @@ -411,6 +432,34 @@ void radionic_state::cctrl_w(offs_t offset, u8 data) m_cctrl = data & 15; } +void radionic_state::ppi_pa_w(offs_t offset, u8 data) +{ + // d0-7: Data to extra printer +} + +void radionic_state::ppi_pb_w(offs_t offset, u8 data) +{ + // d0-7: Outputs to control jacks (only 6 connected up by default) +} + +void radionic_state::ppi_pc_w(offs_t offset, u8 data) +{ + // Printer control + // d0: Strobe +} + +u8 radionic_state::ppi_pc_r(offs_t offset) +{ + // Printer Status + // d1: Busy + // d2: out of paper + // d3: Unit select + + // Sensor Status + // d4-7: sensing inputs + return 0xFF; +} + void radionic_state::floppy_formats(format_registration &fr) { fr.add(FLOPPY_JV1_FORMAT); @@ -492,10 +541,10 @@ void radionic_state::radionic(machine_config &config) // Interface to external circuits I8255(config, m_ppi); - //m_ppi->in_pc_callback().set(FUNC(pulsar_state::ppi_pc_r)); // Sensing from external and printer status - //m_ppi->out_pa_callback().set(FUNC(pulsar_state::ppi_pa_w)); // Data for external plugin printer module - //m_ppi->out_pb_callback().set(FUNC(pulsar_state::ppi_pb_w)); // Control data to external - //m_ppi->out_pc_callback().set(FUNC(pulsar_state::ppi_pc_w)); // Printer strobe + m_ppi->in_pc_callback().set(FUNC(radionic_state::ppi_pc_r)); // Sensing from external and printer status + m_ppi->out_pa_callback().set(FUNC(radionic_state::ppi_pa_w)); // Data for external plugin printer module + m_ppi->out_pb_callback().set(FUNC(radionic_state::ppi_pb_w)); // Control data to external + m_ppi->out_pc_callback().set(FUNC(radionic_state::ppi_pc_w)); // Printer strobe } diff --git a/src/mame/drivers/trs80.cpp b/src/mame/drivers/trs80.cpp index f7766def498..8b354f05a32 100644 --- a/src/mame/drivers/trs80.cpp +++ b/src/mame/drivers/trs80.cpp @@ -89,7 +89,6 @@ About the system80 - Asian version of trs80l2, known as EACA Video Genie. In USA - Gnnnn : Execute program at nnnn - Gnnnn,tttt : as above, breakpoint at tttt - R : modify registers - The monitor works on the radionic too. 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