From 150648fa497653b9d86d35b392ab964471d26cd3 Mon Sep 17 00:00:00 2001 From: Egan Ford Date: Mon, 24 Nov 2014 10:15:15 -0700 Subject: [PATCH] init commit --- README.md | 156 ++ apple1-8k.cfg | 37 + apple1.cfg | 39 + cc65-2.13.2-apple1.patch | 3276 ++++++++++++++++++++++++++++++++++++++ codebreaker.4+4k.mon | 195 +++ codebreaker.4+4k.wav | Bin 0 -> 2664981 bytes codebreaker.8k.mon | 194 +++ codebreaker.8k.wav | Bin 0 -> 2120949 bytes codebreaker.c | 427 +++++ codebreaker.po | Bin 0 -> 143360 bytes getkey.s | 40 + putchar.s | 11 + 12 files changed, 4375 insertions(+) create mode 100644 README.md create mode 100644 apple1-8k.cfg create mode 100644 apple1.cfg create mode 100644 cc65-2.13.2-apple1.patch create mode 100644 codebreaker.4+4k.mon create mode 100644 codebreaker.4+4k.wav create mode 100644 codebreaker.8k.mon create mode 100644 codebreaker.8k.wav create mode 100644 codebreaker.c create mode 100644 codebreaker.po create mode 100644 getkey.s create mode 100644 putchar.s diff --git a/README.md b/README.md new file mode 100644 index 0000000..f6707ff --- /dev/null +++ b/README.md @@ -0,0 +1,156 @@ +### Introduction + +*CODEBREAKER* is [*Mastermind*](http://en.wikipedia.org/wiki/Mastermind_%28board_game%29) implementation for the [*Apple-1*](http://en.wikipedia.org/wiki/Apple_I) computer. + +*CODEBREAKER* has three levels of difficulty: + +| Level | Slots | Colors | Attempts | Time(s) | +|--------|-------|--------|----------|---------| +| Novice | 4 | 6 | 10 | inf. | +| Pro | 5 | 8 | 12 | inf. | +| Master | 5 | 8 | 12 | 60 | + +**What sets *CODEBREAKER* apart from all those *other* Apple-1 titles?** + +* *A true random number generator!* Using cycle counting while waiting for keystrokes generates a very random number. No need for seeds and no cheating possible (unless you hack the code :-). +* *A countdown timer!* Using the 960 KHz clock of the Apple-1, *CODEBREAKER* can countdown the *Master* level with sub-second accuracy. If you really want to stress yourself out, play as a *Master*. ***You've got 60 seconds or you fail!*** + + +### Tested Platforms + +* OpenEmulator 1.0.2 () +* M.E.S.S. v0.145 (Mar 8 2012) - Multi Emulator Super System () +* Apple-1 Mimeo Clone 4+4 configuration (tested by Corey Cohen). *This is about as close to a real Apple-1 as you can get without a million US dollars.* + + +### Download + +``` +git clone https://github.com/datajerk/codebreaker.git +``` + +*or* + +Download and extract. + + +### Upload and Run + +If your Apple-1 has 8K of contiguous memory starting at location `$0000` then use `codebreaker.8k.mon` or `codebreaker.8k.wav`. + +Load/run with `codebreaker.8k.mon`: + +1. Hand type (brutal) or cut/paste `codebreaker.8k.mon` into the Apple-1 monitor and then type `280R`. + +Load/run with `codebreaker.8k.wav`: + +1. Load up `codebreaker.8k.wav` into your audio player. + +2. Type: + + ``` + C100R + 280.1AFFR + ``` + +3. Press *play*. + +4. To run, type: + + ``` + 280R + ``` + +
+ +If your Apple-1 has 8K of memory split into 4K banks at memory locations `$0000` and `$E000` (classic Apple-1 configuration) then use `codebreaker.4+4k.mon` or `codebreaker.4+4k.wav`. + +> `$E000-$EFFF` *must be writable.* + +Load/run with `codebreaker.4+4k.mon`: + +1. Hand type (brutal) or cut/paste `codebreaker.4+4k.mon` into the Apple-1 monitor and then type `280R`. + +Load/run with `codebreaker.4+4k.wav`: + +1. Load up `codebreaker.4+4k.wav` into your audio player. + +2. Type: + + ``` + C100R + 280.BFFR E000.EFFFR + ``` + +3. Press *play* + +4. To run type: + + ``` + 280R + ``` + + +### CFFA Notes + +`codebreaker.po` contains 3 binaries: `CODEBREAKER`, `CODEBREAKER.PT1`, `CODEBREAKER.PT2`. + +Use `CODEBREAKER` with systems that have 8k of contiguous memory starting at `$0000`. + +Use `CODEBREAKER.PT1` and `.PT2` for split 8k systems (`$0000-$0FFF`, `$E000-$EFFF`)--load `PT1` before `PT2`. + +In either case type `280R` to start. + + +### Build Notes + +*CODEBREAKER* was written in C with a bit of assembly (keyboard input, timer, and 32-bit random number seed generator). (*CODEBREAKER* may be the *only* Apple-1 title written in C :-). + +#### Prerequisites + +* To compile, you will need to build cc65 () with the `cc65-2.13.2-apple1.patch` (included). +* c2t () for creating `.mon` and `.wav` files to load via monitor (CLI) or cassette port. +* AppleCommander () for creating a CFFA `.po` diskette image. + +Contiguous 8K build: + +``` +rm codebreaker *.o +ca65 -D CODESEG=0 -t none --listing --list-bytes 100 -o getkey.o getkey.s +ca65 -D CODESEG=0 -t none --listing --list-bytes 100 -o putchar.o putchar.s +cl65 -D CODESEG=0 -T -O --static-locals -t apple1 -C apple1-8k.cfg -o codebreaker codebreaker.c getkey.o putchar.o + +c2t -l codebreaker codebreaker.8k.mon +c2t -1et -r 48000 codebreaker codebreaker.8k.wav +``` + +Non-contiguous 4+4K build: + +``` +rm code.1 code.2 *.o +ca65 -D CODESEG=1 -t none --listing --list-bytes 100 -o getkey.o getkey.s +ca65 -D CODESEG=1 -t none --listing --list-bytes 100 -o putchar.o putchar.s +cl65 -D CODESEG=1 -T -O --static-locals -t apple1 -C apple1.cfg -o code.header codebreaker.c getkey.o putchar.o + +c2t -l code.1,280 code.2,e000 codebreaker.4+4k.mon +c2t -1et -r 48000 code.1,280 code.2,e000 codebreaker.4+4k.wav + +``` + +CFFA `codebreaker.po` build: + +``` +applecmd='java -jar /path/to/AppleCommander.jar' + +rm codebreaker.po +$applecmd -pro140 codebreaker.po codebreaker +tail -c $(( $(stat -f "%z" codebreaker) - 4 )) codebreaker | $applecmd -p codebreaker.po codebreaker bin 0x0280 bin +$applecmd -p codebreaker.po codebreaker.pt1 bin 0xe000 bin < code.2 +$applecmd -p codebreaker.po codebreaker.pt2 bin 0x0280 bin < code.1 +$applecmd -ll codebreaker.po +``` + + +### Changelog + +* Initial 1.0 release, May 13 2012 diff --git a/apple1-8k.cfg b/apple1-8k.cfg new file mode 100644 index 0000000..3a4bf10 --- /dev/null +++ b/apple1-8k.cfg @@ -0,0 +1,37 @@ +MEMORY { +ZP: start = $0020, size = $00C0, define = yes; +HEADER: start = $0000, size = $0004, file = %O; +RAM: start = $0280, size = $1D80, file = %O; +} +SEGMENTS { +EXEHDR: load = HEADER, type = ro; +STARTUP: load = RAM, type = ro, define = yes; +LOWCODE: load = RAM, type = ro, optional = yes; +INIT: load = RAM, type = ro, define = yes, optional = yes; +CODE: load = RAM, type = ro; +RODATA: load = RAM, type = ro; +DATA: load = RAM, type = rw; +BSS: load = RAM, type = bss, define = yes; +HEAP: load = RAM, type = bss, optional = yes; +ZEROPAGE: load = ZP, type = zp; +} +FEATURES { +CONDES: segment = INIT, +type = constructor, +label = __CONSTRUCTOR_TABLE__, +count = __CONSTRUCTOR_COUNT__; +CONDES: segment = RODATA, +type = destructor, +label = __DESTRUCTOR_TABLE__, +count = __DESTRUCTOR_COUNT__; +CONDES: type = interruptor, +segment = RODATA, +label = __INTERRUPTOR_TABLE__, +count = __INTERRUPTOR_COUNT__; +} +SYMBOLS { +__STACKSIZE__ = $800; +} + + + diff --git a/apple1.cfg b/apple1.cfg new file mode 100644 index 0000000..ec098ef --- /dev/null +++ b/apple1.cfg @@ -0,0 +1,39 @@ +MEMORY { +ZP: start = $0020, size = $00C0, define = yes; +HEADER: start = $0000, size = $0004, file = %O; +RAM1: start = $0280, size = $0D80, file = "code.1"; +RAM2: start = $E000, size = $1000, file = "code.2"; +} +SEGMENTS { +EXEHDR: load = HEADER, type = ro; +STARTUP: load = RAM1, type = ro, define = yes; +LOWCODE: load = RAM1, type = ro, optional = yes; +INIT: load = RAM1, type = ro, define = yes, optional = yes; +CODE1: load = RAM1, type = ro; +CODE: load = RAM2, type = ro; +RODATA: load = RAM1, type = ro; +DATA: load = RAM1, type = rw; +BSS: load = RAM1, type = bss, define = yes; +HEAP: load = RAM1, type = bss, optional = yes; +ZEROPAGE: load = ZP, type = zp; +} +FEATURES { +CONDES: segment = INIT, +type = constructor, +label = __CONSTRUCTOR_TABLE__, +count = __CONSTRUCTOR_COUNT__; +CONDES: segment = RODATA, +type = destructor, +label = __DESTRUCTOR_TABLE__, +count = __DESTRUCTOR_COUNT__; +CONDES: type = interruptor, +segment = RODATA, +label = __INTERRUPTOR_TABLE__, +count = __INTERRUPTOR_COUNT__; +} +SYMBOLS { +__STACKSIZE__ = $800; +} + + + diff --git a/cc65-2.13.2-apple1.patch b/cc65-2.13.2-apple1.patch new file mode 100644 index 0000000..5d9bc25 --- /dev/null +++ b/cc65-2.13.2-apple1.patch @@ -0,0 +1,3276 @@ +diff -Ncr cc65-2.13.2/include/apple1.h cc65-2.13.2-apple1/include/apple1.h +*** cc65-2.13.2/include/apple1.h Wed Dec 31 17:00:00 1969 +--- cc65-2.13.2-apple1/include/apple1.h Tue Sep 13 18:42:27 2011 +*************** +*** 0 **** +--- 1,105 ---- ++ /*****************************************************************************/ ++ /* */ ++ /* apple1.h */ ++ /* */ ++ /* Apple I system specific definitions */ ++ /* */ ++ /* */ ++ /* */ ++ /* (C) 2000 Kevin Ruland, */ ++ /* (C) 2003 Ullrich von Bassewitz, */ ++ /* */ ++ /* */ ++ /* This software is provided 'as-is', without any expressed or implied */ ++ /* warranty. In no event will the authors be held liable for any damages */ ++ /* arising from the use of this software. */ ++ /* */ ++ /* Permission is granted to anyone to use this software for any purpose, */ ++ /* including commercial applications, and to alter it and redistribute it */ ++ /* freely, subject to the following restrictions: */ ++ /* */ ++ /* 1. The origin of this software must not be misrepresented; you must not */ ++ /* claim that you wrote the original software. If you use this software */ ++ /* in a product, an acknowledgment in the product documentation would be */ ++ /* appreciated but is not required. */ ++ /* 2. Altered source versions must be plainly marked as such, and must not */ ++ /* be misrepresented as being the original software. */ ++ /* 3. This notice may not be removed or altered from any source */ ++ /* distribution. */ ++ /* */ ++ /*****************************************************************************/ ++ ++ ++ ++ #ifndef _APPLE1_H ++ #define _APPLE1_H ++ ++ ++ ++ /* Check for errors */ ++ #if !defined(__APPLE1__) && !defined(__REPLICA1__) ++ # error This module may only be used when compiling for the Apple ][! ++ #endif ++ ++ ++ ++ /*****************************************************************************/ ++ /* Data */ ++ /*****************************************************************************/ ++ ++ ++ ++ /* Color Defines ++ * Since Apple1 does not support color text these defines are only ++ * used to get the library to compile correctly. They should not be used ++ * in user code ++ */ ++ #define COLOR_BLACK 0x00 ++ #define COLOR_WHITE 0x01 ++ ++ /* Characters codes */ ++ #define CH_ENTER 0x0D ++ #define CH_ESC 0x1B ++ #define CH_CURS_LEFT 0x08 ++ #define CH_CURS_RIGHT 0x15 ++ ++ #define CH_ULCORNER '+' ++ #define CH_URCORNER '+' ++ #define CH_LLCORNER '+' ++ #define CH_LRCORNER '+' ++ #define CH_TTEE '+' ++ #define CH_BTEE '+' ++ #define CH_LTEE '+' ++ #define CH_RTEE '+' ++ #define CH_CROSS '+' ++ ++ /* Return codes for get_ostype */ ++ #define APPLE_UNKNOWN 0x00 ++ #define APPLE_I 0x01 /* Apple I */ ++ #define REPLICA_I 0x02 /* Replica I */ ++ ++ /*****************************************************************************/ ++ /* Code */ ++ /*****************************************************************************/ ++ ++ ++ #ifdef __APPLE1__ ++ #define get_ostype() APPLE_I ++ #endif ++ #ifdef __REPLICA1__ ++ #define get_ostype() REPLICA_I ++ #endif ++ /* Get the machine type. Returns one of the APPLE_xxx codes. */ ++ ++ /* The following #defines will cause the matching functions calls in conio.h ++ * to be overlaid by macros with the same names, saving the function call ++ * overhead. ++ */ ++ #define _textcolor(color) COLOR_WHITE ++ #define _bgcolor(color) COLOR_BLACK ++ #define _bordercolor(color) COLOR_BLACK ++ ++ ++ ++ /* End of apple2.h */ ++ #endif +diff -Ncr cc65-2.13.2/include/conio.h cc65-2.13.2-apple1/include/conio.h +*** cc65-2.13.2/include/conio.h Tue Aug 21 07:16:53 2007 +--- cc65-2.13.2-apple1/include/conio.h Tue Sep 13 18:42:27 2011 +*************** +*** 63,68 **** +--- 63,72 ---- + # include + #elif defined(__APPLE2ENH__) + # include ++ #elif defined(__APPLE1__) ++ # include ++ #elif defined(__REPLICA1__) ++ # include + #elif defined(__ATARI__) + # include + #elif defined(__ATMOS__) +diff -Ncr cc65-2.13.2/libsrc/Makefile cc65-2.13.2-apple1/libsrc/Makefile +*** cc65-2.13.2/libsrc/Makefile Tue Sep 22 15:43:57 2009 +--- cc65-2.13.2-apple1/libsrc/Makefile Mon Nov 21 13:27:42 2011 +*************** +*** 15,20 **** +--- 15,21 ---- + # List of all targets + ALLTARGETS = apple2 \ + apple2enh \ ++ apple1 \ + atari \ + atmos \ + c16 \ +*************** +*** 39,44 **** +--- 40,57 ---- + done + + #----------------------------------------------------------------------------- ++ # Apple I ++ ++ apple1lib: ++ for i in apple1 common runtime conio; do \ ++ $(MAKE) SYS=apple1 -C $$i || exit 1; \ ++ $(AR) a apple1.lib $$i/*.o;\ ++ done ++ mv apple1/crt0.o apple1.o ++ cp apple1.o replica1.o ++ cp apple1.o apple-1.o ++ ++ #----------------------------------------------------------------------------- + # Apple ][ + + apple2lib: +diff -Ncr cc65-2.13.2/libsrc/apple1/Makefile cc65-2.13.2-apple1/libsrc/apple1/Makefile +*** cc65-2.13.2/libsrc/apple1/Makefile Wed Dec 31 17:00:00 1969 +--- cc65-2.13.2-apple1/libsrc/apple1/Makefile Tue Sep 13 18:42:27 2011 +*************** +*** 0 **** +--- 1,81 ---- ++ # ++ # makefile for CC65 runtime library ++ # ++ ++ .SUFFIXES: .o .s .c ++ ++ #-------------------------------------------------------------------------- ++ # Programs and flags ++ ++ SYS = apple1 ++ ++ AS = ../../src/ca65/ca65 ++ CC = ../../src/cc65/cc65 ++ LD = ../../src/ld65/ld65 ++ ++ AFLAGS = -t $(SYS) -I../../asminc ++ CFLAGS = -Osir -g -T -t $(SYS) --forget-inc-paths -I . -I ../../include ++ ++ #-------------------------------------------------------------------------- ++ # Rules ++ ++ %.o: %.c ++ @$(CC) $(CFLAGS) $< ++ @$(AS) -o $@ $(AFLAGS) $(*).s ++ ++ %.o: %.s ++ @$(AS) -g -o $@ $(AFLAGS) $< ++ ++ %.emd: %.o ../runtime/zeropage.o ++ @$(LD) -t module -o $@ $^ ++ ++ %.joy: %.o ../runtime/zeropage.o ++ @$(LD) -t module -o $@ $^ ++ ++ %.ser: %.o ../runtime/zeropage.o ++ @$(LD) -t module -o $@ $^ ++ ++ %.tgi: %.o ../runtime/zeropage.o ++ @$(LD) -t module -o $@ $^ ++ ++ #-------------------------------------------------------------------------- ++ # Object files ++ ++ S_OBJS= _scrsize.o \ ++ cclear.o \ ++ cgetc.o \ ++ clrscr.o \ ++ cputc.o \ ++ crt0.o \ ++ ctype.o \ ++ gotoxy.o \ ++ kbhit.o \ ++ randomize.o ++ ++ #-------------------------------------------------------------------------- ++ # Drivers ++ ++ EMDS = ++ ++ JOYS = ++ ++ SERS = ++ ++ TGIS = ++ ++ #-------------------------------------------------------------------------- ++ # Targets ++ ++ .PHONY: all clean zap ++ ++ all: $(C_OBJS) $(S_OBJS) $(EMDS) $(JOYS) $(SERS) $(TGIS) ++ ++ ../runtime/zeropage.o: ++ $(MAKE) -C $(dir $@) $(notdir $@) ++ ++ clean: ++ @$(RM) $(C_OBJS:.o=.s) $(C_OBJS) $(S_OBJS) $(EMDS:.emd=.o) $(JOYS:.joy=.o) $(SERS:.ser=.o) $(TGIS:.tgi=.o) ++ ++ zap: clean ++ @$(RM) $(EMDS) $(JOYS) $(SERS) $(TGIS) ++ +diff -Ncr cc65-2.13.2/libsrc/apple1/_scrsize.s cc65-2.13.2-apple1/libsrc/apple1/_scrsize.s +*** cc65-2.13.2/libsrc/apple1/_scrsize.s Wed Dec 31 17:00:00 1969 +--- cc65-2.13.2-apple1/libsrc/apple1/_scrsize.s Tue Sep 13 18:42:27 2011 +*************** +*** 0 **** +--- 1,14 ---- ++ ; ++ ; Ullrich von Bassewitz, 26.10.2000 ++ ; ++ ; Screen size variables ++ ; ++ ++ .export screensize ++ ++ .include "apple1.inc" ++ ++ screensize: ++ ldx #40 ++ ldy #24 ++ rts +diff -Ncr cc65-2.13.2/libsrc/apple1/apple1.inc cc65-2.13.2-apple1/libsrc/apple1/apple1.inc +*** cc65-2.13.2/libsrc/apple1/apple1.inc Wed Dec 31 17:00:00 1969 +--- cc65-2.13.2-apple1/libsrc/apple1/apple1.inc Mon Nov 21 10:41:26 2011 +*************** +*** 0 **** +--- 1,24 ---- ++ ;----------------------------------------------------------------------------- ++ ; Zero page locations ++ ++ IRQ := $00 ; IRQ handler jumps to $0000 ++ NMI := $0F ; NMI handler jumps to $000F ++ ++ ;----------------------------------------------------------------------------- ++ ; Hardware ++ ++ ; Keyboard input ++ KBD := $D010 ; Read keyboard ++ KBDRDY := $D011 ; Clear keyboard strobe ++ ++ ;Video output ++ VID := $D012 ; Write to video hardware ++ ++ ; RAM locations ++ RAMTOP := $EFFF ++ ++ ;----------------------------------------------------------------------------- ++ ; ROM routines ++ ++ RESET := $FF1A ; RESET entrypoint into monitor ++ ECHO := $FFEF ; Echo character in A to video hardware +diff -Ncr cc65-2.13.2/libsrc/apple1/cclear.s cc65-2.13.2-apple1/libsrc/apple1/cclear.s +*** cc65-2.13.2/libsrc/apple1/cclear.s Wed Dec 31 17:00:00 1969 +--- cc65-2.13.2-apple1/libsrc/apple1/cclear.s Tue Sep 13 18:42:27 2011 +*************** +*** 0 **** +--- 1,19 ---- ++ ; ++ ; Ullrich von Bassewitz, 08.08.1998 ++ ; ++ ; void __fastcall__ cclearxy (unsigned char x, unsigned char y, unsigned char length); ++ ; void __fastcall__ cclear (unsigned char length); ++ ; ++ ++ .export _cclearxy, _cclear ++ .import popa, _gotoxy, chlinedirect ++ ++ _cclearxy: ++ pha ; Save the length ++ jsr popa ; Get y ++ jsr _gotoxy ; Call this one, will pop params ++ pla ; Restore the length and run into _cclear ++ ++ _cclear: ++ ldx #' ' | $80 ; Blank, screen code ++ jmp chlinedirect +diff -Ncr cc65-2.13.2/libsrc/apple1/cgetc.s cc65-2.13.2-apple1/libsrc/apple1/cgetc.s +*** cc65-2.13.2/libsrc/apple1/cgetc.s Wed Dec 31 17:00:00 1969 +--- cc65-2.13.2-apple1/libsrc/apple1/cgetc.s Tue Sep 13 18:42:27 2011 +*************** +*** 0 **** +--- 1,17 ---- ++ ; ++ ; Kevin Ruland ++ ; ++ ; char cgetc (void); ++ ; ++ ++ .export _cgetc ++ ++ .include "apple1.inc" ++ ++ _cgetc: ++ lda KBDRDY ++ bpl _cgetc ; if < 128, no key pressed ++ lda KBD ++ and #$7F ; Clear high bit ++ done: ldx #$00 ++ rts +diff -Ncr cc65-2.13.2/libsrc/apple1/clrscr.s cc65-2.13.2-apple1/libsrc/apple1/clrscr.s +*** cc65-2.13.2/libsrc/apple1/clrscr.s Wed Dec 31 17:00:00 1969 +--- cc65-2.13.2-apple1/libsrc/apple1/clrscr.s Tue Sep 13 18:42:27 2011 +*************** +*** 0 **** +--- 1,10 ---- ++ ; ++ ; Kevin Ruland ++ ; ++ ; void clrscr (void); ++ ; ++ ++ .export _clrscr ++ .import HOME ++ ++ _clrscr := HOME +diff -Ncr cc65-2.13.2/libsrc/apple1/cputc.s cc65-2.13.2-apple1/libsrc/apple1/cputc.s +*** cc65-2.13.2/libsrc/apple1/cputc.s Wed Dec 31 17:00:00 1969 +--- cc65-2.13.2-apple1/libsrc/apple1/cputc.s Tue Sep 13 18:42:27 2011 +*************** +*** 0 **** +--- 1,24 ---- ++ ; ++ ; Ullrich von Bassewitz, 06.08.1998 ++ ; ++ ; void __fastcall__ cputcxy (unsigned char x, unsigned char y, char c); ++ ; void __fastcall__ cputc (char c); ++ ; ++ ++ .export _cputcxy, _cputc ++ .import popa, _gotoxy ++ ++ .include "apple1.inc" ++ ++ .code ++ ++ ; Plot a character - also used as internal function ++ ++ _cputcxy: ++ pha ; Save C ++ jsr popa ; Get Y ++ jsr _gotoxy ++ pla ; Restore C ++ ++ _cputc: ++ jmp ECHO +diff -Ncr cc65-2.13.2/libsrc/apple1/crt0.s cc65-2.13.2-apple1/libsrc/apple1/crt0.s +*** cc65-2.13.2/libsrc/apple1/crt0.s Wed Dec 31 17:00:00 1969 +--- cc65-2.13.2-apple1/libsrc/apple1/crt0.s Mon Nov 21 13:27:22 2011 +*************** +*** 0 **** +--- 1,75 ---- ++ ; ++ ; Startup code for cc65 (Apple1 version) ++ ; ++ ; This must be the *first* file on the linker command line ++ ; ++ ++ .export _exit ++ .export __STARTUP__ : absolute = 1 ; Mark as startup ++ .import zerobss ++ .import initlib, donelib ++ .import callmain, callirq ++ .import __STARTUP_LOAD__, __BSS_LOAD__ ; Linker generated ++ .import __INTERRUPTOR_COUNT__ ; Linker generated ++ ++ .include "zeropage.inc" ++ .include "apple1.inc" ++ ++ ; ------------------------------------------------------------------------ ++ ++ .segment "EXEHDR" ++ ++ .addr __STARTUP_LOAD__ ; Start address ++ .word __BSS_LOAD__ - __STARTUP_LOAD__ ; Size ++ ++ ; ------------------------------------------------------------------------ ++ ++ .segment "STARTUP" ++ ++ ldx #$FF ++ txs ; Init stack pointer ++ ++ ; Delegate all further processing to keep STARTUP small ++ jsr init ++ ++ ; Avoid re-entrance of donelib. This is also the _exit entry ++ _exit: ++ ; Call module destructors ++ jsr donelib ++ ++ ; Jump back to monitor ROM ++ exit: jmp RESET ++ ++ ++ ; ------------------------------------------------------------------------ ++ ++ .segment "INIT" ++ ++ ; Save the zero page locations we need ++ init: ++ ++ ; Clear the BSS data ++ jsr zerobss ++ ++ ; Setup the stack ++ ; The Replica 1 has 32K of RAM from $0000 to $7FFF ++ ; The Apple 1 has 4K of RAM from $0000 to $0FFF ++ ; and 4K from $E000 to $EFFF ++ ++ lda #<(RAMTOP+1) ++ sta sp ++ lda #>(RAMTOP+1) ++ sta sp+1 ; Set argument stack ptr ++ ++ ; Check for interruptors ++ ;lda #<__INTERRUPTOR_COUNT__ ++ ;beq :+ ++ ++ ; Enable interrupts ++ cli ++ ++ ; Call module constructors ++ : jsr initlib ++ ++ ; Push arguments and call main() ++ jmp callmain +diff -Ncr cc65-2.13.2/libsrc/apple1/ctype.s cc65-2.13.2-apple1/libsrc/apple1/ctype.s +*** cc65-2.13.2/libsrc/apple1/ctype.s Wed Dec 31 17:00:00 1969 +--- cc65-2.13.2-apple1/libsrc/apple1/ctype.s Tue Sep 13 18:42:27 2011 +*************** +*** 0 **** +--- 1,161 ---- ++ ; ++ ; Stefan Haubenthal with minor changes from Ullrich von Bassewitz, 2003-05-02 ++ ; ++ ; Character specification table. ++ ; ++ ++ .include "ctype.inc" ++ ++ ; The tables are readonly, put them into the rodata segment ++ ++ .rodata ++ ++ ; The following 256 byte wide table specifies attributes for the isxxx type ++ ; of functions. Doing it by a table means some overhead in space, but it ++ ; has major advantages: ++ ; ++ ; * It is fast. If it were'nt for the slow parameter passing of cc65, one ++ ; could even define macros for the isxxx functions (this is usually ++ ; done on other platforms). ++ ; ++ ; * It is highly portable. The only unportable part is the table itself, ++ ; all real code goes into the common library. ++ ; ++ ; * We save some code in the isxxx functions. ++ ++ ++ __ctype: ++ .repeat 2 ++ .byte CT_CTRL ; 0/00 ___ctrl_@___ ++ .byte CT_CTRL ; 1/01 ___ctrl_A___ ++ .byte CT_CTRL ; 2/02 ___ctrl_B___ ++ .byte CT_CTRL ; 3/03 ___ctrl_C___ ++ .byte CT_CTRL ; 4/04 ___ctrl_D___ ++ .byte CT_CTRL ; 5/05 ___ctrl_E___ ++ .byte CT_CTRL ; 6/06 ___ctrl_F___ ++ .byte CT_CTRL ; 7/07 ___ctrl_G___ ++ .byte CT_CTRL ; 8/08 ___ctrl_H___ ++ .byte CT_CTRL | CT_OTHER_WS | CT_SPACE_TAB ++ ; 9/09 ___ctrl_I___ ++ .byte CT_CTRL | CT_OTHER_WS ; 10/0a ___ctrl_J___ ++ .byte CT_CTRL | CT_OTHER_WS ; 11/0b ___ctrl_K___ ++ .byte CT_CTRL | CT_OTHER_WS ; 12/0c ___ctrl_L___ ++ .byte CT_CTRL | CT_OTHER_WS ; 13/0d ___ctrl_M___ ++ .byte CT_CTRL ; 14/0e ___ctrl_N___ ++ .byte CT_CTRL ; 15/0f ___ctrl_O___ ++ .byte CT_CTRL ; 16/10 ___ctrl_P___ ++ .byte CT_CTRL ; 17/11 ___ctrl_Q___ ++ .byte CT_CTRL ; 18/12 ___ctrl_R___ ++ .byte CT_CTRL ; 19/13 ___ctrl_S___ ++ .byte CT_CTRL ; 20/14 ___ctrl_T___ ++ .byte CT_CTRL ; 21/15 ___ctrl_U___ ++ .byte CT_CTRL ; 22/16 ___ctrl_V___ ++ .byte CT_CTRL ; 23/17 ___ctrl_W___ ++ .byte CT_CTRL ; 24/18 ___ctrl_X___ ++ .byte CT_CTRL ; 25/19 ___ctrl_Y___ ++ .byte CT_CTRL ; 26/1a ___ctrl_Z___ ++ .byte CT_CTRL ; 27/1b ___ctrl_[___ ++ .byte CT_CTRL ; 28/1c ___ctrl_\___ ++ .byte CT_CTRL ; 29/1d ___ctrl_]___ ++ .byte CT_CTRL ; 30/1e ___ctrl_^___ ++ .byte CT_CTRL ; 31/1f ___ctrl_____ ++ .byte CT_SPACE | CT_SPACE_TAB ; 32/20 ___SPACE___ ++ .byte CT_NONE ; 33/21 _____!_____ ++ .byte CT_NONE ; 34/22 _____"_____ ++ .byte CT_NONE ; 35/23 _____#_____ ++ .byte CT_NONE ; 36/24 _____$_____ ++ .byte CT_NONE ; 37/25 _____%_____ ++ .byte CT_NONE ; 38/26 _____&_____ ++ .byte CT_NONE ; 39/27 _____'_____ ++ .byte CT_NONE ; 40/28 _____(_____ ++ .byte CT_NONE ; 41/29 _____)_____ ++ .byte CT_NONE ; 42/2a _____*_____ ++ .byte CT_NONE ; 43/2b _____+_____ ++ .byte CT_NONE ; 44/2c _____,_____ ++ .byte CT_NONE ; 45/2d _____-_____ ++ .byte CT_NONE ; 46/2e _____._____ ++ .byte CT_NONE ; 47/2f _____/_____ ++ .byte CT_DIGIT | CT_XDIGIT ; 48/30 _____0_____ ++ .byte CT_DIGIT | CT_XDIGIT ; 49/31 _____1_____ ++ .byte CT_DIGIT | CT_XDIGIT ; 50/32 _____2_____ ++ .byte CT_DIGIT | CT_XDIGIT ; 51/33 _____3_____ ++ .byte CT_DIGIT | CT_XDIGIT ; 52/34 _____4_____ ++ .byte CT_DIGIT | CT_XDIGIT ; 53/35 _____5_____ ++ .byte CT_DIGIT | CT_XDIGIT ; 54/36 _____6_____ ++ .byte CT_DIGIT | CT_XDIGIT ; 55/37 _____7_____ ++ .byte CT_DIGIT | CT_XDIGIT ; 56/38 _____8_____ ++ .byte CT_DIGIT | CT_XDIGIT ; 57/39 _____9_____ ++ .byte CT_NONE ; 58/3a _____:_____ ++ .byte CT_NONE ; 59/3b _____;_____ ++ .byte CT_NONE ; 60/3c _____<_____ ++ .byte CT_NONE ; 61/3d _____=_____ ++ .byte CT_NONE ; 62/3e _____>_____ ++ .byte CT_NONE ; 63/3f _____?_____ ++ ++ .byte CT_NONE ; 64/40 _____@_____ ++ .byte CT_UPPER | CT_XDIGIT ; 65/41 _____A_____ ++ .byte CT_UPPER | CT_XDIGIT ; 66/42 _____B_____ ++ .byte CT_UPPER | CT_XDIGIT ; 67/43 _____C_____ ++ .byte CT_UPPER | CT_XDIGIT ; 68/44 _____D_____ ++ .byte CT_UPPER | CT_XDIGIT ; 69/45 _____E_____ ++ .byte CT_UPPER | CT_XDIGIT ; 70/46 _____F_____ ++ .byte CT_UPPER ; 71/47 _____G_____ ++ .byte CT_UPPER ; 72/48 _____H_____ ++ .byte CT_UPPER ; 73/49 _____I_____ ++ .byte CT_UPPER ; 74/4a _____J_____ ++ .byte CT_UPPER ; 75/4b _____K_____ ++ .byte CT_UPPER ; 76/4c _____L_____ ++ .byte CT_UPPER ; 77/4d _____M_____ ++ .byte CT_UPPER ; 78/4e _____N_____ ++ .byte CT_UPPER ; 79/4f _____O_____ ++ .byte CT_UPPER ; 80/50 _____P_____ ++ .byte CT_UPPER ; 81/51 _____Q_____ ++ .byte CT_UPPER ; 82/52 _____R_____ ++ .byte CT_UPPER ; 83/53 _____S_____ ++ .byte CT_UPPER ; 84/54 _____T_____ ++ .byte CT_UPPER ; 85/55 _____U_____ ++ .byte CT_UPPER ; 86/56 _____V_____ ++ .byte CT_UPPER ; 87/57 _____W_____ ++ .byte CT_UPPER ; 88/58 _____X_____ ++ .byte CT_UPPER ; 89/59 _____Y_____ ++ .byte CT_UPPER ; 90/5a _____Z_____ ++ .byte CT_NONE ; 91/5b _____[_____ ++ .byte CT_NONE ; 92/5c _____\_____ ++ .byte CT_NONE ; 93/5d _____]_____ ++ .byte CT_NONE ; 94/5e _____^_____ ++ .byte CT_NONE ; 95/5f _UNDERLINE_ ++ .byte CT_NONE ; 96/60 ___grave___ ++ .byte CT_LOWER | CT_XDIGIT ; 97/61 _____a_____ ++ .byte CT_LOWER | CT_XDIGIT ; 98/62 _____b_____ ++ .byte CT_LOWER | CT_XDIGIT ; 99/63 _____c_____ ++ .byte CT_LOWER | CT_XDIGIT ; 100/64 _____d_____ ++ .byte CT_LOWER | CT_XDIGIT ; 101/65 _____e_____ ++ .byte CT_LOWER | CT_XDIGIT ; 102/66 _____f_____ ++ .byte CT_LOWER ; 103/67 _____g_____ ++ .byte CT_LOWER ; 104/68 _____h_____ ++ .byte CT_LOWER ; 105/69 _____i_____ ++ .byte CT_LOWER ; 106/6a _____j_____ ++ .byte CT_LOWER ; 107/6b _____k_____ ++ .byte CT_LOWER ; 108/6c _____l_____ ++ .byte CT_LOWER ; 109/6d _____m_____ ++ .byte CT_LOWER ; 110/6e _____n_____ ++ .byte CT_LOWER ; 111/6f _____o_____ ++ .byte CT_LOWER ; 112/70 _____p_____ ++ .byte CT_LOWER ; 113/71 _____q_____ ++ .byte CT_LOWER ; 114/72 _____r_____ ++ .byte CT_LOWER ; 115/73 _____s_____ ++ .byte CT_LOWER ; 116/74 _____t_____ ++ .byte CT_LOWER ; 117/75 _____u_____ ++ .byte CT_LOWER ; 118/76 _____v_____ ++ .byte CT_LOWER ; 119/77 _____w_____ ++ .byte CT_LOWER ; 120/78 _____x_____ ++ .byte CT_LOWER ; 121/79 _____y_____ ++ .byte CT_LOWER ; 122/7a _____z_____ ++ .byte CT_NONE ; 123/7b _____{_____ ++ .byte CT_NONE ; 124/7c _____|_____ ++ .byte CT_NONE ; 125/7d _____}_____ ++ .byte CT_NONE ; 126/7e _____~_____ ++ .byte CT_OTHER_WS ; 127/7f ____DEL____ ++ .endrepeat ++ ++ +diff -Ncr cc65-2.13.2/libsrc/apple1/gotoxy.s cc65-2.13.2-apple1/libsrc/apple1/gotoxy.s +*** cc65-2.13.2/libsrc/apple1/gotoxy.s Wed Dec 31 17:00:00 1969 +--- cc65-2.13.2-apple1/libsrc/apple1/gotoxy.s Tue Sep 13 18:42:27 2011 +*************** +*** 0 **** +--- 1,22 ---- ++ ; ++ ; Ullrich von Bassewitz, 06.08.1998 ++ ; ++ ; void __fastcall__ gotoxy (unsigned char x, unsigned char y); ++ ; void __fastcall__ gotox (unsigned char x); ++ ; ++ ++ .export _gotoxy, _gotox ++ ++ .import popa, VTABZ ++ ++ .include "apple1.inc" ++ ++ _gotoxy: ++ clc ++ ; sta CV ; Store Y ++ ; jsr VTABZ ++ jsr popa ; Get X ++ ++ _gotox: ++ ; sta CH ; Store X ++ rts +diff -Ncr cc65-2.13.2/libsrc/apple1/kbhit.s cc65-2.13.2-apple1/libsrc/apple1/kbhit.s +*** cc65-2.13.2/libsrc/apple1/kbhit.s Wed Dec 31 17:00:00 1969 +--- cc65-2.13.2-apple1/libsrc/apple1/kbhit.s Tue Sep 13 18:42:27 2011 +*************** +*** 0 **** +--- 1,18 ---- ++ ; ++ ; Kevin Ruland ++ ; Ullrich von Bassewitz, 2005-03-25 ++ ; ++ ; unsigned char kbhit (void); ++ ; ++ ++ .export _kbhit ++ ++ .include "apple1.inc" ++ ++ _kbhit: ++ lda KBDRDY ; Reading KBDRDY checks for keypress ++ rol ; if high bit is set, key was pressed ++ lda #$00 ++ tax ++ rol ++ rts +diff -Ncr cc65-2.13.2/libsrc/apple1/randomize.s cc65-2.13.2-apple1/libsrc/apple1/randomize.s +*** cc65-2.13.2/libsrc/apple1/randomize.s Wed Dec 31 17:00:00 1969 +--- cc65-2.13.2-apple1/libsrc/apple1/randomize.s Tue Sep 13 18:42:27 2011 +*************** +*** 0 **** +--- 1,17 ---- ++ ; ++ ; Ullrich von Bassewitz, 07.11.2002 ++ ; ++ ; void _randomize (void); ++ ; /* Initialize the random number generator */ ++ ; ++ ++ .export __randomize ++ .import _srand ++ ++ .include "apple1.inc" ++ ++ __randomize: ++ ldx #$EA ; Use random value supplied by ROM ++ lda #$55 ++ jmp _srand ; Initialize generator ++ +diff -Ncr cc65-2.13.2/src/ca65/main.c cc65-2.13.2-apple1/src/ca65/main.c +*** cc65-2.13.2/src/ca65/main.c Mon Sep 28 14:12:43 2009 +--- cc65-2.13.2-apple1/src/ca65/main.c Tue Sep 13 18:42:27 2011 +*************** +*** 243,248 **** +--- 243,256 ---- + NewSymbol ("__APPLE2ENH__", 1); + break; + ++ case TGT_APPLE1: ++ NewSymbol ("__APPLE1__", 1); ++ break; ++ ++ case TGT_REPLICA1: ++ NewSymbol ("__REPLICA1__", 1); ++ break; ++ + case TGT_GEOS: + /* Do not handle as a CBM system */ + NewSymbol ("__GEOS__", 1); +diff -Ncr cc65-2.13.2/src/ca65/main.c.orig cc65-2.13.2-apple1/src/ca65/main.c.orig +*** cc65-2.13.2/src/ca65/main.c.orig Wed Dec 31 17:00:00 1969 +--- cc65-2.13.2-apple1/src/ca65/main.c.orig Mon Sep 28 14:12:43 2009 +*************** +*** 0 **** +--- 1,993 ---- ++ /*****************************************************************************/ ++ /* */ ++ /* main.c */ ++ /* */ ++ /* Main program for the ca65 macroassembler */ ++ /* */ ++ /* */ ++ /* */ ++ /* (C) 1998-2009, Ullrich von Bassewitz */ ++ /* Roemerstrasse 52 */ ++ /* D-70794 Filderstadt */ ++ /* EMail: uz@cc65.org */ ++ /* */ ++ /* */ ++ /* This software is provided 'as-is', without any expressed or implied */ ++ /* warranty. In no event will the authors be held liable for any damages */ ++ /* arising from the use of this software. */ ++ /* */ ++ /* Permission is granted to anyone to use this software for any purpose, */ ++ /* including commercial applications, and to alter it and redistribute it */ ++ /* freely, subject to the following restrictions: */ ++ /* */ ++ /* 1. The origin of this software must not be misrepresented; you must not */ ++ /* claim that you wrote the original software. If you use this software */ ++ /* in a product, an acknowledgment in the product documentation would be */ ++ /* appreciated but is not required. */ ++ /* 2. Altered source versions must be plainly marked as such, and must not */ ++ /* be misrepresented as being the original software. */ ++ /* 3. This notice may not be removed or altered from any source */ ++ /* distribution. */ ++ /* */ ++ /*****************************************************************************/ ++ ++ ++ ++ #include ++ #include ++ #include ++ #include ++ ++ /* common */ ++ #include "addrsize.h" ++ #include "chartype.h" ++ #include "cmdline.h" ++ #include "mmodel.h" ++ #include "print.h" ++ #include "strbuf.h" ++ #include "target.h" ++ #include "tgttrans.h" ++ #include "version.h" ++ ++ /* ca65 */ ++ #include "abend.h" ++ #include "asserts.h" ++ #include "error.h" ++ #include "expr.h" ++ #include "feature.h" ++ #include "filetab.h" ++ #include "global.h" ++ #include "incpath.h" ++ #include "instr.h" ++ #include "istack.h" ++ #include "lineinfo.h" ++ #include "listing.h" ++ #include "macpack.h" ++ #include "macro.h" ++ #include "nexttok.h" ++ #include "objfile.h" ++ #include "options.h" ++ #include "pseudo.h" ++ #include "scanner.h" ++ #include "segment.h" ++ #include "sizeof.h" ++ #include "spool.h" ++ #include "symtab.h" ++ #include "ulabel.h" ++ ++ ++ ++ /*****************************************************************************/ ++ /* Code */ ++ /*****************************************************************************/ ++ ++ ++ ++ static void Usage (void) ++ /* Print usage information and exit */ ++ { ++ printf ("Usage: %s [options] file\n" ++ "Short options:\n" ++ " -D name[=value]\tDefine a symbol\n" ++ " -I dir\t\tSet an include directory search path\n" ++ " -U\t\t\tMark unresolved symbols as import\n" ++ " -V\t\t\tPrint the assembler version\n" ++ " -W n\t\t\tSet warning level n\n" ++ " -g\t\t\tAdd debug info to object file\n" ++ " -h\t\t\tHelp (this text)\n" ++ " -i\t\t\tIgnore case of symbols\n" ++ " -l\t\t\tCreate a listing if assembly was ok\n" ++ " -mm model\t\tSet the memory model\n" ++ " -o name\t\tName the output file\n" ++ " -s\t\t\tEnable smart mode\n" ++ " -t sys\t\tSet the target system\n" ++ " -v\t\t\tIncrease verbosity\n" ++ "\n" ++ "Long options:\n" ++ " --auto-import\t\tMark unresolved symbols as import\n" ++ " --cpu type\t\tSet cpu type\n" ++ " --debug-info\t\tAdd debug info to object file\n" ++ " --feature name\tSet an emulation feature\n" ++ " --forget-inc-paths\tForget include search paths\n" ++ " --help\t\tHelp (this text)\n" ++ " --ignore-case\t\tIgnore case of symbols\n" ++ " --include-dir dir\tSet an include directory search path\n" ++ " --listing\t\tCreate a listing if assembly was ok\n" ++ " --list-bytes n\tMaximum number of bytes per listing line\n" ++ " --macpack-dir dir\tSet a macro package directory\n" ++ " --memory-model model\tSet the memory model\n" ++ " --pagelength n\tSet the page length for the listing\n" ++ " --smart\t\tEnable smart mode\n" ++ " --target sys\t\tSet the target system\n" ++ " --verbose\t\tIncrease verbosity\n" ++ " --version\t\tPrint the assembler version\n", ++ ProgName); ++ } ++ ++ ++ ++ static void SetOptions (void) ++ /* Set the option for the translator */ ++ { ++ StrBuf Buf = STATIC_STRBUF_INITIALIZER; ++ ++ /* Set the translator */ ++ SB_Printf (&Buf, "ca65 V%s", GetVersionAsString ()); ++ OptTranslator (&Buf); ++ ++ /* Set date and time */ ++ OptDateTime ((unsigned long) time(0)); ++ ++ /* Release memory for the string */ ++ SB_Done (&Buf); ++ } ++ ++ ++ ++ static void NewSymbol (const char* SymName, long Val) ++ /* Define a symbol with a fixed numeric value in the current scope */ ++ { ++ ExprNode* Expr; ++ SymEntry* Sym; ++ ++ /* Convert the name to a string buffer */ ++ StrBuf SymBuf = STATIC_STRBUF_INITIALIZER; ++ SB_CopyStr (&SymBuf, SymName); ++ ++ /* Search for the symbol, allocate a new one if it doesn't exist */ ++ Sym = SymFind (CurrentScope, &SymBuf, SYM_ALLOC_NEW); ++ ++ /* Check if have already a symbol with this name */ ++ if (SymIsDef (Sym)) { ++ AbEnd ("`%s' is already defined", SymName); ++ } ++ ++ /* Generate an expression for the symbol */ ++ Expr = GenLiteralExpr (Val); ++ ++ /* Mark the symbol as defined */ ++ SymDef (Sym, Expr, ADDR_SIZE_DEFAULT, SF_NONE); ++ ++ /* Free string buffer memory */ ++ SB_Done (&SymBuf); ++ } ++ ++ ++ ++ static void CBMSystem (const char* Sys) ++ /* Define a CBM system */ ++ { ++ NewSymbol ("__CBM__", 1); ++ NewSymbol (Sys, 1); ++ } ++ ++ ++ ++ static void SetSys (const char* Sys) ++ /* Define a target system */ ++ { ++ switch (Target = FindTarget (Sys)) { ++ ++ case TGT_NONE: ++ break; ++ ++ case TGT_MODULE: ++ AbEnd ("Cannot use `module' as a target for the assembler"); ++ break; ++ ++ case TGT_ATARI: ++ NewSymbol ("__ATARI__", 1); ++ break; ++ ++ case TGT_C16: ++ CBMSystem ("__C16__"); ++ break; ++ ++ case TGT_C64: ++ CBMSystem ("__C64__"); ++ break; ++ ++ case TGT_VIC20: ++ CBMSystem ("__VIC20__"); ++ break; ++ ++ case TGT_C128: ++ CBMSystem ("__C128__"); ++ break; ++ ++ case TGT_PLUS4: ++ CBMSystem ("__PLUS4__"); ++ break; ++ ++ case TGT_CBM510: ++ CBMSystem ("__CBM510__"); ++ break; ++ ++ case TGT_CBM610: ++ CBMSystem ("__CBM610__"); ++ break; ++ ++ case TGT_PET: ++ CBMSystem ("__PET__"); ++ break; ++ ++ case TGT_BBC: ++ NewSymbol ("__BBC__", 1); ++ break; ++ ++ case TGT_APPLE2: ++ NewSymbol ("__APPLE2__", 1); ++ break; ++ ++ case TGT_APPLE2ENH: ++ NewSymbol ("__APPLE2ENH__", 1); ++ break; ++ ++ case TGT_GEOS: ++ /* Do not handle as a CBM system */ ++ NewSymbol ("__GEOS__", 1); ++ break; ++ ++ case TGT_LUNIX: ++ NewSymbol ("__LUNIX__", 1); ++ break; ++ ++ case TGT_ATMOS: ++ NewSymbol ("__ATMOS__", 1); ++ break; ++ ++ case TGT_NES: ++ NewSymbol ("__NES__", 1); ++ break; ++ ++ case TGT_SUPERVISION: ++ NewSymbol ("__SUPERVISION__", 1); ++ break; ++ ++ case TGT_LYNX: ++ NewSymbol ("__LYNX__", 1); ++ break; ++ ++ default: ++ AbEnd ("Invalid target name: `%s'", Sys); ++ ++ } ++ ++ /* Initialize the translation tables for the target system */ ++ TgtTranslateInit (); ++ } ++ ++ ++ ++ static void DefineSymbol (const char* Def) ++ /* Define a symbol from the command line */ ++ { ++ const char* P; ++ unsigned I; ++ long Val; ++ StrBuf SymName = AUTO_STRBUF_INITIALIZER; ++ ++ ++ /* The symbol must start with a character or underline */ ++ if (!IsIdStart (Def [0])) { ++ InvDef (Def); ++ } ++ P = Def; ++ ++ /* Copy the symbol, checking the rest */ ++ I = 0; ++ while (IsIdChar (*P)) { ++ SB_AppendChar (&SymName, *P++); ++ } ++ SB_Terminate (&SymName); ++ ++ /* Do we have a value given? */ ++ if (*P != '=') { ++ if (*P != '\0') { ++ InvDef (Def); ++ } ++ Val = 0; ++ } else { ++ /* We have a value */ ++ ++P; ++ if (*P == '$') { ++ ++P; ++ if (sscanf (P, "%lx", &Val) != 1) { ++ InvDef (Def); ++ } ++ } else { ++ if (sscanf (P, "%li", &Val) != 1) { ++ InvDef (Def); ++ } ++ } ++ } ++ ++ /* Define the new symbol */ ++ NewSymbol (SB_GetConstBuf (&SymName), Val); ++ ++ /* Release string memory */ ++ SB_Done (&SymName); ++ } ++ ++ ++ ++ static void OptAutoImport (const char* Opt attribute ((unused)), ++ const char* Arg attribute ((unused))) ++ /* Mark unresolved symbols as imported */ ++ { ++ AutoImport = 1; ++ } ++ ++ ++ ++ static void OptCPU (const char* Opt attribute ((unused)), const char* Arg) ++ /* Handle the --cpu option */ ++ { ++ cpu_t CPU = FindCPU (Arg); ++ if (CPU == CPU_UNKNOWN) { ++ AbEnd ("Invalid CPU: `%s'", Arg); ++ } else { ++ SetCPU (CPU); ++ } ++ } ++ ++ ++ ++ static void OptDebugInfo (const char* Opt attribute ((unused)), ++ const char* Arg attribute ((unused))) ++ /* Add debug info to the object file */ ++ { ++ DbgSyms = 1; ++ } ++ ++ ++ ++ static void OptFeature (const char* Opt attribute ((unused)), const char* Arg) ++ /* Set an emulation feature */ ++ { ++ /* Make a string buffer from Arg */ ++ StrBuf Feature; ++ ++ /* Set the feature, check for errors */ ++ if (SetFeature (SB_InitFromString (&Feature, Arg)) == FEAT_UNKNOWN) { ++ AbEnd ("Illegal emulation feature: `%s'", Arg); ++ } ++ } ++ ++ ++ ++ static void OptForgetIncPaths (const char* Opt attribute ((unused)), ++ const char* Arg attribute ((unused))) ++ /* Forget all currently defined include paths */ ++ { ++ ForgetAllIncludePaths (); ++ } ++ ++ ++ ++ static void OptHelp (const char* Opt attribute ((unused)), ++ const char* Arg attribute ((unused))) ++ /* Print usage information and exit */ ++ { ++ Usage (); ++ exit (EXIT_SUCCESS); ++ } ++ ++ ++ ++ static void OptIgnoreCase (const char* Opt attribute ((unused)), ++ const char* Arg attribute ((unused))) ++ /* Ignore case on symbols */ ++ { ++ IgnoreCase = 1; ++ } ++ ++ ++ ++ static void OptIncludeDir (const char* Opt attribute ((unused)), const char* Arg) ++ /* Add an include search path */ ++ { ++ AddIncludePath (Arg); ++ } ++ ++ ++ ++ static void OptListBytes (const char* Opt, const char* Arg) ++ /* Set the maximum number of bytes per listing line */ ++ { ++ unsigned Num; ++ char Check; ++ ++ /* Convert the argument to a number */ ++ if (sscanf (Arg, "%u%c", &Num, &Check) != 1) { ++ AbEnd ("Invalid argument for option `%s'", Opt); ++ } ++ ++ /* Check the bounds */ ++ if (Num != 0 && (Num < MIN_LIST_BYTES || Num > MAX_LIST_BYTES)) { ++ AbEnd ("Argument for option `%s' is out of range", Opt); ++ } ++ ++ /* Use the value */ ++ SetListBytes (Num); ++ } ++ ++ ++ ++ static void OptListing (const char* Opt attribute ((unused)), ++ const char* Arg attribute ((unused))) ++ /* Create a listing file */ ++ { ++ Listing = 1; ++ } ++ ++ ++ ++ static void OptMacPackDir (const char* Opt attribute ((unused)), const char* Arg) ++ /* Set a macro package directory */ ++ { ++ /* Make a string buffer from Arg */ ++ StrBuf Dir; ++ ++ /* Use the directory */ ++ MacPackSetDir (SB_InitFromString (&Dir, Arg)); ++ } ++ ++ ++ ++ static void OptMemoryModel (const char* Opt, const char* Arg) ++ /* Set the memory model */ ++ { ++ mmodel_t M; ++ ++ /* Check the current memory model */ ++ if (MemoryModel != MMODEL_UNKNOWN) { ++ AbEnd ("Cannot use option `%s' twice", Opt); ++ } ++ ++ /* Translate the memory model name and check it */ ++ M = FindMemoryModel (Arg); ++ if (M == MMODEL_UNKNOWN) { ++ AbEnd ("Unknown memory model: %s", Arg); ++ } else if (M == MMODEL_HUGE) { ++ AbEnd ("Unsupported memory model: %s", Arg); ++ } ++ ++ /* Set the memory model */ ++ SetMemoryModel (M); ++ } ++ ++ ++ ++ static void OptPageLength (const char* Opt attribute ((unused)), const char* Arg) ++ /* Handle the --pagelength option */ ++ { ++ int Len = atoi (Arg); ++ if (Len != -1 && (Len < MIN_PAGE_LEN || Len > MAX_PAGE_LEN)) { ++ AbEnd ("Invalid page length: %d", Len); ++ } ++ PageLength = Len; ++ } ++ ++ ++ ++ static void OptSmart (const char* Opt attribute ((unused)), ++ const char* Arg attribute ((unused))) ++ /* Handle the -s/--smart options */ ++ { ++ SmartMode = 1; ++ } ++ ++ ++ ++ static void OptTarget (const char* Opt attribute ((unused)), const char* Arg) ++ /* Set the target system */ ++ { ++ SetSys (Arg); ++ } ++ ++ ++ ++ static void OptVerbose (const char* Opt attribute ((unused)), ++ const char* Arg attribute ((unused))) ++ /* Increase verbosity */ ++ { ++ ++Verbosity; ++ } ++ ++ ++ ++ static void OptVersion (const char* Opt attribute ((unused)), ++ const char* Arg attribute ((unused))) ++ /* Print the assembler version */ ++ { ++ fprintf (stderr, "ca65 V%s - %s\n", GetVersionAsString (), Copyright); ++ } ++ ++ ++ ++ static void DoPCAssign (void) ++ /* Start absolute code */ ++ { ++ long PC = ConstExpression (); ++ if (PC < 0 || PC > 0xFFFFFF) { ++ Error ("Range error"); ++ } else { ++ EnterAbsoluteMode (PC); ++ } ++ } ++ ++ ++ ++ static void OneLine (void) ++ /* Assemble one line */ ++ { ++ Segment* Seg = 0; ++ unsigned long PC = 0; ++ SymEntry* Sym = 0; ++ int Macro = 0; ++ int Instr = -1; ++ ++ /* Initialize the new listing line if we are actually reading from file ++ * and not from internally pushed input. ++ */ ++ if (!HavePushedInput ()) { ++ InitListingLine (); ++ } ++ ++ if (Tok == TOK_COLON) { ++ /* An unnamed label */ ++ ULabDef (); ++ NextTok (); ++ } ++ ++ /* If the first token on the line is an identifier, check for a macro or ++ * an instruction. ++ */ ++ if (Tok == TOK_IDENT) { ++ if (!UbiquitousIdents) { ++ /* Macros and symbols cannot use instruction names */ ++ Instr = FindInstruction (&SVal); ++ if (Instr < 0) { ++ Macro = IsMacro (&SVal); ++ } ++ } else { ++ /* Macros and symbols may use the names of instructions */ ++ Macro = IsMacro (&SVal); ++ } ++ } ++ ++ /* Handle an identifier */ ++ if (Tok == TOK_LOCAL_IDENT || (Tok == TOK_IDENT && Instr < 0 && !Macro)) { ++ ++ /* Did we have whitespace before the ident? */ ++ int HadWS = WS; ++ ++ /* Generate the symbol table entry, then skip the name */ ++ if (Tok == TOK_IDENT) { ++ Sym = SymFind (CurrentScope, &SVal, SYM_ALLOC_NEW); ++ } else { ++ Sym = SymFindLocal (SymLast, &SVal, SYM_ALLOC_NEW); ++ } ++ NextTok (); ++ ++ /* If a colon follows, this is a label definition. If there ++ * is no colon, it's an assignment. ++ */ ++ if (Tok == TOK_EQ || Tok == TOK_ASSIGN) { ++ ++ /* Determine the symbol flags from the assignment token */ ++ unsigned Flags = (Tok == TOK_ASSIGN)? SF_LABEL : SF_NONE; ++ ++ /* Skip the '=' */ ++ NextTok (); ++ ++ /* Define the symbol with the expression following the '=' */ ++ SymDef (Sym, Expression(), ADDR_SIZE_DEFAULT, Flags); ++ ++ /* Don't allow anything after a symbol definition */ ++ ConsumeSep (); ++ return; ++ ++ } else if (Tok == TOK_SET) { ++ ++ ExprNode* Expr; ++ ++ /* .SET defines variables (= redefinable symbols) */ ++ NextTok (); ++ ++ /* Read the assignment expression, which must be constant */ ++ Expr = GenLiteralExpr (ConstExpression ()); ++ ++ /* Define the symbol with the constant expression following ++ * the '=' ++ */ ++ SymDef (Sym, Expr, ADDR_SIZE_DEFAULT, SF_VAR); ++ ++ /* Don't allow anything after a symbol definition */ ++ ConsumeSep (); ++ return; ++ ++ } else { ++ ++ /* A label. Remember the current segment, so we can later ++ * determine the size of the data stored under the label. ++ */ ++ Seg = ActiveSeg; ++ PC = GetPC (); ++ ++ /* Define the label */ ++ SymDef (Sym, GenCurrentPC (), ADDR_SIZE_DEFAULT, SF_LABEL); ++ ++ /* Skip the colon. If NoColonLabels is enabled, allow labels ++ * without a colon if there is no whitespace before the ++ * identifier. ++ */ ++ if (Tok != TOK_COLON) { ++ if (HadWS || !NoColonLabels) { ++ Error ("`:' expected"); ++ /* Try some smart error recovery */ ++ if (Tok == TOK_NAMESPACE) { ++ NextTok (); ++ } ++ } ++ } else { ++ /* Skip the colon */ ++ NextTok (); ++ } ++ ++ /* If we come here, a new identifier may be waiting, which may ++ * be a macro or instruction. ++ */ ++ if (Tok == TOK_IDENT) { ++ if (!UbiquitousIdents) { ++ /* Macros and symbols cannot use instruction names */ ++ Instr = FindInstruction (&SVal); ++ if (Instr < 0) { ++ Macro = IsMacro (&SVal); ++ } ++ } else { ++ /* Macros and symbols may use the names of instructions */ ++ Macro = IsMacro (&SVal); ++ } ++ } ++ } ++ } ++ ++ /* We've handled a possible label, now handle the remainder of the line */ ++ if (Tok >= TOK_FIRSTPSEUDO && Tok <= TOK_LASTPSEUDO) { ++ /* A control command */ ++ HandlePseudo (); ++ } else if (Macro) { ++ /* A macro expansion */ ++ MacExpandStart (); ++ } else if (Instr >= 0 || ++ (UbiquitousIdents && ((Instr = FindInstruction (&SVal)) >= 0))) { ++ /* A mnemonic - assemble one instruction */ ++ HandleInstruction (Instr); ++ } else if (PCAssignment && (Tok == TOK_STAR || Tok == TOK_PC)) { ++ NextTok (); ++ if (Tok != TOK_EQ) { ++ Error ("`=' expected"); ++ SkipUntilSep (); ++ } else { ++ /* Skip the equal sign */ ++ NextTok (); ++ /* Enter absolute mode */ ++ DoPCAssign (); ++ } ++ } ++ ++ /* If we have defined a label, remember its size. Sym is also set by ++ * a symbol assignment, but in this case Done is false, so we don't ++ * come here. ++ */ ++ if (Sym) { ++ unsigned long Size; ++ if (Seg == ActiveSeg) { ++ /* Same segment */ ++ Size = GetPC () - PC; ++ } else { ++ /* The line has switched the segment */ ++ Size = 0; ++ } ++ DefSizeOfSymbol (Sym, Size); ++ } ++ ++ /* Line separator must come here */ ++ ConsumeSep (); ++ } ++ ++ ++ ++ static void Assemble (void) ++ /* Start the ball rolling ... */ ++ { ++ /* Prime the pump */ ++ NextTok (); ++ ++ /* Assemble lines until end of file */ ++ while (Tok != TOK_EOF) { ++ OneLine (); ++ } ++ } ++ ++ ++ ++ static void CreateObjFile (void) ++ /* Create the object file */ ++ { ++ /* Open the object, write the header */ ++ ObjOpen (); ++ ++ /* Write the object file options */ ++ WriteOptions (); ++ ++ /* Write the list of input files */ ++ WriteFiles (); ++ ++ /* Write the segment data to the file */ ++ WriteSegments (); ++ ++ /* Write the import list */ ++ WriteImports (); ++ ++ /* Write the export list */ ++ WriteExports (); ++ ++ /* Write debug symbols if requested */ ++ WriteDbgSyms (); ++ ++ /* Write line infos if requested */ ++ WriteLineInfo (); ++ ++ /* Write the string pool */ ++ WriteStrPool (); ++ ++ /* Write the assertions */ ++ WriteAssertions (); ++ ++ /* Write an updated header and close the file */ ++ ObjClose (); ++ } ++ ++ ++ ++ int main (int argc, char* argv []) ++ /* Assembler main program */ ++ { ++ /* Program long options */ ++ static const LongOpt OptTab[] = { ++ { "--auto-import", 0, OptAutoImport }, ++ { "--cpu", 1, OptCPU }, ++ { "--debug-info", 0, OptDebugInfo }, ++ { "--feature", 1, OptFeature }, ++ { "--forget-inc-paths", 0, OptForgetIncPaths }, ++ { "--help", 0, OptHelp }, ++ { "--ignore-case", 0, OptIgnoreCase }, ++ { "--include-dir", 1, OptIncludeDir }, ++ { "--list-bytes", 1, OptListBytes }, ++ { "--listing", 0, OptListing }, ++ { "--macpack-dir", 1, OptMacPackDir }, ++ { "--memory-model", 1, OptMemoryModel }, ++ { "--pagelength", 1, OptPageLength }, ++ { "--smart", 0, OptSmart }, ++ { "--target", 1, OptTarget }, ++ { "--verbose", 0, OptVerbose }, ++ { "--version", 0, OptVersion }, ++ }; ++ ++ /* Name of the global name space */ ++ static const StrBuf GlobalNameSpace = STATIC_STRBUF_INITIALIZER; ++ ++ unsigned I; ++ ++ /* Initialize the cmdline module */ ++ InitCmdLine (&argc, &argv, "ca65"); ++ ++ /* Initialize the include search paths */ ++ InitIncludePaths (); ++ ++ /* Enter the base lexical level. We must do that here, since we may ++ * define symbols using -D. ++ */ ++ SymEnterLevel (&GlobalNameSpace, ST_GLOBAL, ADDR_SIZE_DEFAULT); ++ ++ /* Check the parameters */ ++ I = 1; ++ while (I < ArgCount) { ++ ++ /* Get the argument */ ++ const char* Arg = ArgVec [I]; ++ ++ /* Check for an option */ ++ if (Arg[0] == '-') { ++ switch (Arg[1]) { ++ ++ case '-': ++ LongOption (&I, OptTab, sizeof(OptTab)/sizeof(OptTab[0])); ++ break; ++ ++ case 'g': ++ OptDebugInfo (Arg, 0); ++ break; ++ ++ case 'h': ++ OptHelp (Arg, 0); ++ break; ++ ++ case 'i': ++ OptIgnoreCase (Arg, 0); ++ break; ++ ++ case 'l': ++ OptListing (Arg, 0); ++ break; ++ ++ case 'm': ++ if (Arg[2] == 'm') { ++ OptMemoryModel (Arg, GetArg (&I, 3)); ++ } else { ++ UnknownOption (Arg); ++ } ++ break; ++ ++ case 'o': ++ OutFile = GetArg (&I, 2); ++ break; ++ ++ case 's': ++ OptSmart (Arg, 0); ++ break; ++ ++ case 't': ++ OptTarget (Arg, GetArg (&I, 2)); ++ break; ++ ++ case 'v': ++ OptVerbose (Arg, 0); ++ break; ++ ++ case 'D': ++ DefineSymbol (GetArg (&I, 2)); ++ break; ++ ++ case 'I': ++ OptIncludeDir (Arg, GetArg (&I, 2)); ++ break; ++ ++ case 'U': ++ OptAutoImport (Arg, 0); ++ break; ++ ++ case 'V': ++ OptVersion (Arg, 0); ++ break; ++ ++ case 'W': ++ WarnLevel = atoi (GetArg (&I, 2)); ++ break; ++ ++ default: ++ UnknownOption (Arg); ++ break; ++ ++ } ++ } else { ++ /* Filename. Check if we already had one */ ++ if (InFile) { ++ fprintf (stderr, "%s: Don't know what to do with `%s'\n", ++ ProgName, Arg); ++ exit (EXIT_FAILURE); ++ } else { ++ InFile = Arg; ++ } ++ } ++ ++ /* Next argument */ ++ ++I; ++ } ++ ++ /* Do we have an input file? */ ++ if (InFile == 0) { ++ fprintf (stderr, "%s: No input files\n", ProgName); ++ exit (EXIT_FAILURE); ++ } ++ ++ /* If no CPU given, use the default CPU for the target */ ++ if (GetCPU () == CPU_UNKNOWN) { ++ if (Target != TGT_UNKNOWN) { ++ SetCPU (DefaultCPU[Target]); ++ } else { ++ SetCPU (CPU_6502); ++ } ++ } ++ ++ /* If no memory model was given, use the default */ ++ if (MemoryModel == MMODEL_UNKNOWN) { ++ SetMemoryModel (MMODEL_NEAR); ++ } ++ ++ /* Initialize the segments */ ++ InitSegments (); ++ ++ /* Initialize the scanner, open the input file */ ++ InitScanner (InFile); ++ ++ /* Define the default options */ ++ SetOptions (); ++ ++ /* Assemble the input */ ++ Assemble (); ++ ++ /* If we didn't have any errors, check the segment stack */ ++ if (ErrorCount == 0) { ++ SegStackCheck (); ++ } ++ ++ /* If we didn't have any errors, check the unnamed labels */ ++ if (ErrorCount == 0) { ++ ULabCheck (); ++ } ++ ++ /* If we didn't have any errors, check the symbol table */ ++ if (ErrorCount == 0) { ++ SymCheck (); ++ } ++ ++ /* If we didn't have any errors, check and resolve the segment data */ ++ if (ErrorCount == 0) { ++ SegCheck (); ++ } ++ ++ /* If we didn't have any errors, check the assertions */ ++ if (ErrorCount == 0) { ++ CheckAssertions (); ++ } ++ ++ /* If we didn't have an errors, index the line infos */ ++ MakeLineInfoIndex (); ++ ++ /* Dump the data */ ++ if (Verbosity >= 2) { ++ SymDump (stdout); ++ SegDump (); ++ } ++ ++ /* If we didn't have any errors, create the object and listing files */ ++ if (ErrorCount == 0) { ++ CreateObjFile (); ++ if (Listing) { ++ CreateListing (); ++ } ++ } ++ ++ /* Close the input file */ ++ DoneScanner (); ++ ++ /* Return an apropriate exit code */ ++ return (ErrorCount == 0)? EXIT_SUCCESS : EXIT_FAILURE; ++ } ++ ++ ++ +diff -Ncr cc65-2.13.2/src/cc65/main.c cc65-2.13.2-apple1/src/cc65/main.c +*** cc65-2.13.2/src/cc65/main.c Mon Sep 28 14:12:43 2009 +--- cc65-2.13.2-apple1/src/cc65/main.c Tue Sep 13 18:42:27 2011 +*************** +*** 205,210 **** +--- 205,218 ---- + DefineNumericMacro ("__APPLE2ENH__", 1); + break; + ++ case TGT_APPLE1: ++ DefineNumericMacro ("__APPLE1__", 1); ++ break; ++ ++ case TGT_REPLICA1: ++ DefineNumericMacro ("__REPLICA1__", 1); ++ break; ++ + case TGT_GEOS: + /* Do not handle as a CBM system */ + DefineNumericMacro ("__GEOS__", 1); +diff -Ncr cc65-2.13.2/src/cc65/main.c.orig cc65-2.13.2-apple1/src/cc65/main.c.orig +*** cc65-2.13.2/src/cc65/main.c.orig Wed Dec 31 17:00:00 1969 +--- cc65-2.13.2-apple1/src/cc65/main.c.orig Mon Sep 28 14:12:43 2009 +*************** +*** 0 **** +--- 1,917 ---- ++ /*****************************************************************************/ ++ /* */ ++ /* main.c */ ++ /* */ ++ /* cc65 main program */ ++ /* */ ++ /* */ ++ /* */ ++ /* (C) 2000-2009, Ullrich von Bassewitz */ ++ /* Roemerstrasse 52 */ ++ /* D-70794 Filderstadt */ ++ /* EMail: uz@cc65.org */ ++ /* */ ++ /* */ ++ /* This software is provided 'as-is', without any expressed or implied */ ++ /* warranty. In no event will the authors be held liable for any damages */ ++ /* arising from the use of this software. */ ++ /* */ ++ /* Permission is granted to anyone to use this software for any purpose, */ ++ /* including commercial applications, and to alter it and redistribute it */ ++ /* freely, subject to the following restrictions: */ ++ /* */ ++ /* 1. The origin of this software must not be misrepresented; you must not */ ++ /* claim that you wrote the original software. If you use this software */ ++ /* in a product, an acknowledgment in the product documentation would be */ ++ /* appreciated but is not required. */ ++ /* 2. Altered source versions must be plainly marked as such, and must not */ ++ /* be misrepresented as being the original software. */ ++ /* 3. This notice may not be removed or altered from any source */ ++ /* distribution. */ ++ /* */ ++ /*****************************************************************************/ ++ ++ ++ ++ #include ++ #include ++ #include ++ #include ++ ++ /* common */ ++ #include "abend.h" ++ #include "chartype.h" ++ #include "cmdline.h" ++ #include "cpu.h" ++ #include "debugflag.h" ++ #include "fname.h" ++ #include "mmodel.h" ++ #include "print.h" ++ #include "segnames.h" ++ #include "target.h" ++ #include "tgttrans.h" ++ #include "version.h" ++ #include "xmalloc.h" ++ ++ /* cc65 */ ++ #include "asmcode.h" ++ #include "compile.h" ++ #include "codeopt.h" ++ #include "error.h" ++ #include "global.h" ++ #include "incpath.h" ++ #include "input.h" ++ #include "macrotab.h" ++ #include "output.h" ++ #include "scanner.h" ++ #include "segments.h" ++ #include "standard.h" ++ #include "svnversion.h" ++ ++ ++ ++ /*****************************************************************************/ ++ /* Code */ ++ /*****************************************************************************/ ++ ++ ++ ++ static void Usage (void) ++ /* Print usage information to stderr */ ++ { ++ printf ("Usage: %s [options] file\n" ++ "Short options:\n" ++ " -Cl\t\t\tMake local variables static\n" ++ " -Dsym[=defn]\t\tDefine a symbol\n" ++ " -E\t\t\tStop after the preprocessing stage\n" ++ " -I dir\t\tSet an include directory search path\n" ++ " -O\t\t\tOptimize code\n" ++ " -Oi\t\t\tOptimize code, inline more code\n" ++ " -Or\t\t\tEnable register variables\n" ++ " -Os\t\t\tInline some known functions\n" ++ " -T\t\t\tInclude source as comment\n" ++ " -V\t\t\tPrint the compiler version number\n" ++ " -W\t\t\tSuppress warnings\n" ++ " -d\t\t\tDebug mode\n" ++ " -g\t\t\tAdd debug info to object file\n" ++ " -h\t\t\tHelp (this text)\n" ++ " -j\t\t\tDefault characters are signed\n" ++ " -mm model\t\tSet the memory model\n" ++ " -o name\t\tName the output file\n" ++ " -r\t\t\tEnable register variables\n" ++ " -t sys\t\tSet the target system\n" ++ " -v\t\t\tIncrease verbosity\n" ++ "\n" ++ "Long options:\n" ++ " --add-source\t\tInclude source as comment\n" ++ " --bss-name seg\tSet the name of the BSS segment\n" ++ " --check-stack\t\tGenerate stack overflow checks\n" ++ " --code-name seg\tSet the name of the CODE segment\n" ++ " --codesize x\t\tAccept larger code by factor x\n" ++ " --cpu type\t\tSet cpu type (6502, 65c02)\n" ++ " --create-dep\t\tCreate a make dependency file\n" ++ " --data-name seg\tSet the name of the DATA segment\n" ++ " --debug\t\tDebug mode\n" ++ " --debug-info\t\tAdd debug info to object file\n" ++ " --debug-opt name\tDebug optimization steps\n" ++ " --disable-opt name\tDisable an optimization step\n" ++ " --enable-opt name\tEnable an optimization step\n" ++ " --forget-inc-paths\tForget include search paths\n" ++ " --help\t\tHelp (this text)\n" ++ " --include-dir dir\tSet an include directory search path\n" ++ " --list-opt-steps\tList all optimizer steps and exit\n" ++ " --memory-model model\tSet the memory model\n" ++ " --register-space b\tSet space available for register variables\n" ++ " --register-vars\tEnable register variables\n" ++ " --rodata-name seg\tSet the name of the RODATA segment\n" ++ " --signed-chars\tDefault characters are signed\n" ++ " --standard std\tLanguage standard (c89, c99, cc65)\n" ++ " --static-locals\tMake local variables static\n" ++ " --target sys\t\tSet the target system\n" ++ " --verbose\t\tIncrease verbosity\n" ++ " --version\t\tPrint the compiler version number\n" ++ " --writable-strings\tMake string literals writable\n", ++ ProgName); ++ } ++ ++ ++ ++ static void cbmsys (const char* sys) ++ /* Define a CBM system */ ++ { ++ DefineNumericMacro ("__CBM__", 1); ++ DefineNumericMacro (sys, 1); ++ } ++ ++ ++ ++ static void SetSys (const char* Sys) ++ /* Define a target system */ ++ { ++ switch (Target = FindTarget (Sys)) { ++ ++ case TGT_NONE: ++ break; ++ ++ case TGT_MODULE: ++ AbEnd ("Cannot use `module' as a target for the compiler"); ++ break; ++ ++ case TGT_ATARI: ++ DefineNumericMacro ("__ATARI__", 1); ++ break; ++ ++ case TGT_C16: ++ cbmsys ("__C16__"); ++ break; ++ ++ case TGT_C64: ++ cbmsys ("__C64__"); ++ break; ++ ++ case TGT_VIC20: ++ cbmsys ("__VIC20__"); ++ break; ++ ++ case TGT_C128: ++ cbmsys ("__C128__"); ++ break; ++ ++ case TGT_PLUS4: ++ cbmsys ("__PLUS4__"); ++ break; ++ ++ case TGT_CBM510: ++ cbmsys ("__CBM510__"); ++ break; ++ ++ case TGT_CBM610: ++ cbmsys ("__CBM610__"); ++ break; ++ ++ case TGT_PET: ++ cbmsys ("__PET__"); ++ break; ++ ++ case TGT_BBC: ++ DefineNumericMacro ("__BBC__", 1); ++ break; ++ ++ case TGT_APPLE2: ++ DefineNumericMacro ("__APPLE2__", 1); ++ break; ++ ++ case TGT_APPLE2ENH: ++ DefineNumericMacro ("__APPLE2ENH__", 1); ++ break; ++ ++ case TGT_GEOS: ++ /* Do not handle as a CBM system */ ++ DefineNumericMacro ("__GEOS__", 1); ++ break; ++ ++ case TGT_LUNIX: ++ DefineNumericMacro ("__LUNIX__", 1); ++ break; ++ ++ case TGT_ATMOS: ++ DefineNumericMacro ("__ATMOS__", 1); ++ break; ++ ++ case TGT_NES: ++ DefineNumericMacro ("__NES__", 1); ++ break; ++ ++ case TGT_SUPERVISION: ++ DefineNumericMacro ("__SUPERVISION__", 1); ++ break; ++ ++ case TGT_LYNX: ++ DefineNumericMacro ("__LYNX__", 1); ++ break; ++ ++ default: ++ AbEnd ("Unknown target system type %d", Target); ++ } ++ ++ /* Initialize the translation tables for the target system */ ++ TgtTranslateInit (); ++ } ++ ++ ++ ++ static void DoCreateDep (const char* OutputName) ++ /* Create the dependency file */ ++ { ++ /* Make the dependency file name from the output file name */ ++ char* DepName = MakeFilename (OutputName, ".u"); ++ ++ /* Open the file */ ++ FILE* F = fopen (DepName, "w"); ++ if (F == 0) { ++ Fatal ("Cannot open dependency file `%s': %s", DepName, strerror (errno)); ++ } ++ ++ /* Write the dependencies to the file */ ++ WriteDependencies (F, OutputName); ++ ++ /* Close the file, check for errors */ ++ if (fclose (F) != 0) { ++ remove (DepName); ++ Fatal ("Cannot write to dependeny file (disk full?)"); ++ } ++ ++ /* Free the name */ ++ xfree (DepName); ++ } ++ ++ ++ ++ static void DefineSym (const char* Def) ++ /* Define a symbol on the command line */ ++ { ++ const char* P = Def; ++ ++ /* The symbol must start with a character or underline */ ++ if (Def [0] != '_' && !IsAlpha (Def [0])) { ++ InvDef (Def); ++ } ++ ++ /* Check the symbol name */ ++ while (IsAlNum (*P) || *P == '_') { ++ ++P; ++ } ++ ++ /* Do we have a value given? */ ++ if (*P != '=') { ++ if (*P != '\0') { ++ InvDef (Def); ++ } ++ /* No value given. Define the macro with the value 1 */ ++ DefineNumericMacro (Def, 1); ++ } else { ++ /* We have a value, P points to the '=' character. Since the argument ++ * is const, create a copy and replace the '=' in the copy by a zero ++ * terminator. ++ */ ++ char* Q; ++ unsigned Len = strlen (Def)+1; ++ char* S = (char*) xmalloc (Len); ++ memcpy (S, Def, Len); ++ Q = S + (P - Def); ++ *Q++ = '\0'; ++ ++ /* Define this as a macro */ ++ DefineTextMacro (S, Q); ++ ++ /* Release the allocated memory */ ++ xfree (S); ++ } ++ } ++ ++ ++ ++ static void CheckSegName (const char* Seg) ++ /* Abort if the given name is not a valid segment name */ ++ { ++ /* Print an error and abort if the name is not ok */ ++ if (!ValidSegName (Seg)) { ++ AbEnd ("Segment name `%s' is invalid", Seg); ++ } ++ } ++ ++ ++ ++ static void OptAddSource (const char* Opt attribute ((unused)), ++ const char* Arg attribute ((unused))) ++ /* Add source lines as comments in generated assembler file */ ++ { ++ AddSource = 1; ++ } ++ ++ ++ ++ static void OptBssName (const char* Opt attribute ((unused)), const char* Arg) ++ /* Handle the --bss-name option */ ++ { ++ /* Check for a valid name */ ++ CheckSegName (Arg); ++ ++ /* Set the name */ ++ SetSegName (SEG_BSS, Arg); ++ } ++ ++ ++ ++ static void OptCheckStack (const char* Opt attribute ((unused)), ++ const char* Arg attribute ((unused))) ++ /* Handle the --check-stack option */ ++ { ++ IS_Set (&CheckStack, 1); ++ } ++ ++ ++ ++ static void OptCodeName (const char* Opt attribute ((unused)), const char* Arg) ++ /* Handle the --code-name option */ ++ { ++ /* Check for a valid name */ ++ CheckSegName (Arg); ++ ++ /* Set the name */ ++ SetSegName (SEG_CODE, Arg); ++ } ++ ++ ++ ++ static void OptCodeSize (const char* Opt, const char* Arg) ++ /* Handle the --codesize option */ ++ { ++ unsigned Factor; ++ char BoundsCheck; ++ ++ /* Numeric argument expected */ ++ if (sscanf (Arg, "%u%c", &Factor, &BoundsCheck) != 1 || ++ Factor < 10 || Factor > 1000) { ++ AbEnd ("Argument for %s is invalid", Opt); ++ } ++ IS_Set (&CodeSizeFactor, Factor); ++ } ++ ++ ++ ++ static void OptCreateDep (const char* Opt attribute ((unused)), ++ const char* Arg attribute ((unused))) ++ /* Handle the --create-dep option */ ++ { ++ CreateDep = 1; ++ } ++ ++ ++ ++ static void OptCPU (const char* Opt, const char* Arg) ++ /* Handle the --cpu option */ ++ { ++ /* Find the CPU from the given name */ ++ CPU = FindCPU (Arg); ++ if (CPU != CPU_6502 && CPU != CPU_6502X && CPU != CPU_65SC02 && ++ CPU != CPU_65C02 && CPU != CPU_65816 && CPU != CPU_HUC6280) { ++ AbEnd ("Invalid argument for %s: `%s'", Opt, Arg); ++ } ++ } ++ ++ ++ ++ static void OptDataName (const char* Opt attribute ((unused)), const char* Arg) ++ /* Handle the --data-name option */ ++ { ++ /* Check for a valid name */ ++ CheckSegName (Arg); ++ ++ /* Set the name */ ++ SetSegName (SEG_DATA, Arg); ++ } ++ ++ ++ ++ static void OptDebug (const char* Opt attribute ((unused)), ++ const char* Arg attribute ((unused))) ++ /* Compiler debug mode */ ++ { ++ ++Debug; ++ } ++ ++ ++ ++ static void OptDebugInfo (const char* Opt attribute ((unused)), ++ const char* Arg attribute ((unused))) ++ /* Add debug info to the object file */ ++ { ++ DebugInfo = 1; ++ } ++ ++ ++ ++ static void OptDebugOpt (const char* Opt attribute ((unused)), const char* Arg) ++ /* Debug optimization steps */ ++ { ++ char Buf [128]; ++ char* Line; ++ ++ /* Open the file */ ++ FILE* F = fopen (Arg, "r"); ++ if (F == 0) { ++ AbEnd ("Cannot open `%s': %s", Arg, strerror (errno)); ++ } ++ ++ /* Read line by line, ignore empty lines and switch optimization ++ * steps on/off. ++ */ ++ while (fgets (Buf, sizeof (Buf), F) != 0) { ++ ++ /* Remove trailing control chars. This will also remove the ++ * trailing newline. ++ */ ++ unsigned Len = strlen (Buf); ++ while (Len > 0 && IsControl (Buf[Len-1])) { ++ --Len; ++ } ++ Buf[Len] = '\0'; ++ ++ /* Get a pointer to the buffer and remove leading white space */ ++ Line = Buf; ++ while (IsBlank (*Line)) { ++ ++Line; ++ } ++ ++ /* Check the first character and enable/disable the step or ++ * ignore the line ++ */ ++ switch (*Line) { ++ ++ case '\0': ++ case '#': ++ case ';': ++ /* Empty or comment line */ ++ continue; ++ ++ case '-': ++ DisableOpt (Line+1); ++ break; ++ ++ case '+': ++ ++Line; ++ /* FALLTHROUGH */ ++ ++ default: ++ EnableOpt (Line); ++ break; ++ ++ } ++ ++ } ++ ++ /* Close the file, no error check here since we were just reading and ++ * this is only a debug function. ++ */ ++ (void) fclose (F); ++ } ++ ++ ++ ++ static void OptDisableOpt (const char* Opt attribute ((unused)), const char* Arg) ++ /* Disable an optimization step */ ++ { ++ DisableOpt (Arg); ++ } ++ ++ ++ ++ static void OptEnableOpt (const char* Opt attribute ((unused)), const char* Arg) ++ /* Enable an optimization step */ ++ { ++ EnableOpt (Arg); ++ } ++ ++ ++ ++ static void OptForgetIncPaths (const char* Opt attribute ((unused)), ++ const char* Arg attribute ((unused))) ++ /* Forget all currently defined include paths */ ++ { ++ ForgetAllIncludePaths (); ++ } ++ ++ ++ ++ static void OptHelp (const char* Opt attribute ((unused)), ++ const char* Arg attribute ((unused))) ++ /* Print usage information and exit */ ++ { ++ Usage (); ++ exit (EXIT_SUCCESS); ++ } ++ ++ ++ ++ static void OptIncludeDir (const char* Opt attribute ((unused)), const char* Arg) ++ /* Add an include search path */ ++ { ++ AddIncludePath (Arg, INC_SYS | INC_USER); ++ } ++ ++ ++ ++ static void OptListOptSteps (const char* Opt attribute ((unused)), ++ const char* Arg attribute ((unused))) ++ /* List all optimizer steps */ ++ { ++ /* List the optimizer steps */ ++ ListOptSteps (stdout); ++ ++ /* Terminate */ ++ exit (EXIT_SUCCESS); ++ } ++ ++ ++ ++ static void OptMemoryModel (const char* Opt, const char* Arg) ++ /* Set the memory model */ ++ { ++ mmodel_t M; ++ ++ /* Check the current memory model */ ++ if (MemoryModel != MMODEL_UNKNOWN) { ++ AbEnd ("Cannot use option `%s' twice", Opt); ++ } ++ ++ /* Translate the memory model name and check it */ ++ M = FindMemoryModel (Arg); ++ if (M == MMODEL_UNKNOWN) { ++ AbEnd ("Unknown memory model: %s", Arg); ++ } else if (M == MMODEL_HUGE) { ++ AbEnd ("Unsupported memory model: %s", Arg); ++ } ++ ++ /* Set the memory model */ ++ SetMemoryModel (M); ++ } ++ ++ ++ ++ static void OptRegisterSpace (const char* Opt, const char* Arg) ++ /* Handle the --register-space option */ ++ { ++ /* Numeric argument expected */ ++ if (sscanf (Arg, "%u", &RegisterSpace) != 1 || RegisterSpace > 256) { ++ AbEnd ("Argument for option %s is invalid", Opt); ++ } ++ } ++ ++ ++ ++ static void OptRegisterVars (const char* Opt attribute ((unused)), ++ const char* Arg attribute ((unused))) ++ /* Handle the --register-vars option */ ++ { ++ IS_Set (&EnableRegVars, 1); ++ } ++ ++ ++ ++ static void OptRodataName (const char* Opt attribute ((unused)), const char* Arg) ++ /* Handle the --rodata-name option */ ++ { ++ /* Check for a valid name */ ++ CheckSegName (Arg); ++ ++ /* Set the name */ ++ SetSegName (SEG_RODATA, Arg); ++ } ++ ++ ++ ++ static void OptSignedChars (const char* Opt attribute ((unused)), ++ const char* Arg attribute ((unused))) ++ /* Make default characters signed */ ++ { ++ IS_Set (&SignedChars, 1); ++ } ++ ++ ++ ++ static void OptStandard (const char* Opt, const char* Arg) ++ /* Handle the --standard option */ ++ { ++ /* Find the standard from the given name */ ++ standard_t Std = FindStandard (Arg); ++ if (Std == STD_UNKNOWN) { ++ AbEnd ("Invalid argument for %s: `%s'", Opt, Arg); ++ } else if (IS_Get (&Standard) != STD_UNKNOWN) { ++ AbEnd ("Option %s given more than once", Opt); ++ } else { ++ IS_Set (&Standard, Std); ++ } ++ } ++ ++ ++ ++ static void OptStaticLocals (const char* Opt attribute ((unused)), ++ const char* Arg attribute ((unused))) ++ /* Place local variables in static storage */ ++ { ++ IS_Set (&StaticLocals, 1); ++ } ++ ++ ++ ++ static void OptTarget (const char* Opt attribute ((unused)), const char* Arg) ++ /* Set the target system */ ++ { ++ SetSys (Arg); ++ } ++ ++ ++ ++ static void OptVerbose (const char* Opt attribute ((unused)), ++ const char* Arg attribute ((unused))) ++ /* Increase verbosity */ ++ { ++ ++Verbosity; ++ } ++ ++ ++ ++ static void OptVersion (const char* Opt attribute ((unused)), ++ const char* Arg attribute ((unused))) ++ /* Print the compiler version */ ++ { ++ fprintf (stderr, ++ "cc65 V%s\nSVN version: %s\n", ++ GetVersionAsString (), SVNVersion); ++ exit (EXIT_SUCCESS); ++ } ++ ++ ++ ++ static void OptWritableStrings (const char* Opt attribute ((unused)), ++ const char* Arg attribute ((unused))) ++ /* Make string literals writable */ ++ { ++ IS_Set (&WritableStrings, 1); ++ } ++ ++ ++ ++ int main (int argc, char* argv[]) ++ { ++ /* Program long options */ ++ static const LongOpt OptTab[] = { ++ { "--add-source", 0, OptAddSource }, ++ { "--bss-name", 1, OptBssName }, ++ { "--check-stack", 0, OptCheckStack }, ++ { "--code-name", 1, OptCodeName }, ++ { "--codesize", 1, OptCodeSize }, ++ { "--cpu", 1, OptCPU }, ++ { "--create-dep", 0, OptCreateDep }, ++ { "--data-name", 1, OptDataName }, ++ { "--debug", 0, OptDebug }, ++ { "--debug-info", 0, OptDebugInfo }, ++ { "--debug-opt", 1, OptDebugOpt }, ++ { "--disable-opt", 1, OptDisableOpt }, ++ { "--enable-opt", 1, OptEnableOpt }, ++ { "--forget-inc-paths", 0, OptForgetIncPaths }, ++ { "--help", 0, OptHelp }, ++ { "--include-dir", 1, OptIncludeDir }, ++ { "--list-opt-steps", 0, OptListOptSteps }, ++ { "--memory-model", 1, OptMemoryModel }, ++ { "--register-space", 1, OptRegisterSpace }, ++ { "--register-vars", 0, OptRegisterVars }, ++ { "--rodata-name", 1, OptRodataName }, ++ { "--signed-chars", 0, OptSignedChars }, ++ { "--standard", 1, OptStandard }, ++ { "--static-locals", 0, OptStaticLocals }, ++ { "--target", 1, OptTarget }, ++ { "--verbose", 0, OptVerbose }, ++ { "--version", 0, OptVersion }, ++ { "--writable-strings", 0, OptWritableStrings }, ++ }; ++ ++ unsigned I; ++ ++ /* Initialize the input file name */ ++ const char* InputFile = 0; ++ ++ /* Initialize the cmdline module */ ++ InitCmdLine (&argc, &argv, "cc65"); ++ ++ /* Initialize the default segment names */ ++ InitSegNames (); ++ ++ /* Initialize the include search paths */ ++ InitIncludePaths (); ++ ++ /* Parse the command line */ ++ I = 1; ++ while (I < ArgCount) { ++ ++ const char* P; ++ ++ /* Get the argument */ ++ const char* Arg = ArgVec[I]; ++ ++ /* Check for an option */ ++ if (Arg [0] == '-') { ++ ++ switch (Arg [1]) { ++ ++ case '-': ++ LongOption (&I, OptTab, sizeof(OptTab)/sizeof(OptTab[0])); ++ break; ++ ++ case 'd': ++ OptDebug (Arg, 0); ++ break; ++ ++ case 'h': ++ case '?': ++ OptHelp (Arg, 0); ++ break; ++ ++ case 'g': ++ OptDebugInfo (Arg, 0); ++ break; ++ ++ case 'j': ++ OptSignedChars (Arg, 0); ++ break; ++ ++ case 'o': ++ SetOutputName (GetArg (&I, 2)); ++ break; ++ ++ case 'r': ++ OptRegisterVars (Arg, 0); ++ break; ++ ++ case 't': ++ OptTarget (Arg, GetArg (&I, 2)); ++ break; ++ ++ case 'u': ++ OptCreateDep (Arg, 0); ++ break; ++ ++ case 'v': ++ OptVerbose (Arg, 0); ++ break; ++ ++ case 'C': ++ P = Arg + 2; ++ while (*P) { ++ switch (*P++) { ++ case 'l': ++ OptStaticLocals (Arg, 0); ++ break; ++ default: ++ UnknownOption (Arg); ++ break; ++ } ++ } ++ break; ++ ++ case 'D': ++ DefineSym (GetArg (&I, 2)); ++ break; ++ ++ case 'E': ++ PreprocessOnly = 1; ++ break; ++ ++ case 'I': ++ OptIncludeDir (Arg, GetArg (&I, 2)); ++ break; ++ ++ case 'O': ++ IS_Set (&Optimize, 1); ++ P = Arg + 2; ++ while (*P) { ++ switch (*P++) { ++ case 'i': ++ IS_Set (&CodeSizeFactor, 200); ++ break; ++ case 'r': ++ IS_Set (&EnableRegVars, 1); ++ break; ++ case 's': ++ IS_Set (&InlineStdFuncs, 1); ++ break; ++ } ++ } ++ break; ++ ++ case 'T': ++ OptAddSource (Arg, 0); ++ break; ++ ++ case 'V': ++ OptVersion (Arg, 0); ++ break; ++ ++ case 'W': ++ IS_Set (&WarnDisable, 1); ++ break; ++ ++ default: ++ UnknownOption (Arg); ++ break; ++ } ++ } else { ++ if (InputFile) { ++ fprintf (stderr, "additional file specs ignored\n"); ++ } else { ++ InputFile = Arg; ++ } ++ } ++ ++ /* Next argument */ ++ ++I; ++ } ++ ++ /* Did we have a file spec on the command line? */ ++ if (InputFile == 0) { ++ AbEnd ("No input files"); ++ } ++ ++ /* Create the output file name if it was not explicitly given */ ++ MakeDefaultOutputName (InputFile); ++ ++ /* If no CPU given, use the default CPU for the target */ ++ if (CPU == CPU_UNKNOWN) { ++ if (Target != TGT_UNKNOWN) { ++ CPU = DefaultCPU[Target]; ++ } else { ++ CPU = CPU_6502; ++ } ++ } ++ ++ /* If no memory model was given, use the default */ ++ if (MemoryModel == MMODEL_UNKNOWN) { ++ SetMemoryModel (MMODEL_NEAR); ++ } ++ ++ /* If no language standard was given, use the default one */ ++ if (IS_Get (&Standard) == STD_UNKNOWN) { ++ IS_Set (&Standard, STD_DEFAULT); ++ } ++ ++ /* Go! */ ++ Compile (InputFile); ++ ++ /* Create the output file if we didn't had any errors */ ++ if (PreprocessOnly == 0 && (ErrorCount == 0 || Debug)) { ++ ++ /* Open the file */ ++ OpenOutputFile (); ++ ++ /* Write the output to the file */ ++ WriteAsmOutput (); ++ Print (stdout, 1, "Wrote output to `%s'\n", OutputFilename); ++ ++ /* Close the file, check for errors */ ++ CloseOutputFile (); ++ ++ /* Create dependencies if requested */ ++ if (CreateDep) { ++ DoCreateDep (OutputFilename); ++ Print (stdout, 1, "Creating dependeny file\n"); ++ } ++ ++ } ++ ++ /* Return an apropriate exit code */ ++ return (ErrorCount > 0)? EXIT_FAILURE : EXIT_SUCCESS; ++ } ++ ++ ++ +diff -Ncr cc65-2.13.2/src/common/target.c cc65-2.13.2-apple1/src/common/target.c +*** cc65-2.13.2/src/common/target.c Sun Sep 13 05:46:04 2009 +--- cc65-2.13.2-apple1/src/common/target.c Tue Sep 13 18:42:27 2011 +*************** +*** 64,69 **** +--- 64,71 ---- + "cbm610", + "pet", + "bbc", ++ "apple1", ++ "replica1", + "apple2", + "apple2enh", + "geos", +*************** +*** 90,95 **** +--- 92,99 ---- + CPU_6502, /* cbm610 */ + CPU_6502, /* pet */ + CPU_6502, /* bbc */ ++ CPU_6502, /* apple1 */ ++ CPU_6502, /* replica1 */ + CPU_6502, /* apple2 */ + CPU_65C02, /* apple2enh */ + CPU_6502, /* geos */ +diff -Ncr cc65-2.13.2/src/common/target.c.orig cc65-2.13.2-apple1/src/common/target.c.orig +*** cc65-2.13.2/src/common/target.c.orig Wed Dec 31 17:00:00 1969 +--- cc65-2.13.2-apple1/src/common/target.c.orig Sun Sep 13 05:46:04 2009 +*************** +*** 0 **** +--- 1,141 ---- ++ /*****************************************************************************/ ++ /* */ ++ /* target.c */ ++ /* */ ++ /* Target specification */ ++ /* */ ++ /* */ ++ /* */ ++ /* (C) 2000-2009, Ullrich von Bassewitz */ ++ /* Roemerstrasse 52 */ ++ /* D-70794 Filderstadt */ ++ /* EMail: uz@cc65.org */ ++ /* */ ++ /* */ ++ /* This software is provided 'as-is', without any expressed or implied */ ++ /* warranty. In no event will the authors be held liable for any damages */ ++ /* arising from the use of this software. */ ++ /* */ ++ /* Permission is granted to anyone to use this software for any purpose, */ ++ /* including commercial applications, and to alter it and redistribute it */ ++ /* freely, subject to the following restrictions: */ ++ /* */ ++ /* 1. The origin of this software must not be misrepresented; you must not */ ++ /* claim that you wrote the original software. If you use this software */ ++ /* in a product, an acknowledgment in the product documentation would be */ ++ /* appreciated but is not required. */ ++ /* 2. Altered source versions must be plainly marked as such, and must not */ ++ /* be misrepresented as being the original software. */ ++ /* 3. This notice may not be removed or altered from any source */ ++ /* distribution. */ ++ /* */ ++ /*****************************************************************************/ ++ ++ ++ ++ #include ++ #include ++ ++ #include "chartype.h" ++ #include "target.h" ++ ++ ++ ++ /*****************************************************************************/ ++ /* Data */ ++ /*****************************************************************************/ ++ ++ ++ ++ /* Target system */ ++ target_t Target = TGT_NONE; ++ ++ /* Table with target names */ ++ const char* TargetNames [TGT_COUNT] = { ++ "none", ++ "module", ++ "atari", ++ "vic20", ++ "c16", ++ "c64", ++ "c128", ++ "plus4", ++ "cbm510", ++ "cbm610", ++ "pet", ++ "bbc", ++ "apple2", ++ "apple2enh", ++ "geos", ++ "lunix", ++ "atmos", ++ "nes", ++ "supervision", ++ "lynx" ++ }; ++ ++ ++ ++ /* Table with default CPUs per target */ ++ const cpu_t DefaultCPU[TGT_COUNT] = { ++ CPU_6502, /* none */ ++ CPU_6502, /* module */ ++ CPU_6502, /* atari */ ++ CPU_6502, /* vic20 */ ++ CPU_6502, /* c16 */ ++ CPU_6502, /* c64 */ ++ CPU_6502, /* c128 */ ++ CPU_6502, /* plus4 */ ++ CPU_6502, /* cbm510 */ ++ CPU_6502, /* cbm610 */ ++ CPU_6502, /* pet */ ++ CPU_6502, /* bbc */ ++ CPU_6502, /* apple2 */ ++ CPU_65C02, /* apple2enh */ ++ CPU_6502, /* geos */ ++ CPU_6502, /* lunix */ ++ CPU_6502, /* atmos */ ++ CPU_6502, /* nes */ ++ CPU_65SC02, /* supervision */ ++ CPU_65C02, /* lynx */ ++ }; ++ ++ ++ ++ /*****************************************************************************/ ++ /* Code */ ++ /*****************************************************************************/ ++ ++ ++ ++ target_t FindTarget (const char* Name) ++ /* Find a target by name and return the target id. TGT_UNKNOWN is returned if ++ * the given name is no valid target. ++ */ ++ { ++ unsigned I; ++ ++ /* Check for a numeric target */ ++ if (IsDigit (*Name)) { ++ int Target = atoi (Name); ++ if (Target >= 0 && Target < TGT_COUNT) { ++ return (target_t)Target; ++ } ++ } ++ ++ /* Check for a target string */ ++ for (I = 0; I < TGT_COUNT; ++I) { ++ if (strcmp (TargetNames [I], Name) == 0) { ++ return (target_t)I; ++ } ++ } ++ ++ /* Not found */ ++ return TGT_UNKNOWN; ++ } ++ ++ ++ ++ ++ ++ +diff -Ncr cc65-2.13.2/src/common/target.h cc65-2.13.2-apple1/src/common/target.h +*** cc65-2.13.2/src/common/target.h Sun Sep 13 05:46:04 2009 +--- cc65-2.13.2-apple1/src/common/target.h Tue Sep 13 18:42:27 2011 +*************** +*** 64,69 **** +--- 64,71 ---- + TGT_CBM610, + TGT_PET, + TGT_BBC, ++ TGT_APPLE1, ++ TGT_REPLICA1, + TGT_APPLE2, + TGT_APPLE2ENH, + TGT_GEOS, +diff -Ncr cc65-2.13.2/src/common/target.h.orig cc65-2.13.2-apple1/src/common/target.h.orig +*** cc65-2.13.2/src/common/target.h.orig Wed Dec 31 17:00:00 1969 +--- cc65-2.13.2-apple1/src/common/target.h.orig Sun Sep 13 05:46:04 2009 +*************** +*** 0 **** +--- 1,108 ---- ++ /*****************************************************************************/ ++ /* */ ++ /* target.h */ ++ /* */ ++ /* Target specification */ ++ /* */ ++ /* */ ++ /* */ ++ /* (C) 2000-2009, Ullrich von Bassewitz */ ++ /* Roemerstrasse 52 */ ++ /* D-70794 Filderstadt */ ++ /* EMail: uz@cc65.org */ ++ /* */ ++ /* */ ++ /* This software is provided 'as-is', without any expressed or implied */ ++ /* warranty. In no event will the authors be held liable for any damages */ ++ /* arising from the use of this software. */ ++ /* */ ++ /* Permission is granted to anyone to use this software for any purpose, */ ++ /* including commercial applications, and to alter it and redistribute it */ ++ /* freely, subject to the following restrictions: */ ++ /* */ ++ /* 1. The origin of this software must not be misrepresented; you must not */ ++ /* claim that you wrote the original software. If you use this software */ ++ /* in a product, an acknowledgment in the product documentation would be */ ++ /* appreciated but is not required. */ ++ /* 2. Altered source versions must be plainly marked as such, and must not */ ++ /* be misrepresented as being the original software. */ ++ /* 3. This notice may not be removed or altered from any source */ ++ /* distribution. */ ++ /* */ ++ /*****************************************************************************/ ++ ++ ++ ++ #ifndef TARGET_H ++ #define TARGET_H ++ ++ ++ ++ /* common */ ++ #include "cpu.h" ++ ++ ++ ++ /*****************************************************************************/ ++ /* Data */ ++ /*****************************************************************************/ ++ ++ ++ ++ /* Supported target systems */ ++ typedef enum { ++ TGT_UNKNOWN = -1, /* Not specified or invalid target */ ++ TGT_NONE, ++ TGT_MODULE, ++ TGT_ATARI, ++ TGT_VIC20, ++ TGT_C16, ++ TGT_C64, ++ TGT_C128, ++ TGT_PLUS4, ++ TGT_CBM510, ++ TGT_CBM610, ++ TGT_PET, ++ TGT_BBC, ++ TGT_APPLE2, ++ TGT_APPLE2ENH, ++ TGT_GEOS, ++ TGT_LUNIX, ++ TGT_ATMOS, ++ TGT_NES, ++ TGT_SUPERVISION, ++ TGT_LYNX, ++ TGT_COUNT /* Number of target systems */ ++ } target_t; ++ ++ /* Target system */ ++ extern target_t Target; ++ ++ /* Table with target names */ ++ extern const char* TargetNames[TGT_COUNT]; ++ ++ /* Table with default CPUs per target */ ++ extern const cpu_t DefaultCPU[TGT_COUNT]; ++ ++ ++ ++ /*****************************************************************************/ ++ /* Code */ ++ /*****************************************************************************/ ++ ++ ++ ++ target_t FindTarget (const char* Name); ++ /* Find a target by name and return the target id. TGT_UNKNOWN is returned if ++ * the given name is no valid target. ++ */ ++ ++ ++ ++ /* End of target.h */ ++ ++ #endif ++ ++ ++ ++ +diff -Ncr cc65-2.13.2/src/common/tgttrans.c cc65-2.13.2-apple1/src/common/tgttrans.c +*** cc65-2.13.2/src/common/tgttrans.c Sun Sep 13 05:46:04 2009 +--- cc65-2.13.2-apple1/src/common/tgttrans.c Tue Sep 13 18:42:27 2011 +*************** +*** 153,158 **** +--- 153,160 ---- + case TGT_CBM610: memcpy (Tab, CTPET, sizeof (Tab)); break; + case TGT_PET: memcpy (Tab, CTPET, sizeof (Tab)); break; + case TGT_BBC: memcpy (Tab, CTNone, sizeof (Tab)); break; ++ case TGT_APPLE1: memcpy (Tab, CTNone, sizeof (Tab)); break; ++ case TGT_REPLICA1: memcpy (Tab, CTNone, sizeof (Tab)); break; + case TGT_APPLE2: memcpy (Tab, CTNone, sizeof (Tab)); break; + case TGT_APPLE2ENH: memcpy (Tab, CTNone, sizeof (Tab)); break; + case TGT_GEOS: memcpy (Tab, CTNone, sizeof (Tab)); break; +diff -Ncr cc65-2.13.2/src/ld65/apple1.inc cc65-2.13.2-apple1/src/ld65/apple1.inc +*** cc65-2.13.2/src/ld65/apple1.inc Wed Dec 31 17:00:00 1969 +--- cc65-2.13.2-apple1/src/ld65/apple1.inc Tue Sep 13 18:42:27 2011 +*************** +*** 0 **** +--- 1,39 ---- ++ static const char CfgApple1 [] = ++ "MEMORY {\n" ++ "ZP: start = $0020, size = $00C0, define = yes;\n" ++ "HEADER: start = $0000, size = $0004, file = %O;\n" ++ "RAM1: start = $0280, size = $0B80, file = %O;\n" ++ "RAM2: start = $E000, size = $1000, file = %O;\n" ++ "}\n" ++ "SEGMENTS {\n" ++ "EXEHDR: load = HEADER, type = ro;\n" ++ "STARTUP: load = RAM1, type = ro, define = yes;\n" ++ "LOWCODE: load = RAM1, type = ro, optional = yes;\n" ++ "INIT: load = RAM1, type = ro, define = yes, optional = yes;\n" ++ "CODE: load = RAM1, type = ro;\n" ++ "RODATA: load = RAM1, type = ro;\n" ++ "DATA: load = RAM1, type = rw;\n" ++ "BSS: load = RAM2, type = bss, define = yes;\n" ++ "HEAP: load = RAM2, type = bss, optional = yes;\n" /* must sit just below stack */ ++ "ZEROPAGE: load = ZP, type = zp;\n" ++ "}\n" ++ "FEATURES {\n" ++ "CONDES: segment = INIT,\n" ++ "type = constructor,\n" ++ "label = __CONSTRUCTOR_TABLE__,\n" ++ "count = __CONSTRUCTOR_COUNT__;\n" ++ "CONDES: segment = RODATA,\n" ++ "type = destructor,\n" ++ "label = __DESTRUCTOR_TABLE__,\n" ++ "count = __DESTRUCTOR_COUNT__;\n" ++ "CONDES: type = interruptor,\n" ++ "segment = RODATA,\n" ++ "label = __INTERRUPTOR_TABLE__,\n" ++ "count = __INTERRUPTOR_COUNT__;\n" ++ "}\n" ++ "SYMBOLS {\n" ++ "__STACKSIZE__ = $800;\n" /* 2K stack */ ++ "}\n" ++ "\n" ++ "\n" ++ ; +diff -Ncr cc65-2.13.2/src/ld65/replica1.inc cc65-2.13.2-apple1/src/ld65/replica1.inc +*** cc65-2.13.2/src/ld65/replica1.inc Wed Dec 31 17:00:00 1969 +--- cc65-2.13.2-apple1/src/ld65/replica1.inc Tue Sep 13 18:42:27 2011 +*************** +*** 0 **** +--- 1,38 ---- ++ static const char CfgReplica1 [] = ++ "MEMORY {\n" ++ "ZP: start = $0020, size = $00C0, define = yes;\n" ++ "HEADER: start = $0000, size = $0004, file = %O;\n" ++ "RAM: start = $0280, size = $7D80, file = %O;\n" ++ "}\n" ++ "SEGMENTS {\n" ++ "EXEHDR: load = HEADER, type = ro;\n" ++ "STARTUP: load = RAM, type = ro, define = yes;\n" ++ "LOWCODE: load = RAM, type = ro, optional = yes;\n" ++ "INIT: load = RAM, type = ro, define = yes, optional = yes;\n" ++ "CODE: load = RAM, type = ro;\n" ++ "RODATA: load = RAM, type = ro;\n" ++ "DATA: load = RAM, type = rw;\n" ++ "BSS: load = RAM, type = bss, define = yes;\n" ++ "HEAP: load = RAM, type = bss, optional = yes;\n" /* must sit just below stack */ ++ "ZEROPAGE: load = ZP, type = zp;\n" ++ "}\n" ++ "FEATURES {\n" ++ "CONDES: segment = INIT,\n" ++ "type = constructor,\n" ++ "label = __CONSTRUCTOR_TABLE__,\n" ++ "count = __CONSTRUCTOR_COUNT__;\n" ++ "CONDES: segment = RODATA,\n" ++ "type = destructor,\n" ++ "label = __DESTRUCTOR_TABLE__,\n" ++ "count = __DESTRUCTOR_COUNT__;\n" ++ "CONDES: type = interruptor,\n" ++ "segment = RODATA,\n" ++ "label = __INTERRUPTOR_TABLE__,\n" ++ "count = __INTERRUPTOR_COUNT__;\n" ++ "}\n" ++ "SYMBOLS {\n" ++ "__STACKSIZE__ = $800;\n" /* 2K stack */ ++ "}\n" ++ "\n" ++ "\n" ++ ; +diff -Ncr cc65-2.13.2/src/ld65/tgtcfg.c cc65-2.13.2-apple1/src/ld65/tgtcfg.c +*** cc65-2.13.2/src/ld65/tgtcfg.c Fri Sep 18 13:13:59 2009 +--- cc65-2.13.2-apple1/src/ld65/tgtcfg.c Tue Sep 13 18:42:27 2011 +*************** +*** 49,54 **** +--- 49,56 ---- + + + /* Actual target configurations, converted into C strings by a perl script */ ++ #include "apple1.inc" ++ #include "replica1.inc" + #include "apple2.inc" + #include "apple2enh.inc" + #include "atari.inc" +*************** +*** 92,97 **** +--- 94,101 ---- + { BINFMT_BINARY, CfgCBM610 }, + { BINFMT_BINARY, CfgPET }, + { BINFMT_BINARY, CfgBBC }, ++ { BINFMT_BINARY, CfgApple1 }, ++ { BINFMT_BINARY, CfgReplica1 }, + { BINFMT_BINARY, CfgApple2 }, + { BINFMT_BINARY, CfgApple2Enh }, + { BINFMT_BINARY, CfgGeos }, +diff -Ncr cc65-2.13.2/src/ld65/tgtcfg.c.orig cc65-2.13.2-apple1/src/ld65/tgtcfg.c.orig +*** cc65-2.13.2/src/ld65/tgtcfg.c.orig Wed Dec 31 17:00:00 1969 +--- cc65-2.13.2-apple1/src/ld65/tgtcfg.c.orig Fri Sep 18 13:13:59 2009 +*************** +*** 0 **** +--- 1,125 ---- ++ /*****************************************************************************/ ++ /* */ ++ /* tgtcfg.c */ ++ /* */ ++ /* Target machine configurations the ld65 linker */ ++ /* */ ++ /* */ ++ /* */ ++ /* (C) 1998-2009, Ullrich von Bassewitz */ ++ /* Roemerstrasse 52 */ ++ /* D-70794 Filderstadt */ ++ /* EMail: uz@cc65.org */ ++ /* */ ++ /* */ ++ /* This software is provided 'as-is', without any expressed or implied */ ++ /* warranty. In no event will the authors be held liable for any damages */ ++ /* arising from the use of this software. */ ++ /* */ ++ /* Permission is granted to anyone to use this software for any purpose, */ ++ /* including commercial applications, and to alter it and redistribute it */ ++ /* freely, subject to the following restrictions: */ ++ /* */ ++ /* 1. The origin of this software must not be misrepresented; you must not */ ++ /* claim that you wrote the original software. If you use this software */ ++ /* in a product, an acknowledgment in the product documentation would be */ ++ /* appreciated but is not required. */ ++ /* 2. Altered source versions must be plainly marked as such, and must not */ ++ /* be misrepresented as being the original software. */ ++ /* 3. This notice may not be removed or altered from any source */ ++ /* distribution. */ ++ /* */ ++ /*****************************************************************************/ ++ ++ ++ ++ /* common */ ++ #include "check.h" ++ ++ /* ld65 */ ++ #include "binfmt.h" ++ #include "tgtcfg.h" ++ ++ ++ ++ /*****************************************************************************/ ++ /* Target configurations */ ++ /*****************************************************************************/ ++ ++ ++ ++ /* Actual target configurations, converted into C strings by a perl script */ ++ #include "apple2.inc" ++ #include "apple2enh.inc" ++ #include "atari.inc" ++ #include "atmos.inc" ++ #include "bbc.inc" ++ #include "c128.inc" ++ #include "c16.inc" ++ #include "c64.inc" ++ #include "cbm510.inc" ++ #include "cbm610.inc" ++ #include "geos.inc" ++ #include "lunix.inc" ++ #include "lynx.inc" ++ #include "module.inc" ++ #include "nes.inc" ++ #include "none.inc" ++ #include "pet.inc" ++ #include "plus4.inc" ++ #include "supervision.inc" ++ #include "vic20.inc" ++ ++ ++ ++ /*****************************************************************************/ ++ /* Data */ ++ /*****************************************************************************/ ++ ++ ++ ++ /* Target configurations for all systems */ ++ const TargetDesc Targets[TGT_COUNT] = { ++ { BINFMT_BINARY, CfgNone }, ++ { BINFMT_O65, CfgModule }, ++ { BINFMT_BINARY, CfgAtari }, ++ { BINFMT_BINARY, CfgVic20 }, ++ { BINFMT_BINARY, CfgC16 }, ++ { BINFMT_BINARY, CfgC64 }, ++ { BINFMT_BINARY, CfgC128 }, ++ { BINFMT_BINARY, CfgPlus4 }, ++ { BINFMT_BINARY, CfgCBM510 }, ++ { BINFMT_BINARY, CfgCBM610 }, ++ { BINFMT_BINARY, CfgPET }, ++ { BINFMT_BINARY, CfgBBC }, ++ { BINFMT_BINARY, CfgApple2 }, ++ { BINFMT_BINARY, CfgApple2Enh }, ++ { BINFMT_BINARY, CfgGeos }, ++ { BINFMT_O65, CfgLunix }, ++ { BINFMT_BINARY, CfgAtmos }, ++ { BINFMT_BINARY, CfgNES }, ++ { BINFMT_BINARY, CfgSupervision }, ++ { BINFMT_BINARY, CfgLynx }, ++ }; ++ ++ ++ ++ /*****************************************************************************/ ++ /* Code */ ++ /*****************************************************************************/ ++ ++ ++ ++ void DumpBuiltinConfig (FILE* F, target_t T) ++ /* Dump a builtin linker configuration */ ++ { ++ /* Check the given parameter */ ++ PRECONDITION (T > TGT_UNKNOWN && T < TGT_COUNT); ++ ++ /* Dump the config */ ++ fprintf (F, "%s\n", Targets[T].Cfg); ++ } ++ ++ ++ ++ +diff -Ncr cc65-2.13.2/util/apple1/bintomon.c cc65-2.13.2-apple1/util/apple1/bintomon.c +*** cc65-2.13.2/util/apple1/bintomon.c Wed Dec 31 17:00:00 1969 +--- cc65-2.13.2-apple1/util/apple1/bintomon.c Tue Sep 13 18:42:27 2011 +*************** +*** 0 **** +--- 1,34 ---- ++ #include ++ #include ++ ++ int main(int argc, char **argv) ++ { ++ FILE *obj; ++ int start_addr, length; ++ unsigned char b; ++ ++ if (argc < 2) ++ { ++ fprintf(stderr, "Include file to convert on command line.\n"); ++ exit(1); ++ } ++ if (obj = fopen(argv[1], "rb")) ++ { ++ start_addr = length = 0; ++ fread(&b, 1, 1, obj); ++ start_addr = b; ++ fread(&b, 1, 1, obj); ++ start_addr |= b << 8; ++ fread(&length, 1, 2, obj); ++ printf("%04X:", start_addr); ++ while (fread(&b, 1, 1, obj) == 1) ++ { ++ printf(" %02X", b); ++ if (!(++start_addr & 0x07)) ++ printf("\r\n:"); ++ } ++ printf("\r\n"); ++ fclose(obj); ++ } ++ return (0); ++ } diff --git a/codebreaker.4+4k.mon b/codebreaker.4+4k.mon new file mode 100644 index 0000000..5482fda --- /dev/null +++ b/codebreaker.4+4k.mon @@ -0,0 +1,195 @@ +0280: A2 FF 9A 20 8C 02 20 42 EB 4C 1A FF 20 9E 02 A9 00 85 20 A9 F0 85 21 58 20 C1 02 4C 2B EB A9 03 +02A0: 85 28 A9 0B 85 29 A9 00 A8 A2 00 F0 0A 91 28 C8 D0 FB E6 29 CA D0 F6 C0 63 F0 05 91 28 C8 D0 F7 +02C0: 60 A0 00 F0 07 A9 CE A2 02 4C DE 0A 60 00 A0 02 B9 9C 0A 99 08 0B 88 10 F7 A9 76 A2 0A 20 9C EF +02E0: A0 00 B1 20 A8 B9 08 0B 20 AB 05 A9 00 8D 07 0B AD 07 0B 20 A4 EE AD 04 0B 0A 90 02 A2 01 20 A8 +0300: EB 20 7C EB B0 0B A9 2D 20 AB 05 EE 07 0B 4C F0 02 A0 00 B1 20 A8 B9 08 0B 20 AB 05 A9 0D 20 AB +0320: 05 4C AF EB A9 19 8D 0B 0B CE 0B 0B AE 0B 0B F0 08 A9 0D 20 AB 05 4C 29 03 60 A9 08 8D 0C 0B A0 +0340: 05 20 69 EC 20 F3 EC A2 00 86 22 86 23 8A 20 E7 EC F0 43 CE 0C 0B AD 0C 0B 18 69 0D A8 A9 00 69 +0360: 0B AA 98 20 A6 EE A0 07 20 69 EC 20 F3 EC A2 00 A9 0A 20 85 ED A0 30 20 7A EC A0 00 20 E9 EE A0 +0380: 05 20 69 EC 20 F3 EC A2 00 A9 0A 20 0B ED A0 02 20 1C EF 4C 3F 03 A0 01 B1 20 F0 42 AD 0C 0B F0 +03A0: 1A CE 0C 0B AD 0C 0B 18 69 0D 85 28 A9 00 69 0B 85 29 A0 00 B1 20 91 28 4C 9C 03 A9 08 38 A0 01 +03C0: F1 20 8D 0C 0B AD 0C 0B C9 08 90 03 4C D1 EB AC 0C 0B B9 0D 0B 20 AB 05 EE 0C 0B 4C C5 03 AD 0C +03E0: 0B C9 08 90 03 4C D1 EB AC 0C 0B B9 0D 0B 20 AB 05 EE 0C 0B 4C DE 03 AD C2 0A AE C3 0A 20 9C EF +0400: A9 00 8D 75 05 AD 75 05 C9 4E F0 0F AD 75 05 C9 59 F0 08 A0 00 20 76 05 4C 05 04 AD 75 05 20 AB +0420: 05 AD 75 05 C9 4E D0 01 60 20 24 03 AD 04 0B C9 05 D0 13 AD 06 0B D0 07 A9 7A A2 0A 4C 4A 04 A9 +0440: 7E A2 0A 4C 4A 04 A9 85 A2 0A 20 9C EF A9 8C A2 0A 20 9C EF AD 06 0B F0 03 4C F5 04 AD C4 0A AE +0460: C5 0A 20 9C EF A2 00 AD 04 0B 20 07 EB 20 19 EB 20 F3 EC A9 00 20 90 EE A9 30 20 90 EE 20 3A 03 +0480: AD C6 0A AE C7 0A 20 9C EF A2 00 AD 03 0B 20 07 EB 20 19 EB 20 F3 EC A9 00 20 90 EE A9 30 20 90 +04A0: EE 20 3A 03 AD C8 0A AE C9 0A 20 9C EF A2 00 AD 05 0B 20 07 EB 20 19 EB 20 F3 EC A9 00 20 90 EE +04C0: A9 30 20 90 EE 20 3A 03 AD CA 0A AE CB 0A 20 9C EF A2 00 AD 04 0B 20 07 EB 20 19 EB 20 F3 EC A9 +04E0: 00 20 90 EE A9 30 20 90 EE 20 3A 03 AD CC 0A AE CD 0A 4C FB 04 AD CE 0A AE CF 0A 20 9C EF AD D0 +0500: 0A AE D1 0A 20 9C EF A0 00 4C 76 05 AD DD 0A 85 23 AD DC 0A 85 22 AE DB 0A AD DA 0A 20 F3 EC A2 +0520: 4E A9 C6 85 22 A9 41 85 23 A9 6D 20 91 EC 20 F3 EC A2 30 A9 00 A9 39 20 D6 EB 8D DA 0A 8E DB 0A +0540: A4 22 8C DC 0A A4 23 8C DD 0A AD DD 0A 85 23 AD DC 0A 85 22 A0 00 A6 23 A5 22 84 23 84 22 20 19 +0560: EB 20 F3 EC A2 7F A9 00 85 22 85 23 A9 FF 4C 01 EC 00 00 00 00 00 AD 11 D0 30 27 18 A9 01 6D 71 +0580: 05 8D 71 05 A9 00 2A 6D 72 05 8D 72 05 A9 00 2A 6D 73 05 8D 73 05 A9 00 2A 6D 74 05 8D 74 05 18 +05A0: 90 D4 AD 10 D0 29 7F 8D 75 05 60 4C EF FF 43 4F 44 45 42 52 45 41 4B 45 52 21 0D 0D 22 43 52 41 +05C0: 43 4B 45 44 22 20 42 59 20 45 47 41 4E 20 46 4F 52 44 0D 0D 0D 0D 00 57 4F 55 4C 44 20 59 4F 55 +05E0: 20 4C 49 4B 45 20 54 4F 20 50 4C 41 59 20 41 53 20 41 0D 0D 5B 4E 5D 4F 56 49 43 45 2C 20 5B 50 +0600: 5D 52 4F 2C 20 4F 52 20 5B 4D 5D 41 53 54 45 52 3F 20 00 44 4F 20 59 4F 55 20 4E 45 45 44 20 49 +0620: 4E 53 54 52 55 43 54 49 4F 4E 53 3F 20 00 0A 47 4F 41 4C 3A 20 20 43 52 41 43 4B 20 54 48 45 20 +0640: 43 4F 44 45 2E 20 20 46 41 49 4C 55 52 45 20 49 53 20 4E 4F 54 0D 0A 20 20 20 20 20 20 20 41 4E +0660: 20 4F 50 54 49 4F 4E 21 0D 0A 0D 0A 43 4F 44 45 3A 20 20 54 48 45 20 43 4F 44 45 20 49 53 20 43 +0680: 4F 4D 50 4F 53 45 44 20 4F 46 20 00 20 43 4F 4C 4F 52 53 0D 0A 20 20 20 20 20 20 20 4F 55 54 20 +06A0: 4F 46 20 41 20 53 45 54 20 4F 46 20 00 2E 20 20 44 55 50 4C 49 43 41 54 45 53 0D 0A 20 20 20 20 +06C0: 20 20 20 41 4C 4C 4F 57 45 44 2E 0D 0A 0D 0A 52 55 4C 45 53 3A 20 59 4F 55 20 48 41 56 45 20 00 +06E0: 20 41 54 54 45 4D 50 54 53 2E 20 20 41 46 54 45 52 20 45 41 43 48 0A 20 20 20 20 20 20 20 41 54 +0700: 54 45 4D 50 54 20 41 20 43 4C 55 45 20 57 49 4C 4C 20 42 45 20 47 49 56 45 4E 2E 0D 0A 0D 0A 43 +0720: 4C 55 45 53 3A 20 41 4E 20 2A 20 49 4E 44 49 43 41 54 45 53 20 54 48 41 54 20 59 4F 55 20 48 41 +0740: 56 45 20 41 0D 0A 20 20 20 20 20 20 20 43 4F 52 52 45 43 54 20 43 4F 4C 4F 52 20 49 4E 20 54 48 +0760: 45 20 43 4F 52 52 45 43 54 0D 0A 20 20 20 20 20 20 20 50 4C 41 43 45 2E 20 20 41 20 2B 20 49 4E +0780: 44 49 43 41 54 45 53 20 54 48 41 54 20 59 4F 55 0D 0A 20 20 20 20 20 20 20 48 41 56 45 20 41 20 +07A0: 43 4F 52 52 45 43 54 20 43 4F 4C 4F 52 2E 20 20 59 4F 55 0D 0A 20 20 20 20 20 20 20 4E 45 45 44 +07C0: 20 00 20 2A 27 53 20 54 4F 20 57 49 4E 2E 20 20 54 48 45 0D 0A 20 20 20 20 20 20 20 50 4F 53 49 +07E0: 54 49 4F 4E 20 4F 46 20 54 48 45 20 43 4C 55 45 53 20 49 53 20 4E 4F 54 0D 0A 20 20 20 20 20 20 +0800: 20 52 45 4C 45 56 41 4E 54 2E 0D 0A 0D 0A 53 43 4F 52 45 3A 20 54 49 4D 45 20 49 4E 20 53 45 43 +0820: 4F 4E 44 53 2E 20 20 47 4F 4F 44 20 4C 55 43 4B 21 0D 0A 0D 0A 0D 0A 00 0D 41 20 50 52 4F 20 47 +0840: 41 4D 45 20 57 49 54 48 20 41 20 54 57 49 53 54 2E 2E 2E 0D 0D 0D 0D 20 20 20 20 20 20 20 59 4F +0860: 55 20 4F 4E 4C 59 20 48 41 56 45 20 36 30 20 53 45 43 4F 4E 44 53 21 0D 0D 0D 0D 00 50 52 45 53 +0880: 53 20 41 4E 59 20 4B 45 59 20 54 4F 20 42 45 47 49 4E 20 43 52 41 43 4B 49 4E 47 20 00 0A 20 20 +08A0: 20 20 20 20 20 20 20 20 20 20 20 20 43 4F 44 45 42 52 45 41 4B 45 52 21 0D 0A 0D 0A 00 20 20 20 +08C0: 20 20 59 4F 55 27 56 45 20 43 52 41 43 4B 45 44 20 49 54 21 0D 00 20 20 20 20 20 20 20 59 4F 55 +08E0: 27 56 45 20 46 41 49 4C 45 44 0D 00 57 4F 55 4C 44 20 59 4F 55 20 4C 49 4B 45 20 54 4F 20 50 4C +0900: 41 59 20 41 47 41 49 4E 3F 20 00 20 5B 52 5D 45 44 20 20 20 20 00 20 5B 47 5D 52 45 45 4E 20 20 +0920: 00 20 5B 42 5D 4C 55 45 20 20 20 00 20 5B 59 5D 45 4C 4C 4F 57 20 00 20 5B 4F 5D 52 41 4E 47 45 +0940: 20 00 20 5B 50 5D 55 52 50 4C 45 20 00 20 5B 53 5D 49 4C 56 45 52 20 00 20 5B 43 5D 4F 50 50 45 +0960: 52 20 00 4E 4F 56 49 43 45 00 50 52 4F 20 20 20 00 4D 41 53 54 45 52 00 0D 0D 00 0D 00 20 20 20 +0980: 20 20 00 0D 20 20 20 20 20 00 0D 0D 00 20 20 20 21 20 00 21 20 43 4C 55 45 00 53 00 20 20 54 49 +09A0: 4D 45 3A 20 2D 36 30 2E 30 00 0D 00 20 21 20 00 2D 20 00 21 20 00 20 20 54 49 4D 45 3A 20 2D 00 +09C0: 20 20 00 20 20 54 49 4D 45 3A 20 00 20 20 20 21 20 00 20 00 53 54 41 54 53 0D 0D 00 20 20 20 20 +09E0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2D 2D 2D 2D 2D 54 49 4D 45 53 2D +0A00: 2D 2D 2D 2D 00 47 41 4D 45 20 20 20 20 43 52 41 43 4B 45 44 20 20 46 41 49 4C 45 44 20 20 41 56 +0A20: 45 52 41 47 45 20 20 20 20 42 45 53 54 0D 00 20 20 20 20 20 00 20 20 20 20 00 20 20 20 20 00 2D +0A40: 2D 2D 2D 2D 20 20 20 2D 2D 2D 2D 2D 00 20 20 20 00 20 20 20 20 00 0D 0D 0D 0D 54 4F 20 50 4C 41 +0A60: 59 20 41 47 41 49 4E 20 54 59 50 45 3A 20 20 32 38 30 52 0D 0D 00 20 20 20 00 50 52 4F 00 4D 41 +0A80: 53 54 45 52 00 4E 4F 56 49 43 45 00 20 49 4E 53 54 52 55 43 54 49 4F 4E 53 0D 0D 00 2E 3A 27 52 +0AA0: 47 42 59 4F 50 53 43 0B 09 16 09 21 09 2C 09 37 09 42 09 4D 09 58 09 63 09 6A 09 71 09 00 AE 05 +0AC0: D7 05 13 06 2E 06 8C 06 AD 06 E0 06 C2 07 38 08 7C 08 9D 08 BD 08 D6 08 EC 08 01 00 00 00 8D EC +0AE0: 0A 8E ED 0A 8D F3 0A 8E F4 0A 88 B9 FF FF 8D FD 0A 88 B9 FF FF 8D FC 0A 8C FF 0A 20 FF FF A0 FF +0B00: D0 E8 60 +E000: A0 07 B9 9F 0A 99 24 0B 88 10 F7 A0 0F B9 A7 0A 99 2C 0B 88 10 F7 A0 05 B9 B7 0A 99 3C 0B 88 10 +E020: F7 A9 00 8D 42 0B AD 42 0B C9 03 B0 6A A2 00 AD 42 0B 0A 90 02 E8 18 69 4A A8 8A 69 0B AA 98 20 +E040: A6 EE A2 00 AD 42 0B 0A 90 02 E8 18 69 50 A8 8A 69 0B AA 98 20 A6 EE A2 00 AD 42 0B 0A 90 02 E8 +E060: 18 69 56 A8 8A 69 0B AA 98 20 A6 EE A2 00 AD 42 0B 0A 90 02 E8 18 69 5C A8 8A 69 0B AA 98 20 A6 +E080: EE A2 00 8A A8 20 FF EE 20 FF EE 20 FF EE 20 FF EE EE 42 0B 4C 26 E0 A0 00 20 24 03 AD BE 0A AE +E0A0: BF 0A 20 9C EF A9 00 8D 06 0B A9 08 8D 03 0B A9 05 8D 04 0B A9 0C 8D 05 0B A9 01 8D 47 0B AD C0 +E0C0: 0A AE C1 0A 20 9C EF A9 00 8D 75 05 AD 75 05 C9 4E F0 16 AD 75 05 C9 50 F0 0F AD 75 05 C9 4D F0 +E0E0: 08 A0 00 20 76 05 4C CC E0 AD 75 05 20 AB 05 A9 78 A2 09 20 9C EF AD 75 05 C9 4E D0 14 A9 06 8D +E100: 03 0B A9 04 8D 04 0B A9 0A 8D 05 0B A9 00 8D 47 0B AD 75 05 C9 4D D0 0A A9 01 8D 06 0B A9 02 8D +E120: 47 0B A0 00 20 F7 03 A0 00 20 24 03 A2 02 A9 58 8D 48 0B 8E 49 0B AD 74 05 85 23 AD 73 05 85 22 +E140: AE 72 05 AD 71 05 20 F3 EC A2 FF 8A 20 FB EB 8D DA 0A 8E DB 0A A4 22 8C DC 0A A4 23 8C DD 0A A9 +E160: 00 8D 42 0B AD 42 0B CD 04 0B B0 27 A9 15 A2 0B 18 6D 42 0B 90 01 E8 20 A6 EE A0 00 20 0C 05 20 +E180: A6 EE AD 03 0B 20 7E EF A0 00 20 E9 EE EE 42 0B 4C 64 E1 A0 00 20 24 03 AD D2 0A AE D3 0A 20 9C +E1A0: EF AD 04 0B C9 05 D0 32 A9 00 8D 42 0B A2 00 AD 42 0B CD 03 0B B0 1C AD 42 0B 0A 90 02 E8 18 69 +E1C0: 2C A8 8A 69 0B AA 98 20 5A EC 20 9C EF EE 42 0B 4C AD E1 A9 7B A2 09 4C 4B E2 A9 7D A2 09 20 9C +E1E0: EF A9 00 8D 42 0B AD 42 0B 20 A4 EE AD 03 0B 4A 20 7A EB B0 1E A2 00 AD 42 0B 0A 90 02 E8 18 69 +E200: 2C A8 8A 69 0B AA 98 20 5A EC 20 9C EF EE 42 0B 4C E6 E1 A9 83 A2 09 20 9C EF AD 03 0B 4A 8D 42 +E220: 0B A2 00 AD 42 0B CD 03 0B B0 1C AD 42 0B 0A 90 02 E8 18 69 2C A8 8A 69 0B AA 98 20 5A EC 20 9C +E240: EF EE 42 0B 4C 21 E2 A9 8A A2 09 20 9C EF A9 00 20 90 EE 20 CE 02 A9 8D A2 09 20 9C EF A9 00 8D +E260: 42 0B CD 04 0B B0 13 A9 58 20 AB 05 A9 20 20 AB 05 AD 42 0B 18 69 01 4C 5F E2 A9 93 A2 09 20 9C +E280: EF AD 04 0B C9 05 D0 07 A9 9A A2 09 20 9C EF AD 06 0B F0 07 A9 9C A2 09 20 9C EF A9 AA A2 09 20 +E2A0: 9C EF A9 01 20 90 EE 20 CE 02 A9 01 8D 42 0B AD 42 0B 38 ED 05 0B 85 30 90 05 F0 03 4C F6 E5 A9 +E2C0: 00 8D 43 0B AD 43 0B 20 A4 EE AD 04 0B 20 7A EB B0 0E AC 43 0B A9 00 99 1A 0B EE 43 0B 4C C4 E2 +E2E0: A9 00 8D 46 0B 8D 45 0B AA AD 42 0B 20 07 EB 20 19 EB 20 F3 EC A9 02 20 90 EE A9 20 20 90 EE 20 +E300: 3A 03 A9 AC A2 09 20 9C EF AD 42 0B C9 01 D0 0E A9 00 8D 71 05 8D 72 05 8D 73 05 8D 74 05 A9 00 +E320: 8D 43 0B AD 43 0B CD 04 0B 90 03 4C FD E3 A0 00 20 76 05 AD 06 0B F0 5C AD 74 05 85 23 AD 73 05 +E340: 85 22 AE 72 05 AD 71 05 20 F3 EC A2 00 A9 3B 20 8B EC 20 F3 EC A2 76 A9 01 85 22 A9 00 85 23 A9 +E360: EB 20 11 ED 49 FF 38 6D 48 0B 8D 48 0B 8A 49 FF 6D 49 0B 8D 49 0B A9 00 8D 71 05 8D 72 05 8D 73 +E380: 05 8D 74 05 AE 49 0B E0 80 90 09 8D 48 0B 8D 49 0B 4C FD E3 8D 44 0B AD 44 0B CD 03 0B B0 11 AC +E3A0: 44 0B B9 24 0B CD 75 05 F0 06 EE 44 0B 4C 97 E3 AD 03 0B CD 44 0B D0 0C AD 43 0B 38 E9 01 8D 43 +E3C0: 0B 4C F7 E3 AC 44 0B B9 24 0B 20 AB 05 A9 20 20 AB 05 AC 43 0B B9 15 0B CD 44 0B D0 11 AD 45 0B +E3E0: 18 69 01 8D 45 0B AC 43 0B A9 01 99 1A 0B AC 43 0B AD 44 0B 99 1F 0B EE 43 0B 4C 23 E3 AD 43 0B +E400: CD 04 0B B0 15 A9 B0 A2 09 20 9C EF AC 43 0B A9 09 99 1F 0B EE 43 0B 4C FD E3 A9 B3 A2 09 20 9C +E420: EF A9 00 8D 43 0B A2 00 AD 43 0B CD 04 0B B0 64 AC 43 0B B9 1F 0B 85 28 86 29 AC 43 0B B9 15 0B +E440: E4 29 D0 04 C5 28 F0 46 8E 44 0B AD 44 0B CD 04 0B 8A E9 00 B0 38 AC 43 0B B9 1F 0B 85 28 AC 44 +E460: 0B B9 15 0B E4 29 D0 20 C5 28 D0 1C AC 44 0B B9 1A 0B D0 14 AD 46 0B 18 69 01 8D 46 0B AC 44 0B +E480: A9 01 99 1A 0B 4C 8E E4 EE 44 0B 4C 4B E4 EE 43 0B 4C 26 E4 8E 43 0B AD 43 0B CD 45 0B B0 0B A9 +E4A0: 2A 20 AB 05 EE 43 0B 4C 97 E4 A9 00 8D 43 0B AD 43 0B 20 A4 EE AD 04 0B 38 ED 45 0B 38 ED 46 0B +E4C0: 20 7A EB B0 0B A9 20 20 AB 05 EE 43 0B 4C AF E4 A9 00 8D 43 0B AD 43 0B CD 46 0B B0 0B A9 2B 20 +E4E0: AB 05 EE 43 0B 4C D5 E4 AD 06 0B F0 48 A9 B6 A2 09 20 9C EF AD 48 0B AE 49 0B 20 A6 EE A9 0A 20 +E500: 62 EB 20 20 EB 20 F3 EC A9 02 20 90 EE A9 30 20 90 EE 20 3A 03 A9 2E 20 AB 05 AD 48 0B AE 49 0B +E520: 20 A6 EE A2 00 A9 0A 20 CF ED 20 20 EB 20 F3 EC A9 01 4C D0 E5 AD 04 0B C9 04 D0 07 A9 C0 A2 09 +E540: 20 9C EF A9 C3 A2 09 20 9C EF AD 74 05 85 23 AD 73 05 85 22 AE 72 05 AD 71 05 20 F3 EC A2 00 A9 +E560: 3B 20 8B EC 20 F3 EC A2 A5 A9 0E 85 22 A9 00 85 23 A9 2E 20 11 ED 20 F3 EC A2 00 A9 3C 20 0B ED +E580: 20 F3 EC A9 02 20 90 EE A9 30 20 90 EE 20 3A 03 A9 3A 20 AB 05 AD 74 05 85 23 AD 73 05 85 22 AE +E5A0: 72 05 AD 71 05 20 F3 EC A2 00 A9 3B 20 8B EC 20 F3 EC A2 A5 A9 0E 85 22 A9 00 85 23 A9 2E 20 11 +E5C0: ED 20 F3 EC A2 00 A9 3C 20 85 ED 20 F3 EC A9 02 20 90 EE A9 30 20 90 EE 20 3A 03 A9 0D 20 AB 05 +E5E0: AD 04 0B CD 45 0B F0 0E AD 48 0B 0D 49 0B F0 06 EE 42 0B 4C AF E2 A9 01 20 90 EE 20 CE 02 A9 CC +E600: A2 09 20 9C EF A9 00 8D 42 0B CD 04 0B B0 24 AC 42 0B B9 15 0B 85 28 A9 00 18 69 0B 85 29 A0 24 +E620: B1 28 20 AB 05 A9 20 20 AB 05 AD 42 0B 18 69 01 4C 07 E6 A9 21 20 AB 05 AD 04 0B C9 04 D0 07 A9 +E640: D2 A2 09 20 9C EF AD 04 0B CD 45 0B F0 03 4C CE E7 AD D4 0A AE D5 0A 20 9C EF AD 47 0B C9 02 D0 +E660: 12 A9 58 38 ED 48 0B 8D 48 0B A9 02 ED 49 0B AA 4C A2 E6 AD 74 05 85 23 AD 73 05 85 22 AE 72 05 +E680: AD 71 05 20 F3 EC A2 00 A9 3B 20 8B EC 20 F3 EC A2 A5 A9 0E 85 22 A9 00 85 23 A9 2E 20 11 ED 8D +E6A0: 48 0B 8E 49 0B A2 00 AD 47 0B 0A 90 02 E8 18 69 4A A8 8A 69 0B AA 98 20 A6 EE 20 5A EC 20 A8 EB +E6C0: A0 00 20 FF EE A2 00 AD 47 0B 0A 90 02 E8 18 69 4A A8 8A 69 0B AA 98 20 5A EC E0 00 D0 3A C9 01 +E6E0: D0 36 AD 47 0B 0A 90 02 E8 18 69 56 A8 8A 69 0B AA 98 20 A6 EE A2 00 AD 47 0B 0A 90 02 E8 18 69 +E700: 5C A8 8A 69 0B AA 98 20 A6 EE AD 48 0B AE 49 0B A0 00 20 FF EE 4C F4 E7 A2 00 AD 47 0B 0A 90 02 +E720: E8 18 69 56 A8 8A 69 0B AA 98 20 A6 EE A2 00 AD 47 0B 0A 90 02 E8 18 69 56 A8 8A 69 0B AA 98 20 +E740: BC EE A2 00 AD 47 0B 0A 90 02 E8 18 69 4A A8 8A 69 0B AA 98 20 5A EC 20 4E EB 20 E3 ED 18 6D 48 +E760: 0B 48 8A 6D 49 0B AA 68 20 A6 EE A2 00 AD 47 0B 0A 90 02 E8 18 69 4A A8 8A 69 0B AA 98 20 5A EC +E780: 20 31 EF A0 00 20 FF EE AD 48 0B AE 49 0B 20 A6 EE A2 00 AD 47 0B 0A 90 02 E8 18 69 5C A8 8A 69 +E7A0: 0B AA 98 20 5A EC 20 7C EB B0 4C A2 00 AD 47 0B 0A 90 02 E8 18 69 5C 85 28 8A 69 0B 85 29 AD 48 +E7C0: 0B A0 00 91 28 C8 AD 49 0B 91 28 4C F7 E7 AD D6 0A AE D7 0A 20 9C EF A2 00 AD 47 0B 0A 90 02 E8 +E7E0: 18 69 50 A8 8A 69 0B AA 98 20 A6 EE 20 5A EC 20 A8 EB A0 00 20 FF EE A9 02 20 90 EE 20 CE 02 A9 +E800: 0D 20 AB 05 AD D8 0A AE D9 0A 20 9C EF A9 00 8D 75 05 AD 75 05 C9 4E F0 0F AD 75 05 C9 59 F0 08 +E820: A0 00 20 76 05 4C 12 E8 AD 75 05 20 AB 05 A0 00 20 24 03 AD 75 05 C9 59 D0 03 4C A5 E0 A9 D4 A2 +E840: 09 20 9C EF A9 DC A2 09 20 9C EF A9 05 A2 0A 20 9C EF A9 00 8D 42 0B AD 42 0B C9 03 90 03 4C DE +E860: EA A2 00 AD 42 0B 0A 90 02 E8 18 69 4A A8 8A 69 0B AA 98 20 5A EC 85 22 86 23 A2 00 AD 42 0B 0A +E880: 90 02 E8 18 69 50 A8 8A 69 0B AA 98 20 5A EC 18 65 22 48 8A 65 23 AA 68 E0 00 D0 07 C9 00 D0 03 +E8A0: 4C D8 EA A2 00 AD 42 0B 0A 90 02 E8 18 69 3C A8 8A 69 0B AA 98 20 5A EC 20 9C EF A9 2F A2 0A 20 +E8C0: 9C EF A2 00 AD 42 0B 0A 90 02 E8 18 69 4A A8 8A 69 0B AA 98 20 5A EC 20 19 EB 20 F3 EC A9 04 20 +E8E0: 90 EE A9 20 20 90 EE 20 3A 03 A9 35 A2 0A 20 9C EF A2 00 AD 42 0B 0A 90 02 E8 18 69 50 A8 8A 69 +E900: 0B AA 98 20 5A EC 20 19 EB 20 F3 EC A9 04 20 90 EE A9 20 20 90 EE 20 3A 03 A9 3A A2 0A 20 9C EF +E920: A2 00 AD 42 0B 0A 90 02 E8 18 69 56 A8 8A 69 0B AA 98 20 5A EC E0 00 D0 0E C9 00 D0 0A A9 3F A2 +E940: 0A 20 9C EF 4C D8 EA AD 42 0B C9 02 90 03 4C 0E EA A2 00 AD 42 0B 0A 90 02 E8 18 69 56 A8 8A 69 +E960: 0B AA 98 20 BC EE A9 3C 20 2F EF 20 19 EB 20 F3 EC A9 02 20 90 EE A9 30 20 90 EE 20 3A 03 A9 3A +E980: 20 AB 05 A2 00 AD 42 0B 0A 90 02 E8 18 69 56 A8 8A 69 0B AA 98 20 BC EE A9 3C 20 7E EF 20 19 EB +E9A0: 20 F3 EC A9 02 20 90 EE A9 30 20 90 EE 20 3A 03 A9 4D A2 0A 20 9C EF A2 00 AD 42 0B 0A 90 02 E8 +E9C0: 18 69 5C A8 8A 69 0B AA 98 20 BC EE A9 3C 20 2F EF 20 19 EB 20 F3 EC A9 02 20 90 EE A9 30 20 90 +E9E0: EE 20 3A 03 A9 3A 20 AB 05 A2 00 AD 42 0B 0A 90 02 E8 18 69 5C A8 8A 69 0B AA 98 20 BC EE A9 3C +EA00: 20 7E EF 20 19 EB 20 F3 EC A9 02 4C CD EA A9 20 20 AB 05 A2 00 AD 42 0B 0A 90 02 E8 18 69 56 A8 +EA20: 8A 69 0B AA 98 20 BC EE A9 0A 20 2F EF 20 19 EB 20 F3 EC A9 02 20 90 EE A9 20 20 90 EE 20 3A 03 +EA40: A9 2E 20 AB 05 A2 00 AD 42 0B 0A 90 02 E8 18 69 56 A8 8A 69 0B AA 98 20 BC EE A9 0A 20 7E EF 20 +EA60: 19 EB 20 F3 EC A9 01 20 90 EE A9 30 20 90 EE 20 3A 03 A9 51 A2 0A 20 9C EF A2 00 AD 42 0B 0A 90 +EA80: 02 E8 18 69 5C A8 8A 69 0B AA 98 20 BC EE A9 0A 20 2F EF 20 19 EB 20 F3 EC A9 02 20 90 EE A9 20 +EAA0: 20 90 EE 20 3A 03 A9 2E 20 AB 05 A2 00 AD 42 0B 0A 90 02 E8 18 69 5C A8 8A 69 0B AA 98 20 BC EE +EAC0: A9 0A 20 7E EF 20 19 EB 20 F3 EC A9 01 20 90 EE A9 30 20 90 EE 20 3A 03 EE 42 0B 4C 57 E8 A9 56 +EAE0: A2 0A 20 9C EF A2 00 8A 60 48 20 70 EE 20 F4 EA 68 4C EF FF 18 20 70 EE 60 C8 48 18 98 65 20 85 +EB00: 20 90 02 E6 21 68 60 A2 00 86 22 86 23 60 C9 80 90 F5 A2 FF 86 22 86 23 60 A0 00 84 22 84 23 60 +EB20: E0 80 90 F5 A0 FF 84 22 84 23 60 AD 62 0B AE 63 0B 20 A6 EE AD 64 0B AE 65 0B 20 A6 EE A0 04 4C +EB40: 00 E0 A0 00 F0 07 A9 BE A2 0A 4C DE 0A 60 38 E9 01 B0 01 CA 60 A5 20 38 E9 04 85 20 90 01 60 C6 +EB60: 21 60 A2 00 20 CB EE 20 40 EF A6 23 A5 30 45 31 10 05 A5 22 4C 62 EE A5 22 60 A2 00 85 22 86 23 +EB80: A0 00 B1 20 AA E6 20 D0 02 E6 21 B1 20 E6 20 D0 02 E6 21 38 E5 23 D0 09 E4 22 F0 04 69 FF 09 01 +EBA0: 60 50 FD 49 FF 09 01 60 18 69 01 90 01 E8 60 E6 20 D0 02 E6 21 60 A0 01 B1 20 AA 88 B1 20 E6 20 +EBC0: F0 05 E6 20 F0 03 60 E6 20 E6 21 60 A0 04 4C FA EA A0 06 4C FA EA A0 00 84 22 84 23 18 A0 00 71 +EBE0: 20 C8 85 30 8A 71 20 AA C8 A5 22 71 20 85 22 C8 A5 23 71 20 85 23 A5 30 4C F9 EA A0 00 84 22 84 +EC00: 23 A0 00 31 20 85 30 C8 8A 31 20 AA C8 A5 22 31 20 85 22 C8 A5 23 31 20 85 23 A5 30 4C F9 EA 85 +EC20: 28 86 29 A0 03 B1 20 38 E5 23 D0 22 88 B1 20 C5 22 D0 0C 88 B1 20 C5 29 D0 05 88 B1 20 C5 28 08 +EC40: 20 CC EB 28 F0 04 B0 03 A9 FF 60 A9 01 60 50 04 49 FF 09 01 08 20 CC EB 28 60 A0 01 85 28 86 29 +EC60: B1 28 AA 88 B1 28 60 A0 03 B1 20 85 23 88 B1 20 85 22 88 B1 20 AA 88 B1 20 60 84 2E 18 65 2E 90 +EC80: 09 E8 D0 06 E6 22 D0 02 E6 23 60 A0 00 84 22 84 23 85 28 86 29 A0 00 B1 20 85 2C C8 B1 20 85 2D +ECA0: C8 B1 20 85 2E C8 B1 20 85 2F 20 F9 EA A9 00 85 33 85 32 85 31 A0 20 46 33 66 32 66 31 6A 66 23 +ECC0: 66 22 66 29 66 28 90 17 18 65 2C 48 A5 2D 65 31 85 31 A5 2E 65 32 85 32 A5 2F 65 33 85 33 68 88 +ECE0: 10 D5 A5 28 A6 29 60 20 1F EC 4C 9E ED A0 00 84 22 84 23 48 20 55 EB A0 03 A5 23 91 20 88 A5 22 +ED00: 91 20 88 8A 91 20 88 68 91 20 60 A0 00 84 22 84 23 20 1C ED 20 40 ED A5 28 A6 29 60 85 2C 86 2D +ED20: A5 22 85 2E A5 23 85 2F A0 00 B1 20 85 28 C8 B1 20 85 29 C8 B1 20 85 22 C8 B1 20 85 23 4C F9 EA +ED40: A9 00 85 2B 85 32 85 33 A0 20 06 28 26 29 26 22 26 23 2A 26 2B 26 32 26 33 48 C5 2C A5 2B E5 2D +ED60: A5 32 E5 2E A5 33 E5 2F 90 14 85 33 68 E5 2C 48 A5 2B E5 2D 85 2B A5 32 E5 2E 85 32 E6 28 68 88 +ED80: D0 C8 85 2A 60 A0 00 84 22 84 23 20 1C ED 20 40 ED A5 32 85 22 A5 33 85 23 A5 2A A6 2B 60 D0 2A +EDA0: A2 00 8A 60 F0 24 A2 00 8A 60 F0 1E 30 1C A2 00 8A 60 F0 02 10 14 A2 00 8A 60 F0 0E 90 0C A2 00 +EDC0: 8A 60 F0 02 B0 04 A2 00 8A 60 A2 00 A9 01 60 A2 00 20 CB EE 20 40 EF A5 28 A6 29 24 30 10 03 4C +EDE0: 62 EE 60 85 2E 8A F0 2E 86 2F 20 7C EE A9 00 A6 23 F0 26 85 30 A0 10 46 2F 66 2E 90 0A 18 65 22 +EE00: 48 8A 65 30 85 30 68 66 30 6A 66 2F 66 2E 88 D0 EA A5 2E A6 2F 60 4C 2A EE A4 22 A6 2E 86 22 A6 +EE20: 2F 84 2E A0 08 4C 35 EE 85 2E 20 7C EE A9 00 A0 08 A6 23 F0 1C 85 2F 46 2E 90 0A 18 65 22 48 8A +EE40: 65 2F 85 2F 68 66 2F 6A 66 2E 88 D0 EC AA A5 2E 60 46 2E 90 03 18 65 22 6A 66 2E 88 D0 F5 AA A5 +EE60: 2E 60 18 49 FF 69 01 48 8A 49 FF 69 00 AA 68 60 A0 00 B1 20 E6 20 F0 01 60 E6 21 60 48 A0 01 B1 +EE80: 20 85 23 88 B1 20 85 22 68 4C BE EB A0 00 B1 20 A4 20 F0 07 C6 20 A0 00 91 20 60 C6 21 C6 20 91 +EEA0: 20 60 A9 00 A2 00 48 A5 20 38 E9 02 85 20 B0 02 C6 21 A0 01 8A 91 20 68 88 91 20 60 A0 01 85 28 +EEC0: 86 29 B1 28 AA 88 B1 28 4C A6 EE 86 31 E0 00 10 03 20 62 EE 85 2E 86 2F 20 B6 EB 86 30 E0 00 10 +EEE0: 03 20 62 EE 85 22 86 23 60 48 84 30 A0 01 B1 20 85 29 88 B1 20 85 28 A4 30 68 91 28 4C BE EB 84 +EF00: 30 48 A0 01 B1 20 85 29 88 B1 20 85 28 A4 30 C8 8A 91 28 88 68 91 28 4C BE EB A0 00 91 20 C8 48 +EF20: 8A 91 20 C8 A5 22 91 20 C8 A5 23 91 20 68 60 A2 00 85 2E 86 2F 20 7C EE 20 40 EF A5 22 A6 23 60 +EF40: A9 00 85 29 A0 10 A6 23 F0 1F 06 22 26 23 2A 26 29 48 C5 2E A5 29 E5 2F 90 08 85 29 68 E5 2E 48 +EF60: E6 22 68 88 D0 E4 85 28 60 06 22 26 23 2A B0 04 C5 2E 90 04 E5 2E E6 22 88 D0 EE 85 28 60 A2 00 +EF80: 85 2E 86 2F 20 7C EE 20 40 EF A5 28 A6 29 60 85 28 86 29 20 70 EE 20 F4 EA 4C A0 EF 85 28 86 29 +EFA0: A0 00 B1 28 F0 0E C8 84 30 20 F1 EA A4 30 D0 F2 E6 29 D0 EE 60 diff --git a/codebreaker.4+4k.wav b/codebreaker.4+4k.wav new file mode 100644 index 0000000000000000000000000000000000000000..5c85cce17c2fc10468a400ecb0cc36d78b39129f GIT binary patch literal 2664981 zcmeG7F{*E0v|a~3gE6JR!iiE*q16C2plob#C_TT;c|M0*6AOHJ*`1k+r-~O9_{lENA|LR}Qnwd^g)F+-#q?X-hIih_jNvd7C+6eeaNrAm0!I5Pko(_ zkNckd-}1b#eenOPFZuSz$9vX3C*JpyWGkve}x#fS# zpZc@Umf!CAHDCT;-5cMF?}0t1eV^V#^_}``@2B|NeeKUa+rGuuJrr-BZQm_VU*Avd zUp)6&eVxDM%jeYh?Vi;apUSWIo$f=vd3-AWtq=KrFMPK7#XJA&d%(Z;w9l5uzxr<9 z%Rc1W|8)PwmrwCipSmCXYoBR;^*y~;^_}`u{>i8E|1=-(zwKM^yS;}K@B4hp*Z!41 z<++C~@BM2}@{2Ej^QZT{_rw17 zC*Sr~AX- z@}IsJd*0%!Z{-(1y$9~c`KLX%eEDqs&EsGBzK7!Lp0_;rU?1}BzvWLp&OhOO*oeysx@~8XYZ@&6g{!_mCmXG z_PO16yHD|T&&5ygq587VG{4@f@{8vlwtdaxzrDAw``*g0zRqXQukNAp>wUQg`xk%8 zci+mddw};oC!eYRHotiMr+x7^f7-LYm+I^M^2f*d@Xn`i@%3Kzq3^AH``pgAKl`}v z?R}hodN1?0e5!Bxu)lraYfs+;yx+Hc=RbNi z%fI^K<2{Q%<=bbQ55Mg@^*`nNeXH-&d+pjcov}gHj^SAtTpOgRFdtlG9{(v%etnPj-}2?N-Jd<{eeHkBf4k4u z`KP{H|Kh#p_I-ws^FNjE`!9cdrhN6SJ>e_A-q-xo{Mvt;KfQ<3p4IoO z{F9IOsrO?4^7o$H+m!#Q{B7SUzwHZO`P+M#@~8JLpIh%+`Q^X8pJ_h#R($m}&-YdS z=GlMBZ}Xq>+rCqtzQs@9_w>CupZ9&6&z_Zk>wTS1-}2wy&orOD)BNrGl5d~wd;K>5 zb|3uT-p^@&=d=IT-+cL#@Ap03v-!$D^{wy4`S^Gr@~f}&Pkp!f=C}Fq_TTm`{*>>1 z*mJr+`NhA@FCXr0n?L2r_xs{AeXr9#)BKaq+x>6lSKnN_rU&s-^z!t_nPi=E5Ghxn-4$rzx}@6pM2jx`;@w}J)D<8h@ z&3(5#dse>h;c0&L{VM--57oE!EPwOtS^TZO<-g50kH7Pu?)g>z)@RGt_sBl=zI6}Y zll>)F=EHyGPyY6vi}#*lmDOAce|(g z>ihMc+kE)1{K>EPoqmtCXZ`-bZ}W@yKBw>9ec>zLJpT2)7w`Pj{*^!Nd&;*@y%+nG z&$REYe0;w0Cx6?wc)!=_ex^L{JLPNt^7%R+AN#Za_I)z~7U-PwR`8?(Azx8>_d(W*u`+LvRK5zSO^NTBQHpT6d|{*_<;mB00Q%5U%4eD%f0JbnFMC*JRM+SB>Pmp{Dk zq4@HLpZc&*^|ep&_-uK<*DZg1oL~OzU;K2>tv`J2Uq0rm?h)sqfUEzUAZlDSv#5-}+4Xr#{oZwGVx#?{({apZ4{h`1rl5FZ{GG z`#68=kB|LN`R2F&@NfN3eW!ckQ@s10_VN7}&;I7|sePtCYy=coPgslHpE;@$VOPx;iI=Gk+~m(Q*Dt^C{jyYJQ?-g|ES z*}v|g@{6C|&uxG2$$M>mim$%4&n=&6e(kw^U-#6^CANS?n?0@o^^5j=v`_y}# z_T2hR`KLbaTmI}b^?`T(>Akl6Eg!${Px-&?%X``XbPrp;zTaE>SHAbz_N{x{zVC^@ zwWs@*f4wjKEg!!x``3G!$EWzO`tn{=pQn8J-`angzxA*C;eBuUdw=qM5BOJK^W}fK zH~SQiPx0Od-v0D8|J2|4-lmj5>2{8RsWFYigd`_`VdKYKdA_}lq!{h#{yy{a$!6mS3Hd9Qlkuk*L> zTm093y$|nOKITvR|FnPkaBo|m;-~wtXWiR$&!_&*$7kzr{`U7Z&Bwp?toJhiwST?W z$=~nAJ$oPW&EL-Vo|S)V&&sd9?Bn-^w?Dl1yyZ{6eNOrI!N1;j%0Kn7|JOd``@QNO zPJ2%MYoGEd9v}O|Pv48aQ=a_lTR!ITe|v8~}mh%yY;Dj ze5&tX-QRoCx4swmy|sV6*VBBz7w>C-`WEkfZuwN-@;UK-FZyo%r~7Puif2#z7hn6( z_qY6gKlo35@b`OFU-FBuJ?+E(_CNVlzJ17_@~6J`FTVWoao^e#-u{(eKIE7GG#{Vx zf17{u_xr-zzxtN{(>?7|`S_T}f4XPoKlQKoDxbIh^!0oFw!eMqz1V-s)7N{__tySX zAN=h@->DD&bq`Y?_9_0Seb}dbs_$2O;#2wdf&bdy`E?KYlz+YNG@tvaeD4GA{JQ`0 zufF7$kNZ|WKIQ*5|Cax$?^}QJ{a#=DKh1Yv-q-&1zVLoue0)FbW4`j?-};b0^}*l! zY<*7rEuZP0yw`M3{44)Y_owgH-}}@(Jk7Tc`O`hQ=ePG+{`geB{qecwKh6Iw|J(cA zy0__jJ@t1!``e#;D8Am;JikBF{4I}v`AqNmwCC2pd}<%_C!ZMVr}_3F-~QacdG@dSv48R9k5A>7&(!~vU;fVjQ~kf%r~20WazEblw14^6 zJvhI7ZuwV!^*!;`*Y`%g`O}_X@3ZyU^0)kdYtQnZ`fxwRJHPJX>HXJxl~3`%_5IrC zw5R#nlkd^{SAOk(%C}GDm(T5d`&54Q#sBR+(APe<^1t>czwW2@slK%Ht#{lb-|aqI-hIo5J&X6A@b=;U z&7bx$U-{)vzJ1`GUp)SP-={v_ll-?n_&cAz_CN9VslNDE{@eZW|1BTyS$$9Y*nhi! z@#O%j{NM7YeJbDk z;NyKNpFN#leC5|ZN-51_Im0v!meD6d4*FN5}`r==_{fj^CQ~BPX zeD72F>{F-v6mj?Qfq`zJ2Q6xCir3^Sx)~-}agA zvwdIuxB1?azO|3@i^qSPU%c3#d{xk@A-5e=T~3$v48QmeY{WQ*FGnI z=fl@N=6}j(x*FNz6ek;HBhqwQ2zV`Q?Py3dC<^L%@xAs5X zL+$hSe(JqW_p{yKeDyu~_#W8b`6vJFo^N^jmcR4i{l2Gt%%AqL&+UBsJk9q$r}v%S z!^y|{u%~@^ueW^pkncUqhkd3#@Z0?2Yk&LP?rR_Nf6K>x>%F$`yX8;sTl>_WzW=BB z-lyKH`oiDxao>8cQ{SzRdHQ;v@`1nQU-w|2+W+KJ`S!2;+x!2t5Bqq})BBodAN!N< zJu9C*oqyuD`NiA6eCS)>OXZs<-#q!{Q@rzU?{A-{`SySMzV3xdFr}BND^)&kU;Dt{ z^6{Qe^S3_5d!M?8+NXH-cVGD0-#)d^$;bKlO!MK(zxI5~SKp^T?#ur6XV2ojC%pTf z{NLu6|7jol!`r9)tMAr_{PLOZiI4qHKE>OIeEXd8Z}C$f_VhjTzUAY5_}a($wa?c+ zPxI|h-`c16xBEQ3AHNs-+o$${ufEP_ALp0sEff7x}fn z{ZG8#tNMQJv)!|J{Oca3`&9mRPxz@1{(j%5KGnB;ruTqP<=db8Dc(Nh+lM_X{}yi_ z{GDI#RXqNc?|mx2_9-48=bwCT_5J$2oL~EF`<{63S^GcrndbApelPsJ54`hFyz{Fs z`Q}ggQ=jdg#h?7k$KP+|pZeB5&aXYo|4;M5zxLeTr}wG8wGTeEfB6(|pUQvgQ~BPr z@^A0+)~EJ)`n_!5%Y5zg)aUI!C!eqLz0aTaUikR_>%F#n7GK}j$;ai#lL;uy0`M@9{j%e+o$s3eGjMnDPR8O zQ#?M~{fnRa*FNQc;_Y+lTkreUpFN#lKBvCEH}b3Rl&?L>w?BO4n}6E3_IF==inmYk zwSW0<_aVRhr+eaGyz|Q+AMaEAwlBPWPX6|RzxBTMp|AIRx{vemcRu^LFFx*j@~Ql- zPx1CCfBH`OQ(yaRd3?6}*#ETulz-||{=Ogb?Nje{+SB<@`SSPsZvBhjz8CwH&rkc~ z^IQ8@U;EVlxBO4}U%gk|Px%zT{a(oT{^VER>Gxjw+xIG-{PHP(_pSWev-t8k?O8td zzvY9!^UELp?e|Fjv@g8hmp$M5u;js6kqvY`EU1!FaO%V_-WtM_dDI^>3ePSr#yR_f7Z~6Szdu{t} z`P%=~x8BRYC*|`r-}i9xw-0>X=alC@%~#(O?>)Es6uS6z`;`Coy}0M{ufDZU?OFNe z%YVBk{9FH9KD?KGDj&Y~neNH^)_d9K#M|d7U;g&l?sLnB{lE5cKK|YZpIiIaJyibG zr{0V2ahebBeaQdQe71YOYW`S8BAPvvj@EC09lw-5WcFZ*o!7Vp0GUfhHEuYJh(J|`dZ>}mh%3-A5mYftm| z7jGZAlR;ce*Eh z^{ssK_U!|LuF>Y2S>vOsX`xO6lf9JE$_TGwj ze)(_rufF7$PraA#xqQff%a=d{g0 zo%Shz-zV?;)qC;#V4tUbx9|0~FaF-A{7-w9|1`gRPWRw^c>7fTsjuI+^4Vv~KlQ1; zf0cXiKDB@C!~Wa8zK43R+dl5Q_5UfK+Q;|y)Ti=mAM>~GVR}E?zQxzQaS!gh~?zeENR< zUiR63U-b3+;_v(uKkZxlmp?w0U;gHw=GXg9_xY*5zvWZ=cz^E4{BQ3w^(p_S_v!bl z`>cIVKF%+`@_)+b?e|;$)tC43KJ>NE)BNfE<6|D5>3tSYzWcI|`#$BT{^Xl4ANIHZ zsqZxZtTl?T&{M4WPDbN1CpHpAw<6rwsd3?;5Px1KFp6>gU|LMNG@7CXY z()XwRd9SVimVev#_PxFJ*}fP4zJK<&4}9IjcK_llf9g~Ir+ubAPxI}+^{M@z`cz-v z1HUKszwP6E_Ic}5{^ZxaeYMZYr}|EP>K^L7p8EK`D*vZ^Y9GIE`JC>-ec}CHKK6g=sj5AVMC*#EYV`{FabA9(xMy%m4z zYoFrDH;+&Co%(P0FaG4S^)KG{!#;nNzCZ1M+NbWP_Ah?AfBDq?pYE;pEdS!)`g8xz zzwKZ9f7Q4A>%Dm2^09yA*Pi6ReXsI=>ND+I{^e8r(|x>u<=^)Ct$nI*`Aomxr~6EO zD*x$y*7q{?seAj{r}A&_^VL0+KYMQXFTUQ__gvpQK2x6k?Nfc>E5G)4e)(7aPx+L8 z^?mzZr@r<%@#RzdJHPH{yMOWIZ+(idzHi^F{C{iz`d--6eYgIn{Mx_nr}($;wcWpX z`u^$u^}bL2tFP~e{ONl=y|?o5{Z#&GpQ(TKJ>AbXf7LBXHWO7dn+FQ z+OzztuYFGWQ@-{;^|k+rpZc(;^Q&+97f*iq)c#waDZlmE_C4{{ce_vVzW(IeT(NF>VB&4miK#|e71b~Y~R;B``Cx?-TQ3!FTV2eslMe?y!)Pfw!D4t_nzB( zU?2OC|F-W_pXzHL@{8Z@pAyzc?t{?)g5`r4=Vgtrg;)c+~(z9%2^wNLqw|I_>MUei6{ zw|&iT`?9C+p?t_U&;Ir~<^SpXoceD4r#yR3`CIQr-}+wc17G)GzV3m(+xscL{C|u0 zKJ{L;4}9(EzVPnLdzs(vUp)ElTYU9}ufCPPff`ue@-JIz1w(|q37JpT59_df8|*F64H zp8Tzk`MNjq?L*%`eINF$zFYq(f7-Kr>K=->4}JY!=N{hj+>iT`zxAK; zm_PX!@AtyT{-=EN^}dx~{OKOH`&3`=Q$F}l`K>>E?P-7b@-ct%FWx?EV#oNE`q2BkzJOAnZyYFw^L;17Mw(s=&qVKKz>HX7p%AfAx ztG?_%%`blI4`2KEz2JS%_?Tz^w>Zyuk@FMsn-@1cDBUZ?!25ASQ9_nrE{*FIZ+^W>LL z`P+xS+x+6E`MlR#p8G7H?LOvfAN|eZnw)rRC`Q>wKAM$U#ulFZ^x@Yn9o#x->r~BYP<$voQPWOMy-|t1=%J==lzr7#& zI-mD){`P*z-}W_MK9yhm*8jx&y|(dauf_zVPN3nvZ|&^VXmI@+p7&Z117=$7h;f_fS6Y&OiBV z_c32S^fiC-DSy8geYg3=PxI;fmS>;p>-*pGwGaN4U;7kq|F84we&}nT6JLG(zU*(F zzFU5}XZe>8ynWcm{_yrW@y_4+6wjXaf#1IGlqbLTnf5*TJO9Mnf6LeV(%1RLpYEaF ztNKp&ET6CaPkrsb zY%`me1+Es;_-2zxqDqw|$F$ z`(7vi$}b=9xxI(-srTLHpZMxq_fz~=``q&1-gE8Gd%17rmw)k73&zT)e>c;9-j>g#*Jzxc|Z z_TBoQc>8bp>dT(aFTU>Wd_XuC_<-RAMEkE_&-UEH@bF1&kr}nJA zTi*9}@-hE(ANz0bf&I(J`Ndb?@+qGD+TZs>{+55+m-l+R4}HtWec`8li?99JvwXIF zxBT0_Cx7Rk_^JQ)9*QrYdN1C$-mCgf@27mqzkIg-Cw}UW&sY3uAMcNk-;2J}dxNk1 zZD0HFzRo}Owf~l{eeiL9@wLy%r~2O7bLvlD`)vC@<+pveyzi~v>uZ1R;jMqY7y0h{ zl;7UZmiN8=mjCu1YESOR?_2rRxA@B6`oK@$>*V8mJMrEJpSSnGKK3F1ZQpt?^6igL z^|cTA#XBFq`fhpql>g~{r#_W`+SB<@eX4KeZ+Y*(?aTXqbr1NsFZ)mX!n-g2&VTw| zm49oWY2U5?iJ$uOUSIL`UiH5C)cfArbKBQG<$vls^(X%;zV7Gb|EGK}>|>wP{oLZW z_p{}FZ}nbJ`%Znhhbdn^^d!q)`SRzz{J!K*{fn>stXXSgJ zQ-1N&zT}(dz1){Q-};kZ{?3QD5B}z#?qB)dhy3#2^5tLo=1=>SkNck9_bvZddoTCJ zzxMQd)t15KE;!7e!KrRAHMc< zUwpQ_zn5*_+OvF$r>}jAC*S1n+4ALs|MY%}KjnLWc<;|XQ~u=R{Nig*e7q0-elPg)FMgXp<*P6L zZ}%a8+V?5%zV%+@7r*Vh<^8_+O!v8cKU4qhJ;1v!{@%a%zsf$`+jLKO@AGwE^0)gJ zzwNu_e|n$OeQy1y{BPg?_V?#cyNB|5dp~?Hwa@f@`QC5w_95SWxo7irZ}8JSw>*1R z{&XMwi=XzzXUfyJc>BP+FYjd@pW^+#TmIxz`PFyJPy3$UxAv)g`?J6O*~dIS#oK4g zpM0kI+(Y?K_bLBVe(f{$VSo2!pYku>KKTDM&z|K!-KYGw`L!qe+Xvoz!h27A{&fD< zp4FFp?+HJ>2lh8#`@>K7zs1wn_fYx8vyc7Zw|m-$eDC=*-#*p%x894s-m`p)XP?^B z`S9N7lwbVY_oA=!f9t*2$9tAf@uxkVf8xCl{M-HUpXT#k_OE@4$KUt)HBVprm(Pix z?$16`{^aBLB7eGP@zwWh{?vE-Ufzd%@6WwW`P!%Qi?2QLnf8S*f8Rs-;Qux6{qeCs z`%L+hzw?V{Pw$VD5i`{F=^d%=4j z-pf4x#ZUJn-+cMp+6VvIf7%zHDNo%D5v@+qFae&46O_aT3}=WX8KZ|zgx3qIcGYyRo} z?pyxk`@Ps_`(ECs^2?|8#HaGz7ry+9pXQf8eVu>ey?^oSQ~b0q`BR=fy$?RqzVPM$ zHvhE$wC~e>Du3D+|0&O&-oM_9{Nl^Mc)wTWvuE+!zFXe@_)Pn5`R)GXdmrBSR$u3z z-fOxKeYbr1Z2M06-|qXT@58;-_fqd=etQpf|Gd}qeeu7=`@P6_U;NGEZ+^QE{B(bO z%;P`Zr~JvE_TBRIt$h2#zwNu-2j1^XU;EUa_*dU;zV|u#OnLeiZ-03EZ~H#wy?^=C zJ}2IN>wU@pia+h+_kyo|%;SHHuX}L*Y0u)zzxFSFn{S@`seJpu*FNTJpL*XdUp{pY zm4D)=`<(J?pJ_gQ&DWmAS6_I)@0LILO!IH=>H8<&d(!vTd$}+BRDSXHulFMVEzdso zVISw8_-SAAi+}rGr+q5leQ)hg-)VmFr~RG(l&^hmy_fH;-mCnJ-@ey2zxdnl_4WRh z@B67et8ek!_uA$c|M&0pAO8Kn`?vq*UvKv>zV_VmKlNU>ey{3#sr>2h+tcr*eBOS) z^}b)f7xz^D!+K|Q}0FoTb_OFQ}=M`>cI#@mnABxAy0LruoJHU3o8mFV*+f{@eTC^5y?mdoSN-`PV*A z->bfN`&9mK?_c-))4y-E&(rrRfA_8Yx}Vc~{nkBH-|{K`t9^Li^7;CE`Ks^feztwL zyx;3|pXTxZYM+zOw(pjA-;wDpTw)<3H-vjq%{%K$5<6rr{pYq{8-}2={{?vcVv#0&>@%t9fKIZXp{!@PX zUifeMsXzH&@uz)!5AfC3JpQ-%dSB_cedo=N3Qhi%;?O zzFWTbsr=%-Pu=tOy|`!RvyXjl^V>ad@$So>m0!H~+3vsPZ|`saQ-1AJ_q^rHr}E8j z_q@gb)c4}PyjShB-M@I>KYh*L+Vj@;$Ufy?dw$K|datQJdzydxUgbZ{=YGte-pluP z;&0_w-?u)sf9+E|?>qH@-|kaAmc8dmrbQ&u`rWKHGcP^8P*CeqXounfgE7r}}<<58HhI9@4k` z&HvW-!u{OpJH3aeeYg4EpZoXz^HBW)Vat2}lmC{t&ne$L`@h|j z{q0Y_-?#1!fAf|9ly~3q!T&8^{^U>lp7?rS=hN3bdsbib_}t=sKjl+_Nn}7U-FBu_nq=}Z}hGF+SB|g-}@9_dv1C5w14HF zc=v^$?tkKIpUR)|yl?T|r+EC$Ki$(lr~I$?ul(ve< zPxoB@b#J$L@5BAnJ#YE)uYB`Q_jmsG`}({7UUfh9zUH@k!aINazTBsMPVeP=D877( zKl!*X{M4s-_Vo7x?|q7=@6-q0`M39Re)(75lTY=n_p(prZ}%ylzEdCg={=M`d)7YA zFaJ~ibkFkH_C4|2zFU6VxA@<>hp7+uaBH7wU+!(n-@1poPkessd+~eG_piRs)_=?U zy?Ec+bIRYk2fi=+kU#Ca<+-2gyZzq3=Dp9!f6Lqdly9E>Z|!M+@~8KJ|JS_xp6>Z; ze%g1tC%panJ(=DE`+Uv&ez=G7|C*onJ?%MtU;6%Oy!YoGyno%>mS@k(pYDTC@%6q_ zp7*MKDu2qK^1V;-wda;+Py3TU?R(;<`{Pr5?emted#*i;$KQKydG>VQ%0Kb7PrdJ! zufCN(<+uA6U;AwNr~A7vKDEzw|KjU@rab$YuX~1f-{Nb}Ezh3S*FGoSec^AtSNS;q zwC9%hK9x^j^Yvc8&EI;j>Rb8dYtOppE&r$PKfP!CYfs-Z{5HS%zsh^nK2!gv-(&4R z_2Ip?yx;5ey*U5GJOB1R&MzPKF@N%LUwFS){hk#6)W`nxwNK^4`<{!(zxdk6{AnNa zw|usJPyDv;miPOf_Amao?xB4AzT0~^@zcKSIpzPZ+=KV8?~A@ay$?ROzL%~4mY?p) zy_rAV^Vj^eFaA@W`?3Gi_q}xw_No0({{DSC@%G>H>~H_=p78c3fBU{$zWnV|`_y~k z@BG{Rv@brz`ySx!&wEXI`hLw%-wXe*`DtH#im&&wKkqf=x#!~TbK>m-@B85%%;Wzx zUwzA`c<)pGr}wSC(|qGv`_6rzWJv< z_TTPb{8OLW=j-pq`S{!C)Ym-kHO=4h<#W29^6@?3GrhO+Vb99n`j|iUo%(P4Zu!$b z)BBHTc?!N>dmUHM+7?@QmW`MQVc{@eGx%}@8?{)?a9Gxs^=>07*g zisv5uUhvcR!vAZ&`r03#;=K>N{ZH>}o;@qyKE-eMFCKsI^ELl;Pw!Ly7K>oU-#quTl~{K>z?gT{#QJEI-mEo54`s*9{;y|y;tR*c=v^$-t&ono6ny1+3sIF z{?qp@{^|a{hg1G`&s%)$<9yz$c=s*7_T2KPJ?-<9_kH5;eaOGX+n;@$U-u6`eJ}jq z@~3^A5AVL^bK<=Ze7#rsyydt17mvU9+4AgJ``pUk?m6|@`fvH#v%W9#tFQMw@zZ;| z?Nj^Pr}p7K&7b;C_o==opJ_h+#n(ROZ~IL5tbN#j>i?AY{g=<5x{v*T>K>-=i_crW z_OJKa-UIp5dxPKZ|CYbice~G)KkYNU2l{S#|GwS!cmApGmY?>0`hD5w={~o9{(+0_uzf-G0#2x7C-Ha zfAP28xAv)g`_!Jiuk*P#@BgRq>|g%VeX1|{-m`f2Dc(NCZ{MqU{JqcDeC>nJbRT&8 zlkYu?r*HB0DW3PT5B%SMFaPRa{_Vf`=l{%m@?PGD_bT4+#s22E`xlST^nGvfxArL? z^1Ua#_dM~nkMnu2;(ZUrC&pLp+i;+@Z)_Nn`aci-aidCQ;nbpCDL z`;fogzxeVuzumuh{Ocad$9%nS<=^JL5Bay=tNJ>>?!Wdg9)It@<+uCa&i6j})O)$_ z*L?M@_rk~bu;qE*+UHjOc2E1%K3o4SUwfW>s;~FNr}*i8-uChSPw#E&PyUwop7mbj zn`i%N-!1>t=j(g;sxSMLf9+rV^d7kXEnhxg?Q^<^sXzDp70;e;_o44}PxxE+Q2x$8 z^)=7_l|Svv_p;^7XL=9x-SThyp5E8_xA|#b-naPedrf)zZuwjH;QhHz=W{=|_-S8! zim&&w|LJ|r(|4K=U;C85dG5hJ_Gr@ybKdwQSpC;t}j_hnD# z-+C|nfBO46?P(u)?^FIK-g|C&_O}o3WqFMgWOdzr8Oi^t#hw&m-+D*rZLd-|U7+49~8|H?OCd)9lAKYicg z>1&^#;%gu8&puQB=@Qr}EtwpId#M&z|0=`oi0% z-V6V2{*?czeD`G^@45AXcRqXidx!Tv@b;Yw?6Q-r}u~VKDGbJ zf15w$*=Ne*zvXLx?|JemzVf|)<=6i7y_G-psrxzkPxGrU`P;t5*L!X6$Nb5^c<;me zPI>k*U+-1RY`1*~fhO6pxSdt1tZ4-#q#D z-{#YInh)>3>@&Rw`0{uDsjvCU$KQS7xBlkIFCX)~mwEb{uY7p#315B9mk;}xC*S_X zS3dsk3t#?Io_zb0KlP`teJUT``S9g${VjkH7P`KJfM-f7`eCX+Hb={_)xN-TJ)EFaPa5SKp`k-XEW7UwphLK9z5td-MC2 z&#nCOKl#|de4ggl{?k42@t*ipzIpa{U-q%jt^D#o`Pd&H`#;ThUwq!~iI4NkpZ%+^ zeJUS+?{mtZ@|BNI`ET>x7k}?rKJfN|cYgW9+aKOOysz_5K9yho=6@>Rec9)2U;LfV zp3}bY_Nn*6f15w$zs|3|wdcvl`@?%r@~8J%`=9)``BVO>|1`h)KHanSulJhXXYGIT z-{wzw_L=hd-{QA>7GLl6_I~I)&4>3syzkWKr@oi+nfB#=im&(bKGl~!ozI@re0cXI zf9iAU`!@fnPx;qA-m~_nZ{=6tX+C|;KYg$2JN2)=U;gIHhds^X<9z(x7k=w+ zp8WDLU;gwpU-|IczUIq^eax3n@s*Fi`@+|I*{68&r+oR-*FKdG?|Xo+zUIs4Y2Rr+ z{_eZ=fp=f>%f~!@r+nqJzwZHl+xM*x``D-Y;(u!&_a%SobMkk7@$BzC@!9q*fBTSM zynRmo&M$uZzO~OOzkH^9);{=D{&r9M+{(w_`L%!TSw7^y?TgRbJ@NUv@2&jl_r*Tu z>FfP@FZ1=j})P-+kHV?Vk8Mzx?6t4{x7(FZ{jFDSygWK0f8Y&39k?y=VEH_{z6`<3!Dz_)qiU-Ix5S z58q4meVhN(r~GT5sXu+E`S?%s;hkUawe=}}o4@5x-*4?x@8x~A`S?%s;osgf`&Zw$ z`E@_1eY_`qYoDqAw(pj&zW8tVtiH96^YMSn*L%^o_MiHb{}s>v&c}bdPxYPdPha!p zQ~c?D-4}lA{}oSP=ks3Eec-FF-}mXB_F>Oye)Yv?>u;X?@-bijwP)qSdmnheFMZ9I z54`=!ufEfK{GEUDseJb(f6CK$%2$5v1OHonr|*To_dM<6{OU`-dGfdWOnH3#zWBWD zTmIx%U;EVk<3H_-kMr?yU-HeD5BcTee0b;M<9+a{eDjr$zkSHJ5BxMAf9IckoL@fV zn?L23&)Yrmsr>1l^tBK9+rH*2|LOZy{dT(ar|&c$-uFPh->ZD^w@>lg{4I}9`PV*E|7|}0(|maQ z*L!V!ir?mM`ML*uYM**9@AGwj^{w}M>htz{eCp#p>0A5Pd)fc#`%d$#FaG7@zPwlU zHNVZ@^7z=FzO~QPpZwzA=2u_*w|kaP?c;pPxZ~oNRKIBh*w)w@^dzDYU*D2q9 z;ot6wf8|g2q_2IR_VqnfKK|y}$NuF*zWGzW`@+B76aUKJ_O%avzskpdx+gy7>%C6- z?hF66@2&TxuYKrS{@w>4-vjwmo_);Yb1UC{@!$3>zVhvV>g#;=yp=!oVITAOOy8^e zRzCc;Z}HxfeEXLVeVxyJPV?cXdzMf6f1QudwC{=cp77qM`oi0%-V5IO@V=dFD9oaV#Zzuv3f7ys&eE8p*X@-a`}+GpxdU+3fVHox}A-+MmwvHv!I z%d?OD>0A5Pp7tld__z7h7yt5cU*4;H%y09zJU;fP?{-i7lV5$`=2u_*%V*oS_-+1_ z=bp{ece|(k$=~i@yz^^+{LSOD?OS~1+kflBJv*Pi&M&_D!q@w{@0PE=_&fi^Py1GW z`JZ_2Uwh)e-Lvwiees#{^xg9HUSIWP&)Ua6ys!CfU-oo9KHI*iaey|7qXy!GG#=+W+mI zr~GYS`#kOIec03a_?xfyDj)KveaSB$-zR+K7hn0?zRsubSNW&D_Q%Kj)O&67;kSK@ z_nze2zwVR1&ZqCK{Hag*<1>A)>Rb8n+rGtnPx9?wKJ;~dy;tSKdw=q$KEIV;`;-rS z?e9I|z0WqEJ*WBb-oM`Ksn4za?LNiVKJ{MqKfTx6{Mx_XYwL46f4h%)d}{yNv)<>Tf3t##6Kk@ddJ-IjM7hiqh zt8e8OZ~y9xzj=JTCw%!7U-|YYzj)`@p7eEo@lX3!{;hq!>dQWrZ~qfNeJ|eE`L%z& z7e2Lr`4n%Tr}^IVR$un9Kl#eQ)i_{*~{2;O$S}x*zlSzs)b7%CG(L zpZbvRzWBV|^OQf`lfL$O+SmJ3KK|y}$NuF*zWGzW`@+|IRetf6zwPV%r+w|up3blR z*~k9nL%#WKKKypi;&1hJ{;j_3>HONCed>L^Kl$dj`S9C4i+|gDo?O8s~Kl#|7J?kFKpYrWPzWuj-;Va+%C*D51uk-2a{Nhi2onJip-XGpRztxw0 zyeB^PFP^^BeJY=Q>{IzqeY`*U)wlR*-^zd5*FNm|)`vZvkN-6PmJj>bhkU;m{Pcd{ zo&U72eb{sBWByj(@*#ivzU)(d-|kuYyqEWZw?BRD^R(|YzkJHSeDI(4t$cj^UQc=N zNxt`~eEQnwR^Q4mpYkss@~3?(AD``>#d}Zkr}sl&=WqKKU-_qf?0?EPzs-Nj*Z$t~ zRz7=9`xeih{&kcFP=S}f4U#@r+oXI^563K)c*E= z>hm_A{oNP;>HFeupWFFcAM^Os{`Tkoy-)Rpf16+X<6l1RTRyk*w?5|asr_ruY2T;s z<^0+ofAj3`zU6Z}f9qo&pY8tBzU))^bq~(3{qZ-?{?oos^QZph!#?)M=T`o9|Ke-U z@;860FZ)#f)W3Y{y|}kq`Sre)U;NwsZ}nv#`;c${6JPJ^eD1;dx8Jw&r| zwEv0s{=BdA>FfOB>%C4sl|Oy2Q~p|cE4pZ0Wq@sr=da$oG4d&&l8UC*FIO4||$F<=dz7w|$@bO#R8X|F$pu+xIOW z_N;sRy07!g2Y>VIv-RKZS^V~W%isCizQwbr^KX4Ge(~RnJwEmE{^Z-|X}TF``pT}zU0^b zZ~In0drtcn&wG`B<(og{Pv4imxA@xM{-^gXpUN-Zd$PZI_T1*1Kjqu!_WsVtr}nr1 zQ=iJWPvx_}`IEnS^6hiV_dPtl&+>78`IP_3$9>`7zAyWi|2E(JDSx^rec$rs^EBUm zPw!iN?eD($*F8-6x=-@$^K>8ku#fZ0r}&dk?Nj>~Z~xk7>kn_Ar}RU-uu(nJU(yppZa@$_O#C_f7-Y5Py09@ zpYk_f`S_T>mCyS+|K#KS;obLXe)%~6w9oXO+0%UGpZeB5)BLACm2aP~^V!Efbr1OX zeT%Pr-mCgLAHMEw>VNX7eEU4@JI$}Y>|cFrPxF<}KGoOx@YDSAKlyx}@4ool>g)Wc z_hTRSbUyxdZ{G8%&)50x%e}qr%RbI$PwxX?eeJ`Z&c}b6|J3K}eD`Iaw|&{i`RrNy zyDz+b*wgv=Z}X@8PvyIB?YZ@VuYB(h?|o|jdN2I9`R2*D&#nCGOMczk+dWVD)4sJ& zz1OMlbbs>AZ}Yc&^?kbMSMOW<;J>{e^QZjj{cQIyzI@>A&wJJV6kqQ(?aTh=@!#f~ zKjl|n`<(Wf^5ye1-+iCHul?EI``};qFy&AA_IbLGeb~qO|^5H9g>R&$PUp~cGKK||tU;a~`{Mu*wUi7t3<-=Eg`4>O+$LDQ6 z{_cBv-{S2<{@cFzO!L{td*W06=DE+Q|E>J;Klykcc=vspU;8+p_cG5u-V>klH(&Xu zzHjr(|KwBt_W3%WeeA>j^4WuIGponQXdw|v;s`S9MS@}K&AonQOE?aMySXV2;Vz}tsC zonQOo<2}ir`utSB`{Mt$FaFMFPwxZoec_4Eq?l5<-?xaeD~#j-}>L$hrafyeE8b4`W8RkvwYZd znvcKx^1fSt^W>M0`SPc)`O1f{J*#i=J)Pd@gq{cq*tbE~iSB){&>ec|mx-?#a- zC-+c3_Q%Kk(|q^E=WXB9p7w`#-}0ev`A_p}&y$by@v;BY{M!F*-_xGO$b z^QS!TWuKG(SNZr%^SPg?|Ly$kdws=oKfbq9->uIyAD`dK-`>MlJooumx##Koo_-%{ z&+R>Y%}@K@zGv@qJKy(qJKz3w5B&ao#q)h_^SuxLzPH=?zPD{Y{M4WQf13aL-fri6 zpKbn$_kF_q9(XVF+~-@K``PAuAAJ5Q-^;Ww`%L@tUcbfr9`JWx?#=IY@~?dN-R3{# z?SsGja-YA&Pxq1}^6rcO_TIkcr~9zyTOaoHKHL1Ky!-OK*oXHj{_F3{ zKGl~!-};d6zT5n#y!)Q^FTU=x_9?#dr~9zyHs3sZ+J}7m)IGyH|HM!8Pw%zezxb(7 z^<~d(zIpQPL%!du_JMc)iJ#`z`;uSxP(H;^eX1{ePVod(~|1DoW z^|trvrqBU z{L}uGUq1C-Qy=;kKh0-<^OXVEL|`_i|3%-_nd_o{sOsSkYJ zoBKZHr#|doK7QYmkNI2qbr0nOKlOq4{^kFapZe6j;p6u``Ix_zU;C3^eWyO;Px;yh zAHVPIeD@{4zAyXWU%c~+uX`w;;wzs$?Q<(1ALo}3y!U+S^Y-4#r~GSA__sc{^4as2 z&-A_UH_twAzn99Vuk&xc@2z}%{?0|;hlftoqx-R_bQ+1J(T~geEOEpTYvKXUif=|`j(IRZT^X` zzEl5GzWwRz{JQ7Lhku)Y^4aE3dG4Y1pWXxh#sBH~^}g&=dsbib+x#uh{=R4Yz5j3J z*Y{FB@b<61@ZSG6KlNe%@~Qi&{NlgLuRZI%p7yo>Hh;_4J>c*Ce=C2xKm63c_}b@d zp8b6f_|*No?}@Mc>F;Odvybzi-cR*?oB!0u`}|a2zwg!`-h1Ld%`cvN@IKtL^NW9) z?|UHMeNR5cSN^uI^Xcn+-mCJ>pZc2L=5Kj??EiIN@_lbxe|W!F-4A^AwNLF+`SA9s zzVP-T-}eCTeE6+@<(E(8+lRi}eDl1Q^XXfB`M>4a-}%)SfAi%}zWb8z{cq*tGtDm_ z{Hw3?;irA!E8p)6@BHcu?|k}JzWGzWeV*pqhkI~7KE;>+TYkGI{#zgStvyfq)B9vk z^H1}uuk+cn`W9dLe&5QkzVObk{fj4m>hpDe`PBQCPw~HWr}@6O z%IDtf!+Y5WzVf}#iJ#`J&au3eueeGZTDSz7c>wNB~`ucwGDSz|i zZ+ZK$=QiK(_0-4y_-ym1{L}o}r}lj7!#z0vx4swN*FLo;{(j%`uY7p#PriMMC%=50 z5AS^X7Vmuc={;=ypXS?#J-_y^J?+E(TOa4Mr}OD+zV?K-5BYTuxAN`JKF-I-JpRR( z|J%O!O!I4h`j(IT7JnzWuoe`{QGt z{3%cV+rIeJK9z6(lh2f|_ub~Rr~SA2@Y8+ZtFPa8%ky5&r|&c$-usYWeQ)L4pZ9e> zKIZYC^5k#(-s0_FK6MZDwNLSt&z^qYTlx4nzkJ|pAHVOGr?2zrJI#mp{^VC*=fh8Z zif7NS^Q&+97hn6_;-@~R`Rb0yKIY4Z`<(6x@BF%d_Mh^9YW{Yg zTl}s2nfmZv=C}6)U-vo9zvaVymXGfffA7zI+JBo5?|k~&2Y%`gzs)yK-|{h!f9+$Q z{Nk%`@y@^H!#&ui^5N}Mec_#d;+=oXhx;iX-vj>kDgSLgyz}X6ANZ+1eC1E?jlSjc zHlM!bQ+qFnlw@>+R?+4!b)4ulK=5KlS ze|yiTzHjsEKC3T$-H(0Xr~4Pb-SfoT2fpsV`WF9He(h85b-JIa|2BWiv%l}B{BP&` zeYg3=^Ip!czEAnOH}AR4ul@0_`>DRgmw)loeEK@S-s@@KxA{+f>V4n(Y~Oe5Up((s z?^}KU6#nV`lz-j7-*@|7#j}6qd;jXo`%eAgxA{|^zUHg%)`$G+>-XK}!@td^uYK^Z zeTuiwHoxu%ALqlDkNx4d_gwk*q3<@|{ONs*pY|nx%Co=u>buQ{_ny3$_lLI+eC_i# zpT72~eefyXK2P)A7a!-Je7q+P#O%s;)K>g#;=H(!09`nd1Y{ONtN zr}>k=`P!%Q;j8a9zuwFFC!gv2;&1+xZ=ZVKQ~tKE`Fh{-DW1O0$A8*)n-700zwXWX z^fiyq_8zvpeRwbXuz%%G->dpoK0cMd^)Y`t-+R(`>R&#mdvHFyef}!>+=Knu)Aw0@ ziznaraN_O5p7uHA`@P_ufAX>wc_g4Ptex`l7 zhwVKV@4nmo+K0ZifBBeyn(sZ!=V^ZVd(UnDiFZEl<-WJ?*?n*4+n@J(+n0UpPrmQ% z#Fx)B|Mb3FAM;Q1YyY?T_|!h$6aJQu^LbzA-@fO!eev=B<QR_q|nL-q-mjew#n#>wT*){@eWO>-XK}pLpk=`rhK*mp!NXbr1MEAO5%U z?L*(c|6cypzx>;O@z4L+^n2l+y(jPMJ>j?c#c%It%5x9JyYGoFfA4ead%>sj%V*nn zn_s;5{HgmXAMaCpKE3B#ef?heRDSX9%l_uM&n<5s_T1*zdpUpWk5A>_>buP^zWNq# z|LV*Am}k$*x6iG7e11BgzP?X9_ftIi)B8N}e&6yr z-NV%9Rz5yoeJ||qeD?JHmrwEJd;b$}ANI7*DS!H2Cm;LcQ~Bn9D!+WZCqBj7|7l<6 z*ZovJynV_a-hFT7b8pVy`oM4Rx%l!a-h0+Qr@puH?ZZC4AAHQ8{LP>8YtLIg)BM}_ z?Dx8zU;Di6%X`_s?%~9j&o;mM*1b*hZ{M?hw)tD0{c9iZf66ys`M2-c?{zzWy3e+6 z@qhL2h5g^&^LC%peU^{!r}jVP`~J6l^<~d#KD_&qUwyav=E?ulzL%{}?NfVJe(}z) z_d4CrPv_%f|EJ%J{mHLAr}xI5=1=+d;hwASG{1bv|EljPzxr-{YM*WXlxI)#x8C=T`poeanaa%V(O;{nz_C zAKv-p1MmFWv-rwqpSM2b*S%GK@$P%df6KGyS3czX9@yXhTb_M>E8p+C^)H@#c7F9O z{*>?iE1&n;`rOL@>OSe~eD<_Idzxn-^Oavb`9FQnr@m7k`WEl|xz!hc=a*0Mu zJMDY&xs_k{S^K=@YoFS)?w@_i$NOyaw>&<6-=FI1_uBfOc;}z`ny>uYr}DW6=bw1r z1AN`jHoy37zWJy7xG(!VpFNBBJ>TNl-}%)SfAi%-e)aWxZSzmO^YO7iea%-syx)ub zXTfX{M{!`w4+0*{F z^0)r@Oz+{R^2^72;#0iur~01mr}FJ{D<2={S6_JdeaibjPxA|*`_R|-0Pns}^J^dH<72*jis!wiec{W;`@mPe{o&u{*Z$;heavt3 zxBTh7yw9!tx}VC2_dfXh9^j|`@Rh&4AM@nf2Y>UY`*C0R$}j#_U+2@;`Srf|o8RuU z&EN93ed@h@5A13FseirKG{1aK`#8V&r}=e1?#sQEPw|!S_aeV|=hN5xt@kaTZT>C( zY2SJ;?@zw@tv~l!?={UYAM)+bdpW=Or}@6O%0KydANXy4@y@4j@wI31)BNrIz&pS8 zfwzD4Exz)3U;B{nd%Km7&osY$@b^BIU;NYjx}Uc`_;2%zulFs!{LOO@(|q{1`L$2w z^SHW$7if2#fb3bo=$gh2-_p{vxf9K;0S@tNiqU+;B`-@ez@hy2>d_p{AE@y^HR>+faS_vBOeV}I^p+V{k7{mtL{ zUU*;U2+_1)&zKIB(l`@@&N_k@3&fATM%^0&{^{B7Uj?O#5p`}yg7 ze7q<3X&-p^eahGSR{oZ^|E+tbZ~4@o#k+6a5B}y)KIWh1Z}%*I>a)E!_VNDJcbgCI zeD-%=_*;Fa_k+)txBqF+ZGQ2!XYtcL@i)KSr|##JKiw0b;_d&nPvzG=mp^>HulvHg z?`;ePB7@B9=0b$U zto=_u&M$tOzvby$``qg5eD?JFKK1vW+x+5B``Ewur}^HWeD~#k%BT3s_j_&g>FfMk z?~Bjd{HH$N=j*=Y`+cAK*F8-0%ZK~)KD?Lni+`H$dmw+>7ry)}f6Lp4zF+0Dzw@{E zbBnLO+kD=u_Vm5o%4g4MK7GyOU-wh|wC^e3_WI+}~mA~cf!=7*Rxd-Rd*ZJ^M zfB3ig)tCIK5AS84uk+c{_k8jlpQrhCZ_dZZ{K?<^>3)j04}FXG{`mWSpZYi-pKX5e)wg*2ocg}a zufE)a^UDX`{-=ENmCyUy=j(iYe4o{~c>Jrc^Wm#+@s+>5w`qRukN;br+xfNUbf5C! z9-PlTIKTK){&r9Me4S5U-w%Du-~8!*im$%Kmyh4;wI|k zJ>{EcpKbn>Kjpjc$=^Kr+da+KdsY6H-@ey2AAY(I{PZ5SeD!5d-%sT~y$9!)&nbVp z&nbWEQ~R9qeb2>{U;OlbD!=xu_ucy3%ExEg7rySnd!G2W_i)O$5ARid-}>Cj=Y4Pa z_`S%leavs~^Ta#9d~Ut(t$cjye!M6APxobi-%t6#+yB-*lW(6}`Srf!d;gP<`KS5Y zJ&XTopX$54ANarO_j0^3`Fimr+x96 z=GUI}UgVe0)PI}5<=MafzS#eEzW3ke!+THOYnosDX&>ho|1{tGlkdLVTlo}U`E?J| zeEM$li=X;)59ROtEzkbWuf9+7-Isjtzs-kte%%jz^|ep!Q~AYL-{Q&l`@&EA!n^M& zzxdk6KJ+dB$~Vt@IluhjxA{}P_N=~JAM)LoeD8lNpFOAf<%56i>3sNUU--)R{lGiF z`oeGXi{JJw|H?1E`kLR~&z7$}xu07;?t3dAf9Kczoc5`EsP`@2KJ+cV^1c7IFTC^d zseJS7S$y>^{%wBwoZiAOk`Q`6DxBe&I`P@VGHDCF)Pvx`!Pv@5p{`P^d_wqfQ__z7BKYNys-?#W%`Rr+* zr}?$N_uS^6c<1xJ-jlxOD<9tbkpH&tDc}CwgZ=Tj#lP)~Pwi9r<^Pti_hrv%e!bT= zAAY(IeC^|V*z&xW^XWUyhp#=W@2!0M^S;jC_AQ?LZQq~fPxoM-EnoZ8J#6#g>wez) zlmFHIobv6@p4E4I&z1jGU;Hb7>r;H~bBnkCt$Su4``^mv-ke{*SMcupl%L)w`R2Di zwP)qSyD$6Or}#fLzwY0C@h^UQKeZ2gR{mR`%HQ4({IoB;{criOXZiR(%jfC)Iv=0v zJLU12^6WX~pXPscpZHAk={w~spL_8AR6e}lcbk9Woqx-R`*dG?d_UX1+kE)yYajTj zKYZnH@27ljA z%d>yIulKy2@Auv27teb+zxqDqy-($H|5G3M%CGyW{NlgLXHVzXdp+&@Hvg&5-?i_B z{p)_*m-qcsc>H}2e2;biQ~%rf_F>QR_x?|PoWH&QEzkb;uf9+7y(jzleYg21ewt5T z^QV2j;@QXdfX{SKc)#x{zxe8FANDN&$~VvZI=}qkxA{}P_N=~JAM)MzRz5z?XHUN` zeC=Z%|1EDH`fl@mKlnJm`ofogy-}1F*^?mB&zEAU~@5P?x zPyXg>pUQ`?zT14iZ{?qSeE+pS`Q}gg)wldBzj){4Q~WglbPv<~+H;!^@4mP4d0*$V zr|%P=+S5GwTi!nO-R9SOIluarKR%UTeW(2G{ObGG=X4L1Z=dSB&4>RgpL=kA-48x> z58Hb#-ahPEeECe@tNOB!^YN*C^W;zY+xgz}w$C)5`!QdA;ir4Tf0fTYIKTERANcJ( z7hgWbPxqv6@zeZz-&6jd^1W>RPkgk$-aeJT zy&rhzmk+$Zms>u(uYJh(y_HY-S3bP+;j8bI|Ec`CpYosb_!sZ@I`Loma1Zw3e(Vo# zpYn%y{)u<~Eg$altxx%%^1r%&e5U#AIpv?``+nHR?@RtyJbiEF`+h2)`=9oOcYf^y z@BCXnyw_VF{OjH-zj*ikI-fmn`PiTQ>3wc__W7-Rzwa%7?%(;<7k;{b@sptnb<^5ijUwuz}>HANH*LTRzS|-NReH z-mCgw93&X+HZ@{&dgsIpy0QzWnV&-}0~g;+>C=`O`hT z@$P%#onQBWkMrTn$NBj9e#kd}%D2zc{PJ-=KITvF z`uTYY^G_*8!J+k4pZ_F+%^)c$o3@Xm*y=Hv5!viHU|yJc0gu7i-;!D|=4 z10Vs2fDAeWLg)|(feeU%lK=tW9~bX9NJrPW(&d))tE8vrto7E|Yp!oEcc@hJsT$*5 zH1zJq???V=Ue{msCmza6`duE~kL%UvxAqs0=cPWS-{qIy{gv16M|$#i{nh(%9_3B_ zX<9iDz{WmJ-+_v3lR<9$k>-ZSZmhxEkb z{HwgX{e>E@p`+muPb#Lx3{gl7<>;Ag`T^{Lo?_s4Up48v@S9y2+ zX}|LKdsANGaedpL`ux^B?R)lpwf(7|-9CvYy$9(%ukMX_NbmP1f67bxUH|qyJI`tU zD<0aH_fPjj{?dCt+OO|Rdgr<7@BFL#bUpEi-}Um}%`3gue`f@ z@sr;9$v?dx>D`}rr1yJh@z8$d@B1Yl;+H?=-SsCP`FlU&aevZZ^{4y!lt=uj|E^wn zcl9eC-!J*6_anXg6OZ)Xe~U-=<2>^Bdm|p=Cx7X8{fS5Z-Vgbc{;GfL-iUw7UwK>p zbU*H&-jDR|ul?@&Q(pO}{X5UJzw-L;h3Rb?~C~5Kc!bccll43-Gcr+IbHpWY|&$p6#4)KA;Lb)VFy z`xC$Vbp7gncJ=cA^nO-6clmq&t-RWo`>*cP^~59pr~F=a_p5&BKD{5(U+stbBp%n( zzUcl_z4CgWl=rGX<@Nqk|CQeTS9x7e{?rfoYhUia()&F~zuTwuzTXv3>hJoi{iJza zPy15dPxaI%m!9s~_bWa1+43hI@^_w9Kjfe0bv^B? zb#Ln5`6+M8BY*F+#lPaA{d!*U?CPl>$}9b@zj*u}$Y1(hfANri+K=z|sz33#zw(lv z_+7ucAJ?mY_ouw6zx2C#rFS0cXQki0ANjZRo>zUQ{>xK?|S;4h==sfqkWM+<#GQNkNb}%Td3B$=_ps8p{CD@Y;%VK_Za=hN?aO(@PkBGpw|MA&$X|Nm_dccf`?=~* zeY!vOPdubw?bq{4PducjKGVFr{?xztQy$l+{;59QSIeL7hy11Ye#GzllHTv)o>zL$D}T~cpTzU2KlLyEl*jd{f2voX)KAJoeY!v0&sBcEhtyws&%5g9 z)4VHx;_Yv`5=OrHTr~ah(dsAN0x9-RN)BBO$`Kcf2ouBfOp8T~h=b82wkKfOV-}U16e#l>X z%A5N8J;*=hA${t{^CjRv!$oJsXyJ1 z?@M`i_0+%ib(%l*`DtF=v-?w@(tAJDC+W#w{X5UJzj)I7oYE`rwEw5~qkZ{3sL#9n zckhSz)j#pOKjqc^yPo`|Py2NL70;AE^(mgId!F{EeNo<2FMhu_x`(U&)W6?P>c7&v z|0=KR$)EZmf9=ctNk8qM@~rf}-xa^>05bs_p5$Vz4NP2%6p1G?N|KN|1SSk|Floi zJ3sNH_ojY)zb$|9xWDex^Gfe|TYBXs|J{2K59ui{=~JFh{b|3gey;laJ&1?$lHU8A z<{|&9_q?0;lK~-+ z^Sk)dcVGQK>Gz`Fd*u#WcarX_^)C6O^A>;lZmPeFGkrJJr#+mezbo%u@3#6sjlac{ z`b_I-U+KFopS#{AewwG8sh-}Qo~N9tp7`(bN#A|-zy8;sv|pO1eUi`ge3~=$KTSW~ zf6G7Zjo$sLKGS*0|Fn5)zpY#?o|X^gn)au6(|L>YG#~0A<$SuHdT7nlep>I6Pm8DJ zGtEi<>AaQqE}z!BX>Y0it8#wTTZIBDMU zzsu*Ycd5_TJk52Qo_d((JndcLxodt`|7qT7&ZqmQeLh8>?uBxtKB=DGrTMh~UGKJX zwS1@tny2rkdU}`U)Bde@TbwN)%9YMjp40S{_vO6y-o5J?-%{&XlK>YuabpKkaQ=-^!bE zw%(ogA%B{;dLaMSyv5n_Nps!x?rEH957YYTe(vI*e)lwg+GEN|KJWa$e}A8PX!V@> zq_`=@zH-{L&Yhw{?=F8=i0R8M(nKJ8EM()=_Y;!NkQT&Yj0zbjYzZmMtf z@N}ORf7*YlZ*itRsh)D3<}=Mn{-@1bdr5Pp@1}asz_VC*^PXr0=Hs z7H7-nG=9p}nx}cE^{rgwlk&HGTJN@a$Y*-q>Y?RBc~A3Cc~X6=hxFZ4-{L&Y=d>QE zpVqvUx5bnCwD?n>RG;Qb^(~&$e5i*OC;2~p-s+u|XgyXI*>PuHhCpO%;SQ_hx8`fjSfi<91c%KRxk-^EFLZ1FtZ zKkXsaKfNE~Z_Q8Z^Dds&yRE&DPm444IZfZ{XF3;g-Zh`joBB`p(BesbQa$z1@@e@$ zohRi__0;oMowxcq&F8D`tCj1neYM_AdzgNA+CR-p`WEMDK9rZ{ck!q1rh3Xt^J#y2 zm*%JO5NA4XgSmT0VFA z)4S=s)x*<$TKsAMslLT|nh*7ma;AEEm*y@1yL{4jzc>A9d!O$Aw7kSa^RyrGN$2Ui zss8Ca#Gm$%>Ra!UPiuZxuGYKXTMub(sXpy9^`F+K{4IT&i{4FrQa!!fnzwjTpJ_ey zlfK*XN#9NN#5p~0ai%`0{_Wwv|9_EbZ>Q;}_c-mJ_SxcTy?dGu_0!@c|8$=6q)$v>Un#q*SRTbwPQbibrec~U*Sd)K_hpZZMesn7IX^7*RsRzEEt>Ur9q z-fhiO{!~w#EuWTu$}_FMD;K@nny0L>L{_4F>yTmCH{;-vXq z?-I{l^V51rc~X6==cm7W7eDo%@}zotH=RG_-IO!cr@fKB^=`|DIB9;@yTn8Dlyh27 zoHU>2dAk2yz0tcg|EfJx-qt+rt@SSXq&%nTDHqM3&QH10`E(B{&$K?xOFXI1w7$jJ z@=5cy-X)*bJk6ErTbwPQ7JurK>hH>X7boRSc~X7rUGkxMiYA}Q=gRc zH2wFMH|?MLNqtg1y-V|!f6IqBX@1wc#BPxq4QpPu*W{OP`?_0(tjZp$ZqH`U+8N$=A9u3W_P&VTsv zr$7GuORI<0ep@``lX6b$Tb$%W^XXjE{!hu(;+*y&|EJH>JEXiVpS%3&-PSzqC)E>Y z%ctd^@=WXR%0=(C=4o%OcT=B~^ECbUmN)I6`bm9KJ-tiwmVe8KIB9;@yTo(Xyw$^L zKGbK6ll;?pi>Kvt7k~QhY5G?Gsn65(w8!aOPk)#AzqfgMC#`<&dbh=&`lNZM^Y6+DrN_`OrM|PxbU}Yo79aZ~9ixEuYi+r(7u~`MmT0{{79g&s0x6r#`8k-c9Gz z?@s%tc}bsgo~EZ<)AO{4r|`6L-Q{!FyQl59)x&fy@^A5{KHr<3`af+xy%)-xzT5I? zy?YnWG(Y7^=P75ZPkE;GE&kMJT2H;D@3wsIdYAZH^E6kgZ*jJKTKuU`s=q7mU7VCR zS^y!nWuTD_0(JX?zGQc{`4-*TfLEgYo2mW>+i}% z@1}Xl=bc~s>+`h#)AX&qr@7L1r~OkN(%;3IzMJY#%iH2<^*}t+^A>;VGp(oI(sx@v zcfCvet$CU&)weiXJ}v&#=QMrVXUcz?|5JFrx1Q6zOzYGBQ$6vwd|Lirm1jEFUHzxI zQhh5|%O~Ye^)1epPm7;;rspYts-Nah{agI0&$OO;n0`0)Cr+AA`_sELPkB;(>s|6` z&F{+9dY5{b_NRB#d5iPuJ}v&V|5V@NOnpw%Q*TevWXx`!5L%O}lC@1{PfzV$Bo z&^+Z#_4F>yQ~y*?@22zCyDguTzok$4r}dO8eYfRv*So~uny0x^eT%c@)8bEkPSdA- zru?V*KZWOe>p9)av_9=W)f0cqr{(`ud8TvS)qk2R)wgoBd{X{Y-{NffwD^f336q;-vYsKfO!ylqc1<-X)*b{H|QBcd3VIe|k5aw>Y2f)8bG2 zPxUR%)aNuk_4X7_;&08TduVaCeA2x1Zt9cjTknz&%~Q@)Pw&z^^-uM8y_<5TddhX$ zJk2$&r+(6RTRu;Dx5Y`lrSsExh`+`8`uyRKfByL|zob2+`qmy>?-EZsPkB;(%9H9_ zJT0HQ_|tb&{d7O6|FnL(pS$>{-#yKr_Ly=```qPE@7^_U?Iq<;-%a(zbC*y0ZmK^m zFY!#z@9OQYcd5^mC)Ky!ZTY19slLTI?L+>p`CYxG@22{+pQrer#+mY@dfH>^bDExV zJ!O7cpVK_Fm-OA1&t31{#sBoY)Z6s@uHMpjQ+?XoQ~X<;sZXk(?my)@O`rC2nm+Bb z#ov0j<OP|(TdRNnW>gTR^iD!DA<|Urfd|I5XT*PzNyp^lvGu^{9XUqRC zpS#|ry{A0W`WEN35Bay|Y0va-%jYhCdN-Z7dU(1|i$Co@)weiPpHxq|?((_o-Bu4N zf2wbBPWzC5YkpU6>AR^u?dK`}r*Wn{sh;+j`lR~SyX5n|&F|{J_3ml=dUO5vp9e|z z@>P4I9@4zi`W9!)C(YY>mwcw@t-RBmf*0-r{WeP~Ox0r+J>z!(E*8Zfich-z!(E*8Zfich-AR_( z-lciVzvV-mG{5Uz;-Ptqv*kmaG{5Uz;-UF8XX-z#rygiN&6D~+g)_~S>RUaud`{!1 zT&;PUH`TW|Q=b-R>hrzn)4e=hKfPb-Cw-TEXrB6~dU}`UssCyER<3Cu@^8)4y`=B9 z{O|I4%DXMjyY`#D+tRmsdwt&jzo(!7^wW<&{N}&^K03P3)9!>g)A`eLwfNKCQvEb% z>OZZY?&mK4>32`_r#+^eTddw4V5<-%b5noKNwY=4|=5_DDR_^QZ7n zb58rGdrWzz^~68@Zt72*>HMyDQ_fVM=9<c6+&SDN>@2O*vaWt#?~I_H!ElG!ON2*SjsAr}#{BlK<1^>3!an zcbaqBKkY5$nbs5k^t-8li}NWy)0{2;)*gvxdj1stY0hc?bdM>|w4V5<-%b6AGo9b{ zZpxYJ(_GVf;!octpVQ`Pu4z5>lfK*XdCI#j&Q@>abK1Ps+w1fGd9DBX=e1h*K);u1 ze|neZEuNMSank&*cZrAQ)10aQw4QpP`7}@J{}j$NSE_IIKtAcb#h<==n!eS;T|Rfc zd)FSnYTmnYwce$BnD(c4pE6JT`QG%j$Fzr*PwU+l5BWT0p7xpQ(;ia))AW=#cPMfE> zruEcM`fkhTDety8TfI&Dkbi65>htw^|Gd`3pVvz7D%H1sN95DuY55Q*&F^}bcxXP& znfg!bsRx=*^Q8Vy;Y@R-`c@C*lg?ZG>AR=tTRq(6bJx3f?Xi{j>HKLAsXpyz+CSwv zO`rDjz3FLRX%8)**1Ihp@_EWU?K9P3Q12Y5KIE)A*-( zsGqyuZSg$CXPT4zpFU6T^RB$poYVekZz<2Tp7^KVP5oP(Pw|=NZ27nLNIcW?r|?g6 zPWz{OOnIjD#6SIR>Q9{M{H}LX&Qzb~n${D4`Y!pLHcxX+>#3jg-ImW&-feN7)*JCm z&s%-IKJTB``sB}RopwL1-`!JkwK%D_)IZhJyEISzpRT{F2YPpUp6)BKv7oHW1dUE-nn zG-v8Rt*0JnKFyQ*KZP^RmFinPkk32+;m4o;`13Dm53N1YyQzPwr+3qN`tG!z`0sj` zc&6uRUgAl8Qhn>)md{=M>AR`^u72*~q`a;9X}MZFU$q~~bysicyVLsVexAbra{l-4 zOVT~uHBa|KoTvE^XF7jMt`_Ih`)T!%`b_I-FYmkm{Kwz__Sawj^7Ehn^oO5*|Ksm| z`0a0g`@`>k{QXbY{u~JP+?uERqIX}P?targr}eG9r<|>K$!B{0^t>(p(|S&GP3zNs zrg={Dr+%h6>0O$qJkvhpPxBW4Q~cAsseZbL(|B5W(_E>ZIMaFhZmK7qmJj)-^A=Cb zhxn)cr{8VypXT$F-iWg`Pxq4QTb$(6;%WIzbCN&J(_GW~7U#6jwEt6jPC2K0yUU;6 zP3NsX>D_7n*1IX^wEnJK^lodO_SSkg^+`ET(|>Py)BdTS)F;)`yEJe4w|t0`=1+O| zF3#!RTDe+2(|O7Nw0Wz~(|oAs7H7*p=BMR)I?rAF>AR_(?k)A1*0(sxr!`M|pm$I6A3&kq zR8RbO`8?&_?~Rl0WO{yA&y=ghL;mT!#nbX3{%QZ|cU$}|AIkgA|NFo5w|Z{*&|Xsi zR8Q}w^QXLrWA{}fK@f#$7TEg#}c=P%E-?|Ir=s!#Wr>R+B~drx~N{b~IZ zXKSA3P4y{f>VKM^@}`_EpVqrA9`c!(2yd}yBf zzxr?U@7qj!Zta(RXx`!^|I_BD;LP2 z9Ws4yE&p_n^zPH=X%DCAssCwCdiR}o|2eF;&$rK?|Mb(3Km6w29@6g#-R)gIcfCtJ zr1KX4^t&l%swe)I5BX2eQ~p#x&7b;D^QZpP`m`U?e^t&_-f5q^{OR54d3tZellr9k zr@wm_f2(KWr}sck#D+Zt;`PUGr8ysZXkJ^^?Av>WT9%pY+{SPkCuR?N9Hv z<}LozC)HEl(|o2m$^Yr|)Arcnp}nO3ss8Ej-o@YQ`7VBXcY5CHE%izDtsc^MQ$2Cs z<&(af>M1YHQ~y*??@rHKoT*Q$ryfr8ndT(_r_WE@V~dCOlKQ9mr@wm_|6M&(-qYrH z_0xJc?K6Eh)f3NMKIyxuemXDt-!*@FKPi8zZ|!CJ-D&@{hm7L1dnm_eV^^}X|ssFV8DV)yKzmJjvwbpPpGt$tcQl(#i+akhLYSIa;3N%hnG zB#Yz4&pMH1RpK{SW6sz2pQ=cnyGGxeX= z-^HK4o9ffvPV-NBruEck`tG#PSM|Ru7ron>r}vZUiL>QH{^>mBN%h3j@*)3pp7Nx6 z;%WJie>zWjQa$mse8~SP^HvXc`K0frdfH>lr{$mWOzT^@UY}q8bJWxi&F|Vf@z6Zw zB%gGC*So}d8V_;Oyv3jTq;0XS#=J z&eT8ExB9v3-ITw@d6!S?UFz-W{*0&Q{)*5A~D!r+Rvq=F|T4ZfpJ&{?j;9 zo>Wi!ZTXOYI!}30J@Gu<=Pv%c-laX#Jms9$6DQ46o|aGgZmMr_PW!a{(|)G)tz4)1 zq`eV8&0qf?e*Ec=KmRh_1NBeylqc1<-X))O{uKVZI9uRbGG zz1!j^pXvEsy`}G_dg|?~`b_72ihsJ_X+8Bu^OUFM(|VV9()npTr}3x#oTjHfQ_g9h zyZldkmw3|oUHkps-ksjdU42rnyLi%fQ~haqiD!ELz4eynP4%>|uj)g2Y2NCA{Au2L z_pAC$_eTCSPka8}^wb;8(|*Y3o&Wdm`=mYG)&Ez0H_dgL{wep9a*{snzva_tUL6+W)jZPvfEf(|MXJ)f3NG^`X2pZ}sqW z|I>O%d8YMG+3#IFO!t%KA|9Hj{;8hcrFrWAz3Hhpny3Ac&pW^N_YGUUwf5NZps{L8v_HMunz#5*^GW+@@zcB0{`4-*@8W5_ z+wwWBAL2>p)BQ~IwD?;-lsEN1P2b8zKIuH|C-o=&)8C!uZ~3P_(|Wpxbe?ji{&(r0 zp6f3D^xagS-ovzi%0v1VXUk`rbK3v39;SJo(r2rOuj(_s$GiNe-)-H)G$;8_&!65; zi~lqq+Iz~G>gipYPy5rmt@$*6>OZYddrNty{ZpQ4J>^Z`eTolpPS4XmQ$6vwe8@kY zw|H7Uck!q1PV4XL^UZbb&;7pp`okap{PSOanZBQv|GTd<_w|&$v^ZNn^t(v?r}e~{ z&Qs3Re_B7ypZcGsr~XsUX&>@$%}>kQ;z|3Ne)lQj|{+3VLKj~XMEg#}+%~Q@)Pn<0u@=xb2o|X^sPy5rmG*5X_ed}HFp?S)A zn!c5beA0Q^PwG$lr@uSRpZZVhzv><-*In~;k9Tp>yDk3Hd?+u?Tl{zV)4MdE&O80? zH2<_e_0yW4#-H+}dg`s^)ACPwruD5{3J(Jai;#K>07y` zeOmr$|E+h)C!L?h-{QHehxA?2-_-;0r1NS1)c-U+^_g;#PdZQEP4y`c>F;`%c;5M$ z|9^SuUQWBKlqc0wKP{h@f66nhZ{;E%n%|X+cxaw-k`K*O|I_rXT+=>J_fPjud1;>d zr+Rv~HBWg`J#n^t$UmL8cv?Pp@u%-j>+kCG&Gr6s-#`E9ryqa#&DZ$vHFVGK@9X>g z=f2aupQfL_=QQuj^Ur_${cnH$iN>GwbW?uXz0=C?om?#JK%^y|N`R?pOb zIzNr)H2$=o)AZD5%1J)yJbgFSr#z&;>s{hW=TG6E=A8CV_mb*c{4F2iPyJJU>s|6m z=cn<1Ri1P&q;K^@{?qem{?z|8J@ub*l21BM-%a%?59#lEmw4WJ_kVv&_dBg`?KkCY zy*usm^jvrGKmFYn|LgPX|NGn1f4}K|Q+=zS>35&vKh2r$E9FV`#MAO2|JJ<4`Bi<= zo?AWK^=^y*G#~0Sd*)c@(OpI9on+C#ip`r+3r&^t-8ls!#Khe)`?i|1|w{Z)x5ZPx@}EZ*h`O zIzNrS#dB8=>AR$F^^p2Z>nZQ_{H|Q-yQlR)Jg4Pqakg@`d?;5sZ}GHzh`;6E@|otG z_HXs@Ref6hxB4L-nm_&B7XN8Jt$np}-Nn=5Z~0IUG{5Uz;z{Q%{?sScKPA^RXWHAe zp7N&ees4b0dC7lz-r75HPW#ilG(U}JnzNPnE}z!B(>;?v&0D!zKGU4!|IWY9KNm55 zx2?Nsaeh^wwCA^n?mu7l_W$eO&-C6>J@x-peJF2h{`S`WKD7Fz{ign@p5CQ-%Rlv* z)>Gbeo^q!Ccj=#=>nZ##&X!MlZ|S?Kewv5;TbwN);-vZ0-)-@q=JQqeMY*Qut^KB) zt#?oJNqb23Uo~%D}phtGAXp#J|EfNew>5uz>;C=d)?QjZt^Kxm$Y+{! z+MjZ@=BM$eJgJ^~Yx%VNr+HeOug|sr|0(K?=B;~Z`AlZj$?%A4|}dg4syt#?zOX?@y5OMh3c^xalo@@et3e2B9(PdQUPakhNO zKb^ODT0X=-?N9I0JmpFCt#`?X<|${Yr+3qN>)qF<`{$Tv6J#nV0O$i#xu>?%6pm*^_I?CxzcxA`WAoclj_sFE&rAe@u&W$ z>07zJH=pUeKvt7k~QhwEnI> z-(2sXU;6n^KmGW_Z|?p7Wqa@N`@F-}cdzC1^gB#@NcF9L?s_-nZ*jJKQhw5>JgL6* zF8QSMr|{p!nZBFq(|wWtu6K#2HGg`pr|?g6PW!j+E%j;Ty342aF7-C;Pw%$o)BI2I zKaDfxN%iUdO#2hhSABOnSIfWUL;FqVDNm{=o|X^!x8^O*uj-Tb-0I=3cU%0Y`B0xJ zXR4=nX+G^w@3!VG{?mNYep>wW?zBI>OY_rsra4=APxGPP(s?Ua`ff|#;!k~2eVVuB z-|`{;)c-VnE7$ktLwVEr^gR$y`Y!pj<}IF((|K>XL-;+aoeE0S4>wo_F zH@cJQ`P1)knt$3q-S25U#NXn4x=)LLx@YpIc`H}TXPT4zr{~lCwD_kvr~O+!kk4uS zDNm}utA~{HH2rjMXGD$~EnCm;dy;Pq_!`f#zv0@;Pn( z^jt0e)F;)advE!-e272wKTY4t^}YE}-gG{F55$wcOFpf6i>Kw2=DO?Mlrz=8x!ynL z@cuc6|NQ%3|M=T46Ft1YuQPvN(|bw%r}asy@DJ}v*WPkNW;)Bf~sYu@5N%_r@r#ZT|1{-^0F z7tK?C^0{l?;=ju$eK*z9URpj+_dl(Nlqc2GzS4Q?-PC7VpY}ldl#_f;n?F5Qi~lsA z^iEp*^zO7jy-V}Ecv|nae5jvvp7Nx6;%WJie>!jRw0!R3Pv4!^-__@v>-+rwE1|u= zcX;OC|NW}_YTaAQhk91i)1C;6oF^xagS@{smI(UPwNg_{j_+<=dStF`)To?=0o?8a;AEEm*&&{^locD z&7b;D>(ky+o@xJ-XIf8r(|4cZL!8s|w9iye{4F2yPvATbVyZU@{y?@^6 zfBt(j-aG96_w@Jo_3OW{*1ffSXkSnFpU&0lr{&YiJI&MLB%gHN%KQ5K_diEkJJr#w&bA}ae;Q}X zlj>V{b=SM6@lW@V`lov8v*knnG;h6onh)ho=V`7~PdqK3mVe4Kt#9QbADU0+O8tqG z=F|RP_1)>-QvXy>d!c#DKlPc`Q{Hr*a;E-w>7SnKF8=i0X+7Of`Y!p!jR zw0u(j?@gcfoa(91(|m}tHE-o5o@sx2w>59^w|rW;$fw2G@|os*ihtVYw4QpSdCEgR zcg^qOPv4!^Q~&9^tULc{HN!q^_=od>#6_rUGky% zQ~X<;r}@xcXx`$#%b(s&=hHo;JgNRE{L`G%{^?#)eT)AzpYN@QwEt93eYSj_?%(R6 z<@ zKS6X?>3yd9*1P0G^A;!h-!*@8eVgw?YrpTl-hKVgf3JS)u2P?;-(ibC^-1-2?d3Gi zlxJE`dr9B@-h8I>lK=F)wRhr7{ZG@ka*+?spVC8%pL}RO-4DH+&QnhEPkmB7y-V|_ z`%|vg{Cn$XI`3(FY304kr}ZxFW!iuG-D&=5f9hv?p5{vR#Gm@4dU`jVr|+ivlxJH1 z^8fe$?{B(?)IZhJowR(&pXRN1PxGO?={(Jq>WQc2)ACPwruD5{WQc2 zL;g>hw|Z##O!wB}Z23^$r~6OmYV~uPPph}na!-y-K6lNh_tnbP;%xa)uGD{8 zPni;yK zw4W9~y_@=&Auw8z%Fr}PvcK{QvGxfEuLx4yZq_hbl&Q@<&*N0KIKXEt#`?X=67-4^)B^5 z^A_i{|7n~lPpYRrX+G`WdN<`v^~6c@X@7e6o&WdGrMG%$?Xl&P=DO?Mlrz=8x!!;8 z%KPtK`Om-q^^d>(GSS2P`+9$06Lsz_VC!MExQ-9Jw{oNLS%ZGYS=hHkb|CSH+^K}2|T&;duK9sjLZ*jJK zC|Aor^-1;9{Nzvb)A�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 literal 0 HcmV?d00001 diff --git a/codebreaker.8k.mon b/codebreaker.8k.mon new file mode 100644 index 0000000..b202266 --- /dev/null +++ b/codebreaker.8k.mon @@ -0,0 +1,194 @@ +0280: A2 FF 9A 20 8C 02 20 F0 10 4C 1A FF 20 9E 02 A9 00 85 20 A9 F0 85 21 58 20 C1 02 4C D9 10 A9 B8 +02A0: 85 28 A9 1A 85 29 A9 00 A8 A2 00 F0 0A 91 28 C8 D0 FB E6 29 CA D0 F6 C0 63 F0 05 91 28 C8 D0 F7 +02C0: 60 A0 00 F0 07 A9 CE A2 02 4C 93 1A 60 00 A0 02 B9 51 1A 99 BD 1A 88 10 F7 A9 2B A2 1A 20 4A 15 +02E0: A0 00 B1 20 A8 B9 BD 1A 20 94 10 A9 00 8D BC 1A AD BC 1A 20 52 14 AD B9 1A 0A 90 02 A2 01 20 56 +0300: 11 20 2A 11 B0 0B A9 2D 20 94 10 EE BC 1A 4C F0 02 A0 00 B1 20 A8 B9 BD 1A 20 94 10 A9 0D 20 94 +0320: 10 4C 5D 11 A9 19 8D C0 1A CE C0 1A AE C0 1A F0 08 A9 0D 20 94 10 4C 29 03 60 A9 08 8D C1 1A A0 +0340: 05 20 17 12 20 A1 12 A2 00 86 22 86 23 8A 20 95 12 F0 43 CE C1 1A AD C1 1A 18 69 C2 A8 A9 00 69 +0360: 1A AA 98 20 54 14 A0 07 20 17 12 20 A1 12 A2 00 A9 0A 20 33 13 A0 30 20 28 12 A0 00 20 97 14 A0 +0380: 05 20 17 12 20 A1 12 A2 00 A9 0A 20 B9 12 A0 02 20 CA 14 4C 3F 03 A0 01 B1 20 F0 42 AD C1 1A F0 +03A0: 1A CE C1 1A AD C1 1A 18 69 C2 85 28 A9 00 69 1A 85 29 A0 00 B1 20 91 28 4C 9C 03 A9 08 38 A0 01 +03C0: F1 20 8D C1 1A AD C1 1A C9 08 90 03 4C 7F 11 AC C1 1A B9 C2 1A 20 94 10 EE C1 1A 4C C5 03 AD C1 +03E0: 1A C9 08 90 03 4C 7F 11 AC C1 1A B9 C2 1A 20 94 10 EE C1 1A 4C DE 03 AD 77 1A AE 78 1A 20 4A 15 +0400: A9 00 8D 5E 10 AD 5E 10 C9 4E F0 0F AD 5E 10 C9 59 F0 08 A0 00 20 5F 10 4C 05 04 AD 5E 10 20 94 +0420: 10 AD 5E 10 C9 4E D0 01 60 20 24 03 AD B9 1A C9 05 D0 13 AD BB 1A D0 07 A9 2F A2 1A 4C 4A 04 A9 +0440: 33 A2 1A 4C 4A 04 A9 3A A2 1A 20 4A 15 A9 41 A2 1A 20 4A 15 AD BB 1A F0 03 4C F5 04 AD 79 1A AE +0460: 7A 1A 20 4A 15 A2 00 AD B9 1A 20 B5 10 20 C7 10 20 A1 12 A9 00 20 3E 14 A9 30 20 3E 14 20 3A 03 +0480: AD 7B 1A AE 7C 1A 20 4A 15 A2 00 AD B8 1A 20 B5 10 20 C7 10 20 A1 12 A9 00 20 3E 14 A9 30 20 3E +04A0: 14 20 3A 03 AD 7D 1A AE 7E 1A 20 4A 15 A2 00 AD BA 1A 20 B5 10 20 C7 10 20 A1 12 A9 00 20 3E 14 +04C0: A9 30 20 3E 14 20 3A 03 AD 7F 1A AE 80 1A 20 4A 15 A2 00 AD B9 1A 20 B5 10 20 C7 10 20 A1 12 A9 +04E0: 00 20 3E 14 A9 30 20 3E 14 20 3A 03 AD 81 1A AE 82 1A 4C FB 04 AD 83 1A AE 84 1A 20 4A 15 AD 85 +0500: 1A AE 86 1A 20 4A 15 A0 00 4C 5F 10 AD 92 1A 85 23 AD 91 1A 85 22 AE 90 1A AD 8F 1A 20 A1 12 A2 +0520: 4E A9 C6 85 22 A9 41 85 23 A9 6D 20 3F 12 20 A1 12 A2 30 A9 00 A9 39 20 84 11 8D 8F 1A 8E 90 1A +0540: A4 22 8C 91 1A A4 23 8C 92 1A AD 92 1A 85 23 AD 91 1A 85 22 A0 00 A6 23 A5 22 84 23 84 22 20 C7 +0560: 10 20 A1 12 A2 7F A9 00 85 22 85 23 A9 FF 4C AF 11 A0 07 B9 54 1A 99 D9 1A 88 10 F7 A0 0F B9 5C +0580: 1A 99 E1 1A 88 10 F7 A0 05 B9 6C 1A 99 F1 1A 88 10 F7 A9 00 8D F7 1A AD F7 1A C9 03 B0 6A A2 00 +05A0: AD F7 1A 0A 90 02 E8 18 69 FF A8 8A 69 1A AA 98 20 54 14 A2 00 AD F7 1A 0A 90 02 E8 18 69 05 A8 +05C0: 8A 69 1B AA 98 20 54 14 A2 00 AD F7 1A 0A 90 02 E8 18 69 0B A8 8A 69 1B AA 98 20 54 14 A2 00 AD +05E0: F7 1A 0A 90 02 E8 18 69 11 A8 8A 69 1B AA 98 20 54 14 A2 00 8A A8 20 AD 14 20 AD 14 20 AD 14 20 +0600: AD 14 EE F7 1A 4C 97 05 A0 00 20 24 03 AD 73 1A AE 74 1A 20 4A 15 A9 00 8D BB 1A A9 08 8D B8 1A +0620: A9 05 8D B9 1A A9 0C 8D BA 1A A9 01 8D FC 1A AD 75 1A AE 76 1A 20 4A 15 A9 00 8D 5E 10 AD 5E 10 +0640: C9 4E F0 16 AD 5E 10 C9 50 F0 0F AD 5E 10 C9 4D F0 08 A0 00 20 5F 10 4C 3D 06 AD 5E 10 20 94 10 +0660: A9 2D A2 19 20 4A 15 AD 5E 10 C9 4E D0 14 A9 06 8D B8 1A A9 04 8D B9 1A A9 0A 8D BA 1A A9 00 8D +0680: FC 1A AD 5E 10 C9 4D D0 0A A9 01 8D BB 1A A9 02 8D FC 1A A0 00 20 F7 03 A0 00 20 24 03 A2 02 A9 +06A0: 58 8D FD 1A 8E FE 1A AD 5D 10 85 23 AD 5C 10 85 22 AE 5B 10 AD 5A 10 20 A1 12 A2 FF 8A 20 A9 11 +06C0: 8D 8F 1A 8E 90 1A A4 22 8C 91 1A A4 23 8C 92 1A A9 00 8D F7 1A AD F7 1A CD B9 1A B0 27 A9 CA A2 +06E0: 1A 18 6D F7 1A 90 01 E8 20 54 14 A0 00 20 0C 05 20 54 14 AD B8 1A 20 2C 15 A0 00 20 97 14 EE F7 +0700: 1A 4C D5 06 A0 00 20 24 03 AD 87 1A AE 88 1A 20 4A 15 AD B9 1A C9 05 D0 32 A9 00 8D F7 1A A2 00 +0720: AD F7 1A CD B8 1A B0 1C AD F7 1A 0A 90 02 E8 18 69 E1 A8 8A 69 1A AA 98 20 08 12 20 4A 15 EE F7 +0740: 1A 4C 1E 07 A9 30 A2 19 4C BC 07 A9 32 A2 19 20 4A 15 A9 00 8D F7 1A AD F7 1A 20 52 14 AD B8 1A +0760: 4A 20 28 11 B0 1E A2 00 AD F7 1A 0A 90 02 E8 18 69 E1 A8 8A 69 1A AA 98 20 08 12 20 4A 15 EE F7 +0780: 1A 4C 57 07 A9 38 A2 19 20 4A 15 AD B8 1A 4A 8D F7 1A A2 00 AD F7 1A CD B8 1A B0 1C AD F7 1A 0A +07A0: 90 02 E8 18 69 E1 A8 8A 69 1A AA 98 20 08 12 20 4A 15 EE F7 1A 4C 92 07 A9 3F A2 19 20 4A 15 A9 +07C0: 00 20 3E 14 20 CE 02 A9 42 A2 19 20 4A 15 A9 00 8D F7 1A CD B9 1A B0 13 A9 58 20 94 10 A9 20 20 +07E0: 94 10 AD F7 1A 18 69 01 4C D0 07 A9 48 A2 19 20 4A 15 AD B9 1A C9 05 D0 07 A9 4F A2 19 20 4A 15 +0800: AD BB 1A F0 07 A9 51 A2 19 20 4A 15 A9 5F A2 19 20 4A 15 A9 01 20 3E 14 20 CE 02 A9 01 8D F7 1A +0820: AD F7 1A 38 ED BA 1A 85 30 90 05 F0 03 4C 67 0B A9 00 8D F8 1A AD F8 1A 20 52 14 AD B9 1A 20 28 +0840: 11 B0 0E AC F8 1A A9 00 99 CF 1A EE F8 1A 4C 35 08 A9 00 8D FB 1A 8D FA 1A AA AD F7 1A 20 B5 10 +0860: 20 C7 10 20 A1 12 A9 02 20 3E 14 A9 20 20 3E 14 20 3A 03 A9 61 A2 19 20 4A 15 AD F7 1A C9 01 D0 +0880: 0E A9 00 8D 5A 10 8D 5B 10 8D 5C 10 8D 5D 10 A9 00 8D F8 1A AD F8 1A CD B9 1A 90 03 4C 6E 09 A0 +08A0: 00 20 5F 10 AD BB 1A F0 5C AD 5D 10 85 23 AD 5C 10 85 22 AE 5B 10 AD 5A 10 20 A1 12 A2 00 A9 3B +08C0: 20 39 12 20 A1 12 A2 76 A9 01 85 22 A9 00 85 23 A9 EB 20 BF 12 49 FF 38 6D FD 1A 8D FD 1A 8A 49 +08E0: FF 6D FE 1A 8D FE 1A A9 00 8D 5A 10 8D 5B 10 8D 5C 10 8D 5D 10 AE FE 1A E0 80 90 09 8D FD 1A 8D +0900: FE 1A 4C 6E 09 8D F9 1A AD F9 1A CD B8 1A B0 11 AC F9 1A B9 D9 1A CD 5E 10 F0 06 EE F9 1A 4C 08 +0920: 09 AD B8 1A CD F9 1A D0 0C AD F8 1A 38 E9 01 8D F8 1A 4C 68 09 AC F9 1A B9 D9 1A 20 94 10 A9 20 +0940: 20 94 10 AC F8 1A B9 CA 1A CD F9 1A D0 11 AD FA 1A 18 69 01 8D FA 1A AC F8 1A A9 01 99 CF 1A AC +0960: F8 1A AD F9 1A 99 D4 1A EE F8 1A 4C 94 08 AD F8 1A CD B9 1A B0 15 A9 65 A2 19 20 4A 15 AC F8 1A +0980: A9 09 99 D4 1A EE F8 1A 4C 6E 09 A9 68 A2 19 20 4A 15 A9 00 8D F8 1A A2 00 AD F8 1A CD B9 1A B0 +09A0: 64 AC F8 1A B9 D4 1A 85 28 86 29 AC F8 1A B9 CA 1A E4 29 D0 04 C5 28 F0 46 8E F9 1A AD F9 1A CD +09C0: B9 1A 8A E9 00 B0 38 AC F8 1A B9 D4 1A 85 28 AC F9 1A B9 CA 1A E4 29 D0 20 C5 28 D0 1C AC F9 1A +09E0: B9 CF 1A D0 14 AD FB 1A 18 69 01 8D FB 1A AC F9 1A A9 01 99 CF 1A 4C FF 09 EE F9 1A 4C BC 09 EE +0A00: F8 1A 4C 97 09 8E F8 1A AD F8 1A CD FA 1A B0 0B A9 2A 20 94 10 EE F8 1A 4C 08 0A A9 00 8D F8 1A +0A20: AD F8 1A 20 52 14 AD B9 1A 38 ED FA 1A 38 ED FB 1A 20 28 11 B0 0B A9 20 20 94 10 EE F8 1A 4C 20 +0A40: 0A A9 00 8D F8 1A AD F8 1A CD FB 1A B0 0B A9 2B 20 94 10 EE F8 1A 4C 46 0A AD BB 1A F0 48 A9 6B +0A60: A2 19 20 4A 15 AD FD 1A AE FE 1A 20 54 14 A9 0A 20 10 11 20 CE 10 20 A1 12 A9 02 20 3E 14 A9 30 +0A80: 20 3E 14 20 3A 03 A9 2E 20 94 10 AD FD 1A AE FE 1A 20 54 14 A2 00 A9 0A 20 7D 13 20 CE 10 20 A1 +0AA0: 12 A9 01 4C 41 0B AD B9 1A C9 04 D0 07 A9 75 A2 19 20 4A 15 A9 78 A2 19 20 4A 15 AD 5D 10 85 23 +0AC0: AD 5C 10 85 22 AE 5B 10 AD 5A 10 20 A1 12 A2 00 A9 3B 20 39 12 20 A1 12 A2 A5 A9 0E 85 22 A9 00 +0AE0: 85 23 A9 2E 20 BF 12 20 A1 12 A2 00 A9 3C 20 B9 12 20 A1 12 A9 02 20 3E 14 A9 30 20 3E 14 20 3A +0B00: 03 A9 3A 20 94 10 AD 5D 10 85 23 AD 5C 10 85 22 AE 5B 10 AD 5A 10 20 A1 12 A2 00 A9 3B 20 39 12 +0B20: 20 A1 12 A2 A5 A9 0E 85 22 A9 00 85 23 A9 2E 20 BF 12 20 A1 12 A2 00 A9 3C 20 33 13 20 A1 12 A9 +0B40: 02 20 3E 14 A9 30 20 3E 14 20 3A 03 A9 0D 20 94 10 AD B9 1A CD FA 1A F0 0E AD FD 1A 0D FE 1A F0 +0B60: 06 EE F7 1A 4C 20 08 A9 01 20 3E 14 20 CE 02 A9 81 A2 19 20 4A 15 A9 00 8D F7 1A CD B9 1A B0 24 +0B80: AC F7 1A B9 CA 1A 85 28 A9 00 18 69 1A 85 29 A0 D9 B1 28 20 94 10 A9 20 20 94 10 AD F7 1A 18 69 +0BA0: 01 4C 78 0B A9 21 20 94 10 AD B9 1A C9 04 D0 07 A9 87 A2 19 20 4A 15 AD B9 1A CD FA 1A F0 03 4C +0BC0: 3F 0D AD 89 1A AE 8A 1A 20 4A 15 AD FC 1A C9 02 D0 12 A9 58 38 ED FD 1A 8D FD 1A A9 02 ED FE 1A +0BE0: AA 4C 13 0C AD 5D 10 85 23 AD 5C 10 85 22 AE 5B 10 AD 5A 10 20 A1 12 A2 00 A9 3B 20 39 12 20 A1 +0C00: 12 A2 A5 A9 0E 85 22 A9 00 85 23 A9 2E 20 BF 12 8D FD 1A 8E FE 1A A2 00 AD FC 1A 0A 90 02 E8 18 +0C20: 69 FF A8 8A 69 1A AA 98 20 54 14 20 08 12 20 56 11 A0 00 20 AD 14 A2 00 AD FC 1A 0A 90 02 E8 18 +0C40: 69 FF A8 8A 69 1A AA 98 20 08 12 E0 00 D0 3A C9 01 D0 36 AD FC 1A 0A 90 02 E8 18 69 0B A8 8A 69 +0C60: 1B AA 98 20 54 14 A2 00 AD FC 1A 0A 90 02 E8 18 69 11 A8 8A 69 1B AA 98 20 54 14 AD FD 1A AE FE +0C80: 1A A0 00 20 AD 14 4C 65 0D A2 00 AD FC 1A 0A 90 02 E8 18 69 0B A8 8A 69 1B AA 98 20 54 14 A2 00 +0CA0: AD FC 1A 0A 90 02 E8 18 69 0B A8 8A 69 1B AA 98 20 6A 14 A2 00 AD FC 1A 0A 90 02 E8 18 69 FF A8 +0CC0: 8A 69 1A AA 98 20 08 12 20 FC 10 20 91 13 18 6D FD 1A 48 8A 6D FE 1A AA 68 20 54 14 A2 00 AD FC +0CE0: 1A 0A 90 02 E8 18 69 FF A8 8A 69 1A AA 98 20 08 12 20 DF 14 A0 00 20 AD 14 AD FD 1A AE FE 1A 20 +0D00: 54 14 A2 00 AD FC 1A 0A 90 02 E8 18 69 11 A8 8A 69 1B AA 98 20 08 12 20 2A 11 B0 4C A2 00 AD FC +0D20: 1A 0A 90 02 E8 18 69 11 85 28 8A 69 1B 85 29 AD FD 1A A0 00 91 28 C8 AD FE 1A 91 28 4C 68 0D AD +0D40: 8B 1A AE 8C 1A 20 4A 15 A2 00 AD FC 1A 0A 90 02 E8 18 69 05 A8 8A 69 1B AA 98 20 54 14 20 08 12 +0D60: 20 56 11 A0 00 20 AD 14 A9 02 20 3E 14 20 CE 02 A9 0D 20 94 10 AD 8D 1A AE 8E 1A 20 4A 15 A9 00 +0D80: 8D 5E 10 AD 5E 10 C9 4E F0 0F AD 5E 10 C9 59 F0 08 A0 00 20 5F 10 4C 83 0D AD 5E 10 20 94 10 A0 +0DA0: 00 20 24 03 AD 5E 10 C9 59 D0 03 4C 16 06 A9 89 A2 19 20 4A 15 A9 91 A2 19 20 4A 15 A9 BA A2 19 +0DC0: 20 4A 15 A9 00 8D F7 1A AD F7 1A C9 03 90 03 4C 4F 10 A2 00 AD F7 1A 0A 90 02 E8 18 69 FF A8 8A +0DE0: 69 1A AA 98 20 08 12 85 22 86 23 A2 00 AD F7 1A 0A 90 02 E8 18 69 05 A8 8A 69 1B AA 98 20 08 12 +0E00: 18 65 22 48 8A 65 23 AA 68 E0 00 D0 07 C9 00 D0 03 4C 49 10 A2 00 AD F7 1A 0A 90 02 E8 18 69 F1 +0E20: A8 8A 69 1A AA 98 20 08 12 20 4A 15 A9 E4 A2 19 20 4A 15 A2 00 AD F7 1A 0A 90 02 E8 18 69 FF A8 +0E40: 8A 69 1A AA 98 20 08 12 20 C7 10 20 A1 12 A9 04 20 3E 14 A9 20 20 3E 14 20 3A 03 A9 EA A2 19 20 +0E60: 4A 15 A2 00 AD F7 1A 0A 90 02 E8 18 69 05 A8 8A 69 1B AA 98 20 08 12 20 C7 10 20 A1 12 A9 04 20 +0E80: 3E 14 A9 20 20 3E 14 20 3A 03 A9 EF A2 19 20 4A 15 A2 00 AD F7 1A 0A 90 02 E8 18 69 0B A8 8A 69 +0EA0: 1B AA 98 20 08 12 E0 00 D0 0E C9 00 D0 0A A9 F4 A2 19 20 4A 15 4C 49 10 AD F7 1A C9 02 90 03 4C +0EC0: 7F 0F A2 00 AD F7 1A 0A 90 02 E8 18 69 0B A8 8A 69 1B AA 98 20 6A 14 A9 3C 20 DD 14 20 C7 10 20 +0EE0: A1 12 A9 02 20 3E 14 A9 30 20 3E 14 20 3A 03 A9 3A 20 94 10 A2 00 AD F7 1A 0A 90 02 E8 18 69 0B +0F00: A8 8A 69 1B AA 98 20 6A 14 A9 3C 20 2C 15 20 C7 10 20 A1 12 A9 02 20 3E 14 A9 30 20 3E 14 20 3A +0F20: 03 A9 02 A2 1A 20 4A 15 A2 00 AD F7 1A 0A 90 02 E8 18 69 11 A8 8A 69 1B AA 98 20 6A 14 A9 3C 20 +0F40: DD 14 20 C7 10 20 A1 12 A9 02 20 3E 14 A9 30 20 3E 14 20 3A 03 A9 3A 20 94 10 A2 00 AD F7 1A 0A +0F60: 90 02 E8 18 69 11 A8 8A 69 1B AA 98 20 6A 14 A9 3C 20 2C 15 20 C7 10 20 A1 12 A9 02 4C 3E 10 A9 +0F80: 20 20 94 10 A2 00 AD F7 1A 0A 90 02 E8 18 69 0B A8 8A 69 1B AA 98 20 6A 14 A9 0A 20 DD 14 20 C7 +0FA0: 10 20 A1 12 A9 02 20 3E 14 A9 20 20 3E 14 20 3A 03 A9 2E 20 94 10 A2 00 AD F7 1A 0A 90 02 E8 18 +0FC0: 69 0B A8 8A 69 1B AA 98 20 6A 14 A9 0A 20 2C 15 20 C7 10 20 A1 12 A9 01 20 3E 14 A9 30 20 3E 14 +0FE0: 20 3A 03 A9 06 A2 1A 20 4A 15 A2 00 AD F7 1A 0A 90 02 E8 18 69 11 A8 8A 69 1B AA 98 20 6A 14 A9 +1000: 0A 20 DD 14 20 C7 10 20 A1 12 A9 02 20 3E 14 A9 20 20 3E 14 20 3A 03 A9 2E 20 94 10 A2 00 AD F7 +1020: 1A 0A 90 02 E8 18 69 11 A8 8A 69 1B AA 98 20 6A 14 A9 0A 20 2C 15 20 C7 10 20 A1 12 A9 01 20 3E +1040: 14 A9 30 20 3E 14 20 3A 03 EE F7 1A 4C C8 0D A9 0B A2 1A 20 4A 15 A2 00 8A 60 00 00 00 00 00 AD +1060: 11 D0 30 27 18 A9 01 6D 5A 10 8D 5A 10 A9 00 2A 6D 5B 10 8D 5B 10 A9 00 2A 6D 5C 10 8D 5C 10 A9 +1080: 00 2A 6D 5D 10 8D 5D 10 18 90 D4 AD 10 D0 29 7F 8D 5E 10 60 4C EF FF 48 20 1E 14 20 A2 10 68 4C +10A0: EF FF 18 20 1E 14 60 C8 48 18 98 65 20 85 20 90 02 E6 21 68 60 A2 00 86 22 86 23 60 C9 80 90 F5 +10C0: A2 FF 86 22 86 23 60 A0 00 84 22 84 23 60 E0 80 90 F5 A0 FF 84 22 84 23 60 AD 17 1B AE 18 1B 20 +10E0: 54 14 AD 19 1B AE 1A 1B 20 54 14 A0 04 4C 71 05 A0 00 F0 07 A9 73 A2 1A 4C 93 1A 60 38 E9 01 B0 +1100: 01 CA 60 A5 20 38 E9 04 85 20 90 01 60 C6 21 60 A2 00 20 79 14 20 EE 14 A6 23 A5 30 45 31 10 05 +1120: A5 22 4C 10 14 A5 22 60 A2 00 85 22 86 23 A0 00 B1 20 AA E6 20 D0 02 E6 21 B1 20 E6 20 D0 02 E6 +1140: 21 38 E5 23 D0 09 E4 22 F0 04 69 FF 09 01 60 50 FD 49 FF 09 01 60 18 69 01 90 01 E8 60 E6 20 D0 +1160: 02 E6 21 60 A0 01 B1 20 AA 88 B1 20 E6 20 F0 05 E6 20 F0 03 60 E6 20 E6 21 60 A0 04 4C A8 10 A0 +1180: 06 4C A8 10 A0 00 84 22 84 23 18 A0 00 71 20 C8 85 30 8A 71 20 AA C8 A5 22 71 20 85 22 C8 A5 23 +11A0: 71 20 85 23 A5 30 4C A7 10 A0 00 84 22 84 23 A0 00 31 20 85 30 C8 8A 31 20 AA C8 A5 22 31 20 85 +11C0: 22 C8 A5 23 31 20 85 23 A5 30 4C A7 10 85 28 86 29 A0 03 B1 20 38 E5 23 D0 22 88 B1 20 C5 22 D0 +11E0: 0C 88 B1 20 C5 29 D0 05 88 B1 20 C5 28 08 20 7A 11 28 F0 04 B0 03 A9 FF 60 A9 01 60 50 04 49 FF +1200: 09 01 08 20 7A 11 28 60 A0 01 85 28 86 29 B1 28 AA 88 B1 28 60 A0 03 B1 20 85 23 88 B1 20 85 22 +1220: 88 B1 20 AA 88 B1 20 60 84 2E 18 65 2E 90 09 E8 D0 06 E6 22 D0 02 E6 23 60 A0 00 84 22 84 23 85 +1240: 28 86 29 A0 00 B1 20 85 2C C8 B1 20 85 2D C8 B1 20 85 2E C8 B1 20 85 2F 20 A7 10 A9 00 85 33 85 +1260: 32 85 31 A0 20 46 33 66 32 66 31 6A 66 23 66 22 66 29 66 28 90 17 18 65 2C 48 A5 2D 65 31 85 31 +1280: A5 2E 65 32 85 32 A5 2F 65 33 85 33 68 88 10 D5 A5 28 A6 29 60 20 CD 11 4C 4C 13 A0 00 84 22 84 +12A0: 23 48 20 03 11 A0 03 A5 23 91 20 88 A5 22 91 20 88 8A 91 20 88 68 91 20 60 A0 00 84 22 84 23 20 +12C0: CA 12 20 EE 12 A5 28 A6 29 60 85 2C 86 2D A5 22 85 2E A5 23 85 2F A0 00 B1 20 85 28 C8 B1 20 85 +12E0: 29 C8 B1 20 85 22 C8 B1 20 85 23 4C A7 10 A9 00 85 2B 85 32 85 33 A0 20 06 28 26 29 26 22 26 23 +1300: 2A 26 2B 26 32 26 33 48 C5 2C A5 2B E5 2D A5 32 E5 2E A5 33 E5 2F 90 14 85 33 68 E5 2C 48 A5 2B +1320: E5 2D 85 2B A5 32 E5 2E 85 32 E6 28 68 88 D0 C8 85 2A 60 A0 00 84 22 84 23 20 CA 12 20 EE 12 A5 +1340: 32 85 22 A5 33 85 23 A5 2A A6 2B 60 D0 2A A2 00 8A 60 F0 24 A2 00 8A 60 F0 1E 30 1C A2 00 8A 60 +1360: F0 02 10 14 A2 00 8A 60 F0 0E 90 0C A2 00 8A 60 F0 02 B0 04 A2 00 8A 60 A2 00 A9 01 60 A2 00 20 +1380: 79 14 20 EE 14 A5 28 A6 29 24 30 10 03 4C 10 14 60 85 2E 8A F0 2E 86 2F 20 2A 14 A9 00 A6 23 F0 +13A0: 26 85 30 A0 10 46 2F 66 2E 90 0A 18 65 22 48 8A 65 30 85 30 68 66 30 6A 66 2F 66 2E 88 D0 EA A5 +13C0: 2E A6 2F 60 4C D8 13 A4 22 A6 2E 86 22 A6 2F 84 2E A0 08 4C E3 13 85 2E 20 2A 14 A9 00 A0 08 A6 +13E0: 23 F0 1C 85 2F 46 2E 90 0A 18 65 22 48 8A 65 2F 85 2F 68 66 2F 6A 66 2E 88 D0 EC AA A5 2E 60 46 +1400: 2E 90 03 18 65 22 6A 66 2E 88 D0 F5 AA A5 2E 60 18 49 FF 69 01 48 8A 49 FF 69 00 AA 68 60 A0 00 +1420: B1 20 E6 20 F0 01 60 E6 21 60 48 A0 01 B1 20 85 23 88 B1 20 85 22 68 4C 6C 11 A0 00 B1 20 A4 20 +1440: F0 07 C6 20 A0 00 91 20 60 C6 21 C6 20 91 20 60 A9 00 A2 00 48 A5 20 38 E9 02 85 20 B0 02 C6 21 +1460: A0 01 8A 91 20 68 88 91 20 60 A0 01 85 28 86 29 B1 28 AA 88 B1 28 4C 54 14 86 31 E0 00 10 03 20 +1480: 10 14 85 2E 86 2F 20 64 11 86 30 E0 00 10 03 20 10 14 85 22 86 23 60 48 84 30 A0 01 B1 20 85 29 +14A0: 88 B1 20 85 28 A4 30 68 91 28 4C 6C 11 84 30 48 A0 01 B1 20 85 29 88 B1 20 85 28 A4 30 C8 8A 91 +14C0: 28 88 68 91 28 4C 6C 11 A0 00 91 20 C8 48 8A 91 20 C8 A5 22 91 20 C8 A5 23 91 20 68 60 A2 00 85 +14E0: 2E 86 2F 20 2A 14 20 EE 14 A5 22 A6 23 60 A9 00 85 29 A0 10 A6 23 F0 1F 06 22 26 23 2A 26 29 48 +1500: C5 2E A5 29 E5 2F 90 08 85 29 68 E5 2E 48 E6 22 68 88 D0 E4 85 28 60 06 22 26 23 2A B0 04 C5 2E +1520: 90 04 E5 2E E6 22 88 D0 EE 85 28 60 A2 00 85 2E 86 2F 20 2A 14 20 EE 14 A5 28 A6 29 60 85 28 86 +1540: 29 20 1E 14 20 A2 10 4C 4E 15 85 28 86 29 A0 00 B1 28 F0 0E C8 84 30 20 9F 10 A4 30 D0 F2 E6 29 +1560: D0 EE 60 43 4F 44 45 42 52 45 41 4B 45 52 21 0D 0D 22 43 52 41 43 4B 45 44 22 20 42 59 20 45 47 +1580: 41 4E 20 46 4F 52 44 0D 0D 0D 0D 00 57 4F 55 4C 44 20 59 4F 55 20 4C 49 4B 45 20 54 4F 20 50 4C +15A0: 41 59 20 41 53 20 41 0D 0D 5B 4E 5D 4F 56 49 43 45 2C 20 5B 50 5D 52 4F 2C 20 4F 52 20 5B 4D 5D +15C0: 41 53 54 45 52 3F 20 00 44 4F 20 59 4F 55 20 4E 45 45 44 20 49 4E 53 54 52 55 43 54 49 4F 4E 53 +15E0: 3F 20 00 0A 47 4F 41 4C 3A 20 20 43 52 41 43 4B 20 54 48 45 20 43 4F 44 45 2E 20 20 46 41 49 4C +1600: 55 52 45 20 49 53 20 4E 4F 54 0D 0A 20 20 20 20 20 20 20 41 4E 20 4F 50 54 49 4F 4E 21 0D 0A 0D +1620: 0A 43 4F 44 45 3A 20 20 54 48 45 20 43 4F 44 45 20 49 53 20 43 4F 4D 50 4F 53 45 44 20 4F 46 20 +1640: 00 20 43 4F 4C 4F 52 53 0D 0A 20 20 20 20 20 20 20 4F 55 54 20 4F 46 20 41 20 53 45 54 20 4F 46 +1660: 20 00 2E 20 20 44 55 50 4C 49 43 41 54 45 53 0D 0A 20 20 20 20 20 20 20 41 4C 4C 4F 57 45 44 2E +1680: 0D 0A 0D 0A 52 55 4C 45 53 3A 20 59 4F 55 20 48 41 56 45 20 00 20 41 54 54 45 4D 50 54 53 2E 20 +16A0: 20 41 46 54 45 52 20 45 41 43 48 0A 20 20 20 20 20 20 20 41 54 54 45 4D 50 54 20 41 20 43 4C 55 +16C0: 45 20 57 49 4C 4C 20 42 45 20 47 49 56 45 4E 2E 0D 0A 0D 0A 43 4C 55 45 53 3A 20 41 4E 20 2A 20 +16E0: 49 4E 44 49 43 41 54 45 53 20 54 48 41 54 20 59 4F 55 20 48 41 56 45 20 41 0D 0A 20 20 20 20 20 +1700: 20 20 43 4F 52 52 45 43 54 20 43 4F 4C 4F 52 20 49 4E 20 54 48 45 20 43 4F 52 52 45 43 54 0D 0A +1720: 20 20 20 20 20 20 20 50 4C 41 43 45 2E 20 20 41 20 2B 20 49 4E 44 49 43 41 54 45 53 20 54 48 41 +1740: 54 20 59 4F 55 0D 0A 20 20 20 20 20 20 20 48 41 56 45 20 41 20 43 4F 52 52 45 43 54 20 43 4F 4C +1760: 4F 52 2E 20 20 59 4F 55 0D 0A 20 20 20 20 20 20 20 4E 45 45 44 20 00 20 2A 27 53 20 54 4F 20 57 +1780: 49 4E 2E 20 20 54 48 45 0D 0A 20 20 20 20 20 20 20 50 4F 53 49 54 49 4F 4E 20 4F 46 20 54 48 45 +17A0: 20 43 4C 55 45 53 20 49 53 20 4E 4F 54 0D 0A 20 20 20 20 20 20 20 52 45 4C 45 56 41 4E 54 2E 0D +17C0: 0A 0D 0A 53 43 4F 52 45 3A 20 54 49 4D 45 20 49 4E 20 53 45 43 4F 4E 44 53 2E 20 20 47 4F 4F 44 +17E0: 20 4C 55 43 4B 21 0D 0A 0D 0A 0D 0A 00 0D 41 20 50 52 4F 20 47 41 4D 45 20 57 49 54 48 20 41 20 +1800: 54 57 49 53 54 2E 2E 2E 0D 0D 0D 0D 20 20 20 20 20 20 20 59 4F 55 20 4F 4E 4C 59 20 48 41 56 45 +1820: 20 36 30 20 53 45 43 4F 4E 44 53 21 0D 0D 0D 0D 00 50 52 45 53 53 20 41 4E 59 20 4B 45 59 20 54 +1840: 4F 20 42 45 47 49 4E 20 43 52 41 43 4B 49 4E 47 20 00 0A 20 20 20 20 20 20 20 20 20 20 20 20 20 +1860: 20 43 4F 44 45 42 52 45 41 4B 45 52 21 0D 0A 0D 0A 00 20 20 20 20 20 59 4F 55 27 56 45 20 43 52 +1880: 41 43 4B 45 44 20 49 54 21 0D 00 20 20 20 20 20 20 20 59 4F 55 27 56 45 20 46 41 49 4C 45 44 0D +18A0: 00 57 4F 55 4C 44 20 59 4F 55 20 4C 49 4B 45 20 54 4F 20 50 4C 41 59 20 41 47 41 49 4E 3F 20 00 +18C0: 20 5B 52 5D 45 44 20 20 20 20 00 20 5B 47 5D 52 45 45 4E 20 20 00 20 5B 42 5D 4C 55 45 20 20 20 +18E0: 00 20 5B 59 5D 45 4C 4C 4F 57 20 00 20 5B 4F 5D 52 41 4E 47 45 20 00 20 5B 50 5D 55 52 50 4C 45 +1900: 20 00 20 5B 53 5D 49 4C 56 45 52 20 00 20 5B 43 5D 4F 50 50 45 52 20 00 4E 4F 56 49 43 45 00 50 +1920: 52 4F 20 20 20 00 4D 41 53 54 45 52 00 0D 0D 00 0D 00 20 20 20 20 20 00 0D 20 20 20 20 20 00 0D +1940: 0D 00 20 20 20 21 20 00 21 20 43 4C 55 45 00 53 00 20 20 54 49 4D 45 3A 20 2D 36 30 2E 30 00 0D +1960: 00 20 21 20 00 2D 20 00 21 20 00 20 20 54 49 4D 45 3A 20 2D 00 20 20 00 20 20 54 49 4D 45 3A 20 +1980: 00 20 20 20 21 20 00 20 00 53 54 41 54 53 0D 0D 00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 +19A0: 20 20 20 20 20 20 20 20 20 20 2D 2D 2D 2D 2D 54 49 4D 45 53 2D 2D 2D 2D 2D 00 47 41 4D 45 20 20 +19C0: 20 20 43 52 41 43 4B 45 44 20 20 46 41 49 4C 45 44 20 20 41 56 45 52 41 47 45 20 20 20 20 42 45 +19E0: 53 54 0D 00 20 20 20 20 20 00 20 20 20 20 00 20 20 20 20 00 2D 2D 2D 2D 2D 20 20 20 2D 2D 2D 2D +1A00: 2D 00 20 20 20 00 20 20 20 20 00 0D 0D 0D 0D 54 4F 20 50 4C 41 59 20 41 47 41 49 4E 20 54 59 50 +1A20: 45 3A 20 20 32 38 30 52 0D 0D 00 20 20 20 00 50 52 4F 00 4D 41 53 54 45 52 00 4E 4F 56 49 43 45 +1A40: 00 20 49 4E 53 54 52 55 43 54 49 4F 4E 53 0D 0D 00 2E 3A 27 52 47 42 59 4F 50 53 43 C0 18 CB 18 +1A60: D6 18 E1 18 EC 18 F7 18 02 19 0D 19 18 19 1F 19 26 19 00 63 15 8C 15 C8 15 E3 15 41 16 62 16 95 +1A80: 16 77 17 ED 17 31 18 52 18 72 18 8B 18 A1 18 01 00 00 00 8D A1 1A 8E A2 1A 8D A8 1A 8E A9 1A 88 +1AA0: B9 FF FF 8D B2 1A 88 B9 FF FF 8D B1 1A 8C B4 1A 20 FF FF A0 FF D0 E8 60 diff --git a/codebreaker.8k.wav b/codebreaker.8k.wav new file mode 100644 index 0000000000000000000000000000000000000000..e206fd2cc7b775812e6ba38de19b6eb46f0b6c3d GIT binary patch literal 2120949 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

