Home

Awesome

geoWrite Source Code

by Berkeley Softworks, reverse engineered by Michael Steil.

Description

geoWrite is a WYSIWYG rich text editor for the Commodore 64 GEOS operating system.

Like GEOS, it has extremely low hardware requirements:

With just 35 KB of binary code, geoWrite has the following features:

Source

This is the reverse engineered source code of the English and German versions of geoWrite 2.1 for the Commodore 64.

The source has been heavily reorganized, nevertheless, a standard compile will generate binaries that are identical with the English/German geoWrite 2.1 distribution binaries.

Requirements

Building

Entering

make

will build the English version. To build the German version, enter

LOCALE=de make

The build output will be in build/en and build/de, respectively.

The resulting files are the individual VLIR records, the file header, and the copy protection sector:

geoWrite-0.bin
geoWrite-1.bin
geoWrite-2.bin
geoWrite-3.bin
geoWrite-4.bin
geoWrite-5.bin
geoWrite-6.bin
geoWrite-7.bin
geoWrite-8.bin
geoWrite-fhdr.bin
protection.bin

The build process can re-create a flat "CVT" VLIR file with metadata (track & sector data, time stamp) fixed to values from geoWrite_en_2.1_1988-07-06.cvt file.

To prepare cvt file enter

make && make cvt

Binary Collection

The orig subdirectory contains a collection of different versions of geoWrite:

NamesDescription
geoWrite_en_1.0-1986-03-07English 1.0
geoWrite_en_1.1-1986-04-07English 1.1
geoWrite_en_1.1-1986-04-07_altEnglish 1.1 (alternate version)
geoWrite_es_1.1_1986-04-07Spanish 1.1
geoWrite_en_1.3-1986-10-05English 1.3 (original version)
geoWrite_en_1.3-1987-07-17English 1.3 (updated version)
geoWrite_de_1.3-1987-10-16German 1.3
geoWrite_en_2.0-1986-10-05English 2.0 (geoWrite Workshop box)
geoWrite_en_2.1_1987-09-27English 2.1 (geoWrite Workshop box)
geoWrite_de_2.1_1987-12-11German 2.1 (geoWrite Workshop box)
geoWrite_en_2.1_1988-07-06English 2.1 (bundled with GEOS 2.0)
geoWrite_de_2.1_1989-01-03German 2.1 (bundled with GEOS 2.0)
geoWrite_de_2.1_1996-02-08_wwGerman 2.1, unofficial Werner Weicht patches
geoWrite_de_2.2_1993-08-08_frGerman 2.1, unofficial Falk Rehwagen patches
geoWrite_de_2.2_1996-02-10_fr_wwGerman 2.1, unofficial Falk Rehwagen/Werner Weicht patches
geoWrite_de_2.2_1996-11-04_fr_wwGerman 2.1, unofficial Falk Rehwagen/Werner Weicht patches (Update)
geoWrite_de_2.1_1989-01-03_plus4German 2.1, unofficial Plus/4 patches
geoWrite_de_2.1_1989-01-03_plus4_altGerman 2.1, unofficial Plus/4 patches (alternate version)
geoWrite_de_2.1_1989-01-03_plus4_alt2German 2.1, unofficial Plus/4 patches (alternate version 2)

Status

The code has not been completely commented yet:

ComponentStatus
Record 0: MAIN: library code, core text editing90%
Record 1: init, copy protection100%
Record 2: core text editing30%
Record 3: cut, copy, paste100%
Record 4: ruler editing20%
Record 5: startup/about, create, open, version conversion, paste text, run desk accessory80%
Record 6: navigation, search/replace, header/footer, repaginate70%
Record 7: printing20%
Record 8: print settings10%
Copy Protection100%

TODO

Contributing

Pull requests are greatly appreciated. Please keep in mind that a default build must always recreate the original binaries (geoWrite_en_2.1_1988-07-06 and geoWrite_de_2.1_1989-01-03).

Documentation

There is a series of articles on the internals of geoWrite at www.pagetable.com:

License

For the underlying work on GEOS, please respect its license.

The intellectual property added by the reverse-engineering and the subsequent improvements is in the public domain, but the authors request to be credited.

Authors

geoWrite was initially developed by Berkeley Softworks in 1985-1988.

In 2020, Michael Steil re-assembled the sources into cc65/ca65 format and did the reverse-engineering.