├── .gitignore ├── Makefile ├── README.md ├── config.inc ├── const.inc ├── cvt.s ├── de ├── graph1.s ├── graph2.s ├── graph3.s ├── graph4.s ├── graph5.s ├── scantextscrap_strings.inc ├── strings1.inc ├── strings2.inc ├── strings3.inc ├── strings4a.inc ├── strings4b.inc ├── strings5.inc ├── strings6.inc ├── strings7.inc └── strings_init.inc ├── en ├── graph1.s ├── graph2.s ├── graph3.s ├── graph4.s ├── graph5.s ├── scantextscrap_strings.inc ├── strings1.inc ├── strings2.inc ├── strings3.inc ├── strings4a.inc ├── strings4b.inc ├── strings5.inc ├── strings6.inc ├── strings7.inc └── strings_init.inc ├── encrypt.py ├── fileversion.inc ├── geoWrite-0.inc ├── geoWrite-0.s ├── geoWrite-1.s ├── geoWrite-2.inc ├── geoWrite-2.s ├── geoWrite-3.inc ├── geoWrite-3.s ├── geoWrite-4.inc ├── geoWrite-4.s ├── geoWrite-5.inc ├── geoWrite-5.s ├── geoWrite-6.inc ├── geoWrite-6.s ├── geoWrite-7.inc ├── geoWrite-7.s ├── geoWrite-8.s ├── geoWrite-cvt.cfg ├── geoWrite-fhdr.s ├── geoWrite.cfg ├── geosmac.inc ├── geowrite.png ├── jumptab.inc ├── loadprinter.inc ├── loadprinter_strings.inc ├── orig ├── cvt.py ├── decrypt.py ├── geoWrite_de_1.3-1987-10-16.cvt ├── geoWrite_de_1.3-1987-10-16.vlir │ ├── 00 │ ├── 01 │ ├── 02 │ ├── 03 │ ├── 04 │ ├── 05 │ ├── 06 │ └── fhdr ├── geoWrite_de_2.1_1987-12-11.cvt ├── geoWrite_de_2.1_1987-12-11.vlir │ ├── 00 │ ├── 01 │ ├── 01_plain │ ├── 02 │ ├── 03 │ ├── 04 │ ├── 05 │ ├── 06 │ ├── 07 │ ├── 08 │ └── fhdr ├── geoWrite_de_2.1_1989-01-03.cvt ├── geoWrite_de_2.1_1989-01-03.vlir │ ├── 00 │ ├── 01 │ ├── 01_plain │ ├── 02 │ ├── 03 │ ├── 04 │ ├── 05 │ ├── 06 │ ├── 07 │ ├── 08 │ └── fhdr ├── geoWrite_de_2.1_1989-01-03_plus4.cvt ├── geoWrite_de_2.1_1989-01-03_plus4.vlir │ ├── 00 │ ├── 01 │ ├── 01_plain │ ├── 02 │ ├── 03 │ ├── 04 │ ├── 05 │ ├── 06 │ ├── 07 │ ├── 08 │ └── fhdr ├── geoWrite_de_2.1_1989-01-03_plus4_alt.cvt ├── geoWrite_de_2.1_1989-01-03_plus4_alt.vlir │ ├── 00 │ ├── 01 │ ├── 01_plain │ ├── 02 │ ├── 03 │ ├── 04 │ ├── 05 │ ├── 06 │ ├── 07 │ ├── 08 │ └── fhdr ├── geoWrite_de_2.1_1989-01-03_plus4_alt2.cvt ├── geoWrite_de_2.1_1989-01-03_plus4_alt2.vlir │ ├── 00 │ ├── 01 │ ├── 01_plain │ ├── 02 │ ├── 03 │ ├── 04 │ ├── 05 │ ├── 06 │ ├── 07 │ ├── 08 │ └── fhdr ├── geoWrite_de_2.1_1996-02-08_ww.cvt ├── geoWrite_de_2.1_1996-02-08_ww.vlir │ ├── 00 │ ├── 01 │ ├── 01_plain │ ├── 02 │ ├── 03 │ ├── 04 │ ├── 05 │ ├── 06 │ ├── 07 │ ├── 08 │ └── fhdr ├── geoWrite_de_2.2_1993-08-08_fr.cvt ├── geoWrite_de_2.2_1993-08-08_fr.vlir │ ├── 00 │ ├── 01 │ ├── 01_plain │ ├── 02 │ ├── 03 │ ├── 04 │ ├── 05 │ ├── 06 │ ├── 07 │ ├── 08 │ └── fhdr ├── geoWrite_de_2.2_1996-02-10_fr_ww.cvt ├── geoWrite_de_2.2_1996-02-10_fr_ww.vlir │ ├── 00 │ ├── 01 │ ├── 01_plain │ ├── 02 │ ├── 03 │ ├── 04 │ ├── 05 │ ├── 06 │ ├── 07 │ ├── 08 │ └── fhdr ├── geoWrite_de_2.2_1996-11-04_fr_ww.cvt ├── geoWrite_de_2.2_1996-11-04_fr_ww.vlir │ ├── 00 │ ├── 01 │ ├── 01_plain │ ├── 02 │ ├── 03 │ ├── 04 │ ├── 05 │ ├── 06 │ ├── 07 │ ├── 08 │ └── fhdr ├── geoWrite_en_1.0-1986-03-07.cvt ├── geoWrite_en_1.0-1986-03-07.vlir │ ├── 00 │ ├── 01 │ └── fhdr ├── geoWrite_en_1.1-1986-04-07.cvt ├── geoWrite_en_1.1-1986-04-07.vlir │ ├── 00 │ ├── 01 │ ├── 02 │ ├── 03 │ ├── 04 │ ├── 05 │ ├── 06 │ └── fhdr ├── geoWrite_en_1.1-1986-04-07_alt.cvt ├── geoWrite_en_1.1-1986-04-07_alt.vlir │ ├── 00 │ ├── 01 │ ├── 02 │ ├── 03 │ ├── 04 │ ├── 05 │ ├── 06 │ └── fhdr ├── geoWrite_en_1.3-1986-10-05.cvt ├── geoWrite_en_1.3-1986-10-05.vlir │ ├── 00 │ ├── 01 │ ├── 02 │ ├── 03 │ ├── 04 │ ├── 05 │ ├── 06 │ └── fhdr ├── geoWrite_en_1.3-1987-07-17.cvt ├── geoWrite_en_1.3-1987-07-17.vlir │ ├── 00 │ ├── 01 │ ├── 02 │ ├── 03 │ ├── 04 │ ├── 05 │ ├── 06 │ └── fhdr ├── geoWrite_en_2.0-1986-10-05.cvt ├── geoWrite_en_2.0-1986-10-05.vlir │ ├── 00 │ ├── 01 │ ├── 01_plain │ ├── 02 │ ├── 03 │ ├── 04 │ ├── 05 │ ├── 06 │ ├── 07 │ └── fhdr ├── geoWrite_en_2.1_1987-09-27.cvt ├── geoWrite_en_2.1_1987-09-27.vlir │ ├── 00 │ ├── 01 │ ├── 01_plain │ ├── 02 │ ├── 03 │ ├── 04 │ ├── 05 │ ├── 06 │ ├── 07 │ ├── 08 │ └── fhdr ├── geoWrite_en_2.1_1988-07-06.cvt ├── geoWrite_en_2.1_1988-07-06.vlir │ ├── 00 │ ├── 01 │ ├── 01_plain │ ├── 02 │ ├── 03 │ ├── 04 │ ├── 05 │ ├── 06 │ ├── 07 │ ├── 08 │ └── fhdr ├── geoWrite_es_1.1_1986-04-07.cvt ├── geoWrite_es_1.1_1986-04-07.vlir │ ├── 00 │ ├── 01 │ ├── 02 │ ├── 03 │ ├── 04 │ ├── 05 │ ├── 06 │ └── fhdr └── protection.bin ├── protection.cfg ├── protection.s ├── savetextscrap.inc ├── scantextscrap.inc ├── stringtoint.inc ├── sym.inc ├── test.sh ├── textscrap_filename.inc ├── zeropage.inc └── zeropage.s /.gitignore: -------------------------------------------------------------------------------- 1 | build 2 | *_da64.s 3 | .nova 4 | -------------------------------------------------------------------------------- /Makefile: -------------------------------------------------------------------------------- 1 | AS = ca65 2 | ASFLAGS = -g 3 | 4 | LOCALE ?= en 5 | 6 | ifeq ($(LOCALE),en) 7 | ASFLAGS+=-D LOCALE=0 -I en 8 | else ifeq ($(LOCALE),de) 9 | ASFLAGS+=-D LOCALE=1 -I de 10 | else 11 | $(error Unsupported LOCALE) 12 | endif 13 | 14 | BUILD_DIR = build/$(LOCALE) 15 | 16 | SOURCES = \ 17 | zeropage.s \ 18 | geoWrite-0.s \ 19 | geoWrite-1.s \ 20 | geoWrite-2.s \ 21 | geoWrite-3.s \ 22 | geoWrite-4.s \ 23 | geoWrite-5.s \ 24 | geoWrite-6.s \ 25 | geoWrite-7.s \ 26 | geoWrite-8.s \ 27 | geoWrite-fhdr.s 28 | 29 | OBJS=$(SOURCES:.s=.o) 30 | 31 | PREFIXED_OBJS = $(addprefix $(BUILD_DIR)/, $(OBJS)) 32 | 33 | $(BUILD_DIR)/%.o: %.s 34 | @mkdir -p `dirname $@` 35 | $(AS) $(ASFLAGS) $< -o $@ 36 | 37 | all: $(PREFIXED_OBJS) $(BUILD_DIR)/protection.o 38 | 39 | rm -f build/current 40 | ln -s $(LOCALE) build/current 41 | ld65 -C geoWrite.cfg $(PREFIXED_OBJS) -o $(BUILD_DIR)/geoWrite-0_plain.bin -Ln build/current/symbols.txt 42 | 43 | ld65 -C protection.cfg \ 44 | $(BUILD_DIR)/protection.o \ 45 | -o $(BUILD_DIR)/protection.bin 46 | 47 | ./encrypt.py 48 | 49 | rm -f build/current 50 | 51 | cvt: cvt.s geoWrite-cvt.cfg $(PREFIXED_OBJS) $(BUILD_DIR)/protection.o 52 | rm -f build/current 53 | ln -s $(LOCALE) build/current 54 | $(AS) $(ASFLAGS) cvt.s -o $(BUILD_DIR)/cvt.o 55 | ld65 -C geoWrite-cvt.cfg $(BUILD_DIR)/cvt.o -o $(BUILD_DIR)/geoWrite.cvt -Ln $(BUILD_DIR)/cvtsymbols.lbl 56 | rm -f build/current 57 | 58 | clean: 59 | rm -rf build 60 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # geoWrite Source Code 2 | 3 | by Berkeley Softworks, reverse engineered by *Michael Steil*. 4 | 5 | ## Description 6 | 7 | geoWrite is a WYSIWYG rich text editor for the Commodore 64 GEOS operating system. 8 | 9 | ![](geowrite.png) 10 | 11 | Like [GEOS](https://github.com/mist64/geos), it has extremely low hardware requirements: 12 | 13 | * a **MOS 6502**-compatible CPU (usually at 1 MHz or higher) 14 | * **64 KB** of RAM 15 | * one **disk drive** (typically 170 KB) 16 | * a **320x200** monochrome screen 17 | * a **pointing device** 18 | 19 | With just **35 KB** of binary code, geoWrite has the following features: 20 | 21 | * graphical, menu-based user interface 22 | * WYSIWYG ("What You See Is What You Get") 23 | * up to 8 proportional pixel fonts per document 24 | * bold, italics, underline, outline, subscript, superscript 25 | * left aligned, right aligned, centered, justified 26 | * variable line spacing (1, 1.5 and 2) 27 | * variable left and right margins; paragraph margins 28 | * regular and decimal tabs 29 | * headers and footers 30 | * inline images 31 | * documents up to 62 pages 32 | * English and German version 33 | 34 | ## Source 35 | 36 | This is the reverse engineered source code of the English and German versions of geoWrite 2.1 for the Commodore 64. 37 | 38 | 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. 39 | 40 | ## Requirements 41 | 42 | * make 43 | * [cc65](https://github.com/cc65/cc65) for assembling and linking 44 | * Python for encrypting some protected/obfuscated code 45 | 46 | ## Building 47 | 48 | Entering 49 | 50 | make 51 | 52 | will build the English version. To build the German version, enter 53 | 54 | LOCALE=de make 55 | 56 | The build output will be in `build/en` and `build/de`, respectively. 57 | 58 | The resulting files are the individual VLIR records, the file header, and the copy protection sector: 59 | 60 | geoWrite-0.bin 61 | geoWrite-1.bin 62 | geoWrite-2.bin 63 | geoWrite-3.bin 64 | geoWrite-4.bin 65 | geoWrite-5.bin 66 | geoWrite-6.bin 67 | geoWrite-7.bin 68 | geoWrite-8.bin 69 | geoWrite-fhdr.bin 70 | protection.bin 71 | 72 | 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. 73 | 74 | To prepare cvt file enter 75 | 76 | make && make cvt 77 | 78 | ## Binary Collection 79 | 80 | The `orig` subdirectory contains a collection of different versions of geoWrite: 81 | 82 | | Names | Description | 83 | |-----------------------------------------|----------------| 84 | | `geoWrite_en_1.0-1986-03-07` | English 1.0 85 | | `geoWrite_en_1.1-1986-04-07` | English 1.1 86 | | `geoWrite_en_1.1-1986-04-07_alt` | English 1.1 (alternate version) 87 | | `geoWrite_es_1.1_1986-04-07` | Spanish 1.1 88 | | `geoWrite_en_1.3-1986-10-05` | English 1.3 (original version) 89 | | `geoWrite_en_1.3-1987-07-17` | English 1.3 (updated version) 90 | | `geoWrite_de_1.3-1987-10-16` | German 1.3 91 | | `geoWrite_en_2.0-1986-10-05` | English 2.0 (geoWrite Workshop box) 92 | | `geoWrite_en_2.1_1987-09-27` | English 2.1 (geoWrite Workshop box) 93 | | `geoWrite_de_2.1_1987-12-11` | German 2.1 (geoWrite Workshop box) 94 | | `geoWrite_en_2.1_1988-07-06` | English 2.1 (bundled with GEOS 2.0) 95 | | `geoWrite_de_2.1_1989-01-03` | German 2.1 (bundled with GEOS 2.0) 96 | | `geoWrite_de_2.1_1996-02-08_ww` | German 2.1, unofficial Werner Weicht patches 97 | | `geoWrite_de_2.2_1993-08-08_fr` | German 2.1, unofficial Falk Rehwagen patches 98 | | `geoWrite_de_2.2_1996-02-10_fr_ww` | German 2.1, unofficial Falk Rehwagen/Werner Weicht patches 99 | | `geoWrite_de_2.2_1996-11-04_fr_ww` | German 2.1, unofficial Falk Rehwagen/Werner Weicht patches (Update) 100 | | `geoWrite_de_2.1_1989-01-03_plus4` | German 2.1, unofficial Plus/4 patches 101 | | `geoWrite_de_2.1_1989-01-03_plus4_alt` | German 2.1, unofficial Plus/4 patches (alternate version) 102 | | `geoWrite_de_2.1_1989-01-03_plus4_alt2` | German 2.1, unofficial Plus/4 patches (alternate version 2) 103 | 104 | * The date codes are taken from the application's last modified dates. 105 | * It is unknown whether this contains all official versions. Was there a 1.2 version? Were there German 1.0/1.1/1.2 versions? Were there any more localized versions? 106 | * The FR/WW patched versions have been created by applying the respective "Patch System" patches to the German 2.1 version. 107 | * The source in this repo produces the GEOS-bundled versions of geoWrite 2.1, i.e. the last official versions. 108 | 109 | ## Status 110 | 111 | The code has not been completely commented yet: 112 | 113 | | Component | Status | 114 | |-----------|--------| 115 | | Record 0: MAIN: library code, core text editing | 90% | 116 | | Record 1: init, copy protection | 100% | 117 | | Record 2: core text editing | 30% | 118 | | Record 3: cut, copy, paste | 100% | 119 | | Record 4: ruler editing | 20% | 120 | | Record 5: startup/about, create, open, version conversion, paste text, run desk accessory | 80% | 121 | | Record 6: navigation, search/replace, header/footer, repaginate | 70% | 122 | | Record 7: printing | 20% | 123 | | Record 8: print settings | 10% | 124 | | Copy Protection | 100% | 125 | 126 | ## TODO 127 | 128 | * Comment the remainder of the code. 129 | * Incorporate the Werner Weicht, Falk Rehwagen and Plus/4 patches as `.ifdef`s. 130 | 131 | ## Contributing 132 | 133 | 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`). 134 | 135 | ## Documentation 136 | 137 | There is a series of articles on the internals of geoWrite at [www.pagetable.com](https://www.pagetable.com/): 138 | 139 | * Part 1: [The Overlay System](https://www.pagetable.com/?p=1425) 140 | * Part 2: [Screen Recovery](https://www.pagetable.com/?p=1428) 141 | * Part 3: [Font Management](https://www.pagetable.com/?p=1436) 142 | * Part 4: [Zero Page](https://www.pagetable.com/?p=1442) 143 | * Part 5: [Copy Protection](https://www.pagetable.com/?p=1449) 144 | * Part 6: [Localization](https://www.pagetable.com/?p=1460) 145 | * Part 7: [File Format and Pagination](https://www.pagetable.com/?p=1471) 146 | * Part 8: [Copy & Paste](https://www.pagetable.com/?p=1481) 147 | * Part 9: [Keyboard Handling](https://www.pagetable.com/?p=1490) 148 | 149 | ## License 150 | 151 | For the underlying work on GEOS, please respect its license. 152 | 153 | The intellectual property added by the reverse-engineering and the subsequent improvements is in the public domain, but the authors request to be credited. 154 | 155 | ## Authors 156 | 157 | geoWrite was initially developed by Berkeley Softworks in 1985-1988. 158 | 159 | In 2020, [Michael Steil](mailto:mist64@mac.com) re-assembled the sources into cc65/ca65 format and did the reverse-engineering. 160 | -------------------------------------------------------------------------------- /config.inc: -------------------------------------------------------------------------------- 1 | LOCALE_EN = 0 2 | LOCALE_DE = 1 3 | 4 | LANG_EN = 0 5 | LANG_DE = 1 6 | CHAR_ENCODING_ASCII = 0 7 | CHAR_ENCODING_DE = 1 8 | 9 | .if LOCALE=LOCALE_EN 10 | 11 | LANG = LANG_EN 12 | SUBMENU_Y = 15 13 | 14 | DECIMAL_SEPARATOR = '.' 15 | CHAR_ENCODING = CHAR_ENCODING_ASCII 16 | DATE_FORMAT_US = 1 17 | 18 | PROT_EXEC_TRACK = 13 19 | PROT_EXEC_SECTOR = 7 20 | PROT_SERIAL_TRACK = 14 21 | PROT_SERIAL_SECTOR = 13 22 | SERIAL = $58B5 ; cmdrkey.com serial 23 | 24 | .elseif LOCALE=LOCALE_DE 25 | 26 | LANG = LANG_DE 27 | SUBMENU_Y = 14 28 | 29 | DECIMAL_SEPARATOR = ',' 30 | CHAR_ENCODING = CHAR_ENCODING_DE 31 | DATE_FORMAT_US = 0 32 | 33 | PROT_EXEC_TRACK = 13 34 | PROT_EXEC_SECTOR = 9 35 | PROT_SERIAL_TRACK = 14 36 | PROT_SERIAL_SECTOR = 8 37 | SERIAL = 0 ; not installed 38 | 39 | .endif 40 | -------------------------------------------------------------------------------- /const.inc: -------------------------------------------------------------------------------- 1 | ; GEOS by Berkeley Softworks 2 | ; reverse engineered by Maciej Witkowiak, Michael Steil 3 | ; 4 | ; various system constans sorted by function 5 | ; 6 | 7 | NULL = 0 8 | 9 | MOUSE_SPRNUM = 0 10 | 11 | DISK_DRV_LGH = $0d80 12 | OS_VARS_LGH = $0500 13 | 14 | ; 15 | ; filetypes 16 | ; GEOS 17 | NOT_GEOS = 0 18 | BASIC = 1 19 | ASSEMBLY = 2 20 | DATA = 3 21 | SYSTEM = 4 22 | DESK_ACC = 5 23 | APPLICATION = 6 24 | APPL_DATA = 7 25 | FONT = 8 26 | PRINTER = 9 27 | INPUT_DEVICE = 10 28 | DISK_DEVICE = 11 29 | SYSTEM_BOOT = 12 30 | TEMPORARY = 13 31 | AUTO_EXEC = 14 32 | INPUT_128 = 15 33 | NUMFILETYPES = 16 34 | ; structure 35 | SEQUENTIAL = 0 36 | VLIR = 1 37 | ; DOS 38 | DEL = 0 39 | SEQ = 1 40 | PRG = 2 41 | USR = 3 42 | REL = 4 43 | CBM = 5 44 | 45 | ; drive types 46 | DRV_NULL = 0 47 | DRV_1541 = 1 48 | DRV_1571 = 2 49 | DRV_1581 = 3 50 | DRV_NETWORK = 15 51 | 52 | ; various disk 53 | REL_FILE_NUM = 9 54 | CMND_FILE_NUM = 15 55 | MAX_CMND_STR = 32 56 | DIR_1581_TRACK = 40 57 | DIR_ACC_CHAN = 13 58 | DIR_TRACK = 18 59 | N_TRACKS = 35 60 | DK_NM_ID_LEN = 18 61 | TRACK = 9 62 | SECTOR = 12 63 | TOTAL_BLOCKS = 664 64 | 65 | ; colours 66 | BLACK = 0 67 | WHITE = 1 68 | RED = 2 69 | CYAN = 3 70 | PURPLE = 4 71 | GREEN = 5 72 | BLUE = 6 73 | YELLOW = 7 74 | ORANGE = 8 75 | BROWN = 9 76 | LTRED = 10 77 | DKGREY = 11 78 | GREY = 12 79 | MEDGREY = 12 80 | LTGREEN = 13 81 | LTBLUE = 14 82 | LTGREY = 15 83 | 84 | ; VIC memory banks 85 | GRBANK0 = %11 86 | GRBANK1 = %10 87 | GRBANK2 = %01 88 | GRBANK3 = %00 89 | 90 | ; screen 91 | VIC_X_POS_OFF = 24 92 | VIC_Y_POS_OFF = 50 93 | SC_BYTE_WIDTH = 40 94 | SC_PIX_HEIGHT = 200 95 | SC_PIX_WIDTH = 320 96 | SC_SIZE = 8000 97 | ; 128 screen size constants 98 | SCREENBYTEWIDTH = 80 99 | SCREENPIXELWIDTH = 640 100 | 101 | 102 | ; control characters 103 | EOF = 0 104 | BACKSPACE = 8 105 | FORWARDSPACE = 9 106 | TAB = 9 107 | LF = 10 108 | HOME = 11 109 | PAGE_BREAK = 12 110 | UPLINE = 12 111 | CR = 13 112 | ULINEON = 14 113 | ULINEOFF = 15 114 | ESC_GRAPHICS = 16 115 | ESC_RULER = 17 116 | REV_ON = 18 117 | REV_OFF = 19 118 | GOTOX = 20 119 | GOTOY = 21 120 | GOTOXY = 22 121 | NEWCARDSET = 23 122 | BOLDON = 24 123 | ITALICON = 25 124 | OUTLINEON = 26 125 | PLAINTEXT = 27 126 | 127 | ; keyboard 128 | KEY_F1 = 1 129 | KEY_F2 = 2 130 | KEY_F3 = 3 131 | KEY_F4 = 4 132 | KEY_F5 = 5 133 | KEY_F6 = 6 134 | KEY_NOSCRL = 7 135 | KEY_TAB = 9 136 | KEY_LF = 10 137 | KEY_ENTER = 11 138 | KEY_F7 = 14 139 | KEY_F8 = 15 140 | KEY_UP = 16 141 | KEY_DOWN = 17 142 | KEY_HOME = 18 143 | KEY_CLEAR = 19 144 | KEY_LARROW = 20 145 | KEY_UPARROR = 21 146 | KEY_STOP = 22 147 | KEY_RUN = 23 148 | KEY_BPS = 24 149 | KEY_HELP = 25 150 | KEY_ALT = 26 151 | KEY_ESC = 27 152 | KEY_INSERT = 28 153 | KEY_DELETE = 29 154 | KEY_RIGHT = 30 155 | KEY_INVALID = 31 156 | KEY_LEFT = BACKSPACE 157 | 158 | ; DialogBox 159 | ; icons 160 | OK = 1 161 | CANCEL = 2 162 | YES = 3 163 | NO = 4 164 | OPEN = 5 165 | DISK = 6 166 | ; commands 167 | DBTXTSTR = 11 168 | DBVARSTR = 12 169 | DBGETSTRING = 13 170 | DBSYSOPV = 14 171 | DBGRPHSTR = 15 172 | DBGETFILES = 16 173 | DBOPVEC = 17 174 | DBUSRICON = 18 175 | DB_USR_ROUT = 19 176 | ; tabulation in standard window 177 | DBI_X_0 = 1 178 | DBI_X_1 = 9 179 | DBI_X_2 = 17 180 | DBI_Y_0 = 8 181 | DBI_Y_1 = 40 182 | DBI_Y_2 = 72 183 | ; standard window 184 | SET_DB_POS = 0 185 | DEF_DB_POS = $80 186 | DEF_DB_TOP = 32 187 | DEF_DB_BOT = 127 188 | DEF_DB_LEFT = 64 189 | DEF_DB_RIGHT = 255 190 | ; text tabulation 191 | TXT_LN_1_Y = 16 192 | TXT_LN_2_Y = 32 193 | TXT_LN_3_Y = 48 194 | TXT_LN_4_Y = 64 195 | TXT_LN_5_Y = 80 196 | TXT_LN_X = 16 197 | ; ??? 198 | SYSDBI_HEIGHT = 16 199 | SYSDBI_WIDTH = 6 200 | 201 | ; GraphicsString - commands 202 | MOVEPENTO = 1 203 | LINETO = 2 204 | RECTANGLETO = 3 205 | NEWPATTERN = 5 206 | ESC_PUTSTRING = 6 207 | FRAME_RECTO = 7 208 | PEN_X_DELTA = 8 209 | PEN_Y_DELTA = 9 210 | PEN_XY_DELTA = 10 211 | 212 | 213 | ; DoMenu - menutypes 214 | MENU_ACTION = $00 215 | DYN_SUB_MENU = $40 216 | SUB_MENU = $80 217 | HORIZONTAL = %00000000 218 | VERTICAL = %10000000 219 | 220 | ; Errors 221 | ANY_FAULT = %11110000 222 | NO_BLOCKS = 1 223 | INV_TRACK = 2 224 | INSUFF_SPACE = 3 225 | FULL_DIRECTORY = 4 226 | FILE_NOT_FOUND = 5 227 | BAD_BAM = 6 228 | UNOPENED_VLIR = 7 229 | INV_RECORD = 8 230 | OUT_OF_RECORDS = 9 231 | STRUCT_MISMAT = 10 232 | BFR_OVERFLOW = 11 233 | CANCEL_ERR = 12 234 | DEV_NOT_FOUND = 13 235 | INCOMPATIBLE = 14 ; GEOS128 236 | HDR_NOT_THERE = $20 237 | NO_SYNC = $21 238 | DBLK_NOT_THERE = $22 239 | DAT_CHKSUM_ERR = $23 240 | WR_VER_ERR = $25 241 | WR_PR_ON = $26 242 | HDR_CHKSUM_ERR = $27 243 | DSK_ID_MISMAT = $29 244 | BYTE_DEC_ERR = $2e 245 | DOS_MISMATCH = $73 246 | 247 | ;Offsets 248 | ; ??? 249 | OFF_INDEX_PTR = 1 250 | ; icons 251 | OFF_NM_ICNS = 0 252 | OFF_IC_XMOUSE = 1 253 | OFF_IC_YMOUSE = 3 254 | OFF_PIC_ICON = 0 255 | OFF_X_ICON_POS = 2 256 | OFF_Y_ICON_POS = 3 257 | OFF_WDTH_ICON = 4 258 | OFF_HEIGHT_ICON = 5 259 | OFF_SRV_RT_ICON = 6 260 | OFF_NX_ICON = 8 261 | ; menu 262 | OFF_MY_TOP = 0 263 | OFF_MY_BOT = 1 264 | OFF_MX_LEFT = 2 265 | OFF_MX_RIGHT = 4 266 | OFF_NUM_M_ITEMS = 6 267 | OFF_1ST_M_ITEM = 7 268 | ; dialog box 269 | OFF_DB_FORM = 0 270 | OFF_DB_TOP = 1 271 | OFF_DB_BOT = 2 272 | OFF_DB_LEFT = 3 273 | OFF_DB_RIGHT = 5 274 | OFF_DB_1STCMD = 7 275 | ; directory 276 | ; disk header 277 | OFF_TO_BAM = 4 278 | OFF_DISK_NAME = 144 279 | OFF_GS_DTYPE = 189 280 | OFF_OP_TR_SC = 171 281 | OFF_GS_ID = 173 282 | ; dir entry 283 | FRST_FILE_ENTRY = 2 284 | OFF_CFILE_TYPE = 0 285 | OFF_DE_TR_SC = 1 286 | OFF_FNAME = 3 287 | OFF_GHDR_PTR = 19 288 | OFF_GSTRUC_TYPE = 21 289 | OFF_GFILE_TYPE = 22 290 | OFF_YEAR = 23 291 | OFF_SIZE = 28 292 | OFF_NXT_FILE = 32 293 | ; file header 294 | O_GHIC_WIDTH = 2 295 | O_GHIC_HEIGHT = 3 296 | O_GHIC_PIC = 4 297 | O_GHCMDR_TYPE = 68 298 | O_GHGEOS_TYPE = 69 299 | O_GHSTR_TYPE = 70 300 | O_GHST_ADDR = 71 301 | O_GHEND_ADDR = 73 302 | O_GHST_VEC = 75 303 | O_GHFNAME = 77 304 | O_128_FLAGS = 96 305 | O_GH_AUTHOR = 97 306 | O_GHP_DISK = 97 307 | O_GHP_FNAME = 117 308 | O_GHINFO_TXT = $a0 309 | 310 | ; values for CPU_DATA - C64 memory config 311 | RAM_64K = $30 ;64K RAM 312 | IO_IN = $35 ;60K RAM, 4K I/O space in 313 | KRNL_IO_IN = $36 ;kernal and I/O mapped into memory 314 | KRNL_BAS_IO_IN = $37 ;kernal, I/O and basic mapped into memory 315 | 316 | ; values for config - C128 mmu 317 | CIOIN = $7E ;60K RAM, 4K I/O space in 318 | CRAM64K = $7F ;64K RAM 319 | CKRNLBASIOIN = $40 ;kernal, I/O and basic ROM's mapped into memory 320 | CKRNLIOIN = $4E ;Kernal ROM and I/O space mapped in 321 | 322 | ; values of faultData - pointer position vs. mouseTop/Bottom/Left/Right 323 | ; bit numbers 324 | OFFTOP_BIT = 7 325 | OFFBOTTOM_BIT = 6 326 | OFFLEFT_BIT = 5 327 | OFFRIGHT_BIT = 4 328 | OFFMENU_BIT = 3 329 | ; masks 330 | SET_OFFTOP = %10000000 331 | SET_OFFBOTTOM = %01000000 332 | SET_OFFLEFT = %00100000 333 | SET_OFFRIGHT = %00010000 334 | SET_OFFMENU = %00001000 335 | 336 | ; values of currentMode 337 | ; bit numbers 338 | UNDERLINE_BIT = 7 339 | BOLD_BIT = 6 340 | REVERSE_BIT = 5 341 | ITALIC_BIT = 4 342 | OUTLINE_BIT = 3 343 | SUPERSCRIPT_BIT = 2 344 | SUBSCRIPT_BIT = 1 345 | ; masks 346 | SET_UNDERLINE = %10000000 347 | SET_BOLD = %01000000 348 | SET_REVERSE = %00100000 349 | SET_ITALIC = %00010000 350 | SET_OUTLINE = %00001000 351 | SET_SUPERSCRIPT = %00000100 352 | SET_SUBSCRIPT = %00000010 353 | SET_PLAINTEXT = %00000000 354 | 355 | ; Process control variable 356 | ; bit numbers 357 | RUNABLE_BIT = 7 358 | BLOCKED_BIT = 6 359 | FROZEN_BIT = 5 360 | NOTIMER_BIT = 4 361 | ; masks 362 | SET_RUNABLE = %10000000 363 | SET_BLOCKED = %01000000 364 | SET_FROZEN = %00100000 365 | SET_NOTIMER = %00010000 366 | 367 | ; mouseOn 368 | ; bit numbers 369 | MOUSEON_BIT = 7 370 | MENUON_BIT = 6 371 | ICONSON_BIT = 5 372 | ; masks 373 | SET_MSE_ON = %10000000 374 | SET_MENUON = %01000000 375 | SET_ICONSON = %00100000 376 | 377 | ; pressFlag 378 | ; bit numbers 379 | KEYPRESS_BIT = 7 380 | INPUT_BIT = 6 381 | MOUSE_BIT = 5 382 | ; masks 383 | SET_KEYPRESS = %10000000 384 | SET_INPUTCHG = %01000000 385 | SET_MOUSE = %00100000 386 | 387 | ; dispBufferOn 388 | ST_WRGS_FORE = $20 389 | ST_WR_BACK = $40 390 | ST_WR_FORE = $80 391 | 392 | ; alarmSetFlag 393 | ALARMMASK = %00000100 394 | 395 | ; PutDecimal 396 | ; leading zeroes 397 | SET_NOSURPRESS = %00000000 398 | SET_SURPRESS = %01000000 399 | ; justification 400 | SET_RIGHTJUST = %00000000 401 | SET_LEFTJUST = %10000000 402 | 403 | CLICK_COUNT = 30 404 | 405 | ; icons, menus status flags 406 | ST_FLASH = $80 407 | ST_INVERT = $40 408 | ST_LD_AT_ADDR = $01 409 | ST_LD_DATA = $80 410 | ST_PR_DATA = $40 411 | ST_WR_PR = $40 412 | 413 | CLR_SAVE = %01000000 414 | CONSTRAINED = %01000000 415 | UN_CONSTRAINED = %00000000 416 | FG_SAVE = %10000000 417 | 418 | FUTURE1 = 7 419 | FUTURE2 = 8 420 | FUTURE3 = 9 421 | FUTURE4 = 10 422 | USELAST = 127 423 | SHORTCUT = 128 424 | 425 | ; C128 640 support 426 | ADD1_W = $2000 427 | ADD1_B = $20 428 | DOUBLE_W = $8000 429 | DOUBLE_B = $80 430 | 431 | ; C128 bsw128 432 | 433 | ARROW = 0 ; pass this to SetMsePic 434 | 435 | GR_40 = 0 ; use these two to test 436 | GR_80 = $80 ; graphMode 437 | -------------------------------------------------------------------------------- /cvt.s: -------------------------------------------------------------------------------- 1 | 2 | ; t&s (record block, info block) and timestamp matching 3 | ; geoWrite_en_2.1_1988-07-06 4 | 5 | .SEGMENT "DIRENTRY" 6 | 7 | .byte 131 8 | .byte $06, $0b ; t&s of record block, irrelevant in CVT 9 | .byte "GEOWRITE" 10 | .res (16 - 8), $a0 11 | .byte $06, $03 ; t&s of info block, irrelevant in CVT 12 | .byte 1 ; VLIR structure 13 | .byte 6 ; APPLICATION 14 | .byte 88, 7, 6, 13, 16 15 | 16 | .word 141 ; size in 254-byte blocks 17 | .byte "PRG formatted GEOS file" 18 | 19 | .segment "FILEINFO" 20 | .incbin "build/current/geoWrite-fhdr.bin", 2 21 | 22 | .segment "RECORDS" 23 | 24 | .import __VLIR0_START__, __VLIR0_LAST__ 25 | .import __VLIR1_START__, __VLIR1_LAST__ 26 | .import __VLIR2_START__, __VLIR2_LAST__ 27 | .import __VLIR3_START__, __VLIR3_LAST__ 28 | .import __VLIR4_START__, __VLIR4_LAST__ 29 | .import __VLIR5_START__, __VLIR5_LAST__ 30 | .import __VLIR6_START__, __VLIR6_LAST__ 31 | .import __VLIR7_START__, __VLIR7_LAST__ 32 | .import __VLIR8_START__, __VLIR8_LAST__ 33 | 34 | .byte .lobyte ((__VLIR0_LAST__ - __VLIR0_START__ - 1) / 254) + 1 35 | .byte .lobyte ((__VLIR0_LAST__ - __VLIR0_START__ - 1) .MOD 254) + 2 36 | 37 | .byte .lobyte ((__VLIR1_LAST__ - __VLIR1_START__ - 1) / 254) + 1 38 | .byte .lobyte ((__VLIR1_LAST__ - __VLIR1_START__ - 1) .MOD 254) + 2 39 | 40 | .byte .lobyte ((__VLIR2_LAST__ - __VLIR2_START__ - 1) / 254) + 1 41 | .byte .lobyte ((__VLIR2_LAST__ - __VLIR2_START__ - 1) .MOD 254) + 2 42 | 43 | .byte .lobyte ((__VLIR3_LAST__ - __VLIR3_START__ - 1) / 254) + 1 44 | .byte .lobyte ((__VLIR3_LAST__ - __VLIR3_START__ - 1) .MOD 254) + 2 45 | 46 | .byte .lobyte ((__VLIR4_LAST__ - __VLIR4_START__ - 1) / 254) + 1 47 | .byte .lobyte ((__VLIR4_LAST__ - __VLIR4_START__ - 1) .MOD 254) + 2 48 | 49 | .byte .lobyte ((__VLIR5_LAST__ - __VLIR5_START__ - 1) / 254) + 1 50 | .byte .lobyte ((__VLIR5_LAST__ - __VLIR5_START__ - 1) .MOD 254) + 2 51 | 52 | .byte .lobyte ((__VLIR6_LAST__ - __VLIR6_START__ - 1) / 254) + 1 53 | .byte .lobyte ((__VLIR6_LAST__ - __VLIR6_START__ - 1) .MOD 254) + 2 54 | 55 | .byte .lobyte ((__VLIR7_LAST__ - __VLIR7_START__ - 1) / 254) + 1 56 | .byte .lobyte ((__VLIR7_LAST__ - __VLIR7_START__ - 1) .MOD 254) + 2 57 | 58 | .byte .lobyte ((__VLIR8_LAST__ - __VLIR8_START__ - 1) / 254) + 1 59 | .byte .lobyte ((__VLIR8_LAST__ - __VLIR8_START__ - 1) .MOD 254) + 2 60 | 61 | .segment "VLIR0" 62 | .incbin "build/current/geoWrite-0.bin" 63 | 64 | .segment "VLIR1" 65 | .incbin "build/current/geoWrite-1.bin" 66 | 67 | .segment "VLIR2" 68 | .incbin "build/current/geoWrite-2.bin" 69 | 70 | .segment "VLIR3" 71 | .incbin "build/current/geoWrite-3.bin" 72 | 73 | .segment "VLIR4" 74 | .incbin "build/current/geoWrite-4.bin" 75 | 76 | .segment "VLIR5" 77 | .incbin "build/current/geoWrite-5.bin" 78 | 79 | .segment "VLIR6" 80 | .incbin "build/current/geoWrite-6.bin" 81 | 82 | .segment "VLIR7" 83 | .incbin "build/current/geoWrite-7.bin" 84 | 85 | .segment "VLIR8" 86 | .incbin "build/current/geoWrite-8.bin" 87 | 88 | -------------------------------------------------------------------------------- /de/graph1.s: -------------------------------------------------------------------------------- 1 | graph_rulerbuttons: 2 | .byte $A8,$11,$45,$27,$7C,$0F,$74,$5D 3 | .byte $C0,$F9,$DD,$D5,$DD,$F0,$2B,$A2 4 | .byte $1F,$00,$43,$BB,$A1,$77,$5D,$D5 5 | .byte $13,$80,$7B,$A8,$E8,$BB,$1B,$BA 6 | .byte $2C,$04,$23,$E0,$24,$9F,$01,$8F 7 | .byte $80,$A8,$11,$65,$48,$7C,$02,$46 8 | .byte $49,$40,$89,$51,$14,$91,$10,$2A 9 | .byte $A2,$11,$00,$C2,$2A,$B3,$52,$51 10 | .byte $55,$94,$00,$12,$28,$8C,$AA,$A1 11 | .byte $2B,$2A,$06,$63,$E0,$65,$91,$02 12 | .byte $48,$80,$A8,$11,$55,$86,$7C,$04 13 | .byte $75,$49,$C0,$89,$DD,$1C,$9D,$10 14 | .byte $2A,$A2,$11,$01,$FB,$2B,$AD,$72 15 | .byte $5D,$D5,$55,$80,$23,$A8,$EA,$BB 16 | .byte $11,$3A,$AA,$3F,$23,$E0,$23,$11 17 | .byte $00,$88,$80,$A8,$11,$4D,$41,$7C 18 | .byte $08,$44,$C9,$80,$89,$91,$14,$85 19 | .byte $10,$12,$A2,$11,$00,$C2,$2B,$21 20 | .byte $52,$51,$95,$34,$80,$42,$28,$89 21 | .byte $AA,$89,$2A,$6A,$06,$23,$E0,$27 22 | .byte $91,$01,$08,$80,$A8,$1D,$45,$2E 23 | .byte $7C,$0F,$74,$49,$50,$F9,$5D,$D4 24 | .byte $9D,$F0,$13,$BB,$9F,$00,$42,$3A 25 | .byte $A1,$52,$5D,$4D,$13,$80,$7B,$AE 26 | .byte $E8,$AB,$31,$2A,$2C,$04,$73,$E0 27 | .byte $75,$9F,$03,$CF,$80,$28,$00,$28 28 | .byte $FF 29 | -------------------------------------------------------------------------------- /de/graph2.s: -------------------------------------------------------------------------------- 1 | graph_create: 2 | .byte $06,$FF,$82,$FE,$80,$05,$00,$82 3 | .byte $03,$80,$05,$00,$BA,$03,$80,$00 4 | .byte $01,$80,$77,$00,$03,$80,$00,$01 5 | .byte $80,$33,$00,$03,$87,$3E,$73,$CE 6 | .byte $33,$39,$E3,$8D,$B8,$D9,$9B,$33 7 | .byte $6D,$B3,$8F,$B0,$71,$9F,$33,$7D 8 | .byte $B3,$8C,$30,$19,$98,$33,$61,$B3 9 | .byte $8D,$B0,$D9,$9B,$33,$6D,$B3,$87 10 | .byte $30,$70,$CE,$33,$39,$B3,$80,$05 11 | .byte $00,$82,$03,$80,$05,$00,$82,$03 12 | .byte $80,$05,$00,$81,$03,$07,$FF,$81 13 | .byte $7F,$06,$FF 14 | 15 | graph_exit: 16 | .byte $06,$FF,$82,$FE,$80 17 | .byte $05,$00,$82,$03,$80,$05,$00,$BA 18 | .byte $03,$80,$00,$0E,$00,$00,$00,$03 19 | .byte $80,$00,$06,$00,$00,$00,$03,$B3 20 | .byte $39,$F6,$71,$C7,$1C,$F3,$B3,$6D 21 | .byte $C6,$DB,$6D,$B6,$DB,$9E,$7D,$86 22 | .byte $79,$C7,$3E,$DB,$9E,$61,$86,$D8 23 | .byte $61,$B0,$DB,$8C,$6D,$86,$DB,$6D 24 | .byte $B6,$DB,$8C,$39,$86,$79,$C7,$1C 25 | .byte $DB,$80,$05,$00,$82,$03,$80,$05 26 | .byte $00,$82,$03,$80,$05,$00,$81,$03 27 | .byte $07,$FF,$81,$7F,$06,$FF 28 | -------------------------------------------------------------------------------- /de/graph3.s: -------------------------------------------------------------------------------- 1 | graph_drive: 2 | .byte $05,$FF,$82,$FE,$80,$04,$00,$82 3 | .byte $03,$80,$04,$00,$B2,$03,$86,$0E 4 | .byte $00,$00,$01,$83,$86,$18,$00,$00 5 | .byte $01,$83,$86,$3C,$30,$CE,$7D,$B3 6 | .byte $86,$18,$30,$DB,$71,$E3,$86,$1B 7 | .byte $9F,$9F,$61,$C3,$86,$18,$1F,$98 8 | .byte $61,$C3,$86,$18,$0F,$1B,$61,$E3 9 | .byte $87,$D8,$0F,$0E,$61,$B3,$80,$04 10 | .byte $00,$82,$03,$80,$04,$00,$82,$03 11 | .byte $80,$04,$00,$81,$03,$06,$FF,$81 12 | .byte $7F,$05,$FF 13 | -------------------------------------------------------------------------------- /de/graph4.s: -------------------------------------------------------------------------------- 1 | graph_write_protected: 2 | .byte $06,$FF,$82,$FE,$80,$05,$00,$82 3 | .byte $03,$80,$05,$00,$89,$03,$B0,$00 4 | .byte $00,$0C,$00,$00,$03,$B0,$05,$00 5 | .byte $AD,$03,$B3,$DE,$39,$EC,$E7,$DC 6 | .byte $F3,$B6,$DB,$6D,$CD,$B7,$36,$DB 7 | .byte $B6,$DB,$6D,$8D,$F6,$3E,$DB,$B6 8 | .byte $DB,$6D,$8D,$86,$30,$DB,$B6,$DB 9 | .byte $6D,$8D,$B6,$36,$DB,$B3,$DB,$39 10 | .byte $8C,$E6,$1C,$DB,$80,$C0,$04,$00 11 | .byte $83,$03,$83,$80,$04,$00,$82,$03 12 | .byte $80,$05,$00,$81,$03,$07,$FF,$81 13 | .byte $7F,$06,$FF 14 | -------------------------------------------------------------------------------- /de/graph5.s: -------------------------------------------------------------------------------- 1 | graph_next: 2 | .byte $06,$FF,$E2,$02,$81,$80,$04,$00 3 | .byte $81,$03,$B7,$9C,$C9,$00,$60,$00 4 | .byte $C3,$9C,$C0,$00,$60,$00,$C3,$9E 5 | .byte $CF,$1E,$7C,$79,$E3,$9E,$D9,$B3 6 | .byte $76,$CC,$C3,$9B,$CF,$B0,$66,$C0 7 | .byte $C3,$9B,$D9,$B0,$66,$78,$C3,$99 8 | .byte $D9,$B0,$66,$0C,$C3,$99,$D9,$B3 9 | .byte $66,$CC,$C3,$98,$CF,$9E,$66,$78 10 | .byte $73,$80,$04,$00,$82,$03,$80,$04 11 | .byte $00,$81,$03,$06,$FF,$81,$7F,$05 12 | .byte $FF 13 | graph_all: 14 | .byte $06,$FF,$E2,$02,$81,$80,$04,$00 15 | .byte $81,$03,$B7,$80,$18,$77,$00,$00 16 | .byte $03,$80,$18,$33,$00,$00,$03,$80 17 | .byte $3C,$33,$3C,$78,$03,$80,$3C,$33 18 | .byte $66,$CC,$03,$80,$66,$33,$66,$C0 19 | .byte $03,$80,$66,$33,$7E,$78,$03,$80 20 | .byte $FF,$33,$60,$0C,$03,$80,$C3,$33 21 | .byte $66,$CC,$03,$80,$C3,$33,$3C,$78 22 | .byte $03,$80,$04,$00,$82,$03,$80,$04 23 | .byte $00,$81,$03,$06,$FF,$81,$7F,$05 24 | .byte $FF 25 | -------------------------------------------------------------------------------- /de/scantextscrap_strings.inc: -------------------------------------------------------------------------------- 1 | txt_textscrap_incompat: 2 | .byte BOLDON 3 | .byte "\"Text Scrap\"" 4 | .byte " nicht" 5 | .byte GOTOXY 6 | .word 80 7 | .byte 64 8 | .byte "f}r V2.1" 9 | .byte 0 10 | 11 | txt_reading_textscrap: 12 | .byte "lese textScrap",0 13 | -------------------------------------------------------------------------------- /de/strings1.inc: -------------------------------------------------------------------------------- 1 | txt_geowrite_info: 2 | .byte "geoWrite Info",0 3 | txt_geos: 4 | .byte "geos",0 5 | txt_file: 6 | .byte "Datei",0 7 | txt_edit: 8 | .byte "Edit",0 9 | txt_font: 10 | .byte "Schrift",0 11 | txt_style: 12 | .byte "Stil",0 13 | txt_options: 14 | .byte "Opt",0 15 | txt_page: 16 | .byte "Seite",0 17 | txt_close: 18 | .byte "schlie~en",0 19 | txt_update: 20 | .byte "aktualisieren",0 21 | txt_preview: 22 | .byte "]bersicht",0 23 | txt_recover: 24 | .byte "wiederherstellen",0 25 | txt_rename: 26 | .byte "umbenennen",0 27 | txt_print: 28 | .byte "drucken",0 29 | txt_quit: 30 | .byte "Ende",0 31 | 32 | txt_cut: 33 | .byte "ausschneiden" 34 | .byte GOTOX 35 | .word $7E 36 | .byte CBM_LOGO,BOLDON,"X",PLAINTEXT,0 37 | 38 | txt_copy: 39 | .byte "kopieren" 40 | .byte GOTOX 41 | .word $7E 42 | .byte CBM_LOGO,BOLDON,"C",PLAINTEXT,$00 43 | 44 | txt_paste: 45 | .byte "einkleben",0 46 | 47 | txt_text: 48 | .byte "Text" 49 | .byte GOTOX 50 | .word $BE 51 | .byte CBM_LOGO,BOLDON,"T",PLAINTEXT,0 52 | 53 | txt_picture: 54 | .byte "Bild" 55 | .byte GOTOX 56 | .word $BE 57 | .byte CBM_LOGO,BOLDON,"W",PLAINTEXT,0 58 | 59 | txt_search: 60 | .byte "suchen" 61 | .byte GOTOX 62 | .word $A8 63 | .byte CBM_LOGO,BOLDON,"S",PLAINTEXT,0 64 | 65 | txt_find_next: 66 | .byte "weiter suchen" 67 | .byte GOTOX 68 | .word $A8 69 | .byte CBM_LOGO,BOLDON,"N",PLAINTEXT,0 70 | 71 | txt_change: 72 | .byte "ersetzen->suchen" 73 | .byte GOTOX 74 | .word $A8 75 | .byte CBM_LOGO,BOLDON,"Y",PLAINTEXT,0 76 | 77 | txt_previous_page: 78 | .byte "zur}ck" 79 | .byte GOTOX 80 | .word $AE 81 | .byte CBM_LOGO 82 | .byte ESC_GRAPHICS 83 | .byte MOVEPENTO 84 | .word $BF 85 | .byte 21 86 | .byte LINETO 87 | .word $B9 88 | .byte 21 89 | .byte LINETO 90 | .word $BB 91 | .byte $13 92 | .byte LINETO 93 | .word $BB 94 | .byte $17 95 | .byte LINETO 96 | .word $B9 97 | .byte 21 98 | .byte NULL 99 | 100 | txt_next_page: 101 | .byte "vor" 102 | .byte GOTOX 103 | .word $AE 104 | .byte CBM_LOGO,BOLDON,"+",PLAINTEXT,0 105 | 106 | txt_goto_page: 107 | .byte "gehe auf Seite" 108 | .byte GOTOX 109 | .word $AE 110 | .byte CBM_LOGO,BOLDON,"G",PLAINTEXT,0 111 | 112 | txt_page_break: 113 | .byte "Seitenende" 114 | .byte GOTOX 115 | .word $AE 116 | .byte CBM_LOGO,BOLDON,"L",PLAINTEXT,0 117 | 118 | txt_set_first_page: 119 | .byte "erste Seiten",0 120 | 121 | txt_plain_text: 122 | .byte " normal" 123 | .byte GOTOX 124 | .word $EE 125 | .byte CBM_LOGO,BOLDON,"P",PLAINTEXT,$00 126 | 127 | txt_bold: 128 | .byte " ",BOLDON 129 | .byte "fett" 130 | .byte PLAINTEXT,GOTOX 131 | .word $EE 132 | .byte CBM_LOGO,BOLDON,"B",PLAINTEXT,$00 133 | 134 | txt_italic: 135 | .byte " ",ITALICON 136 | .byte "kursiv" 137 | .byte PLAINTEXT,GOTOX 138 | .word $EE 139 | .byte CBM_LOGO,BOLDON,"I",PLAINTEXT,$00 140 | 141 | txt_outline: 142 | .byte " ",OUTLINEON 143 | .byte "Kontur" 144 | .byte PLAINTEXT,GOTOX 145 | .word $EE 146 | .byte CBM_LOGO,BOLDON,"O",PLAINTEXT,$00 147 | 148 | txt_underline: 149 | .byte " ",ULINEON 150 | .byte "unterstrichen" 151 | .byte PLAINTEXT,GOTOX 152 | .word $EE 153 | .byte CBM_LOGO,BOLDON,"U",PLAINTEXT,$00 154 | 155 | txt_superscript: 156 | .byte " hoch" 157 | .byte GOTOX 158 | .word $EE 159 | .byte CBM_LOGO,BOLDON,">",PLAINTEXT,$00 160 | 161 | txt_subscript: 162 | .byte " tief" 163 | .byte GOTOX 164 | .word $EE 165 | .byte CBM_LOGO,BOLDON,"<",PLAINTEXT,$00 166 | 167 | txt_xx_point: 168 | .byte " xx Punkt",0 169 | txt_xx_point_len = * - txt_xx_point 170 | .byte " xx Punkt",0 171 | .byte " xx Punkt",0 172 | .byte " xx Punkt",0 173 | .byte " xx Punkt",0 174 | .byte " xx Punkt",0 175 | .byte " xx Punkt",0 176 | .byte " xx Punkt",0 177 | 178 | -------------------------------------------------------------------------------- /de/strings2.inc: -------------------------------------------------------------------------------- 1 | txt_hide_pictures: 2 | .byte "* Bilder",0 3 | 4 | txt_open_header: 5 | .byte PLAINTEXT, PLAINTEXT ; [XXX] 6 | .byte "Kopfzeilen" 7 | .byte GOTOX 8 | .word $A8 9 | .byte $80 ; C= 10 | .byte BOLDON 11 | .byte "H" 12 | .byte PLAINTEXT,0 13 | 14 | txt_open_footer: 15 | .byte PLAINTEXT,PLAINTEXT 16 | .byte "Fu~zeilen" 17 | .byte GOTOX 18 | .word $A8 19 | .byte $80 ; C= 20 | .byte BOLDON 21 | .byte "F" 22 | .byte PLAINTEXT,0 23 | 24 | txt_select_page: 25 | .byte "Seite w{hlen" 26 | .byte GOTOX 27 | .word $A8 28 | .byte $80 ; C= 29 | .byte BOLDON 30 | .byte "V" 31 | .byte PLAINTEXT,0 32 | 33 | txt_make_full_page_wide: 34 | .byte "Volle Breite",0 35 | 36 | txt_title_page: 37 | .byte " Titel",0 38 | 39 | txt_nlq_spacing: 40 | .byte " NLQ-Abst{nde",0 41 | 42 | txt_swapping_geowrite: 43 | .byte "tauscht geoWrite aus",0 44 | 45 | txt_ioerror: 46 | .byte BOLDON,"Fehler I:" 47 | 48 | txt_ioerror_errcode: 49 | .byte " " 50 | .byte " ",0 51 | 52 | txt_insufficient_disk_space: 53 | .byte BOLDON 54 | .byte "Disk voll",0 55 | 56 | txt_page_too_big: 57 | .byte BOLDON 58 | .byte "Seite zu gro~",0 59 | 60 | txt_reading_page: 61 | .byte "bei Lesen",0 62 | 63 | txt_writing_page: 64 | .byte "bei Schreiben",0 65 | 66 | txt_no_prev_page: 67 | .byte BOLDON 68 | .byte "Geht nicht",0 69 | 70 | txt_keyword_header: 71 | .byte "KOPFZEILE",0 72 | 73 | txt_keyword_footer: 74 | .byte "FUSSZEILE",0 75 | -------------------------------------------------------------------------------- /de/strings3.inc: -------------------------------------------------------------------------------- 1 | txt_same_disk: 2 | .byte BOLDON 3 | .byte "Bei nur 1 Laufwerk" 4 | .byte GOTOXY 5 | .word 80 6 | .byte 64 7 | .byte "m}ssen geoWrite und Dokument" 8 | .byte GOTOXY 9 | .word 80 10 | .byte 80 11 | .byte "auf selber Disk stehen." 12 | .byte 0 13 | -------------------------------------------------------------------------------- /de/strings4a.inc: -------------------------------------------------------------------------------- 1 | txt_showhide: 2 | txt_show: 3 | .byte PLAINTEXT,PLAINTEXT 4 | txt_show_len = * - txt_show 5 | txt_hide: 6 | .byte "* " 7 | .assert * - txt_hide = txt_show_len, error; need to be the same size 8 | 9 | txt_photoscrap_too_new: 10 | .byte BOLDON 11 | .byte "\"photo Scrap\" nicht" 12 | .byte GOTOXY 13 | .word 80 14 | .byte 64 15 | .byte "f}r V2.1" 16 | .byte 0 17 | 18 | txt_picture_area_full: 19 | .byte BOLDON 20 | .byte "Bildbereich der Datei voll." 21 | .byte 0 22 | 23 | txt_no_photoscrap: 24 | .byte BOLDON 25 | .byte "Keine \"photoScrap\"" 26 | .byte GOTOXY 27 | .word 80 28 | .byte 64 29 | .byte "Datei auf Diskette" 30 | .byte 0 31 | 32 | txt_photoscrap_too_big: 33 | .byte BOLDON 34 | .byte "photoScrap zu gro~." 35 | .byte 0 36 | -------------------------------------------------------------------------------- /de/strings4b.inc: -------------------------------------------------------------------------------- 1 | txt_cant_copy_pic: 2 | .byte BOLDON 3 | .byte "Bild nicht in" 4 | .byte GOTOXY 5 | .word 80 6 | .byte 64 7 | .byte "Scrap zu }bernehmen." 8 | .byte 0 9 | 10 | txt_copying_photscrap: 11 | .byte "kopiere photoScrap in" 12 | .byte GOTOXY 13 | .word 80 14 | .byte 80 15 | .byte "Datendatei" 16 | .byte 0 17 | 18 | txt_page_too_big_inserting_break: 19 | .byte BOLDON 20 | .byte "Seite zu gro~ --" 21 | .byte GOTOXY 22 | .word 80 23 | .byte 64 24 | .byte "F}ge neue Seitengrenze ein" 25 | .byte 0 26 | 27 | txt_disk_near_full: 28 | .byte BOLDON 29 | .byte "WARNUNG!" 30 | .byte PLAINTEXT,GOTOXY 31 | .word 80 32 | .byte 64 33 | .byte "Diskette fast voll:" 34 | .byte GOTOXY 35 | .word 80 36 | .byte 80 37 | .byte "zuerst Dateien von Diskette" 38 | .byte GOTOXY 39 | .word 80 40 | .byte 96 41 | .byte "l|schen/kopieren." 42 | .byte 0 43 | 44 | txt_too_many_pages: 45 | .byte BOLDON 46 | .byte "Wegen zu vieler Seiten" 47 | .byte GOTOXY 48 | .word 80 49 | .byte 64 50 | .byte "geht das Textende verloren." 51 | .byte 0 52 | 53 | txt_cant_add_pages: 54 | .byte BOLDON 55 | .byte "Kein Platz f}r weitere" 56 | .byte GOTOXY 57 | .word 80 58 | .byte 64 59 | .byte "Seiten: Seitengrenze wird" 60 | .byte GOTOXY 61 | .word 80 62 | .byte 80 63 | .byte "nicht gesetzt." 64 | .byte 0 65 | -------------------------------------------------------------------------------- /de/strings5.inc: -------------------------------------------------------------------------------- 1 | aboutText: 2 | .byte BOLDON,"geoWrite von Tony Requist" 3 | .byte GOTOXY 4 | .word 80 5 | .byte 64 6 | .byte "Version 2.1 f}r den C64" 7 | .byte GOTOXY 8 | .word 80 9 | .byte 80 10 | .byte "Copyright 1985, 1986, 1987" 11 | .byte GOTOXY 12 | .word 80 13 | .byte 96 14 | .byte "Berkeley Softworks",0 15 | 16 | txt_accessory_disk_full: 17 | .byte BOLDON 18 | .byte "Kein Diskspeicher frei" 19 | .byte GOTOXY 20 | .word 80 21 | .byte 64 22 | .byte "f}r Hilfsmittel." 23 | .byte 0 24 | 25 | txt_please_select_option: 26 | .byte BOLDON 27 | .byte "Bitte Option ausw{hlen:" 28 | .byte PLAINTEXT,0 29 | 30 | txt_new_document: 31 | .byte "Neues Dokument" 32 | .byte 0 33 | 34 | txt_existing_document: 35 | .byte "Existierendes Dokument" 36 | .byte 0 37 | 38 | txt_to_desktop: 39 | .byte "Nach deskTop" 40 | .byte 0 41 | 42 | txt_insert_new_disk: 43 | .byte BOLDON 44 | .byte "Neue Diskette in" 45 | .byte GOTOXY 46 | .word 80 47 | .byte 64 48 | .byte "Laufwerk einlegen." 49 | .byte 0 50 | 51 | txt_file_exists: 52 | .byte BOLDON 53 | .byte "Dateiname schon" 54 | .byte GOTOXY 55 | .word 80 56 | .byte 64 57 | .byte "vergeben" 58 | .byte 0 59 | 60 | txt_document_version_error: 61 | .byte BOLDON 62 | .byte "Datenfile von neuerer Version als V2.1" 63 | .byte 0 64 | 65 | txt_converting_file: 66 | .byte BOLDON 67 | .byte "Konvertiere Datei f}r " 68 | .byte "V2." 69 | txt_converting_file_digit: 70 | .byte "1" 71 | .byte 0 72 | 73 | txt_converting_error: 74 | .byte "bei Dateikonvertierung" 75 | .byte 0 76 | 77 | txt_on_disk: 78 | .byte BOLDON 79 | .byte "Auf Disk:" 80 | .byte PLAINTEXT,0 81 | 82 | txt_warning: 83 | .byte BOLDON 84 | .byte "WARNUNG!" 85 | .byte 0 86 | 87 | txt_file_is_write_protected: 88 | .byte "Diese Datei ist schreibgesch}tzt." 89 | .byte 0 90 | 91 | txt_cannot_recover: 92 | .byte BOLDON 93 | .byte "Datei nicht lesbar" 94 | .byte 0 95 | 96 | txt_enter_filename: 97 | .byte BOLDON 98 | .byte "Neuer Dateiname:" 99 | .byte PLAINTEXT,0 100 | 101 | txt_opening_file: 102 | .byte "|ffne Datei" 103 | .byte 0 104 | 105 | txt_creating_file: 106 | .byte "Datei entsteht" 107 | .byte 0 108 | 109 | txt_running_accessory: 110 | .byte "starte Hilfsmittel" 111 | .byte 0 112 | 113 | txt_cannot_run_accessory: 114 | .byte BOLDON 115 | .byte "Hilfsmittel nicht in Kopf-" 116 | .byte GOTOXY 117 | .word 80 118 | .byte 64 119 | .byte "oder Fu~zeile verf}gbar" 120 | .byte 0 121 | 122 | txt_filename_exists: 123 | .byte BOLDON 124 | .byte "Dateiname schon vergeben" 125 | .byte 0 126 | -------------------------------------------------------------------------------- /de/strings6.inc: -------------------------------------------------------------------------------- 1 | txt_no_next_page: 2 | .byte BOLDON 3 | .byte "Letzte Seite" 4 | .byte 0 5 | 6 | txt_cannot_go_to_page: 7 | .byte BOLDON 8 | .byte "Seite nicht erreichbar" 9 | .byte 0 10 | 11 | txt_enter_page_to_go_to: 12 | .byte BOLDON 13 | .byte "Wechsel auf Seite:" 14 | .byte PLAINTEXT,0 15 | 16 | txt_enter_page_number: 17 | .byte BOLDON 18 | .byte "Seitenzahl f}r" 19 | .byte 0 20 | 21 | txt_for_first_page: 22 | .byte "erste Seite" 23 | .byte PLAINTEXT,0 24 | 25 | txt_bad_value: 26 | .byte BOLDON 27 | .byte "Falscher Wert" 28 | .byte 0 29 | 30 | txt_del_last_char: 31 | .byte BOLDON 32 | .byte "Letztes Zeichen der" 33 | .byte 0 34 | 35 | txt_of_prev_page: 36 | .byte "vorigen Seite l|schen?" 37 | .byte 0 38 | 39 | txt_open: 40 | .byte PLAINTEXT,PLAINTEXT 41 | txt_open_len = * - txt_open 42 | txt_close: 43 | .byte "* " 44 | .assert * - txt_close = txt_open_len, error; need to be the same size 45 | 46 | txt_string_not_found: 47 | .byte BOLDON 48 | .byte "nicht gefunden" 49 | .byte 0 50 | 51 | txt_search_replace: 52 | .byte BOLDON 53 | .byte "Suchen / Ersetzen" 54 | .byte 0 55 | 56 | txt_search_for: 57 | .byte "Suche nach" 58 | .byte 0 59 | 60 | txt_replace_with: 61 | .byte "Ersetze mit" 62 | .byte 0 63 | 64 | txt_whole_word: 65 | .byte "ganzes Wort" 66 | .byte GOTOX 67 | .word 162 68 | .byte "Wortteil" 69 | .byte 0 70 | 71 | txt_all_pages: 72 | .byte "Alle Seiten" 73 | .byte GOTOX 74 | .word 162 75 | .byte "Nur diese Seite" 76 | .byte 0 77 | -------------------------------------------------------------------------------- /de/strings7.inc: -------------------------------------------------------------------------------- 1 | txt_printer_is_inaccessible: 2 | .byte BOLDON 3 | .byte "Drucker nicht ansprechbar" 4 | .byte PLAINTEXT,0 5 | 6 | txt_printing: 7 | .byte BOLDON 8 | .byte " Drucke..." 9 | .byte 0 10 | 11 | txt_previewing: 12 | .byte BOLDON 13 | .byte "]bersicht..." 14 | .byte 0 15 | 16 | txt_print: 17 | .byte BOLDON 18 | .byte "Drucke..." 19 | .byte 0 20 | 21 | txt_high_draft_nlq: 22 | .byte "Hoch" 23 | .byte GOTOX 24 | .word $9F 25 | .byte "Entwf" 26 | .byte GOTOX 27 | .word $D7 28 | .byte "NLQ" 29 | .byte 0 30 | 31 | txt_from_to_page: 32 | .byte "Von Seite" 33 | .byte GOTOX 34 | .word $AA 35 | .byte "bis Seite" 36 | .byte 0 37 | 38 | txt_single_tractor: 39 | .byte "Einzelblatt" 40 | .byte GOTOX 41 | .word $BA 42 | .byte "Endlospapier" 43 | .byte 0 44 | 45 | txt_insert_next_sheet: 46 | .byte BOLDON 47 | .byte "Bitte legen Sie das" 48 | .byte 0 49 | 50 | txt_to_continue_printing: 51 | .byte "n{chste Blatt Papier ein, um" 52 | .byte GOTOXY 53 | .word 80 54 | .byte 64 55 | .byte "den Ausdruck fortzusetzen." 56 | .byte 0 57 | 58 | txt_date_token: 59 | .byte "DATUM" 60 | txt_date_token_len = * - txt_date_token 61 | .byte 0 62 | 63 | txt_time_token: 64 | .byte "ZEIT" 65 | txt_time_token_len = * - txt_time_token 66 | .byte 0 67 | 68 | txt_page_token: 69 | .byte "SEITE" 70 | txt_page_token_len = * - txt_page_token 71 | .byte 0 72 | 73 | txt_jan: .byte "Januar",0 74 | txt_feb: .byte "Februar",0 75 | txt_mar: .byte "M{rz",0 76 | txt_apr: .byte "April",0 77 | txt_may: .byte "Mai",0 78 | txt_jun: .byte "Juni",0 79 | txt_jul: .byte "Juli",0 80 | txt_aug: .byte "August",0 81 | txt_sep: .byte "September",0 82 | txt_oct: .byte "Oktober",0 83 | txt_nov: .byte "November",0 84 | txt_dec: .byte "Dezember",0 85 | 86 | -------------------------------------------------------------------------------- /de/strings_init.inc: -------------------------------------------------------------------------------- 1 | txt_needs_conversion: 2 | .byte BOLDON 3 | .byte "Datei ist vor Ausdruck" 4 | .byte GOTOXY 5 | .word 80 6 | .byte 64 7 | .byte "von geoWrite zu |ffnen!" 8 | .byte 0 9 | 10 | txt_serial_mismatch: 11 | .byte BOLDON 12 | .byte "Bitte neu starten." 13 | .byte GOTOXY 14 | .word 80 15 | .byte 64 16 | .byte "Gleiche Diskette verwenden" 17 | .byte GOTOXY 18 | .word 80 19 | .byte 80 20 | .byte "wie bei Installation von" 21 | .byte GOTOXY 22 | .word 80 23 | .byte 96 24 | .byte "geoWrite." 25 | .byte 0 26 | 27 | txt_install_write_protected: 28 | .byte BOLDON 29 | .byte "geoWrite nicht auf" 30 | .byte GOTOXY 31 | .word 80 32 | .byte 64 33 | .byte "schreibgesch}tzter Diskette" 34 | .byte GOTOXY 35 | .word 80 36 | .byte 80 37 | .byte "installierbar." 38 | .byte 0 39 | 40 | txt_error_installing: 41 | .byte BOLDON 42 | .byte "Installationsfehler" 43 | .byte GOTOXY 44 | .word 80 45 | .byte 64 46 | .byte "bei geoWrite" 47 | .byte 0 48 | 49 | txt_copy_protection: 50 | .byte BOLDON 51 | .byte "geoWrite nicht auf dieser" 52 | .byte GOTOXY 53 | .word 80 54 | .byte 64 55 | .byte "Disk installierbar. Bitte" 56 | .byte GOTOXY 57 | .word 80 58 | .byte 80 59 | .byte "Anleitung lesen!" 60 | .byte 0 61 | 62 | txt_installed: 63 | .byte BOLDON 64 | .byte "geoWrite 2.1 installiert." 65 | .byte 0 66 | -------------------------------------------------------------------------------- /en/graph1.s: -------------------------------------------------------------------------------- 1 | graph_rulerbuttons: 2 | .byte $A8,$00,$8E,$EE,$7C,$0E,$74,$5D 3 | .byte $DC,$F8,$1D,$7A,$B9,$F0,$3A,$A2 4 | .byte $1F,$00,$40,$55,$DD,$75,$DD,$D7 5 | .byte $44,$00,$22,$8B,$83,$BB,$BA,$8B 6 | .byte $C1,$00,$23,$E0,$24,$9F,$01,$8F 7 | .byte $80,$A8,$00,$88,$84,$44,$08,$46 8 | .byte $49,$14,$88,$15,$42,$91,$10,$22 9 | .byte $A2,$11,$00,$C0,$55,$09,$45,$14 10 | .byte $95,$64,$00,$22,$CA,$02,$2A,$A2 11 | .byte $CA,$01,$80,$62,$20,$65,$91,$02 12 | .byte $48,$80,$A8,$00,$8C,$C4,$44,$08 13 | .byte $65,$49,$9C,$88,$1D,$5B,$91,$10 14 | .byte $32,$A2,$11,$01,$F8,$55,$C9,$65 15 | .byte $1C,$95,$54,$00,$22,$AB,$03,$BB 16 | .byte $A2,$AA,$CF,$C0,$22,$20,$23,$11 17 | .byte $00,$88,$80,$A8,$00,$88,$84,$44 18 | .byte $08,$44,$C9,$18,$88,$19,$4A,$91 19 | .byte $10,$22,$A2,$11,$00,$C1,$54,$49 20 | .byte $45,$14,$95,$4C,$00,$22,$9A,$00 21 | .byte $A2,$A2,$9A,$41,$80,$22,$20,$27 22 | .byte $91,$01,$08,$80,$A8,$00,$EE,$84 23 | .byte $7C,$0E,$74,$49,$D4,$F8,$15,$7A 24 | .byte $91,$F0,$23,$BB,$9F,$00,$41,$DD 25 | .byte $C9,$45,$D4,$97,$44,$00,$3A,$8B 26 | .byte $83,$A2,$BA,$8B,$C1,$00,$73,$E0 27 | .byte $75,$9F,$03,$CF,$80,$28,$00,$28 28 | .byte $FF 29 | 30 | -------------------------------------------------------------------------------- /en/graph2.s: -------------------------------------------------------------------------------- 1 | graph_create: 2 | .byte $05,$FF,$82,$FE,$80,$04,$00,$82 3 | .byte $03,$80,$04,$00,$B8,$03,$8F,$80 4 | .byte $00,$00,$00,$03,$98,$C0,$00,$00 5 | .byte $60,$03,$98,$1F,$9E,$3C,$F1,$E3 6 | .byte $98,$1C,$33,$66,$63,$33,$98,$18 7 | .byte $33,$3E,$63,$33,$98,$18,$3F,$66 8 | .byte $63,$F3,$98,$18,$30,$66,$63,$03 9 | .byte $98,$D8,$33,$66,$63,$33,$8F,$98 10 | .byte $1E,$3E,$39,$E3,$80,$04,$00,$82 11 | .byte $03,$80,$04,$00,$81,$03,$06,$FF 12 | .byte $81,$7F,$05,$FF 13 | 14 | graph_exit: 15 | .byte $05,$FF,$82,$FE,$80,$04,$00,$82 16 | .byte $03,$80,$04,$00,$BE,$03,$80,$07 17 | .byte $C0,$0C,$C0,$03,$80,$0C,$60,$00 18 | .byte $C0,$03,$80,$0C,$6C,$DD,$E0,$03 19 | .byte $80,$0C,$6C,$CC,$C0,$03,$80,$0C 20 | .byte $6C,$CC,$C0,$03,$80,$0C,$6C,$CC 21 | .byte $C0,$03,$80,$0C,$6C,$CC,$C0,$03 22 | .byte $80,$0D,$ED,$CC,$C0,$03,$80,$07 23 | .byte $C7,$CC,$70,$03,$80,$00,$60,$00 24 | .byte $00,$03,$80,$04,$00,$81,$03,$06 25 | .byte $FF,$81,$7F,$05,$FF 26 | -------------------------------------------------------------------------------- /en/graph3.s: -------------------------------------------------------------------------------- 1 | graph_drive: 2 | .byte 5,%11111111 3 | .byte $80+2,%11111110,%10000000 4 | .byte 4,%00000000 5 | .byte $80+2,%00000011,%10000000 6 | .byte 4,%00000000 7 | .byte $80+55, %00000011 8 | .byte %10000000,%11111000,%00000000,%11000000,%00000000,%00000011 9 | .byte %10000000,%11001100,%00000000,%00000000,%00000000,%00000011 10 | .byte %10000000,%11000110,%11111101,%11011001,%10011110,%00000011 11 | .byte %10000000,%11000110,%11100000,%11011001,%10110011,%00000011 12 | .byte %10000000,%11000110,%11000000,%11011001,%10110011,%00000011 13 | .byte %10000000,%11000110,%11000000,%11001111,%00111111,%00000011 14 | .byte %10000000,%11000110,%11000000,%11001111,%00110000,%00000011 15 | .byte %10000000,%11001100,%11000000,%11000110,%00110011,%00000011 16 | .byte %10000000,%11111000,%11000000,%11000110,%00011110,%00000011 17 | .byte $DC+6,2 18 | .byte 1,%10000000 19 | .byte 4,%00000000 20 | .byte 1,%00000011 21 | .byte 6,%11111111 22 | .byte 1,%01111111 23 | .byte 5,%11111111 24 | .byte 0 25 | -------------------------------------------------------------------------------- /en/graph4.s: -------------------------------------------------------------------------------- 1 | graph_write_protected: 2 | .byte $05,$FF,$82,$FE,$80,$04,$00,$82 3 | .byte $03,$80,$04,$00,$C3,$03,$83,$00 4 | .byte $00,$00,$00,$03,$83,$00,$00,$00 5 | .byte $00,$03,$83,$3E,$F8,$F3,$F3,$C3 6 | .byte $83,$66,$ED,$9B,$86,$63,$83,$66 7 | .byte $CD,$9B,$06,$63,$83,$66,$CD,$9B 8 | .byte $07,$E3,$83,$66,$CD,$9B,$06,$03 9 | .byte $83,$66,$CD,$9B,$06,$63,$83,$3E 10 | .byte $CC,$F3,$03,$C3,$80,$06,$00,$00 11 | .byte $00,$03,$80,$7E,$00,$00,$00,$03 12 | .byte $06,$FF,$81,$7F,$05,$FF 13 | -------------------------------------------------------------------------------- /en/graph5.s: -------------------------------------------------------------------------------- 1 | graph_next: 2 | .byte $06,$FF,$81,$80,$04,$00,$82,$03 3 | .byte $80,$04,$00,$B8,$03,$80,$39,$80 4 | .byte $00,$60,$03,$80,$39,$80,$00,$60 5 | .byte $03,$80,$3D,$9E,$66,$F0,$03,$80 6 | .byte $3D,$B3,$66,$60,$03,$80,$37,$B3 7 | .byte $3C,$60,$03,$80,$37,$BF,$18,$60 8 | .byte $03,$80,$33,$B0,$3C,$60,$03,$80 9 | .byte $33,$B3,$66,$60,$03,$80,$31,$9E 10 | .byte $66,$38,$03,$80,$04,$00,$82,$03 11 | .byte $80,$04,$00,$81,$03,$06,$FF,$81 12 | .byte $7F,$04,$FF,$81,$FE 13 | graph_all: 14 | .byte $05,$FF,$82,$FE,$80,$04,$00,$82 15 | .byte $03,$80,$04,$00,$B8,$03,$80,$00 16 | .byte $30,$EE,$00,$03,$80,$00,$30,$66 17 | .byte $00,$03,$80,$00,$78,$66,$00,$03 18 | .byte $80,$00,$78,$66,$00,$03,$80,$00 19 | .byte $CC,$66,$00,$03,$80,$00,$CC,$66 20 | .byte $00,$03,$80,$01,$FE,$66,$00,$03 21 | .byte $80,$01,$86,$66,$00,$03,$80,$01 22 | .byte $86,$66,$00,$03,$80,$04,$00,$82 23 | .byte $03,$80,$04,$00,$81,$03,$06,$FF 24 | .byte $81,$7F,$05,$FF 25 | -------------------------------------------------------------------------------- /en/scantextscrap_strings.inc: -------------------------------------------------------------------------------- 1 | txt_textscrap_incompat: 2 | .byte BOLDON 3 | .byte "textScrap is beyond V2.1" 4 | .byte 0 5 | 6 | txt_reading_textscrap: 7 | .byte "reading textScrap",0 8 | -------------------------------------------------------------------------------- /en/strings1.inc: -------------------------------------------------------------------------------- 1 | txt_geowrite_info: 2 | .byte "geoWrite info",0 3 | txt_geos: 4 | .byte "geos",0 5 | txt_file: 6 | .byte "file",0 7 | txt_edit: 8 | .byte "edit",0 9 | txt_font: 10 | .byte "font",0 11 | txt_style: 12 | .byte "style",0 13 | txt_options: 14 | .byte "options",0 15 | txt_page: 16 | .byte "page",0 17 | txt_close: 18 | .byte "close",0 19 | txt_update: 20 | .byte "update",0 21 | txt_preview: 22 | .byte "preview",0 23 | txt_recover: 24 | .byte "recover",0 25 | txt_rename: 26 | .byte "rename",0 27 | txt_print: 28 | .byte "print",0 29 | txt_quit: 30 | .byte "quit",0 31 | 32 | txt_cut: 33 | .byte "cut" 34 | .byte GOTOX 35 | .word $52 36 | .byte CBM_LOGO,BOLDON,"X",PLAINTEXT,0 37 | 38 | txt_copy: 39 | .byte "copy" 40 | .byte GOTOX 41 | .word $52 42 | .byte CBM_LOGO,BOLDON,"C",PLAINTEXT,$00 43 | 44 | txt_paste: 45 | .byte "paste",0 46 | 47 | txt_text: 48 | .byte "text" 49 | .byte GOTOX 50 | .word $92 51 | .byte CBM_LOGO,BOLDON,"T",PLAINTEXT,0 52 | 53 | txt_picture: 54 | .byte "picture" 55 | .byte GOTOX 56 | .word $92 57 | .byte CBM_LOGO,BOLDON,"W",PLAINTEXT,0 58 | 59 | txt_search: 60 | .byte "search" 61 | .byte GOTOX 62 | .word $A1 63 | .byte CBM_LOGO,BOLDON,"S",PLAINTEXT,0 64 | 65 | txt_find_next: 66 | .byte "find next" 67 | .byte GOTOX 68 | .word $A1 69 | .byte CBM_LOGO,BOLDON,"N",PLAINTEXT,0 70 | 71 | txt_change: 72 | .byte "change, then find" 73 | .byte GOTOX 74 | .word $A1 75 | .byte CBM_LOGO,BOLDON,"Y",PLAINTEXT,0 76 | 77 | txt_previous_page: 78 | .byte "previous page" 79 | .byte GOTOX 80 | .word $B8 81 | .byte CBM_LOGO 82 | .byte ESC_GRAPHICS 83 | .byte MOVEPENTO 84 | .word $C7 85 | .byte 21 86 | .byte LINETO 87 | .word $C1 88 | .byte 21 89 | .byte LINETO 90 | .word $C3 91 | .byte $13 92 | .byte LINETO 93 | .word $C3 94 | .byte $17 95 | .byte LINETO 96 | .word $C1 97 | .byte 21 98 | .byte NULL 99 | 100 | txt_next_page: 101 | .byte "next page" 102 | .byte GOTOX 103 | .word $B8 104 | .byte CBM_LOGO,BOLDON,"+",PLAINTEXT,0 105 | 106 | txt_goto_page: 107 | .byte "goto page" 108 | .byte GOTOX 109 | .word $B8 110 | .byte CBM_LOGO,BOLDON,"G",PLAINTEXT,0 111 | 112 | txt_page_break: 113 | .byte "page break" 114 | .byte GOTOX 115 | .word $B8 116 | .byte CBM_LOGO,BOLDON,"L",PLAINTEXT,0 117 | 118 | txt_set_first_page: 119 | .byte "set first page",0 120 | 121 | txt_plain_text: 122 | .byte " plain text" 123 | .byte GOTOX 124 | .word $E3 125 | .byte CBM_LOGO,BOLDON,"P",PLAINTEXT,$00 126 | 127 | txt_bold: 128 | .byte " ",BOLDON 129 | .byte "bold" 130 | .byte PLAINTEXT,GOTOX 131 | .word $E3 132 | .byte CBM_LOGO,BOLDON,"B",PLAINTEXT,$00 133 | 134 | txt_italic: 135 | .byte " ",ITALICON 136 | .byte "italic" 137 | .byte PLAINTEXT,GOTOX 138 | .word $E3 139 | .byte CBM_LOGO,BOLDON,"I",PLAINTEXT,$00 140 | 141 | txt_outline: 142 | .byte " ",OUTLINEON 143 | .byte "outline" 144 | .byte PLAINTEXT,GOTOX 145 | .word $E3 146 | .byte CBM_LOGO,BOLDON,"O",PLAINTEXT,$00 147 | 148 | txt_underline: 149 | .byte " ",ULINEON 150 | .byte "underline" 151 | .byte PLAINTEXT,GOTOX 152 | .word $E3 153 | .byte CBM_LOGO,BOLDON,"U",PLAINTEXT,$00 154 | 155 | txt_superscript: 156 | .byte " superscript" 157 | .byte GOTOX 158 | .word $E3 159 | .byte CBM_LOGO,BOLDON,">",PLAINTEXT,$00 160 | 161 | txt_subscript: 162 | .byte " subscript" 163 | .byte GOTOX 164 | .word $E3 165 | .byte CBM_LOGO,BOLDON,"<",PLAINTEXT,$00 166 | 167 | txt_xx_point: 168 | .byte " xx point",0 169 | txt_xx_point_len = * - txt_xx_point 170 | .byte " xx point",0 171 | .byte " xx point",0 172 | .byte " xx point",0 173 | .byte " xx point",0 174 | .byte " xx point",0 175 | .byte " xx point",0 176 | .byte " xx point",0 177 | -------------------------------------------------------------------------------- /en/strings2.inc: -------------------------------------------------------------------------------- 1 | txt_hide_pictures: 2 | .byte "hide pictures",0 3 | 4 | txt_open_header: 5 | .byte "open",PLAINTEXT ; 5 bytes, will be overwritten by "open\x1b" or "close" 6 | .byte " header" 7 | .byte GOTOX 8 | .word 161 9 | .byte $80 ; C= 10 | .byte BOLDON 11 | .byte "H" 12 | .byte PLAINTEXT,0 13 | 14 | txt_open_footer: 15 | .byte "open",PLAINTEXT ; 5 bytes, will be overwritten by "open\x1b" or "close" 16 | .byte " footer" 17 | .byte GOTOX 18 | .word 161 19 | .byte $80 ; C= 20 | .byte BOLDON 21 | .byte "F" 22 | .byte PLAINTEXT,0 23 | 24 | txt_select_page: 25 | .byte "select page" 26 | .byte GOTOX 27 | .word $A1 28 | .byte $80 ; C= 29 | .byte BOLDON 30 | .byte "V" 31 | .byte PLAINTEXT,0 32 | 33 | txt_make_full_page_wide: 34 | .byte "make full page wide",0 35 | 36 | txt_title_page: 37 | .byte " title page",0 38 | 39 | txt_nlq_spacing: 40 | .byte " NLQ spacing",0 41 | 42 | txt_swapping_geowrite: 43 | .byte "swapping geoWrite",0 44 | 45 | txt_ioerror: 46 | .byte BOLDON,"Error I:" 47 | 48 | txt_ioerror_errcode: 49 | .byte " " 50 | .byte " ",0 51 | 52 | txt_insufficient_disk_space: 53 | .byte BOLDON 54 | .byte "Insufficient disk space",0 55 | 56 | txt_page_too_big: 57 | .byte BOLDON 58 | .byte "Page too big",0 59 | 60 | txt_reading_page: 61 | .byte "reading page",0 62 | 63 | txt_writing_page: 64 | .byte "writing page",0 65 | 66 | txt_no_prev_page: 67 | .byte BOLDON 68 | .byte "No previous page",0 69 | 70 | txt_keyword_header: 71 | .byte "HEADER",0 72 | 73 | txt_keyword_footer: 74 | .byte "FOOTER",0 75 | -------------------------------------------------------------------------------- /en/strings3.inc: -------------------------------------------------------------------------------- 1 | txt_same_disk: 2 | .byte BOLDON 3 | .byte "Both geoWrite and data file" 4 | .byte GOTOXY 5 | .word 80 6 | .byte 64 7 | .byte "must be on the same disk" 8 | .byte GOTOXY 9 | .word 80 10 | .byte 80 11 | .byte "in a one drive system." 12 | .byte 0 13 | -------------------------------------------------------------------------------- /en/strings4a.inc: -------------------------------------------------------------------------------- 1 | txt_showhide: 2 | txt_show: 3 | .byte "show" 4 | txt_show_len = * - txt_show 5 | txt_hide: 6 | .byte "hide" 7 | .assert * - txt_hide = txt_show_len, error; need to be the same size 8 | 9 | txt_photoscrap_too_new: 10 | .byte BOLDON 11 | .byte "photoScrap is beyond V2.1" 12 | .byte 0 13 | 14 | txt_picture_area_full: 15 | .byte BOLDON 16 | .byte "File's picture area full." 17 | .byte 0 18 | 19 | txt_no_photoscrap: 20 | .byte BOLDON 21 | .byte "No photoScrap file on disk." 22 | .byte 0 23 | 24 | txt_photoscrap_too_big: 25 | .byte BOLDON 26 | .byte "photoScrap too big." 27 | .byte 0 28 | -------------------------------------------------------------------------------- /en/strings4b.inc: -------------------------------------------------------------------------------- 1 | txt_cant_copy_pic: 2 | .byte BOLDON 3 | .byte "Can't copy picture to scrap" 4 | .byte 0 5 | 6 | txt_copying_photscrap: 7 | .byte "copying photoScrap into" 8 | .byte GOTOXY 9 | .word 80 10 | .byte 80 11 | .byte "data file." 12 | .byte 0 13 | 14 | txt_page_too_big_inserting_break: 15 | .byte BOLDON 16 | .byte "Page too big --" 17 | .byte GOTOXY 18 | .word 80 19 | .byte 64 20 | .byte "Inserting page break" 21 | .byte 0 22 | 23 | txt_disk_near_full: 24 | .byte BOLDON 25 | .byte "WARNING!" 26 | .byte PLAINTEXT,GOTOXY 27 | .word 80 28 | .byte 64 29 | .byte "Disk near full." 30 | .byte GOTOXY 31 | .word 80 32 | .byte 80 33 | .byte "Please move/delete files" 34 | .byte GOTOXY 35 | .word 80 36 | .byte 96 37 | .byte "from disk to continue." 38 | .byte 0 39 | 40 | txt_too_many_pages: 41 | .byte BOLDON 42 | .byte "There are too many pages in" 43 | .byte GOTOXY 44 | .word 80 45 | .byte 64 46 | .byte "this file. Text at the end" 47 | .byte GOTOXY 48 | .word 80 49 | .byte 80 50 | .byte "is being lost." 51 | .byte 0 52 | 53 | txt_cant_add_pages: 54 | .byte BOLDON 55 | .byte "Cannot add any more pages" 56 | .byte GOTOXY 57 | .word 80 58 | .byte 64 59 | .byte "to this file. Cannot insert" 60 | .byte GOTOXY 61 | .word 80 62 | .byte 80 63 | .byte "page break." 64 | .byte 0 65 | -------------------------------------------------------------------------------- /en/strings5.inc: -------------------------------------------------------------------------------- 1 | aboutText: 2 | .byte BOLDON,"geoWrite by Tony Requist" 3 | .byte GOTOXY 4 | .word 80 5 | .byte 64 6 | .byte "Version 2.1 for the C64" 7 | .byte GOTOXY 8 | .word 80 9 | .byte 80 10 | .byte "Copyright 1985, 1986, 1987" 11 | .byte GOTOXY 12 | .word 80 13 | .byte 96 14 | .byte "Berkeley Softworks",0 15 | 16 | txt_accessory_disk_full: 17 | .byte BOLDON 18 | .byte "Not enough free space on" 19 | .byte GOTOXY 20 | .word 80 21 | .byte 64 22 | .byte "disk for desk accessory." 23 | .byte 0 24 | 25 | txt_please_select_option: 26 | .byte BOLDON 27 | .byte "Please Select Option:" 28 | .byte PLAINTEXT,0 29 | 30 | txt_new_document: 31 | .byte "new document" 32 | .byte 0 33 | 34 | txt_existing_document: 35 | .byte "existing document" 36 | .byte 0 37 | 38 | txt_to_desktop: 39 | .byte "to deskTop" 40 | .byte 0 41 | 42 | txt_insert_new_disk: 43 | .byte BOLDON 44 | .byte "Insert new disk into disk drive." 45 | .byte 0 46 | 47 | txt_file_exists: 48 | .byte BOLDON 49 | .byte "File exists, choose another.",PLAINTEXT 50 | .byte 0 51 | 52 | txt_document_version_error: 53 | .byte BOLDON 54 | .byte "Data file is beyond V2.1" 55 | .byte 0 56 | 57 | txt_converting_file: 58 | .byte BOLDON 59 | .byte "Converting earlier file to " 60 | .byte "V2." 61 | txt_converting_file_digit: 62 | .byte "1" 63 | .byte 0 64 | 65 | txt_converting_error: 66 | .byte "converting file." 67 | .byte 0 68 | 69 | txt_on_disk: 70 | .byte BOLDON 71 | .byte "On disk:" 72 | .byte PLAINTEXT,0 73 | 74 | txt_warning: 75 | .byte BOLDON 76 | .byte "WARNING!" 77 | .byte 0 78 | 79 | txt_file_is_write_protected: 80 | .byte "This file is write protected." 81 | .byte 0 82 | 83 | txt_cannot_recover: 84 | .byte BOLDON 85 | .byte "Cannot recover from file." 86 | .byte 0 87 | 88 | txt_enter_filename: 89 | .byte BOLDON 90 | .byte "Please enter new filename:" 91 | .byte PLAINTEXT,0 92 | 93 | txt_opening_file: 94 | .byte "opening file" 95 | .byte 0 96 | 97 | txt_creating_file: 98 | .byte "creating file" 99 | .byte 0 100 | 101 | txt_running_accessory: 102 | .byte "running desk accessory" 103 | .byte 0 104 | 105 | txt_cannot_run_accessory: 106 | .byte BOLDON 107 | .byte "Cannot run desk accessory" 108 | .byte GOTOXY 109 | .word 80 110 | .byte 64 111 | .byte "while in header or footer" 112 | .byte 0 113 | 114 | txt_filename_exists: 115 | .byte BOLDON 116 | .byte "File name already exists" 117 | .byte 0 118 | -------------------------------------------------------------------------------- /en/strings6.inc: -------------------------------------------------------------------------------- 1 | txt_no_next_page: 2 | .byte BOLDON 3 | .byte "No next page" 4 | .byte 0 5 | 6 | txt_cannot_go_to_page: 7 | .byte BOLDON 8 | .byte "Cannot go to page" 9 | .byte 0 10 | 11 | txt_enter_page_to_go_to: 12 | .byte BOLDON 13 | .byte "Enter page to go to:" 14 | .byte PLAINTEXT,0 15 | 16 | txt_enter_page_number: 17 | .byte BOLDON 18 | .byte "Enter page number" 19 | .byte 0 20 | 21 | txt_for_first_page: 22 | .byte "for first page:" 23 | .byte PLAINTEXT,0 24 | 25 | txt_bad_value: 26 | .byte BOLDON 27 | .byte "Bad value" 28 | .byte 0 29 | 30 | txt_del_last_char: 31 | .byte BOLDON 32 | .byte "Delete last character" 33 | .byte 0 34 | 35 | txt_of_prev_page: 36 | .byte "of the prev page?" 37 | .byte 0 38 | 39 | txt_open: 40 | .byte "open",PLAINTEXT 41 | txt_open_len = * - txt_open 42 | txt_close: 43 | .byte "close" 44 | .assert * - txt_close = txt_open_len, error; need to be the same size 45 | 46 | txt_string_not_found: 47 | .byte BOLDON 48 | .byte "String not found" 49 | .byte 0 50 | 51 | txt_search_replace: 52 | .byte BOLDON 53 | .byte "Search / Replace" 54 | .byte 0 55 | 56 | txt_search_for: 57 | .byte "Search For" 58 | .byte 0 59 | 60 | txt_replace_with: 61 | .byte "Replace With" 62 | .byte 0 63 | 64 | txt_whole_word: 65 | .byte "Whole Word" 66 | .byte GOTOX 67 | .word 162 68 | .byte "Partial Word" 69 | .byte 0 70 | 71 | txt_all_pages: 72 | .byte "All Pages" 73 | .byte GOTOX 74 | .word 162 75 | .byte "This Page Only" 76 | .byte 0 77 | -------------------------------------------------------------------------------- /en/strings7.inc: -------------------------------------------------------------------------------- 1 | txt_printer_is_inaccessible: 2 | .byte BOLDON 3 | .byte "Printer is inaccessable." 4 | .byte PLAINTEXT,0 5 | 6 | txt_printing: 7 | .byte BOLDON 8 | .byte " Printing..." 9 | .byte 0 10 | 11 | txt_previewing: 12 | .byte BOLDON 13 | .byte "Previewing..." 14 | .byte 0 15 | 16 | txt_print: 17 | .byte BOLDON 18 | .byte "Print..." 19 | .byte 0 20 | 21 | txt_high_draft_nlq: 22 | .byte "High" 23 | .byte GOTOX 24 | .word $9F 25 | .byte "Draft" 26 | .byte GOTOX 27 | .word $D7 28 | .byte "NLQ" 29 | .byte 0 30 | 31 | txt_from_to_page: 32 | .byte "From Page" 33 | .byte GOTOX 34 | .word $AA 35 | .byte "To Page" 36 | .byte 0 37 | 38 | txt_single_tractor: 39 | .byte "Single Sheet" 40 | .byte GOTOX 41 | .word $BA 42 | .byte "Tractor Feed" 43 | .byte 0 44 | 45 | txt_insert_next_sheet: 46 | .byte BOLDON 47 | .byte "Please insert the next sheet" 48 | .byte 0 49 | 50 | txt_to_continue_printing: 51 | .byte "of paper to continue printing" 52 | .byte 0 53 | 54 | txt_date_token: 55 | .byte "DATE" 56 | txt_date_token_len = * - txt_date_token 57 | .byte 0 58 | 59 | txt_time_token: 60 | .byte "TIME" 61 | txt_time_token_len = * - txt_time_token 62 | .byte 0 63 | 64 | txt_page_token: 65 | .byte "PAGE" 66 | txt_page_token_len = * - txt_page_token 67 | .byte 0 68 | 69 | txt_jan: .byte "January",0 70 | txt_feb: .byte "February",0 71 | txt_mar: .byte "March",0 72 | txt_apr: .byte "April",0 73 | txt_may: .byte "May",0 74 | txt_jun: .byte "June",0 75 | txt_jul: .byte "July",0 76 | txt_aug: .byte "August",0 77 | txt_sep: .byte "September",0 78 | txt_oct: .byte "October",0 79 | txt_nov: .byte "November",0 80 | txt_dec: .byte "December",0 81 | -------------------------------------------------------------------------------- /en/strings_init.inc: -------------------------------------------------------------------------------- 1 | txt_needs_conversion: 2 | .byte BOLDON 3 | .byte "This file must be opened by" 4 | .byte GOTOXY 5 | .word 80 6 | .byte 64 7 | .byte "geoWrite before it can" 8 | .byte GOTOXY 9 | .word 80 10 | .byte 80 11 | .byte "be printed." 12 | .byte 0 13 | 14 | txt_serial_mismatch: 15 | .byte BOLDON 16 | .byte "Please reboot your system" 17 | .byte GOTOXY 18 | .word 80 19 | .byte 64 20 | .byte "using the same GEOS disk" 21 | .byte GOTOXY 22 | .word 80 23 | .byte 80 24 | .byte "that was first used to run" 25 | .byte GOTOXY 26 | .word 80 27 | .byte 96 28 | .byte "geoWrite." 29 | .byte 0 30 | 31 | txt_install_write_protected: 32 | .byte BOLDON 33 | .byte "Cannot install geoWrite on a" 34 | .byte GOTOXY 35 | .word 80 36 | .byte 64 37 | .byte "write protected disk." 38 | .byte 0 39 | 40 | txt_error_installing: 41 | .byte BOLDON 42 | .byte "Error installing geoWrite" 43 | .byte 0 44 | 45 | txt_copy_protection: 46 | .byte BOLDON 47 | .byte "Cannot install geoWrite on" 48 | .byte GOTOXY 49 | .word 80 50 | .byte 64 51 | .byte "this disk. Please refer to" 52 | .byte GOTOXY 53 | .word 80 54 | .byte 80 55 | .byte "installation directions in" 56 | .byte GOTOXY 57 | .word 80 58 | .byte 96 59 | .byte "the manual." 60 | .byte 0 61 | 62 | txt_installed: 63 | .byte BOLDON 64 | .byte "geoWrite 2.1 installed." 65 | .byte 0 66 | -------------------------------------------------------------------------------- /encrypt.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python3 2 | 3 | start_address_r0 = 0x0400 4 | start_address_r1 = 0x3244 5 | 6 | # read symbols 7 | symbols = {} 8 | f = open('build/current/symbols.txt', 'r') 9 | for l in f.readlines(): 10 | l = l.split() 11 | symbols[l[2][1:]] = int(l[1], 16) 12 | 13 | # checksum record 1 for the key 14 | data = bytearray(open('build/current/geoWrite-1_plain.bin', 'rb').read()) 15 | 16 | checksum = 0 17 | for c in data: 18 | checksum += c 19 | 20 | checksum -= data[symbols["serial"] - start_address_r1] 21 | checksum -= data[symbols["serial"] - start_address_r1 + 1] 22 | checksum -= data[symbols["protExecTrack"] - start_address_r1] 23 | checksum -= data[symbols["protExecSector"] - start_address_r1] 24 | checksum -= data[symbols["protSerialTrack"] - start_address_r1] 25 | checksum -= data[symbols["protSerialSector"] - start_address_r1] 26 | checksum += 0xde 27 | checksum += 0xde 28 | checksum += 0xde 29 | checksum += 0xde 30 | checksum &= 0xFF 31 | 32 | # encrypt record 1 33 | for i in range(0, len(data)): 34 | data[i] ^= 0xde 35 | 36 | open('build/current/geoWrite-1.bin', "wb").write(data) 37 | 38 | # encrypt part of record 0 39 | data = bytearray(open('build/current/geoWrite-0_plain.bin', 'rb').read()) 40 | 41 | start = symbols['r0_encrypted_start'] - start_address_r0 42 | end = symbols['r0_encrypted_end'] - start_address_r0 43 | 44 | for i in range(start, end): 45 | data[i] = data[i] ^ checksum 46 | 47 | open('build/current/geoWrite-0.bin', "wb").write(data) 48 | 49 | 50 | -------------------------------------------------------------------------------- /fileversion.inc: -------------------------------------------------------------------------------- 1 | ; ---------------------------------------------------------------------------- 2 | ; geoWrite V2.1 (C64) 3 | ; shared code for testing a file's version 4 | ; ---------------------------------------------------------------------------- 5 | ; reverse-engineered by Michael Steil, www.pagetable.com 6 | ; ---------------------------------------------------------------------------- 7 | 8 | testFileVersion: 9 | MoveW r5, r9 ; dir entry 10 | jsr swapUserZp 11 | jsr GetFHdrInfo 12 | jsr swapUserZp 13 | txa 14 | tay 15 | bne @1 16 | lda fileHeader+O_GHFNAME+13 17 | ldx fileHeader+O_GHFNAME+15 18 | cmp #'2' 19 | bne @1 20 | cpx #'1' 21 | @1: rts 22 | 23 | 24 | -------------------------------------------------------------------------------- /geoWrite-0.inc: -------------------------------------------------------------------------------- 1 | .global L065D 2 | .global L0781 3 | .global L079C 4 | .global measurePage 5 | .global L083C 6 | .global clearSelection 7 | .global L0862 8 | .global invertSelectionIfNeeded 9 | .global invertSelection2 10 | .global L08CD 11 | .global L0902 12 | .global L0927 13 | .global menu_geos_bottom 14 | .global menu_geos_count 15 | .global appPrint2 16 | .global measureLine 17 | .global setMetricsFromCursor3 18 | .global isCrPageBreakOrNull 19 | .global getByteIntpNewCardSetSkipEscRulerEscGraphics 20 | .global skipEscRulerEscGraphics 21 | .global L14BD 22 | .global L15A7 23 | .global L15CA 24 | .global L15D0 25 | .global L15D8 26 | .global L15FC 27 | .global fillPartOfScreen 28 | .global clearPartOfScreen 29 | .global setCursor3AndJustificationFromLine 30 | .global L1784 31 | .global readLintab 32 | .global moveLintabR15 33 | .global countLines 34 | .global L1B5E 35 | .global moveR15Lintab 36 | .global getJustification_XXX 37 | .global L1BAF 38 | .global moveCursor3Lintab 39 | .global isEndOfCardSet 40 | .global storeNewCardSetFromCursor0 41 | .global deleteTextAndPicturesinRange 42 | .global makeSpaceForRuler 43 | .global makeSpace 44 | .global updatelintab_txtPtrIfNeeded_XXX 45 | .global setPromptFontMetricsUpdateRulerUI 46 | .global setPromptPosition 47 | .global getLineRuler 48 | .global getRulerFromText 49 | .global deleteSelection 50 | .global storeNewCardSetFromCursor1 51 | .global getLastRuler 52 | .global L2452 53 | .global L2639 54 | .global resetToPageStart 55 | .global addSideFlippingPixelOffset 56 | .global L2762 57 | .global L27BC 58 | .global addLineHeightToPageHeight 59 | .global addWI4R15 60 | .global addWI3R15 61 | .global incWR15 62 | .global loadWR3Zero 63 | .global loadCursor0PtrPageCardset 64 | .global moveCursor0FontCurFont 65 | .global moveCursor0Ptr_r15 66 | .global moveCursor1Ptr_r15 67 | .global moveR15_cursor3Ptr 68 | .global moveCursor3Ptr_r15 69 | .global moveWR2R11 70 | .global moveWR15R14 71 | .global cmpR15Cursor0Ptr 72 | .global cmpCursor0PtrPageCardset 73 | .global cmpPageEndPtr2PageCardSet 74 | .global cmpPageEndPtr2R15 75 | .global CmpR15Cursor1Ptr 76 | .global CmpR15Cursor3Ptr 77 | .global CmpCursor2_3Ptr 78 | .global L28A9 79 | .global L28F8 80 | .global LoadR15_MEM_PAGE 81 | .global _AppendRecord 82 | .global _CloseRecordFile 83 | .global _DeleteRecord 84 | .global _FindFile 85 | .global _GetBlock 86 | .global _InsertRecord 87 | .global _OpenDisk 88 | .global _PutBlock 89 | .global _ReadFile 90 | .global _UpdateRecordFile 91 | .global _addPhotoScrapToDoc 92 | .global _change 93 | .global _copy 94 | .global _cut 95 | .global _deleteAcrossPages 96 | .global _exitToDesktop 97 | .global _findNext 98 | .global _gotoPage 99 | .global _nextPage 100 | .global _openFooter 101 | .global _openHeader 102 | .global _pasteText 103 | .global _previousPage 104 | .global _readNextPage 105 | .global _search 106 | .global _showCantAddPages 107 | .global _showTooManyPages 108 | .global addWIToZp 109 | .global appInit 110 | .global bold 111 | .global cmpCursor0_1Ptr 112 | .global copyCursor 113 | .global doDlgBox 114 | .global doicons_data 115 | .global doicons_graphdata_ptr1 116 | .global doicons_graphdata_ptr2 117 | .global doicons_graphdata_ptr3 118 | .global drawMarginBarItem2 119 | .global incWR1 120 | .global initTextPrompt 121 | .global italics 122 | .global killPrompt 123 | .global ldR4DiskBlkBuf 124 | .global loadR0FnBuffer 125 | .global menu_main 126 | .global menu_options_bottom 127 | .global menu_options_count 128 | .global jst_checkbox_x_hi 129 | .global jst_checkbox_x_lo 130 | .global jst_checkbox_x_count 131 | .global outline 132 | .global plainText 133 | .global popR15 134 | .global processTable 135 | .global pushRulerData 136 | .global pushR15 137 | .global reopenDocFile 138 | .global restart 139 | .global screenSave 140 | .global screenRecover 141 | .global scrrecvtab_deskacc 142 | .global scrrecvtab_preview 143 | .global scrrecvtabs 144 | .global setSystemFont 145 | .global setAppDrive 146 | .global setDocDrive 147 | .global setFontFromFile 148 | .global setDirty 149 | .global showError 150 | .global showIOError 151 | .global subscript 152 | .global superscript 153 | .global swapUserZp 154 | .global testDiskNotFull 155 | .global testDiskNotFull2 156 | .global tmpCloseDocFile 157 | .global txt_hide_pictures 158 | .global txt_insufficient_disk_space 159 | .global txt_nlq_spacing 160 | .global txt_no_prev_page 161 | .global txt_open_footer 162 | .global txt_open_header 163 | .global txt_page_too_big 164 | .global txt_reading_page 165 | .global txt_swapping_geowrite 166 | .global txt_title_page 167 | .global txt_writing_page 168 | .global underline 169 | .global useSystemFont 170 | .global appRecoverVector 171 | .global fontNameFromIndex 172 | .global menu_fontnames_items 173 | .global menu_fontnames_bottom 174 | .global loadFontMetrics 175 | .global popRulerData 176 | .global copyCursor0To1 177 | .global copyCursor3To2 178 | .global copyCursor3To0 179 | .global copyRuler1To2 180 | .global CmpR2WindowBottom 181 | .global r0_encrypted_start 182 | .global r0_encrypted_end 183 | .global NUM_PROCESSES 184 | .global CmpCursor2_0Ptr 185 | .global isAlphanumeric 186 | .global addRulerSizeToR15 187 | .global addRulerSizeToZp 188 | .global addWI4ToR3 189 | .global addWI4ToZp 190 | .global drawClippedPictureFromDisk 191 | .global calcClippingY 192 | .global putChar_XXX 193 | .global rectangleUntilRightBorder 194 | .global updatePageIndicator 195 | .global screenXFromPageX 196 | .global isSpaceOrControl 197 | .global getByteIntpNewCardSet 198 | .global getByteFromPage 199 | .global getEffectiveRightMargin 200 | .global openDocumentRepaginateEdit 201 | .global centerObject 202 | .global txt_keyword_header 203 | .global txt_keyword_footer 204 | .global isPageBreakOrNull 205 | .global justifyText2 206 | .global justifyText 207 | -------------------------------------------------------------------------------- /geoWrite-2.inc: -------------------------------------------------------------------------------- 1 | J2_appKeyVector = MEM_OVERLAY + 3 * 0 2 | J2_appOtherPressVec = MEM_OVERLAY + 3 * 1 3 | J2_process2 = MEM_OVERLAY + 3 * 2 4 | J2_process2b = MEM_OVERLAY + 3 * 3 5 | J2_pageBreak = MEM_OVERLAY + 3 * 4 6 | J2_pastePicture = MEM_OVERLAY + 3 * 5 7 | J2_render_XXX = MEM_OVERLAY + 3 * 6 8 | J2_selectionProcess = MEM_OVERLAY + 3 * 7 9 | J2_mouseScrollUpDown = MEM_OVERLAY + 3 * 8 10 | J2_callbackJustification = MEM_OVERLAY + 3 * 9 11 | J2_selectPage = MEM_OVERLAY + 3 * 10 12 | J2_analyzeSelectionFont = MEM_OVERLAY + 3 * 11 13 | J2_blockSelectionProcess = MEM_OVERLAY + 3 * 12 14 | 15 | -------------------------------------------------------------------------------- /geoWrite-3.inc: -------------------------------------------------------------------------------- 1 | J3_cut = MEM_OVERLAY + 3 * 0 2 | J3_copy = MEM_OVERLAY + 3 * 1 3 | J3_pasteText = MEM_OVERLAY + 3 * 2 4 | J3_addPhotoScrapToDoc = MEM_OVERLAY + 3 * 3 5 | J3_hidePictures = MEM_OVERLAY + 3 * 4 6 | J3_splitTooBigPage = MEM_OVERLAY + 3 * 5 7 | J3_diskNearFullExit = MEM_OVERLAY + 3 * 6 8 | J3_showTooManyPages = MEM_OVERLAY + 3 * 7 9 | J3_showCantAddPages = MEM_OVERLAY + 3 * 8 10 | -------------------------------------------------------------------------------- /geoWrite-4.inc: -------------------------------------------------------------------------------- 1 | J4_editPageIndicator = MEM_OVERLAY + 3 * 0 2 | J4_callbackRuler = MEM_OVERLAY + 3 * 3 3 | J4_callbackMarginBar = MEM_OVERLAY + 3 * 4 4 | 5 | -------------------------------------------------------------------------------- /geoWrite-5.inc: -------------------------------------------------------------------------------- 1 | J5_recover = MEM_OVERLAY + 3 * 0 2 | J5_showStartupMenu = MEM_OVERLAY + 3 * 1 3 | J5_renameDocument = MEM_OVERLAY + 3 * 2 4 | J5_openDocument = MEM_OVERLAY + 3 * 3 5 | J5_showAboutDialog = MEM_OVERLAY + 3 * 4 6 | J5_loadDeskAcc = MEM_OVERLAY + 3 * 5 7 | J5_exitToDesktop = MEM_OVERLAY + 3 * 6 8 | J5_readPageProperties = MEM_OVERLAY + 3 * 7 9 | J5_makeFullPageWide = MEM_OVERLAY + 3 * 8 10 | -------------------------------------------------------------------------------- /geoWrite-6.inc: -------------------------------------------------------------------------------- 1 | J6_previousPage = MEM_OVERLAY + 3 * 0 2 | J6_nextPage = MEM_OVERLAY + 3 * 1 3 | J6_gotoPage = MEM_OVERLAY + 3 * 2 4 | J6_streamBlock = MEM_OVERLAY + 3 * 3 5 | J6_readNextPage = MEM_OVERLAY + 3 * 4 6 | J6_deleteAcrossPages = MEM_OVERLAY + 3 * 5 7 | J6_updateDocument = MEM_OVERLAY + 3 * 6 8 | J6_syncDocToDisk = MEM_OVERLAY + 3 * 7 9 | J6_update = MEM_OVERLAY + 3 * 8 10 | J6_readPage = MEM_OVERLAY + 3 * 9 11 | J6_openHeader = MEM_OVERLAY + 3 * 10 12 | J6_openFooter = MEM_OVERLAY + 3 * 11 13 | J6_setFirstPage = MEM_OVERLAY + 3 * 12 14 | J6_titlePage = MEM_OVERLAY + 3 * 13 15 | J6_updateTitleNlqMenuSelection = MEM_OVERLAY + 3 * 14 16 | J6_search = MEM_OVERLAY + 3 * 15 17 | J6_findNext = MEM_OVERLAY + 3 * 16 18 | J6_change = MEM_OVERLAY + 3 * 17 19 | J6_NLQSpacing = MEM_OVERLAY + 3 * 18 20 | J6_updatePageSizes = MEM_OVERLAY + 3 * 19 21 | 22 | -------------------------------------------------------------------------------- /geoWrite-7.inc: -------------------------------------------------------------------------------- 1 | J7_print = MEM_OVERLAY + 3 * 0 2 | J7_preview = MEM_OVERLAY + 3 * 1 3 | J7_2 = MEM_OVERLAY + 3 * 2 4 | 5 | -------------------------------------------------------------------------------- /geoWrite-cvt.cfg: -------------------------------------------------------------------------------- 1 | 2 | MEMORY { 3 | CVT: file = "%O", start = $0, size = $40000; 4 | VLIR0: start = $0400, size = $2E44, define = yes; 5 | VLIR1: start = $3244, size = 4000, define = yes; 6 | VLIR2: start = $3244, size = 4000, define = yes; 7 | VLIR3: start = $3244, size = 4000, define = yes; 8 | VLIR4: start = $3244, size = 4000, define = yes; 9 | VLIR5: start = $3244, size = 4000, define = yes; 10 | VLIR6: start = $3244, size = 4000, define = yes; 11 | VLIR7: start = $3244, size = 4000, define = yes; 12 | VLIR8: start = $0680, size = 4000, define = yes; 13 | } 14 | 15 | SEGMENTS { 16 | DIRENTRY: type = ro, load=CVT, align = $FE; 17 | FILEINFO: type = ro, load=CVT, align = $FE; 18 | RECORDS: type = ro, load=CVT, align = $FE; 19 | VLIR0: type = ro, run = VLIR0, load=CVT, align_load = $FE; 20 | VLIR1: type = ro, run = VLIR1, load=CVT, align_load = $FE; 21 | VLIR2: type = ro, run = VLIR2, load=CVT, align_load = $FE; 22 | VLIR3: type = ro, run = VLIR3, load=CVT, align_load = $FE; 23 | VLIR4: type = ro, run = VLIR4, load=CVT, align_load = $FE; 24 | VLIR5: type = ro, run = VLIR5, load=CVT, align_load = $FE; 25 | VLIR6: type = ro, run = VLIR6, load=CVT, align_load = $FE; 26 | VLIR7: type = ro, run = VLIR7, load=CVT, align_load = $FE; 27 | VLIR8: type = ro, RUN = VLIR8, load=CVT, align_load = $FE; 28 | } 29 | -------------------------------------------------------------------------------- /geoWrite-fhdr.s: -------------------------------------------------------------------------------- 1 | ; ---------------------------------------------------------------------------- 2 | ; geoWrite V2.1 (C64) 3 | ; file header 4 | ; ---------------------------------------------------------------------------- 5 | ; reverse-engineered by Michael Steil, www.pagetable.com 6 | ; ---------------------------------------------------------------------------- 7 | 8 | .include "sym.inc" 9 | .include "const.inc" 10 | .include "geoWrite-0.inc" 11 | 12 | .segment "FHDR" 13 | 14 | .byte $00,$ff ; sector link 15 | 16 | .byte $03,$15 ; width/height of icon 17 | .byte $bf ; bitmap data type 18 | .byte $ff,$ff,$ff,$80,$00,$01,$b0,$80,$7d,$88,$81,$cd,$98,$87,$19,$a0 19 | .byte $8c,$31,$ba,$98,$61,$80,$30,$c1,$80,$69,$81,$80,$d3,$01,$80,$ae 20 | .byte $01,$81,$98,$01,$81,$70,$79,$82,$c0,$85,$83,$00,$79,$82,$00,$bd 21 | .byte $84,$01,$7f,$84,$3d,$ff,$8b,$e0,$fd,$80,$00,$01,$ff,$ff,$ff 22 | 23 | .byte $83 ; C64 file type 24 | .byte APPLICATION ; GEOS file type 25 | .byte VLIR 26 | 27 | .word $0400 ; start 28 | .word $03ff ; end 29 | .word appInit ; init 30 | 31 | .byte "geoWrite V2.1",0,0,0,0 32 | .byte "Tony Requist",0,0,0,0,0,0,0,0 33 | 34 | .byte $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 35 | .byte $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 36 | .byte $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$67 37 | 38 | .if LANG=LANG_DE 39 | .byte "geoWrite (64 Version) ist eine WYSIWYG-Textverarbeitung.",0 40 | 41 | .byte $e1,$35,$a9,$36,$85,$03,$a9,$c5,$85,$02,$20,$56,$c2,$a5,$02,$c9 42 | .byte $05,$d0,$19,$a9,$00,$85,$02,$85,$06,$85,$07,$85,$08,$85,$09,$85 43 | .byte $16,$a9,$04,$85,$11,$a9,$00 44 | .else 45 | .byte "geoWrite (64 version) is a WYSIWYG word processor.",0 46 | 47 | .byte $db,$35,$a9,$36,$85,$03,$a9,$bf,$85,$02,$20,$56,$c2 48 | .byte $a5,$02,$c9,$05,$d0,$19,$a9,$00,$85,$02,$85,$06,$85,$07,$85,$08 49 | .byte $85,$09,$85,$16,$a9,$04,$85,$11,$a9,$00,$85,$10,$4c,$2f,$c2,$4c 50 | .endif 51 | -------------------------------------------------------------------------------- /geoWrite.cfg: -------------------------------------------------------------------------------- 1 | MEMORY { 2 | USERZP: start = $0080, size = $0080; 3 | CODE0: start = $0400, size = $2E44; 4 | CODE1: start = $3244, size = 4000, FILE = "build/current/geoWrite-1_plain.bin"; 5 | CODE2: start = $3244, size = 4000, FILE = "build/current/geoWrite-2.bin"; 6 | CODE3: start = $3244, size = 4000, FILE = "build/current/geoWrite-3.bin"; 7 | CODE4: start = $3244, size = 4000, FILE = "build/current/geoWrite-4.bin"; 8 | CODE5: start = $3244, size = 4000, FILE = "build/current/geoWrite-5.bin"; 9 | CODE6: start = $3244, size = 4000, FILE = "build/current/geoWrite-6.bin"; 10 | CODE7: start = $3244, size = 4000, FILE = "build/current/geoWrite-7.bin"; 11 | CODE8: start = $0680, size = 4000, FILE = "build/current/geoWrite-8.bin"; 12 | FHDR: start = $0000, size = 256, FILE = "build/current/geoWrite-fhdr.bin"; 13 | } 14 | 15 | SEGMENTS { 16 | USERZP: load = USERZP, type = zp; 17 | CODE0: load = CODE0, type = rw; 18 | CODE1: load = CODE1, type = rw; 19 | CODE2: load = CODE2, type = rw; 20 | CODE3: load = CODE3, type = rw; 21 | CODE4: load = CODE4, type = rw; 22 | CODE5: load = CODE5, type = rw; 23 | CODE6: load = CODE6, type = rw; 24 | CODE7: load = CODE7, type = rw; 25 | CODE8: load = CODE8, type = rw; 26 | FHDR: load = FHDR, type = rw; 27 | } 28 | -------------------------------------------------------------------------------- /geosmac.inc: -------------------------------------------------------------------------------- 1 | ; GEOS macros 2 | ; reassembled for 6502TASM/MMS by Maciej 'YTM/Alliance' Witkowiak 3 | 4 | .macro LoadB dest, value 5 | lda #value 6 | sta dest 7 | .endmacro 8 | 9 | .macro LoadW dest, value 10 | LoadB dest+1, >(value) 11 | .if (.not .const(value)) .or (>(value))<>(<(value)) 12 | lda #<(value) 13 | .endif 14 | sta dest+0 15 | .endmacro 16 | 17 | .macro LoadW_ dest, value 18 | LoadB dest+0, <(value) 19 | .if (.not .const(value)) .or (>(value))<>(<(value)) 20 | lda #>(value) 21 | .endif 22 | sta dest+1 23 | .endmacro 24 | 25 | .macro LoadW__ dest, value 26 | LoadB dest+1, >(value) 27 | LoadB dest+0, <(value) 28 | .endmacro 29 | 30 | .macro MoveB source, dest 31 | lda source 32 | sta dest 33 | .endmacro 34 | 35 | .macro MoveW source, dest 36 | MoveB source+1, dest+1 37 | MoveB source+0, dest+0 38 | .endmacro 39 | 40 | .macro MoveW_ source, dest 41 | MoveB source+0, dest+0 42 | MoveB source+1, dest+1 43 | .endmacro 44 | 45 | .macro add source 46 | clc 47 | adc source 48 | .endmacro 49 | 50 | .macro AddB source, dest 51 | lda source 52 | add dest 53 | sta dest 54 | .endmacro 55 | 56 | .macro AddB_ source, dest 57 | clc 58 | lda source 59 | adc dest 60 | sta dest 61 | .endmacro 62 | 63 | .macro AddW source, dest 64 | AddB source+0, dest+0 65 | lda source+1 66 | adc dest+1 67 | sta dest+1 68 | .endmacro 69 | 70 | .macro AddVB value, dest 71 | lda dest 72 | clc 73 | adc #value 74 | sta dest 75 | .endmacro 76 | 77 | .macro AddVW value, dest 78 | .local @j 79 | clc 80 | lda #<(value) 81 | adc dest 82 | sta dest 83 | .if (>(value))=0 84 | bcc @j 85 | inc dest+1 86 | @j: 87 | .else 88 | lda #>(value) 89 | adc dest + 1 90 | sta dest + 1 91 | .endif 92 | .endmacro 93 | 94 | .macro AddVW_ value, dest 95 | .local j 96 | lda dest 97 | add #<(value) 98 | sta dest 99 | .if (>(value))=0 100 | bcc j 101 | inc dest+1 102 | j: 103 | .else 104 | lda #>(value) 105 | adc dest + 1 106 | sta dest + 1 107 | .endif 108 | .endmacro 109 | 110 | .macro sub source 111 | sec 112 | sbc source 113 | .endmacro 114 | 115 | .macro SubB source, dest 116 | lda dest 117 | sub source 118 | sta dest 119 | .endmacro 120 | 121 | .macro SubW source, dest 122 | SubB source+0, dest+0 123 | lda dest+1 124 | sbc source+1 125 | sta dest+1 126 | .endmacro 127 | 128 | .macro SubVW value, dest 129 | sec 130 | lda dest+0 131 | sbc #<(value) 132 | sta dest+0 133 | lda dest+1 134 | sbc #>(value) 135 | sta dest+1 136 | .endmacro 137 | 138 | .macro CmpB source, dest 139 | lda source 140 | cmp dest 141 | .endmacro 142 | 143 | .macro CmpBI source, immed 144 | lda source 145 | cmp #immed 146 | .endmacro 147 | 148 | .macro CmpW source, dest 149 | .local @j 150 | CmpB source+1, dest+1 151 | bne @j 152 | CmpB source+0, dest+0 153 | @j: 154 | .endmacro 155 | 156 | .macro CmpWI source, immed 157 | .local @j 158 | CmpBI source+1, >(immed) 159 | bne @j 160 | CmpBI source+0, <(immed) 161 | @j: 162 | .endmacro 163 | 164 | .macro PushB source 165 | lda source 166 | pha 167 | .endmacro 168 | 169 | .macro PushW source 170 | PushB source+1 171 | PushB source+0 172 | .endmacro 173 | 174 | .macro PopB dest 175 | pla 176 | sta dest 177 | .endmacro 178 | 179 | .macro PopW dest 180 | PopB dest+0 181 | PopB dest+1 182 | .endmacro 183 | 184 | .macro bra addr 185 | clv 186 | bvc addr 187 | .endmacro 188 | 189 | .macro smb bitN, dest 190 | pha 191 | lda #1 << bitN 192 | ora dest 193 | sta dest 194 | pla 195 | .endmacro 196 | 197 | .macro smbf bitN, dest 198 | lda #1 << bitN 199 | ora dest 200 | sta dest 201 | .endmacro 202 | 203 | .macro smbf_ bitN, dest 204 | lda dest 205 | ora #1 << bitN 206 | sta dest 207 | .endmacro 208 | 209 | .macro rmb bitN, dest 210 | pha 211 | lda #(1 << bitN) ^ $ff 212 | and dest 213 | sta dest 214 | pla 215 | .endmacro 216 | 217 | .macro rmbf bitN, dest 218 | lda #(1 << bitN) ^ $ff 219 | and dest 220 | sta dest 221 | .endmacro 222 | 223 | .macro bbs bitN, source, addr 224 | .local @j 225 | php 226 | pha 227 | lda source 228 | and #1 << bitN 229 | beq @j 230 | pla 231 | plp 232 | bra addr 233 | @j: 234 | pla 235 | plp 236 | .endmacro 237 | 238 | .macro bbsf bitN, source, addr 239 | .if (bitN = 7) 240 | bit source 241 | bmi addr 242 | .else 243 | .if (bitN = 6) 244 | bit source 245 | bvs addr 246 | .else 247 | lda source 248 | and #1 << bitN 249 | bne addr 250 | .endif 251 | .endif 252 | .endmacro 253 | 254 | .macro bbr bitN, source, addr 255 | .local @j 256 | php 257 | pha 258 | lda source 259 | and #1 << bitN 260 | bne @j 261 | pla 262 | plp 263 | bra addr 264 | @j: 265 | pla 266 | plp 267 | .endmacro 268 | 269 | .macro bbrf bitN, source, addr 270 | .if (bitN = 7) 271 | bit source 272 | bpl addr 273 | .else 274 | .if (bitN = 6) 275 | bit source 276 | bvc addr 277 | .else 278 | lda source 279 | and #1 << bitN 280 | beq addr 281 | .endif 282 | .endif 283 | .endmacro 284 | 285 | ; not part of original macro set 286 | ; by Maciej Witkowiak 287 | 288 | .macro addv value 289 | clc 290 | adc #value 291 | .endmacro 292 | 293 | .macro subv value 294 | sec 295 | sbc #value 296 | .endmacro 297 | 298 | .macro bnex addr 299 | txa 300 | bne addr 301 | .endmacro 302 | 303 | .macro beqx addr 304 | txa 305 | beq addr 306 | .endmacro 307 | 308 | .macro IncW addr 309 | .local @j 310 | inc addr 311 | bne @j 312 | inc addr+1 313 | @j: 314 | .endmacro 315 | 316 | 317 | .macro ASSERT_NOT_BELOW_IO 318 | .assert * < $D000 || * >= $E000, error, "This code can't run below the C64 I/O area." 319 | .endmacro 320 | 321 | .ifdef bsw128 322 | .macro START_IO 323 | .endmacro 324 | .macro END_IO 325 | .endmacro 326 | .macro START_IO_X 327 | .endmacro 328 | .macro END_IO_X 329 | .endmacro 330 | .macro START_IO_Y 331 | .endmacro 332 | .macro END_IO_Y 333 | .endmacro 334 | .macro START_IO_128 335 | PushB config 336 | LoadB config, CIOIN 337 | .endmacro 338 | .macro END_IO_128 339 | PopB config 340 | .endmacro 341 | .else 342 | .macro START_IO 343 | PushB CPU_DATA 344 | ASSERT_NOT_BELOW_IO 345 | LoadB CPU_DATA, IO_IN 346 | .endmacro 347 | .macro END_IO 348 | PopB CPU_DATA 349 | ASSERT_NOT_BELOW_IO 350 | .endmacro 351 | .macro START_IO_X 352 | ldx CPU_DATA 353 | ASSERT_NOT_BELOW_IO 354 | LoadB CPU_DATA, IO_IN 355 | .endmacro 356 | .macro END_IO_X 357 | stx CPU_DATA 358 | ASSERT_NOT_BELOW_IO 359 | .endmacro 360 | .macro START_IO_Y 361 | ldy CPU_DATA 362 | ASSERT_NOT_BELOW_IO 363 | LoadB CPU_DATA, IO_IN 364 | .endmacro 365 | .macro END_IO_Y 366 | sty CPU_DATA 367 | ASSERT_NOT_BELOW_IO 368 | .endmacro 369 | .macro START_IO_128 370 | .endmacro 371 | .macro END_IO_128 372 | .endmacro 373 | .endif 374 | -------------------------------------------------------------------------------- /geowrite.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mist64/geowrite/640f1aba3a68c096c56fafc81b55772db391de35/geowrite.png -------------------------------------------------------------------------------- /jumptab.inc: -------------------------------------------------------------------------------- 1 | ; 2 | ;GEOS System Jump Table 3 | ;reassembled by Maciej 'YTM/Alliance' Witkowiak 4 | ;4-2-99 5 | 6 | ;jump table 7 | InterruptMain = $c100 8 | InitProcesses = $c103 9 | RestartProcess = $c106 10 | EnableProcess = $c109 11 | BlockProcess = $c10c 12 | UnblockProcess = $c10f 13 | FreezeProcess = $c112 14 | UnfreezeProcess = $c115 15 | HorizontalLine = $c118 16 | InvertLine = $c11b 17 | RecoverLine = $c11e 18 | VerticalLine = $c121 19 | Rectangle = $c124 20 | FrameRectangle = $c127 21 | InvertRectangle = $c12a 22 | RecoverRectangle = $c12d 23 | DrawLine = $c130 24 | DrawPoint = $c133 25 | GraphicsString = $c136 26 | SetPattern = $c139 27 | GetScanLine = $c13c 28 | TestPoint = $c13f 29 | BitmapUp = $c142 30 | PutChar = $c145 31 | PutString = $c148 32 | UseSystemFont = $c14b 33 | StartMouseMode = $c14e 34 | DoMenu = $c151 35 | RecoverMenu = $c154 36 | RecoverAllMenus = $c157 37 | DoIcons = $c15a 38 | DShiftLeft = $c15d 39 | BBMult = $c160 40 | BMult = $c163 41 | DMult = $c166 42 | Ddiv = $c169 43 | DSdiv = $c16c 44 | Dabs = $c16f 45 | Dnegate = $c172 46 | Ddec = $c175 47 | ClearRam = $c178 48 | FillRam = $c17b 49 | MoveData = $c17e 50 | InitRam = $c181 51 | PutDecimal = $c184 52 | GetRandom = $c187 53 | MouseUp = $c18a 54 | MouseOff = $c18d 55 | DoPreviousMenu = $c190 56 | ReDoMenu = $c193 57 | GetSerialNumber = $c196 58 | Sleep = $c199 59 | ClearMouseMode = $c19c 60 | i_Rectangle = $c19f 61 | i_FrameRectangle = $c1a2 62 | i_RecoverRectangle = $c1a5 63 | i_GraphicsString = $c1a8 64 | i_BitmapUp = $c1ab 65 | i_PutString = $c1ae 66 | GetRealSize = $c1b1 67 | i_FillRam = $c1b4 68 | i_MoveData = $c1b7 69 | GetString = $c1ba 70 | GotoFirstMenu = $c1bd 71 | InitTextPrompt = $c1c0 72 | MainLoop = $c1c3 73 | DrawSprite = $c1c6 74 | GetCharWidth = $c1c9 75 | LoadCharSet = $c1cc 76 | PosSprite = $c1cf 77 | EnablSprite = $c1d2 78 | DisablSprite = $c1d5 79 | CallRoutine = $c1d8 80 | CalcBlksFree = $c1db 81 | ChkDkGEOS = $c1de 82 | NewDisk = $c1e1 83 | GetBlock = $c1e4 84 | PutBlock = $c1e7 85 | SetGEOSDisk = $c1ea 86 | SaveFile = $c1ed 87 | SetGDirEntry = $c1f0 88 | BldGDirEntry = $c1f3 89 | GetFreeDirBlk = $c1f6 90 | WriteFile = $c1f9 91 | BlkAlloc = $c1fc 92 | ReadFile = $c1ff 93 | SmallPutChar = $c202 94 | FollowChain = $c205 95 | GetFile = $c208 96 | FindFile = $c20b 97 | CRC = $c20e 98 | LdFile = $c211 99 | EnterTurbo = $c214 100 | LdDeskAcc = $c217 101 | ReadBlock = $c21a 102 | LdApplic = $c21d 103 | WriteBlock = $c220 104 | VerWriteBlock = $c223 105 | FreeFile = $c226 106 | GetFHdrInfo = $c229 107 | EnterDeskTop = $c22c 108 | StartAppl = $c22f 109 | ExitTurbo = $c232 110 | PurgeTurbo = $c235 111 | DeleteFile = $c238 112 | FindFTypes = $c23b 113 | RstrAppl = $c23e 114 | ToBASIC = $c241 115 | FastDelFile = $c244 116 | GetDirHead = $c247 117 | PutDirHead = $c24a 118 | NxtBlkAlloc = $c24d 119 | ImprintRectangle = $c250 120 | i_ImprintRectangle = $c253 121 | DoDlgBox = $c256 122 | RenameFile = $c259 123 | InitForIO = $c25c 124 | DoneWithIO = $c25f 125 | DShiftRight = $c262 126 | CopyString = $c265 127 | CopyFString = $c268 128 | CmpString = $c26b 129 | CmpFString = $c26e 130 | FirstInit = $c271 131 | OpenRecordFile = $c274 132 | CloseRecordFile = $c277 133 | NextRecord = $c27a 134 | PreviousRecord = $c27d 135 | PointRecord = $c280 136 | DeleteRecord = $c283 137 | InsertRecord = $c286 138 | AppendRecord = $c289 139 | ReadRecord = $c28c 140 | WriteRecord = $c28f 141 | SetNextFree = $c292 142 | UpdateRecordFile = $c295 143 | GetPtrCurDkNm = $c298 144 | PromptOn = $c29b 145 | PromptOff = $c29e 146 | OpenDisk = $c2a1 147 | DoInlineReturn = $c2a4 148 | GetNextChar = $c2a7 149 | BitmapClip = $c2aa 150 | FindBAMBit = $c2ad 151 | SetDevice = $c2b0 152 | IsMseInRegion = $c2b3 153 | ReadByte = $c2b6 154 | FreeBlock = $c2b9 155 | ChangeDiskDevice = $c2bc 156 | RstrFrmDialogue = $c2bf 157 | Panic = $c2c2 158 | BitOtherClip = $c2c5 159 | StashRAM = $c2c8 160 | FetchRAM = $c2cb 161 | SwapRAM = $c2ce 162 | VerifyRAM = $c2d1 163 | DoRAMOp = $c2d4 164 | 165 | ;only in GEOS 128 166 | TempHideMouse = $c2d7 167 | SetMsePic = $c2da 168 | SetNewMode = $c2dd 169 | NormalizeX = $c2e0 170 | MoveBData = $c2e3 171 | SwapBData = $c2e6 172 | VerifyBData = $c2e9 173 | DoBOp = $c2ec 174 | AccessCache = $c2ef 175 | HideOnlyMouse = $c2f2 176 | SetColorMode = $c2f5 177 | ColorCard = $c2f8 178 | ColorRectangle = $c2fb ; Wheels renames this to ColorBox 179 | 180 | ; only in Wheels 181 | InitMachine = $c2fe 182 | GEOSOptimize = $c301 183 | DEFOptimize = $c304 184 | DoOptimize = $c307 185 | NFindFTypes = $c30a 186 | ReadXYPot = $c30d 187 | MainIRQ = $c310 188 | ColorRectangle_W = $c313 ; Original name is ColorRectangle 189 | i_ColorRectangle = $c316 190 | SaveColor = $c319 191 | RstrColor = $c31c 192 | ConvToCards = $c31f 193 | -------------------------------------------------------------------------------- /loadprinter.inc: -------------------------------------------------------------------------------- 1 | ; ---------------------------------------------------------------------------- 2 | ; geoWrite V2.1 (C64) 3 | ; shared code for loading the printer driver 4 | ; ---------------------------------------------------------------------------- 5 | ; reverse-engineered by Michael Steil, www.pagetable.com 6 | ; ---------------------------------------------------------------------------- 7 | 8 | loadPrinter: 9 | jsr setAppDrive 10 | ldx #0 11 | lda PrntFilename 12 | beq @2 13 | LoadW r6, PrntFilename 14 | LoadB r0L, 0 15 | jsr swapUserZp 16 | jsr GetFile 17 | jsr swapUserZp 18 | bit a9L 19 | bpl @rts 20 | beqx @rts 21 | cpx #FILE_NOT_FOUND 22 | bne @1 23 | LoadW r5, PrntFilename 24 | lda #dlgbox_cant_find_printer 26 | jsr doDlgBox 27 | ldx #$FF 28 | @rts: rts 29 | @1: lda #txt_reading_printer_driver 31 | jmp showIOError 32 | @2: ldx #$FF 33 | bit a9L 34 | bpl @rts 35 | lda #txt_no_printer 37 | jmp showError 38 | 39 | ; ---------------------------------------------------------------------------- 40 | dlgbox_cant_find_printer: 41 | .byte DEF_DB_POS|1 42 | .byte DBTXTSTR 43 | .byte 16 44 | .byte 16 45 | .word txt_cant_find_printer 46 | .byte DBVARSTR 47 | .byte 16 48 | .if LANG=LANG_DE 49 | .byte 48 50 | .else 51 | .byte 32 52 | .endif 53 | .byte 12 ; r12 54 | .byte OK 55 | .byte 17 56 | .byte 72 57 | .byte NULL 58 | 59 | -------------------------------------------------------------------------------- /loadprinter_strings.inc: -------------------------------------------------------------------------------- 1 | txt_no_printer: 2 | .byte BOLDON 3 | .if LANG=LANG_DE 4 | .byte "Kein Druckertreiber aktiv." 5 | .else 6 | .byte "No printer driver is selected." 7 | .endif 8 | .byte GOTOXY 9 | .word 80 10 | .byte 64 11 | .if LANG=LANG_DE 12 | .byte "Verwenden Sie 'Drucker w{hlen'" 13 | .else 14 | .byte "Use 'select printer' on the" 15 | .endif 16 | .byte GOTOXY 17 | .word 80 18 | .byte 80 19 | .if LANG=LANG_DE 20 | .byte "unter deskTop." 21 | .else 22 | .byte "deskTop to choose a printer." 23 | .endif 24 | .byte 0 25 | 26 | txt_reading_printer_driver: 27 | .if LANG=LANG_DE 28 | .byte "bez}glich Druckertreiber" 29 | .else 30 | .byte BOLDON 31 | .byte "reading printer driver." 32 | .endif 33 | .byte 0 34 | 35 | txt_cant_find_printer: 36 | .if LANG=LANG_DE 37 | .byte "Druckertreiber nicht" 38 | .byte GOTOXY 39 | .byte 80, 0 40 | .byte "@zu finden:" 41 | .else 42 | .byte "Can't find printer driver named:" 43 | .endif 44 | .byte BOLDON,0 45 | -------------------------------------------------------------------------------- /orig/cvt.py: -------------------------------------------------------------------------------- 1 | # http://unusedino.de/ec64/technical/formats/cvt.html 2 | 3 | import sys 4 | import math 5 | import pprint 6 | import os 7 | 8 | def decode_cvt(filename): 9 | data = bytearray(open(filename, "rb").read()) 10 | 11 | dentry = data[:0x1e] 12 | signature = data[0x1e:0x3a] 13 | empty = data[0x3a:0xfe] 14 | fhdr = bytearray([0, 0xff]) + data[0xfe:0x1fc] 15 | index = data[0x1fc:0x2fa] 16 | data = data[0x2fa:] 17 | 18 | if signature[:23] == "PRG formatted GEOS file": 19 | pass 20 | elif signature[:23] == "SEQ formatted GEOS file": 21 | raise Exception('SEQ CVT') 22 | else: 23 | print(signature) 24 | raise Exception('Missing signature') 25 | 26 | broken = False 27 | 28 | records = [] 29 | for i in range(0, 127): 30 | a1 = index[i * 2]; 31 | a2 = index[i * 2 + 1]; 32 | 33 | if a1 == 0x00 and a2 == 0xFF: 34 | records.append(None); 35 | else: 36 | if broken: 37 | chain_size = a1 * 254 + a2; 38 | skip_size = chain_size; 39 | else: 40 | chain_size = (a1 - 1) * 254 + a2 - 1; 41 | skip_size = a1 * 254; 42 | records.append(data[:chain_size]) 43 | data = data[skip_size:] 44 | 45 | return { 46 | "dentry" : dentry, 47 | "fhdr" : fhdr, 48 | "records": records 49 | } 50 | 51 | def encode_cvt(filename, cvt): 52 | data = bytearray() 53 | data.extend(cvt["dentry"]) 54 | signature = (bytearray("PRG formatted GEOS file", "utf-8") + bytearray(256 * [0]))[:224] 55 | data.extend(signature) 56 | data.extend(cvt["fhdr"][2:]) 57 | for i in range(0, 127): 58 | r = cvt["records"][i] 59 | if r: 60 | a1 = int(math.ceil(len(r)/254.0)) 61 | a2 = len(r) % 254 62 | if (a2 != 0): 63 | a2 += 1 64 | data.extend([a1, a2]) 65 | else: 66 | data.extend([0x00, 0xff]) 67 | for r in cvt["records"]: 68 | if r: 69 | data.extend(r) 70 | a1 = int(math.ceil(len(r)/254.0)) 71 | data.extend([0] * (a1 * 254 - len(r))) 72 | 73 | open(filename, "wb").write(data) 74 | 75 | res = decode_cvt(sys.argv[1]) 76 | #pprint.pprint(res) 77 | 78 | outname = os.path.splitext(sys.argv[1])[0] + ".vlir" 79 | 80 | os.mkdir(outname) 81 | open(outname + "/fhdr", "wb").write(res["fhdr"]) 82 | for i in range(0, 126): 83 | if res["records"][i]: 84 | open(outname + "/{:02x}".format(i), "wb").write(res["records"][i]) 85 | 86 | -------------------------------------------------------------------------------- /orig/decrypt.py: -------------------------------------------------------------------------------- 1 | #!/usr/local/bin/python3 2 | 3 | import sys 4 | 5 | data = bytearray(open(sys.argv[1], 'rb').read()) 6 | 7 | for i in range(0, len(data)): 8 | data[i] = data[i] ^ 0xde 9 | 10 | open(sys.argv[2], "wb").write(data) 11 | 12 | 13 | -------------------------------------------------------------------------------- /orig/geoWrite_de_1.3-1987-10-16.cvt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mist64/geowrite/640f1aba3a68c096c56fafc81b55772db391de35/orig/geoWrite_de_1.3-1987-10-16.cvt -------------------------------------------------------------------------------- /orig/geoWrite_de_1.3-1987-10-16.vlir/00: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mist64/geowrite/640f1aba3a68c096c56fafc81b55772db391de35/orig/geoWrite_de_1.3-1987-10-16.vlir/00 -------------------------------------------------------------------------------- /orig/geoWrite_de_1.3-1987-10-16.vlir/01: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mist64/geowrite/640f1aba3a68c096c56fafc81b55772db391de35/orig/geoWrite_de_1.3-1987-10-16.vlir/01 -------------------------------------------------------------------------------- /orig/geoWrite_de_1.3-1987-10-16.vlir/02: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mist64/geowrite/640f1aba3a68c096c56fafc81b55772db391de35/orig/geoWrite_de_1.3-1987-10-16.vlir/02 -------------------------------------------------------------------------------- /orig/geoWrite_de_1.3-1987-10-16.vlir/03: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mist64/geowrite/640f1aba3a68c096c56fafc81b55772db391de35/orig/geoWrite_de_1.3-1987-10-16.vlir/03 -------------------------------------------------------------------------------- /orig/geoWrite_de_1.3-1987-10-16.vlir/04: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mist64/geowrite/640f1aba3a68c096c56fafc81b55772db391de35/orig/geoWrite_de_1.3-1987-10-16.vlir/04 -------------------------------------------------------------------------------- /orig/geoWrite_de_1.3-1987-10-16.vlir/05: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mist64/geowrite/640f1aba3a68c096c56fafc81b55772db391de35/orig/geoWrite_de_1.3-1987-10-16.vlir/05 -------------------------------------------------------------------------------- /orig/geoWrite_de_1.3-1987-10-16.vlir/06: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mist64/geowrite/640f1aba3a68c096c56fafc81b55772db391de35/orig/geoWrite_de_1.3-1987-10-16.vlir/06 -------------------------------------------------------------------------------- /orig/geoWrite_de_1.3-1987-10-16.vlir/fhdr: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mist64/geowrite/640f1aba3a68c096c56fafc81b55772db391de35/orig/geoWrite_de_1.3-1987-10-16.vlir/fhdr -------------------------------------------------------------------------------- /orig/geoWrite_de_2.1_1987-12-11.cvt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mist64/geowrite/640f1aba3a68c096c56fafc81b55772db391de35/orig/geoWrite_de_2.1_1987-12-11.cvt -------------------------------------------------------------------------------- /orig/geoWrite_de_2.1_1987-12-11.vlir/00: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mist64/geowrite/640f1aba3a68c096c56fafc81b55772db391de35/orig/geoWrite_de_2.1_1987-12-11.vlir/00 -------------------------------------------------------------------------------- /orig/geoWrite_de_2.1_1987-12-11.vlir/01: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mist64/geowrite/640f1aba3a68c096c56fafc81b55772db391de35/orig/geoWrite_de_2.1_1987-12-11.vlir/01 -------------------------------------------------------------------------------- /orig/geoWrite_de_2.1_1987-12-11.vlir/01_plain: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mist64/geowrite/640f1aba3a68c096c56fafc81b55772db391de35/orig/geoWrite_de_2.1_1987-12-11.vlir/01_plain -------------------------------------------------------------------------------- /orig/geoWrite_de_2.1_1987-12-11.vlir/02: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mist64/geowrite/640f1aba3a68c096c56fafc81b55772db391de35/orig/geoWrite_de_2.1_1987-12-11.vlir/02 -------------------------------------------------------------------------------- /orig/geoWrite_de_2.1_1987-12-11.vlir/03: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mist64/geowrite/640f1aba3a68c096c56fafc81b55772db391de35/orig/geoWrite_de_2.1_1987-12-11.vlir/03 -------------------------------------------------------------------------------- /orig/geoWrite_de_2.1_1987-12-11.vlir/04: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mist64/geowrite/640f1aba3a68c096c56fafc81b55772db391de35/orig/geoWrite_de_2.1_1987-12-11.vlir/04 -------------------------------------------------------------------------------- /orig/geoWrite_de_2.1_1987-12-11.vlir/05: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mist64/geowrite/640f1aba3a68c096c56fafc81b55772db391de35/orig/geoWrite_de_2.1_1987-12-11.vlir/05 -------------------------------------------------------------------------------- /orig/geoWrite_de_2.1_1987-12-11.vlir/06: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mist64/geowrite/640f1aba3a68c096c56fafc81b55772db391de35/orig/geoWrite_de_2.1_1987-12-11.vlir/06 -------------------------------------------------------------------------------- /orig/geoWrite_de_2.1_1987-12-11.vlir/07: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mist64/geowrite/640f1aba3a68c096c56fafc81b55772db391de35/orig/geoWrite_de_2.1_1987-12-11.vlir/07 -------------------------------------------------------------------------------- /orig/geoWrite_de_2.1_1987-12-11.vlir/08: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mist64/geowrite/640f1aba3a68c096c56fafc81b55772db391de35/orig/geoWrite_de_2.1_1987-12-11.vlir/08 -------------------------------------------------------------------------------- /orig/geoWrite_de_2.1_1987-12-11.vlir/fhdr: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mist64/geowrite/640f1aba3a68c096c56fafc81b55772db391de35/orig/geoWrite_de_2.1_1987-12-11.vlir/fhdr -------------------------------------------------------------------------------- /orig/geoWrite_de_2.1_1989-01-03.cvt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mist64/geowrite/640f1aba3a68c096c56fafc81b55772db391de35/orig/geoWrite_de_2.1_1989-01-03.cvt -------------------------------------------------------------------------------- /orig/geoWrite_de_2.1_1989-01-03.vlir/00: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mist64/geowrite/640f1aba3a68c096c56fafc81b55772db391de35/orig/geoWrite_de_2.1_1989-01-03.vlir/00 -------------------------------------------------------------------------------- /orig/geoWrite_de_2.1_1989-01-03.vlir/01: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mist64/geowrite/640f1aba3a68c096c56fafc81b55772db391de35/orig/geoWrite_de_2.1_1989-01-03.vlir/01 -------------------------------------------------------------------------------- /orig/geoWrite_de_2.1_1989-01-03.vlir/01_plain: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mist64/geowrite/640f1aba3a68c096c56fafc81b55772db391de35/orig/geoWrite_de_2.1_1989-01-03.vlir/01_plain -------------------------------------------------------------------------------- /orig/geoWrite_de_2.1_1989-01-03.vlir/02: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mist64/geowrite/640f1aba3a68c096c56fafc81b55772db391de35/orig/geoWrite_de_2.1_1989-01-03.vlir/02 -------------------------------------------------------------------------------- /orig/geoWrite_de_2.1_1989-01-03.vlir/03: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mist64/geowrite/640f1aba3a68c096c56fafc81b55772db391de35/orig/geoWrite_de_2.1_1989-01-03.vlir/03 -------------------------------------------------------------------------------- /orig/geoWrite_de_2.1_1989-01-03.vlir/04: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mist64/geowrite/640f1aba3a68c096c56fafc81b55772db391de35/orig/geoWrite_de_2.1_1989-01-03.vlir/04 -------------------------------------------------------------------------------- /orig/geoWrite_de_2.1_1989-01-03.vlir/05: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mist64/geowrite/640f1aba3a68c096c56fafc81b55772db391de35/orig/geoWrite_de_2.1_1989-01-03.vlir/05 -------------------------------------------------------------------------------- /orig/geoWrite_de_2.1_1989-01-03.vlir/06: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mist64/geowrite/640f1aba3a68c096c56fafc81b55772db391de35/orig/geoWrite_de_2.1_1989-01-03.vlir/06 -------------------------------------------------------------------------------- /orig/geoWrite_de_2.1_1989-01-03.vlir/07: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mist64/geowrite/640f1aba3a68c096c56fafc81b55772db391de35/orig/geoWrite_de_2.1_1989-01-03.vlir/07 -------------------------------------------------------------------------------- /orig/geoWrite_de_2.1_1989-01-03.vlir/08: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mist64/geowrite/640f1aba3a68c096c56fafc81b55772db391de35/orig/geoWrite_de_2.1_1989-01-03.vlir/08 -------------------------------------------------------------------------------- /orig/geoWrite_de_2.1_1989-01-03.vlir/fhdr: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mist64/geowrite/640f1aba3a68c096c56fafc81b55772db391de35/orig/geoWrite_de_2.1_1989-01-03.vlir/fhdr -------------------------------------------------------------------------------- /orig/geoWrite_de_2.1_1989-01-03_plus4.cvt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mist64/geowrite/640f1aba3a68c096c56fafc81b55772db391de35/orig/geoWrite_de_2.1_1989-01-03_plus4.cvt -------------------------------------------------------------------------------- /orig/geoWrite_de_2.1_1989-01-03_plus4.vlir/00: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mist64/geowrite/640f1aba3a68c096c56fafc81b55772db391de35/orig/geoWrite_de_2.1_1989-01-03_plus4.vlir/00 -------------------------------------------------------------------------------- /orig/geoWrite_de_2.1_1989-01-03_plus4.vlir/01: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mist64/geowrite/640f1aba3a68c096c56fafc81b55772db391de35/orig/geoWrite_de_2.1_1989-01-03_plus4.vlir/01 -------------------------------------------------------------------------------- /orig/geoWrite_de_2.1_1989-01-03_plus4.vlir/01_plain: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mist64/geowrite/640f1aba3a68c096c56fafc81b55772db391de35/orig/geoWrite_de_2.1_1989-01-03_plus4.vlir/01_plain -------------------------------------------------------------------------------- /orig/geoWrite_de_2.1_1989-01-03_plus4.vlir/02: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mist64/geowrite/640f1aba3a68c096c56fafc81b55772db391de35/orig/geoWrite_de_2.1_1989-01-03_plus4.vlir/02 -------------------------------------------------------------------------------- /orig/geoWrite_de_2.1_1989-01-03_plus4.vlir/03: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mist64/geowrite/640f1aba3a68c096c56fafc81b55772db391de35/orig/geoWrite_de_2.1_1989-01-03_plus4.vlir/03 -------------------------------------------------------------------------------- /orig/geoWrite_de_2.1_1989-01-03_plus4.vlir/04: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mist64/geowrite/640f1aba3a68c096c56fafc81b55772db391de35/orig/geoWrite_de_2.1_1989-01-03_plus4.vlir/04 -------------------------------------------------------------------------------- /orig/geoWrite_de_2.1_1989-01-03_plus4.vlir/05: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mist64/geowrite/640f1aba3a68c096c56fafc81b55772db391de35/orig/geoWrite_de_2.1_1989-01-03_plus4.vlir/05 -------------------------------------------------------------------------------- /orig/geoWrite_de_2.1_1989-01-03_plus4.vlir/06: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mist64/geowrite/640f1aba3a68c096c56fafc81b55772db391de35/orig/geoWrite_de_2.1_1989-01-03_plus4.vlir/06 -------------------------------------------------------------------------------- /orig/geoWrite_de_2.1_1989-01-03_plus4.vlir/07: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mist64/geowrite/640f1aba3a68c096c56fafc81b55772db391de35/orig/geoWrite_de_2.1_1989-01-03_plus4.vlir/07 -------------------------------------------------------------------------------- /orig/geoWrite_de_2.1_1989-01-03_plus4.vlir/08: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mist64/geowrite/640f1aba3a68c096c56fafc81b55772db391de35/orig/geoWrite_de_2.1_1989-01-03_plus4.vlir/08 -------------------------------------------------------------------------------- /orig/geoWrite_de_2.1_1989-01-03_plus4.vlir/fhdr: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mist64/geowrite/640f1aba3a68c096c56fafc81b55772db391de35/orig/geoWrite_de_2.1_1989-01-03_plus4.vlir/fhdr -------------------------------------------------------------------------------- /orig/geoWrite_de_2.1_1989-01-03_plus4_alt.cvt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mist64/geowrite/640f1aba3a68c096c56fafc81b55772db391de35/orig/geoWrite_de_2.1_1989-01-03_plus4_alt.cvt -------------------------------------------------------------------------------- /orig/geoWrite_de_2.1_1989-01-03_plus4_alt.vlir/00: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mist64/geowrite/640f1aba3a68c096c56fafc81b55772db391de35/orig/geoWrite_de_2.1_1989-01-03_plus4_alt.vlir/00 -------------------------------------------------------------------------------- /orig/geoWrite_de_2.1_1989-01-03_plus4_alt.vlir/01: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mist64/geowrite/640f1aba3a68c096c56fafc81b55772db391de35/orig/geoWrite_de_2.1_1989-01-03_plus4_alt.vlir/01 -------------------------------------------------------------------------------- /orig/geoWrite_de_2.1_1989-01-03_plus4_alt.vlir/01_plain: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mist64/geowrite/640f1aba3a68c096c56fafc81b55772db391de35/orig/geoWrite_de_2.1_1989-01-03_plus4_alt.vlir/01_plain -------------------------------------------------------------------------------- /orig/geoWrite_de_2.1_1989-01-03_plus4_alt.vlir/02: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mist64/geowrite/640f1aba3a68c096c56fafc81b55772db391de35/orig/geoWrite_de_2.1_1989-01-03_plus4_alt.vlir/02 -------------------------------------------------------------------------------- /orig/geoWrite_de_2.1_1989-01-03_plus4_alt.vlir/03: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mist64/geowrite/640f1aba3a68c096c56fafc81b55772db391de35/orig/geoWrite_de_2.1_1989-01-03_plus4_alt.vlir/03 -------------------------------------------------------------------------------- /orig/geoWrite_de_2.1_1989-01-03_plus4_alt.vlir/04: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mist64/geowrite/640f1aba3a68c096c56fafc81b55772db391de35/orig/geoWrite_de_2.1_1989-01-03_plus4_alt.vlir/04 -------------------------------------------------------------------------------- /orig/geoWrite_de_2.1_1989-01-03_plus4_alt.vlir/05: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mist64/geowrite/640f1aba3a68c096c56fafc81b55772db391de35/orig/geoWrite_de_2.1_1989-01-03_plus4_alt.vlir/05 -------------------------------------------------------------------------------- /orig/geoWrite_de_2.1_1989-01-03_plus4_alt.vlir/06: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mist64/geowrite/640f1aba3a68c096c56fafc81b55772db391de35/orig/geoWrite_de_2.1_1989-01-03_plus4_alt.vlir/06 -------------------------------------------------------------------------------- /orig/geoWrite_de_2.1_1989-01-03_plus4_alt.vlir/07: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mist64/geowrite/640f1aba3a68c096c56fafc81b55772db391de35/orig/geoWrite_de_2.1_1989-01-03_plus4_alt.vlir/07 -------------------------------------------------------------------------------- /orig/geoWrite_de_2.1_1989-01-03_plus4_alt.vlir/08: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mist64/geowrite/640f1aba3a68c096c56fafc81b55772db391de35/orig/geoWrite_de_2.1_1989-01-03_plus4_alt.vlir/08 -------------------------------------------------------------------------------- /orig/geoWrite_de_2.1_1989-01-03_plus4_alt.vlir/fhdr: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mist64/geowrite/640f1aba3a68c096c56fafc81b55772db391de35/orig/geoWrite_de_2.1_1989-01-03_plus4_alt.vlir/fhdr -------------------------------------------------------------------------------- /orig/geoWrite_de_2.1_1989-01-03_plus4_alt2.cvt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mist64/geowrite/640f1aba3a68c096c56fafc81b55772db391de35/orig/geoWrite_de_2.1_1989-01-03_plus4_alt2.cvt -------------------------------------------------------------------------------- /orig/geoWrite_de_2.1_1989-01-03_plus4_alt2.vlir/00: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mist64/geowrite/640f1aba3a68c096c56fafc81b55772db391de35/orig/geoWrite_de_2.1_1989-01-03_plus4_alt2.vlir/00 -------------------------------------------------------------------------------- /orig/geoWrite_de_2.1_1989-01-03_plus4_alt2.vlir/01: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mist64/geowrite/640f1aba3a68c096c56fafc81b55772db391de35/orig/geoWrite_de_2.1_1989-01-03_plus4_alt2.vlir/01 -------------------------------------------------------------------------------- /orig/geoWrite_de_2.1_1989-01-03_plus4_alt2.vlir/01_plain: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mist64/geowrite/640f1aba3a68c096c56fafc81b55772db391de35/orig/geoWrite_de_2.1_1989-01-03_plus4_alt2.vlir/01_plain -------------------------------------------------------------------------------- /orig/geoWrite_de_2.1_1989-01-03_plus4_alt2.vlir/02: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mist64/geowrite/640f1aba3a68c096c56fafc81b55772db391de35/orig/geoWrite_de_2.1_1989-01-03_plus4_alt2.vlir/02 -------------------------------------------------------------------------------- /orig/geoWrite_de_2.1_1989-01-03_plus4_alt2.vlir/03: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mist64/geowrite/640f1aba3a68c096c56fafc81b55772db391de35/orig/geoWrite_de_2.1_1989-01-03_plus4_alt2.vlir/03 -------------------------------------------------------------------------------- /orig/geoWrite_de_2.1_1989-01-03_plus4_alt2.vlir/04: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mist64/geowrite/640f1aba3a68c096c56fafc81b55772db391de35/orig/geoWrite_de_2.1_1989-01-03_plus4_alt2.vlir/04 -------------------------------------------------------------------------------- /orig/geoWrite_de_2.1_1989-01-03_plus4_alt2.vlir/05: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mist64/geowrite/640f1aba3a68c096c56fafc81b55772db391de35/orig/geoWrite_de_2.1_1989-01-03_plus4_alt2.vlir/05 -------------------------------------------------------------------------------- /orig/geoWrite_de_2.1_1989-01-03_plus4_alt2.vlir/06: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mist64/geowrite/640f1aba3a68c096c56fafc81b55772db391de35/orig/geoWrite_de_2.1_1989-01-03_plus4_alt2.vlir/06 -------------------------------------------------------------------------------- /orig/geoWrite_de_2.1_1989-01-03_plus4_alt2.vlir/07: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mist64/geowrite/640f1aba3a68c096c56fafc81b55772db391de35/orig/geoWrite_de_2.1_1989-01-03_plus4_alt2.vlir/07 -------------------------------------------------------------------------------- /orig/geoWrite_de_2.1_1989-01-03_plus4_alt2.vlir/08: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mist64/geowrite/640f1aba3a68c096c56fafc81b55772db391de35/orig/geoWrite_de_2.1_1989-01-03_plus4_alt2.vlir/08 -------------------------------------------------------------------------------- /orig/geoWrite_de_2.1_1989-01-03_plus4_alt2.vlir/fhdr: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mist64/geowrite/640f1aba3a68c096c56fafc81b55772db391de35/orig/geoWrite_de_2.1_1989-01-03_plus4_alt2.vlir/fhdr -------------------------------------------------------------------------------- /orig/geoWrite_de_2.1_1996-02-08_ww.cvt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mist64/geowrite/640f1aba3a68c096c56fafc81b55772db391de35/orig/geoWrite_de_2.1_1996-02-08_ww.cvt -------------------------------------------------------------------------------- /orig/geoWrite_de_2.1_1996-02-08_ww.vlir/00: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mist64/geowrite/640f1aba3a68c096c56fafc81b55772db391de35/orig/geoWrite_de_2.1_1996-02-08_ww.vlir/00 -------------------------------------------------------------------------------- /orig/geoWrite_de_2.1_1996-02-08_ww.vlir/01: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mist64/geowrite/640f1aba3a68c096c56fafc81b55772db391de35/orig/geoWrite_de_2.1_1996-02-08_ww.vlir/01 -------------------------------------------------------------------------------- /orig/geoWrite_de_2.1_1996-02-08_ww.vlir/01_plain: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mist64/geowrite/640f1aba3a68c096c56fafc81b55772db391de35/orig/geoWrite_de_2.1_1996-02-08_ww.vlir/01_plain -------------------------------------------------------------------------------- /orig/geoWrite_de_2.1_1996-02-08_ww.vlir/02: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mist64/geowrite/640f1aba3a68c096c56fafc81b55772db391de35/orig/geoWrite_de_2.1_1996-02-08_ww.vlir/02 -------------------------------------------------------------------------------- /orig/geoWrite_de_2.1_1996-02-08_ww.vlir/03: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mist64/geowrite/640f1aba3a68c096c56fafc81b55772db391de35/orig/geoWrite_de_2.1_1996-02-08_ww.vlir/03 -------------------------------------------------------------------------------- /orig/geoWrite_de_2.1_1996-02-08_ww.vlir/04: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mist64/geowrite/640f1aba3a68c096c56fafc81b55772db391de35/orig/geoWrite_de_2.1_1996-02-08_ww.vlir/04 -------------------------------------------------------------------------------- /orig/geoWrite_de_2.1_1996-02-08_ww.vlir/05: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mist64/geowrite/640f1aba3a68c096c56fafc81b55772db391de35/orig/geoWrite_de_2.1_1996-02-08_ww.vlir/05 -------------------------------------------------------------------------------- /orig/geoWrite_de_2.1_1996-02-08_ww.vlir/06: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mist64/geowrite/640f1aba3a68c096c56fafc81b55772db391de35/orig/geoWrite_de_2.1_1996-02-08_ww.vlir/06 -------------------------------------------------------------------------------- /orig/geoWrite_de_2.1_1996-02-08_ww.vlir/07: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mist64/geowrite/640f1aba3a68c096c56fafc81b55772db391de35/orig/geoWrite_de_2.1_1996-02-08_ww.vlir/07 -------------------------------------------------------------------------------- /orig/geoWrite_de_2.1_1996-02-08_ww.vlir/08: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mist64/geowrite/640f1aba3a68c096c56fafc81b55772db391de35/orig/geoWrite_de_2.1_1996-02-08_ww.vlir/08 -------------------------------------------------------------------------------- /orig/geoWrite_de_2.1_1996-02-08_ww.vlir/fhdr: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mist64/geowrite/640f1aba3a68c096c56fafc81b55772db391de35/orig/geoWrite_de_2.1_1996-02-08_ww.vlir/fhdr -------------------------------------------------------------------------------- /orig/geoWrite_de_2.2_1993-08-08_fr.cvt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mist64/geowrite/640f1aba3a68c096c56fafc81b55772db391de35/orig/geoWrite_de_2.2_1993-08-08_fr.cvt -------------------------------------------------------------------------------- /orig/geoWrite_de_2.2_1993-08-08_fr.vlir/00: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mist64/geowrite/640f1aba3a68c096c56fafc81b55772db391de35/orig/geoWrite_de_2.2_1993-08-08_fr.vlir/00 -------------------------------------------------------------------------------- /orig/geoWrite_de_2.2_1993-08-08_fr.vlir/01: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mist64/geowrite/640f1aba3a68c096c56fafc81b55772db391de35/orig/geoWrite_de_2.2_1993-08-08_fr.vlir/01 -------------------------------------------------------------------------------- /orig/geoWrite_de_2.2_1993-08-08_fr.vlir/01_plain: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mist64/geowrite/640f1aba3a68c096c56fafc81b55772db391de35/orig/geoWrite_de_2.2_1993-08-08_fr.vlir/01_plain -------------------------------------------------------------------------------- /orig/geoWrite_de_2.2_1993-08-08_fr.vlir/02: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mist64/geowrite/640f1aba3a68c096c56fafc81b55772db391de35/orig/geoWrite_de_2.2_1993-08-08_fr.vlir/02 -------------------------------------------------------------------------------- /orig/geoWrite_de_2.2_1993-08-08_fr.vlir/03: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mist64/geowrite/640f1aba3a68c096c56fafc81b55772db391de35/orig/geoWrite_de_2.2_1993-08-08_fr.vlir/03 -------------------------------------------------------------------------------- /orig/geoWrite_de_2.2_1993-08-08_fr.vlir/04: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mist64/geowrite/640f1aba3a68c096c56fafc81b55772db391de35/orig/geoWrite_de_2.2_1993-08-08_fr.vlir/04 -------------------------------------------------------------------------------- /orig/geoWrite_de_2.2_1993-08-08_fr.vlir/05: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mist64/geowrite/640f1aba3a68c096c56fafc81b55772db391de35/orig/geoWrite_de_2.2_1993-08-08_fr.vlir/05 -------------------------------------------------------------------------------- /orig/geoWrite_de_2.2_1993-08-08_fr.vlir/06: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mist64/geowrite/640f1aba3a68c096c56fafc81b55772db391de35/orig/geoWrite_de_2.2_1993-08-08_fr.vlir/06 -------------------------------------------------------------------------------- /orig/geoWrite_de_2.2_1993-08-08_fr.vlir/07: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mist64/geowrite/640f1aba3a68c096c56fafc81b55772db391de35/orig/geoWrite_de_2.2_1993-08-08_fr.vlir/07 -------------------------------------------------------------------------------- /orig/geoWrite_de_2.2_1993-08-08_fr.vlir/08: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mist64/geowrite/640f1aba3a68c096c56fafc81b55772db391de35/orig/geoWrite_de_2.2_1993-08-08_fr.vlir/08 -------------------------------------------------------------------------------- /orig/geoWrite_de_2.2_1993-08-08_fr.vlir/fhdr: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mist64/geowrite/640f1aba3a68c096c56fafc81b55772db391de35/orig/geoWrite_de_2.2_1993-08-08_fr.vlir/fhdr -------------------------------------------------------------------------------- /orig/geoWrite_de_2.2_1996-02-10_fr_ww.cvt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mist64/geowrite/640f1aba3a68c096c56fafc81b55772db391de35/orig/geoWrite_de_2.2_1996-02-10_fr_ww.cvt -------------------------------------------------------------------------------- /orig/geoWrite_de_2.2_1996-02-10_fr_ww.vlir/00: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mist64/geowrite/640f1aba3a68c096c56fafc81b55772db391de35/orig/geoWrite_de_2.2_1996-02-10_fr_ww.vlir/00 -------------------------------------------------------------------------------- /orig/geoWrite_de_2.2_1996-02-10_fr_ww.vlir/01: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mist64/geowrite/640f1aba3a68c096c56fafc81b55772db391de35/orig/geoWrite_de_2.2_1996-02-10_fr_ww.vlir/01 -------------------------------------------------------------------------------- /orig/geoWrite_de_2.2_1996-02-10_fr_ww.vlir/01_plain: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mist64/geowrite/640f1aba3a68c096c56fafc81b55772db391de35/orig/geoWrite_de_2.2_1996-02-10_fr_ww.vlir/01_plain -------------------------------------------------------------------------------- /orig/geoWrite_de_2.2_1996-02-10_fr_ww.vlir/02: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mist64/geowrite/640f1aba3a68c096c56fafc81b55772db391de35/orig/geoWrite_de_2.2_1996-02-10_fr_ww.vlir/02 -------------------------------------------------------------------------------- /orig/geoWrite_de_2.2_1996-02-10_fr_ww.vlir/03: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mist64/geowrite/640f1aba3a68c096c56fafc81b55772db391de35/orig/geoWrite_de_2.2_1996-02-10_fr_ww.vlir/03 -------------------------------------------------------------------------------- /orig/geoWrite_de_2.2_1996-02-10_fr_ww.vlir/04: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mist64/geowrite/640f1aba3a68c096c56fafc81b55772db391de35/orig/geoWrite_de_2.2_1996-02-10_fr_ww.vlir/04 -------------------------------------------------------------------------------- /orig/geoWrite_de_2.2_1996-02-10_fr_ww.vlir/05: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mist64/geowrite/640f1aba3a68c096c56fafc81b55772db391de35/orig/geoWrite_de_2.2_1996-02-10_fr_ww.vlir/05 -------------------------------------------------------------------------------- /orig/geoWrite_de_2.2_1996-02-10_fr_ww.vlir/06: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mist64/geowrite/640f1aba3a68c096c56fafc81b55772db391de35/orig/geoWrite_de_2.2_1996-02-10_fr_ww.vlir/06 -------------------------------------------------------------------------------- /orig/geoWrite_de_2.2_1996-02-10_fr_ww.vlir/07: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mist64/geowrite/640f1aba3a68c096c56fafc81b55772db391de35/orig/geoWrite_de_2.2_1996-02-10_fr_ww.vlir/07 -------------------------------------------------------------------------------- /orig/geoWrite_de_2.2_1996-02-10_fr_ww.vlir/08: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mist64/geowrite/640f1aba3a68c096c56fafc81b55772db391de35/orig/geoWrite_de_2.2_1996-02-10_fr_ww.vlir/08 -------------------------------------------------------------------------------- /orig/geoWrite_de_2.2_1996-02-10_fr_ww.vlir/fhdr: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mist64/geowrite/640f1aba3a68c096c56fafc81b55772db391de35/orig/geoWrite_de_2.2_1996-02-10_fr_ww.vlir/fhdr -------------------------------------------------------------------------------- /orig/geoWrite_de_2.2_1996-11-04_fr_ww.cvt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mist64/geowrite/640f1aba3a68c096c56fafc81b55772db391de35/orig/geoWrite_de_2.2_1996-11-04_fr_ww.cvt -------------------------------------------------------------------------------- /orig/geoWrite_de_2.2_1996-11-04_fr_ww.vlir/00: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mist64/geowrite/640f1aba3a68c096c56fafc81b55772db391de35/orig/geoWrite_de_2.2_1996-11-04_fr_ww.vlir/00 -------------------------------------------------------------------------------- /orig/geoWrite_de_2.2_1996-11-04_fr_ww.vlir/01: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mist64/geowrite/640f1aba3a68c096c56fafc81b55772db391de35/orig/geoWrite_de_2.2_1996-11-04_fr_ww.vlir/01 -------------------------------------------------------------------------------- /orig/geoWrite_de_2.2_1996-11-04_fr_ww.vlir/01_plain: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mist64/geowrite/640f1aba3a68c096c56fafc81b55772db391de35/orig/geoWrite_de_2.2_1996-11-04_fr_ww.vlir/01_plain -------------------------------------------------------------------------------- /orig/geoWrite_de_2.2_1996-11-04_fr_ww.vlir/02: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mist64/geowrite/640f1aba3a68c096c56fafc81b55772db391de35/orig/geoWrite_de_2.2_1996-11-04_fr_ww.vlir/02 -------------------------------------------------------------------------------- /orig/geoWrite_de_2.2_1996-11-04_fr_ww.vlir/03: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mist64/geowrite/640f1aba3a68c096c56fafc81b55772db391de35/orig/geoWrite_de_2.2_1996-11-04_fr_ww.vlir/03 -------------------------------------------------------------------------------- /orig/geoWrite_de_2.2_1996-11-04_fr_ww.vlir/04: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mist64/geowrite/640f1aba3a68c096c56fafc81b55772db391de35/orig/geoWrite_de_2.2_1996-11-04_fr_ww.vlir/04 -------------------------------------------------------------------------------- /orig/geoWrite_de_2.2_1996-11-04_fr_ww.vlir/05: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mist64/geowrite/640f1aba3a68c096c56fafc81b55772db391de35/orig/geoWrite_de_2.2_1996-11-04_fr_ww.vlir/05 -------------------------------------------------------------------------------- /orig/geoWrite_de_2.2_1996-11-04_fr_ww.vlir/06: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mist64/geowrite/640f1aba3a68c096c56fafc81b55772db391de35/orig/geoWrite_de_2.2_1996-11-04_fr_ww.vlir/06 -------------------------------------------------------------------------------- /orig/geoWrite_de_2.2_1996-11-04_fr_ww.vlir/07: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mist64/geowrite/640f1aba3a68c096c56fafc81b55772db391de35/orig/geoWrite_de_2.2_1996-11-04_fr_ww.vlir/07 -------------------------------------------------------------------------------- /orig/geoWrite_de_2.2_1996-11-04_fr_ww.vlir/08: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mist64/geowrite/640f1aba3a68c096c56fafc81b55772db391de35/orig/geoWrite_de_2.2_1996-11-04_fr_ww.vlir/08 -------------------------------------------------------------------------------- /orig/geoWrite_de_2.2_1996-11-04_fr_ww.vlir/fhdr: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mist64/geowrite/640f1aba3a68c096c56fafc81b55772db391de35/orig/geoWrite_de_2.2_1996-11-04_fr_ww.vlir/fhdr -------------------------------------------------------------------------------- /orig/geoWrite_en_1.0-1986-03-07.cvt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mist64/geowrite/640f1aba3a68c096c56fafc81b55772db391de35/orig/geoWrite_en_1.0-1986-03-07.cvt -------------------------------------------------------------------------------- /orig/geoWrite_en_1.0-1986-03-07.vlir/00: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mist64/geowrite/640f1aba3a68c096c56fafc81b55772db391de35/orig/geoWrite_en_1.0-1986-03-07.vlir/00 -------------------------------------------------------------------------------- /orig/geoWrite_en_1.0-1986-03-07.vlir/01: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mist64/geowrite/640f1aba3a68c096c56fafc81b55772db391de35/orig/geoWrite_en_1.0-1986-03-07.vlir/01 -------------------------------------------------------------------------------- /orig/geoWrite_en_1.0-1986-03-07.vlir/fhdr: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mist64/geowrite/640f1aba3a68c096c56fafc81b55772db391de35/orig/geoWrite_en_1.0-1986-03-07.vlir/fhdr -------------------------------------------------------------------------------- /orig/geoWrite_en_1.1-1986-04-07.cvt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mist64/geowrite/640f1aba3a68c096c56fafc81b55772db391de35/orig/geoWrite_en_1.1-1986-04-07.cvt -------------------------------------------------------------------------------- /orig/geoWrite_en_1.1-1986-04-07.vlir/00: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mist64/geowrite/640f1aba3a68c096c56fafc81b55772db391de35/orig/geoWrite_en_1.1-1986-04-07.vlir/00 -------------------------------------------------------------------------------- /orig/geoWrite_en_1.1-1986-04-07.vlir/01: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mist64/geowrite/640f1aba3a68c096c56fafc81b55772db391de35/orig/geoWrite_en_1.1-1986-04-07.vlir/01 -------------------------------------------------------------------------------- /orig/geoWrite_en_1.1-1986-04-07.vlir/02: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mist64/geowrite/640f1aba3a68c096c56fafc81b55772db391de35/orig/geoWrite_en_1.1-1986-04-07.vlir/02 -------------------------------------------------------------------------------- /orig/geoWrite_en_1.1-1986-04-07.vlir/03: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mist64/geowrite/640f1aba3a68c096c56fafc81b55772db391de35/orig/geoWrite_en_1.1-1986-04-07.vlir/03 -------------------------------------------------------------------------------- /orig/geoWrite_en_1.1-1986-04-07.vlir/04: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mist64/geowrite/640f1aba3a68c096c56fafc81b55772db391de35/orig/geoWrite_en_1.1-1986-04-07.vlir/04 -------------------------------------------------------------------------------- /orig/geoWrite_en_1.1-1986-04-07.vlir/05: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mist64/geowrite/640f1aba3a68c096c56fafc81b55772db391de35/orig/geoWrite_en_1.1-1986-04-07.vlir/05 -------------------------------------------------------------------------------- /orig/geoWrite_en_1.1-1986-04-07.vlir/06: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mist64/geowrite/640f1aba3a68c096c56fafc81b55772db391de35/orig/geoWrite_en_1.1-1986-04-07.vlir/06 -------------------------------------------------------------------------------- /orig/geoWrite_en_1.1-1986-04-07.vlir/fhdr: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mist64/geowrite/640f1aba3a68c096c56fafc81b55772db391de35/orig/geoWrite_en_1.1-1986-04-07.vlir/fhdr -------------------------------------------------------------------------------- /orig/geoWrite_en_1.1-1986-04-07_alt.cvt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mist64/geowrite/640f1aba3a68c096c56fafc81b55772db391de35/orig/geoWrite_en_1.1-1986-04-07_alt.cvt -------------------------------------------------------------------------------- /orig/geoWrite_en_1.1-1986-04-07_alt.vlir/00: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mist64/geowrite/640f1aba3a68c096c56fafc81b55772db391de35/orig/geoWrite_en_1.1-1986-04-07_alt.vlir/00 -------------------------------------------------------------------------------- /orig/geoWrite_en_1.1-1986-04-07_alt.vlir/01: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mist64/geowrite/640f1aba3a68c096c56fafc81b55772db391de35/orig/geoWrite_en_1.1-1986-04-07_alt.vlir/01 -------------------------------------------------------------------------------- /orig/geoWrite_en_1.1-1986-04-07_alt.vlir/02: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mist64/geowrite/640f1aba3a68c096c56fafc81b55772db391de35/orig/geoWrite_en_1.1-1986-04-07_alt.vlir/02 -------------------------------------------------------------------------------- /orig/geoWrite_en_1.1-1986-04-07_alt.vlir/03: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mist64/geowrite/640f1aba3a68c096c56fafc81b55772db391de35/orig/geoWrite_en_1.1-1986-04-07_alt.vlir/03 -------------------------------------------------------------------------------- /orig/geoWrite_en_1.1-1986-04-07_alt.vlir/04: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mist64/geowrite/640f1aba3a68c096c56fafc81b55772db391de35/orig/geoWrite_en_1.1-1986-04-07_alt.vlir/04 -------------------------------------------------------------------------------- /orig/geoWrite_en_1.1-1986-04-07_alt.vlir/05: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mist64/geowrite/640f1aba3a68c096c56fafc81b55772db391de35/orig/geoWrite_en_1.1-1986-04-07_alt.vlir/05 -------------------------------------------------------------------------------- /orig/geoWrite_en_1.1-1986-04-07_alt.vlir/06: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mist64/geowrite/640f1aba3a68c096c56fafc81b55772db391de35/orig/geoWrite_en_1.1-1986-04-07_alt.vlir/06 -------------------------------------------------------------------------------- /orig/geoWrite_en_1.1-1986-04-07_alt.vlir/fhdr: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mist64/geowrite/640f1aba3a68c096c56fafc81b55772db391de35/orig/geoWrite_en_1.1-1986-04-07_alt.vlir/fhdr -------------------------------------------------------------------------------- /orig/geoWrite_en_1.3-1986-10-05.cvt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mist64/geowrite/640f1aba3a68c096c56fafc81b55772db391de35/orig/geoWrite_en_1.3-1986-10-05.cvt -------------------------------------------------------------------------------- /orig/geoWrite_en_1.3-1986-10-05.vlir/00: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mist64/geowrite/640f1aba3a68c096c56fafc81b55772db391de35/orig/geoWrite_en_1.3-1986-10-05.vlir/00 -------------------------------------------------------------------------------- /orig/geoWrite_en_1.3-1986-10-05.vlir/01: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mist64/geowrite/640f1aba3a68c096c56fafc81b55772db391de35/orig/geoWrite_en_1.3-1986-10-05.vlir/01 -------------------------------------------------------------------------------- /orig/geoWrite_en_1.3-1986-10-05.vlir/02: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mist64/geowrite/640f1aba3a68c096c56fafc81b55772db391de35/orig/geoWrite_en_1.3-1986-10-05.vlir/02 -------------------------------------------------------------------------------- /orig/geoWrite_en_1.3-1986-10-05.vlir/03: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mist64/geowrite/640f1aba3a68c096c56fafc81b55772db391de35/orig/geoWrite_en_1.3-1986-10-05.vlir/03 -------------------------------------------------------------------------------- /orig/geoWrite_en_1.3-1986-10-05.vlir/04: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mist64/geowrite/640f1aba3a68c096c56fafc81b55772db391de35/orig/geoWrite_en_1.3-1986-10-05.vlir/04 -------------------------------------------------------------------------------- /orig/geoWrite_en_1.3-1986-10-05.vlir/05: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mist64/geowrite/640f1aba3a68c096c56fafc81b55772db391de35/orig/geoWrite_en_1.3-1986-10-05.vlir/05 -------------------------------------------------------------------------------- /orig/geoWrite_en_1.3-1986-10-05.vlir/06: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mist64/geowrite/640f1aba3a68c096c56fafc81b55772db391de35/orig/geoWrite_en_1.3-1986-10-05.vlir/06 -------------------------------------------------------------------------------- /orig/geoWrite_en_1.3-1986-10-05.vlir/fhdr: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mist64/geowrite/640f1aba3a68c096c56fafc81b55772db391de35/orig/geoWrite_en_1.3-1986-10-05.vlir/fhdr -------------------------------------------------------------------------------- /orig/geoWrite_en_1.3-1987-07-17.cvt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mist64/geowrite/640f1aba3a68c096c56fafc81b55772db391de35/orig/geoWrite_en_1.3-1987-07-17.cvt -------------------------------------------------------------------------------- /orig/geoWrite_en_1.3-1987-07-17.vlir/00: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mist64/geowrite/640f1aba3a68c096c56fafc81b55772db391de35/orig/geoWrite_en_1.3-1987-07-17.vlir/00 -------------------------------------------------------------------------------- /orig/geoWrite_en_1.3-1987-07-17.vlir/01: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mist64/geowrite/640f1aba3a68c096c56fafc81b55772db391de35/orig/geoWrite_en_1.3-1987-07-17.vlir/01 -------------------------------------------------------------------------------- /orig/geoWrite_en_1.3-1987-07-17.vlir/02: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mist64/geowrite/640f1aba3a68c096c56fafc81b55772db391de35/orig/geoWrite_en_1.3-1987-07-17.vlir/02 -------------------------------------------------------------------------------- /orig/geoWrite_en_1.3-1987-07-17.vlir/03: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mist64/geowrite/640f1aba3a68c096c56fafc81b55772db391de35/orig/geoWrite_en_1.3-1987-07-17.vlir/03 -------------------------------------------------------------------------------- /orig/geoWrite_en_1.3-1987-07-17.vlir/04: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mist64/geowrite/640f1aba3a68c096c56fafc81b55772db391de35/orig/geoWrite_en_1.3-1987-07-17.vlir/04 -------------------------------------------------------------------------------- /orig/geoWrite_en_1.3-1987-07-17.vlir/05: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mist64/geowrite/640f1aba3a68c096c56fafc81b55772db391de35/orig/geoWrite_en_1.3-1987-07-17.vlir/05 -------------------------------------------------------------------------------- /orig/geoWrite_en_1.3-1987-07-17.vlir/06: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mist64/geowrite/640f1aba3a68c096c56fafc81b55772db391de35/orig/geoWrite_en_1.3-1987-07-17.vlir/06 -------------------------------------------------------------------------------- /orig/geoWrite_en_1.3-1987-07-17.vlir/fhdr: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mist64/geowrite/640f1aba3a68c096c56fafc81b55772db391de35/orig/geoWrite_en_1.3-1987-07-17.vlir/fhdr -------------------------------------------------------------------------------- /orig/geoWrite_en_2.0-1986-10-05.cvt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mist64/geowrite/640f1aba3a68c096c56fafc81b55772db391de35/orig/geoWrite_en_2.0-1986-10-05.cvt -------------------------------------------------------------------------------- /orig/geoWrite_en_2.0-1986-10-05.vlir/00: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mist64/geowrite/640f1aba3a68c096c56fafc81b55772db391de35/orig/geoWrite_en_2.0-1986-10-05.vlir/00 -------------------------------------------------------------------------------- /orig/geoWrite_en_2.0-1986-10-05.vlir/01: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mist64/geowrite/640f1aba3a68c096c56fafc81b55772db391de35/orig/geoWrite_en_2.0-1986-10-05.vlir/01 -------------------------------------------------------------------------------- /orig/geoWrite_en_2.0-1986-10-05.vlir/01_plain: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mist64/geowrite/640f1aba3a68c096c56fafc81b55772db391de35/orig/geoWrite_en_2.0-1986-10-05.vlir/01_plain -------------------------------------------------------------------------------- /orig/geoWrite_en_2.0-1986-10-05.vlir/02: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mist64/geowrite/640f1aba3a68c096c56fafc81b55772db391de35/orig/geoWrite_en_2.0-1986-10-05.vlir/02 -------------------------------------------------------------------------------- /orig/geoWrite_en_2.0-1986-10-05.vlir/03: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mist64/geowrite/640f1aba3a68c096c56fafc81b55772db391de35/orig/geoWrite_en_2.0-1986-10-05.vlir/03 -------------------------------------------------------------------------------- /orig/geoWrite_en_2.0-1986-10-05.vlir/04: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mist64/geowrite/640f1aba3a68c096c56fafc81b55772db391de35/orig/geoWrite_en_2.0-1986-10-05.vlir/04 -------------------------------------------------------------------------------- /orig/geoWrite_en_2.0-1986-10-05.vlir/05: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mist64/geowrite/640f1aba3a68c096c56fafc81b55772db391de35/orig/geoWrite_en_2.0-1986-10-05.vlir/05 -------------------------------------------------------------------------------- /orig/geoWrite_en_2.0-1986-10-05.vlir/06: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mist64/geowrite/640f1aba3a68c096c56fafc81b55772db391de35/orig/geoWrite_en_2.0-1986-10-05.vlir/06 -------------------------------------------------------------------------------- /orig/geoWrite_en_2.0-1986-10-05.vlir/07: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mist64/geowrite/640f1aba3a68c096c56fafc81b55772db391de35/orig/geoWrite_en_2.0-1986-10-05.vlir/07 -------------------------------------------------------------------------------- /orig/geoWrite_en_2.0-1986-10-05.vlir/fhdr: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mist64/geowrite/640f1aba3a68c096c56fafc81b55772db391de35/orig/geoWrite_en_2.0-1986-10-05.vlir/fhdr -------------------------------------------------------------------------------- /orig/geoWrite_en_2.1_1987-09-27.cvt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mist64/geowrite/640f1aba3a68c096c56fafc81b55772db391de35/orig/geoWrite_en_2.1_1987-09-27.cvt -------------------------------------------------------------------------------- /orig/geoWrite_en_2.1_1987-09-27.vlir/00: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mist64/geowrite/640f1aba3a68c096c56fafc81b55772db391de35/orig/geoWrite_en_2.1_1987-09-27.vlir/00 -------------------------------------------------------------------------------- /orig/geoWrite_en_2.1_1987-09-27.vlir/01: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mist64/geowrite/640f1aba3a68c096c56fafc81b55772db391de35/orig/geoWrite_en_2.1_1987-09-27.vlir/01 -------------------------------------------------------------------------------- /orig/geoWrite_en_2.1_1987-09-27.vlir/01_plain: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mist64/geowrite/640f1aba3a68c096c56fafc81b55772db391de35/orig/geoWrite_en_2.1_1987-09-27.vlir/01_plain -------------------------------------------------------------------------------- /orig/geoWrite_en_2.1_1987-09-27.vlir/02: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mist64/geowrite/640f1aba3a68c096c56fafc81b55772db391de35/orig/geoWrite_en_2.1_1987-09-27.vlir/02 -------------------------------------------------------------------------------- /orig/geoWrite_en_2.1_1987-09-27.vlir/03: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mist64/geowrite/640f1aba3a68c096c56fafc81b55772db391de35/orig/geoWrite_en_2.1_1987-09-27.vlir/03 -------------------------------------------------------------------------------- /orig/geoWrite_en_2.1_1987-09-27.vlir/04: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mist64/geowrite/640f1aba3a68c096c56fafc81b55772db391de35/orig/geoWrite_en_2.1_1987-09-27.vlir/04 -------------------------------------------------------------------------------- /orig/geoWrite_en_2.1_1987-09-27.vlir/05: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mist64/geowrite/640f1aba3a68c096c56fafc81b55772db391de35/orig/geoWrite_en_2.1_1987-09-27.vlir/05 -------------------------------------------------------------------------------- /orig/geoWrite_en_2.1_1987-09-27.vlir/06: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mist64/geowrite/640f1aba3a68c096c56fafc81b55772db391de35/orig/geoWrite_en_2.1_1987-09-27.vlir/06 -------------------------------------------------------------------------------- /orig/geoWrite_en_2.1_1987-09-27.vlir/07: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mist64/geowrite/640f1aba3a68c096c56fafc81b55772db391de35/orig/geoWrite_en_2.1_1987-09-27.vlir/07 -------------------------------------------------------------------------------- /orig/geoWrite_en_2.1_1987-09-27.vlir/08: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mist64/geowrite/640f1aba3a68c096c56fafc81b55772db391de35/orig/geoWrite_en_2.1_1987-09-27.vlir/08 -------------------------------------------------------------------------------- /orig/geoWrite_en_2.1_1987-09-27.vlir/fhdr: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mist64/geowrite/640f1aba3a68c096c56fafc81b55772db391de35/orig/geoWrite_en_2.1_1987-09-27.vlir/fhdr -------------------------------------------------------------------------------- /orig/geoWrite_en_2.1_1988-07-06.cvt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mist64/geowrite/640f1aba3a68c096c56fafc81b55772db391de35/orig/geoWrite_en_2.1_1988-07-06.cvt -------------------------------------------------------------------------------- /orig/geoWrite_en_2.1_1988-07-06.vlir/00: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mist64/geowrite/640f1aba3a68c096c56fafc81b55772db391de35/orig/geoWrite_en_2.1_1988-07-06.vlir/00 -------------------------------------------------------------------------------- /orig/geoWrite_en_2.1_1988-07-06.vlir/01: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mist64/geowrite/640f1aba3a68c096c56fafc81b55772db391de35/orig/geoWrite_en_2.1_1988-07-06.vlir/01 -------------------------------------------------------------------------------- /orig/geoWrite_en_2.1_1988-07-06.vlir/01_plain: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mist64/geowrite/640f1aba3a68c096c56fafc81b55772db391de35/orig/geoWrite_en_2.1_1988-07-06.vlir/01_plain -------------------------------------------------------------------------------- /orig/geoWrite_en_2.1_1988-07-06.vlir/02: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mist64/geowrite/640f1aba3a68c096c56fafc81b55772db391de35/orig/geoWrite_en_2.1_1988-07-06.vlir/02 -------------------------------------------------------------------------------- /orig/geoWrite_en_2.1_1988-07-06.vlir/03: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mist64/geowrite/640f1aba3a68c096c56fafc81b55772db391de35/orig/geoWrite_en_2.1_1988-07-06.vlir/03 -------------------------------------------------------------------------------- /orig/geoWrite_en_2.1_1988-07-06.vlir/04: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mist64/geowrite/640f1aba3a68c096c56fafc81b55772db391de35/orig/geoWrite_en_2.1_1988-07-06.vlir/04 -------------------------------------------------------------------------------- /orig/geoWrite_en_2.1_1988-07-06.vlir/05: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mist64/geowrite/640f1aba3a68c096c56fafc81b55772db391de35/orig/geoWrite_en_2.1_1988-07-06.vlir/05 -------------------------------------------------------------------------------- /orig/geoWrite_en_2.1_1988-07-06.vlir/06: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mist64/geowrite/640f1aba3a68c096c56fafc81b55772db391de35/orig/geoWrite_en_2.1_1988-07-06.vlir/06 -------------------------------------------------------------------------------- /orig/geoWrite_en_2.1_1988-07-06.vlir/07: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mist64/geowrite/640f1aba3a68c096c56fafc81b55772db391de35/orig/geoWrite_en_2.1_1988-07-06.vlir/07 -------------------------------------------------------------------------------- /orig/geoWrite_en_2.1_1988-07-06.vlir/08: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mist64/geowrite/640f1aba3a68c096c56fafc81b55772db391de35/orig/geoWrite_en_2.1_1988-07-06.vlir/08 -------------------------------------------------------------------------------- /orig/geoWrite_en_2.1_1988-07-06.vlir/fhdr: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mist64/geowrite/640f1aba3a68c096c56fafc81b55772db391de35/orig/geoWrite_en_2.1_1988-07-06.vlir/fhdr -------------------------------------------------------------------------------- /orig/geoWrite_es_1.1_1986-04-07.cvt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mist64/geowrite/640f1aba3a68c096c56fafc81b55772db391de35/orig/geoWrite_es_1.1_1986-04-07.cvt -------------------------------------------------------------------------------- /orig/geoWrite_es_1.1_1986-04-07.vlir/00: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mist64/geowrite/640f1aba3a68c096c56fafc81b55772db391de35/orig/geoWrite_es_1.1_1986-04-07.vlir/00 -------------------------------------------------------------------------------- /orig/geoWrite_es_1.1_1986-04-07.vlir/01: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mist64/geowrite/640f1aba3a68c096c56fafc81b55772db391de35/orig/geoWrite_es_1.1_1986-04-07.vlir/01 -------------------------------------------------------------------------------- /orig/geoWrite_es_1.1_1986-04-07.vlir/02: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mist64/geowrite/640f1aba3a68c096c56fafc81b55772db391de35/orig/geoWrite_es_1.1_1986-04-07.vlir/02 -------------------------------------------------------------------------------- /orig/geoWrite_es_1.1_1986-04-07.vlir/03: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mist64/geowrite/640f1aba3a68c096c56fafc81b55772db391de35/orig/geoWrite_es_1.1_1986-04-07.vlir/03 -------------------------------------------------------------------------------- /orig/geoWrite_es_1.1_1986-04-07.vlir/04: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mist64/geowrite/640f1aba3a68c096c56fafc81b55772db391de35/orig/geoWrite_es_1.1_1986-04-07.vlir/04 -------------------------------------------------------------------------------- /orig/geoWrite_es_1.1_1986-04-07.vlir/05: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mist64/geowrite/640f1aba3a68c096c56fafc81b55772db391de35/orig/geoWrite_es_1.1_1986-04-07.vlir/05 -------------------------------------------------------------------------------- /orig/geoWrite_es_1.1_1986-04-07.vlir/06: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mist64/geowrite/640f1aba3a68c096c56fafc81b55772db391de35/orig/geoWrite_es_1.1_1986-04-07.vlir/06 -------------------------------------------------------------------------------- /orig/geoWrite_es_1.1_1986-04-07.vlir/fhdr: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mist64/geowrite/640f1aba3a68c096c56fafc81b55772db391de35/orig/geoWrite_es_1.1_1986-04-07.vlir/fhdr -------------------------------------------------------------------------------- /orig/protection.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mist64/geowrite/640f1aba3a68c096c56fafc81b55772db391de35/orig/protection.bin -------------------------------------------------------------------------------- /protection.cfg: -------------------------------------------------------------------------------- 1 | MEMORY { 2 | LINK: start = $0000, size = $0002; 3 | ENTRY: start = $0001, size = $0005; 4 | DISK: start = $0705, size = $0075; 5 | MAIN: start = $807A, size = $0086; 6 | } 7 | 8 | SEGMENTS { 9 | LINK: load = LINK, type = rw; 10 | ENTRY: load = ENTRY, type = rw; 11 | DISK: load = DISK, type = rw; 12 | MAIN: load = MAIN, type = rw; 13 | } 14 | -------------------------------------------------------------------------------- /protection.s: -------------------------------------------------------------------------------- 1 | ; ---------------------------------------------------------------------------- 2 | ; geoWrite V2.1 (C64) 3 | ; copy protection block 4 | ; ---------------------------------------------------------------------------- 5 | ; reverse-engineered by Michael Steil, www.pagetable.com 6 | ; ---------------------------------------------------------------------------- 7 | 8 | .include "geosmac.inc" 9 | .include "jumptab.inc" 10 | .include "const.inc" 11 | 12 | ; ---------------------------------------------------------------------------- 13 | 14 | .segment "LINK" 15 | 16 | .byte $00,$FF 17 | 18 | .segment "ENTRY" 19 | 20 | jmp start 21 | 22 | .segment "DISK" 23 | 24 | ;--------------------------------------------------------------- 25 | ; checkProtection 26 | ; 27 | ; Function: Check whether the disk contains the signature bytes 28 | ; in the padding after the sector headers and the 29 | ; sector data on sectors 0-15 of the current track. 30 | ; 31 | ; Returns: $00 =1: success 32 | ; =2: failure 33 | ;--------------------------------------------------------------- 34 | checkProtection: 35 | lda $180F ; data port A 36 | pha 37 | and #%11011111 38 | sta $180F ; 1571: switch to 1 MHz 39 | jsr checkProtection2 40 | pla 41 | sta $180F ; restore clock speed 42 | rts 43 | 44 | checkProtection2: 45 | tsx ; save current stack pointer 46 | stx $49 ; ("savsp"; see symbol "lcc" in 1541 source) 47 | lda #%11101110 48 | sta $1C0C ; make sure we're in read mode 49 | lda #>(buffer-$8000+$0700) 50 | sta $33 51 | lda #<(buffer-$8000+$0700) 52 | sta $32 ; set pointer to track/sector for ROM call 53 | lda $22 ; current track number 54 | sta $07F5 ; (sector is 0) 55 | jsr $F510 ; ROM call: find and read block header 56 | ldy #2 57 | sty $00 ; set default error code 2: "READ ERROR" 58 | jsr skipBytes ; skip 2 bytes 59 | ldx #16 60 | bne @1 ; check 16 headers and sectors 61 | 62 | @loop: ldy #<$100 ; skip a total of 63 | jsr skipBytes ; 325 GCR bytes 64 | ldy #$45 ; = 260 data bytes 65 | jsr skipBytes ; = marker + full block + checksum + filler 66 | jsr checkSignature ; check signature after data block 67 | ldy #10 68 | jsr skipBytes ; skip full header 69 | @1: jsr checkSignature ; check signature after header 70 | dex 71 | bne @loop ; repeat 72 | inx 73 | stx $00 ; set error code 1: "OK" 74 | rts 75 | 76 | ;--------------------------------------------------------------- 77 | ; skipBytes 78 | ; 79 | ; Function: Read and skip bytes coming from disk. 80 | ; 81 | ; Pass: y number of bytes 82 | ;--------------------------------------------------------------- 83 | skipBytes: 84 | bvc skipBytes ; wait for byte 85 | clv 86 | lda $1C01 ; read it 87 | dey 88 | bne skipBytes ; y times 89 | rts 90 | 91 | 92 | foundSync: 93 | lda $1C01 ; read value 94 | clv 95 | rts 96 | 97 | ;--------------------------------------------------------------- 98 | ; checkSignature 99 | ; 100 | ; Function: Check whether all byte until the next SYNC mark 101 | ; are either $55 or $67. 102 | ;--------------------------------------------------------------- 103 | checkSignature: 104 | ldy $1C00 ; if we found the SYNC mark, 105 | bpl foundSync ; the check is ok and we're done 106 | 107 | bvc checkSignature ; wait until byte ready 108 | clv 109 | 110 | lda $1C01 ; get byte 111 | cmp #$55 112 | beq checkSignature ; has to be either signature byte $55 113 | cmp #$67 114 | beq checkSignature ; or signature byte $67 115 | 116 | pla ; magic not found 117 | pla ; -> return to main code 118 | rts ; (error code remains at "2") 119 | 120 | ; ---------------------------------------------------------------------------- 121 | 122 | .segment "MAIN" 123 | 124 | r0 = 2 125 | r0L = 2 126 | r0H = 3 127 | curDrive = $8489 128 | driveType = $848e 129 | 130 | start: lda NewDisk+2 ; find the code that is pointed 131 | sta r0H ; to by the NewDisk API 132 | lda NewDisk+1 ; by reading the operand of the 133 | sta r0L ; direct/indirect JMP at the 134 | lda NewDisk ; entry point 135 | cmp #$4C ; direct or indirect JMP? 136 | beq @direct ; direct, then we found the code 137 | 138 | ldy #0 ; indirect jump, so 139 | lda (r0),y ; we need to read the vector 140 | tax 141 | iny 142 | lda (r0),y 143 | sta r0H ; and we have a pointer to the code 144 | stx r0L 145 | 146 | @direct: 147 | ldx #STRUCT_MISMAT ; default error code: 148 | ldy curDrive 149 | lda driveType-8,y ; what kind of drive is this? 150 | and #$BF ; ignore the shadow bit (drive cache) 151 | cmp #$02 ; 2: 1571 152 | bcc @is1541 ; less, then 1541! 153 | bne @rts ; not 1571, then return with error (X != 0) 154 | 155 | ;--------------------------------------------------------------- 156 | ; 1571: find 157 | ;--------------------------------------------------------------- 158 | tay 159 | @loop1: dey 160 | @loop2: dey 161 | @loop3: lda (r0),y 162 | iny 163 | cmp #$20 ; search for $20, $5C, $C2 164 | bne @loop3 ; (JSR InitForIO) 165 | lda (r0),y 166 | iny 167 | cmp #$5C 168 | bne @loop2 169 | lda (r0),y 170 | iny 171 | cmp #$C2 172 | bne @loop1 173 | 174 | @loop4: lda (r0),y 175 | iny 176 | cmp #$20 177 | bne @loop4 178 | 179 | dey 180 | bne @cont 181 | 182 | ;--------------------------------------------------------------- 183 | ; 1541 184 | ;--------------------------------------------------------------- 185 | @is1541: 186 | ldy #$FF 187 | @loop5: iny 188 | @loop6: lda (r0),y ; search for $85 $8B 189 | cmp #$85 ; (STA $8B) 190 | bne @loop5 ; in NewDisk code 191 | iny 192 | lda (r0),y 193 | cmp #$8B 194 | bne @loop6 195 | 196 | iny 197 | 198 | @cont: ldx #$00 199 | @loop7: lda (r0),y ; extract 6 bytes 200 | sta @code,x ; copy into this code 201 | iny 202 | inx 203 | cpx #6 204 | bne @loop7 205 | 206 | jsr EnterTurbo 207 | jsr InitForIO 208 | 209 | lda #checkProtection ; (this sector is at $0700!) 212 | stx $8C 213 | @code: .byte 0,0,0 ; jsr SendExecuteWithTrkSec 214 | .byte 0,0,0 ; jsr GetDOSError 215 | jsr DoneWithIO 216 | @rts: rts 217 | 218 | buffer = @code 219 | 220 | ; ---------------------------------------------------------------------------- 221 | .byte $D7 ; checksum (XOR of bytes at offsets $02-$FE) 222 | -------------------------------------------------------------------------------- /savetextscrap.inc: -------------------------------------------------------------------------------- 1 | ; ---------------------------------------------------------------------------- 2 | ; geoWrite V2.1 (C64) 3 | ; shared code for saving a text scrap 4 | ; ---------------------------------------------------------------------------- 5 | ; reverse-engineered by Michael Steil, www.pagetable.com 6 | ; ---------------------------------------------------------------------------- 7 | 8 | saveTextscrap: 9 | ; fill size in file header 10 | AddW3 textscrap_fhdr+O_GHST_ADDR, textScrapSize, textscrap_fhdr+O_GHEND_ADDR 11 | AddVW_ 2, textscrap_fhdr+O_GHEND_ADDR 12 | 13 | ; delete existing 14 | jsr setAppDrive 15 | LoadW r0, fn_textscrap 16 | jsr swapUserZp 17 | jsr DeleteFile 18 | 19 | ; save new 20 | LoadW textscrap_fhdr, fn_textscrap 21 | LoadW r9, textscrap_fhdr 22 | LoadB r10L, 0 23 | jsr SaveFile 24 | jsr swapUserZp 25 | beqx @1 26 | lda #0 27 | sta textScrapSize 28 | sta textScrapSize+1 29 | sta textScrapOnDisk 30 | rts 31 | @1: LoadB textScrapOnDisk, $FF 32 | rts 33 | 34 | ; ---------------------------------------------------------------------------- 35 | textscrap_fhdr: 36 | .word 0 37 | .byte $03,$15 38 | .byte $BF 39 | 40 | .byte %11111111,%11111111,%11111111 41 | .byte %10000000,%01000000,%00000001 42 | .byte %10000000,%01100000,%00000001 43 | .byte %10000000,%01100000,%00000001 44 | .byte %10000000,%01100000,%00001101 45 | .byte %10000000,%01010000,%00110101 46 | .byte %10000000,%01010000,%11011001 47 | .byte %10000000,%01010011,%00100001 48 | .byte %10000000,%01011100,%11000001 49 | .byte %10000000,%01011001,%00000001 50 | .byte %10000111,%11001110,%00000001 51 | .byte %10011111,%11001000,%00000001 52 | .byte %10111000,%11111000,%00000001 53 | .byte %10110001,%11111100,%00000001 54 | .byte %10111111,%01101110,%00000001 55 | .byte %10011100,%01100110,%00000001 56 | .byte %10000000,%01100110,%00000001 57 | .byte %10000000,%01101100,%00000001 58 | .byte %10000000,%00111000,%00000001 59 | .byte %10000000,%00000000,%00000001 60 | .byte %11111111,%11111111,%11111111 61 | 62 | .byte $83 63 | .byte SYSTEM 64 | .byte SEQUENTIAL 65 | .word 0 ; start - will be filled 66 | .word 0 ; end - will be filled 67 | .word 0 ; init 68 | 69 | .byte "Text Scrap V2.0" 70 | 71 | .res 44, 0 72 | -------------------------------------------------------------------------------- /scantextscrap.inc: -------------------------------------------------------------------------------- 1 | ; ---------------------------------------------------------------------------- 2 | ; geoWrite V2.1 (C64) 3 | ; shared code for looking for a text scrap on disk 4 | ; ---------------------------------------------------------------------------- 5 | ; reverse-engineered by Michael Steil, www.pagetable.com 6 | ; ---------------------------------------------------------------------------- 7 | 8 | ;--------------------------------------------------------------- 9 | ; scanTextScrap 10 | ; 11 | ; Function: Check whether there is a compatible text scrap on 12 | ; disk and set textScrapOnDisk accordingly. 13 | ;--------------------------------------------------------------- 14 | scanTextScrap: 15 | jsr setAppDrive 16 | LoadW r6, fn_textscrap 17 | jsr _FindFile 18 | bnex @no 19 | PushW r5 20 | jsr testFileVersion 21 | bcc @ok 22 | beq @ok 23 | tya 24 | bne @no 25 | pla 26 | pla 27 | lda #txt_textscrap_incompat 29 | jsr showError 30 | bra @no 31 | 32 | @ok: PopW r5 33 | tya 34 | bne @no 35 | ldy #OFF_DE_TR_SC 36 | lda (r5),y ; track 37 | sta r1L 38 | iny 39 | lda (r5),y ; sector 40 | sta r1H 41 | jsr ldR4DiskBlkBuf 42 | jsr _GetBlock ; read first block 43 | beqx @2 44 | lda #txt_reading_textscrap 46 | jsr showIOError 47 | bra @no 48 | 49 | @2: MoveW diskBlkBuf+2, textScrapSize 50 | LoadB textScrapOnDisk, $FF 51 | rts 52 | 53 | @no: LoadW_ textScrapSize, 0 54 | sta textScrapOnDisk 55 | rts 56 | 57 | 58 | -------------------------------------------------------------------------------- /stringtoint.inc: -------------------------------------------------------------------------------- 1 | ; ---------------------------------------------------------------------------- 2 | ; geoWrite V2.1 (C64) 3 | ; shared code for converting a string to integer 4 | ; ---------------------------------------------------------------------------- 5 | ; reverse-engineered by Michael Steil, www.pagetable.com 6 | ; ---------------------------------------------------------------------------- 7 | 8 | stringToInt: 9 | ldy #0 10 | sty r2H 11 | sty r1L 12 | sty r1H 13 | @loop: lda fnBuffer,y 14 | beq @end 15 | cmp #' ' 16 | beq @skip 17 | jsr checkDigit 18 | bcs @bad 19 | sta r4L 20 | AslW r1 ; -> n * 2 21 | bcs @bad 22 | MoveW r1, r3 ; save 23 | AslW r1 ; -> n * 4 24 | bcs @bad 25 | AslW r1 ; -> n * 8 26 | bcs @bad 27 | AddW_ r3, r1 ; -> n * 8 + n * 2 28 | bcs @bad 29 | AddBW r4L, r1 ; add new digit 30 | bcs @bad 31 | dec r2H ; flag at least one digit 32 | @skip: iny 33 | bra @loop 34 | 35 | @end: 36 | bit r2H ; at least one digit? 37 | bmi @good 38 | @bad: 39 | sec 40 | rts 41 | 42 | @good: 43 | clc 44 | lda r1H 45 | rts 46 | 47 | checkDigit: 48 | sec 49 | sbc #'0' 50 | bcc @1 51 | cmp #10 52 | rts 53 | @1: sec 54 | rts 55 | 56 | -------------------------------------------------------------------------------- /sym.inc: -------------------------------------------------------------------------------- 1 | .include "jumptab.inc" 2 | .include "config.inc" 3 | 4 | .feature string_escapes 5 | 6 | CPU_DDR := $0000 7 | CPU_DATA := $0001 8 | r0 := $0002 9 | r0L := $0002 10 | r0H := $0003 11 | r1 := $0004 12 | r1L := $0004 13 | r1H := $0005 14 | r2 := $0006 15 | r2L := $0006 16 | r2H := $0007 17 | r3 := $0008 18 | r3L := $0008 19 | r3H := $0009 20 | r4 := $000A 21 | r4L := $000A 22 | r4H := $000B 23 | r5 := $000C 24 | r5L := $000C 25 | r5H := $000D 26 | r6 := $000E 27 | r6L := $000E 28 | r6H := $000F 29 | r7 := $0010 30 | r7L := $0010 31 | r7H := $0011 32 | r8 := $0012 33 | r8L := $0012 34 | r8H := $0013 35 | r9 := $0014 36 | r9L := $0014 37 | r9H := $0015 38 | r10 := $0016 39 | r10L := $0016 40 | r10H := $0017 41 | r11 := $0018 42 | r11L := $0018 43 | r11H := $0019 44 | r12 := $001A 45 | r12L := $001A 46 | r12H := $001B 47 | r13 := $001C 48 | r13L := $001C 49 | r13H := $001D 50 | r14 := $001E 51 | r14L := $001E 52 | r14H := $001F 53 | r15 := $0020 54 | r15L := $0020 55 | r15H := $0021 56 | curPattern := $0022 57 | string := $0024 58 | baselineOffset := $0026 59 | curSetWidth := $0027 60 | curHeight := $0029 61 | curIndexTable := $002A 62 | cardDataPntr := $002C 63 | currentMode := $002E 64 | dispBufferOn := $002F 65 | mouseOn := $0030 66 | msePicPtr := $0031 67 | windowTop := $0033 68 | windowBottom := $0034 69 | leftMargin := $0035 70 | rightMargin := $0037 71 | pressFlag := $0039 72 | mouseXPos := $003A 73 | mouseYPos := $003C 74 | returnAddress := $003D 75 | graphMode := $003F 76 | a2 := $0070 77 | a2L := $0070 78 | a2H := $0071 79 | curFont := $0072 80 | a4 := $0074 81 | a4L := $0074 ; byte, several flags 82 | a4H := $0075 ; index, related to cursor::srcline 83 | pagePosY := $0076 ; a5, word, y position of screen on page 84 | a6 := $0078 85 | a6L := $0078 86 | a6H := $0079 87 | a7 := $007A 88 | a7L := $007A 89 | a7H := $007B 90 | topScrTxtPtr := $007C ; a8, txtPtr of the first line currently on the screen 91 | a9 := $007E 92 | a9L := $007E 93 | a9H := $007F 94 | vars := $0200 95 | BACK_SCR_BASE := $6000 96 | PRINTBASE := $7900 97 | InitForPrint := $7900 98 | StartPrint := $7903 99 | PrintBuffer := $7906 100 | StopPrint := $7909 101 | GetDimensions := $790c 102 | PrintASCII := $790f 103 | StartASCII := $7912 104 | SetNLQ := $7915 105 | diskBlkBuf := $8000 106 | fileHeader := $8100 107 | curDirHead := $8200 108 | fileTrScTab := $8300 109 | dirEntryBuf := $8400 110 | DrACurDkNm := $841E 111 | DrBCurDkNm := $8430 112 | dataFileName := $8442 113 | dataDiskName := $8453 114 | PrntFilename := $8465 115 | PrntDiskName := $8476 116 | _driveType := $8486 117 | curDrive := $8489 118 | diskOpenFlg := $848A 119 | isGEOS := $848B 120 | interleave := $848C 121 | NUMDRV := $848D 122 | driveType := $848E 123 | turboFlags := $8492 124 | curRecord := $8496 125 | usedRecords := $8497 126 | fileWritten := $8498 127 | fileSize := $8499 128 | appMain := $849B 129 | intTopVector := $849D 130 | intBotVector := $849F 131 | mouseVector := $84A1 132 | keyVector := $84A3 133 | inputVector := $84A5 134 | mouseFaultVec := $84A7 135 | otherPressVec := $84A9 136 | StringFaultVec := $84AB 137 | alarmTmtVector := $84AD 138 | BRKVector := $84AF 139 | RecoverVector := $84B1 140 | selectionFlash := $84B3 141 | alphaFlag := $84B4 142 | iconSelFlg := $84B5 143 | faultData := $84B6 144 | menuNumber := $84B7 145 | mouseTop := $84B8 146 | mouseBottom := $84B9 147 | mouseLeft := $84BA 148 | mouseRight := $84BC 149 | stringX := $84BE 150 | stringY := $84C0 151 | mousePicData := $84C1 152 | maxMouseSpeed := $8501 153 | minMouseSpeed := $8502 154 | mouseAccel := $8503 155 | keyData := $8504 156 | mouseData := $8505 157 | inputData := $8506 158 | mouseSpeed := $8507 159 | random := $850A 160 | savelintab_font := $850C 161 | dblClickCount := $8515 162 | year := $8516 163 | month := $8517 164 | day := $8518 165 | hour := $8519 166 | minutes := $851A 167 | seconds := $851B 168 | alarmSetFlag := $851C 169 | sysDBData := $851D 170 | screencolors := $851E 171 | dlgBoxRamBuf := $851F 172 | realSize := $8807 173 | savedmoby2 := $88BB 174 | scr80polar := $88BC 175 | scr80colors := $88BD 176 | vdcClrMode := $88BE 177 | driveData := $88BF 178 | ramExpSize := $88C3 179 | sysRAMFlg := $88C4 180 | firstBoot := $88C5 181 | curType := $88C6 182 | ramBase := $88C7 183 | inputDevNam := $88CB 184 | DrCCurDkNm := $88DC 185 | DrDCurDkNm := $88EE 186 | dir2Head := $8900 187 | spr0pic := $8A00 188 | spr1pic := $8A40 189 | spr2pic := $8A80 190 | spr3pic := $8AC0 191 | spr4pic := $8B00 192 | spr5pic := $8B40 193 | spr6pic := $8B80 194 | spr7pic := $8BC0 195 | COLOR_MATRIX := $8C00 196 | sprp := $8FE8 197 | DISK_BASE := $9000 198 | SCREEN_BASE := $A000 199 | OS_ROM := $C000 200 | EXP_BASE := $DF00 201 | MOUSE_JMP := $FE80 202 | config := $FF00 203 | NMI_VECTOR := $FFFA 204 | RESET_VECTOR := $FFFC 205 | IRQ_VECTOR := $FFFE 206 | 207 | ; GEOS symbol additions 208 | MISIZE := 5 ; menu item size 209 | mobprior := $D01B 210 | O_GHP_PRIVATE := O_GHP_FNAME + 20 211 | CBM_LOGO := $80 212 | O_RULER_ESC_RESERVED := 25 ; offset of 2 res. bytes in ruler escape string 213 | OFF_GHFONTID := $80 ; 2 bytes - unique font id 214 | OFF_GHPOINT_SIZES := $82 ; 32 bytes - font id for each character set 215 | OFF_GHSET_LENGTHS := $61 ; 32 bytes - size in bytes for each character set 216 | FONT_SIZE_MASK := $3F 217 | FONTS_PER_FONTFILE := 16 218 | MASK_JST_JUST := $03 219 | MASK_JST_SPACING := $0C 220 | SHIFT_JST_SPACING := 2 221 | 222 | ; non-standard justification flags 223 | JST_80 := $80 ; flag: related to picture 224 | JST_STARTS_WITH_RULER := $40 225 | JST_20 := $20 226 | JST_10 := $10 ; flag: first line of paragraph 227 | 228 | ; a4L flags 229 | A4L_01 = $01 230 | A4L_02 = $02 231 | A4L_04 = $04 232 | A4L_08 = $08 233 | A4L_10 = $10 234 | A4L_20 = $20 235 | A4L_80 = $80 236 | 237 | ;;;; 238 | 239 | inputString1 = vars+$00 ; 25 chars, NULL 240 | inputString2 = vars+$1A ; 25 chars, NULL 241 | 242 | metricsFifoCounter = vars+$34 ; byte 243 | metricsUseSystem = vars+$35 ; byte 244 | metricsWidths = vars+$36 ; word 245 | metricsTmp = vars+$38 ; byte 246 | 247 | showPicturesFlag = vars+$3A ; byte: flag whether to show pictures 248 | curCodeRecord = vars+$3B ; byte: currently loaded overlay record 249 | streamingMode = vars+$3C ; flag: read across pages when reading bytes 250 | metricsIds = vars+$3D ; 16 bytes 251 | metricsHeights = vars+$4D ; 8 bytes 252 | 253 | cachedFontCharWidths4 = vars+$134 ; 96 bytes 254 | cachedFontCharWidths5 = vars+$194 ; 96 bytes 255 | 256 | metricsBaselineOffsets = vars+$1F4 ; 8 bytes 257 | 258 | 259 | ; one for each line visible on the screen: (200 - 32) / 8 260 | lintab_txtPtr_lo = appInit + 0; $2B36; 21 261 | lintab_txtPtr_hi = appInit + 21; $2B4B; 21 262 | lintab_y = appInit + 42; $2B60; 21 ; from here on, the entries are 263 | lintab_height = appInit + 63; $2B75; 21 ; in the same order as O_CSR_* 264 | lintab_font_lo = appInit + 84; $2B8A; 21 ; (see moveCursor3Lintab) 265 | lintab_font_hi = appInit + 105; $2B9F; 21 266 | lintab_mode = appInit + 126; $2BB4; 21 267 | lintab_baselineOffset = appInit + 147; $2BC9; 21 268 | lintab_justification = appInit + 168; $2BDE; 21 269 | lintab_AAw_lo = appInit + 189; $2BF3; 42 [XXX ???] 270 | lintab_AAw_hi = appInit + 210; $2C08; 21 271 | lintab_width = appInit + 231; $2C1D; 21 272 | 273 | ; one for each page of the document 274 | heightForPage_lo = appInit + 252; $2C32; 61 entries 275 | heightForPage_hi = appInit + 313; $2C6F; 61 entries 276 | widthForPage_lo = appInit + 374; $2CAC; 61 entries 277 | widthForPage_hi = appInit + 435; $2CE9; 61 entries 278 | 279 | cachedFontCharWidths0 = appInit + 496 ; 96 bytes 280 | cachedFontCharWidths1 = appInit + 592 ; 96 bytes 281 | cachedFontCharWidths2 = appInit + 688 ; 96 bytes 282 | cachedFontCharWidths3 = appInit + 784 ; 96 bytes 283 | 284 | 285 | kbdString = appInit + 880; $2EA6 ; 20 chars 286 | photoWidth = appInit + 881; $2EA7 ; byte [XXX never read!] | overlaps with kbdString, 287 | photoHeight = appInit + 882; $2EA8 ; word [XXX not necessary!] | which is okay 288 | tmpPicRecord = appInit + 884; $2EAA ; byte [XXX never read!] | 289 | pageWidth1 = appInit + 910; $2EC4 290 | showCopyrightFlag = appInit + 912; $2EC6 291 | printerPageHeight = appInit + 913; $2EC7 292 | docFileHeaderTrkSec = appInit + 915; $2EC9 293 | hasPagePropMetadata = appInit + 917; $2ECB 294 | otherFnBuffer = appInit + 918; $2ECC 295 | fnBuffer = appInit + 935; $2EDD 296 | userzp_copy = appInit + 952; $2EEE ; 128 bytes 297 | rulerData1 = appInit + 1080; $2F6E; 26 bytes 298 | rulerData2 = appInit + 1106; $2F88; 26 bytes (-> $2FA1) 299 | 300 | tmpRulerData = appInit + 1132; $2FA2 301 | unusedFlag = appInit + 1133; $2FA3 ; flag [XXX never read!] 302 | sideFlippingOffset = appInit + 1158; $2FBC ; 0: 0px, 1: 160px, 2: 320px 303 | tmpSideFlippingOffset = appInit + 1159; $2FBD 304 | L2FBE = appInit + 1160; $2FBE 305 | L2FBF = appInit + 1161; $2FBF 306 | L2FC0 = appInit + 1162; $2FC0 307 | fontNames = appInit + 1163; $2FC1 ; FONT_NAME_SIZE=19 bytes per font (*8) 308 | 309 | diskFontIds = appInit + 1299; $3049 ; 8 fonts with 8 ID words each (until $30C8) 310 | 311 | _diskFontRecordTrkSec = appInit + 1427; $30C9 ; 7 fonts with 8 track/sector words each (1-7) 312 | diskFontRecordTrkSec = _diskFontRecordTrkSec - 16 ; never used for font #0 (system), so shifted up 313 | 314 | diskFontRecordSize = appInit + 1523; $3129 ; word * 8 315 | 316 | deskAccNames = appInit + 1651; $31A9 317 | appIndexTable = appInit + 1787; $3231 318 | 319 | CODE_MAIN = $0400 320 | 321 | MEM_OVERLAY = MEM_TEXTSCRAP - MEM_SIZE_OVERLAY ; $3244 - overlay code record 322 | MEM_TEXTSCRAP = MEM_PAGE - MEM_SIZE_TEXTSCRAP ; $41E4 - 323 | MEM_PAGE = MEM_FONT - MEM_SIZE_PAGE ; $4310 - holds current page 324 | MEM_FONT = MEM_SCRRECV - MEM_SIZE_FONTS ; $5E68 - font buffer 325 | MEM_SCRRECV = $8000 - MEM_SIZE_SCRRECV ; $75D8 - memory region for saving/restoring screen contents 326 | 327 | L7F00 = $8000 - $100 ; top page 328 | 329 | MEM_PRINTDATA = $7680 ; 8 lines of data to be printed (640 bytes) 330 | MEM_PRINTWORKBUF = $0400 ; work buffer for printer driver (3*640 bytes) 331 | 332 | MEM_OVERLAY_PRT = $0680 333 | 334 | ; $2B36 globals1 (appInit) 335 | ; $3244 overlay 336 | ; $41E4 globals2 337 | ; $4310 page 338 | ; $5E68 font buffer 339 | ; $75D8 screen recover buffer 340 | 341 | cachedFontCharWidths6 = spr2pic+$00 ; $8A80 342 | cachedFontCharWidths7 = spr2pic+$60 ; $8AE0 343 | 344 | ; information about currently loaded fonts - all of these these are 8 bytes each 345 | loadedFontIdsLo = spr5pic+$00 ; $8B40 346 | loadedFontIdsHi = spr5pic+$08 347 | loadedFontPtrsLo = spr5pic+$10 348 | loadedFontPtrsHi = spr5pic+$18 349 | loadedfontDataSizeLo = spr5pic+$20 350 | loadedfontDataSizeHi = spr5pic+$28 351 | loadedFontLruIdLo = spr5pic+$30 352 | loadedFontLruIdHi = spr5pic+$38 353 | 354 | textScrapSize = MEM_TEXTSCRAP + 0 ; $41E4 355 | textScrapData = MEM_TEXTSCRAP + 2 ; $41E6, 298 bytes, up to $4310 356 | MAX_TEXTSCRAP_SIZE = MEM_SIZE_TEXTSCRAP - 2 357 | 358 | ; geoWrite V2.0 Page Format 359 | ; 0-26 Ruler escape string 360 | ; 0 constant ESC_RULER 361 | ; 1-2 left margin 362 | ; 3-4 right margin 363 | ; 5-20 tabs 364 | ; 21-22 paragraph margin 365 | ; 23 justification 366 | ; internal additions: 367 | ; $20: ??? 368 | ; $10: first line of paragraph 369 | ; 24 text color (unused) 370 | ; 25-26 unused 371 | ; 27-30 font/style escape 372 | ; 0 constant NEWCARDSET 373 | ; 1-2 font ID 374 | ; 3 style byte 375 | ; 31-.. Text of document 376 | 377 | .struct ruler 378 | left_margin .word 379 | right_margin .word 380 | tabs .res 16 381 | paragraph_margin .word 382 | justification .byte 383 | unused1 .byte 384 | unused2 .byte 385 | unused3 .byte 386 | .endstruct 387 | 388 | .struct cardset 389 | magic .byte 390 | fontid .word 391 | style .byte 392 | .endstruct 393 | 394 | .struct page 395 | magic .byte 396 | ruler .res .sizeof(ruler) ; offset 1 397 | cardset .res .sizeof(cardset) ; offset 27 398 | text .byte ; offset 31 399 | .endstruct 400 | 401 | PAGE_RULER = MEM_PAGE+page::ruler 402 | PAGE_CARDSET = MEM_PAGE+page::cardset ; $432B 403 | 404 | ; $4310: ESC_RULER 405 | ; $4311: LEFT_MARGIN 406 | ; $4313: RIGHT_MARGIN 407 | ; $4325: PARAGRAPH_MARGIN 408 | ; $4327: JUSTIFICATION 409 | ; $4328: UNUSED1 410 | ; $4329: UNUSED2 411 | ; $432A: UNUSED3 412 | 413 | L4C95 = $4C95 ; ??? 414 | 415 | NUM_APP_RECORDS = 9 416 | 417 | MEM_SIZE_MAIN = 1920 ; for re-loading only 418 | MEM_SIZE_OVERLAY = 4000 419 | MEM_SIZE_TEXTSCRAP = 300 420 | MEM_SIZE_FONTS = 6000 421 | MEM_SIZE_PAGE = 7000 422 | MEM_SIZE_SCRRECV = 2600 ; 25 cards, 104 lines, -> scrrecvtab_dlgbox 423 | 424 | MAX_NUM_PAGES = $3D 425 | PAGE_LAST_USABLE = $3C 426 | PAGE_HEADER = $3D 427 | PAGE_FOOTER = $3E 428 | PAGE_RESERVED = $3F 429 | PAGE_FIRST_IMAGE = $40 430 | 431 | RECORD_1 = 1 432 | RECORD_2 = 2 433 | RECORD_3 = 3 434 | RECORD_4 = 4 435 | RECORD_5 = 5 436 | RECORD_6 = 6 437 | RECORD_7 = 7 438 | RECORD_8 = 8 439 | 440 | PROCESS_SELECTION = 0 441 | PROCESS_1 = 1 442 | PROCESS_2 = 2 443 | PROCESS_SIDE_FLIPPING = 3 444 | 445 | SYSTEM_FONT_ID = $0009 446 | SYSTEM_FONT_SIZE = SYSTEM_FONT_ID & $3F 447 | SYSTEM_FONT_BASELINE = 6 448 | MAX_FONT_SIZE = 42 449 | MAX_HEADER_FOOTER_HEIGHT = 220 ; size of header/footer virtual pages in pixels 450 | PAGE_WIDTH_NARROW = 480 451 | PAGE_WIDTH_WIDE = 640 452 | DEFAULT_PAGE_HEIGHT = 752 453 | RULER_ESC_LENGTH = 28 454 | MAX_FONTS_LOADED = 8 455 | MAX_FONT_FILES = 8 456 | FONT_NAME_SIZE = 19 457 | 458 | .macro PushW_r15 459 | jsr pushR15 460 | .endmacro 461 | .macro PopW_r15 462 | jsr popR15 463 | .endmacro 464 | 465 | .macro LoadB_y dest, value 466 | ldy #value 467 | sty dest 468 | .endmacro 469 | 470 | .macro LoadB_x dest, value 471 | ldx #value 472 | stx dest 473 | .endmacro 474 | 475 | .macro LoadW_y dest, value 476 | LoadB_y dest+1, >(value) 477 | .if (.not .const(value)) .or (>(value))<>(<(value)) 478 | ldy #<(value) 479 | .endif 480 | sty dest+0 481 | .endmacro 482 | 483 | .macro LoadW_x dest, value 484 | LoadB_x dest+1, >(value) 485 | .if (.not .const(value)) .or (>(value))<>(<(value)) 486 | ldx #<(value) 487 | .endif 488 | stx dest+0 489 | .endmacro 490 | 491 | .macro MoveB_y source, dest 492 | ldy source 493 | sty dest 494 | .endmacro 495 | 496 | .macro MoveB_x source, dest 497 | ldx source 498 | stx dest 499 | .endmacro 500 | 501 | .macro MoveW_x source, dest 502 | MoveB_x source+1, dest+1 503 | MoveB_x source+0, dest+0 504 | .endmacro 505 | 506 | .macro MoveW_y source, dest 507 | MoveB_y source+1, dest+1 508 | MoveB_y source+0, dest+0 509 | .endmacro 510 | 511 | .macro MoveW_y_ source, dest 512 | MoveB_y source+0, dest+0 513 | MoveB_y source+1, dest+1 514 | .endmacro 515 | 516 | .macro AddW_ source, dest 517 | lda dest 518 | add source 519 | sta dest 520 | lda dest+1 521 | adc source+1 522 | sta dest+1 523 | .endmacro 524 | 525 | .macro AslW addr 526 | asl addr 527 | rol addr+1 528 | .endmacro 529 | 530 | .macro AddBW source, dest 531 | lda dest 532 | clc 533 | adc source 534 | sta dest 535 | lda dest+1 536 | adc #0 537 | sta dest+1 538 | .endmacro 539 | 540 | .macro AddVW2 value, source, dest 541 | lda source 542 | add #<(value) 543 | sta dest 544 | lda source+1 545 | adc #>(value) 546 | sta dest+1 547 | .endmacro 548 | 549 | .macro SubVW2 value, source, dest 550 | lda source 551 | sub #<(value) 552 | sta dest 553 | lda source+1 554 | sbc #>(value) 555 | sta dest+1 556 | .endmacro 557 | 558 | .macro SubVW2_ value, source, dest 559 | sec 560 | lda source 561 | sbc #<(value) 562 | sta dest 563 | lda source+1 564 | sbc #>(value) 565 | sta dest+1 566 | .endmacro 567 | 568 | .macro SubW3 source1, source2, dest 569 | lda source1 570 | sub source2 571 | sta dest 572 | lda source1+1 573 | sbc source2+1 574 | sta dest+1 575 | .endmacro 576 | 577 | .macro AddW3 source1, source2, dest 578 | lda source1 579 | add source2 580 | sta dest 581 | lda source1+1 582 | adc source2+1 583 | sta dest+1 584 | .endmacro 585 | 586 | .macro AddVW__ value, dest 587 | .local @j 588 | lda #<(value) 589 | add dest 590 | sta dest 591 | lda #>(value) 592 | adc dest + 1 593 | sta dest + 1 594 | .endmacro 595 | 596 | .macro CmpB_x source, dest 597 | ldx source 598 | cpx dest 599 | .endmacro 600 | 601 | .macro CmpB_y source, dest 602 | ldy source 603 | cpy dest 604 | .endmacro 605 | 606 | .macro CmpW_x source, dest 607 | .local @j 608 | CmpB_x source+1, dest+1 609 | bne @j 610 | CmpB_x source+0, dest+0 611 | @j: 612 | .endmacro 613 | 614 | .macro CmpW_y source, dest 615 | .local @j 616 | CmpB_y source+1, dest+1 617 | bne @j 618 | CmpB_y source+0, dest+0 619 | @j: 620 | .endmacro 621 | 622 | .macro SubVB value, dest 623 | sec 624 | lda dest 625 | sbc #<(value) 626 | sta dest 627 | .endmacro 628 | 629 | .macro SubB_ source, dest 630 | sec 631 | lda dest 632 | sbc source 633 | sta dest 634 | .endmacro 635 | 636 | .macro AddB__ source, dest 637 | clc 638 | lda dest 639 | adc source 640 | sta dest 641 | .endmacro 642 | 643 | .macro AddB___ source, dest 644 | lda dest 645 | add source 646 | sta dest 647 | .endmacro 648 | 649 | .macro DecW addr 650 | .local @j 651 | lda addr 652 | bne @j 653 | dec addr+1 654 | @j: dec addr 655 | .endmacro 656 | -------------------------------------------------------------------------------- /test.sh: -------------------------------------------------------------------------------- 1 | make clean > /dev/null && 2 | make all LOCALE=en > /dev/null && 3 | make all LOCALE=de > /dev/null && 4 | 5 | RESULT=$( 6 | ( 7 | md5 -r build/en/geoWrite-0.bin orig/geoWrite_en_2.1_1988-07-06.vlir/00 8 | md5 -r build/en/geoWrite-1.bin orig/geoWrite_en_2.1_1988-07-06.vlir/01 9 | md5 -r build/en/geoWrite-2.bin orig/geoWrite_en_2.1_1988-07-06.vlir/02 10 | md5 -r build/en/geoWrite-3.bin orig/geoWrite_en_2.1_1988-07-06.vlir/03 11 | md5 -r build/en/geoWrite-4.bin orig/geoWrite_en_2.1_1988-07-06.vlir/04 12 | md5 -r build/en/geoWrite-5.bin orig/geoWrite_en_2.1_1988-07-06.vlir/05 13 | md5 -r build/en/geoWrite-6.bin orig/geoWrite_en_2.1_1988-07-06.vlir/06 14 | md5 -r build/en/geoWrite-7.bin orig/geoWrite_en_2.1_1988-07-06.vlir/07 15 | md5 -r build/en/geoWrite-8.bin orig/geoWrite_en_2.1_1988-07-06.vlir/08 16 | md5 -r build/en/geoWrite-fhdr.bin orig/geoWrite_en_2.1_1988-07-06.vlir/fhdr 17 | md5 -r build/en/protection.bin orig/protection.bin 18 | 19 | md5 -r build/de/geoWrite-0.bin orig/geoWrite_de_2.1_1989-01-03.vlir/00 20 | md5 -r build/de/geoWrite-1.bin orig/geoWrite_de_2.1_1989-01-03.vlir/01 21 | md5 -r build/de/geoWrite-2.bin orig/geoWrite_de_2.1_1989-01-03.vlir/02 22 | md5 -r build/de/geoWrite-3.bin orig/geoWrite_de_2.1_1989-01-03.vlir/03 23 | md5 -r build/de/geoWrite-4.bin orig/geoWrite_de_2.1_1989-01-03.vlir/04 24 | md5 -r build/de/geoWrite-5.bin orig/geoWrite_de_2.1_1989-01-03.vlir/05 25 | md5 -r build/de/geoWrite-6.bin orig/geoWrite_de_2.1_1989-01-03.vlir/06 26 | md5 -r build/de/geoWrite-7.bin orig/geoWrite_de_2.1_1989-01-03.vlir/07 27 | md5 -r build/de/geoWrite-8.bin orig/geoWrite_de_2.1_1989-01-03.vlir/08 28 | md5 -r build/de/geoWrite-fhdr.bin orig/geoWrite_de_2.1_1989-01-03.vlir/fhdr 29 | md5 -r build/de/protection.bin orig/protection.bin 30 | ) | cut -d " " -f 1 | uniq -c | sed -e "s/^ *//" | cut -d " " -f 1 | uniq 31 | 32 | ) 33 | 34 | if [ "$RESULT" = "2" ]; then 35 | echo "PASS" 36 | exit 0 37 | else 38 | echo "FAIL" 39 | exit 1 40 | fi 41 | 42 | -------------------------------------------------------------------------------- /textscrap_filename.inc: -------------------------------------------------------------------------------- 1 | fn_textscrap: 2 | .byte "Text Scrap",0 3 | -------------------------------------------------------------------------------- /zeropage.inc: -------------------------------------------------------------------------------- 1 | .struct cursor 2 | ptr .word ; pointer to character in buffer 3 | px .word ; X coordinate of cursor on screen 4 | srcline .byte ; screen line number + flags $00, $80, $FF; also used as page record number 5 | py .byte ; Y coordinate of cursor on screen 6 | height .byte ; height of line 7 | font .word ; font id | font and mode 8 | mode .byte ; currentMode | must be consecutive 9 | .endstruct 10 | 11 | .struct privfhdata 12 | startPageNo .word 13 | titleNlqFlag .byte ; $80: title, $40: NLQ 14 | headerHeight .word 15 | footerHeight .word 16 | pageHeight .word 17 | .endstruct 18 | 19 | .globalzp userzp 20 | .globalzp cursor0 21 | .globalzp cursor1 22 | .globalzp cursor2 23 | .globalzp cursor3 24 | .globalzp tmpBaselineOffset 25 | .globalzp justification 26 | .globalzp zp_AAw 27 | .globalzp tmpLineWidth 28 | .globalzp zp_ADw 29 | .globalzp tmpFont1 30 | .globalzp tmpMode1 31 | .globalzp tmpJustification1 32 | .globalzp pageTextHeight 33 | .globalzp tmpRangeEnd 34 | .globalzp tmpRangeStart 35 | .globalzp zp_B9b 36 | .globalzp zp_BAb 37 | .globalzp zp_BBw 38 | .globalzp zp_BDw 39 | .globalzp tmpFont2 40 | .globalzp tmpMode2 41 | .globalzp lineMaxFontHeight 42 | .globalzp lineMaxBaselineOffset 43 | .globalzp tmpJustification2 44 | .globalzp tmpFont3 45 | .globalzp tmpMode3 46 | .globalzp numFontFiles 47 | .globalzp lintab_fontIndex 48 | .globalzp activeFont 49 | .globalzp fontLruCounter 50 | .globalzp loadedFontsCount 51 | .globalzp setFontMarkFlag 52 | .globalzp setStyleCheckmarkFlag 53 | .globalzp pageEndPtr2 54 | .globalzp curLine 55 | .globalzp curPage 56 | .globalzp loadOpt 57 | .globalzp argFilename 58 | .globalzp appDrive 59 | .globalzp docDrive 60 | .globalzp zp_D9b 61 | .globalzp overhang 62 | .globalzp zp_DAb 63 | .globalzp zp_DBb 64 | .globalzp curControlKey 65 | .globalzp zp_DDb 66 | .globalzp nextPageOpen 67 | .globalzp tmpTrkSec 68 | .globalzp dirty 69 | .globalzp privFHData 70 | .globalzp pageWidth2 71 | .globalzp usablePageHeight 72 | .globalzp usablePageHeightDiv13 73 | .globalzp searchOptions 74 | .globalzp zp_F2w 75 | .globalzp pageEndPtr1 76 | .globalzp tmpCurRecord 77 | .globalzp textScrapOnDisk 78 | .globalzp delCount 79 | .globalzp kbdStringCnt 80 | .globalzp curFontHeight 81 | .globalzp curBaselineOffset 82 | .globalzp sideFlippingRight_XXX 83 | .globalzp sideFlippingLeft_XXX 84 | 85 | -------------------------------------------------------------------------------- /zeropage.s: -------------------------------------------------------------------------------- 1 | ; ---------------------------------------------------------------------------- 2 | ; geoWrite V2.1 (C64) 3 | ; zero page layout 4 | ; ---------------------------------------------------------------------------- 5 | ; reverse-engineered by Michael Steil, www.pagetable.com 6 | ; ---------------------------------------------------------------------------- 7 | 8 | .include "zeropage.inc" 9 | 10 | .segment "USERZP" : zp 11 | 12 | userzp: 13 | 14 | cursor0: .res .sizeof(cursor); 10 bytes - see O_CSR_* 15 | cursor1: .res .sizeof(cursor); 10 bytes 16 | cursor2: .res .sizeof(cursor); 10 bytes 17 | cursor3: .res .sizeof(cursor); 10 bytes 18 | tmpBaselineOffset: .byte 0 ; related to (max) baselineOffset 19 | justification: .byte 0 ; flags 20 | zp_AAw: .word 0 21 | tmpLineWidth: .byte 0 22 | zp_ADw: .word 0 23 | tmpFont1: .word 0 24 | tmpMode1: .byte 0 25 | tmpJustification1: .byte 0 26 | pageTextHeight: .word 0 27 | tmpRangeEnd: .word 0 28 | tmpRangeStart: .word 0 29 | zp_B9b: .byte 0 30 | zp_BAb: .byte 0 ; flag 31 | zp_BBw: .word 0 32 | zp_BDw: .word 0 33 | tmpFont2: .word 0 34 | tmpMode2: .byte 0 ; related to currentMode 35 | lineMaxFontHeight: .byte 0 ; max font height of this line to know offset of next line 36 | lineMaxBaselineOffset: .byte 0 ; max baseline offset, so baselines of different fonts can be aligned 37 | tmpJustification2: .byte 0 38 | tmpFont3: .word 0 ; related to font 39 | tmpMode3: .byte 0 ; related to currentMode 40 | numFontFiles: .byte 0 ; as used in init code 41 | lintab_fontIndex = numFontFiles ; as used in runtime code 42 | activeFont: .word 0 43 | fontLruCounter: .word 0 44 | loadedFontsCount: .byte 0 45 | setFontMarkFlag: .byte 0 ; if false, skip adding the '*' to current font in menu 46 | setStyleCheckmarkFlag: .byte 0 ; if false, skip adding the '*' to current style in menu 47 | pageEndPtr2: .word 0 48 | curLine: .byte 0 49 | curPage: .byte 0 50 | loadOpt: .byte 0 ; ST_LD_DATA, ST_PR_DATA 51 | argFilename: .word 0 52 | appDrive: .byte 0 53 | docDrive: .byte 0 54 | zp_D9b: .byte 0 55 | overhang: .byte 0 56 | zp_DAb = overhang 57 | zp_DBb: .byte 0 58 | curControlKey: .byte 0 59 | zp_DDb: .byte 0 60 | nextPageOpen: .byte 0 ; record for next page is open and sectors are read one by one 61 | tmpTrkSec: .word 0 62 | dirty: .byte 0 63 | privFHData: .res .sizeof(privfhdata); will be copied into private area of the doc's file header [PRG p.446] 64 | pageWidth2: .word 0 65 | usablePageHeight: .word 0 66 | usablePageHeightDiv13: .word 0 67 | searchOptions: .byte 0 ; $80: whole word, $40: all pages 68 | zp_F2w: .word 0 ; some length in pageptr/r15 space 69 | pageEndPtr1: .word 0 ; points to last byte of page in memory 70 | tmpCurRecord: .byte 0 71 | textScrapOnDisk: .byte 0 72 | delCount: .byte 0 73 | kbdStringCnt: .byte 0 74 | curFontHeight: .byte 0 75 | curBaselineOffset: .byte 0 76 | sideFlippingRight_XXX: .word 0 77 | sideFlippingLeft_XXX: .word 0 78 | --------------------------------------------------------------------------------