HK=%r+w|e&EN9u|Ms3w zec$HSeO6!ix*z+%Pxmi=yXT3w4}9H!^)3FZ{Mx79>vTU;|84%3XMf*M`QOg>`)>1# z=e?X?eV_7mZ{Bm8U;E=<_fvg~FaP4F`Sf*uz1P#eZ}Xq})cd~m*}m`Azj)rO-naVx zDg4v>DgU~Ezwh?Fif8}I_x{zF_nrE~Z}X=-ea%%`h?+N>)`P2JkPxB{# z^R-Xq!&l#Je!Z9TPd?N4#ozoX-#+!er~GYS^Yy;vQ#^g0kN>pqHXr_0e%+h%>1!UJ z?LBOH`|w`&VgJgXzE}0Fe0(Z@>tp_QzW1c>)W3XA_uzbZ`}|e%xd;2Rr|+}+7EiwK z;l$gAJ?(SK_j|!R|KwwTd@A2O`BVOOe)WCpbGirT7hiqhr+dP?@2&jP{Y?9E58Hb# z-hH?EwGVx3|MD^aG~auc&(r+!_nzDQ6YqT9%YAR(v-{r8w?FUowlDkGpM2lji7%gN z{^@c<0wWluz+LmG65y`P|}b&uKn;PI>k;&pp_u z^5K2Y+x!#n{98V}Z}s&(Z~In0eVq?qeW(1Nn(uq7zW5jK_d4;lXXTr(eD1+Mx9+p@ zPd@g)<->cqFFw9c{Oto@`%m-naXx+RQ#?LX{-^S5pXxj1>07+_r*HB0xs|`YA9(wh z54`=WZ}FASy}k7zzwWd0i+A5!`Lz#w-tw_O`P2K{^6XRj-v77qPy5>+-u~6M`05Mq z_p1Ec-;4X6@^9T|?dkm5r}o6Z_H=&n+x#tmdSCnB&iDS?{Ni~p=U3n2Px;=b@_FB> z4}9g<{ZxMOU*)r>^J~wiec$Fk_3`i3PxbZtZv9WZ^Xs1JyXE~}mCrp)^WiJM?*F&) z?Zcks?|ZAhysz_5{5F5e*ZWpq{I~hl*YCT{Kk?2#^}WTrFMCe&>mKlTKKyUx+lRh? z|GoUHfBCon;-CMs>G#4tdr#iid%|z?i{IYQl;<9bci$6V{@&--_kvI5m(RBEHoti9 z`BV2(KHjJHe0tBf`ue@_sr=ℑKFipIhEO?77Xa_j3N$AD_y<)pwg;eDy8f{?(WJ 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 literal 0 HcmV?d00001 diff --git a/codebreaker.c b/codebreaker.c new file mode 100644 index 0000000..72cd207 --- /dev/null +++ b/codebreaker.c @@ -0,0 +1,427 @@ +/* + +Codebreaker, Version 1.0, Sun May 13 13:49:18 GMT 2012 + +Copyright (c) 2012 All Rights Reserved, Egan Ford (egan@sense.net) + +THIS CODE AND INFORMATION ARE PROVIDED "AS IS" WITHOUT WARRANTY OF ANY +KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A +PARTICULAR PURPOSE. + +License: + * Public Domain. + * Do what you like, remember to credit all sources when using. + +*/ + +#include + +#define TIME ((count*59)/959790) +#define TENTHS ((count*59)/95979) +#define DEBUG 0 +#define TOP 0 +#define MIDDLE 1 +#define BOTTOM 2 +#define NOVICE 0 +#define PRO 1 +#define MASTER 2 +#define TIMER 600 +#define srand(x) next = (x) + +extern void getkey(); +extern void __fastcall__ putchar(char); +extern unsigned long count; +extern unsigned char key; + +void drawboard(unsigned char); +void clearscreen(); +void printnum(unsigned long, unsigned char, unsigned char); +void instructions(); +int rand(); +//void srand(unsigned int); + +const char *title = "CODEBREAKER!\r\r\"CRACKED\" BY EGAN FORD\r\r\r\r"; +const char *novicepro = "WOULD YOU LIKE TO PLAY AS A\r\r[N]OVICE, [P]RO, OR [M]ASTER? "; +const char *insprompt = "DO YOU NEED INSTRUCTIONS? "; + +const char *instruct1 = "\ +GOAL: CRACK THE CODE. FAILURE IS NOT\r\ + AN OPTION!\r\ +\r\ +CODE: THE CODE IS COMPOSED OF "; + +const char *instruct2 = " COLORS\r\ + OUT OF A SET OF "; + +const char *instruct3 = ". DUPLICATES\r\ + ALLOWED.\r\ +\r\ +RULES: YOU HAVE "; + +const char *instruct4 = " ATTEMPTS. AFTER EACH\ + ATTEMPT A CLUE WILL BE GIVEN.\r\ +\r\ +CLUES: AN * INDICATES THAT YOU HAVE A\r\ + CORRECT COLOR IN THE CORRECT\r\ + PLACE. A + INDICATES THAT YOU\r\ + HAVE A CORRECT COLOR. YOU\r\ + NEED "; + +const char *instruct5 = " *'S TO WIN. THE\r\ + POSITION OF THE CLUES IS NOT\r\ + RELEVANT.\r\ +\r\ +SCORE: TIME IN SECONDS. GOOD LUCK!\r\ +\r\ +\r\ +"; +const char *instructg = + "\rA PRO GAME WITH A TWIST...\r\r\r\r YOU ONLY HAVE 60 SECONDS!\r\r\r\r"; +const char *anykey = "PRESS ANY KEY TO BEGIN CRACKING "; +const char *header = "\ + CODEBREAKER!\r\ +\r\ +"; +const char *won = " YOU'VE CRACKED IT!\r"; +const char *fail = " YOU'VE FAILED\r"; +const char *playagain = "WOULD YOU LIKE TO PLAY AGAIN? "; + +unsigned long int next = 1; +char numcolors, slots, attempts, tt; + +int main(void) +{ + char code[5], claimed[5], guess[5]; + char colors[] = { 'R', 'G', 'B', 'Y', 'O', 'P', 'S', 'C' }; + char *colorkey[] = + { " [R]ED ", " [G]REEN ", " [B]LUE ", " [Y]ELLOW ", + " [O]RANGE ", " [P]URPLE ", " [S]ILVER ", " [C]OPPER " + }; + char *gametypes[] = { "NOVICE", "PRO ", "MASTER" }; + char i, j, k, right, close, gametype; + signed int timer; + unsigned int win[3], loss[3], avgtime[3], besttime[3]; + + for(i = 0; i < 3; ++i) + win[i] = loss[i] = avgtime[i] = besttime[i] = 0; + + clearscreen(); + cputs(title); + + while (1) { + tt = 0; + numcolors = 8; + slots = 5; + attempts = 12; + gametype = PRO; + cputs(novicepro); + key = 0; + while (key != 'N' && key != 'P' && key != 'M') + getkey(); + putchar(key); + cputs("\r\r"); + if (key == 'N') { + numcolors = 6; + slots = 4; + attempts = 10; + gametype = NOVICE; + } + if (key == 'M') { + tt = 1; + gametype = MASTER; + } + instructions(); + clearscreen(); + + timer = TIMER; + srand(count & 0xFFFF); + for (i = 0; i < slots; ++i) { + code[i] = rand() % numcolors; + } + + clearscreen(); + cputs(header); + if (slots == 5) { + for (i = 0; i < numcolors; ++i) + cputs(colorkey[i]); + cputs("\r"); + } else { + cputs(" "); + for (i = 0; i < numcolors / 2; ++i) + cputs(colorkey[i]); + cputs("\r "); + for (i = numcolors / 2; i < numcolors; ++i) + cputs(colorkey[i]); + cputs("\r\r"); + } + + drawboard(TOP); + cputs(" ! "); + for (i = 0; i < slots; i++) { +#if DEBUG==1 + putchar(colors[code[i]]); +#else + putchar('X'); +#endif + putchar(' '); + } + cputs("! CLUE"); + if (slots == 5) + cputs("S"); + if (tt) + cputs(" TIME: -60.0"); + cputs("\r"); + drawboard(MIDDLE); + + for (i = 1; i <= attempts; ++i) { + for (j = 0; j < slots; ++j) + claimed[j] = 0; + right = close = 0; + printnum(i, 2, ' '); + cputs(" ! "); + if(i == 1) + count = 0; + for (j = 0; j < slots; ++j) { + getkey(); + if (tt) { + timer -= TENTHS; + count = 0; + if (timer < 0) { + timer = 0; + break; + } + } + for (k = 0; k < numcolors; ++k) + if (key == colors[k]) + break; + if (k == numcolors) { + j--; + continue; + } + putchar(colors[k]); + putchar(' '); + if (k == code[j]) { + right++; + claimed[j] = 1; + } + guess[j] = k; + } + for (; j < slots; ++j) { + cputs("- "); + guess[j] = 9; + } + cputs("! "); + for (j = 0; j < slots; ++j) { + if (guess[j] == code[j]) + continue; + for (k = 0; k < slots; ++k) + if (guess[j] == code[k] && !claimed[k]) { + close++; + claimed[k] = 1; + break; + } + } + + for (j = 0; j < right; ++j) + putchar('*'); + for (j = 0; j < slots - right - close; ++j) + putchar(' '); + for (j = 0; j < close; ++j) + putchar('+'); + + if (tt) { + cputs(" TIME: -"); + printnum(timer / 10, 2, '0'); + putchar('.'); + printnum(timer % 10, 1, '0'); + putchar(0xd); + } else { + if (slots == 4) + cputs(" "); + cputs(" TIME: "); + printnum(TIME / 60, 2, '0'); + putchar(':'); + printnum(TIME % 60, 2, '0'); + putchar(0xd); + } + + if (right == slots || timer == 0) + break; + } + + drawboard(MIDDLE); + cputs(" ! "); + for (i = 0; i < slots; i++) { + putchar(colors[code[i]]); + putchar(' '); + } + putchar('!'); + if (slots == 4) + cputs(" "); + if (right == slots) { + cputs(won); + if(gametype == MASTER) + timer = TIMER - timer; + else + timer = TIME; + win[gametype] += 1; + if(win[gametype] == 1) + avgtime[gametype] = besttime[gametype] = timer; + else { + avgtime[gametype] = (avgtime[gametype]*(win[gametype] - 1)+timer)/win[gametype]; + if(timer < besttime[gametype]) + besttime[gametype] = timer; + } + } + else { + cputs(fail); + loss[gametype] += 1; + } + drawboard(BOTTOM); + putchar(0xd); + + cputs(playagain); + key = 0; + while (key != 'N' && key != 'Y') + getkey(); + putchar(key); + clearscreen(); + if (key == 'Y') + continue; + + cputs("STATS\r\r"); + cputs(" -----TIMES-----"); + cputs("GAME CRACKED FAILED AVERAGE BEST\r"); + for(i = 0; i < 3; ++i) { + if(win[i] + loss[i] == 0) + continue; + cputs(gametypes[i]); + cputs(" "); + printnum(win[i],4,' '); + cputs(" "); + printnum(loss[i],4,' '); + cputs(" "); + if(avgtime[i] == 0) { + cputs("----- -----"); + continue; + } + if(i < 2) { + printnum(avgtime[i] / 60, 2, '0'); + putchar(':'); + printnum(avgtime[i] % 60, 2, '0'); + cputs(" "); + printnum(besttime[i] / 60, 2, '0'); + putchar(':'); + printnum(besttime[i] % 60, 2, '0'); + } + else { + putchar(' '); + printnum(avgtime[i] / 10, 2, ' '); + putchar('.'); + printnum(avgtime[i] % 10, 1, '0'); + cputs(" "); + printnum(besttime[i] / 10, 2, ' '); + putchar('.'); + printnum(besttime[i] % 10, 1, '0'); + } + } + cputs("\r\r\r\rTO PLAY AGAIN TYPE: 280R\r\r"); + break; + } + + return 0; +} + +#if CODESEG == 1 +#pragma codeseg ("CODE1") +#endif + +void drawboard(unsigned char p) +{ + char i, ends[] = { '.', ':', '''}; + + cputs(" "); + putchar(ends[p]); + for(i=0;i 0) { + c[--i]=(n%10 + 0x30); + n/=10; + } + if(padding > 0) { + while(i > 0) + c[--i]=pad; + for(i=8-padding;i<8;++i) + putchar(c[i]); + return; + } + for(;i<8;++i) + putchar(c[i]); +} + +void instructions() +{ + cputs(insprompt); + key = 0; + while (key != 'N' && key != 'Y') + getkey(); + putchar(key); + if(key == 'N') + return; + clearscreen(); + if(slots == 5) + if(tt == 0) + cputs("PRO"); + else + cputs("MASTER"); + else + cputs("NOVICE"); + cputs(" INSTRUCTIONS\r\r"); + if(tt == 0) { + cputs(instruct1); + printnum(slots,0,'0'); + cputs(instruct2); + printnum(numcolors,0,'0'); + cputs(instruct3); + printnum(attempts,0,'0'); + cputs(instruct4); + printnum(slots,0,'0'); + cputs(instruct5); + } + else + cputs(instructg); + cputs(anykey); + getkey(); +} + +int rand() +{ + next = next * 1103515245 + 12345; + return (unsigned int)(next/65536UL) % 32768UL; +} + +/* +void srand(unsigned int seed) +{ + next = seed; +} +*/ + + diff --git a/codebreaker.po b/codebreaker.po new file mode 100644 index 0000000000000000000000000000000000000000..bb6a3869eb9d8f4587c1188baf3473cc1bf1431e GIT binary patch literal 143360 zcmeI2e|S{YnaA&BGRe%`1ScWjaCP-$!h=bGNr0!_l#V%Vl1uv06_%KEXiTx$ zdDl`Q4?8U}OIx-*xWDuSa-`f#uM`?TGz9FD<3nRB488OO(EBev(+``*D~2!l_hG9J z?0p{ux`w~QHsr8DkE#r_@8)PyjA?_h(i_>{9Q7rS_IRvZQ(_gGw5>}TbZ;u}O`Seg zaUk`VJ+}=y_|s4{Ar0nh2fK3AZzxeIk<;@jW%Ey!^`0SZdY8g(n3Rxqv28s+RoFK@ zniSuy=(`oxT%z|V?#`Sp8(UPwDvNf?+Dv+%-mR#EIoTNsDOGJN(x$}sC^(}+*GbUYS)}K z3ELZttRTVt&Q81fV9}1fO3zcgvgy5wy3an&i$B@*&nd}!IUj;@vq!(#v%hih3VvBK z=p@5#@u-emdL%{SUCI_^Q|&};zauqK|A~^y*Q&Y{^@dz+j&YeQU~2(!A%Q`=`c|&~ zc_n!tFQiMNtn5b~_Dc`3(j@kY60Mqk*j#(Q%PkiaPPoETR6McdefSMTFAoCx7nJ1v zrjI;6j*sYHRFV&vGEa;r^PrM^=skQ*|B{mYS4BOYt3RwH*K%P!rX<(#n}np^;?cjZ z#LDzdO3at+RP?VYyk9qJPse;(AXcWWX4i|JUad*m$JpAU_}7$;oyr#9hE2+rvJGEX zMsg>lt!3T5wPkC4hQoI~NW+?sR1B++6(#a}T9wT&@gXX4Mb9#2^ULDa(er6#^BZE| zlHx;(KBVlo?_5P4XNZqfuX$GvZ|g7zldMDsC0->)n5;y3ti+Zhhwd$@Z>h64P zwy3IQ0iR|bS8ibCMLVy_YMt})FV5F$3`QhP#$QaCU(eUBHw)v#=)oMVcBE`x^@-Yz zG^Rr6&ZAJZvlLSsH@pqK%lyhXr&*4KpGlqQapNx{p#cinx zB!819zSI+6=83oQIa;WvI?#Of85cDT^-HpG*;pPRY5%}JCOYLknvJ@tM18EE{j4}V zT(kO&LY~tR9$tM`iJ#@3mQ_mfta9j~P8SK#D=H;^O3_a#yq$}7oKkvTQu=Q84CbXz zDXP;&ZP<58Nfl6?YhJgJb!xlI5V8PM{d*1wp(6bq&YEh^nb?R4T}kui=LDQ@I!Os{ zok`kqfq+Z7%$J{WY3&Anj)0uN5WSsie@=;&udCp92b3cfsoZ_#gYz~THuoqUuS+{? zEGcf8kYW4EQ&;n+XO&cmep;AyTA>7CmOAX>wcG9DZT5(3qrv zKt>fkmlyp3RLz-qo+`dHBvbp|Q3fYaZ3@pSW(4aV0>-o z6^px}Pwl8r&~Quc_wIS~4x=G&Q4#e>y=08{&f-H-YA*HYk7lxtnusiYBNLI)-a?1wk(y_>`7JlA3hQ2B}VC^r7YV>ioOce zto%i>a++yl6_hI>(T9hAR-rX`d!hbSCAopa&ypRPl(UElpW_3y@R7KZ+<49`I(qf} zaG^1MlBqN;^L2U3u1?O=zGAq~CgbwNh%?b>yWdVjX2e65oV#Xl7RTu8B+R#^m@#Rr9692fCM%ESB^O`H zs2n4usGl%8dY1028o1A?fi-*bp>n(&8Qpxiu|Bc1ybILeB1_4tftwajCa3ID_&C>F zsL5to9Z~Upq8FvAuk&iQ)inFwM6-M4YMSYniW{2mmx-G;KJj}ypVK|5iU;F2d!p*e z;Sjr~gmrn^>DEiP(cX~v+sj#ub>AVZ^Z}08LSc^ZZ8{U?7g_|+ znloxhMETeJ_Vql&po9L~Dg9V!l+4-YN#yY#VZ1jXtzo^f>W(#RdvCXI4U74DyUXZ8 zmZ(24g%Z*%7OU> z!%>Zl&E>|5M6!`*-c?R^mPfgcSQ%xBaV^~R=vu#bxxdr(S}O0DkE(AG7bOyu*o{sC(w}S+QB&{^he{ zv%9O7&xy@xU+;OoyL@X!l=T&<>O=!eh}nx0_U^JxY<;(nemdxX`zB_#I6F|x(#0ZE zY{t5o-M*N=yDV14+bLGg4XNNiKK@fi5Xq$JWYU}j%PXH&G0iuvta94)X|t!z3GJKF zJ^kp+?%7BE-E)psb(WAdN6AJ?i%sXLvDwGU+t;UhW0j*zo*nab&msJkTc<};m0eOt zba1Npy{7tVan142JVdDzItz^Fow@utU*YgI;@-Vfv zWZkSolE=OEiClaH3#bE2kU*Tb_okM1RB}ANOOH5{Yi@>3)OnIB(jjH;rT(<8evUpUQZOt~mRYhV(h#I1fBMY$UW2nrC3G>OW zY?YLYnlvLKT1aA**R}8lUL0C-d zkxpe?M=fpk1r}~CEi_&TSo{@t&S3rcouVNSZY1YsOPkxs6X}m`8`_$K!A5ag+s1uE z+%9Pga%bZLk+$YQV*~dv>O>2hn^bYz(iT=1k&{tsU0bB7iQhJg&PKJ3a3u>wHJ{0QYMuOXOvp#kvGI#HuIy^{%S5xFK6=iBX8&~^FTLTf=Ml{fz}p79VLzN zH3@n8We1)+J56 z@6WEOZZ<6AJS-R{A#%Bq(T1e_bFXV|s9h3iYN^}f{gw9x@5|m3-XU+!l)@?ADc4S! zHbuH^(uPUBlMYV`OulvUwwAWW zl!+({{K+rv2&$S>NMM?lmRucIbCID2z6lU-))7U5xGUdmQRB zhvPy|N+46Rx5Gp7#;~m4<)H2GI~}wg zeuqO}<6wV2!MDRt_s4(d-uQbr1ttFArl7W&x?N@uoTR7M)4cAtziia~H}2$r^P1_oG6ntkc6hBUQ1{to+77pn&oDvWbb@4g ze*I1?bs&3D=2BfiI7pNB)J^D+7%&*kBeTVBz=VH6|$J74>b@suai z{=lO~?(N3KX6m$&HI%z%z#+$saL8Ydl6Tk1dY#O@J6Gn;Jz+;3b>z*8oUW7AU%WyB z^W=C?-cC7Lem|SiPkog(13S}X4cR)^uI(^NrXkJ@X?etusm6DG+cem-+I{VeLN*{G2ciJcj7)T>G^$|JLGn zljKY|#IQM6Ho_sM6t_&s7~v3lQe+B;%oAqKlj*fEOWk;c*KYn1-e%K|Y!pq}7nDUf zXm%o9z{!y$&$V;QNwc|7-YGyVA^ywO71kBz1d$%LGSUJ7&E z+RxaCOH`XK;pdKONr`aCvje6aMe>f4tBF{^9)r-&4XtC$2_qhn9S$iP;65VJ9;wXl z3~#iGp395=0IFi=t19HGa%BQZ;gFDA7?#P4Xo`636$*zK{qz~DjcbJ`Ox;n-8_WoY z$n>o~mBJyTJ8u3l3Wo^20>N*Lx*Mg~)q}6<&$*M&i;1g2w!$I8`6(O{mba^2$KFrv zs87&zOYYZj-nxU)l((&)dgL%)f}H#QrW2WPi1ljJLc~fOS%?_zE%d2xzM7?S%zRej z?y(DJjs5KKfOmCBrf>*VyWLnQS*2R5C#u3MKJ^c$jnYR;S+#=&X%}YbRs98b^0yp*miZ%#vMgf4=ZtU&wdITMDFJ#mgk5e5*IAlV$ zwN{4RY3k}#C$s0C?B1S5XjF~|#>}zcT(c}Mx%g5>_8(y{GvpHl;C_T)q5 zcsVk<`EWzw5M#dm)CFpAk)>qSz)g#1lWcY=e4JbSnzqO+t0Nj>pG~tjj~fw<&!#^} zMB`RDc^jWL^xNg+a(+W01c^RXXvOkmms|ald%TFouhQ(3C$l0Nx2FGA5si0_Q$&M) z-aDdk$`ra#MB~(Pv8j5&h{iMhV?;D4anyeEC5dR9I{sHgG_F0Nes{o%Xe{i%Kt$u} z0rts(i;QRplP+0A!zlT$jc5pG%S1G8O=lt+_opvDqEVS1718)enj#uJ|KBj8@g&XV ze?>%NYub!x+)B1mMB~T(W<-OY$BSq@**|VXgIhCxMB{$mp)XxT!%&xrXo!JIO`IGZ z(Rkx{CZh2HzVpV*VxIr5?H}X(_w;_vPD?>rXI#wrZyNsi`R_;Fo1J3c=pHfj@;2Sp zzbUao zoc}J6>HPLe@x^7H|94iK%=fAH$IdcBHK&JEGmNvd9=4&oqBU)^Yoc|UA;{5lo`*#$`J%zlo=>nOb|1OZn zdO_#EpK>REe!(Rdo&Od)R(!S9m@>|P(`N@i|D7k(QLOuD#-a1y4;Yu2fURv17yhjy z&VT>Ho!nO4nPV}u3$um>rpnc{<8z0&p?#k_#m!xO z11NJW=57Z+7BecChEOt(W>LHgp=5-TGhtAKk}to(Ua z*BY0Ubo|yaG0&g3Ay3acl=oDAjq`rzzd3*Ee8G9bDMHC7+#3hn@jtsazUdaB