radionic: PPI and documentation.

This commit is contained in:
Robbbert 2021-04-22 03:06:31 +10:00
parent be14bfe226
commit c61bd7299c
2 changed files with 67 additions and 19 deletions

View File

@ -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
}

View File

@ -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