Last modified on 16 December 2012, at 12:18

BrunWord

BrunWord is a word-processor, spelling checker and Datafile from Brunning Software.

Versions

  • BrunWord 6128 requires 128K RAM (works on CPC 6128, or on CPC 464 with Standard Memory Expansions). Available as Disc-version and ROM-version (MK4 is the last ROM version known, copyright 1995).
  • BrunWord 464 works on any CPC 464, 664, or 6128. According to the manual, this comes on disc, too, ie. not on cassette (?)
  • Newer/older versions - early versions (1985) didn't have the spell check

Covers

Disc

ROM Cartridge and 8bit Status Port

Technical

Eight Bit Status Port

The Eight Bit Status Port connects to the printer connector of the CPC.

On the top side, 12 pins are connected. From left to right. These are strobe, D0-D7, acknowledge, busy and paper out, the remaining 5 pins are not connected. On the underside, 10 pins are all connected together and are "signal ground", 7 pins are not connected.

"no paper" is an active high signal, so it is high or 1 when there is no paper. "busy" is an active high signal, and will be set for busy, offline or an error.

The software uses databits D1 and D2.

The following code is used:

LD C,&0
RES 2,A
CALL READ_STATUS
SET 2,A
CALL READ_STATUS
CALL READ_STATUS
LD A,C
AND A,&3C

.
.
.
 
READ_STATUS:
LD B,&EF
RES 1,A
OUT (C),A
SET 1,A
OUT (C),A
LD B,&F5
PUSH AF
IN A,(C)
AND A,&40
OR A,C
LD C,A
POP AF
RRC C
RET


3 busy states are recorded.

3 values are checked.

&00 -> on line, has paper &08 -> on line, no paper &28 -> off line

other...?

The interface is supported by Brunword Elite and Brunword ROM version.


MK2

The MK2 module connects to the expansion connector of the CPC.

ROM version has a size of 256K. It is split into 16K pages. 2 Pages are standard CPC roms, one of which is a "extension rom".

Part of the Brunword word processor is copied into RAM. This is done by it's "extension rom".

The ROM Select port (&DFXX) is decoded and has 2 roles. (It is decoded in the standard way, with bit 13 of the port address must be set to 0).

First is to select which ROM page appears in the range &C000-&FFFF of the Z80's address space.

The byte sent to this port is decoded as:

x0rrrrrr
Bit 6 must be 0.
Bit 7 is ignored.
Bits 5..0 (rrrrrr) define the ROM page to show. 

Brunword pages 1,2,3 appear in ROM select positions 1,2,3 respectively. No other pages can be shown using this method. They are repeated every 64 "ROM" slots.

The upper ROM enable/disable mechanism works with them, and so does the write through to RAM. They operate just like standard CPC Roms.

The second role makes a page visible in the range &4000-&7FFF of the Z80's address space.

The following applies:

x11bbbepp

bbb define the 64K Bank. pp define the 16K page within that bank. bit 7 is ignored. Bit 6 and 5 must be 1.

Bit 2 is 0 to make the ROM page visible in the range &4000-&7fff. Bit 2 is 1 to disable the ROM page in the range &4000-&7fff.

All pages of the Brunword ROM can be selected this way. The upper ROM enable/disable mechanism doesn't work, it makes no difference to the visibility of the ROM data here. The ROM visibility is only controlled with bit 2 of the data. RAM write through works.

The values repeat every 128.

The pages can appear in both &c000-&ffff and &4000-&ffff.

Examples:

Enable page 1 of the Brunword ROM in the range &4000-&7fff.

ld bc,&df00+%01100001 
out (c),c

Disable Brunword ROM in the range &4000-&7fff. (Bits 4,3 and 1,0 are ignored)

ld bc,&df00+%01100100 
out (c),c

Enable page 1 of the Brunword ROM in the range &c000-&ffff;

call kl_u_rom_enable
ld bc,&df01
out (c),c

Disable Brunword ROM in the range &c000-&ffff:

call kl_u_rom_disable

MK4

This version was published in 1995.

The ROM has a size of 512KBs, split in 16KBs pages (32). The pages 1, 2 and 3 ($C1, $C2 and $C3 are the page number for the hardware) are standard CPC ROMs and they can be paged in at the normal $C000-$FFFF range.

The content of these 32 pages are:

  • 0 ($C0): Tutorial.
  • 1 ($C1), 2 ($C2) and 3 ($C3): Brunword and Info-Script ($C3 includes references of the font and dictionary pages).
  • 4 ($C8), 5 ($C9), 6 ($CA) and 7 ($CB): Dictionary.
  • 8 - 30 ($D0-$D3, $D8-$DB, $E0-$E3, $E8-$EB, $F0-$F3, $F8-$FA): 23 fonts, one for page.
  • 31 ($FB): Examples.

The ROM includes hardware to decode the ROM Select port ($DFXX) and make visible all the 32 pages (included the three previous) in the range $4000-$7FFF, the RAM page under this range is not disable and can be written normally (this was used to dump the pages).

For simplify the page number to send to the ROM Select port, we are going to consider that the pages are grouped in 64 KBs banks (8). With that in mind, the page number to send has the next format: %11bbb0pp

The two most weight bits need to be at 1 to make visible the page; with the three bits bbb, we select the 64 KBs bank; the next bit need to be 0; and with the two less weight bits, we select which of the four pages of the bank is going to be visible.

At this time, Brunword can not be used in any emulator or rom board, because there is no support for the clever ROM paging system used. It seems to be a kind of hardware copy protection.

I would like to thank CPCManiaco by buying this fantastic software in 1995 and help me to preserve it in 2012.

Manual

Downloads

Links