summaryrefslogtreecommitdiffstatshomepage
path: root/src/mame/drivers/radionic.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/mame/drivers/radionic.cpp')
-rw-r--r--src/mame/drivers/radionic.cpp85
1 files changed, 67 insertions, 18 deletions
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
}