From 71215df41db84826096be79f2951811cc9b65a0d Mon Sep 17 00:00:00 2001 From: Philip Smart Date: Wed, 22 Feb 2023 21:27:02 +0000 Subject: [PATCH] RFS repository created from software component of the MZ80A_RFS repository branch v2.1 --- README.md | 615 ++ asm/1z-013a.asm | 3307 +++++++++ asm/cbios.asm | 2638 ++++++++ asm/cbios_bank1.asm | 456 ++ asm/cbios_bank2.asm | 1468 ++++ asm/cbios_bank3.asm | 897 +++ asm/cbios_bank4.asm | 641 ++ asm/cpm22-bios.asm | 84 + asm/cpm22.asm | 3764 +++++++++++ asm/include/MSBASIC_BuildVersion.asm | 1 + asm/include/cpm_buildversion.asm | 1 + asm/include/cpm_definitions.asm | 589 ++ asm/include/macros.asm | 34 + asm/include/msbasic_buildversion.asm | 1 + asm/include/msbasic_definitions.asm | 473 ++ asm/include/rfs_definitions.asm | 563 ++ asm/include/rfs_utilities.asm | 496 ++ asm/ipl.asm | 901 +++ asm/monitor_1z-013a.asm | 7 + asm/monitor_80c_1z-013a.asm | 7 + asm/monitor_80c_sa1510.asm | 8 + asm/monitor_80c_sa1510_hiload.asm | 8 + asm/monitor_sa1510.asm | 8 + asm/monitor_sa1510_hiload.asm | 8 + asm/msbasic.asm | 9272 ++++++++++++++++++++++++++ asm/mz80afi.asm | 371 ++ asm/ramcheck.asm | 155 + asm/rfs.asm | 1347 ++++ asm/rfs_bank1.asm | 536 ++ asm/rfs_bank2.asm | 1605 +++++ asm/rfs_bank3.asm | 548 ++ asm/rfs_bank4.asm | 335 + asm/rfs_bank5.asm | 210 + asm/rfs_bank6.asm | 497 ++ asm/rfs_bank7.asm | 496 ++ asm/rfs_mrom.asm | 744 +++ asm/sa-5510_rfs.asm | 7508 +++++++++++++++++++++ asm/sa1510.asm | 2833 ++++++++ asm/sa1510_hiload.asm | 2804 ++++++++ asm/sfd700.asm | 1658 +++++ asm/sharpmz-test.asm | 1780 +++++ build.sh | 56 + config/diskdefs | 1623 +++++ dis/SA-5510/SA-5510.asm | 7511 +++++++++++++++++++++ dis/SA-5510/SA-5510.ini | 568 ++ dis/SA-5510/SA-5510.ref | 2643 ++++++++ dis/XPATCH/XPATCH-5510.asm | 1894 ++++++ dis/XPATCH/XPATCH-5510.ref | 875 +++ dis/XPATCH/XPATCH.ini | 330 + dis/XPATCH/XPATCH_5510_V2.2.MZF | Bin 0 -> 3280 bytes hdr/CPM_RFS_1.hdr | Bin 0 -> 128 bytes hdr/CPM_RFS_2.hdr | Bin 0 -> 128 bytes hdr/cpm22.hdr | Bin 0 -> 128 bytes hdr/sdtest.hdr | Bin 0 -> 128 bytes proc_mzf.sh | 30 + roms/IPL.rom | Bin 0 -> 4096 bytes roms/SA-5510_RFS.MZF | Bin 0 -> 12469 bytes roms/SHARP_MZ80A_RFS_IMAGE_0.img | Bin 0 -> 16785408 bytes roms/SHARP_MZ80A_RFS_IMAGE_2.img | Bin 0 -> 16785408 bytes roms/SHARP_MZ80A_RFS_IMAGE_3.img | Bin 0 -> 16785408 bytes roms/SHARP_MZ80A_RFS_IMAGE_4.img | Bin 0 -> 16785408 bytes roms/SHARP_MZ80A_RFS_IMAGE_5.img | Bin 0 -> 16785408 bytes roms/SHARP_MZ80A_RFS_IMAGE_6.img | Bin 0 -> 16785408 bytes roms/SHARP_MZ80A_RFS_IMAGE_7.img | Bin 0 -> 16785408 bytes roms/SHARP_MZ80A_RFS_IMAGE_8.img | Bin 0 -> 16785408 bytes roms/SHARP_MZ80A_RFS_IMAGE_9.img | Bin 0 -> 16785408 bytes roms/blank_mrom.rom | Bin 0 -> 4096 bytes roms/cbios.rom | Bin 0 -> 4096 bytes roms/cbios_bank1.rom | Bin 0 -> 2048 bytes roms/cbios_bank2.rom | Bin 0 -> 2048 bytes roms/cbios_bank3.rom | Bin 0 -> 2048 bytes roms/cbios_bank4.rom | Bin 0 -> 2048 bytes roms/ipl.rom | Bin 0 -> 4096 bytes roms/monitor_1Z-013A.rom | Bin 0 -> 4096 bytes roms/monitor_1z-013a.rom | Bin 0 -> 4096 bytes roms/monitor_80c_1Z-013A.rom | Bin 0 -> 4096 bytes roms/monitor_80c_1z-013a.rom | Bin 0 -> 4096 bytes roms/monitor_80c_SA1510.rom | Bin 0 -> 4096 bytes roms/monitor_80c_SA1510_hiload.rom | Bin 0 -> 4096 bytes roms/monitor_80c_sa1510.rom | Bin 0 -> 4096 bytes roms/monitor_80c_sa1510_hiload.rom | Bin 0 -> 4096 bytes roms/monitor_SA1510.rom | Bin 0 -> 4096 bytes roms/monitor_SA1510_hiload.rom | Bin 0 -> 4096 bytes roms/monitor_sa1510.rom | Bin 0 -> 4096 bytes roms/monitor_sa1510_hiload.rom | Bin 0 -> 4096 bytes roms/mz80afi.rom | Bin 0 -> 2048 bytes roms/rfs.rom | Bin 0 -> 16384 bytes roms/rfs.tst.rom | Bin 0 -> 16384 bytes roms/rfs_mrom.rom | Bin 0 -> 4096 bytes src/PetitFS/00readme.txt | 53 + src/PetitFS/Makefile | 136 + src/PetitFS/diskio.asm | 95 + src/PetitFS/diskiotmp.c | 73 + src/PetitFS/pff.asm | 4534 +++++++++++++ src/PetitFS/pff.c | 1119 ++++ src/PetitFS/pff.c.asm | 4033 +++++++++++ src/PetitFS/pff.h | 486 ++ src/PetitFS/pff_dir.c | 302 + src/PetitFS/pff_dir.h | 39 + src/PetitFS/pff_func.c | 272 + src/PetitFS/pff_func.h | 47 + src/PetitFS/pff_mount.c | 116 + src/PetitFS/pff_mount.h | 36 + src/PetitFS/pff_open.c | 78 + src/PetitFS/pff_read.c | 99 + src/PetitFS/pff_seek.c | 90 + src/PetitFS/pff_write.c | 112 + src/PetitFS/pffconf.h | 58 + src/PetitFS/rfs.inc | 0 src/PetitFS/sdmmc.c | 789 +++ src/PetitFS/sdmmc.c.asm | 1267 ++++ src/PetitFS/sdmmc.h | 69 + src/PetitFS/sdtest | Bin 0 -> 11040 bytes src/PetitFS/sdtest.asm | 857 +++ src/PetitFS/sdtest.c | 122 + src/PetitFS/sdtest.cmp | Bin 0 -> 11454 bytes src/PetitFS/sdtest.mzt | Bin 0 -> 11168 bytes src/PetitFS/test.asm | 66 + src/PetitFS/test.c | 12 + src/PetitFS/zcc_opt.def | 8 + src/tools/Makefile | 147 + src/tools/MarioBrosSP.raw | Bin 0 -> 335872 bytes src/tools/MarioBrosSP.rev | Bin 0 -> 327680 bytes src/tools/gred3_tf.d88 | Bin 0 -> 348848 bytes src/tools/gred3_tf.raw | Bin 0 -> 327680 bytes src/tools/gred3_tf.rev | Bin 0 -> 327680 bytes src/tools/mz-fdc.c | 412 ++ src/tools/mz-fdc2.c | 336 + src/tools/mzfdc2 | Bin 0 -> 13544 bytes src/tools/mzfdc3 | Bin 0 -> 13544 bytes src/tools/sdtest.c | 84 + src/tools/sdtool | Bin 0 -> 20168 bytes src/tools/sdtool.c | 772 +++ test | 0 tools/assemble_cpm.sh | 82 + tools/assemble_roms.sh | 112 + tools/dz80 | Bin 0 -> 229504 bytes tools/glass-0.5.1.jar | Bin 0 -> 318065 bytes tools/glass-0.5.jar | Bin 0 -> 318647 bytes tools/glass.jar | Bin 0 -> 318065 bytes tools/make_cpmdisks.sh | 272 + tools/make_roms.sh | 791 +++ tools/make_sdcard.sh | 255 + tools/mzfdc2 | Bin 0 -> 13544 bytes tools/mzftool.pl | 1148 ++++ tools/nasconv | Bin 0 -> 13696 bytes tools/processMZFfiles.sh | 85 + tools/sdtool | Bin 0 -> 20168 bytes 148 files changed, 84668 insertions(+) create mode 100644 README.md create mode 100644 asm/1z-013a.asm create mode 100644 asm/cbios.asm create mode 100644 asm/cbios_bank1.asm create mode 100644 asm/cbios_bank2.asm create mode 100644 asm/cbios_bank3.asm create mode 100644 asm/cbios_bank4.asm create mode 100644 asm/cpm22-bios.asm create mode 100644 asm/cpm22.asm create mode 100644 asm/include/MSBASIC_BuildVersion.asm create mode 100644 asm/include/cpm_buildversion.asm create mode 100644 asm/include/cpm_definitions.asm create mode 100644 asm/include/macros.asm create mode 100644 asm/include/msbasic_buildversion.asm create mode 100644 asm/include/msbasic_definitions.asm create mode 100644 asm/include/rfs_definitions.asm create mode 100644 asm/include/rfs_utilities.asm create mode 100644 asm/ipl.asm create mode 100644 asm/monitor_1z-013a.asm create mode 100644 asm/monitor_80c_1z-013a.asm create mode 100644 asm/monitor_80c_sa1510.asm create mode 100644 asm/monitor_80c_sa1510_hiload.asm create mode 100644 asm/monitor_sa1510.asm create mode 100644 asm/monitor_sa1510_hiload.asm create mode 100644 asm/msbasic.asm create mode 100644 asm/mz80afi.asm create mode 100644 asm/ramcheck.asm create mode 100644 asm/rfs.asm create mode 100644 asm/rfs_bank1.asm create mode 100644 asm/rfs_bank2.asm create mode 100644 asm/rfs_bank3.asm create mode 100644 asm/rfs_bank4.asm create mode 100644 asm/rfs_bank5.asm create mode 100644 asm/rfs_bank6.asm create mode 100644 asm/rfs_bank7.asm create mode 100644 asm/rfs_mrom.asm create mode 100644 asm/sa-5510_rfs.asm create mode 100644 asm/sa1510.asm create mode 100644 asm/sa1510_hiload.asm create mode 100644 asm/sfd700.asm create mode 100644 asm/sharpmz-test.asm create mode 100755 build.sh create mode 100644 config/diskdefs create mode 100644 dis/SA-5510/SA-5510.asm create mode 100644 dis/SA-5510/SA-5510.ini create mode 100644 dis/SA-5510/SA-5510.ref create mode 100644 dis/XPATCH/XPATCH-5510.asm create mode 100644 dis/XPATCH/XPATCH-5510.ref create mode 100644 dis/XPATCH/XPATCH.ini create mode 100644 dis/XPATCH/XPATCH_5510_V2.2.MZF create mode 100644 hdr/CPM_RFS_1.hdr create mode 100644 hdr/CPM_RFS_2.hdr create mode 100644 hdr/cpm22.hdr create mode 100644 hdr/sdtest.hdr create mode 100755 proc_mzf.sh create mode 100644 roms/IPL.rom create mode 100644 roms/SA-5510_RFS.MZF create mode 100644 roms/SHARP_MZ80A_RFS_IMAGE_0.img create mode 100644 roms/SHARP_MZ80A_RFS_IMAGE_2.img create mode 100644 roms/SHARP_MZ80A_RFS_IMAGE_3.img create mode 100644 roms/SHARP_MZ80A_RFS_IMAGE_4.img create mode 100644 roms/SHARP_MZ80A_RFS_IMAGE_5.img create mode 100644 roms/SHARP_MZ80A_RFS_IMAGE_6.img create mode 100644 roms/SHARP_MZ80A_RFS_IMAGE_7.img create mode 100644 roms/SHARP_MZ80A_RFS_IMAGE_8.img create mode 100644 roms/SHARP_MZ80A_RFS_IMAGE_9.img create mode 100644 roms/blank_mrom.rom create mode 100644 roms/cbios.rom create mode 100644 roms/cbios_bank1.rom create mode 100644 roms/cbios_bank2.rom create mode 100644 roms/cbios_bank3.rom create mode 100644 roms/cbios_bank4.rom create mode 100644 roms/ipl.rom create mode 100644 roms/monitor_1Z-013A.rom create mode 100644 roms/monitor_1z-013a.rom create mode 100644 roms/monitor_80c_1Z-013A.rom create mode 100644 roms/monitor_80c_1z-013a.rom create mode 100644 roms/monitor_80c_SA1510.rom create mode 100644 roms/monitor_80c_SA1510_hiload.rom create mode 100644 roms/monitor_80c_sa1510.rom create mode 100644 roms/monitor_80c_sa1510_hiload.rom create mode 100644 roms/monitor_SA1510.rom create mode 100644 roms/monitor_SA1510_hiload.rom create mode 100644 roms/monitor_sa1510.rom create mode 100644 roms/monitor_sa1510_hiload.rom create mode 100644 roms/mz80afi.rom create mode 100644 roms/rfs.rom create mode 100644 roms/rfs.tst.rom create mode 100644 roms/rfs_mrom.rom create mode 100644 src/PetitFS/00readme.txt create mode 100644 src/PetitFS/Makefile create mode 100644 src/PetitFS/diskio.asm create mode 100644 src/PetitFS/diskiotmp.c create mode 100644 src/PetitFS/pff.asm create mode 100644 src/PetitFS/pff.c create mode 100644 src/PetitFS/pff.c.asm create mode 100644 src/PetitFS/pff.h create mode 100644 src/PetitFS/pff_dir.c create mode 100644 src/PetitFS/pff_dir.h create mode 100644 src/PetitFS/pff_func.c create mode 100644 src/PetitFS/pff_func.h create mode 100644 src/PetitFS/pff_mount.c create mode 100644 src/PetitFS/pff_mount.h create mode 100644 src/PetitFS/pff_open.c create mode 100644 src/PetitFS/pff_read.c create mode 100644 src/PetitFS/pff_seek.c create mode 100644 src/PetitFS/pff_write.c create mode 100644 src/PetitFS/pffconf.h create mode 100644 src/PetitFS/rfs.inc create mode 100644 src/PetitFS/sdmmc.c create mode 100644 src/PetitFS/sdmmc.c.asm create mode 100644 src/PetitFS/sdmmc.h create mode 100644 src/PetitFS/sdtest create mode 100644 src/PetitFS/sdtest.asm create mode 100644 src/PetitFS/sdtest.c create mode 100644 src/PetitFS/sdtest.cmp create mode 100644 src/PetitFS/sdtest.mzt create mode 100644 src/PetitFS/test.asm create mode 100644 src/PetitFS/test.c create mode 100644 src/PetitFS/zcc_opt.def create mode 100644 src/tools/Makefile create mode 100644 src/tools/MarioBrosSP.raw create mode 100644 src/tools/MarioBrosSP.rev create mode 100755 src/tools/gred3_tf.d88 create mode 100644 src/tools/gred3_tf.raw create mode 100644 src/tools/gred3_tf.rev create mode 100644 src/tools/mz-fdc.c create mode 100644 src/tools/mz-fdc2.c create mode 100755 src/tools/mzfdc2 create mode 100755 src/tools/mzfdc3 create mode 100644 src/tools/sdtest.c create mode 100755 src/tools/sdtool create mode 100644 src/tools/sdtool.c create mode 100644 test create mode 100755 tools/assemble_cpm.sh create mode 100755 tools/assemble_roms.sh create mode 100755 tools/dz80 create mode 100755 tools/glass-0.5.1.jar create mode 100755 tools/glass-0.5.jar create mode 100755 tools/glass.jar create mode 100755 tools/make_cpmdisks.sh create mode 100755 tools/make_roms.sh create mode 100755 tools/make_sdcard.sh create mode 100755 tools/mzfdc2 create mode 100755 tools/mzftool.pl create mode 100755 tools/nasconv create mode 100755 tools/processMZFfiles.sh create mode 100755 tools/sdtool diff --git a/README.md b/README.md new file mode 100644 index 0000000..014c611 --- /dev/null +++ b/README.md @@ -0,0 +1,615 @@ +## Rom Filing System + +
+The Rom Filing System is a hardware and software upgrade for the Sharp MZ80A. The original hardware replaces the Monitor and User ROM's on the motherboard by a daughter card with lifter sockets where upto 4x512Kbyte Flash RAM's and 1x512Kbyte Static RAM are sited. +

+ +Recently the tranZPUter FusionX added hardware compatibility to its virtual capabilities, encapsulating the original hardware as a virtual emulated device and as a consequence is fully RFS compliant. +

+ +One of the Flash RAM's is paged into the Monitor ROM socket and the other Flash RAM/Static RAM into the User ROM socket. The first 32Kbytes (8 slots x 4K) of the Monitor Flash RAM and the first 24Kybtes (12 slots of 2K) of the User Flash RAM is +dedicated to paged ROMs with the remainder being used to store Sharp MZF format binary images compacted within 256byte sectors and additional 2K paged Static RAM. +

+ +(NB. The sector size may change to 128 byte sectors as the original reason for choosing 256 byte sectors no longer exists). +
+ +-------------------------------------------------------------------------------------------------------- + +### RFS Software + +
+In order to use the RFS Hardware, a comprehensive set of Z80 assembler methods needed to be written to allow bank paging and with it came the ability to upgrade the machines monitor functionality. This Z80 +software forms the Rom Filing System which can be found in the repository within the <software> directory. +
+ +The following table describes each major file which forms the Rom Filing System: + +| Module | Target ROM | Size | Bank | Description | +|------------------------|------------|------|------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| rfs.asm | User | 2K | 0 | Primary Rom Filing System and MZ700/MZ800 Monitor tools. | +| rfs_bank1.asm | User | 2K | 1 | Floppy disk controller functions. | +| rfs_bank2.asm | User | 2K | 2 | SD Card controller functions. | +| rfs_bank3.asm | User | 2K | 3 | Memory monitor utility functions and tape/SD copy utilities. | +| rfs_bank4.asm | User | 2K | 4 | CMT functions. | +| rfs_bank5.asm | User | 2K | 5 | Unused. | +| rfs_bank6.asm | User | 2K | 6 | Message printing routines, static messages, ascii conversion and help screen. | +| rfs_bank7.asm | User | 2K | 7 | Memory Test utility and 8253 Timer test. | +| cbios_bank1.asm | User | 2K | 8 | CPM CBIOS Utilities and Audio functions. | +| cbios_bank2.asm | User | 2K | 9 | CPM CBIOS Screen and ANSI Terminal functions. | +| cbios_bank3.asm | User | 2K | 10 | CPM CBIOS SD Card Controller functions. | +| cbios_bank4.asm | User | 2K | 11 | CPM CBIOS Floppy Disk Controller functions. | +| monitor_SA1510.asm | Monitor | 4K | 0 | Original SA1510 Monitor for 40 character display. | +| monitor_80c_SA1510.asm | Monitor | 4K | 1 | Original SA1510 Monitor patched for 80 character display. | +| cbios.asm | Monitor | 4K | 2 | CPM CBIOS (exec location 0xC000:0xCFFFF). | +| rfs_mrom.asm | Monitor | 4K | 3 | Rom Filing System helper functions located in the Monitor ROM space in Bank 3. These functions are used to scan and process MZF files stored within the User ROM space. | +| unassigned | Monitor | 4K | 4 | Unused slot. | +| unassigned | Monitor | 4K | 5 | Unused slot. | +| unassigned | Monitor | 4K | 6 | Unused slot. | +| unassigned | Monitor | 4K | 7 | Unused slot. | + + +
+
+In the User ROM, the rfs.asm module and all the rfs_bank<x>.asm modules form the Rom Filing System and are invoked by the original SA-1510 monitor on startup of the MZ80A (or reset). The functionality in these files provides +the Rom Filing System and additional MZ700/800 style monitor utilities. The way the code is structured, a call can be made from one bank to another without issue (stack and execution point manipulation is taken care of) thus +providing almost 16K program space in the User ROM slot. +

+ +Sharing the User ROM banks are the cbios_bank<x>.asm modules which form part of the CP/M Custom BIOS. They extend the functionality of the CBIOS without impacting RAM usage which is crucial within CP/M in order +to run as many applications as possible. +

+ +In the Monitor ROM, the rfs_mrom.asm module is located within the 4th bank (bank 3, bank 0 = original SA1510 ROM, bank 1 = 80 column modified SA1510 ROM) and provides utilities needed by the Rom Filing +System. These utilities are specifically needed for scanning and loading MZF files stored in the User ROM Flash RAM (because code executing in the User ROM cant page itself out to scan the +remainder of the ROM). +

+ +CPM v2.2 has been added with the CBIOS (Custom BIOS) being implemented within an MROM Bank (bank 2) along with User ROM Banks 8-11 mentioned above. This saves valuable RAM leaving only the CPM CCP and BDOS in RAM which can +be overwritten by programs, this gives a feasible 47K of useable program RAM. An intention is to include a paged RAM chip in the next release of the RFS Hardware which will allow upto 52K of program RAM. +

+ +There are several rapidly written shell scripts to aid in the building of the RFS software (which in all honesty need to be written into a single Python or Java tool). These can be seen in the following table along with their purpose: +

+
+ +| Script | Description | +|------------------ | ------------------------------------------------------------------------------------------------------------------------ | +| assemble_cpm.sh | A shell script to build the CPM binary, the CPM MZF format application for loading via RFS and the CPM ROM Drives 0 & 1 | +| assemble_rfs.sh | A bash script to build the Rom Filing System ROM images. | +| assemble_roms.sh | A bash script to build all the standard MZ80A ROMS, such as the SA-1510 monitor ROM. | +| make_roms.sh | A bash script to build the RFS ROMS suitable for programming in the 512KByte Flash RAMS. These images contain the banked RFS ROMS, the various system ROMS such as SA-1510 and all the MZF programs to be loaded by the RFS. | +| make_cpmdisks.sh | A bash script to build a set of CPM disks, for use as Raw images in the SD Card or Rom drives and as CPC Extended Disk Formats for use in a Floppy disk emulator or copying to physical medium. | +| make_sdcard.sh | A bash script to create an SD card image combining the RFS Images and several CPM disk drives. This image is then binary copied onto the SD card and installed into the RFS SD Card reader. | +| mzftool.pl | A perl script to create/extract and manipulate MZF images. | +| processMZFfiles.sh| A bash script to convert a set of MZF programs into sectored images suitable for use in the Rom Filing System ROMS. | +| sdtool | A binary created from the src/tools repository which builds the RFS SD Card image, creating a directory and adding MZF/Binary applications into the drive image. | + + +-------------------------------------------------------------------------------------------------------- + +### Sharp BASIC SA-5510 + +
+The RFS development is primarily for the Sharp MZ-80A and as such it has a large base of BASIC programs. I originally converted Nascom's Microsoft BASIC to use under RFS as the source code was available making the task much easier + there is a large base +of BASIC programs for this interpreter. +

+ +After a bit of self-debate I decided to spend time disassembling the original Sharp SA-5510 BASIC to understand how it works and adapt a version suitable to work with the SD card under RFS. Byte location of the interpreter is critical as some programs +are written to expect functions at known locations so disassembly had to be accurate and modifications/enhancements made outside of the main program. +

+ +The solution I came up with was to extend the LOAD and SAVE commands and add an additional command DIR for listing of a card directory. +

+ +The LOAD/SAVE commands behave exactly as original except they are now intercepted and processed by RFS. On boot, the active SD drive (RFS has 10 drives, 0..9) is used and issuing a LOAD command will search for the requested program or choose the first program at location 00. +

+ +The table below lists the command extensions with a brief description. +
+ +| Command | Parameter | Description | +| ------- | --------- | ----------- | +| LOAD | "TEST" | Look for the program "TEST" on the active drive, generally 0 when SA-5510RFS is started. | +| LOAD | | Load the first or subsequent file in the active drive. If a file at slot 5 was previously loaded, issuing this command would load file at slot 6. | +| LOAD | "3:TEST" | Look for the program "TEST" on RFS Drive 3, setting the active drive to 3 at the same time. | +| LOAD | "C:TEST" | Look for the program "TEST" on the internal cassette drive, setting the active drive to the internal cassette at the same time. | +| SAVE | "TEST" | Find a program called "TEST" in the active drive and overwrite it, if it doesnt exist, it will create a file called "TEST". On the cassette it will just write immediately wherever you have positioned the tape. | +| SAVE | | Save the current program to a generated name "DEFAULT<number>" where <number> is the current sequence number used in the LOAD command. | +| SAVE | "3:TEST" | Find a program called "TEST" on RFS Drive 3 and overwrite it, if it doesnt exist, it will create a file called "TEST". It will also set the active drive to 3 for future operations. | +| SAVE | "C:TEST" | Save the current program to the internal cassette drive with the name "TEST". It will also set the active drive to C (CMT) for future operations. | +| DIR | | List out the SD card directory in RFS format, ie. A file number followed by the filename. | +| DIR | "3:" | List out the SD card directory on drive 3 in RFS format, ie. A file number followed by the filename. It will also set the active drive to 3 for future operations. | + + +
+To LOAD or SAVE a file to a different drive, qualify the filename with "<drive no>:...",
+    ie. LOAD "3:TEST" - this will load program "TEST" from drive 3 and make drive 3 active. +

+ +To LOAD or SAVE to the builtin cassette drive, use the qualifier "C:"
+    ie. LOAD "C:" or LOAD "C:TEST". +

+ +The new version of BASIC SA-5510 is named "BASIC SA-5510RFS" on the RFS ROM Drive and SD Drive. +
+ +See [SD Card Organisation](/sharpmz-upgrades-rfs/#sd-card-organisation) below for a description of the default drives and contents. + +NB: I havent yet fully implemented the random file read/write BASIC operations as I dont fully understand the logic. Once I get a suitable program I can analyse I will adapt RFS so that it seeks, read/writes a single 64K tape block. If there exists +programs with > 64K databases then RFS will need to be adapted to span successive blocks. + +-------------------------------------------------------------------------------------------------------- + +### Microsoft BASIC + +
+The Sharp machines have several versions of BASIC available to use, on cassette or floppy, although they have limited compatibility with each other (ie. MZ80A SA5510 differs to the MZ-700 S-BASIC). Each machine can have +several variants, ie. SA-6510 for disk drive use or third party versions such as OM-500. Most of these BASIC interpreters run well on RFS so long as they were intended for use on the MZ-80A albeit they are limited to CMT (cassette) or Floppy storage only. +

+ +One drawback of the existing BASIC interpreters is availability of source code to update them with RFS extensions. Unless you disassemble the binary or edit the binary directly adding RFS commands is not possible. I came across this same issue during the +development of TZFS on the tranZPUter and needing a version of BASIC to aid in hardware debugging I settled on using a version of Microsoft Basic where the source code was freely available, ie. the NASCOM v4.7b version of BASIC from Microsoft. +This version of Basic has quite a large following in the retro world and consequently a plethora of existing BASIC programs. It is also fairly simple to extend with additional commands. +
+ +There are two versions of the NASCOM 4.7b source code available on the internet, either the original or a version stripped of several hardware dependent commands such as LOAD /SAVE /SCREEN but tweaked to add binary/hex variables by [Grant Searle](http://searle.wales/) for his +[multicomp project](http://searle.x10host.com/Multicomp/index.html). I took both versions to make a third, writing and expanding on available commands including the missing tape commands. + +
+As the projects developed, Microsoft BASIC needed to support a variety of configurations, even under RFS there are potentially 5 possibilities. Not counting the tranZPUter running under RFS or the TZFS versions there are 3 RFS versions to consider, namely: +
+ + * MS-BASIC(MZ-80A) - Original hardware can be booted from cassette. + * MS-BASIC(RFS40) - RFS upgrade with 40 column display. + * MS-BASIC(RFS80) - RFS upgrade with 80 column display. + +Each appears on the RFS drive and should be used according to hardware and need. The original [NASCOM Basic Manual](../docs/Nascom_Basic_Manual.pdf) should be consulted for the standard set of commands and functions. The table below outlines additions which I have added to better +suite the MZ-80A / RFS hardware. + +| Command | Parameters | Version | Description | +|--------- |-------------------------------------|----------------------|------------------------------------------------------------------------------------| +| CLOAD | "\" | MZ-80A | Load a cassette image from the tape drive, ie. tokenised BASIC program\. | +| CSAVE | "\" | MZ-80A | Save current BASIC program to the tape drive in tokenised cassette image format\. | +| CLOAD | "[\:]\" | RFS40, RFS80 | Load a cassette image from the tape drive or SD card, ie. tokenised BASIC program\.
\ specifies the RFS drives to use, 0..9 and also makes the drive active for future commands\.
\ can be either an MZ 17 character name or a 2 digit RFS hex number.
i.e. CLOAD "8:13" or CLOAD "8:othello" will load the othello program from RFS drive 8. | +| CSAVE | "[\:]\" | RFS40, RFS80 | Save current BASIC program to the tape drive or SD card in tokenised cassette image format\. | +| DIR | "[\:]" | RFS40, RFS80 | Display the active or specified RFS drive contents in RFS format. | +| ANSITERM | 0 = Off, 1 = On | MZ-80A, RFS40, RFS80 | Disable or enable (default) the inbuilt Ansi Terminal processor which recognises ANSI escape sequences and converts them into screen actions. This allows for use of portable BASIC programs which dont depend on specialised screen commands. FYI: The Star Trek V2 BASIC program uses ANSI escape sequences\. | + +
+It is also quite easy to adapt this BASIC by changing the memory mode commands so that it will operate on a Sharp MZ-700/MZ-800 with full 64K RAM. The tranZPUter project contains such a version. +
+ + +##### NASCOM Cassette Image Converter Tool + +
+NASCOM BASIC programs can be found on the internet as Cassette image files. These files contain all the tape formatting data with embedded tokenised BASIC code. In order to be able to use these files I wrote a converter program which strips out the tape formatting data and reconstructs the BASIC code. In +addition, as this version of BASIC has been enhanced to support new commands, the token values have changed and so this program will automatically update the token value during conversion. +
+ +The converter is designed to run on the command line and it's synopsis is: + +```bash +NASCONV v1.0 + +Required:- + -i | --image Image file to be converted. + -o | --output Target destination file for converted data. + +Options:- + -l | --loadaddr MZ80A basic start address. NASCOM address is used to set correct MZ80A address. + -n | --nasaddr Original NASCOM basic start address. + -h | --help This help test. + -v | --verbose Output more messages. + +Examples: + nasconv --image 3dnc.cas --output 3dnc.bas --nasaddr 0x10fa --loadaddr 0x4341 Convert the file 3dnc.cas from NASCOM cassette format. +``` + +The files created by the converter are easily useable on the tranZPUter, for the RFS version I need to update the BASIC code to read files from the SD card, wip. + +-------------------------------------------------------------------------------------------------------- + +### RFS Monitor + +
+Upon boot, the typical SA-1510 monitor signon banner will appear and be appended with "+ RFS" if all works well. The usual '* ' prompt appears and you can then issue any of the original SA-1510 commands along with a set of enhanced +commands, some of which were seen on the MZ700/ MZ800 range and others are custom. +

+ +The full set of commands are listed in the table below: +
+ + +| Command | Parameters | Description | +|---------|-------------------------------------|------------------------------------------------------------------------------------| +| 1 .. 4 | | Switch to RFS Drive, ie. 1. switches to RFS Drive 1. | +| 40 | n/a | Switch to 40 Character mode if the 40/80 Column display upgrade has been added\. | +| 80 | n/a | Switch to 80 Character mode if the 40/80 Column display upgrade has been added\. | +| 700 | n/a | Switch to Sharp MZ-700 40 column BIOS and mode\. | +| 7008 | n/a | Switch to Sharp MZ-700 80 column BIOS and mode\. | +| B | n/a | Enable/Disable key entry beep\. | +| BASIC | n/a | Locates BASIC SA-5510 on the SD card, loads and runs it. | +| C | \[\<8 bit value\>\] | Initialise memory from 0x1200 \- Top of RAM with 0x00 or provided value\. | +| CPM | n/a | Locates CP/M 2.23 on the SD card, loads and runs it. | +| D | \
\[\\] | Dump memory from \
to \ (or 20 lines) in hex and ascii. When a screen is full, the output is paused until a key is pressed\.

Subsequent 'D' commands without an address value continue on from last displayed address\.

Recognised keys during paging are:
'D' - page down, 'U' - page up, 'X' - exit, all other keys list another screen of data\.| +| EC | \ or
\ | Erase file from SD Card\. The SD Card is searched for a file with \ or \ and if found, erased\. | +| F | \[\\] | Boot from the given Floppy Disk, if no disk number is given, you will be prompted to enter one\. | +| f | n/a | Execute the original Floppy Disk AFI code @ 0xF000 | +| H | n/a | Help screen of all these commands\. | +| IR | n/a | Paged directory listing of the files stored in ROM\. Each file title is preceded with a hex number which can be used to identify the file\. | +| IC | n/a/ | Paged directory listing of the files stored on the SD Card\. Each file title is preceded with a hex number which can be used to identify the file\. | +| J | \
| Jump \(start execution\) at location \
\. | +| L \| LT | n/a | Load file into memory from Tape and execute\. | +| LTNX | n/a | Load file into memory from Tape, dont execute\. | +| LR | \ or
\ | Load file into memory from ROM\. The ROM is searched for a file with \ or \ and if found, loaded and executed\. | +| LRNX | \ or
\ | Load file into memory from ROM\. The ROM is searched for a file with \ or \ and if found, loaded and not executed\. | +| LC | \ or
\ | Load file into memory from SD Card\. The SD Card is searched for a file with \ or \ and if found, loaded and executed\. | +| LCNX | \ or
\ | Load file into memory from SD Card\. The SD Card is searched for a file with \ or \ and if found, loaded and not executed\. | +| M | \
| Edit and change memory locations starting at \
\. | +| P | n/a | Run a test on connected printer\. | +| R | n/a | Run a memory test on main mmemory\. | +| S | \ \ \ | Save a block of memory to tape\. You will be prompted to enter the filename\.

Ie\. S120020001203 - Save starting at 0x1200 up until 0x2000 and set execution address to 0x1203\. | +| SC | \ \ \ | Save a block of memory to SD Card\. You will be prompted to enter the filename\. | +| SD2T | \ or
\ | Copy a file from SD Card to Tape\. The SD Card is searched for a file with \ or \ and if found, copied to a tape in the CMT\. | +| T | n/a | Test the 8253 timer\. | +| T2SD | n/a | Copy a file from Tape onto the SD Card. A program is loaded from Tape and written to a free position in the SD Card\. | +| V | n/a | Verify a file just written to tape with the original data stored in memory | + + +If the 40/80 column card is installed, typing '4' switches to 40 Column display, typing '8' switches to 80 Column display. For the directory listing commands, 4 columns of output will be shown when in 80 column mode. + +-------------------------------------------------------------------------------------------------------- + +### Sharp MZ-700 Mode + +
+The tranZPUter SW Version 2.1 board has now been developed and RFS software updated to coexist with this board without a K64F processor (the processor can be present but no use of its services will be made under RFS). This board adds Sharp MZ-700 hardware level +compatibility logic, both memory management and keyboard remapping are made within hardware. +

+ +In order to cater for this upgrade, RFS has been updated to include the MZ-700 1Z-013A monitor ROM and a command to enable it. When enabled, the machine is set to compatibility mode, the 1Z-013A ROM loaded as the primary monitor and reset. The keyboard +is remapped real time and so is the memory. Loading S-BASIC, read/write cassette etc works as expected on an MZ-700. +
+ + +-------------------------------------------------------------------------------------------------------- + + +## Building RFS + +
+Building the Rom Filing System involves assembling the Z80 Assembly language source into a machine code binary and packaging it into an image suitable for writing onto a 512Kbyte Flash RAM. You may also want to include MZF applications +in the ROMS for rapid exection via the RFS system. If you intend to use CPM, see also the CPM documentation. +

+ +To accomplish it you need several tools and at the moment it is a script aided manual process. +
+ +## Paths + +For ease of reading, the following shortnames refer to the corresponding path in this chapter. + +| Short Name | | +|------------------|----------------------------------------------------------------------------| +| \[\\] | The path where this repository was extracted on your system. | +| \ | \[\\]/MZ80A_RFS/software | +| \ | \[\\]/MZ80A_RFS/software/roms | +| \ | \[\\]/MZ80A_RFS/software/CPM | +| \ | \[\\]/MZ80A_RFS/software/tools | +| \ | \[\\]/MZ80A_RFS/software/src | +| \ | \[\\]/MZ80A_RFS/software/MZF | +| \ | \[\\]/MZ80A_RFS/software/MZB | + + +## Tools + +
+All development has been made under Linux, specifically Debian/Ubuntu. I use Windows for flashing the RAM's and using the GUI version of CP/M Tools but havent dedicated any time into building the RFS under Windows. I will in due course +create a Docker image with all necessary tools installed, but in the meantime, in order to assemble the Z80 code, the C programs and work with the CP/M software andCP/M disk images, you will need to obtain and install the following tools. +
+ +[Z80 Glass Assembler](http://www.grauw.nl/blog/entry/740/) - A Z80 Assembler for converting Assembly files into machine code.
+[samdisk](https://simonowen.com/samdisk/) - A multi-os command line based low level disk manipulation tool.
+[cpmtools](https://www.cpm8680.com/cpmtools/) - A multi-os command line CP/M disk manipulation tool.
+[CPMToolsGUI](http://star.gmobb.jp/koji/cgi/wiki.cgi?page=CpmtoolsGUI) - A Windows based GUI CP/M disk manipulation tool.
+[z88dk](https://www.z88dk.org/forum/) - An excellent C development kit for the Z80 CPU.
+[sdcc](http://sdcc.sourceforge.net/) - Another excellent Small Device C compiler, the Z80 being one of its targets. z88dk provides an enhanced (for the Z80) version of this tool within its package.
+ + + +## Software + +Building the software and final ROM images can be done by cloning the [repository](https://github.com/pdsmart/MZ80A_RFS.git) and running some of the shell scripts and binaries provided. + +The basic procedure to build RFS as follows: + + 1. Make the RFS binary using \/assemble_rfs.sh, this creates \/rfs.rom for the User Bank Flash RAM and \/rfs_mrom.rom for the Monitor Bank Flash RAM. + 2. Make the original MZ80A monitor roms using \/assemble_roms.sh, this creates \/monitor_SA1510.rom and \/monitor_80c_SA1510.rom for the Monitor Bank Flash RAM. + 3. Make the rom images using \/make_roms.sh, this creates \/USER_ROM_256.bin for the User Bank Flash RAM and \/MROM_256.bin for the Monitor Bank Flash RAM. + The rom images also contain a packed set of MZF applications found in the \ directory. Edit the script \/make_roms.sh to add or remove applications from the rom images. + +The above procedure has been encoded in a set of shell scripts and C tools, which at the simplest level, is to run these commands: +````bash +cd +tools/assemble_cpm.sh +tools/assemble_rfs.sh +tools/assemble_roms.sh +tools/make_cpmdisks.sh +tools/make_roms.sh +tools/make_sdcard.sh +```` + +The output of the above commands are ROM images \/MROM_256.bin and \/USER_ROM.256.bin which must be flashed into 512Kbyte Flash RAMS and inserted into the sockets on the +RFS adapter. + +The applications which can be stored in the Flash RAMS are located in the \ directory. In order to use them within the Flash RAM's, the applications need to be converted into sector rounded binary images and stored in the +\ directory. The tool \/processMZFiles.sh has been created for this purpose. Simply copy any MZF application into the \ directory and run this tool: + +```bash +cd +tools/processMZFfiles.sh +``` +The files will be converted and stored in the \ directory and then used by the \/make_roms.sh script when creating the ROM images. The \/make_roms.sh script lists all the applications to be added into the +Flash RAM's and it will pack as many as space permits. To ensure your application appears in the Flash RAM, add it to the top of the list (just the filename not the .MZF extension), ie: + +```bash +Edit the file /make_roms.sh +Locate the line: ROM_INCLUDE= +Below this line, add your application in the format: ROM_INCLUDE+="${MZBPATH}/.${SECTORSIZE}.bin" +ie. ROM_INCLUDE+="${MZB_PATH}/A-BASIC_SA-5510.${SECTORSIZE}.bin:" +Save the file and run the commands above to build the MonitorROM and USERROM's. +``` + + +
+The SD Card image is created by the <tools>/make_sdcard.sh script and in its basic form creates an image which can be directly copied onto an SD Card. The start of the image is a Rom Filing System image which is populated with +MZF applications from the <MZF> directory. The RFS image is followed by several CPM Disk images and together is canned the SD Card Filing System. +
+ +In order to add/remove MZF applications from the Rom Filing System image, edit the <tools>/make_sdcard.sh script and change which MZF applications are to be installed. CP/M images are also added to the SD Card and this is covered in the +[CP/M](sharpmz-upgrades-cpm/) section. +
+ +To copy the SD Card Filing System image created by the <tools>/make_sdcard.sh script onto an SD card, use a suitable tool direct binary copy tool such as dd under Linux.
+ie. dd if=SHARP_MZ80A_RFS_CPM_IMAGE_1.img of=/dev/sdd bs=512 +
+ +
+No disk partitioning is needed as the SDCFS image starts at sector 0 on the SD Card. Once the image has been copied, place into the SD Card Reader on the RFS Board. +
+ + +## SD Card + +
+A recent addition to the Rom Filing System is an SD Card. The initial version was implemented in minimal hardware using the bitbang technique and provides performance comparable with a floppy disk without the seek overhead or interleave +times. In v2.0 onwards this was extended to a full hardware SPI circuit giving ROM level performance. +
+ +I worked on using the [Petit FatFS by El CHaN](http://elm-chan.org/fsw/ff/00index_p.html) for the SD Card filing system, which is excellent, having previously used the full Fat version with my ZPU project, but the Z80 isnt the best +architecture for code size when using C. In the repository in \/tools is my developments along this line with a C program called 'sdtest' and a modularized PetitFS along with manually coded Z80 assembler to handle the bitbang +algorithm and SD Card initialisation and communications. The program compiles into an MZF application and when run performs flawlessly. The only issue as mentioned is size and when your limited to 2K and 4K banked roms with a 12K +filing system you have an immediate storage issue. It is feasible to build PetitFS into a set of ROM banks using the z88dk C Compiler which supports banked targets and \_\_far constructs but it would be a lot of effort for something +which really isnt required. + +
+I thus took a step back and decided to create my own simple filing system which is described below. This filing system is used for Sharp MZ80A MZF applications and is for both read and write operations. +
+ +### SD Card Filing System + +
+The SD Card Filing System resides at the beginning of the SD Card and is followed by several CPM disk drive images. The SDCFS image is constructed of a directory plus 256 file blocks. The directory in the image can contain upto 256 entries, +each entry being 32 bytes long. +

+ +10 SDCFS images are supported per SD Card, numbered 0..9. +

+ +The SDCFS directory entry is based on the MZF Header format and is as follows: +
+ +| FLAG1 | FLAG2 | FILE NAME | START SECTOR | SIZE | LOAD ADDR | EXEC ADDR | RESERVED | +|--------|--------|-----------|--------------|---------|-----------|-----------|----------| +| 1 Byte | 1 Byte | 17 Bytes | 4 Bytes | 2 Bytes | 2 Bytes | 2 Bytes | 3 Bytes | + + +| Parameter            | Description | +| --------- | --------------------------------------------------------------------------------------------- | +| FLAG1 | BIT 7 = 1, Valid directory entry, 0 = inactive. | +| FLAG2 | MZF Execution Code, 0x01 = Binary | +| FILENAME | Standard MZF format filename. | +| START SECTOR | Sector in the active SDCFS image where the program starts. It always starts at position 0 of the sector. | +| SIZE | Size in bytes of the program. Each file block occupies 64Kbyte space (as per a tape) and this parameter provides the actual space occupied by the program at the current time. | +| LOAD ADDR | Start address in memory where data should be loaded. | +| EXEC ADDR | If a binary then this parameter specifies the location to auto execute once loaded. | +| RESERVED | Not used at the moment. | + +Each file block, 1 per directory entry, is 64K long which is intentional as it keeps a fixed size which is in line +with the maximum tape (CMT) length and can be freely read/written to just as if it were a tape. This allows for easy +use within tape based applications such as Basic SA-5510 or for copying SD Card \<-\> CMT. + +
+The remainder of the SD Card is filled with 16MByte CPM Disk drive images. Each image is organised as 32 (512byte) Sectors x 1024 tracks +and 1 head. Each image will be mounted in CPM under its own drive letter. +
+ +Visually, the SD Card is organised as follows: + +``` +ADDR SECTOR FUNCTION +00000000 0000 --------------------------------------------------------------------------- + | ROM FILING SYSTEM IMAGE 0 | + | | +00000000 0000 | RFS DIRECTORY ENTRY 000 (32BYTE) | + | .. | + | .. | +00001FE0 000F | RFS DIRECTORY ENTRY 255 (32BYTE) | +00002000 0010 --------------------------------------------------------------------------- + | RFS FILE BLOCK 0 | +00011FFF 008F --------------------------------------------------------------------------- + ... +00FF2000 7F90 --------------------------------------------------------------------------- + | RFS FILE BLOCK 255 | +01001FFF 800F --------------------------------------------------------------------------- + +... + +09012000 48090 --------------------------------------------------------------------------- + | ROM FILING SYSTEM IMAGE 9 | + | | +09012000 48090 | RFS DIRECTORY ENTRY 000 (32BYTE) | + | .. | + | .. | +09013FE0 4809F | RFS DIRECTORY ENTRY 255 (32BYTE) | +09014000 480A0 --------------------------------------------------------------------------- + | RFS FILE BLOCK 0 | +09023FFF 4811F --------------------------------------------------------------------------- + ... +0A004000 50020 --------------------------------------------------------------------------- + | RFS FILE BLOCK 255 | +0A013FFF 5009F --------------------------------------------------------------------------- + +... padding ... + +10000000 80000 --------------------------------------------------------------------------- + | | + | CP/M DISK IMAGE 0 | + | | +11000000 88000 --------------------------------------------------------------------------- + | | + | CP/M DISK IMAGE 1 | + | | +12000000 90000 --------------------------------------------------------------------------- + | | + | CP/M DISK IMAGE 2 | + | | +XX000000 XX0000 --------------------------------------------------------------------------- + | | + | CP/M DISK IMAGE | + | | + --------------------------------------------------------------------------- +``` + +## SD Card Organisation + +The tools in the repository create an SD card with 10 RFS Drives and 6 CP/M Drives. These are organised as follows: + +| RFS Drive | Description | +| --------- | ----------- | +| 0 | Common and MZ-80A Machine Code programs. | +| 1 | MZ-80K Machine Code programs. | +| 2 | MZ-700 Machine Code programs. | +| 3 | MZ-800/MZ-1500 Machine Code programs. | +| 4 | MZ-80B/MZ-2000 Machine Code programs. | +| 5 | BASIC programs, type 2 (MZ80A) | +| 6 | BASIC programs, type 2 (MZ80K) | +| 7 | BASIC programs, type 5 (MZ700/800) | +| 8 | Other programs. | +| 9 | Other programs. | + +| CPM Drive | User No | Contents | Comments | +| --------- | ------- | -------- | -------- | +| 0 | 0 | CPM00_SYSTEM | System programs. | +| | 1 | CPM01_TURBOP | Turbo Pascal. | +| | 2 | CPM02_HI_C | Hi-Soft C | +| | 3 | CPM03_FORTRAN80 | Fortran 80 | +| | 4 | CPM04_MBASIC | Microsoft Basic 80/85 | +| | 5 | CPM05_COBOL80_v13 | Cobol v1.3 | +| | 6 | CPM06_COBOL80_v20 | Cobol v2.0 | +| | 7 | CPM07_COBOL80 | Cobol 80 | +| | 8 | CPM08_Z80FORTH | Z80 Forth | +| | 9 | CPM09_CPMTEX | CP/M Tex | +| | 10 | CPM10_DISKUTILFUNC5 | Disk utilities. | +| | 11 | CPM11_MAC80 | Macro Assembler 80 | +| | 12 | CPM29_ZSID_v14 | ZSID Debugger. | +| | 13 | CPM32_ZCPR3 | ZCPR3 CCP enhancement. | +| | 14 | CPM33_ZCPR3_COMMON | ZCPR3 CCP enhancement common utilities. | +| 1 | 0 | CPM12_PASCALMTP_v561 | Pascal v5.61 | +| | 1 | CPM26_TPASCAL_v300a | Turbo Pascal v3.00a | +| | 2 | CPM13_MTPUG_01 | Pascal User Group Disk 01 | +| | 3 | CPM14_MTPUG_02 | Pascal User Group Disk 02 | +| | 4 | CPM15_MTPUG_03 | Pascal User Group Disk 03 | +| | 5 | CPM16_MTPUG_04 | Pascal User Group Disk 04 | +| | 6 | CPM17_MTPUG_05 | Pascal User Group Disk 05 | +| | 7 | CPM18_MTPUG_06 | Pascal User Group Disk 06 | +| | 8 | CPM19_MTPUG_07 | Pascal User Group Disk 07 | +| | 9 | CPM20_MTPUG_08 | Pascal User Group Disk 08 | +| | 10 | CPM21_MTPUG_09 | Pascal User Group Disk 09 | +| | 11 | CPM22_MTPUG_10 | Pascal User Group Disk 10 | +| 2 | 0 | CPM23_PLI | PLI Compiler. | +| | 1 | CPM24_PLI80_v13 | PLI 80 Compiler v1.3 | +| | 2 | CPM25_PLI80_v14 | PLI 80 Compiler v1.4 | +| | 3 | CPM28_PLM80 | PLM 80. | +| | 4 | CPM27_WORDSTAR_v30 | WordStar v3.0 | +| | 5 | CPM31_WORDSTAR_v330 | WordStar v3.3 | +| | 6 | CPM30_WORDSTAR_v400 | WordStar v4.0 | +| 3 | 0 | CPM_MC_C0 | Grant Searle's CPM collection Disk C0 | +| | 1 | CPM_MC_C1 | C1 | +| | 2 | CPM_MC_C2 | C2 | +| | 3 | CPM_MC_C3 | C3 | +| | 4 | CPM_MC_C4 | C4 | +| | 5 | CPM_MC_C5 | C5 | +| | 6 | CPM_MC_C6 | C6 | +| | 7 | CPM_MC_C7 | C7 | +| | 8 | CPM_MC_C8 | C8 | +| | 9 | CPM_MC_C9 | C9 | +| 4 | 0 | CPM_MC_D0 | Grant Searle's CPM collection Disk D0 | +| | 1 | CPM_MC_D1 | D1 | +| | 2 | CPM_MC_D2 | D2 | +| | 3 | CPM_MC_D3 | D3 | +| | 4 | CPM_MC_D4 | D4 | +| | 5 | CPM_MC_D5 | D5 | +| | 6 | CPM_MC_D6 | D6 | +| | 7 | CPM_MC_D7 | D7 | +| | 8 | CPM_MC_D8 | D8 | +| | 9 | CPM_MC_D9 | D9 | +| 5 | 0 | CPM_MC_E0 | Grant Searle's CPM collection Disk E0 | +| | 1 | CPM_MC_E1 | E1 | +| | 2 | CPM_MC_E2 | E2 | +| | 3 | CPM_MC_E3 | E3 | +| | 4 | CPM_MC_E4 | E4 | +| | 5 | CPM_MC_E5 | E5 | +| | 6 | CPM_MC_E6 | E6 | +| | 7 | CPM_MC_E7 | E7 | +| | 8 | CPM_MC_E8 | E8 | +| | 9 | CPM_MC_E9 | E9 | +| 6 | 0 | CPM_MC_F0 | Grant Searle's CPM collection Disk F0 | +| | 1 | CPM_MC_F1 | F1 | +| | 2 | CPM_MC_F2 | F2 | +| | 3 | CPM_MC_F3 | F3 | +| | 4 | CPM_MC_F4 | F4 | +| | 5 | CPM_MC_F5 | F5 | +| | 6 | CPM_MC_F6 | F6 | +| | 7 | CPM_MC_F7 | F7 | +| | 8 | CPM_MC_F8 | F8 | +| | 9 | CPM_MC_F9 | F9 | + + + +## Credits + +
+Where I have used or based any component on a 3rd parties design I have included the original authors copyright notice within the headers or given due credit. All 3rd party software, to my knowledge and research, is open source and freely useable, if there is found to be any component with licensing restrictions, it will be removed from this repository and a suitable link/config provided. +
+ + +## Licenses + +
+This design, hardware and software, is licensed under the GNU Public Licence v3. +
+ +### The Gnu Public License v3 + +
+ The source and binary files in this project marked as GPL v3 are free software: you can redistribute it and-or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. +

+ + The source files are distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. +

+ + You should have received a copy of the GNU General Public License along with this program. If not, see http://www.gnu.org/licenses/. +
diff --git a/asm/1z-013a.asm b/asm/1z-013a.asm new file mode 100644 index 0000000..a0a99ca --- /dev/null +++ b/asm/1z-013a.asm @@ -0,0 +1,3307 @@ + ; MONITOR PROGRAM 1Z-013A + ; (MZ700) FOR PAL + ; REV. 83.4.7 + ; Tuesday, 02 of June 1998 at 10:02 PM + ; Tuesday, 09 of June 1998 at 07:17 AM +; Configurable parameters. These are set in the wrapper file, ie monitor_SA1510.asm +; +;COLW: EQU 40 ; Width of the display screen (ie. columns). +;ROW: EQU 25 ; Number of rows on display screen. +;SCRNSZ: EQU COLW * ROW ; Total size, in bytes, of the screen display area. + + ORG 0000h ; 0000h Entrypoint +MONIT: JP START ; MONITOR ON +GETL: JP QGETL ; GET LINE (END "CR") +LETNL: JP QLTNL ; NEW LINE +NL: JP QNL ; +PRNTS: JP QPRTS ; PRINT SPACE +PRNTT: JP QPRTT ; PRINT TAB +PRNT: JP QPRNT ; 1 CHARACTER PRINT +MSG: JP QMSG ; 1 LINE PRINT (END "0DH") +MSGX: JP QMSGX ; RST 18H +GETKY: JP QGET ; GET KEY +BRKEY: JP QBRK ; GET BREAK +WRINF: JP QWRI ; WRITE INFORMATION +WRDAT: JP QWRD ; WRITE DATA +RDINF: JP QRDI ; READ INFORMATION +RDDAT: JP QRDD ; READ DATA +VERFY: JP QVRFY ; VERIFYING CMT +MELDY: JP QMLDY ; RST 30H +TIMST: JP QTMST ; TIME SET + NOP + NOP + JP 1038H ; INTERRUPT ROUTINE (8253) +TIMRD: JP QTMRD ; TIME READ +BELL: JP QBEL ; BELL ON +XTEMP: JP QTEMP ; TEMPO SET (1 - 7) +MSTA: JP MLDST ; MELODY START +MSTP: JP MLDSP ; MELODY STOP + +START: LD SP,SPV ; STACK SET (10F0H) + IM 1 ; IM 1 SET + CALL QMODE ; 8255 MODE SET + CALL QBRK ; CTRL ? + JR NC,ST0 + CP 20H ; KEY IS CTRL KEY + JR NZ,ST0 +CMY0: OUT (0E1H),A ; D000-FFFFH IS DRAM + LD DE,0FFF0H ; TRANS. ADR. + LD HL,DMCP ; MEMORY CHANG PROGRAM + LD BC,05H ; BYTE SIZE + LDIR + JP 0FFF0H ; JUMP $FFF0 + +DMCP: OUT (0E0H),A ; 0000H-0FFFH IS DRAM + JP 0000H + +ST0: LD B,0FFH ; BUFFER CLEAR + LD HL,NAME ; 10F1H-11F0H CLEAR + CALL QCLER + LD A,16H ; LASTER CLR. + CALL PRNT + IF MODE80C = 0 + LD A,017H ; Black background, white characters. Bit 7 is clear as a write to bit 7 @ DFFFH selects 40Char mode. + ELSE + LD A,017H ; Blue background, white characters in colour mode. Bit 7 is set as a write to bit 7 @ DFFFH selects 80Char mode. + ENDIF + ; LD A,71H ; BACK:BLUE CHA.:WRITE + LD HL,0D800H ; COLOR ADDRESS + CALL NCLR8 + LD HL,TIMIN ; INTERRUPT JUMP ROUTINE + LD A,0C3H + LD (1038H),A + LD (1039H),HL + LD A,04H ; NORMAL TEMPO + LD (TEMPW),A + CALL MLDSP ; MELODY STOP + CALL NL + LD DE,MSGQ3 ; ** MONITOR 1Z-013A ** + RST 18H ; CALL MGX + CALL QBEL +SS: LD A,01H + LD (SWRK),A ; KEY IN SILENT + LD HL,0E800H ; USR ROM? + LD (HL),A ; ROM CHECK + JR FD2 + +ST1: CALL NL + LD A,2AH ; "*" PRINT + CALL PRNT + LD DE,BUFER ; GET LINE WORK (11A3H) + CALL GETL +ST2: LD A,(DE) + INC DE + CP 0DH + JR Z,ST1 + CP 'J' ; JUMP + JR Z,GOTO + CP 'L' ; LOAD PROGRAM + JR Z,LOAD + CP 'F' ; FLOPPY ACCESS + JR Z,FD + CP 'B' ; KEY IN BELL + JR Z,SG + CP '#' ; CHANG MEMORY + JR Z,CMY0 + CP 'P' ; PRINTER TEST + JR Z,PTEST + CP 'M' ; MEMORY CORRECTION + JP Z,MCOR + CP 'S' ; SAVE DATA + JP Z,SAVE + CP 'V' ; VERIFYING DATA + JP Z,VRFY + CP 'D' ; DUMP DATA + JP Z,DUMP + NOP + NOP + NOP + NOP + JR ST2 ; NO COMMAND + + ; JUMP COMMAND + +GOTO: CALL HEXIY + JP (HL) + + ; KEY SOUND ON/OFF + +SG: LD A,(SWRK) ; D0=SOUND WORK + RRA + CCF ; CHANGE MODE + RLA + JR SS+2 + + ; FLOPPY + +FD: LD HL,0F000H ; FLOPPY I/O CHECK +FD2: LD A,(HL) + OR A + JR NZ,ST1 +FD1: JP (HL) + + ; ERROR (LOADING) + +QER: CP 02H ; A=02H : BREAK IN + JR Z,ST1 + LD DE,MSGE1 ; CHECK SUM ERROR + RST 18H ; CALL MSGX +L010F: JR ST1 + + ; LOAD COMMAND + +LOAD: CALL QRDI + JR C,QER +LOA0: CALL NL + LD DE,MSGQ2 ; LOADING + RST 18H ; CALL MSGX + LD DE,NAME ; FILE NAME + RST 18H ; CALL MSGX + CALL QRDD + JR C,QER + LD HL,(EXADR) ; EXECUTE ADDRESS + LD A,H + CP 12H ; EXECUTE CHECK + JR C,L010F + JP (HL) + + ; GETLINE AND BREAK IN CHECK + ; + ; EXIT BREAK IN THEN JUMP (ST1) + ; ACC=TOP OF LINE DATA + +BGETL: EX (SP),HL + POP BC ; STACK LOAD + LD DE,BUFER ; MONITOR GETLINE BUFF + CALL GETL + LD A,(DE) + CP 1BH ; BREAK CODE + JR Z,L010F ; JP Z,ST1 + JP (HL) + + ; ASCII TO HEX CONVERT + ; INPUT (DE)=ASCII + ; CY=1 THEN JUMP (ST1) + +HEXIY: EX (SP),IY + POP AF + CALL HLHEX + JR C,L010F ; JP C,ST1 + JP (IY) + +MSGE1: DB "CHECK SUM ER.\r" + + ; PLOTTER PRINTER TEST COMMAND + ; (DPG23) + ; &=CONTROL COMMANDS GROUP + ; C=PEN CHANGE + ; G=GRAPH MODE + ; S=80 CHA. IN 1 LINE + ; L=40 CHA. IN 1 LINE + ; T=PLOTTER TEST + ; IN (DE)=PRINT DATA + +PTEST: LD A,(DE) + CP '&' + JR NZ,PTST1 +PTST0: INC DE + LD A,(DE) + CP 'L' ; 40 IN 1 LINE + JR Z,PLPT + CP 'S' ; 80 IN 1 LINE + JR Z,PPLPT + CP 'C' ; PEN CHANGE + JR Z,PEN + CP 'G' ; GRAPH MODE + JR Z,PLOT + CP 'T' ; TEST + JR Z,PTRN +PTST1: CALL PMSG ; PLOT MESSAGE + JP ST1 + +PLPT: LD DE,LLPT ; 01-09-09-0B-0D + JR PTST1 + +PPLPT: LD DE,SLPT ; 01-09-09-09-0D + JR PTST1 + +PTRN: LD A,04H ; TEST PATTERN + JR PLOT+2 + +PLOT: LD A,02H ; GRAPH CODE + CALL LPRNT + JR PTST0 + +PEN: LD A,1DH ; 1 CHANGE CODE (TEXT MODE) + JR PLOT+2 + + ; 1CHA. PRINT TO $LPT + ; IN: ACC PRINT DATA + +LPRNT: LD C,0 ; RDA TEST (READY? RDA=0) + LD B,A ; PRINT DATA STORE + CALL RDA + LD A,B + OUT (0FFH),A ; DATA OUT + LD A,80H ; RDP HIGH + OUT (0FEH),A + LD C,01H ; RDA TEST + CALL RDA + XOR A ; RDP LOW + OUT (0FEH),A + RET + + ; $LPT MSG + ; IN: DE DATA LOW ADDRESS + ; 0DH MSG END + +PMSG: PUSH DE + PUSH BC + PUSH AF +PMSG1: LD A,(DE) ; ACC=DATA + CALL LPRNT + LD A,(DE) + INC DE + CP 0DH ; END? + JR NZ,PMSG1 + POP AF + POP BC + POP DE + RET + + ; RDA CHECK + ; BRKEY IN TO MONITOR RETURN + ; IN: C RDA CODE + +RDA: IN A,(0FEH) + AND 0DH ; RDA ONLY + CP C + RET Z + CALL BRKEY + JR NZ,RDA + LD SP,SPV + JP ST1 + + ; MELODY + ; DE=DATA LOW ADDRESS + ; EXIT CF=1 BREAK + ; CF=0 OK + +QMLDY: PUSH BC + PUSH DE + PUSH HL + LD A,02H + LD (OCTV),A + LD B,01H +MLD1: LD A,(DE) + CP 0DH ; CR + JR Z,MLD4 + CP 0C8H ; END MARK + JR Z,MLD4 + CP 0CFH ; UNDER OCTAVE + JR Z,MLD2 + CP 2DH ; "-" + JR Z,MLD2 + CP 2BH ; "+" + JR Z,MLD3 + CP 0D7H ; UPPER OCTAVE + JR Z,MLD3 + CP 23H ; "#" HANON + LD HL,MTBL + JR NZ,L01F5 + LD HL,MNTBL + INC DE +L01F5: CALL ONPU ; ONTYO SET + JR C,MLD1 + CALL RYTHM + JR C,MLD5 + CALL MLDST ; MELODY START + LD B,C + JR MLD1 + +MLD2: LD A,3 +L0207: LD (OCTV),A + INC DE + JR MLD1 + +MLD3: LD A,01H + JR L0207 + +MLD4: CALL RYTHM +MLD5: PUSH AF + CALL MLDSP + POP AF + JP RET3 + + ; ONPU TO RATIO CONV + ; EXIT (RATIO)=RATIO VALUE + ; C=ONTYO*TEMPO + +ONPU: PUSH BC + LD B,8 +ONP1: LD A,(DE) +L0220: CP (HL) + JR Z,ONP2 + INC HL + INC HL + INC HL + DJNZ L0220 + SCF + INC DE + POP BC + RET + +ONP2: INC HL + PUSH DE + LD E,(HL) + INC HL + LD D,(HL) + EX DE,HL + LD A,H + OR A + JR Z,L023F + LD A,(OCTV) ; 11A0H OCTAVE WORK +L0239: DEC A + JR Z,L023F + ADD HL,HL + JR L0239 + +L023F: LD (RATIO),HL ; 11A1H ONPU RATIO + LD HL,OCTV + LD (HL),02H + DEC HL + POP DE + INC DE + LD A,(DE) + LD B,A + AND 0F0H ; ONTYO ? + CP 30H + JR Z,L0255 + LD A,(HL) ; HL=ONTYO + JR L025A + +L0255: INC DE + LD A,B + AND 0FH + LD (HL),A ; HL=ONTYO +L025A: LD HL,OPTBL + ADD A,L + LD L,A + LD C,(HL) + LD A,(TEMPW) + LD B,A + XOR A +ONP3: ADD A,C + DJNZ ONP3 + POP BC + LD C,A + XOR A + RET + +MTBL: DB "C" + DW 0846H + DB "D" + DW 075FH + DB "E" + DW 0691H + DB "F" + DW 0633H + DB "G" + DW 0586H + DB "A" + DW 04ECH + DB "B" + DW 0464H + DB "R" + DW 0000H +MNTBL: DB "C" ; #C + DW 07CFH + DB "D" ; #D + DW 06F5H + DB "E" ; #E + DW 0633H + DB "F" ; #F + DW 05DAH + DB "G" ; #G + DW 0537H + DB "A" ; #A + DW 04A5H + DB "B" ; #B + DW 0423H + DB "R" ; #R + DW 0000H +OPTBL: DB 01H + DB 02H + DB 03H + DB 04H + DB 06H + DB 08H + DB 0CH + DB 10H + DB 18H + DB 20H + + ; INCREMENT DE REG. + +P4DE: INC DE + INC DE + INC DE + INC DE + RET + + ; MELODY START & STOP + +MLDST: LD HL,(RATIO) + LD A,H + OR A + JR Z,MLDSP + PUSH DE + EX DE,HL + LD HL,CONT0 + LD (HL),E + LD (HL),D + LD A,01H + POP DE + JR MLDS1 + +MLDSP: LD A,36H ; MODE SET (8253 C0) + LD (CONTF),A ; E007H + XOR A +MLDS1: LD (SUNDG),A ; E008H + RET ; TEHRO SET + + ; RHYTHM + ; B=COUNT DATA + ; IN + ; EXIT CF=1 BREAK + ; CF=0 OK + +RYTHM: LD HL,KEYPA ; E000H + LD (HL),0F8H + INC HL + LD A,(HL) + AND 81H ; BREAK IN CHECK + JR NZ,L02D5 + SCF + RET + +L02D5: LD A,(TEMP) ; E008H + RRCA ; TEMPO OUT + JR C,L02D5 +L02DB: LD A,(TEMP) + RRCA + JR NC,L02DB + DJNZ L02D5 + XOR A + RET + + ; TEMPO SET + ; ACC=VALUE (1-7) + +QTEMP: PUSH AF + PUSH BC + AND 0FH + LD B,A + LD A,8 + SUB B + LD (TEMPW),A + POP BC + POP AF + RET + + ; CRT MANAGEMENT + ; EXIT HL:DSPXY H=Y,L=X + ; DE:MANG ADR. (ON DSPXY) + ; A :MANG DATA + ; CY:MANG=1 + +PMANG: LD HL,MANG ; CRT MANG POINTER + LD A,(1172H) ; DSPXY+1 + ADD A,L + LD L,A + LD A,(HL) + INC HL + RL (HL) + OR (HL) + RR (HL) + RRCA + EX DE,HL + LD HL,(DSPXY) + RET + + ; TIME SET + ; ACC=0 : AM + ; =1 : PM + ; DE=SEC: BINARY + +QTMST: DI + PUSH BC + PUSH DE + PUSH HL + LD (AMPM),A ; AMPM DATA + LD A,0F0H + LD (TIMFG),A ; TIME FLAG + LD HL,0A8C0H ; 12 HOURS (43200 SECONDS) + XOR A + SBC HL,DE ; COUNT DATA = 12H-IN DATA + PUSH HL + NOP + EX DE,HL + LD HL,CONTF ; E007H + LD (HL),74H ; C1 + LD (HL),0B0H ; C2 + DEC HL ; CONT2 + LD (HL),E ; E006H + LD (HL),D + DEC HL ; CONT1 + LD (HL),0AH ; E005H STROBE 640,6µSECONDS COUNT2 + LD (HL),0 + INC HL + INC HL ; CONTF + LD (HL),80H ; E007H + DEC HL ; CONT2 +QTMS1: LD C,(HL) ; E006H + LD A,(HL) + CP D + JR NZ,QTMS1 + LD A,C + CP E + JR NZ,QTMS1 + DEC HL ; E005H + NOP + NOP + NOP + LD (HL),0FBH ; 1 SECOND (15611HZ) E005H + LD (HL),3CH + INC HL + POP DE +QTMS2: LD C,(HL) ; E006H + LD A,(HL) + CP D + JR NZ,QTMS2 + LD A,C + CP E + JR NZ,QTMS2 + POP HL + POP DE + POP BC + EI + RET + + ; BELL DATA + ; +QBELD: DB 0D7H + DB "A0" + DB 0DH + NOP + NOP + + ; TIME READ + ; EXIT ACC=0 :AM + ; =1 :PM + ; DE=SEC. BINARY + +QTMRD: PUSH HL + LD HL,CONTF + LD (HL),80H ; E007H C2 + DEC HL ; CONT2 + DI + LD E,(HL) + LD D,(HL) ; e006H C2 MODE0 + EI +L0363: LD A,E + OR D + JR Z,QTMR1 + XOR A + LD HL,0A8C0H ; 12 HOURS + SBC HL,DE + JR C,QTMR2 + EX DE,HL + LD A,(AMPM) + POP HL + RET + +QTMR1: LD DE,0A8C0H +L0378: LD A,(AMPM) + XOR 01H + POP HL + RET + +QTMR2: DI + LD HL,CONT2 + LD A,(HL) + CPL + LD E,A + LD A,(HL) + CPL + LD D,A + EI + INC DE + JR L0378 + + ; TIME INTERRUPT + +TIMIN: PUSH AF + PUSH BC + PUSH DE + PUSH HL + LD HL,AMPM + LD A,(HL) + XOR 01H + LD (HL),A + LD HL,CONTF + LD (HL),80H ; CONT2 + DEC HL + PUSH HL + LD E,(HL) + LD D,(HL) + LD HL,0A8C0H + ADD HL,DE + DEC HL + DEC HL + EX DE,HL + POP HL + LD (HL),E + LD (HL),D + POP HL + POP DE + POP BC + POP AF + EI + RET + + ; SPACE PRINT AND DISP ACC + ; INPUT:HL=DISP. ADR. + +SPHEX: CALL QPRTS ; SPACE PRINT + LD A,(HL) + CALL PRTHX ; DSP OF ACC (ASCII) + LD A,(HL) + RET + + ; (ASCII PRINT) FOR HL + +PRTHL: LD A,H + CALL PRTHX + LD A,L + JR PRTHX + + NOP + NOP + + ; (ASCII PRINT) FOR ACC + +PRTHX: PUSH AF + RRCA + RRCA + RRCA + RRCA + CALL ASC + CALL PRNT + POP AF + CALL ASC + JP PRNT + + ; 80 CHA. 1 LINE CODE (DATA) + +SLPT: DB 01H ; TEXT MODE + DB 09H + DB 09H + DB 09H + DB 0DH + + ; HEXADECIMAL TO ASCII + ; IN : ACC (D3-D0)=HEXADECIMAL + ; EXIT: ACC = ASCII +ASC: AND 0FH + CP 0AH + JR C,NOADD + ADD A,07H +NOADD: ADD A,30H + RET + + ; ASCII TO HEXADECIMAL + ; IN : ACC = ASCII + ; EXIT: ACC = HEXADECIMAL + ; CY = 1 ERROR + +HEXJ: SUB 30H + RET C ; <0 + CP 0AH + CCF + RET NC ; 0-9 + SUB 07H + CP 10H + CCF + RET C + CP 0AH + RET + + NOP + NOP + NOP + NOP + +HEX: JR HEXJ + + ; PRESS PLAY MESSAGE + +MSGN1: DW 207FH +MSGN2: DB "PLAY\r" +MSGN3: DW 207FH + DB "RECORD.\r" ; PRESS RECORD + + NOP + NOP + NOP + NOP + + ; 4 ASCII TO (HL) + ; IN DE=DATA LOW ADDRESS + ; EXIT CF=0 : OK + ; =1 : OUT + +HLHEX: PUSH DE + CALL L2HEX + JR C,L041D + LD H,A + CALL L2HEX + JR C,L041D + LD L,A +L041D: POP DE + RET + + ; 2 ASCII TO (ACC) + ; IN DE=DATA LOW ADRRESS + ; EXIT CF=0 : OK + ; =1 : OUT + +L2HEX: PUSH BC + LD A,(DE) + INC DE + CALL HEX + JR C,L0434 + RRCA + RRCA + RRCA + RRCA + LD C,A + LD A,(DE) + INC DE + CALL HEX + JR C,L0434 + OR C +L0434: POP BC + RET + + ; WRITE INFORMATION + +QWRI: DI + PUSH DE + PUSH BC + PUSH HL + LD D,0D7H ; "W" + LD E,0CCH ; "L" + LD HL,IBUFE ; 10F0H + LD BC,80H ; WRITE BYTE SIZE +WRI1: CALL CKSUM ; CHECK SUM + CALL MOTOR ; MOTOR ON + JR C,WRI3 + LD A,E + CP 0CCH ; "L" + JR NZ,WRI2 + CALL NL + PUSH DE + LD DE,MSGN7 ; WRITING + RST 18H ; CALL MSGX + LD DE,NAME ; FILE NAME + RST 18H ; CALL MSGX + POP DE +WRI2: CALL GAP + CALL WTAPE +WRI3: JP RET2 + +MSGN7: DB "WRITING \r" + + ; 40 CHA. IN 1 LINE CODE (DATA) + +LLPT: DB 01H ; TEXT MODE + DB 09H + DB 09H + DB 0BH + DB 0DH + + ; WRITE DATA + ; EXIT CF=0 : OK + ; =1 : BREAK + +QWRD: DI + PUSH DE + PUSH BC + PUSH HL + LD D,0D7H ; "W" + LD E,53H ; "S" +L047D: LD BC,(SIZE) ; WRITE DATA BYTE SIZE + LD HL,(DTADR) ; WRITE DATA ADDRESS + LD A,B + OR C + JR Z,RET1 + JR WRI1 + + ; TAPE WRITE + ; BC=BYTE SIZE + ; HL=DATA LOW ADDRESS + ; EXIT CF=0 : OK + ; =1 : BREAK + +WTAPE: PUSH DE + PUSH BC + PUSH HL + LD D,02H + LD A,0F8H ; 88H WOULD BE BETTER!! + LD (KEYPA),A ; E000H +WTAP1: LD A,(HL) + CALL WBYTE ; 1 BYTE WRITE + LD A,(KEYPB) ; E001H + AND 81H ; SHIFT & BREAK + JP NZ,WTAP2 + LD A,02H ; BREAK IN CODE + SCF + JR WTAP3 + +WTAP2: INC HL + DEC BC + LD A,B + OR C + JP NZ,WTAP1 + LD HL,(SUMDT) ; SUM DATA SET + LD A,H + CALL WBYTE + LD A,L + CALL WBYTE + CALL LONG + DEC D + JP NZ,L04C2 + OR A + JP WTAP3 + +L04C2: LD B,0 +L04C4: CALL SHORT + DEC B + JP NZ,L04C4 + POP HL + POP BC + PUSH BC + PUSH HL + JP WTAP1 + +WTAP3: +RET1: POP HL + POP BC + POP DE + RET + + DB 2FH + DB 4EH + + ; READ INFORMATION (FROM $CMT) + ; EXIT ACC=0: OK CF=0 + ; =1: ER CF=1 + ; =2: BREAK CF=1 + +QRDI: DI + PUSH DE + PUSH BC + PUSH HL + LD D,0D2H ; "R" + LD E,0CCH ; "L" + LD BC,80H + LD HL,IBUFE +RD1: CALL MOTOR + JP C,RTP6 + CALL TMARK + JP C,RTP6 + CALL RTAPE + JP RTP4 + + ; READ DATA (FROM $CMT) + ; EXIT SAME UP + +QRDD: DI + PUSH DE + PUSH BC + PUSH HL + LD D,0D2H ; "R" + LD E,53H ; "S" + LD BC,(SIZE) + LD HL,(DTADR) + LD A,B + OR C + JP Z,RTP4 + JR RD1 + + ; READ TAPE + ; IN BC=SIZE + ; DE=LOAD ADDRESS + ; EXIT ACC=0 : OK CF=0 + ; =1 : ER =1 + ; =2 : BREAK=1 + +RTAPE: PUSH DE + PUSH BC + PUSH HL + LD H,02H ; TWICE WRITE +RTP1: LD BC,KEYPB + LD DE,CSTR +RTP2: CALL EDGE ; 1-->0 EDGE DETECT + JR C,RTP6 + CALL DLY3 ; CALL DLY2*3 + LD A,(DE) ; DATA (1 BIT) READ + AND 20H + JP Z,RTP2 + LD D,H + LD HL,0 + LD (SUMDT),HL + POP HL + POP BC + PUSH BC + PUSH HL +RTP3: CALL RBYTE ; 1 BYTE READ + JR C,RTP6 + LD (HL),A + INC HL + DEC BC + LD A,B + OR C + JR NZ,RTP3 + LD HL,(SUMDT) ; CHECK SUM + CALL RBYTE ; CHECK SUM DATA + JR C,RTP6 + LD E,A + CALL RBYTE ; CHECK SUM DATA + JR C,RTP6 + CP L + JR NZ,RTP5 + LD A,E + CP H + JR NZ,RTP5 +RTP8: XOR A +RTP4: +RET2: POP HL + POP BC + POP DE + CALL MSTOP + PUSH AF + LD A,(TIMFG) ; INT. CHECK + CP 0F0H + JR NZ,L0563 + EI +L0563: POP AF + RET + +RTP5: DEC D + JR Z,RTP7 + LD H,D + CALL GAPCK + JR RTP1 + +RTP7: LD A,01H + JR RTP9 + +RTP6: LD A,02H +RTP9: SCF + JR RTP4 + + ; BELL + +QBEL: PUSH DE + LD DE,QBELD + RST 30H ; CALL MELODY + POP DE + RET + + ; FLASHING AND KEYIN + ; EXIT: ACC INPUT KEY DATA (DSP.CODE) + ; H=F0H THEN NO KEYIN (Z FLAG) + +FLKEY: CALL QFLAS + CALL QKEY + CP 0F0H + RET + + NOP + + ; VERIFY (FROM $CMT) + ; EXIT ACC=0 : OK CF=0 + ; =1 : ER CF=1 + ; =2 : BREAK CF=1 + +QVRFY: DI + PUSH DE + PUSH BC + PUSH HL + LD BC,(SIZE) + LD HL,(DTADR) + LD D,0D2H ; "R" + LD E,53H ; "S" + LD A,B + OR C + JR Z,RTP4 ; END + CALL CKSUM + CALL MOTOR + JR C,RTP6 ; BRK + CALL TMARK ; TAPE MARK DETECT + JR C,RTP6 ; BRK + CALL TVRFY + JR RTP4 + + ; DATA VERIFY + ; BC=SIZE + ; HL=DATA LOW ADDRESS + ; CSMDT=CHECK SUM + ; EXIT ACC=0 : OK CF=0 + ; =1 : ER =1 + ; =2 : BREAK =1 + +TVRFY: PUSH DE + PUSH BC + PUSH HL + LD H,02H ; COMPARE TWICE +TVF1: LD BC,KEYPB + LD DE,CSTR +TVF2: CALL EDGE + JP C,RTP6 ; BRK + CALL DLY3 ; CALL DLY2*3 + LD A,(DE) + AND 20H + JP Z,TVF2 + LD D,H + POP HL + POP BC + PUSH BC + PUSH HL + ; COMPARE TAPE DATA AND STORAGE +TVF3: CALL RBYTE + JR C,RTP6 ; BRK + CP (HL) + JR NZ,RTP7 ; ERROR, NOT EQUAL + INC HL ; STORAGE ADDRESS + 1 + DEC BC ; SIZE - 1 + LD A,B + OR C + JR NZ,TVF3 + ; COMPARE CHECK SUM (1199H/CSMDT) AND TAPE + LD HL,(CSMDT) + CALL RBYTE + CP H + JR NZ,RTP7 ; ERROR, NOT EQUAL + CALL RBYTE + CP L + JR NZ,RTP7 ; ERROR, NOT EQUAL + DEC D ; NUMBER OF COMPARES (2) - 1 + JP Z,RTP8 ; OK, 2 COMPARES + LD H,D ; (-->05C7H), SAVE NUMBER OF COMPARES + JR TVF1 ; NEXT COMPARE + + ; FLASHING DATA LOAD + +QLOAD: PUSH AF + LD A,(FLASH) + CALL QPONT + LD (HL),A + POP AF + RET + + ; NEW LINE AND PRINT HL REG (ASCII) + +NLPHL: CALL NL + CALL PRTHL + RET + + ; EDGE (TAPE DATA EDGE DETECT) + ; BC=KEYPB (E001H) + ; DE=CSTR (E002H) + ; EXIT CF=0 OK CF=1 BREAK + +EDGE: LD A,0F8H ; BREAK KEY IN (88H WOULD BE BETTER!!) + LD (KEYPA),A + NOP +EDG1: LD A,(BC) + AND 81H ; SHIFT & BREAK + JR NZ,L060E + SCF + RET + +L060E: LD A,(DE) + AND 20H + JR NZ,EDG1 ; CSTR D5 = 0 +EDG2: LD A,(BC) ; 8 + AND 81H ; 9 + JR NZ,L061A ; 10/14 + SCF + RET + +L061A: LD A,(DE) ; 8 + AND 20H ; 9 + JR Z,EDG2 ; CSTR D5 = 1 10/14 + RET ; 11 + + NOP + NOP + NOP + NOP + ; 1 BYTE READ + ; EXIT SUMDT=STORE + ; CF=1 : BREAK + ; CF=0 : DATA=ACC + +RBYTE: PUSH BC + PUSH DE + PUSH HL + LD HL,0800H ; 8 BITS + LD BC,KEYPB ; KEY DATA E001H + LD DE,CSTR ; $TAPE DATA E002H +RBY1: CALL EDGE ; 41 OR 101 + JP C,RBY3 ; 13 (SHIFT & BREAK) + CALL DLY3 ; 20+18*63+33 + LD A,(DE) ; DATA READ :8 + AND 20H + JP Z,RBY2 ; 0 + PUSH HL + LD HL,(SUMDT) + INC HL ; CHECK SUM ; COUNT HIGH BITS ON TAPE + LD (SUMDT),HL + POP HL + SCF +RBY2: LD A,L ; BUILD CHAR + RLA + LD L,A + DEC H ; BITCOUNT-1 + JP NZ,RBY1 + CALL EDGE + LD A,L ; CHAR READ +RBY3: POP HL + POP DE + POP BC + RET + + NOP + NOP + NOP + + ; TAPE MARK DETECT + ; E=@L@ : INFORMATION + ; =@S@ : DATA + ; EXIT CF=0 OK + ; =1 BREAK + +TMARK: CALL GAPCK + PUSH BC + PUSH DE + PUSH HL + LD HL,2828H + LD A,E + CP 0CCH ; "L" + JR Z,L066C + LD HL,1414H +L066C: LD (TMCNT),HL + LD BC,KEYPB + LD DE,CSTR +TM1: LD HL,(TMCNT) +TM2: CALL EDGE + JR C,TM4 + CALL DLY3 ; CALL DLY2*3 + LD A,(DE) + AND 20H + JR Z,TM1 + DEC H + JR NZ,TM2 +TM3: CALL EDGE + JR C,TM4 + CALL DLY3 ; CALL DLY2*3 + LD A,(DE) + AND 20H + JR NZ,TM1 + DEC L + JR NZ,TM3 + CALL EDGE +TM4: +RET3: POP HL + POP DE + POP BC + RET + + ; MOTOR ON + ; IN D=@W@ :WRITE + ; =@R@ :READ + ; EXIT CF=0 OK + ; =1 BREAK + ; + ; If the button is pressed, + +MOTOR: PUSH BC + PUSH DE + PUSH HL + LD B,0AH ; Pulse motor upto 10 times if sense is low. Each pulse flips on->off or off->on +MOT1: LD A,(CSTR) ; Check sense, if low then pulse motor to switch it on. + AND 10H + JR Z,MOT4 ; If NZ (bit PC4 is high), then wait a bit and return, motor running. + ; If Z then pulse the motor on circuit. +MOT2: LD B,0FFH ; 2 SEC DELAY +L06AD: CALL DLY12 ; 7 MSEC DELAY + JR L06B4 ; MOTOR ENTRY ADJUST + + JR MOTOR ; ORG 06B2H + +L06B4: DJNZ L06AD + XOR A +MOT7: JR RET3 + +MOT4: LD A,06H ; + LD HL,CSTPT ; 8255 Control register + LD (HL),A ; Set PC3 low + INC A + LD (HL),A ; Set PC3 high + DJNZ MOT1 ; Check to see if sense now active. + CALL NL ; Sense not active so play button hasnt been pressed. + LD A,D ; Determine if we are Loading or Saving, display correct message. + CP 0D7H ; "W" + JR Z,MOT8 + LD DE,MSGN1 ; PLAY MARK + JR MOT9 + +MOT8: LD DE,MSGN3 ; "RECORD." + RST 18H ; CALL MSGX + LD DE,MSGN2 ; "PLAY" +MOT9: RST 18H ; CALL MSGX +MOT5: LD A,(CSTR) ; Check sense input and wait until it is high. + AND 10H + JR NZ,MOT2 + CALL QBRK ; If sense is low, check for User Key Break entry. + JR NZ,MOT5 + SCF + JR MOT7 + + ; INITIAL MESSAGE + +MSGQ3: DB "** MONITOR 1Z-013A **\r" + NOP + + ; MOTOR STOP + +MSTOP: PUSH AF + PUSH BC + PUSH DE + LD B,0AH +MST1: LD A,(CSTR) + AND 10H + JR Z,MST3 + LD A,06H + LD (CSTPT),A + INC A + LD (CSTPT),A + DJNZ MST1 +MST3: JP QRSTR1 + + ; CHECK SUM + ; IN BC=SIZE + ; HL=DATA ADDRESS + ; EXIT SUMDT=STORE + ; CSMDT=STORE + +CKSUM: PUSH BC + PUSH DE +L071C: PUSH HL + LD DE,0 +CKS1: LD A,B + OR C + JR NZ,CKS2 + EX DE,HL +L0725: LD (SUMDT),HL ; NUMBER OF HIGHBITS IN DATA + LD (CSMDT),HL + POP HL + POP DE + POP BC + RET + +CKS2: LD A,(HL) + PUSH BC + LD B,8 +CKS3: RLCA + JR NC,L0737 + INC DE +L0737: DJNZ CKS3 +L0739: POP BC + INC HL + DEC BC + JR CKS1 + + ; MODE SET OF KEYPORT + +QMODE: LD HL,KEYPF + LD (HL),8AH ; 10001010 CTRL WORD MODE0 + LD (HL),07H ; PC3=1 M-ON + LD (HL),05H ; PC2=1 INTMSK + LD (HL),01H ; TZ: Enable VGATE (2xNOP removed below to keep ROM consistency). + RET + + ;NOP + ;NOP + NOP + NOP + NOP + NOP + NOP + NOP + NOP + NOP + NOP + NOP + NOP + NOP + NOP + NOP + NOP + + ; 107 MICRO SEC DELAY + +DLY1: LD A,15H ; 18*21+20 +L075B: DEC A + JP NZ,L075B + RET + +DLY2: LD A,13H ; 18*19+20 +L0762: DEC A + JP NZ,L0762 + RET + + ; 1 BYTE WRITE + +WBYTE: PUSH BC + LD B,8 + CALL LONG +WBY1: RLCA + CALL C,LONG + CALL NC,SHORT + DEC B + JP NZ,WBY1 + POP BC + RET + + ; GAP + TAPEMARK + ; E=@L@ LONG GAP + ; =@s@ SHORT GAP + +GAP: PUSH BC + PUSH DE + LD A,E + LD BC,55F0H + LD DE,2828H + CP 0CCH ; "L" + JP Z,GAP1 + LD BC,2AF8H + LD DE,1414H +GAP1: CALL SHORT + DEC BC + LD A,B + OR C + JR NZ,GAP1 +GAP2: CALL LONG + DEC D + JR NZ,GAP2 +GAP3: CALL SHORT + DEC E + JR NZ,GAP3 + CALL LONG + POP DE + POP BC + RET + + ; MEMORY CORRECTION + ; COMMAND "M" + +MCOR: CALL HEXIY ; CORRECTION ADDRESS +MCR1: CALL NLPHL ; CORRECTION ADDRESS PRINT + CALL SPHEX ; ACC-->ASCII DISP. + CALL QPRTS ; SPACE PRINT + CALL BGETL ; GET DATA & CHECK DATA + CALL HLHEX ; HL<--ASCII(DE) + JR C,MCR3 + CALL P4DE ; (INC DE)*4 + INC DE + CALL L2HEX ; DATA CHECK + JR C,MCR1 + CP (HL) + JR NZ,MCR1 + INC DE + LD A,(DE) + CP 0DH ; NOT CORRECTION ? + JR Z,MCR2 + CALL L2HEX ; ACC<--HL(ASCII) + JR C,MCR1 + LD (HL),A ; DATA CORRECT +MCR2: INC HL + JR MCR1 + +MCR3: LD H,B ; MEMORY ADDRESS + LD L,C + JR MCR1 + + DB "(HL)" + DB 0F1H + DB 9EH + DB "SUB (" + + ; GET 1 LINE STATEMENT * + ; DE=DATA STORE LOW ADDRESS + ; (END=CR) + +QGETL: PUSH AF + PUSH BC + PUSH HL + PUSH DE +GETL1: CALL QQKEY ; ENTRY KEY +AUTO3: PUSH AF ; IN KEY DATA SAVE + LD B,A + LD A,(SWRK) ; BELL WORK + RRCA + CALL NC,QBEL ; ENTRY BELL + LD A,B + LD HL,KANAF ; KANA & GRAPH FLAGS + AND 0F0H + CP 0C0H + POP DE ; EREG=FLAGREG + LD A,B + JR NZ,GETL2 ; NOT C0H + CP 0CDH ; CR + JR Z,GETL3 + CP 0CBH ; BREAK + JP Z,GETLC + CP 0CFH ; NIKO MARK WH. + JR Z,GETL2 + CP 0C7H ; CRT EDITION + JR NC,GETL5 ; <=C7H + RR E ; >C7H & CFLAG, CY ? GRAPHIC MODE,CURS.DISPL. + LD A,B + JR NC,GETL5 +GETL2: CALL QDSP ; DISPL. + JR GETL1 + +GETL5: CALL QDPCT ; CRT CONTROL + JR GETL1 + + ; BREAK IN + +GETLC: POP HL + PUSH HL + LD (HL),1BH ; BREAK CODE + INC HL + LD (HL),0DH + JR GETLR + + ; GETLA + +GETLA: RRCA ; CY<--D7 + JR NC,GETL6 + JR GETLB + + ; DELAY 7 MSEC AND SWEP + +DSWEP: CALL DLY12 + CALL QSWEP + RET + + NOP + NOP + NOP + NOP + NOP + NOP + NOP + NOP + NOP + NOP + NOP + NOP + NOP + NOP + NOP + NOP + NOP + NOP + NOP + NOP + NOP + NOP + NOP + NOP + NOP + NOP + NOP + NOP + NOP + NOP + NOP + NOP + NOP + NOP + NOP + NOP + +GETL3: CALL PMANG ; CR + LD B,COLW ; 1 LINE + JR NC,GETLA + DEC H ; BEFORE LINE +GETLB: LD B,COLW*2 ; 2 LINE +GETL6: LD L,0 + CALL QPNT1 + POP DE ; STORE TOP ADDRESS + PUSH DE +GETLZ: LD A,(HL) + CALL QDACN + LD (DE),A + INC HL + INC DE + DJNZ GETLZ + EX DE,HL +GETLU: LD (HL),0DH + DEC HL + LD A,(HL) + CP 20H ; SPACE THEN CR + + ; CR AND NEW LINE + + JR Z,GETLU + + ; NEW LINE RETURN + +GETLR: CALL QLTNL + POP DE + POP HL + POP BC + POP AF + RET + + NOP + NOP + NOP + NOP + NOP + NOP + NOP + NOP + NOP + NOP + NOP + NOP + NOP + + ; MESSAGE PRINT + ; DE PRINT DATA LOW ADDRESS + ; END=CR + +QMSG: PUSH AF + PUSH BC + PUSH DE +MSG1: LD A,(DE) + CP 0DH ; CR + JR Z,MSGX2 + CALL QPRNT + INC DE + JR MSG1 + + ; ALL PRINT MESSAGE + +QMSGX: PUSH AF + PUSH BC + PUSH DE +MSGX1: LD A,(DE) + CP 0DH +MSGX2: JP Z,QRSTR1 + CALL QADCN + CALL PRNT3 + INC DE + JR MSGX1 + + ; TOP OF KEYTBLS + +QKYSM: LD DE,KTBLS ; SHIFT ALSO + JR QKY5 + + ; BREAK CODE IN + +NBRK: LD A,0CBH ; BREAK CODE + OR A + JR QKY1 + + ; GETKEY + ; NO ECHO BACK + ; EXIT ACC=ASCII CODE + +QGET: CALL QKEY ; KEY IN (DISPLAY CODE) + SUB 0F0H ; NOT KEYIN CODE + RET Z + ADD A,0F0H + JP QDACN ; DISPLAY TO ASCII CODE + + NOP + NOP + + ; 1 KEY INPUT + ; IN B=KEY MODE (SHIFT, CTRL, BREAK) + ; C=KEY DATA (COLUMN & ROW) + ; EXIT ACC=DISPLAY CODE + ; IF NO KEY ACC=F0H + ; IF CY=1 THEN ATTRIBUTE ON + ; (SMALL, HIRAKANA) + +QKEY: PUSH BC + PUSH DE + PUSH HL + CALL DSWEP ; DELAY AND KEY SWEP + LD A,B + RLCA + JR C,QKY2 + LD A,0F0H ; SHIFT OR CTRL HERE +QKY1: POP HL + POP DE + POP BC + RET + +QKY2: LD DE,KTBL ; NORMAL KEY TABLE + LD A,B + CP 88H ; BREAK IN (SHIFT & BRK) + JR Z,NBRK + LD H,0 ; HL=ROW & COLUMN + LD L,C + BIT 5,A ; CTRL CHECK + JR NZ,L08F7 ; YES, CTRL + LD A,(KANAF) ; 0=NR., 1=GRAPH + RRCA + JP C,QKYGRP ; GRAPH MODE + LD A,B ; CTRL KEY CHECK + RLA + RLA + JR C,QKYSM + JR QKY5 + +L08F7: LD DE,KTBLC ; CONTROL KEY TABLE +QKY5: ADD HL,DE ; TABLE +QKY55: LD A,(HL) + JR QKY1 + +QKYGRP: BIT 6,B + JR Z,QKYGRS + LD DE,KTBLG + ADD HL,DE + SCF + JR QKY55 + +QKYGRS: LD DE,KTBLGS + JR QKY5 + + ; NEWLINE + +QLTNL: XOR A + LD (DPRNT),A ; ROW POINTER + LD A,0CDH ; CR + JR PRNT5 + + NOP + NOP + +QNL: LD A,(DPRNT) + OR A + RET Z + JR QLTNL + + NOP + + ; PRINT SPACE + +QPRTS: LD A,20H + JR QPRNT + + ; PRINT TAB + +QPRTT: CALL PRNTS + LD A,(DPRNT) + OR A + RET Z +L092C: SUB 10 + JR C,QPRTT + JR NZ,L092C + NOP + NOP + NOP + + ; PRINT + ; IN ACC=PRINT DATA (ASCII) + +QPRNT: CP 0DH ; CR + JR Z,QLTNL + PUSH BC + LD C,A + LD B,A + CALL QPRT + LD A,B + POP BC + RET + +MSGOK: DB "OK!\r" + + ; PRINT ROUTINE + ; 1 CHARACTER + ; INPUT:C=ASCII DATA (QDSP+QDPCT) + +QPRT: LD A,C + CALL QADCN ; ASCII TO DSPLAY + LD C,A + CP 0F0H + RET Z ; ZERO=ILLEGAL DATA + AND 0F0H ; MSD CHECK + CP 0C0H + LD A,C + JR NZ,PRNT3 + CP 0C7H + JR NC,PRNT3 ; CRT EDITOR +PRNT5: CALL QDPCT + CP 0C3H ; "->" + JR Z,PRNT4 + CP 0C5H ; HOME + JR Z,PRNT2 + CP 0C6H ; CLR + RET NZ +PRNT2: XOR A +L0968: LD (DPRNT),A + RET + +PRNT3: CALL QDSP +PRNT4: LD A,(DPRNT) ; TAB POINT+1 + INC A + CP COLW*2 + JR C,L0968 + SUB COLW*2 + JR L0968 + + ; FLASHING BYPASS 1 + +FLAS1: LD A,(FLASH) + JR FLAS2 + + ; BREAK SUBROUTINE BYPASS 1 + ; CTRL OR NOT KEY + +QBRK2: BIT 5,A ; NOT OR CTRL + JR Z,QBRK3 ; CTRL + OR A ; NOTKEY A=7FH + RET + +QBRK3: LD A,20H ; CTRL D5=1 + OR A ; ZERO FLG CLR + SCF + RET + +MSGSV: DB "FILENAME? " + DB 0DH + + ; DLY 7 MSEC +DLY12: PUSH BC + LD B,15H +L0999: CALL DLY3 + DJNZ L0999 + POP BC + RET + + ; LOADING MESSAGE + +MSGQ2: DB "LOADING \r" + + ; DELAY FOR LONG PULSE + +DLY4: LD A,59H ; 18*89+20 +L09AB: DEC A + JP NZ,L09AB + RET + + NOP + NOP + NOP + + ; KEY BOARD SEARCH + ; & DISPLAY CODE CONVERSION + ; EXIT A=DISPLAY CODE + ; CY=GRAPH MODE + ; WITH CURSOR DISPLAY + +QQKEY: PUSH HL + CALL QSAVE +KSL1: CALL FLKEY ; KEY + JR NZ,KSL1 ; KEY IN THEN JUMP +KSL2: CALL FLKEY + JR Z,KSL2 ; NOT KEY IN THEN JUMP + LD H,A + CALL DLY12 ; DELAY CHATTER + CALL QKEY + PUSH AF + CP H ; CHATTER CHECK + POP HL + JR NZ,KSL2 + PUSH HL + POP AF ; IN KEY DATA + CALL QLOAD ; FLASHING DATA LOAD + POP HL + RET + + ; CLEAR 2 + +NCLR08: XOR A ; CY FLAG +NCLR8: LD BC,0800H +CLEAR: PUSH DE ; BC=CLR BYTE SIZE, A=CLR DATA + LD D,A +CLEAR1: LD (HL),D + INC HL + DEC BC + LD A,B + OR C + JR NZ,CLEAR1 + POP DE + RET + + ; FLASHING 2 + +QFLS: PUSH AF + PUSH HL + LD A,(KEYPC) + RLCA + RLCA + JR C,FLAS1 + LD A,(FLSDT) +FLAS2: CALL QPONT ; DISPLAY POSITION + LD (HL),A + POP HL + POP AF + RET + + NOP + NOP + NOP + NOP + NOP + NOP + NOP + NOP + NOP + +QFLAS: JR QFLS + + ; SHORT AND LONG PULSE FOR 1 BIT WRITE + +SHORT: PUSH AF ; 12 + LD A,03H ; 9 + LD (CSTPT),A ; E003H PC3=1:16 + CALL DLY1 ; 20+18*21+20 + CALL DLY1 ; 20+18*21+20 + LD A,02H ; 9 + LD (CSTPT),A ; E003H PC3=0:16 + CALL DLY1 ; 20+18*21+20 + CALL DLY1 ; 20+18*21+20 + POP AF ; 11 + RET ; 11 + +LONG: PUSH AF ; 11 + LD A,03H ; 9 + LD (CSTPT),A ; 16 + CALL DLY4 ; 20+18*89+20 + LD A,02H ; 9 + LD (CSTPT),A ; 16 + CALL DLY4 ; 20+18*89+20 + POP AF ; 11 + RET ; 11 + + NOP + NOP + NOP + NOP + NOP + + ; BREAK KEY CHECK + ; AND SHIFT, CTRL KEY CHECK + ; EXIT BREAK ON : ZERO=1 + ; OFF: ZERO=0 + ; NO KEY : CY =0 + ; KEY IN : CY =1 + ; A D6=1 : SHIFT ON + ; =0 : OFF + ; D5=1 : CTRL ON + ; =0 : OFF + ; D4=1 : SHIFT+CNT ON + ; =0 : OFF + +QBRK: LD A,0F8H ; LINE 8SWEEP + LD (KEYPA),A + NOP + LD A,(KEYPB) + OR A + RRA + JP C,QBRK2 ; SHIFT ? + RLA + RLA + JR NC,QBRK1 ; BREAK ? + LD A,40H ; SHIFT D6=1 + SCF + RET + +QBRK1: XOR A ; SHIFT ? + RET + + ; 320 U SEC DELAY + +DLY3: LD A,3FH ; 18*63+33 + JP L0762 ; JP DLY2+2 + + NOP + + ; KEY BOARD SWEEP + ; EXIT B,D7=0 NO DATA + ; =1 DATA + ; D6=0 SHIFT OFF + ; =1 SHIFT ON + ; D5=0 CTRL OFF + ; =1 CTRL ON + ; D4=0 SHIFT+CTRL OFF + ; =1 SHIFT+CTRL ON + ; C = ROW & COLUMN + ; 7 6 5 4 3 2 1 0 + ; * * ^ ^ ^ < < < + +QSWEP: PUSH DE + PUSH HL + XOR A + LD B,0F8H + LD D,A + CALL QBRK + JR NZ,SWEP6 + LD D,88H ; BREAK ON + JR SWEP9 + +SWEP6: JR NC,SWEP0 + LD D,A + JR SWEP0 + +SWEP01: SET 7,D +SWEP0: DEC B + LD A,B + LD (KEYPA),A + CP 0EFH ; MAP SWEEP END ? + JR NZ,SWEP3 + CP 0F8H ; BREAK KEY ROW + JR Z,SWEP0 +SWEP9: LD B,D + POP HL + POP DE + RET + +SWEP3: LD A,(KEYPB) + CPL + OR A + JR Z,SWEP0 + LD E,A +SWEP2: LD H,8 + LD A,B + AND 0FH + RLCA + RLCA + RLCA + LD C,A + LD A,E +L0A89: DEC H + RRCA + JR NC,L0A89 + LD A,H + ADD A,C + LD C,A + JR SWEP01 + ; + ; + ; ASCII TO DISPLAY CODE TABL + ; +ATBL: + ; 00 - 0F + DB 0F0H ; ^ @ + DB 0F0H ; ^ A + DB 0F0H ; ^ B + DB 0F3H ; ^ C + DB 0F0H ; ^ D + DB 0F5H ; ^ E + DB 0F0H ; ^ F + DB 0F0H ; ^ G + DB 0F0H ; ^ H + DB 0F0H ; ^ I + DB 0F0H ; ^ J + DB 0F0H ; ^ K + DB 0F0H ; ^ L + DB 0F0H ; ^ M + DB 0F0H ; ^ N + DB 0F0H ; ^ O + ; 10 - 1F + DB 0F0H ; ^ P + DB 0C1H ; ^ Q CUR. DOWN + DB 0C2H ; ^ R CUR. UP + DB 0C3H ; ^ S CUR. RIGHT + DB 0C4H ; ^ T CUR. LEFT + DB 0C5H ; ^ U HOME + DB 0C6H ; ^ V CLEAR + DB 0F0H ; ^ W + DB 0F0H ; ^ X + DB 0F0H ; ^ Y + DB 0F0H ; ^ Z SEP. + DB 0F0H ; ^ [ + DB 0F0H ; ^ \ + DB 0F0H ; ^ ] + DB 0F0H ; ^ ^ + DB 0F0H ; ^ - + ; 20 - 2F + DB 00H ; SPACE + DB 61H ; ! + DB 62H ; " + DB 63H ; # + DB 64H ; $ + DB 65H ; % + DB 66H ; & + DB 67H ; ' + DB 68H ; ( + DB 69H ; ) + DB 6BH ; * + DB 6AH ; + + DB 2FH ; , + DB 2AH ; - + DB 2EH ; . + DB 2DH ; / + ; 30 - 3F + DB 20H ; 0 + DB 21H ; 1 + DB 22H ; 2 + DB 23H ; 3 + DB 24H ; 4 + DB 25H ; 5 + DB 26H ; 6 + DB 27H ; 7 + DB 28H ; 8 + DB 29H ; 9 + DB 4FH ; : + DB 2CH ; ; + DB 51H ; < + DB 2BH ; = + DB 57H ; > + DB 49H ; ? + ; 40 - 4F + DB 55H ; @ + DB 01H ; A + DB 02H ; B + DB 03H ; C + DB 04H ; D + DB 05H ; E + DB 06H ; F + DB 07H ; G + DB 08H ; H + DB 09H ; I + DB 0AH ; J + DB 0BH ; K + DB 0CH ; L + DB 0DH ; M + DB 0EH ; N + DB 0FH ; O + ; 50 - 5F + DB 10H ; P + DB 11H ; Q + DB 12H ; R + DB 13H ; S + DB 14H ; T + DB 15H ; U + DB 16H ; V + DB 17H ; W + DB 18H ; X + DB 19H ; Y + DB 1AH ; Z + DB 52H ; [ + DB 59H ; \ + DB 54H ; ] + DB 50H ; + DB 45H ; + ; 60 - 6F + DB 0C7H ; UFO + DB 0C8H + DB 0C9H + DB 0CAH + DB 0CBH + DB 0CCH + DB 0CDH + DB 0CEH + DB 0CFH + DB 0DFH + DB 0E7H + DB 0E8H + DB 0E5H + DB 0E9H + DB 0ECH + DB 0EDH + ; 70 - 7F + DB 0D0H + DB 0D1H + DB 0D2H + DB 0D3H + DB 0D4H + DB 0D5H + DB 0D6H + DB 0D7H + DB 0D8H + DB 0D9H + DB 0DAH + DB 0DBH + DB 0DCH + DB 0DDH + DB 0DEH + DB 0C0H + ; 80 - 8F + DB 80H ; } + DB 0BDH + DB 9DH + DB 0B1H + DB 0B5H + DB 0B9H + DB 0B4H + DB 9EH + DB 0B2H + DB 0B6H + DB 0BAH + DB 0BEH + DB 9FH + DB 0B3H + DB 0B7H + DB 0BBH + ; 90 - 9F + DB 0BFH ; _ + DB 0A3H + DB 85H + DB 0A4H ; ` + DB 0A5H ; ~ + DB 0A6H + DB 94H + DB 87H + DB 88H + DB 9CH + DB 82H + DB 98H + DB 84H + DB 92H + DB 90H + DB 83H + ; A0 - AF + DB 91H + DB 81H + DB 9AH + DB 97H + DB 93H + DB 95H + DB 89H + DB 0A1H + DB 0AFH + DB 8BH + DB 86H + DB 96H + DB 0A2H + DB 0ABH + DB 0AAH + DB 8AH + ; B0 - BF + DB 8EH + DB 0B0H + DB 0ADH + DB 8DH + DB 0A7H + DB 0A8H + DB 0A9H + DB 8FH + DB 8CH + DB 0AEH + DB 0ACH + DB 9BH + DB 0A0H + DB 99H + DB 0BCH ; { + DB 0B8H + ; C0 - CF + DB 40H + DB 3BH + DB 3AH + DB 70H + DB 3CH + DB 71H + DB 5AH + DB 3DH + DB 43H + DB 56H + DB 3FH + DB 1EH + DB 4AH + DB 1CH + DB 5DH + DB 3EH + ; D0 - DF + DB 5CH + DB 1FH + DB 5FH + DB 5EH + DB 37H + DB 7BH + DB 7FH + DB 36H + DB 7AH + DB 7EH + DB 33H + DB 4BH + DB 4CH + DB 1DH + DB 6CH + DB 5BH + ; E0 - EF + DB 78H + DB 41H + DB 35H + DB 34H + DB 74H + DB 30H + DB 38H + DB 75H + DB 39H + DB 4DH + DB 6FH + DB 6EH + DB 32H + DB 77H + DB 76H + DB 72H + ; F0 - FF + DB 73H + DB 47H + DB 7CH + DB 53H + DB 31H + DB 4EH + DB 6DH + DB 48H + DB 46H + DB 7DH + DB 44H + DB 1BH + DB 58H + DB 79H + DB 42H + DB 60H + + ; FLASHING DATA SAVE + +QSAVE: LD HL,FLSDT + LD (HL),0EFH ; NORMAL CURSOR + LD A,(KANAF) + RRCA + JR C,L0BA0 ; GRAPH MODE + RRCA + JR NC,SV0 ; NORMAL MODE +L0BA0: LD (HL),0FFH ; GRAPH CURSOR +SV0: LD A,(HL) + PUSH AF + CALL QPONT ; FLASHING POSITION + LD A,(HL) + LD (FLASH),A + POP AF + LD (HL),A + XOR A + LD HL,KEYPA +L0BB1: LD (HL),A + CPL ; OH NO! UNUSED BITS WERE TOUCHED TOO!!! + LD (HL),A + RET + +SV1: LD (HL),43H ; KANA CURSOR + JR SV0 + + ; ASCII TO DISPLAY CODE CONVERT + ; IN ACC:ASCII + ; EXIT ACC:DISPLAY CODE + +QADCN: PUSH BC + PUSH HL + LD HL,ATBL + LD C,A + LD B,0 + ADD HL,BC + LD A,(HL) + JR DACN3 + +VRNS: DB "V1.0A\r" ; VERSION MANAGEMENT + NOP + NOP + NOP + + ; DISPLAY CODE TO ASCII CONVERSION + ; IN ACC=DISPLAY CODE + ; EXIT ACC=ASCII + +QDACN: PUSH BC + PUSH HL + PUSH DE + LD HL,ATBL + LD D,H + LD E,L + LD BC,0100H + CPIR + JR Z,DACN1 + LD A,0F0H +DACN2: POP DE +DACN3: POP HL + POP BC + RET + +DACN1: OR A + DEC HL + SBC HL,DE + LD A,L + JR DACN2 + + ; + ; + ; KEY MATRIX TO DISPLAY CODE TABL + ; +KTBL: + ;S0 00 - 07 + DB 0BFH ; SPARE + DB 0CAH ; GRAPH + DB 58H ; + DB 0C9H ; ALPHA + DB 0F0H ; NO + DB 2CH ; ; + DB 4FH ; : + DB 0CDH ; CR + ;S1 08 - 0F + DB 19H ; Y + DB 1AH ; Z + DB 55H ; @ + DB 52H ; [ + DB 54H ; ] + DB 0F0H ; NULL + DB 0F0H ; NULL + DB 0F0H ; NULL + ;S2 10 - 17 + DB 11H ; Q + DB 12H ; R + DB 13H ; S + DB 14H ; T + DB 15H ; U + DB 16H ; V + DB 17H ; W + DB 18H ; X + ;S3 18 - 1F + DB 09H ; I + DB 0AH ; J + DB 0BH ; K + DB 0CH ; L + DB 0DH ; M + DB 0EH ; N + DB 0FH ; O + DB 10H ; P + ;S4 20 - 27 + DB 01H ; A + DB 02H ; B + DB 03H ; C + DB 04H ; D + DB 05H ; E + DB 06H ; F + DB 07H ; G + DB 08H ; H + ;S5 28 - 2F + DB 21H ; 1 + DB 22H ; 2 + DB 23H ; 3 + DB 24H ; 4 + DB 25H ; 5 + DB 26H ; 6 + DB 27H ; 7 + DB 28H ; 8 + ;S6 30 - 37 + DB 59H ; \ + DB 50H ; + DB 2AH ; - + DB 00H ; SPACE + DB 20H ; 0 + DB 29H ; 9 + DB 2FH ; , + DB 2EH ; . + ;S7 38 - 3F + DB 0C8H ; INST. + DB 0C7H ; DEL. + DB 0C2H ; CURSOR UP + DB 0C1H ; CURSOR DOWN + DB 0C3H ; CURSOR RIGHT + DB 0C4H ; CURSOR LEFT + DB 49H ; ? + DB 2DH ; / + ; + ; + ; KTBL SHIFT ON + ; +KTBLS: + ;S0 00 - 07 + DB 0BFH ; SPARE + DB 0CAH ; GRAPH + DB 1BH ; POND + DB 0C9H ; ALPHA + DB 0F0H ; NO + DB 6AH ; + + DB 6BH ; * + DB 0CDH ; CR + ;S1 08 - 0F + DB 99H ; y + DB 9AH ; z + DB 0A4H ; ` + DB 0BCH ; { + DB 40H ; } + DB 0F0H ; NULL + DB 0F0H ; NULL + DB 0F0H ; NULL + ;S2 10 - 17 + DB 91H ; q + DB 92H ; r + DB 93H ; s + DB 94H ; t + DB 95H ; u + DB 96H ; v + DB 97H ; w + DB 98H ; x + ;S3 18 - 1F + DB 89H ; i + DB 8AH ; j + DB 8BH ; k + DB 8CH ; l + DB 8DH ; m + DB 8EH ; n + DB 8FH ; o + DB 90H ; p + ;S4 20 - 27 + DB 81H ; a + DB 82H ; b + DB 83H ; c + DB 84H ; d + DB 85H ; e + DB 86H ; f + DB 87H ; g + DB 88H ; h + ;S5 28 - 2F + DB 61H ; ! + DB 62H ; " + DB 63H ; # + DB 64H ; $ + DB 65H ; % + DB 66H ; & + DB 67H ; ' + DB 68H ; ( + ;S6 30 - 37 + DB 80H ; \ + DB 0A5H ; POND MARK + DB 2BH ; YEN + DB 00H ; SPACE + DB 60H ; ¶ + DB 69H ; ) + DB 51H ; < + DB 57H ; > + ;S7 38 - 3F + DB 0C6H ; CLR + DB 0C5H ; HOME + DB 0C2H ; CURSOR UP + DB 0C1H ; CURSOR DOWN + DB 0C3H ; CURSOR RIGHT + DB 0C4H ; CURSOR LEFT + DB 5AH ; + DB 45H ; + ; + ; + ; GRAPHIC + ; +KTBLGS: + ;S0 00 - 07 + DB 0BFH ; SPARE + DB 0F0H ; GRAPH BUT NULL + DB 0E5H ; # + DB 0C9H ; ALPHA + DB 0F0H ; NO + DB 42H ; # ; + DB 0B6H ; #: + DB 0CDH ; CR + ;S1 08 - 0F + DB 75H ; #Y + DB 76H ; #Z + DB 0B2H ; #@ + DB 0D8H ; #[ + DB 4EH ; #] + DB 0F0H ; #NULL + DB 0F0H ; #NULL + DB 0F0H ; #NULL + ;S2 10 - 17 + DB 3CH ; #Q + DB 30H ; #R + DB 44H ; #S + DB 71H ; #T + DB 79H ; #U + DB 0DAH ; #V + DB 38H ; #W + DB 6DH ; #X + ;S3 18 - 1F + DB 7DH ; #I + DB 5CH ; #J + DB 5BH ; #K + DB 0B4H ; #L + DB 1CH ; #M + DB 32H ; #N + DB 0B0H ; #O + DB 0D6H ; #P + ;S4 20 - 27 + DB 53H ; #A + DB 6FH ; #B + DB 0DEH ; #C + DB 47H ; #D + DB 34H ; #E + DB 4AH ; #F + DB 4BH ; #G + DB 72H ; #H + ;S5 28 - 2F + DB 37H ; #1 + DB 3EH ; #2 + DB 7FH ; #3 + DB 7BH ; #4 + DB 3AH ; #5 + DB 5EH ; #6 + DB 1FH ; #7 + DB 0BDH ; #8 + ;S6 30 - 37 + DB 0D4H ; #YEN + DB 9EH ; #+ + DB 0D2H ; #- + DB 00H ; SPACE + DB 9CH ; #0 + DB 0A1H ; #9 + DB 0CAH ; #, + DB 0B8H ; #. + ;S7 38 - 3F + DB 0C8H ; INST + DB 0C7H ; DEL. + DB 0C2H ; CURSOR UP + DB 0C1H ; CURSOR DOWN + DB 0C3H ; CURSOR RIGHT + DB 0C4H ; CURSOR LEFT + DB 0BAH ; #? + DB 0DBH ; #/ + ; + ; + ; CONTROL CODE + ; +KTBLC: + ;S0 00 - 07 + DB 0F0H + DB 0F0H + DB 0F0H ; ^ + DB 0F0H + DB 0F0H + DB 0F0H + DB 0F0H + DB 0F0H + ;S1 08 - 0F + DB 0F0H ; ^Y E3 + DB 5AH ; ^Z E4 (CHECKER) + DB 0F0H ; ^@ + DB 0F0H ; ^[ EB/E5 + DB 0F0H ; ^] EA/E7 + DB 0F0H ; #NULL + DB 0F0H ; #NULL + DB 0F0H ; #NULL + ;S2 10 - 17 + DB 0C1H ; ^Q + DB 0C2H ; ^R + DB 0C3H ; ^S + DB 0C4H ; ^T + DB 0C5H ; ^U + DB 0C6H ; ^V + DB 0F0H ; ^W E1 + DB 0F0H ; ^X E2 + ;S3 18 - 1F + DB 0F0H ; ^I F9 + DB 0F0H ; ^J FA + DB 0F0H ; ^K FB + DB 0F0H ; ^L FC + DB 0F0H ; ^M CD + DB 0F0H ; ^N FE + DB 0F0H ; ^O FF + DB 0F0H ; ^P E0 + ;S4 20 - 27 + DB 0F0H ; ^A F1 + DB 0F0H ; ^B F2 + DB 0F0H ; ^C F3 + DB 0F0H ; ^D F4 + DB 0F0H ; ^E F5 + DB 0F0H ; ^F F6 + DB 0F0H ; ^G F7 + DB 0F0H ; ^H F8 + ;S5 28 - 2F + DB 0F0H + DB 0F0H + DB 0F0H + DB 0F0H + DB 0F0H + DB 0F0H + DB 0F0H + DB 0F0H + ;S6 30 - 37 (ERROR? 7 VALUES ONLY!!) + DB 0F0H ; ^YEN E6 + DB 0F0H ; ^ EF + DB 0F0H + DB 0F0H + DB 0F0H + DB 0F0H ; ^, + DB 0F0H + ;S7 38 - 3F + DB 0F0H + DB 0F0H + DB 0F0H + DB 0F0H + DB 0F0H + DB 0F0H + DB 0F0H + DB 0F0H ; ^/ EE + ; + ; + ; KANA + ; +KTBLG: + ;S0 00 - 07 + DB 0BFH ; SPARE + DB 0F0H ; GRAPH BUT NULL + DB 0CFH ; NIKO WH. + DB 0C9H ; ALPHA + DB 0F0H ; NO + DB 0B5H ; MO + DB 4DH ; DAKU TEN + DB 0CDH ; CR + ;S1 08 - 0F + DB 35H ; HA + DB 77H ; TA + DB 0D7H ; WA + DB 0B3H ; YO + DB 0B7H ; HANDAKU + DB 0F0H + DB 0F0H + DB 0F0H + ;S2 10 - 17 + DB 7CH ; KA + DB 70H ; KE + DB 41H ; SHI + DB 31H ; KO + DB 39H ; HI + DB 0A6H ; TE + DB 78H ; KI + DB 0DDH ; CHI + ;S3 18 - 1F + DB 3DH ; FU + DB 5DH ; MI + DB 6CH ; MU + DB 56H ; ME + DB 1DH ; RHI + DB 33H ; RA + DB 0D5H ; HE + DB 0B1H ; HO + ;S4 20 - 27 + DB 46H ; SA + DB 6EH ; TO + DB 0D9H ; THU + DB 48H ; SU + DB 74H ; KU + DB 43H ; SE + DB 4CH ; SO + DB 73H ; MA + ;S5 28 - 2F + DB 3FH ; A + DB 36H ; I + DB 7EH ; U + DB 3BH ; E + DB 7AH ; O + DB 1EH ; NA + DB 5FH ; NI + DB 0A2H ; NU + ;S6 30 - 37 + DB 0D3H ; YO + DB 9FH ; YU + DB 0D1H ; YA + DB 00H ; SPACE + DB 9DH ; NO + DB 0A3H ; NE + DB 0D0H ; RU + DB 0B9H ; RE + ;S7 38 - 3F + DB 0C6H ; ?CLR + DB 0C5H ; ?HOME + DB 0C2H ; ?CURSOR UP + DB 0C1H ; ?CURSOR DOWN + DB 0C3H ; ?CURSOR RIGHT + DB 0C4H ; ?CURSOR LEFT + DB 0BBH ; DASH + DB 0BEH ; RO + + ; MEMORY DUMP COMMAND "D" + +DUMP: CALL HEXIY ; START ADDRESS + CALL P4DE + PUSH HL + CALL HLHEX ; END ADDRESS + POP DE + JR C,DUM1 ; DATA ERROR THEN +L0D36: EX DE,HL +DUM3: LD B,08H ; DISPLAY 8 BYTES + LD C,23 ; CHANGE PRINT BIAS + CALL NLPHL ; NEWLINE PRINT +DUM2: CALL SPHEX ; SPACE PRINT + ACC PRINT + INC HL + PUSH AF + LD A,(DSPXY) ; DISPLAY POINT + ADD A,C + LD (DSPXY),A ; X AXIS=X+CREG + POP AF + CP 20H + JR NC,L0D51 + LD A,2EH ; "." +L0D51: CALL QADCN ; ASCII TO DISPLAY CODE + CALL PRNT3 + LD A,(DSPXY) + INC C + SUB C ; ASCII DISPLAY POSITION + LD (DSPXY),A + DEC C + DEC C + DEC C + PUSH HL + SBC HL,DE + POP HL + JR Z,L0D85 + LD A,0F8H + LD (KEYPA),A + NOP + LD A,(KEYPB) + CP 0FEH ; SHIFT KEY ? + JR NZ,L0D78 + CALL QBLNK ; 64MSEC DELAY +L0D78: DJNZ DUM2 +L0D7A: CALL QKEY ; STOP DISPLAY + OR A + JR Z,L0D7A ; SPACE KEY THEN STOP + CALL QBRK ; BREAK IN ? + JR NZ,DUM3 +L0D85: JP ST1 ; COMMAND IN ! + +DUM1: LD HL,160 ; 20*8 BYTES + ADD HL,DE + JR L0D36 + + NOP + NOP + NOP + NOP + NOP + NOP + NOP + NOP + NOP + NOP + NOP + NOP + NOP + NOP + NOP + NOP + NOP + NOP + NOP + NOP + NOP + NOP + NOP + NOP + + ; V-BLANK CHECK + +QBLNK: PUSH AF +L0DA7: LD A,(KEYPC) ; V-BLANK + RLCA + JR NC,L0DA7 +L0DAD: LD A,(KEYPC) ; 64 + RLCA ; + JR C,L0DAD ; MSEC + POP AF + RET + ; DISPLAY ON POINTER + ; ACC=DISPLAY CODE + ; EXCEPT F0H + +QDSP: PUSH AF + PUSH BC + PUSH DE + PUSH HL +DSP01: CALL QPONT ; DISPLAY POSITION + LD (HL),A + LD HL,(DSPXY) + LD A,L + CP COLW-1 + JR NZ,DSP04 + CALL PMANG + JR C,DSP04 + EX DE,HL + LD (HL),1 ; LOGICAL 1ST COLUMN + INC HL + LD (HL),0 ; LOGICAL 2ND COLUMN +DSP04: LD A,0C3H ; CURSL + JR L0DE0 + + ; GRAPHIC STATUS CHECK + +GRSTAS: LD A,(KANAF) + CP 01H + LD A,0CAH + RET + + ; DISPLAY CONTROL + ; ACC=CONTROL CODE + +QDPCT: PUSH AF + PUSH BC + PUSH DE + PUSH HL +L0DE0: LD B,A + AND 0F0H + CP 0C0H + JR NZ,CURS5 + XOR B + RLCA + LD C,A + LD B,0 + LD HL,CTBL ; PAGE MODE1 + ADD HL,BC + LD E,(HL) + INC HL + LD D,(HL) + LD HL,(DSPXY) + EX DE,HL + JP (HL) + +CURSD: EX DE,HL ; LD HL,(DSPXY) + LD A,H + CP 24 + JR Z,CURS4 + INC H +CURS1: +CURS3: LD (DSPXY),HL +CURS5: JP QRSTR + +CURSU: EX DE,HL ; LD HL,(DSPXY) + LD A,H + OR A + JR Z,CURS5 + DEC H +CURSU1: JR CURS3 + +CURSR: EX DE,HL ; LD HL,(DSPXY) + LD A,L + CP COLW-1 + JR NC,CURS2 + INC L + JR CURS3 + +CURS2: LD L,0 + INC H + LD A,H + CP 25 + JR C,CURS1 + LD H,24 + LD (DSPXY),HL +CURS4: JR SCROL + +CURSL: EX DE,HL ; LD HL,(DSPXY) + LD A,L + OR A + JR Z,L0E2D + DEC L + JR CURS3 + +L0E2D: LD L,COLW-1 + DEC H + JP P,CURSU1 + LD H,0 + LD (DSPXY),HL + JR CURS5 + +CLRS: LD HL,MANG + LD B,27 + CALL QCLER + LD HL,0D000H ; SCRN TOP + CALL NCLR08 + IF MODE80C = 0 + LD A,017H ; Black background, white characters. Bit 7 is clear as a write to bit 7 @ DFFFH selects 40Char mode. + ELSE + LD A,017H ; Blue background, white characters in colour mode. Bit 7 is set as a write to bit 7 @ DFFFH selects 80Char mode. + ENDIF + ;LD A,71H ; COLOR DATA + CALL NCLR8 ; D800H-DFFFH CLEAR +HOME: LD HL,0 ; DSPXY:0 X=0,Y=0 + JR CURS3 + + NOP + NOP + NOP + NOP + NOP + NOP + NOP + NOP + + ; CR + +CR: CALL PMANG + RRCA + JR NC,CURS2 + LD L,0 + INC H + CP 24 + JR Z,CR1 + INC H + JR CURS1 + +CR1: LD (DSPXY),HL + + ; SCROLL + +SCROL: LD BC,SCRNSZ - COLW + LD DE,SCRN ; TOP OF $CRT ADDRESS + LD HL,SCRN+COLW ; COLUMN + PUSH BC ; 1000 STORE + LDIR + POP BC + PUSH DE + LD DE,SCRN + 800H ; COLOR RAM SCROLL + LD HL,SCRN + 800H + COLW ; SCROLL TOP + 1 LINE + LDIR + LD B,COLW ; ONE LINE + EX DE,HL + IF MODE80C = 0 + LD A,017H ; Black background, white characters. Bit 7 is clear as a write to bit 7 @ DFFFH selects 40Char mode. + ELSE + LD A,017H ; Blue background, white characters in colour mode. Bit 7 is set as a write to bit 7 @ DFFFH selects 80Char mode. + ENDIF + ;LD A,71H ; COLOR RAM INITIAL DATA + CALL QDINT + POP HL + LD B,COLW + CALL QCLER ; LAST LINE CLEAR + LD BC,ROW + 1 ; ROW NUMBER+1 + LD DE,MANG ; LOGICAL MANAGEMENT + LD HL,MANG+1 + LDIR + LD (HL),0 + LD A,(MANG) + OR A + JR Z,QRSTR + LD HL,DSPXY+1 + DEC (HL) + JR SCROL + + ; CONTROL CODE TABLE + +CTBL: DW SCROL ; SCROLLING 10H + DW CURSD ; CURSOR DOWN 11H + DW CURSU ; CURSOR UP 12H + DW CURSR ; CURSOR RIGHT 13H + DW CURSL ; CURSOR LEFT 14H + DW HOME ; 15H + DW CLRS ; 16H + DW DEL ; 17H + DW INST ; 18H + DW ALPHA ; 19H + DW KANA ; GRAPHIC 1AH + DW QRSTR ; 1BH + DW QRSTR ; 1CH + DW CR ; 1DH + DW QRSTR ; 1EH + DW QRSTR ; 1FH + + ; INST BYPASS + +INST2: SET 3,H ; COLOR RAM + LD A,(HL) ; FROM + INC HL + LD (HL),A ; TO + DEC HL ; ADDRESS ADJUST + RES 3,H + LDD ; CHANGE TRNS. + LD A,C + OR B ; BC=0 ? + JR NZ,INST2 + EX DE,HL + LD (HL),0 + SET 3,H ; COLOR RAM + IF MODE80C = 0 + LD (HL),17H ; Black background, white characters. Bit 7 is clear as a write to bit 7 @ DFFFH selects 40Char mode. + ELSE + LD (HL),17H ; Blue background, white characters in colour mode. Bit 7 is set as a write to bit 7 @ DFFFH selects 80Char mode. + ENDIF + ;LD (HL),71H + JR QRSTR + +ALPHA: XOR A +ALPH1: LD (KANAF),A + + ; RESTORE + +QRSTR: POP HL +QRSTR1: POP DE + POP BC + POP AF + RET + + NOP + NOP + NOP + NOP + +KANA: CALL GRSTAS + JP Z,DSP01 ; NOT GRAPH KEY THEN JUMP + LD A,01H + JR ALPH1 + +DEL: EX DE,HL ; LD HL,(DSPXY) + LD A,H ; HOME ? + OR L + JR Z,QRSTR + LD A,L + OR A + JR NZ,DEL1 ; LEFT SIDE ? + CALL PMANG + JR C,DEL1 + CALL QPONT + DEC HL + LD (HL),0 + JR L0F33 ; JUMP CURSL + +DEL1: CALL PMANG + RRCA + LD A,COLW + JR NC,L0F17 + RLCA ; ACC=80 +L0F17: SUB L + LD B,A ; TRNS. BYTE + CALL QPONT +DEL2: LD A,(HL) ; CHANGE FROM ADDRESS + DEC HL + LD (HL),A ; TO + INC HL + SET 3,H ; COLOR RAM + LD A,(HL) + DEC HL + LD (HL),A + RES 3,H ; CHANGE + INC HL + INC HL ; NEXT + DJNZ DEL2 + DEC HL ; ADDRESS ADJUST + LD (HL),0 + SET 3,H + IF MODE80C = 0 + LD HL,017H ; Black background, white characters. Bit 7 is clear as a write to bit 7 @ DFFFH selects 40Char mode. + ELSE + LD HL,017H ; Blue background, white characters in colour mode. Bit 7 is set as a write to bit 7 @ DFFFH selects 80Char mode. + ENDIF + ;LD HL,71H ; BLUE + WHITE +L0F33: LD A,0C4H ; JP CURSL + JP L0DE0 + +INST: CALL PMANG + RRCA + LD L,COLW - 1 + LD A,L + JR NC,L0F42 + INC H +L0F42: CALL QPNT1 + PUSH HL + LD HL,(DSPXY) + JR NC,L0F4D + LD A,(COLW*2) - 1 +L0F4D: SUB L + LD B,0 + LD C,A + POP DE + JR Z,QRSTR + LD A,(DE) + OR A + JR NZ,QRSTR + LD H,D ; HL<-DE + LD L,E + DEC HL + JP INST2 ; JUMP NEXT (BYPASS) + + ; PROGRAM SAVE + ; COMMAND "S" + +SAVE: CALL HEXIY ; START ADDRESS + LD (DTADR),HL ; DATA ADDRESS BUFFER + LD B,H + LD C,L + CALL P4DE + CALL HEXIY ; END ADDRESS + SBC HL,BC ; BYTE SIZE + INC HL + LD (SIZE),HL ; BYTE SIZE BUFFER + CALL P4DE + CALL HEXIY ; EXECUTE ADDRESS + LD (EXADR),HL ; BUFFER + CALL NL + LD DE,MSGSV ; SAVED FILENAME + RST 18H ; CALL MSGX + CALL BGETL ; FILENAME INPUT + CALL P4DE + CALL P4DE + LD HL,NAME ; NAME BUFFER +SAV1: INC DE + LD A,(DE) + LD (HL),A ; FILENAME TRANS. + INC HL + CP 0DH ; END CODE + JR NZ,SAV1 + LD A,01H ; ATTRIBUTE: OBJECT CODE + LD (ATRB),A + CALL QWRI + JP C,QER ; WRITE ERROR + CALL QWRD ; DATA + JP C,QER + CALL NL + LD DE,MSGOK ; OK MESSAGE + RST 18H ; CALL MSGX + JP ST1 + + ; COMPUTE POINT ADDRESS + ; HL=SCREEN COORDINATE + ; EXIT HL=POINT ADDRESS ON SCREEN + +QPONT: LD HL,(DSPXY) +QPNT1: PUSH AF + PUSH BC + PUSH DE + PUSH HL + POP BC + LD DE,COLW ; 40 + LD HL,SCRN-COLW +QPNT2: ADD HL,DE + DEC B + JP P,QPNT2 + LD B,0 + ADD HL,BC + POP DE + POP BC + POP AF + RET + + ; VERIFYING COMMAND "V" + +VRFY: CALL QVRFY + JP C,QER + LD DE,MSGOK + RST 18H + JP ST1 + + ; CLER + ; B=SIZE + ; HL=LOW ADDRESS + +QCLER: XOR A + JR QDINT + +QCLRFF: LD A,0FFH +QDINT: LD (HL),A + INC HL + DJNZ QDINT + RET + + ; GAP CHECK + +GAPCK: PUSH BC + PUSH DE + PUSH HL + LD BC,KEYPB + LD DE,CSTR +GAPCK1: LD H,100 +GAPCK2: CALL EDGE + JR C,GAPCK3 + CALL DLY3 ; CALL DLY2*3 + LD A,(DE) + AND 20H + JR NZ,GAPCK1 + DEC H + JR NZ,GAPCK2 +GAPCK3: JP RET3 + + ; MONITOR WORK AREA + ; (MZ700) + + ORG 10F0H +SPV: +IBUFE: ; TAPE BUFFER (128 BYTES) +ATRB: DS virtual 1 ; ATTRIBUTE +NAME: DS virtual 17 ; FILE NAME +SIZE: DS virtual 2 ; BYTESIZE +DTADR: DS virtual 2 ; DATA ADDRESS +EXADR: DS virtual 2 ; EXECUTION ADDRESS +COMNT: DS virtual 104 ; COMMENT +KANAF: DS virtual 1 ; KANA FLAG (01=GRAPHIC MODE) +DSPXY: DS virtual 2 ; DISPLAY COORDINATES +MANG: DS virtual 27 ; COLUMN MANAGEMENT +FLASH: DS virtual 1 ; FLASHING DATA +FLPST: DS virtual 2 ; FLASHING POSITION +FLSST: DS virtual 1 ; FLASHING STATUS +FLSDT: DS virtual 1 ; CURSOR DATA +STRGF: DS virtual 1 ; STRING FLAG +DPRNT: DS virtual 1 ; TAB COUNTER +TMCNT: DS virtual 2 ; TAPE MARK COUNTER +SUMDT: DS virtual 2 ; CHECK SUM DATA +CSMDT: DS virtual 2 ; FOR COMPARE SUM DATA +AMPM: DS virtual 1 ; AMPM DATA +TIMFG: DS virtual 1 ; TIME FLAG +SWRK: DS virtual 1 ; KEY SOUND FLAG +TEMPW: DS virtual 1 ; TEMPO WORK +ONTYO: DS virtual 1 ; ONTYO WORK +OCTV: DS virtual 1 ; OCTAVE WORK +RATIO: DS virtual 2 ; ONPU RATIO +BUFER: DS virtual 81 ; GET LINE BUFFER + + ; EQU TABLE I/O REPORT + +KEYPA: EQU 0E000H +KEYPB: EQU 0E001H +KEYPC: EQU 0E002H +KEYPF: EQU 0E003H +CSTR: EQU 0E002H +CSTPT: EQU 0E003H +CONT0: EQU 0E004H +CONT1: EQU 0E005H +CONT2: EQU 0E006H +CONTF: EQU 0E007H +SUNDG: EQU 0E008H +TEMP: EQU 0E008H + ; MONITOR WORK AREA + +SCRN: EQU 0D000H +KANST: EQU 0E003H ; KANA STATUS REPORT + + diff --git a/asm/cbios.asm b/asm/cbios.asm new file mode 100644 index 0000000..2538d02 --- /dev/null +++ b/asm/cbios.asm @@ -0,0 +1,2638 @@ +;-------------------------------------------------------------------------------------------------------- +;- +;- Name: cbios.asm +;- Created: January 2020 +;- Author(s): Philip Smart +;- Description: Sharp MZ series CPM BIOS System. +;- This is the CPM CBIOS for the Sharp MZ80A hardware plus RFS/80 char upgrades. +;- It makes extensive use of the paged roms to add functionality and conserve +;- RAM for the CPM applications. +;- +;- Credits: Some of the comments and parts of the standard CPM deblocking/blocking algorithm +;- come from the Z80-MBC2 project, (C) SuperFabius. +;- Copyright: (c) 2018-23 Philip Smart +;- +;- History: Jan 2020 - Seperated Bank from RFS for dedicated use with CPM CBIOS. +;- May 2020 - Advent of the new RFS PCB v2.0, quite a few changes to accommodate the +;- additional and different hardware. The SPI is now onboard the PCB and +;- not using the printer interface card. +;- Mar 2021 - Updates for the RFS v2.1 board. +;- Apr 2021 - Removed ROM and RAM Drive functionality as it provided no performance or +;- use benefit over SD which are much larger and RW. +;-------------------------------------------------------------------------------------------------------- +;- This source file is free software: you can redistribute it and-or modify +;- it under the terms of the GNU General Public License as published +;- by the Free Software Foundation, either version 3 of the License, or +;- (at your option) any later version. +;- +;- This source file is distributed in the hope that it will be useful, +;- but WITHOUT ANY WARRANTY; without even the implied warranty of +;- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +;- GNU General Public License for more details. +;- +;- You should have received a copy of the GNU General Public License +;- along with this program. If not, see . +;-------------------------------------------------------------------------------------------------------- + + ; Bring in definitions and macros. + INCLUDE "cpm_buildversion.asm" + INCLUDE "cpm_definitions.asm" + INCLUDE "macros.asm" + + ORG CBIOSSTART + + ;---------------------------------------------------------------------------------------------------------------------------------------------- + ; CBIOS organisation. + ; + ; Source File Size ROM Type Address Location Description + ; cbios.asm 4K MROM (relocated CBIOS providing the CP/M API, initialisation routines, ROM Disk + ; Monitor ROM from controller routines, Interrupt routines. + ; 0x0000 - 0x0FFF) 0xC000 - 0xCFFF MRON Bank 2 + ; cbios_bank1.asm 2K Paged ROM 0xE800 - 0xEFFF, UROM Bank 8 Basic Sound and Melody, RTC, Keyboard and helper functionality. + ; cbios_bank2.asm 2k Paged ROM 0xE800 - 0xEFFF, UROM Bank 9 Screen I/O and ANSI Terminal Parser. + ; cbios_bank2.asm 2k Paged ROM 0xE800 - 0xEFFF, UROM Bank 10 SD Card Controller functionality. + ; cbios_bank2.asm 2k Paged ROM 0xE800 - 0xEFFF, UROM Bank 11 Floppy Disk Controller functionality. + ;---------------------------------------------------------------------------------------------------------------------------------------------- + + ;------------------------------------------------------------------------------- + ; + ; BIOS jump table + ; + ;------------------------------------------------------------------------------- + JP BOOT_ + JP WBOOT_ + JP CONST_ + JP CONIN_ + JP CONOUT_ + JP LIST_ + JP PUNCH_ + JP READER_ + JP HOME_ + JP SELDSK_ + JP SETTRK_ + JP SETSEC_ + JP SETDMA_ + JP READ_ + JP WRITE_ + JP LISTST_ + JP SECTRN_ + NOP + NOP + RET + JP BANKTOBANK_ + +; Methods to access public functions in paged User Rom. The User Rom bank +; is switched in and a jump made to the public function. The page remains +; selected until the next public access call and the page changed accordingly. + + ; CBIOS Bank 1 - Utilities and Audio. +BANK8: PUSH AF + LD A,ROMBANK8 + LD (BNKSELUSER),A + POP AF + RET + ; CBIOS Bank 2 - Screen / ANSI Terminal +BANK9: PUSH AF + LD A,ROMBANK9 + LD (BNKSELUSER),A + POP AF + RET + ; CBIOS Bank 3 - SD Card. +BANK10: PUSH AF + LD A,ROMBANK10 + LD (BNKSELUSER),A + POP AF + RET + ; CBIOS Bank 4 +BANK11: PUSH AF + LD A,ROMBANK11 + LD (BNKSELUSER),A + POP AF + RET + + ; Method to allow one bank to call a routine in another bank. It is costly in processing time + ; and should only be used infrequently. + ; + ; Input: A [7:4] = Bank to Call + ; [3:0] = Calling Bank. + ; HL = Address to call. + ; AF = Stored on stack to pass to called function. + ; All other registers passed to called function. + ; Stack; +2 = AF + ; Output: All registers and flags returned to caller. + ; +BANKTOBANK_:LD (USRBANKSAV),A ; Save the bank we return to. + SRL A ; Switch to required bank. + SRL A + SRL A + SRL A + LD (BNKSELUSER),A + LD (HLSAVE),HL ; Save HL (exec address) whilst we get AF from stack. + POP HL ; HL = return address in original bank. + POP AF ; AF to pass to called routine. + PUSH HL ; Restore return address onto stack. + LD HL,BKTOBKRET ; Push the address t + PUSH HL ; Called routine must return to this method so we can switch back the banks. + LD HL,(HLSAVE) ; Get address to call. + JP (HL) ; No execute called routine +BKTOBKRET: PUSH AF + LD A,(USRBANKSAV) + AND 00FH ; We just want the bank number we are returning to. + LD (BNKSELUSER),A ; Switch back bank. + POP AF ; Restore A and flags to pass back to caller. + RET + + +; Public methods for User Rom CBIOS Bank 1 - Utility functions. +?REBOOT: LD A,(ROMCTL) ; Make sure Flash RAM I is active. + AND 03FH + LD (ROMCTL),A + LD A,ROMBANK8 ; Method to exit CPM and return to the Sharp MZ80A Monitor. + SCF + CALL SELUSRBNK ; Ensure Rom Control is enabled + JP QREBOOT ; Reboot has to take place from User ROM as the monitor ROM is swapped back to default position. + +?MLDY: CALL BANK8 ; Method to sound a melody given an input array of notes to play. + JP QMELDY + +?BEL: CALL BANK8 ; Method to sound a bell. + JP QBEL + +?TEMP: CALL BANK8 ; Method to set the playback tempo. + JP QTEMP + +?MLDST: CALL BANK8 ; Method to start playing a melody. + JP QMSTA + +?MLDSP: CALL BANK8 ; Method to stop playing a melody. + JP QMSTP + +?MODE: CALL BANK8 ; Method to setup the 8255 PIO. + JP QMODE + +?TIMESET: CALL BANK8 ; Method to setup the RTC. + JP QTIMESET + +?TIMEREAD: CALL BANK8 ; Method to read the RTC. + JP QTIMEREAD + +?CHKKY: CALL BANK8 ; Method to see if a key has been pressed or available in the key buffer. + JP QCHKKY + +?GETKY: CALL BANK8 ; Method to get the next key from the key buffer or wait until one is pressed. + JP QGETKY + + +; Public methods for User Rom CBIOS Bank 2 - Screen / ANSI Terminal functions. + +?PRNT: CALL BANK9 ; Print a character onto the screen at current X/Y location. + JP QPRNT + +?PRTHX: CALL BANK9 ; Print register A onto screen as 2 hex digits. + JP QPRTHX + +?PRTHL: CALL BANK9 ; Print register HL onto screen as 4 hex digits. + JP QPRTHL + +?ANSITERM: CALL BANK9 ; Send character into the ANSI terminal emulator and process. + JP QANSITERM + +?NL: LD A,LF ; Print a newline. + JR ?PRNT + +?PRTS: LD A,SPACE ; Print a space. + JR ?PRNT + +; Public methods for User ROM CBIOS Bank 3 - SD Card functions. + +?SDINIT: CALL BANK10 ; Initialise the SD Card subsystem + JP SD_INIT + +?SDREAD: CALL BANK10 ; Read a full or partial sector (512 bytes). + JP SD_READ + +?SDWRITE: CALL BANK10 ; Write a full or partial sector (512 bytes). + JP SD_WRITE + +?SDGETLBA: CALL BANK10 ; Get the LBA address for the given CPM Track and Sector. + JP SD_GETLBA + +?SDCREAD: CALL BANK10 ; Read a CPM host sector according to stored values (512 bytes). + JP SDC_READ + +?SDCWRITE: CALL BANK10 ; Write a CPM host sector according to stored values (512 bytes). + JP SDC_WRITE + +; Public methods for User ROM CBIOS Bank 4 - Floppy Disk Controller functions. + +?DSKINIT: CALL BANK11 ; Initialise the disk system. + JP QDSKINIT + +?SETDRVCFG: CALL BANK11 ; Set the drive configuration. + JP QSETDRVCFG + +?SETDRVMAP: CALL BANK11 ; Set the drive mapping, ie. CPM Drive C is FDC Drive. + JP QSETDRVMAP + +?SELDRIVE: CALL BANK11 ; Select the requested drive and turn on motor. + JP QSELDRIVE + +?GETMAPDSK: CALL BANK11 ; Map the CPM Disk to an actual controller + disk number. + JP QGETMAPDSK + +?DSKREAD: CALL BANK11 ; Read a sector from the selected disk + JP QDSKREAD + +?DSKWRITE: CALL BANK11 ; Write a sector to the selected disk + JP QDSKWRITE + + + + + ;------------------------------------------------------------------------------- + ; BOOT + ; + ; The BOOT entry point gets control from the cold start loader and is + ; responsible for basic system initialization, including sending a sign-on + ; message, which can be omitted in the first version. + ; If the IOBYTE function is implemented, it must be set at this point. + ; The various system parameters that are set by the WBOOT entry point must be + ; initialized, and control is transferred to the CCP at 3400 + b for further + ; processing. Note that register C must be set to zero to select drive A. + ; + ; NB. This code is executed by the MZF loader. The following code is assembled + ; in the header at $1108 to ensure correct startup. + ; LD A,($E00C) ; - Switch ROM to location $C000 + ; LD A,ROMBANK2 ; - Switch to the CBIOS rom in bank 2 of the monitor rom bank. + ; LD ($EFFD),A ; - Perform the bank switch. + ; JP $C000 ; - Go to BOOT_ + ;------------------------------------------------------------------------------- +BOOT_: DI ; Disable Interrupts and sat mode. NB. Interrupts are physically disabled by 8255 Port C2 set to low. + IM 1 + ; + LD SP,BIOSSTACK ; Setup to use local stack until CPM takes over. + ; + LD HL,CPMBIOS ; Start of CPM disk table and variable area + LD BC,VAREND-CPMBIOS ; Size of CPM disk table and variable area. + XOR A + LD D,A +INIT1: LD (HL),D ; Clear variable memory including stack space. + INC HL + DEC BC + LD A,B + OR C + JR NZ,INIT1 + ; + LD HL,00000H + LD BC,CBASE +INIT2: LD (HL),D ; Clear TPA space. + INC HL + DEC BC + LD A,B + OR C + JR NZ,INIT2 + ; + CALL ?MODE ; Configure 8255 port C, set Motor Off, VGATE to 1 (off) and INTMSK to 0 (interrupts disabled). + LD A,016H + CALL ?PRNT + LD A,017H ; Blue background, white characters in colour mode. Bit 7 is set as a write to bit 7 @ DFFFH selects 80Char mode. + LD HL,ARAM + CALL CLR8 + LD A,004H + LD (TEMPW),A ; Setup the tempo for sound output. + + ; Initialise the Rom Paging Control Registers. + LD B,16 ; If we read the bank control reset register 16 times then this will enable bank control and the 16th read will reset all bank control registers to default. +INIT3: LD A,(BNKCTRLRST) + DJNZ INIT3 ; Apply the default number of coded latch reads to enable the bank control registers. + LD A,BNKCTRLDEF ; Set coded latch, SDCS high, BBMOSI to high and BBCLK to high which enables SDCLK. + LD (BNKCTRL),A + LD (ROMCTL),A ; Save to memory the value in the bank control register - this register is used for SPI etc so need to remember its setting. + LD A,ROMBANK9 ; Screen Bank. + LD (BNKSELUSER),A + ; + + ; Setup keyboard buffer control. + LD A,0 + LD (KEYCOUNT),A ; Set keyboard buffer to empty. + LD HL,KEYBUF + LD (KEYWRITE),HL ; Set write pointer to beginning of keyboard buffer. + LD (KEYREAD),HL ; Set read pointer to beginning of keyboard buffer. + + ; Setup keyboard rate control and set to CAPSLOCK mode. + ; (0 = Off, 1 = CAPSLOCK, 2 = SHIFTLOCK). + LD A,002H ; Initialise key repeater. + LD (KEYRPT),A + LD A,001H + LD (SFTLK),A ; Setup shift lock, default = off. + + ; Setup the initial cursor, for CAPSLOCK this is a double underscore. + LD A,03EH + LD (FLSDT),A + LD A,080H ; Cursor on (Bit D7=1). + LD (FLASHCTL),A + + ; Change to 80 character mode if enabled. + IF BUILD_80C = 1 + LD HL,DSPCTL ; Setup address of display control register latch. + LD A, 128 ; 80 char mode. + LD E,(HL) ; Dummy operation to enable latch write via multivibrator. + LD (HL), A + ENDIF + + CALL ?MLDSP + CALL ?NL + LD DE,CBIOSSIGNON ; Start of sign on message, as devices are detected they are added to the sign on. + CALL MONPRTSTR + CALL ?BEL ; Beep to indicate startup - for cases where screen is slow to startup. + LD A,0FFH + LD (SWRK),A + + LD HL,NUMBERBUF + LD (NUMBERPOS),HL + ; + XOR A + LD (IOBYT),A + LD (CDISK),A + + ; DRVAVAIL flag definition. Version 1.25 - removed ROM Drives and RAM drives as they provided no speed or use benefit compared with SD drives. + ; + ; 1 = Active. + ; + ; 7 6 5 4 3 2 1 0 + ; ^ ^ ^ ^ ^ ^ ^ ^ + ; | | | | | | | |-- Floppy Drive Present + ; | | | | | | |---- ROM Drive Present + ; | | | | | |------ SD Card Present + ; | | | | |-------- RAM Drive Present + ; | | | |---------- + ; | | |------------ + ; | |-------------- + ; |---------------- Drives present + ; + ; Initialise the SD Card subsystem (if connected). + ; + ; CALL ?SDINIT + LD A,0 ; No drives yet detected so zero available mask. + ; JR NZ,STRT2 + SET 2,A ; Assume the SD Card is present if it initialised. + ; + LD DE,SDAVAIL + CALL PRTSTRTMSG ; Print message and store Drive Availability flag in A + ; +STRT2: LD (DRVAVAIL),A + ; + ; Locate the CPM binary Image in the ROM and store the Bank/Block to speed up warm boot.used for Warm restart CCP/BDOS reload. + LD HL,CPMROMFNAME ; Name of CPM File in rom. + CALL FINDMZF + JP NZ,ROMFINDERR ; Failed to find CPM in the ROM! This shouldnt happen even if we boot from SD card, a copy needs to be in the ROM. + LD (CPMROMLOC),BC + +STRT4: CALL ?DSKINIT ; Initialise the disk subsystem. + JR NZ,STRT5 + LD A,(DRVAVAIL) + SET 0,A ; Indicate Floppy drives are available. + + LD DE,FDCAVAIL + CALL PRTSTRTMSG ; Print message and store Drive Availability flag in A + ; +STRT5: LD DE,CBIOSIGNEND ; Terminate the signon message which now includes list of drives detected. + CALL MONPRTSTR + ;CALL ?NL + ; + ; Allocate DPB according to drives detected in priorty, SD,FDC + ; + LD DE,DPBASE ; Base of parameter block. + LD A,0 ; Using scratch area, setup the disk count, pointer to ALV memory and pointer to CSV memory. + LD (CDIRBUF),A + LD HL,CSVALVMEM + LD (CDIRBUF+1),HL + + ; Drives A,B default to SD card if present. + CALL ADDSDDRIVE + CALL ADDSDDRIVE + + ; Floppy drive controller always has 2 drives so set them up, which will be C,D when SD card present else A,B. + CALL ADDFLPYDRV + CALL ADDFLPYDRV + + ; Add additional SD card drives according to free space. +STRT9: CALL ADDSDDRIVE + ; + ; Now add as many additional SD drives as we have RAM available within the CBIOS. + ; + LD BC,(CDIRBUF+1) + LD HL,CSVALVEND - 257 ; Subtract the size of the ALV (CSV has no size for a fixed SD drive) + OR A + SBC HL,BC + JR C,STRT10 ; If there is no more space, exit. + JR STRT9 ; Add another, keep on adding until there is no more ALV Memory free. + +STRT10: LD A,(CDIRBUF) + LD (NDISKS),A ; Setup max number of system disks found on this boot up. + + ; Setup timer interrupts + LD IX,TIMIN ; Pass the interrupt service handler vector. + LD BC,00000H ; Time starts at 00:00:00 01/01/1980 on initialisation. + LD DE,00000H + LD HL,00000H + CALL ?TIMESET + + ; Signon message after all the hardware has been initialised. + LD DE,CPMCOPYRMSG + CALL MONPRTSTR + + ; CP/M init +CPMINIT: LD A,(DRVAVAIL) + BIT 0,A + JR Z,CPMINIT1 + ; + CALL ?DSKINIT ; Re-initialise the disk subsystem if available. + XOR A ; 0 to accumulator + LD (HSTACT),A ; Host buffer inactive + LD (UNACNT),A ; Clear unalloc count + ; +CPMINIT1: LD A, 0C3H ; C3 IS A JMP INSTRUCTION + LD (00000H), A ; FOR JMP TO WBOOT + LD HL,WBOOTE ; WBOOT ENTRY POINT + LD (00001H), HL ; SET ADDRESS FIELD FOR JMP AT 0 + LD (00005H), A ; FOR JMP TO BDOS + LD HL, CPMBDOS ; BDOS ENTRY POINT + LD (00006H), HL ; ADDRESS FIELD OF JUMP AT 5 TO BDOS + LD HL,TIMIN ; Re-install interrupt vector for RTC incase it was overwritten. + LD (00038H),A + LD (00039H),HL + LD BC,CPMUSERDMA + CALL SETDMA_ + ; + ; check if current disk is valid + LD A,(NDISKS) ; Get the dynamic disk count. + LD L,A + LD A, (CDISK) ; GET CURRENT USER/DISK NUMBER (UUUUDDDD) + AND 00FH ; Isolate the disk number. + CP L ; Drive number ok? + JR C, WBTDSKOK2 ; Yes, jump (Carry set if A < NDISKS) + LD A, (CDISK) ; No, set disk 0 (previous user) + AND 0F0H + LD (CDISK), A ; Save User/Disk +WBTDSKOK2: CALL ?SETDRVMAP ; Refresh the map of physical floppies to CPM drive number. + CALL ?SETDRVCFG + ; LD A,(DISKTYPE) + ; OR A + ; CALL Z,?SELDRIVE ; Select and start disk drive motor if floppy disk. + ; + LD A,05H ; Enable interrupts at hardware level. + LD (KEYPF),A + ; + LD A, (CDISK) + LD C, A ; C = current User/Disk for CCP jump (UUUUDDDD) + ; +GOCPM: EI + JP CCP ; Start the CCP. + + ; Method to add an SD drive into the CPM disk definitions. + ; If the SD controller hasnt been detected the routine exits without configuration. +ADDSDDRIVE: LD A,(DRVAVAIL) + BIT 2,A + RET Z ; No SD interface so skip. + + LD BC,0 ; Setup CSV/ALV parameters for a 16MB SD Card drive. + LD (CDIRBUF+3),BC + LD BC,257 ; 2048/8 + 1 + LD (CDIRBUF+5),BC + LD BC,DPBLOCK4 + LD (CDIRBUF+7),BC ; Address of Disk Parameters + CALL COPYDPB ; Add in an SD drive. + RET + + ; Method to add a Floppy drive into the CPM disk definitions table. + ; If the Floppy controller hasnt been detected then skip without configuration. +ADDFLPYDRV: LD A,(DRVAVAIL) + BIT 0,A + RET Z ; No Floppy drives available then skip. + + LD BC,128/4 ; Setup CSV/ALV parameters for a 1.4MB Floppy drive. + LD (CDIRBUF+3),BC + LD BC,91 ; 720/8 + 1 + LD (CDIRBUF+5),BC + LD BC,DPBLOCK3 + LD (CDIRBUF+7),BC ; Address of Disk Parameters + CALL COPYDPB ; Add in a floppy drive. + RET + + ; Helper method to print a message with a comma if Bit 7 of A is set. +PRTSTRTMSG: PUSH AF + BIT 7,A + JR Z,PRTCOMMA1 + LD A,',' + CALL ?PRNT +PRTCOMMA1: CALL MONPRTSTR + POP AF + SET 7,A + LD (DRVAVAIL),A + RET + + ;------------------------------------------------------------------------------- + ; WBOOT + ; + ; The WBOOT entry point gets control when a warm start occurs. + ; A warm start is performed whenever a user program branches to location + ; 0000H, or when the CPU is reset from the front panel. The CP/M system must + ; be loaded from the first two tracks of drive A up to, but not including, + ; the BIOS, or CBIOS, if the user has completed the patch. System parameters + ; must be initialized as follows: + ; + ; location 0,1,2 + ; Set to JMP WBOOT for warm starts (000H: JMP 4A03H + b) + ; + ; location 3 + ; Set initial value of IOBYTE, if implemented in the CBIOS + ; + ; location 4 + ; High nibble = current user number, low nibble = current drive + ; + ; location 5,6,7 + ; Set to JMP BDOS, which is the primary entry point to CP/M for transient + ; programs. (0005H: JMP 3C06H + b) + ; + ; Refer to Section 6.9 for complete details of page zero use. Upon completion + ; of the initialization, the WBOOT program must branch to the CCP at 3400H+b + ; to restart the system. + ; Upon entry to the CCP, register C is set to the drive to select after system + ; initialization. The WBOOT routine should read location 4 in memory, verify + ; that is a legal drive, and pass it to the CCP in register C. + ;------------------------------------------------------------------------------- +WBOOT_: DI + ; + LD SP,BIOSSTACK + + ; Reload the CCP and BDOS from ROM. + LD DE,CPMBIOS-CBASE ; Only want to load in CCP and BDOS. + LD BC,(CPMROMLOC) ; Load up the Bank and Page where the CPM Image can be found. + CALL UROMLOAD + LD A,ROMBANK9 ; Screen Bank. + LD (BNKSELUSER),A + JP Z,CPMINIT ; Initialise CPM and run. + LD DE,NOBDOS + CALL MONPRTSTR +WBOOT2: JR WBOOT2 ; Nowhere to go! + + + ;------------------------------------------------------------------------------- + ; CONOUT + ; + ; The character is sent from register C to the console output device. + ; The character is in ASCII, with high-order parity bit set to zero. You + ; might want to include a time-out on a line-feed or carriage return, if the + ; console device requires some time interval at the end of the line (such as + ; a TI Silent 700 terminal). You can filter out control characters that cause + ; the console device to react in a strange way (CTRL_Z causes the Lear- + ; Siegler terminal to clear the screen, for example). + ;------------------------------------------------------------------------------- +CONOUT_: LD (SPSAVE),SP ; The original monitor routines and the enhancements can use + LD SP,BIOSSTACK ; more stack space than the 16 words provided by CPM. + LD A,C + CALL ?ANSITERM + LD SP,(SPSAVE) ; Restore the CPM stack. + RET + + ;------------------------------------------------------------------------------- + ; CONIN + ; + ; The next console character is read into register A, and the parity bit is + ; set, high-order bit, to zero. If no console character is ready, wait until + ; a character is typed before returning. + ;------------------------------------------------------------------------------- +CONIN_: LD (SPSAVE),SP ; The original monitor routines and the enhancements can use + LD SP,BIOSSTACK ; more stack space than the 16 words provided by CPM. + CALL ?GETKY + LD SP,(SPSAVE) ; Restore the CPM stack. + RET + + ;------------------------------------------------------------------------------- + ; CONST + ; + ; You should sample the status of the currently assigned console device and + ; return 0FFH in register A if a character is ready to read and 00H in + ; register A if no console characters are ready. + ;------------------------------------------------------------------------------- +CONST_: LD (SPSAVE),SP ; The original monitor routines and the enhancements can use + LD SP,BIOSSTACK ; more stack space than the 16 words provided by CPM. + CALL ?CHKKY + LD SP,(SPSAVE) ; Restore the CPM stack. + RET + + ;------------------------------------------------------------------------------- + ; READER + ; + ; The next character is read from the currently assigned reader device into + ; register A with zero parity (high-order bit must be zero); an end-of-file + ; condition is reported by returning an ASCII CTRL_Z(1AH). + ;------------------------------------------------------------------------------- +READER_: LD A, 01AH ; Reader not implemented. + RET + + ;------------------------------------------------------------------------------- + ; PUNCH + ; + ; The character is sent from register C to the currently assigned punch + ; device. The character is in ASCII with zero parity. + ;------------------------------------------------------------------------------- +PUNCH_: RET ; Punch not implemented + + ;------------------------------------------------------------------------------- + ; LIST + ; + ; The character is sent from register C to the currently assigned listing + ; device. The character is in ASCII with zero parity bit. + ;------------------------------------------------------------------------------- +LIST_: RET + + ;------------------------------------------------------------------------------- + ; LISTST + ; + ; You return the ready status of the list device used by the DESPOOL program + ; to improve console response during its operation. The value 00 is returned + ; in A if the list device is not ready to accept a character and 0FFH if a + ; character can be sent to the printer. A 00 value should be returned if LIST + ; status is not implemented. + ;------------------------------------------------------------------------------- +LISTST_: XOR A ; Not implemented. + RET + + ;------------------------------------------------------------------------------- + ; HOME + ; + ; The disk head of the currently selected disk (initially disk A) is moved to + ; the track 00 position. If the controller allows access to the track 0 flag + ; from the drive, the head is stepped until the track 0 flag is detected. If + ; the controller does not support this feature, the HOME call is translated + ; into a call to SETTRK with a parameter of 0. + ;------------------------------------------------------------------------------- +HOME_: LD BC,00000H + + ;------------------------------------------------------------------------------- + ; SETTRK + ; + ; Register BC contains the track number for subsequent disk accesses on the + ; currently selected drive. The sector number in BC is the same as the number + ; returned from the SECTRN entry point. You can choose to seek the selected + ; track at this time or delay the seek until the next read or write actually + ; occurs. Register BC can take on values in the range 0-76 corresponding to + ; valid track numbers for standard floppy disk drives and 0-65535 for + ; nonstandard disk subsystems. + ;------------------------------------------------------------------------------- +SETTRK_: LD (SEKTRK),BC ; Set track passed from BDOS in register BC. + RET + + ;------------------------------------------------------------------------------- + ; SETSEC + ; + ; Register BC contains the sector number, 1 through 26, for subsequent disk + ; accesses on the currently selected drive. The sector number in BC is the + ; same as the number returned from the SECTRAN entry point. You can choose to + ; send this information to the controller at this point or delay sector + ; selection until a read or write operation occurs. + ;------------------------------------------------------------------------------- +SETSEC_: LD A,C ; Set sector passed from BDOS in register BC. + LD (SEKSEC), A + RET + + ;------------------------------------------------------------------------------- + ; SETDMA + ; + ; Register BC contains the DMA (Disk Memory Access) address for subsequent + ; read or write operations. For example, if B = 00H and C = 80H when SETDMA + ; is called, all subsequent read operations read their data into 80H through + ; 0FFH and all subsequent write operations get their data from 80H through + ; 0FFH, until the next call to SETDMA occurs. The initial DMA address is + ; assumed to be 80H. The controller need not actually support Direct Memory + ; Access. If, for example, all data transfers are through I/O ports, the + ; CBIOS that is constructed uses the 128 byte area starting at the selected + ; DMA address for the memory buffer during the subsequent read or write + ; operations. + ;------------------------------------------------------------------------------- +SETDMA_: LD (DMAADDR),BC + RET + + ;------------------------------------------------------------------------------- + ; SELDSK + ; + ; The disk drive given by register C is selected for further operations, + ; where register C contains 0 for drive A, 1 for drive B, and so on up to 15 + ; for drive P (the standard CP/M distribution version supports four drives). + ; On each disk select, SELDSK must return in HL the base address of a 16-byte + ; area, called the Disk Parameter Header, described in Section 6.10. + ; For standard floppy disk drives, the contents of the header and associated + ; tables do not change; thus, the program segment included in the sample + ; CBIOS performs this operation automatically. + ; + ; If there is an attempt to select a nonexistent drive, SELDSK returns + ; HL = 0000H as an error indicator. Although SELDSK must return the header + ; address on each call, it is advisable to postpone the physical disk select + ; operation until an I/O function (seek, read, or write) is actually + ; performed, because disk selects often occur without ultimately performing + ; any disk I/O, and many controllers unload the head of the current disk + ; before selecting the new drive. This causes an excessive amount of noise + ; and disk wear. The least significant bit of register E is zero if this is + ; the first occurrence of the drive select since the last cold or warm start. + ;------------------------------------------------------------------------------- +SELDSK_: LD (SPSAVE),SP ; The original monitor routines and the enhancements can use + LD SP,BIOSSTACK ; more stack space than the 16 words provided by CPM. + LD HL, 00000H ; HL = error code + LD A,(NDISKS) + LD B,A + LD A,C + CP B + JR NC,SELDSK1 ; Ensure we dont select a non existant disk. + LD (CDISK),A ; Setup drive. +SELDSK0: CALL ?SETDRVCFG + LD A,(DISKTYPE) + CP DSKTYP_SDC + JR Z,SELSDCDSK ; Select SD Card. + ; If it is not an SD drive then it must be a floppy disk. + LD A,C + JR CALCHL +SELDSK1: LD SP,(SPSAVE) ; Restore the CPM stack. + RET + + ; For SD Cards, check that the SD Card is present, otherwise illegal disk. +SELSDCDSK: LD A,(DRVAVAIL) + BIT 2,A + JR Z,SELDSK1 ; No SD Card drives available then skip. + LD A,C + + ; + ; Code for blocking and deblocking algorithm + ; (see CP/M 2.2 Alteration Guide p.34 and APPENDIX G) +CALCHL: LD (SEKDSK),A + RLC A ; *2 + RLC A ; *4 + RLC A ; *8 + RLC A ; *16 + LD HL,DPBASE + LD B,0 + LD C,A + ADD HL,BC + JR SELDSK1 + + + ;------------------------------------------------------------------------------- + ; SECTRAN + ; + ; Logical-to-physical sector translation is performed to improve the overall + ; response of CP/M. Standard CP/M systems are shipped with a skew factor of + ; 6, where six physical sectors are skipped between each logical read + ; operation. This skew factor allows enough time between sectors for most + ; programs to load their buffers without missing the next sector. In + ; particular computer systems that use fast processors, memory, and disk + ; subsystems, the skew factor might be changed to improve overall response. + ; However, the user should maintain a single-density IBM-compatible version + ; of CP/M for information transfer into and out of the computer system, using + ; a skew factor of 6. + ; + ; In general, SECTRAN receives a logical sector number relative to zero in BC + ; and a translate table address in DE. The sector number is used as an index + ; into the translate table, with the resulting physical sector number in HL. + ; For standard systems, the table and indexing code is provided in the CBIOS + ; and need not be changed. + ;------------------------------------------------------------------------------- +SECTRN_: LD H,B + LD L,C + RET + + + ;------------------------------------------------------------------------------- + ; READ + ; + ; Assuming the drive has been selected, the track has been set, and the DMA + ; address has been specified, the READ subroutine attempts to read one sector + ; based upon these parameters and returns the following error codes in + ; register A: + ; + ; 0 - no errors occurred + ; 1 - non recoverable error condition occurred + ; + ; Currently, CP/M responds only to a zero or nonzero value as the return + ; code. That is, if the value in register A is 0, CP/M assumes that the disk + ; operation was completed properly. If an error occurs the CBIOS should + ; attempt at least 10 retries to see if the error is recoverable. When an + ; error is reported the BDOS prints the message BDOS ERR ON x: BAD SECTOR. + ; The operator then has the option of pressing a carriage return to ignore + ; the error, or CTRL_C to abort. + ;------------------------------------------------------------------------------- + ; + ; Code for blocking and deblocking algorithm + ; (see CP/M 2.2 Alteration Guide p.34 and APPENDIX G) + ; +READ_: LD (SPSAVE),SP ; The original monitor routines and the enhancements can use + LD SP,BIOSSTACK ; more stack space than the 16 words provided by CPM. + XOR A + LD (UNACNT), A + LD A, 1 + LD (READOP), A ; read operation + LD (RSFLAG), A ; must read data + LD A, WRUAL + LD (WRTYPE), A ; treat as unalloc + CALL RWOPER ; to perform the read, returns with A=0 no errors or A > 0 errors. + LD SP,(SPSAVE) ; Restore the CPM stack. + RET + + ;------------------------------------------------------------------------------- + ; WRITE + ; + ; Data is written from the currently selected DMA address to the currently + ; selected drive, track, and sector. For floppy disks, the data should be + ; marked as nondeleted data to maintain compatibility with other CP/M + ; systems. The error codes given in the READ command are returned in register + ; A, with error recovery attempts as described above. + ;------------------------------------------------------------------------------- + ; + ; Code for blocking and deblocking algorithm + ; (see CP/M 2.2 Alteration Guide p.34 and APPENDIX G) + ; +WRITE_: LD (SPSAVE),SP ; The original monitor routines and the enhancements can use + LD SP,BIOSSTACK ; more stack space than the 16 words provided by CPM. + XOR A ; 0 to accumulator + LD (READOP), A ; not a read operation + LD A, C ; write type in c + LD (WRTYPE), A + CP WRUAL ; write unallocated? + JR NZ, CHKUNA ; check for unalloc + ; write to unallocated, set parameters + LD A, BLKSIZ/128 ; next unalloc recs + LD (UNACNT), A + LD A, (SEKDSK) ; disk to seek + LD (UNADSK), A ; unadsk = sekdsk + LD HL, (SEKTRK) + LD (UNATRK), HL ; unatrk = sectrk + LD A, (SEKSEC) + LD (UNASEC), A ; unasec = seksec + ; check for write to unallocated sector +CHKUNA: LD A,(UNACNT) ; any unalloc remain? + OR A + JR Z, ALLOC ; skip if not + ; more unallocated records remain + DEC A ; unacnt = unacnt-1 + LD (UNACNT), A + LD A, (SEKDSK) ; same disk? + LD HL, UNADSK + CP (HL) ; sekdsk = unadsk? + JP NZ, ALLOC ; skip if not + ; disks are the same + LD HL, UNATRK + CALL SEKTRKCMP ; sektrk = unatrk? + JP NZ, ALLOC ; skip if not + ; tracks are the same + LD A, (SEKSEC) ; same sector? + LD HL, UNASEC + CP (HL) ; seksec = unasec? + JP NZ, ALLOC ; skip if not + ; match, move to next sector for future ref + INC (HL) ; unasec = unasec+1 + LD A, (HL) ; end of track? + CP CPMSPT ; count CP/M sectors + JR C, NOOVF ; skip if no overflow + ; overflow to next track + LD (HL), 0 ; unasec = 0 + LD HL, (UNATRK) + INC HL + LD (UNATRK), HL ; unatrk = unatrk+1 + ; match found, mark as unnecessary read +NOOVF: XOR A ; 0 to accumulator + LD (RSFLAG), A ; rsflag = 0 + JR ALLOC2 ; to perform the write + ; not an unallocated record, requires pre-read +ALLOC: XOR A ; 0 to accum + LD (UNACNT), A ; unacnt = 0 + INC A ; 1 to accum +ALLOC2: LD (RSFLAG), A ; rsflag = 1 + CALL RWOPER + LD SP,(SPSAVE) ; Restore the CPM stack. + RET + + + ; Function to select a User Bank. If Carry is clear upon entry, on exit the control registers will be disabled. If carry is set then the control registers are left active. + ; During normal operations the control registers are enabled. When access is needed to the full User ROM space, ie for drive read/write then the registers are disabled after + ; setting the correct bank. The upper bits of the User ROM address space (ie. bits 20:19 which select the device) are set to by the ROMCTL variable. + ; +SELUSRBNK: DI + PUSH BC + PUSH AF + ; Use a fixed number of reads to enable the control registers. + LD B,16 +SELUSRBNK0: LD A,(BNKCTRLRST) + DJNZ SELUSRBNK0 + POP AF + POP BC + LD (BNKSELUSER),A ; Select the required bank. + LD A,(ROMCTL) + LD (BNKCTRL),A + JR C,SELUSRBNK3 + LD (BNKCTRLDIS),A ; Disable the control registers, value of A is not important. +SELUSRBNK3: EI + RET + +; EXX +; EX AF,AF' +; LD A,(ROMCTL) ; Get current setting for the coded latch, ie. number of reads needed to enable it. +; LD C,A +; RRA +; RRA +; CPL +; AND 00FH ; Preserve bits 3-1, bit 0 is always 0 on the 74HCT191 latch. +; LD B,A ; Set value to B for loop. +; LD A,(BNKCTRLDIS) ; Do a reset for the case where the above read enabled the latch, possible if external programs are reading/writing the latch area. +; LD A,(BNKCTRL) ; Sample latch at start to detect change. +; LD E,A +;SELUSRBNK1: LD A,(BNKCTRL) ; Read the latch and compare with sample. Either we reach the count limit or the read differs indicating latch control. +; CP E +; JR NZ,SELUSRBNK2 +; DJNZ SELUSRBNK1 +;SELUSRBNK2: LD A,C +; LD (BNKCTRL),A +; EX AF,AF' +; LD (BNKSELUSER),A ; Select the required bank. +; EXX +; JR C,SELUSRBNK3 ; If Carry is set by caller then leave the control registers active. +; LD (BNKCTRLDIS),A ; Disable the control registers, value of A is not important. +;SELUSRBNK3: EI +; RET + + + ; Helper method to set up a Disk Parameter Block. + ; Input: Drive Count = (CDIRBUF) + ; CSV/ALV Memory Pointer (CDIRBUF+1) + ; CSV Size (CDIRBUF+3) + ; ALV Size (CDIRBUF+5) + ; Disk parameters address CDIRBUF+7) + ; Output: Updated CSV/ALV Pointer (CDIRBUF+1) + ; Updated disk count (CDIRBUF) +COPYDPB: LD HL,DPBTMPL ; Base of parameter template for ROM Drive 0 + LD BC,10 + LDIR ; Copy the lower part of the DPB as it is static. + LD HL,CDIRBUF+7 ; Get the address of the disk parameters. + LDI + LDI + LD BC,(CDIRBUF+3) ; Add the CSV size for this entry to the pointer and store. + LD A,B ; Fixed drives dont have a CSV, so if 0, copy 0 and not allocate memory. + OR C + LD HL,CDIRBUF+1 ; Now get the free CSV/ALV pointer. + JR NZ,COPYDPB1 + LD HL,CDIRBUF+3 +COPYDPB1: LDI + LDI + LD HL,(CDIRBUF+1) + LD BC,(CDIRBUF+3) ; Add the CSV size for this entry to the pointer and store. + ADD HL,BC + LD (CDIRBUF+1),HL + LD HL,CDIRBUF+1 + LDI + LDI + LD HL,(CDIRBUF+1) + LD BC,(CDIRBUF+5) ; Now add the size of the ALV for this drive to the pointer for the next drive. + ADD HL,BC + LD (CDIRBUF+1),HL ; Store. + LD A,(CDIRBUF) + INC A + LD (CDIRBUF),A ; Update drive count. + RET + + + ;------------------------------------------------------------------------------- + ; TIMER INTERRUPT + ; + ; This is the RTC interrupt, which interrupts every 100msec. RTC is maintained + ; by keeping an in memory count of seconds past 00:00:00 and an AMPM flag. + ;------------------------------------------------------------------------------- +TIMIN: LD (SPISRSAVE),SP ; CP/M has a small working stack, an interrupt could exhaust it so save interrupts stack and use a local stack. + LD SP,ISRSTACK + ; + PUSH AF ; Save used registers. + PUSH BC + PUSH DE + PUSH HL + ; + ; Reset the interrupt counter. + LD HL,CONTF ; CTC Control register, set to reload the 100ms interrupt time period. + LD (HL),080H ; Select Counter 2, latch counter, read lsb first, mode 0 and binary. + PUSH HL + DEC HL + LD E,(HL) + LD D,(HL) ; Obtain the overrun count if any (due to disabled interrupts). + LD HL, 00001H ; Add full range to count to obtain the period of overrun time. + SBC HL,DE + EX DE,HL + POP HL + LD (HL),0B0H ; Select Counter 2, load lsb first, mode 0 interrupt on terminal count, binary + DEC HL + LD (HL),TMRTICKINTV + LD (HL),000H ; Another 100msec delay till next interrupt. + ; + ; Update the RTC with the time period. + LD HL,(TIMESEC) ; Lower 16bits of counter. + ADD HL,DE + LD (TIMESEC),HL + JR NC,TIMIN1 ; On overflow we increment middle 16bits. + ; + LD HL,(TIMESEC+2) + INC HL + LD (TIMESEC+2),HL + LD A,H + OR L + JR NZ,TIMIN1 ; On overflow we increment upper 16bits. + ; + LD HL,(TIMESEC+4) + INC HL + LD (TIMESEC+4),HL + + ; + ; Flash a cursor at the current XY location. + ; +TIMIN1: LD HL,FLASHCTL + BIT 7,(HL) ; Is cursor enabled? If it isnt, skip further processing. + JR Z,TIMIN2 + ; +FLSHCTL0: LD A,(KEYPC) ; Flashing component, on each timer tick, display the cursor or the original screen character. + LD C,A + XOR (HL) ; Detect a cursor change signal. + RLCA + RLCA + JR NC,TIMIN2 ; No change, skip. + + RES 6,(HL) + LD A,C ; We know there was a change, so decide what to display and write to screen. + RLCA + RLCA + LD A,(FLASH) + JR NC,FLSHCTL1 + SET 6,(HL) ; We are going to display the cursor, so save the underlying character. + LD A,(FLSDT) ; Retrieve the cursor character. +FLSHCTL1: LD HL,(DSPXYADDR) ; Load the desired cursor or character onto the screen. + LD (HL),A + + ; + ; FDC Motor Off Timer + ; +TIMIN2: LD A,(MTROFFTIMER) ; Is the timer non-zero? + OR A + JR Z,TIMIN3 + DEC A ; Decrement. + LD (MTROFFTIMER),A + JR NZ,TIMIN3 ; If zero after decrement, turn off the motor. + OUT (FDC_MOTOR),A ; Turn Motor off + LD (MOTON),A ; Clear Motor on flag + + ; + ; Keyboard processing. + ; +TIMIN3: CALL ?SWEP ; Perform keyboard sweep + LD A,B + RLCA + JR C,ISRKEY2 ; CY=1 then data available. + LD HL,KDATW + LD A,(HL) ; Is a key being held down? + OR A + JR NZ, ISRAUTORPT ; It is so process as an auto repeat key. + XOR A + LD (KEYRPT),A ; No key held then clear the auto repeat initial pause counter. + LD A,NOKEY ; No key code. +ISRKEY1: LD E,A + LD A,(HL) ; Current key scan line position. + INC HL + LD D,(HL) ; Previous key position. + LD (HL),A ; Previous <= current + SUB D ; Are they the same? + JR NC,ISRKEY11 + INC (HL) ; +ISRKEY11: LD A,E +ISRKEY10: CP NOKEY + JR Z,ISREXIT + LD (KEYLAST),A +ISRKEYRPT: LD A,(KEYCOUNT) ; Get current count of bytes in the keyboard buffer. + CP KEYBUFSIZE - 1 + JR NC, ISREXIT ; Keyboard buffer full, so waste character. + INC A + LD (KEYCOUNT),A + LD HL,(KEYWRITE) ; Get the write buffer pointer. + LD (HL), E ; Store the character. + INC L + LD A,L + AND KEYBUFSIZE-1 ; Circular buffer, keep boundaries. + LD L,A + LD (KEYWRITE),HL ; Store updated pointer. +ISREXIT: POP HL + POP DE + POP BC + POP AF + ; + LD SP,(SPISRSAVE) + EI + RET + + ; + ; Helper to determine if a key is being held down and autorepeat should be applied. + ; The criterion is a timer, if this expires then autorepeat is applied. + ; +ISRAUTORPT: LD A,(KEYRPT) ; Increment an initial pause counter. + INC A + CP 10 + JR C,ISRAUTO1 ; Once expired we can auto repeat the last key. + LD A,(KEYLAST) + CP 080H + JR NC,ISREXIT ; Dont auto repeat control keys. + LD E,A + JR ISRKEYRPT +ISRAUTO1: LD (KEYRPT),A + JR ISREXIT + + ; + ; Method to alternate through the 3 shift modes, CAPSLOCK=1, SHIFTLOCK=2, NO LOCK=0 + ; +LOCKTOGGLE: LD HL,FLSDT + LD A,(SFTLK) + INC A + CP 3 + JR C,LOCK0 + XOR A +LOCK0: LD (SFTLK),A + OR A + LD (HL),043H ; Thick block cursor when lower case. + JR Z,LOCK1 + CP 1 + LD (HL),03EH ; Thick underscore when CAPS lock. + JR Z,LOCK1 + LD (HL),0EFH ; Block cursor when SHIFT lock. +LOCK1: JP ISREXIT + + +ISRKEY2: RLCA + RLCA + RLCA + JP C,LOCKTOGGLE ; GRAPH key which acts as the Shift Lock. + RLCA + JP C,ISRBRK ; BREAK key. + LD H,000H + LD L,C + LD A,C + CP 038H ; TEN KEY check. + JR NC,ISRKEY6 ; Jump if TENKEY. + LD A,B + RLCA + LD B,A + LD A,(SFTLK) + OR A + LD A,B + JR Z,ISRKEY14 + RLA + CCF + RRA +ISRKEY14: RLA + RLA + JR NC,ISRKEY3 +ISRKEY15: LD DE,KTBLC +ISRKEY5: ADD HL,DE + LD A,(HL) + JP ISRKEY1 + +ISRKEY3: RRA + JR NC,ISRKEY6 + LD A,(SFTLK) + CP 1 + LD DE,KTBLCL + JR Z,ISRKEY5 + LD DE,KTBLS + JR ISRKEY5 + +ISRKEY6: LD DE,KTBL + JR ISRKEY5 +ISRKEY4: RLCA + RLCA + JR C,ISRKEY15 + LD DE,KTBL + JR ISRKEY5 + + ; Break key pressed, handled in getkey routine. +ISRBRK: LD A,(KEYLAST) + CP BREAKKEY + JP Z,ISREXIT + XOR A ; Reset the keyboard buffer. + LD (KEYCOUNT),A + LD HL,KEYBUF + LD (KEYWRITE),HL + LD (KEYREAD),HL + LD A,BREAKKEY + JP ISRKEY10 + + ; KEYBOARD SWEEP + ; + ; EXIT B,D7=0 NO DATA + ; =1 DATA + ; D6=0 SHIFT OFF + ; =1 SHIFT ON + ; C = ROW & COLUMN + ; +?SWEP: XOR A + LD (KDATW),A ; Reset key counter + LD B,0FAH ; Starting scan line, D3:0 = scan = line 10. D5:4 not used, D7=Cursor flash. + LD D,A + + ; BREAK TEST + ; BREAK ON : ZERO = 1 + ; OFF : ZERO = 0 + ; NO KEY : CY = 0 + ; KEY IN : CY = 1 + ; A D6=1: SHIFT ON + ; =0: SHIFT OFF + ; D5=1: CTRL ON + ; =0: CTRL OFF + ; D4=1: GRAPH ON + ; =0: GRAPH OFF +BREAK: LD A,0F0H + LD (KEYPA),A ; Port A scan line 0 + NOP + LD A,(KEYPB) ; Read back key data. + OR A + RLA + JR NC,BREAK3 ; CTRL/BREAK key pressed? + RRA + RRA ; Check if SHIFT key pressed/ + JR NC,BREAK1 ; SHIFT BREAK not pressed, jump. + RRA + JR NC,BREAK2 ; Check for GRAPH. + CCF + JR SWEP6 ;SWEP1 + +BREAK1: LD A,040H ; A D6=1 SHIFT ON + SCF + JR SWEP6 + +BREAK2: LD A,001H ; No keys found to be pressed on scanline 0. + LD (KDATW),A + LD A,010H ; A D4=1 GRAPH + SCF + JR SWEP6 + +BREAK3: AND 006H ; SHIFT + GRAPH + BREAK? + JR Z,SWEP1A + AND 002H ; SHIFT ? + JR Z,SWEP1 ; Z = 1 = SHIFT BREAK pressed/ + LD A,020H ; A D5=1 CTRL + SCF + JR SWEP6 + +SWEP1: LD D,088H ; Break ON + JR SWEP9 +SWEP1A: JP ?REBOOT ; Shift + Graph + Break ON = RESET. + ; + JR SWEP9 +SWEP6: LD HL,SWPW + PUSH HL + JR NC,SWEP11 + LD D,A + AND 060H ; Shift & Ctrl =no data. + JR NZ,SWEP11 + LD A,D ; Graph Check + XOR (HL) + BIT 4,A + LD (HL),D + JR Z,SWEP0 +SWEP01: SET 7,D ; Data available, set flag. +SWEP0: DEC B + POP HL ; SWEP column work + INC HL + LD A,B + LD (KEYPA),A ; Port A (8255) D3:0 = Scan line output. + CP 0F0H + JR NZ,SWEP3 ; If we are not at scan line 0 then check for key data. + LD A,(HL) ; SWPW + CP 003H ; Have we scanned all lines, if yes then no data? + JR C,SWEP9 + LD (HL),000H ; + RES 7,D ; Reset data in as no data awailable. +SWEP9: LD B,D + RET + +SWEP11: LD (HL),000H + JR SWEP0 +SWEP3: LD A,(KEYPB) ; Port B (8255) D7:0 = Key data in for given scan line. + LD E,A + CPL + AND (HL) + LD (HL),E + PUSH HL + LD HL,KDATW + PUSH BC + LD B,008H +SWEP8: RLC E + JR C,SWEP7 + INC (HL) +SWEP7: DJNZ SWEP8 + POP BC + OR A + JR Z,SWEP0 + LD E,A +SWEP2: LD H,008H + LD A,B + DEC A ; TBL adjust + AND 00FH + RLCA + RLCA + RLCA + LD C,A + LD A,E +SWEP12: DEC H + RRCA + JR NC,SWEP12 + LD A,H + ADD A,C + LD C,A + JP SWEP01 + + ;------------------------------------------------------------------------------- + ; END OF TIMER INTERRUPT + ;------------------------------------------------------------------------------- + + ; Method to clear memory either to 0 or a given pattern. + ; +CLR8Z: XOR A +CLR8: LD BC,00800H +CLRMEM: PUSH DE + LD D,A +L09E8: LD (HL),D + INC HL + DEC BC + LD A,B + OR C + JR NZ,L09E8 + POP DE + RET + +?CLER: XOR A + JR ?DINT +?CLRFF: LD A,0FFH +?DINT: LD (HL),A + INC HL + DJNZ ?DINT + RET + +MULT16x8: LD HL,0 + LD B,8 +MULT16x8_1: ADD HL,HL + RLCA + JR NC,MULT16x8_2 + ADD HL,DE +MULT16x8_2: DJNZ MULT16x8_1 + RET + + + ;------------------------------------------------------------------------------- + ; START OF ROM DRIVE FUNCTIONALITY + ;------------------------------------------------------------------------------- + + ; Comparing Strings + ; IN HL Address of string1. + ; DE Address of string2. + ; BC Max bytes to compare, 0x00 or 0x0d will early terminate. + ; OUT zero Set if string1 = string2, reset if string1 != string2. + ; carry Set if string1 > string2, reset if string1 <= string2. +CMPSTRING: PUSH HL + PUSH DE + +CMPSTR1: LD A, (DE) ; Compare bytes. + CP 000h ; Check for end of string. + JR Z, CMPSTR3 + CP 00Dh + JR Z, CMPSTR3 + CPI ; Compare bytes. + JR NZ, CMPSTR2 ; If (HL) != (DE), abort. + INC DE ; Update pointer. + JP PE, CMPSTR1 ; Next byte if BC not zero. + +CMPSTR2: DEC HL + CP (HL) ; Compare again to affect carry. +CMPSTR4: POP DE + POP HL + RET + +CMPSTR3: LD A, (HL) + CP 000h ; Check for end of string. + JR Z, CMPSTR4 + CP 00Dh + JR Z, CMPSTR4 + SCF ; String 1 greater than string 2 + JR CMPSTR4 + + ; HL contains address of block to check. +ISMZF: PUSH BC + PUSH DE + PUSH HL + ; + LD A,(HL) + CP 001h ; Only interested in machine code images. + JR NZ, ISMZFNOT + ; + INC HL + LD DE,NAME ; Checks to confirm this is an MZF header. + LD B,17 ; Maximum of 17 characters, including terminator in filename. +ISMZFNXT: LD A,(HL) + LD (DE),A + CP 00Dh ; If we find a terminator then this indicates potentially a valid name. + JR Z, ISMZFVFY + CP 020h ; >= Space + JR C, ISMZFNOT + CP 05Dh ; =< ] + JR C, ISMZFNXT3 +ISMZFNXT2: CP 091h + JR C, ISMZFNOT ; DEL or > 0x7F, cant be a valid filename so this is not an MZF header. +ISMZFNXT3: INC DE + INC HL + DJNZ ISMZFNXT + JR ISMZFNOT ; No end of string terminator, this cant be a valid filename. +ISMZFVFY: LD A,B + CP 17 + JR Z,ISMZFNOT ; If the filename has no length it cant be valid, so loop. +ISMZFYES: CP A ; Set zero flag to indicate match. +ISMZFNOT: POP HL + POP DE + POP BC + RET + + ; In: + ; HL = filename + ; Out: + ; B = Bank Page file found + ; C = 7:6 = Upper Bank address where file found, 5:0 = Block where found. + ; D = File sequence number. + ; Z set if found. +FINDMZF: LD (TMPADR), HL ; Save name of program to load. + ; + ; Scan MROM Bank + ; B = Bank Page + ; C = Block in page + ; D = File sequence number. + ; +FINDMZF0: LD B,USRROMPAGES ; First 16 pages are reserved in User ROM bank. + ; + LD A,(ROMCTL) + AND 03FH ; Mask out the upper bank address lines so we start with Flash RAM I. + ; +FINDNXTDVC: LD (ROMCTL),A + LD C,0 ; Block in page. + LD D,0 ; File numbering start. +FINDMZF1: LD A,B + OR A ; Select the required user bank and Clear carry so that the control registers are disabled. + CALL SELUSRBNK +FINDMZF2: PUSH BC ; Preserve bank count/block number. + PUSH DE ; Preserve file numbering. + LD HL,0E800h + RFS_ATRB ; Add block offset to get the valid block. + LD A,C + IF RFSSECTSZ >= 512 + RLCA + ENDIF + IF RFSSECTSZ >= 1024 + RLCA + ENDIF + LD B,A + LD C,0 + ADD HL,BC + + CALL ISMZF ; Check to see if this looks like a header entry. + POP DE + POP BC + JR NZ, FINDMZF4 ; Z set if we found an MZF record. + INC HL ; Save address of filename. +FINDMZF3: PUSH DE + PUSH BC + LD DE,(TMPADR) ; Original DE put onto stack, original filename into DE + LD BC,17 + CALL CMPSTRING + POP BC + POP DE + JR Z, FINDMZFYES + INC D ; Next file sequence number. +FINDMZF4: INC C + LD A,C + CP UROMSIZE/RFSSECTSZ ; Max blocks per page reached? + JR C, FINDMZF5 + LD C,0 + INC B +FINDMZF5: LD A,B + CP 000h ; User ROM has 256 banks of 2K, so stop when we wrap around to zero. + JR NZ, FINDMZF1 + ; + LD A,(ROMCTL) + ADD A, 64 + CP 0C0H ; If both upper address bits are set then we have come to the end. + JR C,FINDNXTDVC + AND 03FH + LD (ROMCTL),A ; Switch back to primary Flash RAM I device. + ; + INC B ; Clear Z flag. + JR FINDMZFNO + ; +FINDMZFYES: LD A,(ROMCTL) + AND 0C0H ; Interested in the top two address bits 20:19 + OR C + LD C,A ; Place the top address bits into the Block as the upper two bits. + LD A,(ROMCTL) + AND 03FH + LD (ROMCTL),A ; Reset upper address bits to the User ROM I device. + XOR A ; Clear Z flag to indicate we found the file and BC points to it. + ; +FINDMZFNO: PUSH AF ; Preserve flags. + LD A,ROMBANK9 + SCF ; Select the required user bank and Set carry so that the control registers remain enabled. + CALL SELUSRBNK + POP AF + RET + + + ; Load Program from ROM + ; IN BC Bank and Block of MZF file. C contains Block in bits 5:0 and upper bank address bits in 7:6. + ; DE 0 - use file size in header, > 0 file size to load. + ; OUT zero Set if file loaded, reset if an error occurred. + ; + ; Load program from RFS Bank 2 (User ROM Bank) + ; +UROMLOAD: PUSH BC + PUSH DE + ; + LD A,C ; Set upper address bits by masking out 7:6 and adding to ROMCTL variable. + AND 0C0H + LD L,A + LD A,(ROMCTL) + AND 03FH + OR L + LD (ROMCTL),A + ; + LD A,C ; Remove upper address bits from starting block. + AND 03FH + LD C,A + ; + LD A,B + OR A ; Select the required user bank and Clear carry so that the control registers are disabled. + CALL SELUSRBNK + ; + LD DE, IBUFE ; Copy the header into the work area. + LD HL, 0E800h ; Add block offset to get the valid block. + LD A,C + IF RFSSECTSZ >= 512 + RLCA + ENDIF + IF RFSSECTSZ >= 1024 + RLCA + ENDIF + LD B,A + LD C,0 + ADD HL,BC + LD BC, MZFHDRNCSZ +LROMLOAD0: LD A,(BNKCTRLDIS) + LD A,(HL) ; Issues with LDIR and a signal artifact from the mainboard, so manual copy. + INC HL + LD (DE),A + INC DE + DEC BC + LD A,B + OR C + JR NZ,LROMLOAD0 + + LD DE,MZFHDRSZ - MZFHDRNCSZ ; Account for the full MZF header (we only load the initial part to save RAM). + ADD HL,DE + POP DE + LD A,D ; Test DE, if 0 the use the size to load from header. + OR E ; if not 0, use size to load in DE. + JR Z,LROMLOAD1 + LD (SIZE),DE ; Overwrite the header size with the new size to load. + +LROMLOAD1: PUSH HL + LD DE, (DTADR) + LD HL, (SIZE) + LD BC, RFSSECTSZ - MZFHDRSZ + OR A + SBC HL, BC + JR NC, LROMLOAD4 + LD HL, (SIZE) + JR LROMLOAD4 + + ; HL = address in active block to read. + ; B = Bank + ; C = Block +LROMLOAD2: LD A, B + OR A ; Select the required user bank and Clear carry so that the control registers are disabled. + CALL SELUSRBNK + +LROMLOAD3: PUSH BC + LD HL, UROMADDR + LD A, C + IF RFSSECTSZ >= 512 + RLCA + ENDIF + IF RFSSECTSZ >= 1024 + RLCA + ENDIF + LD B, A + LD C, 0 + ADD HL,BC + PUSH HL + + LD DE, (TMPADR) + LD HL, (TMPSIZE) + LD BC, RFSSECTSZ + CCF + SBC HL, BC + JR NC, LROMLOAD4 + LD BC, (TMPSIZE) + LD HL, 0 +LROMLOAD4: LD (TMPSIZE), HL ; HL contains remaining amount of bytes to load. + POP HL + ; + LD A, B ; Pre check to ensure BC is not zero. + OR C + JR Z, LROMLOAD8 + +LROMLOAD9: LD (BNKCTRLDIS),A ; There exists an issue with using the mainboard decoder signal which I havent quite understood, random activation of the upcounter occurs which appears to be the refresh circuit. + LD A,(HL) ; Issues with LDIR and a signal artifact from the mainboard, so manual copy. + INC HL + LD (DE),A + INC DE + DEC BC + LD A,B + OR C + JR NZ,LROMLOAD9 + + LD BC, (TMPSIZE) + LD A, B ; Post check to ensure we still have bytes + OR C + JR Z, LROMLOAD8 + ; + LD (TMPADR),DE ; Address we are loading into. + POP BC +LROMLOAD6: INC C + LD A, C + CP UROMSIZE/RFSSECTSZ ; Max blocks per page reached? + JR C, LROMLOAD3 + LD C, 0 + INC B + ; +LROMLOAD7: LD A, B + CP 000h + JR NZ, LROMLOAD2 + OR 1 + JR LROMLOAD5 + ; +LROMLOAD8: POP BC +LROMLOAD5: PUSH AF + LD A,(ROMCTL) + AND 03FH + LD (ROMCTL),A ; Switch back to primary Flash RAM I device. + LD A,ROMBANK9 + SCF ; Select the required user bank and Set carry so that the control registers remain enabled. + CALL SELUSRBNK + POP AF + RET + + ; Rom filing system error messages. +ROMFINDERR: LD DE,ROMFDERRMSG + JR MONPRTSTR + + ; Function to print a string with control character interpretation. +MONPRTSTR: LD A,(DE) + OR A + RET Z + INC DE +MONPRTSTR2: CALL ?PRNT + JR MONPRTSTR + ;------------------------------------------------------------------------------- + ; END OF ROM DRIVE FUNCTIONALITY + ;------------------------------------------------------------------------------- + + + ;------------------------------------------------------------------------------- + ; START OF SD CARD DRIVE FUNCTIONALITY + ;------------------------------------------------------------------------------- + + ; Method to read a sector from the SD Card. + ; CPM Provides us with a track and sector, take these and calculate the LBA + ; within the SD Card. + ; + ; The SD Card is organised as follows: + ; SECTOR FUNCTION + ; 00000000 --------------------------------------------------------------------------- + ; | ROM FILING SYSTEM IMAGE | + ; | | + ; 00000000 | RFS DIRECTORY ENTRY 000 (32BYTE) | + ; | .. | + ; | .. | + ; 00001FE0 | RFS DIRECTORY ENTRY 255 (32BYTE) | + ; 00002000 --------------------------------------------------------------------------- + ; | | + ; | CP/M DISK IMAGE 1 | + ; | | + ; | | + ; | | + ; | | + ; --------------------------------------------------------------------------- + ; | | + ; | CP/M DISK IMAGE 2 | + ; | | + ; | | + ; | | + ; | | + ; --------------------------------------------------------------------------- + ; | | + ; | CP/M DISK IMAGE 3 | + ; | | + ; | | + ; | | + ; | | + ; --------------------------------------------------------------------------- + ; | | + ; | CP/M DISK IMAGE ... | + ; | | + ; | | + ; | | + ; | | + ; --------------------------------------------------------------------------- + ; + ; The ROM FILING SYSTEM resides at the beginning of the disk so we add this to the start sector for the CPM drive. + ; Then the CPM disk is multiplied by the CPM disk size and this is added to the start sector. + ; The disk is organised as 32 Sectors x 1024 tracks and 1 head. Thus the track is + ; multiplied by 32 as we use LBA addressing (for older cards, the SD utilities will convert to byte + ; address if necessary. This is added to the start sector. We then take the CPM host sector (from the deblocking + ; algorithm) and add to the start sector. We now have the sector CPM is requesting. + ; +SDCREAD: CALL ?SDCREAD + JP READHST3 + +SDCWRITE: CALL ?SDCWRITE + JP WRITEHST3 + + ;------------------------------------------------------------------------------- + ; END OF SD CARD DRIVE FUNCTIONALITY + ;------------------------------------------------------------------------------- + + + + ;------------------------------------------------------------------------------- + ; START OF CPM DEBLOCKING ALGORITHM + ;------------------------------------------------------------------------------- + + ;------------------------------------------------------------------------------- + ; RWOPER + ; + ; The common blocking/deblocking algorithm provided by DR to accommodate devices + ; which have sector sizes bigger than the CPM 128byte standard sector. + ; In this implementation a sector size of 512 has been chosen regardless of + ; what the underlying hardware uses (ie. FDC is 256 byte for a standard MZ800 + ; format disk). + ;------------------------------------------------------------------------------- +RWOPER: XOR A ; zero to accum + LD (ERFLAG), A ; no errors (yet) + LD A, (SEKSEC) ; compute host sector + OR A ; carry = 0 + RRA ; shift right + OR A ; carry = 0 + RRA ; shift right + LD (SEKHST), A ; host sector to seek + ; active host sector? + LD HL, HSTACT ; host active flag + LD A, (HL) + LD (HL), 1 ; always becomes 1 + OR A ; was it already? + JR Z, FILHST ; fill host if not + ; host buffer active, same as seek buffer? + LD A, (SEKDSK) + LD HL, HSTDSK ; same disk? + CP (HL) ; sekdsk = hstdsk? + JR NZ, NOMATCH + ; same disk, same track? + LD HL, HSTTRK + CALL SEKTRKCMP ; sektrk = hsttrk? + JR NZ, NOMATCH + ; same disk, same track, same buffer? + LD A, (SEKHST) + LD HL, HSTSEC ; sekhst = hstsec? + CP (HL) + JR Z, MATCH ; skip if match + ; proper disk, but not correct sector +NOMATCH: LD A, (HSTWRT) ; host written? + OR A + CALL NZ, WRITEHST ; clear host buff + ; may have to fill the host buffer +FILHST: LD A, (SEKDSK) + LD (HSTDSK), A + LD HL, (SEKTRK) + LD (HSTTRK), HL + LD A, (SEKHST) + LD (HSTSEC), A + LD A, (RSFLAG) ; need to read? + OR A + CALL NZ, READHST ; yes, if 1 + OR A + JR NZ,RWEXIT ; If A > 0 then read error occurred. + XOR A ; 0 to accum + LD (HSTWRT), A ; no pending write + ; copy data to or from buffer +MATCH: LD A, (SEKSEC) ; mask buffer number + AND SECMSK ; least signif bits + LD L, A ; ready to shift + LD H, 0 ; double count + ADD HL, HL + ADD HL, HL + ADD HL, HL + ADD HL, HL + ADD HL, HL + ADD HL, HL + ADD HL, HL + ; hl has relative host buffer address + LD DE, HSTBUF + ADD HL, DE ; hl = host address + EX DE, HL ; now in DE + LD HL, (DMAADDR) ; get/put CP/M data + LD C, 128 ; length of move + LD A, (READOP) ; which way? + OR A + JR NZ, RWMOVE ; skip if read + ; write operation, mark and switch direction + LD A, 1 + LD (HSTWRT), A ; hstwrt = 1 + EX DE, HL ; source/dest swap + ; c initially 128, DE is source, HL is dest +RWMOVE: LD A,(INVFDCDATA) ; Check to see if FDC data needs to be inverted. MB8866 controller works on negative logic. + RRCA + JR NC,RWMOVE3 +RWMOVE2: LD A, (DE) ; source character + CPL ; Change to positive values. + INC DE + LD (HL), A ; to dest + INC HL + DEC C ; loop 128 times + JR NZ, RWMOVE2 + JR RWMOVE4 +RWMOVE3: LD A, (DE) ; source character + INC DE + LD (HL), A ; to dest + INC HL + DEC C ; loop 128 times + JR NZ, RWMOVE3 + ; data has been moved to/from host buffer +RWMOVE4: LD A, (WRTYPE) ; write type + CP WRDIR ; to directory? + LD A, (ERFLAG) ; in case of errors + RET NZ ; no further processing + ; clear host buffer for directory write + OR A ; errors? + RET NZ ; skip if so + XOR A ; 0 to accum + LD (HSTWRT), A ; buffer written + CALL WRITEHST +RWEXIT: LD A, (ERFLAG) + RET + + ; utility subroutine for 16-bit compare + ; HL = .unatrk or .hsttrk, compare with sektrk +SEKTRKCMP: EX DE, HL + LD HL, SEKTRK + LD A, (DE) ; low byte compare + CP (HL) ; same? + RET NZ ; return if not + ; low bytes equal, test high 1s + INC DE + INC HL + LD A, (DE) + CP (HL) ; sets flags + RET + + ;------------------------------------------------------------------------------------------------ + ; Read physical sector from host + ; + ; Read data from the floppy disk or RFS. A = 1 if an error occurred. + ;------------------------------------------------------------------------------------------------ +READHST: PUSH BC + PUSH HL + LD A,(DISKTYPE) + CP DSKTYP_SDC ; Is the drive an SD Card? + JP Z,SDCREAD +READHST2: CALL ?DSKREAD ; Floppy card, use the FDC Controller. +READHST3: POP HL + POP BC + RET + + ;------------------------------------------------------------------------------------------------ + ; Write physical sector to host + ; + ; Write data to the floppy disk or RFS. A = 1 if an error occurred. + ;------------------------------------------------------------------------------------------------ +WRITEHST: PUSH BC + PUSH HL + LD A,(DISKTYPE) + CP DSKTYP_SDC ; Is the drive an SD Card? + JP Z,SDCWRITE + CALL ?DSKWRITE +WRITEHST3: POP HL + POP BC + RET +WRITEHST4: LD A,1 ; Error, cannot write. + JR WRITEHST3 + + ;------------------------------------------------------------------------------- + ; END OF CPM DEBLOCKING ALGORITHM + ;------------------------------------------------------------------------------- + + + ;------------------------------------------------------------------------------- + ; START OF DEBUGGING FUNCTIONALITY + ;------------------------------------------------------------------------------- + ; Debug routine to print out all registers and dump a section of memory for analysis. + ; +DEBUG: IF ENADEBUG = 1 + LD (DBGSTACKP),SP + LD SP,DBGSTACK + ; + PUSH AF + PUSH BC + PUSH DE + PUSH HL + ; + PUSH AF + PUSH HL + PUSH DE + PUSH BC + PUSH AF + LD DE, INFOMSG + CALL MONPRTSTR + POP BC + LD A,B + CALL ?PRTHX + LD A,C + CALL ?PRTHX + LD DE, INFOMSG2 + CALL MONPRTSTR + POP BC + LD A,B + CALL ?PRTHX + LD A,C + CALL ?PRTHX + LD DE, INFOMSG3 + CALL MONPRTSTR + POP DE + LD A,D + CALL ?PRTHX + LD A,E + CALL ?PRTHX + LD DE, INFOMSG4 + CALL MONPRTSTR + POP HL + LD A,H + CALL ?PRTHX + LD A,L + CALL ?PRTHX + LD DE, INFOMSG5 + CALL MONPRTSTR + LD HL,(DBGSTACKP) + LD A,H + CALL ?PRTHX + LD A,L + CALL ?PRTHX + CALL ?NL + + LD DE, DRVMSG + CALL MONPRTSTR + LD A, (CDISK) + CALL ?PRTHX + + LD DE, FDCDRVMSG + CALL MONPRTSTR + LD A, (FDCDISK) + CALL ?PRTHX + + LD DE, SEKTRKMSG + CALL MONPRTSTR + LD BC,(SEKTRK) + LD A,B + CALL ?PRTHX + LD A,C + CALL ?PRTHX + CALL ?PRTS + LD A,(SEKSEC) + CALL ?PRTHX + CALL ?PRTS + LD A,(SEKHST) + CALL ?PRTHX + + LD DE, HSTTRKMSG + CALL MONPRTSTR + LD BC,(HSTTRK) + LD A,B + CALL ?PRTHX + LD A,C + CALL ?PRTHX + CALL ?PRTS + LD A,(HSTSEC) + CALL ?PRTHX + + LD DE, UNATRKMSG + CALL MONPRTSTR + LD BC,(UNATRK) + LD A,B + CALL ?PRTHX + LD A,C + CALL ?PRTHX + CALL ?PRTS + LD A,(UNASEC) + CALL ?PRTHX + + LD DE, CTLTRKMSG + CALL MONPRTSTR + LD A,(TRACKNO) ; NB. Track number is 16bit, FDC only uses lower 8bit and assumes little endian read. + CALL ?PRTHX + CALL ?PRTS + LD A,(SECTORNO) + CALL ?PRTHX + + LD DE, DMAMSG + CALL MONPRTSTR + LD BC,(DMAADDR) + LD A,B + CALL ?PRTHX + LD A,C + CALL ?PRTHX + CALL ?NL + + POP AF + JR C, SKIPDUMP + LD HL,DPBASE ; Dump the startup vectors. + LD DE, 1000H + ADD HL, DE + EX DE,HL + LD HL,DPBASE + CALL DUMPX + + LD HL,00000h ; Dump the startup vectors. + LD DE, 00A0H + ADD HL, DE + EX DE,HL + LD HL,00000h + CALL DUMPX + + LD HL,IBUFE ; Dump the data area. + LD DE, 0300H + ADD HL, DE + EX DE,HL + LD HL,IBUFE + CALL DUMPX + + LD HL,CBASE ; Dump the CCP + BDOS area. + LD DE,CBIOSSTART - CBASE + ADD HL, DE + EX DE,HL + LD HL,CBASE + CALL DUMPX + +SKIPDUMP: POP HL + POP DE + POP BC + POP AF + ; + LD SP,(DBGSTACKP) + RET + + ; HL = Start + ; DE = End +DUMPX: LD A,23 +DUM1: LD (TMPCNT),A +DUM3: LD B,010h + LD C,02Fh + CALL NLPHL +DUM2: CALL SPHEX + INC HL + PUSH AF + LD A,(DSPXY) + ADD A,C + LD (DSPXY),A + POP AF + CP 020h + JR NC,L0D51 + LD A,02Eh +L0D51: CALL ?PRNT + LD A,(DSPXY) + INC C + SUB C + LD (DSPXY),A + DEC C + DEC C + DEC C + PUSH HL + SBC HL,DE + POP HL + JR NC,DUM7 +L0D78: DJNZ DUM2 + LD A,(TMPCNT) + DEC A + LD (TMPCNT),A + JR NZ,DUM3 +DUM4: CALL ?CHKKY + CP 0FFH + JR NZ,DUM4 + CALL ?GETKY + CP 'D' + JR NZ,DUM5 + LD A,8 + JR DUM1 +DUM5: CP 'U' + JR NZ,DUM6 + PUSH DE + LD DE,00100H + OR A + SBC HL,DE + POP DE + LD A,8 + JR DUM1 +DUM6: CP 'X' + JR Z,DUM7 + JR DUMPX +DUM7: CALL ?NL + RET + +NLPHL: CALL ?NL + CALL ?PRTHL + RET + + ; SPACE PRINT AND DISP ACC + ; INPUT:HL=DISP. ADR. +SPHEX: CALL ?PRTS ; SPACE PRINT + LD A,(HL) + CALL ?PRTHX ; DSP OF ACC (ASCII) + LD A,(HL) + RET + +DRVMSG: DB "DRV=", 000H +FDCDRVMSG: DB ",FDC=", 000H +SEKTRKMSG: DB ",S=", 000H +HSTTRKMSG: DB ",H=", 000H +UNATRKMSG: DB ",U=", 000H +CTLTRKMSG: DB ",C=", 000H +DMAMSG: DB ",D=", 000H +INFOMSG: DB "AF=", NUL +INFOMSG2: DB ",BC=", 000H +INFOMSG3: DB ",DE=", 000H +INFOMSG4: DB ",HL=", 000H +INFOMSG5: DB ",SP=", 000H + ENDIF + ;------------------------------------------------------------------------------- + ; END OF DEBUGGING FUNCTIONALITY + ;------------------------------------------------------------------------------- + + ;------------------------------------------------------------------------------- + ; START OF STATIC LOOKUP TABLES AND CONSTANTS + ;------------------------------------------------------------------------------- + +KTBL: ; Strobe 0 + DB '"' + DB '!' + DB 'W' + DB 'Q' + DB 'A' + DB INSERT + DB NULL + DB 'Z' + ; Strobe 1 + DB '$' + DB '#' + DB 'R' + DB 'E' + DB 'D' + DB 'S' + DB 'X' + DB 'C' + ; Strobe 2 + DB '&' + DB '%' + DB 'Y' + DB 'T' + DB 'G' + DB 'F' + DB 'V' + DB 'B' + ; Strobe 3 + DB '(' + DB '\'' + DB 'I' + DB 'U' + DB 'J' + DB 'H' + DB 'N' + DB SPACE + ; Strobe 4 + DB '_' + DB ')' + DB 'P' + DB 'O' + DB 'L' + DB 'K' + DB '<' + DB 'M' + ; Strobe 5 + DB '~' + DB '=' + DB '{' + DB '`' + DB '*' + DB '+' + DB CURSLEFT + DB '>' + ; Strobe 6 + DB HOMEKEY + DB '|' + DB CURSRIGHT + DB CURSUP + DB CR + DB '}' + DB NULL + DB CURSUP + ; Strobe 7 + DB '8' + DB '7' + DB '5' + DB '4' + DB '2' + DB '1' + DB DBLZERO + DB '0' + ; Strobe 8 + DB '*' + DB '9' + DB '-' + DB '6' + DB NULL + DB '3' + DB NULL + DB ',' + +KTBLS: ; Strobe 0 + DB '2' + DB '1' + DB 'w' + DB 'q' + DB 'a' + DB DELETE + DB NULL + DB 'z' + ; Strobe 1 + DB '4' + DB '3' + DB 'r' + DB 'e' + DB 'd' + DB 's' + DB 'x' + DB 'c' + ; Strobe 2 + DB '6' + DB '5' + DB 'y' + DB 't' + DB 'g' + DB 'f' + DB 'v' + DB 'b' + ; Strobe 3 + DB '8' + DB '7' + DB 'i' + DB 'u' + DB 'j' + DB 'h' + DB 'n' + DB SPACE + ; Strobe 4 + DB '0' + DB '9' + DB 'p' + DB 'o' + DB 'l' + DB 'k' + DB ',' + DB 'm' + ; Strobe 5 + DB '^' + DB '-' + DB '[' + DB '@' + DB ':' + DB ';' + DB '/' + DB '.' + ; Strobe 6 + DB CLRKEY + DB '\\' + DB CURSLEFT + DB CURSDOWN + DB CR + DB ']' + DB NULL + DB '?' + +KTBLCL: ; Strobe 0 + DB '2' + DB '1' + DB 'W' + DB 'Q' + DB 'A' + DB DELETE + DB NULL + DB 'Z' + ; Strobe 1 + DB '4' + DB '3' + DB 'R' + DB 'E' + DB 'D' + DB 'S' + DB 'X' + DB 'C' + ; Strobe 2 + DB '6' + DB '5' + DB 'Y' + DB 'T' + DB 'G' + DB 'F' + DB 'V' + DB 'B' + ; Strobe 3 + DB '8' + DB '7' + DB 'I' + DB 'U' + DB 'J' + DB 'H' + DB 'N' + DB SPACE + ; Strobe 4 + DB '0' + DB '9' + DB 'P' + DB 'O' + DB 'L' + DB 'K' + DB ',' + DB 'M' + ; Strobe 5 + DB '^' + DB '-' + DB '[' + DB '@' + DB ':' + DB ';' + DB '/' + DB '.' + ; Strobe 6 + DB CLRKEY + DB '\\' + DB CURSLEFT + DB CURSDOWN + DB CR + DB ']' + DB NULL + DB '?' + +KTBLC: ; CTRL ON + ; Strobe 0 + DB NOKEY + DB NOKEY + DB CTRL_W + DB CTRL_Q + DB CTRL_A + DB NOKEY + DB 000H + DB CTRL_Z + ; Strobe 1 + DB NOKEY + DB NOKEY + DB CTRL_R + DB CTRL_E + DB CTRL_D + DB CTRL_S + DB CTRL_X + DB CTRL_C + ; Strobe 2 + DB NOKEY + DB NOKEY + DB CTRL_Y + DB CTRL_T + DB CTRL_G + DB CTRL_F + DB CTRL_V + DB CTRL_B + ; Strobe 3 + DB NOKEY + DB NOKEY + DB CTRL_I + DB CTRL_U + DB CTRL_J + DB CTRL_H + DB CTRL_N + DB NOKEY + ; Strobe 4 + DB NOKEY + DB NOKEY + DB CTRL_P + DB CTRL_O + DB CTRL_L + DB CTRL_K + DB NOKEY + DB CTRL_M + ; Strobe 5 + DB CTRL_CAPPA + DB CTRL_UNDSCR + DB ESC + DB CTRL_AT + DB NOKEY + DB NOKEY + DB NOKEY + DB NOKEY + ; Strobe 6 + DB NOKEY + DB CTRL_SLASH + DB NOKEY + DB NOKEY + DB NOKEY + DB CTRL_RB + DB NOKEY + + + +CBIOSSIGNON:IF BUILD_80C = 1 + DB "** CBIOS v1.25, (C) P.D. Smart, 2019-21. Drives:", NUL + ELSE + DB "CBIOS v1.25, (C) P.D. Smart, 2019-21. " + DB "Drives:", NUL + ENDIF +CBIOSIGNEND:IF BUILD_80C = 1 + DB " **", CR, NUL + ELSE + DB CR, NUL + ENDIF +NOBDOS: DB "No BDOS, aborting!", CR, LF, NUL +CPMROMFNAME:DB "CPM223RFS", NUL +ROMFDERRMSG:DB "ROM FIND ERR", CR, NUL +SDAVAIL: DB "SD", NUL +FDCAVAIL: DB "FDC", NUL + ;------------------------------------------------------------------------------- + ; END OF STATIC LOOKUP TABLES AND CONSTANTS + ;------------------------------------------------------------------------------- + +; Disk Parameter Header template. +DPBTMPL: DW 0000H, 0000H, 0000H, 0000H, CDIRBUF + + ; Allocate space for 8 disk parameter block definitions in ROM. + ; + ALIGN_NOPS SCRN - (8 * 16) +;------------------------------------------------------------------------------------------------------------ +; DISK PARAMETER BLOCK +; +; +----+----+------+-----+-----+------+----+----+-----+----+ +; |SPT |BSH |BLM |EXM |DSM |DRM |AL0 |AL1 |CKS |OFF | +; +----+----+------+-----+-----+------+----+----+-----+----+ +; 16B 8B 8B 8B 16B 16B 8B 8B 16B 16B +; +; -SPT is the total number of sectors per track. +; -BSH is the data allocation block shift factor, determined by the data block allocation size. +; -BLM is the data allocation block mask (2[BSH-1]). +; -EXM is the extent mask, determined by the data block allocation size and the number of disk blocks. +; -DSM determines the total storage capacity of the disk drive. +; -DRM determines the total number of directory entries that can be stored on this drive. +; -AL0, AL1 determine reserved directory blocks. +; -CKS is the size of the directory check vector. +; -OFF is the number of reserved tracks at the beginning of the (logical) disk +; +; BLS BSH BLM EXM (DSM < 256) EXM (DSM > 255) +; 1,024 3 7 0 N/A +; 2,048 4 15 1 0 +; 4,096 5 31 3 1 +; 8,192 6 63 7 3 +; 16,384 7 127 15 7 +;------------------------------------------------------------------------------------------------------------ + +; MZ-800 drive but using both heads per track rather than the original +; 1 head for all tracks on side A switching to second head and +; restarting at track 0. +DPB0: DW 64 ; SPT - 128 bytes sectors per track + DB 4 ; BSH - block shift factor + DB 15 ; BLM - block mask + DB 1 ; EXM - Extent mask + DW 155 ; DSM - Storage size (blocks - 1) + DW 63 ; DRM - Number of directory entries - 1 + DB 128 ; AL0 - 1 bit set per directory block + DB 0 ; AL1 - " + DW 16 ; CKS - DIR check vector size (DRM+1)/4 (0=fixed disk) + DW 1 ; OFF - Reserved tracks + DB 6 ; CFG - MZ80A Addition, configuration flag: + ; Bit 1:0 = FDC: Sector Size, 00 = 128, 10 = 256, 11 = 512, 01 = Unused. + ; Bit 2 = Invert, 1 = Invert data, 0 = Use data as read (on MB8866 this is inverted). + ; Bit 4:3 = Disk type, 00 = FDC, 10 = ROM, 11 = SD Card, 01 = Unused + ; Bit 5 = ROMFS Image, 0 = DRV0, 1 = DRV1 + + +; Rom Filing System File Image acting as a drive. +; There are two definitions, 1 for each ROM drive, they can be identical but the CFG bit 5 will differ. +DPB1: DW 128 ; SPT - 128 bytes sectors per track + DB 4 ; 3 ; BSH - block shift factor (Set to 3 for a 240K RomRFS Image). + DB 15 ; 7 ; BLM - block mask (Set to 7 for a 240K RomRFS Image). + DB 0 ; EXM - Extent mask + DW 159 ; 240 ; DSM - Storage size (blocks - 1) (Set to 240 for a 240K RomRFS Image). + DW 63 ; 31 ; DRM - Number of directory entries - 1 + DB 128 ; AL0 - 1 bit set per directory block + DB 0 ; AL1 - " + DW 0 ; 16 ; CKS - DIR check vector size (DRM+1)/4 (0=fixed disk) + DW 0 ; OFF - Reserved tracks + DB 16 ; CFG - MZ80A Addition, configuration flag: + ; Bit 1:0 = FDC: Sector Size, 00 = 128, 10 = 256, 11 = 512, 01 = Unused. + ; Bit 2 = Invert, 1 = Invert data, 0 = Use data as read (on MB8866 this is inverted). + ; Bit 4:3 = Disk type, 00 = FDC, 10 = ROM, 11 = SD Card, 01 = Unused + ; Bit 5 = ROMFS Image, 0 = DRV0, 1 = DRV1 + +; Rom Filing System File Image acting as a drive. +; There are two definitions, 1 for each ROM drive, they can be identical but the CFG bit 5 will differ. +DPB2: DW 128 ; SPT - 128 bytes sectors per track + DB 4 ; 3 ; BSH - block shift factor (Set to 3 for a 240K RomRFS Image). + DB 15 ; 7 ; BLM - block mask (Set to 7 for a 240K RomRFS Image). + DB 0 ; EXM - Extent mask + DW 159 ; 240 ; DSM - Storage size (blocks - 1) (Set to 240 for a 240K RomRFS Image). + DW 63 ; 31 ; DRM - Number of directory entries - 1 + DB 128 ; AL0 - 1 bit set per directory block + DB 0 ; AL1 - " + DW 0 ; 16 ; CKS - DIR check vector size (DRM+1)/4 (0=fixed disk) + DW 0 ; OFF - Reserved tracks + DB 48 ; CFG - MZ80A Addition, configuration flag: + ; Bit 1:0 = FDC: Sector Size, 00 = 128, 10 = 256, 11 = 512, 01 = Unused. + ; Bit 2 = Invert, 1 = Invert data, 0 = Use data as read (on MB8866 this is inverted). + ; Bit 4:3 = Disk type, 00 = FDC, 10 = ROM, 11 = SD Card, 01 = Unused + ; Bit 5 = ROMFS Image, 0 = DRV0, 1 = DRV1 + + +; 1.44MB Floppy +DPB3: DW 144 ; SPT - 128 bytes sectors per track (= 36 sectors of 512 bytes) + DB 4 ; BSH - block shift factor + DB 15 ; BLM - block mask + DB 0 ; EXM - Extent mask + DW 719 ; DSM - Storage size (blocks - 1) + DW 127 ; DRM - Number of directory entries - 1 + DB 192 ; AL0 - 1 bit set per directory block + DB 0 ; AL1 - " + DW 32 ; CKS - DIR check vector size (DRM+1)/4 (0=fixed disk) + DW 0 ; OFF - Reserved tracks + DB 7 ; CFG - MZ80A Addition, configuration flag: + ; Bit 1:0 = FDC: Sector Size, 00 = 128, 10 = 256, 11 = 512, 01 = Unused. + ; Bit 2 = Invert, 1 = Invert data, 0 = Use data as read (on MB8866 this is inverted). + ; Bit 4:3 = Disk type, 00 = FDC, 10 = ROM, 11 = SD Card, 01 = Unused + ; Bit 5 = ROMFS Image, 0 = DRV0, 1 = DRV1 + +; 16Mb SD Hard Disk drives (not hot-swappable). +; This drive has 2048 blocks (small due to size of RAM needed, more blocks more RAM) of 8192 bytes = 16Mb +; There are 1024 directory entries thus AL0/AL1 needs to ave the top four bits set as each block can hold 256 directory entries. +; This implementation limits the sectors per track to 255 (8 bit) even though CPM supports 16bit sectors, so the +; physical drive make up is: 32 Sectors (128 CPM sectors of 128 bytes each) x 1024 tracks, 1 head = 16777216bytes. +; This size has been chosen to maximise the use of the SD Card space and the number of files/programs which can be online +; at the same time. On the MZ80A, memory is more of a premium so keeping the DRM as low as possible saves RAM. +; +DPB4: DW 128 ; SPT - 128 bytes sectors per track (= 36 sectors of 512 bytes) + DB 6 ; BSH - block shift factor + DB 63 ; BLM - block mask + DB 3 ; EXM - Extent mask + DW 2047 ; DSM - Storage size (blocks - 1) + DW 511 ; DRM - Number of directory entries - 1 + DB 192 ; AL0 - 1 bit set per directory block + DB 0 ; AL1 - " + DW 0 ; CKS - DIR check vector size (DRM+1)/4 (0=fixed disk) + DW 0 ; OFF - Reserved tracks + DB 27 ; CFG - MZ80A Addition, configuration flag: + ; Bit 1:0 = FDC: Sector Size, 00 = 128, 10 = 256, 11 = 512, 01 = Unused. + ; Bit 2 = Invert, 1 = Invert data, 0 = Use data as read (on MB8866 this is inverted). + ; Bit 4:3 = Disk type, 00 = FDC, 10 = ROM, 11 = SD Card, 01 = Unused + ; Bit 5 = ROMFS Image, 0 = DRV0, 1 = DRV1 + + +; Rom Filing System RAM Drive. +; If the RFS v2.x board has the optional 512KRAM installed in slot 3 then this definition is used to create a RAM based disk drive within it. +; +DPB5: DW 128 ; SPT - 128 bytes sectors per track + DB 4 ; 3 ; BSH - block shift factor (Set to 3 for a 240K RomRFS Image). + DB 15 ; 7 ; BLM - block mask (Set to 7 for a 240K RomRFS Image). + DB 0 ; EXM - Extent mask + DW 159 ; 240 ; DSM - Storage size (blocks - 1) (Set to 240 for a 240K RomRFS Image). + DW 63 ; 31 ; DRM - Number of directory entries - 1 + DB 128 ; AL0 - 1 bit set per directory block + DB 0 ; AL1 - " + DW 0 ; 16 ; CKS - DIR check vector size (DRM+1)/4 (0=fixed disk) + DW 0 ; OFF - Reserved tracks + DB 8 ; CFG - MZ80A Addition, configuration flag: + ; Bit 1:0 = FDC: Sector Size, 00 = 128, 10 = 256, 11 = 512, 01 = Unused. + ; Bit 2 = Invert, 1 = Invert data, 0 = Use data as read (on MB8866 this is inverted). + ; Bit 4:3 = Disk type, 00 = FDC, 10 = ROM, 11 = SD Card, 01 = RAM + ; Bit 5 = ROMFS Image, 0 = DRV0, 1 = DRV1 + + + ALIGN_NOPS SCRN diff --git a/asm/cbios_bank1.asm b/asm/cbios_bank1.asm new file mode 100644 index 0000000..3b0bac8 --- /dev/null +++ b/asm/cbios_bank1.asm @@ -0,0 +1,456 @@ +;-------------------------------------------------------------------------------------------------------- +;- +;- Name: cbios_bank1.asm +;- Created: January 2020 +;- Author(s): Philip Smart +;- Description: Sharp MZ series CPM BIOS System. +;- This assembly language program is written to utilise the banked flashroms added with +;- the MZ-80A RFS hardware upgrade for the CPM CBIOS in order to preserve RAM for actual +;- CPM TPA programs. +;- +;- Credits: +;- Copyright: (c) 2018-23 Philip Smart +;- +;- History: Jan 2020 - Seperated Bank from RFS for dedicated use with CPM CBIOS. +;- May 2020 - Advent of the new RFS PCB v2.0, quite a few changes to accommodate the +;- additional and different hardware. The SPI is now onboard the PCB and +;- not using the printer interface card. +;- Mar 2021 - Updates for the RFS v2.1 board. +;- +;-------------------------------------------------------------------------------------------------------- +;- This source file is free software: you can redistribute it and-or modify +;- it under the terms of the GNU General Public License as published +;- by the Free Software Foundation, either version 3 of the License, or +;- (at your option) any later version. +;- +;- This source file is distributed in the hope that it will be useful, +;- but WITHOUT ANY WARRANTY; without even the implied warranty of +;- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +;- GNU General Public License for more details. +;- +;- You should have received a copy of the GNU General Public License +;- along with this program. If not, see . +;-------------------------------------------------------------------------------------------------------- + + ; Bring in definitions and macros. + INCLUDE "cpm_buildversion.asm" + INCLUDE "cpm_definitions.asm" + INCLUDE "macros.asm" + + ;====================================== + ; + ; USER ROM CPM CBIOS BANK 1 + ; + ;====================================== + ORG UROMADDR + + ;----------------------------------------------------------------------------------------- + ; Common code spanning all banks to ensure that a Monitor is selected upon power up/reset. + ;----------------------------------------------------------------------------------------- + NOP + LD B,16 ; If we read the bank control reset register 15 times then this will enable bank control and then the 16th read will reset all bank control registers to default. +CBIOS1_0: LD A,(BNKCTRLRST) + DJNZ CBIOS1_0 ; Apply the default number of coded latch reads to enable the bank control registers. +CBIOS1_1: LD A,BNKCTRLDEF ; Set coded latch, SDCS high, BBMOSI to high and BBCLK to high which enables SDCLK. + LD (BNKCTRL),A + NOP + NOP + NOP + XOR A ; We shouldnt arrive here after a reset, if we do, select MROM bank 0 + LD (BNKSELMROM),A + NOP + NOP + NOP + LD (BNKSELUSER),A ; and start up - ie. SA1510 Monitor - this occurs as User Bank 0 is enabled and the jmp to 0 is coded in it. + ; + ; No mans land... this should have switched to Bank 0 and at this point there is a jump to 00000H. + JP 00000H ; This is for safety!! + + + ;------------------------------------------------------------------------------- + ; Jump table for entry into this pages functions. + ;------------------------------------------------------------------------------- + ALIGN_NOPS UROMJMPTBL + JP ?REBOOT ; REBOOT + JP ?MLDY ; QMELDY + JP ?TEMP ; QTEMP + JP MLDST ; QMSTA + JP MLDSP ; QMSTP + JP ?BEL ; QBEL + JP ?MODE ; QMODE + JP ?TIMESET ; QTIMESET + JP ?TIMEREAD ; QTIMEREAD + JP ?CHKKY ; QCHKKY + JP ?GETKY ; QGETKY + + + + ; Method to reboot the machine into startup mode, ie. Monitor at MROM Bank 0, UROM at Bank 0. +?REBOOT: LD A,(MEMSWR) ; Switch memory to power up state, ie. Monitor ROM at 00000H + JP CBIOS1_1 ; Now run the code at the bank start which switches to bank 0, intitialises and then calls 00000H + + ;------------------------------------------------------------------------------- + ; START OF AUDIO CONTROLLER FUNCTIONALITY + ;------------------------------------------------------------------------------- + + ; Melody function. +?MLDY: PUSH BC + PUSH DE + PUSH HL + LD A,002H + LD (OCTV),A + LD B,001H +MLD1: LD A,(DE) + CP 00DH + JR Z,MLD4 + CP 0C8H + JR Z,MLD4 + CP 0CFH + JR Z,MLD2 + CP 02DH + JR Z,MLD2 + CP 02BH + JR Z,MLD3 + CP 0D7H + JR Z,MLD3 + CP 023H + LD HL,MTBL + JR NZ,MLD1A + LD HL,M?TBL + INC DE +MLD1A: CALL ONPU + JR C,MLD1 + CALL RYTHM + JR C,MLD5 + CALL MLDST + LD B,C + JR MLD1 +MLD2: LD A,003H +MLD2A: LD (OCTV),A + INC DE + JR MLD1 +MLD3: LD A,001H + JR MLD2A +MLD4: CALL RYTHM +MLD5: PUSH AF + CALL MLDSP + POP AF + POP HL + POP DE + POP BC + RET + +ONPU: PUSH BC + LD B,008H + LD A,(DE) +ONP1A: CP (HL) + JR Z,ONP2 + INC HL + INC HL + INC HL + DJNZ ONP1A + SCF + INC DE + POP BC + RET + +ONP2: INC HL + PUSH DE + LD E,(HL) + INC HL + LD D,(HL) + EX DE,HL + LD A,H + OR A + JR Z,ONP2B + LD A,(OCTV) +ONP2A: DEC A + JR Z,ONP2B + ADD HL,HL + JR ONP2A +ONP2B: LD (RATIO),HL + LD HL,OCTV + LD (HL),002H + DEC HL + POP DE + INC DE + LD A,(DE) + LD B,A + AND 0F0H + CP 030H + JR Z,ONP2C + LD A,(HL) + JR ONP2D +ONP2C: INC DE + LD A,B + AND 00FH + LD (HL),A +ONP2D: LD HL,OPTBL + ADD A,L + LD L,A + LD C,(HL) + LD A,(TEMPW) + LD B,A + XOR A + JP MLDDLY + +RYTHM: LD HL,KEYPA + LD (HL),0F0H + INC HL + LD A,(HL) + AND 081H + JR NZ,L02D5 + SCF + RET + +L02D5: LD A,(SUNDG) + RRCA + JR C,L02D5 +L02DB: LD A,(SUNDG) + RRCA + JR NC,L02DB + DJNZ L02D5 + XOR A + RET + +MLDST: LD HL,(RATIO) + LD A,H + OR A + JR Z,MLDSP + PUSH DE + EX DE,HL + LD HL,CONT0 + LD (HL),E + LD (HL),D + LD A,001H + POP DE + JR L02C4 +MLDSP: LD A,034H + LD (CONTF),A + XOR A +L02C4: LD (SUNDG),A + RET + +MLDDLY: ADD A,C + DJNZ MLDDLY + POP BC + LD C,A + XOR A + RET + + +?TEMP: PUSH AF + PUSH BC + AND 00FH + LD B,A + LD A,008H + SUB B + LD (TEMPW),A + POP BC + POP AF + RET + + ; + ; Method to sound the bell, basically play a constant tone. + ; +?BEL: PUSH DE + LD DE,00DB1H + CALL ?MLDY + POP DE + RET + + ; + ; Melody (note) lookup table. + ; +MTBL: DB 043H + DB 077H + DB 007H + DB 044H + DB 0A7H + DB 006H + DB 045H + DB 0EDH + DB 005H + DB 046H + DB 098H + DB 005H + DB 047H + DB 0FCH + DB 004H + DB 041H + DB 071H + DB 004H + DB 042H + DB 0F5H + DB 003H + DB 052H + DB 000H + DB 000H +M?TBL: DB 043H + DB 00CH + DB 007H + DB 044H + DB 047H + DB 006H + DB 045H + DB 098H + DB 005H + DB 046H + DB 048H + DB 005H + DB 047H + DB 0B4H + DB 004H + DB 041H + DB 031H + DB 004H + DB 042H + DB 0BBH + DB 003H + DB 052H + DB 000H + DB 000H + +OPTBL: DB 001H + DB 002H + DB 003H + DB 004H + DB 006H + DB 008H + DB 00CH + DB 010H + DB 018H + DB 020H + ;------------------------------------------------------------------------------- + ; END OF AUDIO CONTROLLER FUNCTIONALITY + ;------------------------------------------------------------------------------- + + + ;------------------------------------------------------------------------------- + ; START OF RTC FUNCTIONALITY (INTR HANDLER IN MAIN CBIOS) + ;------------------------------------------------------------------------------- + ; + ; BC:DE:HL contains the time in milliseconds (100msec resolution) since 01/01/1980. In IX is held the interrupt service handler routine address for the RTC. + ; HL contains lower 16 bits, DE contains middle 16 bits, BC contains upper 16bits, allows for a time from 00:00:00 to 23:59:59, for > 500000 days! + ; NB. Caller must disable interrupts before calling this method. +?TIMESET: LD (TIMESEC),HL ; Load lower 16 bits. + EX DE,HL + LD (TIMESEC+2),HL ; Load middle 16 bits. + PUSH BC + POP HL + LD (TIMESEC+4),HL ; Load upper 16 bits. + ; + LD HL,CONTF + LD (HL),074H ; Set Counter 1, read/load lsb first then msb, mode 2 rate generator, binary + LD (HL),0B0H ; Set Counter 2, read/load lsb first then msb, mode 0 interrupt on terminal count, binary + DEC HL + LD DE,TMRTICKINTV ; 100Hz coming into Timer 2 from Timer 1, set divisor to set interrupts per second. + LD (HL),E ; Place current time in Counter 2 + LD (HL),D + DEC HL + LD (HL),03BH ; Place divisor in Counter 1, = 315, thus 31500/315 = 100 + LD (HL),001H + NOP + NOP + NOP + ; + LD A, 0C3H ; Install the interrupt vector for when interrupts are enabled. + LD (00038H),A + LD (00039H),IX + RET + + ; Time Read; + ; Returns BC:DE:HL where HL is lower 16bits, DE is middle 16bits and BC is upper 16bits of milliseconds since 01/01/1980. +?TIMEREAD: LD HL,(TIMESEC+4) + PUSH HL + POP BC + LD HL,(TIMESEC+2) + EX DE,HL + LD HL,(TIMESEC) + RET + ;------------------------------------------------------------------------------- + ; END OF RTC FUNCTIONALITY + ;------------------------------------------------------------------------------- + + + ;------------------------------------------------------------------------------- + ; START OF KEYBOARD FUNCTIONALITY (INTR HANDLER SEPERATE IN CBIOS) + ;------------------------------------------------------------------------------- + +?MODE: LD HL,KEYPF + LD (HL),08AH + LD (HL),007H ; Set Motor to Off. + LD (HL),004H ; Disable interrupts by setting INTMSK to 0. + LD (HL),001H ; Set VGATE to 1. + RET + + ; Method to check if a key has been pressed and stored in buffer.. +?CHKKY: LD A, (KEYCOUNT) + OR A + JR Z,CHKKY2 + LD A,0FFH + RET +CHKKY2: XOR A + RET + +?GETKY: PUSH HL + LD A,(KEYCOUNT) + OR A + JR Z,GETKY2 +GETKY1: DI ; Disable interrupts, we dont want a race state occurring. + LD A,(KEYCOUNT) + DEC A ; Take 1 off the total count as we are reading a character out of the buffer. + LD (KEYCOUNT),A + LD HL,(KEYREAD) ; Get the position in the buffer where the next available character resides. + LD A,(HL) ; Read the character and save. + PUSH AF + INC L ; Update the read pointer and save. + LD A,L + AND KEYBUFSIZE-1 + LD L,A + LD (KEYREAD),HL + POP AF + EI ; Interrupts back on so keys and RTC are actioned. + JR ?PRCKEY ; Process the key, action any non ASCII keys. + ; +GETKY2: LD A,(KEYCOUNT) ; No key available so loop until one is. + OR A + JR Z,GETKY2 + JR GETKY1 + ; +?PRCKEY: CP CR ; CR + JR NZ,?PRCKY3 + JR ?PRCKYE +?PRCKY3: CP HOMEKEY ; HOME + JR NZ,?PRCKY4 + JR GETKY2 +?PRCKY4: CP CLRKEY ; CLR + JR NZ,?PRCKY5 + JR GETKY2 +?PRCKY5: CP INSERT ; INSERT + JR NZ,?PRCKY6 + JR GETKY2 +?PRCKY6: CP DBLZERO ; 00 + JR NZ,?PRCKY7 + LD A,'0' + LD (KEYBUF),A ; Place a character into the keybuffer so we double up on 0 + JR ?PRCKYX +?PRCKY7: CP BREAKKEY ; Break key processing. + JR NZ,?PRCKY8 + JR ?PRCKYE +?PRCKY8: CP DELETE + JR NZ,?PRCKYX + LD A,BACKS ; Map DELETE to BACKSPACE, BACKSPACE is Rubout, DELETE is echo in CPM. +?PRCKYX: +?PRCKYE: + POP HL + RET + + ;------------------------------------------------------------------------------- + ; END OF KEYBOARD FUNCTIONALITY + ;------------------------------------------------------------------------------- + + ; Align to end of bank. + ALIGN UROMADDR + 07F8h + ORG UROMADDR + 07F8h + DB 0FFh,0FFh,0FFh,0FFh,0FFh,0FFh,0FFh,0FFh diff --git a/asm/cbios_bank2.asm b/asm/cbios_bank2.asm new file mode 100644 index 0000000..62cf113 --- /dev/null +++ b/asm/cbios_bank2.asm @@ -0,0 +1,1468 @@ +;-------------------------------------------------------------------------------------------------------- +;- +;- Name: cbios_bank2.asm +;- Created: January 2020 +;- Author(s): Philip Smart +;- Description: Sharp MZ series CPM BIOS System. +;- This assembly language program is written to utilise the banked flashroms added with +;- the MZ-80A RFS hardware upgrade for the CPM CBIOS in order to preserve RAM for actual +;- CPM TPA programs. +;- +;- Credits: ANSITERM utilises a heavily customised version of Ewen McNeill's Amstrad CPC EwenTerm +; Ansi Parser. +; +; (C) Oct 2000 - only the ansiterm.22b module was used with a lot stripped out. +;- Copyright: (c) 2018-23 Philip Smart +;- +;- History: Jan 2020 - Seperated Bank from RFS for dedicated use with CPM CBIOS. +;- May 2020 - Advent of the new RFS PCB v2.0, quite a few changes to accommodate the +;- additional and different hardware. The SPI is now onboard the PCB and +;- not using the printer interface card. +;- Mar 2021 - Updates for the RFS v2.1 board. +;-------------------------------------------------------------------------------------------------------- +;- This source file is free software: you can redistribute it and-or modify +;- it under the terms of the GNU General Public License as published +;- by the Free Software Foundation, either version 3 of the License, or +;- (at your option) any later version. +;- +;- This source file is distributed in the hope that it will be useful, +;- but WITHOUT ANY WARRANTY; without even the implied warranty of +;- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +;- GNU General Public License for more details. +;- +;- You should have received a copy of the GNU General Public License +;- along with this program. If not, see . +;-------------------------------------------------------------------------------------------------------- + + ; Bring in definitions and macros. + INCLUDE "cpm_buildversion.asm" + INCLUDE "cpm_definitions.asm" + INCLUDE "macros.asm" + + ;====================================== + ; + ; USER ROM CPM CBIOS BANK 2 + ; + ;====================================== + ORG UROMADDR + + ;----------------------------------------------------------------------------------------- + ; Common code spanning all banks to ensure that a Monitor is selected upon power up/reset. + ;----------------------------------------------------------------------------------------- + NOP + LD B,16 ; If we read the bank control reset register 15 times then this will enable bank control and then the 16th read will reset all bank control registers to default. +CBIOS2_0: LD A,(BNKCTRLRST) + DJNZ CBIOS2_0 ; Apply the default number of coded latch reads to enable the bank control registers. + LD A,BNKCTRLDEF ; Set coded latch, SDCS high, BBMOSI to high and BBCLK to high which enables SDCLK. + LD (BNKCTRL),A + NOP + NOP + NOP + XOR A ; We shouldnt arrive here after a reset, if we do, select MROM bank 0 + LD (BNKSELMROM),A + NOP + NOP + NOP + LD (BNKSELUSER),A ; and start up - ie. SA1510 Monitor - this occurs as User Bank 0 is enabled and the jmp to 0 is coded in it. + ; + ; No mans land... this should have switched to Bank 0 and at this point there is a jump to 00000H. + JP 00000H ; This is for safety!! + + + ;------------------------------------------------------------------------------- + ; Jump table for entry into this pages functions. + ;------------------------------------------------------------------------------- + ALIGN_NOPS UROMJMPTBL + JP ?PRNT ; QPRNT + JP ?PRTHX ; QPRTHX + JP ?PRTHL ; QPRTHL + JP ?ANSITERM ; QANSITERM + + ;------------------------------------------------------------------------------- + ; START OF SCREEN FUNCTIONALITY + ;------------------------------------------------------------------------------- + + ; CR PAGE MODE1 +.CR: CALL .MANG + RRCA + JP NC,CURS2 + LD L,000H + INC H + CP ROW - 1 ; End of line? + JR Z,.CP1 + INC H + JP CURS1 + +.CP1: LD (DSPXY),HL + + ; SCROLLER +.SCROL: LD BC,SCRNSZ - COLW ; Scroll COLW -1 lines + LD DE,SCRN ; Start of the screen. + LD HL,SCRN + COLW ; Start of screen + 1 line. + LDIR + EX DE,HL + LD B,COLW ; Clear last line at bottom of screen. + CALL ?CLER + LD BC,0001AH + LD DE,MANG + LD HL,MANG + 1 + LDIR + LD (HL),000H + LD A,(MANG) + OR A + JP Z,?RSTR + LD HL,DSPXY + 1 + DEC (HL) + JR .SCROL + +?DPCT: PUSH AF ; Display control, character is mapped to a function call. + PUSH BC + PUSH DE + PUSH HL + LD B,A + AND 0F0H + CP 0C0H + JP NZ,?RSTR + XOR B + RLCA + LD C,A + LD B,000H + LD HL,.CTBL +DPCT1: ADD HL,BC + LD E,(HL) + INC HL + LD D,(HL) + EX DE,HL + JP (HL) + + +?PRT: LD A,C + CALL ?ADCN + LD C,A + AND 0F0H + CP 0F0H + RET Z + + CP 0C0H + LD A,C + JR NZ,PRNT3 +PRNT5: CALL ?DPCT + CP 0C3H + JR Z,PRNT4 + CP 0C5H + JR Z,PRNT2 + CP 0CDH ; CR + JR Z,PRNT2 + CP 0C6H + RET NZ + +PRNT2: XOR A +PRNT2A: LD (DPRNT),A + RET + +PRNT3: CALL ?DSP +PRNT4: LD A,(DPRNT) + INC A + CP COLW*2 ; 050H + JR C,PRNT4A + SUB COLW*2 ; 050H +PRNT4A: JR PRNT2A + +?NL: LD A,(DPRNT) + OR A + RET Z + +?LTNL: LD A,0CDH + JR PRNT5 +?PRTT: CALL ?PRTS + LD A,(DPRNT) + OR A + RET Z + +L098C: SUB 00AH + JR C,?PRTT + JR NZ,L098C + RET + + ; Delete a character on screen. +?DELCHR: LD A,0C7H + CALL ?DPCT + JR ?PRNT1 + +?NEWLINE: CALL ?NL + JR ?PRNT1 + + ; + ; Function to disable the cursor display. + ; +CURSOROFF: DI + CALL CURSRSTR ; Restore character under the cursor. + LD HL,FLASHCTL ; Indicate cursor is now off. + RES 7,(HL) + EI + RET + + ; + ; Function to enable the cursor display. + ; +CURSORON: DI + CALL DSPXYTOADDR ; Update the screen address for where the cursor should appear. + LD HL,FLASHCTL ; Indicate cursor is now on. + SET 7,(HL) + EI + RET + + ; + ; Function to restore the character beneath the cursor iff the cursor is being dislayed. + ; +CURSRSTR: PUSH HL + PUSH AF + LD HL,FLASHCTL ; Check to see if there is a cursor at the current screen location. + BIT 6,(HL) + JR Z,CURSRSTR1 + RES 6,(HL) + LD HL,(DSPXYADDR) ; There is so we must restore the original character before further processing. + LD A,(FLASH) + LD (HL),A +CURSRSTR1: POP AF + POP HL + RET + + ; + ; Function to convert XY co-ordinates to a physical screen location and save. + ; +DSPXYTOADDR:PUSH HL + PUSH DE + PUSH BC + LD BC,(DSPXY) ; Calculate the new cursor position based on the XY coordinates. + LD DE,COLW + LD HL,SCRN - COLW +DSPXYTOA1: ADD HL,DE + DEC B + JP P,DSPXYTOA1 + LD B,000H + ADD HL,BC + RES 3,H + LD (DSPXYADDR),HL ; Store the new address. + LD A,(HL) ; Store the new character. + LD (FLASH),A +DSPXYTOA2: POP BC + POP DE + POP HL + RET + + ; + ; Function to print a space. + ; +?PRTS: LD A,020H + + ; Function to print a character to the screen. If the character is a control code it is processed as necessary + ; otherwise the character is converted from ASCII display and displayed. + ; +?PRNT: DI + CALL CURSRSTR ; Restore char under cursor. + CP 00DH + JR Z,?NEWLINE + CP 00AH + JR Z,?NEWLINE + CP 07FH + JR Z,?DELCHR + CP BACKS + JR Z,?DELCHR + PUSH BC + LD C,A + LD B,A + CALL ?PRT + LD A,B + POP BC +?PRNT1: CALL DSPXYTOADDR + EI + RET + + ; + ; Function to print out the contents of HL as 4 digit Hexadecimal. + ; +?PRTHL: LD A,H + CALL ?PRTHX + LD A,L + JR ?PRTHX + RET + + ; + ; Function to print out the contents of A as 2 digit Hexadecimal + ; +?PRTHX: PUSH AF + RRCA + RRCA + RRCA + RRCA + CALL ASC + CALL ?PRNT + POP AF + CALL ASC + JP ?PRNT + +ASC: AND 00FH + CP 00AH + JR C,NOADD + ADD A,007H +NOADD: ADD A,030H + RET + +CLR8Z: XOR A + LD BC,00800H + PUSH DE + LD D,A +L09E8: LD (HL),D + INC HL + DEC BC + LD A,B + OR C + JR NZ,L09E8 + POP DE + RET + +REV: LD HL,REVFLG + LD A,(HL) + OR A + CPL + LD (HL),A + JR Z,REV1 + LD A,(INVDSP) + JR REV2 +REV1: LD A,(NRMDSP) +REV2: JP ?RSTR + +.MANG: LD HL,MANG +.MANG2: LD A,(DSPXY + 1) + ADD A,L + LD L,A + LD A,(HL) + INC HL + RL (HL) + OR (HL) + RR (HL) + RRCA + EX DE,HL + LD HL,(DSPXY) + RET + +L09C7: PUSH DE + PUSH HL + LD HL,PBIAS + XOR A + RLD + LD D,A + LD E,(HL) + RRD + XOR A + RR D + RR E + LD HL,SCRN + ADD HL,DE + LD (PAGETP),HL + POP HL + POP DE + RET + +?DSP: PUSH AF + PUSH BC + PUSH DE + PUSH HL + LD B,A + CALL ?PONT + LD (HL),B + LD HL,(DSPXY) + LD A,L +DSP01: CP COLW - 1 ; End of line. + JP NZ,CURSR + CALL .MANG + JR C,CURSR +.DSP03: EX DE,HL + LD (HL),001H + INC HL + LD (HL),000H + JP CURSR + +CURSD: LD HL,(DSPXY) + LD A,H + CP ROW - 1 + JR Z,CURS4 + INC H +CURS1: ;CALL MGP.I +CURS3: LD (DSPXY),HL + JR ?RSTR + +CURSU: LD HL,(DSPXY) + LD A,H + OR A + JR Z,CURS5 + DEC H +CURSU1: JR CURS3 + +CURSR: LD HL,(DSPXY) + LD A,L + CP COLW - 1 ; End of line + JR NC,CURS2 + INC L + JR CURS3 +CURS2: LD L,000H + INC H + LD A,H + CP ROW + JR C,CURS1 + LD H,ROW - 1 + LD (DSPXY),HL +CURS4: JP .SCROL + +CURSL: LD HL,(DSPXY) + LD A,L + OR A + JR Z,CURS5A + DEC L + JR CURS3 +CURS5A: LD L,COLW - 1 ; End of line + DEC H + JP P,CURSU1 + LD H,000H + LD (DSPXY),HL +CURS5: JR ?RSTR + +CLRS: LD HL,MANG + LD B,01BH + CALL ?CLER + LD HL,SCRN + PUSH HL + CALL CLR8Z + POP HL +CLRS1: LD A,(SCLDSP) +HOM0: LD HL,00000H + JP CURS3 + +?RSTR: POP HL +?RSTR1: POP DE + POP BC + POP AF + RET + +DEL: LD HL,(DSPXY) + LD A,H + OR L + JR Z,?RSTR + LD A,L + OR A + JR NZ,DEL1 + CALL .MANG + JR C,DEL1 + CALL ?PONT + DEC HL + LD (HL),000H + JR CURSL +DEL1: CALL .MANG + RRCA + LD A,COLW + JR NC,L0F13 + RLCA +L0F13: SUB L + LD B,A + CALL ?PONT + PUSH HL + POP DE + DEC DE + SET 4,D +DEL2: RES 3,H + RES 3,D + LD A,(HL) + LD (DE),A + INC HL + INC DE + DJNZ DEL2 + DEC HL + LD (HL),000H + JP CURSL + +INST: CALL .MANG + RRCA + LD L,COLW - 1 ; End of line + LD A,L + JR NC,INST1A + INC H +INST1A: CALL ?PNT1 + PUSH HL + LD HL,(DSPXY) + JR NC,INST2 + LD A,(COLW*2)-1 ; 04FH +INST2: SUB L + LD B,A + POP DE + LD A,(DE) + OR A + JR NZ,?RSTR + CALL ?PONT + LD A,(HL) + LD (HL),000H +INST1: INC HL + RES 3,H + LD E,(HL) + LD (HL),A + LD A,E + DJNZ INST1 + JR ?RSTR + +?PONT: LD HL,(DSPXY) +?PNT1: PUSH AF + PUSH BC + PUSH DE + PUSH HL + POP BC + LD DE,COLW + LD HL,SCRN - COLW +?PNT2: ADD HL,DE + DEC B + JP P,?PNT2 + LD B,000H + ADD HL,BC + RES 3,H + POP DE + POP BC + POP AF + RET + +?CLER: XOR A + JR ?DINT +?CLRFF: LD A,0FFH +?DINT: LD (HL),A + INC HL + DJNZ ?DINT + RET + +?ADCN: PUSH BC + PUSH HL + LD HL,ATBL ;00AB5H + LD C,A + LD B,000H + ADD HL,BC + LD A,(HL) + JR DACN3 + +?DACN: PUSH BC + PUSH HL + PUSH DE + LD HL,ATBL + LD D,H + LD E,L + LD BC,00100H + CPIR + JR Z,DACN1 + LD A,0F0H +DACN2: POP DE +DACN3: POP HL + POP BC + RET + +DACN1: OR A + DEC HL + SBC HL,DE + LD A,L + JR DACN2 + + ; CTBL PAGE MODE1 +.CTBL: DW .SCROL + DW CURSD + DW CURSU + DW CURSR + DW CURSL + DW HOM0 + DW CLRS + DW DEL + DW INST + DW ?RSTR + DW ?RSTR + DW ?RSTR + DW REV + DW .CR + DW ?RSTR + DW ?RSTR + +; ASCII TO DISPLAY CODE TABLE +ATBL: DB 0CCH ; NUL '\0' (null character) + DB 0E0H ; SOH (start of heading) + DB 0F2H ; STX (start of text) + DB 0F3H ; ETX (end of text) + DB 0CEH ; EOT (end of transmission) + DB 0CFH ; ENQ (enquiry) + DB 0F6H ; ACK (acknowledge) + DB 0F7H ; BEL '\a' (bell) + DB 0F8H ; BS '\b' (backspace) + DB 0F9H ; HT '\t' (horizontal tab) + DB 0FAH ; LF '\n' (new line) + DB 0FBH ; VT '\v' (vertical tab) + DB 0FCH ; FF '\f' (form feed) + DB 0FDH ; CR '\r' (carriage ret) + DB 0FEH ; SO (shift out) + DB 0FFH ; SI (shift in) + DB 0E1H ; DLE (data link escape) + DB 0C1H ; DC1 (device control 1) + DB 0C2H ; DC2 (device control 2) + DB 0C3H ; DC3 (device control 3) + DB 0C4H ; DC4 (device control 4) + DB 0C5H ; NAK (negative ack.) + DB 0C6H ; SYN (synchronous idle) + DB 0E2H ; ETB (end of trans. blk) + DB 0E3H ; CAN (cancel) + DB 0E4H ; EM (end of medium) + DB 0E5H ; SUB (substitute) + DB 0E6H ; ESC (escape) + DB 0EBH ; FS (file separator) + DB 0EEH ; GS (group separator) + DB 0EFH ; RS (record separator) + DB 0F4H ; US (unit separator) + DB 000H ; SPACE + DB 061H ; ! + DB 062H ; " + DB 063H ; # + DB 064H ; $ + DB 065H ; % + DB 066H ; & + DB 067H ; ' + DB 068H ; ( + DB 069H ; ) + DB 06BH ; * + DB 06AH ; + + DB 02FH ; , + DB 02AH ; - + DB 02EH ; . + DB 02DH ; / + DB 020H ; 0 + DB 021H ; 1 + DB 022H ; 2 + DB 023H ; 3 + DB 024H ; 4 + DB 025H ; 5 + DB 026H ; 6 + DB 027H ; 7 + DB 028H ; 8 + DB 029H ; 9 + DB 04FH ; : + DB 02CH ; ; + DB 051H ; < + DB 02BH ; = + DB 057H ; > + DB 049H ; ? + DB 055H ; @ + DB 001H ; A + DB 002H ; B + DB 003H ; C + DB 004H ; D + DB 005H ; E + DB 006H ; F + DB 007H ; G + DB 008H ; H + DB 009H ; I + DB 00AH ; J + DB 00BH ; K + DB 00CH ; L + DB 00DH ; M + DB 00EH ; N + DB 00FH ; O + DB 010H ; P + DB 011H ; Q + DB 012H ; R + DB 013H ; S + DB 014H ; T + DB 015H ; U + DB 016H ; V + DB 017H ; W + DB 018H ; X + DB 019H ; Y + DB 01AH ; Z + DB 052H ; [ + DB 059H ; \ '\\' + DB 054H ; ] + DB 0BEH ; ^ + DB 03CH ; _ + DB 0C7H ; ` + DB 081H ; a + DB 082H ; b + DB 083H ; c + DB 084H ; d + DB 085H ; e + DB 086H ; f + DB 087H ; g + DB 088H ; h + DB 089H ; i + DB 08AH ; j + DB 08BH ; k + DB 08CH ; l + DB 08DH ; m + DB 08EH ; n + DB 08FH ; o + DB 090H ; p + DB 091H ; q + DB 092H ; r + DB 093H ; s + DB 094H ; t + DB 095H ; u + DB 096H ; v + DB 097H ; w + DB 098H ; x + DB 099H ; y + DB 09AH ; z + DB 0BCH ; { + DB 080H ; | + DB 040H ; } + DB 0A5H ; ~ + DB 0C0H ; DEL + DB 040H + DB 0BDH + DB 09DH + DB 0B1H + DB 0B5H + DB 0B9H + DB 0B4H + DB 09EH + DB 0B2H + DB 0B6H + DB 0BAH + DB 0BEH + DB 09FH + DB 0B3H + DB 0B7H + DB 0BBH + DB 0BFH + DB 0A3H + DB 085H + DB 0A4H + DB 0A5H + DB 0A6H + DB 094H + DB 087H + DB 088H + DB 09CH + DB 082H + DB 098H + DB 084H + DB 092H + DB 090H + DB 083H + DB 091H + DB 081H + DB 09AH + DB 097H + DB 093H + DB 095H + DB 089H + DB 0A1H + DB 0AFH + DB 08BH + DB 086H + DB 096H + DB 0A2H + DB 0ABH + DB 0AAH + DB 08AH + DB 08EH + DB 0B0H + DB 0ADH + DB 08DH + DB 0A7H + DB 0A8H + DB 0A9H + DB 08FH + DB 08CH + DB 0AEH + DB 0ACH + DB 09BH + DB 0A0H + DB 099H + DB 0BCH + DB 0B8H + DB 080H + DB 03BH + DB 03AH + DB 070H + DB 03CH + DB 071H + DB 05AH + DB 03DH + DB 043H + DB 056H + DB 03FH + DB 01EH + DB 04AH + DB 01CH + DB 05DH + DB 03EH + DB 05CH + DB 01FH + DB 05FH + DB 05EH + DB 037H + DB 07BH + DB 07FH + DB 036H + DB 07AH + DB 07EH + DB 033H + DB 04BH + DB 04CH + DB 01DH + DB 06CH + DB 05BH + DB 078H + DB 041H + DB 035H + DB 034H + DB 074H + DB 030H + DB 038H + DB 075H + DB 039H + DB 04DH + DB 06FH + DB 06EH + DB 032H + DB 077H + DB 076H + DB 072H + DB 073H + DB 047H + DB 07CH + DB 053H + DB 031H + DB 04EH + DB 06DH + DB 048H + DB 046H + DB 07DH + DB 044H + DB 01BH + DB 058H + DB 079H + DB 042H + DB 060H + DB 0FDH + DB 0CBH + DB 000H + DB 01EH + ;------------------------------------------------------------------------------- + ; END OF SCREEN FUNCTIONALITY + ;------------------------------------------------------------------------------- + + ;---------------------------------------- + ; + ; ANSI EMULATION + ; + ; Emulate the Ansi standard + ; N.B. Turned on when Chr + ; 27 recieved. + ; Entry - A = Char + ; Exit - None + ; Used - None + ; + ;---------------------------------------- +?ANSITERM: PUSH HL + PUSH DE + PUSH BC + PUSH AF + LD C,A ; Move character into C for safe keeping + ; + LD A,(ANSIMODE) + OR A + JR NZ,ANSI2 + LD A,C + CP 27 + JP NZ,NOTANSI ; If it is Chr 27 then we haven't just + ; been turned on, so don't bother with + ; all the checking. + LD A,1 ; Turn on. + LD (ANSIMODE),A + JP AnsiMore + +ANSI2: LD A,(CHARACTERNO) ; CHARACTER number in sequence + OR A ; Is this the first character? + JP Z,AnsiFirst ; Yes, deal with this strange occurance! + + LD A,C ; Put character back in C to check + + CP ";" ; Is it a semi colon? + JP Z,AnsiSemi + + CP "0" ; Is it a number? + JR C,ANSI_NN ; If <0 then no + CP "9"+1 ; If >9 then no + JP C,AnsiNumber + +ANSI_NN: CP "?" ; Simple trap for simple problem! + JP Z,AnsiMore + + CP "@" ; Is it a letter? + JP C,ANSIEXIT ; Abandon if not letter; something wrong + +ANSIFOUND: CALL CURSRSTR ; Restore any character under the cursor. + LD HL,(NUMBERPOS) ; Get value of number buffer + LD A,(HAVELOADED) ; Did we put anything in this byte? + OR A + JR NZ,AF1 + LD (HL),255 ; Mark the fact that nothing was put in +AF1: INC HL + LD A,254 + LD (HL),A ; Mark end of sequence (for unlimited length sequences) + + ;Disable cursor as unwanted side effects such as screen flicker may occur. + LD A,(FLASHCTL) + BIT 7,A + CALL NZ,CURSOROFF + + XOR A + LD (CURSORCOUNT),A ; Restart count + LD A,0C9h + LD (CHGCURSMODE),A ; Disable flashing temp. + + LD HL,NUMBERBUF ; For the routine called. + LD A,C ; Restore number + ; + ; Now work out what happens... + ; + CP "A" ; Check for supported Ansi characters + JP Z,CUU ; Upwards + CP "B" + JP Z,CUD ; Downwards + CP "C" + JP Z,CUF ; Forward + CP "D" + JP Z,CUB ; Backward + CP "H" + JP Z,CUP ; Locate + CP "f" + JP Z,HVP ; Locate + CP "J" + JP Z,ED ; Clear screen + CP "m" + JP Z,SGR ; Set graphics renditon + CP "K" + JP Z,EL ; Clear to end of line + CP "s" + JP Z,SCP ; Save the cursor position + CP "u" + JP Z,RCP ; Restore the cursor position + +ANSIEXIT: CALL CURSORON ; If t + LD HL,NUMBERBUF ; Numbers buffer position + LD (NUMBERPOS),HL + XOR A + LD (CHARACTERNO),A ; Next time it runs, it will be the + ; first character + LD (HAVELOADED),A ; We haven't filled this byte! + LD (CHGCURSMODE),A ; Cursor allowed back again! + XOR A + LD (ANSIMODE),A + JR AnsiMore +NOTANSI: CP 000h ; Filter unprintable characters. + JR Z,AnsiMore + CALL ?PRNT +AnsiMore: POP AF + POP BC + POP DE + POP HL + RET + + ; + ; The various routines needed to handle the filtered characters + ; +AnsiFirst: LD A,255 + LD (CHARACTERNO),A ; Next character is not first! + LD A,C ; Get character back + LD (ANSIFIRST),A ; Save first character to check later + CP "(" ; ( and [ have characters to follow + JP Z,AnsiMore ; and are legal. + CP "[" + JP Z,AnsiMore + CP 09Bh ; CSI + JP Z,AnsiF1 ; Pretend that "[" was first ;-) + JP ANSIEXIT ; = and > don't have anything to follow + ; them but are legal. + ; Others are illegal, so abandon anyway. +AnsiF1: LD A,"[" ; Put a "[" for first character + LD (ANSIFIRST),A + JP ANSIEXIT + +AnsiSemi: LD HL,(NUMBERPOS) ; Move the number pointer to the + LD A,(HAVELOADED) ; Did we put anything in this byte? + OR A + JR NZ,AS1 + LD (HL),255 ; Mark the fact that nothing was put in +AS1: INC HL ; move to next byte + LD (NUMBERPOS),HL + XOR A + LD (HAVELOADED),A ; New byte => not filled! + JP AnsiMore + +AnsiNumber: LD HL,(NUMBERPOS) ; Get address for number + LD A,(HAVELOADED) + OR A ; If value is zero + JR NZ,AN1 + LD A,C ; Get value into A + SUB "0" ; Remove ASCII offset + LD (HL),A ; Save and Exit + LD A,255 + LD (HAVELOADED),A ; Yes, we _have_ put something in! + JP AnsiMore + +AN1: LD A,(HL) ; Stored value in A; TBA in C + ADD A,A ; 2 * + LD D,A ; Save the 2* for later + ADD A,A ; 4 * + ADD A,A ; 8 * + ADD A,D ; 10 * + ADD A,C ; 10 * + new num + SUB "0" ; And remove offset from C value! + LD (HL),A ; Save and Exit. + JP AnsiMore ; Note routine will only work up to 100 + ; which should be okay for this application. + + ;-------------------------------- + ; GET NUMBER + ; + ; Gets the next number from + ; the list + ; + ; Entry - HL = address to get + ; from + ; Exit - HL = next address + ; A = value + ; IF a=255 then default value + ; If a=254 then end of sequence + ; Used - None + ;-------------------------------- +GetNumber: LD A,(HL) ; Get number + CP 254 + RET Z ; Return if end of sequence,ie still point to + ; end + INC HL ; Return pointing to next byte + RET ; Else next address and return + + ;*** ANSI UP + ; +CUU: CALL GetNumber ; Number into A + LD B,A ; Save value into B + CP 255 + JR NZ,CUUlp + LD B,1 ; Default value +CUUlp: LD A,(DSPXY+1) ; A <- Row + CP B ; Is it too far? + JR C,CUU1 + SUB B ; No, then go back that far. + JR CUU2 +CUU1: LD A,0 ; Make the choice, top line. +CUU2: LD (DSPXY+1),A ; Row <- A + JP ANSIEXIT + + ;*** ANSI DOWN + ; +CUD: LD A,(ANSIFIRST) + CP "[" + JP NZ,ANSIEXIT ; Ignore ESC(B + CALL GetNumber + LD B,A ; Save value in b + CP 255 + JR NZ,CUDlp + LD B,1 ; Default +CUDlp: LD A,(DSPXY+1) ; A <- Row + ADD A,B + CP ROW ; Too far? + JP C,CUD1 + LD A,ROW-1 ; Too far then bottom of screen +CUD1: LD (DSPXY+1),A ; Row <- A + JP ANSIEXIT + + ;*** ANSI RIGHT + ; +CUF: CALL GetNumber ; Number into A + LD B,A ; Value saved in B + CP 255 + JR NZ,CUFget + LD B,1 ; Default +CUFget: LD A,(DSPXY) ; A <- Column + ADD A,B ; Add movement. + CP 80 ; Too far? + JR C,CUF2 + LD A,79 ; Yes, right edge +CUF2: LD (DSPXY),A ; Column <- A + JP ANSIEXIT + + ;*** ANSI LEFT + ; +CUB: CALL GetNumber ; Number into A + LD B,A ; Save value in B + CP 255 + JR NZ,CUBget + LD B,1 ; Default +CUBget: LD A,(DSPXY) ; A <- Column + CP B ; Too far? + JR C,CUB1a + SUB B + JR CUB1b +CUB1a: LD A,0 +CUB1b: LD (DSPXY),A ; Column <-A + JP ANSIEXIT + + ;*** ANSI LOCATE + ; +HVP: +CUP: CALL GetNumber + CP 255 + CALL Z,DefaultLine ; Default = 1 + CP 254 ; Sequence End -> 1 + CALL Z,DefaultLine + CP ROW+1 ; Out of range then don't move + JP NC,ANSIEXIT + OR A + CALL Z,DefaultLine ; 0 means default, some strange reason + LD D,A + CALL GetNumber + CP 255 ; Default = 1 + CALL Z,DefaultColumn + CP 254 ; Sequence End -> 1 + CALL Z,DefaultColumn + CP 81 ; Out of range, then don't move + JP NC,ANSIEXIT + OR A + CALL Z,DefaultColumn ; 0 means go with default + LD E,A + EX DE,HL + DEC H ; Translate from Ansi co-ordinates to hardware + DEC L ; co-ordinates + LD (DSPXY),HL ; Set the cursor position. + JP ANSIEXIT + +DefaultColumn: +DefaultLine:LD A,1 + RET + + ;*** ANSI CLEAR SCREEN + ; +ED: CALL GetNumber + OR A + JP Z,ED1 ; Zero means first option + CP 254 ; Also default + JP Z,ED1 + CP 255 + JP Z,ED1 + CP 1 + JP Z,ED2 + CP 2 + JP NZ,ANSIEXIT + + ;*** Option 2 + ; +ED3: LD HL,0 + LD (DSPXY),HL ; Home the cursor + LD A,(JSW_FF) + OR A + JP NZ,ED_Set_LF + CALL CALCSCADDR + CALL CLRSCRN + JP ANSIEXIT + +ED_Set_LF: XOR A ; Note simply so that + LD (JSW_LF),A ; ESC[2J works the same as CTRL-L + JP ANSIEXIT + + ;*** Option 0 + ; +ED1: LD HL,(DSPXY) ; Get and save cursor position + LD A,H + OR L + JP Z,ED3 ; If we are at the top of the + ; screen and clearing to the bottom + ; then we are clearing all the screen! + PUSH HL + LD A,ROW-1 + SUB H ; ROW - Row + LD HL,0 ; Zero start + OR A ; Do we have any lines to add? + JR Z,ED1_2 ; If no bypass that addition! + LD B,A ; Number of lines to count + LD DE,80 +ED1_1: ADD HL,DE + DJNZ ED1_1 +ED1_2: EX DE,HL ; Value into DE + POP HL + LD A,80 + SUB L ; 80 - Columns + LD L,A ; Add to value before + LD H,0 + ADD HL,DE + PUSH HL ; Value saved for later + LD HL,(DSPXY) ; _that_ value again! + POP BC ; Number to blank + CALL CALCSCADDR + CALL CLRSCRN ; Now do it! + JP ANSIEXIT ; Then exit properly + + ;*** Option 1 - clear from cursor to beginning of screen + ; +ED2: LD HL,(DSPXY) ; Get and save cursor position + PUSH HL + LD A,H + LD HL,0 ; Zero start + OR A ; Do we have any lines to add? + JR Z,ED2_2 ; If no bypass that addition! + LD B,A ; Number of lines + LD DE,80 +ED2_1: ADD HL,DE + DJNZ ED2_1 +ED2_2: EX DE,HL ; Value into DE + POP HL + LD H,0 + ADD HL,DE + PUSH HL ; Value saved for later + LD HL,0 ; Find the begining! + POP BC ; Number to blank + CALL CLRSCRN ; Now do it! + JP ANSIEXIT ; Then exit properly + + ; *** ANSI CLEAR LINE + ; +EL: CALL GetNumber ; Get value + CP 0 + JP Z,EL1 ; Zero & Default are the same + CP 255 + JP Z,EL1 + CP 254 + JP Z,EL1 + CP 1 + JP Z,EL2 + CP 2 + JP NZ,ANSIEXIT ; Otherwise don't do a thing + + ;*** Option 2 - clear entire line. + ; + LD HL,(DSPXY) + LD L,0 + LD (DSPXY),HL + CALL CALCSCADDR + LD BC,80 ; 80 bytes to clear (whole line) + CALL CLRSCRN + JP ANSIEXIT + + ;*** Option 0 - Clear from Cursor to end of line. + ; +EL1: LD HL,(DSPXY) + LD A,80 ; Calculate distance to end of line + SUB L + LD C,A + LD B,0 + LD (DSPXY),HL + PUSH HL + POP DE + CALL CALCSCADDR + CALL CLRSCRN + JP ANSIEXIT + + ;*** Option 1 - clear from cursor to beginning of line. + ; +EL2: LD HL,(DSPXY) + LD C,L ; BC = distance from start of line + LD B,0 + LD L,0 + LD (DSPXY),HL + CALL CALCSCADDR + CALL CLRSCRN + JP ANSIEXIT + + ; In HL = XY Pos + ; Out = Screen address. +CALCSCADDR: PUSH AF + PUSH BC + PUSH DE + PUSH HL + LD A,H + LD B,H + LD C,L + LD HL,SCRN + OR A + JR Z,CALC3 + LD DE,80 +CALC2: ADD HL,DE + DJNZ CALC2 +CALC3: POP DE + ADD HL,BC + POP DE + POP BC + POP AF + RET + + ; HL = address + ; BC = length +CLRSCRN: PUSH HL ; 1 for later! + LD D,H + LD E,L + INC DE ; DE <- HL +1 + PUSH BC ; Save the value a little longer! + XOR A + LD (HL), A ; Blank this area! + LDIR ; *** just like magic *** + ; only I forgot it in 22a! + POP BC ; Restore values + POP HL + LD DE,2048 ; Move to attributes block + ADD HL,DE + LD D,H + LD E,L + INC DE ; DE = HL + 1 + LD A,(FONTSET) ; Save in the current values. + LD (HL),A + LDIR + RET + + ;*** ANSI SET GRAPHICS RENDITION + ; +SGR: CALL GetNumber + CP 254 ; 254 signifies end of sequence + JP Z,ANSIEXIT + OR A + CALL Z,AllOff + CP 255 ; Default means all off + CALL Z,AllOff + CP 1 + CALL Z,BoldOn + CP 2 + CALL Z,BoldOff + CP 4 + CALL Z,UnderOn + CP 5 + CALL Z,ItalicOn + CP 6 + CALL Z,ItalicOn + CP 7 + CALL Z,InverseOn + JP SGR ; Code is re-entrant + + ;-------------------------------- + ; + ; RESET GRAPHICS + ; + ; Entry - None + ; Exit - None + ; Used - None + ;-------------------------------- +AllOff: PUSH AF ; Save registers + LD A,0C9h ; = off + LD (BOLDMODE),A ; Turn the flags off + LD (ITALICMODE),A + LD (UNDERSCMODE),A + LD (INVMODE),A + LD A,007h ; Black background, white chars. + LD (FONTSET),A ; Reset the bit map store + POP AF ; Restore register + RET + + ;-------------------------------- + ; + ; TURN BOLD ON + ; + ; Entry - None + ; Exit - None + ; Used - None + ;-------------------------------- +BoldOn: PUSH AF ; Save register + XOR A ; 0 means on + LD (BOLDMODE),A +BOn1: LD A,(FONTSET) + SET 0,A ; turn ON indicator flag + LD (FONTSET),A + POP AF ; Restore register + RET + + ;-------------------------------- + ; + ; TURN BOLD OFF + ; + ; Entry - None + ; Exit - None + ; Used - None + ;-------------------------------- +BoldOff: PUSH AF ; Save register + PUSH BC + LD A,0C9h ; &C9 means off + LD (BOLDMODE),A +BO1: LD A,(FONTSET) + RES 0,A ; turn OFF indicator flag + LD (FONTSET),A + POP BC + POP AF ; Restore register + RET + + ;-------------------------------- + ; + ; TURN ITALICS ON + ; (replaces flashing) + ; Entry - None + ; Exit - None + ; Used - None + ;-------------------------------- +ItalicOn: PUSH AF ; Save AF + XOR A + LD (ITALICMODE),A ; 0 means on + LD A,(FONTSET) + SET 1,A ; turn ON indicator flag + LD (FONTSET),A + POP AF ; Restore register + RET + + ;-------------------------------- + ; + ; TURN UNDERLINE ON + ; + ; Entry - None + ; Exit - None + ; Used - None + ;-------------------------------- +UnderOn: PUSH AF ; Save register + XOR A ; 0 means on + LD (UNDERSCMODE),A + LD A,(FONTSET) + SET 2,A ; turn ON indicator flag + LD (FONTSET),A + POP AF ; Restore register + RET + + ;-------------------------------- + ; + ; TURN INVERSE ON + ; + ; Entry - None + ; Exit - None + ; Used - None + ;-------------------------------- +InverseOn: PUSH AF ; Save register + XOR A ; 0 means on + LD (INVMODE),A + LD A,(FONTSET) + SET 3,A ; turn ON indicator flag + LD (FONTSET),A + POP AF ; Restore AF + RET + + ;*** ANSI SAVE CURSOR POSITION + ; +SCP: LD HL,(DSPXY) ; (backup) <- (current) + LD (CURSORPSAV),HL + JP ANSIEXIT + + ;*** ANSI RESTORE CURSOR POSITION + ; +RCP: LD HL,(CURSORPSAV) ; (current) <- (backup) + LD (DSPXY),HL + JP ANSIEXIT + + ;------------------------------------------------------------------------------- + ; END OF ANSI TERMINAL FUNCTIONALITY + ;------------------------------------------------------------------------------- + + ; Align to end of bank. + ALIGN UROMADDR + 07F8h + ORG UROMADDR + 07F8h + DB 0FFh,0FFh,0FFh,0FFh,0FFh,0FFh,0FFh,0FFh diff --git a/asm/cbios_bank3.asm b/asm/cbios_bank3.asm new file mode 100644 index 0000000..0874837 --- /dev/null +++ b/asm/cbios_bank3.asm @@ -0,0 +1,897 @@ +;-------------------------------------------------------------------------------------------------------- +;- +;- Name: cbios_bank3.asm +;- Created: January 2020 +;- Author(s): Philip Smart +;- Description: Sharp MZ series CPM BIOS System. +;- This assembly language program is written to utilise the banked flashroms added with +;- the MZ-80A RFS hardware upgrade for the CPM CBIOS in order to preserve RAM for actual +;- CPM TPA programs. +;- +;- Credits: +;- Copyright: (c) 2018-23 Philip Smart +;- +;- History: Jan 2020 - Seperated Bank from RFS for dedicated use with CPM CBIOS. +;- May 2020 - Advent of the new RFS PCB v2.0, quite a few changes to accommodate the +;- additional and different hardware. The SPI is now onboard the PCB and +;- not using the printer interface card. +;- Mar 2021 - Updates for the RFS v2.1 board. +;-------------------------------------------------------------------------------------------------------- +;- This source file is free software: you can redistribute it and-or modify +;- it under the terms of the GNU General Public License as published +;- by the Free Software Foundation, either version 3 of the License, or +;- (at your option) any later version. +;- +;- This source file is distributed in the hope that it will be useful, +;- but WITHOUT ANY WARRANTY; without even the implied warranty of +;- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +;- GNU General Public License for more details. +;- +;- You should have received a copy of the GNU General Public License +;- along with this program. If not, see . +;-------------------------------------------------------------------------------------------------------- + + ; Bring in definitions and macros. + INCLUDE "cpm_buildversion.asm" + INCLUDE "cpm_definitions.asm" + INCLUDE "macros.asm" + + ;============================================================ + ; + ; USER ROM CPM CBIOS BANK 3 - SD Card Controller functions. + ; + ;============================================================ + ORG UROMADDR + + ;----------------------------------------------------------------------------------------- + ; Common code spanning all banks to ensure that a Monitor is selected upon power up/reset. + ;----------------------------------------------------------------------------------------- + NOP + LD B,16 ; If we read the bank control reset register 15 times then this will enable bank control and then the 16th read will reset all bank control registers to default. +CBIOS3_0: LD A,(BNKCTRLRST) + DJNZ CBIOS3_0 ; Apply the default number of coded latch reads to enable the bank control registers. + LD A,BNKCTRLDEF ; Set coded latch, SDCS high, BBMOSI to high and BBCLK to high which enables SDCLK. + LD (BNKCTRL),A + NOP + NOP + NOP + XOR A ; We shouldnt arrive here after a reset, if we do, select MROM bank 0 + LD (BNKSELMROM),A + NOP + NOP + NOP + LD (BNKSELUSER),A ; and start up - ie. SA1510 Monitor - this occurs as User Bank 0 is enabled and the jmp to 0 is coded in it. + ; + ; No mans land... this should have switched to Bank 0 and at this point there is a jump to 00000H. + JP 00000H ; This is for safety!! + + + ;------------------------------------------------------------------------------- + ; Jump table for entry into this pages functions. + ;------------------------------------------------------------------------------- + ALIGN_NOPS UROMJMPTBL + JP ?SD_INIT ; SD_INIT + JP ?SD_READ ; SD_READ + JP ?SD_WRITE ; SD_WRITE + JP ?SD_GETLBA ; SD_GETLBA + JP ?SDC_READ ; SDC_READ + JP ?SDC_WRITE ; SDC_WRITE + + + ;------------------------------------------------------------------------------- + ; START OF SD CARD CONTROLLER FUNCTIONALITY + ;------------------------------------------------------------------------------- + + ;------------------------------------------------------------------------------- + ; Hardware SPI SD Controller (HW_SPI_ENA = 1) + ; This logic uses the RFS PCB v2+ hardware shift registers to communicate with + ; an SD Card. It is the fastest solution available but has a high IC count. + ; + ; Software SPI SD Controller (SW_SPI_ENA = 1) + ; This logic uses the RFS PCB v2+ logic to simulate the SPI interface with + ; bitbanging techniques. It is similar to the Parallel Port SD Controller + ; but uses logic on the RFS board rather than the parallel port interface. + ; + ; Parallel Port SD Controller (PP_SPI_ENA = 1) + ; This logic uses the standard Sharp MZ-80A Parallel Port for simulating the + ; SPI interface with bitbanging techniques. This interface is then used to + ; communicate with an SD Card. + ;------------------------------------------------------------------------------- + + ; Method to initialise the SD card. + ; +?SD_INIT: LD A,0FFH ; CS to high (inactive) + CALL SPICS + ; + CALL SPIINIT ; Train SD with our clock. + ; + LD A,000H ; CS to low (active) + CALL SPICS + + LD BC,SD_RETRIES ; Number of retries before deciding card is not present. +SD_INIT1: LD A,CMD0 ; Command 0 + LD HL,00000H ; NB. Important, HL should be coded as LH due to little endian and the way it is used in SDCMD. + LD DE,00000H ; NB. Important, DE should be coded as ED due to little endian and the way it is used in SDCMD. + PUSH BC + ; + CALL SDCMD + ; + LD A,(SDBUF+6) ; Get response code. + DEC A ; Set Z flag to test if response is 0x01 + POP BC + JP Z,SD_INIT2 ; Command response 0x01? Exit if match. + + DEC BC + LD A,B + OR C + JR NZ,SD_INIT1 ; Retry for BC times. + LD A,1 + JP SD_EXIT ; Error, card is not responding to CMD0 + +SD_INIT2: ; Now send CMD8 to get card details. This command can only be sent + ; when the card is idle. + LD A,CMD8 ; CMD8 has 0x00001AA as parameter, load up registers and call command routine. + LD HL,00000H ; NB. Important, HL should be coded as LH due to little endian and the way it is used in SDCMD. + LD DE,0AA01H ; NB. Important, DE should be coded as ED due to little endian and the way it is used in SDCMD. + CALL SDCMD + + ; Version 2 card, check its voltage range. IF not in the 2.7-3.6V dont try the ACMD41 to get capabilities. +SD_INIT3: LD A,1 ; Check that we receive 0x0001AA in response. + LD (SDVER),A ; Indicate this is not a version 2 card. + LD A,(SDBUF+9) + CP 1 + JP NZ,SD_INIT8 + LD A,(SDBUF+10) + CP 0AAH + JP NZ,SD_INIT8 + +SD_INIT4: LD A,2 ; This is a version 2 card. +SD_INIT5: LD (SDVER),A ; Indicate this is not a version 2 card. + + CALL SDACMD41 + JR Z,SD_INIT6 + LD A,2 ; Error, card is not responding to ACMD41 + JP SD_EXIT + +SD_INIT6: LD A,CMD58 ; CMD58 has 0x00000000 as parameter, load up registers and call command routine. + LD HL,00000H ; NB. Important, HL should be coded as LH due to little endian and the way it is used in SDCMD. + LD DE,00000H ; NB. Important, DE should be coded as ED due to little endian and the way it is used in SDCMD. + CALL SDCMD + LD A,(SDBUF+6) + CP 040H + LD A,CT_SD2 + JR Z,SD_INIT7 + LD A,CT_SD2 | CT_BLOCK +SD_INIT7: LD (SDCAP),A ; Set the capabilities according to the returned flag. + JR SD_INIT14 + + + ; Version 1 card or MMC v3. +SD_INIT8: CALL SDACMD41 + LD A, CT_SD1 + LD E,ACMD41 ; SD1 cards we use the ACMD41 command. + JR Z,SD_INIT9 + LD A,CT_MMC + LD E,CMD1 ; MMC cards we use the CMD1 command. +SD_INIT9: LD (SDCAP),A + LD A,E + CP ACMD41 + JR NZ,SD_INIT10 + CALL SDACMD41 + JR Z,SD_INIT14 + LD A,3 ; Exit code, failed to initialise v1 card. + JR SD_EXIT + +SD_INIT10: LD BC,10 ; ACMD41/CMD55 may take some cards time to process or respond, so give a large number of retries. +SD_INIT11: PUSH BC + LD A,CMD1 ; CMD1 has 0x00000000 as parameter, load up registers and call command routine. + LD HL,00000H ; NB. Important, HL should be coded as LH due to little endian and the way it is used in SDCMD. + LD DE,00000H ; NB. Important, DE should be coded as ED due to little endian and the way it is used in SDCMD. + CALL SDCMD + LD A,(SDBUF+6) ; Should be a response of 0 whereby the card has left idle. + OR A + JR Z,SD_INIT13 + LD BC,0FFFFH ; Delay for at least 200mS for the card to recover and be ready. +SD_INIT12: DEC BC ; 6T + LD A,B ; 9T + OR C ; 4T + JR NZ,SD_INIT12 ; 12T = 31T x 500ns = 15.5uS x 12903 = 200mS + ; + POP BC + DEC BC + LD A,B + OR C + JR NZ,SD_INIT11 + LD A,4 ; Exit code, failed to initialise v1 MMC card. + JR SD_EXIT + +SD_INIT13: POP BC + LD A,CMD16 ; No response from the card for an ACMD41/CMD1 so try CMD16 with parameter 0x00000200 + LD HL,00000H ; NB. Important, HL should be coded as LH due to little endian and the way it is used in SDCMD. + LD DE,00002H ; NB. Important, DE should be coded as ED due to little endian and the way it is used in SDCMD. + CALL SDCMD + LD A,(SDBUF+6) + OR A + JR Z,SD_INIT14 + LD A,0 + LD (SDCAP),A ; No capabilities on this unknown card. +SD_INIT14: XOR A + JR SD_EXIT +SD_EXIT: OR A ; Return value is in A. + RET + + ; + ; A = CMD to send + ; LHED = Argument, ie. CMD = A, L, H, E, D, CRC + ; +SDCMD: LD (SDBUF),A + LD (SDBUF+1),HL + EX DE,HL + LD (SDBUF+3),HL + ; + ; Send command but with parameters preloaded by caller. +SDCMDNP: LD B,5 ; R1 + 32bit argument for CMD8, CMD58 + CP CMD8 + LD C,135 + JP Z,SDCMD0 + LD C,1 ; CMD58 is not CRC checked so just set to 0x01. + CP CMD58 + LD B,5 ; R1 + 32bit argument + JP Z,SDCMD0 + ; + LD B,1 ; Default, expect R1 which is 1 byte. + CP CMD0 ; Work out the CRC based on the command. CRC checking is + LD C,149 ; not implemented but certain commands require a fixed argument and CRC. + JP Z,SDCMD0 + LD C,1 ; Remaining commands are not CRC checked so just set to 0x01. +SDCMD0: PUSH BC ; Save the CRC and the number of bytes to be returned, + LD A,C ; Store the CRC + LD (SDBUF+5),A + LD A,255 ; Preamble byte + CALL SPIOUT + LD HL,SDBUF + LD B,6 +SDCMD1: PUSH BC + LD A,(HL) + INC HL + CALL SPIOUT ; Send the command and parameters. + POP BC + DJNZ SDCMD1 + PUSH HL + LD HL,SD_RETRIES +SDCMD2: PUSH HL + CALL SPIIN + POP HL + CP 0FFH + JR NZ,SDCMD4 + DEC HL + LD A,H + OR L + JR NZ,SDCMD2 + ; + ; Error as we are not receiving data. + ; + POP HL + POP BC + LD A,1 ; Force return code to be error. + LD (SDBUF+6),A + RET + +SDCMD3: PUSH BC + PUSH HL + CALL SPIIN ; +SDCMD4: POP HL + LD (HL),A + INC HL + POP BC ; Get back number of expected bytes. HL = place in buffer to store response. + DJNZ SDCMD3 + IF HW_SPI_ENA = 0 + LD A,DOUT_HIGH | CLOCK_LOW | CS_HIGH + OUT (SPI_OUT),A + ENDIF + RET + + ; Method to send an Application Command to the SD Card. This involves sending CMD55 followed by the required command. + ; + ; A = ACMD to send + ; LHED = Argument, ie. ACMD = A, L, H, E, D, CRC + ; +SDACMD: PUSH AF + PUSH DE + PUSH HL + LD A,CMD55 ; CMD55 has 0x00000000 as parameter, load up registers and call command routine. + LD HL,00000H ; NB. Important, HL should be coded as LH due to little endian and the way it is used in SDCMD. + LD DE,00000H ; NB. Important, DE should be coded as ED due to little endian and the way it is used in SDCMD. + CALL SDCMD + POP HL + POP DE + LD A,(SDBUF+6) ; Should be a response of 0 or 1. + CP 2 + JR NC,SDACMDE + POP AF + CALL SDCMD +SDACMD0: LD A,(SDBUF+6) ; Should be a response of 0 whereby the card has left idle. + OR A + RET +SDACMDE: POP AF + JR SDACMD0 + + ; Method to send Application Command 41 to the SD card. This command involves retries and delays + ; hence coded seperately. + ; + ; Returns Z set if successful, else NZ. + ; +SDACMD41: LD BC,10 ; ACMD41/CMD55 may take some cards time to process or respond, so give a large number of retries. +SDACMD1: PUSH BC + LD A,ACMD41 ; ACMD41 has 0x40000000 as parameter, load up registers and call command routine. + LD HL,00040H ; NB. Important, HL should be coded as LH due to little endian and the way it is used in SDCMD. + LD DE,00000H ; NB. Important, DE should be coded as ED due to little endian and the way it is used in SDCMD. + CALL SDACMD + JR Z,SDACMD3 ; Should be a response of 0 whereby the card has left idle. + LD BC,12903 ; Delay for at least 200mS for the card to recover and be ready. +SDACMD2: DEC BC ; 6T + LD A,B ; 9T + OR C ; 4T + JR NZ,SDACMD2 ; 12T = 31T x 500ns = 15.5uS x 12903 = 200mS + ; + POP BC + DEC BC + LD A,B + OR C + JR NZ,SDACMD1 + LD A,1 ; Retries exceeded, return error. + OR A + RET +SDACMD3: POP BC ; Success, tidy up stack and exit with Z set. + XOR A + RET + + + + ; Method to initialise communications with the SD card. We basically train it to our clock characteristics. + ; This is important, as is maintaining the same clock for read or write otherwise the card may not respond. +SPIINIT: IF HW_SPI_ENA = 1 + ; Hardware SPI on the RFS v2+ PCB. + LD B,10 + LD A, 0FFH ; We need to send 80 '1's, so preload the data register with all 1's, future transmits dont require this as it self loads with 1's. + LD (HWSPIDATA),A +SPIINIT1: LD (HWSPISTART),A ; Commence transmission of an 8bit byte. Runs 1 8MHz, so 1 byte in 1uS, it takes the Z80 2uS for its quickest instruction at 2MHz clock. + DJNZ SPIINIT1 + RET + + ELSE + + ; Software SPI on the RFS v2+ PCB. + IF SW_SPI_ENA = 1 + + ELSE + + ; Software SPI on the centronics parallel port. + LD B,80 +SPIINIT1: LD A,DOUT_HIGH | CLOCK_HIGH | CS_HIGH ; Output a 1 + OUT (SPI_OUT),A + LD A,DOUT_HIGH | CLOCK_LOW | CS_HIGH ; Output a 1 + OUT (SPI_OUT),A + DJNZ SPIINIT1 + RET + ENDIF + ENDIF + + ; Method to set the Chip Select level on the SD card. The Chip Select is active LOW. + ; + ; A = 0 - Set CS LOW (active) + ; A = 0xFF - Set CS HIGH (active) +SPICS: IF HW_SPI_ENA = 1 + ; Hardware SPI on the RFS v2+ PCB. + OR A + LD A,(ROMCTL) + SET 1,A ; If we are inactivating CS then set CS high and disable clock by setting BBCLK to low. + RES 0,A + JR NZ, SPICS0 + RES 1,A ; If we are activating CS then set CS low and enable clock by setting BBCLK to high. + SET 0,A +SPICS0: LD (BNKCTRL),A + LD (ROMCTL),A + RET + + ELSE + + ; Software SPI on the RFS v2+ PCB. + IF SW_SPI_ENA = 1 + + ELSE + + ; Software SPI on the centronics parallel port. + OR A + LD A,DOUT_HIGH | CLOCK_LOW | CS_LOW ; Set CS Low if parameter = 0 (ie. enable) + JR Z, SPICS0 + LD A,DOUT_HIGH | CLOCK_LOW | CS_HIGH ; Set CS High if parameter != 0 (ie. disable) +SPICS0: OUT (SPI_OUT),A + RET + ENDIF + ENDIF + + ; Method to send a byte to the SD card via the SPI protocol. + ; This method uses the hardware shift registers. + ; + ; Input A = Byte to send. + ; +SPIOUT: IF HW_SPI_ENA = 1 + ; Hardware SPI on the RFS v2+ PCB. + LD (HWSPIDATA),A + LD (HWSPISTART),A + RET + + ELSE + + ; Software SPI on the RFS v2+ PCB. + IF SW_SPI_ENA = 1 + + ELSE + + ; Software SPI on the centronics parallel port. + RLCA ; 65432107 + RLCA ; 54321076 + RLCA ; 43210765 - Adjust so that starting bit is same position as Data line. + LD E,A ; E = Character to send. + LD B,8 ; B = Bit count +SPIOUT0: LD A,E + AND DOUT_MASK ; Data bit to data line, clock and cs low. + RLC E +SPIOUT1: OUT (SPI_OUT),A + OR CLOCK_HIGH ; Clock high + OUT (SPI_OUT),A + AND CLOCK_MASK ; Clock low + OUT (SPI_OUT),A + DJNZ SPIOUT0 ; Perform actions for the full 8 bits. + RET + ENDIF + ENDIF + + ; Method to receive a byte from the SD card via the SPI protocol. + ; This method uses the hardware shift registers. + ; NB. Timing must be very similar in SPIOUT and SPIIN. + ; + ; Output: A = received byte. + ; +SPIIN: IF HW_SPI_ENA = 1 + ; Hardware SPI on the RFS v2+ PCB. + LD (HWSPISTART),A ; Commence transmission to receive back data from the SD card, we just send 1's. + LD A,(HWSPIDATA) ; Get the data byte. + RET + + ELSE + + ; Software SPI on the RFS v2+ PCB. + IF SW_SPI_ENA = 1 + + ELSE + + ; Software SPI on the centronics parallel port. + LD BC,00800H | SPI_OUT ; B = Bit count, C = clock port + LD L,0 ; L = Character being read. + LD D,DOUT_HIGH | CLOCK_LOW | CS_LOW ; Output a 0 + OUT (C),D ; To start ensure clock is low and CS is low. + LD E,DOUT_HIGH | CLOCK_HIGH | CS_LOW ; Output a 0 +SPIIN1: OUT (C),E ; Clock to high. + IN A,(SPI_IN) ; Input the received bit + OUT (C),D ; Clock to low. + SRL A + RL L + DJNZ SPIIN1 ; Perform actions for the full 8 bits. + LD A,L ; return value + RET + ENDIF + ENDIF + ;------------------------------------------------------------------------------- + ; End of SPI SD Controller + ;------------------------------------------------------------------------------- + + + ; A function from the z88dk stdlib, a delay loop with T state accuracy. + ; + ; enter : hl = tstates >= 141 + ; uses : af, bc, hl +T_DELAY: LD BC,-141 + ADD HL,BC + LD BC,-23 +TDELAYLOOP: ADD HL,BC + JR C, TDELAYLOOP + LD A,L + ADD A,15 + JR NC, TDELAYG0 + CP 8 + JR C, TDELAYG1 + OR 0 +TDELAYG0: INC HL +TDELAYG1: RRA + JR C, TDELAYB0 + NOP +TDELAYB0: RRA + JR NC, TDELAYB1 + OR 0 +TDELAYB1: RRA + RET NC + RET + + ; Method to skip over an SD card input stream to arrive at the required bytes, + ; + ; Input: BC = Number of bytes to skip. + ; +SPISKIP: PUSH BC + CALL SPIIN + POP BC + DEC BC + LD A,B + OR C + JR NZ,SPISKIP + RET + + ; Method to convert an LBA value into a physical byte address. This is achieved by multiplying the block x 512. + ; We take the big endian sector value, shift left 9 times then store the result back onto the stack. + ; This is done as follows: <2> <1> <0> => <2> <1> <0> 0 (ie. 8 bit shift): Shift left <0> with carry, shift left <1> shift left <2>, 0 to + ; + ; Input: HL = Stack offset. + ; +LBATOADDR: LD HL,(SDSTARTSEC+1) + LD A,(HL) ; Start ny retrieving bytes as HED0 + INC HL + LD E,(HL) + INC HL + LD D,(HL) + LD L,A + + SLA D ; Shift the long left by 9 to effect a x512 + RL E + RL H + LD BC,(SDSTARTSEC) + LD A,H ; Now save the results as LHED, big endian format as used by the SD Card argument + LD (BC),A + INC BC + LD A,E + LD (BC),A + INC BC + LD A,D + LD (BC),A + INC BC + LD A,0 + LD (BC),A + RET + + + ; Method to read a sector or partial sector contents to an SD Card. + ; + ; This method was originally a C routine I was using for FatFS but optimised it (still more can be done). The C->ASM is not so optimal. + ; + ; Input: Memory variables: SDSTARTSEC= unsigned long sector. - The sector number or direct byte address for older cards. This is big endian as per card. + ; HL: Address where to store data read from sector. + ; Output: A = 0 - All ok. A > 0 - error occurred. + ; +?SD_READ: DI + PUSH HL ; Store the load address. + LD A,000H + CALL SPICS ; Set CS low (active). + + LD HL,(SDCAP) ; Test to see if CT_BLOCK is available. + LD H,0 + LD A,CT_BLOCK + AND L + JP NZ,SD_READ1 ; If it has CT_BLOCK then use sector numbers otherwise multiply up to bytes. + CALL LBATOADDR ; Multiply the sector by 512 for byte addressing on older cards. + +SD_READ1: ; A = ACMD to send + ; LHED = Argument, ie. ACMD = A, L, H, E, D, CRC + LD A,CMD17 ; Send CMD17 to read a sector. + LD (SDBUF),A + LD HL,(SDSTARTSEC) + LD (SDBUF+1),HL + LD HL,(SDSTARTSEC+2) + LD (SDBUF+3),HL + CALL SDCMDNP ; Execute SD Command, parameters already loaded into command buffer. + LD A,(SDBUF+6) ; Fetch result and store. + AND A + JP NZ,SD_READ6 + + LD HL,1000 ; Sit in a tight loop waiting for the data packet arrival (ie. not 0xFF). +SD_READ2: PUSH HL + LD HL,200 + CALL T_DELAY + CALL SPIIN + POP HL + CP 255 + JP NZ,SD_READ3 + DEC HL + LD A,H + OR L + JR NZ,SD_READ2 + +SD_READ3: CP 254 ; Data? If not exit with error code. + JP NZ,SD_READ6 + + LD BC,SD_SECSIZE ; Size of full sector + 2 bytes CRC. + POP HL ; Get the store address into HL. +SD_READ4: PUSH HL ; Start reading bytes into the buffer. + PUSH BC + CALL SPIIN + POP BC + POP HL + LD (HL),A + INC HL ; Update buffer pointer. + DEC BC + LD A,B + OR C + JP NZ,SD_READ4 ; Not zero, keep reading. + + INC BC ; Were not interested in the CRC so skip it. + INC BC + CALL SPISKIP + + LD A,0 ; And exit with success. +SD_READ5: PUSH AF + LD A,0FFH ; Disable CS therefore deselecting the SD Card. + CALL SPICS + POP AF + EI + RET +SD_READ6: POP HL + LD A,1 + JR SD_READ5 + + + ; Method to write a 512byte sector to an SD Card. + ; + ; Input: Memory variables: SDSTARTSEC= unsigned long sector. - The sector number or direct byte address for older cards. This is big endian as per card. + ; HL: Address of buffer to read data from. + ; Output: A = 0 - All ok. A > 0 - error occurred. +?SD_WRITE: PUSH HL + + LD A,000H ; Activate CS (set low). + CALL SPICS + + ; Open transaction. + LD HL,(SDCAP) ; Check to see if the card has block addressing. + LD H,0 + LD A,CT_BLOCK + AND L + JP NZ,SD_WRITE1 ; If it hasnt then we need to multiply up to the correct byte. + CALL LBATOADDR ; Multiply the sector by 512 for byte addressing. + + ; A = ACMD to send + ; LHED = Argument, ie. ACMD = A, L, H, E, D, CRC +SD_WRITE1: LD A,CMD24 ; Send CMD24 to write a sector. + LD (SDBUF),A + LD HL,(SDSTARTSEC) ; Place long endian sector into command buffer. + LD (SDBUF+1),HL + LD HL,(SDSTARTSEC+2) + LD (SDBUF+3),HL + CALL SDCMDNP ; Send command using No Parameters version as we loaded them into the command buffer already. + LD A,(SDBUF+6) ; Fetch result and store. + AND A + JP NZ,SD_WRITE10 + LD A,255 ; Ok, so command sent successfully, mark the write by sending an 0xFF followed by 0xFE + CALL SPIOUT + LD A,254 + CALL SPIOUT + + ; Write buffer. + LD DE,SD_SECSIZE + POP HL ; Address to read data from. +SD_WRITE2: LD A,D ; So long as we have bytes in the buffer, send to the card for writing. + OR E + JP Z,SD_WRITE3 + + PUSH DE + LD A,(HL) ; Get the byte to transmit. + INC HL ; And update the pointer. + CALL SPIOUT ; Transmit value in A. + POP DE + DEC DE + JR SD_WRITE2 + + ; Close transaction. +SD_WRITE3: INC DE ; Add 2 bytes for CRC + INC DE +SD_WRITE4: LD A,D ; Test to see if we are already at zero, ie. all bytes sent. Exit if so. + OR E + JP Z,SD_WRITE5 + DEC DE + PUSH DE + LD A,0 ; Send 0's as padding bytes and CRC. + CALL SPIOUT + POP DE + JP SD_WRITE4 + +SD_WRITE5: CALL SPIIN ; Check received response, if 0x05 which indicates write under way inside SD Card. + AND 01FH + LD L,A + LD H,0 + CP 5 + JP NZ,SD_WRITE11 + + LD HL,10000 ; Now wait for the write to complete allowing 1000mS before timing out. + PUSH HL + JR SD_WRITE7 +SD_WRITE6: DEC HL + PUSH HL + LD HL,200 ; 200T state delay = 200 x 1/2000000 = 100uS + CALL T_DELAY +SD_WRITE7: CALL SPIIN ; Get a byte, if it is not 0xFF then we have our response so exit. + POP HL + CP 255 + JP Z,SD_WRITE8 + LD A,H + OR L + JR NZ,SD_WRITE6 + +SD_WRITE8: LD A,H ; End of timeout? If so we exit with the preset fail code. + OR L + JP Z,SD_WRITE11 + XOR A ; Success code. + +SD_WRITE9: PUSH AF + LD A,0FFH ; Disable SD Card Chip Select to finish. + CALL SPICS + POP AF + RET +SD_WRITE10: POP HL ; Waste the load address. +SD_WRITE11: LD A,1 ; Error exit. + JR SD_WRITE9 + + + + ; Method to multiply a 16bit number by another 16 bit number to arrive at a 32bit result. + ; Input: DE = Factor 1 + ; BC = Factor 2 + ; Output:DEHL = 32bit Product + ; +MULT16X16: LD HL,0 + LD A,16 +MULT16X1: ADD HL,HL + RL E + RL D + JR NC,$+6 + ADD HL,BC + JR NC,$+3 + INC DE + DEC A + JR NZ,MULT16X1 + RET + + ; Method to add a 16bit number to a 32bit number to obtain a 32bit product. + ; Input: DEHL = 32bit Addend + ; BC = 16bit Addend + ; Output:DEHL = 32bit sum. + ; +ADD3216: ADD HL,BC + EX DE,HL + LD BC,0 + ADC HL,BC + EX DE,HL + RET + + ; Method to add two 32bit numbers whilst calculating the SD Start Sector. + ; Input: DEHL = 32bit Addend + ; (SDSTARTSEC) = 32bit Addend + ; Output: (SDSTARTSEC) = 32bit Sum. + ; Output; DEHL = 32bit Sum. + ; +ADD32: LD BC,(SDSTARTSEC+2) + ADD HL,BC + LD (SDSTARTSEC+2),HL + LD BC,(SDSTARTSEC) + EX DE,HL + ADC HL,BC + LD (SDSTARTSEC),HL + EX DE,HL + RET + + ; Method to get the LBA sector from the current CP/M Track and Sector. + ; This method needs to account for the Rom Filing System image and the other CPM disk images on the SD card. + ; + ; Input: (CDISK) = Disk number + ; (HSTTRK) = Track + ; (HSTSEC) = Sector + ; Output: (SDSTARTSEC) = LBA on SD Card for the desired sector. + ; DEHL = LBA on SD Card for the desired sector. + ; +?SD_GETLBA: PUSH AF ; If needed, pass A and flags via the stack. NB This push is removed by BANKTOBANK so no need to pop after the call. + LD A,ROMBANK11 << 4 | ROMBANK10 ; Calling a function in Bank 11 (CBIOS Bank 4) and returning to current bank 10 (CBIOS Bank 3). + LD HL,QGETMAPDSK ; Calling the map disk function. + CALL BANKTOBANK ; Now make a bank to bank function call. + CP 0FFH + JR Z,SDGETLBAX ; This isnt a physical, ROM disk or SD disk, no need to perform any actions, exit. + CP 040H + JR C,SDGETLBAX ; This isnt a ROM disk or an SD disk, no need to perform any actions, exit. + AND 03FH ; Get the SD disk number. + + LD B,0 + LD C,A + LD DE,CPM_SD_IMGSZ / SD_SECSIZE + CALL MULT16X16 + LD (SDSTARTSEC),DE + LD (SDSTARTSEC+2),HL + + ; DEHL contains the offset for the Disk number, ie. 0 for drive 1, CPM IMAGE SIZE for drive 2, 2x CPM IMAGE SIZE for drive 3 etc. + LD B,0 + LD C, SD_SECPTRK ; Number of sectors per track. + LD DE,(HSTTRK) ; For the SD Card we use the full 16bit track number. + CALL MULT16X16 + + ; Add the two. + CALL ADD32 + + ; Add the number of sectors directly to the current sum. + LD A,(HSTSEC) + LD C,A + LD B,0 + CALL ADD3216 + + ; Now add the offset to account for the RFS image. + IF RFS_END_ADDR/SD_SECSIZE < 010000H + LD BC, RFS_END_ADDR/SD_SECSIZE ; Sector offset for the RFS Image. + CALL ADD3216 + ELSE + LD BC,0 ; Padding is to an even address so lower word will always be zero. + ADD HL,BC + EX DE,HL + LD BC,(RFS_END_ADDR/SD_SECSIZE) / 010000H ; Upper word addition. + ADC HL,BC + EX DE,HL + ENDIF + + ; Store the final sum as the start sector. + PUSH HL + LD HL,SDSTARTSEC + LD (HL),D + INC HL + LD (HL),E + INC HL + POP DE + LD (HL),D + INC HL + LD (HL),E + LD HL,(SDSTARTSEC) + OR 1 ; Indicate we successfully mapped the track/sector to an LBA. +SDGETLBAX: RET + + + ; Method to read a sector for CPM using its track/sector addressing. All reads occur in a 512byte sector. + ; + ; Inputs: (HSTTRK) - 16bit track number. + ; (HSTSEK) - 8bit sector number. + ; (CDISK) - Disk drive number. +?SDC_READ: CALL ?SD_GETLBA ; Get the SD card sector in LBA, + LD A,1 + JP Z,SDC_READ1 ; Error in read, exit with stack tidy. + LD HL,HSTBUF ; Address of the host buffer to hold the sector. + CALL ?SD_READ ; Read in the sector. + OR A + JR NZ,SDC_READ1 ; Check for errors and report. + XOR A ; Indicate success. +SDC_READ1: RET + + ; Method to write a sector for CPM using its track/sector addressing. All writes occur in a 512byte sector. + ; + ; Inputs: (HSTTRK) - 16bit track number. + ; (HSTSEK) - 8bit sector number. + ; (CDISK) - Disk drive number. + ; Outputs: A = 1 - Error. + ; A = 0 - Success. +?SDC_WRITE: CALL ?SD_GETLBA ; Get the SD card sector in LBA, + LD A,1 + JP Z,SDC_WRITE1 ; Error in read, exit with stack tidy. + LD HL,HSTBUF ; Setup the location of the buffer to write. + CALL ?SD_WRITE ; Call write to write the buffer into the given sector. + JR NZ,SDC_WRITE1 + XOR A +SDC_WRITE1: RET + + ;------------------------------------------------------------------------------- + ; END OF SD CARD CONTROLLER FUNCTIONALITY + ;------------------------------------------------------------------------------- + + ; Align to end of bank. + ALIGN UROMADDR + 07F8h + ORG UROMADDR + 07F8h + DB 0FFh,0FFh,0FFh,0FFh,0FFh,0FFh,0FFh,0FFh + diff --git a/asm/cbios_bank4.asm b/asm/cbios_bank4.asm new file mode 100644 index 0000000..9af52f9 --- /dev/null +++ b/asm/cbios_bank4.asm @@ -0,0 +1,641 @@ +;-------------------------------------------------------------------------------------------------------- +;- +;- Name: cbios_bank4.asm +;- Created: January 2020 +;- Author(s): Philip Smart +;- Description: Sharp MZ series CPM BIOS System. +;- This assembly language program is written to utilise the banked flashroms added with +;- the MZ-80A RFS hardware upgrade for the CPM CBIOS in order to preserve RAM for actual +;- CPM TPA programs. +;- +;- Credits: +;- Copyright: (c) 2018-23 Philip Smart +;- +;- History: Jan 2020 - Seperated Bank from RFS for dedicated use with CPM CBIOS. +;- May 2020 - Advent of the new RFS PCB v2.0, quite a few changes to accommodate the +;- additional and different hardware. The SPI is now onboard the PCB and +;- not using the printer interface card. +;- Mar 2021 - Updates for the RFS v2.1 board. +;-------------------------------------------------------------------------------------------------------- +;- This source file is free software: you can redistribute it and-or modify +;- it under the terms of the GNU General Public License as published +;- by the Free Software Foundation, either version 3 of the License, or +;- (at your option) any later version. +;- +;- This source file is distributed in the hope that it will be useful, +;- but WITHOUT ANY WARRANTY; without even the implied warranty of +;- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +;- GNU General Public License for more details. +;- +;- You should have received a copy of the GNU General Public License +;- along with this program. If not, see . +;-------------------------------------------------------------------------------------------------------- + + ; Bring in definitions and macros. + INCLUDE "cpm_buildversion.asm" + INCLUDE "cpm_definitions.asm" + INCLUDE "macros.asm" + + ;============================================================ + ; + ; USER ROM CPM CBIOS BANK 4 - Floppy Disk Controller functions. + ; + ;============================================================ + ORG UROMADDR + + ;----------------------------------------------------------------------------------------- + ; Common code spanning all banks to ensure that a Monitor is selected upon power up/reset. + ;----------------------------------------------------------------------------------------- + NOP + LD B,16 ; If we read the bank control reset register 15 times then this will enable bank control and then the 16th read will reset all bank control registers to default. +CBIOS1_0: LD A,(BNKCTRLRST) + DJNZ CBIOS1_0 ; Apply the default number of coded latch reads to enable the bank control registers. + LD A,BNKCTRLDEF ; Set coded latch, SDCS high, BBMOSI to high and BBCLK to high which enables SDCLK. + LD (BNKCTRL),A + NOP + NOP + NOP + XOR A ; We shouldnt arrive here after a reset, if we do, select MROM bank 0 + LD (BNKSELMROM),A + NOP + NOP + NOP + LD (BNKSELUSER),A ; and start up - ie. SA1510 Monitor - this occurs as User Bank 0 is enabled and the jmp to 0 is coded in it. + ; + ; No mans land... this should have switched to Bank 0 and at this point there is a jump to 00000H. + JP 00000H ; This is for safety!! + + + ;------------------------------------------------------------------------------- + ; Jump table for entry into this pages functions. + ;------------------------------------------------------------------------------- + ALIGN_NOPS UROMJMPTBL + JP ?DSKINIT ; DSKINIT + JP ?SETDRVCFG ; SETDRVCFG + JP ?SETDRVMAP ; SETDRVMAP + JP ?SELDRIVE ; SELDRIVE + JP ?GETMAPDSK ; GETMAPDSK + JP ?DSKREAD ; DSKREAD + JP ?DSKWRITE ; DSKWRITE + + + ;------------------------------------------------------------------------------- + ; START OF FDC CONTROLLER FUNCTIONALITY + ;------------------------------------------------------------------------------- + + ;------------------------------------------------------------------------------------------------ + ; Initialise drive and reset flags, Set motor off + ; + ;------------------------------------------------------------------------------------------------ +?DSKINIT: XOR A + OUT (FDC_MOTOR),A ; Motor off + LD (TRK0FD1),A ; Track 0 flag drive 1 + LD (TRK0FD2),A ; Track 0 flag drive 2 + LD (TRK0FD3),A ; Track 0 flag drive 3 + LD (TRK0FD4),A ; Track 0 flag drive 4 + LD (MOTON),A ; Motor on flag + LD (MTROFFTIMER),A ; Clear the down counter for motor off. + LD A,(FDCROMADDR) ; Check to see if the FDC AFI ROM is installed, use this as + OR A ; an indicator that the FDC is present. + RET + + ; Function to create a mapping table between a CPM disk and a physical disk. +?SETDRVMAP: PUSH HL + PUSH DE + PUSH BC + + ; Zero out the map. + LD B,MAXDISKS + LD HL,DISKMAP + LD A,0FFH +SETDRVMAP1: LD (HL),A + INC HL + DJNZ SETDRVMAP1 + LD HL,DISKMAP ; Place in the Map for next drive. + ; Now go through each disk from the Disk Parameter Base list. + LD B,0 ; Disk number count = CDISK. + LD DE,0 ; Physical disk number, D = FDC, E = SDC. +SETDRVMAP2: LD A,B + CP MAXDISKS + JR Z,SETDRVMAP6 + INC B + PUSH HL + PUSH DE + PUSH BC + ; For the Disk in A, find the parameter table. + RLC A ; *2 + RLC A ; *4 + RLC A ; *8 + RLC A ; *16 + LD HL,DPBASE ; Base of disk description block. + LD B,0 + LD C,A + ADD HL,BC ; HL contains address of actual selected disk block. + LD C,10 + ADD HL,BC ; HL contains address of pointer to disk parameter block. + LD E,(HL) + INC HL + LD D,(HL) ; DE contains address of disk parameter block. + EX DE,HL + LD A,(HL) + LD E,A + LD BC,15 + ADD HL,BC ; Move to configuuration byte which identifies the disk type. + ; + POP BC + POP DE + LD A,(HL) + POP HL + + BIT 4,A ; Disk type = FDC? + JR NZ,SETDRVMAP2A + BIT 3,A + JR Z,SETDRVMAP4 ; Is this an FDC controlled disk, if so store the mapping number in the map unchanged. + ; + LD A,E + OR 020H ; This is a RAM drive, add 020H to the mapping number and store. + INC E + JR SETDRVMAP5 + ; +SETDRVMAP2A:BIT 3,A ; Is this an SD Card disk, if so, add 080H to the mapping number and store. + JR Z,SETDRVMAP3 + LD A,E + OR 080H + INC E + JR SETDRVMAP5 +SETDRVMAP3: LD A,E ; This is a ROM drive, add 040H to the mapping number and store. + OR 040H + INC E + JR SETDRVMAP5 + ; +SETDRVMAP4: LD A,D + INC D +SETDRVMAP5: LD (HL),A + INC HL + JR SETDRVMAP2 + ; +SETDRVMAP6: POP BC + POP DE + POP HL + RET + + ; Function to setup the drive parameters according to the CFG byte in the disk parameter block. +?SETDRVCFG: PUSH HL + PUSH DE + PUSH BC + LD A,(CDISK) + RLC A ; *2 + RLC A ; *4 + RLC A ; *8 + RLC A ; *16 + LD HL,DPBASE ; Base of disk description block. + LD B,0 + LD C,A + ADD HL,BC ; HL contains address of actual selected disk block. + LD C,10 + ADD HL,BC ; HL contains address of pointer to disk parameter block. + LD E,(HL) + INC HL + LD D,(HL) ; DE contains address of disk parameter block. + EX DE,HL + LD A,(HL) + LD E,A + + LD BC,15 + ADD HL,BC ; Move to configuuration byte. + XOR A + BIT 2,(HL) + JR Z,SETDRV0 + INC A +SETDRV0: LD (INVFDCDATA),A ; Data inversion is set according to drive parameter. + LD A,4 + BIT 1,(HL) + JR Z,SETDRV1 + LD A,2 + BIT 0,(HL) + JR Z,SETDRV1 + LD A,1 +SETDRV1: LD (SECTORCNT),A ; Set the disk sector size. + LD D,A + CP 4 + LD A,E + JR Z,SETDRV1A + OR A + RR A + LD E,A + LD A,D + CP 2 + LD A,E + JR Z,SETDRV1A + OR A + RR A ; Convert sectors per track from 128 bytes to 256 byte sectors. +SETDRV1A: INC A ; Add 1 to ease comparisons. + LD (SECPERTRK),A ; Only cater for 8bit, ie. 256 sectors. + DEC A + OR A + RR A + INC A ; Add 1 to ease comparisons. + LD (SECPERHEAD),A ; Convert sectors per track to sectors per head. + ; + XOR A ; Disk type = FDC + BIT 4,(HL) + JR NZ,SETDRV1B ; 4 = 1? + BIT 3,(HL) + JR Z,SETDRV2 ; 3 = 0 - FDC + LD A,DSKTYP_RAM + JR SETDRV2 +SETDRV1B: LD A,DSKTYP_ROM ; Disk type = ROMFS + BIT 3,(HL) ; 3 = 0? Thus 1:0 = ROM + JR Z,SETDRV2 + LD A,DSKTYP_SDC ; Disk type = SD Card, ie. 1:1 +SETDRV2: LD (DISKTYPE),A + POP BC + POP DE + POP HL + RET + + ; Method to get the current disk drive mapped to the correct controller. + ; The CPM CDISK is mapped via MAPDISK[CDISK] and the result: + ; Bit 7 = 1 - SD Card drive. + ; Bit 6 = 1 - ROM Drive. + ; BIT 7:6 = 00 - Floppy drive. +?GETMAPDSK: PUSH HL + PUSH BC + LD A,(CDISK) + LD HL,DISKMAP + LD C,A + LD B,0 + ADD HL,BC + LD A,(HL) ; Get the physical number after mapping from the CDISK. + POP BC + POP HL + RET + + ; Select FDC drive (make active) based on value in DISKMAP[CDISK]. +?SELDRIVE: CALL ?GETMAPDSK + CP 020H ; Anything with bit 7:5 set is not an FDC drive. + RET NC ; This isnt a physical floppy disk, no need to perform any actions, exit. + LD (FDCDISK),A + CALL DSKMTRON ; yes, set motor on and wait + LD A,(FDCDISK) ; select drive no + OR 084H + OUT (FDC_MOTOR),A ; Motor on for drive 0-3 + XOR A + LD (FDCCMD),A ; clr latest FDC command byte + LD HL,00000H +SELDRV2: DEC HL + LD A,H + OR L + JP Z,SELDRVERR ; Reset and print message that this is not a valid disk. + IN A,(FDC_STR) ; Status register. + CPL + RLCA + JR C,SELDRV2 ; Wait on Drive Ready Bit (bit 7) + LD A,(FDCDISK) ; Drive number + LD C,A + LD HL,TRK0FD1 ; 1 track 0 flag for each drive + LD B,000H + ADD HL,BC ; Compute related flag 1002/1003/1004/1005 + BIT 0,(HL) + JR NZ,SELDRV3 ; If the drive hasnt been intialised to track 0, intialise and set flag. + CALL DSKSEEKTK0 ; Seek track 0. + SET 0,(HL) ; Set bit 0 of trk 0 flag +SELDRV3: CALL ?SETDRVCFG + RET + + ; Turn disk motor on if not already running. +DSKMTRON: LD A,255 ; Ensure motor is kept running whilst we read/write. + LD (MTROFFTIMER),A + LD A,(MOTON) ; Test to see if motor is on, if it isnt, switch it on. + RRCA + JR NC, DSKMOTORON + RET +DSKMOTORON: PUSH BC + LD A,080H + OUT (FDC_MOTOR),A ; Motor on + LD B,010H ; +DSKMTR2: CALL MTRDELAY ; + DJNZ DSKMTR2 ; Wait until becomes ready. + LD A,001H ; Set motor on flag. + LD (MOTON),A ; + POP BC + RET + +FDCDLY1: PUSH DE + LD DE,00007H + JP MTRDEL2 + +MTRDELAY: PUSH DE + LD DE,01013H +MTRDEL2: DEC DE + LD A,E + OR D + JR NZ,MTRDEL2 + POP DE + RET + +?DSKWRITE: LD A,MAXWRRETRY + LD (RETRIES),A + LD A,(SECTORCNT) + LD B,A + LD A,(HSTSEC) +DSKWRITE0A: DJNZ DSKWRITE0B + JR DSKWRITE1 +DSKWRITE0B: OR A + RL A + JR DSKWRITE0A +DSKWRITE1: INC A + LD (SECTORNO), A ; Convert from Host 512 byte sector into local sector according to paraameter block. + LD HL,(HSTTRK) + LD (TRACKNO),HL + +DSKWRITE2: CALL SETTRKSEC ; Set current track & sector, get load address to HL +DSKWRITE3: CALL SETHEAD ; Set side reg + CALL SEEK ; Command 1b output (seek) + JP NZ,SEEKRETRY ; + CALL OUTTKSEC ; Set track & sector reg + + LD IX, 0F3FEH ; As below. L03FE + LD IY,WRITEDATA ; Write sector from memory. + DI + ; + LD A,0B4H ; Write Sector multipe with Side Compare for side 1. + CALL DISKCMDWAIT + LD D,2 ; Regardless of 4x128, 2x256 or 1x512, we always read 512bytes by the 2x INI instruction with B=256. +STRTDATWR: LD B,0 ; 256 bytes to load. + JP (IX) + +WRITEDATA: OUTI + JP NZ, 0F3FEH ; This is crucial, as the Z80 is running at 2MHz it is not fast enough so needs + ; hardware acceleration in the form of a banked ROM, if disk not ready jumps to IX, if + ; data ready, jumps to IY. + DEC D + JP NZ,0F3FEH ; If we havent read all sectors to form a 512 byte block, go for next sector. + JR DATASTOP + + ; Read disk starting at the first logical sector in param block 1009/100A + ; Continue reading for the given size 100B/100C and store in the location + ; Pointed to by the address stored in the parameter block. 100D/100E +?DSKREAD: LD A,MAXRDRETRY + LD (RETRIES),A + LD A,(SECTORCNT) + LD B,A + LD A,(HSTSEC) +DSKREAD0A: DJNZ DSKREAD0B + JR DSKREAD1 +DSKREAD0B: OR A + RL A + JR DSKREAD0A +DSKREAD1: INC A + LD (SECTORNO), A ; Convert from Host 512 byte sector into local sector according to paraameter block. + LD HL,(HSTTRK) + LD (TRACKNO),HL +DSKREAD2: CALL SETTRKSEC ; Set current track & sector, get load address to HL +DSKREAD3: CALL SETHEAD ; Set side reg + CALL SEEK ; Command 1b output (seek) + JP NZ,SEEKRETRY ; + CALL OUTTKSEC ; Set track & sector reg + LD IX, 0F3FEH ; As below. L03FE + LD IY,READDATA ; Read sector into memory. + DI + ; + LD A,094H ; Read Sector multiple with Side Compare for side 1. + CALL DISKCMDWAIT + LD D,2 ; Regardless of 4x128, 2x256 or 1x512, we always read 512bytes by the 2x INI instruction with B=256. +STRTDATRD: LD B,0 ; 256 bytes to load. + JP (IX) + + ; Get data from disk sector to staging area. +READDATA: INI + JP NZ,0F3FEH ; This is crucial, as the Z80 is running at 2MHz it is not fast enough so needs + ; hardware acceleration in the form of a banked ROM, if disk not ready jumps to IX, if + ; data ready, jumps to IY. + DEC D + JP NZ,0F3FEH ; If we havent read all sectors to form a 512 byte block, go for next sector. + ; + ; +DATASTOP: LD A,0D8H ; Force interrupt command, Immediate interrupt (I3 bit 3=1) of multiple sector read. + CPL + OUT (FDC_CR),A + CALL WAITRDY ; Wait for controller to become ready, acknowledging interrupt. + IN A,(FDC_STR) ; Check for errors. + CPL + AND 0FFH + JR NZ,SEEKRETRY +UPDSECTOR: PUSH HL + LD A,(SECTORCNT) + LD HL,SECTORNO + ADD A,(HL) ; Update sector to account for sectors read. NB. All reads will start at such a position + LD (HL), A ; that a read will not span a track or head. Ensure that disk formats meet an even 512byte format. + POP HL +MOTOROFF: LD A,MTROFFMSECS ; Schedule motor to be turned off. + LD (MTROFFTIMER),A + XOR A ; Successful read, return 0 + EI + RET + +SEEKRETRY: LD B,A ; Preserve the FDC Error byte. + LD A,(RETRIES) + DEC A + LD (RETRIES),A + LD A,B + JP Z,RETRIESERR + CALL DSKSEEKTK0 + LD A, (READOP) + OR A + LD A,(TRACKNO) ; NB. Track number is 16bit, FDC only uses lower 8bit and assumes little endian read. + JP Z, DSKWRITE2 ; Try write again. + JP DSKREAD2 ; Try the read again. + +DISKCMDWAIT:LD (FDCCMD),A + CPL + OUT (FDC_CR),A + CALL WAITBUSY + RET + + ; Send a command to the disk controller. +DSKCMD: LD (FDCCMD),A ; Store latest FDC command. + CPL ; Compliment it (FDC bit value is reversed). + OUT (FDC_CR),A ; Send command to FDC. + CALL WAITRDY ; Wait to become ready. + IN A,(FDC_STR) ; Get status register. + CPL ; Inverse (FDC is reverse bit logic). + RET + + ; Seek to programmed track. +SEEK: LD A,01BH ; Seek command, load head, verify stepping 6ms. + CALL DSKCMD + AND 099H + RET + + ; Set current track & sector, get load address to HL +SETTRKSEC: CALL ?SELDRIVE + LD A,(TRACKNO) ; NB. Track number is 16bit, FDC only uses lower 8bit and assumes little endian read. + LD HL, HSTBUF + RET + + ; Compute side/head. +SETHEAD: CPL ; + OUT (FDC_DR),A ; Output track no for SEEK command. + PUSH HL + LD HL,SECPERHEAD + LD A,(SECTORNO) ; Check sector, if greater than sector per track, change head. + CP (HL) + POP HL + JR NC,SETHD2 ; Yes, even, set side/head 1 + LD A,001H ; No, odd, set side/head 0 + JR SETHD3 + + ; Set side/head register. +SETHD2: XOR A ; Side 0 +SETHD3: CPL ; Side 1 + OUT (FDC_SIDE),A ; Side/head register. + RET + + ; Set track and sector register. +OUTTKSEC: PUSH HL + LD HL,SECPERHEAD + ; + LD C,FDC_DR ; Port for data retrieval in the INI instruction in main block. + LD A,(TRACKNO) ; Current track number, NB. Track number is 16bit, FDC only uses lower 8bit and assumes little endian read. + CPL + OUT (FDC_TR),A ; Track reg + ; + LD A,(SECTORNO) ; Current sector number + CP (HL) + JR C,OUTTKSEC2 + SUB (HL) + INC A ; Account for the +1 added to ease comparisons. +OUTTKSEC2: CPL + OUT (FDC_SCR),A ; Sector reg + POP HL + RET + + ; Seek to track 0. +DSKSEEKTK0: CALL DSKMTRON ; Make sure disk is spinning. + LD A,00BH ; Restore command, seek track 0. + CALL DSKCMD ; Send command to FDC. + AND 085H ; Process result. + XOR 004H + RET Z + JP DSKSEEKERR + + ; Wait for the drive to become ready. +WAITRDY: PUSH DE + PUSH HL + CALL FDCDLY1 + LD E,007H +WAITRDY2: LD HL,00000H +WAITRDY3: DEC HL + LD A,H + OR L + JR Z,WAITRDY4 + IN A,(FDC_STR) + CPL + RRCA + JR C,WAITRDY3 + POP HL + POP DE + RET + +WAITRDY4: DEC E + JR NZ,WAITRDY2 + POP HL + POP DE + JP WAITRDYERR + +WAITBUSY: PUSH DE + PUSH HL + CALL FDCDLY1 + LD E,007H ; 7 Chances of a 16bit down count delay waiting for DRQ. +WAITBUSY2: LD HL,00000H +WAITBUSY3: DEC HL + LD A,H + OR L + JR Z,WAITBUSY4 ; Down counter expired, decrement retries, error on 0. + IN A,(FDC_STR) ; Get the FDC Status + CPL ; Switch to positive logic. + RRCA ; Shift Busy flag into Carry. + JR NC,WAITBUSY3 ; Busy not set, decrement counter and retry. + POP HL + POP DE + RET + +WAITBUSY4: DEC E + JR NZ,WAITBUSY2 + POP HL + POP DE + JP DSKERR + + + ; Error processing. Consists of printing a message followed by debug data (if enabled) and returning with carry set + ; to indicate error. +DSKERR: LD DE,LOADERR ; Loading error message + JR HDLERROR + +SELDRVERR: LD DE,SELDRVMSG ; Select drive error message. + JR HDLERROR + +WAITRDYERR: LD DE,WAITRDYMSG ; Waiting for ready timeout error message. + JR HDLERROR + +DSKSEEKERR: LD DE,DSKSEEKMSG ; Disk seek to track error message. + JR HDLERROR + +RETRIESERR: BIT 2,A ; Data overrun error if 1. + LD DE,DATAOVRMSG + JR NZ, RETRIESERR2 + BIT 3,A ; CRC error if 1. + LD DE,CRCERRMSG + JR NZ,RETRIESERR2 + LD DE,RETRIESMSG ; Data sector read error message. +RETRIESERR2: + + ; Process error, dump debug data and return fail code. +HDLERROR: LD HL,MSGSTRBUF ; Copy the error messae +HOLERR1: LD A,(DE) + LD (HL),A + CP NUL + JR Z,HOLERR2 + INC DE + INC HL + JR HOLERR1 +HOLERR2: LD DE,MSGSTRBUF +HOLPRTSTR: LD A,(DE) + OR A + JR Z,HOLERR3 + INC DE +HOLPRTSTR2: LD HL,QPRNT + PUSH AF + LD A,ROMBANK9 << 4 | ROMBANK11 ; Call CBIOS Bank 2 from CBIOS Bank 4 + CALL BANKTOBANK + JR HOLPRTSTR +HOLERR3: XOR A + CALL ?DSKINIT + CALL DSKMTRON + LD A,001H ; Indicate error by setting 1 in A register. + EI + RET + + ;------------------------------------------------------------------------------- + ; END OF FDC CONTROLLER FUNCTIONALITY + ;------------------------------------------------------------------------------- + + + ;-------------------------------------- + ; + ; Message table + ; + ;-------------------------------------- +LOADERR: DB "DISK ERROR - LOADING", CR, NUL +SELDRVMSG: DB "DISK ERROR - SELECT", CR, NUL +WAITRDYMSG: DB "DISK ERROR - WAIT", CR, NUL +DSKSEEKMSG: DB "DISK ERROR - SEEK", CR, NUL +RETRIESMSG: DB "DISK ERROR - RETRIES", CR, NUL +DATAOVRMSG: DB "DISK ERROR - DATA OVERRUN", CR, NUL +CRCERRMSG: DB "DISK ERROR - CRC ERROR", CR, NUL + + ; Align to end of bank. + ALIGN UROMADDR + 07F8h + ORG UROMADDR + 07F8h + DB 0FFh,0FFh,0FFh,0FFh,0FFh,0FFh,0FFh,0FFh diff --git a/asm/cpm22-bios.asm b/asm/cpm22-bios.asm new file mode 100644 index 0000000..ee74e5a --- /dev/null +++ b/asm/cpm22-bios.asm @@ -0,0 +1,84 @@ +;-------------------------------------------------------------------------------------------------------- +;- +;- Name: cpm22-bios.asm +;- Created: January 2020 +;- Author(s): Philip Smart +;- Description: CPM BIOS for CPM v2.23 on the Sharp MZ80A with the Rom Filing System. +;- Most of the code is stored in the ROM based CBIOS which is part of the +;- Rom Filing System upgrade. Declarations in this file are for tables +;- which need to reside in RAM. +;- +;- Credits: Some of the comments and parts of the deblocking/blocking algorithm come from the +; Z80-MBC2 project, (C) SuperFabius. +;- Copyright: (c) 2020-2023 Philip Smart +;- +;- History: January 2020 - Initial creation. +;- +;-------------------------------------------------------------------------------------------------------- +;- This source file is free software: you can redistribute it and-or modify +;- it under the terms of the GNU General Public License as published +;- by the Free Software Foundation, either version 3 of the License, or +;- (at your option) any later version. +;- +;- This source file is distributed in the hope that it will be useful, +;- but WITHOUT ANY WARRANTY; without even the implied warranty of +;- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +;- GNU General Public License for more details. +;- +;- You should have received a copy of the GNU General Public License +;- along with this program. If not, see . +;-------------------------------------------------------------------------------------------------------- + + ORG CPMBIOS + + ; Boot strap code to setup the machine in order to run CPM and the CBIOS. + ; Previously this used to be in the comment field of the tape header but with the + ; advent of the SDCFS which doesnt store the comment, the bootstrap needs to be relocated. + ; This code will be overwritten with the DP Headers on cold boot. +BOOTLDR: LD B, 0x10 ; Need to read the same location 16 times to enable I/O operations. +BOOTLDR2: LD A, (BNKCTRLRST) + DJNZ BOOTLDR2 + LD A, 0x07 + LD (BNKCTRL), A ; Setup the User ROM Bank default. + LD A, (MEMSW) ; Swap 0000:0FFF to C000:CFFF so lower location uses DRAM. + LD A, 0x02 + LD (BNKSELMROM), A ; Setup the Monitor ROM bank default. + JP CBIOSSTART ; Cold start the CBIOS. + +;------------------------------------------------------------------------------------------------------------ +; DISK PARAMETER HEADER +; +; Disk parameter headers for disk 0 to 3 +; +; +-------+------+------+------+----------+-------+-------+-------+ +; | XLT | 0000 | 0000 | 0000 |DIRBUF | DPB | CSV | ALV | +; +------+------+------+-------+----------+-------+-------+-------+ +; 16B 16B 16B 16B 16B 16B 16B 16B +; +; -XLT Address of the logical-to-physical translation vector, if used for this particular drive, +; or the value 0000H if no sector translation takes place (that is, the physical and +; logical sectornumbers are the same). Disk drives with identical sector skew factors share +; the same translatetables. +; -0000 Scratch pad values for use within the BDOS, initial value is unimportant. +; -DIRBUF Address of a 128-byte scratch pad area for directory operations within BDOS. All DPHs +; address the same scratch pad area. +; -DPB Address of a disk parameter block for this drive. Drives with identical disk characteristics +; address the same disk parameter block. +; -CSV Address of a scratch pad area used for software check for changed disks. This address is +; different for each DPH. +; -ALV Address of a scratch pad area used by the BDOS to keep disk storage allocation information. +; This address is different for each DPH. +;------------------------------------------------------------------------------------------------------------ + ;ALIGN_NOPS DPBASE ; Space for 2xROM, 2xFD, 3xSD or upto 7 drives + ; These entries are created dynamically based on hardware available. + + ; NB. The Disk Parameter Blocks are stored in CBIOS ROM to save RAM space. + +;------------------------------------------------------------------------------------------------------------ +; CPN Disk work areas. +;------------------------------------------------------------------------------------------------------------ + ALIGN_NOPS CDIRBUF ; Memory work areas, just allocate the space. + ALIGN_NOPS CSVALVMEM + ALIGN_NOPS CSVALVEND + ALIGN CBIOSDATA + diff --git a/asm/cpm22.asm b/asm/cpm22.asm new file mode 100644 index 0000000..74032ec --- /dev/null +++ b/asm/cpm22.asm @@ -0,0 +1,3764 @@ +;************************************************************** +;* +;* C P / M version 2 . 2 +;* +;* Reconstructed from memory image on February 27, 1981 +;* +;* by Clark A. Calkins +;* +;************************************************************** + + ; Bring in definitions and macros. + INCLUDE "cpm_buildversion.asm" + INCLUDE "cpm_definitions.asm" + INCLUDE "macros.asm" +; +; Set memory limit here. This is the amount of contigeous +; ram starting from 0000. CP/M will reside at the end of this space. +; + +IOBYTE EQU 3 ;i/o definition byte. +TDRIVE EQU 4 ;current drive name and user number. +ENTRY EQU 5 ;entry point for the cp/m bdos. +TFCB EQU 5CH ;default file control block. +TBUFF EQU 80H ;i/o buffer and command line storage. +TBASE EQU 100H ;transiant program storage area. +; +; Set control character equates. +; +CNTRLC EQU 3 ;control-c +CNTRLE EQU 05H ;control-e +BS EQU 08H ;backspace +;TAB EQU 09H ;tab +;LF EQU 0AH ;line feed +;FF EQU 0CH ;form feed +;CR EQU 0DH ;carriage return +CNTRLP EQU 10H ;control-p +CNTRLR EQU 12H ;control-r +CNTRLS EQU 13H ;control-s +CNTRLU EQU 15H ;control-u +CNTRLX EQU 18H ;control-x +CNTRLZ EQU 1AH ;control-z (end-of-file mark) +DEL EQU 7FH ;rubout + +; CP/M addresses +;CBASE EQU 09C00H +;CCP EQU CBASE ; CP/M System entry +;BDOS EQU CCP + 0806H ; BDOS entry +;BIOS EQU CCP + 01600H ; BIOS entry +CCPLEN EQU CBASE + 7 ; Address of current number of chars into the CCP input buffer +CCPFIRS EQU CBASE + 8 ; Address of the first charater of the CCP input buffer + + + ; + ; Set origin for CP/M + ; + ORG CBASE ; Origin for the Sharp MZ-80A version + ; + JP COMMAND ;execute command processor (ccp). + JP CLEARBUF ;entry to empty input buffer before starting ccp. + +; +; Standard cp/m ccp input buffer. Format is (max length), +; (actual length), (char #1), (char #2), (char #3), etc. +; +INBUFF: DB 127 ;length of input buffer. + DB 0 ;current length of contents. + IF BUILD_80C = 1 + DB "CP/M v2.23 (48K) Copyright(c) 1979 by Digital Research", 00DH, 00AH, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ; 68 chars + ELSE + DB "CP/M v2.23 (c) 1979 by Digital Research", 00DH, 00AH, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ; 68 chars + ENDIF + ;DB "Copyright" + ;DB " 1979 (c) by Digital Research " + DB 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + DB 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + DB 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +INPOINT:DW INBUFF+2 ;input line pointer +NAMEPNT:DW 0 ;input line pointer used for error message. Points to +; ;start of name in error. +; +; Routine to print (A) on the console. All registers used. +; +PRINT: LD E,A ;setup bdos call. + LD C,2 + JP ENTRY +; +; Routine to print (A) on the console and to save (BC). +; +PRINTB: PUSH BC + CALL PRINT + POP BC + RET +; +; Routine to send a carriage return, line feed combination +; to the console. +; +CRLF: LD A,CR + CALL PRINTB + LD A,LF + JP PRINTB +; +; Routine to send one space to the console and save (BC). +; +PRTSPACE: LD A,' ' + JP PRINTB +; +; Routine to print character string pointed to be (BC) on the +; console. It must terminate with a null byte. +; +PLINE: PUSH BC + CALL CRLF + POP HL +PLINE2: LD A,(HL) + OR A + RET Z + INC HL + PUSH HL + CALL PRINT + POP HL + JP PLINE2 +; +; Routine to reset the disk system. +; +RESDSK: LD C,13 + JP ENTRY +; +; Routine to select disk (A). +; +DSKSEL: LD E,A + LD C,14 + JP ENTRY +; +; Routine to call bdos and save the return code. The zero +; flag is set on a return of 0ffh. +; +ENTRY1: CALL ENTRY + LD (RTNCODE),A ;save return code. + INC A ;set zero if 0ffh returned. + RET +; +; Routine to open a file. (DE) must point to the FCB. +; +OPEN: LD C,15 + JP ENTRY1 +; +; Routine to open file at (FCB). +; +OPENFCB:XOR A ;clear the record number byte at fcb+32 + LD (FCB+32),A + LD DE,FCB + JP OPEN +; +; Routine to close a file. (DE) points to FCB. +; +CLOSE: LD C,16 + JP ENTRY1 +; +; Routine to search for the first file with ambigueous name +; (DE). +; +SRCHFST:LD C,17 + JP ENTRY1 +; +; Search for the next ambigeous file name. +; +SRCHNXT:LD C,18 + JP ENTRY1 +; +; Search for file at (FCB). +; +SRCHFCB:LD DE,FCB + JP SRCHFST +; +; Routine to delete a file pointed to by (DE). +; +DELETEFILE: LD C,19 + JP ENTRY +; +; Routine to call the bdos and set the zero flag if a zero +; status is returned. +; +ENTRY2: CALL ENTRY + OR A ;set zero flag if appropriate. + RET +; +; Routine to read the next record from a sequential file. +; (DE) points to the FCB. +; +RDREC: LD C,20 + JP ENTRY2 +; +; Routine to read file at (FCB). +; +READFCB:LD DE,FCB + JP RDREC +; +; Routine to write the next record of a sequential file. +; (DE) points to the FCB. +; +WRTREC: LD C,21 + JP ENTRY2 +; +; Routine to create the file pointed to by (DE). +; +CREATE: LD C,22 + JP ENTRY1 +; +; Routine to rename the file pointed to by (DE). Note that +; the new name starts at (DE+16). +; +RENAM: LD C,23 + JP ENTRY +; +; Get the current user code. +; +GETUSR: LD E,0FFH +; +; Routne to get or set the current user code. +; If (E) is FF then this is a GET, else it is a SET. +; +GETSETUC: LD C,32 + JP ENTRY +; +; Routine to set the current drive byte at (TDRIVE). +; +SETCDRV:CALL GETUSR ;get user number + ADD A,A ;and shift into the upper 4 bits. + ADD A,A + ADD A,A + ADD A,A + LD HL,CDRIVE ;now add in the current drive number. + OR (HL) + LD (TDRIVE),A ;and save. + RET +; +; Move currently active drive down to (TDRIVE). +; +MOVECD: LD A,(CDRIVE) + LD (TDRIVE),A + RET +; +; Routine to convert (A) into upper case ascii. Only letters +; are affected. +; +UPPER: CP 'a' ;check for letters in the range of 'a' to 'z'. + RET C + CP '{' + RET NC + AND 5FH ;convert it if found. + RET +; +; Routine to get a line of input. We must check to see if the +; user is in (BATCH) mode. If so, then read the input from file +; ($$$.SUB). At the end, reset to console input. +; +GETINP: LD A,(BATCH) ;if =0, then use console input. + OR A + JP Z,GETINP1 +; +; Use the submit file ($$$.sub) which is prepared by a +; SUBMIT run. It must be on drive (A) and it will be deleted +; if and error occures (like eof). +; + LD A,(CDRIVE) ;select drive 0 if need be. + OR A + LD A,0 ;always use drive A for submit. + CALL NZ,DSKSEL ;select it if required. + LD DE,BATCHFCB + CALL OPEN ;look for it. + JP Z,GETINP1 ;if not there, use normal input. + LD A,(BATCHFCB+15) ;get last record number+1. + DEC A + LD (BATCHFCB+32),A + LD DE,BATCHFCB + CALL RDREC ;read last record. + JP NZ,GETINP1 ;quit on end of file. +; +; Move this record into input buffer. +; + LD DE,INBUFF+1 + LD HL,TBUFF ;data was read into buffer here. + LD B,128 ;all 128 characters may be used. + CALL HL2DE ;(HL) to (DE), (B) bytes. + LD HL,BATCHFCB+14 + LD (HL),0 ;zero out the 's2' byte. + INC HL ;and decrement the record count. + DEC (HL) + LD DE,BATCHFCB ;close the batch file now. + CALL CLOSE + JP Z,GETINP1 ;quit on an error. + LD A,(CDRIVE) ;re-select previous drive if need be. + OR A + CALL NZ,DSKSEL ;don't do needless selects. +; +; Print line just read on console. +; + LD HL,INBUFF+2 + CALL PLINE2 + CALL CHKCON ;check console, quit on a key. + JP Z,GETINP2 ;jump if no key is pressed. +; +; Terminate the submit job on any keyboard input. Delete this +; file such that it is not re-started and jump to normal keyboard +; input section. +; + CALL DELBATCH ;delete the batch file. + JP CMMND1 ;and restart command input. +; +; Get here for normal keyboard input. Delete the submit file +; incase there was one. +; +GETINP1:CALL DELBATCH ;delete file ($$$.sub). + CALL SETCDRV ;reset active disk. + LD C,10 ;get line from console device. + LD DE,INBUFF + CALL ENTRY + CALL MOVECD ;reset current drive (again). +; +; Convert input line to upper case. +; +GETINP2:LD HL,INBUFF+1 + LD B,(HL) ;(B)=character counter. +GETINP3:INC HL + LD A,B ;end of the line? + OR A + JP Z,GETINP4 + LD A,(HL) ;convert to upper case. + CALL UPPER + LD (HL),A + DEC B ;adjust character count. + JP GETINP3 +GETINP4:LD (HL),A ;add trailing null. + LD HL,INBUFF+2 + LD (INPOINT),HL ;reset input line pointer. + RET +; +; Routine to check the console for a key pressed. The zero +; flag is set is none, else the character is returned in (A). +; +CHKCON: LD C,11 ;check console. + CALL ENTRY + OR A + RET Z ;return if nothing. + LD C,1 ;else get character. + CALL ENTRY + OR A ;clear zero flag and return. + RET +; +; Routine to get the currently active drive number. +; +GETDSK: LD C,25 + JP ENTRY +; +; Set the stabdard dma address. +; +STDDMA: LD DE,TBUFF +; +; Routine to set the dma address to (DE). +; +DMASET: LD C,26 + JP ENTRY +; +; Delete the batch file created by SUBMIT. +; +DELBATCH: LD HL,BATCH ;is batch active? + LD A,(HL) + OR A + RET Z + LD (HL),0 ;yes, de-activate it. + XOR A + CALL DSKSEL ;select drive 0 for sure. + LD DE,BATCHFCB ;and delete this file. + CALL DELETEFILE + LD A,(CDRIVE) ;reset current drive. + JP DSKSEL +; +; Check to two strings at (PATTRN1) and (PATTRN2). They must be +; the same or we halt.... +; +VERIFY: LD DE,PATTRN1 ;these are the serial number bytes. + LD HL,PATTRN2 ;ditto, but how could they be different? + LD B,6 ;6 bytes each. +VERIFY1:LD A,(DE) + CP (HL) + JP NZ,HALTCPM ;jump to halt routine. + INC DE + INC HL + DEC B + JP NZ,VERIFY1 + RET +; +; Print back file name with a '?' to indicate a syntax error. +; +SYNERR: CALL CRLF ;end current line. + LD HL,(NAMEPNT) ;this points to name in error. +SYNERR1:LD A,(HL) ;print it until a space or null is found. + CP ' ' + JP Z,SYNERR2 + OR A + JP Z,SYNERR2 + PUSH HL + CALL PRINT + POP HL + INC HL + JP SYNERR1 +SYNERR2:LD A,'?' ;add trailing '?'. + CALL PRINT + CALL CRLF + CALL DELBATCH ;delete any batch file. + JP CMMND1 ;and restart from console input. +; +; Check character at (DE) for legal command input. Note that the +; zero flag is set if the character is a delimiter. +; +CHECK: LD A,(DE) + OR A + RET Z + CP ' ' ;control characters are not legal here. + JP C,SYNERR + RET Z ;check for valid delimiter. + CP '=' + RET Z + CP '_' + RET Z + CP '.' + RET Z + CP ':' + RET Z + CP 03BH ; ';' + RET Z + CP '<' + RET Z + CP '>' + RET Z + RET +; +; Get the next non-blank character from (DE). +; +NONBLANK: LD A,(DE) + OR A ;string ends with a null. + RET Z + CP ' ' + RET NZ + INC DE + JP NONBLANK +; +; Add (HL)=(HL)+(A) +; +ADDHL: ADD A,L + LD L,A + RET NC ;take care of any carry. + INC H + RET +; +; Convert the first name in (FCB). +; +CONVFST:LD A,0 +; +; Format a file name (convert * to '?', etc.). On return, +; (A)=0 is an unambigeous name was specified. Enter with (A) equal to +; the position within the fcb for the name (either 0 or 16). +; +CONVERT:LD HL,FCB + CALL ADDHL + PUSH HL + PUSH HL + XOR A + LD (CHGDRV),A ;initialize drive change flag. + LD HL,(INPOINT) ;set (HL) as pointer into input line. + EX DE,HL + CALL NONBLANK ;get next non-blank character. + EX DE,HL + LD (NAMEPNT),HL ;save pointer here for any error message. + EX DE,HL + POP HL + LD A,(DE) ;get first character. + OR A + JP Z,CONVRT1 + SBC A,'A'-1 ;might be a drive name, convert to binary. + LD B,A ;and save. + INC DE ;check next character for a ':'. + LD A,(DE) + CP ':' + JP Z,CONVRT2 + DEC DE ;nope, move pointer back to the start of the line. +CONVRT1:LD A,(CDRIVE) + LD (HL),A + JP CONVRT3 +CONVRT2:LD A,B + LD (CHGDRV),A ;set change in drives flag. + LD (HL),B + INC DE +; +; Convert the basic file name. +; +CONVRT3:LD B,08H +CONVRT4:CALL CHECK + JP Z,CONVRT8 + INC HL + CP '*' ;note that an '*' will fill the remaining + JP NZ,CONVRT5 ;field with '?'. + LD (HL),'?' + JP CONVRT6 +CONVRT5:LD (HL),A + INC DE +CONVRT6:DEC B + JP NZ,CONVRT4 +CONVRT7:CALL CHECK ;get next delimiter. + JP Z,GETEXT + INC DE + JP CONVRT7 +CONVRT8:INC HL ;blank fill the file name. + LD (HL),' ' + DEC B + JP NZ,CONVRT8 +; +; Get the extension and convert it. +; +GETEXT: LD B,03H + CP '.' + JP NZ,GETEXT5 + INC DE +GETEXT1:CALL CHECK + JP Z,GETEXT5 + INC HL + CP '*' + JP NZ,GETEXT2 + LD (HL),'?' + JP GETEXT3 +GETEXT2:LD (HL),A + INC DE +GETEXT3:DEC B + JP NZ,GETEXT1 +GETEXT4:CALL CHECK + JP Z,GETEXT6 + INC DE + JP GETEXT4 +GETEXT5:INC HL + LD (HL),' ' + DEC B + JP NZ,GETEXT5 +GETEXT6:LD B,3 +GETEXT7:INC HL + LD (HL),0 + DEC B + JP NZ,GETEXT7 + EX DE,HL + LD (INPOINT),HL ;save input line pointer. + POP HL +; +; Check to see if this is an ambigeous file name specification. +; Set the (A) register to non zero if it is. +; + LD BC,11 ;set name length. +GETEXT8:INC HL + LD A,(HL) + CP '?' ;any question marks? + JP NZ,GETEXT9 + INC B ;count them. +GETEXT9:DEC C + JP NZ,GETEXT8 + LD A,B + OR A + RET +; +; CP/M command table. Note commands can be either 3 or 4 characters long. +; +NUMCMDS EQU 6 ;number of commands +CMDTBL: DB "DIR " + DB "ERA " + DB "TYPE" + DB "SAVE" + DB "REN " + DB "USER" +; +; The following six bytes must agree with those at (PATTRN2) +; or cp/m will HALT. Why? +; +PATTRN1:DB 0,22,0,0,0,0 ;(* serial number bytes *). +; +; Search the command table for a match with what has just +; been entered. If a match is found, then we jump to the +; proper section. Else jump to (UNKNOWN). +; On return, the (C) register is set to the command number +; that matched (or NUMCMDS+1 if no match). +; +SEARCH: LD HL,CMDTBL + LD C,0 +SEARCH1:LD A,C + CP NUMCMDS ;this commands exists. + RET NC + LD DE,FCB+1 ;check this one. + LD B,4 ;max command length. +SEARCH2:LD A,(DE) + CP (HL) + JP NZ,SEARCH3 ;not a match. + INC DE + INC HL + DEC B + JP NZ,SEARCH2 + LD A,(DE) ;allow a 3 character command to match. + CP ' ' + JP NZ,SEARCH4 + LD A,C ;set return register for this command. + RET +SEARCH3:INC HL + DEC B + JP NZ,SEARCH3 +SEARCH4:INC C + JP SEARCH1 +; +; Set the input buffer to empty and then start the command +; processor (ccp). +; +CLEARBUF: XOR A + LD (INBUFF+1),A ;second byte is actual length. +; +;************************************************************** +;* +;* +;* C C P - C o n s o l e C o m m a n d P r o c e s s o r +;* +;************************************************************** +;* +COMMAND:LD SP,CCPSTACK ;setup stack area. + PUSH BC ;note that (C) should be equal to: + LD A,C ;(uuuudddd) where 'uuuu' is the user number + RRA ;and 'dddd' is the drive number. + RRA + RRA + RRA + AND 0FH ;isolate the user number. + LD E,A + CALL GETSETUC ;and set it. + CALL RESDSK ;reset the disk system. + LD (BATCH),A ;clear batch mode flag. + POP BC + LD A,C + AND 0FH ;isolate the drive number. + LD (CDRIVE),A ;and save. + CALL DSKSEL ;...and select. + LD A,(INBUFF+1) + OR A ;anything in input buffer already? + JP NZ,CMMND2 ;yes, we just process it. +; +; Entry point to get a command line from the console. +; +CMMND1: LD SP,CCPSTACK ;set stack straight. + CALL CRLF ;start a new line on the screen. + CALL GETDSK ;get current drive. + ADD A,'A' + CALL PRINT ;print current drive. + LD A,'>' + CALL PRINT ;and add prompt. + CALL GETINP ;get line from user. +; +; Process command line here. +; +CMMND2: LD DE,TBUFF + CALL DMASET ;set standard dma address. + CALL GETDSK + LD (CDRIVE),A ;set current drive. + CALL CONVFST ;convert name typed in. + CALL NZ,SYNERR ;wild cards are not allowed. + LD A,(CHGDRV) ;if a change in drives was indicated, + OR A ;then treat this as an unknown command + JP NZ,UNKNOWN ;which gets executed. + CALL SEARCH ;else search command table for a match. +; +; Note that an unknown command returns +; with (A) pointing to the last address +; in our table which is (UNKNOWN). +; + LD HL,CMDADR ;now, look thru our address table for command (A). + LD E,A ;set (DE) to command number. + LD D,0 + ADD HL,DE + ADD HL,DE ;(HL)=(CMDADR)+2*(command number). + LD A,(HL) ;now pick out this address. + INC HL + LD H,(HL) + LD L,A + JP (HL) ;now execute it. +; +; CP/M command address table. +; +CMDADR: DW DIRECT,ERASE,TYPE,SAVE + DW RENAME,USER,UNKNOWN +; +; Halt the system. Reason for this is unknown at present. +; +HALTCPM: LD HL,76F3H ;'DI HLT' instructions. + LD (CBASE),HL + LD HL,CBASE + JP (HL) +; +; Read error while TYPEing a file. +; +RDERROR:LD BC,RDERR + JP PLINE +RDERR: DB "Read error" + DB 0 +; +; Required file was not located. +; +NONE: LD BC,NOFILE + JP PLINE +NOFILE: DB "No file" + DB 0 +; +; Decode a command of the form 'A>filename number{ filename}. +; Note that a drive specifier is not allowed on the first file +; name. On return, the number is in register (A). Any error +; causes 'filename?' to be printed and the command is aborted. +; +DECODE: CALL CONVFST ;convert filename. + LD A,(CHGDRV) ;do not allow a drive to be specified. + OR A + JP NZ,SYNERR + LD HL,FCB+1 ;convert number now. + LD BC,11 ;(B)=sum register, (C)=max digit count. +DECODE1:LD A,(HL) + CP ' ' ;a space terminates the numeral. + JP Z,DECODE3 + INC HL + SUB '0' ;make binary from ascii. + CP 10 ;legal digit? + JP NC,SYNERR + LD D,A ;yes, save it in (D). + LD A,B ;compute (B)=(B)*10 and check for overflow. + AND 0E0H + JP NZ,SYNERR + LD A,B + RLCA + RLCA + RLCA ;(A)=(B)*8 + ADD A,B ;.......*9 + JP C,SYNERR + ADD A,B ;.......*10 + JP C,SYNERR + ADD A,D ;add in new digit now. +DECODE2:JP C,SYNERR + LD B,A ;and save result. + DEC C ;only look at 11 digits. + JP NZ,DECODE1 + RET +DECODE3:LD A,(HL) ;spaces must follow (why?). + CP ' ' + JP NZ,SYNERR + INC HL +DECODE4:DEC C + JP NZ,DECODE3 + LD A,B ;set (A)=the numeric value entered. + RET +; +; Move 3 bytes from (HL) to (DE). Note that there is only +; one reference to this at (A2D5h). +; +MOVE3: LD B,3 +; +; Move (B) bytes from (HL) to (DE). +; +HL2DE: LD A,(HL) + LD (DE),A + INC HL + INC DE + DEC B + JP NZ,HL2DE + RET +; +; Compute (HL)=(TBUFF)+(A)+(C) and get the byte that's here. +; +EXTRACT:LD HL,TBUFF + ADD A,C + CALL ADDHL + LD A,(HL) + RET +; +; Check drive specified. If it means a change, then the new +; drive will be selected. In any case, the drive byte of the +; fcb will be set to null (means use current drive). +; +DSELECT:XOR A ;null out first byte of fcb. + LD (FCB),A + LD A,(CHGDRV) ;a drive change indicated? + OR A + RET Z + DEC A ;yes, is it the same as the current drive? + LD HL,CDRIVE + CP (HL) + RET Z + JP DSKSEL ;no. Select it then. +; +; Check the drive selection and reset it to the previous +; drive if it was changed for the preceeding command. +; +RESETDR:LD A,(CHGDRV) ;drive change indicated? + OR A + RET Z + DEC A ;yes, was it a different drive? + LD HL,CDRIVE + CP (HL) + RET Z + LD A,(CDRIVE) ;yes, re-select our old drive. + JP DSKSEL +; +;************************************************************** +;* +;* D I R E C T O R Y C O M M A N D +;* +;************************************************************** +; +DIRECT: CALL CONVFST ;convert file name. + CALL DSELECT ;select indicated drive. + LD HL,FCB+1 ;was any file indicated? + LD A,(HL) + CP ' ' + JP NZ,DIRECT2 + LD B,11 ;no. Fill field with '?' - same as *.*. +DIRECT1:LD (HL),'?' + INC HL + DEC B + JP NZ,DIRECT1 +DIRECT2:LD E,0 ;set initial cursor position. + PUSH DE + CALL SRCHFCB ;get first file name. + CALL Z,NONE ;none found at all? +DIRECT3:JP Z,DIRECT9 ;terminate if no more names. + LD A,(RTNCODE) ;get file's position in segment (0-3). + RRCA + RRCA + RRCA + AND 60H ;(A)=position*32 + LD C,A + LD A,10 + CALL EXTRACT ;extract the tenth entry in fcb. + RLA ;check system file status bit. + JP C,DIRECT8 ;we don't list them. + POP DE + LD A,E ;bump name count. + INC E + PUSH DE + IF BUILD_80C = 1 + AND 03H ;at end of line? + ELSE + AND 01H ;at end of line? + ENDIF + PUSH AF + JP NZ,DIRECT4 + CALL CRLF ;yes, end this line and start another. + PUSH BC + CALL GETDSK ;start line with ('A:'). + POP BC + ADD A,'A' + CALL PRINTB + LD A,':' + CALL PRINTB + JP DIRECT5 +DIRECT4:CALL PRTSPACE ;add seperator between file names. + LD A,':' + CALL PRINTB +DIRECT5:CALL PRTSPACE + LD B,1 ;'extract' each file name character at a time. +DIRECT6:LD A,B + CALL EXTRACT + AND 7FH ;strip bit 7 (status bit). + CP ' ' ;are we at the end of the name? + JP NZ,DRECT65 + POP AF ;yes, don't print spaces at the end of a line. + PUSH AF + CP 3 + JP NZ,DRECT63 + LD A,9 ;first check for no extension. + CALL EXTRACT + AND 7FH + CP ' ' + JP Z,DIRECT7 ;don't print spaces. +DRECT63:LD A,' ' ;else print them. +DRECT65:CALL PRINTB + INC B ;bump to next character psoition. + LD A,B + CP 12 ;end of the name? + JP NC,DIRECT7 + CP 9 ;nope, starting extension? + JP NZ,DIRECT6 + CALL PRTSPACE ;yes, add seperating space. + JP DIRECT6 +DIRECT7:POP AF ;get the next file name. +DIRECT8:CALL CHKCON ;first check console, quit on anything. + JP NZ,DIRECT9 + CALL SRCHNXT ;get next name. + JP DIRECT3 ;and continue with our list. +DIRECT9:POP DE ;restore the stack and return to command level. + JP GETBACK +; +;************************************************************** +;* +;* E R A S E C O M M A N D +;* +;************************************************************** +; +ERASE: CALL CONVFST ;convert file name. + CP 11 ;was '*.*' entered? + JP NZ,ERASE1 + LD BC,YESNO ;yes, ask for confirmation. + CALL PLINE + CALL GETINP + LD HL,INBUFF+1 + DEC (HL) ;must be exactly 'y'. + JP NZ,CMMND1 + INC HL + LD A,(HL) + CP 'Y' + JP NZ,CMMND1 + INC HL + LD (INPOINT),HL ;save input line pointer. +ERASE1: CALL DSELECT ;select desired disk. + LD DE,FCB + CALL DELETEFILE ;delete the file. + INC A + CALL Z,NONE ;not there? + JP GETBACK ;return to command level now. +YESNO: DB "All (y/n)?" + DB 0 +; +;************************************************************** +;* +;* T Y P E C O M M A N D +;* +;************************************************************** +; +TYPE: CALL CONVFST ;convert file name. + JP NZ,SYNERR ;wild cards not allowed. + CALL DSELECT ;select indicated drive. + CALL OPENFCB ;open the file. + JP Z,TYPE5 ;not there? + CALL CRLF ;ok, start a new line on the screen. + LD HL,NBYTES ;initialize byte counter. + LD (HL),0FFH ;set to read first sector. +TYPE1: LD HL,NBYTES +TYPE2: LD A,(HL) ;have we written the entire sector? + CP 128 + JP C,TYPE3 + PUSH HL ;yes, read in the next one. + CALL READFCB + POP HL + JP NZ,TYPE4 ;end or error? + XOR A ;ok, clear byte counter. + LD (HL),A +TYPE3: INC (HL) ;count this byte. + LD HL,TBUFF ;and get the (A)th one from the buffer (TBUFF). + CALL ADDHL + LD A,(HL) + CP CNTRLZ ;end of file mark? + JP Z,GETBACK + CALL PRINT ;no, print it. + CALL CHKCON ;check console, quit if anything ready. + JP NZ,GETBACK + JP TYPE1 +; +; Get here on an end of file or read error. +; +TYPE4: DEC A ;read error? + JP Z,GETBACK + CALL RDERROR ;yes, print message. +TYPE5: CALL RESETDR ;and reset proper drive + JP SYNERR ;now print file name with problem. +; +;************************************************************** +;* +;* S A V E C O M M A N D +;* +;************************************************************** +; +SAVE: CALL DECODE ;get numeric number that follows SAVE. + PUSH AF ;save number of pages to write. + CALL CONVFST ;convert file name. + JP NZ,SYNERR ;wild cards not allowed. + CALL DSELECT ;select specified drive. + LD DE,FCB ;now delete this file. + PUSH DE + CALL DELETEFILE + POP DE + CALL CREATE ;and create it again. + JP Z,SAVE3 ;can't create? + XOR A ;clear record number byte. + LD (FCB+32),A + POP AF ;convert pages to sectors. + LD L,A + LD H,0 + ADD HL,HL ;(HL)=number of sectors to write. + LD DE,TBASE ;and we start from here. +SAVE1: LD A,H ;done yet? + OR L + JP Z,SAVE2 + DEC HL ;nope, count this and compute the start + PUSH HL ;of the next 128 byte sector. + LD HL,128 + ADD HL,DE + PUSH HL ;save it and set the transfer address. + CALL DMASET + LD DE,FCB ;write out this sector now. + CALL WRTREC + POP DE ;reset (DE) to the start of the last sector. + POP HL ;restore sector count. + JP NZ,SAVE3 ;write error? + JP SAVE1 +; +; Get here after writing all of the file. +; +SAVE2: LD DE,FCB ;now close the file. + CALL CLOSE + INC A ;did it close ok? + JP NZ,SAVE4 +; +; Print out error message (no space). +; +SAVE3: LD BC,NOSPACE + CALL PLINE +SAVE4: CALL STDDMA ;reset the standard dma address. + JP GETBACK +NOSPACE:DB "No space" + DB 0 +; +;************************************************************** +;* +;* R E N A M E C O M M A N D +;* +;************************************************************** +; +RENAME: CALL CONVFST ;convert first file name. + JP NZ,SYNERR ;wild cards not allowed. + LD A,(CHGDRV) ;remember any change in drives specified. + PUSH AF + CALL DSELECT ;and select this drive. + CALL SRCHFCB ;is this file present? + JP NZ,RENAME6 ;yes, print error message. + LD HL,FCB ;yes, move this name into second slot. + LD DE,FCB+16 + LD B,16 + CALL HL2DE + LD HL,(INPOINT) ;get input pointer. + EX DE,HL + CALL NONBLANK ;get next non blank character. + CP '=' ;only allow an '=' or '_' seperator. + JP Z,RENAME1 + CP '_' + JP NZ,RENAME5 +RENAME1:EX DE,HL + INC HL ;ok, skip seperator. + LD (INPOINT),HL ;save input line pointer. + CALL CONVFST ;convert this second file name now. + JP NZ,RENAME5 ;again, no wild cards. + POP AF ;if a drive was specified, then it + LD B,A ;must be the same as before. + LD HL,CHGDRV + LD A,(HL) + OR A + JP Z,RENAME2 + CP B + LD (HL),B + JP NZ,RENAME5 ;they were different, error. +RENAME2:LD (HL),B ; reset as per the first file specification. + XOR A + LD (FCB),A ;clear the drive byte of the fcb. +RENAME3:CALL SRCHFCB ;and go look for second file. + JP Z,RENAME4 ;doesn't exist? + LD DE,FCB + CALL RENAM ;ok, rename the file. + JP GETBACK +; +; Process rename errors here. +; +RENAME4:CALL NONE ;file not there. + JP GETBACK +RENAME5:CALL RESETDR ;bad command format. + JP SYNERR +RENAME6:LD BC,EXISTS ;destination file already exists. + CALL PLINE + JP GETBACK +EXISTS: DB "File exists" + DB 0 +; +;************************************************************** +;* +;* U S E R C O M M A N D +;* +;************************************************************** +; +USER: CALL DECODE ;get numeric value following command. + CP 16 ;legal user number? + JP NC,SYNERR + LD E,A ;yes but is there anything else? + LD A,(FCB+1) + CP ' ' + JP Z,SYNERR ;yes, that is not allowed. + CALL GETSETUC ;ok, set user code. + JP GETBACK1 +; +;************************************************************** +;* +;* T R A N S I A N T P R O G R A M C O M M A N D +;* +;************************************************************** +; +UNKNOWN:CALL VERIFY ;check for valid system (why?). + LD A,(FCB+1) ;anything to execute? + CP ' ' + JP NZ,UNKWN1 + LD A,(CHGDRV) ;nope, only a drive change? + OR A + JP Z,GETBACK1 ;neither??? + DEC A + LD (CDRIVE),A ;ok, store new drive. + CALL MOVECD ;set (TDRIVE) also. + CALL DSKSEL ;and select this drive. + JP GETBACK1 ;then return. +; +; Here a file name was typed. Prepare to execute it. +; +UNKWN1: LD DE,FCB+9 ;an extension specified? + LD A,(DE) + CP ' ' + JP NZ,SYNERR ;yes, not allowed. +UNKWN2: PUSH DE + CALL DSELECT ;select specified drive. + POP DE + LD HL,COMFILE ;set the extension to 'COM'. + CALL MOVE3 + CALL OPENFCB ;and open this file. + JP Z,UNKWN9 ;not present? +; +; Load in the program. +; + LD HL,TBASE ;store the program starting here. +UNKWN3: PUSH HL + EX DE,HL + CALL DMASET ;set transfer address. + LD DE,FCB ;and read the next record. + CALL RDREC + JP NZ,UNKWN4 ;end of file or read error? + POP HL ;nope, bump pointer for next sector. + LD DE,128 + ADD HL,DE + LD DE,CBASE ;enough room for the whole file? + LD A,L + SUB E + LD A,H + SBC A,D + JP NC,UNKWN0 ;no, it can't fit. + JP UNKWN3 +; +; Get here after finished reading. +; +UNKWN4: POP HL + DEC A ;normal end of file? + JP NZ,UNKWN0 + CALL RESETDR ;yes, reset previous drive. + CALL CONVFST ;convert the first file name that follows + LD HL,CHGDRV ;command name. + PUSH HL + LD A,(HL) ;set drive code in default fcb. + LD (FCB),A + LD A,16 ;put second name 16 bytes later. + CALL CONVERT ;convert second file name. + POP HL + LD A,(HL) ;and set the drive for this second file. + LD (FCB+16),A + XOR A ;clear record byte in fcb. + LD (FCB+32),A + LD DE,TFCB ;move it into place at(005Ch). + LD HL,FCB + LD B,33 + CALL HL2DE + LD HL,INBUFF+2 ;now move the remainder of the input +UNKWN5: LD A,(HL) ;line down to (0080h). Look for a non blank. + OR A ;or a null. + JP Z,UNKWN6 + CP ' ' + JP Z,UNKWN6 + INC HL + JP UNKWN5 +; +; Do the line move now. It ends in a null byte. +; +UNKWN6: LD B,0 ;keep a character count. + LD DE,TBUFF+1 ;data gets put here. +UNKWN7: LD A,(HL) ;move it now. + LD (DE),A + OR A + JP Z,UNKWN8 + INC B + INC HL + INC DE + JP UNKWN7 +UNKWN8: LD A,B ;now store the character count. + LD (TBUFF),A + CALL CRLF ;clean up the screen. + CALL STDDMA ;set standard transfer address. + CALL SETCDRV ;reset current drive. + CALL TBASE ;and execute the program. +; +; Transiant programs return here (or reboot). +; + LD SP,BATCH ;set stack first off. + CALL MOVECD ;move current drive into place (TDRIVE). + CALL DSKSEL ;and reselect it. + JP CMMND1 ;back to comand mode. +; +; Get here if some error occured. +; +UNKWN9: CALL RESETDR ;inproper format. + JP SYNERR +UNKWN0: LD BC,BADLOAD ;read error or won't fit. + CALL PLINE + JP GETBACK +BADLOAD:DB "Bad load" + DB 0 +COMFILE:DB "COM" ;command file extension. +; +; Get here to return to command level. We will reset the +; previous active drive and then either return to command +; level directly or print error message and then return. +; +GETBACK:CALL RESETDR ;reset previous drive. +GETBACK1: CALL CONVFST ;convert first name in (FCB). + LD A,(FCB+1) ;if this was just a drive change request, + SUB ' ' ;make sure it was valid. + LD HL,CHGDRV + OR (HL) + JP NZ,SYNERR + JP CMMND1 ;ok, return to command level. +; +; ccp stack area. +; + DB 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +CCPSTACK EQU $ ;end of ccp stack area. +; +; Batch (or SUBMIT) processing information storage. +; +BATCH: DB 0 ;batch mode flag (0=not active). +BATCHFCB: DB 0 + DB "$$$ SUB" + DB 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +; +; File control block setup by the CCP. +; +FCB: DB 0 + DB " " + DB 0,0,0,0,0 + DB " " + DB 0,0,0,0,0 +RTNCODE:DB 0 ;status returned from bdos call. +CDRIVE: DB 0 ;currently active drive. +CHGDRV: DB 0 ;change in drives flag (0=no change). +NBYTES: DW 0 ;byte counter used by TYPE. +; +; Room for expansion? +; + DB 0,0,0,0,0,0,0,0,0,0,0,0,0 +; +; Note that the following six bytes must match those at +; (PATTRN1) or cp/m will HALT. Why? +; +PATTRN2:DB 0,22,0,0,0,0 ;(* serial number bytes *). +; +;************************************************************** +;* +;* B D O S E N T R Y +;* +;************************************************************** +; +FBASE: JP FBASE1 +; +; Bdos error table. +; +BADSCTR:DW ERROR1 ;bad sector on read or write. +BADSLCT:DW ERROR2 ;bad disk select. +RODISK: DW ERROR3 ;disk is read only. +ROFILE: DW ERROR4 ;file is read only. +; +; Entry into bdos. (DE) or (E) are the parameters passed. The +; function number desired is in register (C). +; +FBASE1: + EX DE,HL ;save the (DE) parameters. + LD (PARAMS),HL + EX DE,HL + LD A,E ;and save register (E) in particular. + LD (EPARAM),A + LD HL,0 + LD (STATUS),HL ;clear return status. + ADD HL,SP + LD (USRSTACK),HL ;save users stack pointer. + LD SP,STKAREA ;and set our own. + XOR A ;clear auto select storage space. + LD (AUTOFLAG),A + LD (AUTO),A + LD HL,GOBACK ;set return address. + PUSH HL + LD A,C ;get function number. + CP NFUNCTS ;valid function number? + RET NC + LD C,E ;keep single register function here. + LD HL,FUNCTNS ;now look thru the function table. + LD E,A + LD D,0 ;(DE)=function number. + ADD HL,DE + ADD HL,DE ;(HL)=(start of table)+2*(function number). + LD E,(HL) + INC HL + LD D,(HL) ;now (DE)=address for this function. + LD HL,(PARAMS) ;retrieve parameters. + EX DE,HL ;now (DE) has the original parameters. + JP (HL) ;execute desired function. +; +; BDOS function jump table. +; +NFUNCTS EQU 41 ;number of functions in followin table. +; +FUNCTNS:DW WBOOT,GETCON,OUTCON,GETRDR,PUNCH,LIST,DIRCIO,GETIOB + DW SETIOB,PRTSTR,RDBUFF,GETCSTS,GETVER,RSTDSK,SETDSK,OPENFIL + DW CLOSEFIL,GETFST,GETNXT,DELFILE,READSEQ,WRTSEQ,FCREATE + DW RENFILE,GETLOG,GETCRNT,PUTDMA,GETALOC,WRTPRTD,GETROV,SETATTR + DW GETPARM,GETUSER,RDRANDOM,WTRANDOM,FILESIZE,SETRAN,LOGOFF,RTN + DW RTN,WTSPECL +; +; Bdos error message section. +; +ERROR1: LD HL,BADSEC ;bad sector message. + CALL PRTERR ;print it and get a 1 char responce. + CP CNTRLC ;re-boot request (control-c)? + JP Z,0 ;yes. + RET ;no, return to retry i/o function. +; +ERROR2: LD HL,BADSEL ;bad drive selected. + JP ERROR5 +; +ERROR3: LD HL,DISKRO ;disk is read only. + JP ERROR5 +; +ERROR4: LD HL,FILERO ;file is read only. +; +ERROR5: CALL PRTERR + JP 0 ;always reboot on these errors. +; +BDOSERR:DB "Bdos Err On " +BDOSDRV:DB " : $" +BADSEC: DB "Bad Sector$" +BADSEL: DB "Select$" +FILERO: DB "File " +DISKRO: DB "R/O$" +; +; Print bdos error message. +; +PRTERR: PUSH HL ;save second message pointer. + CALL OUTCRLF ;send (cr)(lf). + LD A,(ACTIVE) ;get active drive. + ADD A,'A' ;make ascii. + LD (BDOSDRV),A ;and put in message. + LD BC,BDOSERR ;and print it. + CALL PRTMESG + POP BC ;print second message line now. + CALL PRTMESG +; +; Get an input character. We will check our 1 character +; buffer first. This may be set by the console status routine. +; +GETCHAR:LD HL,CHARBUF ;check character buffer. + LD A,(HL) ;anything present already? + LD (HL),0 ;...either case clear it. + OR A + RET NZ ;yes, use it. + JP CONIN ;nope, go get a character responce. +; +; Input and echo a character. +; +GETECHO:CALL GETCHAR ;input a character. + CALL CHKCHAR ;carriage control? + RET C ;no, a regular control char so don't echo. + PUSH AF ;ok, save character now. + LD C,A + CALL OUTCON ;and echo it. + POP AF ;get character and return. + RET +; +; Check character in (A). Set the zero flag on a carriage +; control character and the carry flag on any other control +; character. +; +CHKCHAR:CP CR ;check for carriage return, line feed, backspace, + RET Z ;or a tab. + CP LF + RET Z + CP TAB + RET Z + CP BS + RET Z + CP ' ' ;other control char? Set carry flag. + RET +; +; Check the console during output. Halt on a control-s, then +; reboot on a control-c. If anything else is ready, clear the +; zero flag and return (the calling routine may want to do +; something). +; +CKCONSOL: LD A,(CHARBUF) ;check buffer. + OR A ;if anything, just return without checking. + JP NZ,CKCON2 + CALL CONST ;nothing in buffer. Check console. + AND 01H ;look at bit 0. + RET Z ;return if nothing. + CALL CONIN ;ok, get it. + CP CNTRLS ;if not control-s, return with zero cleared. + JP NZ,CKCON1 + CALL CONIN ;halt processing until another char + CP CNTRLC ;is typed. Control-c? + JP Z,0 ;yes, reboot now. + XOR A ;no, just pretend nothing was ever ready. + RET +CKCON1: LD (CHARBUF),A ;save character in buffer for later processing. +CKCON2: LD A,1 ;set (A) to non zero to mean something is ready. + RET +; +; Output (C) to the screen. If the printer flip-flop flag +; is set, we will send character to printer also. The console +; will be checked in the process. +; +OUTCHAR:LD A,(OUTFLAG) ;check output flag. + OR A ;anything and we won't generate output. + JP NZ,OUTCHR1 + PUSH BC + CALL CKCONSOL ;check console (we don't care whats there). + POP BC + PUSH BC + CALL CONOUT ;output (C) to the screen. + POP BC + PUSH BC + LD A,(PRTFLAG) ;check printer flip-flop flag. + OR A + CALL NZ,LIST ;print it also if non-zero. + POP BC +OUTCHR1:LD A,C ;update cursors position. + LD HL,CURPOS + CP DEL ;rubouts don't do anything here. + RET Z + INC (HL) ;bump line pointer. + CP ' ' ;and return if a normal character. + RET NC + DEC (HL) ;restore and check for the start of the line. + LD A,(HL) + OR A + RET Z ;ingnore control characters at the start of the line. + LD A,C + CP BS ;is it a backspace? + JP NZ,OUTCHR2 + DEC (HL) ;yes, backup pointer. + RET +OUTCHR2:CP LF ;is it a line feed? + RET NZ ;ignore anything else. + LD (HL),0 ;reset pointer to start of line. + RET +; +; Output (A) to the screen. If it is a control character +; (other than carriage control), use ^x format. +; +SHOWIT: LD A,C + CALL CHKCHAR ;check character. + JP NC,OUTCON ;not a control, use normal output. + PUSH AF + LD C,'^' ;for a control character, preceed it with '^'. + CALL OUTCHAR + POP AF + OR '@' ;and then use the letter equivelant. + LD C,A +; +; Function to output (C) to the console device and expand tabs +; if necessary. +; +OUTCON: LD A,C + CP TAB ;is it a tab? + JP NZ,OUTCHAR ;use regular output. +OUTCON1:LD C,' ' ;yes it is, use spaces instead. + CALL OUTCHAR + LD A,(CURPOS) ;go until the cursor is at a multiple of 8 + + AND 07H ;position. + JP NZ,OUTCON1 + RET +; +; Echo a backspace character. Erase the prevoius character +; on the screen. +; +BACKUP: CALL BACKUP1 ;backup the screen 1 place. + LD C,' ' ;then blank that character. + CALL CONOUT +BACKUP1:LD C,BS ;then back space once more. + JP CONOUT +; +; Signal a deleted line. Print a '#' at the end and start +; over. +; +NEWLINE:LD C,'#' + CALL OUTCHAR ;print this. + CALL OUTCRLF ;start new line. +NEWLN1: LD A,(CURPOS) ;move the cursor to the starting position. + LD HL,STARTING + CP (HL) + RET NC ;there yet? + LD C,' ' + CALL OUTCHAR ;nope, keep going. + JP NEWLN1 +; +; Output a (cr) (lf) to the console device (screen). +; +OUTCRLF:LD C,CR + CALL OUTCHAR + LD C,LF + JP OUTCHAR +; +; Print message pointed to by (BC). It will end with a '$'. +; +PRTMESG:LD A,(BC) ;check for terminating character. + CP '$' + RET Z + INC BC + PUSH BC ;otherwise, bump pointer and print it. + LD C,A + CALL OUTCON + POP BC + JP PRTMESG +; +; Function to execute a buffered read. +; +RDBUFF: LD A,(CURPOS) ;use present location as starting one. + LD (STARTING),A + LD HL,(PARAMS) ;get the maximum buffer space. + LD C,(HL) + INC HL ;point to first available space. + PUSH HL ;and save. + LD B,0 ;keep a character count. +RDBUF1: PUSH BC + PUSH HL +RDBUF2: CALL GETCHAR ;get the next input character. + AND 7FH ;strip bit 7. + POP HL ;reset registers. + POP BC + CP CR ;en of the line? + JP Z,RDBUF17 + CP LF + JP Z,RDBUF17 + CP BS ;how about a backspace? + JP NZ,RDBUF3 + LD A,B ;yes, but ignore at the beginning of the line. + OR A + JP Z,RDBUF1 + DEC B ;ok, update counter. + LD A,(CURPOS) ;if we backspace to the start of the line, + LD (OUTFLAG),A ;treat as a cancel (control-x). + JP RDBUF10 +RDBUF3: CP DEL ;user typed a rubout? + JP NZ,RDBUF4 + LD A,B ;ignore at the start of the line. + OR A + JP Z,RDBUF1 + LD A,(HL) ;ok, echo the prevoius character. + DEC B ;and reset pointers (counters). + DEC HL + JP RDBUF15 +RDBUF4: CP CNTRLE ;physical end of line? + JP NZ,RDBUF5 + PUSH BC ;yes, do it. + PUSH HL + CALL OUTCRLF + XOR A ;and update starting position. + LD (STARTING),A + JP RDBUF2 +RDBUF5: CP CNTRLP ;control-p? + JP NZ,RDBUF6 + PUSH HL ;yes, flip the print flag filp-flop byte. + LD HL,PRTFLAG + LD A,1 ;PRTFLAG=1-PRTFLAG + SUB (HL) + LD (HL),A + POP HL + JP RDBUF1 +RDBUF6: CP CNTRLX ;control-x (cancel)? + JP NZ,RDBUF8 + POP HL +RDBUF7: LD A,(STARTING) ;yes, backup the cursor to here. + LD HL,CURPOS + CP (HL) + JP NC,RDBUFF ;done yet? + DEC (HL) ;no, decrement pointer and output back up one space. + CALL BACKUP + JP RDBUF7 +RDBUF8: CP CNTRLU ;cntrol-u (cancel line)? + JP NZ,RDBUF9 + CALL NEWLINE ;start a new line. + POP HL + JP RDBUFF +RDBUF9: CP CNTRLR ;control-r? + JP NZ,RDBUF14 +RDBUF10:PUSH BC ;yes, start a new line and retype the old one. + CALL NEWLINE + POP BC + POP HL + PUSH HL + PUSH BC +RDBUF11:LD A,B ;done whole line yet? + OR A + JP Z,RDBUF12 + INC HL ;nope, get next character. + LD C,(HL) + DEC B ;count it. + PUSH BC + PUSH HL + CALL SHOWIT ;and display it. + POP HL + POP BC + JP RDBUF11 +RDBUF12:PUSH HL ;done with line. If we were displaying + LD A,(OUTFLAG) ;then update cursor position. + OR A + JP Z,RDBUF2 + LD HL,CURPOS ;because this line is shorter, we must + SUB (HL) ;back up the cursor (not the screen however) + LD (OUTFLAG),A ;some number of positions. +RDBUF13:CALL BACKUP ;note that as long as (OUTFLAG) is non + LD HL,OUTFLAG ;zero, the screen will not be changed. + DEC (HL) + JP NZ,RDBUF13 + JP RDBUF2 ;now just get the next character. +; +; Just a normal character, put this in our buffer and echo. +; +RDBUF14:INC HL + LD (HL),A ;store character. + INC B ;and count it. +RDBUF15:PUSH BC + PUSH HL + LD C,A ;echo it now. + CALL SHOWIT + POP HL + POP BC + LD A,(HL) ;was it an abort request? + CP CNTRLC ;control-c abort? + LD A,B + JP NZ,RDBUF16 + CP 1 ;only if at start of line. + JP Z,0 +RDBUF16:CP C ;nope, have we filled the buffer? + JP C,RDBUF1 +RDBUF17:POP HL ;yes end the line and return. + LD (HL),B + LD C,CR + JP OUTCHAR ;output (cr) and return. +; +; Function to get a character from the console device. +; +GETCON: CALL GETECHO ;get and echo. + JP SETSTAT ;save status and return. +; +; Function to get a character from the tape reader device. +; +GETRDR: CALL READER ;get a character from reader, set status and return. + JP SETSTAT +; +; Function to perform direct console i/o. If (C) contains (FF) +; then this is an input request. If (C) contains (FE) then +; this is a status request. Otherwise we are to output (C). +; +DIRCIO: LD A,C ;test for (FF). + INC A + JP Z,DIRC1 + INC A ;test for (FE). + JP Z,CONST + JP CONOUT ;just output (C). +DIRC1: CALL CONST ;this is an input request. + OR A + JP Z,GOBACK1 ;not ready? Just return (directly). + CALL CONIN ;yes, get character. + JP SETSTAT ;set status and return. +; +; Function to return the i/o byte. +; +GETIOB: LD A,(IOBYTE) + JP SETSTAT +; +; Function to set the i/o byte. +; +SETIOB: LD HL,IOBYTE + LD (HL),C + RET +; +; Function to print the character string pointed to by (DE) +; on the console device. The string ends with a '$'. +; +PRTSTR: EX DE,HL + LD C,L + LD B,H ;now (BC) points to it. + JP PRTMESG +; +; Function to interigate the console device. +; +GETCSTS:CALL CKCONSOL +; +; Get here to set the status and return to the cleanup +; section. Then back to the user. +; +SETSTAT:LD (STATUS),A +RTN: RET +; +; Set the status to 1 (read or write error code). +; +IOERR1: LD A,1 + JP SETSTAT +; +OUTFLAG:DB 0 ;output flag (non zero means no output). +STARTING: DB 2 ;starting position for cursor. +CURPOS: DB 0 ;cursor position (0=start of line). +PRTFLAG:DB 0 ;printer flag (control-p toggle). List if non zero. +CHARBUF:DB 0 ;single input character buffer. +; +; Stack area for BDOS calls. +; +USRSTACK: DW 0 ;save users stack pointer here. +; + DB 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + DB 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +STKAREA EQU $ ;end of stack area. +; +USERNO: DB 0 ;current user number. +ACTIVE: DB 0 ;currently active drive. +PARAMS: DW 0 ;save (DE) parameters here on entry. +STATUS: DW 0 ;status returned from bdos function. +; +; Select error occured, jump to error routine. +; +SLCTERR:LD HL,BADSLCT +; +; Jump to (HL) indirectly. +; +JUMPHL: LD E,(HL) + INC HL + LD D,(HL) ;now (DE) contain the desired address. + EX DE,HL + JP (HL) +; +; Block move. (DE) to (HL), (C) bytes total. +; +DE2HL: INC C ;is count down to zero? +DE2HL1: DEC C + RET Z ;yes, we are done. + LD A,(DE) ;no, move one more byte. + LD (HL),A + INC DE + INC HL + JP DE2HL1 ;and repeat. +; +; Select the desired drive. +; +SELECT: LD A,(ACTIVE) ;get active disk. + LD C,A + CALL SELDSK ;select it. + LD A,H ;valid drive? + OR L ;valid drive? + RET Z ;return if not. +; +; Here, the BIOS returned the address of the parameter block +; in (HL). We will extract the necessary pointers and save them. +; + LD E,(HL) ;yes, get address of translation table into (DE). + INC HL + LD D,(HL) + INC HL + LD (SCRATCH1),HL ;save pointers to scratch areas. + INC HL + INC HL + LD (SCRATCH2),HL ;ditto. + INC HL + INC HL + LD (SCRATCH3),HL ;ditto. + INC HL + INC HL + EX DE,HL ;now save the translation table address. + LD (XLATE),HL + LD HL,DIRBUF ;put the next 8 bytes here. + LD C,8 ;they consist of the directory buffer + CALL DE2HL ;pointer, parameter block pointer, + LD HL,(DISKPB) ;check and allocation vectors. + EX DE,HL + LD HL,SECTORS ;move parameter block into our ram. + LD C,15 ;it is 15 bytes long. + CALL DE2HL + LD HL,(DSKSIZE) ;check disk size. + LD A,H ;more than 256 blocks on this? + LD HL,BIGDISK + LD (HL),0FFH ;set to samll. + OR A + JP Z,SELECT1 + LD (HL),0 ;wrong, set to large. +SELECT1:LD A,0FFH ;clear the zero flag. + OR A + RET +; +; Routine to home the disk track head and clear pointers. +; +HOMEDRV:CALL HOME ;home the head. + XOR A + LD HL,(SCRATCH2) ;set our track pointer also. + LD (HL),A + INC HL + LD (HL),A + LD HL,(SCRATCH3) ;and our sector pointer. + LD (HL),A + INC HL + LD (HL),A + RET +; +; Do the actual disk read and check the error return status. +; +DOREAD: CALL READ + JP IORET +; +; Do the actual disk write and handle any bios error. +; +DOWRITE:CALL WRITE +IORET: OR A + RET Z ;return unless an error occured. + LD HL,BADSCTR ;bad read/write on this sector. + JP JUMPHL +; +; Routine to select the track and sector that the desired +; block number falls in. +; +TRKSEC: LD HL,(FILEPOS) ;get position of last accessed file + LD C,2 ;in directory and compute sector #. + CALL SHIFTR ;sector #=file-position/4. + LD (BLKNMBR),HL ;save this as the block number of interest. + LD (CKSUMTBL),HL ;what's it doing here too? +; +; if the sector number has already been set (BLKNMBR), enter +; at this point. +; +TRKSEC1:LD HL,BLKNMBR + LD C,(HL) ;move sector number into (BC). + INC HL + LD B,(HL) + LD HL,(SCRATCH3) ;get current sector number and + LD E,(HL) ;move this into (DE). + INC HL + LD D,(HL) + LD HL,(SCRATCH2) ;get current track number. + LD A,(HL) ;and this into (HL). + INC HL + LD H,(HL) + LD L,A +TRKSEC2:LD A,C ;is desired sector before current one? + SUB E + LD A,B + SBC A,D + JP NC,TRKSEC3 + PUSH HL ;yes, decrement sectors by one track. + LD HL,(SECTORS) ;get sectors per track. + LD A,E + SUB L + LD E,A + LD A,D + SBC A,H + LD D,A ;now we have backed up one full track. + POP HL + DEC HL ;adjust track counter. + JP TRKSEC2 +TRKSEC3:PUSH HL ;desired sector is after current one. + LD HL,(SECTORS) ;get sectors per track. + ADD HL,DE ;bump sector pointer to next track. + JP C,TRKSEC4 + LD A,C ;is desired sector now before current one? + SUB L + LD A,B + SBC A,H + JP C,TRKSEC4 + EX DE,HL ;not yes, increment track counter + POP HL ;and continue until it is. + INC HL + JP TRKSEC3 +; +; here we have determined the track number that contains the +; desired sector. +; +TRKSEC4:POP HL ;get track number (HL). + PUSH BC + PUSH DE + PUSH HL + EX DE,HL + LD HL,(OFFSET) ;adjust for first track offset. + ADD HL,DE + LD B,H + LD C,L + CALL SETTRK ;select this track. + POP DE ;reset current track pointer. + LD HL,(SCRATCH2) + LD (HL),E + INC HL + LD (HL),D + POP DE + LD HL,(SCRATCH3) ;reset the first sector on this track. + LD (HL),E + INC HL + LD (HL),D + POP BC + LD A,C ;now subtract the desired one. + SUB E ;to make it relative (1-# sectors/track). + LD C,A + LD A,B + SBC A,D + LD B,A + LD HL,(XLATE) ;translate this sector according to this table. + EX DE,HL + CALL SECTRN ;let the bios translate it. + LD C,L + LD B,H + JP SETSEC ;and select it. +; +; Compute block number from record number (SAVNREC) and +; extent number (SAVEXT). +; +GETBLOCK: LD HL,BLKSHFT ;get logical to physical conversion. + LD C,(HL) ;note that this is base 2 log of ratio. + LD A,(SAVNREC) ;get record number. +GETBLK1:OR A ;compute (A)=(A)/2^BLKSHFT. + RRA + DEC C + JP NZ,GETBLK1 + LD B,A ;save result in (B). + LD A,8 + SUB (HL) + LD C,A ;compute (C)=8-BLKSHFT. + LD A,(SAVEXT) +GETBLK2:DEC C ;compute (A)=SAVEXT*2^(8-BLKSHFT). + JP Z,GETBLK3 + OR A + RLA + JP GETBLK2 +GETBLK3:ADD A,B + RET +; +; Routine to extract the (BC) block byte from the fcb pointed +; to by (PARAMS). If this is a big-disk, then these are 16 bit +; block numbers, else they are 8 bit numbers. +; Number is returned in (HL). +; +EXTBLK: LD HL,(PARAMS) ;get fcb address. + LD DE,16 ;block numbers start 16 bytes into fcb. + ADD HL,DE + ADD HL,BC + LD A,(BIGDISK) ;are we using a big-disk? + OR A + JP Z,EXTBLK1 + LD L,(HL) ;no, extract an 8 bit number from the fcb. + LD H,0 + RET +EXTBLK1:ADD HL,BC ;yes, extract a 16 bit number. + LD E,(HL) + INC HL + LD D,(HL) + EX DE,HL ;return in (HL). + RET +; +; Compute block number. +; +COMBLK: CALL GETBLOCK + LD C,A + LD B,0 + CALL EXTBLK + LD (BLKNMBR),HL + RET +; +; Check for a zero block number (unused). +; +CHKBLK: LD HL,(BLKNMBR) + LD A,L ;is it zero? + OR H + RET +; +; Adjust physical block (BLKNMBR) and convert to logical +; sector (LOGSECT). This is the starting sector of this block. +; The actual sector of interest is then added to this and the +; resulting sector number is stored back in (BLKNMBR). This +; will still have to be adjusted for the track number. +; +LOGICAL:LD A,(BLKSHFT) ;get log2(physical/logical sectors). + LD HL,(BLKNMBR) ;get physical sector desired. +LOGICL1:ADD HL,HL ;compute logical sector number. + DEC A ;note logical sectors are 128 bytes long. + JP NZ,LOGICL1 + LD (LOGSECT),HL ;save logical sector. + LD A,(BLKMASK) ;get block mask. + LD C,A + LD A,(SAVNREC) ;get next sector to access. + AND C ;extract the relative position within physical block. + OR L ;and add it too logical sector. + LD L,A + LD (BLKNMBR),HL ;and store. + RET +; +; Set (HL) to point to extent byte in fcb. +; +SETEXT: LD HL,(PARAMS) + LD DE,12 ;it is the twelth byte. + ADD HL,DE + RET +; +; Set (HL) to point to record count byte in fcb and (DE) to +; next record number byte. +; +SETHLDE:LD HL,(PARAMS) + LD DE,15 ;record count byte (#15). + ADD HL,DE + EX DE,HL + LD HL,17 ;next record number (#32). + ADD HL,DE + RET +; +; Save current file data from fcb. +; +STRDATA:CALL SETHLDE + LD A,(HL) ;get and store record count byte. + LD (SAVNREC),A + EX DE,HL + LD A,(HL) ;get and store next record number byte. + LD (SAVNXT),A + CALL SETEXT ;point to extent byte. + LD A,(EXTMASK) ;get extent mask. + AND (HL) + LD (SAVEXT),A ;and save extent here. + RET +; +; Set the next record to access. If (MODE) is set to 2, then +; the last record byte (SAVNREC) has the correct number to access. +; For sequential access, (MODE) will be equal to 1. +; +SETNREC:CALL SETHLDE + LD A,(MODE) ;get sequential flag (=1). + CP 2 ;a 2 indicates that no adder is needed. + JP NZ,STNREC1 + XOR A ;clear adder (random access?). +STNREC1:LD C,A + LD A,(SAVNREC) ;get last record number. + ADD A,C ;increment record count. + LD (HL),A ;and set fcb's next record byte. + EX DE,HL + LD A,(SAVNXT) ;get next record byte from storage. + LD (HL),A ;and put this into fcb as number of records used. + RET +; +; Shift (HL) right (C) bits. +; +SHIFTR: INC C +SHIFTR1:DEC C + RET Z + LD A,H + OR A + RRA + LD H,A + LD A,L + RRA + LD L,A + JP SHIFTR1 +; +; Compute the check-sum for the directory buffer. Return +; integer sum in (A). +; +CHECKSUM: LD C,128 ;length of buffer. + LD HL,(DIRBUF) ;get its location. + XOR A ;clear summation byte. +CHKSUM1:ADD A,(HL) ;and compute sum ignoring carries. + INC HL + DEC C + JP NZ,CHKSUM1 + RET +; +; Shift (HL) left (C) bits. +; +SHIFTL: INC C +SHIFTL1:DEC C + RET Z + ADD HL,HL ;shift left 1 bit. + JP SHIFTL1 +; +; Routine to set a bit in a 16 bit value contained in (BC). +; The bit set depends on the current drive selection. +; +SETBIT: PUSH BC ;save 16 bit word. + LD A,(ACTIVE) ;get active drive. + LD C,A + LD HL,1 + CALL SHIFTL ;shift bit 0 into place. + POP BC ;now 'or' this with the original word. + LD A,C + OR L + LD L,A ;low byte done, do high byte. + LD A,B + OR H + LD H,A + RET +; +; Extract the write protect status bit for the current drive. +; The result is returned in (A), bit 0. +; +GETWPRT:LD HL,(WRTPRT) ;get status bytes. + LD A,(ACTIVE) ;which drive is current? + LD C,A + CALL SHIFTR ;shift status such that bit 0 is the + LD A,L ;one of interest for this drive. + AND 01H ;and isolate it. + RET +; +; Function to write protect the current disk. +; +WRTPRTD:LD HL,WRTPRT ;point to status word. + LD C,(HL) ;set (BC) equal to the status. + INC HL + LD B,(HL) + CALL SETBIT ;and set this bit according to current drive. + LD (WRTPRT),HL ;then save. + LD HL,(DIRSIZE) ;now save directory size limit. + INC HL ;remember the last one. + EX DE,HL + LD HL,(SCRATCH1) ;and store it here. + LD (HL),E ;put low byte. + INC HL + LD (HL),D ;then high byte. + RET +; +; Check for a read only file. +; +CHKROFL:CALL FCB2HL ;set (HL) to file entry in directory buffer. +CKROF1: LD DE,9 ;look at bit 7 of the ninth byte. + ADD HL,DE + LD A,(HL) + RLA + RET NC ;return if ok. + LD HL,ROFILE ;else, print error message and terminate. + JP JUMPHL +; +; Check the write protect status of the active disk. +; +CHKWPRT:CALL GETWPRT + RET Z ;return if ok. + LD HL,RODISK ;else print message and terminate. + JP JUMPHL +; +; Routine to set (HL) pointing to the proper entry in the +; directory buffer. +; +FCB2HL: LD HL,(DIRBUF) ;get address of buffer. + LD A,(FCBPOS) ;relative position of file. +; +; Routine to add (A) to (HL). +; +ADDA2HL:ADD A,L + LD L,A + RET NC + INC H ;take care of any carry. + RET +; +; Routine to get the 's2' byte from the fcb supplied in +; the initial parameter specification. +; +GETS2: LD HL,(PARAMS) ;get address of fcb. + LD DE,14 ;relative position of 's2'. + ADD HL,DE + LD A,(HL) ;extract this byte. + RET +; +; Clear the 's2' byte in the fcb. +; +CLEARS2:CALL GETS2 ;this sets (HL) pointing to it. + LD (HL),0 ;now clear it. + RET +; +; Set bit 7 in the 's2' byte of the fcb. +; +SETS2B7:CALL GETS2 ;get the byte. + OR 80H ;and set bit 7. + LD (HL),A ;then store. + RET +; +; Compare (FILEPOS) with (SCRATCH1) and set flags based on +; the difference. This checks to see if there are more file +; names in the directory. We are at (FILEPOS) and there are +; (SCRATCH1) of them to check. +; +MOREFLS:LD HL,(FILEPOS) ;we are here. + EX DE,HL + LD HL,(SCRATCH1) ;and don't go past here. + LD A,E ;compute difference but don't keep. + SUB (HL) + INC HL + LD A,D + SBC A,(HL) ;set carry if no more names. + RET +; +; Call this routine to prevent (SCRATCH1) from being greater +; than (FILEPOS). +; +CHKNMBR:CALL MOREFLS ;SCRATCH1 too big? + RET C + INC DE ;yes, reset it to (FILEPOS). + LD (HL),D + DEC HL + LD (HL),E + RET +; +; Compute (HL)=(DE)-(HL) +; +SUBHL: LD A,E ;compute difference. + SUB L + LD L,A ;store low byte. + LD A,D + SBC A,H + LD H,A ;and then high byte. + RET +; +; Set the directory checksum byte. +; +SETDIR: LD C,0FFH +; +; Routine to set or compare the directory checksum byte. If +; (C)=0ffh, then this will set the checksum byte. Else the byte +; will be checked. If the check fails (the disk has been changed), +; then this disk will be write protected. +; +CHECKDIR: LD HL,(CKSUMTBL) + EX DE,HL + LD HL,(ALLOC1) + CALL SUBHL + RET NC ;ok if (CKSUMTBL) > (ALLOC1), so return. + PUSH BC + CALL CHECKSUM ;else compute checksum. + LD HL,(CHKVECT) ;get address of checksum table. + EX DE,HL + LD HL,(CKSUMTBL) + ADD HL,DE ;set (HL) to point to byte for this drive. + POP BC + INC C ;set or check ? + JP Z,CHKDIR1 + CP (HL) ;check them. + RET Z ;return if they are the same. + CALL MOREFLS ;not the same, do we care? + RET NC + CALL WRTPRTD ;yes, mark this as write protected. + RET +CHKDIR1:LD (HL),A ;just set the byte. + RET +; +; Do a write to the directory of the current disk. +; +DIRWRITE: CALL SETDIR ;set checksum byte. + CALL DIRDMA ;set directory dma address. + LD C,1 ;tell the bios to actually write. + CALL DOWRITE ;then do the write. + JP DEFDMA +; +; Read from the directory. +; +DIRREAD:CALL DIRDMA ;set the directory dma address. + CALL DOREAD ;and read it. +; +; Routine to set the dma address to the users choice. +; +DEFDMA: LD HL,USERDMA ;reset the default dma address and return. + JP DIRDMA1 +; +; Routine to set the dma address for directory work. +; +DIRDMA: LD HL,DIRBUF +; +; Set the dma address. On entry, (HL) points to +; word containing the desired dma address. +; +DIRDMA1:LD C,(HL) + INC HL + LD B,(HL) ;setup (BC) and go to the bios to set it. + JP SETDMA +; +; Move the directory buffer into user's dma space. +; +MOVEDIR:LD HL,(DIRBUF) ;buffer is located here, and + EX DE,HL + LD HL,(USERDMA) ; put it here. + LD C,128 ;this is its length. + JP DE2HL ;move it now and return. +; +; Check (FILEPOS) and set the zero flag if it equals 0ffffh. +; +CKFILPOS: LD HL,FILEPOS + LD A,(HL) + INC HL + CP (HL) ;are both bytes the same? + RET NZ + INC A ;yes, but are they each 0ffh? + RET +; +; Set location (FILEPOS) to 0ffffh. +; +STFILPOS: LD HL,0FFFFH + LD (FILEPOS),HL + RET +; +; Move on to the next file position within the current +; directory buffer. If no more exist, set pointer to 0ffffh +; and the calling routine will check for this. Enter with (C) +; equal to 0ffh to cause the checksum byte to be set, else we +; will check this disk and set write protect if checksums are +; not the same (applies only if another directory sector must +; be read). +; +NXENTRY:LD HL,(DIRSIZE) ;get directory entry size limit. + EX DE,HL + LD HL,(FILEPOS) ;get current count. + INC HL ;go on to the next one. + LD (FILEPOS),HL + CALL SUBHL ;(HL)=(DIRSIZE)-(FILEPOS) + JP NC,NXENT1 ;is there more room left? + JP STFILPOS ;no. Set this flag and return. +NXENT1: LD A,(FILEPOS) ;get file position within directory. + AND 03H ;only look within this sector (only 4 entries fit). + LD B,5 ;convert to relative position (32 bytes each). +NXENT2: ADD A,A ;note that this is not efficient code. + DEC B ;5 'ADD A's would be better. + JP NZ,NXENT2 + LD (FCBPOS),A ;save it as position of fcb. + OR A + RET NZ ;return if we are within buffer. + PUSH BC + CALL TRKSEC ;we need the next directory sector. + CALL DIRREAD + POP BC + JP CHECKDIR +; +; Routine to to get a bit from the disk space allocation +; map. It is returned in (A), bit position 0. On entry to here, +; set (BC) to the block number on the disk to check. +; On return, (D) will contain the original bit position for +; this block number and (HL) will point to the address for it. +; +CKBITMAP: LD A,C ;determine bit number of interest. + AND 07H ;compute (D)=(E)=(C and 7)+1. + INC A + LD E,A ;save particular bit number. + LD D,A +; +; compute (BC)=(BC)/8. +; + LD A,C + RRCA ;now shift right 3 bits. + RRCA + RRCA + AND 1FH ;and clear bits 7,6,5. + LD C,A + LD A,B + ADD A,A ;now shift (B) into bits 7,6,5. + ADD A,A + ADD A,A + ADD A,A + ADD A,A + OR C ;and add in (C). + LD C,A ;ok, (C) ha been completed. + LD A,B ;is there a better way of doing this? + RRCA + RRCA + RRCA + AND 1FH + LD B,A ;and now (B) is completed. +; +; use this as an offset into the disk space allocation +; table. +; + LD HL,(ALOCVECT) + ADD HL,BC + LD A,(HL) ;now get correct byte. +CKBMAP1:RLCA ;get correct bit into position 0. + DEC E + JP NZ,CKBMAP1 + RET +; +; Set or clear the bit map such that block number (BC) will be marked +; as used. On entry, if (E)=0 then this bit will be cleared, if it equals +; 1 then it will be set (don't use anyother values). +; +STBITMAP: PUSH DE + CALL CKBITMAP ;get the byte of interest. + AND 0FEH ;clear the affected bit. + POP BC + OR C ;and now set it acording to (C). +; +; entry to restore the original bit position and then store +; in table. (A) contains the value, (D) contains the bit +; position (1-8), and (HL) points to the address within the +; space allocation table for this byte. +; +STBMAP1:RRCA ;restore original bit position. + DEC D + JP NZ,STBMAP1 + LD (HL),A ;and stor byte in table. + RET +; +; Set/clear space used bits in allocation map for this file. +; On entry, (C)=1 to set the map and (C)=0 to clear it. +; +SETFILE:CALL FCB2HL ;get address of fcb + LD DE,16 + ADD HL,DE ;get to block number bytes. + PUSH BC + LD C,17 ;check all 17 bytes (max) of table. +SETFL1: POP DE + DEC C ;done all bytes yet? + RET Z + PUSH DE + LD A,(BIGDISK) ;check disk size for 16 bit block numbers. + OR A + JP Z,SETFL2 + PUSH BC ;only 8 bit numbers. set (BC) to this one. + PUSH HL + LD C,(HL) ;get low byte from table, always + LD B,0 ;set high byte to zero. + JP SETFL3 +SETFL2: DEC C ;for 16 bit block numbers, adjust counter. + PUSH BC + LD C,(HL) ;now get both the low and high bytes. + INC HL + LD B,(HL) + PUSH HL +SETFL3: LD A,C ;block used? + OR B + JP Z,SETFL4 + LD HL,(DSKSIZE) ;is this block number within the + LD A,L ;space on the disk? + SUB C + LD A,H + SBC A,B + CALL NC,STBITMAP ;yes, set the proper bit. +SETFL4: POP HL ;point to next block number in fcb. + INC HL + POP BC + JP SETFL1 +; +; Construct the space used allocation bit map for the active +; drive. If a file name starts with '$' and it is under the +; current user number, then (STATUS) is set to minus 1. Otherwise +; it is not set at all. +; +BITMAP: LD HL,(DSKSIZE) ;compute size of allocation table. + LD C,3 + CALL SHIFTR ;(HL)=(HL)/8. + INC HL ;at lease 1 byte. + LD B,H + LD C,L ;set (BC) to the allocation table length. +; +; Initialize the bitmap for this drive. Right now, the first +; two bytes are specified by the disk parameter block. However +; a patch could be entered here if it were necessary to setup +; this table in a special mannor. For example, the bios could +; determine locations of 'bad blocks' and set them as already +; 'used' in the map. +; + LD HL,(ALOCVECT) ;now zero out the table now. +BITMAP1:LD (HL),0 + INC HL + DEC BC + LD A,B + OR C + JP NZ,BITMAP1 + LD HL,(ALLOC0) ;get initial space used by directory. + EX DE,HL + LD HL,(ALOCVECT) ;and put this into map. + LD (HL),E + INC HL + LD (HL),D +; +; End of initialization portion. +; + CALL HOMEDRV ;now home the drive. + LD HL,(SCRATCH1) + LD (HL),3 ;force next directory request to read + INC HL ;in a sector. + LD (HL),0 + CALL STFILPOS ;clear initial file position also. +BITMAP2:LD C,0FFH ;read next file name in directory + CALL NXENTRY ;and set checksum byte. + CALL CKFILPOS ;is there another file? + RET Z + CALL FCB2HL ;yes, get its address. + LD A,0E5H + CP (HL) ;empty file entry? + JP Z,BITMAP2 + LD A,(USERNO) ;no, correct user number? + CP (HL) + JP NZ,BITMAP3 + INC HL + LD A,(HL) ;yes, does name start with a '$'? + SUB '$' + JP NZ,BITMAP3 + DEC A ;yes, set atatus to minus one. + LD (STATUS),A +BITMAP3:LD C,1 ;now set this file's space as used in bit map. + CALL SETFILE + CALL CHKNMBR ;keep (SCRATCH1) in bounds. + JP BITMAP2 +; +; Set the status (STATUS) and return. +; +STSTATUS: LD A,(FNDSTAT) + JP SETSTAT +; +; Check extents in (A) and (C). Set the zero flag if they +; are the same. The number of 16k chunks of disk space that +; the directory extent covers is expressad is (EXTMASK+1). +; No registers are modified. +; +SAMEXT: PUSH BC + PUSH AF + LD A,(EXTMASK) ;get extent mask and use it to + CPL ;to compare both extent numbers. + LD B,A ;save resulting mask here. + LD A,C ;mask first extent and save in (C). + AND B + LD C,A + POP AF ;now mask second extent and compare + AND B ;with the first one. + SUB C + AND 1FH ;(* only check buts 0-4 *) + POP BC ;the zero flag is set if they are the same. + RET ;restore (BC) and return. +; +; Search for the first occurence of a file name. On entry, +; register (C) should contain the number of bytes of the fcb +; that must match. +; +FINDFST:LD A,0FFH + LD (FNDSTAT),A + LD HL,COUNTER ;save character count. + LD (HL),C + LD HL,(PARAMS) ;get filename to match. + LD (SAVEFCB),HL ;and save. + CALL STFILPOS ;clear initial file position (set to 0ffffh). + CALL HOMEDRV ;home the drive. +; +; Entry to locate the next occurence of a filename within the +; directory. The disk is not expected to have been changed. If +; it was, then it will be write protected. +; +FINDNXT:LD C,0 ;write protect the disk if changed. + CALL NXENTRY ;get next filename entry in directory. + CALL CKFILPOS ;is file position = 0ffffh? + JP Z,FNDNXT6 ;yes, exit now then. + LD HL,(SAVEFCB) ;set (DE) pointing to filename to match. + EX DE,HL + LD A,(DE) + CP 0E5H ;empty directory entry? + JP Z,FNDNXT1 ;(* are we trying to reserect erased entries? *) + PUSH DE + CALL MOREFLS ;more files in directory? + POP DE + JP NC,FNDNXT6 ;no more. Exit now. +FNDNXT1:CALL FCB2HL ;get address of this fcb in directory. + LD A,(COUNTER) ;get number of bytes (characters) to check. + LD C,A + LD B,0 ;initialize byte position counter. +FNDNXT2:LD A,C ;are we done with the compare? + OR A + JP Z,FNDNXT5 + LD A,(DE) ;no, check next byte. + CP '?' ;don't care about this character? + JP Z,FNDNXT4 + LD A,B ;get bytes position in fcb. + CP 13 ;don't care about the thirteenth byte either. + JP Z,FNDNXT4 + CP 12 ;extent byte? + LD A,(DE) + JP Z,FNDNXT3 + SUB (HL) ;otherwise compare characters. + AND 7FH + JP NZ,FINDNXT ;not the same, check next entry. + JP FNDNXT4 ;so far so good, keep checking. +FNDNXT3:PUSH BC ;check the extent byte here. + LD C,(HL) + CALL SAMEXT + POP BC + JP NZ,FINDNXT ;not the same, look some more. +; +; So far the names compare. Bump pointers to the next byte +; and continue until all (C) characters have been checked. +; +FNDNXT4:INC DE ;bump pointers. + INC HL + INC B + DEC C ;adjust character counter. + JP FNDNXT2 +FNDNXT5:LD A,(FILEPOS) ;return the position of this entry. + AND 03H + LD (STATUS),A + LD HL,FNDSTAT + LD A,(HL) + RLA + RET NC + XOR A + LD (HL),A + RET +; +; Filename was not found. Set appropriate status. +; +FNDNXT6:CALL STFILPOS ;set (FILEPOS) to 0ffffh. + LD A,0FFH ;say not located. + JP SETSTAT +; +; Erase files from the directory. Only the first byte of the +; fcb will be affected. It is set to (E5). +; +ERAFILE:CALL CHKWPRT ;is disk write protected? + LD C,12 ;only compare file names. + CALL FINDFST ;get first file name. +ERAFIL1:CALL CKFILPOS ;any found? + RET Z ;nope, we must be done. + CALL CHKROFL ;is file read only? + CALL FCB2HL ;nope, get address of fcb and + LD (HL),0E5H ;set first byte to 'empty'. + LD C,0 ;clear the space from the bit map. + CALL SETFILE + CALL DIRWRITE ;now write the directory sector back out. + CALL FINDNXT ;find the next file name. + JP ERAFIL1 ;and repeat process. +; +; Look through the space allocation map (bit map) for the +; next available block. Start searching at block number (BC-1). +; The search procedure is to look for an empty block that is +; before the starting block. If not empty, look at a later +; block number. In this way, we return the closest empty block +; on either side of the 'target' block number. This will speed +; access on random devices. For serial devices, this should be +; changed to look in the forward direction first and then start +; at the front and search some more. +; +; On return, (DE)= block number that is empty and (HL) =0 +; if no empry block was found. +; +FNDSPACE: LD D,B ;set (DE) as the block that is checked. + LD E,C +; +; Look before target block. Registers (BC) are used as the lower +; pointer and (DE) as the upper pointer. +; +FNDSPA1:LD A,C ;is block 0 specified? + OR B + JP Z,FNDSPA2 + DEC BC ;nope, check previous block. + PUSH DE + PUSH BC + CALL CKBITMAP + RRA ;is this block empty? + JP NC,FNDSPA3 ;yes. use this. +; +; Note that the above logic gets the first block that it finds +; that is empty. Thus a file could be written 'backward' making +; it very slow to access. This could be changed to look for the +; first empty block and then continue until the start of this +; empty space is located and then used that starting block. +; This should help speed up access to some files especially on +; a well used disk with lots of fairly small 'holes'. +; + POP BC ;nope, check some more. + POP DE +; +; Now look after target block. +; +FNDSPA2:LD HL,(DSKSIZE) ;is block (DE) within disk limits? + LD A,E + SUB L + LD A,D + SBC A,H + JP NC,FNDSPA4 + INC DE ;yes, move on to next one. + PUSH BC + PUSH DE + LD B,D + LD C,E + CALL CKBITMAP ;check it. + RRA ;empty? + JP NC,FNDSPA3 + POP DE ;nope, continue searching. + POP BC + JP FNDSPA1 +; +; Empty block found. Set it as used and return with (HL) +; pointing to it (true?). +; +FNDSPA3:RLA ;reset byte. + INC A ;and set bit 0. + CALL STBMAP1 ;update bit map. + POP HL ;set return registers. + POP DE + RET +; +; Free block was not found. If (BC) is not zero, then we have +; not checked all of the disk space. +; +FNDSPA4:LD A,C + OR B + JP NZ,FNDSPA1 + LD HL,0 ;set 'not found' status. + RET +; +; Move a complete fcb entry into the directory and write it. +; +FCBSET: LD C,0 + LD E,32 ;length of each entry. +; +; Move (E) bytes from the fcb pointed to by (PARAMS) into +; fcb in directory starting at relative byte (C). This updated +; directory buffer is then written to the disk. +; +UPDATE: PUSH DE + LD B,0 ;set (BC) to relative byte position. + LD HL,(PARAMS) ;get address of fcb. + ADD HL,BC ;compute starting byte. + EX DE,HL + CALL FCB2HL ;get address of fcb to update in directory. + POP BC ;set (C) to number of bytes to change. + CALL DE2HL +UPDATE1:CALL TRKSEC ;determine the track and sector affected. + JP DIRWRITE ;then write this sector out. +; +; Routine to change the name of all files on the disk with a +; specified name. The fcb contains the current name as the +; first 12 characters and the new name 16 bytes into the fcb. +; +CHGNAMES: CALL CHKWPRT ;check for a write protected disk. + LD C,12 ;match first 12 bytes of fcb only. + CALL FINDFST ;get first name. + LD HL,(PARAMS) ;get address of fcb. + LD A,(HL) ;get user number. + LD DE,16 ;move over to desired name. + ADD HL,DE + LD (HL),A ;keep same user number. +CHGNAM1:CALL CKFILPOS ;any matching file found? + RET Z ;no, we must be done. + CALL CHKROFL ;check for read only file. + LD C,16 ;start 16 bytes into fcb. + LD E,12 ;and update the first 12 bytes of directory. + CALL UPDATE + CALL FINDNXT ;get te next file name. + JP CHGNAM1 ;and continue. +; +; Update a files attributes. The procedure is to search for +; every file with the same name as shown in fcb (ignoring bit 7) +; and then to update it (which includes bit 7). No other changes +; are made. +; +SAVEATTR: LD C,12 ;match first 12 bytes. + CALL FINDFST ;look for first filename. +SAVATR1:CALL CKFILPOS ;was one found? + RET Z ;nope, we must be done. + LD C,0 ;yes, update the first 12 bytes now. + LD E,12 + CALL UPDATE ;update filename and write directory. + CALL FINDNXT ;and get the next file. + JP SAVATR1 ;then continue until done. +; +; Open a file (name specified in fcb). +; +OPENIT: LD C,15 ;compare the first 15 bytes. + CALL FINDFST ;get the first one in directory. + CALL CKFILPOS ;any at all? + RET Z +OPENIT1:CALL SETEXT ;point to extent byte within users fcb. + LD A,(HL) ;and get it. + PUSH AF ;save it and address. + PUSH HL + CALL FCB2HL ;point to fcb in directory. + EX DE,HL + LD HL,(PARAMS) ;this is the users copy. + LD C,32 ;move it into users space. + PUSH DE + CALL DE2HL + CALL SETS2B7 ;set bit 7 in 's2' byte (unmodified). + POP DE ;now get the extent byte from this fcb. + LD HL,12 + ADD HL,DE + LD C,(HL) ;into (C). + LD HL,15 ;now get the record count byte into (B). + ADD HL,DE + LD B,(HL) + POP HL ;keep the same extent as the user had originally. + POP AF + LD (HL),A + LD A,C ;is it the same as in the directory fcb? + CP (HL) + LD A,B ;if yes, then use the same record count. + JP Z,OPENIT2 + LD A,0 ;if the user specified an extent greater than + JP C,OPENIT2 ;the one in the directory, then set record count to 0. + LD A,128 ;otherwise set to maximum. +OPENIT2:LD HL,(PARAMS) ;set record count in users fcb to (A). + LD DE,15 + ADD HL,DE ;compute relative position. + LD (HL),A ;and set the record count. + RET +; +; Move two bytes from (DE) to (HL) if (and only if) (HL) +; point to a zero value (16 bit). +; Return with zero flag set it (DE) was moved. Registers (DE) +; and (HL) are not changed. However (A) is. +; +MOVEWORD: LD A,(HL) ;check for a zero word. + INC HL + OR (HL) ;both bytes zero? + DEC HL + RET NZ ;nope, just return. + LD A,(DE) ;yes, move two bytes from (DE) into + LD (HL),A ;this zero space. + INC DE + INC HL + LD A,(DE) + LD (HL),A + DEC DE ;don't disturb these registers. + DEC HL + RET +; +; Get here to close a file specified by (fcb). +; +CLOSEIT:XOR A ;clear status and file position bytes. + LD (STATUS),A + LD (FILEPOS),A + LD (FILEPOS+1),A + CALL GETWPRT ;get write protect bit for this drive. + RET NZ ;just return if it is set. + CALL GETS2 ;else get the 's2' byte. + AND 80H ;and look at bit 7 (file unmodified?). + RET NZ ;just return if set. + LD C,15 ;else look up this file in directory. + CALL FINDFST + CALL CKFILPOS ;was it found? + RET Z ;just return if not. + LD BC,16 ;set (HL) pointing to records used section. + CALL FCB2HL + ADD HL,BC + EX DE,HL + LD HL,(PARAMS) ;do the same for users specified fcb. + ADD HL,BC + LD C,16 ;this many bytes are present in this extent. +CLOSEIT1: LD A,(BIGDISK) ;8 or 16 bit record numbers? + OR A + JP Z,CLOSEIT4 + LD A,(HL) ;just 8 bit. Get one from users fcb. + OR A + LD A,(DE) ;now get one from directory fcb. + JP NZ,CLOSEIT2 + LD (HL),A ;users byte was zero. Update from directory. +CLOSEIT2: OR A + JP NZ,CLOSEIT3 + LD A,(HL) ;directories byte was zero, update from users fcb. + LD (DE),A +CLOSEIT3: CP (HL) ;if neither one of these bytes were zero, + JP NZ,CLOSEIT7 ;then close error if they are not the same. + JP CLOSEIT5 ;ok so far, get to next byte in fcbs. +CLOSEIT4: CALL MOVEWORD ;update users fcb if it is zero. + EX DE,HL + CALL MOVEWORD ;update directories fcb if it is zero. + EX DE,HL + LD A,(DE) ;if these two values are no different, + CP (HL) ;then a close error occured. + JP NZ,CLOSEIT7 + INC DE ;check second byte. + INC HL + LD A,(DE) + CP (HL) + JP NZ,CLOSEIT7 + DEC C ;remember 16 bit values. +CLOSEIT5: INC DE ;bump to next item in table. + INC HL + DEC C ;there are 16 entries only. + JP NZ,CLOSEIT1 ;continue if more to do. + LD BC,0FFECH ;backup 20 places (extent byte). + ADD HL,BC + EX DE,HL + ADD HL,BC + LD A,(DE) + CP (HL) ;directory's extent already greater than the + JP C,CLOSEIT6 ;users extent? + LD (HL),A ;no, update directory extent. + LD BC,3 ;and update the record count byte in + ADD HL,BC ;directories fcb. + EX DE,HL + ADD HL,BC + LD A,(HL) ;get from user. + LD (DE),A ;and put in directory. +CLOSEIT6: LD A,0FFH ;set 'was open and is now closed' byte. + LD (CLOSEFLG),A + JP UPDATE1 ;update the directory now. +CLOSEIT7: LD HL,STATUS ;set return status and then return. + DEC (HL) + RET +; +; Routine to get the next empty space in the directory. It +; will then be cleared for use. +; +GETEMPTY: CALL CHKWPRT ;make sure disk is not write protected. + LD HL,(PARAMS) ;save current parameters (fcb). + PUSH HL + LD HL,EMPTYFCB ;use special one for empty space. + LD (PARAMS),HL + LD C,1 ;search for first empty spot in directory. + CALL FINDFST ;(* only check first byte *) + CALL CKFILPOS ;none? + POP HL + LD (PARAMS),HL ;restore original fcb address. + RET Z ;return if no more space. + EX DE,HL + LD HL,15 ;point to number of records for this file. + ADD HL,DE + LD C,17 ;and clear all of this space. + XOR A +GETMT1: LD (HL),A + INC HL + DEC C + JP NZ,GETMT1 + LD HL,13 ;clear the 's1' byte also. + ADD HL,DE + LD (HL),A + CALL CHKNMBR ;keep (SCRATCH1) within bounds. + CALL FCBSET ;write out this fcb entry to directory. + JP SETS2B7 ;set 's2' byte bit 7 (unmodified at present). +; +; Routine to close the current extent and open the next one +; for reading. +; +GETNEXT:XOR A + LD (CLOSEFLG),A ;clear close flag. + CALL CLOSEIT ;close this extent. + CALL CKFILPOS + RET Z ;not there??? + LD HL,(PARAMS) ;get extent byte. + LD BC,12 + ADD HL,BC + LD A,(HL) ;and increment it. + INC A + AND 1FH ;keep within range 0-31. + LD (HL),A + JP Z,GTNEXT1 ;overflow? + LD B,A ;mask extent byte. + LD A,(EXTMASK) + AND B + LD HL,CLOSEFLG ;check close flag (0ffh is ok). + AND (HL) + JP Z,GTNEXT2 ;if zero, we must read in next extent. + JP GTNEXT3 ;else, it is already in memory. +GTNEXT1:LD BC,2 ;Point to the 's2' byte. + ADD HL,BC + INC (HL) ;and bump it. + LD A,(HL) ;too many extents? + AND 0FH + JP Z,GTNEXT5 ;yes, set error code. +; +; Get here to open the next extent. +; +GTNEXT2:LD C,15 ;set to check first 15 bytes of fcb. + CALL FINDFST ;find the first one. + CALL CKFILPOS ;none available? + JP NZ,GTNEXT3 + LD A,(RDWRTFLG) ;no extent present. Can we open an empty one? + INC A ;0ffh means reading (so not possible). + JP Z,GTNEXT5 ;or an error. + CALL GETEMPTY ;we are writing, get an empty entry. + CALL CKFILPOS ;none? + JP Z,GTNEXT5 ;error if true. + JP GTNEXT4 ;else we are almost done. +GTNEXT3:CALL OPENIT1 ;open this extent. +GTNEXT4:CALL STRDATA ;move in updated data (rec #, extent #, etc.) + XOR A ;clear status and return. + JP SETSTAT +; +; Error in extending the file. Too many extents were needed +; or not enough space on the disk. +; +GTNEXT5:CALL IOERR1 ;set error code, clear bit 7 of 's2' + JP SETS2B7 ;so this is not written on a close. +; +; Read a sequential file. +; +RDSEQ: LD A,1 ;set sequential access mode. + LD (MODE),A +RDSEQ1: LD A,0FFH ;don't allow reading unwritten space. + LD (RDWRTFLG),A + CALL STRDATA ;put rec# and ext# into fcb. + LD A,(SAVNREC) ;get next record to read. + LD HL,SAVNXT ;get number of records in extent. + CP (HL) ;within this extent? + JP C,RDSEQ2 + CP 128 ;no. Is this extent fully used? + JP NZ,RDSEQ3 ;no. End-of-file. + CALL GETNEXT ;yes, open the next one. + XOR A ;reset next record to read. + LD (SAVNREC),A + LD A,(STATUS) ;check on open, successful? + OR A + JP NZ,RDSEQ3 ;no, error. +RDSEQ2: CALL COMBLK ;ok. compute block number to read. + CALL CHKBLK ;check it. Within bounds? + JP Z,RDSEQ3 ;no, error. + CALL LOGICAL ;convert (BLKNMBR) to logical sector (128 byte). + CALL TRKSEC1 ;set the track and sector for this block #. + CALL DOREAD ;and read it. + JP SETNREC ;and set the next record to be accessed. +; +; Read error occured. Set status and return. +; +RDSEQ3: JP IOERR1 +; +; Write the next sequential record. +; +WTSEQ: LD A,1 ;set sequential access mode. + LD (MODE),A +WTSEQ1: LD A,0 ;allow an addition empty extent to be opened. + LD (RDWRTFLG),A + CALL CHKWPRT ;check write protect status. + LD HL,(PARAMS) + CALL CKROF1 ;check for read only file, (HL) already set to fcb. + CALL STRDATA ;put updated data into fcb. + LD A,(SAVNREC) ;get record number to write. + CP 128 ;within range? + JP NC,IOERR1 ;no, error(?). + CALL COMBLK ;compute block number. + CALL CHKBLK ;check number. + LD C,0 ;is there one to write to? + JP NZ,WTSEQ6 ;yes, go do it. + CALL GETBLOCK ;get next block number within fcb to use. + LD (RELBLOCK),A ;and save. + LD BC,0 ;start looking for space from the start + OR A ;if none allocated as yet. + JP Z,WTSEQ2 + LD C,A ;extract previous block number from fcb + DEC BC ;so we can be closest to it. + CALL EXTBLK + LD B,H + LD C,L +WTSEQ2: CALL FNDSPACE ;find the next empty block nearest number (BC). + LD A,L ;check for a zero number. + OR H + JP NZ,WTSEQ3 + LD A,2 ;no more space? + JP SETSTAT +WTSEQ3: LD (BLKNMBR),HL ;save block number to access. + EX DE,HL ;put block number into (DE). + LD HL,(PARAMS) ;now we must update the fcb for this + LD BC,16 ;newly allocated block. + ADD HL,BC + LD A,(BIGDISK) ;8 or 16 bit block numbers? + OR A + LD A,(RELBLOCK) ;(* update this entry *) + JP Z,WTSEQ4 ;zero means 16 bit ones. + CALL ADDA2HL ;(HL)=(HL)+(A) + LD (HL),E ;store new block number. + JP WTSEQ5 +WTSEQ4: LD C,A ;compute spot in this 16 bit table. + LD B,0 + ADD HL,BC + ADD HL,BC + LD (HL),E ;stuff block number (DE) there. + INC HL + LD (HL),D +WTSEQ5: LD C,2 ;set (C) to indicate writing to un-used disk space. +WTSEQ6: LD A,(STATUS) ;are we ok so far? + OR A + RET NZ + PUSH BC ;yes, save write flag for bios (register C). + CALL LOGICAL ;convert (BLKNMBR) over to loical sectors. + LD A,(MODE) ;get access mode flag (1=sequential, + DEC A ;0=random, 2=special?). + DEC A + JP NZ,WTSEQ9 +; +; Special random i/o from function #40. Maybe for M/PM, but the +; current block, if it has not been written to, will be zeroed +; out and then written (reason?). +; + POP BC + PUSH BC + LD A,C ;get write status flag (2=writing unused space). + DEC A + DEC A + JP NZ,WTSEQ9 + PUSH HL + LD HL,(DIRBUF) ;zero out the directory buffer. + LD D,A ;note that (A) is zero here. +WTSEQ7: LD (HL),A + INC HL + INC D ;do 128 bytes. + JP P,WTSEQ7 + CALL DIRDMA ;tell the bios the dma address for directory access. + LD HL,(LOGSECT) ;get sector that starts current block. + LD C,2 ;set 'writing to unused space' flag. +WTSEQ8: LD (BLKNMBR),HL ;save sector to write. + PUSH BC + CALL TRKSEC1 ;determine its track and sector numbers. + POP BC + CALL DOWRITE ;now write out 128 bytes of zeros. + LD HL,(BLKNMBR) ;get sector number. + LD C,0 ;set normal write flag. + LD A,(BLKMASK) ;determine if we have written the entire + LD B,A ;physical block. + AND L + CP B + INC HL ;prepare for the next one. + JP NZ,WTSEQ8 ;continue until (BLKMASK+1) sectors written. + POP HL ;reset next sector number. + LD (BLKNMBR),HL + CALL DEFDMA ;and reset dma address. +; +; Normal disk write. Set the desired track and sector then +; do the actual write. +; +WTSEQ9: CALL TRKSEC1 ;determine track and sector for this write. + POP BC ;get write status flag. + PUSH BC + CALL DOWRITE ;and write this out. + POP BC + LD A,(SAVNREC) ;get number of records in file. + LD HL,SAVNXT ;get last record written. + CP (HL) + JP C,WTSEQ10 + LD (HL),A ;we have to update record count. + INC (HL) + LD C,2 +; +;* This area has been patched to correct disk update problem +;* when using blocking and de-blocking in the BIOS. +; +WTSEQ10:NOP ;was 'dcr c' + NOP ;was 'dcr c' + LD HL,0 ;was 'jnz wtseq99' +; +; * End of patch. +; + PUSH AF + CALL GETS2 ;set 'extent written to' flag. + AND 7FH ;(* clear bit 7 *) + LD (HL),A + POP AF ;get record count for this extent. +WTSEQ99:CP 127 ;is it full? + JP NZ,WTSEQ12 + LD A,(MODE) ;yes, are we in sequential mode? + CP 1 + JP NZ,WTSEQ12 + CALL SETNREC ;yes, set next record number. + CALL GETNEXT ;and get next empty space in directory. + LD HL,STATUS ;ok? + LD A,(HL) + OR A + JP NZ,WTSEQ11 + DEC A ;yes, set record count to -1. + LD (SAVNREC),A +WTSEQ11:LD (HL),0 ;clear status. +WTSEQ12:JP SETNREC ;set next record to access. +; +; For random i/o, set the fcb for the desired record number +; based on the 'r0,r1,r2' bytes. These bytes in the fcb are +; used as follows: +; +; fcb+35 fcb+34 fcb+33 +; | 'r-2' | 'r-1' | 'r-0' | +; |7 0 | 7 0 | 7 0| +; |0 0 0 0 0 0 0 0 | 0 0 0 0 0 0 0 0 | 0 0 0 0 0 0 0 0| +; | overflow | | extra | extent | record # | +; | ______________| |_extent|__number___|_____________| +; also 's2' +; +; On entry, register (C) contains 0ffh if this is a read +; and thus we can not access unwritten disk space. Otherwise, +; another extent will be opened (for writing) if required. +; +POSITION: XOR A ;set random i/o flag. + LD (MODE),A +; +; Special entry (function #40). M/PM ? +; +POSITN1:PUSH BC ;save read/write flag. + LD HL,(PARAMS) ;get address of fcb. + EX DE,HL + LD HL,33 ;now get byte 'r0'. + ADD HL,DE + LD A,(HL) + AND 7FH ;keep bits 0-6 for the record number to access. + PUSH AF + LD A,(HL) ;now get bit 7 of 'r0' and bits 0-3 of 'r1'. + RLA + INC HL + LD A,(HL) + RLA + AND 1FH ;and save this in bits 0-4 of (C). + LD C,A ;this is the extent byte. + LD A,(HL) ;now get the extra extent byte. + RRA + RRA + RRA + RRA + AND 0FH + LD B,A ;and save it in (B). + POP AF ;get record number back to (A). + INC HL ;check overflow byte 'r2'. + LD L,(HL) + INC L + DEC L + LD L,6 ;prepare for error. + JP NZ,POSITN5 ;out of disk space error. + LD HL,32 ;store record number into fcb. + ADD HL,DE + LD (HL),A + LD HL,12 ;and now check the extent byte. + ADD HL,DE + LD A,C + SUB (HL) ;same extent as before? + JP NZ,POSITN2 + LD HL,14 ;yes, check extra extent byte 's2' also. + ADD HL,DE + LD A,B + SUB (HL) + AND 7FH + JP Z,POSITN3 ;same, we are almost done then. +; +; Get here when another extent is required. +; +POSITN2:PUSH BC + PUSH DE + CALL CLOSEIT ;close current extent. + POP DE + POP BC + LD L,3 ;prepare for error. + LD A,(STATUS) + INC A + JP Z,POSITN4 ;close error. + LD HL,12 ;put desired extent into fcb now. + ADD HL,DE + LD (HL),C + LD HL,14 ;and store extra extent byte 's2'. + ADD HL,DE + LD (HL),B + CALL OPENIT ;try and get this extent. + LD A,(STATUS) ;was it there? + INC A + JP NZ,POSITN3 + POP BC ;no. can we create a new one (writing?). + PUSH BC + LD L,4 ;prepare for error. + INC C + JP Z,POSITN4 ;nope, reading unwritten space error. + CALL GETEMPTY ;yes we can, try to find space. + LD L,5 ;prepare for error. + LD A,(STATUS) + INC A + JP Z,POSITN4 ;out of space? +; +; Normal return location. Clear error code and return. +; +POSITN3:POP BC ;restore stack. + XOR A ;and clear error code byte. + JP SETSTAT +; +; Error. Set the 's2' byte to indicate this (why?). +; +POSITN4:PUSH HL + CALL GETS2 + LD (HL),0C0H + POP HL +; +; Return with error code (presently in L). +; +POSITN5:POP BC + LD A,L ;get error code. + LD (STATUS),A + JP SETS2B7 +; +; Read a random record. +; +READRAN:LD C,0FFH ;set 'read' status. + CALL POSITION ;position the file to proper record. + CALL Z,RDSEQ1 ;and read it as usual (if no errors). + RET +; +; Write to a random record. +; +WRITERAN: LD C,0 ;set 'writing' flag. + CALL POSITION ;position the file to proper record. + CALL Z,WTSEQ1 ;and write as usual (if no errors). + RET +; +; Compute the random record number. Enter with (HL) pointing +; to a fcb an (DE) contains a relative location of a record +; number. On exit, (C) contains the 'r0' byte, (B) the 'r1' +; byte, and (A) the 'r2' byte. +; +; On return, the zero flag is set if the record is within +; bounds. Otherwise, an overflow occured. +; +COMPRAND: EX DE,HL ;save fcb pointer in (DE). + ADD HL,DE ;compute relative position of record #. + LD C,(HL) ;get record number into (BC). + LD B,0 + LD HL,12 ;now get extent. + ADD HL,DE + LD A,(HL) ;compute (BC)=(record #)+(extent)*128. + RRCA ;move lower bit into bit 7. + AND 80H ;and ignore all other bits. + ADD A,C ;add to our record number. + LD C,A + LD A,0 ;take care of any carry. + ADC A,B + LD B,A + LD A,(HL) ;now get the upper bits of extent into + RRCA ;bit positions 0-3. + AND 0FH ;and ignore all others. + ADD A,B ;add this in to 'r1' byte. + LD B,A + LD HL,14 ;get the 's2' byte (extra extent). + ADD HL,DE + LD A,(HL) + ADD A,A ;and shift it left 4 bits (bits 4-7). + ADD A,A + ADD A,A + ADD A,A + PUSH AF ;save carry flag (bit 0 of flag byte). + ADD A,B ;now add extra extent into 'r1'. + LD B,A + PUSH AF ;and save carry (overflow byte 'r2'). + POP HL ;bit 0 of (L) is the overflow indicator. + LD A,L + POP HL ;and same for first carry flag. + OR L ;either one of these set? + AND 01H ;only check the carry flags. + RET +; +; Routine to setup the fcb (bytes 'r0', 'r1', 'r2') to +; reflect the last record used for a random (or other) file. +; This reads the directory and looks at all extents computing +; the largerst record number for each and keeping the maximum +; value only. Then 'r0', 'r1', and 'r2' will reflect this +; maximum record number. This is used to compute the space used +; by a random file. +; +RANSIZE:LD C,12 ;look thru directory for first entry with + CALL FINDFST ;this name. + LD HL,(PARAMS) ;zero out the 'r0, r1, r2' bytes. + LD DE,33 + ADD HL,DE + PUSH HL + LD (HL),D ;note that (D)=0. + INC HL + LD (HL),D + INC HL + LD (HL),D +RANSIZ1:CALL CKFILPOS ;is there an extent to process? + JP Z,RANSIZ3 ;no, we are done. + CALL FCB2HL ;set (HL) pointing to proper fcb in dir. + LD DE,15 ;point to last record in extent. + CALL COMPRAND ;and compute random parameters. + POP HL + PUSH HL ;now check these values against those + LD E,A ;already in fcb. + LD A,C ;the carry flag will be set if those + SUB (HL) ;in the fcb represent a larger size than + INC HL ;this extent does. + LD A,B + SBC A,(HL) + INC HL + LD A,E + SBC A,(HL) + JP C,RANSIZ2 + LD (HL),E ;we found a larger (in size) extent. + DEC HL ;stuff these values into fcb. + LD (HL),B + DEC HL + LD (HL),C +RANSIZ2:CALL FINDNXT ;now get the next extent. + JP RANSIZ1 ;continue til all done. +RANSIZ3:POP HL ;we are done, restore the stack and + RET ;return. +; +; Function to return the random record position of a given +; file which has been read in sequential mode up to now. +; +SETRAN: LD HL,(PARAMS) ;point to fcb. + LD DE,32 ;and to last used record. + CALL COMPRAND ;compute random position. + LD HL,33 ;now stuff these values into fcb. + ADD HL,DE + LD (HL),C ;move 'r0'. + INC HL + LD (HL),B ;and 'r1'. + INC HL + LD (HL),A ;and lastly 'r2'. + RET +; +; This routine select the drive specified in (ACTIVE) and +; update the login vector and bitmap table if this drive was +; not already active. +; +LOGINDRV: LD HL,(LOGIN) ;get the login vector. + LD A,(ACTIVE) ;get the default drive. + LD C,A + CALL SHIFTR ;position active bit for this drive + PUSH HL ;into bit 0. + EX DE,HL + CALL SELECT ;select this drive. + POP HL + CALL Z,SLCTERR ;valid drive? + LD A,L ;is this a newly activated drive? + RRA + RET C + LD HL,(LOGIN) ;yes, update the login vector. + LD C,L + LD B,H + CALL SETBIT + LD (LOGIN),HL ;and save. + JP BITMAP ;now update the bitmap. +; +; Function to set the active disk number. +; +SETDSK: LD A,(EPARAM) ;get parameter passed and see if this + LD HL,ACTIVE ;represents a change in drives. + CP (HL) + RET Z + LD (HL),A ;yes it does, log it in. + JP LOGINDRV +; +; This is the 'auto disk select' routine. The firsst byte +; of the fcb is examined for a drive specification. If non +; zero then the drive will be selected and loged in. +; +AUTOSEL:LD A,0FFH ;say 'auto-select activated'. + LD (AUTO),A + LD HL,(PARAMS) ;get drive specified. + LD A,(HL) + AND 1FH ;look at lower 5 bits. + DEC A ;adjust for (1=A, 2=B) etc. + LD (EPARAM),A ;and save for the select routine. + CP 1EH ;check for 'no change' condition. + JP NC,AUTOSL1 ;yes, don't change. + LD A,(ACTIVE) ;we must change, save currently active + LD (OLDDRV),A ;drive. + LD A,(HL) ;and save first byte of fcb also. + LD (AUTOFLAG),A ;this must be non-zero. + AND 0E0H ;whats this for (bits 6,7 are used for + LD (HL),A ;something)? + CALL SETDSK ;select and log in this drive. +AUTOSL1:LD A,(USERNO) ;move user number into fcb. + LD HL,(PARAMS) ;(* upper half of first byte *) + OR (HL) + LD (HL),A + RET ;and return (all done). +; +; Function to return the current cp/m version number. +; +GETVER: LD A,022H ;version 2.2 + JP SETSTAT +; +; Function to reset the disk system. +; +RSTDSK: LD HL,0 ;clear write protect status and log + LD (WRTPRT),HL ;in vector. + LD (LOGIN),HL + XOR A ;select drive 'A'. + LD (ACTIVE),A + LD HL,TBUFF ;setup default dma address. + LD (USERDMA),HL + CALL DEFDMA + JP LOGINDRV ;now log in drive 'A'. +; +; Function to open a specified file. +; +OPENFIL:CALL CLEARS2 ;clear 's2' byte. + CALL AUTOSEL ;select proper disk. + JP OPENIT ;and open the file. +; +; Function to close a specified file. +; +CLOSEFIL: CALL AUTOSEL ;select proper disk. + JP CLOSEIT ;and close the file. +; +; Function to return the first occurence of a specified file +; name. If the first byte of the fcb is '?' then the name will +; not be checked (get the first entry no matter what). +; +GETFST: LD C,0 ;prepare for special search. + EX DE,HL + LD A,(HL) ;is first byte a '?'? + CP '?' + JP Z,GETFST1 ;yes, just get very first entry (zero length match). + CALL SETEXT ;get the extension byte from fcb. + LD A,(HL) ;is it '?'? if yes, then we want + CP '?' ;an entry with a specific 's2' byte. + CALL NZ,CLEARS2 ;otherwise, look for a zero 's2' byte. + CALL AUTOSEL ;select proper drive. + LD C,15 ;compare bytes 0-14 in fcb (12&13 excluded). +GETFST1:CALL FINDFST ;find an entry and then move it into + JP MOVEDIR ;the users dma space. +; +; Function to return the next occurence of a file name. +; +GETNXT: LD HL,(SAVEFCB) ;restore pointers. note that no + LD (PARAMS),HL ;other dbos calls are allowed. + CALL AUTOSEL ;no error will be returned, but the + CALL FINDNXT ;results will be wrong. + JP MOVEDIR +; +; Function to delete a file by name. +; +DELFILE:CALL AUTOSEL ;select proper drive. + CALL ERAFILE ;erase the file. + JP STSTATUS ;set status and return. +; +; Function to execute a sequential read of the specified +; record number. +; +READSEQ:CALL AUTOSEL ;select proper drive then read. + JP RDSEQ +; +; Function to write the net sequential record. +; +WRTSEQ: CALL AUTOSEL ;select proper drive then write. + JP WTSEQ +; +; Create a file function. +; +FCREATE:CALL CLEARS2 ;clear the 's2' byte on all creates. + CALL AUTOSEL ;select proper drive and get the next + JP GETEMPTY ;empty directory space. +; +; Function to rename a file. +; +RENFILE:CALL AUTOSEL ;select proper drive and then switch + CALL CHGNAMES ;file names. + JP STSTATUS +; +; Function to return the login vector. +; +GETLOG: LD HL,(LOGIN) + JP GETPRM1 +; +; Function to return the current disk assignment. +; +GETCRNT:LD A,(ACTIVE) + JP SETSTAT +; +; Function to set the dma address. +; +PUTDMA: EX DE,HL + LD (USERDMA),HL ;save in our space and then get to + JP DEFDMA ;the bios with this also. +; +; Function to return the allocation vector. +; +GETALOC:LD HL,(ALOCVECT) + JP GETPRM1 +; +; Function to return the read-only status vector. +; +GETROV: LD HL,(WRTPRT) + JP GETPRM1 +; +; Function to set the file attributes (read-only, system). +; +SETATTR:CALL AUTOSEL ;select proper drive then save attributes. + CALL SAVEATTR + JP STSTATUS +; +; Function to return the address of the disk parameter block +; for the current drive. +; +GETPARM:LD HL,(DISKPB) +GETPRM1:LD (STATUS),HL + RET +; +; Function to get or set the user number. If (E) was (FF) +; then this is a request to return the current user number. +; Else set the user number from (E). +; +GETUSER:LD A,(EPARAM) ;get parameter. + CP 0FFH ;get user number? + JP NZ,SETUSER + LD A,(USERNO) ;yes, just do it. + JP SETSTAT +SETUSER:AND 1FH ;no, we should set it instead. keep low + LD (USERNO),A ;bits (0-4) only. + RET +; +; Function to read a random record from a file. +; +RDRANDOM: CALL AUTOSEL ;select proper drive and read. + JP READRAN +; +; Function to compute the file size for random files. +; +WTRANDOM: CALL AUTOSEL ;select proper drive and write. + JP WRITERAN +; +; Function to compute the size of a random file. +; +FILESIZE: CALL AUTOSEL ;select proper drive and check file length + JP RANSIZE +; +; Function #37. This allows a program to log off any drives. +; On entry, set (DE) to contain a word with bits set for those +; drives that are to be logged off. The log-in vector and the +; write protect vector will be updated. This must be a M/PM +; special function. +; +LOGOFF: LD HL,(PARAMS) ;get drives to log off. + LD A,L ;for each bit that is set, we want + CPL ;to clear that bit in (LOGIN) + LD E,A ;and (WRTPRT). + LD A,H + CPL + LD HL,(LOGIN) ;reset the login vector. + AND H + LD D,A + LD A,L + AND E + LD E,A + LD HL,(WRTPRT) + EX DE,HL + LD (LOGIN),HL ;and save. + LD A,L ;now do the write protect vector. + AND E + LD L,A + LD A,H + AND D + LD H,A + LD (WRTPRT),HL ;and save. all done. + RET +; +; Get here to return to the user. +; +GOBACK: LD A,(AUTO) ;was auto select activated? + OR A + JP Z,GOBACK1 + LD HL,(PARAMS) ;yes, but was a change made? + LD (HL),0 ;(* reset first byte of fcb *) + LD A,(AUTOFLAG) + OR A + JP Z,GOBACK1 + LD (HL),A ;yes, reset first byte properly. + LD A,(OLDDRV) ;and get the old drive and select it. + LD (EPARAM),A + CALL SETDSK +GOBACK1:LD HL,(USRSTACK) ;reset the users stack pointer. + LD SP,HL + LD HL,(STATUS) ;get return status. + LD A,L ;force version 1.4 compatability. + LD B,H + RET ;and go back to user. +; +; Function #40. This is a special entry to do random i/o. +; For the case where we are writing to unused disk space, this +; space will be zeroed out first. This must be a M/PM special +; purpose function, because why would any normal program even +; care about the previous contents of a sector about to be +; written over. +; +WTSPECL:CALL AUTOSEL ;select proper drive. + LD A,2 ;use special write mode. + LD (MODE),A + LD C,0 ;set write indicator. + CALL POSITN1 ;position the file. + CALL Z,WTSEQ1 ;and write (if no errors). + RET +; +;************************************************************** +;* +;* BDOS data storage pool. +;* +;************************************************************** +; +EMPTYFCB: DB 0E5H ;empty directory segment indicator. +WRTPRT: DW 0 ;write protect status for all 16 drives. +LOGIN: DW 0 ;drive active word (1 bit per drive). +USERDMA:DW 080H ;user's dma address (defaults to 80h). +; +; Scratch areas from parameter block. +; +SCRATCH1: DW 0 ;relative position within dir segment for file (0-3). +SCRATCH2: DW 0 ;last selected track number. +SCRATCH3: DW 0 ;last selected sector number. +; +; Disk storage areas from parameter block. +; +DIRBUF: DW 0 ;address of directory buffer to use. +DISKPB: DW 0 ;contains address of disk parameter block. +CHKVECT:DW 0 ;address of check vector. +ALOCVECT: DW 0 ;address of allocation vector (bit map). +; +; Parameter block returned from the bios. +; +SECTORS:DW 0 ;sectors per track from bios. +BLKSHFT:DB 0 ;block shift. +BLKMASK:DB 0 ;block mask. +EXTMASK:DB 0 ;extent mask. +DSKSIZE:DW 0 ;disk size from bios (number of blocks-1). +DIRSIZE:DW 0 ;directory size. +ALLOC0: DW 0 ;storage for first bytes of bit map (dir space used). +ALLOC1: DW 0 +OFFSET: DW 0 ;first usable track number. +XLATE: DW 0 ;sector translation table address. +; +; +CLOSEFLG: DB 0 ;close flag (=0ffh is extent written ok). +RDWRTFLG: DB 0 ;read/write flag (0ffh=read, 0=write). +FNDSTAT:DB 0 ;filename found status (0=found first entry). +MODE: DB 0 ;I/o mode select (0=random, 1=sequential, 2=special random). +EPARAM: DB 0 ;storage for register (E) on entry to bdos. +RELBLOCK: DB 0 ;relative position within fcb of block number written. +COUNTER:DB 0 ;byte counter for directory name searches. +SAVEFCB:DW 0,0 ;save space for address of fcb (for directory searches). +BIGDISK:DB 0 ;if =0 then disk is > 256 blocks long. +AUTO: DB 0 ;if non-zero, then auto select activated. +OLDDRV: DB 0 ;on auto select, storage for previous drive. +AUTOFLAG: DB 0 ;if non-zero, then auto select changed drives. +SAVNXT: DB 0 ;storage for next record number to access. +SAVEXT: DB 0 ;storage for extent number of file. +SAVNREC:DW 0 ;storage for number of records in file. +BLKNMBR:DW 0 ;block number (physical sector) used within a file or logical sect +LOGSECT:DW 0 ;starting logical (128 byte) sector of block (physical sector). +FCBPOS: DB 0 ;relative position within buffer for fcb of file of interest. +FILEPOS:DW 0 ;files position within directory (0 to max entries -1). +; +; Disk directory buffer checksum bytes. One for each of the +; 16 possible drives. +; +CKSUMTBL: DB 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +; +; Extra space ? +; + DB 0,0,0,0 +; +;************************************************************** +;* +;* B I O S J U M P T A B L E +;* +;************************************************************** +; + ALIGN_NOPS CPMBIOS + +;----------------------------------------------------------------------- +; MZ-80A CPM BIOS STUB - Main Logic in CBIOS.ASM +;----------------------------------------------------------------------- + + ; Bring in the CBIOS stub, has the bootstrap code and DPB place markers. + INCLUDE "cpm22-bios.asm" + + ALIGN_NOPS CBIOSSTART + +;* +;****************** E N D O F C P / M ***************** diff --git a/asm/include/MSBASIC_BuildVersion.asm b/asm/include/MSBASIC_BuildVersion.asm new file mode 100644 index 0000000..cdc5619 --- /dev/null +++ b/asm/include/MSBASIC_BuildVersion.asm @@ -0,0 +1 @@ +BUILD_VERSION EQU 2 diff --git a/asm/include/cpm_buildversion.asm b/asm/include/cpm_buildversion.asm new file mode 100644 index 0000000..05053fe --- /dev/null +++ b/asm/include/cpm_buildversion.asm @@ -0,0 +1 @@ +BUILD_VERSION EQU 1 diff --git a/asm/include/cpm_definitions.asm b/asm/include/cpm_definitions.asm new file mode 100644 index 0000000..5daf9d6 --- /dev/null +++ b/asm/include/cpm_definitions.asm @@ -0,0 +1,589 @@ +;-------------------------------------------------------------------------------------------------------- +;- +;- Name: CPM_Definitions.asm +;- Created: January 2020 +;- Author(s): Philip Smart +;- Description: Sharp MZ series CPM v2.23 +;- Definitions for the Sharp MZ80A CPM v2.23 OS used in the RFS +;- +;- Credits: +;- Copyright: (c) 2019-23 Philip Smart +;- +;- History: Jan 2020 - Initial version. +; May 2020 - Advent of the new RFS PCB v2.0, quite a few changes to accommodate the +; additional and different hardware. The SPI is now onboard the PCB and +; not using the printer interface card. +; Mar 2021 - Changes to work with the RFS v2.1 board. +;- Apr 2021 - Removed ROM and RAM Drive functionality as it provided no performance or +;- use benefit over SD which are much larger and RW. +;- +;-------------------------------------------------------------------------------------------------------- +;- This source file is free software: you can redistribute it and-or modify +;- it under the terms of the GNU General Public License as published +;- by the Free Software Foundation, either version 3 of the License, or +;- (at your option) any later version. +;- +;- This source file is distributed in the hope that it will be useful, +;- but WITHOUT ANY WARRANTY; without even the implied warranty of +;- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +;- GNU General Public License for more details. +;- +;- You should have received a copy of the GNU General Public License +;- along with this program. If not, see . +;-------------------------------------------------------------------------------------------------------- + +;----------------------------------------------- +; Features. +;----------------------------------------------- +HW_SPI_ENA EQU 1 ; Set to 1 if hardware SPI is present on the RFS PCB v2 board. +SW_SPI_ENA EQU 0 ; Set to 1 if software SPI is present on the RFS PCB v2 board. +PP_SPI_ENA EQU 0 ; Set to 1 if using the SPI interface via the Parallel Port, ie. for RFS PCB v1 which doesnt have SPI onboard. + +; Build time options, only set to '1' to build, '0' to disable, only 1 can be set to '1'. +; IF BUILD_VERSION = 0 +BUILD_80C EQU 1 ; Build for an MZ-80A with a 40/80 column card. +BUILD_40C EQU 0 ; Build for a standard 40 column MZ-80A. +; ENDIF +; IF BUILD_VERSION = 1 +;BUILD_80C EQU 0 ; Build for an MZ-80A with a 40/80 column card. +;BUILD_40C EQU 1 ; Build for a standard 40 column MZ-80A. +; ENDIF + +;----------------------------------------------- +; Configurable settings. +;----------------------------------------------- +MAXRDRETRY EQU 002h +MAXWRRETRY EQU 002h +BLKSIZ EQU 4096 ; CP/M allocation size +HSTSIZ EQU 512 ; host disk sector size +HSTSPT EQU 32 ; host disk sectors/trk +HSTBLK EQU HSTSIZ/128 ; CP/M sects/host buff +CPMSPT EQU HSTBLK * HSTSPT ; CP/M sectors/track +SECMSK EQU HSTBLK-1 ; sector mask +WRALL EQU 0 ; write to allocated +WRDIR EQU 1 ; write to directory +WRUAL EQU 2 ; write to unallocated +TMRTICKINTV EQU 5 ; Number of 0.010mSec ticks per interrupt, ie. resolution of RTC. +MTROFFMSECS EQU 100 ; Time from last access to motor being switched off in seconds in TMRTICKINTV ticks. + IF BUILD_80C = 1 +COLW EQU 80 ; Width of the display screen (ie. columns). + ELSE +COLW EQU 40 ; Width of the display screen (ie. columns). + ENDIF +ROW EQU 25 ; Number of rows on display screen. +SCRNSZ EQU COLW * ROW ; Total size, in bytes, of the screen display area. +SCRLW EQU COLW / 8 ; Number of 8 byte regions in a line for hardware scroll. + +; BIOS equates +MAXDISKS EQU 7 ; Max number of Drives supported +KEYBUFSIZE EQU 16 ; Ensure this is a power of 2, max size 256. + +; Debugging +ENADEBUG EQU 0 ; Enable debugging logic, 1 = enable, 0 = disable + + +;----------------------------------------------- +; Entry/compilation start points. +;----------------------------------------------- +CBIOSSTART EQU 0C000h +CBIOSDATA EQU CBIOSSTART - 0400H +UROMADDR EQU 0E800H ; Start of User ROM Address space. +FDCROMADDR EQU 0F000H +CBASE EQU 0A000H +CPMCCP EQU CBASE ; CP/M System entry +CPMBDOS EQU CPMCCP + 0806H ; BDOS entry +CPMBIOS EQU CPMCCP + 01600H ; Original CPM22 BIOS entry +CPMCOPYRMSG EQU CBASE+8 ; Copyright message stored in CP/M binary. +BOOT EQU CBIOSSTART + 0 +WBOOT EQU CBIOSSTART + 3 +WBOOTE EQU CBIOSSTART + 3 +CONST EQU CBIOSSTART + 6 +CONIN EQU CBIOSSTART + 9 +CONOUT EQU CBIOSSTART + 12 +LIST EQU CBIOSSTART + 15 +PUNCH EQU CBIOSSTART + 18 +READER EQU CBIOSSTART + 21 +HOME EQU CBIOSSTART + 24 +SELDSK EQU CBIOSSTART + 27 +SETTRK EQU CBIOSSTART + 30 +SETSEC EQU CBIOSSTART + 33 +SETDMA EQU CBIOSSTART + 36 +READ EQU CBIOSSTART + 39 +WRITE EQU CBIOSSTART + 42 +FRSTAT EQU CBIOSSTART + 45 +SECTRN EQU CBIOSSTART + 48 +UNUSED EQU CBIOSSTART + 51 +BANKTOBANK EQU CBIOSSTART + 54 +CCP EQU CBASE +CCPCLRBUF EQU CBASE + 3 +DPBASE EQU CPMBIOS +CDIRBUF EQU CPMBIOS + (MAXDISKS * 16) +CSVALVMEM EQU CDIRBUF + 128 +CSVALVEND EQU CBIOSDATA - 1 ;CSVALVMEM + 1253 +IOBYT EQU 00003H ; IOBYTE address +CDISK EQU 00004H ; Address of Current drive name and user number +CPMUSERDMA EQU 00080h ; Default CPM User DMA address. +DPSIZE EQU 16 ; Size of a Disk Parameter Block +DPBLOCK0 EQU SCRN - (8 * DPSIZE) ; Location of the 1st DPB in the CBIOS Rom. +DPBLOCK1 EQU DPBLOCK0 + DPSIZE +DPBLOCK2 EQU DPBLOCK1 + DPSIZE +DPBLOCK3 EQU DPBLOCK2 + DPSIZE +DPBLOCK4 EQU DPBLOCK3 + DPSIZE +DPBLOCK5 EQU DPBLOCK4 + DPSIZE +DPBLOCK6 EQU DPBLOCK5 + DPSIZE +DPBLOCK7 EQU DPBLOCK6 + DPSIZE + +;------------------------------------------------------- +; Function entry points in the CBIOS ROMS +;------------------------------------------------------- +UROMJMPTBL EQU UROMADDR + 00020H ; Position at beginning of each bank of an API jump table of public methods in the bank + +; Public functions in CBIOS User ROM Bank 1 - utility functions, ie. Audio. +QREBOOT EQU 0 + UROMJMPTBL +QMELDY EQU 3 + UROMJMPTBL +QTEMP EQU 6 + UROMJMPTBL +QMSTA EQU 9 + UROMJMPTBL +QMSTP EQU 12 + UROMJMPTBL +QBEL EQU 15 + UROMJMPTBL +QMODE EQU 18 + UROMJMPTBL +QTIMESET EQU 21 + UROMJMPTBL +QTIMEREAD EQU 24 + UROMJMPTBL +QCHKKY EQU 27 + UROMJMPTBL +QGETKY EQU 30 + UROMJMPTBL + +; Public functions in CBIOS User ROM Bank 2 - Screen / ANSI terminal functions. +QPRNT EQU 0 + UROMJMPTBL +QPRTHX EQU 3 + UROMJMPTBL +QPRTHL EQU 6 + UROMJMPTBL +QANSITERM EQU 9 + UROMJMPTBL + +; Public functions in CBIOS User ROM Bank 3 - SD Card functions. +SD_INIT EQU 0 + UROMJMPTBL +SD_READ EQU 3 + UROMJMPTBL +SD_WRITE EQU 6 + UROMJMPTBL +SD_GETLBA EQU 9 + UROMJMPTBL +SDC_READ EQU 12 + UROMJMPTBL +SDC_WRITE EQU 15 + UROMJMPTBL + +; Public functions in CBIOS User ROM Bank 4 - Floppy Disk Controller functions. +QDSKINIT EQU 0 + UROMJMPTBL +QSETDRVCFG EQU 3 + UROMJMPTBL +QSETDRVMAP EQU 6 + UROMJMPTBL +QSELDRIVE EQU 9 + UROMJMPTBL +QGETMAPDSK EQU 12 + UROMJMPTBL +QDSKREAD EQU 15 + UROMJMPTBL +QDSKWRITE EQU 18 + UROMJMPTBL + + +;----------------------------------------------- +; Memory mapped ports in hardware. +;----------------------------------------------- +SCRN: EQU 0D000H +ARAM: EQU 0D800H +DSPCTL: EQU 0DFFFH ; Screen 40/80 select register (bit 7) +KEYPA: EQU 0E000h +KEYPB: EQU 0E001h +KEYPC: EQU 0E002h +KEYPF: EQU 0E003h +CSTR: EQU 0E002h +CSTPT: EQU 0E003h +CONT0: EQU 0E004h +CONT1: EQU 0E005h +CONT2: EQU 0E006h +CONTF: EQU 0E007h +SUNDG: EQU 0E008h +TEMP: EQU 0E008h +MEMSW: EQU 0E00CH +MEMSWR: EQU 0E010H +INVDSP: EQU 0E014H +NRMDSP: EQU 0E015H +SCLDSP: EQU 0E200H +SCLBASE: EQU 0E2H +BNKCTRLRST: EQU 0EFF8H ; Bank control reset, returns all registers to power up default. +BNKCTRLDIS: EQU 0EFF9H ; Disable bank control registers by resetting the coded latch. +HWSPIDATA: EQU 0EFFBH ; Hardware SPI Data register (read/write). +HWSPISTART: EQU 0EFFCH ; Start an SPI transfer. +BNKSELMROM: EQU 0EFFDh ; Select RFS Bank1 (MROM) +BNKSELUSER: EQU 0EFFEh ; Select RFS Bank2 (User ROM) +BNKCTRL: EQU 0EFFFH ; Bank Control register (read/write). + +; +; RFS v2 Control Register constants. +; +BBCLK EQU 1 ; BitBang SPI Clock. +SDCS EQU 2 ; SD Card Chip Select, active low. +BBMOSI EQU 4 ; BitBang MOSI (Master Out Serial In). +CDLTCH1 EQU 8 ; Coded latch up count bit 1 +CDLTCH2 EQU 16 ; Coded latch up count bit 2 +CDLTCH3 EQU 32 ; Coded latch up count bit 3 +BK2A19 EQU 64 ; User ROM Device Select Bit 0 (or Address bit 19). +BK2A20 EQU 128 ; User ROM Device Select Bit 1 (or Address bit 20). + ; BK2A20 : BK2A19 + ; 0 0 = Flash RAM 0 (default). + ; 0 1 = Flash RAM 1. + ; 1 0 = Flasm RAM 2 or Static RAM 0. + ; 1 1 = Reserved. + +BNKCTRLDEF EQU BBMOSI+SDCS+BBCLK ; Default on startup for the Bank Control register. + +;----------------------------------------------- +; IO ports in hardware and values. +;----------------------------------------------- +SPI_OUT EQU 0FFH +SPI_IN EQU 0FEH +; +DOUT_LOW EQU 000H +DOUT_HIGH EQU 004H +DOUT_MASK EQU 004H +DIN_LOW EQU 000H +DIN_HIGH EQU 001H +CLOCK_LOW EQU 000H +CLOCK_HIGH EQU 002H +CLOCK_MASK EQU 0FDH +CS_LOW EQU 000H +CS_HIGH EQU 001H + +;----------------------------------------------- +; Rom File System Header (MZF) +;----------------------------------------------- +RFS_ATRB: EQU 00000h ; Code Type, 01 = Machine Code. +RFS_NAME: EQU 00001h ; Title/Name (17 bytes). +RFS_SIZE: EQU 00012h ; Size of program. +RFS_DTADR: EQU 00014h ; Load address of program. +RFS_EXADR: EQU 00016h ; Exec address of program. +RFS_COMNT: EQU 00018h ; COMMENT +MZFHDRSZ EQU 128 ; Full MZF Header size +MZFHDRNCSZ EQU 24 ; Only the primary MZF data, no comment field. +RFSSECTSZ EQU 256 +MROMSIZE EQU 4096 +UROMSIZE EQU 2048 +BANKSPERTRACK EQU (ROMSECTORSIZE * ROMSECTORS) / UROMSIZE ; (8) We currently only use the UROM for disk images. +SECTORSPERBANK EQU UROMSIZE / ROMSECTORSIZE ; (16) +SECTORSPERBLOCK EQU RFSSECTSZ/ROMSECTORSIZE ; (2) +ROMSECTORSIZE EQU 128 +ROMSECTORS EQU 128 +RAMDRVSECTORSIZE EQU 512 +RAMDRVMAXBANK EQU (RAMDRVSIZE * 1024)/UROMSIZE ; Maximum Bank number for the RAM drive. + +;ROMBK1: EQU 01016H ; CURRENT MROM BANK +;ROMBK2: EQU 01017H ; CURRENT USERROM BANK +;WRKROMBK1: EQU 01018H ; WORKING MROM BANK +;WRKROMBK2: EQU 01019H ; WORKING USERROM BANK + +;----------------------------------------------- +; ROM Banks, 0-7 are reserved for alternative +; Monitor versions, CPM and RFS +; code in MROM bank, +; 0-7 are reserved for RFS code in +; the User ROM bank. +; 8-15 are reserved for CPM code in +; the User ROM bank. +;----------------------------------------------- +MROMPAGES EQU 8 +USRROMPAGES EQU 12 ; Monitor ROM : User ROM +ROMBANK0 EQU 0 ; MROM SA1510 40 Char : RFS Bank 0 - Main RFS Entry point and functions. +ROMBANK1 EQU 1 ; MROM SA1510 80 Char : RFS Bank 1 - Floppy disk controller and utilities. +ROMBANK2 EQU 2 ; CPM 2.2 CBIOS : RFS Bank 2 - SD Card controller and utilities. +ROMBANK3 EQU 3 ; RFS Utilities : RFS Bank 3 - Cmdline tools (Memory, Printer, Help) +ROMBANK4 EQU 4 ; Free : RFS Bank 4 - CMT Utilities. +ROMBANK5 EQU 5 ; Free : RFS Bank 5 +ROMBANK6 EQU 6 ; Free : RFS Bank 6 +ROMBANK7 EQU 7 ; Free : RFS Bank 7 - Memory and timer test utilities. +ROMBANK8 EQU 8 ; : CBIOS Bank 1 - Utilities +ROMBANK9 EQU 9 ; : CBIOS Bank 2 - Screen / ANSI Terminal +ROMBANK10 EQU 10 ; : CBIOS Bank 3 - SD Card +ROMBANK11 EQU 11 ; : CBIOS Bank 4 - Floppy disk controller. + + + +OBJCD EQU 001h + +;----------------------------------------------- +; IO Registers +;----------------------------------------------- +FDC EQU 0D8h ; MB8866 IO Region 0D8h - 0DBh +FDC_CR EQU FDC + 000h ; Command Register +FDC_STR EQU FDC + 000h ; Status Register +FDC_TR EQU FDC + 001h ; Track Register +FDC_SCR EQU FDC + 002h ; Sector Register +FDC_DR EQU FDC + 003h ; Data Register +FDC_MOTOR EQU FDC + 004h ; DS[0-3] and Motor control. 4 drives DS= BIT 0 -> Bit 2 = Drive number, 2=1,1=0,0=0 DS0, 2=1,1=0,0=1 DS1 etc + ; bit 7 = 1 MOTOR ON LOW (Active) +FDC_SIDE EQU FDC + 005h ; Side select, Bit 0 when set = SIDE SELECT LOW + +;----------------------------------------------- +; Common character definitions. +;----------------------------------------------- +SCROLL EQU 001H ;Set scroll direction UP. +BELL EQU 007H +SPACE EQU 020H +TAB EQU 009H ;TAB ACROSS (8 SPACES FOR SD-BOARD) +CR EQU 00DH +LF EQU 00AH +FF EQU 00CH +CS EQU 0CH ; Clear screen +DELETE EQU 07FH +BACKS EQU 008H +SOH EQU 1 ; For XModem etc. +EOT EQU 4 +ACK EQU 6 +NAK EQU 015H +NUL EQU 000H +NULL EQU 000H +CTRL_A EQU 001H +CTRL_B EQU 002H +CTRL_C EQU 003H +CTRL_D EQU 004H +CTRL_E EQU 005H +CTRL_F EQU 006H +CTRL_G EQU 007H +CTRL_H EQU 008H +CTRL_I EQU 009H +CTRL_J EQU 00AH +CTRL_K EQU 00BH +CTRL_L EQU 00CH +CTRL_M EQU 00DH +CTRL_N EQU 00EH +CTRL_O EQU 00FH +CTRL_P EQU 010H +CTRL_Q EQU 011H +CTRL_R EQU 012H +CTRL_S EQU 013H +CTRL_T EQU 014H +CTRL_U EQU 015H +CTRL_V EQU 016H +CTRL_W EQU 017H +CTRL_X EQU 018H +CTRL_Y EQU 019H +CTRL_Z EQU 01AH +ESC EQU 01BH +CTRL_SLASH EQU 01CH +CTRL_LB EQU 01BH +CTRL_RB EQU 01DH +CTRL_CAPPA EQU 01EH +CTRL_UNDSCR EQU 01FH +CTRL_AT EQU 000H +NOKEY EQU 0F0H +CURSRIGHT EQU 0F1H +CURSLEFT EQU 0F2H +CURSUP EQU 0F3H +CURSDOWN EQU 0F4H +DBLZERO EQU 0F5H +INSERT EQU 0F6H +CLRKEY EQU 0F7H +HOMEKEY EQU 0F8H +BREAKKEY EQU 0FBH +GRAPHKEY EQU 0FCH +ALPHAKEY EQU 0FDH + + +; MMC/SD command (SPI mode) +CMD0 EQU 64 + 0 ; GO_IDLE_STATE +CMD1 EQU 64 + 1 ; SEND_OP_COND +ACMD41 EQU 0x40+41 ; SEND_OP_COND (SDC) +CMD8 EQU 64 + 8 ; SEND_IF_COND +CMD9 EQU 64 + 9 ; SEND_CSD +CMD10 EQU 64 + 10 ; SEND_CID +CMD12 EQU 64 + 12 ; STOP_TRANSMISSION +CMD13 EQU 64 + 13 ; SEND_STATUS +ACMD13 EQU 0x40+13 ; SD_STATUS (SDC) +CMD16 EQU 64 + 16 ; SET_BLOCKLEN +CMD17 EQU 64 + 17 ; READ_SINGLE_BLOCK +CMD18 EQU 64 + 18 ; READ_MULTIPLE_BLOCK +CMD23 EQU 64 + 23 ; SET_BLOCK_COUNT +ACMD23 EQU 0x40+23 ; SET_WR_BLK_ERASE_COUNT (SDC) +CMD24 EQU 64 + 24 ; WRITE_BLOCK +CMD25 EQU 64 + 25 ; WRITE_MULTIPLE_BLOCK +CMD32 EQU 64 + 32 ; ERASE_ER_BLK_START +CMD33 EQU 64 + 33 ; ERASE_ER_BLK_END +CMD38 EQU 64 + 38 ; ERASE +CMD55 EQU 64 + 55 ; APP_CMD +CMD58 EQU 64 + 58 ; READ_OCR + +; Card type flags (CardType) +CT_MMC EQU 001H ; MMC ver 3 +CT_SD1 EQU 002H ; SD ver 1 +CT_SD2 EQU 004H ; SD ver 2 +CT_SDC EQU CT_SD1|CT_SD2 ; SD +CT_BLOCK EQU 008H ; Block addressing + +; Disk types. +DSKTYP_FDC EQU 0 ; Type of disk is a Floppy disk and handled by the FDC controller. +DSKTYP_ROM EQU 1 ; Type of disk is a ROM and handled by the ROM methods. +DSKTYP_SDC EQU 2 ; Type of disk is an SD Card and handled by the SD Card methods. +DSKTYP_RAM EQU 3 ; Type of disk is a RAM Drive handled by ROM/RAM methods. + +; +; Rom Filing System constants. +; +RFS_DIRENT EQU 256 ; Directory entries in the RFS directory. +RFS_DIRENTSZ EQU 32 ; Size of a directory entry. +RFS_DIRSIZE EQU RFS_DIRENT * RFS_DIRENTSZ ; Total size of the directory. +RFS_BLOCKSZ EQU 65536 ; Size of a file block per directory entry. +RFS_DRIVES EQU 10 ; Number of RFS Drives (Images). +RFS_IMGSZ EQU RFS_DIRSIZE + (RFS_DIRENT * RFS_BLOCKSZ) ; Total size of the RFS image. +RFS_END_ADDR EQU 010000000H ; End of RFS/Start of CP/M. + +; +; CPM constants +; +CPM_SD_SEC EQU 32 +CPM_SD_TRK EQU 1024 +CPM_SD_IMGSZ EQU CPM_SD_TRK * CPM_SD_SEC * SD_SECSIZE + +; +; SD Card constants. +; +SD_SECSIZE EQU 512 ; Default size of an SD Sector +SD_SECPTRK EQU CPM_SD_SEC ; Sectors of SD_SECSIZE per virtual track. +SD_TRACKS EQU CPM_SD_TRK ; Number of virtual tracks per disk image. +SD_RETRIES EQU 00100H ; Number of retries before giving up. + + +;----------------------------------------------- +; BIOS WORK AREA (MZ80A) +;----------------------------------------------- + ORG CBIOSDATA + + ; Keyboard processing, ensure starts where LSB = 0. +VARSTART EQU $ ; Start of variables. +KEYBUF: DS virtual KEYBUFSIZE ; Interrupt driven keyboard buffer. +KEYCOUNT: DS virtual 1 +KEYWRITE: DS virtual 2 ; Pointer into the buffer where the next character should be placed. +KEYREAD: DS virtual 2 ; Pointer into the buffer where the next character can be read. +KEYLAST: DS virtual 1 ; KEY LAST VALUE +KEYRPT: DS virtual 1 ; KEY REPEAT COUNTER +USRBANKSAV: DS virtual 1 ; Save user bank number when calling another user bank. +HLSAVE: DS virtual 2 ; Space to save HL register when manipulating stack. +ROMCTL DS virtual 1 ; Rom Paging control register contents. +; +SPV: +IBUFE: ; TAPE BUFFER (128 BYTES) +ATRB: DS virtual 1 ; ATTRIBUTE +NAME: DS virtual 17 ; FILE NAME +SIZE: DS virtual 2 ; BYTESIZE +DTADR: DS virtual 2 ; DATA ADDRESS +EXADR: DS virtual 2 ; EXECUTION ADDRESS +COMNT: DS virtual 92 ; Comment / code area of CMT header. +SWPW: DS virtual 10 ; SWEEP WORK +KDATW: DS virtual 2 ; KEY WORK +KANAF: DS virtual 1 ; KANA FLAG (01=GRAPHIC MODE) +DSPXY: DS virtual 2 ; DISPLAY COORDINATES +;DSPXYLST: DS virtual 2 ; Last known cursor position, to compare with DSPXY to detect changes. +MANG: DS virtual 6 ; COLUMN MANAGEMENT +MANGE: DS virtual 1 ; COLUMN MANAGEMENT END +PBIAS: DS virtual 1 ; PAGE BIAS +ROLTOP: DS virtual 1 ; ROLL TOP BIAS +MGPNT: DS virtual 1 ; COLUMN MANAG. POINTER +PAGETP: DS virtual 2 ; PAGE TOP +ROLEND: DS virtual 1 ; ROLL END + DS virtual 14 ; BIAS +FLASH: DS virtual 1 ; FLASHING DATA +SFTLK: DS virtual 1 ; SHIFT LOCK +REVFLG: DS virtual 1 ; REVERSE FLAG +FLSDT: DS virtual 1 ; CURSOR DATA +STRGF: DS virtual 1 ; STRING FLAG +DPRNT: DS virtual 1 ; TAB COUNTER +FLASHCTL: DS virtual 1 ; CURSOR FLASH CONTROL. BIT 0 = Cursor On/Off, BIT 1 = Cursor displayed. +DSPXYADDR: DS virtual 2 ; Address of last known position. +;AMPM: DS virtual 1 ; AMPM DATA +;TIMFG: DS virtual 1 ; TIME FLAG +SWRK: DS virtual 1 ; KEY SOUND FLAG +TEMPW: DS virtual 1 ; TEMPO WORK +ONTYO: DS virtual 1 ; ONTYO WORK +OCTV: DS virtual 1 ; OCTAVE WORK +RATIO: DS virtual 2 ; ONPU RATIO +;BUFER: DS virtual 81 ; GET LINE BUFFER +;KEYBUF: DS virtual 1 ; KEY BUFFER +DRVAVAIL DS virtual 1 ; Flag to indicate which drive controllers are available. Bit 2 = SD, Bit 1 = ROM, Bit 0 = FDC +TIMESEC DS virtual 6 ; RTC 48bit TIME IN MILLISECONDS +FDCCMD DS virtual 1 ; LAST FDC COMMAND SENT TO CONTROLLER. +MOTON DS virtual 1 ; MOTOR ON = 1, OFF = 0 +INVFDCDATA: DS virtual 1 ; INVERT DATA COMING FROM FDC, 1 = INVERT, 0 = AS IS +TRK0FD1 DS virtual 1 ; FD 1 IS AT TRACK 0 = BIT 0 set +TRK0FD2 DS virtual 1 ; FD 2 IS AT TRACK 0 = BIT 0 set +TRK0FD3 DS virtual 1 ; FD 3 IS AT TRACK 0 = BIT 0 set +TRK0FD4 DS virtual 1 ; FD 4 IS AT TRACK 0 = BIT 0 set +RETRIES DS virtual 2 ; DATA READ RETRIES +TMPADR DS virtual 2 ; TEMPORARY ADDRESS STORAGE +TMPSIZE DS virtual 2 ; TEMPORARY SIZE +TMPCNT DS virtual 2 ; TEMPORARY COUNTER +; +CPMROMLOC: DS virtual 2 ; Upper Byte = ROM Bank, Lower Byte = Page of CPM Image. +;CPMROMDRV0: DS virtual 2 ; Upper Byte = ROM Bank, Lower Byte = Page of CPM Rom Drive Image Disk 0. +;CPMROMDRV1: DS virtual 2 ; Upper Byte = ROM Bank, Lower Byte = Page of CPM Rom Drive Image Disk 1. +NDISKS: DS virtual 1 ; Dynamically calculated number of disks on boot. +DISKMAP: DS virtual MAXDISKS ; Disk map of CPM logical to physical controller disk. +FDCDISK: DS virtual 1 ; Physical disk number. +SECPERTRK: DS virtual 1 ; Sectors per track for 1 head. +SECPERHEAD: DS virtual 1 ; Sectors per head. +SECTORCNT: DS virtual 1 ; Sector size as a count of how many sectors make 512 bytes. +DISKTYPE: DS virtual 1 ; Disk type of current selection. +MTROFFTIMER: DS virtual 1 ; Second down counter for FDC motor off. +; +SEKDSK: DS virtual 1 ; Seek disk number +SEKTRK: DS virtual 2 ; Seek disk track +SEKSEC: DS virtual 1 ; Seek sector number +SEKHST: DS virtual 1 ; Seek sector host +; +HSTDSK: DS virtual 1 ; Host disk number +HSTTRK: DS virtual 2 ; Host track number +HSTSEC: DS virtual 1 ; Host sector number +HSTWRT: DS virtual 1 ; Host write flag +HSTACT: DS virtual 1 ; +; +UNACNT: DS virtual 1 ; Unalloc rec cnt +UNADSK: DS virtual 1 ; Last unalloc disk +UNATRK: DS virtual 2 ; Last unalloc track +UNASEC: DS virtual 1 ; Last unalloc sector +; +ERFLAG: DS virtual 1 ; Error number, 0 = no error. +READOP: DS virtual 1 ; If read operation then 1, else 0 for write. +RSFLAG: DS virtual 1 ; Read sector flag. +WRTYPE: DS virtual 1 ; Write operation type. +TRACKNO: DS virtual 2 ; Host controller track number +SECTORNO: DS virtual 1 ; Host controller sector number +DMAADDR: DS virtual 2 ; Last DMA address +HSTBUF: DS virtual 512 ; Host buffer for disk sector storage +HSTBUFE: + +SDVER: DS virtual 1 ; SD Card version. +SDCAP: DS virtual 1 ; SD Card capabilities.. +SDSTARTSEC DS virtual 4 ; Starting sector of data to read/write from/to SD card. +SDBUF: DS virtual 11 ; SD Card command fram buffer for the command and response storage. + +CURSORPSAV DS virtual 2 ; Cursor save position;default 0,0 +HAVELOADED DS virtual 1 ; To show that a value has been put in for Ansi emualtor. +ANSIFIRST DS virtual 1 ; Holds first character of Ansi sequence +NUMBERBUF DS virtual 20 ; Buffer for numbers in Ansi +NUMBERPOS DS virtual 2 ; Address within buffer +CHARACTERNO DS virtual 1 ; Byte within Ansi sequence. 0=first,255=other +CURSORCOUNT DS virtual 1 ; 1/50ths of a second since last change +FONTSET DS virtual 1 ; Ansi font setup. +JSW_FF DS virtual 1 ; Byte value to turn on/off FF routine +JSW_LF DS virtual 1 ; Byte value to turn on/off LF routine +CHARACTER DS virtual 1 ; To buffer character to be printed. +CURSORPOS DS virtual 2 ; Cursor position, default 0,0. +BOLDMODE DS virtual 1 +HIBRITEMODE DS virtual 1 ; 0 means on, &C9 means off +UNDERSCMODE DS virtual 1 +ITALICMODE DS virtual 1 +INVMODE DS virtual 1 +CHGCURSMODE DS virtual 1 +ANSIMODE DS virtual 1 ; 1 = on, 0 = off +COLOUR EQU 0 + +SPSAVE: DS virtual 2 ; CPM Stack save. +SPISRSAVE: DS virtual 2 + ; Stack space for the CBIOS. +MSGSTRBUF: DS virtual 128 ; Lower end of the stack space is for interbank message printing, ie.space for a string to print. +BIOSSTACK EQU $ + ; Stack space for the Interrupt Service Routine. + DS virtual 16 ; Max 8 stack pushes. +ISRSTACK EQU $ + +DBGSTACKP: DS virtual 2 + DS virtual 36 +DBGSTACK: EQU $ + +VAREND EQU $ ; End of variables diff --git a/asm/include/macros.asm b/asm/include/macros.asm new file mode 100644 index 0000000..98f06ac --- /dev/null +++ b/asm/include/macros.asm @@ -0,0 +1,34 @@ +; the following is only to get the original length of 2048 bytes +ALIGN: MACRO ?boundary + DS ?boundary - 1 - ($ + ?boundary - 1) % ?boundary, 0FFh + ENDM + +; the following is only to get the original length of 2048 bytes +ALIGN_NOPS:MACRO ?boundary + DS ?boundary - 1 - ($ + ?boundary - 1) % ?boundary, 000h + ENDM + +; +; Pads up to a certain address. +; Gives an error message if that address is already exceeded. +; +PAD: MACRO ?address + IF $ > ?address + ERROR "Alignment exceeds %s"; % ?address + ENDIF + ds ?address - $ + ENDM + +; +; Pads up to the next multiple of the specified address. +; +;ALIGN: MACRO ?boundary +; ds ?boundary - 1 - ($ + ?boundary - 1) % ?boundary +; ENDM + +; +; Pads to ensure a section of the given size does not cross a 100H boundary. +; +ALIGN_FIT8: MACRO ?size + ds (($ + ?size - 1) >> 8) != ($ >> 8) && (100H - ($ & 0FFH)) || 0 + ENDM diff --git a/asm/include/msbasic_buildversion.asm b/asm/include/msbasic_buildversion.asm new file mode 100644 index 0000000..cdc5619 --- /dev/null +++ b/asm/include/msbasic_buildversion.asm @@ -0,0 +1 @@ +BUILD_VERSION EQU 2 diff --git a/asm/include/msbasic_definitions.asm b/asm/include/msbasic_definitions.asm new file mode 100644 index 0000000..c272ddd --- /dev/null +++ b/asm/include/msbasic_definitions.asm @@ -0,0 +1,473 @@ +;-------------------------------------------------------------------------------------------------------- +;- +;- Name: MSBASIC_Definitions.asm +;- Created: June 2020 +;- Author(s): Philip Smart +;- Description: Sharp MZ series CPM v2.23 +;- Definitions for the Sharp MZ80A CPM v2.23 OS used in the RFS +;- +;- Credits: +;- Copyright: (c) 2019-23 Philip Smart +;- +;- History: Jan 2020 - Initial version. +; May 2020 - Advent of the new RFS PCB v2.0, quite a few changes to accommodate the +; additional and different hardware. The SPI is now onboard the PCB and +; not using the printer interface card. +; Jun 2020 - Copied and strpped from TZFS for BASIC. +; Mar 2021 - Updates to run on v2.1 RFS board and provide SD card CLOAD/CSAVE and DIR +; along with bug fixes. +; +;-------------------------------------------------------------------------------------------------------- +;- This source file is free software: you can redistribute it and-or modify +;- it under the terms of the GNU General Public License as published +;- by the Free Software Foundation, either version 3 of the License, or +;- (at your option) any later version. +;- +;- This source file is distributed in the hope that it will be useful, +;- but WITHOUT ANY WARRANTY; without even the implied warranty of +;- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +;- GNU General Public License for more details. +;- +;- You should have received a copy of the GNU General Public License +;- along with this program. If not, see . +;-------------------------------------------------------------------------------------------------------- + +;----------------------------------------------- +; Features. +;----------------------------------------------- + +;----------------------------------------------- + +;----------------------------------------------- +; Configurable settings. +;----------------------------------------------- +; Build options. Set just one to '1' the rest to '0'. +; NB: As there are now 4 versions and 1 or more need to be built, ie. MZ-80A and RFS version for RFS, a flag is set in the file +; BASIC_build.asm which configures the equates below for the correct build. + IF BUILD_VERSION = 0 +BUILD_MZ80A EQU 1 ; Build for the standard Sharp MZ80A, no lower memory. Manually change MAXMEM above. +BUILD_RFS EQU 0 ; Build for standard RFS with SD enhancements. +BUILD_RFSTZ EQU 0 ; Build for RFS where the tranZPUter board is available without the K64F and running under RFS. +BUILD_TZFS EQU 0 ; Build for TZFS where extended memory is available. +BUILD_80C EQU 0 +INCLUDE_ANSITERM EQU 1 ; Include the Ansi terminal emulation processor in the build. + ENDIF + IF BUILD_VERSION = 1 +BUILD_MZ80A EQU 0 +BUILD_RFS EQU 1 +BUILD_RFSTZ EQU 0 +BUILD_TZFS EQU 0 +BUILD_80C EQU 1 +INCLUDE_ANSITERM EQU 1 ; Include the Ansi terminal emulation processor in the build. + ENDIF + IF BUILD_VERSION = 2 +BUILD_MZ80A EQU 0 +BUILD_RFS EQU 1 +BUILD_RFSTZ EQU 0 +BUILD_TZFS EQU 0 +BUILD_80C EQU 0 +INCLUDE_ANSITERM EQU 1 ; Include the Ansi terminal emulation processor in the build. + ENDIF + IF BUILD_VERSION = 3 +BUILD_MZ80A EQU 0 +BUILD_RFS EQU 0 +BUILD_RFSTZ EQU 1 +BUILD_TZFS EQU 0 +BUILD_80C EQU 1 +INCLUDE_ANSITERM EQU 1 ; Include the Ansi terminal emulation processor in the build. + ENDIF + IF BUILD_VERSION = 4 +BUILD_MZ80A EQU 0 +BUILD_RFS EQU 0 +BUILD_RFSTZ EQU 0 +BUILD_TZFS EQU 1 +BUILD_80C EQU 1 +INCLUDE_ANSITERM EQU 1 ; Include the Ansi terminal emulation processor in the build. + ENDIF + IF BUILD_80C = 1 +COLW: EQU 80 ; Width of the display screen (ie. columns). + ELSE +COLW: EQU 40 ; Width of the display screen (ie. columns). + ENDIF +TMRTICKINTV EQU 5 ; Number of 0.010mSec ticks per interrupt, ie. resolution of RTC. +ROW: EQU 25 ; Number of rows on display screen. +SCRNSZ: EQU COLW * ROW ; Total size, in bytes, of the screen display area. +SCRLW: EQU COLW / 8 ; Number of 8 byte regions in a line for hardware scroll. + +; BIOS equates +KEYBUFSIZE EQU 64 ; Ensure this is a power of 2, max size 256. + IF BUILD_MZ80A = 1 +MAXMEM EQU 0CFFFH ; Top of RAM on a standard Sharp MZ80A. + ENDIF + IF BUILD_RFS = 1 +MAXMEM EQU 0CFFFH - TZSVCSECSIZE ; Top of RAM on a standard RFS equipped Sharp MZ80A. Top 512 bytes used by RFS SD sector buffer. + ENDIF + IF BUILD_TZFS+BUILD_RFSTZ > 0 +MAXMEM EQU 10000H - TZSVCSIZE ; Top of RAM on the tranZPUter + ENDIF + +; Tape load/save modes. Used as a flag to enable common code. +TAPELOAD EQU 1 +CTAPELOAD EQU 2 +TAPESAVE EQU 3 +CTAPESAVE EQU 4 + +; Debugging +ENADEBUG EQU 0 ; Enable debugging logic, 1 = enable, 0 = disable + +;----------------------------------------------- +; CMT Object types. +;----------------------------------------------- +ATR_OBJ EQU 1 +ATR_BASIC_PROG EQU 2 +ATR_BASIC_DATA EQU 3 +ATR_SRC_FILE EQU 4 +ATR_RELOC_FILE EQU 5 +ATR_BASIC_MSCAS EQU 07EH +ATR_BASIC_MSTXT EQU 07FH +ATR_PASCAL_PROG EQU 0A0H +ATR_PASCAL_DATA EQU 0A1H +CMTATRB EQU 010F0H +CMTNAME EQU 010F1H + +;------------------------------------------------------- +; Function entry points in the standard SA-1510 Monitor. +;------------------------------------------------------- +QWRI EQU 00021h +QWRD EQU 00024h +QRDI EQU 00027h +QRDD EQU 0002Ah +QVRFY EQU 0002Dh + +;------------------------------------------------------- +; Function entry points in the RFS ROM. +;------------------------------------------------------- +CMT_RDINF EQU 0E886H ; UROMADDR+86H - Tape/SD intercept handler - Read Header +CMT_RDDATA EQU 0E889H ; UROMADDR+89H - Tape/SD intercept handler - Read Data +CMT_WRINF EQU 0E88CH ; UROMADDR+80H - Tape/SD intercept handler - Write Header +CMT_WRDATA EQU 0E88FH ; UROMADDR+8FH - Tape/SD intercept handler - Write Data +CMT_VERIFY EQU 0E892H ; UROMADDR+92H - Tape/SD intercept handler - Verify Data +CMT_DIR EQU 0E895H ; UROMADDR+95H - SD directory command. +CNV_ATOS EQU 0E898H ; UROMADDR+98H - Convert an ASCII string into Sharp ASCII + +;----------------------------------------------- +; BASIC ERROR CODE VALUES +;----------------------------------------------- +NF EQU 00H ; NEXT without FOR +SN EQU 02H ; Syntax error +RG EQU 04H ; RETURN without GOSUB +OD EQU 06H ; Out of DATA +FC EQU 08H ; Function call error +OV EQU 0AH ; Overflow +OM EQU 0CH ; Out of memory +UL EQU 0EH ; Undefined line number +BS EQU 10H ; Bad subscript +DDA EQU 12H ; Re-DIMensioned array +DZ EQU 14H ; Division by zero (/0) +ID EQU 16H ; Illegal direct +TM EQU 18H ; Type miss-match +OS EQU 1AH ; Out of string space +LS EQU 1CH ; String too long +ST EQU 1EH ; String formula too complex +CN EQU 20H ; Can't CONTinue +UF EQU 22H ; UnDEFined FN function +MO EQU 24H ; Missing operand +HX EQU 26H ; HEX error +BN EQU 28H ; BIN error +BV EQU 2AH ; Bad Value error +IO EQU 2CH ; IO error + +;----------------------------------------------- +; Memory mapped ports in hardware. +;----------------------------------------------- +SCRN: EQU 0D000H +ARAM: EQU 0D800H +DSPCTL: EQU 0DFFFH ; Screen 40/80 select register (bit 7) +KEYPA: EQU 0E000h +KEYPB: EQU 0E001h +KEYPC: EQU 0E002h +KEYPF: EQU 0E003h +CSTR: EQU 0E002h +CSTPT: EQU 0E003h +CONT0: EQU 0E004h +CONT1: EQU 0E005h +CONT2: EQU 0E006h +CONTF: EQU 0E007h +SUNDG: EQU 0E008h +TEMP: EQU 0E008h +MEMSW: EQU 0E00CH +MEMSWR: EQU 0E010H +INVDSP: EQU 0E014H +NRMDSP: EQU 0E015H +SCLDSP: EQU 0E200H +SCLBASE: EQU 0E2H +BNKCTRLRST: EQU 0EFF8H ; Bank control reset, returns all registers to power up default. +BNKCTRLDIS: EQU 0EFF9H ; Disable bank control registers by resetting the coded latch. +HWSPIDATA: EQU 0EFFBH ; Hardware SPI Data register (read/write). +HWSPISTART: EQU 0EFFCH ; Start an SPI transfer. +BNKSELMROM: EQU 0EFFDh ; Select RFS Bank1 (MROM) +BNKSELUSER: EQU 0EFFEh ; Select RFS Bank2 (User ROM) +BNKCTRL: EQU 0EFFFH ; Bank Control register (read/write). + +;----------------------------------------------- +; IO Registers +;----------------------------------------------- +FDC EQU 0D8h ; MB8866 IO Region 0D8h - 0DBh +FDC_CR EQU FDC + 000h ; Command Register +FDC_STR EQU FDC + 000h ; Status Register +FDC_TR EQU FDC + 001h ; Track Register +FDC_SCR EQU FDC + 002h ; Sector Register +FDC_DR EQU FDC + 003h ; Data Register +FDC_MOTOR EQU FDC + 004h ; DS[0-3] and Motor control. 4 drives DS= BIT 0 -> Bit 2 = Drive number, 2=1,1=0,0=0 DS0, 2=1,1=0,0=1 DS1 etc + ; bit 7 = 1 MOTOR ON LOW (Active) +FDC_SIDE EQU FDC + 005h ; Side select, Bit 0 when set = SIDE SELECT LOW + +;----------------------------------------------- +; Common character definitions. +;----------------------------------------------- +SCROLL EQU 001H ;Set scroll direction UP. +BELL EQU 007H +SPACE EQU 020H +TAB EQU 009H ;TAB ACROSS (8 SPACES FOR SD-BOARD) +CR EQU 00DH +LF EQU 00AH +FF EQU 00CH +CS EQU 0CH ; Clear screen +DELETE EQU 07FH +BACKS EQU 008H +SOH EQU 1 ; For XModem etc. +EOT EQU 4 +ACK EQU 6 +NAK EQU 015H +NUL EQU 000H +;NULL EQU 000H +CTRL_A EQU 001H +CTRL_B EQU 002H +CTRL_C EQU 003H +CTRL_D EQU 004H +CTRL_E EQU 005H +CTRL_F EQU 006H +CTRL_G EQU 007H +CTRL_H EQU 008H +CTRL_I EQU 009H +CTRL_J EQU 00AH +CTRL_K EQU 00BH +CTRL_L EQU 00CH +CTRL_M EQU 00DH +CTRL_N EQU 00EH +CTRL_O EQU 00FH +CTRL_P EQU 010H +CTRL_Q EQU 011H +CTRL_R EQU 012H +CTRL_S EQU 013H +CTRL_T EQU 014H +CTRL_U EQU 015H +CTRL_V EQU 016H +CTRL_W EQU 017H +CTRL_X EQU 018H +CTRL_Y EQU 019H +CTRL_Z EQU 01AH +ESC EQU 01BH +CTRL_SLASH EQU 01CH +CTRL_LB EQU 01BH +CTRL_RB EQU 01DH +CTRL_CAPPA EQU 01EH +CTRL_UNDSCR EQU 01FH +CTRL_AT EQU 000H +NOKEY EQU 0F0H +CURSRIGHT EQU 0F1H +CURSLEFT EQU 0F2H +CURSUP EQU 0F3H +CURSDOWN EQU 0F4H +DBLZERO EQU 0F5H +INSERT EQU 0F6H +CLRKEY EQU 0F7H +HOMEKEY EQU 0F8H +BREAKKEY EQU 0FBH +GRAPHKEY EQU 0FCH +ALPHAKEY EQU 0FDH + + +;----------------------------------------------- +; Rom File System variable addresses. +;----------------------------------------------- +; Starting 1000H - Generally unused bytes not cleared by the monitor. +ROMBK1: EQU 01016H ; CURRENT MROM BANK +ROMBK2: EQU 01017H ; CURRENT USERROM BANK +WRKROMBK1: EQU 01018H ; WORKING MROM BANK +WRKROMBK2: EQU 01019H ; WORKING USERROM BANK +ROMCTL: EQU 0101AH ; Current Bank control register setting. +SCRNMODE: EQU 0101BH ; Mode of screen, 0 = 40 char, 1 = 80 char. +TMPADR: EQU 0101CH ; TEMPORARY ADDRESS STORAGE +TMPSIZE: EQU 0101EH ; TEMPORARY SIZE +TMPCNT: EQU 01020H ; TEMPORARY COUNTER +TMPLINECNT: EQU 01022H ; Temporary counter for displayed lines. +TMPSTACKP: EQU 01024H ; Temporary stack pointer save. +SDVER: EQU 01026H +SDCAP: EQU 01027H +SDDRIVENO EQU 01028H ; RFS SDCFS Active Drive Number +CMTFILENO EQU 01029H ; Next Sequential file number to read when file request given without name. +TZPU: EQU 0102AH ; Tranzputer present flag (0 = not present, > 0 = present and version number). +; Variables sharing the BUFER buffer, normally the BUFER is only used to get keyboard input and so long as data in BUFER is processed +; before calling the CMT/SD commands and not inbetween there shouldnt be any issue. Also the space used is at the top end of the buffer which is not used so often. +; This frees up memory needed by the CMT and SD card. +SECTORBUF: EQU 0CE00H ; Working buffer to place an SD card sector. +SDSTARTSEC EQU BUFER+50+0 ; Starting sector of data to read/write from/to SD card. +SDLOADADDR EQU BUFER+50+4 ; Address to read/write data from/to SD card. +SDLOADSIZE EQU BUFER+50+6 ; Total remaining byte count data to read/write from/to SD card. +SDAUTOEXEC EQU BUFER+50+8 ; Flag to indicate if a loaded image should be executed (=0xFF) +SDBUF: EQU BUFER+50+9 ; SD Card command fram buffer for the command and response storage. +DIRSECBUF: EQU BUFER+50+20 ; Directory sector in cache. +DUMPADDR: EQU BUFER+50+22 ; Address used by the D(ump) command so that calls without parameters go onto the next block. +CMTLOLOAD: EQU BUFER+50+24 ; Flag to indicate that a tape program is loaded into hi memory then shifted to low memory after ROM pageout. +CMTCOPY: EQU BUFER+50+25 ; Flag to indicate that a CMT copy operation is taking place. +CMTAUTOEXEC: EQU BUFER+50+26 ; Auto execution flag, run CMT program when loaded if flag clear. +DTADRSTORE: EQU BUFER+50+27 ; Backup for load address if actual load shifts to lo memory or to 0x1200 for copy. +SDCOPY: EQU BUFER+50+29 ; Flag to indicate an SD copy is taking place, either CMT->SD or SD->CMT. +RESULT: EQU BUFER+50+30 ; Result variable needed for interbank calls when a result is needed. + +;-------------------------------------------------- +; RFS ROM Banks, 0-7 are reserved for alternative +; Monitor versions, CPM and RFS +; code in MROM bank, +; 0-7 are reserved for RFS code in +; the User ROM bank. +; 8-15 are reserved for CPM code in +; the User ROM bank. +;-------------------------------------------------- +MROMPAGES EQU 8 +USRROMPAGES EQU 12 ; Monitor ROM : User ROM +ROMBANK0 EQU 0 ; MROM SA1510 40 Char : RFS Bank 0 - Main RFS Entry point and functions. +ROMBANK1 EQU 1 ; MROM SA1510 80 Char : RFS Bank 1 - Floppy disk controller and utilities. +ROMBANK2 EQU 2 ; CPM 2.2 CBIOS : RFS Bank 2 - SD Card controller and utilities. +ROMBANK3 EQU 3 ; RFS Utilities : RFS Bank 3 - Cmdline tools (Memory, Printer, Help) +ROMBANK4 EQU 4 ; MZ700 1Z-013A 40C : RFS Bank 4 - CMT Utilities. +ROMBANK5 EQU 5 ; MZ700-1Z-013A 80C : RFS Bank 5 +ROMBANK6 EQU 6 ; MZ-80B IPL : RFS Bank 6 +ROMBANK7 EQU 7 ; Free : RFS Bank 7 - Memory and timer test utilities. +ROMBANK8 EQU 8 ; : CBIOS Bank 1 - Utilities +ROMBANK9 EQU 9 ; : CBIOS Bank 2 - Screen / ANSI Terminal +ROMBANK10 EQU 10 ; : CBIOS Bank 3 - SD Card +ROMBANK11 EQU 11 ; : CBIOS Bank 4 - Floppy disk controller. + +;----------------------------------------------- +; IO ports in hardware and values. +;----------------------------------------------- +MMCFG EQU 060H ; Memory management configuration latch. +SETXMHZ EQU 062H ; Select the alternate clock frequency. +SET2MHZ EQU 064H ; Select the system 2MHz clock frequency. +CLKSELRD EQU 066H ; Read clock selected setting, 0 = 2MHz, 1 = XMHz +SVCREQ EQU 068H ; I/O Processor service request. + +;----------------------------------------------- +; tranZPUter SW Memory Management modes +;----------------------------------------------- +TZMM_ORIG EQU 000H ; Original Sharp MZ80A mode, no tranZPUter features are selected except the I/O control registers (default: 0x60-063). +TZMM_BOOT EQU 001H ; Original mode but E800-EFFF is mapped to tranZPUter RAM so TZFS can be booted. +TZMM_TZFS EQU 002H ; TZFS main memory configuration. all memory is in tranZPUter RAM, E800-FFFF is used by TZFS, SA1510 is at 0000-1000 and RAM is 1000-CFFF, 64K Block 0 selected. +TZMM_TZFS2 EQU 003H ; TZFS main memory configuration. all memory is in tranZPUter RAM, E800-EFFF is used by TZFS, SA1510 is at 0000-1000 and RAM is 1000-CFFF, 64K Block 0 selected, F000-FFFF is in 64K Block 1. +TZMM_TZFS3 EQU 004H ; TZFS main memory configuration. all memory is in tranZPUter RAM, E800-EFFF is used by TZFS, SA1510 is at 0000-1000 and RAM is 1000-CFFF, 64K Block 0 selected, F000-FFFF is in 64K Block 2. +TZMM_TZFS4 EQU 005H ; TZFS main memory configuration. all memory is in tranZPUter RAM, E800-EFFF is used by TZFS, SA1510 is at 0000-1000 and RAM is 1000-CFFF, 64K Block 0 selected, F000-FFFF is in 64K Block 3. +TZMM_CPM EQU 006H ; CPM main memory configuration, all memory on the tranZPUter board, 64K block 4 selected. Special case for F3C0:F3FF & F7C0:F7FF (floppy disk paging vectors) which resides on the mainboard. +TZMM_CPM2 EQU 007H ; CPM main memory configuration, F000-FFFF are on the tranZPUter board in block 4, 0040-CFFF and E800-EFFF are in block 5, mainboard for D000-DFFF (video), E000-E800 (Memory control) selected. + ; Special case for 0000:003F (interrupt vectors) which resides in block 4, F3C0:F3FF & F7C0:F7FF (floppy disk paging vectors) which resides on the mainboard. +TZMM_COMPAT EQU 008H ; Original mode but with main DRAM in Bank 0 to allow bootstrapping of programs from other machines such as the MZ700. +TZMM_HOSTACCESS EQU 009H ; Mode to allow code running in Bank 0, address E800:FFFF to access host memory. Monitor ROM 0000-0FFF and Main DRAM 0x1000-0xD000, video and memory mapped I/O are on the host machine, User/Floppy ROM E800-FFFF are in tranZPUter memory. +TZMM_MZ700_0 EQU 00AH ; MZ700 Mode - 0000:0FFF is on the tranZPUter board in block 6, 1000:CFFF is on the tranZPUter board in block 0, D000:FFFF is on the mainboard. +TZMM_MZ700_1 EQU 00BH ; MZ700 Mode - 0000:0FFF is on the tranZPUter board in block 0, 1000:CFFF is on the tranZPUter board in block 0, D000:FFFF is on the tranZPUter in block 6. +TZMM_MZ700_2 EQU 00CH ; MZ700 Mode - 0000:0FFF is on the tranZPUter board in block 6, 1000:CFFF is on the tranZPUter board in block 0, D000:FFFF is on the tranZPUter in block 6. +TZMM_MZ700_3 EQU 00DH ; MZ700 Mode - 0000:0FFF is on the tranZPUter board in block 0, 1000:CFFF is on the tranZPUter board in block 0, D000:FFFF is inaccessible. +TZMM_MZ700_4 EQU 00EH ; MZ700 Mode - 0000:0FFF is on the tranZPUter board in block 6, 1000:CFFF is on the tranZPUter board in block 0, D000:FFFF is inaccessible. +TZMM_MZ800 EQU 00FH ; MZ800 Mode - Tracks original hardware mode offering MZ700/MZ800 configurations. +TZMM_FPGA EQU 015H ; Open up access for the K64F to the FPGA resources such as memory. All other access to RAM or mainboard is blocked. +TZMM_TZPUM EQU 016H ; Everything in on mainboard, no access to tranZPUter memory. +TZMM_TZPU EQU 017H ; Everything is in tranZPUter domain, no access to underlying Sharp mainboard unless memory management mode is switched. tranZPUter RAM 64K block 0 is selected. +TZMM_TZPU0 EQU 018H ; Everything is in tranZPUter domain, no access to underlying Sharp mainboard unless memory management mode is switched. tranZPUter RAM 64K block 0 is selected. +TZMM_TZPU1 EQU 019H ; Everything is in tranZPUter domain, no access to underlying Sharp mainboard unless memory management mode is switched. tranZPUter RAM 64K block 1 is selected. +TZMM_TZPU2 EQU 01AH ; Everything is in tranZPUter domain, no access to underlying Sharp mainboard unless memory management mode is switched. tranZPUter RAM 64K block 2 is selected. +TZMM_TZPU3 EQU 01BH ; Everything is in tranZPUter domain, no access to underlying Sharp mainboard unless memory management mode is switched. tranZPUter RAM 64K block 3 is selected. +TZMM_TZPU4 EQU 01CH ; Everything is in tranZPUter domain, no access to underlying Sharp mainboard unless memory management mode is switched. tranZPUter RAM 64K block 4 is selected. +TZMM_TZPU5 EQU 01DH ; Everything is in tranZPUter domain, no access to underlying Sharp mainboard unless memory management mode is switched. tranZPUter RAM 64K block 5 is selected. +TZMM_TZPU6 EQU 01EH ; Everything is in tranZPUter domain, no access to underlying Sharp mainboard unless memory management mode is switched. tranZPUter RAM 64K block 6 is selected. +TZMM_TZPU7 EQU 01FH ; Everything is in tranZPUter domain, no access to underlying Sharp mainboard unless memory management mode is switched. tranZPUter RAM 64K block 7 is selected. + +;----------------------------------------------- +; TZ File System Header (MZF) +;----------------------------------------------- +TZFS_ATRB: EQU 00000h ; Code Type, 01 = Machine Code. +TZFS_NAME: EQU 00001h ; Title/Name (17 bytes). +TZFS_SIZE: EQU 00012h ; Size of program. +TZFS_DTADR: EQU 00014h ; Load address of program. +TZFS_EXADR: EQU 00016h ; Exec address of program. +TZFS_COMNT: EQU 00018h ; Comment +TZFS_MZFLEN: EQU 128 ; Length of the MZF header. +TZFS_CMTLEN: EQU 104 ; Length of the comment field + +;----------------------------------------------- +; BIOS WORK AREA (MZ80A) +;----------------------------------------------- + ; Variables and control structure used by the I/O processor for service calls and requests. + ORG TZSVCMEM + +TZSVCMEM: EQU 0FD80H ; Start of a memory structure used to communicate with the K64F I/O processor for services such as disk access. +TZSVCSIZE: EQU 00280H ; +TZSVCDIRSZ: EQU 20 ; Size of the directory/file name. +TZSVCFILESZ: EQU 17 ; Size of a Sharp filename. +TZSVCLONGFILESZ: EQU 31 ; Size of a standard filename. +TZSVCLONGFMTSZ: EQU 20 ; Size of a formatted standard filename for use in directory listings. +TZSVCWILDSZ: EQU 20 ; Size of the wildcard. +TZSVCSECSIZE: EQU 512 +TZSVCDIR_ENTSZ: EQU 32 ; Size of a directory entry. +TZSVCWAITIORETRIES: EQU 500 ; Wait retries for IO response. +TZSVCWAITCOUNT: EQU 65535 ; Wait retries for IO request response. +TZSVC_FTYPE_MZF: EQU 0 ; File type being handled is an MZF +TZSVC_FTYPE_CAS: EQU 1 ; File type being handled is an CASsette BASIC script. +TZSVC_FTYPE_BAS: EQU 2 ; File type being handled is an BASic script +TZSVC_FTYPE_ALL: EQU 10 ; Handle any filetype. +TZSVC_FTYPE_ALLFMT: EQU 11 ; Special case for directory listings, all files but truncated and formatted. +TZSVCCMD: DS virtual 1 ; Service command. +TZSVCRESULT: DS virtual 1 ; Service command result. +TZSVCDIRSEC: DS virtual 1 ; Storage for the directory sector number. +TZSVC_FILE_SEC: EQU TZSVCDIRSEC ; Union of the file and directory sector as only one can be used at a time. +TZSVC_TRACK_NO: DS virtual 2 ; Storage for the virtual drive track number. +TZSVC_SECTOR_NO: DS virtual 2 ; Storage for the virtual drive sector number. +TZSVC_FILE_NO: DS virtual 1 ; File number to be opened in a file service command. +TZSVC_FILE_TYPE: DS virtual 1 ; Type of file being accessed to differentiate between Sharp MZF files and other handled files. +TZSVC_LOADADDR: DS virtual 2 ; Dynamic load address for rom/images. +TZSVC_SAVEADDR: EQU TZSVC_LOADADDR ; Union of the load address and the cpu frequency change value, the address of data to be saved. +TZSVC_CPU_FREQ: EQU TZSVC_LOADADDR ; Union of the load address and the save address value, only one can be used at a time. +TZSVC_LOADSIZE: DS virtual 2 ; Size of image to load. +TZSVC_SAVESIZE: EQU TZSVC_LOADSIZE ; Size of image to be saved. +TZSVC_DIRNAME: DS virtual TZSVCDIRSZ ; Service directory/file name. +TZSVC_FILENAME: DS virtual TZSVCFILESZ ; Filename to be opened/created. +TZSVCWILDC: DS virtual TZSVCWILDSZ ; Directory wildcard for file pattern matching. +TZSVCSECTOR: DS virtual TZSVCSECSIZE ; Service command sector - to store directory entries, file sector read or writes. + +TZSVC_CMD_READDIR: EQU 01H ; Service command to open a directory and return the first block of entries. +TZSVC_CMD_NEXTDIR: EQU 02H ; Service command to return the next block of an open directory. +TZSVC_CMD_READFILE: EQU 03H ; Service command to open a file and return the first block. +TZSVC_CMD_NEXTREADFILE: EQU 04H ; Service command to return the next block of an open file. +TZSVC_CMD_WRITEFILE: EQU 05H ; Service command to create a file and save the first block. +TZSVC_CMD_NEXTWRITEFILE:EQU 06H ; Service command to write the next block to the open file. +TZSVC_CMD_CLOSE: EQU 07H ; Service command to close any open file or directory. +TZSVC_CMD_LOADFILE: EQU 08H ; Service command to load a file directly into tranZPUter memory. +TZSVC_CMD_SAVEFILE: EQU 09H ; Service command to save a file directly from tranZPUter memory. +TZSVC_CMD_ERASEFILE: EQU 0aH ; Service command to erase a file on the SD card. +TZSVC_CMD_CHANGEDIR: EQU 0bH ; Service command to change the active directory on the SD card. +TZSVC_CMD_LOAD40BIOS: EQU 20H ; Service command requesting that the 40 column version of the SA1510 BIOS is loaded. +TZSVC_CMD_LOAD80BIOS: EQU 21H ; Service command requesting that the 80 column version of the SA1510 BIOS is loaded. +TZSVC_CMD_LOAD700BIOS40:EQU 22H ; Service command requesting that the MZ700 1Z-013A 40 column BIOS is loaded. +TZSVC_CMD_LOAD700BIOS80:EQU 23H ; Service command requesting that the MZ700 1Z-013A 80 column patched BIOS is loaded. +TZSVC_CMD_LOAD80BIPL: EQU 24H ; Service command requesting the MZ-80B IPL is loaded. +TZSVC_CMD_LOADBDOS: EQU 30H ; Service command to reload CPM BDOS+CCP. +TZSVC_CMD_ADDSDDRIVE: EQU 31H ; Service command to attach a CPM disk to a drive number. +TZSVC_CMD_READSDDRIVE: EQU 32H ; Service command to read an attached SD file as a CPM disk drive. +TZSVC_CMD_WRITESDDRIVE: EQU 33H ; Service command to write to a CPM disk drive which is an attached SD file. +TZSVC_CMD_CPU_BASEFREQ EQU 40H ; Service command to switch to the mainboard frequency. +TZSVC_CMD_CPU_ALTFREQ EQU 41H ; Service command to switch to the alternate frequency provided by the K64F. +TZSVC_CMD_CPU_CHGFREQ EQU 42H ; Service command to set the alternate frequency in hertz. +TZSVC_CMD_CPU_SETZ80 EQU 50H ; Service command to switch to the external Z80 hard cpu. +TZSVC_CMD_CPU_SETT80 EQU 51H ; Service command to switch to the internal T80 soft cpu. +TZSVC_STATUS_OK: EQU 000H ; Flag to indicate the K64F processing completed successfully. +TZSVC_STATUS_REQUEST: EQU 0FEH ; Flag to indicate the Z80 has made a request to the K64F. +TZSVC_STATUS_PROCESSING:EQU 0FFH ; Flag to indicate the K64F is processing a command. diff --git a/asm/include/rfs_definitions.asm b/asm/include/rfs_definitions.asm new file mode 100644 index 0000000..fcd4b57 --- /dev/null +++ b/asm/include/rfs_definitions.asm @@ -0,0 +1,563 @@ +;-------------------------------------------------------------------------------------------------------- +;- +;- Name: RFS_Definitions.asm +;- Created: September 2019 +;- Author(s): Philip Smart +;- Description: Sharp MZ series Rom Filing System. +;- Definitions for the RFS including SA1510 locations. +;- +;- Credits: +;- Copyright: (c) 2019-23 Philip Smart +;- +;- History: Sep 2019 - Initial version. +;- May 2020 - Advent of the new RFS PCB v2.0, quite a few changes to accommodate the +;- additional and different hardware. The SPI is now onboard the PCB and +;- not using the printer interface card. +;- July 2020 - Updated for the tranZPUter v2.1 hardware. RFS can run with a tranZPUter +;- board with or without the K64 I/O processor. RFS wont use the K64 +;- processor all operations are done by the Z80 under RFS. +;- March 2021- Updates to accommodate the RFS v2.1 board along with back porting TZFS +;- developments. +;- +;-------------------------------------------------------------------------------------------------------- +;- This source file is free software: you can redistribute it and-or modify +;- it under the terms of the GNU General Public License as published +;- by the Free Software Foundation, either version 3 of the License, or +;- (at your option) any later version. +;- +;- This source file is distributed in the hope that it will be useful, +;- but WITHOUT ANY WARRANTY; without even the implied warranty of +;- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +;- GNU General Public License for more details. +;- +;- You should have received a copy of the GNU General Public License +;- along with this program. If not, see . +;-------------------------------------------------------------------------------------------------------- + +;----------------------------------------------- +; Features. +;----------------------------------------------- +HW_SPI_ENA EQU 1 ; Set to 1 if hardware SPI is present on the RFS PCB v2 board. +SW_SPI_ENA EQU 0 ; Set to 1 if software SPI is present on the RFS PCB v2 board. +PP_SPI_ENA EQU 0 ; Set to 1 if using the SPI interface via the Parallel Port, ie. for RFS PCB v1 which doesnt have SPI onboard. +FUSIONX_ENA EQU 1 ; Set to 1 if using RFS on the tranZPUter FusionX board. + +; Debugging +ENADEBUG EQU 0 ; Enable debugging logic, 1 = enable, 0 = disable + +;----------------------------------------------- +; Entry/compilation start points. +;----------------------------------------------- +UROMADDR EQU 0E800H ; Start of User ROM Address space. +UROMBSTBL EQU UROMADDR + 020H ; Entry point to the bank switching table. +RFSJMPTABLE EQU UROMADDR + 00080H ; Start of jump table. +FDCROMADDR EQU 0F000H + + +;----------------------------------------------- +; Common character definitions. +;----------------------------------------------- +SCROLL EQU 001H ;Set scroll direction UP. +BELL EQU 007H +SPACE EQU 020H +TAB EQU 009H ;TAB ACROSS (8 SPACES FOR SD-BOARD) +CR EQU 00DH +LF EQU 00AH +FF EQU 00CH +CS EQU 0CH ; Clear screen +DELETE EQU 07FH +BACKS EQU 008H +SOH EQU 1 ; For XModem etc. +EOT EQU 4 +ACK EQU 6 +NAK EQU 015H +NUL EQU 000H +NULL EQU 000H +CTRL_A EQU 001H +CTRL_B EQU 002H +CTRL_C EQU 003H +CTRL_D EQU 004H +CTRL_E EQU 005H +CTRL_F EQU 006H +CTRL_G EQU 007H +CTRL_H EQU 008H +CTRL_I EQU 009H +CTRL_J EQU 00AH +CTRL_K EQU 00BH +CTRL_L EQU 00CH +CTRL_M EQU 00DH +CTRL_N EQU 00EH +CTRL_O EQU 00FH +CTRL_P EQU 010H +CTRL_Q EQU 011H +CTRL_R EQU 012H +CTRL_S EQU 013H +CTRL_T EQU 014H +CTRL_U EQU 015H +CTRL_V EQU 016H +CTRL_W EQU 017H +CTRL_X EQU 018H +CTRL_Y EQU 019H +CTRL_Z EQU 01AH +ESC EQU 01BH +CTRL_SLASH EQU 01CH +CTRL_LB EQU 01BH +CTRL_RB EQU 01DH +CTRL_CAPPA EQU 01EH +CTRL_UNDSCR EQU 01FH +CTRL_AT EQU 000H +NOKEY EQU 0F0H +CURSRIGHT EQU 0F1H +CURSLEFT EQU 0F2H +CURSUP EQU 0F3H +CURSDOWN EQU 0F4H +DBLZERO EQU 0F5H +INSERT EQU 0F6H +CLRKEY EQU 0F7H +HOMEKEY EQU 0F8H +BREAKKEY EQU 0FBH +GRAPHKEY EQU 0FCH +ALPHAKEY EQU 0FDH + + +;------------------------------------------------------- +; Function entry points in the standard SA-1510 Monitor. +;------------------------------------------------------- +GETL: EQU 00003h +LETNL: EQU 00006h +NL: EQU 00009h +PRNTS: EQU 0000Ch +PRNT: EQU 00012h +MSG: EQU 00015h +MSGX: EQU 00018h +GETKY EQU 0001Bh +BRKEY EQU 0001Eh +?WRI EQU 00021h +?WRD EQU 00024h +?RDI EQU 00027h +?RDD EQU 0002Ah +?VRFY EQU 0002Dh +MELDY EQU 00030h +?TMST EQU 00033h +MONIT: EQU 00000h +SS: EQU 00089h +ST1: EQU 00095h +HLHEX EQU 00410h +_2HEX EQU 0041Fh +?MODE: EQU 0074DH +?KEY EQU 008CAh +PRNT3 EQU 0096Ch +?ADCN EQU 00BB9h +?DACN EQU 00BCEh +?DSP: EQU 00DB5H +?BLNK EQU 00DA6h +?DPCT EQU 00DDCh +PRTHL: EQU 003BAh +PRTHX: EQU 003C3h +HEX: EQU 003F9h +DPCT: EQU 00DDCh +DLY12: EQU 00DA7h +DLY12A: EQU 00DAAh +?RSTR1: EQU 00EE6h +MOTOR: EQU 006A3H +CKSUM: EQU 0071AH +GAP: EQU 0077AH +WTAPE: EQU 00485H +MSTOP: EQU 00700H + +;----------------------------------------------- +; Memory mapped ports in hardware. +;----------------------------------------------- +SCRN: EQU 0D000H +ARAM: EQU 0D800H +DSPCTL: EQU 0DFFFH ; Screen 40/80 select register (bit 7) +KEYPA: EQU 0E000h +KEYPB: EQU 0E001h +KEYPC: EQU 0E002h +KEYPF: EQU 0E003h +CSTR: EQU 0E002h +CSTPT: EQU 0E003h +CONT0: EQU 0E004h +CONT1: EQU 0E005h +CONT2: EQU 0E006h +CONTF: EQU 0E007h +SUNDG: EQU 0E008h +TEMP: EQU 0E008h +MEMSW: EQU 0E00CH +MEMSWR: EQU 0E010H +INVDSP: EQU 0E014H +NRMDSP: EQU 0E015H +SCLDSP: EQU 0E200H +SCLBASE: EQU 0E2H +BNKCTRLRST: EQU 0EFF8H ; Bank control reset, returns all registers to power up default. +BNKCTRLDIS: EQU 0EFF9H ; Disable bank control registers by resetting the coded latch. +HWSPIDATA: EQU 0EFFBH ; Hardware SPI Data register (read/write). +HWSPISTART: EQU 0EFFCH ; Start an SPI transfer. +BNKSELMROM: EQU 0EFFDh ; Select RFS Bank1 (MROM) +BNKSELUSER: EQU 0EFFEh ; Select RFS Bank2 (User ROM) +BNKCTRL: EQU 0EFFFH ; Bank Control register (read/write). + +; +; RFS v2 Control Register constants. +; +BBCLK EQU 1 ; BitBang SPI Clock. +SDCS EQU 2 ; SD Card Chip Select, active low. +BBMOSI EQU 4 ; BitBang MOSI (Master Out Serial In). +CDLTCH1 EQU 8 ; Coded latch up count bit 1 +CDLTCH2 EQU 16 ; Coded latch up count bit 2 +CDLTCH3 EQU 32 ; Coded latch up count bit 3 +BK2A19 EQU 64 ; User ROM Device Select Bit 0 (or Address bit 19). +BK2A20 EQU 128 ; User ROM Device Select Bit 1 (or Address bit 20). + ; BK2A20 : BK2A19 + ; 0 0 = Flash RAM 0 (default). + ; 0 1 = Flash RAM 1. + ; 1 0 = Flasm RAM 2 or Static RAM 0. + ; 1 1 = Reserved.` + +BNKCTRLDEF EQU BBMOSI+SDCS+BBCLK ; Default on startup for the Bank Control register. + +;----------------------------------------------- +; IO ports in hardware and values. +;----------------------------------------------- +SPI_OUT EQU 0FFH +SPI_IN EQU 0FEH +; +DOUT_LOW EQU 000H +DOUT_HIGH EQU 004H +DOUT_MASK EQU 004H +DIN_LOW EQU 000H +DIN_HIGH EQU 001H +CLOCK_LOW EQU 000H +CLOCK_HIGH EQU 002H +CLOCK_MASK EQU 0FDH +CS_LOW EQU 000H +CS_HIGH EQU 001H +; +MMCFG EQU 060H ; Memory management configuration latch. +SETXMHZ EQU 062H ; Select the alternate clock frequency. +SET2MHZ EQU 064H ; Select the system 2MHz clock frequency. +CLKSELRD EQU 066H ; Read clock selected setting, 0 = 2MHz, 1 = XMHz +SVCREQ EQU 068H ; I/O Processor service request. +CPUCFG EQU 06CH ; Version 2.2 CPU configuration register. +CPUSTATUS EQU 06CH ; Version 2.2 CPU runtime status register. +CPUINFO EQU 06DH ; Version 2.2 CPU information register. +CPLDCFG EQU 06EH ; Version 2.1 CPLD configuration register. +CPLDSTATUS EQU 06EH ; Version 2.1 CPLD status register. +CPLDINFO EQU 06FH ; Version 2.1 CPLD version information register. +MMIO0 EQU 0E0H ; MZ-700/MZ-800 Memory Management Set 0 +MMIO1 EQU 0E1H ; MZ-700/MZ-800 Memory Management Set 1 +MMIO2 EQU 0E2H ; MZ-700/MZ-800 Memory Management Set 2 +MMIO3 EQU 0E3H ; MZ-700/MZ-800 Memory Management Set 3 +MMIO4 EQU 0E4H ; MZ-700/MZ-800 Memory Management Set 4 +MMIO5 EQU 0E5H ; MZ-700/MZ-800 Memory Management Set 5 +MMIO6 EQU 0E6H ; MZ-700/MZ-800 Memory Management Set 6 +MMIO7 EQU 0E7H ; MZ-700/MZ-800 Memory Management Set 7 + +;----------------------------------------------- +; CPLD Configuration constants. +;----------------------------------------------- +MODE_MZ80K EQU 0 ; Set to MZ-80K mode. +MODE_MZ80C EQU 1 ; Set to MZ-80C mode. +MODE_MZ1200 EQU 2 ; Set to MZ-1200 mode. +MODE_MZ80A EQU 3 ; Set to MZ-80A mode (base mode on MZ-80A hardware). +MODE_MZ700 EQU 4 ; Set to MZ-700 mode (base mode on MZ-700 hardware). +MODE_MZ800 EQU 5 ; Set to MZ-800 mode. +MODE_MZ80B EQU 6 ; Set to MZ-80B mode. +MODE_MZ2000 EQU 7 ; Set to MZ-2000 mode. +MODE_VIDEO_FPGA EQU 8 ; Bit flag (bit 3) to switch CPLD into using the new FPGA video hardware. + +;----------------------------------------------- +; tranZPUter SW Memory Management modes +;----------------------------------------------- +TZMM_ENIOWAIT EQU 020H ; Memory management IO Wait State enable - insert a wait state when an IO operation to E0-FF is executed. +TZMM_ORIG EQU 000H ; Original Sharp MZ80A mode, no tranZPUter features are selected except the I/O control registers (default: 0x60-063). +TZMM_BOOT EQU 001H ; Original mode but E800-EFFF is mapped to tranZPUter RAM so TZFS can be booted. +TZMM_TZFS EQU 002H + TZMM_ENIOWAIT ; TZFS main memory configuration. all memory is in tranZPUter RAM, E800-FFFF is used by TZFS, SA1510 is at 0000-1000 and RAM is 1000-CFFF, 64K Block 0 selected. +TZMM_TZFS2 EQU 003H + TZMM_ENIOWAIT ; TZFS main memory configuration. all memory is in tranZPUter RAM, E800-EFFF is used by TZFS, SA1510 is at 0000-1000 and RAM is 1000-CFFF, 64K Block 0 selected, F000-FFFF is in 64K Block 1. +TZMM_TZFS3 EQU 004H + TZMM_ENIOWAIT ; TZFS main memory configuration. all memory is in tranZPUter RAM, E800-EFFF is used by TZFS, SA1510 is at 0000-1000 and RAM is 1000-CFFF, 64K Block 0 selected, F000-FFFF is in 64K Block 2. +TZMM_TZFS4 EQU 005H + TZMM_ENIOWAIT ; TZFS main memory configuration. all memory is in tranZPUter RAM, E800-EFFF is used by TZFS, SA1510 is at 0000-1000 and RAM is 1000-CFFF, 64K Block 0 selected, F000-FFFF is in 64K Block 3. +TZMM_CPM EQU 006H + TZMM_ENIOWAIT ; CPM main memory configuration, all memory on the tranZPUter board, 64K block 4 selected. Special case for F3C0:F3FF & F7C0:F7FF (floppy disk paging vectors) which resides on the mainboard. +TZMM_CPM2 EQU 007H + TZMM_ENIOWAIT ; CPM main memory configuration, F000-FFFF are on the tranZPUter board in block 4, 0040-CFFF and E800-EFFF are in block 5, mainboard for D000-DFFF (video), E000-E800 (Memory control) selected. + ; Special case for 0000:003F (interrupt vectors) which resides in block 4, F3C0:F3FF & F7C0:F7FF (floppy disk paging vectors) which resides on the mainboard. +TZMM_COMPAT EQU 008H + TZMM_ENIOWAIT ; Original mode but with main DRAM in Bank 0 to allow bootstrapping of programs from other machines such as the MZ700. +TZMM_HOSTACCESS EQU 009H + TZMM_ENIOWAIT ; Mode to allow code running in Bank 0, address E800:FFFF to access host memory. Monitor ROM 0000-0FFF and Main DRAM 0x1000-0xD000, video and memory mapped I/O are on the host machine, User/Floppy ROM E800-FFFF are in tranZPUter memory. +TZMM_MZ700_0 EQU 00AH + TZMM_ENIOWAIT ; MZ700 Mode - 0000:0FFF is on the tranZPUter board in block 6, 1000:CFFF is on the tranZPUter board in block 0, D000:FFFF is on the mainboard. +TZMM_MZ700_1 EQU 00BH + TZMM_ENIOWAIT ; MZ700 Mode - 0000:0FFF is on the tranZPUter board in block 0, 1000:CFFF is on the tranZPUter board in block 0, D000:FFFF is on the tranZPUter in block 6. +TZMM_MZ700_2 EQU 00CH + TZMM_ENIOWAIT ; MZ700 Mode - 0000:0FFF is on the tranZPUter board in block 6, 1000:CFFF is on the tranZPUter board in block 0, D000:FFFF is on the tranZPUter in block 6. +TZMM_MZ700_3 EQU 00DH + TZMM_ENIOWAIT ; MZ700 Mode - 0000:0FFF is on the tranZPUter board in block 0, 1000:CFFF is on the tranZPUter board in block 0, D000:FFFF is inaccessible. +TZMM_MZ700_4 EQU 00EH + TZMM_ENIOWAIT ; MZ700 Mode - 0000:0FFF is on the tranZPUter board in block 6, 1000:CFFF is on the tranZPUter board in block 0, D000:FFFF is inaccessible. +TZMM_MZ800 EQU 00FH + TZMM_ENIOWAIT ; MZ800 Mode - Tracks original hardware mode offering MZ700/MZ800 configurations. +TZMM_FPGA EQU 015H + TZMM_ENIOWAIT ; Open up access for the K64F to the FPGA resources such as memory. All other access to RAM or mainboard is blocked. +TZMM_TZPUM EQU 016H + TZMM_ENIOWAIT ; Everything in on mainboard, no access to tranZPUter memory. +TZMM_TZPU EQU 017H + TZMM_ENIOWAIT ; Everything is in tranZPUter domain, no access to underlying Sharp mainboard unless memory management mode is switched. tranZPUter RAM 64K block 0 is selected. +TZMM_TZPU0 EQU 018H + TZMM_ENIOWAIT ; Everything is in tranZPUter domain, no access to underlying Sharp mainboard unless memory management mode is switched. tranZPUter RAM 64K block 0 is selected. +TZMM_TZPU1 EQU 019H + TZMM_ENIOWAIT ; Everything is in tranZPUter domain, no access to underlying Sharp mainboard unless memory management mode is switched. tranZPUter RAM 64K block 1 is selected. +TZMM_TZPU2 EQU 01AH + TZMM_ENIOWAIT ; Everything is in tranZPUter domain, no access to underlying Sharp mainboard unless memory management mode is switched. tranZPUter RAM 64K block 2 is selected. +TZMM_TZPU3 EQU 01BH + TZMM_ENIOWAIT ; Everything is in tranZPUter domain, no access to underlying Sharp mainboard unless memory management mode is switched. tranZPUter RAM 64K block 3 is selected. +TZMM_TZPU4 EQU 01CH + TZMM_ENIOWAIT ; Everything is in tranZPUter domain, no access to underlying Sharp mainboard unless memory management mode is switched. tranZPUter RAM 64K block 4 is selected. +TZMM_TZPU5 EQU 01DH + TZMM_ENIOWAIT ; Everything is in tranZPUter domain, no access to underlying Sharp mainboard unless memory management mode is switched. tranZPUter RAM 64K block 5 is selected. +TZMM_TZPU6 EQU 01EH + TZMM_ENIOWAIT ; Everything is in tranZPUter domain, no access to underlying Sharp mainboard unless memory management mode is switched. tranZPUter RAM 64K block 6 is selected. +TZMM_TZPU7 EQU 01FH + TZMM_ENIOWAIT ; Everything is in tranZPUter domain, no access to underlying Sharp mainboard unless memory management mode is switched. tranZPUter RAM 64K block 7 is selected. + +;----------------------------------------------- +; Rom File System Header (MZF) +;----------------------------------------------- +RFS_ATRB: EQU 00000h ; Code Type, 01 = Machine Code. +RFS_NAME: EQU 00001h ; Title/Name (17 bytes). +RFS_SIZE: EQU 00012h ; Size of program. +RFS_DTADR: EQU 00014h ; Load address of program. +RFS_EXADR: EQU 00016h ; Exec address of program. +RFS_COMNT: EQU 00018h ; COMMENT + +;----------------------------------------------- +; Entry/compilation start points. +;----------------------------------------------- +TPSTART: EQU 010F0h +MEMSTART: EQU 01200h +MSTART: EQU 0E900h +MZFHDRSZ EQU 128 +RFSSECTSZ EQU 256 +MROMSIZE EQU 4096 +UROMSIZE EQU 2048 +FNSIZE EQU 17 +; +; Monitor ROM Jump Table definitions. +; +MROMJMPTBL: EQU 00070H +DIRMROM: EQU MROMJMPTBL + 00000H +MFINDMZF: EQU MROMJMPTBL + 00003H +MROMLOAD: EQU MROMJMPTBL + 00006H + +;----------------------------------------------- +; ROM Banks, 0-7 are reserved for alternative +; Monitor versions, CPM and RFS +; code in MROM bank, +; 0-7 are reserved for RFS code in +; the User ROM bank. +; 8-15 are reserved for CPM code in +; the User ROM bank. +;----------------------------------------------- +MROMPAGES EQU 8 +USRROMPAGES EQU 12 ; Monitor ROM : User ROM +ROMBANK0 EQU 0 ; MROM SA1510 40 Char : RFS Bank 0 - Main RFS Entry point and functions. +ROMBANK1 EQU 1 ; MROM SA1510 80 Char : RFS Bank 1 - Floppy disk controller and utilities. +ROMBANK2 EQU 2 ; CPM 2.2 CBIOS : RFS Bank 2 - SD Card controller and utilities. +ROMBANK3 EQU 3 ; RFS Utilities : RFS Bank 3 - Cmdline tools (Memory, Printer, Help) +ROMBANK4 EQU 4 ; MZ700 1Z-013A 40C : RFS Bank 4 - CMT Utilities. +ROMBANK5 EQU 5 ; MZ700-1Z-013A 80C : RFS Bank 5 +ROMBANK6 EQU 6 ; MZ-80B IPL : RFS Bank 6 +ROMBANK7 EQU 7 ; Free : RFS Bank 7 - Memory and timer test utilities. +ROMBANK8 EQU 8 ; : CBIOS Bank 1 - Utilities +ROMBANK9 EQU 9 ; : CBIOS Bank 2 - Screen / ANSI Terminal +ROMBANK10 EQU 10 ; : CBIOS Bank 3 - SD Card +ROMBANK11 EQU 11 ; : CBIOS Bank 4 - Floppy disk controller. + + +; MMC/SD command (SPI mode) +CMD0 EQU 64 + 0 ; GO_IDLE_STATE +CMD1 EQU 64 + 1 ; SEND_OP_COND +ACMD41 EQU 0x40+41 ; SEND_OP_COND (SDC) +CMD8 EQU 64 + 8 ; SEND_IF_COND +CMD9 EQU 64 + 9 ; SEND_CSD +CMD10 EQU 64 + 10 ; SEND_CID +CMD12 EQU 64 + 12 ; STOP_TRANSMISSION +CMD13 EQU 64 + 13 ; SEND_STATUS +ACMD13 EQU 0x40+13 ; SD_STATUS (SDC) +CMD16 EQU 64 + 16 ; SET_BLOCKLEN +CMD17 EQU 64 + 17 ; READ_SINGLE_BLOCK +CMD18 EQU 64 + 18 ; READ_MULTIPLE_BLOCK +CMD23 EQU 64 + 23 ; SET_BLOCK_COUNT +ACMD23 EQU 0x40+23 ; SET_WR_BLK_ERASE_COUNT (SDC) +CMD24 EQU 64 + 24 ; WRITE_BLOCK +CMD25 EQU 64 + 25 ; WRITE_MULTIPLE_BLOCK +CMD32 EQU 64 + 32 ; ERASE_ER_BLK_START +CMD33 EQU 64 + 33 ; ERASE_ER_BLK_END +CMD38 EQU 64 + 38 ; ERASE +CMD55 EQU 64 + 55 ; APP_CMD +CMD58 EQU 64 + 58 ; READ_OCR +SD_SECSIZE EQU 512 ; Default size of an SD Sector +SD_RETRIES EQU 00100H ; Number of retries before giving up. + +; Card type flags (CardType) +CT_MMC EQU 001H ; MMC ver 3 +CT_SD1 EQU 002H ; SD ver 1 +CT_SD2 EQU 004H ; SD ver 2 +CT_SDC EQU CT_SD1|CT_SD2 ; SD +CT_BLOCK EQU 008H ; Block addressing + +; SD Card Directory structure. The directory entries are based on the MZF Header format and constraints. +; +; FLAG1 | FLAG2 | FILE NAME | START SECTOR | SIZE | LOAD ADDR | EXEC ADDR | RESERVED +; 1 Byte | 1 Byte | 17 Bytes | 2 Bytes | 2 Bytes | 2 Bytes | 2 Bytes | 5 Bytes +; +; FLAG1 : BIT 7 = 1, Valid directory entry, 0 = inactive. +; FLAG2 : MZF Execution Code, 0x01 = Binary +; FILENAME : Standard MZF format filename. +; START SECTOR : Sector in the SD card where the program starts. It always starts at position 0 of the sector. +; SIZE : Size in bytes of the program. Each file block occupies 64Kbyte space (as per a tape) and this +; parameter provides the actual space occupied by the program at the current time. +; LOAD ADDR : Start address in memory where data should be loaded. +; EXEC ADDR : If a binary then this parameter specifies the location to auto execute once loaded. +; RESERVED : Not used at the moemnt. +SDDIR_FLAG1 EQU 000H +SDDIR_FLAG2 EQU 001H +SDDIR_FILEN EQU 002H +SDDIR_SSEC EQU 013H +SDDIR_SIZE EQU 015H +SDDIR_LOAD EQU 017H +SDDIR_EXEC EQU 019H +SDDIR_FNSZ EQU FNSIZE +SDDIR_ENTSZ EQU 32 + +; +; Rom Filing System constants for the SD Card. +; +SDDIR_DIRENT EQU 256 ; Directory entries in the RFS directory. +SDDIR_DIRENTSZ EQU 32 ; Size of a directory entry. +SDDIR_DIRSIZE EQU SDDIR_DIRENT * SDDIR_DIRENTSZ ; Total size of the directory. +SDDIR_BLOCKSZ EQU 65536 ; Size of a file block per directory entry. +SDDIR_IMGSZ EQU SDDIR_DIRSIZE + (SDDIR_DIRENT * SDDIR_BLOCKSZ) ; Total size of the RFS image. + +OBJCD EQU 001H ; MZF contains a binary object. +BTX1CD EQU 002H ; MZF contains an MZ-80K/80A BASIC program. +BTX2CD EQU 005H ; MZF contains an MZ-700/800 BASIC program. +BTX3CD EQU 07EH ; MZF contains a NASCOM Cassette BASIC program. +BTX4CD EQU 07FH ; MZF contains a NASCOM ASCII TEXT BASIC program. +TZOBJCD0 EQU 0F8H ; MZF contains a TZFS binary object for page 0. +TZOBJCD1 EQU 0F9H +TZOBJCD2 EQU 0FAH +TZOBJCD3 EQU 0FBH +TZOBJCD4 EQU 0FCH +TZOBJCD5 EQU 0FDH +TZOBJCD6 EQU 0FEH +TZOBJCD7 EQU 0FFH ; MZF contains a TZFS binary object for page 7. + +;----------------------------------------------- +; SA-1510 MONITOR WORK AREA (MZ80A) +;----------------------------------------------- +STACK: EQU 010F0H +; + ORG STACK +; +SPV: +IBUFE: ; TAPE BUFFER (128 BYTES) +ATRB: DS virtual 1 ; ATTRIBUTE +NAME: DS virtual FNSIZE ; FILE NAME +SIZE: DS virtual 2 ; BYTESIZE +DTADR: DS virtual 2 ; DATA ADDRESS +EXADR: DS virtual 2 ; EXECUTION ADDRESS +COMNT: DS virtual 92 ; COMMENT +SWPW: DS virtual 10 ; SWEEP WORK +KDATW: DS virtual 2 ; KEY WORK +KANAF: DS virtual 1 ; KANA FLAG (01=GRAPHIC MODE) +DSPXY: DS virtual 2 ; DISPLAY COORDINATES +MANG: DS virtual 6 ; COLUMN MANAGEMENT +MANGE: DS virtual 1 ; COLUMN MANAGEMENT END +PBIAS: DS virtual 1 ; PAGE BIAS +ROLTOP: DS virtual 1 ; ROLL TOP BIAS +MGPNT: DS virtual 1 ; COLUMN MANAG. POINTER +PAGETP: DS virtual 2 ; PAGE TOP +ROLEND: DS virtual 1 ; ROLL END + DS virtual 14 ; BIAS +FLASH: DS virtual 1 ; FLASHING DATA +SFTLK: DS virtual 1 ; SHIFT LOCK +REVFLG: DS virtual 1 ; REVERSE FLAG +SPAGE: DS virtual 1 ; PAGE CHANGE +FLSDT: DS virtual 1 ; CURSOR DATA +STRGF: DS virtual 1 ; STRING FLAG +DPRNT: DS virtual 1 ; TAB COUNTER +TMCNT: DS virtual 2 ; TAPE MARK COUNTER +SUMDT: DS virtual 2 ; CHECK SUM DATA +CSMDT: DS virtual 2 ; FOR COMPARE SUM DATA +AMPM: DS virtual 1 ; AMPM DATA +TIMFG: DS virtual 1 ; TIME FLAG +SWRK: DS virtual 1 ; KEY SOUND FLAG +TEMPW: DS virtual 1 ; TEMPO WORK +ONTYO: DS virtual 1 ; ONTYO WORK +OCTV: DS virtual 1 ; OCTAVE WORK +RATIO: DS virtual 2 ; ONPU RATIO +BUFER: DS virtual 81 ; GET LINE BUFFER + +; Starting 1000H - Generally unused bytes not cleared by the monitor. +ROMBK1: EQU 01016H ; CURRENT MROM BANK +ROMBK2: EQU 01017H ; CURRENT USERROM BANK +WRKROMBK1: EQU 01018H ; WORKING MROM BANK +WRKROMBK2: EQU 01019H ; WORKING USERROM BANK +ROMCTL: EQU 0101AH ; Current Bank control register setting. +SCRNMODE: EQU 0101BH ; Mode of screen, 0 = 40 char, 1 = 80 char. +TMPADR: EQU 0101CH ; TEMPORARY ADDRESS STORAGE +TMPSIZE: EQU 0101EH ; TEMPORARY SIZE +TMPCNT: EQU 01020H ; TEMPORARY COUNTER +TMPLINECNT: EQU 01022H ; Temporary counter for displayed lines. +TMPSTACKP: EQU 01024H ; Temporary stack pointer save. +SDVER: EQU 01026H +SDCAP: EQU 01027H +SDDRIVENO EQU 01028H ; RFS SDCFS Active Drive Number +CMTFILENO EQU 01029H ; Next Sequential file number to read when file request given without name. +TZPU: EQU 0102AH ; Tranzputer present flag (0 = not present, > 0 = present and version number). +; Variables sharing the BUFER buffer, normally the BUFER is only used to get keyboard input and so long as data in BUFER is processed +; before calling the CMT/SD commands and not inbetween there shouldnt be any issue. Also the space used is at the top end of the buffer which is not used so often. +; This frees up memory needed by the CMT and SD card. +SECTORBUF: EQU 0CE00H ; Working buffer to place an SD card sector. +SDSTARTSEC EQU BUFER+50+0 ; Starting sector of data to read/write from/to SD card. +SDLOADADDR EQU BUFER+50+4 ; Address to read/write data from/to SD card. +SDLOADSIZE EQU BUFER+50+6 ; Total remaining byte count data to read/write from/to SD card. +SDAUTOEXEC EQU BUFER+50+8 ; Flag to indicate if a loaded image should be executed (=0xFF) +SDBUF: EQU BUFER+50+9 ; SD Card command fram buffer for the command and response storage. +DIRSECBUF: EQU BUFER+50+20 ; Directory sector in cache. +DUMPADDR: EQU BUFER+50+22 ; Address used by the D(ump) command so that calls without parameters go onto the next block. +CMTLOLOAD: EQU BUFER+50+24 ; Flag to indicate that a tape program is loaded into hi memory then shifted to low memory after ROM pageout. +CMTCOPY: EQU BUFER+50+25 ; Flag to indicate that a CMT copy operation is taking place. +CMTAUTOEXEC: EQU BUFER+50+26 ; Auto execution flag, run CMT program when loaded if flag clear. +DTADRSTORE: EQU BUFER+50+27 ; Backup for load address if actual load shifts to lo memory or to 0x1200 for copy. +SDCOPY: EQU BUFER+50+29 ; Flag to indicate an SD copy is taking place, either CMT->SD or SD->CMT. +RESULT: EQU BUFER+50+30 ; Result variable needed for interbank calls when a result is needed. + +; Quickdisk work area +;QDPA EQU 01130h ; QD code 1 +;QDPB EQU 01131h ; QD code 2 +;QDPC EQU 01132h ; QD header startaddress +;QDPE EQU 01134h ; QD header length +;QDCPA EQU 0113Bh ; QD error flag +;HDPT EQU 0113Ch ; QD new headpoint possition +;HDPT0 EQU 0113Dh ; QD actual headpoint possition +;FNUPS EQU 0113Eh +;FNUPF EQU 01140h +;FNA EQU 01141h ; File Number A (actual file number) +;FNB EQU 01142h ; File Number B (next file number) +;MTF EQU 01143h ; QD motor flag +;RTYF EQU 01144h +;SYNCF EQU 01146h ; SyncFlags +;RETSP EQU 01147h +;BUFER EQU 011A3h +;QDIRBF EQU 0CD90h + + + +;SPV: +;IBUFE: ; TAPE BUFFER (128 BYTES) +;ATRB: DS virtual 1 ; Code Type, 01 = Machine Code. +;NAME: DS virtual 17 ; Title/Name (17 bytes). +;SIZE: DS virtual 2 ; Size of program. +;DTADR: DS virtual 2 ; Load address of program. +;EXADR: DS virtual 2 ; Exec address of program. +;COMNT: DS virtual 104 ; COMMENT +;KANAF: DS virtual 1 ; KANA FLAG (01=GRAPHIC MODE) +;DSPXY: DS virtual 2 ; DISPLAY COORDINATES +;MANG: DS virtual 27 ; COLUMN MANAGEMENT +;FLASH: DS virtual 1 ; FLASHING DATA +;FLPST: DS virtual 2 ; FLASHING POSITION +;FLSST: DS virtual 1 ; FLASHING STATUS +;FLSDT: DS virtual 1 ; CURSOR DATA +;STRGF: DS virtual 1 ; STRING FLAG +;DPRNT: DS virtual 1 ; TAB COUNTER +;TMCNT: DS virtual 2 ; TAPE MARK COUNTER +;SUMDT: DS virtual 2 ; CHECK SUM DATA +;CSMDT: DS virtual 2 ; FOR COMPARE SUM DATA +;AMPM: DS virtual 1 ; AMPM DATA +;TIMFG: DS virtual 1 ; TIME FLAG +;SWRK: DS virtual 1 ; KEY SOUND FLAG +;TEMPW: DS virtual 1 ; TEMPO WORK +;ONTYO: DS virtual 1 ; ONTYO WORK +;OCTV: DS virtual 1 ; OCTAVE WORK +;RATIO: DS virtual 2 ; ONPU RATIO diff --git a/asm/include/rfs_utilities.asm b/asm/include/rfs_utilities.asm new file mode 100644 index 0000000..a124819 --- /dev/null +++ b/asm/include/rfs_utilities.asm @@ -0,0 +1,496 @@ +;-------------------------------------------------------------------------------------------------------- +;- +;- Name: RFS_Utilities.asm +;- Created: September 2019 +;- Author(s): Philip Smart +;- Description: Sharp MZ series Rom Filing System. +;- This assembly language program is written to utilise the banked flashroms added with +;- the MZ-80A RFS hardware upgrade. +;- +;- Credits: +;- Copyright: (c) 2019-23 Philip Smart +;- +;- History: September 2018 - Merged 2 utilities to create this compilation. +;- +;-------------------------------------------------------------------------------------------------------- +;- This source file is free software: you can redistribute it and-or modify +;- it under the terms of the GNU General Public License as published +;- by the Free Software Foundation, either version 3 of the License, or +;- (at your option) any later version. +;- +;- This source file is distributed in the hope that it will be useful, +;- but WITHOUT ANY WARRANTY; without even the implied warranty of +;- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +;- GNU General Public License for more details. +;- +;- You should have received a copy of the GNU General Public License +;- along with this program. If not, see . +;-------------------------------------------------------------------------------------------------------- + + ; Comparing Strings + ; IN HL Address of string1. + ; DE Address of string2. + ; BC Max bytes to compare, 0x00 or 0x0d will early terminate. + ; OUT zero Set if string1 = string2, reset if string1 != string2. + ; carry Set if string1 > string2, reset if string1 <= string2. +CMPSTRING: IF USE_CMPSTRING = 1 + PUSH HL + PUSH DE + +CMPSTR1: LD A, (DE) ; Compare bytes. + CP 000h ; Check for end of string. + JR Z, CMPSTR3 + CP 00Dh + JR Z, CMPSTR3 + CPI ; Compare bytes. + JR NZ, CMPSTR2 ; If (HL) != (DE), abort. + INC DE ; Update pointer. + JP PE, CMPSTR1 ; Next byte if BC not zero. + +CMPSTR2: DEC HL + CP (HL) ; Compare again to affect carry. +CMPSTR4: POP DE + POP HL + RET + +CMPSTR3: LD A, (HL) + CP 000h ; Check for end of string. + JR Z, CMPSTR4 + CP 00Dh + JR Z, CMPSTR4 + SCF ; String 1 greater than string 2 + JR CMPSTR4 + ENDIF + + + ; IN HL Address of source string, length-prefixed. + ; DE Address of destination string, length-prefixed. + ; B Start index. 1 = first character. + ; C Length of substring to return. + ; + ; OUT carry Set if an error condition happened: + ; If B is zero, then uses index of 1. + ; If index > source length, an empty string is returned. + ; If index + return length > source length, returns all + ; characters from index to end-of-string. + +SUBSTRING: IF USE_SUBSTRING = 1 + PUSH DE ; It would be convenient to keep DE pointing to + ; the start of the destination string + OR A ; Boolean OR resets carry + PUSH AF ; Save carry + LD A, B ; Is index beyond source length? + CP (HL) + DEC A ; Decrement A so NC can be used + JR NC,SUBST3 + + ADD A, C ; If index+len is > 255, error + JR C, SUBST1 + INC A ; Increment A so C can be used + CP (HL) ; If index+len is beyond source length, then error + JR C, SUBST2 + +SUBST1: POP AF ; Set carry flag + SCF + PUSH AF + LD A, (HL) ; Get source length + SUB B ; Subtract start index + INC A ; Compensate + LD C, A ; New size of string + +SUBST2: LD A, C ; Size of sting to get + LD (DE), A ; Save length index + INC DE ; To body of string + LD A, B ; Get index + LD B, 0 ; Zero-extend BC for LDIR + + ADD A, L ; This is a sneaky way to add A to HL + LD L, A ; without using up another 16-bit register + ADC A, H ; + SUB L ; + LD H, A ; + + LDIR ; Copy substring over + POP AF ; Restore flags + POP DE ; Restore destination + RET + +SUBST3: XOR A ; Set a length index of zero + LD (DE), A + POP AF ; Clean off stack and set carry + POP DE + SCF + RET + ENDIF + + ; IN HL Address of string to look in, length prefixed. + ; DE Address of string to find, length prefixed. + ; + ; OUT + ; If found: + ; A Offset into look-up string where the target string was found. + ; The first byte (ignoring length prefix) is offset 1. + ; carry Reset. + ; + ; If not found: + ; A = 0 + ; carry Set. + +INDEX: IF USE_INDEX = 1 + LD A, (DE) ; Abort if string to find is too big + CP (HL) + INC A + JR NC, IDXABORT + + DEC A ; Save length of string to find + LD IXL, A + + LD B, 0 ; Put length of string to search in BC + LD C, (HL) + + INC HL ; Advance pointers + INC DE + PUSH HL ; Save start of search string + +IDXRST: PUSH DE ; Save start of key string + + LD A, IXL ; Initialize matched characters counter + LD IXH, A + + LD A, (DE) ; Get a character to match + CPIR ; Look for it + JR NZ, IDXNF ; Abort if not found + +IDXLOOP: DEC IXH ; Update counter and see if done + JR Z, IDXFOUND + + INC DE ; Get next character in key string + LD A, (DE) + CPI ; See if it matches next char in master + JR Z, IDXLOOP + JP PO, IDXNF ; Abort if we ran out of characters + + POP DE ; If a mismatch, restart from the beginning + JR IDXRST + +IDXNF: POP DE ; Clean stack + POP HL + +IDXABORT: XOR A ; Report failure + SCF + RET + +IDXFOUND: POP DE + POP BC ; BC = address of master + + XOR A ; Put size of key string in DE + LD D, A + LD E, IXL + + SBC HL, DE ; Find index + SBC HL, BC + LD A, L + INC A + RET + ENDIF + + ; IN HL Address of string to be inserted + ; DE Address of string to receive insertion + ; C Index. Start of string is 0 + ; OUT + ; If successful: + ; carry Reset + ; HL Input DE + ; If unsuccessful: + ; carry Set. If new string length is > 255. + ; + ; Notes If index > string length, string is appended. + ; Data after the string is destroyed. + +STRINSERT: IF USE_STRINSERT = 1 + LD A, (DE) + LD B, A + + INC A + CP C + JR NC, STRINSERT1 + LD C, B + +STRINSERT1:DEC A + ADD A, (HL) + RET C + LD (DE), A ; Update length + + PUSH DE ; Make room + PUSH HL + LD A, (HL) + INC C + + LD H, 0 + LD L, C + ADD HL, DE + + LD D, H + LD E, L + PUSH AF + ADD A, E + LD E, A + ADC A, D + SUB E + LD D, A + POP AF + + LD B, 0 + LD C, A + PUSH HL + LDIR + + POP DE ; Copy string over + POP HL + LD C, (HL) + INC HL + LDIR + POP HL + RET + ENDIF + + ; IN HL Address of string. + ; B Index of first character to delete. First character is 0. + ; C Number of characters to kill. + ; OUT + ; If successful: + ; carry Reset + ; If unsuccessful: + ; carry Set + ; + ; Notes If B > string length, then error. + ; If B + C > string length, deletion + ; stops at end of string. + +STRDELETE: IF USE_STRDELETE = 1 + LD A, B ; See if index is too big + CP (HL) + CCF ; Flip for error + RET C + + ADD A, C ; See if too many chars on chopping block + CP (HL) + JR C, STRDELETE1 + + INC B ; Set index as length + LD (HL), B + RET + +STRDELETE1:PUSH HL + LD A, (HL) + SUB C + LD (HL), A + INC HL + + LD E, C + LD C, B + LD B, 0 + ADD HL, BC + + SUB C + LD C, E + LD D, H + LD E, L + ADD HL, BC + LD C, A + LDIR + + POP HL + RET + ENDIF + + ; IN HL Address of first string. + ; DE Address of second string. + ; OUT + ; If successful: + ; carry Reset + ; If unsuccessful: + ; carry Set + ; + ; Notes If new string lenght is > 255, error. + ; HL is saved. + +CONCAT: IF USE_CONCAT = 1 + LD A, (DE) ; Combine lengths + ADD A, (HL) + RET C + LD C, (HL) + LD (HL), A + + LD B, 0 + INC C + PUSH HL + ADD HL, BC + EX DE, HL + LD C, (HL) + INC HL + LDIR + + POP HL + RET + ENDIF + +; Utility: Convert character to upper case +; On entry: A = Character in either case +; On exit: A = Character in upper case +; BC DE HL IX IY I AF' BC' DE' HL' preserved +ConvertCharToUCase: IF USE_CNVUPPER = 1 + CP 'a' ;Character less than 'a'? + RET C ;Yes, so finished + CP 'z'+1 ;Character greater than 'z'? + RET NC ;Yes, so finished + SUB 'a'-'A' ;Convert case + RET + ENDIF +; +; Utility: Convert character to numberic value +; On entry: A = ASCII character (0-9 or A-F) +; On exit: If character is a valid hex digit: +; A = Numberic value (0 to 15) and Z flagged +; If character is not a valid hex digit: +; A = 0xFF and NZ flagged +; BC DE HL IX IY I AF' BC' DE' HL' preserved +; Interrupts not enabled +ConvertCharToNumber: IF USE_CNVCHRTONUM = 1 + CALL ConvertCharToUCase + CP '0' ;Character < '0'? + JR C,@Bad ;Yes, so no hex character + CP '9'+1 ;Character <= '9'? + JR C,@OK ;Yes, got hex character + CP 'A' ;Character < 'A' + JR C,@Bad ;Yes, so not hex character + CP 'F'+1 ;Character <= 'F' + JR C,@OK ;No, not hex +; Character is not a hex digit so return +@Bad: LD A,0FFh ;Return status: not hex character + OR A ; A = 0xFF and NZ flagged + RET +; Character is a hex digit so adjust from ASCII to number +@OK: SUB '0' ;Subtract '0' + CP 00Ah ;Number < 10 ? + JR C,@Finished ;Yes, so finished + SUB 007h ;Adjust for 'A' to 'F' +@Finished: CP A ;Return A = number (0 to 15) and Z flagged to + RET ; indicate character is a valid hex digital + ENDIF + +; Utility: Is character numeric? +; On entry: A = ASCII character +; On exit: Carry flag set if character is numeric (0 to 9) +; A BC DE HL IX IY I AF' BC' DE' HL' preserved +IsCharNumeric: IF USE_ISNUMERIC = 1 + CP '0' ;Less than '0'? + JR C,@Not2 ;Yes, so go return NOT numeric + CP '9'+1 ;Less than or equal to '9'? + RET C ;Yes, so numeric (C flagged) +@Not2: OR A ;No, so NOT numeric (NC flagged) + RET + ENDIF + +; Utility: Convert hexadecimal or decimal text to number +; On entry: DE = Pointer to start of ASCII string +; On exit: If valid number found: +; A = 0 and Z flagged +; HL = Number found +; If valid number not found: +; A != 0 and NZ flagged +; HL = Not specified +; DE = Not specified +; HL = Number +; BC DE IX IY I AF' BC' DE' HL' preserved +; Hexadecmal numbers can be prefixed with either "$" or "0x" +; Decimal numbers must be prefixed with "+" +; A number without a prefix is assumed to be hexadecimal +; Hexadecimal number without a prefix must start with "0" to "9" +; ... this is to stop the assembler getting confused between +; ... register names and constants which could be fixed by +; ... re-ordering the (dis)assebmer's instruction table +; Numbers can be terminated with ")", space, null or control code +; Negative numbers, preceded with "-", are not supported +; Text must be terminated with ')', space or control char. +ConvertStringToNumber: IF USE_CNVSTRTONUM = 1 + PUSH BC + LD HL,0 ;Build result here + LD A,(DE) ;Get character from string + CP '+' ;Does string start with '+' ? + JR Z,@Decimal ;Yes, so its decimal + CP '$' ;Does string start with '$' ? + JR Z,@Hdecimal ;Yes, so its hexadecimal + CP 39 ;Does string start with apostrophe? + JR Z,@Char ;Yes, so its a character + CP '"' ;Does string start with '"' ? + JR Z,@Char ;Yes, so its a character +;; CALL IsCharNumeric ;Is first character '0' to '9' ? +;; JR NC,@Failure ;No, so invalid number +; CALL IsCharHex ;Is first character hexadecimal ? +; JR NC,@Failure ;No, so invalid hex character + CP '0' ;Is first character '0' ? + JR NZ,@HexNext ;No, so default to hexadecimal +; JR NZ,@DecNext ;No, so default to decimal + INC DE ;Point to next character in string + LD A,(DE) ;Get character from string + CALL ConvertCharToUCase + CP 'X' ;Is second character 'x' ? + JR NZ,@HexNext ;No, so must be default format +; JR NZ,@DecNext ;No, so must be default format +; Hexadecimal number... +@Hdecimal: INC DE ;Point to next character in string +@HexNext: LD A,(DE) ;Get character from string + CP ')' ;Terminated with a bracket? + JR Z,@Success ;yes, so success + CP 32+1 ;Space or control character? + JR C,@Success ;Yes, so successld hl + CALL ConvertCharToNumber ;Convert character to number + JR NZ,@Failure ;Return if failure (NZ flagged) + INC DE ;Point to next character in string + ADD HL,HL ;Current result = 16 * current result.. + ADD HL,HL + ADD HL,HL + ADD HL,HL + OR L ;Add new number (0 to 15).. + LD L,A + JR @HexNext +; Decimal number... +@Decimal: INC DE ;Point to next character in string +@DecNext: LD A,(DE) ;Get character from string + CP ')' ;Terminated with a bracket? + JR Z,@Success ;yes, so success + CP 32+1 ;Space or control character? + JR C,@Success ;Yes, so success + CALL IsCharNumeric ;Is first character '0' to '9' ? + JR NC,@Failure ;No, so invalid number + CALL ConvertCharToNumber ;Convert character to number + JR NZ,@Failure ;Return if failure (NZ flagged) + INC DE ;Point to next character in string + PUSH DE + LD B,9 ;Current result = 10 * current result.. + LD D,H + LD E,L +@DecLoop: ADD HL,DE ;Add result to itself 9 times + DJNZ @DecLoop + POP DE + ADD A,L ;Add new number (0 to 15).. + LD L,A + JR NC,@DecNext + INC H + JR @DecNext +; Character... +@Char: INC DE ;Point to next character in string + LD A,(DE) ;Get ASCII character + LD L,A ;Store ASCII value as result + LD H,0 +; JR @Success +; Return result... +@Success: POP BC + XOR A ;Return success with A = 0 and Z flagged + RET +@Failure: POP BC + LD A,0FFh ;Return failure with A != 0 + OR A ; and NZ flagged + RET + ENDIF diff --git a/asm/ipl.asm b/asm/ipl.asm new file mode 100644 index 0000000..c7d51c6 --- /dev/null +++ b/asm/ipl.asm @@ -0,0 +1,901 @@ + ORG 0000H + ;**************************************************************** + ; + ; Personal Computer + ; MZ-80B + ; + ; Initial Program Loader + ;**************************************************************** + ; + JR START + ; + ; NST RESET + ; +NST: LD A,03H + OUT (PPICTL),A ;Set PC1 NST=1 + ; +START: LD A,82H ;8255 A=OUT B=IN C=OUT + OUT (PPICTL),A + LD A,0FH ;PIO A=OUT + OUT (PIOCTLA),A + LD A,0CFH ;PIO B=IN + OUT (PIOCTLB),A + LD A,0FFH + OUT (PIOCTLB),A + LD A,58H ;BST=1 NST=0 OPEN=1 WRITE=1 + OUT (PPIC),A + LD A,12H + OUT (PPIA),A + XOR A + OUT (GRPHCTL),A ;Set Graphics VRAM to default, input to GRPH I, no output. + LD SP,0FFE0H + LD HL,0D000H + LD A,0B3H + OUT (PIOA),A +CLEAR: LD (HL),00H ;DISPLAY CLEAR + INC HL + LD A,H + OR L + JR NZ,CLEAR + LD A,13H + OUT (PIOA),A + XOR A + LD (DRINO),A + LD (MTFG),A +KEYIN: CALL KEYS1 + BIT 3,A ;C - Cassette. + JR Z,CMT + BIT 0,A ;/ - Boot external rom. + JP Z,EXROMT + JR NKIN ;No selection, so standard startup, try FDC then CMT. + ; +KEYS1: LD B,14H ;Preserve A4-A7, set A4 to prevent all strobes low, the select line 5 (0-4). +KEYS: IN A,(PIOA) + AND 0F0H + OR B + OUT (PIOA),A + IN A,(PIOB) ;Read the strobed key. + RET + ; + ; +NKIN: CALL FDCC + JP Z,FD + JR CMT + ; +FDCC: LD A,0A5H + LD B,A + OUT (0D9H),A + CALL DLY80U + IN A,(0D9H) + CP B + RET + ; + ; ; + ; CMT CONTROL ; + ; ; + ; +CMT: CALL MSTOP + CALL DEL6 + CALL KYEMES + CALL ?RDI + JR C,ST1 + CALL LDMSG + LD HL,NAME + LD E,010H + LD C,010H + CALL DISP2 + LD A,(ATRB) + CP 01H + JR NZ,MISMCH + CALL ?RDD +ST1: PUSH AF + CALL DEL6 + CALL REW + POP AF + JP C,TRYAG + JP NST + ; +MISMCH: LD HL,MES16 + LD E,0AH + LD C,0FH + CALL DISP + CALL MSTOP + SCF + JR ST1 + ; + ;READ INFORMATION + ; CF=1:ERROR +RDINF: +?RDI: DI + LD D,04H + LD BC,0080H + LD HL,IBUFE +RD1: CALL MOTOR + JR C,STPEIR + CALL TMARK + JR C,STPEIR + CALL RTAPE + JR C,STPEIR +RET2S: BIT 3,D + JR Z,EIRTN +STPEIR: CALL MSTOP +EIRTN: EI + RET + ; + ; + ;READ DATA +RDDAT: +?RDD: DI + LD D,08H + LD BC,(SIZE) + LD HL,8000H + JR RD1 + ; + ; + ;READ TAPE + ; BC=SIZE + ; DE=LOAD ADDRSS +RTAPE: PUSH DE + PUSH BC + PUSH HL + LD H,02H +RTP2: CALL SPDIN + JR C,TRTN1 ;BREAK + JR Z,RTP2 + LD D,H + LD HL,0000H + LD (SUMDT),HL + POP HL + POP BC + PUSH BC + PUSH HL +RTP3: CALL RBYTE + JR C,TRTN1 + LD (HL),A + INC HL + DEC BC + LD A,B + OR C + JR NZ,RTP3 + LD HL,(SUMDT) + CALL RBYTE + JR C,TRTN1 + LD E,A + CALL RBYTE + JR C,TRTN1 + CP L + JR NZ,RTP5 + LD A,E + CP H + JR Z,TRTN1 +RTP5: DEC D + JR Z,RTP6 + LD H,D + JR RTP2 +RTP6: CALL BOOTER + SCF +TRTN1: POP HL + POP BC + POP DE + RET + ;EDGE +EDGE: IN A,(PPIB) + CPL + RLCA + RET C ;BREAK + RLCA + JR NC,EDGE ;WAIT ON LOW +EDGE1: IN A,(PPIB) + CPL + RLCA + RET C ;BREAK + RLCA + JR C,EDGE1 ;WAIT ON HIGH + RET + ; 1 BYTE READ + ; DATA=A + ; SUMDT STORE +RBYTE: PUSH HL + LD HL,0800H ; 8 BITS +RBY1: CALL SPDIN + JR C,RBY3 ;BREAK + JR Z,RBY2 ;BIT=0 + PUSH HL + LD HL,(SUMDT) ;CHECKSUM + INC HL + LD (SUMDT),HL + POP HL + SCF +RBY2: RL L + DEC H + JR NZ,RBY1 + CALL EDGE + LD A,L +RBY3: POP HL + RET + ;TAPE MARK DETECT + ; E=L:INFORMATION + ; E=S:DATA +TMARK: PUSH HL + LD HL,1414H + BIT 3,D + JR NZ,TM0 + ADD HL,HL +TM0: LD (TMCNT),HL +TM1: LD HL,(TMCNT) +TM2: CALL SPDIN + JR C,RBY3 + JR Z,TM1 + DEC H + JR NZ,TM2 +TM3: CALL SPDIN + JR C,RBY3 + JR NZ,TM1 + DEC L + JR NZ,TM3 + CALL EDGE + JR RBY3 + ;READ 1 BIT +SPDIN: CALL EDGE ;WAIT ON HIGH + RET C ;BREAK + + CALL DLY2 + IN A,(PPIB) ;READ BIT + AND 40H + RET + ; + ; + ;MOTOR ON +MOTOR: PUSH DE + PUSH BC + PUSH HL + IN A,(PPIB) + AND 20H + JR Z,MOTRD + LD HL,MES6 + LD E,0AH + LD C,0EH + CALL DISP + CALL OPEN +MOT1: IN A,(PIOB) + CPL + RLCA + JR C,MOTR + IN A,(PPIB) + AND 20H + JR NZ,MOT1 + CALL KYEMES + CALL DEL1M +MOTRD: CALL PLAY +MOTR: POP HL + POP BC + POP DE + RET + ; + ; + ;MOTOR STOP +MSTOP: LD A,0DH + OUT (PPICTL),A ;Set PC6 - READ MODE + LD A,1AH + OUT (PPIA),A + CALL DEL6 + JR BLK3 + ;EJECT +OPEN: LD A,08H ;Reset PC4 - EJECT activate + OUT (PPICTL),A + CALL DEL6 + LD A,09H + OUT (PPICTL),A ;Set PC4 - Deactivate EJECT + RET + ; + ; +KYEMES: LD HL,MES3 + LD E,04H + LD C,1CH + CALL DISP + RET + ; + ;PLAY +PLAY: CALL FR + CALL DEL6 + LD A,16H + OUT (PPIA),A + JR BLK3 +BLK1: CALL DEL6 + CALL BLK3 + LD A,13H +BLK2: OUT (PPIA),A +BLK3: LD A,12H + OUT (PPIA),A + RET + ; + ; +FR: LD A,12H +FR1: OUT (PPIA),A + CALL DEL6 + LD A,0BH + OUT (PPICTL),A ;Set PC5 + CALL DEL6 + LD A,0AH + OUT (PPICTL),A ;Reset PC5 + RET + +RRW: LD A,010H + JR FR1 + ;REWIND +REW: CALL RRW + JR BLK1 + ; + ;TIMING DEL +DM1: PUSH AF +L0211: XOR A +L0212: DEC A + JR NZ,L0212 + DEC BC + LD A,B + OR C + JR NZ,L0211 + POP AF + POP BC + RET + +DEL6: PUSH BC + LD BC,00E9H ;233D + JR DM1 +DEL1M: PUSH BC + LD BC,060FH ;1551D + JR DM1 + ; + ;TAPE DELAY TIMING + ; + ; +DLY2: LD A,31H +L022B: DEC A + JP NZ,L022B + RET + ; + ; + ; + ; + ; +LDMSG: LD HL,MES1 + LD E,00H + LD C,0EH + JR DISP + ; +DISP2: LD A,93H + OUT (PIOA),A + JR DISP1 + ; +BOOTER: LD HL,MES8 + LD E,0AH + LD C,0DH + ; +DISP: LD A,93H + OUT (PIOA),A + EXX + LD HL,0D000H +DISP3: LD (HL),00H + INC HL + LD A,H + OR L + JR NZ,DISP3 + EXX +DISP1: XOR A + LD B,A + LD D,0D0H + LDIR + LD A,13H + OUT (PIOA),A + RET + ; + ; +MES1: DB "IPL is loading" +MES3: DB "IPL is looking for a program" +MES6: DB "Make ready CMT" +MES8: DB "Loading error" +MES9: DB "Make ready FD" +MES10: DB "Press F or C" +MES11: DB "F:Floppy diskette" +MES12: DB "C:Cassette tape" +MES13: DB "Drive No? (1-4)" +MES14: DB "This diskette is not master" +MES15: DB "Pressing S key starts the CMT" +MES16: DB "File mode error" + ; +IPLMC: DB 01H + DB "IPLPRO" + ; + ; + ;FD +FD: LD IX,IBADR1 + XOR A + LD (0CF1EH),A + LD (0CF1FH),A + LD IY,0FFE0H + LD HL,0100H + LD (IY+2),L + LD (IY+3),H + CALL BREAD ;INFORMATION INPUT + LD HL,0CF00H ;MASTER CHECK + LD DE,IPLMC + LD B,06H +MCHECK: LD C,(HL) + LD A,(DE) + CP C + JP NZ,NMASTE + INC HL + INC DE + DJNZ MCHECK + CALL LDMSG + LD HL,0CF07H + LD E,010H + LD C,0AH + CALL DISP2 + LD IX,IBADR2 + LD HL,(0CF14H) + LD (IY+2),L + LD (IY+3),H + CALL BREAD + CALL MOFF + JP NST + ; + ; +NODISK: LD HL,MES9 + LD E,0AH + LD C,0DH + CALL DISP + JP ERR1 + ; + ; READY CHECK + ; +READY: LD A,(MTFG) + RRCA + CALL NC,MTON + LD A,(DRINO) ;DRIVE NO GET + OR 84H + OUT (DM),A ;DRIVE SELECT MOTON + XOR A + CALL DLY60M + LD HL,0000H +REDY0: DEC HL + LD A,H + OR L + JR Z,NODISK + IN A,(CR) ;STATUS GET + CPL + RLCA + JR C,REDY0 + LD A,(DRINO) + LD C,A + LD HL,CLBF0 + LD B,00H + ADD HL,BC + BIT 0,(HL) + RET NZ + CALL RCLB + SET 0,(HL) + RET + ; + ; MOTOR ON + ; +MTON: LD A,80H + OUT (DM),A + LD B,0AH ;1SEC DELAY +MTD1: LD HL,3C19H +MTD2: DEC HL + LD A,L + OR H + JR NZ,MTD2 + DJNZ MTD1 + LD A,01H + LD (MTFG),A + RET + ; + ;SEEK TREATMENT + ; +SEEK: LD A,1BH + CPL + OUT (CR),A + CALL BUSY + CALL DLY60M + IN A,(CR) + CPL + AND 99H + RET + ; + ;MOTOR OFF + ; +MOFF: CALL DLY1M + XOR A + OUT (DM),A + LD (CLBF0),A + LD (CLBF1),A + LD (CLBF2),A + LD (CLBF3),A + LD (MTFG),A + RET + ; + ;RECALIBRATION + ; +RCLB: PUSH HL + LD A,0BH + CPL + OUT (CR),A + CALL BUSY + CALL DLY60M + IN A,(CR) + CPL + AND 85H + XOR 04H + POP HL + RET Z + JP ERR + ; + ;BUSY AND WAIT + ; +BUSY: PUSH DE + PUSH HL + CALL DLY80U + LD E,07H +BUSY2: LD HL,0000H +BUSY0: DEC HL + LD A,H + OR L + JR Z,BUSY1 + IN A,(CR) + CPL + RRCA + JR C,BUSY0 + POP HL + POP DE + RET + ; +BUSY1: DEC E + JR NZ,BUSY2 + JP ERR + ; + ;DATA CHECK + ; +CONVRT: LD B,00H + LD DE,0010H + LD HL,(0CF1EH) + XOR A +TRANS: SBC HL,DE + JR C,TRANS1 + INC B + JR TRANS +TRANS1: ADD HL,DE + LD H,B + INC L + LD (IY+4),H + LD (IY+5),L +DCHK: LD A,(DRINO) + CP 04H + JR NC,DTCK1 + LD A,(IY+4) + CP 46H ;70D + JR NC,DTCK1 + LD A,(IY+5) + OR A + JR Z,DTCK1 + CP 11H ;17D + JR NC,DTCK1 + LD A,(IY+2) + OR (IY+3) + RET NZ +DTCK1: JP ERR + ; + ;SEQUENTIAL READ + ; +BREAD: DI + CALL CONVRT + LD A,0AH + LD (RETRY),A +READ1: CALL READY + LD D,(IY+3) + LD A,(IY+2) + OR A + JR Z,RE0 + INC D +RE0: LD A,(IY+5) + LD (IY+1),A + LD A,(IY+4) + LD (IY+0),A + PUSH IX + POP HL +RE8: SRL A + CPL + OUT (DR),A + JR NC,RE1 + LD A,01H + JR RE2 +RE1: LD A,00H +RE2: CPL + OUT (HS),A + CALL SEEK + JR NZ,REE + LD C,0DBH + LD A,(IY+0) + SRL A + CPL + OUT (TR),A + LD A,(IY+1) + CPL + OUT (SCR),A + EXX + LD HL,RE3 + PUSH HL + EXX + LD A,94H + CPL + OUT (CR),A + CALL WAIT +RE6: LD B,00H +RE4: IN A,(CR) + RRCA + RET C + RRCA + JR C,RE4 + INI + JR NZ,RE4 + INC (IY+1) + LD A,(IY+1) + CP 11H ;17D + JR Z,RETS + DEC D + JR NZ,RE6 + JR RE5 +RETS: DEC D +RE5: LD A,0D8H ;FORCE INTERRUPT + CPL + OUT (CR),A + CALL BUSY +RE3: IN A,(CR) + CPL + AND 0FFH + JR NZ,REE + EXX + POP HL + EXX + LD A,(IY+1) + CP 11H ;17D + JR NZ,REX + LD A,01H + LD (IY+1),A + INC (IY+0) +REX: LD A,D + OR A + JR NZ,RE7 + LD A,80H + OUT (DM),A + RET +RE7: LD A,(IY+0) + JR RE8 +REE: LD A,(RETRY) + DEC A + LD (RETRY),A + JR Z,ERR + CALL RCLB + JP READ1 + ; + ; WAIT AND BUSY OFF + ; +WAIT: PUSH DE + PUSH HL + CALL DLY80U + LD E,08H +WAIT2: LD HL,0000H +WAIT0: DEC HL + LD A,H + OR L + JR Z,WAIT1 + IN A,(CR) + CPL + RRCA + JR NC,WAIT0 + POP HL + POP DE + RET +WAIT1: DEC E + JR NZ,WAIT2 + JR ERR + ; +NMASTE: LD HL,MES14 + LD E,07H + LD C,1BH ;27D + CALL DISP + JR ERR1 + ; + ; ; + ; ERRROR OR BREAK ; + ; ; + ; +ERR: CALL BOOTER +ERR1: CALL MOFF +TRYAG2: LD SP,0FFE0H + ; + ;TRYAG + ; +TRYAG: CALL FDCC + JR NZ,TRYAG3 + LD HL,MES10 + LD E,5AH + LD C,0CH ;12D + CALL DISP2 + LD E,0ABH + LD C,11H ;17D + CALL DISP2 + LD E,0D3H + LD C,0FH ;15D + CALL DISP2 +TRYAG1: CALL KEYS1 + BIT 3,A + JP Z,CMT + BIT 6,A + JR Z,DNO + JR TRYAG1 +DNO: LD HL,MES13 ;DRIVE NO SELECT + LD E,0AH + LD C,0FH + CALL DISP +DNO10: LD D,12H + CALL DNO0 + JR NC,DNO3 + LD D,18H + CALL DNO0 + JR NC,DNO3 + JR DNO10 +DNO3: LD A,B + LD (DRINO),A + JP FD + ; +TRYAG3: LD HL,MES15 + LD E,54H + LD C,1DH ;29D + CALL DISP2 +TRYAG4: LD B,06H +TRYAG5: CALL KEYS + BIT 3,A + JP Z,CMT + JR TRYAG5 + ; +DNO0: IN A,(PIOA) + AND 0F0H + OR D + OUT (PIOA),A + IN A,(PIOB) + LD B,00H + LD C,04H + RRCA +DNO1: RRCA + RET NC + INC B + DEC C + JR NZ,DNO1 + RET + ; + ; TIME DELAY (1M &60M &80U ) + ; +DLY80U: PUSH DE + LD DE,000DH ;13D + JP DLYT +DLY1M: PUSH DE + LD DE,0082H ;130D + JP DLYT +DLY60M: PUSH DE + LD DE,1A2CH ;6700D +DLYT: DEC DE + LD A,E + OR D + JR NZ,DLYT + POP DE + RET + ; + ; + ; ; + ; INTRAM EXROM ; + ; ; + ; +EXROMT: LD HL,8000H + LD IX,EROM1 + JR SEROMA +EROM1: IN A,(0F9H) + CP 00H + JP NZ,NKIN + LD IX,EROM2 +ERMT1: JR SEROMA +EROM2: IN A,(0F9H) + LD (HL),A + INC HL + LD A,L + OR H + JR NZ,ERMT1 + OUT (0F8H),A + JP NST + ; +SEROMA: LD A,H + OUT (0F8H),A + LD A,L + OUT (0F9H),A + LD D,04H +SEROMD: DEC D + JR NZ,SEROMD + JP (IX) + + + ; Pad to 4K as this is the standard MROM Bank size. + DS 01000H - $ + +;---------------------------------------------------------- +; Variables/Work area +;---------------------------------------------------------- + +IBUFE: EQU 0CF00H +ATRB: EQU 0CF00H +NAME: EQU 0CF01H +SIZE: EQU 0CF12H +DTADR: EQU 0CF14H +SUMDT: EQU 0FFE0H +TMCNT: EQU 0FFE2H + ; + ; + ;INPUT BUFFER ADDRESS + ; +IBADR1: EQU 0CF00H +IBADR2: EQU 8000H + ; + ; SUBROUTINE WORK + ; +NTRACK: EQU 0FFE0H +NSECT: EQU 0FFE1H +BSIZE: EQU 0FFE2H +STTR: EQU 0FFE4H +STSE: EQU 0FFE5H +MTFG: EQU 0FFE6H +CLBF0: EQU 0FFE7H +CLBF1: EQU 0FFE8H +CLBF2: EQU 0FFE9H +CLBF3: EQU 0FFEAH +RETRY: EQU 0FFEBH +DRINO: EQU 0FFECH + + ; + ; + ; + ; + ; + ; MFM MINIFLOPPY CONTROL + ; + ; + ; + ; CASE OF DISK INITIALIZE + ; DRIVE NO=DRINO (0-3) + ; + ; CASE OF SEQUENTIAL READ + ; DRIVE NO=DRINO (0-3) + ; BYTE SIZE =IY+2,3 + ; ADDRESS =IX+0,1 + ; NEXT TRACK =IY+0 + ; NEXT SECTOR =IY+1 + ; START TRACK =IY+4 + ; START SECTOR =IY+5 + ; + ; + ; I/O PORT ADDRESS + ; +CR: EQU 0D8H ;STATUS/COMMAND PORT +TR: EQU 0D9H ;TRACK REG PORT +SCR: EQU 0DAH ;SECTOR REG PORT +DR: EQU 0DBH ;DATA REG PORT +DM: EQU 0DCH ;MOTOR/DRIVE PORT +HS: EQU 0DDH ;HEAD SIDE SELECT PORT +PPIA: EQU 0E0H +PPIB: EQU 0E1H +PPIC: EQU 0E2H +PPICTL: EQU 0E3H +PIOA: EQU 0E8H +PIOCTLA:EQU 0E9H +PIOB: EQU 0EAH +PIOCTLB:EQU 0EBH +GRPHCTL:EQU 0F4H diff --git a/asm/monitor_1z-013a.asm b/asm/monitor_1z-013a.asm new file mode 100644 index 0000000..7b02f6e --- /dev/null +++ b/asm/monitor_1z-013a.asm @@ -0,0 +1,7 @@ +; Configurable parameters. +COLW: EQU 40 ; Width of the display screen (ie. columns). +ROW: EQU 25 ; Number of rows on display screen. +SCRNSZ: EQU COLW * ROW ; Total size, in bytes, of the screen display area. +MODE80C:EQU 0 + + INCLUDE "1z-013a.asm" diff --git a/asm/monitor_80c_1z-013a.asm b/asm/monitor_80c_1z-013a.asm new file mode 100644 index 0000000..4a6b8ae --- /dev/null +++ b/asm/monitor_80c_1z-013a.asm @@ -0,0 +1,7 @@ +; Configurable parameters. +COLW: EQU 80 ; Width of the display screen (ie. columns). +ROW: EQU 25 ; Number of rows on display screen. +SCRNSZ: EQU COLW * ROW ; Total size, in bytes, of the screen display area. +MODE80C:EQU 1 + + INCLUDE "1z-013a.asm" diff --git a/asm/monitor_80c_sa1510.asm b/asm/monitor_80c_sa1510.asm new file mode 100644 index 0000000..526b0ff --- /dev/null +++ b/asm/monitor_80c_sa1510.asm @@ -0,0 +1,8 @@ +; Configurable parameters. +COLW: EQU 80 ; Width of the display screen (ie. columns). +ROW: EQU 25 ; Number of rows on display screen. +SCRNSZ: EQU COLW * ROW ; Total size, in bytes, of the screen display area. +SCRLW: EQU COLW / 8 ; Number of 8 byte regions in a line for hardware scroll. +MODE80C:EQU 1 + + INCLUDE "sa1510.asm" diff --git a/asm/monitor_80c_sa1510_hiload.asm b/asm/monitor_80c_sa1510_hiload.asm new file mode 100644 index 0000000..c751b44 --- /dev/null +++ b/asm/monitor_80c_sa1510_hiload.asm @@ -0,0 +1,8 @@ +; Configurable parameters. +COLW: EQU 80 ; Width of the display screen (ie. columns). +ROW: EQU 25 ; Number of rows on display screen. +SCRNSZ: EQU COLW * ROW ; Total size, in bytes, of the screen display area. +SCRLW: EQU COLW / 8 ; Number of 8 byte regions in a line for hardware scroll. +MODE80C:EQU 1 + + INCLUDE "sa1510_hiload.asm" diff --git a/asm/monitor_sa1510.asm b/asm/monitor_sa1510.asm new file mode 100644 index 0000000..b773df1 --- /dev/null +++ b/asm/monitor_sa1510.asm @@ -0,0 +1,8 @@ +; Configurable parameters. +COLW: EQU 40 ; Width of the display screen (ie. columns). +ROW: EQU 25 ; Number of rows on display screen. +SCRNSZ: EQU COLW * ROW ; Total size, in bytes, of the screen display area. +SCRLW: EQU COLW / 8 ; Number of 8 byte regions in a line for hardware scroll. +MODE80C:EQU 0 + + INCLUDE "sa1510.asm" diff --git a/asm/monitor_sa1510_hiload.asm b/asm/monitor_sa1510_hiload.asm new file mode 100644 index 0000000..1c1c61d --- /dev/null +++ b/asm/monitor_sa1510_hiload.asm @@ -0,0 +1,8 @@ +; Configurable parameters. +COLW: EQU 40 ; Width of the display screen (ie. columns). +ROW: EQU 25 ; Number of rows on display screen. +SCRNSZ: EQU COLW * ROW ; Total size, in bytes, of the screen display area. +SCRLW: EQU COLW / 8 ; Number of 8 byte regions in a line for hardware scroll. +MODE80C:EQU 0 + + INCLUDE "sa1510_hiload.asm" diff --git a/asm/msbasic.asm b/asm/msbasic.asm new file mode 100644 index 0000000..5eb7934 --- /dev/null +++ b/asm/msbasic.asm @@ -0,0 +1,9272 @@ +;----------------------------------------------------------------------------------------------- +; NASCOM ROM BASIC Ver 4.7, (C) 1978 Microsoft +; Scanned from source published in 80-BUS NEWS from Vol 2, Issue 3 +; (May-June 1983) to Vol 3, Issue 3 (May-June 1984) +; Adapted for the freeware Zilog Macro Assembler 2.10 to produce +; the original ROM code (checksum A934H). PA +; +; This BASIC has been created from the original NASCOM v4.7b source and also +; may have elements of Grant Searle's changes as both were used in creating this +; version. +; +; It has undergone extensive modification: +; 1. Restore the CLOAD/CSAVE commands. These commands load/save tokenised cassette +; images. The cassette images are from the NASCOM but converted with the +; 'nasconv' C program which removes the tape formatting, updates the token values +; and address pointers. +; 2. Add LOAD/SAVE commands. These commands load/save BASIC in text format. +; 3. Restored the SCREEN command so it works with the Sharp MZ80A 40/80 column screen. +; 4. Increased the command word table to allow additional commands which I expect to add. +; I've added additional comments as things have been figured out to aid future understanding. +; +; Thus (C)opyright notices: +; Original source is: (C) 1978 Microsoft +; Updates (some reversed out): Grant Searle, http://searle.hostei.com/grant/index.html +; eMail: home.micros01@btinternet.com +; All other updates (C) Philip Smart, 2020-23. http://www.eaw.app philip.smart\@net2net.org +;----------------------------------------------------------------------------------------------- + + + ; Bring in additional resources. + INCLUDE "msbasic_buildversion.asm" + INCLUDE "msbasic_definitions.asm" + INCLUDE "macros.asm" + + ; Sharp MZ-80A Tape Format Header - used by all software including RFS/TZFS + ; in processing/loading of this file. + ; + ORG 10F0h + + DB 01h ; Code Type, 01 = Machine Code. +HEADER1: IF BUILD_MZ80A = 1 + DB "MS-BASIC(MZ-80A)", 0DH ; Title/Name (17 bytes). + DW CODEEND - CODESTART ; Size of program. + DW CODESTART ; Load address of program. + DW CODESTART ; Exec address of program. + ENDIF + +HEADER2: IF BUILD_RFS = 1 + IF BUILD_80C = 0 + DB "MS-BASIC(RFS40)", 0DH, 0DH ; Title/Name (17 bytes). + DW CODEEND - CODESTART ; Size of program. + DW CODESTART ; Load address of program. + DW CODESTART ; Exec address of program. + ELSE + DB "MS-BASIC(RFS80)", 0DH, 0DH ; Title/Name (17 bytes). + DW CODEEND - CODESTART ; Size of program. + DW CODESTART ; Load address of program. + DW CODESTART ; Exec address of program. + ENDIF + ENDIF + +HEADER3: IF BUILD_RFSTZ = 1 + DB "MS-BASIC(RFS-TZ)", 0DH ; Title/Name (17 bytes). + DW (CODEEND - CODESTART) + (RELOCEND - RELOC) + (RELOCRFS2END - RELOCRFS2) ; Size of program. + DW 01200H ; Load address of program. + DW RELOCRFS ; Exec address of program. + ENDIF + +HEADER4: IF BUILD_TZFS = 1 + DB "MS-BASIC(TZFS)", 0DH, 0DH, 0DH ; Title/Name (17 bytes). + DW (CODEEND - CODESTART) + (RELOCEND - RELOC) ; Size of program. + DW 01200H ; Load address of program. + DW RELOC ; Exec address of program. + ENDIF + + DB 00h, 00h, 00h, 00h, 00h, 00h, 00h, 00h, 00h, 00h, 00h, 00h, 00h, 00h, 00h, 00h ; Comment (104 bytes). + DB 00h, 00h, 00h, 00h, 00h, 00h, 00h, 00h, 00h, 00h, 00h, 00h, 00h, 00h, 00h, 00h + DB 00h, 00h, 00h, 00h, 00h, 00h, 00h, 00h, 00h, 00h, 00h, 00h, 00h, 00h, 00h, 00h + DB 00h, 00h, 00h, 00h, 00h, 00h, 00h, 00h, 00h, 00h, 00h, 00h, 00h, 00h, 00h, 00h + DB 00h, 00h, 00h, 00h, 00h, 00h, 00h, 00h, 00h, 00h, 00h, 00h, 00h, 00h, 00h, 00h + DB 00h, 00h, 00h, 00h, 00h, 00h, 00h, 00h, 00h, 00h, 00h, 00h, 00h, 00h, 00h, 00h + DB 00h, 00h, 00h, 00h, 00h, 00h, 00h, 00h + + ; Load address of this program when first loaded. + ; +BUILD1: IF BUILD_MZ80A+BUILD_RFS > 0 + ORG 1200H + ENDIF + +BUILD2: IF BUILD_TZFS+BUILD_RFSTZ > 0 + ORG 0000H + ENDIF + +CODESTART: + +COLD: JP STARTB ; Jump for cold start +WARM: JP WARMST ; Jump for warm start +STARTB: + LD IX,0 ; Flag cold start + JP CSTART ; Jump to initialise + + DW DEINT ; Get integer -32768 to 32767 + DW ABPASS ; Return integer in AB + + +VECTORS: IF BUILD_TZFS+BUILD_RFSTZ > 0 + ALIGN 0038H + ORG 0038H +INTVEC: DS 3 ; Space for the Interrupt vector. + + ALIGN 0066H + ORG 0066H +NMIVEC: DS 3 ; Space for the NMI vector. + ENDIF + +CSTART: DI ; Disable Interrupts and sat mode. NB. Interrupts are physically disabled by 8255 Port C2 set to low. + IM 1 + LD SP,STACK ; Start of workspace RAM + +MEMSW0: IF BUILD_TZFS+BUILD_RFSTZ > 0 + LD A,TZMM_MZ700_0 ; Ensure the top part of RAM is set to use the mainboard as we need to configure hardware. + OUT (MMCFG),A + ENDIF + +INITST: LD A,0 ; Clear break flag + LD (BRKFLG),A + + LD HL,GVARSTART ; Start of global variable area + LD BC,GVAREND-GVARSTART ; Size of global variable area. + XOR A + LD D,A +INIT1: LD (HL),D ; Clear variable memory including stack space. + INC HL + DEC BC + LD A,B + OR C + JR NZ,INIT1 + ; + CALL MODE ; Configure 8255 port C, set Motor Off, VGATE to 1 (off) and INTMSK to 0 (interrupts disabled). + LD A,000H ; Clear the screen buffer. + LD HL,SCRN + CALL CLR8 + LD A,017H ; Blue background, white characters in colour mode. + LD HL,ARAM + CALL CLR8 + LD A,004H + LD (TEMPW),A ; Setup the tempo for sound output. + +INIT3: ; Setup keyboard buffer control. + LD A,0 + LD (KEYCOUNT),A ; Set keyboard buffer to empty. + LD HL,KEYBUF + LD (KEYWRITE),HL ; Set write pointer to beginning of keyboard buffer. + LD (KEYREAD),HL ; Set read pointer to beginning of keyboard buffer. + + ; Setup keyboard rate control and set to CAPSLOCK mode. + ; (0 = Off, 1 = CAPSLOCK, 2 = SHIFTLOCK). + LD A,000H ; Initialise key repeater. + LD (KEYRPT),A + LD A,001H + LD (SFTLK),A ; Setup shift lock, default = off. + + ; Setup the initial cursor, for CAPSLOCK this is a double underscore. + LD A,03EH + LD (FLSDT),A + LD A,080H ; Cursor on (Bit D7=1). + LD (FLASHCTL),A + +INIT80CVC: IF BUILD_RFSTZ+BUILD_TZFS > 0 + ; Change to 80 character mode. + LD HL,DSPCTL ; Setup address of display control register latch. + LD A, 128 ; 80 char mode. + LD E,(HL) ; Dummy operation to enable latch write via multivibrator. + LD (HL), A + ENDIF +INIT80CHAR: IF BUILD_RFS = 1 + + IF BUILD_80C = 1 + LD A, ROMBANK1 ; Switch to 80char monitor SA-1510. + LD (ROMBK1),A + LD (BNKSELMROM),A + LD A, 1 ; As we call RFS for SD services, specifically DIR listing, we have to ensure RFS is configured for 80 column output mode. + LD (SCRNMODE), A + LD A, 0FFH + LD (SPAGE), A + + ; Change to 80 character mode. + LD HL,DSPCTL ; Setup address of display control register latch. + LD A, 128 ; 80 char mode. + LD E,(HL) ; Dummy operation to enable latch write via multivibrator. + LD (HL), A + ELSE + LD A, ROMBANK0 ; Switch to 40char monitor SA-1510. + LD (ROMBK1),A + LD (BNKSELMROM),A + XOR A ; As we call RFS for SD services, specifically DIR listing, we have to ensure RFS is configured for 40 column output mode. + LD (SCRNMODE), A + LD A, 0FFH + LD (SPAGE), A + ENDIF + ENDIF + ; +INIT80END: LD A,000H ; Clear the screen buffer. + LD HL,SCRN + CALL CLR8 + LD A,071H ; Blue background, white characters in colour mode. Bit 7 is set as a write to bit 7 @ DFFFH selects 80Char mode. + LD HL,ARAM + CALL CLR8 + ; + CALL MLDSP + CALL BEL ; Beep to indicate startup - for cases where screen is slow to startup. + LD A,0FFH + LD (SWRK),A + +INITANSI: IF INCLUDE_ANSITERM = 1 ; If the ansi terminal emulator is builtin, enable it as default. + LD (ANSIENABLE),A + ENDIF + + ; Setup timer interrupts + LD IX,TIMIN ; Pass the interrupt service handler vector. + LD BC,00000H ; Time starts at 00:00:00 01/01/1980 on initialisation. + LD DE,00000H + LD HL,00000H + CALL TIMESET + ; + LD A,05H ; Enable interrupts at hardware level, this must be done before switching memory mode. + LD (KEYPF),A + ; +MEMSW1: IF BUILD_TZFS+BUILD_RFSTZ > 0 + LD A,TZMM_MZ700_2 ; Enable the full 64K memory range before starting BASIC initialisation. + OUT (MMCFG),A + ENDIF + + ; Clear memory + LD HL,WRKSPC +MEMSZ1: IF BUILD_MZ80A+BUILD_RFS > 0 + LD BC,MAXMEM - WRKSPC ; Clear to top of physical RAM. + ENDIF +MEMSZ2: IF BUILD_TZFS+BUILD_RFSTZ > 0 + LD BC,10000H - WRKSPC ; Clear to top of physical RAM. + ENDIF + LD E,00H +INIT4: LD (HL),E + INC HL + DEC BC + LD A,B + OR C + JR NZ,INIT4 + ; + EI + ; +INIT: LD DE,INITAB ; Initialise workspace + LD B,INITBE-INITAB+3 ; Bytes to copy + LD HL,WRKSPC ; Into workspace RAM +COPY: LD A,(DE) ; Get source + LD (HL),A ; To destination + INC HL ; Next destination + INC DE ; Next source + DEC B ; Count bytes + JP NZ,COPY ; More to move + ; LD SP,HL ; Temporary stack + CALL CLREG ; Clear registers and stack + CALL PRNTCRLF ; Output CRLF + LD (BUFFER+72+1),A ; Mark end of buffer + LD (PROGST),A ; Initialise program area + + LD HL,MAXMEM + LD DE,0-50 ; 50 Bytes string space + LD (LSTRAM),HL ; Save last available RAM + ADD HL,DE ; Allocate string space + LD (STRSPC),HL ; Save string space + CALL CLRPTR ; Clear program area + LD HL,(STRSPC) ; Get end of memory + LD DE,0-17 ; Offset for free bytes + ADD HL,DE ; Adjust HL + LD DE,PROGST ; Start of program text + LD A,L ; Get LSB + SUB E ; Adjust it + LD L,A ; Re-save + LD A,H ; Get MSB + SBC A,D ; Adjust it + LD H,A ; Re-save + PUSH HL ; Save bytes free + CALL CLS ; Clear screen and initialise the screen variables + LD HL,SIGNON ; Sign-on message + CALL PRS ; Output string + POP HL ; Get bytes free back + CALL PRNTHL ; Output amount of free memory + LD HL,BFREE ; " Bytes free" message + CALL PRS ; Output string + +WARMST: LD SP,STACK ; Temporary stack +BRKRET: CALL CLREG ; Clear registers and stack + JP PRNTOK ; Go to get command line + + ; FUNCTION ADDRESS TABLE + +FNCTAB: DW SGN + DW INT + DW ABS + DW USR + DW FRE + DW INP + DW POS + DW SQR + DW RND + DW LOG + DW EXP + DW COS + DW SIN + DW TAN + DW ATN + DW PEEK + DW DEEK + DW POINT + DW LEN + DW STR + DW VAL + DW ASC + DW CHR + DW HEX + DW BIN + DW LEFT + DW RIGHT + DW MID + + ; RESERVED WORD LIST + +WORDS: DB 'E'+80H,"ND" ; 0x80 + DB 'F'+80H,"OR" ; 0x81 + DB 'N'+80H,"EXT" ; 0x82 + DB 'D'+80H,"ATA" ; 0x83 + DB 'I'+80H,"NPUT" ; 0x84 + DB 'D'+80H,"IM" ; 0x85 + DB 'R'+80H,"EAD" ; 0x86 + DB 'L'+80H,"ET" ; 0x87 + DB 'G'+80H,"OTO" ; 0x88 + DB 'R'+80H,"UN" ; 0x89 + DB 'I'+80H,"F" ; 0x8a + DB 'R'+80H,"ESTORE" ; 0x8b + DB 'G'+80H,"OSUB" ; 0x8c + DB 'R'+80H,"ETURN" ; 0x8d + DB 'R'+80H,"EM" ; 0x8e + DB 'S'+80H,"TOP" ; 0x8f + DB 'O'+80H,"UT" ; 0x90 + DB 'O'+80H,"N" ; 0x91 + DB 'N'+80H,"ULL" ; 0x92 + DB 'W'+80H,"AIT" ; 0x93 + DB 'D'+80H,"EF" ; 0x94 + DB 'P'+80H,"OKE" ; 0x95 + DB 'D'+80H,"OKE" ; 0x96 + DB 'S'+80H,"CREEN" ; 0x97 + DB 'L'+80H,"INES" ; 0x98 + DB 'C'+80H,"LS" ; 0x99 + DB 'W'+80H,"IDTH" ; 0x9a + DB 'M'+80H,"ONITOR" ; 0x9b + DB 'S'+80H,"ET" ; 0x9c + DB 'R'+80H,"ESET" ; 0x9d + DB 'P'+80H,"RINT" ; 0x9e + DB 'C'+80H,"ONT" ; 0x9f + DB 'L'+80H,"IST" ; 0xa0 + DB 'C'+80H,"LEAR" ; 0xa1 + DB 'A'+80H,"NSITERM" ; 0xa2 + + ; Optional commands to be builtin when a tranZPUter board is present. +OPTIONS0: IF BUILD_TZFS = 1 + DB 'C'+80H,"LOAD" ; 0xa3 + DB 'C'+80H,"SAVE" ; 0xa4 + DB 'L'+80H,"OAD" ; 0xa5 + DB 'S'+80H,"AVE" ; 0xa6 + DB 'F'+80H,"REQ" ; 0xa7 + DB 'D'+80H,"IR" ; 0xa8 + DB 'C'+80H,"D" ; 0xa9 + ENDIF +OPTIONS1: IF BUILD_RFSTZ = 1 + DB 'C'+80H,"LOAD" ; 0xa3 + DB 'C'+80H,"SAVE" ; 0xa4 + DB 'R'+80H,"EM" ; 0xa5 + DB 'R'+80H,"EM" ; 0xa6 + DB 'R'+80H,"EM" ; 0xa7 + DB 'R'+80H,"EM" ; 0xa8 + DB 'R'+80H,"EM" ; 0xa9 + ENDIF +OPTIONS2: IF BUILD_RFS = 1 + DB 'C'+80H,"LOAD" ; 0xa3 + DB 'C'+80H,"SAVE" ; 0xa4 + DB 'D'+80H,"IR" ; 0xa5 + DB 'R'+80H,"EM" ; 0xa6 + DB 'R'+80H,"EM" ; 0xa7 + DB 'R'+80H,"EM" ; 0xa8 + DB 'R'+80H,"EM" ; 0xa9 + ENDIF +OPTIONS3: IF BUILD_MZ80A = 1 + DB 'C'+80H,"LOAD" ; 0xa3 + DB 'C'+80H,"SAVE" ; 0xa4 + DB 'R'+80H,"EM" ; 0xa5 + DB 'R'+80H,"EM" ; 0xa6 + DB 'R'+80H,"EM" ; 0xa7 + DB 'R'+80H,"EM" ; 0xa8 + DB 'R'+80H,"EM" ; 0xa9 + ENDIF + DB 'N'+80H,"EW" ; 0xaa <- Command list terminator word, move to lowest command. Update the ZNEW variable below as well. + ; <- Reserved space for new commands. + DB 'R'+80H,"EM" ; 0xab + DB 'R'+80H,"EM" ; 0xac + DB 'R'+80H,"EM" ; 0xad + DB 'R'+80H,"EM" ; 0xae + DB 'R'+80H,"EM" ; 0xaf + DB 'R'+80H,"EM" ; 0xb0 + DB 'R'+80H,"EM" ; 0xb1 + DB 'R'+80H,"EM" ; 0xb2 + DB 'R'+80H,"EM" ; 0xb3 + DB 'R'+80H,"EM" ; 0xb4 + DB 'R'+80H,"EM" ; 0xb5 + DB 'R'+80H,"EM" ; 0xb6 + DB 'R'+80H,"EM" ; 0xb7 + DB 'R'+80H,"EM" ; 0xb8 + DB 'R'+80H,"EM" ; 0xb9 + DB 'R'+80H,"EM" ; 0xba + DB 'R'+80H,"EM" ; 0xbb + DB 'R'+80H,"EM" ; 0xbc + DB 'R'+80H,"EM" ; 0xbd + DB 'R'+80H,"EM" ; 0xbe + DB 'R'+80H,"EM" ; 0xbf + + DB 'T'+80H,"AB(" ; 0xc0 <- 0xa5 + DB 'T'+80H,"O" ; 0xc1 <- 0xa6 + DB 'F'+80H,"N" ; 0xc2 <- 0xa7 + DB 'S'+80H,"PC(" ; 0xc3 <- 0xa8 + DB 'T'+80H,"HEN" ; 0xc4 <- 0xa9 + DB 'N'+80H,"OT" ; 0xc5 <- 0xaa + DB 'S'+80H,"TEP" ; 0xc6 <- 0xab + + DB '+'+80H ; 0xc7 <- 0xac + DB '-'+80H ; 0xc8 <- 0xad + DB '*'+80H ; 0xc9 <- 0xae + DB '/'+80H ; 0xca <- 0xaf + DB '^'+80H ; 0xcb <- 0xb0 + DB 'A'+80H,"ND" ; 0xcc <- 0xb1 + DB 'O'+80H,"R" ; 0xcd <- 0xb2 + DB '>'+80H ; 0xce <- 0xb3 + DB '='+80H ; 0xcf <- 0xb4 + DB '<'+80H ; 0xd0 <- 0xb5 + + DB 'S'+80H,"GN" ; 0xd1 <- 0xb6 + DB 'I'+80H,"NT" ; 0xd2 <- 0xb7 + DB 'A'+80H,"BS" ; 0xd3 <- 0xb8 + DB 'U'+80H,"SR" ; 0xd4 <- 0xb9 + DB 'F'+80H,"RE" ; 0xd5 <- 0xba + DB 'I'+80H,"NP" ; 0xd6 <- 0xbb + DB 'P'+80H,"OS" ; 0xd7 <- 0xbc + DB 'S'+80H,"QR" ; 0xd8 <- 0xbd + DB 'R'+80H,"ND" ; 0xd9 <- 0xbe + DB 'L'+80H,"OG" ; 0xda <- 0xbf + DB 'E'+80H,"XP" ; 0xdb <- 0xc0 + DB 'C'+80H,"OS" ; 0xdc <- 0xc1 + DB 'S'+80H,"IN" ; 0xdd <- 0xc2 + DB 'T'+80H,"AN" ; 0xde <- 0xc3 + DB 'A'+80H,"TN" ; 0xdf <- 0xc4 + DB 'P'+80H,"EEK" ; 0xe0 <- 0xc5 + DB 'D'+80H,"EEK" ; 0xe1 <- 0xc6 + DB 'P'+80H,"OINT" ; 0xe2 <- 0xc7 + DB 'L'+80H,"EN" ; 0xe3 <- 0xc8 + DB 'S'+80H,"TR$" ; 0xe4 <- 0xc9 + DB 'V'+80H,"AL" ; 0xe5 <- 0xca + DB 'A'+80H,"SC" ; 0xe6 <- 0xcb + DB 'C'+80H,"HR$" ; 0xe7 <- 0xcc + DB 'H'+80H,"EX$" ; 0xe8 <- 0xcd + DB 'B'+80H,"IN$" ; 0xe9 <- 0xce + DB 'L'+80H,"EFT$" ; 0xea <- 0xcf + DB 'R'+80H,"IGHT$" ; 0xeb <- 0xd0 + DB 'M'+80H,"ID$" ; 0xec <- 0xd1 + DB 80H ; End of list marker + + ; KEYWORD ADDRESS TABLE + +WORDTB: DW PEND + DW FOR + DW NEXT + DW DATA + DW INPUT + DW DIM + DW READ + DW LET + DW GOTO + DW RUN + DW IF + DW RESTOR + DW GOSUB + DW RETURN + DW REM + DW STOP + DW POUT + DW ON + DW NULL + DW WAIT + DW DEF + DW POKE + DW DOKE + DW SCREEN + DW LINES + DW CLS + DW WIDTH + DW MONITR + DW PSET + DW RESET + DW PRINT + DW CONT + DW LIST + DW CLEAR + DW SETANSITERM ; Enable/disable the ANSI Terminal Emulator. + + ; Optional commands to be builtin when a tranZPUter board is present. +OPTIONS0A: IF BUILD_TZFS = 1 + DW CLOADTZ ; Load tokenised BASIC program. + DW CSAVETZ ; Save tokenised BASIC program. + DW LOAD ; Load ASCII text BASIC program. + DW SAVE ; Save BASIC as ASCII text. + DW SETFREQ ; Set the CPU Frequency. + DW DIRSDCARD ; List out the SD directory. + DW SETDIR ; Change directory for all load and save operations. + ENDIF +OPTIONS1A: IF BUILD_RFSTZ = 1 + DW CLOAD80A ; Load tokenised BASIC program from tape. + DW CSAVE80A ; Save tokenised BASIC program to tape. + DW REM + DW REM + DW REM + DW REM + DW REM + ENDIF +OPTIONS2A: IF BUILD_RFS = 1 + DW CLOAD80A ; Load tokenised BASIC program from tape. + DW CSAVE80A ; Save tokenised BASIC program to tape. + DW SDDIRCMD ; Directory listing of the SD card. + DW REM + DW REM + DW REM + DW REM + ENDIF +OPTIONS3A: IF BUILD_MZ80A = 1 + DW CLOAD80A ; Load tokenised BASIC program from tape. + DW CSAVE80A ; Save tokenised BASIC program to tape. + DW REM + DW REM + DW REM + DW REM + DW REM + ENDIF + DW NEW + + ; RESERVED WORD TOKEN VALUES + +ZEND EQU 080H ; END - ZEND marks the start of the table. +ZFOR EQU 081H ; FOR +ZDATA EQU 083H ; DATA +ZGOTO EQU 088H ; GOTO +ZGOSUB EQU 08CH ; GOSUB +ZREM EQU 08EH ; REM +ZPRINT EQU 09EH ; PRINT +ZNEW EQU 0AAH ; NEW - ZNEW marks the end of the table + ; AA..BF are reserved for future commands. + + ; Space for expansion, a block of tokens for commands has been created from 0xA5 to 0xBF. + +FUNCSTRT EQU 0C0H ; Function start. +ZTAB EQU FUNCSTRT + 00H ; 0A5H ; TAB +ZTO EQU FUNCSTRT + 01H ; 0A6H ; TO +ZFN EQU FUNCSTRT + 02H ; 0A7H ; FN +ZSPC EQU FUNCSTRT + 03H ; 0A8H ; SPC +ZTHEN EQU FUNCSTRT + 04H ; 0A9H ; THEN +ZNOT EQU FUNCSTRT + 05H ; 0AAH ; NOT +ZSTEP EQU FUNCSTRT + 06H ; 0ABH ; STEP + +ZPLUS EQU FUNCSTRT + 07H ; 0ACH ; + +ZMINUS EQU FUNCSTRT + 08H ; 0ADH ; - +ZTIMES EQU FUNCSTRT + 09H ; 0AEH ; * +ZDIV EQU FUNCSTRT + 0AH ; 0AFH ; / + ; 0B0H + ; 0B1H +ZOR EQU FUNCSTRT + 0dH ; 0B2H ; OR +ZGTR EQU FUNCSTRT + 0eH ; 0B3H ; > +ZEQUAL EQU FUNCSTRT + 0fH ; 0B4H ; M +ZLTH EQU FUNCSTRT + 10H ; 0B5H ; < +ZSGN EQU FUNCSTRT + 11H ; 0B6H ; SGN + ; 0B7H + ; 0B8H + ; 0B9H + ; 0BAH + ; 0BBH + ; 0BCH + ; 0BDH + ; 0BEH + ; 0BFH + ; 0C0H + ; 0C1H + ; 0C2H + ; 0C3H + ; 0C4H + ; 0C5H + ; 0C6H +ZPOINT EQU FUNCSTRT + 22H ; 0C7H ; POINT + ; 0C8H + ; 0C9H + ; 0CAH + ; 0CBH + ; 0CCH +ZLEFT EQU FUNCSTRT + 2aH ; 0CFH ; LEFT$ + + ; Space for expansion, reserve a block of tokens for functions. + + + ; ARITHMETIC PRECEDENCE TABLE + +PRITAB: DB 79H ; Precedence value + DW PADD ; FPREG = + FPREG + + DB 79H ; Precedence value + DW PSUB ; FPREG = - FPREG + + DB 7CH ; Precedence value + DW MULT ; PPREG = * FPREG + + DB 7CH ; Precedence value + DW DIV ; FPREG = / FPREG + + DB 7FH ; Precedence value + DW POWER ; FPREG = ^ FPREG + + DB 50H ; Precedence value + DW PAND ; FPREG = AND FPREG + + DB 46H ; Precedence value + DW POR ; FPREG = OR FPREG + + ; BASIC ERROR CODE LIST + +ERRORS: DB "NF" ; NEXT without FOR + DB "SN" ; Syntax error + DB "RG" ; RETURN without GOSUB + DB "OD" ; Out of DATA + DB "FC" ; Illegal function call + DB "OV" ; Overflow error + DB "OM" ; Out of memory + DB "UL" ; Undefined line + DB "BS" ; Bad subscript + DB "DD" ; Re-DIMensioned array + DB "/0" ; Division by zero + DB "ID" ; Illegal direct + DB "TM" ; Type mis-match + DB "OS" ; Out of string space + DB "LS" ; String too long + DB "ST" ; String formula too complex + DB "CN" ; Can't CONTinue + DB "UF" ; Undefined FN function + DB "MO" ; Missing operand + DB "HX" ; HEX error + DB "BN" ; BIN error + DB "BV" ; Bad Value + DB "IO" ; IO error + + ; INITIALISATION TABLE ------------------------------------------------------- + +INITAB: JP WARMST ; Warm start jump + JP FCERR ; "USR (X)" jump (Set to Error) + + OUT (0),A ; "OUT p,n" skeleton + RET + + SUB 0 ; Division support routine + LD L,A + LD A,H + SBC A,0 + LD H,A + LD A,B + SBC A,0 + LD B,A + LD A,0 + RET + + DB 0,0,0 ; Random number seed + ; Table used by RND + DB 035H,04AH,0CAH,099H ;-2.65145E+07 + DB 039H,01CH,076H,098H ; 1.61291E+07 + DB 022H,095H,0B3H,098H ;-1.17691E+07 + DB 00AH,0DDH,047H,098H ; 1.30983E+07 + DB 053H,0D1H,099H,099H ;-2-01612E+07 + DB 00AH,01AH,09FH,098H ;-1.04269E+07 + DB 065H,0BCH,0CDH,098H ;-1.34831E+07 + DB 0D6H,077H,03EH,098H ; 1.24825E+07 + DB 052H,0C7H,04FH,080H ; Last random number + + IN A,(0) ; INP (x) skeleton + RET + + DB 1 ; POS (x) number (1) +INITABW: DB 0FFH ; Terminal width set to initial state of 255 which means unlimited width. Applicable to data output not physical screen. + IF BUILD_80C = 1 + DB 28 ; Width for commas (3 columns) + ELSE + DB 14 ; Width for commas (3 columns) + ENDIF + DB 0 ; No nulls after input bytes + DB 0 ; Output enabled (^O off) + + DW 20 ; Initial lines counter + DW 20 ; Initial lines number + DW 0 ; Array load/save check sum + + DB 0 ; Break not by NMI + DB 0 ; Break flag + + JP TTYLIN ; Input reflection (set to TTY) + JP 0000H ; POINT reflection unused + JP 0000H ; SET reflection + JP 0000H ; RESET reflection + ;JP POINTB ; POINT reflection unused + ;JP SETB ; SET reflection + ;JP RESETB ; RESET reflection + + DW STLOOK ; Temp string space + DW -2 ; Current line number (cold) + DW PROGST+1 ; Start of program text +INITBE: ; END OF INITIALISATION TABLE + + ; END OF INITIALISATION TABLE --------------------------------------------------- + +ERRMSG: DB " Error",0 +INMSG: DB " in ",0 +ZERBYT EQU $-1 ; A zero byte +OKMSG: DB "Ok",CR,LF,0,0 +BRKMSG: DB "Break",0 + +BAKSTK: LD HL,4 ; Look for "FOR" block with + ADD HL,SP ; same index as specified +LOKFOR: LD A,(HL) ; Get block ID + INC HL ; Point to index address + CP ZFOR ; Is it a "FOR" token + RET NZ ; No - exit + LD C,(HL) ; BC = Address of "FOR" index + INC HL + LD B,(HL) + INC HL ; Point to sign of STEP + PUSH HL ; Save pointer to sign + LD L,C ; HL = address of "FOR" index + LD H,B + LD A,D ; See if an index was specified + OR E ; DE = 0 if no index specified + EX DE,HL ; Specified index into HL + JP Z,INDFND ; Skip if no index given + EX DE,HL ; Index back into DE + CALL CPDEHL ; Compare index with one given +INDFND: LD BC,16-3 ; Offset to next block + POP HL ; Restore pointer to sign + RET Z ; Return if block found + ADD HL,BC ; Point to next block + JP LOKFOR ; Keep on looking + +MOVUP: CALL ENFMEM ; See if enough memory +MOVSTR: PUSH BC ; Save end of source + EX (SP),HL ; Swap source and dest" end + POP BC ; Get end of destination +MOVLP: CALL CPDEHL ; See if list moved + LD A,(HL) ; Get byte + LD (BC),A ; Move it + RET Z ; Exit if all done + DEC BC ; Next byte to move to + DEC HL ; Next byte to move + JP MOVLP ; Loop until all bytes moved + +CHKSTK: PUSH HL ; Save code string address + LD HL,(ARREND) ; Lowest free memory + LD B,0 ; BC = Number of levels to test + ADD HL,BC ; 2 Bytes for each level + ADD HL,BC + DB 3EH ; Skip "PUSH HL" +ENFMEM: PUSH HL ; Save code string address + LD A,0D0H ;LOW -48 ; 48 Bytes minimum RAM + SUB L + LD L,A + LD A,0FFH ; HIGH (-48) ; 48 Bytes minimum RAM + SBC A,H + JP C,OMERR ; Not enough - ?OM Error + LD H,A + ADD HL,SP ; Test if stack is overflowed + POP HL ; Restore code string address + RET C ; Return if enough mmory +OMERR: LD E,OM ; ?OM Error + JP BERROR + +DATSNR: LD HL,(DATLIN) ; Get line of current DATA item + LD (LINEAT),HL ; Save as current line +SNERR: LD E,SN ; ?SN Error + DB 01H ; Skip "LD E,DZ" +DZERR: LD E,DZ ; ?/0 Error + DB 01H ; Skip "LD E,NF" +NFERR: LD E,NF ; ?NF Error + DB 01H ; Skip "LD E,DD" +DDERR: LD E,DDA ; ?DD Error + DB 01H ; Skip "LD E,UF" +UFERR: LD E,UF ; ?UF Error + DB 01H ; Skip "LD E,OV +OVERR: LD E,OV ; ?OV Error + DB 01H ; Skip "LD E,TM" +TMERR: LD E,TM ; ?TM Error + +BERROR: CALL CLREG ; Clear registers and stack + LD (CTLOFG),A ; Enable output (A is 0) + CALL STTLIN ; Start new line + LD HL,ERRORS ; Point to error codes + LD D,A ; D = 0 (A is 0) + LD A,'?' + CALL OUTC ; Output '?' + ADD HL,DE ; Offset to correct error code + LD A,(HL) ; First character + CALL OUTC ; Output it + CALL GETCHR ; Get next character + CALL OUTC ; Output it + LD HL,ERRMSG ; "Error" message +ERRIN: CALL PRS ; Output message + LD HL,(LINEAT) ; Get line of error + LD DE,-2 ; Cold start error if -2 + CALL CPDEHL ; See if cold start error + JP Z,CSTART ; Cold start error - Restart + LD A,H ; Was it a direct error? + AND L ; Line = -1 if direct error + INC A + CALL NZ,LINEIN ; No - output line of error + DB 3EH ; Skip "POP BC" +POPNOK: POP BC ; Drop address in input buffer + +PRNTOK: XOR A ; Output "Ok" and get command + LD (CTLOFG),A ; Enable output + CALL STTLIN ; Start new line + LD HL,OKMSG ; "Ok" message + CALL PRS ; Output "Ok" +GETCMD: LD HL,-1 ; Flag direct mode + LD (LINEAT),HL ; Save as current line + CALL GETLIN ; Get an input line + JP C,GETCMD ; Get line again if break + CALL GETCHR ; Get first character + INC A ; Test if end of line + DEC A ; Without affecting Carry + JP Z,GETCMD ; Nothing entered - Get another + PUSH AF ; Save Carry status + CALL ATOH ; Get line number into DE + PUSH DE ; Save line number + CALL CRUNCH ; Tokenise rest of line + LD B,A ; Length of tokenised line -> length is in C, B is zeroed. + POP DE ; Restore line number + POP AF ; Restore Carry + JP NC,EXCUTE ; No line number - Direct mode + PUSH DE ; Save line number + PUSH BC ; Save length of tokenised line + XOR A + LD (LSTBIN),A ; Clear last byte input + CALL GETCHR ; Get next character + OR A ; Set flags + PUSH AF ; And save them + CALL SRCHLN ; Search for line number in DE + JP C,LINFND ; Jump if line found + POP AF ; Get status + PUSH AF ; And re-save + JP Z,ULERR ; Nothing after number - Error + OR A ; Clear Carry +LINFND: PUSH BC ; Save address of line in prog + JP NC,INEWLN ; Line not found - Insert new + EX DE,HL ; Next line address in DE + LD HL,(PROGND) ; End of program +SFTPRG: LD A,(DE) ; Shift rest of program down + LD (BC),A + INC BC ; Next destination + INC DE ; Next source + CALL CPDEHL ; All done? + JP NZ,SFTPRG ; More to do + LD H,B ; HL - New end of program + LD L,C + LD (PROGND),HL ; Update end of program + +INEWLN: POP DE ; Get address of line, + POP AF ; Get status + JP Z,SETPTR ; No text - Set up pointers + LD HL,(PROGND) ; Get end of program + EX (SP),HL ; Get length of input line + POP BC ; End of program to BC + ADD HL,BC ; Find new end + PUSH HL ; Save new end + CALL MOVUP ; Make space for line + POP HL ; Restore new end + LD (PROGND),HL ; Update end of program pointer + EX DE,HL ; Get line to move up in HL + LD (HL),H ; Save MSB + POP DE ; Get new line number + INC HL ; Skip pointer + INC HL + LD (HL),E ; Save LSB of line number + INC HL + LD (HL),D ; Save MSB of line number + INC HL ; To first byte in line + LD DE,BUFFER ; Copy buffer to program +MOVBUF: LD A,(DE) ; Get source + LD (HL),A ; Save destinations + INC HL ; Next source + INC DE ; Next destination + OR A ; Done? + JP NZ,MOVBUF ; No - Repeat +SETPTR: CALL RUNFST ; Set line pointers + INC HL ; To LSB of pointer + EX DE,HL ; Address to DE +PTRLP: LD H,D ; Address to HL + LD L,E + LD A,(HL) ; Get LSB of pointer + INC HL ; To MSB of pointer + OR (HL) ; Compare with MSB pointer + JP Z,GETCMD ; Get command line if end + INC HL ; To LSB of line number + INC HL ; Skip line number + INC HL ; Point to first byte in line + XOR A ; Looking for 00 byte +FNDEND: CP (HL) ; Found end of line? + INC HL ; Move to next byte + JP NZ,FNDEND ; No - Keep looking + EX DE,HL ; Next line address to HL + LD (HL),E ; Save LSB of pointer + INC HL + LD (HL),D ; Save MSB of pointer + JP PTRLP ; Do next line + +SRCHLN: LD HL,(BASTXT) ; Start of program text +SRCHLP: LD B,H ; BC = Address to look at + LD C,L + LD A,(HL) ; Get address of next line + INC HL + OR (HL) ; End of program found? + DEC HL + RET Z ; Yes - Line not found + INC HL + INC HL + LD A,(HL) ; Get LSB of line number + INC HL + LD H,(HL) ; Get MSB of line number + LD L,A + CALL CPDEHL ; Compare with line in DE + LD H,B ; HL = Start of this line + LD L,C + LD A,(HL) ; Get LSB of next line address + INC HL + LD H,(HL) ; Get MSB of next line address + LD L,A ; Next line to HL + CCF + RET Z ; Lines found - Exit + CCF + RET NC ; Line not found,at line after + JP SRCHLP ; Keep looking + +NEW: RET NZ ; Return if any more on line +CLRPTR: LD HL,(BASTXT) ; Point to start of program + XOR A ; Set program area to empty + LD (HL),A ; Save LSB = 00 + INC HL + LD (HL),A ; Save MSB = 00 + INC HL + LD (PROGND),HL ; Set program end + +RUNFST: LD HL,(BASTXT) ; Clear all variables + DEC HL + +INTVAR: LD (BRKLIN),HL ; Initialise RUN variables + LD HL,(LSTRAM) ; Get end of RAM + LD (STRBOT),HL ; Clear string space + XOR A + CALL RESTOR ; Reset DATA pointers + LD HL,(PROGND) ; Get end of program + LD (VAREND),HL ; Clear variables + LD (ARREND),HL ; Clear arrays + +CLREG: POP BC ; Save return address + LD HL,(STRSPC) ; Get end of working RAN + LD SP,HL ; Set stack + LD HL,TMSTPL ; Temporary string pool + LD (TMSTPT),HL ; Reset temporary string ptr + XOR A ; A = 00 + LD L,A ; HL = 0000 + LD H,A + LD (CONTAD),HL ; No CONTinue + LD (FORFLG),A ; Clear FOR flag + LD (FNRGNM),HL ; Clear FN argument + PUSH HL ; HL = 0000 + PUSH BC ; Put back return +DOAGN: LD HL,(BRKLIN) ; Get address of code to RUN + RET ; Return to execution driver + +PROMPT: LD A,'?' ; '?' + CALL OUTC ; Output character + LD A,' ' ; Space + CALL OUTC ; Output character + JP RINPUT ; Get input line + +CRUNCH: XOR A ; Tokenise line @ HL to BUFFER + LD (DATFLG),A ; Reset literal flag + LD C,2+3 ; 2 byte number and 3 nulls + LD DE,BUFFER ; Start of input buffer +CRNCLP: LD A,(HL) ; Get byte + CP ' ' ; Is it a space? + JP Z,MOVDIR ; Yes - Copy direct + LD B,A ; Save character + CP '"' ; Is it a quote? + JP Z,CPYLIT ; Yes - Copy literal string + OR A ; Is it end of buffer? + JP Z,ENDBUF ; Yes - End buffer + LD A,(DATFLG) ; Get data type + OR A ; Literal? + LD A,(HL) ; Get byte to copy + JP NZ,MOVDIR ; Literal - Copy direct + CP '?' ; Is it '?' short for PRINT + LD A,ZPRINT ; "PRINT" token + JP Z,MOVDIR ; Yes - replace it + LD A,(HL) ; Get byte again + CP '0' ; Is it less than '0' + JP C,FNDWRD ; Yes - Look for reserved words + CP 60; ";"+1 ; Is it "0123456789:;" ? + JP C,MOVDIR ; Yes - copy it direct +FNDWRD: PUSH DE ; Look for reserved words + LD DE,WORDS-1 ; Point to table + PUSH BC ; Save count + LD BC,RETNAD ; Where to return to + PUSH BC ; Save return address + LD B,ZEND-1 ; First token value -1 + LD A,(HL) ; Get byte + CP 'a' ; Less than 'a' ? + JP C,SEARCH ; Yes - search for words + CP 'z'+1 ; Greater than 'z' ? + JP NC,SEARCH ; Yes - search for words + AND 01011111B ; Force upper case + LD (HL),A ; Replace byte +SEARCH: LD C,(HL) ; Search for a word + EX DE,HL +GETNXT: INC HL ; Get next reserved word + OR (HL) ; Start of word? + JP P,GETNXT ; No - move on + INC B ; Increment token value + LD A, (HL) ; Get byte from table + AND 01111111B ; Strip bit 7 + RET Z ; Return if end of list + CP C ; Same character as in buffer? + JP NZ,GETNXT ; No - get next word + EX DE,HL + PUSH HL ; Save start of word + +NXTBYT: INC DE ; Look through rest of word + LD A,(DE) ; Get byte from table + OR A ; End of word ? + JP M,MATCH ; Yes - Match found + LD C,A ; Save it + LD A,B ; Get token value + CP ZGOTO ; Is it "GOTO" token ? + JP NZ,NOSPC ; No - Don't allow spaces + CALL GETCHR ; Get next character + DEC HL ; Cancel increment from GETCHR +NOSPC: INC HL ; Next byte + LD A,(HL) ; Get byte + CP 'a' ; Less than 'a' ? + JP C,NOCHNG ; Yes - don't change + AND 01011111B ; Make upper case +NOCHNG: CP C ; Same as in buffer ? + JP Z,NXTBYT ; Yes - keep testing + POP HL ; Get back start of word + JP SEARCH ; Look at next word + +MATCH: LD C,B ; Word found - Save token value + POP AF ; Throw away return + EX DE,HL + RET ; Return to "RETNAD" +RETNAD: EX DE,HL ; Get address in string + LD A,C ; Get token value + POP BC ; Restore buffer length + POP DE ; Get destination address +MOVDIR: INC HL ; Next source in buffer + LD (DE),A ; Put byte in buffer + INC DE ; Move up buffer + INC C ; Increment length of buffer + SUB ':' ; End of statement? + JP Z,SETLIT ; Jump if multi-statement line + CP ZDATA-3AH ; Is it DATA statement ? + JP NZ,TSTREM ; No - see if REM +SETLIT: LD (DATFLG),A ; Set literal flag +TSTREM: SUB ZREM-3AH ; Is it REM? + JP NZ,CRNCLP ; No - Leave flag + LD B,A ; Copy rest of buffer +NXTCHR: LD A,(HL) ; Get byte + OR A ; End of line ? + JP Z,ENDBUF ; Yes - Terminate buffer + CP B ; End of statement ? + JP Z,MOVDIR ; Yes - Get next one +CPYLIT: INC HL ; Move up source string + LD (DE),A ; Save in destination + INC C ; Increment length + INC DE ; Move up destination + JP NXTCHR ; Repeat + +ENDBUF: LD HL,BUFFER-1 ; Point to start of buffer + LD (DE),A ; Mark end of buffer (A = 00) + INC DE + LD (DE),A ; A = 00 + INC DE + LD (DE),A ; A = 00 + RET + +DODEL: LD A,(NULFLG) ; Get null flag status + OR A ; Is it zero? + LD A,0 ; Zero A - Leave flags + LD (NULFLG),A ; Zero null flag + JP NZ,ECHDEL ; Set - Echo it + DEC B ; Decrement length + JP Z,GETLIN ; Get line again if empty + CALL OUTC ; Output null character + DB 3EH ; Skip "DEC B" +ECHDEL: DEC B ; Count bytes in buffer + DEC HL ; Back space buffer + JP Z,OTKLN ; No buffer - Try again + LD A,(HL) ; Get deleted byte + CALL OUTC ; Echo it + JP MORINP ; Get more input + +DELCHR: DEC B ; Count bytes in buffer + DEC HL ; Back space buffer + JR Z,GETLIN ; End of buffer, start again + CALL OUTC ; Output character in A + JP NZ,MORINP ; Not end - Get more +OTKLN: CALL OUTC ; Output character in A +KILIN: CALL PRNTCRLF ; Output CRLF + JP TTYLIN ; Get line again + +GETLIN: +TTYLIN: LD HL,BUFFER ; Get a line by character + LD B,1 ; Set buffer as empty + XOR A + LD (NULFLG),A ; Clear null flag +MORINP: CALL CLOTST ; Get character and test ^O + LD C,A ; Save character in C + CP DELETE ; Delete character? + JP Z,DELCHR ;DODEL ; Yes - Process it + LD A,(NULFLG) ; Get null flag + OR A ; Test null flag status + JP Z,PROCES ; Reset - Process character + LD A,0 ; Set a null + CALL OUTC ; Output null + XOR A ; Clear A + LD (NULFLG),A ; Reset null flag +PROCES: LD A,C ; Get character + CP CTRL_G ; Bell? + JP Z,PUTCTL ; Yes - Save it + CP CTRL_C ; Is it control "C"? + CALL Z,PRNTCRLF ; Yes - Output CRLF + SCF ; Flag break + RET Z ; Return if control "C" + CP CR ; Is it enter? + JP Z,ENDINP ; Yes - Terminate input + CP CTRL_U ; Is it control "U"? + JP Z,KILIN ; Yes - Get another line + CP '@' ; Is it "kill line"? + JP Z,OTKLN ; Yes - Kill line + CP DELETE ; Is it delete? + JP Z,DELCHR ; Yes - Delete character + CP BACKS ; Is it backspace? + JP Z,DELCHR ; Yes - Delete character + CP CTRL_R ; Is it control "R"? + JP NZ,PUTBUF ; No - Put in buffer + PUSH BC ; Save buffer length + PUSH DE ; Save DE + PUSH HL ; Save buffer address + LD (HL),0 ; Mark end of buffer + CALL OUTNCR ; Output and do CRLF + LD HL,BUFFER ; Point to buffer start + CALL PRS ; Output buffer + POP HL ; Restore buffer address + POP DE ; Restore DE + POP BC ; Restore buffer length + JP MORINP ; Get another character + +PUTBUF: CP ' ' ; Is it a control code? + JP C,MORINP ; Yes - Ignore +PUTCTL: LD A,B ; Get number of bytes in buffer + CP 72+1 ; Test for line overflow + LD A,CTRL_G ; Set a bell + JP NC,OUTNBS ; Ring bell if buffer full + LD A,C ; Get character + LD (HL),C ; Save in buffer + LD (LSTBIN),A ; Save last input byte + INC HL ; Move up buffer + INC B ; Increment length +OUTIT: CALL OUTC ; Output the character entered + JP MORINP ; Get another character + +OUTNBS: CALL PRNT ; Strange, get to end of line ring bell then back space???? Disabled, just ring bell. This area of code needs a new handler. + JP MORINP ; Get another character + ;CALL OUTC ; Output bell and back over it + ;LD A,BACKS ; Set back space + ;JP OUTIT ; Output it and get more + +CPDEHL: LD A,H ; Get H + SUB D ; Compare with D + RET NZ ; Different - Exit + LD A,L ; Get L + SUB E ; Compare with E + RET ; Return status + +CHKSYN: LD A,(HL) ; Check syntax of character + EX (SP),HL ; Address of test byte + CP (HL) ; Same as in code string? + INC HL ; Return address + EX (SP),HL ; Put it back + JP Z,GETCHR ; Yes - Get next character + JP SNERR ; Different - ?SN Error + +OUTC: PUSH AF ; Save character + LD A,(CTLOFG) ; Get control "O" flag + OR A ; Is it set? + JP NZ,POPAF ; Yes - don't output + POP AF ; Restore character + PUSH BC ; Save buffer length + PUSH AF ; Save character + CP ' ' ; Is it a control code? + JP C,DINPOS ; Yes - Don't INC POS(X) + LD A,(LWIDTH) ; Get line width + LD B,A ; To B + LD A,(CURPOS) ; Get cursor position + INC B ; Width 255? + JP Z,INCLEN ; Yes - No width limit + DEC B ; Restore width + CP B ; At end of line? + CALL Z,PRNTCRLF ; Yes - output CRLF +INCLEN: INC A ; Move on one character + LD (CURPOS),A ; Save new position +DINPOS: IF INCLUDE_ANSITERM = 1 + LD A,(ANSIENABLE) + OR A + JR Z,NOANSI + POP AF ; Restore character + POP BC ; Restore buffer length + CALL ANSITERM ; Send it via the Ansi processor. + RET + ENDIF +NOANSI: POP AF ; Restore character + POP BC ; Restore buffer length + CALL PRNT ; Send it . + RET + +CLOTST: CALL GETKY ; Get input character + AND 01111111B ; Strip bit 7 + CP CTRL_O ; Is it control "O"? + RET NZ ; No don't flip flag + LD A,(CTLOFG) ; Get flag + CPL ; Flip it + LD (CTLOFG),A ; Put it back + XOR A ; Null character + RET + +LIST: CALL ATOH ; ASCII number to DE + RET NZ ; Return if anything extra + POP BC ; Rubbish - Not needed + CALL SRCHLN ; Search for line number in DE + PUSH BC ; Save address of line + CALL SETLIN ; Set up lines counter +LISTLP: POP HL ; Restore address of line + LD C,(HL) ; Get LSB of next line + INC HL + LD B,(HL) ; Get MSB of next line + INC HL + LD A,B ; BC = 0 (End of program)? + OR C + JP Z,PRNTOK ; Yes - Go to command mode + CALL COUNT ; Count lines + CALL TSTBRK ; Test for break key + PUSH BC ; Save address of next line + CALL PRNTCRLF ; Output CRLF + LD E,(HL) ; Get LSB of line number + INC HL + LD D,(HL) ; Get MSB of line number + INC HL + PUSH HL ; Save address of line start + EX DE,HL ; Line number to HL + CALL PRNTHL ; Output line number in decimal + LD A,' ' ; Space after line number + POP HL ; Restore start of line address +LSTLP2: CALL OUTC ; Output character in A +LSTLP3: LD A,(HL) ; Get next byte in line + OR A ; End of line? + INC HL ; To next byte in line + JP Z,LISTLP ; Yes - get next line + JP P,LSTLP2 ; No token - output it + SUB ZEND-1 ; Find and output word + LD C,A ; Token offset+1 to C + LD DE,WORDS ; Reserved word list +FNDTOK: LD A,(DE) ; Get character in list + INC DE ; Move on to next + OR A ; Is it start of word? + JP P,FNDTOK ; No - Keep looking for word + DEC C ; Count words + JP NZ,FNDTOK ; Not there - keep looking +OUTWRD: AND 01111111B ; Strip bit 7 + CALL OUTC ; Output first character + LD A,(DE) ; Get next character + INC DE ; Move on to next + OR A ; Is it end of word? + JP P,OUTWRD ; No - output the rest + JP LSTLP3 ; Next byte in line + +SETLIN: PUSH HL ; Set up LINES counter + LD HL,(LINESN) ; Get LINES number + LD (LINESC),HL ; Save in LINES counter + POP HL + RET + +COUNT: PUSH HL ; Save code string address + PUSH DE + LD HL,(LINESC) ; Get LINES counter + LD DE,-1 + ADC HL,DE ; Decrement + LD (LINESC),HL ; Put it back + POP DE + POP HL ; Restore code string address + RET P ; Return if more lines to go + PUSH HL ; Save code string address + LD HL,(LINESN) ; Get LINES number + LD (LINESC),HL ; Reset LINES counter + CALL GETKY ; Get input character + CP CTRL_C ; Is it control "C"? + JP Z,RSLNBK ; Yes - Reset LINES and break + POP HL ; Restore code string address + JP COUNT ; Keep on counting + +RSLNBK: LD HL,(LINESN) ; Get LINES number + LD (LINESC),HL ; Reset LINES counter + JP BRKRET ; Go and output "Break" + +FOR: LD A,64H ; Flag "FOR" assignment + LD (FORFLG),A ; Save "FOR" flag + CALL LET ; Set up initial index + POP BC ; Drop RETurn address + PUSH HL ; Save code string address + CALL DATA ; Get next statement address + LD (LOOPST),HL ; Save it for start of loop + LD HL,2 ; Offset for "FOR" block + ADD HL,SP ; Point to it +FORSLP: CALL LOKFOR ; Look for existing "FOR" block + POP DE ; Get code string address + JP NZ,FORFND ; No nesting found + ADD HL,BC ; Move into "FOR" block + PUSH DE ; Save code string address + DEC HL + LD D,(HL) ; Get MSB of loop statement + DEC HL + LD E,(HL) ; Get LSB of loop statement + INC HL + INC HL + PUSH HL ; Save block address + LD HL,(LOOPST) ; Get address of loop statement + CALL CPDEHL ; Compare the FOR loops + POP HL ; Restore block address + JP NZ,FORSLP ; Different FORs - Find another + POP DE ; Restore code string address + LD SP,HL ; Remove all nested loops + +FORFND: EX DE,HL ; Code string address to HL + LD C,8 + CALL CHKSTK ; Check for 8 levels of stack + PUSH HL ; Save code string address + LD HL,(LOOPST) ; Get first statement of loop + EX (SP),HL ; Save and restore code string + PUSH HL ; Re-save code string address + LD HL,(LINEAT) ; Get current line number + EX (SP),HL ; Save and restore code string + CALL TSTNUM ; Make sure it's a number + CALL CHKSYN ; Make sure "TO" is next + DB ZTO ; "TO" token + CALL GETNUM ; Get "TO" expression value + PUSH HL ; Save code string address + CALL BCDEFP ; Move "TO" value to BCDE + POP HL ; Restore code string address + PUSH BC ; Save "TO" value in block + PUSH DE + LD BC,8100H ; BCDE - 1 (default STEP) + LD D,C ; C=0 + LD E,D ; D=0 + LD A,(HL) ; Get next byte in code string + CP ZSTEP ; See if "STEP" is stated + LD A,1 ; Sign of step = 1 + JP NZ,SAVSTP ; No STEP given - Default to 1 + CALL GETCHR ; Jump over "STEP" token + CALL GETNUM ; Get step value + PUSH HL ; Save code string address + CALL BCDEFP ; Move STEP to BCDE + CALL TSTSGN ; Test sign of FPREG + POP HL ; Restore code string address +SAVSTP: PUSH BC ; Save the STEP value in block + PUSH DE + PUSH AF ; Save sign of STEP + INC SP ; Don't save flags + PUSH HL ; Save code string address + LD HL,(BRKLIN) ; Get address of index variable + EX (SP),HL ; Save and restore code string +PUTFID: LD B,ZFOR ; "FOR" block marker + PUSH BC ; Save it + INC SP ; Don't save C + +RUNCNT: CALL TSTBRK ; Execution driver - Test break + LD (BRKLIN),HL ; Save code address for break + LD A,(HL) ; Get next byte in code string + CP ':' ; Multi statement line? + JP Z,EXCUTE ; Yes - Execute it + OR A ; End of line? + JP NZ,SNERR ; No - Syntax error + INC HL ; Point to address of next line + LD A,(HL) ; Get LSB of line pointer + INC HL + OR (HL) ; Is it zero (End of prog)? + JP Z,ENDPRG ; Yes - Terminate execution + INC HL ; Point to line number + LD E,(HL) ; Get LSB of line number + INC HL + LD D,(HL) ; Get MSB of line number + EX DE,HL ; Line number to HL + LD (LINEAT),HL ; Save as current line number + EX DE,HL ; Line number back to DE +EXCUTE: CALL GETCHR ; Get key word + LD DE,RUNCNT ; Where to RETurn to + PUSH DE ; Save for RETurn +IFJMP: RET Z ; Go to RUNCNT if end of STMT +ONJMP: SUB ZEND ; Is it a token? + JP C,LET ; No - try to assign it + CP ZNEW+1-ZEND ; END to NEW ? + JP NC,SNERR ; Not a key word - ?SN Error + RLCA ; Double it + LD C,A ; BC = Offset into table + LD B,0 + EX DE,HL ; Save code string address + LD HL,WORDTB ; Keyword address table + ADD HL,BC ; Point to routine address + LD C,(HL) ; Get LSB of routine address + INC HL + LD B,(HL) ; Get MSB of routine address + PUSH BC ; Save routine address + EX DE,HL ; Restore code string address + +GETCHR: INC HL ; Point to next character + LD A,(HL) ; Get next code string byte + CP ':' ; Z if ':' + RET NC ; NC if > "9" + CP ' ' + JP Z,GETCHR ; Skip over spaces + CP '0' + CCF ; NC if < '0' + INC A ; Test for zero - Leave carry + DEC A ; Z if Null + RET + +RESTOR: EX DE,HL ; Save code string address + LD HL,(BASTXT) ; Point to start of program + JP Z,RESTNL ; Just RESTORE - reset pointer + EX DE,HL ; Restore code string address + CALL ATOH ; Get line number to DE + PUSH HL ; Save code string address + CALL SRCHLN ; Search for line number in DE + LD H,B ; HL = Address of line + LD L,C + POP DE ; Restore code string address + JP NC,ULERR ; ?UL Error if not found +RESTNL: DEC HL ; Byte before DATA statement +UPDATA: LD (NXTDAT),HL ; Update DATA pointer + EX DE,HL ; Restore code string address + RET + +TSTBRK: CALL CHKKY ; Check input status + OR A + RET Z ; No key, go back + CALL GETKY ; Get the key into A + CP ESC ; Escape key? + JR Z,BRK ; Yes, break + CP CTRL_C ; + JR Z,BRK ; Yes, break + CP CTRL_S ; Stop scrolling? + RET NZ ; Other key, ignore + + +STALL: CALL GETKY ; Wait for key + CP CTRL_Q ; Resume scrolling? + RET Z ; Release the chokehold + CP CTRL_C ; Second break? + JR Z,STOP ; Break during hold exits prog + JR STALL ; Loop until or + +BRK LD A,0FFH ; Set BRKFLG + LD (BRKFLG),A ; Store it + + +STOP: RET NZ ; Exit if anything else + DB 0F6H ; Flag "STOP" +PEND: RET NZ ; Exit if anything else + LD (BRKLIN),HL ; Save point of break + DB 21H ; Skip "OR 11111111B" +INPBRK: OR 11111111B ; Flag "Break" wanted + POP BC ; Return not needed and more +ENDPRG: LD HL,(LINEAT) ; Get current line number + PUSH AF ; Save STOP / END status + LD A,L ; Is it direct break? + AND H + INC A ; Line is -1 if direct break + JP Z,NOLIN ; Yes - No line number + LD (ERRLIN),HL ; Save line of break + LD HL,(BRKLIN) ; Get point of break + LD (CONTAD),HL ; Save point to CONTinue +NOLIN: XOR A + LD (CTLOFG),A ; Enable output + CALL STTLIN ; Start a new line + POP AF ; Restore STOP / END status + LD HL,BRKMSG ; "Break" message + JP NZ,ERRIN ; "in line" wanted? + JP PRNTOK ; Go to command mode + +CONT: LD HL,(CONTAD) ; Get CONTinue address + LD A,H ; Is it zero? + OR L + LD E,CN ; ?CN Error + JP Z,BERROR ; Yes - output "?CN Error" + EX DE,HL ; Save code string address + LD HL,(ERRLIN) ; Get line of last break + LD (LINEAT),HL ; Set up current line number + EX DE,HL ; Restore code string address + RET ; CONTinue where left off + +NULL: CALL GETINT ; Get integer 0-255 + RET NZ ; Return if bad value + LD (NULLS),A ; Set nulls number + RET + + +ACCSUM: PUSH HL ; Save address in array + LD HL,(CHKSUM) ; Get check sum + LD B,0 ; BC - Value of byte + LD C,A + ADD HL,BC ; Add byte to check sum + LD (CHKSUM),HL ; Re-save check sum + POP HL ; Restore address in array + RET + +CHKLTR: LD A,(HL) ; Get byte + CP 'A' ; < 'a' ? + RET C ; Carry set if not letter + CP 'Z'+1 ; > 'z' ? + CCF + RET ; Carry set if not letter + +FPSINT: CALL GETCHR ; Get next character +POSINT: CALL GETNUM ; Get integer 0 to 32767 +DEPINT: CALL TSTSGN ; Test sign of FPREG + JP M,FCERR ; Negative - ?FC Error +DEINT: LD A,(FPEXP) ; Get integer value to DE + CP 80H+16 ; Exponent in range (16 bits)? + JP C,FPINT ; Yes - convert it + LD BC,9080H ; BCDE = -32768 + LD DE,0000 + PUSH HL ; Save code string address + CALL CMPNUM ; Compare FPREG with BCDE + POP HL ; Restore code string address + LD D,C ; MSB to D + RET Z ; Return if in range +FCERR: LD E,FC ; ?FC Error + JP BERROR ; Output error- + +ATOH: DEC HL ; ASCII number to DE binary +GETLN: LD DE,0 ; Get number to DE +GTLNLP: CALL GETCHR ; Get next character + RET NC ; Exit if not a digit + PUSH HL ; Save code string address + PUSH AF ; Save digit + LD HL,65529/10 ; Largest number 65529 + CALL CPDEHL ; Number in range? + JP C,SNERR ; No - ?SN Error + LD H,D ; HL = Number + LD L,E + ADD HL,DE ; Times 2 + ADD HL,HL ; Times 4 + ADD HL,DE ; Times 5 + ADD HL,HL ; Times 10 + POP AF ; Restore digit + SUB '0' ; Make it 0 to 9 + LD E,A ; DE = Value of digit + LD D,0 + ADD HL,DE ; Add to number + EX DE,HL ; Number to DE + POP HL ; Restore code string address + JP GTLNLP ; Go to next character + +CLEAR: JP Z,INTVAR ; Just "CLEAR" Keep parameters + CALL POSINT ; Get integer 0 to 32767 to DE + DEC HL ; Cancel increment + CALL GETCHR ; Get next character + PUSH HL ; Save code string address + LD HL,(LSTRAM) ; Get end of RAM + JP Z,STORED ; No value given - Use stored + POP HL ; Restore code string address + CALL CHKSYN ; Check for comma + DB ',' + PUSH DE ; Save number + CALL POSINT ; Get integer 0 to 32767 + DEC HL ; Cancel increment + CALL GETCHR ; Get next character + JP NZ,SNERR ; ?SN Error if more on line + EX (SP),HL ; Save code string address + EX DE,HL ; Number to DE +STORED: LD A,L ; Get LSB of new RAM top + SUB E ; Subtract LSB of string space + LD E,A ; Save LSB + LD A,H ; Get MSB of new RAM top + SBC A,D ; Subtract MSB of string space + LD D,A ; Save MSB + JP C,OMERR ; ?OM Error if not enough mem + PUSH HL ; Save RAM top + LD HL,(PROGND) ; Get program end + LD BC,40 ; 40 Bytes minimum working RAM + ADD HL,BC ; Get lowest address + CALL CPDEHL ; Enough memory? + JP NC,OMERR ; No - ?OM Error + EX DE,HL ; RAM top to HL + LD (STRSPC),HL ; Set new string space + POP HL ; End of memory to use + LD (LSTRAM),HL ; Set new top of RAM + POP HL ; Restore code string address + JP INTVAR ; Initialise variables + +RUN: JP Z,RUNFST ; RUN from start if just RUN + CALL INTVAR ; Initialise variables + LD BC,RUNCNT ; Execution driver loop + JP RUNLIN ; RUN from line number + +GOSUB: LD C,3 ; 3 Levels of stack needed + CALL CHKSTK ; Check for 3 levels of stack + POP BC ; Get return address + PUSH HL ; Save code string for RETURN + PUSH HL ; And for GOSUB routine + LD HL,(LINEAT) ; Get current line + EX (SP),HL ; Into stack - Code string out + LD A,ZGOSUB ; "GOSUB" token + PUSH AF ; Save token + INC SP ; Don't save flags + +RUNLIN: PUSH BC ; Save return address +GOTO: CALL ATOH ; ASCII number to DE binary + CALL REM ; Get end of line + PUSH HL ; Save end of line + LD HL,(LINEAT) ; Get current line + CALL CPDEHL ; Line after current? + POP HL ; Restore end of line + INC HL ; Start of next line + CALL C,SRCHLP ; Line is after current line + CALL NC,SRCHLN ; Line is before current line + LD H,B ; Set up code string address + LD L,C + DEC HL ; Incremented after + RET C ; Line found +ULERR: LD E,UL ; ?UL Error + JP BERROR ; Output error message + +RETURN: RET NZ ; Return if not just RETURN + LD D,-1 ; Flag "GOSUB" search + CALL BAKSTK ; Look "GOSUB" block + LD SP,HL ; Kill all FORs in subroutine + CP ZGOSUB ; Test for "GOSUB" token + LD E,RG ; ?RG Error + JP NZ,BERROR ; Error if no "GOSUB" found + POP HL ; Get RETURN line number + LD (LINEAT),HL ; Save as current + INC HL ; Was it from direct statement? + LD A,H + OR L ; Return to line + JP NZ,RETLIN ; No - Return to line + LD A,(LSTBIN) ; Any INPUT in subroutine? + OR A ; If so buffer is corrupted + JP NZ,POPNOK ; Yes - Go to command mode +RETLIN: LD HL,RUNCNT ; Execution driver loop + EX (SP),HL ; Into stack - Code string out + DB 3EH ; Skip "POP HL" +NXTDTA: POP HL ; Restore code string address + +DATA: DB 01H,3AH ; ':' End of statement +REM: LD C,0 ; 00 End of statement + LD B,0 +NXTSTL: LD A,C ; Statement and byte + LD C,B + LD B,A ; Statement end byte +NXTSTT: LD A,(HL) ; Get byte + OR A ; End of line? + RET Z ; Yes - Exit + CP B ; End of statement? + RET Z ; Yes - Exit + INC HL ; Next byte + CP '"' ; Literal string? + JP Z,NXTSTL ; Yes - Look for another '"' + JP NXTSTT ; Keep looking + +LET: CALL GETVAR ; Get variable name + CALL CHKSYN ; Make sure "=" follows + DB ZEQUAL ; "=" token + PUSH DE ; Save address of variable + LD A,(TYPE) ; Get data type + PUSH AF ; Save type + CALL EVAL ; Evaluate expression + POP AF ; Restore type + EX (SP),HL ; Save code - Get var addr + LD (BRKLIN),HL ; Save address of variable + RRA ; Adjust type + CALL CHKTYP ; Check types are the same + JP Z,LETNUM ; Numeric - Move value +LETSTR: PUSH HL ; Save address of string var + LD HL,(FPREG) ; Pointer to string entry + PUSH HL ; Save it on stack + INC HL ; Skip over length + INC HL + LD E,(HL) ; LSB of string address + INC HL + LD D,(HL) ; MSB of string address + LD HL,(BASTXT) ; Point to start of program + CALL CPDEHL ; Is string before program? + JP NC,CRESTR ; Yes - Create string entry + LD HL,(STRSPC) ; Point to string space + CALL CPDEHL ; Is string literal in program? + POP DE ; Restore address of string + JP NC,MVSTPT ; Yes - Set up pointer + LD HL,TMPSTR ; Temporary string pool + CALL CPDEHL ; Is string in temporary pool? + JP NC,MVSTPT ; No - Set up pointer + DB 3EH ; Skip "POP DE" +CRESTR: POP DE ; Restore address of string + CALL BAKTMP ; Back to last tmp-str entry + EX DE,HL ; Address of string entry + CALL SAVSTR ; Save string in string area +MVSTPT: CALL BAKTMP ; Back to last tmp-str entry + POP HL ; Get string pointer + CALL DETHL4 ; Move string pointer to var + POP HL ; Restore code string address + RET + +LETNUM: PUSH HL ; Save address of variable + CALL FPTHL ; Move value to variable + POP DE ; Restore address of variable + POP HL ; Restore code string address + RET + +ON: CALL GETINT ; Get integer 0-255 + LD A,(HL) ; Get "GOTO" or "GOSUB" token + LD B,A ; Save in B + CP ZGOSUB ; "GOSUB" token? + JP Z,ONGO ; Yes - Find line number + CALL CHKSYN ; Make sure it's "GOTO" + DB ZGOTO ; "GOTO" token + DEC HL ; Cancel increment +ONGO: LD C,E ; Integer of branch value +ONGOLP: DEC C ; Count branches + LD A,B ; Get "GOTO" or "GOSUB" token + JP Z,ONJMP ; Go to that line if right one + CALL GETLN ; Get line number to DE + CP ',' ; Another line number? + RET NZ ; No - Drop through + JP ONGOLP ; Yes - loop + +IF: CALL EVAL ; Evaluate expression + LD A,(HL) ; Get token + CP ZGOTO ; "GOTO" token? + JP Z,IFGO ; Yes - Get line + CALL CHKSYN ; Make sure it's "THEN" + DB ZTHEN ; "THEN" token + DEC HL ; Cancel increment +IFGO: CALL TSTNUM ; Make sure it's numeric + CALL TSTSGN ; Test state of expression + JP Z,REM ; False - Drop through + CALL GETCHR ; Get next character + JP C,GOTO ; Number - GOTO that line + JP IFJMP ; Otherwise do statement + +MRPRNT: DEC HL ; DEC 'cos GETCHR INCs + CALL GETCHR ; Get next character +PRINT: JP Z,PRNTCRLF ; CRLF if just PRINT +PRNTLP: RET Z ; End of list - Exit + CP ZTAB ; "TAB(" token? + JP Z,DOTAB ; Yes - Do TAB routine + CP ZSPC ; "SPC(" token? + JP Z,DOTAB ; Yes - Do SPC routine + PUSH HL ; Save code string address + CP ',' ; Comma? + JP Z,DOCOM ; Yes - Move to next zone + CP 59 ;";" ; Semi-colon? + JP Z,NEXITM ; Do semi-colon routine + POP BC ; Code string address to BC + CALL EVAL ; Evaluate expression + PUSH HL ; Save code string address + LD A,(TYPE) ; Get variable type + OR A ; Is it a string variable? + JP NZ,PRNTST ; Yes - Output string contents + CALL NUMASC ; Convert number to text + CALL CRTST ; Create temporary string + LD (HL),' ' ; Followed by a space + LD HL,(FPREG) ; Get length of output + INC (HL) ; Plus 1 for the space + LD HL,(FPREG) ; < Not needed > + LD A,(LWIDTH) ; Get width of line + LD B,A ; To B + INC B ; Width 255 (No limit)? + JP Z,PRNTNB ; Yes - Output number string + INC B ; Adjust it + LD A,(CURPOS) ; Get cursor position + ADD A,(HL) ; Add length of string + DEC A ; Adjust it + CP B ; Will output fit on this line? + CALL NC,PRNTCRLF ; No - CRLF first +PRNTNB: CALL PRS1 ; Output string at (HL) + XOR A ; Skip CALL by setting 'z' flag +PRNTST: CALL NZ,PRS1 ; Output string at (HL) + POP HL ; Restore code string address + JP MRPRNT ; See if more to PRINT + +STTLIN: LD A,(CURPOS) ; Make sure on new line + OR A ; Already at start? + RET Z ; Yes - Do nothing + JP PRNTCRLF ; Start a new line + +ENDINP: LD (HL),0 ; Mark end of buffer + LD HL,BUFFER-1 ; Point to buffer +PRNTCRLF: LD A,CR ; Load a CR + CALL OUTC ; Output character + ;LD A,LF ; Load a LF + ;CALL OUTC ; Output character +DONULL: XOR A ; Set to position 0 + LD (CURPOS),A ; Store it + LD A,(NULLS) ; Get number of nulls +NULLP: DEC A ; Count them + RET Z ; Return if done + PUSH AF ; Save count + XOR A ; Load a null + CALL OUTC ; Output it + POP AF ; Restore count + JP NULLP ; Keep counting + +DOCOM: LD A,(COMMAN) ; Get comma width + LD B,A ; Save in B + LD A,(CURPOS) ; Get current position + CP B ; Within the limit? + CALL NC,PRNTCRLF ; No - output CRLF + JP NC,NEXITM ; Get next item +ZONELP: SUB 14 ; Next zone of 14 characters + JP NC,ZONELP ; Repeat if more zones + CPL ; Number of spaces to output + JP ASPCS ; Output them + +DOTAB: PUSH AF ; Save token + CALL FNDNUM ; Evaluate expression + CALL CHKSYN ; Make sure ")" follows + DB ")" + DEC HL ; Back space on to ")" + POP AF ; Restore token + SUB ZSPC ; Was it "SPC(" ? + PUSH HL ; Save code string address + JP Z,DOSPC ; Yes - Do 'E' spaces + LD A,(CURPOS) ; Get current position +DOSPC: CPL ; Number of spaces to print to + ADD A,E ; Total number to print + JP NC,NEXITM ; TAB < Current POS(X) +ASPCS: INC A ; Output A spaces + LD B,A ; Save number to print + LD A,' ' ; Space +SPCLP: CALL OUTC ; Output character in A + DEC B ; Count them + JP NZ,SPCLP ; Repeat if more +NEXITM: POP HL ; Restore code string address + CALL GETCHR ; Get next character + JP PRNTLP ; More to print + +REDO: DB "?Redo from start",CR,LF,0 + +BADINP: LD A,(READFG) ; READ or INPUT? + OR A + JP NZ,DATSNR ; READ - ?SN Error + POP BC ; Throw away code string addr + LD HL,REDO ; "Redo from start" message + CALL PRS ; Output string + JP DOAGN ; Do last INPUT again + +INPUT: CALL IDTEST ; Test for illegal direct + LD A,(HL) ; Get character after "INPUT" + CP '"' ; Is there a prompt string? + LD A,0 ; Clear A and leave flags + LD (CTLOFG),A ; Enable output + JP NZ,NOPMPT ; No prompt - get input + CALL QTSTR ; Get string terminated by '"' + CALL CHKSYN ; Check for ';' after prompt + DB ';' + PUSH HL ; Save code string address + CALL PRS1 ; Output prompt string + DB 3EH ; Skip "PUSH HL" +NOPMPT: PUSH HL ; Save code string address + CALL PROMPT ; Get input with "? " prompt + POP BC ; Restore code string address + JP C,INPBRK ; Break pressed - Exit + INC HL ; Next byte + LD A,(HL) ; Get it + OR A ; End of line? + DEC HL ; Back again + PUSH BC ; Re-save code string address + JP Z,NXTDTA ; Yes - Find next DATA stmt + LD (HL),',' ; Store comma as separator + JP NXTITM ; Get next item + +READ: PUSH HL ; Save code string address + LD HL,(NXTDAT) ; Next DATA statement + DB 0F6H ; Flag "READ" +NXTITM: XOR A ; Flag "INPUT" + LD (READFG),A ; Save "READ"/"INPUT" flag + EX (SP),HL ; Get code str' , Save pointer + JP GTVLUS ; Get values + +NEDMOR: CALL CHKSYN ; Check for comma between items + DB ',' +GTVLUS: CALL GETVAR ; Get variable name + EX (SP),HL ; Save code str" , Get pointer + PUSH DE ; Save variable address + LD A,(HL) ; Get next "INPUT"/"DATA" byte + CP ',' ; Comma? + JP Z,ANTVLU ; Yes - Get another value + LD A,(READFG) ; Is it READ? + OR A + JP NZ,FDTLP ; Yes - Find next DATA stmt + LD A,'?' ; More INPUT needed + CALL OUTC ; Output character + CALL PROMPT ; Get INPUT with prompt + POP DE ; Variable address + POP BC ; Code string address + JP C,INPBRK ; Break pressed + INC HL ; Point to next DATA byte + LD A,(HL) ; Get byte + OR A ; Is it zero (No input) ? + DEC HL ; Back space INPUT pointer + PUSH BC ; Save code string address + JP Z,NXTDTA ; Find end of buffer + PUSH DE ; Save variable address +ANTVLU: LD A,(TYPE) ; Check data type + OR A ; Is it numeric? + JP Z,INPBIN ; Yes - Convert to binary + CALL GETCHR ; Get next character + LD D,A ; Save input character + LD B,A ; Again + CP '"' ; Start of literal sting? + JP Z,STRENT ; Yes - Create string entry + LD A,(READFG) ; "READ" or "INPUT" ? + OR A + LD D,A ; Save 00 if "INPUT" + JP Z,ITMSEP ; "INPUT" - End with 00 + LD D,':' ; "DATA" - End with 00 or ':' +ITMSEP: LD B,',' ; Item separator + DEC HL ; Back space for DTSTR +STRENT: CALL DTSTR ; Get string terminated by D + EX DE,HL ; String address to DE + LD HL,LTSTND ; Where to go after LETSTR + EX (SP),HL ; Save HL , get input pointer + PUSH DE ; Save address of string + JP LETSTR ; Assign string to variable + +INPBIN: CALL GETCHR ; Get next character + CALL ASCTFP ; Convert ASCII to FP number + EX (SP),HL ; Save input ptr, Get var addr + CALL FPTHL ; Move FPREG to variable + POP HL ; Restore input pointer +LTSTND: DEC HL ; DEC 'cos GETCHR INCs + CALL GETCHR ; Get next character + JP Z,MORDT ; End of line - More needed? + CP ',' ; Another value? + JP NZ,BADINP ; No - Bad input +MORDT: EX (SP),HL ; Get code string address + DEC HL ; DEC 'cos GETCHR INCs + CALL GETCHR ; Get next character + JP NZ,NEDMOR ; More needed - Get it + POP DE ; Restore DATA pointer + LD A,(READFG) ; "READ" or "INPUT" ? + OR A + EX DE,HL ; DATA pointer to HL + JP NZ,UPDATA ; Update DATA pointer if "READ" + PUSH DE ; Save code string address + OR (HL) ; More input given? + LD HL,EXTIG ; "?Extra ignored" message + CALL NZ,PRS ; Output string if extra given + POP HL ; Restore code string address + RET + +EXTIG: DB "?Extra ignored",CR,LF,0 + +FDTLP: CALL DATA ; Get next statement + OR A ; End of line? + JP NZ,FANDT ; No - See if DATA statement + INC HL + LD A,(HL) ; End of program? + INC HL + OR (HL) ; 00 00 Ends program + LD E,OD ; ?OD Error + JP Z,BERROR ; Yes - Out of DATA + INC HL + LD E,(HL) ; LSB of line number + INC HL + LD D,(HL) ; MSB of line number + EX DE,HL + LD (DATLIN),HL ; Set line of current DATA item + EX DE,HL +FANDT: CALL GETCHR ; Get next character + CP ZDATA ; "DATA" token + JP NZ,FDTLP ; No "DATA" - Keep looking + JP ANTVLU ; Found - Convert input + +NEXT: LD DE,0 ; In case no index given +NEXT1: CALL NZ,GETVAR ; Get index address + LD (BRKLIN),HL ; Save code string address + CALL BAKSTK ; Look for "FOR" block + JP NZ,NFERR ; No "FOR" - ?NF Error + LD SP,HL ; Clear nested loops + PUSH DE ; Save index address + LD A,(HL) ; Get sign of STEP + INC HL + PUSH AF ; Save sign of STEP + PUSH DE ; Save index address + CALL PHLTFP ; Move index value to FPREG + EX (SP),HL ; Save address of TO value + PUSH HL ; Save address of index + CALL ADDPHL ; Add STEP to index value + POP HL ; Restore address of index + CALL FPTHL ; Move value to index variable + POP HL ; Restore address of TO value + CALL LOADFP ; Move TO value to BCDE + PUSH HL ; Save address of line of FOR + CALL CMPNUM ; Compare index with TO value + POP HL ; Restore address of line num + POP BC ; Address of sign of STEP + SUB B ; Compare with expected sign + CALL LOADFP ; BC = Loop stmt,DE = Line num + JP Z,KILFOR ; Loop finished - Terminate it + EX DE,HL ; Loop statement line number + LD (LINEAT),HL ; Set loop line number + LD L,C ; Set code string to loop + LD H,B + JP PUTFID ; Put back "FOR" and continue + +KILFOR: LD SP,HL ; Remove "FOR" block + LD HL,(BRKLIN) ; Code string after "NEXT" + LD A,(HL) ; Get next byte in code string + CP ',' ; More NEXTs ? + JP NZ,RUNCNT ; No - Do next statement + CALL GETCHR ; Position to index name + CALL NEXT1 ; Re-enter NEXT routine + ; < will not RETurn to here , Exit to RUNCNT or Loop > + +GETNUM: CALL EVAL ; Get a numeric expression +TSTNUM: DB 0F6H ; Clear carry (numeric) +TSTSTR: SCF ; Set carry (string) +CHKTYP: LD A,(TYPE) ; Check types match + ADC A,A ; Expected + actual + OR A ; Clear carry , set parity + RET PE ; Even parity - Types match + JP TMERR ; Different types - Error + +OPNPAR: CALL CHKSYN ; Make sure "(" follows + DB "(" +EVAL: DEC HL ; Evaluate expression & save + LD D,0 ; Precedence value +EVAL1: PUSH DE ; Save precedence + LD C,1 + CALL CHKSTK ; Check for 1 level of stack + CALL OPRND ; Get next expression value +EVAL2: LD (NXTOPR),HL ; Save address of next operator +EVAL3: LD HL,(NXTOPR) ; Restore address of next opr + POP BC ; Precedence value and operator + LD A,B ; Get precedence value + CP 78H ; "AND" or "OR" ? + CALL NC,TSTNUM ; No - Make sure it's a number + LD A,(HL) ; Get next operator / function + LD D,0 ; Clear Last relation +RLTLP: SUB ZGTR ; ">" Token + JP C,FOPRND ; + - * / ^ AND OR - Test it + CP ZLTH+1-ZGTR ; < = > + JP NC,FOPRND ; Function - Call it + CP ZEQUAL-ZGTR ; "=" + RLA ; <- Test for legal + XOR D ; <- combinations of < = > + CP D ; <- by combining last token + LD D,A ; <- with current one + JP C,SNERR ; Error if "<<' '==" or ">>" + LD (CUROPR),HL ; Save address of current token + CALL GETCHR ; Get next character + JP RLTLP ; Treat the two as one + +FOPRND: LD A,D ; < = > found ? + OR A + JP NZ,TSTRED ; Yes - Test for reduction + LD A,(HL) ; Get operator token + LD (CUROPR),HL ; Save operator address + SUB ZPLUS ; Operator or function? + RET C ; Neither - Exit + CP ZOR+1-ZPLUS ; Is it + - * / ^ AND OR ? + RET NC ; No - Exit + LD E,A ; Coded operator + LD A,(TYPE) ; Get data type + DEC A ; FF = numeric , 00 = string + OR E ; Combine with coded operator + LD A,E ; Get coded operator + JP Z,CONCAT ; String concatenation + RLCA ; Times 2 + ADD A,E ; Times 3 + LD E,A ; To DE (D is 0) + LD HL,PRITAB ; Precedence table + ADD HL,DE ; To the operator concerned + LD A,B ; Last operator precedence + LD D,(HL) ; Get evaluation precedence + CP D ; Compare with eval precedence + RET NC ; Exit if higher precedence + INC HL ; Point to routine address + CALL TSTNUM ; Make sure it's a number + +STKTHS: PUSH BC ; Save last precedence & token + LD BC,EVAL3 ; Where to go on prec' break + PUSH BC ; Save on stack for return + LD B,E ; Save operator + LD C,D ; Save precedence + CALL STAKFP ; Move value to stack + LD E,B ; Restore operator + LD D,C ; Restore precedence + LD C,(HL) ; Get LSB of routine address + INC HL + LD B,(HL) ; Get MSB of routine address + INC HL + PUSH BC ; Save routine address + LD HL,(CUROPR) ; Address of current operator + JP EVAL1 ; Loop until prec' break + +OPRND: XOR A ; Get operand routine + LD (TYPE),A ; Set numeric expected + CALL GETCHR ; Get next character + LD E,MO ; ?MO Error + JP Z,BERROR ; No operand - Error + JP C,ASCTFP ; Number - Get value + CALL CHKLTR ; See if a letter + JP NC,CONVAR ; Letter - Find variable + CP '&' ; &H = HEX, &B = BINARY [G. Searle] + JR NZ, NOTAMP + CALL GETCHR ; Get next character + CP 'H' ; Hex number indicated? [function added] + JP Z,HEXTFP ; Convert Hex to FPREG + CP 'B' ; Binary number indicated? [function added] + JP Z,BINTFP ; Convert Bin to FPREG + LD E,SN ; If neither then a ?SN Error + JP Z,BERROR ; +NOTAMP: CP ZPLUS ; '+' Token ? + JP Z,OPRND ; Yes - Look for operand + CP '.' ; '.' ? + JP Z,ASCTFP ; Yes - Create FP number + CP ZMINUS ; '-' Token ? + JP Z,MINUS ; Yes - Do minus + CP '"' ; Literal string ? + JP Z,QTSTR ; Get string terminated by '"' + CP ZNOT ; "NOT" Token ? + JP Z,EVNOT ; Yes - Eval NOT expression + CP ZFN ; "FN" Token ? + JP Z,DOFN ; Yes - Do FN routine + SUB ZSGN ; Is it a function? + JP NC,FNOFST ; Yes - Evaluate function +EVLPAR: CALL OPNPAR ; Evaluate expression in "()" + CALL CHKSYN ; Make sure ")" follows + DB ")" + RET + +MINUS: LD D,7DH ; '-' precedence + CALL EVAL1 ; Evaluate until prec' break + LD HL,(NXTOPR) ; Get next operator address + PUSH HL ; Save next operator address + CALL INVSGN ; Negate value +RETNUM: CALL TSTNUM ; Make sure it's a number + POP HL ; Restore next operator address + RET + +CONVAR: CALL GETVAR ; Get variable address to DE +FRMEVL: PUSH HL ; Save code string address + EX DE,HL ; Variable address to HL + LD (FPREG),HL ; Save address of variable + LD A,(TYPE) ; Get type + OR A ; Numeric? + CALL Z,PHLTFP ; Yes - Move contents to FPREG + POP HL ; Restore code string address + RET + +FNOFST: LD B,0 ; Get address of function + RLCA ; Double function offset + LD C,A ; BC = Offset in function table + PUSH BC ; Save adjusted token value + CALL GETCHR ; Get next character + LD A,C ; Get adjusted token value + CP 2*(ZLEFT-ZSGN)-1 ; Adj' LEFT$,RIGHT$ or MID$ ? + JP C,FNVAL ; No - Do function + CALL OPNPAR ; Evaluate expression (X,... + CALL CHKSYN ; Make sure ',' follows + DB ',' + CALL TSTSTR ; Make sure it's a string + EX DE,HL ; Save code string address + LD HL,(FPREG) ; Get address of string + EX (SP),HL ; Save address of string + PUSH HL ; Save adjusted token value + EX DE,HL ; Restore code string address + CALL GETINT ; Get integer 0-255 + EX DE,HL ; Save code string address + EX (SP),HL ; Save integer,HL = adj' token + JP GOFUNC ; Jump to string function + +FNVAL: CALL EVLPAR ; Evaluate expression + EX (SP),HL ; HL = Adjusted token value + LD DE,RETNUM ; Return number from function + PUSH DE ; Save on stack +GOFUNC: LD BC,FNCTAB ; Function routine addresses + ADD HL,BC ; Point to right address + LD C,(HL) ; Get LSB of address + INC HL ; + LD H,(HL) ; Get MSB of address + LD L,C ; Address to HL + JP (HL) ; Jump to function + +SGNEXP: DEC D ; Dee to flag negative exponent + CP ZMINUS ; '-' token ? + RET Z ; Yes - Return + CP '-' ; '-' ASCII ? + RET Z ; Yes - Return + INC D ; Inc to flag positive exponent + CP '+' ; '+' ASCII ? + RET Z ; Yes - Return + CP ZPLUS ; '+' token ? + RET Z ; Yes - Return + DEC HL ; DEC 'cos GETCHR INCs + RET ; Return "NZ" + +POR: DB 0F6H ; Flag "OR" +PAND: XOR A ; Flag "AND" + PUSH AF ; Save "AND" / "OR" flag + CALL TSTNUM ; Make sure it's a number + CALL DEINT ; Get integer -32768 to 32767 + POP AF ; Restore "AND" / "OR" flag + EX DE,HL ; <- Get last + POP BC ; <- value + EX (SP),HL ; <- from + EX DE,HL ; <- stack + CALL FPBCDE ; Move last value to FPREG + PUSH AF ; Save "AND" / "OR" flag + CALL DEINT ; Get integer -32768 to 32767 + POP AF ; Restore "AND" / "OR" flag + POP BC ; Get value + LD A,C ; Get LSB + LD HL,ACPASS ; Address of save AC as current + JP NZ,POR1 ; Jump if OR + AND E ; "AND" LSBs + LD C,A ; Save LSB + LD A,B ; Get MBS + AND D ; "AND" MSBs + JP (HL) ; Save AC as current (ACPASS) + +POR1: OR E ; "OR" LSBs + LD C,A ; Save LSB + LD A,B ; Get MSB + OR D ; "OR" MSBs + JP (HL) ; Save AC as current (ACPASS) + +TSTRED: LD HL,CMPLOG ; Logical compare routine + LD A,(TYPE) ; Get data type + RRA ; Carry set = string + LD A,D ; Get last precedence value + RLA ; Times 2 plus carry + LD E,A ; To E + LD D,64H ; Relational precedence + LD A,B ; Get current precedence + CP D ; Compare with last + RET NC ; Eval if last was rel' or log' + JP STKTHS ; Stack this one and get next + +CMPLOG: DW CMPLG1 ; Compare two values / strings +CMPLG1: LD A,C ; Get data type + OR A + RRA + POP BC ; Get last expression to BCDE + POP DE + PUSH AF ; Save status + CALL CHKTYP ; Check that types match + LD HL,CMPRES ; Result to comparison + PUSH HL ; Save for RETurn + JP Z,CMPNUM ; Compare values if numeric + XOR A ; Compare two strings + LD (TYPE),A ; Set type to numeric + PUSH DE ; Save string name + CALL GSTRCU ; Get current string + LD A,(HL) ; Get length of string + INC HL + INC HL + LD C,(HL) ; Get LSB of address + INC HL + LD B,(HL) ; Get MSB of address + POP DE ; Restore string name + PUSH BC ; Save address of string + PUSH AF ; Save length of string + CALL GSTRDE ; Get second string + CALL LOADFP ; Get address of second string + POP AF ; Restore length of string 1 + LD D,A ; Length to D + POP HL ; Restore address of string 1 +CMPSTR: LD A,E ; Bytes of string 2 to do + OR D ; Bytes of string 1 to do + RET Z ; Exit if all bytes compared + LD A,D ; Get bytes of string 1 to do + SUB 1 + RET C ; Exit if end of string 1 + XOR A + CP E ; Bytes of string 2 to do + INC A + RET NC ; Exit if end of string 2 + DEC D ; Count bytes in string 1 + DEC E ; Count bytes in string 2 + LD A,(BC) ; Byte in string 2 + CP (HL) ; Compare to byte in string 1 + INC HL ; Move up string 1 + INC BC ; Move up string 2 + JP Z,CMPSTR ; Same - Try next bytes + CCF ; Flag difference (">" or "<") + JP FLGDIF ; "<" gives -1 , ">" gives +1 + +CMPRES: INC A ; Increment current value + ADC A,A ; Double plus carry + POP BC ; Get other value + AND B ; Combine them + ADD A,-1 ; Carry set if different + SBC A,A ; 00 - Equal , FF - Different + JP FLGREL ; Set current value & continue + +EVNOT: LD D,5AH ; Precedence value for "NOT" + CALL EVAL1 ; Eval until precedence break + CALL TSTNUM ; Make sure it's a number + CALL DEINT ; Get integer -32768 - 32767 + LD A,E ; Get LSB + CPL ; Invert LSB + LD C,A ; Save "NOT" of LSB + LD A,D ; Get MSB + CPL ; Invert MSB + CALL ACPASS ; Save AC as current + POP BC ; Clean up stack + JP EVAL3 ; Continue evaluation + +DIMRET: DEC HL ; DEC 'cos GETCHR INCs + CALL GETCHR ; Get next character + RET Z ; End of DIM statement + CALL CHKSYN ; Make sure ',' follows + DB ',' +DIM: LD BC,DIMRET ; Return to "DIMRET" + PUSH BC ; Save on stack + DB 0F6H ; Flag "Create" variable +GETVAR: XOR A ; Find variable address,to DE + LD (LCRFLG),A ; Set locate / create flag + LD B,(HL) ; Get First byte of name +GTFNAM: CALL CHKLTR ; See if a letter + JP C,SNERR ; ?SN Error if not a letter + XOR A + LD C,A ; Clear second byte of name + LD (TYPE),A ; Set type to numeric + CALL GETCHR ; Get next character + JP C,SVNAM2 ; Numeric - Save in name + CALL CHKLTR ; See if a letter + JP C,CHARTY ; Not a letter - Check type +SVNAM2: LD C,A ; Save second byte of name +ENDNAM: CALL GETCHR ; Get next character + JP C,ENDNAM ; Numeric - Get another + CALL CHKLTR ; See if a letter + JP NC,ENDNAM ; Letter - Get another +CHARTY: SUB '$' ; String variable? + JP NZ,NOTSTR ; No - Numeric variable + INC A ; A = 1 (string type) + LD (TYPE),A ; Set type to string + RRCA ; A = 80H , Flag for string + ADD A,C ; 2nd byte of name has bit 7 on + LD C,A ; Resave second byte on name + CALL GETCHR ; Get next character +NOTSTR: LD A,(FORFLG) ; Array name needed ? + DEC A + JP Z,ARLDSV ; Yes - Get array name + JP P,NSCFOR ; No array with "FOR" or "FN" + LD A,(HL) ; Get byte again + SUB '(' ; Subscripted variable? + JP Z,SBSCPT ; Yes - Sort out subscript + +NSCFOR: XOR A ; Simple variable + LD (FORFLG),A ; Clear "FOR" flag + PUSH HL ; Save code string address + LD D,B ; DE = Variable name to find + LD E,C + LD HL,(FNRGNM) ; FN argument name + CALL CPDEHL ; Is it the FN argument? + LD DE,FNARG ; Point to argument value + JP Z,POPHRT ; Yes - Return FN argument value + LD HL,(VAREND) ; End of variables + EX DE,HL ; Address of end of search + LD HL,(PROGND) ; Start of variables address +FNDVAR: CALL CPDEHL ; End of variable list table? + JP Z,CFEVAL ; Yes - Called from EVAL? + LD A,C ; Get second byte of name + SUB (HL) ; Compare with name in list + INC HL ; Move on to first byte + JP NZ,FNTHR ; Different - Find another + LD A,B ; Get first byte of name + SUB (HL) ; Compare with name in list +FNTHR: INC HL ; Move on to LSB of value + JP Z,RETADR ; Found - Return address + INC HL ; <- Skip + INC HL ; <- over + INC HL ; <- F.P. + INC HL ; <- value + JP FNDVAR ; Keep looking + +CFEVAL: POP HL ; Restore code string address + EX (SP),HL ; Get return address + PUSH DE ; Save address of variable + LD DE,FRMEVL ; Return address in EVAL + CALL CPDEHL ; Called from EVAL ? + POP DE ; Restore address of variable + JP Z,RETNUL ; Yes - Return null variable + EX (SP),HL ; Put back return + PUSH HL ; Save code string address + PUSH BC ; Save variable name + LD BC,6 ; 2 byte name plus 4 byte data + LD HL,(ARREND) ; End of arrays + PUSH HL ; Save end of arrays + ADD HL,BC ; Move up 6 bytes + POP BC ; Source address in BC + PUSH HL ; Save new end address + CALL MOVUP ; Move arrays up + POP HL ; Restore new end address + LD (ARREND),HL ; Set new end address + LD H,B ; End of variables to HL + LD L,C + LD (VAREND),HL ; Set new end address + +ZEROLP: DEC HL ; Back through to zero variable + LD (HL),0 ; Zero byte in variable + CALL CPDEHL ; Done them all? + JP NZ,ZEROLP ; No - Keep on going + POP DE ; Get variable name + LD (HL),E ; Store second character + INC HL + LD (HL),D ; Store first character + INC HL +RETADR: EX DE,HL ; Address of variable in DE + POP HL ; Restore code string address + RET + +RETNUL: LD (FPEXP),A ; Set result to zero + LD HL,ZERBYT ; Also set a null string + LD (FPREG),HL ; Save for EVAL + POP HL ; Restore code string address + RET + +SBSCPT: PUSH HL ; Save code string address + LD HL,(LCRFLG) ; Locate/Create and Type + EX (SP),HL ; Save and get code string + LD D,A ; Zero number of dimensions +SCPTLP: PUSH DE ; Save number of dimensions + PUSH BC ; Save array name + CALL FPSINT ; Get subscript (0-32767) + POP BC ; Restore array name + POP AF ; Get number of dimensions + EX DE,HL + EX (SP),HL ; Save subscript value + PUSH HL ; Save LCRFLG and TYPE + EX DE,HL + INC A ; Count dimensions + LD D,A ; Save in D + LD A,(HL) ; Get next byte in code string + CP ',' ; Comma (more to come)? + JP Z,SCPTLP ; Yes - More subscripts + CALL CHKSYN ; Make sure ")" follows + DB ")" + LD (NXTOPR),HL ; Save code string address + POP HL ; Get LCRFLG and TYPE + LD (LCRFLG),HL ; Restore Locate/create & type + LD E,0 ; Flag not CSAVE* or CLOAD* + PUSH DE ; Save number of dimensions (D) + DB 11H ; Skip "PUSH HL" and "PUSH AF' + +ARLDSV: PUSH HL ; Save code string address + PUSH AF ; A = 00 , Flags set = Z,N + LD HL,(VAREND) ; Start of arrays + DB 3EH ; Skip "ADD HL,DE" +FNDARY: ADD HL,DE ; Move to next array start + EX DE,HL + LD HL,(ARREND) ; End of arrays + EX DE,HL ; Current array pointer + CALL CPDEHL ; End of arrays found? + JP Z,CREARY ; Yes - Create array + LD A,(HL) ; Get second byte of name + CP C ; Compare with name given + INC HL ; Move on + JP NZ,NXTARY ; Different - Find next array + LD A,(HL) ; Get first byte of name + CP B ; Compare with name given +NXTARY: INC HL ; Move on + LD E,(HL) ; Get LSB of next array address + INC HL + LD D,(HL) ; Get MSB of next array address + INC HL + JP NZ,FNDARY ; Not found - Keep looking + LD A,(LCRFLG) ; Found Locate or Create it? + OR A + JP NZ,DDERR ; Create - ?DD Error + POP AF ; Locate - Get number of dim'ns + LD B,H ; BC Points to array dim'ns + LD C,L + JP Z,POPHRT ; Jump if array load/save + SUB (HL) ; Same number of dimensions? + JP Z,FINDEL ; Yes - Find element +BSERR: LD E,BS ; ?BS Error + JP BERROR ; Output error + +CREARY: LD DE,4 ; 4 Bytes per entry + POP AF ; Array to save or 0 dim'ns? + JP Z,FCERR ; Yes - ?FC Error + LD (HL),C ; Save second byte of name + INC HL + LD (HL),B ; Save first byte of name + INC HL + LD C,A ; Number of dimensions to C + CALL CHKSTK ; Check if enough memory + INC HL ; Point to number of dimensions + INC HL + LD (CUROPR),HL ; Save address of pointer + LD (HL),C ; Set number of dimensions + INC HL + LD A,(LCRFLG) ; Locate of Create? + RLA ; Carry set = Create + LD A,C ; Get number of dimensions +CRARLP: LD BC,10+1 ; Default dimension size 10 + JP NC,DEFSIZ ; Locate - Set default size + POP BC ; Get specified dimension size + INC BC ; Include zero element +DEFSIZ: LD (HL),C ; Save LSB of dimension size + INC HL + LD (HL),B ; Save MSB of dimension size + INC HL + PUSH AF ; Save num' of dim'ns an status + PUSH HL ; Save address of dim'n size + CALL MLDEBC ; Multiply DE by BC to find + EX DE,HL ; amount of mem needed (to DE) + POP HL ; Restore address of dimension + POP AF ; Restore number of dimensions + DEC A ; Count them + JP NZ,CRARLP ; Do next dimension if more + PUSH AF ; Save locate/create flag + LD B,D ; MSB of memory needed + LD C,E ; LSB of memory needed + EX DE,HL + ADD HL,DE ; Add bytes to array start + JP C,OMERR ; Too big - Error + CALL ENFMEM ; See if enough memory + LD (ARREND),HL ; Save new end of array + +ZERARY: DEC HL ; Back through array data + LD (HL),0 ; Set array element to zero + CALL CPDEHL ; All elements zeroed? + JP NZ,ZERARY ; No - Keep on going + INC BC ; Number of bytes + 1 + LD D,A ; A=0 + LD HL,(CUROPR) ; Get address of array + LD E,(HL) ; Number of dimensions + EX DE,HL ; To HL + ADD HL,HL ; Two bytes per dimension size + ADD HL,BC ; Add number of bytes + EX DE,HL ; Bytes needed to DE + DEC HL + DEC HL + LD (HL),E ; Save LSB of bytes needed + INC HL + LD (HL),D ; Save MSB of bytes needed + INC HL + POP AF ; Locate / Create? + JP C,ENDDIM ; A is 0 , End if create +FINDEL: LD B,A ; Find array element + LD C,A + LD A,(HL) ; Number of dimensions + INC HL + DB 16H ; Skip "POP HL" +FNDELP: POP HL ; Address of next dim' size + LD E,(HL) ; Get LSB of dim'n size + INC HL + LD D,(HL) ; Get MSB of dim'n size + INC HL + EX (SP),HL ; Save address - Get index + PUSH AF ; Save number of dim'ns + CALL CPDEHL ; Dimension too large? + JP NC,BSERR ; Yes - ?BS Error + PUSH HL ; Save index + CALL MLDEBC ; Multiply previous by size + POP DE ; Index supplied to DE + ADD HL,DE ; Add index to pointer + POP AF ; Number of dimensions + DEC A ; Count them + LD B,H ; MSB of pointer + LD C,L ; LSB of pointer + JP NZ,FNDELP ; More - Keep going + ADD HL,HL ; 4 Bytes per element + ADD HL,HL + POP BC ; Start of array + ADD HL,BC ; Point to element + EX DE,HL ; Address of element to DE +ENDDIM: LD HL,(NXTOPR) ; Got code string address + RET + +FRE: LD HL,(ARREND) ; Start of free memory + EX DE,HL ; To DE + LD HL,0 ; End of free memory + ADD HL,SP ; Current stack value + LD A,(TYPE) ; Dummy argument type + OR A + JP Z,FRENUM ; Numeric - Free variable space + CALL GSTRCU ; Current string to pool + CALL GARBGE ; Garbage collection + LD HL,(STRSPC) ; Bottom of string space in use + EX DE,HL ; To DE + LD HL,(STRBOT) ; Bottom of string space +FRENUM: LD A,L ; Get LSB of end + SUB E ; Subtract LSB of beginning + LD C,A ; Save difference if C + LD A,H ; Get MSB of end + SBC A,D ; Subtract MSB of beginning +ACPASS: LD B,C ; Return integer AC +ABPASS: LD D,B ; Return integer AB + LD E,0 + LD HL,TYPE ; Point to type + LD (HL),E ; Set type to numeric + LD B,80H+16 ; 16 bit integer + JP RETINT ; Return the integr + +POS: LD A,(CURPOS) ; Get cursor position +PASSA: LD B,A ; Put A into AB + XOR A ; Zero A + JP ABPASS ; Return integer AB + +DEF: CALL CHEKFN ; Get "FN" and name + CALL IDTEST ; Test for illegal direct + LD BC,DATA ; To get next statement + PUSH BC ; Save address for RETurn + PUSH DE ; Save address of function ptr + CALL CHKSYN ; Make sure "(" follows + DB "(" + CALL GETVAR ; Get argument variable name + PUSH HL ; Save code string address + EX DE,HL ; Argument address to HL + DEC HL + LD D,(HL) ; Get first byte of arg name + DEC HL + LD E,(HL) ; Get second byte of arg name + POP HL ; Restore code string address + CALL TSTNUM ; Make sure numeric argument + CALL CHKSYN ; Make sure ")" follows + DB ")" + CALL CHKSYN ; Make sure "=" follows + DB ZEQUAL ; "=" token + LD B,H ; Code string address to BC + LD C,L + EX (SP),HL ; Save code str , Get FN ptr + LD (HL),C ; Save LSB of FN code string + INC HL + LD (HL),B ; Save MSB of FN code string + JP SVSTAD ; Save address and do function + +DOFN: CALL CHEKFN ; Make sure FN follows + PUSH DE ; Save function pointer address + CALL EVLPAR ; Evaluate expression in "()" + CALL TSTNUM ; Make sure numeric result + EX (SP),HL ; Save code str , Get FN ptr + LD E,(HL) ; Get LSB of FN code string + INC HL + LD D,(HL) ; Get MSB of FN code string + INC HL + LD A,D ; And function DEFined? + OR E + JP Z,UFERR ; No - ?UF Error + LD A,(HL) ; Get LSB of argument address + INC HL + LD H,(HL) ; Get MSB of argument address + LD L,A ; HL = Arg variable address + PUSH HL ; Save it + LD HL,(FNRGNM) ; Get old argument name + EX (SP),HL ; ; Save old , Get new + LD (FNRGNM),HL ; Set new argument name + LD HL,(FNARG+2) ; Get LSB,NLSB of old arg value + PUSH HL ; Save it + LD HL,(FNARG) ; Get MSB,EXP of old arg value + PUSH HL ; Save it + LD HL,FNARG ; HL = Value of argument + PUSH DE ; Save FN code string address + CALL FPTHL ; Move FPREG to argument + POP HL ; Get FN code string address + CALL GETNUM ; Get value from function + DEC HL ; DEC 'cos GETCHR INCs + CALL GETCHR ; Get next character + JP NZ,SNERR ; Bad character in FN - Error + POP HL ; Get MSB,EXP of old arg + LD (FNARG),HL ; Restore it + POP HL ; Get LSB,NLSB of old arg + LD (FNARG+2),HL ; Restore it + POP HL ; Get name of old arg + LD (FNRGNM),HL ; Restore it + POP HL ; Restore code string address + RET + +IDTEST: PUSH HL ; Save code string address + LD HL,(LINEAT) ; Get current line number + INC HL ; -1 means direct statement + LD A,H + OR L + POP HL ; Restore code string address + RET NZ ; Return if in program + LD E,ID ; ?ID Error + JP BERROR + +CHEKFN: CALL CHKSYN ; Make sure FN follows + DB ZFN ; "FN" token + LD A,80H + LD (FORFLG),A ; Flag FN name to find + OR (HL) ; FN name has bit 7 set + LD B,A ; in first byte of name + CALL GTFNAM ; Get FN name + JP TSTNUM ; Make sure numeric function + +STR: CALL TSTNUM ; Make sure it's a number + CALL NUMASC ; Turn number into text +STR1: CALL CRTST ; Create string entry for it + CALL GSTRCU ; Current string to pool + LD BC,TOPOOL ; Save in string pool + PUSH BC ; Save address on stack + +SAVSTR: LD A,(HL) ; Get string length + INC HL + INC HL + PUSH HL ; Save pointer to string + CALL TESTR ; See if enough string space + POP HL ; Restore pointer to string + LD C,(HL) ; Get LSB of address + INC HL + LD B,(HL) ; Get MSB of address + CALL CRTMST ; Create string entry + PUSH HL ; Save pointer to MSB of addr + LD L,A ; Length of string + CALL TOSTRA ; Move to string area + POP DE ; Restore pointer to MSB + RET + +MKTMST: CALL TESTR ; See if enough string space +CRTMST: LD HL,TMPSTR ; Temporary string + PUSH HL ; Save it + LD (HL),A ; Save length of string + INC HL +SVSTAD: INC HL + LD (HL),E ; Save LSB of address + INC HL + LD (HL),D ; Save MSB of address + POP HL ; Restore pointer + RET + +CRTST: DEC HL ; DEC - INCed after +QTSTR: LD B,'"' ; Terminating quote + LD D,B ; Quote to D +DTSTR: PUSH HL ; Save start + LD C,-1 ; Set counter to -1 +QTSTLP: INC HL ; Move on + LD A,(HL) ; Get byte + INC C ; Count bytes + OR A ; End of line? + JP Z,CRTSTE ; Yes - Create string entry + CP D ; Terminator D found? + JP Z,CRTSTE ; Yes - Create string entry + CP B ; Terminator B found? + JP NZ,QTSTLP ; No - Keep looking +CRTSTE: CP '"' ; End with '"'? + CALL Z,GETCHR ; Yes - Get next character + EX (SP),HL ; Starting quote + INC HL ; First byte of string + EX DE,HL ; To DE + LD A,C ; Get length + CALL CRTMST ; Create string entry +TSTOPL: LD DE,TMPSTR ; Temporary string + LD HL,(TMSTPT) ; Temporary string pool pointer + LD (FPREG),HL ; Save address of string ptr + LD A,1 + LD (TYPE),A ; Set type to string + CALL DETHL4 ; Move string to pool + CALL CPDEHL ; Out of string pool? + LD (TMSTPT),HL ; Save new pointer + POP HL ; Restore code string address + LD A,(HL) ; Get next code byte + RET NZ ; Return if pool OK + LD E,ST ; ?ST Error + JP BERROR ; String pool overflow + +PRNUMS: INC HL ; Skip leading space +PRS: CALL CRTST ; Create string entry for it +PRS1: CALL GSTRCU ; Current string to pool + CALL LOADFP ; Move string block to BCDE + INC E ; Length + 1 +PRSLP: DEC E ; Count characters + RET Z ; End of string + LD A,(BC) ; Get byte to output + CALL OUTC ; Output character in A + CP CR ; Return? + CALL Z,DONULL ; Yes - Do nulls + INC BC ; Next byte in string + JP PRSLP ; More characters to output + +TESTR: OR A ; Test if enough room + DB 0EH ; No garbage collection done +GRBDON: POP AF ; Garbage collection done + PUSH AF ; Save status + LD HL,(STRSPC) ; Bottom of string space in use + EX DE,HL ; To DE + LD HL,(STRBOT) ; Bottom of string area + CPL ; Negate length (Top down) + LD C,A ; -Length to BC + LD B,-1 ; BC = -ve length of string + ADD HL,BC ; Add to bottom of space in use + INC HL ; Plus one for 2's complement + CALL CPDEHL ; Below string RAM area? + JP C,TESTOS ; Tidy up if not done else err + LD (STRBOT),HL ; Save new bottom of area + INC HL ; Point to first byte of string + EX DE,HL ; Address to DE +POPAF: POP AF ; Throw away status push + RET + +TESTOS: POP AF ; Garbage collect been done? + LD E,OS ; ?OS Error + JP Z,BERROR ; Yes - Not enough string apace + CP A ; Flag garbage collect done + PUSH AF ; Save status + LD BC,GRBDON ; Garbage collection done + PUSH BC ; Save for RETurn +GARBGE: LD HL,(LSTRAM) ; Get end of RAM pointer +GARBLP: LD (STRBOT),HL ; Reset string pointer + LD HL,0 + PUSH HL ; Flag no string found + LD HL,(STRSPC) ; Get bottom of string space + PUSH HL ; Save bottom of string space + LD HL,TMSTPL ; Temporary string pool +GRBLP: EX DE,HL + LD HL,(TMSTPT) ; Temporary string pool pointer + EX DE,HL + CALL CPDEHL ; Temporary string pool done? + LD BC,GRBLP ; Loop until string pool done + JP NZ,STPOOL ; No - See if in string area + LD HL,(PROGND) ; Start of simple variables +SMPVAR: EX DE,HL + LD HL,(VAREND) ; End of simple variables + EX DE,HL + CALL CPDEHL ; All simple strings done? + JP Z,ARRLP ; Yes - Do string arrays + LD A,(HL) ; Get type of variable + INC HL + INC HL + OR A ; "S" flag set if string + CALL STRADD ; See if string in string area + JP SMPVAR ; Loop until simple ones done + +GNXARY: POP BC ; Scrap address of this array +ARRLP: EX DE,HL + LD HL,(ARREND) ; End of string arrays + EX DE,HL + CALL CPDEHL ; All string arrays done? + JP Z,SCNEND ; Yes - Move string if found + CALL LOADFP ; Get array name to BCDE + LD A,E ; Get type of array + PUSH HL ; Save address of num of dim'ns + ADD HL,BC ; Start of next array + OR A ; Test type of array + JP P,GNXARY ; Numeric array - Ignore it + LD (CUROPR),HL ; Save address of next array + POP HL ; Get address of num of dim'ns + LD C,(HL) ; BC = Number of dimensions + LD B,0 + ADD HL,BC ; Two bytes per dimension size + ADD HL,BC + INC HL ; Plus one for number of dim'ns +GRBARY: EX DE,HL + LD HL,(CUROPR) ; Get address of next array + EX DE,HL + CALL CPDEHL ; Is this array finished? + JP Z,ARRLP ; Yes - Get next one + LD BC,GRBARY ; Loop until array all done +STPOOL: PUSH BC ; Save return address + OR 80H ; Flag string type +STRADD: LD A,(HL) ; Get string length + INC HL + INC HL + LD E,(HL) ; Get LSB of string address + INC HL + LD D,(HL) ; Get MSB of string address + INC HL + RET P ; Not a string - Return + OR A ; Set flags on string length + RET Z ; Null string - Return + LD B,H ; Save variable pointer + LD C,L + LD HL,(STRBOT) ; Bottom of new area + CALL CPDEHL ; String been done? + LD H,B ; Restore variable pointer + LD L,C + RET C ; String done - Ignore + POP HL ; Return address + EX (SP),HL ; Lowest available string area + CALL CPDEHL ; String within string area? + EX (SP),HL ; Lowest available string area + PUSH HL ; Re-save return address + LD H,B ; Restore variable pointer + LD L,C + RET NC ; Outside string area - Ignore + POP BC ; Get return , Throw 2 away + POP AF ; + POP AF ; + PUSH HL ; Save variable pointer + PUSH DE ; Save address of current + PUSH BC ; Put back return address + RET ; Go to it + +SCNEND: POP DE ; Addresses of strings + POP HL ; + LD A,L ; HL = 0 if no more to do + OR H + RET Z ; No more to do - Return + DEC HL + LD B,(HL) ; MSB of address of string + DEC HL + LD C,(HL) ; LSB of address of string + PUSH HL ; Save variable address + DEC HL + DEC HL + LD L,(HL) ; HL = Length of string + LD H,0 + ADD HL,BC ; Address of end of string+1 + LD D,B ; String address to DE + LD E,C + DEC HL ; Last byte in string + LD B,H ; Address to BC + LD C,L + LD HL,(STRBOT) ; Current bottom of string area + CALL MOVSTR ; Move string to new address + POP HL ; Restore variable address + LD (HL),C ; Save new LSB of address + INC HL + LD (HL),B ; Save new MSB of address + LD L,C ; Next string area+1 to HL + LD H,B + DEC HL ; Next string area address + JP GARBLP ; Look for more strings + +CONCAT: PUSH BC ; Save prec' opr & code string + PUSH HL ; + LD HL,(FPREG) ; Get first string + EX (SP),HL ; Save first string + CALL OPRND ; Get second string + EX (SP),HL ; Restore first string + CALL TSTSTR ; Make sure it's a string + LD A,(HL) ; Get length of second string + PUSH HL ; Save first string + LD HL,(FPREG) ; Get second string + PUSH HL ; Save second string + ADD A,(HL) ; Add length of second string + LD E,LS ; ?LS Error + JP C,BERROR ; String too long - Error + CALL MKTMST ; Make temporary string + POP DE ; Get second string to DE + CALL GSTRDE ; Move to string pool if needed + EX (SP),HL ; Get first string + CALL GSTRHL ; Move to string pool if needed + PUSH HL ; Save first string + LD HL,(TMPSTR+2) ; Temporary string address + EX DE,HL ; To DE + CALL SSTSA ; First string to string area + CALL SSTSA ; Second string to string area + LD HL,EVAL2 ; Return to evaluation loop + EX (SP),HL ; Save return,get code string + PUSH HL ; Save code string address + JP TSTOPL ; To temporary string to pool + +SSTSA: POP HL ; Return address + EX (SP),HL ; Get string block,save return + LD A,(HL) ; Get length of string + INC HL + INC HL + LD C,(HL) ; Get LSB of string address + INC HL + LD B,(HL) ; Get MSB of string address + LD L,A ; Length to L +TOSTRA: INC L ; INC - DECed after +TSALP: DEC L ; Count bytes moved + RET Z ; End of string - Return + LD A,(BC) ; Get source + LD (DE),A ; Save destination + INC BC ; Next source + INC DE ; Next destination + JP TSALP ; Loop until string moved + +GETSTR: CALL TSTSTR ; Make sure it's a string +GSTRCU: LD HL,(FPREG) ; Get current string +GSTRHL: EX DE,HL ; Save DE +GSTRDE: CALL BAKTMP ; Was it last tmp-str? + EX DE,HL ; Restore DE + RET NZ ; No - Return + PUSH DE ; Save string + LD D,B ; String block address to DE + LD E,C + DEC DE ; Point to length + LD C,(HL) ; Get string length + LD HL,(STRBOT) ; Current bottom of string area + CALL CPDEHL ; Last one in string area? + JP NZ,POPHL ; No - Return + LD B,A ; Clear B (A=0) + ADD HL,BC ; Remove string from str' area + LD (STRBOT),HL ; Save new bottom of str' area +POPHL: POP HL ; Restore string + RET + +BAKTMP: LD HL,(TMSTPT) ; Get temporary string pool top + DEC HL ; Back + LD B,(HL) ; Get MSB of address + DEC HL ; Back + LD C,(HL) ; Get LSB of address + DEC HL ; Back + DEC HL ; Back + CALL CPDEHL ; String last in string pool? + RET NZ ; Yes - Leave it + LD (TMSTPT),HL ; Save new string pool top + RET + +LEN: LD BC,PASSA ; To return integer A + PUSH BC ; Save address +GETLEN: CALL GETSTR ; Get string and its length + XOR A + LD D,A ; Clear D + LD (TYPE),A ; Set type to numeric + LD A,(HL) ; Get length of string + OR A ; Set status flags + RET + +ASC: LD BC,PASSA ; To return integer A + PUSH BC ; Save address +GTFLNM: CALL GETLEN ; Get length of string + JP Z,FCERR ; Null string - Error + INC HL + INC HL + LD E,(HL) ; Get LSB of address + INC HL + LD D,(HL) ; Get MSB of address + LD A,(DE) ; Get first byte of string + RET + +CHR: LD A,1 ; One character string + CALL MKTMST ; Make a temporary string + CALL MAKINT ; Make it integer A + LD HL,(TMPSTR+2) ; Get address of string + LD (HL),E ; Save character +TOPOOL: POP BC ; Clean up stack + JP TSTOPL ; Temporary string to pool + +LEFT: CALL LFRGNM ; Get number and ending ")" + XOR A ; Start at first byte in string +RIGHT1: EX (SP),HL ; Save code string,Get string + LD C,A ; Starting position in string +MID1: PUSH HL ; Save string block address + LD A,(HL) ; Get length of string + CP B ; Compare with number given + JP C,ALLFOL ; All following bytes required + LD A,B ; Get new length + DB 11H ; Skip "LD C,0" +ALLFOL: LD C,0 ; First byte of string + PUSH BC ; Save position in string + CALL TESTR ; See if enough string space + POP BC ; Get position in string + POP HL ; Restore string block address + PUSH HL ; And re-save it + INC HL + INC HL + LD B,(HL) ; Get LSB of address + INC HL + LD H,(HL) ; Get MSB of address + LD L,B ; HL = address of string + LD B,0 ; BC = starting address + ADD HL,BC ; Point to that byte + LD B,H ; BC = source string + LD C,L + CALL CRTMST ; Create a string entry + LD L,A ; Length of new string + CALL TOSTRA ; Move string to string area + POP DE ; Clear stack + CALL GSTRDE ; Move to string pool if needed + JP TSTOPL ; Temporary string to pool + +RIGHT: CALL LFRGNM ; Get number and ending ")" + POP DE ; Get string length + PUSH DE ; And re-save + LD A,(DE) ; Get length + SUB B ; Move back N bytes + JP RIGHT1 ; Go and get sub-string + +MID: EX DE,HL ; Get code string address + LD A,(HL) ; Get next byte ',' or ")" + CALL MIDNUM ; Get number supplied + INC B ; Is it character zero? + DEC B + JP Z,FCERR ; Yes - Error + PUSH BC ; Save starting position + LD E,255 ; All of string + CP ')' ; Any length given? + JP Z,RSTSTR ; No - Rest of string + CALL CHKSYN ; Make sure ',' follows + DB ',' + CALL GETINT ; Get integer 0-255 +RSTSTR: CALL CHKSYN ; Make sure ")" follows + DB ")" + POP AF ; Restore starting position + EX (SP),HL ; Get string,8ave code string + LD BC,MID1 ; Continuation of MID$ routine + PUSH BC ; Save for return + DEC A ; Starting position-1 + CP (HL) ; Compare with length + LD B,0 ; Zero bytes length + RET NC ; Null string if start past end + LD C,A ; Save starting position-1 + LD A,(HL) ; Get length of string + SUB C ; Subtract start + CP E ; Enough string for it? + LD B,A ; Save maximum length available + RET C ; Truncate string if needed + LD B,E ; Set specified length + RET ; Go and create string + +VAL: CALL GETLEN ; Get length of string + JP Z,RESZER ; Result zero + LD E,A ; Save length + INC HL + INC HL + LD A,(HL) ; Get LSB of address + INC HL + LD H,(HL) ; Get MSB of address + LD L,A ; HL = String address + PUSH HL ; Save string address + ADD HL,DE + LD B,(HL) ; Get end of string+1 byte + LD (HL),D ; Zero it to terminate + EX (SP),HL ; Save string end,get start + PUSH BC ; Save end+1 byte + LD A,(HL) ; Get starting byte + CP '$' ; Hex number indicated? [function added G. Searle] + JP NZ,VAL1 + CALL HEXTFP ; Convert Hex to FPREG + JR VAL3 +VAL1: CP '%' ; Binary number indicated? [function added] + JP NZ,VAL2 + CALL BINTFP ; Convert Bin to FPREG + JR VAL3 +VAL2: CALL ASCTFP ; Convert ASCII string to FP +VAL3: POP BC ; Restore end+1 byte + POP HL ; Restore end+1 address + LD (HL),B ; Put back original byte + RET + +LFRGNM: EX DE,HL ; Code string address to HL + CALL CHKSYN ; Make sure ")" follows + DB ")" +MIDNUM: POP BC ; Get return address + POP DE ; Get number supplied + PUSH BC ; Re-save return address + LD B,E ; Number to B + RET + +INP: CALL MAKINT ; Make it integer A + LD (INPORT),A ; Set input port + CALL INPSUB ; Get input from port + JP PASSA ; Return integer A + +POUT: CALL SETIO ; Set up port number + JP OUTSUB ; Output data and return + +WAIT: CALL SETIO ; Set up port number + PUSH AF ; Save AND mask + LD E,0 ; Assume zero if none given + DEC HL ; DEC 'cos GETCHR INCs + CALL GETCHR ; Get next character + JP Z,NOXOR ; No XOR byte given + CALL CHKSYN ; Make sure ',' follows + DB ',' + CALL GETINT ; Get integer 0-255 to XOR with +NOXOR: POP BC ; Restore AND mask +WAITLP: CALL INPSUB ; Get input + XOR E ; Flip selected bits + AND B ; Result non-zero? + JP Z,WAITLP ; No = keep waiting + RET + +SETIO: CALL GETINT ; Get integer 0-255 + LD (INPORT),A ; Set input port + LD (OTPORT),A ; Set output port + CALL CHKSYN ; Make sure ',' follows + DB ',' + JP GETINT ; Get integer 0-255 and return + +FNDNUM: CALL GETCHR ; Get next character +GETINT: CALL GETNUM ; Get a number from 0 to 255 +MAKINT: CALL DEPINT ; Make sure value 0 - 255 + LD A,D ; Get MSB of number + OR A ; Zero? + JP NZ,FCERR ; No - Error + DEC HL ; DEC 'cos GETCHR INCs + CALL GETCHR ; Get next character + LD A,E ; Get number to A + RET + +PEEK: CALL DEINT ; Get memory address + LD A,(DE) ; Get byte in memory + JP PASSA ; Return integer A + +POKE: CALL GETNUM ; Get memory address + CALL DEINT ; Get integer -32768 to 3276 + PUSH DE ; Save memory address + CALL CHKSYN ; Make sure ',' follows + DB ',' + CALL GETINT ; Get integer 0-255 + POP DE ; Restore memory address + LD (DE),A ; Load it into memory + RET + +ROUND: LD HL,HALF ; Add 0.5 to FPREG +ADDPHL: CALL LOADFP ; Load FP at (HL) to BCDE + JP FPADD ; Add BCDE to FPREG + +SUBPHL: CALL LOADFP ; FPREG = -FPREG + number at HL + DB 21H ; Skip "POP BC" and "POP DE" +PSUB: POP BC ; Get FP number from stack + POP DE +SUBCDE: CALL INVSGN ; Negate FPREG +FPADD: LD A,B ; Get FP exponent + OR A ; Is number zero? + RET Z ; Yes - Nothing to add + LD A,(FPEXP) ; Get FPREG exponent + OR A ; Is this number zero? + JP Z,FPBCDE ; Yes - Move BCDE to FPREG + SUB B ; BCDE number larger? + JP NC,NOSWAP ; No - Don't swap them + CPL ; Two's complement + INC A ; FP exponent + EX DE,HL + CALL STAKFP ; Put FPREG on stack + EX DE,HL + CALL FPBCDE ; Move BCDE to FPREG + POP BC ; Restore number from stack + POP DE +NOSWAP: CP 24+1 ; Second number insignificant? + RET NC ; Yes - First number is result + PUSH AF ; Save number of bits to scale + CALL SIGNS ; Set MSBs & sign of result + LD H,A ; Save sign of result + POP AF ; Restore scaling factor + CALL SCALE ; Scale BCDE to same exponent + OR H ; Result to be positive? + LD HL,FPREG ; Point to FPREG + JP P,MINCDE ; No - Subtract FPREG from CDE + CALL PLUCDE ; Add FPREG to CDE + JP NC,RONDUP ; No overflow - Round it up + INC HL ; Point to exponent + INC (HL) ; Increment it + JP Z,OVERR ; Number overflowed - Error + LD L,1 ; 1 bit to shift right + CALL SHRT1 ; Shift result right + JP RONDUP ; Round it up + +MINCDE: XOR A ; Clear A and carry + SUB B ; Negate exponent + LD B,A ; Re-save exponent + LD A,(HL) ; Get LSB of FPREG + SBC A, E ; Subtract LSB of BCDE + LD E,A ; Save LSB of BCDE + INC HL + LD A,(HL) ; Get NMSB of FPREG + SBC A,D ; Subtract NMSB of BCDE + LD D,A ; Save NMSB of BCDE + INC HL + LD A,(HL) ; Get MSB of FPREG + SBC A,C ; Subtract MSB of BCDE + LD C,A ; Save MSB of BCDE +CONPOS: CALL C,COMPL ; Overflow - Make it positive + +BNORM: LD L,B ; L = Exponent + LD H,E ; H = LSB + XOR A +BNRMLP: LD B,A ; Save bit count + LD A,C ; Get MSB + OR A ; Is it zero? + JP NZ,PNORM ; No - Do it bit at a time + LD C,D ; MSB = NMSB + LD D,H ; NMSB= LSB + LD H,L ; LSB = VLSB + LD L,A ; VLSB= 0 + LD A,B ; Get exponent + SUB 8 ; Count 8 bits + CP -24-8 ; Was number zero? + JP NZ,BNRMLP ; No - Keep normalising +RESZER: XOR A ; Result is zero +SAVEXP: LD (FPEXP),A ; Save result as zero + RET + +NORMAL: DEC B ; Count bits + ADD HL,HL ; Shift HL left + LD A,D ; Get NMSB + RLA ; Shift left with last bit + LD D,A ; Save NMSB + LD A,C ; Get MSB + ADC A,A ; Shift left with last bit + LD C,A ; Save MSB +PNORM: JP P,NORMAL ; Not done - Keep going + LD A,B ; Number of bits shifted + LD E,H ; Save HL in EB + LD B,L + OR A ; Any shifting done? + JP Z,RONDUP ; No - Round it up + LD HL,FPEXP ; Point to exponent + ADD A,(HL) ; Add shifted bits + LD (HL),A ; Re-save exponent + JP NC,RESZER ; Underflow - Result is zero + RET Z ; Result is zero +RONDUP: LD A,B ; Get VLSB of number +RONDB: LD HL,FPEXP ; Point to exponent + OR A ; Any rounding? + CALL M,FPROND ; Yes - Round number up + LD B,(HL) ; B = Exponent + INC HL + LD A,(HL) ; Get sign of result + AND 10000000B ; Only bit 7 needed + XOR C ; Set correct sign + LD C,A ; Save correct sign in number + JP FPBCDE ; Move BCDE to FPREG + +FPROND: INC E ; Round LSB + RET NZ ; Return if ok + INC D ; Round NMSB + RET NZ ; Return if ok + INC C ; Round MSB + RET NZ ; Return if ok + LD C,80H ; Set normal value + INC (HL) ; Increment exponent + RET NZ ; Return if ok + JP OVERR ; Overflow error + +PLUCDE: LD A,(HL) ; Get LSB of FPREG + ADD A,E ; Add LSB of BCDE + LD E,A ; Save LSB of BCDE + INC HL + LD A,(HL) ; Get NMSB of FPREG + ADC A,D ; Add NMSB of BCDE + LD D,A ; Save NMSB of BCDE + INC HL + LD A,(HL) ; Get MSB of FPREG + ADC A,C ; Add MSB of BCDE + LD C,A ; Save MSB of BCDE + RET + +COMPL: LD HL,SGNRES ; Sign of result + LD A,(HL) ; Get sign of result + CPL ; Negate it + LD (HL),A ; Put it back + XOR A + LD L,A ; Set L to zero + SUB B ; Negate exponent,set carry + LD B,A ; Re-save exponent + LD A,L ; Load zero + SBC A,E ; Negate LSB + LD E,A ; Re-save LSB + LD A,L ; Load zero + SBC A,D ; Negate NMSB + LD D,A ; Re-save NMSB + LD A,L ; Load zero + SBC A,C ; Negate MSB + LD C,A ; Re-save MSB + RET + +SCALE: LD B,0 ; Clear underflow +SCALLP: SUB 8 ; 8 bits (a whole byte)? + JP C,SHRITE ; No - Shift right A bits + LD B,E ; <- Shift + LD E,D ; <- right + LD D,C ; <- eight + LD C,0 ; <- bits + JP SCALLP ; More bits to shift + +SHRITE: ADD A,8+1 ; Adjust count + LD L,A ; Save bits to shift +SHRLP: XOR A ; Flag for all done + DEC L ; All shifting done? + RET Z ; Yes - Return + LD A,C ; Get MSB +SHRT1: RRA ; Shift it right + LD C,A ; Re-save + LD A,D ; Get NMSB + RRA ; Shift right with last bit + LD D,A ; Re-save it + LD A,E ; Get LSB + RRA ; Shift right with last bit + LD E,A ; Re-save it + LD A,B ; Get underflow + RRA ; Shift right with last bit + LD B,A ; Re-save underflow + JP SHRLP ; More bits to do + +UNITY: DB 000H,000H,000H,081H ; 1.00000 + +LOGTAB: DB 3 ; Table used by LOG + DB 0AAH,056H,019H,080H ; 0.59898 + DB 0F1H,022H,076H,080H ; 0.96147 + DB 045H,0AAH,038H,082H ; 2.88539 + +LOG: CALL TSTSGN ; Test sign of value + OR A + JP PE,FCERR ; ?FC Error if <= zero + LD HL,FPEXP ; Point to exponent + LD A,(HL) ; Get exponent + LD BC,8035H ; BCDE = SQR(1/2) + LD DE,04F3H + SUB B ; Scale value to be < 1 + PUSH AF ; Save scale factor + LD (HL),B ; Save new exponent + PUSH DE ; Save SQR(1/2) + PUSH BC + CALL FPADD ; Add SQR(1/2) to value + POP BC ; Restore SQR(1/2) + POP DE + INC B ; Make it SQR(2) + CALL DVBCDE ; Divide by SQR(2) + LD HL,UNITY ; Point to 1. + CALL SUBPHL ; Subtract FPREG from 1 + LD HL,LOGTAB ; Coefficient table + CALL SUMSER ; Evaluate sum of series + LD BC,8080H ; BCDE = -0.5 + LD DE,0000H + CALL FPADD ; Subtract 0.5 from FPREG + POP AF ; Restore scale factor + CALL RSCALE ; Re-scale number +MULLN2: LD BC,8031H ; BCDE = Ln(2) + LD DE,7218H + DB 21H ; Skip "POP BC" and "POP DE" + +MULT: POP BC ; Get number from stack + POP DE +FPMULT: CALL TSTSGN ; Test sign of FPREG + RET Z ; Return zero if zero + LD L,0 ; Flag add exponents + CALL ADDEXP ; Add exponents + LD A,C ; Get MSB of multiplier + LD (MULVAL),A ; Save MSB of multiplier + EX DE,HL + LD (MULVAL+1),HL ; Save rest of multiplier + LD BC,0 ; Partial product (BCDE) = zero + LD D,B + LD E,B + LD HL,BNORM ; Address of normalise + PUSH HL ; Save for return + LD HL,MULT8 ; Address of 8 bit multiply + PUSH HL ; Save for NMSB,MSB + PUSH HL ; + LD HL,FPREG ; Point to number +MULT8: LD A,(HL) ; Get LSB of number + INC HL ; Point to NMSB + OR A ; Test LSB + JP Z,BYTSFT ; Zero - shift to next byte + PUSH HL ; Save address of number + LD L,8 ; 8 bits to multiply by +MUL8LP: RRA ; Shift LSB right + LD H,A ; Save LSB + LD A,C ; Get MSB + JP NC,NOMADD ; Bit was zero - Don't add + PUSH HL ; Save LSB and count + LD HL,(MULVAL+1) ; Get LSB and NMSB + ADD HL,DE ; Add NMSB and LSB + EX DE,HL ; Leave sum in DE + POP HL ; Restore MSB and count + LD A,(MULVAL) ; Get MSB of multiplier + ADC A,C ; Add MSB +NOMADD: RRA ; Shift MSB right + LD C,A ; Re-save MSB + LD A,D ; Get NMSB + RRA ; Shift NMSB right + LD D,A ; Re-save NMSB + LD A,E ; Get LSB + RRA ; Shift LSB right + LD E,A ; Re-save LSB + LD A,B ; Get VLSB + RRA ; Shift VLSB right + LD B,A ; Re-save VLSB + DEC L ; Count bits multiplied + LD A,H ; Get LSB of multiplier + JP NZ,MUL8LP ; More - Do it +POPHRT: POP HL ; Restore address of number + RET + +BYTSFT: LD B,E ; Shift partial product left + LD E,D + LD D,C + LD C,A + RET + +DIV10: CALL STAKFP ; Save FPREG on stack + LD BC,8420H ; BCDE = 10. + LD DE,0000H + CALL FPBCDE ; Move 10 to FPREG + +DIV: POP BC ; Get number from stack + POP DE +DVBCDE: CALL TSTSGN ; Test sign of FPREG + JP Z,DZERR ; Error if division by zero + LD L,-1 ; Flag subtract exponents + CALL ADDEXP ; Subtract exponents + INC (HL) ; Add 2 to exponent to adjust + INC (HL) + DEC HL ; Point to MSB + LD A,(HL) ; Get MSB of dividend + LD (DIV3),A ; Save for subtraction + DEC HL + LD A,(HL) ; Get NMSB of dividend + LD (DIV2),A ; Save for subtraction + DEC HL + LD A,(HL) ; Get MSB of dividend + LD (DIV1),A ; Save for subtraction + LD B,C ; Get MSB + EX DE,HL ; NMSB,LSB to HL + XOR A + LD C,A ; Clear MSB of quotient + LD D,A ; Clear NMSB of quotient + LD E,A ; Clear LSB of quotient + LD (DIV4),A ; Clear overflow count +DIVLP: PUSH HL ; Save divisor + PUSH BC + LD A,L ; Get LSB of number + CALL DIVSUP ; Subt' divisor from dividend + SBC A,0 ; Count for overflows + CCF + JP NC,RESDIV ; Restore divisor if borrow + LD (DIV4),A ; Re-save overflow count + POP AF ; Scrap divisor + POP AF + SCF ; Set carry to + DB 0D2H ; Skip "POP BC" and "POP HL" + +RESDIV: POP BC ; Restore divisor + POP HL + LD A,C ; Get MSB of quotient + INC A + DEC A + RRA ; Bit 0 to bit 7 + JP M,RONDB ; Done - Normalise result + RLA ; Restore carry + LD A,E ; Get LSB of quotient + RLA ; Double it + LD E,A ; Put it back + LD A,D ; Get NMSB of quotient + RLA ; Double it + LD D,A ; Put it back + LD A,C ; Get MSB of quotient + RLA ; Double it + LD C,A ; Put it back + ADD HL,HL ; Double NMSB,LSB of divisor + LD A,B ; Get MSB of divisor + RLA ; Double it + LD B,A ; Put it back + LD A,(DIV4) ; Get VLSB of quotient + RLA ; Double it + LD (DIV4),A ; Put it back + LD A,C ; Get MSB of quotient + OR D ; Merge NMSB + OR E ; Merge LSB + JP NZ,DIVLP ; Not done - Keep dividing + PUSH HL ; Save divisor + LD HL,FPEXP ; Point to exponent + DEC (HL) ; Divide by 2 + POP HL ; Restore divisor + JP NZ,DIVLP ; Ok - Keep going + JP OVERR ; Overflow error + +ADDEXP: LD A,B ; Get exponent of dividend + OR A ; Test it + JP Z,OVTST3 ; Zero - Result zero + LD A,L ; Get add/subtract flag + LD HL,FPEXP ; Point to exponent + XOR (HL) ; Add or subtract it + ADD A,B ; Add the other exponent + LD B,A ; Save new exponent + RRA ; Test exponent for overflow + XOR B + LD A,B ; Get exponent + JP P,OVTST2 ; Positive - Test for overflow + ADD A,80H ; Add excess 128 + LD (HL),A ; Save new exponent + JP Z,POPHRT ; Zero - Result zero + CALL SIGNS ; Set MSBs and sign of result + LD (HL),A ; Save new exponent + DEC HL ; Point to MSB + RET + +OVTST1: CALL TSTSGN ; Test sign of FPREG + CPL ; Invert sign + POP HL ; Clean up stack +OVTST2: OR A ; Test if new exponent zero +OVTST3: POP HL ; Clear off return address + JP P,RESZER ; Result zero + JP OVERR ; Overflow error + +MLSP10: CALL BCDEFP ; Move FPREG to BCDE + LD A,B ; Get exponent + OR A ; Is it zero? + RET Z ; Yes - Result is zero + ADD A,2 ; Multiply by 4 + JP C,OVERR ; Overflow - ?OV Error + LD B,A ; Re-save exponent + CALL FPADD ; Add BCDE to FPREG (Times 5) + LD HL,FPEXP ; Point to exponent + INC (HL) ; Double number (Times 10) + RET NZ ; Ok - Return + JP OVERR ; Overflow error + +TSTSGN: LD A,(FPEXP) ; Get sign of FPREG + OR A + RET Z ; RETurn if number is zero + LD A,(FPREG+2) ; Get MSB of FPREG + DB 0FEH ; Test sign +RETREL: CPL ; Invert sign + RLA ; Sign bit to carry +FLGDIF: SBC A,A ; Carry to all bits of A + RET NZ ; Return -1 if negative + INC A ; Bump to +1 + RET ; Positive - Return +1 + +SGN: CALL TSTSGN ; Test sign of FPREG +FLGREL: LD B,80H+8 ; 8 bit integer in exponent + LD DE,0 ; Zero NMSB and LSB +RETINT: LD HL,FPEXP ; Point to exponent + LD C,A ; CDE = MSB,NMSB and LSB + LD (HL),B ; Save exponent + LD B,0 ; CDE = integer to normalise + INC HL ; Point to sign of result + LD (HL),80H ; Set sign of result + RLA ; Carry = sign of integer + JP CONPOS ; Set sign of result + +ABS: CALL TSTSGN ; Test sign of FPREG + RET P ; Return if positive +INVSGN: LD HL,FPREG+2 ; Point to MSB + LD A,(HL) ; Get sign of mantissa + XOR 80H ; Invert sign of mantissa + LD (HL),A ; Re-save sign of mantissa + RET + +STAKFP: EX DE,HL ; Save code string address + LD HL,(FPREG) ; LSB,NLSB of FPREG + EX (SP),HL ; Stack them,get return + PUSH HL ; Re-save return + LD HL,(FPREG+2) ; MSB and exponent of FPREG + EX (SP),HL ; Stack them,get return + PUSH HL ; Re-save return + EX DE,HL ; Restore code string address + RET + +PHLTFP: CALL LOADFP ; Number at HL to BCDE +FPBCDE: EX DE,HL ; Save code string address + LD (FPREG),HL ; Save LSB,NLSB of number + LD H,B ; Exponent of number + LD L,C ; MSB of number + LD (FPREG+2),HL ; Save MSB and exponent + EX DE,HL ; Restore code string address + RET + +BCDEFP: LD HL,FPREG ; Point to FPREG +LOADFP: LD E,(HL) ; Get LSB of number + INC HL + LD D,(HL) ; Get NMSB of number + INC HL + LD C,(HL) ; Get MSB of number + INC HL + LD B,(HL) ; Get exponent of number +INCHL: INC HL ; Used for conditional "INC HL" + RET + +FPTHL: LD DE,FPREG ; Point to FPREG +DETHL4: LD B,4 ; 4 bytes to move +DETHLB: LD A,(DE) ; Get source + LD (HL),A ; Save destination + INC DE ; Next source + INC HL ; Next destination + DEC B ; Count bytes + JP NZ,DETHLB ; Loop if more + RET + +SIGNS: LD HL,FPREG+2 ; Point to MSB of FPREG + LD A,(HL) ; Get MSB + RLCA ; Old sign to carry + SCF ; Set MSBit + RRA ; Set MSBit of MSB + LD (HL),A ; Save new MSB + CCF ; Complement sign + RRA ; Old sign to carry + INC HL + INC HL + LD (HL),A ; Set sign of result + LD A,C ; Get MSB + RLCA ; Old sign to carry + SCF ; Set MSBit + RRA ; Set MSBit of MSB + LD C,A ; Save MSB + RRA + XOR (HL) ; New sign of result + RET + +CMPNUM: LD A,B ; Get exponent of number + OR A + JP Z,TSTSGN ; Zero - Test sign of FPREG + LD HL,RETREL ; Return relation routine + PUSH HL ; Save for return + CALL TSTSGN ; Test sign of FPREG + LD A,C ; Get MSB of number + RET Z ; FPREG zero - Number's MSB + LD HL,FPREG+2 ; MSB of FPREG + XOR (HL) ; Combine signs + LD A,C ; Get MSB of number + RET M ; Exit if signs different + CALL CMPFP ; Compare FP numbers + RRA ; Get carry to sign + XOR C ; Combine with MSB of number + RET + +CMPFP: INC HL ; Point to exponent + LD A,B ; Get exponent + CP (HL) ; Compare exponents + RET NZ ; Different + DEC HL ; Point to MBS + LD A,C ; Get MSB + CP (HL) ; Compare MSBs + RET NZ ; Different + DEC HL ; Point to NMSB + LD A,D ; Get NMSB + CP (HL) ; Compare NMSBs + RET NZ ; Different + DEC HL ; Point to LSB + LD A,E ; Get LSB + SUB (HL) ; Compare LSBs + RET NZ ; Different + POP HL ; Drop RETurn + POP HL ; Drop another RETurn + RET + +FPINT: LD B,A ; <- Move + LD C,A ; <- exponent + LD D,A ; <- to all + LD E,A ; <- bits + OR A ; Test exponent + RET Z ; Zero - Return zero + PUSH HL ; Save pointer to number + CALL BCDEFP ; Move FPREG to BCDE + CALL SIGNS ; Set MSBs & sign of result + XOR (HL) ; Combine with sign of FPREG + LD H,A ; Save combined signs + CALL M,DCBCDE ; Negative - Decrement BCDE + LD A,80H+24 ; 24 bits + SUB B ; Bits to shift + CALL SCALE ; Shift BCDE + LD A,H ; Get combined sign + RLA ; Sign to carry + CALL C,FPROND ; Negative - Round number up + LD B,0 ; Zero exponent + CALL C,COMPL ; If negative make positive + POP HL ; Restore pointer to number + RET + +DCBCDE: DEC DE ; Decrement BCDE + LD A,D ; Test LSBs + AND E + INC A + RET NZ ; Exit if LSBs not FFFF + DEC BC ; Decrement MSBs + RET + +INT: LD HL,FPEXP ; Point to exponent + LD A,(HL) ; Get exponent + CP 80H+24 ; Integer accuracy only? + LD A,(FPREG) ; Get LSB + RET NC ; Yes - Already integer + LD A,(HL) ; Get exponent + CALL FPINT ; F.P to integer + LD (HL),80H+24 ; Save 24 bit integer + LD A,E ; Get LSB of number + PUSH AF ; Save LSB + LD A,C ; Get MSB of number + RLA ; Sign to carry + CALL CONPOS ; Set sign of result + POP AF ; Restore LSB of number + RET + +MLDEBC: LD HL,0 ; Clear partial product + LD A,B ; Test multiplier + OR C + RET Z ; Return zero if zero + LD A,16 ; 16 bits +MLDBLP: ADD HL,HL ; Shift P.P left + JP C,BSERR ; ?BS Error if overflow + EX DE,HL + ADD HL,HL ; Shift multiplier left + EX DE,HL + JP NC,NOMLAD ; Bit was zero - No add + ADD HL,BC ; Add multiplicand + JP C,BSERR ; ?BS Error if overflow +NOMLAD: DEC A ; Count bits + JP NZ,MLDBLP ; More + RET + +ASCTFP: CP '-' ; Negative? + PUSH AF ; Save it and flags + JP Z,CNVNUM ; Yes - Convert number + CP '+' ; Positive? + JP Z,CNVNUM ; Yes - Convert number + DEC HL ; DEC 'cos GETCHR INCs +CNVNUM: CALL RESZER ; Set result to zero + LD B,A ; Digits after point counter + LD D,A ; Sign of exponent + LD E,A ; Exponent of ten + CPL + LD C,A ; Before or after point flag +MANLP: CALL GETCHR ; Get next character + JP C,ADDIG ; Digit - Add to number + CP '.' + JP Z,DPOINT ; '.' - Flag point + CP 'E' + JP NZ,CONEXP ; Not 'E' - Scale number + CALL GETCHR ; Get next character + CALL SGNEXP ; Get sign of exponent +EXPLP: CALL GETCHR ; Get next character + JP C,EDIGIT ; Digit - Add to exponent + INC D ; Is sign negative? + JP NZ,CONEXP ; No - Scale number + XOR A + SUB E ; Negate exponent + LD E,A ; And re-save it + INC C ; Flag end of number +DPOINT: INC C ; Flag point passed + JP Z,MANLP ; Zero - Get another digit +CONEXP: PUSH HL ; Save code string address + LD A,E ; Get exponent + SUB B ; Subtract digits after point +SCALMI: CALL P,SCALPL ; Positive - Multiply number + JP P,ENDCON ; Positive - All done + PUSH AF ; Save number of times to /10 + CALL DIV10 ; Divide by 10 + POP AF ; Restore count + INC A ; Count divides + +ENDCON: JP NZ,SCALMI ; More to do + POP DE ; Restore code string address + POP AF ; Restore sign of number + CALL Z,INVSGN ; Negative - Negate number + EX DE,HL ; Code string address to HL + RET + +SCALPL: RET Z ; Exit if no scaling needed +MULTEN: PUSH AF ; Save count + CALL MLSP10 ; Multiply number by 10 + POP AF ; Restore count + DEC A ; Count multiplies + RET + +ADDIG: PUSH DE ; Save sign of exponent + LD D,A ; Save digit + LD A,B ; Get digits after point + ADC A,C ; Add one if after point + LD B,A ; Re-save counter + PUSH BC ; Save point flags + PUSH HL ; Save code string address + PUSH DE ; Save digit + CALL MLSP10 ; Multiply number by 10 + POP AF ; Restore digit + SUB '0' ; Make it absolute + CALL RSCALE ; Re-scale number + POP HL ; Restore code string address + POP BC ; Restore point flags + POP DE ; Restore sign of exponent + JP MANLP ; Get another digit + +RSCALE: CALL STAKFP ; Put number on stack + CALL FLGREL ; Digit to add to FPREG +PADD: POP BC ; Restore number + POP DE + JP FPADD ; Add BCDE to FPREG and return + +EDIGIT: LD A,E ; Get digit + RLCA ; Times 2 + RLCA ; Times 4 + ADD A,E ; Times 5 + RLCA ; Times 10 + ADD A,(HL) ; Add next digit + SUB '0' ; Make it absolute + LD E,A ; Save new digit + JP EXPLP ; Look for another digit + +LINEIN: PUSH HL ; Save code string address + LD HL,INMSG ; Output " in " + CALL PRS ; Output string at HL + POP HL ; Restore code string address +PRNTHL: EX DE,HL ; Code string address to DE + XOR A + LD B,80H+24 ; 24 bits + CALL RETINT ; Return the integer + LD HL,PRNUMS ; Print number string + PUSH HL ; Save for return +NUMASC: LD HL,PBUFF ; Convert number to ASCII + PUSH HL ; Save for return + CALL TSTSGN ; Test sign of FPREG + LD (HL),' ' ; Space at start + JP P,SPCFST ; Positive - Space to start + LD (HL),'-' ; '-' sign at start +SPCFST: INC HL ; First byte of number + LD (HL),'0' ; '0' if zero + JP Z,JSTZER ; Return '0' if zero + PUSH HL ; Save buffer address + CALL M,INVSGN ; Negate FPREG if negative + XOR A ; Zero A + PUSH AF ; Save it + CALL RNGTST ; Test number is in range +SIXDIG: LD BC,9143H ; BCDE - 99999.9 + LD DE,4FF8H + CALL CMPNUM ; Compare numbers + OR A + JP PO,INRNG ; > 99999.9 - Sort it out + POP AF ; Restore count + CALL MULTEN ; Multiply by ten + PUSH AF ; Re-save count + JP SIXDIG ; Test it again + +GTSIXD: CALL DIV10 ; Divide by 10 + POP AF ; Get count + INC A ; Count divides + PUSH AF ; Re-save count + CALL RNGTST ; Test number is in range +INRNG: CALL ROUND ; Add 0.5 to FPREG + INC A + CALL FPINT ; F.P to integer + CALL FPBCDE ; Move BCDE to FPREG + LD BC,0306H ; 1E+06 to 1E-03 range + POP AF ; Restore count + ADD A,C ; 6 digits before point + INC A ; Add one + JP M,MAKNUM ; Do it in 'E' form if < 1E-02 + CP 6+1+1 ; More than 999999 ? + JP NC,MAKNUM ; Yes - Do it in 'E' form + INC A ; Adjust for exponent + LD B,A ; Exponent of number + LD A,2 ; Make it zero after + +MAKNUM: DEC A ; Adjust for digits to do + DEC A + POP HL ; Restore buffer address + PUSH AF ; Save count + LD DE,POWERS ; Powers of ten + DEC B ; Count digits before point + JP NZ,DIGTXT ; Not zero - Do number + LD (HL),'.' ; Save point + INC HL ; Move on + LD (HL),'0' ; Save zero + INC HL ; Move on +DIGTXT: DEC B ; Count digits before point + LD (HL),'.' ; Save point in case + CALL Z,INCHL ; Last digit - move on + PUSH BC ; Save digits before point + PUSH HL ; Save buffer address + PUSH DE ; Save powers of ten + CALL BCDEFP ; Move FPREG to BCDE + POP HL ; Powers of ten table + LD B, '0'-1 ; ASCII '0' - 1 +TRYAGN: INC B ; Count subtractions + LD A,E ; Get LSB + SUB (HL) ; Subtract LSB + LD E,A ; Save LSB + INC HL + LD A,D ; Get NMSB + SBC A,(HL) ; Subtract NMSB + LD D,A ; Save NMSB + INC HL + LD A,C ; Get MSB + SBC A,(HL) ; Subtract MSB + LD C,A ; Save MSB + DEC HL ; Point back to start + DEC HL + JP NC,TRYAGN ; No overflow - Try again + CALL PLUCDE ; Restore number + INC HL ; Start of next number + CALL FPBCDE ; Move BCDE to FPREG + EX DE,HL ; Save point in table + POP HL ; Restore buffer address + LD (HL),B ; Save digit in buffer + INC HL ; And move on + POP BC ; Restore digit count + DEC C ; Count digits + JP NZ,DIGTXT ; More - Do them + DEC B ; Any decimal part? + JP Z,DOEBIT ; No - Do 'E' bit +SUPTLZ: DEC HL ; Move back through buffer + LD A,(HL) ; Get character + CP '0' ; '0' character? + JP Z,SUPTLZ ; Yes - Look back for more + CP '.' ; A decimal point? + CALL NZ,INCHL ; Move back over digit + +DOEBIT: POP AF ; Get 'E' flag + JP Z,NOENED ; No 'E' needed - End buffer + LD (HL),'E' ; Put 'E' in buffer + INC HL ; And move on + LD (HL),'+' ; Put '+' in buffer + JP P,OUTEXP ; Positive - Output exponent + LD (HL),'-' ; Put '-' in buffer + CPL ; Negate exponent + INC A +OUTEXP: LD B,'0'-1 ; ASCII '0' - 1 +EXPTEN: INC B ; Count subtractions + SUB 10 ; Tens digit + JP NC,EXPTEN ; More to do + ADD A,'0'+10 ; Restore and make ASCII + INC HL ; Move on + LD (HL),B ; Save MSB of exponent +JSTZER: INC HL ; + LD (HL),A ; Save LSB of exponent + INC HL +NOENED: LD (HL),C ; Mark end of buffer + POP HL ; Restore code string address + RET + +RNGTST: LD BC,9474H ; BCDE = 999999. + LD DE,23F7H + CALL CMPNUM ; Compare numbers + OR A + POP HL ; Return address to HL + JP PO,GTSIXD ; Too big - Divide by ten + JP (HL) ; Otherwise return to caller + +HALF: DB 00H,00H,00H,80H ; 0.5 + +POWERS: DB 0A0H,086H,001H ; 100000 + DB 010H,027H,000H ; 10000 + DB 0E8H,003H,000H ; 1000 + DB 064H,000H,000H ; 100 + DB 00AH,000H,000H ; 10 + DB 001H,000H,000H ; 1 + +NEGAFT: LD HL,INVSGN ; Negate result + EX (SP),HL ; To be done after caller + JP (HL) ; Return to caller + +SQR: CALL STAKFP ; Put value on stack + LD HL,HALF ; Set power to 1/2 + CALL PHLTFP ; Move 1/2 to FPREG + +POWER: POP BC ; Get base + POP DE + CALL TSTSGN ; Test sign of power + LD A,B ; Get exponent of base + JP Z,EXP ; Make result 1 if zero + JP P,POWER1 ; Positive base - Ok + OR A ; Zero to negative power? + JP Z,DZERR ; Yes - ?/0 Error +POWER1: OR A ; Base zero? + JP Z,SAVEXP ; Yes - Return zero + PUSH DE ; Save base + PUSH BC + LD A,C ; Get MSB of base + OR 01111111B ; Get sign status + CALL BCDEFP ; Move power to BCDE + JP P,POWER2 ; Positive base - Ok + PUSH DE ; Save power + PUSH BC + CALL INT ; Get integer of power + POP BC ; Restore power + POP DE + PUSH AF ; MSB of base + CALL CMPNUM ; Power an integer? + POP HL ; Restore MSB of base + LD A,H ; but don't affect flags + RRA ; Exponent odd or even? +POWER2: POP HL ; Restore MSB and exponent + LD (FPREG+2),HL ; Save base in FPREG + POP HL ; LSBs of base + LD (FPREG),HL ; Save in FPREG + CALL C,NEGAFT ; Odd power - Negate result + CALL Z,INVSGN ; Negative base - Negate it + PUSH DE ; Save power + PUSH BC + CALL LOG ; Get LOG of base + POP BC ; Restore power + POP DE + CALL FPMULT ; Multiply LOG by power + +EXP: CALL STAKFP ; Put value on stack + LD BC,08138H ; BCDE = 1/Ln(2) + LD DE,0AA3BH + CALL FPMULT ; Multiply value by 1/LN(2) + LD A,(FPEXP) ; Get exponent + CP 80H+8 ; Is it in range? + JP NC,OVTST1 ; No - Test for overflow + CALL INT ; Get INT of FPREG + ADD A,80H ; For excess 128 + ADD A,2 ; Exponent > 126? + JP C,OVTST1 ; Yes - Test for overflow + PUSH AF ; Save scaling factor + LD HL,UNITY ; Point to 1. + CALL ADDPHL ; Add 1 to FPREG + CALL MULLN2 ; Multiply by LN(2) + POP AF ; Restore scaling factor + POP BC ; Restore exponent + POP DE + PUSH AF ; Save scaling factor + CALL SUBCDE ; Subtract exponent from FPREG + CALL INVSGN ; Negate result + LD HL,EXPTAB ; Coefficient table + CALL SMSER1 ; Sum the series + LD DE,0 ; Zero LSBs + POP BC ; Scaling factor + LD C,D ; Zero MSB + JP FPMULT ; Scale result to correct value + +EXPTAB: DB 8 ; Table used by EXP + DB 040H,02EH,094H,074H ; -1/7! (-1/5040) + DB 070H,04FH,02EH,077H ; 1/6! ( 1/720) + DB 06EH,002H,088H,07AH ; -1/5! (-1/120) + DB 0E6H,0A0H,02AH,07CH ; 1/4! ( 1/24) + DB 050H,0AAH,0AAH,07EH ; -1/3! (-1/6) + DB 0FFH,0FFH,07FH,07FH ; 1/2! ( 1/2) + DB 000H,000H,080H,081H ; -1/1! (-1/1) + DB 000H,000H,000H,081H ; 1/0! ( 1/1) + +SUMSER: CALL STAKFP ; Put FPREG on stack + LD DE,MULT ; Multiply by "X" + PUSH DE ; To be done after + PUSH HL ; Save address of table + CALL BCDEFP ; Move FPREG to BCDE + CALL FPMULT ; Square the value + POP HL ; Restore address of table +SMSER1: CALL STAKFP ; Put value on stack + LD A,(HL) ; Get number of coefficients + INC HL ; Point to start of table + CALL PHLTFP ; Move coefficient to FPREG + DB 06H ; Skip "POP AF" +SUMLP: POP AF ; Restore count + POP BC ; Restore number + POP DE + DEC A ; Cont coefficients + RET Z ; All done + PUSH DE ; Save number + PUSH BC + PUSH AF ; Save count + PUSH HL ; Save address in table + CALL FPMULT ; Multiply FPREG by BCDE + POP HL ; Restore address in table + CALL LOADFP ; Number at HL to BCDE + PUSH HL ; Save address in table + CALL FPADD ; Add coefficient to FPREG + POP HL ; Restore address in table + JP SUMLP ; More coefficients + +RND: CALL TSTSGN ; Test sign of FPREG + LD HL,SEED+2 ; Random number seed + JP M,RESEED ; Negative - Re-seed + LD HL,LSTRND ; Last random number + CALL PHLTFP ; Move last RND to FPREG + LD HL,SEED+2 ; Random number seed + RET Z ; Return if RND(0) + ADD A,(HL) ; Add (SEED)+2) + AND 00000111B ; 0 to 7 + LD B,0 + LD (HL),A ; Re-save seed + INC HL ; Move to coefficient table + ADD A,A ; 4 bytes + ADD A,A ; per entry + LD C,A ; BC = Offset into table + ADD HL,BC ; Point to coefficient + CALL LOADFP ; Coefficient to BCDE + CALL FPMULT ; ; Multiply FPREG by coefficient + LD A,(SEED+1) ; Get (SEED+1) + INC A ; Add 1 + AND 00000011B ; 0 to 3 + LD B,0 + CP 1 ; Is it zero? + ADC A,B ; Yes - Make it 1 + LD (SEED+1),A ; Re-save seed + LD HL,RNDTAB-4 ; Addition table + ADD A,A ; 4 bytes + ADD A,A ; per entry + LD C,A ; BC = Offset into table + ADD HL,BC ; Point to value + CALL ADDPHL ; Add value to FPREG +RND1: CALL BCDEFP ; Move FPREG to BCDE + LD A,E ; Get LSB + LD E,C ; LSB = MSB + XOR 01001111B ; Fiddle around + LD C,A ; New MSB + LD (HL),80H ; Set exponent + DEC HL ; Point to MSB + LD B,(HL) ; Get MSB + LD (HL),80H ; Make value -0.5 + LD HL,SEED ; Random number seed + INC (HL) ; Count seed + LD A,(HL) ; Get seed + SUB 171 ; Do it modulo 171 + JP NZ,RND2 ; Non-zero - Ok + LD (HL),A ; Zero seed + INC C ; Fillde about + DEC D ; with the + INC E ; number +RND2: CALL BNORM ; Normalise number + LD HL,LSTRND ; Save random number + JP FPTHL ; Move FPREG to last and return + +RESEED: LD (HL),A ; Re-seed random numbers + DEC HL + LD (HL),A + DEC HL + LD (HL),A + JP RND1 ; Return RND seed + +RNDTAB: DB 068H,0B1H,046H,068H ; Table used by RND + DB 099H,0E9H,092H,069H + DB 010H,0D1H,075H,068H + +COS: LD HL,HALFPI ; Point to PI/2 + CALL ADDPHL ; Add it to PPREG +SIN: CALL STAKFP ; Put angle on stack + LD BC,8349H ; BCDE = 2 PI + LD DE,0FDBH + CALL FPBCDE ; Move 2 PI to FPREG + POP BC ; Restore angle + POP DE + CALL DVBCDE ; Divide angle by 2 PI + CALL STAKFP ; Put it on stack + CALL INT ; Get INT of result + POP BC ; Restore number + POP DE + CALL SUBCDE ; Make it 0 <= value < 1 + LD HL,QUARTR ; Point to 0.25 + CALL SUBPHL ; Subtract value from 0.25 + CALL TSTSGN ; Test sign of value + SCF ; Flag positive + JP P,SIN1 ; Positive - Ok + CALL ROUND ; Add 0.5 to value + CALL TSTSGN ; Test sign of value + OR A ; Flag negative +SIN1: PUSH AF ; Save sign + CALL P,INVSGN ; Negate value if positive + LD HL,QUARTR ; Point to 0.25 + CALL ADDPHL ; Add 0.25 to value + POP AF ; Restore sign + CALL NC,INVSGN ; Negative - Make positive + LD HL,SINTAB ; Coefficient table + JP SUMSER ; Evaluate sum of series + +HALFPI: DB 0DBH,00FH,049H,081H ; 1.5708 (PI/2) + +QUARTR: DB 000H,000H,000H,07FH ; 0.25 + +SINTAB: DB 5 ; Table used by SIN + DB 0BAH,0D7H,01EH,086H ; 39.711 + DB 064H,026H,099H,087H ;-76.575 + DB 058H,034H,023H,087H ; 81.602 + DB 0E0H,05DH,0A5H,086H ;-41.342 + DB 0DAH,00FH,049H,083H ; 6.2832 + +TAN: CALL STAKFP ; Put angle on stack + CALL SIN ; Get SIN of angle + POP BC ; Restore angle + POP HL + CALL STAKFP ; Save SIN of angle + EX DE,HL ; BCDE = Angle + CALL FPBCDE ; Angle to FPREG + CALL COS ; Get COS of angle + JP DIV ; TAN = SIN / COS + +ATN: CALL TSTSGN ; Test sign of value + CALL M,NEGAFT ; Negate result after if -ve + CALL M,INVSGN ; Negate value if -ve + LD A,(FPEXP) ; Get exponent + CP 81H ; Number less than 1? + JP C,ATN1 ; Yes - Get arc tangnt + LD BC,8100H ; BCDE = 1 + LD D,C + LD E,C + CALL DVBCDE ; Get reciprocal of number + LD HL,SUBPHL ; Sub angle from PI/2 + PUSH HL ; Save for angle > 1 +ATN1: LD HL,ATNTAB ; Coefficient table + CALL SUMSER ; Evaluate sum of series + LD HL,HALFPI ; PI/2 - angle in case > 1 + RET ; Number > 1 - Sub from PI/2 + +ATNTAB: DB 9 ; Table used by ATN + DB 04AH,0D7H,03BH,078H ; 1/17 + DB 002H,06EH,084H,07BH ;-1/15 + DB 0FEH,0C1H,02FH,07CH ; 1/13 + DB 074H,031H,09AH,07DH ;-1/11 + DB 084H,03DH,05AH,07DH ; 1/9 + DB 0C8H,07FH,091H,07EH ;-1/7 + DB 0E4H,0BBH,04CH,07EH ; 1/5 + DB 06CH,0AAH,0AAH,07FH ;-1/3 + DB 000H,000H,000H,081H ; 1/1 + + +ARET: RET ; A RETurn instruction + +CLS: LD A,016H ; ASCII Clear screen + JP PRNT ; Output character + +WIDTH: CALL GETINT ; Get integer 0-255 + LD A,E ; Width to A + LD (LWIDTH),A ; Set width + RET + +LINES: CALL GETNUM ; Get a number + CALL DEINT ; Get integer -32768 to 32767 + LD (LINESC),DE ; Set lines counter + LD (LINESN),DE ; Set lines number + RET + +DEEK: CALL DEINT ; Get integer -32768 to 32767 + PUSH DE ; Save number + POP HL ; Number to HL + LD B,(HL) ; Get LSB of contents + INC HL + LD A,(HL) ; Get MSB of contents + JP ABPASS ; Return integer AB + +DOKE: CALL GETNUM ; Get a number + CALL DEINT ; Get integer -32768 to 32767 + PUSH DE ; Save address + CALL CHKSYN ; Make sure ',' follows + DB ',' + CALL GETNUM ; Get a number + CALL DEINT ; Get integer -32768 to 32767 + EX (SP),HL ; Save value,get address + LD (HL),E ; Save LSB of value + INC HL + LD (HL),D ; Save MSB of value + POP HL ; Restore code string address + RET + + + ; HEX$(nn) Convert 16 bit number to Hexadecimal string + +HEX: CALL TSTNUM ; Verify it's a number + CALL DEINT ; Get integer -32768 to 32767 + PUSH BC ; Save contents of BC + LD HL,PBUFF + LD A,D ; Get high order into A + CP 000H + JR Z,HEX2 ; Skip output if both high digits are zero + CALL BYT2ASC ; Convert D to ASCII + LD A,B + CP '0' + JR Z,HEX1 ; Don't store high digit if zero + LD (HL),B ; Store it to PBUFF + INC HL ; Next location +HEX1: LD (HL),C ; Store C to PBUFF+1 + INC HL ; Next location +HEX2: LD A,E ; Get lower byte + CALL BYT2ASC ; Convert E to ASCII + LD A,D + CP 000H + JR NZ,HEX3 ; If upper byte was not zero then always print lower byte + LD A,B + CP '0' ; If high digit of lower byte is zero then don't print + JR Z,HEX4 +HEX3: LD (HL),B ; to PBUFF+2 + INC HL ; Next location +HEX4: LD (HL),C ; to PBUFF+3 + INC HL ; PBUFF+4 to zero + XOR A ; Terminating character + LD (HL),A ; Store zero to terminate + INC HL ; Make sure PBUFF is terminated + LD (HL),A ; Store the double zero there + POP BC ; Get BC back + LD HL,PBUFF ; Reset to start of PBUFF + JP STR1 ; Convert the PBUFF to a string and return it + +BYT2ASC LD B,A ; Save original value + AND 00FH ; Strip off upper nybble + CP 00AH ; 0-9? + JR C,ADD30 ; If A-F, add 7 more + ADD A,007H ; Bring value up to ASCII A-F +ADD30 ADD A,030H ; And make ASCII + LD C,A ; Save converted char to C + LD A,B ; Retrieve original value + RRCA ; and Rotate it right + RRCA + RRCA + RRCA + AND 00FH ; Mask off upper nybble + CP 00AH ; 0-9? < A hex? + JR C,ADD301 ; Skip Add 7 + ADD A,007H ; Bring it up to ASCII A-F +ADD301 ADD A,030H ; And make it full ASCII + LD B,A ; Store high order byte + RET + + ; Convert "&Hnnnn" to FPREG + ; Gets a character from (HL) checks for Hexadecimal ASCII numbers "&Hnnnn" + ; Char is in A, NC if char is ;<=>?@ A-z, CY is set if 0-9 +HEXTFP EX DE,HL ; Move code string pointer to DE + LD HL,00000H ; Zero out the value + CALL GETHEX ; Check the number for valid hex + JP C,HXERR ; First value wasn't hex, HX error + JR HEXLP1 ; Convert first character +HEXLP CALL GETHEX ; Get second and addtional characters + JR C,HEXIT ; Exit if not a hex character +HEXLP1 ADD HL,HL ; Rotate 4 bits to the left + ADD HL,HL + ADD HL,HL + ADD HL,HL + OR L ; Add in D0-D3 into L + LD L,A ; Save new value + JR HEXLP ; And continue until all hex characters are in + +GETHEX INC DE ; Next location + LD A,(DE) ; Load character at pointer + CP ' ' + JP Z,GETHEX ; Skip spaces + SUB 030H ; Get absolute value + RET C ; < "0", error + CP 00AH + JR C,NOSUB7 ; Is already in the range 0-9 + SUB 007H ; Reduce to A-F + CP 00AH ; Value should be $0A-$0F at this point + RET C ; CY set if was : ; < = > ? @ +NOSUB7 CP 010H ; > Greater than "F"? + CCF + RET ; CY set if it wasn't valid hex + +HEXIT EX DE,HL ; Value into DE, Code string into HL + LD A,D ; Load DE into AC + LD C,E ; For prep to + PUSH HL + CALL ACPASS ; ACPASS to set AC as integer into FPREG + POP HL + RET + +HXERR: LD E,HX ; ?HEX Error + JP BERROR + + ; BIN$(NN) Convert integer to a 1-16 char binary string +BIN: CALL TSTNUM ; Verify it's a number + CALL DEINT ; Get integer -32768 to 32767 +BIN2: PUSH BC ; Save contents of BC + LD HL,PBUFF + LD B,17 ; One higher than max char count +ZEROSUP: ; Suppress leading zeros + DEC B ; Max 16 chars + LD A,B + CP 001H + JR Z,BITOUT ; Always output at least one character + RL E + RL D + JR NC,ZEROSUP + JR BITOUT2 +BITOUT: + RL E + RL D ; Top bit now in carry +BITOUT2: + LD A,'0' ; Char for '0' + ADC A,0 ; If carry set then '0' --> '1' + LD (HL),A + INC HL + DEC B + JR NZ,BITOUT + XOR A ; Terminating character + LD (HL),A ; Store zero to terminate + INC HL ; Make sure PBUFF is terminated + LD (HL),A ; Store the double zero there + POP BC + LD HL,PBUFF + JP STR1 + + ; Convert "&Bnnnn" to FPREG + ; Gets a character from (HL) checks for Binary ASCII numbers "&Bnnnn" +BINTFP: EX DE,HL ; Move code string pointer to DE + LD HL,00000H ; Zero out the value + CALL CHKBIN ; Check the number for valid bin + JP C,BINERR ; First value wasn't bin, HX error +BINIT: SUB '0' + ADD HL,HL ; Rotate HL left + OR L + LD L,A + CALL CHKBIN ; Get second and addtional characters + JR NC,BINIT ; Process if a bin character + EX DE,HL ; Value into DE, Code string into HL + LD A,D ; Load DE into AC + LD C,E ; For prep to + PUSH HL + CALL ACPASS ; ACPASS to set AC as integer into FPREG + POP HL + RET + + ; Char is in A, NC if char is 0 or 1 +CHKBIN: INC DE + LD A,(DE) + CP ' ' + JP Z,CHKBIN ; Skip spaces + CP '0' ; Set C if < '0' + RET C + CP '2' + CCF ; Set C if > '1' + RET + +BINERR: LD E,BN ; ?BIN Error + JP BERROR + +JJUMP1: LD IX,-1 ; Flag cold start + JP CSTART ; Go and initialise + + ; Restored SCREEN command updated for the MZ80A. + ; The MZ80A uses 0,0 -> COLW-1,ROW-1 addressing as opposed to the NASCOM 1,1 -> 48,16 + ; +SCREEN: CALL GETINT ; Get integer 0 to 255 + PUSH AF ; Save column + CALL CHKSYN ; Make sure "," follows + DB "," + CALL GETINT ; Get integer 0 to 255 + POP BC ; Column to B + PUSH HL ; Save code string address + PUSH BC ; Save column + CALL SCRADR ; Set screen coordinates. + POP HL ; Rstore code string address + RET + +SCRADR: LD B,A ; Line and column to BC once checked. + OR A ; Test it + JP Z,FCERR ; Zero - ?FC Error + CP ROW+1 ; Number of lines + JP P,FCERR ; > Number of lines then ?FC Error + DEC B ; Sharp uses 0,0 addressing so once value verified, decrement. + POP DE ; RETurn address + POP AF ; Get column + PUSH DE ; Re-save RETurn + LD C,A ; Column to DE + OR A ; Test it + JP Z,FCERR ; Zero - ?FC Error + CP COLW+1 ; Number of characters per line + JP P,FCERR ; > number of characters then ?FC Error + DEC C ; Sharp uses 0,0 addressing. + LD (DSPXY),BC ; Save coordinates. + RET + +ARETN: RETN ; Return from NMI + +TSTBIT: PUSH AF ; Save bit mask + AND B ; Get common bits + POP BC ; Restore bit mask + CP B ; Same bit set? + LD A,0 ; Return 0 in A + RET + +OUTNCR: CALL OUTC ; Output character in A + JP PRNTCRLF ; Output CRLF + + ; Command to enable/disable the ANSI Terminal emulator. +SETANSITERM:CALL GETINT + CP 2 ; Can only have 0 or 1. + JR NC,SETANSIERR + LD (ANSIENABLE),A ; Update the flag. + RET +SETANSIERR: LD E,BV ; ?BV Error + JP BERROR ; Yes - output "?BV Error" + + + ;---------------------------------------- + ; TZFS Commands. + ;---------------------------------------- +OPTIONS0C: IF BUILD_TZFS = 1 + + ; Method to load BASIC text program. +LOAD: LD A,TAPELOAD ; Set the type of operation into the flag var. + JR CLOAD0 + + ; Method to load a cassette image (tokenised basic script). + ; +CLOADTZ: LD A,CTAPELOAD ; Set the type of operatiom into the flag var. +CLOAD0: LD (TPFLAG),A + LD A,(HL) ; Get byte after "CLOAD" + ; CP ZTIMES ; "*" token? ("CLOAD*") + ; JP Z,ARRLD1 ; Yes - Array load + SUB ZPRINT ; "?" ("PRINT" token) Verify? + JP Z,FLGVERTZ ; Yes - Flag "verify" + XOR A ; Flag "load" + DB 01H ; Skip "CPL" and "INC HL" +FLGVERTZ: CPL ; Flag "verify" + INC HL ; Skip over "?" + PUSH AF ; Save verify flag + DEC HL ; DEC 'cos GETCHR INCs + CALL GETCHR ; Get next character + LD A,0 ; Any file will do + JP Z,SDNONAM ; No name given - error. + CALL EVAL ; Evaluate expression + CALL GTFLNM ; Get file name + POP AF + OR A + JP NZ,SDVERF + ; + LD HL,TZSVC_FILENAME ; Set the filename to be loaded. + LD A,(TMSTPL) + CP TZSVCFILESZ ; Check size of filename, cant be more than an MZF name of 17 chars. + JP NC,SDFNTG + LD B,A +CLOADTZ1: LD A,(DE) ; Copy filename into service record. + LD (HL),A + INC DE + INC HL + DJNZ CLOADTZ1 + XOR A + LD (HL),A ; Terminate filename. + ; + CALL CLRPTR ; Initialise memory to NEW state ready for program load. + LD A,(TPFLAG) ; What are we processing, cassette image or text? + CP CTAPELOAD + JR Z,CLOADTZ2 ; Is this a cassette image load? + CALL LDTXT ; BASIC text load. + JR SDLOADE +CLOADTZ2: SCF + CALL PRCFIL ; Process file as a load request. + PUSH HL + LD HL,(BASTXT) ; Get start of program memory. + LD BC,(TZSVC_LOADSIZE) ; Get the actual load size. + ADD HL,BC ; Find the end. + XOR A + LD (HL),A ; Last two bytes are xeroed as they are for the next line number. + INC HL + LD (HL),A + INC HL + LD (PROGND),HL ; Set it as the end of program memory. + POP HL + JR SDLOADE ; Exit and tidy up. + +SDVERF: +SDLOADE: LD HL,OKMSG ; "Ok" message + CALL PRS ; Output string + JP SETPTR ; Set up line pointers + + ; Methods to open, read and close an SD file for retrieval of basic program data. Cassette files are read/written + ; directly to memory by the K64F but text files, as they are being expanded/compressed, need to be read/written + ; sector by sector. +LDOPEN: XOR A + LD (TZSVC_FILE_SEC),A ; Starting sector number of file to load. + LD A,TZSVC_FTYPE_BAS ; Type of file is CASsette, the K64F will know how to handle it. + LD (TZSVC_FILE_TYPE),A + LD A,TZSVC_CMD_READFILE + CALL SVC_CMD ; And make communications wit the I/O processor, returning with the required record. + OR A ; Zero means no physical error occurred. + JP NZ, SDOPER ; Open error, K64F didint respond, cannot read! + LD A,(TZSVCRESULT) ; Check the result from the K64F, non zero is an error. + OR A + JP NZ, SDOPER ; Same thing, if K64F processes request and returns an error, open or read problem! + LD HL,TZSVCSECTOR ; Start at beginning of sector. + LD (SECTPOS),HL + RET + +LDCLOSE: LD A,TZSVC_CMD_CLOSE ; Close file. + CALL SVC_CMD ; And make communications wit the I/O processor, returning with the required record. + OR A ; Zero means no physical error occurred. + JP NZ, SDCLER ; Close error, K64F didint respond, cannot close the file. + LD A,(TZSVCRESULT) ; Check the result from the K64F, non zero is an error. + OR A + JP NZ, SDCLER ; Same thing, if K64F closes file and returns an error, closing problem (SD removed!)! + RET + +LDBUF: LD A,(TZSVC_FILE_SEC) ; Update the virtual file sector number so the K64F knows what to read. + INC A + LD (TZSVC_FILE_SEC),A + LD A, TZSVC_CMD_NEXTREADFILE + CALL SVC_CMD ; And make communications with the I/O processor, returning with the required record. + OR A ; Zero means no physical error occurred. + JP NZ, SDRDER ; Write error, K64F didint respond, cannot write so flag as error! + LD A,(TZSVCRESULT) ; Check the result from the K64F, non zero is an error. + OR A + JP NZ, SDRDER ; Same thing, if K64F read from file returns an error, read error (SD removed or disk error!)! + RET + + ; Method to load a BASIC program which is stored as TEXT into memory. This is accomplied sector by sector, line by line, + ; each line needs to be read, tokenised and stored. + ; +LDTXT: CALL LDOPEN ; Open file, read the first sector of data. + LD HL,(PROGND) ; After reset the pointer points to the first line number not the first address + DEC HL ; Update it to keep the later logic more simple. + DEC HL + LD (PROGND),HL + ; +LDTXT0: LD HL,(TZSVC_LOADSIZE) ; Get size of sector loaded. + LD BC,TZSVCSECTOR ; Address of sector + ADD HL,BC ; End of sector address + PUSH HL + POP BC ; BC contains sector end address. + LD HL,(SECTPOS) ; Get position in sector for next line. + LD DE,STACKE ; Copy line into temporary area in case we span sectors. +LDTXT1: PUSH HL + OR A + SBC HL,BC ; So long as the end sector address is greater than the pointer we will have carry. + POP HL + JR C,LDTXT2 ; Check that we havent got to the end of the current sector. + CALL LDBUF ; End of current sector so load new. + LD HL,(TZSVC_LOADSIZE) + LD A,H + OR L + JR Z,LDTXTE ; No bytes in sector means end of file,exit. + LD HL,TZSVCSECTOR ; Start at beginning of sector. +LDTXT2: LD A,(HL) ; Copy the string from the sector to the temporary area. + LD (DE),A + INC HL + CP CR + JR Z,LDTXT3 ; CR means EOS. + CP LF + JR Z,LDTXT3 ; LF means EOS. + INC DE + JR LDTXT1 +LDTXT3: LD A,(HL) ; If CR make sure any LF is wasted. + CP LF + JR NZ,LDTXT4 + INC HL +LDTXT4: LD (SECTPOS),HL + LD HL,STACKE ; Start of line to insert. + XOR A + LD (DE),A ; Terminate string, BASIC uses NULL terminated strings. + CALL ATOH ; Get line number into DE + PUSH DE ; Save line number + CALL CRUNCH ; Convert text to tokens. A returns with size of line in BUFFER. + LD L,C ; Length of string to L. + LD H,0 + LD BC,(PROGND) + PUSH BC + ADD HL,BC ; Find new end + LD (PROGND),HL ; Update end of program pointer + POP DE ; Get back old pointer. + EX DE,HL + LD (HL),E ; Set pointer to end of line. + INC HL + LD (HL),D + INC HL ; Move onto line number. + POP DE ; Get back line number, + LD (HL),E + INC HL + LD (HL),D ; Store line number. + INC HL ; HL now points to first location for tokenised line. + LD DE,BUFFER ; Copy buffer to program +LDMVBUF: LD A,(DE) ; Get source + LD (HL),A ; Save destinations + INC HL ; Next source + INC DE ; Next destination + OR A ; Done? + JP NZ,LDMVBUF ; No - Repeat + ; + JP LDTXT0 ; Get next line. +LDTXTE: CALL LDCLOSE ; Close file for exit. + RET + + ; Method to save BASIC text to file. + ; +SAVE: LD A,TAPESAVE ; Set the type of operation into the flag var. + JR CSAVE0 + + ; Method to save a cassette image (tokenised basic script). + ; +CSAVETZ: LD A,CTAPESAVE ; Set the type of operatiom into the flag var. +CSAVE0: LD (TPFLAG),A + ; + LD B,1 ; Flag "CSAVE" + ; CP ZTIMES ; "*" token? ("CSAVE*") + ; JP Z,ARRSV1 ; Yes - Array save + CALL EVAL ; Evaluate expression + PUSH HL + CALL GTFLNM ; Get file name + ; + LD HL,TZSVC_FILENAME ; Set the filename to be created. + LD A,(TMSTPL) + CP TZSVCFILESZ ; Check size of filename, cant be more than an MZF name of 17 chars. + JP NC,SDFNTG + LD B,A +CSAVE1: LD A,(DE) ; Copy filename into service record. + LD (HL),A + INC DE + INC HL + DJNZ CSAVE1 + XOR A + LD (HL),A ; Terminate filename. + ; + LD A,(TPFLAG) ; What are we processing, cassette image or text? + CP CTAPESAVE + JR Z,CSAVE2 ; Is this a cassette image save? + ; + PUSH DE + CALL SVOPEN ; Open the required file for writing. + CALL SVTXT ; Expand and save text into the file + CALL SVCLOSE ; Finish by closing file so no corruption occurs. + POP DE + JR CSAVEE +CSAVE2: SCF + CCF + CALL PRCFIL ; Process file as a save request. +CSAVEE: POP HL + RET + + + ; Methods to open, write and close an SD file for storage of basic program data. Cassette files are read/written + ; directly to memory by the K64F but text files, as they are being expanded/compressed, need to be read/written + ; sector by sector. + ; +SVOPEN: PUSH HL + XOR A + LD (TZSVC_FILE_SEC),A ; Starting sector number. + LD A,TZSVC_FTYPE_BAS ; Type of file is BASic, the K64F will know how to handle it. + LD (TZSVC_FILE_TYPE),A + LD HL,0 + LD (TZSVC_SAVESIZE),HL ; Initialise the sector size count. + POP HL + LD A,TZSVC_CMD_WRITEFILE + CALL SVC_CMD ; And make communications wit the I/O processor, returning with the required record. + OR A ; Zero means no physical error occurred. + JP NZ, SDCRER ; Create error, K64F didint respond, cannot write! + LD A,(TZSVCRESULT) ; Check the result from the K64F, non zero is an error. + OR A + JP NZ, SDCRER ; Same thing, if K64F processes request and returns an error, creation problem! + RET + +SVCLOSE: CALL SVBUF ; Flush out any unwritten data. + LD A,TZSVC_CMD_CLOSE ; Close file. + CALL SVC_CMD ; And make communications wit the I/O processor, returning with the required record. + OR A ; Zero means no physical error occurred. + JP NZ, SDCLER ; Close error, K64F didint respond, cannot write so flag as error! + LD A,(TZSVCRESULT) ; Check the result from the K64F, non zero is an error. + OR A + JP NZ, SDCLER ; Same thing, if K64F closes file and returns an error, closing problem (SD removed!)! + RET + +SVBUF: LD A, TZSVC_CMD_NEXTWRITEFILE + CALL SVC_CMD ; And make communications with the I/O processor, returning with the required record. + OR A ; Zero means no physical error occurred. + JP NZ, SDWRER ; Write error, K64F didint respond, cannot write so flag as error! + LD A,(TZSVCRESULT) ; Check the result from the K64F, non zero is an error. + OR A + JP NZ, SDWRER ; Same thing, if K64F write to file and returns an error, write error (SD removed or disk full!)! + LD A,(TZSVC_FILE_SEC) ; Update the virtual file sector number + INC A + LD (TZSVC_FILE_SEC),A + LD DE,0 + LD (TZSVC_SAVESIZE),DE ; Initialise to empty sector. + RET + + ; Methods to write into the SD sector a BASIC script as it is expanded into text. + ; +WRLINE: PUSH BC ; Convert line number in DE into text. + XOR A + LD B,80H+24 ; 24 bits + CALL RETINT ; Return the integer + CALL NUMASC ; Output line number in decimal + POP BC + LD HL,PBUFF ; Text version of line number now in PBUFF +WRLINE1: LD A,(HL) ; Loop and write to service command sector, 0 terminates string. + OR A + RET Z + CALL WRBUF + INC HL + JR WRLINE1 + +WRCRLF: LD A,CR ; Carriage return first. + CALL WRBUF + LD A,LF ; Now line feed. +WRBUF: PUSH HL ; Save as were using it. + PUSH DE + LD DE,(TZSVC_SAVESIZE) ; Get current pointer into sector for next char. + LD HL,TZSVCSECTOR ; Add in the absolute address of the service sector. + ADD HL,DE + LD (HL),A ; Save at correct location. + ; CALL PRNT ; Print out what is being saved, debug! + INC DE + LD (TZSVC_SAVESIZE),DE ; Update the sector location for next byte. + LD A,D + CP 2 ; Test to see if buffer full. Hard coded 512 byte msb as Glass isnt resolving shift right correctly. + JR NZ,WRBUF1 + CALL SVBUF ; Save the buffer. + ; Write out buffer. +WRBUF1: POP DE + POP HL ; Restore and get out. + RET + + + ; Method to save the current program in memory to SD card as text. + ; This is the most common way of working with basic scripts, the cassette + ; image type offers speed but in this day and age it is not so much needed. + ; +SVTXT: LD DE,0 + CALL SRCHLN ; Search for line number in DE + PUSH BC ; Save address of line + CALL SETLIN ; Set up lines counter + JR SVTXT1 ; Skip CR on first line. +SVTXT0: CALL WRCRLF ; Write CRLF to buffer. +SVTXT1: POP HL ; Restore address of line + LD C,(HL) ; Get LSB of next line + INC HL + LD B,(HL) ; Get MSB of next line + INC HL + LD A,B ; BC = 0 (End of program)? + OR C + RET Z ; Yes - finish save. + CALL SVCNT ; Count lines + PUSH BC ; Save address of next line + LD E,(HL) ; Get LSB of line number + INC HL + LD D,(HL) ; Get MSB of line number + INC HL + PUSH HL ; Save address of line start + CALL WRLINE ; Write out the line number. + LD A,' ' ; Space after line number + POP HL ; Restore start of line address +SVTXT2: CALL WRBUF ; Output character in A +SVTXT3: LD A,(HL) ; Get next byte in line + OR A ; End of line? + INC HL ; To next byte in line + JP Z,SVTXT0 ; Yes - get next line + JP P,SVTXT2 ; No token - output it + SUB ZEND-1 ; Find and output word + LD C,A ; Token offset+1 to C + LD DE,WORDS ; Reserved word list +SVTXT4: LD A,(DE) ; Get character in list + INC DE ; Move on to next + OR A ; Is it start of word? + JP P,SVTXT4 ; No - Keep looking for word + DEC C ; Count words + JP NZ,SVTXT4 ; Not there - keep looking +SVTXT5: AND 01111111B ; Strip bit 7 + CALL WRBUF ; Output first character + LD A,(DE) ; Get next character + INC DE ; Move on to next + OR A ; Is it end of word? + JP P,SVTXT5 ; No - output the rest + JP SVTXT3 ; Next byte in line + +SVCNT: PUSH HL ; Save code string address + PUSH DE + LD HL,(LINESC) ; Get LINES counter + LD DE,-1 + ADC HL,DE ; Decrement + LD (LINESC),HL ; Put it back + POP DE + POP HL ; Restore code string address + RET P ; Return if more lines to go + PUSH HL ; Save code string address + LD HL,(LINESN) ; Get LINES number + LD (LINESC),HL ; Reset LINES counter + POP HL ; Restore code string address + JP SVCNT ; Keep on counting + + ; Method to process a cassette based file load/save. + ; The file is stored in a tokenised format and maintains a degree + ; of compatibility with NASCOM files. To use NASCOM files please + ; see the 'nasconv' tool which updates the tokens as this version + ; of BASIC adds additional commands which meant adjusting token values. + ; +PRCFIL: JR NC,PRCFIL1 + LD HL,(BASTXT) ; Get start of program memory. + LD (TZSVC_LOADADDR), HL + LD DE,(LSTRAM) + EX DE,HL + SBC HL,DE + LD (TZSVC_LOADSIZE),HL ; Place max size we can load into the service loadsize field. + LD A,TZSVC_CMD_LOADFILE + JR PRCFIL2 +PRCFIL1: LD DE,(BASTXT) ; Get start of program memory. + LD (TZSVC_SAVEADDR), DE + LD HL,(PROGND) ; End of program information + SBC HL,DE ; Get size of program. + LD (TZSVC_SAVESIZE),HL ; Store into service record. + LD A,TZSVC_CMD_SAVEFILE +PRCFIL2: PUSH AF ; Save service command to execute. + ; + ; Setup the service record for the file load/save. + ; + LD A,0FFh ; Tag the filenumber as invalid. + LD (TZSVC_FILE_NO), A + LD A,(TMSTPL) + CP TZSVCFILESZ ; Check size of filename, cant be more than an MZF name of 17 chars. + JP NC,SDFNTG + LD A,TZSVC_FTYPE_CAS ; Type of file is CASsette, the K64F will know how to handle it. + LD (TZSVC_FILE_TYPE),A + POP AF + CALL SVC_CMD ; And make communications wit the I/O processor, returning with the required record. + OR A ; Zero means no physical error occurred. + JR Z, PRCFIL3 + JP SDPHYER +PRCFIL3: LD A,(TZSVCRESULT) ; Check the result from the K64F, non zero is an error. + OR A + RET Z + LD A,(TZSVCCMD) + CP TZSVC_CMD_LOADFILE + JP Z,SDLDER + JP SDSVER + + ; Command to change the Z80 CPU frequency if running with the tranZPUter upgrade. +SETFREQ: CALL POSINT ; Get frequency in KHz + PUSH HL + ; + LD (TZSVC_CPU_FREQ),DE ; Set the required frequency in the service structure. + LD A,D + CP E + JR NZ,SETFREQ1 + LD A, TZSVC_CMD_CPU_BASEFREQ ; Switch to the base frequency. + JR SETFREQ2 +SETFREQ1: LD A, TZSVC_CMD_CPU_ALTFREQ ; Switch to the alternate frequency. +SETFREQ2: CALL SVC_CMD + OR A + JR NZ,SETFREQERR + LD A,D + CP E + JR Z,SETFREQ4 ; If we are disabling the alternate cpu frequency (ie. = 0) indicate success. + LD A, TZSVC_CMD_CPU_CHGFREQ ; Switch to the base frequency. + CALL SVC_CMD + OR A + JR NZ,SETFREQERR + LD HL, (TZSVC_CPU_FREQ) ; Get the actual frequency the K64F could create. + CALL PRNTHL ; Output amount of free memory + LD HL,FREQSET ; Output the actual frequency. +SETFREQ3: CALL PRS ; Output string + POP HL + RET +SETFREQ4: LD HL,FREQDEF ; Set to default. + JR SETFREQ3 + ; +SETFREQERR: LD HL,FREQERR + JP SDERR + + + ; Method to set the file search wildcard prior to requesting a directory listing. The I/O processor applies this filter only returning directories + ; which match the wildcard, ie. A* returns directories starting A... + ; + ; Inputs: + ; HL = Pointer to BASIC input line/ + ; + ; HL and B are not preserved. + +SETWILDCARD:LD DE, TZSVCWILDC ; Location of the wildcard filter in the service record. + LD B, TZSVCWILDSZ-1 + CALL GETSTRING ; Copy the string into the service record. + RET + + ; Command to set the current working directory on the SD card. +SETDIR: LD DE, TZSVC_DIRNAME ; Location of directory name in the service record. + LD B, TZSVCDIRSZ-1 + CALL GETSTRING ; Copy the string into the service record. + RET + + ; Method to print out the filename within an SD Card header. + ; The name may not be terminated as the full 17 chars are used, so this needs + ; to be checked. + ; + ; Input: DE = Address of filename. + ; +PRTFN: PUSH BC + LD B,TZSVCLONGFILESZ ; Maximum size of filename. +PRTMSG: LD A,(DE) + INC DE + CP 000H ; If there is a valid terminator, exit. + JR Z,PRTMSGE + CP 00DH + JR Z,PRTMSGE + CALL OUTC + DJNZ PRTMSG ; Else print until 17 chars have been processed. + CALL PRNTCRLF +PRTMSGE: POP BC + RET + + ; Method to print out an SDC directory entry name. + ; + ; Input: HL = Address of filename. + ; +PRTDIR: PUSH BC + PUSH DE + PUSH HL + ; + LD A,COLW ; At the moment only cater for 40/80 columns. + CP 80 + LD H,47 + JR NZ,PRTDIR0 + LD H,93 +PRTDIR0: LD A,(LINECNT) ; Pause if we fill the screen. + LD E,A + INC E + CP H + JR NZ,PRTNOWAIT + LD E, 0 +PRTDIRWAIT: CALL GETKY + CP ' ' + JR Z,PRTNOWAIT + CP 'X' ; Exit from listing. + LD A,001H + JR Z,PRTDIR4 + JR PRTDIRWAIT +PRTNOWAIT: LD A,E + LD (LINECNT),A + POP DE + PUSH DE ; Get pointer to the file name and print. + CALL PRTFN ; Print out the filename. + LD HL, (DSPXY) + LD A,L + CP 20 + LD A,20 + JR C, PRTDIR2 + LD A,COLW ; 40 Char mode? 2 columns of filenames displayed so NL. + CP 80 + JR NZ,PRTDIR1 + LD A,L ; 80 Char mode we print 4 columns of filenames. + CP 40 + LD A,40 + JR C, PRTDIR2 + LD A,L + CP 60 + LD A,60 + JR C, PRTDIR2 + ; +PRTDIR1: CALL PRNTCRLF + JR PRTDIR3 +PRTDIR2: LD L,A + LD (DSPXY),HL +PRTDIR3: XOR A +PRTDIR4: OR A + POP HL + POP DE + POP BC + RET + + ; Method to request a sector full of directory entries from the I/O processor. + ; + ; Inputs: + ; A = Director Sector number to request (set of directory entries in 512byte blocks). + ; Outputs: + ; A = 0 - success, directory sector filled. + ; A = 255 - I/O Error. + ; A > 1 - Result from I/O processor, which is normally the error code. + ; +SVC_GETDIR: PUSH AF + LD A, TZSVC_FTYPE_ALLFMT ; Setup the filetype so we retrieve all entries in the current directory. + LD (TZSVC_FILE_TYPE),A + POP AF + LD (TZSVCDIRSEC),A ; Save the sector number into the service structure. + OR A ; Sector is 0 then setup for initial read. + LD A, TZSVC_CMD_READDIR ; Readdir command opens the directory. The default directory and wildcard have either been placed in the + JR Z,SVC_GETD1 ; buffer by earlier commands or will be defaulted by the I/O processor. + LD A, TZSVC_CMD_NEXTDIR ; Request the next directory sector. The I/O processor either gets the next block or uses the TZSVCDIRSEC value. +SVC_GETD1: CALL SVC_CMD ; And make communications wit the I/O processor, returning with the required record. + OR A + LD A,255 ; Report I/O error as 255. + RET NZ + LD A,(TZSVCRESULT) + RET ; Return status to caller, 0 = success. + + ; Method to get an SD Directory entry. + ; The I/O processor communications structure uses a 512 byte sector to pass SD data. A sector is cached and each call evaluates if the required request is in cache, if it is not, + ; a new sector is read. + ; + ; Input: D = Directory entry number to retrieve. + ; Output: HL = Address of directory entry. + ; A = 0, no errors, A > 1 error. +GETSDDIRENT:PUSH BC + PUSH DE; + ; + LD A,D + SRL A + SRL A + SRL A + SRL A ; Divide by 16 to get sector number. + LD C,A + LD A,(TZSVCDIRSEC) ; Do we have this sector in the buffer? If we do, use it. + CP C + JR Z,GETDIRSD0 + LD A,C ; Retrieve the directory sector we need. + CALL SVC_GETDIR ; Read a sector full of directory entries.. + OR A + JR NZ,DIRSDERR + ; +GETDIRSD0: POP DE + PUSH DE + LD A,D ; Retrieve the directory entry number required. + AND 00FH + LD HL,TZSVCSECTOR + JR Z,GETDIRSD2 + LD B,A + LD DE,TZSVCDIR_ENTSZ ; Directory entry size +GETDIRSD1: ADD HL,DE ; Directory entry address into HL. + DJNZ GETDIRSD1 +GETDIRSD2: POP DE + POP BC + XOR A + RET + ; +DIRSDERR: POP DE ; Clean up stack. + POP BC + LD E,IO ; ?IO Error + JP BERROR ; Yes - output "?IO Error" + + + ; Method to list the directory of the SD Card. + ; + ; This method obtains a directory listing, either the default or from the search path given and lists it out. + ; No inputs or outputs. + ; +DIRSDCARD: CALL SETWILDCARD ; Setup any wildcard filter prior to processing. + PUSH HL + LD A,1 ; Setup screen for printing, account for the title line. LINECNT is used for page pause. + LD (LINECNT),A + LD A,0FFH + LD (TZSVCDIRSEC),A ; Reset the sector buffer in memory indicator, using 0xFF will force a reread.. + ; +DIRSD0: LD D,0 ; Directory entry number + LD B,0 +DIRSD1: CALL GETSDDIRENT ; Get SD Directory entry details for directory entry number stored in D. + JR NZ,DIRSD4 +DIRSD2: LD A,(HL) + INC HL + OR A + JR Z,DIRSD4 + CALL PRTDIR ; Valid entry so print directory number and name pointed to by HL. + JR NZ,DIRSD4 +DIRSD3: INC D ; Onto next directory entry number. + DJNZ DIRSD1 +DIRSD4: POP HL + RET + + ;-------------------------------------- + ; Error jump table for TZFS. + ;-------------------------------------- +SDNONAM: LD HL,SDBADFN ; Must give a name for SD card load and save. +SDERR: CALL PRS + POP AF ; Waste return address. + JP ERRIN +SDFNTG: LD HL,SDFNTOOG + JR SDERR +SDPHYER: LD HL,SDPHYERR + JR SDERR +SDLDER: LD HL,SDLOADERR + JR SDERR +SDSVER: LD HL,SDSAVEERR + JR SDERR +SDCRER: LD HL,SDCREATER + JR SDERR +SDCLER: LD HL,SDCLOSEER + JR SDERR +SDWRER: LD HL,SDWRITEER + JR SDERR +SDOPER: LD HL,SDOPENER + JR SDERR +SDRDER: LD HL,SDREADER + JR SDERR + + ;-------------------------------------- + ; Test Message table + ;-------------------------------------- +SDBADFN: DB "Filename missing!", CR, NUL +SDFNTOOG: DB "Filename too long!", CR, NUL +SDPHYERR: DB "SD/K64F IO error!", CR, NUL +SDLOADERR: DB "File loading error!", CR, NUL +SDSAVEERR: DB "File save error!", CR, NUL +SDCREATER: DB "File create error!", CR, NUL +SDCLOSEER: DB "File close error!", CR, NUL +SDWRITEER: DB "File write error!", CR, NUL +SDOPENER: DB "File open error!", CR, NUL +SDREADER: DB "File read error!", CR, NUL +FREQERR: DB "Failed to change frequency!", CR, NUL +FREQSET: DB " KHz set.", CR, LF, NUL +FREQDEF: DB "Set to default.", CR, LF, NUL + + ;---------------------------------------- + ; End of Options1 Code - TZFS Build + ;---------------------------------------- + ENDIF ; End of optional commands for use when a tranZPUter board is present. + + ;---------------------------------------- + ; RFS (TranZPUter board) Commands. + ;---------------------------------------- +OPTIONS1C: IF BUILD_RFSTZ = 1 + + + ;-------------------------------------- + ; Error jump table for TZ RFS. + ;-------------------------------------- +RFSNONAM: LD HL,RFSBADFN ; Must give a name for SD card load and save. +RFSERR: CALL PRS + POP AF ; Waste return address. + JP ERRIN +RFSFNTG: LD HL,RFSFNTOOG + JR RFSERR +RFSLDER: LD HL,RFSLOADERR + JR RFSERR +RFSSVER: LD HL,RFSSAVEERR + JR RFSERR + + ;-------------------------------------- + ; Test Message table + ;-------------------------------------- +RFSBADFN: DB "Filename missing!", CR, NUL +RFSFNTOOG: DB "Filename too long!", CR, NUL +RFSLOADERR: DB "File loading error!", CR, NUL +RFSSAVEERR: DB "File save error!", CR, NUL +RFSMSGLOAD: DB "Loading", NUL +RFSMSGOK: DB "Saved", CR, NUL + + ;---------------------------------------- + ; End of Options1 Code - TZ RFS Build + ;---------------------------------------- + ENDIF ; End of optional commands for use when a tranZPUter board is present. + + ;---------------------------------------- + ; RFS Commands. + ;---------------------------------------- +OPTIONS2C: IF BUILD_RFS = 1 + + ; Method to list the RFS Drive directory. + ; + ; Inputs: + ; HL = Pointer to BASIC input line/ + ; + ; HL and B are not preserved. + +SDDIRCMD: LD DE, NAME ; Use the CMT name header for the string. + PUSH DE + LD B, TZSVCFILESZ-1 ; Limit string size. + CALL GETSTRING ; Copy the string into the service record. + POP DE + PUSH HL + CALL CURSOROFF + CALL NL + CALL CMT_DIR + CALL NL + CALL CURSORON + POP HL + RET + + ;---------------------------------------- + ; End of Options2 Code - RFS Build + ;---------------------------------------- + ENDIF ; End of optional commands for standard RFS. + + ;---------------------------------------- + ; MZ80A Commands. + ;---------------------------------------- +OPTIONS3C: IF BUILD_MZ80A+BUILD_RFS+BUILD_RFSTZ > 0 + + ; Method to print out the filename within an SD Card header. + ; The name may not be terminated as the full 17 chars are used, so this needs + ; to be checked. + ; + ; Input: DE = Address of filename. + ; +PRTFN: PUSH BC + LD B,TZSVCLONGFILESZ ; Maximum size of filename. +PRTMSG: LD A,(DE) + INC DE + CP 000H ; If there is a valid terminator, exit. + JR Z,PRTMSGE + CP 00DH + JR Z,PRTMSGE + CALL OUTC + DJNZ PRTMSG ; Else print until 17 chars have been processed. + CALL PRNTCRLF +PRTMSGE: POP BC + RET + + ; Method to load a cassette image (tokenised basic script). + ; +CLOAD80A: LD A,CTAPELOAD ; Set the type of operatiom into the flag var. + LD (TPFLAG),A + LD A,(HL) ; Get byte after "CLOAD" + ; CP ZTIMES ; "*" token? ("CLOAD*") + ; JP Z,ARRLD1 ; Yes - Array load + SUB ZPRINT ; "?" ("PRINT" token) Verify? + JP Z,CMTVERF ; Yes - Flag "verify" + + PUSH HL + PUSH DE + XOR A + LD DE,NAME + LD (DE),A + CALL GETSTRING ; Check for no name, load next file. + POP DE + POP HL + LD A,B + OR A + JR Z,CLOAD80A_2 + + ; CALL GETCHR ; Get next character + ; LD A,0 ; Any file will do + ; JP Z,CMTNONAM ; No name given - error. + CALL EVAL ; Evaluate expression + CALL GTFLNM ; Get file name + ; + LD HL,NAME ; Set the filename to be loaded. + LD A,(TMSTPL) + CP TZSVCFILESZ ; Check size of filename, cant be more than an MZF name of 17 chars. + JP NC,CMTFNTG + LD B,A +CLOAD80A_1: LD A,(DE) ; Copy filename into service record. + LD (HL),A + INC DE + INC HL + DJNZ CLOAD80A_1 + XOR A + LD (HL),A ; Terminate filename. + ; +CLOAD80A_2: CALL CLRPTR ; Initialise memory to NEW state ready for program load. + ; + IF BUILD_RFS+BUILD_RFSTZ > 0 + ; RFS extensions, call the RFS API to execute extended code. + LD DE,NAME + CALL CNV_ATOS ; Convert filename to Sharp ASCII + CALL CMT_RDINF + ENDIF + IF BUILD_MZ80A = 1 + CALL ?RDI + ENDIF + JP C,CMTLDER + LD A,(ATRB) + CP ATR_BASIC_MSCAS ; Verify this is a NASCOM Cassette BASIC image. + JP NZ,CMTATER + ; + LD DE,CMTMSGLOAD ; Show we are loading a program. + CALL MONPRTSTR + LD DE,NAME + CALL PRTFN + LD DE,CMTMSGLOAD2 ; Show we are loading a program. + CALL MONPRTSTR + ; + LD HL,(BASTXT) ; Get start of program memory. + LD (DTADR),HL ; Place the load address into the header to take into account different basic versions with different addresses. + ; + IF BUILD_RFS+BUILD_RFSTZ > 0 + CALL CMT_RDDATA + ENDIF + IF BUILD_MZ80A = 1 + CALL ?RDD + ENDIF + JP C,CMTLDER + ; + LD HL,(BASTXT) ; Get start of program memory. + LD BC,(SIZE) ; Get the actual load size. + ADD HL,BC ; Find the end. + XOR A + LD (HL),A ; Last two bytes are xeroed as they are for the next line number. + INC HL + LD (HL),A + INC HL + LD (PROGND),HL ; Set it as the end of program memory. + ; +CMTVERF: +CMTLOADE: LD HL,OKMSG ; "Ok" message + CALL PRS ; Output string + JP SETPTR ; Set up line pointers + + ; Method to save a cassette image (tokenised basic script). + ; +CSAVE80A: LD A,CTAPESAVE ; Set the type of operatiom into the flag var. + LD (TPFLAG),A + ; + LD B,1 ; Flag "CSAVE" + ; CP ZTIMES ; "*" token? ("CSAVE*") + ; JP Z,ARRSV1 ; Yes - Array save + CALL EVAL ; Evaluate expression + PUSH HL + CALL GTFLNM ; Get file name + ; + LD HL,NAME ; Set the filename to be loaded. + LD A,(TMSTPL) + CP TZSVCFILESZ ; Check size of filename, cant be more than an MZF name of 17 chars. + JP NC,CMTFNTG + LD B,A +CSAVE80A_1: LD A,(DE) ; Copy filename into service record. + LD (HL),A + INC DE + INC HL + DJNZ CSAVE80A_1 + XOR A + LD (HL),A ; Terminate filename. + ; + LD A,ATR_BASIC_MSCAS ; Set attribute: MS BASIC Cassette + LD (ATRB),A + LD HL,(PROGND) ; Get the actual program size. + LD BC,(BASTXT) ; Get start of program memory. + XOR A + SBC HL,BC ; Find the size. + LD (SIZE),HL ; Size of basic program. + LD (DTADR),BC ; Start address of basic program. + LD HL,0 + LD (EXADR),HL ; Exec address is zero for a basic program. + + PUSH DE + IF BUILD_RFS+BUILD_RFSTZ > 0 + LD DE,NAME + CALL CNV_ATOS ; Convert filename from ASCII to Sharp ASCII + CALL CMT_WRINF + ENDIF + IF BUILD_MZ80A = 1 + ; No filename conversion as the RFS may not be available on a standard MZ-80A, user will have to use capitals. + CALL ?WRI ; Commence header write. + ENDIF + JP C,CMTSVER + IF BUILD_RFS+BUILD_RFSTZ > 0 + CALL CMT_WRDATA + ENDIF + IF BUILD_MZ80A = 1 + CALL ?WRD ; data + ENDIF + JR C,CMTSVER + LD HL,CMTMSGOK ; 'OK!' + CALL PRS + POP DE + POP HL + RET + + ; MZ80A specific commands. +OPTIONS3B: IF BUILD_MZ80A = 1 + ENDIF + + ;-------------------------------------- + ; Error jump table for MZ80A. + ;-------------------------------------- +CMTNONAM: LD HL,CMTBADFN ; Must give a name for SD card load and save. +CMTERR: CALL PRS + POP AF ; Waste return address. + JP ERRIN +CMTFNTG: LD HL,CMTFNTOOG + JR CMTERR +CMTLDER: LD HL,CMTLOADERR + JR CMTERR +CMTATER: LD HL,CMTATTRERR + JR CMTERR +CMTSVER: LD HL,CMTSAVEERR + JR CMTERR + + ;-------------------------------------- + ; Test Message table + ;-------------------------------------- +CMTBADFN: DB "Filename missing!", CR, NUL +CMTFNTOOG: DB "Filename too long!", CR, NUL +CMTLOADERR: DB "File loading error!", CR, NUL +CMTSAVEERR: DB "File save error!", CR, NUL +CMTATTRERR: DB "Not an MS-BASIC cassette file error!", CR, NUL +CMTMSGLOAD: DB "Loading \"", NUL +CMTMSGLOAD2:DB "\"", CR, NUL +CMTMSGOK: DB "Saved", CR, NUL + + ;---------------------------------------- + ; End of Options3 Code - MZ80A Build + ;---------------------------------------- + ENDIF + + +MONITR: +MONITR2 IF BUILD_TZFS+BUILD_RFSTZ > 0 + ; Switch memory back to TZFS mode. + LD A, TZMM_TZFS + OUT (MMCFG),A + ENDIF + JP REBOOT ; Restart (Normally Monitor Start) + + ;------------------------------------------------------------------------------- + ; TIMER INTERRUPT + ; + ; This is the RTC interrupt, which interrupts every 100msec. RTC is maintained + ; by keeping an in memory count of seconds past 00:00:00 and an AMPM flag. + ;------------------------------------------------------------------------------- +TIMIN: LD (SPISRSAVE),SP ; Use a seperate stack for the interrupt as the hardware is paged in and RAM paged out. + LD SP,ISRSTACK + ; + PUSH AF ; Save used registers. + PUSH BC + PUSH DE + PUSH HL + ; +MEMSW2: IF BUILD_TZFS+BUILD_RFSTZ > 0 + LD A,TZMM_MZ700_0 ; We meed to be in memory mode 10 to process the interrupts as this allows us access to the hardware. + OUT (MMCFG),A + ENDIF + ; + ; Reset the interrupt counter. + LD HL,CONTF ; CTC Control register, set to reload the 100ms interrupt time period. + LD (HL),080H ; Select Counter 2, latch counter, read lsb first, mode 0 and binary. + PUSH HL + DEC HL + LD E,(HL) + LD D,(HL) ; Obtain the overrun count if any (due to disabled interrupts). + LD HL, 00001H ; Add full range to count to obtain the period of overrun time. + SBC HL,DE + EX DE,HL + POP HL + LD (HL),0B0H ; Select Counter 2, load lsb first, mode 0 interrupt on terminal count, binary + DEC HL + LD (HL),TMRTICKINTV + LD (HL),000H ; Another 100msec delay till next interrupt. + ; + ; Update the RTC with the time period. + LD HL,(TIMESEC) ; Lower 16bits of counter. + ADD HL,DE + LD (TIMESEC),HL + JR NC,TIMIN1 ; On overflow we increment middle 16bits. + ; + LD HL,(TIMESEC+2) + INC HL + LD (TIMESEC+2),HL + LD A,H + OR L + JR NZ,TIMIN1 ; On overflow we increment upper 16bits. + ; + LD HL,(TIMESEC+4) + INC HL + LD (TIMESEC+4),HL + + ; + ; Flash a cursor at the current XY location. + ; +TIMIN1: LD HL,FLASHCTL + BIT 7,(HL) ; Is cursor enabled? If it isnt, skip further processing. + JR Z,TIMIN3 + ; +FLSHCTL0: LD A,(KEYPC) ; Flashing component, on each timer tick, display the cursor or the original screen character. + LD C,A + XOR (HL) ; Detect a cursor change signal. + RLCA + RLCA + JR NC,TIMIN3 ; No change, skip. + + RES 6,(HL) + LD A,C ; We know there was a change, so decide what to display and write to screen. + RLCA + RLCA + LD A,(FLASH) + JR NC,FLSHCTL1 + SET 6,(HL) ; We are going to display the cursor, so save the underlying character. + LD A,(FLSDT) ; Retrieve the cursor character. +FLSHCTL1: LD HL,(DSPXYADDR) ; Load the desired cursor or character onto the screen. + LD (HL),A + + ; + ; Keyboard processing. + ; +TIMIN3: ; Perform keyboard sweep - inline to avoid overhead of a call. + ; KEYBOARD SWEEP + ; + ; EXIT B,D7=0 NO DATA + ; =1 DATA + ; D6=0 SHIFT OFF + ; =1 SHIFT ON + ; C = ROW & COLUMN + ; +SWEP: XOR A + LD (KDATW),A ; Reset key counter + LD B,0FAH ; Starting scan line, D3:0 = scan = line 10. D5:4 not used, D7=Cursor flash. + LD D,A + + ; BREAK TEST + ; BREAK ON : ZERO = 1 + ; OFF : ZERO = 0 + ; NO KEY : CY = 0 + ; KEY IN : CY = 1 + ; A D6=1: SHIFT ON + ; =0: SHIFT OFF + ; D5=1: CTRL ON + ; =0: CTRL OFF + ; D4=1: GRAPH ON + ; =0: GRAPH OFF +BREAK: LD A,0F0H + LD (KEYPA),A ; Port A scan line 0 + NOP + LD A,(KEYPB) ; Read back key data. + OR A + RLA + JR NC,BREAK3 ; CTRL/BREAK key pressed? + RRA + RRA ; Check if SHIFT key pressed/ + JR NC,BREAK1 ; SHIFT BREAK not pressed, jump. + RRA + JR NC,BREAK2 ; Check for GRAPH. + CCF + JR SWEP6 ;SWEP1 + +BREAK1: LD A,040H ; A D6=1 SHIFT ON + SCF + JR SWEP6 + +BREAK2: LD A,001H ; No keys found to be pressed on scanline 0. + LD (KDATW),A + LD A,010H ; A D4=1 GRAPH + SCF + JR SWEP6 + +BREAK3: AND 006H ; SHIFT + GRAPH + BREAK? + JR Z,SWEP1A + AND 002H ; SHIFT ? + JR Z,SWEP1 ; Z = 1 = SHIFT BREAK pressed/ + LD A,020H ; A D5=1 CTRL + SCF + JR SWEP6 + +SWEP1: LD D,088H ; Break ON + JR SWEP9 +SWEP1A: JP REBOOT ; Shift + Graph + Break ON = RESET. + ; +SWEP6: LD HL,SWPW + PUSH HL + JR NC,SWEP11 + LD D,A + AND 060H ; Shift & Ctrl =no data. + JR NZ,SWEP11 + LD A,D ; Graph Check + XOR (HL) + BIT 4,A + LD (HL),D + JR Z,SWEP0 +SWEP01: SET 7,D ; Data available, set flag. +SWEP0: DEC B + POP HL ; SWEP column work + INC HL + LD A,B + LD (KEYPA),A ; Port A (8255) D3:0 = Scan line output. + CP 0F0H + JR NZ,SWEP3 ; If we are not at scan line 0 then check for key data. + LD A,(HL) ; SWPW + CP 003H ; Have we scanned all lines, if yes then no data? + JR C,SWEP9 + LD (HL),000H ; + RES 7,D ; Reset data in as no data awailable. +SWEP9: LD B,D + JR ISRKEY0 + +SWEP11: LD (HL),000H + JR SWEP0 +SWEP3: LD A,(KEYPB) ; Port B (8255) D7:0 = Key data in for given scan line. + LD E,A + CPL + AND (HL) + LD (HL),E + PUSH HL + LD HL,KDATW + PUSH BC + LD B,008H +SWEP8: RLC E + JR C,SWEP7 + INC (HL) +SWEP7: DJNZ SWEP8 + POP BC + OR A + JR Z,SWEP0 + LD E,A +SWEP2: LD H,008H + LD A,B + DEC A ; TBL adjust + AND 00FH + RLCA + RLCA + RLCA + LD C,A + LD A,E +SWEP12: DEC H + RRCA + JR NC,SWEP12 + LD A,H + ADD A,C + LD C,A + JP SWEP01 + +ISRKEY0: LD A,B + RLCA + JP C,ISRKEY2 ; CY=1 then data available. + LD HL,KDATW + LD A,(HL) ; Is a key being held down? + OR A + JR NZ, ISRAUTORPT ; It is so process as an auto repeat key. + XOR A + LD (KEYRPT),A ; No key held then clear the auto repeat initial pause counter. + LD A,NOKEY ; No key code. +ISRKEY1: LD HL,KDATW + LD E,A + LD A,(HL) ; Current key scan line position. + INC HL + LD D,(HL) ; Previous key position. + LD (HL),A ; Previous <= current + SUB D ; Are they the same? + JR NC,ISRKEY11 + INC (HL) ; +ISRKEY11: LD A,E +ISRKEY10: CP NOKEY + JR Z,ISREXIT + LD (KEYLAST),A +ISRKEYRPT: LD A,(KEYCOUNT) ; Get current count of bytes in the keyboard buffer. + CP KEYBUFSIZE - 1 + JR NC, ISREXIT ; Keyboard buffer full, so waste character. + INC A + LD (KEYCOUNT),A + LD HL,(KEYWRITE) ; Get the write buffer pointer. + LD (HL), E ; Store the character. + INC L + LD A,L + AND KEYBUFSIZE-1 ; Circular buffer, keep boundaries. + LD L,A + LD (KEYWRITE),HL ; Store updated pointer. + ; +ISREXIT: +MEMSW3: IF BUILD_TZFS+BUILD_RFSTZ > 0 + LD A,TZMM_MZ700_2 ; Return to the full 64K memory mode. + OUT (MMCFG),A + ENDIF + ; + POP HL + POP DE + POP BC + POP AF + ; + LD SP,(SPISRSAVE) + EI + RET + + ; + ; Helper to determine if a key is being held down and autorepeat should be applied. + ; The criterion is a timer, if this expires then autorepeat is applied. + ; +ISRAUTORPT: LD A,(KEYRPT) ; Increment an initial pause counter. + INC A + CP 10 + JR C,ISRAUTO1 ; Once expired we can auto repeat the last key. + LD A,(KEYLAST) + CP 080H + JR NC,ISREXIT ; Dont auto repeat control keys. + LD E,A + JR ISRKEYRPT +ISRAUTO1: LD (KEYRPT),A + JR ISREXIT + + ; + ; Method to alternate through the 3 shift modes, CAPSLOCK=1, SHIFTLOCK=2, NO LOCK=0 + ; +LOCKTOGGLE: LD HL,FLSDT + LD A,(SFTLK) + INC A + CP 3 + JR C,LOCK0 + XOR A +LOCK0: LD (SFTLK),A + OR A + LD (HL),043H ; Thick block cursor when lower case. + JR Z,LOCK1 + CP 1 + LD (HL),03EH ; Thick underscore when CAPS lock. + JR Z,LOCK1 + LD (HL),0EFH ; Block cursor when SHIFT lock. +LOCK1: JP ISREXIT + + +ISRKEY2: RLCA + RLCA + RLCA + JP C,LOCKTOGGLE ; GRAPH key which acts as the Shift Lock. + RLCA + JP C,ISRBRK ; BREAK key. + LD H,000H + LD L,C + LD A,C + CP 038H ; TEN KEY check. + JR NC,ISRKEY6 ; Jump if TENKEY. + LD A,B + RLCA + LD B,A + LD A,(SFTLK) + OR A + LD A,B + JR Z,ISRKEY14 + RLA + CCF + RRA +ISRKEY14: RLA + RLA + JR NC,ISRKEY3 +ISRKEY15: LD DE,KTBLC +ISRKEY5: ADD HL,DE + LD A,(HL) + JP ISRKEY1 + +ISRKEY3: RRA + JR NC,ISRKEY6 + LD A,(SFTLK) + CP 1 + LD DE,KTBLCL + JR Z,ISRKEY5 + LD DE,KTBLS + JR ISRKEY5 + +ISRKEY6: LD DE,KTBL + JR ISRKEY5 +ISRKEY4: RLCA + RLCA + JR C,ISRKEY15 + LD DE,KTBL + JR ISRKEY5 + + ; Break key pressed, handled in getkey routine. +ISRBRK: LD A,(KEYLAST) + CP BREAKKEY + JP Z,ISREXIT + XOR A ; Reset the keyboard buffer. + LD (KEYCOUNT),A + LD HL,KEYBUF + LD (KEYWRITE),HL + LD (KEYREAD),HL + LD A,BREAKKEY + JP ISRKEY10 + + +KTBL: ; Strobe 0 + DB '"' + DB '!' + DB 'W' + DB 'Q' + DB 'A' + DB INSERT + DB 0 + DB 'Z' + ; Strobe 1 + DB '$' + DB '#' + DB 'R' + DB 'E' + DB 'D' + DB 'S' + DB 'X' + DB 'C' + ; Strobe 2 + DB '&' + DB '%' + DB 'Y' + DB 'T' + DB 'G' + DB 'F' + DB 'V' + DB 'B' + ; Strobe 3 + DB '(' + DB '\'' + DB 'I' + DB 'U' + DB 'J' + DB 'H' + DB 'N' + DB SPACE + ; Strobe 4 + DB '_' + DB ')' + DB 'P' + DB 'O' + DB 'L' + DB 'K' + DB '<' + DB 'M' + ; Strobe 5 + DB '~' + DB '=' + DB '{' + DB '`' + DB '*' + DB '+' + DB CURSLEFT + DB '>' + ; Strobe 6 + DB HOMEKEY + DB '|' + DB CURSRIGHT + DB CURSUP + DB CR + DB '}' + DB 0 + DB CURSUP + ; Strobe 7 + DB '8' + DB '7' + DB '5' + DB '4' + DB '2' + DB '1' + DB DBLZERO + DB '0' + ; Strobe 8 + DB '*' + DB '9' + DB '-' + DB '6' + DB 0 + DB '3' + DB 0 + DB ',' + +KTBLS: ; Strobe 0 + DB '2' + DB '1' + DB 'w' + DB 'q' + DB 'a' + DB DELETE + DB 0 + DB 'z' + ; Strobe 1 + DB '4' + DB '3' + DB 'r' + DB 'e' + DB 'd' + DB 's' + DB 'x' + DB 'c' + ; Strobe 2 + DB '6' + DB '5' + DB 'y' + DB 't' + DB 'g' + DB 'f' + DB 'v' + DB 'b' + ; Strobe 3 + DB '8' + DB '7' + DB 'i' + DB 'u' + DB 'j' + DB 'h' + DB 'n' + DB SPACE + ; Strobe 4 + DB '0' + DB '9' + DB 'p' + DB 'o' + DB 'l' + DB 'k' + DB ',' + DB 'm' + ; Strobe 5 + DB '^' + DB '-' + DB '[' + DB '@' + DB ':' + DB ';' + DB '/' + DB '.' + ; Strobe 6 + DB CLRKEY + DB '\\' + DB CURSLEFT + DB CURSDOWN + DB CR + DB ']' + DB 0 + DB '?' + +KTBLCL: ; Strobe 0 + DB '2' + DB '1' + DB 'W' + DB 'Q' + DB 'A' + DB DELETE + DB 0 + DB 'Z' + ; Strobe 1 + DB '4' + DB '3' + DB 'R' + DB 'E' + DB 'D' + DB 'S' + DB 'X' + DB 'C' + ; Strobe 2 + DB '6' + DB '5' + DB 'Y' + DB 'T' + DB 'G' + DB 'F' + DB 'V' + DB 'B' + ; Strobe 3 + DB '8' + DB '7' + DB 'I' + DB 'U' + DB 'J' + DB 'H' + DB 'N' + DB SPACE + ; Strobe 4 + DB '0' + DB '9' + DB 'P' + DB 'O' + DB 'L' + DB 'K' + DB ',' + DB 'M' + ; Strobe 5 + DB '^' + DB '-' + DB '[' + DB '@' + DB ':' + DB ';' + DB '/' + DB '.' + ; Strobe 6 + DB CLRKEY + DB '\\' + DB CURSLEFT + DB CURSDOWN + DB CR + DB ']' + DB 0 + DB '?' + +KTBLC: ; CTRL ON + ; Strobe 0 + DB NOKEY + DB NOKEY + DB CTRL_W + DB CTRL_Q + DB CTRL_A + DB NOKEY + DB 000H + DB CTRL_Z + ; Strobe 1 + DB NOKEY + DB NOKEY + DB CTRL_R + DB CTRL_E + DB CTRL_D + DB CTRL_S + DB CTRL_X + DB CTRL_C + ; Strobe 2 + DB NOKEY + DB NOKEY + DB CTRL_Y + DB CTRL_T + DB CTRL_G + DB CTRL_F + DB CTRL_V + DB CTRL_B + ; Strobe 3 + DB NOKEY + DB NOKEY + DB CTRL_I + DB CTRL_U + DB CTRL_J + DB CTRL_H + DB CTRL_N + DB NOKEY + ; Strobe 4 + DB NOKEY + DB NOKEY + DB CTRL_P + DB CTRL_O + DB CTRL_L + DB CTRL_K + DB NOKEY + DB CTRL_M + ; Strobe 5 + DB CTRL_CAPPA + DB CTRL_UNDSCR + DB ESC + DB CTRL_AT + DB NOKEY + DB NOKEY + DB NOKEY + DB NOKEY + ; Strobe 6 + DB NOKEY + DB CTRL_SLASH + DB NOKEY + DB NOKEY + DB NOKEY + DB CTRL_RB + DB NOKEY + + ;------------------------------------------------------------------------------- + ; END OF TIMER INTERRUPT + ;------------------------------------------------------------------------------- + + + ;------------------------------------------------------------------------------- + ; SERVICE COMMAND METHODS + ;------------------------------------------------------------------------------- +SVC_CMD: IF BUILD_TZFS = 1 + + ; Method to send a command to the I/O processor and verify it is being acted upon. + ; THe method, after sending the command, polls the service structure result to see if the I/O processor has updated it. If it doesnt update the result + ; then after a period of time the command is resent. After a number of retries the command aborts with error. This is needed in case of the I/O processor crashing + ; we dont want the host to lock up. + ; + ; Inputs: + ; A = Command. + ; Outputs: + ; A = 0 - Success, command being processed. + ; A = 1 - Failure, no contact with I/O processor. + ; A = 2 - Failure, no result from I/O processor, it could have crashed or SD card removed! + PUSH BC + LD (TZSVCCMD), A ; Load up the command into the service record. + LD A,TZSVC_STATUS_REQUEST + LD (TZSVCRESULT),A ; Set the service structure result to REQUEST, if this changes then the K64 is processing. + + LD BC, TZSVCWAITIORETRIES ; Safety in case the IO request wasnt seen by the I/O processor, if we havent seen a response in the service + +SVC_CMD1: PUSH BC + LD A,(TZSVCCMD) + OUT (SVCREQ),A ; Make the service request via the service request port. + + LD BC,0 +SVC_CMD2: LD A,(TZSVCRESULT) + CP TZSVC_STATUS_REQUEST ; I/O processor when it recognises the request sets the status to PROCESSING or gives a result, if this hasnt occurred the the K64F hasnt begun processing. + JR NZ, SVC_CMD3 + DEC BC + LD A,B + OR C + JR NZ, SVC_CMD2 + POP BC + DEC BC + LD A,B + OR C + JR NZ,SVC_CMD1 ; Retry sending the I/O command. + ; + PUSH DE + LD DE,SVCIOERR + CALL MONPRTSTR + POP DE + LD A,1 ; No response, error. + RET +SVC_CMD3: POP BC + ; + LD BC,TZSVCWAITCOUNT ; Number of loops to wait for a response before setting error. +SVC_CMD4: PUSH BC + LD BC,0 +SVC_CMD5: LD A,(TZSVCRESULT) + CP TZSVC_STATUS_PROCESSING ; Wait until the I/O processor sets the result, again timeout in case it locks up. + JR NZ, SVC_CMD6 + DEC BC + LD A,B + OR C + JR NZ,SVC_CMD5 + POP BC + DEC BC + LD A,B + OR C + JR NZ,SVC_CMD4 ; Retry polling for result. + ; + PUSH DE + LD DE,SVCRESPERR + CALL MONPRTSTR + POP DE + LD A,2 + RET +SVC_CMD6: XOR A ; Success. + POP BC + POP BC + RET + + ENDIF + ;------------------------------------------------------------------------------- + ; END OF SERVICE COMMAND METHODS + ;------------------------------------------------------------------------------- + + + + ;------------------------------------------------------------------------------- + ; START OF AUDIO CONTROLLER FUNCTIONALITY + ;------------------------------------------------------------------------------- + + ; Melody function. +MLDY: PUSH BC + PUSH DE + PUSH HL + LD A,002H + LD (OCTV),A + LD B,001H +MLD1: LD A,(DE) + CP 00DH + JR Z,MLD4 + CP 0C8H + JR Z,MLD4 + CP 0CFH + JR Z,MLD2 + CP 02DH + JR Z,MLD2 + CP 02BH + JR Z,MLD3 + CP 0D7H + JR Z,MLD3 + CP 023H + LD HL,MTBL + JR NZ,MLD1A + LD HL,M?TBL + INC DE +MLD1A: CALL ONPU + JR C,MLD1 + CALL RYTHM + JR C,MLD5 + CALL MLDST + LD B,C + JR MLD1 +MLD2: LD A,003H +MLD2A: LD (OCTV),A + INC DE + JR MLD1 +MLD3: LD A,001H + JR MLD2A +MLD4: CALL RYTHM +MLD5: PUSH AF + CALL MLDSP + POP AF + POP HL + POP DE + POP BC + RET + +ONPU: PUSH BC + LD B,008H + LD A,(DE) +ONP1A: CP (HL) + JR Z,ONP2 + INC HL + INC HL + INC HL + DJNZ ONP1A + SCF + INC DE + POP BC + RET + +ONP2: INC HL + PUSH DE + LD E,(HL) + INC HL + LD D,(HL) + EX DE,HL + LD A,H + OR A + JR Z,ONP2B + LD A,(OCTV) +ONP2A: DEC A + JR Z,ONP2B + ADD HL,HL + JR ONP2A +ONP2B: LD (RATIO),HL + LD HL,OCTV + LD (HL),002H + DEC HL + POP DE + INC DE + LD A,(DE) + LD B,A + AND 0F0H + CP 030H + JR Z,ONP2C + LD A,(HL) + JR ONP2D +ONP2C: INC DE + LD A,B + AND 00FH + LD (HL),A +ONP2D: LD HL,OPTBL + ADD A,L + LD L,A + LD C,(HL) + LD A,(TEMPW) + LD B,A + XOR A + JP MLDDLY + +RYTHM: LD HL,KEYPA + LD (HL),0F0H + INC HL + LD A,(HL) + AND 081H + JR NZ,L02D5 + SCF + RET + +L02D5: LD A,(SUNDG) + RRCA + JR C,L02D5 +L02DB: LD A,(SUNDG) + RRCA + JR NC,L02DB + DJNZ L02D5 + XOR A + RET + +MLDST: LD HL,(RATIO) + LD A,H + OR A + JR Z,MLDSP + PUSH DE + EX DE,HL + LD HL,CONT0 + LD (HL),E + LD (HL),D + LD A,001H + POP DE + JR L02C4 +MLDSP: LD A,034H + LD (CONTF),A + XOR A +L02C4: LD (SUNDG),A + RET + +MLDDLY: ADD A,C + DJNZ MLDDLY + POP BC + LD C,A + XOR A + RET + + +TEMPO: PUSH AF + PUSH BC + AND 00FH + LD B,A + LD A,008H + SUB B + LD (TEMPW),A + POP BC + POP AF + RET + + ; + ; Method to sound the bell, basically play a constant tone. + ; +BEL: PUSH DE + LD DE,00DB1H + CALL MLDY + POP DE + RET + + ; + ; Melody (note) lookup table. + ; +MTBL: DB 043H + DB 077H + DB 007H + DB 044H + DB 0A7H + DB 006H + DB 045H + DB 0EDH + DB 005H + DB 046H + DB 098H + DB 005H + DB 047H + DB 0FCH + DB 004H + DB 041H + DB 071H + DB 004H + DB 042H + DB 0F5H + DB 003H + DB 052H + DB 000H + DB 000H +M?TBL: DB 043H + DB 00CH + DB 007H + DB 044H + DB 047H + DB 006H + DB 045H + DB 098H + DB 005H + DB 046H + DB 048H + DB 005H + DB 047H + DB 0B4H + DB 004H + DB 041H + DB 031H + DB 004H + DB 042H + DB 0BBH + DB 003H + DB 052H + DB 000H + DB 000H + +OPTBL: DB 001H + DB 002H + DB 003H + DB 004H + DB 006H + DB 008H + DB 00CH + DB 010H + DB 018H + DB 020H + ;------------------------------------------------------------------------------- + ; END OF AUDIO CONTROLLER FUNCTIONALITY + ;------------------------------------------------------------------------------- + + + ;------------------------------------------------------------------------------- + ; START OF RTC FUNCTIONALITY (INTR HANDLER IN MAIN CBIOS) + ;------------------------------------------------------------------------------- + ; + ; BC:DE:HL contains the time in milliseconds (100msec resolution) since 01/01/1980. In IX is held the interrupt service handler routine address for the RTC. + ; HL contains lower 16 bits, DE contains middle 16 bits, BC contains upper 16bits, allows for a time from 00:00:00 to 23:59:59, for > 500000 days! + ; NB. Caller must disable interrupts before calling this method. +TIMESET: LD (TIMESEC),HL ; Load lower 16 bits. + EX DE,HL + LD (TIMESEC+2),HL ; Load middle 16 bits. + PUSH BC + POP HL + LD (TIMESEC+4),HL ; Load upper 16 bits. + ; + LD HL,CONTF + LD (HL),074H ; Set Counter 1, read/load lsb first then msb, mode 2 rate generator, binary + LD (HL),0B0H ; Set Counter 2, read/load lsb first then msb, mode 0 interrupt on terminal count, binary + DEC HL + LD DE,TMRTICKINTV ; 100Hz coming into Timer 2 from Timer 1, set divisor to set interrupts per second. + LD (HL),E ; Place current time in Counter 2 + LD (HL),D + DEC HL + LD (HL),03BH ; Place divisor in Counter 1, = 315, thus 31500/315 = 100 + LD (HL),001H + NOP + NOP + NOP + ; + LD A, 0C3H ; Install the interrupt vector for when interrupts are enabled. + LD (00038H),A + + ; Interrupt vector stored in RAM for the MZ80A (monitor ROM not writeable!!!). +TIMESET1: IF BUILD_MZ80A+BUILD_RFS > 0 + LD (01039H),IX + ENDIF +TIMESET2: IF BUILD_TZFS+BUILD_RFSTZ > 0 + LD (00039H),IX + ENDIF + RET + + ; Time Read; + ; Returns BC:DE:HL where HL is lower 16bits, DE is middle 16bits and BC is upper 16bits of milliseconds since 01/01/1980. +TIMEREAD: LD HL,(TIMESEC+4) + PUSH HL + POP BC + LD HL,(TIMESEC+2) + EX DE,HL + LD HL,(TIMESEC) + RET + ;------------------------------------------------------------------------------- + ; END OF RTC FUNCTIONALITY + ;------------------------------------------------------------------------------- + + + ;------------------------------------------------------------------------------- + ; UTILITIES + ;------------------------------------------------------------------------------- + + ; Function to print a string with control character interpretation. +MONPRTSTR: LD A,(DE) + OR A + RET Z + INC DE +MONPRTSTR2: CALL PRNT + JR MONPRTSTR + + ; Method to clear memory either to 0 or a given pattern. + ; +CLR8Z: XOR A +CLR8: LD BC,00800H +CLRMEM: PUSH DE + LD D,A +L09E8: LD (HL),D + INC HL + DEC BC + LD A,B + OR C + JR NZ,L09E8 + POP DE + RET + + ; Method to get a string parameter and copy it into the provided buffer. + ; + ; Inputs: + ; HL = Pointer to input line from BASIC. + ; DE = Pointer to Destination buffer. + ; B = Max number of characters to read. + ; Outputs: + ; DE and HL point to end of buffer and input line resepectively. + ; B = Characters copied (ie. B - input B = no characters). + ; +GETSTRING: LD C,B ; Save maximum characters allowed. + LD A,(HL) ; Skip white space before copy. + CP ' ' + JR NC, GETSTR2 + CP 00DH + JR GETSTR4 ; No directory means use the I/O set default. + INC DE + JR GETSTRING +GETSTR1: LD (DE),A ; Copy the name entered by user. Validation is done on the I/O processor, bad directory name will result in error next read/write. + INC HL + INC DE + LD A,(HL) ; Get next char and check it isnt CR, end of input line character. +GETSTR2: CP 00DH + JR Z,GETSTR4 ; Finished if we encounter CR. + CP ZTIMES + JR NZ,GETSTR3 + LD A, '*' ; BASIC has already tokenised the line so revert. +GETSTR3: DJNZ GETSTR1 ; Loop until buffer is full, ignore characters beyond buffer limit. +GETSTR4: LD A,C ; Set B = no characters copied. + SUB B + LD B,A + XOR A ; Place end of buffer terminator as I/O processor uses C strings. + LD (DE),A + RET + + + ; A function from the z88dk stdlib, a delay loop with T state accuracy. + ; + ; enter : hl = tstates >= 141 + ; uses : af, bc, hl +T_DELAY: LD BC,-141 + ADD HL,BC + LD BC,-23 +TDELAYLOOP: ADD HL,BC + JR C, TDELAYLOOP + LD A,L + ADD A,15 + JR NC, TDELAYG0 + CP 8 + JR C, TDELAYG1 + OR 0 +TDELAYG0: INC HL +TDELAYG1: RRA + JR C, TDELAYB0 + NOP +TDELAYB0: RRA + JR NC, TDELAYB1 + OR 0 +TDELAYB1: RRA + RET NC + RET + + ; Method to multiply a 16bit number by another 16 bit number to arrive at a 32bit result. + ; Input: DE = Factor 1 + ; BC = Factor 2 + ; Output:DEHL = 32bit Product + ; +MULT16X16: LD HL,0 + LD A,16 +MULT16X1: ADD HL,HL + RL E + RL D + JR NC,$+6 + ADD HL,BC + JR NC,$+3 + INC DE + DEC A + JR NZ,MULT16X1 + RET + + ; Method to add a 16bit number to a 32bit number to obtain a 32bit product. + ; Input: DEHL = 32bit Addend + ; BC = 16bit Addend + ; Output:DEHL = 32bit sum. + ; +ADD3216: ADD HL,BC + EX DE,HL + LD BC,0 + ADC HL,BC + EX DE,HL + RET + + ;------------------------------------------------------------------------------- + ; END OF UTILITIES + ;------------------------------------------------------------------------------- + + + ;------------------------------------------------------------------------------- + ; START OF KEYBOARD FUNCTIONALITY (INTR HANDLER SEPERATE IN CBIOS) + ;------------------------------------------------------------------------------- + +MODE: LD HL,KEYPF + LD (HL),08AH + LD (HL),007H ; Set Motor to Off. + LD (HL),004H ; Disable interrupts by setting INTMSK to 0. + LD (HL),001H ; Set VGATE to 1. + RET + + ; Method to check if a key has been pressed and stored in buffer.. +CHKKY: CALL CURSORON + LD A, (KEYCOUNT) + OR A + JR Z,CHKKY2 + LD A,0FFH + JR CHKKY3 +CHKKY2: XOR A +CHKKY3: CALL CURSOROFF + OR A + RET + +GETKY: CALL CURSORON + PUSH HL + LD A,(KEYCOUNT) + OR A + JR Z,GETKY2 +GETKY1: DI ; Disable interrupts, we dont want a race state occurring. + LD A,(KEYCOUNT) + DEC A ; Take 1 off the total count as we are reading a character out of the buffer. + LD (KEYCOUNT),A + LD HL,(KEYREAD) ; Get the position in the buffer where the next available character resides. + LD A,(HL) ; Read the character and save. + PUSH AF + INC L ; Update the read pointer and save. + LD A,L + AND KEYBUFSIZE-1 + LD L,A + LD (KEYREAD),HL + POP AF + EI ; Interrupts back on so keys and RTC are actioned. + JR PRCKEY ; Process the key, action any non ASCII keys. + ; +GETKY2: LD A,(KEYCOUNT) ; No key available so loop until one is. + OR A + JR Z,GETKY2 + JR GETKY1 + ; +PRCKEY: CP CR ; CR + JR NZ,PRCKY3 + JR PRCKYE +PRCKY3: CP HOMEKEY ; HOME + JR NZ,PRCKY4 + JR GETKY2 +PRCKY4: CP CLRKEY ; CLR + JR NZ,PRCKY5 + JR GETKY2 +PRCKY5: CP INSERT ; INSERT + JR NZ,PRCKY6 + JR GETKY2 +PRCKY6: CP DBLZERO ; 00 + JR NZ,PRCKY7 + LD A,'0' + LD (KEYBUF),A ; Place a character into the keybuffer so we double up on 0 + JR PRCKYX +PRCKY7: CP BREAKKEY ; Break key processing. + JR NZ,PRCKY8 + +PRCKY8: +PRCKYX: +PRCKYE: + POP HL + CALL CURSOROFF + RET + + ;------------------------------------------------------------------------------- + ; END OF KEYBOARD FUNCTIONALITY + ;------------------------------------------------------------------------------- + + + ;------------------------------------------------------------------------------- + ; START OF SCREEN FUNCTIONALITY + ;------------------------------------------------------------------------------- + + ; CR PAGE MODE1 +.CR: CALL .MANG + RRCA + JP NC,CURS2 + LD L,000H + INC H + CP ROW - 1 ; End of line? + JR Z,.CP1 + INC H + JP CURS1 + +.CP1: LD (DSPXY),HL + + ; SCROLLER +.SCROL: LD BC,SCRNSZ - COLW ; Scroll COLW -1 lines + LD DE,SCRN ; Start of the screen. + LD HL,SCRN + COLW ; Start of screen + 1 line. + LDIR + EX DE,HL + LD B,COLW ; Clear last line at bottom of screen. + CALL CLER + LD BC,0001AH + LD DE,MANG + LD HL,MANG + 1 + LDIR + LD (HL),000H + LD A,(MANG) + OR A + JP Z,RSTR + LD HL,DSPXY + 1 + DEC (HL) + JR .SCROL + +DPCT: PUSH AF ; Display control, character is mapped to a function call. + PUSH BC + PUSH DE + PUSH HL + LD B,A + AND 0F0H + CP 0C0H + JP NZ,RSTR + XOR B + RLCA + LD C,A + LD B,000H + LD HL,.CTBL +DPCT1: ADD HL,BC + LD E,(HL) + INC HL + LD D,(HL) + EX DE,HL + JP (HL) + + +PRT: LD A,C + CALL ADCN + LD C,A + AND 0F0H + CP 0F0H + RET Z + + CP 0C0H + LD A,C + JR NZ,PRNT3 +PRNT5: CALL DPCT + CP 0C3H + JR Z,PRNT4 + CP 0C5H + JR Z,PRNT2 + CP 0CDH ; CR + JR Z,PRNT2 + CP 0C6H + RET NZ + +PRNT2: XOR A +PRNT2A: LD (DPRNT),A + RET + +PRNT3: CALL DSP +PRNT4: LD A,(DPRNT) + INC A + CP COLW*2 ; 050H + JR C,PRNT4A + SUB COLW*2 ; 050H +PRNT4A: JR PRNT2A + +NL: LD A,(DPRNT) + OR A + RET Z + +LTNL: LD A,0CDH + JR PRNT5 + +PRTT: CALL PRTS + LD A,(DPRNT) + OR A + RET Z + +L098C: SUB 00AH + JR C,PRTT + JR NZ,L098C + RET + + ; Delete a character on screen. +DELETECHR: LD A,0C7H + CALL DPCT + JP PRNT1 + +NEWLINE: CALL NL + JP PRNT1 + + ; + ; Function to disable the cursor display. + ; +CURSOROFF: PUSH HL + DI + LD HL,FLASHCTL ; Indicate cursor is now off. + RES 7,(HL) + CALL CURSRSTR ; Restore character under the cursor. + EI + POP HL + RET + + ; + ; Function to enable the cursor display. + ; +CURSORON: PUSH HL + DI + CALL DSPXYTOADDR ; Update the screen address for where the cursor should appear. + LD HL,FLASHCTL ; Indicate cursor is now on. + SET 7,(HL) + EI + POP HL + RET + + ; + ; Function to restore the character beneath the cursor iff the cursor is being dislayed. + ; +CURSRSTR: PUSH HL + PUSH AF + LD HL,FLASHCTL ; Check to see if there is a cursor at the current screen location. + BIT 6,(HL) + JR Z,CURSRSTR1 + RES 6,(HL) + LD HL,(DSPXYADDR) ; There is so we must restore the original character before further processing. + LD A,(FLASH) + LD (HL),A +CURSRSTR1: POP AF + POP HL + RET + + ; + ; Function to convert XY co-ordinates to a physical screen location and save. + ; +DSPXYTOADDR:PUSH HL + PUSH DE + PUSH BC + LD BC,(DSPXY) ; Calculate the new cursor position based on the XY coordinates. + LD DE,COLW + LD HL,SCRN - COLW +DSPXYTOA1: ADD HL,DE + DEC B + JP P,DSPXYTOA1 + LD B,000H + ADD HL,BC + RES 3,H + LD (DSPXYADDR),HL ; Store the new address. + LD A,(HL) ; Store the new character. + LD (FLASH),A +DSPXYTOA2: POP BC + POP DE + POP HL + RET + + ; + ; Function to print a space. + ; +PRTS: LD A,020H + + ; Function to print a character to the screen. If the character is a control code it is processed as necessary + ; otherwise the character is converted from ASCII display and displayed. + ; +PRNT: CALL CURSOROFF ; Disable the cursor before printing. + DI + ; + LD (SPISRSAVE),SP ; Share the interrupt stack for banked access as the BASIC stack goes out of scope. + LD SP,ISRSTACK ; Interrupts are disabled so we can safely use this stack. + ; +MEMSW4: IF BUILD_TZFS+BUILD_RFSTZ > 0 + PUSH AF + LD A,TZMM_MZ700_0 ; Enable access to the hardware by paging out the upper bank. + OUT (MMCFG),A + POP AF + ENDIF + ; + CP 00DH + JR Z,NEWLINE + CP 00AH + JR Z,NEWLINE + CP 07FH + JP Z,DELETECHR + CP BACKS + JP Z,DELETECHR + PUSH BC + LD C,A + LD B,A + CALL PRT + LD A,B + POP BC +PRNT1: CALL DSPXYTOADDR + ; +MEMSW5: IF BUILD_TZFS+BUILD_RFSTZ > 0 + LD A,TZMM_MZ700_2 ; Enable access to the hardware by paging out the upper bank. + OUT (MMCFG),A + ENDIF + ; + LD SP,(SPISRSAVE) ; Restore the BASIC stack to exit. + EI + RET + + ; A print string method but without memory mode change, for use when the hardware is already switched in and doesnt want to be changed. + ; +PRNTSTR: LD A,(DE) + OR A + JR Z,PRNTSTR6 + INC DE + ; + CALL CURSOROFF ; Turn cursor off for any printing. + CP 00DH + JR NZ,PRNTSTR2 +PRNTSTR1: LD A,(DPRNT) + OR A + JR Z,PRNTSTR5 + LD A,0CDH + CALL DPCT + JR PRNTSTR5 +PRNTSTR2: CP 00AH + JR Z,PRNTSTR1 + CP 07FH + JR NZ,PRNTSTR4 +PRNTSTR3: LD A,0C7H + CALL DPCT + JR PRNTSTR5 +PRNTSTR4: CP BACKS + JR Z,PRNTSTR3 + PUSH BC + LD C,A + LD B,A + CALL PRT + LD A,B + POP BC +PRNTSTR5: CALL DSPXYTOADDR + JR PRNTSTR +PRNTSTR6: RET + + ; + ; Function to print out the contents of HL as 4 digit Hexadecimal. + ; +PRTHL: LD A,H + CALL PRTHX + LD A,L + JR PRTHX + RET + + ; + ; Function to print out the contents of A as 2 digit Hexadecimal + ; +PRTHX: PUSH AF + RRCA + RRCA + RRCA + RRCA + CALL ASCII + CALL PRNT + POP AF + CALL ASCII + JP PRNT + +ASCII: AND 00FH + CP 00AH + JR C,NOADD + ADD A,007H +NOADD: ADD A,030H + RET + +;CLR8Z: XOR A +; LD BC,00800H +; PUSH DE +; LD D,A +;L09E8: LD (HL),D +; INC HL +; DEC BC +; LD A,B +; OR C +; JR NZ,L09E8 +; POP DE +; RET + +REV: LD HL,REVFLG + LD A,(HL) + OR A + CPL + LD (HL),A + JR Z,REV1 + LD A,(INVDSP) + JR REV2 +REV1: LD A,(NRMDSP) +REV2: JP RSTR + +.MANG: LD HL,MANG +.MANG2: LD A,(DSPXY + 1) + ADD A,L + LD L,A + LD A,(HL) + INC HL + RL (HL) + OR (HL) + RR (HL) + RRCA + EX DE,HL + LD HL,(DSPXY) + RET + +L09C7: PUSH DE + PUSH HL + LD HL,PBIAS + XOR A + RLD + LD D,A + LD E,(HL) + RRD + XOR A + RR D + RR E + LD HL,SCRN + ADD HL,DE + LD (PAGETP),HL + POP HL + POP DE + RET + +DSP: PUSH AF + PUSH BC + PUSH DE + PUSH HL + LD B,A + CALL PONT + LD (HL),B + LD HL,(DSPXY) + LD A,L +DSP01: CP COLW - 1 ; End of line. + JP NZ,CURSR + CALL .MANG + JR C,CURSR +.DSP03: EX DE,HL + LD (HL),001H + INC HL + LD (HL),000H + JP CURSR + +CURSD: LD HL,(DSPXY) + LD A,H + CP ROW - 1 + JR Z,CURS4 + INC H +CURS1: ;CALL MGP.I +CURS3: LD (DSPXY),HL + JR RSTR + +CURSU: LD HL,(DSPXY) + LD A,H + OR A + JR Z,CURS5 + DEC H +CURSU1: JR CURS3 + +CURSR: LD HL,(DSPXY) + LD A,L + CP COLW - 1 ; End of line + JR NC,CURS2 + INC L + JR CURS3 +CURS2: LD L,000H + INC H + LD A,H + CP ROW + JR C,CURS1 + LD H,ROW - 1 + LD (DSPXY),HL +CURS4: JP .SCROL + +CURSL: LD HL,(DSPXY) + LD A,L + OR A + JR Z,CURS5A + DEC L + JR CURS3 +CURS5A: LD L,COLW - 1 ; End of line + DEC H + JP P,CURSU1 + LD H,000H + LD (DSPXY),HL +CURS5: JR RSTR + +CLRS: LD HL,MANG + LD B,01BH + CALL CLER + LD HL,SCRN + ;PUSH HL + CALL CLR8Z + ;POP HL + IF BUILD_80C = 0 + LD A,071H ; Black background, white characters. Bit 7 is clear as a write to bit 7 @ DFFFH selects 40Char mode. + ELSE + LD A,071H ; Blue background, white characters in colour mode. Bit 7 is set as a write to bit 7 @ DFFFH selects 80Char mode. + ENDIF + CALL CLR8 ; D800H-DFFFH CLEAR +CLRS1: LD A,(SCLDSP) +HOM0: LD HL,00000H + JP CURS3 + +RSTR: POP HL +RSTR1: POP DE + POP BC + POP AF + RET + +DEL: LD HL,(DSPXY) + LD A,H + OR L + JR Z,RSTR + LD A,L + OR A + JR NZ,DEL1 + CALL .MANG + JR C,DEL1 + CALL PONT + DEC HL + LD (HL),000H + JR CURSL +DEL1: CALL .MANG + RRCA + LD A,COLW + JR NC,L0F13 + RLCA +L0F13: SUB L + LD B,A + CALL PONT + PUSH HL + POP DE + DEC DE + SET 4,D +DEL2: RES 3,H + RES 3,D + LD A,(HL) + LD (DE),A + INC HL + INC DE + DJNZ DEL2 + DEC HL + LD (HL),000H + JP CURSL + +INST: CALL .MANG + RRCA + LD L,COLW - 1 ; End of line + LD A,L + JR NC,INST1A + INC H +INST1A: CALL PNT1 + PUSH HL + LD HL,(DSPXY) + JR NC,INST2 + LD A,(COLW*2)-1 ; 04FH +INST2: SUB L + LD B,A + POP DE + LD A,(DE) + OR A + JR NZ,RSTR + CALL PONT + LD A,(HL) + LD (HL),000H +INST1: INC HL + RES 3,H + LD E,(HL) + LD (HL),A + LD A,E + DJNZ INST1 + JR RSTR + +PONT: LD HL,(DSPXY) +PNT1: PUSH AF + PUSH BC + PUSH DE + PUSH HL + POP BC + LD DE,COLW + LD HL,SCRN - COLW +PNT2: ADD HL,DE + DEC B + JP P,PNT2 + LD B,000H + ADD HL,BC + RES 3,H + POP DE + POP BC + POP AF + RET + +CLER: XOR A + JR DINT +CLRFF: LD A,0FFH +DINT: LD (HL),A + INC HL + DJNZ DINT + RET + +ADCN: PUSH BC + PUSH HL + LD HL,ATBL ;00AB5H + LD C,A + LD B,000H + ADD HL,BC + LD A,(HL) + JR DACN3 + +DACN: PUSH BC + PUSH HL + PUSH DE + LD HL,ATBL + LD D,H + LD E,L + LD BC,00100H + CPIR + JR Z,DACN1 + LD A,0F0H +DACN2: POP DE +DACN3: POP HL + POP BC + RET + +DACN1: OR A + DEC HL + SBC HL,DE + LD A,L + JR DACN2 + + ; CTBL PAGE MODE1 +.CTBL: DW .SCROL + DW CURSD + DW CURSU + DW CURSR + DW CURSL + DW HOM0 + DW CLRS + DW DEL + DW INST + DW RSTR + DW RSTR + DW RSTR + DW REV + DW .CR + DW RSTR + DW RSTR + +; ASCII TO DISPLAY CODE TABLE +ATBL: DB 0CCH ; NUL '\0' (null character) + DB 0E0H ; SOH (start of heading) + DB 0F2H ; STX (start of text) + DB 0F3H ; ETX (end of text) + DB 0CEH ; EOT (end of transmission) + DB 0CFH ; ENQ (enquiry) + DB 0F6H ; ACK (acknowledge) + DB 0F7H ; BEL '\a' (bell) + DB 0F8H ; BS '\b' (backspace) + DB 0F9H ; HT '\t' (horizontal tab) + DB 0FAH ; LF '\n' (new line) + DB 0FBH ; VT '\v' (vertical tab) + DB 0FCH ; FF '\f' (form feed) + DB 0FDH ; CR '\r' (carriage ret) + DB 0FEH ; SO (shift out) + DB 0FFH ; SI (shift in) + DB 0E1H ; DLE (data link escape) + DB 0C1H ; DC1 (device control 1) + DB 0C2H ; DC2 (device control 2) + DB 0C3H ; DC3 (device control 3) + DB 0C4H ; DC4 (device control 4) + DB 0C5H ; NAK (negative ack.) + DB 0C6H ; SYN (synchronous idle) + DB 0E2H ; ETB (end of trans. blk) + DB 0E3H ; CAN (cancel) + DB 0E4H ; EM (end of medium) + DB 0E5H ; SUB (substitute) + DB 0E6H ; ESC (escape) + DB 0EBH ; FS (file separator) + DB 0EEH ; GS (group separator) + DB 0EFH ; RS (record separator) + DB 0F4H ; US (unit separator) + DB 000H ; SPACE + DB 061H ; ! + DB 062H ; " + DB 063H ; # + DB 064H ; $ + DB 065H ; % + DB 066H ; & + DB 067H ; ' + DB 068H ; ( + DB 069H ; ) + DB 06BH ; * + DB 06AH ; + + DB 02FH ; , + DB 02AH ; - + DB 02EH ; . + DB 02DH ; / + DB 020H ; 0 + DB 021H ; 1 + DB 022H ; 2 + DB 023H ; 3 + DB 024H ; 4 + DB 025H ; 5 + DB 026H ; 6 + DB 027H ; 7 + DB 028H ; 8 + DB 029H ; 9 + DB 04FH ; : + DB 02CH ; ; + DB 051H ; < + DB 02BH ; = + DB 057H ; > + DB 049H ; ? + DB 055H ; @ + DB 001H ; A + DB 002H ; B + DB 003H ; C + DB 004H ; D + DB 005H ; E + DB 006H ; F + DB 007H ; G + DB 008H ; H + DB 009H ; I + DB 00AH ; J + DB 00BH ; K + DB 00CH ; L + DB 00DH ; M + DB 00EH ; N + DB 00FH ; O + DB 010H ; P + DB 011H ; Q + DB 012H ; R + DB 013H ; S + DB 014H ; T + DB 015H ; U + DB 016H ; V + DB 017H ; W + DB 018H ; X + DB 019H ; Y + DB 01AH ; Z + DB 052H ; [ + DB 059H ; \ '\\' + DB 054H ; ] + DB 0BEH ; ^ + DB 03CH ; _ + DB 0C7H ; ` + DB 081H ; a + DB 082H ; b + DB 083H ; c + DB 084H ; d + DB 085H ; e + DB 086H ; f + DB 087H ; g + DB 088H ; h + DB 089H ; i + DB 08AH ; j + DB 08BH ; k + DB 08CH ; l + DB 08DH ; m + DB 08EH ; n + DB 08FH ; o + DB 090H ; p + DB 091H ; q + DB 092H ; r + DB 093H ; s + DB 094H ; t + DB 095H ; u + DB 096H ; v + DB 097H ; w + DB 098H ; x + DB 099H ; y + DB 09AH ; z + DB 0BCH ; { + DB 080H ; | + DB 040H ; } + DB 0A5H ; ~ + DB 0C0H ; DEL + DB 040H + DB 0BDH + DB 09DH + DB 0B1H + DB 0B5H + DB 0B9H + DB 0B4H + DB 09EH + DB 0B2H + DB 0B6H + DB 0BAH + DB 0BEH + DB 09FH + DB 0B3H + DB 0B7H + DB 0BBH + DB 0BFH + DB 0A3H + DB 085H + DB 0A4H + DB 0A5H + DB 0A6H + DB 094H + DB 087H + DB 088H + DB 09CH + DB 082H + DB 098H + DB 084H + DB 092H + DB 090H + DB 083H + DB 091H + DB 081H + DB 09AH + DB 097H + DB 093H + DB 095H + DB 089H + DB 0A1H + DB 0AFH + DB 08BH + DB 086H + DB 096H + DB 0A2H + DB 0ABH + DB 0AAH + DB 08AH + DB 08EH + DB 0B0H + DB 0ADH + DB 08DH + DB 0A7H + DB 0A8H + DB 0A9H + DB 08FH + DB 08CH + DB 0AEH + DB 0ACH + DB 09BH + DB 0A0H + DB 099H + DB 0BCH + DB 0B8H + DB 080H + DB 03BH + DB 03AH + DB 070H + DB 03CH + DB 071H + DB 05AH + DB 03DH + DB 043H + DB 056H + DB 03FH + DB 01EH + DB 04AH + DB 01CH + DB 05DH + DB 03EH + DB 05CH + DB 01FH + DB 05FH + DB 05EH + DB 037H + DB 07BH + DB 07FH + DB 036H + DB 07AH + DB 07EH + DB 033H + DB 04BH + DB 04CH + DB 01DH + DB 06CH + DB 05BH + DB 078H + DB 041H + DB 035H + DB 034H + DB 074H + DB 030H + DB 038H + DB 075H + DB 039H + DB 04DH + DB 06FH + DB 06EH + DB 032H + DB 077H + DB 076H + DB 072H + DB 073H + DB 047H + DB 07CH + DB 053H + DB 031H + DB 04EH + DB 06DH + DB 048H + DB 046H + DB 07DH + DB 044H + DB 01BH + DB 058H + DB 079H + DB 042H + DB 060H + DB 0FDH + DB 0CBH + DB 000H + DB 01EH + ;------------------------------------------------------------------------------- + ; END OF SCREEN FUNCTIONALITY + ;------------------------------------------------------------------------------- + + ;------------------------------------------------------------------------------- + ; CMT UTILITIES + ;------------------------------------------------------------------------------- +?WRI: PUSH DE + PUSH BC + PUSH HL + LD D,0D7H + LD E,0CCH + LD HL,IBUFE + LD BC,00080H +WRI1: CALL CKSUM + CALL MOTOR + JR C,CMIWRI2 + LD A,E + CP 0CCH + JR NZ,CMIWRI1 + CALL NL + PUSH DE + LD DE,MSGWRITING ; Writing Message + CALL MONPRTSTR + LD DE,NAME + CALL MONPRTSTR + LD DE,MSGWRITING2 + CALL MONPRTSTR + POP DE +CMIWRI1: DI + CALL GAP + CALL WTAPE +CMIWRI2: JP RET2 + + +?WRD: DI + PUSH DE + PUSH BC + PUSH HL + LD D,0D7H + LD E,053H + LD BC,(SIZE) + LD HL,(DTADR) + LD A,B + OR C + JR Z,WTAP3 + JR WRI1 + +WTAPE: PUSH DE + PUSH BC + PUSH HL + LD D,002H + LD A,0F0H + LD (KEYPA),A +WTAP1: LD A,(HL) + CALL WBYTE + LD A,(KEYPB) + AND 081H + JP NZ,WTAP2 + SCF + JR WTAP3 +WTAP2: INC HL + DEC BC + LD A,B + OR C + JP NZ,WTAP1 + LD HL,(SUMDT) + LD A,H + CALL WBYTE + LD A,L + CALL WBYTE + CALL LONG + DEC D + JP NZ,WTAP4 + OR A + JP WTAP3 + +WTAP4: LD B,000H +WTAP5: CALL SHORT + DEC B + JP NZ,WTAP5 + POP HL + POP BC + PUSH BC + PUSH HL + JP WTAP1 +WTAP3: POP HL + POP BC + POP DE + RET + +?RDI: PUSH DE + PUSH BC + PUSH HL + LD D,0D2H + LD E,0CCH + LD BC,00080H + LD HL,IBUFE +RD1: DI +MEMSWRT0: IF BUILD_TZFS+BUILD_RFSTZ > 0 + LD (SPISRSAVE),SP ; Share the interrupt stack whilst accessing hardware as the BASIC stack goes out of scope. + LD SP,ISRSTACK ; Interrupts are disabled so we can safely use this stack. + LD A,TZMM_MZ700_0 ; We meed to be in memory mode 10 to access the tape hardware. + OUT (MMCFG),A + ENDIF + ; + CALL MOTOR + JP C,RTP6 + DI + CALL TMARK + JP C,RTP6 + CALL RTAPE + JP RET2 + +?RDD: PUSH DE + PUSH BC + PUSH HL + LD D,0D2H + LD E,053H + LD BC,(SIZE) + LD HL,(DTADR) + LD A,B + OR C + JP Z,RET2 + JR RD1 + +RTAPE: PUSH DE + PUSH BC + PUSH HL + LD H,002H +RTP1: LD BC,KEYPB + LD DE,KEYPC +RTP2: CALL EDGE + JP C,RTP6 + CALL DLY3 + LD A,(DE) + AND 020H + JP Z,RTP2 + LD D,H + LD HL,00000H + LD (SUMDT),HL + POP HL + POP BC + PUSH BC + PUSH HL +RTP3: CALL RBYTE + JP C,RTP6 + ; For TZFS/RFS page in top bank of memory for potential data store. +MEMSWRT1: IF BUILD_TZFS+BUILD_RFSTZ > 0 + EX AF,AF' + LD A,TZMM_MZ700_2 + OUT (MMCFG),A + EX AF,AF' + LD (HL),A ; Save the byte just read once memory has been paged in. + LD A,TZMM_MZ700_0 + OUT (MMCFG),A + ELSE + LD (HL),A ; Save the byte just read. + ENDIF + + INC HL + DEC BC + LD A,B + OR C + JP NZ,RTP3 + LD HL,(SUMDT) + CALL RBYTE + JP C,RTP6 + LD E,A + CALL RBYTE + JP C,RTP6 + CP L + JP NZ,RTP5 + LD A,E + CP H + JP NZ,RTP5 +RTP8: XOR A +RET2: CALL MSTOP +MEMSWRT4: IF BUILD_TZFS+BUILD_RFSTZ > 0 + EX AF,AF' + LD A,TZMM_MZ700_2 ; Return to the full 64K memory mode. + OUT (MMCFG),A + EX AF,AF' + LD SP,(SPISRSAVE) ; Restore the BASIC stack to exit. + ENDIF + ; + POP HL + POP BC + POP DE + PUSH AF + EI + POP AF + RET + +RTP5: DEC D + JR Z,RTP7 + LD H,D + CALL GAPCK + JR RTP1 +RTP7: LD A,001H + JR RTP9 +RTP6: LD A,002H +RTP9: SCF + JR RET2 + + +?VRFY: DI + PUSH DE + PUSH BC + PUSH HL + LD BC,(SIZE) + LD HL,(DTADR) + LD D,0D2H + LD E,053H + LD A,B + OR C + JR Z,RET2 + CALL CKSUM + CALL MOTOR + JR C,RTP6 + CALL TMARK + JP C,RTP6 + CALL TVRFY + JR RET2 + +TVRFY: PUSH DE + PUSH BC + PUSH HL + LD H,002H +TVF1: LD BC,KEYPB + LD DE,KEYPC +TVF2: CALL EDGE + JP C,RTP6 + CALL DLY3 + LD A,(DE) + AND 020H + JP Z,TVF2 + LD D,H + POP HL + POP BC + PUSH BC + PUSH HL +TVF3: CALL RBYTE + JP C,RTP6 + CP (HL) + JP NZ,RTP7 + INC HL + DEC BC + LD A,B + OR C + JP NZ,TVF3 + LD HL,(CSMDT) + CALL RBYTE + CP H + JR NZ,RTP7 + CALL RBYTE + CP L + JR NZ,RTP7 + DEC D + JP Z,RTP8 + LD H,D + JR TVF1 + +EDGE: LD A,0F0H + LD (KEYPA),A + NOP +EDG1: LD A,(BC) + AND 081H + JP NZ,EDG1A + SCF + RET +EDG1A: LD A,(DE) + AND 020H + JP NZ,EDG1 +EDG2: LD A,(BC) + AND 081H + JP NZ,EDG3 + SCF + RET +EDG3: LD A,(DE) + AND 020H + JP Z,EDG2 + RET + +RBYTE: PUSH BC + PUSH DE + PUSH HL + LD HL,00800H + LD BC,KEYPB + LD DE,KEYPC +RBY1: CALL EDGE + JP C,RBY3 + CALL DLY3 + LD A,(DE) + AND 020H + JP Z,RBY2 + PUSH HL + LD HL,(SUMDT) + INC HL + LD (SUMDT),HL + POP HL + SCF +RBY2: LD A,L + RLA + LD L,A + DEC H + JP NZ,RBY1 + CALL EDGE + LD A,L +RBY3: POP HL + POP DE + POP BC + RET + +TMARK: CALL GAPCK + PUSH BC + PUSH DE + PUSH HL + LD HL,02828H ; 40 short and 40 long gap pulses + LD A,E + CP 0CCH + JP Z,TM0 + LD HL,01414H ; 20 short and 20 long tape mark pulses +TM0: LD (TMCNT),HL + LD BC,KEYPB + LD DE,KEYPC +TM1: LD HL,(TMCNT) +TM2: CALL EDGE + JP C,RET3 + CALL DLY3 + LD A,(DE) + AND 020H + JP Z,TM1 + DEC H + JP NZ,TM2 +TM3: CALL EDGE + JP C,RET3 + CALL DLY3 + LD A,(DE) + AND 020H + JP NZ,TM1 + DEC L + JP NZ,TM3 + CALL EDGE +RET3: +TM4: POP HL + POP DE + POP BC + RET + +MOTOR: PUSH BC + PUSH DE + PUSH HL + LD B,00AH +MOT1: LD A,(KEYPC) + AND 010H + JR Z,MOT4 +MOT2: LD B,0A6H +MOT3: CALL DLY12 + DJNZ MOT3 + XOR A +MOT7: JR RET3 +MOT4: LD A,006H + LD HL,KEYPF + LD (HL),A + INC A + LD (HL),A + DJNZ MOT1 + LD A,D + CP 0D7H + JR Z,MOT8 + LD DE,MSGPLAY + JR MOT9 +MOT8: LD DE,MSGRECORD ; RECORD message. +MOT9: CALL PRNTSTR +MOT5: LD A,(KEYPC) + AND 010H + JR NZ,MOT2 + ; CALL ?BRK + ; JR NZ,MOT5 + ; BREAK KEY CHECK HERE + JR MOT5 + +MSTOP: PUSH AF + PUSH BC + PUSH DE + LD B,00AH +MST1: LD A,(KEYPC) + AND 010H + JR Z,MST3 +MST2: LD A,006H + LD (KEYPF),A + INC A + LD (KEYPF),A + DJNZ MST1 +MST3: JP RSTR1 + +CKSUM: PUSH BC + PUSH DE + PUSH HL + LD DE,00000H +CKS1: LD A,B + OR C + JR NZ,CKS2 + EX DE,HL + LD (SUMDT),HL + LD (CSMDT),HL + POP HL + POP DE + POP BC + RET + +CKS2: LD A,(HL) + PUSH BC + LD B,008H +CKS3: RLCA + JR NC,CKS4 + INC DE +CKS4: DJNZ CKS3 + POP BC + INC HL + DEC BC + JR CKS1 + +DLY1: LD A,00EH +DLY1A: DEC A + JP NZ,DLY1A + RET + +DLY2: LD A,00DH +DLY2A: DEC A + JP NZ,DLY2A + RET + +DLY3: NEG + NEG + LD A,02AH + JP DLY2A + +WBYTE: PUSH BC + LD B,008H + CALL LONG +WBY1: RLCA + CALL C,LONG + CALL NC,SHORT + DEC B + JP NZ,WBY1 + POP BC + RET + +GAP: PUSH BC + PUSH DE + LD A,E + LD BC,055F0H + LD DE,02828H + CP 0CCH + JP Z,GAP1 + LD BC,02AF8H + LD DE,01414H +GAP1: CALL SHORT + DEC BC + LD A,B + OR C + JR NZ,GAP1 +GAP2: CALL LONG + DEC D + JR NZ,GAP2 +GAP3: CALL SHORT + DEC E + JR NZ,GAP3 + CALL LONG + POP DE + POP BC + RET + +SHORT: PUSH AF + LD A,003H + LD (KEYPF),A + CALL DLY1 + CALL DLY1 + LD A,002H + LD (KEYPF),A + CALL DLY1 + CALL DLY1 + POP AF + RET + +LONG: PUSH AF + LD A,003H + LD (KEYPF),A + CALL DLY1 + CALL DLY1 + CALL DLY1 + CALL DLY1 + LD A,002H + LD (KEYPF),A + CALL DLY1 + CALL DLY1 + CALL DLY1 + CALL DLY2 + POP AF + RET + +L09AB: ADD A,C + DJNZ L09AB + POP BC + LD C,A + XOR A + RET + +DLY12: PUSH BC + LD B,023H +DLY12A: CALL DLY3 + DJNZ DLY12A + POP BC + RET + +GAPCK: PUSH BC + PUSH DE + PUSH HL + LD BC,KEYPB + LD DE,KEYPC +GAPCK1: LD H,064H +GAPCK2: CALL EDGE + JR C,GAPCK3 + CALL DLY3 + LD A,(DE) + AND 020H + JR NZ,GAPCK1 + DEC H + JR NZ,GAPCK2 +GAPCK3: JP RET3 + ;------------------------------------------------------------------------------- + ; END OF CMT UTILITIES + ;------------------------------------------------------------------------------- + + + ;------------------------------------------------------------------------------- + ; ANSI TERMINAL FUNCTIONALITY + ;------------------------------------------------------------------------------- + + ;---------------------------------------- + ; + ; ANSI EMULATION + ; + ; Emulate the Ansi standard + ; N.B. Turned on when Chr + ; 27 recieved. + ; Entry - A = Char + ; Exit - None + ; Used - None + ; + ;---------------------------------------- +ANSITERM: IF INCLUDE_ANSITERM = 1 + PUSH HL + PUSH DE + PUSH BC + PUSH AF + LD C,A ; Move character into C for safe keeping + ; + LD A,(ANSIMODE) + OR A + JR NZ,ANSI2 + LD A,C + CP 27 + JP NZ,NOTANSI ; If it is Chr 27 then we haven't just + ; been turned on, so don't bother with + ; all the checking. + LD A,1 ; Turn on. + LD (ANSIMODE),A + JP AnsiMore + +ANSI2: LD A,(CHARACTERNO) ; CHARACTER number in sequence + OR A ; Is this the first character? + JP Z,AnsiFirst ; Yes, deal with this strange occurance! + + LD A,C ; Put character back in C to check + + CP ";" ; Is it a semi colon? + JP Z,AnsiSemi + + CP "0" ; Is it a number? + JR C,ANSI_NN ; If <0 then no + CP "9"+1 ; If >9 then no + JP C,AnsiNumber + +ANSI_NN: CP "?" ; Simple trap for simple problem! + JP Z,AnsiMore + + CP "@" ; Is it a letter? + JP C,ANSIEXIT ; Abandon if not letter; something wrong + +ANSIFOUND: CALL CURSOROFF ; Turn cursor off and restore any character under the cursor. + LD HL,(NUMBERPOS) ; Get value of number buffer + LD A,(HAVELOADED) ; Did we put anything in this byte? + OR A + JR NZ,AF1 + LD (HL),255 ; Mark the fact that nothing was put in +AF1: INC HL + LD A,254 + LD (HL),A ; Mark end of sequence (for unlimited length sequences) + + XOR A + LD (CURSORCOUNT),A ; Restart count + LD A,0C9h + LD (CHGCURSMODE),A ; Disable flashing temp. + + LD HL,NUMBERBUF ; For the routine called. + LD A,C ; Restore number + ; + ; Now work out what happens... + ; + CP "A" ; Check for supported Ansi characters + JP Z,CUU ; Upwards + CP "B" + JP Z,CUD ; Downwards + CP "C" + JP Z,CUF ; Forward + CP "D" + JP Z,CUB ; Backward + CP "H" + JP Z,CUP ; Locate + CP "f" + JP Z,HVP ; Locate + CP "J" + JP Z,ED ; Clear screen + CP "m" + JP Z,SGR ; Set graphics renditon + CP "K" + JP Z,EL ; Clear to end of line + CP "s" + JP Z,SCP ; Save the cursor position + CP "u" + JP Z,RCP ; Restore the cursor position + +ANSIEXIT: ;CALL CURSORON ; If t + LD HL,NUMBERBUF ; Numbers buffer position + LD (NUMBERPOS),HL + XOR A + LD (CHARACTERNO),A ; Next time it runs, it will be the + ; first character + LD (HAVELOADED),A ; We haven't filled this byte! + LD (CHGCURSMODE),A ; Cursor allowed back again! + XOR A + LD (ANSIMODE),A + JR AnsiMore +NOTANSI: CP 000h ; Filter unprintable characters. + JR Z,AnsiMore + CALL PRNT +AnsiMore: POP AF + POP BC + POP DE + POP HL + RET + ; + ; The various routines needed to handle the filtered characters + ; +AnsiFirst: LD A,255 + LD (CHARACTERNO),A ; Next character is not first! + LD A,C ; Get character back + LD (ANSIFIRST),A ; Save first character to check later + CP "(" ; ( and [ have characters to follow + JP Z,AnsiMore ; and are legal. + CP "[" + JP Z,AnsiMore + CP 09Bh ; CSI + JP Z,AnsiF1 ; Pretend that "[" was first ;-) + JP ANSIEXIT ; = and > don't have anything to follow + ; them but are legal. + ; Others are illegal, so abandon anyway. +AnsiF1: LD A,"[" ; Put a "[" for first character + LD (ANSIFIRST),A + JP ANSIEXIT + +AnsiSemi: LD HL,(NUMBERPOS) ; Move the number pointer to the + LD A,(HAVELOADED) ; Did we put anything in this byte? + OR A + JR NZ,AS1 + LD (HL),255 ; Mark the fact that nothing was put in +AS1: INC HL ; move to next byte + LD (NUMBERPOS),HL + XOR A + LD (HAVELOADED),A ; New byte => not filled! + JP AnsiMore + +AnsiNumber: LD HL,(NUMBERPOS) ; Get address for number + LD A,(HAVELOADED) + OR A ; If value is zero + JR NZ,AN1 + LD A,C ; Get value into A + SUB "0" ; Remove ASCII offset + LD (HL),A ; Save and Exit + LD A,255 + LD (HAVELOADED),A ; Yes, we _have_ put something in! + JP AnsiMore + +AN1: LD A,(HL) ; Stored value in A; TBA in C + ADD A,A ; 2 * + LD D,A ; Save the 2* for later + ADD A,A ; 4 * + ADD A,A ; 8 * + ADD A,D ; 10 * + ADD A,C ; 10 * + new num + SUB "0" ; And remove offset from C value! + LD (HL),A ; Save and Exit. + JP AnsiMore ; Note routine will only work up to 100 + ; which should be okay for this application. + + ;-------------------------------- + ; GET NUMBER + ; + ; Gets the next number from + ; the list + ; + ; Entry - HL = address to get + ; from + ; Exit - HL = next address + ; A = value + ; IF a=255 then default value + ; If a=254 then end of sequence + ; Used - None + ;-------------------------------- +GetNumber: LD A,(HL) ; Get number + CP 254 + RET Z ; Return if end of sequence,ie still point to + ; end + INC HL ; Return pointing to next byte + RET ; Else next address and return + + ;*** ANSI UP + ; +CUU: CALL GetNumber ; Number into A + LD B,A ; Save value into B + CP 255 + JR NZ,CUUlp + LD B,1 ; Default value +CUUlp: LD A,(DSPXY+1) ; A <- Row + CP B ; Is it too far? + JR C,CUU1 + SUB B ; No, then go back that far. + JR CUU2 +CUU1: LD A,0 ; Make the choice, top line. +CUU2: LD (DSPXY+1),A ; Row <- A + JP ANSIEXIT + + ;*** ANSI DOWN + ; +CUD: LD A,(ANSIFIRST) + CP "[" + JP NZ,ANSIEXIT ; Ignore ESC(B + CALL GetNumber + LD B,A ; Save value in b + CP 255 + JR NZ,CUDlp + LD B,1 ; Default +CUDlp: LD A,(DSPXY+1) ; A <- Row + ADD A,B + CP ROW ; Too far? + JP C,CUD1 + LD A,ROW-1 ; Too far then bottom of screen +CUD1: LD (DSPXY+1),A ; Row <- A + JP ANSIEXIT + + ;*** ANSI RIGHT + ; +CUF: CALL GetNumber ; Number into A + LD B,A ; Value saved in B + CP 255 + JR NZ,CUFget + LD B,1 ; Default +CUFget: LD A,(DSPXY) ; A <- Column + ADD A,B ; Add movement. + CP 80 ; Too far? + JR C,CUF2 + LD A,79 ; Yes, right edge +CUF2: LD (DSPXY),A ; Column <- A + JP ANSIEXIT + + ;*** ANSI LEFT + ; +CUB: CALL GetNumber ; Number into A + LD B,A ; Save value in B + CP 255 + JR NZ,CUBget + LD B,1 ; Default +CUBget: LD A,(DSPXY) ; A <- Column + CP B ; Too far? + JR C,CUB1a + SUB B + JR CUB1b +CUB1a: LD A,0 +CUB1b: LD (DSPXY),A ; Column <-A + JP ANSIEXIT + + ;*** ANSI LOCATE + ; +HVP: +CUP: CALL GetNumber + CP 255 + CALL Z,DefaultLine ; Default = 1 + CP 254 ; Sequence End -> 1 + CALL Z,DefaultLine + CP ROW+1 ; Out of range then don't move + JP NC,ANSIEXIT + OR A + CALL Z,DefaultLine ; 0 means default, some strange reason + LD D,A + CALL GetNumber + CP 255 ; Default = 1 + CALL Z,DefaultColumn + CP 254 ; Sequence End -> 1 + CALL Z,DefaultColumn + CP 81 ; Out of range, then don't move + JP NC,ANSIEXIT + OR A + CALL Z,DefaultColumn ; 0 means go with default + LD E,A + EX DE,HL + DEC H ; Translate from Ansi co-ordinates to hardware + DEC L ; co-ordinates + LD (DSPXY),HL ; Set the cursor position. + JP ANSIEXIT + +DefaultColumn: +DefaultLine:LD A,1 + RET + + ;*** ANSI CLEAR SCREEN + ; +ED: CALL GetNumber + OR A + JP Z,ED1 ; Zero means first option + CP 254 ; Also default + JP Z,ED1 + CP 255 + JP Z,ED1 + CP 1 + JP Z,ED2 + CP 2 + JP NZ,ANSIEXIT + + ;*** Option 2 + ; +ED3: LD HL,0 + LD (DSPXY),HL ; Home the cursor + LD A,(JSW_FF) + OR A + JP NZ,ED_Set_LF + CALL CALCSCADDR + CALL CLRSCRN + JP ANSIEXIT + +ED_Set_LF: XOR A ; Note simply so that + LD (JSW_LF),A ; ESC[2J works the same as CTRL-L + JP ANSIEXIT + + ;*** Option 0 + ; +ED1: LD HL,(DSPXY) ; Get and save cursor position + LD A,H + OR L + JP Z,ED3 ; If we are at the top of the + ; screen and clearing to the bottom + ; then we are clearing all the screen! + PUSH HL + LD A,ROW-1 + SUB H ; ROW - Row + LD HL,0 ; Zero start + OR A ; Do we have any lines to add? + JR Z,ED1_2 ; If no bypass that addition! + LD B,A ; Number of lines to count + LD DE,80 +ED1_1: ADD HL,DE + DJNZ ED1_1 +ED1_2: EX DE,HL ; Value into DE + POP HL + LD A,80 + SUB L ; 80 - Columns + LD L,A ; Add to value before + LD H,0 + ADD HL,DE + PUSH HL ; Value saved for later + LD HL,(DSPXY) ; _that_ value again! + POP BC ; Number to blank + CALL CALCSCADDR + CALL CLRSCRN ; Now do it! + JP ANSIEXIT ; Then exit properly + + ;*** Option 1 - clear from cursor to beginning of screen + ; +ED2: LD HL,(DSPXY) ; Get and save cursor position + PUSH HL + LD A,H + LD HL,0 ; Zero start + OR A ; Do we have any lines to add? + JR Z,ED2_2 ; If no bypass that addition! + LD B,A ; Number of lines + LD DE,80 +ED2_1: ADD HL,DE + DJNZ ED2_1 +ED2_2: EX DE,HL ; Value into DE + POP HL + LD H,0 + ADD HL,DE + PUSH HL ; Value saved for later + LD HL,0 ; Find the begining! + POP BC ; Number to blank + CALL CLRSCRN ; Now do it! + JP ANSIEXIT ; Then exit properly + + ; *** ANSI CLEAR LINE + ; +EL: CALL GetNumber ; Get value + CP 0 + JP Z,EL1 ; Zero & Default are the same + CP 255 + JP Z,EL1 + CP 254 + JP Z,EL1 + CP 1 + JP Z,EL2 + CP 2 + JP NZ,ANSIEXIT ; Otherwise don't do a thing + + ;*** Option 2 - clear entire line. + ; + LD HL,(DSPXY) + LD L,0 + LD (DSPXY),HL + CALL CALCSCADDR + LD BC,80 ; 80 bytes to clear (whole line) + CALL CLRSCRN + JP ANSIEXIT + + ;*** Option 0 - Clear from Cursor to end of line. + ; +EL1: LD HL,(DSPXY) + LD A,80 ; Calculate distance to end of line + SUB L + LD C,A + LD B,0 + LD (DSPXY),HL + PUSH HL + POP DE + CALL CALCSCADDR + CALL CLRSCRN + JP ANSIEXIT + + ;*** Option 1 - clear from cursor to beginning of line. + ; +EL2: LD HL,(DSPXY) + LD C,L ; BC = distance from start of line + LD B,0 + LD L,0 + LD (DSPXY),HL + CALL CALCSCADDR + CALL CLRSCRN + JP ANSIEXIT + + ; In HL = XY Pos + ; Out = Screen address. +CALCSCADDR: PUSH AF + PUSH BC + PUSH DE + PUSH HL + LD A,H + LD B,H + LD C,L + LD HL,SCRN + OR A + JR Z,CALC3 + LD DE,80 +CALC2: ADD HL,DE + DJNZ CALC2 +CALC3: POP DE + ADD HL,BC + POP DE + POP BC + POP AF + RET + + ; HL = address + ; BC = length +CLRSCRN: DI + ; +MEMSW6: IF BUILD_TZFS+BUILD_RFSTZ > 0 + LD A,TZMM_MZ700_0 ; Enable access to the hardware by paging out the upper bank. + OUT (MMCFG),A + ENDIF + + LD (HLSAVE),HL ; 1 for later! + LD D,H + LD E,L + INC DE ; DE <- HL +1 + LD (BCSAVE),BC ; Save the value a little longer! + XOR A + LD (HL), A ; Blank this area! + LDIR ; *** just like magic *** + ; only I forgot it in 22a! + LD BC,(BCSAVE) ; Restore values + LD HL,(HLSAVE) + LD DE,2048 ; Move to attributes block + ADD HL,DE + LD D,H + LD E,L + INC DE ; DE = HL + 1 + LD A,(FONTSET) ; Save in the current values. + LD (HL),A + LDIR + +MEMSW7: IF BUILD_TZFS+BUILD_RFSTZ > 0 + LD A,TZMM_MZ700_2 ; Enable access to the hardware by paging out the upper bank. + OUT (MMCFG),A + ENDIF + ; + EI + RET + + ;*** ANSI SET GRAPHICS RENDITION + ; +SGR: CALL GetNumber + CP 254 ; 254 signifies end of sequence + JP Z,ANSIEXIT + OR A + CALL Z,AllOff + CP 255 ; Default means all off + CALL Z,AllOff + CP 1 + CALL Z,BoldOn + CP 2 + CALL Z,BoldOff + CP 4 + CALL Z,UnderOn + CP 5 + CALL Z,ItalicOn + CP 6 + CALL Z,ItalicOn + CP 7 + CALL Z,InverseOn + JP SGR ; Code is re-entrant + + ;-------------------------------- + ; + ; RESET GRAPHICS + ; + ; Entry - None + ; Exit - None + ; Used - None + ;-------------------------------- +AllOff: PUSH AF ; Save registers + LD A,0C9h ; = off + LD (BOLDMODE),A ; Turn the flags off + LD (ITALICMODE),A + LD (UNDERSCMODE),A + LD (INVMODE),A + LD A,007h ; Black background, white chars. + LD (FONTSET),A ; Reset the bit map store + POP AF ; Restore register + RET + + ;-------------------------------- + ; + ; TURN BOLD ON + ; + ; Entry - None + ; Exit - None + ; Used - None + ;-------------------------------- +BoldOn: PUSH AF ; Save register + XOR A ; 0 means on + LD (BOLDMODE),A +BOn1: LD A,(FONTSET) + SET 0,A ; turn ON indicator flag + LD (FONTSET),A + POP AF ; Restore register + RET + + ;-------------------------------- + ; + ; TURN BOLD OFF + ; + ; Entry - None + ; Exit - None + ; Used - None + ;-------------------------------- +BoldOff: PUSH AF ; Save register + PUSH BC + LD A,0C9h ; &C9 means off + LD (BOLDMODE),A +BO1: LD A,(FONTSET) + RES 0,A ; turn OFF indicator flag + LD (FONTSET),A + POP BC + POP AF ; Restore register + RET + + ;-------------------------------- + ; + ; TURN ITALICS ON + ; (replaces flashing) + ; Entry - None + ; Exit - None + ; Used - None + ;-------------------------------- +ItalicOn: PUSH AF ; Save AF + XOR A + LD (ITALICMODE),A ; 0 means on + LD A,(FONTSET) + SET 1,A ; turn ON indicator flag + LD (FONTSET),A + POP AF ; Restore register + RET + + ;-------------------------------- + ; + ; TURN UNDERLINE ON + ; + ; Entry - None + ; Exit - None + ; Used - None + ;-------------------------------- +UnderOn: PUSH AF ; Save register + XOR A ; 0 means on + LD (UNDERSCMODE),A + LD A,(FONTSET) + SET 2,A ; turn ON indicator flag + LD (FONTSET),A + POP AF ; Restore register + RET + + ;-------------------------------- + ; + ; TURN INVERSE ON + ; + ; Entry - None + ; Exit - None + ; Used - None + ;-------------------------------- +InverseOn: PUSH AF ; Save register + XOR A ; 0 means on + LD (INVMODE),A + LD A,(FONTSET) + SET 3,A ; turn ON indicator flag + LD (FONTSET),A + POP AF ; Restore AF + RET + + ;*** ANSI SAVE CURSOR POSITION + ; +SCP: LD HL,(DSPXY) ; (backup) <- (current) + LD (CURSORPSAV),HL + JP ANSIEXIT + + ;*** ANSI RESTORE CURSOR POSITION + ; +RCP: LD HL,(CURSORPSAV) ; (current) <- (backup) + LD (DSPXY),HL + JP ANSIEXIT + + + ; Control variables for the Ansi Emulator. Inline with the code as this module + ; is a build time include and the target for execution is RAM. + ; +CURSORPSAV DS 2, 0 ; Cursor save position;default 0,0 +HAVELOADED DS 1, 0 ; To show that a value has been put in for Ansi emualtor. +ANSIFIRST DS 1, 0 ; Holds first character of Ansi sequence +NUMBERBUF DS 20, 0 ; Buffer for numbers in Ansi +NUMBERPOS DW 1, NUMBERBUF ; Address within buffer +CHARACTERNO DS 1, 0 ; Byte within Ansi sequence. 0=first,255=other +CURSORCOUNT DS 1, 0 ; 1/50ths of a second since last change +FONTSET DS 1, 071H ; Ansi font setup - Blue background White Foreground as default. +JSW_FF DS 1, 0 ; Byte value to turn on/off FF routine +JSW_LF DS 1, 0 ; Byte value to turn on/off LF routine +CHARACTER DS 1, 0 ; To buffer character to be printed. +CURSORPOS DS 2, 0 ; Cursor position, default 0,0. +BOLDMODE DS 1, 0 +HIBRITEMODE DS 1, 0 ; 0 means on, &C9 means off +UNDERSCMODE DS 1, 0 +ITALICMODE DS 1, 0 +INVMODE DS 1, 0 +CHGCURSMODE DS 1, 0 +ANSIMODE DS 1, 0 ; 1 = on, 0 = off +BCSAVE DW 1, 0 ; Register save for when stack is not paged in. +DESAVE DW 1, 0 +HLSAVE DW 1, 0 +COLOUR EQU 0 + + ENDIF + ;------------------------------------------------------------------------------- + ; END OF ANSI TERMINAL FUNCTIONALITY + ;------------------------------------------------------------------------------- + + +REBOOT: DI +REBOOTTZ: IF BUILD_TZFS +BUILD_RFSTZ > 0 + LD A,TZMM_TZFS + OUT (MMCFG),A + ENDIF + +REBOOT80A: IF BUILD_MZ80A = 1 + ENDIF + + ; For RFS we need to switch back to the 40 char monitor. +REBOOTRFS: IF BUILD_RFS+BUILD_80C = 2 + LD A, ROMBANK0 ; Switch to 40Char monitor. + LD (ROMBK1),A + LD (BNKSELMROM),A + ENDIF + JP 0000H ; Now restart in the SA1510 monitor. + + ;------------------------------------------------------------------------------- + ; START OF STATIC LOOKUP TABLES AND CONSTANTS + ;------------------------------------------------------------------------------- + + ;-------------------------------------- + ; Test Message table + ;-------------------------------------- + +BFREE: DB " Bytes free",CR,LF,0,0 +SIGNON: IF BUILD_TZFS = 1 + DB "Microsoft Basic (TZFS) Ver 4.7b",CR,LF + DB "Copyright ",40,"C",41 + DB " 1978 by Microsoft",CR,LF,0,0 + ENDIF + IF BUILD_RFSTZ = 1 + DB "Microsoft Basic (RFS TZ) Ver 4.7b",CR,LF + DB "Copyright ",40,"C",41 + DB " 1978 by Microsoft",CR,LF,0,0 + ENDIF + IF BUILD_RFS = 1 + DB "Microsoft Basic (RFS) Ver 4.7b",CR,LF + DB "Copyright ",40,"C",41 + DB " 1978 by Microsoft",CR,LF,0,0 + ENDIF + IF BUILD_MZ80A = 1 + DB "Microsoft Basic (MZ-80A) Ver 4.7b",CR,LF + DB "Copyright ",40,"C",41 + DB " 1978 by Microsoft",CR,LF,0,0 + ENDIF +SVCRESPERR: DB "I/O Response Error, time out!", CR, NUL +SVCIOERR: DB "I/O Error, time out!", CR, NUL +MSGRECORD: DB CR, "Press RECORD+PLAY", CR, NUL +MSGPLAY: DB CR, "Press PLAY", CR, NUL +MSGWRITING: DB "Writing \"", NUL +MSGWRITING2:DB "\"", CR, NUL +ANSIERR: DB "Bad value!", CR, NUL + + ;------------------------------------------------------------------------------- + ; END OF STATIC LOOKUP TABLES AND CONSTANTS + ;------------------------------------------------------------------------------- + + ;------------------------------------------------------------------------------- + ; START OF DEBUGGING FUNCTIONALITY + ;------------------------------------------------------------------------------- + ; Debug routine to print out all registers and dump a section of memory for analysis. + ; +DEBUG: IF ENADEBUG = 1 + LD (DBGSTACKP),SP + LD SP,DBGSTACK + ; + PUSH AF + PUSH BC + PUSH DE + PUSH HL + ; + PUSH AF + PUSH HL + PUSH DE + PUSH BC + PUSH AF + LD DE, INFOMSG + CALL MONPRTSTR + POP BC + LD A,B + CALL PRTHX + LD A,C + CALL PRTHX + LD DE, INFOMSG2 + CALL MONPRTSTR + POP BC + LD A,B + CALL PRTHX + LD A,C + CALL PRTHX + LD DE, INFOMSG3 + CALL MONPRTSTR + POP DE + LD A,D + CALL PRTHX + LD A,E + CALL PRTHX + LD DE, INFOMSG4 + CALL MONPRTSTR + POP HL + LD A,H + CALL PRTHX + LD A,L + CALL PRTHX + LD DE, INFOMSG5 + CALL MONPRTSTR + LD HL,(DBGSTACKP) + LD A,H + CALL PRTHX + LD A,L + CALL PRTHX + CALL NL + + POP AF + JR C, SKIPDUMP + ; + LD HL,04000H ; WRKSPC ; Dump the startup vectors. + LD DE, 1000H + ADD HL, DE + EX DE,HL + LD HL,WRKSPC + CALL DUMPX + + LD HL,00000h ; Dump the startup vectors. + LD DE, 00A0H + ADD HL, DE + EX DE,HL + LD HL,00000h + CALL DUMPX + + LD HL,IBUFE ; Dump the data area. + LD DE, 0300H + ADD HL, DE + EX DE,HL + LD HL,IBUFE + CALL DUMPX + +SKIPDUMP: ;JR SKIPDUMP + POP HL + POP DE + POP BC + POP AF + ; + LD SP,(DBGSTACKP) + RET + + ; HL = Start + ; DE = End +DUMPX: LD A,10 +DUM1: LD (TMPCNT),A +DUM3: LD B,010h + LD C,02Fh + CALL NLPHL +DUM2: CALL SPHEX + INC HL + PUSH AF + LD A,(DSPXY) + ADD A,C + LD (DSPXY),A + POP AF + CP 020h + JR NC,L0D51 + LD A,02Eh +L0D51: CALL PRNT + LD A,(DSPXY) + INC C + SUB C + LD (DSPXY),A + DEC C + DEC C + DEC C + PUSH HL + SBC HL,DE + POP HL + JR NC,DUM7 +L0D78: DJNZ DUM2 + LD A,(TMPCNT) + DEC A + LD (TMPCNT),A + JR NZ,DUM3 +DUM4: CALL CHKKY + CP 0FFH + JR NZ,DUM4 + CALL GETKY + CP 'D' + JR NZ,DUM5 + LD A,8 + JR DUM1 +DUM5: CP 'U' + JR NZ,DUM6 + PUSH DE + LD DE,00100H + OR A + SBC HL,DE + POP DE + LD A,8 + JR DUM1 +DUM6: CP 'X' + JR Z,DUM7 + JR DUMPX +DUM7: CALL NL + RET + +NLPHL: CALL NL + CALL PRTHL + RET + + ; SPACE PRINT AND DISP ACC + ; INPUT:HL=DISP. ADR. +SPHEX: CALL PRTS ; SPACE PRINT + LD A,(HL) + CALL PRTHX ; DSP OF ACC (ASCII) + LD A,(HL) + RET + + ; Debugger messages, bit cryptic but this is due to limited space on the screen. + ; +INFOMSG: DB "AF=", NUL +INFOMSG2: DB ",BC=", 000H +INFOMSG3: DB ",DE=", 000H +INFOMSG4: DB ",HL=", 000H +INFOMSG5: DB ",SP=", 000H + + ; Seperate stack for the debugger so as not to affect anything it is reporting on. + ; +TMPCNT DS virtual 2 ; TEMPORARY COUNTER +DBGSTACKP: DS 2 + DS 128, 000H +DBGSTACK: EQU $ + + ENDIF + ;------------------------------------------------------------------------------- + ; END OF DEBUGGING FUNCTIONALITY + ;------------------------------------------------------------------------------- +CODEEND: + + ;------------------------------------------------------------------------------- + ; BASIC RELOCATION + ;------------------------------------------------------------------------------- + + + ; For TZFS builds the image needs to be relocated from 0x1200 to 0x0000 on startup after switching the memory mode. +RELOCSTART: IF BUILD_TZFS+BUILD_RFSTZ > 0 + ORG $ + 1200H + + ; Switch memory. +RELOC: LD A, TZMM_MZ700_0 ; Switch to the MZ700 memory map where the lower 4K 0000:0FFF is in block 6, we therefore preserve the Monitor for exit. + OUT (MMCFG),A + + ; Move the image down and start. + LD DE, 0000H + LD HL, 01200H + LD BC, CODEEND - CODESTART + LDIR + JP 0000H + ENDIF + + ; For RFS builds a two stage relocation is needed, a) relocate to tranzputer RAM, b) run the TZFS relocation code. +RELOC_RFS: IF BUILD_RFSTZ = 1 + + ; Switch memory. +RELOCRFS: LD A, TZMM_BOOT ; Go to boot mode, copy the relocation code to EC80H and execute. + OUT (MMCFG),A + + ; Move the relocation code to EC80H. + LD DE, 0EC80H + LD HL, RELOCRFS2 + LD BC, RELOCRFS2END - RELOCRFS2 + LDIR + JP 0EC80H ; Run the relocation code. + ENDIF +RELOCEND: + +RELOCRFS2: IF BUILD_TZFS+BUILD_RFSTZ > 0 + ; Move the image down into tranZPUter memory and then start the real relocation. + LD HL, 01200H + LD BC, (CODEEND - CODESTART) + (RELOCEND - RELOC) ; Size of program. + + ; Fetch a byte from main DRAM and write it into Bank 0 same location. +RELOCRFS2_1: LD A,TZMM_BOOT + OUT (MMCFG),A + LD A,(HL) + ; + EX AF,AF' + LD A,TZMM_TZFS + OUT (MMCFG),A + EX AF,AF' + ; + LD (HL),A + INC HL + DEC BC + LD A,B + OR C + JR NZ, RELOCRFS2_1 + ; + LD DE, 00000H ; Copy the reboot handler into Bank 0 at 00000H. + LD HL, 0EC80H + (REBOOTTZRFS - RELOCRFS2) + LD BC, RELOCRFS2END - REBOOTTZRFS + LDIR + ; + JP RELOC ; Jump into the original TZFS relocation code. + + ; Reboot handler for TZ/RFS mode. This code is transferred into RAM bank 0 at 0000H as this is not used for BASIC + ; and executed when a return to the Monitor ROM is needed. Location 004AH in the Monitor ROM is the startup vector. +REBOOTTZRFS: ALIGN_NOPS $ + 04AH - 4 +REBOOTTZRFS1: LD A,TZMM_ORIG + OUT (MMCFG),A + JP 00000H +RELOCRFS2END:ENDIF + + + ; Variables start at the end of the code in the running image (not relocatable image). + ORG CODEEND +GVARSTART EQU $ ; Start of variables. + + ; Pad out so that the keyboard buffer is aligned on a 256 byte block boundary. + ALIGN ($ + 0100H) & 0FF00H + +KEYBUF: DS virtual KEYBUFSIZE ; Interrupt driven keyboard buffer. +KEYCOUNT: DS virtual 1 +KEYWRITE: DS virtual 2 ; Pointer into the buffer where the next character should be placed. +KEYREAD: DS virtual 2 ; Pointer into the buffer where the next character can be read. +KEYLAST: DS virtual 1 ; Last key value +KEYRPT: DS virtual 1 ; Key repeat counter + +MONVARSTRT: EQU $ + + ; For MZ80A or MZ80A with RFS we share the original monitor variable space. + IF BUILD_MZ80A+BUILD_RFS > 0 + ORG 010F0H + ENDIF +SPV: +IBUFE: ; TAPE BUFFER (128 BYTES) +ATRB: DS virtual 1 ; ATTRIBUTE +NAME: DS virtual 17 ; FILE NAME +SIZE: DS virtual 2 ; BYTESIZE +DTADR: DS virtual 2 ; DATA ADDRESS +EXADR: DS virtual 2 ; EXECUTION ADDRESS +COMNT: DS virtual 92 ; Comment / code area of CMT header. +SWPW: DS virtual 10 ; SWEEP WORK +KDATW: DS virtual 2 ; KEY WORK +KANAF: DS virtual 1 ; KANA FLAG (01=GRAPHIC MODE) +DSPXY: DS virtual 2 ; DISPLAY COORDINATES +MANG: DS virtual 6 ; COLUMN MANAGEMENT +MANGE: DS virtual 1 ; COLUMN MANAGEMENT END +PBIAS: DS virtual 1 ; PAGE BIAS +ROLTOP: DS virtual 1 ; ROLL TOP BIAS +MGPNT: DS virtual 1 ; COLUMN MANAG. POINTER +PAGETP: DS virtual 2 ; PAGE TOP +ROLEND: DS virtual 1 ; ROLL END + DS virtual 14 ; BIAS +FLASH: DS virtual 1 ; FLASHING DATA +SFTLK: DS virtual 1 ; SHIFT LOCK +REVFLG: DS virtual 1 ; REVERSE FLAG +SPAGE: DS virtual 1 ; PAGE CHANGE +FLSDT: DS virtual 1 ; CURSOR DATA +STRGF: DS virtual 1 ; STRING FLAG +DPRNT: DS virtual 1 ; TAB COUNTER +TMCNT: DS virtual 2 ; TAPE MARK COUNTER +SUMDT: DS virtual 2 ; CHECK SUM DATA +CSMDT: DS virtual 2 ; FOR COMPARE SUM DATA +AMPM: DS virtual 1 ; AMPM DATA +TIMFG: DS virtual 1 ; TIME FLAG +SWRK: DS virtual 1 ; KEY SOUND FLAG +TEMPW: DS virtual 1 ; TEMPO WORK +ONTYO: DS virtual 1 ; ONTYO WORK +OCTV: DS virtual 1 ; OCTAVE WORK +RATIO: DS virtual 2 ; ONPU RATIO + + ; Remaining variables inside MS-BASIC variable space. + IF BUILD_MZ80A+BUILD_RFS > 0 + ORG MONVARSTRT + ENDIF + +DSPXYADDR: DS virtual 2 ; Address of last known position. + +FLASHCTL: DS virtual 1 ; CURSOR FLASH CONTROL. BIT 0 = Cursor On/Off, BIT 1 = Cursor displayed. +TIMESEC: DS virtual 6 ; RTC 48bit TIME IN MILLISECONDS +LINECNT: DS virtual 2 ; Counter for displayed lines. + +ANSIENABLE: DS virtual 1 ; Ansi Terminal flag. +; +TPFLAG DS virtual 1 +SECTPOS DS virtual 2 + +SPISRSAVE: DS virtual 2 + ; Stack space for the Interrupt Service Routine. + DS virtual 32 ; Max 8 stack pushes. +ISRSTACK EQU $ +STACKE: EQU $ + DS virtual 128 +STACK: EQU $ + + +WRKSPC DS virtual 3 ; 0 BASIC Work space +USR DS virtual 3 ; 3H "USR (x)" jump +OUTSUB DS virtual 1 ; 6H "OUT p,n" +OTPORT DS virtual 2 ; 7H Port (p) +DIVSUP DS virtual 1 ; 9H Division support routine +DIV1 DS virtual 4 ; 0AH <- Values +DIV2 DS virtual 4 ; 0EH <- to +DIV3 DS virtual 3 ; 12H <- be +DIV4 DS virtual 2 ; 15H <-inserted +SEED DS virtual 35 ; 17H Random number seed +LSTRND DS virtual 4 ; 3AH Last random number +INPSUB DS virtual 1 ; 3EH #INP (x)" Routine +INPORT DS virtual 2 ; 3FH PORT (x) +NULLS DS virtual 1 ; 41H Number of nulls +LWIDTH DS virtual 1 ; 42H Terminal width +COMMAN DS virtual 1 ; 43H Width for commas +NULFLG DS virtual 1 ; 44H Null after input byte flag +CTLOFG DS virtual 1 ; 45H Control "O" flag +LINESC DS virtual 2 ; 46H Lines counter +LINESN DS virtual 2 ; 48H Lines number +CHKSUM DS virtual 2 ; 4AH Array load/save check sum +NMIFLG DS virtual 1 ; 4CH Flag for NMI break routine +BRKFLG DS virtual 1 ; 4DH Break flag +RINPUT DS virtual 3 ; 4EH Input reflection +POINT DS virtual 3 ; 51H "POINT" reflection (unused) +PSET DS virtual 3 ; 54H "SET" reflection +RESET DS virtual 3 ; 57H "RESET" reflection +STRSPC DS virtual 2 ; 5AH Bottom of string space +LINEAT DS virtual 2 ; 5CH Current line number +BASTXT DS virtual 3 ; 5EH Pointer to start of program +BUFFER DS virtual 5 ; 61H Input buffer +STACKI DS virtual 69 ; 66H Initial stack +CURPOS DS virtual 1 ; 0ABH Character position on line +LCRFLG DS virtual 1 ; 0ACH Locate/Create flag +TYPE DS virtual 1 ; 0ADH Data type flag +DATFLG DS virtual 1 ; 0AEH Literal statement flag +LSTRAM DS virtual 2 ; 0AFH Last available RAM +TMSTPT DS virtual 2 ; 0B1H Temporary string pointer +TMSTPL DS virtual 12 ; 0B3H Temporary string pool +TMPSTR DS virtual 4 ; 0BFH Temporary string +STRBOT DS virtual 2 ; 0C3H Bottom of string space +CUROPR DS virtual 2 ; 0C5H Current operator in EVAL +LOOPST DS virtual 2 ; 0C7H First statement of loop +DATLIN DS virtual 2 ; 0C9H Line of current DATA item +FORFLG DS virtual 1 ; 0CBH "FOR" loop flag +LSTBIN DS virtual 1 ; 0CCH Last byte entered +READFG DS virtual 1 ; 0CDH Read/Input flag +BRKLIN DS virtual 2 ; 0CEH Line of break +NXTOPR DS virtual 2 ; 0D0H Next operator in EVAL +ERRLIN DS virtual 2 ; 0D2H Line of error +CONTAD DS virtual 2 ; 0D4H Where to CONTinue +PROGND DS virtual 2 ; 0D6H End of program +VAREND DS virtual 2 ; 0D8H End of variables +ARREND DS virtual 2 ; 0DAH End of arrays +NXTDAT DS virtual 2 ; 0DCH Next data item +FNRGNM DS virtual 2 ; 0DEH Name of FN argument +FNARG DS virtual 4 ; 0E0H FN argument value +FPREG DS virtual 3 ; 0E4H Floating point register +FPEXP DS virtual 1 ; FPREG+3 Floating point exponent +SGNRES DS virtual 1 ; 0E8H Sign of result +PBUFF DS virtual 13 ; 0E9H Number print buffer +MULVAL DS virtual 3 ; 0F6H Multiplier +PROGST DS virtual 100 ; 0F9H Start of program text area +STLOOK DS virtual 1 ; 15DH Start of memory test + +GVAREND EQU $ ; End of variables diff --git a/asm/mz80afi.asm b/asm/mz80afi.asm new file mode 100644 index 0000000..e42477a --- /dev/null +++ b/asm/mz80afi.asm @@ -0,0 +1,371 @@ +; Disassembly of the file "D:\MZ80AFI.BIN" +; +; CPU Type: Z80 +; +; Using the opcode map file "D:\DZ80-INI.MAP" +; ; Created with dZ80 2.0 +; +; on Thursday, 06 of February 2020 at 01:38 PM +; +i ; Bring in additional resources. + INCLUDE "rfs_definitions.asm" + INCLUDE "macros.asm" + + + ;====================================== + ; + ; Floppy Disk Interface + ; + ;====================================== + ORG 0E800H + +FLOPPY: NOP + LD DE,01008H + LD HL,PRMBLK + LD BC,0000BH + LDIR + CALL L0151 +L000F: CALL NL + LD DE,BOOTDRV + CALL MSG + LD DE,011A3H + CALL GETL + LD A,(DE) + CP 01BH + JP Z,SS + LD HL,0000CH + ADD HL,DE + LD A,(HL) + CP 00DH + JR Z,L003A ; (+00dh) + CALL 03F9H + JR C,L000F ; (-023h) + DEC A + CP 004H + JR NC,L000F ; (-028h) + LD (01008H),A +L003A: LD IX,01008H + CALL L01BA + LD HL,0CE00H + LD DE,DSKID + LD B,007H +L0049: LD C,(HL) + LD A,(DE) + CP C + JP NZ,L008C + INC HL + INC DE + DJNZ L0049 ; (-00ah) + CALL NL + LD DE,IPLLOAD + CALL MSG + LD DE,0CE07H + CALL MSG + LD HL,(0CE16H) + LD (IX+005H),L + LD (IX+006H),H + LD HL,(0CE14H) + LD (IX+003H),L + LD (IX+004H),H + LD HL,(0CE1EH) + LD (IX+001H),L + LD (IX+002H),H + CALL L01BA + CALL L0151 + LD HL,(0CE18H) + JP (HL) + +L0087: LD DE,LOADERR + JR L008F ; (+003h) + +L008C: LD DE,DSKNOTMST +L008F: CALL NL + CALL MSG + CALL NL + LD DE,DSKDAT + CALL MELDY + JP SS + +BOOTDRV: DB "BOOY DRIVE ?", 00DH +LOADERR: DB "LOADING ERROR", 00DH +IPLLOAD: DB "IPL IS LOADING ", 00DH +DSKID: DB 002H, "IPLPRO" +DSKDAT: DB "A0", 0D7H, "ARA", 0D7H, "AR", 00DH +PRMBLK: DB 000H, 000H, 000H, 000H, 001H, 000H, 0CEH, 000H, 000H, 000H, 000H +DSKNOTMST: DB "THIS DISKETTE IS NOT MASTER", 00Dh + +L0104: LD A,(01001H) + RRCA + CALL NC,L0138 + LD A,(IX+000H) + OR 084H + OUT (0DCH),A + XOR A + LD (01000H),A + LD HL,00000H +L0119: DEC HL + LD A,H + OR L + JP Z,L029D + IN A,(0D8H) + CPL + RLCA + JR C,L0119 ; (-00ch) + LD C,(IX+000H) + LD HL,01002H + LD B,000H + ADD HL,BC + BIT 0,(HL) + JR NZ,L0137 ; (+005h) + CALL L0164 + SET 0,(HL) +L0137: RET + +L0138: LD A,080H + OUT (0DCH),A + LD B,010H +L013E: CALL L02C7 + DJNZ L013E ; (-005h) + LD A,001H + LD (01001H),A + RET + +L0149: LD A,01BH + CALL L0171 + AND 099H + RET + +L0151: XOR A + OUT (0DCH),A + LD (01002H),A + LD (01003H),A + LD (01004H),A + LD (01005H),A + LD (01001H),A + RET + +L0164: LD A,00BH + CALL L0171 + AND 085H + XOR 004H + RET Z + JP L029D + +L0171: LD (01000H),A + CPL + OUT (0D8H),A + CALL L017E + IN A,(0D8H) + CPL + RET + +L017E: PUSH DE + PUSH HL + CALL L02C0 + LD E,007H +L0185: LD HL,00000H +L0188: DEC HL + LD A,H + OR L + JR Z,L0196 ; (+009h) + IN A,(0D8H) + CPL + RRCA + JR C,L0188 ; (-00bh) + POP HL + POP DE + RET + +L0196: DEC E + JR NZ,L0185 ; (-014h) + JP L029D + +L019C: PUSH DE + PUSH HL + CALL L02C0 + LD E,007H +L01A3: LD HL,00000H +L01A6: DEC HL + LD A,H + OR L + JR Z,L01B4 ; (+009h) + IN A,(0D8H) + CPL + RRCA + JR NC,L01A6 ; (-00bh) + POP HL + POP DE + RET + +L01B4: DEC E + JR NZ,L01A3 ; (-014h) + JP L029D + +L01BA: CALL L0220 +L01BD: CALL L0229 +L01C0: CALL L0249 + CALL L0149 + JR NZ,L0216 ; (+04eh) + CALL L0259 + PUSH IX + LD IX,L03FE + LD IY,L01DF + DI + LD A,094H + CALL L028A +L01DB: LD B,000H + JP (IX) + +L01DF: INI + JP NZ,L03FE + POP IX + INC (IX+008H) + LD A,(IX+008H) + PUSH IX + LD IX,L03FE + CP 011H + JR Z,L01FB ; (+005h) + DEC D + JR NZ,L01DB ; (-01eh) + JR L01FC ; (+001h) +L01FB: DEC D +L01FC: CALL L0294 + CALL L02D2 + POP IX + IN A,(0D8H) + CPL + AND 0FFH + JR NZ,L0216 ; (+00bh) + CALL L0278 + JP Z,L021B + LD A,(IX+007H) + JR L01C0 ; (-056h) +L0216: CALL L026A + JR L01BD ; (-05eh) + +L021B: LD A,080H + OUT (0DCH),A + RET + +L0220: CALL L02A3 + LD A,00AH + LD (01006H),A + RET + +L0229: CALL L0104 + LD D,(IX+004H) + LD A,(IX+003H) + OR A + JR Z,L0236 ; (+001h) + INC D +L0236: LD A,(IX+00AH) + LD (IX+008H),A + LD A,(IX+009H) + LD (IX+007H),A + LD L,(IX+005H) + LD H,(IX+006H) + RET + +L0249: SRL A + CPL + OUT (0DBH),A + JR NC,L0254 ; (+004h) + LD A,001H + JR L0255 ; (+001h) +L0254: XOR A +L0255: CPL + OUT (0DDH),A + RET + +L0259: LD C,0DBH + LD A,(IX+007H) + SRL A + CPL + OUT (0D9H),A + LD A,(IX+008H) + CPL + OUT (0DAH),A + RET + +L026A: LD A,(01006H) + DEC A + LD (01006H),A + JP Z,L029D + CALL L0164 + RET + +L0278: LD A,(IX+008H) + CP 011H + JR NZ,L0287 ; (+008h) + LD A,001H + LD (IX+008H),A + INC (IX+007H) +L0287: LD A,D + OR A + RET + +L028A: LD (01000H),A + CPL + OUT (0D8H),A + CALL L019C + RET + +L0294: LD A,0D8H + CPL + OUT (0D8H),A + CALL L017E + RET + +L029D: CALL L0151 + JP L0087 + +L02A3: LD B,000H + LD DE,00010H + LD L,(IX+001H) + LD H,(IX+002H) + XOR A +L02AF: SBC HL,DE + JR C,L02B6 ; (+003h) + INC B + JR L02AF ; (-007h) +L02B6: ADD HL,DE + LD H,B + INC L + LD (IX+009H),H + LD (IX+00AH),L + RET + +L02C0: PUSH DE + LD DE,00007H + JP L02CB + +L02C7: PUSH DE + LD DE,01013H +L02CB: DEC DE + LD A,E + OR D + JR NZ,L02CB ; (-005h) + POP DE + RET + +L02D2: PUSH AF + LD A,(0119CH) + CP 0F0H + JR NZ,L02DB ; (+001h) + EI +L02DB: POP AF + RET + + ALIGN 0EBFDh + DB 0FFh + +L03FE: JP (IY) +;DB 0DDH +; DB 0E9H + + ; Ensure we fill the entire 1K by padding with FF's. + ALIGN 0EFFDh + DB 0FFh + +LF7FE: DB 0fDH + DB 0E9H diff --git a/asm/ramcheck.asm b/asm/ramcheck.asm new file mode 100644 index 0000000..dce76f5 --- /dev/null +++ b/asm/ramcheck.asm @@ -0,0 +1,155 @@ + +LETNL: EQU 0006h +PRNTS: EQU 000Ch +PRNT: EQU 0012h +MSG: EQU 0015h +MONIT: EQU 0086h +PRTHL: EQU 03BAh +PRTHX: EQU 03C3h +DPCT: EQU 0DDCh +MSTART: EQU 1200h + + ORG 10F0h + + DB 01h ; Code Type, 01 = Machine Code. + DB "RAM TEST V1.0", 0Dh, 00h, 00h ; Title/Name (17 bytes). + DW MSTART - START ; Size of program. + DW START ; Load address of program. + DW START ; Exec address of program. + DB 00h, 00h, 00h, 00h, 00h, 00h, 00h, 00h, 00h, 00h, 00h, 00h, 00h, 00h, 00h, 00h ; Comment (104 bytes). + DB 00h, 00h, 00h, 00h, 00h, 00h, 00h, 00h, 00h, 00h, 00h, 00h, 00h, 00h, 00h, 00h + DB 00h, 00h, 00h, 00h, 00h, 00h, 00h, 00h, 00h, 00h, 00h, 00h, 00h, 00h, 00h, 00h + DB 00h, 00h, 00h, 00h, 00h, 00h, 00h, 00h, 00h, 00h, 00h, 00h, 00h, 00h, 00h, 00h + DB 00h, 00h, 00h, 00h, 00h, 00h, 00h, 00h, 00h, 00h, 00h, 00h, 00h, 00h, 00h, 00h + DB 00h, 00h, 00h, 00h, 00h, 00h, 00h, 00h, 00h, 00h, 00h, 00h, 00h, 00h, 00h, 00h + DB 00h, 00h, 00h, 00h, 00h, 00h, 00h, 00h + + ORG 01200h + +START: LD DE,TITLE + CALL MSG + CALL LETNL + LD B, 20 ; Number of loops +LOOP: LD HL,MSTART ; Start of checked memory, + LD D,0CEh ; End memory check CE00 +LOOP1: LD A,000h + CP L + JR NZ,LOOP1b + CALL PRTHL ; Print HL as 4digit hex. + LD A,0C4h ; Move cursor left. + LD E,004h ; 4 times. +LOOP1a: CALL DPCT + DEC E + JR NZ,LOOP1a +LOOP1b: INC HL + LD A,H + CP D ; Have we reached end of memory. + JR Z,LOOP3 ; Yes, exit. + LD A,(HL) ; Read memory location under test, ie. 0. + CPL ; Subtract, ie. FF - A, ie FF - 0 = FF. + LD (HL),A ; Write it back, ie. FF. + SUB (HL) ; Subtract written memory value from A, ie. should be 0. + JR NZ,LOOP2 ; Not zero, we have an error. + LD A,(HL) ; Reread memory location, ie. FF + CPL ; Subtract FF - FF + LD (HL),A ; Write 0 + SUB (HL) ; Subtract 0 + JR Z,LOOP1 ; Loop if the same, ie. 0 +LOOP2: LD A,16h + CALL PRNT ; Print A + CALL PRTHX ; Print HL as 4 digit hex. + CALL PRNTS ; Print space. + XOR A + LD (HL),A + LD A,(HL) ; Get into A the failing bits. + CALL PRTHX ; Print A as 2 digit hex. + CALL PRNTS ; Print space. + LD A,0FFh ; Repeat but first load FF into memory + LD (HL),A + LD A,(HL) + CALL PRTHX ; Print A as 2 digit hex. + NOP + JR LOOP4 + +LOOP3: LD DE,OKCHECK + CALL MSG ; Print check message in DE + LD A,B ; Print loop count. + CALL PRTHX + LD DE,OKMSG + CALL MSG ; Print ok message in DE + DEC B + JR NZ,LOOP + LD DE,DONEMSG + CALL MSG ; Print check message in DE + JP MONIT + +OKCHECK: DB 11h + DB "CHECK: ", 0Dh +OKMSG: DB "OK.", 0Dh +DONEMSG: DB 11h + DB "RAM TEST COMPLETE.", 0Dh + +LOOP4: LD B,09h + CALL PRNTS ; Print space. + XOR A ; Zero A + SCF ; Set Carry +LOOP5: PUSH AF ; Store A and Flags + LD (HL),A ; Store 0 to bad location. + LD A,(HL) ; Read back + CALL PRTHX ; Print A as 2 digit hex. + CALL PRNTS ; Print space + POP AF ; Get back A (ie. 0 + C) + RLA ; Rotate left A. Bit LSB becomes Carry (ie. 1 first instance), Carry becomes MSB + DJNZ LOOP5 ; Loop if not zero, ie. print out all bit locations written and read to memory to locate bad bit. + XOR A ; Zero A, clears flags. + LD A,80h + LD B,08h +LOOP6: PUSH AF ; Repeat above but AND memory location with original A (ie. 80) + LD C,A ; Basically walk through all the bits to find which one is stuck. + LD (HL),A + LD A,(HL) + AND C + NOP + JR Z,LOOP8 ; If zero then print out the bit number + NOP + NOP + LD A,C + CPL + LD (HL),A + LD A,(HL) + AND C + JR NZ,LOOP8 ; As above, if the compliment doesnt yield zero, print out the bit number. +LOOP7: POP AF + RRCA + NOP + DJNZ LOOP6 + JP MONIT + +LOOP8: CALL LETNL ; New line. + LD DE,BITMSG ; BIT message + CALL MSG ; Print message in DE + LD A,B + DEC A + CALL PRTHX ; Print A as 2 digit hex, ie. BIT number. + CALL LETNL ; New line + LD DE,BANKMSG ; BANK message + CALL MSG ; Print message in DE + LD A,H + CP 50h ; 'P' + JR NC,LOOP9 ; Work out bank number, 1, 2 or 3. + LD A,01h + JR LOOP11 + +LOOP9: CP 90h + JR NC,LOOP10 + LD A,02h + JR LOOP11 + +LOOP10: LD A,03h +LOOP11: CALL PRTHX ; Print A as 2 digit hex, ie. BANK number. + JR LOOP7 + +BITMSG: DB " BIT: ", 0Dh +BANKMSG: DB " BANK: ", 0Dh + +TITLE: DB "SHARPMZ RAM TEST (C) P. SMART 2018", 0Dh, 00h diff --git a/asm/rfs.asm b/asm/rfs.asm new file mode 100644 index 0000000..9ddcbd8 --- /dev/null +++ b/asm/rfs.asm @@ -0,0 +1,1347 @@ +;-------------------------------------------------------------------------------------------------------- +;- +;- Name: rfs.asm +;- Created: July 2019 +;- Author(s): Philip Smart +;- Description: Sharp MZ series Rom Filing System. +;- This assembly language program is written to utilise the banked flashroms added with +;- the MZ-80A RFS hardware upgrade. +;- +;- Credits: +;- Copyright: (c) 2018-2023 Philip Smart +;- +;- History: July 2019 - Merged 2 utilities to create this compilation. +; May 2020 - Bank switch changes with release of v2 pcb with coded latch. The coded +; latch adds additional instruction overhead as the control latches share +; the same address space as the Flash RAMS thus the extra hardware to +; only enable the control registers if a fixed number of reads is made +; into the upper 8 bytes which normally wouldnt occur. Caveat - ensure +; that no loop instruction is ever placed into EFF8H - EFFFH. +; July 2020 - Updated for the v2.1 hardware. RFS can run with a tranZPUter board with +; or without the K64 I/O processor. RFS wont use the K64 processor all +; operations are done by the Z80 under RFS. +;- April 2021- Updates for the v2.1 RFS board. +;- +;-------------------------------------------------------------------------------------------------------- +;- This source file is free software: you can redistribute it and-or modify +;- it under the terms of the GNU General Public License as published +;- by the Free Software Foundation, either version 3 of the License, or +;- (at your option) any later version. +;- +;- This source file is distributed in the hope that it will be useful, +;- but WITHOUT ANY WARRANTY; without even the implied warranty of +;- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +;- GNU General Public License for more details. +;- +;- You should have received a copy of the GNU General Public License +;- along with this program. If not, see . +;-------------------------------------------------------------------------------------------------------- + + ; Bring in additional resources. + INCLUDE "rfs_definitions.asm" + + + ;============================================================ + ; + ; USER ROM BANK 0 - Main RFS Entry point and functions. + ; + ;============================================================ + ORG UROMADDR + + + ;-------------------------------- + ; Common code spanning all banks. + ;-------------------------------- +ROMFS: NOP + LD B,16 ; If we read the bank control reset register 15 times then this will enable bank control and then the 16th read will reset all bank control registers to default. +ROMFS_0: LD A,(BNKCTRLRST) + DJNZ ROMFS_0 ; Apply the default number of coded latch reads to enable the bank control registers. + LD A,BNKCTRLDEF ; Set coded latch, SDCS high, BBMOSI to high and BBCLK to high which enables SDCLK. + LD (BNKCTRL),A + LD (ROMCTL),A ; Save to memory the value in the bank control register - this register is used for SPI etc so need to remember its setting. + XOR A ; We shouldnt arrive here after a reset, if we do, select UROM bank 0 + LD (BNKSELMROM),A + LD (BNKSELUSER),A ; and start up - ie. SA1510 Monitor - this occurs as User Bank 0 is enabled and the jmp to 0 is coded in it. + JP ROMFS_1 ; Skip the reset vector. + JP 00000H ; Other banks will switch at this point thus forcing a full reset. + + ALIGN_NOPS UROMBSTBL + + ;------------------------------------------------------------------------------------------ + ; Bank switching code, allows a call to code in another bank. + ; This code is duplicated in each bank such that a bank switch doesnt affect logic flow. + ;------------------------------------------------------------------------------------------ + ; +BKSW0to0: PUSH AF + LD A, ROMBANK0 ; Calling bank (ie. us). + PUSH AF + LD A, ROMBANK0 ; Required bank to call. + JR BKSW0_0 +BKSW0to1: PUSH AF + LD A, ROMBANK0 ; Calling bank (ie. us). + PUSH AF + LD A, ROMBANK1 ; Required bank to call. + JR BKSW0_0 +BKSW0to2: PUSH AF + LD A, ROMBANK0 ; Calling bank (ie. us). + PUSH AF + LD A, ROMBANK2 ; Required bank to call. + JR BKSW0_0 +BKSW0to3: PUSH AF + LD A, ROMBANK0 ; Calling bank (ie. us). + PUSH AF + LD A, ROMBANK3 ; Required bank to call. + JR BKSW0_0 +BKSW0to4: PUSH AF + LD A, ROMBANK0 ; Calling bank (ie. us). + PUSH AF + LD A, ROMBANK4 ; Required bank to call. + JR BKSW0_0 +BKSW0to5: PUSH AF + LD A, ROMBANK0 ; Calling bank (ie. us). + PUSH AF + LD A, ROMBANK5 ; Required bank to call. + JR BKSW0_0 +BKSW0to6: PUSH AF + LD A, ROMBANK0 ; Calling bank (ie. us). + PUSH AF + LD A, ROMBANK6 ; Required bank to call. + JR BKSW0_0 +BKSW0to7: PUSH AF + LD A, ROMBANK0 ; Calling bank (ie. us). + PUSH AF + LD A, ROMBANK7 ; Required bank to call. + ; +BKSW0_0: PUSH HL ; Place function to call on stack + LD HL, BKSWRET0 ; Place bank switchers return address on stack. + EX (SP),HL + LD (TMPSTACKP),SP ; Save the stack pointer as some old code corrupts it. + LD (BNKSELUSER), A ; Repeat the bank switch B times to enable the bank control register and set its value. + JP (HL) ; Jump to required function. +BKSWRET0: POP AF ; Get bank which called us. + LD (BNKSELUSER), A ; Return to that bank. + POP AF + RET ; Return to caller. + + ALIGN RFSJMPTABLE + ORG RFSJMPTABLE + + ;------------------------------------------------------------------------------------------ + ; Enhanced function Jump table. + ; This table is generally used by the monitor ROM to call functions within the User ROM. + ;------------------------------------------------------------------------------------------ +PRTMZF: JP _PRTMZF ; UROMADDR+80H - Print out an MZF header stored in the IBUFE location. +PRTDBG: JP _PRTDBG ; UROMADDR+83H - Print out debug information, if enabled. +CMT_RDINF: JP _CMT_RDINF ; UROMADDR+86H - Tape/SD intercept handler - Read Header +CMT_RDDATA: JP _CMT_RDDATA ; UROMADDR+89H - Tape/SD intercept handler - Read Data +CMT_WRINF: JP _CMT_WRINF ; UROMADDR+80H - Tape/SD intercept handler - Write Header +CMT_WRDATA: JP _CMT_WRDATA ; UROMADDR+8FH - Tape/SD intercept handler - Write Data +CMT_VERIFY: JP _CMT_VERIFY ; UROMADDR+92H - Tape/SD intercept handler - Verify Data +CMT_DIR: JP _CMT_DIR ; UROMADDR+95H - SD card directory listing command. +CNV_ATOS: JP _CNV_ATOS ; UROMADDR+98H - Convert string from Ascii to Sharp Ascii + ;----------------------------------------- + + + ;----------------------------------------- + ; Initialisation and startup. + ;----------------------------------------- + ; + ; NB. Bank control registers are left selected. Any software needing access to the top 8 bytes of a + ; ROM/RAM page need to disable them, perform their actions then re-emable. + ; + JP ROMFS_1 ; Skip the reset vector. + ; +ROMFS_1: + LD A, (ROMBK1) ; Ensure all banks are at default + CP 8 ; If the ROMBK1 value is 255, an illegal value, then the machine has just started so initialise memory. + JR C, ROMFS_3 + XOR A ; Clear the lower stack space as we use it for variables. + LD B, 7*8 + LD HL, 01000H +ROMFS_2: LD (HL),A + INC HL + DJNZ ROMFS_2 + LD A,BNKCTRLDEF ; Set coded latch, SDCS high, BBMOSI to high and BBCLK to high which enables SDCLK. + LD (ROMCTL),A ; Save to memory the value in the bank control register - this register is used for SPI etc so need to remember its setting. + LD A,(ROMBK1) +ROMFS_3: LD (BNKSELMROM),A ; start up. + LD A, (ROMBK2) + LD (BNKSELUSER),A + + ;------------------------------------------------------------------------------- + ; START OF RFS INITIALISATION AND COMMAND ENTRY PROCESSOR FUNCTIONALITY. + ;------------------------------------------------------------------------------- + ; + ; Replacement command processor in place of the SA1510 command processor. + ; +MONITOR: IF FUSIONX_ENA = 0 + IN A,(CPLDINFO) ; See if a tranZPUter board is present. + AND 0E7H ; Mask out the CPLD Version and host HW. + LD C,A + CP 020H ; Upper bits specify the version, should be at least 1. + JR C,CHKTZ1 + AND 007H ; Get Hardware, should be an MZ-80A for RFS. + CP MODE_MZ80A + LD A,C + JR Z,CHKTZ1 + XOR A +CHKTZ1: AND 0E0H + ELSE + XOR A + ENDIF + LD (TZPU), A ; Flag = 0 if no tranZPUter present otherwise contains version (1 - 15). + LD HL,DSPCTL ; Setup address of display control register latch. + ; + XOR A ; Set the initial SDCFS active drive number. + LD (SDDRIVENO),A + ; + LD A, (ROMBK1) + CP 1 + JR Z, SET80CHAR + CP 0 + JR NZ, SIGNON + ; +SET40CHAR: LD A, 0 ; Using MROM in Bank 0 = 40 char mode. + LD E,(HL) ; Dummy operation to enable latch write via multivibrator. + LD (HL), A + LD (SCRNMODE), A + LD (SPAGE), A ; Allow MZ80A scrolling + JR SIGNON +SET80CHAR: LD A, 128 ; Using MROM in Bank 1 = 80 char mode. + LD E,(HL) ; Dummy operation to enable latch write via multivibrator. + LD (HL), A + LD A, 1 + LD (SCRNMODE), A + LD A, 0FFH + LD (SPAGE), A ; MZ80K Scrolling in 80 column mode for time being. + ; +SIGNON: LD A,0C4h ; Move cursor left to overwrite part of SA-1510 monitor banner. + LD E,004h ; 2 times. +SIGNON1: CALL DPCT + DEC E + JR NZ,SIGNON1 + ; + LD A,(TZPU) + OR A + JR Z,SIGNON2 + LD DE,MSGSONTZ + JR SIGNON3 + ; +SIGNON2: LD DE,MSGSON ; Sign on message, +SIGNON3: LD HL,PRINTMSG + CALL BKSW0to6 + ; JR ST1X + + ; Initialise SD card, report any errors. + LD HL, SDINIT ; SD Card Initialisation + CALL BKSW0to2 ; Call the initialisation routine. + LD A,L + OR A ; 0 = No error. + JR Z,ST1X + + ; Place error code in C to print as a number and report with the error message. + ADD A,'0' + LD C,A + LD DE,MSGSDINITER + LD HL,PRINTMSG + CALL BKSW0to6 + + ; Command processor, table based. + ; A line is inpt then a comparison made with entries in the table. If a match is found then the bank and function + ; address are extracted and a call to the function @ given bank made. The commands can be of variable length + ; but important to not that longer commands using the same letters as shorter commands must appear first in the table. + ; +ST1X: CALL NL ; Command line monitor extension. + LD A,'*' + CALL PRNT + LD DE,BUFER + CALL GETL + ; + LD A,(BUFER+1) ; Drive change number 0..9. Each number represents an RFS SDCFS Drive number. + CP '0' + JR C,CMDCMP + CP ':' + JR NC,CMDCMP + SUB '0' + LD D,A + LD A,(BUFER+2) + CP CR ; If a CR is present then we match, a drive selection number was entered. + LD A,D + JR NZ,CMDCMP + ; Simple command, just update the active drive number. + LD (SDDRIVENO),A + JR ST1X + ; +CMDCMP: XOR A ; Clear the result variable used by interbank calls. Some functions set this variable and we act on it. + LD (RESULT),A + LD HL,CMDTABLE +CMDCMP0: LD DE,BUFER+1 ; First command byte after the * prompt. + LD A,(HL) + CP 000H + JR Z,ST1X ; Skip processing on lines where just CR pressed. + BIT 7,A ; Bit 7 set on command properties indicates table end, exit if needed. + JR NZ,CMDNOCMP + + LD C,A ; Command properties into C + SET 6,C ; Assume command match. + AND 007H ; Mask out bytes in command mask. + LD B,A ; Number of bytes in command. + INC HL +CMDCMP1: LD A,(DE) ; Compare all bytes and reset match bit if we find a difference. + + CP (HL) + JR Z, CMDCMP2 + RES 6,C ; No command match. +CMDCMP2: INC DE + INC HL + DJNZ CMDCMP1 + BIT 6,C ; Bit 7 is still set then we have a command match. + JR NZ,CMDCMP3 + INC HL + INC HL ; Skip over function address + JR CMDCMP0 ; Try match next command. +CMDCMP3: LD A,(HL) ; Command function address into HL + INC HL + LD H,(HL) + LD L,A + PUSH HL + LD (TMPADR),DE ; Store the key buffer location where arguments start. + LD A,C + SRL A + SRL A + SRL A + AND 007H ; Mask out just the bank number of the command. + CP 000H + JR Z,CMDCMP6 ; No point using the bank switching logic for the current bank 0. + LD B,A + LD HL,BKSW0to0 ; Base address of bank switching functions. + LD DE,BKSW0to1 - BKSW0to0 ; DE is the number of bytes between bank switch calls. + OR A + JR Z,CMDCMP5 +CMDCMP4: ADD HL,DE + DJNZ CMDCMP4 +CMDCMP5: EX DE,HL ; Address of bank switch function into DE. + POP HL ; Get address of command into HL. + LD BC,CMDCMPEND + PUSH BC ; Address to return to after command is executed. + PUSH DE ; Now jump to DE which will switch to the correct bank and execute function at HL. + LD DE,(TMPADR) + RET +CMDCMP6: LD DE,CMDCMPEND ; Put return address onto stack. + PUSH DE + LD DE,(TMPADR) ; For the current bank, just jump to the function. + JP (HL) + +CMDNOCMP: LD DE,MSGBADCMD + LD HL,PRINTMSG + CALL BKSW0to6 +CMDCMPEND: LD A,(RESULT) + CP 0FEH ; A Result code of 0FEH means execute loaded code, address is in the CMT Header EXADR location. + JP NZ,ST1X + LD HL,(EXADR) + JP (HL) + + ; Monitor command table. This table contains the list of recognised commands along with the + ; handler function and bank in which it is located. + ; + ; 7 6 5:3 2:0 + ; END MATCH BANK SIZE +CMDTABLE: DB 000H | 000H | 000H | 002H ; Bit 2:0 = Command Size, 5:3 = Bank, 6 = Command match, 7 = Command table end. + DB "40" ; 40 Char screen mode. + DW SETMODE40 + DB 000H | 000H | 000H | 002H + DB "80" ; 80 Char screen mode. + DW SETMODE80 + ;DB 000H | 000H | 000H | 004H + ;DB "7008" ; Switch to 80 column MZ700 mode. + ;DW SETMODE7008 + ;DB 000H | 000H | 000H | 003H + ;DB "700" ; Switch to 40 column MZ700 mode. + ;DW SETMODE700 + DB 000H | 000H | 000H | 005H + DB "BASIC" ; Load and run BASIC SA-5510. + DW LOADBASIC + DB 000H | 000H | 020H | 001H + DB 'B' ; Bell. + DW SGX + DB 000H | 000H | 000H | 003H + DB "CPM" ; Load and run CPM. + DW LOADCPM + DB 000H | 000H | 018H | 002H + DB "CP" ; Copy Memory. + DW MCOPY + DB 000H | 000H | 018H | 001H + DB 'C' ; Clear Memory. + DW INITMEMX + DB 000H | 000H | 018H | 001H + DB 'D' ; Dump Memory. + DW DUMPX + DB 000H | 000H | 010H | 002H + DB "EC" ; Erase file. + DW ERASESD + DB 000H | 000H | 008H | 001H + DB 'F' ; RFS Floppy boot code. + DW FLOPPY + DB 000H | 000H | 008H | 001H + DB 0AAH ; Original Floppy boot code. + DW FDCK + DB 000H | 000H | 030H | 001H + DB 'H' ; Help screen. + DW HELP + DB 000H | 000H | 000H | 002H + DB "IR" ; List ROM directory. + DW DIRROM + DB 000H | 000H | 010H | 002H + DB "IC" ; List SD Card directory. + DW DIRSDCARD + DB 000H | 000H | 000H | 001H + DB 'J' ; Jump to address. + DW GOTOX + DB 000H | 000H | 020H | 004H + DB "LTNX" ; Load from CMT without auto execution. + DW LOADTAPENX + DB 000H | 000H | 020H | 002H + DB "LT" ; Load from CMT + DW LOADTAPE + DB 000H | 000H | 000H | 004H + DB "LRNX" ; Load from ROM without auto execution. + DW LOADROMNX + DB 000H | 000H | 000H | 002H + DB "LR" ; Load from ROM + DW LOADROM + DB 000H | 000H | 010H | 004H + DB "LCNX" ; Load from SDCARD without auto execution. + DW LOADSDCARDX + DB 000H | 000H | 010H | 002H + DB "LC" ; Load from SD CARD + DW LOADSDCARD + DB 000H | 000H | 020H | 001H + DB "L" ; Original Load from CMT + DW LOADTAPE + DB 000H | 000H | 018H | 001H + DB 'M' ; Edit Memory. + DW MCORX + DB 000H | 000H | 018H | 001H + DB 'P' ; Printer test. + DW PTESTX + DB 000H | 000H | 038H | 001H + DB 'R' ; Memory test. + DW MEMTEST + DB 000H | 000H | 018H | 004H + DB "SD2T" ; Copy SD Card to Tape. + DW SD2TAPE + DB 000H | 000H | 010H | 002H + DB "SC" ; Save to SD CARD + DW SAVESDCARD + DB 000H | 000H | 020H | 002H + DB "ST" ; Save to CMT + DW SAVEX + DB 000H | 000H | 020H | 001H + DB 'S' ; Save to CMT + DW SAVEX + DB 000H | 000H | 000H | 004H + DB "TEST" ; A test function used in debugging. + DW LOCALTEST + DB 000H | 000H | 018H | 004H + DB "T2SD" ; Copy Tape to SD Card. + DW TAPE2SD + DB 000H | 000H | 038H | 001H + DB 'T' ; Timer test. + DW TIMERTST + DB 000H | 000H | 000H | 001H + DB 'V' ; Verify CMT Save. + DW VRFYX + DB 000H | 000H | 000H | 001H + DB 'X' ; Exchange to hi load rom so DRAM = 0000:0CFFF + DW HIROM + DB 080H | 000H | 000H | 001H + + ;------------------------------------------------------------------------------- + ; END OF RFS INITIALISATION AND COMMAND ENTRY PROCESSOR FUNCTIONALITY. + ;------------------------------------------------------------------------------- + + ; A method used when testing hardware, scope and code will change but one of its purposes is to generate a scope signal pattern. + ; +LOCALTEST: LD A,64 + LD (0EFFBH),A + JP LOCALTEST + + + ;------------------------------------------------------------------------------- + ; START OF RFS COMMAND FUNCTIONS. + ;------------------------------------------------------------------------------- + + ; Method to branch execution to a user given address. + ; +GOTOX: CALL HEXIYX + JP (HL) + +HEXIYX: EX (SP),IY + POP AF + CALL HLHEX + JR C,HEXIYX2 + JP (IY) +HEXIYX2: POP AF ; Waste the intermediate caller address + RET + + + ;==================================== + ; + ; Screen Width Commands + ; + ;==================================== + +HIROM: LD A, (MEMSW) ; Swap ROM into high range slot. + LD A, ROMBANK2 + LD (ROMBK1),A ; Save bank being enabled. + LD (BNKSELMROM),A ; Switch to the hiload rom in bank 2. + JP 0C000H + +SETMODE40: LD A, ROMBANK0 ; Switch to 40Char monitor. + LD (ROMBK1),A + LD (BNKSELMROM),A + LD HL,DSPCTL ; Setup address of display control register latch. + LD A, 0 + LD E,(HL) ; Dummy operation to enable latch write via multivibrator. + LD (HL), A + JP MONIT + +SETMODE80: LD A, ROMBANK1 ; Switch to 80char monitor. + LD (ROMBK1),A + LD (BNKSELMROM),A + LD HL,DSPCTL ; Setup address of display control register latch. + LD A, 128 + LD E,(HL) ; Dummy operation to enable latch write via multivibrator. + LD (HL), A + JP MONIT + +NOTZPU: LD DE,MSGNOTZINST ; No tranZPUter installed. + LD HL,PRINTMSG + CALL BKSW0to6 + RET + + ; The RFS depends on variables stored in unused parts of the Monitor scratch area. + ; When switching into a compatibility mode the memory is switched and these variables go + ; out of scope. This routine clears the memory and sets any crucial variables after + ; memory switch so that a restart functions as expected. + ; +SETMODECLR: POP HL ; Get return address, will go OOS after memory mode change. + LD A,TZMM_COMPAT + OUT (MMCFG),A ; Set memory mode to compatibility. + XOR A ; Clear out the RFS variable area in the tranZPUter memory. + LD DE, 01000H + LD B, 030H +SETCLR_1: LD (DE),A + INC DE + DJNZ SETCLR_1 + JP (HL) ; Return to caller. + + ; Command to switch to the MZ700 compatibility mode with 80 column display. + ; +;SETMODE7008:LD A,(TZPU) ; Check there is a tranZPUter card installed. +; OR A +; JR Z,NOTZPU +; LD HL,DSPCTL ; Setup address of display control register latch. +; LD A, 128 ; Setup for 80char display. +; LD E,(HL) ; Dummy operation to enable latch write via multivibrator. +; LD (HL), A +; CALL SETMODECLR ; Set memory mode and clear variable area. +; LD A,ROMBANK5 ; Select the 80 column version of the 1Z-013A ROM. +;SETMODE_2: LD (ROMBK1),A +; LD (BNKSELMROM),A +; LD A,MODE_MZ700 ; Set the CPLD compatibility mode. +;SETMODE_3: OUT (CPLDCFG),A +; JP MONIT ; Cold start the monitor. + + ; Command to switch to the MZ700 compatibility mode with original 40 column display. + ; +;SETMODE700: LD A,(TZPU) ; Check there is a tranZPUter card installed. +; OR A +; JR Z,NOTZPU +; LD HL,DSPCTL ; Setup address of display control register latch. +; LD A, 0 ; Setup for 40char display. +; LD E,(HL) ; Dummy operation to enable latch write via multivibrator. +; LD (HL), A +; CALL SETMODECLR ; Set memory mode and clear variable area. +; LD A,ROMBANK4 ; Select the 40 column version of the 1Z-013A ROM. +; JR SETMODE_2 + + ;==================================== + ; + ; ROM File System Commands + ; + ;==================================== + + ; HL contains address of block to check. +ISMZF: PUSH BC + PUSH DE + PUSH HL + ; + LD A,(HL) + CP OBJCD ; Only interested in machine code images. + JR NZ, ISMZFNOT + ; + INC HL + LD DE,NAME ; Checks to confirm this is an MZF header. + LD B,FNSIZE ; Maximum of 17 characters, including terminator in filename. +ISMZFNXT: LD A,(HL) + LD (DE),A + CP 00DH ; If we find a terminator then this indicates potentially a valid name. + JR Z, ISMZFNXT3 + CP 000H ; Same applies for NULL terminator. + JR Z, ISMZFNXT3 + CP 020H ; >= Space + JR C, ISMZFNOT + CP 05DH ; =< ] + JR C, ISMZFNXT3 +ISMZFNXT2: CP 091H + JR C, ISMZFNOT ; DEL or > 0x7F, cant be a valid filename so this is not an MZF header. +ISMZFNXT3: INC DE + INC HL + DJNZ ISMZFNXT +ISMZFYES: CP A ; Set zero flag to indicate match. + +ISMZFNOT: POP HL + POP DE + POP BC + RET + + +_PRTDBG: IF ENADEBUG = 1 + PUSH HL + PUSH DE + PUSH BC + PUSH AF + LD A,(ROMBK1) + LD (BNKSELMROM),A ; Set the MROM bank back to original. + CALL PRTHL ; HL + LD A, ' ' + CALL PRNT + LD H,B + LD L,C + CALL PRTHL ; BC + LD A, ' ' + CALL PRNT + LD H,D + LD L,E + CALL PRTHL ; DE + LD A, ' ' + CALL PRNT + POP HL ; Get AF into HL. + PUSH HL + CALL PRTHL ; AF + LD A, ' ' + CALL PRNT + LD A, ':' + CALL PRNT + LD A, ' ' + CALL PRNT + ; CALL NL + ; CALL GETKY + LD A,(WRKROMBK1) + LD (BNKSELMROM),A ; Set the MROM bank back to scanned bank. + POP AF + POP BC + POP DE + POP HL + RET + ENDIF + +_PRTMZF: PUSH BC + PUSH DE + PUSH HL + ; + LD A,(ROMBK1) ; Ensure main MROM is switched in. + LD (BNKSELMROM),A + ; + LD A,(SCRNMODE) + CP 0 + LD H,47 + JR Z,PRTMZF0 + LD H,93 +PRTMZF0: LD A,(TMPLINECNT) ; Pause if we fill the screen. + LD E,A + INC E + CP H + JR NZ,PRTNOPAUSE + LD E, 0 +PRTPAUSE: CALL GETKY + CP ' ' + JR Z,PRTNOPAUSE + CP 'X' ; Exit from listing. + LD A,001H + JR Z,PRTMZF4 + JR PRTPAUSE +PRTNOPAUSE: LD A,E + LD (TMPLINECNT),A + ; + LD A, D ; Print out file number and increment. + CALL PRTHX + LD A, '.' ; File type is MACHINE CODE program. + CALL PRNT + LD DE,NAME ; Print out filename. + LD B,FNSIZE ; Maximum size of filename. +_PRTMSG: LD A,(DE) + INC DE + CP 000H + JR Z,_PRTMSGE + CP 00DH + JR Z,_PRTMSGE + CALL PRNT + DJNZ _PRTMSG + ; +_PRTMSGE: LD HL, (DSPXY) + ; + LD A,L + CP 20 + LD A,20 + JR C, PRTMZF2 + ; + LD A,(SCRNMODE) ; 40 Char mode? 2 columns of filenames displayed so NL. + CP 0 + JR Z,PRTMZF1 + ; + LD A,L ; 80 Char mode we print 4 columns of filenames. + CP 40 + LD A,40 + JR C, PRTMZF2 + ; + LD A,L + CP 60 + LD A,60 + JR C, PRTMZF2 + ; +PRTMZF1: CALL NL + JR PRTMZF3 +PRTMZF2: LD L,A + LD (DSPXY),HL +PRTMZF3: XOR A +PRTMZF4: OR A + PUSH AF + LD A, (WRKROMBK1) + LD (BNKSELMROM),A + POP AF + POP HL + POP DE + POP BC + RET + + + ; Method to list the directory of the ROM devices. + ; +DIRROM: ;DI ; Disable interrupts as we are switching out the main rom. + ; + LD A,1 ; Account for the title. + LD (TMPLINECNT),A + ; + LD DE,MSGRDIRLST ; Print out header. + LD HL,PRINTMSG + CALL BKSW0to6 + + ; D = File sequence number. + LD D,0 ; File numbering start. + + ; + ; Get directory of User ROM. + ; + LD A,ROMBANK3 + LD (WRKROMBK1),A + LD (BNKSELMROM),A + CALL DIRMROM + ; + ; Scan MROM Bank + ; B = Bank Page + ; C = Block in page + ; + LD B,MROMPAGES ; First 8 pages are reserved in MROM bank. + LD C,0 ; Block in page. + ; +DIRNXTPG: LD A,B + LD (WRKROMBK1), A + LD (BNKSELMROM),A ; Select bank. + + PUSH BC ; Preserve bank count/block number. + PUSH DE ; Preserve file numbering. + LD A,C + IF RFSSECTSZ >= 512 + RLCA + ENDIF + IF RFSSECTSZ >= 1024 + RLCA + ENDIF + LD B,A + LD C,0 + LD HL,RFS_ATRB ; Add block offset to get the valid block address. + ADD HL,BC + CALL ISMZF + POP DE + POP BC + JR NZ, DIRNOTMZF + ; + CALL PRTMZF + JR NZ,DIRNXTPGX + INC D ; Next file sequence number. + ; +DIRNOTMZF: INC C ; Next block. + LD A,C + CP MROMSIZE/RFSSECTSZ ; Max blocks per page reached? + JR C, DIRNXTPG2 + LD C,0 + INC B +DIRNXTPG2: LD A,B + CP 080h ; MROM has 128 banks of 4K, so stop when we reach 128. + JR NZ, DIRNXTPG + +DIRNXTPGX: LD A,(ROMBK1) + LD (BNKSELMROM),A ; Set the MROM bank back to original. + ;EI ; No need to block interrupts now as MROM bank restored. + RET ; End of scan, return to monitor + + + ; In: + ; HL = filename + ; D = File sequence number. + ; Out: + ; B = Bank Page file found + ; C = Block where found. + ; D = File sequence number. + ; Z set if found. +FINDMZF: PUSH DE + LD (TMPADR), HL ; Save name of program to load. + EX DE, HL ; String needed in DE for conversion. + LD HL,0FFFFh ; Tag the filenumber as invalid. + LD (TMPCNT), HL + CALL ConvertStringToNumber ; See if a file number was given instead of a filename. + JR NZ, FINDMZF0 ; + LD (TMPCNT), HL ; Store filenumber making load by filenumber valid. + ; + ; Scan MROM Bank + ; B = Bank Page + ; C = Block in page + ; +FINDMZF0: POP DE ; Get file sequence number in D. + LD B,MROMPAGES ; First 4 pages are reserved in User ROM bank. + LD C,0 ; Block in page. +FINDMZF1: LD A,B + LD (WRKROMBK1), A + LD (BNKSELMROM),A ; Select bank. +FINDMZF2: PUSH BC ; Preserve bank count/block number. + PUSH DE ; Preserve file numbering. + LD HL,RFS_ATRB ; Add block offset to get the valid block. + LD A,C + IF RFSSECTSZ >= 512 + RLCA + ENDIF + IF RFSSECTSZ >= 1024 + RLCA + ENDIF + LD B,A + LD C,0 + ADD HL,BC + + CALL ISMZF + POP DE + POP BC + LD A,(ROMBK1) + LD (BNKSELMROM),A ; Set the MROM bank back to original. + JR NZ, FINDMZF4 ; Z set if we found an MZF record. + INC HL ; Save address of filename. + PUSH HL + ; CALL PRTMZF ; Print out for confirmation. + LD HL,(TMPCNT) + LD A,H + CP 0FFh ; If TMPCNT tagged as 0xFF then we dont have a filenumber so must match filename. + JR Z, FINDMZF3 + LD A,L ; Check file number, load if match + CP D + JR NZ, FINDMZF3 ; Check name just in case. + POP HL + JR FINDMZFYES ; Else the filenumber matches so load the file. + +FINDMZF3: POP HL + PUSH DE + PUSH BC + LD DE,(TMPADR) ; Original DE put onto stack, original filename into HL + LD BC,FNSIZE + LD A,(WRKROMBK1) + LD (BNKSELMROM),A ; Select correct bank for comparison. + CALL CMPSTRING + POP BC + POP DE + JR Z, FINDMZFYES + INC D ; Next file sequence number. +FINDMZF4: INC C + LD A,C + CP MROMSIZE/RFSSECTSZ ; Max blocks per page reached? + JR C, FINDMZF5 + LD C,0 + INC B +FINDMZF5: LD A,B + CP 080h ; MROM has 128 banks of 4K, so stop when we get to 128. + JR NZ, FINDMZF1 + INC B + JR FINDMZFNO + +FINDMZFYES: ; Flag set by previous test. +FINDMZFNO: PUSH AF + LD A,(ROMBK1) + LD (BNKSELMROM),A ; Set the MROM bank back to original. + POP AF + RET + + + ; Load Program from ROM + ; IN DE Name of program to load. + ; OUT zero Set if string1 = string2, reset if string1 != string2. + ; carry Set if string1 > string2, reset if string1 <= string2. +LOADROMNX: LD L,0FFH + JR LOADROM1 +LOADROM: LD L,000H +LOADROM1: ;DI + PUSH HL ; Preserve execute flag. + EX DE,HL ; User ROM expects HL to have the filename pointer. + + PUSH HL ; Save pointer to filename for FINDMZF in Monitor ROM. + + ; D = File sequence number. + LD D,0 ; File numbering start. + ; + LD A,ROMBANK3 ; Activate the RFS Utilities MROM bank. + LD (WRKROMBK1), A + LD (BNKSELMROM),A + CALL MFINDMZF ; Try and find the file in User ROM via MROM utility. + POP HL + JR Z,MROMLOAD0 + ; + CALL FINDMZF ; Find the bank and block where the file resides. HL = filename. + JR Z, LROMLOAD + ; + JR LROMNTFND ; Requested file not found. + ; +MROMLOAD0: PUSH BC ; Preserve bank and block where MZF file found. + PUSH AF + LD A,(ROMBK1) ; Page in monitor so we can print a message. + LD (BNKSELMROM),A + LD DE,MSGLOAD+1 ; Skip initial CR. + LD BC,NAME + LD HL,PRINTMSG + CALL BKSW0to6 + LD A,(WRKROMBK1) ; Revert to MROM bank to load the application. + LD (BNKSELMROM),A + POP AF + POP BC + ; + CALL MROMLOAD ; Load the file from User ROM via MROM utility. + JP Z, LROMLOAD5 + +LROMNTFND: POP HL ; Dont need execute flag anymore so waste it. + LD A,(ROMBK1) + LD (BNKSELMROM),A + LD HL,PRINTMSG + LD DE,MSGNOTFND ; Not found + CALL BKSW0to6 +LOADROMEND:;EI + RET + + ; + ; Load program from RFS Bank 1 (MROM Bank) + ; +LROMLOAD: PUSH BC + ; + PUSH BC + LD DE,MSGLOAD+1 + LD BC,NAME + LD HL,PRINTMSG + CALL BKSW0to6 + POP BC + ; + LD A,B + LD (WRKROMBK1),A + LD (BNKSELMROM),A + ; + LD DE, IBUFE ; Copy the header into the work area. + LD HL, 00000h ; Add block offset to get the valid block. + LD A,C + IF RFSSECTSZ >= 512 + RLCA + ENDIF + IF RFSSECTSZ >= 1024 + RLCA + ENDIF + LD B,A + LD C,0 + ADD HL,BC + LD BC, MZFHDRSZ + LDIR + + PUSH HL + LD DE, (DTADR) + LD HL, (SIZE) + LD BC, RFSSECTSZ - MZFHDRSZ + SBC HL, BC + JR NC, LROMLOAD4 + LD HL, (SIZE) + JR LROMLOAD4 + + ; HL = address in active block to read. + ; B = Bank + ; C = Block +LROMLOAD2: LD A, B + LD (WRKROMBK1), A + LD (BNKSELMROM),A + +LROMLOAD3: PUSH BC + LD HL, 00000h + LD A, C + IF RFSSECTSZ >= 512 + RLCA + ENDIF + IF RFSSECTSZ >= 1024 + RLCA + ENDIF + LD B, A + LD C, 0 + ADD HL,BC + PUSH HL + + LD DE, (TMPADR) + LD HL, (TMPSIZE) + LD BC, RFSSECTSZ + SBC HL, BC + JR NC, LROMLOAD4 + LD BC, (TMPSIZE) + LD HL, 0 +LROMLOAD4: LD (TMPSIZE), HL ; HL contains remaining amount of bytes to load. + POP HL + ; + LD A, B ; Pre check to ensure BC is not zero. + OR C + JR Z, LROMLOAD8 + LDIR + LD BC, (TMPSIZE) + LD A, B ; Post check to ensure we still have bytes + OR C + JR Z, LROMLOAD8 + ; + LD (TMPADR),DE ; Address we are loading into. + POP BC +LROMLOAD6: INC C + LD A, C + CP MROMSIZE/RFSSECTSZ ; Max blocks per page reached? + JR C, LROMLOAD7 + LD C, 0 + INC B + ; +LROMLOAD7: LD A, B + CP 080h + JR Z, LROMLOAD5 + JR LROMLOAD2 + ; +LROMLOAD8: POP BC +LROMLOAD5: POP HL ; Retrieve execute flag. + LD A,(ROMBK1) + LD (BNKSELMROM),A ; Set the MROM bank back to original. + LD A,L ; Autoexecute turned off? + CP 0FFh + JP Z,LROMLOAD9 ; Go back to monitor if it has been, else execute. + LD HL,(EXADR) + ;EI ; No need to block interrupts now as MROM bank restored. + JP (HL) ; Execution address. +LROMLOAD9: RET + + + ; Quick method to load CPM. So long as the filename doesnt change this method will load and boot CPM. +LOADCPM: LD DE,CPMFN48 ; Load up the 48K version of CPM +LOADPRGNM: PUSH HL + LD HL,BUFER +LOADPRGNM1: LD A,(DE) + LD (HL),A + CP CR + JR Z,LOADPRGNM2 + INC DE + INC HL + JR LOADPRGNM1 +LOADPRGNM2: POP HL + LD DE,BUFER + JP LOADROM + + ; Quick method to load the basic interpreter. So long as the filename doesnt change this method will load and boot Basic. +LOADBASIC: LD DE,BASICFILENM + JR LOADPRGNM + +LOADPROG: LD HL,LOADSDCARD + CALL BKSW0to2 + RET + + ;------------------------------------------------------------------------------- + ; END OF RFS COMMAND FUNCTIONS. + ;------------------------------------------------------------------------------- + + ;------------------------------------------------------------------------------- + ; DEVICE DRIVERS - Intercept handlers to provide enhanced services to + ; existing MA-80A BIOS API functions. + ;------------------------------------------------------------------------------- + + ; Method to set the RFS Drive number from the Load/Save string provided. +SETDRIVE: LD A,(DE) ; If a drive is given it will be in format : + OR A ; Exit if null or CR found, no drive specifier present. + JR Z,SETDRV3 + CP 00DH + JR Z,SETDRV3 + CP '"' ; String quotes, skip over. + JR NZ,SETDRV1 + INC DE + JR SETDRIVE + ; +SETDRV1: LD A,(DE) ; Check for :, if no colon exit. + LD C,A + INC DE + LD A,(DE) + DEC DE + CP ':' + JR NZ, SETDRV3 + ; + LD A,C + CP 'C' ; CMT unit specified by C: + JR Z,SETDRV2 + SUB '0' ; Check the drive number, should be in range 0..9 + JP C,SD_INVDRV + CP 10 + JP NC,SD_INVDRV +SETDRV2: INC DE + LD (SDDRIVENO),A ; Store drive number for later use. + XOR A + LD (CMTFILENO),A ; Setup the starting file number for sequential file reads (ie. when no filename given). + ; + PUSH DE ; Need to remove the drive qualifier once processed. + PUSH DE + INC DE + INC DE ; Move onto filename. + EX DE,HL + POP DE + LD BC,SDDIR_FNSZ + LDIR + POP DE + ; +SETDRV3: XOR A + RET + + ; Method to check if the active drive is the CMT. +CHECKCMT: LD A,(SDDRIVENO) + CP 'C' + RET + + ; Convert the lower 4 bits of A into a Hex character. +TOHEXDIGIT: AND 00FH ; Simple logic, add 30H to get 0..9, add additional 7 if value >= 10 to get digits A..F. + CP 00AH + JR C,NOADD + ADD A,007H +NOADD: ADD A,030H + RET + + ; Convert a number into Hex string and store in buffer pointed to by DE. + ; +TOHEX: PUSH DE + PUSH AF ; Save AF to retrieve lower 4 bits. + RRCA ; Shift upper 4 bits to lower to convert to hex. + RRCA + RRCA + RRCA + CALL TOHEXDIGIT + LD (DE),A ; Store and convert lower 4 bits. + INC DE + POP AF + CALL TOHEXDIGIT + LD (DE),A + INC DE + LD A,CR ; Terminate with a CR. + LD (DE),A + POP DE ; DE back to start of string. + RET + + ; Handler to intercept the CMT Read Header Information call and insert selectable + ; SD Card RFS Drive functionality. + ; DE contains a pointer to memory containing the file to load. If (DE) = NULL then + ; load the next sequential file from the SD card directory. + ; DE = Filename. Can contain a drive specifier in format : + ; + ; No registers or flags should be affected as we dont know the caller state. +_CMT_RDINF: CALL SETDRIVE ; Set drive if specified. + RET NZ + CALL CHECKCMT ; If drive is set to the CMT Unit exit with Z set so that the original CMT handlers are called. + JP Z,?RDI + LD A,(DE) ; Check to see if empty string given, if so expand the default Next file number into the buffer. + CP CR + JR NZ,_CMT_RDINF1 + LD A,(CMTFILENO) ; Get next sequential number and convert to hex. + PUSH AF + CALL TOHEX + POP AF + INC A ; Increment number so next call retrieves the next sequential file. + LD (CMTFILENO),A + ; +_CMT_RDINF1:PUSH DE + LD HL,LOADSDINF ; DE already points to the filename, call LOADSDINF to locate it on the SD card and setup the header. + CALL BKSW0to2 + ; Copy the filename into the Buffer provided allowing for file number to name expansion. + POP DE + LD HL,NAME + LD BC,SDDIR_FNSZ + LDIR + ; + LD A,(RESULT) + OR A + RET Z ; 0 = success, return with carry clear. + SCF ; > 0 = fail, return with carry set. + RET + + ; Handler to intercept the CMT Read Data call and insert selectable SD Card RFS + ; Drive functionality. + ; + ; No registers or flags should be affected as we dont know the caller state. +_CMT_RDDATA:LD HL,LOADSDDATA + CALL BKSW0to2 + LD A,(RESULT) + OR A + JR NZ,_CMT_RDERR + RET +_CMT_RDERR: SCF + RET + + ; Handler to intercept the CMT Write Header Information call and insert selectable + ; SD Card RFS Drive functionality. + ; + ; No registers or flags should be affected as we dont know the caller state. + ; + ; At the moment, the WRINF call only creates a filename if non specified. The actual write to file occurs in WRDATA. Once I have more understanding of + ; how the sequential data mode works I can adapt it to be compatible. +_CMT_WRINF: LD DE,NAME ; Caller has already setup the CMT header so we use this for processing. + ; + CALL SETDRIVE ; Set drive if specified. + RET NZ + CALL CHECKCMT + JP Z,?WRI + ; + LD A,(DE) ; Check to see if empty string given, if so create a default name. + CP CR + JR NZ,_CMT_WRINF1 + ; + LD HL,DEFAULTFN + LD BC,DEFAULTFNE - DEFAULTFN + LDIR + LD A,(CMTFILENO) ; Get next sequential number and convert to hex. + PUSH AF + CALL TOHEX + POP AF + INC A ; Increment number so next call retrieves the next sequential file. + LD (CMTFILENO),A + ; +_CMT_WRINF1:LD A,0 ; Always success as nothing is written. + OR A + RET + + ; Handler to intercept the CMT Write Data call and insert selectable SD Card RFS + ; Drive functionality. + ; + ; No registers or flags should be affected as we dont know the caller state. +_CMT_WRDATA: LD HL,SAVESDDATA + CALL BKSW0to2 + LD A,(RESULT) + OR A + JR NZ,_CMT_RDERR + RET + + ; Handler to intercept the CMT Verify Data call and insert selectable SD Card + ; RFS Drive functionality. + ; + ; No registers or flags should be affected as we dont know the caller state. +_CMT_VERIFY:CALL SETDRIVE ; Set drive if specified. + RET NZ + CALL CHECKCMT + JR Z,_VERIFY + LD DE,MSGNOVERIFY + JR SD_ERRMSG + +_VERIFY: JP ?VRFY + +SD_INVDRV: LD DE,MSGINVDRV ; Invalid drive specified. + JR SD_ERRMSG +SD_NOTFND: LD DE,MSGNOTFND +SD_ERRMSG: LD HL,PRINTMSG + CALL BKSW0to6 ; Print message that file wasnt found. + LD A,1 + OR A + RET + + ; Method to list the contents of the active RFS drive number. +_CMT_DIR: CALL SETDRIVE ; Change to the given drive. + RET NZ + CALL CHECKCMT ; Cannot DIR tape drive so give error. + JP Z,_CMT_NODIR + LD HL,DIRSDCARD + CALL BKSW0to2 ; Call the standard RFS directory command. + RET +_CMT_NODIR: LD DE,MSGNOCMTDIR + JR SD_ERRMSG + + ; Stub to call the ASCII to Sharp ASCII conversion routine stored in Bank 5. + ; Inputs: DE = String to convert, NULL or CR terminated. + ; B = Maximum number of characters to convert. + ; All registers except AF preserved. + ; +_CNV_ATOS: PUSH HL + LD HL,CNVSTR_AS + CALL BKSW0to5 + POP HL + RET + + ;------------------------------------------------------------------------------- + ; END OF DEVICE DRIVERS + ;------------------------------------------------------------------------------- + + ;-------------------------------------- + ; + ; Message table - Refer to bank 6 for + ; all messages. + ; + ;-------------------------------------- + + ; Quick load program names. +CPMFN48: DB "CPM223RFS", 00DH +BASICFILENM:DB "BASIC SA-5510RFS", 00DH +DEFAULTFN: DB "DEFAULT" +DEFAULTFNE: EQU $ + + ; Bring in additional resources. + USE_CMPSTRING: EQU 1 + USE_SUBSTRING: EQU 0 + USE_INDEX: EQU 0 + USE_STRINSERT: EQU 0 + USE_STRDELETE: EQU 0 + USE_CONCAT: EQU 0 + USE_CNVUPPER: EQU 1 + USE_CNVCHRTONUM: EQU 1 + USE_ISNUMERIC: EQU 1 + USE_CNVSTRTONUM: EQU 1 + ; + INCLUDE "macros.asm" + INCLUDE "rfs_utilities.asm" + ; + ; Ensure we fill the entire 2K by padding with FF's. + ; + ALIGN 0EFF8h + ORG 0EFF8h + DB 0FFh,0FFh,0FFh,0FFh,0FFh,0FFh,0FFh,0FFh + +MEND: + + ; + ; Include all other banks which make up the RFS User cited ROM. + ; + INCLUDE "rfs_bank1.asm" + INCLUDE "rfs_bank2.asm" + INCLUDE "rfs_bank3.asm" + INCLUDE "rfs_bank4.asm" + INCLUDE "rfs_bank5.asm" + INCLUDE "rfs_bank6.asm" + INCLUDE "rfs_bank7.asm" diff --git a/asm/rfs_bank1.asm b/asm/rfs_bank1.asm new file mode 100644 index 0000000..6250a89 --- /dev/null +++ b/asm/rfs_bank1.asm @@ -0,0 +1,536 @@ +;-------------------------------------------------------------------------------------------------------- +;- +;- Name: rfs_bank1.asm +;- Created: July 2019 +;- Author(s): Philip Smart +;- Description: Sharp MZ series Rom Filing System. +;- This assembly language program is written to utilise the banked flashroms added with +;- the MZ-80A RFS hardware upgrade. +;- +;- Credits: +;- Copyright: (c) 2018-2023 Philip Smart +;- +;- History: July 2019 - Merged 2 utilities to create this compilation. +; May 2020 - Bank switch changes with release of v2 pcb with coded latch. The coded +; latch adds additional instruction overhead as the control latches share +; the same address space as the Flash RAMS thus the extra hardware to +; only enable the control registers if a fixed number of reads is made +; into the upper 8 bytes which normally wouldnt occur. Caveat - ensure +; that no loop instruction is ever placed into EFF8H - EFFFH. +;- +;-------------------------------------------------------------------------------------------------------- +;- This source file is free software: you can redistribute it and-or modify +;- it under the terms of the GNU General Public License as published +;- by the Free Software Foundation, either version 3 of the License, or +;- (at your option) any later version. +;- +;- This source file is distributed in the hope that it will be useful, +;- but WITHOUT ANY WARRANTY; without even the implied warranty of +;- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +;- GNU General Public License for more details. +;- +;- You should have received a copy of the GNU General Public License +;- along with this program. If not, see . +;-------------------------------------------------------------------------------------------------------- + + ;============================================================ + ; + ; USER ROM BANK 1 - Floppy Disk Controller functions. + ; + ;============================================================ + ORG UROMADDR + + ;-------------------------------- + ; Common code spanning all banks. + ;-------------------------------- + NOP + LD B,16 ; If we read the bank control reset register 15 times then this will enable bank control and then the 16th read will reset all bank control registers to default. +ROMFS1_0: LD A,(BNKCTRLRST) + DJNZ ROMFS1_0 ; Apply the default number of coded latch reads to enable the bank control registers. + LD A,BNKCTRLDEF ; Set coded latch, SDCS high, BBMOSI to high and BBCLK to high which enables SDCLK. + LD (BNKCTRL),A + NOP + NOP + NOP + XOR A ; We shouldnt arrive here after a reset, if we do, select UROM bank 0 + LD (BNKSELMROM),A + NOP + NOP + NOP + LD (BNKSELUSER),A ; and start up - ie. SA1510 Monitor - this occurs as User Bank 0 is enabled and the jmp to 0 is coded in it. + ; + ; No mans land... this should have switched to Bank 0 and at this point there is a jump to 00000H. + JP 00000H ; This is for safety!! + + ;------------------------------------------------------------------------------------------ + ; Bank switching code, allows a call to code in another bank. + ; This code is duplicated in each bank such that a bank switch doesnt affect logic flow. + ;------------------------------------------------------------------------------------------ + ALIGN_NOPS UROMBSTBL + ; +BKSW1to0: PUSH AF + LD A, ROMBANK1 ; Calling bank (ie. us). + PUSH AF + LD A, ROMBANK0 ; Required bank to call. + JR BKSW1_0 +BKSW1to1: PUSH AF + LD A, ROMBANK1 ; Calling bank (ie. us). + PUSH AF + LD A, ROMBANK1 ; Required bank to call. + JR BKSW1_0 +BKSW1to2: PUSH AF + LD A, ROMBANK1 ; Calling bank (ie. us). + PUSH AF + LD A, ROMBANK2 ; Required bank to call. + JR BKSW1_0 +BKSW1to3: PUSH AF + LD A, ROMBANK1 ; Calling bank (ie. us). + PUSH AF + LD A, ROMBANK3 ; Required bank to call. + JR BKSW1_0 +BKSW1to4: PUSH AF + LD A, ROMBANK1 ; Calling bank (ie. us). + PUSH AF + LD A, ROMBANK4 ; Required bank to call. + JR BKSW1_0 +BKSW1to5: PUSH AF + LD A, ROMBANK1 ; Calling bank (ie. us). + PUSH AF + LD A, ROMBANK5 ; Required bank to call. + JR BKSW1_0 +BKSW1to6: PUSH AF + LD A, ROMBANK1 ; Calling bank (ie. us). + PUSH AF + LD A, ROMBANK6 ; Required bank to call. + JR BKSW1_0 +BKSW1to7: PUSH AF + LD A, ROMBANK1 ; Calling bank (ie. us). + PUSH AF + LD A, ROMBANK7 ; Required bank to call. + ; +BKSW1_0: PUSH HL ; Place function to call on stack + LD HL, BKSWRET1 ; Place bank switchers return address on stack. + EX (SP),HL + LD (TMPSTACKP),SP ; Save the stack pointer as some old code corrupts it. + LD (BNKSELUSER), A ; Repeat the bank switch B times to enable the bank control register and set its value. + JP (HL) ; Jump to required function. +BKSWRET1: POP AF ; Get bank which called us. + LD (BNKSELUSER), A ; Return to that bank. + POP AF + RET + +FDCCMD EQU 01000H +MOTON EQU 01001H +TRK0FD1 EQU 01002H +TRK0FD2 EQU 01003H +TRK0FD3 EQU 01004H +TRK0FD4 EQU 01005H +RETRIES EQU 01006H +BPARA EQU 01008H + + ;------------------------------------------------------------------------------- + ; START OF FLOPPY DISK CONTROLLER FUNCTIONALITY + ;------------------------------------------------------------------------------- + + ; Method to check if the floppy interface ROM is present and if it is, jump to its entry point. + ; +FDCK: CALL FDCKROM ; Check to see if the Floppy ROM is present, exit if it isnt. + CALL Z,0F000h + RET ; JP CMDCMPEND +FDCKROM: LD A,(0F000h) + OR A + RET + +FLOPPY: PUSH DE ; Preserve pointer to input buffer. + LD DE,BPARA ; Copy disk parameter block into RAM work area. (From) + LD HL,PRMBLK ; (To) + LD BC,0000BH ; 11 bytes of config data. + LDIR ; BC=0, HL=F0E8, DE=1013 + POP DE ; init 1001-1005, port $DC mit $00 + LD A,(DE) ; If not at the end of the line, then process as the boot disk number. + CP 00Dh ; + JR NZ,GETBOOTDSK ; + CALL DSKINIT ; Initialise disk and flags. +L000F: LD DE,MSGBOOTDRV ; + LD HL,PRINTMSG + CALL BKSW1to6 + LD DE,011A3H ; + CALL GETL ; + LD A,(DE) ; + CP 01BH ; Check input value is in range 1-4. + JP Z,SS ; + LD HL,0000CH ; + ADD HL,DE ; + LD A,(HL) ; + CP 00DH ; + JR Z,L003A ; +GETBOOTDSK:CALL HEX ; Convert number to binary + JR C,L000F ; If illegal, loop back and re-prompt. + DEC A ; + CP 004H ; Check in range, if not loop back. + JR NC,L000F ; + LD (BPARA),A ; Store in parameter block. +L003A: LD IX,BPARA ; Point to drive number., + CALL DSKREAD ; Read sector 1 of trk 0 + LD HL,0CE00H ; Now compare the first 7 bytes of what was read to see if this is a bootable disk. + LD DE,DSKID ; + LD B,007H ; +L0049: LD C,(HL) ; + LD A,(DE) ; + CP C ; + JP NZ,L008C ; If NZ then this is not a master disk, ie not bootable, so error exit with message. + INC HL ; + INC DE ; + DJNZ L0049 ; + LD DE,MSGIPLLOAD ; + LD HL,PRINTMSG + CALL BKSW1to6 + LD DE,0CE07H ; Program name stored at 8th byte in boot sector. + LD HL,PRTFN + CALL BKSW1to6 + LD HL,(0CE16H) ; Get the load address + LD (IX+005H),L ; And store in parameter block at 100D/100E + LD (IX+006H),H ; + INC HL + DEC HL + JR NZ, NOTCPM ; If load address is 0 then where loading CPM. + ; LD A,(MEMSW) ; Page out ROM. +NOTCPM: LD HL,(0CE14H) ; Get the size + LD (IX+003H),L ; And store in parameter block at 100B/100C + LD (IX+004H),H ; + LD HL,(0CE1EH) ; Get logical sector number + LD (IX+001H),L ; And store in parameter block at 1009/100A + LD (IX+002H),H ; + CALL DSKREAD ; Read the required data and store in memory. + CALL DSKINIT ; Reset the disk ready for next operation. + LD HL,(0CE18H) ; Get the execution address + JP (HL) ; And execute. + +DSKLOADERR:LD DE,MSGLOADERR ; Loading error message + JR L008F ; (+003h) + +L008C: LD DE,MSGDSKNOTMST ; This is not a boot/master disk message. +L008F: LD HL,PRINTMSG + CALL BKSW1to6 + LD DE,ERRTONE ; Play error tone. + CALL MELDY + ; + LD SP,(TMPSTACKP) ; Recover the correct stack pointer before exit. + RET ; JP SS + +L0104: LD A,(MOTON) ; motor on flag + RRCA ; motor off? + CALL NC,DSKMOTORON ; yes, set motor on and wait + LD A,(IX+000H) ;drive no + OR 084H ; + OUT (0DCH),A ; Motor on for drive 0-3 + XOR A ; + LD (FDCCMD),A ; clr latest FDC command byte + LD HL,00000H ; +L0119: DEC HL ; + LD A,H ; + OR L ; + JP Z,DSKERR ; Reset and print message that this is not a bootable disk. + IN A,(0D8H) ; Status register. + CPL ; + RLCA ; + JR C,L0119 ; Wait on motor off (bit 7) + LD C,(IX+000H) ; Drive number + LD HL,TRK0FD1 ; 1 track 0 flag for each drive + LD B,000H ; + ADD HL,BC ; Compute related flag 1002/1003/1004/1005 + BIT 0,(HL) ; + JR NZ,L0137 ; + CALL DSKSEEKTK0 ; Seek track 0. + SET 0,(HL) ; Set bit 0 of trk 0 flag +L0137: RET + + ; Turn disk motor on. +DSKMOTORON:LD A,080H + OUT (0DCH),A ; Motor on + LD B,010H ; +L013E: CALL L02C7 ; + DJNZ L013E ; Wait until becomes ready. + LD A,001H ; Set motor on flag. + LD (MOTON),A ; + RET + +L0149: LD A,01BH + CALL DSKCMD + AND 099H + RET + + ; Initialise drive and reset flags, Set motor off +DSKINIT: XOR A + OUT (0DCH),A ; Motor on/off + LD (TRK0FD1),A ; Track 0 flag drive 1 + LD (TRK0FD2),A ; Track 0 flag drive 2 + LD (TRK0FD3),A ; Track 0 flag drive 3 + LD (TRK0FD4),A ; Track 0 flag drive 4 + LD (MOTON),A ; Motor on flag + RET + +DSKSEEKTK0:LD A,00BH ; Restore command, seek track 0. + CALL DSKCMD ; Send command to FDC. + AND 085H ; Process result. + XOR 004H + RET Z + JP DSKERR + +DSKCMD: LD (FDCCMD),A ; Store latest FDC command. + CPL ; Compliment it (FDC bit value is reversed). + OUT (0D8H),A ; Send command to FDC. + CALL L017E ; Wait to become ready. + IN A,(0D8H) ; Get status register. + CPL ; Inverse (FDC is reverse bit logic). + RET + +L017E: PUSH DE + PUSH HL + CALL L02C0 + LD E,007H +L0185: LD HL,00000H +L0188: DEC HL + LD A,H + OR L + JR Z,L0196 ; (+009h) + IN A,(0D8H) + CPL + RRCA + JR C,L0188 ; (-00bh) + POP HL + POP DE + RET + +L0196: DEC E + JR NZ,L0185 ; (-014h) + JP DSKERR + +L019C: PUSH DE + PUSH HL + CALL L02C0 + LD E,007H +L01A3: LD HL,00000H +L01A6: DEC HL + LD A,H + OR L + JR Z,L01B4 ; (+009h) + IN A,(0D8H) + CPL + RRCA + JR NC,L01A6 ; (-00bh) + POP HL + POP DE + RET + +L01B4: DEC E + JR NZ,L01A3 ; (-014h) + JP DSKERR + + ; Read disk starting at the first logical sector in param block 1009/100A + ; Continue reading for the given size 100B/100C and store in the location + ; Pointed to by the address stored in the parameter block. 100D/100E +DSKREAD: CALL L0220 ; Compute logical sector-no to track-no & sector-no, retries=10 +L01BD: CALL L0229 ; Set current track & sector, get load address to HL +L01C0: CALL L0249 ; Set side reg + CALL L0149 ; Command 1b output (seek) + JR NZ,L0216 ; + CALL L0259 ; Set track & sector reg + PUSH IX ; Save 1008H + LD IX, 0F3FEH ; As below. L03FE + LD IY,L01DF ; Read sector into memory. + ;DI + LD A,094H ; Latest FDC command byte + CALL L028A +L01DB: LD B,000H + JP (IX) + + ; Get data from disk sector to staging area (CE00). +L01DF: INI + LD A,(DE) ; If not at the end of the line, then process as the boot disk number. + JP NZ, 0F3FEH ; This is crucial, as the Z80 is running at 2MHz it is not fast enough so needs + ; hardware acceleration in the form of a banked ROM, if disk not ready jumps to IX, if + ; data ready, jumps to IY. L03FE + POP IX + INC (IX+008H) ; Increment current sector number + LD A,(IX+008H) ; Load current sector number + PUSH IX ; Save 1008H + LD IX, 0F3FEH ; As above. L03FE + CP 011H ; Sector 17? Need to loop to next track. + JR Z,L01FB + DEC D + JR NZ,L01DB + JR L01FC ; (+001h) + +L01FB: DEC D +L01FC: CALL L0294 + CALL L02D2 + POP IX + IN A,(0D8H) + CPL + AND 0FFH + JR NZ,L0216 ; (+00bh) + CALL L0278 + JP Z,L021B + LD A,(IX+007H) + JR L01C0 ; (-056h) + +L0216: CALL L026A + JR L01BD ; (-05eh) + +L021B: LD A,080H + OUT (0DCH),A ; Motor on + RET + +L0220: CALL L02A3 ; compute logical sector no to track no & sector no + LD A,00AH ; 10 retries + LD (RETRIES),A + RET + + ; Set current track & sector, get load address to HL +L0229: CALL L0104 + LD D,(IX+004H) ; Number of sectors to read + LD A,(IX+003H) ; Bytes to read + OR A ; 0? + JR Z,L0236 ; Yes + INC D ; Number of sectors to read + 1 +L0236: LD A,(IX+00AH) ; Start sector number + LD (IX+008H),A ; To current sector number + LD A,(IX+009H) ; Start track number + LD (IX+007H),A ; To current track number + LD L,(IX+005H) ; Load address low byte + LD H,(IX+006H) ; Load address high byte + RET + + ; Compute side/head. +L0249: SRL A ; Track number even? + CPL ; + OUT (0DBH),A ; Output track no. + JR NC,L0254 ; Yes, even, set side/head 1 + LD A,001H ; No, odd, set side/head 0 + JR L0255 + + ; Set side/head register. +L0254: XOR A ; Side 0 +L0255: CPL ; Side 1 + OUT (0DDH),A ; Side/head register. + RET + + ; Set track and sector register. +L0259: LD C,0DBH + LD A,(IX+007H) ; Current track number + SRL A + CPL + OUT (0D9H),A ; Track reg + LD A,(IX+008H) ; Current sector number + CPL + OUT (0DAH),A ; Sector reg + RET + +L026A: LD A,(RETRIES) + DEC A + LD (RETRIES),A + JP Z,DSKERR + CALL DSKSEEKTK0 + RET + +L0278: LD A,(IX+008H) + CP 011H + JR NZ,L0287 ; (+008h) + LD A,001H + LD (IX+008H),A + INC (IX+007H) +L0287: LD A,D + OR A + RET + +L028A: LD (FDCCMD),A + CPL + OUT (0D8H),A + CALL L019C + RET + +L0294: LD A,0D8H + CPL + OUT (0D8H),A + CALL L017E + RET + +DSKERR: CALL DSKINIT + JP DSKLOADERR + + ; Logical sector number to physical track and sector. +L02A3: LD B,000H + LD DE,00010H ; No of sectors per trk (16) + LD L,(IX+001H) ; Logical sector number + LD H,(IX+002H) ; 2 bytes in length + XOR A +L02AF: SBC HL,DE ; Subtract 16 sectors/trk + JR C,L02B6 ; Yes, negative value + INC B ; Count track + JR L02AF ; Loop +L02B6: ADD HL,DE ; Reset HL to the previous + LD H,B ; Track + INC L ; Correction +1 + LD (IX+009H),H ; Start track no + LD (IX+00AH),L ; Start sector no + RET + +L02C0: PUSH DE + LD DE,00007H + JP L02CB + +L02C7: PUSH DE + LD DE,01013H +L02CB: DEC DE + LD A,E + OR D + JR NZ,L02CB ; (-005h) + POP DE + RET + +L02D2: PUSH AF + LD A,(0119CH) + CP 0F0H + JR NZ,L02DB ; (+001h) + ;EI +L02DB: POP AF + RET + +;wait on bit 0 and bit 1 = 0 of state reg +L0300: IN A,(0D8H) ; State reg + RRCA + JR C,L0300 ; Wait on not busy + RRCA + JR C,L0300 ; Wait on data reg ready + JP (IY) ; to f1df + + ;------------------------------------------------------------------------------- + ; END OF FLOPPY DISK CONTROLLER FUNCTIONALITY + ;------------------------------------------------------------------------------- + + ;-------------------------------------- + ; + ; Message table - Refer to bank 6 for + ; all messages. + ; + ;-------------------------------------- + + ; Error tone. +ERRTONE: DB "A0", 0D7H, "ARA", 0D7H, "AR", 00DH + + ; Identifier to indicate this is a valid boot disk +DSKID: DB 002H, "IPLPRO" + + ; Parameter block to indicate configuration and load area. +PRMBLK: DB 000H, 000H, 000H, 000H, 001H, 000H, 0CEH, 000H, 000H, 000H, 000H + + ; Ensure we fill the entire 2K by padding with FF's. + ALIGN 0EBFDh + DB 0FFh + +L03FE: JP (IY) + + ALIGN 0EFF8h + ORG 0EFF8h + DB 0FFh,0FFh,0FFh,0FFh,0FFh,0FFh,0FFh,0FFh diff --git a/asm/rfs_bank2.asm b/asm/rfs_bank2.asm new file mode 100644 index 0000000..69baa0b --- /dev/null +++ b/asm/rfs_bank2.asm @@ -0,0 +1,1605 @@ +;-------------------------------------------------------------------------------------------------------- +;- +;- Name: rfs_bank2.asm +;- Created: July 2019 +;- Author(s): Philip Smart +;- Description: Sharp MZ series Rom Filing System. +;- This assembly language program is written to utilise the banked flashroms added with +;- the MZ-80A RFS hardware upgrade. +;- +;- Credits: +;- Copyright: (c) 2018-2023 Philip Smart +;- +;- History: July 2019 - Merged 2 utilities to create this compilation. +; May 2020 - Bank switch changes with release of v2 pcb with coded latch. The coded +; latch adds additional instruction overhead as the control latches share +; the same address space as the Flash RAMS thus the extra hardware to +; only enable the control registers if a fixed number of reads is made +; into the upper 8 bytes which normally wouldnt occur. Caveat - ensure +; that no loop instruction is ever placed into EFF8H - EFFFH. +; July 2020 - Bug fixes and additions. +; July 2020 - Updated for the v2.1 hardware. RFS can run with a tranZPUter board with +; or without the K64 I/O processor. RFS wont use the K64 processor all +; operations are done by the Z80 under RFS. +;- +;-------------------------------------------------------------------------------------------------------- +;- This source file is free software: you can redistribute it and-or modify +;- it under the terms of the GNU General Public License as published +;- by the Free Software Foundation, either version 3 of the License, or +;- (at your option) any later version. +;- +;- This source file is distributed in the hope that it will be useful, +;- but WITHOUT ANY WARRANTY; without even the implied warranty of +;- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +;- GNU General Public License for more details. +;- +;- You should have received a copy of the GNU General Public License +;- along with this program. If not, see . +;-------------------------------------------------------------------------------------------------------- + + ;=========================================================== + ; + ; USER ROM BANK 2 - SD Card Controller functions. + ; + ;=========================================================== + ORG UROMADDR + + ;-------------------------------- + ; Common code spanning all banks. + ;-------------------------------- + NOP + LD B,16 ; If we read the bank control reset register 15 times then this will enable bank control and then the 16th read will reset all bank control registers to default. +ROMFS2_0: LD A,(BNKCTRLRST) + DJNZ ROMFS2_0 ; Apply the default number of coded latch reads to enable the bank control registers. + LD A,BNKCTRLDEF ; Set coded latch, SDCS high, BBMOSI to high and BBCLK to high which enables SDCLK. + LD (BNKCTRL),A + NOP + NOP + NOP + XOR A ; We shouldnt arrive here after a reset, if we do, select UROM bank 0 + LD (BNKSELMROM),A + NOP + NOP + NOP + LD (BNKSELUSER),A ; and start up - ie. SA1510 Monitor - this occurs as User Bank 0 is enabled and the jmp to 0 is coded in it. + ; + ; No mans land... this should have switched to Bank 0 and at this point there is a jump to 00000H. + JP 00000H ; This is for safety!! + + + ;------------------------------------------------------------------------------------------ + ; Bank switching code, allows a call to code in another bank. + ; This code is duplicated in each bank such that a bank switch doesnt affect logic flow. + ;------------------------------------------------------------------------------------------ + ALIGN_NOPS UROMBSTBL + ; +BKSW2to0: PUSH AF + LD A, ROMBANK2 ; Calling bank (ie. us). + PUSH AF + LD A, ROMBANK0 ; Required bank to call. + JR BKSW2_0 +BKSW2to1: PUSH AF + LD A, ROMBANK2 ; Calling bank (ie. us). + PUSH AF + LD A, ROMBANK1 ; Required bank to call. + JR BKSW2_0 +BKSW2to2: PUSH AF + LD A, ROMBANK2 ; Calling bank (ie. us). + PUSH AF + LD A, ROMBANK2 ; Required bank to call. + JR BKSW2_0 +BKSW2to3: PUSH AF + LD A, ROMBANK2 ; Calling bank (ie. us). + PUSH AF + LD A, ROMBANK3 ; Required bank to call. + JR BKSW2_0 +BKSW2to4: PUSH AF + LD A, ROMBANK2 ; Calling bank (ie. us). + PUSH AF + LD A, ROMBANK4 ; Required bank to call. + JR BKSW2_0 +BKSW2to5: PUSH AF + LD A, ROMBANK2 ; Calling bank (ie. us). + PUSH AF + LD A, ROMBANK5 ; Required bank to call. + JR BKSW2_0 +BKSW2to6: PUSH AF + LD A, ROMBANK2 ; Calling bank (ie. us). + PUSH AF + LD A, ROMBANK6 ; Required bank to call. + JR BKSW2_0 +BKSW2to7: PUSH AF + LD A, ROMBANK2 ; Calling bank (ie. us). + PUSH AF + LD A, ROMBANK7 ; Required bank to call. + ; +BKSW2_0: PUSH HL ; Place function to call on stack + LD HL, BKSWRET2 ; Place bank switchers return address on stack. + EX (SP),HL + LD (TMPSTACKP),SP ; Save the stack pointer as some old code corrupts it. + LD (BNKSELUSER), A ; Repeat the bank switch B times to enable the bank control register and set its value. + JP (HL) ; Jump to required function. +BKSWRET2: POP AF ; Get bank which called us. + LD (BNKSELUSER), A ; Return to that bank. + POP AF + RET + + ;------------------------------------------------------------------------------- + ; GENERAL PURPOSE FUNCTIONS. + ;------------------------------------------------------------------------------- + + ; Method to multiply a 16bit number by another 16 bit number to arrive at a 32bit result. + ; Input: DE = Factor 1 + ; BC = Factor 2 + ; Output:DEHL = 32bit Product + ; +MULT16X16: LD HL,0 + LD A,16 +MULT16X1: ADD HL,HL + RL E + RL D + JR NC,$+6 + ADD HL,BC + JR NC,$+3 + INC DE + DEC A + JR NZ,MULT16X1 + RET + + ; Method to add a 16bit number to a 32bit number to obtain a 32bit product. + ; Input: DEHL = 32bit Addend + ; BC = 16bit Addend + ; Output:DEHL = 32bit sum. + ; +ADD3216: ADD HL,BC + EX DE,HL + LD BC,0 + ADC HL,BC + EX DE,HL + RET + + ; Method to add two 32bit numbers whilst calculating the SD Start Sector. + ; Input: DEHL = 32bit Addend + ; (SDSTARTSEC) = 32bit Addend + ; Output: (SDSTARTSEC) = 32bit Sum. + ; Output; DEHL = 32bit Sum. + ; +ADD32: LD BC,(SDSTARTSEC+2) + ADD HL,BC + LD (SDSTARTSEC+2),HL + LD BC,(SDSTARTSEC) + EX DE,HL + ADC HL,BC + LD (SDSTARTSEC),HL + EX DE,HL + RET + + ; A function from the z88dk stdlib, a delay loop with T state accuracy. + ; + ; enter : hl = tstates >= 141 + ; uses : af, bc, hl +T_DELAY: LD BC,-141 + ADD HL,BC + LD BC,-23 +TDELAYLOOP: ADD HL,BC + JR C, TDELAYLOOP + LD A,L + ADD A,15 + JR NC, TDELAYG0 + CP 8 + JR C, TDELAYG1 + OR 0 +TDELAYG0: INC HL +TDELAYG1: RRA + JR C, TDELAYB0 + NOP +TDELAYB0: RRA + JR NC, TDELAYB1 + OR 0 +TDELAYB1: RRA + RET NC + RET + + + ;------------------------------------------------------------------------------- + ; START OF SD CONTROLLER FUNCTIONALITY + ;------------------------------------------------------------------------------- + + ;------------------------------------------------------------------------------- + ; Hardware SPI SD Controller (HW_SPI_ENA = 1) + ; This logic uses the RFS PCB v2+ hardware shift registers to communicate with + ; an SD Card. It is the fastest solution available but has a high IC count. + ; + ; Software SPI SD Controller (SW_SPI_ENA = 1) + ; This logic uses the RFS PCB v2+ logic to simulate the SPI interface with + ; bitbanging techniques. It is similar to the Parallel Port SD Controller + ; but uses logic on the RFS board rather than the parallel port interface. + ; + ; Parallel Port SD Controller (PP_SPI_ENA = 1) + ; This logic uses the standard Sharp MZ-80A Parallel Port for simulating the + ; SPI interface with bitbanging techniques. This interface is then used to + ; communicate with an SD Card. + ;------------------------------------------------------------------------------- + + ; Method to initialise the SD card. Assume that the RFS control registers are enabled, the default state within the RFS environment. + ; +SDINIT: LD A,0FFH ; CS to inactive (high) + CALL SPICS + ; + CALL SPIINIT ; Train SD with our clock. + ; + LD A,0 ; CS to active (low) + CALL SPICS + ; + LD BC,SD_RETRIES ; Number of retries before giving up, card not responding. +SDINIT1: LD A,CMD0 ; Command 0 + LD HL,00000H ; NB. Important, HL should be coded as LH due to little endian and the way it is used in SDCMD. + LD DE,00000H ; NB. Important, DE should be coded as ED due to little endian and the way it is used in SDCMD. + PUSH BC + ; + CALL SDCMD + ; + LD A,(SDBUF+6) ; Get response code. + DEC A ; Set Z flag to test if response is 0x01 + POP BC + JP Z,SDINIT2 ; Command response 0x01? Exit if match. + + DEC BC + LD A,B + OR C + JR NZ,SDINIT1 ; Retry for BC times. + LD A,1 + JP SD_EXIT ; Error, card is not responding to CMD0 + +SDINIT2: ; Now send CMD8 to get card details. This command can only be sent + ; when the card is idle. + LD A,CMD8 ; CMD8 has 0x00001AA as parameter, load up registers and call command routine. + LD HL,00000H ; NB. Important, HL should be coded as LH due to little endian and the way it is used in SDCMD. + LD DE,0AA01H ; NB. Important, DE should be coded as ED due to little endian and the way it is used in SDCMD. + CALL SDCMD + + ; Version 2 card, check its voltage range. IF not in the 2.7-3.6V dont try the ACMD41 to get capabilities. +SDINIT3: LD A,1 ; Check that we receive 0x0001AA in response. + LD (SDVER),A ; Indicate this is not a version 2 card. + LD A,(SDBUF+9) + CP 1 + JP NZ,SDINIT8 + LD A,(SDBUF+10) + CP 0AAH + JP NZ,SDINIT8 + +SDINIT4: LD A,2 ; This is a version 2 card. +SDINIT5: LD (SDVER),A ; Indicate this is not a version 2 card. + + CALL SDACMD41 + JR Z,SDINIT6 + LD A,2 ; Error, card is not responding to ACMD41 + JP SD_EXIT + +SDINIT6: LD A,CMD58 ; CMD58 has 0x00000000 as parameter, load up registers and call command routine. + LD HL,00000H ; NB. Important, HL should be coded as LH due to little endian and the way it is used in SDCMD. + LD DE,00000H ; NB. Important, DE should be coded as ED due to little endian and the way it is used in SDCMD. + CALL SDCMD + LD A,(SDBUF+6) + CP 040H + LD A,CT_SD2 + JR Z,SDINIT7 + LD A,CT_SD2 | CT_BLOCK +SDINIT7: LD (SDCAP),A ; Set the capabilities according to the returned flag. + JR SDINIT14 + + + ; Version 1 card or MMC v3. +SDINIT8: CALL SDACMD41 + LD A, CT_SD1 + LD E,ACMD41 ; SD1 cards we use the ACMD41 command. + JR Z,SDINIT9 + LD A,CT_MMC + LD E,CMD1 ; MMC cards we use the CMD1 command. +SDINIT9: LD (SDCAP),A + LD A,E + CP ACMD41 + JR NZ,SDINIT10 + CALL SDACMD41 + JR Z,SDINIT14 + LD A,3 ; Exit code, failed to initialise v1 card. + JP SD_EXIT + +SDINIT10: LD BC,10 ; ACMD41/CMD55 may take some cards time to process or respond, so give a large number of retries. +SDINIT11: PUSH BC + LD A,CMD1 ; CMD1 has 0x00000000 as parameter, load up registers and call command routine. + LD HL,00000H ; NB. Important, HL should be coded as LH due to little endian and the way it is used in SDCMD. + LD DE,00000H ; NB. Important, DE should be coded as ED due to little endian and the way it is used in SDCMD. + CALL SDCMD + LD A,(SDBUF+6) ; Should be a response of 0 whereby the card has left idle. + OR A + JR Z,SDINIT13 + LD BC,0FFFFH ; Delay for at least 200mS for the card to recover and be ready. +SDINIT12: DEC BC ; 6T + LD A,B ; 9T + OR C ; 4T + JR NZ,SDINIT12 ; 12T = 31T x 500ns = 15.5uS x 12903 = 200mS + ; + POP BC + DEC BC + LD A,B + OR C + JR NZ,SDINIT11 + LD A,4 ; Exit code, failed to initialise v1 MMC card. + JP SD_EXIT + +SDINIT13: POP BC + LD A,CMD16 ; No response from the card for an ACMD41/CMD1 so try CMD16 with parameter 0x00000200 + LD HL,00000H ; NB. Important, HL should be coded as LH due to little endian and the way it is used in SDCMD. + LD DE,00002H ; NB. Important, DE should be coded as ED due to little endian and the way it is used in SDCMD. + CALL SDCMD + LD A,(SDBUF+6) + OR A + JR Z,SDINIT14 + LD A,0 + LD (SDCAP),A ; No capabilities on this unknown card. +SDINIT14: XOR A + JR SD_EXIT +SD_EXIT: LD L,A ; Return value goes into HL. + LD H,0 + RET + + ; Method to send a command to the card and receive back a response. + ; + ; A = CMD to send + ; LHED = Argument, ie. CMD = A, L, H, E, D, CRC + ; +SDCMD: LD (SDBUF),A + LD (SDBUF+1),HL + EX DE,HL + LD (SDBUF+3),HL + ; + ; Send command but with parameters preloaded by caller. +SDCMDNP: LD B,5 ; R1 + 32bit argument for CMD8, CMD58 + CP CMD8 + LD C,135 + JP Z,SDCMD0 + LD C,1 ; CMD58 is not CRC checked so just set to 0x01. + CP CMD58 + LD B,5 ; R1 + 32bit argument + JP Z,SDCMD0 + ; + LD B,1 ; Default, expect R1 which is 1 byte. + CP CMD0 ; Work out the CRC based on the command. CRC checking is + LD C,149 ; not implemented but certain commands require a fixed argument and CRC. + JP Z,SDCMD0 + LD C,1 ; Remaining commands are not CRC checked so just set to 0x01. +SDCMD0: PUSH BC ; Save the CRC and the number of bytes to be returned, + LD A,C ; Store the CRC + LD (SDBUF+5),A + LD A,255 ; Preamble byte + CALL SPIOUT + LD HL,SDBUF + LD B,6 +SDCMD1: PUSH BC + LD A,(HL) + INC HL + CALL SPIOUT ; Send the command and parameters. + POP BC + DJNZ SDCMD1 + PUSH HL + LD HL,SD_RETRIES +SDCMD2: PUSH HL + CALL SPIIN + POP HL + CP 0FFH + JR NZ,SDCMD4 ; If != 0xFF then byte received is response R1. + DEC HL + LD A,H + OR L + JR NZ,SDCMD2 + ; + ; Error as we are not receiving data. + ; + POP HL + POP BC + LD A,1 ; Force return code to be error. + LD (SDBUF+6),A + RET + +SDCMD3: PUSH BC + PUSH HL + CALL SPIIN ; +SDCMD4: POP HL + LD (HL),A + INC HL + POP BC ; Get back number of expected bytes. HL = place in buffer to store response. + DJNZ SDCMD3 + IF HW_SPI_ENA = 0 + LD A,DOUT_HIGH | CLOCK_LOW | CS_HIGH + OUT (SPI_OUT),A + ENDIF + RET + + ; Method to send an Application Command to the SD Card. This involves sending CMD55 followed by the required command. + ; + ; A = ACMD to send + ; LHED = Argument, ie. ACMD = A, L, H, E, D, CRC + ; +SDACMD: PUSH AF + PUSH DE + PUSH HL + LD A,CMD55 ; CMD55 has 0x00000000 as parameter, load up registers and call command routine. + LD HL,00000H ; NB. Important, HL should be coded as LH due to little endian and the way it is used in SDCMD. + LD DE,00000H ; NB. Important, DE should be coded as ED due to little endian and the way it is used in SDCMD. + CALL SDCMD + POP HL + POP DE + LD A,(SDBUF+6) ; Should be a response of 0 or 1. + CP 2 + JR NC,SDACMDE + POP AF + CALL SDCMD +SDACMD0: LD A,(SDBUF+6) ; Should be a response of 0 whereby the card has left idle. + OR A + RET +SDACMDE: POP AF + JR SDACMD0 + + ; Method to send Application Command 41 to the SD card. This command involves retries and delays + ; hence coded seperately. + ; + ; Returns Z set if successful, else NZ. + ; +SDACMD41: LD BC,10 ; ACMD41/CMD55 may take some cards time to process or respond, so give a large number of retries. +SDACMD1: PUSH BC + LD A,ACMD41 ; ACMD41 has 0x40000000 as parameter, load up registers and call command routine. + LD HL,00040H ; NB. Important, HL should be coded as LH due to little endian and the way it is used in SDCMD. + LD DE,00000H ; NB. Important, DE should be coded as ED due to little endian and the way it is used in SDCMD. + CALL SDACMD + JR Z,SDACMD3 + LD BC,12903 ; Delay for at least 200mS for the card to recover and be ready. +SDACMD2: DEC BC ; 6T + LD A,B ; 9T + OR C ; 4T + JR NZ,SDACMD2 ; 12T = 31T x 500ns = 15.5uS x 12903 = 200mS + ; + POP BC + DEC BC + LD A,B + OR C + JR NZ,SDACMD1 + LD A,1 + OR A ; Retries exceeded, return error. + RET +SDACMD3: POP BC ; Success, tidy up stack and exit with Z set. + XOR A + RET + + ; Method to initialise communications with the SD card. We basically train it to our clock characteristics. + ; This is important, as is maintaining the same clock for read or write otherwise the card may not respond. +SPIINIT: IF HW_SPI_ENA = 1 + ; Hardware SPI on the RFS v2+ PCB. + LD B,10 + LD A, 0FFH ; We need to send 80 '1's, so preload the data register with all 1's, future transmits dont require this as it self loads with 1's. + LD (HWSPIDATA),A +SPIINIT1: LD (HWSPISTART),A ; Commence transmission of an 8bit byte. Runs 1 8MHz, so 1 byte in 1uS, it takes the Z80 2uS for its quickest instruction at 2MHz clock. + DJNZ SPIINIT1 + RET + + ELSE + + ; Software SPI on the RFS v2+ PCB. + IF SW_SPI_ENA = 1 + + ELSE + + ; Software SPI on the centronics parallel port. + LD B,80 +SPIINIT1: LD A,DOUT_HIGH | CLOCK_HIGH | CS_HIGH ; Output a 1 + OUT (SPI_OUT),A + LD A,DOUT_HIGH | CLOCK_LOW | CS_HIGH ; Output a 1 + OUT (SPI_OUT),A + DJNZ SPIINIT1 + RET + ENDIF + ENDIF + + ; Method to set the Chip Select level on the SD card. The Chip Select is active LOW. + ; + ; A = 0 - Set CS LOW (active) + ; A = 0xFF - Set CS HIGH (active) +SPICS: IF HW_SPI_ENA = 1 + ; Hardware SPI on the RFS v2+ PCB. + OR A + LD A,(ROMCTL) + SET 1,A ; If we are inactivating CS then set CS high and disable clock by setting BBCLK to low. + RES 0,A + JR NZ, SPICS0 + RES 1,A ; If we are activating CS then set CS low and enable clock by setting BBCLK to high. + SET 0,A +SPICS0: LD (BNKCTRL),A + LD (ROMCTL),A + RET + + ELSE + + ; Software SPI on the RFS v2+ PCB. + IF SW_SPI_ENA = 1 + + ELSE + + ; Software SPI on the centronics parallel port. + OR A + LD A,DOUT_HIGH | CLOCK_LOW | CS_LOW ; Set CS Low if parameter = 0 (ie. enable) + JR Z, SPICS0 + LD A,DOUT_HIGH | CLOCK_LOW | CS_HIGH ; Set CS High if parameter != 0 (ie. disable) +SPICS0: OUT (SPI_OUT),A + RET + ENDIF + ENDIF + + ; Method to send a byte to the SD card via the SPI protocol. + ; This method uses the hardware shift registers. + ; + ; Input A = Byte to send. + ; +SPIOUT: IF HW_SPI_ENA = 1 + ; Hardware SPI on the RFS v2+ PCB. + LD (HWSPIDATA),A + LD (HWSPISTART),A + RET + + ELSE + + ; Software SPI on the RFS v2+ PCB. + IF SW_SPI_ENA = 1 + + ELSE + + ; Software SPI on the centronics parallel port. + RLCA ; 65432107 + RLCA ; 54321076 + RLCA ; 43210765 - Adjust so that starting bit is same position as Data line. + LD E,A ; E = Character to send. + LD B,8 ; B = Bit count +SPIOUT0: LD A,E + AND DOUT_MASK ; Data bit to data line, clock and cs low. + RLC E +SPIOUT1: OUT (SPI_OUT),A + OR CLOCK_HIGH ; Clock high + OUT (SPI_OUT),A + AND CLOCK_MASK ; Clock low + OUT (SPI_OUT),A + DJNZ SPIOUT0 ; Perform actions for the full 8 bits. + RET + ENDIF + ENDIF + + ; Method to receive a byte from the SD card via the SPI protocol. + ; This method uses the hardware shift registers. + ; NB. Timing must be very similar in SPIOUT and SPIIN. + ; + ; Output: A = received byte. + ; +SPIIN: IF HW_SPI_ENA = 1 + ; Hardware SPI on the RFS v2+ PCB. + LD (HWSPISTART),A ; Commence transmission to receive back data from the SD card, we just send 1's. + LD A,(HWSPIDATA) ; Get the data byte. + RET + + ELSE + + ; Software SPI on the RFS v2+ PCB. + IF SW_SPI_ENA = 1 + + ELSE + + ; Software SPI on the centronics parallel port. + LD BC,00800H | SPI_OUT ; B = Bit count, C = clock port + LD L,0 ; L = Character being read. + LD D,DOUT_HIGH | CLOCK_LOW | CS_LOW ; Output a 0 + OUT (C),D ; To start ensure clock is low and CS is low. + LD E,DOUT_HIGH | CLOCK_HIGH | CS_LOW ; Output a 0 +SPIIN1: OUT (C),E ; Clock to high. + IN A,(SPI_IN) ; Input the received bit + OUT (C),D ; Clock to low. + SRL A + RL L + DJNZ SPIIN1 ; Perform actions for the full 8 bits. + LD A,L ; return value + RET + ENDIF + ENDIF + ;------------------------------------------------------------------------------- + ; End of SPI SD Controller + ;------------------------------------------------------------------------------- + + + + ; Method to skip over an SD card input stream to arrive at the required bytes, + ; + ; Input: BC = Number of bytes to skip. + ; +SPISKIP: PUSH BC + CALL SPIIN + POP BC + DEC BC + LD A,B + OR C + JR NZ,SPISKIP + RET + + ; Method to convert an LBA value into a physical byte address. This is achieved by multiplying the block x 512. + ; We take the big endian sector value, shift left 9 times then store the result back onto the stack. + ; This is done as follows: <2> <1> <0> => <2> <1> <0> 0 (ie. 8 bit shift): Shift left <0> with carry, shift left <1> shift left <2>, 0 to + ; + ; Input: HL = Stack offset. + ; +LBATOADDR: LD HL,(SDSTARTSEC+1) + LD A,(HL) ; Start ny retrieving bytes as HED0 + INC HL + LD E,(HL) + INC HL + LD D,(HL) + LD L,A + + SLA D ; Shift the long left by 9 to effect a x512 + RL E + RL H + LD BC,(SDSTARTSEC) + LD A,H ; Now save the results as LHED, big endian format as used by the SD Card argument + LD (BC),A + INC BC + LD A,E + LD (BC),A + INC BC + LD A,D + LD (BC),A + INC BC + XOR A + LD (BC),A + RET + + + ; + ; This method was originally a C routine I was using for FatFS but optimised it (still more can be done). The C->ASM is not so optimal. + ; + ; Input: Memory variables: SDSTARTSEC= unsigned long sector. - The sector number or direct byte address for older cards. This is big endian as per card. + ; HL: Address where to store data read from sector. + ; BC: Size of data to read, upto a sector size. + ; Output: A: 0 - All ok. A > 0 - error occurred. + ; HL: End address of data loaded, + ; +SD_READ: PUSH HL ; Store the load address. + PUSH BC ; Store the read size. + XOR A + CALL SPICS ; Set CS low (active). + + LD HL,(SDCAP) ; Test to see if CT_BLOCK is available. + LD H,0 + LD A,CT_BLOCK + AND L + JP NZ,SD_READ1 ; If it has CT_BLOCK then use sector numbers otherwise multiply up to bytes. + CALL LBATOADDR ; Multiply the sector by 512 for byte addressing on older cards. + +SD_READ1: ; A = ACMD to send + ; LHED = Argument, ie. ACMD = A, L, H, E, D, CRC + LD A,CMD17 ; Send CMD17 to read a sector. + LD (SDBUF),A + LD HL,(SDSTARTSEC) + LD (SDBUF+1),HL + LD HL,(SDSTARTSEC+2) + LD (SDBUF+3),HL + CALL SDCMDNP ; Execute SD Command, parameters already loaded into command buffer. + LD A,(SDBUF+6) ; Fetch result and store. + AND A + JP NZ,SD_READ6 ; If R1 is positive then an error occurred, get out. + + LD HL,1000 ; Sit in a tight loop waiting for the data packet arrival (ie. not 0xFF). +SD_READ2: PUSH HL + LD HL,200 + CALL T_DELAY + CALL SPIIN + POP HL + CP 255 + JP NZ,SD_READ3 + DEC HL + LD A,H + OR L + JR NZ,SD_READ2 + +SD_READ3: CP 254 ; Data? If not exit with error code. + JP NZ,SD_READ6 + + LD HL,SD_SECSIZE ; Size of full sector + 2 bytes CRC. + POP BC + OR A + SBC HL,BC ; Calculate the bytes to skip once we have read the required bytes. + EX DE,HL + POP HL ; Get the store address into HL. +SD_READ4: PUSH HL ; Start reading bytes into the buffer. + PUSH DE + PUSH BC + CALL SPIIN + POP BC + POP DE + POP HL + LD (HL),A + INC HL ; Update buffer pointer. + DEC BC + LD A,B + OR C + JP NZ,SD_READ4 ; Not zero, keep reading. + PUSH HL + PUSH DE + POP BC + INC BC ; Were not interested in the CRC so skip it. + INC BC + CALL SPISKIP ; Skip unread bytes + CRC. + POP HL + XOR A ; And exit with success. +SD_READ5: PUSH AF + LD A,0FFH ; De-activate CS. + CALL SPICS + POP AF + RET +SD_READ6: POP BC + POP HL + LD A,1 + JR SD_READ5 + + ; Method to write a 512byte sector to an SD Card. + ; + ; Input: Memory variables: SDSTARTSEC= unsigned long sector. - The sector number or direct byte address for older cards. This is big endian as per card. + ; HL: Address of buffer to read data from. + ; BC: Size of data to write, upto a sector size. + ; Output: A: 0 - All ok. A > 0 - error occurred. + ; HL: Address of end of buffer. +SD_WRITE: PUSH HL + PUSH BC + + XOR A ; Activate CS (set low). + CALL SPICS + + ; Open transaction. + LD HL,(SDCAP) ; Check to see if the card has block addressing. + LD H,0 + LD A,CT_BLOCK + AND L + JP NZ,SD_WRITE1 ; If it hasnt then we need to multiply up to the correct byte. + CALL LBATOADDR ; Multiply the sector by 512 for byte addressing. + + ; A = ACMD to send + ; LHED = Argument, ie. ACMD = A, L, H, E, D, CRC +SD_WRITE1: LD A,CMD24 ; Send CMD24 to write a sector. + LD (SDBUF),A + LD HL,(SDSTARTSEC) ; Place long endian sector into command buffer. + LD (SDBUF+1),HL + LD HL,(SDSTARTSEC+2) + LD (SDBUF+3),HL + CALL SDCMDNP ; Send command using No Parameters version as we loaded them into the command buffer already. + LD A,(SDBUF+6) ; Fetch result and store. + AND A + JP NZ,SD_WRITE10 + LD A,255 ; Ok, so command sent successfully, mark the write by sending an 0xFF followed by 0xFE + CALL SPIOUT + LD A,254 + CALL SPIOUT + + ; Write buffer. + POP BC + LD HL,SD_SECSIZE + OR A + SBC HL,BC ; Calculate number of bytes to pad with 0. + EX DE,HL + POP HL ; Address to read data from. + ; +SD_WRITE2: LD A,B ; So long as we have bytes in the buffer, send to the card for writing. + OR C + JP Z,SD_WRITE3 + + PUSH DE + PUSH BC + LD A,(HL) ; Get the byte to transmit. + INC HL ; And update the pointer. + CALL SPIOUT ; Transmit value in A. + POP BC + POP DE + DEC BC + JR SD_WRITE2 + + ; Close transaction. +SD_WRITE3: PUSH HL ; Save the end of buffer address for return to caller. + PUSH DE ; DE contains number of padding bytes to send + POP BC + INC BC ; Add 2 bytes for CRC + INC BC +SD_WRITE4: LD A,B ; Test to see if we are already at zero, ie. all bytes sent. Exit if so. + OR C + JP Z,SD_WRITE5 + DEC BC + PUSH BC + XOR A ; Send 0's as padding bytes and CRC. + CALL SPIOUT + POP BC + JP SD_WRITE4 + +SD_WRITE5: CALL SPIIN ; Check received response, if 0x05 which indicates write under way inside SD Card. + AND 01FH + CP 5 + JP NZ,SD_WRITE11 + + LD HL,10000 ; Now wait for the write to complete allowing 1000mS before timing out. + PUSH HL + JR SD_WRITE7 +SD_WRITE6: DEC HL + PUSH HL + LD HL,200 ; 200T state delay = 200 x 1/2000000 = 100uS + CALL T_DELAY +SD_WRITE7: CALL SPIIN ; Get a byte, if it is not 0xFF then we have our response so exit. + POP HL + CP 255 + JP Z,SD_WRITE8 + LD A,H + OR L + JR NZ,SD_WRITE6 + +SD_WRITE8: LD A,H ; End of timeout? If so we exit with the preset fail code. + OR L + JP Z,SD_WRITE11 + XOR A ; Success code. + POP HL ; Get the updated return address to pass back to caller. +SD_WRITE9: PUSH AF + LD A,0FFH ; Disable SD Card Chip Select to finish. + CALL SPICS + POP AF + RET +SD_WRITE10: POP HL ; Waste the byte count and .. +SD_WRITE11: POP HL ; ..load address. + LD A,1 ; Error exit. + JR SD_WRITE9 + + + ; Method to print out an SDC directory entry name along with an incremental file number. The file number can be + ; used as a quick reference to a file rather than the filename. + ; + ; Input: HL = Address of filename. + ; D = File number. + ; A = File type. + ; +PRTDIR: PUSH BC + PUSH DE + PUSH HL + LD C,A ; Preseve file type. + ; + LD A,(SCRNMODE) + CP 0 + LD H,47 + JR Z,PRTDIR0 + LD H,93 +PRTDIR0: LD A,(TMPLINECNT) ; Pause if we fill the screen. + LD E,A + INC E + CP H + JR NZ,PRTNOWAIT + LD E, 0 +PRTDIRWAIT: CALL GETKY + CP ' ' + JR Z,PRTNOWAIT + CP 'X' ; Exit from listing. + LD A,001H + JR Z,PRTDIR4 + JR PRTDIRWAIT +PRTNOWAIT: LD A,E + LD (TMPLINECNT),A + ; + LD A, D ; Print out file number and increment. + CALL PRTHX + LD A,C + LD C,02AH + + CP BTX1CD ; '*' File type is 80K/80A BASIC. + JR Z,PRTDIR0A + INC C + CP BTX2CD ; '+' File type is 700/800 BASIC. + JR Z,PRTDIR0A + INC C + CP BTX3CD ; ',' File type is a NASCOM Cassette BASIC program. + JR Z,PRTDIR0A + INC C + CP BTX4CD ; '-' File type is a NASCOM ASCII TEXT BASIC program. + JR Z,PRTDIR0A + INC C + CP OBJCD ; '.' File type is MACHINE CODE program. + JR Z,PRTDIR0A + INC C +PRTDIR0A: LD A,C + CALL PRNT + POP DE + PUSH DE ; Get pointer to the file name and print. + + LD HL,PRTFN + CALL BKSW2to6 ; Print out the filename. + ; + LD HL, (DSPXY) + ; + LD A,L + CP 20 + LD A,20 + JR C, PRTDIR2 + ; + LD A,(SCRNMODE) ; 40 Char mode? 2 columns of filenames displayed so NL. + CP 0 + JR Z,PRTDIR1 + ; + LD A,L ; 80 Char mode we print 4 columns of filenames. + CP 40 + LD A,40 + JR C, PRTDIR2 + ; + LD A,L + CP 60 + LD A,60 + JR C, PRTDIR2 + ; +PRTDIR1: CALL NL + JR PRTDIR3 +PRTDIR2: LD L,A + LD (DSPXY),HL +PRTDIR3: XOR A +PRTDIR4: OR A + POP HL + POP DE + POP BC + RET + + + ; Method to get the LBA sector for an RFS SDCFS image location according to drive. + ; Inputs: + ; A = Starting sector in a single image. + ; or + ; DEHL = starting sector. + ; Outputs: + ; DEHL = Sector number. +RFSGETSECT: LD DE,0 ; Load DEHL with a 32bit start sector. DE=0 as SDCFS starts from sector 0. + LD H,0 ; Set HL to sector number. + LD L,A +RFSGETSECTR:LD A,(SDDRIVENO) ; Entry point when DEHL is defined. +GETDIRDRV: OR A ; Multiply up according to drive number. + RET Z + CP 'C' ; If SDDRIVENO is set to 'C" - CMT, then default to SD Drive 0. CMT is valid in certain applications but not for SD access. + JR NZ,GETDIRDRV1 + LD A,1 +GETDIRDRV1: DEC A + LD BC,08010H ; Number of sectors in an SDCFS image, 2000H directory + (64 * 65536) file blocks. + CALL ADD3216 ; Add drive sector multiple to move to next drive. + JR GETDIRDRV + + ; Method to set the SD Card 32bit LBA sector address. + ; Inputs: + ; DEHL = 32bit sector number. +SETLBAADDR: PUSH HL + POP BC + LD HL,SDSTARTSEC ; Store the starting sector in the SD card buffer ready for retrieval. + LD (HL), D + INC HL + LD (HL), E + INC HL + LD (HL), B + INC HL + LD (HL), C + INC HL + RET + + ; Method to get an SD Directory entry. + ; The SD Card works in 512byte sectors so a sector is cached and each call evaluates if the required request is in cache, if it is not, a new sector + ; is read. + ; + ; Input: E = Directory entry number to retrieve. + ; Output: HL = Address of directory entry. + ; A = 0, no errors, A > 1 error. +GETSDDIRENT:PUSH BC + PUSH DE; + ; + LD A,E + SRL A + SRL A + SRL A + SRL A ; Divide by 16 to get sector number. + LD C,A + LD A,(DIRSECBUF) ; Do we have this sector in the buffer? If we do, use it. + CP C + JR Z,GETDIRSD0 + LD A,C + LD (DIRSECBUF),A ; Save the sector number we will load into the buffer. + ; + LD HL,SECTORBUF + LD (SDLOADADDR),HL + ; + CALL RFSGETSECT ; Get the directory sector, offset by drive number. DEHL is returned as the full 32bit LBA sector address. + CALL SETLBAADDR ; Store the sector address into the SD command buffer. + ; + LD BC,SD_SECSIZE ; Set retrieval size to 1 sector. + LD (SDLOADSIZE),BC + LD HL,(SDLOADADDR) + ; + ;DI + CALL SD_READ ; Read the sector. + ;EI + ; + OR A + JR NZ,DIRSDERR + LD (SDLOADADDR),HL ; Save the updated address. +GETDIRSD0: POP DE + PUSH DE + LD A,E ; Retrieve the directory entry number required. + AND 00FH + LD HL,SECTORBUF + JR Z,GETDIRSD2 + LD B,A + LD DE,SDDIR_ENTSZ ; Directory entry size +GETDIRSD1: ADD HL,DE ; Directory entry address into HL. + DJNZ GETDIRSD1 +GETDIRSD2: POP DE + POP BC + XOR A +GETDIRSD3: OR A + RET + ; +DIRSDERR: EX DE,HL ; Print error message, show HL as it contains sector number where error occurred. + PUSH HL + POP BC ; HL to BC as the call requires the value to be displayed in BC. + LD DE,MSGSDRERR + CALL SDPRINT ; Print out the filename. + POP DE + POP BC + LD A,1 + JR GETDIRSD3 + + ; Method to find a free slot in the directory. + ; + ; Input: None. + ; Output: E = Free directory entry. + ; HL = Address of directory entry. + ; C = 1 if no free directory slot available. + ; Unless other directory entry functions called, DIRSECBUF = directory sector in cache which contains the free entry found. +GETDIRFREE: LD A,0FFH + LD (DIRSECBUF),A ; Reset the sector buffer in memory indicator. + ; + LD E,0 ; Directory entry number + LD B,0 ; Scanning 256 directory entries for a free slot. +GETDIRFREE1:CALL GETSDDIRENT ; Get SD Directory entry details for directory entry number stored in D. + RET NZ ; Error reading sector so abort. + LD A,(HL) + BIT 7,A ; Look for an inactive directory entry slot, Bit 7 of lower flag = 0? + JR NZ,GETDIRFREE2 + OR A + RET ; Found an entry that is free. +GETDIRFREE2:INC E ; Onto next directory entry number. + DJNZ GETDIRFREE1 + SCF + RET + + + ; Method to write the cached SD Directory entry sector back to SD card. + ; Normal use would be to call GERSDDIRENT to locate a required entry or slot, update it then call + ; this method to flush it back to SD disk. +WRSDDIRENT: LD A,(DIRSECBUF) ; Get the directory sector number of the cached directory sector. + ; + CALL RFSGETSECT ; Get the directory sector, offset by drive number. DEHL is returned as the full 32bit LBA sector address. + CALL SETLBAADDR ; Store the sector address into the SD command buffer. + ; + LD HL,SECTORBUF ; Address of the sector. + LD BC,SD_SECSIZE ; Set the size as one full sector. + ; + ;DI + CALL SD_WRITE + ;EI + ; + OR A + JR NZ,DIRSDWERR + XOR A +WRSDDIRENT1:OR A + RET +DIRSDWERR: LD DE,MSGSDWERR + PUSH HL + POP BC ; HL to BC as the call requires the value to be displayed in BC. + CALL SDPRINT ; Print out the filename. + LD A,1 + JR WRSDDIRENT1 + + + + ; Method to list the directory of the SD Card. + ; + ; This method creates a unique sequenced number starting at 0 and attaches to each successive valid directory entry + ; The file number and file name are then printed out in tabular format. The file number can be used in Load/Save commands + ; instead of the filename. + ; + ; No inputs or outputs. + ; +DIRSDCARD: LD A,1 ; Setup screen for printing, account for the title line. TMPLINECNT is used for page pause. + LD (TMPLINECNT),A + LD A,0FFH + LD (DIRSECBUF),A ; Reset the sector buffer in memory indicator. + ; + LD A,(SDDRIVENO) + CP 'C' + JR Z,DIRSDP + ADD A,'0' +DIRSDP: LD C,A ; C is printed as a character embedded in the message. + LD DE,MSGCDIRLST ; Print out header. + CALL SDPRINT ; Print out the header. + ; +DIRSD0: LD E,0 ; Directory entry number + LD D,0 ; Directory file number (incr when a valid dirent is found). + LD B,0 +DIRSD1: CALL GETSDDIRENT ; Get SD Directory entry details for directory entry number stored in D. + RET NZ +DIRSD2: LD A,(HL) + BIT 7,A ; Is this entry active, ie. Bit 7 of lower flag = 1? + JR Z,DIRSD3 + INC HL + LD A,(HL) ; Get file attribute for print identification. + INC HL ; Hop over flags. + CALL PRTDIR ; Valid entry so print directory number and name pointed to by HL. + JR NZ,DIRSD4 + INC D +DIRSD3: INC E ; Onto next directory entry number. + DJNZ DIRSD1 +DIRSD4: RET + ; + + + ; Method to locate an entry in the SD directory based on a filenumber or a filename. + ; This method is called with the raw parameter string in DE which is then parsed to determine if a filenumber + ; or filename has been given. + ; Input: DE = String containing a filenumber of filename. + ; Output: (TMPCNT) = 0xFFFF - DE contains a filename. + ; (TMPCNT) != 0xFFFF - DE contains a filenumber and (TMPCNT) is set to that number. +FINDSDX: PUSH DE + LD HL,0FFFFh ; Tag the filenumber as invalid. + LD (TMPCNT), HL + CALL _2HEX + JR C, FINDSDX1 ; + LD L,A + LD H,0 + LD A,(DE) ; Before comitting the file number verify it is actually a 2 digit hex string. + CP 00DH + JR Z,FINDSDX0 + OR A + JR NZ,FINDSDX1 +FINDSDX0: LD (TMPCNT), HL ; Store filenumber making load by filenumber valid. +FINDSDX1: POP DE + + ; Method to locate an entry in the SD directory based on a filenumber or a filename. + ; Input: DE = String containing a filenumber or filename. + ; (TMPCNT) = 0xFFFF - DE contains a filename. + ; (TMPCNT) != 0xFFFF - Filenumber. +FINDSD: PUSH DE + LD A,0FFH + LD (DIRSECBUF),A ; Reset the sector buffer in memory indicator. + LD E,0 ; Directory entry number start + LD D,0 ; Directory file number (incr when a valid dirent is found). + LD B,0 +FINDSD1: CALL GETSDDIRENT ; Get SD Directory entry details for directory entry number stored in D. +FINDSD2: BIT 7,(HL) ; Is this entry active, ie. Bit 7 of lower flag = 1? + JR Z,FINDSD3 + PUSH HL + LD HL,(TMPCNT) + ;LD H,(HL) + LD A,H + CP 0FFH + LD A,L + POP HL + JR Z,FINDSD4 ; A filenumber wasnt given so will need to name match. + CP D ; Match on filenumber, does the given number match with the current? + JR Z,FINDSD9 + INC D +FINDSD3: INC E + DJNZ FINDSD1 + POP DE ; No match, waste pointer to input string and exit with 1. + LD A,1 + JP FINDSD10 ; We didnt find a match so exit with code 1. + ; +FINDSD4: LD (TMPADR), DE ; Save current directory position and file number. + POP DE ; Get back pointer to given filename. HL contains directory filename. + PUSH DE ; Save DE as the pointer will be needed on next loop. + PUSH BC ; Save directory count. + ; + LD B,SDDIR_FNSZ + INC HL + INC HL ; Hop over flags. +FINDSD5: LD A,(DE) + OR A + JR Z, FINDSD9A + CP 00Dh ; If we find a terminator then this is a valid name. + JR Z, FINDSD9A + CP (HL) + JR NZ,FINDSD8 ; Mot a match. +FINDSD6: INC DE + INC HL + DJNZ FINDSD5 ; Loop for all the filename characters until terminator or difference found. + JR FINDSD9 ; If we matched all FNSIZE characters then this is a valid name. + + ; No match. +FINDSD8: POP BC ; Retrieve the directory count for next entry, + LD DE,(TMPADR) ; Retrieve the directory position and file number. + JR FINDSD3 + + ; Match +FINDSD9A: POP BC ; Waste the directory count. + LD DE,(TMPADR) ; Retrieve the directory position and file number. +FINDSD9: POP BC ; Waste the pointer to the input string. + XOR A ; D contains the filenumber. +FINDSD10: OR A + RET + + + ; Method to erase a filCOSMIC_CRUISER1MC.256.bine in the SD RFS. This is a simple matter of resetting the valid entry flag (bit 7 of FLAG1) in the directory entry for + ; the required file. + ; Input: DE = String containing filenumber or filename to erase. + ; Output: A = 0 Success, 1 = Fail. +ERASESD: CALL FINDSDX + JR NZ,LOADSD3 ; Not found? Print message and exit. + ; Directory entry in cache, HL points to FLAG1 of entry. + LD A,(HL) ; Clear the valid entry flag, bit 7 of FLAG1 + AND 07FH + LD (HL),A + PUSH DE + CALL WRSDDIRENT ; Flush the directory entry to disk to effect the delete. + OR A + JR NZ,ERASESD1 ; Failure, the report and exit. + POP BC ; Get the directory entry number. + LD B,0 + LD DE,MSGERASEDIR + XOR A ; Success. + JR SDPRINTRES +ERASESD1: LD A,1 + LD DE,MSGERAFAIL ; Fail, print out message. +SDPRINTRES: LD (RESULT),A +SDPRINT: LD HL,PRINTMSG + CALL BKSW2to6 ; Print out the filename. + RET + + ; Entry point when copying the SD file. Setup flags to indicate copying to effect any special processing. + ; The idea is to load the file into memory, dont execute and pass back the parameters within the CMT header. + ; +LOADSDCP: LD A,0FFH + LD (SDAUTOEXEC),A + JR LOADSD2 + + ; Load a program from the SD Card into RAM and/or execute it. + ; + ; DE points to a number or filename to load. +LOADSDCARDX:LD A,0FFH + JR LOADSD1 + +LOADSDCARD: XOR A +LOADSD1: LD (SDAUTOEXEC),A + XOR A ; Clear copying flag. +LOADSD2: LD (SDCOPY),A + LD A,0FFH ; For interbank calls, save result in a memory variable. + LD (RESULT),A + CALL FINDSDX + JP Z,LOADSD10 +LOADSD3: LD DE,MSGNOTFND + JR SDPRINT + + ; Helper method for the CMT replacement functions3. This method is inter bank called to locate a file pointed to by DE and set the header information. +LOADSDINF: CALL FINDSDX + JR Z,LOADSD9 ; Same as section above difference is we want to return after the header information has been extracted. + JP LOADSDXERR + + ; Helper method for CMT replacement functions. This method is called to load data with details already set in the CMT header and SD command buffer. +LOADSDDATA: LD DE,(DTADR) ; Update the load address in case caller changed it after reading the header. + LD (SDLOADADDR),DE + CALL LOADSD11 + LD A,0 + JR C,LOADSDDAT1 + JR Z,LOADSDDAT1 + INC A +LOADSDDAT1: LD (RESULT),A + RET + + ; We have found the directory entry, so use it to load the program into memory. + ; HL points to end of filename so requires an update to point to start of the directory entry. + ; Copy all relevant information into the CMT header (for reference) and working variables. + ; +LOADSD9: LD A,L + AND 0E0H + INC A + LD L,A + LD A,(HL) + LD (ATRB),A ; Type of file, store in the tape header memory. + INC HL + LD DE,NAME + LD B,SDDIR_FNSZ +LOADSD90: LD A,(HL) + OR A + JR NZ,LOADSD91 + LD A,CR ; Map NULL's to CR - applications use CR. +LOADSD91: LD (DE),A ; Copy the filename into the CMT area. + INC HL + INC DE + DJNZ LOADSD90 + ; + LD D,(HL) + INC HL + LD E,(HL) ; Start sector upper 16 bits, big endian. SDCFS under RFS this should always be zero. + INC HL + PUSH DE + + LD D,(HL) + INC HL + LD E,(HL) ; Start sector lower 16 bits, big endian. + INC HL + ; + EX (SP),HL + EX DE,HL + CALL RFSGETSECTR ; Get the directory sector, offset by drive number. DEHL is returned as the full 32bit LBA sector address. + CALL SETLBAADDR ; Store the sector address into the SD command buffer. + POP HL + ; + LD E,(HL) + INC HL + LD D,(HL) ; Size of file. + INC HL + LD (SIZE),DE + LD (SDLOADSIZE),DE + LD E,(HL) + INC HL + LD D,(HL) ; Load address. + INC HL + LD A,D + LD (DTADRSTORE),DE ; Save the original load address, use this to fill DTADR when complete if it has changed.. + CP 001H + JR NC,LOADSD9A + LD DE,01200H ; If the file specifies a load address below 1000H then shift to 1200H as it is not valid. +LOADSD9A: LD (DTADR),DE + LD (SDLOADADDR),DE + LD E,(HL) + INC HL + LD D,(HL) ; Execution address, store in tape header memory. + LD (EXADR),DE + JR LOADSDX ; Exit with ok. + ; +LOADSD10 CALL LOADSD9 ; Modularised file find as the CMT replacement functions need it. + LD DE,MSGLOAD+1 ; Skip initial CR. + LD BC,NAME + CALL SDPRINT ; Print out the filename. + CALL LOADSD11 + JR C,LOADSD14 + JR NZ,LOADSDERR + JR LOADSD14 + ; +LOADSD11: LD A,(SDLOADSIZE+1) + CP 002H + LD BC,SD_SECSIZE ; A full sector read if remaining bytes >=512 + JR NC,LOADSD12 + LD BC,(SDLOADSIZE) ; Get remaining bytes size. +LOADSD12: LD HL,(SDLOADADDR) + ;DI + CALL SD_READ ; Read the sector. + ;EI + OR A + RET NZ ; Failure to read a sector, abandon with error message. + LD (SDLOADADDR),HL ; Save the updated address. + ; + LD HL,SDSTARTSEC+3 + INC (HL) + JR NZ,LOADSD12A + DEC HL + INC (HL) +LOADSD12A: LD HL,(SDLOADSIZE) + LD DE,SD_SECSIZE + OR A + SBC HL,DE + RET C + RET Z + LD (SDLOADSIZE),HL + JR LOADSD11 + + ; + ; Execute code loaded. +LOADSD14: LD A,(SDAUTOEXEC) ; Autoexecute turned off? + CP 0FFh + JP Z,LOADSD15 ; Go back to monitor if it has been, else execute. + LD A,(ATRB) + CP OBJCD + JR NZ,LOADSD17 + LD A,0FEH ; Indicate that the program needs executing, must occur from ROM Bank 0. + JR LOADSDEXIT + ; + ; Load only. +LOADSD15: LD DE,MSGCMTDATA ; Indicate where the program was loaded and the execution address. + LD HL,(DTADR) + PUSH HL + LD HL,(EXADR) + PUSH HL + LD BC,(SIZE) +LOADSD16: LD HL,PRINTMSG + CALL BKSW2to6 ; Print out the filename with stack parameters. + POP BC + POP BC ; Remove parameters off stack. +LOADSDX: XOR A ; Non error exit. +LOADSDEXIT: LD (RESULT),A ; 0 = No error, 2 = Error, 0xFE = Execute code, address at EXADR + RET + + ; Not a binary file so cannot execute. +LOADSD17: LD DE,MSGNOTBIN + JR LOADSDERR2 + +LOADSDERR: LD DE,MSGSDRERR ; Print out the filename. + LD BC,(TMPCNT) +LOADSDERR2: CALL SDPRINT +LOADSDXERR: LD A,2 + JR LOADSDEXIT + + ; Setup for saving an application to SD Card but using the CMT header. Also set the copy flag because the values in the header + ; may not reflect where the image is stored (ie. CTM LOAD=0x0000 -> data is at 0x1200). + ; +SAVESDCARDX:LD A,0FFH + JR SAVESD1 + + ; Method to save a block of memory to the SD card as a program. + ; The parameters which should be given are: + ; XXXXYYYYZZZZ - where XXXX = Start Address, YYYY = End Address, ZZZZ = Execution Address. + ; Prompt for a filename which will be written into the CMT header. + ; All the values are stored in the CMT header and copied as needed into the SD directory. + ; +SAVESDCARD: LD HL,GETCMTPARM ; Get the CMT parameters. + CALL BKSW2to3 + LD A,C + OR A + RET NZ ; Exit if an error occurred. + ; + LD A,OBJCD ; Set attribute: OBJ + LD (ATRB),A + ; +SAVESDDATA: XOR A ; Disable the copy flag. +SAVESD1: LD (SDCOPY),A + LD A,0FFH ; Interbank calls, pass result via a memory variable. Assume failure unless updated. + LD (RESULT),A + + ; Find free slot. + CALL GETDIRFREE + JR NC,SAVESD4 + LD DE,MSGDIRFULL ; Directory is full so abort command. + LD A,1 ; Directory full code. + JP SDPRINTRES + ; +SAVESD4: PUSH DE ; Save the directory entry number. + PUSH HL + LD B,0 + LD C,E + LD DE,MSGSVDIRENT + CALL SDPRINT ; Print out the filename. + POP HL ; HL points to the directory entry buffer. + LD A,080H + LD (HL),A ; Set directory entry flag indicating that the entry is in use. + INC HL + LD A,(ATRB) + LD (HL),A ; Copy attribute. + INC HL + LD BC,SDDIR_FNSZ + LD DE,NAME + EX DE,HL + LDIR ; Copy filename across to directory. + EX DE,HL + POP DE ; Get directory entry number in E. + ; + PUSH HL + LD D,0 + LD BC,SDDIR_BLOCKSZ / SD_SECSIZE ; Put the blocksize as sectors into BC and multiply with E to get the block address. + CALL MULT16X16 ; DEHL to contain LBA address for given block. + LD BC,SDDIR_DIRSIZE / SD_SECSIZE + CALL ADD3216 ; Add in size of directory to arrive at correct LBA sector. + PUSH HL + POP BC ; 32bit LBA now in DEBC + POP HL + ; Store the Big Endian LBA Sector into the directory entry. + LD (HL),D ; Now save the 32bit LBA sector number into the directory entry. + INC HL + LD (HL),E + INC HL + LD A,B + LD (HL),A + INC HL + LD A,C + LD (HL),A + INC HL + ; + PUSH BC ; Save BC and swap for HL so sector now in DEHL. + EX (SP),HL + CALL RFSGETSECTR ; Get the directory sector, offset by drive number. DEHL is returned as the full 32bit LBA sector address. + CALL SETLBAADDR ; Store the sector address into the SD command buffer. + POP HL + ; + LD DE,(SIZE) ; Add in the size of the program. + LD (SDLOADSIZE),DE + LD (HL),E + INC HL + LD (HL),D + INC HL + ; + LD DE,(DTADR) ; Add in the load address of the program. + LD (HL),E + INC HL + LD (HL),D + INC HL + ; + LD A,(SDCOPY) + OR A + JR Z,SAVEDS4A + LD DE,01200H ; Copy mode -> data is always at 0x1200. +SAVEDS4A: LD (SDLOADADDR),DE + ; + LD DE,(EXADR) ; Add in the execution address of the program. + LD (HL),E + INC HL + LD (HL),D + INC HL + ; + ; Header has been written into the cached directory sector, write out data and if successful, write out + ; the directory entry to complete. + ; +SAVESD5: LD A,(SDLOADSIZE+1) + CP 002H + LD BC,SD_SECSIZE ; A full sector read if remaining bytes >=512 + JR NC,SAVESD6 + LD BC,(SDLOADSIZE) ; Get remaining bytes size. +SAVESD6: LD HL,(SDLOADADDR) + ;DI + CALL SD_WRITE ; Write the sector. + ;EI + OR A + JR NZ,SAVESD9 ; Failure to read a sector, abandon with error message. + LD (SDLOADADDR),HL ; Save the updated address. + ; + LD HL,SDSTARTSEC+3 + INC (HL) + JR NZ,SAVESD7 + DEC HL + INC (HL) +SAVESD7: LD A,(SDLOADSIZE+1) + CP 002H + JR C,SAVESD8 ; If carry then the last read obtained the remaining bytes. + LD HL,(SDLOADSIZE) + LD DE,SD_SECSIZE + OR A + SBC HL,DE + LD (SDLOADSIZE),HL + JR SAVESD5 +SAVESD8: ; Data written, now write out the directory entry. + CALL WRSDDIRENT ; Flush the directory entry to disk. + ;PUSH HL + ;PUSH DE + ;PUSH BC + ;LD BC,01000H + ;LD DE,0D000H + ;LD HL,DUMPBC + ;CALL BKSW2to3 + ;POP BC + ;POP DE + ;POP HL + OR A + JR NZ,SAVESD9 + LD A,0 ; Success. + LD (RESULT),A + RET +SAVESD9: LD DE,MSGSVFAIL ; Fail, print out message. + LD A,1 ; Write failed code. + JP SDPRINTRES ; Print out the filename. + + ;------------------------------------------------------------------------------- + ; END OF SD CONTROLLER FUNCTIONALITY + ;------------------------------------------------------------------------------- + + + ;-------------------------------------- + ; + ; Message table - Refer to Bank 6 for + ; all printable messages. + ; + ;-------------------------------------- + + ALIGN 0EFF8h + ORG 0EFF8h + DB 0FFh,0FFh,0FFh,0FFh,0FFh,0FFh,0FFh,0FFh diff --git a/asm/rfs_bank3.asm b/asm/rfs_bank3.asm new file mode 100644 index 0000000..79d1cd3 --- /dev/null +++ b/asm/rfs_bank3.asm @@ -0,0 +1,548 @@ +;-------------------------------------------------------------------------------------------------------- +;- +;- Name: rfs_bank3.asm +;- Created: July 2019 +;- Author(s): Philip Smart +;- Description: Sharp MZ series Rom Filing System. +;- This assembly language program is written to utilise the banked flashroms added with +;- the MZ-80A RFS hardware upgrade. +;- +;- Credits: +;- Copyright: (c) 2018-2023 Philip Smart +;- +;- History: July 2019 - Merged 2 utilities to create this compilation. +; May 2020 - Bank switch changes with release of v2 pcb with coded latch. The coded +; latch adds additional instruction overhead as the control latches share +; the same address space as the Flash RAMS thus the extra hardware to +; only enable the control registers if a fixed number of reads is made +; into the upper 8 bytes which normally wouldnt occur. Caveat - ensure +; that no loop instruction is ever placed into EFF8H - EFFFH. +;- +;-------------------------------------------------------------------------------------------------------- +;- This source file is free software: you can redistribute it and-or modify +;- it under the terms of the GNU General Public License as published +;- by the Free Software Foundation, either version 3 of the License, or +;- (at your option) any later version. +;- +;- This source file is distributed in the hope that it will be useful, +;- but WITHOUT ANY WARRANTY; without even the implied warranty of +;- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +;- GNU General Public License for more details. +;- +;- You should have received a copy of the GNU General Public License +;- along with this program. If not, see . +;-------------------------------------------------------------------------------------------------------- + +ROW EQU 25 +COLW EQU 40 +SCRNSZ EQU COLW * ROW +MODE80C EQU 0 + + ;=========================================================== + ; + ; USER ROM BANK 3 - Monitor memory utilities. + ; + ;=========================================================== + ORG UROMADDR + + ;-------------------------------- + ; Common code spanning all banks. + ;-------------------------------- + NOP + LD B,16 ; If we read the bank control reset register 15 times then this will enable bank control and then the 16th read will reset all bank control registers to default. +ROMFS3_0: LD A,(BNKCTRLRST) + DJNZ ROMFS3_0 ; Apply the default number of coded latch reads to enable the bank control registers. + LD A,BNKCTRLDEF ; Set coded latch, SDCS high, BBMOSI to high and BBCLK to high which enables SDCLK. + LD (BNKCTRL),A + NOP + NOP + NOP + XOR A ; We shouldnt arrive here after a reset, if we do, select UROM bank 0 + LD (BNKSELMROM),A + NOP + NOP + NOP + LD (BNKSELUSER),A ; and start up - ie. SA1510 Monitor - this occurs as User Bank 0 is enabled and the jmp to 0 is coded in it. + ; + ; No mans land... this should have switched to Bank 0 and at this point there is a jump to 00000H. + JP 00000H ; This is for safety!! + + + ;------------------------------------------------------------------------------------------ + ; Bank switching code, allows a call to code in another bank. + ; This code is duplicated in each bank such that a bank switch doesnt affect logic flow. + ;------------------------------------------------------------------------------------------ + ALIGN_NOPS UROMBSTBL + ; +BKSW3to0: PUSH AF + LD A, ROMBANK3 ; Calling bank (ie. us). + PUSH AF + LD A, ROMBANK0 ; Required bank to call. + JR BKSW3_0 +BKSW3to1: PUSH AF + LD A, ROMBANK3 ; Calling bank (ie. us). + PUSH AF + LD A, ROMBANK1 ; Required bank to call. + JR BKSW3_0 +BKSW3to2: PUSH AF + LD A, ROMBANK3 ; Calling bank (ie. us). + PUSH AF + LD A, ROMBANK2 ; Required bank to call. + JR BKSW3_0 +BKSW3to3: PUSH AF + LD A, ROMBANK3 ; Calling bank (ie. us). + PUSH AF + LD A, ROMBANK3 ; Required bank to call. + JR BKSW3_0 +BKSW3to4: PUSH AF + LD A, ROMBANK3 ; Calling bank (ie. us). + PUSH AF + LD A, ROMBANK4 ; Required bank to call. + JR BKSW3_0 +BKSW3to5: PUSH AF + LD A, ROMBANK3 ; Calling bank (ie. us). + PUSH AF + LD A, ROMBANK5 ; Required bank to call. + JR BKSW3_0 +BKSW3to6: PUSH AF + LD A, ROMBANK3 ; Calling bank (ie. us). + PUSH AF + LD A, ROMBANK6 ; Required bank to call. + JR BKSW3_0 +BKSW3to7: PUSH AF + LD A, ROMBANK3 ; Calling bank (ie. us). + PUSH AF + LD A, ROMBANK7 ; Required bank to call. + ; +BKSW3_0: PUSH HL ; Place function to call on stack + LD HL, BKSWRET3 ; Place bank switchers return address on stack. + EX (SP),HL + LD (TMPSTACKP),SP ; Save the stack pointer as some old code corrupts it. + LD (BNKSELUSER), A ; Repeat the bank switch B times to enable the bank control register and set its value. + JP (HL) ; Jump to required function. +BKSWRET3: POP AF ; Get bank which called us. + LD (BNKSELUSER), A ; Return to that bank. + POP AF + RET + + ;------------------------------------------------------------------------------- + ; START OF TAPE/SD CMDLINE TOOLS FUNCTIONALITY + ;------------------------------------------------------------------------------- + + ; Method to copy an application on a tape to an SD stored application. The tape drive is read and the first + ; encountered program is loaded into memory at 0x1200. The CMT header is populated with the correct details (even if + ; the load address isnt 0x1200, the CMT Header contains the correct value). + ; A call is then made to write the application to the SD card. + ; +TAPE2SD: ; Load from tape into memory, filling the tape CMT header and loading data into location 0x1200. + LD HL,LOADTAPECP ; Call the Loadtape command, non execute version to get the tape contents into memory. + CALL BKSW3to4 + LD A,(RESULT) + OR A + JR NZ,TAPE2SDERR + ; Save to SD Card. + LD HL,SAVESDCARDX + CALL BKSW3to2 + LD A,(RESULT) + OR A + JR NZ,TAPE2SDERR + LD DE,MSGT2SDOK + JR TAPE2SDERR2 +TAPE2SDERR: LD DE,MSGT2SDERR +TAPE2SDERR2:LD HL,PRINTMSG + CALL BKSW3to6 + RET + + ; Method to copy an SD stored application to a Cassette tape in the CMT. + ; The directory entry number or filename is passed to the command and the entry is located within the SD + ; directory structure. The file is then loaded into memory and the CMT header populated. A call is then made + ; to write out the data to tap. + ; +SD2TAPE: ; Load from SD, fill the CMT header then call CMT save. + LD HL,LOADSDCP + CALL BKSW3to2 + LD A,(RESULT) + OR A + JR NZ,SD2TAPEERR + LD HL,SAVECMT + CALL BKSW3to4 + LD A,(RESULT) + OR A + JR NZ,SD2TAPEERR + RET +SD2TAPEERR: LD DE,MSGSD2TERR + JR TAPE2SDERR2 + RET + ;------------------------------------------------------------------------------- + ; END OF TAPE/SD CMDLINE TOOLS FUNCTIONALITY + ;------------------------------------------------------------------------------- + + + ;------------------------------------------------------------------------------- + ; START OF MEMORY CMDLINE TOOLS FUNCTIONALITY + ;------------------------------------------------------------------------------- + + ; + ; Memory correction + ; command 'M' + ; +MCORX: CALL READ4HEX ; correction address + RET C +MCORX1: CALL NLPHL ; corr. adr. print + CALL SPHEX ; ACC ASCII display + CALL PRNTS ; space print + LD DE,BUFER ; Input the data. + CALL GETL + LD A,(DE) + CP 01Bh ; If . pressed, exit. + RET Z + PUSH HL + POP BC + CALL HLHEX ; If the existing address is no longer hex, reset. HLASCII(DE). If it is hex, take as the address to store data into. + JR C,MCRX3 ; Line is corrupted as the address is no longer in Hex, reset. + INC DE + INC DE + INC DE + INC DE + INC DE ; + CALL _2HEX ; Get value entered. + JR C,MCORX1 ; Not hex, reset. + CP (HL) ; Not same as memory, reset. + JR NZ,MCORX1 + INC DE ; + LD A,(DE) ; Check if no data just CR, if so, move onto next address. + CP 00Dh ; not correction + JR Z,MCRX2 + CALL _2HEX ; Get the new entered data. ACCHL(ASCII) + JR C,MCORX1 ; New data not hex, reset. + LD (HL),A ; data correct so store. +MCRX2: INC HL + JR MCORX1 +MCRX3: LD H,B ; memory address + LD L,C + JR MCORX1 + + ; Memory copy command 'CPY' + ; Parameters: XXXYYYZZZ - XXXX = Source, YYYY = Destination, ZZZZ = Size +MCOPY: CALL READ4HEX ; Source + JR C,MCOPYER1 + PUSH HL + CALL READ4HEX ; Destination + JR C,MCOPYER2 + PUSH HL + CALL READ4HEX ; Size + JR C,MCOPYER3 + PUSH HL + POP BC ; Size + POP DE ; Destination + POP HL ; Source + LDIR + RET + ; +MCOPYER3: POP HL +MCOPYER2: POP HL +MCOPYER1: RET + + + ; Dump method when called interbank as HL cannot be passed. + ; + ; BC = Start + ; DE = End +DUMPBC: PUSH BC + POP HL + JR DUMP + + ; Command line utility to dump memory. + ; Get start and optional end addresses from the command line, ie. XXXX[XXXX] + ; Paging is implemented, 23 lines at a time, pressing U goes back 100H, pressing D scrolls down 100H + ; +DUMPX: CALL HLHEX ; Get start address if present into HL + JR NC,DUMPX1 + LD DE,(DUMPADDR) ; Setup default start and end. + JR DUMPX2 +DUMPX1: INC DE + INC DE + INC DE + INC DE + PUSH HL + CALL HLHEX ; Get end address if present into HL + POP DE ; DE = Start address + JR NC,DUMPX4 ; Both present? Then display. +DUMPX2: LD A,(SCRNMODE) + OR A + LD HL,000A0h ; Make up an end address based on 160 bytes from start for 40 column mode. + JR Z,DUMPX3 + LD HL,00140h ; Make up an end address based on 320 bytes from start for 80 column mode. +DUMPX3: ADD HL,DE +DUMPX4: EX DE,HL + ; + ; HL = Start + ; DE = End +DUMP: LD A,23 +DUMP0: LD (TMPCNT),A + LD A,(SCRNMODE) ; Configure output according to screen mode, 40/80 chars. + OR A + JR NZ,DUMP1 + LD B,008H ; 40 Char, output 23 lines of 40 char. + LD C,017H + JR DUMP2 +DUMP1: LD B,010h ; 80 Char, output 23 lines of 80 char. + LD C,02Fh +DUMP2: CALL NLPHL +DUMP3: CALL SPHEX + INC HL + PUSH AF + LD A,(DSPXY) + ADD A,C + LD (DSPXY),A + POP AF + CP 020h + JR NC,DUMP4 + LD A,02Eh +DUMP4: CALL ?ADCN + CALL PRNT3 + LD A,(DSPXY) + INC C + SUB C + LD (DSPXY),A + DEC C + DEC C + DEC C + PUSH HL + SBC HL,DE + POP HL + JR NC,DUMP9 +DUMP5: DJNZ DUMP3 + LD A,(TMPCNT) + DEC A + JR NZ,DUMP0 +DUMP6: CALL GETKY ; Pause, X to quit, D to go down a block, U to go up a block. + OR A + JR Z,DUMP6 + CP 'D' + JR NZ,DUMP7 + LD A,8 + JR DUMP0 +DUMP7: CP 'U' + JR NZ,DUMP8 + PUSH DE + LD DE,00100H + OR A + SBC HL,DE + POP DE + LD A,8 + JR DUMP0 +DUMP8: CP 'X' + JR Z,DUMP9 + JR DUMP +DUMP9: LD (DUMPADDR),HL ; Store last address so we can just press D for next page, + CALL NL + RET + + + ; Cmd tool to clear memory. + ; Read cmd line for an init byte, if one not present, use 00H + ; +INITMEMX: CALL _2HEX + JR NC,INITMEMX1 + LD A,000H +INITMEMX1: PUSH AF + LD DE,MSGINITM + LD HL,PRINTMSG + CALL BKSW1to6 + LD HL,1200h + LD BC,0D000h - 1200h + POP DE +CLEAR1: LD A,D + LD (HL),A + INC HL + DEC BC + LD A,B + OR C + JP NZ,CLEAR1 + RET + + + ; Method to get the CMT parameters from the command line. + ; The parameters which should be given are: + ; XXXXYYYYZZZZ - where XXXX = Start Address, YYYY = End Address, ZZZZ = Execution Address. + ; If the start, end and execution address parameters are correct, prompt for a filename which will be written into the CMT header. + ; Output: Reg C = 0 - Success + ; = 1 - Error. +GETCMTPARM: CALL READ4HEX ; Start address + JR C,GETCMT1 + LD (DTADR),HL ; data adress buffer + LD B,H + LD C,L + CALL READ4HEX ; End address + JR C,GETCMT1 + SBC HL,BC + INC HL + LD (SIZE),HL ; byte size buffer + CALL READ4HEX ; Execution address + JR C,GETCMT1 + LD (EXADR),HL ; buffer + CALL NL + LD DE,MSGSAVE ; 'FILENAME? ' + LD HL,PRINTMSG + CALL BKSW2to6 ; Print out the filename. + LD DE,BUFER + CALL GETL + LD HL,BUFER+10 + LD DE,NAME ; name buffer + LD BC,FNSIZE + LDIR ; C = 0 means success. + RET +GETCMT1: LD C,1 ; C = 1 means an error occured. + RET + + + ; Method to read 4 bytes from a buffer pointed to by DE and attempt to convert to a 16bit number. If it fails, print out an error + ; message and return with C set. + ; + ; Input: DE = Address of digits to conver. + ; Output: HL = 16 bit number. + +READ4HEX: CALL HLHEX + JR C,READ4HEXERR + INC DE + INC DE + INC DE + INC DE + OR A ; Clear carry flag. + RET +READ4HEXERR:LD DE,MSGREAD4HEX ; Load up error message, print and exit. +READ4HEXPRE:LD HL,PRINTMSG + CALL BKSW1to6 + SCF + RET + + ; SPACE PRINT AND DISP ACC + ; INPUT:HL=DISP. ADR. +SPHEX: CALL PRNTS ; SPACE PRINT + LD A,(HL) + CALL PRTHX ; DSP OF ACC (ASCII) + LD A,(HL) + RET + + ; NEW LINE AND PRINT HL REG (ASCII) +NLPHL: CALL NL + CALL PRTHL + RET + ;------------------------------------------------------------------------------- + ; END OF MEMORY CMDLINE TOOLS FUNCTIONALITY + ;------------------------------------------------------------------------------- + + ;------------------------------------------------------------------------------- + ; START OF PRINTER CMDLINE TOOLS FUNCTIONALITY + ;------------------------------------------------------------------------------- +PTESTX: LD A,(DE) + CP '&' ; plotter test + JR NZ,PTST1X +PTST0X: INC DE + LD A,(DE) + CP 'L' ; 40 in 1 line + JR Z,.LPTX + CP 'S' ; 80 in 1 line + JR Z,..LPTX + CP 'C' ; Pen change + JR Z,PENX + CP 'G' ; Graph mode + JR Z,PLOTX + CP 'T' ; Test + JR Z,PTRNX +; +PTST1X: CALL PMSGX +ST1X2: RET +.LPTX: LD DE,LLPT ; 01-09-09-0B-0D + JR PTST1X +..LPTX: LD DE,SLPT ; 01-09-09-09-0D + JR PTST1X +PTRNX: LD A,004h ; Test pattern + JR LE999 +PLOTX: LD A,002h ; Graph mode +LE999: CALL LPRNTX + JR PTST0X +PENX: LD A,01Dh ; 1 change code (text mode) + JR LE999 +; +; +; 1 char print to $LPT +; +; in: ACC print data +; +; +LPRNTX: LD C,000h ; RDAX test + LD B,A ; print data store + CALL RDAX + LD A,B + OUT (0FFh),A ; data out + LD A,080h ; RDP high + OUT (0FEh),A + LD C,001h ; RDA test + CALL RDAX + XOR A ; RDP low + OUT (0FEh),A + RET +; +; $LPT msg. +; in: DE data low address +; 0D msg. end +; +PMSGX: PUSH DE + PUSH BC + PUSH AF +PMSGX1: LD A,(DE) ; ACC = data + CALL LPRNTX + LD A,(DE) + INC DE + CP 00Dh ; end ? + JR NZ,PMSGX1 + POP AF + POP BC + POP DE + RET + +; +; RDA check +; +; BRKEY in to monitor return +; in: C RDA code +; +RDAX: IN A,(0FEh) + AND 00Dh + CP C + RET Z + CALL BRKEY + JR NZ,RDAX + LD SP,ATRB + JR ST1X2 + + ; 40 CHA. IN 1 LINE CODE (DATA) +LLPT: DB 01H ; TEXT MODE + DB 09H + DB 09H + DB 0BH + DB 0DH + + ; 80 CHA. 1 LINE CODE (DATA) +SLPT: DB 01H ; TEXT MODE + DB 09H + DB 09H + DB 09H + DB 0DH + + ;------------------------------------------------------------------------------- + ; END OF PRINTER CMDLINE TOOLS FUNCTIONALITY + ;------------------------------------------------------------------------------- + + ;-------------------------------------- + ; + ; Message table - Refer to bank 6 for + ; all messages. + ; + ;-------------------------------------- + + ALIGN 0EFF8h + ORG 0EFF8h + DB 0FFh,0FFh,0FFh,0FFh,0FFh,0FFh,0FFh,0FFh diff --git a/asm/rfs_bank4.asm b/asm/rfs_bank4.asm new file mode 100644 index 0000000..31377ad --- /dev/null +++ b/asm/rfs_bank4.asm @@ -0,0 +1,335 @@ +;-------------------------------------------------------------------------------------------------------- +;- +;- Name: rfs_bank4.asm +;- Created: July 2019 +;- Author(s): Philip Smart +;- Description: Sharp MZ series Rom Filing System. +;- This assembly language program is written to utilise the banked flashroms added with +;- the MZ-80A RFS hardware upgrade. +;- +;- Credits: +;- Copyright: (c) 2018-2023 Philip Smart +;- +;- History: July 2019 - Merged 2 utilities to create this compilation. +; May 2020 - Bank switch changes with release of v2 pcb with coded latch. The coded +; latch adds additional instruction overhead as the control latches share +; the same address space as the Flash RAMS thus the extra hardware to +; only enable the control registers if a fixed number of reads is made +; into the upper 8 bytes which normally wouldnt occur. Caveat - ensure +; that no loop instruction is ever placed into EFF8H - EFFFH. +;- +;-------------------------------------------------------------------------------------------------------- +;- This source file is free software: you can redistribute it and-or modify +;- it under the terms of the GNU General Public License as published +;- by the Free Software Foundation, either version 3 of the License, or +;- (at your option) any later version. +;- +;- This source file is distributed in the hope that it will be useful, +;- but WITHOUT ANY WARRANTY; without even the implied warranty of +;- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +;- GNU General Public License for more details. +;- +;- You should have received a copy of the GNU General Public License +;- along with this program. If not, see . +;-------------------------------------------------------------------------------------------------------- + + + ;=========================================================== + ; + ; USER ROM BANK 4 - CMT Controller utilities. + ; + ;=========================================================== + ORG UROMADDR + + ;-------------------------------- + ; Common code spanning all banks. + ;-------------------------------- + NOP + LD B,16 ; If we read the bank control reset register 15 times then this will enable bank control and then the 16th read will reset all bank control registers to default. +ROMFS4_0: LD A,(BNKCTRLRST) + DJNZ ROMFS4_0 ; Apply the default number of coded latch reads to enable the bank control registers. + LD A,BNKCTRLDEF ; Set coded latch, SDCS high, BBMOSI to high and BBCLK to high which enables SDCLK. + LD (BNKCTRL),A + NOP + NOP + NOP + XOR A ; We shouldnt arrive here after a reset, if we do, select UROM bank 0 + LD (BNKSELMROM),A + NOP + NOP + NOP + LD (BNKSELUSER),A ; and start up - ie. SA1510 Monitor - this occurs as User Bank 0 is enabled and the jmp to 0 is coded in it. + ; + ; No mans land... this should have switched to Bank 0 and at this point there is a jump to 00000H. + JP 00000H ; This is for safety!! + + + ;------------------------------------------------------------------------------------------ + ; Bank switching code, allows a call to code in another bank. + ; This code is duplicated in each bank such that a bank switch doesnt affect logic flow. + ;------------------------------------------------------------------------------------------ + ALIGN_NOPS UROMBSTBL + ; +BKSW4to0: PUSH AF + LD A, ROMBANK4 ; Calling bank (ie. us). + PUSH AF + LD A, ROMBANK0 ; Required bank to call. + JR BKSW4_0 +BKSW4to1: PUSH AF + LD A, ROMBANK4 ; Calling bank (ie. us). + PUSH AF + LD A, ROMBANK1 ; Required bank to call. + JR BKSW4_0 +BKSW4to2: PUSH AF + LD A, ROMBANK4 ; Calling bank (ie. us). + PUSH AF + LD A, ROMBANK2 ; Required bank to call. + JR BKSW4_0 +BKSW4to3: PUSH AF + LD A, ROMBANK4 ; Calling bank (ie. us). + PUSH AF + LD A, ROMBANK3 ; Required bank to call. + JR BKSW4_0 +BKSW4to4: PUSH AF + LD A, ROMBANK4 ; Calling bank (ie. us). + PUSH AF + LD A, ROMBANK4 ; Required bank to call. + JR BKSW4_0 +BKSW4to5: PUSH AF + LD A, ROMBANK4 ; Calling bank (ie. us). + PUSH AF + LD A, ROMBANK5 ; Required bank to call. + JR BKSW4_0 +BKSW4to6: PUSH AF + LD A, ROMBANK4 ; Calling bank (ie. us). + PUSH AF + LD A, ROMBANK6 ; Required bank to call. + JR BKSW4_0 +BKSW4to7: PUSH AF + LD A, ROMBANK4 ; Calling bank (ie. us). + PUSH AF + LD A, ROMBANK7 ; Required bank to call. + ; +BKSW4_0: PUSH HL ; Place function to call on stack + LD HL, BKSWRET4 ; Place bank switchers return address on stack. + EX (SP),HL + LD (TMPSTACKP),SP ; Save the stack pointer as some old code corrupts it. + LD (BNKSELUSER), A ; Repeat the bank switch B times to enable the bank control register and set its value. + JP (HL) ; Jump to required function. +BKSWRET4: POP AF ; Get bank which called us. + LD (BNKSELUSER), A ; Return to that bank. + POP AF + RET + + ;------------------------------------------------------------------------------- + ; START OF CMT CONTROLLER FUNCTIONALITY + ;------------------------------------------------------------------------------- + + ; CMT Utility to Load a program from tape. + ; + ; Three entry points: + ; LOADTAPE = Load the first program shifting to lo memory if required and execute. + ; LOADTAPENX = Load the first program and return without executing. + ; LOADTAPECP = Load the first program to address 0x1200 and return. + ; +LOADTAPECP: LD A,0FFH + LD (CMTAUTOEXEC),A + JR LOADTAPE2 +LOADTAPENX: LD A,0FFH + JR LOADTAPE1 +LOADTAPE: LD A,000H +LOADTAPE1: LD (CMTAUTOEXEC),A + XOR A +LOADTAPE2: LD (CMTCOPY),A ; Set cmt copy mode, 0xFF if we are copying. + LD A,0FFH ; If called interbank, set a result code in memory to detect success. + LD (RESULT),A + CALL ?RDI + JP C,?ERX2 + LD DE,MSGLOAD ; 'LOADING ' + LD BC,NAME + LD HL,PRINTMSG + CALL BKSW4to6 + XOR A + LD (CMTLOLOAD),A + + LD HL,(DTADR) ; Common code, store load address in case we shift or manipulate loading. + LD (DTADRSTORE),HL + + LD A,(CMTCOPY) ; If were copying we always load at 0x1200. + OR A + JR Z,LOADTAPE3 + LD HL,01200H + LD (DTADR),HL + +LOADTAPE3: LD HL,(DTADR) ; If were loading and the load address is below 0x1200, shift it to 0x1200 to load then move into correct location. + LD A,H + OR L + JR NZ,LOADTAPE4 + LD A,0FFh + LD (CMTLOLOAD),A + LD HL,01200h + LD (DTADR),HL +LOADTAPE4: CALL ?RDD + JP C,?ERX2 + LD HL,(DTADRSTORE) ; Restore the original load address into the CMT header. + LD (DTADR),HL + LD A,(CMTCOPY) + OR A + JR NZ,LOADTAPE6 +LOADTAPE5: LD A,(CMTAUTOEXEC) ; Get back the auto execute flag. + OR A + JR NZ,LOADTAPE6 ; Dont execute.. + LD A,(CMTLOLOAD) + CP 0FFh + JR Z,LOADTAPELM ; Execute at low memory? + LD BC,00100h + LD HL,(EXADR) + JP (HL) +LOADTAPELM: LD A,(MEMSW) ; Perform memory switch, mapping out ROM from $0000 to $C000 + LD HL,01200h ; Shift the program down to RAM at $0000 + LD DE,00000h + LD BC,(SIZE) + LDIR + LD BC,00100h + LD HL,(EXADR) ; Fetch exec address and run. + JP (HL) +LOADTAPE6: LD DE,MSGCMTDATA + PUSH HL ; Load address as parameter 2. + LD HL,(EXADR) + PUSH HL ; Execution address as parameter 1. + LD BC,(SIZE) ; Size as BC parameter. + LD HL,PRINTMSG + CALL BKSW4to6 + POP BC + POP BC ; Waste parameters. + XOR A ; Success. + LD (RESULT),A + RET + + + ; SA1510 Routine to write a tape header. Copied into the RFS and modified to merge better + ; with the RFS interface. + ; +CMTWRI: ;DI + PUSH DE + PUSH BC + PUSH HL + LD D,0D7H + LD E,0CCH + LD HL,IBUFE + LD BC,00080H + CALL CKSUM + CALL MOTOR + JR C,CMTWRI2 + LD A,E + CP 0CCH + JR NZ,CMTWRI1 + PUSH HL + PUSH DE + PUSH BC + LD DE,MSGCMTWRITE + LD BC,NAME + LD HL,PRINTMSG + CALL BKSW4to6 + POP BC + POP DE + POP HL +CMTWRI1: CALL GAP + CALL WTAPE +CMTWRI2: POP HL + POP BC + POP DE + CALL MSTOP + PUSH AF + LD A,(TIMFG) + CP 0F0H + JR NZ,CMTWRI3 + ;EI +CMTWRI3: POP AF + RET + + + ; Method to save an application stored in memory to a cassette in the CMT. The start, size and execution address are either given in BUFER via the + ; command line and the a filename is prompted for and read, or alternatively all the data is passed into the function already set in the CMT header. + ; The tape is then opened and the header + data are written out. + ; +SAVECMT: LD A,0FFH ; Set SDCOPY to indicate this is a copy command and not a command line save. + JR SAVEX1 + ; + ; Normal entry point, the cmdline contains XXXXYYYYZZZZ where XXXX=start, YYYY=size, ZZZZ=exec addr. A filenname is prompted for and read. + ; The data is stored in the CMT header prior to writing out the header and data.. + ; +SAVEX: LD HL,GETCMTPARM ; Get the CMT parameters. + CALL BKSW4to3 + LD A,C + OR A + RET NZ ; Exit if an error occurred. + + XOR A +SAVEX1: LD (SDCOPY),A + LD A,0FFH + LD (RESULT),A ; For interbank calls, pass result via a memory variable. Assume failure unless updated. + LD A,OBJCD ; Set attribute: OBJ + LD (ATRB),A + CALL CMTWRI ; Commence header write. Header doesnt need updating for header write. +?ERX1: JP C,?ERX2 + + LD A,(SDCOPY) + OR A + JR Z,SAVEX2 + LD DE,(DTADR) + LD A,D ; If copying and address is below 1000H, then data is held at 1200H so update header for write. + CP 001H + JR NC,SAVEX2 + LD DE,01200H + LD (DTADR),DE +SAVEX2: CALL ?WRD ; data + JR C,?ERX1 + LD DE,MSGSAVEOK ; 'OK!' + LD HL,PRINTMSG + CALL BKSW4to6 + LD A,0 ; Success. + LD (RESULT),A + RET +?ERX2: CP 002h + JR NZ,?ERX3 + LD (RESULT),A ; Set break key pressed code. + RET Z +?ERX3: LD DE,MSGE1 ; 'CHECK SUM ER.' + LD HL,PRINTMSG + CALL BKSW4to6 + RET + + + ; Method to verify that a tape write occurred free of error. After a write, the tape is read and compared with the memory that created it. + ; +VRFYX: CALL ?VRFY + JP C,?ERX2 + LD DE,MSGOK ; 'OK!' + LD HL,PRINTMSG + CALL BKSW4to6 + RET + + ; Method to toggle the audible key press sound, ie a beep when a key is pressed. + ; +SGX: LD A,(SWRK) + RRA + CCF + RLA + LD (SWRK),A + RET + + ;------------------------------------------------------------------------------- + ; END OF CMT CONTROLLER FUNCTIONALITY + ;------------------------------------------------------------------------------- + + ;-------------------------------------- + ; + ; Message table - Refer to bank 6 for + ; all messages. + ; + ;-------------------------------------- + + ALIGN 0EFF8h + ORG 0EFF8h + DB 0FFh,0FFh,0FFh,0FFh,0FFh,0FFh,0FFh,0FFh diff --git a/asm/rfs_bank5.asm b/asm/rfs_bank5.asm new file mode 100644 index 0000000..5bda0db --- /dev/null +++ b/asm/rfs_bank5.asm @@ -0,0 +1,210 @@ +;-------------------------------------------------------------------------------------------------------- +;- +;- Name: rfs_bank5.asm +;- Created: July 2019 +;- Author(s): Philip Smart +;- Description: Sharp MZ series Rom Filing System. +;- This assembly language program is written to utilise the banked flashroms added with +;- the MZ-80A RFS hardware upgrade. +;- +;- Credits: +;- Copyright: (c) 2018-2023 Philip Smart +;- +;- History: July 2019 - Merged 2 utilities to create this compilation. +; May 2020 - Bank switch changes with release of v2 pcb with coded latch. The coded +; latch adds additional instruction overhead as the control latches share +; the same address space as the Flash RAMS thus the extra hardware to +; only enable the control registers if a fixed number of reads is made +; into the upper 8 bytes which normally wouldnt occur. Caveat - ensure +; that no loop instruction is ever placed into EFF8H - EFFFH. +; Mar 2021 - Add mapping utilities for Sharp<->ASCII conversion. +;- +;-------------------------------------------------------------------------------------------------------- +;- This source file is free software: you can redistribute it and-or modify +;- it under the terms of the GNU General Public License as published +;- by the Free Software Foundation, either version 3 of the License, or +;- (at your option) any later version. +;- +;- This source file is distributed in the hope that it will be useful, +;- but WITHOUT ANY WARRANTY; without even the implied warranty of +;- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +;- GNU General Public License for more details. +;- +;- You should have received a copy of the GNU General Public License +;- along with this program. If not, see . +;-------------------------------------------------------------------------------------------------------- + + + ;====================================== + ; + ; USER ROM BANK 5 - Utilities + ; + ;====================================== + ORG UROMADDR + + ;-------------------------------- + ; Common code spanning all banks. + ;-------------------------------- + NOP + LD B,16 ; If we read the bank control reset register 15 times then this will enable bank control and then the 16th read will reset all bank control registers to default. +ROMFS5_0: LD A,(BNKCTRLRST) + DJNZ ROMFS5_0 ; Apply the default number of coded latch reads to enable the bank control registers. + LD A,BNKCTRLDEF ; Set coded latch, SDCS high, BBMOSI to high and BBCLK to high which enables SDCLK. + LD (BNKCTRL),A + NOP + NOP + NOP + XOR A ; We shouldnt arrive here after a reset, if we do, select UROM bank 0 + LD (BNKSELMROM),A + NOP + NOP + NOP + LD (BNKSELUSER),A ; and start up - ie. SA1510 Monitor - this occurs as User Bank 0 is enabled and the jmp to 0 is coded in it. + ; + ; No mans land... this should have switched to Bank 0 and at this point there is a jump to 00000H. + JP 00000H ; This is for safety!! + + + ;------------------------------------------------------------------------------------------ + ; Bank switching code, allows a call to code in another bank. + ; This code is duplicated in each bank such that a bank switch doesnt affect logic flow. + ;------------------------------------------------------------------------------------------ + ALIGN_NOPS UROMBSTBL + ; +BKSW5to0: PUSH AF + LD A, ROMBANK5 ; Calling bank (ie. us). + PUSH AF + LD A, ROMBANK0 ; Required bank to call. + JR BKSW5_0 +BKSW5to1: PUSH AF + LD A, ROMBANK5 ; Calling bank (ie. us). + PUSH AF + LD A, ROMBANK1 ; Required bank to call. + JR BKSW5_0 +BKSW5to2: PUSH AF + LD A, ROMBANK5 ; Calling bank (ie. us). + PUSH AF + LD A, ROMBANK2 ; Required bank to call. + JR BKSW5_0 +BKSW5to3: PUSH AF + LD A, ROMBANK5 ; Calling bank (ie. us). + PUSH AF + LD A, ROMBANK3 ; Required bank to call. + JR BKSW5_0 +BKSW5to4: PUSH AF + LD A, ROMBANK5 ; Calling bank (ie. us). + PUSH AF + LD A, ROMBANK4 ; Required bank to call. + JR BKSW5_0 +BKSW5to5: PUSH AF + LD A, ROMBANK5 ; Calling bank (ie. us). + PUSH AF + LD A, ROMBANK5 ; Required bank to call. + JR BKSW5_0 +BKSW5to6: PUSH AF + LD A, ROMBANK5 ; Calling bank (ie. us). + PUSH AF + LD A, ROMBANK6 ; Required bank to call. + JR BKSW5_0 +BKSW5to7: PUSH AF + LD A, ROMBANK5 ; Calling bank (ie. us). + PUSH AF + LD A, ROMBANK7 ; Required bank to call. + ; +BKSW5_0: PUSH HL ; Place function to call on stack + LD HL, BKSWRET5 ; Place bank switchers return address on stack. + EX (SP),HL + LD (TMPSTACKP),SP ; Save the stack pointer as some old code corrupts it. + LD (BNKSELUSER), A ; Repeat the bank switch B times to enable the bank control register and set its value. + JP (HL) ; Jump to required function. +BKSWRET5: POP AF ; Get bank which called us. + LD (BNKSELUSER), A ; Return to that bank. + POP AF + RET + + + ; Method to convert a string with Sharp ASCII codes into standard ASCII codes via map lookup. + ; Inputs: DE = pointer to string for conversion. + ; B = Maximum number of characters to convert if string not terminated. + ; +CNVSTR_SA: PUSH HL + PUSH DE + PUSH BC +CNVSTRSA1: LD A,(DE) ; Get character for conversion. + OR A ; Exit at End of String (NULL, CR) + JR Z,CNVSTRSAEX + CP 00DH + JR Z,CNVSTRSAEX + CP 020H ; No point mapping control characters. + JR C,CNVSTRSA2 + ; + LD HL,SHARPTOASC ; Start of mapping table. + PUSH BC + LD C,A + LD B,0 + ADD HL,BC ; Add in character offset. + POP BC + LD A,(HL) + LD (DE),A ; Map character. +CNVSTRSA2: INC DE + DJNZ CNVSTRSA1 +CNVSTRSAEX: POP BC ; Restore all registers used except AF. + POP DE + POP HL + RET + + ; Method to convert a string with standard ASCII into Sharp ASCII codes via scan lookup in the mapping table. + ; Inputs: DE = pointer to string for conversion. + ; B = Maximum number of characters to convert if string not terminated. +CNVSTR_AS: PUSH HL + PUSH DE + PUSH BC +CNVSTRAS1: LD A,(DE) ; Get character for conversion. + OR A ; Exit at End of String (NULL, CR) + JR Z,CNVSTRSAEX + CP 00DH + JR Z,CNVSTRSAEX + CP 020H ; No point mapping control characters. + JR C,CNVSTRAS5 + + LD HL,SHARPTOASC + 020H + PUSH BC + LD B, 0100H - 020H +CNVSTRAS2: CP (HL) ; Go through table looking for a match. + JR Z,CNVSTRAS3 + INC HL + DJNZ CNVSTRAS2 + JR CNVSTRAS4 ; No match then dont convert. +CNVSTRAS3: LD BC,SHARPTOASC ; On match or expiration of BC subtract table starting point to arrive at index. + OR A + SBC HL,BC + LD A,L ; Index is used as the converted character. +CNVSTRAS4: LD (DE),A + POP BC +CNVSTRAS5: INC DE + DJNZ CNVSTRAS1 + JR CNVSTRSAEX + + ; Mapping table to convert between Sharp ASCII and standard ASCII. + ; Sharp -> ASCII : Index with Sharp value into table to obtain conversion. + ; ASCII -> Sharp : Scan into table looking for value, on match the idx is the conversion. NB 0x20 = 0x20. +SHARPTOASC: DB 000H, 020H, 020H, 020H, 020H, 020H, 020H, 020H, 020H, 020H, 020H, 020H, 020H, 000H, 020H, 020H ; 0x0F + DB 020H, 020H, 020H, 020H, 020H, 020H, 020H, 020H, 020H, 020H, 020H, 020H, 020H, 020H, 020H, 020H ; 0x1F + DB 020H, 021H, 022H, 023H, 024H, 025H, 026H, 027H, 028H, 029H, 02AH, 02BH, 02CH, 02DH, 02EH, 02FH ; 0x2F + DB 030H, 031H, 032H, 033H, 034H, 035H, 036H, 037H, 038H, 039H, 03AH, 03BH, 03CH, 03DH, 03EH, 03FH ; 0x3F + DB 040H, 041H, 042H, 043H, 044H, 045H, 046H, 047H, 048H, 049H, 04AH, 04BH, 04CH, 04DH, 04EH, 04FH ; 0x4F + DB 050H, 051H, 052H, 053H, 054H, 055H, 056H, 057H, 058H, 059H, 05AH, 05BH, 05CH, 05DH, 05EH, 05FH ; 0x5F + DB 020H, 020H, 020H, 020H, 020H, 020H, 020H, 020H, 020H, 020H, 020H, 020H, 020H, 020H, 020H, 020H ; 0x6F + DB 020H, 020H, 020H, 020H, 020H, 020H, 020H, 020H, 020H, 020H, 020H, 020H, 020H, 020H, 020H, 020H ; 0x7F + DB 020H, 020H, 020H, 020H, 020H, 020H, 020H, 020H, 020H, 020H, 020H, 020H, 020H, 020H, 020H, 020H ; 0x8F + DB 020H, 020H, 065H, 020H, 020H, 020H, 074H, 067H, 068H, 020H, 062H, 078H, 064H, 072H, 070H, 063H ; 0x9F + DB 071H, 061H, 07AH, 077H, 073H, 075H, 069H, 020H, 04FH, 06BH, 066H, 076H, 020H, 075H, 042H, 06AH ; 0xAF + DB 06EH, 020H, 055H, 06DH, 020H, 020H, 020H, 06FH, 06CH, 041H, 06FH, 061H, 020H, 079H, 020H, 020H ; 0xBF + DB 020H, 020H, 020H, 020H, 020H, 020H, 020H, 020H, 020H, 020H, 020H, 020H, 020H, 020H, 020H, 020H ; 0xCF + DB 020H, 020H, 020H, 020H, 020H, 020H, 020H, 020H, 020H, 020H, 020H, 020H, 020H, 020H, 020H, 020H ; 0xDF + DB 020H, 020H, 020H, 020H, 020H, 020H, 020H, 020H, 020H, 020H, 020H, 020H, 020H, 020H, 020H, 020H ; 0xEF + DB 020H, 020H, 020H, 020H, 020H, 020H, 020H, 020H, 020H, 020H, 020H, 020H, 020H, 020H, 020H, 020H ; 0xFF + + ALIGN 0EFF8h + ORG 0EFF8h + DB 0FFh,0FFh,0FFh,0FFh,0FFh,0FFh,0FFh,0FFh diff --git a/asm/rfs_bank6.asm b/asm/rfs_bank6.asm new file mode 100644 index 0000000..6a36a8b --- /dev/null +++ b/asm/rfs_bank6.asm @@ -0,0 +1,497 @@ +;-------------------------------------------------------------------------------------------------------- +;- +;- Name: rfs_bank6.asm +;- Created: July 2019 +;- Author(s): Philip Smart +;- Description: Sharp MZ series Rom Filing System. +;- This assembly language program is written to utilise the banked flashroms added with +;- the MZ-80A RFS hardware upgrade. +;- +;- Credits: +;- Copyright: (c) 2018-2023 Philip Smart +;- +;- History: July 2019 - Merged 2 utilities to create this compilation. +; May 2020 - Bank switch changes with release of v2 pcb with coded latch. The coded +; latch adds additional instruction overhead as the control latches share +; the same address space as the Flash RAMS thus the extra hardware to +; only enable the control registers if a fixed number of reads is made +; into the upper 8 bytes which normally wouldnt occur. Caveat - ensure +; that no loop instruction is ever placed into EFF8H - EFFFH. +; July 2020 - Updated for the v2.1 hardware. RFS can run with a tranZPUter board with +; or without the K64 I/O processor. RFS wont use the K64 processor all +; operations are done by the Z80 under RFS. +;- +;-------------------------------------------------------------------------------------------------------- +;- This source file is free software: you can redistribute it and-or modify +;- it under the terms of the GNU General Public License as published +;- by the Free Software Foundation, either version 3 of the License, or +;- (at your option) any later version. +;- +;- This source file is distributed in the hope that it will be useful, +;- but WITHOUT ANY WARRANTY; without even the implied warranty of +;- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +;- GNU General Public License for more details. +;- +;- You should have received a copy of the GNU General Public License +;- along with this program. If not, see . +;-------------------------------------------------------------------------------------------------------- + + + ;====================================== + ; + ; USER ROM BANK 6 + ; + ;====================================== + ORG UROMADDR + + ;-------------------------------- + ; Common code spanning all banks. + ;-------------------------------- + NOP + LD B,16 ; If we read the bank control reset register 15 times then this will enable bank control and then the 16th read will reset all bank control registers to default. +ROMFS6_0: LD A,(BNKCTRLRST) + DJNZ ROMFS6_0 ; Apply the default number of coded latch reads to enable the bank control registers. + LD A,BNKCTRLDEF ; Set coded latch, SDCS high, BBMOSI to high and BBCLK to high which enables SDCLK. + LD (BNKCTRL),A + NOP + NOP + NOP + XOR A ; We shouldnt arrive here after a reset, if we do, select UROM bank 0 + LD (BNKSELMROM),A + NOP + NOP + NOP + LD (BNKSELUSER),A ; and start up - ie. SA1510 Monitor - this occurs as User Bank 0 is enabled and the jmp to 0 is coded in it. + ; + ; No mans land... this should have switched to Bank 0 and at this point there is a jump to 00000H. + JP 00000H ; This is for safety!! + + + ;------------------------------------------------------------------------------------------ + ; Bank switching code, allows a call to code in another bank. + ; This code is duplicated in each bank such that a bank switch doesnt affect logic flow. + ;------------------------------------------------------------------------------------------ + ALIGN_NOPS UROMBSTBL + ; +BKSW6to0: PUSH AF + LD A, ROMBANK6 ; Calling bank (ie. us). + PUSH AF + LD A, ROMBANK0 ; Required bank to call. + JR BKSW6_0 +BKSW6to1: PUSH AF + LD A, ROMBANK6 ; Calling bank (ie. us). + PUSH AF + LD A, ROMBANK1 ; Required bank to call. + JR BKSW6_0 +BKSW6to2: PUSH AF + LD A, ROMBANK6 ; Calling bank (ie. us). + PUSH AF + LD A, ROMBANK2 ; Required bank to call. + JR BKSW6_0 +BKSW6to3: PUSH AF + LD A, ROMBANK6 ; Calling bank (ie. us). + PUSH AF + LD A, ROMBANK3 ; Required bank to call. + JR BKSW6_0 +BKSW6to4: PUSH AF + LD A, ROMBANK6 ; Calling bank (ie. us). + PUSH AF + LD A, ROMBANK4 ; Required bank to call. + JR BKSW6_0 +BKSW6to5: PUSH AF + LD A, ROMBANK6 ; Calling bank (ie. us). + PUSH AF + LD A, ROMBANK5 ; Required bank to call. + JR BKSW6_0 +BKSW6to6: PUSH AF + LD A, ROMBANK6 ; Calling bank (ie. us). + PUSH AF + LD A, ROMBANK6 ; Required bank to call. + JR BKSW6_0 +BKSW6to7: PUSH AF + LD A, ROMBANK6 ; Calling bank (ie. us). + PUSH AF + LD A, ROMBANK7 ; Required bank to call. + ; +BKSW6_0: PUSH HL ; Place function to call on stack + LD HL, BKSWRET6 ; Place bank switchers return address on stack. + EX (SP),HL + LD (TMPSTACKP),SP ; Save the stack pointer as some old code corrupts it. + LD (BNKSELUSER), A ; Repeat the bank switch B times to enable the bank control register and set its value. + JP (HL) ; Jump to required function. +BKSWRET6: POP AF ; Get bank which called us. + LD (BNKSELUSER), A ; Return to that bank. + POP AF + RET + + ;------------------------------------------------------------------------------- + ; START OF PRINT ROUTINE METHODS + ;------------------------------------------------------------------------------- + + ; Method to print out a true ASCII character, not the Sharp values. This is done using the mapping table ATBL for the + ; range 0..127, 128.. call the original Sharp routine. + ; Input: A = Ascii character. +PRINTASCII: PUSH HL + PUSH BC + CP 080H ; Anything above 080H isnt ascii so call original routine. + JR NC,PRINTASCII1 + CP 00DH ; Carriage Return? Dont map just execute via original Sharp call. + JR Z,PRINTASCII1 + LD HL,ATBL + LD C,A + LD B,0 + ADD HL,BC + LD A,(HL) + CALL ?DSP +PRINTASCII0:POP BC + POP HL + RET +PRINTASCII1:CALL PRNT + JR PRINTASCII0 + + ; Method to print out a string residing in this bank. + ; + ; As string messages take up space and banks are limited, it makes sense to locate all strings in one + ; bank and print them out from here, hence this method. + ; + ; Also, as strings often require embedded values to be printed (aka printf), a basic mechanism for printing out stack + ; parameters is provided. A PUSH before calling this method followed by an embedded marker (ie. 0xFF) will see the stack + ; value printed in hex at the point in the string where the marker appears. + ; + ; Input: DE = Address, in this bank or any other location EXCEPT another bank. + ; BC = Value to print with marker 0xFB if needed. + ; Upto 4 stack values accessed by markers 0xFF, 0xFE, 0xFD, 0xFC +PRINTMSG: LD A,(DE) + CP 000H ; End of string? + RET Z + CP 0FFH ; Marker to print out first stack parameter. + JR Z,PRINTMSG3 + CP 0FEH ; Marker to print out second stack parameter. + JR Z,PRINTMSG6 + CP 0FDH ; Marker to print out third stack parameter. + JR Z,PRINTMSG7 + CP 0FCH ; Marker to print out fourth stack parameter. + JR Z,PRINTMSG8 + CP 0FBH ; Marker to print out BC. + JR Z,PRINTMSG9 + CP 0FAH ; Marker to print out a filename with filename address stored in BC. + JR Z,PRINTMSG10 + CP 0F9H ; Marker to print out C as a character. + JR NZ,PRINTMSG1 + LD A,C +PRINTMSG1: CALL PRINTASCII +PRINTMSG2: INC DE + JR PRINTMSG +PRINTMSG3: LD HL,8+0 ; Get first stack parameter, there are 2 pushes on the stack plus return address before the parameters. +PRINTMSG4: ADD HL,SP + LD A,(HL) + INC HL + LD H,(HL) + LD L,A +PRINTMSG5: CALL PRTHL + JR PRINTMSG2 +PRINTMSG6: LD HL,8+2 + JR PRINTMSG4 +PRINTMSG7: LD HL,8+4 + JR PRINTMSG4 +PRINTMSG8: LD HL,8+6 + JR PRINTMSG4 +PRINTMSG9: PUSH BC ; Print out contents of BC as 4 digit hex. + POP HL + JR PRINTMSG5 +PRINTMSG10: PUSH DE ; Print out a filename with pointer stored in BC. + PUSH BC + POP DE + CALL PRTFN + POP DE + JR PRINTMSG2 + + + ; Method to print out the filename within an MZF header or SD Card header. + ; The name may not be terminated as the full 17 chars are used, so this needs + ; to be checked. Also, the filename uses Sharp Ascii so call the original Sharp + ; print routine. + ; + ; Input: DE = Address of filename. + ; +PRTFN: PUSH BC + LD B,FNSIZE ; Maximum size of filename. +PRTMSG: LD A,(DE) + INC DE + CP 000H ; If there is a valid terminator, exit. + JR Z,PRTMSGE + CP 00DH + JR Z,PRTMSGE + CALL PRNT + DJNZ PRTMSG ; Else print until 17 chars have been processed. + CALL NL +PRTMSGE: POP BC + RET + ;------------------------------------------------------------------------------- + ; END OF PRINT ROUTINE METHODS + ;------------------------------------------------------------------------------- + + + + ;------------------------------------------------------------------------------- + ; START OF HELP SCREEN FUNCTIONALITY + ;------------------------------------------------------------------------------- + + ; Simple help screen to display commands. +HELP: CALL NL + LD DE, HELPSCR + CALL PRTSTR + RET + + ; A modified print string routine with full screen pause to print out the help screen text. The routine prints out true ascii + ; as opposed to Sharp modified ascii. + ; A string is NULL terminated. +PRTSTR: PUSH AF + PUSH BC + PUSH DE + LD A,0 + LD (TMPLINECNT),A +PRTSTR1: LD A,(DE) + CP 000H ; NULL terminates the string. + JR Z,PRTSTRE + CP 00DH ; As does CR. + JR Z,PRTSTR3 +PRTSTR2: CALL PRINTASCII + INC DE + JR PRTSTR1 +PRTSTR3: PUSH AF + LD A,(TMPLINECNT) + CP 24 + JR Z,PRTSTR5 + INC A +PRTSTR4: LD (TMPLINECNT),A + POP AF + JR PRTSTR2 +PRTSTR5: CALL GETKY + CP ' ' + JR NZ,PRTSTR5 + XOR A + JR PRTSTR4 +PRTSTRE: POP DE + POP BC + POP AF + RET + + ; Help text. Use of lower case, due to Sharp's non standard character set, is not easy, you have to manually code each byte + ; hence using upper case. + ; 1 40 +HELPSCR: DB "0..9 - select RFS Drive.", 00DH + DB "40 - 40 col mode.", 00DH + DB "80 - 80 col mode.", 00DH + ;DB "700 - Select MZ-700 Mode.", 00DH + ;DB "7008 - Select MZ-700 80 col Mode.", 00DH + DB "B - toggle keyboard bell.", 00DH + DB "BASIC - Load BASIC SA-5510.", 00DH + DB "C - clear memory $1200-$D000.", 00DH + DB "CPXXXXYYYYZZZZ - copy memory", 00DH + DB " XXXX=src,YYYY=dst,ZZZZ=size", 00DH + DB "CPM - Load CPM.", 00DH + DB "DXXXX[YYYY] - dump mem XXXX to YYYY.", 00DH + DB "EC[FN]- erase file, FN=No, or Filename", 00DH + DB "F[X] - boot fd drive X.", 00DH + DB "f - boot fd original rom.", 00DH + DB "H - this help screen.", 00DH + DB "IR/IC - rfs dir listing rom/sd card.", 00DH + DB "JXXXX - jump to location XXXX.", 00DH + DB "LT[FN]- load tape, FN=Filename", 00DH + DB "LR[FN]- load rom, FN=No. or Filename", 00DH + DB "LC[FN]- load sdcard, FN=No. or Filename", 00DH + DB " - add NX for no exec, ie.LRNX.", 00DH + DB "MXXXX - edit memory starting at XXXX.", 00DH + DB "P - test printer.", 00DH + DB "R - test dram memory.", 00DH + DB "SD2T - copy sd card to tape.", 00DH + DB "ST[XXXXYYYYZZZZ] - save mem to tape.", 00DH + DB "SC[XXXXYYYYZZZZ] - save mem to card.", 00DH + DB " XXXX=start,YYYY=end,ZZZZ=exec", 00DH + DB "T - test timer.", 00DH + DB "T2SD - copy tape to sd card.", 00DH + DB "V - verify tape save.", 00DH + DB 000H + + ;------------------------------------------------------------------------------- + ; END OF HELP SCREEN FUNCTIONALITY + ;------------------------------------------------------------------------------- + + ; TRUE ASCII TO DISPLAY CODE TABLE + ; +ATBL: DB 0CCH ; NUL '\0' (null character) + DB 0E0H ; SOH (start of heading) + DB 0F2H ; STX (start of text) + DB 0F3H ; ETX (end of text) + DB 0CEH ; EOT (end of transmission) + DB 0CFH ; ENQ (enquiry) + DB 0F6H ; ACK (acknowledge) + DB 0F7H ; BEL '\a' (bell) + DB 0F8H ; BS '\b' (backspace) + DB 0F9H ; HT '\t' (horizontal tab) + DB 0FAH ; LF '\n' (new line) + DB 0FBH ; VT '\v' (vertical tab) + DB 0FCH ; FF '\f' (form feed) + DB 0FDH ; CR '\r' (carriage ret) + DB 0FEH ; SO (shift out) + DB 0FFH ; SI (shift in) + DB 0E1H ; DLE (data link escape) + DB 0C1H ; DC1 (device control 1) + DB 0C2H ; DC2 (device control 2) + DB 0C3H ; DC3 (device control 3) + DB 0C4H ; DC4 (device control 4) + DB 0C5H ; NAK (negative ack.) + DB 0C6H ; SYN (synchronous idle) + DB 0E2H ; ETB (end of trans. blk) + DB 0E3H ; CAN (cancel) + DB 0E4H ; EM (end of medium) + DB 0E5H ; SUB (substitute) + DB 0E6H ; ESC (escape) + DB 0EBH ; FS (file separator) + DB 0EEH ; GS (group separator) + DB 0EFH ; RS (record separator) + DB 0F4H ; US (unit separator) + DB 000H ; SPACE + DB 061H ; ! + DB 062H ; " + DB 063H ; # + DB 064H ; $ + DB 065H ; % + DB 066H ; & + DB 067H ; ' + DB 068H ; ( + DB 069H ; ) + DB 06BH ; * + DB 06AH ; + + DB 02FH ; , + DB 02AH ; - + DB 02EH ; . + DB 02DH ; / + DB 020H ; 0 + DB 021H ; 1 + DB 022H ; 2 + DB 023H ; 3 + DB 024H ; 4 + DB 025H ; 5 + DB 026H ; 6 + DB 027H ; 7 + DB 028H ; 8 + DB 029H ; 9 + DB 04FH ; : + DB 02CH ; ; + DB 051H ; < + DB 02BH ; = + DB 057H ; > + DB 049H ; ? + DB 055H ; @ + DB 001H ; A + DB 002H ; B + DB 003H ; C + DB 004H ; D + DB 005H ; E + DB 006H ; F + DB 007H ; G + DB 008H ; H + DB 009H ; I + DB 00AH ; J + DB 00BH ; K + DB 00CH ; L + DB 00DH ; M + DB 00EH ; N + DB 00FH ; O + DB 010H ; P + DB 011H ; Q + DB 012H ; R + DB 013H ; S + DB 014H ; T + DB 015H ; U + DB 016H ; V + DB 017H ; W + DB 018H ; X + DB 019H ; Y + DB 01AH ; Z + DB 052H ; [ + DB 059H ; \ '\\' + DB 054H ; ] + DB 0BEH ; ^ + DB 03CH ; _ + DB 0C7H ; ` + DB 081H ; a + DB 082H ; b + DB 083H ; c + DB 084H ; d + DB 085H ; e + DB 086H ; f + DB 087H ; g + DB 088H ; h + DB 089H ; i + DB 08AH ; j + DB 08BH ; k + DB 08CH ; l + DB 08DH ; m + DB 08EH ; n + DB 08FH ; o + DB 090H ; p + DB 091H ; q + DB 092H ; r + DB 093H ; s + DB 094H ; t + DB 095H ; u + DB 096H ; v + DB 097H ; w + DB 098H ; x + DB 099H ; y + DB 09AH ; z + DB 0BCH ; { + DB 080H ; | + DB 040H ; } + DB 0A5H ; ~ + DB 0C0H ; DEL + + ;-------------------------------------- + ; + ; Message table + ; + ;-------------------------------------- +MSGSONTZ: DB "+ TZ" ; Version 2.x with version 2.1+ of tranZPUter board installed. +MSGSON: DB "+ RFS ", 0ABh, "2.1a **", 00DH, 000H ; Version 2.x-> as we are now using the v2.x PCB with 4 devices on-board +MSGNOTFND: DB "Not Found", 00DH, 000H +MSGRDIRLST: DB "ROM Directory:", 00DH, 000H +MSGTRM: DB 00DH, 000H +MSGBADCMD: DB "???", 00DH, 000H +MSGSDINITER:DB "SD Card Error ", 0F9H, 00DH, 000H +MSGCDIRLST: DB "SD Card Directory ",0F9H,":", 00DH, 000H +MSGSDRERR: DB "Read error, Sec:",0FBH, 000H +MSGSDWERR: DB "Write error, Sec:",0FBH, 000H +MSGSVFAIL: DB "Error, save failed.", 00DH, 000H +MSGERAFAIL: DB "Dir update failed.", 00DH, 000H +MSGSVDIRENT:DB "Saving into dir entry:",0FBH, 00DH, 000H +MSGERASEDIR:DB "Deleted dir entry:",0FBH, 000H +MSGCMTDATA: DB "Load:",0FEH,",Exec:",0FFH, ",Size:",0FBH, 00DH, 000H +MSGNOTBIN: DB "Not binary", 00DH, 000H +MSGLOAD: DB 00DH, "Loading ",'"',0FAH,'"', 00DH, 000H +MSGSAVE: DB 00DH, "Filename: ", 000H +MSGDIRFULL: DB "Directory full", 00DH, 000H +MSGE1: DB 00DH, "Check sum error!", 00DH, 000H ; Check sum error. +MSGCMTWRITE:DB 00DH, "Writing ", '"',0FAH,'"', 00DH, 000H +MSGOK: DB 00DH, "OK!", 00DH, 000H +MSGSAVEOK: DB "Tape image saved.", 00DH, 000H +MSGBOOTDRV: DB 00DH, "Floppy boot drive ?", 000H +MSGLOADERR: DB 00DH, "Disk loading error", 00DH, 000H +MSGIPLLOAD: DB 00DH, "Disk loading ", 000H +MSGDSKNOTMST:DB 00DH, "Not a boot disk", 00Dh, 000H +MSGINITM: DB "Init memory", 00DH, 000H +MSGREAD4HEX:DB "Bad hex number", 00DH, 000H +MSGT2SDERR: DB "Copy from Tape to SD Failed", 00DH, 000H +MSGSD2TERR: DB "Copy from SD to Tape Failed", 00DH, 000H +MSGT2SDOK: DB "Success, Tape to SD done.", 00DH, 000H +MSGSD2TOK: DB "Success, SD to Tape done.", 00DH, 000H +MSGNOTZINST:DB "No tranZPUter >=v2 card installed.", 00DH, 000H +MSGNOCMTDIR:DB "CMT has no directory.", 00DH, 000H +MSGINVDRV: DB "Invalid drive, SD=0..9 or C=CMT", 00DH, 000H +MSGNOVERIFY:DB "No Verify for SD!", 00DH, 000H + + ALIGN 0EFF8h + ORG 0EFF8h + DB 0FFh,0FFh,0FFh,0FFh,0FFh,0FFh,0FFh,0FFh diff --git a/asm/rfs_bank7.asm b/asm/rfs_bank7.asm new file mode 100644 index 0000000..5f66f24 --- /dev/null +++ b/asm/rfs_bank7.asm @@ -0,0 +1,496 @@ +;-------------------------------------------------------------------------------------------------------- +;- +;- Name: rfs_bank4.asm +;- Created: July 2019 +;- Author(s): Philip Smart +;- Description: Sharp MZ series Rom Filing System. +;- This assembly language program is written to utilise the banked flashroms added with +;- the MZ-80A RFS hardware upgrade. +;- +;- Credits: +;- Copyright: (c) 2018-2023 Philip Smart +;- +;- History: July 2019 - Merged 2 utilities to create this compilation. +; May 2020 - Bank switch changes with release of v2 pcb with coded latch. The coded +; latch adds additional instruction overhead as the control latches share +; the same address space as the Flash RAMS thus the extra hardware to +; only enable the control registers if a fixed number of reads is made +; into the upper 8 bytes which normally wouldnt occur. Caveat - ensure +; that no loop instruction is ever placed into EFF8H - EFFFH. +;- +;-------------------------------------------------------------------------------------------------------- +;- This source file is free software: you can redistribute it and-or modify +;- it under the terms of the GNU General Public License as published +;- by the Free Software Foundation, either version 3 of the License, or +;- (at your option) any later version. +;- +;- This source file is distributed in the hope that it will be useful, +;- but WITHOUT ANY WARRANTY; without even the implied warranty of +;- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +;- GNU General Public License for more details. +;- +;- You should have received a copy of the GNU General Public License +;- along with this program. If not, see . +;-------------------------------------------------------------------------------------------------------- + + + ;=========================================================== + ; + ; USER ROM BANK 7 - Memory and timer test utilities. + ; + ;=========================================================== + ORG UROMADDR + + ;-------------------------------- + ; Common code spanning all banks. + ;-------------------------------- + NOP + LD B,16 ; If we read the bank control reset register 15 times then this will enable bank control and then the 16th read will reset all bank control registers to default. +ROMFS7_0: LD A,(BNKCTRLRST) + DJNZ ROMFS7_0 ; Apply the default number of coded latch reads to enable the bank control registers. + LD A,BNKCTRLDEF ; Set coded latch, SDCS high, BBMOSI to high and BBCLK to high which enables SDCLK. + LD (BNKCTRL),A + NOP + NOP + NOP + XOR A ; We shouldnt arrive here after a reset, if we do, select UROM bank 0 + LD (BNKSELMROM),A + NOP + NOP + NOP + LD (BNKSELUSER),A ; and start up - ie. SA1510 Monitor - this occurs as User Bank 0 is enabled and the jmp to 0 is coded in it. + ; + ; No mans land... this should have switched to Bank 0 and at this point there is a jump to 00000H. + JP 00000H ; This is for safety!! + + + ;------------------------------------------------------------------------------------------ + ; Bank switching code, allows a call to code in another bank. + ; This code is duplicated in each bank such that a bank switch doesnt affect logic flow. + ;------------------------------------------------------------------------------------------ + ALIGN_NOPS UROMBSTBL + ; +BKSW7to0: PUSH AF + LD A, ROMBANK7 ; Calling bank (ie. us). + PUSH AF + LD A, ROMBANK0 ; Required bank to call. + JR BKSW7_0 +BKSW7to1: PUSH AF + LD A, ROMBANK7 ; Calling bank (ie. us). + PUSH AF + LD A, ROMBANK1 ; Required bank to call. + JR BKSW7_0 +BKSW7to2: PUSH AF + LD A, ROMBANK7 ; Calling bank (ie. us). + PUSH AF + LD A, ROMBANK2 ; Required bank to call. + JR BKSW7_0 +BKSW7to3: PUSH AF + LD A, ROMBANK7 ; Calling bank (ie. us). + PUSH AF + LD A, ROMBANK3 ; Required bank to call. + JR BKSW7_0 +BKSW7to4: PUSH AF + LD A, ROMBANK7 ; Calling bank (ie. us). + PUSH AF + LD A, ROMBANK4 ; Required bank to call. + JR BKSW7_0 +BKSW7to5: PUSH AF + LD A, ROMBANK7 ; Calling bank (ie. us). + PUSH AF + LD A, ROMBANK5 ; Required bank to call. + JR BKSW7_0 +BKSW7to6: PUSH AF + LD A, ROMBANK7 ; Calling bank (ie. us). + PUSH AF + LD A, ROMBANK6 ; Required bank to call. + JR BKSW7_0 +BKSW7to7: PUSH AF + LD A, ROMBANK7 ; Calling bank (ie. us). + PUSH AF + LD A, ROMBANK7 ; Required bank to call. + ; +BKSW7_0: PUSH HL ; Place function to call on stack + LD HL, BKSWRET7 ; Place bank switchers return address on stack. + EX (SP),HL + LD (TMPSTACKP),SP ; Save the stack pointer as some old code corrupts it. + LD (BNKSELUSER), A ; Repeat the bank switch B times to enable the bank control register and set its value. + JP (HL) ; Jump to required function. +BKSWRET7: POP AF ; Get bank which called us. + LD (BNKSELUSER), A ; Return to that bank. + POP AF + RET + + ;------------------------------------------------------------------------------- + ; START OF MEMORY TEST FUNCTIONALITY + ;------------------------------------------------------------------------------- + +MEMTEST: LD B,240 ; Number of loops +LOOP: LD HL,MEMSTART ; Start of checked memory, + LD D,0CFh ; End memory check CF00 +LOOP1: LD A,000h + CP L + JR NZ,LOOP1b + CALL PRTHL ; Print HL as 4digit hex. + LD A,0C4h ; Move cursor left. + LD E,004h ; 4 times. +LOOP1a: CALL DPCT + DEC E + JR NZ,LOOP1a +LOOP1b: INC HL + LD A,H + CP D ; Have we reached end of memory. + JR Z,LOOP3 ; Yes, exit. + LD A,(HL) ; Read memory location under test, ie. 0. + CPL ; Subtract, ie. FF - A, ie FF - 0 = FF. + LD (HL),A ; Write it back, ie. FF. + SUB (HL) ; Subtract written memory value from A, ie. should be 0. + JR NZ,LOOP2 ; Not zero, we have an error. + LD A,(HL) ; Reread memory location, ie. FF + CPL ; Subtract FF - FF + LD (HL),A ; Write 0 + SUB (HL) ; Subtract 0 + JR Z,LOOP1 ; Loop if the same, ie. 0 +LOOP2: LD A,16h + CALL PRNT ; Print A + CALL PRTHX ; Print HL as 4 digit hex. + CALL PRNTS ; Print space. + XOR A + LD (HL),A + LD A,(HL) ; Get into A the failing bits. + CALL PRTHX ; Print A as 2 digit hex. + CALL PRNTS ; Print space. + LD A,0FFh ; Repeat but first load FF into memory + LD (HL),A + LD A,(HL) + CALL PRTHX ; Print A as 2 digit hex. + NOP + JR LOOP4 + +LOOP3: CALL PRTHL + LD DE,OKCHECK + CALL MSG ; Print check message in DE + LD A,B ; Print loop count. + CALL PRTHX + LD DE,OKMSG + CALL MSG ; Print ok message in DE + CALL NL + DEC B + JR NZ,LOOP + LD DE,DONEMSG + CALL MSG ; Print check message in DE + JP ST1X + +LOOP4: LD B,09h + CALL PRNTS ; Print space. + XOR A ; Zero A + SCF ; Set Carry +LOOP5: PUSH AF ; Store A and Flags + LD (HL),A ; Store 0 to bad location. + LD A,(HL) ; Read back + CALL PRTHX ; Print A as 2 digit hex. + CALL PRNTS ; Print space + POP AF ; Get back A (ie. 0 + C) + RLA ; Rotate left A. Bit LSB becomes Carry (ie. 1 first instance), Carry becomes MSB + DJNZ LOOP5 ; Loop if not zero, ie. print out all bit locations written and read to memory to locate bad bit. + XOR A ; Zero A, clears flags. + LD A,80h + LD B,08h +LOOP6: PUSH AF ; Repeat above but AND memory location with original A (ie. 80) + LD C,A ; Basically walk through all the bits to find which one is stuck. + LD (HL),A + LD A,(HL) + AND C + NOP + JR Z,LOOP8 ; If zero then print out the bit number + NOP + NOP + LD A,C + CPL + LD (HL),A + LD A,(HL) + AND C + JR NZ,LOOP8 ; As above, if the compliment doesnt yield zero, print out the bit number. +LOOP7: POP AF + RRCA + NOP + DJNZ LOOP6 + JP ST1X + +LOOP8: CALL LETNL ; New line. + LD DE,BITMSG ; BIT message + CALL MSG ; Print message in DE + LD A,B + DEC A + CALL PRTHX ; Print A as 2 digit hex, ie. BIT number. + CALL LETNL ; New line + LD DE,BANKMSG ; BANK message + CALL MSG ; Print message in DE + LD A,H + CP 50h ; 'P' + JR NC,LOOP9 ; Work out bank number, 1, 2 or 3. + LD A,01h + JR LOOP11 + +LOOP9: CP 90h + JR NC,LOOP10 + LD A,02h + JR LOOP11 + +LOOP10: LD A,03h +LOOP11: CALL PRTHX ; Print A as 2 digit hex, ie. BANK number. + JR LOOP7 + +DLY1S: PUSH AF + PUSH BC + LD C,10 +L0324: CALL DLY12 + DEC C + JR NZ,L0324 + POP BC + POP AF + RET + + ;------------------------------------------------------------------------------- + ; END OF MEMORY TEST FUNCTIONALITY + ;------------------------------------------------------------------------------- + + ;------------------------------------------------------------------------------- + ; START OF TIMER TEST FUNCTIONALITY + ;------------------------------------------------------------------------------- + + ; Test the 8253 Timer, configure it as per the monitor and display the read back values. +TIMERTST: CALL NL + LD DE,MSG_TIMERTST + CALL MSG + CALL NL + LD DE,MSG_TIMERVAL + CALL MSG + LD A,01h + LD DE,8000h + CALL TIMERTST1 +NDE: JP NDE + JP ST1X +TIMERTST1: ;DI + PUSH BC + PUSH DE + PUSH HL + LD (AMPM),A + LD A,0F0H + LD (TIMFG),A +ABCD: LD HL,0A8C0H + XOR A + SBC HL,DE + PUSH HL + INC HL + EX DE,HL + + LD HL,CONTF ; Control Register + LD (HL),0B0H ; 10110000 Control Counter 2 10, Write 2 bytes 11, 000 Interrupt on Terminal Count, 0 16 bit binary + LD (HL),074H ; 01110100 Control Counter 1 01, Write 2 bytes 11, 010 Rate Generator, 0 16 bit binary + LD (HL),030H ; 00110100 Control Counter 1 01, Write 2 bytes 11, 010 interrupt on Terminal Count, 0 16 bit binary + + LD HL,CONT2 ; Counter 2 + LD (HL),E + LD (HL),D + + LD HL,CONT1 ; Counter 1 + LD (HL),00AH + LD (HL),000H + + LD HL,CONT0 ; Counter 0 + LD (HL),00CH + LD (HL),0C0H + +; LD HL,CONT2 ; Counter 2 +; LD C,(HL) +; LD A,(HL) +; CP D +; JP NZ,L0323H +; LD A,C +; CP E +; JP Z,CDEF + ; + +L0323H: PUSH AF + PUSH BC + PUSH DE + PUSH HL + ; + LD HL,CONTF ; Control Register + LD (HL),080H + LD HL,CONT2 ; Counter 2 + LD C,(HL) + LD A,(HL) + CALL PRTHX + LD A,C + CALL PRTHX + ; + CALL PRNTS + ;CALL DLY1S + ; + LD HL,CONTF ; Control Register + LD (HL),040H + LD HL,CONT1 ; Counter 1 + LD C,(HL) + LD A,(HL) + CALL PRTHX + LD A,C + CALL PRTHX + ; + CALL PRNTS + ;CALL DLY1S + ; + LD HL,CONTF ; Control Register + LD (HL),000H + LD HL,CONT0 ; Counter 0 + LD C,(HL) + LD A,(HL) + CALL PRTHX + LD A,C + CALL PRTHX + ; + ;CALL DLY1S + ; + LD A,0C4h ; Move cursor left. + LD E,0Eh ; 4 times. +L0330: CALL DPCT + DEC E + JR NZ,L0330 + ; +; LD C,20 +;L0324: CALL DLY12 +; DEC C +; JR NZ,L0324 + ; + POP HL + POP DE + POP BC + POP AF + ; + LD HL,CONT2 ; Counter 2 + LD C,(HL) + LD A,(HL) + CP D + JP NZ,L0323H + LD A,C + CP E + JP NZ,L0323H + ; + ; + PUSH AF + PUSH BC + PUSH DE + PUSH HL + CALL NL + CALL NL + CALL NL + LD DE,MSG_TIMERVAL2 + CALL MSG + POP HL + POP DE + POP BC + POP AF + + ; +CDEF: POP DE + LD HL,CONT1 + LD (HL),00CH + LD (HL),07BH + INC HL + +L0336H: PUSH AF + PUSH BC + PUSH DE + PUSH HL + ; + LD HL,CONTF ; Control Register + LD (HL),080H + LD HL,CONT2 ; Counter 2 + LD C,(HL) + LD A,(HL) + CALL PRTHX + LD A,C + CALL PRTHX + ; + CALL PRNTS + CALL DLY1S + ; + LD HL,CONTF ; Control Register + LD (HL),040H + LD HL,CONT1 ; Counter 1 + LD C,(HL) + LD A,(HL) + CALL PRTHX + LD A,C + CALL PRTHX + ; + CALL PRNTS + CALL DLY1S + ; + LD HL,CONTF ; Control Register + LD (HL),000H + LD HL,CONT0 ; Counter 0 + LD C,(HL) + LD A,(HL) + CALL PRTHX + LD A,C + CALL PRTHX + ; + CALL DLY1S + ; + LD A,0C4h ; Move cursor left. + LD E,0Eh ; 4 times. +L0340: CALL DPCT + DEC E + JR NZ,L0340 + ; + POP HL + POP DE + POP BC + POP AF + + LD HL,CONT2 ; Counter 2 + LD C,(HL) + LD A,(HL) + CP D + JR NZ,L0336H + LD A,C + CP E + JR NZ,L0336H + CALL NL + LD DE,MSG_TIMERVAL3 + CALL MSG + POP HL + POP DE + POP BC + ;EI + RET + ;------------------------------------------------------------------------------- + ; END OF TIMER TEST FUNCTIONALITY + ;------------------------------------------------------------------------------- + + ;-------------------------------------- + ; + ; Message table + ; + ;-------------------------------------- +OKCHECK: DB ", CHECK: ", 0Dh +OKMSG: DB " OK.", 0Dh +DONEMSG: DB 11h + DB "RAM TEST COMPLETE.", 0Dh + +BITMSG: DB " BIT: ", 0Dh +BANKMSG: DB " BANK: ", 0Dh +MSG_TIMERTST: + DB "8253 TIMER TEST", 0Dh, 00h +MSG_TIMERVAL: + DB "READ VALUE 1: ", 0Dh, 00h +MSG_TIMERVAL2: + DB "READ VALUE 2: ", 0Dh, 00h +MSG_TIMERVAL3: + DB "READ DONE.", 0Dh, 00h + + ALIGN 0EFF8h + ORG 0EFF8h + DB 0FFh,0FFh,0FFh,0FFh,0FFh,0FFh,0FFh,0FFh diff --git a/asm/rfs_mrom.asm b/asm/rfs_mrom.asm new file mode 100644 index 0000000..c234b2a --- /dev/null +++ b/asm/rfs_mrom.asm @@ -0,0 +1,744 @@ +;-------------------------------------------------------------------------------------------------------- +;- +;- Name: rfs_mrom.asm +;- Created: September 2019 +;- Author(s): Philip Smart +;- Description: Sharp MZ series Rom Filing System. +;- This assembly language program is written to utilise the banked flashroms added with +;- the MZ-80A RFS hardware upgrade. +;- The purpose of this program is to provide helper utilities to the RFS in order that +;- the RFS can read the User Banks and extract required programs. +;- +;- Credits: +;- Copyright: (c) 2018-2023 Philip Smart +;- +;- History: Sep 2019 - Initial version. +; May 2020 - Bank switch changes with release of v2 pcb with coded latch. The coded +; latch adds additional instruction overhead as the control latches share +; the same address space as the Flash RAMS thus the extra hardware to +; only enable the control registers if a fixed number of reads is made +; into the upper 8 bytes which normally wouldnt occur. Caveat - ensure +; that no loop instruction is ever placed into EFF8H - EFFFH. +;- +;-------------------------------------------------------------------------------------------------------- +;- This source file is free software: you can redistribute it and-or modify +;- it under the terms of the GNU General Public License as published +;- by the Free Software Foundation, either version 3 of the License, or +;- (at your option) any later version. +;- +;- This source file is distributed in the hope that it will be useful, +;- but WITHOUT ANY WARRANTY; without even the implied warranty of +;- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +;- GNU General Public License for more details. +;- +;- You should have received a copy of the GNU General Public License +;- along with this program. If not, see . +;-------------------------------------------------------------------------------------------------------- + + ; MONITOR WORK AREA + ; (MZ-80A) + +STACK: EQU 010F0H + + ORG STACK +SPV: +IBUFE: ; TAPE BUFFER (128 BYTES) +ATRB: DS virtual 1 ; ATTRIBUTE +NAME: DS virtual FNSIZE ; FILE NAME +SIZE: DS virtual 2 ; BYTESIZE +DTADR: DS virtual 2 ; DATA ADDRESS +EXADR: DS virtual 2 ; EXECUTION ADDRESS +COMNT: DS virtual 92 ; COMMENT +SWPW: DS virtual 10 ; SWEEP WORK +KDATW: DS virtual 2 ; KEY WORK +KANAF: DS virtual 1 ; KANA FLAG (01=GRAPHIC MODE) +DSPXY: DS virtual 2 ; DISPLAY COORDINATES +MANG: DS virtual 6 ; COLUMN MANAGEMENT +MANGE: DS virtual 1 ; COLUMN MANAGEMENT END +PBIAS: DS virtual 1 ; PAGE BIAS +ROLTOP: DS virtual 1 ; ROLL TOP BIAS +MGPNT: DS virtual 1 ; COLUMN MANAG. POINTER +PAGETP: DS virtual 2 ; PAGE TOP +ROLEND: DS virtual 1 ; ROLL END + DS virtual 14 ; BIAS +FLASH: DS virtual 1 ; FLASHING DATA +SFTLK: DS virtual 1 ; SHIFT LOCK +REVFLG: DS virtual 1 ; REVERSE FLAG +SPAGE: DS virtual 1 ; PAGE CHANGE +FLSDT: DS virtual 1 ; CURSOR DATA +STRGF: DS virtual 1 ; STRING FLAG +DPRNT: DS virtual 1 ; TAB COUNTER +TMCNT: DS virtual 2 ; TAPE MARK COUNTER +SUMDT: DS virtual 2 ; CHECK SUM DATA +CSMDT: DS virtual 2 ; FOR COMPARE SUM DATA +AMPM: DS virtual 1 ; AMPM DATA +TIMFG: DS virtual 1 ; TIME FLAG +SWRK: DS virtual 1 ; KEY SOUND FLAG +TEMPW: DS virtual 1 ; TEMPO WORK +ONTYO: DS virtual 1 ; ONTYO WORK +OCTV: DS virtual 1 ; OCTAVE WORK +RATIO: DS virtual 2 ; ONPU RATIO +BUFER: DS virtual 81 ; GET LINE BUFFER + +; Starting 1000H - Generally unused bytes not cleared by the monitor. +ROMBK1: EQU 01016H ; CURRENT MROM BANK +ROMBK2: EQU 01017H ; CURRENT USERROM BANK +WRKROMBK1: EQU 01018H ; WORKING MROM BANK +WRKROMBK2: EQU 01019H ; WORKING USERROM BANK +ROMCTL: EQU 0101AH ; Current Bank control register setting. +SCRNMODE: EQU 0101BH ; Mode of screen, 0 = 40 char, 1 = 80 char. +TMPADR: EQU 0101CH ; TEMPORARY ADDRESS STORAGE +TMPSIZE: EQU 0101EH ; TEMPORARY SIZE +TMPCNT: EQU 01020H ; TEMPORARY COUNTER +TMPLINECNT: EQU 01022H ; Temporary counter for displayed lines. +TMPSTACKP: EQU 01024H ; Temporary stack pointer save. + + ; EQU TABLE I/O REPORT + +;----------------------------------------------- +; Memory mapped ports in hardware. +;----------------------------------------------- +SCRN: EQU 0D000H +ARAM: EQU 0D800H +KEYPA: EQU 0E000h +KEYPB: EQU 0E001h +KEYPC: EQU 0E002h +KEYPF: EQU 0E003h +CSTR: EQU 0E002h +CSTPT: EQU 0E003h +CONT0: EQU 0E004h +CONT1: EQU 0E005h +CONT2: EQU 0E006h +CONTF: EQU 0E007h +SUNDG: EQU 0E008h +TEMP: EQU 0E008h +MEMSW: EQU 0E00CH +MEMSWR: EQU 0E010H +INVDSP: EQU 0E014H +NRMDSP: EQU 0E015H +SCLDSP: EQU 0E200H +BNKCTRLRST: EQU 0EFF8H ; Bank control reset, returns all registers to power up default. +BNKCTRLDIS: EQU 0EFF9H ; Disable bank control registers by resetting the coded latch. +HWSPIDATA: EQU 0EFFBH ; Hardware SPI Data register (read/write). +HWSPISTART: EQU 0EFFCH ; Start an SPI transfer. +BNKSELMROM: EQU 0EFFDh ; Select RFS Bank1 (MROM) +BNKSELUSER: EQU 0EFFEh ; Select RFS Bank2 (User ROM) +BNKCTRL: EQU 0EFFFH ; Bank Control register (read/write). + +; +; RFS v2 Control Register constants. +; +BBCLK EQU 1 ; BitBang SPI Clock. +SDCS EQU 2 ; SD Card Chip Select, active low. +BBMOSI EQU 4 ; BitBang MOSI (Master Out Serial In). +CDLTCH1 EQU 8 ; Coded latch up count bit 1 +CDLTCH2 EQU 16 ; Coded latch up count bit 2 +CDLTCH3 EQU 32 ; Coded latch up count bit 3 +BK2A19 EQU 64 ; User ROM Device Select Bit 0 (or Address bit 19). +BK2A20 EQU 128 ; User ROM Device Select Bit 1 (or Address bit 20). + ; BK2A20 : BK2A19 + ; 0 0 = Flash RAM 0 (default). + ; 0 1 = Flash RAM 1. + ; 1 0 = Flasm RAM 2 or Static RAM 0. + ; 1 1 = Reserved.` + +BNKCTRLDEF EQU BBMOSI+SDCS+BBCLK ; Default on startup for the Bank Control register. + +;----------------------------------------------- +; Rom File System Header (MZF) +;----------------------------------------------- +RFS_ATRB: EQU 00000h ; Code Type, 01 = Machine Code. +RFS_NAME: EQU 00001h ; Title/Name (17 bytes). +RFS_SIZE: EQU 00012h ; Size of program. +RFS_DTADR: EQU 00014h ; Load address of program. +RFS_EXADR: EQU 00016h ; Exec address of program. +RFS_COMNT: EQU 00018h ; COMMENT + +;----------------------------------------------- +; ROM Banks, 0-7 are reserved for alternative +; Monitor versions, CPM and RFS +; code in MROM bank, +; 0-7 are reserved for RFS code in +; the User ROM bank. +; 8-15 are reserved for CPM code in +; the User ROM bank. +;----------------------------------------------- +MROMPAGES EQU 8 +USRROMPAGES EQU 12 ; Monitor ROM : User ROM +ROMBANK0 EQU 0 ; MROM SA1510 40 Char : RFS Bank 0 - Main RFS Entry point and functions. +ROMBANK1 EQU 1 ; MROM SA1510 80 Char : RFS Bank 1 - Floppy disk controller and utilities. +ROMBANK2 EQU 2 ; CPM 2.2 CBIOS : RFS Bank 2 - SD Card controller and utilities. +ROMBANK3 EQU 3 ; RFS Utilities : RFS Bank 3 - Cmdline tools (Memory, Printer, Help) +ROMBANK4 EQU 4 ; Free : RFS Bank 4 - CMT Utilities. +ROMBANK5 EQU 5 ; Free : RFS Bank 5 +ROMBANK6 EQU 6 ; Free : RFS Bank 6 +ROMBANK7 EQU 7 ; Free : RFS Bank 7 - Memory and timer test utilities. +ROMBANK8 EQU 8 ; : CBIOS Bank 1 - Utilities +ROMBANK9 EQU 9 ; : CBIOS Bank 2 - Screen / ANSI Terminal +ROMBANK10 EQU 10 ; : CBIOS Bank 3 - SD Card +ROMBANK11 EQU 11 ; : CBIOS Bank 4 - Floppy disk controller. + +; File types. +OBJCD EQU 001H ; MZF contains a binary object. +BTX1CD EQU 002H ; MZF contains a BASIC program. +BTX2CD EQU 005H ; MZF contains a BASIC program. +TZOBJCD0 EQU 0F8H ; MZF contains a TZFS binary object for page 0. +TZOBJCD1 EQU 0F8H +TZOBJCD2 EQU 0F8H +TZOBJCD3 EQU 0F8H +TZOBJCD4 EQU 0F8H +TZOBJCD5 EQU 0F8H +TZOBJCD6 EQU 0F8H +TZOBJCD7 EQU 0F8H ; MZF contains a TZFS binary object for page 7. + +; Address definitions. +; +UROMADDR EQU 0E800H ; Start of User ROM Address space. +MROMJMPTBL EQU 00070H ; Fixed location of the Monitor ROM Jump Table. +; +; User ROM Jump Table definitions. +; +RFSJMPTABLE EQU UROMADDR + 00080H ; Entry point to the bank switching table. +PRTMZF EQU RFSJMPTABLE + 00000H ; Entry point into User ROM for the PRTMZF function. +PRTDBG EQU RFSJMPTABLE + 00003H ; Entry point into User ROM for the PRTDBG function. +; +MZFHDRSZ EQU 128 +RFSSECTSZ EQU 256 +MROMSIZE EQU 4096 +UROMSIZE EQU 2048 +FNSIZE EQU 17 ; Size of tape filename. + +;ROW EQU 25 +;COLW40 EQU 80 +;SCRNSZ40 EQU COLW40 * ROW +;COLW80 EQU 80 +;SCRNSZ80 EQU COLW80 * ROW +;MODE80C EQU 0 + + ;====================================== + ; + ; MONITOR ROM BANK 3 - RFS Utilities + ; + ;====================================== + ORG 00000h + +MONIT: +MROMBK3: JP START ; The lower part of the rom mimics the SA1510 MROM such that if a reset occurs when + ; this bank is paged in, it starts up and reverts to the SA1510 MROM. + + ALIGN_NOPS 0038H + ORG 0038H ; NMI Vector + JP 1038H ; Interrupt routine + + ALIGN_NOPS 004AH + ORG 004Ah + + ; As this is not the monitor ROM, if we arrive at START it means a reset without the monitor rom bank being selected + ; so we switch it in and do a jump to 0 for reset. +START: LD SP, STACK + IM 1 + CALL ?MODE + LD B,0FFH + LD HL,NAME + CALL ?CLER + ; + CALL INITBNKCTL + NOP + NOP + NOP + ; + LD A,(ROMBK2) ; User ROM to default. + LD (BNKSELUSER), A + LD A, (ROMBK1) ; Monitor ROM to default. + LD (BNKSELMROM), A + + ; Location for STRT1 in monitor ROM (just after Colour RAM clear call). After the bank switch we should + ; resume at this point in original monitor - ie. line commencing LD HL,TIMIN @ 006CH. + ORG 0006Ch + JR START + + ALIGN_NOPS MROMJMPTBL + ORG MROMJMPTBL + + ;----------------------------------------- + ; Enhanced function Jump table. + ;----------------------------------------- +DIRMROM: JP _DIRMROM +MFINDMZF: JP _MFINDMZF +MROMLOAD: JP _MROMLOAD + ;----------------------------------------- + + ;==================================== + ; + ; ROM File System Commands + ; + ;==================================== + + ; Method to initialise the bank control registers to a default state. + ; +INITBNKCTL:LD B,16 ; If we read the bank control reset register 15 times then this will enable bank control and then the 16th read will reset all bank control registers to default. +INITBNK_1: LD A,(BNKCTRLRST) + DJNZ INITBNK_1 ; Apply the default number of coded latch reads to enable the bank control registers. + LD A,BNKCTRLDEF ; Set coded latch, SDCS high, BBMOSI to high and BBCLK to high which enables SDCLK. + LD (BNKCTRL),A + LD (ROMCTL),A ; Save to memory the value in the bank control register - this register is used for SPI etc so need to remember its setting. + RET + + + ; Function to select a User Bank. If Carry is clear upon entry, on exit the control registers will be disabled. If carry is set then the control registers are left active. + ; + +SELUSRBNK: PUSH BC + PUSH AF + LD A,(ROMCTL) ; Get current setting for the coded latch, ie. number of reads needed to enable it. + LD C,A + RRA + RRA + CPL + AND 00FH ; Preserve bits 3-1, bit 0 is always 0 on the 74HCT191 latch. + LD B,A ; Set value to B for loop. + LD A,(BNKCTRLDIS) +SELUSRBNK1:LD A,(BNKSELUSER) + DJNZ SELUSRBNK1 + POP AF + LD (BNKSELUSER),A ; Select the required bank. + LD A,C + POP BC + JR NC,SELUSRBNK2 ; If Carry is set by caller then leave the control registers active. + AND 03FH ; When we leave the registers active, set upper bank bits to 0 to select Flash RAM I, the default. + LD (BNKCTRL),A + RET +SELUSRBNK2:LD (BNKCTRL),A ; Update the upper address lines according to in-memory value. + LD (BNKCTRLDIS),A ; Disable the control registers, value of A is not important. + RET + + ; Function to select a User Bank. If Carry is clear upon entry, on exit the control registers will be disabled. If carry is set then the control registers are left active. + ; During normal operations the control registers are enabled. When access is needed to the full User ROM space, ie for drive read/write then the registers are disabled after + ; setting the correct bank. The upper bits of the User ROM address space (ie. bits 20:19 which select the device) are set to by the ROMCTL variable. + ; +;SELUSRBNK: PUSH BC +; PUSH AF +; ; Reset to a known state to allow for spurious read/writes to control area clocking the up counter. +; LD B,15 +;SEL1: LD A,(BNKCTRLDIS) +; DJNZ SEL1 +; ; Now loop for the correct up counter required to enable the latches. +; LD B,15 ; Set value to B for loop. +;SELUSRBNK1:LD A,(BNKCTRL) ; Read the latch and compare with sample. Either we reach the count limit or the read differs indicating latch control. +; DJNZ SELUSRBNK1 +; POP AF +; POP BC +; LD (BNKSELUSER),A ; Select the required bank. +; LD A,(ROMCTL) +; JR NC,SELUSRBNK2 +; AND 03FH ; When we leave the registers active, set upper bank bits to 0 to select Flash RAM I, the default. +; LD (BNKCTRL),A +; RET +;SELUSRBNK2:LD (BNKCTRL),A +; LD (BNKCTRLDIS),A ; Disable the control registers, value of A is not important. +; RET + + + ; HL contains address of block to check. +ISMZF: PUSH BC + PUSH DE + PUSH HL + ; + LD A,(HL) + CP 001h ; Only interested in machine code images. + JR NZ, ISMZFNOT + ; + INC HL + LD DE,NAME ; Checks to confirm this is an MZF header. + LD B,FNSIZE ; Maximum of 17 characters, including terminator in filename. +ISMZFNXT: LD A,(HL) + LD (DE),A + CP 00DH ; If we find a terminator then this indicates potentially a valid name. + JR Z, ISMZFNXT3 + CP 000H ; Same applies for NULL terminator. + JR Z, ISMZFNXT3 + CP 020h ; >= Space + JR C, ISMZFNOT + CP 05Dh ; =< ] + JR C, ISMZFNXT3 +ISMZFNXT2: CP 091h + JR C, ISMZFNOT ; DEL or > 0x7F, cant be a valid filename so this is not an MZF header. +ISMZFNXT3: INC DE + INC HL + DJNZ ISMZFNXT +ISMZFYES: CP A ; Set zero flag to indicate match. +ISMZFNOT: POP HL + POP DE + POP BC + RET + + ; B contains Bank to select. + ; D = File sequence number. + ; HL contains the Block page address. +_DIRMROM: PUSH BC + ; + ; Scan MROM Bank + ; B = Bank Page + ; C = Block in page + ; + LD B,USRROMPAGES ; First 16x2K pages are reserved in User bank. + LD A,(ROMCTL) + AND 03FH ; Mask out the upper bank address lines so we start with Flash RAM I. + ; +DIRNXTDVC: LD (ROMCTL),A + LD C,0 ; Block in page. +DIRNXTPG: LD A,B + LD (WRKROMBK2), A + OR A ; Select the required user bank and Clear carry so that the control registers are disabled. + CALL SELUSRBNK + PUSH BC ; Preserve bank count/block number. + PUSH DE ; Preserve file numbering. + LD A,C + IF RFSSECTSZ >= 512 + RLCA + ENDIF + IF RFSSECTSZ >= 1024 + RLCA + ENDIF + LD B,A + LD C,0 + LD HL,0E800h + RFS_ATRB ; Add block offset to get the valid block address. + ADD HL,BC + CALL ISMZF + POP DE + POP BC + JR NZ, DIRNOTMZF + ; + CALL _PRTMZF + INC D ; Next file sequence number. +DIRNOTMZF: INC C + LD A,C + CP UROMSIZE/RFSSECTSZ ; Max blocks per page reached? + JR C, DIRNXTPG2 + LD C,0 + INC B +DIRNXTPG2: LD A,B + CP 000h ; User rom has 256 banks of 2K, so stop when we wrap round to 0. + JR NZ, DIRNXTPG + LD A,(ROMCTL) + ADD A, 64 + CP 0C0H ; If both upper address bits are set then we have come to the end. + JR C,DIRNXTDVC + AND 03FH + LD (ROMCTL),A ; Switch back to primary Flash RAM I device. + LD A,(ROMBK2) + SCF ; Select the required user bank and Set carry so that the control registers remain enabled. + CALL SELUSRBNK + POP BC + RET + + + ; Wrapper to call the User ROM function to display the MZF filename. + ; This function needs to manipulate the banks such that the calling bank is accessible. +_PRTMZF: LD A,(ROMBK2) + SCF ; Select the required user bank and Set carry so that the control registers remain enabled. + CALL SELUSRBNK + CALL PRTMZF + ;CALL PRTDBG + LD A,(WRKROMBK2) + OR A ; Select the required user bank and Clear carry so that the control registers are disabled. + CALL SELUSRBNK + RET + + + ; In: + ; HL = filename + ; D = File sequence number. + ; Out: + ; B = Bank Page file found + ; C = Block where found. + ; D = File sequence number. + ; Z set if found. +_MFINDMZF: PUSH DE + LD (TMPADR), HL ; Save name of program to load. + EX DE, HL ; String needed in DE for conversion. + LD HL,0FFFFh ; Tag the filenumber as invalid. + LD (TMPCNT), HL + CALL ConvertStringToNumber ; See if a file number was given instead of a filename. + JR NZ, FINDMZF0 ; + LD (TMPCNT), HL ; Store filenumber making load by filenumber valid. + + ; + ; Scan MROM Bank + ; B = Bank Page + ; C = Block in page + ; D = File sequence number. + ; + ; Output: B = Bank where file found + ; C = Block within bank where page found. + ; A[7:6] = Upper bits of bank where page found. + ; +FINDMZF0: POP DE ; Get file sequence number in D. + LD B,USRROMPAGES ; First 8 pages are reserved in User ROM bank. + ;LD D,0 ; File numbering start. + LD A,(ROMCTL) + AND 03FH ; Mask out the upper bank address lines so we start with Flash RAM I. + ; +FINDNXTDVC:LD (ROMCTL),A + LD C,0 ; Block in page. + ; +FINDMZF1: LD A,B + LD (WRKROMBK2), A + OR A ; Select the required user bank and Clear carry so that the control registers are disabled. + CALL SELUSRBNK +FINDMZF2: PUSH BC ; Preserve bank count/block number. + PUSH DE ; Preserve file numbering. + LD HL,0E800h + RFS_ATRB ; Add block offset to get the valid block. + LD A,C + IF RFSSECTSZ >= 512 + RLCA + ENDIF + IF RFSSECTSZ >= 1024 + RLCA + ENDIF + LD B,A + LD C,0 + ADD HL,BC + + CALL ISMZF + POP DE + POP BC + JR NZ, FINDMZF4 ; Z set if we found an MZF record. + INC HL ; Save address of filename. + PUSH HL + LD HL,(TMPCNT) + LD A,H + CP 0FFh ; If TMPCNT tagged as 0xFF then we dont have a filenumber so must match filename. + JR Z, FINDMZF3 + LD A,L ; Check file number, load if match + CP D + JR NZ, FINDMZF3 ; Check name just in case. + POP HL + JR FINDMZFYES ; Else the filenumber matches so load the file. + +FINDMZF3: POP HL + PUSH DE + PUSH BC + LD DE,(TMPADR) ; Original DE put onto stack, original filename into DE + LD BC,FNSIZE + CALL CMPSTRING + POP BC + POP DE + JR Z, FINDMZFYES + INC D ; Next file sequence number. +FINDMZF4: INC C + LD A,C + CP UROMSIZE/RFSSECTSZ ; Max blocks per page reached? + JR C, FINDMZF5 + LD C,0 + INC B +FINDMZF5: LD A,B + CP 000h ; User ROM has 256 banks of 2K, so stop when we wrap around to zero. + JR NZ, FINDMZF1 + ; + LD A,(ROMCTL) + ADD A, 64 + CP 0C0H ; If both upper address bits are set then we have come to the end. + JR C,FINDNXTDVC + AND 03FH + LD (ROMCTL),A ; Switch back to primary Flash RAM I device. + ; + INC B + JR FINDMZFNO +FINDMZFYES: ; Flag set by previous test. +FINDMZFNO: PUSH AF + LD A,(ROMBK2) + SCF ; Select the required user bank and Set carry so that the control registers remain enabled. + CALL SELUSRBNK + POP AF + RET + + LD A,(ROMCTL) + AND 03FH + LD (ROMCTL),A ; Switch back to primary Flash RAM I device. + + ; Load Program from ROM + ; Input: B = Bank of MZF File to load + ; C = Block within bank of start of MZF file. + ; A[7:6] = Upper bits of bank containing MZF File to load. + ; Output:Zero = Set if file loaded, reset if an error occurred. + ; + ; Load program from User ROM Banks I, II or III + ; +_MROMLOAD: PUSH BC + ; + AND 0C0H ; Ensure only top two bits are used. + LD D,A + LD A,(ROMCTL) + AND 03FH ; Mask out the upper bank address lines so we can OR in the value given. + OR D + LD (ROMCTL),A + ; + LD A,B + LD (WRKROMBK2),A + OR A ; Select the required user bank and Clear carry so that the control registers are disabled. + CALL SELUSRBNK + ; + LD DE, IBUFE ; Copy the header into the work area. + LD HL, 0E800h ; Add block offset to get the valid block. + LD A,C + IF RFSSECTSZ >= 512 + RLCA + ENDIF + IF RFSSECTSZ >= 1024 + RLCA + ENDIF + LD B,A + LD C,0 + ADD HL,BC + LD BC, MZFHDRSZ + +LROMLOAD1: LD A,(HL) ; Issues with LDIR and a signal artifact from the mainboard, so manual copy. + INC HL + LD (DE),A + INC DE + DEC BC + LD A,B + OR C + JR NZ,LROMLOAD1 + + PUSH HL + LD DE, (DTADR) + LD HL, (SIZE) + LD BC, RFSSECTSZ - MZFHDRSZ + OR A + SBC HL, BC + JR NC, LROMLOAD4 + LD HL, (SIZE) + JR LROMLOAD4 + + ; HL = address in active block to read. + ; B = Bank + ; C = Block +LROMLOAD2: LD A, B + LD (WRKROMBK2), A + OR A ; Select the required user bank and Clear carry so that the control registers are disabled. + CALL SELUSRBNK + +LROMLOAD3: PUSH BC + LD HL, 0E800h + LD A, C + IF RFSSECTSZ >= 512 + RLCA + ENDIF + IF RFSSECTSZ >= 1024 + RLCA + ENDIF + LD B, A + LD C, 0 + ADD HL,BC + PUSH HL + + LD DE, (TMPADR) + LD HL, (TMPSIZE) + LD BC, RFSSECTSZ + OR A + SBC HL, BC + JR NC, LROMLOAD4 + LD BC, (TMPSIZE) + LD HL, 0 +LROMLOAD4: LD (TMPSIZE), HL ; HL contains remaining amount of bytes to load. + POP HL + ; + LD A, B ; Pre check to ensure BC is not zero. + OR C + JR Z, LROMLOAD8 + +LROMLOAD9: LD (BNKCTRLDIS),A ; There exists an issue with using the mainboard decoder signal which I havent quite understood, random activation of the upcounter occurs which appears to be the refresh circuit. + LD A,(HL) ; Issues with LDIR and a signal artifact from the mainboard, so manual copy. + INC HL + LD (DE),A + INC DE + DEC BC + LD A,B + OR C + JR NZ,LROMLOAD9 + + LD BC, (TMPSIZE) + LD A, B ; Post check to ensure we still have bytes + OR C + JR Z, LROMLOAD8 + ; + LD (TMPADR),DE ; Address we are loading into. + POP BC +LROMLOAD6: INC C + LD A, C + CP UROMSIZE/RFSSECTSZ ; Max blocks per page reached? + JR C, LROMLOAD2 ;LROMLOAD3 ;LROMLOAD7 + LD C, 0 + INC B + ; +LROMLOAD7: LD A, B + CP 000h + JR NZ, LROMLOAD2 + OR 1 + JR LROMLOAD5 + ; +LROMLOAD8: POP BC +LROMLOAD5: PUSH AF + LD A,(ROMCTL) + AND 03FH + LD (ROMCTL),A ; Switch back to primary Flash RAM I device. + LD A,(ROMBK2) + SCF ; Select the required user bank and Set carry so that the control registers remain enabled. + CALL SELUSRBNK + POP AF + RET + + + + ;====================================== + ; + ; SA1510 mirrored functions. + ; + ;====================================== + +?MODE: LD HL,KEYPF + LD (HL),08AH + LD (HL),007H + LD (HL),005H + LD (HL),001H + RET + +?CLER: XOR A + JR ?DINT +?CLRFF: LD A,0FFH +?DINT: LD (HL),A + INC HL + DJNZ ?DINT + RET + + + ;====================================== + ; + ; Message table + ; + ;====================================== + + + + + ; Bring in additional resources. + USE_CMPSTRING: EQU 1 + USE_SUBSTRING: EQU 0 + USE_INDEX: EQU 0 + USE_STRINSERT: EQU 0 + USE_STRDELETE: EQU 0 + USE_CONCAT: EQU 0 + USE_CNVUPPER: EQU 1 + USE_CNVCHRTONUM: EQU 1 + USE_ISNUMERIC: EQU 1 + USE_CNVSTRTONUM: EQU 1 + ; + INCLUDE "macros.asm" + ;INCLUDE "rfs_definitions.asm" + INCLUDE "rfs_utilities.asm" + + ; Ensure we fill the entire 4K by padding with FF's. + ALIGN 1000H + diff --git a/asm/sa-5510_rfs.asm b/asm/sa-5510_rfs.asm new file mode 100644 index 0000000..342859d --- /dev/null +++ b/asm/sa-5510_rfs.asm @@ -0,0 +1,7508 @@ +; Disassembly of the file "SA-5510.bin" +; +; CPU Type: Z80 +; +; Created with dZ80 2.1 +; +; on Wednesday, 31 of March 2021 at 11:11 PM +; + +BUILD_ORIG EQU 0 ; Build BASIC SA-5510 with original configuration, identical to version loaded from tape. +BUILD_RFS EQU 1 ; Build BASIC SA-5510 for use under RFS with SD Card access. + +PRTC EQU 0FEH +PRTD EQU 0FFH +GETL EQU 00003H +LETNL EQU 00006H +NL EQU 00009H +PRNTS EQU 0000CH +PRNTT EQU 0000FH +PRNT EQU 00012H +MSG EQU 00015H +MSGX EQU 00018H +GETKY EQU 0001BH +BRKEY EQU 0001EH +?WRI EQU 00021H +?WRD EQU 00024H +?RDI EQU 00027H +?RDD EQU 0002AH +?VRFY EQU 0002DH +MELDY EQU 00030H +?TMST EQU 00033H +TIMRD EQU 0003BH +BELL EQU 0003EH +XTEMP EQU 00041H +MSTA EQU 00044H +MSTP EQU 00047H +MONIT EQU 00000H +SS EQU 00089H +ST1 EQU 00095H +HLHEX EQU 00410H +_2HEX EQU 0041FH +?MODE EQU 0074DH +?KEY EQU 008CAH +PRNT3 EQU 0096CH +?ADCN EQU 00BB9H +?DACN EQU 00BCEH +?DSP EQU 00DB5H +?BLNK EQU 00DA6H +?DPCT EQU 00DDCH +PRTHL EQU 003BAH +PRTHX EQU 003C3H +ASC EQU 003DAH +HEX EQU 003F9H +DPCT EQU 00DDCH +DLY12 EQU 00DA7H +DLY12A EQU 00DAAH +?RSTR1 EQU 00EE6H +MOTOR EQU 006A3H +CKSUM EQU 0071AH +GAP EQU 0077AH +WTAPE EQU 00485H +MSTOP EQU 00700H +LINEBUFR EQU 0490DH +ATRB EQU 010F0H +NAME EQU 010F1H +SIZE EQU 01102H +DTADR EQU 01104H +EXADR EQU 01106H +COMNT EQU 01108H +SWPW EQU 01164H +KDATW EQU 0116EH +KANAF EQU 01170H +DSPXY EQU 01171H +MANG EQU 01173H +MANGE EQU 01179H +PBIAS EQU 0117AH +ROLTOP EQU 0117BH +MGPNT EQU 0117CH +PAGETP EQU 0117DH +ROLEND EQU 0117FH +FLASH EQU 0118EH +SFTLK EQU 0118FH +REVFLG EQU 01190H +SPAGE EQU 01191H +FLSDT EQU 01192H +STRGF EQU 01193H +DPRNT EQU 01194H +TMCNT EQU 01195H +SUMDT EQU 01197H +CSMDT EQU 01199H +AMPM EQU 0119BH +TIMFG EQU 0119CH +SWRK EQU 0119DH +TEMPW EQU 0119EH +ONTYO EQU 0119FH +OCTV EQU 011A0H +RATIO EQU 011A1H +BUFER EQU 011A3H +CMT_RDINF EQU 0E886H ; UROMADDR+86H - Tape/SD intercept handler - Read Header +CMT_RDDATA EQU 0E889H ; UROMADDR+89H - Tape/SD intercept handler - Read Data +CMT_WRINF EQU 0E88CH ; UROMADDR+80H - Tape/SD intercept handler - Write Header +CMT_WRDATA EQU 0E88FH ; UROMADDR+8FH - Tape/SD intercept handler - Write Data +CMT_VERIFY EQU 0E892H ; UROMADDR+92H - Tape/SD intercept handler - Verify Data +CMT_DIR EQU 0E895H ; UROMADDR+95H - SD directory command. +PRGSTART EQU 011FDH ; Build includes the tape copy code under original build. + + ; Original build set the tape handlers to original. + IF BUILD_ORIG = 1 +QRDI EQU ?RDI +QRDD EQU ?RDD +QWRI EQU ?WRI +QWRD EQU ?WRD + ENDIF + IF BUILD_RFS = 1 +QRDI EQU RFSRDI +QRDD EQU CMT_RDDATA +QWRI EQU CMT_WRINF +QWRD EQU CMT_WRDATA + ENDIF + + ; Create an MZF Tape header. + ORG ATRB + + ; Declare the MZF header to bootstrap BASIC from tape/SD. +BOOTATRB: DB 01h ; Code Type, 01 = Machine Code. +BOOTNAME: IF BUILD_ORIG = 1 + DB "BASIC SA-5510 ", 0Dh ; Title/Name (17 bytes). + ENDIF + IF BUILD_RFS = 1 + DB "BASIC SA-5510RFS", 0Dh ; Title/Name (17 bytes). + ENDIF +BOOTSIZE: DW BASICEND - TAPECOPY ; Size of program. +BOOTDTADR: DW TAPECOPY ; Load address of program. +BOOTEXADR: DW COLDSTRT ; Exec address of program. +BOOTCOMNT: DS 104 ; COMMENT + + ORG PRGSTART + +TAPECOPY: IF BUILD_ORIG = 1 + JP TAPECOPYPRG + ENDIF + IF BUILD_RFS = 1 ; Under RFS build the tape copy code isnt needed so place NOP's where the call resides. + NOP + NOP + NOP + ENDIF + +COLDSTRT: LD HL,048FFH ; Scan for memory top. + IF BUILD_ORIG = 1 + LD D,0D0H ; Full memory for original build + ENDIF + IF BUILD_RFS = 1 + LD D,0CEH ; RFS uses the top 512byte sector for SD card operations so need to limit memory. + ENDIF +L1205: INC HL + LD A,H + CP D + JR Z,L1214 ; (+00aH) + LD A,0FFH ; Set location to 255, reread and subtract, should be 0 if real memory. + LD (HL),A + SUB (HL) + JR NZ,L1214 ; (+004H) + LD (HL),A + CP (HL) + JR Z,L1205 ; (-00fH) +L1214: LD (04908H),HL + LD (0490AH),HL + LD SP,HL + CALL BELL + XOR A + LD D,A + LD E,A + CALL ?TMST + CALL L132C + CALL L1313 + LD DE,TITLEMSG + CALL L1329 + LD DE,COPYRMSG + CALL L1329 + CALL L131E + CALL L1944 + LD BC,0000AH + CALL L184D + CALL L1841 + CALL MSGNL + LD DE,BYTESMSG + CALL MSGX + ; + ; Warm start, entry point after command error or completion. + ; +WARMSTRT: NOP + NOP +WARMSTRTMON:NOP ; Sharp defined BASIC restart location from Monitor. + NOP + NOP + NOP + NOP + NOP + NOP + NOP + LD SP,(0490AH) + LD DE,READYMSG + CALL MSGNL +L1262: LD HL,L12B8 + PUSH HL +L1266: LD HL,0504DH + CALL L19BA + CALL L19BA + CALL NL + LD DE,LINEBUFR + LD A,(L2A83) + OR A + JR Z,L1299 ; (+01eH) + LD HL,(L2A84) + PUSH HL + LD BC,(02A86H) + ADD HL,BC + JR C,L12A6 ; (+020H) + LD (L2A84),HL + POP HL + PUSH DE + CALL STRTONUM + EX DE,HL + LD (HL),020H + INC HL + LD (HL),00DH + EX DE,HL + POP DE + CALL MSGX +L1299: CALL L1338 + LD A,(DE) + CP 01BH + RET NZ + XOR A + LD (L2A83),A + JR L1299 ; (-00dH) + +L12A6: XOR A + LD (L2A83),A + JP SYNTAXERR + + CALL L1266 + LD A,(DE) + CP 00DH + RET Z + LD HL,(0490AH) + LD SP,HL +L12B8: CALL L146A + CALL L14F8 + LD HL,(04A10H) + LD A,L + OR H + JR NZ,L12D4 ; (+00fH) + LD HL,04A12H + LD (05051H),HL + CALL EXECNOTCHR + DB 00DH + DW L1B5F + JP L1262 + +L12D4: CALL L12DA + JP L1262 + +L12DA: CALL L145E + CALL L1459 + CALL L18B0 + RET PE + LD (DE),A + CALL Z,L1302 + LD A,(04A12H) + CP 00DH + RET Z + CALL L18B3 + DI + LD (DE),A + LD (04A0EH),HL + EX DE,HL + LD HL,04A0EH + CALL L18F2 + CALL L18A2 + JR L130C ; (+00aH) + +L1302: CALL L18F2 + EX DE,HL + CALL L1873 + CALL L1762 +L130C: CALL L19C3 + EX DE,HL + JP L18EA + +L1313: LD B,021H +L1315: LD A,0CFH + CALL PRNT + DJNZ L1315 ; (-007H) + JR L132C ; (+00eH) + +L131E: LD B,021H +L1320: LD A,0D7H + CALL PRNT + DJNZ L1320 ; (-007H) + JR L132C ; (+003H) + +L1329: CALL MSGX +L132C: CALL LETNL + JP LETNL + +MSGNL: CALL NL + JP MSGX + +L1338: CALL GETL + LD A,0C9H + CALL ?DPCT + LD A,000H + LD HL,SFTLK + LD (HL),A + RET + +TITLEMSG: DB " BASIC ",0A6H,0B0H,096H,092H,09DH,09EH,09DH,092H,096H,092H,09DH," SA-5510" + DB 00DH +COPYRMSG: DB " C",0B7H,09EH,0BDH,09DH,0A6H,097H,098H,096H," 1981 ",09AH,0BDH," SHARP C",0B7H,09DH,09EH,"." + DB 00DH +READYMSG: DB "R",092H,0A1H,09CH,0BDH + DB 00DH +ERRORMSG: DB "*E",09DH,09DH,0B7H,09DH + DB 00DH +INMSG: DB " ",0A6H,0B0H + DB 00DH +BREAKMSG: DB "*B",09DH,092H,0A1H,0A9H + DB 00DH +BYTESMSG: DB " B",0BDH,096H,092H,0A4H + DB 00DH +ERRCODE: DB 012H ; Storage of error code + DB 000H +L13A5: DB 000H + DB 000H + DB 000H + DB 000H + DB 000H + DB 000H + + ; Error table. A is loaded with code and the 01 is LD BC, so a 3E 01 would be LD A,01 and the next entry would be skipped as it would see 01 3E 02 or LB BC,023E. + ; Designed to save code, the error code is loaded into A then it falls all the way to the bottom of this table before returning. +SYNTAXERR: LD A,1 ; Syntax error + DB 001H +OVFLERR: LD A,2 ; Operation result overflow + DB 001H +ILDATERR: LD A,3 ; Illegal data + DB 001H +DATMISERR: LD A,4 ; Data type mismatch + DB 001H +STRLENERR: LD A,5 ; String length exceeded 255 characters + DB 001H +MEMERR: LD A,6 ; Insufficient memory capacity. + DB 001H + LD A,7 ; Size of array larger than previous definition. + DB 001H +LINELENERR: LD A,8 ; Length of text line too long. + DB 001H +GOSUBERR: LD A,10 ; GOSUB nest exceeds 16 deep. + DB 001H +FORNEXTERR: LD A,11 ; FOR-NEXT nest exceeds 16 deep. + DB 001H +FUNCERR: LD A,12 ; FUNC levels exceed depth of 6. + DB 001H +NEXTFORERR: LD A,13 ; NEXT without FOR + DB 001H +RETGOSBERR: LD A,14 ; RETURN without GOSUB + DB 001H +UNDEFFNERR: LD A,15 ; Undefined function + DB 001H +LINEERR: LD A,16 ; Unused reference line number + DB 001H +CONTERR: LD A,17 ; CONT cannot be executed + DB 001H +BADWRERR: LD A,18 ; Write statement to BASIC error + DB 001H +CMDSTMTERR: LD A,19 ; Direct mode and statements are mixed + DB 001H +READDATAERR:LD A,24 ; READ without DATA + DB 001H +OPENERR: LD A,43 ; OPEN issued on already open file. + DB 001H +UNKNWNERR: LD A,60 ; + DB 001H +OUTFILEERR: LD A,63 ; Out of file + DB 001H +PRTNRDYERR: LD A,65 ; Printer not ready + DB 001H +PRTHWERR: LD A,66 ; Printer hardware error + DB 001H +PRTPAPERERR:LD A,67 ; Out of paper + DB 001H +CHKSUMERR: LD A,70 ; Check sum error + JR L1403 ; (+009H) + +L13FA: LD IY,L1400 + RET + + NOP +L1400: LD A,(013FFH) +L1403: LD (ERRCODE),A + CALL L1ABF + CALL L1AB8 + JR Z,L142A ; (+01cH) + LD HL,05056H + LD A,(HL) + CP 001H + JR NZ,L1421 ; (+00bH) + INC (HL) + LD HL,(0490AH) + LD SP,HL + LD HL,(05057H) + JP L1EAA + +L1421: CALL L1991 + CALL L1978 + CALL L199E +L142A: LD DE,ERRORMSG + CALL MSGNL + LD HL,(ERRCODE) + CALL L1453 + JR L143E ; (+006H) + +L1438: LD DE,BREAKMSG + CALL MSGNL +L143E: LD BC,WARMSTRT + PUSH BC + XOR A + LD (L2A83),A + CALL BELL + CALL L1AB8 + RET Z + LD DE,INMSG + CALL MSGX +L1453: CALL L1841 + JP MSGX + +L1459: XOR A + LD (L1463),A + RET + +L145E: XOR A + LD (05059H),A + RET + +L1463: NOP +L1464: SBC A,C + LD H,D + RET Z + RRCA + SUB B + LD H,D +L146A: LD HL,LINEBUFR + CALL L17F6 + LD (04A10H),DE + LD DE,04A12H + LD C,000H +L1479: CALL L1561 + RET Z + OR A + JP M,SYNTAXERR + DEC DE + PUSH HL + LD HL,L1479 + EX (SP),HL + CP 03FH + LD B,088H + JR Z,L1498 ; (+00bH) + DEC HL + PUSH DE + LD DE,CMDWORDTBL + CALL L14C7 + JR NZ,L14A8 ; (+011H) + POP DE +L1498: LD A,080H + CALL L14B3 + CP 084H + RET NC +L14A0: CALL L1595 + CP ':' + RET Z + POP AF + RET + +L14A8: LD DE,UNUSEDTBL1 + CALL L14C7 + JR NZ,L14B9 ; (+009H) + POP DE + LD A,081H +L14B3: LD (DE),A + INC DE +L14B5: LD A,B + LD (DE),A + INC DE + RET + +L14B9: LD DE,OPERATORTBL + LD B,083H + CALL L14C9 + POP DE + JR Z,L14B5 ; (-00fH) + INC HL + INC DE + RET + +L14C7: LD B,080H +L14C9: PUSH HL +L14CA: CALL SKIPSPACE + OR A + JP M,L14F1 + EX DE,HL + CALL SKIPSPACE + EX DE,HL + SUB (HL) + INC HL + INC DE + JR Z,L14CA ; (-011H) + ADD A,080H + JR NZ,L14E2 ; (+003H) + INC SP + INC SP + RET + +L14E2: POP HL + DEC DE +L14E4: LD A,(DE) + INC DE + OR A + JR Z,L14EF ; (+006H) + JP P,L14E4 + INC B + JR L14C9 ; (-026H) + +L14EF: DEC A + RET + +L14F1: POP HL + CALL SKIPSPACE + DEC A + LD A,(HL) + RET + +L14F8: LD HL,(04A10H) + LD DE,LINEBUFR + LD C,0B2H + CALL L17FE + LD A,020H + LD (DE),A + INC DE + LD HL,04A12H +L150A: CALL L1561 + RET Z + SUB 080H + JR C,L150A ; (-008H) + DEC DE + DEC C + CP 003H + JR C,L1525 ; (+00dH) + SUB 002H + LD B,A + PUSH HL + LD HL,OPERATORTBL +L151F: CALL L1554 + POP HL + JR L150A ; (-01bH) + +L1525: EX AF,AF' + LD A,(HL) + INC HL + SUB 07FH + LD B,A + PUSH HL + EX AF,AF' + OR A + JR Z,L153D ; (+00dH) + LD HL,L151F + PUSH HL + LD HL,UNUSEDTBL1 + DEC A + RET Z + LD HL,UNUSEDTBL2 + RET + +L153D: PUSH BC + LD HL,CMDWORDTBL + CALL L1554 + POP AF + LD HL,L150A + EX (SP),HL + CP 004H + RET NC + JP L14A0 + +L154F: BIT 7,(HL) + INC HL + JR Z,L154F ; (-005H) +L1554: DJNZ L154F ; (-007H) +L1556: CALL L158A + ADD A,080H + JR NC,L1556 ; (-007H) + DEC DE + LD (DE),A + INC DE + RET + +L1561: CALL L158A + RET Z + CALL L1575 + JR Z,L1561 ; (-009H) + CP 022H + RET NZ + CALL L1581 + CP 00DH + JR NZ,L1561 ; (-013H) + RET + +L1575: CP 020H + RET Z + CP PRTD + RET Z + CP 028H + RET Z + CP 029H + RET + +L1581: CALL L158A + RET Z + CP 022H + JR NZ,L1581 ; (-008H) + RET + +L158A: LD A,(HL) + LD (DE),A + INC HL + INC DE + INC C + JP Z,LINELENERR + CP 00DH + RET + +L1595: CALL L158A + RET Z + CP ':' + RET Z + CP 022H + JR NZ,L1595 ; (-00bH) + CALL L1581 + CP 00DH + JR NZ,L1595 ; (-012H) + RET + + ; Reserved word table. +CMDWORDTBL: DB "RE", "M" | 080H + DB "DAT", "A" | 080H + DB 0FFH | 080H + DB 0FFH | 080H + DB "REA", "D" | 080H + DB "LIS", "T" | 080H + DB "RU", "N" | 080H + DB "NE", "W" | 080H + DB "PRIN", "T" | 080H + DB "LE", "T" | 080H + DB "FO", "R" | 080H + DB "I", "F" | 080H + DB "THE", "N" | 080H + DB "GOT", "O" | 080H + DB "GOSU", "B" | 080H + DB "RETUR", "N" | 080H + DB "NEX", "T" | 080H + DB "STO", "P" | 080H + DB "EN", "D" | 080H + DB 0FFH | 080H + DB "O", "N" | 080H + DB "LOA", "D" | 080H + DB "SAV", "E" | 080H + DB "VERIF", "Y" | 080H + DB "POK", "E" | 080H + DB "DI", "M" | 080H + DB "DEF F", "N" | 080H + DB "INPU", "T" | 080H + DB "RESTOR", "E" | 080H + DB "CL", "R" | 080H + DB "MUSI", "C" | 080H + DB "TEMP", "O" | 080H + DB "USR", "(" | 080H + DB "WOPE", "N" | 080H + DB "ROPE", "N" | 080H + DB "CLOS", "E" | 080H + DB "MO", "N" | 080H + DB "LIMI", "T" | 080H + DB "CON", "T" | 080H + DB "GE", "T" | 080H + DB "INP", "@" | 080H + DB "OUT", "@" | 080H + DB "CURSO", "R" | 080H + DB "SE", "T" | 080H + DB "RESE", "T" | 080H + DB 07FH | 080H + DB 07FH | 080H + DB 07FH | 080H + DB 07FH | 080H + DB 07FH | 080H + DB 07FH | 080H + DB "AUT", "O" | 080H + DB 0FFH | 080H + DB 0FFH | 080H + DB "COPY/", "P" | 080H + DB "PAGE/", "P" | 080H + IF BUILD_ORIG = 1 + DB 07FH | 080H + DB 07FH | 080H + DB 07FH | 080H + ENDIF + IF BUILD_RFS = 1 + DB "DI", "R" | 080H ; New DIR command to list the SD card directory. + ENDIF + DB 07FH | 080H + DB 07FH | 080H + DB 07FH | 080H + DB 07FH | 080H + DB 07FH | 080H + DB 07FH | 080H + DB 000H +UNUSEDTBL1: DB 07FH | 080H + DB 000H +UNUSEDTBL2: DB 07FH | 080H + DB 000H +OPERATORTBL:DB ">", "<" | 080H + DB "<", ">" | 080H + DB "=", "<" | 080H + DB "<", "=" | 080H + DB "=", ">" | 080H + DB ">", "=" | 080H + DB 07FH | 080H + DB ">" | 080H + DB "<" | 080H + DB 07FH | 080H + DB 07FH | 080H + DB 07FH | 080H + DB 07FH | 080H + DB 07FH | 080H + DB 07FH | 080H + DB 07FH | 080H + DB 07FH | 080H + DB 07FH | 080H + DB 07FH | 080H + DB 07FH | 080H + DB 07FH | 080H + DB 07FH | 080H + DB 07FH | 080H + DB 07FH | 080H + DB 07FH | 080H + DB 07FH | 080H + DB 07FH | 080H + DB "T", "O" | 080H + DB "STE", "P" | 080H + DB "LEFT$", "(" | 080H + DB "RIGHT$", "(" | 080H + DB "MID$", "(" | 080H + DB "LEN", "(" | 080H + DB "CHR$", "(" | 080H + DB "STR$", "(" | 080H + DB "ASC", "(" | 080H + DB "VAL", "(" | 080H + DB "PEEK", "(" | 080H + DB "TAB", "(" | 080H + DB "SPACE$", "(" | 080H + DB "SIZ", "E" | 080H + DB 07FH | 080H + DB 07FH | 080H + DB 07FH | 080H + DB "STRING$", "(" | 080H + DB 07FH | 080H + DB "CHARACTER$", "(" | 080H + DB "CS", "R" | 080H + DB 07FH | 080H + DB 07FH | 080H + DB 07FH | 080H + DB 07FH | 080H + DB 07FH | 080H + DB 07FH | 080H + DB 07FH | 080H + DB 07FH | 080H + DB 07FH | 080H + DB 07FH | 080H + DB 07FH | 080H + DB 07FH | 080H + DB 07FH | 080H + DB "RND", "(" | 080H + DB "SIN", "(" | 080H + DB "COS", "(" | 080H + DB "TAN", "(" | 080H + DB "ATN", "(" | 080H + DB "EXP", "(" | 080H + DB "INT", "(" | 080H + DB "LOG", "(" | 080H + DB "LN", "(" | 080H + DB "ABS", "(" | 080H + DB "SGN", "(" | 080H + DB "SQR", "(" | 080H + DB 07FH | 080H + DB 000H +L173A: LD HL,(05051H) + DEC HL +INCSKIPSPCE:INC HL +SKIPSPACE: LD A,(HL) + CP 020H + RET NZ + JR INCSKIPSPCE ; (-007H) + +L1745: PUSH AF + LD A,00DH +L1748: CP (HL) + INC HL + JR NZ,L1748 ; (-004H) + POP AF + RET + +L174E: INC HL +L174F: CALL L193B + RET Z + CP 022H + JR NZ,L174E ; (-009H) +L1757: INC HL + LD A,(HL) + CP 00DH + RET Z + CP 022H + JR NZ,L1757 ; (-009H) + JR L174E ; (-014H) + +L1762: LD A,C + CPL + LD C,A + LD A,B + CPL + LD B,A + INC BC + RET + +L176A: CALL SKIPSPACE + SUB 030H + CP 00AH + LD A,(HL) + RET + +L1773: LD A,H + SUB D + RET NZ + LD A,L + SUB E + RET + +L1779: POP HL ; Get address after call and jump to it via a RET command. +L177A: EX (SP),HL +EXECHL: PUSH AF + LD A,(HL) + INC HL + LD H,(HL) + LD L,A + POP AF + EX (SP),HL + RET + +L1783: POP HL +L1784: EX (SP),HL + INC HL + INC HL + EX (SP),HL + RET + +L1789: LD HL,(04E94H) + INC HL + INC HL + INC HL + INC HL + INC HL + RET + +L1792: LD HL,(05051H) +EXECNOTCHR: CALL SKIPSPACE ; Scan for character after command + EX (SP),HL + CP (HL) + INC HL + JR NZ,EXECHL ; (-022H) + INC HL + JR L17AB ; Move the return address pointer over the test character and function address. + +L17A0: LD HL,(05051H) +MATCHCHR: CALL SKIPSPACE + EX (SP),HL + CP (HL) + JP NZ,SYNTAXERR +L17AB: INC HL + EX (SP),HL + JR INCSKIPSPCE ; (-071H) + +L17AF: XOR A + CP H + JR Z,L17B7 ; (+004H) + EX DE,HL + CP H + JR NZ,L177A ; (-03dH) +L17B7: LD A,L + LD L,H +L17B9: OR A + JR Z,L17CC ; (+010H) + RRA + JR NC,L17C2 ; (+003H) + ADD HL,DE + JR C,L177A ; (-048H) +L17C2: OR A + JR Z,L17CC ; (+007H) + EX DE,HL + ADD HL,HL + EX DE,HL + JR NC,L17B9 ; (-011H) + JR L177A ; (-052H) + +L17CC: EX DE,HL + JR L1784 ; (-04bH) + +L17CF: CALL L17AF + OR C + INC DE + RET + +L17D5: LD DE,MONIT + LD B,D +L17D9: CALL L176A + JR NC,L1784 ; (-05aH) + AND 00FH + LD C,A + XOR A + PUSH HL + LD L,E + LD H,D + ADD HL,HL + RRA + ADD HL,HL + RRA + ADD HL,DE + RRA + ADD HL,HL + RRA + ADD HL,BC + EX DE,HL + POP HL + INC HL + ADC A,A + JR NC,L17D9 ; (-01bH) + JR L177A ; (-07cH) + +L17F6: CALL L17D5 + XOR E + INC DE + RET + + ; Method to convert a number in HL to a string. +STRTONUM: LD C,000H +L17FE: LD A,020H + LD (DE),A + INC DE + PUSH DE + LD B,000H + LD DE,L2710 + CALL L1827 + LD DE,003E8H + CALL L1827 + LD DE,00064H + CALL L1827 + LD DE,0000AH + CALL L1827 + LD A,L + POP HL + OR 030H + LD (HL),A + INC HL + LD (HL),00DH + EX DE,HL + RET + +L1827: LD A,0FFH +L1829: INC A + OR A + SBC HL,DE + JR NC,L1829 ; (-006H) + ADD HL,DE + OR A + JR NZ,L1836 ; (+003H) + OR B + RET Z + XOR A +L1836: INC B + OR 030H + POP DE + EX (SP),HL + LD (HL),A + INC HL + EX (SP),HL + PUSH DE + INC C + RET + + ; Convert a string into a numeric and store. +L1841: LD DE,04AB3H ; Conversion to be stored in location. + PUSH DE + CALL STRTONUM + POP DE + RET + +L184A: LD BC,MONIT +L184D: LD HL,(04E94H) + ADD HL,BC + JR C,L185C ; (+009H) + EX DE,HL + LD HL,0FF9CH + ADD HL,SP + XOR A + SBC HL,DE + RET NC +L185C: JP MEMERR + +L185F: PUSH HL + PUSH DE + CALL L184D + POP DE + POP HL + RET + +L1867: LD E,(HL) + INC HL + LD D,(HL) + INC HL + LD A,(HL) + INC HL + LD H,(HL) + LD L,A + EX DE,HL + LD A,L + OR H + RET + +L1873: PUSH BC + PUSH HL + PUSH DE + EX DE,HL + ADD HL,BC + EX DE,HL + CALL L1789 + LD A,L + SUB E + LD C,A + LD A,H + SBC A,D + LD B,A + INC BC + POP HL + PUSH HL + EX DE,HL + JR L18A8 ; (+020H) + +L1888: CALL L185F + PUSH BC + PUSH HL + PUSH DE + CALL L1789 + PUSH HL + ADD HL,BC + EX (SP),HL + LD A,L + SUB E + LD C,A + LD A,H + SBC A,D + LD B,A + INC BC + POP DE + LDDR +L189E: POP DE + POP HL + POP BC + RET + +L18A2: CALL L1888 +L18A5: PUSH BC + PUSH HL + PUSH DE +L18A8: LD A,C + OR B + JR Z,L189E ; (-00eH) + LDIR + JR L189E ; (-012H) + +L18B0: LD (L18BF),HL +L18B3: LD HL,0505CH +L18B6: PUSH HL + CALL L1867 + JP Z,L1779 + PUSH HL + DB 021H +L18BF: DB 0AAH + DB 00FH + CALL L1773 + POP HL + JP Z,L1783 + JP C,L1783 + POP AF + JR L18B6 ; (-018H) + +L18CE: PUSH HL + LD E,(HL) + INC HL + LD D,(HL) + LD A,E + OR D + JP Z,L1779 + DB 021H +L18D8: DB 042H + DB 04CH + CALL L1773 + POP HL + INC HL + INC HL + JP L1784 + +L18E3: ADD HL,BC + EX DE,HL + POP HL + LD (HL),E + INC HL + LD (HL),D + EX DE,HL +L18EA: PUSH HL + CALL L1867 + JR NZ,L18E3 ; (-00dH) + POP HL + RET + +L18F2: PUSH HL + LD BC,00004H + ADD HL,BC + CALL L1900 + INC BC + POP HL + RET + +L18FD: LD BC,MONIT +L1900: PUSH HL + LD A,00DH +L1903: CP (HL) + INC HL + INC BC + JR NZ,L1903 ; (-005H) + DEC BC + POP HL + RET + +L190B: CALL L1921 +L190E: LD A,E + EX DE,HL + LD BC,MONIT + LD HL,(04E92H) + DEC HL +L1917: INC HL + ADD HL,BC + CP (HL) + INC HL + LD C,(HL) + INC HL + JR NZ,L1917 ; (-008H) + EX DE,HL + RET + +L1921: LD A,D + OR A + RET NZ + JR L1929 ; (+003H) + +L1926: LD A,D + OR A + RET Z +L1929: JP DATMISERR + +L192C: LD HL,(04E94H) + EX DE,HL +L1930: LD BC,00005H + LDIR + RET + +L1936: LD HL,(04E94H) + JR L1930 ; (-00bH) + +L193B: CALL SKIPSPACE + CP 00DH + RET Z + CP ':' + RET + +L1944: LD HL,MONIT + LD (04E4CH),HL + CALL L1957 + CALL L199E + CALL L1978 + CALL L1459 + RET + +L1957: LD HL,0505CH + CALL L19BA + LD DE,04E4EH +L1960: PUSH HL + LD HL,04E96H + XOR A + SBC HL,DE + LD B,L + SRL B + POP HL + EX DE,HL +L196C: XOR A + LD (HL),E + INC HL + LD (HL),D + INC HL + LD (DE),A + INC DE + LD (DE),A + INC DE + DJNZ L196C ; (-00bH) + RET + +L1978: LD HL,05040H + LD (04E9AH),HL + LD HL,04FD7H + LD (04E98H),HL + LD HL,04EBAH + LD (04E96H),HL + LD HL,05053H + CALL L19BA + LD (HL),A +L1991: XOR A + LD (05056H),A + RET + +L1996: LD HL,(04E84H) + LD DE,04E84H + JR L1960 ; (-03eH) + +L199E: LD HL,04DF2H + LD B,05AH +L19A3: LD (HL),000H + INC HL + DJNZ L19A3 ; (-005H) + LD B,01AH + LD HL,04E50H +L19AD: LD E,(HL) + INC HL + LD D,(HL) + INC HL + PUSH HL + EX DE,HL + CALL L2E09 + POP HL + DJNZ L19AD ; (-00cH) + RET + +L19BA: XOR A +L19BB: LD (HL),A + INC HL + LD (HL),A + INC HL + RET + +L19C0: CALL L1888 +L19C3: PUSH HL + LD A,E + EX AF,AF' + LD A,D + LD HL,04E94H +L19CA: LD E,(HL) + INC HL + LD D,(HL) + CP D + JR C,L19D7 ; (+007H) + JR NZ,L19E2 ; (+010H) + EX AF,AF' + CP E + JR NC,L19E1 ; (+00bH) + EX AF,AF' +L19D7: EX DE,HL + ADD HL,BC + EX DE,HL + LD (HL),D + DEC HL + LD (HL),E + DEC HL + DEC HL + JR L19CA ; (-017H) + +L19E1: EX AF,AF' +L19E2: LD D,A + EX AF,AF' + LD E,A + POP HL + RET + +L19E7: CALL L1873 + PUSH BC + CALL L1762 + CALL L19C3 + POP BC + RET + +L19F3: CALL SKIPSPACE + LD DE,00D2CH + LD BC,MONIT + CP 022H + JR NZ,L1A02 ; (+002H) + LD E,A + INC HL +L1A02: PUSH HL +L1A03: LD A,(HL) + CP D + JR Z,L1A0F ; (+008H) + CP E + INC HL + JR Z,L1A0F ; (+004H) + INC BC + JR L1A03 ; (-00bH) + +L1A0E: PUSH HL +L1A0F: EX (SP),HL + PUSH HL + CALL L1A1E + EX DE,HL + EX (SP),HL + CALL L18A5 + POP DE + POP HL + JP SKIPSPACE + +L1A1E: PUSH BC + XOR A + LD E,A + LD HL,(04E92H) + JR L1A2B ; (+005H) + +L1A26: INC HL + LD C,(HL) + INC HL + INC HL + ADD HL,BC +L1A2B: INC E + CP (HL) + JR NZ,L1A26 ; (-009H) + POP BC + PUSH BC + INC BC + INC BC + INC BC + EX DE,HL + CALL L1888 + EX DE,HL + PUSH HL + ADD HL,BC + DEC HL + LD (HL),00DH + LD HL,(04E94H) + ADD HL,BC + LD (04E94H),HL + POP HL + POP BC + LD (HL),E + INC HL + LD (HL),C + INC HL + LD D,001H + RET + +L1A4E: PUSH HL + LD HL,(04E94H) + LD DE,MONIT + LD A,(HL) + OR A + JP P,L1779 + CP 0C1H + JR C,L1A72 ; (+014H) + SUB 0D1H + JP NC,L1779 + LD E,003H + ADD HL,DE + LD E,(HL) + INC HL + LD D,(HL) + JR L1A6F ; (+004H) + +L1A6B: SRL D + RR E +L1A6F: INC A + JR NZ,L1A6B ; (-007H) +L1A72: JP L1783 + +L1A75: CALL EXECNOTCHR + DB 00DH + DW L1A7E + JP L177A + +L1A7E: PUSH HL + DEC HL +L1A80: CALL L1A91 + JR Z,L1A80 ; (-005H) + CP 00DH + JP NZ,L1779 + POP HL + CALL L2333 + JP L1784 + +L1A91: CALL INCSKIPSPCE + CP 045H + RET Z +L1A97: CALL L176A + JR NC,L1A9E ; (+002H) + CP (HL) + RET + +L1A9E: CP 02EH + RET Z + CP '+' + RET Z + CP '-' + RET + +L1AA7: PUSH HL + CALL L1AB8 + POP HL + RET Z + JR L1AB5 ; Command statement error. + +L1AAF: PUSH HL + CALL L1AB8 + POP HL + RET NZ +L1AB5: JP CMDSTMTERR + +L1AB8: LD HL,(0504FH) + LD A,H + OR L + RET + +L1ABE: NOP +L1ABF: LD HL,L1ABE + XOR A + CP (HL) + LD (HL),A + JR NZ,L1AEE ; (+027H) +L1AC7: LD HL,0505CH +L1ACA: LD E,(HL) + INC HL + LD D,(HL) + DEC HL + LD A,E + OR D + RET Z + CALL L1773 + RET C + EX DE,HL + ADD HL,DE + EX DE,HL + LD (HL),E + INC HL + LD (HL),D + EX DE,HL + JR L1ACA ; (-014H) + +L1ADE: LD HL,(04E4EH) + LD DE,0505CH + DEC HL + DEC HL + XOR A + SBC HL,DE + LD B,H + LD C,L + JP L19E7 + +L1AEE: CALL L1ADE +L1AF1: CALL L1996 + CALL L199E + CALL L1978 + RET + + NOP + NOP + NOP + NOP + NOP + NOP + NOP + NOP + PUSH BC + CALL L1AEE + POP BC + LD A,B + OR A + JR NZ,L1B10 ; (+004H) + LD A,C + CP 003H + RET C +L1B10: PUSH BC + DEC BC + DEC BC + LD DE,0505CH + CALL L19C0 + POP BC + RET + +L1B1B: LD HL,0505CH +L1B1E: LD E,(HL) + INC HL + LD D,(HL) + DEC HL + LD A,D + OR E + RET Z + CALL L1773 + RET NC + PUSH DE + EX DE,HL + XOR A + SBC HL,DE + EX DE,HL + LD (HL),E + INC HL + LD (HL),D + POP HL + JR L1B1E ; (-017H) + +L1B35: LD HL,(05051H) +L1B38: CALL SKIPSPACE +L1B3B: CP 00DH + JR Z,L1B45 ; (+006H) + CALL MATCHCHR + DB ':' + JR L1B5C ; (+017H) + +L1B45: LD HL,(0504DH) + LD A,H + OR L + JP Z,WARMSTRT +L1B4D: LD A,(HL) + INC HL + OR (HL) + DEC HL + JP Z,L1D17 + LD DE,0504DH + LD BC,00004H + LDIR +L1B5C: LD (05051H),HL +L1B5F: LD A,(05056H) + DEC A + CALL Z,L1B9F + CALL BRKEY + JR NZ,L1B73 ; (+008H) + LD A,002H + CALL L29EB + JP L1438 + +L1B73: LD HL,(04E92H) + CALL L19BA + LD (04E94H),HL + CALL L173A +L1B7F: SUB 080H + JP C,CMDLET + INC HL + LD C,(HL) + INC HL + PUSH HL + LD HL,CMDJMPTBL + JP NZ,SYNTAXERR + LD A,C + ADD A,080H + JP NC,SYNTAXERR + LD C,A +L1B95: LD B,000H + ADD HL,BC + ADD HL,BC + LD A,(HL) + INC HL + LD H,(HL) + LD L,A + EX (SP),HL + RET + +L1B9F: CALL L1AB8 + RET Z + LD DE,L13A5 + LD HL,0504DH + JR NZ,L1BAC ; (+001H) + EX DE,HL +L1BAC: LD BC,LETNL + LDIR + RET + +CMDJMPTBL: DW CMDREMDATA + DW CMDREMDATA + DW SYNTAXERR + DW SYNTAXERR + DW CMDREAD + DW CMDLIST + DW CMDRUN + DW CMDNEW + DW CMDPRINT + DW CMDLET + DW CMDFOR + DW CMDIF + DW SYNTAXERR + DW CMDGOTO + DW CMDGOSUB + DW CMDRETURN + DW CMDNEXT + DW CMDSTOP + DW CMDEND + DW SYNTAXERR + DW CMDON + DW CMDLOAD + DW CMDSAVE + DW CMDVERIFY + DW CMDPOKE + DW CMDDIM + DW CMDDEFFN + DW CMDINPUT + DW CMDRESTORE + DW CMDCLS + DW CMDMUSIC + DW CMDTEMPO + DW CMDUSRN + DW CMDWOPEN + DW CMDROPEN + DW CMDCLOSE + DW CMDMON + DW CMDLIMIT + DW CMDCONT + DW CMDGET + DW CMDINP + DW CMDOUT + DW CMDCURSOR + DW CMDSET + DW CMDRESET + DW SYNTAXERR + DW SYNTAXERR + DW SYNTAXERR + DW SYNTAXERR + DW SYNTAXERR + DW SYNTAXERR + DW CMDAUTO + DW SYNTAXERR + DW SYNTAXERR + DW CMDCOPY + DW CMDPAGE + IF BUILD_ORIG = 1 + DW SYNTAXERR + ENDIF + IF BUILD_RFS = 1 + DW CMDDIR + ENDIF + DW SYNTAXERR + DW SYNTAXERR + DW SYNTAXERR + DW SYNTAXERR + DW SYNTAXERR + DW SYNTAXERR + DW SYNTAXERR +L1C32: CALL L193B + JP NZ,SYNTAXERR + LD (05051H),HL + RET + +CMDREMDATA: CALL L174F + JP L1B38 + +CMDNEW: XOR A + LD (L1463),A + CALL L1944 +L1C49: JP WARMSTRT + +L1C4C: DB 006H +CMDLIST: XOR A + LD (L1CAB),A + CALL EXECNOTCHR + DB '/' + DW L1C60 + CALL MATCHCHR + DB 050H + LD A,001H + LD (L1CAB),A +L1C60: CALL L1AA7 + DB 03EH + LD A,(BC) + LD (L1C4C),A + PUSH HL + LD HL,04AB3H + CALL L19BA + DEC A + CALL L19BB + POP HL + CALL L193B + CALL NZ,L1CF3 + LD (05051H),HL + LD HL,0505CH +L1C80: PUSH HL + CALL L1867 + POP HL +L1C85: JR Z,L1C49 ; (-03eH) + CALL L18F2 + LD DE,04A0EH + LDIR + LD HL,(04AB3H) + EX DE,HL + LD HL,(04A10H) + CALL L1773 + JR C,L1CDF ; (+044H) + EX DE,HL + LD HL,(04AB5H) + CALL L1773 + JR C,L1CDF ; (+03bH) + CALL L14F8 + LD DE,LINEBUFR + DB 03EH +L1CAB: DB 000H + OR A + JR Z,L1CBA ; (+00bH) + CALL L31A2 + CALL L3246 + CALL L31A7 + JR L1CC7 ; (+00dH) + +L1CBA: CALL MSGNL + LD A,(L1C4C) + DEC A + LD (L1C4C),A + CALL Z,L1CE4 +L1CC7: CALL BRKEY + JR Z,L1C85 ; (-047H) +L1CCC: CALL GETKY + CP 020H + JR Z,L1CCC ; (-007H) + CP 03FH + JR NZ,L1CDF ; (+008H) + LD BC,L2000 +L1CDA: DEC BC + LD A,B + OR C + JR NZ,L1CDA ; (-005H) +L1CDF: LD HL,(04A0EH) + JR L1C80 ; (-064H) + +L1CE4: INC A + LD (L1C4C),A + PUSH BC + LD BC,00001H +L1CEC: DEC BC + LD A,B + OR C + JR NZ,L1CEC ; (-005H) + POP BC + RET + +L1CF3: CALL L17F6 + LD (04AB3H),DE + CALL L193B + JR Z,L1D0A ; (+00bH) + CALL MATCHCHR + DB '-' + CALL L193B + RET Z + CALL L17F6 +L1D0A: LD (04AB5H),DE + CALL L193B + RET Z + JP SYNTAXERR + +CMDEND: DB 0AFH + DB 001H +L1D17: LD A,001H + EX AF,AF' + CALL L1AAF + EX AF,AF' + OR A + CALL Z,L1D24 + JR L1D41 ; (+01dH) + +L1D24: CALL L1C32 + LD A,001H + JP L29EB + +CMDSTOP: CALL L1AAF + CALL L1D24 + LD HL,(0504FH) + LD DE,L1D44 + CALL MSGX + CALL L1841 + CALL MSGX +L1D41: JP WARMSTRT + +L1D44: DB "*S",096H,0B7H,09EH," ",0A6H,0B0H,00DH +CMDRESTORE: CALL L17F6 + CALL L1C32 + LD BC,L1B35 + PUSH BC + LD A,D + OR E + JP Z,L145E + LD BC,L2D46 + PUSH BC +L1D60: EX DE,HL +L1D61: CALL L18B0 + PUSH DE + INC DE + RET Z + JP LINEERR + +CMDLET: PUSH HL +L1D6B: CALL L193B + JP Z,SYNTAXERR + CP 03DH + INC HL + JR NZ,L1D6B ; (-00bH) + CALL L2293 + LD (05051H),HL + CALL L1D95 + POP HL + CALL L267F + CALL L24B2 + CALL MATCHCHR + DB 03DH + CALL L1D9A + CALL L1DA5 + DW DATMISERR + JP L1B35 + +L1D95: LD HL,04900H + JR L1D9D ; (+003H) + +L1D9A: LD HL,04904H +L1D9D: LD (HL),C + INC HL + LD (HL),B + INC HL + LD (HL),E + INC HL + LD (HL),D + RET + +L1DA5: LD HL,04903H + LD B,(HL) + INC HL + LD C,(HL) + INC HL + LD A,(HL) + LD DE,(04906H) + OR A + JR NZ,L1DBD ; (+009H) + OR B + JP NZ,L177A + CALL L1936 + JR L1DF2 ; (+035H) + +L1DBD: XOR A + OR B + JP Z,L177A + LD HL,L1DF5 + XOR A + LD B,A + SBC HL,DE + JR Z,L1DFE ; (+033H) + LD HL,(04900H) + XOR A + SBC HL,BC + LD B,H + LD C,L + JR C,L1DDA ; (+005H) + CALL L1888 + JR L1DE2 ; (+008H) + +L1DDA: PUSH BC + CALL L1762 + CALL L1873 + POP BC +L1DE2: CALL L19C3 + LD HL,(04902H) + EX DE,HL + CALL L190E + EX DE,HL + DEC DE + DEC HL + INC BC + LDIR +L1DF2: JP L1784 + +L1DF5: JR NC,L1E27 ; (+030H) + DEC C + JR NC,L1E2A ; (+030H) + DEC C + JR NC,L1E2D ; (+030H) + DEC C +L1DFE: LD HL,(04902H) + EX DE,HL + CALL L190B + EX DE,HL + LD DE,L1DF5 + PUSH DE + LD B,003H +L1E0C: LD C,002H +L1E0E: CALL L176A + JR NC,L1E5D ; (+04aH) + LD (DE),A + INC DE + INC HL + DEC C + JR NZ,L1E0E ; (-00bH) + LD A,00DH + LD (DE),A + INC DE + DEC B + JR NZ,L1E0C ; (-014H) + CALL EXECNOTCHR + DB 00DH + DW ILDATERR + POP HL +L1E27: CALL L1E69 +L1E2A: LD B,000H + LD A,E +L1E2D: CP 018H + JR NC,L1E5D ; (+02cH) + SUB 00CH + JR C,L1E37 ; (+002H) + LD E,A + INC B +L1E37: LD A,B + PUSH AF + PUSH HL + LD HL,00E10H + CALL L17CF + POP HL + PUSH DE + INC HL + CALL L1E69 + LD A,E + CP 03CH + JR NC,L1E5D ; (+012H) + PUSH HL + LD HL,0003CH + CALL L17CF + POP HL + EX (SP),HL + ADD HL,DE + EX (SP),HL + INC HL + CALL L1E69 + LD A,E + CP 03CH +L1E5D: JR NC,L1E8E ; (+02fH) + POP HL + ADD HL,DE + EX DE,HL + POP AF + CALL ?TMST + JP L1784 + +L1E69: EXX + LD BC,00005H + CALL L1E7F + CALL L2333 + CALL L1926 + CALL L1A4E + OR C + INC DE + EXX + LD BC,0FFFBH +L1E7F: LD HL,(04E94H) + ADD HL,BC + LD (04E94H),HL + EXX + RET + +GETNUM: CALL L1E69 + LD A,D + OR A + RET Z +L1E8E: JP ILDATERR + +CMDRUN: XOR A + LD (L2A83),A + LD (L30E2),A + CALL L2E94 + CALL L145E + CALL L1459 + CALL L176A + JR NC,L1EAF ; (+009H) +CMDGOTO: CALL L17F6 +L1EA9: EX DE,HL +L1EAA: CALL L1D61 + JR L1EC4 ; (+015H) + +L1EAF: CALL L193B + JP NZ,SYNTAXERR + CALL L1991 + CALL L1978 + CALL L1996 + CALL L199E + LD HL,0505CH +L1EC4: JP L1B4D + +CMDGOSUB: CALL L1AAF + CALL L17F6 +L1ECD: CALL L1C32 + CALL L1D60 + EXX + LD HL,05055H + LD A,(HL) + CP 00FH + JP Z,GOSUBERR + INC (HL) + DEC HL + DEC HL + LD DE,(04E9AH) + DEC DE + LD BC,00007H + LDDR + INC DE + LD (04E9AH),DE + LD C,007H + ADD HL,BC + LD (HL),000H + EXX + JP L1B4D + +CMDRETURN: CALL L1AAF + LD HL,05055H + XOR A + CP (HL) + JP Z,RETGOSBERR + DEC (HL) +L1F04: LD HL,05053H + LD A,(HL) + OR A + JR Z,L1F1A ; (+00fH) + DEC (HL) + INC HL + DEC (HL) + LD HL,(04E98H) + LD BC,00013H + ADD HL,BC + LD (04E98H),HL + JR L1F04 ; (-016H) + +L1F1A: LD HL,(04E9AH) + LD DE,0504DH + LD BC,00007H + LDIR + LD (04E9AH),HL + JP L1B35 + +CMDFOR: CALL L267F + CALL MATCHCHR + DB 03DH ; = + PUSH DE + CALL L1FB7 + POP HL + LD (05040H),HL + EX DE,HL + CALL L24BD + CALL L1936 + CALL L17A0 + SBC A,(HL) + CALL L1FB7 + LD DE,05048H + CALL L1936 + CALL L1792 + SBC A,A + LD E,H + RRA + CALL L1FB7 + LD HL,(04E94H) + JR L1F5F ; (+003H) + + LD HL,L2A88 +L1F5F: LD DE,05042H + LD A,(HL) + LD (05047H),A + LD BC,00005H + LDIR + LD HL,(04E98H) + LD DE,(05040H) + LD A,(05053H) + INC A +L1F76: DEC A + JR Z,L1F98 ; (+01fH) + EX AF,AF' + LD A,(HL) + SUB E + LD B,A + INC HL + LD A,(HL) + SUB D + OR B + LD BC,PRNT + ADD HL,BC + JR Z,L1F8A ; (+003H) + EX AF,AF' + JR L1F76 ; (-014H) + +L1F8A: LD (04E98H),HL + EX AF,AF' + DEC A + LD HL,05053H + LD B,(HL) + LD (HL),A + SUB B + INC HL + ADD A,(HL) + LD (HL),A +L1F98: LD HL,05054H + LD A,(HL) + CP 00FH + JP Z,FORNEXTERR + INC (HL) + DEC HL + INC (HL) + DEC HL + LD DE,(04E98H) + LD BC,00013H + DEC DE + LDDR + INC DE + EX DE,HL + LD (04E98H),HL + JP L1B35 + +L1FB7: CALL L2333 + LD (05051H),HL + JP L1926 + +CMDNEXT: LD A,(05053H) + OR A +L1FC4: JP Z,NEXTFORERR + CALL L2640 + LD (05051H),HL + LD HL,(04E98H) + CALL NC,L2039 +L1FD3: LD A,E + SUB (HL) + INC HL + LD B,A + LD A,D + SUB (HL) + OR B + JR Z,L1FF1 ; (+015H) + EXX + LD HL,05053H + LD A,(HL) + DEC A + JR Z,L1FC4 ; (-020H) + LD (HL),A + INC HL + DEC (HL) + EXX + LD BC,PRNT + ADD HL,BC + LD (04E98H),HL + JR L1FD3 ; (-01eH) + +L1FF1: INC HL + CALL L24BD + PUSH DE + PUSH HL + CALL L3405 + POP HL + POP DE + LD BC,00005H + ADD HL,BC +L2000: LD A,(HL) + INC HL + PUSH HL + OR A + JP P,L201B + EX DE,HL + CALL L3A66 + POP HL + LD BC,00005H + JR C,L2025 ; (+014H) +L2011: ADD HL,BC + LD DE,0504DH + INC C + LDIR + JP L1B35 + +L201B: CALL L3A66 + POP HL + LD BC,00005H + CCF + JR C,L2011 ; (-014H) +L2025: LD C,00BH + ADD HL,BC + LD (04E98H),HL + LD HL,05053H + DEC (HL) + INC HL + DEC (HL) + CALL L1792 + INC L + DEC (HL) + DEC DE + JR CMDNEXT ; (-079H) + +L2039: LD E,(HL) + INC HL + LD D,(HL) + DEC HL + RET + +CMDON: CALL L1AAF + CALL L2333 + CALL L1926 + CALL L1A4E + DB 04CH + DB 020H + CALL MATCHCHR + DB 080H + SUB 08DH + CP 002H + JP NC,SYNTAXERR + EX AF,AF' + INC HL + LD A,E + OR A + JR Z,L2061 ; (+004H) + LD A,D + OR A + JR Z,L206F ; (+00eH) +L2061: JP CMDREMDATA + +L2064: CALL L193B + JP Z,L1B3B + CP ',' + INC HL + JR NZ,L2064 ; (-00bH) +L206F: DEC E + JR NZ,L2064 ; (-00eH) + CALL L17F6 + CALL L174F + EX AF,AF' + OR A + JP NZ,L1ECD + JP L1EA9 + +CMDDIM: CALL L267F + LD BC,MONIT + CP 024H + JR NZ,L208C ; (+002H) + INC HL + INC B +L208C: CALL MATCHCHR + DB 028H + CALL L2107 + JR NZ,L20E5 ; (+050H) + PUSH HL + LD HL,(L2105) + LD E,H + LD D,A + LD H,A + INC HL + INC DE + CALL L17AF + CP D + INC DE + LD A,(L2104) + OR A + POP HL + PUSH DE + PUSH HL + LD HL,00002H + JR NZ,L20B1 ; (+002H) + LD L,005H +L20B1: CALL L17AF + CP D + INC DE + LD HL,00004H + ADD HL,DE + JP C,MEMERR + LD B,H + LD C,L + POP DE + CALL L19C0 + LD HL,(L18D8) + EX DE,HL + LD (HL),E + INC HL + LD (HL),D + INC HL + LD DE,(02105H) + LD (HL),E + INC HL + LD (HL),D + INC HL + POP BC + LD A,(L2104) + OR A + JR Z,L20F0 ; (+016H) +L20DA: LD (HL),000H + INC HL + LD (HL),00DH + INC HL + DEC BC + LD A,B + OR C + JR NZ,L20DA ; (-00bH) +L20E5: LD HL,(L2102) + CALL EXECNOTCHR + DB ',' + DW L1B38 + JR CMDDIM ; (-070H) + +L20F0: EX DE,HL +L20F1: PUSH BC + LD HL,L2A8D + LD BC,00005H + LDIR + POP BC + DEC BC + LD A,B + OR C + JR NZ,L20F1 ; (-00fH) + JR L20E5 ; (-01dH) + +L2102: XOR (HL) + LD H,C +L2104: DB 001H +L2105: DB 00BH + DB 001H +L2107: PUSH DE + PUSH BC + CALL GETNUM + POP BC + LD A,(HL) + CP ',' + CALL Z,L2185 + CALL MATCHCHR + DB 029H + LD (L2102),HL + POP HL + LD (L18D8),HL + EX DE,HL + LD (L2105),HL + LD A,B + LD (L2104),A + LD HL,04E86H + LD DE,LETNL + OR A + JR Z,L2130 ; (+001H) + ADD HL,DE +L2130: LD A,C + LD E,002H + OR A + JR NZ,L2137 ; (+001H) + ADD HL,DE +L2137: LD E,(HL) + INC HL + LD D,(HL) + EX DE,HL +L213B: CALL L18CE + LD L,(HL) + LD HL,L2E28 + LD E,(HL) + INC HL + PUSH HL + LD L,(HL) + LD D,000H + LD H,D + INC HL + INC DE + CALL L17CF + LD A,(L2104) + OR A + JR NZ,L215F ; (+00bH) + LD HL,00005H + CALL L17CF + POP HL + ADD HL,DE + INC HL + JR L213B ; (-024H) + +L215F: POP HL + INC HL + LD B,000H +L2163: LD C,(HL) + INC HL + INC HL + ADD HL,BC + DEC DE + LD A,D + OR E + JR NZ,L2163 ; (-009H) + JR L213B ; (-033H) + + XOR A + RET + + LD C,(HL) + INC HL + LD B,(HL) + INC HL + LD DE,(02105H) + LD A,B + CP D + JR C,L217E ; (+002H) + LD A,C + CP E +L217E: JP C,ILDATERR + LD A,001H + OR A + RET + +L2185: INC C + PUSH BC + PUSH DE + INC HL + CALL GETNUM + LD A,E + POP DE + LD D,A + POP BC + RET + +CMDPOKE: CALL L299F + CALL L2E94 + PUSH DE + CALL L299F + LD A,D + OR A + JP NZ,ILDATERR + EX (SP),HL + LD (HL),E + POP HL +L21A3: JP L1B38 + +CMDCLS: PUSH HL + CALL L1AF1 + POP HL + JR L21A3 ; (-00aH) + +CMDIF: CALL L1AAF + CALL EXECNOTCHR + DB 0AEH + DW L21D3 + CALL L2DBA + JP Z,SYNTAXERR + LD B,A + CALL L2712 + PUSH HL + LD A,B + CALL L2DC1 + RST 038H + RST 038H + LD BC,00008H + ADD HL,BC + LD A,(HL) + POP HL + OR A + JR NZ,L21E3 ; (+013H) +L21D0: JP L1B45 + +L21D3: CALL L2293 + CALL L1926 + LD IX,(04E94H) + BIT 7,(IX+004H) + JR Z,L21D0 ; (-013H) +L21E3: CALL MATCHCHR + ADD A,B + SUB 08CH + INC HL + CP 002H + JP Z,CMDGOSUB +L21EF: JP NC,SYNTAXERR + OR A + CALL Z,L21F9 + JP CMDGOTO + +L21F9: CALL L176A + RET C + POP BC + JP L1B7F + +CMDDEFFN: CALL SKIPSPACE + SUB 041H + CP 01AH + JR NC,L21EF ; (-01bH) + LD E,(HL) + INC HL + CALL MATCHCHR + DB 028H + SUB 041H + CP 01AH + JR NC,L21EF ; (-027H) + LD D,(HL) + INC HL + CALL MATCHCHR + DB 029H + CALL MATCHCHR + DB 03DH + PUSH HL + CALL L174F + POP BC + PUSH HL + XOR A + SBC HL,BC + PUSH BC + PUSH HL + LD HL,(04E84H) +L222E: LD A,(HL) + CP E + JR Z,L224D ; (+01bH) + OR A + JR Z,L223C ; (+007H) + INC HL + INC HL + CALL L1745 + JR L222E ; (-00eH) + +L223C: EX DE,HL + LD BC,GETL + CALL L19C0 + EX DE,HL + LD (HL),E + INC HL + LD (HL),D + INC HL + LD (HL),00DH + EX DE,HL + JR L225D ; (+010H) + +L224D: INC HL + LD (HL),D + INC HL + PUSH HL + CALL L174F + POP DE + XOR A + SBC HL,DE + LD B,H + LD C,L + CALL L19E7 +L225D: POP BC + POP HL + CALL L18A2 + CALL L19C3 + POP HL +L2266: JP L1B38 + +CMDMUSIC: CALL L193B + JR Z,L2266 ; (-008H) + CALL L2333 + CALL L193B + JR Z,L2277 ; (+001H) + INC HL +L2277: CALL L190B + CALL MELDY + JP C,L1438 + JR CMDMUSIC ; (-019H) + +CMDTEMPO: CALL GETNUM + LD A,E + DEC A + CP 007H + JP NC,ILDATERR + INC A + CALL XTEMP + JR L2266 ; (-02cH) + +L2292: INC HL +L2293: CALL L2333 +L2296: CP 03DH + JR NZ,L229C ; (+002H) + LD A,089H +L229C: CP 083H + RET C + CP 090H + RET NC + SUB 083H + EX AF,AF' + LD A,D + OR A + JR NZ,L22B4 ; (+00bH) + EX AF,AF' + EXX + LD BC,L2296 + LD DE,L2332 + JP L23BB + +L22B4: EX AF,AF' + PUSH DE + PUSH AF + CALL L2332 + POP AF + EX AF,AF' + EX (SP),HL + CALL L190B + LD A,C + PUSH AF + EX DE,HL + CALL L190B + POP AF + LD B,A + CALL L2305 + LD HL,L22F3 + PUSH HL + LD HL,L22E1 + EX AF,AF' + LD C,A + LD B,000H + ADD HL,BC + ADD HL,BC + LD A,(HL) + INC HL + LD H,(HL) + LD L,A + EX AF,AF' + OR A + LD A,001H + JP (HL) + +L22E1: DW L231B + DW L231B + DW L231E + DW L231E + DW L2322 + DW L2322 + DW L2325 + DW L2328 + DW L232F +L22F3: LD DE,L2A92 + OR A + JR NZ,L22FC ; (+003H) + LD DE,L2A8D +L22FC: CALL L192C + POP HL + CALL L23FA + JR L2296 ; (-06fH) + +L2305: LD A,B + OR C + RET Z + LD A,C + CP B + JR NZ,L2315 ; (+009H) +L230C: LD A,(DE) + SUB (HL) + JR NZ,L2315 ; (+005H) + INC HL + INC DE + DJNZ L230C ; (-008H) + RET + +L2315: LD A,001H + DB 0D0H + LD A,080H + RET + +L231B: RET NZ + XOR A + RET + +L231E: RET Z + RET M + XOR A + RET + +L2322: RET P + XOR A + RET + +L2325: RET Z + XOR A + RET + +L2328: LD A,000H + RET Z + RET M + LD A,001H + RET + +L232F: RET M + XOR A + RET + +L2332: INC HL +L2333: LD A,(HL) + CP 020H + JR Z,L2332 ; (-006H) + CP '+' + JR Z,L2348 ; (+00cH) + CP '-' + JR NZ,L2349 ; (+009H) + CALL L2392 + CALL L2410 + JR L234C ; (+004H) + +L2348: INC HL +L2349: CALL L2393 +L234C: CP '+' + JR Z,L2356 ; (+006H) + CP '-' + RET NZ + LD A,00DH + DB 001H ; Create a dummy LD BC, to preserve A +L2356: LD A,00CH + EX AF,AF' + LD A,D + OR A + JR NZ,L2367 ; (+00aH) + EX AF,AF' + EXX + LD BC,L234C + LD DE,L2392 + JR L23BB ; (+054H) + +L2367: EX AF,AF' + CP 00CH + JP NZ,SYNTAXERR + PUSH DE + CALL L2392 + EX (SP),HL + PUSH DE + CALL L190B + LD A,C + PUSH AF + EX DE,HL + CALL L190B + POP AF + ADD A,C + JP C,STRLENERR + PUSH AF + EX DE,HL + CALL L18A2 + CALL L19C3 + POP AF + LD C,A + DEC DE + LD (DE),A + POP DE + POP HL + LD A,(HL) + JR L234C ; (-046H) + +L2392: INC HL +L2393: CALL L23AC +L2396: CP '/' + JR Z,L23A0 ; (+006H) + CP 02AH + RET NZ + LD A,00EH + DB 001H +L23A0: LD A,00FH + EXX + LD BC,L2396 + LD DE,L23AB + JR L23BB ; (+010H) + +L23AB: INC HL +L23AC: CALL L2402 +L23AF: CP 05EH + RET NZ + LD A,010H + EXX + LD BC,L23AF + LD DE,L2401 +L23BB: PUSH BC + LD HL,(04E94H) + LD BC,00005H + ADD HL,BC + LD (04E94H),HL + LD HL,L2691 + LD C,A + ADD HL,BC + ADD HL,BC + LD C,(HL) + INC HL + LD B,(HL) + PUSH BC + LD HL,L23DC + PUSH HL + PUSH DE + EXX + LD A,D + OR A + RET Z +L23D9: JP DATMISERR + +L23DC: LD A,D + OR A + JR NZ,L23D9 ; (-007H) + POP IY + PUSH HL + LD HL,(04E94H) + LD BC,0FFFBH + LD E,L + LD D,H + ADD HL,BC + LD (04E94H),HL + EX DE,HL + LD BC,L23F9 + PUSH BC + JP (IY) + +L23F6: CALL L192C +L23F9: POP HL +L23FA: LD BC,00005H + LD D,B + LD E,B + LD A,(HL) + RET + +L2401: INC HL +L2402: CALL SKIPSPACE + CP '+' + JR Z,L2425 ; (+01cH) + CP '-' + JR NZ,L2426 ; (+019H) + CALL L2425 +L2410: EXX + LD HL,(04E94H) + PUSH HL + LD BC,00004H + ADD HL,BC + LD A,(HL) + POP HL + OR A + JR Z,L2422 ; (+004H) + LD A,(HL) + ADD A,080H + LD (HL),A +L2422: EXX + LD A,(HL) + RET + +L2425: INC HL +L2426: CALL L2640 + JR NC,L2447 ; (+01cH) + LD A,046H + CP E + JR NZ,L2436 ; (+006H) + LD A,04EH + CP D + JP Z,L24F0 +L2436: CALL L24B2 + PUSH HL + LD A,B + OR A + JR Z,L23F6 ; (-048H) + EX DE,HL + LD B,000H + CALL L1A0E + POP HL + LD A,(HL) + RET + +L2447: CP 080H + JR C,L2481 ; (+036H) + CP 0FFH + JR Z,L24A8 ; (+059H) + CP 0C0H + JR C,L2472 ; (+01fH) + SUB 0C0H + PUSH AF + CALL L2332 + CALL L1926 + CALL MATCHCHR + DB 029H + POP AF + PUSH HL + LD HL,L23F9 + PUSH HL + LD HL,(04E94H) + EX DE,HL + LD HL,L26DB + PUSH HL + LD C,A + JP L1B95 + +L2472: SUB 0A0H + JR C,L248F ; (+019H) + LD C,A + CALL INCSKIPSPCE + PUSH HL + LD HL,L26B3 + JP L1B95 + +L2481: CP 028H + JR Z,L2492 ; (+00dH) + CP 022H + JP Z,L19F3 + CALL L1A97 + JR Z,L249E ; (+00fH) +L248F: JP SYNTAXERR + +L2492: LD BC,MONIT + CALL L185F + CALL L2292 + JP L2712 + +L249E: LD DE,(04E94H) + CALL L3670 + JP L23FA + +L24A8: CALL INCSKIPSPCE + PUSH HL + LD DE,L2A97 + JP L23F6 + +L24B2: LD A,(HL) + CP 024H + JP Z,L256F + CP 028H + JP Z,L25FE +L24BD: PUSH HL + LD HL,(04E8AH) + LD BC,00005H +L24C4: LD A,(HL) + CP E + INC HL + JR NZ,L24CD ; (+004H) + LD A,(HL) + CP D + JR Z,L24EB ; (+01eH) +L24CD: OR A + JR Z,L24D4 ; (+004H) + INC HL + ADD HL,BC + JR L24C4 ; (-010H) + +L24D4: LD C,007H + DEC HL + PUSH DE + EX DE,HL + LD HL,L2A8D + DEC HL + DEC HL + CALL L18A2 + CALL L19C3 + EX DE,HL + POP DE + LD (HL),E + INC HL + LD (HL),D + LD C,005H +L24EB: INC HL + EX DE,HL + POP HL + LD A,(HL) + RET + +L24F0: LD A,(HL) + SUB 041H + CP 01AH + JP NC,SYNTAXERR + LD E,(HL) + INC HL + CALL MATCHCHR + DB 028H + PUSH DE + CALL L2333 + CALL L1926 + CALL L2712 + POP DE + PUSH HL + LD HL,(04E84H) +L250D: LD A,(HL) + OR A + JP Z,UNDEFFNERR + CP E + JR Z,L251C ; (+007H) + INC HL + INC HL + CALL L1745 + JR L250D ; (-00fH) + +L251C: INC HL + LD E,(HL) + INC HL + PUSH HL + PUSH DE + LD D,020H + CALL L24BD + POP HL + PUSH DE + PUSH HL + LD HL,(04E96H) + LD DE,04E9CH + CALL L1773 + JP Z,FUNCERR + LD BC,0FFFAH + ADD HL,BC + LD (04E96H),HL + POP DE + LD (HL),E + INC HL + POP DE + LD BC,00005H + EX DE,HL + CALL L18A5 + EX DE,HL + LD HL,(04E94H) + CALL L18A5 + POP HL + CALL L2333 + CALL L1926 + CALL L193B + JP NZ,SYNTAXERR + LD HL,(04E96H) + LD E,(HL) + INC HL + LD D,020H + CALL L24BD + CALL L18A5 + ADD HL,BC + LD (04E96H),HL + JP L23F9 + +L256F: CALL INCSKIPSPCE + CP 028H + JP Z,L25F9 + PUSH HL + LD HL,04954H + XOR A + SBC HL,DE + JR Z,L25B2 ; (+032H) + EX DE,HL + LD (L18D8),HL + LD HL,(04E90H) +L2587: CALL L18CE + SUB (HL) + DEC H + JR Z,L25AA ; (+01cH) + LD B,000H + LD C,(HL) + ADD HL,BC + INC HL + INC HL + JR L2587 ; (-00fH) + + LD BC,00004H + EX DE,HL + LD HL,L18D8 + CALL L18A2 + CALL L19C3 + EX DE,HL + ADD HL,BC + DEC HL + LD (HL),00DH + DEC HL + LD (HL),B +L25AA: LD C,(HL) + INC HL + LD B,001H + EX DE,HL + POP HL + LD A,(HL) + RET + +L25B2: CALL TIMRD + EX DE,HL + OR A + JR Z,L25BB ; (+002H) + LD A,00CH +L25BB: EXX + LD HL,L1DF5 + PUSH HL + EXX + LD DE,0F1F0H + CALL L25D9 + LD DE,0FFC4H + CALL L25D8 + LD A,L + CALL L25E2 + POP DE + LD BC,00106H + POP HL + LD A,(HL) + RET + +L25D8: XOR A +L25D9: ADD HL,DE + JR NC,L25DF ; (+003H) + INC A + JR L25D9 ; (-006H) + +L25DF: OR A + SBC HL,DE +L25E2: LD BC,L30F6 +L25E5: ADD A,C + JR NC,L25EB ; (+003H) + INC B + JR L25E5 ; (-006H) + +L25EB: ADD A,03AH + EX AF,AF' + LD A,B + EXX + LD (HL),A + INC HL + EX AF,AF' + LD (HL),A + INC HL + LD (HL),00DH + EXX + RET + +L25F9: LD BC,00100H + JR L2601 ; (+003H) + +L25FE: LD BC,MONIT +L2601: INC HL + CALL L2107 + JP Z,ILDATERR + PUSH HL + LD L,C + LD H,000H + LD C,E + LD E,D + LD B,H + LD D,H + PUSH BC + INC HL + CALL L17CF + POP HL + ADD HL,DE + EX DE,HL + LD A,(L2104) + OR A + JR NZ,L262B ; (+00dH) + LD HL,00005H + CALL L17CF + POP HL + ADD HL,DE + LD BC,00005H + JR L263A ; (+00fH) + +L262B: POP HL + LD B,000H +L262E: LD C,(HL) + INC HL + LD A,D + OR E + JR Z,L2639 ; (+005H) + ADD HL,BC + INC HL + DEC DE + JR L262E ; (-00bH) + +L2639: INC B +L263A: EX DE,HL + LD HL,(L2102) + LD A,(HL) + RET + +L2640: CALL SKIPSPACE + LD BC,L411A + SUB B + CP C + LD A,(HL) + RET NC + LD E,A + LD D,020H +L264D: INC HL + LD A,(HL) + CP D + JR Z,L264D ; (-005H) + SUB B + CP C + JR C,L265A ; (+004H) + SUB 0EFH + CP 00AH +L265A: LD A,(HL) + CCF + RET C + LD D,A + CP 04EH + JR NZ,L2667 ; (+005H) + LD A,046H + CP E + JR Z,L267A ; (+013H) +L2667: INC HL + LD A,(HL) + CP 020H + JR Z,L2667 ; (-006H) + SUB B + CP C + JR C,L2667 ; (-00aH) + SUB 0EFH + CP 00AH + JR C,L2667 ; (-010H) +L2677: LD A,(HL) + SCF + RET + +L267A: CALL INCSKIPSPCE + SCF + RET + +L267F: CALL L2640 + JR NC,L268E ; (+00aH) + LD A,046H + CP E + JR NZ,L268C ; (+003H) + LD A,04EH + CP D +L268C: JR NZ,L2677 ; (-017H) +L268E: JP SYNTAXERR + +L2691: DW L3B62 + DW L3B62 + DW L3B87 + DW L3B87 + DW L3B8B + DW L3B8B + DW L3B7F + DW L3B73 + DW L3B77 + DW SYNTAXERR + DW SYNTAXERR + DW SYNTAXERR + DW L3405 + DW L3403 + DW L3500 + DW L35D0 + DW L4159 +L26B3: DW L26F3 + DW L270F + DW L273E + DW L2765 + DW L2772 + DW L277F + DW L27B4 + DW L279A + DW L27F9 + DW L2801 + DW L2804 + DW L2895 + DW SYNTAXERR + DW SYNTAXERR + DW SYNTAXERR + DW L2824 + DW SYNTAXERR + DW L2841 + DW L287C + DW SYNTAXERR +L26DB: DW L3B98 + DW L3C16 + DW L3D05 + DW L3D14 + DW L4076 + DW L3E03 + DW L3A86 + DW L4064 + DW L3F35 + DW L289D + DW L28A2 + DW L3D3F +L26F3: DB 0CDH + DB 033H + DB 023H + DB 0CDH + DB 094H + DB 02EH +L26F9: PUSH DE + CALL GETNUM + CALL L2712 + EX (SP),HL + PUSH HL + EX DE,HL + CALL L190B + LD A,C + SUB L + JR C,L273A ; (+030H) + PUSH HL + LD C,A + ADD HL,DE + JR L2732 ; (+023H) + +L270F: DB 0CDH +L2710: DB 017H + DB 027H +L2712: CALL MATCHCHR + DB 029H + RET + + CALL L2333 + CALL L2E94 + PUSH DE + CALL GETNUM + JR L2724 ; (+001H) + +L2723: PUSH BC +L2724: EX (SP),HL + PUSH HL + EX DE,HL + CALL L190B + LD A,C + SUB L + JR C,L273A ; (+00cH) + PUSH HL + LD C,A + LD L,E + LD H,D +L2732: EX DE,HL + CALL L19E7 + POP BC + DEC HL + LD (HL),C + INC HL +L273A: POP DE + POP HL + LD A,(HL) + RET + +L273E: CALL L2333 + CALL L2E94 + PUSH DE + PUSH BC + CALL GETNUM + POP BC + LD A,E + OR A + JP Z,ILDATERR + LD A,C + SUB E + JR NC,L2755 ; (+002H) + LD A,PRTD +L2755: INC A + LD E,A + POP BC + CALL L2723 + CALL L2E94 + CP '-' + JR NZ,L26F9 ; (-069H) + INC HL + JR L2712 ; (-053H) + +L2765: CALL L2333 + CALL L190B + CALL L2712 + PUSH HL + LD A,C + JR L27C4 ; (+052H) + +L2772: CALL L299F + CALL L2712 + LD A,E + LD BC,00001H + JP L280F + +L277F: CALL L2333 + CALL L1926 + CALL L2712 + PUSH HL + LD HL,(04E94H) + LD DE,04AB3H + PUSH DE + CALL L38BB + POP HL + CALL L19F3 + POP HL + LD A,(HL) + RET + +L279A: CALL L2333 + CALL L190B + CALL L2712 + PUSH HL + EX DE,HL + JR L27AA ; (+003H) + + LD HL,L27B2 +L27AA: CALL L1A75 + AND A + DAA + POP HL + LD A,(HL) + RET + +L27B2: DB 030H + DB 00DH +L27B4: CALL L2333 + CALL L190B + CALL L2712 + LD A,C + OR A + JP Z,ILDATERR +L27C2: LD A,(DE) + PUSH HL +L27C4: LD E,A + LD D,000H +L27C7: CALL L27CD + POP HL + LD A,(HL) + RET + +L27CD: LD B,080H + LD A,D + OR E + JR Z,L27E7 ; (+014H) + LD B,0D0H + LD A,D + OR A + JR NZ,L27DE ; (+005H) + LD B,0C8H + LD D,E + LD E,000H +L27DE: EX DE,HL +L27DF: BIT 7,H + JR NZ,L27E6 ; (+003H) + ADD HL,HL + DJNZ L27DF ; (-007H) +L27E6: EX DE,HL +L27E7: LD HL,(04E94H) + LD (HL),B + INC HL + CALL L19BA + LD (HL),E + INC HL + LD (HL),D + LD BC,00005H + LD DE,MONIT + RET + +L27F9: CALL L299F + CALL L2712 + JR L27C2 ; (-03fH) + +L2801: JP SYNTAXERR + +L2804: CALL GETNUM + CALL L2712 + LD A,020H + LD C,E + LD B,000H +L280F: PUSH HL + PUSH AF + CALL L1A1E + POP AF + PUSH DE + PUSH BC + LD B,C + INC B + JR L281D ; (+002H) + +L281B: LD (HL),A + INC HL +L281D: DJNZ L281B ; (-004H) + POP BC + POP DE + POP HL + LD A,(HL) + RET + +L2824: CALL L2333 + CALL L2E94 + PUSH DE + CALL GETNUM + CALL L2712 + EX (SP),HL + PUSH DE + EX DE,HL + CALL L190B + LD A,C + OR A + JP Z,ILDATERR + LD A,(DE) + POP BC + POP HL + JR L280F ; (-032H) + +L2841: CALL L1E69 + LD A,E + CP 028H +L2847: JP NC,ILDATERR + PUSH AF + CALL MATCHCHR + DB ',' + CALL GETNUM + CALL MATCHCHR + DB 029H + LD A,E + CP 019H + JR NC,L2847 ; (-014H) + POP AF + LD C,A + LD B,E + INC B + PUSH HL + LD HL,(PAGETP) + LD D,000H + LD E,028H + XOR A + SBC HL,DE +L286A: ADD HL,DE + DJNZ L286A ; (-003H) + ADD HL,BC + CALL L2878 + POP HL + LD BC,00001H + JP L280F + +L2878: LD A,(HL) + JP ?DACN + +L287C: CALL EXECNOTCHR + DB 056H + DW L288C + LD A,(01172H) +L2885: LD D,000H + LD E,A + PUSH HL + JP L27C7 + +L288C: CALL MATCHCHR + DB 048H + LD A,(DSPXY) + JR L2885 ; (-010H) + +L2895: PUSH HL + CALL L184A + EX DE,HL + JP L27C7 + +L289D: LD A,(DE) + OR 080H + LD (DE),A + RET + +L28A2: LD A,(DE) + LD DE,L192C + PUSH DE + LD DE,L2A92 + OR A + RET P + LD DE,L2A88 + CP 080H + RET NZ + LD DE,L2A8D + RET + +CMDMON: JP MONIT + +CMDCURSOR: CALL GETNUM + LD A,E + CP 028H +L28BF: JP NC,ILDATERR + PUSH AF + CALL MATCHCHR + DB ',' + CALL GETNUM + LD A,E + CP 019H + JR NC,L28BF ; (-010H) + PUSH HL + LD HL,(DSPXY) + LD A,E + SUB H + LD H,A + LD A,(MGPNT) + JP M,L28F8 + ADD A,H + SUB 032H + JR NC,L28E3 ; (+002H) + ADD A,032H +L28E3: LD (MGPNT),A + EX DE,HL + LD H,L + POP DE + POP AF + LD L,A + LD (DSPXY),HL + NOP + NOP + NOP + LD (DPRNT),A + EX DE,HL + JP L1B38 + +L28F8: ADD A,H + JP P,L28E3 + ADD A,032H + JR L28E3 ; (-01dH) + + NOP + NOP +CMDGET: CALL L267F + CALL L24B2 + LD (05051H),HL + CALL L1D9A + CALL GETKY + PUSH AF + LD A,(04905H) + OR A + JR Z,L292D ; (+015H) + POP AF + LD BC,MONIT + OR A + JR Z,L2920 ; (+001H) + INC BC +L2920: CALL L280F +L2923: CALL L1D95 + CALL L1DA5 + DW DATMISERR + JR L2998 ; (+06bH) + +L292D: POP AF + LD DE,MONIT + CALL L2939 +L2934: CALL L27CD + JR L2923 ; (-016H) + +L2939: OR A + RET Z + SUB 030H + CP 00AH + RET NC + LD E,A + RET + +CMDUSRN: CALL L299F + PUSH DE + CALL EXECNOTCHR + DB ',' + DW L2959 + CALL L267F + CALL L24B2 + LD A,B + OR A + JP Z,DATMISERR + LD B,000H +L2959: CALL L2712 + LD (05051H),HL + CALL L13FA + LD HL,L1B35 + EX (SP),HL + JP (HL) + +CMDLIMIT: LD DE,L299B + CALL L14C7 + JR NZ,L2977 ; (+008H) + LD (05051H),HL + LD HL,(04908H) + JR L2994 ; (+01dH) + +L2977: CALL L299F + LD (05051H),HL + LD HL,(04908H) + CALL L1773 + JP C,ILDATERR + LD HL,(04E94H) + LD BC,000C8H + ADD HL,BC + CALL L1773 + JP NC,BADWRERR + EX DE,HL +L2994: LD (0490AH),HL + LD SP,HL +L2998: JP L1B35 + +L299B: LD C,L + LD B,C + RET C + NOP +L299F: CALL EXECNOTCHR + DB 024H + DW L29CB + LD DE,MONIT +L29A8: CALL L176A + JR NC,L29C2 ; (+015H) +L29AD: AND 00FH + LD C,A + LD B,000H + LD A,D + AND 0F0H + JP NZ,ILDATERR + EX DE,HL + ADD HL,HL + ADD HL,HL + ADD HL,HL + ADD HL,HL + ADD HL,BC + EX DE,HL + INC HL + JR L29A8 ; (-01aH) + +L29C2: SUB 041H + CP 006H + RET NC + ADD A,00AH + JR L29AD ; (-01eH) + +L29CB: JP L1E69 + +CMDCONT: CALL L1AA7 + LD A,(L1463) + OR A + JP Z,CONTERR + PUSH AF + XOR A + CALL L29EB + POP AF + LD HL,(05051H) + OR A + JP M,L2C56 + DEC A + JR Z,L2998 ; (-050H) + JP L1B5F + +L29EB: LD (L1463),A + LD DE,L1464 + LD BC,LETNL + LD HL,0504DH + OR A + JR NZ,L29FB ; (+001H) + EX DE,HL +L29FB: LDIR + RET + +CMDINP: CALL GETNUM + CALL L2E94 + LD A,E + LD (L2A15),A + CALL L267F + CALL L24B2 + LD (05051H),HL + CALL L1D9A + DB 0DBH +L2A15: DB 0FFH + LD E,A + LD D,000H + JP L2934 + +CMDOUT: CALL GETNUM + CALL L2E94 + LD A,E + LD (L2A2B),A + CALL GETNUM + LD A,E + DB 0D3H +L2A2B: DB 0FFH +L2A2C: JP L1B38 + +CMDAUTO: CALL L1AA7 + CALL L193B + JR Z,L2A5F ; (+028H) + CALL EXECNOTCHR + DB ',' + DW L2A3F + JR L2A71 ; (+032H) + +L2A3F: CALL L2A7A + LD (02A84H),DE + CALL L193B + JR Z,L2A6C ; (+021H) + CALL EXECNOTCHR + DB ',' + DW SYNTAXERR +L2A51: CALL L2A7A + LD (02A86H),DE +L2A58: LD A,001H + LD (L2A83),A + JR L2A2C ; (-033H) + +L2A5F: LD DE,0000AH + LD (02A84H),DE +L2A66: LD (02A86H),DE + JR L2A58 ; (-014H) + +L2A6C: LD DE,0000AH + JR L2A66 ; (-00bH) + +L2A71: LD DE,0000AH + LD (02A84H),DE + JR L2A51 ; (-029H) + +L2A7A: CALL L1E69 + LD A,D + OR E + RET NZ + JP SYNTAXERR + +L2A83: DB 000H +L2A84: DB 00AH + DB 000H + DB 00AH + DB 000H +L2A88: DB 0C1H + DB 000H + DB 000H + DB 000H + DB 080H +L2A8D: DB 080H + DB 000H + DB 000H + DB 000H + DB 000H +L2A92: DB 041H + DB 000H + DB 000H + DB 000H + DB 080H +L2A97: DB 0C2H + DB 0A1H + DB 0DAH + DB 00FH + DB 0C9H + AND 00FH + ADD A,030H + CP ':' + RET C + ADD A,007H + RET + +CMDSET: LD A,001H + JR L2AAB ; (+001H) + +CMDRESET: XOR A +L2AAB: PUSH AF + CALL GETNUM + PUSH DE + CALL MATCHCHR + DB ',' + CALL GETNUM + LD (05051H),HL + LD A,E +L2ABB: SUB 032H + JR NC,L2ABB ; (-004H) + ADD A,032H + LD E,A + POP BC + LD A,C +L2AC4: SUB 050H + JR NC,L2AC4 ; (-004H) + ADD A,050H + LD C,A + XOR A + SRL C + JR NC,L2ADE ; (+00eH) + SRL E + JR NC,L2AD8 ; (+004H) + ADD A,004H +L2AD6: ADD A,002H +L2AD8: ADD A,001H +L2ADA: ADD A,001H + JR L2AE4 ; (+006H) + +L2ADE: SRL E + JR NC,L2ADA ; (-008H) + JR L2AD6 ; (-00eH) + +L2AE4: PUSH AF + LD HL,(PAGETP) + LD A,028H +L2AEA: ADD HL,DE + DEC A + JR NZ,L2AEA ; (-004H) + ADD HL,BC + RES 3,H + LD A,(HL) + CP 0F0H + JR NC,L2AF8 ; (+002H) + LD A,0F0H +L2AF8: POP BC + LD C,A + POP AF + OR A + LD A,B + JR Z,L2B02 ; (+003H) + OR C + JR L2B04 ; (+002H) + +L2B02: CPL + AND C +L2B04: CP 0F0H + JR NZ,L2B09 ; (+001H) + XOR A +L2B09: LD (HL),A + JP L1B35 + +CMDPRINT: CALL EXECNOTCHR ; Check to see if a stream, ie. /T = Tape is given. The 02FH below is / and the function after is called if it doesnt match /. + DB '/' ; Execute below function IFF first non-space character after PRINT command is not a / + DW L2B18 + CALL L2E9B + JR L2B1E ; (+006H) + +L2B18: CALL L2DBA + CALL L2E94 +L2B1E: CALL L193B + JR NZ,L2B2F ; (+00cH) + LD (05051H),HL +L2B26: LD HL,L2BEF + CALL L2BE3 + JP L1B35 + +L2B2F: CALL EXECNOTCHR + DB 03BH + DW L2B35 +L2B35: LD BC,L2B4D + PUSH BC + CP ',' + RET NZ + INC HL + LD A,(04DD4H) + OR A + RET P + AND 07FH + JP Z,PRNTT + CP 002H + RET NZ + JP L326E + +L2B4D: CALL L193B + LD (05051H),HL + JP NZ,L2B60 + LD A,(04DD4H) + OR A + JP M,L1B35 + JP L2B26 + +L2B60: CP 03BH + JR Z,L2B66 ; (+002H) + CP ',' +L2B66: JP Z,L2B2F + CALL EXECNOTCHR + DB 0A9H + DW L2B9A + CALL GETNUM + CALL MATCHCHR + DB 029H + LD D,013H + LD A,(DPRNT) + LD B,A + LD A,(04DD4H) + CP 080H + JR Z,L2B8D ; (+00aH) + LD D,020H + CP 082H + JR NZ,L2BBD ; (+034H) + LD A,(L32D3) + LD B,A +L2B8D: LD A,E + SUB B + JR C,L2B2F ; (-062H) + LD C,A + LD B,000H + LD A,D + CALL L280F + JR L2B9D ; (+003H) + +L2B9A: CALL L2293 +L2B9D: PUSH HL + LD HL,LINEBUFR + LD A,D + OR A + CALL Z,L2BC0 + CALL NZ,L2BD0 + LD HL,L2BF7 + CALL L2BE3 + LD HL,L2B1E + EX (SP),HL + CALL L193B + RET Z + CP 03BH + RET Z + CP ',' + RET Z +L2BBD: JP SYNTAXERR + +L2BC0: PUSH AF + PUSH HL + EX DE,HL + LD HL,(04E94H) + CALL L38BB + POP HL + CALL L18FD + JP L2BD9 + +L2BD0: PUSH AF + CALL L190B + EX DE,HL + CALL L18A5 + EX DE,HL +L2BD9: DEC HL + LD (HL),C + INC HL + PUSH HL + ADD HL,BC + LD (HL),00DH + POP DE + POP AF +L2BE2: RET + +L2BE3: LD A,(04DD4H) + ADD A,080H + CALL L13FA + CALL L2E12 + JP (HL) + +L2BEF: LD B,000H + XOR E + INC DE + AND A + LD SP,L2BE2 +L2BF7: DEC D + NOP + XOR E + INC DE + OR H + LD SP,L3064 +CMDINPUT: CALL L1AAF + CALL EXECNOTCHR + DB '/' + DW L2C0E + CALL L2E9B + JP L2C62 + +L2C0E: CALL L2DBA + CALL SKIPSPACE + CP 022H + LD DE,L2C5F + JR NZ,L2C25 ; (+00aH) + CALL L2333 + CALL MATCHCHR + DB 03BH + CALL L190B +L2C25: LD (05051H),HL +L2C28: CALL MSG + LD A,(DPRNT) + LD B,A + LD L,A + LD H,000H + LD DE,LINEBUFR + ADD HL,DE + LD (L2C8C),HL + CALL GETL + EX DE,HL + LD A,(HL) + CP 01BH + JR NZ,L2C4A ; (+008H) + LD A,080H + CALL L29EB + JP L1438 + +L2C4A: INC B + LD A,00DH +L2C4D: CP (HL) + JR Z,L2C56 ; (+006H) + INC HL + DJNZ L2C4D ; (-006H) + JP L2C8E + +L2C56: CALL NL + LD DE,L2C5F + JP L2C28 + +L2C5F: CCF + JR NZ,L2C6F ; (+00dH) +L2C62: CALL L2E94 + LD (05051H),HL +L2C68: LD DE,LINEBUFR + PUSH DE + LD HL,L2C84 +L2C6F: CALL L2BE3 + POP HL + DEC HL + LD (HL),C + INC HL + LD A,B + OR A + JP NZ,STRLENERR + CALL L1A0E + LD HL,L2C68 + JP L2CC8 + +L2C84: XOR E + INC DE + XOR E + INC DE + XOR E + INC DE + ADC A,A + DB 030H +L2C8C: DB 00FH + DB 049H +L2C8E: LD A,(04DD4H) + CP 081H + JP Z,L2D1D + LD HL,(L2C8C) + CALL L18FD + LD DE,LINEBUFR + PUSH DE + INC BC + LDIR + POP HL + LD (L2C8C),HL + CALL SKIPSPACE + CP 00DH + JP Z,L2C56 + CALL EXECNOTCHR + DB ',' + DW L2CBF + PUSH HL + LD DE,L2D11 + CALL L19F3 + POP HL + JR L2CC2 ; (+003H) + +L2CBF: CALL L19F3 +L2CC2: LD (L2C8C),HL + LD HL,L2C8E +L2CC8: PUSH HL + CALL L1D95 + LD HL,(05051H) + CALL L267F + CALL L24B2 + LD (05051H),HL + CALL L1D9A +L2CDB: CALL L1DA5 + DW L2CF4 + LD HL,(05051H) + CALL L193B + JR NZ,L2CEC ; (+004H) + POP AF + JP L1B35 + +L2CEC: CALL MATCHCHR + DB ',' + LD (05051H),HL + RET + +L2CF4: LD DE,(04902H) + CALL L190B + EX DE,HL + CALL EXECNOTCHR + DB 00DH + DW L2D05 + LD HL,L2D10 +L2D05: CALL L1A75 + OR H + INC DE + CALL L1D95 + JP L2CDB + +L2D10: DB 030H +L2D11: DB 00DH +CMDREAD: LD (05051H),HL + LD A,081H + LD (04DD4H),A + CALL L1AAF +L2D1D: LD A,(05059H) + OR A + CALL Z,L2D43 + LD HL,(0505AH) + CALL L193B + JR NZ,L2D32 ; (+006H) + CALL L2D6B + JP L2D1D + +L2D32: CALL L19F3 + CALL L2E94 + LD (0505AH),HL + LD HL,LINEBUFR + LD (HL),00DH + JP L2CC2 + +L2D43: LD HL,0505CH +L2D46: XOR A + LD (05059H),A +L2D4A: LD A,(HL) + INC HL + OR (HL) + INC HL + JP Z,READDATAERR + INC HL + INC HL +L2D53: CALL EXECNOTCHR + DB 080H + DW L2D68 + CALL EXECNOTCHR + DB 081H + DW L2D68 + LD (0505AH),HL + LD A,001H + LD (05059H),A + RET + +L2D68: CALL L174F +L2D6B: INC HL + CP ':' + JP Z,L2D53 + JP L2D4A + +L2D74: DB 001H +CMDLOAD: CALL EXECNOTCHR + DB '/' + DW L2EDA + CALL MATCHCHR + DB 'T' + JP L2EDA + +CMDSAVE: CALL L1AA7 + CALL EXECNOTCHR + DB '/' + DW L2FE0 + CALL MATCHCHR + DB 'T' + JP L2FE0 + +CMDROPEN: CALL EXECNOTCHR + DB '/' + DW L311E + CALL MATCHCHR + DB 'T' + JP L311E + +CMDWOPEN: CALL EXECNOTCHR + DB '/' + DW L30E5 + CALL MATCHCHR + DB 'T' + JP L30E5 + + NOP +CMDCLOSE: CALL EXECNOTCHR + DB '/' + DW L3171 + CALL MATCHCHR + DB 'T' + JP L3171 + +L2DBA: LD A,080H + LD (04DD4H),A + OR A + RET + +L2DC1: LD HL,04DF2H + LD DE,NL + LD B,00AH +L2DC9: CP (HL) + JR Z,L2DD2 ; (+006H) + ADD HL,DE + DJNZ L2DC9 ; (-006H) + JP L177A + +L2DD2: LD A,00AH + SUB B + JP L1784 + +L2DD8: LD A,B + OR C + JR Z,L2DDE ; (+002H) + INC BC + INC BC +L2DDE: LD E,(HL) + INC HL + LD D,(HL) + DEC HL + PUSH HL + LD H,B + LD L,C + CALL L1773 + POP HL + JR Z,L2DF7 ; (+00cH) + EX DE,HL + PUSH BC + LD C,L + LD B,H + CALL L19E7 + POP BC + CALL L19C0 + EX DE,HL +L2DF7: LD D,H + LD E,L + LD A,C + OR B + RET Z + LD (HL),C + INC HL + LD (HL),B + DEC HL + DEC BC + DEC BC + RET + + CALL L2DD8 + INC HL + INC HL + RET + +L2E09: PUSH BC + LD BC,MONIT + CALL L2DD8 + POP BC + RET + +L2E12: ADD A,A + ADD A,L + LD L,A + JR NC,L2E18 ; (+001H) + INC H +L2E18: LD A,(HL) + INC HL + LD H,(HL) + LD L,A + RET + +L2E1D: LD DE,CMTFNAME ; Compare loaded filename against name given by user. + PUSH HL + INC HL + LD B,010H +L2E24: LD A,(DE) + CP (HL) + JR NZ,L2E31 ; (+009H) +L2E28: INC HL + INC DE + CP 00DH + JR Z,L2E31 ; (+003H) + DEC B + JR NZ,L2E24 ; (-00dH) +L2E31: POP HL + RET + +CMTBUF: DB 002H +CMTFNAME: DB 00DH + DB 00DH + DB 00DH + DB 00DH + DB 00DH + DB 00DH + DB 00DH + DB 00DH + DB 00DH + DB 00DH + DB 00DH + DB 00DH + DB 00DH + DB 00DH + DB 00DH + DB 00DH + DB 00DH + DB 000H + DB 000H + DB 000H + DB 000H + DB 000H + DB 000H + DB 000H + DB 000H + DB 000H + DB 000H + DB 000H + DB 000H + DB 000H + DB 000H + PUSH HL + LD HL,GETL + LD (04DD6H),HL + LD HL,04DD8H + LD B,005H +L2E5F: LD (HL),000H + INC HL + DJNZ L2E5F ; (-005H) + LD HL,CMTFNAME + LD B,011H +L2E69: LD (HL),00DH + INC HL + DJNZ L2E69 ; (-005H) + LD B,00EH +L2E70: LD (HL),000H + INC HL + DJNZ L2E70 ; (-005H) + POP HL + CALL L2E94 + CALL L2333 + LD A,D + OR A + JP Z,UNKNWNERR + LD A,C + DEC A + CP 010H + JP NC,UNKNWNERR + PUSH HL + CALL L190B + LD HL,CMTFNAME + EX DE,HL + LDIR + POP HL + RET + +L2E94: CALL EXECNOTCHR + DB ',' + DW L2E9A +L2E9A: RET + +L2E9B: LD B,000H + LD DE,L2EB0 + CALL L14C9 + JP NZ,SYNTAXERR + CALL L2E94 + LD A,B + ADD A,082H + LD (04DD4H),A + RET + +L2EB0: DB 0D0H + DB 0D4H + DB 000H +CMDVERIFY: CALL L1AA7 + XOR A + JR L2EDC ; (+023H) + +L2EB9: LD A,(ATRB) + CP 002H + JR NZ,L2EE6 ; (+026H) + CALL L2F62 + CALL L1B1B + CALL ?VRFY + PUSH AF + CALL L1AC7 + POP AF + JP C,L30B3 + LD DE,L2FDD + CALL MSGNL + JP L1B35 + +L2EDA: LD A,001H +L2EDC: LD (L2D74),A + LD BC,L2EE6 + PUSH BC + JP L2FE4 + +L2EE6: CALL QRDI ; Original ?RDI call + JP C,L30B3 + CALL L2F67 + LD HL,ATRB + LD A,(HL) + OR A + JR Z,L2EE6 ; (-010H) + CP 004H + JR NC,L2EE6 ; (-014H) + LD DE,CMTFNAME + LD A,(DE) + CP 00DH + JR Z,L2F07 ; (+005H) + CALL L2E1D + JR NZ,L2EE6 ; (-021H) +L2F07: LD A,(L2D74) + OR A + JR Z,L2EB9 ; (-054H) + LD A,(ATRB) + CP 001H + JP Z,L2F8E + CP 002H + JR NZ,L2EE6 ; (-033H) + CALL L1944 + LD HL,(SIZE) + DEC HL + DEC HL + LD C,L + LD B,H + LD DE,0505CH + CALL L1888 + CALL L19C3 + LD (DTADR),DE + CALL L2F6C + CALL QRDD ; Original ?RDD call + JR C,L2F3E ; (+006H) + CALL L1ABF + JP L1B35 + +L2F3E: PUSH AF + CALL L2F4B + POP AF + PUSH AF + CALL L1944 + POP AF + JP L30B3 + +L2F4B: LD DE,0505EH + LD HL,04E4EH + XOR A + SBC HL,DE + RET Z + LD C,L + LD B,H + DEC DE + DEC DE + CALL L1873 + CALL L1762 + JP L19C3 + +L2F62: LD DE,L2FD2 + JR L2F6F ; (+008H) + +L2F67: LD DE,L2FC2 + JR L2F6F ; (+003H) + +L2F6C: LD DE,L2FC9 +L2F6F: CALL MSGNL + LD DE,NAME + LD A,(DE) + CP 00DH + RET Z + PUSH DE + CALL L2F86 + POP DE + LD A,00DH + LD (01101H),A + CALL MSGX +L2F86: LD DE,L2F8C + JP MSGX + +L2F8C: DB 022H + DB 00DH +L2F8E: LD HL,(DTADR) + EX DE,HL + LD HL,(0490AH) + DEC HL + CALL L1773 + JR NC,L2FB6 ; (+01bH) + LD HL,(SIZE) + ADD HL,DE + JR C,L2FBC ; (+01bH) + EX DE,HL + LD HL,(04908H) + CALL L1773 + JR C,L2FBC ; (+012H) + CALL L2F6C + CALL QRDD ; Original ?RDD call + JP C,L30B3 + JP L1B35 + +L2FB6: CALL MSTOP + JP BADWRERR + +L2FBC: CALL MSTOP + JP MEMERR + +L2FC2: DB "F",0B7H,0A5H,0B0H,09CH," " + DB 00DH +L2FC9: DB "L",0B7H,0A1H,09CH,0A6H,0B0H,097H," " + DB 00DH +L2FD2: DB "V",092H,09DH,0A6H,0AAH,0BDH,0A6H,0B0H,097H," " + DB 00DH +L2FDD: DB "OK" + DB 00DH +L2FE0: LD BC,L3038 + PUSH BC +L2FE4: CALL EXECNOTCHR + DB ',' + DW L2FEA +L2FEA: PUSH HL + LD HL,CMTBUF + LD (HL),002H +L2FF0: LD B,011H +L2FF2: INC HL + LD (HL),00DH + DJNZ L2FF2 ; (-005H) + CALL L1459 + POP HL + CALL L193B ; Skip space to CR, ':' or char. + LD (05051H),HL + RET Z ; CR or ':' return. + CALL L2333 + CALL L193B ; Skip space to CR, ':' or char. + JP NZ,SYNTAXERR + LD (05051H),HL + LD A,D + OR A + JP Z,UNKNWNERR + CALL L190B + LD A,C + OR A + RET Z + CP 011H + JP NC,UNKNWNERR + EX DE,HL + LD DE,CMTFNAME + LDIR + RET + +L3025: LD DE,ATRB + LD HL,CMTBUF + LD BC,PRNT + LDIR + LD B,06EH +L3032: XOR A + LD (DE),A + INC DE + DJNZ L3032 ; (-005H) + RET + +L3038: CALL L3025 + LD HL,0505CH + LD (DTADR),HL + LD DE,0505CH + LD HL,(04E4EH) + XOR A + SBC HL,DE + LD (SIZE),HL + CALL QWRI ; Original ?WRI call + JP C,L30B8 + CALL L1B1B + CALL QWRD ; Original ?WRD call + PUSH AF + CALL L1ABF + POP AF + JP C,L30B8 + JP WARMSTRT + +L3064: CALL L1459 + LD A,(L30E2) + CP 001H + JR NZ,L309A ; (+02cH) + LD HL,(L30E3) +L3071: PUSH DE + LD DE,04DD3H + CALL L1773 + JR C,L3082 ; (+008H) + CALL QWRD ; Original ?WRD call + JR C,L30B8 ; (+039H) + LD HL,04CD3H +L3082: POP DE + LD A,(DE) + LD (HL),A + INC HL + INC DE + CP 00DH + JR NZ,L3071 ; (-01aH) + LD (L30E3),HL + RET + + CALL L1459 + LD A,(L30E2) + PUSH DE + LD C,000H + CP 002H +L309A: JP NZ,OUTFILEERR + LD (L2D74),A + LD HL,(L30E3) +L30A3: PUSH DE + LD DE,04DD3H + CALL L1773 + JR C,L30BE ; (+012H) + PUSH BC + CALL QRDD ; Original ?RDD call + POP BC + JR NC,L30BB ; (+008H) +L30B3: CP 002H + JP NZ,CHKSUMERR +L30B8: JP L1438 + +L30BB: LD HL,04CD3H +L30BE: LD A,(HL) + LD B,A + CP 0FFH + JR NZ,L30CC ; (+008H) + LD A,(L2D74) + CP 002H + JP Z,OUTFILEERR +L30CC: XOR A + LD (L2D74),A + LD A,B + POP DE + LD (DE),A + INC HL + INC DE + INC C + CP 00DH + JR NZ,L30A3 ; (-037H) + DEC C + POP DE + LD (L30E3),HL + LD B,000H + RET + +L30E2: NOP +L30E3: NOP + NOP +L30E5: CALL L1AAF + LD A,(L30E2) + OR A + JP NZ,OPENERR + LD BC,L30FC + PUSH BC + PUSH HL + DB 021H + DB 033H +L30F6: DB 02EH + LD (HL),003H + JP L2FF0 + +L30FC: CALL L3025 + LD HL,00100H + LD (SIZE),HL + LD HL,04CD3H + LD (L30E3),HL + LD (DTADR),HL + CALL QWRI ; Original ?WRI call +L3111: JR C,L30B8 ; (-05bH) + CALL MSTOP + LD A,001H + LD (L30E2),A +L311B: JP L1B35 + +L311E: CALL L1AAF + LD A,(L30E2) + OR A + JP NZ,OPENERR + LD BC,L313A + PUSH BC + LD A,002H + LD (L2D74),A + PUSH HL + LD HL,CMTBUF + LD (HL),004H + JP L2FF0 + +L313A: CALL QRDI ; Original ?RDI call. + JP C,L30B3 + LD HL,ATRB + LD A,(HL) + CP 003H + JR NZ,L313A ; (-00eH) + LD DE,CMTFNAME + LD A,(DE) + CP 00DH + JR Z,L3155 ; (+005H) + CALL L2E1D ; Compare filename. + JR NZ,L313A ; NZ - filename doesnt match, read next header. +L3155: LD A,002H + LD (L30E2),A + CALL MSTOP + LD HL,04CD3H + LD (DTADR),HL + LD HL,00100H + LD (SIZE),HL + LD HL,04DD3H + LD (L30E3),HL + JR L311B ; (-056H) + +L3171: CALL L1459 + LD A,(L30E2) + OR A + JR Z,L3195 ; (+01bH) + PUSH HL + DEC A + JR NZ,L3190 ; (+012H) + LD HL,(L30E3) + LD DE,04DD3H + CALL L1773 + JR NC,L3198 ; (+00fH) +L3189: LD (HL),0FFH + CALL QWRD ; Original ?WRD call +L318E: JR C,L3111 ; (-07fH) +L3190: XOR A + LD (L30E2),A + POP HL +L3195: JP CMDREMDATA + +L3198: CALL QWRD ; Original ?WRD call + JR C,L318E ; (-00fH) + LD HL,04CD3H + JR L3189 ; (-019H) + +L31A2: LD A,(L32D3) + OR A + RET Z +L31A7: CALL L32C2 + LD A,00DH + CALL L3291 + XOR A + LD (L32D3),A + RET + + PUSH BC + PUSH DE + LD A,(L32D3) + LD B,A +L31BA: LD A,(DE) + CP 00DH + JP Z,L3258 + CP 020H + CALL C,L31CC + CALL L3291 + INC B + INC DE + JR L31BA ; (-012H) + +L31CC: CP 005H + JR Z,L31F0 ; (+020H) + CP 006H + JR Z,L3200 ; (+02cH) + CP 010H + JR Z,L3221 ; (+049H) + CP 011H + JR Z,L31F9 ; (+01dH) + CP 012H + JR Z,L31F5 ; (+015H) + CP 013H + JR Z,L3226 ; (+042H) + CP 014H + JR Z,L322A ; (+042H) + CP 015H + JR Z,L3238 ; (+04cH) + POP AF + INC DE + JR L31BA ; (-036H) + +L31F0: LD A,00FH +L31F2: LD B,PRTD + RET + +L31F5: LD A,00BH + JR L31F2 ; (-007H) + +L31F9: LD A,009H + LD (L326D),A + JR L31F2 ; (-00eH) + +L3200: LD A,00CH + CALL L3291 + LD A,009H + CALL L3291 + LD A,009H + CALL L3291 + LD A,00BH + CALL L3291 + LD A,00AH + CALL L3291 + CALL L3267 + CALL L3291 + JR L31F0 ; (-031H) + +L3221: CALL L3267 + JR L31F2 ; (-034H) + +L3226: LD A,00CH + JR L31F2 ; (-038H) + +L322A: LD A,009H + CALL L3291 + LD A,009H + CALL L3291 + LD A,009H + JR L31F2 ; (-046H) + +L3238: LD A,009H + CALL L3291 + LD A,009H + CALL L3291 + LD A,00BH + JR L31F2 ; (-054H) + +L3246: PUSH BC + PUSH DE + LD A,(L32D3) + LD B,A +L324C: LD A,(DE) + CP 00DH + JR Z,L3258 ; (+007H) + CALL L3291 + INC DE + INC B + JR L324C ; (-00cH) + +L3258: LD A,B + CP 0A0H + JR C,L325F ; (+002H) + SUB 0A0H +L325F: LD (L32D3),A + POP DE + POP BC + JP L32C2 + +L3267: LD A,00AH + LD (L326D),A + RET + +L326D: LD A,(BC) +L326E: PUSH BC + PUSH DE + LD A,(L32D3) + LD B,A +L3274: LD A,020H + CALL L3291 + INC B + LD A,B +L327B: SUB 00AH + JR C,L3274 ; (-00bH) + JR NZ,L327B ; (-006H) + JP L3258 + +L3284: CALL L3291 + CALL L32A5 + IN A,(PRTC) + RRCA + RRCA + RET + +L328F: LD A,01BH +L3291: PUSH AF + CALL L32A5 + POP AF + OUT (PRTD),A + LD A,080H + OUT (PRTC),A + LD A,001H + CALL L32A6 + XOR A + OUT (PRTC),A + RET + +L32A5: XOR A +L32A6: PUSH BC + PUSH DE + LD C,A + LD B,00FH + LD DE,MONIT +L32AE: IN A,(PRTC) + AND 00DH + CP C + JR Z,L32BF ; (+00aH) + DEC DE + LD A,D + OR E + JR NZ,L32AE ; (-00cH) + DJNZ L32AE ; (-00eH) + JP PRTNRDYERR + +L32BF: POP DE + POP BC + RET + +L32C2: LD A,007H + CALL L3284 + JP NC,PRTPAPERERR + LD A,008H + CALL L3284 + RET C + JP PRTHWERR + +L32D3: NOP +CMDPAGE: CALL GETNUM + LD A,E + OR A + JP Z,ILDATERR + LD A,009H + CALL L3291 + LD A,009H + CALL L3291 + LD A,E + PUSH AF + RRCA + RRCA + RRCA + RRCA + CALL ASC + CALL L3291 + POP AF + CALL ASC + CALL L3291 + JP L1B38 + +L32FC: CALL L31A7 + JP L1B35 + + CALL L193B + LD (05051H),HL + JR Z,L32FC ; (-00eH) + PUSH HL + CALL L338A + LD BC,00500H + CALL L2DD8 + POP HL +L3315: CALL L193B + LD (05051H),HL + JR Z,L3373 ; (+056H) + CALL L2E94 + CALL EXECNOTCHR + DB 03BH + DW L3326 +L3326: CALL L2293 + PUSH HL + LD HL,(04E80H) + PUSH BC + LD BC,003F0H + ADD HL,BC + POP BC + LD A,D + OR A + CALL Z,L2BC0 + CALL NZ,L2BD0 + LD A,B + OR C + JR Z,L3362 ; (+023H) + PUSH DE + LD HL,(04E80H) + INC HL + INC HL + LD E,(HL) + INC HL + LD D,(HL) + DEC HL + PUSH DE + PUSH HL + EX DE,HL + ADD HL,BC + XOR A + EX DE,HL + LD HL,003E8H + SBC HL,DE + JP C,ILDATERR + POP HL + LD (HL),E + INC HL + LD (HL),D + INC HL + POP DE + ADD HL,DE + POP DE + EX DE,HL + LDIR +L3362: LD HL,L3315 + EX (SP),HL + CALL L193B + RET Z + CP 03BH + RET Z + CP ',' + RET Z + JP SYNTAXERR + +L3373: LD HL,(04E80H) + INC HL + INC HL + LD E,(HL) + INC HL + LD D,(HL) + LD A,D + OR E + JR Z,L3387 ; (+008H) + INC HL + EX DE,HL + CALL L3390 + CALL L338A +L3387: JP L1B35 + +L338A: LD HL,(04E80H) + JP L2E09 + +L3390: CALL L328F + LD A,018H + CALL L3291 + LD A,L + CALL L3291 + LD A,H + CALL L3291 +L33A0: LD A,(DE) + CALL L3291 + INC DE + DEC HL + LD A,H + OR L + JR NZ,L33A0 ; (-00aH) + RET + +CMDCOPY: CALL L193B + JP Z,SYNTAXERR + INC HL + LD (05051H),HL + SUB 034H + JP Z,SYNTAXERR + INC A + JP Z,SYNTAXERR + INC A + JP Z,SYNTAXERR + INC A + JP NZ,SYNTAXERR + LD HL,(PAGETP) + LD C,019H +L33CB: CALL L31A7 + LD A,028H + LD B,A +L33D1: CALL L2878 + OR A + JR Z,L33DB ; (+004H) + CP 00DH + JR NZ,L33DD ; (+002H) +L33DB: LD A,020H +L33DD: CALL L3291 + CALL BRKEY + JR Z,L33FD ; (+018H) + INC HL + DJNZ L33D1 ; (-017H) + DEC C + JR NZ,L33CB ; (-020H) + CALL L31A7 + JP L1B35 + +L33F1: CALL L328F + LD A,(L326D) + JP L3291 + + CALL L33F1 +L33FD: JP L1438 + +L3400: DB 000H +L3401: DB 080H +L3402: DB 086H +L3403: XOR A + DB 001H +L3405: LD A,080H + PUSH DE + XOR (HL) + CPL + LD C,A + LD A,(DE) + AND 080H + LD B,A + XOR C + CPL + AND 080H + LD C,A +L3414: PUSH BC + LD B,(HL) + RES 7,B + LD A,(DE) + AND 07FH + CP B + JR NC,L3428 ; (+00aH) + POP BC + EX DE,HL + LD A,B + XOR C + CPL + AND 080H + LD B,A + JR L3414 ; (-014H) + +L3428: LD C,A + ADD A,040H + LD (L3402),A + LD A,C + SUB B + POP BC + LD (03400H),BC + PUSH DE + INC HL + LD E,(HL) + INC HL + LD D,(HL) + INC HL + LD C,(HL) + INC HL + LD B,(HL) + POP HL + INC HL + JR Z,L345C ; (+01aH) +L3442: CP 008H + JR NC,L3453 ; (+00dH) +L3446: SRL B + RR C + RR D + RR E + DEC A + JR NZ,L3446 ; (-00bH) + JR L345C ; (+009H) + +L3453: LD E,D + LD D,C + LD C,B + LD B,000H + SUB 008H + JR NZ,L3442 ; (-01aH) +L345C: LD A,(L3400) + OR A + JR Z,L349C ; (+03aH) + LD A,(HL) + INC HL + ADD A,E + LD E,A + LD A,(HL) + INC HL + ADC A,D + LD D,A + LD A,(HL) + INC HL + ADC A,C + LD C,A + LD A,(HL) + ADC A,B + LD B,A + JR NC,L347F ; (+00cH) + RR B + RR C + RR D + RR E + LD HL,L3402 + INC (HL) +L347F: LD HL,L3402 + LD A,(HL) + SUB 040H + JR C,L348E ; (+007H) + JP M,OVFLERR + DEC HL + OR (HL) + JR L3491 ; (+003H) + +L348E: CALL L3CDE +L3491: POP HL +L3492: LD (HL),A + INC HL + LD (HL),E + INC HL + LD (HL),D + INC HL + LD (HL),C + INC HL + LD (HL),B + RET + +L349C: LD A,(HL) + INC HL + SUB E + LD E,A + LD A,(HL) + INC HL + SBC A,D + LD D,A + LD A,(HL) + INC HL + SBC A,C + LD C,A + LD A,(HL) + SBC A,B + LD B,A + CALL C,L34E4 + OR C + OR D + JR NZ,L34B7 ; (+005H) + LD A,E + CP 03FH + JR C,L348E ; (-029H) +L34B7: LD HL,L3402 +L34BA: LD A,B + OR A + JP M,L347F + JR NZ,L34D4 ; (+013H) + LD A,(HL) + SUB 008H + JR C,L348E ; (-038H) + LD (HL),A + LD A,C + OR D + OR E + JR Z,L348E ; (-03eH) + LD B,C + LD C,D + LD D,E + LD E,000H + JP L34BA + +L34D4: DEC (HL) + JR C,L348E ; (-049H) + SLA E + RL D + RL C + RL B + JP P,L34D4 + JR L347F ; (-065H) + +L34E4: LD HL,L3401 + LD A,(HL) + ADD A,080H + LD (HL),A + LD A,E + CPL + ADD A,001H + LD E,A + LD A,D + CPL + ADC A,000H + LD D,A + LD A,C + CPL + ADC A,000H + LD C,A + LD A,B + CPL + ADC A,000H + LD B,A + RET + +L3500: PUSH DE + LD A,(DE) + XOR (HL) + CPL + AND 080H + LD (L3401),A + LD B,(HL) + RES 7,B + LD A,(DE) + AND 07FH + ADD A,B + JP Z,L348E + DEC A +L3514: CP 030H + JP C,L348E + CP 0E0H + JP NC,OVFLERR + LD (L3402),A + XOR A + LD (L3400),A + LD BC,00004H + ADD HL,BC + LD A,(HL) + OR A + JP P,L348E + PUSH HL + POP IY + LD C,B + EX DE,HL + INC HL + LD E,(HL) + INC HL + LD D,(HL) + INC HL + PUSH HL + LD H,B + LD L,B + EXX + POP HL + LD E,(HL) + INC HL + LD D,(HL) + LD HL,MONIT + LD A,D + OR A + JP P,L348E + LD C,004H +L354A: LD A,(IY+000H) + LD B,008H + OR A + JR Z,L35C5 ; (+073H) +L3552: RLA + JR NC,L3569 ; (+014H) + EX AF,AF' + EXX + LD A,B + ADD A,C + LD C,A + ADC HL,DE + EXX + ADC HL,DE + JR NC,L3568 ; (+007H) + LD A,(L3400) + INC A + LD (L3400),A +L3568: EX AF,AF' +L3569: SRL D + RR E + EXX + RR D + RR E + RR B + EXX + DJNZ L3552 ; (-025H) +L3577: DEC IY + DEC C + JR NZ,L354A ; (-032H) + LD A,(L3400) + OR A + JR Z,L3599 ; (+017H) + LD B,A + LD A,(L3402) + ADD A,B + LD (L3402),A +L358A: SCF + RR H + RR L + EXX + RR H + RR L + RR C + EXX + DJNZ L358A ; (-00fH) +L3599: EXX + LD A,C + OR A + JP P,L35BD + LD DE,00001H + ADD HL,DE + EXX + LD DE,MONIT + ADC HL,DE + JR NC,L35BC ; (+011H) + RR H + RR L + EXX + RR H + RR L + EXX + LD A,(L3402) + INC A + LD (L3402),A +L35BC: EXX +L35BD: PUSH HL + EXX + LD B,H + LD C,L + POP DE + JP L34B7 + +L35C5: LD A,E + LD E,D + LD D,000H + EXX + LD B,E + LD E,D + LD D,A + EXX + JR L3577 ; (-059H) + +L35D0: PUSH DE + LD A,(DE) + XOR (HL) + CPL + AND 080H + LD (L3401),A + LD B,(HL) + RES 7,B + LD A,(DE) + AND 07FH + SUB B + ADD A,081H +L35E2: CP 030H + JP C,L348E + CP 0E0H + JP NC,OVFLERR + LD (L3402),A + INC HL + INC DE + EX DE,HL + LD C,(HL) + INC HL + LD B,(HL) + INC HL + PUSH HL + EX DE,HL + LD E,(HL) + INC HL + LD D,(HL) + INC HL + LD A,L + EX AF,AF' + LD A,H + LD H,B + LD L,C + EXX + POP HL + LD C,(HL) + INC HL + LD B,(HL) + LD H,A + EX AF,AF' + LD L,A + LD E,(HL) + INC HL + LD D,(HL) + LD H,B + LD L,C + LD A,D + OR A + JP P,OVFLERR + LD C,004H +L3615: LD B,008H +L3617: BIT 7,H + JR NZ,L3633 ; (+018H) + OR A +L361C: RLA + EXX + ADD HL,HL + EXX + ADC HL,HL + DJNZ L3617 ; (-00dH) + PUSH AF + DEC C + JR NZ,L3615 ; (-013H) +L3628: POP AF + LD E,A + POP AF + LD D,A + POP AF + LD C,A + POP AF + LD B,A + JP L34B7 + +L3633: EXX + OR A + SBC HL,DE + EXX + SBC HL,DE + CCF + JR C,L361C ; (-021H) + EXX + ADD HL,DE + EXX + ADC HL,DE + OR A + RLA + EXX + ADD HL,HL + EXX + ADC HL,HL + DEC B + JR NZ,L3652 ; (+006H) + PUSH AF + LD B,008H + DEC C + JR Z,L3628 ; (-02aH) +L3652: EXX + OR A + SBC HL,DE + EXX + SBC HL,DE + SCF + RLA + DEC B + JR NZ,L3664 ; (+006H) + PUSH AF + LD B,008H + DEC C + JR Z,L3628 ; (-03cH) +L3664: EXX + ADD HL,HL + EXX + ADC HL,HL + JR NC,L3617 ; (-054H) + JR L3652 ; (-01bH) + +L366D: DEC E +L366E: XOR C + LD D,B +L3670: LD A,(HL) + PUSH HL + POP IX + EX DE,HL + LD (L366E),HL + EX AF,AF' + XOR A + LD (L366D),A + LD H,A + LD L,A + EXX + LD H,A + LD L,A + LD B,A + LD C,A + EX AF,AF' + CP 02EH + JR Z,L369D ; (+014H) + SUB 030H +L368B: CALL L3772 + CALL L3768 + SUB 030H + CP 00AH + JR C,L368B ; (-00cH) + ADD A,030H + CP 02EH + JR NZ,L36AD ; (+010H) +L369D: CALL L3768 + SUB 030H + CP 00AH + JR NC,L36AB ; (+005H) + CALL L3780 + JR L369D ; (-00eH) + +L36AB: ADD A,030H +L36AD: CP 045H + JR NZ,L36F5 ; (+044H) + EXX + CALL L3768 + LD B,001H + CP '+' + JR Z,L36C1 ; (+006H) + CP '-' + JP NZ,SYNTAXERR + DEC B +L36C1: LD A,B + OR A + EX AF,AF' + CALL L3768 + SUB 030H + NOP + NOP + CP 00AH + JR NC,L36EB ; (+01cH) + LD B,A + CALL L3768 + SUB 030H + CP 00AH + JR NC,L36EB ; (+012H) + LD C,A + CALL L3768 + SUB 030H + CP 00AH + JP C,OVFLERR + LD A,B + ADD A,A + ADD A,A + ADD A,B + ADD A,A + ADD A,C + LD B,A +L36EB: EX AF,AF' + LD A,B + JR NZ,L36F1 ; (+002H) + CPL + INC A +L36F1: LD (L366D),A + EXX +L36F5: PUSH IX + LD A,(L366D) + ADD A,01DH + ADD A,C + LD (L366D),A + CP 030H + JR C,L370B ; (+007H) + CP 080H + JP C,OVFLERR + JR L375D ; (+052H) + +L370B: LD A,080H + LD (L3401),A + LD A,0A0H + LD (L3402),A + PUSH HL + EXX + POP BC + LD D,H + LD E,L + LD HL,L3725 + PUSH HL + LD HL,(L366E) + PUSH HL + JP L34B7 + +L3725: LD A,(L366D) + LD L,A + LD C,A + LD H,000H + LD B,H + ADD HL,HL + ADD HL,HL + ADD HL,BC + LD BC,L37AE + ADD HL,BC + LD DE,(0366EH) + LD A,080H + LD (L3401),A + LD A,020H + ADD A,(HL) + LD B,A + LD A,(DE) + AND 07FH + ADD A,B + JP C,OVFLERR + SUB 021H + JR NC,L374D ; (+001H) + XOR A +L374D: LD BC,L3755 + PUSH BC + PUSH DE + JP L3514 + +L3755: POP HL + LD BC,00005H + LD D,B + LD E,B + LD A,(HL) + RET + +L375D: LD HL,L3755 + PUSH HL + LD HL,(L366E) + PUSH HL + JP L348E + +L3768: INC IX + LD A,(IX+000H) + CP 020H + RET NZ + JR L3768 ; (-00aH) + +L3772: OR A + JR NZ,L3778 ; (+003H) + OR B + RET Z + XOR A +L3778: EX AF,AF' + LD A,B + CP 009H + JR NZ,L378E ; (+010H) + INC C + RET + +L3780: OR A + JR NZ,L3788 ; (+005H) + DEC C + OR B + RET Z + INC C + XOR A +L3788: EX AF,AF' + LD A,B + CP 009H + RET Z + DEC C +L378E: INC B + LD D,H + LD E,L + EXX + LD D,H + LD E,L + XOR A + ADD HL,HL + RLA + ADD HL,HL + RLA + ADD HL,DE + LD D,000H + ADC A,D + ADD HL,HL + RLA + EX AF,AF' + LD E,A + EX AF,AF' + ADD HL,DE + ADC A,D + EXX + ADD HL,HL + ADD HL,HL + ADD HL,DE + ADD HL,HL + LD D,000H + LD E,A + ADD HL,DE + RET + +L37AE: DB 0E0H + DB 0F5H + DB 0F7H + DB 0D2H + DB 0CAH + DB 0E3H + DB 0F3H + DB 0B5H + DB 087H + DB 0FDH + DB 0E7H + DB 0B8H + DB 0D1H + DB 074H + DB 09EH + DB 0EAH + DB 025H + DB 006H + DB 012H + DB 0C6H + DB 0EDH + DB 0AFH + DB 087H + DB 096H + DB 0F7H + DB 0F1H + DB 0CDH + DB 014H + DB 0BEH + DB 09AH + DB 0F4H + DB 001H + DB 09AH + DB 06DH + DB 0C1H + DB 0F7H + DB 081H + DB 000H + DB 0C9H + DB 0F1H + DB 0FBH + DB 050H + DB 0A0H + DB 01DH + DB 097H +L37DB: DB 0FEH + DB 065H + DB 008H + DB 0E5H + DB 0BCH + DB 001H + DB 07EH + DB 04AH + DB 01EH + DB 0ECH + DB 005H + DB 08FH + DB 0EEH + DB 092H + DB 093H + DB 008H + DB 032H + DB 0AAH + DB 077H + DB 0B8H + DB 00BH + DB 0BFH + DB 094H + DB 095H + DB 0E6H + DB 00FH + DB 0F7H + DB 07CH + DB 01DH + DB 090H + DB 012H + DB 035H + DB 0DCH + DB 024H + DB 0B4H + DB 015H + DB 042H + DB 013H + DB 02EH + DB 0E1H + DB 019H + DB 009H + DB 0CCH + DB 0BCH + DB 08CH + DB 01CH + DB 00CH + DB 0FFH + DB 0EBH + DB 0AFH + DB 01FH + DB 0CFH + DB 0FEH + DB 0E6H + DB 0DBH + DB 023H + DB 041H + DB 05FH + DB 070H + DB 089H + DB 026H + DB 012H + DB 077H + DB 0CCH + DB 0ABH + DB 029H + DB 0D6H + DB 094H + DB 0BFH + DB 0D6H + DB 02DH + DB 006H + DB 0BDH + DB 037H + DB 086H + DB 030H + DB 047H + DB 0ACH + DB 0C5H + DB 0A7H + DB 033H + DB 059H + DB 017H + DB 0B7H + DB 0D1H + DB 037H + DB 098H + DB 06EH + DB 012H + DB 083H + DB 03AH + DB 03DH + DB 00AH + DB 0D7H + DB 0A3H + DB 03DH + DB 0CDH + DB 0CCH + DB 0CCH + DB 0CCH + DB 041H + DB 000H + DB 000H + DB 000H + DB 080H + DB 044H + DB 000H + DB 000H + DB 000H + DB 0A0H + DB 047H + DB 000H + DB 000H + DB 000H + DB 0C8H + DB 04AH + DB 000H + DB 000H + DB 000H + DB 0FAH + DB 04EH + DB 000H + DB 000H + DB 040H + DB 09CH + DB 051H + DB 000H + DB 000H + DB 050H + DB 0C3H + DB 054H + DB 000H + DB 000H + DB 024H + DB 0F4H + DB 058H + DB 000H + DB 080H + DB 096H + DB 098H + DB 05BH + DB 000H + DB 020H + DB 0BCH + DB 0BEH + DB 05EH + DB 000H + DB 028H + DB 06BH + DB 0EEH + DB 062H + DB 000H + DB 0F9H + DB 002H + DB 095H + DB 065H + DB 040H + DB 0B7H + DB 043H + DB 0BAH + DB 068H + DB 010H + DB 0A5H + DB 0D4H + DB 0E8H + DB 06CH + DB 02AH + DB 0E7H + DB 084H + DB 091H + DB 06FH + DB 0F5H + DB 020H + DB 0E6H + DB 0B5H + DB 072H + DB 032H + DB 0A9H + DB 05FH + DB 0E3H + DB 076H + DB 0BFH + DB 0C9H + DB 01BH + DB 08EH + DB 079H + DB 02FH + DB 0BCH + DB 0A2H + DB 0B1H + DB 07CH + DB 03AH + DB 06BH + DB 00BH + DB 0DEH + DB 080H + DB 005H + DB 023H + DB 0C7H + DB 08AH +L38A3: DB 08DH + DB 06CH +L38A5: DB 001H +L38A6: DB 020H +L38A7: DB 031H +L38A8: DB 02EH + DB 035H + DB 00DH + DB 00DH + DB 00DH + DB 00DH + DB 00DH +L38AF: DB 00DH +L38B0: DB 00DH +L38B1: DB 000H +L38B2: DB 000H + DB 000H + DB 000H + DB 000H + DB 000H + DB 000H + DB 000H + DB 000H + DB 000H +L38BB: PUSH DE + CALL L3997 + LD A,(L38A5) + OR A + JP Z,L3960 + JP M,L38CF + CP 009H + JR C,L392B ; (+05eH) + JR L38D4 ; (+005H) + +L38CF: CP PRTD + JP NC,L395B +L38D4: LD A,02EH + LD (L38A7),A + LD HL,L38B0 + XOR A +L38DD: DEC HL + CP (HL) + JR Z,L38DD ; (-004H) + LD A,(HL) + CP 02EH + JP Z,L398A + INC HL + LD (HL),045H + INC HL + LD A,(L38A5) + LD B,'+' + OR A + JP P,L38FD + CP 0EDH + JP C,L398A + LD B,'-' + CPL + INC A +L38FD: LD (HL),B + INC HL + LD BC,0FF0AH +L3902: INC B + SUB C + JR NC,L3902 ; (-004H) + ADD A,C + LD (HL),B + INC HL + LD (HL),A + INC HL + LD (HL),00DH +L390D: LD HL,L38A6 +L3910: INC HL + LD A,(HL) + CP 00DH + JR Z,L391D ; (+007H) + JR NC,L3910 ; (-008H) + OR 030H + LD (HL),A + JR L3910 ; (-00dH) + +L391D: LD DE,L38A6 + XOR A + SBC HL,DE + LD B,H + LD C,L + POP HL + EX DE,HL + INC BC + LDIR + RET + +L392B: LD HL,L38A8 + LD DE,L38A7 + LD B,A + INC B +L3933: DEC B + JR Z,L393C ; (+006H) + LD A,(HL) + LD (DE),A + INC HL + INC DE + JR L3933 ; (-009H) + +L393C: LD A,02EH + LD (DE),A + LD HL,L38B0 +L3942: LD (HL),00DH + DEC HL + LD A,(HL) + OR A + JR Z,L3942 ; (-007H) + CP 02EH + JR NZ,L394F ; (+002H) + LD (HL),00DH +L394F: LD HL,L38A7 + LD A,(HL) + CP 00DH + JR NZ,L390D ; (-04aH) + LD (HL),000H + JR L390D ; (-04eH) + +L395B: LD DE,L38B2 + JR L3963 ; (+003H) + +L3960: LD DE,L38B1 +L3963: LD HL,L38AF + LD A,00DH + LD (DE),A + PUSH DE + DEC DE + LD BC,00008H + LDDR + EX DE,HL + LD A,(L38A5) + OR A + JR Z,L397A ; (+003H) + LD (HL),000H + DEC HL +L397A: LD (HL),02EH + DEC HL + LD (HL),000H + POP HL +L3980: DEC HL + LD A,(HL) + CP 000H + JR NZ,L390D ; (-079H) + LD (HL),00DH + JR L3980 ; (-00aH) + +L398A: LD HL,L3994 + LD BC,GETL + POP DE + LDIR + RET + +L3994: JR NZ,L39C6 ; (+030H) + DEC C +L3997: LD (L38A3),HL + LD A,(HL) + LD B,020H + OR A + JP M,L39A3 + LD B,'-' +L39A3: AND 07FH + LD (HL),A + LD A,B + LD (L38A6),A + EX DE,HL + LD HL,L37DB + LD A,0ECH + EX AF,AF' +L39B1: EX AF,AF' + INC A + EX AF,AF' + LD BC,00005H + ADD HL,BC + PUSH HL + PUSH DE + LD A,(DE) + CALL L3A73 + POP DE + POP HL + JR NC,L39B1 ; (-011H) + EX AF,AF' + LD (L38A5),A +L39C6: PUSH DE + LD BC,L39D8 + PUSH BC + PUSH DE + LD A,080H + LD (L3401),A + LD A,(DE) + SUB (HL) + ADD A,081H + JP L35E2 + +L39D8: LD HL,L38A7 + LD (HL),000H + INC HL + EX (SP),HL + LD A,(HL) + INC HL + LD E,(HL) + INC HL + LD D,(HL) + INC HL + PUSH HL + EX DE,HL + EXX + POP HL + LD E,(HL) + INC HL + LD D,(HL) + EX DE,HL + SUB 0C0H + JR NC,L39FE ; (+00dH) +L39F1: SRL H + RR L + EXX + RR H + RR L + EXX + INC A + JR NZ,L39F1 ; (-00dH) +L39FE: POP BC + LD A,009H +L3A01: EX AF,AF' + XOR A + LD D,H + LD E,L + EXX + LD D,H + LD E,L + ADD HL,HL + EXX + ADC HL,HL + RLA + EXX + ADD HL,HL + EXX + ADC HL,HL + RLA + EXX + ADD HL,DE + EXX + ADC HL,DE + LD D,000H + ADC A,D + EXX + ADD HL,HL + EXX + ADC HL,HL + RLA + LD (BC),A + INC BC + EX AF,AF' + DEC A + JR NZ,L3A01 ; (-026H) +L3A27: LD HL,L38B0 + LD A,(HL) + LD (HL),000H + CP 005H + LD C,000H + JR C,L3A34 ; (+001H) + INC C +L3A34: LD B,00AH +L3A36: DEC B + JR Z,L3A47 ; (+00eH) + DEC HL + LD A,(HL) + ADD A,C + LD (HL),A + SUB 00AH + LD C,000H + JR C,L3A36 ; (-00dH) + INC C + LD (HL),A + JR L3A36 ; (-011H) + +L3A47: LD A,(L38A7) + OR A + RET Z + LD HL,L38AF + LD DE,L38B0 + LD BC,NL + LDDR + EX DE,HL + LD (HL),000H + LD A,(L38A5) + INC A + LD (L38A5),A + JR L3A27 ; (-03cH) + +L3A63: LD BC,00005H +L3A66: LD A,(DE) + OR A + JP M,L3A73 + BIT 7,(HL) + JR Z,L3A71 ; (+002H) + SCF + RET + +L3A71: EX DE,HL + LD A,(DE) +L3A73: CP (HL) + RET NZ + DEC C + ADD HL,BC + EX DE,HL + ADD HL,BC + EX DE,HL + LD B,003H +L3A7C: LD A,(DE) + CP (HL) + RET NZ + DEC HL + DEC DE + DJNZ L3A7C ; (-007H) + LD A,(DE) + CP (HL) + RET + +L3A86: EX DE,HL + CALL L3997 + LD A,(L38A6) + LD B,080H + CP 020H + JR Z,L3A95 ; (+002H) + LD B,000H +L3A95: LD A,B + LD (L3401),A + OR A + JR Z,L3B1A ; (+07eH) + LD A,(L38A5) + DEC A + JP M,L3B50 + LD HL,L38B0 + LD B,00DH + LD (HL),B + SUB 008H + JR NC,L3AB3 ; (+006H) +L3AAD: LD (HL),B + DEC HL + INC A + JR NZ,L3AAD ; (-005H) + DEC A +L3AB3: INC A + LD (L366D),A + LD IX,L38A7 + XOR A + LD H,A + LD L,A + EXX + LD B,A + LD C,A + LD H,A + LD L,A +L3AC3: LD A,(IX+000H) + CP 00DH + JR Z,L3AD1 ; (+007H) + CALL L3772 + INC IX + JR L3AC3 ; (-00eH) + +L3AD1: LD A,(L366D) + ADD A,01DH + ADD A,C + LD (L366D),A + LD A,0A0H + LD (L3402),A + PUSH HL + EXX + POP BC + LD D,H + LD E,L + LD HL,L3AEF + PUSH HL + LD HL,(L38A3) + PUSH HL + JP L34B7 + +L3AEF: LD A,(L366D) + LD C,A + LD L,A + LD H,000H + LD B,H + ADD HL,HL + ADD HL,HL + ADD HL,BC + LD BC,L37AE + ADD HL,BC + LD DE,(038A3H) + XOR A + LD (L3400),A + LD A,020H + ADD A,(HL) + LD B,A + LD A,(DE) + AND 07FH + ADD A,B + JP C,OVFLERR + SUB 021H + JR NC,L3B16 ; (+001H) + XOR A +L3B16: PUSH DE + JP L3514 + +L3B1A: LD A,(L38A5) + DEC A + JP M,L3B55 + LD HL,L38B0 + LD BC,00D00H + LD (HL),B + SUB 008H + JR NC,L3B3B ; (+00fH) + JR L3B36 ; (+008H) + +L3B2E: EX AF,AF' + LD A,(HL) + OR A + JR Z,L3B34 ; (+001H) + INC C +L3B34: LD (HL),B + EX AF,AF' +L3B36: DEC HL + INC A + JR NZ,L3B2E ; (-00cH) + DEC A +L3B3B: EX AF,AF' + LD A,C + OR A + JR Z,L3B4C ; (+00cH) +L3B40: LD A,(HL) + INC A + LD (HL),A + CP 00AH + JR NZ,L3B4C ; (+005H) + LD (HL),000H + DEC HL + JR L3B40 ; (-00cH) + +L3B4C: EX AF,AF' + JP L3AB3 + +L3B50: LD DE,L2A8D + JR L3B58 ; (+003H) + +L3B55: LD DE,L2A92 +L3B58: LD HL,(L38A3) + EX DE,HL +L3B5C: LD BC,00005H + LDIR + RET + +L3B62: PUSH DE + CALL L3A63 + JR Z,L3B6D ; (+005H) +L3B68: LD HL,L2A92 + JR L3B70 ; (+003H) + +L3B6D: LD HL,L2A8D +L3B70: POP DE + JR L3B5C ; (-017H) + +L3B73: PUSH DE + EX DE,HL + JR L3B78 ; (+001H) + +L3B77: PUSH DE +L3B78: CALL L3A63 + JR C,L3B68 ; (-015H) + JR L3B6D ; (-012H) + +L3B7F: PUSH DE + CALL L3A63 + JR Z,L3B68 ; (-01dH) + JR L3B6D ; (-01aH) + +L3B87: PUSH DE + EX DE,HL + JR L3B8C ; (+001H) + +L3B8B: PUSH DE +L3B8C: CALL L3A63 + JR C,L3B6D ; (-024H) + JR L3B68 ; (-02bH) + +L3B93: CP (HL) + DEC (HL) + JR Z,L3B73 ; (-024H) + RST 008H +L3B98: PUSH DE + EX DE,HL + LD A,(HL) + LD BC,00004H + ADD HL,BC + XOR (HL) + JP M,L3BC4 + LD DE,L3B93 + PUSH DE + LD HL,L3BE9 + CALL L3500 + POP HL + PUSH HL + LD A,(HL) + INC HL + LD E,(HL) + INC HL + LD D,(HL) + INC HL + LD C,(HL) + INC HL + LD B,(HL) + CP 0C1H + CALL NC,L3BD2 + POP HL + PUSH HL + CALL L3492 + JR L3BCE ; (+00aH) + +L3BC4: LD DE,L3B93 + LD HL,L3BE4 + PUSH DE + CALL L3B5C +L3BCE: POP HL + POP DE + JR L3B5C ; (-076H) + +L3BD2: SUB 0C0H +L3BD4: SLA E + RL D + RL C + RL B + DEC A + JR NZ,L3BD4 ; (-00bH) + LD A,0C0H + JP L3CC5 + +L3BE4: CP (HL) + DEC (HL) + JR Z,L3BC4 ; (-024H) + RST 008H +L3BE9: DB 0C5H + DB 000H + DB 000H + DB 000H + DB 0B8H +L3BEE: DB 000H + DB 000H + DB 000H + DB 000H + DB 000H +L3BF3: DB 000H + DB 000H + DB 000H + DB 000H + DB 000H +L3BF8: DB 000H + DB 000H + DB 000H + DB 000H + DB 000H +L3BFD: DB 000H + DB 000H + DB 000H + DB 000H + DB 000H +L3C02: LD DE,L3BEE + JP L3405 + +L3C08: CALL L3C02 +L3C0B: LD HL,L3BF3 +L3C0E: LD DE,L3BEE + JP L3500 + +L3C14: NOP +L3C15: NOP +L3C16: PUSH DE + LD HL,L3CE7 + CALL L35D0 + POP HL + PUSH HL + LD A,(HL) + LD (L3C15),A + OR 080H + INC HL + LD E,(HL) + INC HL + LD D,(HL) + INC HL + LD C,(HL) + INC HL + LD B,(HL) + CP 0C3H + JR C,L3C43 ; (+012H) + SUB 0C2H +L3C33: SLA E + RL D + RL C + RL B + DEC A + JR NZ,L3C33 ; (-00bH) + LD A,0C2H + CALL L3CC5 +L3C43: LD HL,08000H + CP 0C2H + JR C,L3C50 ; (+006H) + LD H,L + RES 7,B + CALL L3CC5 +L3C50: CP 0C1H + JR C,L3C5A ; (+006H) + INC L + RES 7,B + CALL L3CC5 +L3C5A: EX AF,AF' + LD A,(L3C15) + XOR H + CPL + AND 080H + LD H,A + LD (L3C14),HL + EX AF,AF' + POP HL + PUSH HL + CALL L3492 + LD A,(L3C14) + OR A + JR Z,L3C7A ; (+008H) + POP DE + PUSH DE + LD HL,L2A88 + CALL L3403 +L3C7A: POP HL + PUSH HL + LD A,(HL) + AND 07FH + LD B,A + LD A,(L3C15) + OR B + LD (HL),A + LD DE,L3BEE + CALL L3B5C + LD DE,L3BF3 + LD HL,L3BEE + CALL L3B5C + CALL L3C0B + LD DE,L3BF3 + LD HL,L3BEE + CALL L3B5C + LD HL,L3CEC + CALL L3C0E + LD HL,L3CF1 + CALL L3C08 + LD HL,L3CF6 + CALL L3C08 + LD HL,L3CFB + CALL L3C08 + LD HL,L3D00 + CALL L3C02 + POP DE + LD HL,L3BEE + JP L3500 + +L3CC5: BIT 7,B + RET NZ + EX AF,AF' + LD A,B + OR C + OR E + OR D + JR Z,L3CDE ; (+00fH) + EX AF,AF' +L3CD0: BIT 7,B + RET NZ + SLA E + RL D + RL C + RL B + DEC A + JR NZ,L3CD0 ; (-00eH) +L3CDE: LD BC,MONIT + LD DE,MONIT + LD A,080H + RET + +L3CE7: DB 0C1H + DB 0A1H + DB 0DAH + DB 00FH + DB 0C9H +L3CEC: DB 0B4H + DB 0DCH + DB 00FH + DB 00AH + DB 09FH +L3CF1: DB 039H + DB 061H + DB 08FH + DB 029H + DB 099H +L3CF6: DB 0BDH + DB 0C8H + DB 077H + DB 034H + DB 0A3H +L3CFB: DB 040H + DB 085H + DB 0E1H + DB 05DH + DB 0A5H +L3D00: DB 0C1H + DB 094H + DB 0DAH + DB 00FH + DB 0C9H +L3D05: PUSH DE + LD HL,L3CE7 + CALL L3403 + POP HL + CALL L4193 + EX DE,HL + JP L3C16 + +L3D14: PUSH DE + EX DE,HL + LD DE,L3BFD + CALL L3B5C + POP DE + PUSH DE + CALL L3D05 + POP HL + PUSH HL + LD DE,L3BF8 + CALL L3B5C + POP DE + PUSH DE + LD HL,L3BFD + CALL L3B5C + POP DE + PUSH DE + CALL L3C16 + POP DE + LD HL,L3BF8 + JP L35D0 + +L3D3D: NOP +L3D3E: NOP +L3D3F: LD A,003H + LD (L3D3D),A + PUSH DE + EX DE,HL + LD A,(HL) + ADD A,080H + JP NC,ILDATERR + JR NZ,L3D5B ; (+00dH) + EX AF,AF' + LD BC,00004H + ADD HL,BC + LD A,(HL) + SBC HL,BC + OR A + JP P,L3DBA + EX AF,AF' +L3D5B: BIT 0,A + JR NZ,L3DD5 ; (+076H) + LD (L3D3E),A + LD (HL),0C0H + LD DE,L3BEE + CALL L3B5C + LD HL,L3DED + CALL L3C0E + LD HL,L3DF2 +L3D73: CALL L3C02 +L3D76: LD DE,L3BF3 + POP HL + PUSH HL + CALL L3B5C + LD DE,L3BF3 + LD HL,L3BEE + CALL L35D0 + LD HL,L3BF3 + CALL L3C02 + LD HL,L3BEE + LD A,(HL) + AND 07FH + DEC A + JR C,L3DBA ; (+024H) + OR 080H + LD (HL),A + LD A,(L3D3D) + DEC A + LD (L3D3D),A + JR NZ,L3D76 ; (-02cH) + LD A,(L3D3E) + CP 040H + CALL NZ,L3DC1 + LD B,(HL) + RES 7,B + ADD A,B + SUB 040H + JR C,L3DBA ; (+008H) + JP M,OVFLERR + OR 080H + LD (HL),A + JR L3DBD ; (+003H) + +L3DBA: LD HL,L2A8D +L3DBD: POP DE + JP L3B5C + +L3DC1: JR C,L3DCA ; (+007H) + SUB 040H + SRL A + ADD A,040H + RET + +L3DCA: LD B,A + LD A,040H + SUB B + SRL A + LD B,A + LD A,040H + SUB B + RET + +L3DD5: INC A + LD (L3D3E),A + LD (HL),0BFH + LD DE,L3BEE + CALL L3B5C + LD HL,L3DF7 + CALL L3C0E + LD HL,L3DFC + JP L3D73 + +L3DED: DB 0C0H + DB 000H + DB 000H + DB 000H + DB 090H +L3DF2: DB 0BFH + DB 000H + DB 000H + DB 000H + DB 0E0H +L3DF7: DB 0C0H + DB 000H + DB 000H + DB 000H + DB 0E0H +L3DFC: DB 0BFH + DB 000H + DB 000H + DB 000H + DB 090H +L3E01: NOP +L3E02: NOP +L3E03: PUSH DE + LD A,(DE) + AND 080H + LD (L3E01),A + LD A,(DE) + OR 080H + LD (DE),A + LD HL,L3F2D + CALL L35D0 + POP HL + PUSH HL + LD A,040H + LD (L3E02),A + LD A,(HL) + SUB 0C1H + CALL NC,L3EBB + POP DE + PUSH DE + LD HL,L3F28 + CALL L3403 + POP HL + PUSH HL + LD DE,L3BEE + CALL L3B5C + LD HL,L3F05 + CALL L3C0E + LD HL,L3F0A + CALL L3C02 + POP HL + PUSH HL + CALL L3C0E + LD HL,L3F0F + CALL L3C02 + POP HL + PUSH HL + CALL L3C0E + LD HL,L3F14 + CALL L3C02 + POP HL + PUSH HL + CALL L3C0E + LD HL,L3F19 + CALL L3C02 + POP HL + PUSH HL + CALL L3C0E + LD HL,L3F1E + CALL L3C02 + POP HL + PUSH HL + CALL L3C0E + LD HL,L3F23 + CALL L3C02 + LD HL,L3BEE + LD B,(HL) + RES 7,B + LD A,(L3E02) + ADD A,B + JP C,L3EFC + SUB 03FH + JR C,L3EEC ; (+067H) + JP M,L3EFC + OR 080H + LD (HL),A + LD A,(L3E01) + OR A + JR Z,L3E98 ; (+007H) + LD HL,L3BEE + POP DE + JP L3B5C + +L3E98: POP DE + PUSH DE + LD HL,L2A88 + CALL L3B5C + POP DE + PUSH DE + LD A,(DE) + CP 0FCH + PUSH AF + JR C,L3EAA ; (+002H) + DEC A + LD (DE),A +L3EAA: LD HL,L3BEE + CALL L35D0 + POP AF + POP HL + RET C + LD A,(HL) + DEC A + LD (HL),A + RET M + PUSH HL + JP L348E + +L3EBB: INC HL + LD E,(HL) + INC HL + LD D,(HL) + INC HL + LD C,(HL) + INC HL + LD B,(HL) + PUSH HL + INC A + LD H,A + XOR A +L3EC7: SLA E + RL D + RL C + RL B + RLA + JR C,L3EFA ; (+028H) + DEC H + JR NZ,L3EC7 ; (-00eH) + ADD A,040H + JR C,L3EFA ; (+021H) + LD (L3E02),A + LD A,0C0H + CALL L3CC5 + POP HL + LD (HL),B + DEC HL + LD (HL),C + DEC HL + LD (HL),D + DEC HL + LD (HL),E + DEC HL + LD (HL),A + RET + +L3EEC: LD A,(L3E01) + OR A + JP Z,OVFLERR +L3EF3: LD HL,L2A8D + POP DE + JP L3B5C + +L3EFA: POP AF + POP AF +L3EFC: LD A,(L3E01) + OR A + JP NZ,OVFLERR + JR L3EF3 ; (-012H) + +L3F05: DB 0B3H + DB 07CH + DB 08CH + DB 090H + DB 0E3H +L3F0A: DB 0B6H + DB 01FH + DB 0DFH + DB 062H + DB 0F8H +L3F0F: DB 0B9H + DB 0E2H + DB 06DH + DB 0DDH + DB 0DEH +L3F14: DB 0BCH + DB 08BH + DB 033H + DB 0C1H + DB 0A0H +L3F19: DB 0BEH + DB 089H + DB 04AH + DB 0F1H + DB 0ADH +L3F1E: DB 0BFH + DB 034H + DB 033H + DB 0F2H + DB 0FAH +L3F23: DB 0C0H + DB 036H + DB 0F3H + DB 004H + DB 0B5H +L3F28: DB 0C0H + DB 000H + DB 000H + DB 000H + DB 080H +L3F2D: DB 0C0H + DB 0F8H + DB 017H + DB 072H + DB 0B1H +L3F32: DB 000H +L3F33: DB 000H +L3F34: DB 000H +L3F35: PUSH DE + LD A,080H + LD (L3F33),A + LD (L3F32),A + EX DE,HL + LD A,(HL) + OR A + JP P,OVFLERR + CP 08AH + JR NC,L3F53 ; (+00bH) + XOR A + LD (L3F32),A + EX DE,HL + CALL L3D3F + POP HL + PUSH HL + LD A,(HL) +L3F53: CP 0C1H + CALL C,L4011 + LD B,000H + CP 0C1H + JR Z,L3F64 ; (+006H) + SUB 0C1H + LD B,A + LD A,0C1H + LD (HL),A +L3F64: LD A,B + LD (L3F34),A + LD DE,L3BEE + CALL L3B5C + POP DE + PUSH DE + LD HL,L4055 + CALL L3403 + LD HL,L4055 + CALL L3C02 + POP DE + PUSH DE + LD HL,L3BEE + CALL L35D0 + POP DE + PUSH DE + LD HL,L405A + CALL L3500 + POP HL + PUSH HL + LD DE,L3BF3 + CALL L3B5C + POP HL + PUSH HL + LD DE,L3BF3 + CALL L3500 + LD DE,L3BEE + LD HL,L3BF3 + CALL L3B5C + LD HL,L4041 + CALL L3C0E + LD HL,L4046 + CALL L3C08 + LD HL,L404B + CALL L3C08 + LD HL,L4050 + CALL L3C02 + POP HL + PUSH HL + CALL L3C0E + LD DE,L3BF3 + LD HL,L3BEE + CALL L3B5C + LD A,(L3F34) + ADD A,A + INC A + LD B,A + LD A,008H +L3FD3: BIT 7,B + JR NZ,L3FDC ; (+005H) + SLA B + DEC A + JR NZ,L3FD3 ; (-009H) +L3FDC: ADD A,0C0H + LD HL,L3BEE + LD (HL),A + INC HL + XOR A + LD (HL),A + INC HL + LD (HL),A + INC HL + LD (HL),A + INC HL + LD (HL),B + LD HL,L405F + CALL L3C0E + LD HL,L3BF3 + CALL L3C02 + LD HL,L3BEE + LD A,(L3F33) + CALL L4191 + POP DE + PUSH DE + CALL L3B5C + POP DE + LD A,(L3F32) + OR A + RET NZ + LD HL,L3BEE + JP L3405 + +L4011: PUSH HL + LD DE,L3BEE + CALL L3B5C + POP DE + PUSH DE + LD HL,L2A88 + CALL L3B5C + POP DE + PUSH DE + LD HL,L3BEE + CALL L35D0 + POP HL + LD A,(HL) + CP 0C1H + JR NC,L4039 ; (+00bH) + PUSH HL + EX DE,HL + LD HL,L2A88 + CALL L3B5C + POP HL + LD A,0C1H +L4039: EX AF,AF' + LD A,000H + LD (L3F33),A + EX AF,AF' + RET + +L4041: DB 0ADH + DB 0A4H + DB 062H + DB 0CCH + DB 0AFH +L4046: DB 0B2H + DB 09FH + DB 0E9H + DB 047H + DB 0F9H +L404B: DB 0B8H + DB 0A4H + DB 082H + DB 0AAH + DB 0DCH +L4050: DB 0BFH + DB 0BFH + DB 0CCH + DB 0B0H + DB 0AFH +L4055: DB 0C1H + DB 033H + DB 0F3H + DB 004H + DB 0B5H +L405A: DB 0C3H + DB 099H + DB 079H + DB 082H + DB 0BAH +L405F: DB 0BFH + DB 0F8H + DB 017H + DB 072H + DB 0B1H +L4064: PUSH DE + CALL L3F35 + POP DE + LD HL,L406F + JP L3500 + +L406F: DB 0BFH + DB 0A9H + DB 0D8H + DB 05BH + DB 0DEH +L4074: DB 000H +L4075: DB 000H +L4076: PUSH DE + EX DE,HL + LD A,(HL) + AND 080H + LD (L4074),A + SET 7,(HL) + LD DE,L2A88 + CALL L3A63 + LD A,080H + JR NC,L40A3 ; (+019H) + LD DE,L3BEE + POP HL + PUSH HL + CALL L3B5C + POP DE + PUSH DE + LD HL,L2A88 + CALL L3B5C + POP DE + PUSH DE + LD HL,L3BEE + CALL L35D0 + XOR A +L40A3: LD (L4075),A + POP HL + PUSH HL + LD DE,L3BEE + CALL L3B5C + POP HL + PUSH HL + CALL L3C0E + LD HL,L3BEE + LD DE,L3BF3 + CALL L3B5C + LD HL,L4121 + CALL L3C0E + LD HL,L4126 + CALL L3C08 + LD HL,L412B + CALL L3C08 + LD HL,L4130 + CALL L3C08 + LD HL,L4135 + CALL L3C08 + LD HL,L413A + CALL L3C08 + LD HL,L413F + CALL L3C08 + LD HL,L4144 + CALL L3C08 + LD HL,L4149 + CALL L3C08 + LD HL,L2A88 + CALL L3C02 + POP HL + PUSH HL + CALL L3C0E + POP DE + PUSH DE + LD HL,L3BEE + CALL L3B5C + LD A,(L4075) + OR A + JR NZ,L411B ; (+010H) + POP DE + PUSH DE + LD HL,L3CE7 + CALL L3B5C + POP DE + PUSH DE + LD HL,L3BEE + DB 0CDH + DB 003H +L411A: DB 034H +L411B: POP HL + LD A,(L4074) + JR L4191 ; (+070H) + +L4121: DB 037H + DB 0CAH + DB 09AH + DB 056H + DB 0DFH +L4126: DB 0BAH + DB 012H + DB 077H + DB 0CCH + DB 0ABH +L412B: DB 03BH + DB 023H + DB 0B2H + DB 05EH + DB 0F8H +L4130: DB 0BCH + DB 020H + DB 063H + DB 090H + DB 0E9H +L4135: DB 03DH + DB 0EEH + DB 03DH + DB 0E0H + DB 0AAH +L413A: DB 0BDH + DB 04FH + DB 01AH + DB 0D5H + DB 0DFH +L413F: DB 03EH + DB 0E3H + DB 0AFH + DB 003H + DB 092H +L4144: DB 0BEH + DB 02AH + DB 07BH + DB 0C7H + DB 0CCH +L4149: DB 03FH + DB 017H + DB 096H + DB 0AAH + DB 0AAH +L414E: DB 000H + DB 000H + DB 000H + DB 000H +L4152: DB 000H +L4153: DB 000H +L4154: DB 000H + DB 000H + DB 000H + DB 000H + DB 000H +L4159: PUSH DE + LD DE,L4154 + CALL L3B5C + POP HL + PUSH HL + LD BC,00004H + ADD HL,BC + LD A,(HL) + OR A + POP HL + PUSH HL + JP P,L348E + LD A,(HL) + AND 080H + LD (L4153),A + SET 7,(HL) + EX DE,HL + CALL L3F35 + LD A,(L4153) + OR A + CALL Z,L41A4 + POP DE + PUSH DE + LD HL,L4154 + CALL L3500 + POP DE + PUSH DE + CALL L3E03 + POP HL + LD A,(L4153) +L4191: OR A + RET NZ +L4193: LD BC,00004H + ADD HL,BC + BIT 7,(HL) + PUSH AF + XOR A + SBC HL,BC + POP AF + RET Z + LD A,(HL) + ADD A,080H + LD (HL),A + RET + +L41A4: LD HL,L4154 + LD DE,L414E + CALL L3B5C + LD DE,L4154 + CALL L3A86 + LD DE,L414E + LD HL,L4154 + CALL L3403 + LD HL,L4152 + LD A,(HL) + OR A + JP M,ILDATERR + LD HL,L4154 + LD A,(HL) + INC HL + LD E,(HL) + INC HL + LD D,(HL) + INC HL + LD C,(HL) + INC HL + LD B,(HL) + AND 07FH + SUB 041H + JR C,L41E6 ; (+010H) + JR Z,L41E3 ; (+00bH) +L41D8: SLA E + RL D + RL C + RL B + DEC A + JR NZ,L41D8 ; (-00bH) +L41E3: RL B + RET C +L41E6: LD A,080H + LD (L4153),A + RET + +TAPECOPYPRG:IF BUILD_ORIG = 1 + ; Self duplicate code. This method is used to duplicate BASIC SA-5510 onto a new cassette. + NOP + LD DE,ATRB + LD HL,L4223 + LD BC,PRNT + LDIR + LD HL,TAPECOPY + LD (DTADR),HL + LD DE,TAPECOPYPRG + EX DE,HL + XOR A + SBC HL,DE + INC HL + LD (SIZE),HL + LD HL,COLDSTRT + LD (EXADR),HL + CALL ?WRI + RET C + LD HL,TAPECOPYPRG + LD A,0C9H + LD (HL),A + CALL ?WRD + PUSH AF + LD A,000H + LD (HL),A + POP AF + RET C + RET + +L4223: DB 001H,"BASIC SA-5510",00DH + ENDIF + + ; Define extensions under RFS. Each is in a seperate block due to Glass Z80 way of not evaluating labels inside IF statements when false. + ; +RFSRDI: IF BUILD_RFS = 1 + ; RFS extensions, call the RFS API to execute extended code. + LD DE,CMTFNAME + JP CMT_RDINF + ENDIF +CMDDIR: IF BUILD_RFS = 1 + CALL L193B ; Skip space to CR, ':' or char. + LD (05051H),HL + JR Z,CMDDIRNOSTR ; CR or ':' return. +CMDDIRNOSTR: EX DE,HL ; CMT_DIR expects DE to point to argument string. + CALL CMT_DIR + JP WARMSTRT + ENDIF + +BASICEND: diff --git a/asm/sa1510.asm b/asm/sa1510.asm new file mode 100644 index 0000000..0648efd --- /dev/null +++ b/asm/sa1510.asm @@ -0,0 +1,2833 @@ +; Disassembly of the file "sa1510.rom" +; + +; Configurable parameters. These are set in the wrapper file, ie monitor_SA1510.asm +; +;COLW: EQU 40 ; Width of the display screen (ie. columns). +;ROW: EQU 25 ; Number of rows on display screen. +;SCRNSZ: EQU COLW * ROW ; Total size, in bytes, of the screen display area. + + ORG 00000H +MONIT: JP START +GETL: JP ?GETL +LETNL: JP ?LTNL +NL: JP ?NL +PRNTS: JP ?PRTS +PRNTT: JP ?PRTT +PRNT: JP ?PRNT +MSG: JP ?MSG +MSGX: JP ?MSGX ; RST 3 +GETKY: JP ?GET +BRKEY: JP ?BRK +WRINF: JP ?WRI +WRDAT: JP ?WRD +RDINF: JP ?RDI +RDDAT: JP ?RDD +VERFY: JP ?VRFY +MELDY: JP ?MLDY +TIMST: JP ?TMST + NOP + NOP + JP 1038H ; Interrupt routine +TIMRD: JP ?TMRD +BELL: JP ?BEL +XTEMP: JP ?TEMP +MSTA: JP MLDST +MSTP: JP MLDSP +START: LD SP,STACK + IM 1 + CALL ?MODE + LD B,0FFH + LD HL,NAME + CALL ?CLER ; Clear 256 bytes from NAME 10F1h to 11F0h + LD A,016H + CALL PRNT + IF MODE80C = 0 + LD A,007H ; Black background, white characters. Bit 7 is clear as a write to bit 7 @ DFFFH selects 40Char mode. + ELSE + LD A,017H ; Blue background, white characters in colour mode. Bit 7 is set as a write to bit 7 @ DFFFH selects 80Char mode. + ENDIF + LD HL,ARAM + JR STRT1 + JP 1035H ; NMI routine. +STRT1: CALL CLR8 + LD HL,TIMIN + LD A,0C3H + LD (1038H),A + LD (01039H),HL + LD A,004H + LD (TEMPW),A + CALL MLDSP + CALL NL + LD DE,00100H + RST 018H + IF MODE80C = 0 ; For 80 char mode we need a hook to setup SPAGE mode. + CALL ?BEL + ELSE + CALL HOOK ; Call new routine to setup SPAGE. + ENDIF +SS: LD A,0FFH +SS1: LD (SWRK),A + LD HL,USRROM + LD (HL),055H + JR FD2 + +ST1: CALL NL + LD A,'*' + CALL PRNT + LD DE,BUFER + CALL GETL +ST2: LD A,(DE) + INC DE + CP 00DH + JR Z,ST1 + CP 'J' ; JUMP? + JR Z,GOTO + CP 'L' ; LOAD? + JR Z,LOAD + CP 'F' ; FLOPPY? + JR Z,FD + CP 'B' ; BELL? + JR Z,SG + JR ST2 + + ; JUMP COMMAND +GOTO: CALL HLHEX + JR C,ST1 + JP (HL) + + ; KEY SOUND ON OFF +SG: LD A,(SWRK) + CPL + JR SS1 + + ; FLOPPY ROM CHECK AND RUN +FD: LD HL,FLPROM +FD2: LD A,(HL) + OR A + JR NZ,ST1 + JP (HL) + +?ER: CP 002H + JR Z,ST1 + LD DE,MSGE1 + RST 018H + JR ST1 + + ; LOAD COMMAND +LOAD: CALL ?RDI + JR C,?ER + CALL NL + LD DE,MSG?2 + RST 018H + LD DE,NAME + RST 018H + CALL ?RDD + JR C,?ER + LD HL,(EXADR) + LD A,H + CP 012H + JR C,ST1 + JP (HL) + + ; LOADING +MSG?2: DB 04CH, 0B7H, 0A1H, 09CH + DB 0A6H, 0B0H, 097H, 020H + DB 00DH + + ; SIGN ON BANNER +MSG?3: DB "** MONITOR SA-1510 **", 0DH + + ; For 80 Character mode we need some space, so shorten the Check Sum Error message. + ; + ; CHECK SUM ERROR +MSGE1: IF MODE80C = 0 + DB 043H, 098H, 092H, 09FH, 0A9H, 020H, 0A4H, 0A5H + DB 0B3H, 020H, 092H, 09DH, 09DH, 0B7H, 09DH, 00DH + ELSE + DB "CK SUM?", 0DH + ENDIF + + ; Hook = 7 bytes. +HOOK: IF MODE80C = 1 + LD A,0FFH + LD (SPAGE),A + JP ?BEL ; Original called routine + ENDIF + + ; CR PAGE MODE1 +.CR: CALL .MANG + RRCA + JP NC,CURS2 + LD L,000H + INC H + CP ROW - 1 ; End of line? + JR Z,.CP1 + INC H + JP CURS1 + +.CP1: LD (DSPXY),HL + + ; SCROLLER +.SCROL: LD BC,SCRNSZ - COLW ; Scroll COLW -1 lines + LD DE,SCRN ; Start of the screen. + LD HL,SCRN + COLW ; Start of screen + 1 line. + LDIR + EX DE,HL + LD B,COLW ; Clear last line at bottom of screen. + CALL ?CLER + LD BC,0001AH + LD DE,MANG + LD HL,MANG + 1 + LDIR + LD (HL),000H + LD A,(MANG) + OR A + JP Z,?RSTR + LD HL,DSPXY + 1 + DEC (HL) + JR .SCROL + + + ; CTBL PAGE MODE1 +.CTBL: DW .SCROL + DW CURSD + DW CURSU + DW CURSR + DW CURSL + DW HOM0 + DW CLRS + DW DEL + DW INST + DW ALPHA + DW KANA + DW ?RSTR + DW REV + DW .CR + DW ?RSTR + DW ?RSTR + +?MLDY: PUSH BC + PUSH DE + PUSH HL + LD A,002H + LD (OCTV),A + LD B,001H +MLD1: LD A,(DE) + CP 00DH + JR Z,MLD4 + CP 0C8H + JR Z,MLD4 + CP 0CFH + JR Z,MLD2 + CP 02DH + JR Z,MLD2 + CP 02BH + JR Z,MLD3 + CP 0D7H + JR Z,MLD3 + CP 023H + LD HL,MTBL + JR NZ,MLD1A + LD HL,M?TBL + INC DE +MLD1A: CALL ONPU + JR C,MLD1 + CALL RYTHM + JR C,MLD5 + CALL MLDST + LD B,C + JR MLD1 +MLD2: LD A,003H +MLD2A: LD (OCTV),A + INC DE + JR MLD1 +MLD3: LD A,001H + JR MLD2A +MLD4: CALL RYTHM +MLD5: PUSH AF + CALL MLDSP + POP AF + JP RET3 + +ONPU: PUSH BC + LD B,008H + LD A,(DE) +ONP1A: CP (HL) + JR Z,ONP2 + INC HL + INC HL + INC HL + DJNZ ONP1A + SCF + INC DE + POP BC + RET + +ONP2: INC HL + PUSH DE + LD E,(HL) + INC HL + LD D,(HL) + EX DE,HL + LD A,H + OR A + JR Z,ONP2B + LD A,(OCTV) +ONP2A: DEC A + JR Z,ONP2B + ADD HL,HL + JR ONP2A +ONP2B: LD (RATIO),HL + LD HL,OCTV + LD (HL),002H + DEC HL + POP DE + INC DE + LD A,(DE) + LD B,A + AND 0F0H + CP 030H + JR Z,ONP2C + LD A,(HL) + JR ONP2D +ONP2C: INC DE + LD A,B + AND 00FH + LD (HL),A +ONP2D: LD HL,OPTBL + ADD A,L + LD L,A + LD C,(HL) + LD A,(TEMPW) + LD B,A + XOR A + JP L09AB + +MTBL: DB 043H + DB 077H + DB 007H + DB 044H + DB 0A7H + DB 006H + DB 045H + DB 0EDH + DB 005H + DB 046H + DB 098H + DB 005H + DB 047H + DB 0FCH + DB 004H + DB 041H + DB 071H + DB 004H + DB 042H + DB 0F5H + DB 003H + DB 052H + DB 000H + DB 000H +M?TBL: DB 043H + DB 00CH + DB 007H + DB 044H + DB 047H + DB 006H + DB 045H + DB 098H + DB 005H + DB 046H + DB 048H + DB 005H + DB 047H + DB 0B4H + DB 004H + DB 041H + DB 031H + DB 004H + DB 042H + DB 0BBH + DB 003H + DB 052H + DB 000H + DB 000H + +OPTBL: DB 001H + DB 002H + DB 003H + DB 004H + DB 006H + DB 008H + DB 00CH + DB 010H + DB 018H + DB 020H + +?SAVE: LD HL,FLSDT + LD (HL),0EFH + LD A,(KANAF) + OR A + JR Z,L0270 + LD (HL),0FFH +L0270: LD A,(HL) + PUSH AF + CALL ?PONT + LD A,(HL) + LD (FLASH),A + POP AF + LD (HL),A + XOR A + LD HL,KEYPA + LD (HL),A + CPL + LD (HL),A + RET + +MGP.I: PUSH AF + PUSH HL + LD HL,MGPNT + LD A,(HL) + INC A + CP 033H + JR NZ,L028F + XOR A +L028F: PUSH HL + LD L,A + LD A,(SPAGE) + OR A + LD A,L + POP HL + JR NZ,L029A + LD (HL),A +L029A: POP HL + POP AF + RET + +MGP.D: PUSH AF + PUSH HL + LD HL,MGPNT + LD A,(HL) + DEC A + JP P,L028F + LD A,032H + JR L028F +MLDST: LD HL,(RATIO) + LD A,H + OR A + JR Z,MLDSP + PUSH DE + EX DE,HL + LD HL,CONT0 + LD (HL),E + LD (HL),D + LD A,001H + POP DE + JR L02C4 +MLDSP: LD A,034H + LD (CONTF),A + XOR A +L02C4: LD (SUNDG),A + RET + +RYTHM: LD HL,KEYPA + LD (HL),0F0H + INC HL + LD A,(HL) + AND 081H + JR NZ,L02D5 + SCF + RET + +L02D5: LD A,(SUNDG) + RRCA + JR C,L02D5 +L02DB: LD A,(SUNDG) + RRCA + JR NC,L02DB + DJNZ L02D5 + XOR A + RET + +?BEL: PUSH DE + LD DE,00DB1H + RST 030H + POP DE + RET + +?TEMP: PUSH AF + PUSH BC + AND 00FH + LD B,A + LD A,008H + SUB B + LD (TEMPW),A + POP BC + POP AF + RET + +?TMST: DI + PUSH BC + PUSH DE + PUSH HL + LD (AMPM),A + LD A,0F0H + LD (TIMFG),A + LD HL,0A8C0H + XOR A + SBC HL,DE + PUSH HL + INC HL + EX DE,HL + LD HL,CONTF + LD (HL),074H + LD (HL),0B0H + DEC HL + LD (HL),E + LD (HL),D + DEC HL + LD (HL),00AH + LD (HL),000H + INC HL + INC HL + LD (HL),080H + DEC HL +L0323: LD C,(HL) + LD A,(HL) + CP D + JR NZ,L0323 + LD A,C + CP E + JR NZ,L0323 + DEC HL + NOP + NOP + NOP + LD (HL),00CH + LD (HL),07BH + INC HL + POP DE +L0336: LD C,(HL) + LD A,(HL) + CP D + JR NZ,L0336 + LD A,C + CP E + JR NZ,L0336 + POP HL + POP DE + POP BC + EI + RET + +?TMRD: PUSH HL + LD HL,CONTF + LD (HL),080H + DEC HL + DI + LD E,(HL) + LD D,(HL) + EI + LD A,E + OR D + JR Z,?TMR1 + XOR A + LD HL,0A8C0H + SBC HL,DE + JR C,?TMR2 + EX DE,HL + LD A,(AMPM) + POP HL + RET + +?TMR1: LD DE,0A8C0H +?TMR1A: LD A,(AMPM) + XOR 001H + POP HL + RET + +?TMR2: DI + LD HL,CONT2 + LD A,(HL) + CPL + LD E,A + LD A,(HL) + CPL + LD D,A + EI + INC DE + JR ?TMR1A + +TIMIN: PUSH AF + PUSH BC + PUSH DE + PUSH HL + LD HL,AMPM + LD A,(HL) + XOR 001H + LD (HL),A + LD HL,CONTF + LD (HL),080H + DEC HL + PUSH HL + LD E,(HL) + LD D,(HL) + LD HL,0A8C0H + ADD HL,DE + DEC HL + DEC HL + EX DE,HL + POP HL + LD (HL),E + LD (HL),D + POP HL + POP DE + POP BC + POP AF + EI + RET + +.DSP03: EX DE,HL + LD (HL),001H + INC HL + LD (HL),000H + JP CURSR +.MANG2: LD A,(DSPXY + 1) + ADD A,L + LD L,A + LD A,(HL) + INC HL + RL (HL) + OR (HL) + RR (HL) + RRCA + EX DE,HL + LD HL,(DSPXY) + RET + + LD C,H + POP AF +PRTHL: LD A,H + CALL PRTHX + LD A,L + JR PRTHX + LD B,E + LD B,E +PRTHX: PUSH AF + RRCA + RRCA + RRCA + RRCA + CALL ASC + CALL PRNT + POP AF + CALL ASC + JP PRNT +L03D5: POP DE + POP HL + POP BC + POP AF + RET + +ASC: AND 00FH + CP 00AH + JR C,NOADD + ADD A,007H +NOADD: ADD A,030H + RET + +HEXJ: CP 030H + RET C + CP 03AH + JR C,HEX1 + SUB 007H + CP 040H + JR NC,HEX2 +HEX1: AND 00FH + RET +HEX2: SCF + RET + + ; Unused memory. + LD C,B + LD C,H + +HEX: JR HEXJ + +HOME: LD HL,(DSPXY) + LD A,(MGPNT) + SUB H + JR NC,HOM1 + ADD A,032H +HOM1: LD (MGPNT),A +HOM0: LD HL,00000H + JP CURS3 + + ; Unused memory. + INC L + +HLHEX: PUSH DE + CALL L041F + JR C,L041D + LD H,A + CALL L041F + JR C,L041D + LD L,A +L041D: POP DE + RET + +L041F: PUSH BC + LD A,(DE) + INC DE + CALL HEX + JR C,L0434 + RRCA + RRCA + RRCA + RRCA + LD C,A + LD A,(DE) + INC DE + CALL HEX + JR C,L0434 + OR C +L0434: POP BC + RET + +?WRI: DI + PUSH DE + PUSH BC + PUSH HL + LD D,0D7H + LD E,0CCH + LD HL,STACK + LD BC,00080H +L0444: CALL L071A + CALL MOTOR + JR C,L0464 + LD A,E + CP 0CCH + JR NZ,L045E + CALL NL + PUSH DE + LD DE,MSG?7 ; Writing Message + RST 018H + LD DE,NAME + RST 018H + POP DE +L045E: CALL L077A + CALL L0485 +L0464: JP L0552 + + ; Writing +MSG?7: DB 057H, 09DH, 0A6H, 096H, 0A6H + DB 0B0H, 097H, 020H, 00DH + +?WRD: DI + PUSH DE + PUSH BC + PUSH HL + LD D,0D7H + LD E,053H + LD BC,(SIZE) + LD HL,(DTADR) + LD A,B + OR C + JR Z,L04CB + JR L0444 +L0485: PUSH DE + PUSH BC + PUSH HL + LD D,002H + LD A,0F0H + LD (KEYPA),A +L048F: LD A,(HL) + CALL L0767 + LD A,(KEYPB) + AND 081H + JP NZ,L049E + SCF + JR L04CB +L049E: INC HL + DEC BC + LD A,B + OR C + JP NZ,L048F + LD HL,(SUMDT) + LD A,H + CALL L0767 + LD A,L + CALL L0767 + CALL L0D57 + DEC D + JP NZ,L04BB + OR A + JP L04CB +L04BB: LD B,000H +L04BD: CALL L0D3E + DEC B + JP NZ,L04BD + POP HL + POP BC + PUSH BC + PUSH HL + JP L048F +L04CB: POP HL + POP BC + POP DE + RET + +?RDI: DI + PUSH DE + PUSH BC + PUSH HL + LD D,0D2H + LD E,0CCH + LD BC,00080H + LD HL,STACK +L04DD: CALL MOTOR + JP C,L0570 + CALL TMARK + JP C,L0570 + CALL L0505 + JP L0552 + +?RDD: DI + PUSH DE + PUSH BC + PUSH HL + LD D,0D2H + LD E,053H + LD BC,(SIZE) + LD HL,(DTADR) + LD A,B + OR C + JP Z,L0552 + JR L04DD +L0505: PUSH DE + PUSH BC + PUSH HL + LD H,002H +L050A: LD BC,KEYPB + LD DE,KEYPC +L0510: CALL EDGE + JP C,L0570 + CALL DLY3 + LD A,(DE) + AND 020H + JP Z,L0510 + LD D,H + LD HL,00000H + LD (SUMDT),HL + POP HL + POP BC + PUSH BC + PUSH HL +L052A: CALL RBYTE + JP C,L0570 + LD (HL),A + INC HL + DEC BC + LD A,B + OR C + JP NZ,L052A + LD HL,(SUMDT) + CALL RBYTE + JP C,L0570 + LD E,A + CALL RBYTE + JP C,L0570 + CP L + JP NZ,L0563 + LD A,E + CP H + JP NZ,L0563 +L0551: XOR A +L0552: POP HL + POP BC + POP DE + CALL MSTOP + PUSH AF + LD A,(TIMFG) + CP 0F0H + JR NZ,L0561 + EI +L0561: POP AF + RET + +L0563: DEC D + JR Z,L056C + LD H,D + CALL GAPCK + JR L050A +L056C: LD A,001H + JR L0572 +L0570: LD A,002H +L0572: SCF + JR L0552 + + +?VRFY: DI + PUSH DE + PUSH BC + PUSH HL + LD BC,(SIZE) + LD HL,(DTADR) + LD D,0D2H + LD E,053H + LD A,B + OR C + JR Z,L0552 + CALL L071A + CALL MOTOR + JR C,L0570 + CALL TMARK + JP C,L0570 + CALL TVRFY + JR L0552 + +TVRFY: PUSH DE + PUSH BC + PUSH HL + LD H,002H +TVF1: LD BC,KEYPB + LD DE,KEYPC +TVF2: CALL EDGE + JP C,L0570 + CALL DLY3 + LD A,(DE) + AND 020H + JP Z,TVF2 + LD D,H + POP HL + POP BC + PUSH BC + PUSH HL +TVF3: CALL RBYTE + JP C,L0570 + CP (HL) + JP NZ,L056C + INC HL + DEC BC + LD A,B + OR C + JP NZ,TVF3 + LD HL,(CSMDT) + CALL RBYTE + CP H + JR NZ,L056C + CALL RBYTE + CP L + JR NZ,L056C + DEC D + JP Z,L0551 + LD H,D + JR TVF1 + + ; PRINT '00' +GETLD: LD DE,DBLZERO + RST 018H + JP AUTO2 + + ; ROLL UP +ROLUP: LD HL,PBIAS + LD A,(ROLEND) + CP (HL) + JP Z,?RSTR + JP ROLU1 + +?LOAD: PUSH AF + LD A,(FLASH) + CALL ?PONT + LD (HL),A + POP AF + RET + + ; Unused memory + XOR E + LD C,A + +EDGE: LD A,0F0H + LD (KEYPA),A + NOP +EDG1: LD A,(BC) + AND 081H + JP NZ,EDG1A + SCF + RET +EDG1A: LD A,(DE) + AND 020H + JP NZ,EDG1 +EDG2: LD A,(BC) + AND 081H + JP NZ,EDG3 + SCF + RET +EDG3: LD A,(DE) + AND 020H + JP Z,EDG2 + RET + +RBYTE: PUSH BC + PUSH DE + PUSH HL + LD HL,00800H + LD BC,KEYPB + LD DE,KEYPC +RBY1: CALL EDGE + JP C,RBY3 + CALL DLY3 + LD A,(DE) + AND 020H + JP Z,RBY2 + PUSH HL + LD HL,(SUMDT) + INC HL + LD (SUMDT),HL + POP HL + SCF +RBY2: LD A,L + RLA + LD L,A + DEC H + JP NZ,RBY1 + CALL EDGE + LD A,L +RBY3: POP HL + POP DE + POP BC + RET + +TMARK: CALL GAPCK + PUSH BC + PUSH DE + PUSH HL + LD HL,02828H ; 40 short and 40 long gap pulses + LD A,E + CP 0CCH + JP Z,TM0 + LD HL,01414H ; 20 short and 20 long tape mark pulses +TM0: LD (TMCNT),HL + LD BC,KEYPB + LD DE,KEYPC +TM1: LD HL,(TMCNT) +TM2: CALL EDGE + JP C,RET3 + CALL DLY3 + LD A,(DE) + AND 020H + JP Z,TM1 + DEC H + JP NZ,TM2 +TM3: CALL EDGE + JP C,RET3 + CALL DLY3 + LD A,(DE) + AND 020H + JP NZ,TM1 + DEC L + JP NZ,TM3 + CALL EDGE +RET3: +TM4: POP HL + POP DE + POP BC + RET + +MOTOR: PUSH BC + PUSH DE + PUSH HL + LD B,00AH +MOT1: LD A,(KEYPC) + AND 010H + JR Z,MOT4 +MOT2: LD B,0A6H +L06B1: CALL DLY12 + DJNZ L06B1 + XOR A +MOT7: JR RET3 +MOT4: LD A,006H + LD HL,KEYPF + LD (HL),A + INC A + LD (HL),A + DJNZ MOT1 + CALL NL + LD A,D + CP 0D7H + JR Z,MOT8 + LD DE,00D9EH + JR MOT9 +MOT8: LD DE,MSG_3 ; RECORD message. + RST 018H + LD DE,00DA0H +MOT9: RST 018H +MOT5: LD A,(KEYPC) + AND 010H + JR NZ,MOT2 + CALL ?BRK + JR NZ,MOT5 + SCF + JR MOT7 + +L06E7: LD B,0C9H + LD A,(KANAF) + OR A + JR NZ,L06F0 + INC B +L06F0: LD A,B + JP ?KY1 + + ; PRESS RECORD message. +MSG_3: DB 07FH, 020H + DB 052H, 045H, 043H, 04FH, 052H + DB 044H, 02EH, 00DH + + ; Padding not used + DB 034H + DB 044H + +MSTOP: PUSH AF + PUSH BC + PUSH DE + LD B,00AH +L0705: LD A,(KEYPC) + AND 010H + JR Z,L0717 + LD A,006H + LD (KEYPF),A + INC A + LD (KEYPF),A + DJNZ L0705 +L0717: JP ?RSTR1 +L071A: PUSH BC + PUSH DE + PUSH HL + LD DE,00000H +L0720: LD A,B + OR C + JR NZ,L072F + EX DE,HL + LD (SUMDT),HL + LD (CSMDT),HL + POP HL + POP DE + POP BC + RET + +L072F: LD A,(HL) + PUSH BC + LD B,008H +L0733: RLCA + JR NC,L0737 + INC DE +L0737: DJNZ L0733 + POP BC + INC HL + DEC BC + JR L0720 +L073E: RLCA + RLCA + RLCA + LD C,A + LD A,E +L0743: DEC H + RRCA + JR NC,L0743 + LD A,H + ADD A,C + LD C,A + JP SWEP01 +?MODE: LD HL,KEYPF + LD (HL),08AH + LD (HL),007H + LD (HL),005H + LD (HL),001H + RET + +L0759: LD A,00EH +L075B: DEC A + JP NZ,L075B + RET + +L0760: LD A,00DH +L0762: DEC A + JP NZ,L0762 + RET + +L0767: PUSH BC + LD B,008H + CALL L0D57 +L076D: RLCA + CALL C,L0D57 + CALL NC,L0D3E + DEC B + JP NZ,L076D + POP BC + RET + +L077A: PUSH BC + PUSH DE + LD A,E + LD BC,055F0H + LD DE,02828H + CP 0CCH + JP Z,L078E + LD BC,02AF8H + LD DE,01414H +L078E: CALL L0D3E + DEC BC + LD A,B + OR C + JR NZ,L078E +L0796: CALL L0D57 + DEC D + JR NZ,L0796 +L079C: CALL L0D3E + DEC E + JR NZ,L079C + CALL L0D57 + POP DE + POP BC + RET + +?GETL: PUSH AF + PUSH BC + PUSH HL + PUSH DE +GETL0: CALL ?SAVE +GETL0A: CALL ?KEY + CP 0CBH + JR Z,GETL0A +GETL0B: CALL ?KEY + CALL ?FLAS + JR Z,GETL0B +GETL0C: PUSH AF + XOR A + LD (STRGF),A + POP AF +AUTO3: LD B,A +GETL0D: CALL ?LOAD + LD A,(SWRK) + OR A + CALL Z,?BEL + LD A,B + CP 0E7H + JP Z,GETLD + CP 0E6H + JR Z,CHGPK + CP 0EEH + JR Z,CHGPA + CP 0E5H + JR Z,DMT + CP 0E0H + JP Z,LOCK + JR NC,GETL0B + AND 0F0H + CP 0C0H + JR NZ,GETL2 + LD A,B + CP 0CDH + JR Z,GETL3 + CP 0CBH + JP Z,GETLC + CP 0C7H + JR NC,GETL5 + LD A,(KANAF) + OR A + LD A,B + JR Z,GETL5 +GETL2: LD A,B + CALL ?DSP +AUTO2: CALL ?SAVE + LD A,(STRGF) + OR A + JR NZ,AUTO5 +AUTOL: LD E,014H +AUTOL1: CALL ?KEY + JR NZ,AUTO3 + CALL AUTCK +GETL1: JR C,GETL0B + DEC E + JR NZ,AUTOL1 + LD A,001H + LD (STRGF),A +AUTO5: CALL DLY12 + CALL DLY12 + CALL ?KEY + CALL ?FLAS + JR NZ,GETL0C + CALL AUTCK + JR C,GETL1 + JR GETL0D +GETL5: CALL ?DPCT + JR AUTO2 + +CHGPA: XOR A + IF MODE80C = 1 + JR CHGPK + ELSE + JR CHGPK1 + ENDIF +CHGPK: LD A,0FFH +CHGPK1: LD (SPAGE),A + LD A,0C6H + CALL ?DPCT +CHGP1: JP GETL0 + +GETLC: POP HL + PUSH HL + LD (HL),01BH + INC HL + LD (HL),00DH + JR GETLR + +DMT: LD B,05AH + JR GETL2 + +GETL3: CALL .MANG + LD B,COLW ; PDS was 028H + JR NC,GETLA + DEC H +GETLB: LD B,COLW*2 ; 050H +GETL6: LD L,000H + CALL ?PNT1 + POP DE + PUSH DE +GETL6A: LD A,(HL) + CALL ?DACN + LD (DE),A + INC HL + RES 3,H + INC DE + DJNZ GETL6A + EX DE,HL +GETL6B: LD (HL),00DH + DEC HL + LD A,(HL) + CP 020H + JR Z,GETL6B +GETLR: CALL ?LTNL + JP L03D5 + +GETLA: RRCA + JR NC,GETL6 + JR GETLB + +LOCK: LD HL,SFTLK + LD A,(HL) + CPL + LD (HL),A + JR CHGP1 + +?MSG: PUSH AF + PUSH BC + PUSH DE +MSG1: LD A,(DE) + CP 00DH + JR Z,MSGX2 + CALL ?PRNT + INC DE + JR MSG1 + +?MSGX: PUSH AF + PUSH BC + PUSH DE +MSGX1: LD A,(DE) + CP 00DH +MSGX2: JP Z,?RSTR1 + CALL ?ADCN + CALL PRNT3 + INC DE + JR MSGX1 + +?GET: PUSH BC + PUSH HL + LD B,009H + LD HL,SWPW + 1 + CALL ?CLRFF + POP HL + POP BC + CALL ?KEY + SUB 0F0H + RET Z + ADD A,0F0H + JP ?DACN + +?KEY: PUSH BC + PUSH DE + PUSH HL + CALL ?SWEP + LD A,B + RLCA + JR C,?KY2 + LD A,0F0H +?KY1: LD E,A + CALL AUTCK + LD A,(KDATW) + OR A + JR Z,?KY11 + CALL DLY12 + CALL ?SWEP + LD A,B + RLCA + JR C,?KY2 +?KY11: LD A,E + CP 0F0H + JR NZ,?KY9 +?KY10: JP RET3 +?KY2: RLCA + RLCA + RLCA + JP C,L06E7 + RLCA + JP C,_BRK + LD H,000H + LD L,C + LD A,C + CP 038H + JR NC,?KY6 + LD A,(KANAF) + OR A + LD A,B + RLCA + JR NZ,?KY4 + LD B,A + LD A,(SFTLK) + OR A + LD A,B + JR Z,L0917 + RLA + CCF + RRA +L0917: RLA + RLA + JR NC,?KY3 +L091B: LD DE,KTBLC +?KY5: ADD HL,DE + LD A,(HL) + JR ?KY1 +?KY3: RRA + JR NC,?KY6 + LD DE,KTBLS + JR ?KY5 +?KY6: LD DE,KTBL ; 00BEAH + JR ?KY5 +?KY4: RLCA + JR C,?KY7 + RLCA + JR C,L091B + LD DE,KTBLG + JR ?KY5 +?KY7: LD DE,KTBLGS + JR ?KY5 +?KY9: CALL AUTCK + INC A + LD A,E + JR ?KY10 + +?PRT: LD A,C + CALL ?ADCN + LD C,A + AND 0F0H + CP 0F0H + RET Z + + CP 0C0H + LD A,C + JR NZ,PRNT3 +PRNT5: CALL ?DPCT + CP 0C3H + JR Z,PRNT4 + CP 0C5H + JR Z,PRNT2 + CP 0CDH ; CR + JR Z,PRNT2 + CP 0C6H + RET NZ + +PRNT2: XOR A +PRNT2A: LD (DPRNT),A + RET + +PRNT3: CALL ?DSP +PRNT4: LD A,(DPRNT) + INC A + CP COLW*2 ; 050H + JR C,PRNT4A + SUB COLW*2 ; 050H +PRNT4A: JR PRNT2A + +?NL: LD A,(DPRNT) + OR A + RET Z + +?LTNL: LD A,0CDH + JR PRNT5 +?PRTT: CALL PRNTS + LD A,(DPRNT) + OR A + RET Z + +L098C: SUB 00AH + JR C,?PRTT + JR NZ,L098C + RET + +?PRTS: LD A,020H +?PRNT: CP 00DH + JR Z,?LTNL + PUSH BC + LD C,A + LD B,A + CALL ?PRT + LD A,B + POP BC + RET + +DLY3: NEG + NEG + LD A,02AH + JP L0762 +L09AB: ADD A,C + DJNZ L09AB + POP BC + LD C,A + XOR A + RET + + DB 010H +??KEY: PUSH BC + PUSH DE + PUSH HL + CALL ?SAVE +L09B9: CALL ?KEY + CALL ?FLAS + JR Z,L09B9 + CALL ?LOAD + JP RET3 +L09C7: PUSH DE + PUSH HL + LD HL,PBIAS + XOR A + RLD + LD D,A + LD E,(HL) + RRD + XOR A + RR D + RR E + LD HL,SCRN + ADD HL,DE + LD (PAGETP),HL + POP HL + POP DE + RET + +L09E2: XOR A +CLR8: LD BC,00800H + PUSH DE + LD D,A +L09E8: LD (HL),D + INC HL + DEC BC + LD A,B + OR C + JR NZ,L09E8 + POP DE + RET + +AUTCK: LD HL,KDATW + LD A,(HL) + INC HL + LD D,(HL) + LD (HL),A + SUB D + RET NC + INC (HL) + RET + +DBLZERO:DB 030H + DB 030H + DB 00DH + +?FLAS: PUSH AF + PUSH HL + LD A,(KEYPC) + RLCA + RLCA + JR C,FLAS1 + LD A,(FLSDT) +FLAS2: CALL ?PONT + LD (HL),A +FLAS3: POP HL + POP AF + RET + +FLAS1: LD A,(FLASH) + JR FLAS2 + +REV: LD HL,REVFLG + LD A,(HL) + OR A + CPL + LD (HL),A + JR Z,REV1 + LD A,(INVDSP) + JR REV2 +REV1: LD A,(NRMDSP) +REV2: JP ?RSTR + +.MANG: LD HL,MANG + LD A,(SPAGE) + OR A + JP NZ,.MANG2 + LD A,(MGPNT) +.MANG3: SUB 008H + INC HL + JR NC,.MANG3 + ADD A,008H + LD C,(HL) + DEC HL + LD B,A + INC B + PUSH BC + LD A,(HL) +.MANG4: RR C + RRA + DJNZ .MANG4 + POP BC + EX DE,HL +.MANG1: LD HL,(DSPXY) + RET + +?SWEP: PUSH DE + PUSH HL + XOR A + LD (KDATW),A + LD B,0FAH + LD D,A + CALL ?BRK + JR NZ,SWEP6 + LD D,088H + JR SWEP9 +SWEP6: LD HL,SWPW + PUSH HL + JR NC,SWEP11 + LD D,A + AND 060H + JR NZ,SWEP11 + LD A,D + XOR (HL) + BIT 4,A + LD (HL),D + JR Z,SWEP0 +SWEP01: SET 7,D +SWEP0: DEC B + POP HL + INC HL + LD A,B + LD (KEYPA),A + CP 0F0H + JR NZ,SWEP3 + LD A,(HL) + CP 003H + JR C,SWEP9 + LD (HL),000H + RES 7,D +SWEP9: LD B,D + POP HL + POP DE + RET + +SWEP11: LD (HL),000H + JR SWEP0 +SWEP3: LD A,(KEYPB) + LD E,A + CPL + AND (HL) + LD (HL),E + PUSH HL + LD HL,KDATW + PUSH BC + LD B,008H +SWEP8: RLC E + JR C,SWEP7 + INC (HL) +SWEP7: DJNZ SWEP8 + POP BC + OR A + JR Z,SWEP0 + LD E,A +SWEP2: LD H,008H + LD A,B + DEC A + AND 00FH + JP L073E + +; ASCII TO DISPLAY CODE TABLE +ATBL: DB 0CCH + DB 0E0H + DB 0F2H + DB 0F3H + DB 0CEH + DB 0CFH + DB 0F6H + DB 0F7H + DB 0F8H + DB 0F9H + DB 0FAH + DB 0FBH + DB 0FCH + DB 0FDH + DB 0FEH + DB 0FFH + DB 0E1H + DB 0C1H + DB 0C2H + DB 0C3H + DB 0C4H + DB 0C5H + DB 0C6H + DB 0E2H + DB 0E3H + DB 0E4H + DB 0E5H + DB 0E6H + DB 0EBH + DB 0EEH + DB 0EFH + DB 0F4H + DB 000H ; 32 space + DB 061H ; 33 a + DB 062H + DB 063H + DB 064H + DB 065H + DB 066H + DB 067H + DB 068H + DB 069H + DB 06BH + DB 06AH + DB 02FH + DB 02AH + DB 02EH + DB 02DH + DB 020H + DB 021H + DB 022H + DB 023H + DB 024H + DB 025H + DB 026H + DB 027H + DB 028H + DB 029H + DB 04FH + DB 02CH + DB 051H + DB 02BH + DB 057H + DB 049H + DB 055H + DB 001H + DB 002H + DB 003H + DB 004H + DB 005H + DB 006H + DB 007H + DB 008H + DB 009H + DB 00AH + DB 00BH + DB 00CH + DB 00DH + DB 00EH + DB 00FH + DB 010H + DB 011H + DB 012H + DB 013H + DB 014H + DB 015H + DB 016H + DB 017H + DB 018H + DB 019H + DB 01AH + DB 052H + DB 059H + DB 054H + DB 050H + DB 045H + DB 0C7H + DB 0C8H + DB 0C9H + DB 0CAH + DB 0CBH + DB 0CCH + DB 0CDH + DB 0CEH + DB 0CFH + DB 0DFH + DB 0E7H + DB 0E8H + DB 0E9H + DB 0EAH + DB 0ECH + DB 0EDH + DB 0D0H + DB 0D1H + DB 0D2H + DB 0D3H + DB 0D4H + DB 0D5H + DB 0D6H + DB 0D7H + DB 0D8H + DB 0D9H + DB 0DAH + DB 0DBH + DB 0DCH + DB 0DDH + DB 0DEH + DB 0C0H + DB 040H + DB 0BDH + DB 09DH + DB 0B1H + DB 0B5H + DB 0B9H + DB 0B4H + DB 09EH + DB 0B2H + DB 0B6H + DB 0BAH + DB 0BEH + DB 09FH + DB 0B3H + DB 0B7H + DB 0BBH + DB 0BFH + DB 0A3H + DB 085H + DB 0A4H + DB 0A5H + DB 0A6H + DB 094H + DB 087H + DB 088H + DB 09CH + DB 082H + DB 098H + DB 084H + DB 092H + DB 090H + DB 083H + DB 091H + DB 081H + DB 09AH + DB 097H + DB 093H + DB 095H + DB 089H + DB 0A1H + DB 0AFH + DB 08BH + DB 086H + DB 096H + DB 0A2H + DB 0ABH + DB 0AAH + DB 08AH + DB 08EH + DB 0B0H + DB 0ADH + DB 08DH + DB 0A7H + DB 0A8H + DB 0A9H + DB 08FH + DB 08CH + DB 0AEH + DB 0ACH + DB 09BH + DB 0A0H + DB 099H + DB 0BCH + DB 0B8H + DB 080H + DB 03BH + DB 03AH + DB 070H + DB 03CH + DB 071H + DB 05AH + DB 03DH + DB 043H + DB 056H + DB 03FH + DB 01EH + DB 04AH + DB 01CH + DB 05DH + DB 03EH + DB 05CH + DB 01FH + DB 05FH + DB 05EH + DB 037H + DB 07BH + DB 07FH + DB 036H + DB 07AH + DB 07EH + DB 033H + DB 04BH + DB 04CH + DB 01DH + DB 06CH + DB 05BH + DB 078H + DB 041H + DB 035H + DB 034H + DB 074H + DB 030H + DB 038H + DB 075H + DB 039H + DB 04DH + DB 06FH + DB 06EH + DB 032H + DB 077H + DB 076H + DB 072H + DB 073H + DB 047H + DB 07CH + DB 053H + DB 031H + DB 04EH + DB 06DH + DB 048H + DB 046H + DB 07DH + DB 044H + DB 01BH + DB 058H + DB 079H + DB 042H + DB 060H + DB 0FDH + DB 0CBH + DB 000H + DB 01EH + +?ADCN: PUSH BC + PUSH HL + LD HL,ATBL ;00AB5H + LD C,A + LD B,000H + ADD HL,BC + LD A,(HL) + JR DACN3 + +_BRK: LD A,0CBH + OR A + JP ?KY10 + + ; Unused memory. + DB 029H + DB 0F4H + DB 0DDH + +?DACN: PUSH BC + PUSH HL + PUSH DE + LD HL,ATBL + LD D,H + LD E,L + LD BC,00100H + CPIR + JR Z,DACN1 + LD A,0F0H +DACN2: POP DE +DACN3: POP HL + POP BC + RET + +DACN1: OR A + DEC HL + SBC HL,DE + LD A,L + JR DACN2 + +KTBL: ;S0 00 - 07 ; + DB 022H ; 2 + DB 021H ; 1 + DB 017H ; W + DB 011H ; Q + DB 001H ; A + DB 0C7H ; DEL + DB 000H ; NULL + DB 01AH ; Z + ;S1 08 - 0F ; + DB 024H ; 4 + DB 023H ; 3 + DB 012H ; R + DB 005H ; E + DB 004H ; D + DB 013H ; S + DB 018H ; X + DB 003H ; C + ;S2 10 - 17 ; + DB 026H ; 6 + DB 025H ; 5 + DB 019H ; Y + DB 014H ; T + DB 007H ; G + DB 006H ; F + DB 016H ; V + DB 002H ; B + ;S3 18 - 1F ; + DB 028H ; 8 + DB 027H ; 7 + DB 009H ; I + DB 015H ; U + DB 00AH ; J + DB 008H ; H + DB 00EH ; N + DB 000H ; SPACE + ;S4 20 - 27 ; + DB 020H ; 0 + DB 029H ; 9 + DB 010H ; P + DB 00FH ; O + DB 00CH ; L + DB 00BH ; K + DB 02FH ; , + DB 00DH ; M + ;S5 28 - 2F ; + DB 0BEH ; ^ + DB 02AH ; - + DB 052H ; [ + DB 055H ; @ + DB 04FH ; : + DB 02CH ; ; + DB 02DH ; / + DB 02EH ; . + ;S6 30 - 37 ; + DB 0C5H ; HOME + DB 059H ; \ + DB 0C3H ; CURSOR RIGHT + DB 0C2H ; CURSOR UP + DB 0CDH ; CR + DB 054H ; ] + DB 000H ; NULL + DB 049H ; ? + ;S7 38 - 3F ; + DB 028H ; 8 + DB 027H ; 7 + DB 025H ; 5 + DB 024H ; 4 + DB 022H ; 2 + DB 021H ; 1 + DB 0E7H ; 00 + DB 020H ; 0 + ; S8 ; + DB 06AH ; * + DB 029H ; 9 + DB 02AH ; - + DB 026H ; 6 + DB 000H ; NULL + DB 023H ; 3 + DB 000H ; NULL + DB 02EH ; , + +KTBLS: ;S0 00 - 07 ; + DB 062H ; " + DB 061H ; ! + DB 097H ; w + DB 091H ; q + DB 081H ; a + DB 0C8H ; INSERT + DB 000H ; NULL + DB 09AH ; z + ;S1 08 - 0F ; + DB 064H ; $ + DB 063H ; # + DB 092H ; r + DB 085H ; e + DB 084H ; d + DB 093H ; s + DB 098H ; x + DB 083H ; c + ;S2 10 - 17 ; + DB 066H ; & + DB 065H ; % + DB 099H ; y + DB 094H ; t + DB 087H ; g + DB 086H ; f + DB 096H ; v + DB 082H ; b + ;S3 18 - 1F ; + DB 068H ; ( + DB 067H ; ' + DB 089H ; i + DB 095H ; u + DB 08AH ; j + DB 088H ; h + DB 08EH ; n + DB 000H ; SPACE + ;S4 20 - 27 ; + DB 0BFH ; _ + DB 069H ; ) + DB 090H ; p + DB 08FH ; o + DB 08CH ; l + DB 08BH ; k + DB 051H ; < + DB 08DH ; m + ;S5 28 - 2F ; + DB 0A5H ; ~ + DB 02BH ; = + DB 0BCH ; ( + DB 0A4H ; ' + DB 06BH ; # + DB 06AH ; + + DB 045H ; <- + DB 057H ; > + ;S6 30 - 37 ; + DB 0C6H ; CLR + DB 080H ; | + DB 0C4H ; CURSOR LEFT + DB 0C1H ; CURSOR DOWN + DB 0CDH ; CR + DB 040H ; ) + DB 000H ; NULL + DB 050H ; UP^ + ; +KTBLG: ;S0 00 - 07 ; + DB 03EH ; #2 + DB 037H ; #1 + DB 038H ; #W + DB 03CH ; #Q + DB 053H ; #A + DB 0C7H ; #DEL + DB 000H ; #NULL + DB 076H ; #Z + ;S1 08 - 0F ; + DB 07BH ; #4 + DB 07FH ; #3 + DB 030H ; #R + DB 034H ; #E + DB 047H ; #D + DB 044H ; #S + DB 06DH ; #X + DB 0DEH ; #C + ;S2 10 - 17 ; + DB 05EH ; #6 + DB 03AH ; #5 + DB 075H ; #Y + DB 071H ; #T + DB 04BH ; #G + DB 04AH ; #F + DB 0DAH ; #V + DB 06FH ; #B + ;S3 18 - 1F ; + DB 0BDH ; #8 + DB 01FH ; #7 + DB 07DH ; #I + DB 079H ; #U + DB 05CH ; #J + DB 072H ; #H + DB 032H ; #N + DB 000H ; SPACE + ;S4 20 - 27 ; + DB 09CH ; #0 + DB 0A1H ; #9 + DB 0D6H ; #P + DB 0B0H ; #O + DB 0B4H ; #L + DB 05BH ; #K + DB 060H ; #, + DB 01CH ; #M + ;S5 28 - 2F ; + DB 09EH ; #^ + DB 0D2H ; #- + DB 0D8H ; #[ + DB 0B2H ; #@ + DB 0B6H ; ##: + DB 042H ; #; + DB 0DBH ; #/ + DB 0B8H ; #. + ;S6 30 - 37 ; + DB 0C5H ; HOME + DB 0D4H ; #\ + DB 0C3H ; CURSOR RIGHT + DB 0C2H ; CURSOR UP + DB 0CDH ; CR + DB 04EH ; #J + DB 000H ; NULL + DB 0BAH ; #? + ; +KTBLGS: ;S0 00 - 07 ; + DB 036H ; ?2 + DB 03FH ; ?1 + DB 078H ; ?W + DB 07CH ; ?Q + DB 046H ; ?A + DB 0C8H ; INST + DB 000H ; NULL + DB 077H ; ?Z + ;S1 08 - 0F ; + DB 03BH ; ?4 + DB 07EH ; ?3 + DB 070H ; ?R + DB 074H ; ?E + DB 048H ; ?D + DB 041H ; ?S + DB 0DDH ; ?X + DB 0D9H ; C + ;S2 10 - 17 ; + DB 01EH ; ?6 + DB 07AH ; ?5 + DB 035H ; ?Y + DB 031H ; ?T + DB 04CH ; ?G + DB 043H ; ?F + DB 0A6H ; ?V + DB 06EH ; ?B + ;S3 18 - 1F ; + DB 0A2H ; ?8 + DB 05FH ; ?7 + DB 03DH ; ?I + DB 039H ; ?U + DB 05DH ; ?J + DB 073H ; ?H + DB 033H ; ?N + DB 000H ; SPACE + ;S4 20 - 27 ; + DB 09DH ; ?0 + DB 0A3H ; ?9 + DB 0B1H ; ?P + DB 0D5H ; ?O + DB 056H ; ?L + DB 06CH ; ?K + DB 0D0H ; ?, + DB 01DH ; ?M + ;S5 28 - 2F ; + DB 09FH ; ?^ + DB 0D1H ; ?- + DB 0B3H ; ?[ + DB 0D7H ; ?@ + DB 04DH ; ?: + DB 0B5H ; ?; + DB 01BH ; ?/ + DB 0B9H ; ?. + ;S6 30 - 37 ; + DB 0C6H ; CLR + DB 0D3H ; ?\ + DB 0C4H ; CURSOR RIGHT + DB 0C1H ; CURSOR UP + DB 0CDH ; CR + DB 0B7H ; ?J + DB 000H ; NULL + DB 0BBH ; ?? + ; +KTBLC: ;S0 00 - 07 ; + DB 0F0H ; CODE 80H=NOT KEY + DB 0F0H ; + DB 0E2H ; CTRL + W + DB 0C1H ; CTRL + Q + DB 0E0H ; CTRL + A SHIFT LOCK + DB 0F0H ; + DB 000H ; + DB 0E5H ; CTRL + Z + ;S1 08 - 0F ; + DB 0F0H ; + DB 0F0H ; + DB 0C2H ; CTRL + R + DB 0CFH ; CTRL + E ROLL DOWN + DB 0CEH ; CTRL + D ROLL UP + DB 0C3H ; CTRL + S + DB 0E3H ; CTRL + X + DB 0F3H ; CTRL + C + ;S2 10 - 17 ; + DB 0F0H ; + DB 0F0H ; + DB 0E4H ; CTRL + Y + DB 0C4H ; CTRL + T + DB 0F7H ; CTRL + G + DB 0F6H ; CTRL + F + DB 0C6H ; CTRL + V CLR + DB 0F2H ; CTRL + B + ;S3 18 - 1F ; + DB 0F0H ; + DB 0F0H ; + DB 0F9H ; CTRL + I + DB 0C5H ; CTRL + U HOME + DB 0FAH ; CTRL + J + DB 0F8H ; CTRL + H + DB 0FEH ; CTRL + N + DB 0F0H ; + ;S4 20 - 27 ; + DB 0F0H ; + DB 0F0H ; + DB 0E1H ; CTRL + P + DB 0FFH ; CTRL + O + DB 0FCH ; CTRL + L + DB 0FBH ; CTRL + K + DB 0F0H ; + DB 0FDH ; CTRL + M + ;S5 28 - 2F ; + DB 0EFH ; CTRL + ^ + DB 0F4H ; CTRL + - + DB 0E6H ; CTRL + [ + DB 0CCH ; CTRL + @ REVERSE + DB 0F0H ; + DB 0F0H ; + DB 0F0H ; + DB 0F0H ; + ;S6 30 - 37 ; + DB 0F0H ; + DB 0EBH ; CTRL + \ + DB 0F0H ; + DB 0F0H ; + DB 0F0H ; + DB 0EEH ; CTRL + ] + DB 0F0H ; + +?BRK: LD A,0F0H + LD (KEYPA),A + NOP + LD A,(KEYPB) + OR A + RLA + JR NC,L0D37 + RRA + RRA + JR NC,L0D27 + RRA + JR NC,L0D2B + CCF + RET + +L0D27: LD A,040H + SCF + RET + +L0D2B: LD A,(KDATW) + LD A,001H + LD (KDATW),A + LD A,010H + SCF + RET + +L0D37: AND 002H + RET Z + + LD A,020H + SCF + RET + +L0D3E: PUSH AF + LD A,003H + LD (KEYPF),A + CALL L0759 + CALL L0759 + LD A,002H + LD (KEYPF),A + CALL L0759 + CALL L0759 + POP AF + RET + +L0D57: PUSH AF + LD A,003H + LD (KEYPF),A + CALL L0759 + CALL L0759 + CALL L0759 + CALL L0759 + LD A,002H + LD (KEYPF),A + CALL L0759 + CALL L0759 + CALL L0759 + CALL L0760 + POP AF + RET + +?DSPA: CP 008H + JR Z,L0D90 +L0D80: RRC (HL) + DJNZ L0D80 + SET 0,(HL) + RES 1,(HL) + LD B,A +L0D89: RLC (HL) + DJNZ L0D89 +DSP04: JP CURSR +L0D90: INC HL + SET 0,(HL) + RES 1,(HL) + JR DSP04 +DSP02: SET 7,(HL) + INC HL + RES 0,(HL) + JR DSP04 + + +MSG_1: DB 07FH, 020H +MSG_2: DB 050H, 04CH, 041H, 059H, 00DH, 0F3H + +?BLNK: RET + +DLY12: PUSH BC + LD B,023H +DLY12A: CALL DLY3 + DJNZ DLY12A + POP BC + RET + + ; BELL DATA +?BELD: DB 0D7H, 041H, 030H, 00DH + +?DSP: PUSH AF + PUSH BC + PUSH DE + PUSH HL + LD B,A + CALL ?PONT + LD (HL),B + LD HL,(DSPXY) + LD A,L +DSP01: CP COLW - 1 ; End of line. + JR NZ,DSP04 + CALL .MANG + JR C,DSP04 + LD A,(SPAGE) + OR A + JP NZ,.DSP03 + EX DE,HL + LD A,B + CP 007H + JR Z,DSP02 + JR ?DSPA + + ; Unused memory. + INC H + DI + +?DPCT: PUSH AF ; Display control, character is mapped to a function call. + PUSH BC + PUSH DE + PUSH HL + LD B,A + AND 0F0H + CP 0C0H + JP NZ,?RSTR + XOR B + RLCA + LD C,A + LD B,000H + LD HL,CTBL + LD A,(SPAGE) + OR A + JR Z,DPCT1 + LD HL,.CTBL +DPCT1: ADD HL,BC + LD E,(HL) + INC HL + LD D,(HL) + EX DE,HL + JP (HL) + + +CTBL: DW SCROL + DW CURSD + DW CURSU + DW CURSR + DW CURSL + DW HOME + DW CLRS + DW DEL + DW INST + DW ALPHA + DW KANA + DW ?RSTR + DW REV + DW CR + DW ROLUP + DW ROLD + +;.CTBL: DW .SCROL +; DW CURSD +; DW CURSU +; DW CURSR +; DW CURSL +; DW HOM0 +; DW CLRS +; DW DEL +; DW INST +; DW ALPHA +; DW KANA +; DW ?RSTR +; DW REV +; DW .CR +; DW ?RSTR +; DW ?RSTR + +SCROL: LD HL,PBIAS + LD C,SCRLW ; Number of 8byte blocks in a line to scroll. + LD A,(ROLEND) + ADD A,C + LD (ROLEND),A + LD A,(ROLTOP) + ADD A,C + LD (ROLTOP),A +SCROL1: LD A,C + ADD A,(HL) + LD (HL),A + CALL L09C7 + LD HL,(PAGETP) + LD DE,SCRNSZ + ADD HL,DE ; HL=PAGETOP + 1000/2000 + LD B,COLW + XOR A +SCROL2: RES 3,H + LD (HL),A + INC HL + DJNZ SCROL2 + LD A,(PBIAS) ; PBIAS is the offest for hardware scroll. + LD L,A + LD H,SCLBASE ; Hardware scroll region, E2 + LD A,(HL) + LD HL,MANGE + OR A + LD B,007H +SCROL3: RR (HL) + DEC HL + DJNZ SCROL3 + JP ?RSTR + +CURSD: LD HL,(DSPXY) + LD A,H + CP ROW - 1 + JR Z,CURS4 + INC H +CURS1: CALL MGP.I +CURS3: LD (DSPXY),HL + JR ?RSTR + +CURSU: LD HL,(DSPXY) + LD A,H + OR A + JR Z,CURS5 + DEC H +CURSU1: CALL MGP.D + JR CURS3 + +CURSR: LD HL,(DSPXY) + LD A,L + CP COLW - 1 ; End of line + JR NC,CURS2 + INC L + JR CURS3 +CURS2: LD L,000H + INC H + LD A,H + CP ROW + JR C,CURS1 + LD H,ROW - 1 + LD (DSPXY),HL +CURS4: JR CURS6 + +CURSL: LD HL,(DSPXY) + LD A,L + OR A + JR Z,CURS5A + DEC L + JR CURS3 +CURS5A: LD L,COLW - 1 ; End of line + DEC H + JP P,CURSU1 + LD H,000H + LD (DSPXY),HL +CURS5: LD A,(SPAGE) + OR A + JR NZ,?RSTR + JP ROLD + +CLRS: LD HL,MANG + LD B,01BH + CALL ?CLER + LD HL,SCRN + PUSH HL + CALL L09E2 + POP HL + LD A,(SPAGE) + OR A + JR NZ,CLRS1 + LD (PAGETP),HL + LD A,07DH + LD (ROLEND),A +CLRS1: LD A,(SCLDSP) +HOM00: JP HOM0 + +CURS6: LD A,(SPAGE) + OR A + JP NZ,.SCROL + JP ROLU + +ALPHA: XOR A +ALPHI: LD (KANAF),A +?RSTR: POP HL +?RSTR1: POP DE + POP BC + POP AF + RET + + ; Unused memory + DEC C + DEC C + DEC C + DEC C + +KANA: LD A,001H + JR ALPHI + +DEL: LD HL,(DSPXY) + LD A,H + OR L + JR Z,?RSTR + LD A,L + OR A + JR NZ,DEL1 + CALL .MANG + JR C,DEL1 + CALL ?PONT + DEC HL + LD (HL),000H + JR CURSL +DEL1: CALL .MANG + RRCA + LD A,COLW + JR NC,L0F13 + RLCA +L0F13: SUB L + LD B,A + CALL ?PONT + PUSH HL + POP DE + DEC DE + SET 4,D +DEL2: RES 3,H + RES 3,D + LD A,(HL) + LD (DE),A + INC HL + INC DE + DJNZ DEL2 + DEC HL + LD (HL),000H + JP CURSL + +INST: CALL .MANG + RRCA + LD L,COLW - 1 ; End of line + LD A,L + JR NC,INST1A + INC H +INST1A: CALL ?PNT1 + PUSH HL + LD HL,(DSPXY) + JR NC,INST2 + LD A,(COLW*2)-1 ; 04FH +INST2: SUB L + LD B,A + POP DE + LD A,(DE) + OR A + JR NZ,?RSTR + CALL ?PONT + LD A,(HL) + LD (HL),000H +INST1: INC HL + RES 3,H + LD E,(HL) + LD (HL),A + LD A,E + DJNZ INST1 + JR ?RSTR + +ROLD: LD HL,PBIAS + LD A,(ROLTOP) + CP (HL) + JR Z,?RSTR + CALL MGP.D + LD A,(HL) + SUB SCRLW ; Number of 8byte blocks in a line to scroll. +ROL2: LD (HL),A + LD L,A + LD H,SCLBASE + LD A,(HL) + CALL L09C7 + JP ?RSTR + +CR: CALL .MANG + RRCA + JP NC,CURS2 + LD L,000H + INC H + LD A,H + CP ROW - 1 ; End of line? + JR Z,CR3 + JR NC,CR2 + CALL MGP.I + INC H + JP CURS1 +CR2: DEC H + LD (DSPXY),HL + LD HL,ROLU + PUSH HL + PUSH AF + PUSH BC + PUSH DE + CALL ROLU +CR3: LD (DSPXY),HL + CALL MGP.I + +ROLU: LD HL,PBIAS + LD A,(ROLEND) + CP (HL) + JP Z,SCROL +ROLU1: CALL MGP.I + LD A,(HL) + ADD A,SCRLW ; Number of 8byte blocks in a line to scroll. + JR ROL2 + +?PONT: LD HL,(DSPXY) +?PNT1: PUSH AF + PUSH BC + PUSH DE + PUSH HL + POP BC + LD DE,COLW + LD HL,SCRN - COLW + LD A,(SPAGE) + OR A + JR NZ,?PNT2 + LD HL,(PAGETP) + SBC HL,DE +?PNT2: ADD HL,DE + DEC B + JP P,?PNT2 + LD B,000H + ADD HL,BC + RES 3,H + POP DE + POP BC + POP AF + RET + +?CLER: XOR A + JR ?DINT +?CLRFF: LD A,0FFH +?DINT: LD (HL),A + INC HL + DJNZ ?DINT + RET + +GAPCK: PUSH BC + PUSH DE + PUSH HL + LD BC,KEYPB + LD DE,KEYPC +GAPCK1: LD H,064H +GAPCK2: CALL EDGE + JR C,GAPCK3 + CALL DLY3 + LD A,(DE) + AND 020H + JR NZ,GAPCK1 + DEC H + JR NZ,GAPCK2 +GAPCK3: JP RET3 + + ; MONITOR WORK AREA + ; (MZ700) + +STACK: EQU 010F0H + + ORG STACK +SPV: +IBUFE: ; TAPE BUFFER (128 BYTES) +ATRB: DS virtual 1 ; ATTRIBUTE +NAME: DS virtual 17 ; FILE NAME +SIZE: DS virtual 2 ; BYTESIZE +DTADR: DS virtual 2 ; DATA ADDRESS +EXADR: DS virtual 2 ; EXECUTION ADDRESS +COMNT: DS virtual 92 ; COMMENT +SWPW: DS virtual 10 ; SWEEP WORK +KDATW: DS virtual 2 ; KEY WORK +KANAF: DS virtual 1 ; KANA FLAG (01=GRAPHIC MODE) +DSPXY: DS virtual 2 ; DISPLAY COORDINATES +MANG: DS virtual 6 ; COLUMN MANAGEMENT +MANGE: DS virtual 1 ; COLUMN MANAGEMENT END +PBIAS: DS virtual 1 ; PAGE BIAS +ROLTOP: DS virtual 1 ; ROLL TOP BIAS +MGPNT: DS virtual 1 ; COLUMN MANAG. POINTER +PAGETP: DS virtual 2 ; PAGE TOP +ROLEND: DS virtual 1 ; ROLL END + DS virtual 14 ; BIAS +FLASH: DS virtual 1 ; FLASHING DATA +SFTLK: DS virtual 1 ; SHIFT LOCK +REVFLG: DS virtual 1 ; REVERSE FLAG +SPAGE: DS virtual 1 ; PAGE CHANGE +FLSDT: DS virtual 1 ; CURSOR DATA +STRGF: DS virtual 1 ; STRING FLAG +DPRNT: DS virtual 1 ; TAB COUNTER +TMCNT: DS virtual 2 ; TAPE MARK COUNTER +SUMDT: DS virtual 2 ; CHECK SUM DATA +CSMDT: DS virtual 2 ; FOR COMPARE SUM DATA +AMPM: DS virtual 1 ; AMPM DATA +TIMFG: DS virtual 1 ; TIME FLAG +SWRK: DS virtual 1 ; KEY SOUND FLAG +TEMPW: DS virtual 1 ; TEMPO WORK +ONTYO: DS virtual 1 ; ONTYO WORK +OCTV: DS virtual 1 ; OCTAVE WORK +RATIO: DS virtual 2 ; ONPU RATIO +BUFER: DS virtual 81 ; GET LINE BUFFER + +USRROM: EQU 0E800H ; Address of 2K User Rom. +FLPROM: EQU 0F000H ; Address of 4K Floppy control Rom. + + ; EQU TABLE I/O REPORT + +SCRN: EQU 0D000H +ARAM: EQU 0D800H +KEYPA: EQU 0E000H +KEYPB: EQU 0E001H +KEYPC: EQU 0E002H +KEYPF: EQU 0E003H +CSTR: EQU 0E002H +CSTPT: EQU 0E003H +CONT0: EQU 0E004H +CONT1: EQU 0E005H +CONT2: EQU 0E006H +CONTF: EQU 0E007H +SUNDG: EQU 0E008H +TEMP: EQU 0E008H +MEMSW: EQU 0E00CH +MEMSWR: EQU 0E010H +INVDSP: EQU 0E014H +NRMDSP: EQU 0E015H +SCLDSP: EQU 0E200H +SCLBASE:EQU 0E2H diff --git a/asm/sa1510_hiload.asm b/asm/sa1510_hiload.asm new file mode 100644 index 0000000..0aa861a --- /dev/null +++ b/asm/sa1510_hiload.asm @@ -0,0 +1,2804 @@ +; Disassembly of the file "sa1510.rom" +; + +; Configurable parameters. These are set in the wrapper file, ie monitor_SA1510.asm +; +;COLW: EQU 40 ; Width of the display screen (ie. columns). +;ROW: EQU 25 ; Number of rows on display screen. +;SCRNSZ: EQU COLW * ROW ; Total size, in bytes, of the screen display area. + + ORG HL_MONIT + +MONIT: JP START ; 00 +GETL: JP ?GETL ; 03 +LETNL: JP ?LTNL ; 06 +NL: JP ?NL ; 09 +PRNTS: JP ?PRTS ; 0C +PRNTT: JP ?PRTT ; 0F +PRNT: JP ?PRNT ; 12 +MSG: JP ?MSG ; 15 +MSGX: JP ?MSGX ; 18 +GETKY: JP ?GET ; 1B +BRKEY: JP ?BRK ; 1E +WRINF: JP ?WRI ; 21 +WRDAT: JP ?WRD ; 24 +RDINF: JP ?RDI ; 27 +RDDAT: JP ?RDD ; 2A +VERFY: JP ?VRFY ; 2D +MELDY: JP ?MLDY ; 30 +TIMST: JP ?TMST ; 33 +TIMRD: JP ?TMRD ; 36 +BELL: JP ?BEL ; 39 +XTEMP: JP ?TEMP ; 3C +MSTA: JP MLDST ; 3F +MSTP: JP MLDSP ; 42 +DACN: JP ?DACN ; 45 +ADCN: JP ?ADCN ; 48 +WTKEY: JP ??KEY ; 4B +PRTAHEX:JP PRTHX ; 4E + +START: LD SP,STACK + IM 1 + CALL ?MODE + LD B,0FFH + LD HL,NAME + CALL ?CLER ; Clear 256 bytes from NAME 10F1h to 11F0h + LD A,016H + CALL PRNT + IF MODE80C = 0 + LD A,007H ; Black background, white characters. Bit 7 is clear as a write to bit 7 @ DFFFH selects 40Char mode. + ELSE + LD A,017H ; Blue background, white characters in colour mode. Bit 7 is set as a write to bit 7 @ DFFFH selects 80Char mode. + ENDIF + LD HL,ARAM +STRT1: CALL CLR8 + LD HL,TIMIN + LD A,0C3H + LD (1038H),A + LD (01039H),HL + LD A,004H + LD (TEMPW),A + + ; Setup display to 40/80 characters depending upon config. + IF MODE80C = 0 + LD HL,DSPCTL ; Setup address of display control register latch. + LD A, 0 ; Using MROM in Bank 0 = 40 char mode. + LD E,(HL) ; Dummy operation to enable latch write via multivibrator. + LD (HL), A + LD (SPAGE), A ; Allow MZ80A scrolling + ELSE + LD HL,DSPCTL ; Setup address of display control register latch. + LD A, 128 ; Using MROM in Bank 1 = 80 char mode. + LD E,(HL) ; Dummy operation to enable latch write via multivibrator. + LD (HL), A + LD (SPAGE), A ; MZ80K Scrolling in 80 column mode for time being. + ENDIF + CALL MLDSP + CALL NL + LD DE,SIGNON ; 00100H + CALL ?MSGX + CALL ?BEL +SS: LD A,0FFH +SS1: LD (SWRK),A + +ST1: CALL NL + LD A,023H ; # Prompt + CALL PRNT + LD DE,BUFER + CALL GETL +ST2: LD A,(DE) + INC DE + CP 00DH + JR Z,ST1 + CP 'J' ; JUMP? + JR Z,GOTO + CP 'L' ; LOAD? + JR Z,LOAD + CP 'C' + JP Z,0B200H +; CP 'F' ; FLOPPY? +; JR Z,FD +; CP 'B' ; BELL? +; JR Z,SG + JR ST2 + + ; JUMP COMMAND +GOTO: CALL HLHEX + JR C,ST1 + JP (HL) + + ; KEY SOUND ON OFF +;G: LD A,(SWRK) +; CPL +; JR SS1 + + ; FLOPPY ROM CHECK AND RUN +;FD: LD HL,FLPROM +;FD2: LD A,(HL) +; OR A +; JR NZ,ST1 +; JP (HL) + +?ER: CP 002H + JR Z,ST1 + LD DE,MSGE1 + CALL ?MSGX + JR ST1 + + ; LOAD COMMAND +LOAD: CALL ?RDI + JR C,?ER + CALL NL + LD DE,MSG?2 + CALL ?MSGX + LD DE,NAME + CALL ?MSGX + CALL ?RDD + JR C,?ER + LD HL,(EXADR) + LD A,H + CP 012H + JR C,ST1 + JP (HL) + + ; LOADING +MSG?2: DB 04CH, 0B7H, 0A1H, 09CH + DB 0A6H, 0B0H, 097H, 020H + DB 00DH + + ; SIGN ON BANNER +SIGNON: DB "** MONITOR SA-1510h **", 0DH + + ; For 80 Character mode we need some space, so shorten the Check Sum Error message. + ; + ; CHECK SUM ERROR +MSGE1: DB "CK SUM?", 0DH + + ; CR PAGE MODE1 +.CR: CALL .MANG + RRCA + JP NC,CURS2 + LD L,000H + INC H + CP ROW - 1 ; End of line? + JR Z,.CP1 + INC H + JP CURS1 + +.CP1: LD (DSPXY),HL + + ; SCROLLER +.SCROL: LD BC,SCRNSZ - COLW ; Scroll COLW -1 lines + LD DE,SCRN ; Start of the screen. + LD HL,SCRN + COLW ; Start of screen + 1 line. + LDIR + EX DE,HL + LD B,COLW ; Clear last line at bottom of screen. + CALL ?CLER + LD BC,0001AH + LD DE,MANG + LD HL,MANG + 1 + LDIR + LD (HL),000H + LD A,(MANG) + OR A + JP Z,?RSTR + LD HL,DSPXY + 1 + DEC (HL) + JR .SCROL + + + ; CTBL PAGE MODE1 +.CTBL: DW .SCROL + DW CURSD + DW CURSU + DW CURSR + DW CURSL + DW HOM0 + DW CLRS + DW DEL + DW INST + DW ALPHA + DW KANA + DW ?RSTR + DW REV + DW .CR + DW ?RSTR + DW ?RSTR + +?MLDY: PUSH BC + PUSH DE + PUSH HL + LD A,002H + LD (OCTV),A + LD B,001H +MLD1: LD A,(DE) + CP 00DH + JR Z,MLD4 + CP 0C8H + JR Z,MLD4 + CP 0CFH + JR Z,MLD2 + CP 02DH + JR Z,MLD2 + CP 02BH + JR Z,MLD3 + CP 0D7H + JR Z,MLD3 + CP 023H + LD HL,MTBL + JR NZ,MLD1A + LD HL,M?TBL + INC DE +MLD1A: CALL ONPU + JR C,MLD1 + CALL RYTHM + JR C,MLD5 + CALL MLDST + LD B,C + JR MLD1 +MLD2: LD A,003H +MLD2A: LD (OCTV),A + INC DE + JR MLD1 +MLD3: LD A,001H + JR MLD2A +MLD4: CALL RYTHM +MLD5: PUSH AF + CALL MLDSP + POP AF + JP RET3 + +ONPU: PUSH BC + LD B,008H + LD A,(DE) +ONP1A: CP (HL) + JR Z,ONP2 + INC HL + INC HL + INC HL + DJNZ ONP1A + SCF + INC DE + POP BC + RET + +ONP2: INC HL + PUSH DE + LD E,(HL) + INC HL + LD D,(HL) + EX DE,HL + LD A,H + OR A + JR Z,ONP2B + LD A,(OCTV) +ONP2A: DEC A + JR Z,ONP2B + ADD HL,HL + JR ONP2A +ONP2B: LD (RATIO),HL + LD HL,OCTV + LD (HL),002H + DEC HL + POP DE + INC DE + LD A,(DE) + LD B,A + AND 0F0H + CP 030H + JR Z,ONP2C + LD A,(HL) + JR ONP2D +ONP2C: INC DE + LD A,B + AND 00FH + LD (HL),A +ONP2D: LD HL,OPTBL + ADD A,L + LD L,A + LD C,(HL) + LD A,(TEMPW) + LD B,A + XOR A + JP L09AB + +MTBL: DB 043H + DB 077H + DB 007H + DB 044H + DB 0A7H + DB 006H + DB 045H + DB 0EDH + DB 005H + DB 046H + DB 098H + DB 005H + DB 047H + DB 0FCH + DB 004H + DB 041H + DB 071H + DB 004H + DB 042H + DB 0F5H + DB 003H + DB 052H + DB 000H + DB 000H +M?TBL: DB 043H + DB 00CH + DB 007H + DB 044H + DB 047H + DB 006H + DB 045H + DB 098H + DB 005H + DB 046H + DB 048H + DB 005H + DB 047H + DB 0B4H + DB 004H + DB 041H + DB 031H + DB 004H + DB 042H + DB 0BBH + DB 003H + DB 052H + DB 000H + DB 000H + +OPTBL: DB 001H + DB 002H + DB 003H + DB 004H + DB 006H + DB 008H + DB 00CH + DB 010H + DB 018H + DB 020H + +?SAVE: LD HL,FLSDT + LD (HL),0EFH + LD A,(KANAF) + OR A + JR Z,L0270 + LD (HL),0FFH +L0270: LD A,(HL) + PUSH AF + CALL ?PONT + LD A,(HL) + LD (FLASH),A + POP AF + LD (HL),A + XOR A + LD HL,KEYPA + LD (HL),A + CPL + LD (HL),A + RET + +MGP.I: PUSH AF + PUSH HL + LD HL,MGPNT + LD A,(HL) + INC A + CP 033H + JR NZ,L028F + XOR A +L028F: PUSH HL + LD L,A + LD A,(SPAGE) + OR A + LD A,L + POP HL + JR NZ,L029A + LD (HL),A +L029A: POP HL + POP AF + RET + +MGP.D: PUSH AF + PUSH HL + LD HL,MGPNT + LD A,(HL) + DEC A + JP P,L028F + LD A,032H + JR L028F +MLDST: LD HL,(RATIO) + LD A,H + OR A + JR Z,MLDSP + PUSH DE + EX DE,HL + LD HL,CONT0 + LD (HL),E + LD (HL),D + LD A,001H + POP DE + JR L02C4 +MLDSP: LD A,034H + LD (CONTF),A + XOR A +L02C4: LD (SUNDG),A + RET + +RYTHM: LD HL,KEYPA + LD (HL),0F0H + INC HL + LD A,(HL) + AND 081H + JR NZ,L02D5 + SCF + RET + +L02D5: LD A,(SUNDG) + RRCA + JR C,L02D5 +L02DB: LD A,(SUNDG) + RRCA + JR NC,L02DB + DJNZ L02D5 + XOR A + RET + +?BEL: PUSH DE + LD DE,00DB1H + CALL ?MLDY + POP DE + RET + +?TEMP: PUSH AF + PUSH BC + AND 00FH + LD B,A + LD A,008H + SUB B + LD (TEMPW),A + POP BC + POP AF + RET + +?TMST: DI + PUSH BC + PUSH DE + PUSH HL + LD (AMPM),A + LD A,0F0H + LD (TIMFG),A + LD HL,0A8C0H + XOR A + SBC HL,DE + PUSH HL + INC HL + EX DE,HL + LD HL,CONTF + LD (HL),074H + LD (HL),0B0H + DEC HL + LD (HL),E + LD (HL),D + DEC HL + LD (HL),00AH + LD (HL),000H + INC HL + INC HL + LD (HL),080H + DEC HL +L0323: LD C,(HL) + LD A,(HL) + CP D + JR NZ,L0323 + LD A,C + CP E + JR NZ,L0323 + DEC HL + NOP + NOP + NOP + LD (HL),00CH + LD (HL),07BH + INC HL + POP DE +L0336: LD C,(HL) + LD A,(HL) + CP D + JR NZ,L0336 + LD A,C + CP E + JR NZ,L0336 + POP HL + POP DE + POP BC + EI + RET + +?TMRD: PUSH HL + LD HL,CONTF + LD (HL),080H + DEC HL + DI + LD E,(HL) + LD D,(HL) + EI + LD A,E + OR D + JR Z,?TMR1 + XOR A + LD HL,0A8C0H + SBC HL,DE + JR C,?TMR2 + EX DE,HL + LD A,(AMPM) + POP HL + RET + +?TMR1: LD DE,0A8C0H +?TMR1A: LD A,(AMPM) + XOR 001H + POP HL + RET + +?TMR2: DI + LD HL,CONT2 + LD A,(HL) + CPL + LD E,A + LD A,(HL) + CPL + LD D,A + EI + INC DE + JR ?TMR1A + +TIMIN: PUSH AF + PUSH BC + PUSH DE + PUSH HL + LD HL,AMPM + LD A,(HL) + XOR 001H + LD (HL),A + LD HL,CONTF + LD (HL),080H + DEC HL + PUSH HL + LD E,(HL) + LD D,(HL) + LD HL,0A8C0H + ADD HL,DE + DEC HL + DEC HL + EX DE,HL + POP HL + LD (HL),E + LD (HL),D + POP HL + POP DE + POP BC + POP AF + EI + RET + +.DSP03: EX DE,HL + LD (HL),001H + INC HL + LD (HL),000H + JP CURSR +.MANG2: LD A,(DSPXY + 1) + ADD A,L + LD L,A + LD A,(HL) + INC HL + RL (HL) + OR (HL) + RR (HL) + RRCA + EX DE,HL + LD HL,(DSPXY) + RET + + LD C,H + POP AF +PRTHL: LD A,H + CALL PRTHX + LD A,L + JR PRTHX + LD B,E + LD B,E +PRTHX: PUSH AF + RRCA + RRCA + RRCA + RRCA + CALL ASC + CALL PRNT + POP AF + CALL ASC + JP PRNT +L03D5: POP DE + POP HL + POP BC + POP AF + RET + +ASC: AND 00FH + CP 00AH + JR C,NOADD + ADD A,007H +NOADD: ADD A,030H + RET + +HEXJ: CP 030H + RET C + CP 03AH + JR C,HEX1 + SUB 007H + CP 040H + JR NC,HEX2 +HEX1: AND 00FH + RET +HEX2: SCF + RET + + ; Unused memory. + LD C,B + LD C,H + +HEX: JR HEXJ + +HOME: LD HL,(DSPXY) + LD A,(MGPNT) + SUB H + JR NC,HOM1 + ADD A,032H +HOM1: LD (MGPNT),A +HOM0: LD HL,00000H + JP CURS3 + + ; Unused memory. + INC L + +HLHEX: PUSH DE + CALL L041F + JR C,L041D + LD H,A + CALL L041F + JR C,L041D + LD L,A +L041D: POP DE + RET + +L041F: PUSH BC + LD A,(DE) + INC DE + CALL HEX + JR C,L0434 + RRCA + RRCA + RRCA + RRCA + LD C,A + LD A,(DE) + INC DE + CALL HEX + JR C,L0434 + OR C +L0434: POP BC + RET + +?WRI: DI + PUSH DE + PUSH BC + PUSH HL + LD D,0D7H + LD E,0CCH + LD HL,STACK + LD BC,00080H +L0444: CALL L071A + CALL MOTOR + JR C,L0464 + LD A,E + CP 0CCH + JR NZ,L045E + CALL NL + PUSH DE + LD DE,MSG?7 ; Writing Message + CALL ?MSGX + LD DE,NAME + CALL ?MSGX + POP DE +L045E: CALL L077A + CALL L0485 +L0464: JP L0552 + + ; Writing +MSG?7: DB 057H, 09DH, 0A6H, 096H, 0A6H + DB 0B0H, 097H, 020H, 00DH + +?WRD: DI + PUSH DE + PUSH BC + PUSH HL + LD D,0D7H + LD E,053H + LD BC,(SIZE) + LD HL,(DTADR) + LD A,B + OR C + JR Z,L04CB + JR L0444 +L0485: PUSH DE + PUSH BC + PUSH HL + LD D,002H + LD A,0F0H + LD (KEYPA),A +L048F: LD A,(HL) + CALL L0767 + LD A,(KEYPB) + AND 081H + JP NZ,L049E + SCF + JR L04CB +L049E: INC HL + DEC BC + LD A,B + OR C + JP NZ,L048F + LD HL,(SUMDT) + LD A,H + CALL L0767 + LD A,L + CALL L0767 + CALL L0D57 + DEC D + JP NZ,L04BB + OR A + JP L04CB +L04BB: LD B,000H +L04BD: CALL L0D3E + DEC B + JP NZ,L04BD + POP HL + POP BC + PUSH BC + PUSH HL + JP L048F +L04CB: POP HL + POP BC + POP DE + RET + +?RDI: DI + PUSH DE + PUSH BC + PUSH HL + LD D,0D2H + LD E,0CCH + LD BC,00080H + LD HL,STACK +L04DD: CALL MOTOR + JP C,L0570 + CALL TMARK + JP C,L0570 + CALL L0505 + JP L0552 + +?RDD: DI + PUSH DE + PUSH BC + PUSH HL + LD D,0D2H + LD E,053H + LD BC,(SIZE) + LD HL,(DTADR) + LD A,B + OR C + JP Z,L0552 + JR L04DD +L0505: PUSH DE + PUSH BC + PUSH HL + LD H,002H +L050A: LD BC,KEYPB + LD DE,KEYPC +L0510: CALL EDGE + JP C,L0570 + CALL DLY3 + LD A,(DE) + AND 020H + JP Z,L0510 + LD D,H + LD HL,00000H + LD (SUMDT),HL + POP HL + POP BC + PUSH BC + PUSH HL +L052A: CALL RBYTE + JP C,L0570 + LD (HL),A + INC HL + DEC BC + LD A,B + OR C + JP NZ,L052A + LD HL,(SUMDT) + CALL RBYTE + JP C,L0570 + LD E,A + CALL RBYTE + JP C,L0570 + CP L + JP NZ,L0563 + LD A,E + CP H + JP NZ,L0563 +L0551: XOR A +L0552: POP HL + POP BC + POP DE + CALL MSTOP + PUSH AF + LD A,(TIMFG) + CP 0F0H + JR NZ,L0561 + EI +L0561: POP AF + RET + +L0563: DEC D + JR Z,L056C + LD H,D + CALL GAPCK + JR L050A +L056C: LD A,001H + JR L0572 +L0570: LD A,002H +L0572: SCF + JR L0552 + + +?VRFY: DI + PUSH DE + PUSH BC + PUSH HL + LD BC,(SIZE) + LD HL,(DTADR) + LD D,0D2H + LD E,053H + LD A,B + OR C + JR Z,L0552 + CALL L071A + CALL MOTOR + JR C,L0570 + CALL TMARK + JP C,L0570 + CALL TVRFY + JR L0552 + +TVRFY: PUSH DE + PUSH BC + PUSH HL + LD H,002H +TVF1: LD BC,KEYPB + LD DE,KEYPC +TVF2: CALL EDGE + JP C,L0570 + CALL DLY3 + LD A,(DE) + AND 020H + JP Z,TVF2 + LD D,H + POP HL + POP BC + PUSH BC + PUSH HL +TVF3: CALL RBYTE + JP C,L0570 + CP (HL) + JP NZ,L056C + INC HL + DEC BC + LD A,B + OR C + JP NZ,TVF3 + LD HL,(CSMDT) + CALL RBYTE + CP H + JR NZ,L056C + CALL RBYTE + CP L + JR NZ,L056C + DEC D + JP Z,L0551 + LD H,D + JR TVF1 + + ; PRINT '00' +GETLD: LD DE,DBLZERO + CALL ?MSGX + JP AUTO2 + + ; ROLL UP +ROLUP: LD HL,PBIAS + LD A,(ROLEND) + CP (HL) + JP Z,?RSTR + JP ROLU1 + +?LOAD: PUSH AF + LD A,(FLASH) + CALL ?PONT + LD (HL),A + POP AF + RET + + ; Unused memory + XOR E + LD C,A + +EDGE: LD A,0F0H + LD (KEYPA),A + NOP +EDG1: LD A,(BC) + AND 081H + JP NZ,EDG1A + SCF + RET +EDG1A: LD A,(DE) + AND 020H + JP NZ,EDG1 +EDG2: LD A,(BC) + AND 081H + JP NZ,EDG3 + SCF + RET +EDG3: LD A,(DE) + AND 020H + JP Z,EDG2 + RET + +RBYTE: PUSH BC + PUSH DE + PUSH HL + LD HL,00800H + LD BC,KEYPB + LD DE,KEYPC +RBY1: CALL EDGE + JP C,RBY3 + CALL DLY3 + LD A,(DE) + AND 020H + JP Z,RBY2 + PUSH HL + LD HL,(SUMDT) + INC HL + LD (SUMDT),HL + POP HL + SCF +RBY2: LD A,L + RLA + LD L,A + DEC H + JP NZ,RBY1 + CALL EDGE + LD A,L +RBY3: POP HL + POP DE + POP BC + RET + +TMARK: CALL GAPCK + PUSH BC + PUSH DE + PUSH HL + LD HL,02828H ; 40 short and 40 long gap pulses + LD A,E + CP 0CCH + JP Z,TM0 + LD HL,01414H ; 20 short and 20 long tape mark pulses +TM0: LD (TMCNT),HL + LD BC,KEYPB + LD DE,KEYPC +TM1: LD HL,(TMCNT) +TM2: CALL EDGE + JP C,RET3 + CALL DLY3 + LD A,(DE) + AND 020H + JP Z,TM1 + DEC H + JP NZ,TM2 +TM3: CALL EDGE + JP C,RET3 + CALL DLY3 + LD A,(DE) + AND 020H + JP NZ,TM1 + DEC L + JP NZ,TM3 + CALL EDGE +RET3: +TM4: POP HL + POP DE + POP BC + RET + +MOTOR: PUSH BC + PUSH DE + PUSH HL + LD B,00AH +MOT1: LD A,(KEYPC) + AND 010H + JR Z,MOT4 +MOT2: LD B,0A6H +L06B1: CALL DLY12 + DJNZ L06B1 + XOR A +MOT7: JR RET3 +MOT4: LD A,006H + LD HL,KEYPF + LD (HL),A + INC A + LD (HL),A + DJNZ MOT1 + CALL NL + LD A,D + CP 0D7H + JR Z,MOT8 + LD DE,00D9EH + JR MOT9 +MOT8: LD DE,MSG_3 ; RECORD message. + CALL ?MSGX + LD DE,00DA0H +MOT9: CALL ?MSGX +MOT5: LD A,(KEYPC) + AND 010H + JR NZ,MOT2 + CALL ?BRK + JR NZ,MOT5 + SCF + JR MOT7 + +L06E7: LD B,0C9H + LD A,(KANAF) + OR A + JR NZ,L06F0 + INC B +L06F0: LD A,B + JP ?KY1 + + ; PRESS RECORD message. +MSG_3: DB 07FH, 020H + DB 052H, 045H, 043H, 04FH, 052H + DB 044H, 02EH, 00DH + + ; Padding not used + DB 034H + DB 044H + +MSTOP: PUSH AF + PUSH BC + PUSH DE + LD B,00AH +L0705: LD A,(KEYPC) + AND 010H + JR Z,L0717 + LD A,006H + LD (KEYPF),A + INC A + LD (KEYPF),A + DJNZ L0705 +L0717: JP ?RSTR1 +L071A: PUSH BC + PUSH DE + PUSH HL + LD DE,00000H +L0720: LD A,B + OR C + JR NZ,L072F + EX DE,HL + LD (SUMDT),HL + LD (CSMDT),HL + POP HL + POP DE + POP BC + RET + +L072F: LD A,(HL) + PUSH BC + LD B,008H +L0733: RLCA + JR NC,L0737 + INC DE +L0737: DJNZ L0733 + POP BC + INC HL + DEC BC + JR L0720 +L073E: RLCA + RLCA + RLCA + LD C,A + LD A,E +L0743: DEC H + RRCA + JR NC,L0743 + LD A,H + ADD A,C + LD C,A + JP SWEP01 +?MODE: LD HL,KEYPF + LD (HL),08AH + LD (HL),007H + LD (HL),005H + LD (HL),001H + RET + +L0759: LD A,00EH +L075B: DEC A + JP NZ,L075B + RET + +L0760: LD A,00DH +L0762: DEC A + JP NZ,L0762 + RET + +L0767: PUSH BC + LD B,008H + CALL L0D57 +L076D: RLCA + CALL C,L0D57 + CALL NC,L0D3E + DEC B + JP NZ,L076D + POP BC + RET + +L077A: PUSH BC + PUSH DE + LD A,E + LD BC,055F0H + LD DE,02828H + CP 0CCH + JP Z,L078E + LD BC,02AF8H + LD DE,01414H +L078E: CALL L0D3E + DEC BC + LD A,B + OR C + JR NZ,L078E +L0796: CALL L0D57 + DEC D + JR NZ,L0796 +L079C: CALL L0D3E + DEC E + JR NZ,L079C + CALL L0D57 + POP DE + POP BC + RET + +?GETL: PUSH AF + PUSH BC + PUSH HL + PUSH DE +GETL0: CALL ?SAVE +GETL0A: CALL ?KEY + CP 0CBH + JR Z,GETL0A +GETL0B: CALL ?KEY + CALL ?FLAS + JR Z,GETL0B +GETL0C: PUSH AF + XOR A + LD (STRGF),A + POP AF +AUTO3: LD B,A +GETL0D: CALL ?LOAD + LD A,(SWRK) + OR A + CALL Z,?BEL + LD A,B + CP 0E7H + JP Z,GETLD + CP 0E6H + JR Z,CHGPK + CP 0EEH + JR Z,CHGPA + CP 0E5H + JR Z,DMT + CP 0E0H + JP Z,LOCK + JR NC,GETL0B + AND 0F0H + CP 0C0H + JR NZ,GETL2 + LD A,B + CP 0CDH + JR Z,GETL3 + CP 0CBH + JP Z,GETLC + CP 0C7H + JR NC,GETL5 + LD A,(KANAF) + OR A + LD A,B + JR Z,GETL5 +GETL2: LD A,B + CALL ?DSP +AUTO2: CALL ?SAVE + LD A,(STRGF) + OR A + JR NZ,AUTO5 +AUTOL: LD E,014H +AUTOL1: CALL ?KEY + JR NZ,AUTO3 + CALL AUTCK +GETL1: JR C,GETL0B + DEC E + JR NZ,AUTOL1 + LD A,001H + LD (STRGF),A +AUTO5: CALL DLY12 + CALL DLY12 + CALL ?KEY + CALL ?FLAS + JR NZ,GETL0C + CALL AUTCK + JR C,GETL1 + JR GETL0D +GETL5: CALL ?DPCT + JR AUTO2 + +CHGPA: XOR A + IF MODE80C = 1 + JR CHGPK + ELSE + JR CHGPK1 + ENDIF +CHGPK: LD A,0FFH +CHGPK1: LD (SPAGE),A + LD A,0C6H + CALL ?DPCT +CHGP1: JP GETL0 + +GETLC: POP HL + PUSH HL + LD (HL),01BH + INC HL + LD (HL),00DH + JR GETLR + +DMT: LD B,05AH + JR GETL2 + +GETL3: CALL .MANG + LD B,COLW ; PDS was 028H + JR NC,GETLA + DEC H +GETLB: LD B,COLW*2 ; 050H +GETL6: LD L,000H + CALL ?PNT1 + POP DE + PUSH DE +GETL6A: LD A,(HL) + CALL ?DACN + LD (DE),A + INC HL + RES 3,H + INC DE + DJNZ GETL6A + EX DE,HL +GETL6B: LD (HL),00DH + DEC HL + LD A,(HL) + CP 020H + JR Z,GETL6B +GETLR: CALL ?LTNL + JP L03D5 + +GETLA: RRCA + JR NC,GETL6 + JR GETLB + +LOCK: LD HL,SFTLK + LD A,(HL) + CPL + LD (HL),A + JR CHGP1 + +?MSG: PUSH AF + PUSH BC + PUSH DE +MSG1: LD A,(DE) + CP 00DH + JR Z,MSGX2 + CALL ?PRNT + INC DE + JR MSG1 + +?MSGX: PUSH AF + PUSH BC + PUSH DE +MSGX1: LD A,(DE) + CP 00DH +MSGX2: JP Z,?RSTR1 + CALL ?ADCN + CALL PRNT3 + INC DE + JR MSGX1 + +?GET: PUSH BC + PUSH HL + LD B,009H + LD HL,SWPW+1 + CALL ?CLRFF + POP HL + POP BC + CALL ?KEY + SUB 0F0H + RET Z + ADD A,0F0H + JP ?DACN + +?KEY: PUSH BC + PUSH DE + PUSH HL + CALL ?SWEP + LD A,B + RLCA + JR C,?KY2 + LD A,0F0H +?KY1: LD E,A + CALL AUTCK + LD A,(KDATW) + OR A + JR Z,?KY11 + CALL DLY12 + CALL ?SWEP + LD A,B + RLCA + JR C,?KY2 +?KY11: LD A,E + CP 0F0H + JR NZ,?KY9 +?KY10: JP RET3 +?KY2: RLCA + RLCA + RLCA + JP C,L06E7 + RLCA + JP C,_BRK + LD H,000H + LD L,C + LD A,C + CP 038H + JR NC,?KY6 + LD A,(KANAF) + OR A + LD A,B + RLCA + JR NZ,?KY4 + LD B,A + LD A,(SFTLK) + OR A + LD A,B + JR Z,L0917 + RLA + CCF + RRA +L0917: RLA + RLA + JR NC,?KY3 +L091B: LD DE,KTBLC +?KY5: ADD HL,DE + LD A,(HL) + JR ?KY1 +?KY3: RRA + JR NC,?KY6 + LD DE,KTBLS + JR ?KY5 +?KY6: LD DE,KTBL ; 00BEAH + JR ?KY5 +?KY4: RLCA + JR C,?KY7 + RLCA + JR C,L091B + LD DE,KTBLG + JR ?KY5 +?KY7: LD DE,KTBLGS + JR ?KY5 +?KY9: CALL AUTCK + INC A + LD A,E + JR ?KY10 + +?PRT: LD A,C + CALL ?ADCN + LD C,A + AND 0F0H + CP 0F0H + RET Z + + CP 0C0H + LD A,C + JR NZ,PRNT3 +PRNT5: CALL ?DPCT + CP 0C3H + JR Z,PRNT4 + CP 0C5H + JR Z,PRNT2 + CP 0CDH ; CR + JR Z,PRNT2 + CP 0C6H + RET NZ + +PRNT2: XOR A +PRNT2A: LD (DPRNT),A + RET + +PRNT3: CALL ?DSP +PRNT4: LD A,(DPRNT) + INC A + CP COLW*2 ; 050H + JR C,PRNT4A + SUB COLW*2 ; 050H +PRNT4A: JR PRNT2A + +?NL: LD A,(DPRNT) + OR A + RET Z + +?LTNL: LD A,0CDH + JR PRNT5 +?PRTT: CALL PRNTS + LD A,(DPRNT) + OR A + RET Z + +L098C: SUB 00AH + JR C,?PRTT + JR NZ,L098C + RET + +?PRTS: LD A,020H +?PRNT: CP 00DH + JR Z,?LTNL + PUSH BC + LD C,A + LD B,A + CALL ?PRT + LD A,B + POP BC + RET + +DLY3: NEG + NEG + LD A,02AH + JP L0762 +L09AB: ADD A,C + DJNZ L09AB + POP BC + LD C,A + XOR A + RET + + DB 0010H +??KEY: PUSH BC + PUSH DE + PUSH HL + CALL ?SAVE +L09B9: CALL ?KEY + CALL ?FLAS + JR Z,L09B9 + CALL ?LOAD + JP RET3 + +L09C7: PUSH DE + PUSH HL + LD HL,PBIAS + XOR A + RLD + LD D,A + LD E,(HL) + RRD + XOR A + RR D + RR E + LD HL,SCRN + ADD HL,DE + LD (PAGETP),HL + POP HL + POP DE + RET + +L09E2: XOR A +CLR8: LD BC,00800H + PUSH DE + LD D,A +L09E8: LD (HL),D + INC HL + DEC BC + LD A,B + OR C + JR NZ,L09E8 + POP DE + RET + +AUTCK: LD HL,KDATW + LD A,(HL) + INC HL + LD D,(HL) + LD (HL),A + SUB D + RET NC + INC (HL) + RET + +DBLZERO:DB 030H + DB 030H + DB 00DH + +?FLAS: PUSH AF + PUSH HL + LD A,(KEYPC) + RLCA + RLCA + JR C,FLAS1 + LD A,(FLSDT) +FLAS2: CALL ?PONT + LD (HL),A +FLAS3: POP HL + POP AF + RET + +FLAS1: LD A,(FLASH) + JR FLAS2 + +REV: LD HL,REVFLG + LD A,(HL) + OR A + CPL + LD (HL),A + JR Z,REV1 + LD A,(INVDSP) + JR REV2 +REV1: LD A,(NRMDSP) +REV2: JP ?RSTR + +.MANG: LD HL,MANG + LD A,(SPAGE) + OR A + JP NZ,.MANG2 + LD A,(MGPNT) +.MANG3: SUB 008H + INC HL + JR NC,.MANG3 + ADD A,008H + LD C,(HL) + DEC HL + LD B,A + INC B + PUSH BC + LD A,(HL) +.MANG4: RR C + RRA + DJNZ .MANG4 + POP BC + EX DE,HL +.MANG1: LD HL,(DSPXY) + RET + +?SWEP: PUSH DE + PUSH HL + XOR A + LD (KDATW),A + LD B,0FAH + LD D,A + CALL ?BRK + JR NZ,SWEP6 + LD D,088H + JR SWEP9 +SWEP6: LD HL,SWPW + PUSH HL + JR NC,SWEP11 + LD D,A + AND 060H + JR NZ,SWEP11 + LD A,D + XOR (HL) + BIT 4,A + LD (HL),D + JR Z,SWEP0 +SWEP01: SET 7,D +SWEP0: DEC B + POP HL + INC HL + LD A,B + LD (KEYPA),A + CP 0F0H + JR NZ,SWEP3 + LD A,(HL) + CP 003H + JR C,SWEP9 + LD (HL),000H + RES 7,D +SWEP9: LD B,D + POP HL + POP DE + RET + +SWEP11: LD (HL),000H + JR SWEP0 +SWEP3: LD A,(KEYPB) + LD E,A + CPL + AND (HL) + LD (HL),E + PUSH HL + LD HL,KDATW + PUSH BC + LD B,008H +SWEP8: RLC E + JR C,SWEP7 + INC (HL) +SWEP7: DJNZ SWEP8 + POP BC + OR A + JR Z,SWEP0 + LD E,A +SWEP2: LD H,008H + LD A,B + DEC A + AND 00FH + JP L073E + +; ASCII TO DISPLAY CODE TABLE +ATBL: DB 0CCH ; NUL '\0' (null character) + DB 0E0H ; SOH (start of heading) + DB 0F2H ; STX (start of text) + DB 0F3H ; ETX (end of text) + DB 0CEH ; EOT (end of transmission) + DB 0CFH ; ENQ (enquiry) + DB 0F6H ; ACK (acknowledge) + DB 0F7H ; BEL '\a' (bell) + DB 0F8H ; BS '\b' (backspace) + DB 0F9H ; HT '\t' (horizontal tab) + DB 0FAH ; LF '\n' (new line) + DB 0FBH ; VT '\v' (vertical tab) + DB 0FCH ; FF '\f' (form feed) + DB 0FDH ; CR '\r' (carriage ret) + DB 0FEH ; SO (shift out) + DB 0FFH ; SI (shift in) + DB 0E1H ; DLE (data link escape) + DB 0C1H ; DC1 (device control 1) + DB 0C2H ; DC2 (device control 2) + DB 0C3H ; DC3 (device control 3) + DB 0C4H ; DC4 (device control 4) + DB 0C5H ; NAK (negative ack.) + DB 0C6H ; SYN (synchronous idle) + DB 0E2H ; ETB (end of trans. blk) + DB 0E3H ; CAN (cancel) + DB 0E4H ; EM (end of medium) + DB 0E5H ; SUB (substitute) + DB 0E6H ; ESC (escape) + DB 0EBH ; FS (file separator) + DB 0EEH ; GS (group separator) + DB 0EFH ; RS (record separator) + DB 0F4H ; US (unit separator) + DB 000H ; SPACE + DB 061H ; ! + DB 062H ; " + DB 063H ; # + DB 064H ; $ + DB 065H ; % + DB 066H ; & + DB 067H ; ' + DB 068H ; ( + DB 069H ; ) + DB 06BH ; * + DB 06AH ; + + DB 02FH ; , + DB 02AH ; - + DB 02EH ; . + DB 02DH ; / + DB 020H ; 0 + DB 021H ; 1 + DB 022H ; 2 + DB 023H ; 3 + DB 024H ; 4 + DB 025H ; 5 + DB 026H ; 6 + DB 027H ; 7 + DB 028H ; 8 + DB 029H ; 9 + DB 04FH ; : + DB 02CH ; ; + DB 051H ; < + DB 02BH ; = + DB 057H ; > + DB 049H ; ? + DB 055H ; @ + DB 001H ; A + DB 002H ; B + DB 003H ; C + DB 004H ; D + DB 005H ; E + DB 006H ; F + DB 007H ; G + DB 008H ; H + DB 009H ; I + DB 00AH ; J + DB 00BH ; K + DB 00CH ; L + DB 00DH ; M + DB 00EH ; N + DB 00FH ; O + DB 010H ; P + DB 011H ; Q + DB 012H ; R + DB 013H ; S + DB 014H ; T + DB 015H ; U + DB 016H ; V + DB 017H ; W + DB 018H ; X + DB 019H ; Y + DB 01AH ; Z + DB 052H ; [ + DB 059H ; \ '\\' + DB 054H ; ] + DB 0BEH ; ^ + DB 03CH ; _ + DB 0C7H ; ` + DB 081H ; a + DB 082H ; b + DB 083H ; c + DB 084H ; d + DB 085H ; e + DB 086H ; f + DB 087H ; g + DB 088H ; h + DB 089H ; i + DB 08AH ; j + DB 08BH ; k + DB 08CH ; l + DB 08DH ; m + DB 08EH ; n + DB 08FH ; o + DB 090H ; p + DB 091H ; q + DB 092H ; r + DB 093H ; s + DB 094H ; t + DB 095H ; u + DB 096H ; v + DB 097H ; w + DB 098H ; x + DB 099H ; y + DB 09AH ; z + DB 0BCH ; { + DB 080H ; | + DB 040H ; } + DB 0A5H ; ~ + DB 0C0H ; DEL + DB 040H + DB 0BDH + DB 09DH + DB 0B1H + DB 0B5H + DB 0B9H + DB 0B4H + DB 09EH + DB 0B2H + DB 0B6H + DB 0BAH + DB 0BEH + DB 09FH + DB 0B3H + DB 0B7H + DB 0BBH + DB 0BFH + DB 0A3H + DB 085H + DB 0A4H + DB 0A5H + DB 0A6H + DB 094H + DB 087H + DB 088H + DB 09CH + DB 082H + DB 098H + DB 084H + DB 092H + DB 090H + DB 083H + DB 091H + DB 081H + DB 09AH + DB 097H + DB 093H + DB 095H + DB 089H + DB 0A1H + DB 0AFH + DB 08BH + DB 086H + DB 096H + DB 0A2H + DB 0ABH + DB 0AAH + DB 08AH + DB 08EH + DB 0B0H + DB 0ADH + DB 08DH + DB 0A7H + DB 0A8H + DB 0A9H + DB 08FH + DB 08CH + DB 0AEH + DB 0ACH + DB 09BH + DB 0A0H + DB 099H + DB 0BCH + DB 0B8H + DB 080H + DB 03BH + DB 03AH + DB 070H + DB 03CH + DB 071H + DB 05AH + DB 03DH + DB 043H + DB 056H + DB 03FH + DB 01EH + DB 04AH + DB 01CH + DB 05DH + DB 03EH + DB 05CH + DB 01FH + DB 05FH + DB 05EH + DB 037H + DB 07BH + DB 07FH + DB 036H + DB 07AH + DB 07EH + DB 033H + DB 04BH + DB 04CH + DB 01DH + DB 06CH + DB 05BH + DB 078H + DB 041H + DB 035H + DB 034H + DB 074H + DB 030H + DB 038H + DB 075H + DB 039H + DB 04DH + DB 06FH + DB 06EH + DB 032H + DB 077H + DB 076H + DB 072H + DB 073H + DB 047H + DB 07CH + DB 053H + DB 031H + DB 04EH + DB 06DH + DB 048H + DB 046H + DB 07DH + DB 044H + DB 01BH + DB 058H + DB 079H + DB 042H + DB 060H + DB 0FDH + DB 0CBH + DB 000H + DB 01EH + +?ADCN: PUSH BC + PUSH HL + LD HL,ATBL ;00AB5H + LD C,A + LD B,000H + ADD HL,BC + LD A,(HL) + JR DACN3 + +_BRK: LD A,0CBH + OR A + JP ?KY10 + + ; Unused memory. + DB 029H + DB 0F4H + DB 0DDH + +?DACN: PUSH BC + PUSH HL + PUSH DE + LD HL,ATBL + LD D,H + LD E,L + LD BC,00100H + CPIR + JR Z,DACN1 + LD A,0F0H +DACN2: POP DE +DACN3: POP HL + POP BC + RET + +DACN1: OR A + DEC HL + SBC HL,DE + LD A,L + JR DACN2 + +KTBL: DB 022H + DB 021H + DB 017H + DB 011H + DB 001H + DB 0C7H + DB 000H + DB 01AH + DB 024H + DB 023H + DB 012H + DB 005H + DB 004H + DB 013H + DB 018H + DB 003H + DB 026H + DB 025H + DB 019H + DB 014H + DB 007H + DB 006H + DB 016H + DB 002H + DB 028H + DB 027H + DB 009H + DB 015H + DB 00AH + DB 008H + DB 00EH + DB 000H + DB 020H + DB 029H + DB 010H + DB 00FH + DB 00CH + DB 00BH + DB 02FH + DB 00DH + DB 0BEH + DB 02AH + DB 052H + DB 055H + DB 04FH + DB 02CH + DB 02DH + DB 02EH + DB 0C5H + DB 059H + DB 0C3H + DB 0C2H + DB 0CDH + DB 054H + DB 000H + DB 049H + DB 028H + DB 027H + DB 025H + DB 024H + DB 022H + DB 021H + DB 0E7H + DB 020H + DB 06AH + DB 029H + DB 02AH + DB 026H + DB 000H + DB 023H + DB 000H + DB 02EH + +KTBLS: DB 062H + DB 061H + DB 097H + DB 091H + DB 081H + DB 0C8H + DB 000H + DB 09AH + DB 064H + DB 063H + DB 092H + DB 085H + DB 084H + DB 093H + DB 098H + DB 083H + DB 066H + DB 065H + DB 099H + DB 094H + DB 087H + DB 086H + DB 096H + DB 082H + DB 068H + DB 067H + DB 089H + DB 095H + DB 08AH + DB 088H + DB 08EH + DB 000H + DB 0BFH + DB 069H + DB 090H + DB 08FH + DB 08CH + DB 08BH + DB 051H + DB 08DH + DB 0A5H + DB 02BH + DB 0BCH + DB 0A4H + DB 06BH + DB 06AH + DB 045H + DB 057H + DB 0C6H + DB 080H + DB 0C4H + DB 0C1H + DB 0CDH + DB 040H + DB 000H + DB 050H + +KTBLG: DB 03EH + DB 037H + DB 038H + DB 03CH + DB 053H + DB 0C7H + DB 000H + DB 076H + DB 07BH + DB 07FH + DB 030H + DB 034H + DB 047H + DB 044H + DB 06DH + DB 0DEH + DB 05EH + DB 03AH + DB 075H + DB 071H + DB 04BH + DB 04AH + DB 0DAH + DB 06FH + DB 0BDH + DB 01FH + DB 07DH + DB 079H + DB 05CH + DB 072H + DB 032H + DB 000H + DB 09CH + DB 0A1H + DB 0D6H + DB 0B0H + DB 0B4H + DB 05BH + DB 060H + DB 01CH + DB 09EH + DB 0D2H + DB 0D8H + DB 0B2H + DB 0B6H + DB 042H + DB 0DBH + DB 0B8H + DB 0C5H + DB 0D4H + DB 0C3H + DB 0C2H + DB 0CDH + DB 04EH + DB 000H + DB 0BAH + +KTBLGS: DB 036H + DB 03FH + DB 078H + DB 07CH + DB 046H + DB 0C8H + DB 000H + DB 077H + DB 03BH + DB 07EH + DB 070H + DB 074H + DB 048H + DB 041H + DB 0DDH + DB 0D9H + DB 01EH + DB 07AH + DB 035H + DB 031H + DB 04CH + DB 043H + DB 0A6H + DB 06EH + DB 0A2H + DB 05FH + DB 03DH + DB 039H + DB 05DH + DB 073H + DB 033H + DB 000H + DB 09DH + DB 0A3H + DB 0B1H + DB 0D5H + DB 056H + DB 06CH + DB 0D0H + DB 01DH + DB 09FH + DB 0D1H + DB 0B3H + DB 0D7H + DB 04DH + DB 0B5H + DB 01BH + DB 0B9H + DB 0C6H + DB 0D3H + DB 0C4H + DB 0C1H + DB 0CDH + DB 0B7H + DB 000H + DB 0BBH + +KTBLC: DB 0F0H + DB 0F0H + DB 0E2H + DB 0C1H + DB 0E0H + DB 0F0H + DB 000H + DB 0E5H + DB 0F0H + DB 0F0H + DB 0C2H + DB 0CFH + DB 0CEH + DB 0C3H + DB 0E3H + DB 0F3H + DB 0F0H + DB 0F0H + DB 0E4H + DB 0C4H + DB 0F7H + DB 0F6H + DB 0C6H + DB 0F2H + DB 0F0H + DB 0F0H + DB 0F9H + DB 0C5H + DB 0FAH + DB 0F8H + DB 0FEH + DB 0F0H + DB 0F0H + DB 0F0H + DB 0E1H + DB 0FFH + DB 0FCH + DB 0FBH + DB 0F0H + DB 0FDH + DB 0EFH + DB 0F4H + DB 0E6H + DB 0CCH + DB 0F0H + DB 0F0H + DB 0F0H + DB 0F0H + DB 0F0H + DB 0EBH + DB 0F0H + DB 0F0H + DB 0F0H + DB 0EEH + DB 0F0H + +?BRK: LD A,0F0H + LD (KEYPA),A + NOP + LD A,(KEYPB) + OR A + RLA + JR NC,L0D37 + RRA + RRA + JR NC,L0D27 + RRA + JR NC,L0D2B + CCF + RET + +L0D27: LD A,040H + SCF + RET + +L0D2B: LD A,(KDATW) + LD A,001H + LD (KDATW),A + LD A,010H + SCF + RET + +L0D37: AND 002H + RET Z + + LD A,020H + SCF + RET + +L0D3E: PUSH AF + LD A,003H + LD (KEYPF),A + CALL L0759 + CALL L0759 + LD A,002H + LD (KEYPF),A + CALL L0759 + CALL L0759 + POP AF + RET + +L0D57: PUSH AF + LD A,003H + LD (KEYPF),A + CALL L0759 + CALL L0759 + CALL L0759 + CALL L0759 + LD A,002H + LD (KEYPF),A + CALL L0759 + CALL L0759 + CALL L0759 + CALL L0760 + POP AF + RET + +?DSPA: CP 008H + JR Z,L0D90 +L0D80: RRC (HL) + DJNZ L0D80 + SET 0,(HL) + RES 1,(HL) + LD B,A +L0D89: RLC (HL) + DJNZ L0D89 +DSP04: JP CURSR +L0D90: INC HL + SET 0,(HL) + RES 1,(HL) + JR DSP04 +DSP02: SET 7,(HL) + INC HL + RES 0,(HL) + JR DSP04 + + +MSG_1: DB 07FH, 020H +MSG_2: DB 050H, 04CH, 041H, 059H, 00DH, 0F3H + +?BLNK: RET + +DLY12: PUSH BC + LD B,023H +DLY12A: CALL DLY3 + DJNZ DLY12A + POP BC + RET + + ; BELL DATA +?BELD: DB 0D7H, 041H, 030H, 00DH + +?DSP: PUSH AF + PUSH BC + PUSH DE + PUSH HL + LD B,A + CALL ?PONT + LD (HL),B + LD HL,(DSPXY) + LD A,L +DSP01: CP COLW - 1 ; End of line. + JR NZ,DSP04 + CALL .MANG + JR C,DSP04 + LD A,(SPAGE) + OR A + JP NZ,.DSP03 + EX DE,HL + LD A,B + CP 007H + JR Z,DSP02 + JR ?DSPA + + ; Unused memory. + INC H + DI + +?DPCT: PUSH AF ; Display control, character is mapped to a function call. + PUSH BC + PUSH DE + PUSH HL + LD B,A + AND 0F0H + CP 0C0H + JP NZ,?RSTR + XOR B + RLCA + LD C,A + LD B,000H + LD HL,CTBL + LD A,(SPAGE) + OR A + JR Z,DPCT1 + LD HL,.CTBL +DPCT1: ADD HL,BC + LD E,(HL) + INC HL + LD D,(HL) + EX DE,HL + JP (HL) + + +CTBL: DW SCROL + DW CURSD + DW CURSU + DW CURSR + DW CURSL + DW HOME + DW CLRS + DW DEL + DW INST + DW ALPHA + DW KANA + DW ?RSTR + DW REV + DW CR + DW ROLUP + DW ROLD + +;.CTBL: DW .SCROL +; DW CURSD +; DW CURSU +; DW CURSR +; DW CURSL +; DW HOM0 +; DW CLRS +; DW DEL +; DW INST +; DW ALPHA +; DW KANA +; DW ?RSTR +; DW REV +; DW .CR +; DW ?RSTR +; DW ?RSTR + +SCROL: LD HL,PBIAS + LD C,SCRLW ; Number of 8byte blocks in a line to scroll. + LD A,(ROLEND) + ADD A,C + LD (ROLEND),A + LD A,(ROLTOP) + ADD A,C + LD (ROLTOP),A +SCROL1: LD A,C + ADD A,(HL) + LD (HL),A + CALL L09C7 + LD HL,(PAGETP) + LD DE,SCRNSZ + ADD HL,DE ; HL=PAGETOP + 1000/2000 + LD B,COLW + XOR A +SCROL2: RES 3,H + LD (HL),A + INC HL + DJNZ SCROL2 + LD A,(PBIAS) ; PBIAS is the offest for hardware scroll. + LD L,A + LD H,SCLBASE ; Hardware scroll region, E2 + LD A,(HL) + LD HL,MANGE + OR A + LD B,007H +SCROL3: RR (HL) + DEC HL + DJNZ SCROL3 + JP ?RSTR + +CURSD: LD HL,(DSPXY) + LD A,H + CP ROW - 1 + JR Z,CURS4 + INC H +CURS1: CALL MGP.I +CURS3: LD (DSPXY),HL + JR ?RSTR + +CURSU: LD HL,(DSPXY) + LD A,H + OR A + JR Z,CURS5 + DEC H +CURSU1: CALL MGP.D + JR CURS3 + +CURSR: LD HL,(DSPXY) + LD A,L + CP COLW - 1 ; End of line + JR NC,CURS2 + INC L + JR CURS3 +CURS2: LD L,000H + INC H + LD A,H + CP ROW + JR C,CURS1 + LD H,ROW - 1 + LD (DSPXY),HL +CURS4: JR CURS6 + +CURSL: LD HL,(DSPXY) + LD A,L + OR A + JR Z,CURS5A + DEC L + JR CURS3 +CURS5A: LD L,COLW - 1 ; End of line + DEC H + JP P,CURSU1 + LD H,000H + LD (DSPXY),HL +CURS5: LD A,(SPAGE) + OR A + JR NZ,?RSTR + JP ROLD + +CLRS: LD HL,MANG + LD B,01BH + CALL ?CLER + LD HL,SCRN + PUSH HL + CALL L09E2 + POP HL + LD A,(SPAGE) + OR A + JR NZ,CLRS1 + LD (PAGETP),HL + LD A,07DH + LD (ROLEND),A +CLRS1: LD A,(SCLDSP) +HOM00: JP HOM0 + +CURS6: LD A,(SPAGE) + OR A + JP NZ,.SCROL + JP ROLU + +ALPHA: XOR A +ALPHI: LD (KANAF),A +?RSTR: POP HL +?RSTR1: POP DE + POP BC + POP AF + RET + + ; Unused memory + DEC C + DEC C + DEC C + DEC C + +KANA: LD A,001H + JR ALPHI + +DEL: LD HL,(DSPXY) + LD A,H + OR L + JR Z,?RSTR + LD A,L + OR A + JR NZ,DEL1 + CALL .MANG + JR C,DEL1 + CALL ?PONT + DEC HL + LD (HL),000H + JR CURSL +DEL1: CALL .MANG + RRCA + LD A,COLW + JR NC,L0F13 + RLCA +L0F13: SUB L + LD B,A + CALL ?PONT + PUSH HL + POP DE + DEC DE + SET 4,D +DEL2: RES 3,H + RES 3,D + LD A,(HL) + LD (DE),A + INC HL + INC DE + DJNZ DEL2 + DEC HL + LD (HL),000H + JP CURSL + +INST: CALL .MANG + RRCA + LD L,COLW - 1 ; End of line + LD A,L + JR NC,INST1A + INC H +INST1A: CALL ?PNT1 + PUSH HL + LD HL,(DSPXY) + JR NC,INST2 + LD A,(COLW*2)-1 ; 04FH +INST2: SUB L + LD B,A + POP DE + LD A,(DE) + OR A + JR NZ,?RSTR + CALL ?PONT + LD A,(HL) + LD (HL),000H +INST1: INC HL + RES 3,H + LD E,(HL) + LD (HL),A + LD A,E + DJNZ INST1 + JR ?RSTR + +ROLD: LD HL,PBIAS + LD A,(ROLTOP) + CP (HL) + JR Z,?RSTR + CALL MGP.D + LD A,(HL) + SUB SCRLW ; Number of 8byte blocks in a line to scroll. +ROL2: LD (HL),A + LD L,A + LD H,SCLBASE + LD A,(HL) + CALL L09C7 + JP ?RSTR + +CR: CALL .MANG + RRCA + JP NC,CURS2 + LD L,000H + INC H + LD A,H + CP ROW - 1 ; End of line? + JR Z,CR3 + JR NC,CR2 + CALL MGP.I + INC H + JP CURS1 +CR2: DEC H + LD (DSPXY),HL + LD HL,ROLU + PUSH HL + PUSH AF + PUSH BC + PUSH DE + CALL ROLU +CR3: LD (DSPXY),HL + CALL MGP.I + +ROLU: LD HL,PBIAS + LD A,(ROLEND) + CP (HL) + JP Z,SCROL +ROLU1: CALL MGP.I + LD A,(HL) + ADD A,SCRLW ; Number of 8byte blocks in a line to scroll. + JR ROL2 + +?PONT: LD HL,(DSPXY) +?PNT1: PUSH AF + PUSH BC + PUSH DE + PUSH HL + POP BC + LD DE,COLW + LD HL,SCRN - COLW + LD A,(SPAGE) + OR A + JR NZ,?PNT2 + LD HL,(PAGETP) + SBC HL,DE +?PNT2: ADD HL,DE + DEC B + JP P,?PNT2 + LD B,000H + ADD HL,BC + RES 3,H + POP DE + POP BC + POP AF + RET + +?CLER: XOR A + JR ?DINT +?CLRFF: LD A,0FFH +?DINT: LD (HL),A + INC HL + DJNZ ?DINT + RET + +GAPCK: PUSH BC + PUSH DE + PUSH HL + LD BC,KEYPB + LD DE,KEYPC +GAPCK1: LD H,064H +GAPCK2: CALL EDGE + JR C,GAPCK3 + CALL DLY3 + LD A,(DE) + AND 020H + JR NZ,GAPCK1 + DEC H + JR NZ,GAPCK2 +GAPCK3: JP RET3 + + ALIGN_NOPS 0D000H + + ; Bring in additional macros. + INCLUDE "macros.asm" + + ; MONITOR WORK AREA + ; (MZ700) + +STACK: EQU HL_STACK + + ORG STACK +SPV: +IBUFE: ; TAPE BUFFER (128 BYTES) +ATRB: DS virtual 1 ; ATTRIBUTE +NAME: DS virtual 17 ; FILE NAME +SIZE: DS virtual 2 ; BYTESIZE +DTADR: DS virtual 2 ; DATA ADDRESS +EXADR: DS virtual 2 ; EXECUTION ADDRESS +COMNT: DS virtual 92 ; COMMENT +SWPW: DS virtual 10 ; SWEEP WORK +KDATW: DS virtual 2 ; KEY WORK +KANAF: DS virtual 1 ; KANA FLAG (01=GRAPHIC MODE) +DSPXY: DS virtual 2 ; DISPLAY COORDINATES +MANG: DS virtual 6 ; COLUMN MANAGEMENT +MANGE: DS virtual 1 ; COLUMN MANAGEMENT END +PBIAS: DS virtual 1 ; PAGE BIAS +ROLTOP: DS virtual 1 ; ROLL TOP BIAS +MGPNT: DS virtual 1 ; COLUMN MANAG. POINTER +PAGETP: DS virtual 2 ; PAGE TOP +ROLEND: DS virtual 1 ; ROLL END + DS virtual 14 ; BIAS +FLASH: DS virtual 1 ; FLASHING DATA +SFTLK: DS virtual 1 ; SHIFT LOCK +REVFLG: DS virtual 1 ; REVERSE FLAG +SPAGE: DS virtual 1 ; PAGE CHANGE +FLSDT: DS virtual 1 ; CURSOR DATA +STRGF: DS virtual 1 ; STRING FLAG +DPRNT: DS virtual 1 ; TAB COUNTER +TMCNT: DS virtual 2 ; TAPE MARK COUNTER +SUMDT: DS virtual 2 ; CHECK SUM DATA +CSMDT: DS virtual 2 ; FOR COMPARE SUM DATA +AMPM: DS virtual 1 ; AMPM DATA +TIMFG: DS virtual 1 ; TIME FLAG +SWRK: DS virtual 1 ; KEY SOUND FLAG +TEMPW: DS virtual 1 ; TEMPO WORK +ONTYO: DS virtual 1 ; ONTYO WORK +OCTV: DS virtual 1 ; OCTAVE WORK +RATIO: DS virtual 2 ; ONPU RATIO +BUFER: DS virtual 81 ; GET LINE BUFFER + +HL_MONIT:EQU 0C000h +HL_STACK:EQU 0BEF0H +USRROM: EQU 0E800H ; Address of 2K User Rom. +FLPROM: EQU 0F000H ; Address of 4K Floppy control Rom. + + ; EQU TABLE I/O REPORT + +SCRN: EQU 0D000H +ARAM: EQU 0D800H +DSPCTL: EQU 0DFFFH ; Screen 40/80 select register (bit 7) +KEYPA: EQU 0E000H +KEYPB: EQU 0E001H +KEYPC: EQU 0E002H +KEYPF: EQU 0E003H +CSTR: EQU 0E002H +CSTPT: EQU 0E003H +CONT0: EQU 0E004H +CONT1: EQU 0E005H +CONT2: EQU 0E006H +CONTF: EQU 0E007H +SUNDG: EQU 0E008H +TEMP: EQU 0E008H +MEMSW: EQU 0E00CH +MEMSWR: EQU 0E010H +INVDSP: EQU 0E014H +NRMDSP: EQU 0E015H +SCLDSP: EQU 0E200H +SCLBASE:EQU 0E2H diff --git a/asm/sfd700.asm b/asm/sfd700.asm new file mode 100644 index 0000000..aec43a2 --- /dev/null +++ b/asm/sfd700.asm @@ -0,0 +1,1658 @@ +; ROM of K&P SFD700 interface + +; data areas + +; 1000 1 Latest FDC command byte +; 1001 1 Motor on flag, 01 = on, 00 = off +; 1002 4 Track 0 flags for each drive ( 1 to 4 ) +; 1006 1 Retry count +; 1007 1 Not sure of this one? +; 1008 1 Drive Number ( 0 to 3 ) +; 1009 2 Logical Sector Number ( 0 to 1119 ) +; 100B 1 Bytes to read (after all sectors are read) +; 100C 1 Number of sectors to read +; or +; 100B 2 Bytes to read +; 100D 2 Memory Load address +; 100F 1 Current track No. ( 0 to 69 ) +; 1010 1 Current Sector No. ( 1 to 16 ) +; 1011 1 Start track No. ( 0 to 69 ) +; 1012 1 Start Sector No. ( 1 to 16 ) + + +; Controller register +; $D8 ; Command Register (write) +; $D8 ; Status Register (read) +; $D9 ; Track Register (write) +: $DA ; Sector Register (write) +: $DB ; Data Register (read/write) +; $DC ; Drive/Motor select (write) +; $DD ; Side/Head select (write) + + +f000 00 NOP ;ID for interface detection +f001 110810 LD DE,1008H ;nach +f004 21DDF0 LD HL,0F0DDH ;von +f007 010B00 LD BC,000BH ;11 bytes 00 00 00 00 01 00 CE 00 00 00 00 +f00a EDB0 LDIR ;BC=0, HL=F0E8, DE=1013 +f00c CD51F1 CALL 0F151H ;init 1001-1005, port $DC mit $00 +f00f CD0900 CALL 0009H ;NL +f012 11A1F0 LD DE,0F0A1H ;msg BOOT DRIVE? +f015 CD1500 CALL 0015H ;prt +f018 11A311 LD DE,11A3H ;kbd buffer +f01b CD0300 CALL 0003H ;get line +f01e 1A LD A,(DE) ;get 1st char +f01f FE1B CP 1BH ;brk? +f021 CA8900 JP Z,0098H ;yes +f024 210C00 LD HL,000CH +f027 19 ADD HL,DE ;skip around msg, 11A3+0C=11AF +f028 7E LD A,(HL) ;get char +f029 FE0D CP 0DH ;CR? +f02b 280D JR Z,0F03AH ;yes, default drive 1 +f02d CDF903 CALL 03F9H ;ASCII to hex (A) +f030 38DD JR C,0F00FH ;nohex, error, again +f032 3D DEC A ;-1 +f033 FE04 CP 04H ;drive >4? +f035 30D8 JR NC,0F00FH ;error, again +f037 320810 LD (1008H),A ;save drive no -1 (0 to 3) +f03a DD210810 LD IX,1008H ;drive no +f03e CDBAF1 CALL 0F1BAH ;read sector 1 of trk 0 +f041 2100CE LD HL,0CE00H ;dsk buffer +f044 11CCF0 LD DE,0F0CCH ;=02 mst dsk flag (changed to 03) +f047 0607 LD B,07H ;check for #02,"IPLPRO" +f049 4E LD C,(HL) +f04a 1A LD A,(DE) +f04b B9 CP C +f04c C28CF0 JP NZ,0F08CH ;error no master dsk +f04f 23 INC HL ;nxt char +f050 13 INC DE ;nxt char +f051 10F6 DJNZ 0F049H ;nxt char +f053 CD0900 CALL 0009H ;NL +f056 11BCF0 LD DE,0F0BCH +f059 CD1500 CALL 0015H ;msg K&P IS LOADING +f05c 1107CE LD DE,0CE07H +f05f CD1500 CALL 0015H ;prt prog name +f062 2A16CE LD HL,(0CE16H) ;load address +f065 DD7505 LD (IX+05H),L ;to 100D/100E +f068 DD7406 LD (IX+06H),H +f06b 2A14CE LD HL,(0CE14H) ;size +f06e DD7503 LD (IX+03H),L ;to 100B/100C +f071 DD7404 LD (IX+04H),H +f074 2A1ECE LD HL,(0CE1EH) ;logical sector number +f077 DD7501 LD (IX+01H),L ;to 1009/100A +f07a DD7402 LD (IX+02H),H +f07d CDBAF1 CALL 0F1BAH +f080 CD51F1 CALL 0F151H +f083 2A18CE LD HL,(0CE18H) ;exec address +f086 E9 JP (HL) + +f087 11AEF0 LD DE,0F0AEH ;msg LOADING ERROR +f08a 1803 JR 0F08FH + +f08c 11E8F0 LD DE,0F0E8H ;msg THIS DISKETTE IS NOT MASTER +f08f CD0900 CALL 0009H +f092 CD1500 CALL 0015H +f095 CD0900 CALL 0009H +f098 11D3F0 LD DE,0F0D3H +f09b CD3000 CALL 0030H ;play melody +f09e C3A200 JP 00A2H ;warm start + +f0a1 db "BOOT DRIVE ?",#0D + +f0ae db "LOADING ERROR",#0D + +f0bc db "K&P IS LOADING ",#0D + +f0cc db #02 ; changed to 03 +f0cd db "IPLPRO" + +;melody data +f0d3 db "A0",#D7,"ARA",#D7,"AR",#0D +f0dd db ,#00,#00,#00,#00,#01,#00,#CE,#00,#00,#00,#00 + +f0e8 db "THIS DISKETTE IS NOT MASTER",#0D + +f104 3A0110 LD A,(1001H) ;motor on flag +f107 0F RRCA ;motor off? +f108 D438F1 CALL NC,0F138H ;yes, set motor on and wait +f10b DD7E00 LD A,(IX+00H) ;drive no +f10e F684 OR 84H ; +f110 D3DC OUT (0DCH),A ;Motor on for drive 0-3 +f112 AF XOR A +f113 320010 LD (1000H),A ;clr latest FDC command byte +f116 210000 LD HL,0000H +f119 2B DEC HL +f11a 7C LD A,H +f11b B5 OR L +f11c CA9DF2 JP Z,0F29DH ;reset and msg THIS DISKETTE IS NOT MASTER +f11f DBD8 IN A,(0D8H) ;state reg +f121 2F CPL +f122 07 RLCA +f123 38F4 JR C,0F119H ;wait on motor off (bit 7) +f125 DD4E00 LD C,(IX+00H) ;drive no +f128 210210 LD HL,1002H ;1 track 0 flag for each drive +f12b 0600 LD B,00H +f12d 09 ADD HL,BC ;compute related flag 1002/1003/1004/1005 +f12e CB46 BIT 0,(HL) ; +f130 2005 JR NZ,0F137H ;no +f132 CD64F1 CALL 0F164H ; +f135 CBC6 SET 0,(HL) ;set bit 0 of trk 0 flag +f137 C9 RET + +;motor on +f138 3E80 LD A,80H +f13a D3DC OUT (0DCH),A ;Motor on +f13c 0610 LD B,10H +f13e CDC7F2 CALL 0F2C7H ;wait loop2 +f141 10FB DJNZ 0F13EH ;16 times +f143 3E01 LD A,01H +f145 320110 LD (1001H),A ;motor on flag on +f148 C9 RET + +;command 1b output +f149 3E1B LD A,1BH ;1x = SEEK +f14b CD71F1 CALL 0F171H ;command 1b output +f14e E699 AND 99H +f150 C9 RET + +;init/reset flags, set motor off +f151 AF XOR A +f152 D3DC OUT (0DCH),A ;Motor on/off +f154 320210 LD (1002H),A ;track 0 flag drive 1 +f157 320310 LD (1003H),A ;track 0 flag drive 2 +f15a 320410 LD (1004H),A ;track 0 flag drive 3 +f15d 320510 LD (1005H),A ;track 0 flag drive 4 +f160 320110 LD (1001H),A :motor on flag +f163 C9 RET + +f164 3E0B LD A,0BH ;0x = RESTORE (seek track 0) +f166 CD71F1 CALL 0F171H +f169 E685 AND 85H ; +f16b EE04 XOR 04H ; +f16d C8 RET Z ; +f16e F3 DI +f16f 9D SBC A,L +f170 C23200 JP NZ,0032H ;??? + +f171 320010 ld (1000H),a ;latest FDC command 0b/1b + +f173 2F CPL ;f4/e4 +f175 D3D8 OUT (0D8H),A ;Command reg +f177 CD7EF1 CALL 0F17EH ;wait on ready +f17a DBD8 IN A,(0D8H) ;state reg +f17c 2F CPL +f17d C9 RET + +;Wait on ready +f17e D5 PUSH DE +f17f E5 PUSH HL +f180 CDC0F2 CALL 0F2C0H ;wait loop1 +f183 1E07 LD E,07H +f185 210000 LD HL,0000H +f188 2B DEC HL +f189 7C LD A,H +f18a B5 OR L +f18b 2809 JR Z,0F196H +f18d DBD8 IN A,(0D8H) ;state reg +f18f 2F CPL +f190 0F RRCA +f191 38F5 JR C,0F188H ;wait on busy (bit 0) +f193 E1 POP HL +f194 D1 POP DE +f195 C9 RET + +f196 1D DEC E +f197 20EC JR NZ,0F185H +f199 C39DF2 JP 0F29DH + +;wait on bit1=0 of state reg +f19c D5 PUSH DE +f19d E5 PUSH HL +f19e CDC0F2 CALL 0F2C0H ;wait loop1 +f1a1 1E07 LD E,07H ;init next wait loop +f1a3 210000 LD HL,0000H +f1a6 2B DEC HL +f1a7 7C LD A,H +f1a8 B5 OR L +f1a9 2809 JR Z,0F1B4H +f1ab DBD8 IN A,(0D8H) ;state reg +f1ad 2F CPL +f1ae 0F RRCA +f1af 30F5 JR NC,0F1A6H ;wait on not busy (bit 0) +f1b1 E1 POP HL +f1b2 D1 POP DE +f1b3 C9 RET + +f1b4 1D DEC E +f1b5 20EC JR NZ,0F1A3H ;wait loop +f1b7 C39DF2 JP 0F29DH + +f1ba CD20F2 CALL 0F220H ;compute logical sector-no to track-no & sector-no, retries=10 +f1bd CD29F2 CALL 0F229H ;set current track & sector, get load address to HL +f1c0 CD49F2 CALL 0F249H ;set side reg +f1c3 CD49F1 CALL 0F149H ;command 1b output (seek) +f1c6 204E JR NZ,0F216H ; +f1c8 CD59F2 CALL 0F259H ;set track & sector reg +f1cb DDE5 PUSH IX ;save 1008 +f1cd DD2100F3 LD IX,0F300H +f1d1 FD21DFF1 LD IY,0F1DFH ;ret addr +f1d5 F3 DI +f1d6 3E94 LD A,94H ;latest FDC command byte +f1d8 CD8AF2 CALL 0F28AH ;set command reg, wait ready +f1db 0600 LD B,00H +f1dd DDE9 JP (IX) ;to F300 & return to f1df + +;get chars from disk sector to area beginning at CE00 +f1df EDA2 INI +f1e1 C200F3 JP NZ,0F300H +f1e4 DDE1 POP IX +f1e6 DD3408 INC (IX+08H) ;current sector number +f1e9 DD7E08 LD A,(IX+08H) ;current sector number +f1ec DDE5 PUSH IX ;save 1008 +f1ee DD2100F3 LD IX,0F300H +f1f2 FE11 CP 11H ;sector 17? +f1f4 2805 JR Z,0F1FBH +f1f6 15 DEC D +f1f7 20E2 JR NZ,0F1DBH +f1f9 1801 JR 0F1FCH + +f1fb 15 DEC D +f1fc CD94F2 CALL 0F294H +f1ff CDD2F2 CALL 0F2D2H +f202 DDE1 POP IX ;1008 +f204 DBD8 IN A,(0D8H) ;state reg +f206 2F CPL +f207 E6FF AND 0FFH +f209 200B JR NZ,0F216H +f20b CD78F2 CALL 0F278H +f20e CA1BF2 JP Z,0F21BH ;if D=0 +f211 DD7E07 LD A,(IX+07H) ;current track no +f214 18AA JR 0F1C0H + +; +f216 CD6AF2 CALL 0F26AH +f219 18A2 JR 0F1BDH + +f21b 3E80 LD A,80H +f21d D3DC OUT (0DCH),A ;Motor on +f21f C9 RET + +f220 CDA3F2 CALL 0F2A3H ;compute logical sector no to track no & sector no +f223 3E0A LD A,0AH +f225 320610 LD (1006H),A ;10 retries +f228 C9 RET + +;set current track & sector, get load address to HL +f229 CD04F1 CALL 0F104H +f22c DD5604 LD D,(IX+04H) ;number of sectors to read +f22f DD7E03 LD A,(IX+03H) ;bytes to read +f232 B7 OR A ;0? +f233 2801 JR Z,0F236H ;yes +f235 14 INC D ;number of sectors to read + 1 +f236 DD7E0A LD A,(IX+0AH) ;start sector number +f239 DD7708 LD (IX+08H),A ;to current sector number +f23c DD7E09 LD A,(IX+09H) ;start track number +f23f DD7707 LD (IX+07H),A ;to current track number +f242 DD6E05 LD L,(IX+05H) ;load address low byte +f245 DD6606 LD H,(IX+06H) ;load address high byte +f248 C9 RET + +;compute side/head +f249 CB3F SRL A ;track number even? +f24b 2F CPL ; +f24c D3DB OUT (0DBH),A ;output track no +f24e 3004 JR NC,0F254H ;yes, even, set side/head 0 +f250 3E01 LD A,01H ;no, odd, set side/head 1 +f252 1801 JR 0F255H + +;set side/head reg +f254 AF XOR A +f255 2F CPL ; +f256 D3DD OUT (0DDH),A ;side/head reg +f258 C9 RET + +;set track & sector reg +f259 0EDB LD C,0DBH +f25b DD7E07 LD A,(IX+07H) ;current track number +f25e CB3F SRL A ; +f260 2F CPL ; +f261 D3D9 OUT (0D9H),A ;track reg +f263 DD7E08 LD A,(IX+08H) ;current sector number +f266 2F CPL ; +f267 D3DA OUT (0DAH),A ;sector reg +f269 C9 RET + +f26a 3A0610 LD A,(1006H) ;retry count - 1 +f26d 3D DEC A +f26e 320610 LD (1006H),A ;retry count +f271 CA9DF2 JP Z,0F29DH +f274 CD64F1 CALL 0F164H +f277 C9 RET + +f278 DD7E08 LD A,(IX+08H) ;current sector number +f27b FE11 CP 11H +f27d 2008 JR NZ,0F287H ;no, not 17 +f27f 3E01 LD A,01H +f281 DD7708 LD (IX+08H),A ;current sector number = 1 +f284 DD3407 INC (IX+07H) ;current track number + 1 +f287 7A LD A,D +f288 B7 OR A ; +f289 C9 RET + +;output to command reg and wait on ready +f28a 320010 LD (1000H),A ;latest FDC command byte +f28d 2F CPL +f28e D3D8 OUT (0D8H),A ;command reg +f290 CD9CF1 CALL 0F19CH ;wait on not busy +f293 C9 RET + +:force interrupt +f294 3ED8 LD A,0D8H ;force interrupt code +f296 2F CPL +f297 D3D8 OUT (0D8H),A ;force interrupt +f299 CD7EF1 CALL 0F17EH +f29c C9 RET + +f29d CD51F1 CALL 0F151H ;reset flags +f2a0 C387F0 JP 0F087H ;loading error + +; compute logical sector no to physical track no and sector no +f2a3 0600 LD B,00H +f2a5 111000 LD DE,0010H ;no of sectors per trk (16) +f2a8 DD6E01 LD L,(IX+01H) ;logical sector number +f2ab DD6602 LD H,(IX+02H) ;2 bytes in length +f2ae AF XOR A +f2af ED52 SBC HL,DE ;subtract 16 sectors/trk +f2b1 3803 JR C,0F2B6H ;yes, negative value +f2b3 04 INC B ;count track +f2b4 18F9 JR 0F2AFH ;loop + +f2b6 19 ADD HL,DE ;reset HL to the previous +f2b7 60 LD H,B ;track +f2b8 2C INC L ;correction +1 +f2b9 DD7409 LD (IX+09H),H ;start track no +f2bc DD750A LD (IX+0AH),L ;start sector no +f2bf C9 RET + +;wait loop1 +f2c0 D5 PUSH DE +f2c1 110700 LD DE,0007H +f2c4 C3CBF2 JP 0F2CBH ;wait loop + +; Wait loop2 +f2c7 D5 PUSH DE +f2c8 111310 LD DE,1013H +f2cb 1B DEC DE ;see f2c0, value set to 0007 +f2cc 7B LD A,E +f2cd B2 OR D +f2ce 20FB JR NZ,0F2CBH ;wait loop +f2d0 D1 POP DE +f2d1 C9 RET + +f2d2 F5 PUSH AF +f2d3 3A9C11 LD A,(119CH) ;time flag +f2d6 FEF0 CP 0F0H +f2d8 2001 JR NZ,0F2DBH +f2da FB EI +f2db F1 POP AF +f2dc C9 RET + + +;should never be executed automatically! +f2dd 11E5F2 LD DE,0F2E5H +f2e0 CD1500 CALL 0015H ;msg (C) 1983 F.Scheider +f2e3 1824 JR 0F309H + +f2e5 db "(C) 1983 F.Scheider ",#0D + +f2f9 FF RST 38H +f2fa FF RST 38H +f2fb FF RST 38H +f2fc FF RST 38H +f2fd FF RST 38H +f2fe FF RST 38H +f2ff FF RST 38H + +;wait on bit 0 and bit 1 = 0 of state reg +f300 DBD8 IN A,(0D8H) ;state reg +f302 0F RRCA +f303 38FB JR C,0F300H ;wait on not busy +f305 0F RRCA +f306 38F8 JR C,0F300H ;wait on data reg ready +f308 FDE9 JP (IY) ;to f1df + + +;should never be executed automatically!! +f30a 1112F3 LD DE,0F312H +f30d CD1500 CALL 0015H ;msg Hardware: K.Minor +f310 1812 JR 0F324H + +f312 db "Hardware: K.Minor",#0D + + +;should never be executed automatically!! +f324 112CF3 LD DE,0F32CH +f327 CD1500 CALL 0015H ;msg K&P,West Germany +f32a 18B1 JR 0F2DDH + +f32c db "K&P,West Germany ",#0D + +f33e FF RST 38H +f33f FF RST 38H +f340 FF RST 38H +f341 FF RST 38H +f342 FF RST 38H +f343 FF RST 38H +f344 FF RST 38H +f345 FF RST 38H +f346 FF RST 38H +f347 FF RST 38H +f348 FF RST 38H +f349 FF RST 38H +f34a FF RST 38H +f34b FF RST 38H +f34c FF RST 38H +f34d FF RST 38H +f34e FF RST 38H +f34f FF RST 38H +f350 FF RST 38H +f351 FF RST 38H +f352 FF RST 38H +f353 FF RST 38H +f354 FF RST 38H +f355 FF RST 38H +f356 FF RST 38H +f357 FF RST 38H +f358 FF RST 38H +f359 FF RST 38H +f35a FF RST 38H +f35b FF RST 38H +f35c FF RST 38H +f35d FF RST 38H +f35e FF RST 38H +f35f FF RST 38H +f360 FF RST 38H +f361 FF RST 38H +f362 FF RST 38H +f363 FF RST 38H +f364 FF RST 38H +f365 FF RST 38H +f366 FF RST 38H +f367 FF RST 38H +f368 FF RST 38H +f369 FF RST 38H +f36a FF RST 38H +f36b FF RST 38H +f36c FF RST 38H +f36d FF RST 38H +f36e FF RST 38H +f36f FF RST 38H +f370 FF RST 38H +f371 FF RST 38H +f372 FF RST 38H +f373 FF RST 38H +f374 FF RST 38H +f375 FF RST 38H +f376 FF RST 38H +f377 FF RST 38H +f378 FF RST 38H +f379 FF RST 38H +f37a FF RST 38H +f37b FF RST 38H +f37c FF RST 38H +f37d FF RST 38H +f37e FF RST 38H +f37f FF RST 38H +f380 FF RST 38H +f381 FF RST 38H +f382 FF RST 38H +f383 FF RST 38H +f384 FF RST 38H +f385 FF RST 38H +f386 FF RST 38H +f387 FF RST 38H +f388 FF RST 38H +f389 FF RST 38H +f38a FF RST 38H +f38b FF RST 38H +f38c FF RST 38H +f38d FF RST 38H +f38e FF RST 38H +f38f FF RST 38H +f390 FF RST 38H +f391 FF RST 38H +f392 FF RST 38H +f393 FF RST 38H +f394 FF RST 38H +f395 FF RST 38H +f396 FF RST 38H +f397 FF RST 38H +f398 FF RST 38H +f399 FF RST 38H +f39a FF RST 38H +f39b FF RST 38H +f39c FF RST 38H +f39d FF RST 38H +f39e FF RST 38H +f39f FF RST 38H +f3a0 FF RST 38H +f3a1 FF RST 38H +f3a2 FF RST 38H +f3a3 FF RST 38H +f3a4 FF RST 38H +f3a5 FF RST 38H +f3a6 FF RST 38H +f3a7 FF RST 38H +f3a8 FF RST 38H +f3a9 FF RST 38H +f3aa FF RST 38H +f3ab FF RST 38H +f3ac FF RST 38H +f3ad FF RST 38H +f3ae FF RST 38H +f3af FF RST 38H +f3b0 FF RST 38H +f3b1 FF RST 38H +f3b2 FF RST 38H +f3b3 FF RST 38H +f3b4 FF RST 38H +f3b5 FF RST 38H +f3b6 FF RST 38H +f3b7 FF RST 38H +f3b8 FF RST 38H +f3b9 FF RST 38H +f3ba FF RST 38H +f3bb FF RST 38H +f3bc FF RST 38H +f3bd FF RST 38H +f3be FF RST 38H +f3bf FF RST 38H +f3c0 FF RST 38H +f3c1 FF RST 38H +f3c2 FF RST 38H +f3c3 FF RST 38H +f3c4 FF RST 38H +f3c5 FF RST 38H +f3c6 FF RST 38H +f3c7 FF RST 38H +f3c8 FF RST 38H +f3c9 FF RST 38H +f3ca FF RST 38H +f3cb FF RST 38H +f3cc FF RST 38H +f3cd FF RST 38H +f3ce FF RST 38H +f3cf FF RST 38H +f3d0 FF RST 38H +f3d1 FF RST 38H +f3d2 FF RST 38H +f3d3 FF RST 38H +f3d4 FF RST 38H +f3d5 FF RST 38H +f3d6 FF RST 38H +f3d7 FF RST 38H +f3d8 FF RST 38H +f3d9 FF RST 38H +f3da FF RST 38H +f3db FF RST 38H +f3dc FF RST 38H +f3dd FF RST 38H +f3de FF RST 38H +f3df FF RST 38H +f3e0 FF RST 38H +f3e1 FF RST 38H +f3e2 FF RST 38H +f3e3 FF RST 38H +f3e4 FF RST 38H +f3e5 FF RST 38H +f3e6 FF RST 38H +f3e7 FF RST 38H +f3e8 FF RST 38H +f3e9 FF RST 38H +f3ea FF RST 38H +f3eb FF RST 38H +f3ec FF RST 38H +f3ed FF RST 38H +f3ee FF RST 38H +f3ef FF RST 38H +f3f0 FF RST 38H +f3f1 FF RST 38H +f3f2 FF RST 38H +f3f3 FF RST 38H +f3f4 FF RST 38H +f3f5 FF RST 38H +f3f6 FF RST 38H +f3f7 FF RST 38H +f3f8 FF RST 38H +f3f9 FF RST 38H +f3fa FF RST 38H +f3fb FF RST 38H +f3fc FF RST 38H +f3fd FF RST 38H + +f3fe FDE9 JP (IY) + +f400 00 NOP +f401 FF RST 38H +f402 00 NOP +f403 00 NOP +f404 FF RST 38H +f405 FF RST 38H +f406 00 NOP +f407 00 NOP +f408 FF RST 38H +f409 FF RST 38H +f40a 00 NOP +f40b 00 NOP +f40c FF RST 38H +f40d FF RST 38H +f40e 00 NOP +f40f 00 NOP +f410 FF RST 38H +f411 FF RST 38H +f412 00 NOP +f413 00 NOP +f414 FF RST 38H +f415 FF RST 38H +f416 00 NOP +f417 00 NOP +f418 FF RST 38H +f419 FF RST 38H +f41a 00 NOP +f41b 00 NOP +f41c FF RST 38H +f41d FF RST 38H +f41e 00 NOP +f41f 00 NOP +f420 FF RST 38H +f421 FF RST 38H +f422 00 NOP +f423 00 NOP +f424 FF RST 38H +f425 FF RST 38H +f426 00 NOP +f427 00 NOP +f428 FF RST 38H +f429 FF RST 38H +f42a 00 NOP +f42b 00 NOP +f42c FF RST 38H +f42d FF RST 38H +f42e 00 NOP +f42f 00 NOP +f430 FF RST 38H +f431 FF RST 38H +f432 00 NOP +f433 00 NOP +f434 FF RST 38H +f435 FF RST 38H +f436 00 NOP +f437 00 NOP +f438 FF RST 38H +f439 FF RST 38H +f43a 00 NOP +f43b 00 NOP +f43c FF RST 38H +f43d FF RST 38H +f43e 00 NOP +f43f 00 NOP +f440 FF RST 38H +f441 FF RST 38H +f442 00 NOP +f443 00 NOP +f444 FF RST 38H +f445 FF RST 38H +f446 00 NOP +f447 00 NOP +f448 FF RST 38H +f449 FF RST 38H +f44a 00 NOP +f44b 00 NOP +f44c FF RST 38H +f44d FF RST 38H +f44e 00 NOP +f44f 00 NOP +f450 FF RST 38H +f451 FF RST 38H +f452 00 NOP +f453 00 NOP +f454 FF RST 38H +f455 FF RST 38H +f456 00 NOP +f457 00 NOP +f458 FF RST 38H +f459 FF RST 38H +f45a 00 NOP +f45b 00 NOP +f45c FF RST 38H +f45d FF RST 38H +f45e 00 NOP +f45f 00 NOP +f460 FF RST 38H +f461 FF RST 38H +f462 00 NOP +f463 00 NOP +f464 FF RST 38H +f465 FF RST 38H +f466 00 NOP +f467 00 NOP +f468 FF RST 38H +f469 FF RST 38H +f46a 00 NOP +f46b 00 NOP +f46c FF RST 38H +f46d FF RST 38H +f46e 00 NOP +f46f 00 NOP +f470 FF RST 38H +f471 FF RST 38H +f472 00 NOP +f473 00 NOP +f474 FF RST 38H +f475 FF RST 38H +f476 00 NOP +f477 00 NOP +f478 FF RST 38H +f479 FF RST 38H +f47a 00 NOP +f47b 00 NOP +f47c FF RST 38H +f47d FF RST 38H +f47e 00 NOP +f47f 00 NOP +f480 FF RST 38H +f481 FF RST 38H +f482 00 NOP +f483 00 NOP +f484 FF RST 38H +f485 FF RST 38H +f486 00 NOP +f487 00 NOP +f488 FF RST 38H +f489 FF RST 38H +f48a 00 NOP +f48b 00 NOP +f48c FF RST 38H +f48d FF RST 38H +f48e 00 NOP +f48f 00 NOP +f490 FF RST 38H +f491 FF RST 38H +f492 00 NOP +f493 00 NOP +f494 FF RST 38H +f495 FF RST 38H +f496 00 NOP +f497 00 NOP +f498 FF RST 38H +f499 FF RST 38H +f49a 00 NOP +f49b 00 NOP +f49c FF RST 38H +f49d FF RST 38H +f49e 00 NOP +f49f 00 NOP +f4a0 FF RST 38H +f4a1 FF RST 38H +f4a2 00 NOP +f4a3 00 NOP +f4a4 FF RST 38H +f4a5 FF RST 38H +f4a6 00 NOP +f4a7 00 NOP +f4a8 FF RST 38H +f4a9 FF RST 38H +f4aa 00 NOP +f4ab 00 NOP +f4ac FF RST 38H +f4ad FF RST 38H +f4ae 00 NOP +f4af 00 NOP +f4b0 FF RST 38H +f4b1 FF RST 38H +f4b2 00 NOP +f4b3 00 NOP +f4b4 FF RST 38H +f4b5 FF RST 38H +f4b6 00 NOP +f4b7 00 NOP +f4b8 FF RST 38H +f4b9 FF RST 38H +f4ba 00 NOP +f4bb 00 NOP +f4bc FF RST 38H +f4bd FF RST 38H +f4be 00 NOP +f4bf 00 NOP +f4c0 FF RST 38H +f4c1 FF RST 38H +f4c2 00 NOP +f4c3 00 NOP +f4c4 FF RST 38H +f4c5 FF RST 38H +f4c6 00 NOP +f4c7 00 NOP +f4c8 FF RST 38H +f4c9 FF RST 38H +f4ca 00 NOP +f4cb 00 NOP +f4cc FF RST 38H +f4cd FF RST 38H +f4ce 00 NOP +f4cf 00 NOP +f4d0 FF RST 38H +f4d1 FF RST 38H +f4d2 00 NOP +f4d3 00 NOP +f4d4 FF RST 38H +f4d5 FF RST 38H +f4d6 00 NOP +f4d7 00 NOP +f4d8 FF RST 38H +f4d9 FF RST 38H +f4da 00 NOP +f4db 00 NOP +f4dc FF RST 38H +f4dd FF RST 38H +f4de 00 NOP +f4df 00 NOP +f4e0 FF RST 38H +f4e1 FF RST 38H +f4e2 00 NOP +f4e3 00 NOP +f4e4 FF RST 38H +f4e5 FF RST 38H +f4e6 00 NOP +f4e7 00 NOP +f4e8 FF RST 38H +f4e9 FF RST 38H +f4ea 00 NOP +f4eb 00 NOP +f4ec FF RST 38H +f4ed FF RST 38H +f4ee 00 NOP +f4ef 00 NOP +f4f0 FF RST 38H +f4f1 FF RST 38H +f4f2 00 NOP +f4f3 00 NOP +f4f4 FF RST 38H +f4f5 FF RST 38H +f4f6 00 NOP +f4f7 00 NOP +f4f8 FF RST 38H +f4f9 FF RST 38H +f4fa 00 NOP +f4fb 00 NOP +f4fc FF RST 38H +f4fd FF RST 38H +f4fe 00 NOP +f4ff 00 NOP +f500 00 NOP +f501 00 NOP +f502 FF RST 38H +f503 FF RST 38H +f504 00 NOP +f505 00 NOP +f506 FF RST 38H +f507 FF RST 38H +f508 00 NOP +f509 00 NOP +f50a FF RST 38H +f50b FF RST 38H +f50c 00 NOP +f50d 00 NOP +f50e FF RST 38H +f50f FF RST 38H +f510 00 NOP +f511 00 NOP +f512 FF RST 38H +f513 FF RST 38H +f514 00 NOP +f515 00 NOP +f516 FF RST 38H +f517 FF RST 38H +f518 00 NOP +f519 00 NOP +f51a FF RST 38H +f51b FF RST 38H +f51c 00 NOP +f51d 00 NOP +f51e FF RST 38H +f51f FF RST 38H +f520 00 NOP +f521 00 NOP +f522 FF RST 38H +f523 FF RST 38H +f524 00 NOP +f525 00 NOP +f526 FF RST 38H +f527 FF RST 38H +f528 00 NOP +f529 00 NOP +f52a FF RST 38H +f52b FF RST 38H +f52c 00 NOP +f52d 00 NOP +f52e FF RST 38H +f52f FF RST 38H +f530 00 NOP +f531 00 NOP +f532 FF RST 38H +f533 FF RST 38H +f534 00 NOP +f535 00 NOP +f536 FF RST 38H +f537 FF RST 38H +f538 00 NOP +f539 00 NOP +f53a FF RST 38H +f53b FF RST 38H +f53c 00 NOP +f53d 00 NOP +f53e FF RST 38H +f53f FF RST 38H +f540 00 NOP +f541 00 NOP +f542 FF RST 38H +f543 FF RST 38H +f544 00 NOP +f545 00 NOP +f546 FF RST 38H +f547 FF RST 38H +f548 00 NOP +f549 00 NOP +f54a FF RST 38H +f54b FF RST 38H +f54c 00 NOP +f54d 00 NOP +f54e FF RST 38H +f54f FF RST 38H +f550 00 NOP +f551 00 NOP +f552 FF RST 38H +f553 FF RST 38H +f554 00 NOP +f555 00 NOP +f556 FF RST 38H +f557 FF RST 38H +f558 00 NOP +f559 00 NOP +f55a FF RST 38H +f55b FF RST 38H +f55c 00 NOP +f55d 00 NOP +f55e FF RST 38H +f55f FF RST 38H +f560 00 NOP +f561 00 NOP +f562 FF RST 38H +f563 FF RST 38H +f564 00 NOP +f565 00 NOP +f566 FF RST 38H +f567 FF RST 38H +f568 00 NOP +f569 00 NOP +f56a FF RST 38H +f56b FF RST 38H +f56c 00 NOP +f56d 00 NOP +f56e FF RST 38H +f56f FF RST 38H +f570 00 NOP +f571 00 NOP +f572 FF RST 38H +f573 FF RST 38H +f574 00 NOP +f575 00 NOP +f576 FF RST 38H +f577 FF RST 38H +f578 00 NOP +f579 00 NOP +f57a FF RST 38H +f57b FF RST 38H +f57c 00 NOP +f57d 00 NOP +f57e FF RST 38H +f57f FF RST 38H +f580 00 NOP +f581 00 NOP +f582 FF RST 38H +f583 FF RST 38H +f584 00 NOP +f585 00 NOP +f586 FF RST 38H +f587 FF RST 38H +f588 00 NOP +f589 00 NOP +f58a FF RST 38H +f58b FF RST 38H +f58c 00 NOP +f58d 00 NOP +f58e FF RST 38H +f58f FF RST 38H +f590 00 NOP +f591 00 NOP +f592 FF RST 38H +f593 FF RST 38H +f594 00 NOP +f595 00 NOP +f596 FF RST 38H +f597 FF RST 38H +f598 00 NOP +f599 00 NOP +f59a FF RST 38H +f59b FF RST 38H +f59c 00 NOP +f59d 00 NOP +f59e FF RST 38H +f59f FF RST 38H +f5a0 00 NOP +f5a1 00 NOP +f5a2 FF RST 38H +f5a3 FF RST 38H +f5a4 00 NOP +f5a5 00 NOP +f5a6 FF RST 38H +f5a7 FF RST 38H +f5a8 00 NOP +f5a9 00 NOP +f5aa FF RST 38H +f5ab FF RST 38H +f5ac 00 NOP +f5ad 00 NOP +f5ae FF RST 38H +f5af FF RST 38H +f5b0 00 NOP +f5b1 00 NOP +f5b2 FF RST 38H +f5b3 FF RST 38H +f5b4 00 NOP +f5b5 00 NOP +f5b6 FF RST 38H +f5b7 FF RST 38H +f5b8 00 NOP +f5b9 00 NOP +f5ba FF RST 38H +f5bb FF RST 38H +f5bc 00 NOP +f5bd 00 NOP +f5be FF RST 38H +f5bf FF RST 38H +f5c0 00 NOP +f5c1 00 NOP +f5c2 FF RST 38H +f5c3 FF RST 38H +f5c4 00 NOP +f5c5 00 NOP +f5c6 FF RST 38H +f5c7 FF RST 38H +f5c8 00 NOP +f5c9 00 NOP +f5ca FF RST 38H +f5cb FF RST 38H +f5cc 00 NOP +f5cd 00 NOP +f5ce FF RST 38H +f5cf FF RST 38H +f5d0 00 NOP +f5d1 00 NOP +f5d2 FF RST 38H +f5d3 FF RST 38H +f5d4 00 NOP +f5d5 00 NOP +f5d6 FF RST 38H +f5d7 FF RST 38H +f5d8 00 NOP +f5d9 00 NOP +f5da FF RST 38H +f5db FF RST 38H +f5dc 00 NOP +f5dd 00 NOP +f5de FF RST 38H +f5df FF RST 38H +f5e0 00 NOP +f5e1 00 NOP +f5e2 FF RST 38H +f5e3 FF RST 38H +f5e4 00 NOP +f5e5 00 NOP +f5e6 FF RST 38H +f5e7 FF RST 38H +f5e8 00 NOP +f5e9 00 NOP +f5ea FF RST 38H +f5eb FF RST 38H +f5ec 00 NOP +f5ed 00 NOP +f5ee FF RST 38H +f5ef FF RST 38H +f5f0 00 NOP +f5f1 00 NOP +f5f2 FF RST 38H +f5f3 FF RST 38H +f5f4 00 NOP +f5f5 00 NOP +f5f6 FF RST 38H +f5f7 FF RST 38H +f5f8 00 NOP +f5f9 00 NOP +f5fa FF RST 38H +f5fb FF RST 38H +f5fc 00 NOP +f5fd 00 NOP +f5fe FF RST 38H +f5ff FF RST 38H +f600 FF RST 38H +f601 FF RST 38H +f602 00 NOP +f603 00 NOP +f604 FF RST 38H +f605 FF RST 38H +f606 00 NOP +f607 00 NOP +f608 FF RST 38H +f609 FF RST 38H +f60a 00 NOP +f60b 00 NOP +f60c FF RST 38H +f60d FF RST 38H +f60e 00 NOP +f60f 00 NOP +f610 FF RST 38H +f611 FF RST 38H +f612 00 NOP +f613 00 NOP +f614 FF RST 38H +f615 FF RST 38H +f616 00 NOP +f617 00 NOP +f618 FF RST 38H +f619 FF RST 38H +f61a 00 NOP +f61b 00 NOP +f61c FF RST 38H +f61d FF RST 38H +f61e 00 NOP +f61f 00 NOP +f620 FF RST 38H +f621 FF RST 38H +f622 00 NOP +f623 00 NOP +f624 FF RST 38H +f625 FF RST 38H +f626 00 NOP +f627 00 NOP +f628 FF RST 38H +f629 FF RST 38H +f62a 00 NOP +f62b 00 NOP +f62c FF RST 38H +f62d FF RST 38H +f62e 00 NOP +f62f 00 NOP +f630 FF RST 38H +f631 FF RST 38H +f632 00 NOP +f633 00 NOP +f634 FF RST 38H +f635 FF RST 38H +f636 00 NOP +f637 00 NOP +f638 FF RST 38H +f639 FF RST 38H +f63a 00 NOP +f63b 00 NOP +f63c FF RST 38H +f63d FF RST 38H +f63e 00 NOP +f63f 00 NOP +f640 FF RST 38H +f641 FF RST 38H +f642 00 NOP +f643 00 NOP +f644 FF RST 38H +f645 FF RST 38H +f646 00 NOP +f647 00 NOP +f648 FF RST 38H +f649 FF RST 38H +f64a 00 NOP +f64b 00 NOP +f64c FF RST 38H +f64d FF RST 38H +f64e 00 NOP +f64f 00 NOP +f650 FF RST 38H +f651 FF RST 38H +f652 00 NOP +f653 00 NOP +f654 FF RST 38H +f655 FF RST 38H +f656 00 NOP +f657 00 NOP +f658 FF RST 38H +f659 FF RST 38H +f65a 00 NOP +f65b 00 NOP +f65c FF RST 38H +f65d FF RST 38H +f65e 00 NOP +f65f 00 NOP +f660 FF RST 38H +f661 FF RST 38H +f662 00 NOP +f663 00 NOP +f664 FF RST 38H +f665 FF RST 38H +f666 00 NOP +f667 00 NOP +f668 FF RST 38H +f669 FF RST 38H +f66a 00 NOP +f66b 00 NOP +f66c FF RST 38H +f66d FF RST 38H +f66e 00 NOP +f66f 00 NOP +f670 FF RST 38H +f671 FF RST 38H +f672 00 NOP +f673 00 NOP +f674 FF RST 38H +f675 FF RST 38H +f676 00 NOP +f677 00 NOP +f678 FF RST 38H +f679 FF RST 38H +f67a 00 NOP +f67b 00 NOP +f67c FF RST 38H +f67d FF RST 38H +f67e 00 NOP +f67f 00 NOP +f680 FF RST 38H +f681 FF RST 38H +f682 00 NOP +f683 00 NOP +f684 FF RST 38H +f685 FF RST 38H +f686 00 NOP +f687 00 NOP +f688 FF RST 38H +f689 FF RST 38H +f68a 00 NOP +f68b 00 NOP +f68c FF RST 38H +f68d FF RST 38H +f68e 00 NOP +f68f 00 NOP +f690 FF RST 38H +f691 FF RST 38H +f692 00 NOP +f693 00 NOP +f694 FF RST 38H +f695 FF RST 38H +f696 00 NOP +f697 00 NOP +f698 FF RST 38H +f699 FF RST 38H +f69a 00 NOP +f69b 00 NOP +f69c FF RST 38H +f69d FF RST 38H +f69e 00 NOP +f69f 00 NOP +f6a0 FF RST 38H +f6a1 FF RST 38H +f6a2 00 NOP +f6a3 00 NOP +f6a4 FF RST 38H +f6a5 FF RST 38H +f6a6 00 NOP +f6a7 00 NOP +f6a8 FF RST 38H +f6a9 FF RST 38H +f6aa 00 NOP +f6ab 00 NOP +f6ac FF RST 38H +f6ad FF RST 38H +f6ae 00 NOP +f6af 00 NOP +f6b0 FF RST 38H +f6b1 FF RST 38H +f6b2 00 NOP +f6b3 00 NOP +f6b4 FF RST 38H +f6b5 FF RST 38H +f6b6 00 NOP +f6b7 00 NOP +f6b8 FF RST 38H +f6b9 FF RST 38H +f6ba 00 NOP +f6bb 00 NOP +f6bc FF RST 38H +f6bd FF RST 38H +f6be 00 NOP +f6bf 00 NOP +f6c0 FF RST 38H +f6c1 FF RST 38H +f6c2 00 NOP +f6c3 00 NOP +f6c4 FF RST 38H +f6c5 FF RST 38H +f6c6 00 NOP +f6c7 00 NOP +f6c8 FF RST 38H +f6c9 FF RST 38H +f6ca 00 NOP +f6cb 00 NOP +f6cc FF RST 38H +f6cd FF RST 38H +f6ce 00 NOP +f6cf 00 NOP +f6d0 FF RST 38H +f6d1 FF RST 38H +f6d2 00 NOP +f6d3 00 NOP +f6d4 FF RST 38H +f6d5 FF RST 38H +f6d6 00 NOP +f6d7 00 NOP +f6d8 FF RST 38H +f6d9 FF RST 38H +f6da 00 NOP +f6db 00 NOP +f6dc FF RST 38H +f6dd FF RST 38H +f6de 00 NOP +f6df 00 NOP +f6e0 FF RST 38H +f6e1 FF RST 38H +f6e2 00 NOP +f6e3 00 NOP +f6e4 FF RST 38H +f6e5 FF RST 38H +f6e6 00 NOP +f6e7 00 NOP +f6e8 FF RST 38H +f6e9 FF RST 38H +f6ea 00 NOP +f6eb 00 NOP +f6ec FF RST 38H +f6ed FF RST 38H +f6ee 00 NOP +f6ef 00 NOP +f6f0 FF RST 38H +f6f1 FF RST 38H +f6f2 00 NOP +f6f3 00 NOP +f6f4 FF RST 38H +f6f5 FF RST 38H +f6f6 00 NOP +f6f7 00 NOP +f6f8 FF RST 38H +f6f9 FF RST 38H +f6fa 00 NOP +f6fb 00 NOP +f6fc FF RST 38H +f6fd FF RST 38H +f6fe 00 NOP +f6ff 00 NOP +f700 00 NOP +f701 00 NOP +f702 FF RST 38H +f703 FF RST 38H +f704 00 NOP +f705 00 NOP +f706 FF RST 38H +f707 FF RST 38H +f708 00 NOP +f709 00 NOP +f70a FF RST 38H +f70b FF RST 38H +f70c 00 NOP +f70d 00 NOP +f70e FF RST 38H +f70f FF RST 38H +f710 00 NOP +f711 00 NOP +f712 FF RST 38H +f713 FF RST 38H +f714 00 NOP +f715 00 NOP +f716 FF RST 38H +f717 FF RST 38H +f718 00 NOP +f719 00 NOP +f71a FF RST 38H +f71b FF RST 38H +f71c 00 NOP +f71d 00 NOP +f71e FF RST 38H +f71f FF RST 38H +f720 00 NOP +f721 00 NOP +f722 FF RST 38H +f723 FF RST 38H +f724 00 NOP +f725 00 NOP +f726 FF RST 38H +f727 FF RST 38H +f728 00 NOP +f729 00 NOP +f72a FF RST 38H +f72b FF RST 38H +f72c 00 NOP +f72d 00 NOP +f72e FF RST 38H +f72f FF RST 38H +f730 00 NOP +f731 00 NOP +f732 FF RST 38H +f733 FF RST 38H +f734 00 NOP +f735 00 NOP +f736 FF RST 38H +f737 FF RST 38H +f738 00 NOP +f739 00 NOP +f73a FF RST 38H +f73b FF RST 38H +f73c 00 NOP +f73d 00 NOP +f73e FF RST 38H +f73f FF RST 38H +f740 00 NOP +f741 00 NOP +f742 FF RST 38H +f743 FF RST 38H +f744 00 NOP +f745 00 NOP +f746 FF RST 38H +f747 FF RST 38H +f748 00 NOP +f749 00 NOP +f74a FF RST 38H +f74b FF RST 38H +f74c 00 NOP +f74d 00 NOP +f74e FF RST 38H +f74f FF RST 38H +f750 00 NOP +f751 00 NOP +f752 FF RST 38H +f753 FF RST 38H +f754 00 NOP +f755 00 NOP +f756 FF RST 38H +f757 FF RST 38H +f758 00 NOP +f759 00 NOP +f75a FF RST 38H +f75b FF RST 38H +f75c 00 NOP +f75d 00 NOP +f75e FF RST 38H +f75f FF RST 38H +f760 00 NOP +f761 00 NOP +f762 FF RST 38H +f763 FF RST 38H +f764 00 NOP +f765 00 NOP +f766 FF RST 38H +f767 FF RST 38H +f768 00 NOP +f769 00 NOP +f76a FF RST 38H +f76b FF RST 38H +f76c 00 NOP +f76d 00 NOP +f76e FF RST 38H +f76f FF RST 38H +f770 00 NOP +f771 00 NOP +f772 FF RST 38H +f773 FF RST 38H +f774 00 NOP +f775 00 NOP +f776 FF RST 38H +f777 FF RST 38H +f778 00 NOP +f779 00 NOP +f77a FF RST 38H +f77b FF RST 38H +f77c 00 NOP +f77d 00 NOP +f77e FF RST 38H +f77f FF RST 38H +f780 00 NOP +f781 00 NOP +f782 FF RST 38H +f783 FF RST 38H +f784 00 NOP +f785 00 NOP +f786 FF RST 38H +f787 FF RST 38H +f788 00 NOP +f789 00 NOP +f78a FF RST 38H +f78b FF RST 38H +f78c 00 NOP +f78d 00 NOP +f78e FF RST 38H +f78f FF RST 38H +f790 00 NOP +f791 00 NOP +f792 FF RST 38H +f793 FF RST 38H +f794 00 NOP +f795 00 NOP +f796 FF RST 38H +f797 FF RST 38H +f798 00 NOP +f799 00 NOP +f79a FF RST 38H +f79b FF RST 38H +f79c 00 NOP +f79d 00 NOP +f79e FF RST 38H +f79f FF RST 38H +f7a0 00 NOP +f7a1 00 NOP +f7a2 FF RST 38H +f7a3 FF RST 38H +f7a4 00 NOP +f7a5 00 NOP +f7a6 FF RST 38H +f7a7 FF RST 38H +f7a8 00 NOP +f7a9 00 NOP +f7aa FF RST 38H +f7ab FF RST 38H +f7ac 00 NOP +f7ad 00 NOP +f7ae FF RST 38H +f7af FF RST 38H +f7b0 00 NOP +f7b1 00 NOP +f7b2 FF RST 38H +f7b3 FF RST 38H +f7b4 00 NOP +f7b5 00 NOP +f7b6 FF RST 38H +f7b7 FF RST 38H +f7b8 00 NOP +f7b9 00 NOP +f7ba FF RST 38H +f7bb FF RST 38H +f7bc 00 NOP +f7bd 00 NOP +f7be FF RST 38H +f7bf FF RST 38H +f7c0 00 NOP +f7c1 00 NOP +f7c2 FF RST 38H +f7c3 FF RST 38H +f7c4 00 NOP +f7c5 00 NOP +f7c6 FF RST 38H +f7c7 FF RST 38H +f7c8 00 NOP +f7c9 00 NOP +f7ca FF RST 38H +f7cb FF RST 38H +f7cc 00 NOP +f7cd 00 NOP +f7ce FF RST 38H +f7cf FF RST 38H +f7d0 00 NOP +f7d1 00 NOP +f7d2 FF RST 38H +f7d3 FF RST 38H +f7d4 00 NOP +f7d5 00 NOP +f7d6 FF RST 38H +f7d7 FF RST 38H +f7d8 00 NOP +f7d9 00 NOP +f7da FF RST 38H +f7db FF RST 38H +f7dc 00 NOP +f7dd 00 NOP +f7de FF RST 38H +f7df FF RST 38H +f7e0 00 NOP +f7e1 00 NOP +f7e2 FF RST 38H +f7e3 FF RST 38H +f7e4 00 NOP +f7e5 00 NOP +f7e6 FF RST 38H +f7e7 FF RST 38H +f7e8 00 NOP +f7e9 00 NOP +f7ea FF RST 38H +f7eb FF RST 38H +f7ec 00 NOP +f7ed 00 NOP +f7ee FF RST 38H +f7ef FF RST 38H +f7f0 00 NOP +f7f1 00 NOP +f7f2 FF RST 38H +f7f3 FF RST 38H +f7f4 00 NOP +f7f5 00 NOP +f7f6 FF RST 38H +f7f7 FF RST 38H +f7f8 00 NOP +f7f9 00 NOP +f7fa FF RST 38H +f7fb FF RST 38H +f7fc 00 NOP +f7fd 00 NOP +f7fe FF RST 38H +f7ff FF RST 38H diff --git a/asm/sharpmz-test.asm b/asm/sharpmz-test.asm new file mode 100644 index 0000000..c08c31f --- /dev/null +++ b/asm/sharpmz-test.asm @@ -0,0 +1,1780 @@ +;-------------------------------------------------------------------------------------------------------- +;- +;- Name: sharpmz-test.asm +;- Created: October 2018 +;- Author(s): Philip Smart +;- Description: Sharp MZ series tester utility. +;- This assembly language program is written to aid in testing components +;- of the SharpMZ Series FPGA emulation. +;- +;- Currently it aids in testing: +;- 1. Tape Read +;- 2. Tape Write +;- 3. Memory Test +;- 4. Graphics RAM Test +;- +;- Credits: +;- Copyright: (c) 2018-2023 Philip Smart +;- +;- History: October 2018 - Merged 2 utilities to create this compilation. +;- +;-------------------------------------------------------------------------------------------------------- +;- This source file is free software: you can redistribute it and-or modify +;- it under the terms of the GNU General Public License as published +;- by the Free Software Foundation, either version 3 of the License, or +;- (at your option) any later version. +;- +;- This source file is distributed in the hope that it will be useful, +;- but WITHOUT ANY WARRANTY; without even the implied warranty of +;- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +;- GNU General Public License for more details. +;- +;- You should have received a copy of the GNU General Public License +;- along with this program. If not, see . +;-------------------------------------------------------------------------------------------------------- + +KEYPA: EQU 0E000h +KEYPB: EQU 0E001h +KEYPC: EQU 0E002h +KEYPF: EQU 0E003h +CSTR: EQU 0E002h +CSTPT: EQU 0E003h +CONT0: EQU 0E004h +CONT1: EQU 0E005h +CONT2: EQU 0E006h +CONTF: EQU 0E007h +SUNDG: EQU 0E008h +TEMP: EQU 0E008h +GETL: EQU 00003h +LETNL: EQU 00006h +NL: EQU 00009h +PRNTS: EQU 0000Ch +PRNT: EQU 00012h +MSG: EQU 00015h +MSGX: EQU 00018h +MONIT: EQU 00086h +ST1: EQU 00095h +PRTHL: EQU 003BAh +PRTHX: EQU 003C3h +DPCT: EQU 00DDCh +?BRK: EQU 00D11h +?RSTR1: EQU 00EE6h +TPSTART: EQU 010F0h +MEMSTART: EQU 01200h +GRAMSTART: EQU 0C000h +GRAMEND: EQU 0FFFFh +MSTART: EQU 0BF00h +GRCTL: EQU 0C8h +GRREDFLT: EQU 0C9h +GRGRNFLT: EQU 0CAh +GRBLUFLT: EQU 0CBh +GRENABLE: EQU 0CCh +GRDISABLE: EQU 0CDh + + + ORG TPSTART + +SPV: +IBUFE: ; TAPE BUFFER (128 BYTES) +;ATRB: DS virtual 1 ; ATTRIBUTE +ATRB: DB 01h ; Code Type, 01 = Machine Code. +;NAME: DS virtual 17 ; FILE NAME +NAME: DB "SHARPMZ TEST V1", 0Dh, 00h ; Title/Name (17 bytes). +;SIZE: DS virtual 2 ; BYTESIZE +SIZE: DW MEND - MSTART ; Size of program. +;DTADR: DS virtual 2 ; DATA ADDRESS +DTADR: DW MSTART ; Load address of program. +;EXADR: DS virtual 2 ; EXECUTION ADDRESS +EXADR: DW MSTART ; Exec address of program. +COMNT: DS 104 ; COMMENT +KANAF: DS virtual 1 ; KANA FLAG (01=GRAPHIC MODE) +DSPXY: DS virtual 2 ; DISPLAY COORDINATES +MANG: DS virtual 27 ; COLUMN MANAGEMENT +FLASH: DS virtual 1 ; FLASHING DATA +FLPST: DS virtual 2 ; FLASHING POSITION +FLSST: DS virtual 1 ; FLASHING STATUS +FLSDT: DS virtual 1 ; CURSOR DATA +STRGF: DS virtual 1 ; STRING FLAG +DPRNT: DS virtual 1 ; TAB COUNTER +TMCNT: DS virtual 2 ; TAPE MARK COUNTER +SUMDT: DS virtual 2 ; CHECK SUM DATA +CSMDT: DS virtual 2 ; FOR COMPARE SUM DATA +AMPM: DS virtual 1 ; AMPM DATA +TIMFG: DS virtual 1 ; TIME FLAG +SWRK: DS virtual 1 ; KEY SOUND FLAG +TEMPW: DS virtual 1 ; TEMPO WORK +ONTYO: DS virtual 1 ; ONTYO WORK +OCTV: DS virtual 1 ; OCTAVE WORK +RATIO: DS virtual 2 ; ONPU RATIO +BUFER: DS virtual 81 ; GET LINE BUFFER + + + + ORG MSTART + JP START + + ; Graphics Initialisation. Needs to be in memory before C000-FFFF + ; +GRAMINIT: OUT (GRCTL),A + OUT (GRENABLE),A +GRAM0: LD HL,GRAMSTART + LD BC,GRAMEND - GRAMSTART +GRAM1: LD A,000h + LD (HL),A + INC HL + DEC BC + LD A,B + OR C + JR NZ,GRAM1 + OUT (GRDISABLE),A + RET + + ; Graphics Test. Needs to be in memory before C000-FFFF + ; +GRAMTEST: OUT (GRCTL),A + OUT (GRENABLE),A + LD E,080h +GRAMTEST0: LD HL,GRAMSTART + LD BC,GRAMEND - GRAMSTART +GRAMTEST1: LD A,E + LD (HL),A + INC HL + DEC BC + LD A,B + OR C + JR NZ,GRAMTEST1 + SRL E + JR NZ,GRAMTEST0 + JR C,GRAMTEST0 + OUT (GRDISABLE),A + RET + + ; Graphics Test routine. + ; + ; Graphics mode:- 7/6 = Operator (00=OR,01=AND,10=NAND,11=XOR), + ; 5 = GRAM Output Enable 0 = active. + ; 4 = VRAM Output Enable, 0 = active. + ; 3/2 = Write mode (00=Page 1:Red, 01=Page 2:Green, 10=Page 3:Blue, 11=Indirect), + ; 1/0 = Read mode (00=Page 1:Red, 01=Page2:Green, 10=Page 3:Blue, 11=Not used). + ; +GRAPHICS: LD A,000h + CALL GRAMTEST + LD A,005h + CALL GRAMTEST + LD A,00Ah + CALL GRAMTEST + LD A,0AAh ; Set Red filter. + OUT (GRREDFLT),A + LD A,055h ; Set Green filter. + OUT (GRGRNFLT),A + LD A,0FFh ; Set Blue filter. + OUT (GRBLUFLT),A + LD A, 00Ch ; Set graphics mode to Indirect Page write. + CALL GRAMTEST + LD A, 0CCh ; Set graphics mode to Indirect Page write. + OUT (GRCTL),A + JR GETL1 + + ; Graphics progress bar indicator. Needs to be in memory before C000-FFFF + ; +GRPHIND: LD HL,(GRPHPOS) ; Get position of graphics progress line. + OUT (GRENABLE),A ; Enable graphics memory. + LD A,0FFh + LD (HL),A + OUT (GRDISABLE),A; Disable graphics memory. + INC HL + LD (GRPHPOS),HL + RET + + + ; + ; Start of main program. + ; +START: CALL LETNL + LD DE,TITLE + CALL MSG + CALL LETNL + CALL LETNL + ; +INITGRPH: LD DE,MSG_INITGR + CALL MSG + CALL LETNL + LD A,0FFh ; Set Red filter. + OUT (GRREDFLT),A + LD A,000h ; Set Green filter. + OUT (GRGRNFLT),A + LD A,000h ; Set Blue filter. + OUT (GRBLUFLT),A + LD A,000h + CALL GRAMINIT + LD A,005h + CALL GRAMINIT + LD A,00Ah + CALL GRAMINIT + LD A, 0CCh ; Set graphics mode to Indirect Page write. + OUT (GRCTL),A + LD HL,0DE00h + LD (GRPHPOS),HL + ; +INITMEM: LD DE,MSG_INITM + CALL MSG + CALL LETNL + LD HL,1200h + LD BC,MSTART - 1200h +CLEAR1: LD A,00h + LD (HL),A + INC HL + DEC BC + LD A,B + OR C + JP NZ,CLEAR1 +GETL1: CALL NL + LD A,03EH + CALL PRNT + LD DE,BUFER + CALL GETL +GETL2: LD A,(DE) + INC DE + CP 00DH + JR Z,GETL1 + CP 'G' ; Graphics Test + JP Z,GRAPHICS + CP 'H' ; Command Synopsis + JP Z,HELP + CP 'M' ; Memory Test + JR Z,MEMTEST + CP 'R' ; Read Test + JP Z,LOAD + CP 'T' ; Timer Test + JP Z,TIMERTST + CP 'W' ; Write Test + JP Z,SAVE + CP 'Q' ; Quit? + JP Z,ST1 + JR GETL2 + + +MEMTEST: LD B,240 ; Number of loops +LOOP: LD HL,MEMSTART ; Start of checked memory, + LD D,0BFh ; End memory check BF00 +LOOP1: LD A,000h + CP L + JR NZ,LOOP1b + CALL PRTHL ; Print HL as 4digit hex. + LD A,0C4h ; Move cursor left. + LD E,004h ; 4 times. +LOOP1a: CALL DPCT + DEC E + JR NZ,LOOP1a +LOOP1b: INC HL + LD A,H + CP D ; Have we reached end of memory. + JR Z,LOOP3 ; Yes, exit. + LD A,(HL) ; Read memory location under test, ie. 0. + CPL ; Subtract, ie. FF - A, ie FF - 0 = FF. + LD (HL),A ; Write it back, ie. FF. + SUB (HL) ; Subtract written memory value from A, ie. should be 0. + JR NZ,LOOP2 ; Not zero, we have an error. + LD A,(HL) ; Reread memory location, ie. FF + CPL ; Subtract FF - FF + LD (HL),A ; Write 0 + SUB (HL) ; Subtract 0 + JR Z,LOOP1 ; Loop if the same, ie. 0 +LOOP2: LD A,16h + CALL PRNT ; Print A + CALL PRTHX ; Print HL as 4 digit hex. + CALL PRNTS ; Print space. + XOR A + LD (HL),A + LD A,(HL) ; Get into A the failing bits. + CALL PRTHX ; Print A as 2 digit hex. + CALL PRNTS ; Print space. + LD A,0FFh ; Repeat but first load FF into memory + LD (HL),A + LD A,(HL) + CALL PRTHX ; Print A as 2 digit hex. + NOP + JR LOOP4 + +LOOP3: CALL PRTHL + LD DE,OKCHECK + CALL MSG ; Print check message in DE + LD A,B ; Print loop count. + CALL PRTHX + LD DE,OKMSG + CALL MSG ; Print ok message in DE + CALL NL + CALL GRPHIND + DEC B + JR NZ,LOOP + LD DE,DONEMSG + CALL MSG ; Print check message in DE + JP GETL1 + +LOOP4: LD B,09h + CALL PRNTS ; Print space. + XOR A ; Zero A + SCF ; Set Carry +LOOP5: PUSH AF ; Store A and Flags + LD (HL),A ; Store 0 to bad location. + LD A,(HL) ; Read back + CALL PRTHX ; Print A as 2 digit hex. + CALL PRNTS ; Print space + POP AF ; Get back A (ie. 0 + C) + RLA ; Rotate left A. Bit LSB becomes Carry (ie. 1 first instance), Carry becomes MSB + DJNZ LOOP5 ; Loop if not zero, ie. print out all bit locations written and read to memory to locate bad bit. + XOR A ; Zero A, clears flags. + LD A,80h + LD B,08h +LOOP6: PUSH AF ; Repeat above but AND memory location with original A (ie. 80) + LD C,A ; Basically walk through all the bits to find which one is stuck. + LD (HL),A + LD A,(HL) + AND C + NOP + JR Z,LOOP8 ; If zero then print out the bit number + NOP + NOP + LD A,C + CPL + LD (HL),A + LD A,(HL) + AND C + JR NZ,LOOP8 ; As above, if the compliment doesnt yield zero, print out the bit number. +LOOP7: POP AF + RRCA + NOP + DJNZ LOOP6 + JP GETL1 + +LOOP8: CALL LETNL ; New line. + LD DE,BITMSG ; BIT message + CALL MSG ; Print message in DE + LD A,B + DEC A + CALL PRTHX ; Print A as 2 digit hex, ie. BIT number. + CALL LETNL ; New line + LD DE,BANKMSG ; BANK message + CALL MSG ; Print message in DE + LD A,H + CP 50h ; 'P' + JR NC,LOOP9 ; Work out bank number, 1, 2 or 3. + LD A,01h + JR LOOP11 + +LOOP9: CP 90h + JR NC,LOOP10 + LD A,02h + JR LOOP11 + +LOOP10: LD A,03h +LOOP11: CALL PRTHX ; Print A as 2 digit hex, ie. BANK number. + JR LOOP7 + + + ; + ; LOAD COMMAND + ; +LOAD: CALL ?RDI + JP C,?ER +LOA0: CALL NL + LD DE,MSG_LOADFROM + CALL MSG + LD HL,(DTADR) + CALL PRTHL + CALL NL + LD DE,MSG_LOADEXEC + CALL MSG + LD HL,(EXADR) + CALL PRTHL + CALL NL + LD DE,MSG_LOADSIZE + CALL MSG + LD HL,(SIZE) + CALL PRTHL + CALL NL + LD DE,MSG_LOADFILE + CALL MSGX + LD DE,NAME + CALL MSGX + CALL NL + CALL ?RDD + JP C,?ER + LD HL,(EXADR) + LD A,H + CP 12h + JP C,GETL1 + JP (HL) + + + ; SAVE COMMAND + +SAVE: LD HL,TESTBUF + LD DE,IBUFE + LD BC,128 + LDIR + LD DE,TITLE_SAVE + CALL MSG + CALL LETNL + CALL LETNL + LD DE,MSG_SAVEFROM + CALL MSG + LD HL,(DTADR) + CALL PRTHL + CALL NL + LD DE,MSG_SAVEEXEC + CALL MSG + LD HL,(EXADR) + CALL PRTHL + CALL NL + LD DE,MSG_SAVESIZE + CALL MSG + LD HL,(SIZE) + CALL PRTHL + CALL NL + LD DE,MSG_SAVEFILE + CALL MSGX + LD DE,NAME + CALL MSGX + CALL NL + LD A,01H ; ATTRIBUTE: OBJECT CODE + LD (ATRB),A + ; + LD DE,MSG_WHDR + CALL MSGX + CALL NL + CALL QWRI + JP C,QER ; WRITE ERROR + ; + LD DE,MSG_WDATA + CALL MSGX + CALL NL + ; + CALL QWRD ; DATA + JP C,QER + CALL NL + LD DE,MSGOK ; OK MESSAGE + CALL MSGX ; CALL MSGX + JP GETL1 + + ; + ; ERROR (LOADING) + ; +QER: CP 02h + JP Z,GETL1 + LD DE,MSG_ERRWRITE + CALL MSG + JP GETL1 + ; + ; ERROR (LOADING) + ; +?ER: CP 02h + JP Z,GETL1 + LD DE,MSG_ERRCHKSUM + CALL MSG + JP GETL1 + ; + ; READ INFORMATION + ; + ; EXIT ACC = 0 : OK CF=0 + ; = 1 : ER CF=1 + ; = 2 : BREAK CF=1 + ; +?RDI: DI + PUSH DE + PUSH BC + PUSH HL + LD D,0D2h + LD E,0CCh + LD BC,80h + LD HL,IBUFE +RD1: CALL MOTOR + JP C,RTP6 + CALL TMARK + JP C,RTP6 +; CALL PRTHL + CALL RTAPE + POP HL + POP BC + POP DE + ;CALL MSTOP + PUSH AF + LD A,(TIMFG) + CP 0F0h + JR NZ,RD2 + EI +RD2: POP AF + RET + + ; + ; READ DATA + ; +?RDD: DI + PUSH DE + PUSH BC + PUSH HL + LD D,0D2h + LD E,53h + LD BC,(SIZE) + LD HL,(DTADR) + LD A,B + OR C + JP Z,RDD1 + JR RD1 +RDD1: POP HL + POP BC + POP DE + ;CALL MSTOP + PUSH AF + LD A,(TIMFG) + CP 0F0h + JR NZ,RDD2 + EI +RDD2: POP AF + RET + + ; + ; READ TAPE + ; +RTAPE: ;PUSH BC + ;PUSH DE + ;LD DE,MSG_READTAPE + ;CALL MSG + ;CALL NL + ;POP DE + ;POP BC + PUSH DE + PUSH BC + PUSH HL + LD H,2 +RTP1: LD BC,KEYPB + LD DE,CSTR +RTP2: CALL EDGE + JP C,RTP6 + CALL DLY3 + LD A,(DE) + AND 20h + JP Z,RTP2 + LD D,H + LD HL,0 + LD (SUMDT),HL + POP HL + POP BC + PUSH BC + PUSH HL +RTP3: CALL RBYTE + JP C,RTP6 + LD (HL),A + INC HL + DEC BC + LD A,B + OR C + JP NZ,RTP3 + LD HL,(SUMDT) + CALL RBYTE ; Checksum MSB + JP C,RTP6 + LD D,A + CALL RBYTE ; Checksum LSB + JP C,RTP6 + LD E,A + CP L + JP NZ,RTP5 + LD A,D + CP H + JP NZ,RTP5 +RTP0: XOR A + ; + PUSH HL + PUSH DE + PUSH DE + LD DE,MSG_CHKSUM_MZ1 + CALL MSGX + CALL PRTHL + CALL NL + LD DE,MSG_CHKSUM_TP1 + CALL MSGX + POP DE + EX DE,HL + CALL PRTHL + CALL NL + POP DE + POP HL + ; +RTP4: +RET2: POP HL + POP BC + POP DE + CALL MSTOP + PUSH AF + LD A,(TIMFG) + CP 0F0h + JR NZ,RTP8 + EI +RTP8: POP AF + RET + +RTP5: PUSH HL + PUSH DE + PUSH DE + LD DE,MSG_CHKSUM_MZ2 + CALL MSGX + CALL PRTHL + CALL NL + LD DE,MSG_CHKSUM_TP2 + CALL MSGX + POP DE + EX DE,HL + CALL PRTHL + CALL NL + POP DE + POP HL + ; + LD D,1 + DEC D + JR Z,RTP7 + LD H,D + CALL GAPCK + JP RTP1 +RTP7: LD A,1 + JR RTP9 +RTP6: LD A,2 +RTP9: SCF + JR RTP4 + + + ; + ; EDGE + ; BC = KEYPB + ; DE = CSTR + ; EXIT CF = 0 : EDGE + ; = 1 : BREAK + ; +EDGE: LD A,0F0h + LD (KEYPA),A + NOP +EDG1: LD A,(BC) + AND 81h ; SHIFT & BREAK + JP NZ,EDG0 + SCF + RET +EDG0: LD A,(DE) + AND 20h + JP NZ,EDG1 +EDG2: LD A,(BC) + AND 81h + JP NZ,EDG3 + SCF + RET +EDG3: LD A,(DE) + AND 20h + JP Z,EDG2 + RET + + + ; + ; 1 BYTE READ + ; + ; EXIT SUMDT=STORE + ; CF = 1 : BREAK + ; = 0 : DATA=ACC + ; +RBYTE: PUSH BC + PUSH DE + PUSH HL + LD HL,0800h + LD BC,KEYPB + LD DE,CSTR +RBY1: CALL EDGE + JP C,RBY3 + CALL DLY3 + LD A,(DE) + AND 20h + JP Z,RBY2 + PUSH HL + LD HL,(SUMDT) + INC HL + LD (SUMDT),HL + POP HL + SCF +RBY2: LD A,L + RLA + LD L,A + DEC H + JP NZ,RBY1 + CALL EDGE + LD A,L +RBY3: POP HL + POP DE + POP BC + RET + + ; + ; TAPE MARK DETECT + ; + ; E=@L@ : INFORMATION + ; =@S@ : DATA + ; EXIT CF = 0 : OK + ; = 1 : BREAK + ; +TMARK: CALL GAPCK + PUSH BC + PUSH DE + PUSH HL + PUSH BC + PUSH DE + LD DE,MSG_TAPEMARK + CALL MSG + CALL NL + POP DE + POP BC + LD HL,2828h + LD A,E + CP 0CCh + JP Z,TM0 + LD HL,1414h +TM0: LD (TMCNT),HL + LD BC,KEYPB + LD DE,CSTR +TM1: LD HL,(TMCNT) +TM2: CALL EDGE + JP C,TM4 + CALL DLY3 + LD A,(DE) + AND 20h + JP Z,TM1 + DEC H + JP NZ,TM2 +; CALL PRTHL +TM3: CALL EDGE + JP C,TM4 + CALL DLY3 + LD A,(DE) + AND 20h + JP NZ,TM1 + DEC L + JP NZ,TM3 + CALL EDGE +RET3: +TM4: POP HL + POP DE + POP BC + RET + +TM4A: CALL NL + CALL PRTHL ; Print HL as 4digit hex. + LD A,0C4h ; Move cursor left. +TM4B: CALL DPCT + CALL DPCT + CALL DPCT + CALL DPCT + CALL NL + JP GETL1 + + ; + ; MOTOR ON + ; + ; D=@W@ : WRITE + ; =@R@ : READ + ; EXIT CF=0 : OK + ; =1 : BREAK +MOTOR: PUSH BC + PUSH DE + PUSH HL + PUSH BC + PUSH DE + LD DE,MSG_MOTORTG + CALL MSG + CALL NL + POP DE + POP BC + LD B,10 +MOT1: LD A,(CSTR) + AND 10h + JR Z,MOT4 +MOT2: LD B,0A6h +MOT3: CALL DLY12 + DJNZ MOT3 + XOR A +MOT7: JR RET3 +MOT4: LD A,06h + LD HL,CSTPT + LD (HL),A + INC A + LD (HL),A + DJNZ MOT1 + CALL NL + LD A,D + CP 0D7h + JR Z,MOT8 + LD DE,MSG1 + JR MOT9 +MOT8: LD DE,MSG3 + CALL MSGX + LD DE,MSG2 +MOT9: CALL MSGX +MOT5: LD A,(CSTR) + AND 10h + JR NZ,MOT2 + CALL ?BRK + JR NZ,MOT5 + SCF + JR MOT7 + + ; + ; MOTOR STOP + ; +MSTOP: PUSH AF + PUSH BC + PUSH DE + PUSH BC + PUSH DE + LD DE,MSG_MOTORSTP + CALL MSG + CALL NL + POP DE + POP BC + LD B,10 +MST1: LD A,(CSTR) + AND 10H + JR Z,MST3 +MST2: LD A,06h + LD (CSTPT),A + INC A + LD (CSTPT),A + DJNZ MST1 +MST3: JP ?RSTR1 + + ; + ; CHECK SUM + ; + ; BC = SIZE + ; HL = DATA ADR + ; EXIT SUMDT=STORE + ; CSMDT=STORE + ; +CKSUM: PUSH BC + PUSH DE + PUSH HL + LD DE,0 +CKS1: LD A,B + OR C + JR NZ,CKS2 + EX DE,HL + LD (SUMDT),HL + LD (CSMDT),HL + POP HL + POP DE + POP BC + RET +CKS2: LD A,(HL) + PUSH BC + LD B,+8 +CKS3: RLCA + JR NC,CKS4 + INC DE +CKS4: DJNZ CKS3 + POP BC + INC HL + DEC BC + JR CKS1 + + + ; + ; 107 uS DELAY + ; +DLY1: LD A,14 +DLY1A: DEC A + JP NZ,DLY1A + RET + + ; + ; 240 uS DELAY + ; +DLY2: LD A,13 +DLY2A: DEC A + JP NZ,DLY2A + RET + + ; + ; 240 uS x 3 DELAY + ; +DLY3: NEG + NEG + LD A,42 + JP DLY2A + + ; + ; 12mS DELAY +DLY12: PUSH BC + LD B,35 +DLY12A: CALL DLY3 + DJNZ DLY12A + POP BC + RET + + + ; + ; GAP * TAPEMARK + ; + ; E = @L@ : LONG GAP + ; = @S@ : SHORT GAP + ; +GAP: PUSH BC + PUSH DE + PUSH HL + LD A,E + LD BC,55F0h ;Number of pulses for the Long Gap. + LD DE,2828h ;40 + 40 LTM + CP 0CCh + JP Z,GAP0 + LD BC,2AF8h ;Number of pulses for a Short Gap. + LD DE,1414h ;20 + 20 LTM +GAP0: PUSH DE + LD DE,MSG_WGAPS + CALL MSG + ; +GAP1: CALL SHORT ;22000 short GAP pulses. + LD H,B + LD L,C + LD A,000h + CP L + JR NZ,GAP1D + CALL PRTHL ; Print HL as 4digit hex. + LD A,0C4h ; Move cursor left. + LD E,004h ; 4 times. +GAP1B: CALL DPCT + DEC E + JR NZ,GAP1B +GAP1D: DEC BC + LD A,B + OR C + JR NZ,GAP1 + LD H,B + LD L,C + CALL PRTHL ; Print HL as 4digit hex. + LD DE,MSG_SPC + CALL MSG + CALL LETNL + POP DE + ; + LD BC,20000 ; 2 Second delay +GAP1C: CALL DLY1 + DEC BC + LD A,B + OR C + JR NZ,GAP1C + ; + PUSH DE +GAP1A: LD DE,MSG_WGAPL + CALL MSGX + POP DE +GAP2: PUSH DE + CALL LONG ;40 or 20 Long Pulses (LTM or STM) + LD H,00h + LD L,D + CALL PRTHL ; Print HL as 4digit hex. + LD A,0C4h ; Move cursor left. + LD E,004h ; 4 times. +GAP2B: CALL DPCT + DEC E + JR NZ,GAP2B + LD BC,1000 ; .1 Second delay +GAP2D: CALL DLY1 + DEC BC + LD A,B + OR C + JR NZ,GAP2D + POP DE + DEC D + JR NZ,GAP2 + LD H,000h + LD L,D + CALL PRTHL ; Print HL as 4digit hex. + PUSH DE + LD DE,MSG_SPC + CALL MSG + CALL LETNL + POP DE + ; + LD BC,20000 ; 2 Second delay +GAP2C: CALL DLY1 + DEC BC + LD A,B + OR C + JR NZ,GAP2C + ; +GAP2A: PUSH DE + LD DE,MSG_WGAPS2 + CALL MSGX + POP DE +GAP3: PUSH DE + CALL SHORT ;40 or 20 Short Pulses (LTM or STM) + LD H,00h + LD L,E + CALL PRTHL ; Print HL as 4digit hex. + LD A,0C4h ; Move cursor left. + LD E,004h ; 4 times. +GAP3B: CALL DPCT + DEC E + JR NZ,GAP3B + LD BC,1000 ; .1 Second delay +GAP3D: CALL DLY1 + DEC BC + LD A,B + OR C + JR NZ,GAP3D + POP DE + DEC E + JR NZ,GAP3 + LD H,000h + LD L,E + CALL PRTHL ; Print HL as 4digit hex. + PUSH DE + LD DE,MSG_SPC + CALL MSGX + CALL LETNL + POP DE + ; + LD BC,20000 ; 2 Second delay +GAP3C: CALL DLY1 + DEC BC + LD A,B + OR C + JR NZ,GAP3C + ; +GAP3A: PUSH DE + LD DE,MSG_WGAPL2 + CALL MSGX + CALL LETNL + POP DE + CALL LONG ;1 Long Pulse + POP HL + POP DE + POP BC + RET + + ;GAP Test - fixed 80 x short, 80 x long to see if hardware is receiving and counting correctly. + ; +;GAP: PUSH BC +; PUSH DE +;GAP0: LD BC,050h ;Number of pulses for the Long Gap. +;GAP1: CALL SHORT +;GAP1A: DEC BC +; LD A,B +; OR C +; JR NZ,GAP1 +; LD BC,0050h ;Number of pulses for the Long Gap. +;GAP2: CALL LONG +;GAP2A: DEC BC +; LD A,B +; OR C +; JR NZ,GAP2 +;GAP3A: JR GAP3A +;GAP3: POP DE +; POP BC +; RET + + + ; + ; GAP CHECK + ; +GAPCK: PUSH BC + PUSH DE + PUSH HL + LD DE,MSG_GAPCK + CALL MSG + CALL NL + LD BC,KEYPB + LD DE,CSTR +GAPCK1: LD H,100 +GAPCK2: CALL EDGE + JR C,GAPCK3 + CALL DLY3 + LD A,(DE) + AND 20h + JR NZ,GAPCK1 + DEC H + JR NZ,GAPCK2 +GAPCK3: JP RET3 + + ; + ; 1 bit write + ; Short Pulse + ; +SHORT: PUSH AF + LD A,03h + LD (CSTPT),A + CALL DLY1 + CALL DLY1 + LD A,02h + LD (CSTPT),A + CALL DLY1 + CALL DLY1 + POP AF + RET + + ; + ; 1 bit write + ; Long Pulse + ; +LONG: PUSH AF + LD A,03h + LD (CSTPT),A + CALL DLY1 + CALL DLY1 + CALL DLY1 + CALL DLY1 + LD A,02h + LD (CSTPT),A + CALL DLY1 + CALL DLY1 + CALL DLY1 + CALL DLY2 + POP AF + RET + + + ; WRITE INFORMATION + +QWRI: DI + PUSH DE + PUSH BC + PUSH HL + LD D,0D7H ; "W" + LD E,0CCH ; "L" + LD HL,IBUFE ; 10F0H + LD BC,80H ; WRITE BYTE SIZE +WRI1: CALL CKSUM ; CHECK SUM + CALL MOTOR ; MOTOR ON + JR C,WRI3 + LD A,E + CP 0CCH ; "L" - Long Gap/Tape Mark? + JR NZ,WRI2 + CALL NL + PUSH DE + LD DE,MSGN7 ; WRITING + RST 18H ; CALL MSGX + LD DE,NAME ; FILE NAME + RST 18H ; CALL MSGX + CALL NL + POP DE +WRI2: CALL GAP + CALL WTAPE +WRI3: JP RET2 + + + ; WRITE DATA + ; EXIT CF=0 : OK + ; =1 : BREAK + +QWRD: DI + PUSH DE + PUSH BC + PUSH HL + LD D,0D7H ; "W" + LD E,53H ; "S" +L047D: LD BC,(SIZE) ; WRITE DATA BYTE SIZE + LD HL,(DTADR) ; WRITE DATA ADDRESS + LD A,B + OR C + JP Z,RET1 + JR WRI1 + + ; TAPE WRITE + ; BC=BYTE SIZE + ; HL=DATA LOW ADDRESS + ; EXIT CF=0 : OK + ; =1 : BREAK + +WTAPE: PUSH DE + PUSH BC + PUSH HL + LD D,02H + LD A,0F0H ; 88H WOULD BE BETTER!! + LD (KEYPA),A ; E000H +WTAP1: LD A,(HL) + CALL WBYTE ; 1 BYTE WRITE + LD A,(KEYPB) ; E001H + AND 81H ; SHIFT & BREAK + JP NZ,WTAP2 + LD A,02H ; BREAK IN CODE + SCF + JR WTAP3 + +WTAP2: INC HL + DEC BC + LD A,B + OR C + JP NZ,WTAP1 + LD HL,(SUMDT) ; SUM DATA SET + LD A,H + CALL WBYTE ; Send Checksum + LD A,L + CALL WBYTE +WTAP3A: PUSH DE + LD DE,MSG_WGAPL2 + CALL MSGX + CALL LETNL + POP DE + CALL LONG + DEC D + JP NZ,L04C2 ; Another copy to be sent? + OR A + JP WTAP3 + +L04C2: PUSH DE + LD DE,MSG_SPCS + CALL MSGX + POP DE + LD B,0 ; Send 256 short pulses. + +L04C4: CALL SHORT + LD H,00h + LD L,B + CALL PRTHL ; Print HL as 4digit hex. + LD A,0C4h ; Move cursor left. + LD E,004h ; 4 times. +SPCS2: CALL DPCT + DEC E + JR NZ,SPCS2 + DEC B + JP NZ,L04C4 + LD H,00h + LD L,B + CALL PRTHL ; Print HL as 4digit hex. + LD BC,2500 ; .25 Second delay +SPCS3: CALL DLY1 + DEC BC + LD A,B + OR C + JR NZ,SPCS3 + CALL LETNL + POP HL ; Retrieve saved location and size + POP BC + PUSH BC + PUSH HL + JP WTAP1 ; Repeat send. + +WTAP3: +RET1: POP HL + POP BC + POP DE + RET + + DB 2FH + DB 4EH + + ; VERIFY (FROM $CMT) + ; EXIT ACC=0 : OK CF=0 + ; =1 : ER CF=1 + ; =2 : BREAK CF=1 + +QVRFY: DI + PUSH DE + PUSH BC + PUSH HL + LD BC,(SIZE) + LD HL,(DTADR) + LD D,0D2H ; "R" + LD E,53H ; "S" + LD A,B + OR C + JP Z,RTP4 ; END + CALL CKSUM + CALL MOTOR + JP C,RTP6 ; BRK + CALL TMARK ; TAPE MARK DETECT + JP C,RTP6 ; BRK + CALL TVRFY + JP RTP4 + + ; DATA VERIFY + ; BC=SIZE + ; HL=DATA LOW ADDRESS + ; CSMDT=CHECK SUM + ; EXIT ACC=0 : OK CF=0 + ; =1 : ER =1 + ; =2 : BREAK =1 + +TVRFY: PUSH DE + PUSH BC + PUSH HL + LD H,02H ; COMPARE TWICE +TVF1: LD BC,KEYPB + LD DE,CSTR +TVF2: CALL EDGE + JP C,RTP6 ; BRK + CALL DLY3 ; CALL DLY2*3 + LD A,(DE) + AND 20H + JP Z,TVF2 + LD D,H + POP HL + POP BC + PUSH BC + PUSH HL + ; COMPARE TAPE DATA AND STORAGE +TVF3: CALL RBYTE + JP C,RTP6 ; BRK + CP (HL) + JP NZ,RTP7 ; ERROR, NOT EQUAL + INC HL ; STORAGE ADDRESS + 1 + DEC BC ; SIZE - 1 + LD A,B + OR C + JR NZ,TVF3 + ; COMPARE CHECK SUM (1199H/CSMDT) AND TAPE + LD HL,(CSMDT) + CALL RBYTE + CP H + JP NZ,RTP7 ; ERROR, NOT EQUAL + CALL RBYTE + CP L + JP NZ,RTP7 ; ERROR, NOT EQUAL + DEC D ; NUMBER OF COMPARES (2) - 1 + JP Z,RTP8 ; OK, 2 COMPARES + LD H,D ; (-->05C7H), SAVE NUMBER OF COMPARES + JR TVF1 ; NEXT COMPARE + + ; 1 BYTE WRITE + +WBYTE: PUSH BC + LD B,8 + CALL LONG +WBY1: RLCA + CALL C,LONG + CALL NC,SHORT + DEC B + JP NZ,WBY1 + POP BC + RET + +ARARA: POP HL + JP ABCD + +DLY1S: PUSH AF + PUSH BC + LD C,10 +L0324: CALL DLY12 + DEC C + JR NZ,L0324 + POP BC + POP AF + RET + + ; Test the 8253 Timer, configure it as per the monitor and display the read back values. +TIMERTST: CALL NL + LD DE,MSG_TIMERTST + CALL MSG + CALL NL + LD DE,MSG_TIMERVAL + CALL MSG + LD A,01h + LD DE,8000h + CALL ?TMST +NDE: JP NDE + JP GETL1 +?TMST: DI + PUSH BC + PUSH DE + PUSH HL + LD (AMPM),A + LD A,0F0H + LD (TIMFG),A +ABCD: LD HL,0A8C0H + XOR A + SBC HL,DE + PUSH HL + INC HL + EX DE,HL + + LD HL,CONTF ; Control Register + LD (HL),0B0H ; 10110000 Control Counter 2 10, Write 2 bytes 11, 000 Interrupt on Terminal Count, 0 16 bit binary + LD (HL),074H ; 01110100 Control Counter 1 01, Write 2 bytes 11, 010 Rate Generator, 0 16 bit binary + LD (HL),030H ; 00110100 Control Counter 1 01, Write 2 bytes 11, 010 interrupt on Terminal Count, 0 16 bit binary + + LD HL,CONT2 ; Counter 2 + LD (HL),E + LD (HL),D + + LD HL,CONT1 ; Counter 1 + LD (HL),00AH + LD (HL),000H + + LD HL,CONT0 ; Counter 0 + LD (HL),00CH + LD (HL),0C0H + +; LD HL,CONT2 ; Counter 2 +; LD C,(HL) +; LD A,(HL) +; CP D +; JP NZ,L0323 +; LD A,C +; CP E +; JP Z,CDEF + ; + +L0323: PUSH AF + PUSH BC + PUSH DE + PUSH HL + ; + LD HL,CONTF ; Control Register + LD (HL),080H + LD HL,CONT2 ; Counter 2 + LD C,(HL) + LD A,(HL) + CALL PRTHX + LD A,C + CALL PRTHX + ; + CALL PRNTS + ;CALL DLY1S + ; + LD HL,CONTF ; Control Register + LD (HL),040H + LD HL,CONT1 ; Counter 1 + LD C,(HL) + LD A,(HL) + CALL PRTHX + LD A,C + CALL PRTHX + ; + CALL PRNTS + ;CALL DLY1S + ; + LD HL,CONTF ; Control Register + LD (HL),000H + LD HL,CONT0 ; Counter 0 + LD C,(HL) + LD A,(HL) + CALL PRTHX + LD A,C + CALL PRTHX + ; + ;CALL DLY1S + ; + LD A,0C4h ; Move cursor left. + LD E,0Eh ; 4 times. +L0330: CALL DPCT + DEC E + JR NZ,L0330 + ; +; LD C,20 +;L0324: CALL DLY12 +; DEC C +; JR NZ,L0324 + ; + POP HL + POP DE + POP BC + POP AF + ; + LD HL,CONT2 ; Counter 2 + LD C,(HL) + LD A,(HL) + CP D + JP NZ,L0323 + LD A,C + CP E + JP NZ,L0323 + ; + ; + PUSH AF + PUSH BC + PUSH DE + PUSH HL + CALL NL + CALL NL + CALL NL + LD DE,MSG_TIMERVAL2 + CALL MSG + POP HL + POP DE + POP BC + POP AF + + ; +CDEF: POP DE + LD HL,CONT1 + LD (HL),00CH + LD (HL),07BH + INC HL + +L0336: PUSH AF + PUSH BC + PUSH DE + PUSH HL + ; + LD HL,CONTF ; Control Register + LD (HL),080H + LD HL,CONT2 ; Counter 2 + LD C,(HL) + LD A,(HL) + CALL PRTHX + LD A,C + CALL PRTHX + ; + CALL PRNTS + CALL DLY1S + ; + LD HL,CONTF ; Control Register + LD (HL),040H + LD HL,CONT1 ; Counter 1 + LD C,(HL) + LD A,(HL) + CALL PRTHX + LD A,C + CALL PRTHX + ; + CALL PRNTS + CALL DLY1S + ; + LD HL,CONTF ; Control Register + LD (HL),000H + LD HL,CONT0 ; Counter 0 + LD C,(HL) + LD A,(HL) + CALL PRTHX + LD A,C + CALL PRTHX + ; + CALL DLY1S + ; + LD A,0C4h ; Move cursor left. + LD E,0Eh ; 4 times. +L0340: CALL DPCT + DEC E + JR NZ,L0340 + ; + POP HL + POP DE + POP BC + POP AF + + LD HL,CONT2 ; Counter 2 + LD C,(HL) + LD A,(HL) + CP D + JR NZ,L0336 + LD A,C + CP E + JR NZ,L0336 + CALL NL + LD DE,MSG_TIMERVAL3 + CALL MSG + POP HL + POP DE + POP BC + EI + RET + +?TMRD: PUSH HL + LD HL,CONTF + LD (HL),080H + DEC HL + DI + LD E,(HL) + LD D,(HL) + EI + LD A,E + OR D + JR Z,?TMR1 + XOR A + LD HL,0A8C0H + SBC HL,DE + JR C,?TMR2 + EX DE,HL + LD A,(AMPM) + POP HL + RET + +?TMR1: LD DE,0A8C0H +?TMR1A: LD A,(AMPM) + XOR 001H + POP HL + RET + +?TMR2: DI + LD HL,CONT2 + LD A,(HL) + CPL + LD E,A + LD A,(HL) + CPL + LD D,A + EI + INC DE + JR ?TMR1A + +TIMIN: PUSH AF + PUSH BC + PUSH DE + PUSH HL + LD HL,AMPM + LD A,(HL) + XOR 001H + LD (HL),A + LD HL,CONTF + LD (HL),080H + DEC HL + PUSH HL + LD E,(HL) + LD D,(HL) + LD HL,0A8C0H + ADD HL,DE + DEC HL + DEC HL + EX DE,HL + POP HL + LD (HL),E + LD (HL),D + POP HL + POP DE + POP BC + POP AF + EI + RET + + ; Help/Synoposis of commands available. + ; +HELP: CALL LETNL + LD DE,MSG_HELP1 + CALL MSG + CALL LETNL + LD DE,MSG_HELP2 + CALL MSG + CALL LETNL + LD DE,MSG_HELP3 + CALL MSG + CALL LETNL + LD DE,MSG_HELP4 + CALL MSG + CALL LETNL + LD DE,MSG_HELP5 + CALL MSG + CALL LETNL + LD DE,MSG_HELP6 + CALL MSG + CALL LETNL + CALL LETNL + JP GETL1 + +MSG_HELP1: DB "COMMANDS: G TEST GRAPHICS", 0Dh, 00h +MSG_HELP2: DB " M TEST MEMORY", 0Dh, 00h +MSG_HELP3: DB " R LOAD TAPE", 0Dh, 00h +MSG_HELP4: DB " T TIMER TEST", 0Dh, 00h +MSG_HELP5: DB " W WRITE TEST TAPE", 0Dh, 00h +MSG_HELP6: DB " Q QUIT TO MONITOR", 0Dh, 00h + +TITLE: DB "SHARPMZ TESTER (C) P.SMART 2018", 0Dh, 00h +MSG_INITGR:DB "INIT GRAPHICS", 0Dh +MSG_INITM: DB "INIT MEMORY", 0Dh +TITLE_SAVE:DB "WRITE TEST TAPE", 0Dh + +MSG1: DW 207Fh +MSG2: DB "PLAY", 0Dh, 00h +MSG3: DW 207Fh ; PRESS RECORD + DB "RECORD.", 0Dh, 00h +MSGN7: DB "WRITING ", 0Dh, 00h +MSGOK: DB "OK", 0Dh, 00h +MSG_ERRCHKSUM: + DB "CHECKSUM ERROR", 0Dh +MSG_ERRWRITE: + DB "WRITE ERROR", 0Dh + +MSG_READTAPE: + DB "READ TAPE", 0Dh, 00h +MSG_TAPEMARK: + DB "TAPEMARK", 0Dh, 00h +MSG_MOTORTG: + DB "MOTOR TOGGLE", 0Dh, 00h +MSG_MOTORSTP: + DB "MOTOR STOP", 0Dh, 00h +MSG_TPMARK: + DB "TAPE MARK START", 0Dh, 00h +MSG_GAPCK: + DB "GAP CHECK", 0Dh, 00h +MSG_LOADFILE: + DB "LOAD FILE = ",0Dh, 00h +MSG_LOADFROM: + DB "LOAD ADDRESS = ", 0Dh, 00h +MSG_LOADEXEC: + DB "EXEC ADDRESS = ", 0Dh, 00h +MSG_LOADSIZE: + DB "LOAD SIZE = ", 0Dh, 00h +MSG_SAVEFILE: + DB "SAVE FILE = ",0Dh, 00h +MSG_SAVEFROM: + DB "SAVE ADDRESS = ", 0Dh, 00h +MSG_SAVEEXEC: + DB "SAVE EXEC ADDRESS = ", 0Dh, 00h +MSG_SAVESIZE: + DB "SAVE SIZE = ", 0Dh, 00h +MSG_CHKSUM_MZ1: + DB " MZ CHECKSUM (OK) = ", 0Dh, 00h +MSG_CHKSUM_TP1: + DB "TAPE CHECKSUM (OK) = ", 0Dh, 00h +MSG_CHKSUM_MZ2: + DB " MZ CHECKSUM (ER) = ", 0Dh, 00h +MSG_CHKSUM_TP2: + DB "TAPE CHECKSUM (ER) = ", 0Dh, 00h +MSG_WHDR: DB "WRITE HEADER...", 0Dh +MSG_WDATA: DB "WRITE DATA...", 0Dh +MSGGAP: DB "GAP WRITTEN", 0Dh, 00h +MSG_WGAPS: DB "WRITE GAP: ", 0Dh, 00h +MSG_WGAPS2:DB "WRITE TM SHORT: ", 0Dh, 00h +MSG_WGAPL: DB "WRITE TM LONG: ", 0Dh, 00h +MSG_WGAPL2:DB "WRITE 1 LONG BIT", 0Dh, 00h +MSG_SPCS: DB "WRITE 256 SHORT: ", 0Dh, 00h +MSG_SPC: DB ", WAIT.", 0Dh, 00h +MSGTAPE DB "HEADER WRITTEN", 0Dh, 00h +MSG_TIMERTST: + DB "8253 TIMER TEST", 0Dh, 00h +MSG_TIMERVAL: + DB "READ VALUE 1: ", 0Dh, 00h +MSG_TIMERVAL2: + DB "READ VALUE 2: ", 0Dh, 00h +MSG_TIMERVAL3: + DB "READ DONE.", 0Dh, 00h + +OKCHECK: DB ", CHECK: ", 0Dh +OKMSG: DB " OK.", 0Dh +DONEMSG: DB 11h + DB "RAM TEST COMPLETE.", 0Dh + +BITMSG: DB " BIT: ", 0Dh +BANKMSG: DB " BANK: ", 0Dh + +GRPHPOS: DB 00h, 00h + + ; Test tape image to save. +TESTBUF: ; TAPE BUFFER (128 BYTES) +TATRB: DB 02h ; Code Type, 01 = Machine Code. +TNAME: DB "TEST TAPE SAVE", 0Dh, 00h, 00h ; Title/Name (17 bytes). +TSIZE: DW TESTEND - TESTSTART ; Size of program. +TDTADR: DW TESTSTART ; Load address of program. +TEXADR: DW TESTSTART ; Exec address of program. +TCOMNT: DB "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz" + +TESTSTART: DB 01h + DB 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 + DB 16,17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31 + DB 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47 + DB 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63 + DB 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79 + DB 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95 + DB 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111 + DB 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127 + DB 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143 + DB 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159 + DB 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175 + DB 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191 + DB 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207 + DB 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223 + DB 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239 + DB 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255 +TESTEND: + +MEND: diff --git a/build.sh b/build.sh new file mode 100755 index 0000000..9780413 --- /dev/null +++ b/build.sh @@ -0,0 +1,56 @@ +#!/bin/bash + +ROOT_DIR=`pwd` +SW_DIR=${ROOT_DIR}/ +PROCESS_MZF_FILES=0 +if [ "x$1" = '-m' ]; then + PROCESS_MZF_FILES=1 +fi + + +( +cd $SW_DIR +tools/assemble_rfs.sh +if [ $? != 0 ]; then + echo "RFS assembly failed..." + exit 1 +fi +tools/assemble_cpm.sh +if [ $? != 0 ]; then + echo "CPM assembly failed..." + exit 1 +fi +tools/assemble_roms.sh +if [ $? != 0 ]; then + echo "ROMS assembly failed..." + exit 1 +fi + +# Only needed if the program source tree changes, takes too long to run on every build! +if [[ ${PROCESS_MFZ_FILES} -eq 1 ]]; then + tools/processMZFfiles.sh + if [ $? != 0 ]; then + echo "Failed to process MZF files into sectored variants...." + exit 1 + fi +fi +tools/make_roms.sh +if [ $? != 0 ]; then + echo "ROM disk assembly failed..." + exit 1 +fi +tools/make_cpmdisks.sh +if [ $? != 0 ]; then + echo "CPM disks assembly failed..." + exit 1 +fi +tools/make_sdcard.sh +if [ $? != 0 ]; then + echo "SD card assembly failed..." + exit 1 +fi +) +if [ $? != 0 ]; then + exit 1 +fi +echo "Done!" diff --git a/config/diskdefs b/config/diskdefs new file mode 100644 index 0000000..3af24bb --- /dev/null +++ b/config/diskdefs @@ -0,0 +1,1623 @@ +# 320K Disk for the MZ80A - Same format as the MZ800 +# but implements a cylinder in uniform manner (ie. 1 cyl +# = 1 track x 2(heads) where as the MZ800 implements as +# 160 tracks, 80 x Head 1 0->79 then 80 x Head 2 80->159. +diskdef MZ80A-A + seclen 256 + tracks 40 + sectrk 32 + blocksize 2048 + maxdir 64 + skew 0 + boottrk 1 + os 2.2 +end + +# A standard format 1.44Mb Floppy format for the MZ80A +diskdef MZ80A-1440 + seclen 512 + tracks 80 + sectrk 36 + blocksize 2048 + maxdir 128 + skew 0 + boottrk 0 + os 2.2 +end + +# A standard format 720K Floppy format for the MZ80A. +diskdef MZ80A-720 + seclen 256 + tracks 80 + sectrk 36 + blocksize 2048 + maxdir 128 + skew 0 + boottrk 0 + os 2.2 +end + +# A 240K Rom Filing System ROM Drive image. +diskdef MZ80A-RFS + seclen 128 + tracks 15 + sectrk 128 + blocksize 1024 + maxdir 32 + skew 0 + boottrk 0 + os 2.2 +end + +# A 320K Rom Filing System ROM Drive image. +diskdef MZ80A-RFS-320 + seclen 128 + tracks 20 + sectrk 128 + blocksize 2048 + maxdir 32 + skew 0 + boottrk 0 + os 2.2 +end + +# A 16Mb fixed disk SD Card Image. +diskdef MZ80A-SDC16M + seclen 512 + tracks 1024 + sectrk 32 + blocksize 8192 + maxdir 512 + skew 0 + boottrk 0 + os 2.2 +end + +# Definition for the MZ800 CP/M Boot Disk. The reserved +# track is in inverted data format but this is skipped in +# CPM Tools. +diskdef MZ800-BOOT + seclen 256 + tracks 80 + sectrk 16 + blocksize 2048 + maxdir 64 + skew 0 + boottrk 1 + os 2.2 +end + +# Definition for the MZ800 CP/M Data disk. No reserved tracks. +diskdef MZ800-DATA + seclen 256 + tracks 80 + sectrk 16 + blocksize 2048 + maxdir 64 + skew 0ones, 1 + boottrk 0 + os 2.2 +end + +diskdef hd0 + seclen 512 + tracks 512 + sectrk 32 + blocksize 4096 + maxdir 512 + skew 1 + boottrk 1 + os 2.2 +end + +diskdef multcomphd0 + seclen 512 + tracks 512 + sectrk 32 + blocksize 4096 + maxdir 512 + skew 1 + boottrk 1 + os 2.2 +end + +diskdef multcomphd1 + seclen 512 + tracks 1024 + sectrk 32 + blocksize 4096 + maxdir 512 + skew 1 + boottrk 512 + os 2.2 +end + +diskdef multcomphd2 + seclen 512 + tracks 1536 + sectrk 32 + blocksize 4096 + maxdir 512 + skew 1 + boottrk 1024 + os 2.2 +end + +diskdef multcomphd3 + seclen 512 + tracks 2048 + sectrk 32 + blocksize 4096 + maxdir 512 + skew 1 + boottrk 1536 + os 2.2 +end + +diskdef multcomphd4 + seclen 512 + tracks 2560 + sectrk 32 + blocksize 4096 + maxdir 512 + skew 1 + boottrk 2048 + os 2.2 +end + +# Z20-MBC DISK 0 (TWO RESERVED TRACK FOR CP/M) +diskdef z80mbc-d0 + seclen 128 + tracks 32 + sectrk 32 + blocksize 1024 + maxdir 64 + skew 0 + boottrk 2 + os 2.2 +end + +# Z20-MBC DISK 1 +diskdef z80mbc-d1 + seclen 128 + tracks 32 + sectrk 32 + blocksize 1024 + maxdir 64 + skew 0 + boottrk 0 + os 2.2 +end + +# Z20-MBC2 CP/M 2.2 DISK 0 ONLY (ONE RESERVED TRACK FOR CP/M 2.2) +diskdef z80mbc2-d0 + seclen 512 + tracks 512 + sectrk 32 + blocksize 4096 + maxdir 512 + skew 0 + boottrk 1 + os 2.2 +end + +# Z20-MBC2 CP/M 2.2 DISK 1-15 +diskdef z80mbc2-d1 + seclen 512 + tracks 512 + sectrk 32 + blocksize 4096 + maxdir 512 + skew 0 + boottrk 0 + os 2.2 +end + +# Z20-MBC2 CP/M 3 (DISK 0-15) +diskdef z80mbc2-cpm3 + seclen 512 + tracks 512 + sectrk 32 + blocksize 4096 + maxdir 512 + skew 0 + boottrk 1 + os 3 +end + +diskdef ibm-3740 + seclen 128 + tracks 77 + sectrk 26 + blocksize 1024 + maxdir 64 + skew 6 + boottrk 2 + os 2.2 +end + +diskdef 4mb-hd + seclen 128 + tracks 1024 + sectrk 32 + blocksize 2048 + maxdir 256 + skew 1 + boottrk 0 + os p2dos +end + +diskdef pcw + seclen 512 + tracks 40 + sectrk 9 + blocksize 1024 + maxdir 64 + skew 1 + boottrk 1 + os 3 + libdsk:format pcw180 +end + +diskdef pc1.2m + seclen 512 + tracks 80 + # this format uses 15 sectors per track, but 30 per cylinder + sectrk 30 + blocksize 4096 + maxdir 256 + skew 1 + boottrk 0 + os 3 +end + +# CP/M 86 on 1.44MB floppies +diskdef cpm86-144feat + seclen 512 + tracks 160 + sectrk 18 + blocksize 4096 + maxdir 256 + skew 1 + boottrk 2 + os 3 + libdsk:format ibm1440 +end + +# CP/M 86 on 720KB floppies +diskdef cpm86-720 + seclen 512 + tracks 160 + sectrk 9 + blocksize 2048 + maxdir 256 + skew 1 + boottrk 2 + os 3 +end + +diskdef cf2dd + seclen 512 + tracks 160 + sectrk 9 + blocksize 2048 + maxdir 256 + skew 1 + boottrk 1 + os 3 + libdsk:format pcw720 +end + +#amstrad: values are read from super block (special name hardcoded) + +# Royal alphatronic +# setfdprm /dev/fd1 dd ssize=256 cyl=40 sect=16 head=2 +diskdef alpha + seclen 256 + tracks 40 + sectrk 32 + blocksize 2048 + maxdir 128 + skew 1 + boottrk 2 + os 2.2 +end + +# Apple II CP/M skew o Apple II DOS 3.3 skew +diskdef apple-do + seclen 256 + tracks 35 + sectrk 16 + blocksize 1024 + maxdir 64 + skewtab 0,6,12,3,9,15,14,5,11,2,8,7,13,4,10,1 + boottrk 3 + os 2.2 +end + +# Apple II CP/M skew o Apple II PRODOS skew +diskdef apple-po + seclen 256 + tracks 35 + sectrk 16 + blocksize 1024 + maxdir 64 + skewtab 0,9,3,12,6,15,1,10,4,13,7,8,2,11,5,14 + boottrk 3 + os 2.2 +end + +# MYZ80 hard drive (only works with libdsk, because it has a 256-byte header) +diskdef myz80 + seclen 1024 + tracks 64 + sectrk 128 + blocksize 4096 + maxdir 1024 + skew 1 + boottrk 0 + os 3 + libdsk:format pcw720 +end + +# Despite being Amstrad formats, CPC System and CPC Data don't have an Amstrad +# superblock. You'll need to use libdsk to access them because the Linux +# and Windows kernel drivers won't touch them. +diskdef cpcsys + seclen 512 + tracks 40 + sectrk 9 + blocksize 1024 + maxdir 64 + skew 1 + boottrk 2 + os 3 + libdsk:format cpcsys +end +diskdef cpcdata + seclen 512 + tracks 40 + sectrk 9 + blocksize 1024 + maxdir 64 + skew 1 + boottrk 0 + os 3 + libdsk:format cpcdata +end + +# after being read in with no sector skew. +diskdef nigdos + seclen 512 + # NigDos double sided disk format, 42 tracks * 2 sides + tracks 84 + sectrk 10 + blocksize 2048 + maxdir 128 + skew 1 + boottrk 0 + # this format wastes half of the directory entry + logicalextents 1 + os 3 +end + +diskdef epsqx10 + seclen 512 + tracks 40 + sectrk 20 + blocksize 2048 + maxdir 128 + skew 0 + boottrk 2 + os 2.2 +end + +diskdef ibm-8ss + seclen 512 + tracks 40 + sectrk 8 + blocksize 1024 + maxdir 64 + skew 0 + boottrk 1 + os 2.2 +end + +diskdef ibm-8ds + seclen 512 + tracks 40 + sectrk 8 + blocksize 1024 + maxdir 64 + skew 0 + boottrk 1 + os 2.2 +end + +diskdef electroglas + seclen 512 + tracks 80 + sectrk 10 + blocksize 2048 + maxdir 256 + skew 0 + boottrk 1 + os 3 +end + +# IBM CP/M-86 +# setfdprm /dev/fd1 sect=8 dtr=1 hd ssize=512 tpi=48 head=1 +diskdef ibmpc-514ss + seclen 512 + tracks 40 + sectrk 8 + blocksize 1024 + maxdir 64 + skew 1 + boottrk 1 + os 2.2 + libdsk:format ibm160 +end + +# IBM CP/M-86 +# setfdprm /dev/fd1 sect=8 dtr=1 hd ssize=512 tpi=48 +diskdef ibmpc-514ds + seclen 512 + tracks 80 + sectrk 8 + blocksize 2048 + maxdir 64 + skew 0 + boottrk 2 + os 2.2 + libdsk:format ibm320 +end + +diskdef p112 + seclen 512 + tracks 160 + sectrk 18 + blocksize 2048 + maxdir 256 + skew 1 + boottrk 2 + os 3 +end + +diskdef p112-old + seclen 512 + tracks 160 + sectrk 18 + blocksize 2048 + maxdir 128 + skew 1 + boottrk 1 + os 3 +end + +diskdef gide-cfa + seclen 512 + tracks 1000 + sectrk 16 + blocksize 4096 + maxdir 1024 + skew 0 + boottrk 2 + os 3 +end + +diskdef gide-cfb + seclen 512 + tracks 1000 + sectrk 16 + blocksize 4096 + maxdir 1024 + skew 0 + boottrk 0 +# Start of second partition + offset 1000trk + os 3 +end + +# AT&T/Olivetti Word Processor +diskdef attwp + seclen 256 + tracks 80 + sectrk 32 + blocksize 2048 + maxdir 128 + boottrk 1 + logicalextents 1 + skewtab 0,2,4,6,8,10,12,14,1,3,5,7,9,11,13,15,16,18,20,22,24,26,28,30,17,19,21,23,25,27,29,31 + os 2.2 +end + +# setfdprm /dev/fd0 zerobased SS DD ssize=512 cyl=40 sect=10 head=1 +# Kaypro II +diskdef kpii + seclen 512 + tracks 40 + sectrk 10 + blocksize 1024 + maxdir 64 + skew 0 + boottrk 1 + os 2.2 +end + +# setfdprm /dev/fd0 zerobased DS DD ssize=512 cyl=40 sect=10 head=2 +# Kayro IV +diskdef kpiv + seclen 512 + tracks 80 + sectrk 10 + blocksize 2048 + maxdir 64 + skew 0 + boottrk 1 + os 2.2 +end + +# setfdprm /dev/fd0 dd sect=10 +diskdef interak + seclen 512 + tracks 80 + sectrk 20 + blocksize 4096 + maxdir 256 + skew 1 + boottrk 2 + os 2.2 +end + +# Timex FDD3000 3" +diskdef fdd3000 + seclen 256 + tracks 40 + sectrk 16 + blocksize 1024 + maxdir 128 + boottrk 4 + os 2.2 + skew 7 +end + +# Timex FDD3000 3" +diskdef fdd3000_2 + seclen 256 + tracks 40 + sectrk 16 + blocksize 1024 + maxdir 128 + boottrk 2 + os 2.2 + skew 5 +end + +# Robotron 1715 +diskdef 1715 + seclen 1024 + tracks 40 + sectrk 5 + blocksize 1024 + maxdir 64 + skew 0 + boottrk 3 + os 2.2 +end + +# Robotron 1715 with SCP3 +diskdef 17153 + seclen 1024 + tracks 160 + sectrk 5 + blocksize 2048 + maxdir 128 + skew 0 + boottrk 4 + os 3 +end + +#DDR +diskdef scp624 + seclen 256 + tracks 160 + sectrk 16 + blocksize 2048 + maxdir 128 + skew 0 + boottrk 2 + os 2.2 +end + +diskdef scp640 + seclen 256 + tracks 160 + sectrk 16 + blocksize 2048 + maxdir 128 + skew 0 + boottrk 0 + os 2.2 +end + +diskdef scp780 + seclen 1024 + tracks 160 + sectrk 5 + blocksize 2048 + maxdir 128 + skew 0 + boottrk 2 + os 2.2 +end + +diskdef scp800 + seclen 1024 + tracks 160 + sectrk 5 + blocksize 2048 + maxdir 128 + skew 0 + boottrk 0 + os 2.2 +end + +diskdef z9001 + seclen 1024 + tracks 160 + sectrk 5 + blocksize 2048 + maxdir 192 + skew 0 + boottrk 0 + os 2.2 +end + +# Visual Technology Visual 1050 computer +diskdef v1050 + seclen 512 + tracks 80 + sectrk 10 + blocksize 2048 + maxdir 128 + skew 0 + boottrk 2 + os 3 +end + +# Microbee 40 track 5.25" disks +diskdef microbee40 + seclen 512 + tracks 80 + sectrk 10 + blocksize 2048 + maxdir 128 + skewtab 1,4,7,0,3,6,9,2,5,8 + boottrk 2 + os 2.2 +end + +diskdef dreamdisk40 + seclen 512 + tracks 80 + sectrk 10 + blocksize 2048 + maxdir 128 + skewtab 1,4,7,0,3,6,9,2,5,8 + boottrk 2 + os 2.2 +end + +diskdef dreamdisk80 + seclen 512 + tracks 160 + sectrk 10 + blocksize 2048 + maxdir 256 + skewtab 1,4,7,0,3,6,9,2,5,8 + boottrk 2 + os 2.2 +end + +diskdef rc759 + seclen 1024 + tracks 154 + sectrk 8 + blocksize 2048 + maxdir 512 + boottrk 4 + os 3 +end + +# ICL Comet: 40 track 5.25" Single Sided +# +diskdef icl-comet-525ss + seclen 512 + tracks 40 + sectrk 10 + blocksize 1024 + maxdir 64 + skewtab 0,3,6,9,2,5,8,1,4,7 + boottrk 2 + os 2.2 +end + +diskdef z80pack-hd + seclen 128 + tracks 255 + sectrk 128 + blocksize 2048 + maxdir 1024 + skew 0 + boottrk 0 + os 2.2 +end + +diskdef z80pack-hdb + seclen 128 + tracks 256 + sectrk 16384 + blocksize 16384 + maxdir 8192 + skew 0 + boottrk 0 + os 2.2 +end + +# Bondwell 12 and 14 disk images in IMD raw binary format +diskdef bw12 + seclen 256 + tracks 40 + sectrk 18 + blocksize 2048 + maxdir 64 + skew 1 + boottrk 2 + os 2.2 +end + +diskdef bw14 + seclen 256 + tracks 80 + sectrk 18 + blocksize 2048 + maxdir 64 + skew 1 + boottrk 2 + os 2.2 +end + +############################ +# north star cp/m disks +############################ + +#North Star floppy 360K + +diskdef nsfd + seclen 512 + tracks 70 + sectrk 10 + blocksize 2048 + maxdir 64 + skew 5 + boottrk 2 + os 2.2 +end + + +#North Star CP/M Virtual-Disk file on Hard Disk +# prepared with allocation factor = 4 +# as in "CR CPMB 4000 4" +# needs to be copied off hard drive before you can +# work on it with cpmtools + +diskdef nshd4 + seclen 512 + tracks 512 + sectrk 16 + blocksize 4096 + maxdir 256 + skew 0 + boottrk 0 + os 2.2 +end + + +#North Star CP/M Virtual-Disk file on Hard Disk +# prepared with allocation factor = 8 +# as in "CR CPMB 6000 8" +# needs to be copied off hard drive before you can +# work on it with cpmtools + +diskdef nshd8 + seclen 512 + tracks 1024 + sectrk 16 + blocksize 8192 + maxdir 256 + skew 0 + boottrk 0 + os 2.2 +end + +# Northstar Micro-Disk System MDS-A-D 175 +diskdef mdsad175 + seclen 512 + blocksize 1024 + tracks 35 + maxdir 64 + boottrk 2 + sectrk 10 + skew 5 + os 2.2 +end + + +# Northstar Micro-Disk System MDS-A-D 350 +diskdef mdsad350 + seclen 512 + blocksize 2048 + tracks 70 + maxdir 64 + boottrk 2 + sectrk 10 + skew 5 + os 2.2 +end + + +# Osborne 1 +diskdef osborne1 + seclen 1024 + tracks 40 + sectrk 5 + blocksize 1024 + maxdir 64 + boottrk 3 + os 2.2 +end + +# Osborne Nuevo/Vixen/4 +diskdef osborne4 + seclen 1024 + tracks 80 + sectrk 5 + blocksize 2048 + maxdir 128 + skew 2 + boottrk 2 + os 2.2 +end + +# Lobo Max-80 8" CP/M 2 +diskdef lobo2 + seclen 256 + tracks 77 + sectrk 30 + blocksize 2048 + maxdir 64 + skew 0 + boottrk 2 + os 2.2 +end + +#Lobo Max-80 8" CP/M 3 +diskdef lobo3 + seclen 512 + tracks 77 + sectrk 17 + blocksize 2048 + maxdir 64 + skew 0 + boottrk 2 + os 3 +end + +# PRO CP/M RZ50 DZ format (Perhaps only 79 tracks should be used?) +diskdef dec_pro + seclen 512 + tracks 80 + sectrk 10 + blocksize 2048 + maxdir 128 + skew 2 + boottrk 2 + os 2.2 +end + +# TDOS with DateStamper +diskdef tdos-ds + seclen 1024 + tracks 77 + sectrk 16 + blocksize 2048 + maxdir 256 + skew 0 + boottrk 1 + os zsys +end + +# The following entires are tested and working +# Most of the images are either from Don Maslin's archive or from +# Dave Dunfield's site, but not all - they are noted as well as +# their size. + +# PMC Micromate +# Dave Dunfield's Imagedisk information from DSK conversion from IMD: +# IMageDisk Utility 1.18 / Mar 07 2012 +# IMD 1.14: 10/03/2007 11:13:27 +# PMC-101 MicroMate +# CP/M Plus +# System Master +# Assuming 1:1 for Binary output +# 0/0 250 kbps DD 5x1024 +# 80 tracks(40/40), 400 sectors (12 Compressed) +# Entry derived from above - image size = 409,600, from Dave Dunfield +diskdef pmc101 + seclen 1024 + tracks 80 + sectrk 5 + blocksize 2048 + maxdir 128 + skew 0 + boottrk 2 + os 3 +end + +# BEGIN td143ssdd8 Turbo Dos 1.43 - SSDD 8" - 512 x 16 +# Test OK - image size = 630,784, from Don Maslin's archive +diskdef td143ssdd8 + seclen 512 + tracks 77 + sectrk 9 + blocksize 1024 + maxdir 64 + skew 0 + boottrk 0 + os 2.2 +# DENSITY MFM ,LOW +end + +# BEGIN headsdd8 Heath H89, Magnolia CP/M - SSDD 8" - 512 x 16 +# Test OK - image size = 630,784, from Don Maslin's archive +diskdef heassdd8 + seclen 512 + tracks 77 + sectrk 16 + blocksize 2048 + maxdir 128 + skew 0 + boottrk 2 + os 2.2 +# DENSITY MFM ,LOW +end + +# Morrow Designs Micro-Decision DOUBLE +# 64k CP/M Vers. 2.2 Rev.2.3 SIDED +# Copyright '76, '77, '78, '79, '80 +# Digital Research +# Copyright 1982,1983 Morrow Designs, Inc. +# Assuming 1:1 for Binary output +# 0/0 250 kbps DD 5x1024 +# 80 tracks(40/40), 400 sectors (128 Compressed) +# Entry derived from above data +# Test OK - image siae = 409600, from Dave Dunfield +diskdef mordsdd + seclen 1024 + tracks 80 + sectrk 5 + blocksize 2048 + maxdir 128 + skew 3 + boottrk 2 + OS 2.2 +end + + +# BEGIN morsddd Morrow MD2 - SSDD 48 tpi 5.25" - 1024 x 5 +# Test OK - image size = 204,800, from Don Maslin's archive +# Also tested with image from Dave Dunfield +diskdef morsddd + seclen 1024 + tracks 40 + sectrk 5 + blocksize 2048 + maxdir 128 + skew 3 + boottrk 2 + os 2.2 +# DENSITY MFM ,LOW +# BSH 4 BLM 15 EXM 1 DSM 94 DRM 127 AL0 0C0H AL1 0 OFS 2 +end + +# BEGIN osb1sssd Osborne 1 - SSSD 48 tpi 5.25" - 256 x 10 +# Test OK - image size = 102,400, from Don Maslin's archive +diskdef osb1sssd + seclen 256 + tracks 40 + sectrk 10 + blocksize 2048 + maxdir 64 + skew 2 + boottrk 3 + os 2.2 +# DENSITY MFM ,LOW +# BSH 4 BLM 15 EXM 1 DSM 45 DRM 63 AL0 080H AL1 0 OFS 3 +end + +# BEGIN ampdsdd Ampro - DSDD 48 tpi 5.25" - 512 x 10 +# Test OK - image size = 409,600, from Don Maslin's archive +diskdef ampdsdd + seclen 1024 + tracks 80 + sectrk 5 + blocksize 2048 + maxdir 128 + skew 0 + boottrk 2 + os 2.2 + libdsk:format ampro400d +# DENSITY MFM ,LOW +# BSH 4 BLM 15 EXM 1 DSM 194 DRM 127 AL0 0C0H AL1 0 OFS 2 +end + +# BEGIN ampdsdd80 Ampro - DSDD 96 tpi 5.25" - 512 x 10 +# Test OK - image size = 819,200, from Don Maslin's archive +diskdef ampdsdd80 + seclen 1024 + tracks 160 + sectrk 5 + blocksize 2048 + maxdir 128 + skew 0 + boottrk 2 + os 2.2 + libdsk:format ampro800 +# DENSITY MFM ,LOW +# BSH 4 BLM 15 EXM 1 DSM 194 DRM 127 AL0 0C0H AL1 0 OFS 2 +end + +# BEGIN altdsdd Altos - DSDD 5" - 512 x 9 +# Test OK - both CP/M and MP/M - image size = 737,280, from Dave Dunfield +diskdef altdsdd + seclen 512 + tracks 160 + sectrk 9 + blocksize 4096 + maxdir 177 + skew 0 + boottrk 2 + os 3 +# DENSITY MFM ,HIGH +# BSH 5 BLM 31 EXM 3 DSM 176 DRM 176 AL0 0C0H AL1 0 OFS 2 +end + +# BEGIN trsomsssd TRS-80 Model 1, Omikron CP/M - SSSD 48 tpi 5.25" - 128 x 18 +# Test OK - image size = 80,640, from TRS-80 Yahoo Group posting +diskdef trsomsssd + seclen 128 + tracks 35 + sectrk 18 + blocksize 1024 + maxdir 64 + skew 4 + boottrk 3 + os 2.2 +# DENSITY FM ,LOW +# BSH 3 BLM 7 EXM 0 DSM 71 DRM 63 AL0 0C0H AL1 0 OFS 3 +end + +# Memotech type 03, ie: 3.5" or 5.25", D/S, D/D, S/T +# 40 tracks, 2 sides, 16 sectors/track, 256 bytes/sector +# Bytes on the media = 2*40*16*256 = 327680 +# CP/M sees 26 128 byte records per track (similar to 8" disks). +# Tracks = 327680/(26*128) = 98 +# Data is in 2048 byte blocks, on track 2 onwards +# Blocks = ((98-2)*26*128)/2048 = 156, which agrees with DPB + +diskdef memotech-type03 + seclen 128 + tracks 98 + sectrk 26 + blocksize 2048 + maxdir 64 + skew 1 + boottrk 2 + os 2.2 +end + +# Memotech type 07, ie: 3.5" or 5.25", D/S, D/D, D/T +# 80 tracks, 2 sides, 16 sectors/track, 256 bytes/sector +# Bytes on the media = 2*80*16*256 = 655360 +# CP/M sees 26 128 byte records per track (similar to 8" disks). +# Tracks = 655360/(26*128) = 196 +# Data is in 2048 byte blocks, on track 2 onwards +# Blocks = ((196-2)*26*128)/2048 = 315, which agrees with DPB + +diskdef memotech-type07 + seclen 128 + tracks 196 + sectrk 26 + blocksize 2048 + maxdir 128 + skew 1 + boottrk 2 + os 2.2 +end + +# Memotech type 43, ie: 1MB Silicon Disc +# CP/M sees 26 128 byte records per track +# Note: Unlike common practice with real physical disks, with real geometry, +# the DPB for Silicon Discs includes blocks on the last incomplete track +# Tracks = 1048576/(26*128) = 315.07 +# Data is in 4096 byte blocks, on track 2 onwards +# Blocks = (1048576-2*26*128)/4096 = 254, which agrees with DPB +# Blocks = ((315-2)*26*128)/4096 = 254, so we don't need the 0.07 track +diskdef memotech-type43 + seclen 128 + tracks 315 + sectrk 26 + blocksize 4096 + maxdir 256 + skew 1 + boottrk 2 + os 2.2 +end + +# Memotech type 47, ie: 2MB Silicon Disc +# CP/M sees 26 128 byte records per track +# Note: Unlike common practice with real physical disks, with real geometry, +# the DPB for Silicon Discs includes blocks on the last incomplete track +# Tracks = 2097152/(26*128) = 630.15 +# Data is in 4096 byte blocks, on track 2 onwards +# Blocks = (2097152-2*26*128)/4096 = 510, which agrees with DPB +# Blocks = ((630-2)*26*128)/4096 = 510, so we don't need the 0.15 track +diskdef memotech-type47 + seclen 128 + tracks 630 + sectrk 26 + blocksize 4096 + maxdir 256 + skew 1 + boottrk 2 + os 2.2 +end + +# Memotech type 4B, ie: 4MB Silicon Disc +# CP/M sees 26 128 byte records per track +# Note: Unlike common practice with real physical disks, with real geometry, +# the DPB for Silicon Discs includes blocks on the last incomplete track +# Tracks = 4194304/(26*128) = 1260.3 +# Data is in 4096 byte blocks, on track 2 onwards +# Blocks = (4194304-2*26*128)/4096 = 1022, which agrees with DPB +# Blocks = ((1260-2)*26*128)/4096 = 1022, so we don't need the 0.3 track +diskdef memotech-type4B + seclen 128 + tracks 1260 + sectrk 26 + blocksize 4096 + maxdir 512 + skew 1 + boottrk 2 + os 2.2 +end + +# Memotech type 4F, ie: 8MB Silicon Disc +# CP/M sees 26 128 byte records per track +# Note: Unlike common practice with real physical disks, with real geometry, +# the DPB for Silicon Discs includes blocks on the last incomplete track +# Tracks = 8388608/(26*128) = 2520.61 +# Data is in 4096 byte blocks, on track 2 onwards +# Blocks = (8388608-2*26*128)/4096 = 2046, which agrees with DPB +# Blocks = ((2520-2)*26*128)/4096 = 2045, so we need the extra 0.61 track +diskdef memotech-type4F + seclen 128 + tracks 2521 + sectrk 26 + blocksize 4096 + maxdir 512 + skew 1 + boottrk 2 + os 2.2 +end + +# Memotech type 18, ie: 8MB SD Card +# CP/M sees 26 128 byte records per track +# Note: Unlike common practice with real physical disks, with real geometry, +# the DPB for SD Cards includes blocks on the last incomplete track +# Tracks = 8388608/(26*128) = 2520.61 +# Data is in 4096 byte blocks, on track 2 onwards +# Blocks = (8388608-2*26*128)/4096 = 2046, which agrees with DPB +# Blocks = ((2520-2)*26*128)/4096 = 2045, so we need the extra 0.61 track +diskdef memotech-type18 + seclen 128 + tracks 2521 + sectrk 26 + blocksize 4096 + maxdir 512 + skew 1 + boottrk 2 + os 2.2 +end + +# Memotech type 19, ie: 8MB SD Card +diskdef memotech-type19 + seclen 128 + tracks 2521 + sectrk 26 + blocksize 4096 + maxdir 512 + skew 1 + boottrk 2 + os 2.2 + offset 8M +end + +# Memotech type 1A, ie: 8MB SD Card +diskdef memotech-type1A + seclen 128 + tracks 2521 + sectrk 26 + blocksize 4096 + maxdir 512 + skew 1 + boottrk 2 + os 2.2 + offset 16M +end + +# Memotech type 1B, ie: 8MB SD Card +diskdef memotech-type1B + seclen 128 + tracks 2521 + sectrk 26 + blocksize 4096 + maxdir 512 + skew 1 + boottrk 2 + os 2.2 + offset 24M +end + +# Memotech type 1C, ie: 8MB SD Card +diskdef memotech-type1C + seclen 128 + tracks 2521 + sectrk 26 + blocksize 4096 + maxdir 512 + skew 1 + boottrk 2 + os 2.2 + offset 32M +end + +# Memotech type 1D, ie: 8MB SD Card +diskdef memotech-type1D + seclen 128 + tracks 2521 + sectrk 26 + blocksize 4096 + maxdir 512 + skew 1 + boottrk 2 + os 2.2 + offset 40M +end + +# Memotech type 1E, ie: 8MB SD Card +diskdef memotech-type1E + seclen 128 + tracks 2521 + sectrk 26 + blocksize 4096 + maxdir 512 + skew 1 + boottrk 2 + os 2.2 + offset 48M +end + +# Memotech type 1F, ie: 8MB SD Card +diskdef memotech-type1F + seclen 128 + tracks 2521 + sectrk 26 + blocksize 4096 + maxdir 512 + skew 1 + boottrk 2 + os 2.2 + offset 56M +end + +# Memotech type 50, ie: 256KB RAM Disc +# CP/M sees 26 128 byte records per track +# Note: Unlike common practice with real physical disks, with real geometry, +# the DPB for RAM Discs includes blocks on the last incomplete track +# Tracks = 262144/(26*128) = 78.76 +# Data is in 1024 byte blocks, on track 2 onwards +# Blocks = (262144-2*26*128)/1024 = 249, which agrees with DPB +# Blocks = ((78-2)*26*128)/1024 = 247, so we need the extra 0.76 track +diskdef memotech-type50 + seclen 128 + tracks 79 + sectrk 26 + blocksize 1024 + maxdir 64 + skew 1 + boottrk 2 + os 2.2 +end + +# Memotech type 51, ie: 512KB RAM Disc +# CP/M sees 26 128 byte records per track +# Note: Unlike common practice with real physical disks, with real geometry, +# the DPB for RAM Discs includes blocks on the last incomplete track +# Tracks = 524288/(26*128) = 157.53 +# Data is in 2048 byte blocks, on track 2 onwards +# Blocks = (524288-2*26*128)/2048 = 252, which agrees with DPB +# Blocks = ((157-2)*26*128)/2048 = 251, so we need the extra 0.53 track +diskdef memotech-type51 + seclen 128 + tracks 158 + sectrk 26 + blocksize 2048 + maxdir 128 + skew 1 + boottrk 2 + os 2.2 +end + +# Memotech type 51, as used in Italy, ie: 480KB RAM Disc +# CP/M sees 26 128 byte records per track +# Note: Unlike common practice with real physical disks, with real geometry, +# the DPB for RAM Discs includes blocks on the last incomplete track +# Tracks = 491520/(26*128) = 147.69 +# Data is in 2048 byte blocks, on track 2 onwards +# Blocks = (491520-2*26*128)/2048 = 236, which agrees with DPB +# Blocks = ((147-2)*26*128)/2048 = 235, so we need the extra 0.69 track +diskdef memotech-type51-italy + seclen 128 + tracks 148 + sectrk 26 + blocksize 2048 + maxdir 128 + skew 1 + boottrk 2 + os 2.2 +end + +# Memotech type 51, after S2R64.COM, ie: 448KB RAM Disc +# CP/M sees 26 128 byte records per track +# Note: Unlike common practice with real physical disks, with real geometry, +# the DPB for RAM Discs includes blocks on the last incomplete track +# Tracks = 458752/(26*128) = 137.84 +# Data is in 2048 byte blocks, on track 2 onwards +# Blocks = (458752-2*26*128)/2048 = 220, which agrees with DPB, after S2R64.COM +# Blocks = ((137-2)*26*128)/2048 = 219, so we need the extra 0.84 track +diskdef memotech-type51-s2r64 + seclen 128 + tracks 138 + sectrk 26 + blocksize 2048 + maxdir 128 + skew 1 + boottrk 2 + os 2.2 +end + +# Memotech type 51, after S2R.COM, ie: 144KB RAM Disc +# CP/M sees 26 128 byte records per track +# Note: Unlike common practice with real physical disks, with real geometry, +# the DPB for RAM Discs includes blocks on the last incomplete track +# Tracks = 147456/(26*128) = 44.3 +# Data is in 2048 byte blocks, on track 2 onwards +# Blocks = (147456-2*26*128)/2048 = 68, which agrees with DPB, after S2R.COM +# Blocks = ((44-2)*26*128)/2048 = 68, so we don't need the extra 0.3 track +diskdef memotech-type51-s2r + seclen 128 + tracks 44 + sectrk 26 + blocksize 2048 + maxdir 128 + skew 1 + boottrk 2 + os 2.2 +end + +# Memotech type 52, ie: 320KB RAM Disc +# Added for REMEMOTECH +# CP/M sees 26 128 byte records per track +# Note: Unlike common practice with real physical disks, with real geometry, +# the DPB for RAM Discs includes blocks on the last incomplete track +# Tracks = 327680/(26*128) = 98.46 +# Data is in 2048 byte blocks, on track 2 onwards +# Blocks = (327680-2*26*128)/2048 = 156 +# Blocks = ((98-2)*26*128)/2048 = 156, so we don't need the extra 0.46 track +# This type very deliberately and conveniently exactly matches type 03 +diskdef memotech-type52 + seclen 128 + tracks 98 + sectrk 26 + blocksize 2048 + maxdir 64 + skew 1 + boottrk 2 + os 2.2 +end + +# Research Machines 380Z/480Z 5.25" "Single Density" or "MDS" format. +# All tracks are formatted FM 16x128. +diskdef rm-sd + seclen 128 + tracks 40 + sectrk 16 + blocksize 1024 + maxdir 64 + skew 3 + boottrk 3 + os 2.2 +end + +# Research Machines 380Z/480Z 5.25" "Double Density" or "MD" format. +# Track 0 is formatted FM 16x128; 1+ are MFM 9x512. +# If you're working with an image file, make sure that track 0 is +# padded to be the same size as the other tracks. +diskdef rm-dd + seclen 512 + tracks 40 + sectrk 9 + blocksize 1024 + maxdir 64 + skew 5 + boottrk 3 + os 2.2 +end + +# Research Machines 380Z/480Z 5.25" "Quad Density" or "MQ" format. +# Track 0 is formatted FM 16x128; 1+ are MFM 9x512. +diskdef rm-qd + seclen 512 + tracks 80 + sectrk 9 + blocksize 2048 + maxdir 128 + skew 5 + boottrk 3 + os 2.2 +end + +# Ampro Little Board Z80 running CP/M 2.21 +# BEGIN AMP1 Ampro - SSDD 48 tpi 5.25" +# DENSITY MFM, LOW +# CYLINDERS 40 SIDES 1 SECTORS 10,512 SKEW 2 +# SIDE1 0 1,2,3,4,5,6,7,8,9,10 +# BSH 4 BLM 15 EXM 1 DSM 94 DRM 63 AL0 080H AL1 0 OFS 2 +# END + +diskdef amp1 + seclen 512 #= Sectors xx,512 + tracks 40 #= (Cylinders * Sides) = 40*1 = 40 + sectrk 10 #= Sectors 10,xxx + blocksize 2048 #= (128*(BLM+1)) = 2048 + maxdir 64 #(DRM+1) = 64 + skew 0 #= SKEW = 0 + boottrk 2 #= OFS = 2 + os 2.2 +end + +#BEGIN AMP2 Ampro - DSDD 48 tpi 5.25" +#DENSITY MFM, LOW +#CYLINDERS 40 SIDES 2 +#SECTORS 10,512 +#SKEW 2 +#SIDE1 0 17,18,19,20,21,22,23,24,25,26 +#SIDE2 1 17,18,19,20,21,22,23,24,25,26 +#ORDER SIDES +#BSH 4 BLM 15 EXM 1 DSM 194 DRM 127 AL0 0C0H AL1 0 OFS 2 +#END + +# setfdprm /dev/fd0 DS DD ssize=512 cyl=40 sect=10 head=2 +diskdef amp2 + seclen 512 + tracks 80 + sectrk 10 + blocksize 2048 + maxdir 128 + skew 0 + boottrk 2 + os 2.2 +end + +#BEGIN AMP3 Ampro - SSDD 96 tpi 3.5" +#DENSITY MFM, LOW +#CYLINDERS 80 SIDES 1 SECTORS 5,1024 SKEW 2 +#SIDE1 0 1,2,3,4,5 +#BSH 4 BLM 15 EXM 1 DSM 194 DRM 127 AL0 0C0H AL1 0 OFS 2 +#END + +# setfdprm /dev/fd0 SS DD ssize=1024 cyl=80 sect=5 head=1 +diskdef amp3 + seclen 1024 + tracks 80 + sectrk 5 + blocksize 2048 + maxdir 128 + skew 0 + boottrk 2 + os 2.2 +end + +#BEGIN AMP4 Ampro - DSDD 96 tpi 3.5" +#DENSITY MFM, LOW +#CYLINDERS 80 SIDES 2 SECTORS 5,1024 SKEW 2 +#SIDE1 0 17,18,19,20,21 +#SIDE2 1 17,18,19,20,21 +#ORDER SIDES +#BSH 4 BLM 15 EXM 0 DSM 394 DRM 255 AL0 0F0H AL1 0 OFS 2 +#END + +# setfdprm /dev/fd0 DS DD ssize=1024 cyl=80 sect=5 head=2 +diskdef amp4 + seclen 1024 + tracks 160 + sectrk 5 + blocksize 2048 + maxdir 256 + skew 0 + boottrk 2 + os 2.2 +end + +#BEGIN AMP5 Ampro - SSDD 3.5" +#DENSITY MFM, LOW +#CYLINDERS 80 SIDES 1 SECTORS 5,1024 SKEW 2 +#SIDE1 0 1,2,3,4,5 +#BSH 4 BLM 15 EXM 1 DSM 194 DRM 127 AL0 0C0H AL1 0 OFS 2 +#END + +# setfdprm /dev/fd0 SS DD ssize=1024 cyl=80 sect=5 head=1 +diskdef amp5 + seclen 1024 + tracks 80 + sectrk 5 + blocksize 2048 + maxdir 128 + skew 0 + boottrk 2 + os 2.2 +end + +#BEGIN AMP6 Ampro - DSDD 3.5" +#DENSITY MFM, LOW +#CYLINDERS 80 SIDES 2 SECTORS 5,1024 SKEW 2 +#SIDE1 0 17,18,19,20,21 +#SIDE2 1 17,18,19,20,21 +#ORDER SIDES +#BSH 4 BLM 15 EXM 0 DSM 394 DRM 255 AL0 0F0H AL1 0 OFS 2 +#END + +# setfdprm /dev/fd0 DS DD ssize=1024 cyl=80 sect=5 head=2 +diskdef amp6 + seclen 1024 + tracks 160 + sectrk 5 + blocksize 2048 + maxdir 256 + skew 0 + boottrk 2 + os 2.2 +end + +diskdef ampro800 + seclen 1024 + tracks 160 + sectrk 5 + blocksize 2048 + maxdir 256 + skew 0 + boottrk 2 + os 2.2 +end diff --git a/dis/SA-5510/SA-5510.asm b/dis/SA-5510/SA-5510.asm new file mode 100644 index 0000000..bd04394 --- /dev/null +++ b/dis/SA-5510/SA-5510.asm @@ -0,0 +1,7511 @@ +; Disassembly of the file "SA-5510.bin" +; +; CPU Type: Z80 +; +; Created with dZ80 2.1 +; +; on Saturday, 03 of April 2021 at 12:48 AM +; +PRTC EQU 0FEH +PRTD EQU 0FFH +GETL EQU 00003H +LETNL EQU 00006H +NL EQU 00009H +PRNTS EQU 0000CH +PRNTT EQU 0000FH +PRNT EQU 00012H +MSG EQU 00015H +MSGX EQU 00018H +GETKY EQU 0001BH +BRKEY EQU 0001EH +?WRI EQU 00021H +?WRD EQU 00024H +?RDI EQU 00027H +?RDD EQU 0002AH +?VRFY EQU 0002DH +MELDY EQU 00030H +?TMST EQU 00033H +TIMRD EQU 0003BH +BELL EQU 0003EH +XTEMP EQU 00041H +MSTA EQU 00044H +MSTP EQU 00047H +MONIT EQU 00000H +SS EQU 00089H +ST1 EQU 00095H +HLHEX EQU 00410H +_2HEX EQU 0041FH +?MODE EQU 0074DH +?KEY EQU 008CAH +PRNT3 EQU 0096CH +?ADCN EQU 00BB9H +?DACN EQU 00BCEH +?DSP EQU 00DB5H +?BLNK EQU 00DA6H +?DPCT EQU 00DDCH +PRTHL EQU 003BAH +PRTHX EQU 003C3H +ASC EQU 003DAH +HEX EQU 003F9H +DPCT EQU 00DDCH +DLY12 EQU 00DA7H +DLY12A EQU 00DAAH +?RSTR1 EQU 00EE6H +MOTOR EQU 006A3H +CKSUM EQU 0071AH +GAP EQU 0077AH +WTAPE EQU 00485H +MSTOP EQU 00700H +LINEBUFR EQU 0490DH +ATRB EQU 010F0H +NAME EQU 010F1H +SIZE EQU 01102H +DTADR EQU 01104H +EXADR EQU 01106H +COMNT EQU 01108H +SWPW EQU 01164H +KDATW EQU 0116EH +KANAF EQU 01170H +DSPXY EQU 01171H +MANG EQU 01173H +MANGE EQU 01179H +PBIAS EQU 0117AH +ROLTOP EQU 0117BH +MGPNT EQU 0117CH +PAGETP EQU 0117DH +ROLEND EQU 0117FH +FLASH EQU 0118EH +SFTLK EQU 0118FH +REVFLG EQU 01190H +SPAGE EQU 01191H +FLSDT EQU 01192H +STRGF EQU 01193H +DPRNT EQU 01194H +TMCNT EQU 01195H +SUMDT EQU 01197H +CSMDT EQU 01199H +AMPM EQU 0119BH +TIMFG EQU 0119CH +SWRK EQU 0119DH +TEMPW EQU 0119EH +ONTYO EQU 0119FH +OCTV EQU 011A0H +RATIO EQU 011A1H +BUFER EQU 011A3H +PRGSTART EQU 011FDH + + ORG PRGSTART + +TAPECOPY: JP L41EC + +COLDSTRT: LD HL,048FFH + LD D,0D0H +L1205: INC HL + LD A,H + CP D + JR Z,L1214 ; (+00aH) + LD A,PRTD + LD (HL),A + SUB (HL) + JR NZ,L1214 ; (+004H) + LD (HL),A + CP (HL) + JR Z,L1205 ; (-00fH) +L1214: LD (04908H),HL + LD (0490AH),HL + LD SP,HL + CALL BELL + XOR A + LD D,A + LD E,A + CALL ?TMST + CALL L132C + CALL L1313 + LD DE,TITLEMSG + CALL L1329 + LD DE,COPYRMSG + CALL L1329 + CALL L131E + CALL L1944 + LD BC,0000AH + CALL L184D + CALL L1841 + CALL MSGNL + LD DE,BYTESMSG + CALL MSGX +WARMSTRT: NOP + NOP +WARMSTRTMON:NOP ; Sharp defined BASIC restart location from Monitor. + NOP + NOP + NOP + NOP + NOP + NOP + NOP + LD SP,(0490AH) + LD DE,READYMSG + CALL MSGNL +L1262: LD HL,L12B8 + PUSH HL +L1266: LD HL,0504DH + CALL L19BA + CALL L19BA + CALL NL + LD DE,LINEBUFR + LD A,(L2A83) + OR A + JR Z,L1299 ; (+01eH) + LD HL,(L2A84) + PUSH HL + LD BC,(02A86H) + ADD HL,BC + JR C,L12A6 ; (+020H) + LD (L2A84),HL + POP HL + PUSH DE + CALL STRTONUM + EX DE,HL + LD (HL),020H + INC HL + LD (HL),00DH + EX DE,HL + POP DE + CALL MSGX +L1299: CALL L1338 + LD A,(DE) + CP 01BH + RET NZ + XOR A + LD (L2A83),A + JR L1299 ; (-00dH) + +L12A6: XOR A + LD (L2A83),A + JP SYNTAXERR + + CALL L1266 + LD A,(DE) + CP 00DH + RET Z + LD HL,(0490AH) + LD SP,HL +L12B8: CALL L146A + CALL L14F8 + LD HL,(04A10H) + LD A,L + OR H + JR NZ,L12D4 ; (+00fH) + LD HL,04A12H + LD (05051H),HL + CALL EXECNOTCHR + DB 00DH + DW L1B5F + JP L1262 + +L12D4: CALL L12DA + JP L1262 + +L12DA: CALL L145E + CALL L1459 + CALL L18B0 + RET PE + LD (DE),A + CALL Z,L1302 + LD A,(04A12H) + CP 00DH + RET Z + CALL L18B3 + DI + LD (DE),A + LD (04A0EH),HL + EX DE,HL + LD HL,04A0EH + CALL L18F2 + CALL L18A2 + JR L130C ; (+00aH) + +L1302: CALL L18F2 + EX DE,HL + CALL L1873 + CALL L1762 +L130C: CALL L19C3 + EX DE,HL + JP L18EA + +L1313: LD B,021H +L1315: LD A,0CFH + CALL PRNT + DJNZ L1315 ; (-007H) + JR L132C ; (+00eH) + +L131E: LD B,021H +L1320: LD A,0D7H + CALL PRNT + DJNZ L1320 ; (-007H) + JR L132C ; (+003H) + +L1329: CALL MSGX +L132C: CALL LETNL + JP LETNL + +MSGNL: CALL NL + JP MSGX + +L1338: CALL GETL + LD A,0C9H + CALL ?DPCT + LD A,000H + LD HL,SFTLK + LD (HL),A + RET + +TITLEMSG: DB " BASIC ",0A6H,0B0H,096H,092H,09DH,09EH,09DH,092H,096H,092H,09DH," SA-5510" + DB 00DH +COPYRMSG: DB " C",0B7H,09EH,0BDH,09DH,0A6H,097H,098H,096H," 1981 ",09AH,0BDH," SHARP C",0B7H,09DH,09EH,"." + DB 00DH +READYMSG: DB "R",092H,0A1H,09CH,0BDH + DB 00DH +ERRORMSG: DB "*E",09DH,09DH,0B7H,09DH + DB 00DH +INMSG: DB " ",0A6H,0B0H + DB 00DH +BREAKMSG: DB "*B",09DH,092H,0A1H,0A9H + DB 00DH +BYTESMSG: DB " B",0BDH,096H,092H,0A4H + DB 00DH +ERRCODE: DB 012H + DB 000H +L13A5: DB 000H + DB 000H + DB 000H + DB 000H + DB 000H + DB 000H +SYNTAXERR: DB 03EH + DB 001H + DB 001H +OVFLERR: DB 03EH + DB 002H + DB 001H +ILDATERR: DB 03EH + DB 003H + DB 001H +DATMISERR: DB 03EH + DB 004H + DB 001H +STRLENERR: DB 03EH + DB 005H + DB 001H +MEMERR: DB 03EH + DB 006H + DB 001H + DB 03EH + DB 007H + DB 001H +LINELENERR: DB 03EH + DB 008H + DB 001H +GOSUBERR: DB 03EH + DB 00AH + DB 001H +FORNEXTERR: DB 03EH + DB 00BH + DB 001H +FUNCERR: DB 03EH + DB 00CH + DB 001H +NEXTFORERR: DB 03EH + DB 00DH + DB 001H +RETGOSBERR: DB 03EH + DB 00EH + DB 001H +UNDEFFNERR: DB 03EH + DB 00FH + DB 001H +LINEERR: DB 03EH + DB 010H + DB 001H +CONTERR: DB 03EH + DB 011H + DB 001H +BADWRERR: DB 03EH + DB 012H + DB 001H +CMDSTMTERR: DB 03EH + DB 013H + DB 001H +READDATAERR:DB 03EH + DB 018H + DB 001H +OPENERR: DB 03EH + DB 02BH + DB 001H +UNKNWNERR: DB 03EH + DB 03CH + DB 001H +OUTFILEERR: DB 03EH + DB 03FH + DB 001H +PRTNRDYERR: DB 03EH + DB 041H + DB 001H +PRTHWERR: DB 03EH + DB 042H + DB 001H +PRTPAPERERR:DB 03EH + DB 043H + DB 001H +CHKSUMERR: DB 03EH + DB 046H + JR L1403 ; (+009H) + +L13FA: LD IY,L1400 + RET + + NOP +L1400: LD A,(013FFH) +L1403: LD (ERRCODE),A + CALL L1ABF + CALL L1AB8 + JR Z,L142A ; (+01cH) + LD HL,05056H + LD A,(HL) + CP 001H + JR NZ,L1421 ; (+00bH) + INC (HL) + LD HL,(0490AH) + LD SP,HL + LD HL,(05057H) + JP L1EAA + +L1421: CALL L1991 + CALL L1978 + CALL L199E +L142A: LD DE,ERRORMSG + CALL MSGNL + LD HL,(ERRCODE) + CALL L1453 + JR L143E ; (+006H) + +L1438: LD DE,BREAKMSG + CALL MSGNL +L143E: LD BC,WARMSTRT + PUSH BC + XOR A + LD (L2A83),A + CALL BELL + CALL L1AB8 + RET Z + LD DE,INMSG + CALL MSGX +L1453: CALL L1841 + JP MSGX + +L1459: XOR A + LD (L1463),A + RET + +L145E: XOR A + LD (05059H),A + RET + +L1463: NOP +L1464: SBC A,C + LD H,D + RET Z + RRCA + SUB B + LD H,D +L146A: LD HL,LINEBUFR + CALL L17F6 + LD (04A10H),DE + LD DE,04A12H + LD C,000H +L1479: CALL L1561 + RET Z + OR A + JP M,SYNTAXERR + DEC DE + PUSH HL + LD HL,L1479 + EX (SP),HL + CP 03FH + LD B,088H + JR Z,L1498 ; (+00bH) + DEC HL + PUSH DE + LD DE,CMDWORDTBL + CALL L14C7 + JR NZ,L14A8 ; (+011H) + POP DE +L1498: LD A,080H + CALL L14B3 + CP 084H + RET NC +L14A0: CALL L1595 + CP 03AH + RET Z + POP AF + RET + +L14A8: LD DE,UNUSEDTBL1 + CALL L14C7 + JR NZ,L14B9 ; (+009H) + POP DE + LD A,081H +L14B3: LD (DE),A + INC DE +L14B5: LD A,B + LD (DE),A + INC DE + RET + +L14B9: LD DE,OPERATORTBL + LD B,083H + CALL L14C9 + POP DE + JR Z,L14B5 ; (-00fH) + INC HL + INC DE + RET + +L14C7: LD B,080H +L14C9: PUSH HL +L14CA: CALL SKIPSPACE + OR A + JP M,L14F1 + EX DE,HL + CALL SKIPSPACE + EX DE,HL + SUB (HL) + INC HL + INC DE + JR Z,L14CA ; (-011H) + ADD A,080H + JR NZ,L14E2 ; (+003H) + INC SP + INC SP + RET + +L14E2: POP HL + DEC DE +L14E4: LD A,(DE) + INC DE + OR A + JR Z,L14EF ; (+006H) + JP P,L14E4 + INC B + JR L14C9 ; (-026H) + +L14EF: DEC A + RET + +L14F1: POP HL + CALL SKIPSPACE + DEC A + LD A,(HL) + RET + +L14F8: LD HL,(04A10H) + LD DE,LINEBUFR + LD C,0B2H + CALL L17FE + LD A,020H + LD (DE),A + INC DE + LD HL,04A12H +L150A: CALL L1561 + RET Z + SUB 080H + JR C,L150A ; (-008H) + DEC DE + DEC C + CP 003H + JR C,L1525 ; (+00dH) + SUB 002H + LD B,A + PUSH HL + LD HL,OPERATORTBL +L151F: CALL L1554 + POP HL + JR L150A ; (-01bH) + +L1525: EX AF,AF' + LD A,(HL) + INC HL + SUB 07FH + LD B,A + PUSH HL + EX AF,AF' + OR A + JR Z,L153D ; (+00dH) + LD HL,L151F + PUSH HL + LD HL,UNUSEDTBL1 + DEC A + RET Z + LD HL,UNUSEDTBL2 + RET + +L153D: PUSH BC + LD HL,CMDWORDTBL + CALL L1554 + POP AF + LD HL,L150A + EX (SP),HL + CP 004H + RET NC + JP L14A0 + +L154F: BIT 7,(HL) + INC HL + JR Z,L154F ; (-005H) +L1554: DJNZ L154F ; (-007H) +L1556: CALL L158A + ADD A,080H + JR NC,L1556 ; (-007H) + DEC DE + LD (DE),A + INC DE + RET + +L1561: CALL L158A + RET Z + CALL L1575 + JR Z,L1561 ; (-009H) + CP 022H + RET NZ + CALL L1581 + CP 00DH + JR NZ,L1561 ; (-013H) + RET + +L1575: CP 020H + RET Z + CP PRTD + RET Z + CP 028H + RET Z + CP 029H + RET + +L1581: CALL L158A + RET Z + CP 022H + JR NZ,L1581 ; (-008H) + RET + +L158A: LD A,(HL) + LD (DE),A + INC HL + INC DE + INC C + JP Z,LINELENERR + CP 00DH + RET + +L1595: CALL L158A + RET Z + CP 03AH + RET Z + CP 022H + JR NZ,L1595 ; (-00bH) + CALL L1581 + CP 00DH + JR NZ,L1595 ; (-012H) + RET + +CMDWORDTBL: DB "RE" + DB 0CDH + DB "DAT" + DB 0C1H + DB 0FFH + DB 0FFH + DB "REA" + DB 0C4H + DB "LIS" + DB 0D4H + DB "RU" + DB 0CEH + DB "NE" + DB 0D7H + DB "PRIN" + DB 0D4H + DB "LE" + DB 0D4H + DB "FO" + DB 0D2H + DB "I" + DB 0C6H + DB "THE" + DB 0CEH + DB "GOT" + DB 0CFH + DB "GOSU" + DB 0C2H + DB "RETUR" + DB 0CEH + DB "NEX" + DB 0D4H + DB "STO" + DB 0D0H + DB "EN" + DB 0C4H + DB 0FFH + DB "O" + DB 0CEH + DB "LOA" + DB 0C4H + DB "SAV" + DB 0C5H + DB "VERIF" + DB 0D9H + DB "POK" + DB 0C5H + DB "DI" + DB 0CDH + DB "DEF F" + DB 0CEH + DB "INPU" + DB 0D4H + DB "RESTOR" + DB 0C5H + DB "CL" + DB 0D2H + DB "MUSI" + DB 0C3H + DB "TEMP" + DB 0CFH + DB "USR" + DB 0A8H + DB "WOPE" + DB 0CEH + DB "ROPE" + DB 0CEH + DB "CLOS" + DB 0C5H + DB "MO" + DB 0CEH + DB "LIMI" + DB 0D4H + DB "CON" + DB 0D4H + DB "GE" + DB 0D4H + DB "INP" + DB 0C0H + DB "OUT" + DB 0C0H + DB "CURSO" + DB 0D2H + DB "SE" + DB 0D4H + DB "RESE" + DB 0D4H + DB 0FFH + DB 0FFH + DB 0FFH + DB 0FFH + DB 0FFH + DB 0FFH + DB "AUT" + DB 0CFH + DB 0FFH + DB 0FFH + DB "COPY/" + DB 0D0H + DB "PAGE/" + DB 0D0H + DB 0FFH + DB 0FFH + DB 0FFH + DB 0FFH + DB 0FFH + DB 0FFH + DB 0FFH + DB 0FFH + DB 0FFH + DB 000H +UNUSEDTBL1: DB 0FFH + DB 000H +UNUSEDTBL2: DB 0FFH + DB 000H +OPERATORTBL:DB ">" + DB 0BCH + DB "<" + DB 0BEH + DB "=" + DB 0BCH + DB "<" + DB 0BDH + DB "=" + DB 0BEH + DB ">" + DB 0BDH + DB 0FFH + DB 0BEH + DB 0BCH + DB 0FFH + DB 0FFH + DB 0FFH + DB 0FFH + DB 0FFH + DB 0FFH + DB 0FFH + DB 0FFH + DB 0FFH + DB 0FFH + DB 0FFH + DB 0FFH + DB 0FFH + DB 0FFH + DB 0FFH + DB 0FFH + DB 0FFH + DB 0FFH + DB "T" + DB 0CFH + DB "STE" + DB 0D0H + DB "LEFT$" + DB 0A8H + DB "RIGHT$" + DB 0A8H + DB "MID$" + DB 0A8H + DB "LEN" + DB 0A8H + DB "CHR$" + DB 0A8H + DB "STR$" + DB 0A8H + DB "ASC" + DB 0A8H + DB "VAL" + DB 0A8H + DB "PEEK" + DB 0A8H + DB "TAB" + DB 0A8H + DB "SPACE$" + DB 0A8H + DB "SIZ" + DB 0C5H + DB 0FFH,0FFH + DB 0FFH + DB "STRING" + DB 024H + DB 0A8H + DB 0FFH + DB "CHARACTER$" + DB 0A8H + DB "CS" + DB 0D2H + DB 0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH + DB 0FFH + DB "RND" + DB 0A8H + DB "SIN" + DB 0A8H + DB "COS" + DB 0A8H + DB "TAN" + DB 0A8H + DB "ATN" + DB 0A8H + DB "EXP" + DB 0A8H + DB "INT" + DB 0A8H + DB "LOG" + DB 0A8H + DB "LN" + DB 0A8H + DB "ABS" + DB 0A8H + DB "SGN" + DB 0A8H + DB "SQR" + DB 0A8H + DB 0FFH,000H +L173A: LD HL,(05051H) + DEC HL +INCSKIPSPCE:INC HL +SKIPSPACE: LD A,(HL) + CP 020H + RET NZ + JR INCSKIPSPCE ; (-007H) + +L1745: PUSH AF + LD A,00DH +L1748: CP (HL) + INC HL + JR NZ,L1748 ; (-004H) + POP AF + RET + +L174E: INC HL +L174F: CALL L193B + RET Z + CP 022H + JR NZ,L174E ; (-009H) +L1757: INC HL + LD A,(HL) + CP 00DH + RET Z + CP 022H + JR NZ,L1757 ; (-009H) + JR L174E ; (-014H) + +L1762: LD A,C + CPL + LD C,A + LD A,B + CPL + LD B,A + INC BC + RET + +L176A: CALL SKIPSPACE + SUB 030H + CP 00AH + LD A,(HL) + RET + +L1773: LD A,H + SUB D + RET NZ + LD A,L + SUB E + RET + +L1779: POP HL ; Get address after call and jump to it via a RET command. +L177A: EX (SP),HL +EXECHL: PUSH AF + LD A,(HL) + INC HL + LD H,(HL) + LD L,A + POP AF + EX (SP),HL + RET + +L1783: POP HL +L1784: EX (SP),HL + INC HL + INC HL + EX (SP),HL + RET + +L1789: LD HL,(04E94H) + INC HL + INC HL + INC HL + INC HL + INC HL + RET + +L1792: LD HL,(05051H) +EXECNOTCHR: CALL SKIPSPACE ; Scan for character after command + EX (SP),HL + CP (HL) + INC HL + JR NZ,EXECHL ; (-022H) + INC HL + JR L17AB ; (+00bH) + +L17A0: LD HL,(05051H) +MATCHCHR: CALL SKIPSPACE + EX (SP),HL + CP (HL) + JP NZ,SYNTAXERR +L17AB: INC HL + EX (SP),HL + JR INCSKIPSPCE ; (-071H) + +L17AF: XOR A + CP H + JR Z,L17B7 ; (+004H) + EX DE,HL + CP H + JR NZ,L177A ; (-03dH) +L17B7: LD A,L + LD L,H +L17B9: OR A + JR Z,L17CC ; (+010H) + RRA + JR NC,L17C2 ; (+003H) + ADD HL,DE + JR C,L177A ; (-048H) +L17C2: OR A + JR Z,L17CC ; (+007H) + EX DE,HL + ADD HL,HL + EX DE,HL + JR NC,L17B9 ; (-011H) + JR L177A ; (-052H) + +L17CC: EX DE,HL + JR L1784 ; (-04bH) + +L17CF: CALL L17AF + OR C + INC DE + RET + +L17D5: LD DE,MONIT + LD B,D +L17D9: CALL L176A + JR NC,L1784 ; (-05aH) + AND 00FH + LD C,A + XOR A + PUSH HL + LD L,E + LD H,D + ADD HL,HL + RRA + ADD HL,HL + RRA + ADD HL,DE + RRA + ADD HL,HL + RRA + ADD HL,BC + EX DE,HL + POP HL + INC HL + ADC A,A + JR NC,L17D9 ; (-01bH) + JR L177A ; (-07cH) + +L17F6: CALL L17D5 + XOR E + INC DE + RET + +STRTONUM: LD C,000H +L17FE: LD A,020H + LD (DE),A + INC DE + PUSH DE + LD B,000H + LD DE,L2710 + CALL L1827 + LD DE,003E8H + CALL L1827 + LD DE,00064H + CALL L1827 + LD DE,0000AH + CALL L1827 + LD A,L + POP HL + OR 030H + LD (HL),A + INC HL + LD (HL),00DH + EX DE,HL + RET + +L1827: LD A,PRTD +L1829: INC A + OR A + SBC HL,DE + JR NC,L1829 ; (-006H) + ADD HL,DE + OR A + JR NZ,L1836 ; (+003H) + OR B + RET Z + XOR A +L1836: INC B + OR 030H + POP DE + EX (SP),HL + LD (HL),A + INC HL + EX (SP),HL + PUSH DE + INC C + RET + +L1841: LD DE,04AB3H + PUSH DE + CALL STRTONUM + POP DE + RET + +L184A: LD BC,MONIT +L184D: LD HL,(04E94H) + ADD HL,BC + JR C,L185C ; (+009H) + EX DE,HL + LD HL,0FF9CH + ADD HL,SP + XOR A + SBC HL,DE + RET NC +L185C: JP MEMERR + +L185F: PUSH HL + PUSH DE + CALL L184D + POP DE + POP HL + RET + +L1867: LD E,(HL) + INC HL + LD D,(HL) + INC HL + LD A,(HL) + INC HL + LD H,(HL) + LD L,A + EX DE,HL + LD A,L + OR H + RET + +L1873: PUSH BC + PUSH HL + PUSH DE + EX DE,HL + ADD HL,BC + EX DE,HL + CALL L1789 + LD A,L + SUB E + LD C,A + LD A,H + SBC A,D + LD B,A + INC BC + POP HL + PUSH HL + EX DE,HL + JR L18A8 ; (+020H) + +L1888: CALL L185F + PUSH BC + PUSH HL + PUSH DE + CALL L1789 + PUSH HL + ADD HL,BC + EX (SP),HL + LD A,L + SUB E + LD C,A + LD A,H + SBC A,D + LD B,A + INC BC + POP DE + LDDR +L189E: POP DE + POP HL + POP BC + RET + +L18A2: CALL L1888 +L18A5: PUSH BC + PUSH HL + PUSH DE +L18A8: LD A,C + OR B + JR Z,L189E ; (-00eH) + LDIR + JR L189E ; (-012H) + +L18B0: LD (L18BF),HL +L18B3: LD HL,0505CH +L18B6: PUSH HL + CALL L1867 + JP Z,L1779 + PUSH HL + DB 021H +L18BF: DB 0AAH + DB 00FH + CALL L1773 + POP HL + JP Z,L1783 + JP C,L1783 + POP AF + JR L18B6 ; (-018H) + +L18CE: PUSH HL + LD E,(HL) + INC HL + LD D,(HL) + LD A,E + OR D + JP Z,L1779 + DB 021H +L18D8: DB 042H + DB 04CH + CALL L1773 + POP HL + INC HL + INC HL + JP L1784 + +L18E3: ADD HL,BC + EX DE,HL + POP HL + LD (HL),E + INC HL + LD (HL),D + EX DE,HL +L18EA: PUSH HL + CALL L1867 + JR NZ,L18E3 ; (-00dH) + POP HL + RET + +L18F2: PUSH HL + LD BC,00004H + ADD HL,BC + CALL L1900 + INC BC + POP HL + RET + +L18FD: LD BC,MONIT +L1900: PUSH HL + LD A,00DH +L1903: CP (HL) + INC HL + INC BC + JR NZ,L1903 ; (-005H) + DEC BC + POP HL + RET + +L190B: CALL L1921 +L190E: LD A,E + EX DE,HL + LD BC,MONIT + LD HL,(04E92H) + DEC HL +L1917: INC HL + ADD HL,BC + CP (HL) + INC HL + LD C,(HL) + INC HL + JR NZ,L1917 ; (-008H) + EX DE,HL + RET + +L1921: LD A,D + OR A + RET NZ + JR L1929 ; (+003H) + +L1926: LD A,D + OR A + RET Z +L1929: JP DATMISERR + +L192C: LD HL,(04E94H) + EX DE,HL +L1930: LD BC,00005H + LDIR + RET + +L1936: LD HL,(04E94H) + JR L1930 ; (-00bH) + +L193B: CALL SKIPSPACE + CP 00DH + RET Z + CP 03AH + RET + +L1944: LD HL,MONIT + LD (04E4CH),HL + CALL L1957 + CALL L199E + CALL L1978 + CALL L1459 + RET + +L1957: LD HL,0505CH + CALL L19BA + LD DE,04E4EH +L1960: PUSH HL + LD HL,04E96H + XOR A + SBC HL,DE + LD B,L + SRL B + POP HL + EX DE,HL +L196C: XOR A + LD (HL),E + INC HL + LD (HL),D + INC HL + LD (DE),A + INC DE + LD (DE),A + INC DE + DJNZ L196C ; (-00bH) + RET + +L1978: LD HL,05040H + LD (04E9AH),HL + LD HL,04FD7H + LD (04E98H),HL + LD HL,04EBAH + LD (04E96H),HL + LD HL,05053H + CALL L19BA + LD (HL),A +L1991: XOR A + LD (05056H),A + RET + +L1996: LD HL,(04E84H) + LD DE,04E84H + JR L1960 ; (-03eH) + +L199E: LD HL,04DF2H + LD B,05AH +L19A3: LD (HL),000H + INC HL + DJNZ L19A3 ; (-005H) + LD B,01AH + LD HL,04E50H +L19AD: LD E,(HL) + INC HL + LD D,(HL) + INC HL + PUSH HL + EX DE,HL + CALL L2E09 + POP HL + DJNZ L19AD ; (-00cH) + RET + +L19BA: XOR A +L19BB: LD (HL),A + INC HL + LD (HL),A + INC HL + RET + +L19C0: CALL L1888 +L19C3: PUSH HL + LD A,E + EX AF,AF' + LD A,D + LD HL,04E94H +L19CA: LD E,(HL) + INC HL + LD D,(HL) + CP D + JR C,L19D7 ; (+007H) + JR NZ,L19E2 ; (+010H) + EX AF,AF' + CP E + JR NC,L19E1 ; (+00bH) + EX AF,AF' +L19D7: EX DE,HL + ADD HL,BC + EX DE,HL + LD (HL),D + DEC HL + LD (HL),E + DEC HL + DEC HL + JR L19CA ; (-017H) + +L19E1: EX AF,AF' +L19E2: LD D,A + EX AF,AF' + LD E,A + POP HL + RET + +L19E7: CALL L1873 + PUSH BC + CALL L1762 + CALL L19C3 + POP BC + RET + +L19F3: CALL SKIPSPACE + LD DE,00D2CH + LD BC,MONIT + CP 022H + JR NZ,L1A02 ; (+002H) + LD E,A + INC HL +L1A02: PUSH HL +L1A03: LD A,(HL) + CP D + JR Z,L1A0F ; (+008H) + CP E + INC HL + JR Z,L1A0F ; (+004H) + INC BC + JR L1A03 ; (-00bH) + +L1A0E: PUSH HL +L1A0F: EX (SP),HL + PUSH HL + CALL L1A1E + EX DE,HL + EX (SP),HL + CALL L18A5 + POP DE + POP HL + JP SKIPSPACE + +L1A1E: PUSH BC + XOR A + LD E,A + LD HL,(04E92H) + JR L1A2B ; (+005H) + +L1A26: INC HL + LD C,(HL) + INC HL + INC HL + ADD HL,BC +L1A2B: INC E + CP (HL) + JR NZ,L1A26 ; (-009H) + POP BC + PUSH BC + INC BC + INC BC + INC BC + EX DE,HL + CALL L1888 + EX DE,HL + PUSH HL + ADD HL,BC + DEC HL + LD (HL),00DH + LD HL,(04E94H) + ADD HL,BC + LD (04E94H),HL + POP HL + POP BC + LD (HL),E + INC HL + LD (HL),C + INC HL + LD D,001H + RET + +L1A4E: PUSH HL + LD HL,(04E94H) + LD DE,MONIT + LD A,(HL) + OR A + JP P,L1779 + CP 0C1H + JR C,L1A72 ; (+014H) + SUB 0D1H + JP NC,L1779 + LD E,003H + ADD HL,DE + LD E,(HL) + INC HL + LD D,(HL) + JR L1A6F ; (+004H) + +L1A6B: SRL D + RR E +L1A6F: INC A + JR NZ,L1A6B ; (-007H) +L1A72: JP L1783 + +L1A75: CALL EXECNOTCHR + DB 00DH + DW L1A7E + JP L177A + +L1A7E: PUSH HL + DEC HL +L1A80: CALL L1A91 + JR Z,L1A80 ; (-005H) + CP 00DH + JP NZ,L1779 + POP HL + CALL L2333 + JP L1784 + +L1A91: CALL INCSKIPSPCE + CP 045H + RET Z +L1A97: CALL L176A + JR NC,L1A9E ; (+002H) + CP (HL) + RET + +L1A9E: CP 02EH + RET Z + CP 02BH + RET Z + CP 02DH + RET + +L1AA7: PUSH HL + CALL L1AB8 + POP HL + RET Z + JR L1AB5 ; (+006H) + +L1AAF: PUSH HL + CALL L1AB8 + POP HL + RET NZ +L1AB5: JP CMDSTMTERR + +L1AB8: LD HL,(0504FH) + LD A,H + OR L + RET + +L1ABE: NOP +L1ABF: LD HL,L1ABE + XOR A + CP (HL) + LD (HL),A + JR NZ,L1AEE ; (+027H) +L1AC7: LD HL,0505CH +L1ACA: LD E,(HL) + INC HL + LD D,(HL) + DEC HL + LD A,E + OR D + RET Z + CALL L1773 + RET C + EX DE,HL + ADD HL,DE + EX DE,HL + LD (HL),E + INC HL + LD (HL),D + EX DE,HL + JR L1ACA ; (-014H) + +L1ADE: LD HL,(04E4EH) + LD DE,0505CH + DEC HL + DEC HL + XOR A + SBC HL,DE + LD B,H + LD C,L + JP L19E7 + +L1AEE: CALL L1ADE +L1AF1: CALL L1996 + CALL L199E + CALL L1978 + RET + + NOP + NOP + NOP + NOP + NOP + NOP + NOP + NOP + PUSH BC + CALL L1AEE + POP BC + LD A,B + OR A + JR NZ,L1B10 ; (+004H) + LD A,C + CP 003H + RET C +L1B10: PUSH BC + DEC BC + DEC BC + LD DE,0505CH + CALL L19C0 + POP BC + RET + +L1B1B: LD HL,0505CH +L1B1E: LD E,(HL) + INC HL + LD D,(HL) + DEC HL + LD A,D + OR E + RET Z + CALL L1773 + RET NC + PUSH DE + EX DE,HL + XOR A + SBC HL,DE + EX DE,HL + LD (HL),E + INC HL + LD (HL),D + POP HL + JR L1B1E ; (-017H) + +L1B35: LD HL,(05051H) +L1B38: CALL SKIPSPACE +L1B3B: CP 00DH + JR Z,L1B45 ; (+006H) + CALL MATCHCHR + DB 03AH + JR L1B5C ; (+017H) + +L1B45: LD HL,(0504DH) + LD A,H + OR L + JP Z,WARMSTRT +L1B4D: LD A,(HL) + INC HL + OR (HL) + DEC HL + JP Z,L1D17 + LD DE,0504DH + LD BC,00004H + LDIR +L1B5C: LD (05051H),HL +L1B5F: LD A,(05056H) + DEC A + CALL Z,L1B9F + CALL BRKEY + JR NZ,L1B73 ; (+008H) + LD A,002H + CALL L29EB + JP L1438 + +L1B73: LD HL,(04E92H) + CALL L19BA + LD (04E94H),HL + CALL L173A +L1B7F: SUB 080H + JP C,CMDLET + INC HL + LD C,(HL) + INC HL + PUSH HL + LD HL,CMDJMPTBL + JP NZ,SYNTAXERR + LD A,C + ADD A,080H + JP NC,SYNTAXERR + LD C,A +L1B95: LD B,000H + ADD HL,BC + ADD HL,BC + LD A,(HL) + INC HL + LD H,(HL) + LD L,A + EX (SP),HL + RET + +L1B9F: CALL L1AB8 + RET Z + LD DE,L13A5 + LD HL,0504DH + JR NZ,L1BAC ; (+001H) + EX DE,HL +L1BAC: LD BC,LETNL + LDIR + RET + +CMDJMPTBL: DW CMDREMDATA + DW CMDREMDATA + DW SYNTAXERR + DW SYNTAXERR + DW CMDREAD + DW CMDLIST + DW CMDRUN + DW CMDNEW + DW CMDPRINT + DW CMDLET + DW CMDFOR + DW CMDIF + DW SYNTAXERR + DW CMDGOTO + DW CMDGOSUB + DW CMDRETURN + DW CMDNEXT + DW CMDSTOP + DW CMDEND + DW SYNTAXERR + DW CMDON + DW CMDLOAD + DW CMDSAVE + DW CMDVERIFY + DW CMDPOKE + DW CMDDIM + DW CMDDEFFN + DW CMDINPUT + DW CMDRESTORE + DW CMDCLS + DW CMDMUSIC + DW CMDTEMPO + DW CMDUSRN + DW CMDWOPEN + DW CMDROPEN + DW CMDCLOSE + DW CMDMON + DW CMDLIMIT + DW CMDCONT + DW CMDGET + DW CMDINP + DW CMDOUT + DW CMDCURSOR + DW CMDSET + DW CMDRESET + DW SYNTAXERR + DW SYNTAXERR + DW SYNTAXERR + DW SYNTAXERR + DW SYNTAXERR + DW SYNTAXERR + DW CMDAUTO + DW SYNTAXERR + DW SYNTAXERR + DW CMDCOPY + DW CMDPAGE + DW SYNTAXERR + DW SYNTAXERR + DW SYNTAXERR + DW SYNTAXERR + DW SYNTAXERR + DW SYNTAXERR + DW SYNTAXERR + DW SYNTAXERR +L1C32: CALL L193B + JP NZ,SYNTAXERR + LD (05051H),HL + RET + +CMDREMDATA: CALL L174F + JP L1B38 + +CMDNEW: XOR A + LD (L1463),A + CALL L1944 +L1C49: JP WARMSTRT + +L1C4C: DB 006H +CMDLIST: XOR A + LD (L1CAB),A + CALL EXECNOTCHR + DB 02FH + DW L1C60 + CALL MATCHCHR + DB 050H + LD A,001H + LD (L1CAB),A +L1C60: CALL L1AA7 + DB 03EH + LD A,(BC) + LD (L1C4C),A + PUSH HL + LD HL,04AB3H + CALL L19BA + DEC A + CALL L19BB + POP HL + CALL L193B + CALL NZ,L1CF3 + LD (05051H),HL + LD HL,0505CH +L1C80: PUSH HL + CALL L1867 + POP HL +L1C85: JR Z,L1C49 ; (-03eH) + CALL L18F2 + LD DE,04A0EH + LDIR + LD HL,(04AB3H) + EX DE,HL + LD HL,(04A10H) + CALL L1773 + JR C,L1CDF ; (+044H) + EX DE,HL + LD HL,(04AB5H) + CALL L1773 + JR C,L1CDF ; (+03bH) + CALL L14F8 + LD DE,LINEBUFR + DB 03EH +L1CAB: DB 000H + OR A + JR Z,L1CBA ; (+00bH) + CALL L31A2 + CALL L3246 + CALL L31A7 + JR L1CC7 ; (+00dH) + +L1CBA: CALL MSGNL + LD A,(L1C4C) + DEC A + LD (L1C4C),A + CALL Z,L1CE4 +L1CC7: CALL BRKEY + JR Z,L1C85 ; (-047H) +L1CCC: CALL GETKY + CP 020H + JR Z,L1CCC ; (-007H) + CP 03FH + JR NZ,L1CDF ; (+008H) + LD BC,L2000 +L1CDA: DEC BC + LD A,B + OR C + JR NZ,L1CDA ; (-005H) +L1CDF: LD HL,(04A0EH) + JR L1C80 ; (-064H) + +L1CE4: INC A + LD (L1C4C),A + PUSH BC + LD BC,00001H +L1CEC: DEC BC + LD A,B + OR C + JR NZ,L1CEC ; (-005H) + POP BC + RET + +L1CF3: CALL L17F6 + LD (04AB3H),DE + CALL L193B + JR Z,L1D0A ; (+00bH) + CALL MATCHCHR + DB 02DH + CALL L193B + RET Z + CALL L17F6 +L1D0A: LD (04AB5H),DE + CALL L193B + RET Z + JP SYNTAXERR + +CMDEND: DB 0AFH + DB 001H +L1D17: LD A,001H + EX AF,AF' + CALL L1AAF + EX AF,AF' + OR A + CALL Z,L1D24 + JR L1D41 ; (+01dH) + +L1D24: CALL L1C32 + LD A,001H + JP L29EB + +CMDSTOP: CALL L1AAF + CALL L1D24 + LD HL,(0504FH) + LD DE,L1D44 + CALL MSGX + CALL L1841 + CALL MSGX +L1D41: JP WARMSTRT + +L1D44: DB "*S",096H,0B7H,09EH," ",0A6H,0B0H,00DH +CMDRESTORE: CALL L17F6 + CALL L1C32 + LD BC,L1B35 + PUSH BC + LD A,D + OR E + JP Z,L145E + LD BC,L2D46 + PUSH BC +L1D60: EX DE,HL +L1D61: CALL L18B0 + PUSH DE + INC DE + RET Z + JP LINEERR + +CMDLET: PUSH HL +L1D6B: CALL L193B + JP Z,SYNTAXERR + CP 03DH + INC HL + JR NZ,L1D6B ; (-00bH) + CALL L2293 + LD (05051H),HL + CALL L1D95 + POP HL + CALL L267F + CALL L24B2 + CALL MATCHCHR + DB 03DH + CALL L1D9A + CALL L1DA5 + DW DATMISERR + JP L1B35 + +L1D95: LD HL,04900H + JR L1D9D ; (+003H) + +L1D9A: LD HL,04904H +L1D9D: LD (HL),C + INC HL + LD (HL),B + INC HL + LD (HL),E + INC HL + LD (HL),D + RET + +L1DA5: LD HL,04903H + LD B,(HL) + INC HL + LD C,(HL) + INC HL + LD A,(HL) + LD DE,(04906H) + OR A + JR NZ,L1DBD ; (+009H) + OR B + JP NZ,L177A + CALL L1936 + JR L1DF2 ; (+035H) + +L1DBD: XOR A + OR B + JP Z,L177A + LD HL,L1DF5 + XOR A + LD B,A + SBC HL,DE + JR Z,L1DFE ; (+033H) + LD HL,(04900H) + XOR A + SBC HL,BC + LD B,H + LD C,L + JR C,L1DDA ; (+005H) + CALL L1888 + JR L1DE2 ; (+008H) + +L1DDA: PUSH BC + CALL L1762 + CALL L1873 + POP BC +L1DE2: CALL L19C3 + LD HL,(04902H) + EX DE,HL + CALL L190E + EX DE,HL + DEC DE + DEC HL + INC BC + LDIR +L1DF2: JP L1784 + +L1DF5: JR NC,L1E27 ; (+030H) + DEC C + JR NC,L1E2A ; (+030H) + DEC C + JR NC,L1E2D ; (+030H) + DEC C +L1DFE: LD HL,(04902H) + EX DE,HL + CALL L190B + EX DE,HL + LD DE,L1DF5 + PUSH DE + LD B,003H +L1E0C: LD C,002H +L1E0E: CALL L176A + JR NC,L1E5D ; (+04aH) + LD (DE),A + INC DE + INC HL + DEC C + JR NZ,L1E0E ; (-00bH) + LD A,00DH + LD (DE),A + INC DE + DEC B + JR NZ,L1E0C ; (-014H) + CALL EXECNOTCHR + DB 00DH + DW ILDATERR + POP HL +L1E27: CALL L1E69 +L1E2A: LD B,000H + LD A,E +L1E2D: CP 018H + JR NC,L1E5D ; (+02cH) + SUB 00CH + JR C,L1E37 ; (+002H) + LD E,A + INC B +L1E37: LD A,B + PUSH AF + PUSH HL + LD HL,00E10H + CALL L17CF + POP HL + PUSH DE + INC HL + CALL L1E69 + LD A,E + CP 03CH + JR NC,L1E5D ; (+012H) + PUSH HL + LD HL,0003CH + CALL L17CF + POP HL + EX (SP),HL + ADD HL,DE + EX (SP),HL + INC HL + CALL L1E69 + LD A,E + CP 03CH +L1E5D: JR NC,L1E8E ; (+02fH) + POP HL + ADD HL,DE + EX DE,HL + POP AF + CALL ?TMST + JP L1784 + +L1E69: EXX + LD BC,00005H + CALL L1E7F + CALL L2333 + CALL L1926 + CALL L1A4E + OR C + INC DE + EXX + LD BC,0FFFBH +L1E7F: LD HL,(04E94H) + ADD HL,BC + LD (04E94H),HL + EXX + RET + +GETNUM: CALL L1E69 + LD A,D + OR A + RET Z +L1E8E: JP ILDATERR + +CMDRUN: XOR A + LD (L2A83),A + LD (L30E2),A + CALL L2E94 + CALL L145E + CALL L1459 + CALL L176A + JR NC,L1EAF ; (+009H) +CMDGOTO: CALL L17F6 +L1EA9: EX DE,HL +L1EAA: CALL L1D61 + JR L1EC4 ; (+015H) + +L1EAF: CALL L193B + JP NZ,SYNTAXERR + CALL L1991 + CALL L1978 + CALL L1996 + CALL L199E + LD HL,0505CH +L1EC4: JP L1B4D + +CMDGOSUB: CALL L1AAF + CALL L17F6 +L1ECD: CALL L1C32 + CALL L1D60 + EXX + LD HL,05055H + LD A,(HL) + CP 00FH + JP Z,GOSUBERR + INC (HL) + DEC HL + DEC HL + LD DE,(04E9AH) + DEC DE + LD BC,00007H + LDDR + INC DE + LD (04E9AH),DE + LD C,007H + ADD HL,BC + LD (HL),000H + EXX + JP L1B4D + +CMDRETURN: CALL L1AAF + LD HL,05055H + XOR A + CP (HL) + JP Z,RETGOSBERR + DEC (HL) +L1F04: LD HL,05053H + LD A,(HL) + OR A + JR Z,L1F1A ; (+00fH) + DEC (HL) + INC HL + DEC (HL) + LD HL,(04E98H) + LD BC,00013H + ADD HL,BC + LD (04E98H),HL + JR L1F04 ; (-016H) + +L1F1A: LD HL,(04E9AH) + LD DE,0504DH + LD BC,00007H + LDIR + LD (04E9AH),HL + JP L1B35 + +CMDFOR: CALL L267F + CALL MATCHCHR + DB 03DH + PUSH DE + CALL L1FB7 + POP HL + LD (05040H),HL + EX DE,HL + CALL L24BD + CALL L1936 + CALL L17A0 + SBC A,(HL) + CALL L1FB7 + LD DE,05048H + CALL L1936 + CALL L1792 + SBC A,A + LD E,H + RRA + CALL L1FB7 + LD HL,(04E94H) + JR L1F5F ; (+003H) + + LD HL,L2A88 +L1F5F: LD DE,05042H + LD A,(HL) + LD (05047H),A + LD BC,00005H + LDIR + LD HL,(04E98H) + LD DE,(05040H) + LD A,(05053H) + INC A +L1F76: DEC A + JR Z,L1F98 ; (+01fH) + EX AF,AF' + LD A,(HL) + SUB E + LD B,A + INC HL + LD A,(HL) + SUB D + OR B + LD BC,PRNT + ADD HL,BC + JR Z,L1F8A ; (+003H) + EX AF,AF' + JR L1F76 ; (-014H) + +L1F8A: LD (04E98H),HL + EX AF,AF' + DEC A + LD HL,05053H + LD B,(HL) + LD (HL),A + SUB B + INC HL + ADD A,(HL) + LD (HL),A +L1F98: LD HL,05054H + LD A,(HL) + CP 00FH + JP Z,FORNEXTERR + INC (HL) + DEC HL + INC (HL) + DEC HL + LD DE,(04E98H) + LD BC,00013H + DEC DE + LDDR + INC DE + EX DE,HL + LD (04E98H),HL + JP L1B35 + +L1FB7: CALL L2333 + LD (05051H),HL + JP L1926 + +CMDNEXT: LD A,(05053H) + OR A +L1FC4: JP Z,NEXTFORERR + CALL L2640 + LD (05051H),HL + LD HL,(04E98H) + CALL NC,L2039 +L1FD3: LD A,E + SUB (HL) + INC HL + LD B,A + LD A,D + SUB (HL) + OR B + JR Z,L1FF1 ; (+015H) + EXX + LD HL,05053H + LD A,(HL) + DEC A + JR Z,L1FC4 ; (-020H) + LD (HL),A + INC HL + DEC (HL) + EXX + LD BC,PRNT + ADD HL,BC + LD (04E98H),HL + JR L1FD3 ; (-01eH) + +L1FF1: INC HL + CALL L24BD + PUSH DE + PUSH HL + CALL L3405 + POP HL + POP DE + LD BC,00005H + ADD HL,BC +L2000: LD A,(HL) + INC HL + PUSH HL + OR A + JP P,L201B + EX DE,HL + CALL L3A66 + POP HL + LD BC,00005H + JR C,L2025 ; (+014H) +L2011: ADD HL,BC + LD DE,0504DH + INC C + LDIR + JP L1B35 + +L201B: CALL L3A66 + POP HL + LD BC,00005H + CCF + JR C,L2011 ; (-014H) +L2025: LD C,00BH + ADD HL,BC + LD (04E98H),HL + LD HL,05053H + DEC (HL) + INC HL + DEC (HL) + CALL L1792 + INC L + DEC (HL) + DEC DE + JR CMDNEXT ; (-079H) + +L2039: LD E,(HL) + INC HL + LD D,(HL) + DEC HL + RET + +CMDON: CALL L1AAF + CALL L2333 + CALL L1926 + CALL L1A4E + DB 04CH + DB 020H + CALL MATCHCHR + DB 080H + SUB 08DH + CP 002H + JP NC,SYNTAXERR + EX AF,AF' + INC HL + LD A,E + OR A + JR Z,L2061 ; (+004H) + LD A,D + OR A + JR Z,L206F ; (+00eH) +L2061: JP CMDREMDATA + +L2064: CALL L193B + JP Z,L1B3B + CP 02CH + INC HL + JR NZ,L2064 ; (-00bH) +L206F: DEC E + JR NZ,L2064 ; (-00eH) + CALL L17F6 + CALL L174F + EX AF,AF' + OR A + JP NZ,L1ECD + JP L1EA9 + +CMDDIM: CALL L267F + LD BC,MONIT + CP 024H + JR NZ,L208C ; (+002H) + INC HL + INC B +L208C: CALL MATCHCHR + DB 028H + CALL L2107 + JR NZ,L20E5 ; (+050H) + PUSH HL + LD HL,(L2105) + LD E,H + LD D,A + LD H,A + INC HL + INC DE + CALL L17AF + CP D + INC DE + LD A,(L2104) + OR A + POP HL + PUSH DE + PUSH HL + LD HL,00002H + JR NZ,L20B1 ; (+002H) + LD L,005H +L20B1: CALL L17AF + CP D + INC DE + LD HL,00004H + ADD HL,DE + JP C,MEMERR + LD B,H + LD C,L + POP DE + CALL L19C0 + LD HL,(L18D8) + EX DE,HL + LD (HL),E + INC HL + LD (HL),D + INC HL + LD DE,(02105H) + LD (HL),E + INC HL + LD (HL),D + INC HL + POP BC + LD A,(L2104) + OR A + JR Z,L20F0 ; (+016H) +L20DA: LD (HL),000H + INC HL + LD (HL),00DH + INC HL + DEC BC + LD A,B + OR C + JR NZ,L20DA ; (-00bH) +L20E5: LD HL,(L2102) + CALL EXECNOTCHR + DB 02CH + DW L1B38 + JR CMDDIM ; (-070H) + +L20F0: EX DE,HL +L20F1: PUSH BC + LD HL,L2A8D + LD BC,00005H + LDIR + POP BC + DEC BC + LD A,B + OR C + JR NZ,L20F1 ; (-00fH) + JR L20E5 ; (-01dH) + +L2102: XOR (HL) + LD H,C +L2104: DB 001H +L2105: DB 00BH + DB 001H +L2107: PUSH DE + PUSH BC + CALL GETNUM + POP BC + LD A,(HL) + CP 02CH + CALL Z,L2185 + CALL MATCHCHR + DB 029H + LD (L2102),HL + POP HL + LD (L18D8),HL + EX DE,HL + LD (L2105),HL + LD A,B + LD (L2104),A + LD HL,04E86H + LD DE,LETNL + OR A + JR Z,L2130 ; (+001H) + ADD HL,DE +L2130: LD A,C + LD E,002H + OR A + JR NZ,L2137 ; (+001H) + ADD HL,DE +L2137: LD E,(HL) + INC HL + LD D,(HL) + EX DE,HL +L213B: CALL L18CE + LD L,(HL) + LD HL,L2E28 + LD E,(HL) + INC HL + PUSH HL + LD L,(HL) + LD D,000H + LD H,D + INC HL + INC DE + CALL L17CF + LD A,(L2104) + OR A + JR NZ,L215F ; (+00bH) + LD HL,00005H + CALL L17CF + POP HL + ADD HL,DE + INC HL + JR L213B ; (-024H) + +L215F: POP HL + INC HL + LD B,000H +L2163: LD C,(HL) + INC HL + INC HL + ADD HL,BC + DEC DE + LD A,D + OR E + JR NZ,L2163 ; (-009H) + JR L213B ; (-033H) + + XOR A + RET + + LD C,(HL) + INC HL + LD B,(HL) + INC HL + LD DE,(02105H) + LD A,B + CP D + JR C,L217E ; (+002H) + LD A,C + CP E +L217E: JP C,ILDATERR + LD A,001H + OR A + RET + +L2185: INC C + PUSH BC + PUSH DE + INC HL + CALL GETNUM + LD A,E + POP DE + LD D,A + POP BC + RET + +CMDPOKE: CALL L299F + CALL L2E94 + PUSH DE + CALL L299F + LD A,D + OR A + JP NZ,ILDATERR + EX (SP),HL + LD (HL),E + POP HL +L21A3: JP L1B38 + +CMDCLS: PUSH HL + CALL L1AF1 + POP HL + JR L21A3 ; (-00aH) + +CMDIF: CALL L1AAF + CALL EXECNOTCHR + DB 0AEH + DW L21D3 + CALL L2DBA + JP Z,SYNTAXERR + LD B,A + CALL L2712 + PUSH HL + LD A,B + CALL L2DC1 + RST 038H + RST 038H + LD BC,00008H + ADD HL,BC + LD A,(HL) + POP HL + OR A + JR NZ,L21E3 ; (+013H) +L21D0: JP L1B45 + +L21D3: CALL L2293 + CALL L1926 + LD IX,(04E94H) + BIT 7,(IX+004H) + JR Z,L21D0 ; (-013H) +L21E3: CALL MATCHCHR + ADD A,B + SUB 08CH + INC HL + CP 002H + JP Z,CMDGOSUB +L21EF: JP NC,SYNTAXERR + OR A + CALL Z,L21F9 + JP CMDGOTO + +L21F9: CALL L176A + RET C + POP BC + JP L1B7F + +CMDDEFFN: CALL SKIPSPACE + SUB 041H + CP 01AH + JR NC,L21EF ; (-01bH) + LD E,(HL) + INC HL + CALL MATCHCHR + DB 028H + SUB 041H + CP 01AH + JR NC,L21EF ; (-027H) + LD D,(HL) + INC HL + CALL MATCHCHR + DB 029H + CALL MATCHCHR + DB 03DH + PUSH HL + CALL L174F + POP BC + PUSH HL + XOR A + SBC HL,BC + PUSH BC + PUSH HL + LD HL,(04E84H) +L222E: LD A,(HL) + CP E + JR Z,L224D ; (+01bH) + OR A + JR Z,L223C ; (+007H) + INC HL + INC HL + CALL L1745 + JR L222E ; (-00eH) + +L223C: EX DE,HL + LD BC,GETL + CALL L19C0 + EX DE,HL + LD (HL),E + INC HL + LD (HL),D + INC HL + LD (HL),00DH + EX DE,HL + JR L225D ; (+010H) + +L224D: INC HL + LD (HL),D + INC HL + PUSH HL + CALL L174F + POP DE + XOR A + SBC HL,DE + LD B,H + LD C,L + CALL L19E7 +L225D: POP BC + POP HL + CALL L18A2 + CALL L19C3 + POP HL +L2266: JP L1B38 + +CMDMUSIC: CALL L193B + JR Z,L2266 ; (-008H) + CALL L2333 + CALL L193B + JR Z,L2277 ; (+001H) + INC HL +L2277: CALL L190B + CALL MELDY + JP C,L1438 + JR CMDMUSIC ; (-019H) + +CMDTEMPO: CALL GETNUM + LD A,E + DEC A + CP 007H + JP NC,ILDATERR + INC A + CALL XTEMP + JR L2266 ; (-02cH) + +L2292: INC HL +L2293: CALL L2333 +L2296: CP 03DH + JR NZ,L229C ; (+002H) + LD A,089H +L229C: CP 083H + RET C + CP 090H + RET NC + SUB 083H + EX AF,AF' + LD A,D + OR A + JR NZ,L22B4 ; (+00bH) + EX AF,AF' + EXX + LD BC,L2296 + LD DE,L2332 + JP L23BB + +L22B4: EX AF,AF' + PUSH DE + PUSH AF + CALL L2332 + POP AF + EX AF,AF' + EX (SP),HL + CALL L190B + LD A,C + PUSH AF + EX DE,HL + CALL L190B + POP AF + LD B,A + CALL L2305 + LD HL,L22F3 + PUSH HL + LD HL,L22E1 + EX AF,AF' + LD C,A + LD B,000H + ADD HL,BC + ADD HL,BC + LD A,(HL) + INC HL + LD H,(HL) + LD L,A + EX AF,AF' + OR A + LD A,001H + JP (HL) + +L22E1: DW L231B + DW L231B + DW L231E + DW L231E + DW L2322 + DW L2322 + DW L2325 + DW L2328 + DW L232F +L22F3: LD DE,L2A92 + OR A + JR NZ,L22FC ; (+003H) + LD DE,L2A8D +L22FC: CALL L192C + POP HL + CALL L23FA + JR L2296 ; (-06fH) + +L2305: LD A,B + OR C + RET Z + LD A,C + CP B + JR NZ,L2315 ; (+009H) +L230C: LD A,(DE) + SUB (HL) + JR NZ,L2315 ; (+005H) + INC HL + INC DE + DJNZ L230C ; (-008H) + RET + +L2315: LD A,001H + DB 0D0H + LD A,080H + RET + +L231B: RET NZ + XOR A + RET + +L231E: RET Z + RET M + XOR A + RET + +L2322: RET P + XOR A + RET + +L2325: RET Z + XOR A + RET + +L2328: LD A,000H + RET Z + RET M + LD A,001H + RET + +L232F: RET M + XOR A + RET + +L2332: INC HL +L2333: LD A,(HL) + CP 020H + JR Z,L2332 ; (-006H) + CP 02BH + JR Z,L2348 ; (+00cH) + CP 02DH + JR NZ,L2349 ; (+009H) + CALL L2392 + CALL L2410 + JR L234C ; (+004H) + +L2348: INC HL +L2349: CALL L2393 +L234C: CP 02BH + JR Z,L2356 ; (+006H) + CP 02DH + RET NZ + LD A,00DH + DB 001H +L2356: LD A,00CH + EX AF,AF' + LD A,D + OR A + JR NZ,L2367 ; (+00aH) + EX AF,AF' + EXX + LD BC,L234C + LD DE,L2392 + JR L23BB ; (+054H) + +L2367: EX AF,AF' + CP 00CH + JP NZ,SYNTAXERR + PUSH DE + CALL L2392 + EX (SP),HL + PUSH DE + CALL L190B + LD A,C + PUSH AF + EX DE,HL + CALL L190B + POP AF + ADD A,C + JP C,STRLENERR + PUSH AF + EX DE,HL + CALL L18A2 + CALL L19C3 + POP AF + LD C,A + DEC DE + LD (DE),A + POP DE + POP HL + LD A,(HL) + JR L234C ; (-046H) + +L2392: INC HL +L2393: CALL L23AC +L2396: CP 02FH + JR Z,L23A0 ; (+006H) + CP 02AH + RET NZ + LD A,00EH + DB 001H +L23A0: LD A,00FH + EXX + LD BC,L2396 + LD DE,L23AB + JR L23BB ; (+010H) + +L23AB: INC HL +L23AC: CALL L2402 +L23AF: CP 05EH + RET NZ + LD A,010H + EXX + LD BC,L23AF + LD DE,L2401 +L23BB: PUSH BC + LD HL,(04E94H) + LD BC,00005H + ADD HL,BC + LD (04E94H),HL + LD HL,L2691 + LD C,A + ADD HL,BC + ADD HL,BC + LD C,(HL) + INC HL + LD B,(HL) + PUSH BC + LD HL,L23DC + PUSH HL + PUSH DE + EXX + LD A,D + OR A + RET Z +L23D9: JP DATMISERR + +L23DC: LD A,D + OR A + JR NZ,L23D9 ; (-007H) + POP IY + PUSH HL + LD HL,(04E94H) + LD BC,0FFFBH + LD E,L + LD D,H + ADD HL,BC + LD (04E94H),HL + EX DE,HL + LD BC,L23F9 + PUSH BC + JP (IY) + +L23F6: CALL L192C +L23F9: POP HL +L23FA: LD BC,00005H + LD D,B + LD E,B + LD A,(HL) + RET + +L2401: INC HL +L2402: CALL SKIPSPACE + CP 02BH + JR Z,L2425 ; (+01cH) + CP 02DH + JR NZ,L2426 ; (+019H) + CALL L2425 +L2410: EXX + LD HL,(04E94H) + PUSH HL + LD BC,00004H + ADD HL,BC + LD A,(HL) + POP HL + OR A + JR Z,L2422 ; (+004H) + LD A,(HL) + ADD A,080H + LD (HL),A +L2422: EXX + LD A,(HL) + RET + +L2425: INC HL +L2426: CALL L2640 + JR NC,L2447 ; (+01cH) + LD A,046H + CP E + JR NZ,L2436 ; (+006H) + LD A,04EH + CP D + JP Z,L24F0 +L2436: CALL L24B2 + PUSH HL + LD A,B + OR A + JR Z,L23F6 ; (-048H) + EX DE,HL + LD B,000H + CALL L1A0E + POP HL + LD A,(HL) + RET + +L2447: CP 080H + JR C,L2481 ; (+036H) + CP PRTD + JR Z,L24A8 ; (+059H) + CP 0C0H + JR C,L2472 ; (+01fH) + SUB 0C0H + PUSH AF + CALL L2332 + CALL L1926 + CALL MATCHCHR + DB 029H + POP AF + PUSH HL + LD HL,L23F9 + PUSH HL + LD HL,(04E94H) + EX DE,HL + LD HL,L26DB + PUSH HL + LD C,A + JP L1B95 + +L2472: SUB 0A0H + JR C,L248F ; (+019H) + LD C,A + CALL INCSKIPSPCE + PUSH HL + LD HL,L26B3 + JP L1B95 + +L2481: CP 028H + JR Z,L2492 ; (+00dH) + CP 022H + JP Z,L19F3 + CALL L1A97 + JR Z,L249E ; (+00fH) +L248F: JP SYNTAXERR + +L2492: LD BC,MONIT + CALL L185F + CALL L2292 + JP L2712 + +L249E: LD DE,(04E94H) + CALL L3670 + JP L23FA + +L24A8: CALL INCSKIPSPCE + PUSH HL + LD DE,L2A97 + JP L23F6 + +L24B2: LD A,(HL) + CP 024H + JP Z,L256F + CP 028H + JP Z,L25FE +L24BD: PUSH HL + LD HL,(04E8AH) + LD BC,00005H +L24C4: LD A,(HL) + CP E + INC HL + JR NZ,L24CD ; (+004H) + LD A,(HL) + CP D + JR Z,L24EB ; (+01eH) +L24CD: OR A + JR Z,L24D4 ; (+004H) + INC HL + ADD HL,BC + JR L24C4 ; (-010H) + +L24D4: LD C,007H + DEC HL + PUSH DE + EX DE,HL + LD HL,L2A8D + DEC HL + DEC HL + CALL L18A2 + CALL L19C3 + EX DE,HL + POP DE + LD (HL),E + INC HL + LD (HL),D + LD C,005H +L24EB: INC HL + EX DE,HL + POP HL + LD A,(HL) + RET + +L24F0: LD A,(HL) + SUB 041H + CP 01AH + JP NC,SYNTAXERR + LD E,(HL) + INC HL + CALL MATCHCHR + DB 028H + PUSH DE + CALL L2333 + CALL L1926 + CALL L2712 + POP DE + PUSH HL + LD HL,(04E84H) +L250D: LD A,(HL) + OR A + JP Z,UNDEFFNERR + CP E + JR Z,L251C ; (+007H) + INC HL + INC HL + CALL L1745 + JR L250D ; (-00fH) + +L251C: INC HL + LD E,(HL) + INC HL + PUSH HL + PUSH DE + LD D,020H + CALL L24BD + POP HL + PUSH DE + PUSH HL + LD HL,(04E96H) + LD DE,04E9CH + CALL L1773 + JP Z,FUNCERR + LD BC,0FFFAH + ADD HL,BC + LD (04E96H),HL + POP DE + LD (HL),E + INC HL + POP DE + LD BC,00005H + EX DE,HL + CALL L18A5 + EX DE,HL + LD HL,(04E94H) + CALL L18A5 + POP HL + CALL L2333 + CALL L1926 + CALL L193B + JP NZ,SYNTAXERR + LD HL,(04E96H) + LD E,(HL) + INC HL + LD D,020H + CALL L24BD + CALL L18A5 + ADD HL,BC + LD (04E96H),HL + JP L23F9 + +L256F: CALL INCSKIPSPCE + CP 028H + JP Z,L25F9 + PUSH HL + LD HL,04954H + XOR A + SBC HL,DE + JR Z,L25B2 ; (+032H) + EX DE,HL + LD (L18D8),HL + LD HL,(04E90H) +L2587: CALL L18CE + SUB (HL) + DEC H + JR Z,L25AA ; (+01cH) + LD B,000H + LD C,(HL) + ADD HL,BC + INC HL + INC HL + JR L2587 ; (-00fH) + + LD BC,00004H + EX DE,HL + LD HL,L18D8 + CALL L18A2 + CALL L19C3 + EX DE,HL + ADD HL,BC + DEC HL + LD (HL),00DH + DEC HL + LD (HL),B +L25AA: LD C,(HL) + INC HL + LD B,001H + EX DE,HL + POP HL + LD A,(HL) + RET + +L25B2: CALL TIMRD + EX DE,HL + OR A + JR Z,L25BB ; (+002H) + LD A,00CH +L25BB: EXX + LD HL,L1DF5 + PUSH HL + EXX + LD DE,0F1F0H + CALL L25D9 + LD DE,0FFC4H + CALL L25D8 + LD A,L + CALL L25E2 + POP DE + LD BC,00106H + POP HL + LD A,(HL) + RET + +L25D8: XOR A +L25D9: ADD HL,DE + JR NC,L25DF ; (+003H) + INC A + JR L25D9 ; (-006H) + +L25DF: OR A + SBC HL,DE +L25E2: LD BC,L30F6 +L25E5: ADD A,C + JR NC,L25EB ; (+003H) + INC B + JR L25E5 ; (-006H) + +L25EB: ADD A,03AH + EX AF,AF' + LD A,B + EXX + LD (HL),A + INC HL + EX AF,AF' + LD (HL),A + INC HL + LD (HL),00DH + EXX + RET + +L25F9: LD BC,00100H + JR L2601 ; (+003H) + +L25FE: LD BC,MONIT +L2601: INC HL + CALL L2107 + JP Z,ILDATERR + PUSH HL + LD L,C + LD H,000H + LD C,E + LD E,D + LD B,H + LD D,H + PUSH BC + INC HL + CALL L17CF + POP HL + ADD HL,DE + EX DE,HL + LD A,(L2104) + OR A + JR NZ,L262B ; (+00dH) + LD HL,00005H + CALL L17CF + POP HL + ADD HL,DE + LD BC,00005H + JR L263A ; (+00fH) + +L262B: POP HL + LD B,000H +L262E: LD C,(HL) + INC HL + LD A,D + OR E + JR Z,L2639 ; (+005H) + ADD HL,BC + INC HL + DEC DE + JR L262E ; (-00bH) + +L2639: INC B +L263A: EX DE,HL + LD HL,(L2102) + LD A,(HL) + RET + +L2640: CALL SKIPSPACE + LD BC,L411A + SUB B + CP C + LD A,(HL) + RET NC + LD E,A + LD D,020H +L264D: INC HL + LD A,(HL) + CP D + JR Z,L264D ; (-005H) + SUB B + CP C + JR C,L265A ; (+004H) + SUB 0EFH + CP 00AH +L265A: LD A,(HL) + CCF + RET C + LD D,A + CP 04EH + JR NZ,L2667 ; (+005H) + LD A,046H + CP E + JR Z,L267A ; (+013H) +L2667: INC HL + LD A,(HL) + CP 020H + JR Z,L2667 ; (-006H) + SUB B + CP C + JR C,L2667 ; (-00aH) + SUB 0EFH + CP 00AH + JR C,L2667 ; (-010H) +L2677: LD A,(HL) + SCF + RET + +L267A: CALL INCSKIPSPCE + SCF + RET + +L267F: CALL L2640 + JR NC,L268E ; (+00aH) + LD A,046H + CP E + JR NZ,L268C ; (+003H) + LD A,04EH + CP D +L268C: JR NZ,L2677 ; (-017H) +L268E: JP SYNTAXERR + +L2691: DW L3B62 + DW L3B62 + DW L3B87 + DW L3B87 + DW L3B8B + DW L3B8B + DW L3B7F + DW L3B73 + DW L3B77 + DW SYNTAXERR + DW SYNTAXERR + DW SYNTAXERR + DW L3405 + DW L3403 + DW L3500 + DW L35D0 + DW L4159 +L26B3: DW L26F3 + DW L270F + DW L273E + DW L2765 + DW L2772 + DW L277F + DW L27B4 + DW L279A + DW L27F9 + DW L2801 + DW L2804 + DW L2895 + DW SYNTAXERR + DW SYNTAXERR + DW SYNTAXERR + DW L2824 + DW SYNTAXERR + DW L2841 + DW L287C + DW SYNTAXERR +L26DB: DW L3B98 + DW L3C16 + DW L3D05 + DW L3D14 + DW L4076 + DW L3E03 + DW L3A86 + DW L4064 + DW L3F35 + DW L289D + DW L28A2 + DW L3D3F +L26F3: DB 0CDH + DB 033H + DB 023H + DB 0CDH + DB 094H + DB 02EH +L26F9: PUSH DE + CALL GETNUM + CALL L2712 + EX (SP),HL + PUSH HL + EX DE,HL + CALL L190B + LD A,C + SUB L + JR C,L273A ; (+030H) + PUSH HL + LD C,A + ADD HL,DE + JR L2732 ; (+023H) + +L270F: DB 0CDH +L2710: DB 017H + DB 027H +L2712: CALL MATCHCHR + DB 029H + RET + + CALL L2333 + CALL L2E94 + PUSH DE + CALL GETNUM + JR L2724 ; (+001H) + +L2723: PUSH BC +L2724: EX (SP),HL + PUSH HL + EX DE,HL + CALL L190B + LD A,C + SUB L + JR C,L273A ; (+00cH) + PUSH HL + LD C,A + LD L,E + LD H,D +L2732: EX DE,HL + CALL L19E7 + POP BC + DEC HL + LD (HL),C + INC HL +L273A: POP DE + POP HL + LD A,(HL) + RET + +L273E: CALL L2333 + CALL L2E94 + PUSH DE + PUSH BC + CALL GETNUM + POP BC + LD A,E + OR A + JP Z,ILDATERR + LD A,C + SUB E + JR NC,L2755 ; (+002H) + LD A,PRTD +L2755: INC A + LD E,A + POP BC + CALL L2723 + CALL L2E94 + CP 02DH + JR NZ,L26F9 ; (-069H) + INC HL + JR L2712 ; (-053H) + +L2765: CALL L2333 + CALL L190B + CALL L2712 + PUSH HL + LD A,C + JR L27C4 ; (+052H) + +L2772: CALL L299F + CALL L2712 + LD A,E + LD BC,00001H + JP L280F + +L277F: CALL L2333 + CALL L1926 + CALL L2712 + PUSH HL + LD HL,(04E94H) + LD DE,04AB3H + PUSH DE + CALL L38BB + POP HL + CALL L19F3 + POP HL + LD A,(HL) + RET + +L279A: CALL L2333 + CALL L190B + CALL L2712 + PUSH HL + EX DE,HL + JR L27AA ; (+003H) + + LD HL,L27B2 +L27AA: CALL L1A75 + AND A + DAA + POP HL + LD A,(HL) + RET + +L27B2: DB 030H + DB 00DH +L27B4: CALL L2333 + CALL L190B + CALL L2712 + LD A,C + OR A + JP Z,ILDATERR +L27C2: LD A,(DE) + PUSH HL +L27C4: LD E,A + LD D,000H +L27C7: CALL L27CD + POP HL + LD A,(HL) + RET + +L27CD: LD B,080H + LD A,D + OR E + JR Z,L27E7 ; (+014H) + LD B,0D0H + LD A,D + OR A + JR NZ,L27DE ; (+005H) + LD B,0C8H + LD D,E + LD E,000H +L27DE: EX DE,HL +L27DF: BIT 7,H + JR NZ,L27E6 ; (+003H) + ADD HL,HL + DJNZ L27DF ; (-007H) +L27E6: EX DE,HL +L27E7: LD HL,(04E94H) + LD (HL),B + INC HL + CALL L19BA + LD (HL),E + INC HL + LD (HL),D + LD BC,00005H + LD DE,MONIT + RET + +L27F9: CALL L299F + CALL L2712 + JR L27C2 ; (-03fH) + +L2801: JP SYNTAXERR + +L2804: CALL GETNUM + CALL L2712 + LD A,020H + LD C,E + LD B,000H +L280F: PUSH HL + PUSH AF + CALL L1A1E + POP AF + PUSH DE + PUSH BC + LD B,C + INC B + JR L281D ; (+002H) + +L281B: LD (HL),A + INC HL +L281D: DJNZ L281B ; (-004H) + POP BC + POP DE + POP HL + LD A,(HL) + RET + +L2824: CALL L2333 + CALL L2E94 + PUSH DE + CALL GETNUM + CALL L2712 + EX (SP),HL + PUSH DE + EX DE,HL + CALL L190B + LD A,C + OR A + JP Z,ILDATERR + LD A,(DE) + POP BC + POP HL + JR L280F ; (-032H) + +L2841: CALL L1E69 + LD A,E + CP 028H +L2847: JP NC,ILDATERR + PUSH AF + CALL MATCHCHR + DB 02CH + CALL GETNUM + CALL MATCHCHR + DB 029H + LD A,E + CP 019H + JR NC,L2847 ; (-014H) + POP AF + LD C,A + LD B,E + INC B + PUSH HL + LD HL,(PAGETP) + LD D,000H + LD E,028H + XOR A + SBC HL,DE +L286A: ADD HL,DE + DJNZ L286A ; (-003H) + ADD HL,BC + CALL L2878 + POP HL + LD BC,00001H + JP L280F + +L2878: LD A,(HL) + JP ?DACN + +L287C: CALL EXECNOTCHR + DB 056H + DW L288C + LD A,(01172H) +L2885: LD D,000H + LD E,A + PUSH HL + JP L27C7 + +L288C: CALL MATCHCHR + DB 048H + LD A,(DSPXY) + JR L2885 ; (-010H) + +L2895: PUSH HL + CALL L184A + EX DE,HL + JP L27C7 + +L289D: LD A,(DE) + OR 080H + LD (DE),A + RET + +L28A2: LD A,(DE) + LD DE,L192C + PUSH DE + LD DE,L2A92 + OR A + RET P + LD DE,L2A88 + CP 080H + RET NZ + LD DE,L2A8D + RET + +CMDMON: JP MONIT + +CMDCURSOR: CALL GETNUM + LD A,E + CP 028H +L28BF: JP NC,ILDATERR + PUSH AF + CALL MATCHCHR + DB 02CH + CALL GETNUM + LD A,E + CP 019H + JR NC,L28BF ; (-010H) + PUSH HL + LD HL,(DSPXY) + LD A,E + SUB H + LD H,A + LD A,(MGPNT) + JP M,L28F8 + ADD A,H + SUB 032H + JR NC,L28E3 ; (+002H) + ADD A,032H +L28E3: LD (MGPNT),A + EX DE,HL + LD H,L + POP DE + POP AF + LD L,A + LD (DSPXY),HL + NOP + NOP + NOP + LD (DPRNT),A + EX DE,HL + JP L1B38 + +L28F8: ADD A,H + JP P,L28E3 + ADD A,032H + JR L28E3 ; (-01dH) + + NOP + NOP +CMDGET: CALL L267F + CALL L24B2 + LD (05051H),HL + CALL L1D9A + CALL GETKY + PUSH AF + LD A,(04905H) + OR A + JR Z,L292D ; (+015H) + POP AF + LD BC,MONIT + OR A + JR Z,L2920 ; (+001H) + INC BC +L2920: CALL L280F +L2923: CALL L1D95 + CALL L1DA5 + DW DATMISERR + JR L2998 ; (+06bH) + +L292D: POP AF + LD DE,MONIT + CALL L2939 +L2934: CALL L27CD + JR L2923 ; (-016H) + +L2939: OR A + RET Z + SUB 030H + CP 00AH + RET NC + LD E,A + RET + +CMDUSRN: CALL L299F + PUSH DE + CALL EXECNOTCHR + DB 02CH + DW L2959 + CALL L267F + CALL L24B2 + LD A,B + OR A + JP Z,DATMISERR + LD B,000H +L2959: CALL L2712 + LD (05051H),HL + CALL L13FA + LD HL,L1B35 + EX (SP),HL + JP (HL) + +CMDLIMIT: LD DE,L299B + CALL L14C7 + JR NZ,L2977 ; (+008H) + LD (05051H),HL + LD HL,(04908H) + JR L2994 ; (+01dH) + +L2977: CALL L299F + LD (05051H),HL + LD HL,(04908H) + CALL L1773 + JP C,ILDATERR + LD HL,(04E94H) + LD BC,000C8H + ADD HL,BC + CALL L1773 + JP NC,BADWRERR + EX DE,HL +L2994: LD (0490AH),HL + LD SP,HL +L2998: JP L1B35 + +L299B: LD C,L + LD B,C + RET C + NOP +L299F: CALL EXECNOTCHR + DB 024H + DW L29CB + LD DE,MONIT +L29A8: CALL L176A + JR NC,L29C2 ; (+015H) +L29AD: AND 00FH + LD C,A + LD B,000H + LD A,D + AND 0F0H + JP NZ,ILDATERR + EX DE,HL + ADD HL,HL + ADD HL,HL + ADD HL,HL + ADD HL,HL + ADD HL,BC + EX DE,HL + INC HL + JR L29A8 ; (-01aH) + +L29C2: SUB 041H + CP 006H + RET NC + ADD A,00AH + JR L29AD ; (-01eH) + +L29CB: JP L1E69 + +CMDCONT: CALL L1AA7 + LD A,(L1463) + OR A + JP Z,CONTERR + PUSH AF + XOR A + CALL L29EB + POP AF + LD HL,(05051H) + OR A + JP M,L2C56 + DEC A + JR Z,L2998 ; (-050H) + JP L1B5F + +L29EB: LD (L1463),A + LD DE,L1464 + LD BC,LETNL + LD HL,0504DH + OR A + JR NZ,L29FB ; (+001H) + EX DE,HL +L29FB: LDIR + RET + +CMDINP: CALL GETNUM + CALL L2E94 + LD A,E + LD (L2A15),A + CALL L267F + CALL L24B2 + LD (05051H),HL + CALL L1D9A + DB 0DBH +L2A15: DB 0FFH + LD E,A + LD D,000H + JP L2934 + +CMDOUT: CALL GETNUM + CALL L2E94 + LD A,E + LD (L2A2B),A + CALL GETNUM + LD A,E + DB 0D3H +L2A2B: DB 0FFH +L2A2C: JP L1B38 + +CMDAUTO: CALL L1AA7 + CALL L193B + JR Z,L2A5F ; (+028H) + CALL EXECNOTCHR + DB 02CH + DW L2A3F + JR L2A71 ; (+032H) + +L2A3F: CALL L2A7A + LD (02A84H),DE + CALL L193B + JR Z,L2A6C ; (+021H) + CALL EXECNOTCHR + DB 02CH + DW SYNTAXERR +L2A51: CALL L2A7A + LD (02A86H),DE +L2A58: LD A,001H + LD (L2A83),A + JR L2A2C ; (-033H) + +L2A5F: LD DE,0000AH + LD (02A84H),DE +L2A66: LD (02A86H),DE + JR L2A58 ; (-014H) + +L2A6C: LD DE,0000AH + JR L2A66 ; (-00bH) + +L2A71: LD DE,0000AH + LD (02A84H),DE + JR L2A51 ; (-029H) + +L2A7A: CALL L1E69 + LD A,D + OR E + RET NZ + JP SYNTAXERR + +L2A83: DB 000H +L2A84: DB 00AH + DB 000H + DB 00AH + DB 000H +L2A88: DB 0C1H + DB 000H + DB 000H + DB 000H + DB 080H +L2A8D: DB 080H + DB 000H + DB 000H + DB 000H + DB 000H +L2A92: DB 041H + DB 000H + DB 000H + DB 000H + DB 080H +L2A97: DB 0C2H + DB 0A1H + DB 0DAH + DB 00FH + DB 0C9H + AND 00FH + ADD A,030H + CP 03AH + RET C + ADD A,007H + RET + +CMDSET: LD A,001H + JR L2AAB ; (+001H) + +CMDRESET: XOR A +L2AAB: PUSH AF + CALL GETNUM + PUSH DE + CALL MATCHCHR + DB 02CH + CALL GETNUM + LD (05051H),HL + LD A,E +L2ABB: SUB 032H + JR NC,L2ABB ; (-004H) + ADD A,032H + LD E,A + POP BC + LD A,C +L2AC4: SUB 050H + JR NC,L2AC4 ; (-004H) + ADD A,050H + LD C,A + XOR A + SRL C + JR NC,L2ADE ; (+00eH) + SRL E + JR NC,L2AD8 ; (+004H) + ADD A,004H +L2AD6: ADD A,002H +L2AD8: ADD A,001H +L2ADA: ADD A,001H + JR L2AE4 ; (+006H) + +L2ADE: SRL E + JR NC,L2ADA ; (-008H) + JR L2AD6 ; (-00eH) + +L2AE4: PUSH AF + LD HL,(PAGETP) + LD A,028H +L2AEA: ADD HL,DE + DEC A + JR NZ,L2AEA ; (-004H) + ADD HL,BC + RES 3,H + LD A,(HL) + CP 0F0H + JR NC,L2AF8 ; (+002H) + LD A,0F0H +L2AF8: POP BC + LD C,A + POP AF + OR A + LD A,B + JR Z,L2B02 ; (+003H) + OR C + JR L2B04 ; (+002H) + +L2B02: CPL + AND C +L2B04: CP 0F0H + JR NZ,L2B09 ; (+001H) + XOR A +L2B09: LD (HL),A + JP L1B35 + +CMDPRINT: CALL EXECNOTCHR ; Check to see if a stream, ie. /T = Tape is given. The 02FH below is / and the function after is called if it doesnt match /. + DB 02FH + DW L2B18 + CALL L2E9B + JR L2B1E ; (+006H) + +L2B18: CALL L2DBA + CALL L2E94 +L2B1E: CALL L193B + JR NZ,L2B2F ; (+00cH) + LD (05051H),HL +L2B26: LD HL,L2BEF + CALL L2BE3 + JP L1B35 + +L2B2F: CALL EXECNOTCHR + DB 03BH + DW L2B35 +L2B35: LD BC,L2B4D + PUSH BC + CP 02CH + RET NZ + INC HL + LD A,(04DD4H) + OR A + RET P + AND 07FH + JP Z,PRNTT + CP 002H + RET NZ + JP L326E + +L2B4D: CALL L193B + LD (05051H),HL + JP NZ,L2B60 + LD A,(04DD4H) + OR A + JP M,L1B35 + JP L2B26 + +L2B60: CP 03BH + JR Z,L2B66 ; (+002H) + CP 02CH +L2B66: JP Z,L2B2F + CALL EXECNOTCHR + DB 0A9H + DW L2B9A + CALL GETNUM + CALL MATCHCHR + DB 029H + LD D,013H + LD A,(DPRNT) + LD B,A + LD A,(04DD4H) + CP 080H + JR Z,L2B8D ; (+00aH) + LD D,020H + CP 082H + JR NZ,L2BBD ; (+034H) + LD A,(L32D3) + LD B,A +L2B8D: LD A,E + SUB B + JR C,L2B2F ; (-062H) + LD C,A + LD B,000H + LD A,D + CALL L280F + JR L2B9D ; (+003H) + +L2B9A: CALL L2293 +L2B9D: PUSH HL + LD HL,LINEBUFR + LD A,D + OR A + CALL Z,L2BC0 + CALL NZ,L2BD0 + LD HL,L2BF7 + CALL L2BE3 + LD HL,L2B1E + EX (SP),HL + CALL L193B + RET Z + CP 03BH + RET Z + CP 02CH + RET Z +L2BBD: JP SYNTAXERR + +L2BC0: PUSH AF + PUSH HL + EX DE,HL + LD HL,(04E94H) + CALL L38BB + POP HL + CALL L18FD + JP L2BD9 + +L2BD0: PUSH AF + CALL L190B + EX DE,HL + CALL L18A5 + EX DE,HL +L2BD9: DEC HL + LD (HL),C + INC HL + PUSH HL + ADD HL,BC + LD (HL),00DH + POP DE + POP AF +L2BE2: RET + +L2BE3: LD A,(04DD4H) + ADD A,080H + CALL L13FA + CALL L2E12 + JP (HL) + +L2BEF: LD B,000H + XOR E + INC DE + AND A + LD SP,L2BE2 +L2BF7: DEC D + NOP + XOR E + INC DE + OR H + LD SP,L3064 +CMDINPUT: CALL L1AAF + CALL EXECNOTCHR + DB 02FH + DW L2C0E + CALL L2E9B + JP L2C62 + +L2C0E: CALL L2DBA + CALL SKIPSPACE + CP 022H + LD DE,L2C5F + JR NZ,L2C25 ; (+00aH) + CALL L2333 + CALL MATCHCHR + DB 03BH + CALL L190B +L2C25: LD (05051H),HL +L2C28: CALL MSG + LD A,(DPRNT) + LD B,A + LD L,A + LD H,000H + LD DE,LINEBUFR + ADD HL,DE + LD (L2C8C),HL + CALL GETL + EX DE,HL + LD A,(HL) + CP 01BH + JR NZ,L2C4A ; (+008H) + LD A,080H + CALL L29EB + JP L1438 + +L2C4A: INC B + LD A,00DH +L2C4D: CP (HL) + JR Z,L2C56 ; (+006H) + INC HL + DJNZ L2C4D ; (-006H) + JP L2C8E + +L2C56: CALL NL + LD DE,L2C5F + JP L2C28 + +L2C5F: CCF + JR NZ,L2C6F ; (+00dH) +L2C62: CALL L2E94 + LD (05051H),HL +L2C68: LD DE,LINEBUFR + PUSH DE + LD HL,L2C84 +L2C6F: CALL L2BE3 + POP HL + DEC HL + LD (HL),C + INC HL + LD A,B + OR A + JP NZ,STRLENERR + CALL L1A0E + LD HL,L2C68 + JP L2CC8 + +L2C84: XOR E + INC DE + XOR E + INC DE + XOR E + INC DE + ADC A,A + DB 030H +L2C8C: DB 00FH + DB 049H +L2C8E: LD A,(04DD4H) + CP 081H + JP Z,L2D1D + LD HL,(L2C8C) + CALL L18FD + LD DE,LINEBUFR + PUSH DE + INC BC + LDIR + POP HL + LD (L2C8C),HL + CALL SKIPSPACE + CP 00DH + JP Z,L2C56 + CALL EXECNOTCHR + DB 02CH + DW L2CBF + PUSH HL + LD DE,L2D11 + CALL L19F3 + POP HL + JR L2CC2 ; (+003H) + +L2CBF: CALL L19F3 +L2CC2: LD (L2C8C),HL + LD HL,L2C8E +L2CC8: PUSH HL + CALL L1D95 + LD HL,(05051H) + CALL L267F + CALL L24B2 + LD (05051H),HL + CALL L1D9A +L2CDB: CALL L1DA5 + DW L2CF4 + LD HL,(05051H) + CALL L193B + JR NZ,L2CEC ; (+004H) + POP AF + JP L1B35 + +L2CEC: CALL MATCHCHR + DB 02CH + LD (05051H),HL + RET + +L2CF4: LD DE,(04902H) + CALL L190B + EX DE,HL + CALL EXECNOTCHR + DB 00DH + DW L2D05 + LD HL,L2D10 +L2D05: CALL L1A75 + OR H + INC DE + CALL L1D95 + JP L2CDB + +L2D10: DB 030H +L2D11: DB 00DH +CMDREAD: LD (05051H),HL + LD A,081H + LD (04DD4H),A + CALL L1AAF +L2D1D: LD A,(05059H) + OR A + CALL Z,L2D43 + LD HL,(0505AH) + CALL L193B + JR NZ,L2D32 ; (+006H) + CALL L2D6B + JP L2D1D + +L2D32: CALL L19F3 + CALL L2E94 + LD (0505AH),HL + LD HL,LINEBUFR + LD (HL),00DH + JP L2CC2 + +L2D43: LD HL,0505CH +L2D46: XOR A + LD (05059H),A +L2D4A: LD A,(HL) + INC HL + OR (HL) + INC HL + JP Z,READDATAERR + INC HL + INC HL +L2D53: CALL EXECNOTCHR + DB 080H + DW L2D68 + CALL EXECNOTCHR + DB 081H + DW L2D68 + LD (0505AH),HL + LD A,001H + LD (05059H),A + RET + +L2D68: CALL L174F +L2D6B: INC HL + CP 03AH + JP Z,L2D53 + JP L2D4A + +L2D74: DB 001H +CMDLOAD: CALL EXECNOTCHR + DB 02FH + DW L2EDA + CALL MATCHCHR + DB 054H + JP L2EDA + +CMDSAVE: CALL L1AA7 + CALL EXECNOTCHR + DB 02FH + DW L2FE0 + CALL MATCHCHR + DB 054H + JP L2FE0 + +CMDROPEN: CALL EXECNOTCHR + DB 02FH + DW L311E + CALL MATCHCHR + DB 054H + JP L311E + +CMDWOPEN: CALL EXECNOTCHR + DB 02FH + DW L30E5 + CALL MATCHCHR + DB 054H + JP L30E5 + + NOP +CMDCLOSE: CALL EXECNOTCHR + DB 02FH + DW L3171 + CALL MATCHCHR + DB 054H + JP L3171 + +L2DBA: LD A,080H + LD (04DD4H),A + OR A + RET + +L2DC1: LD HL,04DF2H + LD DE,NL + LD B,00AH +L2DC9: CP (HL) + JR Z,L2DD2 ; (+006H) + ADD HL,DE + DJNZ L2DC9 ; (-006H) + JP L177A + +L2DD2: LD A,00AH + SUB B + JP L1784 + +L2DD8: LD A,B + OR C + JR Z,L2DDE ; (+002H) + INC BC + INC BC +L2DDE: LD E,(HL) + INC HL + LD D,(HL) + DEC HL + PUSH HL + LD H,B + LD L,C + CALL L1773 + POP HL + JR Z,L2DF7 ; (+00cH) + EX DE,HL + PUSH BC + LD C,L + LD B,H + CALL L19E7 + POP BC + CALL L19C0 + EX DE,HL +L2DF7: LD D,H + LD E,L + LD A,C + OR B + RET Z + LD (HL),C + INC HL + LD (HL),B + DEC HL + DEC BC + DEC BC + RET + + CALL L2DD8 + INC HL + INC HL + RET + +L2E09: PUSH BC + LD BC,MONIT + CALL L2DD8 + POP BC + RET + +L2E12: ADD A,A + ADD A,L + LD L,A + JR NC,L2E18 ; (+001H) + INC H +L2E18: LD A,(HL) + INC HL + LD H,(HL) + LD L,A + RET + +L2E1D: LD DE,CMTFNAME ; Compare loaded filename against name given by user. + PUSH HL + INC HL + LD B,010H +L2E24: LD A,(DE) + CP (HL) + JR NZ,L2E31 ; (+009H) +L2E28: INC HL + INC DE + CP 00DH + JR Z,L2E31 ; (+003H) + DEC B + JR NZ,L2E24 ; (-00dH) +L2E31: POP HL + RET + +CMTBUF: DB 002H +CMTFNAME: DB 00DH + DB 00DH + DB 00DH + DB 00DH + DB 00DH + DB 00DH + DB 00DH + DB 00DH + DB 00DH + DB 00DH + DB 00DH + DB 00DH + DB 00DH + DB 00DH + DB 00DH + DB 00DH + DB 00DH + DB 000H + DB 000H + DB 000H + DB 000H + DB 000H + DB 000H + DB 000H + DB 000H + DB 000H + DB 000H + DB 000H + DB 000H + DB 000H + DB 000H + PUSH HL + LD HL,GETL + LD (04DD6H),HL + LD HL,04DD8H + LD B,005H +L2E5F: LD (HL),000H + INC HL + DJNZ L2E5F ; (-005H) + LD HL,CMTFNAME + LD B,011H +L2E69: LD (HL),00DH + INC HL + DJNZ L2E69 ; (-005H) + LD B,00EH +L2E70: LD (HL),000H + INC HL + DJNZ L2E70 ; (-005H) + POP HL + CALL L2E94 + CALL L2333 + LD A,D + OR A + JP Z,UNKNWNERR + LD A,C + DEC A + CP 010H + JP NC,UNKNWNERR + PUSH HL + CALL L190B + LD HL,CMTFNAME + EX DE,HL + LDIR + POP HL + RET + +L2E94: CALL EXECNOTCHR + DB 02CH + DW L2E9A +L2E9A: RET + +L2E9B: LD B,000H + LD DE,L2EB0 + CALL L14C9 + JP NZ,SYNTAXERR + CALL L2E94 + LD A,B + ADD A,082H + LD (04DD4H),A + RET + +L2EB0: DB 0D0H + DB 0D4H + DB 000H +CMDVERIFY: CALL L1AA7 + XOR A + JR L2EDC ; (+023H) + +L2EB9: LD A,(ATRB) + CP 002H + JR NZ,L2EE6 ; (+026H) + CALL L2F62 + CALL L1B1B + CALL ?VRFY + PUSH AF + CALL L1AC7 + POP AF + JP C,L30B3 + LD DE,L2FDD + CALL MSGNL + JP L1B35 + +L2EDA: LD A,001H +L2EDC: LD (L2D74),A + LD BC,L2EE6 + PUSH BC + JP L2FE4 + +L2EE6: CALL ?RDI + JP C,L30B3 + CALL L2F67 + LD HL,ATRB + LD A,(HL) + OR A + JR Z,L2EE6 ; (-010H) + CP 004H + JR NC,L2EE6 ; (-014H) + LD DE,CMTFNAME + LD A,(DE) + CP 00DH + JR Z,L2F07 ; (+005H) + CALL L2E1D + JR NZ,L2EE6 ; (-021H) +L2F07: LD A,(L2D74) + OR A + JR Z,L2EB9 ; (-054H) + LD A,(ATRB) + CP 001H + JP Z,L2F8E + CP 002H + JR NZ,L2EE6 ; (-033H) + CALL L1944 + LD HL,(SIZE) + DEC HL + DEC HL + LD C,L + LD B,H + LD DE,0505CH + CALL L1888 + CALL L19C3 + LD (DTADR),DE + CALL L2F6C + CALL ?RDD + JR C,L2F3E ; (+006H) + CALL L1ABF + JP L1B35 + +L2F3E: PUSH AF + CALL L2F4B + POP AF + PUSH AF + CALL L1944 + POP AF + JP L30B3 + +L2F4B: LD DE,0505EH + LD HL,04E4EH + XOR A + SBC HL,DE + RET Z + LD C,L + LD B,H + DEC DE + DEC DE + CALL L1873 + CALL L1762 + JP L19C3 + +L2F62: LD DE,L2FD2 + JR L2F6F ; (+008H) + +L2F67: LD DE,L2FC2 + JR L2F6F ; (+003H) + +L2F6C: LD DE,L2FC9 +L2F6F: CALL MSGNL + LD DE,NAME + LD A,(DE) + CP 00DH + RET Z + PUSH DE + CALL L2F86 + POP DE + LD A,00DH + LD (01101H),A + CALL MSGX +L2F86: LD DE,L2F8C + JP MSGX + +L2F8C: DB 022H + DB 00DH +L2F8E: LD HL,(DTADR) + EX DE,HL + LD HL,(0490AH) + DEC HL + CALL L1773 + JR NC,L2FB6 ; (+01bH) + LD HL,(SIZE) + ADD HL,DE + JR C,L2FBC ; (+01bH) + EX DE,HL + LD HL,(04908H) + CALL L1773 + JR C,L2FBC ; (+012H) + CALL L2F6C + CALL ?RDD + JP C,L30B3 + JP L1B35 + +L2FB6: CALL MSTOP + JP BADWRERR + +L2FBC: CALL MSTOP + JP MEMERR + +L2FC2: DB "F",0B7H,0A5H,0B0H,09CH," " + DB 00DH +L2FC9: DB "L",0B7H,0A1H,09CH,0A6H,0B0H,097H," " + DB 00DH +L2FD2: DB "V",092H,09DH,0A6H,0AAH,0BDH,0A6H,0B0H,097H," " + DB 00DH +L2FDD: DB "OK" + DB 00DH +L2FE0: LD BC,L3038 + PUSH BC +L2FE4: CALL EXECNOTCHR + DB 02CH + DW L2FEA +L2FEA: PUSH HL + LD HL,CMTBUF + LD (HL),002H +L2FF0: LD B,011H +L2FF2: INC HL + LD (HL),00DH + DJNZ L2FF2 ; (-005H) + CALL L1459 + POP HL + CALL L193B + LD (05051H),HL + RET Z + CALL L2333 + CALL L193B + JP NZ,SYNTAXERR + LD (05051H),HL + LD A,D + OR A + JP Z,UNKNWNERR + CALL L190B + LD A,C + OR A + RET Z + CP 011H + JP NC,UNKNWNERR + EX DE,HL + LD DE,CMTFNAME + LDIR + RET + +L3025: LD DE,ATRB + LD HL,CMTBUF + LD BC,PRNT + LDIR + LD B,06EH +L3032: XOR A + LD (DE),A + INC DE + DJNZ L3032 ; (-005H) + RET + +L3038: CALL L3025 + LD HL,0505CH + LD (DTADR),HL + LD DE,0505CH + LD HL,(04E4EH) + XOR A + SBC HL,DE + LD (SIZE),HL + CALL ?WRI + JP C,L30B8 + CALL L1B1B + CALL ?WRD + PUSH AF + CALL L1ABF + POP AF + JP C,L30B8 + JP WARMSTRT + +L3064: CALL L1459 + LD A,(L30E2) + CP 001H + JR NZ,L309A ; (+02cH) + LD HL,(L30E3) +L3071: PUSH DE + LD DE,04DD3H + CALL L1773 + JR C,L3082 ; (+008H) + CALL ?WRD + JR C,L30B8 ; (+039H) + LD HL,04CD3H +L3082: POP DE + LD A,(DE) + LD (HL),A + INC HL + INC DE + CP 00DH + JR NZ,L3071 ; (-01aH) + LD (L30E3),HL + RET + + CALL L1459 + LD A,(L30E2) + PUSH DE + LD C,000H + CP 002H +L309A: JP NZ,OUTFILEERR + LD (L2D74),A + LD HL,(L30E3) +L30A3: PUSH DE + LD DE,04DD3H + CALL L1773 + JR C,L30BE ; (+012H) + PUSH BC + CALL ?RDD + POP BC + JR NC,L30BB ; (+008H) +L30B3: CP 002H + JP NZ,CHKSUMERR +L30B8: JP L1438 + +L30BB: LD HL,04CD3H +L30BE: LD A,(HL) + LD B,A + CP PRTD + JR NZ,L30CC ; (+008H) + LD A,(L2D74) + CP 002H + JP Z,OUTFILEERR +L30CC: XOR A + LD (L2D74),A + LD A,B + POP DE + LD (DE),A + INC HL + INC DE + INC C + CP 00DH + JR NZ,L30A3 ; (-037H) + DEC C + POP DE + LD (L30E3),HL + LD B,000H + RET + +L30E2: NOP +L30E3: NOP + NOP +L30E5: CALL L1AAF + LD A,(L30E2) + OR A + JP NZ,OPENERR + LD BC,L30FC + PUSH BC + PUSH HL + DB 021H + DB 033H +L30F6: DB 02EH + LD (HL),003H + JP L2FF0 + +L30FC: CALL L3025 + LD HL,00100H + LD (SIZE),HL + LD HL,04CD3H + LD (L30E3),HL + LD (DTADR),HL + CALL ?WRI +L3111: JR C,L30B8 ; (-05bH) + CALL MSTOP + LD A,001H + LD (L30E2),A +L311B: JP L1B35 + +L311E: CALL L1AAF + LD A,(L30E2) + OR A + JP NZ,OPENERR + LD BC,L313A + PUSH BC + LD A,002H + LD (L2D74),A + PUSH HL + LD HL,CMTBUF + LD (HL),004H + JP L2FF0 + +L313A: CALL ?RDI + JP C,L30B3 + LD HL,ATRB + LD A,(HL) + CP 003H + JR NZ,L313A ; (-00eH) + LD DE,CMTFNAME + LD A,(DE) + CP 00DH + JR Z,L3155 ; (+005H) + CALL L2E1D + JR NZ,L313A ; (-01bH) +L3155: LD A,002H + LD (L30E2),A + CALL MSTOP + LD HL,04CD3H + LD (DTADR),HL + LD HL,00100H + LD (SIZE),HL + LD HL,04DD3H + LD (L30E3),HL + JR L311B ; (-056H) + +L3171: CALL L1459 + LD A,(L30E2) + OR A + JR Z,L3195 ; (+01bH) + PUSH HL + DEC A + JR NZ,L3190 ; (+012H) + LD HL,(L30E3) + LD DE,04DD3H + CALL L1773 + JR NC,L3198 ; (+00fH) +L3189: LD (HL),PRTD + CALL ?WRD +L318E: JR C,L3111 ; (-07fH) +L3190: XOR A + LD (L30E2),A + POP HL +L3195: JP CMDREMDATA + +L3198: CALL ?WRD + JR C,L318E ; (-00fH) + LD HL,04CD3H + JR L3189 ; (-019H) + +L31A2: LD A,(L32D3) + OR A + RET Z +L31A7: CALL L32C2 + LD A,00DH + CALL L3291 + XOR A + LD (L32D3),A + RET + + PUSH BC + PUSH DE + LD A,(L32D3) + LD B,A +L31BA: LD A,(DE) + CP 00DH + JP Z,L3258 + CP 020H + CALL C,L31CC + CALL L3291 + INC B + INC DE + JR L31BA ; (-012H) + +L31CC: CP 005H + JR Z,L31F0 ; (+020H) + CP 006H + JR Z,L3200 ; (+02cH) + CP 010H + JR Z,L3221 ; (+049H) + CP 011H + JR Z,L31F9 ; (+01dH) + CP 012H + JR Z,L31F5 ; (+015H) + CP 013H + JR Z,L3226 ; (+042H) + CP 014H + JR Z,L322A ; (+042H) + CP 015H + JR Z,L3238 ; (+04cH) + POP AF + INC DE + JR L31BA ; (-036H) + +L31F0: LD A,00FH +L31F2: LD B,PRTD + RET + +L31F5: LD A,00BH + JR L31F2 ; (-007H) + +L31F9: LD A,009H + LD (L326D),A + JR L31F2 ; (-00eH) + +L3200: LD A,00CH + CALL L3291 + LD A,009H + CALL L3291 + LD A,009H + CALL L3291 + LD A,00BH + CALL L3291 + LD A,00AH + CALL L3291 + CALL L3267 + CALL L3291 + JR L31F0 ; (-031H) + +L3221: CALL L3267 + JR L31F2 ; (-034H) + +L3226: LD A,00CH + JR L31F2 ; (-038H) + +L322A: LD A,009H + CALL L3291 + LD A,009H + CALL L3291 + LD A,009H + JR L31F2 ; (-046H) + +L3238: LD A,009H + CALL L3291 + LD A,009H + CALL L3291 + LD A,00BH + JR L31F2 ; (-054H) + +L3246: PUSH BC + PUSH DE + LD A,(L32D3) + LD B,A +L324C: LD A,(DE) + CP 00DH + JR Z,L3258 ; (+007H) + CALL L3291 + INC DE + INC B + JR L324C ; (-00cH) + +L3258: LD A,B + CP 0A0H + JR C,L325F ; (+002H) + SUB 0A0H +L325F: LD (L32D3),A + POP DE + POP BC + JP L32C2 + +L3267: LD A,00AH + LD (L326D),A + RET + +L326D: LD A,(BC) +L326E: PUSH BC + PUSH DE + LD A,(L32D3) + LD B,A +L3274: LD A,020H + CALL L3291 + INC B + LD A,B +L327B: SUB 00AH + JR C,L3274 ; (-00bH) + JR NZ,L327B ; (-006H) + JP L3258 + +L3284: CALL L3291 + CALL L32A5 + IN A,(PRTC) + RRCA + RRCA + RET + +L328F: LD A,01BH +L3291: PUSH AF + CALL L32A5 + POP AF + OUT (PRTD),A + LD A,080H + OUT (PRTC),A + LD A,001H + CALL L32A6 + XOR A + OUT (PRTC),A + RET + +L32A5: XOR A +L32A6: PUSH BC + PUSH DE + LD C,A + LD B,00FH + LD DE,MONIT +L32AE: IN A,(PRTC) + AND 00DH + CP C + JR Z,L32BF ; (+00aH) + DEC DE + LD A,D + OR E + JR NZ,L32AE ; (-00cH) + DJNZ L32AE ; (-00eH) + JP PRTNRDYERR + +L32BF: POP DE + POP BC + RET + +L32C2: LD A,007H + CALL L3284 + JP NC,PRTPAPERERR + LD A,008H + CALL L3284 + RET C + JP PRTHWERR + +L32D3: NOP +CMDPAGE: CALL GETNUM + LD A,E + OR A + JP Z,ILDATERR + LD A,009H + CALL L3291 + LD A,009H + CALL L3291 + LD A,E + PUSH AF + RRCA + RRCA + RRCA + RRCA + CALL ASC + CALL L3291 + POP AF + CALL ASC + CALL L3291 + JP L1B38 + +L32FC: CALL L31A7 + JP L1B35 + + CALL L193B + LD (05051H),HL + JR Z,L32FC ; (-00eH) + PUSH HL + CALL L338A + LD BC,00500H + CALL L2DD8 + POP HL +L3315: CALL L193B + LD (05051H),HL + JR Z,L3373 ; (+056H) + CALL L2E94 + CALL EXECNOTCHR + DB 03BH + DW L3326 +L3326: CALL L2293 + PUSH HL + LD HL,(04E80H) + PUSH BC + LD BC,003F0H + ADD HL,BC + POP BC + LD A,D + OR A + CALL Z,L2BC0 + CALL NZ,L2BD0 + LD A,B + OR C + JR Z,L3362 ; (+023H) + PUSH DE + LD HL,(04E80H) + INC HL + INC HL + LD E,(HL) + INC HL + LD D,(HL) + DEC HL + PUSH DE + PUSH HL + EX DE,HL + ADD HL,BC + XOR A + EX DE,HL + LD HL,003E8H + SBC HL,DE + JP C,ILDATERR + POP HL + LD (HL),E + INC HL + LD (HL),D + INC HL + POP DE + ADD HL,DE + POP DE + EX DE,HL + LDIR +L3362: LD HL,L3315 + EX (SP),HL + CALL L193B + RET Z + CP 03BH + RET Z + CP 02CH + RET Z + JP SYNTAXERR + +L3373: LD HL,(04E80H) + INC HL + INC HL + LD E,(HL) + INC HL + LD D,(HL) + LD A,D + OR E + JR Z,L3387 ; (+008H) + INC HL + EX DE,HL + CALL L3390 + CALL L338A +L3387: JP L1B35 + +L338A: LD HL,(04E80H) + JP L2E09 + +L3390: CALL L328F + LD A,018H + CALL L3291 + LD A,L + CALL L3291 + LD A,H + CALL L3291 +L33A0: LD A,(DE) + CALL L3291 + INC DE + DEC HL + LD A,H + OR L + JR NZ,L33A0 ; (-00aH) + RET + +CMDCOPY: CALL L193B + JP Z,SYNTAXERR + INC HL + LD (05051H),HL + SUB 034H + JP Z,SYNTAXERR + INC A + JP Z,SYNTAXERR + INC A + JP Z,SYNTAXERR + INC A + JP NZ,SYNTAXERR + LD HL,(PAGETP) + LD C,019H +L33CB: CALL L31A7 + LD A,028H + LD B,A +L33D1: CALL L2878 + OR A + JR Z,L33DB ; (+004H) + CP 00DH + JR NZ,L33DD ; (+002H) +L33DB: LD A,020H +L33DD: CALL L3291 + CALL BRKEY + JR Z,L33FD ; (+018H) + INC HL + DJNZ L33D1 ; (-017H) + DEC C + JR NZ,L33CB ; (-020H) + CALL L31A7 + JP L1B35 + +L33F1: CALL L328F + LD A,(L326D) + JP L3291 + + CALL L33F1 +L33FD: JP L1438 + +L3400: DB 000H +L3401: DB 080H +L3402: DB 086H +L3403: XOR A + DB 001H +L3405: LD A,080H + PUSH DE + XOR (HL) + CPL + LD C,A + LD A,(DE) + AND 080H + LD B,A + XOR C + CPL + AND 080H + LD C,A +L3414: PUSH BC + LD B,(HL) + RES 7,B + LD A,(DE) + AND 07FH + CP B + JR NC,L3428 ; (+00aH) + POP BC + EX DE,HL + LD A,B + XOR C + CPL + AND 080H + LD B,A + JR L3414 ; (-014H) + +L3428: LD C,A + ADD A,040H + LD (L3402),A + LD A,C + SUB B + POP BC + LD (03400H),BC + PUSH DE + INC HL + LD E,(HL) + INC HL + LD D,(HL) + INC HL + LD C,(HL) + INC HL + LD B,(HL) + POP HL + INC HL + JR Z,L345C ; (+01aH) +L3442: CP 008H + JR NC,L3453 ; (+00dH) +L3446: SRL B + RR C + RR D + RR E + DEC A + JR NZ,L3446 ; (-00bH) + JR L345C ; (+009H) + +L3453: LD E,D + LD D,C + LD C,B + LD B,000H + SUB 008H + JR NZ,L3442 ; (-01aH) +L345C: LD A,(L3400) + OR A + JR Z,L349C ; (+03aH) + LD A,(HL) + INC HL + ADD A,E + LD E,A + LD A,(HL) + INC HL + ADC A,D + LD D,A + LD A,(HL) + INC HL + ADC A,C + LD C,A + LD A,(HL) + ADC A,B + LD B,A + JR NC,L347F ; (+00cH) + RR B + RR C + RR D + RR E + LD HL,L3402 + INC (HL) +L347F: LD HL,L3402 + LD A,(HL) + SUB 040H + JR C,L348E ; (+007H) + JP M,OVFLERR + DEC HL + OR (HL) + JR L3491 ; (+003H) + +L348E: CALL L3CDE +L3491: POP HL +L3492: LD (HL),A + INC HL + LD (HL),E + INC HL + LD (HL),D + INC HL + LD (HL),C + INC HL + LD (HL),B + RET + +L349C: LD A,(HL) + INC HL + SUB E + LD E,A + LD A,(HL) + INC HL + SBC A,D + LD D,A + LD A,(HL) + INC HL + SBC A,C + LD C,A + LD A,(HL) + SBC A,B + LD B,A + CALL C,L34E4 + OR C + OR D + JR NZ,L34B7 ; (+005H) + LD A,E + CP 03FH + JR C,L348E ; (-029H) +L34B7: LD HL,L3402 +L34BA: LD A,B + OR A + JP M,L347F + JR NZ,L34D4 ; (+013H) + LD A,(HL) + SUB 008H + JR C,L348E ; (-038H) + LD (HL),A + LD A,C + OR D + OR E + JR Z,L348E ; (-03eH) + LD B,C + LD C,D + LD D,E + LD E,000H + JP L34BA + +L34D4: DEC (HL) + JR C,L348E ; (-049H) + SLA E + RL D + RL C + RL B + JP P,L34D4 + JR L347F ; (-065H) + +L34E4: LD HL,L3401 + LD A,(HL) + ADD A,080H + LD (HL),A + LD A,E + CPL + ADD A,001H + LD E,A + LD A,D + CPL + ADC A,000H + LD D,A + LD A,C + CPL + ADC A,000H + LD C,A + LD A,B + CPL + ADC A,000H + LD B,A + RET + +L3500: PUSH DE + LD A,(DE) + XOR (HL) + CPL + AND 080H + LD (L3401),A + LD B,(HL) + RES 7,B + LD A,(DE) + AND 07FH + ADD A,B + JP Z,L348E + DEC A +L3514: CP 030H + JP C,L348E + CP 0E0H + JP NC,OVFLERR + LD (L3402),A + XOR A + LD (L3400),A + LD BC,00004H + ADD HL,BC + LD A,(HL) + OR A + JP P,L348E + PUSH HL + POP IY + LD C,B + EX DE,HL + INC HL + LD E,(HL) + INC HL + LD D,(HL) + INC HL + PUSH HL + LD H,B + LD L,B + EXX + POP HL + LD E,(HL) + INC HL + LD D,(HL) + LD HL,MONIT + LD A,D + OR A + JP P,L348E + LD C,004H +L354A: LD A,(IY+000H) + LD B,008H + OR A + JR Z,L35C5 ; (+073H) +L3552: RLA + JR NC,L3569 ; (+014H) + EX AF,AF' + EXX + LD A,B + ADD A,C + LD C,A + ADC HL,DE + EXX + ADC HL,DE + JR NC,L3568 ; (+007H) + LD A,(L3400) + INC A + LD (L3400),A +L3568: EX AF,AF' +L3569: SRL D + RR E + EXX + RR D + RR E + RR B + EXX + DJNZ L3552 ; (-025H) +L3577: DEC IY + DEC C + JR NZ,L354A ; (-032H) + LD A,(L3400) + OR A + JR Z,L3599 ; (+017H) + LD B,A + LD A,(L3402) + ADD A,B + LD (L3402),A +L358A: SCF + RR H + RR L + EXX + RR H + RR L + RR C + EXX + DJNZ L358A ; (-00fH) +L3599: EXX + LD A,C + OR A + JP P,L35BD + LD DE,00001H + ADD HL,DE + EXX + LD DE,MONIT + ADC HL,DE + JR NC,L35BC ; (+011H) + RR H + RR L + EXX + RR H + RR L + EXX + LD A,(L3402) + INC A + LD (L3402),A +L35BC: EXX +L35BD: PUSH HL + EXX + LD B,H + LD C,L + POP DE + JP L34B7 + +L35C5: LD A,E + LD E,D + LD D,000H + EXX + LD B,E + LD E,D + LD D,A + EXX + JR L3577 ; (-059H) + +L35D0: PUSH DE + LD A,(DE) + XOR (HL) + CPL + AND 080H + LD (L3401),A + LD B,(HL) + RES 7,B + LD A,(DE) + AND 07FH + SUB B + ADD A,081H +L35E2: CP 030H + JP C,L348E + CP 0E0H + JP NC,OVFLERR + LD (L3402),A + INC HL + INC DE + EX DE,HL + LD C,(HL) + INC HL + LD B,(HL) + INC HL + PUSH HL + EX DE,HL + LD E,(HL) + INC HL + LD D,(HL) + INC HL + LD A,L + EX AF,AF' + LD A,H + LD H,B + LD L,C + EXX + POP HL + LD C,(HL) + INC HL + LD B,(HL) + LD H,A + EX AF,AF' + LD L,A + LD E,(HL) + INC HL + LD D,(HL) + LD H,B + LD L,C + LD A,D + OR A + JP P,OVFLERR + LD C,004H +L3615: LD B,008H +L3617: BIT 7,H + JR NZ,L3633 ; (+018H) + OR A +L361C: RLA + EXX + ADD HL,HL + EXX + ADC HL,HL + DJNZ L3617 ; (-00dH) + PUSH AF + DEC C + JR NZ,L3615 ; (-013H) +L3628: POP AF + LD E,A + POP AF + LD D,A + POP AF + LD C,A + POP AF + LD B,A + JP L34B7 + +L3633: EXX + OR A + SBC HL,DE + EXX + SBC HL,DE + CCF + JR C,L361C ; (-021H) + EXX + ADD HL,DE + EXX + ADC HL,DE + OR A + RLA + EXX + ADD HL,HL + EXX + ADC HL,HL + DEC B + JR NZ,L3652 ; (+006H) + PUSH AF + LD B,008H + DEC C + JR Z,L3628 ; (-02aH) +L3652: EXX + OR A + SBC HL,DE + EXX + SBC HL,DE + SCF + RLA + DEC B + JR NZ,L3664 ; (+006H) + PUSH AF + LD B,008H + DEC C + JR Z,L3628 ; (-03cH) +L3664: EXX + ADD HL,HL + EXX + ADC HL,HL + JR NC,L3617 ; (-054H) + JR L3652 ; (-01bH) + +L366D: DEC E +L366E: XOR C + LD D,B +L3670: LD A,(HL) + PUSH HL + POP IX + EX DE,HL + LD (L366E),HL + EX AF,AF' + XOR A + LD (L366D),A + LD H,A + LD L,A + EXX + LD H,A + LD L,A + LD B,A + LD C,A + EX AF,AF' + CP 02EH + JR Z,L369D ; (+014H) + SUB 030H +L368B: CALL L3772 + CALL L3768 + SUB 030H + CP 00AH + JR C,L368B ; (-00cH) + ADD A,030H + CP 02EH + JR NZ,L36AD ; (+010H) +L369D: CALL L3768 + SUB 030H + CP 00AH + JR NC,L36AB ; (+005H) + CALL L3780 + JR L369D ; (-00eH) + +L36AB: ADD A,030H +L36AD: CP 045H + JR NZ,L36F5 ; (+044H) + EXX + CALL L3768 + LD B,001H + CP 02BH + JR Z,L36C1 ; (+006H) + CP 02DH + JP NZ,SYNTAXERR + DEC B +L36C1: LD A,B + OR A + EX AF,AF' + CALL L3768 + SUB 030H + NOP + NOP + CP 00AH + JR NC,L36EB ; (+01cH) + LD B,A + CALL L3768 + SUB 030H + CP 00AH + JR NC,L36EB ; (+012H) + LD C,A + CALL L3768 + SUB 030H + CP 00AH + JP C,OVFLERR + LD A,B + ADD A,A + ADD A,A + ADD A,B + ADD A,A + ADD A,C + LD B,A +L36EB: EX AF,AF' + LD A,B + JR NZ,L36F1 ; (+002H) + CPL + INC A +L36F1: LD (L366D),A + EXX +L36F5: PUSH IX + LD A,(L366D) + ADD A,01DH + ADD A,C + LD (L366D),A + CP 030H + JR C,L370B ; (+007H) + CP 080H + JP C,OVFLERR + JR L375D ; (+052H) + +L370B: LD A,080H + LD (L3401),A + LD A,0A0H + LD (L3402),A + PUSH HL + EXX + POP BC + LD D,H + LD E,L + LD HL,L3725 + PUSH HL + LD HL,(L366E) + PUSH HL + JP L34B7 + +L3725: LD A,(L366D) + LD L,A + LD C,A + LD H,000H + LD B,H + ADD HL,HL + ADD HL,HL + ADD HL,BC + LD BC,L37AE + ADD HL,BC + LD DE,(0366EH) + LD A,080H + LD (L3401),A + LD A,020H + ADD A,(HL) + LD B,A + LD A,(DE) + AND 07FH + ADD A,B + JP C,OVFLERR + SUB 021H + JR NC,L374D ; (+001H) + XOR A +L374D: LD BC,L3755 + PUSH BC + PUSH DE + JP L3514 + +L3755: POP HL + LD BC,00005H + LD D,B + LD E,B + LD A,(HL) + RET + +L375D: LD HL,L3755 + PUSH HL + LD HL,(L366E) + PUSH HL + JP L348E + +L3768: INC IX + LD A,(IX+000H) + CP 020H + RET NZ + JR L3768 ; (-00aH) + +L3772: OR A + JR NZ,L3778 ; (+003H) + OR B + RET Z + XOR A +L3778: EX AF,AF' + LD A,B + CP 009H + JR NZ,L378E ; (+010H) + INC C + RET + +L3780: OR A + JR NZ,L3788 ; (+005H) + DEC C + OR B + RET Z + INC C + XOR A +L3788: EX AF,AF' + LD A,B + CP 009H + RET Z + DEC C +L378E: INC B + LD D,H + LD E,L + EXX + LD D,H + LD E,L + XOR A + ADD HL,HL + RLA + ADD HL,HL + RLA + ADD HL,DE + LD D,000H + ADC A,D + ADD HL,HL + RLA + EX AF,AF' + LD E,A + EX AF,AF' + ADD HL,DE + ADC A,D + EXX + ADD HL,HL + ADD HL,HL + ADD HL,DE + ADD HL,HL + LD D,000H + LD E,A + ADD HL,DE + RET + +L37AE: DB 0E0H + DB 0F5H + DB 0F7H + DB 0D2H + DB 0CAH + DB 0E3H + DB 0F3H + DB 0B5H + DB 087H + DB 0FDH + DB 0E7H + DB 0B8H + DB 0D1H + DB 074H + DB 09EH + DB 0EAH + DB 025H + DB 006H + DB 012H + DB 0C6H + DB 0EDH + DB 0AFH + DB 087H + DB 096H + DB 0F7H + DB 0F1H + DB 0CDH + DB 014H + DB 0BEH + DB 09AH + DB 0F4H + DB 001H + DB 09AH + DB 06DH + DB 0C1H + DB 0F7H + DB 081H + DB 000H + DB 0C9H + DB 0F1H + DB 0FBH + DB 050H + DB 0A0H + DB 01DH + DB 097H +L37DB: DB 0FEH + DB 065H + DB 008H + DB 0E5H + DB 0BCH + DB 001H + DB 07EH + DB 04AH + DB 01EH + DB 0ECH + DB 005H + DB 08FH + DB 0EEH + DB 092H + DB 093H + DB 008H + DB 032H + DB 0AAH + DB 077H + DB 0B8H + DB 00BH + DB 0BFH + DB 094H + DB 095H + DB 0E6H + DB 00FH + DB 0F7H + DB 07CH + DB 01DH + DB 090H + DB 012H + DB 035H + DB 0DCH + DB 024H + DB 0B4H + DB 015H + DB 042H + DB 013H + DB 02EH + DB 0E1H + DB 019H + DB 009H + DB 0CCH + DB 0BCH + DB 08CH + DB 01CH + DB 00CH + DB 0FFH + DB 0EBH + DB 0AFH + DB 01FH + DB 0CFH + DB 0FEH + DB 0E6H + DB 0DBH + DB 023H + DB 041H + DB 05FH + DB 070H + DB 089H + DB 026H + DB 012H + DB 077H + DB 0CCH + DB 0ABH + DB 029H + DB 0D6H + DB 094H + DB 0BFH + DB 0D6H + DB 02DH + DB 006H + DB 0BDH + DB 037H + DB 086H + DB 030H + DB 047H + DB 0ACH + DB 0C5H + DB 0A7H + DB 033H + DB 059H + DB 017H + DB 0B7H + DB 0D1H + DB 037H + DB 098H + DB 06EH + DB 012H + DB 083H + DB 03AH + DB 03DH + DB 00AH + DB 0D7H + DB 0A3H + DB 03DH + DB 0CDH + DB 0CCH + DB 0CCH + DB 0CCH + DB 041H + DB 000H + DB 000H + DB 000H + DB 080H + DB 044H + DB 000H + DB 000H + DB 000H + DB 0A0H + DB 047H + DB 000H + DB 000H + DB 000H + DB 0C8H + DB 04AH + DB 000H + DB 000H + DB 000H + DB 0FAH + DB 04EH + DB 000H + DB 000H + DB 040H + DB 09CH + DB 051H + DB 000H + DB 000H + DB 050H + DB 0C3H + DB 054H + DB 000H + DB 000H + DB 024H + DB 0F4H + DB 058H + DB 000H + DB 080H + DB 096H + DB 098H + DB 05BH + DB 000H + DB 020H + DB 0BCH + DB 0BEH + DB 05EH + DB 000H + DB 028H + DB 06BH + DB 0EEH + DB 062H + DB 000H + DB 0F9H + DB 002H + DB 095H + DB 065H + DB 040H + DB 0B7H + DB 043H + DB 0BAH + DB 068H + DB 010H + DB 0A5H + DB 0D4H + DB 0E8H + DB 06CH + DB 02AH + DB 0E7H + DB 084H + DB 091H + DB 06FH + DB 0F5H + DB 020H + DB 0E6H + DB 0B5H + DB 072H + DB 032H + DB 0A9H + DB 05FH + DB 0E3H + DB 076H + DB 0BFH + DB 0C9H + DB 01BH + DB 08EH + DB 079H + DB 02FH + DB 0BCH + DB 0A2H + DB 0B1H + DB 07CH + DB 03AH + DB 06BH + DB 00BH + DB 0DEH + DB 080H + DB 005H + DB 023H + DB 0C7H + DB 08AH +L38A3: DB 08DH + DB 06CH +L38A5: DB 001H +L38A6: DB 020H +L38A7: DB 031H +L38A8: DB 02EH + DB 035H + DB 00DH + DB 00DH + DB 00DH + DB 00DH + DB 00DH +L38AF: DB 00DH +L38B0: DB 00DH +L38B1: DB 000H +L38B2: DB 000H + DB 000H + DB 000H + DB 000H + DB 000H + DB 000H + DB 000H + DB 000H + DB 000H +L38BB: PUSH DE + CALL L3997 + LD A,(L38A5) + OR A + JP Z,L3960 + JP M,L38CF + CP 009H + JR C,L392B ; (+05eH) + JR L38D4 ; (+005H) + +L38CF: CP PRTD + JP NC,L395B +L38D4: LD A,02EH + LD (L38A7),A + LD HL,L38B0 + XOR A +L38DD: DEC HL + CP (HL) + JR Z,L38DD ; (-004H) + LD A,(HL) + CP 02EH + JP Z,L398A + INC HL + LD (HL),045H + INC HL + LD A,(L38A5) + LD B,02BH + OR A + JP P,L38FD + CP 0EDH + JP C,L398A + LD B,02DH + CPL + INC A +L38FD: LD (HL),B + INC HL + LD BC,0FF0AH +L3902: INC B + SUB C + JR NC,L3902 ; (-004H) + ADD A,C + LD (HL),B + INC HL + LD (HL),A + INC HL + LD (HL),00DH +L390D: LD HL,L38A6 +L3910: INC HL + LD A,(HL) + CP 00DH + JR Z,L391D ; (+007H) + JR NC,L3910 ; (-008H) + OR 030H + LD (HL),A + JR L3910 ; (-00dH) + +L391D: LD DE,L38A6 + XOR A + SBC HL,DE + LD B,H + LD C,L + POP HL + EX DE,HL + INC BC + LDIR + RET + +L392B: LD HL,L38A8 + LD DE,L38A7 + LD B,A + INC B +L3933: DEC B + JR Z,L393C ; (+006H) + LD A,(HL) + LD (DE),A + INC HL + INC DE + JR L3933 ; (-009H) + +L393C: LD A,02EH + LD (DE),A + LD HL,L38B0 +L3942: LD (HL),00DH + DEC HL + LD A,(HL) + OR A + JR Z,L3942 ; (-007H) + CP 02EH + JR NZ,L394F ; (+002H) + LD (HL),00DH +L394F: LD HL,L38A7 + LD A,(HL) + CP 00DH + JR NZ,L390D ; (-04aH) + LD (HL),000H + JR L390D ; (-04eH) + +L395B: LD DE,L38B2 + JR L3963 ; (+003H) + +L3960: LD DE,L38B1 +L3963: LD HL,L38AF + LD A,00DH + LD (DE),A + PUSH DE + DEC DE + LD BC,00008H + LDDR + EX DE,HL + LD A,(L38A5) + OR A + JR Z,L397A ; (+003H) + LD (HL),000H + DEC HL +L397A: LD (HL),02EH + DEC HL + LD (HL),000H + POP HL +L3980: DEC HL + LD A,(HL) + CP 000H + JR NZ,L390D ; (-079H) + LD (HL),00DH + JR L3980 ; (-00aH) + +L398A: LD HL,L3994 + LD BC,GETL + POP DE + LDIR + RET + +L3994: JR NZ,L39C6 ; (+030H) + DEC C +L3997: LD (L38A3),HL + LD A,(HL) + LD B,020H + OR A + JP M,L39A3 + LD B,02DH +L39A3: AND 07FH + LD (HL),A + LD A,B + LD (L38A6),A + EX DE,HL + LD HL,L37DB + LD A,0ECH + EX AF,AF' +L39B1: EX AF,AF' + INC A + EX AF,AF' + LD BC,00005H + ADD HL,BC + PUSH HL + PUSH DE + LD A,(DE) + CALL L3A73 + POP DE + POP HL + JR NC,L39B1 ; (-011H) + EX AF,AF' + LD (L38A5),A +L39C6: PUSH DE + LD BC,L39D8 + PUSH BC + PUSH DE + LD A,080H + LD (L3401),A + LD A,(DE) + SUB (HL) + ADD A,081H + JP L35E2 + +L39D8: LD HL,L38A7 + LD (HL),000H + INC HL + EX (SP),HL + LD A,(HL) + INC HL + LD E,(HL) + INC HL + LD D,(HL) + INC HL + PUSH HL + EX DE,HL + EXX + POP HL + LD E,(HL) + INC HL + LD D,(HL) + EX DE,HL + SUB 0C0H + JR NC,L39FE ; (+00dH) +L39F1: SRL H + RR L + EXX + RR H + RR L + EXX + INC A + JR NZ,L39F1 ; (-00dH) +L39FE: POP BC + LD A,009H +L3A01: EX AF,AF' + XOR A + LD D,H + LD E,L + EXX + LD D,H + LD E,L + ADD HL,HL + EXX + ADC HL,HL + RLA + EXX + ADD HL,HL + EXX + ADC HL,HL + RLA + EXX + ADD HL,DE + EXX + ADC HL,DE + LD D,000H + ADC A,D + EXX + ADD HL,HL + EXX + ADC HL,HL + RLA + LD (BC),A + INC BC + EX AF,AF' + DEC A + JR NZ,L3A01 ; (-026H) +L3A27: LD HL,L38B0 + LD A,(HL) + LD (HL),000H + CP 005H + LD C,000H + JR C,L3A34 ; (+001H) + INC C +L3A34: LD B,00AH +L3A36: DEC B + JR Z,L3A47 ; (+00eH) + DEC HL + LD A,(HL) + ADD A,C + LD (HL),A + SUB 00AH + LD C,000H + JR C,L3A36 ; (-00dH) + INC C + LD (HL),A + JR L3A36 ; (-011H) + +L3A47: LD A,(L38A7) + OR A + RET Z + LD HL,L38AF + LD DE,L38B0 + LD BC,NL + LDDR + EX DE,HL + LD (HL),000H + LD A,(L38A5) + INC A + LD (L38A5),A + JR L3A27 ; (-03cH) + +L3A63: LD BC,00005H +L3A66: LD A,(DE) + OR A + JP M,L3A73 + BIT 7,(HL) + JR Z,L3A71 ; (+002H) + SCF + RET + +L3A71: EX DE,HL + LD A,(DE) +L3A73: CP (HL) + RET NZ + DEC C + ADD HL,BC + EX DE,HL + ADD HL,BC + EX DE,HL + LD B,003H +L3A7C: LD A,(DE) + CP (HL) + RET NZ + DEC HL + DEC DE + DJNZ L3A7C ; (-007H) + LD A,(DE) + CP (HL) + RET + +L3A86: EX DE,HL + CALL L3997 + LD A,(L38A6) + LD B,080H + CP 020H + JR Z,L3A95 ; (+002H) + LD B,000H +L3A95: LD A,B + LD (L3401),A + OR A + JR Z,L3B1A ; (+07eH) + LD A,(L38A5) + DEC A + JP M,L3B50 + LD HL,L38B0 + LD B,00DH + LD (HL),B + SUB 008H + JR NC,L3AB3 ; (+006H) +L3AAD: LD (HL),B + DEC HL + INC A + JR NZ,L3AAD ; (-005H) + DEC A +L3AB3: INC A + LD (L366D),A + LD IX,L38A7 + XOR A + LD H,A + LD L,A + EXX + LD B,A + LD C,A + LD H,A + LD L,A +L3AC3: LD A,(IX+000H) + CP 00DH + JR Z,L3AD1 ; (+007H) + CALL L3772 + INC IX + JR L3AC3 ; (-00eH) + +L3AD1: LD A,(L366D) + ADD A,01DH + ADD A,C + LD (L366D),A + LD A,0A0H + LD (L3402),A + PUSH HL + EXX + POP BC + LD D,H + LD E,L + LD HL,L3AEF + PUSH HL + LD HL,(L38A3) + PUSH HL + JP L34B7 + +L3AEF: LD A,(L366D) + LD C,A + LD L,A + LD H,000H + LD B,H + ADD HL,HL + ADD HL,HL + ADD HL,BC + LD BC,L37AE + ADD HL,BC + LD DE,(038A3H) + XOR A + LD (L3400),A + LD A,020H + ADD A,(HL) + LD B,A + LD A,(DE) + AND 07FH + ADD A,B + JP C,OVFLERR + SUB 021H + JR NC,L3B16 ; (+001H) + XOR A +L3B16: PUSH DE + JP L3514 + +L3B1A: LD A,(L38A5) + DEC A + JP M,L3B55 + LD HL,L38B0 + LD BC,00D00H + LD (HL),B + SUB 008H + JR NC,L3B3B ; (+00fH) + JR L3B36 ; (+008H) + +L3B2E: EX AF,AF' + LD A,(HL) + OR A + JR Z,L3B34 ; (+001H) + INC C +L3B34: LD (HL),B + EX AF,AF' +L3B36: DEC HL + INC A + JR NZ,L3B2E ; (-00cH) + DEC A +L3B3B: EX AF,AF' + LD A,C + OR A + JR Z,L3B4C ; (+00cH) +L3B40: LD A,(HL) + INC A + LD (HL),A + CP 00AH + JR NZ,L3B4C ; (+005H) + LD (HL),000H + DEC HL + JR L3B40 ; (-00cH) + +L3B4C: EX AF,AF' + JP L3AB3 + +L3B50: LD DE,L2A8D + JR L3B58 ; (+003H) + +L3B55: LD DE,L2A92 +L3B58: LD HL,(L38A3) + EX DE,HL +L3B5C: LD BC,00005H + LDIR + RET + +L3B62: PUSH DE + CALL L3A63 + JR Z,L3B6D ; (+005H) +L3B68: LD HL,L2A92 + JR L3B70 ; (+003H) + +L3B6D: LD HL,L2A8D +L3B70: POP DE + JR L3B5C ; (-017H) + +L3B73: PUSH DE + EX DE,HL + JR L3B78 ; (+001H) + +L3B77: PUSH DE +L3B78: CALL L3A63 + JR C,L3B68 ; (-015H) + JR L3B6D ; (-012H) + +L3B7F: PUSH DE + CALL L3A63 + JR Z,L3B68 ; (-01dH) + JR L3B6D ; (-01aH) + +L3B87: PUSH DE + EX DE,HL + JR L3B8C ; (+001H) + +L3B8B: PUSH DE +L3B8C: CALL L3A63 + JR C,L3B6D ; (-024H) + JR L3B68 ; (-02bH) + +L3B93: CP (HL) + DEC (HL) + JR Z,L3B73 ; (-024H) + RST 008H +L3B98: PUSH DE + EX DE,HL + LD A,(HL) + LD BC,00004H + ADD HL,BC + XOR (HL) + JP M,L3BC4 + LD DE,L3B93 + PUSH DE + LD HL,L3BE9 + CALL L3500 + POP HL + PUSH HL + LD A,(HL) + INC HL + LD E,(HL) + INC HL + LD D,(HL) + INC HL + LD C,(HL) + INC HL + LD B,(HL) + CP 0C1H + CALL NC,L3BD2 + POP HL + PUSH HL + CALL L3492 + JR L3BCE ; (+00aH) + +L3BC4: LD DE,L3B93 + LD HL,L3BE4 + PUSH DE + CALL L3B5C +L3BCE: POP HL + POP DE + JR L3B5C ; (-076H) + +L3BD2: SUB 0C0H +L3BD4: SLA E + RL D + RL C + RL B + DEC A + JR NZ,L3BD4 ; (-00bH) + LD A,0C0H + JP L3CC5 + +L3BE4: CP (HL) + DEC (HL) + JR Z,L3BC4 ; (-024H) + RST 008H +L3BE9: DB 0C5H + DB 000H + DB 000H + DB 000H + DB 0B8H +L3BEE: DB 000H + DB 000H + DB 000H + DB 000H + DB 000H +L3BF3: DB 000H + DB 000H + DB 000H + DB 000H + DB 000H +L3BF8: DB 000H + DB 000H + DB 000H + DB 000H + DB 000H +L3BFD: DB 000H + DB 000H + DB 000H + DB 000H + DB 000H +L3C02: LD DE,L3BEE + JP L3405 + +L3C08: CALL L3C02 +L3C0B: LD HL,L3BF3 +L3C0E: LD DE,L3BEE + JP L3500 + +L3C14: NOP +L3C15: NOP +L3C16: PUSH DE + LD HL,L3CE7 + CALL L35D0 + POP HL + PUSH HL + LD A,(HL) + LD (L3C15),A + OR 080H + INC HL + LD E,(HL) + INC HL + LD D,(HL) + INC HL + LD C,(HL) + INC HL + LD B,(HL) + CP 0C3H + JR C,L3C43 ; (+012H) + SUB 0C2H +L3C33: SLA E + RL D + RL C + RL B + DEC A + JR NZ,L3C33 ; (-00bH) + LD A,0C2H + CALL L3CC5 +L3C43: LD HL,08000H + CP 0C2H + JR C,L3C50 ; (+006H) + LD H,L + RES 7,B + CALL L3CC5 +L3C50: CP 0C1H + JR C,L3C5A ; (+006H) + INC L + RES 7,B + CALL L3CC5 +L3C5A: EX AF,AF' + LD A,(L3C15) + XOR H + CPL + AND 080H + LD H,A + LD (L3C14),HL + EX AF,AF' + POP HL + PUSH HL + CALL L3492 + LD A,(L3C14) + OR A + JR Z,L3C7A ; (+008H) + POP DE + PUSH DE + LD HL,L2A88 + CALL L3403 +L3C7A: POP HL + PUSH HL + LD A,(HL) + AND 07FH + LD B,A + LD A,(L3C15) + OR B + LD (HL),A + LD DE,L3BEE + CALL L3B5C + LD DE,L3BF3 + LD HL,L3BEE + CALL L3B5C + CALL L3C0B + LD DE,L3BF3 + LD HL,L3BEE + CALL L3B5C + LD HL,L3CEC + CALL L3C0E + LD HL,L3CF1 + CALL L3C08 + LD HL,L3CF6 + CALL L3C08 + LD HL,L3CFB + CALL L3C08 + LD HL,L3D00 + CALL L3C02 + POP DE + LD HL,L3BEE + JP L3500 + +L3CC5: BIT 7,B + RET NZ + EX AF,AF' + LD A,B + OR C + OR E + OR D + JR Z,L3CDE ; (+00fH) + EX AF,AF' +L3CD0: BIT 7,B + RET NZ + SLA E + RL D + RL C + RL B + DEC A + JR NZ,L3CD0 ; (-00eH) +L3CDE: LD BC,MONIT + LD DE,MONIT + LD A,080H + RET + +L3CE7: DB 0C1H + DB 0A1H + DB 0DAH + DB 00FH + DB 0C9H +L3CEC: DB 0B4H + DB 0DCH + DB 00FH + DB 00AH + DB 09FH +L3CF1: DB 039H + DB 061H + DB 08FH + DB 029H + DB 099H +L3CF6: DB 0BDH + DB 0C8H + DB 077H + DB 034H + DB 0A3H +L3CFB: DB 040H + DB 085H + DB 0E1H + DB 05DH + DB 0A5H +L3D00: DB 0C1H + DB 094H + DB 0DAH + DB 00FH + DB 0C9H +L3D05: PUSH DE + LD HL,L3CE7 + CALL L3403 + POP HL + CALL L4193 + EX DE,HL + JP L3C16 + +L3D14: PUSH DE + EX DE,HL + LD DE,L3BFD + CALL L3B5C + POP DE + PUSH DE + CALL L3D05 + POP HL + PUSH HL + LD DE,L3BF8 + CALL L3B5C + POP DE + PUSH DE + LD HL,L3BFD + CALL L3B5C + POP DE + PUSH DE + CALL L3C16 + POP DE + LD HL,L3BF8 + JP L35D0 + +L3D3D: NOP +L3D3E: NOP +L3D3F: LD A,003H + LD (L3D3D),A + PUSH DE + EX DE,HL + LD A,(HL) + ADD A,080H + JP NC,ILDATERR + JR NZ,L3D5B ; (+00dH) + EX AF,AF' + LD BC,00004H + ADD HL,BC + LD A,(HL) + SBC HL,BC + OR A + JP P,L3DBA + EX AF,AF' +L3D5B: BIT 0,A + JR NZ,L3DD5 ; (+076H) + LD (L3D3E),A + LD (HL),0C0H + LD DE,L3BEE + CALL L3B5C + LD HL,L3DED + CALL L3C0E + LD HL,L3DF2 +L3D73: CALL L3C02 +L3D76: LD DE,L3BF3 + POP HL + PUSH HL + CALL L3B5C + LD DE,L3BF3 + LD HL,L3BEE + CALL L35D0 + LD HL,L3BF3 + CALL L3C02 + LD HL,L3BEE + LD A,(HL) + AND 07FH + DEC A + JR C,L3DBA ; (+024H) + OR 080H + LD (HL),A + LD A,(L3D3D) + DEC A + LD (L3D3D),A + JR NZ,L3D76 ; (-02cH) + LD A,(L3D3E) + CP 040H + CALL NZ,L3DC1 + LD B,(HL) + RES 7,B + ADD A,B + SUB 040H + JR C,L3DBA ; (+008H) + JP M,OVFLERR + OR 080H + LD (HL),A + JR L3DBD ; (+003H) + +L3DBA: LD HL,L2A8D +L3DBD: POP DE + JP L3B5C + +L3DC1: JR C,L3DCA ; (+007H) + SUB 040H + SRL A + ADD A,040H + RET + +L3DCA: LD B,A + LD A,040H + SUB B + SRL A + LD B,A + LD A,040H + SUB B + RET + +L3DD5: INC A + LD (L3D3E),A + LD (HL),0BFH + LD DE,L3BEE + CALL L3B5C + LD HL,L3DF7 + CALL L3C0E + LD HL,L3DFC + JP L3D73 + +L3DED: DB 0C0H + DB 000H + DB 000H + DB 000H + DB 090H +L3DF2: DB 0BFH + DB 000H + DB 000H + DB 000H + DB 0E0H +L3DF7: DB 0C0H + DB 000H + DB 000H + DB 000H + DB 0E0H +L3DFC: DB 0BFH + DB 000H + DB 000H + DB 000H + DB 090H +L3E01: NOP +L3E02: NOP +L3E03: PUSH DE + LD A,(DE) + AND 080H + LD (L3E01),A + LD A,(DE) + OR 080H + LD (DE),A + LD HL,L3F2D + CALL L35D0 + POP HL + PUSH HL + LD A,040H + LD (L3E02),A + LD A,(HL) + SUB 0C1H + CALL NC,L3EBB + POP DE + PUSH DE + LD HL,L3F28 + CALL L3403 + POP HL + PUSH HL + LD DE,L3BEE + CALL L3B5C + LD HL,L3F05 + CALL L3C0E + LD HL,L3F0A + CALL L3C02 + POP HL + PUSH HL + CALL L3C0E + LD HL,L3F0F + CALL L3C02 + POP HL + PUSH HL + CALL L3C0E + LD HL,L3F14 + CALL L3C02 + POP HL + PUSH HL + CALL L3C0E + LD HL,L3F19 + CALL L3C02 + POP HL + PUSH HL + CALL L3C0E + LD HL,L3F1E + CALL L3C02 + POP HL + PUSH HL + CALL L3C0E + LD HL,L3F23 + CALL L3C02 + LD HL,L3BEE + LD B,(HL) + RES 7,B + LD A,(L3E02) + ADD A,B + JP C,L3EFC + SUB 03FH + JR C,L3EEC ; (+067H) + JP M,L3EFC + OR 080H + LD (HL),A + LD A,(L3E01) + OR A + JR Z,L3E98 ; (+007H) + LD HL,L3BEE + POP DE + JP L3B5C + +L3E98: POP DE + PUSH DE + LD HL,L2A88 + CALL L3B5C + POP DE + PUSH DE + LD A,(DE) + CP 0FCH + PUSH AF + JR C,L3EAA ; (+002H) + DEC A + LD (DE),A +L3EAA: LD HL,L3BEE + CALL L35D0 + POP AF + POP HL + RET C + LD A,(HL) + DEC A + LD (HL),A + RET M + PUSH HL + JP L348E + +L3EBB: INC HL + LD E,(HL) + INC HL + LD D,(HL) + INC HL + LD C,(HL) + INC HL + LD B,(HL) + PUSH HL + INC A + LD H,A + XOR A +L3EC7: SLA E + RL D + RL C + RL B + RLA + JR C,L3EFA ; (+028H) + DEC H + JR NZ,L3EC7 ; (-00eH) + ADD A,040H + JR C,L3EFA ; (+021H) + LD (L3E02),A + LD A,0C0H + CALL L3CC5 + POP HL + LD (HL),B + DEC HL + LD (HL),C + DEC HL + LD (HL),D + DEC HL + LD (HL),E + DEC HL + LD (HL),A + RET + +L3EEC: LD A,(L3E01) + OR A + JP Z,OVFLERR +L3EF3: LD HL,L2A8D + POP DE + JP L3B5C + +L3EFA: POP AF + POP AF +L3EFC: LD A,(L3E01) + OR A + JP NZ,OVFLERR + JR L3EF3 ; (-012H) + +L3F05: DB 0B3H + DB 07CH + DB 08CH + DB 090H + DB 0E3H +L3F0A: DB 0B6H + DB 01FH + DB 0DFH + DB 062H + DB 0F8H +L3F0F: DB 0B9H + DB 0E2H + DB 06DH + DB 0DDH + DB 0DEH +L3F14: DB 0BCH + DB 08BH + DB 033H + DB 0C1H + DB 0A0H +L3F19: DB 0BEH + DB 089H + DB 04AH + DB 0F1H + DB 0ADH +L3F1E: DB 0BFH + DB 034H + DB 033H + DB 0F2H + DB 0FAH +L3F23: DB 0C0H + DB 036H + DB 0F3H + DB 004H + DB 0B5H +L3F28: DB 0C0H + DB 000H + DB 000H + DB 000H + DB 080H +L3F2D: DB 0C0H + DB 0F8H + DB 017H + DB 072H + DB 0B1H +L3F32: DB 000H +L3F33: DB 000H +L3F34: DB 000H +L3F35: PUSH DE + LD A,080H + LD (L3F33),A + LD (L3F32),A + EX DE,HL + LD A,(HL) + OR A + JP P,OVFLERR + CP 08AH + JR NC,L3F53 ; (+00bH) + XOR A + LD (L3F32),A + EX DE,HL + CALL L3D3F + POP HL + PUSH HL + LD A,(HL) +L3F53: CP 0C1H + CALL C,L4011 + LD B,000H + CP 0C1H + JR Z,L3F64 ; (+006H) + SUB 0C1H + LD B,A + LD A,0C1H + LD (HL),A +L3F64: LD A,B + LD (L3F34),A + LD DE,L3BEE + CALL L3B5C + POP DE + PUSH DE + LD HL,L4055 + CALL L3403 + LD HL,L4055 + CALL L3C02 + POP DE + PUSH DE + LD HL,L3BEE + CALL L35D0 + POP DE + PUSH DE + LD HL,L405A + CALL L3500 + POP HL + PUSH HL + LD DE,L3BF3 + CALL L3B5C + POP HL + PUSH HL + LD DE,L3BF3 + CALL L3500 + LD DE,L3BEE + LD HL,L3BF3 + CALL L3B5C + LD HL,L4041 + CALL L3C0E + LD HL,L4046 + CALL L3C08 + LD HL,L404B + CALL L3C08 + LD HL,L4050 + CALL L3C02 + POP HL + PUSH HL + CALL L3C0E + LD DE,L3BF3 + LD HL,L3BEE + CALL L3B5C + LD A,(L3F34) + ADD A,A + INC A + LD B,A + LD A,008H +L3FD3: BIT 7,B + JR NZ,L3FDC ; (+005H) + SLA B + DEC A + JR NZ,L3FD3 ; (-009H) +L3FDC: ADD A,0C0H + LD HL,L3BEE + LD (HL),A + INC HL + XOR A + LD (HL),A + INC HL + LD (HL),A + INC HL + LD (HL),A + INC HL + LD (HL),B + LD HL,L405F + CALL L3C0E + LD HL,L3BF3 + CALL L3C02 + LD HL,L3BEE + LD A,(L3F33) + CALL L4191 + POP DE + PUSH DE + CALL L3B5C + POP DE + LD A,(L3F32) + OR A + RET NZ + LD HL,L3BEE + JP L3405 + +L4011: PUSH HL + LD DE,L3BEE + CALL L3B5C + POP DE + PUSH DE + LD HL,L2A88 + CALL L3B5C + POP DE + PUSH DE + LD HL,L3BEE + CALL L35D0 + POP HL + LD A,(HL) + CP 0C1H + JR NC,L4039 ; (+00bH) + PUSH HL + EX DE,HL + LD HL,L2A88 + CALL L3B5C + POP HL + LD A,0C1H +L4039: EX AF,AF' + LD A,000H + LD (L3F33),A + EX AF,AF' + RET + +L4041: DB 0ADH + DB 0A4H + DB 062H + DB 0CCH + DB 0AFH +L4046: DB 0B2H + DB 09FH + DB 0E9H + DB 047H + DB 0F9H +L404B: DB 0B8H + DB 0A4H + DB 082H + DB 0AAH + DB 0DCH +L4050: DB 0BFH + DB 0BFH + DB 0CCH + DB 0B0H + DB 0AFH +L4055: DB 0C1H + DB 033H + DB 0F3H + DB 004H + DB 0B5H +L405A: DB 0C3H + DB 099H + DB 079H + DB 082H + DB 0BAH +L405F: DB 0BFH + DB 0F8H + DB 017H + DB 072H + DB 0B1H +L4064: PUSH DE + CALL L3F35 + POP DE + LD HL,L406F + JP L3500 + +L406F: DB 0BFH + DB 0A9H + DB 0D8H + DB 05BH + DB 0DEH +L4074: DB 000H +L4075: DB 000H +L4076: PUSH DE + EX DE,HL + LD A,(HL) + AND 080H + LD (L4074),A + SET 7,(HL) + LD DE,L2A88 + CALL L3A63 + LD A,080H + JR NC,L40A3 ; (+019H) + LD DE,L3BEE + POP HL + PUSH HL + CALL L3B5C + POP DE + PUSH DE + LD HL,L2A88 + CALL L3B5C + POP DE + PUSH DE + LD HL,L3BEE + CALL L35D0 + XOR A +L40A3: LD (L4075),A + POP HL + PUSH HL + LD DE,L3BEE + CALL L3B5C + POP HL + PUSH HL + CALL L3C0E + LD HL,L3BEE + LD DE,L3BF3 + CALL L3B5C + LD HL,L4121 + CALL L3C0E + LD HL,L4126 + CALL L3C08 + LD HL,L412B + CALL L3C08 + LD HL,L4130 + CALL L3C08 + LD HL,L4135 + CALL L3C08 + LD HL,L413A + CALL L3C08 + LD HL,L413F + CALL L3C08 + LD HL,L4144 + CALL L3C08 + LD HL,L4149 + CALL L3C08 + LD HL,L2A88 + CALL L3C02 + POP HL + PUSH HL + CALL L3C0E + POP DE + PUSH DE + LD HL,L3BEE + CALL L3B5C + LD A,(L4075) + OR A + JR NZ,L411B ; (+010H) + POP DE + PUSH DE + LD HL,L3CE7 + CALL L3B5C + POP DE + PUSH DE + LD HL,L3BEE + DB 0CDH + DB 003H +L411A: DB 034H +L411B: POP HL + LD A,(L4074) + JR L4191 ; (+070H) + +L4121: DB 037H + DB 0CAH + DB 09AH + DB 056H + DB 0DFH +L4126: DB 0BAH + DB 012H + DB 077H + DB 0CCH + DB 0ABH +L412B: DB 03BH + DB 023H + DB 0B2H + DB 05EH + DB 0F8H +L4130: DB 0BCH + DB 020H + DB 063H + DB 090H + DB 0E9H +L4135: DB 03DH + DB 0EEH + DB 03DH + DB 0E0H + DB 0AAH +L413A: DB 0BDH + DB 04FH + DB 01AH + DB 0D5H + DB 0DFH +L413F: DB 03EH + DB 0E3H + DB 0AFH + DB 003H + DB 092H +L4144: DB 0BEH + DB 02AH + DB 07BH + DB 0C7H + DB 0CCH +L4149: DB 03FH + DB 017H + DB 096H + DB 0AAH + DB 0AAH +L414E: DB 000H + DB 000H + DB 000H + DB 000H +L4152: DB 000H +L4153: DB 000H +L4154: DB 000H + DB 000H + DB 000H + DB 000H + DB 000H +L4159: PUSH DE + LD DE,L4154 + CALL L3B5C + POP HL + PUSH HL + LD BC,00004H + ADD HL,BC + LD A,(HL) + OR A + POP HL + PUSH HL + JP P,L348E + LD A,(HL) + AND 080H + LD (L4153),A + SET 7,(HL) + EX DE,HL + CALL L3F35 + LD A,(L4153) + OR A + CALL Z,L41A4 + POP DE + PUSH DE + LD HL,L4154 + CALL L3500 + POP DE + PUSH DE + CALL L3E03 + POP HL + LD A,(L4153) +L4191: OR A + RET NZ +L4193: LD BC,00004H + ADD HL,BC + BIT 7,(HL) + PUSH AF + XOR A + SBC HL,BC + POP AF + RET Z + LD A,(HL) + ADD A,080H + LD (HL),A + RET + +L41A4: LD HL,L4154 + LD DE,L414E + CALL L3B5C + LD DE,L4154 + CALL L3A86 + LD DE,L414E + LD HL,L4154 + CALL L3403 + LD HL,L4152 + LD A,(HL) + OR A + JP M,ILDATERR + LD HL,L4154 + LD A,(HL) + INC HL + LD E,(HL) + INC HL + LD D,(HL) + INC HL + LD C,(HL) + INC HL + LD B,(HL) + AND 07FH + SUB 041H + JR C,L41E6 ; (+010H) + JR Z,L41E3 ; (+00bH) +L41D8: SLA E + RL D + RL C + RL B + DEC A + JR NZ,L41D8 ; (-00bH) +L41E3: RL B + RET C +L41E6: LD A,080H + LD (L4153),A + RET + +L41EC: NOP + LD DE,ATRB + LD HL,L4223 + LD BC,PRNT + LDIR + LD HL,TAPECOPY + LD (DTADR),HL + LD DE,L41EC + EX DE,HL + XOR A + SBC HL,DE + INC HL + LD (SIZE),HL + LD HL,COLDSTRT + LD (EXADR),HL + CALL ?WRI + RET C + LD HL,L41EC + LD A,0C9H + LD (HL),A + CALL ?WRD + PUSH AF + LD A,000H + LD (HL),A + POP AF + RET C + RET + +L4223: DB 001H,"BASIC SA-5510",00DH + NOP diff --git a/dis/SA-5510/SA-5510.ini b/dis/SA-5510/SA-5510.ini new file mode 100644 index 0000000..9c01a64 --- /dev/null +++ b/dis/SA-5510/SA-5510.ini @@ -0,0 +1,568 @@ +---------------------------------------- +-- dZ80 configuration file +---------------------------------------- + +---------------------------------------- +-- Disassembly control +---------------------------------------- + +cpu="z80" +inputfile="SA-5510.bin" +outputfile="SA-5510.asm" +--fileheadersize=27 +filebaseaddr=4605 +disstart=0 +disend=16946 +--disstart=0 +--disend=3584 +--quiet=0 +labelledoutput=1 + +---------------------------------------- +-- Layout +---------------------------------------- + +labelreference=1 +addresscolumn=1 +opcodecolumn=1 +relativejumpcomment=1 +uppercase=1 +autoblanklines=1 +db="db" +comment="; " +radix=16 +numprefix="0" +numsuffix="H" + +---------------------------------------- +-- Scripts +---------------------------------------- + +--script="scripts\\spectrum.lua" + +---------------------------------------- +-- References +---------------------------------------- + +referencefile="SA-5510.ref" +inportreference=1 +outportreference=1 +addressreference=1 +indirectaddressreference=1 +limitreferences=1 + +---------------------------------------- +-- Opcode mapfile and code/data areas +---------------------------------------- + +--opmapfile="mayhem.map" + +-- Code Region isnt required as v2.x sets the entire region to code unless a data region overrides it. +-- d_SetCodeRegion(4608, 2464) + +-- Set the known data regions, either as a data region (byte), word or string. The type affects the assembly output definitions and word +-- regions will attempt to map to an address, ie. jump tables will be setup with labels rather than constants. +d_SetDataRegion( hex("1347"), 100) -- 0x1347 +d_SetStringRegion(hex("1347"), 28) +d_SetStringRegion(hex("1364"), 31) +d_SetStringRegion(hex("1384"), 5) +d_SetStringRegion(hex("138A"), 6) +d_SetStringRegion(hex("1391"), 3) +d_SetStringRegion(hex("1395"), 6) +d_SetStringRegion(hex("139C"), 6) +d_SetDataRegion( hex("2FC2"), 30) +d_SetStringRegion(hex("2FC2"), 6) +d_SetStringRegion(hex("2FC9"), 8) +d_SetStringRegion(hex("2FD2"), 10) +d_SetStringRegion(hex("2FDD"), 2) +d_SetStringRegion(hex("1D44"), 9) + +-- Reserved key words. +d_SetDataRegion( hex("15A8"), 402) -- 0x15A8 Start of tokens. +d_SetStringRegion(hex("15A8"), 2) -- 0 - REM +d_SetStringRegion(hex("15AB"), 3) -- 1 - DATA +d_SetStringRegion(hex("15AF"), 0) -- 2 - undefined +d_SetStringRegion(hex("15B0"), 0) -- 3 - undefined +d_SetStringRegion(hex("15B1"), 3) -- 4 - READ +d_SetStringRegion(hex("15B5"), 3) -- 5 - LIST +d_SetStringRegion(hex("15B9"), 2) -- 6 - RUN +d_SetStringRegion(hex("15BC"), 2) -- 7 - NEW +d_SetStringRegion(hex("15BF"), 4) -- 8 - PRINT +d_SetStringRegion(hex("15C4"), 2) -- 9 - LET +d_SetStringRegion(hex("15C7"), 2) -- 10 - FOR +d_SetStringRegion(hex("15CA"), 1) -- 11 - IF +d_SetStringRegion(hex("15CC"), 3) -- 12 - THEN +d_SetStringRegion(hex("15D0"), 3) -- 13 - GOTO +d_SetStringRegion(hex("15D4"), 4) -- 14 - GOSUB +d_SetStringRegion(hex("15D9"), 5) -- 15 - RETURN +d_SetStringRegion(hex("15DF"), 3) -- 16 - NEXT +d_SetStringRegion(hex("15E3"), 3) -- 17 - STOP +d_SetStringRegion(hex("15E7"), 2) -- 18 - END +d_SetStringRegion(hex("15EA"), 0) -- 19 - undefined +d_SetStringRegion(hex("15EB"), 1) -- 20 - ON +d_SetStringRegion(hex("15ED"), 3) -- 21 - LOAD +d_SetStringRegion(hex("15F1"), 3) -- 22 - SAVE +d_SetStringRegion(hex("15F5"), 5) -- 23 - VERIFY +d_SetStringRegion(hex("15FB"), 3) -- 24 - POKE +d_SetStringRegion(hex("15FF"), 2) -- 25 - DIM +d_SetStringRegion(hex("1602"), 5) -- 26 - DEF FN +d_SetStringRegion(hex("1608"), 4) -- 27 - INPUT +d_SetStringRegion(hex("160D"), 6) -- 28 - RESTORE +d_SetStringRegion(hex("1614"), 2) -- 29 - CLS +d_SetStringRegion(hex("1617"), 4) -- 30 - MUSIC +d_SetStringRegion(hex("161C"), 4) -- 31 - TEMPO +d_SetStringRegion(hex("1621"), 3) -- 32 - USRN +d_SetStringRegion(hex("1625"), 4) -- 33 - WOPEN +d_SetStringRegion(hex("162A"), 4) -- 34 - ROPEN +d_SetStringRegion(hex("162F"), 4) -- 35 - CLOSE +d_SetStringRegion(hex("1634"), 2) -- 36 - MON +d_SetStringRegion(hex("1637"), 4) -- 37 - LIMIT +d_SetStringRegion(hex("163C"), 3) -- 38 - CONT +d_SetStringRegion(hex("1640"), 2) -- 39 - GET +d_SetStringRegion(hex("1643"), 3) -- 40 - INP@ +d_SetStringRegion(hex("1647"), 3) -- 41 - OUT@ +d_SetStringRegion(hex("164B"), 5) -- 42 - CURSOR +d_SetStringRegion(hex("1651"), 2) -- 43 - SET +d_SetStringRegion(hex("1654"), 4) -- 44 - RESET +d_SetStringRegion(hex("1659"), 0) -- 45 - undefined +d_SetStringRegion(hex("165A"), 0) -- 46 - undefined +d_SetStringRegion(hex("165B"), 0) -- 47 - undefined +d_SetStringRegion(hex("165C"), 0) -- 48 - undefined +d_SetStringRegion(hex("165D"), 0) -- 49 - undefined +d_SetStringRegion(hex("165E"), 0) -- 59 - undefined +d_SetStringRegion(hex("165F"), 3) -- 51 - AUTO +d_SetStringRegion(hex("1663"), 0) -- 52 - undefined +d_SetStringRegion(hex("1664"), 0) -- 53 - undefined +d_SetStringRegion(hex("1665"), 5) -- 54 - COPY/P +d_SetStringRegion(hex("166B"), 5) -- 55 - PAGE/P +d_SetStringRegion(hex("1671"), 0) -- 56 - undefined +d_SetStringRegion(hex("1672"), 0) -- 57 - undefined +d_SetStringRegion(hex("1673"), 0) -- 58 - undefined +d_SetStringRegion(hex("1674"), 0) -- 59 - undefined +d_SetStringRegion(hex("1675"), 0) -- 60 - undefined +d_SetStringRegion(hex("1676"), 0) -- 61 - undefined +d_SetStringRegion(hex("1677"), 0) -- 62 - undefined +d_SetStringRegion(hex("1678"), 0) -- 63 - undefined +d_SetStringRegion(hex("1679"), 0) -- 64 - undefined +d_SetStringRegion(hex("167A"), 0) -- 65 - undefined +d_SetStringRegion(hex("167B"), 1) -- 66 - undefined +d_SetStringRegion(hex("167D"), 1) -- 67 - undefined + +-- Functions +d_SetStringRegion(hex("167F"), 1) -- >= +d_SetStringRegion(hex("1681"), 1) -- <> +d_SetStringRegion(hex("1683"), 1) -- =< +d_SetStringRegion(hex("1685"), 1) -- <= +d_SetStringRegion(hex("1687"), 1) -- <= +d_SetStringRegion(hex("1689"), 1) -- <= +d_SetStringRegion(hex("168B"), 0) -- undefined +d_SetStringRegion(hex("168C"), 0) -- <= +d_SetStringRegion(hex("168D"), 0) -- <= +d_SetStringRegion(hex("168E"), 0) -- undefined +d_SetStringRegion(hex("168F"), 0) -- undefined +d_SetStringRegion(hex("1690"), 0) -- undefined +d_SetStringRegion(hex("1691"), 0) -- undefined +d_SetStringRegion(hex("1692"), 0) -- undefined +d_SetStringRegion(hex("1693"), 0) -- undefined +d_SetStringRegion(hex("1694"), 0) -- undefined +d_SetStringRegion(hex("1695"), 0) -- undefined +d_SetStringRegion(hex("1696"), 0) -- undefined +d_SetStringRegion(hex("1697"), 0) -- undefined +d_SetStringRegion(hex("1698"), 0) -- undefined +d_SetStringRegion(hex("1699"), 0) -- undefined +d_SetStringRegion(hex("169A"), 0) -- undefined +d_SetStringRegion(hex("169B"), 0) -- undefined +d_SetStringRegion(hex("169C"), 0) -- undefined +d_SetStringRegion(hex("169D"), 0) -- undefined +d_SetStringRegion(hex("168E"), 0) -- undefined +d_SetStringRegion(hex("168F"), 0) -- undefined +d_SetStringRegion(hex("16A0"), 1) -- TO +d_SetStringRegion(hex("16A2"), 3) -- STEP +d_SetStringRegion(hex("16A6"), 5) -- LEFT$( +d_SetStringRegion(hex("16AC"), 6) -- RIGHT$( +d_SetStringRegion(hex("16B3"), 4) -- MID$( +d_SetStringRegion(hex("16B8"), 3) -- LEN( +d_SetStringRegion(hex("16BC"), 4) -- CHR$( +d_SetStringRegion(hex("16C1"), 4) -- STR$( +d_SetStringRegion(hex("16C6"), 3) -- ASC( +d_SetStringRegion(hex("16CA"), 3) -- VAL( +d_SetStringRegion(hex("16CE"), 4) -- PEEK( +d_SetStringRegion(hex("16D3"), 3) -- TAB( +d_SetStringRegion(hex("16D7"), 6) -- SPACE$( +d_SetStringRegion(hex("16DE"), 3) -- SIZE +d_SetStringRegion(hex("16E2"), 2) -- undefined +d_SetStringRegion(hex("16E5"), 6) -- STRING$( +d_SetStringRegion(hex("16ED"), 0) -- undefined +d_SetStringRegion(hex("16EE"), 10) -- CHARACTER$( +d_SetStringRegion(hex("16F9"), 2) -- CSR +d_SetStringRegion(hex("16FC"), 12) -- undefined +d_SetStringRegion(hex("1709"), 3) -- RND( +d_SetStringRegion(hex("170D"), 3) -- SIN( +d_SetStringRegion(hex("1711"), 3) -- COS( +d_SetStringRegion(hex("1715"), 3) -- TAN( +d_SetStringRegion(hex("1719"), 3) -- ATN( +d_SetStringRegion(hex("171D"), 3) -- EXP( +d_SetStringRegion(hex("1721"), 3) -- INT( +d_SetStringRegion(hex("1725"), 3) -- LOG( +d_SetStringRegion(hex("1729"), 2) -- LN( +d_SetStringRegion(hex("172C"), 3) -- ABS( +d_SetStringRegion(hex("1730"), 3) -- SGN( +d_SetStringRegion(hex("1734"), 3) -- SQR( +d_SetStringRegion(hex("1738"), 2) -- End of Table + + +d_SetDataRegion( hex("13AB"), 77) -- 0x13AB +d_SetStringRegion(hex("4223"), 15) -- 0x4223 BASIC SA-5510 +d_SetDataRegion( hex("1D15"), 2) -- 0x1D15 Data +d_SetDataRegion( hex("1C4C"), 1) +d_SetDataRegion( hex("1C63"), 1) -- 0x1C63 Data +d_SetWordRegion( hex("1BB2"), 128) -- 0x1BB2 Data +d_SetDataRegion( hex("3400"), 3) -- 0x3400 Data +d_SetDataRegion( hex("3404"), 1) -- 0x3404 Data +d_SetDataRegion( hex("2355"), 1) -- 0x2355 Data +d_SetDataRegion( hex("239F"), 1) -- 0x239f Data +d_SetWordRegion( hex("2691"), 34) +d_SetWordRegion( hex("26B3"), 40) +d_SetWordRegion( hex("26DB"), 24) +d_SetDataRegion( hex("26F3"), 6) +d_SetDataRegion( hex("27B2"), 2) -- 0x27B2 Data +d_SetDataRegion( hex("2884"), 1) -- 0x2885 Data +d_SetDataRegion( hex("2A83"), 25) -- 0x2A83 Data +--d_SetDataRegion( hex("2B3D"), 2) -- 0x2B3D Data +--d_SetDataRegion( hex("2D1D"), 2) -- 0x2D1D Data + +-- Function table. +d_SetWordRegion( hex("22E1"), 18) + +-- Function calls, CALL +d_SetDataRegion( hex("204A"), 2) +d_SetDataRegion( hex("12CE"), 1) +d_SetWordRegion( hex("12CF"), 2) +d_SetDataRegion( hex("1A78"), 1) +d_SetWordRegion( hex("1A79"), 2) +d_SetDataRegion( hex("1C54"), 1) +d_SetWordRegion( hex("1C55"), 2) +d_SetDataRegion( hex("1E23"), 1) +d_SetWordRegion( hex("1E24"), 2) +d_SetDataRegion( hex("20EB"), 1) +d_SetWordRegion( hex("20EC"), 2) +d_SetDataRegion( hex("21B3"), 1) +d_SetWordRegion( hex("21B4"), 2) +d_SetDataRegion( hex("287F"), 1) +d_SetWordRegion( hex("2880"), 2) +d_SetDataRegion( hex("2949"), 1) +d_SetWordRegion( hex("294A"), 2) +d_SetDataRegion( hex("29A2"), 1) +d_SetWordRegion( hex("29A3"), 2) +d_SetDataRegion( hex("2A3A"), 1) +d_SetWordRegion( hex("2A3B"), 2) +d_SetDataRegion( hex("2A4E"), 1) +d_SetWordRegion( hex("2A4F"), 2) +d_SetDataRegion( hex("2B10"), 1) +d_SetWordRegion( hex("2B11"), 2) +d_SetDataRegion( hex("2B32"), 1) +d_SetWordRegion( hex("2B33"), 2) +d_SetDataRegion( hex("2B6C"), 1) +d_SetWordRegion( hex("2B6D"), 2) +d_SetDataRegion( hex("2C05"), 1) +d_SetWordRegion( hex("2C06"), 2) +d_SetDataRegion( hex("2CFF"), 1) +d_SetWordRegion( hex("2D00"), 2) +d_SetDataRegion( hex("2D56"), 1) +d_SetWordRegion( hex("2D57"), 2) +d_SetDataRegion( hex("2D5C"), 1) +d_SetWordRegion( hex("2D5D"), 2) +d_SetDataRegion( hex("2CB2"), 1) +d_SetWordRegion( hex("2CB3"), 2) +d_SetDataRegion( hex("2D78"), 1) +d_SetWordRegion( hex("2D79"), 2) +d_SetDataRegion( hex("2D88"), 1) +d_SetWordRegion( hex("2D89"), 2) +d_SetDataRegion( hex("2D95"), 1) +d_SetWordRegion( hex("2D96"), 2) +d_SetDataRegion( hex("2DA2"), 1) +d_SetWordRegion( hex("2DA3"), 2) +d_SetDataRegion( hex("2DB0"), 1) +d_SetWordRegion( hex("2DB1"), 2) +d_SetDataRegion( hex("2E97"), 1) +d_SetWordRegion( hex("2E98"), 2) +d_SetDataRegion( hex("2FE7"), 1) +d_SetWordRegion( hex("2FE8"), 2) +d_SetDataRegion( hex("3323"), 1) +d_SetWordRegion( hex("3324"), 2) + +d_SetDataRegion( hex("2D74"), 1) + +d_SetDataRegion( hex("2E33"), 32) +d_SetDataRegion( hex("2EB0"), 3) +d_SetDataRegion( hex("2F8C"), 2) +d_SetDataRegion( hex("2FE8"), 2) +d_SetDataRegion( hex("37AE"), 269) +d_SetDataRegion( hex("3CE7"), 30) +d_SetDataRegion( hex("3F05"), 48) +d_SetDataRegion( hex("4041"), 35) +d_SetDataRegion( hex("406F"), 7) +d_SetDataRegion( hex("4121"), 56) + + +d_SetDataRegion( hex("18BE"), 3) +d_SetDataRegion( hex("18D7"), 3) +d_SetDataRegion( hex("1CAA"), 2) +d_SetWordRegion( hex("1D90"), 2) +d_SetDataRegion( hex("2104"), 3) +--d_SetDataRegion( hex("2221"), 3) +d_SetDataRegion( hex("2317"), 1) +d_SetDataRegion( hex("270F"), 3) +d_SetWordRegion( hex("2929"), 2) +d_SetDataRegion( hex("2A14"), 2) +d_SetDataRegion( hex("2A2A"), 2) +d_SetDataRegion( hex("2C8B"), 3) +d_SetWordRegion( hex("2CDE"), 2) +d_SetDataRegion( hex("2D10"), 2) +d_SetWordRegion( hex("2D90"), 2) +d_SetDataRegion( hex("30F4"), 3) +d_SetDataRegion( hex("3BE9"), 25) +d_SetDataRegion( hex("4118"), 3) + +d_SetDataRegion( hex("3DED"), 5) +d_SetDataRegion( hex("3DF2"), 5) +d_SetDataRegion( hex("3DF7"), 5) +d_SetDataRegion( hex("3DFC"), 5) + +d_SetDataRegion( hex("1B42"), 1) +d_SetDataRegion( hex("1C5A"), 1) +d_SetDataRegion( hex("1D02"), 1) +d_SetDataRegion( hex("1D89"), 1) +d_SetDataRegion( hex("1F31"), 1) +d_SetDataRegion( hex("204F"), 1) +d_SetDataRegion( hex("208F"), 1) +d_SetDataRegion( hex("2116"), 1) +d_SetDataRegion( hex("220F"), 1) +d_SetDataRegion( hex("221B"), 1) +d_SetDataRegion( hex("221F"), 1) +d_SetDataRegion( hex("245F"), 1) +d_SetDataRegion( hex("24FD"), 1) +d_SetDataRegion( hex("2715"), 1) +d_SetDataRegion( hex("284E"), 1) +d_SetDataRegion( hex("2855"), 1) +d_SetDataRegion( hex("288F"), 1) +d_SetDataRegion( hex("28C6"), 1) +d_SetDataRegion( hex("2AB3"), 1) +d_SetDataRegion( hex("2B75"), 1) +d_SetDataRegion( hex("2C21"), 1) +d_SetDataRegion( hex("2CEF"), 1) +d_SetDataRegion( hex("2D7E"), 1) +d_SetDataRegion( hex("2D8E"), 1) +d_SetDataRegion( hex("2D9B"), 1) +d_SetDataRegion( hex("2DA8"), 1) +d_SetDataRegion( hex("2DB6"), 1) + + +-- Create a mapping table of known Sharp I/O ports and 8 bit constants. +-- +-- Format Addr IsAddr Label : IsAddr = 0, value is a constant, = 1, value is an address. +d_SetByteEquate(hex("FE") , 1, "PRTC" ) +d_SetByteEquate(hex("FF") , 1, "PRTD" ) + +-- Create a mapping table of known Sharp MZ BIOS/Memory Mapped Hardware addresses which dz80 +-- can use to replace an address with the label. The EQU list will also be output at the start +-- of the disassembly file so it can compile. +-- Format Addr IsAddr Label : IsAddr = 0, value is a constant, = 1, value is an address. +d_SetWordEquate(hex("0003"), 1, "GETL" ) +d_SetWordEquate(hex("0006"), 1, "LETNL" ) +d_SetWordEquate(hex("0009"), 1, "NL" ) +d_SetWordEquate(hex("000C"), 1, "PRNTS" ) +d_SetWordEquate(hex("000F"), 1, "PRNTT" ) +d_SetWordEquate(hex("0012"), 1, "PRNT" ) +d_SetWordEquate(hex("0015"), 1, "MSG" ) +d_SetWordEquate(hex("0018"), 1, "MSGX" ) +d_SetWordEquate(hex("001B"), 1, "GETKY" ) +d_SetWordEquate(hex("001E"), 1, "BRKEY" ) +d_SetWordEquate(hex("0021"), 1, "?WRI" ) +d_SetWordEquate(hex("0024"), 1, "?WRD" ) +d_SetWordEquate(hex("0027"), 1, "?RDI" ) +d_SetWordEquate(hex("002A"), 1, "?RDD" ) +d_SetWordEquate(hex("002D"), 1, "?VRFY" ) +d_SetWordEquate(hex("0030"), 1, "MELDY" ) +d_SetWordEquate(hex("0033"), 1, "?TMST" ) +d_SetWordEquate(hex("003B"), 1, "TIMRD" ) +d_SetWordEquate(hex("003E"), 1, "BELL" ) +d_SetWordEquate(hex("0041"), 1, "XTEMP" ) +d_SetWordEquate(hex("0044"), 1, "MSTA" ) +d_SetWordEquate(hex("0047"), 1, "MSTP" ) +d_SetWordEquate(hex("0000"), 1, "MONIT" ) +d_SetWordEquate(hex("0089"), 1, "SS" ) +d_SetWordEquate(hex("0095"), 1, "ST1" ) +d_SetWordEquate(hex("0410"), 1, "HLHEX" ) +d_SetWordEquate(hex("041F"), 1, "_2HEX" ) +d_SetWordEquate(hex("074D"), 1, "?MODE" ) +d_SetWordEquate(hex("08CA"), 1, "?KEY" ) +d_SetWordEquate(hex("096C"), 1, "PRNT3" ) +d_SetWordEquate(hex("0BB9"), 1, "?ADCN" ) +d_SetWordEquate(hex("0BCE"), 1, "?DACN" ) +d_SetWordEquate(hex("0DB5"), 1, "?DSP" ) +d_SetWordEquate(hex("0DA6"), 1, "?BLNK" ) +d_SetWordEquate(hex("0DDC"), 1, "?DPCT" ) +d_SetWordEquate(hex("03BA"), 1, "PRTHL" ) +d_SetWordEquate(hex("03C3"), 1, "PRTHX" ) +d_SetWordEquate(hex("03DA"), 1, "ASC" ) +d_SetWordEquate(hex("03F9"), 1, "HEX" ) +d_SetWordEquate(hex("0DDC"), 1, "DPCT" ) +d_SetWordEquate(hex("0DA7"), 1, "DLY12" ) +d_SetWordEquate(hex("0DAA"), 1, "DLY12A" ) +d_SetWordEquate(hex("0EE6"), 1, "?RSTR1" ) +d_SetWordEquate(hex("06A3"), 1, "MOTOR" ) +d_SetWordEquate(hex("071A"), 1, "CKSUM" ) +d_SetWordEquate(hex("077A"), 1, "GAP" ) +d_SetWordEquate(hex("0485"), 1, "WTAPE" ) +d_SetWordEquate(hex("0700"), 1, "MSTOP" ) +d_SetWordEquate(hex("11FD"), 1, "TAPECOPY" ) +d_SetWordEquate(hex("1200"), 1, "COLDSTRT" ) +d_SetWordEquate(hex("1250"), 1, "WARMSTRTMON") +d_SetWordEquate(hex("15A8"), 1, "CMDWORDTBL" ) +d_SetWordEquate(hex("1BB2"), 1, "CMDJMPTBL" ) +d_SetWordEquate(hex("2E33"), 1, "CMTBUF" ) +d_SetWordEquate(hex("2E34"), 1, "CMTFNAME" ) + +d_SetWordEquate(hex("1C3C"), 1, "CMDREMDATA" ) +d_SetWordEquate(hex("13AB"), 1, "SYNTAXERR" ) +d_SetWordEquate(hex("2D12"), 1, "CMDREAD" ) +d_SetWordEquate(hex("1C4D"), 1, "CMDLIST" ) +d_SetWordEquate(hex("1E91"), 1, "CMDRUN" ) +d_SetWordEquate(hex("1C42"), 1, "CMDNEW" ) +d_SetWordEquate(hex("2B0D"), 1, "CMDPRINT" ) +d_SetWordEquate(hex("1D6A"), 1, "CMDLET" ) +d_SetWordEquate(hex("1F2B"), 1, "CMDFOR" ) +d_SetWordEquate(hex("21AD"), 1, "CMDIF" ) +d_SetWordEquate(hex("13AB"), 1, "CMDTHEN" ) +d_SetWordEquate(hex("1EA6"), 1, "CMDGOTO" ) +d_SetWordEquate(hex("1EC7"), 1, "CMDGOSUB" ) +d_SetWordEquate(hex("1EF8"), 1, "CMDRETURN" ) +d_SetWordEquate(hex("1FC0"), 1, "CMDNEXT" ) +d_SetWordEquate(hex("1D2C"), 1, "CMDSTOP" ) +d_SetWordEquate(hex("1D15"), 1, "CMDEND" ) +d_SetWordEquate(hex("203E"), 1, "CMDON" ) +d_SetWordEquate(hex("2D75"), 1, "CMDLOAD" ) +d_SetWordEquate(hex("2D82"), 1, "CMDSAVE" ) +d_SetWordEquate(hex("2EB3"), 1, "CMDVERIFY" ) +d_SetWordEquate(hex("2191"), 1, "CMDPOKE" ) +d_SetWordEquate(hex("2080"), 1, "CMDDIM" ) +d_SetWordEquate(hex("2201"), 1, "CMDDEFFN" ) +d_SetWordEquate(hex("2BFF"), 1, "CMDINPUT" ) +d_SetWordEquate(hex("1D4D"), 1, "CMDRESTORE" ) +d_SetWordEquate(hex("21A6"), 1, "CMDCLS" ) +d_SetWordEquate(hex("2269"), 1, "CMDMUSIC" ) +d_SetWordEquate(hex("2282"), 1, "CMDTEMPO" ) +d_SetWordEquate(hex("2942"), 1, "CMDUSRN" ) +d_SetWordEquate(hex("2D9F"), 1, "CMDWOPEN" ) +d_SetWordEquate(hex("2D92"), 1, "CMDROPEN" ) +d_SetWordEquate(hex("2DAD"), 1, "CMDCLOSE" ) +d_SetWordEquate(hex("28B6"), 1, "CMDMON" ) +d_SetWordEquate(hex("2967"), 1, "CMDLIMIT" ) +d_SetWordEquate(hex("29CE"), 1, "CMDCONT" ) +d_SetWordEquate(hex("2902"), 1, "CMDGET" ) +d_SetWordEquate(hex("29FE"), 1, "CMDINP" ) +d_SetWordEquate(hex("2A1C"), 1, "CMDOUT" ) +d_SetWordEquate(hex("28B9"), 1, "CMDCURSOR" ) +d_SetWordEquate(hex("2AA6"), 1, "CMDSET" ) +d_SetWordEquate(hex("2AAA"), 1, "CMDRESET" ) +d_SetWordEquate(hex("2A2F"), 1, "CMDAUTO" ) +d_SetWordEquate(hex("33AB"), 1, "CMDCOPY" ) +d_SetWordEquate(hex("32D4"), 1, "CMDPAGE" ) + +d_SetWordEquate(hex("13AE"), 1, "OVFLERR" ) +d_SetWordEquate(hex("13B1"), 1, "ILDATERR" ) +d_SetWordEquate(hex("13B4"), 1, "DATMISERR" ) +d_SetWordEquate(hex("13B7"), 1, "STRLENERR" ) +d_SetWordEquate(hex("13BA"), 1, "MEMERR" ) +d_SetWordEquate(hex("13C0"), 1, "LINELENERR" ) +d_SetWordEquate(hex("13C3"), 1, "GOSUBERR" ) +d_SetWordEquate(hex("13C6"), 1, "FORNEXTERR" ) +d_SetWordEquate(hex("13C9"), 1, "FUNCERR" ) +d_SetWordEquate(hex("13CC"), 1, "NEXTFORERR" ) +d_SetWordEquate(hex("13CF"), 1, "RETGOSBERR" ) +d_SetWordEquate(hex("13D2"), 1, "UNDEFFNERR" ) +d_SetWordEquate(hex("13D5"), 1, "LINEERR" ) +d_SetWordEquate(hex("13D8"), 1, "CONTERR" ) +d_SetWordEquate(hex("13DB"), 1, "BADWRERR" ) +d_SetWordEquate(hex("13DE"), 1, "CMDSTMTERR" ) +d_SetWordEquate(hex("13E1"), 1, "READDATAERR") +d_SetWordEquate(hex("13E4"), 1, "OPENERR" ) +d_SetWordEquate(hex("13E7"), 1, "UNKNWNERR" ) +d_SetWordEquate(hex("13EA"), 1, "OUTFILEERR" ) +d_SetWordEquate(hex("13ED"), 1, "PRTNRDYERR" ) +d_SetWordEquate(hex("13F0"), 1, "PRTHWERR" ) +d_SetWordEquate(hex("13F3"), 1, "PRTPAPERERR") +d_SetWordEquate(hex("13F6"), 1, "CHKSUMERR" ) + +d_SetWordEquate(hex("1347"), 1, "TITLEMSG" ) +d_SetWordEquate(hex("1364"), 1, "COPYRMSG" ) +d_SetWordEquate(hex("1384"), 1, "READYMSG" ) +d_SetWordEquate(hex("138A"), 1, "ERRORMSG" ) +d_SetWordEquate(hex("1391"), 1, "INMSG" ) +d_SetWordEquate(hex("1395"), 1, "BREAKMSG" ) +d_SetWordEquate(hex("139C"), 1, "BYTESMSG" ) +d_SetWordEquate(hex("13A3"), 1, "ERRCODE" ) + +d_SetWordEquate(hex("1332"), 1, "MSGNL" ) +d_SetWordEquate(hex("167B"), 1, "UNUSEDTBL1" ) +d_SetWordEquate(hex("167D"), 1, "UNUSEDTBL2" ) +d_SetWordEquate(hex("124E"), 1, "WARMSTRT" ) +d_SetWordEquate(hex("167F"), 1, "OPERATORTBL") +d_SetWordEquate(hex("17FC"), 1, "STRTONUM" ) +d_SetWordEquate(hex("1E88"), 1, "GETNUM" ) +d_SetWordEquate(hex("173F"), 1, "SKIPSPACE" ) +d_SetWordEquate(hex("173E"), 1, "INCSKIPSPCE") +d_SetWordEquate(hex("177B"), 1, "EXECHL" ) +d_SetWordEquate(hex("1795"), 1, "EXECNOTCHR" ) +d_SetWordEquate(hex("17A3"), 1, "MATCHCHR" ) +d_SetWordEquate(hex("490D"), 0, "LINEBUFR" ) + + +d_SetComment( hex("1795"), "Scan for character after command" ) +d_SetComment( hex("1779"), "Get address after call and jump to it via a RET command." ) +d_SetComment( hex("2E1D"), "Compare loaded filename against name given by user." ) +d_SetComment( hex("2B0D"), "Check to see if a stream, ie. /T = Tape is given. The 02FH below is / and the function after is called if it doesnt match /." ) +d_SetComment( hex("1250"), "Sharp defined BASIC restart location from Monitor." ) + +-- Known Sharp Constants. +d_SetWordEquate(hex("10F0"), 0, "ATRB" ) -- ATTRIBUTE +d_SetWordEquate(hex("10F1"), 0, "NAME" ) -- FILE NAME +d_SetWordEquate(hex("1102"), 0, "SIZE" ) -- BYTESIZE +d_SetWordEquate(hex("1104"), 0, "DTADR" ) -- DATA ADDRESS +d_SetWordEquate(hex("1106"), 0, "EXADR" ) -- EXECUTION ADDRESS +d_SetWordEquate(hex("1108"), 0, "COMNT" ) -- COMMENT +d_SetWordEquate(hex("1164"), 0, "SWPW" ) -- SWEEP WORK +d_SetWordEquate(hex("116E"), 0, "KDATW" ) -- KEY WORK +d_SetWordEquate(hex("1170"), 0, "KANAF" ) -- KANA FLAG (01=GRAPHIC MODE) +d_SetWordEquate(hex("1171"), 0, "DSPXY" ) -- DISPLAY COORDINATES +d_SetWordEquate(hex("1173"), 0, "MANG" ) -- COLUMN MANAGEMENT +d_SetWordEquate(hex("1179"), 0, "MANGE" ) -- COLUMN MANAGEMENT END +d_SetWordEquate(hex("117A"), 0, "PBIAS" ) -- PAGE BIAS +d_SetWordEquate(hex("117B"), 0, "ROLTOP" ) -- ROLL TOP BIAS +d_SetWordEquate(hex("117C"), 0, "MGPNT" ) -- COLUMN MANAG. POINTER +d_SetWordEquate(hex("117D"), 0, "PAGETP" ) -- PAGE TOP +d_SetWordEquate(hex("117F"), 0, "ROLEND" ) -- ROLL END +d_SetWordEquate(hex("118E"), 0, "FLASH" ) -- FLASHING DATA +d_SetWordEquate(hex("118F"), 0, "SFTLK" ) -- SHIFT LOCK +d_SetWordEquate(hex("1190"), 0, "REVFLG" ) -- REVERSE FLAG +d_SetWordEquate(hex("1191"), 0, "SPAGE" ) -- PAGE CHANGE +d_SetWordEquate(hex("1192"), 0, "FLSDT" ) -- CURSOR DATA +d_SetWordEquate(hex("1193"), 0, "STRGF" ) -- STRING FLAG +d_SetWordEquate(hex("1194"), 0, "DPRNT" ) -- TAB COUNTER +d_SetWordEquate(hex("1195"), 0, "TMCNT" ) -- TAPE MARK COUNTER +d_SetWordEquate(hex("1197"), 0, "SUMDT" ) -- CHECK SUM DATA +d_SetWordEquate(hex("1199"), 0, "CSMDT" ) -- FOR COMPARE SUM DATA +d_SetWordEquate(hex("119B"), 0, "AMPM" ) -- AMPM DATA +d_SetWordEquate(hex("119C"), 0, "TIMFG" ) -- TIME FLAG +d_SetWordEquate(hex("119D"), 0, "SWRK" ) -- KEY SOUND FLAG +d_SetWordEquate(hex("119E"), 0, "TEMPW" ) -- TEMPO WORK +d_SetWordEquate(hex("119F"), 0, "ONTYO" ) -- ONTYO WORK +d_SetWordEquate(hex("11A0"), 0, "OCTV" ) -- OCTAVE WORK +d_SetWordEquate(hex("11A1"), 0, "RATIO" ) -- ONPU RATIO +d_SetWordEquate(hex("11A3"), 0, "BUFER" ) -- GET LINE BUFFER + + +---------------------------------------- +-- End of configuration file +---------------------------------------- diff --git a/dis/SA-5510/SA-5510.ref b/dis/SA-5510/SA-5510.ref new file mode 100644 index 0000000..0fec0fd --- /dev/null +++ b/dis/SA-5510/SA-5510.ref @@ -0,0 +1,2643 @@ +dZ80 2.1 Reference file from the disassembly of "SA-5510.bin". + +Input Port Reference (2 entries) +-------------------------------- + +Input Port 000feH. 2 references: +-------------------------------- + + 0328aH: IN A,(0FEH) + 032aeH: IN A,(0FEH) + + +Output Port Reference (3 entries) +--------------------------------- + +Output Port 000feH. 2 references: +--------------------------------- + + 0329aH: OUT (0FEH),A + 032a2H: OUT (0FEH),A + +Output Port 000ffH. 1 references: +--------------------------------- + + 03296H: OUT (0FFH),A + + +Direct address Reference (598 entries) +-------------------------------------- + +Direct address 00000H. 20 references: +------------------------------------- + + 017d5H: LD DE,00000H + 0184aH: LD BC,00000H + 018fdH: LD BC,00000H + 01910H: LD BC,00000H + 01944H: LD HL,00000H + 019f9H: LD BC,00000H + 01a52H: LD DE,00000H + 02083H: LD BC,00000H + 02492H: LD BC,00000H + 025feH: LD BC,00000H + 027f5H: LD DE,00000H + 02919H: LD BC,00000H + 0292eH: LD DE,00000H + 029a5H: LD DE,00000H + 02e0aH: LD BC,00000H + 032abH: LD DE,00000H + 03540H: LD HL,00000H + 035a4H: LD DE,00000H + 03cdeH: LD BC,00000H + 03ce1H: LD DE,00000H + +Direct address 00001H. 4 references: +------------------------------------ + + 01ce9H: LD BC,00001H + 02779H: LD BC,00001H + 02872H: LD BC,00001H + 0359fH: LD DE,00001H + +Direct address 00002H. 1 references: +------------------------------------ + + 020aaH: LD HL,00002H + +Direct address 00003H. 3 references: +------------------------------------ + + 0223dH: LD BC,00003H + 02e54H: LD HL,00003H + 0398dH: LD BC,00003H + +Direct address 00004H. 10 references: +------------------------------------- + + 018f3H: LD BC,00004H + 01b57H: LD BC,00004H + 020b6H: LD HL,00004H + 02415H: LD BC,00004H + 02596H: LD BC,00004H + 03525H: LD BC,00004H + 03b9bH: LD BC,00004H + 03d4fH: LD BC,00004H + 04162H: LD BC,00004H + 04193H: LD BC,00004H + +Direct address 00005H. 19 references: +------------------------------------- + + 01930H: LD BC,00005H + 01e6aH: LD BC,00005H + 01f66H: LD BC,00005H + 01ffcH: LD BC,00005H + 0200cH: LD BC,00005H + 0201fH: LD BC,00005H + 020f5H: LD BC,00005H + 02154H: LD HL,00005H + 023bfH: LD BC,00005H + 023faH: LD BC,00005H + 024c1H: LD BC,00005H + 02540H: LD BC,00005H + 0261eH: LD HL,00005H + 02626H: LD BC,00005H + 027f2H: LD BC,00005H + 03756H: LD BC,00005H + 039b4H: LD BC,00005H + 03a63H: LD BC,00005H + 03b5cH: LD BC,00005H + +Direct address 00006H. 3 references: +------------------------------------ + + 01bacH: LD BC,00006H + 02129H: LD DE,00006H + 029f1H: LD BC,00006H + +Direct address 00007H. 2 references: +------------------------------------ + + 01ee5H: LD BC,00007H + 01f20H: LD BC,00007H + +Direct address 00008H. 2 references: +------------------------------------ + + 021c7H: LD BC,00008H + 0396bH: LD BC,00008H + +Direct address 00009H. 2 references: +------------------------------------ + + 02dc4H: LD DE,00009H + 03a52H: LD BC,00009H + +Direct address 0000aH. 5 references: +------------------------------------ + + 0123cH: LD BC,0000AH + 01817H: LD DE,0000AH + 02a5fH: LD DE,0000AH + 02a6cH: LD DE,0000AH + 02a71H: LD DE,0000AH + +Direct address 00012H. 4 references: +------------------------------------ + + 01f81H: LD BC,00012H + 01fe8H: LD BC,00012H + 0302bH: LD BC,00012H + 041f3H: LD BC,00012H + +Direct address 00013H. 2 references: +------------------------------------ + + 01f11H: LD BC,00013H + 01fa9H: LD BC,00013H + +Direct address 0003cH. 1 references: +------------------------------------ + + 01e4cH: LD HL,0003CH + +Direct address 00064H. 1 references: +------------------------------------ + + 01811H: LD DE,00064H + +Direct address 000c8H. 1 references: +------------------------------------ + + 02989H: LD BC,000C8H + +Direct address 00100H. 3 references: +------------------------------------ + + 025f9H: LD BC,00100H + 030ffH: LD HL,00100H + 03163H: LD HL,00100H + +Direct address 00106H. 1 references: +------------------------------------ + + 025d2H: LD BC,00106H + +Direct address 003e8H. 2 references: +------------------------------------ + + 0180bH: LD DE,003E8H + 0334fH: LD HL,003E8H + +Direct address 003f0H. 1 references: +------------------------------------ + + 0332eH: LD BC,003F0H + +Direct address 00500H. 1 references: +------------------------------------ + + 0330eH: LD BC,00500H + +Direct address 00d00H. 1 references: +------------------------------------ + + 03b24H: LD BC,00D00H + +Direct address 00d2cH. 1 references: +------------------------------------ + + 019f6H: LD DE,00D2CH + +Direct address 00e10H. 1 references: +------------------------------------ + + 01e3aH: LD HL,00E10H + +Direct address ATRB. 4 references: +---------------------------------- + + 02eefH: LD HL,010F0H + 03025H: LD DE,010F0H + 03140H: LD HL,010F0H + 041edH: LD DE,010F0H + +Direct address NAME. 1 references: +---------------------------------- + + 02f72H: LD DE,010F1H + +Direct address DTADR. 1 references: +----------------------------------- + + 02f2cH: LD (01104H),DE + +Direct address SFTLK. 1 references: +----------------------------------- + + 01342H: LD HL,0118FH + +Direct address 011fdH. 1 references: +------------------------------------ + + 041f8H: LD HL,011FDH + +Direct address 01200H. 1 references: +------------------------------------ + + 04209H: LD HL,01200H + +Direct address 0124eH. 1 references: +------------------------------------ + + 0143eH: LD BC,0124EH + +Direct address 012b8H. 1 references: +------------------------------------ + + 01262H: LD HL,012B8H + +Direct address 01347H. 1 references: +------------------------------------ + + 0122aH: LD DE,01347H + +Direct address 01364H. 1 references: +------------------------------------ + + 01230H: LD DE,01364H + +Direct address 01384H. 1 references: +------------------------------------ + + 0125cH: LD DE,01384H + +Direct address 0138aH. 1 references: +------------------------------------ + + 0142aH: LD DE,0138AH + +Direct address 01391H. 1 references: +------------------------------------ + + 0144dH: LD DE,01391H + +Direct address 01395H. 1 references: +------------------------------------ + + 01438H: LD DE,01395H + +Direct address 0139cH. 1 references: +------------------------------------ + + 01248H: LD DE,0139CH + +Direct address 013a5H. 1 references: +------------------------------------ + + 01ba3H: LD DE,013A5H + +Direct address 013abH. 29 references: +------------------------------------- + + 01bb6H: XOR E + 01bb8H: XOR E + 01bcaH: XOR E + 01bd8H: XOR E + 01c0cH: XOR E + 01c0eH: XOR E + 01c10H: XOR E + 01c12H: XOR E + 01c14H: XOR E + 01c16H: XOR E + 01c1aH: XOR E + 01c1cH: XOR E + 01c22H: XOR E + 01c24H: XOR E + 01c26H: XOR E + 01c28H: XOR E + 01c2aH: XOR E + 01c2cH: XOR E + 01c2eH: XOR E + 01c30H: XOR E + 026a3H: XOR E + 026a5H: XOR E + 026a7H: XOR E + 026cbH: XOR E + 026cdH: XOR E + 026cfH: XOR E + 026d3H: XOR E + 026d9H: XOR E + 02a4fH: XOR E + +Direct address 013b1H. 1 references: +------------------------------------ + + 01e24H: OR C + +Direct address 013b4H. 2 references: +------------------------------------ + + 01d90H: OR H + 02929H: OR H + +Direct address 01400H. 1 references: +------------------------------------ + + 013faH: LD IY,01400H + +Direct address 01464H. 1 references: +------------------------------------ + + 029eeH: LD DE,01464H + +Direct address 01479H. 1 references: +------------------------------------ + + 01483H: LD HL,01479H + +Direct address 0150aH. 1 references: +------------------------------------ + + 01545H: LD HL,0150AH + +Direct address 0151fH. 1 references: +------------------------------------ + + 01530H: LD HL,0151FH + +Direct address 015a8H. 2 references: +------------------------------------ + + 0148fH: LD DE,015A8H + 0153eH: LD HL,015A8H + +Direct address 0167bH. 2 references: +------------------------------------ + + 014a8H: LD DE,0167BH + 01534H: LD HL,0167BH + +Direct address 0167dH. 1 references: +------------------------------------ + + 01539H: LD HL,0167DH + +Direct address 0167fH. 2 references: +------------------------------------ + + 014b9H: LD DE,0167FH + 0151cH: LD HL,0167FH + +Direct address 018d8H. 1 references: +------------------------------------ + + 0259aH: LD HL,018D8H + +Direct address 0192cH. 1 references: +------------------------------------ + + 028a3H: LD DE,0192CH + +Direct address 01a7eH. 1 references: +------------------------------------ + + 01a79H: LD A,(HL) + +Direct address 01abeH. 1 references: +------------------------------------ + + 01abfH: LD HL,01ABEH + +Direct address 01b35H. 2 references: +------------------------------------ + + 01d53H: LD BC,01B35H + 02962H: LD HL,01B35H + +Direct address 01b38H. 1 references: +------------------------------------ + + 020ecH: JR C,02109H + +Direct address 01b5fH. 1 references: +------------------------------------ + + 012cfH: LD E,A + +Direct address 01bb2H. 1 references: +------------------------------------ + + 01b88H: LD HL,01BB2H + +Direct address 01c3cH. 2 references: +------------------------------------ + + 01bb2H: INC A + 01bb4H: INC A + +Direct address 01c42H. 1 references: +------------------------------------ + + 01bc0H: LD B,D + +Direct address 01c4dH. 1 references: +------------------------------------ + + 01bbcH: LD C,L + +Direct address 01c60H. 1 references: +------------------------------------ + + 01c55H: LD H,B + +Direct address 01d15H. 1 references: +------------------------------------ + + 01bd6H: DEC D + +Direct address 01d2cH. 1 references: +------------------------------------ + + 01bd4H: INC L + +Direct address 01d44H. 1 references: +------------------------------------ + + 01d35H: LD DE,01D44H + +Direct address 01d4dH. 1 references: +------------------------------------ + + 01beaH: LD C,L + +Direct address 01d6aH. 1 references: +------------------------------------ + + 01bc4H: LD L,D + +Direct address 01df5H. 3 references: +------------------------------------ + + 01dc2H: LD HL,01DF5H + 01e06H: LD DE,01DF5H + 025bcH: LD HL,01DF5H + +Direct address 01e91H. 1 references: +------------------------------------ + + 01bbeH: SUB C + +Direct address 01ea6H. 1 references: +------------------------------------ + + 01bccH: AND (HL) + +Direct address 01ec7H. 1 references: +------------------------------------ + + 01bceH: RST 000H + +Direct address 01ef8H. 1 references: +------------------------------------ + + 01bd0H: RET M + +Direct address 01f2bH. 1 references: +------------------------------------ + + 01bc6H: DEC HL + +Direct address 01fc0H. 1 references: +------------------------------------ + + 01bd2H: RET NZ + +Direct address 02000H. 1 references: +------------------------------------ + + 01cd7H: LD BC,02000H + +Direct address 0203eH. 1 references: +------------------------------------ + + 01bdaH: LD A,020H + +Direct address 02080H. 1 references: +------------------------------------ + + 01be4H: ADD A,B + +Direct address 02105H. 2 references: +------------------------------------ + + 020cbH: LD DE,(02105H) + 02174H: LD DE,(02105H) + +Direct address 02191H. 1 references: +------------------------------------ + + 01be2H: SUB C + +Direct address 021a6H. 1 references: +------------------------------------ + + 01becH: AND (HL) + +Direct address 021adH. 1 references: +------------------------------------ + + 01bc8H: XOR L + +Direct address 021d3H. 1 references: +------------------------------------ + + 021b4H: OUT (021H),A + +Direct address 02201H. 1 references: +------------------------------------ + + 01be6H: LD BC,0FF22H + +Direct address 02269H. 1 references: +------------------------------------ + + 01beeH: LD L,C + +Direct address 02282H. 1 references: +------------------------------------ + + 01bf0H: ADD A,D + +Direct address 02296H. 1 references: +------------------------------------ + + 022abH: LD BC,02296H + +Direct address 022e1H. 1 references: +------------------------------------ + + 022cfH: LD HL,022E1H + +Direct address 022f3H. 1 references: +------------------------------------ + + 022cbH: LD HL,022F3H + +Direct address 0231bH. 2 references: +------------------------------------ + + 022e1H: DEC DE + 022e3H: DEC DE + +Direct address 0231eH. 2 references: +------------------------------------ + + 022e5H: LD E,023H + 022e7H: LD E,023H + +Direct address 02322H. 2 references: +------------------------------------ + + 022e9H: LD (02223H),HL + 022ebH: LD (02523H),HL + +Direct address 02325H. 1 references: +------------------------------------ + + 022edH: DEC H + +Direct address 02328H. 1 references: +------------------------------------ + + 022efH: JR Z,02314H + +Direct address 0232fH. 1 references: +------------------------------------ + + 022f1H: CPL + +Direct address 02332H. 1 references: +------------------------------------ + + 022aeH: LD DE,02332H + +Direct address 0234cH. 1 references: +------------------------------------ + + 0235fH: LD BC,0234CH + +Direct address 02392H. 1 references: +------------------------------------ + + 02362H: LD DE,02392H + +Direct address 02396H. 1 references: +------------------------------------ + + 023a3H: LD BC,02396H + +Direct address 023abH. 1 references: +------------------------------------ + + 023a6H: LD DE,023ABH + +Direct address 023afH. 1 references: +------------------------------------ + + 023b5H: LD BC,023AFH + +Direct address 023dcH. 1 references: +------------------------------------ + + 023d0H: LD HL,023DCH + +Direct address 023f9H. 2 references: +------------------------------------ + + 023f0H: LD BC,023F9H + 02462H: LD HL,023F9H + +Direct address 02401H. 1 references: +------------------------------------ + + 023b8H: LD DE,02401H + +Direct address 02691H. 1 references: +------------------------------------ + + 023c6H: LD HL,02691H + +Direct address 026b3H. 1 references: +------------------------------------ + + 0247bH: LD HL,026B3H + +Direct address 026dbH. 1 references: +------------------------------------ + + 0246aH: LD HL,026DBH + +Direct address 026f3H. 1 references: +------------------------------------ + + 026b3H: DI + +Direct address 0270fH. 1 references: +------------------------------------ + + 026b5H: RRCA + +Direct address 02710H. 1 references: +------------------------------------ + + 01805H: LD DE,02710H + +Direct address 0273eH. 1 references: +------------------------------------ + + 026b7H: LD A,027H + +Direct address 02765H. 1 references: +------------------------------------ + + 026b9H: LD H,L + +Direct address 02772H. 1 references: +------------------------------------ + + 026bbH: LD (HL),D + +Direct address 0277fH. 1 references: +------------------------------------ + + 026bdH: LD A,A + +Direct address 0279aH. 1 references: +------------------------------------ + + 026c1H: SBC A,D + +Direct address 027b2H. 1 references: +------------------------------------ + + 027a7H: LD HL,027B2H + +Direct address 027b4H. 1 references: +------------------------------------ + + 026bfH: OR H + +Direct address 027f9H. 1 references: +------------------------------------ + + 026c3H: LD SP,HL + +Direct address 02801H. 1 references: +------------------------------------ + + 026c5H: LD BC,00428H + +Direct address 02804H. 1 references: +------------------------------------ + + 026c7H: INC B + +Direct address 02824H. 1 references: +------------------------------------ + + 026d1H: INC H + +Direct address 02841H. 1 references: +------------------------------------ + + 026d5H: LD B,C + +Direct address 0287cH. 1 references: +------------------------------------ + + 026d7H: LD A,H + +Direct address 0288cH. 1 references: +------------------------------------ + + 02880H: ADC A,H + +Direct address 02895H. 1 references: +------------------------------------ + + 026c9H: SUB L + +Direct address 0289dH. 1 references: +------------------------------------ + + 026edH: SBC A,L + +Direct address 028a2H. 1 references: +------------------------------------ + + 026efH: AND D + +Direct address 028b6H. 1 references: +------------------------------------ + + 01bfaH: OR (HL) + +Direct address 028b9H. 1 references: +------------------------------------ + + 01c06H: CP C + +Direct address 02902H. 1 references: +------------------------------------ + + 01c00H: LD (BC),A + +Direct address 02942H. 1 references: +------------------------------------ + + 01bf2H: LD B,D + +Direct address 02959H. 1 references: +------------------------------------ + + 0294aH: LD E,C + +Direct address 02967H. 1 references: +------------------------------------ + + 01bfcH: LD H,A + +Direct address 0299bH. 1 references: +------------------------------------ + + 02967H: LD DE,0299BH + +Direct address 029cbH. 1 references: +------------------------------------ + + 029a3H: SRA C + +Direct address 029ceH. 1 references: +------------------------------------ + + 01bfeH: ADC A,029H + +Direct address 029feH. 1 references: +------------------------------------ + + 01c02H: CP 029H + +Direct address 02a1cH. 1 references: +------------------------------------ + + 01c04H: INC E + +Direct address 02a2fH. 1 references: +------------------------------------ + + 01c18H: CPL + +Direct address 02a3fH. 1 references: +------------------------------------ + + 02a3bH: CCF + +Direct address 02a84H. 3 references: +------------------------------------ + + 02a42H: LD (02A84H),DE + 02a62H: LD (02A84H),DE + 02a74H: LD (02A84H),DE + +Direct address 02a86H. 3 references: +------------------------------------ + + 0127fH: LD BC,(02A86H) + 02a54H: LD (02A86H),DE + 02a66H: LD (02A86H),DE + +Direct address 02a88H. 9 references: +------------------------------------ + + 01f5cH: LD HL,02A88H + 028acH: LD DE,02A88H + 03c74H: LD HL,02A88H + 03e9aH: LD HL,02A88H + 0401aH: LD HL,02A88H + 04030H: LD HL,02A88H + 04080H: LD DE,02A88H + 04094H: LD HL,02A88H + 040f2H: LD HL,02A88H + +Direct address 02a8dH. 8 references: +------------------------------------ + + 020f2H: LD HL,02A8DH + 022f9H: LD DE,02A8DH + 024d9H: LD HL,02A8DH + 028b2H: LD DE,02A8DH + 03b50H: LD DE,02A8DH + 03b6dH: LD HL,02A8DH + 03dbaH: LD HL,02A8DH + 03ef3H: LD HL,02A8DH + +Direct address 02a92H. 4 references: +------------------------------------ + + 022f3H: LD DE,02A92H + 028a7H: LD DE,02A92H + 03b55H: LD DE,02A92H + 03b68H: LD HL,02A92H + +Direct address 02a97H. 1 references: +------------------------------------ + + 024acH: LD DE,02A97H + +Direct address 02aa6H. 1 references: +------------------------------------ + + 01c08H: AND (HL) + +Direct address 02aaaH. 1 references: +------------------------------------ + + 01c0aH: XOR D + +Direct address 02b0dH. 1 references: +------------------------------------ + + 01bc2H: DEC C + +Direct address 02b18H. 1 references: +------------------------------------ + + 02b11H: JR 02B3EH + +Direct address 02b1eH. 1 references: +------------------------------------ + + 02bafH: LD HL,02B1EH + +Direct address 02b35H. 1 references: +------------------------------------ + + 02b33H: DEC (HL) + +Direct address 02b4dH. 1 references: +------------------------------------ + + 02b35H: LD BC,02B4DH + +Direct address 02b9aH. 1 references: +------------------------------------ + + 02b6dH: SBC A,D + +Direct address 02be2H. 1 references: +------------------------------------ + + 02bf4H: LD SP,02BE2H + +Direct address 02befH. 1 references: +------------------------------------ + + 02b26H: LD HL,02BEFH + +Direct address 02bf7H. 1 references: +------------------------------------ + + 02ba9H: LD HL,02BF7H + +Direct address 02bffH. 1 references: +------------------------------------ + + 01be8H: RST 038H + +Direct address 02c0eH. 1 references: +------------------------------------ + + 02c06H: LD C,02CH + +Direct address 02c5fH. 2 references: +------------------------------------ + + 02c16H: LD DE,02C5FH + 02c59H: LD DE,02C5FH + +Direct address 02c68H. 1 references: +------------------------------------ + + 02c7eH: LD HL,02C68H + +Direct address 02c84H. 1 references: +------------------------------------ + + 02c6cH: LD HL,02C84H + +Direct address 02c8eH. 1 references: +------------------------------------ + + 02cc5H: LD HL,02C8EH + +Direct address 02cbfH. 1 references: +------------------------------------ + + 02cb3H: CP A + +Direct address 02cf4H. 1 references: +------------------------------------ + + 02cdeH: CALL P,02A2CH + +Direct address 02d05H. 1 references: +------------------------------------ + + 02d00H: DEC B + +Direct address 02d10H. 1 references: +------------------------------------ + + 02d02H: LD HL,02D10H + +Direct address 02d11H. 1 references: +------------------------------------ + + 02cb6H: LD DE,02D11H + +Direct address 02d12H. 1 references: +------------------------------------ + + 01bbaH: LD (DE),A + +Direct address 02d46H. 1 references: +------------------------------------ + + 01d5cH: LD BC,02D46H + +Direct address 02d68H. 2 references: +------------------------------------ + + 02d57H: LD L,B + 02d5dH: LD L,B + +Direct address 02d75H. 1 references: +------------------------------------ + + 01bdcH: LD (HL),L + +Direct address 02d82H. 1 references: +------------------------------------ + + 01bdeH: ADD A,D + +Direct address 02d92H. 1 references: +------------------------------------ + + 01bf6H: SUB D + +Direct address 02d9fH. 1 references: +------------------------------------ + + 01bf4H: SBC A,A + +Direct address 02dadH. 1 references: +------------------------------------ + + 01bf8H: XOR L + +Direct address 02e28H. 1 references: +------------------------------------ + + 0213fH: LD HL,02E28H + +Direct address 02e33H. 3 references: +------------------------------------ + + 02febH: LD HL,02E33H + 03028H: LD HL,02E33H + 03132H: LD HL,02E33H + +Direct address 02e34H. 6 references: +------------------------------------ + + 02e1dH: LD DE,02E34H + 02e64H: LD HL,02E34H + 02e8cH: LD HL,02E34H + 02efaH: LD DE,02E34H + 0301fH: LD DE,02E34H + 03148H: LD DE,02E34H + +Direct address 02e9aH. 1 references: +------------------------------------ + + 02e98H: SBC A,D + +Direct address 02eb0H. 1 references: +------------------------------------ + + 02e9dH: LD DE,02EB0H + +Direct address 02eb3H. 1 references: +------------------------------------ + + 01be0H: OR E + +Direct address 02edaH. 1 references: +------------------------------------ + + 02d79H: JP C,0CD2EH + +Direct address 02ee6H. 1 references: +------------------------------------ + + 02edfH: LD BC,02EE6H + +Direct address 02f8cH. 1 references: +------------------------------------ + + 02f86H: LD DE,02F8CH + +Direct address 02fc2H. 1 references: +------------------------------------ + + 02f67H: LD DE,02FC2H + +Direct address 02fc9H. 1 references: +------------------------------------ + + 02f6cH: LD DE,02FC9H + +Direct address 02fd2H. 1 references: +------------------------------------ + + 02f62H: LD DE,02FD2H + +Direct address 02fddH. 1 references: +------------------------------------ + + 02ed1H: LD DE,02FDDH + +Direct address 02fe0H. 1 references: +------------------------------------ + + 02d89H: RET PO + +Direct address 02feaH. 1 references: +------------------------------------ + + 02fe8H: JP PE,0E52FH + +Direct address 03038H. 1 references: +------------------------------------ + + 02fe0H: LD BC,03038H + +Direct address 03064H. 1 references: +------------------------------------ + + 02bfcH: LD SP,03064H + +Direct address 030e5H. 1 references: +------------------------------------ + + 02da3H: PUSH HL + +Direct address 030f6H. 1 references: +------------------------------------ + + 025e2H: LD BC,030F6H + +Direct address 030fcH. 1 references: +------------------------------------ + + 030efH: LD BC,030FCH + +Direct address 0311eH. 1 references: +------------------------------------ + + 02d96H: LD E,031H + +Direct address 0313aH. 1 references: +------------------------------------ + + 03128H: LD BC,0313AH + +Direct address 03171H. 1 references: +------------------------------------ + + 02db1H: LD (HL),C + +Direct address 032d4H. 1 references: +------------------------------------ + + 01c20H: CALL NC,0AB32H + +Direct address 03315H. 1 references: +------------------------------------ + + 03362H: LD HL,03315H + +Direct address 03326H. 1 references: +------------------------------------ + + 03324H: LD H,033H + +Direct address 033abH. 1 references: +------------------------------------ + + 01c1eH: XOR E + +Direct address 03400H. 1 references: +------------------------------------ + + 03431H: LD (03400H),BC + +Direct address 03401H. 1 references: +------------------------------------ + + 034e4H: LD HL,03401H + +Direct address 03402H. 3 references: +------------------------------------ + + 0347bH: LD HL,03402H + 0347fH: LD HL,03402H + 034b7H: LD HL,03402H + +Direct address 03403H. 1 references: +------------------------------------ + + 026abH: INC BC + +Direct address 03405H. 1 references: +------------------------------------ + + 026a9H: DEC B + +Direct address 03500H. 1 references: +------------------------------------ + + 026adH: NOP + +Direct address 035d0H. 1 references: +------------------------------------ + + 026afH: RET NC + +Direct address 0366eH. 1 references: +------------------------------------ + + 03734H: LD DE,(0366EH) + +Direct address 03725H. 1 references: +------------------------------------ + + 0371aH: LD HL,03725H + +Direct address 03755H. 2 references: +------------------------------------ + + 0374dH: LD BC,03755H + 0375dH: LD HL,03755H + +Direct address 037aeH. 2 references: +------------------------------------ + + 03730H: LD BC,037AEH + 03afaH: LD BC,037AEH + +Direct address 037dbH. 1 references: +------------------------------------ + + 039abH: LD HL,037DBH + +Direct address 038a3H. 1 references: +------------------------------------ + + 03afeH: LD DE,(038A3H) + +Direct address 038a6H. 2 references: +------------------------------------ + + 0390dH: LD HL,038A6H + 0391dH: LD DE,038A6H + +Direct address 038a7H. 4 references: +------------------------------------ + + 0392eH: LD DE,038A7H + 0394fH: LD HL,038A7H + 039d8H: LD HL,038A7H + 03ab7H: LD IX,038A7H + +Direct address 038a8H. 1 references: +------------------------------------ + + 0392bH: LD HL,038A8H + +Direct address 038afH. 2 references: +------------------------------------ + + 03963H: LD HL,038AFH + 03a4cH: LD HL,038AFH + +Direct address 038b0H. 6 references: +------------------------------------ + + 038d9H: LD HL,038B0H + 0393fH: LD HL,038B0H + 03a27H: LD HL,038B0H + 03a4fH: LD DE,038B0H + 03aa3H: LD HL,038B0H + 03b21H: LD HL,038B0H + +Direct address 038b1H. 1 references: +------------------------------------ + + 03960H: LD DE,038B1H + +Direct address 038b2H. 1 references: +------------------------------------ + + 0395bH: LD DE,038B2H + +Direct address 03994H. 1 references: +------------------------------------ + + 0398aH: LD HL,03994H + +Direct address 039d8H. 1 references: +------------------------------------ + + 039c7H: LD BC,039D8H + +Direct address 03a86H. 1 references: +------------------------------------ + + 026e7H: ADD A,(HL) + +Direct address 03aefH. 1 references: +------------------------------------ + + 03ae4H: LD HL,03AEFH + +Direct address 03b62H. 2 references: +------------------------------------ + + 02691H: LD H,D + 02693H: LD H,D + +Direct address 03b73H. 1 references: +------------------------------------ + + 0269fH: LD (HL),E + +Direct address 03b77H. 1 references: +------------------------------------ + + 026a1H: LD (HL),A + +Direct address 03b7fH. 1 references: +------------------------------------ + + 0269dH: LD A,A + +Direct address 03b87H. 2 references: +------------------------------------ + + 02695H: ADD A,A + 02697H: ADD A,A + +Direct address 03b8bH. 2 references: +------------------------------------ + + 02699H: ADC A,E + 0269bH: ADC A,E + +Direct address 03b93H. 2 references: +------------------------------------ + + 03ba3H: LD DE,03B93H + 03bc4H: LD DE,03B93H + +Direct address 03b98H. 1 references: +------------------------------------ + + 026dbH: SBC A,B + +Direct address 03be4H. 1 references: +------------------------------------ + + 03bc7H: LD HL,03BE4H + +Direct address 03be9H. 1 references: +------------------------------------ + + 03ba7H: LD HL,03BE9H + +Direct address 03beeH. 29 references: +------------------------------------- + + 03c02H: LD DE,03BEEH + 03c0eH: LD DE,03BEEH + 03c85H: LD DE,03BEEH + 03c8eH: LD HL,03BEEH + 03c9aH: LD HL,03BEEH + 03cbfH: LD HL,03BEEH + 03d64H: LD DE,03BEEH + 03d81H: LD HL,03BEEH + 03d8dH: LD HL,03BEEH + 03ddbH: LD DE,03BEEH + 03e2bH: LD DE,03BEEH + 03e74H: LD HL,03BEEH + 03e91H: LD HL,03BEEH + 03eaaH: LD HL,03BEEH + 03f68H: LD DE,03BEEH + 03f7eH: LD HL,03BEEH + 03f9cH: LD DE,03BEEH + 03fc5H: LD HL,03BEEH + 03fdeH: LD HL,03BEEH + 03ff7H: LD HL,03BEEH + 0400bH: LD HL,03BEEH + 04012H: LD DE,03BEEH + 04022H: LD HL,03BEEH + 0408aH: LD DE,03BEEH + 0409cH: LD HL,03BEEH + 040a8H: LD DE,03BEEH + 040b3H: LD HL,03BEEH + 040ffH: LD HL,03BEEH + 04115H: LD HL,03BEEH + +Direct address 03bf3H. 12 references: +------------------------------------- + + 03c0bH: LD HL,03BF3H + 03c8bH: LD DE,03BF3H + 03c97H: LD DE,03BF3H + 03d76H: LD DE,03BF3H + 03d7eH: LD DE,03BF3H + 03d87H: LD HL,03BF3H + 03f8eH: LD DE,03BF3H + 03f96H: LD DE,03BF3H + 03f9fH: LD HL,03BF3H + 03fc2H: LD DE,03BF3H + 03ff1H: LD HL,03BF3H + 040b6H: LD DE,03BF3H + +Direct address 03bf8H. 2 references: +------------------------------------ + + 03d23H: LD DE,03BF8H + 03d37H: LD HL,03BF8H + +Direct address 03bfdH. 2 references: +------------------------------------ + + 03d16H: LD DE,03BFDH + 03d2bH: LD HL,03BFDH + +Direct address 03c16H. 1 references: +------------------------------------ + + 026ddH: LD D,03CH + +Direct address 03ce7H. 3 references: +------------------------------------ + + 03c17H: LD HL,03CE7H + 03d06H: LD HL,03CE7H + 0410dH: LD HL,03CE7H + +Direct address 03cecH. 1 references: +------------------------------------ + + 03ca0H: LD HL,03CECH + +Direct address 03cf1H. 1 references: +------------------------------------ + + 03ca6H: LD HL,03CF1H + +Direct address 03cf6H. 1 references: +------------------------------------ + + 03cacH: LD HL,03CF6H + +Direct address 03cfbH. 1 references: +------------------------------------ + + 03cb2H: LD HL,03CFBH + +Direct address 03d00H. 1 references: +------------------------------------ + + 03cb8H: LD HL,03D00H + +Direct address 03d05H. 1 references: +------------------------------------ + + 026dfH: DEC B + +Direct address 03d14H. 1 references: +------------------------------------ + + 026e1H: INC D + +Direct address 03d3fH. 1 references: +------------------------------------ + + 026f1H: CCF + +Direct address 03dedH. 1 references: +------------------------------------ + + 03d6aH: LD HL,03DEDH + +Direct address 03df2H. 1 references: +------------------------------------ + + 03d70H: LD HL,03DF2H + +Direct address 03df7H. 1 references: +------------------------------------ + + 03de1H: LD HL,03DF7H + +Direct address 03dfcH. 1 references: +------------------------------------ + + 03de7H: LD HL,03DFCH + +Direct address 03e03H. 1 references: +------------------------------------ + + 026e5H: INC BC + +Direct address 03f05H. 1 references: +------------------------------------ + + 03e31H: LD HL,03F05H + +Direct address 03f0aH. 1 references: +------------------------------------ + + 03e37H: LD HL,03F0AH + +Direct address 03f0fH. 1 references: +------------------------------------ + + 03e42H: LD HL,03F0FH + +Direct address 03f14H. 1 references: +------------------------------------ + + 03e4dH: LD HL,03F14H + +Direct address 03f19H. 1 references: +------------------------------------ + + 03e58H: LD HL,03F19H + +Direct address 03f1eH. 1 references: +------------------------------------ + + 03e63H: LD HL,03F1EH + +Direct address 03f23H. 1 references: +------------------------------------ + + 03e6eH: LD HL,03F23H + +Direct address 03f28H. 1 references: +------------------------------------ + + 03e23H: LD HL,03F28H + +Direct address 03f2dH. 1 references: +------------------------------------ + + 03e0eH: LD HL,03F2DH + +Direct address 03f35H. 1 references: +------------------------------------ + + 026ebH: DEC (HL) + +Direct address 04041H. 1 references: +------------------------------------ + + 03fa5H: LD HL,04041H + +Direct address 04046H. 1 references: +------------------------------------ + + 03fabH: LD HL,04046H + +Direct address 0404bH. 1 references: +------------------------------------ + + 03fb1H: LD HL,0404BH + +Direct address 04050H. 1 references: +------------------------------------ + + 03fb7H: LD HL,04050H + +Direct address 04055H. 2 references: +------------------------------------ + + 03f70H: LD HL,04055H + 03f76H: LD HL,04055H + +Direct address 0405aH. 1 references: +------------------------------------ + + 03f86H: LD HL,0405AH + +Direct address 0405fH. 1 references: +------------------------------------ + + 03febH: LD HL,0405FH + +Direct address 04064H. 1 references: +------------------------------------ + + 026e9H: LD H,H + +Direct address 0406fH. 1 references: +------------------------------------ + + 04069H: LD HL,0406FH + +Direct address 04076H. 1 references: +------------------------------------ + + 026e3H: HALT + +Direct address 0411aH. 1 references: +------------------------------------ + + 02643H: LD BC,0411AH + +Direct address 04121H. 1 references: +------------------------------------ + + 040bcH: LD HL,04121H + +Direct address 04126H. 1 references: +------------------------------------ + + 040c2H: LD HL,04126H + +Direct address 0412bH. 1 references: +------------------------------------ + + 040c8H: LD HL,0412BH + +Direct address 04130H. 1 references: +------------------------------------ + + 040ceH: LD HL,04130H + +Direct address 04135H. 1 references: +------------------------------------ + + 040d4H: LD HL,04135H + +Direct address 0413aH. 1 references: +------------------------------------ + + 040daH: LD HL,0413AH + +Direct address 0413fH. 1 references: +------------------------------------ + + 040e0H: LD HL,0413FH + +Direct address 04144H. 1 references: +------------------------------------ + + 040e6H: LD HL,04144H + +Direct address 04149H. 1 references: +------------------------------------ + + 040ecH: LD HL,04149H + +Direct address 0414eH. 2 references: +------------------------------------ + + 041a7H: LD DE,0414EH + 041b3H: LD DE,0414EH + +Direct address 04152H. 1 references: +------------------------------------ + + 041bcH: LD HL,04152H + +Direct address 04154H. 6 references: +------------------------------------ + + 0415aH: LD DE,04154H + 04182H: LD HL,04154H + 041a4H: LD HL,04154H + 041adH: LD DE,04154H + 041b6H: LD HL,04154H + 041c4H: LD HL,04154H + +Direct address 04159H. 1 references: +------------------------------------ + + 026b1H: LD E,C + +Direct address 041ecH. 2 references: +------------------------------------ + + 041feH: LD DE,041ECH + 04213H: LD HL,041ECH + +Direct address 04223H. 1 references: +------------------------------------ + + 041f0H: LD HL,04223H + +Direct address 048ffH. 1 references: +------------------------------------ + + 01200H: LD HL,048FFH + +Direct address 04900H. 1 references: +------------------------------------ + + 01d95H: LD HL,04900H + +Direct address 04902H. 1 references: +------------------------------------ + + 02cf4H: LD DE,(04902H) + +Direct address 04903H. 1 references: +------------------------------------ + + 01da5H: LD HL,04903H + +Direct address 04904H. 1 references: +------------------------------------ + + 01d9aH: LD HL,04904H + +Direct address 04906H. 1 references: +------------------------------------ + + 01dadH: LD DE,(04906H) + +Direct address 0490aH. 1 references: +------------------------------------ + + 01258H: LD SP,(0490AH) + +Direct address LINEBUFR. 9 references: +-------------------------------------- + + 01272H: LD DE,0490DH + 0146aH: LD HL,0490DH + 014fbH: LD DE,0490DH + 01ca7H: LD DE,0490DH + 02b9eH: LD HL,0490DH + 02c32H: LD DE,0490DH + 02c68H: LD DE,0490DH + 02c9cH: LD DE,0490DH + 02d3bH: LD HL,0490DH + +Direct address 04954H. 1 references: +------------------------------------ + + 02578H: LD HL,04954H + +Direct address 04a0eH. 2 references: +------------------------------------ + + 012f7H: LD HL,04A0EH + 01c8aH: LD DE,04A0EH + +Direct address 04a10H. 1 references: +------------------------------------ + + 01470H: LD (04A10H),DE + +Direct address 04a12H. 3 references: +------------------------------------ + + 012c5H: LD HL,04A12H + 01474H: LD DE,04A12H + 01507H: LD HL,04A12H + +Direct address 04ab3H. 4 references: +------------------------------------ + + 01841H: LD DE,04AB3H + 01c69H: LD HL,04AB3H + 01cf6H: LD (04AB3H),DE + 0278cH: LD DE,04AB3H + +Direct address 04ab5H. 1 references: +------------------------------------ + + 01d0aH: LD (04AB5H),DE + +Direct address 04cd3H. 5 references: +------------------------------------ + + 0307fH: LD HL,04CD3H + 030bbH: LD HL,04CD3H + 03105H: LD HL,04CD3H + 0315dH: LD HL,04CD3H + 0319dH: LD HL,04CD3H + +Direct address 04dd3H. 4 references: +------------------------------------ + + 03072H: LD DE,04DD3H + 030a4H: LD DE,04DD3H + 03169H: LD HL,04DD3H + 03181H: LD DE,04DD3H + +Direct address 04dd8H. 1 references: +------------------------------------ + + 02e5aH: LD HL,04DD8H + +Direct address 04df2H. 2 references: +------------------------------------ + + 0199eH: LD HL,04DF2H + 02dc1H: LD HL,04DF2H + +Direct address 04e4eH. 2 references: +------------------------------------ + + 0195dH: LD DE,04E4EH + 02f4eH: LD HL,04E4EH + +Direct address 04e50H. 1 references: +------------------------------------ + + 019aaH: LD HL,04E50H + +Direct address 04e84H. 1 references: +------------------------------------ + + 01999H: LD DE,04E84H + +Direct address 04e86H. 1 references: +------------------------------------ + + 02126H: LD HL,04E86H + +Direct address 04e94H. 2 references: +------------------------------------ + + 019c7H: LD HL,04E94H + 0249eH: LD DE,(04E94H) + +Direct address 04e96H. 1 references: +------------------------------------ + + 01961H: LD HL,04E96H + +Direct address 04e98H. 1 references: +------------------------------------ + + 01fa5H: LD DE,(04E98H) + +Direct address 04e9aH. 2 references: +------------------------------------ + + 01ee0H: LD DE,(04E9AH) + 01eebH: LD (04E9AH),DE + +Direct address 04e9cH. 1 references: +------------------------------------ + + 0252cH: LD DE,04E9CH + +Direct address 04ebaH. 1 references: +------------------------------------ + + 01984H: LD HL,04EBAH + +Direct address 04fd7H. 1 references: +------------------------------------ + + 0197eH: LD HL,04FD7H + +Direct address 05040H. 2 references: +------------------------------------ + + 01978H: LD HL,05040H + 01f6eH: LD DE,(05040H) + +Direct address 05042H. 1 references: +------------------------------------ + + 01f5fH: LD DE,05042H + +Direct address 05048H. 1 references: +------------------------------------ + + 01f48H: LD DE,05048H + +Direct address 0504dH. 6 references: +------------------------------------ + + 01266H: LD HL,0504DH + 01b54H: LD DE,0504DH + 01ba6H: LD HL,0504DH + 01f1dH: LD DE,0504DH + 02012H: LD DE,0504DH + 029f4H: LD HL,0504DH + +Direct address 05053H. 5 references: +------------------------------------ + + 0198aH: LD HL,05053H + 01f04H: LD HL,05053H + 01f8fH: LD HL,05053H + 01fddH: LD HL,05053H + 0202bH: LD HL,05053H + +Direct address 05054H. 1 references: +------------------------------------ + + 01f98H: LD HL,05054H + +Direct address 05055H. 2 references: +------------------------------------ + + 01ed4H: LD HL,05055H + 01efbH: LD HL,05055H + +Direct address 05056H. 1 references: +------------------------------------ + + 0140eH: LD HL,05056H + +Direct address 0505cH. 12 references: +------------------------------------- + + 018b3H: LD HL,0505CH + 01957H: LD HL,0505CH + 01ac7H: LD HL,0505CH + 01ae1H: LD DE,0505CH + 01b13H: LD DE,0505CH + 01b1bH: LD HL,0505CH + 01c7dH: LD HL,0505CH + 01ec1H: LD HL,0505CH + 02d43H: LD HL,0505CH + 02f23H: LD DE,0505CH + 0303bH: LD HL,0505CH + 03041H: LD DE,0505CH + +Direct address 0505eH. 1 references: +------------------------------------ + + 02f4bH: LD DE,0505EH + +Direct address 08000H. 1 references: +------------------------------------ + + 03c43H: LD HL,08000H + +Direct address 0f1f0H. 1 references: +------------------------------------ + + 025c1H: LD DE,0F1F0H + +Direct address 0ff0aH. 1 references: +------------------------------------ + + 038ffH: LD BC,0FF0AH + +Direct address 0ff9cH. 1 references: +------------------------------------ + + 01854H: LD HL,0FF9CH + +Direct address 0ffc4H. 1 references: +------------------------------------ + + 025c7H: LD DE,0FFC4H + +Direct address 0fffaH. 1 references: +------------------------------------ + + 02535H: LD BC,0FFFAH + +Direct address 0fffbH. 2 references: +------------------------------------ + + 01e7cH: LD BC,0FFFBH + 023e6H: LD BC,0FFFBH + + +Indirect address Reference (316 entries) +---------------------------------------- + +Indirect address ATRB. 2 references: +------------------------------------ + + 02eb9H: LD A,(010F0H) + 02f0dH: LD A,(010F0H) + +Indirect address 01101H. 1 references: +-------------------------------------- + + 02f80H: LD (01101H),A + +Indirect address SIZE. 6 references: +------------------------------------ + + 02f1cH: LD HL,(01102H) + 02f9bH: LD HL,(01102H) + 0304aH: LD (01102H),HL + 03102H: LD (01102H),HL + 03166H: LD (01102H),HL + 04206H: LD (01102H),HL + +Indirect address DTADR. 5 references: +------------------------------------- + + 02f8eH: LD HL,(01104H) + 0303eH: LD (01104H),HL + 0310bH: LD (01104H),HL + 03160H: LD (01104H),HL + 041fbH: LD (01104H),HL + +Indirect address EXADR. 1 references: +------------------------------------- + + 0420cH: LD (01106H),HL + +Indirect address DSPXY. 3 references: +------------------------------------- + + 02890H: LD A,(01171H) + 028d0H: LD HL,(01171H) + 028ebH: LD (01171H),HL + +Indirect address 01172H. 1 references: +-------------------------------------- + + 02882H: LD A,(01172H) + +Indirect address MGPNT. 2 references: +------------------------------------- + + 028d6H: LD A,(0117CH) + 028e3H: LD (0117CH),A + +Indirect address PAGETP. 3 references: +-------------------------------------- + + 02860H: LD HL,(0117DH) + 02ae5H: LD HL,(0117DH) + 033c6H: LD HL,(0117DH) + +Indirect address DPRNT. 3 references: +------------------------------------- + + 028f1H: LD (01194H),A + 02b78H: LD A,(01194H) + 02c2bH: LD A,(01194H) + +Indirect address 013a3H. 2 references: +-------------------------------------- + + 01403H: LD (013A3H),A + 01430H: LD HL,(013A3H) + +Indirect address 013ffH. 1 references: +-------------------------------------- + + 01400H: LD A,(013FFH) + +Indirect address 01463H. 4 references: +-------------------------------------- + + 0145aH: LD (01463H),A + 01c43H: LD (01463H),A + 029d1H: LD A,(01463H) + 029ebH: LD (01463H),A + +Indirect address 018bfH. 1 references: +-------------------------------------- + + 018b0H: LD (018BFH),HL + +Indirect address 018d8H. 3 references: +-------------------------------------- + + 020c3H: LD HL,(018D8H) + 0211bH: LD (018D8H),HL + 02581H: LD (018D8H),HL + +Indirect address 01c4cH. 4 references: +-------------------------------------- + + 01c65H: LD (01C4CH),A + 01cbdH: LD A,(01C4CH) + 01cc1H: LD (01C4CH),A + 01ce5H: LD (01C4CH),A + +Indirect address 01cabH. 2 references: +-------------------------------------- + + 01c4eH: LD (01CABH),A + 01c5dH: LD (01CABH),A + +Indirect address 02102H. 3 references: +-------------------------------------- + + 020e5H: LD HL,(02102H) + 02117H: LD (02102H),HL + 0263bH: LD HL,(02102H) + +Indirect address 02104H. 5 references: +-------------------------------------- + + 020a3H: LD A,(02104H) + 020d4H: LD A,(02104H) + 02123H: LD (02104H),A + 0214eH: LD A,(02104H) + 02618H: LD A,(02104H) + +Indirect address 02105H. 2 references: +-------------------------------------- + + 02096H: LD HL,(02105H) + 0211fH: LD (02105H),HL + +Indirect address 02a15H. 1 references: +-------------------------------------- + + 02a05H: LD (02A15H),A + +Indirect address 02a2bH. 1 references: +-------------------------------------- + + 02a23H: LD (02A2BH),A + +Indirect address 02a83H. 6 references: +-------------------------------------- + + 01275H: LD A,(02A83H) + 012a1H: LD (02A83H),A + 012a7H: LD (02A83H),A + 01443H: LD (02A83H),A + 01e92H: LD (02A83H),A + 02a5aH: LD (02A83H),A + +Indirect address 02a84H. 2 references: +-------------------------------------- + + 0127bH: LD HL,(02A84H) + 01286H: LD (02A84H),HL + +Indirect address 02c8cH. 4 references: +-------------------------------------- + + 02c36H: LD (02C8CH),HL + 02c96H: LD HL,(02C8CH) + 02ca4H: LD (02C8CH),HL + 02cc2H: LD (02C8CH),HL + +Indirect address 02d74H. 6 references: +-------------------------------------- + + 02edcH: LD (02D74H),A + 02f07H: LD A,(02D74H) + 0309dH: LD (02D74H),A + 030c4H: LD A,(02D74H) + 030cdH: LD (02D74H),A + 0312eH: LD (02D74H),A + +Indirect address 030e2H. 9 references: +-------------------------------------- + + 01e95H: LD (030E2H),A + 03067H: LD A,(030E2H) + 03092H: LD A,(030E2H) + 030e8H: LD A,(030E2H) + 03118H: LD (030E2H),A + 03121H: LD A,(030E2H) + 03157H: LD (030E2H),A + 03174H: LD A,(030E2H) + 03191H: LD (030E2H),A + +Indirect address 030e3H. 7 references: +-------------------------------------- + + 0306eH: LD HL,(030E3H) + 0308bH: LD (030E3H),HL + 030a0H: LD HL,(030E3H) + 030dcH: LD (030E3H),HL + 03108H: LD (030E3H),HL + 0316cH: LD (030E3H),HL + 0317eH: LD HL,(030E3H) + +Indirect address 0326dH. 3 references: +-------------------------------------- + + 031fbH: LD (0326DH),A + 03269H: LD (0326DH),A + 033f4H: LD A,(0326DH) + +Indirect address 032d3H. 7 references: +-------------------------------------- + + 02b89H: LD A,(032D3H) + 031a2H: LD A,(032D3H) + 031b0H: LD (032D3H),A + 031b6H: LD A,(032D3H) + 03248H: LD A,(032D3H) + 0325fH: LD (032D3H),A + 03270H: LD A,(032D3H) + +Indirect address 03400H. 6 references: +-------------------------------------- + + 0345cH: LD A,(03400H) + 03522H: LD (03400H),A + 03561H: LD A,(03400H) + 03565H: LD (03400H),A + 0357cH: LD A,(03400H) + 03b03H: LD (03400H),A + +Indirect address 03401H. 6 references: +-------------------------------------- + + 03506H: LD (03401H),A + 035d6H: LD (03401H),A + 0370dH: LD (03401H),A + 0373aH: LD (03401H),A + 039ceH: LD (03401H),A + 03a96H: LD (03401H),A + +Indirect address 03402H. 9 references: +-------------------------------------- + + 0342bH: LD (03402H),A + 0351eH: LD (03402H),A + 03583H: LD A,(03402H) + 03587H: LD (03402H),A + 035b5H: LD A,(03402H) + 035b9H: LD (03402H),A + 035ecH: LD (03402H),A + 03712H: LD (03402H),A + 03adcH: LD (03402H),A + +Indirect address 0366dH. 9 references: +-------------------------------------- + + 0367aH: LD (0366DH),A + 036f1H: LD (0366DH),A + 036f7H: LD A,(0366DH) + 036fdH: LD (0366DH),A + 03725H: LD A,(0366DH) + 03ab4H: LD (0366DH),A + 03ad1H: LD A,(0366DH) + 03ad7H: LD (0366DH),A + 03aefH: LD A,(0366DH) + +Indirect address 0366eH. 3 references: +-------------------------------------- + + 03675H: LD (0366EH),HL + 0371eH: LD HL,(0366EH) + 03761H: LD HL,(0366EH) + +Indirect address 038a3H. 3 references: +-------------------------------------- + + 03997H: LD (038A3H),HL + 03ae8H: LD HL,(038A3H) + 03b58H: LD HL,(038A3H) + +Indirect address 038a5H. 8 references: +-------------------------------------- + + 038bfH: LD A,(038A5H) + 038ebH: LD A,(038A5H) + 03971H: LD A,(038A5H) + 039c3H: LD (038A5H),A + 03a5aH: LD A,(038A5H) + 03a5eH: LD (038A5H),A + 03a9cH: LD A,(038A5H) + 03b1aH: LD A,(038A5H) + +Indirect address 038a6H. 2 references: +-------------------------------------- + + 039a7H: LD (038A6H),A + 03a8aH: LD A,(038A6H) + +Indirect address 038a7H. 2 references: +-------------------------------------- + + 038d6H: LD (038A7H),A + 03a47H: LD A,(038A7H) + +Indirect address 03c14H. 2 references: +-------------------------------------- + + 03c63H: LD (03C14H),HL + 03c6cH: LD A,(03C14H) + +Indirect address 03c15H. 3 references: +-------------------------------------- + + 03c20H: LD (03C15H),A + 03c5bH: LD A,(03C15H) + 03c80H: LD A,(03C15H) + +Indirect address 03d3dH. 3 references: +-------------------------------------- + + 03d41H: LD (03D3DH),A + 03d99H: LD A,(03D3DH) + 03d9dH: LD (03D3DH),A + +Indirect address 03d3eH. 3 references: +-------------------------------------- + + 03d5fH: LD (03D3EH),A + 03da2H: LD A,(03D3EH) + 03dd6H: LD (03D3EH),A + +Indirect address 03e01H. 4 references: +-------------------------------------- + + 03e07H: LD (03E01H),A + 03e8bH: LD A,(03E01H) + 03eecH: LD A,(03E01H) + 03efcH: LD A,(03E01H) + +Indirect address 03e02H. 3 references: +-------------------------------------- + + 03e18H: LD (03E02H),A + 03e7aH: LD A,(03E02H) + 03ed9H: LD (03E02H),A + +Indirect address 03f32H. 3 references: +-------------------------------------- + + 03f3bH: LD (03F32H),A + 03f49H: LD (03F32H),A + 04006H: LD A,(03F32H) + +Indirect address 03f33H. 3 references: +-------------------------------------- + + 03f38H: LD (03F33H),A + 03ffaH: LD A,(03F33H) + 0403cH: LD (03F33H),A + +Indirect address 03f34H. 2 references: +-------------------------------------- + + 03f65H: LD (03F34H),A + 03fcbH: LD A,(03F34H) + +Indirect address 04074H. 2 references: +-------------------------------------- + + 0407bH: LD (04074H),A + 0411cH: LD A,(04074H) + +Indirect address 04075H. 2 references: +-------------------------------------- + + 040a3H: LD (04075H),A + 04105H: LD A,(04075H) + +Indirect address 04153H. 4 references: +-------------------------------------- + + 04170H: LD (04153H),A + 04179H: LD A,(04153H) + 0418eH: LD A,(04153H) + 041e8H: LD (04153H),A + +Indirect address 04900H. 1 references: +-------------------------------------- + + 01dcbH: LD HL,(04900H) + +Indirect address 04902H. 2 references: +-------------------------------------- + + 01de5H: LD HL,(04902H) + 01dfeH: LD HL,(04902H) + +Indirect address 04905H. 1 references: +-------------------------------------- + + 02912H: LD A,(04905H) + +Indirect address 04908H. 4 references: +-------------------------------------- + + 01214H: LD (04908H),HL + 02972H: LD HL,(04908H) + 0297dH: LD HL,(04908H) + 02fa2H: LD HL,(04908H) + +Indirect address 0490aH. 5 references: +-------------------------------------- + + 01217H: LD (0490AH),HL + 012b4H: LD HL,(0490AH) + 01417H: LD HL,(0490AH) + 02994H: LD (0490AH),HL + 02f92H: LD HL,(0490AH) + +Indirect address 04a0eH. 2 references: +-------------------------------------- + + 012f3H: LD (04A0EH),HL + 01cdfH: LD HL,(04A0EH) + +Indirect address 04a10H. 3 references: +-------------------------------------- + + 012beH: LD HL,(04A10H) + 014f8H: LD HL,(04A10H) + 01c93H: LD HL,(04A10H) + +Indirect address 04a12H. 1 references: +-------------------------------------- + + 012e8H: LD A,(04A12H) + +Indirect address 04ab3H. 1 references: +-------------------------------------- + + 01c8fH: LD HL,(04AB3H) + +Indirect address 04ab5H. 1 references: +-------------------------------------- + + 01c9cH: LD HL,(04AB5H) + +Indirect address 04dd4H. 8 references: +-------------------------------------- + + 02b3dH: LD A,(04DD4H) + 02b56H: LD A,(04DD4H) + 02b7cH: LD A,(04DD4H) + 02be3H: LD A,(04DD4H) + 02c8eH: LD A,(04DD4H) + 02d17H: LD (04DD4H),A + 02dbcH: LD (04DD4H),A + 02eacH: LD (04DD4H),A + +Indirect address 04dd6H. 1 references: +-------------------------------------- + + 02e57H: LD (04DD6H),HL + +Indirect address 04e4cH. 1 references: +-------------------------------------- + + 01947H: LD (04E4CH),HL + +Indirect address 04e4eH. 2 references: +-------------------------------------- + + 01adeH: LD HL,(04E4EH) + 03044H: LD HL,(04E4EH) + +Indirect address 04e80H. 4 references: +-------------------------------------- + + 0332aH: LD HL,(04E80H) + 03340H: LD HL,(04E80H) + 03373H: LD HL,(04E80H) + 0338aH: LD HL,(04E80H) + +Indirect address 04e84H. 3 references: +-------------------------------------- + + 01996H: LD HL,(04E84H) + 0222bH: LD HL,(04E84H) + 0250aH: LD HL,(04E84H) + +Indirect address 04e8aH. 1 references: +-------------------------------------- + + 024beH: LD HL,(04E8AH) + +Indirect address 04e90H. 1 references: +-------------------------------------- + + 02584H: LD HL,(04E90H) + +Indirect address 04e92H. 3 references: +-------------------------------------- + + 01913H: LD HL,(04E92H) + 01a21H: LD HL,(04E92H) + 01b73H: LD HL,(04E92H) + +Indirect address 04e94H. 23 references: +--------------------------------------- + + 01789H: LD HL,(04E94H) + 0184dH: LD HL,(04E94H) + 0192cH: LD HL,(04E94H) + 01936H: LD HL,(04E94H) + 01a3eH: LD HL,(04E94H) + 01a42H: LD (04E94H),HL + 01a4fH: LD HL,(04E94H) + 01b79H: LD (04E94H),HL + 01e7fH: LD HL,(04E94H) + 01e83H: LD (04E94H),HL + 01f57H: LD HL,(04E94H) + 021d9H: LD IX,(04E94H) + 023bcH: LD HL,(04E94H) + 023c3H: LD (04E94H),HL + 023e3H: LD HL,(04E94H) + 023ecH: LD (04E94H),HL + 02411H: LD HL,(04E94H) + 02466H: LD HL,(04E94H) + 02548H: LD HL,(04E94H) + 02789H: LD HL,(04E94H) + 027e7H: LD HL,(04E94H) + 02986H: LD HL,(04E94H) + 02bc3H: LD HL,(04E94H) + +Indirect address 04e96H. 5 references: +-------------------------------------- + + 01987H: LD (04E96H),HL + 02529H: LD HL,(04E96H) + 02539H: LD (04E96H),HL + 0255bH: LD HL,(04E96H) + 02569H: LD (04E96H),HL + +Indirect address 04e98H. 9 references: +-------------------------------------- + + 01981H: LD (04E98H),HL + 01f0eH: LD HL,(04E98H) + 01f15H: LD (04E98H),HL + 01f6bH: LD HL,(04E98H) + 01f8aH: LD (04E98H),HL + 01fb1H: LD (04E98H),HL + 01fcdH: LD HL,(04E98H) + 01fecH: LD (04E98H),HL + 02028H: LD (04E98H),HL + +Indirect address 04e9aH. 3 references: +-------------------------------------- + + 0197bH: LD (04E9AH),HL + 01f1aH: LD HL,(04E9AH) + 01f25H: LD (04E9AH),HL + +Indirect address 05040H. 1 references: +-------------------------------------- + + 01f37H: LD (05040H),HL + +Indirect address 05047H. 1 references: +-------------------------------------- + + 01f63H: LD (05047H),A + +Indirect address 0504dH. 1 references: +-------------------------------------- + + 01b45H: LD HL,(0504DH) + +Indirect address 0504fH. 2 references: +-------------------------------------- + + 01ab8H: LD HL,(0504FH) + 01d32H: LD HL,(0504FH) + +Indirect address 05051H. 32 references: +--------------------------------------- + + 012c8H: LD (05051H),HL + 0173aH: LD HL,(05051H) + 01792H: LD HL,(05051H) + 017a0H: LD HL,(05051H) + 01b35H: LD HL,(05051H) + 01b5cH: LD (05051H),HL + 01c38H: LD (05051H),HL + 01c7aH: LD (05051H),HL + 01d79H: LD (05051H),HL + 01fbaH: LD (05051H),HL + 01fcaH: LD (05051H),HL + 02908H: LD (05051H),HL + 0295cH: LD (05051H),HL + 0296fH: LD (05051H),HL + 0297aH: LD (05051H),HL + 029deH: LD HL,(05051H) + 02a0eH: LD (05051H),HL + 02ab7H: LD (05051H),HL + 02b23H: LD (05051H),HL + 02b50H: LD (05051H),HL + 02c25H: LD (05051H),HL + 02c65H: LD (05051H),HL + 02cccH: LD HL,(05051H) + 02cd5H: LD (05051H),HL + 02ce0H: LD HL,(05051H) + 02cf0H: LD (05051H),HL + 02d12H: LD (05051H),HL + 02ffeH: LD (05051H),HL + 0300bH: LD (05051H),HL + 03305H: LD (05051H),HL + 03318H: LD (05051H),HL + 033b2H: LD (05051H),HL + +Indirect address 05053H. 2 references: +-------------------------------------- + + 01f72H: LD A,(05053H) + 01fc0H: LD A,(05053H) + +Indirect address 05056H. 2 references: +-------------------------------------- + + 01992H: LD (05056H),A + 01b5fH: LD A,(05056H) + +Indirect address 05057H. 1 references: +-------------------------------------- + + 0141bH: LD HL,(05057H) + +Indirect address 05059H. 4 references: +-------------------------------------- + + 0145fH: LD (05059H),A + 02d1dH: LD A,(05059H) + 02d47H: LD (05059H),A + 02d64H: LD (05059H),A + +Indirect address 0505aH. 3 references: +-------------------------------------- + + 02d24H: LD HL,(0505AH) + 02d38H: LD (0505AH),HL + 02d5fH: LD (0505AH),HL + + +End of reference file for "SA-5510.bin" + diff --git a/dis/XPATCH/XPATCH-5510.asm b/dis/XPATCH/XPATCH-5510.asm new file mode 100644 index 0000000..244cab5 --- /dev/null +++ b/dis/XPATCH/XPATCH-5510.asm @@ -0,0 +1,1894 @@ +; Disassembly of the file "XPATCH-5510.bin" +; +; CPU Type: Z80 +; +; Created with dZ80 2.1 +; +; on Sunday, 04 of April 2021 at 03:43 PM +; +PRTC EQU 0FEH +PRTD EQU 0FFH +GETL EQU 00003H +LETNL EQU 00006H +NL EQU 00009H +PRNTS EQU 0000CH +PRNTT EQU 0000FH +PRNT EQU 00012H +MSG EQU 00015H +MSGX EQU 00018H +GETKY EQU 0001BH +BRKEY EQU 0001EH +?WRI EQU 00021H +?WRD EQU 00024H +?RDI EQU 00027H +?RDD EQU 0002AH +?VRFY EQU 0002DH +MELDY EQU 00030H +?TMST EQU 00033H +TIMRD EQU 0003BH +BELL EQU 0003EH +XTEMP EQU 00041H +MSTA EQU 00044H +MSTP EQU 00047H +MONIT EQU 00000H +SS EQU 00089H +ST1 EQU 00095H +HLHEX EQU 00410H +_2HEX EQU 0041FH +?MODE EQU 0074DH +?KEY EQU 008CAH +PRNT3 EQU 0096CH +?ADCN EQU 00BB9H +?DACN EQU 00BCEH +?DSP EQU 00DB5H +?BLNK EQU 00DA6H +?DPCT EQU 00DDCH +PRTHL EQU 003BAH +PRTHX EQU 003C3H +ASC EQU 003DAH +HEX EQU 003F9H +DPCT EQU 00DDCH +DLY12 EQU 00DA7H +DLY12A EQU 00DAAH +?RSTR1 EQU 00EE6H +MOTOR EQU 006A3H +CKSUM EQU 0071AH +GAP EQU 0077AH +WTAPE EQU 00485H +MSTOP EQU 00700H +TAPECOPY EQU 011FDH +COLDSTRT EQU 01200H +WARMSTRTMON EQU 01250H +CMDWORDTBL EQU 015A8H +CMDJMPTBL EQU 01BB2H +CMTBUF EQU 02E33H +CMTFNAME EQU 02E34H +CMDREMDATA EQU 01C3CH +SYNTAXERR EQU 013ABH +CMDREAD EQU 02D12H +CMDLIST EQU 01C4DH +CMDRUN EQU 01E91H +CMDNEW EQU 01C42H +CMDPRINT EQU 02B0DH +CMDLET EQU 01D6AH +CMDFOR EQU 01F2BH +CMDIF EQU 021ADH +CMDTHEN EQU 013ABH +CMDGOTO EQU 01EA6H +CMDGOSUB EQU 01EC7H +CMDRETURN EQU 01EF8H +CMDNEXT EQU 01FC0H +CMDSTOP EQU 01D2CH +CMDEND EQU 01D15H +CMDON EQU 0203EH +CMDLOAD EQU 02D75H +CMDSAVE EQU 02D82H +CMDVERIFY EQU 02EB3H +CMDPOKE EQU 02191H +CMDDIM EQU 02080H +CMDDEFFN EQU 02201H +CMDINPUT EQU 02BFFH +CMDRESTORE EQU 01D4DH +CMDCLS EQU 021A6H +CMDMUSIC EQU 02269H +CMDTEMPO EQU 02282H +CMDUSRN EQU 02942H +CMDWOPEN EQU 02D9FH +CMDROPEN EQU 02D92H +CMDCLOSE EQU 02DADH +CMDMON EQU 028B6H +CMDLIMIT EQU 02967H +CMDCONT EQU 029CEH +CMDGET EQU 02902H +CMDINP EQU 029FEH +CMDOUT EQU 02A1CH +CMDCURSOR EQU 028B9H +CMDSET EQU 02AA6H +CMDRESET EQU 02AAAH +CMDAUTO EQU 02A2FH +CMDCOPY EQU 033ABH +CMDPAGE EQU 032D4H +OVFLERR EQU 013AEH +ILDATERR EQU 013B1H +DATMISERR EQU 013B4H +STRLENERR EQU 013B7H +MEMERR EQU 013BAH +LINELENERR EQU 013C0H +GOSUBERR EQU 013C3H +FORNEXTERR EQU 013C6H +FUNCERR EQU 013C9H +NEXTFORERR EQU 013CCH +RETGOSBERR EQU 013CFH +UNDEFFNERR EQU 013D2H +LINEERR EQU 013D5H +CONTERR EQU 013D8H +BADWRERR EQU 013DBH +CMDSTMTERR EQU 013DEH +READDATAERR EQU 013E1H +OPENERR EQU 013E4H +UNKNWNERR EQU 013E7H +OUTFILEERR EQU 013EAH +PRTNRDYERR EQU 013EDH +PRTHWERR EQU 013F0H +PRTPAPERERR EQU 013F3H +CHKSUMERR EQU 013F6H +TITLEMSG EQU 01347H +COPYRMSG EQU 01364H +READYMSG EQU 01384H +ERRORMSG EQU 0138AH +INMSG EQU 01391H +BREAKMSG EQU 01395H +BYTESMSG EQU 0139CH +ERRCODE EQU 013A3H +MSGNL EQU 01332H +UNUSEDTBL1 EQU 0167BH +UNUSEDTBL2 EQU 0167DH +WARMSTRT EQU 0124EH +OPERATORTBL EQU 0167FH +STRTONUM EQU 017FCH +GETNUM EQU 01E88H +SKIPSPACE EQU 0173FH +INCSKIPSPCE EQU 0173EH +EXECHL EQU 0177BH +EXECNOTCHR EQU 01795H +MATCHCHR EQU 017A3H +LINEBUFR EQU 0490DH +ATRB EQU 010F0H +NAME EQU 010F1H +SIZE EQU 01102H +DTADR EQU 01104H +EXADR EQU 01106H +COMNT EQU 01108H +SWPW EQU 01164H +KDATW EQU 0116EH +KANAF EQU 01170H +DSPXY EQU 01171H +MANG EQU 01173H +MANGE EQU 01179H +PBIAS EQU 0117AH +ROLTOP EQU 0117BH +MGPNT EQU 0117CH +PAGETP EQU 0117DH +ROLEND EQU 0117FH +FLASH EQU 0118EH +SFTLK EQU 0118FH +REVFLG EQU 01190H +SPAGE EQU 01191H +FLSDT EQU 01192H +STRGF EQU 01193H +DPRNT EQU 01194H +TMCNT EQU 01195H +SUMDT EQU 01197H +CSMDT EQU 01199H +AMPM EQU 0119BH +TIMFG EQU 0119CH +SWRK EQU 0119DH +TEMPW EQU 0119EH +ONTYO EQU 0119FH +OCTV EQU 011A0H +RATIO EQU 011A1H +BUFER EQU 011A3H +PRGSTART EQU 0505CH + + ORG PRGSTART + +L505C: NOP + NOP + NOP + NOP + NOP + NOP + NOP + NOP + NOP + NOP + NOP + NOP + NOP + NOP + NOP +L506B: NOP + NOP +L506D: LD BC,01B35H + PUSH BC + CALL L5098 + JP Z,L5150 + LD DE,L507D + JP MSGNL + +L507D: DB "RANGE ERROR" + DB 00DH +L5089: DB "OVERFLOW ERROR",00DH +L5098: LD DE,MONIT + LD (05063H),DE + DEC DE + DEC DE + LD (05065H),DE + CALL 017D5H + OR C + INC DE + LD A,02DH + CP (HL) + JR NZ,L50C0 ; (+011H) + LD (05063H),DE + INC HL + CALL 048A0H + CPL + JR Z,L50D2 ; (+018H) + LD (05065H),DE + JR L50D2 ; (+012H) + +L50C0: LD A,E + OR D + JR Z,L50CC ; (+008H) + LD (05063H),DE + LD (05065H),DE +L50CC: LD A,02FH + CP (HL) + JR NZ,L50D2 ; (+001H) + INC HL +L50D2: CALL 048A0H + INC L + JR NZ,L50DB ; (+003H) + LD DE,0000AH +L50DB: LD (05067H),DE + CALL 048A0H + NOP + JR NZ,L50E8 ; (+003H) + LD DE,0000AH +L50E8: LD (05069H),DE + LD (05051H),HL + LD BC,(05063H) + LD HL,(05065H) + OR A + SBC HL,BC +L50F9: JP C,SYNTAXERR + CALL L52BB + JR C,L50F9 ; (-008H) + CALL 01773H + JR Z,L5118 ; (+012H) + EX DE,HL + CALL 01867H + LD HL,(05067H) + EX DE,HL + SBC HL,DE + JR C,L5118 ; (+006H) + CALL L5118 +L5115: XOR A + INC A + RET + +L5118: LD BC,(05065H) + INC BC + CALL L52BB + JR NC,L5136 ; (+014H) + EX DE,HL + CALL 01867H + CALL L526C + EX DE,HL + CCF + JR C,L5149 ; (+01cH) +L512D: LD DE,L5089 + CALL MSG + JP 01438H + +L5136: PUSH DE + CALL 01867H + EX DE,HL + EX (SP),HL + CALL 01867H + CALL L526C + EX DE,HL + POP DE + JR C,L512D ; (-019H) + CALL 01773H +L5149: LD (L506B),HL + JR NC,L5115 ; (-039H) + XOR A + RET + +L5150: CALL 01AF1H + LD HL,(01958H) + PUSH HL + POP DE +L5158: PUSH HL + OR A + SBC HL,DE + JP C,MEMERR + LD BC,00080H + SBC HL,BC + POP HL + JR NC,L517E ; (+017H) + LD BC,00100H + EX DE,HL + CALL 01888H + EX DE,HL + ADD HL,BC + PUSH HL + PUSH DE + CALL 018EAH + LD HL,(04E94H) + ADD HL,BC + LD (04E94H),HL + POP DE + POP HL +L517E: PUSH DE + LD A,(HL) + LDI + OR (HL) + JR Z,L519C ; (+017H) + LDI + LD A,(HL) + LDI + LD B,(HL) + LD C,A + LDI + INC BC + CALL L51D1 + POP HL + LD C,(HL) + LD (HL),E + INC HL + LD B,(HL) + LD (HL),D + PUSH BC + POP HL + JR L5158 ; (-044H) + +L519C: LD (DE),A + INC DE + EX DE,HL + LD (04E4EH),HL + POP HL + CALL 0195AH + LD BC,(05063H) + CALL L52BB + LD BC,(05067H) +L51B1: PUSH HL + CALL 01867H + JR Z,L51CF ; (+018H) + PUSH HL + LD HL,(05065H) + SBC HL,DE + POP HL + JR C,L51CF ; (+00fH) + EX (SP),HL + INC HL + INC HL + LD (HL),C + INC HL + LD (HL),B + LD HL,(05069H) + ADD HL,BC + PUSH HL + POP BC + POP HL + JR L51B1 ; (-01eH) + +L51CF: POP HL + RET + +L51D1: CALL L52D5 + RET Z + CP 080H + JR NZ,L51D1 ; (-008H) + CALL L52D5 + CP 08CH + JR Z,L51EC ; (+00cH) + CP 08DH + JR Z,L51EC ; (+008H) + CP 08EH + JR Z,L51EC ; (+004H) + CP 09CH + JR NZ,L51D1 ; (-01bH) +L51EC: CALL L52D5 + DEC DE + DEC HL + SUB 030H + CP 00AH + JR NC,L51D1 ; (-026H) + CALL L5204 + LD A,02CH + CP (HL) + JR NZ,L51D1 ; (-02eH) + LD (DE),A + INC DE + INC HL + JR L51EC ; (-018H) + +L5204: PUSH DE + PUSH BC + CALL 017F6H + POP BC + CALL L526C + EX (SP),HL + JR NC,L523C ; (+02cH) + PUSH DE + PUSH HL + CALL NL + EX DE,HL + LD DE,L5255 + LD A,00DH + LD (DSPXY),A + CALL L5244 + LD DE,L525C + CALL MSG + XOR A + LD (DSPXY),A + LD D,B + LD E,C + CALL L526C + EX DE,HL + LD DE,L5257 + CALL L5244 + POP HL + LD (HL),070H + INC HL + POP DE +L523C: EX DE,HL + PUSH BC + CALL 01802H + POP BC + POP HL + RET + +L5244: PUSH BC + CALL MSG + LD DE,L505C + PUSH DE + CALL STRTONUM + POP DE + CALL MSG + POP BC + RET + +L5255: DB 03AH + DB 020H +L5257: DB "LINE" + DB 00DH +L525C: DB " DOES NOT EXIST" + DB 00DH +L526C: PUSH BC + PUSH HL + PUSH DE + XOR A + LD B,D + LD C,E + LD HL,(05065H) + SBC HL,DE + JR C,L52AB ; (+032H) + EX DE,HL + LD DE,(05063H) + SBC HL,DE + JR C,L52AB ; (+029H) + LD B,D + LD C,E + CALL L52BB + JR C,L52AB ; (+022H) + POP BC + LD DE,(05067H) + PUSH DE +L528F: CALL 01867H + JR Z,L52A7 ; (+013H) + EX DE,HL + XOR A + SBC HL,BC + JR Z,L52B2 ; (+018H) + JR NC,L52A7 ; (+00bH) + EX DE,HL + EX (SP),HL + LD DE,(05069H) + ADD HL,DE + EX (SP),HL + JR NC,L528F ; (-017H) + CPL +L52A7: OR A + CCF + JR L52AC ; (+001H) + +L52AB: XOR A +L52AC: POP DE +L52AD: LD D,B + LD E,C + POP HL + POP BC + RET + +L52B2: LD H,B + LD L,C + POP BC + SBC HL,BC + SCF + CCF + JR L52AD ; (-00eH) + +L52BB: LD HL,(01958H) + PUSH HL + JR L52C3 ; (+002H) + +L52C1: EX (SP),HL + EX DE,HL +L52C3: PUSH HL + CALL 01867H + JR Z,L52D1 ; (+008H) + EX DE,HL + SBC HL,BC + POP HL + JR C,L52C1 ; (-00eH) + POP DE + RET + +L52D1: POP HL + POP DE + SCF + RET + +L52D5: LD A,(HL) + LD (DE),A + CP 020H + INC HL + INC DE + JR Z,L52D5 ; (-008H) + CP 00DH + RET Z + CP 022H + RET NZ +L52E3: LD A,(HL) + LD (DE),A + INC HL + INC DE + CP 00DH + RET Z + CP 022H + JR NZ,L52E3 ; (-00bH) + OR A + RET + +L52F0: CALL 03327H + LD HL,(04AB3H) + CALL 018B0H + OR C + INC DE + PUSH HL + POP DE +L52FD: PUSH DE + LD A,(HL) + LDI + OR (HL) + JR Z,L532B ; (+027H) + LDI + LD A,(HL) + LDI + LD B,(HL) + LD C,A + LDI + PUSH HL + LD HL,(04AB5H) + OR A + SBC HL,BC + POP HL + JR C,L531C ; (+005H) + CALL L5338 + JR L5323 ; (+007H) + +L531C: LD A,(HL) + LDI + CP 00DH + JR NZ,L531C ; (-007H) +L5323: EX (SP),HL + LD (HL),E + INC HL + LD (HL),D + EX (SP),HL + POP AF + JR L52FD ; (-02eH) + +L532B: LDI + EX DE,HL + LD (04E4EH),HL + POP HL + CALL 0195AH + JP 01B35H + +L5338: PUSH DE +L5339: CALL SKIPSPACE + CALL L52D5 + JR NZ,L5343 ; (+002H) + POP BC + RET + +L5343: CP 080H + JR NZ,L5339 ; (-00eH) + CP (HL) + JR NZ,L5339 ; (-011H) + DEC DE + CALL 0174EH + INC HL + CP 03AH + JR Z,L5339 ; (-01aH) + EX (SP),HL + OR A + SBC HL,DE + POP HL + DEC DE + LD A,00DH + LD (DE),A + INC DE + RET C + DEC DE + DEC DE + DEC DE + DEC DE + RET + +L5363: XOR A + LD (L5465),A + CALL L536D + JP WARMSTRT + +L536D: LD A,(0504EH) + OR A + JP NZ,SYNTAXERR + CALL 0193BH + RET Z + LD DE,LINEBUFR + PUSH DE + CALL 0150AH + POP HL + CALL L546D + LD (L5467),A + LD DE,BUFER + LDIR + LD A,(L5465) + CP 001H + JR NZ,L53B7 ; (+025H) + LD DE,L5446 + CALL LETNL + CALL MSG + LD A,(DPRNT) + PUSH AF + LD DE,LINEBUFR + PUSH DE + CALL GETL + POP HL + XOR A + LD B,A + POP AF + LD C,A + ADD HL,BC + CALL L546D + LD DE,011CCH + LD (L5468),A + LDIR +L53B7: LD A,(L5467) + LD B,A + LD HL,(01958H) +L53BE: PUSH BC + PUSH HL + CALL 01867H + POP HL + JR NZ,L53D3 ; (+00dH) + CALL LETNL + POP BC + XOR A + RET + +L53CC: POP BC + POP DE + LD HL,(04A0EH) + JR L53BE ; (-015H) + +L53D3: CALL 018F2H + LD DE,04A0EH + CALL 018A5H + CALL 014F8H + POP BC + CALL BRKEY + JP Z,WARMSTRT + LD DE,BUFER + LD HL,0490FH +L53EC: LD A,(HL) + CP 020H + INC HL + JR NZ,L53EC ; (-006H) +L53F2: PUSH DE + PUSH BC + DEC HL +L53F5: INC HL + LD A,(HL) + CP 000H + JR Z,L53F5 ; (-006H) + CP 00DH + JR Z,L53CC ; (-033H) + EX DE,HL + CP (HL) + EX DE,HL + JR NZ,L53F5 ; (-00fH) + LD (L5469),HL +L5407: INC DE + DEC B + JR Z,L5423 ; (+018H) + LD A,(DE) + CP 020H + JR Z,L5407 ; (-009H) +L5410: INC HL + LD A,(HL) + CP 020H + JR Z,L5410 ; (-006H) + CP 00DH + JR Z,L53CC ; (-04eH) + EX DE,HL + CP (HL) + EX DE,HL + JR Z,L5407 ; (-018H) + POP BC + POP DE + JR L53F2 ; (-031H) + +L5423: INC HL + LD (L546B),HL + LD DE,LINEBUFR + CALL LETNL + CALL L5589 + POP BC + POP DE + LD A,(L5465) + OR A + RET NZ + CALL L543C + JR L53F2 ; (-04aH) + +L543C: CALL 03302H + CALL BRKEY + JP Z,L57D8 + RET + +L5446: DB " CHANGE TO? " + DB 00DH +L5453: DB "CHANGE IT? (Y/N) " + DB 00DH +L5465: DB 000H +L5466: DB 000H +L5467: DB 001H +L5468: DB 000H +L5469: DB 000H + DB 000H +L546B: DB 000H + DB 000H +L546D: LD A,(HL) + CP 020H + JP C,WARMSTRT + CP 022H + JR NZ,L5478 ; (+001H) + INC HL +L5478: CALL 018FDH + LD A,C + CP 028H + JP NC,ILDATERR + INC C + RET + +L5483: LD A,(HL) + CP 021H + JR NZ,L548A ; (+002H) + INC HL + XOR A +L548A: LD (L5466),A + RET + +L548E: LD A,001H + LD (L5465),A + CALL L5483 + CALL L536D +L5499: JP Z,WARMSTRT + CALL LETNL + LD A,(L5466) + OR A + JR NZ,L54BC ; (+017H) + LD DE,L5453 + CALL L59E3 + JR Z,L54BC ; (+00fH) + LD HL,(L546B) + LD DE,BUFER + LD A,(L5467) + LD B,A + CALL L53F2 + JR L5499 ; (-023H) + +L54BC: CALL 014F8H + LD HL,(L546B) + LD BC,(05469H) + OR A + SBC HL,BC + LD A,(L5468) + CP L + JR Z,L552E ; (+05fH) + JR C,L5517 ; (+046H) + PUSH BC + SUB L + LD C,A + LD B,000H + PUSH BC + LD HL,LINEBUFR + CALL 018FDH + INC C + LD A,C + POP BC + PUSH AF + ADD A,C + LD C,A + CP 050H + JR C,L5501 ; (+01aH) + LD DE,L55B3 + CALL LETNL + CALL MSG + POP AF + POP BC + LD HL,(04A0EH) + LD A,(L5467) + LD B,A + LD C,000H + LD DE,BUFER + JP L5565 + +L5501: LD HL,LINEBUFR + PUSH HL + ADD HL,BC + EX DE,HL + POP HL + POP AF + LD C,A + ADD HL,BC + POP BC + PUSH HL + OR A + SBC HL,BC + LD B,H + LD C,L + POP HL + LDDR + JR L552E ; (+017H) + +L5517: LD H,A + LD A,L + SUB H + LD L,A + LD H,000H + PUSH HL + LD HL,(L546B) + CALL 018FDH + INC C + POP DE + PUSH HL + OR A + SBC HL,DE + EX DE,HL + POP HL + LDIR +L552E: LD HL,011CCH + LD DE,(05469H) + LD A,(L5468) + OR A + JR Z,L5540 ; (+005H) + LD C,A + LD B,000H + LDIR +L5540: CALL 0146AH +L5543: LD HL,(04A10H) + CALL 018B0H + OR C + INC DE + CALL 01302H + CALL 018B3H + LD D,E + LD D,L + LD A,(L5465) + CP 001H + RET NZ + CALL 012F3H + LD DE,LINEBUFR + CALL MSGX + CALL LETNL +L5565: LD BC,L5499 + PUSH BC + LD DE,BUFER + LD HL,(L5469) + LD A,(L5468) + ADD A,L + LD L,A + LD A,(L5467) + LD B,A + LD C,000H + PUSH HL + LD HL,(04A0EH) + LD A,(HL) + INC HL + LD H,(HL) + LD L,A + LD (04A0EH),HL + POP HL + JP L53F2 + +L5589: PUSH DE + LD DE,L55AB + CALL MSG + POP DE + PUSH HL + CALL 00FB1H + CALL MSGX + LD A,(L5469) + ADD A,01BH + LD C,A + LD B,000H + XOR A + ADC HL,BC + LD A,0C2H + LD (HL),A + POP HL + CALL LETNL + RET + +L55AB: LD DE,01211H + LD (DE),A + DEC C + NOP + NOP + NOP +L55B3: DB "LINE IS TOO LONG!",00DH +L55C5: LD A,002H + LD (L5465),A + CALL L5483 + CALL L536D +L55D0: JP Z,WARMSTRT + CALL LETNL + LD A,(L5466) + OR A + JR NZ,L55E9 ; (+00dH) + LD DE,L55F8 + CALL L59E3 + JR Z,L55E9 ; (+005H) + LD HL,(04A0EH) + JR L55EC ; (+003H) + +L55E9: CALL L5543 +L55EC: LD DE,BUFER + LD A,(L5467) + LD B,A + CALL L53BE + JR L55D0 ; (-028H) + +L55F8: DB "DELETE THIS LINE (Y/N)? ",00DH +L5611: NOP +L5612: NOP + NOP + NOP + NOP +L5616: XOR A + LD (L5611),A + CALL EXECNOTCHR + CPL + DEC HL + LD D,(HL) + CALL EXECNOTCHR + LD D,B + XOR E + INC DE + LD A,001H + LD (L5611),A + CALL 03327H + LD HL,(04AB3H) + CALL 018B0H + OR C + INC DE + PUSH HL + CALL 01AF1H + POP HL +L563B: LD A,(HL) + INC HL + OR (HL) + JP Z,L574F + INC HL + LD C,(HL) + INC HL + LD B,(HL) + PUSH HL + OR A + LD HL,(04AB5H) + SBC HL,BC + POP HL + JP C,L574F + PUSH BC + POP IY +L5653: INC HL +L5654: LD A,(HL) + INC HL + CP 020H + JR Z,L5654 ; (-006H) + CP 00DH + JR Z,L563B ; (-023H) + CP 080H + JR C,L5676 ; (+014H) + JR NZ,L5654 ; (-010H) + CP (HL) + JR Z,L566C ; (+005H) + CALL L588A + JR NZ,L5654 ; (-018H) +L566C: CALL 0174EH + INC HL + CP 00DH + JR Z,L563B ; (-039H) + JR L5654 ; (-022H) + +L5676: CP 022H + JR NZ,L5686 ; (+00cH) +L567A: LD A,(HL) + INC HL + CP 00DH + JR Z,L563B ; (-045H) + CP 022H + JR NZ,L567A ; (-00aH) + JR L5654 ; (-032H) + +L5686: DEC HL + CALL 02640H + JR NC,L5653 ; (-039H) + LD A,046H + CP E + JR NZ,L5696 ; (+005H) + LD A,04EH + CP D + JR Z,L5653 ; (-043H) +L5696: LD BC,MONIT + LD A,(HL) + CP 024H + JR NZ,L56A1 ; (+003H) + LD C,006H + INC HL +L56A1: LD (05614H),DE + LD (L5612),HL + LD A,(HL) + CP 028H + JR Z,L56B3 ; (+006H) + LD A,C + ADD A,004H + LD C,A + JR L56CB ; (+018H) + +L56B3: INC HL +L56B4: LD A,(HL) + INC HL + CP 028H + JR NZ,L56C1 ; (+007H) +L56BA: LD A,(HL) + INC HL + CP 029H + JR NZ,L56BA ; (-006H) + LD A,(HL) +L56C1: CP 02CH + JR Z,L56CB ; (+006H) + CP 029H + JR NZ,L56B4 ; (-015H) + INC C + INC C +L56CB: LD HL,04E86H + ADD HL,BC + LD A,(HL) + INC HL + LD H,(HL) + LD L,A + LD DE,(05614H) +L56D7: LD A,(HL) + INC HL + CP E + JR C,L56E6 ; (+00aH) + JR NZ,L56F2 ; (+014H) + LD A,(HL) + CP D + JR C,L56E9 ; (+007H) + JR Z,L5705 ; (+021H) + JR L56F2 ; (+00cH) + +L56E6: OR (HL) + JR Z,L56F2 ; (+009H) +L56E9: INC HL + LD C,(HL) + LD B,000H + INC HL + ADD HL,BC + ADD HL,BC + JR L56D7 ; (-01bH) + +L56F2: DEC HL + EX DE,HL + LD BC,GETL + CALL 019C0H + LD HL,(05614H) + EX DE,HL + LD (HL),E + INC HL + LD (HL),D + INC HL + XOR A + JR L570B ; (+006H) + +L5705: INC HL + LD A,(HL) + CP PRTD + JR Z,L573C ; (+031H) +L570B: INC A + LD (HL),A + PUSH HL + LD B,A +L570F: INC HL + LD E,(HL) + INC HL + LD D,(HL) + PUSH HL + PUSH IY + POP HL + OR A + SBC HL,DE + POP HL + JR C,L5726 ; (+009H) + JR NZ,L5724 ; (+005H) + DEC A + POP HL + LD (HL),A + JR L5736 ; (+012H) + +L5724: DJNZ L570F ; (-017H) +L5726: POP AF + DEC HL + EX DE,HL + LD BC,00002H + CALL 019C0H + EX DE,HL + PUSH IY + POP BC + LD (HL),C + INC HL + LD (HL),B +L5736: LD HL,(L5612) + JP L5654 + +L573C: LD A,E + CALL L57DE + LD A,D + CALL L57DE + LD DE,L5807 + CALL L57FC + CALL L57ED + JR L5736 ; (-019H) + +L574F: LD IX,04E84H +L5753: CALL L57FC + INC IX + INC IX + PUSH IX + POP HL + LD A,L + CP 092H + JR NC,L57D8 ; (+076H) + SUB 086H + LD B,000H + LD C,A + RLC C + RLC C + LD HL,L5820 + CP 005H + JR C,L5775 ; (+003H) + LD HL,L5807 +L5775: ADD HL,BC + PUSH HL + POP IY + LD L,(IX+000H) + LD H,(IX+001H) +L577F: PUSH IY + POP DE + LD A,(HL) + LD B,A + INC HL + OR (HL) + JR Z,L5753 ; (-035H) + LD A,B + CALL L57DE + LD A,(HL) + CP 020H + JR Z,L5799 ; (+008H) + CALL L57DE + CALL L57ED + JR L57A1 ; (+008H) + +L5799: CALL L57ED + LD A,020H + CALL L57DE +L57A1: LD A,(DE) + CP 024H + LD A,020H + CALL NZ,L57DE + INC HL + LD B,(HL) + INC HL +L57AC: PUSH BC + LD E,(HL) + INC HL + LD D,(HL) + INC HL + PUSH HL + EX DE,HL + LD DE,LINEBUFR + PUSH DE + CALL STRTONUM + LD C,020H + EX DE,HL +L57BD: LD A,L + CP 015H + JR NC,L57C6 ; (+004H) + LD (HL),C + INC HL + JR L57BD ; (-009H) + +L57C6: LD (HL),00DH + POP DE + CALL L57ED + POP HL + CALL L543C + POP BC + DJNZ L57AC ; (-027H) + CALL L57FC + JR L577F ; (-059H) + +L57D8: CALL 01AF1H + JP WARMSTRT + +L57DE: PUSH BC + LD B,A + CALL PRNT + LD A,(L5611) + OR A + LD A,B + POP BC + RET Z + JP 03291H + +L57ED: PUSH BC + LD B,A + CALL MSG + LD A,(L5611) + OR A + LD A,B + POP BC + RET Z + JP 031B4H + +L57FC: CALL LETNL + LD A,(L5611) + OR A + RET Z + JP 031A7H + +L5807: DB " HAS MORE THAN 255 REFS" + DB 00DH + DB 024H +L5820: DB 028H + DB 02CH + DB 029H + DB 020H + DB 00DH + DB 00DH + DB 00DH + DB "$() " + DB 00DH + DB 00DH + DB 00DH + DB "$ " + DB 00DH + DB 00DH + DB 00DH + DB 000H +L5838: CALL 014C7H + JP Z,01497H + LD B,0B8H + LD DE,L585D + CALL 014C9H + JP 01495H + +L5849: LD A,B + CP 039H + JR NC,L5854 ; (+006H) + LD HL,CMDWORDTBL + JP 01541H + +L5854: SUB 038H + LD B,A + LD HL,L585D + JP 01541H + +L585D: DB "RENU" + DB 0CDH + DB "APPEN" + DB 0C4H + DB "COMPRES" + DB 0D3H + DB "DELET" + DB 0C5H + DB "FIN" + DB 0C4H + DB "CHANG" + DB 0C5H + DB "SDE" + DB 0CCH + DB "XRE" + DB 0C6H + DB 000H + DB 000H +L588A: LD A,(HL) + CP 081H + RET Z + RET C + CALL INCSKIPSPCE + CP 02FH + RET NZ + INC HL + INC HL + OR A + RET + +L5899: CALL LETNL + CALL LETNL + LD DE,L58A5 + JP 01329H + +L58A5: LD B,L + LD E,B + LD D,B + LD B,C + LD C,(HL) + LD B,H + LD B,L + LD B,H + JR NZ,L58F1 ; (+042H) + LD B,C + LD D,E + LD C,C + LD B,E + JR NZ,L58EA ; (+035H) + DEC (HL) + LD SP,02035H + DEC L + JR NZ,L5905 ; (+049H) + LD C,(HL) + LD B,E + LD C,H + LD D,L + LD B,H + LD B,L + LD D,E + LD A,(0430DH) + OR A + SBC A,(HL) + CP L + SBC A,L + AND (HL) + SUB A + SBC A,B + SUB (HL) + JR NZ,L5913 ; (+043H) + LD L,044H + LD L,020H + LD C,B + SUB D + AND C + SBC A,L + OR B + JR NZ,L590C ; (+031H) + ADD HL,SP + JR C,L5915 ; (+037H) + JR NZ,L58ED ; (+00dH) +L58E0: CALL 03296H + LD A,00AH + CALL 03296H + LD A,00DH +L58EA: RET + +L58EB: CALL SKIPSPACE + CP 030H + JR NZ,L58F6 ; (+004H) + LD A,0C3H + JR L58FD ; (+007H) + +L58F6: CP 031H + JP NZ,SYNTAXERR + LD A,0CDH +L58FD: LD (L58E0),A + INC HL +L5901: LD (05051H),HL +L5904: JP 01B35H + +L5907: LD A,0C6H + CALL ?DPCT +L590C: JR L5901 ; (-00dH) + +L590E: XOR A + LD (L5466),A + CALL L5098 +L5915: JR NZ,L591C ; (+005H) + CALL L5150 + JR L5904 ; (-018H) + +L591C: LD BC,(05063H) + CALL L52BB + JR Z,L5935 ; (+010H) + PUSH HL + LD BC,(05065H) + INC BC + CALL L52BB + POP DE + OR A + SBC HL,DE + JP Z,WARMSTRT +L5935: LD HL,(01958H) + JR L593C ; (+002H) + +L593A: POP HL + POP AF +L593C: PUSH HL + CALL 01867H + JR Z,L5989 ; (+047H) + PUSH HL + LD HL,(L506B) + SBC HL,DE + JR C,L593A ; (-010H) + LD HL,(05067H) + PUSH DE + EX DE,HL + SBC HL,DE + POP DE + JR C,L593A ; (-01aH) + LD HL,(05065H) + SBC HL,DE + JR C,L5963 ; (+008H) + LD HL,(05063H) + EX DE,HL + SBC HL,DE + JR NC,L593A ; (-029H) +L5963: LD A,(L5466) + OR A + JR NZ,L597B ; (+012H) + LD DE,L59C7 + CALL L59E0 + JR Z,L5976 ; (+005H) + POP HL + POP DE + JP 01B35H + +L5976: LD A,001H + LD (L5466),A +L597B: POP HL + POP DE + OR A + SBC HL,DE + LD B,H + LD C,L + PUSH DE + CALL 01306H + POP HL + JR L593C ; (-04dH) + +L5989: CALL L5150 +L598C: LD HL,(01958H) + CALL 01867H + JR Z,L59C4 ; (+030H) + PUSH DE + POP BC +L5996: PUSH HL + CALL 01867H + JR Z,L59C4 ; (+028H) + LD A,B + SUB D + JR NZ,L59A2 ; (+002H) + LD A,C + SUB E +L59A2: LD C,E + LD B,D + POP DE + JR C,L5996 ; (-011H) + PUSH BC + SBC HL,DE + LD B,H + LD C,L + LD HL,04A0EH + EX DE,HL + PUSH HL + PUSH BC + LDIR + POP BC + POP DE + CALL 01306H + POP HL + CALL 018B0H + CP A + LD E,C + CALL 012F3H + JR L598C ; (-038H) + +L59C4: JP WARMSTRT + +L59C7: DB "OK TO DELETE DUP LINES? " + DB 00DH +L59E0: CALL LETNL +L59E3: CALL MSG +L59E6: CALL BRKEY + JP Z,01438H + CALL 009B3H + CALL ?DACN + CALL 02305H + CP 059H + JR Z,L59FE ; (+005H) + CP 04EH + JR NZ,L59E6 ; (-017H) + OR A +L59FE: PUSH AF + CALL LETNL + POP AF + RET + +L5A04: DW L58EB + DW CMDAUTO + DW L5907 + DW L590E + DW CMDCOPY + DW CMDPAGE + DW L506D + DW 04806H + DW L52F0 + DW 0488EH + DW L5363 + DW L548E + DW L55C5 + DW L5616 +L5A20: DB "LIN" + DB 0C5H + DB "AUT" + DB 0CFH + DB "CL" + DB 0D3H + DB "MOV" + DB 0C5H + DB "COPY/" + DB 0D0H + DB "PAGE/" + DB 0D0H + DB 000H +L5A3C: CP 091H + RET C + CP 0BEH + RET NC + CALL ?ADCN + CP 081H + JR C,L5A4F ; (+006H) + CP 09BH + JR NC,L5A4F ; (+002H) + SUB 080H +L5A4F: JP ?DACN + +L5A52: DB "XP BASIC SA-551" +L5A61: DB 035H + DB 00DH +XPINIT: LD HL,L5A04 + LD DE,01C16H + LD BC,0001CH + LDIR + LD HL,L5A3C + PUSH HL + LD DE,L5A20 + SBC HL,DE + PUSH HL + POP BC + EX DE,HL + LD DE,0165EH + LDIR + POP HL + LD DE,02305H + LD BC,00016H + LDIR + LD HL,03338H + LD (022C9H),HL + LD HL,03302H + LD (01CCDH),HL + LD HL,MONIT + LD (01CCFH),HL + LD (01CD1H),HL + LD HL,03311H + LD (02B11H),HL + LD HL,048C1H + LD (0307BH),HL + LD (0318CH),HL + LD (03199H),HL + LD HL,02F6CH + LD (0315BH),HL + LD A,0CDH + LD (03140H),A + LD HL,0330BH + LD (03141H),HL + LD A,0C3H + LD HL,L5849 + LD (0153EH),A + LD (0153FH),HL + LD HL,L5838 + LD (01492H),A + LD (01493H),HL + LD A,(0322EH) + CP 0C3H + JR NZ,L5AF2 ; (+017H) + LD (031ADH),A + LD HL,L58E0 + LD (031AEH),HL + LD A,036H + JR L5AF4 ; (+00cH) + + LD A,0ABH + LD (01C16H),A + LD A,013H + LD (01C17H),A +L5AF2: LD A,035H +L5AF4: LD HL,L58B7 + LD (HL),A + LD HL,L5A61 + LD (HL),A + XOR A + LD (041ECH),A + LD HL,L5A52 + LD DE,04224H + LD BC,00011H + LDIR + LD HL,L5A04 + LD (01958H),HL + LD (018B4H),HL + LD (01AC8H),HL + LD (01AE2H),HL + LD (01B14H),HL + LD (01B1CH),HL + LD (01C7EH),HL + LD (01EC2H),HL + LD (02D44H),HL + LD (02F24H),HL + LD (0303CH),HL + LD (03042H),HL + INC HL + LD (01201H),HL + LD (041FFH),HL + LD HL,L5899 + LD (01225H),HL + LD HL,RELOC3302 + LD DE,03302H + LD BC,0005BH + LDIR + LD DE,04806H + LD BC,000F8H + LDIR + JP COLDSTRT + +RELOC3302: CALL GETKY ; Relocated to 0x3302 for 0x5B bytes. + CP 020H + JP Z,009B3H + RET + + LD HL,ATRB + JP 02F67H + + CALL EXECNOTCHR + LD B,B + JR L5B95 ; (+02bH) + + LD A,0C9H + LD (028F5H),A + CALL CMDCURSOR + LD A,0C3H + LD (028F5H),A + JP 02B18H + + LD A,0C9H + LD (01C7DH),A + CALL 01C68H + LD A,021H + LD (01C7DH),A + RET + + NOP + NOP + NOP + LD A,B + OR C + RET Z + LD A,B + SUB C + JR NC,L5B93 ; (+001H) + XOR A +L5B93: ADD A,C + LD B,A +L5B95: LD A,(DE) + CALL 02305H + LD C,A + PUSH AF + LD A,(HL) + CALL 02305H + LD C,A + POP AF + OR A + SUB C + JR NZ,L5BAA ; (+005H) + INC DE + INC HL + DJNZ L5B95 ; (-014H) + RET + +L5BAA: LD A,001H + RET NC + LD A,080H + RET + +RELOC4806: CALL 048EEH ; Relocated to 0x4806 for 0xF8 bytes. + LD HL,0FFFFH + CALL 018B0H + LD DE,0E548H + EX DE,HL + LD BC,(SIZE) + DEC BC + DEC BC + CALL 01888H + CALL 019C3H + LD (DTADR),DE + CALL 02F6CH + CALL ?RDD + JR C,L5BFB ; (+026H) + POP HL + CALL 01ACAH + LD HL,(DTADR) + PUSH HL + INC HL + INC HL + LD A,(HL) + INC HL + LD H,(HL) + LD L,A + CALL 018B0H + LD A,048H + POP BC + OR A + SBC HL,BC + JP NC,01B35H + LD DE,(DTADR) + CALL 0485EH + LD A,047H + JP 01403H + +L5BFB: POP DE + PUSH DE + CALL 0485EH + POP HL + XOR A + LD (HL),A + INC HL + LD (HL),A + JP CHKSUMERR + + LD BC,(SIZE) + DEC BC + DEC BC + JP 02F59H + + CALL 03327H + LD HL,(04AB5H) + LD A,H + AND L + CP PRTD + JP Z,ILDATERR + PUSH HL + LD HL,(04AB3H) + LD A,H + OR L + JP Z,ILDATERR + CALL 018B0H + OR C + INC DE + EX (SP),HL + INC HL + CALL 018B0H + ADC A,C + LD C,B + POP DE + OR A + SBC HL,DE + RET + + CALL 04867H + JR Z,L5C44 ; (+007H) + JR C,L5C47 ; (+008H) + PUSH HL + POP BC + CALL 01306H +L5C44: JP 01B35H + +L5C47: JP OVFLERR + + PUSH BC + CALL 017F6H + POP BC + LD A,E + OR D + EX (SP),HL + LD A,(HL) + INC HL + EX (SP),HL + PUSH AF + CP (HL) + JR Z,L5C66 ; (+00dH) + LD A,00DH + CP (HL) + JR Z,L5C63 ; (+005H) + LD A,03AH + CP (HL) + JR NZ,L5C47 ; (-01cH) +L5C63: POP AF + SCF + RET + +L5C66: CALL INCSKIPSPCE + POP AF + RET + + DI + PUSH DE + PUSH BC + PUSH HL + LD DE,0D753H + LD BC,(SIZE) + LD HL,(DTADR) + LD A,B + OR C + JP Z,004CBH + CALL CKSUM + CALL MOTOR + JP C,00552H + CALL 048E3H + JP 00461H + + PUSH BC + PUSH DE + LD BC,00200H + LD DE,01414H + JP 0078EH + + LD A,0C9H + LD (02F19H),A + CALL 02EDAH + LD A,0CDH + LD (02F19H),A + JP 01AF1H + + NOP ; End of Relocated code. + NOP + NOP + NOP + NOP diff --git a/dis/XPATCH/XPATCH-5510.ref b/dis/XPATCH/XPATCH-5510.ref new file mode 100644 index 0000000..b10ee48 --- /dev/null +++ b/dis/XPATCH/XPATCH-5510.ref @@ -0,0 +1,875 @@ +dZ80 2.1 Reference file from the disassembly of "XPATCH-5510.bin". + +Direct address Reference (127 entries) +-------------------------------------- + +Direct address 00000H. 3 references: +------------------------------------ + + 05098H: LD DE,00000H + 05696H: LD BC,00000H + 05a94H: LD HL,00000H + +Direct address 00002H. 1 references: +------------------------------------ + + 05729H: LD BC,00002H + +Direct address 00003H. 1 references: +------------------------------------ + + 056f4H: LD BC,00003H + +Direct address 0000aH. 2 references: +------------------------------------ + + 050d8H: LD DE,0000AH + 050e5H: LD DE,0000AH + +Direct address 00011H. 1 references: +------------------------------------ + + 05b06H: LD BC,00011H + +Direct address 00016H. 1 references: +------------------------------------ + + 05a83H: LD BC,00016H + +Direct address 0001cH. 1 references: +------------------------------------ + + 05a69H: LD BC,0001CH + +Direct address 0005bH. 1 references: +------------------------------------ + + 05b45H: LD BC,0005BH + +Direct address 00080H. 1 references: +------------------------------------ + + 0515fH: LD BC,00080H + +Direct address 000f8H. 1 references: +------------------------------------ + + 05b4dH: LD BC,000F8H + +Direct address 00100H. 1 references: +------------------------------------ + + 05167H: LD BC,00100H + +Direct address 00200H. 1 references: +------------------------------------ + + 05c8fH: LD BC,00200H + +Direct address ATRB. 1 references: +---------------------------------- + + 05b5eH: LD HL,010F0H + +Direct address SIZE. 3 references: +---------------------------------- + + 05bbdH: LD BC,(01102H) + 05c08H: LD BC,(01102H) + 05c72H: LD BC,(01102H) + +Direct address DTADR. 2 references: +----------------------------------- + + 05bc9H: LD (01104H),DE + 05befH: LD DE,(01104H) + +Direct address BUFER. 6 references: +----------------------------------- + + 05386H: LD DE,011A3H + 053e6H: LD DE,011A3H + 054b0H: LD DE,011A3H + 054fbH: LD DE,011A3H + 05569H: LD DE,011A3H + 055ecH: LD DE,011A3H + +Direct address 011ccH. 2 references: +------------------------------------ + + 053afH: LD DE,011CCH + 0552eH: LD HL,011CCH + +Direct address 01211H. 1 references: +------------------------------------ + + 055abH: LD DE,01211H + +Direct address 01414H. 1 references: +------------------------------------ + + 05c92H: LD DE,01414H + +Direct address 015a8H. 1 references: +------------------------------------ + + 0584eH: LD HL,015A8H + +Direct address 0165eH. 1 references: +------------------------------------ + + 05a7aH: LD DE,0165EH + +Direct address 01b35H. 1 references: +------------------------------------ + + 0506dH: LD BC,01B35H + +Direct address 01c16H. 1 references: +------------------------------------ + + 05a66H: LD DE,01C16H + +Direct address 02035H. 1 references: +------------------------------------ + + 058b6H: LD SP,02035H + +Direct address 02305H. 1 references: +------------------------------------ + + 05a80H: LD DE,02305H + +Direct address 02a2fH. 1 references: +------------------------------------ + + 05a06H: CPL + +Direct address 02f6cH. 1 references: +------------------------------------ + + 05aafH: LD HL,02F6CH + +Direct address 032d4H. 1 references: +------------------------------------ + + 05a0eH: CALL NC,06D32H + +Direct address 03302H. 2 references: +------------------------------------ + + 05a8eH: LD HL,03302H + 05b42H: LD DE,03302H + +Direct address 0330bH. 1 references: +------------------------------------ + + 05abaH: LD HL,0330BH + +Direct address 03311H. 1 references: +------------------------------------ + + 05a9dH: LD HL,03311H + +Direct address 03338H. 1 references: +------------------------------------ + + 05a88H: LD HL,03338H + +Direct address 033abH. 1 references: +------------------------------------ + + 05a0cH: XOR E + +Direct address 04224H. 1 references: +------------------------------------ + + 05b03H: LD DE,04224H + +Direct address 04806H. 2 references: +------------------------------------ + + 05a12H: LD B,048H + 05b4aH: LD DE,04806H + +Direct address 0488eH. 1 references: +------------------------------------ + + 05a16H: ADC A,(HL) + +Direct address 048c1H. 1 references: +------------------------------------ + + 05aa3H: LD HL,048C1H + +Direct address LINEBUFR. 7 references: +-------------------------------------- + + 05378H: LD DE,0490DH + 0539fH: LD DE,0490DH + 05427H: LD DE,0490DH + 054d7H: LD HL,0490DH + 05501H: LD HL,0490DH + 0555cH: LD DE,0490DH + 057b3H: LD DE,0490DH + +Direct address 0490fH. 1 references: +------------------------------------ + + 053e9H: LD HL,0490FH + +Direct address 04a0eH. 2 references: +------------------------------------ + + 053d6H: LD DE,04A0EH + 059acH: LD HL,04A0EH + +Direct address 04e84H. 1 references: +------------------------------------ + + 0574fH: LD IX,04E84H + +Direct address 04e86H. 1 references: +------------------------------------ + + 056cbH: LD HL,04E86H + +Direct address 0505cH. 1 references: +------------------------------------ + + 05248H: LD DE,0505CH + +Direct address 05063H. 7 references: +------------------------------------ + + 0509bH: LD (05063H),DE + 050afH: LD (05063H),DE + 050c4H: LD (05063H),DE + 050efH: LD BC,(05063H) + 051a6H: LD BC,(05063H) + 0527aH: LD DE,(05063H) + 0591cH: LD BC,(05063H) + +Direct address 05065H. 5 references: +------------------------------------ + + 050a1H: LD (05065H),DE + 050baH: LD (05065H),DE + 050c8H: LD (05065H),DE + 05118H: LD BC,(05065H) + 05926H: LD BC,(05065H) + +Direct address 05067H. 3 references: +------------------------------------ + + 050dbH: LD (05067H),DE + 051adH: LD BC,(05067H) + 0528aH: LD DE,(05067H) + +Direct address 05069H. 2 references: +------------------------------------ + + 050e8H: LD (05069H),DE + 0529eH: LD DE,(05069H) + +Direct address 0506dH. 1 references: +------------------------------------ + + 05a10H: LD L,L + +Direct address 0507dH. 1 references: +------------------------------------ + + 05077H: LD DE,0507DH + +Direct address 05089H. 1 references: +------------------------------------ + + 0512dH: LD DE,05089H + +Direct address 05255H. 1 references: +------------------------------------ + + 05216H: LD DE,05255H + +Direct address 05257H. 1 references: +------------------------------------ + + 05231H: LD DE,05257H + +Direct address 0525cH. 1 references: +------------------------------------ + + 05221H: LD DE,0525CH + +Direct address 052f0H. 1 references: +------------------------------------ + + 05a14H: RET P + +Direct address 05363H. 1 references: +------------------------------------ + + 05a18H: LD H,E + +Direct address 05446H. 1 references: +------------------------------------ + + 05392H: LD DE,05446H + +Direct address 05453H. 1 references: +------------------------------------ + + 054a5H: LD DE,05453H + +Direct address 05469H. 2 references: +------------------------------------ + + 054c2H: LD BC,(05469H) + 05531H: LD DE,(05469H) + +Direct address 0548eH. 1 references: +------------------------------------ + + 05a1aH: ADC A,(HL) + +Direct address 05499H. 1 references: +------------------------------------ + + 05565H: LD BC,05499H + +Direct address 055abH. 1 references: +------------------------------------ + + 0558aH: LD DE,055ABH + +Direct address 055b3H. 1 references: +------------------------------------ + + 054e7H: LD DE,055B3H + +Direct address 055c5H. 1 references: +------------------------------------ + + 05a1cH: PUSH BC + +Direct address 055f8H. 1 references: +------------------------------------ + + 055dcH: LD DE,055F8H + +Direct address 05614H. 2 references: +------------------------------------ + + 056a1H: LD (05614H),DE + 056d3H: LD DE,(05614H) + +Direct address 05616H. 1 references: +------------------------------------ + + 05a1eH: LD D,056H + +Direct address 05807H. 2 references: +------------------------------------ + + 05744H: LD DE,05807H + 05772H: LD HL,05807H + +Direct address 05820H. 1 references: +------------------------------------ + + 0576bH: LD HL,05820H + +Direct address 05838H. 1 references: +------------------------------------ + + 05acbH: LD HL,05838H + +Direct address 05849H. 1 references: +------------------------------------ + + 05ac2H: LD HL,05849H + +Direct address 0585dH. 2 references: +------------------------------------ + + 05840H: LD DE,0585DH + 05857H: LD HL,0585DH + +Direct address 05899H. 1 references: +------------------------------------ + + 05b39H: LD HL,05899H + +Direct address 058a5H. 1 references: +------------------------------------ + + 0589fH: LD DE,058A5H + +Direct address 058b7H. 1 references: +------------------------------------ + + 05af4H: LD HL,058B7H + +Direct address 058e0H. 1 references: +------------------------------------ + + 05adeH: LD HL,058E0H + +Direct address 058ebH. 1 references: +------------------------------------ + + 05a04H: EX DE,HL + +Direct address 05907H. 1 references: +------------------------------------ + + 05a08H: RLCA + +Direct address 0590eH. 1 references: +------------------------------------ + + 05a0aH: LD C,059H + +Direct address 059c7H. 1 references: +------------------------------------ + + 05969H: LD DE,059C7H + +Direct address 05a04H. 2 references: +------------------------------------ + + 05a63H: LD HL,05A04H + 05b0bH: LD HL,05A04H + +Direct address 05a20H. 1 references: +------------------------------------ + + 05a72H: LD DE,05A20H + +Direct address 05a3cH. 1 references: +------------------------------------ + + 05a6eH: LD HL,05A3CH + +Direct address 05a52H. 1 references: +------------------------------------ + + 05b00H: LD HL,05A52H + +Direct address 05a61H. 1 references: +------------------------------------ + + 05af8H: LD HL,05A61H + +Direct address 05b55H. 1 references: +------------------------------------ + + 05b3fH: LD HL,05B55H + +Direct address 0d753H. 1 references: +------------------------------------ + + 05c6fH: LD DE,0D753H + +Direct address 0e548H. 1 references: +------------------------------------ + + 05bb9H: LD DE,0E548H + +Direct address 0ffffH. 1 references: +------------------------------------ + + 05bb3H: LD HL,0FFFFH + + +Indirect address Reference (120 entries) +---------------------------------------- + +Indirect address DTADR. 2 references: +------------------------------------- + + 05bd9H: LD HL,(01104H) + 05c76H: LD HL,(01104H) + +Indirect address DSPXY. 2 references: +------------------------------------- + + 0521bH: LD (01171H),A + 05228H: LD (01171H),A + +Indirect address DPRNT. 1 references: +------------------------------------- + + 0539bH: LD A,(01194H) + +Indirect address 01201H. 1 references: +-------------------------------------- + + 05b33H: LD (01201H),HL + +Indirect address 01225H. 1 references: +-------------------------------------- + + 05b3cH: LD (01225H),HL + +Indirect address 01492H. 1 references: +-------------------------------------- + + 05aceH: LD (01492H),A + +Indirect address 01493H. 1 references: +-------------------------------------- + + 05ad1H: LD (01493H),HL + +Indirect address 0153eH. 1 references: +-------------------------------------- + + 05ac5H: LD (0153EH),A + +Indirect address 0153fH. 1 references: +-------------------------------------- + + 05ac8H: LD (0153FH),HL + +Indirect address 018b4H. 1 references: +-------------------------------------- + + 05b11H: LD (018B4H),HL + +Indirect address 01958H. 6 references: +-------------------------------------- + + 05153H: LD HL,(01958H) + 052bbH: LD HL,(01958H) + 053bbH: LD HL,(01958H) + 05935H: LD HL,(01958H) + 0598cH: LD HL,(01958H) + 05b0eH: LD (01958H),HL + +Indirect address 01ac8H. 1 references: +-------------------------------------- + + 05b14H: LD (01AC8H),HL + +Indirect address 01ae2H. 1 references: +-------------------------------------- + + 05b17H: LD (01AE2H),HL + +Indirect address 01b14H. 1 references: +-------------------------------------- + + 05b1aH: LD (01B14H),HL + +Indirect address 01b1cH. 1 references: +-------------------------------------- + + 05b1dH: LD (01B1CH),HL + +Indirect address 01c16H. 1 references: +-------------------------------------- + + 05aeaH: LD (01C16H),A + +Indirect address 01c17H. 1 references: +-------------------------------------- + + 05aefH: LD (01C17H),A + +Indirect address 01c7dH. 2 references: +-------------------------------------- + + 05b7cH: LD (01C7DH),A + 05b84H: LD (01C7DH),A + +Indirect address 01c7eH. 1 references: +-------------------------------------- + + 05b20H: LD (01C7EH),HL + +Indirect address 01ccdH. 1 references: +-------------------------------------- + + 05a91H: LD (01CCDH),HL + +Indirect address 01ccfH. 1 references: +-------------------------------------- + + 05a97H: LD (01CCFH),HL + +Indirect address 01cd1H. 1 references: +-------------------------------------- + + 05a9aH: LD (01CD1H),HL + +Indirect address 01ec2H. 1 references: +-------------------------------------- + + 05b23H: LD (01EC2H),HL + +Indirect address 022c9H. 1 references: +-------------------------------------- + + 05a8bH: LD (022C9H),HL + +Indirect address 028f5H. 2 references: +-------------------------------------- + + 05b6cH: LD (028F5H),A + 05b74H: LD (028F5H),A + +Indirect address 02b11H. 1 references: +-------------------------------------- + + 05aa0H: LD (02B11H),HL + +Indirect address 02d44H. 1 references: +-------------------------------------- + + 05b26H: LD (02D44H),HL + +Indirect address 02f19H. 2 references: +-------------------------------------- + + 05c9aH: LD (02F19H),A + 05ca2H: LD (02F19H),A + +Indirect address 02f24H. 1 references: +-------------------------------------- + + 05b29H: LD (02F24H),HL + +Indirect address 0303cH. 1 references: +-------------------------------------- + + 05b2cH: LD (0303CH),HL + +Indirect address 03042H. 1 references: +-------------------------------------- + + 05b2fH: LD (03042H),HL + +Indirect address 0307bH. 1 references: +-------------------------------------- + + 05aa6H: LD (0307BH),HL + +Indirect address 03140H. 1 references: +-------------------------------------- + + 05ab7H: LD (03140H),A + +Indirect address 03141H. 1 references: +-------------------------------------- + + 05abdH: LD (03141H),HL + +Indirect address 0315bH. 1 references: +-------------------------------------- + + 05ab2H: LD (0315BH),HL + +Indirect address 0318cH. 1 references: +-------------------------------------- + + 05aa9H: LD (0318CH),HL + +Indirect address 03199H. 1 references: +-------------------------------------- + + 05aacH: LD (03199H),HL + +Indirect address 031adH. 1 references: +-------------------------------------- + + 05adbH: LD (031ADH),A + +Indirect address 031aeH. 1 references: +-------------------------------------- + + 05ae1H: LD (031AEH),HL + +Indirect address 0322eH. 1 references: +-------------------------------------- + + 05ad4H: LD A,(0322EH) + +Indirect address 041ecH. 1 references: +-------------------------------------- + + 05afdH: LD (041ECH),A + +Indirect address 041ffH. 1 references: +-------------------------------------- + + 05b36H: LD (041FFH),HL + +Indirect address 0430dH. 1 references: +-------------------------------------- + + 058c3H: LD A,(0430DH) + +Indirect address 04a0eH. 5 references: +-------------------------------------- + + 053ceH: LD HL,(04A0EH) + 054f2H: LD HL,(04A0EH) + 0557bH: LD HL,(04A0EH) + 05582H: LD (04A0EH),HL + 055e4H: LD HL,(04A0EH) + +Indirect address 04a10H. 1 references: +-------------------------------------- + + 05543H: LD HL,(04A10H) + +Indirect address 04ab3H. 3 references: +-------------------------------------- + + 052f3H: LD HL,(04AB3H) + 0562eH: LD HL,(04AB3H) + 05c1fH: LD HL,(04AB3H) + +Indirect address 04ab5H. 3 references: +-------------------------------------- + + 0530eH: LD HL,(04AB5H) + 05647H: LD HL,(04AB5H) + 05c14H: LD HL,(04AB5H) + +Indirect address 04e4eH. 2 references: +-------------------------------------- + + 0519fH: LD (04E4EH),HL + 0532eH: LD (04E4EH),HL + +Indirect address 04e94H. 2 references: +-------------------------------------- + + 05175H: LD HL,(04E94H) + 05179H: LD (04E94H),HL + +Indirect address 0504eH. 1 references: +-------------------------------------- + + 0536dH: LD A,(0504EH) + +Indirect address 05051H. 2 references: +-------------------------------------- + + 050ecH: LD (05051H),HL + 05901H: LD (05051H),HL + +Indirect address 05063H. 1 references: +-------------------------------------- + + 0595bH: LD HL,(05063H) + +Indirect address 05065H. 4 references: +-------------------------------------- + + 050f3H: LD HL,(05065H) + 051b8H: LD HL,(05065H) + 05272H: LD HL,(05065H) + 05954H: LD HL,(05065H) + +Indirect address 05067H. 2 references: +-------------------------------------- + + 0510aH: LD HL,(05067H) + 0594aH: LD HL,(05067H) + +Indirect address 05069H. 1 references: +-------------------------------------- + + 051c6H: LD HL,(05069H) + +Indirect address 0506bH. 2 references: +-------------------------------------- + + 05149H: LD (0506BH),HL + 05943H: LD HL,(0506BH) + +Indirect address 05465H. 6 references: +-------------------------------------- + + 05364H: LD (05465H),A + 0538bH: LD A,(05465H) + 05432H: LD A,(05465H) + 05490H: LD (05465H),A + 05553H: LD A,(05465H) + 055c7H: LD (05465H),A + +Indirect address 05466H. 6 references: +-------------------------------------- + + 0548aH: LD (05466H),A + 0549fH: LD A,(05466H) + 055d6H: LD A,(05466H) + 0590fH: LD (05466H),A + 05963H: LD A,(05466H) + 05978H: LD (05466H),A + +Indirect address 05467H. 6 references: +-------------------------------------- + + 05383H: LD (05467H),A + 053b7H: LD A,(05467H) + 054b3H: LD A,(05467H) + 054f5H: LD A,(05467H) + 05574H: LD A,(05467H) + 055efH: LD A,(05467H) + +Indirect address 05468H. 4 references: +-------------------------------------- + + 053b2H: LD (05468H),A + 054c9H: LD A,(05468H) + 05535H: LD A,(05468H) + 0556fH: LD A,(05468H) + +Indirect address 05469H. 3 references: +-------------------------------------- + + 05404H: LD (05469H),HL + 0556cH: LD HL,(05469H) + 05598H: LD A,(05469H) + +Indirect address 0546bH. 4 references: +-------------------------------------- + + 05424H: LD (0546BH),HL + 054adH: LD HL,(0546BH) + 054bfH: LD HL,(0546BH) + 0551eH: LD HL,(0546BH) + +Indirect address 05611H. 5 references: +-------------------------------------- + + 05617H: LD (05611H),A + 05628H: LD (05611H),A + 057e3H: LD A,(05611H) + 057f2H: LD A,(05611H) + 057ffH: LD A,(05611H) + +Indirect address 05612H. 2 references: +-------------------------------------- + + 056a5H: LD (05612H),HL + 05736H: LD HL,(05612H) + +Indirect address 05614H. 1 references: +-------------------------------------- + + 056faH: LD HL,(05614H) + +Indirect address 058e0H. 1 references: +-------------------------------------- + + 058fdH: LD (058E0H),A + + +End of reference file for "XPATCH-5510.bin" + diff --git a/dis/XPATCH/XPATCH.ini b/dis/XPATCH/XPATCH.ini new file mode 100644 index 0000000..8cf8def --- /dev/null +++ b/dis/XPATCH/XPATCH.ini @@ -0,0 +1,330 @@ +---------------------------------------- +-- dZ80 configuration file +---------------------------------------- + +---------------------------------------- +-- Disassembly control +---------------------------------------- + +cpu="z80" +inputfile="XPATCH-5510.bin" +outputfile="XPATCH-5510.asm" +--fileheadersize=27 +filebaseaddr=20572 +disstart=0 +disend=23724 +--disstart=0 +--disend=3584 +--quiet=0 +labelledoutput=1 + +---------------------------------------- +-- Layout +---------------------------------------- + +labelreference=1 +addresscolumn=1 +opcodecolumn=1 +relativejumpcomment=1 +uppercase=1 +autoblanklines=1 +db="db" +comment="; " +radix=16 +numprefix="0" +numsuffix="H" + +---------------------------------------- +-- Scripts +---------------------------------------- + +--script="scripts\\spectrum.lua" + +---------------------------------------- +-- References +---------------------------------------- + +referencefile="XPATCH-5510.ref" +inportreference=1 +outportreference=1 +addressreference=1 +indirectaddressreference=1 +limitreferences=1 + +---------------------------------------- +-- Opcode mapfile and code/data areas +---------------------------------------- + +--opmapfile="mayhem.map" + +-- Code Region isnt required as v2.x sets the entire region to code unless a data region overrides it. +d_SetCodeRegion(20572, 3152) + +-- Set the known data regions, either as a data region (byte), word or string. The type affects the assembly output definitions and word +-- regions will attempt to map to an address, ie. jump tables will be setup with labels rather than constants. +d_SetDataRegion( hex("507D"), 27) +d_SetStringRegion( hex("507D"), 11) +d_SetStringRegion( hex("5089"), 15) +d_SetDataRegion( hex("5255"), 23) +d_SetStringRegion( hex("5257"), 4) +d_SetStringRegion( hex("525C"), 15) + +d_SetDataRegion( hex("5446"), 31) +d_SetStringRegion( hex("5446"), 12) +d_SetStringRegion( hex("5453"), 17) +d_SetDataRegion( hex("5465"), 8) +d_SetStringRegion( hex("55B3"), 18) +d_SetStringRegion( hex("55F8"), 25) + +d_SetDataRegion( hex("5807"), 49) +d_SetStringRegion( hex("5807"), 23) +--d_SetStringRegion( hex("581F"), 5) +d_SetStringRegion( hex("5827"), 5) +d_SetStringRegion( hex("582F"), 5) + +d_SetDataRegion( hex("585D"), 45) +d_SetStringRegion( hex("585D"), 4) +d_SetStringRegion( hex("5862"), 5) +d_SetStringRegion( hex("5868"), 7) +d_SetStringRegion( hex("5870"), 5) +d_SetStringRegion( hex("5876"), 3) +d_SetStringRegion( hex("587A"), 5) +d_SetStringRegion( hex("5880"), 3) +d_SetStringRegion( hex("5884"), 3) + +--d_SetStringRegion( hex("585D"), 4) +--d_SetDataRegion( hex("58A5"), 59) +--d_SetStringRegion( hex("58A5"), 17) +--d_SetStringRegion( hex("58B7"), 40) + +d_SetDataRegion( hex("59C7"), 25) +d_SetStringRegion( hex("59C7"), 24) + +d_SetDataRegion( hex("5A04"), 56) +d_SetWordRegion( hex("5A04"), 28) + +-- Reserved key words. +d_SetDataRegion( hex("5A20"), 28) +d_SetStringRegion( hex("5A20"), 3) -- LINE +d_SetStringRegion( hex("5A24"), 3) -- AUTO +d_SetStringRegion( hex("5A28"), 2) -- CLR +d_SetStringRegion( hex("5A2B"), 3) -- MOVE +d_SetStringRegion( hex("5A2F"), 5) -- COPY/P +d_SetStringRegion( hex("5A35"), 5) -- PAGE/P + +d_SetDataRegion( hex("5A52"), 17) +d_SetStringRegion( hex("5A52"), 15) + +-- Create a mapping table of known Sharp I/O ports and 8 bit constants. +-- +-- Format Addr IsAddr Label : IsAddr = 0, value is a constant, = 1, value is an address. +d_SetByteEquate(hex("FE") , 1, "PRTC" ) +d_SetByteEquate(hex("FF") , 1, "PRTD" ) + +-- Create a mapping table of known Sharp MZ BIOS/Memory Mapped Hardware addresses which dz80 +-- can use to replace an address with the label. The EQU list will also be output at the start +-- of the disassembly file so it can compile. +-- Format Addr IsAddr Label : IsAddr = 0, value is a constant, = 1, value is an address. +d_SetWordEquate(hex("0003"), 1, "GETL" ) +d_SetWordEquate(hex("0006"), 1, "LETNL" ) +d_SetWordEquate(hex("0009"), 1, "NL" ) +d_SetWordEquate(hex("000C"), 1, "PRNTS" ) +d_SetWordEquate(hex("000F"), 1, "PRNTT" ) +d_SetWordEquate(hex("0012"), 1, "PRNT" ) +d_SetWordEquate(hex("0015"), 1, "MSG" ) +d_SetWordEquate(hex("0018"), 1, "MSGX" ) +d_SetWordEquate(hex("001B"), 1, "GETKY" ) +d_SetWordEquate(hex("001E"), 1, "BRKEY" ) +d_SetWordEquate(hex("0021"), 1, "?WRI" ) +d_SetWordEquate(hex("0024"), 1, "?WRD" ) +d_SetWordEquate(hex("0027"), 1, "?RDI" ) +d_SetWordEquate(hex("002A"), 1, "?RDD" ) +d_SetWordEquate(hex("002D"), 1, "?VRFY" ) +d_SetWordEquate(hex("0030"), 1, "MELDY" ) +d_SetWordEquate(hex("0033"), 1, "?TMST" ) +d_SetWordEquate(hex("003B"), 1, "TIMRD" ) +d_SetWordEquate(hex("003E"), 1, "BELL" ) +d_SetWordEquate(hex("0041"), 1, "XTEMP" ) +d_SetWordEquate(hex("0044"), 1, "MSTA" ) +d_SetWordEquate(hex("0047"), 1, "MSTP" ) +d_SetWordEquate(hex("0000"), 1, "MONIT" ) +d_SetWordEquate(hex("0089"), 1, "SS" ) +d_SetWordEquate(hex("0095"), 1, "ST1" ) +d_SetWordEquate(hex("0410"), 1, "HLHEX" ) +d_SetWordEquate(hex("041F"), 1, "_2HEX" ) +d_SetWordEquate(hex("074D"), 1, "?MODE" ) +d_SetWordEquate(hex("08CA"), 1, "?KEY" ) +d_SetWordEquate(hex("096C"), 1, "PRNT3" ) +d_SetWordEquate(hex("0BB9"), 1, "?ADCN" ) +d_SetWordEquate(hex("0BCE"), 1, "?DACN" ) +d_SetWordEquate(hex("0DB5"), 1, "?DSP" ) +d_SetWordEquate(hex("0DA6"), 1, "?BLNK" ) +d_SetWordEquate(hex("0DDC"), 1, "?DPCT" ) +d_SetWordEquate(hex("03BA"), 1, "PRTHL" ) +d_SetWordEquate(hex("03C3"), 1, "PRTHX" ) +d_SetWordEquate(hex("03DA"), 1, "ASC" ) +d_SetWordEquate(hex("03F9"), 1, "HEX" ) +d_SetWordEquate(hex("0DDC"), 1, "DPCT" ) +d_SetWordEquate(hex("0DA7"), 1, "DLY12" ) +d_SetWordEquate(hex("0DAA"), 1, "DLY12A" ) +d_SetWordEquate(hex("0EE6"), 1, "?RSTR1" ) +d_SetWordEquate(hex("06A3"), 1, "MOTOR" ) +d_SetWordEquate(hex("071A"), 1, "CKSUM" ) +d_SetWordEquate(hex("077A"), 1, "GAP" ) +d_SetWordEquate(hex("0485"), 1, "WTAPE" ) +d_SetWordEquate(hex("0700"), 1, "MSTOP" ) +d_SetWordEquate(hex("11FD"), 1, "TAPECOPY" ) +d_SetWordEquate(hex("1200"), 1, "COLDSTRT" ) +d_SetWordEquate(hex("1250"), 1, "WARMSTRTMON") +d_SetWordEquate(hex("15A8"), 1, "CMDWORDTBL" ) +d_SetWordEquate(hex("1BB2"), 1, "CMDJMPTBL" ) +d_SetWordEquate(hex("2E33"), 1, "CMTBUF" ) +d_SetWordEquate(hex("2E34"), 1, "CMTFNAME" ) + +-- Known BASIC SA-5510 labels/addresses. +d_SetWordEquate(hex("1C3C"), 1, "CMDREMDATA" ) +d_SetWordEquate(hex("13AB"), 1, "SYNTAXERR" ) +d_SetWordEquate(hex("2D12"), 1, "CMDREAD" ) +d_SetWordEquate(hex("1C4D"), 1, "CMDLIST" ) +d_SetWordEquate(hex("1E91"), 1, "CMDRUN" ) +d_SetWordEquate(hex("1C42"), 1, "CMDNEW" ) +d_SetWordEquate(hex("2B0D"), 1, "CMDPRINT" ) +d_SetWordEquate(hex("1D6A"), 1, "CMDLET" ) +d_SetWordEquate(hex("1F2B"), 1, "CMDFOR" ) +d_SetWordEquate(hex("21AD"), 1, "CMDIF" ) +d_SetWordEquate(hex("13AB"), 1, "CMDTHEN" ) +d_SetWordEquate(hex("1EA6"), 1, "CMDGOTO" ) +d_SetWordEquate(hex("1EC7"), 1, "CMDGOSUB" ) +d_SetWordEquate(hex("1EF8"), 1, "CMDRETURN" ) +d_SetWordEquate(hex("1FC0"), 1, "CMDNEXT" ) +d_SetWordEquate(hex("1D2C"), 1, "CMDSTOP" ) +d_SetWordEquate(hex("1D15"), 1, "CMDEND" ) +d_SetWordEquate(hex("203E"), 1, "CMDON" ) +d_SetWordEquate(hex("2D75"), 1, "CMDLOAD" ) +d_SetWordEquate(hex("2D82"), 1, "CMDSAVE" ) +d_SetWordEquate(hex("2EB3"), 1, "CMDVERIFY" ) +d_SetWordEquate(hex("2191"), 1, "CMDPOKE" ) +d_SetWordEquate(hex("2080"), 1, "CMDDIM" ) +d_SetWordEquate(hex("2201"), 1, "CMDDEFFN" ) +d_SetWordEquate(hex("2BFF"), 1, "CMDINPUT" ) +d_SetWordEquate(hex("1D4D"), 1, "CMDRESTORE" ) +d_SetWordEquate(hex("21A6"), 1, "CMDCLS" ) +d_SetWordEquate(hex("2269"), 1, "CMDMUSIC" ) +d_SetWordEquate(hex("2282"), 1, "CMDTEMPO" ) +d_SetWordEquate(hex("2942"), 1, "CMDUSRN" ) +d_SetWordEquate(hex("2D9F"), 1, "CMDWOPEN" ) +d_SetWordEquate(hex("2D92"), 1, "CMDROPEN" ) +d_SetWordEquate(hex("2DAD"), 1, "CMDCLOSE" ) +d_SetWordEquate(hex("28B6"), 1, "CMDMON" ) +d_SetWordEquate(hex("2967"), 1, "CMDLIMIT" ) +d_SetWordEquate(hex("29CE"), 1, "CMDCONT" ) +d_SetWordEquate(hex("2902"), 1, "CMDGET" ) +d_SetWordEquate(hex("29FE"), 1, "CMDINP" ) +d_SetWordEquate(hex("2A1C"), 1, "CMDOUT" ) +d_SetWordEquate(hex("28B9"), 1, "CMDCURSOR" ) +d_SetWordEquate(hex("2AA6"), 1, "CMDSET" ) +d_SetWordEquate(hex("2AAA"), 1, "CMDRESET" ) +d_SetWordEquate(hex("2A2F"), 1, "CMDAUTO" ) +d_SetWordEquate(hex("33AB"), 1, "CMDCOPY" ) +d_SetWordEquate(hex("32D4"), 1, "CMDPAGE" ) + +d_SetWordEquate(hex("13AE"), 1, "OVFLERR" ) +d_SetWordEquate(hex("13B1"), 1, "ILDATERR" ) +d_SetWordEquate(hex("13B4"), 1, "DATMISERR" ) +d_SetWordEquate(hex("13B7"), 1, "STRLENERR" ) +d_SetWordEquate(hex("13BA"), 1, "MEMERR" ) +d_SetWordEquate(hex("13C0"), 1, "LINELENERR" ) +d_SetWordEquate(hex("13C3"), 1, "GOSUBERR" ) +d_SetWordEquate(hex("13C6"), 1, "FORNEXTERR" ) +d_SetWordEquate(hex("13C9"), 1, "FUNCERR" ) +d_SetWordEquate(hex("13CC"), 1, "NEXTFORERR" ) +d_SetWordEquate(hex("13CF"), 1, "RETGOSBERR" ) +d_SetWordEquate(hex("13D2"), 1, "UNDEFFNERR" ) +d_SetWordEquate(hex("13D5"), 1, "LINEERR" ) +d_SetWordEquate(hex("13D8"), 1, "CONTERR" ) +d_SetWordEquate(hex("13DB"), 1, "BADWRERR" ) +d_SetWordEquate(hex("13DE"), 1, "CMDSTMTERR" ) +d_SetWordEquate(hex("13E1"), 1, "READDATAERR") +d_SetWordEquate(hex("13E4"), 1, "OPENERR" ) +d_SetWordEquate(hex("13E7"), 1, "UNKNWNERR" ) +d_SetWordEquate(hex("13EA"), 1, "OUTFILEERR" ) +d_SetWordEquate(hex("13ED"), 1, "PRTNRDYERR" ) +d_SetWordEquate(hex("13F0"), 1, "PRTHWERR" ) +d_SetWordEquate(hex("13F3"), 1, "PRTPAPERERR") +d_SetWordEquate(hex("13F6"), 1, "CHKSUMERR" ) + +d_SetWordEquate(hex("1347"), 1, "TITLEMSG" ) +d_SetWordEquate(hex("1364"), 1, "COPYRMSG" ) +d_SetWordEquate(hex("1384"), 1, "READYMSG" ) +d_SetWordEquate(hex("138A"), 1, "ERRORMSG" ) +d_SetWordEquate(hex("1391"), 1, "INMSG" ) +d_SetWordEquate(hex("1395"), 1, "BREAKMSG" ) +d_SetWordEquate(hex("139C"), 1, "BYTESMSG" ) +d_SetWordEquate(hex("13A3"), 1, "ERRCODE" ) + +d_SetWordEquate(hex("1332"), 1, "MSGNL" ) +d_SetWordEquate(hex("167B"), 1, "UNUSEDTBL1" ) +d_SetWordEquate(hex("167D"), 1, "UNUSEDTBL2" ) +d_SetWordEquate(hex("124E"), 1, "WARMSTRT" ) +d_SetWordEquate(hex("167F"), 1, "OPERATORTBL") +d_SetWordEquate(hex("17FC"), 1, "STRTONUM" ) +d_SetWordEquate(hex("1E88"), 1, "GETNUM" ) +d_SetWordEquate(hex("173F"), 1, "SKIPSPACE" ) +d_SetWordEquate(hex("173E"), 1, "INCSKIPSPCE") +d_SetWordEquate(hex("177B"), 1, "EXECHL" ) +d_SetWordEquate(hex("1795"), 1, "EXECNOTCHR" ) +d_SetWordEquate(hex("17A3"), 1, "MATCHCHR" ) +d_SetWordEquate(hex("490D"), 0, "LINEBUFR" ) + +-- XPATCH labels/addresses. +d_SetWordEquate(hex("5A63"), 1, "XPINIT" ) +d_SetWordEquate(hex("5B55"), 1, "RELOC3302" ) +d_SetWordEquate(hex("5BB0"), 1, "RELOC4806" ) + +-- Comments to be added at fixed addresses. +d_SetComment( hex("1250"), "Sharp defined BASIC restart location from Monitor." ) +d_SetComment( hex("5B55"), "Relocated to 0x3302 for 0x5B bytes." ) +d_SetComment( hex("5BB0"), "Relocated to 0x4806 for 0xF8 bytes." ) +d_SetComment( hex("5CA8"), "End of Relocated code." ) + +-- Known Sharp Constants. +d_SetWordEquate(hex("10F0"), 0, "ATRB" ) -- ATTRIBUTE +d_SetWordEquate(hex("10F1"), 0, "NAME" ) -- FILE NAME +d_SetWordEquate(hex("1102"), 0, "SIZE" ) -- BYTESIZE +d_SetWordEquate(hex("1104"), 0, "DTADR" ) -- DATA ADDRESS +d_SetWordEquate(hex("1106"), 0, "EXADR" ) -- EXECUTION ADDRESS +d_SetWordEquate(hex("1108"), 0, "COMNT" ) -- COMMENT +d_SetWordEquate(hex("1164"), 0, "SWPW" ) -- SWEEP WORK +d_SetWordEquate(hex("116E"), 0, "KDATW" ) -- KEY WORK +d_SetWordEquate(hex("1170"), 0, "KANAF" ) -- KANA FLAG (01=GRAPHIC MODE) +d_SetWordEquate(hex("1171"), 0, "DSPXY" ) -- DISPLAY COORDINATES +d_SetWordEquate(hex("1173"), 0, "MANG" ) -- COLUMN MANAGEMENT +d_SetWordEquate(hex("1179"), 0, "MANGE" ) -- COLUMN MANAGEMENT END +d_SetWordEquate(hex("117A"), 0, "PBIAS" ) -- PAGE BIAS +d_SetWordEquate(hex("117B"), 0, "ROLTOP" ) -- ROLL TOP BIAS +d_SetWordEquate(hex("117C"), 0, "MGPNT" ) -- COLUMN MANAG. POINTER +d_SetWordEquate(hex("117D"), 0, "PAGETP" ) -- PAGE TOP +d_SetWordEquate(hex("117F"), 0, "ROLEND" ) -- ROLL END +d_SetWordEquate(hex("118E"), 0, "FLASH" ) -- FLASHING DATA +d_SetWordEquate(hex("118F"), 0, "SFTLK" ) -- SHIFT LOCK +d_SetWordEquate(hex("1190"), 0, "REVFLG" ) -- REVERSE FLAG +d_SetWordEquate(hex("1191"), 0, "SPAGE" ) -- PAGE CHANGE +d_SetWordEquate(hex("1192"), 0, "FLSDT" ) -- CURSOR DATA +d_SetWordEquate(hex("1193"), 0, "STRGF" ) -- STRING FLAG +d_SetWordEquate(hex("1194"), 0, "DPRNT" ) -- TAB COUNTER +d_SetWordEquate(hex("1195"), 0, "TMCNT" ) -- TAPE MARK COUNTER +d_SetWordEquate(hex("1197"), 0, "SUMDT" ) -- CHECK SUM DATA +d_SetWordEquate(hex("1199"), 0, "CSMDT" ) -- FOR COMPARE SUM DATA +d_SetWordEquate(hex("119B"), 0, "AMPM" ) -- AMPM DATA +d_SetWordEquate(hex("119C"), 0, "TIMFG" ) -- TIME FLAG +d_SetWordEquate(hex("119D"), 0, "SWRK" ) -- KEY SOUND FLAG +d_SetWordEquate(hex("119E"), 0, "TEMPW" ) -- TEMPO WORK +d_SetWordEquate(hex("119F"), 0, "ONTYO" ) -- ONTYO WORK +d_SetWordEquate(hex("11A0"), 0, "OCTV" ) -- OCTAVE WORK +d_SetWordEquate(hex("11A1"), 0, "RATIO" ) -- ONPU RATIO +d_SetWordEquate(hex("11A3"), 0, "BUFER" ) -- GET LINE BUFFER + + +---------------------------------------- +-- End of configuration file +---------------------------------------- diff --git a/dis/XPATCH/XPATCH_5510_V2.2.MZF b/dis/XPATCH/XPATCH_5510_V2.2.MZF new file mode 100644 index 0000000000000000000000000000000000000000..14c0ce305d04356b557d51c825742c3556f3207a GIT binary patch literal 3280 zcmc&$eQX=$89zIT6E|_%vz_|#A@tr|fveNjj-${c>n`NOiIcSU)jlUq0&J*iLk6sT zNK3j>tJO9%5UbQuzO*rQLX1h(a7v*DI
  • ZJhE#UFOn7E8_4D%8naNQJ_QQy64<5 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 ArvLx| literal 0 HcmV?d00001 diff --git a/hdr/CPM_RFS_1.hdr b/hdr/CPM_RFS_1.hdr new file mode 100644 index 0000000000000000000000000000000000000000..d1f595167eea689c878e71c331268cbc304819f3 GIT binary patch literal 128 hcmZQ{4)8TH(sc<6GvI{)1~32$E4X+Ddqa4%BLO?=1r-1Q literal 0 HcmV?d00001 diff --git a/hdr/CPM_RFS_2.hdr b/hdr/CPM_RFS_2.hdr new file mode 100644 index 0000000000000000000000000000000000000000..f2f207749dde9f947e0fd898455bc0cb10691713 GIT binary patch literal 128 hcmZQ{4)8TH(sc<6GvtK;1~32$E4X+Ddqa4%BLO^M1r`7R literal 0 HcmV?d00001 diff --git a/hdr/cpm22.hdr b/hdr/cpm22.hdr new file mode 100644 index 0000000000000000000000000000000000000000..79aac98bc926763e4734c0ea12e13d34d11895f3 GIT binary patch literal 128 zcmZQ{4)8THG7fSJ=7juGe!Lg>ZO3l(|GgE@13M<8zwZw-9AKa}0070V B4(tE` literal 0 HcmV?d00001 diff --git a/hdr/sdtest.hdr b/hdr/sdtest.hdr new file mode 100644 index 0000000000000000000000000000000000000000..2214679a53fc44cfa2b2e899e91466c60857be54 GIT binary patch literal 128 lcmZP!b_sC}4&g-r1_K5m1|ch+2X;(Gf8HNvIKV(l001{G2f_dV literal 0 HcmV?d00001 diff --git a/proc_mzf.sh b/proc_mzf.sh new file mode 100755 index 0000000..b88609e --- /dev/null +++ b/proc_mzf.sh @@ -0,0 +1,30 @@ +#!/bin/bash + +ROOTDIR=/dvlp/Projects/dev/github +MZFDIR=${ROOTDIR}/MZF +MZBDIR=${ROOTDIR}/MZB + +ls -l *.MZF *.mzf | sed 's/ / /g' | sed 's/ / /g' | cut -d' ' -f5,9- > /tmp/filelist + +IFS=' '; while read -r FSIZE FNAME; +do + TNAME=`echo $FNAME | sed 's/mzf/MZF/g'` + if [ "$FNAME" != "$TNAME" ]; then + mv "$FNAME" "$TNAME" + fi + for BLOCKSIZE in 256 512 1024 2048 4096 + do + for SECTORSIZE in `seq -s ' ' ${BLOCKSIZE} ${BLOCKSIZE} 65536` + do + BASE=`basename "$TNAME" .MZF` + if [ `echo ${FSIZE} - ${SECTORSIZE} | bc` -le 0 ]; + then + echo $BASE $TNAME $SECTORSIZE + dd if=/dev/zero ibs=1 count=$SECTORSIZE 2>/dev/null | tr "\000" "\377" > "${MZBDIR}/$BASE.${BLOCKSIZE}.bin" + dd if="${MZFDIR}/$TNAME" of="${MZBDIR}/$BASE.${BLOCKSIZE}.bin" conv=notrunc 2>/dev/null + break; + fi + done + done +done !`-32jm_;D22kRhDU)m^QmPV@T+Ra#_p2i0aN>!3AZxmXCR- z4DXmhcAJ+=BP_K`|x&~Fu)>dJ?FC8?8MIkc&j)%s9;-9XvguvR5)$eahld7p>sfM|@%iLJtAxi+Ti;z*e)4NPTc0uLc10T<9Y13J%n!1)M&{lUevlV;Dt((GGM za}p|}QEOyt4)Ap}?ACbAIy^xn=3Ex+)z$GsnAxy))TkddsOyA0zYfpSRR&Krz)E7o zTQDTa1~#1?dr5^0=fyY@-+MXVMdHv(HWqc$U&u$C4C7b5bgyT(w#TxDp$b zGVKm56pMC8l|rnGw><}NmCRDM6{nUFt(4RI3=}Ryi>lIr+RB%JRsbqh;v_M%;?P`d z2i7S!j~@1^gUmP*rw19kNxZ9U-qF92RiyyyLN=RNseGd4#TC*8n(yK!1u}UekyNb3 zd1Lw_Rf_uZ{@u7Ef{%s*?H$JtKi!2oVTa!ig>e9Pg+qtKfn$3Dok1K92HH>I<~^;u zmjE~z4u`_enEX5Uhl7y__G7>{`y2g7LtR~`aC=9jGZ>8qn;V-0kqBMkXrL>&Gu-iR z5bq5&VR>`ImJO{(AeDbzXYYrpS*MW|a|HBa?! zrh2!6-T~QLU!8dBPG&f&_AeI6gz62vAvBH|_TPWy8mEl;547PJ`BMN1Z#;WNPNkC| zi#agtlkOTOWQqH)5epyxNmY8aVUtx_xqaigZ}8))d4+*Dsw%78T9QaSL;&R21(l2l zF>Tm;*YM^I@3`Tepif!NDdqq1`|uv0{bk^wFqDJm>oPw%+yWu&zPap8bv2#>s|h)( zP`xV=n?B&ZL0xjGLb#dc>yZU)1G^Y_FNOP@pk(Sz7qef4mm2(KwcPfoL`zY)vh{o z2|vE6g6>A71wpJ$7mBF=H8dg#Cb2SI=&l3F%xepv!n4}KIj!L2Yp^~tj!IvNff55H U21*Q+7$`ANVxYvp|BHct0JS`sr~m)} literal 0 HcmV?d00001 diff --git a/roms/SA-5510_RFS.MZF b/roms/SA-5510_RFS.MZF new file mode 100644 index 0000000000000000000000000000000000000000..2e1da8c862bee09337090b501055fda9871c2343 GIT binary patch literal 12469 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 literal 0 HcmV?d00001 diff --git a/roms/SHARP_MZ80A_RFS_IMAGE_0.img b/roms/SHARP_MZ80A_RFS_IMAGE_0.img new file mode 100644 index 0000000000000000000000000000000000000000..a428e2affa57a58e1e103905a81f38288290ed8f GIT binary patch literal 16785408 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%0As{?J;}y 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

    MC3-g#R zkkxBm;U<^=P|f8zKCY2g^ilq&7f%82Pq#vqN*eR7@j^u_o0dM{uYxNlUC6e zUwu)-MpQkj5z*s|cx+La=5rq7G6DOyw*-@-Hvc0VebhKvfQwq~7R5CGhL_U(FW|A( z;@O<$ziCUF|2{l!JZH8N^Yjq&nXPGlu`bP@hR1=&ygkjo4xL?iyS5YatPrygmGpGr zDc+Ih|2>|)cs|4v`7$xj4l#e_PV)-~Rmmi=??cQ*A!ce!csb2K4$mw+OY!^`&ni3* zGRX@=%uk_m4;~MmlX%YJ8NO2=0e;`js57@j1;sppzF(Vf`dmh)uVo z>8_>)o5<#w*Llq&zwYt=uvL0O2$a7@AxGVWA$6|IWP|Li88 zJ`dvTpm5&;-`lQy0`C(Rb6CqKT8r+6PHys1{Be^j?u||%8PKQc+f9<6&?JuUdMFel zqUpkaP%8wgK-2-&=31YGgu(6cVMkk4uX;I$OKTOj6V>el{xBzG-Q_V3WXpj_2Rf34 zsQrY5j%HyWR{`(sJrFMS$MPb6EThQf|Du-UQwYQl*}}NZ`Vvt{_$8rg>|}~Tjuu6I zs(&zYtC%XS{zESW=gAk7`6nqFAVSa=pSYMX9CG;(~Ot`)5~8Hg-?{z%9Z;X)So3Xul&lK><6H`Yo<;;5rR zhKI4J)}x}T1t8X`=>yLuY}V{cK%w?!Z7C)1INR-3CSYCGv+ z3e$tu=W18em8{{4Py=Ex?KLfB!wUY#_TClLmOos1T4et%gjla?-fOq_(Nx>8Y$Ema$Xh(#A*wB14`bLa#gJt0ICiQ8F>4(*UU-(u z_8~hEA_g&&Wd}l|6uzqF9dv|KaBf3H?VS(0(s5HQtFE%Sk8dJqM;J6C*MNimD|hJn z7w@1*Dvi^4{;ApT>Fxb{^ggjenitYY3M>xOhP+(*mA+}q?*usLdbhoij7jT9j zP?YAK(o79Pnofl+jJto|AGNROD;u(`x~wxhrKw@`wPEx$orb(HP00al?gO_^vNP6M z>y!yQX*H0tz}>8r()DW6C~V$YVfA5>rP^>krQ9&C@CyJ3tB1b|?E!=qQ%JsQTKJ{F z0k1}0c)LftAkeNI$P4$0HrqY@BcZp}r98B=&(s^kU2*@$BjJrcWz9}nsIci-y+2~; zC%!qHp}+XI!yCQFc9Iu3!y+ym6TIOUs+)h5jx%bWICmFwIus52oDZL)ou`6C5*Rv4 z+d3lHm6P!gp+mv$U1@%L4ros!-pBBq#PiWEI3wwEwj7`CLViM997Kywe4-Oy=tLJ0 zh&A4cyOfc;)fCeRl{MwpP$H))Kk$`bRvr?5to$RI@{B{PlXmcWA`uP1qnaKYmJ6iT$+E)?lk|icsAgv+fA5NkxTUM+AUdi;xJoE z)V!<1nYdfui56E=+iuONlGD>RX!xauo|oX9O}Az+-D|^d&6d2%0w?Y#XYOSbE}Hxe zj7oO-PpGYkXtV44XZn|oQt17DJ?o8YsaXv^WK`Ze>s7tz_DC~3sGymhb|;X|jznAN zwv3%2!|r1*+s%LARUfWMje`Z)PN4ibPa@dpkc%+5=2ab$Hf?a_G17^wO&foBzwyzn z|Hwbn$3L~64IbA!I1L+B9}=P8xTtdV63hRv#!{H)+!F3&*bRs}57jSVdhBv!D+a^_ z2CylHHL>*!O~!w+UW(K2m_s=J!nNJt22F8qY=h!yknRkrCym!=7UgyG!Y$HFy$@Yc zgyu~LX{>VJJHkF!cB}M`-iO&>VRwX5Wq3f4aPbY7sofChL&LJ&x&(GR()XHC&-q}h z`f2*7F5d3jb6Ji)huJo+q z{wL5iuBKN>EajTI`$JL70)8gftm{>#&lQi-gFpZ)@JT()5sssaZsT&zhvJ&>U00gl zxIfK*)xN&ZXw;?bC+53C%oZ?B!IOz64^Ii6oALZBp5MBNd6mWt@4OC`ZahIeX)f~4 z$(jn%1dUMMa7p(wPmT2Gm`nOzuLnIKtlkwy_sLs-6K3RncN;t5L(ETZM@pfUCtN>c zLSa`dee$9{7W&I#QbQKz{cImix!+-+?{^WYxg&g1oxZRVOZ&t9Utd+i4qBIqVHK@7 zMD)5F%JRKWxG3x)Z=71A()8Oe$?Ka#0@3ij)F+3OX6fsjt*>MAPJ(!jUVLaLGVbsi zO=ImN-u(T_GyCbfc0c<9Bp>%!>pimKp{n;hRt4K&k4L@zHXcySZtF>0;rOubj2UsH5^!9#oqyOCa zl%?TQzuj7_|eGmr)I%ni;hh)Z6&xyuyg7 zrv5+dyL)^T)!q0%v-ey!*-I{y3t?u5B*QLAmH^4JBunlgLb4$V7omb!fqEmz#c&Cc z+A6&~ZK=1%w$?|jwU(+uMHkUhl3{r=Sq9nQB8jGT#iiQqB8h}cbcf&P%qBo>`@DXy z@9X>g^*xcDIdkTm&-tA9`JB(Wjk}6B8JQGfSMmKu_`YBoas9A+_d!NSSY9x}A+BgL z323uo@&OXkPI?-FhLBWKEQbO{{e$R5LF|Ps_BntMJJ^S_qJjeXbA?5g+rP(lB4_}vF*9&+7XbaiD@b?u@>wKa6xf`-ZO zLn_-E+)af9a)Y2i>#a>~mCIu#6cPf8TGCWgTURKTMK`%8BAaTLx6#WQ+7`H%w9$3$ z7KRXbjfwcb_=hI0p&ohm80r!DfgUmIU3n-)k(N-8Jl0Mo_V029CjFab;e z6Tk#80ZafBzyvS>OaK$W1TXOaK$W1TXOaK$W1TXOaK$W1TXOaK$W1TXOaK$W z1TXOaK$W1TX zOaK$W1TXOaK$W1TXOaK$W1TXOaK$W1TXOaK$W1TXOaK$W1TXLUeiPxEb{2X`RwZ$B4~xCf`!exya&14iXsO zL@8%pFre^IzNjReL-~@Pi%41ALT3N8RXf?YxWc9EFas~6QxDVe>@eE}2^7=?xY3I6 z=jf3hXQ}s*2tJoeHhvGusgbIbJy(su~E{e9A0ExVi6;ms zL29D4-Nnl}NGH|ODi=wOO4V>Ds6?rmKKG$?PESAMBE^~_mmV(E2jYu%%Tms=kh3&! z-Nj3|Vh0CRE3V_pi`%#;0Iqxu*}3~+T`Fi0x;)8QaeThEz?L(GU_ zxQjSUp9Dw%<;x(d+>skOtO_HP!MvAeQ5k`Dr1f+@k7)2{86(xT^KeAF`%qStE7ANN-iW|7d%G3GQ_w%7`HAoEQ0S(k9)=WiAUcFq%N8Tye46qV@S15?FAQ->`ToTY@*5X`63hOHHx zY8AVb-SI|$WBRZSwRN(1ZR%l`yV!*)HBNmr%rXwH>)?QK%C^%ar*M%S;m>6Tz4|H4 zf`VuXG~`w?x3aF2m7iWZ! zJdU0_%!;dN$P$jS;$w598FaoJgWgW3v&5(8fJQ0seo3^1gfvk$$bUB_2t@|@xG4-j zgL+G}rGf}KLvP#^s0nBSuaXKNpUI^vQk{(ze`&6&7>faGRuTZNHSWYAmkRHgs7#48@3j6OdZ!HX$GcDnQe7( z!&`~rEhMNpyj3y0MF|Z*yj3;4MQyEufM$4$)(V-n>V~((8RLoJjA7_EfF;^NMA?u_ zBUaNrl7>#R*_PT?1<)l7<`(Akep?rH4l(eGDmHinfdFkh30Vf~;>Fcz2sE_N(qi;# zx=aN0H$rm~NdIVwvO8L$ibPA)D~uYjrfA3*hi*`zXizgQrl*TV>6-qDJ1-`r%VqRe zWKXs!ZQLf#OBYb|3|buvADX)B0H@yu<;UVDYyj#8b-u}V1@Ki4)L3F1Ema@`h*<(D zTLN5PvDh8oGz9*|Sx|+4V+c2C=b_c)Z8In(xqgOM^fSSsxGB-C(dZTlawB`cZdv?C zvxtB7cayA}OdKrndd>++G5epe?uEb>cq;C?-aG%Xd&I2ydQLe|LT*M@JXxS@kMIJb z!0pR)fQ?iSz2bDGU2#l%EWRG~v>DuNa36Mn_s!StZF}JFHQAWtJ_!vrVdd1T(T!kY zRQQJA3c0&ow;q=`VK`7v4on6KD5B$;;|1bS#;}e0LbA}g%#i#9UQQ34Sh8?&a$&<^qt}7449n5je%0$j#ucO4Iub zvm{IZ-!p+@DscQpN&JjV@!%|3A$k$2UnRFls^V5k3%JeFa&Dcpl-npZ^d7OJat}@I z9JYDD$L?Z2E1=Zpk^%o@;Ux;FfHJy86|3V$7XhlDA!6zx8<_M)B2wpf$*r)5pH`QIQJv^mnfsJ}83T5Cq; zjn=yEEs&*>Q@|jgYeP?$DMhoPM;)4KX+i^UGq>wNe>5Atna;s@)QjGBdf*00b``rh z^fva4l0ZCokY*UIo47pU?leN|vl&T)rG@K`v7LS{`k*mf|wJaDjt>|h0J2?y@^z*O1A!)QUL+TgFw)?^F8 zEAa6_`g2}A<)8FY%X&e9Hd(h4jm;KW=;V-Qk(DLfCfjCL9Mq>vitEjtB99ufz;F{= zXG23rkp2{<58uyj44{faTuV)3us`BjTEo{&1NT;kbsF0^P%B&SBE!T0Yui=NFM9$(9?kyxJ~6sqYAp`@Vc*tH;kiE?wjuy%I_!U0K@B| z!yCSya2O?uILL4L$M@|G(`Y6x00bkGXXP*0bn zLrn_9?imyzs-dtk(CQM zF>9)vDQXe&j0aGx6#_&vve?OYXyVVQja%|4rE%?b88G2@wsGLF;>uv+?$Yx$Ma~sm zy)4ae)uo4tdN;gqF5${xme0JJry-C)dTv`Q(d`De3#n zXsvL`r7FIaV+{G?hqhgp>=4C#rbOX$$?{WpdfRQ&r)Pwnx5DD#R*nt|ViqCY+5enL zqL053XI%rEpPuuL*eoqS{b0ug{Gw}#m6=~MaA z?O(aQE|k!PiU+0P+C!a%mVu=PEJ2WCv7eEgC(k9vl!3)S28>jHWqf%W6^yusujCM< z17CHf14c2!mlF?=Y;4#TbAU8=S&#)e)KcXcY2|#u_~|srnQ5-iH1F@zr~nEVcbGNP z35JWM0<1sA&D38q&GH2Q18X5y4{MRWgC|kfmvr_o;i|DmY&Pn1@lAO$ZR0dj0jKB| zz{~>BQ?5^0Y_uNy<(p{Io)KlKb5a3~9H<-tBQFUyF88ArxgSu+q9xb--GX?q2vyw* zQj7kTR4WY>AQ97N1Hm_sf-v9}(T8F$FWV@2F*c2>lvwV5iR=F{16t-uHd+OAK9%f_ z*^+bMR}4675W|4p*JtS60?4>VGubmx0o13l0mz|}>K(C;Rf?8~G1QJ;sos8gn4J!P zlM|kY+o?|`1|ROd_B;a0dm1E8%&q8mhgqnlJbQHH!yLmwevT%OFtS*nynpgFFth3w zTngyVrGkgPJtXGMjxC8eRS764)rn=w@YflL|bDF*aeo?xWzP zDE7^Y4Z!f;FTV%R)-BwSPd_Wmo)9Q6sZhhrpnq_4nY|w~kOBq}xky-iDaq?@4YZl` zXRy$l&_xvI&%W-;{PGlDE;vaku4m75vEYBgLXsLD>=#35z{>(}3?p9Hs3jm2Mgu~m z6{2C(D^bJZJ+g8(XM-`t7T^hc>ue6jJuvDHTb5xw2;}0x)$7L4@OhK4JMPKK%9@li z(t)-BA}eR0k*QnYi4quy*zNmiMXBIY8GU)WOb@3&OeeEuT{%5^`(51vS_@x>3k!?j zf$eB4dz*vQAowZZ;|MPrPt6!Oq0Zh@@~h8TLng!WjD*~DoC zV>LklV!-PkG*#VNt1mTIyBnJu7U|vQ+U2#?`gcr=8d}@*FPU1FH0f7Ot7@%WTB~2l z)z&n$=?P+PR!u`=ZBuK5yGj2ys-?EFMn5fcSxZA(t^R?ODtKO~e=McBa!G5gUZAQg z7cJ5!r!Hx2(f=Z?-reTbzn0cer(cj-D^i>npOW-A!!`O-pL^y(z7=ZT0&2 z)Rx-Tdi_{>gS(p3&!ie_8##R`M7AwyY0`f=rM9U?zmb~OxCpd)pKWy4=>J$!S=Bmm zWv4Z?Hq`5X&O$c5eHzHnA7mG~m+39p^|h!1R=T#O#oa=;x!Woi(RwQl3EeHX(ya|E zYH594!=l=W1eI0pmNuHvyQ^-gt!|^6Tio?6m5p?hyKO;3Q$4((<-eFTyAKVDJIQorCZ&tD;#!ue4MVM-8AR`ze>6ZMQ}?CXHK_T^)YcZZhDd1-3;?9s*73;G!c`q?*t}&tA!eU8VD zid9lqVed8!slef|mR>8`$vtX?bp_-JTYIgc9_vwSWPcd4+cG;?G}F04y>Zh{a)$A@ zMsQGQVw406yB~4pOsSdsvv|R3IcBvUvxY(9&eyrL*Z>d;OqAsh_Fc)M&fWBUrBBQu z`a+NemQbG+z?}sNL6;M1+J$~-1i3_ssPYnhBvYbkrJ1@CE9ieN#qzGz_>wVGavnjG z#Y{8WkiBX-g47dD=xY4EQCtb-7T<5=@8Le{KH6<0iGM3Ii~cMqSPoiaRk9pH(8AV( zK&>UzqqH8f+R&3Naxe_bE>WYA5_dM9d1Hu7X!C z(>|VLlboYTw&|gs>C@v*+hNKbXQs~e2v9r>M-#0DLlKNyAc-^(B`P)?*$*Sr8Q7N( z1v@>QHaEl&B&9VHMCY4*0W@yGSfw`3wg+J?kWZW;CN}-QWPS@aujlk|5|D{z(Vsv= zTtd73k8{`02SDm11X+dup%g3O(4catzXbUYIKI0G#>JXOmjS9a-DmU}>|{ncJtl-F z;(UzH5V<=s(qdO+=*#H~;oI*L!ky=KkBJ#G!XslZ$3n2O8S#9b4Kean@OAce7Ome^ z)XqZUedvWiG)BIYM+kw)N}VCHdY>;D{kJT#`VT&>PrG7Sq*Z4?BIVzQwy<9ab;FTD zX^@{id*>hRMf|Xx_^zE)xp%y4w|F)2jVsdN$O%+tKw+2!We6hL;1t)-kmq;e@dD$I z3dCoN_$37z(pP3z_-J3bT?JQK{CGx}biuB0UD)3tXe9ZiL4IlQ8E(9MwnGTz5%Mw( z=H7lNFT+TjgmOUib|hNva_}U+5hwY$1%h!}K_C=as4zrUsti`b5E`*+3__$DB3e}j zi^eb(v=9b4|K^+XQ+nvcN08Y2P&5kcmIEL+qrbaIN}@0FUR!Lgf#wjjUY>8zdYCt~ zRl=A(UtihMQhDpdIL_#I6>l;MyP#tVW4pi$j7Vf(C*0AhVhpquPb9RX=<>eU!+P{i zUIy373r53LA=o7moCe}yp~rsi4Y)f!E_!sl0L(QUX*q^g;u^KlkRK9P6n4Hzr>MiQ zaS!2L63MB;LF%vI3%2hquXoXEPB&gu2BbaeHAJF>>0zI)geLQ`z<3;zxSwCW&&+Eb*$+ zaegdToY63m?_4tEJ0s^naVrWbpQNy>ieD`f#+ijlyW zix9htMowLG?LH;JFw#}jeM<5R%aRBep+m=%hx&AorW}SYdVHju4(sX9x{=HP8evc? znyE3rAfLS+FW})I^csz(;j8}D@^=-diLH}ihJFn#twmTHpaY&cu?c#BQ~C}IK1m>m z2DDukffW&d$wFknADlMv{aKLl%i@WQS0UqUIU}TpS{bdSFpds~f{AFau#meVZnitV zB;fqj1QChidb{JY9DwM{k^NaNy@{fvi5&osPzpN@4vplr!&=BAz#gQPXpFNEjUjQ? zJa}TXrT)nN$U>sgs%VT{ z9xCJq5C+_oW3VK$!}=G(8hx}xI};Xa(F_5!hEgd2tB7t@M7Jm*86;6dat$QcLKxDO z#LWZ?i)M7Ac?feqETNlV3KWh*43h~MPG-#$#1k`_=jRHMmFL||QYj#a9E`M{cMCC1 zn1o5?j0vUI^KKR;*lz;@XfFjyA%6&p&O{5pC_5Qd4N=Aa7!`%6x&IgyOBFjZL#m$# z)#t+M6b@m31dShsIB6dk(o7KhPbi>nlPHo@pekrrm)Wrm&Xi$jL&s#|-dPS6Y-k8# z$D}3Q2XZDXN$i%7@UHI*iSNt=4#=WyXwivY2WL`$hpw%YpZJS2MXDI~M67dAqU$?9 zH}b{ye5`Yr2jC_RzoDlo4~0x^mqo_G@4Z8XOxbSg`6%u`cqrbclxyxtN|oNC1tl&_jZma)NFU z(ZT;MJ%kiM;UH92fL%{CRExySn~HrDifx`P!00W<&%9t6cQXdj^0gaIh%Azu83&Vw z6+PIqzEu2KDN|9}1%rlxsg&<3h9uB?ka!I`HK&6UqRScl2N}$FX5MH|`D9JW$hzIw zPM$<-jAN7Lz^h4YOOtsb#~2uN-`N-5n^=hB=J4 z)S+Y!mflc2=6GQyme(aUK)bqQ?YirY)t#>|6L$S(b?5VN`@`zaealcM4nRp1?Bf%D z@TAbMV_Po0+{CUBHw|sNfYp%|P$eiv30pX-=teaK$LOFV7fabuJQPcLV}r*Ej3AG? zRNl?wscFonTyZXYl1VCooA5$O>*AI+{qIX!8=Ca5mQ=f2^>38aE^pQ!EU8@NuGhCs zYe3r;y(JBG4a@a?C3Ub=)1N45t8CJrDyc-bGbIh~7X6<~8Y*GSI&S362W0dU_SL^LDOL+OsNOBERFGMU+t^4?5` zUkJc}g&sYtf-*W_oDSeEtw2OUm^;A!W{WATWKGokcVK^%6R z+r1uw=N@c#YT+ul+@gsvUPRxRi7p}-f`bb&5xy%@!cyv+P5DpHkPjtuB``!O9I}-6 zR?J03fMo5Jf#)6K^N#rfjNAO0xu8JTxd%H0@%&ts_@rZC-CU;TS*V%#j-&r}rx^NO9^n2%lz_J`lobCANTMn_`(I1*CwmJBp%}s=~uA2U<4oLmPz*}>rBarr3 z#rS2%fwI6dG2l!o&7l}&DIgcW>nK#dzrpd*BMz|^3F$pHSM)=I9p5V^O8q>Ph?0Y9 zUFUaq@QT=@j1l;X?>YJcX#`Yclyas(B?hLW1VpK*a)_@vQ8VsLn6WK@%J2sME`zg7g}ttnHvgtNkYwb zd3qmrw%wL=1%>uHlP<9E#Z87|dyhZ(NQaXw)egPt1PXITf9V`?E#a>^M&9b^24f{k z`FKYu|0ien*?qg#e`mYcvrr+oTqCH9D~TDM2W@qz3lw%@uISl zf?{pyc2;WW&n-_PS*fo7du41$Oei0!C=;{FoyO8Jja|HZ?nrPW8!GQzR3=8sf+e-= zc29|I^u97AfYlV8j#mwAEIa1h$adV8?KG6~e=b8Zf&)*Lu_bn=x%BPv@0IbsvhC#; zs~sVb8%)!MWVs;rHhu4#WhI5|=n=?t+z|xzQu}>nC|Bpm9a;Ot@a`*!tp~8eYVA#Pk@S$Si@oLBHF4!9@vAb-49J*8{KnIO6JqZN$!0~y< z8S%Nfd{#N^^AJ1EJt$QUttz)kiwEkUR1&uC6Ft)5`C%pWm*|%@gYIkcNu7@MMEM0yg03d$jiEp+vD`bpt^g;;FLzBwa+PwSs2txs za2}HFqj__OAUG)+hOWcTX{F3DR|q=Sv{E#d9d^>CK^Ti*j0=eeTu+Qa!LbZ}cry|l z_`VBDM=AYC!LZ{PCDb1vh{OB#{lWQzAN=sZNj+J3@QW$G`=HoH?|*dWQyF2AE?!^2gT@EShAZs>Rwtjr>eDUw|p-4~?lp08z z4aiVRj+?u_D&R(TZ=B`pPxJLr{i!KdB1yk`MWRQ*KgMa1@KWe+*b-aJmpZ4v07R`;S;8zza9IX(N2ab*=5V% z(G@BRh{0z7%!&%o7A7ZhYu2EL*~nbr4i8{nhn)*5-~tUV*Jn`$%!uaAWpou9_=Kf2 z;17U73_@;ZQH30aWP^s!V?l^rP~nFJ5J`Z>kp3}w&bsM?Jj=%4$*3JZeQa${#>PX#~Sgw(`k*!SMu8`#apf7 zK>my;D=jSDu^3cvzH^7Cx4eq^;0`!hC;zwq z2Lmi06Tk#80ZafBzyvS>OaK$W1TXOaK$W1TXOaK$W1TXOaK$W z1TXOaK$W1TX zOaK$W1TXOaK$W1TXOaK$W1TXOaK$W1TXOaK$W1TXOaK$W1TXOaK$W1TXOaK$W1TXMAleg+RScZ9#^687bwh@ z5XKKp%xoQmjh~vBB5euJ#^Q;a{#+jyA5ScPBHk4&?oBNIRlMty;-iVhzm9jEEfx}s zpO1HaTHKRZyf41H_=HIyyc)GZ>gl~t%Wu<)&GF6?rkCnLx2{uXy&4@qOFI!vfkgaz zZHTcG)Z!4MB&da;K2;ZDGz3)Cf>jf5`a)LCakQpc&_h(E}um*Ghcd9OM(#C(XNgVgUrUdEgU5>aUx*2nU4AsKCO?S6tZ=f%}~ zICXaiYxue+DCpbPY+OsP-L$EFlb+DmwQt>UCr#)VwXeDJt_|z;M5HEC;= zm7kg}=9x?9AMt8faXiKFRS!IJqoppTAkt<5HJDKRWCEoWo6Ta4S@LnGC4n22`nmJc zCtQ*w(n^7POk|ukEBwG(xYdj!zWKa8e*PJ z4XjQhGP?Xh;kjS_*VB*g`_HFd?Ed}1H}-p;dG^;YJo(!{{N`7Ge17d?k3X?x{dazG z$F@5+ZT$BAYj$*O-g?*XUb<)9124bw>fIY&d;PuxZ@$%j@7ssod3U>uFWzV_zR%2P zOqLC1<^jrbznQs`W>J}#!?~7sa~VBhIh-4_JN`bi>rZ^5$))2prjSPM>*RD{=mVZe ziz>?8lNMb?M3<8AWY=Xx*(hr`uWH{WZcPh9!bDerc%RvWl1ExlV$!a5*{|ntD9flT z8E%8MmZUAB)MRlh8LM8^IxlV6w9o)7Ja$Si4D1e(#!1>(@?3tlhS8?YFnAy_0C&zIn^q`)*rTVIiCmo_=Pk{VNYWmLc$?X**u77gMP){3cV?hMZ1N+9h4_u_Ennq}IBxZ%sx{&JvtKpnxeuZo(t3;#db=v&p#7dXCl zDirXJi4RjFJz)M2$##K(dXA(KgJ7#^L`Zy#3Jx$Ph)g1os}RJEW=T(971A`!lX*#t za|jprX#Jq?mcb+2&M9ftpzrxX7d_~^gP!B78tfW84$WtDSfo^YP9P*|OvWekM5P(B zc1e0p3;wo)r7i~jrGoE4PT5VJ9F*c{&7kj-LF#RZq7$;GaK91PWzb(yPf5!D-D%*9 zwb@gSuFIhQ101y)S>+EvkVc}14pZ|x*fEG1nSUl*t>@0D)V+tP!6}1PDs}%M3JjGx z1iBui;~|1miv*ax3a&_FTjCU9IwBVc$v64Z6Bq7@+yWkS6*cf_8USy*O{4WvDzErZ z#%a5|D$Y)t#g$Z#`lPs>qCZc8FbYwZ5F(npD(R0<7scZlQUPa@Y{xg6#b0IYc!O5@ zI{WxYni$LoL${8#38(8|A**3jke#N$D2Tc4Zr|Lg^1t--^mCX(&IH9b*>-7$w z!cMY=OG41{bgqW@&h4H^)!eq*Y*#l%_FJFM{TxMux)2ptnW-SqP;n)E^_y>CM1&Vt zU8MXb^Kc()h;~z>nME&B7sGH3QxVY5wfk=`Wxk*lV!>ZS@H{DmnD?$lRz8ypk>NPY zGr2*SE(pkiyn=5FcR31$N9T4%>(suDT+K^kfgR1&(N(JGlghubS>u&i(Iy4AI^;X# zd)MdmW%)A7>C4-qzH42y<-3s;J^oM9vwUT~DN|Ga=Ez#T?cDAI>qmML&$R(W^bdpci`Af@qyGx-lB9Q-mWm)N|WHApH=M%I$+Zw9>;F z>|U4)h20}X_1zFf9c=s7$O!ct7=gVpja?NlfX>fyt2$pgx4S;trF_T@DtLYGF6<6R zHz+hZ-xNFf&{V?}-<0*yE|o?%)lO#kvVBtwm!@j8QJ*@;u7nz(n5l*fJ*yXko*JJy zayO+yb=h`cy6(hRjHxZn#|3-l@?&3flS1dkmL*wim76=`Zqi()v^cv2%Z{WEm@U z!L|E^{_WYZVZ#GRA}jjRl6+fwf1Eu%mH%#b4sl>T=++0x+`e~RNsn^zo-eKhH+lPY{MHi5EQm z7qZz{=|Un%xnKiX6-#c5GS(@+`S$d&Xebnjt|Ouw$ml9Xbg5G8%8CX@`bZTKjiZK} z2?B;MLem73h}EkMnf3Zl=QMrt{@pty<(W``B${b8^aqFG_PdOPQoNYu+?QKcye}7K zFv7@)^I)#^<=n{1S9AHTIXjCF=I$!~L$1eljZ=?5GUbW#??KyG;C<_>xjxmHFLCtg zDZY2hJ>%=9fCQL25f!1lYa!DKwb1z_PGk+!2%gu-^vyDW-kf$ zsJx)k!H~c_JQW5|2$$8n>>%Fo75{YFY29dNj!Omlo>n_FW#aZUY6Lp)DVSSmpydnD zlmMyXfp%^r?zns0H5D321LInlx~^BlGj2%lLuLTh;InE}-cTU2@a0@@WZ|p1 z-dM}0_82}FV(vXI=H3UUqR~+tnCja7@_GThy;RtnPlI1au`q~)($uP3IO?YHBfCcr zqlP^h`ToyPNG%T_i=|pRBM{3d70^bM|4DjeFJ+W!xxen9;$!7O)b6x2w{K_f59#iA z=(s=9@$b^wG(zxgrZs>%mAX`Y+r77M_wU>Xy1+_RjQrHU44~y&G+tV-ghmprZXl7IcSm;4AuZ@J$h!;}MHejZL=);pR8ozF8m znzl?pfpHXIUS_CY=T%T2G7qiDaZ~RfdH$XUAK3CA6*aWL&G4+zX{Dd%R?d62<(c(o6o3^pZ|U^Q`10kKgMhJ0h|cQD6NEd($^5ClXYb}lBn=%qF&$E zpp$M8G%)^}&FBI@F&JrmIoI-PuDAnChMc#Hf?o1<;zo@ktp{=~ z;E66~E$TeKdwryJf3D^A+%?dbRvyT;!i&DlNbA8|%b{Fo1>bzfbPsKetb94w`f6^9 z_-z&{4H4;72W~soyaok;+XGUvU9PQJQ9^556~mJ9c2PRDisPPNuVDJ z1Jq8LpzmE6?M|^SMe)nIgUq=G&XcuO%ZQcg6u!5AhW z5dkY)1(*f0+?XYz$O>0M$(1X}p-%wl0mB4z z12ptEXor{2@1CsiF{NGP5<8`h12c1_+g%C=S+-{|jabdB&&^08px@QWy%DrkS9{3@ z&^GwKm%Iq~Ge^8+2gu!l2F?k6yRrs-tdC{db2FgRdSTFrU0Bf9I|*mdcLl=yDpsZj z_7BDndimakQFccbx#vzVd7eakUTyJ`W6c(hsWU z6CbQS6MghsgTy0CKEC$y`d7%l)pruqT?bX|&0i~w=Da{;f4D^N=cA^7vvq@`|IZ23 zwN&y619T*>cKOK!J##5<(TRjN7%8u^rMj*1M8YeqIv?G;rWx|9-KP?q7An8B;Y7l6 z3!UH409?fs5Y^rgKaU}70A^8lXukHh>j}($G=P#&S^ga~!n?mwneyw}ai8vLpuaGpq#l58IXyRMhp?ugDY2p+2W`B|2Sh>8R>3xzUu041) zzjaA9uU$fGxaOAHquLrenRB-s)y|r=4!0xn}o5uO=gPI@eOWsJ61ztJzpk z%r#cF_%!zvxVWa;4>XSz)N^g9wqF#uxweKAnzIGVx#|T2pz`ku6}NNlnxmlQ&k7ay zaFtc3^ch9diXPxv7Z2!7ML9*gIka!%h1oVi{)huLQII5`|c|_8=z0+aiu~w3Kh}IH8i!=*4GYz&m?zWdr(36QG%L9Cp3q%&Z6K^&4#S= z+_IL2wpxg+&%7*$y_yx7et(abS-Lz@)mRgRO%;bKvY*n$*~0KIa*)q4MRxu*?^IA6 z*ScmD|5EER6u+ot;t9)Mt>sZIvtFy=O7yJZD`t9;<3;?f7aCNpfp`n%Y-X+^0Z>HFY$RA8OI)Yf;guuCy+lk`Ft z3;R1rJ(Ije5n1_eZq|{`H@S;$?YBOv&FIvgq0U7X zKCa!qzt8%lcGm%@1KAf6i#0uG(A9r@kp^}MGWyO$7Cx&L-z6ihKq(Nu{Vs^DX+$j> zcErcQCbcpUIp`OZk^NbMbG=rg`=C_?Z^E|MxOkA`P}3KK6xoAXFH-%u7PUqQ8b1i_ zh>C|KM_5+O)`|CN#Jgeh=%GQ^pN5+V->tAke~)i5T<;bWO~xsTfNwEt@=7}H+Y<#m2^k^TGT8L$+az95z)j?- zonhuz+Kue}YzI1T8T9>V5MV!}MTy9Bd2P3`AW=XHfbASs^idZF)0Bgdr4B~PRcsf# zu02iDC4e}WPPAoE`=Q*^0;HtBg3zBQMTs9OV23Rjq?SfjzMvJ)EA5IPvQ^N(d^NKZ z8WsX$k7R8Qeq0@`MJ6f!?zM#zr#f5`Cph{10frd!bBPpCBvR@1|d8@aN>UBP@g=w8D8M?IqZ5*&d8~;EZf)?&cNbpmY;#AccRB8Y< z_!Wg88Cm}n1q&ODhZRBUi^#&g$SBT)(3~d#+5A0VuaN3Yr1fzv>_A3ZUqF5WK$rF* z+L>rC63#uiQR>s%?*f(RqosoQl&bFxZ!*dE(Cv5Gru+0Wrdf2xvmtUfA(~9V9s?-Pu~!eTuPgi-P09U9OBFv50zURXnP!HJYg#Zs4T8(El%Z$1Fd>33RjZle84Kr|&K z>Vw=DHs96z*-#dkbr>wkPyHFRe}GnJn)%1#A^28g=K-xh2-CS-O&QE3Aym^S17yOX z43-UtZgL^P9zQys3vLG zO$uNXo^YfpY&(fy{T(txO0>D%1FMKDWHD++C>yHp zQj6*|{`+Y`NMxK|1P2q;7&ukf;RcHZj|o-|u#nH(orXHwK@D^@ur=7jhLHjGyv2_+ z{9F?{*vryF7!_?c^ChNOKLUOGp#CSjsWE1$7Pe}tvP{+enwqD`+IU6XHD$e5)v$qF z^tf{2UzCmas+%Gz_f&QBT2;#$P3wnb+fmKZ|I{qIPqqAKnz&H~eORH>E34C$`Yv_d zPm~Rea^Z)HMR#i!|5(#ns%+6HmS-zhGPJzS zb~sF5W?6ri$M+|bnH{ax1*stu8jRl;j8EjrGlY#gamzI6)&407ISJxl5~z`Y<&qW# z9N4S0xJ=BfI3uqmlZnWFrWU$BQfRZ8;SH88W`>OiZJ5t>FbNQ?CYFV%2O6dmd-OT?d#y6 zYt80wueq0=-A2zWoI^LRC@9rew{P6O2~M%L&=YB9&UMV1;h3$bE8#p#ezTe0w085_ zO%JTSQ%}$fla$l-)2A1~&gmBfQOs*|NT?hCkbc;wIB^T?E8PWgu#1!kyT&@p+gjIy z{P*=c_+T8=`d=M<+?Lp*w(IC{ig;V1V_Yhv-+_Srb+p5k`i&hfh}RmzDBV|RXUh}- z_W;{k2IM6^kArP30~8(G)r!UJ<{fm-RK7kA%}Fky{U;D%ym|NOw#1>TILIXg#ME@F z%LE+_ohd=rlJqQn*)N2UgW+xuc%d1fhIO2hc`T0v*IzxLjjV*`%r|j&*we!h3#|g@ zY39606*O}gR(;eG2t-<4kdb%`esx?Lh*(E!kRUo0q6J9wi1msVMDR1fw?WY~Iw-${CKz3GP<%bbt`UEW&N1b=hs4i`XYNi0gMpY# zGc!L)qdClSNvz?j)LeSRWq>+S@Itb2DF7|0t7!N|0!$rZW^nI$gs$PY2uDjl8DN@zn<5}%@%c5?9pbM?|1`xpFNJt}D$Jv*{;Kr0T$5A-EUb-jIwAmcn# z=&<#Y)^bH_4!|cGenv-Rgd?qx?y-3Im;v(b;u0h)J%)nQ=@H1YflGqxtMEGpRtg3L zulOyApr>P#(jr``^$@EKEN+IuQx9_WvR==_TsJ zW4qnbtF+%mQzsomN!z4y&MTGCW+bUYa&ZTfc7VJ$lRBwaB^Nz_a+W7;r(a0gN&Om) z>*9TJ;29#V9<8ejjo7Fxu|Cm}3MK??1tG(9_P9~4f4=Dvrnsu?+}X;?QyK(vJC=`uf}|mbDtJkM#q#T2Sk^_pG4Tn zrV(Kg=~h&$T6GPEN}3>=E2|gQ9%UCMH8mW!v?bNKTb5O}9G$Wvsky~n-%=@(cP2HQ zpf@DB2eg}$+{Y5OCAGbmxGSmVJ>x@34ad^=B(>JQpYh^)ufwcWewM|D2Zza{c+uqB3H)&ZzTVDpB)OKsLcWQr9H7w*) z{7JR2@;04GYFkiyBIz$liz=&Xk2B|zs@+Yk?<>zIRkpNL4rX6US^|3%$CIU`WeXY> zc~dpXRkigEC#a<4mfC9AEyzhru5mAGYI{#V6=IreE8jPB$#qMbs@odeC)6{Op)Hj-vlN ziDFvHTPwTAOxXE6?3+ev0yGJh&QM+L={>}JE%U#!Qp(B^jV&uBg? zW(-1!sI?JS{TG1rbj$VcC^+|Dp-$#-^+2$@Bd2zyb7Qk$jG2xLHb-6E%90B zaqZ#0obpl-5?YOXo-?E^0|SO2v6D&;4cct*?b)D>QZqTm(BN5g4&et!IXDP&*UzS?)+ng4m>Of<2kE%& z<(#sdR*VQa*&`qn>`308uIoMslm%1|s6G>Cg7JgWFnV+shY{%vVTY%TR_@#*lpoo7 zdY7OS52h=JLw;~6OZ%8?6aSn+2@?WThI1nj6^58Efh zs+-~=jN+5SJ>8M29$Ev-8Kmmuvl^a}#)+t*Ve4B~I;H0<9CoNs)LFEFE=Q*Qi%3v3 z>86bE7|-m^v~124*FhDp2j%!5PR7SGKb;KTYx=fntLb6Wf13VaLg5EZdrdExJf?Z3 zVpFy07E_C9rRjvpYx=-+*7SwxD^t2zYo2Y+H{Wh^{) zHjBS7*ldEz(=RSI41Fgtga!dtykZF2pkqKnW7;8@FjKRBlJP)VRmLyVzn!r!<4A@* z6RcR2%x9#mlY7u1)|X~vXW`Gig3f3#LJrXgb3F194|5jQ=)KcZz`P|@|1VM{4fmm> z>pwSDQulu=HAgFMvV{U_TEpyPK^2wACyR>gpkLi@PF3|fQ*+0^PJtds=jgcWfW=E|s5i*-0VBv!XJvUWPXUAR+L)>QZi0*E|#Y=E+p9xvrgD|((zYhFuCx4SWlcIo5+>3=pvhD2Mm+oD_7vzw39s@9&@Ydaw6Np~*SVd6xV6Joj^N&wU!+vL7cl zV_P+?=`H(lSfka3xAbB>5yFobt>Ta*oL+<;<4G`8G9LNHBtI!EATn}#kz_#*iag$F zlhc_XONr`)WP$|g3MJ?bH4DKfuM{G@C0gU;pK&Levs>ZSkl2Yk~+Yvb8`eNDz2E8WtIkuQ};!2lUsRC?FIopu_n&{)23@D+2So~ z{`WRxP#caugxj>5-(=GTm6^-yt-1|Juer&k<~vlhBR~Zly;%WY&qKh;6gxMq0^c8d1Nu6RoaZ+immPQoV%zR27#Dz3+ z@qe8M*wy@FPG%RuT+RQ3((rrjBJxwLgKGYaUCW2c0oAYbV2DPkg6aW%rHEz0)L~-d zg5==ll*S_u7BVVCd?%2|jB*Esqa5X3{E{+>?%!J~t==nbkk!5z*)G0jA3-PvxRdo*SWA9;5@tpv1o(zZ9reAdhB0!E+1H@{LCWo#xiJFqNtSbS*R21 z$Q5kOYn0s^QL;Wn+cro#zZt1>>TAUw#G4aiY3*Y!AN@7-ewvx;>V*&?jtVT3 zEBE=h9N%TWD}BBMyuZdc@%|ueo}s0GayLjSu2eDt(r#{|WRM~K3r!&XxST-xDIBUn z9wqk`5{L}MFHFJ?y}Y`Eo!&a3VGk^)GoDxg6$KWI@PwAZ@prnf>KtO&^GA zIS*N&OzF;+IPH;_XX3?0IZXPCgk7j1bKE=S0FpX}!IMm^oO^f>=``ixG}LK>%G&{A=2+AB=**6Rd1d!U#+hf)V+`C~VxY=@hRa_99M$ z4&JB)>5P(yf}Y4DZqhI#$a%CS~`!I&?{)_C<>UR zG<}@8o~Az4z+DhkV+U2ugDO^3`9#v+Omq7NSWjy&in|m+6Du~6MJHrsOG_gfH!jGM zgt!j4&BNeNkCa~I1nEHkVODbYcQAN(NV)~CHh0aCgS`~~#=l*1goHLXy{U&IO$|>i zcvGM8otJqOu$dwY7~-BNPxrnhcL8J|(*_{ZT+Q62oef9y>yXF@fPTYz;a$xb^+ER zz5_2cnrM%T&CD{EGd45Vv52eBW`RDGTCuzm`7pU!Nl7>cn~}MMrS!~9mJAdI4@gGh zROR$9ar-Ar`u_1nl9qcavc!!zD>(KChVUfD=i@{}Zys7nhOA#c)*5R|)}gc%j7%U# zv_Z-XM7X_DA$pW~1$}_Ih2AGjNq9vUIN_*MW)i-TN#VTvh!;#jyatwUsX^4={gUbiMMAUL$YkG>$YS|>+n$N)~bb~x%$K?@-^I|aO2wqrm<&?fW z>^{N?8Q*UKYQgvWSl*3!q&~4a6EPbxq7UYCdHI|JSF)A(8ZK@?ed6!Q_TxWsaph3K zWkcWpU17)(oXb-A%;jt(NHbT;Fy|4DhIh~D|CbDZT2oa_otE?a)$rd{f~X#o9@LQN zy>g7IYfy_NPl`GCWJ&TiN=22J2rIBOPj}8ZCbRvs$wOU;0J( zm?tI-ap94Gn&%uE^dw|7pbz!8R3O5}-@p=WbdVGI<4)-n&W?l)P_lvfJz+7F^XBT8iR*tD)y%$E za7n!5N6AyPpomMe;o_})^At^^wp>)Xqk0uh}jMUkh1g!6vdDWCB$mfUwCGVSDu1_b)t zU+Syh(RaGH>ZKeU8Gy3atL5h3S8v7Zx$o;oNE%KnX?q*J#97Puc$o<6{ym;<_~sZs zy&8_#&*$H~I*HDKlRU{6d#zq_gt}GF%&7)R=ts(dyYPB7RcOm0WB#TZGReokRV{7h z1bFx1!6?QM(Sgr5#WynvYYzc0cUW&E2n*q{#GQ_EBqW)D8%(NHhxL@OY_Tu3Ago7h z$hTT~=De{>(uDhYPdX}Q0!1NL6~P$NRPA!%YE8&h$Em;jEH~+N3Itz53>K-3wg~8# zr@f8JOi|>wm53FKLsW@4Cl;_20)o^6_@F(tV5?p}-Gzw;W+NM2z;9fTtpIqQ8Ox36 z@}mOjRzdwU9gSS=xhy^SR_{ZV=}h3|r}!48Kp;#Kx2VhR6CvSQw$+up^AsE%yXo{0 zRU15j2DkvQ?g;If;?rpRM6*s|N6r6aY9i<7ef>!8MkLCO242jW^CaO`UM&o=co_+& z!G~i$@`5G8j0RaPTlMX*xUQtj){mv_8}QzM&TkpACdY(07bYP#Q{Vs0oFuhjPaGs& ztTo#yuwmq1_Audl96iEWWpe$hJ)fkjCydifxKB}|L8ND z#J&#>Ddpx!uKpA!9pXkw&fcf0_^mh!tOD(jDI*Z9V%dBye`kRF(_nYt6-BMa#bH%P zj=+bGmfb&oPBptzDo_zub0w(*;LPp=ATYI{kL=q77U!udw!JH~)>VOa5P(zUxIbQf zfjdbSIW>VD5Fv6FNiWk^5#XnD0>Kz)3WI#4B<&jcDOgBmAgm)g9T3f%s$iWDI;^Q@ zX!h&ZxGn>$)Z^?Hw?$v~aEA7@%s=L{=k1Lu-^y4T@28Uq9`RCtb9snF_>K^0wW2q6 zXe*OF^tPTatui+vERG4ht(RkQ@{qEDIj)KX%aE(msF1eyfYcEEeWn{MHFdc9ZM|qK z#9PSx^6CL}C1B&=`1b9L{4$~>DYs=8&avVLLz@TB+vPN?zJ$3zVUL2Pk_etCbvOzR zC#eWhJn>eRoCpdQodkR5Y7z1a;RM=pL1Y2QN+O@}KT4hvqn(7LT;3lEYGi`>*#4X{ zA1#1FrAgKm@&@(!;tBcOS%4(Qd>T3ZqzDNTKkM%tT;k^;lG3 zW#RKOcMt+)9tvBVh1I4X1(DE&X|5*!I;lIvkgEpkPKJ$qUDb|vp1-}SdMz8nen})D zfmkel0^P^cgR3zZB7?|3;|t@|*J<3capKy01ptF65<)qdQ}TAA1lIcEF`Ej)jli6Q zJcZQ4-XbE*j9qvE*W91sY6Px`@P(Qyp5dJb{!lpn}SXGNY9)QD=57X`A8dzH=s!159sdi1M|H+!>Xn(Y3=bGN{YDoAj z{~^fqLuM+E1itjJC((8n844o_;=J|fMvb(b&R(NWIzY%rN&m8%Av)wi5hWz%U3}*~ z#PEYeSwh2T2i2J{uh{+OAg7$yomjd&H4F2Ir)6V~Q?^0?-M~3S#$A_yoLRgq45$%G z-ECsHIurALG^wh4 zD9n9BeFTuO)KTCmPrpD3$nN5wtbtKV>{cNhxeT#Ctj5JB(jlbJTzCrTc5a~#;9abk zt0e@>1Zi|I@^ADNpH3pKn<7S#7{egcsp!rvn7>cU6{KbhdQG@zk?c6cWaBKns52jV zm*?{?8fNQa%pG|5j=8s%I6$t+h}mHm2{15mHv5-Ka4P5}8Iw|L1~t6Vf^b!vL$l!s&dgGas-LdBi*-Lu-q;e=e0hm#1M2*W z8nkUVqF;``?Q!Jv=7wnn4I2v@4iz*ED|Dck{M7{ck^a9Pff^Eq)VgwdA0&7YBxSA1 zsOvKzs`&>iVRyGEw81>2!RQvwfh&y&S}`SRAGD&x-e zy;ofBPI^T9j7fN@JvXQ`yDZGo`TUv7nPC>Q-xAc2%Qf@ODNh1C!gjvVpIGUZC;I^|u; z2bG(YPbmMSJP&3pQn^&Es_CjrRr6H8P%Ts~Rb8vPUbRBCN_CIwLDj>m$5cBc> z^|I=6#jJi_IscY23)lKT4x^%v@|)ZeNH)o0YD8n>oKGgdQBGf6XD)2^AT zxm>eAbF=1l%|^{LnwK@(H9IsPXg<*#)SS|s*W_qRwN=_$?Qm_gcBXcrcB%FT?ON@6 z?H$^?wD)Qs)IOnoTKl5*CGEep?`U^u`?VivKh_@7irQl^{x!NhU9k@Drs({-;kr?} z@w&;nX}amUIl5oyeyO`!cY|(~Zk_IS-JQC>>YmrVqT8=Ks2k87(H+x$uT$xDdZRvH z@6fySoZhFe(>Lgw^g(@#ewKcL{+Ifz_1Eif)_3Zk*T15FO&`*~rGH1?t3RawTrcXA zdP$#WC^9$=Uc*R30I%!KHmow-Y`EL-q~ULdmkh5N!iL?3y#~SXh2cxX*M<{@lZI0U zt+BvpHWnLQM%L&x))_|`n~crI@y3b9DaL8W>Be^BEaP0`<;DfZD~-Q2UTs`zyw-TV zafNY}@n+*%<9g#Q#@mf|8t*pVYka`C$@r*oV$SrO_MF){H{{%ub8pUHbDqt4A?M|s z*K;=KY|jbj#Bx5$*`IST=WtFk=Ty#*Ioe!PF7jNEL0XaP&HZg|XYL)jcjw-l`-j|T zb6?1PDfivnUAdp+9?w0MtIRXx<>p!P9C>AV-n@pq33-$ArsmDg+mLr#-V=Gx=Dm}* zBX4Kk?!3?Q#JsQazRN4fH|Lk;UzvY({?h!l`Ca+9<=>tEWd1YxpX3kZAIU$OeX(-za) zre4!~ruR*IOnXg-OkbG3Hk~k?GW}>$n{&)&Gi5F}d(3s_Msv_S#XQq|nR$`<*XEVx z_2#?H-7Vy@0G^}Vu(Y&Hx6x~pCu=ulLp?IKJEdH|i zXmPSQReZcSU3{{5u=xApGsQm?pDR9JthA|ZTASWxwB_3JZG|?o&1x&QmDubyr;V|( zHjk~!R%5HTHQ2`3g0=~^R$IGmu5G?;fo-8}k?ohZt8BlrEw!z&ZM5BEd)W2|+mp7x z+FrE%%l5kME!*3+ut1}B`=n|RPsiNP;#W?Xvv8Z4P~J6DK}L~ag>i5 zPEDnLL0w5LrLLu}r&dzGr5>anp`M_gq5e+2K)ph3rM6S=Qtwl7YAsr`EU3OKKK*zdOAYk%DSto=Fri}si7 zuh~P$(b!?3HI8+TTOGf5-0#@r_@m=bj=woxb-dyDkK-*z*zvC8BgbLKQO7aIS;u*Y#;JFj zoK~mZ+29=M3_2$}FL8D_7dh{6Zgk$`+~j=J`3L7y&S#u|cfRC&#ktw}mb1qhaqe*L zbnbHQaVDI5ou4_saDL@XI*&O|I!`$zr?OO6T3pJMjxL>2I<555(#uM(C|y~)rgUBD z?WK2?-d*}&>BFUumHx5xPo;k;{afijOJ6JfPwCsGy`|C8_e=MbCQA309xOdvI#Bvm zX|nW0>B-U`OBH3BGGkd@S#g=8th~%!<}Ir(8&)>DY*JZk*(GJ|WwXluUiL!S%VphV zub1_e?JE1Q?BlWnWrxZJ%DyT~mwi|EecAakoy+LTb9r5U*GN~;HOV#Awa~T1wbFIF z>ps_muIF9t z8k;Y++6?-!WcygFE1EcDJ}&-Lu^b-HY8o$hh z&5mQ|vWwZ9*$wP%?C;nI*r(W+*$5kBcd>Cc!5(G@*d%*`J&nK1rK&Jim@24>iVAN< zbwypp=!&rw<0>XpOskkvaYe;d6-z6wt+=6LWyP9`brrW%++J}{#iJEZRXknsT*d1Z zy%q0Q?5{Xj@l{2tqOg*xq${f`hgFWQY^j`Hd1>XG%6XNGD_^aAvvOPIJC!FZPgiO^ z1)gG$)8q0mo=Okr@p7>xt;}{UwW?gEcLALtn%FK+2Fa|^Lx+zp2s{- zc%Jh7)$^?9InRrpZqMtUH$88A-u1la+3DHk`Pg&FgI9Ar$2@7zY0o*2!mIb@cniEG zUfRogJ>H4lDc%n6W!@{iOT54G{@Qzkccu3xZ@ zU-16R`dLC+RjaG+t9rcZiK?fn{#x}y)vl_~sy?qeTJ=rUiK_3a zzOOo4b*@TPT~*ysJ*GNX-BR6JeRcJ+>J`MHox$kD*t-jy;?)N?J`>U_lx5IbDm-PMM zlYFWgU5%-xvZlUfY|XfuOKN7+%&A#Wb4|^4H7jaX*Q~2~qUNcZr)yrQdA;VXns805 zW_QgeH3w=A)g)^MYtGfEYaO+&+Pd1N+Fh`JedzpVRJ-HN(ZbvM`D zRrmY4`|2L7d#diQb$_dSscu`{J9Uw|9d)s~_v=2W+f#R-POLjoce?I}I$gcFo~rlM zSJgMvkFRg7@2J1Beo6f`^*7YtTz^;n1ND#9zfk{j{cH7`>))z>yFOh1QT@L9!}VhQ z$@)|EXX<}M61K%(;rIHh{k49-f4INVKgQqUpX6`#-|D~9f4Bc$|D*mV{D1X7>wnJw zqW>lTYyN-xL;kn??qQX~YK8@djTsgk)-p_?h-UvXXcmDi0$BvI2xJk+B9KKOi$E5E zECN{svIt}m$RdzMAd5g2fh+=91hNQZ5y&EtMIehn7J)1RSp>2OWD&?BkVPPiKo)^4 z0$BvI2xJk+B9KKOi$E5EECN{svIt}m$RdzMAd5g2fh+=91hNQZ5y&EtMIehn7J)1R zSp>2OWD&?BkVPPiKo)^40$BvI2xJk+B9KKOi$E5EECN{svIt}m$RdzMAd5g2fh+=9 z1hNQZ5y&EtMIehn7J)1RSp>2OWD&?BkVPPiKo)^40$BvI2xJk+B9KKOi$E5EECN{s zvIt}m$RdzMAd5g2fh+=91hNQZ5y&EtMIehn7J)1RSp>2OWD&?BkVPPiKo)^40$BvI z2xJk+B9KKOi$E5EECN{svIt}m$RdzMAd5g2fh+=91hNQZ5y&EtMIehn7J)1RSp>2O zWD&?BkVPPiKo)^40$BvI2xJk+B9KKOi$E5EECTT>~D-`^21+!^| zZFl$T?X;F%{}z49eeVkXtzmp|fKe#i1~dOjNow64E12`=#nh^A%exyA{gr?`gx+)VgoW`5ooVDvQW#X!E8Oe5ZB) z_vH?WwsL2kp+3pmC;9zGbnfmiiUf+Krv2~K3CyOIB7fKXZq|L;x|&@*79(V82!w(z ziDtR8QWJM7)c?KJJ+-_&c)CGxSka_BTz`b=y{l-gxyO=_y!|~k>9#$tVyR_+pm@fl z)Pnn0@Gq1~YR)&vZ(^mv-azqy$X`RJB^6f?kG6JMSgYx5c-dlKjKA6!Pp)Ebq`tjS zQ{-=<`M?rBuQ)1(ICHyBk;H5gsaNBI$fBkYjwh1*h$Tspy^_7G`i>Q$)U0uSEwkyy z)GQ(X(RIF{ntF=2PIE}kQGE%ARm!K&I=iE~DHf~g$8bE>R7QvT+bq@nMeK%ubAv%^ z9o4LECN{;kt|XJ?d~Y|4G?hnIbJE3&L>19`2)fI zD<@KFGy{;Rh(fmW4epWD?9*0qotoWW6jX%XEh&m@vkZ0v=7u|q(uIC%#w4+NrCIKK zrFq$6eoT?zUTGF$Vxd28FsMSsAe*Ub9tZ z@Ke4$UC7*7^y%p_GQS8hMexkfnjJB4`Mgsh(eLx^5y28>eeUDsz+wG!V>wk&=^iL2 z^8yIfr>*Xz%7D1E%{* zvEk#q8ffu?SAjv>!z4d9L$msfsH^N#bIc@kNOX+X21qiwj+$)^?G* zEWrXrvKzWAR@QV@h<7%>=^uaR@}T0rrE4D^yEUL(*D6N$rQ^}TaMu>UvUN>}DNckKJ9Gtr<%=P=K$e}&l*r75sbPDwbR7uK4RJY;6gsH}K&jVn=A7*M&2)a#oMDoRev1ee z$|&wk95z+ed{^hyIJ{vmkHTV(O1SuN~sPrUWrj zy8Tm@T+>e_MWrGJt7uP3=vJO{*zhW$lta1CE4wuA$@NzBqIG{OB`D{;OsC zq{EDQKCMmsFAoyAQEXfyN<;{f4W$to;0z$Pppu9=;M4yVB{ktgUb`Vlon%xpg}eU; zh2f3I@Gj&$nD2uu$ZSQ~8Z?0n#%W4#h}?a5#QYIFlT8 z@MuCzLQSkUBn5&US`sawG$@QBiqT6B-)WC?y@4L;J#yvWLcOzIAIR&}kMmnW{@(SQ zW4I2esBeSH(5M(bVwnBQbOsSNa>Rn$CulHHzKCK7s9Y>PbsYLB!$(0|q^C`;L-s9X z4!37Sal=Y8Dob|%$%Y%vQD&8SkxgOO=?WBGz7VI)Go23V)^6N*+s2I>TftYiHauz$ zQ~#PViK%h8y`>B{*&TCYsodR8hSRubmg2e#>}(FvG(m3N>p@NbRpl&8SJSMY24fqDVJz4xrh*X?P+)+W#^@T_=JX=0PU`3{b_K1Sd)Z%mhpns*`z`bRkG=zsm{oTx=Ie zGZGRrimBN*m+BPcv74iv z4yz`_89;;v9Qv(O%iL7DqHRJv%3p4chpE>{Wd~|}X$1nOsKW~E|3s3~i6Hp46@vh7 zbR~9yzkuKDyKu9AZh0D_N}kasHo@<7NnC$HS#ES)vK6weE5wc1LR;8%+t>7prEDj@ zj+C;noyLAEmNp;hk$Qq!&Peo1WJ~GTu^Ih?%N0bkvs1;SrkfaB&LqF4G?|)x+X`WA zWLK$8u}=`ieFGu{=s6$%D1DBF;2kCB%Ky;W)W2f*wok3(M5>_qxu` zFB^MdBq}vT!ilaUw`}F|WkRNu`Fy^}ugmrUYD{w-Ez7+S(?^ugc$Xmg#R4C#x$-h@xFmA8ZvRi5z zM|Kws>83t;gUFzPtD*^U#-t2rqtBlI8I{L=PG!H{MaZP~flBIBhPYxEA+E?3`DU~b z58JS8WG_@f$<_JdMXX32C!f`~typ*J*3|~IVS#SvK1QjCCkX9vf_C#hI&C;|3xrRG zaM6y%O%UMGP+kwR0CDR;qk?sIzCoWBNHYlYIbN_~|L!u_;1C*5aXH-$!=?qz4TmhT zpp#tovJjX?2+3d>bq0{i*1fa<2HSG5FyC7iFfPqp_)klmA69iixm4*=^@G1FTx#;g zxHRO8bs6v_dKBiOI{TGEY%scEIy%%D3jJz(;7>cPJ1wT~)`qx(p_1QcO2X+FEQT@~ zRekPxbQ<50@2s%Ze<1cau~mb5;`R&<*|0@v*yk|diTPSX55mxI=C)sOoM0{#NwnW& zKE9~cVGYqgXzA0Av9#L!dO5aytcVz_)ZpBi9kZs*oYOL4`eb_YtXb`|6zy#o*8L+3 zyXjo@ohxFn;%RNr3|NSNMxON-kx$v|9|j70EKM3Z)Dw&~Xy{12C5DGEm5I#J(NLdu zw~mHihJGYfu&5X4DrJY`LKoB2{NCF;Wn%R_8sdL9vB=P2tQ&3k%jlqj z=&&JU>Y}COFAnwJ$EIWd^8ti2CGyK?N)6j#5Hbf<9;MfZHuObcO+P_X-^rF%PsCpw zG@)Z+xIl6w18M#wEhT&S*Jx2T+fHU$Cxts#(U! z<6Nlu`n(NqT&y{jky1a^ociB2pPjeiZ<(4AngN&PO2>MyWz_t&s0K1H?1uW~>+6>$ z<#A*D0Y*B$7vvmZU|6ILg9hnTpq6tJ!@}Y>CB$fw7ng+vzII7GO??#A8It_E%fm^y zoh_G-qYk90Po=?tY=?YE2~v9hM;Hffzci$!Z((14$Egj}X2Uq@HB#C`y}~Qp(&@b- z>~@7aDMSZ(>ymUha)`Nb`_+=jF^1>d(%HQtU5E?0(p&RTN$tLHd;S`J-DMH0o4>*> z{U~>KMW&wn8r1WVa=F?0Ya(OZf|!iTbC8V_HDAL@Qjdr)Nb3Q1XV=c{K3Wer9&u9# zVJRhW5l_f1;sRgDM)~vCgsDhWOvu((0;Z&Z(b0fF1c6e>^5<{Bt@|22?}l)!OS;Q{ zbf9ZMy4(LbK^tpL91qe=r->%zPH?ku4jP0_$3Pv36Vj-o(-!)TgV6*Y#KY+!W6zWf z$1rx%yl_5R#f5}Oz7kN0q{nzTMzkWm{|Qz)&3z}G>7T_)Eql_e#KFL?l1+~O+dWhR zraR;gz|g2&l8&A8$sG9(@x{QsP$_Co$8YgOAfcWopYyuUZC7;W_Q8g`sys(6(LE@X za{aat_f0eWAv+`|qBL7P;9v5j$ZwZ&NjYc8S)|UHr=|q{9d?ixMy6wu9m0=1J5q=S zlIH!JJz{d%Vx6Kr_3DgC0`-n`zQ3+gx`NbFC=Bafr<)C=dJ@r)B#+8bP-lfjP=e;I zj@5D$M97c|p-i2W2}wdvBtZ@Jg+UyQLd~QmK2#xbv^Ja;s8`oDbXGKMtmrl*tAAu? zvQrX8uP75*5^G+{ZQoZS6tD-L2GNDL3$GP(_^}tM2CFA#M-#9Tw;5J@YF? zW@aU#Maw(`aJ+_=cNrZST3*miR_PymmZ9R+l~m#!8|h-D*Y`Y(`;Grg!`uHyL%H7= zR5o#Fp^hyVFS|nhBM@X*!Ch%n2;eCV)(eXO&iq*w&OvIlg2^)ub+-kV0_;3g!xeQL z#ur&|GA%Bbrq$xb2@w8dv60|D2o3p{@B`B#^`7p`m89Tw4ON~Hon!vC5{%%(l=x{L z>NJsaq=A@NILB%w>RxPAvR3kg8;gM5cbyN09P?rA$G2@H4oGALCqlYG*_(a{3o$|r z%i?Y&yTa$o83E5kP0YlR=+JkgZ&e&4kqw1%IX02T%+;|>NiGase{ovU^ij$*ytfz- zS@(M1&Q31Bvwq&X`bAd$h$m9JB)F-0XD6*AI-43?&F*~bMs^j#I|V8#r$9~V3N)0e zz(7>mg54jt>;;jnA~Uznz7nzq_Bkxz0iSfH2iKVj5AE$svMZbEAClB(vd=3vO?|X$b|Ed>AV5O;oAdM2T=5k#`HCm@4Y}-f!PyuV)0xyOz1+SPFj>)wM!w^m( zOhcGOb}Z2N+J%{@7;V+k-)o!{^|NQg7wUA>=cE7ujpV?E)m_07`xyIE# zH~ayW`Q}nVr1nIW8U>|^!v7^hEu5c-rd|yrHrhgk67cqtamd*WcXvrDgvkiU;y=*- zz!T2USYV*k(E`ndYHtqJBL4Nwo|cSU63(qu{G9iPc1PC>W~JiuPdRvCWOH1cbHvL9 z4UsJ#D5Fb>6`|oSVTno_>>6x*BFZ0I7VeUsq;=`B{dd+4rdOxgBe(u%HIdyKib0z) zk?k5p_2>vx9T{fRM{d1qHCZm1?4SlcV;#w2i~Q|mB`<6&;zeWvIdX7ddq9b;gV`Pw zglKDsD}>_5q9vy46vXusuz2D@Q2;(dm~68Dr+p4So|;7Z&A2+rH1*g2eNzK=ED!6=bQ~ER*aV)h@{=y0f_C;9wpa$9`BaDS~H}xe* zBwK8_Pb6L^49C&LawJS5>olS_Dt)jK{$5Iy)o`q9f~;noIw;G^K5`;a13f~N$w^c_ z=lf~PqHd<|i+fhUA%YxDz!L76w>xrY9c+v4DX((P#JQ`!WkvVY*3<-_kNCjy0YO{{ z+>A(Fa)6vQu=r{bGi(l?$b_Ri=0k)l6x4C|12w7Hn`%-MAFUDGf2iS~s6l^b#gBH< z6{37e_t!pR8IMk4hKLB`1cKb2w6f~dmLz-T2U4&4Yaf|^Zmv zuA#nxHAZ@Zt5#7_ffjq_mLmxE-xOqO$kV`ZYDOX1lP6QJ;(PR&AIu5~1lU1W^|$4A z#1fT1vN_AuIZHQl1@`r-+zp7fs_{d8jczbMB|H>`0_%)P@t#`fe71W_@9Q;2pcDBk znd-$-E-y#cD4T1DBod8DL_51NDb7e*ZQ+jjd~v7KDf*IPs_hmW!%VLCcMfUE_Mk ztr_|K$ib3_r~|eZ=i?I}b66a^%X(}#j{8f|N9BF?^~3ZNpS61||FFN{n%Z(x%f6P6 z#^2y?vm9>@D$aSdUZYp(ePi_LF^`RMkG_4>z}Ti?QvG|b_guaH_gqifOKEFkkFCYa z+uw7YM)~??)ud^Y-g7tDXU|N3LxNzPk!q1Ah?EhFC;dHuC**OHPJ56zwQ7IG7~ zx!eM7vv;%iZz>=++Oicg_B?Cv|#5q6|1zZ738Yg^qgfQG2 zRwS{hpxqKlR*q#PF;p}cKhSw33`~0Ke4{UEOv0E+Qt3f-Bael07WTIRdo3M{Q>SIs z=zh9BH9-grV8}4G0BFQ5=kR|*RrwH)TO&!GSVQHOw@Ig+lh+c>`T;*>V=}*o6HGb>;{L|xL z*CfPNkh7gO2NlhD2zcD}ejy&|7|$>9Q>U66=J_hV}GxY5Xk&5#oc<)~OJ!vrC7;e;bmcf+*V|#G@le zwP{J+BPKzGZQ&fEX0W(KM9fOY{TknIeK&#T|NTROjEmzn4EY@0&_0Y@KSzJ409A6> zM1iwf+7!&^QE0EiWD%QMumLK{V2>w2 z5k#(lQ+N_mGM_)6K+qpYwC>-pz<~^&y2G?Nt-$x4E6jTGeg6tGMZPz#h{zqw=YbhY zr4AemkeGT#!AlMPzgO zAst9^2PU}#(@xV*9XyQ=5LKJAu&T;lRaF)L1snjgVz)g;jv|R(t$|rjBHvx`Tt^g# zxU*y_%u}Y2cr)?KYUm0DY3?I3Vi(2d!n+%T z0C^4P5Si)2sX~w!;wr$cG|nnsYH%kT1QG+t99MlKGUJC+NgU~+W085sPJM=xJY0K} zjtVQH?Rtsk1`)M_xg(F5-X8VaWP1h{K~J0MOgKYBEGqxq8~sAEzc=aOn^ za%g>Mgq6yXd=L^!RJS@S*P|`vlD|C43r%a~=cr4b-!mdL`-YKGxEEIGN;=ncn%tuK z{UgGN>|p^?6R#U7o8Jw2Bb#=NXbmdhck?ZCiE9$1Emo`@H!guEIO(?g;6xNCbZU53 zoF&g<^_d3Ar9N0=vF1@<1{H7aH(%C*n(>5O*Rk4%?2S13=(Rx|h3M1d!_|~GQoqMG z5;~#Re3`D6WM0t7JaMkE#3Q7hUgz_Ft*fPukijiPb>v^H6Wm}S{c$Kkxh`03K`b^d zVE;|VX>ZdP@LLN>|3M%2O)X)+f~G?#G{}WCbyO)EHw4WFEIBklj>2uB5o!fX;bhtk zK66QRv=L%QjUvdnCve_}=e;kF#3kx>lW^^CEEmp!VfjQp@H8!W_(+^=hGUzC^fD1WJTD}%0X#Maa%N0QQeT5;1QdYZ zON}5UL*!MB*lSI5hJ|oI*HANREXhfdft5EfV6PcPL=N&ERFWBzrjsQH8m#zTJQ6mc+2V)R&j8~ki@8ha|A({E?3+$k!GWAkv7e}0nr z^?=Sm8m3Kru>$qOL`CdsT(($Fu-MhubiyRr`rozjtpUDP!Mg)N=l-k8p@ZiPlPi+v zn*HzEsIs9%AEKG><9dI37-&Eu7MAPhDOluOw9A6|JrMvAk!2Rrm~^Fjzc_#+Or$n& zBs+pAhg&4uF*xGgu%c0c3%Nrb!A5|3rHA~`1+nmOo>yleZZn4diii9A!<=gyqeG`+oL(zKbaP5h1k z&nWgk7y#iz>kb=6#uDq!d|N3qVNk(o$hymG9>t=cFa_))TlUKz(+Io>^IJTqgwd&+q5k`S3a zELVQi8US4&&@PEN-UxduUGe zf-S~kaDz4WDRSyY;oi91`MW^;FM=v(-^s=n|Z*1~qgg&Lx9t+C|jUnj?i_9I#Gqx^TcM z2Lz}OE}nWuNsUo4Iekdg6nOgQVO$anCh^i}+XV6{`=@f?Hd#UNBpG-la1cgtRu1IC z9}g-hb0(>Z`!2+J5E6GcBhHO&F-TKn(ofLH1WIqbV^L6X&pg6#(7$lgbGv2bjmZ39 zh&zsE$!207BJ}$?hLEc01L>%^5lx30Vrt3GH~OW~a>(L+#3z}uF$0MhoZwAtR6bPD z8G?Q!90i+@;fI}pUx6P3fuJ41ju_!fDxbcOzh{gRSzY&xk(vTIALlqNPRCdaqM*vl zRpb%!y6zccRpyYdp#M&bKw=9JL68|F-r>E)q|X51{3vXIPeUK8GAc zd6Z;30l6Q>25DFES(8d24y0 znS>%ZeHTBqnKhk3?Yy;84!uiYV-mfmr!ABInBFlS4T1}ikOLNJxV||xdwDY(DV`c6 z(G6DlusStyv?(%NLDt}|{`_X?kKD&N-99Wc^hH8*WplW)8KV*lGTtSb0;*skvg#06 zTETU{dO?E0HN$f!W9?{ENaImwe6&@gVOKj~0#TnMxo0Dj=*R>#2o@KQVl#{6BJnmP zvLX^`!jd57MAG&e^W(gqq#6!|n4!HT0|-K@FmNKQ+jJwzCi+?M49@CPLHDgeDp!cZ zS7dG{H;}A8wu}7_mn5!qYW4>~lG?+4BjqAhB#-_!a(fV$Ngp1H@SpKTw2QAXmu0Dh zl*h#pV_U(&V?PiKVip9EOFcmCiFyw`VPY7;uko{7dz*768NN0iK zI}#+8g?rO@0hh2d*1X2KqQu}>yOqvc^A_w399xADJ|a<}330){dlZ!>VW{)xu|Tqw zg#4Krm^mEGGhJ%IBO@uJluINq$dxxzEtikS#2%ncn%(Ay&tE{&gHn@Vv62LZ zVr?byUeZ@s~;H&R4^-$2|5IB z2lMrGRLTHiBU`E%t%HTQl7WjHA19wK zadd^?HPa;|3y@5mBs=4qI)@ zv?KX0HG64`Jdf*Js6;TYVe%y`3>NZ9gv%eX(VpUtXJ{jYiOkvaIHQkjC=HY6xm+>! zm|2V>8k4(had-f7Kj@}3_>!lSX(Ev(m2E}1AI#UqXm(HymqD})3;vHI5&E=~_F zGKnFroY?U2gw*V3CXg-o>j?yauO?&&$1?<$$W3bY^a=9(4okiCDH43jjpAI`4%dGu zp}rOTAY6#^3o*e*eIW0++sO8lr$9S#O16SSo_u{~Qz82uEK^29N5v#}?@Ew7TOPjy zK@_AQa@Z>5Imxm|ev5+sF!Bo;&;yUn+_PX6vwwngJ7+LYnJAHA5(wW1sP!SbXahv# zvc;|1KK|B;QVq+U^2K9u*|H*NK%C`(5C9QI1`Gtmcrrz@(;>NJp_Z47Tsjd)P{@ZN zbQH0XIbJfXn>!9Hu^K8VuYZmg28_%J2AOBMVuK{~Wai2}iRF46^&duxWbZ`(QIcyj zlq1!2Q=OcxLE8JM-LeGV zHi?-s+5P6EZfckq#idfAz&3Sc3SmGi70T4aZIe85J|n7=;oBIi3c#QvX37T_(#)hDm-6 zB$8LGT5{L?t(PvIa(ofO!^{2;V&DJ2uZq`%{xN0P36uH54!jif{8avhR{symUr&i5 z_A;XfA5G+AA~!~w#7&es`rn@-&F;@>mFD!fwMz4#SDAi=LYmbx>>Cp#%LlEzekw1v z%K8!Vp7fR?#e4an;^+kp$RC`N(JB14)_}TUZ7V8>`1R`qQF)8P=vK4}{7tRULwyLR z%4b3T<8m*gR(Nk}0t*I%EyTaxO5Cvx=wh-U?i0d&`}kXx?7sIWB94dFx!}K44C3>q zR&W?0<7XYVAi8)O8Nq7Btj6tL%~Gcv(imEcuwW>b;L9~}Jcqecx{`oDAi`|fVspO^Vc33*I@0S{Odwoz2xL3NDi)5 zvSTsT+&Gx!W16fTOPh*1#vU2BjVov<>OhoES=?b<#edz-=npskw((V8BP>^6V@{(2 z)9;g3yqz!2IvJs!52J_ao4#&ia`3V4%gEz;s2<7`keO^=#yL()4xx6M4a zBgwOEjJ5(340DwzXRbBZ5uHi4VQ>m!wuWGVywn;pqyEXuE?oN z$oVPWI^b6Gv)TYeSHlBl_k-r(@rH-Z-FP>vVUxKYUp5ne-UyCZqYr3{>64U;F{z<> z^L*~{moyc0yvZG+a_dYNZnQx)P#`V(4blnj)F4`}Z7AqS&%+2!516YTG_S^(?|X8%EnCChQENG=?LLJ7gP)us3k&=EX^{(Wi(?RVh;;p@jkkDSKWdEDF zqhdJN@7cdAS32y^!P{QDa*q_AGR3-MQjh=ak#Vsm)nWZ^N?w|7-*);(%79hsW^uLQ z<5f#zaD;ZOTJAB&_>paO3Q7$Q+wdEYB7xJ6g>!J~LHt;9;(?@>gebqtgJd%`R}JTB z*K{mDB2gdb1WwX;RVo~_(agPYv-h(wq--i0|CK~+T z3)^B|re~w1?(E$-J(8Nl7fj#ViLhH9T8x!C{F;Wsj#$E`=g+m-3?H3qi+58gQm31* zn7;RbR9HA}H&rd)bbfd~csO znk*gLK7Da!leuFXUUMX?+Kjhnx|gFrY5*0fgZQZZwrmEe!RhL}m6_|MSo~dhBo{|X z;ZkZlZkA#fC(-HB3S5jz%?f-tX~uO+tk}G(<=u-a?H~~~HU+kf9ove?tLaDT74+2o zHeE=1>+9auM`i(w4YNz~ZEa9WGbUZP#3|$6ZHbJSfqCr310PBd7)d8dMG>hG@jg|MPcn1A0|S#uBQ0g6narGjab|I9Hs)c>5x#i_py@fj7oNg`n#i()FtrC-n@fW#Feif_`bb?UG~4hTATI@N0PTl2|wP zc?M#vRNvl7GnQOu1$K=%iX@^LD}Y2rq>`czC?89vODg*H%vT@&ya5>u4O-dYy$|(e zmNaHl=(x<5U&L(auy=)eOebP4C8csHa8I-uWc;d_Z53uph~L_GyNqtk_FIgFKy7s! zVI_=>kT9|BhM-$W+N-7@q9apk{xd-zXZlFbE}en zMWs`A^9%HNGcz37uEN|farNOCF1o2xB>9H=f6pd`RFQxF@4idR%7>2{GcMRL%-=Y2 zMAPWNSekLO6_p+@S5;SkZS{4v?@inL@ke`hfBH${!}yFQEjc5|r!W5KC$`U=-9CM? zVyHyjHhKPqYf_|}K5h1#yq_9qXU(0d{ppt0&ThGEviqkN`q`6PW=))WvBWTL&a@em zD=s$CPo6YwPTj>@T8HuH{B%pJ{C=8#>(YnY|K8p_{ZPB5-PnF^=FQWtYrnPqckPYs z%#6bJOJ=?}vwlYV4BdyE}Z2)dMONr zZYob?Z1Teeu8S2=4d%YAGc++a@5q^MPl6M~vj! z7{B6Oygp3b`0I;R-bRrOCnyq?(!sg@yo}3g}_)Y!alh1b7v?WvW$^z zD|zT5QZ%)H_oY(%`*;T}61kKV)N!mdx!*cln$*vrMW9t``oGwD7x1R4v~75|P1Dd) zngf*G6v|FgV7Dm{Y6~&8fsm#LXq(csl!97^gLq&Bb>1lj8e2yZ@dS?Y={Pu!qce^= zR-Mu6j54&bOn1Y^rcxw~b&ME5Ges&EIqrV<+B@aoIPdqq-+x{I^}pA@1Ko#pc-FJ- z=ULA>J!@N>2QB;`>MrJuT=b8e=3nyA2k{_?6s=PbpMKCXmL%|x{FF&(XOBjcAp?Dw zY|cIIfkU3FM;|3>V#W|&2@Os#Fq6px9B)stqN})4Avzt0IwVI}VJbtMaFJ#=mwwSZ za&(@c>ZN=2a5_n$Pmr66K1RsV3S1S0R@h*?+4zV@!W0OM#SS@~14c+-2wWeuSSJaI z7P=oeW7Sf^`&S;aQu-?oJPFgWjxf79)Q?St)%E@4I6{d60REv)eI6p9C^!RS(5*SY z6h|R27Ut4=>Da7Z-?Y^jy{)d77F==Og6!qu1iSd*1P)FrN^vJW!A^SD8N>YjHA9MY zEr(`>lM@yt$S2XmVa(%kFcl$(fLa`V+Fo?gPu@&2wesTyx zS0Aw5RIk<9epIjJL_c0~5JD4I&wt|SLLsQerj`b>^#XS*tO>@acf@y@`178QfC4`_ zeqiZDa~B~LQO0|5`aaI2K2z!)Fby=q`TILmxK5K)PuI2W?wL|c)*Do8lBT{MEcRv9 z&|@@9+9XdYV1*DWDcPU8Qvm_Cg} z8+MfN<|Qa_4mDHrGZNi35XPwwEcEg0k`3+HNMUQuUSX!0jWsXSUJy+0(4e=8pcv-(y+p$52Jrs{Q8g`5=d*HpGKFxJ) zz?P$C36`4*`O+ocb_nBxPdxQiIN5}iy)cVWg1~GhIiN#o zqGQnRk5O10NCqMRRu|#yv*`GC=GS)10A{Gb5j&Za1&uXHtfQq+P&2~?D3G9#hXb0^ zmhkqamTa6{GfOBq0Dy$V_hGQ@STD>zWS@Y6T^=$ac{p?kz+Fp!jwP?ZEQX^=w^Ry< zTmLzbM-5==t6R}A5TXak8DfZO)AojqpHg+4C``E6m7?DdkvFAAP<1O4xQoRUIo5<( z5IJi@WH%^kVW#kuaX;VI@@zrnBd!^f9DwS?{w-m&Z@X)qPX zwKzDMH0Vz!Is9}`Q6Rj-d=-QflZNCAN;mb1;CeGCn30iw>rQg2fFo;>l_oTvZnPZ% zUjfn94J91%#jcRpI@}1mfYvcvc&cwbR{6o0#7d#i!VKfw%p2@Dm46d6CK?KlV9;;$ zH7*g}iDrm$`8{5Ogg`{K;f*){7$kpenkwku6lApDOIJvLd5Pyy(oxeO9$Lb93pN5R zh@4>x;Vje+Yy3Ru42N?EaMJj^4kyphpiLaqbw}T{)j;|)?3|hISTp3mAZ+h0@E7Qsa20em89n1?cIp1%QhP zJC1$Jr1N_jTAyGwn$yQoM9^5cRS*YlB5i$wCElDKp~GzjbLkUp1@u>K{p190fO~sf zI`>xvMZLMQ;rFwjLob$pl=-%WqF&Y9cPty@gO_eO@S+;`7j4e=`M5tnA@(e8)U$Wo z&XW5x_V*Zae~RAOLheueB$M2z9nLE8{^+Fn;(gmj@kTvRD&6m6q`o~JO zi5n4~_=)LEl<@!ghNTMCa;%@|gci#%)-#6Eg?TJav*Ys-)8TIl~}7b%XFY`K{Uthhjh5dZ?=H7WPaOBe${gNpExu|AA?UxUwu3N zum;~(4=#J&ucref`RIZ49CjSC9Y&;-4*=@uPtBwzCi-_c@%nx}LO^FLXfR*%=S337 z;LpaqW6r}7Bl?Xnd?A%BfqsRzfSshTMCzF=y@MSVT3D6Yn_#k>r#}yc)|{XPk#&<9U_OfMXiGR4SJqm4qxM`8a-J$pvW{X)c448od0@cxzK8X*P1m~F!sE4 zJ;2#_J$8iY0G9hFK(fR9C)W>|gvWcjuZQHGyqVg5uD47cB?{65D&8Uar+)&>-ln*hRqB zx(W8@{+dX@s|Ds+f{UGs6x1eL@SD znCTGyJIJL&iLkV6k}5GFuJ7~fRlZNIPaHmak9J5GmtYy@>~57u#T>)v2_)%MkSQ*WM7|Hczxu`z;tciL0tBZ`ho|<8m}+wSW9X{Krc( zS#HJcXu@8k!y4^fH?+aoX*1t=L-R1ng+6~>p-RJ<0|)}E_dnrer$3qe)oj^F~9tGCEij1qA5RQ?Uuq6PcNb4_27Yj06)MK2~>A7Fyi zRpF{G>5^tzUGCZg;vA{FrNvX{=xref)%#GD+KR4fS7j~lD))3b9p(GV-A+eMS4)L^ zf6F3Qu&UP6UFGg=DR(Sz?Q3Z%FRScosq(l`Ll>?s_*J{BT>IDx-(z4Xu=k9Y$H?{t4u2 zSMB(qtg_b$IGg~+iQFP9Rql_<@mK8dd20EV7H4Vo3!a+l7fM}AUvN8XUZ_}9hCdJf zieB(kIh?K+S{xoe?)nz56$X8bMLRlpy zuDAmG;%eYs@q))$UHQTiM|D+A9}0n6+zVtT`a&@P=yO%$KX|JyFWWyd+6O^lYM8pR zno@Ud4O5Jd2YBl7ErF%cFA0b$S9vL(XyO8jq;wZEP%Q^lR$lHZag;N~wUy4AGIu2d zA(m6_C9dk?a(CTmQgG(3uBYIwM>NM(#6XfRrn0tTfeQuJE&$hMRUj%6u69(GxTvDq zs`4@@gNqR}l@aPxQQ49*4=H9rJ+sVJ?Y>lgQCYRiSwq#-SGkyqGEar0##u^Ly1)nH zb~&%39YIEZ2HKYqXkF zrJE78*F{OUOAtw4U;vO{fgw0hU^z7 zXp}`1xm*q*@l=fibw(R6ips3WwWQ4HVrnZLOB`irIYi#!`Pc~fQ+1d z$2T()MvtlE^p+T=x*Uc>rzqREYK1gL{Y5_xaVA((bQq=1OgHoPl{mi=y8`5` zk~CN(SbL4Hu8hzs!P=);jYqy?gY2~DzX{&>Cr}!uPCy_Y~ncD>GaF!N>`!R!e@4ESH5X%R_{=rSVZl=z2 zr$~_dXhK0r(@|^g-&dYh1&912SmK~5pKetf{wU8w7%C2cK)qXV_bLYhe87de#8}MWO zZ~z}2+;wwsu8Jd5rJgPVfm(tfg+MUx5W#?7w`v{-7}Nv?I1^)1Fc~9NEV{7q{=e>K z)Fz!$so&lC^HmrdeCN}zhCi`{*5=3SnxAP11vdnrDhW0PpLPc~2YzbxV)&(~Px77tV1snR_jwYKF!~tuf4rhbme&3&0MyG2+ zi=DEl$x2sc2xBReH}bAErb*L(D^d@>u2hKAEqvc%;K~3)|E&lRPwuMtid7d)Xfhbf zMl+!a!yKII$2R`1n~9V=d)J)B(0uUbHd492;2|V&D?Y|h4YU7#Ygd=M1YbsK2);L9 z2;Ryn%K3M19x%VpDk{W>g}8<`k@d&N)^r5?O_)PRrDkqE*s^Z(r_|xWn>(kiZk`R_ zpGK4Si0L)+5p&p-V2$;^OFWukF3xjGl|L=mckt$cvmN2hEo+(|TzBNU>yB*Rwx;=^ zbw}EX{KW+TbuhU4HcwkaaCYEUj;JdP!sOM2fISH!C6#NtqIUjUM4|nKJpjEE)%-8) z!3I&!2Mh;p9j6#DDOJG%Kb5*U_ylRWyMpUB27eK(+Z22z*nsf878=(r(A4{gre2ob zLk<4SQJ!`uGwp^$x7yciX;j9U?bM@<>a%T_JSQX2pNb%Vs`~s~95D=g=k0I7xtPaF zB27CZ?hT{R+-cJ3UrSKNLAH`hP6)2$FihvU?+K@&BQy{S&OUN0B-4do3H}HQ5v3Am z#nLpN-^$nCl5SR?_4-HnrME!re(zi+$?(aoz&F*bKHpBb(7PWMnP@uLN_aRYisw!= z;@1+ufmMO6h=?*l@*E}5Vo@cG@2aU%hWmEjqKDnP56;k!XhZ3Gm^(be-jVB8@%o^6 z-6mciBG>(tHi$f%A6U~oaov%DkSI&irpbcNP@rG^QgAckSChEaw>TDhGN>TVNOO|p zppjCgBcz_Yd(PcVDjFfeQ$cqA)cy!oz&bYUEHO7d>+Zrrpc%q?mdMilY;fHMa)oWi z)x9xj?yB^keYykU{gi45Mgsl*y_UKDEfR$-pzx?f!5e&dP0;Km;>LAr3AsM#CRhK+ zwz^IG#mwNDr~tSQUR9;|&Xcz!cMjeH&_#_%xI!b63kiLwAKCGL3qXJ)6=z>FUIL$czwlw4P+d`OeVs3|pNw0A4{?@`NjiE4t z#E`+|<8LFYPRCc|V+{~1631_)p&;TaCWobTvYHkp$$xvRLRP|QaGc^G$fbYZ08-+i=Y78o{zMZ?2C7HglEmj|NY`@o;;BKZ+gktF1?xz=J= z+_g3uq>|{wuJ|FA`U&S)AHFFdRa;~ZB9?e7rVQ_`g{NHNS_FaXE2W>f76HVS4;2>= zFm$N8p-BtiB99& zNjKqt`<+!Hoxtrs|EBpbADsJQRmxBQcF*1qc3;o=Uo4LM;;WiEiOxOI^1ac8L+|5d znfU+n=9Q0Hk34GqqWRA=AA0`ypJz2se(=z)2M;~lEV8-v!OiPWlHbtgkDtg7CpQ&s zc8<09##%mTDN8y0yy2G4Xe(mIjDAjw<9GcS8m{U5F&zhGCT*gFyEmG8)3|f_+9$pw zZfJdVMHPb^uuFt*=6*P>3pn2~*zmGHh5V}u%WGKieqUY;7^2jC^nhyevH{&@UFL~0-k4R$i zD=XqVTHfgWNJMPcnh*vLu;nQIM_Th`S;ny)x@&Dl>^ zx6*S@E`H>lms^vb>^Sn(Lm#)szwBGHuXIyuEWhQcSIy72#;gjQdM{4ZO1&}Y4nF;A zE4B3FzW(rcEz$ffbww9?4(__W<+eS0j}2tnTK;2d^MuSTe9Ok4z4`aMvg2Bs?PJG& zyQQPW`>f{rO^z8D(#@d;UpG)K8cOYLXHw?8=oMa^Lov#<%|b6TXf!S5Qz!AA zri+H(PvdhZ@u#MNs$q#X%#V!cJ1c~dp5t0!e%~Xhf~9ZAg!Z1WcDV3?b<-%#7H!&% zrX`V~FT>if)-XLX?Sa(ybz$xA4Pos<<8fw=K|4KhdZp<%rgOR(^Y}I6b0^(5 z=~t6T`pf?wNxfhUYZInFs=H4&8~MqC*7L#Q6WfJ}?dMGOUu}r-A+~W;P zL_+n1P>~LV=(mP^#ajL=I(JK|@!r(oo-ee8_!AQPzR(WsRW#5|dqSP;8uXT!#wbtcQVn-EMtX&+CRxi1sEsF5gLzYZ@? zN(5|Ag0Na-D-q9yxla<&k>VtlE-Y>%3Ektn`ojPa!aJHW93Drp;|kd%Qn_)rA5=Cx z@UwhJCh4YBG%HW>+H4=RONW<0-gg3Y|F-9CYhwX1W# z?F|JwI6=Wg5KbR8c};~S5ug~B1f}PKs6#qiAxvZ@+n&x8VwiX$`Y+Slw9scWvNjr?&djF|2@G}kxzw%_By!s> zEPi)Gheb^JSFH{S#d;$#(&o{x+P0)Z?^3hxO@)$l7U(0Qh8O6E4X;dV)1qAdQ~|#^ z4cg6T&|qk9Z0@#9#2L3{8dQ{VOD0cE4xFbtLobDx{ae%LljPeJHCHx=}Hl1=dDgnkv(}i3Dze55E}veXMjzlmNIitS*;DH`yuqfx8ksl# zao?GVX-OO2V1|rqCL#m@$0nL=8`IqFY@)ZFUB?^Kl9|(ZvW6q1I201@2xM=`Ofyce zj|{#OvTe(3G)1zvW)3delG!!*dItm#Lg8C)N{fW_K<7i)3xU1=M zIa2!j*KOWUt%>I92+fHxB{S##rP$CkY78ptyLn>R95JNPG4ZhD5fl~Ty2ST5^4>w} z`t=;jg#U=s2qQ5u6c~85pqL~$%Nc<3zAhgVZ!cfZuw3)zf9Hnor)TgZ+nWaE5aXz~9> zQ!14f;KZ9oMIOWbut>QZ(_l_v2veyBLCM5v5~wu%p-#}25GSJBUDzG9B60IL!Q3s( z=oV&n3zkEIZ5{_2Xzpm^`V!PaeSt$C%fFY#Kaq|u7Pb_|3k4YenPxQVH@~IS8t6ce zP7gCSxZE^j;~#s{_2G!|>$L2T(@ZAg$7u#FrHP^12CJ=cW9c(#$Y-YniivLewYPYl~kCFv@c zq|xI=Gp9@#Tm;7M%Y^L(3j83=jt}#P^&x@ndrVJ^I?*8dE5m)6c6MipR7r?leO@&A zfUE$$2KppcQYUkoBqSm=zsV$8cV!6?(s`)TyS_DgVoVK>5q3D}EE8u)P6v9zNH4I1 z*>4fDtZIAKFh4FGZwJ}Iq7qs`-uR!oBc)2p@aw6AuMcrC{av8vDr6UoN_#;eYlEdP zWaA6j8T2$$aXcMsDlXOUaGN5?bg4@q5IV#fbObnJW6vlldW`8tD29oTwQuO?8bjZ^ERZO4#RucYi_po8Z^9O=ZK z%tT)=_38W{($M3FyT(xx!zEz&!8)M4W~LG&tBK9;v8kkk4;!+Uk#g)K?AWpNm(6sH z9)qk6tsNmw8Y{dvN$j6LnGC_{g*ak&=rk$n?#W_QT80>9L{xzmoi`LNhN8NlUL8;j z8$@@F5W{9g8&oW#u#chBVF^;g{X`OmL@KR05TaFh^%fKaLb*Sh%ukveN52oU;La?z z%>IxGHgV1vGB_Z81Q`msm1wmvVf`W7k0whPinfdx5`>g&+TO77Q>qTe4&4C)+A(fG zHdvhwjslD5T}aZnO>cIm(ZlGjZn`zv0r4lq?&peXkRB$Ee+z64M%jw?Fa06&;5%0^ z*56N93wOkY0=hxZ^m-B*6KyX#u+l*+UK^TU6rgUzg$WyJgPw^Q;nBK94KwmDpO_&r zjjF>q{cC2DSb|WL&vT?`vMRvOW>R z*S#W~D{hDU=|@LxQbZ?3^!zsC@NYB19g&(F%!9A{ew%SsHpDgyF}NB|^m^Mnf181F z3s4;LhNI$Jal0r!Dl~^eZo~^;BRxq3o`mTlQ^e}oM+(T$R7}#26oo&`HA!$khO;EW z{h1(lkVQf%REQTTi@|%N!K%>`RTzDefgF-5zXrQ)yBVcfeGXVDHej3;PiB6o zWPrVqA-W-D=w|rbRQgK@#U7Vi%Gk%`)-m?J+|8+mXL5``Vlec*NfiCA48!kD#={x* z+}x>*fvq-9W9(n&Zp+|6&F&-VXU!mCK19QYqRmh_5{PBV?N3uIuqH0Mp zxT>q&)yb~P8do(_!PK~!5;rat?#i+ncQqx2*OPE(xyykhj+*MSrIb`8!#LeD+|?lI zsBwWuWdfON;CFHPlz{X^QLz}S%0G&#kU{u22yoM$DOl;8RN7fFy?XN!v!G~rdM-?E9W!bPUs@LZ->SjNyMubD6KSjX`vErZLSw#BH> z+tTmbm%+xHyd)-7L|QL!M_0 zE?S(kNt&~oMkf+%A|??!uZa|PiG36^1j-_+q{#E^&}HuaU6EID;JKQi+MJQ|9-R$kzix<6W-tJs)-eNX+kKWU0=1hLCnW^oehvST0~KiFh;(i497(>I4;k+nZN?D)rDohrnz2b* z+ZAP>EXh6sx@c;bv1Z2^+&OvK%{k(F2D3N2E(dCM8TD>Fnv9EcvPm(p0X`v{zsGFY zNbu))!-DSKh{zsCLLW8L$4S^B`l|?_#^WK)>YNCY96y=ZRuFD#M{8lJgsaQW}1i7>Wv zU6rO{Qy2?X8`_z%O+un2!5(8U&!A)4a>vaOBQYX24?2aMj&R#ew_=1r){Nr{=rd#5 znFP0;!U(ZxuLX&RdaMpEI*97dj<<$NjQG=N=_GHY`a$$u{ zS9C-1j740hG8db`6#2h$CNo*D1NC!YQHLIgjKo(?7~F(eoj9C?5_yI3mN9uG4n5Nw zhQ(sQukuEFGT(bMP;qgFJ`fJ1;~Di<5{^?)k0imyCNwHcIz2r|@LA94ckeOj;+Zp? zkkI)yVV?*LJQ!IECiUD5VJb63Qi4Zx;9&3wBE<-X9R`;N20hVEh9kL{b95(mGU9w2 zYlOJY>t_#`2aGRHGvv)OCeD)7LdfVDnI)X>@y$a2gZ|~D#kic*6CDhuD(JzKvHT|% zdm(1RWI9APQR;Ivd9w^tF_~;MVeKSf_+OC0OZMeA1+;|n! znv2V@rZxCF$LnSvZk@%Bhow+o>h9tNMQ7`*#$o=Vg$#YLiF=8*fzW1gv2D!}^wt#R zym9&+3d@C7_XY$u?RAj&99)3B*jf$SasW6cp15NEr9_mDK5fq;>4*S^+SzOrJ`KBQ z6QpUBeImbOg6+|q?1yt20rsW9N3dofy%0DUHeGO7CJGiyvS4P%2s7AtVJ5gnUS#4Q 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 z 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≫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ʵ?Fx5Q$XMW@jYsb}Hq>ipm^CObNKn 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

    f(PYVPkSPh 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�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�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�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 zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!Cvi-vW^j z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PJ^OcIZF= z00000$p5tw5*#>i;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?v_l6n00000gZ!=U@fAV_3>YwA zz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEj zFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r z3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@ z0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VK zfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5 zV8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM z7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b* z1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd z0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwA zz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEj zFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r z3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@ z0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VK zfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5 zV8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM z7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b* z1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd z0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwA zz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEj zFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r z3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@ z0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VK zfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5 zV8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM z7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b* z1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd z0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwA zz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEj zFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r z3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@ z0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VK zfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5 zV8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM z7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b* z1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd z0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwA zz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEj zFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r z3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@ z0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VK zfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5 zV8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM z7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b* z1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd z0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwA zz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEj zFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r z3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@ z0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VK zfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5 zV8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM z7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b* z1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd z0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwA zz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEj zFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r z3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@ z0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VK zfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5 zV8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM z7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b* z1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd z0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwA fz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7}yU41}qR& literal 0 HcmV?d00001 diff --git a/roms/SHARP_MZ80A_RFS_IMAGE_2.img b/roms/SHARP_MZ80A_RFS_IMAGE_2.img new file mode 100644 index 0000000000000000000000000000000000000000..defdce18d72465d068ddc931a21654023aa80656 GIT binary patch literal 16785408 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 %aDfXS9N68+sY^Fj}+`GZh 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 z zjGman(-q=UXJ!@5D_6x$<9veR(m0>sxasDclCtuU@u{41==f;`%pUdlv=a6iHhwxU zm+*vC&N(7s8h4LONaNu~B~0h#5|x;mky$dgJUVe2FW;ENG+w@=6Q|FZQ&3v25zL}i zWszcotcJMY8OAXoGbfD=oi%x!I(^Fcu#Bm?@Jy3FVs=t|q%ApN)SQ&dqOwvaL}yQ% z7-LUM9Gx>=B?Jd)HF2?$Xf#;NGpwN@Vd}AC#*dpkY3h_&Gc(d7!be5wbqVoFrj+E_ znR9H>QKMrfT$VU-TI%$)?5rGnh!7PXs)~+K2gO8&1& zlf+chWNBK`6hm6_RO9rNndYp_S(fbC=~lZfV@A##tuVtdHY8(;K73B{gs7af*kH3X zE^OxH_)(cj6GvxF8zW?y#;UTD#s%4v#|P)6=%UP%^wE~d@iEpZ38QCB4HZU5j@2Z_ zPZp;q&obxOBBFxT`pe?RC8Zjt%+8vTK32#{)}=^QLt#f-^nM=pHl#5-;sF~@IMIi7x}~a!~*8! z{~sBS2P-ImpD)HxAm)OXU*ARA0-AiGM}%86pQ~anzV!29rXcu^%$2_;MoKHXRO{!- zYvwWWnCfmWYNV@=sJ3%4LJB*o`U4Z4h!I(D44xo<=L`uQ7ZD}IjaH9=BNTr%^x_nR z2U_lbWb1Dq!{;3j-SNAJABx@b$bI*{aQAQTxX9j+&_KTYnf~AA|9^4sKtYKB5g-CY zfCvx)B0vO)01+SpM1Tko0U|&IhyW2F0z`la5CI}U1c(3;AOb{y2oM1xKm>>Y5g-CY zfCvx)B0vO)01+SpM1Tko0U|&IhyW2F0z`la5CI}U1c(3;AOb{y2oM1xKm>>Y5g-CY zfCvx)B0vO)01+SpM1Tko0U|&IhyW2F0z`la5CI}U1c(3;AOb{y2oM1xKm>>Y5g-CY zfCvx)B0vO)01+SpM1Tko0U|&IhyW2F0z`la5CI}U1c(3;AOb{y2oM1xKm>>Y5g-CY zfCvx)B0vO)01+SpM1Tko0U|&IhyW2F0z`la5CI}U1c(3;AOb{y2oM1xKm>>Y5g-CY zfCvx)B0vO)01+SpM1Tko0U|&IhyW2F0z`la5CI}U1c(3;AOb{y2oM1xKm>>Y5g-CY zfCvx)B0vO)01+SpM1Tko0U|&IhyW2F0z`la5CI}U1c(3;AOb{y2oM1xKm>>Y5g-CY zfCvx)B0vO)01+SpM1Tko0U|&I{?8}icwxFj5DF{o8c7h6I<=h|vr3;W4m$h&Zk3n*}v&j^Ps#qwSQpnMV}<=QwQ39SOOP*bark!ylMKX#_2a1 z5qR&ZW_UR(yw^?Zt=@cd zh9^ny-1vrh`t4>_$QHaSH@t2(bf_aLmW&g)$r23KoOSD+@)N1LVEMV!<;F$*PB}77 zdw81sNcj@u9l~y;Y@xdLg_S>I<;3$>+bW;3(|O(hG>!nP2WJW zTI2K&sFUtrEmc#{jzt9QLHU5OFDaRjI4R~O~Y zi>|4ytP-QE@)p(XA8u{lYNy}*mxq;=rU{Dq`!CWI+t**D z4I&gv{h73J!oYjx6?)x!K4a{MFKc>{TJI0tBtv{yNRS4$n>+V3TcDKjLVtG(B z=Z)vn1%V&K`7z?W(UGHb_up!~#VIEUH=*65;pQ^0`L^N#u@b-?}u%@Jo3mvXatTv9eekj**{VBGyzE*DlVh zE)w&~%f;HVilUk{9v&Q1#nLjyGj%vddC~kr?o(Yft-7e7vYMTV=p6E^EAt8q@@i_? zd0EYHjGC&Vg0kYW0;s=2EUv81FDoo8nxA$_?gZ&dKdhS4%7x{HVp*+Nw5X_BEY2%~ zVU=Pz5=a#b7Z$OTy!lrkAAuMJWz_`>E6``nFDR->6>G{Ws*qT9QSHL&`AiRz6^pBj ziiTrU7gd$#6%V_wHzWMV$4-EPrSO zvd(;B#%yu#?w0*e?n)DDx3}<+V%uKvQOGQ=KkOUO{M62U;*%|VckgQvAAduH%MP*a z*?nn(-{c_+Sh!c(V8ye$AKfnQZQH-U?b+S?wu#TTys^tBNNWQ1UzfIA6thKy*zxSn z9Zz21vx56P`rM9v;%xIqmY@ACd(o&yM1K2{AUk$%+m0|RhZ88`VRp3aZ`rwvnXql= zD=ilU$mao`YJ26Co%@~?_wU|?_*KL4OS$*X-8;k=cDFpsxG*N7scql>H^iAwBwY}= zng?!y9)t_TxgZ29wwgCydAx1^E^+rh&NvWG1ep;D^N@h!yFl~eF2ZTi5h+PU7*9)r~RxBR;}MhweA_J){o6{JvNIs zgQIZo9%=@6&2rr}i}jwU@q%FJUB-?lmO1h>N1n1;&8t=AzNcEmo!fT$q3uF3`br{4 z@Z}WdGo!bsyKYZ+Y)@xOJj*1DVEBjw>Err8SteBqhR?W5|FUGyvi{^xmM!d;KTgG` zcj;%aupbtF!W-o4>8{t)5yrdpBe?g$-NW7Yrn~m0`)FM;OiP>LdOgFT&G325ANEMj zaJe%a$r*BTt)m8Zbs4DM z$#f)TUcx0m(-mKX;${in?7t#B{)SD&wQ5>T+uldfBcR`^d20LaS6*q^kJh5gD2tzS&T@?$bSm{hmVLV(e{RRNRI#>YzfCmHw3w~aXU&*B(~KA)ybVOL z_JEFZ@%G(MZTIzcIp|sTZQCxIW=*rsOhPl1kER(y>xS~i+uq2-v%8-}w}#*|W(R_Y z)g_14q4|Ukm;0L8F2ihxVYbghH|#NIwrkF8$C}y6VVB0Jo$aXgdrTdUal>ra4J?M^ zZ?k>4^IIN$wxwks>&iveZTWg}iFXVUb<%d5VH7X9=(^;HI`7g^D7k2qTtpqa06jh1 z_4I5Xcz+&!r8sm1ot?WMWtWb&S6cQxn)-XzdA5k6B*-V`Nf>mNPh-uCR~IRyi(LfE zj~YhTNhZOdWp$-r${woE<5^8)-NI-Xp&hC|u{Kw%4c!8m1rKNR9-C{C&2f)ST6>gf zJ$Td*S0_ys3}by-*9CONLD$$JUDw)N*V>%Y8XgBR$Md}FeR0+dSpuLwOU5I%ekk^n zHrJDgJ&EVzS4RyAJRcK$v2PxVJ(Q0G#GWt|`?$?@{L*|>&v8whl?(5=K1it4LLj?dA`^`Q64#noi`NQn(eY?Uy_f#*{*fjj=kB^ zSe}o2ju;Afc@+7y4wXj%bQKNhx;xu-ceYcC<#7)b-G;?HA6NKd|3rB#M(itw zVjr}-4%#m%kL((WnBR%czml%ENP(b)1AjEX_ODscDMnG8U7o5^^Zp_Lq!&07= zI-fCFL!FMl%R(oatI|W^PjqHWVP@TsnUy)N${eTk0N2~>Hmu;8{Dn{NPZZV)#Qw!l z>^(WIJvouuNg9PX0B^yu2VXW6fP_`DG2sllnzDeglm>gMSJL4T#P2 zRqYp?(#!C>u!JNQ{353X2!CN|Nle9sPEP5chb#Zt?vAVG&~UTy6FXP9EqYgWE361B-Z}!P4SOoSafH+%ANEiFJATuC#ndUcU4J zQsK6wAQCgv$(=5;g?V0>uu}?!+l5#zNo7yI>*0LIo_wh{ko9SZ#FBGzr;Acyo)@Qb z8^2yZbkwkl*VXHMb@jqfd^EEPHS)Tl8hJ9`bu!;6{fYNxZyzyS&tu>4v$3y7>>Gw+ zPb_dvEO1KWcx=NF!%aN)%|9FaCd9sZDE6`f*D}Q3>1J2xJ#NFTJoarr6PtG>{1)%x zD$BEVD^%Y$r26p!*W*xK!&NVI8|u00hM!mcv~MW)ld9{Xx?xE5V1a88s#7m11L?y{ zD`E&j-N1`+G#|u|@({G68!N3w+5fT z<$oO)*vzeABg=JnfAY5&tR^>N%$~flj!h}+`;#}96U21jcD1C)b*RWuQiM~kV(8|3WsyrRa;)@w1Pu?78;V>>==~)9}uwY{m1{2n6^94dBwTI@Jf?C39+58K%B@+@}zG@BhC$zex( z9y?x}A23kw{`o5LpHTc%E#Nmms^PL)T;lq3iDPkzuWuWX=QZ484fA02W^;+lUEtnAcJ8s=?=b?w%iQDT63jvPGNK+%wXe`6mpJ4S`RYPvAeTcm@!ut`)uoPqm-swJ zm=s*F7&*Sb>2WqywlHq0t@Z7Oxl@_URZhWVwgUza-O`#nZjwyM;1 zcd27lspH;K`Q3bWj4EKqx%_xHKYqlI_Ci0J$4gy1N*#}vI{xZcHv;dCg{~V5nFr@S z!m_`Yx{j1O{$A?n_eUC$o!=I^ep?6+C!1(Gv`oHp8XALPOPz!XlG}NYct>6G7Tjjv zjvnp~^l)4FZFX3hE36EiDl4wEGS}y&j%jl^x$--e?6@uiRU2l= zhH4xgpO^9un;VTjnJMS;1-%g5Milfv=DO7L9RHa6Uqobu8a$5$51z-e?#~EsG$Zoj zJ4bf@TWdyC$t&l%o}0%eSxN=c=D4pD0Ayn0g$V%^F%E*w@nXB$fmO6q`MSEkx_m_@wEAA;?Vz;@pniN4&WFNX&2();25;LxZctlSk=j$-uHIc5f`7R*5H z;ge}W+(MqNum8F^b;t+_p15kWxlT0SjdlN1DRTn_Zs5;WQ|K^!$7-(O{IdT_A55<^ zvutz2{GF-aL^P0}^Fb~f>#(zd4=&gahrk^DT@|jG6^^?q0u}JmmINPGS@%`A7F9a- z`2&Xf#x2al$vvDE$OJn*#!rv2Q(o{xDGhLs0iOcilHmWdt!hM{n>?SHm^|NKY#5{h z|F$|5hv6|+S6EqMF$0cIaK|0PCDV^8z{VCs>9CqKvJzn|HKMR#{gQbLP8p<_9ji zD87w#j>rmro_ybMDcw}*x~bA}3)jtRBXC^+W`te5-lD0ZVU3vIcLr*RuS**4ZhhzI zqGnd`o+i+;pW^L!=ZKd5EO&YCe{9*86iRB9>)I+uYSsVLCHNwa7-3w)BVJSGxUq`0 z^*#S((j&U`Jyou~RgOJXj(t^9*MF&jHG>mXu1~8RC#s|pHrws^q6$~#|2q8UI$g;t;!|+nIaConl`c=E^c1@R z=BXtA$m&@Z>e-O3g9}_|7C6oli#B9{()8GKh(HhsB!$E#_@6uR+m`?#DxUzAJ(`I)Hpt@;Ww*8q2c--bCrrl z1dXh9_18EeYXd=tsslViYT+R*@rUO9(vWvjt;<;JNUD`CXWop*@Hpl#JcDf)jAL$L z^_7id{(=m*A;Z3LOiryUr*>$)@2R$Z+ji`H^tt^zAKl%ykL^uh)LyNVJ`FbfjVpbl zPTHyMPkt5cz{drmcj@1t^9|^HmDkLNYh4f5`Uc}pZ1DR(f14)dkO&X~B0vO)01+Sp zM1Tko0U|&IhyW2F0z`la5CI}U1c(3;AOb{y2oM1xKm>>Y5g-CYfCvx)B0vO)01+Sp zM1Tko0U|&IhyW2F0z`la5CI}U1c(3;AOb{y2oM1xKm>>Y5g-CYfCvx)B0vO)01+Sp zM1Tko0U|&IhyW2F0z`la5CI}U1c(3;AOb{y2oM1xKm>>Y5g-CYfCvx)B0vO)01+Sp zM1Tko0U|&IhyW2F0z`la5CI}U1c(3;AOb{y2oM1xKm>>Y5g-CYfCvx)B0vO)01+Sp zM1Tko0U|&IhyW2F0z`la5CI}U1c(3;AOb{y2oM1xKm>>Y5g-CYfCvx)B0vO)01+Sp zM1Tko0U|&IhyW2F0z`la5CI}U1c(3;AOb{y2oM1xKm>>Y5g-CYfCvx)B0vO)01+Sp zM1Tko0U|&IhyW2F0z`la5CJ0a|2qOo^Fd*}^usvEhKUPns-u+&Vz^Y57!%^C(<#|v zs8pM%`&y}kaCxHcGo=y2vP9iUWe0@ZMBV$!8xRT;b?+*@5K0qu9m;tK<%zo2m5C6< zMBOWj9m1qU-Ckum1XH4Jr_ux=HBq-+`6qV(0lhW z_Y^_a>g3mgofjyzPm*H=Xm#e#FN&74bxe7-PWzpnX=Tz`uHPmcP{tip$IEuXp*}dS zq^PE#w7RS)zi7U=sB*rTcX?5{m|vDxKCeg=t>z4~m{(d|G`}W)VReZpB5YYjMNxT0 z-u(GBwbgkwHAUiVvmn+Yl6j`ZY@I$U-C~&`iVLetp|ZNVsGzjANUSNFUnmxp%`YiJ zoD!rY1zypEcB7oBACMiv&fX?ru-6DY5YDfH%K*#t`z+J)M7=yp&p@5uQ=q>G{@pU z`F5giKxrP#)B>|w@D^5j^NmLNfPR2+R|}O9MuDHP;16-7Q35ZCD4~hz6vY4G6&>(L zE*v-O1ntR0d8{C-1Y; zH)`uS)^NHK2jz)^OC3L;2&i`Z5_SJp!Xf-QQRh)i5cVhPjww0_uP5sMu4F=ZI#Ktw zk_%y1qV5f)6v7`8b$?bahwx&e?geEfga;CJ&nVYIcsNn_n6e(i_C(zS%H0s2Ow`?_ z+=KL+ed#OP;kcDG+{Yo@%^L0>ApDj!+`SOiu!g%I!dljFUxTooHQd7xHnE25g0Pac zmSYgEW)1gK2-mWPdltg4Si_A7G|oJ|k_5+EmRuPG-Z-y=u#6@5JOs4K_Z26EQkL9j z5YQ$&lxHB!WXU}ZA)F<5074W??j!^aOD;5!$~AgrG8}m-MG$x@*FfN@+yQ}i0nb4| za_=e~5RhDl(gy*_y{@Psh%A*U5GJuyiXoU-D!+t~$})8)1T*W6c0+(|cPekgfJ{ae z2AqOp7R%-?2r&3F_@weN1Q`6jGRY^rt89f3!VDN2$igzcG7FA83kxCeEZhcx zXWXZfYI`Zt5=}a8tKH;HK_`z)fw3z)kf) z;HGK=s_xb+7C3TM3m|Y+H$&j69)!SEy$pe?azo&%1|V=%8mKxs5vI23l`1%XJQ1co z0O8Y#$Wa%B8Xa48K<9 zLIA_hl+_Tx@T3wQF#i8$=Uu>?s?z?^oi7^G;`SOa1V5TIOT z_y1cvE$V#V_niMZ&pGFL&UtpBd#~%e-t}AWde^(&wRV@$Vm=Zj=4%m1SIAK1SIBD5Wq-%AWlaBt-K}HA%Iq16W1buR$dYxMgYS0C-Dt5H;ZtE<~~AV zG2v=tJv=7nA%!AbJ&1sk$k^)$sELs8MIf2T*!KuP{5}vF1jdl&Y7n5&oGX%{Sx~!J zv!JC>v!DXM^)(1rAY7rzFV`^aWKG`k98FH%3Qhikg-bOH7B^`cn^tIQDpzPK>dEhN z%@WuJOKR&iC_|Mu)@T~6HJTcvHCP)^b~(x}*HkX7&@8U2K)f9Ba!m!wH!i5qSR2YU z<#m;sg(zEIS%GrPH5E0LD7#$KxUf>wR8Hb8nx@9(NL!(4T3)VcT7lo?jmTS}X=rNH z)Yp`w>|)eifp-Pc7HjISLK`*cS3@4-y@aWjD7@D#?C7q7F(Fz;W2;GQ=4fmgiOm{~SxIa*lMt}aVduZrejqt`ptD z#yxoc9Z~w6x13QH&7&1Xyl|cKcjl1SNgqW>usi=mM=oDm1(O2dqIrK}R9>f-r<2Vp z?{@Efv=XuVyd8|vyOWObUa+GO2Gl#vj0`034kpICo%hb8k6&rQJB|+g7@0(W0*>z@ zoR+n@tWJuexM6*UR!^k~%`QEaj;D_5iVk!X&sxvrZgH7svP;bH40Vgud#x_9!Lz|7 zR(b5*Vuk0OF0s<{K)2ZFsqGePJm2gQCwqE4^oP_i`A3H3mM$H|gd3H*aDyR6r+cdV zOGtoDEm;-;MJlC>Xu~@MJta&g_8)~RuBTk3guN0fOVo8^FgQw}vY5K^+Jz+=;WGlH zRWthIC-StV%g6KnA<`VIFxaX_m~7~kn^;ITpd?KPj3j@>nk6MjIiu@27sX|eX3$> z|Mw*}3GUGn`~RmB`=t^`yO$9r0NOd>OM(m;Z*UAI&jF>?$b=+fgomOz$D<%ZD64ys zvH>E6>R&oHptyuQ>)c3xhYB0%Bcll@bCd`W`YwqI${m-ex$f!ykL0ng7rQ6W7st@& z#?xoqm``NmlsvL)qKpwIwr|!13U4syE%%`9zFs0y2#|zsDFH|#vY7rV`udK%+Ufn# z*XQK5p6-dhK8mhH>!f7~RHD)K^oh|G%IccE2a;BbMFmQ?3fmzi^mz=?;;hnp0s49; zs=WxER)y6LXrX6rEEUeSBVCu*v>%ygy}Wh1mGB45w(k+{aUy*A#svsmUPzz5d}DlDb5e}d~} z_lfS(J$qcc@jlW0o$FtC(|dN0Cw;}!^e*I`+Ywx4(8xaonJ|N}a+1ue>kNBaU=iLE` zgQukQt9oziF(Lhzy*Kw*@cyFb`kv2_-_mRADMkEjZ@W}_Y45E)MTq-)?(2ylWmWHQ zdnyp;_pFlWe7vX8{Q~0d-dgwjc>DLPaX*B2;+|hh`6s%UyPrnf*|TvZzSjK*#2tGq zQhe7Q*8L9R-Mt1W?%Gr8{tM!&*k7T zSYKr6;fX1>3F{c|54XZlfIom2vWX<$M~sdtV(~$gNN!9TOa~tdm&3SwE5XHjHVHeE zsz{bH4W^w>3aZisGfKIAo$w<4E!7EX=ST2Z9Riw4Ws_ zzKs>;Uah#EBF{wWsUS}umV-h{11_laFQdyimT>yLOg=fJJU5saR=+fO`K3rm84M}a zFR7?Ol`47oMCigxZs*6&mj)xs&}CIHQF-De)zQf5OP4|yE)8D3tWqmcF7(m?=dRJ8 zE%5V@S@V$xD5$Ji2kYb0(zWN&;)xKdDo=-kq028N4_|(1Pz&n8(}Nezh5nBk*>%AA zk~(x@my>rn-Cn`v+OuV$CcK)WQd3ip#Oq)75_41cTW=Z{4_pBqUtY1Ga^a$?tMr8! zMM_m`OYN=4_ymP}yaA&&!t22wjG`T0^8AMv>`62GfA68|pubd^VRC6N!Qg;3sGyR= zJ6tE6MgO1k?8*$w2*?P?2*?P?2*?P?2*?P?2*?P?2*?P?2*?P?2*?P?2*?P?2*?P? z2*?P?2*?P?2*?P?2*?P?2*?P?2*?P?2*?P?2*?P?2*?P?2*?P?2*?P?2*?P?2*?P? z2*?P?2*?P?2*?P?2*?P?2*?P?2*?P?2*?P?2*?P?2*?P?2*?P?2*?P?2*?P?2*?P? z2*?P?2*?P?2*?P?2*?P?2*?P?2*?P?2*?P?2*?P?2*?P?2*?P?2*?P?2*?P?2*?P? z2*?P?2*?P?2*?P?2*?P?2*?P?2*?P?2*?P?2*?P?2*?P?2*?P?2*?P?2*?P?2*?P? z2*?P?2*?P?2*?P?2*?P?2*?P?2*?P?2*?P?2*?P?2*?P?2*?P?2*?P?2*?P?2*?P? z2*?P?2*?P?2*?P?2*?P?2*?P?2*?P?2*?P?2*?P?2*?P?2*?P?2*?P?2*?P?2*?P? z2*?P?2*?P?2*?P?2*?P?2*?P?2*?P?2*?P?2*?P?2*?P?2*?P?2*?P?2*?P?2*?P? z2*?P?2*?P?2*?P?2*?P?2*?P?2*?P?2*?P?2*?P?2*?P?2*?P?2*?P?2*?P?2*?P? z2*?P?2>d^Tfa@^jnxb&&<6INsTvx}rro_3fiF2J&lK-k$*SkvB4T-Ls5?wDRy8f2v z+Lh=Um*Cp22~n=Z6qlfJElPA1CAz*#aK$Bp3`Gr7s7O&1?P`sormd%_6RwUF#7|!N zH&dOj{xNov;^Rqdj{0bPlKT62t$KF+%6PN-uv99VNAmwK{G6UaQQ?*YflkW}i(NUT zrw);Ld<6G7!nz?m2NDlr5wzJ60J71cw9*x!n%llmLe$X zJddfwG|x^|V2Bi9C+qc!h)TJeeb=bHI23MeqH#(-?Jb3$=3F`{rjO!ZmU9 z(y;!iMrwsbG2IU?d-e4<8k!YMMInhg(ALylLzxQN1tgzNelIU@eqlQ zHzJ{A8TGz-h)4f~ZbhT;i2@zFb<1O`f7vXYiz~UBdaQJr)7>A;wNm~5pm2;5K2jQE zV*B&iwEnToiGW+dQVCAq1mkssI#@uwR&mVMz8x{sQW|_yKFxebz+1WhxV4Cf2)NE)rkSI zP+t|`7sHZ5sfUE>SngW2N-N~VBIva;XS8R$RjkgtjG3q|V}cyu4R9(tJ?MAqGqt)@ zts;>M?{NA8+_jcJ#*k|F#X8t?merJXGn(BSp?dz15mC2GXlY}ExvMFuglZQP8|dT% zvwh-QY!7F(BjOp6`c90{C zp*E_5K+rFBC*V_DAY|G>gaVB;5|F5+vBrW|+R}|0?f0mQ#xM-b%w+9(RbqA)L`JPW z-$}pPNq@dcjA0V8j%;U+bJ_HtLa6R|eSnb=4iQ!Kop zg!p>fSeLhI6BE-LhrZ|FN3l3PL3b{-Gc8@A1gv6%(uYZCX^OH40@qDOttFDtgiqY@m{06Pd$z z#_B86RdKu7G)xY0{^5hMV(b2cu?Od)0LMInr%Ih#9IL&=$MM{^z-9y*pm1b+U;H8Z zyP#YDO^S-z&BlX5Cq|8<9>Fu{wyG%PNCWB5aDR0*1~4qA(;f;qCQ zIG*SOo5P1OA6E8p8hVb9Orcy!6UD}&=)pwu550+f^sy18G(mc6@Jx(lh_b^EiBTK_ z2_4cerM-)K#*OnX+WUH(qy#b}L~En~U|nfkrp?h~tES^3Lqc0k1VYUJN2MK7CFV=| zYmq6wmguV?%;1O+RATmcKQCED;T_1sl-{*JUQK5Ce1N1iK_Q?DxZ>4U zXHfdTQJF+1_=Q+i#=cA+39tI~RI0WzCno`;&681Atf3O>jK8|+7<53mV!Eo|-CtQd zmd)|&p%a3^erG?h?@#QH>G%FA(R(NsuNb^0Fd>XYz(?=D_NH+4Dhh?xd!JqB{oFW# zIg1?BM0ec3?2P<3NDdQ~PxLK0Phms?xLjbkshT z#f`92d*Kq8U)5wYrpyTMNaOV%f2uq8>1mR?f#mA;c}d@oVx}y`3@ZF?8ZT+% zT>ZBPbjJ=TrV*wJA;$V|Khqui3~|8MMw-1OJf`ZjbWyx8KVF!if-+qL5P{(1RfUw% z!6r1VO3zAfgIE<(JOP=M0H(t1cmn02OyK``>1w1dLnSEJXu~r}Zxs6!=i^5krVi;8 zhY-KgFnXn$*$K)&=qbw3Byr#mA{#Z@yw4V5i~-;fftKiG-&iK_6YhFrs-(JPAWeMT~bCv$dE~pivEy3eo!1w zTI2G$DfD6Pgq|DLa}}0rrPAT*R%%;*@=kLy5ja~Q&%u`5IE5@~AQzIz7^683HdXkO zI!I_v5&o?X&}mXI+`5XQXCNm@=u}5pJ0-D3_XVS2adQ%tyy5a$I!4a(ff_t@CZ_qqtLA>?EA3bEPkyUdCC$c;t2 z^f$p9ryx8iG4`p%({pZrkc+XLOjRkeL=DS1*tudKTO@wWP80K4qiDkWQ@oA(o&-jz z-=B~!tV<~VL>QY`JXZKFp`7NqSkz9Zot%O`i{v38E-@1DIr*$~v4PD#Sbj*1pLfW= zI)e)3WL{%z36-2oEo0+z=!yUIW@Bx1T>7RXscrhN5}?Zx z>Pn8MR&{RIUUphL`R|q2D;KF($3Lo?sk$fbuS%oxn-A#HN<0ze+8>NS@}4 z+EbmV!VkHRq*ih2M=Zxvoe{n>s6QXeCSZlp3gHCk&2WNVJI%E9ZRQgC4K2Kvj^P^7 z+fO&W$+Ch!Q8<@aJYkEtm(i8fV>M3_5-7hesaE)|+IL#GE9sLrl7#D%d_$dCgNb`zJOc(H|u#rK>cw3!|r_s7-G&2_eJjRKrjzy~*ZQ zspHLxbnQi_F^T>LCD2LkJVZy8sE_#y5_Uw(CaPW$Hfpq&I_azQv0rg2mqhy$!dWA&L&U{})#(c=FA}cve2egsIsVuQy zmEu=>97qB^cW{g1e6D`X7~r8)oNUe!rX(kU`SXG*c?xq8v3xvL$uJW9?qEg?cb<$E zF_&z@P!i}W5IkZpVka9(weNCIr*1{YHvFPi=U6tm3N*Br0#0|3-WzcGcwm8?_|H|z zpCIELI1G~h#tIe5+_jXjR>Q@R;H}(hgaeVEW>3G8YobU=(I&_5W+q6Dp2{5}jefwS;JJ%Yk7YcagmKc~IRKDv%ZoRs z+m0~IkQ7uS$U=4V2LeSrS4ow1uhjtk$-*{BnUm+{(c#k&Ma%V+zU%Lu;f7#HAO96* z-fe|DOdB_t3KOyR7z^#DI@^29rS|uka{!$xyi{0vAYk+z7_0-}?=csUF$6ig#0O7D ztJ_W2VB>RX%fHx^P7n?^6l+5z*HZyr*Y$V2k1H@*dKDV76|A-uEJM+B`snE)GAXX7 zY{wOCBV-N)Ou++#gchh|noOYp(HjQ>Xe@Gx=j!tNxEB0ggWq4}^M1>(Q*^__03Aqp zZJy;RUR(F7l<8_tSH@gU_by^Dp{31^Eo=-oZ21-C116=xTZOqPY!4om4^u49r(CK1 zBr19rZDSRkmfn;D0WM*v6I3E)%((-D(_=v1aizem9Q9Yr4HSq696TnXYbn*Ru)^9< zIi0GnDPKXI{Ldd}x2wn9dnJ|n#V@bB{)S(zx$&l3ZZ623p3mqF#>rErPGfVdc}q>p z7B>?m8mEd^CnP2%Yf@mPr=^b>n=y{g%xYNCRKIXfAMf$*6+Zg-%cI{0k9{BB=i7ha z6aT?a5A`4Z?DK&yy5{eC?#;J%{`>iVz4PAg7v6Hb|KZDb|K+c*JaO;up1t!=zkTeH zyB^*C^dBGp!+kGxK5);IfBwg7_dmSjpAY@*@2~#;!8cxi=EbKzc-KC+WL@d{m1Pwz z^Cm7Czlyth(&}r9wsaJ3w#}@rnegk@P35y^-DWPneNOGIYb|YeY}i<}wQ)w>Z?0Oj ztulLg`+{qUEgJnHTl4?vNAfTHPnmN1&k(3@SX|e{G%jAbaIS$_u%c;UBeSSs;X*@6 zLvtOosB(s(yt&EBAY%Agwf~<+9vSyTCN;N2vts3Z7<3f1w4t%7xnFFpOjvyZ*@$3Klu%dRKNnBkmKE@LdI-@E#ealg)_#QQWy zkN(#5SDNvE2XQX`}NKllrW^rSa6pB8Sm5UpG%%v!GV+ACp z&ODkHS7R-&WPYp=S7EJd8qGwql8Drg*_0ZPGSv%Lup?)fh{)Lwc;Wm&X|{jT8Qmfv^rsr-lTO zn0tAgcPp#Z?TgP0;sHxKP&`$)V>mOIdubd=)zwodOd|DE=GG(eYe0re7S@dkpmw-e8W+YhYgK{-=L z(W-jkp)qOcM(ugBRo2<#h1bWx+*9lrrc+4*>=Go{;}!LkA5{`Yx$s@7pJf%E9Rugf zIl(kW+Hp&JbZO^}P6{(JwyL+0bZqw3ykN|5EzJlbd@FGfYPg^K2Z?LzsSKd`hm4wV_E4ca04ZFJ0!o=vCFA89O9^`P*sSyAP?0_RTw=a>WQvp2uhN1q0cO;f4Oj=qGk zee@+2h0#@p8_bt7~GA+A?y1Imv*C z&<7AO(gJb6Fma<*O!NnwnO1Svf^fat3Q^z^4{T^Zu+hmM>9Astd&K^xl~e>RlhhLo zCYp@4!dd^&SB0RIp;J&PjPj?w`fQyVlBBj~YLD?hso|$n@&o zlqH-hGm2I0TCs^q$Nu)VXhI$KrZsGw*w|guY`IJeAJuaT@WIuIb*xUT;gVQ2mw<%m ze=d>a#kvsxb(WCU;ph{;H^+%%_ct`7rgsaIAeETFoaY5Pb3AjAHxi05Xbp9^B|5Is z@~2E;W0r8fY>F)t6v{*`Dra*wq=8@3!ih|wx4usZUMDor1|1>7~SJ>q633alSdhPgoiu=@*Wct#bO@TqB_t<%U~2 z68^CpJ85(X0OtYVO>p*b^(c~s-*oMTk=`2VelSyJ~KpENE)wye!Ssew*KYuhOe@P{n;dsodxoQ$r7^;Jp0UM z4GIb$XA2W4<{K0ax04#qo?*{k}O#9ZJ9&xY1;ykExfbR|m)u3zBm0 zwr_jfy7lR**g!DUzJrYk@4)$sTj&}e%-wEJFl@Ky#CS-wET=hsFl9{N{1!V6 z4|t7KSoyvW>cR?Gk=hLG;&?t>H%3q|I+(h;iKFV0HdnX&j8%*qN^lI1E9Cu+0P&u9hfx#!eCy-48VTbBjBIfB@P)^YGKn!Q4_Qn#*+rGu3UzaO?bz zkdQTTuWO?I8D>@>1V>3Iu+g}|8CY*z2XB_}^+e%^iNePdoqX>64%>RG(YCHiVDv%K zIGdO@@k8HlBi))N}gdH z$ahUL8eEfj#624D!>CL@4j1N{HbCUE4y#vYwr9uTCL~}YV z#y4i7lAvTV0YWfAAc})|TF-Q1jCsG%!uWX7r(6q|G)m`4LlB%^dvP2{^d<`W{K&DO zegi`*gZizEa03(IUtnsQYnm6~`Lq<8k0+6(1Q5PsA|dRmi%Okmy50ei0c+qGu3uBo zO~eHe@EJ@X5_gHohJ8FDBY~puf=~czpp%Y=J}aa+#Q-=PXjAikB3Kw9_uesjr_UCf zW=zMRA4}pvOp+cT4wSeK2#C>0gpLn4*6DvX=7+y$Fy>@{F;TENp%e_|4)5qp8xb03 zr|UEWJK)lKJyy~t*Za3~lqId8JDm-6I7h~BNQR#WPSyb(RxjENIrd7!XAX8#2 z8M@ukz1|>v+){F?K#cKhGK8yDX3$KitxQS^w?1SSN+&>VDXv#0IKmtD&uWICg)2TZ z2qGJ<_?sd7m$xJs-Z2RJoN(i7gqKVMZ^%`d(SO5UgYb$$c-tW4)uIOu)*v;(#GwN; zVIK3$b9E^O&U2)`)6!&c)l4Srcn;;Dpe5#(pzEePqE%v11*^;yoEE9f(1Yl<;r=_q zjo<3St=sKm$PY0A!Q8nPSFAxXJPa+A%NVdBarK!H&E0F*`gR}KBl;Y3gFsJF2#0s@ z1n+=B!u!EHgy9>6x5jq@XJE|5SxyxIXaYm-%N?XoDzl+>GWrgg4p(T+;flt|Zgd{K zagsiEe`16d5nh_=I+P>q9FOTIjhX8%eH7l8n*{~}xK!y^vhc%+ra0#Xb^fQ>;F;!DWRXSSX*F?ZqWNji2Bfj0Jj}o zhwz;)Fg(v9`(3uo5@Cg>SwS(S(~{p2tqlHL59vvq^aOoq$e%V@Vis(6-wE9u$);$WZn0U8G#hmzJq~Yytuj0u4CX#+bS*8DnrJhkg*Fpr2~fZs zME9hAx}IjCut(<)kAokaa|Uxw9fsH`SSks>rVg@ZPFyBT&kgVjWejZ~GBjmMRE9Py zVkufnQi`G}R-`C44OwzK+KD{9o@@E_l#8!4lku14aRe7H)KGR}EM}*0BLC(ouBWE- ziNl^(nla{2Ofe#Fcb6F3C(U7FNgiS$qmfK>ER1J|`&_?k?iAd)uQcn}4lK<7kislvLc^!HL15W*m#Zk|7f=7n!_^|wq#H=u-Zl78RR zD_uA;nRKA9tlKpe3%UY|{Nstj5h8)_P4zt5j3FjUKHHUX_hO~5!N+Y^Ng|>0!flY}`C}V!m z73sn|LM2Kw7Tm&IU7?QLdKx=&(AdPzK3O;hybP4O{!)tf4T}Y_M!M*>z8YmqP8T@X zvE+WqT%8a%5$2t~j8!Np*V$?Ma#n$^7lJzGk7RioZN^{S+Gz|o=;o8s`YKkTAp-Ww zG~6_K!esbi8YXKbz*`qASx{_V&{(;kp>jdfa%LXWVy&58Ti)2Tuz_h@SkYu{ki6g+ zxoOj*(hte};{*V73;UCmOeAX-22!{w2PPE8YIMd5dHJ1~PZ(akKPN~O=J2p2i^A@F ztZ@oT32Vsk84IR3s!Z=>VM-huVux5SJ3D8H)u)+Fi%fN!-t^pqqnVe)6 zoMe50OxH&&N4b{g5p{o(b=_lvcm%PwVex!Nm{^|0`1U85{gb3jtz8NzD^u$pLGLjU_fEnySeO!fs5kkprseta&Wwzs#DB zoI;8YOOvLMx-w^68*(}o7-L^fRJmM1wjtk{Lyw8t2ZO*aKw2mq23SyIsLtzq3REiL zr3u19l(5O8T;n^`p$V8nOyN{Hh z?!9-rHDMMXa&0pSpXaEQdLJ=*akC>gH=xCZ!=DT`W)@rlf1I$1cs!nK#+9&;ZXa|p zr%CIyJe&(jxINePP;TFOqza$sL;nzEWcXt)`uA`y&kYj=hOR&~qtbzL#*jis#BqNP zrlE0nE@tVLGO=U-E6t@ItSi`(@cOC_T>=jBceBZv+KYojM4%&sJeT;$pwT!;5I-M; zegd)&G((k2N>x&#P^#EuYfQkD$kI5|s5UBLJM@1gX^Qy@B6LuSW2gi}aR=_^B^XLz z4;o5|o=h-s9SRYz`5kmE%+Z+GSYTrcUV9S^%K)1ka@ST0-;Z~~<_a~fYTwZZMQln+ z;)NO$EOmAldOrSJ?tYcGaNgs2hXTVUJCp=}s zU`G{!!IT#=Ov;1eFc|VWEz|QL_m~^#%HcmYBg{b-?mfH6Qk>@h3>{-GNvici7k)jx&40Owme@fnLk6g58)0P+n=((E#~f`x z5)Zmo5Z;vs5#U$`UQ)~MJT4u9Yzv>q^&)W3o0i@@pDLDYVzd`C!LoOljq?RCAHBoA zz%XolGBrOVOmhm?FVL0rd?6!WxNHJZCb`sdgjjg_;fiy4kS{C?SreHIqX99BG8y9X zx4zvKQAi!;bJO#Y(1{xSy-~M1B#Or@vgGr9#-A?Vzia;4@{NT%KqiOb$^4LE3n+Bv z3m@bg*5-5bEs+8=Wb=0P{3+kD_n-L!%+x~&JAZ8RMSJ;a2ZlB;uv2N|B%fg zz#slaF!#)4SV{W)4pkiN0qrHMWhz~v1|e07ln@}x>iII)P18sG0!PcB!%ZE9u|x_3 z{FU`KZBulq{rs<3hRekHdpoC-sypcsr4a<_5Hv@4M}S|{Lr$eBvL3%k)?;{DM`r&M zFsk!Ah)I&?o=%8=Miz5yhe2yo@10N!{Ju{pvh@kKs?7wqnYs7b$u|A)x@I_m95 z4Rf@d%TlZzKwFpf|D=TXBEr%Lmm#E45CcGG!4+ zF_w$#f|n4EeJf{oRhp$V&%=8Z=t@EW(e`lb>ubW*ciBS@Z13Td3$zg_GnwE>A*?bp{K2eu*z2-(7voMk zI{|KpMWGQ2p-i~isvPVhOpOKP6ww#R+8yH4jak`m#G92iQ#_Afvr1rQ^v&b_!4S%2 zr5kN$?NwQ4?eD@XG}B%c7l-n@nHcT)fR7IZg*3Bk0}ec9u&2!l=+$woOZFnQ%^`K) zv%&mialFXvzr{?)hbs}-U{)6^LTXorg`j~uvn4a^4v)2&Hz$tdhv+z|f^cxg*8T_k z*KF&5sQ=c@{rC4T+tU9)zd31=H_JQ0J3iTCpRu~VAJFDbv$rLjzR(}^gOk(Yjd^yp z@j}1Pi#suDQC*yTP_6ckx#8x#MkH#g%hG0dpLNV6K# zv)%v_fF_14{xTooy~$(nAwlj4YbUfAB#=3_YVXHf&;fJ2X2e)AGkec z;5J2Wf!(3oPK6t`_EHxY&+N9(7`UAR%v<^^RxaybnL)XH(mBG#P&uQ& zcY76jsQ6T=@}7r)216sgzxF1n_W_%6?VA3SIF-5+XJA^# zxc;2}@XgxOLmK9L*Xfy#{%`~S&nrIKp9wHVvvKiLt?`_m*$>Tx?4og66-i+erP{^c zy8b#dvZg<>Iewhi9S}{oXPCW*zaz62De>NoB1$ zR%I^@1lwR#tcOn8h~68$HWNRq%VlkbqL|&~N;3y_ai{^^YJyr^-i$r9AsiryACP)Jp?;>Hoc7>4q42?4Tu6+P3<$MzNazNOYfiDG zY>1|a=>rwdGwVj$4G7PyBZYkCKHVMbT{Fz&iBkmN3IisN849Ww~&N?uOams@SSqL*7HE7s15?bhCJjFlqK63QLuTXX~CR zA{<|wjh>Pm61tKJvdG6djcehoj;8dz`>?yYW>z3dX;l-dgj<6hfc(R?u=DRNa=lgP z#t5wZU&JlY7STlhc{WC=pHzZs79|94d`ID@Y5bA{p>q)3x67GO% z48xs2l9>D>)%(nZ6+dYS=V8lz|1DE-`sN~cFgMr{Zavxob_2n1>tKh}G~pa6pHvI_3)pG`TbTA ztA=EyvoYD(uKU(Xa*G?`4jx+r6R-0Z(XkL2H#+a+?m(UF|8DL&SIe zdWccxb8=%=7{#J>#wBa)w&!)L z>>YL9mC{VvUi{kJT>Fd-YpJsn-+h-29+hWG!xayOSnliL=Flo?u3U^-RNqE&HD-b@h}E z;aIx15)6}lWIjx)pmXW4 zX|uDXqNLn0Rv9wE7M8x%1nKR7W&!ETO^ZlCI?^VAyX@rDd$d~tANJ`%a-4!*;AdRw$9W-T%0PZ6RFsh8eUu@ zbhV%~IYwer;8u?l_TNmag?Gy6SYZie9xo~xiU5lpo3n*^9UHxFe?6Y;F8T%XO6`P` zG|SN!@xv+R_rFrGEUR?KVDLDu#_C3Vw8dqDWl=pHPTuhpyvf})xfi*l*l5^ zTEv*{Ev2qInscS&2_XIz1_!03Jq1oJUR;B=dbnjid`c>v+>VM9y8n*o(0e|=*-zvIhi4&-5SNse?j+KN9sxCB`8IAk1_DmU zQ)Pp@(Np7~5no#3s-=`*B#eAdyk&zn{>L5GCY*ZWAgvKwEL;ik3oHj)itM;>$-yT) z!->Za4S~HOBf`$Xp`cJ&301C+h-dMEZgB>DD8%<9U0i6xiQ7zjBtUx=+wJtX;t&(B zX1^%@oIWX@VdB*6G1@1dDvnc|zoPrZlf}sVwAfGYQnT;T9|^sjc3?vq+*nWshxho`1l&3B^H zLHHYrqIR%f6^Cn?Klr4kjqG`o_>JfJd18`z7IxTWD$0tBDY)!)9~MUmuMqZg2_YBm zZWL~p68yrRq9}i^NSQd+Jcev&jbbv>8ylM#t4^#^Tj}?iRHI)J7iYscw)SGXkA6oq zFgZpnVb;pQAhywNvSG%&cZMX#AX0qTN|Vhq7fbIG+3v1IMvS$X134kh9Q6q0;&2xP z<{##p#ow`3@kLK|xp*JO5NY$-@h0Kk3RDmttH7=&f{#ZCknhe9_`o^l+fOn>gJ6SM z53Q0ovWUgehaf-a%hJ1O2gH5*jKPC; zxG5Fc*X1Ng^2?Kr%A9cZ>ub5WfI z=dYk94TWF$rrZ|*CqaQ)P-TU`g=74Z9G1HtD-RH##inw!zm;sWwt*E~(3DnKbVWtM zYoo$P=1ThPCWq%jIhp?8=PK9A@*r+p!h+1g{S9*W(sf}zd6WKEf$c(k*W=2(RoGZT z#XSWrVYKtCB* z`25isfw3S&F$hj;$o5EaN-3eesf^xj0^p-sUPh$S9O%udVBDosmI&&H*ws;qSDCegy^+QnH+GH8sDpvNkf$B=rZ z6rL%GcyQ*s(@+3|AIik+358pw0meb8ia4R*m=0k^MSBWiERI7X^x1@TeiH$@oriyv z=u~p$@#t0PQuP8~ROztBJ{Q)49Qxc(^)FExSJnu>kWpz9Sx*Oy!n>->s&=wa^I6+_ zW8B13Mhp-mlKde|j?60(_%4}rD;EWv5Ty0SqNl2|FtXZt9ctVEDlc8io~4_D>^M!)w05cTfdzj@)N-QBIt7(~OFj(%vB{t#Jf2mSp% z;mJk)A>r1AA%Zh*Ga}`&Mg0Nom%;w_dT$#u=1A)5Ar!(V@{s`U+vJ|<@bRb|sI7!x z97&~*!%XOtuF7Te{pbo2a;X_Iy>7&(_nDz|sEu{Te)wMceWV1F91Q6asUoSt02)sx zGB(1D_VX1Plsg(hqmm4)1(}jUU2ojo_%80jHN|lW#WBHA8#maG1J1kbNsvpF$2~=% zagh`Cuf56He%9V*%qGNvNmi*)y@)Ucjh22d!l(#gkv>apgWK)ZoBDmkyi%fzeC`{S ze%HN~BT~g<6v@08v7BK~X2OgFj>M|Q5g!K1_M<=(c@`e15H?j3SN>Rz9?aZFPjiQA zx1xsd%A$7sI(gWBDs@hAYP>l%vp4~Vj$3b-4kR(MBEF<<-Jdl-Tz&sl`1mzl_;ZCH zABk64qsw5xb!eVnNT>{wfd*rcDixJ`|5ZfV&#(m|%dkeJ8wJ{Z?^iQA|5eE&LMTkD z4mhEEP%ej!$JOjZn3_@fw53%U(`{+mi}2TURMC&*Zo3LoI*z4HZlUES7y~c?#2oU- zV~#tu-$9ZFLxevfzu^ir&T;|6{Z|py?03CY0sEXtA+DLvH&5HiWD>`6T9xEqj?y<#sy0-E<_?c#jcNIg|c)Cp(t7vrU<D2o+A~Fcx!&G)#fqA1-Ug76?!T69%#Ilysl8U66z+8)wL)GSo&o(WbpL`5@HDfo@EqDF^Bn1`>l^yGO=Bf8A0SFnEOt3P(ORI;hk!| zm9h;LULW50!D4cCVg_!IX%<5kC@vR=FGAm9^Q9~?w+nyvpt@f_`47 zCz}=QRA>(d!QanU)-I{-T2g=g;;O5bEDA4acz#Z8UX9KN_k1H3S| z`cSxHwl>^Yq{Xq1-`y{i*65AeLIpk!5%iQZ@X2KS`G@ZoPiQVLs{v^%esV#OXlrsGt%eM zu)Zso_=PD;ij&rmXWXrkNGDIe!Hw>T_^gBGLtb=a_mjaG18XBs68#*T#da`QJ;g~ijv!g zNVCFQOCmp-JgyTpXsqOh#rR7BH!LPYGD@A$=Ejg=jE>}BL>d4vN!W89!XJtOU|%i< zY!K<%03_7c--k)hC<(J@x3AwAgwhS{Ll%7`Yj+nm-sPB?IQYTe*CC(vgU|@I@B$<5 zfneM~1?d>(5b17lEG{D^m_qm;ewPQE4v&iLpm*aljG%sZ^{fDB4s{C8R7Zvm40HAa zB0fubrn>WhDE+C3Wl$Frna{){n)mu9Fz1NwJ=tlgrMPm}j%MJt34%5Hw`fj6lAxB2 zT6BvD(=;M5x(xCc6$EV!b4+*gj;O>2jY3jQhSr7?;do$U9Lt2$mSNFba2bboblUK!Asd7?%#MaZaVhmb|xKMfL2YgAizA zijG`y)-V?XyBp;Kycx6 z&&{J;eYLI$b)5%3w|rr>d}+0OWwivXmie`~@Sgg~t+nKg>bD0z@3d^giB%Q;?uF+S z>t}}w;)~A=)KU5`tO?#lUBU*dx0e^T*5MCZ9k6OIVYEp7Y~kM8BTwR9Di<{NITFi>|X+SHL@{22~! zoo8#^fGwVWN4VKazwuL|-5csgsQ&vWROi%%U+$h$_dik<=XjJQ7EXH!R z_2+G^O+-U$MzC9)^4V62>Ne2)PY_vac$4-_-nJ-y$NmGq6r?k;(-o8Pt>jj^6L-|m z6cba#W9;b%N%R&go5&@RA;0@L{TPVYS$HvI~Qbo|^gq7J3I;2#4u*JGRTP)J!I_c1wN&Ul2)c zRb(*_z&uHpwstt@GQzZjJ;&qn=ID_;vdhz5t(A2uDmHdB(PUcHl;HMX@h66SewKV{ z)<=9)#jFEht$xBBalEIK`Mj0j` zxqIJaz-?r5fBP;y+~-qP60hU(R-<8fey8Pum6m;_Bi?9di{<=$%N>a z++1Meb!pT496&Nk@?9E;_G7~}C!~KN zdiA?se|C7z1yUGJKU^CkzwlB9(HIFwtu}1B4wv9Ffu*=nA~`$2?ez^qPQs$Z>wuxL zVT4(U$?jh?yCdD3k)|AIi3=Hifsn+sLQM@M48VO}VouK*$Zc%UY0v>AKu{IZG2a-N zCHfd@4jC7CNI@QrqJJoxDRmHL{&fvMYngN#sgE?cE-i%^pt449q^Osilhy&Mwe7Fo9O*jbt%{qKt<(c0kv^A#Fa5~x>r7vHe zZ>(wF**JbPxs*5h?~aKiRF7|9)It3!7^!GG-m99_rp8hgkwRnzO-W!Uh-oQF>^O03 zN-92N&FF?nkWB1?L_AVr+p)^wB3)q<$6BT}q5FyT}@AdMKY~P zxYSOM<Mc{7;5Zu+zGxCzK;V1q@Z3g+XKv#%E*-rX%ba%sNBBN-)CAhQ z*zt~wE$AOZC#tbwS|-lzE^joV0A8>U>`nA3Jjh6qU9gJMie>b9X;5Gm9p1)>cX`q_ zyVh4r#5^&ZMSJ(V)fiFIeGC4|T`J7oRj`jAZ=zofh9s3i)P!y}lvunUN`rjJM<5=` zA|OY~U~S%8;l>C$u_nRGJfqUQtPIz*xkNper00@HH45?f>p6uU*S@$|d<~%|W#aXmTF+_p zT#BAc)pJ@sr_*z3dM;hhjnQ*s^&G9|GW8s*=W_L&Nzdi!x#@atrk4PYwbUF{im!rM^^k5N>1G7ZA$;vePFkcx4wG)G6p@l#TX0d5bUFwfnG5U3@f<@j zuk2u`hR0rdb{DnaxyN35mC~K*5bj5b| z*b=VTI2Xj6EfLo<>as5Pp~f@bX=t4u9X|$B^ONnblj=ttN60-W0BgYn4_;b_}q_Nl&cMyK<2J%ohl6 z@h;<|q<>B%M1PD4JDn)ECo4dRkO=CFmlIV*+9q7((Sxq*B@I>6+_HRBXOZ`VQtSyl zVQ(lX5nrjb3Pa091AB{baXCwC7$r{MrsFpzMbTyyBFl@FT3jhAq)^_~yApPU@DB!^ z#ye&O(rhk%B`Ng!tIE*B;%@F|HzT1!apic)(=dy4*7n^84PD!tkU zHzcdno~BkfNWF2ih9)ZT;hRkd4NX2mRl=%_wX3CbmmnmC;jx1J4 zD*9uhEg`z|i#6Crp*x71F6XR@cG}?5wPPZxsd5f28rZ}{C#Je`XH^L06`dYdn&HtY zJbc@+yUN*i?2KqSLe8}svuH_pDz_tGXJ`$}ysyqNj7CIQ*n%1RKrC8_GN4%xCEPW% zW`Y?fzBT8=@``r)6hC+iw;jcX4o@ivro2Yr^kdx^n)hsG=3B~haSj&;YAohlBegIj z=5rE#Z!AW>wgMH8F${}Fuf?ENV2;dOgx!hQoJ&{HCnsa}l^fIA0}_peZmJe7z_e3H zSUi%B>36qS{lksj?W`G^+=`tmg5%Bx9_vQ6Z%@`~*@#@1v$~>%`$F8zA4ilFKrPZ? z3~4~haE6?WI}6GFcI>y=?v1%qdH=#+Z8Nn&THfgqyt!XiD6KS02Zq!dg}nI(?k+=K z?Co!PbO@hTv?Hp}Chfe|Kp6)B(W1udoGXs?3Ufs*M2LEC_FQp{*ESdR5iV)o^tm|P zvIEA?&!ss29ZyoMX22jH1~d}Cgv@s__ovmllZ|N{olDkxFH|HO_1wqwUiU_FEhikW zZ7}k>D5U(h#WZL_ErhgFX(ggYSBlVfajY&M@t6@LRZK&JWDJ@z7jy~YZe9UKZ_!*D zFZZFgcBZIBOhdFiwKKbSaF}?UDe8^-Wd0w^abye*3&Da~{}3dU^9&Dx7Grf0Ls4J! zV6g9a?T$>C1N2~XpUOt635Gn*x$l@;$>=MvPb%2&T3ysIz6ahIU-36_?wH$JpT4~^ zT|Phk>&o=kD${SNOnI}gx2I1kvq zG7s3|lIDGHo|x=?b6$TUQCrYN?$Pc{=6hh?^7+_yGdu)1$i*@Ici)wY>qqYwR+bxycNr0;rQ)#Cd zs>gFGF`19f+FsefD?q8Qj2~5l#BdYnb!=aM@E_-&Q^|$4aB*Yht%$9XKYcxawj09c zRkpXXC64Lsm03?#&cqC>ku(bnmtrYZgU;043L>49LdzkRBr8HO)TfJ!j*CxLVU~~A zg&R}i;-k4QjO1Oc!7_ofrIqp~kE}{Yr?rJj;j`%_lU{UL?Umt%RLob7O~tt*2COrq z>R@dL4of}Lz{{{yrY5e1i!ze%vB`$xV^g_*P(A2a=OFK>QAQHS<}qSg>C~sfsEL9J1Srn;rC0R5GL4K`&*Fl70B*?Sbf*aE6$v+0RB)?8$9Sespl)mdV1c3Mo1+`T2`WiRF09J%&p zoPl?!)MRa*X|f%1SsW&3v&G>kIbg9no6DUCa%MNXTxQE2m&TK47I zOPtLPdN+$+%(es0nWp`~!UTLua((5+^qQM*vh8yf+Uy8tEB3ftNXX%`kFf7>e_6g| zU%As({DI3=W@>Vlx?QeWB?n3ln2L87mmD(wb;{1{zfO5Sd#CaJ_jmsF^*_2?^{;)} z=RyLJ2bM!D&CrE?*m-RGax9kp{gmL}BE;e@vlNwnlw0m_mK>O2aoF;X=GqU~ZAC~h z`{b0A9O^@^nQ{&~ZToUd4wjkr+4osy?RQQ;;3(c*YO(lCW&51gefE+M@*F02smbFo z?PftOC4k2NDJVJW%FTDY>@0JraifYjgBllYXC+ zqP3SVO$z3*m%nyr+nssUm(uLz*FuAT_fK7&S)FvtyT3d; zX`RzPoknT1a_-OB6y!^3`zT9&QZ6Etn(b9=CnlW$gZwq!+VW#U`cG1aOa5b^(tdqC2bYNEkcTGD&(K|HS zvFHvz#9Y_dT z{%5)$3Z2(3=li#IIX}8}H16KGRW|_*OqGxc()+j4_OTXvCZnM~Kz@UfqbXU-_&&N7 zv(C46>fgVWDu(R&_SXK^wr(<(_jS@%H66~w@K?JoEHku|`zIE7$_POd*}wi1JZP$d zMVT2{WbVYOx4v7kwKb9?espW%`(<|f+sspdKgk^WnD_gl; zHx6z6%&5-xWHj_Kc+CByQ+>Xc4z94_1^-Y3^b8C@VB$&3{hf{zKjA_mv4wU_hcX%S z$;~v)IN3P5dIyrqhcz}}YOR%ynzpnXu;iW29wVn{qZfIk#|RuUER9#trMF!0FamOb z<|2lqz)_fkr8YDO<-|H+ExIWDA=YW})YG84P~>te?XR>L!m)}n0|V;VIj`(&#kfkK zV^60n>6myc)>pQ$l~Uny91D(?13LPcbwo%1f~T#$F%+q}78m{+v=6YH39r|gB+zhnnPL#J}kFuE9bXR$Y;JO>?fQ}t9SSujYGJg+r$krXk zKG|}A>{;igVTuA}qcBHYgMoSszp4<$=sNLpokIK!z0_-0bZF@4{Te!Wk4TSes~h;l zWevK~*08-)y+rf|qEP0d!HkX~E!BUxgFD{hK6*2Y`V2?=Uv%wb9D)N+xTeoEWI3`~SMCf#^Y`hy6gs^2fl(@mF^W#>Z@r51g_hVi!yTy$+X3`$!cr=?4)F;Lk5q?lOl{y3XT5Mx;GoW_fNV#IIx z;YJZhdA#gCcb67BXf?LGg$I7t&OL`69GkTrnzo-Ec3E}dwGCSSg6ezp6)^&VRT=H> z3wKdfROda$r*YotW+phxd+x4&El%R_(d&N3eE|h^*9C~wn^F<;Ced|_#;AGn7u>I* zlS|itw z$w~4JUeVP}z9rw0)1-%-AzzbD(nZdabL1kqK>Bv*NZ)(-{uSRh@O=T_7x8@^-#_BJ zR!2_g$QQW#3+dZV`u*eAoDoL2e{{ zTlx<~K0wxzgXAbVL|Vzm;^dYw*pY;u!=Pw- z_kX~?Z=G&@5)pr`ixOW%)lCCBng5Uu4?4=< z9sC?qgjkNe;;p^D<;GPy}Tm6Jkfz?lF?;6reT{3b!r6sMYrvP*Dh}i?N3j!#izvW97DD zWIT6{jz92mF{C6+_W!6L= zHt53XP*AC>yCS>{1NelOB zO#`34vK=qRP*21b5Nv?M&~qsCP+h?0F+v(!+&dQIkPo^8uXF;=`S2v{*Cg%7W?(ca zC%UMZwRd;6H`A?TSScj(@jBFTbTbGlKRJf3!i~Hk4BIY@sXfBRdxdN7>mC({qa0fd z7zB?qU=I{Mt`mojWp>w!FBrbj3Lh`&xLZMdH({rDg74ZXa`6TJTi^BAv>fNd!N&3(`ndw$V{7;kVty(Ewz z?9M}irUE$}OHiwe5)Aj$jJtj1xW!rzwvj%0prjmneb$2p^WC?1`!0$b_D=Cl@mz5RXe8zGNlcP2+nx8ADureH@luV*TtC^bri_6B^`a3@yj2ur4{;qqn17mTmnDT3J*WE`S_v$|8Y&RMdVOSK0 zCm5%!hN&{+HKwJ@UG3OB=>F%u4c@Ppwj$Q49m}!1q6e1Ljq@O^*r^>bCme%Gw_FdZ z-a&VNXD?~@Q~Q(9(kv+MZNxBL8Xu>YyYQyF@hz=9W*jocCvzj=;zxAS5z#cGL5JgG zs_-yO)1A*4-zmrPME=4kH(A;W3Ed65Iy7=uveB>;|PTtt+SrVZ1D;niZ?SsJ6- zlW2F<`)eL1wGR`?25ptWZe*$ zoUWro9pl2<$OFyyz_=ipZhQ$v?b)zvl+l3Kx}9E?F(^x#ee?+*~Of<_#sQ>vH$ z(!ag49W(bBN5&v(8O9~~GRrLbstgQS(AA?EVSd#*aY84RK1tOs+`YV`U*H(O26Q}z z0(2n&5RDAcASm51iF1YDxgQ~fRLZUH`XvS+aDrVSp>NrsQSv-tL%6f4g8=R|9kE0m zUJbrwqEaW{GoDiz$D=Esjju6@Ug+I2;rpsQxn6t1l6|e^If(IvVt2M%AF=E6q6Tz4g?ZwThM&v1U!BXPU>UJ)J4j$5FL+Q25 zgLT_50z=7cd~j7YEn)qy@}psBcq-|cY7Q&#SFuC$N8oefl(j>Dw7Nz-V!#WvhHR^9 z=OSsRcL?j{(hz&A>7Wh`L;Ig6!mU&^1JB7e5G7rDeSEpUko0Cmx#&U#$}RSBH({-}aBLaGqWFdCd{j6K7}FuV zwyYi8gmTwvUzyUtdygYJB9ZPdF{>9TTJh-^T1zheyP5x!n7c$al^U-eFm z-PJpB2wDhO!jjCj^$0!7Xu52COt+`sQKI_}H3!nXi%vFI_twUEgfEt%4!dSK?oWi{ zbsyB-*IN~XHR|*g7GEsuofv~ObXWDzG{^Mg(y$CMv-em~iVBG-j#7GXsuij$o1Mbi z^a$)?d2fcSM7U=;5=dko>Vpy_vhd%>h;GxoCE; zP_Yeg3e5AXE+Qj)usEn2d(!ZL05-_;2yFcRx(tZ5HnXGDV~HTtG+<1pPp6L;7tj$d zKJ)8Q*w!tq5T{}-Z=z0v#)1;_*{mTxLHM|a`!M5kE+k{Uu&0J=tU_a0*ioZ9%e~z= zl5Vey7Mg2DqRoEHu!1{{d+s;QvN`jG2Wt$OveOIj8!H+jWz!eZyS_{x#(1k6g}pVx z2Q}h$eh0J>vzw|{WSpkb^AO(siyAP%_i67hYQ)X-(xh7{{u2|^PZ%B**BEZXnB282 z6{i9*RW~AX8ssyK^?uGDr9xBC=!H_%D+J?8Y_Eo1U*ST1#_=lS1>7?{0<=Uv0*T^3 zb1z;Yrr@NjahV4OLwl1m(2|6F?v;^(bEOw?HP>LB#<#-G8t>v2cxi9zoeLDJT3Y3` zQ+S-`*S{g97{}J7>4rS1>&B=?Y;tY5)^LG4S}mS5d^fedeTk(8f$WiDCHdZ%gp2WHh9B+G1i$YypWahMR za@nwTOb%Oky7$4(N8;+_<&=UDIO40y7)l4&wT*ShD$7e)JMMfu`YXF?jZxe`jl*yN z8Tz8iWmC8|I=V|=AXA?{))h-?G45B07sy_ZY{ff{zgY(Pey?@JEFzU0E3_Lj&7D&`lpp;*7#Dv0-XwjdsbmPT?0iEmfB z7p_EJMMXr0haM=ejmYM@Be5d{)V7GrU(Rar_{Czzpuqn?sWf8?aH1Z_y~Wl4ch;MEzcdo!P+A8s8Q|6dp>j& zcP^g3vH%@*)}P-moPjSc_*Z5s=o%}-ar9A>_H*BtZ{zV+u{8djSGH~BxBdRlX&e1( z9qG&tUDUI}gN6+ZuEIwJnd@IM^<*L5*5+5hGzrf5#; zWP^b>+nj}bj>&1uVRnZz(PWmxbqN+8k!SoJw|;tqa>({c$3==l@zv$sA<7YP9g0SN&K0SN&K0SN&K0SN&K z0SN&K0SN&K0SN&K0SN&K0SN&K0SN&K0SN&K0SN&K0SN&K0SN&K0SN&K0SN&K0SN&K z0SN&K0SN&K0SN&K0SN&K0SN&K0SN&K0SN&K0SN&K0SN&K0SN&K0SN&K0SN&K0SN&K z0SN&K0SN&K0SN&K0SN&K0SN&K0SN&K0SN&K0SN&K0SN&K0SN&K0SN&K0SN&K0SN&K z0SN&K0SN&K0SN&K0SN&K0SN&K0SN&K0SN&K0SN&K0SN&K0SN&K0SN&K0SN&K0SN&K z0SN&K0SN&K0SN&K0SN&K0SN&Kfj;-11#VIyJX72w7)iIMkNp4id2`7Rf8Gj;^BxjU zhLC7{3A@%=IU*e}oX{oX@1Y+k#5-6m4^RNdOg z>mGP~bxFU^|Lr$4ZSbRdyzW^N`pD`{gE;=jLgSgZuyvbPZzS=nH*eWMo>>3T>i<~G zKmaA=sWz@%x0xu{ZQ8tX%Y**p5BUG5H)?-!)mzqXCY#rjnDy({ZeG9fKb6Axl@F6= z*KZ-K*FC!aS+e<&wVTL>jqBHJtb1Y{dHRuO2Su)1znQ=~A0q1?ewaLr$kuP!NLD|y zdG)$YYoEFTnoa8;-u!gk#?|D(y3KWuuV1reb=sgPb{8m>_x#Z3hfD3%eU@JNxjN(j zfV$K#Bk*&Dz@PBGg8%<1!qpRfCG|=QP3G09{|*3GX7AGfyRd&J!vB!xhn2b1=Tg@X zNAkbtTMG2)AN~Bh(tlXLL7%IY;2-y;Ap+Gw%t-wWcrJuSgvG}bWo-P=xM86~l|y3x zttU!wm7m^7#MmnKE=eSrj@XddRRiVqHY=WZtkImEY5AH$Ora zg)Abd02hr|gi4L_MTZR!i>7RwpWU#UEYjcx)Uk`m9r7@RY*_Tr(<=92~V}B zuBe!ULA}a7N1j++hevm4ge*23tp%l=KKR`uFWW$!t{gz19uVdmLSYNmCp({1{Dauf0^r6h?A6&m~^V)S= zu4oTjDdXLr=mT9D;!?^_1pmqY#MGY|3vIxl#_}-E=Q3g%aP|0 z_O~#Hn4S3U$lsOkBC%_g3YknsWHqNr24^AY z(dW7%BcqgO&h(res*0eU0l7Q^{}Hm#&@g4BJR~$s5gH=DYMKW77M67$mX`pE;o zEe8%BYHV`v_IQ0CwjTcYNb{bL_6z$y+Rqp~UP62y`gvOq6Y}v9|9$fwLINyA*f)3| zkb3dr>2u$GCtf^t@w@Ibr%#{x?z?lRd(Qi>-*%t*{(De*F7}=3`7ZP^S(02GMuc>d zaCXF5GBr2PnQF7!Emo7A&n+=qruOw{uAi3S)`CNwD@*8XzgN3db6r1Wb%4^F5!Tn6 z5s7aoIeUG#r-7GE>8&EY9qsC*kc9fPW5ozvX!v!W-YR)-Mg-~2P?B%Lj`Y^bJw|eN zOm9aUHV9MZ(Z5DGlKu9d3L0$WeLfMm>t=+;LC%vBk3Q#%ZS(?L4Vs8#F8)Y8%x$4*f5Vw zC*-R|!z+3fW>bc8S+v<+PS(bm?UiIBXSU~(4@aBrS>%Z^W_u3Vt2f&-$u@)8j;c7r zY#$>dQ_S`v@@S6PUQFJ}H`@!zL&au$0jVo9+ihg+9J4*2Ji5Saw-R!jdAe1#>gVR^ z*{a&5W=FoNuG;J{s$8{Zr%m<1LuThxRo$cJvI5lu8_Xz14?Sg`S)_73Z=RW}s{NgL zRifV=Y{YYH5mvOHh$?%cwLJ$+V0zsEE;W9i*8p*G*87 z0t>HKkx~mkQAK80G>|{nqM4*3i!9m{Lhi6=f!o~{Z7L!6S+og+EVpPA32|A*K-$BW zF^KnZ%k|?_WTWN!8&%{P%UH<&jb&_>io9&em`05{!?c!cWAwKf{jZkPjJ2f6lA1}# zUP~&Z?X#q62{~j*MO?=$sfd@5$tHH4wiZ7?fP8BiXP}gE;1MmrmdNvfEs4yln5!bH zym@7+ZNu~C6{^TJdGm5qBr$Iu^wH(bgFb0_mE|fjF|X3DB3XHrKxtZDB{a;-t1MIP zw&%?+QxQiV@@31cJmd(e%v%V~Tk?Q^AoeBHm;93X)-c}(f_&HIQ3N*UQ3QUKM-g}- zk0S6&Udkjw-pETa67p7F3M}fKyp+j=?95BaA!K)6N)aL6yp&mWWPe@?5ICHdGLn!_ z@>0R`&%Ct6$HOUN9n zsgRHbR#Q3b-)fpq$j_}N$X{wT!3L_WCg@pfHNg@dvYL>JN3AAkwZUqdM#xiE(^Nv9 zx0;aN-&su<0{Vm1T%;m@vYKb8$abrFzKZOynvr+AtmauNvd3y(q#_?$&A{q_)ePK@ zSj}TqNq#;p8^!swY?S5GvN0#0 zmW>7Zv~1j#Ps_&7^J&>wnor9{bv`W{wfVGcJd{t%#-sVPY;4GahTp#TFy9ZE?*Zm}g!z7&KUi}9m474h=2ZTTEZ1p% zU(8R1{vozh=o4W}g@%NrLg%42CvYEWbHdJeo3nzDu{J02FU96WjuPUWMo6Y@0`k&m zn*ce4Ot|qeQedNbP->%jFvCXkV6Khk!6F;YgF9?A5AL?nJh;zB^I*A+=7Gyb^Wb6I z%wj?wx6NEg$VS^tSo1TsnX{W>Ct29j zEbMs}mK0Lm6orG@#uZYnxI(Jc=t8R1m_n+RzL08VVEk_f@#hpSylxB0FI)(miwhUd ze7?A>aM8@?DdwOoU}0}#VSiq@5LzuQT!^~0x^N+otSwxKQt(jWLgeP7OwI;KP?4t! z7oxO3U$_vt@Vml=u=zg}E~NHfxbS+|f8oMWTc~_+n$W;Ftjs*4%RC&KdFpUTrr~g0 z=9h<6nPU$}W?pkR{GDqKkIGaXR%AvT9*M8q@S%cmLlrVkrHJFA_k{0J?fE!8R8g(j zZp!G>sxBxZ+Hl)ed#I@+cw&S}da z32hm&`E3~?Tw6wHrAHHKs;#SP(?>$e_P##d$O*}&6XEG`roCCoCXL?oC*LYvs8QxI zhIovjo+w}O>Za=X~ zl=IVD#n^L=L)xWIWi|evo7Zt6K(NQ*mwryiB6`b7K&AA0WvPh zxPX{A*5qM+$sWunrH?mJS^8^CS}i1K6R$BLiN;}XMIbHs)^6XbQ;B`L=ybhFlSFOf z!{v4eog&`cbWgD-E6D^C+p3dkYX?&gR%R_or>D7Ip&GQ6;e;k6(lnHsi%b_UhUmDh zd|0)pG<*#MX{&Ga_?GfLzJIyDFZSKVf9?A=E6y|@-kFvaVi+&?o##x;PYe-deAo&Y z)}(4NCUeXRF;tiAr@r?d{|?d#0}ihihh)CN#pB2DdoFqf^5Zug0)_BTQ!5PDDSdb8 zB8)Qkm&L;362u}ZyvK{h5M10J6*sqLjWliD-B8k|k27gfa%6<~#fHR&p9r7tTdoTk z9j2T(oFvqq7@||xo;alo)pE+N#cj2}@4B4}qd$vV8a>mmBP9v~_%&HMU2pD+@a6Ku zd~Wn3+G>?MbYWfQ9eh~CzuYCBZZOxUk2I-^b4G6UZY>r2_6G3mt^F(TR7BJVQ1k;> z535Gm1B_dB=fzOpOQm86ELS&XtM{c+q^57pHx;FetHrQP7`Ql#?qCd+<&tb zKhPeZtd-;SHvQWJ-LXut?EYPpFG~(S>lc?Jqmt*Ko%;mv$*r<5Hgyy>4%!yX8hil zm?K;)-MbhUU0g)<`-UMA?;q)>@TViHeI{Kai!O*Cn4gp0`uQ4pg7)R`;Rta*Ti;1Obv zD}4gWIV#JlFpsa=yV%iXerJER=bamsoyS5X$}gBOj}>&@f~zO>!9uxaMPNII*W6BOLbko<8HSD z@u(w6g1egDT^1uAQ7p!r{4r)AMw9PmKB*T~6XINcVtrfHcEp-_X{IqE{t`XhhIJ@~z_Knl#fyJ#VVj zYO9i=r#q%BE8Vn}kEf47qf3{JB&MgDjD7BXRI(`BD`?8Wj~q=-b{{Sqzyk1T(oMcS z@Y|W0!-q5YvTD1`+MUOAWxNvZ#a>+*C#zy&nsjAI6adRA%MttFLV71n0%E>Zdo`)1 zNghOl#K5Heit4DMlOUWb38W?ggyb2?m0ixU>=$rTXlSN%Yszvm2ucji4n&|sa%l9{ zy%Q%+^x%t+AB_+^x}(KWx(G2*CqE);8H21zoPKnM^x&<#0ano?-#Yz%IdgdM}5m*lxq+a4&N+Y1Vk*`lgoXHk_vf$D&js7)%*y`t&0-lphr9(39|8f zstCxtcm>2oaP{Ies;h4~Kf*6bzHAEj`+g}#4fpJFaf2>yfRI6Tf3AoNGt#@G!ed1q zb|iohcXg7lf`}Y>1XNxO4IGBOCayrg-8j6@7Od;DJq7XvDNwjH?%8=u(Cg$d9RsM$@@7#Zf!FJ>Y-ga~sUwlkKirtEk(vL#q zrOhE>WQ2WpMtQ-3?T&)|ZI0aiuQ*E%{K4rsFwEijaD>CQufS>cd`B#v3&e8d*)oz? zTC%^o%w*m@6&H7SnX|lUo70)&o?K=s-u;HtR_tyqGh5t8%W`aoW;&dfLr#aoa!GCpTE zpNp|5Lh?w4vxpS)4vW?1EVDRxGZ50##1Qr~1la>=F{HGlR7pcB=?w^xN{6K^CKA7vVzY9B@}|_Q zd}1PR@=Mdxk$Efc%(vy0*@|&v$t|;$6!UuhVLr10E&iEnI_cQ?G?Fl%Hl($;Erzot zp{4tH@A0;dj@IUm9>y?&B(#k0%N52i6wEghVcuNLKNktFE)c5bxxc~yjj=4?n2e6cvwz{eN;KhV1s@^2Ss^?%ms8+^TMQd2OtMd8N~3<_ zPCh(?PeyL`5JI1JZc7D?Eqt~=HgTqr@FBjwbe)NYQOT5v6|*(J3Fv~yQbve4{+u}Z z)L}!FhX#yg0dJlw>~iW8>C>4$!q9bzl?j=1>BBg2LG@OCxKmg&H!)%Mbow)Vwr2Qj zp?(oJ8dYqB<{B!2i}RJ@Uc>GcnnL=EN4E8(izZqzacebx(W^v^W0@a)Q0|H)h=i(v z=dv{`)wE&jF3pXz(Xv(uFU`}WQ^xjoieY3$ho(A&<2oojx>zop-Jlow4BfS5%>+& z4QZ<+Z8KzO&y7HPj%#m2-q8F2mV8J%o=py;tQ|B@M{}RPVs?gAcywMyJ}&N+^JIon z^oN_CnHSUa#5_-PwlIAZKpM8t*;j~Fel(q7A7I4K*(pKg{#5M^Tw z|J6yE>bPKENGKFr<_i}qp=##0gmj~?iA{un30G=%Y`BXU`ul zhixoRpE{JO?wb`6zQhrm&VMw2C?|VR^&KcrgOsC_J?I#AP^z;C# zwvNQvv)xZEl*N)-8gukAj9m0I%f>)i8uyo|ux8J0mKh8xF^0d;s5;oz4rRJMfQYqK zi$mHfLxtNGw9Sw!&>_>^pjME!gf>QA@h%@K=inVJ+H_{K-$_4IC3xL*&0mh4{TVbh8jUH4N6|*sM67>8cB=Ar(x;39JNY7Ly z-l(ciU!p$v`FAJ>q+&X9SktyZ7)5qg@v`~`ifxZ*$Q&wW8RUmmT&!ryjG!Zbho^BN zMtxPc`^+K&9#jv_9Vnl&bA7ZbZg2E-H!DbqveCVBzU<3Twd{z79LZSHwT(IUYsmf# z(zVTFOi(NLYa;f`t|QbfQxavTvNOA>j6SXv5k?*S)YYWQ_la+(@A>QmRS$?Vjpv|R z-cOtYqH&nV_sQ_kSb6P9S(P@X>G_5JTpHH&tA+091+C4B$a>ecO$`el*b~{<;-Lk5 zzl3mJ@}#e4T6F}G>hBB5zvgZHa>Ctc|2!rEx@*uM}Z#C?9AXl@$22y*>2 zcitjR%4}IU>3XxNlm=_NXZwJsKL917n@)q~HO*%{zU{xE&LY$r)YrHDQ#k4Hh^(oi zata=$?utrk&2P$-vM|!Ad2&(LHn=@(9dn3GPMcJ#*>WY9=5<?qp%H|~{B_t&!wIIF(HQA4NAi9ByHY$X%X>bXDR*F7dzDK<%wY8(G zFhtc=Ay?^%s-s)4PS>@NWi(=VFA>WEU0tIwjMao$Lm36TGjF z6Jz<)?$DGRhs9JF<18yFsYK+O@FwN#I4o8WD*Tk$$U#j-3 zOut9%=~*ev8`mw$_SWFn1HgKqt*|d@F(qg3^*e5-e#RL0ym1yIk9*bk9{2fiWbo76 zT2j+sr_V)+^-a6I(cV1_k~(UmTkzk z%8h)OF5>*%X$Zi5*G}12o*1&n0H^S~w2sDx_O6_cP8urGF92bWxw8$P=GIOaRZAmo z1O@#SLv(R9L+}xfg+j*~|If-n%1S?lCeoiQF_j+*PT^!)Cuj{_4o`r7+g@>j?po1s z{$!e%_3g>D9&pjvf0s6#bRRa%Pv8#wl`(!Gd=kS2Nn{~M3Eziip6u~Qr&a~Rofv{} zM_33-dp3>pi6I7g`fKAnJz1}fYv5zM#Tc)GG?!R~JY}P&yS2wigiYhR5B3>d2SuX{ z_w@(G7SGJTizi}s?B&k2juc~b3g{Nk^|W}%_){vFhMP?2&@a(t#AqVaiA!|tSx*=m zydM}kTH#jbt7;L)7vqFC3|hXsRUM%ghLILQL0a0~9~it{moI%XGvzzDn7s>VZZOts(nCs_$s- zQA7+UwGF&{@>DKX%+)E?FI*1=+!Nv^`$lS29n0I6k~VF3WBU{_!kax_>5dpLJdv&; z6Vz{}Q$>MwC{d443)jhyjT(<6D?*c0y&a9&iZFW7b0 zczS<;USXc1%zI|M7~=hWycp`86EDh}MvYfj#}7oHiBqe)RWcQ1xuenv$xY%*bFI9+ z#AN1kO-^T8jM-0dnr2u66sjX3GNL;8S=Y9MpF;r@2Q`^6K=Eq@wnVvFLzIajxZaeg zP-{xl)#N6bfhw*c!Wat1V5M-?I}Lvmlv5KGjp^^7K_-kyO?Gu{`+K{apj_NQ1U=C! z)L*Sst5=$c*;HmJE;bceU<)lw)!5Q+eI^)V#c; z7(zm0Rhcz=#G2uzAXprxqL`c@P^g;#P#BemXoeG%yw6fKi-?e95V*9me4CRmb(C1a z=HwlgB9pC{FUtp(C8e`@hs~N_#+T&rJQ)a)lVjzbC3$5tO%4lhvfKGGTam??#sa{| zQ}}!vHTIOj5OzzknfW*@sSZnSiG#X$)Z94^k!4S?;ORg=?mJ9K-`MeTG zj?HYg6sPf*e~4yjARW&9l5)G5x0Ugh82~BIWP@TQ%urHzbGd~&OvSU2j{Xq2Hb-uG z5gsVTxfW*%@3a+_A~J`itlUvdzeXBbp^tD-AF| zoJt>TWi^8NPWoT`^8pqa5$2>Mu7E#DTv?-$lf+dun$xnxx*Cm)v?j~K ziQ0W1+72z9nxYV4p21IzB=6s=SPv%czl;QD0+1baVyRZ*{BM(wJ2qNb~GeT@3-^Tmb=Vqkp6z^T4o>p`PfhWYA|=@ zL>(WT6u)voRECw`!h)#&9Ax<#L`@o$3my9I^_T1`tmX=j{>N&>C>fs>jSB%Q);UMY>MrHMI5cM-gW%Y0n z^%SE<(b_qP`YO{Q`Z8)gqsClDeTPwFFQYax>X6H*A26!wGU_^3dexUv>liieGU{?h zjlYa~Kcf!4jGDsIHtaI$7RJkRGnT051#dTDEax;kf3Zt^z z45GF&xhyw>s8Ni{ax;iJlu=o322r~hmE~p-^#(>|xfw*AJD8h6)ESJ*ax;jU$EYkf zgQ%;RRkPd-qRwZ$Xt6xWp4OXc^egC-K}Hf<(3H_XIpBCQ;1fwYQRTPLM$#AA-oIzN zzsRN!B|Pkvgf@OcKcju%&U=Nz1@ytcrABj#BtFd^Sx9TbURqoH81HAYL0;tSkMiyh8RVt4Y(VaJ_YJ7J>_=3+ z3fm8=dR5*ZQ1z<3L8?N_u8ODeM1B@eox_e+!AvF^TJ@de==w&Z1$B>=FK+inewBD^EX@MfCUA zV0-}sR9u>Y=Sv%2+4j`Spsoz2+FyBXBWSDqG%5gM;sRoJZr(*S(bS=dVhwjL&AIWn zPrcHxjW7On8i5fq`A7wAV82+SSr?l4QjPH0yi1zwcTV$`O>^Hl?J`OHB_Bee_&qcA zt?c?LyS~m~`6IipXI9D@R%k-_Qd$zjpEY*>#^{YT`u77+C;2NRzqP+qlhEn+@i!?D&w%NH-c|88px+4e-)HE5Kh697 zG~w+6;prk8gS$qvKO7mx%4#}m#nDpPsb5XY>n#I>mc(YJ#RoNdH)J+L<_D1JW-?cq zysJ$57g>Mj6_fWBllybipmLhh{xXJ=-fZ$-Gt1o^>^(im`*Y^~xyj#hLTgCLfP*Ub z!P-KZLuDv)u4F14WJ+U9X*mO}=mAMVOisq+%mEVq2JisWF9#)gbG_9$Zf`E^5PC!s zz|GKt>7mVw+HGZxzK#~=l{Etu+8a6EH*(y2a$u+Zb>J#L7y5AsQda|8zck1{a=ib@ zad+fE4C^5NPs)dW(?I;FkeMT>+I8f5f0ylc|CL_RPJj`Tn$@Sint8evdHvro=x!&Ws z?r(CDvjZJH{hFG@k8AX6YZ8w#<^EnXXj=M@shUB$&}tuQFfyzsiCNEp_#Cr0-|WsY z)AZKYfUB$GD75-JwECE7B{O?v%(uUnsjt6G!_{VLd#lav_G$h)gBILYR(#uNm!B1y zfe8O*_Ws%I{#zhI8ZE5AUrzR!z5C4W1gk$x+@QG`E#5E8Zlh%|m6{s@B?Q7>9As2k zypt?$mE}s~T{_4FX<#y1Xb%llUcZj&L5|}V?@WvPcyN6E1s3rIiE>%I`z&tP4=@HP z_NvAEvBmwW<;wCIB<*7+?PIDKv_kxYHDGH1$f1Ku*5!FGTHJMcNGnaoyFoTEP`zA= zPFkL~I?tV!_oGTU^SpI=ZYLFcS@{prw3;zh_s882Vf>(W30Ci~@{pG_gZ~ZHJbB)D ztK0MAs-4X9CRp7ke_XYAD`kpj5i`ALV=B$+)mhzXjQGa@l>DHw7pz{Z)qTMlu)`Tv z?+mMZg;oE@%Pbvyizy$?7yt9@#TxyqmoaU&dM{Yro2f9sA2JxrAFbX$THS9mCAQYM zKM8Pz4sv{A^?qcf9$Wn~Q7dk(@jHUJphXYU0?@u%i%(A^%AJ+SksL?cQ0q? z46X+Kt*!m&Qr|mRnDsvz#NU+l2l)r8r*>3N$5B1~gH=zr=6i4LPqWwNjkURBZGPlg zD;xR4vOzuw@?x8JqRqY7rhk0^6d@A@Hw=Kjj6Uw;N9O-~21>6p$2Y> zb!&mQwZN?@@~7=hK;iH747mM0s4Ivecq9afZ&Jaf{v_bp_tId#rWbn43*G63dd5<6 zH5P-NvKZ_X{Z58{7eoJ>pc+=+d08%8htm5{yP?ZPmR7ikokCq(-ufj<};tGWPUgF`40N@K%Z`= z&xu0s34iMKOrJMv7!>-y1Z4Z0wf6qv zr@{gT!o6bm{>tut#U5zZvnDWki3jQzA7$ z^d0)2TLb+I4|MnFSq0@63){YTz}+wQGNNBBBL*pS;c5z@JOyj%4|x_u56!}}HTnl@ z62E6zc%eprHUM+~P;rpkUpi$03{i5g@KX)qYc2MkFLGOp2bjJJv`Wzgzb6HmL#sbp z{F(OslE6e`NtXGi16a+2Y^3GpAWcO-AGGsp6FnH?v&G(@7rUP={cS{qg~T1G5SP?%<5U z%ml!vdDovEfr*0wcQ7|51TN#gbZ&xmTG_L3bxp7a;PPj2zrjJxwGMAdse7$sAfmqn zjEW823x|JLf24;=8wd%NLGYVke=_=+G)qDU>IubkZ&RsTF?}Fl|Cq@HbXqh+s4@3< zE-_E`|FQEfU`-wA|M-MJ2q2Jf(SV>QiLD_B22_j)Q4ok1F3Lqzs?b`sZry5Yx1c5w z>UMkC?Y6b8wHLRwRa<*Q*KK1jTIg9TIrOxmMa9;wSsSZOqf$$~)$o63PHrH&yWeM@ z=eN)EpQE00=AC!mdEd`F^PYF+oCu3cp(TLhF^rT|f^B_?je%45l3CouS!~HH zc%nle*hxTn4O99K$Lqvk*3+}NhFR?C8?gp1-+>jR0;?AVuX|vk2DsRZG-wk*^}aD8 zFD%$~VKyc+i(eu8gFjKOd5gtuJ$ z>$3+OUI7X4u?p_pa`sq-PjDZj|IfqgUwZw#ACQa+E~A27TyX;+1BMDbQM@RARlzN; zV88O~?R8;aXL+sZ>sYS~1LLv~fUlpqeO?9L2+)9)z@93uw;~XAuL?x5KtMf`eaJ)E zJNx_2QC~&CWBS=jZgD01Y^ATYx0}9}dQl<4g8lG64;D^e2Ocd*h77NaeUW5fSKn~> z53k}XtJvXHH}Lkr!~a9l=s#EA7nuIjX#-ZfYA!>Pb`_GeizG?gUczlJA?d?4k^%OT z^g(3y0pty(+H3vt(7@%GR}pUryN>zhOSAv1dEheb8W_|I28qmJs%ylc(^cH*Dq@h> z4BL;Y5Hrq=Ld`-Nc3n?mGfa_ybe1IZo+RsEGy712aVk8O#Ag3HTVW+BHoIy<%&r-s zprY6eGyT{Hv$+pu+q7Y39N_P&=I*Ly=T<9Ul{VnMW7NbMu~ zDGYAF>1Z?A2K29u`?KBL0c1IS(l3Jab+%dWv&MbId1291j7)}$~{oy0C{Ib)D_jzy5 zhTn5K@#~<0*vOE+POZR@(mNh!}yIi!)rLz1cKj0vvxcnJpquO z2uP17NME~+yLKA@TYg4IfGF0`Bk zE%TsdE|EBCJ~wGT_}HmD0t~Ea(twfV7;fwj1wthGM_-~4AEpBFCh?(fwawp|@TTO_ zeD2bGwspaEZ;Rv$xaqa5e1T61aBp8(z8dewN5AT=cxQ)fVB%l{uXD9q$?Uv)0eANT zc7tCs-v7a)XJ=pYg!uMXAld@D5?J3Ki1j_f>W#D@uwRfBK!gfArK*KzafaHNC}5#UU|XQ*fXoudH>Uly1zGPjD7m`X5a~84D+pN}BllZ_I+GA}Riwjbm<+?T!2uVBobU}C zZT`rLOPq2|QS+hg;}k07jx3RC6Q9R2BJKU@HsKGIis1Oy0&#>vwE5J_qsNY!FjhB;*|qtl_0T_)H`|CCFdi%B zTDLMAH@~%>*Y+_#Cx@n7b6aL}a7A%JF?y`bRQoC#Yj&!Da+lGzIhK=i)ika|pIr1Af zEJxsddGijYdF!sfq%(P2nBCSL&#m7?die|aO`N|K)&V*h#cbZfY=kd-J#0c#qt*Hn zvwQ2y+Zm-&=`)Wx>mt^Y)5VMa`+j#=G;^kh$rUVTn01f9y`W-0R=`?8l5+@oBsmv; zx;F!Uwx>ik-v$W|^b419rOVib%WUuy{G`bUJ+>Ml^zc+T{honS6Z}Kw;?Ff^|xi_j$d>!vCT2~XTOHt9QZM}?n;6+_!nKr z$$It4&OtWq%rz1u|J^cv{oQ&ApLch#;wSlPT+&JSm}Mb~pZ4(^?%|coTRWW=t46F= zTu!y9-8!rUJ}iqD!{5couy`^4i!2g+Sa2B*QU;O*({UBPJ^)P+RFZZU1wNp@4vws0 zK+hVM1@ed(Xt%Kb?uBrmg-h;UiLba3ZVy)?Z_=1C6UVHaM9R>R^ix*{^+c`$_e1!} zB}ajP>F9-h_JHzg{|jqNUOMA8nuuafhC{fLlp}-N90XUfKeG5Xvci z8IIDNock`rabHeO{$!mLfjPasYc1I_G`V2vtbcxY>3onX<}u^QA$1;<0A(H^6r~w8&BjA!*Y#LI<9X!r00x^&l%KSSn*CgPzP}_hbgK+saepd*38zoyQ%(F&wV=z*k)ECD%ri zR-+-~11mIQ#0Xr46gl~O;7<-3p~#uHXI>5}x>Y8<^A0p9CT38%>NW)4Bz$m{LdOVt z2X6*reN0%oVuXeLdS3n>cG2{&-sr9BZOR{^P>jfLl1hWcxS>qOwBW19oyg;NQE$Hi z;N>8&z^NtYrQ+WQ^#+MYXfl||y_3B%pm%a$zhN5wZz1r3@3D-@ooxXv9;m zMK2NIf;g$J5ntgD;UR->#DjD#y-k)8BP>n5D(`{s;Gc&Dp)bne4?lY+^$78 zNL+V5AvzT9CD9wtpMYzUN>!de9sXm20#s0N=Nx?17Zm7GKFWt92j#;cu;fDtt}rBE zRt3Y%7m4&b-5f>2@L@@V1|=#sUTTmr40x=uQ6z%u;9zM|R8(kG((d#66)R4x&?iSX zHbON6hQXk3gnscMlIUCTwXrTqjDrm^*yCS3IPiFvX$mk4%FkImqWAgdEqc8PW)IB! zbLY;zwf|gi@45YN!7YrUbKf?7i?0{2HeJ2gyJydyCivI8|D$Wyu6?w>7shw*yb%b6 z{u9jkXDBK#!8Bg)eo(K+;~zSCWX7Z!fRf_*c{w@ro>vrT@WjyTb1c1I_kM4Ic+s@A z>G}Me-ljcUx9(}`o%xFJCnQ|>gXu(3I90s~f3)%8Az)F}o0V_Od}VTD%Z}o5)h!7U zab)K7f-M{CFirrI^w|gIoM2ieHzvg;3C*>Y_z%K(0bH`}_aue}i$Rb$R;ztezyiTM z5{?s|E1p-u;qq4|BT2$7s`BC;EsqqaKAaQVL;yv3NC$}&s<~;DM zJS;>kj!#IAk4zSeL&D^Ea9tuU7%}2|h$&z_3~9h$O5zlQO~QY?HlnB~2xf4=yd>AN zXU~!=KH)m=KU@#@y>C`c8Zl`y#8EgrG;+oF@UOS(&0k0Ss&bQhEDN{CS6mNQsPAop zKf-@7@!P=vq+*m52N8Nu1SkR&0g3=cfFeK9ILIw032?%=Mc=u5w*aLS!y;-dVTQ<}{sZ?BT0NIlFt_7Vh|j zQQg*G=K+PBZSAHu)95AU(aY7q{N|}fsIrx~?z$D(I$bqVnXC5A_GtX4+Ex2jduV&; zylPj4RE9;8e+i?U9X3a^D_=L>o|0f&vqv|2olX?o1pmrbf2>pOlZ2Jb8;pp`N>EsK zsUyM0zc@-E=C_Vopq}lt@!{$6wlw~w(d^S{5>b1OE~uSp&(#IPnc;_}S={G!L5A}? z>TMD?sg#jQS-Z?%`AWUbaVx5vpOTW0l9JK^{UylJ0q6%rTd`<^gugW%O8l-cce`e) zO@2pOr^7WPNam^umT8g9(XExpY_2Ils0fy+B(fg63du5z8?-w@oN4!F7g6cK+x>0|WQ6 z%Qp7PXyiZkb(Wc|2IePyx*Q>=tNgP_evD2MBA1PH@Xx24-eclIobqr4_hz?96YR7r zzL$&8swZ=e!3HKoBfWA@Iy6vRuw!=fsp!viP~=}tceGmVu6&0Rw+a^oK-*(%uFkfv z(+PvBqZMv=3BJ06G%==VIQU~?(9tAZ%zlblpkN~fv)pM+9B}ey)15%Gy2@=H`ryK*+&o&D3<^d8{Cy}z1173iJ4#w$+Vkm(c6X32IP=ZXww~-aM_ZYwZg(UnLHo*#d{J1dt-G_wfcU3JcOU9C zG#+vrL~!4H$lYP9{@Q&i^20X8rOrfmq(%a|#VUF_Y$)Tr42A}a#yGSqG+B{Ksa&-} zW6yqEXXWPnB7qkMBqGZ|l@dcc)w`=i^ZaFF_r4cE66RPjp}XRGO?z(XmGo z?G`rz>4S7?MUT2U)17+8Va#@?TA2`g1B?WIXY@W1l7?mXrq;KzaXNEmZ>m8AY&J*d zK4{h2VYlH{c5ux#^|dU7$XQCxVb|2`Bt?gFrTRV_KNKy8c@G1p*)`AR8B-ON<ybzYBa4*@9zRJD<({GmlfQBcD8P=18Q-3$mN`}*zYiT(cemPe+)^$#BaD@1 z@Q-II(HQy8OsptiEk^Poa(;O5v7s4YvP7IByXI&GjxZ-EBa$N54*um#5GX&K$zRHp ze^1UW8TkGnKEv>Ii@0Ah+(F!T8E!E*FV-FW>Cg;$L#(d@WsF?jEfdK=78{X?(3BKr z<`g4ST$WeBOv$ULNRKQKC>43L3q2I9BSIo1J9NUejZb z3T9?`nGx73nDWAsylJIONGsqNBLV67nT-~n)1T5^1>-)<+#K^LHMAdfJfTYaQG*FJtRHm>p@#RPZYET)ejP#LA#Ak_ z9wdU0+~Ki#7U3o~2T*_Krv{+5T!irT!bT z6DI8+O)yeG<|PeMe1SDp=?Qw1=iviN0T{6bHjn1Y*iguRcyNt6$w;{dMC0b?^D>g8SFKPwD{Y z0s4F0Uw2)9ulVb(>uhXjNUX+q z#>PBCC8H~Vn&6K<0aP`ilCcp$%_USa!UL!wWYm)A6F|L0cu5=%pq?RA5{Cn*rwEnA z;Q;ChLM3rHfO?)#BXD#Mpl&BR4C+U1Ce+A&)ZK&{)sNarsL}nX`w3OnkNRgad*%J8 zO@tcLkGh&rWBXBmN2qcAsH2E&@%^aJ5?Q2H-=3)SK3!xHk z22i&VD)D9jwUfvt-VC5d5GwIz05y(Ki8lkNEV44{rARN~D5>TP~+22f`cD)D9j zwTMuOHv_0^$*3mY44~E$UdULUB2Vk5P1-g1$sj@r9gxaspYj!+^3;SQCxrYCoFsjp z%YB{8exHjUO7O4`Lpb>npTKKi=SqG?9e(gXYf_#^s^`cf>v{6{cWR$C;qbI%nKJl1 z30>NH=mn?=9Tr&4;HLnNI5%cZ=mXcyaB3$madxT;EDV^JdvLzPvj5-7h)j35P>hSBVHuA!zSX0mrdFi zJ-LG?AAnQ}5}&$J-rAY4#Jki=b)Ua|h= z4cn|cn9@z@2nHdM4_4p=d$URTXR+!v6MtfUpOk&+WUg{DyL56tNlc#uVJNneq5e8K zZzt!s2rTcA`(`pqNn!;lMEj@?)lL(@quONxwN>vC9xFLRY6}zR1Jd>*6aPp7|Em$p z-$Rn!PYAu$q}}6zIzmM@eMtoyJ|iG^jiV_Jp}#Blex>2`S+*u z&z0aFSd;QVC^(GF)l8Db;aTa_K7{A%ojyW`Y9G;Jze&r2%zYqpKgeW>%(Z#k+C1%M zvfkO2$8F1FzsvJ0r=01XV=&YA<#9=K*nNT3vjVEWBh}yK37HdQLtz9sP^H)(EyD7# zjIjLcnP&Kz(g{;~zAuaRNeW=9AWRkcfP|0$`{VX5GsW%3$6}Vs>2ThtxFxLAv`8J>XHlKCmgBY?v z{IARp?bE*gAs~}NK-evx!o8ZymQTS0!A6E!J8?2^(%L*j4FDnQOkqXv8rGRq1&lS- zmnQz*T5SieJJc^A<7p0S1{(~Sb{H}|3>h04GIvhl?wq3S6twffc5VuHateEH3V7DH z(9=F_QXMgAA2q4Eh;m<>{6kB71gjaK3l96B1|h@fNg<=hCqBP`n_9r;7hrpvO~B=< z=>o032Ca?|twaT!h}3#lncC)l8a`Bj$KFE)tbMW&Gw{UiB-8geUh@pOD#lFJe$-Fz zVp35&6~8A@eMI8QwE)=jh2l2u8#0O_gT1Vf9PymRereEC0 z51N1$&=U;FUccUxr*n&@vy-P^&otT3^a5deVY+8zJvN=Ye>!{rbV1V(1js;hAy|3! zCqQC*9N@C=!DVN_We(!9Gt;;;(;&gLX{`Z6P-Qhi8Drf!o$H*=DoX_0b^;W_qQ_Sj zR#4XwgW!?iA@0P2X9_03v+p&(Uo&TLRWsPk8Ct?pHV})h7_;b#G5St|zKfuLE+E2c zo&BbPr(-8r>jG=ffwfLz?UEVXk{JRjyF4x?D>9fXWJT6DM0d>KTIRAHGXNgkeK+a; z0_ncTr0w=NAD-bj0|{_GsTsie-Js6}(5DCV=_dM|n!%kCtk)8KcA5wj+V?!Ng|yr^ z4~CU+cNDY3N_bTXoVt_(d2T};;Q=pbY%Zos?VHaLBY1f%lmx&9nnzR=^FnhO(1Iohe6nQX&nR{KG z%#W|Jl)F;G8cTglXFORcq~Q0C0_WiHho?W$-YW^1a4)GM;dKCsJm5w=Zw_HAynLXY zpv@qEkI$EK%SzejOaE<&Fd7DsDD_K>E#vlMtH$fJyU+=L&SWLCd=0&OCSzdHqKw9a*}J%e_hhiR6j}l}9>YjkCD_(yXb8PQ*cdo`D*D$5;aJ)_oW<5QNYna8Jz7cES@*P+~DzJJ{@VW;kYJiKqNP{*3 zRPP%j^1^~$SAGN4JT4SgdP)dd-c3ZNoU1BlnH#mkq3ZfZ>qsN$%&T$#;V1Z(#2EY* zPk774zdn1w;T4boAFJTrEoYBa_yqSc`u{w<{-xK?`vJ+Q;4&)M#T7RIGGM5{6UB?- zR~6ji3id0%-d-2>b(YtfzK->}Ffc9)0r>iv+vio_jQ|Z;3GAujdMg4^_o_e?3k1|7 z*@rxoy|cgX9Q9QMJf@$mPv0WXSN!*cV9# zcJ&R1|L`iVvWgvEbpvk?Jp4Z-jsA1>eSzseoi<>#tL8E!X;&dhyGW9>?Iqmy5|Tb# zBN<>XNgqUJA3)wvs=d}P4-H(7c@^=7u8HFq`{ewoMym#sU7WYVNLTc5b!uRk;&LkX#lZzBr9o5J4=6Bo;)Q zh15QxpTgh@4%;SKq%cwy4iUH#%_Pi1&PPzfIiSW9w|f2%26U!0>ON!Svv%5O#oYm zf~`Y{t>@-&=jJH4MS_#G@n(27g$lB;t?_0Rcy)R;TRTTthg8XC{?c7OO(9);#h1Vn z&2h5iRKAXhKF@iQWTr1Mg>VvLJzf=&=0ZAc1Wx?nrBm6jT4>X^+UBuxxLKKrR7zr{ znw-Jz(_)Z39Ge8+wt5pF)h(oYqyWV&0L4fj6j$bQSLS-4kmGiqM=%Tlt=t0zzjD3@ z)`7*R5b>#k_!JPI>JvYA9yfQMM|`Xx9>z(mSsUw>oiZ2nb=4@LnHri6Cl2bI%XQ9G z8u2Xhz5x(YH`xANOV<7TJdU5o-dlsSzJRw?Ox|;wx9wn*njn>776w$B*|!Ig1`vz} z2r>YIGy=i88g5+;h8r1#Xp*aR?m38&B*}7!x;R!!J9X zc%S#?Z1_E=6Tc1`h>Z;C>(mMiIbMzd)Eb!WI<*F7yH2eDHjLkRGrWdVO(6J9G;7BL z(h~sbiGcKYg7mf9xNEloK(3lGKp*Gxz@8dzPmQugtjaYjPl;8Nh=e?k?{bOnAXu%` z=0eL!&@vBN<`RjM=5v$ggO8ocBf!9#CJh)#j^W1sP#{E-fAl2^@nI?uZxSE+R@?lY z32#a+&F3!7XImFs_qIsBfSX>+$`|;Q0QdHl<*V^-eDtf{ig$L%1||+R@H$t!mCVk& z7jSnkU^nfmq)otlmfq0{aD70mMF06qx!3(14x< z_8V3UifkH4k-zlO8Tvqdxdh4mh=RNub~j+O*M5mH4p^1!ujTgFvR~EWvE5;UYSkgw z*C$*jM80K+tCn-svcYwDw~TQ4h4}do1o`-r>$v1Pc5EHqv-a|P#9@A%hIz@JR)h?Z z4ZbUZ$To${jzUj-!e5XCLK0BMUr0=W*-{9zMfgHuejPWz4o6D(5CP8Qdxm=E-#HqP z@MZCee}}yRK1e3tA+K2RZ^&Npf8%}~j&tYn`SsWP_9Dj;ruA{={~Wi^u$$i?oT?c~sy2-Tv>Beqy%8Swp3Sd-14L=`%i)Vt z{LvCDUFH%1YRt;08v-DF)7b}r!X@0AC2ZjmVN?)H0=S$?_@pY(N`IZ#O89z9&~Yy4 zSmVb?UBn|-|a}?gi zh1|s!-UUDJfwi&VP+tRZsBg7QjP%uDSAvv4BmH$=BUj#-LGaW~7zAIF=`bH$Sqm`T z4lvCpt_;CSlkJ#=WIJXN0bz+}K9HT0h5hzqoZ4jA$k8qYS&Kl{5|Fi!$O>P|g)b$a zJqU@1-7yvEmJpM$K-9?w0_5y z7q)JCZWL3!e#?e5 zHCnANF}t_Eyq!@hl|J*Bvo2ySIbFQyzwdX4MKfo5m|VefhFSLr+zTr9V+E`gBsqtW zN0M{lr+YKtXM0Ly^KFpeK)-MqSGtT{xXcDW!T*2ye;m-xDFPG$iU37`B0v$K2v7tl z0u%v?07ZZzKoOt_Py{Ff6ak6=MSvne5ugZA1SkR&0g3=cfFeK7g%5VMPU_j4UZEDJ!4r;V3Gr zDlK3li_7u~rj;6*NTFSRd12m+NOa(-?fc{J{|F%@k|X(Ra^=S{t{v=aa?w-Uyd11I2#HBsA=m6f_U6n41*@mtZLbn9#>5z($*k%oJQ)7VWisGXrB2a-HYA)m=MMD*>%X>%WUg*57Du1 zx&9OFnW*;PX?F7qLf911_#Q(faCLXsTWz4Y#oCsdoIM+Tr0>DSBsCDStIUK82( zi8LszwIi9acRISd>>XY9uI8Ynbse1!tE;@wZeXgpcSWfdt0v?_CM*l3%6_)8?}{u| zCMb(Zm0iSz9PVgPE_XhNzY+xK@$ZK~H`QQQE&mg02J|!0iP7*6d=Q1CJ^UE4p-w81 z@v&mKZ7*Yfmi^pr)X3YbnPJjg#$fGlS=TBMh!um@&=dqXI*B3n4$);SW)%oQAR`9f z5NRLCN^%}O_*uVsR76O*1z#&q_ zhRF{^HOIt?WPopWN0gP@E6&aAh{`?~#r{SN?UoYGsS*@MB#4q@G^2a)fStlfP8vjS zFFD!WZe+xw`7y#Mjuah_!JI~oShOi7%mPxvEN^A=U;5I{~B7+}5!U+%D|1HiBiMd01c#j-n2g;#9}L5({hRFh2(I=~Fgy1gJQ#{6><9;FnI*Er zZ2lNXOC0=GiJd(ddfQ;6d>tj=>D|fi3mJSMp#$H~Uv?`hDM(2P13%iZKSfJWSgCsP z(laodT~p47bnWXZD2dmkbShzXI~-lDU4Uv=cvnzY`^ND0qhh!O!6lh-0><_Z#lgCz zt{L+YFx}h!(u($P)XB^*Py_93h8>C^!|u#k5)cjM@udI9#nfa0Ix4 z^{TQ9_)-%w-|iS2iLF}Y=|l1}heRW>T3OIudHQSlnXjP?0M_Gvukuxr=FAqDQ2mjH}_;nT(}q_%3pD(A;0#@54-$wD>^Gv)wP`O6Xv=FtT3z|%RkK&^&G5GjR@ z$6#|r2Sk@by&a>Ya?w#J`#J`*Bx9OE@~=vSRFy=7P6t#&i~9DLvcSs#VGjlu$JdT{ z#vY*EXF*2N7P}JKoLZYXA2~({s#im(m8g?ef28{**}jl%4Fw){A3l@uqLY*1g2#zY zA`BDUJya_qu{1p7qrog}>c{#}+^HeWaEs!Y;hfUYt29i>tRvj688yh9Hs}N0AUyIc z_EA>N#Jg_6Pbv`SBx1;zwAihhX#P&A1IxUHZyQmBgH*GL83ej>Ul z_B#Z0;W1F#{t}$qzo{-MfXT76P7wwV2m*Zv4z2Ak;Yi#54Xy?4`8HAVLM+|JKaV9F z&VQ&8H-FfIm32ZrJdvE5p{w@j!qcEu4E-v;bKG?c+@BI6J zk};A$glr8~2Y(sb1NX;5#)pW4#K98jAen;EP6#)>r-|!yDuYkJ7+ZOtL6j-Q0kXqp z$O1xU=!s^50Fx1OWL;8QPBo3!L}yD+MC-5Mv+j!Qr)Fqk>)CfI+GvnInVA{h+HGrg zC@+aMVelA{@gIgkocu6MDI1w;dXKpZcH3ZKf;{rb~;;V-u_=yo6JgNw}TX)f*<7wHSA=k5F0&;@ReGbJK!zJuDoEKU6 zFCsuLe&C&I9Iv@m4b47%CPMp3lnH9g@DG|b!wd&BTos>0DgKThO!n3e8=wJIq2G*% z{K_36y9hcuu*G6NX^^1~@y19)5WZb*sD*obcVKn8uQnAtNoqkK$do;aGgcCOYlve+ z4_5;w^Y}Rmy_zqGtF`Dzq%vnN`c}dK1AOREB3)&72!azcsb6y5bH=Z4zMA=*S zIrv?J^oQ%Qq0G-vYFOy6<{Yl%3JN=l!=RJ%xp5dCY;<&?$Jq}Pw z4Vtp{2&N~^GAdLjwSdhK&uxe7<86ill>4bM63`#P&xUc^6DJ8*n`<0(U7T(2-?ytz~pI zu*NFBztDr{#hu7MKdHBfDu47++bNnAI zllN@e`Q8VA`^#V7|8VciyR095^4ddNwr+do;YVJ2aO3aSKe_IyrWc-j`q@V}H~;Yu z8(w|u&By+{`B9>C(Sq9HoSJh_%&;@ zR$Io*C{A8h(~viA?EO0Z?B-}rZfNbV{Z7|aKs0RiWkn0+9IEM0HFf@wy-AY zYjSiNp>^7i5OZ_w(gr??imQxy`T6BlQ>LN-j^e!10@#u%s47NPM&XK3>CJmULI0xu zoWEWajDmg))~bnb{`JY<@V|8Tx$`DNdWX=g@`}o;+0}EVO`lO*Qd%}M zFMmowVUclaM&_8YNU-@R*x^)H)Wc=@IEZ$7utJFi-v$z^&|atwpxar@6|pB%C*0l6QI{Qm4C z4L#8Q?~W_`uB|@x%jE;#{(=8-=K~jhuymjN{OfaHeR;U^(?cCi_dk3e^Ze@zKM~qL zw&uwpcZHzepNagZtN!snL;Igt`_HGJJz?Je#XoGvkNs}lCFiP(-?e>no;%XjdbIuE z+bjQcFZ1A2D;^TsKk>(!+vYDA9b8^jN>+X#03X4{(<&;3TcKPut+XJp+%Eu0XBL-L zGG(Q49v*T2+`<5M6r5jH7AP*Wcq$eSJ5AQ% zaaII9*!cXxM_p5*WUdOCOcf*R+}FhqAENvrRhxGN=XeH{!Ek(Vn5i` z4QAR^i~=5hsF$CP^om4x_V|`q=;>%;?AhEFerWup1NCaf#Tc7|7sYq-s(5|G5_}F> z-re17!%wN$L^q?kVoN-%JL(SChq>iP4~M#Cla5+rZP3I$Q8R2`Cm$NGk1fOJNaHHl z=M8NvTh-cXwRN=O_OVuM+tD*{(nmP(Ik>~A2(>$vjj)XvCFOq`f7IbBw;xbk;LpYL zug3E~#OFCI{Oj>*1H&I0BKz5H7!B7v*c#CV8PefaExW*99>NbpE3*+WC1Gw=c=)Ct6MUg=o2Ar5<6aQMk?>?T7lv@m1~&5mM4TaUs% z3PATw8~_N5sS>*b@A$Rx>4TYItTt%S)}?lg$J#@c;#A_^7Dy%X68AD8u`p(uaT*MQ zJknhGYR5h(Vktm}Vd2Dv>&31ewy;zu{B`ZNL4L4zup!c++&g%z9fb8X^DhqW?m5(J zXguULh@jAX$W2yP)gpw3F<-k+MSj?p%v{8|;rZsw5@g6@hbsWOhQS8kw#|8A#lAMDT&vJZxJ;-V3|8&6*=CqeAJgR9G@RpK`Y41%5WG*AgxIX} z-WLo&sr_}s``#`x0s!C7fp^RsMOUuAV={Q^n)!{fwR(WoFjG<|;h!gPu5!f4yr zj%#D@UdJ!ML%8NHD=bBJI1UXvoSLy^Sv=Ik9l^?$77z; zubp}*!;!H%Ct^bVgrNMOjL?jxls~5QCPxg5AJ(NirAy1WJ0oiJ7o%6sC!EHoNkluHQjbyv+h0JN4i$se%+5_KF;Qf zJ}x?3bh2pZ#DC;`J?!ZT@e^J%24(*tXY7PeW21_O7fmXvE&6TIV?}Qi%`IA7bUbfs z&TlgJ=6#&jmiATJKhw^q1*NYme6jGm!V85#MQw#U3XO%~g&Bnx3$7GgD?o*(3O<=~ z+vvaLTk}86-;A;d;8mOy$vsgdgD>kTPwG(+@2_JUJlQ! zps5){yWtv#?wgN9s5cr`vQH%f0ih;*S~nR^ca-2;di?(y0p0j9qcSp3uZ|o{CK7J0 zKMN?0`8r6HBtqyxg#Lsnjg6rQGQU;7!oZrk^Q)b!K8(P;+$q{lmkfzghKs$`iMn)nn`18n@23KZN<7 zssDEN3*73|&+B8>Tw3r~wQ1>-3mNm9Cvwl4YdaImEbGP1CoRSM*J#(i`R0Zpza9Pg z9b4{OWjyn8!)1z2l2yADKjFJKm#lhAahhM2 z)5(9GlRv}Gew_nPYq>Mo$?v%pKi|EjC)Bv)=;@gY6kwfCk+F{p}ZzRe2Wd51q{2zxO zxTf5hgqz$sJQg1URqwK0b2vJk{1fU9`!zd$|L5e-7vWcdn7+>m>cblpsKIY$&dUWwUW zNy3Uq5DXJ+fP^14ELicA{5&q{Bz*R;5XDdX1V^-XIzeHvT5&nm0v$3z!KsGAdUb;& zwSBE7*i|4&TcOU<9S+xv$0{y=maVP_`5iWrrcXKmIePd}NYi0+8}XqkzM0Vvk_4w5 zLn_&ohn6dTJnk^P$DLP7o@_TU;uP6sr}k9R3U&L3peB1>dEDVRZg;9qCGmOL&6$p* z%+pDkXOfmI?^?3lSO%YOgsR}3z-4zD1MfMLMne_6xf`K*29S$8tmEY>U^uLU)xyt^ zil;L&Pf-`b4_7IE0$L$c-X#c;L+Ta@FByW}u%`%_@98AMEJ2!!?r`03qqk{1tS$tZ z%Nrhkxbfj8w??jqvh%KCSa#(vyxvD%J1;5y!R zTz%Yv+)Rt&7b_#)(bg<&aECFnK{hKB61k&o5Gl7s23OASs+`}PG9+b4!eI1R$`EO- zG~uzXl$3;&!KgOD*51$}ZP>Z%ubOBn+_tORW7_5IvRvk;W@A}(tqp>Sq)`!qFOZeK z&!ytrF{lFueghNkgqdZve=gG4)bFOAYAlOQ9D1tJxV>y&QQ~f0cx%J<(NJ_M&X;8# zNm}(}t7}SUQm4A8{gS#=JzKrNuGZWF`E@9S{#kQj9VpdBw(Hvy+7sJ{<}y8suz9oK zwe?{sb4smNXLlx9HTjm*b+wk%$Eq!B`*2b_ zGo)Q11t5qK_ImXS^}Tq!+bpS1gM=4A!t+?dMx!oHc{s^(wz0l>`O~%L7pl$Amzg&j zL0W_L%1|{El{dYj)^b>?e_!*rdWCbG=3OsBKdn|Po>IJwgDoWMzm&nm=$4?SvUZtk z%AurdcVD|h9h>;>sm4qY|4XB~2;1BRubb|;yX%@oRJU{(I_?;9{O;p-bhS_H@>(%O zCq16vn%?D_*Y&?izGexse){MLaE+18xMheg9IJb9!-y_*m)Cb*;#&g|TLvO_4n+K6 zAY$)8#JF1q=shKnc+DcVG7?al?eyt9oiI$mqs^=F{Od_8t|zU#p0we5()Q~~A74-U z(oec(3AS=|w|aFsLu#`9%3bMCh`1G-9l(*)pODs{VCYXM>rbe|gyRLrOOD&S+H=fZ zx|reZN$tsae0FIMC8<@1lDg(pEnCtq*CmQX$QkB5xcOGK>Ag=k-+F7KkE5Uj-^!ct z+g_9PN~-$PD5JTH9j3;!#bSkdnrMYc@>!DvwaYd@aA^1kI!3sBbH*uz35Rob`xW&9 zwOMMaTiRuZS+qpD9AXC)qCzB6D?BTv4e3hha{Wejp(m1Ybua1auI;YwF6+i~xV?di z>1rR*)gCKEwQ-D#O$E?Kbm?TVt9LOGV%VRMNE&hEV27%^T;=e0lK$PU1ek#j6S3oE zlAcJ-8xm>P5HJR+NqHlbai<5vM=DN%QHj>JSZ6z=GR~nI4P;!Nqyy3#ixq6QkI8=#}AJ&UO2%D_I zR8V#=sfM@YT}hozwI$VhCCUgIrK;g`pkFSDCBE zo#d*0GdeoD+Ex2jXz09ZT;a%S64C~>tG2!a8~uO^8{MfKmJErT9a2lDqLNUYfH1+A zAD?2!ZX*Sym-u{2hw|qnz??9Hi#n8P$)FD|D%HL_jrWf90GYPK(xZlNw~~HoGzyQp zZudHU?BNH!&yL(rKS(h=2w8v$_KGCiAyxmE)87*;-`|Ip>jcQ8GVM z+X0>fa|EcN4DJ*F7r=oo8Z(b4!Dz(U;Q1m$qb>pJ$q?`j$xdM;G-v(;Dg;e{0s8zQ z3ADfiXa-SXCh4|{oad2qEjiyw&P&Pp9&%nu&d}pbEs+FWk&&4Fk0dK2gA%xr%n6_Z z64}R-tZlG#AUflDa=r*gv7s^ZL{jFrpp$oOyQk|Snt|fvXK27f?xt@fqa?`Pq>&tM zG8&rd8#3+KdO`G`@JLa@89?$_2-l}@Mg~?AyM!x24^IOyw1F6ECh9*(&JX*H@OdQL zp7d}Ie7OO!DWsi&x22yof_e4o_T4Mg@I?{)QEnh|Kqh$PhotNiNmfX)AUJ^0+21Bv zTYv~t!vi*`1vY!}fWZfr=^`9XfoeB2Nt*!)DVgn^v5DZ(eVFA_~&@mZnV>c4%{f7|T8{hR;x1AGg*7G;vEzD1!HR^|h1%^hLLhZZlD^u@Fy*G75YP}721Hl)XcX#7^9OP5g+2188Ly}~C)>T>AQlbL>j(muUE&8mq7IaW>Nn$JYF zs~@jk^>|ss<3_Juw|u%W4Mvzwk|RQmv*t>HwVertgp}2(`9B)?$H&Q|!p z?=JLJDemE+i+T}%Y^4UY9ki%X`T^QmAIih9X9$Ml1B1z zUWXw#218`k406j4Mj4IjSWArTN~|F=23}eLqaav`^j5etB?1;;ry;Vd7KG+vq2@$~ zpxH|M*sd1#hx9I}aR+&-vezW$G7>PXR59FQEn^ZvUG3VTkPbo9wL^2T*6_YeZHz+j zjVss(4ctK*_*QRhmn|3CS?pZ|1mMT;l<44HhC7(~5t~8m0oaIIfsVd?G&uUU(cnJF zqTq^0M32xG!ilR!CetoVOoePk_k%V{mZ1O6sa=!^U!8oTmC0N)qGW>6L@%5;06qj9 zM<68dK2L45%dbTjHK?s^@Y3Zdes=`#VA>R4@DGn;C5RVi;d7jxU9IPrlXFfEdwUKK z=VdBQses%Z{-s-m=0&4!x`vs2KtK=*^aUJ{`MTZLv?Q=zh`U*e^z%!-U4|O zlpQ?Gl!y#nSoTV=R}G(q!k$#-%0wG{*>?%n=Vb_H6MqFcRm&4$Z|eSZun1&l9*Z(| zuu&TR-VFGtJW&l+|9|Yg3w%`7wLgB&yx*BulF8)3IT?g812_yYgdr0WNC+s9k%x#@ ziP~!YsRgT*rz!7;qGC|ADhgLX!G3OHwKwQ(EilD0q33srUV6n|drf=O)|=9jR(v7D z|GW1-=j2QhsO{(e{{PSa{xXtt&fa_NwbovH?X}lld!OS2L1b5RxK}z!(UHz0SV$k~ zJ<@f=^G*XHW8y0A4Mrl7j|iTwbZ9(ktS4K`0i0D-xF+3 zc8qA~hGe>cAyj@3sqs`LcFu}otytYAm#rd}E(1mo1u-BB!iUbChS!8($!TPgsS%M7 z2O=VtY_zf@n}`OakA)W&_X5<|EoDb`kv0g1g*!66*jJpW>=sGCLZt7dl2axF4Iq#p z!rK$GwNc$KFs|J_7{n%hGXg;cP>z5H1PQS8%Q8$t0(hVtr{5os2v>L9Bu(ae+Hu&( z!Mk13sTg0ywc_@m^g*l(8jx&1Gqoyu-pXIJIkrc?T+^`Plc>+ToLn$>Ee-}nS3`H! zbXb}&?!9c_WFxts@>D@JCU=tOP7=*n@e7BGkLurcI6ZDxHz_LWSs{(%$iSX4?!5*Q zr)eNhYqC{Sun){aQyHl&*}UVuntF|1uRm5ddvQ@}(GhHkmT`eo zfL_raKG*zsW$&r(#U;`=#^Ln!Pmr5_;D&0NjK>W#ad8bmH#;3->{Ndw4zf z8*2|9d(KSl{77njtym^tC}g^zHI5DrS+ z?8LU9_(-tI z!gUo}z}VcbuwMm1kqmVRP^p7--{Ok#48(c#)Zt_TY}`|G-jONoLO}nrZU%b>DhY8 zoRC}zw4l}WXX?mo3*vkQCVKJy;6DlW2@4m)WMRHqA57zH582H*J3VZKzZ%fPbtO(S z$?ORjebH9q(zn6Pr>` zRW{RM5?FypJT=EJ2ENrTy;Di2*^QNpsco$0F;}?wc7b=^8@exod7)d{Sow=+r2(;f zzE!H6L?-U;L~{^kWO?9EWP&0c5~zh?U6r-K$&+s3D)YlW;@*RIl;c1-MD;5KX~2F* zZNju=bEVFGzJ1tI*d(^(%3uWatbC1?_o!PCCw|nk6gqfcD_NFhq+k*)UzIHakvmpo z!?-OWFK)D30!4&6+mXZV@9@4!}Kpu(ZN@wQ<3Z9ypcq;6tcFs$lk zcf#`|PnMnwMV%Kuw^SM<#W+6%TYxRAsXdrL<@xMoWj=fP%w_-kuM-J!;{7y^C#}XI zpPtq2M<+Kth>0B;r*RnGWB~(LZjKs?z@ht-3?^o?^n=N84UObxeDBPSHwL@U9Rn0G z^GV_Jy4jdtU=5G-Cd2+Nn3!Adg0#p%rOzP7^v&aMy$d3vY3b(i1b{f2wrX9#RISI$ z69$Q^s+*0TDjJv{Fyif%U}RQ(kHb*F1@t!;h1}Tbwh5L0O*p>vW;00?^`2B_M(|C_25^2XdH3Bh*zc5{=hv?p^ZjfPqJ2CUt(dq_@ zi{nl+xSRP4*Xeu^Jm89eulsao(fid6r;~!^^o5)C7p^m8X!XF!3thh<-e8~q@S6)C z_0J)&=xs9VXZZ6M@i_k`lIY1)GzT$|AQQ51z;jvhzEF8HSvRp1c_B#2SR9-l>OnRg zdp#d?e;~e9^+9**M;~+%Z!A+qD%}z+I_JpO(LoIbE>{!=QXq@O0)h*>|;aMUYjdz2n0q0@LBC-766hJjY@uy@+Bq zAQlK$DN*J=--Rtw1P1%INV`d#a8wzI(rUI!JC8{hl1EO#-xj>m^d#Q;9NT$H2=#>G zV1`19s^D#3g?T{+k{iV(A$0(6Vdc!PiLe$`WBpf z?25l7eA<;cg{@e4h+W+yxKUw#G(ddVDCRKdY4(Z{>L8oNJy_y;IN{rPkL`R{H+d29 zLS7NwHy1($X5zS;a2_rn?<;gq!-=>;Ad3_Sm*Jq8!~F?37s7@rknZX%3A?8eO7Srv zW7vrI@dBTMM_C_WC#}Up`I&-kMIC33vQK^1;__wA6 z^qm3k2*W8*yIJ`73gOdUAUiyz>l8iY5UZ<6d^}}g8DGsEljbIm;3esB?XgqH!;D#k zZFm~(m35%)RrXs#ZG07~F@)%rKk>9v6DJVjt5!DSJ=K-EdG2uX6OB$sfa zuErc4jh-7ZI&92F(RqX$9Q?~h!`LR~i;Ig_dpiU6YQK3zB>I~XqXYjz_#h{0`(TTU zt2u8c$#+7J1;_+}oxr(HdMI&n5@Di*w+7qPgjjV1lhtT+SiqHVBGW=Mg}_H$>C#%N z9gBl(%O@*_7oh)}YqKGu1Qj?eIUENk&*R|am~bE)A(=TEP`)7;IELXtz$4XT0vI;g z3i@0T_z&f|IqP9;!a9V&CMV&xwL_c4@HOags9Sg%G;0coRZt?s5g9ulF3P17 z_<5*#A<>wCBXr%H0ceFniL(sXYWXlyz6?s`I=)98{(2KmfVOOKzS64LJC{B5MsB-X4qDX)I15C-LX` z0nJDK=^?3hs$&J-EI$cPlK3TJxo_i=%(3O|E-pL@3RXD=!HJ3$cyZ8$>DBW?QnR`o zNSeu!W*6`NB~9V&D3TfY^9sBwU)Jt9)F9|^Sms);``EWeaMIxkN4i3;i|&7{zB15R zJ&Hj77Uz~YZtHkl=ozMJJzs6$tBriM=^UTOiTkE{wwIh~OEzFh4oSe~pPA}eTha^P zKZ#fD5N&+81TzDaQhY{v*k0m!vIM>`MuK$bH0kPTiDwXlEdwIJ5U*W)vZNE`(IQgZ zFb&Rn;Md~X671{H*Y=S`V1WZ3^qteH>-g%~QgZ>ec(6SuJyHkGk%Bd+sdRHaHErT{ zwkIGxb|qr)6LA4+WTWmBP=lyu-zWzXn@4?+nj;^E2^diwB{vWtxRj+}bqckhh|LA=&mlnY59f15 zwgzZdWevEVtDc9#0&bDg*6M4K?xoZK-7S8|^FlUY?iPQi=Zn5Pbz-Gpf=>Z)H{FSi z*1Qud(H-qQGzY8a6Dz}?2hK`Obv-9mhaIc0y5qsCmV{snnhUU)ohr4}mDzB4FyLxU zvUM;<6OO4E-j1f53ouI~oB$VMVO=$cDhf-Tc#xStT#xqR-BdS`%dEf*(qC7j%lPWK zv6FRZdEiYF#imXwA}HBEL|xf@0&4@lQg~f>hqAe#gt%V-DZSYYrT?f$PO{^p`eesv^=b3;>S?IO`lZ@Q*gsT{*9RNO_XG};MV&4I zQ$L$SU=kOwRy~6N;XacAR~v9AL=LA>3-{x=V-&wrU#%l0zyowEu;gn$UdPS-NK45m~Nz#tez%N@xE>M0Q7n{S0+{p49Ik=@#-gI>Rs^k~0hP8CL(r{+l zbsXT|Erjs^r*pWzak^vN3?(!QTA_ z1W*x$RM$KW6>EcZte3^kS zGxB97zRb**S@<$5UuNUW?0lJnFLUx`uF`qoQHV#0ziQ|{^D2C#9`Z&)KG%6gSdUxc zJJ1P-CrtvrIC2FmhhqFZ$7u-oGc)LjJdev7_1DiA7S5bMgA`70oQsz!=P#H$N6l(zoVQ>q zH#RBo*Z>A8tgs%m``L?JCqNQ+nv+0Z z#yxZT+|hGe_8b~LfB$POqo*I*|J2hv_wIjf-=RG_+jmj?x07lb?lvgg4T_I)d$4_% zFmFcf+>|i;hS3wF(W@$>jMx6SHd1aB-bjM-ricKt(TG5Jao7HxJ6qa>XMQZqACqc7 zw0CFAE=4|qpfF3>x(urDv@3Qiv^V$#Yd~wgN7NMbK*K2#)e$3D*s8UsH z2_o_S1JX@#Na0b(ZZMdMOaB^|K8cGwhdr5Y`w)r129;)%4bD#1#j+rKh6X zZUK}C3fMiuUI_T5n%5;=J5DmjBlt&SWQ)d9w^$w;(D6gfOFn7 zxrHV-T`wmep~;PvaFPLr)ZMV01pbe-Y{urs%i~t!7HqkR#tXQn3V&a9Z8s$ z*$|(Td!2Dkd!6LbSQ%*r!NZYOkS5$u6@d|Dlv<rad6|+XGc)uF&{qg4T-mmZyyc2N_E?U|& zP4~!<{m^Qah{#+(H5roihOBhUh|*~ZX`e-uvi{suc>24yUXG{=xiNV(-7yf7DJ9Vn z6>{^OH_qaDPE#QP0isDqppPq?TTyMb|tw@}C)>TF60Kv_5ay*vAG! z4%VV?sC}fxIY^7P;GH44kF=2Lb6?xpL{9r?y+A7UH%ICy-n69S?SJXlBxG-yJaJe_i0iMBI;gW%Lo)K| zVuF?}n*_1d&YU}S!90O}5rw+A@XFkMfC71>fLIg=(`U_Wm@$9e%-IWO)y~J-i7Yh$ zPq9(N?2*D_MYNzkA%n1i!$A5_jvXV+t#1IXxx%!$3uex%7aCLbb8E>eYu+Fgsb!(K zV`GH*wb#^-Zk#@S^!&M42jXq+K`PX!%#Rx*^L{z-lnOq6j6lA00;~hz0V4}>1C>1G zXGi@G97e6jT8~MDsWNTuM(XiXs6~wn(9ju;GpE&0A%LQTsH4sX!k9HipE`84dxkhIESPsX>h||qbWX8v620U$evM($|@38UD zc%kE-@-pq|_V&Fk0=|dyeEY7Q!p?SK@6J7VIJm3*H6a`wJ>g2)6f8BMB0HaMX-h^Y zPv5nt?ZCk?$+44Xx9@$S{l#Q#^6dSG_O!Jp$5G(EW!cnS`}Xc_IkY!9esbg9L+!~4 zSVGYzgCA-QRd@7Z^0KD7dP;{EiOf_yd<)4}?F!R!BxO^f7%rTl;(;>Y2ikq zcTPn+@i3Tn&RImd>zaez1QGyPHZl&7*S8?*H~o+TK&2?#Y`Q~|$v{mmU=l)$X_IeY zz)GX~$q)UOLy**BD=<1Q6M|3223zBTE;{)u*QE{VlGsWXi^kUImJzRPEF-Ofa^#?4 z-Jv@8mt_I{`IYNlh6Sz22O%Gp*SV|+OIlbL;YO-VPZ6_<1!C-=^v`6`sLmG*mKqKU zL8gJr#8Ix3=K~tf(b)U1Qg?3coCd@;Fq_cYOc5w$_DD_E>=`#u5M_}~%b9vzp0m05 zUU==SKJ=P~v8hg}zP<*`k~o+`g2tNOA-}cs+J|G4fq+sLSnNx|!J12PFmx2h%vo$g z>o1%QMEHM2uywOFqS-|7GrFu9m!~_scJ4I@da9Du^b3olpn7KfoY}HqHLcPJzFH7) zQj|{h>uOZ;8=A=D<;geBMqsv&`o^$Yn>}8>_Ow}z)2`{O%@}4P{|dCpN2zM(X~eFf z{#AHS&76;KpQ)1Dc)iN|SE)UJ#@q$?XqH-i6J54{W#*?ZsMjbg^ZZ!lKBwafid|9F z{-xNYV9ptxDf*YrV!eVW(fR)O;RDC`3 zv8nJh%FDbfu#g!)vkqG@Oug1O5yqHwsqLWv(-{v?ev}R@zGgmaWzOJG?Nw&{-1_Te z^mGLvE}o%FJ4Wq%i%4ppiM=!ujI~td|P_N z=JfU75gqFZf(HqI*hwJQ1=Qow(V&0i>nQ5ZDd>x_s;dYsHu@7S>szq#yQ2xMf!B*`8mfLvmjSf~7 z2Z5w2_Q9oakfpa`lxhfYf19TW3gU*Klop9NM1gRbhzf)317fQ&Z;*0|f4~MHfZc-t zgBSe2X0T`y#*^j?NXop)wuG<%>!FXML(v3%oY2h80A6Naa(o@tKISOGPjY)V)kja6 zT?zOoMI1lP5eGN~yvkwUjG?LVUjG`*G7r=ssu7_+jR113_q~+Rk=1w%)3z{GnFI2^ z8~TW@GMSZRN`*BVdT+pDj*X;NS>sp}kjF;Susg-p981)%m9)W>k%dHq$U1NUja&lE zq^ShfC>1*#2e@!`L zJP9&Sh(ObL6mwpFG+p#4u_8Q3pg@}s6yLrpZJ$R%POrqig{@w?Jz?_rgY2ZxYFvnUy4%+y4){?Z3Zj%EPA23FK7IV|*5eYeaQ znhD`!(qwEX$#ne^nN=L<=!XgiH&_lsb=TeL>{69Qj4ZVKyLYF*eXp7aCz8nG?sQLI z9@c!wd+F|U;64=&D>dYu{%fo~-d6+bebhK}w^m44;UkZ~C;eg{+-RDYe~*^asWk7( zd(uDbgPTV4ZoKEO2xq4(9P|KYFeYZ$S2_!BqhVfkc7N?2%xz?QgefZo%@jfrbU(SP zvcSS}FubZ8az??cAcFg#R%T-HeM^ZUQ}b>Qr~ma^DhN}rxB|iqMJ@=G3xfO_1tDHH zn)hNC6Yw&O_T`Hd7U!%e z6aitrI+J6nO3Tf^EY*lugI9so;yq7cRlES9c(tQ}4Sw-nF?Y9B1tDkFARTnt3F5X}KKx{C`Cmcc-vs5rQG=w5WYb}9PT zm#%c>z@$QFFLpGHDivbY!t}ZI*Alhz{Vi$*V2xU_`JAcM*S<|!ij5$GP*JN(sOsq` zVSt6D2@C$eg#`d>SXfts7RvhiACv{``4EH(3nDy>0h*nEAF{RE(}Z^xSx|au@_i&j z+eE`?T^^)Rr(>2aI(iwogNm^7R?g%=a#)N(q5R%` zBtuL2Jk6oZL1CamEJMrx`TopB2|Lh-9Ol$6!_GM)$^s`;o7Oj>iW=}?J{4P)f1P@* zSo*5r9x6!GWhRzRHYmQ6!hxt_{i(S^>e8scH3;hOYpgdxtr~t75mX}-@Z>@CK80vz z{7agOq%q7#R~^M%QDnwHPQh=Vjt~u56=-p#sVCG3#z^R_b zU%r!mX0NI}0#yz31LXYP(hFOVIxP z1L+T+7dd%KdqiJ@#xPD5hk|(?Y6FXwrC)kMt?;O(!g=cbV;x10$!?wj(gYQAa#PFF z({}fh3+od`?Gk;mW0^eZFeSm(XF*B?EM=jd-v*USw|z&Pe;3g`76VPgbwLaivAyNWmTg+@YGy;3LwRO-`pxCJ z0aHcHTfQcDBY08x(>8z13N*igHD9emeO1=4gVp)k3etQPno?jrqChi|Fad8T6zcj> zpaQ;howq0jC5E_3(;X^R^1>X^14iT%LL@ScQMqhA#g4FgBUh59DADDZ(vwu?u+)#; z`Z1`ey|!Rw`iHv)_WNKqVa>|)h?i9vJ>()<3p^O}yI1xpoYIqsmq{_D{we<6%f`lSt{j_Hd=tt_r0t7 ztw}_zNuaRrzC^By=ovV(w7I5%u}!p5R%8{F^~f8mh!t0OX2uI-t*gnQM48>EqU)Pb zO~hD07#yF;f?YXI{fPB7$R|m5zVRVyEs#|3G0_3vqJH>LZBTq9UxV)|IjQ2akPP5E zkc)4ffc!!DV}4N|f7Ue&y^7B*8+M2=f zHIt9$_qA6&K&A305CXvWkNxl=docdi)gT|A&5}`ypUCRQUvspSat8{u90TcbiWN|(g?i{0 zoTQa?7-x!Zmop_;c{)gNNLTt9-N8}h#7rNsK~Bf1UzQsYR_Dq|--WU1X7VMFm@?St zKt%}>Q3dCjb8vwl-~yWmqU?n$z$kW>p&iW5ffQ-h9qObgv2+f6}V?qg|?XYwXz{+^1i zs{sXh{%DPEy#*<pwl!WaA>QH4FI8#Y*VK98Mjx3D)InjWSB-!v-ZvP;=i%k z7B#6^)55Uc*`~q>3_~wM zai_Q?FXz_vq6FJA_H3*iaiR4c-29~$`C4WR>>moDByk3 z5+YAp1bS@GjVdx*IjUp#k`RN9n9N2I*zrdMs2MT4SteCx9J}bo&}W)0KF$&vd1LG` zdE=A^RA~cssUV4+lx>1-1 zkens~bIgN(bdyL9F2hT$L0xjXgN1s}fmI6K&wwCLJ^sP4ougG)Xa}b{`r-fgP3g}! zk%J+ih%gNWKttI;rYA56eMU-TsGvSa!Mf`$-v4ICX7a<1~j-7c{lR(Y7bxv+I=17v7Di{4~Qr%=O3nTpOB``n- z)Nnr=#6ZcEL1hETUX=YG#!h!GGS&(e6A&;=K)^6vltrrDIr48MlE5F4Hb$pFlo)gG zx3@whtOuAKWBgCc1!qOM;LOQp;J~8A&Wad#pN#`;#-HI8*{>l^C*2%`5}{R!XTtIZ zvj+dRRV0-SuMmzEokLBQfuT*C#dx|vVaa%x+X{tO%p~B^+3a0DrW(Yy(zmu{9{bqV z!a`^eTYuQsWdSlw(9Y(E6#dO*^Ns$1FKGdlF@p9`Jp=37J)n1UVOfy|mhr}%$BPtJ zt0GMDG^RvE2;2-F2ymhSY$_RGKk_h%LRpEBMVBn2oZb)_yyuTshYR01~sHJ6N!U=*ES-*xB7SXI+|TdC7_Y^_el07$n+1%A3v_d zkJ)AD!zci<1;@x& z)Jc(kGlFzJBg|Y6ti7n8fpN?hB&a?1E7w*X4|euR!2ufZ(V?$+P|3VG0!b|yE67k+ z9`ErG^;K%qIZX7SlzQ~!MALv$QkUuQs8{6SPAV`x9IIrJcZ&d}&Oq#WFspRWqhLj5 zM{AWXUE@cO($|j|6Dkqva55u;RSr@IRI#Q%9JEG%F#0wU+MzPdo(E&P{4om5);$_i zdg&VXK1SXdlEtJFxg66^4q9UX)42wSjiJ`Z((gV-jwP{OJoTO3+_!Sm`=3w@7jfR{ zH(A)^!(1hbnUtv3o{iu>PZ|ZVc%|FZq3v+))2)xe;&tcLV3r`K2Gl&z52|k#QQtfR zRCzzB{(d~D1FEzi6tgA$DUxAHtufI`I^%2fgAO}tTuJ{he}HKhs?f275yIN89ae1g z_Nkc|2N4Vk7=B!-Lk!F$i7S#AU09%k<+yCcwrb+kw?0n9$BwCK?AwaR(?5HhRUn0E zGV^M7Ki=29!u&>vw{u z24bcsBvd(x^~hp6SVP6jCLlIb0Rj19fU=6KS2~DIIXEgwy(p~a?xc7Z!Yg;RklhLy?MCzy+v8T8nSMRhC>to&6ej4rog(U~?E^35<&&r6IFho5gqjGsV|XA= zfz~PO;(j|>(7aoAit{Nt)hPI%5*JaurEdv>Sbt0)iNFO&vRKI?d3cI9qdDk6jAuxa z$xu^9M)+V;c=t|P@n+i8U45s`z!eHet=wojWQo~YSrDmF5fVL_Pl+RjLI)a+p{QBZ zf{-_4!1rTw&%&%g@(>YQw6WJyltTh6wt|5SH@NvJS_$-&fD3~itSJWvz#=#!_ppM1 zF^m?pM(O|NSq?oQL__xqsOqyZ$U1}>82T#BK=HxYLzBSe@TdEQaL92NI+EGp5T-g; zKTUN-IWa<2he5ITO<0SUDo`vFQ0(LizGA`_x0vdgK_&;HMTkD^ds6QURy6brR8fgVwy zSSFy@3t@PrjC2z;99ejwOg`m=1TzY$s%9?pGxHenzjIxOh7OACXM%cG*o{22llADyXNY($ggQO3$YzKEC)6_I z)iq%HPnW8qu1*z=VyiP~6zJz}Hennv`jel90+B8T2TTI&3w+9?G*Dxq7Ym+E-|$?& z5;kC#JWF=%)wa@YcMM=wxb0bTb_n(r9jI6iW~f=Wf1j5BAB-vwd+sYll{LqCaHg>4 zIdTe1X%I6&jN2QYOaExUytG!t$4c&hE{!>r&YR&;&aJgSJOwAMFq z5S+qNecN+F`$1v;o&znT+YcTTcJA7yj6bdtU3j6m8&$Qrsq`L(2 zxl?>MN7%D}*9*J$98^BB)ApR)M{Gh=sH>XT4e1(1C;$7J0jzyJz6i|jYR3p69ghx2Yo2R) zVgKI!?QNrlCN)4+bM%$ zqTP)DFUWY|U`vbq6{igi6{?pb@th!OgbG28ZHlmX=;eSQx* zmoeFbv6O@KkzC{c(%^V^MHw9M!sKiC9RxKP`#+~L>uN}osgcMX!bD{b?%7XNW`CRT z!mfQU?B8=pz(;^v_Px@wYcKnp8T1+dAZvWTOdheqQy8%VEXrQge5U14`-{SO9B?L` zL5B;2$7jo?AKLT$Uh=uEXVBp-ut6{ERBOb>M}-4B_i8GT&z5N_>_yiy?8?4?y;FTo0Fia_ye zSVT4$+;eE>{+;`tqbkf^?(U}*=*Y_$5_YzKJ?(Bf?IQ~`ywFIKZIw58=+E>P{Y_rs1|>9V<=`sqs0~@?xJTY7af% z0uLJI8z06}B@u&$;IA$gnNC-JtegL*X~@p@eJ>CVVd?;5MjeoT6QwMc91oDa=S7YC zI;xw>5U2h?-<*4JU&|pTTO4-Jb);}Is{hbg-^5`QDWgs~5k;m?8rNgw0Fvu|?A*1V zC^^2aNK7|#rC!{>^Jy~elPN>)-2TIOT@68WN%u%KUhKU#3aqRW*V7aovP>huGT!NK zd!a>m4IbPScHWDAJ|}nl_j~IGaO~TZc%ZLU!J@HuZg4l-+utF4vC!iOj{ZaoxnBrqg_AqfmgU`PT(5*U)ekOYP#FeHH?2@FYKNCHC=7?Qw{1coFq zB!M9b3`t-}0z(oQlE9Dzh9oc~fguSDNnl6oxnBrqg_AqfmgU`PT(5*U)e zkOYP#FeHH?2@FYKNCHC=7?Qw{1coFqB!M9b3`t-}0z(oQlE9Dzh9oc~fguSDNnl6< zLlPL0z>oxnBrqg_AqfmgU`PT(5*U)ekOYP#FeHH?3H)Cw0ZuCBvR8L-b=f(`vs}km zzf{eo$NI^qTmNVOs_>&N#FaeDHzY`|lI9*j;(>b~SjIhoD=A?&T#-jgY5IYCr{Txl zJDXdED|w#w07tG!AdfuKG%j3>W#Y;qMK3gK>THxg0DRL3QUZ_4Q)g@7Sk|2D`tUJY zxN=i9aE$I$!VJO3s!`-fPbICuon9yv5booTG;!$nf13pCPqsX>ZsU&iTUs`5UH9ap zo4J|)f0clAsKUdYjQDhsr|BKu!kuZ$ zXr~lcp5Ef*9W%x2gM3rarhh9G{^F#kDM->wx&d`seC)G-f98dC511lqp>L|ad)bGcVjEQ&@GL_N4gE=H^*CJ ze`(Zk+J~7vQOriJ5vkA>!$*whU*12hZS!Ey(wbyqYwBE<|M}r0$MrTO9!mX@Z##N8 zSS9@u8Jx7eA}t90v3~V*#irEiA9lElBjuY?q`NA%r|`saiCaS1rSD%+oQ&NP%4BPf zqq`v=n#y6bTiQLTt2Gi?7FkAnJL&WJPThK!iJOr^N$0J1MIvzy|1u_Cym&FvEghcH z#c@!akB!0~TVoqi;_{RHNnM-^*_Xd6e3mik#JrPLnd*y4;Q|ydBL!~d66;e{vGu7F zBTtOvxVQbWbt%umlj5)v-i2QGp;Ss0`+VZ)5~>-A4XG>_t`vn%%0x}EC)6oUP|Fqr z9%5^%c5&BsA3JppTuN;v(o@B~okzM#g+EAl7E6whboWSUX;FsbU1qP zGa6k6qkoLwYc!dR-Z9+#nT>OVaBA+%IrHo1Ug@lzRa>!!$g`;=Qoe@Cb9E|GzB;u! zYkGfqiOBJCHW^u4kk%<_krT*cj%-OHu@bH6Xe&v^R#JS`7x9p=pKM61N*y}BJhm!T zaYu?D#aqkoNQuKwwl*wu>Cq%E@c?A@K&s;YRH*#^RJ?YOp-7cvadVbCYAuZmt3al( zbb@qCY3b3t(#Z8BUzGE&lJiHFMi!C$NpgOJoIj;Bas$b~R?c56=PxYfGRQxk9dx7v)StJyCq3pOmu7$d~pz#i$p`>sfx16-kFnD{dtH zzql+?eq$<~qP*Rhl1`Q;ZX*5ocv&)bQz~&Y;qK;CmhaeFR`45X`z?Sh_!GNJ(OawC z0LmOFlh%i%#1z{9s5gc6KQT+v$y*XrN%iApRk5il$S5Q29(SoGYFaz+F)@nZcMnU( zMlt+uJaix9Dk@Tm(S*drVO6owDZYv8J~I_^>`K=R1C}K6x=E5Za%ZNNSEN+I3?z}0 zBim9nuVQ!OgV~eELm}8%k-Lq*c(-Z_C=4zCkd^;k4OA&<9xzjwETDr)XzW?H#FY~} zI$Sz?g;aB^6uwmh$w_M}XfivtgZn9-vNJjak=z?QmePAe2mXIjNKfuqL+`hDU=~4o zOh*&FkLswQ_iH+~i`iKnoCtBR0SX?{16+cGkbj;E<8jcRBwQ(_N~GN-Qs4?H6_U8& ziN7?W#_lo(o>)LS>7*c~;^}td-Vse{d{*Zj9*sw zuUs*g-W{X}2z~D7-wdaBqw=MGQd=UuCbwKV%d#YHq{M|dPAQj;R7hM>?qy`6P${C= zrKXX&>D?o8(;O?ud_1A!WwBN1^SB$1iIULpsmpWa`{YU2?akw4(|n5}P@mpn^*ZT% zOluikMz7h*CTLL*gz5sxt3iiHk<*u(Qt%5bm?zXnu3)Qd9J)X6lgyv_Q1mQ)m$wqvX2rYZx2442>xq?5o{ZOqa{s}^SDRq& zTQMJqoDCDs2(G+2g&8HbF@;H%OrOw#7P^jq+;n!LKulcATLZE>68s) zLLl~}DU^%}%$_vi0m_J3fL4OtjENAP7)_NAPlH=7hM;p8G=ImV2UNL~2=RY3SYu-!?5FRTCnd5+Lk28A@+~{E3Bz9IGPn)sc8* zB)&WnA5X7%Mov|XZ%UpRnTbb3@%uyZ@u5Ts;nzJp87oojYYAbf`xJaZ%6G@NhA)=R zhKTpEq?s`Us}M~Tq#C&9(DsFp0M~$rhB;E|R%!Q`NF>7D8(A8`a+iDX7nUUnPz2S| zqhp41ij>BO;>!tj!UH&2+Gjn*rN6AU#!aE*(I>7W((hwOBq7lyMXRBUwW+RvyQ{RL?TQEAwk%0se+5C=c|@$^FqFD7i51`? zOs^d$uSmvLu>QLm4}b$F70XimZqCY;FH6DJ%FPqG_o`Fzdm+|yR}j9(a3k`e+OzA( zlMYYSdkTo{Sf-Pfk2o5@2w}f7Q=wDV_|ix`8j0WEPpLvEpdCq7igaydD83q6NUwMv z*xB93c+O&tPwVQ&o>eeYeTpUHgC7cuy+-xFphygV5yf9b@sB({DE^S1;jd!&lY`+$ z#S>E+P27pXm(EP>u4+sKW&A;EUxL)W_>WWj5{AtC+m|BQy7X2t z;O#gzG8x;E%A})lXkZHjbM!YOTVpLLwqV0bAofHmBTeR3W!>)~)sT21b?9hQMQiNA zRP_WY8p&|yR!XUny&TuHghS_Z+zMGv((X}|Q1zZ=x_*7d@{cIlg`^7$6+tI>xxGBv zYl`tHI>8E8h+n=FPn26zV)47U+f&tfF(;WxT<9h)C9Nq1-3&b4Zi%}E+AFznMaN7^ z0xaPoIE%Y@m|y5&LK1H2vfJrX^p+%0WV#~pl_WQWTlAJHn$-pDz}&z|Goa~b!;x}* zipvmZSx*R~h(^xFqw|KUHQ6)e)VT;De=((!*DK_=H<8B`zcA;J-`$i; zo}@uOXJXRg=ScI4csFUE;iV!?^OmyaSq5pImo{%r6F62INWBKN2{{j-r;8GKW_cLJ z{8LHVs3P8_5>*>@SZ-9oz((Z|m77)7=~tziLoz3Uc?^v_F$II5XH-r}ZepRFlulM~ zQYwOh-G&SOLFM3|pB)t^k@_5ABCV09qAybh(U%kx=)_!sHudW;lJ2K38vL?8Xw*>^ z-P5w@M&^jFtsi=l{tEgKRl7!2_vMWJ@F48xbdB5qjg&6c|6^1lY9o%zjff9yL=F+T z8JFn)ei0xtQQmQ4(%OZqA78vOyXKwiqpPxOqQ-0(Ps_7@T(kQ3uaB-q=A>*mI$?QM zAC6{y;ZZA*8cATwS1)P8)V2asi1%8k2NZ)T$kK}RqG-G-eXjVb2&#pQHo*IG+DPrbg>qM z22vX>3kRx4?pQcxB&kn1fW|WPB)@6QNIGY0^B630C}UIz1ef=2xiw@|Fbql#Btl^c z*aVO)sUG>n!WFcXalDXHR>-PlZIOj4FKXt=3IdH*aJ}l1hz`O_UHbQLWlZVc${6Y2 z${6~$GWM1Gmm4h|9xXMECaoNko)n97>EF}-{r1>P^e?S3Pg6zhUv4zX1`;*r@Mzk< z1o0sKOEICSuR{-$+I>lmBrn;&glYU3-~IcSknGb1KvBj9_U~b}mza?5@Rd`kF&J zJ^3p=x+Vq))L2}KH7-^>jdi4kO}{Ke{-iaxzHMqGtKQP1y8%hoy^8^e)h2~i;B3oQ zsBp()^6EJKbOlzd-Qw9sx_0K^Wc;OZ6})A`II?UnU4<1i9FD3Ta5qwKN0)#@utyp0 z<4+hznCt3htPMu5a$Hv^6k_EBR)Nv-{`FoIcKxH!v)OHe^tIU!Iei4y`|>FoG`Q~JsHfJHhuKA@ML9G|F7 z9bs#&TDlghO-W}bWX_RDE*CZ>5yXZ+8hcrVyunb}bM z0?9ldihs&7Uz8y`=>1|Sj(;DEf2Q?Vs#h$2M}q|wC>B(}oq=2+6@ZhaJ|z|UD6HzF zq7eTfhe8IqN(EXCL7m<~@`9AM!pXFEP>Un(I_uXj6%=2Re*Hp8G4OMwU)f{d6+{Nj z8&DU7|Dxdg3kcFiknKAXFQ*Ay5}#u|)8URMW1lyY%xVK3aPK}=@o6K!hJ+73ZDcD3 zs+-t<*+JH@cZ}gM_wXY*vR?UVx&!eR`m0Eh`2S7uNO>v+-`s#3)E!HV#dO7V7}1eX zs5uhJy5Bz-Z_XNV&4%7N7)M^#OcGus(yzrakN`z~*jJ%B)s~GI`}f5&&7p?oZ<2Mh zOp+^~OTv}&Nw^WwOI`UQtSrR2#5C|>F3wr;586)t*gvHn?iJS&b{!KV2u)_hD2H2O zekw^cUKA&8T=LRK>2VX&lP9KA6VutRS zIkz@z25|f;{wub-s9fJiBM*e)Z-nA+hT<=S!AL}ln^hzfPAfIY-ee^H!I`O{_)DSq zu2B5>P<*#Sm6AQJa3)KSCO-i2ToeouVPIKqg$JyW_{)*_OOg2QNc;fhi7@r6TquV8 z{ei4$73-eQ%RvLYt4$9P(l;%#I+Ez+*Q z2N?W*8FYX0z$CUm**1La%!!d3mxTK9rx{E1vHKK!>E#LT zOx@y&+tBa_vn%3U$9;)N>CvVHV)*ID6V-hB=>#h!<&zd#V~Vfc`kyM@IiB`^b$84W!L17g~Y*3~T z=Mqb>1J|*(stR~|(@j;qgbYAh@r-)X$trAVa|P3+wp+LY^w(1GzBF|-T-6Fj$<9*F zc?o(N1=Z9a33_uTbQfYm_aQVV7_2D61U9hgv<}V*(D+vpyGJAg2L>>%v7aPyRq{EA z?bR71WZ|DWQI6p-6YnAAUs`VX`Ehw(t_lXEgS+JnNs;G9gWxb$6< zWf^+-e1>eQSvc`S5l4==#5Mxru1?0bvHE&EU<;5)jMA!~KJRSTeMdYj z@&PDo=aF7Wix7k=s)*qpw=$Ohv3gbihRbR3T<2o`7Z*8esqiHcZTW|dCq^zlF*2E4 z2qTYPf?DSbUsQb9Xhl(}@TZDjH}WYG2>ms2YY;~ywGaoAYHks0IC`Y3w<>EtYMDYc zhVGAwoEzX}0^m+nPmBG!TH>Z4&`Ix|1R>{wUH^4s>CxyETA@$bu+Qm91?he!R#Q_r zF%|T1oivS5CNy(*k#x97T2mys$c8jIeKx1#@M0XXeTl@p9-Bf=pFK7OYJjjPCqO>$ zdHDBmUM;?qoEXz3enP-bPD#doLK&{k#{=0T@r7+sBX+0ZdhZ@VHZ|?Xk!~89;jks$ z#~)}8ILt@9K8_H$J*yqc$^{_JZjxJRGa zxQ*M;vT+OY{~A4tg}Wo~4nW%1sx_bB9$mYB3-{PMprAh)ZVZ9rIQbX@y^+h4j}lhM zPlg*cI9$ud^;@3Up@Fjx4!3RVqYqOsiu1qoBJ<}UbWIzd+}JYOuol-%&9(s z*R5-La{ZRS4GR-+9_g2-9^1AJI<`aBbIR|d+_tS7*P(F7#%=3%Jh5)$wv8AZ|DPS0 zZ5%WCnpwBcXc#N&g>2vI$=TMZ?o6BK>@?U-@$2yT*3@}@R(6G9qABHW?Uz>al{+gB z7RRm>aH%DivE*_sxqORU?!+a1xQ_TA->s9*)=4kdVdEyBOMJHu^VWCk5Kl0~xxnw^ z(*pk~ovh2?yseHJ=Pq&%rf)Kc%_P_sk;^0@eRkNnZs`sCG91=rz?z*X)?na~iy9{C(u7#MU%Q2w9G0Svmb1B2gmg&-Pm*ZVq=2)wm zmCLpx*H{cr7X~1A=wCuEGMqZ3FDE}Oua|xHX-4-Y=w7ydU!f#FTAjSr!CUOS#l~B$ zyw$?n%sQJ%XE*8`M!nOZcj@(cdV^bU@E8mpqtT1=vSyRlV)9tcZmT)ZYH``DF1t0) zVRJie9;e;waQGZfztfrTa^>gc`SaX9x7+9O_`F`f&*%61^Yily@(T(J3Im0KU{O)9 zI9O6zTr#YrOe`%6m6csF>~*7`H~Dz8kGJ@EtB<#NdAnEV@amjioy()obL-uCdbi8q zaT>f%gU@C3Pp;PsXJTd`f`}-3&HW3 z__`T#vh!9uZ?p4uJMXaZ4y(>?(b+6It3_|I=*5B7oLAS2RqYrrWgWYeV!2n-eaIwUHq11c6%=`H;@27(IocOwE z5?KHVvCQqK( z?KbCmEH01L>9#uDHoM1W^V+RGhsEzS`<*7A%jC^7d)yX}+v@e$d|tcH=kWWT{(M({ zL0*2LJ3rtlDDnk@`N87+l9Ix*(n6uEuzXnIaG`L7_9jkX4!hH7 zb2+Upm&KW9ak#B^!nGaa)$VgT{4QsHo~yu}SLn$Lc-=)lPtflzF7THG3Q7ZkvS4sn zutdNRecfW=Eie->78nE$-i~)WoI0mV=W^i$Cq|{-lc)FQ8GLyLf1V*f&sg9#7P?IV zx2ec&4!X_7d6tqqYiXXf%w-$qvI$PR;Bbg`r)YDER+oUWX>pfX+@)quiP>9h_61G; zB2#|ANXMoj;MWy-xu82+?E13A@kOcavogyk!%QCwuMhL`WgfoN!s@ zz-e|kO-`4|m1oLxqsuKGkJaO~d3<)a-{H=8dJ0_LLYFV#$}e&k2Hi!)-r^E(X{mQu znO7X<4+;J&#McEgKg_~oc$V4tQafK_=ZhV>pp!5caOw+P`hq-tK9v?^=5-rA7?@u4 zqlxsR&+MdK>2h21+%~tz=JDFSUWd=?^n0B79#?@Uuh8ob_}oQaPtfbd+Y==|f2lve zEWeiIo2|fV z%eUD5W{1z@^ctNWgUf9oCc|ZLJIS!Y;PKf^eyb_pVlFV73r(hg$yj7I1TA_Dxe_~9 z>dcnqeL2kYh2Vji_3L@RfzLPc1xCKm#0SiLz@jUn12c%;bm)tm`hd$&=rRF3^JOwyOeV9L{83|OHCU~Bn@wl4>rlhtFu=w-T}D?P zWQHN6bE7BnIIo-Yc`o`r*?jkf0{54Np7R0k`6Az!LI0P<`R7aWzbN&8UgrO7nEw;O z|FQUbiB+-wcD~5L2b_GNQ&-^771(u!HhrO0UtrPaTMT})!EZA7Fp(RL9+Sy!GUXY~ zE~D9LvN+9Fm&NL`+ME~wHoM*KAaZl!=W@C7TzPJ%+wJstTwZUU*XQ>6-Tr(}et|c? z&{q)f6&B?e1q+Lci;9V!m6nzb8#YYD!~{Ki{qJ^z=^k2^WO;_D^0UZ0)g1mTJ+Ts%L+ z%YAH#rR?6aKuR$2QuNX5|M;~zUmJ1b4PTQMjp^!)N_ws{&ClTy4XJj7L>lhbUDHX? zzii++H`l@G_!aLK+J3KxqaRCgIu3`Nr=BzkBN9L1E?7B)_x=y(6&4u$9{_*-Pi^>=M=!WZVID6wm zUlYIf&o?c&=}$LrT^wqtZ20+%+h=k!pSgPc)&KjNZ(eh8*7s(Qn=Q?`qmiHa%wl;L zT6W@at6E*TeEj{;nx@={6wqbd8!R-({ z&S73>nb%e7%PaA@i+%2(-&5rG2K>Ile18EP!~6n&0Z}J!L6HXrwXis^u*4N8bq2~D zMZ;{xf~8b^z4ZTK@7?3$s?Kxay*2mC*36#!MVCD@!XDewSRUI#2zydlzJhJJwlTM_ zY15`jdU_fz>A@zY4zwjSNdw6=NA__fyRs#HvH2Q{h-8$u5X*`wl9>cTp(Mo(DiKNQ zqksVuFkyV2_g#CBMus-$kMEEEvGud(viI8S@~rpryzg3jk6muC%SnfvaL948406<2 z7je~vU3DRsCFr&U+!obi^?R&74=9BV90pe0quAXf;0|ZK6Rg$lbJ_fEt4e;|8iYSk z?BuxXok5=~=ywPGo`C8N1e8FqJ{a-^!~S4I4MhW?STGb1g%jaOG8}6NCmO>IP2r~I zsHR2JV21(O8IWBdJF4taWv^dW{7g}NbzrRQ7%jniYX~-rESD{+*kX!3uGkZbBk6TC zc%6-2SCiM(>~U)zcgpQayS!IxiNhnI9zCP*mCH?*e)!z_M8-jskD3}a~5)shoNGuwS#$u5enXOPf8B8<; zlZ}Cfra)tJpjiu~QjbcqEZ50(b+W}GTP?E9D%-7f4qKhmhW=UHc8kYh@jBQ&I;|v5 zE_RPjd(hmv19}Ei?~g=%kyw2+ULQ*+@uWB2;7K%kl1;A0W>>T30A`@8sd|~D z%`a=JOsp(W*BGp8z~m#S3R~h~ODtrKhOChwsH+Wk`21iR(wCNceIzREY)OWB2%OGJL5a z@=jyqmraq2&5<{>$OTXes~ob)VY?i5$PuR;ami74UDQ(-^AZh<*IVK~OTuqWsMbWl z8V}myAw+`qXxJW!IKmM}DB=u;U4f7*5CjKvtExx!djmctP_G1)`jFQb_V^(&&gb*<;PNc(XO3S&~{^gC;j>mz%WrnzeT|?H$Z!NDc>Okg_R+3ZoPJpv7|I6_uu(B=x*U8=+Fces5{ zPrb{lxD~Hk@p$Up9v_H4=)OZyDJ<{>UH*{UANHsbZy>6Gx`yJuaKax+24W4NL}R3( zDbmy&(XtYIej))y$yWG?X^Z9J{2&U^T2B*#?v0MJS1zzbS*^R_Z+9 zV8p~M_4O8xMXYMQm17ZG$Y%@tkRGs8dcfz1`F01EG)_4*NNBBi#(gy^(|`l5|HJT#-g+w8y#CzTbtamikJDU}k z=5?jK?zG39@pxL?-WHdVfg5nvryM>FKEUB`va5~uK!ZJ)w1pD3aNHV+TcWYLShOx4 zkrNRq8Ah~QX$<|UDRikh@U|9!4`_DCO-{MdDdJo?;gTuNg%Y^I5iMblCFHfR^{2!N zXuA)Lw4S0LZ@t6gBgt|h+k>1B?7YuyL!@qaR)@RZ>Gru?ez(i-ajITtKyiSNhkVG% z*dnSe8nDKK$f{Uj0FsfqhM3eCt28Bk)ttDbB`B++%1%xXxau*F98-Gh6i;2fyRM$) z#p{HzwR-GUug$99-fg?h2kL6Gt5!$A>Ihn$A*(BFb4Bd#sKXs~dSWhb%&o*dO59tY zP<)Acf70hq`qc(C&=3eVa){JGK0KNTlLv@JD60~QHiY7hfh73=f3xO?J!|yKjXrXh z4alb;tKya8Fc|_f7jgp@VjN&WPAj+&901%vz1yz1?Or%dufwB|HUb(qX9&EiM+tcA z1Bx%G_=EK-cyz!Y4ERF

    >;)L>K%#r%jRBSd}FSVJJ*7)&&Wlc{J!D&Ck$Hf0){ zuWHs7qh~>n9Pr4hTlTvlVRF3-(nkCYEDf&7ZL@f+7O&N+SgrL|tIrBev#B;HCe+gr zvOB^KXPEUZ$eAeQ0sJ1X&#TlE-^Yv3gV+fX6mlH?fKv^^^tl6JPcY&QMwO6ZHNwe2 zxFHm6jKrHF$>vz27HbCA@UpRR%gu;+k(DBWtE0q;e<|sGyTSWbqx;P!_v_8>*R)41UfJT2t!~-olI>NZq31d+My}Ip zp@?Btqaj{2z67j^k#ZhzdPCcJ^9 z5^SgsHTc4f{z#J=Z3@JigYo82qB)XG#TrtH#!LfJoy{2pCor?F5M?=CMw-m+lRfoh z%sk#YkH_M5Ti9rF5N@~n?FiczreK|*v@XTvLfBUCar<~GNzyz@(95pL>yLQ-QALd@ zfp~o|Q6EbB!VUgNqd(fD#+q2jlHp`B+7OR7#*tu&Tc3NeZO?KO5 zk6kt*fI1@rut4@H0&rQwE?dN9i@NMFw>|E5B;1aq$C>m}A~vqLWA*Ns&lC516MiMB zD#<{7BIt_;DR&VKs1Y>)iXHNWg7x8$5(#^wAx|vmjt8BIkUbf;HiYXM!%|cDz2@*G zE&NLenH4)Ctk>aRx(< zP|yx0h1@PtZ57#GDWO)9zF#%?E;ahzZt}g=th}iyuQSmI1?6B+4g_QsDbs-LQz<+_ zkmB`OJU)xN9_b6K%WHLU?!xV|xhV_F$!j~31WupT<+r+2t2v0y`$1OC*Wz zG@=i;l$}c^8852y4x`25zkYMp#PUEy}Rm5z_``S+HIdXya1i#xMW zbM5tC)z3fNhWqiBd8+s0E&JgVe@A`z_`Dm}aD8{S>hC$DKe&VM0sQU#A>E2Ve|)#; z?bx`kw_}X?Oox6757?N%x?=Tvm%`t1tD?A5Rhz(q;pNM?g>k|6i(UU#aF&1PBZVL4 zPZus+ET1Yku`i_X41JqCRk%F&+pp~Xg^EK{1vgF>uzv=Je&;PMweJP>?ib|hLpOB9 zaK3s51>4`!#6vkIr6%tA73Xg+{Dve7V2o6T`+?7*5$eiR{#Ur0nA$GWC+ZpRT@f=@ zTOVyHq5GoXEx`H2%%c1kUN8Yn{+1-pTmH4myH^1_1elig-5ik)j5ik)j z5ik)j5ik)j5ik)j5ik)j5ik)j5ik)j5ik)j5ik)j5ik)j5ik)j5ik)j5ik)j5ik)j z5ik)j5ik)j5ik)j5ik)j5ik)j5ik)j5ik)j5ik)j5ik)j5ik)j5ik)j5ik)j5ik)j z5ik)j5ik)j5ik)j5ik)j5ik)j5ik)j5ik)j5ik)j5ik)j5ik)j5ik)j5ik)j5ik)j z5ik)j5ik)j5ik)j5ik)j5ik)j5ik)j5ik)j5ik)j5ik)j5ik)j5ik)j5ik)j5ik)j z5ik)j5ik)j5ik)j5ik)j5ik)j5ik)j5ik)j5ik)j5ik)j5ik)j5ik)j5ik)j5ik)j z5ik)j5ik)j5ik)j5ik)j5ik)j5ik)j5ik)j5ik)j5ik)j5ik)j5ik)j5ik)j5ik)j z5ik)j5ik)j5ik)j5ik)j5ik)j5ik)j5%{l)KuTJ+fBD{x%l9rH*X%9#RG!veOTW43 zopY(jTFQ1wRTq`R5`B2}D)C{d97w;ms6$H0Qu_5p<$^T#CvPsI(y2>}(r+&+yCij` zam_LHWd04cyf~JqB&SaVDoXZ$S8nZ$CxZ!m3{-xatuKGu^Zb34MEl$m-GSK8R4JP} zrY3@=tnzp!`%8S#-VFw0=M%x(5+DD0xk<{tJ6Q;H4XMv}R}xRFFSbm+9xZQYd{@V%O8%SD!WwP7fkzF$C$m#CDnOSuRjicpD%hKO#sVtwF&|Y44W_IaQEpxZNwkTfq#=4$rDP`Mm z>D;Z~Ynj`*ZM`MhsnAK3iJzYvkEwIlqsZL4_1i4s(C9N0OaH!Qf2Oj0`t3mFo~$(x zj9n-wv9}Y!iZcC2QR`ludJ>1M@;=hoK=k_K!0I^V##*#vd0pq1~5mA@1%{1opr{;Ulj zVi)l;lbO=Hiup`p^2+}l<-wc>dR%nT2KU3IJ)}oM{RAq4?lD|XEWXem! z=sLO-xeg%Ao%K@U#aFV8))?BxvpeqQbj(x zKc$j7Rg@rl8n4{p2SqhFd`O_`sr&H*(`Zbomf6K&PT?m{-dq*HN1Mtuh`CiEd z)PUEI{v=$uycB3YqWyH)vi%h$lhOWl8DmN)=;E^bx1ef@cBx#6&W$GLcD=S}3a4iA z6$9M;TeI(_j;rtOm)^@zskcz`GtgQn&P-x&5QmZez|_hIS1J@Uylb31=96pgRl zbnaWyzUhC6o;xc&@kBfDC53t~^IoR$^g#5znTcm+rp`Qf9`X`%op}y#bI@oEJ^AUe zY_OorJ@W4_N7bLV2qD9KJ~J^jyM7yh5e92!>U=p6J3lp>>c4!=r@u1OZe#q^_o&Yo z&&)no9&>Ga<+aMG(>KKSJwH{cdvPn?&sHq^epKfyzo^81-1T=YzmW5P*D|%Q@}0tq z+0Z^5DDBI7*H#jpzUS|Sowu(ke^ZHlYhUc`C+>^AIlJ`jMHQ`c@!kwP2h?j#CHvH& z7_=+@6?J9`iV8P#r@DH!{GHg$s*_U}%a6q_%#@z2cuxnULS!<4^Jkue-;pH=73?o% zo$x1?y_wjXI5@lX4mBs0AN4(BIbR-8=3t4Z)TTHl3?qgEfT=5Y#nmNrgiZLHWc}z+ zo({oAK&}Eo{Au*3T(1oe75iK1!-;`nF{j+q-2BRi?8~jsyW8J=qN{gbrTx1B>2CDu z+*w;C)(lB6)Rmt~!?NSWju#>IfBI;8yhXFag5n*bkp4l-xef)>4PiRojJ{>k|J0Hi zRw2k)ZOM5^RBKz-iYc$8UudZ;f%R*H0w(auLq6a~IEL@%D{a$Iza1Kte5s8$cO)wtr(aD} z)=fX2sO*`xCo9{g&m<~0W5)D64**yJbveJ86S_-)KpPo%D%j~Z# z&ZaAA7!zfB7H%#(2POG=`IF5U%3Ht>Z{J!L`(bZpf9BiSAK*ajEu5@xjy2+KP5x9% zEXp4yTJn###60DDH9D=7*ETE@R$=n3__>a{y7K2W0P?Z#MjOSaug88|zTY@>ZeyJ- z`+ZyXse)4eMB4ujT@d>Y%6}IB52Mc5H}K&J`V#xvxs8tfmF%eu)c^OAl_gJ3Zf_DF zmDAgs&fV@Pe<3+Jn-GX<*Pq#3XIJNz|-)ZQ2re$&>QF?OI-Dk=_Z=UeKJw+uaTgo>ypu#hox_;C$ z-l=rG(6V;Coka5Si7C8}OkQpxG%CGW6<}TZWUHJaXbF1rOug^@KEbmPlmEjU^2I2;_*(k#k^Log+f~!AM=Lq)7ve02 zxIz0jyuw9gNb%1qpM4o4URKKf=Gv^Uchk#g3)+W%_%FV^ztU!xHAjXDd>N;pHjB@o z(i^B!(pwwN<}W7B*s}E)uc6@+{^urUCNIZP*9`P3_B{e^ZF2TZ`9zY{-3GyqT`aip zHZgPdCX$L1$#PGVezK`aKZ${bE`2P`UaHel>3*SnZBxO6tC~DhOR(U-&TOmhD1!0DxC+eWBNg6s%8l@144P3f7g+UrxbjqDo;-QGE~yE}ebuJk%G) z?n}{=RGkJHeP)Ko_hZ8BBH|Wt1+Y0;{$C9z^WVZ`uqa(&w5gS+ewHG$*&V=qJwfr# z((#sMu-^B4Qykk<@P7AS(vyD~N3V3devB=vb_oRKIP9171kC%SKT$8C6I%A|N=r5X zqx5`x#l7k7ryqFWz6b8@jlHTL==40VR_r*w?+KiJ0Dn07GI4@)9rAVOI;{9#_Z#Or zy!daio$IjUxC{Rs(#bp&Zf*WYEruK6m<*cd`d3oF@4*DHq5C?VsHS;XXl!`h{v^3# zcEdAZb>FWvzd*&$t(LQ{b7vhJpTwtAROIB|{5y-}%a@nIfsCb|Z|;1{TB&Ql&>_uw z!O67jJ0lKde1Jdj?+f6XZWXkv{iH%ens{w?X1R27wcTMJgLXn=H<+E1GOO zgR}m3Ct|Y`sNq43`orJtNp-P1U~3NDe(I72qYdjhLx6nj+(z%Y+v~pjVgt^@OMA)7 ztg_?G9{m5sljkBLTx5%Hxp5Z}2TAP~u?@Yu_ zcTKh|&6Z?Sf-S86V%Hv(9Th4y`R7u0s+A33a zdB@3^<)q!+`!AJOxYI#oms1%>OQ*FKK2d_s#U@>Mu zzyIPIc#;dJ@bRvKH``854M~Vjwk%_=%Grw)!`Y<^ARPq$lia;ZvnH>pc&EPvsvu!P zaN@KLpKTkpb$I>Q>38ATY#-Lv;C0XG@6eaKPIuDVCr_tZ%3o~xo2$y7YB}@V#q!Tm z7oNRbxcAu#eDKdxC!ei=JmP%us@M$P{^6?FkMQ=wRTX=uQfbeAxRT0#99PD^i}BgA z?pI`xt*QLyGgGPG&!pwd6qL=`RccwAFSSfvJcCc03QolPnB)tysm@GZ&dkKVK2=G* zaIxH-!Tbj@e4bw}OjW-wpTvp9)vq~xMK``qoqq1j#pR`cebJJOBNOk4$AUFHgNpr?iXDeK@lx zGh3-|_uaNgitlf3cU&wap=}pto_V=+>cW(ChlD?QL~Y0@*37-2|B@_49MapDe{!eI zDM=sy0-di&yB-_u8~m!aVPK#%pllfJ*Gea}jU(elWqV26UHodFvaL8)8hA`EuzT=u zQQKJ@?AO0{_w^NVOZI$Z3c zde;y34H|8U&(yj$GODc~87Lm<8+o{>Y%C3TDE72*1e;5>(*Xv#WkIIZRt`~p%VJB8+&)I*LLje z?b)zvSMN^k;e76D6j5&6p$!10#}w8L2}*KrY7IDWn`N)H;U-;*`LVLd|DwT z1rW}sUR;9ILP5#PYC&F@gb?|LYOdkTbF+!ZHII!*TGkrOAn>F3jk9Bwwyf{ure`bu zO5qf}qOp^k#7Af0Uiim&CL1^C1@Qu%^j`oYCuB$J(2 zExqm9O!~HK@eiNoZoU6n)OXJ}XSBN6pQFIi&s_Vb&&!WazrL71)jc}hp5;%LN2fQ4 zPu54LKQBJns-NuDPmV{YznVqAR7ox`4W{>AyY$wc4cm9`?A=J?hv_*!b(ee;eD(ysWH?OS$Bf4gX1Pw)B-(*KBT z>)n2nBrVz6+r3`8F5JCi$A<0erA^_j>(+0S{yfr6Z}&!ab?@0AT?lXG_nQ~(*|2lV z#+#-7@UAVlY>?(+n>TFTA=QVk-?DY9)E?N@i^2~D*KgP={W93IS^B5IM(J~*9%)f% ztF$GwMLHMKq*H;Mw5@qvZ|`o*^}3rkNPjEs>_)>qOQpXHTsi#&RR-Cg<2DcHAXUqUs7z#A8l%PB~C%S$QAzwFt6+yCrKdl4R7OnH~6 zAUSnV6Ln`jt4ra5{C+9Fr9S^aeg0qT^DBIXaQ+rYA(;P&qwt~p_3pyW`4cYnAz6;l zMK3yJH@#o&lr?&PN0l9TFUa`^tR{Gd@(7%yzxEBz1X7UuXTYzD_sd z>- ztoYiTps3_-$!oB|M-IX(=|_5cS7=(XI55Jq>s9FXnb(^n1R}AyiYqif?~%8QF=f-P&`bIR678ZsU0f;ywO%A*Nx-F6I%b^D7rri zmx>0r=kwa(!2=_sKx6a(`jXGL9vd7SfQ5x8JydK%cl5sl14Zgm-?3s5h#V-Q>4#Aj zMtHn*n2|eL!k9)*oncw!#L2m42d$Hs~SII&}swp!~n zPU+RHuC@(2vEYx!)u|mG$C!uE{K)7KfdE{U+`6l|x@4Z2^QU@(Q=A(;)45arh`i3K!;fQ^Oj24rSND!GXgXPcbHY ztVCkBThnw0qx2L<`vyv*BS(fnn8s+thal?jD^6ZT*)lrPH!?UrGE^L(Dbwi})y6JK z*)d)MIU9hK4)t*(y3bOKE;2g<)_uis=*H#posFbI+Ahetm#c%%>HtS@&c z_i#=_YiQJHPRp)b!h__o_Y4jV715?XYz-8N9GtRs5K@eO9EaYKbRHZY=^r^z6i2vO za)=9xjpPnfYws^fPEpx)Qm|!0JuE&65ajZIY^3uxg(kNQcRSgq5218X^JS335d4qD};J_HHOdnZ_ zF-$w*oW-0CA7Go5zHUW+<%Tp6MsLV{E7zBX$t=}gz$b|s7_9*rQi%h_Lj%Jj$6-l| z2aCh3OQ?kih|)bcx_lUh43=r|coEh^>wj!?aBPGumC+BbmRN$a6P*^;lICvPEuHP{ z+VK&>j&)58e?$KWgp8$K)3!i1A1;wtF7F$LNYEE_pk}^%HWQym#Vorl8QdUf44pVO zaV(5J)+6DyKwLqu($g~U? zV$KzBRBkC1k7F2oX1>ooI`Dc=N|<8UB$VS$@ugcA6oEVp3iG9xFgnDFS?v+4tFEl< zM~@W;jzcF!JFv}UAxU{55w+S+%=16H>>JX!_u3#_PxtuYgM-@E(vjoKZx|iN8+T#d z*6!`sE4vO44q%9U#i0^uIBYubWTY^3xPkEzauP~zqv%T2X7Ad4!wowP!@YPHpZy@4 z-PWd%#in`RDhA)JjIg|trebEe_2TFuIA5)gBoPD!gQo!)W-_-<5s;4(`GL?F?nzYG zqZ}baPQtAp=v5Bu=2&MF(8b((W$;A*!0>SrDk2s0;gh&(gHjxUiqz;020c1b96p8_ zXU{LnZBoXeUmDbXtgqM#%?1}EtsXCx4ujd05ZIFi$!%7$+c(^F1L9dBL%K;PXLztw zIspzvrMAp>UK>1dZPjUy4<0bANbb51E>mq<)O5W9{KdzuM!$I?vqQqB<+cHN_CM(D zLLhZ2cO2+~m*_BVe}8eVZ%8`~M^_6;uVTnCQ6gaYFi=>aCb=C(m*7K3i^AlCxG3uk zI2O_uF^=DyAJR^sZa5Hea#t1K_j&Bx?&`U|5$G(`OVddyVSdAWwR@D(VICA90o4VK z(T51b0+R`*R6EWaYY^dbIv1QbPq~|Fis;W!dtW+9B0*mt* z?JRQomrn8lMcCk+LWC1Vi+X%;^uTCN+cJ81xDPICthi%%e5feg;`|s|AraaT`~fjN zR5QpXiCgX`ctv1_CJ1Ln2>_ydtf&B;nry294*sTiMVmA?dNo8%#tAZ*$395eJZm1p zFyZ~-;3!dpLWrxVm%2IT=~<;cJOb+uTXPaKrd#%$LS%`dM)_^GTn*kMCS+(7jJe8` z&}|4YE*1@m35Uxv#?Gn;WhTb;aEW}VE?PrW9b6ilkyZt>0WpJrDoPP2 zWa5Fo^bHK65}h#Sl-@CxYr^r!!I5#TAM_g9b@Dh@4jRvG!!_drMU;Iwj#(Wd7zDAy z2?Qd?2L~YKs09d?#=tEEJ?zgZ8<3j?)S@CHmPNE+D2PsP_3j)S0pTO_hGM1RWBsiP z4e167Z82Iw0*-?z;1Dh(OjsHW_RGd)2(A;sf;KO`3iNZRZy5eGrw}QHuRIK_cqYXV z^j;i7jm1%7mTWn$;5vrJD$HVY3a8k}lt3m}?zU1UL)!&I)~XzYNQ@z17LZ}Q-G{*> zOE(fNI6OW)#Gvch2Mi3(k*t@{7lL?vPKn6gc01D|b)dK_yD}-RlG#?u{ znkD_<>j`oZ_;N2X`VBl+$Zzlj8_kpSRpHdO>7fJ)apWb^2vjq5p>G&GLn)Px3wg@^ z=92XzL&u?_^WEP*NPQ9LVB(J>cRx^KiPzgDPC?Qo#)On2RW6i6Z(Kp(MZMP}^QC)o zM9L`@bcI2rmKIV+?WWe7TW=wK2Mqnlji4HcCCM9Vd>A3n2(lh*9Yq+xQ=QvJeaPL| zsvLtMuiBRqCKTbs(UAlF#4wH(@kw+60y-{cYaNV-9xicJXrJo3Wq#^!gusF9(ozSB z^G$6xx7~tOrdJ-Citoy z3Pq3T64_fg29jb?59=U>C)89`@x-JQDP^EXn51>%41W>%Gn9u=i*+8#^1zj`nXGCb zjt%wYlx_@-vtu-|Vruo`h;{Yp)d}`4nl^N;Dg)yb_`{GBCNO1~B8-PpbK~0Ja9?Q* zsSFH(Dq*TwEzTJ(HaGCkRT+VWpjk&7hl*SoJ{>5cGNQGln5gGy2@@@Pb!3DrCr{1D zsB*CQRfxTQOqczt0+L%oM-59zn0L~W*NP4#0T8AfLOyMT(r|35*r#LZO6LLtrC}h? zc|i)C$xIsa)6xbzkIu0fp$XH0Jc6VerNoHn2P=%(g2x;ValQnDSAL-2n^^7 z`7-Ja$MBq=+MSD)VXsF14l6+RBz)0Y-z!I34C|%NymPl2g zzwG&Nynkef5=3KAy8&H>6(Nm~BC>;Mm5c+W6_hlLN?K$=Fmwbn~3MU-#S7)$RuG=kp?D=9ebw!62r2U!(MGgZ5mNYGmA)n zFpW6G7J}lnp+4m928dWy$pnuHIh-_Sc0X`TIc2l%bJ#|*%(EII{v?Bo1GN5n5bKJt zA3F1)fe-aD+vs^jG*%L3;~;!F+Q#`p%L+O;%s1PC&9l|xx-%K%`Ym3pt|a235VQWM=~k*P$1(ZOo^UAI8w zW)Hy#h{_H@NFcN$L#@i8;=#dj1RSsghGhU_(+5ResdlbC%~+(3yk}>+Rbf0S<<1`{ z6N>gpl14^JxkiQ*9H8^))If1)c)X8!6weEpYUnFT6)SI*Z!r~{CoSX)6ksQai}3XG z^G25wK1Kj=0I@!>htq^c3#%oVCB%`~5<41${~Knv74_FDhX@sP|3i}}H0TCa1r9uN z3VAz&o9ZRu;^DSvI)vrsVX^_^E?&v>$#1}WiE+KZlN>C}_Yf0gGzVc8CY)IhNFguI z=u}_#z=S(HaCBY-2Sw#D0t~VuXmNM|UIKQJ%-e#gAzLs4%8QVhpoPsNwKjwxpC96e5d3wo8|7Z6%M|u(^W&VJ<1#hW24^Vbka`bWCL34@2Zd2uta4 z(5vdKQqW0$np3uLFs<-5>}SYN(h0IchH~#192n_)j8uUIqpx%rMRPEPw0g|yMaSXl zbg>0O)l9u010YP?19$=Q59l+KcbZ+glodtOwXdBT>R7#cViD6@Z;kn2N?GoF=%)c*my!;r&mCp z`X)qoaOlX$2E_#uu%kSNpmoI;TaQw0ctK1Eb z70(+F&0x?xpN82Z@Pw3L+KIwoQ4w8%oG1jVzC_1Dtn&-l1k_*%y@5mx#Mu@G1huqm z#NQIZw%9_7S%Eo)Pv-D!;dDUPh$pO|u>eI5)2xU+a5c<+#EZdMy5q?8L zo>yk`ZL5}S#N2~YKv^LQqR)C{b_^@2BUnx&%#nP>5JY}yF~U;}ijq#y99jtKZ_V~2 z?Ag91zk2l&W=7SLd982x7}kW9m2J$#YEdGqf{afQ6~T|ds<0?-1X($O6Loii>Y)mIaBt8rrVGbn23=MRb&dpCjRRVZn6U2n_>;HiS(Um%50s^2VGz+5F!hP%ZLP(JyZ$}|s z`h;*yh^Q7hXVP*36d?x30$7M7?xr18jMEh=s~gSgj6kSBKTuDJd6hBcU<<@b*qP8k zvibJ5mFcP3rUi733 z%MPDGW1?r6n}eY69JM0_kLrwNtMSrtUij5o^7+-BY~OJeHAV;4!Ic|n1dLTIq3Ko! z) zJ`9ZFn$8XanXLy|ehe21#{DoHzpz%cBxMjbvV?l_wl@3|6NE-E(`W<@>Jp}9VK7+P zFt;2?8<$}YkqSDD=ukL44m&7Wj%|0Gp%C89&>S+UqB}(Kjqd2Oq02gT4r?_7M@L|L z*xhlZ^Wmu81rc$;G;wGOgMdQ#Ky__lHisFZOf2WPIUGepn0t7Cv7rK%{YDNI5F6oI(G4z*=v5C#p=}3>gGY`O z4+}nK=y5l@ClTpwxLRR*h_+~!De23JtHavAEzu|AXmJQf50{3pQjdHY^n{Y@L%LMd zw9Kgl8iI)3FmR#rwe9t+!=#?omI%oau2E;hP*mo~Y&0n20@20Dkl`sEP^z)Mm_}ME zX6s11BWiMm=nYAekq5!`aQDbRu!{nl8mGwxWTFKuveSIbvmyA|eRm%*WESEg(${fHQP@+)r#xKl6e0uqdJu4DSTy zdJ9nqN>^6NCrz>*pEFA`GCT0Va85)X5rj|>h>OIU8sNZ36WV=!NVoab|5YjXk&W}RE$%LG*5IPlu2X>jf=^6?vw#$K!V`UkRj4x!C=U=(%ig%835Ia zRRx6&AMEQ9LxGso&Sz&a2nZaykBKwrH3%`N9h#yEt*Q_Th@E9D?`W6sL_@+S<8y7o zzv>-x*r2U1M38}`oHdEcuU(X&l=^XAWnwsJH;$%lM-tqS3VrHHVmQ7VqUAyoG<1o{ ze=B$YAU32JkSRh{7bMrkJoh0F!m`Y88M16NWdu|PhNZ(ph+Bk;k!fyU1qDJ7fuscT zS)vi@3Bf0n;Q&I@;*sN!#ofGvMdR@Z{5UYCWgFgJrQ18!Dfa1v^1_@wq(f}t{XjrC z6HlqT!Er(k+Y)#mB4s2F48RH*IXM18y+;lX1x40w3uoj4W8H)b8zz?REknof zvm?|eg3}XVUE`wqd5sZM0S3mFSr=o{42H34W(+GsVFz_E&GJNBM$$QD6O<21N|{PA za+*hcrMMA_N41H22>2>eRVt0#kDhhVX^3%xFW5$`qkW~(E>wv!ZIo)lwWt*K_c$pS zCR(Ij)6^^7pR?4Z*HQOqLg*$6w(MlDd67#;1rh%TO%fuy6JTb@?H@1{TaYiFU9#Ui zTDlaS?1jL+!YexG@K_mzb^kadPpqAZORztQ0YlbzsS&lDi z850>7G6W&~vWb+w?OI`)1%4C*-Q!G=I0F#wod ztihl0oj}oR+_-E-M|ZW_&URF)px*WskU~*&m331FoOb6i`&?*e$Yvg|+1n^MqHc=~ z>s~cyN-MJ)Tm#T_N`)_J-7((?v<0V1&)>xZP3$|8GZdQz!U&Ot52Dl=?W@dTO@NeM zwujcG=n zvd|b1AT}(yu{9d|wXsA%L=ZeqU)dWHD|;~BT!l8;Hr9&FXLU39Xe;lLJ}g2au}53% zxG)m&@5@uQ8A+-=&?*jtyTAb8(O2Z#R&=yt7Yszgm|i`0!a?*|HURJDYNeDet|s*It7=&!c}^;Qm?#a_<#?9@WpT!|R4e%m z?lLkQ`BklGOJwv!jD`gwUY>;j@t#GkRaa=*t_s^>tSo8*Trok|ohtH5`hG;tNs~e2 zO%HI?Vj|KgCxA-R88+8CM%X1@Ga8JTBt)Qw8O9Pd`eRIxPAsYmBBBb80L0QKkB-Jq z?J@Nri%FaOQ453{EEMXD1p+ZN0)`3*`htWR+zA$J`3?qJFw>XqigYWU7;n#J9xnWf z2*B97Q5Tt`A@;=B#6}Dp8`l?r5k(=z#GV)*;Wa72%~nYq1YD32A=eONz16hVvsqg{ zxbDdMLQ74{4Dz)n1jB_=?qZ&`t% zhcV{`G$Q`OZa`*X&BQJRl8lou6if-peZ{I&S7L)FHdL2N{RSJR&kM=$mMuCN*0&|YcY&zQC!v@Er?+q~ zX!V7Bo4yc1YQeh|Fy&&`e04KLt72&N7K~`62I6@OC!cDqsWytO|9!|m(I9A!K_W>s z=fCR8%w`;L(LQ&Ya|~*sQ8XC0XaYra0io-umy{KqkB`_3FxrOEAc+P80G=GR3F9di zdBh5YZrPRb5)kFJD%oR0M|&uEIRjxfZH5!d zY4|GElpX?iD*&Si787CQKcS!0l8_GJ5+H#j4C4m)B3}eGqkSd{(K$9Fpz%GmHHnR+ zl&sVv@AJ}QAiJ< z$9r(tzU<(I zBSSCsY;-FxLmj0_IE2L8=mF#sk0aj%55_h!ol9$3+O!5Gr%g!xr9R$JN1w41eFUay z3CS%8Ird^wKtwShdPmv$BO_SCA?q#n8c-y`#-G#i3Z3AZ3B0OR6$4`vh3zGS@Tt|_ zFjD%hK0*#_?kb=;Vn2;qAsl+3O}Z%dQi4QsV>BT4e<)A#gpmU?XeOz#@MxkQAw3JJ zy>3USqIqj;v;{Y-Z^g%i>fNjgzn)4{n6c9~?QUvYtb5g@PyjQpZHQhi$fskvMVH9z zaw$bmp$p0)rp(CZkWCgFNrmk73_ZzCj=C)SOC1i{I{FVUB(a>C?t zP{-jGw1@5l6)M7Zn1fC|x3gd`QEt~wwEKRKvGWRdkCqODh*dYJD>^ySHEn&VuT2M- zZiC#Rh)A!pLN=WHPY%@849sx=`rcIAlpx?AXp7QIw=YB%y!&l+_`kPSVWBF)3)+*4=^Di_O~AJl77 zfpKP&&_gV$14S5Nedh?=2Te5;LKM@z2o+=osP70xGFKZN&yhLEP`~k>V^LSKCkI(& zb;;)`LRCXpC)+Nva17TxYX>3Zw$SbBG8Dy+fKn{6l6f?iPW8Z2tTWRIUQ2BiaXc#G zTX0EJ(5EcZ&2%ouc&A}9AfBjr2nmJ(AyahQ)VP=@?mezTB^ZpZ3S6D8PDE(+F10dO z1>wPcPC0G;Fw#R<(4aecyV$FX4&Yo4d&yyr#K|rmCY_@*Iqh$T2m1#~bX`|Xx9Q$x z?6-q=WQPrl2j_?^I3)5q;(NJ_Ftap0=niar?S2z%9WbPE-dkodZfuW0M24`F)+^bj z(WQp^8lk4JgLHEVCL3gy?>DCVSFuK}-2(AW=Qe|(A=9AWu4c?w3GzU+0yh@JzhYcP zN{Mb&y4zN)Ti>m9;lgfm!Gta6AQ8IJiXm$Z<&;*j#M%UsN8CY3C*%|3 z#Xm9g1dVZ!EC?(&j2kL~hT;BYGPR`Cq<>;Hkj(Rd0&i8_Oa?b9)CxU9ln9#0X$iWF zYOf|kc(m)6BscM^e3?dFCY;s#L7(rBENhmi*JD-GPVv7oGn!&zD zK?lSVG06wJCSz~3*ex+H6h@i~VSBl;PZ9m)p00 zH{(zak_@DBG4RKT+kc7v{ibCb@1hto!Vh_Ei7L*jmDhUyTEH`YoBMC<}a0pqSpA;`2u$t;7u3b>$A z!nPU`q`MJV9X%{TW)qe1Krl+fEutTksioaS`uJh3bb`R-je~nEzo9{6#|a;zrkQQ= zWH5}xONHrIwA?1L%_JQhrPJnU5sz?pW^th9M_IRky%9ny6~p+XCez zBMX{QI?O>BUn~LuYME~Otabw?;UMpA2W)8m{r#+29YAPG03*^jA|bK03&MySB6wpM zPnMo16;fc_v@ci>3*1InlMOs5WE(`kt_YaPcAy=~XRri7^dJ@lJ((?J1!(!y*c~Z$ z*Wx^qbiDd)*w2SW=mypb34tRQw{;LcItOI16#^TH5=wlM+d)OdB-tz*Nq<;kbO8(( zOH6ckFm5E!pDaRv;iiaTI1^n>Xcp&ppREV3WR7!tYVzHrrA84p{k8qOg2pmpn_xD( z$^Paxtu`PVMaxuCI=2Xjp%mEAu7?FneE^L>rAfLVe~NK1iSyu{;Hlu3pT>Mc61IjykasI!i7< z9M)+aS(l8G+teX)3J?rI0mOiXxn|WdZgj@N(g9u)2LaV@ilaIpyX@d#u%M9`F(9JR zk_hpdIkk*J`dyqtj~7eXAm|CFmssYuU{dlOS{I4Yyj#XS zt;T)LwRR7EuS%0R4r^B;;o*Vsq3ZT0b_o1DAG+B@_cp>o8vYeVm1q&|Qv!>+4qaKf z^8d0c^L9wz2EoxJQ7z(7e0LfnR+Uju08m>d>d?KxA&Ol{EYi6fm#v_4b`>83y|o?~Xm`ThdtNKA6!)DUS_Z->S# zL2NM|QYan}C?#!Hq8qKyfx#2v#!I?G4O|TJ0vd*D^-j_>Q{ozaj3P0vrHZc}Qc$jh zvTU4A(?P*1u(4f~y2iL}1B^YZf#SARwDL{2K~bl0ni#tga+2}`0^09}e)6sEFwsUT z1ZTJf{cd$uJq)P22}L(cJR?Yp5oZ8!EOW@|(&L>VBDhBrBj;^p!sW5wF{TGi;OT_} z2uPSbl4qb`v#4*^+1|Ed{mN@d7`As{9Ky?yo(V&$cZ_UB$107N(l9O18Sx|~np_G? zb(qK$vmYdbC@d09!3srx0ueu$L7yy+QX##<778Mvvm2e%&fg%msw$kdb7OEWWSUN3 zuMv00QF)q zbu+VMa@-&8XNGNC!4r5v8AWS}Q7J%I8sT6YcGy@zP^Uwwl9qCVNX{dHD7NGD2t0DZQ zrF~^<%gU9l_=?CD^lyGW9D=6rF@Qqqoit*6sDggqknUmhc^7^G3Lv)WirdeZ8)fF% zpYhxZV`D7APXRI6GK_|o`_tqVAbfmZ5)3ryAJkb?X2cU!@^6qNefKrG0CPHCI#9FO znFaxc!sLoQ0|xCDiAzX3BBPj&q$z&PIRjcAP ze}kLpt21P0=OqQfjb5YZDB5B47B+-V>)OYj68S@HqY(8Nwd?KEK!}u(Innz;W}W+t z$=Rap0-amk-X$#7>Z%H|IqiaN+_gQ8Tpjke3MzsjpWtAIDVm<{Zl!XFiQ7b6Dcs|R zF+BNcXyju#Xyt_VmufT67&v`$RI zZb%GYfmOA(8uQ)5xoP}R2}XMz_7NHzi-}i?Ih%LEv>hD7LpNy`1lEB-xX4bjTIsuJ z=5tmkL@_buThv3Upu1P%@hb$2hd?vMznUoiswEJGc~-w0dawahI*pY9tZ2jaYPX;g z`Y7~3Fe<@;s7`+7&Ai9M&AcKQq8svzAOrSZ*A!L|;`FF~K7CJKQQt(!CKlaRPT=0E zkt@9lsU;a!V#2%i7>m~3#ij%_V|0W}f|y!8>NZGA&Gu?t*x7l^=a&#sU{z`Zw2&Su zgZQoANE^WL&}Ofy(BV6V!RF+KE6vFsh;VxcP~4*veVRW(?RaSfeu=q0Z^wc3ae`ZC zb0j`2Pc%;0_#27vQgDCc%4-b93-RL8M)DGKgIZR#lbNC|CfHdF&#?k}hE5WFB}nJx z1m+4WLZAX9Am|H5hL4nptYPJtKXh8mgOQ0uCY2rn1wqw)hS331b>eun6F^}T9)>_p z0DG+|C!*hl#<>*ZO7gv=E+S6Z28o;RXRWX?Kc~md@j57aMrwKm4vg1LZTapMoxtm+ zRY*pQ2m$3t55NKbGuZg@n{jy_Dd;qwsaZ?RMPI4`D9sXWAQO1=VEFP|aCti=uWqSc zEvyTT?k0aaMx7ac!4q)y6gM~pd#TGqm zK1HesJqPTx`xJ}sv?B{Gb3COJjiCkYQ!GK7-DzVk+F&5bw41@#FIJij=?mbQA& z^uu6tNRJ#)c=IIR50B;`FVtToV`$(UKyL-9+z3%J6uxIC&hnXE2S-lyVQ~b*=8wI& zSBIZxz>w##8AK$Iu5{J_b2n@O1rJ2Y$)g$}1m!_#Z!F(vuRAS4#+cUXex98W#!187 zh0RNcK&x?k!ja>k8}vXmv`_oJ^$oIkZWG;EUqlooyqw@`G=02#g@u6T-hj=ZwmJ#H zgN&#EF_4E0qv;eTcTk@_^yl zbfVbK`n_)O$ZLH%Xl;wi6;su#&O;~PCO4Qwa^;eMuHm|*)btw zKt72x&%%h%;HdJ&APy86&Oh#kG@9?s(Zt>e7R3*^F<+d;J#u6ljAuRQJ*1u>3efjR zkU)^mlXek#(USuUniTR_rF^8zwT}#fRiOv;>9UC+6I&)IMiVzcR=2E+XY0VU;AtTc zFCniW|Hf^M;u%HY8oE#HrlpwvYU)9ky!o^W=eKz`E8A1hc}n3QC>|fBhivM0lU9qF z@Y4giISSq96 zE53;&Y3}sYOd$mZ}v-@Xyi$D*L=0VU)27p-@?!GW`G1N0W*bSRR z>0tqMcL?pO!UvrQL&`W6XY`T>g?>=(?*Nmbkx`O8zA=NQ6cS*RC79s2Ag=5OguCV* zj}zY)Evx{qEz?6&u`&TEI1cReT|{j+BHUsGNxGmT;*mc3Wmn!q#u(Gx2(88g z6mZW7j1Db+vb86Cc@oJ?h!rjIqy!d5ia&>R6nIXz_HOE}NyF*VuRqOWXB8$E<^ebAVb38R=`Uh6M3LKW!IRcG!i788L`Fp1 zWwY>iJ@DLa+F>a6K(Y1arGtf!%A|;B;Z4`n=W1#J{n?;Mc5AACT$M&o&h5lcZrWA+ zM9OC#Ss{&bEC2ppdVp9d7girRejB$`rN1- zpr3o7Ur|w=s+`4_lk$h8)C%?d-nr58AAX~Z-){Z%DE*eor>U7r-SlT3Q8&py#t(Sn zt1JjbKG)fX`!%laT&-*dXF%E%7#X3Ac8_B5mNrZGYk#wdR^gNqzbU@@o?R zXll(>^R<4fq;7sz-uJ!|Q}aa%|3MM@-H$r_FI>)h$5^(VWAqE9kZ$`J{Tix!Z1TD> zoK>o4@uQ8IOl<+7GmvvA3h4$^M*Mbh>i-+V&kI38peFyhj?^fKY?o5@F|`gVS=AU4 zmZ>pnq2?rhgP7InjamGz3uysQq^wy~>FLy4V+>bH3Ip&O&_44t28;hMJpJ_3|BR2u zJ3dM)^LSZ9pCm~y_nD`klceYAt9a*gpSn}Je)AvkZ(iZVKcfy&+_;Pj;br?aY4dfP z#kbF(y{A98++Az$*n8LJPa5T(lb-*;ay{GD-f`F79=-Bv|1gLbsDI)eXM4oo!g8qd zX&OTHU3zWZCj9m6c}@K3#Xs5*?x zA^gJ!E{FF!|3G@=Q&KvsEzaVn#_s%-l>e6WP5fKK|Gp(j-<;+Hcm7cN=1NJ)IdhSm zv<829digbfv0f>9{{w&h=YLuJ+~@o5e^C0|gObfwFa6nHJ;cA^Ci>YMdo6fHIr&Qu z{ncMRv^4rq@h^1WW`>1WW`>1WW`>1WW`>1WW`>1WW`>1WW`>1WW`> z1WW`>1WW`>1WW`>1WW`>1WW`>1WW`>1WW`>1WW`>1WW`>1WW`>1WW`>1WW`>1WW`> z1WW`>1WW`>1WW`>1WW`>1WW`>1WW`>1WW`>1WW`>1WW`>1WW`>1WW`>1WW`>1WW`> z1WW`>1WW`>1WW`>1WW`>1WW`>1WW`>1WW`>1WW`>1WW`>1WW`>1WW`>1WW`>1WW`> z1WW`>1WW`>1WW`>1WW`>1WW`>1WW`>1WW`>1WW`>1WW`>1WW`>1WW`>1WW`>1WW`> z1mwFds(dOXo$8S0M&Fp*vqCymkn_%$QkIuGKHp(WIbQ1M=(ww6bXmu?4ry6OU5Au9 z7D->@e>WvdY1>5FF_F5yvAk+g;dVJIr=%Ck*@XJ)6RBT3VUL}Wvl7)RTcnPA=SC;| zzpz{Q*l&nqr^GR@+AO6i|G3%i?eJ&(@5a0RZ{qUumm?|vKho=)Q}h~{#;e^W`g*40 zXPFL5MovhS6Fq%%(4NG*W=np0OnbT9 z{OgO{@au~l{k26Vrvn(gD!%|kI&Q~sPgy!Xg16i2RQE*6H9@eXBq_aYBE4jyV9Dnv z3Q|5Wk-uglADYNFPGAZ;C-Pkr`D-T%*1Ysmm;BQ5-Y(a~@xi=%;_keQt}%{!=%^P* zJrgM5IFeWR-QmE;`iU;@1by&Lbb0UrpZwwweN-o8&(lknOq5@V$%~%u%1$+y5B58%LPP}E;tVK_>j;_E&#g($*ZzQ?#p#Y6`E#fHWVPsYuiR5<-#daiFV_inzP3oml(&UxzOB zg>dxRiL#`1t)z<_D83f(%-z~Hfu6{GbcWr*(yF8_*?9hr$=D>$=RY}#)A`#_OLnYqZ>$cJc*kVdCnwKt!X??dCw8n&eLgB+ ztz6E231hjaH*ld+nSLf*d2jkB;mWV3=fahDr^AuTrRmL)$~)7)9jUxMeOH7!GWpw) zxm)j?T>8h8fM)%+-~B^Y4>69(bQs6?S8}J*;kjEeE-o~k4zJ%fcPj?_$CJzE#xor` zl;b+?qB?MTzU=yK7XEVAWO8m4%ge#(zVe&~F6Zd=#ti8Ze@=T}d3bxf?i z^i(9@F`<4(j&*chjjunBre1^i}t0QYW>sqV5d-p5y)D&HO38mleZM}T?CiY0X zcixbQ$D)yNC>T)vzIw&$al4!jyUl8;le3E#UDc9Fr*g}eXwuRhH@9uM^v>nW@BZq2 zzU&YG+vUqiKKdK~Fm&jD9X!zYKfm(V#V>#9p$EVCS6}%2=l=46&))wRfBt9ped6OE z`~8pp-tT_o#^3yd-;tIL-@D-!y5_ygmG!~+N~cn$eGGG4srGvvN{8 z9}EUFnYmH^+AO)&Z#z%eo`-3fc}CtLxz5Xtc$x4|Ox4swWzLg6lOp>U7JO-H=9vk! zrCKLaKRp$5oIwS1;}ia0!s`F-A0}b;$LY#t%RZI4GgJO_d}dZnNSREg91iP!q8@RV zCZ=F3%C@-rGYh?bRH9cmzsmGFRcKy=9<*PI*IB0I?^x6&Pp7g^lZ~D#>@8o4m(_Tx zGXW=;`UJoJm|y=nNp9~>oG<*YY*kYi$oCaq&)@dKl~*Mj=-Qg{A5zRQ824FrNPRCjJk5 z?*iAh`) z2FS%s+`b_f?`bFQp@EA};prdb;yZZyfn4luzcw`V%|+i1@{gf!FUEI(kX)?pAnw6$ zE^g`|SJD0T4ua3cc07Ii&BgCJ$Ypd_e?+dKd)`Oa1_uW(-v1HC8Tk6uvw?mh6$ucJ z^Y#i>5Rt!x1k1dAgGh+TZ-Tet;+3frRmv_)cKP z(5OMvcOy-#pD4)3dkhUbmA$yQ;|4zbgDPM`5K+i{0||@I#m*aOJkt32di(P<7>d1E z^wC&8o{>grFckZ>?W4dTZ-s)CDJp_RLBYgF#CVf{AX4UE;jIiNfg&I8uXzfbd7(u9!M;&megR(NLwyzA z7gx5INruTd>anz=WPfch^Sgm;R4J)%kT>xX`TGa>UtG{pHvXTGaUFtXK@$|g7dtx2 z#{CmAnJN(WsR$H#d0))`Xp{_QIsucdBEJ5Q@mIf0{ zPuW=twKt{&vyTb!_E-3Zc#|NJKddG|N|>;yNX+!hXB7d`;80PJcO0l;yHZRc?cya0 z7WoDEOz@6{1>gHGKNlyp-+R%FpX~N~N%3raiiU5qIoUjQ_rlKaC43cso9%hx>SmLB zFFp%`Sv&_%9Zx<&&;$bRKM=JSl^6UuJ(@WZ_qnT~reM&T!^V^k?J3<4Rg zySTkW5#R?5J@^nmU&c4sTM~EiqYnL4F@an18Xp+ohv^FvNqqf%h&L=7a~z6$+{NgR zLIZ-lQ1lLpC80rDq6;2(aqUOJ-hSSJvH*W?ayP4Ir`|)R>aCDLyuKG-7Jn&Dm5@u1q)O>UhRbS+=<`QbOX)?1%jXjD*+)K? z(u)iik4gMn+(g?X@-=PhnzrOi{f80##I=|bT1<&8^mJnI1n|?i0G^$UW<`tTaU4<9 zWQt}2uECm6j#Aa43FnC~-@}>%Xyl%W;J@uSXe~qFs5H4{sj+-Zlym2_FCKB{8^2u< zOTdOc&TvQZk7M}Rex)`ul$Fe^XgM8-vCaO&k6qlOqUDRvai}@XV3;UX%Z9gg0dg^E z+n^JxRM^lps+OqmAJ;UcOI#`lS_6wtr!GOH?SWHKO)W_333R zfFXBOxo*&~^KlSzlU9SKf8jJ7My5fF^9IdEIT5KzQQK0TR8EG}q_DqS)1rxJkrRS> zYOAExDCzslr?hC;mM^?Y%(|9$EIW*1%TAnql)03@EOlo8LQP9l#IQ(1oJbK6X-Z2J zJ1o)!4Hb!PF;8xB7wM$#LTK*89ifzjJI`I;t#RzunB^40N~uIXo(!s!Y=gA~&(c9v z;1y-&U@{3bhqQDR8F8o?tPz=&EnNnbje|AfAAw#wSmUL|MdEy68va_u2>l|ughrGSv=f#5 zJrN#K@!&;Nyq361y(w;|c;NDBwK&pwa@t^x&)`GS!H2y|%yBIZSdVK<8fw3?kScyEA>i0Pw{t= z&dSIh^&}6i=_hE{M$+^^YR82sI19_T96{^)sUc)(k2<5JN9EG%^{yV3IliR?bnh7T zJ;`KTPqK*gB#VoBpnp%Y#K5nAW2#S=v8P6?^zEsUC?y~y&TaahhrN3ql5z!~o`+;y zE zr%uIs=y^!e^RO3$=urhWjPfJ8@KZdDU@bO!Q(V2Bzl&6Q0qPc>{Lj)7=N(! z!NJzci8+bG*_NG5UG5_~CFgcw$GNc664XH~&IwbhRiK(QOf`wFa%$QosN<;;TaXc< zjz+yK7Do}OQm#9T-GS!q`VZqg)q>ccp6rz3AVsa#eNlJW{WbdycfeXcjUKRY#Q_Uf z9I$Z30c-iR8xB~VQ9dmdi#PbZ85-KZa^0IN)*oEe)`&b}yS*>UyQNRRLH}m&U8|5= z?6nWpiUxn>b^XA!u2PRD$sMc}5B^GWy=hvP(c@4`>|gj?y@qYT)IQBZ+Wus>+eJe| z>yDnW$V7ysx2K+tNbYQbR*X_3iiS z^(y*T6+)_1@{6ZccBfZlpZX;|zdaOdb9(L0$&t#iK0Zt1W0c6x4XNnu+V`q)hiZDg z#(BAi*w5`(aB}4*EC>_kKXx+WBXO`D;3>H5L=Yy?f9ynfDCkJ~TaM)M4CD5(fz&aK z4&2VMExF0Erfj5(#%}{%GSan!`+V4J)X2CRU#?~xn*bAQr|yDDmAEIQj<1D{9ooyz zpw0oc<5A1d+O@RSgqy8Y4`2LGEp`pIO*LJhwC|lpEng@xV(HSFCEylpOyD2x!$Y`n zn#Bj(I1CY1zsx=-DlaNOsvxQ`YF^Zms1;GGqaKNRBI<>xH=|mjx}scBBzi)0 zRP>DKis(C{ABf%*{bclSqyG^7M)V(}t3eIQ(p&SC z-kPWHFi)9S7Bj+e2pUQtpNH2_w3w5N@(^zp4}p-E$QL?_=%Wa_p+I|xt3V(zNFat} zC`M+GL2_Rdh76LSO7RdS3qUJ~#u*s; z@)|MFQe8CzLNew>eFQ#Mr86+U{uaeTS{VIK{7&?p} zH?qIMKNhV}TO{MgWgs0>DFOx04P$y$jmIO;5sZAQydV?dHT8pKKo+Vg)k=z?fj8AP zpvr3#hqeT2`&5e_1t7GKzrnk5{19fy&kz9lI6$Nvz35T#kiieu0{YF6kkU%Pe>|oD zSOPcj_o>Fjj01P?O=94H9^RGXssbJrZRQpN1;q~)=q{mi6f423P>Cp0@W*shQ~)$a z@W{iU!q+1a=)LF&G6R)~3gVFo^Hohp;G|+WtvQ+KEK#j7n8c$ql2UHM?0!O|x!5b6d9Nj_mK8QX>CrkaGfYnv|k( z#5p5WPO>_k--fh1D;4r-3bfQ$E_EglxjV>dB=YZqP;b5~+v<2IC~7Eo!`qHEK_c*2 zo~<6tb^bO~DT$(7iQ zTNKV$Lz{zGx$|$KF6Z)4=iCtI^GcWV^H6hjmYZ=@208bKwgqYCWx3SzvOwhA9qJ*l zRWkouKPB_C%L+5A8R%vMVjGkcqoE)|2%y;bM@K=B2Ryk{fy#FL*b0Iu5(b5Bxk5fp zq4bi==|xE|ljtRZUef3#lV0-arG#Fx6}H8SdZpMR!jIT=SGHXZJO@Htn#wG|=uccu zLx}UK;4|Uw8LZT@B}kzhh<5d<&jm~CI?+U%UCmmB?jOfX+pZ}FdRJ>*Yut}^^eUXEg573EufpEmtI)b^y$Vbml=6Se`CW*G z4N_oaI%Zeh^?AX}m2f(o)$wrf70S){!$5}Zu3+c8!Pd(U2Zw+0NRXm;z%A~W7tC{= z7i>q{8Rx6Px^LZ@6V4;SZiel*yV*1Dp)+pX8MmHmcWc;d_Szt=!q2fs;b!Fp1q$BTiZb`+T%Ca+0=9ZMtYc0#J zm{$gps*lSnO3r2%pDg*Xuq5+jdFK36n9aPL?$VNiQ(1Y=tn3^%=fk|>(s>`3WrMWr z)a=5JqIu$t>pSG`mcGbG)SJ-?Jt`|lOFxu9dR%DMw%#A2 zRgNEiY<)tZy4?~_%*!>AL)lRsjz(}ViRQ@+F zdcBj-D|%`|H@06j1}Q8|kliwrZtX8KURPOJufu2RC0C8@7izQ@I{oY-tm>>B-}6r^ zT=oEUf z-;eLLuXjbw%1O^SnGnKWciGojPbj_CSwnl63TQ6Iu&dPyy@18%ZY(1`&z1PvKlmW>H zq92Tow!N&BRmzt3Qd5IY@)!mdC|;`Vt9@4|drzyAcqy;+U7+gKU#Yd~e4Gg(1L?|d zTwd57`sl<#hF;fr-(+TBX^5!T246{abgT~Pi`LR&G%L0=x(&EC)i^U$x-Z??x-Z;J zE3C>{uK~ueHKVxM?v6daTNM_wQtCXT zux(LLP$FBg20Y);4ifSlq-J;fp3c zs{UkR{p70?qb7YbDLLE_esywk)O-40>zAub*~97$5mUlz)YCLMnzwYXMgKY4JElU{ zs{26~rH|ED>dwW)8W2NZza!>jdTVPzP%gIl<2%EkMyd1Rbjcdi!(n|+S-8438&;6v z{Ef1g#sPg{9^>!D_KDqHjy?Xjp;5KjF6=y53FrS3=8CGz=1T}9XiyOp?u;NHkD8Zd z+aHEKvA-Nl!R)&*m!>Y;_9`8;2_T{{5MsL=W_~!#>cFPGcRDSxQm2yGe2LRL9W^ut z$q2C>Q#ns6DBO^OFKkit!38>=P`Dek*m~+UG;;Zcs@JKQ=1iV~5gMH9RnC>+FDPtp zsnn~obF{_U+Wv(PWLsN*8Gabv%sE8~Gpaufn^RY3*XQ<^IZlK}-Iv{0-#;s>DAgN& zKq)&#PPJbwPDuw6a&_8bE*t zQKf`VS@uM iUYp6D)xgO=8TBS5UtB5nm1;P-d3G*i_TabQexXT9puxOPsBB5 zBiFcbBHtK5Z29RFyth^E={m7H#<6T70PI_5Z9O%STSka64W@R=@F?x$D2}l@LNja) z(|gfPC-wBon`nDN0Z42wO~f?So7QC`4x%7@Igv&}2ppeKKt|i2R2~l{okPn5A(*O> z)^4@;oLYB)<26NMbaem1{G4!+59vRq=r7OD@%QmfCf(=*n)+tUbrPIZt<_O5DM_0Y zH77@;AinTlwuDJh`8jedKlD5dw}u&~W&j)Lbh;+>YA)rvoS9QF;m+TL972u!S}uLq z7E=HCBs@Z8c!b~(`Q_YN)3>>t;|2Hrg_m;8UUSkj93M=Q)jpl8t=)B46hwR-&68xd z*Ct_LSq9|Esd-ZSs~WY0)8Y@%A`xnEvV}tp7nKj zzR=yT|1k9?bfxh1GtTEl_>ZS7z!i8w-I%vjwr?iEAx7JsX)%3#Sp0;d-t`=Fh3)A zu8VPc5f`m)y%u2!Z+83;f!)qwjlhz)M%Ti%2%9xR^KiD^vI({_&}&Nzr#=<7_{wC@ z%7uYRFmwzZdc7*@Vd^?!43p7`JQb0!~!6oe>;cYlQ9N$sE~RssYR) z1TxoP1jpnkZn%1^ymUYZXwtETz){*h=fuhg(IQI!`{Y_}gJX*V5f(Jq^khW!d#m5RkyrD8=Y_7vU3Y09aFhu zw5gJ3&F1juDFZ?r0?=7^4qlHaowBy$tVXsAf%+d*Y zTV*R{U8mHl5N^4&(6#~F+w7Z_L?Z4y<$PV$QtOWSV1XKf=rtd+y&CY<{Fz;2>SEQ& zIdUnnLgTd&VtRu`x|}CNXR96A>LuE~pNEj!A?}$FI&^EInu-dysM6XPb+3idHnTs3 zuRF?Ku^H9%cI=g$tZUv)6|a2{hbW84YWF(@xB9wjeS0P1xt*#`YEO8+@L;d)ZB-xj zMh_@y(OE^e`yQa)(e_$dLb86pnNHlJu^ML^*geWh$L|!Blt=cuXGU}cCv9iXI3(n!w;y|!r@s%M7V2m435Gn3dN!?mDw zA3o=9JS&6UJfM+vixz6+hcvb{t<2p3oz`|0m`-AE$y4m?@=sU)z{tE+1=ac8I;!*v3D)UElTTdKIcAh zwp*mq%Jr0u7T(DHrxTVF-6Dfl{;2j8CJbgrgUGJKTh+R0B{XC@rCy{3TRwt@<}WA) zd+CBgB)7PN(z-0=PuJCS zQ!3}wjt{h!ocC~&FMikYiz$dO`qo$-HCh)o<-aI#;M0#SR3o5tWl8FQmsD z$D0b#^&wxJ8o-!tN-ji&E{KX7jn8QejhN&K1$r#ea^2BF>22$@^u(%j)J^SESLDI$ z9cfcta1K%C9JqjpsSe{*tQK3~RIC=48iy)ApQOclasDIJB^5yh=XByi5N7e~M&#Dl zEx$D2TsBpHa>%)K>PF{1Q`g=rTgxgMhX^WRh-gt-p0jwpSP!~J>G{N$ZYRV?Ok`&(K0ohuIMYgK=6pL z5pH!*Xlu_d31PK32YpY^;Hf@ca@5T@H-E%@{HJ+{Y4bO(ZCapR}2oA&0kv(thjwUHT- zzlf}kJQmpKJ_6#qnp`7fzyI*abpWI9CwN~}xXFVfj>x!_v+ z?D_rE`bs*nELEeqzV;UGc=l60Y%ff^iR=0dhb;2EEV5bbK5chFl=aOD$DU5=-RPr{VBu zkb&?>=PhN;AsLnHcXhZU>uuw8&`!!yy7hfjvl6Q#T(?@AVUz2U87b+do&^H*In#&J zzI1Itzp$%yLH01XXzS&?Xcwlm!NYJTAU=F@h7)%<&SL66Ali9ZXL^MO zNm8TLQKyqKtAS*+^L-_an_BniJWwH6^#o9ed2-FKWFK=ptXqSgwmO|hbMRKbrRsD2 z9g#rMIUO{}#7`Bfqi)MqP68EQq{qUiX);4}1_=;Aglr8>YlATtd$zvEC#&Cs+iOwK zMD<{r<>-7y084iT3y((l`MfFzz*YHjb{_DF;#ve|bmbR?zDn+5Rq`oc9 z=-)QoC^;=TEj}$eEmBJHbWM5rikh6Y=u{c(55BeTOGdHfQcKBzb&byJh*BK4*L{f< z)z?6zdRuCg`BEUluH{iqS+sLbw9`PYIG05aoX?DwzpY1r2&$3-1{<%-`Fylm%xEqJ z)?Y#3r;*6jNXK`zC?=8;JhtH z;fDjw6WRUczs|-u&PW3JolLa)QXtMw%cIVrJDo(YCgUj66PCDU++Ckyh7%Kmmzp8174Q zO6C=3u?#Z8S$V~|EW@RQtGVJ8WHSabuylb4215k7{;e~e(d(aGy6*W(Y<9i2g6NU@ zXqSq{v@Y8n(NPk)Yk0vnD5zXCg$T3dZ50YYXiPIb9Bp_TJ6NyXybjCbh$8)pOYKEx zTwO;nLFz-hkj(H0Q$OYboJ2VtpGnywi!`q0B70-hQfD`&7s|SYDD;b8Ld-e zqSj~2xddZ}AtreU(+(4$$Ld~0b^H@p*e1nb*&WZL*NVItZfW2oLdA58ASak~@?6f} z7cn;c2E*D*oM&UsbovuIy9$Uorq63J0HEWQm|<)WW!L5+ifM>}LAb?^ zBM@j;_L_G30s!nDk73%uuos7%KJH)$DeNQblygLDXe37MaJ{O1z55d4RMQVJpA1=Z z9RUW*nYJ~pazh)NVUrjvb?_85S}r$Mqg`FOG}qsIj4J|HPxsjdcpDneum5NWK|HD3 zLSMwxbsmZ<3Hzch_w~3h>Pk-Kv>glk;*nz=4;WfpYiL!jZIPkm^h{HpVeOMG{j+lo zorrDbBP*2Ct986#aLYRO8ro9ZRBd5x;Tf&F47N863+B#|k}g^6;|6oC!RokZsMT&> zTC07mvR1pjq;^|w$5}(0lJB9;GbG}twrl43&kfi2D54vbUe5K&y)|5p5xGWtt@dg3 zeGYwpTT;6x_tT8nBX6~ik6rJcfgb3(#(Mp%p*1?Two8VJnze5ob$o8f%rB21HviZp zRMBjEo4hUXa&)ZitU*1;K*Q7Zai>K~*To^nz7`jx|34(T_Rg?FP}nrbz=Kc+Mj37+ zShzo@@aGxoO}Pe|lt%LLb3@-??;ID0Mc=Z!yL$l&eAznM;x8GjB~qEyF(odv<5aAy zd(Ebj{srCr3p!550+DoZkF(>siPQ#o7KD)Q*$XPWZ6C$nq}G$C zH{GC=R^g(D!9EwA){U|a%kJs!Ma2r)DpV}H2O8~B_)Da+whgV%##uwV_1*m|1211; zS|5%ZSUONSP%@B<0lN_|cK4UfIKMHjTLo1;gx;;zxGPc_<9IC2Ly;2d-P$%%N11ih z#M!KIlV-21?d$2qVK+`zZ|aI$v8sE;s@xKpJJumHb{U-)jLvS{Y3z5}=#Fhw4L^5; z8l9Jo$^q17x87;&2ANdkZbZ7R34X|Xja9~V)P3h3*RjBu>*0c8iKmE2W6jpBbz3*( z%GR*rxO5EO-P338iaR}N6UqQCeUS%<pj+`g?O-p_7jy_v&j{OW1N8AejExVvI;y*^YQstO^G=|g2pWva)z^?H>)ge+Cr zKfm&AhvULO-rhR+pU2uC`u&$vr9r3r>$mRycEB0j{M#v%NfoO zKKLLLJAYjkE-&TcawZ>_>&1l3e10w=rM3z}rhHRH>UQs0NZ7{aB}8}c#oNhu;%D!g zX`TJ<-GQ%u{I~m}{_~elt-8W~@%96z*Oy-S#c_N16Kmrd|8Qi3`QGuL)p={*f2?Yy z2)UNwPkNN|dz15bx}K;`XGnrM)MRyhYPvqlp$! zsD+vNCTNqhwIG&8TQ9FRx%8rJ(aYK@)j6ZBzjn@y!j9O{JNrZ7cZR*%; zx@xSkZ8pi3CN2}v>+-_OCv})ft}^9Hyd8fu(O15<*D+WShCsa!de5M&R++%2 zwa%1GY;`926qD^QCb`z6R-2Fo?+h2okk55-vVRMb=;YYwWYQa5>n5}dV;eN76$v=) zwPQrq$Y>^*YNf38x&|_T@kq@YlhWi;7sXq?lF8C#h{=8XI>VgbC$#r=7!zcsP*bO< zD&bToXQE-dPj9l#ii14KM0=r@_h~N9rMbFJbkrrZrF$GvcY5ms2`v_1Sv_ZiboKHM zA(UJ6utv^3go?dn8LgWWpmJ?8aeMod^T!hWq~p9DA0|ZCZmQ`Thnja2{Az6PCYV(w z>lx@Q*O)}URO4g8FY2`K+}5om)w#StLTbj z9E%g-UwX8*qQsG9KW34yPwb1DVDc>Tl2v0D`2-W)6D(ubc*o0$^>l%A0{jORKt!kn z9galXsYDqJK;*Yt24TL*kl~$(Uu}AgdmQVH8CHHHvt=aWK!S)aA_PNvUS=X2pWqlw zR7aoz*@x+`)QAwTZ z%}LJc*xo*Vn&If(Eg#>Tgrw4c7;MWag}OEg{1SWVFkL5xch8L0pCwsN*ltU1PSSn) zr&CzM#~$QT6#tRvWOcrp(+}DvB|4AFw08a&_$C2RqfjOm-UMFr=wI z>1y3@_~5pk|4UL=>*xRJdX0A_q6Wj9&&7mY2 zC$9NWl2s>b@5CzzXTAaKzj!1UM2BlIFcgqKo}}gq&R3I0%IfXO&izU1Cz73iNK!w| zUH5R;7m^`#J32t*wlybYYmOX!%dtLLhVqDn>}6y@D;Q27mlCVBCvoxBXiG z+om%$i7(IG(!2Q8mS@nwX$+B^+0$LN!%3Yk`ERI1?VZj)B=`2ockvJE;mX4pcvq6m z7?=Hq#mjU)88dde4iQJ|cgZp?+~}WWy}T$z)|T74CdKqga`FjYL-ms>RGDW}AUZSz zC?i@M<1hhq8nz_?mW=a@Qm)q3n9nC?fPL$P6!Ry^?wKd=NI{@ehtO+L3PLXsjF{K? zpQUuoY@2awp7eoM=CdK9)9(yRFyxbLT2cJ;ya_o=Fy^Uw0LH; z=%huc3U$n{rqrE(HMMKT`DatFznV(5ekH}~$Vf#qwP@a4=snE+!`{1@ z=fD7c#(NUm^QlKS?0oV=afg^y6`sAKe)2FE}{-yk59q!b6`sn-=##8HV`Sf_26fZy=foWYWxt12V`p;5% z6rr5N3{>eA*4)W!hP$tsTk|jyy0ZJ|y*d_ssFAo5)tAyJ;#bn>qPWgohth^8Vr1!< zKTF-3o@>F1XniaVM~~J=(oUbi2%|?2wZED288$p~PpWhFbQnF*Hh-FGrNnR!eIv4B z-EtGc;ol3*I{uc{=c3CQLRwm676Kq-_Jgn7{z3g)FaACEyJN3Bdf?OJ$3Hk+-;w~> zY`s9XhJ$J>B9y{hI!Ify9 zVz#z^V8$by;jq?l5oWE~HhX%CPHR!5iF&Fz%dTHee>Q~xoui&N2z!`cVvV%fSC^O2^KM`fxhuYHgS}WWGo<_Ee zFCOX2Jpa4tjy=gK$M@3*XoDp{I%Kzurx#y(@k0;G zIFxQ?$8!ouU*j%4KQ+Cp6oa<6U|5W`Z~Cdu5;`#Ybj(U`Z?UhX)V4`uWU{cdYE9R; z^A+i>3)9hNwbP-9^YQdg+yMc0OTZQGVc?@7OWj9qiwF(%AGz(PIx8cj*cLuyeMNw=)iXzK0nxaUu*orN~DGH;-{AGsK z@s#D}6vcy zLQ@o*EnJFXvxQGl9I+&!YIqf0{?KB3(4ux_{8Wm_JC>&ZKP;dG& zgNqrgmp5DfS&Cw_Wh6!M{*2I$yJw6^QLLB&MAE_K7AcAx+Gce;HzU{lRYn~~yG4rP z_>3_risl((QWRf-?N=F|6b0ZJNm2Y_h9^ZatQMc57**=0Qxp!ZCqGfOddx3x9U$~}Q_CG#a z`xE_}M=5Vz`icJJmc5RT*8W8QhEd8}mwuxEzvuX4RQU<{n~~>H-1HgF``mcf>xer$%umOUTaUPb`0O z`L5-T<>4#XdoovMtz4ONTkcWnVFZSEN>KRm*=s3RV!`yvhqdp z_sUyP<$I{`2ArI@TAV?;i*KN+Tz+0We}osM^6*0Gf8`TW^%A*UDY|r9m#F79k>|;G z{^LY6fB1=SBR7b%YWaVNmo68H#Q}3fWJj{m$W+V`lP#JMIX;zhGAr1^?D^S+tS;V= zrZ;P*n|CA_jpjKGbDHOvGaC|&<}57StjY$XxvC-MczlAnx*`5}8nbbZ7kL)TH&Y+8 zKxfj&%rDg?#^7GcRh98qG%#1xl@gVE!(WJ=RF#3!fFVy3>Ki57Dj zOiAXvtOg@9G{>8uAs!7TN)c~DDTynkpu{2=TDxQJ%{$4JwL`|ZwY09I0(8|19z>>$Az5?~wY4E6B-B8k;W!{Fl zJO~7+)(J_>K!FCU8pvvA>9%Ss?ez)_nMo|1 z0(2Wpcz$``?mg^YHh1sQqt?S}w3Qc5rELkLZL{{i`1)_Sb~G<4oJO`MrWu*X3M2XD zZGw$sb$2BHh(bZv1C~m>{$QesX(`lWEUWRK zEgRu_WWc#AIfuFotmUou+SunP=*c=@Oa?8%-vo{&*sV zGM@1+GN8AzC>9o;YTj0QY;L28YltX{L&Mx6BPj*jxecXe&QZa-D91cKBr0tvrEK%` z&0V^@rg-p#YRtn$@!X(!df3n0hPh3{B&NisJP*z8A`^Ms?CGDQZ-%Gi2~ElLVJFjC zlt5-&h_==B-$5hmwI^VN*T^!m=%BXetMC$>ws{*Y@NDCaA>1DPBN9gcwa_ zx^hIRIhY|Py<`UTcpR!195bSF7;L?Vu&H2}GOJ`JD0eboG%K`HCDZf= z3mf)yjw`+r!*e!`IVAv!rO6*iRmiIA;lbj zupJ&oSIk>8sHrt$j*6`bNzM6s%J#F8T(UhSff*{9!x?rl%nR6|59S7h@yQ-Sb!i@N zJSo5j>T`nRQ|r#hmXz0!!k9|)q2#uFYYJT#(6*|yfKa>Sd{eyXhJMGI;sJI+V?48> zw2*cyIF`sQr=OJ;0fM^HVzNzF*g&N%Y{=1LrgxQ=00010sKLhiA z)>2qN;ZZ=nMH4h2M=f*5+{IKgYZ=#4z_lpQMB9EgcL|`_0^BVG+O-x+bT?8dg>jcsi8f%x^9^wLbcnXHl_a-emKmBC^J*4()Eq{PD&2^9Y)tf*}%bL_Rw)p=m)R@%J1VzGtHdGqz0Hr8`8^vMhc+K@W7ezBlDDL z8X0g$Jof*`nac8?4|C!AH*mZl4qQU{DzdE@%P2k}nYpigHNo^TPn6$}bsP_8k8OmT zz?+9ZRQ>=dk8hZ3&a1%ISO#xW3|GfJBs3vYeZ2fZ&Tr))R6ZDw$GinWMKmR77o8y74kF!xog zrw@?Hl*DYW*f1i~+?!?EU9pjPoOKHGYDFy`;F}8?=E9l0U-1YpZ(c*eA-V-~KyzC# zjo3|zjI*K+L!YnMU0+sT4TPY>Z4a?_kBilx>=Ni|}+wQ5t zBv7MBWS*J#7@cYl9cEx#c|3(4O(*B=7`Ce$tn;5)#h>Tx#8hEuez&7`LC=1pc3fco zS9VNQOJySFKLHPhPz=7gtO4hg_{2medj79rx!5z~5zHpcf0CLnvta&HRJ`ItMf}Qw zg&9ZI7(K!9Ff5zD3od`v{HMt_jGk#a7@w5PygC0FY?ZpCw5EbmcwD;r3iWi|6zUr@ zO--3l0mQI2F2bP=2y{5~lT3_#{<9pf9NLT}z+IvB_V}cD=Ck>`2`Vxn4S&N3%=P)d zK@XFMA&xm{Li_=SJDHHmJzN{d&4i->ZA;aI-%cj2^0%CQXPWd!z=w{9BF7jTXhA7R z9;ked8;`E4QaJFWq^82L>Yy8H6B}==%rr5NRsIfJdxI&Bavf1Vhk3H{dEj-V@&$hG z{|UHETjlRb)+``?)3L|I(5!^#s7Mb{^w>ks>|0rS!Y*QHRscs`Ak69tG8+<2@VaQB zTU8d9h+~n7181s#devTnSRA72unw43mft6++NkErmBeSRKRk9^> z3JxI#oH|DAX%=&`Y9HCbQgMGm4jjBbs(Ou+BQ2R5@2^$+=_5ZxGIO=+b*hUdIM{mN zfClQo69rcv;D#MB+gavqc}I!>1rTExU;8I~J9)iT)5 zR%}J^H`J{bz-u4j?r>5xDk^9wVw?+_sQ+KkOtztlgXF@3rLDNr^sYQJW5ev7q${Q2LJ+rxM`t{^8|21Z}ZR;FFc8el@p1cJhox# z7U&T1Cix-~af@ROFJh<>Q0E6m9m;@Yoc)>O-e4h%I#QbjI83=%8?l1@8C}ljx z;RShpp&f#l8gd{=GIM;P1H%sU%J=a4bYUADbdjm42CaAOq7a@>7$_Fd!$Pjf6iG8z%U&&C8RKSFYbjXhyk}O{wv{Nrbh}-2vf+J6f$nF zF1|o_>%vArP*4g31(1cKf!qG2_Sr?T`k z^1@lob5ujFl{+-Ox#SW-4i0OM+a9>Ob4vzrs-wB-8$T@FIzWu@X$#!EW_son=CdW2 zA>TJkzP(XC9R7_Av-BF)9o-W$HCT1DP^O`W(eS0;!D(U7*=|ZqWu`9u9vR#eIDv$v zKM-sIr!%L}!{ywigP!i$!`%(&PT9=WFiV!YVQcU6r1vfzBG0FCFT(W9@0Su0GPw;j zo%~<<1ZkMJmWo8P=QPlSuzB`;dQWCfF7*;U!zLvpC#1y`&Tquo*Rj+`w3F#xDid+e zZ%0}(r2Jy3uZVg_SYH|=S{5UEmCc-j-H)cXxzwfRAd751qg|FPn!~BqL^EKlZVu-U z=UCJ9IAK$Ym}S#Nh4UNcFqUOAMcddpRudZV5&(gD>9TyTCTXPR_GJ}ZP3lO^-OH9h zx<{8iDY_|Q;nUMh!?LGD+jMZ~@${@hBMh!g17#`!HKrH$9zJZ{%|$dcNZHApUiP$z zHqaP{W-Gs0_N>Sg=O9i&f4Zp-^U9+qANW+T3TA0@|icnBMlaVV^qH(Y@T zk5+7>B${f?LGDfi7bfSnS47(=p=PG$Ab0133TEYPheTUI=ZRy`G@V8gW<(LNZGO~^ zx3!A6)Ate1AtxgGIdt3mqA~gUk<4}GtGlg7_wL^JqURMU&0g;?B_}eix1AAjkp{9p zG}6Yom+8Fi10YU)nU!OVV+wuOvjd?Qu%H1QART%CI(XZ8(KZ@C!e24dZ~yd` zvcEsJw~5{Ro4xxEvook$xZORp_^ufD0cGVK3vZzO^7C7MT+FsR7C}sTQOSJ#OF=XLnrQC}yQsnLJNz5= zzzf!+Y-DC61tYR567SBB-LV86Fb+cZ7uY@4qj*KW7jMVuM9_ET&mFVA_&Up$(;iiz z|JxnQc=`$}dlcz=BkC*4u6?UVP2-yu)Y9f4}#|T^eT1oy&RpS$kiA3|5xiclh~z zFYet9o*ZMY-io%80|y}g{yXm;k)J)V@9@4?_OQIQae}=vtOy%9yNu#eCTiyz zCh4x9bMm~h3twsgWA*@KrBku%ce{5Teq|s0%q!LdyI;m6YMA+Vt>%U24THNv)xF28 zzj>9uYGPL2^?;c3x1P0;jM!lHT@Q(OGB4is3-QSNyc-pWWj)Kpvv<;^@y=a!V*b!Z zw->Ahdds9v?8Cbr;}-}P46VeuYA188-eOulczK`n7-)H<8Rn-Amj%{+k*oKc1K)xv7Au^fK?W7lyiA5z>p2jjisx*J*FdQsL)$)qsxp5i*{TafJ91A|u2Hebt0W3GpUG zfXnC~634q73HKXOx(tnE%#5eWiy5Fkyze?v}@Kd*0v*+LRm-e`+ z3Xea^Dt}SFm?us$Be%>M8eiZWm-luqW(M^A8|C_4t_+RGwU&ZhL4c%y; z(bBMBV{1msqa}_Gk7H{_%cG@XI%FAO>H&lVa=%`L{?|JI7ysE#Fd-8N2_YmD{|&OyIk{^GjO!;x0?&`;}6Jh5{AEwqggZ*t@eIeC^VM-n9&%VWbIR&0EEm3_loD>fd*?ZAqS zZ>+Lg`^(gXoQUxh&cxUieAT6q(zO`-26x@L4RI?r#;wxYH@tmjgIYvT6CG_Ij2?W5 z;PNoB5B{7CY6q9&VwaM2R#tkH^|NgYxjaK5aXE*AT;P!^@kVKl#9Qa>EK?{CW))#< zi>yuE7TCYiufNPFRxvj`WVBW*N~>LVXOzNa=cw0NPwr5x*M}NKzW;@by)SBCklZ)J zS*M8B>_`FL6uV!Y&)kKz|ThIha0TdX9hbT4l}ETlPV}N6okg;WP?o~Y*Mul#eCeer)5t2WcutRxl$7`?FLfEu zxyQ{o+vVdPcg`I+!|pul>kKEWrV&~Ky&X^VW_~lsU3zwf`B2a*x9O~TKXeU*u2Sds z!H1ONacxj~;~KZ`>ZKZc=PC1npxljL%vfa+wM{gNwzf?&innepoJJ}Z>-8!O?%UFC zk9sr6d^qUY2$50JpEYTcl@%>5i8>Tyekc=uy+5ps2$^Xnof4VX(4m4XPs@778axX%8uv5}<@o0&OV;p>5KZisf?rJ zT)d6rI5X;a*Kr(+iWX6kHWZuGgDp@f2ui@9Sc5H4xq9;Zu6>fUMdp3yd7jVjuQv%f zXP>>-UVH8DUVH7e*FJ^gkbK~Q2g$22#8)Q_Zwm)^|o0q48Qb|MB zTXdtWm8tS;Lp!X?Q_HO@Q%ii+uO@qIjmaqqP3MPFrl&(EacS*I-?aZvxuvJ9H6}F8 zNxgy_xN=MfFg5rg!r4A0aLJkJ39}2T3dG`y@d=!ez@FzVQXiqU^8OS#mP2l-m4n{M zucrzp)0N>ZN~ZKvrF2J1dWvG*fy*`S@?pwsX|Pi1t{SEkOY@aNcf?4SoD?aaOhNTb zPF^rX8v~`SHOjB2Cw*_54%KYv(8X}Rigs-ba-T{|y1;UwM2aX~P;O`eBaN^f?V^Ru z9blG%PiML^UD7EDQi39ie2P3OvU9Cb_{NqAhVm=vXhM)d+IdpGE_Kel1;t`nL20p- z(|0H3@kTz0>+)^Z^SZnQ6jxRiR8*m3pf*J6kWpMVTNKp{Uv;Do)~eHJ&`?Ri!m9E> zi9xHA^_(S1&g3ldDmvx!^_T;|vaq7KU_R&kQ)&kk)>r*TvTy#Y$+gD!#He=IHCIV` z%2o+Uj&lhop&uaHE^3S}qi{YwWsb2yj3lb9QY54JR-Vpvx$5OfxTdExw4j^kp>I$y zRkff^KgZm=A`8=PtxNZUuD99SQE&dEPHquOtWWD2KKZY-btk%&9in}mBDKZP-EQs25^5Fzw=M2;rVv(6oiLQ0>%L(#33Ci{2YsfoM zcdCxEp9xfwjtZYPcX;JD2ZOBE{E*J@uulJ&F7G=VXXcKYAJt93Ep>?OkCp9l>!Ncl zy|O!|#QI>`Rw=bdHj_2v>&?GQE3y7I?bQZpgs|88n>3|cjOY=DHEZjVl*WAXZ_;{% z4~B~Gd-cCb%i}!6%N+xn*g%Hh>qX<%hjgZgb!&-dj2LO-U~+l$Z_|3r52ktA8(rRx zW<3{ScuptJ=J>B8;@7h>zpNZ0RGVB$L#kJO@}&y*7h z+r$WnL^AYbh^I)0O!kU-WmUx$n1mGxoLB#RGJ5KKe00E!V+Qwj>Ebx7a$T;DG0aG| zyI{_tGwDk1p=UD{>z-#bk?d5gZL%d@%k9rCk4+JL0fKd@Ab_Pm($OW~liu#q`*m7v zo|uz#38}mUuRI}rhU{J4 zyJtDSOG#J69Vx*T+|BH`_OCNi>L9A?e>FK{emXP2tur872jj6k@z*;vc!9OuC zcg)y%WtGSp!!rElDO1Lpb92W|oHo`xWitH|{0aWTD%4m|IJ@paGoByJOHe%(=6-No z#mI{Milr6nDxRp=Qn9C^yCSi2aK*Ta`4zWTJW%mcg|os_;jhT399vmh`SZ$$D>qll zm8UBQS3O$wY*l^L_A0sRP}Rw*^HtFcQx_T+<}IAJaM{A!7T&$^*9#w6__u|xEo@l0 zYvJC7>5Dcl`eaes;yV_9yf}SH>5?axoLf?O?Zej|yLQ~tO-mb=o?5D_&aE!5{(1Eu zs&`fYP;Fjz>#}E-y|nDmvUAH!%d3~)zx?gxUoY3KxMxMr3hm0GmA_rtyD}g@Zscc4 zTqiuP;FpKD6@iineEELgzB*S+X}HaPJAR5^y>Iqw0(^MJhkQGg-_>gWIFBTtj|M*; z^3jK7{M$<$N8bo`jYA#vnZy16_VHkiISB)Irq;N^xX5Vudxkza!!RvLF!jQe_~yTm zVR|J4lS4}I6}^z*oBvXVyfj0I?lL`>As1#~GWYmOO@GfY|0AQe+&E{mRA3~!GUFWF zU&=5%m(dk#cqK!AL*twOjIO>!zvES3VHeu7-D!?KYKt`wJ_^ea)i33m>YM-f3}2xX zYyC$?gY?1-@mXgH_hCk32G4!vZ-Cd#KK$1BIMsLNSHd(FC_i5QkUi7Eae8i_;TgN0yUy^eU2nL~@Vs5W z{5r#ncKwal8D6&Qe;8qS)vk}`Hp&H@e$jP?*X;V-;fB}krq}JdAzYf_4ZGx`&-9?zWNqFw(kXShtczUqtiv@{*ZtufwVx@b3|tjl!S z4p-px1ET`8TF#)@P3P@i5a=dwaQC}BX*xf*CR9OT72Y1DKbv9T98T*sCXHj`{?l8U zE{rloI&>l@??~Rb#l3B^e11fLsfIIX9j0%uE`ZiS0>p@VP{lZ?Mw~(^w2PG> zFVUfUfg;ecCL>gK$jc^!psXbE+b=kmN{{JkKnD zmnUD&H9ZfU(;a-RzS-O5@>OrO^AEBl@e7DrYrN?;@cTq>GCO?LlO3cGW{1&;(OZLr zj*CQhRld-=VMM3^s>e;taDK`fScn=zySJqWvSE*5%>H8Ax0&rXC503>(WJp#yaFjBa6w zPR9fE0P#;l#CaI`JV%$w!qlo$AB5u%jKWv_uAP4}L_8A2BY{8?5jVM5|1fML961<6 zAm29kp zvi_mHw9H@^beg{U6Id=ab`eNi<49xnX)f!2WM)tc9${Kg-NzxKkHhVO+(73xGt&F} zNMU7z!al`v)y}B{OZI1h119*Yqp*O9@kXZURl9CiGHJ_KnWPQo?DQROR5G9IaZ0ZFc?zmh=X}-4c;T^-vw7^idy~nwxsohXppOK~N z2$uYQ^SqMfQa`IOb*nJXmoU!hS&Vb8gGOF63k@Ky1TOE$=Oac5)^6~6Y7Pm0kpaj7}x%lbsP+<9htf4 zOD_7dlvTSk%Qb)u-Rx7Y6@AJ@rjKTuYLhYNR{-b7MB-TuzAlQtk zHgi*;nHw0_gV|1>gjJWVyokkoP4+j)f;6gd&f#N7JZKOm!Oxi0qkT|wWUyn=Fn)Rw0EO>nLI)!wh!;s#yN z65YY1N;0|Nln0^S-;Z8Jx_{0+4dS42?kPFr+<(KbVW7B1>MM1btP$B1xNCdIhWZ%P zo@p3Mz>dkq z`U!hQtBTW+6T**1O~t5i>^S!g_^s~)fT=3&Zmx!oH-rr%$C>2s*6nv1}CT%BvNp2Kq4~|fZ)8}q+f^F zl>~*vFwmHhKrl^J4m6A_TOJH|I$+lgcd_g|HTxD=zjb7|40k(Vb=7sbbR09lcLyxv zI;Nk)#xXv3A(IxlJ6R?-&K0P&zXWUAc$&Rs%-gz$ndDkx>NSZFplpEUe}$R|6$DJO z`;~E|uj3hmGKZ-Q)oRgR8QQytwfD1es(rW`Vu#16h`IkgVtz(KUUU%cfg{XzUodNI zzL5v$5URu16d}U!?4L= zn&mKP9Hv4C4Uv_GhU!za zg8V`*t7HWcwoF*kwxs01w%I38i$P|-YJn=d6^uIVw8#P6k*rR;KTH_sZo^NRKzrpY zwptisY{A%u%lYJZ)nQ~U*G~v`h`H3NK^1dprwSH_{Ipv`W$f0F0~YIP&qgd@s8r$I z_6g*ig1Wrl-VQmS&IwX850y12Qa>4jF&ZGqP;aWAfXPHG?q)312C+#5i-Uf(L8gA8 zed5AgRq+s_>9=?IX&`sNRw3hsajpvSBSIF)4vLOR2X2@OodKd{daDiw67C|um?T?r)o)}_5%}}K^ z19He$^qK?*HsTm}a1RObTPDQNiF$KDbKJj}=+Z;0p+;o0$s@;BfK4W-)ngM?X@glb zi$XN&+;Y)+=GBXE!g3uHj^98*AZjz!(LWof%PiZ45u!Huo{8$%yaA)2)?_5XJy()h zEv7-D6%$s~7|80Y!P*MeC}hPnR<~f3s1?z{FJ_r6uyH+0QZHFx=oPcf{aLkH1oQ75 z`tA(Yc?>MNhW$6Dp5^b`Hp< z;L$*q4>6W+o52J7vNa|Skg=-R#(-KCgK3Ane=lDfeY@J-8Y48Zc{n<&bzFm3WUj2#5YMdDs zUYFR-)|_3*h&$7>R!h&OEq1iuz_#&Q?DFc#&Uus6ypBMg-Z=s1+7$dmMVBelp&H-2 zri^o+!*5+4X%M1&7%PJVz+vY_YXicl!DM*i$1;408-sH+2E>@b0YOeqW=jX08N|__Vb^EL zvr-%ORS!ZBpC7n`#}po6(WeDh{obh|$D1vc3#daZ7_TKeOx_9$$$Nn>%f@PqfHf-& z?v%ayxJXupm{H&UnaxO?Sg3Oj3PC%{;7$bY1U*7oSse`FfvJ78o&Eu|JfjV6(O}o8 zG`Qzdmyi&q&ofMurve0D^|RjUoj3|9QSw!>?yIN1lO3CgN-;l^MBk93wWvyqA=~ptpvp2 zyZ%i(fD>Yb+De`luzhHY%muvA;0RF9REu)dI?nx%>EqnyeCJKmu#RrrAGyW-3u}ln zfN*FeRs8!SM5c%BM40J$kxhb^$&DpF-Qs?exKhMP^#;{ex1!a!{BiDkr?Z{M%NQ!! zdA!Jm>cMHMU&>5*taSiPs%c@Io31Ph8U{4F)rzQ2z;SGvdj*TY6x#Bmg1}_k0?|T^ z4%8TLNKIA!39L$2QLKlp>Z9wMs)DF?CnSh!mHG?9 z>~;{(H~M6_EB`8Zk_=bi`37shEdSr*8C=k=Ks2bkSH;wcX%e(}-cX7(Fc7K>7E%@& zZ5FP=Bo5{WCUMY+4zx}I9>GG!0~S8Oqn}rG+YIJaowD;kn-TP?g0(`1m=*_SCU?#F zu>n)f24J zBrOJ5b7fiTdLm z4Lg3-NV)?_T~7e`W0b)vFwE37;h0VS*-S83&m6ZfUAxyt>nPiwV=^YsWJ7e;&JUi+ zh6px4cuepXqyGgvG|ZWaL&KmavY8d!YQs564i3e2em}bFetI6cKj`jnQVj2s2cxgGo8Cc)5}=is~m9H(cgrCtAPH{LIdITgUO~~TY^&_gs#+mBm(NRw^ZkcE-4U& zbjjOhs)|PYmX74WnWen4kPfH=+w40i62gDQ`sJlpB}Vogu>HVtb)|uULX;mu$j2v= zdmgKy%{M&+7$s0ZfX|(!8t6BICz}NkuQf>{M8tF9XCV&nOD;V4!V6Yn&9wnm& zti2BfnT3Gc%7C-aq7!v?zP@=D&e!P#ck3(+M(CukeU=beF|8s&w`-Q1%LRi2{$Col z^$o%{#_Px|VakDmDFN znV{0rj!J~}FP0+MW4kM`##TLk4hXn~3jsn_eZA2u! z>3o4Hna=%j2R^Hld2d0$@X%Dm8yYc~3o#DDQElHu=QGZlg1}6LpdW-@1tHB;TMz2; z2MorPLe(>bszfr)xTa9mjMsyjQOz=-85oU7_>}rHQHJg65qiHEVK6edopJqXh%3_$ zdtiF#?qr_gzd}v085HymclK+D%{@5wJA$SLooRC5#hReA%{+5fJuv6!l^0A$HY(75 zX27jQ>`j<{*%W?kT2K@+3r$SiqlFUL4FKM6q`}#GVtC>3P|Hh)-V{@BxTs8 ziUmWXzRQ9|j76orOj@k#>DB_6K%aB6i3XX2ZAZs?Pk-j^YWYoqP zKB0)NulgA~BE&JkgVw)bj#s~0-7N*o8;bjP_!GvjW_F;%Ff+SVGlL)&GcPLJkD0mK zKU>vB7#V#!I|JzN;h$xtP|OgTyBYI_AoD2B&=z9O&U{qn+Zgjn#X%D|uSqoKqd4m=fMW!pmj@>GikkXfR#Gk=vy%yf?9y0|u(8sTd(W-B2}>PfzMWHw*G% z_eHvjJ*xb2g1)<*E&nV&i9ot3MNN^RV?lj_4Xkur+D7y3I;YB5U4EO2^*!wrxumcv zrVh#Ed~*&dAtnlDAM|EVaCsVVQmTt)CMKz*PjiMrb6^6%CTMBKvr@1QXdw*EzN>O$ z5(nOuNYm9b)<5mXnv`-N>j#6ZfuQ=P!9J!mGfF}>XAjHxZcbn0`_Z8!Rd;~!>OE=LGiq6=3oVE+>h-~?L~1*ba|^jAq{COr5x^Y= zq>~H?>o%hbS~u7YnASaWL*49T-Mo2j!0{N^&hxAX?=m@=JCo7p&U_M--ubI}ea#-~ z8z9IQ><}CKz;SMxPUSjiUf;z2HX&uApct+u@ z%?R2q)8~w5#5LsRZn3-cJ?zb=G|q6;A^%r7TJN{@skw#;-fib^zNSyHbY8r82-i|B z4+(mdF`aXbK0!krc{;*yjO}N?bYSK}*H}DEtuwHNPt+E$xpIYCpw;$ExL0(VcZ@Oq z>oox}G5b&aSWMmgpqPpC`-%B9d%d&2m?s!F-!%ceq0?V8x9%H9aDd8#4D{zUWNtDd z4BrOzFEHczHH^lK7p1*$1E^~Nxu0VFG02045=!vgd^o!5Y!0$`myxjeTVs$qq=w%z zDOb#AZpSwPAiidq1@kH53WPCUrw9mIe$dbUPCA6S8q#?Sf*?&=5Ckdc5uReqzgJ9qrfKr&(`j z_0i)m0fN0<6vz#*{u3kpX&>p(KGJ)y!a9?^!TPs8dP5)mn*&)-W2C$KNby#EP>RD> zVf{}g%J+Tr_zQy|{h;!oV$+*u(Bll25qk47hJk5jnYvZ0_oRa47=6RpsZV2HVsE`^|{DexTjp* zmf`di>-p!Q%5V-s{X8403!(iGnyUD!H#zu3dq}&}Sdtn5QKp@lAVy;j(BQ4L89^Gh z_1xmV)^6GXMs#ego;bKd&ouY2CH-qZ3b zZ^zm4pY=)C`8G2~Jg3w7uh;vp^KEs0mcnt0om=E>6 z=el`(vqlC>Ih1lJ<@ixl3Sw555vz5V@fpFo%TSj%kLu&h@hgI*-8^c8^M`!5+AfEZ z5BoS%Dfsr)9f7t3QZ3_G21>bL-I0BzB(usn)FZAxXSHrWsYYHY)c~1Cpp;X^n5@j= zs})QDWmeX7{u+LRvMOsG@_vTA)g;LbJXrB?I|zOT0uX0SLEhcSTTcY2$*938#9=k^ zi0e8cAZp^U9t73k0M=Q=l{nn)S43_mJX z2y!v2Baq&&${_MoCpT**zk&5(HORo1*dG9;6_1^$wLg#sd&rQ>=czKZajzy9{U2BJ`1X~q28-b1Kt{Q&FKDln zdV@-SC6}9_xjl=1_-j4-Q5MMric(^XJ7on*86~KZMSm1nKCqM#hH~v8j8@;u zFRhi>;O0w(Qnyq_53@MrX3yYfNOwuyge>J3Q8_&@X!$n!0_-))s;E%T)t@6n<-s~3 zHdKLMjd2Z*7uZFF(*Ls(0#Vi1AR{P&re8YLz`xDcFc$qpnGuq>uj3@0%1X^+aLkAZ z^(NR^WmSIwsK+5@|Bdd?hz!W|@1XkMb{fcE9i))7SL-@@a0QBeoelQxM<4-!Ssd$* zI#z1eRM6El<@coqbWN2asCz%=J#bJ+hATC+U+eue58VhU26R&W4$SLE{eRF?;MJc| zzb7;i-A@m%4tM`y0ILuYn2FIWF??7ks)>@5s1E@PqjzK8;W2 zWBF)4h99CltND#0YEt+pp63%a!*CshZ!Djp(eq>Qe;gRe(2}=9-{qO>BiDz16)-!bbmMg-Fu_*o(fnez%Kl7*Ey~ zl@RF&6lFl^Mo`0=QS9li2ofWhA4rFEjA>^IDIn8~6gEbQd?ZFKkspUAEw5E_hY@l> zBcOS#Qc|c=5{7;#4Ze~)GDHaPgztu4l))py7o&b4kU}1wm;)CoYx}olSL1;HI0hO$ zm~@y%w~Q~MFWgP$?lI=Ube}1l^dFZ~onU1-vqEW?JJn>wW*^h`&%q;3_2T#n= z4I-%6M}vV{lVm6ip}{;?6ttl?YPt`NHKDx!Te*scTE7ns_}HsC(h(Zt!q7N&gvK%C zjEBnl#`wyzD>y*3A+S&hP^eYp=@K|eG}svS6xf+WK1~ykr!**Ovc>@cf(FgbFSbG` zO&pXX4b;RYf{)iYcs;*ZGlUf|L4WulAr=wfbh9QYML3AJoo^n`yVU>0L*lyeIos{;K2M46?#uok&iKzL{>w;Tyl~dv<3H^` z|9x+FxBv9HAA0>4l}kPT?$ek2m%1;t7rW0ZeudTf!T$r=JO9HuaJ!_O^`o8dd;Dkp=l!QIpq=hB{&Sc8moNFx zkT~7lJ&^4*CEE0Q&C%9c>9RG3ZoOw(YsJgAozR@pn9pWxJP~;+(%hRdKE`IBA^uQ% zLSydEs67#B?#ZxiLWY_L($ka+(lZ&CT&l3)YZ!qr0$~Kg2!s&`BM?R)j6fKHFalu& z!U%*B2qO?iAdEm5fiMDL1i}b}5eOp?Mj(tp7=bVXVFbbmgb@fM5Jn)3Kp25A0$~Kg z2!s&`BM?R)j6fKHFalu&!U%*B2qO?iAdEm5fiMDL1i}b}5eOp?Mj(tp7=bVXVFbbm zgb@fM5Jn)3Kp25A0$~Kg2!s&`BM?R)j6fKHFalu&!U%*B2qO?iAdEm5fiMDL1i}b} z5eOp?Mj(tp7=bVXVFbbmgb@fM5Jn)3Kp25A0$~Kg2!s&`BM?R)j6fKHFalu&!U%*B z2qO?iAdEm5fiMDL1i}b}5eOp?Mj(tp7=bVXVFbbmgb@fM5Jn)3Kp25A0$~Kg2!s&` zBM?R)j6fKHFalu&!U%*B2qO?iAdEm5fiMDL1i}b}5eOp?Mj(tp7=bVXVFbbmgb@fM z5Jn)3Kp25A0$~Kg2!s&`BM?R)j6fKHFalu&!U%*B2qW;nLBM&4bBerEiF96!bWV(N zYNDKzqMU~!>0h_T`D~!E=)@trgxiP-kw`Fl@T@4=B(9|TM+1nvR_Q=U`av1e zxdt)AdNOgaWtg=LX&Qq(pvHjm3mI@{oUgRgB6HF;uA(m8s_cXw)LxVts- zMGerC-;F{ui_x!@@@cLf=$pBt6Y#?rByusm@}vmcsu*pOoDzX#Yq@wf>1=C>q-$L) zj*OWhdToH!W77&L-i~Jd=|tVviF_RA+uYdhv8^)yT0_-tk7$t2nOAbv ziyE(KCCAFNABqv4dY1b2FH@78X%=tZuv9*mJQV^?##EXtz zZ;5SaN#uyHYeq{Vzkw3yl05Z{?4Qn(u$9_$5tiW7qbzUAVg@ zyo_tRF(v8XdN3rxP#aajz}vw(;%VnE5S#U2!huIJB^bA4$vENVwJFAgq;F9djRAIX z(x9aC+PLBAP?DIW^Yy|%>V?DW6pa|0e&Sy7lx?{1q{2&IE1Y;N{RA%_v99EV`+L`! z4@A_O4@dMwi5B^ZNGNRUTFKd3vQE_OibBuF;KLhIVs&ka^~ouG67aRQCpNgZN6av{ zCtCL;I%^_O?^Z@RSIfmR4tz$kG@+Liwn)?-xACvve7vW%M2z5yp~7F=R$74c9_ggzrh8?{|Z#&l3-9oinDRPWgyv40i_Y~mxhYGVdlB9bn-qFlDG zRgEENfWnD;TcSIKZ@kU=%ZXZUyA%x$^%yf7_Xw`u=5j5E5;lw-=?#(=vn56NzMV~W z%!Cgu(KO?08`?cC`K!nlTY@lA9>iIzxczatmv_ar2t5Hylfmu@xW+|@WWn&EC(b59 z5qstTiefW6t%pnjX^&19l~&uZvo=+T>gkoQAJzj6burRA7^!$t_!fQN6GdjH7n89^ zmLs7~t%t44Iov&CF*`rpvnQG+Y^E1d=J6iP<`0l{vsZpe>v8UhUY5$~U*XbddUwdp zQK@Zd?UY{rvn;N3_LwoT7)KY4Cx0^+TV}lJ){~gczM}4^gUttLmkyQ2bm%d=z21Y3 z2Z8FrxPzL5txv|ac1GZ)!7W4V0>++pVb7{tee;)dAiBNvsnxBAjTz$iC_z1!ZL^@U zZ8bZzV2$p{Wm=kwF|Xfji+OGF-s8T_dp#~a*QRSba7Lb})k|$Uu1#xhM!GTS!X-$* zysFm7PlSpkyY!zP(49MQhKi?9vA*p9s6l#3e-Lyz=|s0R*~M(DN&od;-O0UtHi?yo z`ueXw)1CYb&j4^OwR=fksI52ez$A~1mcNLCWxN?M0>eL+}&f_(bG@5U78YBmxdB`PW;lmobzU?qA!N2)fz|K z{eJHE8J?dw8>2zvY^E#Ims}lF7t)hlt*R!}Jc@+`;zlYz7~P_-eqf2FMs4G4qlH7Z z@ANjm-d1E@#i)JrtGSKi2ECU%h%~R(GqypRe#>ZDslcv_v0*w{>uHb%%QwV$iRWm! zF2*CIu%xegIp?g4K~cQCAx4$$G?PvE*sG$8Wng9NQ@FMsUR*jGljGJ^LM#>t27No3 z*4C%U(zYI^Qb;ei@EJcL?k@Q+#M#!pO^T@Bwu6N2LOE8XE@}As4|C(jp)>;R3SW9} z8IAODCfR|2P|Y1)o5pO3)AH#`f@DM2lon~K@~M=qjFXH?4(r$6_r*<%ZY-!DWj;?G&NW#tYvgyI0;5+v90(bfu>#71Hqi1)WOt%+8LLsa)5X zv=zohT~YmwW8no}GLBgSq)IB3Bk-1Oh$@0G#Bs5_hbsV?uO)<91@KK_n zF;Q4o+pLX=&gD~*E;btDg)c#Y?%K{ni?nfi%~2@Zi6kjb`?9h9>SlOzla|#Uc}QlT)&8iPteiq zP1V@W)3}jeR4ea}2VYw7PSj16vW%$K^mx4Kqr`hqvJpR2s~;*QXgP36y5wnW_6lxK zW4jAzpeXwA7xDX0a1JthsmBrWh(WehoLrJ%(@^p@+e)N8J^hQvhe~reqC_d=fu|gB zoJmNGt!;?NKd=~>ER{18EJk^Df@~agLX^5Q#8WIQDVQZ5K^BNeF4jQ;5_P@{5=cEX zJ3dMz@#VJ%S@y4`j*4f|PkQ`#C0!do6r(qMAV$;+4MW8bZJMbayOzd0e_3ui}1+$8hPjXsC9=%GwEw zL7F0bb*7i*#SL8TDSmB$&0bHAckglH1ukhhIb9wyB6~e(tml%;RyMB1wg|r!_}w(l z)nP79)cO5D9Z zO&*%)9-SyJO*FrrX#QJ)W~KD7cmxrvLQPedVXI$+@$6S16ae?)snHaN|uk z-*W3uYbKb+j}!Fz(=WdI+I#X_Ut9a0z56=$ALu-I=(EE|KHo9x!>8YT=e;e@y!Gz3 z?SFr};r)+Z`1Ok~z5MtCzj^l%(eVtTIp>+H?O_xjx{CsR8B1WueozJ&K|yGec`JA6sIuV|Dy;zGVF31H{F_W z?b2Cr?>Np;QCYQc(c&fZu9?4}w5;4-P*^m(cuvXOiRMX@r{qnwEL$;7%$+uNypWWv zOBphA!Xv{jMR7T%gb$zpqY&Y-iysY+yU1z?j z?K%F*XW#Anbbm+F-u8R%eBci8FR%RMBeni-H#{=zmMHGNlL^OsYya>N>YsLc&VK!; zqZ>co{kiMNpR+q%AO2nSvgIo#L{=;; zV>>@Epikt2d6iXaQhhF1SXJKdIjW+#Y+-3%MpRMxg7S*~&vPp>rM~AFKq$^HzBZT@ zSyWy&fPZDdqT)Vsv|nB@yWg|dS1k%1y7(c!N>Q+ubG^13%;lVK&3i*A@`WH6e>|m` zd>oUU%*o9|axbMTrXAP_9n_B)qK(^blypX8()oifUAh1=I6Z*y_p_Y_#x+avYkH)92e0^hMgR8xf>ZdeN-#Sm?Vu|kvjvjFJCqXs6d#;b{}j$lnc>pC2lJGqk{4E59<-XcOhV!;;Q=Y!h%VKxiaa zV;hg8G3ktaVVFFUo7&Rgx(AdSd#PD@^U$6XgLmaBR*Pm=v~%w;G=@=tL!HJ(F36pD z+lJ6+s{?+#hla^E12t?`wOS_$+SrLW3ZOeY1OQ?)RqF9l#IHpjpDIR@*pQ&*pwT;( zq(_l(B7OS~xDo~F+r_99=uADi!C(~N<|{OMoAF3okPo%!qK;c4e4AadIbHbY+vsDPo}0O)nc0$jm{f~if565GDL_B&Sb8`Yt&sHj4@A; zQnWgBBMzxpgy+r*5uSFJ$7{Vj82jz*Hlb;h;AyXSA%+x{qFBXq+9V-HzG;M(+xbDM z7s_o+)OqtnV}f|mvkqHgglaX~B%(&ZF6mreg2xqup=ppd#-Qj%W!Ry0sfuV>rmUjG z1~)Esbom`!9<$6={v^#({vzcouSgcV>Iy0b2|C(v+YjB{OT4E34C!S)VgaWIm}J(zQDrRm$?)^g6~l3elAPtW9>F?wBN4QxUe{MCCDzvaAsu3-3zgW4EAtdS=gcnl3w#eJ9dmg=ovYSqd`oc)AUMbX@4_d697Ddyv zQgD7JnvPmv=k9)6I?|Pvg9=?nJQ{tKCoI+@mWG|{4DEszL*Ar_)F0ibv<^eJ1yjO( zyI8B#?U^}3$#!Q>QbaMrD0mgCbfH0dT`4%Eh=^t?q8z`Z8F9iPRmxd#Fv`EHXtdr~ zv$g4xc)UxAl46?WO~bJdaUlTU+l;&Exk73l;!Nm(JUNEv3cCQkEj~G=F+LvAuErXG zCCl@eg=kReYmIM<34j=|`Zjb}oGXPumD=PKBl|(F^H8-r(v^GNccm+aPe$P)d6fh) zw?5fOjhNo9$;1cqf6se_-+)$#jgru!7+Qq0h-@b)r^Qs8lAL0D(Rnz{=+#E)?-?%t zG~FXSq10I(HhT4srthySk)mrGjN+xF3v^BZ7Q#7?^NTc+C+VWg_Gg3*9%qcL?!#$8 zkxt=sE@1OYn z3%>^??u5jBh15I5_6N@Y8>Bbk_bdGF!|%8F-H%@#e!s`>*ZAFw-|z5yfL43|L(;@C z2;}~SCRrO0hdn8q6odo6~B8W%#Gq|c^zYSK_#km77xQl{l1B7&JYIm@eJ zn>&arnf}>b?H!WFx4FHMWfX!%7n>a|(2ulQs@2ei7VpSeLqT?88`~%xF~af;&(uYm z6-A7!H3~7xQRu#|Wa9ohZx;e$X{dVBZO1VU8d?;qt0~%oeR~aTL(o)syPS%EAYhq6 zerU8F@qlkEIR;a9y?K1L`Ev^2E%5F>}+*{4{f6wLXqB9J3g{v>?FV=qviK z4EfqLU(qGY5mY}i%}|%W@BFVC?4I~8Db>OUvNICzvQ3Rr5Ce7;M;sq|Gj_O z1tRusHeIqH^u&2#RJ>@B($jp^do80!`zmblhu#;_h!dv=QRW+KAoQ_}-bRv?iG0M+ z9+a8M+SDR8_cUEZUgVKQQC)^FkYcj)G2D^ZBi?qo9)av5ruGb70{VfB)?bQzmwe3% z%MkcQdJQ*?P=`qado+q}f;KJK&#_{caX{OF{*N`f*JtFwZc!mB1Yit`bmZsSBR53@ zK9GY@#SW7DHne95dua~Hb(V%5#tx=7u%q)wBIT=`H?n103_N^lc?n`2d zk?wY*6s1%FdXx(lN_Eq*kt~0#Q4(`xd#Mt$hu4$)Q)0b!yop>m57I1WG&hZKe>aaHUEbso15FUj1^ewihx)w`xbNjlpu)!%|r3owv=wGM^YLWhlvs@zOA5 zXyRZ=r=&K)MHxhXN*peU5$mxc+eGu$Q8vl^(kSL05cfFSv-G$p6P zO936urF!KuQIRZBwg@c6?T;NgHnPEeY~*5F3IrS~o_8J_i6u%J9S}4nMj0zDRi-z6 z4Ggh#eLYf0ko}{C)4)-PLy8RoH?5&X%Oxo@g!8O_?i=R>TmdFij8f%ZIEP$>Dm_TH|0j*$;LNG=VwR>F*qKmlOh_#b1_19I+Dj#CpFZ`9NiPlCwhghSi52BOkZ2P zFo@#In?9T6%`)6n))0NyEDM=SxjaMM3Iyfq7a022uoGrtH z94p2f^PxEzUW4hWBem8{VsNnLerstT%7hIAOh~8JwjskE$JzsOuA6-syDC5Vs^!SqtS~+4DER6+3?Bx2AoA8 zHQgx1I{aiMR#Vg)l3=!aN+pjrG>2H!e{Ls--fJgm&$q|lP=*?hBKKsBU%J6;^M`c z&vS|rA=%}`O!#E00x*v1_BVM_cDd4qUipUMw!RAfpmDvQRX)53>qjaold+OpP&<|32M2(QuOOGNjq z&?vuC+$rB)+~C4WJ+?(jaMc=>58Qd9l^yPHGL@a~YcqkJoS#XixE%L4as0JE*Ak(` zb*^)zD`SNSY`^I;A*IF1>j`kx^TjYJ+9qC)7ay=jJe#Qq7)51}jkCmd=mya#UVDBo z<>wZn>iW=t9`X=BE;Q-g;tiAvm_OJZ~R0}tH$KzaYHd+9I@Z&;L* zh&a-cqUv|WC0#CAe`0VQ_M;aUL(4JH9dwIaB3G7@dv0V>LYEqkZ_VXPB85nJVenHu zF6AvTnnuoftVr?G-~o`2-D{T-4B!>NM2Ubm-z-m5!ZW)Jni}F{-yl3Ipzi;6;V5?k$4QH@Pa(ld(S!@X%E=3wwjKvCS%El=ith~pl z3~Ks#G)>$tqp{35$LK3EWy?FWx?F5Zqo7NEf6Ad&k=(SLyg^2zu}kQ%S!rg(FYyL6 z&pJL^;oT`&xguJsHNGn)k}aTSjNp|UhuJkg+a_SWF^$cJ${EIHf3mYr@ivoNgOewk zT4EaBIl=)I^a*}`B-R<^junR*g=FL>V)GGagnF{FQ`qV!uQUHXOGj>y5+P=o_F9-L z>nogHYI?86#;rBpZd{#{gPoC(+0lzEYO0HP7P~KrNK8*}0OURGCAG=ev|sG;Ft0MF z!&hy}CQn1Y$I<||0-c&F8JQ>ItNb>rUHD3QTs)3;StrpS90!ljZou&lb+z4v78oPk zosmmsiroFH;m$lN?I5ov`0@KGWo#z1Lw15*lPS70JGO*|UL8Q}Hyh=nraj+|!f>?& z-3zZ=lkI^B5lvg9j(}~brAmt4{bjb2eJ~pvdtAo58?%)hD%jan zpADdq#6oNIRm1&9V8w7J*uIPX8CA})jTep~ZDMJYus@it6viV;l>Hulyo z?%5_pQ-;ZA$`QY~yFrZ7CvieFlaGn#O4UG&EGcFP>{Ks|!tvT|mSIeeW*Yg}Mv??k zn)A*J*(+H7h6ZV9|FR4zeyG@sVw(t3m9nGWJlACYi^*JPGTTh%^JC1TP39t#xo6A_ z^QkdF*jIgLHeSXd==5~SqKnbJYz*KTHUg$rL9VhnUZrkX>gIMia>%qcK$@bRlQ1$(YIuNyge7!bf~Bl@lUTd1Ke; zOn3oC=>ld&G|0}65l#VLqcTp6!K2NTA|xp};vnl>Q-i2QPLU~P_&w;4Fo~{N{$Tb0 zGySPCLPWceoE6!D)>epTM~mlrz^rGCr^8s=x;@AI3zK!UX|au4Y2%vZT3aLDs*?(u zJCKRjh0@?%Byu_02t**IwycN_w$S>v!)=Qe$2B5@F2#XAq*H;DZ3;luAqZWrQhTy$1W?(wW~ z!WSgR5Y*_S9X{N8)|A{%1qmG}0V<|sxZ>?Bj747g_tqj4LT=QWEe8?PaZn5)(P~3x z49gUSlOE?KOmdj8z|_W)W}MohOrP2U>&=yvSAAMiUb(QTu43WtisGt;6}VPbl~*+5 zwy?Ar5&nI3vx^rLS0STpp^OOsr*(76_mmYc*=MhqSGKQiUYUI%uDfOzR5ex<7wnup zPp&AIi_3O`OB(|C`-&Fqtt;QXpm<+d@d11J{O0mGyGqMvH&@P|*JfW(zHh<2vgQi9 zl$I}QuAoa*Mfq<0=IjFN7wSri_u1*(V2^!nd1>?9%Hn+`tl{~^2Md&h2ay-+l-qG&;LRdMA$djX2-iYp2#n~N(d%J;#pU+m-9-z^E1N4QrDoRE&7Zg66E$7+X=PP$Th-j+-3u${m3>@SS5?qdX?LQq zd{05y&N|x%`P*lFkpJO~?Y0j;-2TBo|5aC4|JvvNI*1D(i}$e}1leBwUJB06s^U`n zr$q}ZD$DmQDz2C}=U~x-JqzZQ&fBNfDJ(DF$Bb{#6o>C&1i}dXzl8v-Zb9MR%6Yqs z%J)_k>|U_Dcu8BOV^2ldPJ3~2YeCiS%97m+%0I5N7q}`4b~3|JTploVb#>R2AFL~y zTk&FLRmF>QiTQ=#k`WaRWFv# zn;obE2J^~FUaXpj=Q$yh>5sO^d5ZY+5s&A+I{H$cra%!FO}>3{hh7ms8gW}j%}7Ob z8x(P-#W?Bs=x>%9CpGAA7ymBqwkYCbQ?E^%YdC;>pSLWfQHxFH_2*%7>KK8a5g1 z$bE3q@N#?k4dr*0>x(Xzw->xv_)lCfV)T71Jwl;DB!w+KQUgg!NVthmThC z)awg#ii^LP(?92GY0b1L)7H$sTFHN!mp}U_vwt?Jy|By>Ke>OM8tdBY@3?-~Pd5ML z!yEE$9(q&T^=&u4bK|M&@4nG=vm!o!5YZraH@XC^B7rnk{%c8#A z>lfB6oExJ0c+r=OG>iL6DK(QlpIbIC7u&fXXlvMERK`g0IoKh>#h;5E;&It9$>Tbi zLvc+w57rieo#(K~qYHaJ<)|e}`RWk7@(I{fBJAZ`Puc7VyTd3t>uEmT=v$J?$(yX$ z!=Z{q5e&TAI;4u)K}H&7EJSDxk%1d)lqmQ1N#16gUtU5E5Ozpw16w2;@2h^VrfV$) z{IN4?$0mthcxRN@hDYM`ny*L1-NTwvW{H{n50mij_aut#uwAdcw7m!A>r|JFhNy2CDGJ}`$OGSZ2D+zDnO@U!{NYNTd!= zmL_3`m?YnVEZ=0><{ANDj+_D+1KEdJ_8`hOGCKccuj%mQE|YIE$pZWhQ-YgjX(|rS zx@dDuA$UZqJyMhcX4+U>02cp8-+pQY3I@@NOt9* zJumj^xOv!?Jl<#&I+Q_DdyZFLWnEsiaf>t=TXsu)mxuQ27+c|sF5R^Y5TL?_2Pgb2 z8m7hxA*}jH=h;SKKONqDRD+)4RoP5$Y!2R7yg@ z>Mi_xg!1st0z!G0Tt_^O5$IC}F5(C%WtRuBUk@U`o+CJCZE0xfazyzu0NsR05T%a>?(yPqBaJ0Sa)KIsF?>x?(@u-W z2%rp2t)f@H*^0qKzDI6`mheVa?t%a_r2X|2_GL|5Pg~R-i_$1Pf(bLfPVACEoQAPQR<*<3P8 zU*@zsjgy!J-wPB~F)ClWv23xP(9<9>8O(q)9h4&q4eb(o5Lr5(r%s#i21b{;?M}fVOj})h{1BIIa@sDm`m1Lgs^k{LAqS!GGEbe@km~oNU-@6s!m$;OtrFi8z=oP(+V{}pGxkSkErQ&e1ZJH@(pjb zwBBv|r4)PjgvA>stW2@_wU0)%-YsfdQ(BXS-qptEvFzpKxV-u(#O7h9*Un&vt}X>{ zZCPi!(p}2R7D`voq~|uJ0Hhp;qk+ijmSOU|{Lnw9GKYG_n}uV;yN(0Dc3YH-z59h) zfp@=LkjQ**jd@dz`BydO`)U}(^7Z+Mk6l3AMk`CxosTX@6sgmyj&-6m7*!)w5g`2 z*Se{u1QqH~p-1H*>`uTTg(Y7&uM|s(!>zxnY1m=C4;P4^4nrLa;i8DqmyEwx?^$V> zn9ndk$smXw=hc6*3V9wDwI89x*Tr2d~cSZmQ{! z-?4fS6_0=%Nte1jGRHNxJKvd(SITvF%#c4>g%`$MX>EdLOq;V;#PWDk4e{Az?ea9^ zm>RFpBZiZLH|!XS2suU~L>6rmbED)(m)pkm%Jnm4>#UyP$*$)AkG*$~Z=%Zk$0u!* zruU?QGHtm`I$Wj+mr$^T&<09rOMy1EEf=W;L=nmE<9)X+ml$-Fy}F7n?mmi_RoPv2 zx9oZes32(!HVuOW2#`vZu?EEuBtW|4nW#*iB zj92Z=_G(lYHwZ0yo-d*IKA^`U>%nA&wTVm`lI|A=gmAxjG7@lx?5|D=YNoIIjjzy1nqSWVl zaTba6uI0W4NZz1Ev*6~sH#Pl&}1*3ReV*_lqL3nwz! z>S8O7$4>V78CXe*C+q1vJTb#UL^V6nY`_TxrUk3cMDA+w<4GKZW2}YCI>Kpq>T=dNHLgHi)+vv(Oztsif;OT??!o zA#J8wO)(GRuwS1LB&RjA)VV?J1S?zxbCPXjxfnZfSABk73v{IEs*B*7 z;gU*FvfvxeWtF3#;)$%BljF=HeF-IIsXYZYYkO>NlBo8>ifv$9RM%plqRXo-r5Hyu zkEu73`!T@eM^6{XVA6C|4(N46g8%z1Uv-r!i4)kcJS&_xv6Xb>Ekh}Q5n__Q_ zr(z>EsQ!730_i`~W}ycZTeI^$-Jg`A%c14YswZ0WL$G8LNEtcgOF9a5ZzNZ(qyW>+ z7;&=*M5kF$fJ9m!GRlE9J&Yiz=d#cnxnNK|(+ZE#gP)Y5-+?mB-Ap3pSI3@wvjOKt z$6AXgv&9u^qk%2f!xQQul5DIMbIgWLRM)8KnM(D*2X$MsvqzA68~sfWi%Q)zqmpXV z`vDbZSTV%|f5cpxEP8z~TakMmk(r3E%D~D7p*Gx5Sr#sDEE_P*!AY;{^)lk57b4Cs z@OqPmfKkCE2?G6j?8!jFmBJ0-_se0DKz~E{C9W1sDrBb=N&dyT!eQ|F722`!LpQiA z=66gki+#Ib4I|xQ;J%i{AE^w&9~us*{LCs;@YUJyScNOXc(@dDlFjb_NJSFJxC$|e z`+|65!cdRxqnb)U6BOJ!ki8O4m`F4m5?_Hz6`r4|BEH#eRXRL0WvX%u-nPO+3x_gQ zsvwMQACNtuIlCJkDZ*f4Tb1Aec~qX{AjIJf{>tod)7#b|5|KX`1-h|6uUJjNdJSS0i_RRZs<3=WbUO?49<$i9<+ zlrsPl;SU8NEAhG%WgYvHD(l(>oXhhQc- z3aBocgT!rO3YWBZGOaLAhAdTzpSh4+NT`h;J*SezNacT8POi67>1|>v<04x&PsrWs z$fUSJjB{flq}efTz&su1-{L~jor?>I10b6zQ+X-;x&tCI}g#Pp3Q z$u=J;g)JSHd2rnerAKe8s4^y)vsz$Dsgjt19lX!834huGO-$VO+&Hel5=$t|H^h@6 zgs%dGx0^GvNu>=?LZE~hTn{A408x8Lra0oq#g{?Tfp_DXA<|%zbScEMs$fcmK+n3N zA-SbON=2ZT0z{zzae53$6ctwlb+=Ruo*O0^f0&l#U_wS>QryjN;c0KpHjdEbk zn^wUw*KIPp?-5Nu}^3E79Ao7gOj2n4R9O=>Am&-rKHEO=FVa zvw1)9l2xgX9tW=@Pij^J6PP-1KAx97wuI z8B)%SAb+t!Kyr#Cx3Sww988vslBL-684m91bz9obnZ!3=mLR)9eDGm3e9e|r@i~AcPsOy7DzOrgx zXAV9u0Uz`A?+SpXvPwGM9CVXfsi>58I$a7YRMHuL1)LmI*U;WkOvDkTwD?S`AYDTV zzw|YX1f$#Mm-^n3I>&OH7TlQEqyuFk_oq5H)u`U1lA3vO9d$6uIh zm@aD^k9($QNR|D~KtlaSFLY$BPJVhdZ>$#IVcrKnVrj=WRmB%T-}Q^RAmI9ZE>ht2 zb6ua$6`v)S4sL_^C08i^&hRU7lVJw*7bB#KoE<2t)rrzcmJ?8xeZ>R_)$tIr!PPfa z{M*&^8N%2pT*#YAjLO`Hums6KTmhp*y_gfOo+@#?F zT_~%#8ony$_(|1WJyrO6h=0ur#Unm{lC6Z1e}4$5mel~wtf#pM6g`=GTQY0tqXVtt z8N>ORf^fg51$E9NiUuZ%X*zw6>l}lbd=H7HFS^CiL6#ZIudQa}g0qGG+#S{A4S80OqwFc^yiBP!cpi0UV?S@RgcOHFkU|T_-6GdZM2^t^YYiS&BWBI-FXaN`Q zxDEL;fF-vL8Cd2ly^q`>{%rvo7wB&l1$f5eyX+3`Ekg5rwoUBlI#SJ_oaaiICk};Y zNt!`kdeK1tE+#UG+0gN%8&f(i%!}zqL)bK6XVH$$f#l{0xleU@{%paQ>L7G_=Oxln z_=)Gw3i(iwf+eL~MD2wX*O6*8Sei05Iq{%(p0bpVq{1IM83{TQ=?fU<=>(BF0$o%$f9}ZqI^EX7Z@OLtcpD_QX zqgUA)O!@QY*UZV!7tjTm#C-a)1|M3Wpe2x$2?zLl@fH{SOED^lUz(v8`{Tj`^p%EP z+qb;(JhOT0R>xM#^5*8P%o{r#uMRv{@7S^VxmR{DFTAqlm4PUG!9$7@#0p;md#Rbs(SltTeiM_Go@G-$upy3fcOs{>~?ry z%o%u7wgdjMFYIC*FK!;>WYE@k)7|p=7RK=g^TxIvn+NjQ>j3f=G{&~qnC*@&j6{X9 z4u2e(7(_Yp=gOK!?~lh^}s(hu>NslJ)hcgs_#B4i)gv zH)9S6!K)RC;A*Wj$BFg|Eyly^Oo^1?DtPX-+{*>>qsBZ8`XYge^zX^~nhFRW<7{51uy2#i2x| zlZbfNF)32o5zJ+LFa_y{BOrO9ql5&)07wM2UndqkQ=`qjR`5!V;CdQo=}yQ<1S8U6 z^PHj+wI;Idiq$|ILzLHbHS0=670SssF8~R?wFVzS!<`r;Vut`E`xbAnC61j~NCpmV z@%Pm_{pLAH3L6wMjYr6Lb8eP)o9CfK`nTqqn+m4e&GjVqJ5sWkbfbb2V_YV$t;I() zQ2tDdE2-98j^MhB23#esV){_Rehk^Uc=6-7YWiD=7PFSfo=wa=Qb%zX3i2ajKvzu4 zC6A(XhQaA`n;S@>gY_`qI`H%(C_W@jiuNVIKsHyK>yR!FKRAuwfQ_Y(n&&{0xdAnb zC!W>Bx=D(MDKy4~L0n^XWnLy9YSAXuql2sOk!e#% zK>J{+IW#->RNF5-n5g<>^!Nz&3nqb_!NHrPdXkGojT?+g zxe+xa7NyOUVoX_5b|KanLGYnYsyAiUJ3gMb3}pE?Z`Eq*3m&{xOV<~yzm>oDR`QOU ziXsT7?agX1K5v;J0}1(`+=`=r%vab6n8*W^&=NIC5A6b>=&gj%)msT6q&5AJG|6C| zqczt=kr1;$kl#uY4}=6?1n>rbh^EVy6T)Z-<_gEc^#@>xB=%o|=?)W_I<~Ijx8JGm zzZH5LHAsS44SDr{B-%Te2&EwrUGLgqB0HFW`)`h6ydi^h6=~?ldP5S}{o!;#JS?kk zjFlVn$G~9q5a+eVih2eFU9x!g49;jpuzU=rhtL_7b!@ml-%&uWpD2 zagZz*8gR8_(1>83#88hV7|Zg%Y@mDioekpkJuEoE(WE{mipT+8qIaNxUi4|QDc;wh zL=p#rN+^g{S%bO{tkbYeT*e0+74W-OUGqt#S?;nP=Dxf}$YD7C!43X@FWNpBEt43bYT?9k58{gMX*4uRmrA~~ah12~_GTt|5mi#8Vv zF>$$IUj4euv`FmV176-V{8aoUJe6PW`sG6LS7=Mb%_2v>t}I3dqRn`|IRe820d(3z z!RH#%81diyGSmw;w55=zQ)8wHvz$JLegwoha)e{&&9#45eA_T2dLz38Km0i8t>XIz zMbw$P&@0_<-3eD`eKJMSRYp zn0PIR(3_tmQ9?t6gn%#L@-75UD9Phr&lfIQ&revi0rw5K`#iBT6@woifCPL4BMEvx zf9oQj08WDZe=Mr9IJk5(1nd|ywVGyznEarKFYn2opyb}bfq%*Ii)ERtmG3g1PFAmvu8f2CS(3Q=J zDIwGvEZy|-X+uJL?E~x+Ev%V(vIW@C$H?2y7n7w9PS1thXe>?s*ib-g5Td}}X$je$ zGG>+#+O4JZZr0pShuSUlyEyO!MquYqkZnCbgTnXmXURNmmz>36(7BYnxFk9QBIL zI2=p-p~XV!cJus82FHz~?0)_?OKc+7bzw=6SKMw;v|%X0uD5Y-f;&X2j}FHo${!-W zvdFBP2VP!F)v{!|q^BM~f<^dK#5PSE&4F;W-T*oc-QEjy`IOf<^mEPV#i zq5DIba&h#Y%tY2h#(Bt3u09OT9i6T|M$w-{jD6&gI{Hs%tQ^8eNHPOYCueYl1FoHn zw6f4px|B7s1*J_2Dj)>OdrlHgLXfO>l}RWvb{;<9 zy#i3ZI}e_}t#vm!>IQF@vDN^llK?q@4eMUO$7`AbA^z*zLImoAJ_a#aO#wmmMKI7- z=WStzoXlDtMIwCIGa{ta%+Zat`iL1+sF{QAaWacOW18LM=!DtA$K-ngsEq?5sT?xY z?!gyBbKw^D#ghBk05%)}A4$Qa2SczvPLoO$P`ZY6wE=Ea$8XD_+_49gD)j^Cp$l&af8ZEC~M>A^uJg|g6?m261N zHKwSdp7pCHQaB6gV`4Iti0?l(9el1aJpZv~cr0o7VN3k@wq=ziwi*hq#zsGHTM{H~ z4i3@BaDM)=X43aBaFehGacmL}Wh`m)eK4O<`{$+)bV+=MMQ~z1Lb^gO85^5p7^|_~ zYRj%-HMVSM=Y4#_?etT+$D1+658?d@)S-9Up-j7~=aTTHm5aV08?Gn)C<$~nq*Rga1;v)MzM@}@!4NQ~ z!;K5JaDWj^>BR?-q(zU+O0kZWFZ4?DBI!>pq#7-%t1LQFY-YeIEsvit&?C6Lk#N)F z%>|D)`@xDi>!1=+_G8UJ#@{3HGyvrV<~-|@WKtlF0sk1eJl-5~w(<8jOJWmgC2o&j zAtMdoB=VSOA{UO4C5eU1Db?3R;P82%u2+bOdoXKBq6L}0NH4;dG^A-!@Q|6zcE;YK z_ecrMa*`Gzj>T+u?QE9fx{{Y!+6!*8`thNa+pVmo@*kmp=<`F#twl}N?#^ZHySuJ6 z!x)sb#g(=^yzX|Z;Om3REZx*(J!xmXyWazC-1Hs=&f!@?;q9&y&6Rof?vsqgAN1c4 z$YWi#_j?IlK+kO>Lz4_-%#X7}M0}GRQuTUYj9q4`KbZF(r_bAM#7Duo5ky#&TqMbq znj1<9;k08W`R)$+e2`Db+a2;?89)o=|0CIu1kVr;ez5Alu&i??oGn90nuqgz7wuJf z7wtQkOw_+hj&BbkK0$RES%n}GElxBe2Y23(f;yhD1BPiz9RDIHbe(A40tGR1@LDrY zroq4Y;E86XQ5I6VHcQyxYsaQLAwNeMk0Ev7eTbGz8Tk6;>jS?Htlkj#UEsd8fnNs} zuM7MpU`QJUHL;N*Pxp=DMjdnMrW;tPdJQE5y+ zqEvc^tg<$Yr0DNZf2G5lA0vSeoSzGXYS}9!tunlBnYGU&u_zV&0x5bcDf&N2(a#4Q zTn;pwncgAZq2BCa86De~yY?(w?wYy0?TFH{cHvLQQe1+e8*yZ?{R1%Q^F2iCbYyv~ zs{oTd%YezAWg35v@B|Kn{eE${;SMX?UbMox$a@uSA6$K3Kv={stFj=_W1}wGGx5n; zN7v33$%brYpv`UxFAap38swOZS6G!^lQ%zry5xK5fU2j5MUD*S(|~COJfU*JO?Ox| zgnnR}cer;%fL!3e)5hh&Um!O?&SNeO7&5+3Hr5{Kfsbd;&yso`P7L(?ETQLNneGm& zL%op-*RS78U3IVMxVEh4XB1#w7bsu4H~=R(SIr92$x-W@tBP7i8PW;%EDP-2ScRG@ zEv-*mlvT>s*SPFpmfVJp3t(MN-!f!eQFBh_9Yjy-`)xkA|v?VHLmEKnE-TUF<2${|jIR6c2w;lB>uJMO3KGMmO1X{SxU_dfRtF+* z0gPB8RS|D1qX~FN2Z)m!T$xm*9qaBuEdt&l0fQRLa4y+Xgy+qvF(fMNB?1nC-w$g5 zoE}hnvVrhS-2;^}=8IeQxHdHhr9B$lv-PpvpC?$5ZRI_8gbIelZaL%@ZlJ9&L<5&4 zE6H_JGw-;A8;_l62p`vlYYn`jaNWMrMkGfJE^TSMcf=^45ao+jMp!a+5C0<0zW* z{q0JyXSAqKlY12TA}~onqh%bzKfkgUiKWcHxKsVJRfP3N?nITz8xp$l5@hin${3gP zjz=0b`wrmqx7~LLF-q{q6PAaYa;(69hY7VU6_cv8<*T~p+@(l$&AH2sM*DIl$?uey z1B*{LV}T?UJ87Q;CiP%T`?FONU!(@ozYxgHTXs0}o)Gd$Uy4ZsL#B~rwj7CV=s;xp z_f#)66Q=y6B&fhv`TiUBsb@_;#*zSR8VGSNCx6Cq=jHh&ep3BZvKo)_!c z!(*7~@~ot`(2@yo20UozFr+cM)(yB!PjdL0tCyqC7(y$9-$_$SYt+wkFCSwH{8e!Iu} zdS&BcBz}a@vk_lD+ve)gn>XC~r17f_?@#>As~blA>e!1Leu;wC-+%UOWc|@+Zwan1 zPdB*i)mhzt#`MQOxr$SwyK1AtRv*CL){Fs!)`3IL9ieuG5=MTElVrq4y#3LLH#ro=n@Gs13Kp?e zzk0(xXhZLECQWv~}RnH1)IZWWaNbMVd0A)K> z!oZ|V_QsEz2>m0<7Sm`ezMhs4o)hcNLk2u(5e<0_Q!e^#JCXd1bWTkP2 zp%ojKq}D+D#sut_=8=H`q-O5{0Z@rS3D_iTrGbg4kx~;N&gqfn@9q+xOIZHMvZiBy zdxZ4rjSCkpT(t3)r1MiZ($mh?Z%q4x^Q(>WH(d8@OyHmR(?;1{z6%?ve}?NeQcI2= zvXgZ7#dEHC?bbbezp?*p%!VBM+Ql&4-}=w4pVRnYmNBL-isE1iKJXXReQ87$A6_Fw99_4s!B_9F z=8_pE7{&n=ID64@X>UR<_@rK@bOZbr-YO+FG+GiPvv8j5|IW?;97 z4H0pA8`w!gwXtSJc)r7GOCURNflJb-(dV6>6!H`zJ6Cf4h1^46&z*)p{2yur^2r>+ zeA8D(u$zlhFb985yI!KB*w0{-{t@}i2fOZHj1nHt5s#0)e8Z(MRPdKIIJ#u~9Q-=b zIf)>ElT4!w-6RVtgcD4m{Cr|cN2LVgDK06513$6#O@arA%S9h`%4}xQKFg&gCYADA zTAS*!rMjL?b$z9DEzJl~uCFp&f5~uZQe8=@E=P*%U<$}kR6m7`6h+ac?5PEo&;o|2UROg@tANd7GOiehAPU-C93NfmoXQvWah&QGSO@S;OP zdr>a!Dxf{*5B1s(34P?=LheCbBNg=X|B(BNDS>BX#!OQa^#_A8Jmm=aR{drvl*ps5w&!~2ZrY({1iF;C({Z_ z>}R$`#9;=Ps5XA2JC*7E8MlL9CU+IerbW#eNEPu3P7fHjIXd+tOpB-wj8XD9oJE9b zG4+8V>OtN3ow5erD?_F3Teo@n%7y$+x#@OlbID?-I}p@asDMAne@pT2C9w&KfeD-@ zFtp>kOmNFMD#hs=!3h3fARzbxLZCfi%?h7C=m^(W2xew+*FR)>n}d_T&!iMndesGo z>mM?kgGnf6^r}nbp``0rLTT681paCQ(Bt2eqnO30*K+0w-6J502TUQ3go3&QnHxS7I(ywE zMF%p`=CXsCDK@7-I*2KOu$P?NW=wH(W>SQ%r?fLuwvGf)DfPKbEf}Fvk+ya3cc_hc z*(5u`BwTz%?B^1^&d~0b5bmBy+i>-<8dabT1PNovjjSLL^h*^He6lNqOdE($ppi`i z618lOowTh*!)B;XBQFXA?97yO)n!F$ejYlBQgykV{#!eJyj4tKQu0o2WX_oL=|74x z?i-O}zRWu*V|q->Df)?MYthj}ThZ~vh@3I`XpJe;agbuVpHz-CQy#w4=?;)Kj8T4d6oia62M^X*f_NI2yk%5_J zgmllqH8qhTGZ_BJ6J=)55u^Nn$fc2;8zEBx={;(-JlE#<*p@@fBT;_kun2mnM@ssj zl$1F|pGMse%E`17#bAu^d=k2o_qeH)QSqv}gX&y&};kk{G+N0Ayy`?LY1)8~%%fNE)3%GiZ zFRqz`!Leoqoq`2Ig5F1_R__aBru7~tZ^1p^DI0Moq3+@TL@1ljzRxALzrTkt8^U|6 zNFgr2ZI>Z+0^TN~T>7ivJ!25=l{h;(z?9n`G$#}pQx&p2F@rOsYGNlhP5hJ_Cr;p4 zQIGpk+*$3@DNK^~r4$WcnqoZ6f0<$&$~#iZXpcD&xiz%YETb&dJZ?cY-{VWrfXic+iEH>$2XE$yDuNp~exDwiiet(c;CLjHOZoAhaN6ya|9G`TDx zF-f6JSJ8}adg}Ujxgq|LHt7WV*h3GRWkpIdLHa!AVnh@rpJOPrOWmY~_RFvwBc-n*7%ZXeHmJt>IehTKv_fxd0ar*V| zGJUAG;349j^k?3OnV^TRQBl{`jJ%3o2e)#Tmy4#;~aAX4_565Uq@n59V9cV{2 zMYaBuNeLBvlv&`+q+4xng)-S7)2OaG*);kqq(F7em(hz9soI1S=xirdT&iLlzaT@^ z*G|vXCY~@W@U{d$)#nnMqrj&55eQgV2-b>68HL)F$=^z;z2u5_gJhVUTA4)9&YYe` zT0iPmkcAtv0?J4;D~b|Nl;Ed215AOVJGf4ES*IN`1b`&T&MqwE#k4dqf0_RxZ47f2 zPZMzcA`LQu-yO_JFkdF^M&u$JzdsFh$%1#%K8+j8B3s9^X}XUx*W=9w{E)4ED3_t2 zKtT~rEe0k_`Oz6hmYu3Qxb}cZct3nO!KN$Aw-57KFVyPOKvWB(v4)1!6Jw6W=2Sbp3^x=p&v5j zx{FZ`WxCo4JBuw*|=TM~`RT)5kG`|S_%;_=D zq{HXY8H?_sw0r*A9uYWAGkt9zFqeQjRoqux za!6o(hk9$VRe7Jef)`PAHEdSS$Fke?%dn;CTlX(6vmKPf^+r|5bQdLf)O-Gl`xzOU zORGRZwn@uvlNKYXhW`3|l#GkJDBBrX%K(`}f9uuC%bch*t4o>d8gFG+c_xZl>sZGnnEQ+F zrhEjI9}y`D-p3Ek>>88FFU>4^E3@d=nK$S?3R2$64P8%VwimqvO6HVkI|xTgnM;Ry zCnli8*9KDjE3^GRGxd7WDhlNZ4iA}#>MP1E^>ZdtbqmUFlP0Er_j2~ff6flq$L_s1 zVyQb;-g(!myI0?{<|o!kx``7QZ2>!a%-C^Up=JE7`o+}?$$TtVBr8)=)6z3CvsCJA z&5)rv!|2?+`r8`oDn9A-bb0sj`#=5S>u-XmPKOWp4jww}KXUX~p!>7qJ)iHHwQK7? z-`)Ani~oA>{oOCU?fBrMS08`v^=;2?`sE9c{_z)^pL*=+jsN-FGk^HiEA78|V#}Z3 zeB;+oZvXr5{_@wq{r|McMw`wY|lB@ZkuEnhTq$()&*HNB`aXSl^tGt^SW}1=kf1}Q zUa66#L)43POPeLHr7c^-sxEqznjid0lKEhf@%#T<2s}0HS}rxilyTeASrG3i>el*( z#)XR(FR7k4e?d*HrLJst`J9T%s=1SkrcAx1c$)F{WfK^~^zjpERkm6)Wagx&hV{uQ zy)I+dpP$)nNB)<$zP9D{H(z~zTl?R3yuID=;w%68(hHm4cd z(euB4`26Fps>oST-O%`b8rcWmhe3{#z5k=E;rZG9ypHM~ zMblp)ImFj%Sz4-}?Vr_^cXE(CuuWH8$Viv9%kilCZ80YhW)qx$)I zl#$L8P1E*hP|~qH&6(0YeE!gx2U=MAQnn|^%ZB>-f}zH=)#NI_FA{0@kX1^PCoy3F)`JcBC3xaNfuQzk2y3RWD#d@Bi(*Jd8koiA=iwmwq*R-Ep1Mx!{c+3{2B+T z+p$x)7}J8}n&b=7$wEkLhZ-?c$^XaDW5IB}aDYC~e>ar>^HBcVp=CiE|Cgbxnc)u& zQ(X|ulW;GCYQ&IWo`@i;I?rDj#*d_?bviujk#a+n6w7ZP8abJ@*C3jV344=WhlZgr zv;qX`T&d*-sT11fA*8iq4c;3e&15b`4znqi?HFOyc?^0KKzDoy0K{ghMhFs(Unf5? zhe;xAgM-ch8=OYC$1D0|-tIjRCCc)4GjdGBm)nUL3_=6c!n4_+8;^tv;?XTaq~gZJ z@ODp%K7@ba9UjOByK~GLLGA9GsRD>a+xh2nBGE(rX8R%0EW<Hay#2R707|T%%|}*P3I#p|&|2>$yReKb4cCvSFK-jLNe^nG1-(J7|as zT-lUA$f~bpq0KWmjY5rTq#~38_1pzIQSf<$py^r`_S?J7bjK)K@U?rOLy~Jm6LU$S zqLuvJ!xhxWAJzoXx!Fv0u$W;pn5#l7w!~1?CMZ-SH57KLOT`(2M~S9!a2u3(wMrb; z-I^mZ#@odeB(Sav7dyH9hFmrq=ZJscW{H2|O2of#M)56fs`yXNAihJ=I*jAQ53xJ_ zh&=2i$v-8RqvX;@F4xGVAD1ZlPHRqNpx`8>t2IYS>MZHO4h@s^V1%cxEXuWm3|~i= zf^t2Ovv}*aE!(y~$1n_4>3Dtn3kV=cRczfllX5AwYNr)*LJ0Eeda>VlSv!|5_?kku zDcEJ@Cl~P33;5asT5irkzYVY3Y1Q`k2g48fjr`-o`9}-di(Z{wbliv*P(QCF`zZz0 zj%Oq)IBDby3)ER^)2p)`TqabQa(-tnK>k%OoruwF7$qh#l<5nj!%P)@VPxJleQtDg z+&kQK-00vwptr>au7i7r-)%bh^gSfH;}oNHT7&!_s@Q@PMlf7V33R!jJ85J$ywkOu zZZ8TLO~;I4LdSC2^&O)-VZ=PQ_HC{wl&eRE5Q|4P+;Gxp>M=S#ZY}W93N(3#$dLM| zN9Fnp&KfZ!x*lL`qW$2^;o`Wi(Njc*No47uXyUFoxVOZzZjpgDQ)KwGC2r^mhct>8 zK!N3dQ|~mbvhL{UV|qiPoKw2_NAs}{@jw9p`Nrwdy)v5=4|XQ`!H>S+mDwRcZ%)hB zIMdRg?Q&WH7SC5pGlV0S-p0PoWB_8o8eZo&x|Y)eS!@uKq#yXYjIQ=zp185==Xqkm zzEQYvK{10dv}d!V5Z&9>(fGsoKe&_N_k&Uh88M?%Ea;>!K(n18o?~*%Vz$Qon(KHj z8&t@(>+|`a;xb|UlLqjN0hW>ZAJK=cxV<@cR(IxA1!z zzgO^k6TiRX_bZM%$x&Y;^e&-#o$CK3!jIzj7=FLN@7MS}fu9|}-{SW;ejD-o4St(A z}H5aeTG_C_nY86ys;$Wm+ z-`tqu_7kdP>Yo$x`MHGfcAry@d=f8^RoE=LF@KB#|)DA@_w6er!oV&=&o ztxhfyMJCC{(n|3J`o6kq@)3J51cg{Gvfh1PFNT4mQ#5%xl8xB6TQN5bP8GqBOQfL$ ztS#W59HWIk;9H}P1;nd;7en{S4Jq< zo#FET7{T9`8!qoN_8@!D^n#iZJ7YV>$#$<89~PB2^Iqt<1`u!$>fxp8HaHh5e0QiDU(FTFDM7Jef`rzT4o#)gtrH@ z7yGAQA&JA=b$v#to~R%ul^{wa;pyR~L&h;xN6DaDUxIY!Ud)riW2GA$8*s!VG}p8WmxqFDCv(yWU7 z%`7+kMmj0Y<-s(~QkuJmcby((6K8aNGD;jzE+@G*vA4@G&OIS#qr!y zaYn~Czz|E+oizsAc{AlJIBDY#_B+FTHo#DiCecyME>#(p4RbUmc?nF2;fS1+TB8X+*~ zE*a6Ob?1$)F}Y^N;1ohuXRSFyYgTE^$y#%w);v^emJR;P)SA^=vwZMzh}NvsniI5U zg_IJ>5+QEX)e!b97%l~mHOH7};|d6K-x@L35MECc?hDS4nMesCqC`yKEK0G;kg0xf zzL;xFS07k#L}!rW$t-hlmrJ<}CCmeMF44hUQqpJh5bTW!sW&RAS8tJIqQ8(U)^1F7 zx^Ij@Oo+_3?F?1F`IQ%TQM0#he&uhJdaRXyqEwNTCmQx>R98ICA0ZeMaAK%I2uP)1 zTZRNVo=Ic*RW-BcBZk(B6T?kk8ll=xBjW;tGd9i`rJp34Kie0RcG|Xg$+Y2yFOA{y zuZ$r1g)!p#IZY(7PFH1d!3Wkc1v{-C-AC4e_2zA>3$yq10#^+ta;z4JE_l~!I%=#+ zQmbUeRIaM8pgSgxu~=5HK4IeaR(-swzypJdti7nm2t~BH2_p*7@Ddv4W;{U!ZIVrQ zbnJ)tR96F0LQKF^fE55t$)To-lo@^PG;FPcI}+M_{qYPAa6HvTHry@v7Y#*QPt z4%(uYv3h-_zE&SDe|W64nsGw_E(AX~EsX7@Kl2IUbz{eQVx)gaBt(BI;Y_AD7A1lf zp%TQJFQY^;k*nh~M?)rC!D~iybOw`z4JnIXLZ+;RK!OQt1&$0T1glc?yBY2o;QHR9#bB8^rQ)6JAI#jj2$ zRy7%}x=ALF)c+O%<#<>si3#Fz#T z3kzWpCM{0hzBg5Mt*Y&0mL2=itBcXg(a?T!OIpG=)DZEUmAFJ-a`x^p$f}a)BuHV9 zQw5LsFD99^oa@VSv7a;^0Qsb=<#qxCXr(O?6CusJ`AJhq@5Gpi#)3|Z8`Iy-^$$3E zm5}nDGLE=s0(^@~mMeD}Wo;iAW$Un2uEK_Mut*~I1TnItB{ZK)Vwa7_3aT3iD;#Ed zffds`J{dy>Zir=T*-AECt{caHJT~N!hBRJ;_z!OB_A*3F(-)_+EE}TzW)m41X-k3w zJ-9J*Y=_;LF_{=VaFCt?jO zPh@B@x$rrHfeQTza()ul8N`lfhO%@v;xn=NNM+GIrFUnr)z5A%`t4XX5rf1;W`ypL zQ4(dtv**<4c3RC;3;O_jzg~}>5k1-;MHDG2L}*rY^)U#{$a4Vlh_A|)jZOR2h#*Oo zdVjb{H;zae{CcAUVg)KSjbkNAB;0U%tdIU$e3t1&xl$!jADDwDj&s1gL#pcYpah8! z?yjUIGa2d$c&<@Tb9;zXGx*ovPeQDlOgm(rAZ{|{506W!B26D_KA8LE)%<)<3v4q z@o`7{H~@_x7Fssk1o0n=m4b&s_C4&+NM^lxBK;-8Iw`E9j|_%ww71vhFf&{lV7dD~ zk~!A~G6HEii>T%5M3!41j^*aU5I#rLaTCOe94(H9EYrv3iXStI?@Ollv9`q`i=wjF zsBLlNeL9&$=*&7j^Tk>RBiE`ZI$7dRV$YM405-;Q$|0DiqL>tVZSNb0Nqo3T%cnRA zC(zPdc3l~_Op0IU;D+A(ZUmP$l!@ZCnL*N6N`HINTwT$hbVYVuky%%Cxv*%AuBcpB z6e%n%I#URQ!%Yv5gEJ0+PD?Ih$%XB@y%6vWD+I)*LO_hm#4bxAAg(C~bM}2Kch#1V)KRvra>+L_L#knyYg#3dEG_H2LdMA9@P8j_n`J z{y(QbQ%EQJ=-TZDuFD>bNqu zACYhu%7t{1N$C}d&_Ht8>Dd~+DoTRM=JDB@boy&EwX^#(T^UmP{3NYDuSJj1=Oa{@ zQgShp3upS7F4-^v3e~X_uvQy7KGP9)pk9T~!$k)p%g@hWpY5a5%vADNy`gvP1o{iY z#}MTBK5c%!>4GlXM_y$3@dl{qvLTB5BsCV1$}gJAbx^sH(#(2jOedgY(3vJPB9&4k zL!S~{eHi4J!Ul#mmNa%+r#NF;CuVP|%F_60m8D@}hrNE`{`!i>h4r{LG+OH2xGk)4 zLqUJoKBrYb%b{S?0Sfm3wO}bKDK{s}IyIupC}cUF)tVmm13= zcRjf@)?4=DSGgCYU$s|N9Ih+3EU+A`n`^0Y&uyqUTqPAezamh!r25bTOWDT_WsBT3 z74=naJIZUYEO6T`3mac8udXj&;BKsFI9ykTSN4kfvIciWeZA$NePP4F*|#BTPQ_lk z^taejSFyi*fu+G+PeQRsyM2E3f_<@YV4lby!sXjd0VmaJUv%jHcZ)1gLc16X3iY4W9%W6?EX)+$1n*Tq% zpO5;XL|-vMU7%6C45Ot}@WFuoJwrdX9wqGjp}8mFuRk>RB>d}#=AQq?dUV4Cl$tXD zNkxVfm&yF#FGHR)`?i5s5>v7tS&tgaW>-|#qL~*gSXf)daE1vLg{IL4qNr6<6ZxSO zWV$ZxL}E#pHL;tX2(ju&Ru?_7waB3=TB-3!c9WS0Vn!1&^`@GCk3l>XN8tZ90dQWsCYuV&z(i-a&$9&V<#X#_YiO*0ZEnSq*9Iq}vIf_Jiv5eqViR6P{r-yjeGS!1 zF-zL*3o0rbU#qXKn%nqVP4%3CEFe%_TlHFFHJ&SPOqu=3M!r~N?j8PY@n6UE6(^L5 z%%Z6eO!aF;=A+^Fjj)asnXUqnnQ3IF^p5#4n?&C_nnom+4ec7y{p z<7+3Iep@Tn$}K}Iwt`0s>Ja;@DfyN<%UzbATeRiZEWWbWX1@vQ-svJUeM(*3xcV9O zFgV~pIm(hx>A-p`GWla-ak1;Gl@%3VRNfr(UxgE<-!lE7Iset0e>bjV&Yg39I>k4; zwjgb))ig`BLPbwBQ?n+BOv}m#SMI%Y`<=V)DqcPG?gJ|ita^9VnU!l-=~j!(pI2>N z^*@#HDryP}i%u{6ajKUWy|w6_Mc>D+TxeZ5_eQEu7JaoSVe$8GNoc0@eChTd#$r2n zooo&LtXRmU>9IqEh(8xQ#9qE&ir_h=Cwff?52j99vgb&eM-TRV;t8W%{JI-b`6O&A zq4o;5k!a}&yF)p#^|*VT;Uzf~|ELLjIAr071_Q3GLmEjrh{z=o3!z$rW?+?7ly~i( z5_FsU`6WaE!ValrV2fmyg`0L-LoGz%kDZYZne|^iy1Au zJ_WwtQ;2Ry+V$4e_(E`d3~5lfNK^=?TRgIJ#6Nrr{aIISL6F4PFtnttC}UL8eF>vv zeb8q2)58T23hH(db3yk`1{#(@vyn_2f+bM!5rv$rzu)cmbOF;zxA5QH61uI9e|QZv zL&&@K?LF86Kob>i2u}?+^iLg$(DA9<6zmXH{5^;YPbJ%2769sb4R{=gJ}yP4lW0~- z*FQC=J3cj}3r{7y0RMtp1~<*zG#Jl9WOGbZ@X%HZoZOfgqQBJZ^)iZ*HrAX*N`t*7 zlB5_@Vf>&^f?qhU!?e&pwIDooB2|D=9aF(DT<0FXrC`Y|bQ&zgcvwmvP@JA@Gdam< z7;bp$7Sc($(_$Jn3hB%_*V0=M4Czr`5PNmp1Zhj2#Q#ZYs9y z#L1H9zMa~pGHTp2Sy8#-6>q3bx?<6C`@D&L@!9+tQSNxq#y;< z$w)DOwufkwJEfHKzcjK?H!z1K1%!vMDt0|cw@Zq}L^QacXdrxsWEc{QDLP4(M5ToM zP@xW}^+=tFxylbircXgZrcX|S>n-GasPf>m099U}r$=xmqD~`lVTPkqh6Lz-1!#VS z9@tqs9i1UpveE52!K9^`vv)Gl5VoDL!_e^ZV5fuxr$0cfFwi9iwc?K~F{!Y`1l-7u zZGdD7?mo=yMLdSes(lMVgGD%KXVXpXO7ib~_>5z69Kp%xBh=flJ+|!tR zmb4{Wa#BqBQt%DYnjSL>EPyKL@G?PuwF!-fc!77Lm&jP@y$1}Ga!1;U+E*&tbj}#t zv4~FYDGZqTv&BuYriqU-(B(Cb+$esFT2gCee;g z@fqekB9GBw)<#3QAU?~Dg7&3=n=Xn5jrbf4C*y!Kb3jZxCJr^wKoRHK(C$bAh3k1z zflihVoy>Y1uAskNZDu^sP)H`~OXeInJdi&O^?&z|Z<-!d$h;;)f|v2mFeKs1@J~+n z9w*M@zyBv@OzF^qcotjDv)l2AiJW8+r7S8bi^{7)7G#K}dO4N~vwIz8_o!`Ps=o^l z%Oi`45$t}8jZDF0)$rXga9KS59BSoHpzp*v9^X>5El$JaqE~B6*E^s<-5{mp@1O)@ zCYKI}Tuk+nLD7SLK%e6#qFdEcIOCznu4rbi>QlRvzOuKOh*st=4Te&px74$3Oio<$L z-WoBX>ypL9*NC+pxRWE1LB4M~973`w`m-oeIz>DfZs!ku1zY6P_dIIa)SPbpL)C-x zp*6ijR>p5?UiYs~?^^RCT*}%>i`PwBt}*v3o|b#pG77K8n@vaWXa9_4Pp|g`wQ}g@ zF-^CWN=8?Y2(K;EOi!LiT;55-O*6^!0kI58DGH{6q#4Fxe09lvYfI27k6KL|ttB7|ZLAC=p|<`$14*n+KVsmL ziN@(sYb0uV)LMlMc4UaeXwdsJV5BgX(3iyuE;HZsnANez^b1_TejX<36fh?zguasK z2ercTg2^Qk26&SWwo`-JeJc9`CjiI**z{ zf*WRPxX?p~qk)H=gd$XqNl=j`n;CScdl?3lqP~I8dJa4XdL`jnPGIP#5#;f*bdo`+y8-x};&zI19AJAiw z^S3R^jg0#U$IDQeFx^E|buDc~W-nYOkw z)0x(p+L>wXOlMkWrkxq=*f#d$fGL(u+$|Afi7my94L!tIQw>^e!uMM{VC_8L_g>HY zUeERY@m`^3@3q(AUibQ~d#!!1d);f7-fg9R^}t+6d({ex`uXf76!nwMn2&ZY#pNLe zmmT;~+Zv7>5pFLy(wT;XbSabzOK#=0!avGYpG(R0R*GB`$aR}@LYJoQNh4)DfNAub z0_R8q`Vs)b@M52usM;3|mS6gs{O!Yqn6SEx61c!U#W z_Q}Pz!T7~4FtpgaS#@_u5V97qv59q>yE~=?&VyFn-Emc`yhua)JdxPx);aqH?czR| z3k#Vvm7xR2V;4GI40cHj3k&E>JTbF;#57yT>2N}U>BL*7kiBGB=!=E>CUZH<9>cjn zAz@C_o4Mr^h>wn$JoWs7hc!H&7~rE?jI(g*bpx+2BX{ zo!IU0X;M@win$Mm{VsdFM^9vK5~)sN7h9+8RDK%)6(X-P zmt!0)9#QQe_YuJ4f~0%MU{Z&lII)r&)f9H9TFZsQON5I{hDJ3d9VpU2>J>a2pmzy> zGeuI2UqnW%SM^|o0+FARC6E9^M_Lwt;=OW+9D44os<0!=hn-9UDI4P>Yk z6kxg2O|jUWZ|!)=;A|>a>OectYJzvd!zj9J6fz%{8h=7g3||LEYQlH|i0kjsAR8i$+~F zqmpLR?*l5#u;F+f{)ibgdFfrowiUUrAUYHARhfFTL8VbS}Ufu=HR3^_+kZd z((@5#7kIsiL%=9!V?7@FlgN{fglj!ll;3~N5*7L@$}e%XU=pA^#f$nc&K1sr&#$LP zXqls`F6owjCjWeH|!zDYrRvJk;Qdr;2$et9)T;ue7F>{;-1}q$we|q z*qU%GJ4U=Qu~CoZql$__7v!#-DqagGOk}Er#+R#9`j@9DiEnmyT|OS#Qj{6F`#a#F zg+rN2r5BrRZ;>@1mv#akDW2)fmO2j)@@PCML5RZ}{P{|M+y0Jp@`o6*YP^~{;Y`NH ztDdODat8)S58Mo3%Z3TK6*d;8wPtNAnIZ7IhQ&? zcp&Re0@6&;e6+ZZ@P~>}lz3f+C5MhwpoFl14a}3U{cFf0;%vwz4uIMeiSiQ!4OAbG8-2bTewQUA z6XKAmN^4lEH8g7tbF~Im3*)oz?s;Tg*ayEQ(fgRb;8dqfDt~Lpqu(^lr#~h#&5EvV zE5r?Nvh|H9ac@3Qj=gm3%!BJwFnXNo3M-8t~#P_^EmOr zEU#I|Qd+VTitQWX$>76R0sQ;8RUaz|w)V`AoVv z*hE_j@vO?duEs+zxndzHt`Tz)=*0jrC_tUQ1|;-`8gG7a&GflpQta3c{HxYMP^=emv(e5p?F{u(t5^pI;wy~E&mc%y}6W@GEjN}UO z>4&-SHCtOJ%&ZO2UxXH=^oACtLf7cjb{5d1L7}FWG_U^9l3JV^oq944>TAV02hH!D z4umYpys)Siliem1Ngj_Iz>*EmlcCOJxc!rFCoHNBElNgP0-ZsEK=L$7(poSeem4Oz zDM~nVgqjlLc`lYreDh}!l$ouST!KIm+1W0ZLW&^mOeOGo# zq-;G>gx~1&z%G`36Wj7fD(L;h8z+MJwUqHra{6R(9XWmS84_@00BJbHz!jj6$P+_( z;T&pzt5&G3gNYiSmw=D?)*cU_sjU-_H+%a@tCUoH51k~2Y`!|Yk(dG)Fw|#ap>X24I{G}q z^t1hvV7_pEsjgJgIv@9xur5LJ7aa*r8Xd5ab@d6Q^@6cJ{3`P%_z9OE`n=9?9`x-G zEd>GlCrgn7$xjb{vNZfFayi6q3;&DF3qP)VEWA^9J?s~A#D<)ms;a9GwUZ(zVJ!QU zaTBWZp=5)r&+CN!_4FCS*cZ5vlp;pST}D`hWGXI~QJ`JSN&9GBc)l?%Tx2}@UFpFB z0~A-#r}t(G1NDQb%TNzrm9K@O`oYmUd_BZ<*GBnvrz_S{#>l=q1k|Ke1I^SY*#HbZ zDFv1|t?n}I?h2pLom=ej+{1UG&6&i|zyvW(C-vIDW-ycYl4yFOKRnl~W#$Q+>lvA+ zuao|yKd8>k!uqqXtIv1_o+~cs#ZI}ZtFfAfZ_xF01x5nSFw`(gTpO4KTw9n}5`z-( zOi6<|ualD!j~H#=juT%qW>G)9q{c$YxSUI*|HaMlbZW5 z7MM_$|Y7Zb7_|F zp~2(z!uT?K%(Czdc$OsUWaSe&`tgX$6i$PUC&?Ip==`#Xebk3V16CG2SR9CMj?nv* z7nfIhoC!8U=hQMO9fY5F))Jo+70I=vmI<`p6K_9Wj}A*zB*aONI+iKQ=|BSfq2rKY zKuVt<-=1b0P@C3b`MtKIH!Z82zQD~@_*D81LA_iqjcAyWniMEv|HCp=vb-nFiGx?n z@@>IX{Eepy3zlDX^eRn_DS!F$#_Fsr4@7{GX3-bb_|O6cD}lHnIwahUR9x^c-Y6%2 zX}VKbALk9x-?Y55Z};=hFuV5bvF)MEFYnsJymY|!$EoM~0|$0J{rmyu+2?mZKNV$d z*}aDx&pEJb-_yH)Jr&uwYrk#JJIwE%fA0C;?cM#(RBXkbJ37Zw)6xuJEc9C^jpHvL^qF@xn0woOz-twbvM7bo3XvbytMbguBmd?6##iR zI%Dq(%s$(0Mx;Vnr!qeG{ByhZP}5oV+n&8rtm@ahe)kvVg%|fv(INXB#8$V37xpy! zB$p@SeOSthhYEye+A#0FP(nL|j{suD~ULV?U-Qb2M(X$>4 z1xKS8)r7Z20}R70(5&=ABh20ia1zum8t`CyZQv4F1s9K)$Upe5TV~=55|){wtxrOT z-`2PV^WbTnEIfngbRrSQ7A9WIJBPW552hghYy?Cvbkq<-7yt>c<}+#TFB>%(-{wBw z=&?VEvvemVB!UUkey&=7vPoQaMOqNPh8V9`G;S#mD^X7t*8mbiS0g@xhCA7ih#UeC z_qPOV6LIXsi)8B1mawU*&&5?EEB2sJXg)&Dt4nL?er_3Rq<_XWUR5#O!!?uGuSm_| z*eeYb8DmofO%pz%f%+Gl?XgW<6@ptPbhwIKMeL!3{Rpy4k?`+v_4Jn_EoL*(J=>UN zq>bSvsK|wgDO)kAmpq2WGYoysey)X7I^7O#<e}h3_$yKAktj`y7-LEmi+duS;RPS6*k)5ov+dnw>p@m{d8J0(oO|C& z4c(l(b)|6kN|MGdLKTG5o^}-&U$$PCjEuq$R^sR%^C?yWCh`Cyv`9^~L)$?pxRMaM zw2}})UeotUlLB0|hHDHWBW3}wu!m%x3c+Ux@OrT;I6xWHBHVW>=oMaBi@s3=!V~yTpmC;zqKKvh z9UK3Nw&s9`c1U(u>CeMKCQiYAV*Hps8$Qp-6zmtYGyJttrqG?F2f}BKNc_;~qTf-l zZ_@7z*SCZ(jEEIs_xbvkzDP}b+dTp75np-kX@`<}M@#tfm8^G6XZ36lvtD^VvXMR` zE@Cg>B<4j1PS$s{1id&&mH`X6O5D&0V4lQKk7Ssq6&`J&M};?9!l7O*IKk1R%S;fF zQ@jLkLItNF(_~S6q(y-&HUt$g5Z%_{&3~(-1h0vU_<*Ave%H!xog!&1d$9o9eVMJ$ z!*KjZTP~-}UKiP(#~z4B1dJSH!`n&%OCC8A?=$QWqg}!uZi}#qQ?4^~>EgaG_6qx? z(gdj@p-y3@Uq7_2RqK+-WD&RQZl_&AoWt{Ao)F$$d&&zp2GOS%`_O&9dqfWg90I|K zMRG<12XHR&!=L>p~b zapR~Ytun2G7ch2pQ7s+oZ~M{+u*J%-sZcNg+pG`U9fl`;_MUdsSQ2yzH#EWrC28ut z*3#&teOjDTa0cD5tH`N9#vo0VmYNyS55>tG5aZR&T?7 z8}3d%a;9SX;{(uuuV5rX?-Ew7c6z{xSNPA>b!Hoz#4#>W{3`5|t2}6@-Mb3)M>aCS z3ekHQMxsVjL_YvI)>N_dM3-&w_SIzAgP*1L_f~nK+hE5$(__C)3{T$)0(IhMs(@b5GGEKe9y$_VYQa{8c_o1}d`X8JW8cmgBX=a7?Sy>LB+@8ii9 zX%{Uj@JW9EGr_q=qD;XRUu;M?o{*K6m06aiR%c~ps_Qb<=B}`wN$U1X2j#lBQS7gRvwZtDfoG0F{o`1>UxN?-;CH!=)CCm<?u!doHQK{~tPDJz-+ zuT&$7xY|Oj6p3lEU16zFBGb}m5be9imm&+#?M;ztc{0v@E^>8Za2^=2UuNW!v1GH4 z98!n;3`FW7eE7s|;8Jo1*E3{)gAv~>G>k44ZQ9)OHaX??c**31D!il=5hy1B#tVt; zP@M9*oi0pVlw*H`h`Mi#Ppa)(24Mu@Oyz@E&poBnqn}Ya`%@)UPA6So_I#-hr|d3d+u8-VI~u_T_agzhs*xhqG z1$CR-Cw#WfN1#6HWDt|u=JqJZyzcH5j!q_hJat15nebuHfG57OI)7e=lWc=}8ml25 z*eHuP#&|Pe^e0_`gHFVeEfM00{Qd(@ zLAU{qI?j!E^>t5JJGEJaI6%oP6Z&r;Oks9Y??e~{Au!^H^E$DPk(5TbV`I@sKEJ%p zW&d{VlxXqjN-{nO!Z?8l548-OH_ShQ$P-5L;gO0qU#9Onxh7&wT>t!{L7aHRoy1P| zwf(-vtz<2)ZR^IbkHee(P<86wX3AnTQS*#`hoFjy~P$U;g8E zcr2-fS!-SRwq>0;@;3C?TU%X%Wv!R=IXHxj;r#rM+sP0+&lcew#A;)4C}VB6^R4BK z%C$6UN+j_a7Ed4MBjn3tYtG1-UI`0%>Zls^cf4CiET*lG`{qVDi zs0QIYCAtBo=i`bl1LtQ(gEp zN?M(o++@m&+7e!?40Y3S-38;R+DEh)*ctQ(Z?H3n@>Y;xkH4||i6XOnGQO{%fIe+; z!`$H(4_|4089ry`!9z_q_T%dYYJ_TUR9?{HvpE)F$67~#OeZJaXYM`aEfC%3V)3Pw z38z=xg*4uqD1gjg`{A~}n=RVx-0xMkVQ3bT@AGZS;*Qm(T6qM(g zb6TgUlLBcB_#czY!|lGlZsDGGQEd{niC&jnLOP(2=wo3Mxv-2RHk`+Nq5O;}98MnQ zdU;sdi&;xlEy(mmqzGTq5T`{CPi8X98Ea<&FJ|CmBrjAPGiSBG(Jsaf#;rH^Z90pAT|+G7tKAyav!i zS$~hy#lka$#}B*u&#oU>3};IpvS#8u--NX;bHaLnNkRMTWccR86 zlwi;4;?c%4R=`lA!0|7F!r;mF-7pX{N55^y$u#&kA3fQwFiLz1`z{e1eC^nD3-sq8 z!|M{J(tWf{EFd&**y{e7`;Kky$K9JYyMN+dv&H>Ww=OXUZYXmcvy%qDUB98*jqcB1 z*U=e&?i;t)1y0WS?_b}c(0=1~I`D-;MOa}>I<8PS(r@c%$)@P9(0+x@krg3<51fDP z_BCn0A$b-4E$cfj^CF94)z6Zu_mHZ8OR9dxZDVJ`vYFyYcg%34%}PGBZ-c#e{RaEu z4c*5T=FO}AV;;rE=uRMx47R@mhJq}fSe=eX>>0J*@de^I6qn<}_80;5o{4F6YuDGA5g4^l6V?=ba@IEZ#>O~Zn!?>}HT!RH`)|<6Fc)v^ zP&iDEEH~Pc<)Gcl(NQf*Br_klO&j3}HPhdAQ-_++cb7P3JLb5_1^zqTY$p5#GTh`m z<_&IL@^{(hS>2=X@f`hO?C1kh_vjB}Mjw#m-_&7K?V$Y4TMtv0`Zpf>cKzrNDZsqN zU3J46H=N|`jT?!Oqt#b86|D?1L^@ zTW&%t+>Ug&PKDQS23b@1msL0Fq;hMS2ZzA#!EOMY9?*KSfZ!MP!laD(qPW+-v)wDM z(cqq45Lx~4-rTeffxpR@n;yB%BsYHx-GPm0;Ij5+a^2Z3*luFyV-T$KSoeMrcY1>@2FDfy9xEdJPKC&cuRw|pnu9EZ1UznpXd@MJb$xs zE^xsL@qh_4JaUpo2<$DYmv0l^z6qWrgvy0>Xb;&PsxNN_dq%VBG`R;+E`TiwShS4k z!ZSCYLT0h>L$|1YcpG7T`z>fPNg<&ti6Dz~7-Q^xH*IfK9~r{uZ%^FhiBN(+o@ax< zZDt3sKVU*@%fqpCnyT9dt8bMj*sE{tN2mSkW>UUSWDYDo*^U<^Y1p{62uv1$EzJ*a z6Zs-75dZl=ZrS={DR=r%PW)0#A{a7dli4yG%h0LFr0=L+XeUg$NKG(--RAuNV6RSd z?$&;9{!E;?rAY^S@HS45cnpzNAjX#uIqYfo5c%v=4tx4gtM>0jodu*T6&Ab>ZybXB zh8yXNsGZaY%)#`9_J6Mvy(4xJ3f5_|ZliYsI3nPg5y_q%!7M+sgR~Y_ve_NN;agAw zL1fu?3%nPPY=j`Z^wLW&Z&p0|=wlBIB~wFp8^4-UaL0%Gf+ZVuyL5Zjez^E|rWMO} zU;iVk6))zk`N-V)dg8{{?_Gh+KltU>+upu4^}+Y7H}Z}bYg^YK^L9edLVWowyXxoe z+IGv&jh}9Nv+$>X+&1U2k>|EOii)=0bM|at>xaK8_HM08(%G%`sVDw`=}-9iZL9*~ zs%B%dvS1q!-=Q)1KDZ4ZUwFNMSM9rvmO>Ew0b?KkBT{Nh%B5m8>>sIQXu>H0x)?d} z!NUh#Q*NQpVsOGhLcIABy_#QE^oe_Kw6f5S_TRPx^%|Avj>%xa5$6jcCE)8*diB~4mulOc=tIW_MymP|p)K~2 zM~oVz?;zs?o{X@G^xcFM*f;S6X-CA{QxRRH6cLhVZl2DBpqQBqH=j6=RqUN6ZHHXp zh||U4GarC308cRGS(B#Y5x4+%I!TlXO^h2N4i#6A|2|%%1u&(Nn(fZp`^hAhK`I77 z7;eNcT>zjYn&Uh4b2|(>&~8*2X?m(x!(swIh1||52vB#Q(la$FleO`WOoaY%MW<gdRveg!$`-o-aecfvf1fCG+C3Y#uWuXq%XT8wJ65e)wR%T!?72ld z=#sO|I})Gj`*erwCHtK_VuVM2vqN&L^ZX9#75|DI)Y=b+tt6jyP4%}9Ye(kVv2F9rh|2H#k7yK z+|y@&_%5;#`M1AcR{UGU|Iwr3|ESb|r_cvKNKT%qiu^Gn|E)jx_c4{vzp(dr%mSvK zZ23O7XBV#1ktI4^5iD}a$W>)~?wvh*pZ@i3=C|)KOmpEprlAmpT5K=v{^Rp|b|o{1 z{#$=cGIO1wxKz(nzO#GR3(QMBC<0Lgq6kD0h$0Y0Ac{Z~fhYn|1fmE;5r`rXMIeem z6oDuLQ3Rq0L=lK05Je!0Koo%}0#O8_2t*NxA`nF&ia->BC<0Lgq6kD0h$0Y0Ac{Z~ zfhYn|1fmE;5r`rXMIeem6oDuLQ3Rq0L=lK05Je!0Koo%}0#O8_2t*NxA`nF&ia->B zC<0Lgq6kD0h$0Y0Ac{Z~fhYn|1fmE;5r`rXMIeem6oDuLQ3Rq0L=lK05Je!0Koo%} z0#O8_2t*NxA`nF&ia->BC<0Lgq6kD0h$0Y0Ac{Z~fhYn|1fmE;5r`rXMIeem6oDuL zQ3Rq0L=lK05Je!0Koo%}0#O8_2t*NxA`nF&ia->BC<0Lgq6kD0h$0Y0Ac{Z~fhYn| z1fmE;5%@nrz}}N&|5=Rvw9Njw%pOX#2W0liMEjXUdwz_4cC5WmW_Rf9M|Jk}h4!q4 z_LhbAx6|#b;+If%FJ=ElynS)9U6*W^CEJ-~kfEqa3S}vZqU}GCQrF%~QD50h67cL5 z|NC29Krus+rieUE$B}!s;z-=tIA>fit~Ks~I9lX!nfA{a)LW=UQ9`@KN znm;#u$};S^OzxfJZtsYpz8F2_?RN#ensmvj(a3{WGlPT!&OXnmhd($u(G(zI&jB|fuLyag@V+cyRHhc^w)<+YYD!(QTr z^^#KuwWoTu(;@8uC!yndG@Mm4VGRmQa==bed&*DCK9@}lj-vG8)H04pC^5l^tVaKEHN8 zmA5DVn!J~DzRiE&3hdMHllv*O%&Yl{Waq;=$=pq(mAO?hp1>)v?sbjku8bMgSS2=r zqMV)~TgiakDsjoFOdBgx$1)dXPTrf}ij2Y%xzj*-grCJ2Q%r5tQ#ysedeb~A!)NpG z{YZXN8crTmNyAxeV=&AZ7tr%ejg*aHOmt$ZG1Jt9aC$(~Cl9OGIL&ABa2g{QE>ZM* zfiWq4$h46PPcrWZ!n1T|!z$zHd^*wbL)JSMOaG}P$R&?S15QsL4;C!8fr2@v)zn+Y zAbFgvMTBV$^_DKkgG=FDOp73sg1t>!c5S$M)mXOaMrv2tn!bLwH{VRTU0z|F8k?<+ zk-8VKY3>=!Sx>)&rQ-XXbC^>uuiNc$x;^fmn7cMQU0$2NxyHjWYX-lFDX;*IH<@?? zRiHd?vwsm|u`w|Qra*atJe0BB<%6?hg?X`pLLw}cqmDIb&<5cQ)dRWJQzwh?gY>3Q zilDGAmZKDMrBD`&pu^0ZSDts&u}O|KOopPI@p5un?RE8QG>NKNiIN1$zpu~f;g;y% zl9Cd?inXy9^cyJiW)Kf3x_MOUMXY86Wn<+B8L6j-@AQyZL?R#hZlikJ+n#|_W%`Y3 z%}r`yt;FIXqsbIQIEstwHpbZoQmDt zUzy_)X4JHSq8|%(=`Y1v^pmjx8DkJ^GKia_leIhQx|o>5vT%a#0E9FTf0Ev`cy!}m zR2$WtBuy<*0$S6}YWowhDAm1l=T0j!ilrq5iEL4jh-4KL8#p5g1{`&aR8pQ8k$C1Y+ELW!nU>Ue_g+rtS1 zbU?UFk#QLu%MOgqfiyTi_P4cDTmFHdXFkOKoujAY$UvCu1s#LLgHiG}qVDhtx;T&h zbliDw@vP&w!T~wt*zvLB z1hV`05n<6#L#m+;A@S*C$he!lb;SWfk z&fiCXhRT z3LyDqoq^J}wyWP=CNUrn@FHn|C%=vIx2>i&|FUe&)~Cug2(58;jBJHOoXAqRh59v= z@Y6Vs#+?UI%q&*9hs-6;8O+yL(LWqhXD^ZT=yT#pZ_SO=x(0$M*UsMjmTqE>=N38@ zNpuP>V!!EBVz-h0(#a#;mD@^@exj3cA);YSMF$g3-!{gPy0``0HS`JYD-Bnr;U@JP z#oYeoZPc~}NpI+qhy++X^KID~k`WwtL629Uo(|+u(SXOnKFf9^Sk0E?O$aZy|m0ESaWAJopx3 zq;qZ|ba~-#3ee-uzR5~^-s~l8`jC$4*2n&=`yE{ZsZEO7=uf?OUW4!{k*5ze_fom- zl!l^nSL1qZZX4C3ZvyxVNv7I1U=GXJoUokDJYEsb)FpH1Y(=-`f&xO^)IElG6XPbG zKo39v+uuFA>!qiEy|?Et2lnr?J@@-PFYJEtk?U6t z4-^=B4Sy~$#26^V8LS2CS8ICz3}%_L8rez1gn>+a9w%Ob$S>wFEJ2=vrdq`JZ{E*H zRlR>k2~%r43aK`>3O)qdn&Tarj;vrtB*L8M3v~AdZJNtv{z{`n9neYCK9oaVAKrT? zsEf(q&q#Q#X~6)u8o%}U-M)Z#>9q-}$w^HN;nrbczjaucZwnQis+ZBq318;jBn0Ex!?@^wn4n*k@LkzLg`;*G3t8QoFzn&tgFPS;C}%DVpDK(Y zw5QWIany_Y+bGg*8-I?!%>VByc>jOr|1$B3S>I+**PD`QWtvKzzPKnq>4{mFWmG|a z^2`||=J19u5Ob%DdgzO(m|y&~12O-RL4_ZiiuuWwwj0~m7d@F+)!a(`WLh&O3f4=B zuO+^lNTn{Xq^KR=Paw%-Nt|`$#5T#;EMB3ROf)^Aw6RhRw8bwlpYvRD(DbCz#z+Hn zLBP(XUU|AHU@uH1Z`8p=n#?>XnrRz=&ZMRSNoE>0FUCXpA_dbypF6B^-U7OJ0|kQ(TQ>ZK3Q zGU}ke<%c&KSs_ajZ{2eEryqXs?d3@}BfQI~CQ-k6>aTx#^_ACOdz+07|I--5725xj zO8OMbm^otKCgYkQWm3qpVsbKh5|8J4^o^AMNhNf92v_WwR6}QBUQSxGVQil2LQz*a z8?So2xSW-${$T7LGucm2`S&R^a_>{-KY-f<%KQg$dr+C*g`2z=^?v|?3q=hp{%ssm z)U~M@srJ7lV^9fyN$t@;rQ|hFC@~KzA?kIcBf7FDS@l>f|J^giO2?$U>1kzH!c`x# zO1dy2dNofe7af;{V~jJpFuJN8Rjl&3Dl9i%fBbwnMyKZrX&tf@cZFxjQ`vc8l{}th z!fEnEHZwevnZYFq`%<|Ca*@(;s0z9eQzs0jcAXR6O1;bvPjc4bFeeclsXfDCz6XQb zEKkvNjeis#Pkv(nQbsu2HV4fQRp%+v#JvWiu$ z=Bu9N%{5J{8o!H(t*&qW?g{y;mNw62QE=){QC(BZEU#HN9Ti(;Zfc!Q#9iJ}vATv~ zuEfY2%oWvFJzq(<5)ekzY)V*ZWWrW9H{8o+(@9||n+C-bQv;iPZunoq8;QdwFZ0}4 z{xHuUU&4pa>aGpn&wfQpCWMz@j}Pgi{|CD&Ui za!nxDZO#c@nz|>g&%<+*WkiR(lmRtk-$0LCGNE&x>eQZc@xrZ=xop0QqG0Met_vp& zX}vf9AkV1IGb%HT$$7>EsQ($pSf7Xfgp0v6gq#-P$@CGeFVA=;&xq^ic}DNUn|$== zr1;_?GEFWXIh+73KRwL!;%b8-Z7hY2<0i+F!&$xdZ4%K=@PbNCd4**Xr~m#F=?l*) z&kcWiVVJzSp&{`8mJX%zZ0CM$EF+HO)+IgZaaHSwlljT}1;^UD4XtDqFXrhH0#C zX{>0i8fcNVHrF@RF%30Mb*%%9vYJM7^E#%gVnsz&eXF}d*4$jNj)4sRy+KyrR1?W% ztuwc*s$^tMH7%|6P4Cs3n-?_ItUX2~wYKR>G>K}iX(L$Hrc*T16K+*%`Mt(P^mv^K92!_zsNYg$${_D8N(YjaJ-yDe)f zRxq-Ln$=F9aD=6hO1@uEz7R}j%;Ey(*lV50S(}5tT-l?X)vQFP^RB%t(MiSE@YZ28mIB8 zSzA-Js_RUEmO z4&A>bbYDeiQF?D^(TraElR5qJ7-7boQP5#yM>TPIUBc_M@B|%N)PzZ)k01Sl%ltP& zJy<1w-4D72hDrRB%jtty?JK2H5>?=Di>LXCp3(euB1?jl?schNPzfC|{+6-~=MW|e zn3Xf>{3S}Q!{U`wB}dd5o{tq7&Y&=Zz7wWr0~PS_j<9B>(sBEM{r5Q_!D=IIek_A+ zajengWiSn+`R!r_+~P4Q$BaqG7HP!k&c^yvs4+usSq2ZY)~%9UMh#=KHk`}K($ul^ zIYiC3@rZf@k@E*g+}F8VGLV;|M#9M?f;n%0Fy}h}BhbB?F%r7FDRjFT%`X`ss9Mw! zFnQp2s3Cu%hai`iF=El~HB6QPy?)5zgnqUrj*P*hwK9P?At?r4n}~%4#+j zFj7tFY>Xti6>MU~$Kw~4jhNDulF56TLzS$^_1|yObBHi?ar|cJ`7yNrxW)RA}EENULZq6 z$s$<-39|8{nmw~ebAL0N)KaN5VwwGAspU}Q{i9e&c4C=wHAd|RjuroP}0oZ zub9t+KC=_bROE8pvgJ!q ztze&{VyFz|1;_*V1gsY^)?6GTpC@nUYLl7I(S&Z>002#s7n3ACLvJ?L{Z_#0-xUwjxfd z;p7_bSq=AR4fhuf_mYNtS;PHZ!~H|U?bmRxYPi=l-0K?7rr}H)?kx@XwuXC0!~Ijk zEzxlALTNVj=Gf%ayMM|O9ybV=jDlhTcHRHyHG(L`C<0Lgq6kD0h$0Y0Ad0~M-3a(w zWO=ZCNGM7rp&V9JxZMoO1wcJyOMYoEQ*gq(O&WIJ)mDR4C!N#dk60)S(4sFj7 z#`1J?LieYK?wb)Z)Jj;Da41hu@#SD3cPvnpdqXK4EPm#wgq!?a>i5PK$8&|kApYS&Yk|YL^}P)8-~*PkY&j`j4WiS zczXaE6d@Ig^PiVc1~QrXtmN(NLhlimy?u?K{Hm>zmyh7+X`-k^*DHe$;*oG~A1Z=>rPt*GzD{Ef@OMRU^f>`!PnvLFo}B3s ztvUy3MNgd=3d1tsZ%bGDmuD-5p(3(4`ZAv^v+Z&7UBb`;w83AMt!&ArJm^*%Q|uBt z3OMS>$^s`cBHzTMu(CkNFT@hdumkI-{B&ic1^L+sWQQKev6mEiQRvX4ImKj!GPh7D zDe56BGO?U!mg|79XuDWuTlzk7yVhZ z9Mm1UKPLzg1c#w}vqSgf5axGx#wVYgt%L{o$+YcIX zchRi*Sk`kA>^j>!7DTGEcjpjEv(&<2;O-(l$v}@zaS}4rNGzd)6!xZRA|m>Y^O2`@ zzWx53fr}!qk~A!TCjn1njf&L!u1Xay&-X?EjI0!&nU7UskDgL`YQ+xgSfJHvL1%Dl z&VSkOPDXv27v{s@)1yB{svVq9(_{raAJ&RNFb$}3znG6*{8RI>YhfF_KSwh;i5gWe z&e!@RDwrqiH_ZnTRT`CnwX+?g_%i%}dULpw!Lfos8S@RXg*{%3vC#_)zx$4vlw1nW zpGu{>3nr<EH4XR+5!|!%T`t2{IgzZbM0y zSWUe_!C4dtvaumcjSXau@CyPSHZHWjGPJrX10t(MP2!m67kKEeBn$w9qa6!Ul2i&K z2VvokLa%W10-tBZn|TnU0p_K6_!-GBWftwlBU!0qFxtkwv0b_+ zhY%AUDzx%J+}Q zmDTl>`~t4vFgRn#t0)D`q=3?5`x{)1(vRTD09j1M^W+6elpvr0<}{217jlvwOl zD$K`Y!!alJ{nUW$6#}b+`->2Dwje>GXgs$9PF6q%JxgL=arBp2@1Uy34!l7`? zp)C^bFzh43F+Fz#n|dw&`{Ng4E6}xJ=7(LcuyX~6UU*=kapsor5k}!sT_e_weL}$+ zcWiVa2~crPn5D?JVQ@?p;QtGunMXH(&_|$x+{fDF#~3~Ro>$dy9U0ApkCtgZehfaQ ztDku^y9LEwh}1t-@&P^lI1n9EYN(UkMff$!iR&C3AIFt!vV0O-xqIW4mxoXG@EYk! z%+Y74GW?VunO4B_J!33}+dc*t;4$gu@Q13m_3(4D>&IkcG1D}dw>1)xnw2?S!n^vt zGh?`mqT9G-_>?f9hm-KQwS>J!o7nXV^JV_is;!9JhM%x8xn~AApoF?)cxnt6qN(-@xj!CsMm>`K5i}CQ{UL)D1Wf(bCE5l|b zw)n*d?C(`nPp7QLZe4xtI`Sx|9xrZgp{QR-sQa#a0sp;*{|;aG(RE%5Ms?xzb%OOe zp?DF!b_|<3A+kqws3V7j!y&`PWIR&?B$C8jQO;ZrHBrv# z3523v*+(gru}h@AvW+_FwA#P_A6G>R*%aA%=V*U7r}KA*EaCAaCN|^UEMgFeTp=5to5-0I@`@6>PVbAa(hvJctBjI4k zFo}^s)DbC_;or{_>Ll?nrzX`XP+u_#BuqRCib&(6cqD~M8lgZdaebdo!1d=eSV{ieTb#qtRH1N@aBH#gqVVh@1i_8&B4H=AHzqjE5+f7(7X|pbKtFn?kDKG59Mnh| z`H3nrh^!GDq_psZ;$vHjjX{4G_Kdy?IYJgTK0+i_cQV<(G6_)+vQojh$i~|cuBBz< z)-=E=#l|aoOT_rq(-90J{$Q-Frl`fz#g7|OF(d1!FeNKdltgCb=??k+y?>iLmb_t< zm&Q}e?&#yUMvf_zKP>KFXkIIZD=!ux2I1F6(_f1nYaAcqsKr-~Ns{s)f)|9@hE9#G zSV%WGYL7f+7;zltk#SsVUn?2@I2acbcqxr3doBwh0sp=23$A7B&Hh5HS`kKCPskzUiQ#YMv>Hrw8P+}Oi&v~b8UGX5K$ z@DR3u0n{&#CI0OQ>t8D-l|={{COL(e`QbCM1NIw?L2gKR%V3NN@E%dqhEsVaGS``2 zDlQtA?!%*uFe(xLZqUDuDo2E!#_YI=OXlD=hL1*y>c)4x$ppG={G7oXj3zM;Jyt?X zY>J>F_myI==H+6?Oh?M?o5thxe=Qb1D%Qz7ihzQ5Y~AMZ9{H@q-_ld;vIRHZb-uSa z_ix2e;{REU(RX8s0*i(H#ewrf#pGolP}n~!$)@sqiV0MkSZQ9ib(@Wq%-yQrS1epA zImQ}Bm|M@8P}_FyiIB$s2S(1liu)f!xqmJZoQ9DqmuhSHqmlh@vX{c&GVlXC^jwMa zqmi5wVEfhLGX1N?I07Y`!F)(dW}vy3(KZ{C274ln_5LSlY1P{IS;SqST9%refHrHdoLTG-U_ zUM7{xE8%D9zTxyGJXeUH0dFc*Dn-Y-RP&guE&pKPciS&l36C3tHqM3#RM?y?%q<-mQ>Mhwi*3xDF=dZ_eQAnJ z@EIi%oL4CIx2!JJw3K2QOWzGaNs-eu_Qq68DC8Ilvn9P8#g8dhtdmG3h#6B6)n$IE zL?WRN1wl-g4h>{}sZcOGcWo)&{U{iq

    eT|UGtFK6)0!QWD!o~=mWf~1ER?*Z*(!@SHls4)=Qax~-W(r1mK6>?sUFTGq%_Br zYv;R!|JgeJMo%C+G*FncR~;Y)sDmj}b)d&HO!9V=7hP;E)VY{WjR2Ub=(?#MUXz=CYkv#z`rO zz$wjFWJl~)^OPNB>>&YR4pgfW6fJ3vNnQHu5_o{~06bXpfBA!u_J;7vF5$yJ3HCk0 zSI-MIuM00X5sBH&>L3UaUL%Np5+owUNg*SLgg9d2XEzHU>`j>6jM7t~6~Yg@%-mBH z5a111`)6-}+#BHb1q4a~a$(i;gcwXl#*$FJy;CUtYr;w&Qn`7}9&g1;9Pwl|L!BX2 zuhaXcD6Ld2Ljq6^A}iJ#sy&6F4tEWew7Pjow{QWIq#a8n( zJ2fg_7t%^0;~A-w(73!FIl2*aUh1#pF{wu`cQ?`d0E?-QX0p$*%;$LA=h)|SeCBh= z-}a_T^f^j=j*UJ?k&m30eIZt#qu1vc?Da;y1BBiVbU9NgS=`9waPU>7wDd5pt+=MD<@2&^~Ufe5qVj|q#>6c>Bs z-TKVXhPn3{b=o_Ej!_rW)BHcrTxM3iMCF6@B$mD4bF_FJ6lfpf{(gvC{;nq#!Q3>& zt@pY$r9MZs&+)v^ameRz`5Y>fmxdIdqs-@M@Hzg+>!2JzmfY*MdOODe_6P9B!>I9L zV~1Ti#CV%Ul!o(Fp^K86m;7l^#=MC%XDLFX^TAypuR7>GFmAkRY&eNr(t8AfDnWOw zy2<9PDo>RJI;bWFYYtvi*pNQ*u|LtUipFz!Y`8oaNR9nky|dKWqHZ-jBMlgXLj+Pd z(3!`tXiiwsEJY2D4-|#2c5!pe>amQMNpka+=Kwe)R8VifDw)e&wt^&aDA;$~I)&eE zt9geH(S*|QW?uLljT1w2L$bllB(&F}=s%&=U4iXtlCWBkdJ}Mfa+ivMu&V$aS7zXX z_w2;y%rU!uC4K@MCM48RkeXS2jD$FB7+hq#G*@d0Ow3 z%{gT1=1J%9B=n>koDTfsPc#Gn-xG8y1p^`mk?q}OxpL_6F=5DfL*kAZ4B82e{+{-z zCQL`vU6&+&zyKb78<{t z(I7sTQ>_}B(I5ra&d3An&1eu7NCpvJkABc$;>i#p z)FJv7oI76pPyE8NQ4)~B!l0Bx*r^^pB%g3^jF)-;fib8t3FCi?=B~i_Yq;cV&D7y~ zmqkPRu`4;~@^)%+^Bpg%_e#x|#`Zi$_->n1{m5VdRD(bI#_MbFPu(;K=}r3ZV8DM% z`sN^{H|e8;0skc_)!HcEI)K_43PW^X9S$j>>4sGO2K8SDGw|m4&|tvO97kL&C+414 z)N`ahbO@IoyJqTZajEF%Nh=2fhGu-Nq;m%$y);)12K=|A#z9DL(u%==|C01-MxuZG z6$~yO%)pyt^ai{MSNynhq7~awC$)*2{zI zhm=^-SNhF|mAe}e$uwID~*T9-;XKps=wMV^3yH&F2Sd6G^) z7$kYLiob#CaNcFrA(gDevuRTTTqT~QWB!^j4_!DCOQ;op1*XB(_0%_@LbQORzJ-)$ zR!S_E*nk!ERdGqb5cm0|!E}R59Ix6!t-YM?s<^^mh`V?h=T)=>`Zh1PYtZ=%ai0f! z>Etdi#Rlp0rBhuUSNIEY7kxNY7A!FS6GNG+;|3XejkrOEGU_ou$2rK*Ys3vQ^cr!4 z48=~VPu-c24xvbIhNhDgsG3=%=|mWI=+q@%6{r-kh9acabbE7xv02T@A&d#PBk}DX z`Fe7%MN>&Yq^jNJa~$*}gN}T%q@(fdrG$_Uc15%K^Sz{=g(~w`syk@Uij+Nzn=@84 zS5SA7FFw=3B&SEoBRM@v70KyQH%LxT2O~K>Dj#xM2FE+iH$=F%^T0-yX88NW zm?15w_DxNZPi5@U3*rv*-}EApBlgap#~$#-Qrh4DJoe<9m+A3jL6p4rbFkpI zG!6=*osm!`Cbg9u*ZCYTVz1-?g}fsdU_|v=Zxbfrt6bA?vEdG#_U4w&!*>gjhCQ`o-;l5+zb2mZGV>H3da|k{`kU& zFYJE$6>cn7Xq=Y4&FTApMwZ12v`0$mzPjPwKvvV^jAeq~RpzY7?=1hCv`*1u3Ei%3Q9JlY4-MfL7 zdu2D3^QrASxfE`f>6N`ZcS|sZDF2?9_exnyc#zKbH+cG^V-&d>0Xf?STbO1HxC>l?`0rh{q`S&Sxb&KwoDYv#ptL?wlTH8-+TeYoitwp6adfWN~R%m8$Y@&^l+Ek;B zZ@E#TgjbpTpL1qsUlXMF-v7Oy-~B%ucjnA_p7WgNe9v=UW@ZtrHGzRTIM#u|CLet1 znby&*`$r(r{h1%8W&ey%_XXN2{LJbi3IxvJ-e-J3>7P*i3}X@TKV$Kq@bQ8gPI!K0 z-LjUzWS%xHufGhWBrh+I#Q%U4(?|dbAOR$R1dsp{Kmter2_OL^fCP{L5!smc@9Y^<)?PF`I`(TVr8qAd?fUcz$YDq6 z$gb{Pb2jguv(*jCzj|j6h@@2`TRcSS8(D9*j%@tZkzD$>c4Xt@M>39NT(Nef*=(gI z+1Gi|aIZA9cVvn0bA#nhY3Cn(bMEkQY5xk}Q2QTzu0!dTRaX=e=CS||TTk^mCFKVf zIgHBBF1pISW>``(D{bAgl^@Ot-#0r9zse~(KpG7_5y-c!QJ-csc zWQD;xvOdjPL99cg73o%Kq!u!o)2yy^>)4=+SXud};>$a-l`^uQnthyR)5P;E0d}48 z<8#y;{&?7U(UPXR#VfL#TSAR|cH`pJ&2@ZsQ(be*;-(gUQTF1drp4>{x~8U36E9@% z_TOrgcKdI!Nn^W}4Rc0Su6q}pB>*-C-YPF;ZKc`O-P*-wDhp^FdSjuyPpkx<;C$Nd6bP z)mCq*>O1pcr5gD7!^$zxqP0I#Sx81-^=))IUe%ll{z>^;wj<6WD_NqPHZJ^dOsmdj zjg)&Q7s?%FC1~FFD;-BvgD=hht2xqG;8%0H_?%HSTTUm3LiNfr%K>S$Z!AcZ`{#_l zG9KLXiW=k~z4sNhS6chJ`cC%0bvsV=6|33abnwmY80(eD++$VyDjJfyv)miTk)d$pBUA$> zA=>yI@-mCWD5OIzPkN{gy_#4APnHr$kL!~i0y*j$gClXB+##5V>oiNB-64p?b#8~i z5!X07a_x{-uDHl$qzRX)U9b>W21{GoD@^Tuvp5T}&E5f1Q7?@-WrGiLN7iSwkF2n? zTcE(+k*2?{m@BWCODoH27t)C8sfNo-ju?o9*tgs6KT%#}Zw zD`XI8Oa`${i)fe8#(=wtx%*hIDJl2IEH^DF_a`jZn3Ve=%QYnBe#COQq+A9x>e;s= zp1s3#b9b2SUPXL_zyo9>yOt9iz9O~lq2@$7C^8?z9X z`*oJfYKzOgC+1mPuEvbDA}%*t+c0!<$*k4fq8)-I4VFF#x*BE&JQ)@Y$+9IenejZb zv}BoP6WTFBeGsh>7fhB?-_L5i#^aE-WRVtz}Eq@=}l466S_AVn%e0_`~PqKYUIwvL!HsxMniH z$|v)voUWOP9?`|^vpvd4)tVV)2yQ{s%&96m0Ot2h@Vh+fcf&%tVIczphso;KR(3ma z&0?TuN1FxJ*;A`a>4lz)dRgStM#K886PyK}%#M08;}UtsB`|$6%_L74bxo$l&_un< zifUmrsaT7oNyVn~AOOG8&o9n6zu25Cjz$6VJOzKEI5W94FwtTN1^^5L*x1Zry)%~{ z*)RZ)EvdZ|5yl8l(mQjYcjiWWCmfK&0WeIfg8kq;R@HnOglvs^M8!J6|tTJ&* ztVX+$iL;W?YT?3UQ_dsHPL}EOnnpP1{Nmj6i>;H2wV<~W*XLN!U(&8sXVoGY2Ue?ZQkAly*DL5yYH0z26AK7tQD4#`TbNbMpAfzOov7n9kP#WMHcZ%d zm@{H36Ld#(jK{PlfEXRDF)eFqb=sJXspO@qBs)Fnv>dYnj}()4LAukdPgeooP?YbN zYveE2z#2yx!ub3=W7s?y!-U}YJQ!+@8VWC#!;2X^!Fj%p$|tVXtdh0u^sYN`oU?A# z+8mKVM@`V?Sj4XeC)P%t@Gg_-H90u64|b^^r#y@KET-Nsln#p#BB|nW>2Y#%N`tigP`H3aMYT7)GZYVS1X_NlYWkY+#2AXFgY``ej`_5ca zD_>F@UQ|nWARF3+Gg>)X#I>=#!br90-WHw^X&07Q(au`=w%TxKEq#OoVpbc|<=T}8 zZr0R|G4+Nz`O(^NLtSK6faz`%<8V!k!@IX@ZFA7I9BTGxofK_=w)F%79UU4Dy~xv% zA{CPrp&RSOBI~%6THpy4+a*91Q&RNbO|2rTAKzgR>QLUmxI==AAkYoRe2;W+l0J1b z>P5`!iIwR+PEYei3ZIxwemBybSPfOhT`USK<~Of(&cHfKD=|8 zytyuX=Q3ziB1?GU7u|g^7J9$Hvj|N93u}Vl8C?J?V}bzg#I+JIYbOY@Vgfp44fjPiG>lH{9RjF`W6;a!xbyqllmNTqBf7v+Zv61V{D92m@D8B=T_iz3-DRN9&wtN z$>wEj3i~4D-xTF`qE0?h2eX6=h`}lj^dQZ+(XsVzz5Kwk@VoVNfPljg@!Oc%?V5W~ zBFR0NzF0_VUd>4KibWNj@S`nYPi4P--XbIGw}HdAM;(4_nfzF4@5S{dqayqy8nbj- zP3VQV>l9ts<|pXJU2D3HF}pCyCg{dpr|81m1b|`R0)Y8gVCo|aP)}Jdlgq+WmZt8(yeeP7U{DLF8Is|%6?6CUwR9GKA5C{A#Ks!Nrv<^M4QGscqme& zd9ot(ZaJ~YV5G>Z35$%Z-wA+rM*(I2i=6o{LUvLx+)r)L@X2Q6;Oz;JgDFxc7q{?# zcctuK5&rJV7`ZPqa{oFhxm<0%jGr>~?gO5w*o>3wkF5VPwB}!!(=#dXxtxGoNSUcRp(9QeG@NI*;z+AiQ-qw4|Y(u3_4pX^|`o$Tf6@HYB> zdKli(4sTocwwF+Qo>5Rk}EF!>=x>g&lsfl_{-!VT779WjTd?+M86oTkcUY!j~obvi?;Z~xQ z`xHlI^JU8$n+c3LDssm}71`}DQazP0F;NLj`*DSq5oma7_G$t>n3`Qj=v`Ebk(Go- zK}vQb?<0b30zrrhU@b{0v78F*69^ipAb$cu3l+flPBGO?1%(p`cq%BGM4;StyQCa# zRt~i&Q`RZ(ZLBy8fe8T;y-VEqdHL;I!y7+eF-9Y{q}>^ncEFDzK=(aO7lgV-Z=wYH zT$gBflu6=Vx?%p{TKVwj!yjBrAG+v2JHFaZ~vACI}nWbQsj|LxxGCij@a9LGAPoZ5E0f`{m8@H=Dxc z%@yAUV-=fYwLI1&-*HR$v8IYntrk{2%ztoA+kd!8K1|DLlcF~FMS1}yI~b3&!{G># zd@K_FEz4Iyc#4s$0MP_clm$PG51zmUHSTVf-OXTJx%8&6!=Ey9Zflm8G>5k}S8R-T z4W0pPWTiJX%bS?^gP%wF&)9PPXW{#)jZUdg zz(WgLB$)QZBDSJMwzY(9EftT`=H$l&^IGJJmhik5a2r-sTKwz;#jkIX8(YGSk>YXd z&(;?C`j+rkTAY^sbb_)!Ymx753Evwj%g3sIp+){#OZbJBimW)ql;-m-@(V5D=UeD4 zPFA~A@dRu8Us~iftHTAWVZ1>T4j7}cI>H1aE!qqp8IAfPqG{_!8ju`lR%s}O8 zYPoWCf&pe;oAh-X5Zxv1Fga)r$8EbGSuJl}9eyNY*{e0twU>2vR%9XB3pd|%dDPdC z8c2n2yF8`ww_Ps(el-=a^@^5C?ah^I%2q(ZuSn*vrV}tdVopgbUWt z_@F!!EK}ff*2r_#B-u;#lp3$djg8*x*2rI56TWT@)WQT%HQfzF`{f=czh{l&xf|k1o7CyK}{%}qBV8nQ$QgTJ}E~mQlF4x+pHLr-_CUp5^ z&4ufTd!RMEjqYWfY&Wix%?Uc`JgUMYw&AE4exb!I2@l(bg>kwkg}#M* zm6fxp3hi+gQP9`)XP$Hu%cf@6fpQo39ElUk4L*e3()a<}2iD z*M+Z57D1)&#-^6L*U5LU3!AUdmIB&U;DZ*Ci58>tRb-nQUt1({Bl7@kYw1r0sSEF} zlg(Fz-(5GM!T4~Gcc0#n$6vEHv;BHB7w%^uH};MP-Va4@ZP|E%C-k5|U0AnXUbjAc z!xho8k%#y3*NIf&_USr0Vd(9jpt4xU(JD?~A)me?ti-B_jKZh|xYnwO%zX42$^}&c zjnbMhdwqEJ`gnU2LegheYG3zWtDBl>zDmArefYNZDZ~2d_3}5?ho4Tculf66EKoq{ z>Gk2)CQyotrq(Ov)+^(c^fx7NuMIx2ml=_}KX`kQ@^Yi_O1bdL@YE~mBM=ZL-z-7{ z=3g0ZzAD=;{JAhvQO-sNr%r(8)VOh@J$;gtZZ1AOBXY}#>kp8X~p5E zCNsm<#0xc((kb!=${R>;XxDGJqr)Hi;++j3qjMVEyTYyIAK9Gtf7-PN``WL8BLnr) zt7Q9C;Y+WI7flf5z@8dfK~0RT|0Ape{|D9q?f&-E2Km$m=)#fp&q4n0qwB-;b@KFe zv5EBnb0Qp@SR;=|qMfge_z2PX!K4c+u8-|92CtHjTopbNi^_;Ks81_8vi<;g6OMYb z`zm>N9FjxKn?Fs2#IsTU^Tx1eqt^fIT}TvJbUu#DX1L<6^+`vI*c3tB!2RV$`Ij5R z-`bcAAJ!yjMEK8>y3h=3qxKBr7+oc4pB#eL{wdlgSsUf7jZ%e8TkPnrgzgh;?T|w! zB}=PpX${wJsu)kYg>|*cvs%NhR@!ajJHm5Y>84|RN5wg+XN|0y=c3ozOu3;|UfUYp z(5n4#K4qf&QmZ`U>hPCZVUtMf{#C2|wbt<0S~a}6NgFb_PFSIGX$!n`fy`|O18@G5Bm1LZX(}qwUHU(X zVm4LA-O;vgqAhLRR8gvN*D5S+hih8lmp92@-V~m3b%k9ML!;nF{p`p4T2|aU#HTjN zk8cV;wTX5F7+@vhUQlI2Zdc~eC}lutpscJX&EIuo4UBp=%pKFy4r-2pXIYxc;U zM*$^I4bS4VUztPP>QVJFv{Q;~hV^|i+@{bivc@E7-wZtiyX1ee8|cm}iw(mr_S)(h zx&hYO&=A|q3|uY$_UiD!)l@sd^|;4j@WO1H#xcC=8qGmyUG$b`IGV-QAZP=7$dag{ zXXz@e*^E(AMLKe=a|__c=^4r}_D?|Kui0Es(FLgK3<~t6c6fN^I>MT*v{y*6qS~~P z8Ebj|weoMS3IFDrcqKO1Oj-yQNRVm4n&?t$wpJZoh3HgsH?3u4{SlZ%6qrOL_CELS zYvjAHi8=je=5%j6ycD9(Rvh#`M2gJF@Wh2ZYK-?4YG997nB_l%<=&{};I(q_S}8j7 zN0$AB_@NII**}kAF6yIKo7=Tru)fP-lV#MFzB^&LYE7$Y_a-a3 zUZK8?tnUL}uSFLx!*#OZIw;NNLS;ToSyEZ^~eMe|A2B>7^M#=vng|!79xuaPxET%0q$&XVQUB#YQqVN!<6tJDW=b+ z6O~P@4Td$`)(JP$P=nnY{Y?&Sz1CAKI_PhYKr8h=k3#GRh_6Q>k}t^Q3sK*7Ct`D& z)}VxIs>CYO=02gG-a^t50X$(lG{B)#^#w}iX5XxP|ZCTfIse~ea=Ov9UcZ~E94`Hn5& z$0jxy*<3TLlU16~Z*i5zc41Kmp($~%)WBPf{p$>j49D(i$goHbPGG_&nv=c5(<}^IeEdZHupL zmX*zHD3;NsHf6NYIE9t%Zzk9KEGmcT$~Ln8eK0Z%MzrPRnj7S6ZqSAh3;#ioz8ww! z-*1+Gzd5o+RBn)eaYOhQ5$2z6Y!neZ?+@`ggoI`2!0Y_>Ve+$Lvkqc0#W z?EL|}$b>bHkGwJHc{B0zlK!qMQSBU`_&G-e_&FA=jY(<*embPRm*ba&8df*+&2_ac z%R>!3iPi{3wfA^QMH4IFK@H~Ylp2&oci$W!w1;5Qsvxcr)J&CrGfUci5;?F(TCj$dw-eCi3QLI*!w6NK&BgI z(~U57&}PDujMJ=9XQTg&2P~yvN`lG5TOhh@oCdpRqjvxOM)}`w)WR0t2x%PY{Ckd7 zFdjeoM`xbIsd2*R4w1Q&)^`r-8;{nv>Lz*BO_A<`djoDKO&fQz(dVb5k3GkXLjBfwkrf#`^-+ENCi(bH%x?FDcIkUD{S#-=!YpQK z7A;^gD{67s&GNFFFh$}^6=H_N}dIsBWO zB>+JCP79Kn$jJHo(ZtUigl;Muh$PkgTt3;o<+fuyh^24F10g zg#P1N7K2bUZK9&7HNY+<)seUwqT@YG%O=#Iy>L%#>I7|oQF8toR@SYlTM5QfYXIA+ zMN`|LO@oP!ym2t`^LIiwWMB>MwxLfML9H9JH zZn`UGZ-9pB%WIe|HR5`4ZO)|e4zG>2sYD;3w{;IElS1Ik*hzmnHIv~iXGcKphkt0w(zAC8*Ts>f@NbB} zp2M`}vcUm80NpTSr_LOV!>$XK<#{{dN6{cM!9AI4KI^jNMR^|3pAYo4z1W-E&oS>V(S~lE-+Hi6ZxeSAm+lmn#ka3o3oycg z`;n&!`UJrCke7mg)lt8{d7J#r+t^a}Imo{x>UYy^a?@=r%4R|SY{=J^oNsQEzqt*3 z7+F6P^2;HA#!mWwpoctnIS2aEdCmgm~?L z#Z$j{RUJ=WKjt5|3FEfNUC&3cM>#ugm#54P@37 zKkd=(dytB1z`fQ@6HD|PA~``U!T$njlK(jrW+MS4fCP{L5Jf4a!u z@9_@`{(lJmS3LfgJ^ntA|5cCwHIM(R(?Gr3qxkL0T8HvQhw{KwFsih>luf)cUr=s? z;;f+Hu(-@E}uuIaOI!s+3Gs>Zd7Tr_$|Eu5>C>N|YZul(|mjwKB!% zQ1%rm+lvBUoz`{GWe>dO={lHa5A=Jwy!*I(a!A=?KajQkse^~|DqiyJdd6EhqENyVmbaoN- zCoO}f{VZ)V)ASma=4o9OFM5>OE{>=6D`b{7Q2pS&&@387Q%V9y%DQ-K;5$=4H2A+W zHBd~?#Z$vi+aW3kgfCAWSU|Xe1sp%Hz>pGe6+JnCelT#4jJ%DQDOc~k67%j+)#*<8M{1vDE% z^h|X?ooP-lgj9jMkbo|v=&`x3g_+{{%a+$P*M^$v_(%yTLO)P}K#TDO&5es|>sXTK zBbu5WFhoCgvNW`|fi$jezKmzOd`pOLZdu&a!q+ceRYz(=jq5ZIi)tM_XE7V0($!0w zLk)a$Xju!tyrI@fXtU~?pgM!kS3|4iOzg}>F5!x-THHV-AWQeL6UR=xcExi(66h=I z+OJJknO!hBvAIbKJYCeaAEr&1O`k5>ODEbv0n%)q-Rpl-@V_NUB=9Fsec-Ss6nI;B z7UKLZ;W<8&>Vo2H9w{&=bae;b6rSB5ctdz@Kb?04!qJJ)M<+sMTzF?u=aF||-h$y{ zfr(xUyzGGzuXwul2i7?11FIb&O~mVeI_c)($Y?hJ%4x zw85Bjn)o**j+?=81v3f)eblEng?eZS^i0&NB`aXSYYswvu&(sQn!OfuH!=m7^Tr&; zDmVx;iDl`k!@2skG?uBpxv+qu0d4_@@fCLLqetbh(DYsiC4HKUg0EJ&gWoD1=t!$xtB&)wfevFeoDD(aK$|ge)U&pI zpba|I*yS}t`FD&=7p@jViFb0lyqCNK7re5sSl#0@Dc>u0e1Y}ZK$}U+TTAnr67ygHbqhl5iZFW$NstOD~nxGfC(W5Y9ZH?&*Oz$%GT+PArqiI5$oV zoM9Xi21t-`0vQ~Mv6H0|m6Lx^0#$~IIi6bIl#KJv#P3|A*{_Y1{S?^JqAs*G@mhEQ(_gj8>d2F_Z-VjGYX1B5b{l|j-t!r5Vb z!lG83VSr|Gt_-7*5K>?xW_l)^g&v8~#7+jtqZ?Af9P44*js0xhq~p1|i(kY#vCRM- z4c$Q}3mBU_r|vh>gXUKBa>f_OI=CY^m<-Tno;B<#6j-xTc-jAA*yizQ4YoPHB&q8uQ_x zfeYq-Wv!mm4^h_+@cK1Je+-k>Q2+vcYfP7-!SSF+i^spl<@C4r({k+(Z~%NXNKDn7 zX+EIFw81c_a}sD8B!jWapvOH;Lq_Bp5)yP=8vGdyCPTi~?}BRZ<#zGrDhRu>uRDs% z?sXJaLw_9p$;N=>xnrZl{AzmV#$dz!8}&66kSpcW;6K4b*NmNqb2e(%Qs!FNV^3{Y z_aD{9MKGPlvNmy$ak}T+4>n<|DS4Q}!U_n4X@Wv0h=4++-7v1ZJ)0{Dof&u;mGw9Xt>XQmN&bNSHUaM-gyU*ZVcd=r6g zzOz|6gQn9RIRaE7z>!_dfD5?!Q3Th>3fTi2@sTCIw2|5uJzP316xog2S^6cqGtZ)( z8oaB}tKFB-Ta>f(q6oCLiy}=Dyi4#B1Mr4Z0e_;fh?_}oY?88r#(D@>SD~rQqV(`x zt=DriVB55GRVjZ=*hPD*fFF{AcPGRI=cMigzhy861%nap;|xY)@Y|8AzjzFi)s|<^ z7f3;2k;5qvt8cDA=nOqgwfjznv{aVwWWBV#^DtMx0}df6$Dr7S9sYR`T?@xln{RZx z|6-bcU$yv#6tBR-Smh7!M`<6>z6kowP^58PV4iTl&oHtS!ZIgtv2b4`ZEy_kI8yJ; z*nXs*f6ZZnleY)#2txwg$K_T(%V)Sdp7Z|E!NCX{q5C^Ndpm3fclh6+d%i(oyZ>#t zc#B^ALx3?B+ye`gx%%K{LCP=@8%+F0BWLFdjGWsz!#<9T^73+6vANJp=qfNR-0KSR>E0Y? zn>(97YvNBxY{z`zhdq0EKK?sd$#@-_zJO0e>oc{_t9QQA@v``IvTvy}J%^qrO6wLT zlEupCQmU=zCZBa#yv1alcsntFCMy|lX|i<8qF$G-sh?vSTFz(d=_T}Yyd^y^-in?# znO>}3nu;$OUm`jES$dj&eBBe3NVZC^&!;zeujrQab8^jk{(t!yCJ;LBKj`V#rvHA} z33`qFhJGXbm9+2UKZ1EFY1X*c6`3_iqu_pE{3@d z_Op<-l0$t%0_o|ug=Pw&S&$Xv%{k6=Z?QSg{CwLB=9zALzq{XhESn!5>^&fXcK=ZS zRu3sBM7_divW4b4jJD7mXYX)vo1G(OOK}_36GAh&G_cj?wtkw;p9a&xama{V{qw-_`jAwf&OglGg^55CuhW%L5OZad+??|M$>as&*yo*#%>w)5{VDn^xV`leF~SF z`=7~~?2+C-Z}UQ)0Zwl9f*+gyFM0YqIf-P+z2AsDINg6hdvN-~A@<<3Thbn!zNl!A zQGfUluRT5O>D8W|{-uwjPfw5bYfn%AHV}E1nq0wouFw03I<8z~JkXrXEG<7Lmz}S^ zM!VFG@IYI?EH2SfWz*RC)@{1rJP*8e73~~-`kk1aa)skR1xYO9zkB>o_QsYM1<@tC z#p&V<(Id_jy<)kzv~_7K5sBEquj1{ZQOp(dM3ZQMbBoNWef1LlArAOiV6Q)OMNX;quo?ze8HJ{d;t5M;o zvhz8}KLvlEz;_h>#%j*g9EUVL)9=X|)q2i)%6icL49YfC#@e_N3AJm{v`M^ z%3lL#-Rsj(qQ}?6Q(Joda?MMTmT2vv#}n4m))O_S!MD>u2pRvYduS4;Nw{;^PTjarLxA8jb}l2ruAfNL+h&6lj1q} zJ1Kr5o)E{x)8eT3v3OiO#m-Aw*R-nQS@=`MGobM)=up`yI35R$$@+hLr2nrJH;7Zk zQn=aye_O=s#Y)!y7ekKL{|Cf_Vpx1ZWD9G;p@$#!@#1pvW8WvfQa z?^D*^abJbVL1Y=lG>EWth!wMF5i`Xsaf+A?(UvP(MH@t)9pb1!EEJ1Ghv-bKX|lk^ zd?bJbkN^@u0!RP}AOR$R1dsp{Kmter2_OL^fCP{L5$3H0e{~`Ea@%Uf% z`1?HmS3UmMJpQjv1NCl?;w$;Jmyr4 zJe9q{gG~A5RApJIQZiMkpQePJO1DF~(y2@-QGV!9<~o(v$`qqR*;k}&FA98hTGv6B zJ@A^R>tLQe(C_K;?&I>wA!UpGK-TuB4j#&@c*(Qt8E@r~@^xrOrt4uFmr0c8JcDrR z8d(DE7+EiS>?6%Gs2zMQ57gklK(D6?TB|(i3A^(+Q`8=R0G1!>Yu^+=r6P+%-ho0c{`(aNLt{-&0; z()9OOI^9OozthrrG<`@*+iChuEuBx(AF;H#kfx8bw825s*+tZ!v<#Z|v$V-f(`#6o zr*&1l=uu|7IG)*B3}?@ayB;Q!9lKruZRPYpk9ho~G7 zzC3kc0pSJ~aQwgmLzV>bIw1VLB$Af}c^Lx>jD*V|1C~gpJ(9^qbBZH5hG>o}l4F!A zFZ2_bH}B$w@C{tNa6V1LcMd&QR?-}P!6kg)VtzhcRaMOi@cjHhVE%lTuBzhc86;ZH z{DA*rsz-GazkGndgpZf_LC-&L9?!$q&+~I=8oqOA8YDC)^1aYjRF1E1z1|TO|dsEufGgrbNR*=&}<0NGt~igra8S3QU&fp z0=kf*$L6{gW{T%8TVB)~ZKBPE~+{Xhi*Eyfo#H!iNNV@aNmXli!A5dGN6($Lxl z(zv?$GM?%3Eg`I^<#4Xu_lu`?IBge$UYaRZfrEZxUW96Rya70>xdps%cJzcyKAcERMt<|Zld zbWzuSm^NWHeY$8booELINV9o%um4TK|CS(;z@I$zfy16q;BDbqi1W9E=lD#j3yQCK zq`;ui)g5?Kcy@o_4dJ={blw#RM<+rbod}h2;hjaDN8W{b3xhfZ$#D#f)zf_8I}YlFvGZ$NJHUh+4hCw`24l`?;@^}wZU)B{ z%qR%-QJ>xv>Y*jjGf}UWtbhTpISBQ^y3!YG_FB;0$P{4C8*><|;2_K-mZhr>=jzwe zSf={s!UBp0wEe3cP=|kw18lwQ88t+u{}6yJmA)M>4ZKR7dK;X2>pV_D&%Npi{DXEy zM3v4_If~s09@(8yk0RGnCcrk*gC@}~rH(51^9#AXv)Ux#NSX4GQ|M*KSJ<(S9+kgB z(|aM5^l2^%zFOrDeyez(BdvO^I?me$I*iqDHUy0WZN|V+&)W8ZHt0}em)8vC-!U>> zxLOP)-pTFqUh)oH@XEeob&t=ae6QH?1=eQ+Z6+;mEzN66%&Vn&K?u$Ife!9juickE zu)xGQ(%?u~sfA@Ub_Y5P&w7iP(8z=aCVcr@#ZaEbQTQ*;feurrkXDjTLKe`!6GFrd zM&Zm!!f|Mpsk4(Vy;N4uB%wnaJ>RXr*6vgAdL%{@I~gF4?idMktcPtk_Oo@9j_2wwei7@$HUo4tbO)U*U~KN3y5C3- znp@G!B`boh04m4<0ia-nO`^o5!P*+0H5Gzf;`l5=tWa?__+ZH1lo$2$$`Q%wt}YH$l6cXK7%4Njqxpd*d;2=l|S z4|-oE=g6nrIHz*wxKD|J7)cs2aR$!FrE#W+7-EHqA!3*q;)aR2J@AQhs!7fEUJX^7 zI}g9wzqa48rMk0oEja&`!>w!Kns#b`2u_Cj{`!78r9ED1%!h*pE|~k3wR%oJL|r?; z>(?CpF-%%V0SNT1F=z8B9bMkE&Mxnh z9qxfU4fXU0y|<}My^GIrq^WoFW;gpdUQ1TkvoKTrx-Xqd9siafytmA(?pbI7sR>Fu z9x^9M9rr|r`G6YJ2E(AvNuX(v z48|&h9``g28Ify9NYHU<@MkcX4Eb8W3#!4F+r^u!AneM%?kFz1*HKsv{c-pw8v~N( zj*SlUtLdE^gAMm@)Ynu%u9Q!M{{#J+)oke^eV6!E_qS+QdP| z>7H{x*o3X7L+;KH`0Bp1p28|5%E!~-Kh0S!-QIOz|91bM zJUje{Jv+gpBa5o4Dl<3JI&)Z^nMUBv6hrvJd1W}@UB9yc3(noQO?qf zBGA?@iZn^^F2PF-z#C2l{E5OMZYI64Ny-iy>mgiSg{Cr#(!+PPUeC>dZPU_KrTj5r z7wxSAen<-5oe&e8le!c9mcbYl3`V$*GZ>A*Z%3~F;xR~8Tb?~%AO(d*4yQn@zPSRS zGxRjo?mHRMQdz!}_0smv!(9CiIE17egJKtU_~$`%EgVyAzR~Uei)s3O)#4jcyaEej zl|R5ArF}sABIq|mk;Zj_dBXiZ!^lzy%bdW)!hMmn!7;ewNWC{>`;mJ7HHQgK-X5?c z3<+=_ms|ZTpW*I!&ih9P2P15R?(g{Q?XVf#;eUhf`38mU{VumFDZ@l;F!39WoSiE$a&F@c`-}qjI8~ynm^9RPsA8IHS5eUu)5dl^v3X?U6I(}* z6dcKSO>^x&&^svI{09%&YJ*$om9E_e$!47i3EO){dc2lq>LTM_gHhVsHPW=uSmik7 zgo_S$SGU3FI5pI_#X~ldvly^?ri?7i9aE+9rJ}B z_Uz&L`0r#T<8^5I0zMI~&(uDz-uX($%i`0?zNO0a9D1H8ty`E#7AvDmskWY*eAZ?0 z7L#@2?Zo_1q1$bx%|x*($w0pWfuXqFd6>$u;Zw|K(?xKxpr>D({`+Ak=r#5m`i<~c(!P)X z2s+;WY!>!vvxhhpOuuQ#Hzx?q0|$2>}G#JiHK*Wvf_+cdd|Gp^Munrw&gUTi6#RVx-%pANw>v3z!8GJbf^_{hzw0>+IwWgf;liWvk7udOchYy3${J5Lo(0*N)|0Ibt*cs3is#_(r1*(=LL3uMi=*Pl z;&Jg5J1=Qn)2fPR;ZGIMfX1hwLuIGncpNk)>;LVM{=ZV(AWjua;c5r`Z4s{*D_Q?v z3^`i=9}o|UVeti#EvyNL9)8rvi_682eV_P_ga0SM|5Lux(2lddPg#4%eH9`Hk!2Lq zAi~liR?MPB%oMZ4DPlH6TdrsoZ4iBSh@%3rP%IK1qBF6k$pRbmkpL1v0!RP}AOR$R z1dsp{Kmter2_OL^fCP{L57x9k6~v)7=i`dOPF^SrtA5|{3^bV=lKx72F^|7vgIv& zbK~OLI(|jnI=&^uH@7TqYT@e_uc{*}>z1_ys(8L>dHrQAfgsN>Ti#R`VA_N>tUHif z8cHvOn&7Is^YA|m#wvp_lUP^n#OZ`{l%ryp^+7q z((O+j=%(lJ^Ul5gDU7bARPdE{RC(X1=F@E^;&gms26$B zLu^NQD_nL(rh|3k|_(vlbZKZSDo*?ghlXfU{YN6Edo*AdAzo2Ho!Pm+S!^Y?xSbR>!P6 z+q}7|o6lb$KuP6b{w#+DN-f}M((QJ4RD1Jhb#!^t=d%LT5=V_d%@%L^#Vm8aR+46$ zGu02gY3do?1mTiZYBorLQb5lU>qxDoRH{DsT0sKBw_*qjf*Cv2EoFjNr=uMb8 zDH#FC@Us>ecqe>gp9mQCA`PPq+#t zg)Jwo(O!Yvdkg4*l{{Ldf3s+juq^9 z5j$4WqcY}H8XX)V)b1&2w<5n($#DqdG%cK9IfX1I%|Ua_^awNXVV^;|Y3eUD11TP(ErTiG@NzIdBQVbgE%QzVP+oIEn zJBLmy+5DNH<&KTke=Hc6hWfU6$cC2ka%XvYc{;Ihr%S;PJ#s{q~^c4z_~-UzxXe35L-XW zN>x+vO&C9KDR(b`_RF zV-InJgGJ|nG&EBCuuWM?I4c<%w0@e+pH}J#z;MDsWPvfj!LnK{oR|v6oX!rvQ0ngR z-|LVL^$iK6r{8wER5&d_2nBg_jx*g`Y|b-3-}ZvL*lq83_gjx;^TUI^2dH-cP=D`M z4=Lxi7h8sl+m8IrUff1S!s${j4T`t9S>@DP8qqIE4_xexULB>HV&qaH|JjeYNxWLT zM!Z(MPW*znS==ICFMd(HL7XF2h?U}OkrxHgCA!7w;tbIv&J?|3xfl{J5?>H!iD7ZM zxLV{ygJ=}fM3a~Ey=TM7Jq%D(g%|EIQ&!{0e}9B=&u{^F&i^(>Q|gj^~~E=_emZXHc36K~-Z zD}Nlk7zaO8s3~4bBK1-q=-=5^T2uU=F8LUwqwtNF(KOAclH`2-TCF)(L%*kLj@OXL zUt?peQ%}^KuA$$vH7D8k)0$6fK5Xpq=o)@Sq3L`Jff*zB5}Ni~ z_7KA5UXlrEuce0UAzHf3!b62x8uaNWm`jgldLWAk=)=Uo8H}b3%M@$A$&_x+%(fL+ zGP81Qh1of|w)`R!XEK^TPDTGdbfpvt~>i*Hh;4G_8)bJkBtlW`V=_kaBF^m~xp?gLon&%2MPQa6FAGCy&#JzdOvyikw;m{Xo6j(=so$=)BBhtnwVH`|AB*HCW$5{ z*6Zng`4uLKCMMQnxv7T~|58={zp{7sf4$q%p04~O!@ z&H3RC`Qa`3;os$lpUV%wlpiL9{wEZK4-|xR3&T~8aJeH~=m?iM!Ujk9cu`nzgnNq$ zYLsbqS4-Z=`j$MUfJj#pdVOu4H2yj{N(d3gUw7S-f+cDd0it- zAGhZT`#i%;LjPYK^u`0*lp+ORU7Hw-owrkNnMJ^sYge4OP14$@G?&+}}SYGsdomh0zvH+o2K z`#wHxr1|H0kOh|)N#_K$RNCu*Bya99D@}(qig$;9UEJYTv%8g#?2Z#}cevl~V#%?Lj?N_~dT&Xpe0vZ1`(36)z8^hy=K&I>%5_dprv zOB-2QTH3{P8$%Vp$qPK4_dp@bD=2`xwe{cjRgTpDqCj~mADpc##%h&LAO>hZOtGsGgECg~_1qj5A^6Ns!`^9QWw>sVXMRnDFd$C;&?1#g@ z$e|*2sW(?`mRpL{I`0Z~iEJ#B6luHt?L8S8D)9SU|V94Nj9_ob}rtb%1cK94ERxkD1)NF6I%JZCEnU;36 z&F%OgI2{Zsj}=1|4h2+?zOQU5YzVF5mo2ZotS&%=W7Y+no3oPPktYStwjdkCOY4@b zZh?k@wkypB8OxS8@Vu5WvOdiQv(-_z%RnWISGR;B5?8uS5y(QTGMy~U(&&U%2rveK zW$nX1{po!K=J7rV*pc3QDZmfVh0 z#r9?HEr6joVd4UT;<SZ zLvFAC9%p^v>&{{O^Z^yPONiAhji% zLB|rwaEy#W<$-V7DjIEV)TWtF3lf-eIsez4qyD>{gS`i&p}s=`F}fbMDN70Wo-u3t zQ~X(_o*d{Ml!(F+QuE#A-!zVo!>HN+a~oM0o2(r$Sx=#pwenn+a-)UL(Z6vjN1bqn z0|aSg!qrkgbUIFq?NvT>j*h)D9^CVangQv(uc$D^_pL2Uhl*ZT-^uNzgh%qArLa4QOye+u$A)d01Xj6Wsjr+(lD!g4=MXc+ zs_(BqnXU$2{>gMm9#sQ9%EIDw@~SUnu{%a03fl`o0cQGvzF}ooajztd+tSk)@UyIE zA+;cTNSRZ-`>=0tR$KeNgZC6meV}AJV}oU;SK0+*clTH>e3WO3N8icqntAxxOEuw- z?8Pd--|jfQXL0tp@1pGS@$B(ApY!?VELq%~ojrbed0@}H>~WX=$p$gYN!dnV1`_!H z5rOg<_mG=s%=f@v+;;?~^4-6cn`S6C+$ZFI!`4W)3FMo$TsRdH*QFj9ysm1GkVRaJ zJi@2n7!nHZA6Z}RaYC`-!EJ*2jgj@2dbTO8_f}l$af5zEHJqwF!xf7>bU$BNMy=VB zteJ>wv1ZM6fz}o?YrB}W{3L4@;;PlGc`wjfEwd&wYlTVHprv)1wRsn4t&Ul9Or!XC zum%mbrW&oMMr|SpCTCX9EZsDXn#fBs0nC?f;%!96i9)kc-p;Fe=yzfZ> zL4~U{p*1ROdiX~_{~;8m!X~Xgvo4G^0{n;ivSI>oIXf=ngEuveY+d6VI1~G5mFAvL zXw!v>Y@i-zJesBV{pi_;e|+CQXzx$KD##}A7SMw`Ae(?35Y);=8JsNGlXcibf#HErdWX zZ&6T0#S4h5A$X%%ZP}z_L51SwRnW#;8U+Mjt2KQ8=Q(F)XOo3c+x+JHUU$gOob%kD z=bZDLGiR3B$xZ0(=QrKeu!dXme8>fUfQe5GDmtI!_nG*3ORH`xn{%LvXYuPBwl>_p zdP5WXk{nt0scx!9oX|6D!;psG)^&lc4XanLX$aijv}R4i`rDc||DKjyLeHdBj09r5 z?ZtT99MaRDYgfR{q8Q0G8V%{CW*3(jqn}sLO5l4tq+bj^2~>QaFrRD*i6Or11inD2 zz8-uMsQA8AO8R6=NDTOlr%U5`W6y<=)@h}bLH1k}X`Xt#w<b?2Xjl4&-H~u3%I1&N9@h4LEto6qKL{F9kNN@ZJ z#7Qc>@&7#uj~&z-znwN&xi|i&k}=s}z46;flNNj9e<~?g9M~IwoHBW-H~vk@*(_*p z{1)Lc3Mu~MN8tO%h?@yMKDQ7i-LbB{@sB+gqk{Lw-wQkKWgYkE=taPBnStzuy;uER zy$I-Q{g*kcf2qUzKXF+9X%6du&0+mc&;QdL_Wxst_22HW{-+$)|DnVBdr{x({PFMd zJH7sYsuu_Pdj6a4u>M}u_j&v0_hLX_$NxQt^*cTPKjpCh4?3*B7xjJK|DE>V>HA-& z?>|28>!0Pl41m7QzlR*w{}+e#KjpCgUexz_{`HCkz9rpiBhxPZO zzR$;C7o{u>Gj`t9QMD-Vf{|G|N9R6@3j8kI_$sG?f;a+ z{`aE3&*$G?_F_O^&%aLJ|2jSYI<5a|hui;lhxPxr!}?!zSpUNg>#uTH|ECV?|HNVa zuR5&%HHY;({rn~0VgF}4tp6_#>%Y%o{l9Wpztj7FPdeMCJ z*8i--`kh|?IGukEI~;$f^UrIabN?qe?0+xn`+Wb$>HTk~_n)1ff1J+0PUoKwdKmzH zz5iJ4u>M}u_xbpLtrr9OI{v+=?{oj1&Oc7~Kc}DnI=%mOdoLZZulv8#^Y3(r{a@p- z{*?~v|CPh~oo@eL-0$=J|NUMJ=2vOXFYfnw z{x$AdOs~CKTcZya!8>a7Ct5nI*47l$Yp=pt-IQ^EqEPPTAOwg zE`c_FIhLMq3CdbXUP|R%F>%USMP7d+9wpFbyxySzkkDZm2OHzB;@Cc5SG^r9Hg9rY7{0=^gux-QIbR><^^1 zzk?Tdwd?7`AF|$i)2_P-fH&aaTpelYx;lIhWZYAOi&iX*gY>?kq1VV7d<8}y+SZN_ z=*#IXZ-dR3e9?PyU?5{)pe)c!A^Dv}mtJEOS4Ypj7NJvbF6!71d980#Fx5MWBxH<) z@Y{wYq~SW4ZJG|9#=-@9e=-0O05@J11UuWQlu6p)^LAMk0^XzgCwS4)c?~G4_hd#| zH_V93BOjtGe;$ubd6L-3SDl&BOGePj??O{HCL_SR^TFetLcM-D~ukZSA^Z*#td$((HAy#R&A^) zwpw_WzQ}}dC!of&%On9Iite{-jFJXDw+%wV8_|;nh!b}@R97z{K4Z@c;3 zSk&kRD|rYYR9k9vyiF@&hAKw{AC;lX=@F_eDpU~}svjb=Ayiussx9$QJ<6d9&wvq1 zFZCXkcPuElPVOVe{32v)F=p;~PG?^Nz_Y8@&JU0U%yp4~1 ztKO3xX?cSIgV6hUAef{BA}ya%W}qCb|D>foysf6(-ucM)X-UA58aP$GCnwS}b|%dg zTWX>cXEJDTq-Ekv9WjE#5s>&JEkBrv*S;Zs(U~(Dlo4r}IaBv@NZFO@J-LzATbMu6 zT6JCYev%23)ax2oY5rA0|H_NnSupaue2G?FN8=3QtU=aUwS{{v(%vzU+6M6Bjc7f% zNH78YGErb7u?@oqbgiB!F6R?P-m)o_#I9n(&x(Jk+UMADiMmc$q1x zjk85j`tZt;dD_-r7$XIRAkKHfCL|;5W0iqd8?f<@<>(Imsw!#nJl;0h(w=4%Eiiy}IN7LOz1bmc+yCd5519;Cm*0a=Qi%G3o zWORg|FbrYH;f`61kFG?mf$x7#sEG_g)lGeYQv`i7) zA*EeGj@rX;}O`E2aJ71f@O8(yCY*z4%&6Lpx(ZNefdQ7j30{yEeBs2zE*pN!O%Fnr0`f zc#>7n8^kRY>8N;+>-jE)?||sOi0?Y-c8Tt=wSrS<-Hb(Y_gnQ`%1d-(WM<~_@uTvz zDK{V~_PC3ZvTVee<&~q#$ASJ=OfP#fM&)zTvw0^Nyyw`n-`rro`!H_MXExEmc(pnB z0^dL*Em|Y^1?G6`2K`sth-T%s;GP~ddzdD79`;0t=Eaua-X1i2ndY>4$hSl@v@Q5j z51N;lX6ig(c^gE?ZIBFkNu&5x@3|?`^6PoDv$Bxp04~uU3)%=`v2fm4V>~d=*gP+J zex;0`G>zeH>&U3(@+KFF+O|)^LRCO;q5ErV6D9hqtIhtrjM4@r9LoJx1HB>}sQv^S z=oJpZ*Q%9(D@E|t8d889jEQ7ljlS{p~)!! zcf#cEQqWbai?!`xS8cg=s!P5sJLs;ZZse(@TiHzDMKHTI?5+hZ&RV&vIG9@t4j#U^ zhpU>8jvCCXMIsF5*G98%G;wK>mbvrwTNw8N;f%JMY-o3+W%YdhdPZ;W#+n{!*)pFr zL+s>kI8UVIh56W$g?>VF9!XS;yY2(?^$mN z>O1h83a(n-Xx4Y&w-%_p4=Lu{m*enrpSR!;Mmx2<7JctVPIhQ49G1cOtpq8JR-nmn zkZzaq<(o*#i0+g_jw6L|Qi^m;W5?#e?Y7RUY($D@Q1UT8OJW}m`-iStn)NWN0@rllSsUY+s%rdH=POHZ8ut?W0>#S!`Zdgtsb@DtnR>2XH_N|E*njgT}uh( zM?$R45d%byC|`F}WD0(Ndwi_xus>3(pXv%eT8nuI3-#dETI?oLVH*z$l`FA`-d0Pu z0#<``R&7O_qE%>wVAlfF$04HIYaKtm!Q#RZ*cU<9d6XketZIXiOdjq!)#VrYobu#O zNwEHAwae9Tv)U_byjg{F_08e>n`uX^wNjRbL|U)9IlLM$j7*Klu=z6!Y_N4!EZoS% zEn!ArKaCJrk;Ry!AkuOUBWM8y#9$yGpdG7>&Z^Znn|r7kfMjj!tZFnNlIVjTL_-sZ z;9IuviFEw?tcP;Cc0ssy0d2Ln9A$H94u`n|aKSF2+!Ul$D^np)oVl&Q zD6hA8-m??=ST5EGL{z=!6U2le_>~2Mw98D(k7`=ZWDMfK0?Xxt8HmOY*r^9I(0U~k zAxctUB+_y{L(tbGWM8DEjvhj%J(KqHtPW zITYcd9X%SiFd>tigwb~NXiV%dd*GdQ%Fes$i16+@y;TJ7MHzF-U3OFNtb?g{D^t5; z=tqviclR*$zB*d2K2R6F52oG+Qy*Yce_jXL5Oj5f?`6PH*3F5K;z>rfiB|DraV17d zp`f2G5$3O;;J1weQ^t=Qj~`Gx@8a_&O$>~~FArTj=@R_(;?%&TOU}b5FcDyM%~Cu| zT^wG!xO&f|NUP@-E=`QIyjvGjLbC)Cq1u5zmQ108%K9msK!AP=2fy(Mptb2Cf96I4 zt=$ay8#Vyu+t|kj&hYz%e&9vA%a!&SZ{13UMOtqq1L>xOAI?60i(X(d0*(+w+iuYh z>}uCH3p~79OgE?aK^Q9HX2oWVQgPKwNmUqEb3h`koeA2)w~{vLkkao7KL zS#fQamrC2dUbI!+YTT?8SCPAxn|HEeDNZTga;v^CQE|3XjF=ai&2{$V$(LL{{@a16 zmrMy0jkZTo9jr)k7VLQ>4#S0!;RHq?FWg~D-x?$T2-{l>GInGi(|xxuE>vh z7h_(DXI~(GVpYNNQyYu@p?FJe0)l_9N2b@`n+SCNiR!L}ZsxzU#CT|N_&ZBD`+sLi z2mq?R+H4!$xSt2v-Xvrzx7o;YdcLd`$P4B}+E&L*N0;~FH+mxYJ>x@5DeoL!8nXegaY+EcfyE-2=m>C1H$eFCQkhIUs}3zK4t@wxSXh6! zlxL5RP{Wd2)jqaxomKx_N(q-yyuY+FT`j^6;Yo1UQf}kJD2ipWk+;*gB`#PR?phiO zcCooKRl!51=K*^qIZW>hytQyGWklXl2=hKu`(vVmk=Q!$o;fs#+Iew zv}GZbaM5;BKZ}3wgI(yX`Y7&CXVu44QENwpnbWCPbl`q^2L25aUi_{$t#)blY+6S7 zxp`SajtW?ZAVH5U3pXvJhlQAfo`^s94nGE?9$VHCeqtHTK4TMQOj!4DLm)8ezJ@h6 z8Q6@0jHg(hZBDZ!J;jo4B76v@b%dK4;9o{vi{^qOu5YCsc9HFJ_4M{~HFv$coGktO za+(<5TTV0Bf#te^&H^~*v3Hl-rrfueV;(!OTu!;&G4fdhdf###UxWB?dHC3 zRkba&tzM6l$}fh1)awmDUf+%nZ_uD*)Cu+#+!Xp!Pg0{p}pZvuE%$S9`U0sWrF=Ue#cP8p2mKsDyY`gT4D(c?AR^km8~p zcG)wMt+fuj^u}$P*omJ##?N3^KdFhmT#R9@-)OQbmY4NmsezXUH#qp**@WRkG<`3`*SD~lG>lxtlWeb-t-|Nrzigb_9?ee?a z`FUv`--r<-ei{^o*&g3zmwEicJ(u@HNAn{+#md+Zh_-OMp!j1t}B0$hr&M^q4#R9uoorF&c+d31JCDx!-4k&#k>R0L8H_}oXpmF!55A0Ab7 z#X(ld11NCNnFqQ~^6KFbV?Gpu+<}B*%qP4;`$RNhOX6l|QaD{5$pmS?Vw&r93pj@(KYgg^Z!H z)BrORnWfW-tTHa90E?T561mxd9=wu~^>H*v|B3RdIIzj&0M%K6QYmYJe@G%*=M0lx?;0k0? zNYALv5E`prF_k4oS%Zs*`z2y*$|J$5t7NFI3yD&{JTqk+Mmk^wcN5ma6^5~ystw4N z3>F}zQ8Q7M8(g|Wy-GwN zBf*q$sFIBgqd>)t1QjEhl6oZ_)DQ7T2tF8QD-(&$3Pnl%PKuFMC6GunRF$XItYdXIB5=9Vj{^#J`!Li1JRi#aLAa^VzCMd@`za_c$PzY zWy}+FB-KlNP-xSu$jD$4lW^E!q?Ds%iwmpoev&aDC?rbvWl4evNJ{8L5XLc($};Cr z=O7Rw4j7YgNttf)NDPah9up@h{+_>dS?bb0771;i7qG>1qD zMr!Pbtvf-n)UBi^Tx?^IIz5Rn$21kmA`*^+Lr=kBIKzmVH3La-83F>4o9L}XONl~( zP-l6HNsbZbQ-aj6q3kRj!dX%gfjZclBq!2DL!PG)rPk!JSi1pGWl7RG6e&{2j8;!( z_OLq`9Jg#OP1dO<5)pus)n++3Z15 z9>Zjxq;7?OX)-Iw{!M+1_~~FO*k$&2(=^p)W)qTTdDwFpj}#s)z_B>^Vg8e*0GdJh zUjCyCk<$E|-~q7{h9X259t(V>B0jS0Q4X*!hN-M)@+vna6M&R~lxz}0UNLVR2I00` zLU^WveQb-2htkK)AW;WF&2n#7B84q-VvqAnx5zZ}kgAB>EHMU_TTMbtghjH#AAg9N zOy`dj#uBK`RSFDTBAI}}W3DSCX;4dG!rO-nDNX1EM3DHQDhaaxV^}xJxS$?FSxNjP zT_Uk`kdHJzq#mMTumwXalaK0_5Oid(Btg;E*VElNOoS@B+#UiGlzNNX1GxV0?8!2Ia$D3Vv#<8tk;8RiGegh zEgiC+z)A8X1|&)Y!Dzm+@sM8PS1T(DqqXK?1iMBAicW?>Dm7s&fMhcbvk^$PBUva> z1hGBsULA;hBI{C-+bb>ino}^}#hnXkM`f;w*Pe_SUO-1>~U_vmGV6wthbPkd! zxyS+7;Ys6(T2i@9a>)lEyGfK5D^n^NN*r}MK-eNqawthg4h9r3x73F+>eRz5Wn>o< zNf88xK5kJ{tl6)KjSm?da~_i8FloSunz_g%6y#Y6k)oJ{;v&Z479bkqqRB@(*W+RFN^=5gs?hSYwO(KXLjMUkfimxb<8w{{S0LH)sN(xFMB{4CO zWXcZ862>nP z@wipIAY;lj>PU*0q~hR?ri8OP36_gDz~e{KK+(8lF?3-==`3MfkIN)U@JL!r#W*2z z(6j;=pE;aFL)J<QCzq{Difc?gK)rfMVvNDq4yVKz4agpto!j4^Uzp!d^J+z!-(Tqe+&_g#1)#4Y;1ZZ|GBQPW zPOix7kN+9q^@%imAuS^_OXTGC6aDiGgcn~x69SY37Xatt%c6k$e4=n*ktjK75V3$G z3*WiS!?)$|Kc@s(1{M{IlLieIVo+9Y)*#=YtdsD`&CB)qGO0EwGndXegS>!w2l;Zd z2Wh#!+${PG$_6H@B=bM$_Qc9c`Tew>G80hv(iy%DBaexdm*UT?37}9{fSs4_tTZct zD=vnR01_iBC=eq_K?z)3A_&s~z-V0XPwHZXq`MUAcH%_xOa_)g!WA8g5>0lH5Q4K7 z#YoyoAMmCQP)Y-s&SVsV{M~sesf+tfyjC2PmB53@Mk6(X%+k$PkRGyMqOCK$G3lff zDX)jXIGti;yDc%Y!2UzA*)#-AY8%Cg$&~JHa#R(*tD}e62@EDx5>*LwRO#VI4+;tR z7wEc&G^xZBu`Ma%{|ms+_N|_?#*I7Y7@P?xe7h`Q(w#N#9Q>KJ8D6h9VA1+Z{Z_^6 zEd`3`7)?c=&nM9&j~EH-4bVR>5rpYVeG=^tfR1rQCqFosLO-2I9>YyK(xm86WDRuk z;UCkn7R9LOfG-`VbR^Q5jN}06JIAz`q_8bk9GGzizJ*6b%3euDXOJnF4~_wVFqN_s zaT+RJaYewSBgag6Jp{(-6hDPs6|D>W2VLnnM8tyGTG51o40KG^Lxf2~*U31ppwncs zais0AQ%O2WcwBMJ6!$}lOOzC^#p&X(WTk(BPO-B?d`c$oUx&rzO`iO(bDt205I%oi zc8+&&znsj$-keNYaOB`hNeGaBIoUbd;LLvg@wN}(g(&e4%+1MSd@=2!dE99tF9)=^ z5ylcFKd)q9er|DZDJ=di*JFMAmEfr(6@gR)QV~c+AQgdB1X2-5MIaS{R0L8HNJStO zfm8%i5lBTK6@gR)QV~c+AQgdB1X2-5MIaS{R0L8HNJStOfm8%i5lBTK6@gR)QV~c+ zAQgdB1X2-5MIaS{R0L8HNJStOfm8%i5lBTK6@gR)QV~c+AQgdB1X2-5MIaS{R0L8H zNJStOfm8%i5lBTK6@gR)QV~c+AQgdB1X2-5MIaS{R0L8HNJStOfxeGG^krYP@#N^L z!st7`=n#KY_eY2NqZj(4ll;-C{^)o8(X0H?NBz-efAm>@R0#Uh2SoocAevtoJ)uEDWQqwes2@jwBU zqhiR|yrQ(Rfg=@nc$>;{x?E*}uC%fN2V)11bOlCw46isCduEdHjqE=FWVrm%y~PLd zsV;hUUem{C`Hf$cRIK+dX!^Lqf5hnY9UK!K?(Z<3E`}3Fy+D?a9v&U$kKSEU9lgJ# zCe)R;!+76U^x+#dp*Nbic%)*ccEp%mbg=gO#`Y3ph-iI!U`bbL%a2QZCB_E-OLGc~ zvSev(=}(BPes9HQ@2VlLk?Eb|1`louxV}Fr{GhjD zi+5Ea!v+ih?6L_fMvmyLyk~&%tRF_yjsn*`1L{ZJGhk%yjX1-in?^n84R7`WyQ=kB zf6<;f028&ufO-W}&nIdrA-u&4tfUqK#YKx2P0Ap*VH#*AW$esmm&2Ca`0-Om!clBrDa!lU9{a-;_Ir|j??+AlLmH;E6eYi+IsQ8 zuJL6Tbe+@c9uhMO(v5d~U@sNMh5n2zblRGbaeqm{hhx8vuGzF(%MzVac4cG%`upO7 ze=roCs4GzRkFG0sKu}uIlh6wdrQ0D4FYWd1E$RAtnbwt8me&;sxO~PJ()Z2|6}>yQ z6atOAOQ5320O{U$j2{$EoODs(8|PJ?JHA5b2MR{JLaqYQ(YaZ7X`}Oi9yk7+OD=|E zpbn;M0DR-TiGhFwbXKKn$X0tp!8F30eaXd>6egIV8M-*Vz$g``=gR0zxd8U2$ zrco<3V@J`1iZxo(pMO?7=gk9M+XIv5bQ!HxSzWQRle${V26nZzKAhFH1L6ErSx&`D zt?A4PZX}A>njicGdZur z6lFu#rcsNFCsf>8d{0x^prYq1>WaG#1l$LU20oK9zo6?6XN;;VK3MelfWTwzdR_5o zv7cnMW`QPK0g5`0KzYS7Ej(G9O)|3r>0<>_u4~k-#Ro^-QoMiHA7bshpV5UoxK1<1 z3D?{1+&K>gJ~1YUKkV8c6NXEOvsRzC%uR2t727vx;`Dg3E<&>IN6Fe~&NZ&drX2lX zv9Y%pSDesERl=2}-xn8scx03DUh%;r&mSE-|M{*=ls7%!g%rR0vLP8z^m5mmdD{YR zm_#-l92|I$`cU}1hi_Z6;o)_gS2qOmM7w^67oK8upwc)-@R1HJM_`ugi0vN6Npe>V z=^TBgq-*3$YfHN-o?Bar;@+-`oyO@U8Dh`KN!h-lPDL=M5Cq8d|Gm4zm{+nZrXSTZ zGDZi=3qC<V^0af#o|>0;^jpI!=6@;gXwW?J zfM!V2r9=vtiooY20>e&TEUrEID?_msAK8XfUL9$ja{&@Sz2K?Y4CKs zl=h_)ls2BF6@7ui7l1T4T+mbK1QM#v0OHs&o4}HO_5~8*?Ir>-JMRQUoW~+Ie?iX{ zT9NosaHeJq@vgh=w!5BaxFfLst~G(XHa7%TH{EsnZyJPgiWg0V7DETLhjx81=D z(CRz6mGMh2@Mo_qUm<2$t$Ts=IiU9wTAHcm(?I3f7oS}@>7sMSPYsj@UKfOQnb?>2 zB^<9X)@@?neIw!M5V~7v*(UbWz@-~jH(-rJLV?J!5bfpxgiC1sEX0KkG?4`Y!-tOz zTqu$KE#yT_Pc&>sAP9MpL>5@cDeG?A@O!Wla*EWKWg_EFz<%hh zQhW+y;)hh4e>|jSA`@c+J;nCWjBB`U>$=+;9)`c`Ar-hJ)*|#U2e>4WLj)zC-!}{BrHvgWMTtd&JREz{-yzRw!+#J%= zpKDjZ&7v5|HX04-rDhkG7^9z8&r0BXJEUI>J_%HOpD>?n35g-T>;%3*slFb35~%pT zR7(0}OGpg(jHgTEd1KFok=ALYltK1f6lq;3OH(4PcgfQEk=6@Oj*c$XhqcK>qrKvp z6}ryII$8f>8#2Qz2unb}?T(|ez1(q+BfSVXE;Eq5u=lF}iCzTswf?_5tpBOcx&BQK z``?TDUiJs-Tu>iX@I_7|Ma51&)Yx07X$j*|Mwi$@AUlt zl*9f%=&=4?)c1M+ciMla?|+@X|M`=Q*#9#f*58ZzJ|BP6doiG|`=8VLZ*bUur}uwebJ%~U*MHw}*#9Pn z^*i1E?>p?j)B1nwu>VfC|5Fb8-;4S_pMQVZivfK-|2lpD>-7BVwEn9dZvWdI*8krQ z>wnQ<{SP~=zsh0#pE|7n6NmM`>ahOT9M9GG!-+#?>*#FlZ)_8|=i~piUJU5#`1hi|&;55g|2W!67?*C5DztbJ|e~rWXS30c!R}SlUy8U}`zt8jk_j@s*ugCv#hxI$1f1K9u z^!|g>>;J!g&imh{&$<7-xZmgb*SKdfz4mHtjXqce@2JtAXz8q4TT@K0y$Y|b2?5a& zzN3a-WR`!m?rPJv;B{DOZQ4z^1lsuJSbD-GC~F~kDV3L@ZQ75(a0G`u`#eGQqpp~iUl>hK2GwV?)= z_VD_en$S1>hL{~aZe2{ zTCp$=())&nUL$Mp6&QVJTRT3WFQ>P>4K`o$MeoUhfsBEHvOq6|};n}CTWAu z+htV zBLnf~q21CpkKHzoOZ6Uir1g8#*~;`t>++v*DI?PQ>GjcfuhDC^wd*3@Sk(GlE!T$7 zON`imez6f6Gq|xvU)a=HwXvqyYT;S>A``-$fEv#(lLUk)y5FubN*eUsHV6rCL{Hkt zJt;)E&~>_Ibx6E*ZoOAwsloHmMtNi)QAXFyFrHo(4{NfR&G2B_h4wa3jVHqGhIq&72mFUTb6_ z0z$skRSsBc(n#y1=`rbC^_~)HUgL^I#?G6K*QOh58~z>d5j-QSu3P#^76bBoTRn9l zZDl*M4;;kX#pp$1Fwg|N?dEr5QKJ{EzB>_ij;8gXVoJh;qnKV~ysfkXU$)LfJmWeZU#0U;YK;nMXU=3$ zMxDg z`w=f!q-8mLqwyM}E=!4l=PS-riL(Gvx1I{0j+3U#)#Tkv8a9)!=C-o6Jq9f*NApaA zY)QS)vW(}G?tpF+7MuFlOty6BGgB?gOjC0xQz3!g zb~U;XB`wVGv_xq+=@(c$0boRY9Nm_mN129RB&h4?Hp~euC6^%TGn(1~ClThHS&j-} zLrJj;sg`Y}peZG8PF7r+*Ayri-dg#K;jPc$bN=M~bWu~Y$&K5=K!z)MTXj%e2p;63YD&r+8yCbepj(Gh-<=fTOdt>wn!3>Y(8|9F?S0`fk7QQMBoC%d!; zy2x7aIc*hc!Iu~pdQMx7T1eK4OvAVH?2hG-PXt?FaT3FLevs>(j&KWWPMc$yvYi1R z&en^BX1(6^mw`V$6Q~vhvtH{u_vx4Z{&Wq)tk<~)h%Ue|>ou-6nAe;G1A*#aDmv?x ztbstyT!LXub_E>cIhSS*G)SHZJ}uWMXC7mXf>#44Tbn%1&OAGZUb&ptO=y+~{!t3O zD4EbCE1f^Gw9qd}TK{g+GDUEQly>O}O54HGX0kMTA-COOtY2HDwC|muv{sh(6icJ` zQ`@CsW&CF;?Wz-$_GgxsH zw3YJh+T7kC*eO*cU6Uqhnw_lTNmfB`5VusMqvAoX=ercX1ETvPzU!phCA!1b3QnPQ zGZx9+Z`E@tFVT&WnVHMSkIK`g+<>Im<1R|dvJq#NSB@$l2l`(zz3j;tmCs4f=AB^h zo@38`bA$cv!?;18*+c{5)#l&}d;^WNXpP_(nB%P*^j~cwnw8svdwS69VVc}|*b^a| z7h8gRd(iA1K{DhejpA3m=cY)@ujkRu%0ik0 zxI}v_Xd{Tl!g*tj@xVM|^StEwl`?+PG={gWBcqnfn_MJn+dc^kRRO_;?ys#)l<2Rn zHv983N*k1LDEC_p^onet`V(xRS2zS;t5yQ86v0<(NC9#%CX#(M`o0(WHlF&oH3RHp zriIn|QNg$UN7Y-5<((#p!o4g+yj%-a|Ha za%lgDf1xC<;mx>)H<|GiYGk=N_9_GBvTKq}Hgk*@C4B2;o1@+4EPf(eDY0mVSBSx4 zSX)tAZ_hz`!_%*-B>Nn z!R*?wyB4%KYvr!uU~Vlqc=+NTu4+CyYA~-Bi7=R78_mAa#HB@A=FZn|VcZ9VGum#l zq1};|)${f18NIz5YkH(*%Y4!dv6H*uJdu_c=3`41`U%Z>BvCQ$x)03PH!%9FZrquX zmh2n#PZ+n4aGY2&YpuT8S>>t43&ZnjWoGG#$*-Li_SA+DAY6D0qUuH&uy7{8nG~B4 zg4Geut;Lu+bmn~8azdboh@e)h@4#;=xN3Q$S>J)*TA=biq?mJGj>FG=-hx9I?bPyG z^t~H7*`cv;SO(*_5~MU*fhNO2x?RebZz3rpx>F80jugU4Dbg{G9h(EU+d8YV5hE@v*MM{z$EUsw?xESwAJ2nl+C3%9Oe$d1-pcD zQ;=4zOocpg@&XD2E&oA9KL{iD5^0~%r>L-{cmY$Np%t~HmZKu>0_!aNkxj| z8fnilzS6{klA1Fczrw@wVsObq)r!j&aynYJ(AJrjETrfL>lfmw2=B$zFVwIkpa%^o z-9jaP2*TA3Ruw((J$jHrdn7TUyx!t@&ralHxmY6*QT3ir5EF*rR~87;E;B7Zs%bfs zF^B^TESC>vAR0elryk5e>y=D|C`o~lNXzvML0^-QeUX+rh9D|23dA7%lmI>OJ9<>L z;?zZWcF|cibrE}h$)fNji?9py=)xEtd$fnAE>aIg=uyaJi)f@?zQ}lfVfeB|?cvLT zH1~WcY*mYTfI|fT?jnx#cNf_rUA0IhQViD~2ztbG`Jxb1;nEI^usIZ8IFcJ~xUjFu zgWpHc#8K6Hq+(HLQ{1%(GfrBaoN>BiIP<2}QJc^A#aC$Qb@~nw z%%}^e*M)-Vbsgc1I+|@_i^6GjjwD zb|z>G-%8q~LrUA%Zq={Cufy21WyQ5wUMg+-deK&Ot8ueZTt)6$Zr;g?r8uQ{%dPsp zM8(-kF=Ae5HrLscCtq^;_-_ZMUNR+c$;9!h2dFlWZmuIGKaz}4>wkewI3u_ zuSl$3X;slGr^{~(ERGQ$x*|X3U5t4po_&G%iB$#5Pi-vrhvF@@2?+kZ9+_T$Zz9n7 zC#t&^x|#pZ662x8;qNTr?Ejr5ApofMYO`&0<9;4wdy|l@+-4)okzY*6lNULm==ri% zATO8?XFF0D;li-Zo_S8l_2b}k zN?t{|#LAfbUP6R`AotUj8C#Zy)0Tx$!bRIj{Ve{y4|bum>Z7)zjO{)!g;&aK$KG9Tn{wY?j(P0BayjL8 z$H-?5=zYs|d=28m<>9|Cw@<&}!^_b!%R9m!E+?mlCl{~L6BAnb_mF-TAx!BX9aH*8 zEPe6v@Byeh0Ck5L@ZK_*6M~x^;rAHu`m*@ilAmCh?M?w3fS+cfdHz{phz$H#lSkzh zZuj~czZp?a|vtaZ}(Vz+;$fvL~a`|3GfqZyb0i4 zA-|Xs^smrw$Je;LD|p}+t_T;dz_PKkJ{I<`=&UMS0pYEm)W`J4B@yR0nF%RUw0!g6 z1GM^bih7C{X&JdfeWN2-(7@jvC}>DrWqNypd6nsJ;GXAiu=PA|LwuFl1A$ehxuNW) zCw+IWz^EpYKi2?(gz@26%-p%jGQ)c_raf0)Y%qzifB5-{sHF?=OB(m_NWLT!o$z zuV;YImn~ere6K&-E7Cnax6AKx=jWw)d?QAT_-RlSW_x^>UFPu%_cV{sFT5V;^k;wb zn+5$ygwN+G5$V%B{XO2yY;?x|wAXfdXzUX`E@eVr?ec~NlXzMXqVSdllTMcWduJ*+ zMCQNorX>q*TqTyh9MFYl*@A{eARIRA$3pDgZPM*L?y*~#bTh|@F-mlg3vemA9#KI| zQgKNVmF{tQl92j2XwIvvAkPIeHLVxXQV6MdjQ|F}G4)&3ffU6DxtZ z2p>X#LWs%=oaqnOO7R3f_;=2wIL)Dt5Ocp=QCU&JaGWHb>P%17ic9gS5EUfIKIY?P zSbyS2CLdpoADNk_&>`WOrXZ>gv>lmohOYu;lFjfR_pr!Pg;WIo*F@llpZS>bnK_BE zM@C8kQV~c+;By}VSF$5Let1;T6$e=*mn+@mPD@Wy#q@MVN?0akGP4wi$&$+j4WPh5 zXDTo#-NQhaD~(_hlrDjijzLf>febTcQ3dR{z$gezgANY_ksKFFJ#?^MCY3lQRQ|Zq z@bB0MWU0f9l=9F7%PR!16f%a&QUlCPWR^}RvdXxa0xWJKO5|n-dhkj{*2mEx{U^$+ z;=m@815{@PO0m3z7PRmnM6tyQVPR}l(1l9oIDXbV3Jby2CfiHQG!o$GK?vifq=}bD2a~( zc>)JGtb@o=!N+9e65*vnf-8_oAw8ouLujmi#Z;CUWeqMK?w5$MDUSrJu9Bg;E+k6* z^30TR80ml!+)Y>uR~W`-sx}~7GFX6=M$JT3ZgA-i^(rNS*yH2xSaDOl#KuOUAUlv% zmv9JU8j@;1*c>|mWrl&8jG^p7j0980p-MI~i~$+2O6rw#P(Q>UA^2dJtxO~~ zD-5)H6)Baf#TIKg2{vWYU#j>L3^n;G{WZiHRf|`AC47 z3`A#|z#(Hsi^VD=$RlQz;8_mol`&7ykyJ17L7`2rA|r!IOu}J@ky4J5EiSCS`$@)t zppYotmn8`zASs~}K^VtCD$AThor6G#IABb|C1twFBQY$3dQ6-c6@+8Xc zCzDgR;X`6n(dD7T6cA6a(i|cs7^$%zw(bPQQn!+xaIuX+>hvVS9Me=Ji%2*Q4m|~j z;S3{c)(j-UWe5mFZlbpmEhP#CLY?I)COJl!PYF`PhO)DC2xmz}1nOXGlAK5r4SAkI zlv{F*~9K&c*G(SWGO`nc6Vnqqmuw94r!5+Cp&0@APN=$ z34ByJChW7>hq?De57n>iCUL)_2DL&FFA$9L8!^P0WJ$s-&6Jd7KxEqy!sJQFvE18S zm>Zc|5u-m*H)WYb!1{2OWwQrKc?^?%lDZZCrOB)y`#1G5;-`bDV3*n7P197HnN3KV zW>Kcr5UhiulN~M>)W{7^bqG z$*bIyOaM{_QnE=1dBwbO7=+t$3E`Ov_OUH89!eiGgG3z!HOswSi4?ZTi9OCQ-6GS> zL#iTjv&0x!ZZ!!p5f;e`fBYe8GMztC7)zi!S1B-XiDUu>kGZapq(Lo#32z@Rq%@%u z5JBRHswBw%k73;?Gbcw{$K|a#>ka~!U!4?dyOg^exLeP=Dk_1ItUr%@A zFcGTga(f6&Q0gsimpe_-FtMqN@Ekm*BNIpiHwoM0a)DfSKCC!B++ztrw%cVer<++g z2qcs6=41hDiADMVvR)6OB?i(2wRFgO0w>9n7?3Cp1f%)N#zT6EU#+YtjMkcm5$qZf zC^{JisnmqA0Fuo#%tj#Dj%1-k5ybic1kb5X2Ju>k=;R;M(+TESd6Jq{9%i02>&LlL zKOrSbH5KI_g9*V%g2@V3(K$$_?ToKtW2q7C~?&30AY(b z$)O|}IT%pD+)^LPs8bKKl#yLbBt;M$`nW|+v1Y#_Ha=u<%y~$T!=wQtYUU!7P>^RO zM2cb(ii=Dul8UOtM~=`zb-J)^s-h5p5sFUa7i`C{AqYdI1g_!)D=3yGPSUX)iV{%d zHxXMDYydSILy3Y4{K1K?$|XXXyi~LfGgel7>{FiwqypROrnCG@E>BuwiI)Yk1(}1A zjXFqPIwvHiK&s}&p(_yv9Hk2C1Js&n$XhPzhwv9LQQ)7Tb$}VdP{o-JnvEz9)SKnix;Nl$G>IT~Fj8k@ zD!!sbZZNk!ekRX6bkOFcS zu;L&K6sY9EqIC&`(jN-^PtMY;g-&Fd={;oNkLoOq;8dZr`lC9-xGqm7jB0YYR5ZjGEFUN*KRH#N$@+f{ZECs3R#}l8S>nni9_HBv>xq0FNI@14ZMK z#n6QfrL%-_JuZ_Z!6Rug72|}=LDLFgeCBWx4OuJcaHi%b0A2ZyH3QE;lMd@`<{==G zo2rozkjLer$}pG&peYYmLP#K)r7)z9fovZH5n=pbI-C+?G$4Cmc5Z)veqnw;&8rn@ zet)6=bN>_~6@b2qfJ4Dtfz9puZ+9;D^^axlplFa|0+Y>7*<@eKi%1l7vOK12t zj65b*UWz}nCV)a+0d`)xv(l^puDBRN0!WOkpg@cy1toBCi6Be|0HbliKdFlmlI~Kd z+ldp&GZ|P030HI|N;KI)LI}=U6eDRTeZZSKKq(DiI+IZd@^|N@q%Q6^@mg_ERss(q z8;#TmGD|mGL3+r3iMG!0#-x){q`V#i<8+FZ?Y6|o0{aieX44QfscjS|CR4h*$x&7K zu8tmNCoq^)NmM1!QKg3;Jt!pLU!dzA(xehk#I~f2|1SVP+qZho8aM8oV{j&*@a?jI zNq5$`bMR-@W_Z2cfJN&s^;;FMw-hL%V>A_gKA%LBJYpoQH$eZmL=dJc^+~ip06NAI zo&4Zj3jK5t{NRy&Nku}iChks1RS`?$A1HN>e(ve7KGLi$N?;O)&lESuFabU(7 z_!b@!DSIUqok6BxJ~##d!c@vm#A&E>#T5aQjvO=P^$-}RQ~VTmRkSYfA9SVT5D^Pz zYef?VGSD$u4-qB}T_@wXf=-jk#*wzeP9^Ci;c>+=Q``?JE>Tjv7N?8Dl9m1iI>pWo z@hO?Se;pQ=H+k~E&V520Liqf7**V_9{ctW2GKlRq7$-7;8-6q z{UbKkm1R6upH;i(-U%;VS#MlWAHA|(yH{(QSC(s>yTUN)PZ~Si8{6dFt>p+~@`@Y& zIC9rX-g%D%-j8j1ysT(jng7D-i~?PVwy%9*q^r0s)aETX9P6kCq)R)!e@0f@nI`y1 ztZB!D;(||O^EPI6w9R|^+!gXXw<+Mgp{ezZ#yx3)?918)wGAHl{USGXbxzG`%sNng z+Vpv+O$)`wU9_ol%JgZcpISD2YuUg#83k?nz_tNx{>~{Q(~9%@6&&c8_J3l~rw?2? zGOZSXBmd|7vB{UmF8=PRv3Yk)tG;u3Y~Ge>)eqycaa#3#(_?M(TFzY&oA(Gz-F|AU zJ)G6p@uLxsfA~1hFg?$odm%{MR7;WSJD+I z`#5HV8jRB$jGG$}my)i$9bJJP?MHmF-u~jQgZsO}0gti2zGz_AX(*JeDC*xeJdoZw zr6{ATyyc9>;`SH!7yS{g1@pmQUX~7Q=AKhWY1tQzzc;+_W!K`I-sE8Z}rxpF9de7w3-P4Qyv8ip$z_v3+x(9xB;29H) zNPbP%!I&|6<>~ItMeaEt9+*v)z4y$Hg?)|R3l$2CoDNyOG{j}&TkhRQI<$iR=uZcm zs>{;;*l$$7#t!Wa>de)n@)~a#)xU9nj0R>!zs91hioC`mcSZlk=|jcXwCKI{^Y#?8 zJ;9k;jMP(`4;8V_s)3Eh2MwK52R7D>*5pQ zup0H}J}ksH@hLp_yo&=DjK4f@{Fw3M&bxR-VCtBu7oR=l;=I84DN`m*$%_W-ql4-{ z)sHkALmt*|(?+{=u`}4wtP5}O4>$*cQJnV%I~np;vv%~%-Ql;IM+=-n!MB=seYJDS z$JaD!ts?w~=3;HNm=(G%I&+n_L)Hb=wLinD54=pnOxKfi`-wR#ZVccCmqF4f@QUV75+H8EV*=X5hJoKRPKX)5nzMDk7 z+^nUE-A2<|H%fBehESKG_yLLs}^=9RgsSMD@=l4GC_t} zt>dbNU7Uzrm5BW{RY}_IiDa7+$sRJvEHj=qA(o=o6D534T}2S;co-+&O51JBtkrD zzCZfzuL(H8LhnjM*EiY+SmUpeyn=1b(F4CG@omleBdn^)G{K7QUK4WEEDUKmx@dQQV zysb2$-hp`*C}W%eaVQjg zL*}mgemkQ7&>WaXu1h!b_5RJ|q3j~XztfAj${mGz5tvn?UiaHD?DC6Zn8%s>*QPW* zNIcp-u5d?l@#yVT=tN-#IRKU+mMh8u{ix`ydaD`nQs(PJ0BBbLGCD!=HNS)6kg4^D zzcVI?_y~sz44A{N|KNam=6BS_ek*qeUu)J1NxR zyP9qDMDY1$AQ-;8SqsFeFc;O|9R{bGNbdNr=>Pmaah~&v;Qr?DYiRM^6tXgR^eeyD z)2ZEq?>C3vH#>E{?h%;UsAb=1h7iJ}ao5h*j~)d~;uXfNFzG#b(i1SuNj#Q*W8DhO zg*@v``hE0?WTx~(cePBh+abZ0Oju~zf!VK{?WP?PWAb2{?CCgM?#3(~??=G^hM5uM zP!NHZYltrg(n4QWWonkrs=rcj1BDns$e9T(5Up4vGXk|!K85E{)td1B=5n)L+M0{e zX`)59TLgjr9Iyn0mpNA*o0AEWar(GP1{_mmAxnOHO;4SS2^^dAB<2j>){~Pl%o$4R z<`CxmP7+SW9EbA@>`jsY1zF^yx53ZkI!l>gXA+&G7<2F#tOSe~r%P$ptzUHywlTYoY07&0>_wu81j2HG4X%!4vve))DS zY>jk`8R|HVCX72E$$!2%y3Pb53t**-#z6lww1)QZ^E8HeEwF^v0@;e;&D)6vIlwDv zTsE2vNkarfr8l0n`cQ!mimr`2XUYzNwS<-y1=dm^Y*>UJUhn|_(po8u)~atc8{gWX z(qw1VYt6J+mua%IYCqRxn(VB4gKIKPQl2MDnIUpXmO;VyG zDw!r}WTF-`etDOfLfLmK(IT_q{%SuZQnD7)0~YeS?j|FP)x^_TMN^gN0p)qizIyr_ zMTT4`HltUuj-(=J-&|**WaPf7FeVs5)C*Lgda>k%q?Vjzx8&M&910oebnZtgw6Wt( zR`Ht?nsm^XWdgV3Dj0}D@SSG;XM&~(z510c)*2r~e}41h2L zAj|*=GXNs`C<#OWNFY{K@c;--1wd#j076p%5M}^`82~|kQvkR?cg>t3j_W#&15C77 zsbt`W7OM-HPOYw~i7XZwpgxKfj9jHvv^USj(z4$NXYr&F5?U#U3*3y7~I-Epw(Kd42wJNm`nMz=N65U`pMjbp3GK`R?q z7yCwMhF$xRv)`bcjRrD)M`@eN$oV`I6qv$}9>su&9=MB;SqhnFB6+lsJlC=0ouyd% ztHr7uU@_uJKNe5GQlrdHqd^%e0sNe{5u+Kn~ilEV~jl!rlFvCTghspaC%=|`k$Ogd82I$fS=1z+U zoewZi0<4{3840k149iS_VWt6ZRs!rrT56g7f>z~nC6V;T$$kgDyP0lE)#h4s(!F{< zk7T(hfAyZ|Gxte|x*uq7)~9opfbR#JbwmCG&j$~1iREk5!kedP- zM&td_(>GEIk)h2n{$>JXDs~&AAE3xfdN<-s3&>OCD)BoTDRQ_0x^^Q$ndZ>78}(Co zS&0>hgw!(G{^scFjT8a3#9X}*jX`%92`iOuL6K?;t)M*1C3r!D-tHrXMH16W#)=Eg z23B1s_)40+J0 z`$bi;KPrOb@wFC8ido*AD|)$1LHm*8 zD6{Y-vj7z3owEof3qWx}pKNY=YeREs8~JqJku`U%wKHkiIYQySLAY4=?a+Z@_XvSh zIE~mZA`<)3^@U9_`xJ^93$yRH()b47zghoQ8YVGn<+qykx83c8#5lo%9SN=kTgymy z9rPH_+8F-Q=GcfV`A}^~d=BS_YM3(H)e}5S<-9{aYjgC`&1y+3mrwEupN*~qj{>Pv zhptP$p1z(Uz@n{(c>CGW=7w+C&udkqT3_Xe$E(jw!#LK*+tM0i1=61k9TEFpq zIL#6~e#jn}XeaUsa${mYqK08~~qs0D~dM5AIyj7q3Vs;(V7-ceL2N=bxyC%{#l zh<-;*Q$*lYT8J7t-XXLpg0Li!wV5iURzWyxQ^#P?k=F^zse43y73}Z`l}DrlJGxzN8$p<=DlqlFK*mG8w=9t z%(>QCH2uI{jMfUK(__ZfI}YKm>aj zQZkuL^rEh<8``$LyrILkNXXD|SE?x3z&Ty~)uveFMFty`!7nu(4w+ zy>+8w3sPA`ccN^zw(q6W>FIPyMMWW9dQ-t-hMo>!OmwBAqie&~KsN>be0s~qjt#AW z(m)j~EWKIMLDt|HJLl7TTf4g*TgFu9{IF&lLMqh{nXs_eXqxE7z;MU5E{T&=ocx-a z{DQ^w;IV`9456jv*184$nDzRwRe2GN@*&)Tids`(p%a)0JftIT4qP<7J6&z%Z{#1TN$Ei z?&W_lS_a#%3v@PiWNZb0Y^66kx;M49F}7eCXrjRKd4XktCErqFDYg_@3N6OaK$W1TXOaK$W1TXOaK$W z1TXOaK$W1TX zOaK$W1TXOaK$W1TXOaK$W1TXOaK$W1TXOaK$W1TXOaK$W1TXOaK$W1TXOaK$W1TXOaK$W1TXNcc(;Czl znKGUC=t+Ah_hbr0dAy1;ox{JtKJ~zpDISI(=DLJG7Wh058XjO&#M}!Nt|g*{AR4{>=(>&yxzn0I=-6>w(Y*5Ac9 zaruPMOE)|EDh$nryH|mh3u)Q=G)|5se4cWHl8B7-`WN^Ym>V4X*Esr$QE?3OjEU+P z-sfp>(3&+4Z6pE4N?`qL)f_5ismmEc|Vjsp*;l}ST!(>!kS1(G`{I-@l z=5ZP0Ojn>hZ0)tj4f)dS&0gL%Tw9N<`N~J?}0TcJZ z#V5R;g31PDT@@(uQWl|75gGs3oSJy=W`zABgW8i!Xs0t)8k}DLof#&a@NaP z45Q+XWr3o`@)(9YPaqSwmO3mnPNPDFXQz3YizXq;?yvrMYH)<0vab{AR7m}Q@^zvF zZ;DeIIY@%gX+_$2QA|e#=}VI63AvXunLceSlZ^55fc;71rPnuoS~3lN0JVmkW73bd z$mimWJ~6dV%;*!%eIk40*D0cHi2HSlf9d&PdLVrSk^cL5nM!znn()*V>g0F})~~<- zbzBHZCO?{{4B?)bokvSOMxx~OC{?HrmK8x;xH`LyN;@rePRZ?&9^i7J;Z7Nb^z_!5 zAXA1&eG@{$PNOoEibRS+olzOC6InV`t3Drw6ntwytWhc;C=H;O>Ig}3dmf4fm-m6M z_*~`4=TVnY605=2{9PpwMjDovfnjOYeN-bTdLhpbPzRF{bLz#Q!sQ}FcNg8dZ#_8c3*9|t# ztZkaP%D|Tu`s-1jZ+r*(VBb2!pxMkr?^~8YaE=t10_8xkhTQ4WvEac{7$3Yq&<6zN zNdy>hcP{WU3gWm|sTxRPqufr9OSn1J>27} zX?lHC;|>@wAhcywnveD6@KEt)b!RyGb z)gy?Z>so}wX!3-Ck>Fk~7%R6=h)V@HKrmP;ZgTlpaKhzaRK=L|naZ)?!#9ovn=kXu zEgO^0ysUf2<>2hg!AX~c-UVJL7fiMuC=Lo1migp~!^8VPAb^Z_Nu5U; z!7sZnIG(Ckn)aPN(mVup4&xpvk}fOd%exDuyY-9UqLSlOoD`?xq&O9~eo_58Yjop| zhKs*4ta+hf(eSeI%cf+@d&!pb$(E0jnZitcQ3_L?sdpzc zm6`fO$;@0<|A%DBD?$`@g=HkC^U4HX=Cx#qXFf|tx+N(n^%u#I8sLN^+Y`7~vi(b+ zN`?;Bsqt5p6^7n>m)759`qrdBYvM04FD4)L=$}gVS3_?scrMwOtUqVUBnBDcW3yh; z>9mBV3mqBYulidvIxRP6fK?%W^3jvT6^GD~OmL;yaN%Cc=7_*jtORv!81Dq99P31} z!jOD36i~IRsBlOD4vGe+i>5%!I)&|d!V|N(&Dla>ie$Sm1yZ|?!l=@??oeV%U~o8^ zMPyK6aHfwM$c7Z*>q13%7#ak_v@z=MblRhJ#8E>GeJ(64FbqLnkp9+SdV2;enqhX^ zoPE925EnzAheAkowZ|yz;R<_%!X695k<=6j#`%qew6RaF&L-d?3D zi!i9a?}2uBJ!Q>XeFF`~n1-24*34X{6%M9wjYan7<_$E^$^q?wh8n3e47~S%;XxSL zU@2p09@u9dX&%Y?eXnqTX-~8G60IE0?SHRiWVmkFaH8eiIx{biDh3!Q*+?Ne6?!ul zo!YRDjq<@A>fCT!SY}s4!woP4YX8rp{Z(v8V$3}HwC~QJ@u1-2d!=!&XUxXU<84T{ zO{HK#sfuM4iKwLNbE_SFSKf||s%Q!3g>D(?a|!pBIz7UBsZJi&TEac09v)Wz4&%3m z0aP(M+~?susj%^I37%A^3lu>6mg&&(ye`yjBm*Ad&ILXX^dzGiRBo9rJbWYEzPpfn zrm|UljP)IFJ}y4a{tb<Rxtrx?CfteXon;%u7HCz98{@uk&xl-HEC&yX=!QB zM3NXxly(rXDf8a>vjXHqz0JbGD2+j@{tossuxe@81-p(0$AQn%){NXzDJ_{`+2m?A z7NL>cSK$G_&e?6XmZ00=dEM;Hk!SsdyRFlQdtKfUnQOjoAFTwF=c$NcXt-R;EnU!( z#)CH8eAC-Ty&0W^Btj&NT8lT$f>vV=qaqBgu%H~Blpi9guLN!mtR;i{7Bs*L51Hf* zoJhg^B1T&$s9;z27wAvmc zjAV2Meg(q}X+GlZQ{br%_=hbt-EqK>ZfQ)<1#NKB$q?U|-Yk;9Tbh`WW66&aIyJ&{ z;)qg*W-@2GQVBB|d0MSS`^9iHJB~nv9h@-%`YJiBM)HV#2CeZN^-;5f=7gOYiaIJB1+|WTL%K!_JE!5KPK_4+IeE^IUR-fgd7-VeBEN7^ zd5KLpnJzHI5kop!G6gDN4?)G3N{yVo#0Mp_Cup?w4x>^oy*)<5SZCCD6?~yZYp;`E_tG@8!zfoVQ0?QnFyV z9j)wy0PjUb`5*%ot|z0D%JlX^P(cv&Z_+wh2!&P<3V*=|8UBJ0QZNxmhBKNCQJ{`w zuyXM9WW(HKg8RiEWYif#A*Nnb&}zBDQlex6Od@rNb5H}lUO7&NAtV#lJ=DAZQ@hXY zMfa4xGViUN;zgxJba{SRk*y%3EWf&@s4C`v782yrrq#2gM`$9`znK+N`<0oZ0p>Q* zWSk*3^|!L(jQ$2zG$YXmFkMNy(EAPg)w8G%4b76W**=5vLD&RZX1j^{>sYvn`t*3S z!%iE+(L~q`3E^R-!&oXBjEfLSB5~YsYX>8JU$xX9!@#l+-;2s=4w!1pnh`)x`U^= zk*FL~j3Mgp0?)&_Ke9e%%`8}u!!DB2PE?T-!vX@Y4?V#2pdH?osDMT)LSpE@kO|e^ zk_oH^GJ(}MnZW8;=2dlorMnrG_&{4GjJLCA8Q_UXLI_lbpbHIgAeu6()AEglvLQXF zBIp@9CB1|Y>KMd-V+q_UC@s=4*k^!Fr(p@ifF7i`{LNx{#bWu`VtLkL`PyQ6-r`G2 zh9_GF;{|vq7y&k3u~4Ug^;9u~MoWReS+vvy(M&5L{Ix}!l+p-^DT8!LRRoh}Nb#VH z;-9rpp-zfahPlA-9rRiC`5s98yv5^^wk8(MEZfJH5<5|0Cxp~|wE9L*t0vO&FT>pjIhHr5KVn)Cw3osXjVRGI$e^kuFkAgUvz?v1CwDy zcF^b1X{t>#E8@`PS@2l(z(cc?8K^w)&@d^f9-iwXy$Ge5{aTqpoj{puK#h(W)3G;c zkUb+vK(4f#G+JuJ=|Rt=V6L)#ZE+Z5k$t-v7A?{~aH8#RAXG_0nmXy>I$8TPm{9*; zjuvMWmu8`v3AQa>p>hIqCTI1&I^&I|^EqDOo-DzeH_q|aJNn>F)IbGohUak= zj4c;HTh+qhtUAMLF_l$DYt?>gl5lXg4)$EXusVCR>chNF3ufRwRj=pbu{x0EfIX-hwr~kG8=$vD`V0<>z06ChQp{R9HFzt^}k3zvY zZx%Eq^VJ+Lv|-cx#&~FrRX|y8ie~O`7TVp}6%J#aV95p$&6cN0{WGNf8%rzMX(5hT zo+D?%B|$BWMuJDwM_9w-=`+++=5#1*BBITDI?Hw@XSeY$RMZT0@Fv_I3KUR^ewBFI zcy0tzuC|=X8D0W8*q$a$&yaPH=f|JqP!W_MoITkSp?^mE{I?em&e^4q2b{Zhmbojwq^rq{>2Un$%ybzx~gP=me!_(`n(`>DF|Z% z9SuwOUZ_zIb+(20*spMz@R=-*{+IB{CsPfxQw zPdY9>Z8b9Upf3Wk2Jx=_AUn}=ss#jmFxpG~wE;C7H+>G21Dv?`0icwNdbiKYDjS8A z>?}nO4~>&ibwPI+t1Q&D6Q1xmlZ;k)Smm6{Y)|~S?&UT{{k?L#zjzG24utmWC|86FR$$7+R`tsIcs=d$qtW z3l?i=5P%kd$E?(Oqyr_-Mb$-$Yy|Vwr&lIGnL&aQgMIz8eR7lX353!p_xokcUAc+P zj{WM>{8R-MGL?XPG^N2n{~(|6V4(1O`W}|(@(B+?Uew>AsgNr{-q8GgMZST3@W7Y* zY%V;~56$N7HYnCEc-#ojIpwjIyK#>2R*r)XfuVeK4(#lh7KN}gM5*W$mPWuU{T^;# z2-FQK9(s(2KqqzXQP|#5;o$_@BmXxxEy~E~aAKk&CcNUF(4P@Znvo$w5(!m&m^OAI zp^a6>1y(pPv`EK)cAY$B+N|uHJi8^6&6+dYHrJXZV5m8W4UR_aIL*oTMD(+_Scswx?`yb7#->Srg}`&n=wWJonAHpUoYb ztDO5R#Ba~pnFBk1^z<5@b~9(^=?~6>)j}r~?Pb1~ZXVCG3;I9LvwVT%LVKR@{XFX= z;qkn&AL%K=k@re!DNoX3^z7S_a!VzDm>m*TdD3M<-XKhqha*IFp7bWF^HSYtMYIo| zyi^tXz#{Ciz7jKxQSdqgZdl_5N(ry);Z1{>3ZDjmXkq_5^Tdje+w+pR?emaehS4Av z^`Ezkh5brMVJ#7DY{6kxXf3!jd-T%4=sDr3JnAq6M9HFc8pJ0ZW}}h9!04~&2#4`R zKn)U5N6-VKx;*MU7#$55HPDf0PlasoB12C>0r&#Mo8mRVp$wB=l6ZQYpcKZ7DYOcn z`-9FtKIu~P=!ra0HAoHW#8NtzI)yGO>Puu!ehG(cd6{L19HnF4`m*!4ttne~f6 z=z&rnX04OO2`uFT&hSP+=KW|MEChr{^PJStq(%pw+2nEcddb`(^e)0v5(WTU3)J63 z6A(m?6V{+E@=&3$ei1B)`NTmgByEs;uLPEGxkbnfypQzs!uvqbgypZ+coAOV7-0hq zuR0>^Xm-sQ5q>^@I4nuSL$`uA8mtn`M^PhQ_$mwB1-&fnS$(zilM@D5B% zhbQ%f_Zoy_c|FcBIKVRnM*+DA8S*K^o6)xd2KD)c%|{LJp3I>B&LemikpEFgE$Q6X zAC`ZqnGjXRD3UFLA|9GJpNb@nfgmV>?8wCVGBtQnBHXaxC{tW?G>c%H#kKJ4@3|uj z=97073b_kVm7|1L=27QBss6bVLA?Mn%pzuxx1#9Yqh5F)bJWu##4Lbq{?|fGzPVYP zVTMNu;KXOi;v)1uPoafv8`J=9?JRuLz#sK`n&HiXIL8`|)QuN&>qMLJl!xyXUdr#O z7ej`^VP6VQG1>jFIaQzId+Xsb;<BO0|5)5S0F-|RLBOe3rhA%{np* zLcyJq6jgo72>wzr;e!DLwnFGN7-~DeU|HgfXsPE6we6h;tlEnoIp<|{C7%{f7zZ6Sy^$Vb04!HQt}J)dn;!*!djz%d`L zuf~U5fD5ttzI%=6`tSDlX>{F4ZD>K)-#wI!F2r*MmD2U;$@8V_lMT{^ShrBVK1$2i zwep2%D*YH8g4fkMk$_J*NcD6~RF08%Si;0e~ zbFA}to#D7ETCPp#sQ9~w4Ce!e|MQCh#%mr8rHw@}n2*4vbDuGEIFBFhG{F0IL-VN? zxVXHA<_K%777))!G7E=_JWlXX>Ek`18!L<8!5xe;*-jpAj}&{X=a7yZhOz(lBBz4~ z+ZUX$Ms!%Jiovaaa$tW6jJez3sY2fdHp*WpS_k#>i+z+zv>w`40zu)X;-lW<4UaBq zTEEOw?|$4}vfBNGyQ0zkTX$`f`ziM-x2i-{|KyTGxy6&=O96NGw1FuDlTjB$UD3Tn zp+e(Vr2oORMHk#K+qqr-HED~8@A)%GRB<9Aw`BDRt7TR31(kbvU=(I#is1fG+zG!# z_09RED_2oxDsL$)tL>zw-gsM4MJKndxaRhfPHt;4anrI+Zc8yiEa_ZUQc=4~6&w4Z z&+<{Rit8zMj4wuZUbvek+`bFW0a)%H^`J7ivsFCm+5NXH1O!`U1hEJ~-VkCSgqGy- zfMF}bFoL=TJwwI{*O#~l8V=+ZyB%nZ8c@R^6*my?9?(pI_u(M6 z=Rq^U#~W_>1CIKcC97vv$lW<^|K$B)`=j?K?@!f-a=2GeND`l88R=}4McU~!A zZY~AEB{N!<37+Ch2KX}DYN(A5+;W3dsXhIx7kT7TNK0nVN^Xqo&>ZI5$cH4OEE)-pF8Zduj% z7vjk3MF-w1Y04xB_;j)PxM8RHxY=unu!aomzTfam!-F2@_qi*P^2rdc2J- zwM|c~I-Zkryz$A}ruD0iJ5akz^OV}{UitIt&Smb*no=IQsmCk4S%M7Mqo66zbh^A_ zl`3B>SIYP~IGg0#dyMX7l5-zrmXuBmJ8Dp>+(!q9ghu!8PGC$`9c+O|^Usv{R&VfC)CalTZ_w&?Mkqs}L3QvkF>E-kp=dPvo*!$IWj&sw z9(U&5rO+U~aFoC=s=QCBBqQL_*~(I3=!PV-`a<)-sPM%N(8>eN*>n`MtQ4>&nAP7q zQ2x4#r={#yA6|=czbLiJ{m^H3MnK-yFxV*jlo9eDBOs!%iTA>Xd#c!xLy3!ZFw8v) zpLRT@@g(VBbb}xaZ|MBEbbdlQKPjEpqw_&RuQ@OtvY_xBQ+uF!f3fM>~yKO zyBi^XC5l^lPyP+nQwcYGAb549eW;%M`X5__D(XYcrh--*NO1XJeb!UIp~Sp;b44#K zQ_av!n^7y8H@jEWqcaS}aIR=@n|sR#F8sa+8ul;5GPlp^8u*aS9(YW)@EBNlTDH*a z{%x(>+>9C;&X1R%^Ai>5JTUs?k~IgV#876`_)u#1xGIGocyMvdfnP2L=#no)T;U5* z%$?8@|EwoOa3wcfZ(@Y67Gb)8Aq=KN_(oFxq6((0K3K_^;X9IE_}I~#sDH6EQNN?q z124~EB4iT2#ETtMHM!GfR{ zQiAGTMLtiD`rANG&802oUiqUsp{#7UCt?sb#jv2Z(vWN5doQ%}bE2|7P)5$HoDHk! zIWTF%L+rkC(prYr*A=7Sues`tEY{*{FVdd7}O)_fBoji@SMZXbJPD zivE|%l@qv^%6sAU>_1Au;vC3eHmp^8dSPKQu5Jv@XWTaJRnlZc5W}aUXfg=er4-FRSp6lOf*n&kMxDC+U4o76Na5L>&$4$s%kbW#a|3^ucwG*)cH9mBUB$4 zl&;7MaX=plqTM;nsLZb`sApiij>yfbNYooEPzCQTHO&eHP=1rkB{xIC2|yJZwuf)t zAsw$bs2)eh6Aul>5a{PV>o-$O@6O#+`?B*0n?KKcd2ZYO3zau) z$XWZFpI5iE$epFpB-^QbH|kFKaok@i*>T?c{I^YeKDhX|6|uki=+_^9u+z?pe`|Vg#`;&kdT(aalqZJTo*3HPBo*`V zCmMfw8Xd!ppZ{)-H)eHVV?i{_MYA8YEQ&qyDs#_)Krf;r(Q7E^1@OfwT?rme7FANA z;LNB`^zaV{wAW0$I7jollRWGc9l;N+d(fBGy}-HBzih`qEc&;^zwGsah=GV(m-wrn zs`SdAryBgr>O5I%p?mf4&*#fdXlSloa|kxuVJr->?ouun{8?jA7V3t4}w7NWkN^ zIwzzCpB#u7L~mHpx1T5t>e4;DWC$MTC{T9Xj2qD?5&?g%WR^aUIK0;4yfJGn)CF>o zs}t*G=EL-H92GxMEy$}!?a@b8A&-?G7=gvm!>T&?nybYc;xCkaSy?4V+MG9@XfePy zzTmd-@p>~s{-X-s-G<6g(AWxIEq4!8Mc{|ZDnW;j8&Sq`BzapEq?g80;58e9_*WM%_Yv+WWnRVeWE7wxlr*C|!d&k&(wl&W@-tz16fm?2z$_G1VOXdTU zzH@%ku-3XGC+)UL!*EYA>9yqQTE(K}!i~v7cCrw2Cz22!3mOAix?H%(G``cHR?R(G z4WDH*mCJ=!l9|y_6hD+krq>GP^kwyifcnkVoTd7*xCx29=w5Z%s?P&|-GTnb z$U2u+EhH{y)Pxs)okFLMnNA3iI$>t=WkbQ@3|0%H21Ws2n0+j;G<+b>ga*S$83jP zrTwe%+H&-m?TD+iw~p7AqsMG3uhKp=UR#bHvrR~R6b5o;t#ColgamIBZh~9kEdx0b z1-Pjew-9SQ7Sm_KkNLj*+rF$xnPW6+k z(>?d2>0St=n}1EZ-~VX3wm`c2Ytpsy{?}bKX)E^787?1D*{Oy2ntHBF28A=wF8sLorq6;lMOKOY@dUE%21Y357oLUmv zcbx%R5j6|M?p-brdgya^E@853$puo4hk zlW)Gp`)>|r>_XKBS4A0}8BJ__=fhEXbh-a#<|auA6$I2Ju;i8M0GOraa>>O3Eyxh6 z%WB!!VN1z<8>;VwxbbVU#nARVu;Qc{47qNW5o z6}U|rYQ2nGnA-w%BFPm9s8k$IyqSS)uTj7477)wX1k|O%abN}tagF+VBp#QccuFf&%jcvMI)vp~XcABS+PWC0y;CBPiiktvQ9C!kY4PDchgR)&Di z4dZmABB6<6$_khuQ6L7^$U1Nh`4&F!0-=0nBBUrlDr?HOP?9TeA=4{w!Ty!E;NLJA z-4nzzeT6(te|oEsyBy}y%Q5CaOyW{hrkN|y94P%kEpu9skZyC&!RrJUh>y`0ZoKWEcz%>7sAY`P6$8_RiYT_mk&prhp9hSo)}7WqtS zb_k3H15wf-Bd<=T{AXckTS#kKiIy_5%fM~)^-{^2W6PZ@mp=bYSWZ4x$ngQjvNF)m zz&D}OKO_wha0ZI*vE|eaw=)j~Imv^Aq{mIW9n}HCP>$S{$VJA?fp7nyx!?bQx%+cJASaT&^Le3++#mrZs|4V#`<=!2fOaL%ya%q z$ifSq7Y$`--U)>j^Y+Q|93!{dHR-}je?SK*OE#IF<)l25FIhzI^R+3qF2CUCO0nUEs)z-l%OsiRg z$hf=&TE0?VDP*N08Ki@W9xTZPu3bq!gDk<9Vn`hpvg;(nFaDPeLpm@F_GH8Nt|Y&b z49j~nFnmlheEPp^7}9~^RYAi*BmbwU#6!}i4-C&mx7?zi{#Q{zI$#gu>4Ru=K!GQM zfz83d+tR@C`AWoenE7kq`eoqyP2l=n;5sT_k*UzT12%QRz}#SlVSOX~A9GS;Jj|G=WB++oOoH4T7G%flT|?jRQ-4H%&=NtSIa0!y?ME*t~M(U9+JS-07CS)uZL3L zzrX_>NSd#BL8$|OP*g0xVS4rQ1TuKQACk%k2xz*pw4w(7PKY+%Fta?3&O-@WmX|9Y zUCt^VU!IR%TPvPjzTi<7t{ayZJUSn)uPiTo6yA0#wl6Pw^iH^TEiZobmjv+}NV~QL zPH?P+--qEh^5fJW?VbQI&2zo`JG78g*S&A7eENaUNElNhyx9(n8x}>OTv29(^ ziuhoK$F6~T%c}I^in6kza>yfa|1VuKt~{iwT`53e#V0GYiceQ)jGwQdua3L^J#7qG z+5OLzraL@irKA}#CzwQ$x3YUe!OAfbbVwych1|4~?tXYaK|BjB_iW{K;cD@iiw8Cn_VDZl2oE62-D(X?ONK3)hikWO}tlb)h)qJgZRuBI#KV!Gzp z%EQF7H^Xn`5M1H6@+e&4xAL!Wh2KgKT;aF!I9!htamu@|%-JvVI5m07I5F6V;}jkI zb2m-y_-GV=ioEeEA?-h9Sb4WpTY7PRb#)Q+fbxu=6jd$BFRi($yrjCas-mPSzpRX2 zAJBqKHn%xmY-``OtE07T1O2+Ai>{ne3a(4-yj$ib7f?QzwRUZ5wN2v#Q4-C}8FW!c zS9j}+t*^DWZD{SHjhSgvd~(T9D$5MIV)KR$FdR6Hmb58RwGsp*nKgqhZ{OA0)!ngm zLn{&(XQe63wVA}f_Mce8sW1Ud029CjFab;e6Tk#80ZafBzyvS>OaK$W1TXOaK$W1TXOaK$W1TXOaK$W1TXOaK$W z1TXOaK$W1TX zOaK$W1TXOaK$W1TXOaK$W1TXOaK$W1TXOaK$W1pXTYIASXIyAs^NnK5P~*(nrkSe@eB(QPjf{c-iP_9wGGBU#fYZMb{H6PdONL8#!--cC4Gvnl zi;m_VPxv-Z8|D*6H9oLm4GV`*eOS0LT&U7ge=ID6yzQz1WHf`%C8dn<(E z$Q}?0ia2g4aTtD^sDq7;i}T}zf798vYJTImXp0*W{MzApTt=Kv_#hD~F{*(`b5;hI z7RUWT*TlV{Yc_~6eZn_d>fG^W!*Pcc9I@R`jtG_1@FUBF{W@VP(f`3DotS)JrB168 zI^vGhCr~Om^h$Cnu}TUKrNN;jDk7=VhuI-V0*l9Fb)dwhy_w@kAK#(J)VtP3uh?N!ImKy9H^>7EEtxAXe5U2neoQx2{5ostrX0oeJe(q*P_&;3_DiXdHZDDA#g( z0%(efAbJa3kZ4(gup{1OyFH=8wk)Bw?I<08i52qXYD<+AB##phszh;tHWLzvR=ntLB3+gc8 zq!yAV6GCa6QUy-iY!Keisn6MSz%?B%QbqWyoJti)HzlesNK$Yjkv3isSM-6Q5NaRf z3pph32V+_|hIC?%krZQ$F(OSXw8FHop*jQgwLKXO3V+Z+7L)+0LnnowCKN9!Euzcw z%Zh9Sb6TCHFeuc7&)>x;$gCKMuCB?is)34uwmysmK~Z@jP0IrR(l8Q6t099v1jXdv zR8tX%(JM)TA*^a4nXpF5bSf4z&vCxt$$#MVYSKK@^c^(Rh?`{~MhQRrW)5_w~i z*l(O94)pI*iG6_cBjW_y^Q7Zq2SqFEg+IqoAIyXFR3r#l-^^A&yy|BWJ=TAx;>L6e=gwN3hlr zp+eeQJ9=Q9MnD4pWnQl`U$qC)e_L;xP4o zJiW)uJf4_Ec#y4r73f3;1eAXSGPgZVnkvaUWK%_l*$EhO6_zIxhb>PedYnDH*VW4q zq55`GC?phLg+|rCNq;Yt5Is&0PY4Qvn7^XBJ8EbfNWyw~u%=+Jjz)vEuscfl zMI;)dcP0u$iExDzIB8(Ol|!2nsdFQp!l}gJkxxhMEuV@J5bpd`gdyIwWU3M}`a(Pr z^Bx@vMM7m5o4|ukGzsB+77*v48bAMHYiwiO5!kE5vis80fqVmP=JyCsLLlb>YO|?N-C9E zv|0T`N z5NUj10{>$OtWJJ{IFmjrV?8l5V-EWmOArjPN56$-UfrYL#xig3(f@&E_U+NX#xi|- z^slqb*L(DTWQD1k1cC`Cpzkl&-%rAAp@ZJ**hX(@@7h3jbZySUV^-}3f>6;rvI8K&1+Qb8mp!s$W71L!UU-AxGIg`&F^!MiYYH-B0{Gkjb+ zCAzB&YDS`z0*L~0ET=fha^}w4H?@j8T%7!+Q#~q?qwk{Atl}mx_d$Q zPm*r;G-d)p#s{0LxT9_B1{n6}>eiPXU7G@})We#3pp~lMJ`hhsn+75Y&Z`f~^>py2 z`0f6gH22*!q$gP;xLpkL3zCLo?GODBLZk);e?2Fax|e0rhrCQERG$k}pX?zXG;vUN z4$9sumHj>%rTBl3`bv8jwuAL7P4T+aG~# zUJ|^5Y?GQG7byBj-wz!prNV!D1Qo@9L@%&li_C{Sf+hvYq#0oVJ2ah7(+g<2fTm$7 zS47jrG+jc|3n7n_1at8SO3HjMS&RQd|A}M`l{jea6Uo|YCXfq1t^pTycelRS-c9dv zyxvNnm`TAZ+~U~QCW&oyoYeQ6tjUSWDSV~zqR>J@7}oea!bh5>xBJg9oWOuoh}NLE z`2={H9#SA@a)L888}44E|CBX-%90T%9VAKBbH8UmU;sIa3aa{-e#)YrfSmeM_yu#S zKuaK>_Ah-CMML{TjNZjE_Y?ZhS>elc)0?c`%?h8SGT_Z$uuK@CKgyc^00sCWPylF1 zC_H4{uIE0}kK+KfrMGl+rPEtlySwR4j;_`j!1v07;MN&UUqETUfJQ$mF?~#roanET zD|w_Id0aYsC8zvSu97#9IjSbAKGa33eu{y6D20Kdo@7nCP|1-kA8Ycmz%5V<=#x+j zKWqBq_4}k>Dn_XRnUQP!&G;JYhgs7wr1c?1ZLNlUm!F z*!Sacj}Z<}VM3&q4O01D%Jj=*sDyv1hn3yXm;x>klt?WzU-F1cEO$?e=@R(bB^G{| z6@>6MkXZo()Fl=@-0{fmcuyd`-XpoqU(wm1_kw?ZDPnXZ|K<7IDd}S~rGXO3LW43g(-fOYD&*0c41}c7+KVEjQ7CW=v6pYbUH&wk zn`xAWUotbOJk}i2K(5U+MP@d=ecV7N`D4i@eB(;=mx2{ zC2Xli7&L<}M_O;F!a4PZ4v zB_R-+$(2kW8{g5$godHuh~{5<2Ho?*^x&%T?E@Q)Fop-#7BvofYilcwCOK&O)~>A` zueZ`|?OiW|YzJL-YeqK9qInw4!CM_WHf(8cYfXnFu*lf~>m8Kt<#yQiIbPh>N^fv% zYTql(>PkW%pUFIc{F9kX=qF`DdTAv?)21Igq{J{*CT0p-)1`TzhQowTKX90&B;nU4 zkro~&<@Lu&x(_7}h~y+t#H(|WlxSJEFL;4;eYBh;;@Tu4THOT9UoQzPQm@WMs>qnG zlxN^1=Ms5s5-As+zTy%L%Sk3&n?%axx+ghF)HO+@cA=~33Rqdy&`V&s1rI6$%_TvO zzADLqA3vltlOz|Iid+CTIN%gxjf%=v?dW#ENp>r`v}0GthSp6|x`|iibwy2X>gw1) z&z(arkQ8ANJ09?Y?)H~o+wACWrEA*SH+6KqNEdD0(7vISUedaCgOo&lbrRY55=Yz1 zpaMhTlB!v>wdMv%nG7n!LR%9IqXp^Zqo%cc25n^LvUAetIo4ToGNpvttCWX+{6J}d z&GCQoAS8|pfkb=PUi!7xz0mpSm%Cfrp-;9!!@*r!YX(%j4eESF-~U}Y_ei?5d8~T- zKzlm3Vyb}ls6$>;VkSJK4lXs~GZXbmnWm&n{Sr=Zr~u75~c;CJ%)4$4bl5O04C z)4J_4%d`z}w?o=) zZ|-j2+uC-8K9uIg)(tdFOfW0K?6ncp1EoM2w9{>lE$LV2w|0OrD8cKkZ5ujXMvpGj zX?o*TPcpC2zv9VfP&x(GS(lea5 z`&BIJgy;#-WtF!Nn57*QY#d;)N<)Jtyvw<%j3!XO*{Xp>ybz0q3nL+I1%i7DS(paz zIT(%JoH-WfUuw=otAgO#KTYzaB9<$h#wj(#o>%w0y=UK^zCB;>fhTqUjhEdxDJFmk zU;>x`CV&ZG0+;|MfC*p%m;fe#319-4049J5U;>x`CV&ZG0+;|MfC*p%m;fe#319-4 z049J5U;>x`CV&ZG0+;|MfC*p%m;fe#319-4049J5U;>x`CV&ZG0+;|MfC*p%m;fe# z319-4049J5U;>x`CV&ZG0+;|MfC*p%m;fe#319-4049J5U;>x`CV&ZG0+;|MfC*p% zm;fe#319-4049J5U;>x`CV&ZG0+;|MfC*p%m;fe#319-4049J5U;>x`CV&ZG0+;|M zfC*p%m;fe#319-4049J5U;>x`CV&ZG0+;|MfC*p%m;fe#319-4049J5U;>x`CV&ZG z0+;|MfC*p%m;fe#319-4049J5U;>x`CV&ZG0+;|MfC*p%m;fe#319-4049J5U;>x` zCV&ZG0+;|MfC*p%m;fe#319-4049J5U;>x`CV&ZG0+;|MfC*p%m;fe#319-4049J5 zU;>x`CV&ZG0+;|MfC*p%m;fe#3H)Cnzchf~;X;*``eR`kJANv;5MDV#E4V)PRpyB%+qQV=7_2G7%Ie0kJw(-IE)iSg^?CRjPb+#@Q6sW z;ev)3=6frI;>aEl35qywC~+8mo2Y}0j*Ii-gn!f7wrYOkxM+(T5&YWWd0a-EPxv4a zDlw{oNOM*OmlntULD$5+p=&mXF@3@}TI$^KX2WrZ6dbYLPmTzc)bJzAg#9{UD$)PJ zB%PRiV5Ls06FTCK)F)6XIrK_$DzQom4yD1NBq}1Q(}&q1aYEkU;RtcUkf_e%g8e5mRi6D9lU65#5g0LgrWxGA0!nQ1-#J_aA#@lSrXk!kXk4Hj}i!>66 zPW9K$f7O~!TW5$lP@Hg;HPm4xAAqi*h@;M4b^=~V*2NU&*W}YhRWo7;Dn`0r^b`3O zyjD1@6(R|cme~mK8{v%v>ZDFg>JyWV_ljlvwK}b6+YhH3`YR@hg~nL1y1!cDKtDH&|NH-;_FGx~wB9S&; z5Lfhpp%7{xijE40G2u%S8w^|d`23<`hHK^Bw%szWD* zpC%M9DlMYR^UI2C1an%Qr7$SegwNl_D9EfBh_0^5ud0EHfwn%31VK@GAx+By|I#oL zMynx%J_N<&-&9i(h|w!afg!AFA(^m7$#g0fGtdWs<$|iB{KW)}<1TPm|I(cr|KjbM zX2Whe+zI0vU!v1?8zD##JarQM1C;jBAqL(+o!4oL4GuaCX>}XJB#pldIfRez6lTF$ zr*-r}HP3^;frH7e1>STY^u4P@(B0~Iatk@q>veTno+pJqs>IetIzIkiiS;K=i~H%y zdQs?KsuFo)lGtyYBo6fNQi*+l^CRN~+w-L3Vh2Sl>xDnZP#?^L^i(7Wb5X!oFLcBR z@5G3A(K|qPqUBTz5^oM9G9IHo>2-O9H)BDq+43~0e}-gQ$*gbegoQX}d5)Y3mxMTB zG*YOXP#?isM}&S=iS3ERZezl*U_qmyqSLZIvBdUd;&z8|GWDtL@kH@79Xd=+>Q%O= z#hzTtn@l|M4{hRdnLJ861^zekBP!RKL79CcMjzX{5{{~4|FAvrf z4A#+TuoiYl3BQa)WAx5MVJH!ftteVATW$W4<7N6 z69|~)e7q}78YG=O4Cml8I*~o{O0sA>^hz=WheX?;VAUy!!)!&QmhuM_>JvZ#M*5>J zpU|jt^2{iyRA$j;_4g3Uit!3Fbxj|#9&=s8t^@0JybF}bizG}lPQDTPZqrCC9Kt)g z;S;fr=^vgxIG_7Qs}t${TIxc}g5%*kY61WGn!>9ZF#i1<;kj+^_DqVww99Q z%uLpjUK$9^O0SYaY%!ZYCm@@ho?K8IgV^H(6Zrp_!0U`I<%^U@iSJSs(+NVDs!1qp zf4yT9UEtWYdE188HoDreW5bsAwpN+DQIh}3{CX`%}%%70Q+g@%d$ z&Az+9M^R*p|2=t;07IsefRltrcaM@`P?>~R49SppfRG0h2#@%}T}5WSKF}4!ki`eO zdevRC3SM_nK;*x&uAs06ko5u$nCYaIz{Ve-@iJg=y|bePjS9-}J5|-w(~}A6^|$x) z|J?gI(M)$&ojP^uTc=K)>Ip>$Cp(>jgV*Y&Z{66ucD3;0`i&c#SFdiqQg~r)^Tv%r ziJR8DU^7pVELmz6c@%prYFesVpF-~Ac%I|#7UOyTR_<=q!HF@qN-0@lj9p60a-?OA zCAIQ*S3nezhGjWYvS9C7@&3x~``#T14>k}b(xz~wWX*C|v-p*q+L_W#?j9g_eqZ{E z?fbTmhJqFEOWTzKc4ywMJV8}w&_=UaBhU-I@Y7jCNUOU^SF{W=3Ze|kR%}=5M}dL- zMec66*!cZ03a|q-Wk4UM?fdQ-MVk>DiGU3TB>!n783^rd#rwkceUFdQ+JK>U);rvd zVZEeN`>!-UTy1>NjA3HqIJJijIGhA>cww0XP$rUn|US$Bu& z663*kWrqM1ms7cx?fY`6++Qyt2SWrO zeN{K@L8HYF86SS9Jpd2j4UHb=Ai0%sC1g7~in%``)7_ zX=_cN82%ljjRZb)@&rLe{T?jq(O0Y0Mk;^7r5k$;_oMgCw5)jlh3)&Uv=Lq>AOL|E z5np|A`@TY2<_nj-vVGspwCuFe7Shlj7TOF;oeF(&Ng*EGKwH6E^~r`Mx}Vy;E=2BQ zBRSbb=8XS$y=A+xWstVq6KeTopO!Mr30T>eDO>$I4#P4b1pcyJ0m^J}a0v$nks}dX zjOAc@VbW}HA$MeI*+hdA%)1<(yGgCzM}j7;va!etyAcW4p+XXXX%P*!;c^;<`>EjL zIO0u)Hqc)W>5p|nqL*8LB+@)*C(a0~V`LW3nc#(tB$4}WheV%OruuzE;BwfE_&~$u zS$B)EaFyVC#=^%#K!L66J=n8gW7KxP=Xb2%`pOUPfg)$v^uR~pLz3Fq8~aavGfR3V-5a4Ktf8whn16ii6<+m; zs~Z0z45O-!XBgCwww>U%UFjVlTlnmw554%C7oPmx$(0X0{M5fa_q(;*|MK#>)$csL z>h~L7lHWb_-v0mZ`9J?@*Tx4PjyjZs z>MrrXK{Z{0PLB9QPT;vSCN3FNp5pJK3JMMeXDBrXL_u(wa`u7vO1a6_VjsmnLaP1h z{RjMN!NFcIt|wS+Ps{_6rCgT{uK6I&kK)oBgX41Bw?HX0?Y`i<(8RSU-2OX8b7RO4 zbeMj@cEs1sZ#ZZYfXIAC4dRr&?@OST3e}B-I1Rs8Q_QQ2=htJCwL_k)v zI538Pf)wVRv9#C=)$7TPc*a78&BFlbpv4%TfAb(4P#mw1A4aA+hz3gG;5)K>fbX%8 zS^O)RMeDj=;G#|b&qzrRv3c4-;ymC0Gg^byt=3+3TaxNTlg11;kk=~> zQC8eGnrpF}Y*Mn)C0_8tLd^@b!_tvb6@VHj8LIGS+cOdpM>)qF2viPLl5AS>UdumH zK`2m}tR$6IInJ~PiqHR|)sd=LJD}JxRIy1z6=;&I1d8{br8V-TRhw}pX0 zvpp`=X8F>Z0kQ{70++PcEbPzwz?+|+^MN-wRd{u>*JWz)Zt?N~FK9Pe!2JUayyAG@ z3(|qDqz|z4!Y@Z&xMvhG0V=v~&*-`(6Kr!N1C&Kz9yM$@30!a+@T#F(N(rO_m7ldI zNuRZYCSaDp)dY(D;@S45gv6TV+wQX`WLmzqS$YBu$%-`=3MXHdNy`UVdf!}Xvj*N= zN`W)2#G(tgkGyaTF^A0}SU|?y+2zwsyU^{UW6_Wi%Up%lA+A~0fv#d}f~(#dm9~RkSFOCM-Ib|6q@4aYZ?D?XzU9b=IUl#@bhqc6 zZqNCoJ?B(=kJmMb)UWz1u2o*z4vNPeIqJ&Ic}-D&uRtH5JLleZZ)dmK);@B8)?*Ts zCg=A0I=mxV0kMzqP6LicqM&()NYx8TEKu0{6ku9`T>>6 z!9rzeJLnY#s$aJ`2NJcfk`6YzRsuw?`dYhdV9wuRbxKNCeOy;lEUdt^uBL%qOTo~j zuB8LIZjbM}CBfS^b=;8;oN+Fb)wE^YkuL9$4?qhkJO<+#cjUM?@9*seposK#FL)^# zq>$(`5j_(IEN}5@Se*>3*LBnYnVJ!k^J#me6}J!Ux+SSmBRXTq2aUA970{az?J$CN zndQqXS1_!f_Qh&}3L*At)8)%s1e3SX`dZ$nVCtvsLd;|@*eYLaF;McXi>h;vGVRx}`UALRMZi(3vaOcLx zS*PlZnfJdTeA}Vz9|O63@a!D#0lKkP+sbX- ze(C5i>BC`xlH5IJd@O|o-*?$lVANylDZ_x*VD1ryS!y`>;3Tii<^?J zxe)i}c>PP0?N9{5HtCLF{91=hRNB{{S0VIF~kN^@u0!RP}AOR$R1dsp{Kmter z2_OL^fCP{L5kOs{*%<=Dbyn;>C+C-`HMn zwRsyiEL!o>9p1(_7OmI@m(7b-Y`MeR5^#eldu-ax{zKVbKP&q#eETKbb_N;}ErA<0 zCnqP*4czdj0RtAy4b&xCh+XuzHrwCf?cNe7c24$OLyfin(1 z1@-xyrr;T8jO)zSrQU=ft+dceOPeKJxo)Yqdo(xux-nzY$BY@%0sW=(+#%=(R8J(T zT?y*?@$jT>OA5Bxr+N90ayq*Ml`)n;L!8CIS-N{12^Mdl1PbcnEK-7{*C%ln+TLkw zZ#AnUxjjU!gA}V39J$Y@_n$Eh`oc%VSDa2h=!8dg#Dwm> zExtf;x1Y2c$P_@^Ea?6M+UvVxU(J33V- z=W7a@ZNm9aSDYTusupo%+-#)5tAsStdD8?xl!0@4wenk9gE!ho1fA!bCIs`&HcjXS zDPq!y3B$Oa_nkMSTi<6Ey53PgG+PZCY0FIYTx{-Vz03yQqP07n4DF867Njg~g0(Fe z1uN(DLIpf!XS+FgkKy9Y{Uhe#CbIRahw!G z@8djd_;DP6RMSsEl0gO{bx0cQA+(2hL|E&sIbzx&!XL^lv{ec*fK40i(gIzk=v}5xR#GR6 zcG~2VBT^b|GOSONG-xtRZ&E&4DWB{Z?D0E>c=Y+HfO)-JeCUW|^$;u>^mDk!VfFaM zYUVgI*rke~Vm<;R8%aA9z8BI+=w8sfZ<(yLOcsZ7;Lz8NcYL#$1V4EF>YMnkzB%7=T1Ti=$e+?Ly?dx8A)?Vc8f zJ~+)oboy7*o}FR(t(uG4$y_ZVi}Gx?=5Y(JQC3|eFT4h~ocd5FUZYIB#*yHm&Y#`^o(~UAcZ`NLFG9GxExSX?>09LQ zkS35a5HWG-9hx+`4L6z;EkM;l+g$3Uc^=0Eq5)>io86&}wkA)xCr_@)3p>!lJY`{? zd{0rRI~usaO4)V|Yd^%;{x^Bbt~~iSd3{&2BZqVaB*I0`W{(6!~;o zT;XXsq@kws0qt3^gc~h>YC$v5kPk>*I@0z$r9BUppvI-z*sF7j@=BTPoC4KUk4|rf zQL3Iw)oW5QVa8QPsYWW*I0d{q%!}JQ~xNrYJ(b?93NAh?og944ep0 z@b+vnX|S~d8Q2~&h*|7Og(^+O=_$(TDYB3cLHEDdQpi`F`OuP$H%kkz86IOtS|^qH zN@c!0bgDKXv7A&$C#0ANYmtk^BpiY|>hpy# zLB;w6U6-$1mrs>WB!P#GnFgXFiYMd{rL_O@utUJwgNQ3l>stcMYGIP386MHjNi#i; zX&$MXd_o18J*k#zax;S+)gC$kZQLaV%2Ne$NdXiG8fw8%HyBz?<4sn9l2rg|0u3{u zd?u7nqvb;ilpzIlV5LxAt`Dp$U+D@VoaPZ>x1CKpuJ6a-SQ-}mBE5p0_E083RwUhs z&w%ALF6)5@22b20FENDbrkXu}dr^ z+bA9EY#3C%KG<~y$~rPwqZOB)f_Zcb77+N%XCiYas(&8nU!d!M+NC`03fptorF`R( z54&KGgY__wOkuo+hU77Qc0i+DG|6IF2J^nK(yXb6TBP}arIa&e?seF4}wx4dK;Xk;O-)|gv!T*t7=l91x%%)ppS@B{~}_26~Jsm zz6YAve1HNqlVi~yHnDJYJUUegOqGvLB?DpETX3vXOGEoUO2FP%<763#WI%~mJ{tzOfEuRMql?Myu zZG|iug9Hhh1{X8A!5;c7rXDg_x2;gwRw%zx)^9GQ&Y4bzd@WrzY+JaV-rv~I5@IH4 zb_^_1ii+fcMP$&h_I}PuH_?VaC$1Q1xCwmj=eo}gFH(jVIj$vRrx>p#+5-*OgV2ro zYCct{oGN5O04O{+_Y{$x%XSUPAFDm0a74O=_H?TULI`Ly_2<@#Ho+FWq}h1Xvx`yP?P=p1wq)qKO}O2q){wcVhfM5 zf&5!bHQ1y=ZchD*q=dKA`#U{q#T*e50Yg?;3#aNjp|qx?a(ZbPA5dC}l2#HjhqBc+_e`U=oh(uQQ6Zl!q2X#ZISSI%uO)LZKo%Wodp$52<3xDT zLmcbUH|o4n<(X1BuT=cJgLv_|4ylO_VP*eb+ytht1k;%p&n#7Dma-Fop7N8EhfrKo zJ*SRLhx~fq`snEbS9my9dXRSeFeCRMbn~!IPA*mC(thIvrE&95pb?6i+U^1&G-$HVsBWXWT@0Bv;WC@&H9f>UHu(bpyT!?lM zu97+F5z67$9teSKibJN7!{kLWRM=8U;zeiq2MQn>vm^riB)s83TxI@7LllHIxNCXrzzCp|^g{?4qsoMm%uWlCFF#2L}~OKCOL^BmK&8swkT^~|qO=2!GH z#ZOcyPgKY|E7%n4J8Y1>@gW-r3)#DSw+r=lcaHUkBxE zzJnD?u!5zRUoAF7#F^8TUrdr`PKPRZZzlg@67wp^pQJZw?>k8E#xz(rS_p{$uZ%#I`rTj%T8>Xxf5n6Z&u2OD%tAN3a8Idrq7VG zE7?h13us#1%`=p>Gh}&&-cjg%N#xlD1~Z0s6gr)dNVSCM3{eZUt0lQMJ*SZ1bSbHj zb`WGCjA^IxMwRSTbOonAoo&d{GAfnqN;#vy&Pj*50(PbZdn%3)Uw|-6k(uZoY*?_K zO64B6?1|Q=zt_|~gC0cIk#|2}6ukSPdo(@L>4!W5<{r0hLz`dNK-vb_Y7gor#IY-6^-jW*eI8lr7t z?faesBHNRrW&Z<$DZ4}syo=CkXg)KX8Ax_0I`l*~bm&K){?IPF%fpiLi1a_HO3A8{ zldAd-ABG82y34~%WDQ|3;cULRO1Ys*E{f z8r=e<7%|ppm=UwDTKT40_Vw2&G&j_Gn41Wik=C;rH_*(jQEF=B+?pus*$QNaK;|6w z6HkruaEs0N7hr!vN0JD3)6JT(o9b zC9tm803wd9V{4VNT6t`3)R6n&XI>uiL$U9?FR4`?tCg2TtI^^h^%koU!p2(Vty+0w zbPFTv5ylqp*OImMet#|cVoPJ#U_H?g7hX=0TbO;8VxJ|~L`O$zt{!6Ou~5ecU|>hk zyw@{}#{Vb{5T7Wk(6Tn@3T5jw)YC~G{k@aS$Qvg4qgl#exBO95pKNxS%ZKA*r18w< zL(|Cc8dP87Cd0WVdJ7sDIh^QD^iin~%m-fzG`tDf)eb!yTQpr+G@WHmcrv8eyyH4q@lgsCb&cl9j7Fpl=g)TahZ_&bJc1dLyb3~yg3E!}i=7ZUV z1`EHaHArKHCkuTfrdRmeV z9Ix1PNPEAMsK*sZLup*efv^4$aHAvdX^8}jwj0KyI4IKUV7 z@VOuGguYM$>-&5a#gP{kdPwqzzkBKMH zC>cc!`ai2zzO0u&BlqNd2`{ z3zqC}GazDUuLXA+x5#sIl_B%wb8}fR(?vD+frvxaxMAR9<|$+5$&2S1<-@^HZx79A z!c2E77!yfJ*!Kdkh?mH}`%&%bGSOnOQFBBv-8E17V4l1yN+G-up+=B{lOd+-dI$_H z9$%QJT$m@{N_HVQd+8E>aVJa_DeS}Gs`<)Q^W~X+*iDKwb<5;H05MKl%s&Cz=W5i>WmW$S>R7*|(~&fA1pekR1+S zDQM48$AhE=im*UVT43zf@P!!DxyHDgO5%6)^wn;B zW?S2xv3h<$G_b0A{@1U}~o z@9Tb&851sH2E2)j(Eq*m_{DqK?A*yNOZ(+vCtZo;uf$*;Lw^C#L;HsU^0#DBeCgjj z{5b95gcFo$6RU-@J}&TIbrwz8EM_=)ik=a__!X5icYYnkFdN%dZXlIxHZD!%Eq~Gxv`)0cm)7f8N+8>cFr-st-5Iq*= zT=z2(Z5>Sco}P=DWFEWJ_bd6+R!qo0iu%?0<5$d&3uA8lx@D9yOITh?Zo&Vo(Nlktbtp(4oScX9&L0P=Pm{3O2$C zp)gxOp+xsd*AbH)A1Mo+-^-?lOe{r2CyP8q>!B~#n=Vue&yRrDXeU?5yHK zcVY4yH*L6c$pbe%kbFu!+stwM7A8BJi#azZ6(@6C3U8B~&g5eFw_-Qlxa6+n2On(y z?FQ2uDamgL`?3!gpR7$jyKut;hnuC?A@J|!{zw1oNHiV^AOR$R1dsp{Kmter2_OL^ zfCP{L5OTaTY;C9BOn+t?9{u>v2{f(zr_Nq^1`+Is{Wp`?A zc2CQ9PeTd)^tLs&HjZ1gV%!}z5Z-)xB~*E<0=JIlyj6|j#fvT9*j{h7c^fw@TJh2y z-o`f;t=I;a&5KrSxx?EMaDyp(Y}(EKL)l(GEBh{d`z73V1{xAAfg3g_CnwJh-0-IX z0~X8;)FoPoUG%p$+uz~s-V!KwPWFvS_ul_k=eUQQrnm>-w`Tcnr*t48scOM6j*eS| zQCq(0NcXCj}lgB5R+VY(-Z9-dtGY&ol_4%Bp;2CF( z>&(`r-h?2nw9raRnG&lRYF=Nulj2Y7b{iXBVA?OEGPb8{c3F`Xs@T6`_ z3bxs&dHIiWI=cgvF_u6>oW;Rex_cZ67H^;g3hLr4Qi7$|Cvg_q-f3)aHLD}JJw&a8 z6sr{+xzDHfpgLWtnHU@*d@1K;7rV=fD$RAXYiiB4MRV%P1hc!WZg!D-wlLLP z32<*Y=k+z&TI}&~Z~f}i1D!REEiU2gw(&g2`2+5QW++dH=Pg;?YTAUxzX)mZetsYa z_bY-Xdz{~A{e(Ah_x-k@BF-hm+Y`@!I-V%{!bikcoK8OIghzG6gzmj9zCdxepR^jt z6hPbKzK*@#1D$?wOnRdhkZUl;p3(^ZlB^z&h1QMivLalvf|YnXI#nm^PiH`+%8o#&e-1oO@|P3Q$FV$z5S!?>RJ zoj0Ug-)9!O-cdg^TMZg%%S`oLZ0={h%m&_~wL6^*?T*qGq%3WMwJjLqjLWH>=d zM_NV*7X~eRT?qJ&Z6T^UGlFJ&0@#~s?d|Y#*=H=^KVl3|M(DrW_QMy^#7Sosi;0|c zcCi@4Nnb8@oLSsC)|ANcClhOzqah-lr=m%N>q9yXgIq#Q2FKJB(MQAAOGD%<#!XsD^1c@i(vrLH;Xm%(m3fnz5h-#FOB1$)6Clw ztDemUlVE*@%n3A{2esenYI7zjIg^OOAdK{cUmOW+#08whc{KfToD@Uv<2-EmaU6eC z(@#N?K?WLPJb}tMPsrHjNlNo1F`IyiVPK>Lj|i#~sj7h^SnI7hV%j0XAIdGXRSGeHO&jgf0$rx)U8YV}QYVXc+T@cXQW|YC ztWT3PXfjN1Qa)KJpX?ay@jHfi^!cfPdA(bF=!j(X5G)z=bGXN0_4vhV<~TFhrHY_p zJ^~{fNjnt27t%=RUeLR5nXI%-7Kd`+(ASN3e6yGZ&S%Fv1v841`$8LDgMJ z3<)$ipyMm`j^D~v-pX|h_XHY7L%AKwhkJ-y-dmPNV4T3Z;FH`upWXqU4-ZXujD|HYLb$svyF<$9TjcMMCXg}^F>&b~ znl!l$H<}bJK-EFpT)Zt0cOmb-Jy-PCQrF1Pp-)eJJ7;BWnrFtPf@5l8o0np z*>(+UKg8JnH+jmgJoz_yeOI$1hjaxb!d>mkQ}`+Jt~?k5@l040`E*)b;b}Rfp{DZz z?OCvd8!dinK{L>h4@g})()K*1Jr9>` z##KhCMk>`f1-v@U>**=V(^KS^rZ_S@8q=4iC_=vM%ojO`mwyOb zPuwFhU27J)Ml=ttmO`o!sss+?NOXW5Xanzu@qku+OD%RO(_C_~ODrYZC>`u<7*xGJ z*mVWUIx<+J6_=iZd2|XE5ctezB6BCIe;(*xpzD9yr9ABl+jH2ZeB+W2yI_xl^)Qf3 zVZ4ThI!Q8=R)#?jp5>%EyDNYEqyDOr@frkBCzLB4T|Nz-&Xl2b$P?fC4p> zW6>Tqv2b)eI#mfwm5)v(17X=)aIw5{k~T@SE207RMb?A!mxjhe3zf`5d1xV7$smvi zV_;GV`atx6LnG{Q3*B%$Z)h407M%)Yr$6j5F(;2p9c$-2MgtGg)A9^1PPi3 z7c;rR9{Mb%9x_5KKyt2U$IIOxpE_~+?EYYTd;6#4fd9fCA8r^4Equo z;ypU{9mUFyV(`~M!|hOhCzP|~?^ngjuZmeOFlsP7{6p<#MnTNIm+D?dvT&G<&~9ZV zMv|?XmS&M~NFhhYr^qKJOSYE&WFrQ&oOasC2DBUuZ`23$Sc&pj2_4YAP`*qbP+EzS zRuVFYveh>COry7*EK&YZA)hRv;c7KG3ewfDC37%979DAOJun&LM0n9d9P83I>bz3r znNm5gRQ$Yyc=5Rosfi9@W&d8>1g5V9)0r2~ELCQfvJ-%w@{^N?P+U_zr;bdA{CeN| z=;;DicsN#ikaqhpBljS5^RP}%E>+~xe&YnCaq~~05sI4H?gAk+dQ$=OX$TaxJQEI? z#CLYj4M)9YWy-QLm=zY^LUN%aX+Kf#l``dI37lLVi7e=_wFD-yx~AxW&TD(6ofXqMHw!vc8u=u;T?2w zxpJ{wUR*BrP>V2AsdJxrQcbhOqdM9;g=B4(;ojodep){8SnGZ^&j-E+bWbcI#_U-cusnO zHd*Hp&xF?S23oSQ|4G>Zx;BC?wuUX!6w5Si4TG1^V|ztWRhdvzU*@I}n^1+L|3FUK zMAiP$6A|(@)52F7qRpWDRo%|UX-eZX8uB(l`5&R2#qdSbltt6Xxt8`OgnkV18#;T9 z>fIXI*&DQQJL~KXP`X|3?9*w=r>wKrpnR*|+25uqf15_<`voXp2jy(OgB41!f~A*V zEjC2NnbVbDOp<3#hbnk)CjVj*^D4-nq&I2rJ4o-wG+0YLR!vuyy5&{V`_%TgXY>)F z`&0kBOSI&r_MvFWG2yp5^xz%KPHdXF6J{uHR?3Ge+3L~?r_WHP&yce#*-2dsXj1*blpZOGCxDwXU?IitVMNr$=ucBTY-Dvl6efG|sundlyDSg@W-4xMQW%Kacth;$TDMQf$}K)u7}^Z zwBI#V1xi76f$}Z6AjNA zodHL92B-!421cKT_O)kuweobeyu4ah8tSQ*PAnS*TSZzJd9_+OSS`OA-2$W-G1h39 z5wova`KDU-_17pgH`IEVn+Teb*0UKm(9Eq-YHH-%nkehp3S@>r<{b7DPmS_$jqHhT zF(%S_*xbU6UaV1e*2phLH-gCyI|&^Clzh(s*jrY^0M6AYmRk8-v}RZ(u&&quB95(N zYn8HEd2DUeko(|gULNv8vG2SusZ}1Um6t@T(c&QW7ON4$##-gAT6tr13nS|h#uo3_ zlC|}Ie=YiAOJmqzJ<$*sUQUr)n0=OFpC#8sM@MR|9%AURP{#*gU`Nor*E5U8|0oR* zpD3%)vNq@nW$QH5(@7rvy_3wy8z%XqS;}Cy{83b&Y<8K;hvQ?U@yz8z)5!1|RA1vJ z!?`AU3mO*RllvWLA#SklK*`WlD6;5PKnauvfHA_8zX0DM~qxZbU-cay`W z{))D{PU)_b%jbyB!+voVS>O7FE;^EL(ZXbQNo5yvM4=`L->{PAgV}`!3%{r}NMnWM z%_fMXu#47iE_)&uu?)<}V9%NYt)(Wbsne_>UwME!O=Jgq(j+5|N@sOfvx}x>2z$~x zN@7pM{7W8j0TVe(&OI#cq0YCDIv+S3$%5~Hvjdx;7@!{o#@Aywhr3u1#&l^2fN+EI_blp+#H>sf;^7YdI!VTUyz!&!LxgYR^zEA?| z`+OC}krx$uNb-ljd+H-<2r5t2D{JcIr|Q8dh|>}Jfm46_A$+qm$Dki58AT2HKdV>1 ztd~C{`awB;S>f0ZsU3X%uD#djn_a;WAd?D5apzp6aIWl}8){2~8Ef9(H};xVdYoFw zT+eV}wQQEaXqw>{gbpk4r%n)(G!d!*UcXWi{gn()MZ8+Dgc&^$a8a*A@k&Ob6GIcMK$+=@Nc%CrlM7?8D%y`N~!E<(YluL5u}t5?Z6x>DBsQNgRa8(W*y|cjqea&h;`I z*xv`xAg>odUJM1`q@hGV`Un6gnhE5KsWl78FWcSOx2mvz?;`7v9S&eAXwOl{gQNwD zus}{)VC>fLg&5Ph#<-hJS)j~skf$twt~H)j3zS6*Qkmon_)oy%dTiczndVWCU zX?hj$1@RjTln)okZ-hI6O+4&~27uz7v6=%=B@woNO>O_0*bZ200~c zs-{1*NoQ$)`4s+B4t)@MI$;=uv9ez?b%D@4lZC?e25tSo#FKB>BG-NqtbGaQeG-}X zC$59_#GBE1*gM&`0wG$O7Edn|d1mbB|{ zgW&tfUG$xA=r4ZsR~BsYYK?);sFQ{R7y}6h0Gtjilo&sBt@7Qq@wc0M6E0x} zyorm@|GoD3#e3Q8+{rFW`{iLLU5Vtc#9$sne*w@#`-cMZw`5U#>EAs3IPKwt6O?Ha ztA(>ZF7RJ<7EReKW;l6@o)N$J6|26;F6ZD9JsL)UiLkiwZfN+VFuDPIA4-(LpfuH_ zqi9Js{30f4xI{~`;WLrYS|Lx-l5DLQlz|cCDSG&@VA$9`W(IV#%jtgAQUkP}jTfSp zu0lvh>3af*9Z}1JjZRs?RlYjzO8>->C(7V<0+xW>@2~|(p9tCJ_bSG%y&qC zG$!_I4Y4|UHuceHXP5qMX5p=*-|-mxX1fy8*Omy%f)D4j3kk~6EPq;{ z6t(3+Y>C#%#;w_Dxag8Bb0FCOT~oEjbjJ5H<&&SuzMnw|0RhoY{wRt{5f1~mg$)kE z0r@L3vd?LC4r3jZLWV>a9Z5m^1`Pv^fR<@KM9vT&?zE?PM5e{*4u@O}%b00|%gB!C2v01`j~NB{{S0VIF~kN^@u z0!RP}AOR$R1dsp{Kmter2_OL^fCP{L5b9g{q5WKNkG(gz*WMG{XAcAq*z1A^?KQ!7?3046_MD(<|5>ojo)_G2 zA03qK$?Cg<)D&*8t8k}%th_QseLcA;ct#lD5}?$&#U)!ma@@tc2L9EaWp<^JvfukU zz-V7L^f{ym#9e2W+RR&a3SZMAE9dL%20gwGBEYoS{{brPiO^F@s?GX^$`ALsl6Tt& zo4A;yP9g^KE>liYirkzT8lWRKCD0I`lCd<%*%P*qc3%!z2_5Ye&gUhi1Woo7etoLx z;(MYwh4e!~!ae_VDtp|LGav=bEM334d8@Fdnc`b5m_yGyc5Qs|Ie1ow4b@PpX`qC^ zJxz=!G#OT4stz0OTDKEs4n~*&(x4OUH{G#WoG;}~7#Vo|KsQL)tx(0^kfvMX+p8H6 zj1|&cF=NM?3Qd8X!ZCFurzEAxzf7B)n(?+xNbSuVL4>u~vBtxq+U1d#%k|HxZ-PG;e+xykV5zok(xg=w}~ z-`e={i_bwXY9<$KgG%C~CZ#luHx1Q?N&Iaflm&;_hpH~ldgP_%O{<&N3aqIx)!g9& zU}E)9o;zgvd+e5+*b^>OV5_>x40qJ&TiHs;8Rz0!mk>5N;M*L6F7qjZgRn7nU>{E}fdg`B|Z|IZ1d*GSp>4f}K z^!=DQBQooMo+2>e>$HwAvvQe0$%beVHf zMToyHVX3V#_@40fir_`zta$M~*biJnV5c-JWech1BC7wGK9+<&YYIf)(oM~)x2<0* z{ORh79h)|8cyYsDw{Co8Q|!!5B(A>Hyhg~L7@Omq>=cT&ZEIe;@%iRgVx1GRojJlp zXHL%eSa&nT;bx(@xZWm67G>WE>#wI5lufU$C@U_jhHXJuP*69g zWE#7#FQ_kb@2oB@bCasM1vCFx7pfBK3hIjL%Sa1Bm{~Bhrl^$N3qox{se4XIB~u~T zv?n)I&m%o8D4SV4eI`g(6coG5rq9-zRTfm&xT}h0lE<=wqB-T2Gr=U%%KT!>wr%UT z{-H&fnq~$t15#kuatuoeR1QmV#RPVe>$2T~ZN=%8u;mXYd-?oKh7q=qZOz+S*8Wv! zUc0tst(or(V}#8Y@}F+DP20zA*=hfh?9W_`FUiI47EZfjQlOKuWcND{vbKz1%u;)z zE!FxJ*_oE|t(p2}M)L~b3*~E?H@?sen{D%2$Pt=1ZC%s+JnV#xm-?+!6kFoB8{kFqreW^3hK=QM=6U`|86LJ}apV1(|K{7b_{PRpp&1di{qsIeTZHxuuQ$vItP%jVNfUb%W#O+-qPm>blyp>7c?b z%q%N&o5@gPGrEBxf8|K#u|AqCLCOm=T}LV*{o;Je6(fm4Ei-&!?WV1eoSH*f1YZ9i z2)L5e4WqVrT?66bbq!({)O4&pvp z;u8hpz17S)SSnpoPt#G(XrB_l6rK^9@n&-CdrkbvqIXE z^D9a8r1HN=-Llj)DmJh+`;6tt$9a!QE%tG)VbIQM?>*4j4F#rUoX8zr%A1Y`wz{%R zwcJv;RzMrL`a1UZc(>#JzYW>DnnuX@I z8=7BU)4bIjKOjdddJDwXLP6qqp>+M~=B>h?TDA(6>o;y}UcI_m*s=Z(L^^4LR=NJ= z&Ed+8FFv=ndDHVmVBkbe;Q8kDYoBl41d7b@gC+^(|qNk_21_)ep@sFMO!CN=>%lMf=d4yZ9zs&Jw=6LmkRNky$uz?N)brv~-goBq1_wHOYL=-fTmqMr)MUHmj!*CTkw13|@Kah`d(~uT_E_O6p|ogrS#@zy zbtT-_&99qXRz(DaJMaFHKW6nwkq=%5W`cRaHYGnL*s8Q&7QE5^dC;r)E(O%+a8GVr@ZH>fORfJ7w=;Tzs{PI2Ui%x?!p7hs zA#X+SjB_Gsu)cRi(Cc*c1otbmE(^W`AJ&mT0}#lwF5^9^V(TH35Uai@2DYl3MA?(x z1L{5szUw?5JV06;BpIHy>xLn^2tU?cn(EQaA}hO#R9$!sQD=c8jy9M{w$47A0nNf|;f>>B>NY)j%jW9Hpw&+pM zr&EQ2%2krJ4W8~xNnHk#@aWf7j2-Kj?@m8(ij+#Lq%DEsQ+vIg-TdRjwglY14lmiY zz=PEUPE_p)1GhY4vwRm^Z6D}(R2oatf=QeC&6(ip{N^jvSdQOug?Pr2U~vstYRg!f z3aiu}Z~4k)UJ9cP)Wz}83eXqFgMc1Liec2IW^u1P2H{=qv*|FpE7FlZ8_&M%iPm?fgz+4M|zz_&`GppPqXstQzMpTo;$V zE!;c~K5iu799-@^%9-rP`6&@wH8ifamD`pDFA53w!H3D~hx#Nx2|D%x>drwasn#$0 zNVxJ-QU@)2UHDoam`O4xmNW6sYNnF`1hdFgk-!EqjbBd8)QV4JQm;rQKXorOZvyXH z`)Bao9gwt`sn>+knys6gpWD&AmKBz7+R?mq{kCR-Js-uyD;MsUwRE|^T=3$ai1h64u>?1i%P=Ql6bIs?fNw|{nGA*9h)}N zYzY#uP*Er+gS0DDw1ce{nrYQHuU)f)jBn#MEvo|!J75$v<)SU#TGK3SY+1W{Q}bF< zJa{q-7n@twZd<>a&3jl1CfJAcKzRN+MC2QT-S%sHNtn$I9?DG& zp2&4Vu)Z=V+wHKHlY?G+d{EgZjvxV790A=28dgfM9-xH9ZLRP@sU_eR{6U%2yq*jp zd?|_G;)uysQwx{^f#X2POJRuip=>`4jm#c@D(RHfw-+QkVQ2?@AWz2^XZl3)16dyqC7X!dJG&3ibjk${@h6A=8@Ku zU^k2hWbAezdaB#;prme3_B&RR%U%+~Vq&|&T6>(&W#cQzH#lg(F?u0WOoaE@4 z4*EWzx<+-AsU?mu$Olgyop5XANriu}k05sr_ra`phmL{Et$7DWwJ0YbpdB1#9pLL$ zuN!600&!K6G)++H>&P20yv3fV=7A@7T7RFe)<~V!XJFb7jsh<^=IcHdp7M+X$M*Wc z@5zie*=Q&w1in0G^}!^oF%mdci;$QH$Iv_517qN+1~#5`0!!#N3F%^v$X`o*jmR#y z!j3qPEXtF@W$*+?*X35N`bvB7jBw6+IOr3SiMm>Hv?V&N9|cbd1M?nX2VLu-V0Zg# zVz5n!_jQ231osMyNko*d5LBW>|S<$V&F$@oC!NA}o2$$ipZRtQ~x zWQTs8u@Hnvxo@wRY(V>~Q~39W$wLi(i?>Js3H<*;fMnj?2O={3B$4AJ*C^?aBleQr zBE0OEy{>d*YHNR43rUeV=@#+q2gPLEf4SA5Fc%!rYI0U^}p$gaCfv7zpo88Vk>Jo5t=EMjUHW z|C)8I;#dZ`)Fj^b+_B8DgA$?VA;+vAk$dYGi6otXI1g=t+4i0SvVYu})qNniUx;&Y zRxx;E?ucI4TZ0e4dxSsarX>sz&t$!AvnSXr=X$I$Jxvg>-!I&2{pR;Yo9q5G=hd1& z&v~tAOAU-kZ62iB?83M3VgGiKx;hE=z~0?H;q&eu^$cu~ki}diWx+FERY~j(p0UUD zcwOgmxD)XD({y57ivZ6Fz5%(han|!a%e-O?pD=I|XR~}u6Eyw~JJ~JSS%^!aCz~IB z??T12kCK)b{3NACZDTX@Hv`yRPIJT~{879rlX67GnCxseJIIC2ih0^8?o3^drv0*)&>EKOE=x~!~ z9>Qg$s;`a7wcK&vqep8VJ^JX;2ac{fT4Vk6pfh--Jtk2^-=**6K*lKTm-GrsA#RISmae}2`U;?q)FCb zHtASW{-J;uSm{z}x|&6UfHL`>b7uCEaD99E_WynFGsw)jJm-0y^E=m>!CAO(_i_7R zAujU@-#Ye7JD~&lTIwA&R=PW@hZ{g&2i+4bYiuvtG{<=l=XlUs zH%H2FuFh?cEVPu%DF4;I&$%3)_s0$t0YjsSph--4KYpn9V zk&Uja9Mx9Wc*hEBz2gC^c!!0%(^6ll%Zc@G9oKEz^H=9uYlAe_H3-V_Qcp{#4-#}$ zL?rtvIo&@0R@VsKOi~HgVkiSwZ%0$WQ}0-A6@O`VuN&kZZ`SMcgrcp_)fx4MaY9Mm z%XPwxjhkMr6Y4g+RQK}Jbz6=4c!!qsK8S6AgoI0kDI3?(|!_ z+c!Q(r4ujJGB>{bS~zpl3(st*+x#pQNV-fDc(!iihG*+GgCe6oIbWDcV?y2Ltz$R7 zyve9HPJMantLry6Y`s!2_7YNRxzVyBGcB_t%VimFrhf=wm5;B7xW~+v`RJ;14&G*w*A+FqxW9qu~2|x%H)}&FV7p7D~uMV zOsXgvdZn=-PWiZ?xsv|_1g{P#vhyvt~TjXf(APo6!XeAsqvy7Cd6_-vp72;A4Eb9Y$8*4;WGR(?VBZK3xYBBu$`4`Pj*9UZz4E zXJoQx2nK~{fxJw0WHfKL~T^ zM7%)|ZWOM6dBg8tcohmpD4%+nFncsi%Y8LR6w@m4=CiOs)IIZ7xEhff!wN&b1{L@7 zIYRT4qUpl)_h9{CI)f^hBj6((5gtSJG)L7ec2<3+OXr$g9U;{XLXs_3PRtZ~VAbea zWLs$Ka_L~{t%jC_4l&dmYq8Pnue)-q6+t>>%QxEcd+C4LnoJiPquJswTxC_u2m@nT ziGX}6gDLc1v&zc1Lu`rJQU#I_?Fy;L&Fyk8&S*JIQ?0A4_5R6+n>?L9Zrz}If0?(# zLsu>6!LosfvSdiAUu`q}psbgY>}#yKbX$=B8uwZjban2vVR9_twht4#O$L)IzS5Ri zX@OBH=}pI7#!9HIzdVkEQlJ*}Sz|a^BnPg|l84eWR01r}Ek>j^c?3C7oW-?d(L68_ zFwrq(AkJ=+5-)hcSSA=SiUE_(MC9TeDTe=(6T9f7BgM<_CYvq%H~l1B zl)9-UAIf6A!a|So=j%2@@7nNt z=)2ot(_&=3Cb+HH`dZyH+v_%{iBmUkuiLuutvW%CPNzE_8ZNGT?Pb^-L6}=-g&Dy0 zq2`;`mTaSRf=a#408XhHV%*V-vQ4&Iju^YU8m1!-lsuuBZDkHZ2+TDUlnp@n-*!k8)OstHcf2r-uDi>dETKVhyxW>1}1r z78}cdC;xefzi<&3%<%Z^i#ThIwZ)suNd&rOLF{<`WX2rlgVtZnan@K@DN;df+Ft3V zF6%F>UXM@ydN7^O<+hiHDDBdHN~?5Vk8`C}F-R!^n4WKi8Tn?#C*9CPr`ZB!cR_-3 zs2~p}>rskZl3*;SDjrF%v^9%E=!7c{0rUQOHC7l8kfP4pTH-IP4gNBrOL5bjH&S5= zucR}$IOK9(*8r}-#L*J$rBFp_pt>FgYbNOrCm!a#O(59`RcrBrJgZ+Ee)h>N; zhu7mWI96KaSBAilOoS2g=bvO%!{}(fHp@Scj*o0e?`iPC93Ulu_7A0R{N-z`0Wh}9 zeJHCFmN>QUdhQ*bkLB#VI_l~j%dE0ISV(j(vo^Fnlg;mkjs;0Wh8%b%yX~jh{1@Oi z)CXiF35Xu{*?(b`x21O3Yv`qkPGK>zKJZqG^V;}sueXKY19k841V;{x8E#LuHh3WX zRW{5!5t*!B(D9)P;OOMd^k$%ZJ@mQXLa$;wde(!SM&mhmAOBnitr*n&dk@_AWbPD_ z^-==N7jYIFAAtKD51_X0$nh8M%mL>z0cgz5MvINk8ONXwcE~FKFvr@M zT{%A5w6r56dm+}*2|=Et8C^|Yiac+y7h2sHybWB+J9p(Yv>k#8ZC4H-@Ab*^bEFX< zE?cddCdl-5IO7L5NC~nNdU7ZKn+&bOSF1O={BFhf$1S4LF6g}- z&|j1$;dVMBx`zoeRnay~aK9@+A6HERgE6Ag3#t4^KKI0I&Xl2MP$xbT{_gGQ^kw+E z)Md`s1W_r*zm<+03aJ^CI<4LgK;7vB3rchI;{t$U=3Ft*YVQA&`tCf;Xt<$YF3KC9HZjGtA; z`s_=rx?4$ue{zBTvr7s8U7{{27}G&)#V(MJ@p?LCkH|q;;#kDFVqv!pwNoQ;5b5yv zS~{(tO3{m6=Epp6(j;!{A_KaAV0VKWr;BfwUY>U@F?{f)ex<7;Ppb>C8D%(eN!94M~1kolM zf$0q{Fg@g2ArVTo`wI_AE#5@y7gRCc|#AN>ztiZM>Wkl=lSpU2OQU?EZ zCtVWZ4ydz*pHrRto-ky8wfw<|{l)t;>7_Jb z$us-2a+4Fla>{=Ga~kHqNub*anCGF4GENFipzFuN5xy4XLm|#Zcu~2zU`P+Ft;&P& z9O1cwG()`DJz}R#GT2Nf1AI)N8Yb+$6Px%GznSz}`R``EUi$l4TPD?)LY?HgWZ5PO z-@{4z{x*4iBCLTuJG{czzJS~f3nc7fdTE-{?UCCOdX#P{Cg5?MbdW>v_)~XiY=Z!C zgEzh)HjY0PsPc$0oFOTn*i7HE4H~yVqN}BPFGS4j&gR0;U6`15Dr|WEgAJRXerCNe z?nea5cjZV^L9fP|@w<+apys)O%KW?Z|?o@JPG3LHdG*KZ9r7 z+Y9~zL3qYp@F#j*nOpEtgP?cSK!_@s(^r9k(ECshBoFjt$@6pJoRw+eyXdHL_hf0$ zJK$F5W%?MK-rj8$Hg4Y}OsRWm^IIFYzqAqV>EKCA@aD#8Od**TdCSNG(}E>y_LZ*L zw`Sji`&R8M<&W;lQ$|TKig8Kn<(|EH`;??BJr#AoSwDJIIeT)w{e8GS8a3(JP3t#q zeQwlLcF%OB(8zuNaXm&5b^*nvU-wj`@_;ht%Z za}fu*Ae&r}=n|;RK;gUnmtX0DjUR0IATGP@bfa)=KmRLD$;w=K2vYA@m8-=c0HvwL zOm~8sWIE=_w3KFAis5FbE#9u($Wa$FEsBw*sEYY+@L@bSph&_%>L$299(-q7@?tN! z#N+8{@xeHWaS1)nRk`EAXaJrhnw%?hzoLyRjo19B$SoKS8CLLOJiMPMcCN5)7t-jf z3McdqDG4-!2z2vqZ&N{B04f-`+yfewk$GQHtx$K!Kg|E5rv*AhQ=q|Tjgvb^fWa!fex6A{;z*egbpGBB!C2v01`j~NB{{S0VIF~ zkN^@u0!RP}AOR$R1dsp{Kmter2_OL^fCP{L5qu$-y+vh)Pn!6%#B60hO`_V+VE7?6Z*&Ubc&PfI} zg!B?9O9Tp(T)oHpJ-t@atNZpCa`dyqzLw4&pO~gQ{Fxf@ zi34dk(9z`m%F(#g^$9tv&k(EVGrV`*TYaVpSVu9W>ubU=mJ_xYhjExa2Q>CD&FE2tg3qaZn|aG!EEOZq;CA2rk4Fa zdnwu9>64F;gM)1`vHM3$=KTYOZf}cDB8g2MLxjVfzWw{X9s9le>tk-exuet9;4drk zx`a7xU&iECH%R*Tgv5N3Yx=gq{bfvbgAkK1wDtv4Dw!K&y&^|}VNSGk_Tn66a z>ueEUNaUVM)Fl!B)}{`xYog=5SX$zVxCZGv$4#VkDJTylEb)L*AEb&mkp{`IQ;7A} zdn&y&6%s)X+U{n{iXGn8!{Z${Tf`q*>4YIED-*gxg6Tv( z|9U%r3o>l(!u^=}0(qjpjsX##gzUEiRqeqB8+n=Ped@Z5)(ZvS!Vi8W3cq zb+0B$V|!?qEEM7bU+H=R?ZrZ@?)^lyml}0)B9$waVs!@-fP>69|@z@a#0-k%S}?VSiBF5xja8xm3rVol$B^d8rjYUiL}fWeUmTjTffe+Pun zk)a2Fu#a_jkGxmk>N3LAF3(AFR*=0(c|Yt*YUKm+_k@nio`czegF~P#_!|Zh@xMt19X6dkgLcnfzGlrz z6;(!{!?Q-bjX+}xR)d4r+J%lo_LI_E<#zmdE-2WpWI*6(S5 z4r*Z=B7E(EA?4c2$GEmT-ZwyBZhx-*S-HUg{kZ+p_5&d9-%2}+NOp6({~|wY5T)H5 z*==yNK)A_t61=LIUv1Nkg9b8t#6SIo`|dB02}_NbIc*~x_B24S6Cb3VP<*2;H7g( z$3Wp&g#KMI#qP^>^^WXB+FC5|dPi?tIyN2-xTwjZ>LebUhxS2`&ubD?yj2`fA-T>MI zs=cEcq$__m%s;P!fVwWGMpAPcq*VFA1RvEoO#XF(mrrLwwLjf7i14E!J6V1*LG|w# z^N)A?4raH13X|PU?a$FEZ^{g>$9MDXd@M^}M%&^!I!)1Z@LSf!4*3by>ycki0DZ3R z_oUeR_Zq32U62pcZI|@Ok`MBdsI^$I#{bp#vtbZE%zXNbxQJNi6Or)N*>E0Vok!{& zB>+D`muYEeEmibVj$)89_fAqW^NcQN?1Uxa@dW6^B})#%+9d3!jll2O`0NYM)xGxg zGn?yQ-Tv0rhUZ`0uxb6vzx(ZPK6nYXDV;t?d7{7k+C(w_5bf97^6$;fZ_IxsH$Nty zKw5rH?v1m>##g{uposFqUu@EwqHR|ZkmYANfM&AVa#jbl@j3d<_U zy5PQyF7Hy(B}tQEJ8{iqLLTg!L9-7IaMkQPutIk*-IE~BO>#bFYLH^Z4M_<{VLI`+ zjC9hTo0Qqm3d^yD|IQ`A%u-6%ZfP7$X?Y`QkAcykq)A6%(N46_CfBcc|Ie=EC1P*y zss*s4s2(rHPiS)`%e}pH4xDdr_v)z*#V9q%y?Uyub;&pNjv2)9xCyp)d%Ui=gRvr? zRqyyi(wv(P4(ED%t0qW^aG4;*!gah-zeK#sXh`l`LcW2jR||cq6}o(YV}9~@$BoJI(E;L*liNS{q#XCZ<pDX+Sdd#;p&NCvMAElEuX~X?Lgie)fWNU&X3w7E zy2eqO+a@U?x#|re;J(DjGTnQQ8(z@zbb>)Id=t#^>^Ux{8{O$f*E5Dhs5}^g`cVgO z)D2N>P1LEjj=R1F8#-pW5iGvUPi7wX?m15DvV^$<74g62(WEp6jqW_7Ar{P-zW?NS zYToxQ9Yud+q98SRdLR%doeJ#vR&$TGheu8}esVm%AR#q1@7qtlZSc58imoxD%OSch z6J7cKWw#_>4!G7&5Khx-9uIh~i!Gk?RD~lEecGGKNU?08AEDaoD*P_6e>>B8%ml=T* zaG7?@KLai$$NWWb33$q;7fuSqmrb7(NG~gcU}{;}q(DyD^eM;u3(Csid>cpz(pA$( z9&0z0P1iz$KvoN;l$B|rY{6DlMBCX=h{smM{@_a4}lQP z&1}zt5Y6S=GkVLfnc4l(jpc&vH4(i|IJUKR|FDG$}bMFprw!`jnmkh)}RH`5^XNo+UK zVpL#M`w$wW0`~SS8l(bJdj?fT1;$eWwaQK^pw_tnYSlZdWcsx7if-?Xa9?#@sfsGF z1tP;2>|Aha!EY9Rw(#?X2Nxb%=v|n-=$%Cki*8x`lf}0#er55ii(gy3^4_QKd*;4h z-}mf&zq!wIU)z0?rc8l~4iD6%s3B?Ebwfvf^Vw>W8jR0{_~}r5=&@Zii_#e$cnAtH zPHLe?gE`VPRwxu7dhBD!Dw!e-54@N{ubP$3YAO{!+fwsCNrQX-K8LPPtZ(Fa;s>|) zO@SDFI?(6Pk(561|80@4!xh%W>BA8WsRX`p5Mr1mP}G6O0?u)K0*0dvM7I&QfY~gX$hsf z(It5HdOW)(dVC_>PTlYI^sLyMP!P8_uONO`(t^a2fG4RZHmNvJnh2$;p^UuAQX25c zmNZ3ZgmVKtt~!_^#k+bB8kMX@_X-`m9pA(mh)=#+*Wq70F>PG8>6<-&{caE4A;Ct> z<1fF%)GF+A{C3R^ZIb^}w0zL{UG!UxraJKw}Dg#kiVL(hup@ERt z7?vIqqtWS9tN_GdT@KdJ#nMA!5QVj$p=lhb230h>25GTi!CmRW1P#ruboMNeu3Ezb zucWZmOReP=lB&iS7A-dP*jFSKO2Bhm5?2FVxDkd~0$d{wh}IBdVktTz5dm(e;KULJ zXYrYQ41YZ#QwpcV@{?YLm^rDqNH7xn z`(^%l-T_*wFOgzg8|5RFxz)i_LyEyac~Z3v;--^c8{gtA zEH@O1*OvR|jW1WWwJI;Q-B&5g=9o<{w>?;?=-M_^DsQ#@sQo8ANW%fJesmYi{fU*Yftb z4)Gn;+l6);Nbi=0JFh5L(p`@Uxz5Su6C|7KFPhiXC8{RRz#7vPKBUfFtrKiN_Y(XEi( ze0&nmx)=Fgl&v#-$?%_U;uAT4+5WzNa^($Wf24-=OF)8tB_2WBaF zI4#Dd!M#59t=^Hy%eN+rU+~spJlyys@nT$tmE*q=vvZ(!^^O=G`moi)i`S%CGkDpZ z?3|z6&}PjMZ%n?d?Y9}SIKW}x+l!lT$&iN(5hoJ=xn~Fkympz@&03mt!5GN>^BfSRVoS9_!=cV(DZTHyV5fT`+TlkCu1Nh(` zmH}W*JpT>I<@ZwN%u8ns?}+6^U5r-o5`F0y!z6u0nPAXhm*^+WC<=`a05YSu6o;0n5xODOjLu6+* ztwI{f0KZ*vj#C(9iGF=>h5(KN^cAba!2jXR_7#IcrLGUsV1T6}8 z019xlfQ~<@w!u?|x%#4VVgT4M&jm7||2R#21GK(K4*KU=cz@Xe2v5&~46Y+b{wiDT zUO&kScQ25Hu2S!a=fz&ZIz;Pa(3}lzBL_R;_8A3 zIfJ1O+K2Ga4J&Q%JbAP{Zis*05Z+?3SaWFqGng}X3jfDqGo7&6Sa-_d!4y;?p65Ss z#`6tQCKQ1r)(6{Og{LRrPaJ=lG>~5fJr#PV-Nthh0iKO_znTTz&KU<4wdR1;{9f(^ zts8U-&Ccw*)}2yZNp!?GjK%C^z62V-eh(!*c_X*!B*)E7M)HLaIcD_kpK zLuJhn*9p)8nm-VAgZO0bJ*wUItQo3jyBFQ|wF4g{cInxOFlk6%-G8;j{WbVsY79YTKw-OdI@?4S{O5s;H zQh9?OG*I^wDG6J(>4c{W#_(WTFPrIz=axGSI;!=vY|XBhe-YNiFAT&wkWDFow5MXe zeIV}<&Gd<{m`0!even9>RZC18 zbGUeczg!su8D@bWqc|X775HJwWe_M5_`yoPFpzT!yoH-hdlf&Nd!Ajhxx0n%0!sT^ zUbdhwDl023BQTPn_i=v|{>!XAI6G+2312v9en6(GYtj6VvU6?E7+{%El?f%;p; zrd9U{o?FMPG-<2Av~pp3>7*&sN{R)Mgwx6=&DN5p>$U9CYpBFk`blL|<`hjTBZfKp zvT3kZ&nzpgC@QRAlU{{TRy1kKTrE7cbXLg}0&986)Y7sUlY$~s=~7=#S7&0Fp)Z*%?Bia>%Z926YqEYr^_fq=tVs4p!6huB`CT-`}bq5B9mWlB+b#k7)171K&f z1eVOU#dtyjNB{{S0VIF~kN^@u0!RP}AOR$R1dsp{Kmter2_OL^fCP{L5NBY2ta*oAXVfN3fFv|mpXCa~STg{%{ zPslz(h}ipy_2*{$0uZ>>ycn)F>jHC^{paQef7!96W|8cJxJR`G;zUQToIuEKGK1vN zXrE*GOSi4~?E=s8H*Z_<7F=GtZN={vctDRxNaH9i&^pRvQIonup%bG#%axja%g5ff zV(bE&XZhQ$%S9c5l-yj;>D<%z5;)yQJg4s_r){VI3r-#bS=t~N-Vz459~yM*N=saq z+-vRv9R+cE2vx=DCB0l`;eS762H18bw2SQ~{~ZJTWqC0f#y*h=&2ud?=XQByyQRy+ zq?a~)_^@T!$n-p2;zgW1KKo`fmpDPLvE*7eo9`M@=V_ZUy^CfeGl%(h+L5YzD20VctMaa|3W)kqUl*&^Rn;=QnrMdTI z1mN!q{^R8hrzWP!_hmXanO8NOa;EjjeoJ72dvsct{9y)EqSp+Wx%s2rBh%dfow>sO zdSb3&$3-eXALApKAL!jo(`Z z$y8d+0qMt?bPbhOHQ3)YL#`@K2n5%xSyO7D)dtr1|n*gx+Tv#;7_wiugF45W$PPEH~j9j3o`{Il9J zEtNK7^VC88w9%2u`Tz_KT^j#wxD$Bfp_#@hr6narMdf3Rgg3JIwAn&Y8APGi%6lzx zB7xKyP6GW#eti&sG*iiHRfbA;Dl-}_nHI&_2&b#tO4F4oQmRtkR*|k0N!KWo+hVgl zvMEkJYJuWIi99{ckN};w+9toAX*%w@0=i~HCzn9{WgUhDNPRBDbdse)CsG9Iq;hL3 zD2m~Cf?cpMv=Nk9;MkX`Tp@9aQ8FrmptHz1ar-K5{NG(eL81KLnP7sKL3H0y`NxAw zN@oaDrxjjRFD`s6oKL9E*GC}*9?iFI85*Dm59ha8V{W8pF= zP3}#UXC_s}=N0tGZ3)HBwHe!`K>^u8XG2}R<+YP97b?Y z7nej}mFx0!j%1T$hX08YYXL>q8h&#o>GSlH%4r6yk zPbwVp+nIqQsSP7`b$>k3{k0`i5gIN0$(qSSe^ii{XY4JU>?j;{X}+_jcqjy?jJotv zEm$<_M|o;6KW`KW_Sr>X1PT0aBCve;!{mkG3!%zlOdCw)E4H=0He8G$)_Ei3v~1Xb z`{&IYk>L|Lm<4WX2Z1gxEJ?6SfDLAsH-k$ji|zA9*gzaEoQ24p=H+jDg&5yaF^MUe z8=)i(l-#T;$+##Lqo}Z^+eGAm*+;DmB=VQ$F0b5Z25&zF{kwgliG&qe2{^o!FweWZ zi{1ao7OjLck)K!>aZp|!U=~MTSn*{!Ofh#J#YH((F&C+L%!L&{swy_0NAdGau{lDq zJi@GUSh217%^dl=9QX4%P?r^Z$8BqiwX%?7TiYTvboI98JvlPDgC)<{)^<=$F5A{N z!^YAowza)))0E7I)|)@VK7Rykgn%$09Voyw4QcK{f=5)eUSSrsUSStNh4po_m_e*t z%&=LozG9Z`W=OP!Q=xn?l_usf(TGGQs-{LL;CR)8=3@fY`#Mz$X&I4r!WrpmMo_C* z(yzps8Cr=5i?(3TolY$Wd#=*P5wh5$RX9uRQ{kZ6z7>wp8Ln_dVnl@_6oe{#SPa)o zt8h>(oYBwyGb$W37tZL1h`M~P3hQWvVkr-x$38Bwe zV`Gd?0xTn9tf(1_&N(}{134jUQ^4BNpfv!mS$pCf)W| ztj$w88&jGV9+iFTHn4xj#no*pSetF5B*7Xbsm_WE&S5QBw==9=T-}Pn+K0><&nDl! zs+pAjzW3E;i=4Hg+ubxm{4&=1;}Q0oU`XFIqRal{5isW;GY>u6Ov|~n=IA#Ab1`JG zTsvGG)lNCmMFM8vv(DhppH*+48GOsoGiGo)=|}W84krC`x^l~zJ%-7vE`n=5a5K2J zHFLx0%y@h#ED{%TeeSS6YeYIMi2WCz+lQU8Mo`!L&Hf?R`&TLGdVl#dU5AyIu8ux+ zZG+{pldh2;(Fy%9tI-?7#4#7FQSNY7qkiW4G{zOfX^kQmCsFNfQ=lwN4`=kYz9Xe? zZv**$wm7IV9k0+4VXcl>_Ff%M+og86M;t`x8ZHny%_9GoS-#f{dlxpiwApG@J2wWJ zd~`cE3NB;Xx$EJgjdnt~WVWu#+2+y0^dezqS!r?Eq!}}cgegVk6=kyuD~e{7l?y_7 zkx+Qmq_W~7VKf0}IAgd}QHe04Xh!L@vZ67wi)KxmKE3FAVdkWYX+5<#J>n3%UsihL6I+6O#+oW2ts! zm!*ATH0jv4TK=gkv;e)F>W+x8;IbYqrB7C$h$cJkN{Kfw7ooK7DYa2#-m_&2w ze;0X>*i=)7IWayVjr=V3b|Q|HMnI#+KKQH09(Fsv=99m)t$XPYHCp0-LlZ)34j7{hxm$d4s zpelAvVsfA)EzumQkLvAvfJ6O`Az*jV+9y{%@x-c9W9_e3Jqj9)eG92EjSG#KAAD@> z%2i{=n8~Oyd5%k&Nl_rC)WnoDON5+S@Em85Gp|~?YW3Pj*FL$n_EB2rG;%dPm_BPr z9|>ICv2fwUg%@{B3tD3(zYt~q zsZq9H6=nN>in9G^@4usMe{7Wbe;sA}=Qn@Bf2MPR;ukKjoL|F#{Qh%Cl)= zTM}jd(Z2s(7UlX!d;byb{nu}z%>Rcd+y8Zx?MHk5%ZhUSqy7Hp`zY7{hA7*AA!*kD_dUU6k#gjI#an zo4@e;gMYPrwDY(Lu1KYkzO`bT^Jc}JA%zbwl3YolyG+W-D#L6qzNt0>$5 zb(HN#yZ=Y~{nNoH^S>#|_W!rfKheJbjP~=752D=v{uE{V(SH6C<>$}zgBvxq>i4iF7}nR^m{wDduTvMGBVVd_B9XqG;r{19`eXX?}D)wlteA60Q@Z|?-^f8uLS1a$kLnQFglgDZ^=*P|W_HJw2 zdMEqBNjMcgW9AceA)(NB#8`oAw>67*%6C5CzUX2;F%5LpF@x~+G4@H63mfx^8E2G= z34gZ77f}oP*|jwIu+n3-@G+;yYVCEkHftTdKm$a4evN)*CWn62CR8Dxn5};0CWE^Y zK+mxr=_71u`G2h0n{}a~E7AKcUlRUdU3| zSJv1EwfWW z@xFE+{DruUwi*lNLKda4zSjOsEp#y&ezsN~^>fP3{%CD(Ziuaa-m|r=LkF|YnRB*` z-AvoLbIxjq6*^lP=9}$oIjqQea?YBisykoSS@Tp|wzK5fpM{ouwiYg2W<-yrLpRtU zYGB1)^R{Ma8u+jojP?7Wf$k4A5DTr?o3X9A^=>*R&~Iyj+;h-K;P5lGq3Uae=%_Kn zsCkZcsb=E>@n=jfq7C5#RjkuLSL->ql3Xg~k!Rkgbru)}@`MF+N`Vd@G78mxR~=&g zQeRZvgnqR(&iXvn9>D-u(BlMfZQ*uTB@X&`0X-xr@!5=bSTOa;GEYMQDQa%sn<3 zVk`E(v#oi_Lh1uZXG6oXnTd_O^Oe20d5g^ubmD0K+d^?JD4$DvO)mWuWY0oajC}A{ zOXxG3sB*9>0R`>zlFg$R^qET3lKn;OF9zo+`I<#;z%-O_1K8)H#8_h8WL6c+sb-on zFfxNV0vR3^KrWrvzNAywzlU{hkhO17f7TSodE4oK%DViX=&)vsh>d=Yn0~wx))H7& zeCpD|`qS88EEl#9>Q_rc3*llh@622}P0+p1OSST##rBtK)vq)|zy?Wh;e^=mFrgiu zeZ`puU=wl`8v>hZL9u_{qqVTJ&;r2@7mivt*J^W!&H75MeRC~*j=dIIpRNTqn^uLO z&+_NNF4^|RV)@D%_qN6EmWZmd-d(czLRvx{yG>!ASp-L?X!|J`vSU@B!Bw^=3cDJb z*Q~GA+BZRGkJ;8d{a*WPbi&hCJ?Q5!?kNNJp!?|bc`@2x8VoJ@ZL9Bfzs+>cB(TST z9S?ZK)`O7s@KmmDA<9;Q3*ar6tA1HfjpRpu9@cxWJieOp`s=;!o_oVxBgiXU1zMYH zVY-B+V=G)}8$e~?+P@{}zT?c)fcmvP?GvKz6?ds4+WLB}y2)Z&iQWEruS1^z8{rk5 z?t-DNp`1`{xfj&=bW5%L{C)N^^h92k^kzNiy(P?qfxgR+0UU;f)V)t|mnks6!-w$8n4wU|X< zLoHh>*)AYrRcG6J?hy2j@SYpK@fTX9VcWpmnNcYUFqGh?qwl_bu_y+U!}l9757R|I zxaz|^7SgAwd#+MUQp*8u@Jvh&$F|nO5+iT3Sl_I*zsY(A?VfNi(6{oH^iBzG68eZl z*1Rpgimni#{4DCW_EUFB6;-!2QXPo&Q8$~Z1MkAOKJ4!6(wf>u#xnqHOAE0p(|cq(eGX^GM}3^~&#s&W`}pPp4Y^ZdLWjCM2V@3BjRy%xF|Yph3?!o=i@NM*}{)`#i58~O}5o5Ntv z*SbCAT~M^o-EE(8bcY=p65){+d3Wm(@1`?Lc-en?nVJH(qx+VseVBC>mhRJ}0dsi0 zX%?2*SHtAa6hYs~fWZn|?roOfZD9D$1}Nct>3AYXRToT-vR!t#q96Yg8pD*&?jM#0D^Fd&`c-rJ_&ud z7R*vMxE@&@@f4v3cddYu+Q#6WT6p#b``z&NlW-8w>|j`+jJUIx6e;gw$o9|MUd!65HzMghn#6if`0MWK!y5Wz zlI~L@CL*dKgH1mVLBl*$Ykvr)ZT+_9VGqFQXG>9d4>auoc#i3Vzijj+X`|158%+jL z+T>cGkAVEhYS<>gtQwx>p-V(ASD{%|ThjrosM37-f&Mfh-WMe-@NAr^%OiXG8pH~f ziLBGfv(#xw%~|Vo1x>y{onT9B-NELZb8q~^Qyc4R_tr4c9dw&C4jhI6v?A?h^v;7N zJ0g?qJ7|;dsD4PK+{b^aD9h82YioRBSjZfZC^#Z z1d|T0La+%u%f{@o2idb;w$IB2BOtRpqdP79-CDg|^4e+!ZX8Fkb3H6CkA!tw^goW=k)ExGZ ziqZp9_g&l>t>!II~inWo>g|z8L~4#cG6j8Z$CqJHpt$7R@nh(q}~Fu#z`3qH(Ia1#|=@FUEcMugYe@FE*t$to9e>$TO8*S{tdYI{fGzYR zwbsV)i-kt^V&UU8aA&N&CiKtSO7}$Cf+?T+*Gx5sO*J!9KYA$K_5Aa8Mw?Vc3c|NYx^stZbxBKxT~Hj9F(g_M=}qK4EXX0i?n z^BFuXETl7;?0Q6=^au>X6?@~iHDCLP_yv19NaLn$%|Cub+|1@XI-|kEzu-e7b(I8S zY@^yggU(WsYbTTn%~`4kpey(fANp)U1{2tA)8Bf7J`!pMK1+Dk>=|E2bS96t zB_JcbpwZ47?uK>ySg{w_h5cL{{9~lX;LKtOz66HOF{`9Vs3@HUKLae3&z=dt3>5y? zGk4X>caDG`3A!$3Z2N-tqIUZK8O4xBl17rqbusYEF(d&}w#Mm*06!po@vE8K z)$FK(b3ZXstO*A7LH>lQMg64+$f<%Cl2a{3oT<^i2c*nk25yKjbEeTVQzFD8f@haI zGgV6|0cSLy&TuUvff~?CoS~|J!nx!koMgds$wlf5p^ETDON;PY&gsF2`i4ZxD zH<7-mCHmwf*q z_tV=i+Fv>p56Vs0y}R$Y31(=LYBc231p@X*?WgY}r|;FBww<=gL{yB;rflAFI%qaH z4$n3IgK`%d|3SH+K8W}8J1C)EFC=$?YK5}JSQ=rq@e$?{F3m z_&FSlA`&805OAijzZ{SZ9>J^-pbG?S@{nP4*pF?i%uq(PEzD3x z!UQ14g!Elt{SV6hzdZiK{o~B~(f+{>+HqK5a^Y+(2`<4%kW^$tFA0kgqD3@0P!%q5 zHaXTOS$Qg_Hpv-s;8NHGm1CWonqt!h%cX_FrqtfAC1_b{ZeKaAM4zla5zX%T<@#14 zAj9&`WtR%UL1q5Ka?p;{iO7TXxRBjo z|LY^CRTfIo>^@ncNLVJUypJh}oJ|I#OA5mqv%Zm#Dr)y)4*uO@S53U>wD^?$ol5)D zcANESyW`h(Pe{?l1_T$Tmv*0JnT27$n{~6GX4Xg8iKYa1 zg?&?L&Y3A^PrXPvI&{Im;K9~=EyCQU%IOjE>@2a!%zv{Sb?@B#)PYKAX=eLc54#;o z|M$q<8q~+!I}g90gF$%)FYHz@8p8W;mQ&qh{zWz{Al0z4P{{h3j)nbUp?=Xb+z%=^ zhup2fX42%ees-Y?$>0yjRaUwK7%wF$F3F%wkYegRrxOzGme^FYp86pO0=Hjq+~XM^gyLPCq084HLICALk`ku87fFi!V%my1T{et(>hr_tG-e}O`cxWO2C<>g?ykwaD?Ov z+3tkt?<1!=7?M*VH}VsBrLa zFa&WZeonbiYlCN6gHa8tf3(s;ePO$5g9Sx`!c-1&LREqI8TAP2(%LVQGWCNRQ%^w$ zsPg~Zk&u{1bSW7mS)cKrGjd+dF&QLHADfa&EUAVxkQ5b3xZ^XMe2ZA{lhgTR`00Ed zfoB1lj&c&0nnIn8Pc}>&R=Hp4{;eSxZ(uv18NQtn|g{ zBc$n^w*J|Sy5DX8LmgSYgZZ~|#|yuHX*+njW?kI}|E$J~FGu;u>x?kbKTNj#Var+C z|i*uY2xk^3dZuo>}!j2Xm)pj#+zR{f=L}{P-hplhseIs@w7eQCGCJ%H`dYnA5hQy?%4789ZcaYyc{&Fo9e4RGWt8vYXV#fC%8@rJ?^2^MbjEbylA=+U=ZzXy zFv^iXYAS?(G|EvB%7lbVFQ?MXlg5$5?Y$pQE}t~JXi90xHAQpBUY?g{{MU~YPrvx_ z>o2_caX}m*I`XS$^5gDFA7#HZZsdB>`!TZ|8>b@!ESW>}vBW5Dw)@ zTSc;u)9us!EjB*@5uUd$;^emy#cq>9koTp6pqx$ob~%xFNKsi?X_?W|b)#)|*U?PH z*eZW#xA4c6n7la0kxM*1&LfvJG{1C7Kryx%i2QD{dtqX*1>`KE+}f%Lji6g;_Y5z| zoi-Iu2vkE#QARa)+AW#NOzCs^fzj4WM|Xj`Wp7I9E~D;R;(x=} zsafjqww}o1eG%~!t#VdwtIvMvXqR4|F$S(SDDQPS!A3Rxs~Bya$2imS^m0k1M&Q>@)SI+wCLJ(0}G3A!gJ#8m<5C+u)dK&plgZ#OEe|6dVt97 z9xMBy-Cu_4=bccT-9QWK+&3ZID|~>#YvaFaVJ_trSQKYo>PTPH$dQSA^GXdQ(ZYY( zyby0ea>!^5-0SCFLMA?GI9Y^=1!>DU!jSPLv^?U9rzEaa0Z=0o6Ldp*szlV z1GT~*^twxOTRKZ!0(2mQo->Vbmpgh|e4X`DmlU1JoF zl&Q2ygOv8ROU5d#5cx<-bUwi~oT?uq#8=6m8r|c^PJrS(O&w1Ie|IkA8YELyN~ZXm zu{&*3CB4lkd{q2|h;VwKaLWDj zG1(?Ht$2uVe1D2=e-)(3y@_&LLJ#P1KFZl^xyt=j`%44wUfz18=f{oLel)4|de1Fw zbK1-Qc%A%{kBj~^4+=v(}(6<_NzcooTok;S5- z#W!dHB}Su2o6j zo$}etQ_HXa{F*k`xJ%|uoSUkg9H9)&m@va{hl8EJH+`?Y(2_mYb*8yh&)e(XYj3+I zrEN}OOm^y6S9|NypES3wJyClmIIOVst257tyI}hTU+wH1jvRh%-n(|s+6$JiyI@5g zh_|1pMN#vNwyX15^V+S;*Zq1$^V;W@ulpT7wl80|V?{GM71Rgv^qV)XDr{~Qd7Y8l zZ*Y6KZE>Q#ZOQh%Hu|@qZOPMn6ZR%7TF^E((M|^Ocl!mc2b+)YXd72pa_s!<=G$H= zyx@*POYH4<&sy_xq36x`UNaVqVzuv557M_ z*)}}hve#D_v)8qEY+)>}uHcB_)uHyn7=Qb-tDECPywJ`I?R)K!!Y!+tkLR;_KRW;X z?DNk*{~+{bV^o43h~7)0{qe!kMM&{MqhLyN`s(3_kGD;Wv9~RbwR@TU_*dR|dvn`( zWXz4Vd*bb9j(M1!^Y4!4ccfwv3y|0VWz)?eeuKd%TRk}M#SPNcr%iaFBkv?IzSSN$JX+p!}%Xkv4iCJEG7nT|6Do7wPoJ3Pp3VV?C3 z?n{~Ho(9y^vw>eXHX#4-U`s4ZFK$48IoRq}S?kStH@RcFWbYN()-KsWksaG5d!NW= z2R!#TxUI}n$F*%DZJr1D{lomanO_?kf=@j}M!}p%-tjc?%t!fk3%_n{a8G5P-|+h< z_;nk%?}H78TVX>hat@-~>}Xqb_TEwIy`z+kqk=!XS`^2aik}{(ZX2aMJt{cw z7Ex?96|1Avw?--IsNg#_qBz!6{Mjh=#3<#nQNhl8MRA;|II&obD^{M{6ny=GVB9ag z&o$^ay*WiauUHu~+538wy+B8#(E(Bl4+5s(mS1|`h~jy3igHo0cO&sUY|^v2SiQbj zxxU!D$)H9~O|i1M*jpzwWFI8=xRQC`9&q=|hX>0_P4@gdw}<0ru0w0F+FY!(76-ri zxpyB4OERhcv{)T;pMt-imk0#R=zB`kgc8M561-xX_f^BVoD%itB}z_7uw}85T-+1v zl_jdbM5!zZF279_n;Y%Q67@$V%9SO-&sK%?nj7ZlC2CCx%7U%;KuhrbpOK=s4FmR+ zsJ|*v_LNXhdAlKa-$gwsNiJ4jF9BQdS1WO)p7VA?PjshB)bqf>&L0 zjygF?)r?ZbQ5yXF>M(^FYG@o;N*a?NAc`hJn;qcJjJpDIi`Ijl0}Z02fMp-7UXf2- z*841x&Nem7?WO95Qe{Ia)$ve+QddefIMjee7xDbD!Mn{sqh!4Lbg5D@z9%W4l&Wu) zDsPo~|415KCJiXNc9QamUY2PpyI{1cl`0pE_8tJA_fSK2t9y`%z%^R^xJ>!DjLbu{ z!F79sa_eZJC(A^dU8YVOtz?%OvZ8zU$7LjD`Dh5Bz{4fc&Gs-zoSJZg{Z%Hpua8!L zJz9BvwD&huH*?vSqt(|&D_@R=h2BR+aqvfl2T>QDm{K%I>OC6tf|wf3`$U6i8i<{0 zQrU-_+ow!fGe*=j!&F>Trj9C8YQieJ)bt_(tfy823fGq@*O!rx2o%uPz|+u@Zqfqk zMlPv`dZTRTcW8O1OnHa25YUDSx-pXQOfk6W&YPHx!EPl&c~4gR#;AE?6yF%{yA7@0 z_ZvX;E+Nf`$@>ANxm#P{=NNJTypHwaG3qZSD~rd7rnuEqx7ECC^%&)iaohyn6d3G~ z;CBmZ-rKV_^sW$d}Tict@A zoqMS37-^$k7#zCvCxhak=Uwto&-)GDmIluU4dnLUuSbUa6#6WhqRHq5=u_v616=D9 z4cr-95n2sXMV4-@cPsMUThm+JeGsuKnGgO_343{MP^gMk(~e4=1(xfA2mmT}67anxqpL=g0D7TsF!O2y;V z;_*t%c%sN?(l7XKozo3g+8c42Css1yy_g^EL2W4{E8cJweTx_3Z|J- zjb@+gKS`|~uk@cJ#0cMoXYl0>qKH0sLk<_bi02sPapCf?3qf2kBF;Qh^iEJe8?SgL zaQAYbucHq42^-%;p(LuHyRF^{Wa~DfGcTVeO;9IIP%fIt9UD!`ofNYzgBJb)@JT^< z&gs#oIFup6sWH#twYM5|<+0&{a9#CA+c`mPouKR#wb4bGS0I=JV_fEj=sc|x)IUs7 zS|^BbV|J6wiE6?`C3B*wgLBoFnq=HPQN3WIayO?F+Y9gW82Uj}?J!Q!jF!V>UJqVB zQN4bm@>v)rz|s{XeH{{Q_Zt({Hzq2-o@lHqx~);xj3I(ICISak8k;pnYza35LJePR zgzYjf=;9`+ag)%rV#aK0G;ru$hr1xQ%A%GRxAGL?6E7QUO5G?@Ms)ebWcBJv3c4xQ z^W4$Q{T_Ck-SzoN>gGwx^OKBKO*9}V!(!_BN$_T}&C!S*8q^tM9pa;>AMdj{jeJ~2 zCs|KJGEL4gRD;^th~d)X;zS-}EOw%MyU@Ko=-y7=z5hB%{p%#J1Nr@spM!h{&p$Lt zJv2#-(ajX;pKEA#rypo_&&9mOo&G*wd(y0?=j8=9C8CC8Y?|=EN&6?<>G=}k!3O2a zD@j6R)}gO8XtognPplSDx9By3KGngHPA1TXoM7OK6|utU8GUoZ>P=}hUgZ>Z;1s2D zifCu^N(MuEAo{5+ILzko>DHUEZX`~SXmafe#C|9hzq?%@STy!FGhY5_nptCsGm*o z4nh7f7<6`bFkF@f2N8UL;_^Jc`h)SG`gqAHN9Xe7C9kb`po#LvTd5H^8 z6)^YM55f{?EdW71e&|YmSQ)nSmCHxEOr?PSx9lZ-Mg8uo2GLi-Odr=<*0j`jAvT zO|71$?3{*dv|h4lsA-s{?u?Z2(D13gigW7&>{-5|5G(7c+|=of;f1lWvX0EKW;S|f z(u7f8-@_V8(mIUxp(%LkX7!$~4xg^{o-W972oSYTJ&TvknjY5kGGBn}oR7^?XH8cg zn*~li=kn?5W3!aYby?;h|Lk;i-E`&IbI59(t~PR6A2&o0g93<)VyTN(|G{+igXzlK z)Af)ryHRPOd(UhWEOfLHHs65BJG+sF2<+t>I}4(O&q_{3_8ScPNZ6fY63%xs+`oJ$ z8nYkIP_t$#Kc3M=G_WV7q#@D_I&7O~sJG5mHqY>$qAsg9kzV#ZFMD2;!PU4bP!XwH z-+_s0%}==YPjqtg=FX;>sy0K}G!q~pA||r*k&n=R3^r0I^R@%rL|m|?B32@1aJc3k z&;_RnN;DEbPvVif1L_JUJ;dBEv(qfoRPdbIb5#=_Z#5rnUqr9L`Kxn`DVCUd7+KZ~ZO z>t{h(+v2H+C({v6#CBElG_`qJbJz;e+fY~Y`OjOk)U&gcvm`+5tLeB#r-f&VnGg>3 zush28N0>x!r06tQFtnPg*QLQ|^8=#}AGI(M!$3Qa2cnCOQH!Qf^H8IUQ6n*hnloFS zGh0MR<*Odycxbk|X{Pef?64_Dr~7YcMIl<>Wi!w-^ywZ&qZVzp8O6c_Bb`m}mzP|m zPQOUG6~D`ny>g zO+)7^^N8h@9t@pnEUUU1D%Sj1Vs$Igw;7Bv8^W8p@XHLuKAfx8%~L*{OFjLnMrBq+ zuL$yJ5%X|dJx@)Ur&LGi3>3W2o2HCVHFBOZa-KJ=YSKJXHEAAH(Nz2@+VYBw*;ma| zubLNKZ@s0xSMd-@O&68~*^m^4QN$}?FPADljjb?he0NEdwvKt~p?T5nU}!TCL^>+2 zg*7M5SD%`%B+c)Rv>Bx$PFED63!`LKfMvSTt@PgT)O_{2`N~uOkdp?gZp??~k$H!@ zHcrGbM57|M7-krDi69ov-ps3SrsD%vSH3WZ08F198B|c$0~gI@OhE+Nc&Fw&?*^~1 zOw4>t)S`gTP|sBlI^2zv!3xpU&Ex627t?t9?#1CM7<64`Qi~RlW>$_l(aI7BgWj9T)89djmpTTEh%A%`y^ z_$~(g$=GN$^Ze^vKrG#E5=TY++z3ZShO#h(ADMyyLVV>yWy507wJlzTf&OX?^b7g& z)V@HqFKF&2z*v9iy<*}e>dzJ`6EC4QDB^?OHM|Y3<89E2bu^#2>D13IREJ)oJR1Q# z+&+9wA08p2d4^u1{&}G?^pa>xxbGS)qG~2j)cqFP#kgzq8jLg(FX3zZYf#tgP*<_G ze{iAtV8kc`D`Rr58-M*J>O+?(*P9Fx?rT0b^(`Vg-y(uUtnO~$kgV*%ExSxFqE>1H z7O5Xzq6}Ent=a~QF$2ad)o5g++6IX+=|#1Di!lFbTYLkmy)ryIeex3Z$sVc`K9Vrx zh5^x!CyY_+$wg|-BIQYwjRFz#fh)Z1$wlxoLPQ+6-oz1E#joPP^{4#4st1gsPBp_P zu+a{(Xt5f%SXo3q99{)+2Z>?~ACvazCQ*dpb5kOujzMRqKLu)4Kuw&T?p>trUBu5$ zZ$kbmj0yru4c@l$qnvC6`gXE{W93XugeNjcdSSG}rw+JLtPpnX)8Y2ZQIH zo_RKixnLAS6#VC^qoFuV`j26w7BKQ=1)%%mE{d>H(CvHJC5k{7@xAbfQWg`P`jOS0#Z*ls1? z!@m8|_RZ6$m)-5_S`x9ZYe~eut|bxsj1mCTwzv*}Zvx=r8QWWzsJAX@MjQf)eA9Kk zm_l?(Vwp@2u;Qp}-quKext;00IExeejB z8Td7X@yokh&AS}R+ZI2F{D+bMNB(?D`sHf+<;n$D1eY)IHW=t*<-zA++1`8oW>I7nc$To8NwVct`rJvK%fF${>kocAB3obF{ToU!83B7{4QG)jiRPeu8 zzpfSYz2|4{A5tp>poWHKG-2@2Qi?`R-1i@C431kaWcM-+3twKT_E|;;lDv7*okR@^ zKKbgCPnf$GRletjt%x)%nnq92hoCplJJw&Nesq=c(N&14y_p-|hTx}9?sDAYNR_bD zn-`}>T{O0O@254HdoMLvY7h3TjM9n5i}KM=&qFS`9aPs+W2Lo>Gas(7KG)k2+QKcaqDt*>vFN5-W+6`Y2v`U&s*d(pS;NfjghyH=k4RK7FAgs1ztnNKw0)E+h3LKA*^sQhM;4!jeUZd?2tRNx6z zKpY5Mc(r=r)!cNP+>5aoM+qmbo^4#_c0?#Th;q;YottIow_^C?4+(68xb0zazq(re z)z!hA&G@2&`_n``?Mg23seV+7Lsri-TUX*n0gcww`66s5)Vg!kjusI}K9wb!`QqqcA#x<-BI8fE`A-e((WJNem0x~C_j z@Gvv)&U){ARP4mwLQ|bM(0ND3q)s!1;S{)_=_%#+9E)9+u|3{>@T9(#qPlAYt+-cO2XWixVbNX zr@6bYRX9{FNB z^4K-%v1>%oHcql&gg80{^i33yqs~XWoT)BasV-Wn+`dxK4MK0H&cX#mH(Aq4_4buY z(@I1mdKh+lgGX(odpxp=hiFy0Y4+};pkv;sd2OZoA1jsDR?-x8U!$NfKW+QrN_E@YMgLDj^U!~r@O1XWN5Xn9Kg$5DZ^2CH7{N*+MOQCR-?+euh~J8O zb%=4m^DZA9-WLZU?;@PNk8maqLJq7_53JI+1wFzd^bI_w5MIsoxkXLAMM=E{UQN@; zmm0*5hzKkC(+6SVvRl-$Ta*eS1|{u@(S{=qKKO=WP+Qv5isl1u-k;1Xnm%Bo#f_Lu z@D4Q3Tr7}Q+@h|y1uGi2$D%K1#MJO3F0Dn(9$-i0D~92Di~A6^DfPGy@MC(U z37BZCJ<^;#6fGyVN18NR<>?bj<7p+n0N7{F#-xO2V|ElxZLB3+=IqGIgI53zCO-A$ zwIRA~@kaoyB|NIVa*O)PE#xR2hP&`6k6*Vi)<%0dE480kDtyf0{4-tAB4Q>WCJ21| z#EB$@Y5x6+ZiStq5P`J^&TmB_6p3~_!4-XKn)OAdWMZ?-G+&EM?4n2U6R7W};riaP zTD@g8AH_dL{-2RAM)8!@YRYO=Ka)7cAKm+$XMNG=Jw?ZV zKx&)uc*Pmh=((&)9aW_)tBR)M4f=st${Os?>g|k2(SV%tnu!4e58Cl(rUSIss?__d zl>1F|T=1{>GB&I)A{e#eK4hqb#l#S%G-?pe04p@>ej3F^<6uu?g_#5vN1{7MBz=>Y zKEfJa6jN@|Qmt-$U4q6gntgR4fiMewiCoMp4Mkw@p$2*-+ZKP0#{B|~dx}pzQ>)a} zs-6a`_it6R)+q1aD#~UU&zJEp>WHV!5dL{;e77&^q_3eb>iBLGBTu`j>3z4Ug=>_; zHDWoQVp_6IU!zW6qr9<3@S)LZx$+Ob)NTw@J&a#~ho+sPRScQNOo1bhZ*qmdB^$Pv zc>YPHVlKtMe-pNgjM4M?C>*7lf(*tXe66URcc8Du=+lmt`Wh`IMxU9tsWWfmeeD~3 z$*|G$7f#yI=>10TYkQ2oW?o!Bew+IEZOXsjh8-5_!JUmt{@U(5=9%x|+tj{mmBY7n zr!x=P-`=Kvdz<1i$>ZHE{G2xC_d+F2lsiqvawqMGB>~-?qtd+RdpnKY2XhIZ z5rr^7(tO5Tq)(SvQ*)ET~YCFkOpI=MB;1#=Jxw zzm87T$FB<$gWUuUAfV_%L!D6}=;b6KaTso7Lk-VnO(tsL8v2CkxpnFX>y+mr>cWm= zULcLDCb|#S(Y|z8uP}w8nE9Dr3dOn)iA`O6O)dl9RcoR#BDP8Y%DNLv-z9{ z)$VHb!)oQjYSba}*y)EnGp{CW7=R*lX(36&QB(iqkjrb- zM{ATvYrOGIC`&ULRbQhnu2Jf1#N%{JL>c|~0++*Qx@RdApj*S$@p<$D{o|k~zDY>r zR7iXSE{K8RM{iMTO_phuJlb4E7E$Ty*Za-IPD4wRSut)p`*Fy2Fcy3Qx zQ}jL;Z-`O!AQ85vTHSra$0q1L#%7fDc=XPc^g$M9$dPl{ejl)d~9pB()zVVn7&(@!B z5Ys5$txt)zc3*8UO#P!CEx*^`4-FBSFGgDs$%bJ@tTANvI9ZAo6(QjGoB}>};FAG- z#4IEKb~XQYLgO1gP0ZqG^f86up1O}7ZzY8_ue5EyZyCw_&bzS_Yf;i=6W$tKQ17r ziJ$86LuY(HkmfVt@CYI&CvruHMUXxe-Th1|`q9pE6qAc)TlG22RzH z-bnsB#Z>n`cd0RVDt+#v_7zVEdU&-4kSXYe=4Y&;BY5ae6_0p@?&RvOhj=jrJDQ9D zA$}(=mnLNRNj>_iP&}vNAWveRe6Fa#z>khL^MO-A7^ii2s_X95af-5oJDcd_)M6X? zPJpO(*xc}QaA9yFRk=)mMvj;rP0FwD0ax2%4^$6;YVp)o)}3nBodU1$&xUaH!oNPk zQ~Ixu7#k$l-lfjEOS$$g!T1vs(5vrKuf0oIeV55(E+qWRD?Fu7$jJ-PSmVso^L=-z z&)%i%(-mB7Qt<10)O~lMHl)DYgmYle5DxILCOQhm*O@VYe3VZ+oA~1%-ln$2Ls02q zsI<2U{`bL0cc~xUMOzs!(@qTyKBjYgm+{ccIUkwO#{=Fr;nk6zqB87}h{Ng6@$AJ1 z%su;D4>ah4T;Rdt$^5|u6_U^QHr4BsRnQWwubkR)CVJv|6SeMzqVL5+zZTn)qu<)^RTJ)267B^q)Ju$=Kl4&-$i3>2 zdzB(0>UqbHl!>PZ$8l6A@T+)=a1y_t()3+V5%Pr*1#W6Lec0N2ulo4C%HDgwi!Ul3 zQfQzj`X&L)DF9PE5&4sQ)t}tUpXeKh{0YbxPxLLgS6y&#bMUR@)MfBHsPsD;_>Bs_ zC#p{zr#9hW!ZV#)Ka*c)H@UHCJ%``VYw}JdC)mRK1(2WJgcW)P?XQTZKW4*S=RoH? z=$y^nb@T>x^agOXEuN12naH2Y^9OBE2W`Og8hs}6j1fJq!YFj{=WR3bLU#np7xNCc zklV1RiJp;Y^s z{4%a%X_NO-swdVL_;E{ji!p&a%4>QRMK)fJ=WN7Oa1ejsrBC;QS-b$#58`NBd>JfQ z3JWgf7Px<|x_=%WzD#{q^kRf{{)h#}DGKpdaQm(@_0%YT;3L}=P;wQNh>>mA&(&Q& z$8=tQ9wX{#FZ=^T`kW+uWT$@%(eTMjH>#sHDwl2)n=)1Co)j(s51tu`a@{L8s+Vq5 zuG~odWm!|RcNrmQ?owB5RBJXWS8$S;M$;E(>4(d>9Wao7Hi%2s_t8XtV$b=r&p|)? z9Q3fiNBLFV=&3c9HHn{>Wur` znas1Q2}>i-Pr3Xmu5k_5xR&QsBid6SToqA^O0MC9mWwn-6@Ux{hCTe5tu@fQ7J93p zcMaEj@ILk6ec-}ZS&(0a{8c>vwfof9?ju}kn=r%l{ETbAlTSEs&?6=s7#hXcRSWi? zf&EUf*K+n*_p7t+$Alv?IfSo>2jtgtQTOnG$)9hZXI|Y=lv@vB_duA4at-&Z4foSP z%p;j+0~fHdsq1`(9yJobZsObTckw6S$_Ohy=h4UG$O@Ox!ce>v9}&hgdp;A4SM12Q&%2c zrw*!92G#L)N`N`Afm-+eCSehu<0J7h8f61SZiL8}`9tF$-miYhTNtP#vWKy6+kZkp z_!55bMX$U|)S6OZ!mok#7tDRE8w|idV4v>vzY_XAXaZS8qav-p~ZI8uP<(f zp$*}>zgwriE9&<==@($WpXO=evL1~Fvk8okhQajItDbtI-@;pDE2sZWlRE*wH`|1% zt7jX}+1}*c66uZbwIvSnuBunB zs>iQ+>lMMz2|dHj_-zyaF`H*V{M&F9TI}tZ1gwUy6FLB(*x!MZ~p77`qPb=e<;sAfS*#} zW^jN#SBPIGGO@i+H3TkN!fbcyjgyUdi)i4E zrbI2UA&J@4OB}bCyKhKhUK$P};W`;RZN~oNKfNva5}M;>G>6!hv^}KS9zr0*OdO9B zxF4ncNpmy5%FPX!o7vO7nO}w6K)9J-eMo)vA@_?1$yc;@Jg;*hZ(zHpk+1r8W5}f* zVD8(#ht=~RR(ubG3T5IDv;wg}nf|c8?L+4|VwcH*0q1q7d?T#V`mkz!n7-XH<-(zJ z$IqHGk>R(<@V`#szepKeR9MK|Ir^B)3tjZ0+#``M*KL8W$cU&%eLb_s4<;DSNg4e7 zm$bQzF$v2H%m;qgtClxTv=;@E8}VO^z3*SDe1z12boM^}$F=Iv)Pj`IjDp0_%!1g^d>8%)7spim2eK)l zD&*aWyphPOa1@6Y;d78bOGqmRf9?U;uq~9!D&n@s)Fw@gGui)f#D3@@{kD$NH^+6J{$0OLttJk2 zNPvuF)=|^DV*ZwxEn8<>&czQps{aDie>>{G0K7bn`VU6^dsoD5iGlUsWq$(k&qw`% zK{;&6r8MV9{lom7;bBSHL*Q6VRnnPydYqy z$zm2QiEXa{{?P5k8~jYuX4h)kQ^Y?pR6E$)8R#3$e>OKE@f&M-;-{9H*aH^Lx@G%3 zFmA&epMsx(-xAPjtrekKtE)4RK>UdTt?%cWwea)Ygu+j)<@Ofv2f)v?8Z`ZORy%c$ zg>~dI7DBrG#!4gQwjX7m4pLfPmv+Weq7Cy_gly-~uqxSLhFK9WeEeM>_2D8KP zA8&08%Yq3ye{K1nEdiU&O8oq7EsqJ{y)EXoKBt~Owd9PZ?f8qPt@speI2%4#J9R!| zwEzHK$mYW#wmS>hyttXQXOn)xf(w38Tdv*RqIE85w=#c=wtqoDD}Q>MwqwC;ZAn7y zsU6TwZBH0LOj5{Jad=n%+N6#f+5FCS_FQ#4v-mn%_G^D@e@v@sDc9B<(3XtaqG@Hd zFNMn4yfe9M+xB?IAj7c#HKnWlb5yJL^zUO{yBPL!UnGBQ(X_q+4Q;4B%^3MVy#m0m z<8dqVtxRFb9rjvVr#(;;vbUW5wqo{~)-CO4%h8`~_7-i|=-LHZdF^(sZ$;dE_&zy+ zcvVY1ay4 zI<$7n!dlJ70-sn|Iq+Lvn;SS8C=X~YH`mq#MleThE_?Pd3ws+hyI`-T)zm6lO$GWu zMT%ytwP}bimVUKwS)rXVXlEy(Hv}6xVM_qHwSUWo{^ihrx1rxE^j{v^p&iRv*p8s% z+kYDD<*XbQ)WCw1fg0Q)&8%!Q^q+wKV?uvG*Y8@d*-G!$ayvC!zx}6uERa%YZOJK3 zXfN-ywd8grplz)5Zh@asd$qUQZ0&_9wwChFgut=8t+nnuQRhxZG^}Yf3)tGN#HY7y z0_P(hdP63cd+ct(TizMr{pdEvHV#MMNkHGrg}ib`F$P$dYd)=pzqPk&{Gr=(9aXh9 zdtogr?5t()kD1Iij~)ZnH?#fr6BgD&zN1+H6va!_OREWinZG~Lw2s?r*0x)m4rWP7 zWR~(2_VJ(kvp+Ruv$vZ@*Dg;a{JPqZ02^|<+F;jhaD{4Fd*dut*m#;P9kJWW`J-$= z{c}-|o@{`AvY{rHeSO5n_8&O!C#Jgl*0}ihR1UJtqf_W zmv@v~zhEP*DR}49j_^R zn+5hku_FP_&zL`fv6>XJ!Rpga)~wgGlVIC_@^t5wq0?*qV7ILdowQY@oy>ka_UjRE zYnrd4{cam;A^o|~zm~DW5cxzx=%nTY^W~=@V0ZcclWYC^Yp71`Cu`C+pIqtOH_LUi zPt$I0KW0OtL+|(04;i*9){+g~LO;^19lF1-e$a1DV9tHe&GiE#)?s4|f3?|wV{Hek z2>k+nUmouQZO48sJGB3F?rH6`4Ry(d-kUotwI^Z6jfF_J++B{Q2QzEOd$Wb*`mKSl zYGRgl@_rM$Sv#HEvHx^U`+jXd+GRiSpS0BG-cPbMEroR+L;PW^3ZtkK@4ErzvA^fC zs<*$gXzeZ5T3?klU~|RXOxKIg!gg>tPtF>u%Pu? z@%#4ei`|!kcjx}tJuDE9I>#(!wGG}_`(?CKg$6#^dd>)0F9+*YZ!Y{W3}IE zmfBx`YpDQlEn^n0f8Hnzxp)(8JFufS@mK@m4f(Z*we${z5Qp$?326zPf7Z(H(6n7p zTnkMB_#WUYA76JsIP)MH#Fu!SmAHw|-KKZ+ru>S9e-A^JuV2mbSRnZm;<%J8+HY@Z?^{K z&$k9%(m###DM}v}ZPIcwx1(gNBPFMQn!Pa1+M*~t2G@T1g@xYi%P-Jw(B6j6Z}It8 zya_XE27J~6D~in><(;`5HR4^0b}3!knbSdU+#C7fPpuPk(Qgxo7ls2iMs3-GcM7Il z%iFcrXskg<)fkO^sIryb@L@|1@;Wg8Y5%4iV50p};DTvYa6$NH`P(=C;_q*be)ROd z@=j~KvvYHKXHKV`Q1)3|QQnER&={HwAo%uc<@-;chFLIzIUEjL|JheZuFvPJqJKVLM=spJ z+HMW#|AdQD8MC!BC%F)u0jVm6j_RzU@|N5xr_V_*lsaiD2s#@m^z!!HD&ho}pa&H) zYHdP?kVhp(xqe4f+@7xWYe`s{R+{7UK@Zsl$yIoD@GJCUJg%y8LZg#aRRxenxsNFD z@=&*QqA!PX|!I|sCupn#^SJLOKs;>U%wnuLz>&gD=s!&zvR^-$;YlvRdUz8HQ0y$?D zJ|Qcr{5EG=JEjn#JY;(`0ZjmToF7*M|4_~A;|&W*o{$`oZ=`*`DrcnpQCL)6P4b+8 zv&9xj04`iU(ffP`3WOh8Ga+DYu~gB0)QhxIsOv2M=(bSJ+c)Qwl7F?^9FCMiM^0@5 zb>LbH{w0KRLp7mXBd5jEQ4^}^sA)kNQM4pF~ z^pAQ7K4Cbb8e$#(?Z4fIsAz4+pwrGy^Q=xjc14-o!)>N-kSRAU?J`q(P=P7Qx)ifP z*~P=1!?WDObh0$3bC};h^D;w9rpMQ7QYOV<@k&ce8wLU+$x_cN8lT#4kh6HA$fBM$ zj3{&g*(JS)R%AN8<-_|;viC1xX;44}!~8R$Cw(hmVw#(B1k@|7t$F!&ok6Bv?y#Y@uMh`b`H-k z801SImR2;L0~z5LRQ(1O6b`rb?mxWPS2=ZR66E7W2GVQTFy_fB$}VvX^%xSl`X~*< zhmROJs&Z%vu4&l=$bMdVssUA>4e<=0nC$SB_|ncB?*IlQTZe}?LS9KhNs`k!CbOVq zLZ30w^&yYvOqqR8$~S$DaV=M4r4MLtPixDs7dX zp-F@Nd$7YqrO@@m6X#Tl#=VH`nN!cUDS?u|~Y5j_l#z93UUeF+Pz=n8~ zO^TnCQJx4JE+qM!fJ}r0#uD=?C3^1K4A#^ zjn28wj4SelB zi`_TP?h~JS{fz2^-!^!HW$>iboWxO+Evfm_!u;HW0Ab%z@%fYb6~*-{nruO_fe(sB z`wbj8u>S={&EP6&stCHE&)N3+TZR=IMWdSp(tg zJm}K;j~qTQt|H8V>Y5DV@I={@-CSiA-dFxNM_!X8AWsOob3Bh&ygN;Vk* zH2o==m3>C*76HxyBPT=IfP)E`n&?p@#eov-9su<)Ze0Y0B zm6r^}q$27Sn-v?C!fljnD##ofmym#M598Hi`x=G#M12Pisfc8BaUX$Cl#Vg!6~zgz zNDTyibcM~3W(~<4SUQj*p?HyhnmmHQjFO){+?gg9uuUtF*b}skymVNgqCuNIQoUiie3$WTZk0_!Z8+0{0~%>HkQoTSY$4w zd=Ox{gM1Jmk|mADjER+^$U%QpglQ7i@jjM^uyQ_I$hoFqAxP6Fs#BJYK^^|4EF@`D zxIij`9Iy;!$wMiVO2Nfh!0RhvgFP&_x6ri^#&BI&Rk5L*H@9ROalyic3xzZ+xu!FQ zDO2`1F0g6MB#_oXaG+465kzoesuxEIRYQ#gQ2kiJbeQ5}jsjAIs&QS!<($Mya#_*{ z9YE9zT3{ZE@Jg{4<(=OTEQtjR6CDdtWI?SgTHbV)ozHBOsZk21por*s5lbqm92Zx@ zN_rmnF9N@DjPQkhlTvIp~)wwXa-=M6boXS#Yfsu)h0?Q}*pggJ$V`PuGBb)R)*rngWHgOl>z+F#yx;ztIx4a*& zjS%U(BikIm_@uPy$P3qRz9eg+V>;fG@E)Hvar3Shu7CNlPY`>sj|hA$ z8wEZl`dOd@AAduJ53-2MY_NVXdOW7rby4?gC)Ca*eFN%SP2Y&Pmj^$ovudnU1q3dWy51S>9c zeb4Q0AxlAWD3$2{e|imPKUN;zW-Vn-Pk|@=c4D)sOFBEde}AXbBWO_GHLaD_Stb=Z zv$P*GoYT^ftKo#Dm*y8c4On(F;|+X09uI%xHai=~4CZGWIP$89ql{8FO&`R|kx%#M z<%ctvXP+f0DK;L(+L<>GPnh9mY;W1#{)Luad)<5OYkueY>fo-gn$NtM#!}8N>ILqL3DbzbZ0yjHp%PM^iH54PIdNESpkw^p}?v^~cUzZv{{{jP(@1`Nn_ ze16y@_29eK!d`6?X2r8!t-V@{9^N#0_w=H=P5#)rqMvVSJz{7%ayZ`prX?0eS*9}( z0;^uT>}>~+=$hOtKKS^*HLp3GK3g|=VV}T+8QJrG)T{OIf+GiaRUSTad>j#1=j|PI zWLWK8EAnqMgdY~R&nDaHw)J4<5&JvGEVEg!BM04ESaz#@7e|LK212=nQ2Mj6ZuX|% z5e{?4#9e zXF`tAkub`@S9nIV6iVNQKpySivZ4Wv=F>7tVU-z zZ!(ERlg&07u=qUOXBRt<<~feS1JbN+7L#63AM|ZXi*Yk&`Y^f;{$y+Lms^9+KM~xr z)g8;ym(C78vng1)C3yRm;O;H?`NK-n*-BJ!_NM&2VI$Mi>(dgzMK08QBtHH~{Or|v z_Rj1h_A^JCcR<~d_}C-ID=F_7GQT;}JRO?1-c);IknQHL(Gv4|1!&61`>-_0-6Z*R=#vdxW zxXz!+liwowTG4{KvaV${N=GUEwRe$%8GUbu71$80KWi1*| zU*@Y1V^=n&eo3D|cKS*ywLfQb#aD;o4PIA5c6Ep(5c_NDfBq5@C!esZ?>$s?qC$Q5 zVF-3JE8Np>DVkmf$tNr>hL5pDzWUvXDFu|YlYC(A)%U~=aUM+|loSfz8 za6i4FSMctK9R-}iLlozsmx72WvXUJgYtFcP|D0&P3R(6!ABV!-vE1lB7H1;W9(4dT zad0rI)5>stb^waz#-y8$qR%N>A?ZP1i;uH>t8|juZ`5-UvUlqY9j#5>KTCBNx@`Z@#9YG z;j8_zch)a=CSC*#4j$t`lntogsTMu7gPeX${mwn1>3en*4XXFY!0Ch|lRFNq_iIJ@ z^-95J__QmPTLcJs&JOXx5!Jh!=tS;7jHhqCdr*D#$WTn-=-^*B2fdG!<=4B%)UOZC zDD8#Ywh3Tfe+Kzq0sXQ;^`V%8UT$Cgs8OSo#7F1`AEDU7-0xx|lK8^nVE=z8JiZ_S zGDiy0BS+E=bv5!l^0q!J%Ldjj5q(I{+a1S!MiK7GiEb1`%53hjJPTe$6#0aor6AUC zby#*#EyK-=QupjQJv*%kJKHA20Vvq(?^7KH;XOHuHT)s1RB8Ge6%`tX8?l~FniUNakSckI=yR+ zPk2=w-r%$U4ds;cs!p=o`s(}dCcJupRL=&xo5jKG?@GZi6w|=%zNBtsv%A)Ud*#^% zJ}!Pv+Fu{qbhJ8VXTc4~;-T?FU1w>^j-#t%{MymgR%LP{zqg2c(1$Fp0nWcy}kPpwuX)M_NkUz}AUyQ-$tUQN^3xUBk#6z0RtqvD5=PqoIyoX5pbA-Zh*w z$3U%Bn7cbU+?obatSiM2lOjZxqm!()p&5m)Syds+t*)5e)>&j(#1HxeF3GOm=}J6W zZEc$X(fCA7h7eIC?)3rMmff*S5Rq)Jzu$-zPbxl0Q>;Q@b)y|ir1sY>O@pgLDfkGJ za)9*Mdvqk>0aVuVQKe!vMc~zz3Dt*%^AKEMzmOo>?@AFq?dx+=)HnB^eUiOO!SKe{^Z z=*ZY^U|eR&M)Y>Y6tg`28YpJXp*Yw0qod-ER>$ouaE8(jT}J+g{s+15T9^9^(qgC& z)>7{^6(pruPyjum>>TCAbEkgOHoY$$7=%EkvH^ zDm*uNVsTEGX)J*e9|IoY=J8g51z+tEkm^v5D+7SgXOjL2fT-`I1>J;ykBuK66O7xU z^xJ|)NDi?6UO8*s()<0uxOUo>M(6_Yq+ z1Wo9Ce8eY<<9nsC^mw-J=&Q_?y!Pm;fS!gdSYU6xb?2Vr6V{nvUzqJrTb*uY*{gp7 zPv^_O^w~eh1F z66<#E8H>A}F1I(n4g+5thJLZW!&(n3KJ*7H-88HNn)%f|qb{9Ulx4p@j8#8Y>H5O| zV5`4YY!)1jPZEpp<8B;Mv>w}KZ$F61OEa?P{V3C7WqeIMgJlykZ@Pb4ACHsoJp11f zR_IR~Jb3VNcM=OeQorul>cO`?=lW{b<-=I|PwUg-72l?^#V|D&bxgmC?QEMMi|R(gz{Pb~mbNWkRiBoslx}TXd}&=;A#U84)p7Y{cFbeAmM%K-r$fhOb!oBC z;W@f>N7^TU@W&SPjgP}>oF%ta2EWS@>16(>d93;&7js-mY)Yb9EeSE}M=u z;hvoZ{k>D`sDP4hK5kSYdjQ(N?ktM3)ovu1_=Ktyf3>IEA|m)?|}zUrr{^< zp%$oVj__7cyQkMyao$of1#qR%${#LdhYK~Q*IAAOtYf7&q<>=})aD2~{KAfs^orYv zoU_Kqz3Kn*ofhoRIDM#_UlaFPxZh>}v-`&k%5@0RS%j_Gl@X;;kYQOHi}gfv*}S?X z?HUsvEo0wb;$M zy_eRJhY~0WZF4WJ!(K{$F7`?K)$`6Kh{`7H*!lXUPX#Sc9;27YJl9pZ^r@mnb(~On z>q*0AZg8;vH_dK48@%@SdmLwX6kSrs!w%}1#;UV-7Fbg39k=dOv!29~WGdEGOF{{y z!^#%c`9fBgWk=CM^tN7NXGdA}1jhPaVvh$2?DU|3Zj6nevPrRTEyT`1>7N#Vrcabie&?O3xB{b>=-1P+1ksG6k9|+@=GikjEuZq=@t5}SwFg8#oNyxS9D}+es5$1 zZs8gEb}AH8>EMS?xUuKGs(uFoU(tjeMWgGB?Dc*toWX6cABq0z3-!jXmK_DN{Mok` z-CU1Q?6+_qSk2?Dh`RiW-4Fx^!n8kiZ|pw??#5V1!&LRog3P1Uy;kR;%W%G<)fuZD zy}C*`nrA;OLLZqmr;Z#5+X7g=W4C~|s}k${`B=mIOR=y-v>s3&OnxBRscFBkPm+_? zpF1$*1fTpj>VxPC*v@?7LC1N)|Fg|IaYr?_@bap$afizSM8JtVg24wJEa?4paONWb z9CZw8TOF^Q_P5hs?16O4fnsLapV0QK`zq$Sv<}@x--Gyj;FwbWWLkE14!yO0eUkIE zjBIyO-(*K#QgWY6o8!Es)MQ6eUUqKMc^SFRq}+ZbZ33Gb+%e3X-m#5u5R3eL$FSn` z!?WdjBFFDng1R72F0-hq$ zQnMX)8>hGB4u{m>d92z}jr0Gv9;8+GvJ>Y6P$2GcC+?%g(fg~-CF4#U~ zS`2PAcmlOd&alMv|JcsqKnpn14{b-A0_j{p`QCO8T>hY8MgBzY2DmNtdwDzKc8Y(n zaXZr=BM4l>D*UnHHV?Pw3xdJ8EfBZEa2qcOa?zRz>0j_xK7ZI!{}Aqm{&?UXhCk-t z;e*cfiW^0|${*&BIu0QD4(rz^-kE|(h=%P6boc>476U=P8~4Tl!NFhU zkEQdMA;>q*V(`c~rfi~7@^Bx}?+d7bZWZ}XoZS@Ohshu!acTNeepi6II=VAA^L@WX z-}d?~JZR)!FwBc?KIdubk!a7T){Nhy7cQVe&J!boSER*3L$a(qjOpZ;61iCp(deEk z^j+SKMrr+b3@j6NxY_@~xL}NqVqA>HP>M*gs18GJzAb9JwPE(9kGIIL2qS4jtLX?g zbB0=dfF_237@#>r#ZLu%#1PQ8x!x=rzatcjS(Fd4DP%27p^z#9sw0Wt-$X%COpJCl zTiFB8r)Kxd%gId7a3=8~CM7SacXnnfj*A^yzntu}Tm&QJ*&LZ3jSo4v(03HH*>h%1 zE*eoecSa1p0FKv;h4k3PxC>`m9_DEc<-?1qyojfXes~F`=S0$_lwKT3kEZmM;dD_U zrC0KF*GtIHiY%-shAFHL(dz%dR~JCO)U<#3Us%O!n)WaKd+jwX{P+DNhqTxJJO4C% zTkafxUxu`v|NixWzxJgT{_CMN!_DzMZ$y)USls*%T>qeHJ^nqdY2vR{)BeZ){)OEE z7?OMN7N-xR>BINp=702x2YCKh|NXBjXWGsGqhL#A5&?;TL_i`S5s(N-1SA3y0f~S_ zKq4R!kO)WwBmxoviGV~vA|Mfv2uK7Z0uljOu2=Rd|XeEw%@7VZA>{ZdP1MT)ZtUt#@i_Tt?4Qe~`Se74qgg5wQIGfs9HP(|KSR zW7eM@OlK_i&4c|Ii|cpL0$A1lnXCZ_g+d-sMzvx_gjr{*+{r{}}|1AH9Mm^8<`QKds-*wmf-`%6S zYm_+>0f~S_Kq4R!kO)WwBmxoviGV~vA|Mfv2uK7Z0ulj}e7@QH8 zY|Dsc*1=XwW@cPgRvec+C*=pri?S%$(mNj2=+zaTC=#KC+4<)`qpPdT?@agY6&D+q z5fhhbO|->HQS6WRjov}j@fV@8IRTF(2w?3@W;RMpk^@0%@?kV$4q!kYl$ zy_t{<2_)l)X*wiBRssS^z9fi>3spa`)xwBq&?afLDsENl(og@b73gNQm2nNI*uaP~ zL!V8+D5zdcmP{;kT28KG`m5WIH!q!x!13}$ad;W{-|LoXu|Je~W))GpP01`j~NB{{S z0VIF~kN^@u0!RP}AOR$R1dsp{Kmter2_OL^fCP{L5oeD_&~E& z5?U^k#Mxs8nY04zL{eGqf62|7nryxax!>f-*Y9`yOiEum1X271DgWcZL&q9gDhM+`(8OAd#0 zA#wf9gcK3G@u+_x7#MYp$uLS_{$x~!QPENAW1^$f$3(|u7$q5cL0@0Lsf1XYF1FCCpNT|rOE(L2Pl8LF%CZcbX z*9bam(f(f#Hpp9O=pYSUMML#8R7FEx2-!VvzASW$HXi^i(n`yoliFXPW}=r{;{#iI z$@d)m$LE5L6eS#%q{~&E@d736Auf&2E%-`Yf=}|09qw#jjZ7SgVpdmC&~7&#*%ktXol62wr*^M#A-cXRvY&x6KCJtY5SVbJ(jKlv#u$ao7a-T}H$yv|W{ z5XuBEyfjglWU43PLtRCJ)p%5wB$hvBx}|GJk1`DV?DXpH7wd_2pl_S;FQC9ZW_pk+ z#JM|Kt#7nT7d{u~5{zGRi%!dCGYCn~Cd$%I`E|#nlx;f07RM*a#v{@j6C^W{woGWY zd$e1H_X0)4L$*5J%!lXefPxS1%4Y!$za5(4Wc<(c{3n*(7HKTWcn7qiE~$S9Ye`4q zwmv!)<{J-q-V{j}K!G;#fB*IoRf_er@k1k&$BBFm^UpX|PhE7n<&R(MnDk_xoay$* z`p4R8ywJ(oZ@fJ5vXkXM|4!^E zJw$*j{yx6pcnu|ddV2A>6?>x{RXq}~L&Nbtj82P>kJZ!M^us%Dx`(LmzUiJHgv}~Q zl|z&G%*PF%sMhhBzHYs!qw$6Od%{N8=O+@_x)BS38%I>I_y2cn+)h?KV`^ebnuTx^ zIkQHqVY{GIeTlG6X>SRj)N9AvIY8H&wDWjb^q9BwWx}HO2I=BC6zcEwOM$ zqdw6L*s@R0UKN?BPfXJiO(JJVh3zBBIX!!)P^q*;*r%Jd2H2w}rX#s1Q?N5ag>9}i1di;qPzyK>&~j=$vFNo5^%1&XPXx{di6PyR7U>+c>|`wm0$pN; zmPESFS1AlO?WxfB;8Y+LszDDs==ny9mWQ$OFRTf;2t}CT6fRMxCE5%v93hBsfJ*+^ z#`r3AKCZ4B<_QCQIG8J-UrvBI!b+!%fAOUgp@0N>lw?UuHIgfhT)IVj8mF~7Tg09^ zH6<-E1qSbFU2x13^^Y^Bk(n@*ENL|K-{hk0MrU_3JmFCH-_>qP?W^HoNQL2-tkr!T zL@tcjGbbkKzXpT#5qs%I#o^PupC7TONuBt0pZJ}oYooG@aR^D@TCK*x}o# zqr2ESnMfXtWKs0lVV(H--lF|t&Ay`g*g@X$&)P)t@OUHOx=8$-Xw(=+uh4y7)XCvC3(E8rjgUx-wU5X8fb{lpMl2B z?-m_|Un1C)%O=}V9f$bKUI39?9DM9i`I~Tq_=uga5*eLqRNOjFmJy;+`eULal*fsT z$uLsz{>bP*5o14~{qwgUb?*&5wcA1Ng75ln2N{O=Y6yoQycnKa;4}838$(5Uu>PQz z{-|1CPrvo`MkBq`Cn5Cto85auKL%UZ!uLuD8}{rCJppCpLimU9gc&(Qn_Nd%6<^<_ z{MyTY>t%M?(o&V0l5T;5n1m3|DP7d3SKveMu`iXfiweKOwffpqQ@*B@kgBNaRnbs5 zuqGm)ddepKWcNsp_{NM6k8b7owD|Bprx){%`k~kxDU0~0JQa;_xg(1IXY|&DON`o! z@*80-=1?p&LLn9z;nIjmOoxU>B#nrK^}?QvND4>dogB}h@noY)jCW>45noj=))%8D znLX-b%#Ra=qWQ)IaQu%!Lg=_wE=qpX_>YTzmGM8S14IglJfq3cKqO`4Gn%|*oK6u_ zT@%%d^om$oI21`>&q!)CTSUN~W2IvyR54zvV2YQ-OvX!NZp6}A=r{@SdBZsr(Wrz` zQL1`sdRLu_p5h!e8Vk`_q!1-M`X297eE8J#;%6i!#}*L9Fr6qgx`bF9$A64PBy@uJ z|A+H^s6>1gH4h1djhO@VLjw@ec`c?|edH z!|bb%|51$>SLVo+k+C?naKDI1{)g)U%4l~zVF2oT{Hl(G@m2L=%^BayballnozN|s zcq*PL9-iE@uc`+gpVU955J5El(@C#|dlv5D$fMoA>E=i%^wT{xqz?}HNxdF^z9HOB zdJ&F2nGyH}gkE3lF52zy-n{$bJx979+pUEYi;*ATv!$|f3!Fs=2aU#q^`*Nx^75X2 zp)Chlc6xJsGkR`Q6Efa^>jMvv%hcw}$b;2rng^8g`nr-~_7(?MUR&N1RVZy8+s;af(}Naz6xJ*99u%ba`m`w5|uk=MiB zPj!bv)MqIDAUXJ(-5+&d+kNG3!=5L)b9es`PE|&JB0ff*FYWfxoYBkMO~_w&N2BD} zU!s*CHxSbtKQwNpIN|uYVp0 zI><-u=hDL3T*PN>b8$X(xKn&7sx1&!^D2+Zl|s#d406ewkWlmnoU-!TB9HP1+_Z|2 z4k?N^&7%RP@myGAC1^aSXix)1HPqvx{ZPHZrAcAO zUUfbv5}!^BXTFZ9@*2k^d5dGByxL)ruXUu#*ElA~rH%x-(xHZ>ECJ zF~o{}Ti~z5$NtIqIDaordkp=XaWSN}Z7@kyL^tA3TaBMeHA*^hvcISOGH}*GV_*Nr z^zVl+?TY(@+!VoW^WEgSrps-Ihqo(F^s&D(jl0=IpC|OPVDu!qY(7vcb=iF{2g_cd z<)|FY?#$P(QnGu7_-P2xI@KK3-znpU>2^AT%D0 zWrtJoN9`U>?Dv2i?q%n6IIYD1xhWttcWTBTwC6yDC?|I2d@f!?&GV>n#|ezF;o@KPy+kO{(7t|IDBi@&vn{cTe-B za9e_8GmNt!c`+GoulPylXj|jNrS#|GaKe1<8D5=ucP!##TIn0 z9OzdGUG7|X=(|Sh#g`YZKNZEj{~$KvmtcuJ1MTA%I^f@C@Sl2qzg3whr{tx>?>>=s zPWQE?v~MY<^Jbox%}wq#zUI8uKCAmWUvuE#GbvlQ1mV7MOVE9TFK-P~X_n{FKK)0Q z5>2Q5L|}h^u6PcUvphdYekv~)KBJNq1u&OsJjF0^ebaS|uO*<}^3FLgNXF-29xH@@ z!sD;MmDcE#FOjU5x_t1jPNelONL??`e}U4~Aqr2Mj6NhMm? z^}HNyfBL&$r2XM{zexM@YN&i34+Zn^{>mINeo|`Kpnsj(Jgs!KFQs(L_H#DFzwm+S z{+)9+OUCD+{ii|uzZggFRDvS;#fbKY#^3*#sr@ldpp6f`0e%!-|Cp|fjy&U+Fip|% z@VrE}LYmnAm`>k+iT%7D(^Oanw3+P|`1Xr*O`t3Z`slyWFuoU66yYV<-P13Yok;zy zsCthbjQ7Dm@3_{!ni?92rLYpi>kg$vrT7z-cwF^Zi320Mn_}&wXtC7)qB46?8S9WV zplEzR83}Fj8!)2f8hTqrZ!78TIeP1Wo89;)#Za4l`6|=OJ+NjdPVVcs+hLIf733%O z^|O@wx*^4xNK=X&FmRM20x;adrFfXJ&rhX!{}=1Hl~Le)F+2*KFVaz1HDa#DP zF?fyJ2VkKzU>t&lWo#mR1De!YR2f;shJV&C6X%bg5!T)CE5G}aD_-7A3gq;J#F&Rmu_VI$1KnpUm5@P^nECLVHvHA{{%LmP3`axCTSmL3;G1Q zpjYu4&t9`d*%yoyhs+kceWZvRU(;c>c!pkbJnH%MCC9_`FD~d`TIjr+om%%zKHi|~ zq@kOAyxQIFlYAY0)TdRj+IJ*)_HLyvxa>o z+1KA=(nBqpnaq8Q&kW-ZmPhSA*G)dx%|65S@>j&QKAombS-YjIV(U0IrKhZ%r(6conbp!A@!- z?6fSf%Swga)&#iEJL*rVA=lI+W&&ftu^_Ic~t7~P6JRbLm>_11h*XVdeG5)zNE;3qwbUaRV zyxjBB zT)zGcmw&?3#}zmeuAg#IU{`?sb0Q#1S}ynj0H&*1%&c)yDGe>TxC^8W6L>1EPXi>=8#xU|VE zrIWyAgvPHh2SV?Xy@U`k^seo@=Dby)aE19=c-n2N%maDfHFpd)e0rlRp!aO`quG5>Me4=+FC=*_2o+wOjISzcOE)L%MH#R?rMK{>ls@h|UNc z6Xhv^O|FgRvkn?**iW)N243Y6hTR*@9gZZKa|p7^kvJz>Yd;ZsIl& zNnDzLuXPB%t^6A;9Y@O2r0X)>zcAn0am1ZAEDc(QO8qm_2BcT5P>GNk67!2@`lqM) zf1TOt|7~WQT{i5LKC$qJK4`Ol(7}Sk?rTiLQawNPgG;5(Oeu>5U!9mKXK(+{OiQNp ztF(94X7G9?v_3nBtYX2v)8W#QxwZi?Bd6n$yaz74rH9}o=($Tc1_z7@-f!D&l@K=WpHV1lkxSufBw0<;a zm519k*~zWjHN~k~w{Bq$X}Wm&bSo5|xUD;o_gk~uXMQM)b7}^wrcCJ&xJ&Euo-(_i zF+Y^SWa;T3TT=5QXTf0Q!KIIz``hehi(&iWbSmuYF*%5}+xWNc zf7V*2rP*%SJ~v~OH9A^ZAAq63rSYG|Izd3n&NNh&Hq~B)nA7{#wcFNg~tK>zUmQ0K6?u6U9!McfZl_OPd3^q-as~rpEil90x zAQ?5%#}>$*O{9fsIz4pSHoNrOOyeQXZ0MRDJtjRFZ0OeMLHbjx@e3w}P9zJCFXStB zf*}?E3X}^aWOsrw3tW3M<=GCCY;YK4LEtRXRL$OIJO4LNHW-wCoe4$o5~%L|So&7R z-1!Tuh1&8()ovmlG!}7o&PWCZeIjQnGC*=;Q+Y!ZR1CCj8WRYrYpVo75ezQXm|(Wr zYqzOrO8MfZx^Rk3XOcuxY?QJ|@dSlV-2xHD0I;lRs4ibXU>@&*4m-H?Df8fh$IWf_ zErPZi=Cwdgre(7Of`kP4kD-5n(kp_>9PrZ{m4`Z zkBl@alql6Ftxa$i4@*IPjr$JkW=F=50~W!nIK)ANayIMtkPa9JmChNG(6!dp`Tj$L&KY-1JZ`H{6O0p~7!CorM+UjRr&L{ORuYvkf6z z{6JAK*|2Bckp!)vOX)wYw< zaOs0qUNgA#ZY$^sst%ZNUUnoqEtbq5TzcahWC{OC=2m!L9+>ovz$8cnTQJe}NV=@P z0qMJ0gT6_FjrUmTB-h_Fxbz<3M+9K)9`+k z4Z)kI_DFeIJ^k-BWNqu~mhPAe7JB=8#n&?j8y~i&2!l%>wu-{^On4`+kZnSurMH>% z+WkwW%DE1&JV(%3EGe`3?93W?`O9v{qz*^kX2%d%S5M;qMn&6?WKkQ*{CmAcq`lYP zdky3VcOSO$8)!nN^p_dV1g|L2#AV_SSXiuxI~UB@GZj~89@!Rr zDN8nNUozGIQdTC|lKwQ~otLsKy>@1C5NZhZqwfZ3_tgF!dG}Zo2N(R<+A&zM+n>Fy zZ$}$2Ow8}!*SD|R+P`Dpwr)yua5M1q+OM(q>o|L+Mm7kV=00!0(##L_a2lA74T7pW zptkVC{S?^GP4vy+m>{=1Qdn*HPw1nsFCb2xz9ZA}*3=q?BT+DZ-ezYS0LLu!=5OP7 z^bDM5zocLKNoJqjJ|Oi?g@sNJyym4htlb0M1F&zTEuLwq$(&S|cR%%euVfd(Ybmj17 z21-(u0L$^at!>Z=HMV=K0lVGa#+G9SX9CEJLVO=TXy^Y7`GZepf0aV)P|Dzf`>6Bp zJeeIXuLo)a#nL|99qz>Ny1RR35BE)R$H&Z-q7e8Yl35(l6cIbTOSjJ#VTES*UBD^>G zdzl*Dk=;twY{4}m?H`i@RCItQvb~&tjVOsWDc?!+$yRukyH=a1&#kh9My`Pf^;$49 zE3k_+1fejnanK@JXZH8RmiKI6XA4^Ct~Az&-BpYFuCaSrE5qx$o3?O*IAkm`@Ka^m z_Vw8iR*V|KGpJu;v%M9TWh(w}MFzHL9$av@b+A%ng5d#;MAyc&1F;41JK#h%fqOuz zvqL`^T%a<=4Iz-wH8!ko7S@$l&9AKyNRMgANS75-9&t`!JqMc6|8Wk@IU$jDEwDs$ zRL-leTre`rOj4XglVIg-Ac0bWMJmdxAOaSoTkTRVc?SZZGPiCqEbEohV6gN+C1Koz z$EMCGRZerLyZJvtzi7>ZAu6bg3<02Vc{ZSEwgYHQK9#Vh;{Q%72Lpdp`yJP*?YNaxoI1ZEjHofxLa7BJZi!2{k*lq20I65daP^A|1@<}R+SY?@zJD^!** zTuAsQsa$b|@IRvwpk6&!SUA5HwqSJygujCdp>CB6gz820O&1XVO6W1LXDY7}YN6io z@rLTA#SOLblEt-6^A|=0ij}(asvDSuA%d+(<}1PktwRr!k;Y=@hv-^AqiVyGzxt_A z+41bpe);439~Bxqp7`<4H#~a3q5Ay#hU&(~$TC#`{vs)ZIYOEZb4Mpk5On*?_P(&E ztGWQ12ll_4vS@#Q&`MvF^sU*>cB1{Vvp7+9!vW5^EPgMYY@z4D7&SOvlHG#FLc{H_ z`Tk-W|2`dGSMI(%oBPAG9e!Uyro7bg4QcXBkhVLfK*TFM9BTjN*|qk$JEU`*Fk%xE zX`(Oy_gjR1+OoIOSU)Yk(DW_sngel^E?dtyvEGO4tSyFR$4qrDyH#%I1@#N|7!9ux)ZrSdBnDDGK zrPUGmz&*dmbSMPr;0-v~yN08%Yq#I;0HeLvse0F_dy6z&Z;_TTLVqwidau>>u1=sX zU8nC|lNg}H>XZy{wh7aI?{%8qHQE4_IHx$Fw^bhAeK=d`VsHZENQIuz+eWqu^TFSj zg-Yf%X!NcmE1-Sz`+HYvdY5Yxm5!6I@PG;Y$eoVfmHOW0iBPHDOLV>GB|z1ZXw?GH z1u1-ZhgCRrME(Z6XNpPbufwa0|{@e@P${g%grdG(dXnvEMPN43}g$-^FKJ(`a zZlP&jb*F+gwGv6}uPJ)w(M#sCLsS5!4np&VzehJ(ybzr7v!1q@~r@EvObCPkFWj zoKtM%GQT+R3QB|*KsDq6yHu6tn@4Zwx$76!HPI~9V7jTyT~iIW`i4byRba28df`I% zqQ#B#D+Q?RqI$5?NMC&JrumDiOT*@AI>iN_5Qw?Jv+yJx!d+=XtToW9(I^Qny7o3lcAQ~1z%dG>5kvR!YRXn(@~5Bqn; zZ;6%S<=K~Ki@B?FU&(biuFbta_hHAR+=ATN+}zwXVu9`Q?2mIEay*nlh*Nyu5ps0T zNU<%-e$08@jNDwBGxB+PhGqiM$3GtSTUkOybnKBH~MJ}7hSXRvU8MDDD0 zu6DkVwk0josdY|pnw(!2ZgYNAxU2BJ!krPFaV(6rNhR>6ZiO>y_ISz+L!{O9xEX%o z0fCK)Z6JlPkKLc48n(yHJ(8FXv-$~j;HROJD5Pe9wE?M-hhGoCEISQTmYI5(Z~WzS zZt~dpM5g70BS;Hu`1+M4kwXXXHWmMAk)aRP!10bS2jLef5Ym@Pb>E`F@&G%Ea>9;P zF5fHv-kBgTE!N66b$ufM+f>-vy|c3bel^f>@N>hTX6)TjwFu7D=?@OuH0%}9BYiQW zdwR=9>eptiu(#!RIA9yOe3i6%=1#l4MJ^UpIkWh`!1gK+miw*Ey)E|U@V3wRIol@M zd;9w~vCWinquYYMKuy=EExpB=93(I0Qco!Y)gd7?AH25^i{C)!Lt~2*|e!ziIKU zXnlHBK)y@R_takiKd*HMUITCuL?-UMn2i9&Vf#Y*HS>NT@Wrh05KNJ#L z)~{&Y0Qv6OzO$g^@fEGVSrw?iplVSLS=%A#pB9XsLjU^gPuCS@uPv;(p|DPUBmEt5 zn)F|VEgg;t(qn};7B2Z-;iZ-UnDrQU*>{--zcYET!l_D}Qo8*Yg#pW30t1nn&p>d& z!W|#e#Q=Tfs_90n*a?n=1rzu|SkKV|`|yA{#|fhwez^tdqQNVv{2ZtMsF~iObDZPs zk)DHkvVnAta~rKC#Nd4l9cBjIokSwjl?aI2X($sC;zuMD19M9E#1W-_Mx)eHc%K8i z94-9xz^A<;sO@l&M2~%-DQ&_qRGoi>77H8FIDIAAp@H8dhM<~k2}B=s*i&y!Z##Q- z1en7E@VoQ?{5;(wU7ThRX3m@`oLAm3zr12$bt8=#h=~-#*oEULLDLP}7oCw755E?E zV$t%S!7+z+t<1lZc~+)nRi>04;)}S57Qqy1Hr%jL);4bEk~i`%flAmX@Nn0L9gSj;G`c?# zH~e~|L*1BnKy0)bY>jya8~!mHbv|Cof%Om69h(Kjo#f ztkT!tESE-hNLO06O<4Q%_8sQDH*#8@ zcNFwXcS1dqY#U5m5|Os#^ueQJumb8axHOn!8Eg!K+V;22pa%cByK_pQwvsQ$Z#Q$= zs6F8j#6jxr$|>yt5{~H*2W44Ttnz3}*NL^3Ivq)DbG?~kZ*%R<32;VLx;j%cRg*o^ z%FivMs|@vxRud}to5_LE8cOopSpnJ}zzlejbm{MD(j+1aL5msmIYOjw*)k4h-SIt@ zI$b!T#Kr$eZ!2-=N>yq*e~2?p02NP?^t&w1%7Q60s7nH=Sdk%JVB>UDEG|>R$uxWg z3#$w?d?gF3Q)u`WC7epb_b6c_4L{7nIui}QpoGmdyh90FXn4O8PNU&ZSXiGy!=JIR zil<@2MCy+wfrecytku)-c`Pi@vhx0rBh9pN0=1tPWMLK6_uLKDqP-}2l6zNHhhTI+ zIQf9e_26W8CVgg3_CI5RUfC;te{ydT;d+ZWp|?miAprfgSNzkYuxtXz5_*f&gi9d3 ziD987Eaak+%&FZbDJ&nkwmdsgu|Gz{ND`Yb4*5~1juf_s*54#Y}I z3f+Qmj@y0CIV@aKBG4zKD3WvBu31!%>WusfZsD6ke2NS7TxXvx2=H|YLLm*qw~&S* zg-XKTQ>{foXmPy|zAEZ!7dJw<`uzD#@TjO;R6&f%CX#N;APcMKHkp$x4fAW}LE2eD zeG_Qb*3l=`0d=OCodKbAdj5cW} zmDMaL2w_dd4j7`Bg;doosU`J`8|Mj3S7@pe8k@=+nuMD2Mb)ITuKohW!-~*@0CB&bQ{#Ru zr_TL>xEcES`{EWMiRyyl+c^PupV+a}yHf30rIXIPBH`#n=%f>&6cRt0vu@X4 zVBUh^lL!-iz`Z*Ma_q_J=yadQ*SHt+b<%(3Nb9V!(CL0N=QRz?ZghxbXnNa7iDOEs z00V+>px4{XL5|*LRk|aA4H&)`eAtr{NKIs83eV}}JOE|EimskcpC3Qv_s-P^2o z@6B0qV{bDwsJg?Uhx{L@nJ&c2A;(9l9gc5)1Q9`cHdAhQYNdxW`Q@z5dYiS1YzdV$ zjFeSUnFqRNO>Y~w*L0r4}amUi7b`s$@=H7uoW2M|u$CbxG%KS_cINXJhL zkPsIlDoz!GfC>U6L_oli7`tF#lFS8vG6{;T12Z*X8an^F*Ro`1ae_yXUdiIs@V@C6 z|4195&;7@&j_m=^CM9x`!_?bMRus6RYY+a4O&|f*>(-T&)G%Zv?XmIa-U;goXBmu+ zQW$B%H(*s$0t+p^U_{}N`L#|lbMkFc_oNav+@f8mdlGc1?nw$b<0RI%0Xb1YSLP-p z5DiB-3ye>AsbwappqiX5L9Hf)q??GIJ_(md??kO-4;9Gh(vmR8y4Z4~lf5_TcrNV_ z=CDR=RzX8UbI{2G#^(1XcdF@4aVr|FSm0R(pgbH9019eYBnCJQyj%VGlcAFbIAH=I zMkv?-J|r3l5sf6Iik8M^52_BcNBDgnO)GVHWUX@oa4iADa)MAu3t(-K;+P8M$=c${ z3fy#%t|(xu!DKoK@*3JA%n$xqXnmO+BVTeMPUenrUlJ8j6AjUFDo)L5IBhr?`U*>i z9>bEM->_t^9j-X18f1gxGALTV?zOk}E!oFkS-NiB5^( zxUZx{J_t)yVc(_uMAekG4u@u4hr`!q@4Zb`L+{Xf-^!A27gBhQe21X7vx|Rwv_gAv zl6Prgy^+^dWWkB;_bW#S+qy5{Tzo3PXjQeJm?5hMTt%jZi%MugmJwy zXGH;_GlM|;VE|q^w@eLiFvfJMI@#o~Xl{_x90s^s90_nYJ7Bt-Gj;8y;5D5JVaVN9 z2fo^GtD&$mi1g`H_)l?G3E$YUt#hsG^_&}AujPCXJlZvL)n+mEy__EnF!iSWTKMdxm|P+74U{fx^O6CB9}`yHlxHI zbq#b^TZT3(QR)&pmVKL>2Fs?ZMN@=>Vhe4pbfG`sxno41;H=ag&wVPjM^vd{AE#2Q zJwFP^-po-2j3%=sO(f|V6M3shjLx$}LTBiyvc>s%of4Yh{JbWxcHL`S%?)s?3#6zd zi+F?UZ0KFZ!?MXawAM9?hCh}Qo&AzSWZhU6wh4P_8_>4!xb%>v{sQ;e;sZ|AU=?)B z6!$Fg{%}~u_ua6o#*wggSB>yCuZ4%B3+#yfBJAT*OE(J%_O>mKtvm-KY>=++1jAZb z4Bp`SGhOrbiECXSK;(TI`A~#0=4po)l)iNP3NetNB_^2o)oRYdrK>r+dYWZgx;;dd z=vyq%-?Jlcs;y<>#NSOFZu#Ac!ApO)YG_ybt~A?JTkE#&zQD?tbI2+aY@rw0T2%p) zF&6@+zpCl|3Mz~wsW++AflVEQ4aMpb{;(AyZT60xDm8z&zvs#va&go2>DKAfr^6eY ztILI^0@LE%Hjkilq*$Bn2H~hyI22$j=2O45w+ll2_jozub!hk$uCUfgwNI#bqTKOm z@!`?FjZKS4=ySYq#KL%Ku{@DfsvVJzen!&bEsoZSw-fW{csb)O9WNZS7%3~F8F|Ju z6v@f;A~_<@cuNskyp@RTczUsNX(&Ete2&rKlj$k?@nw&fW3*KoKat+?TP0#C@*G`q zMEOoYuo85r_o?=&;WO#RXN6B-UK%xP+-(cb8l*nI<$2*~K&m1} z872;?hQP6#7M6}=H8%_9I#|y_*hqHt^oyixpQ$catjh4eA^I<=;{vv{?suF%>&klAeEh(0m1nd*skxts=U zHQS9}8iX&vv?m0DaP+HAVP891H2A-kKzihC>?Acj@yQucClC^`pd7qKj?p60vCk8n zudyv-B*)0Zwup4>lb*tjm7b2|ct?6)-R7yB0UqD#DIc5uFFE}^K8evOcmFVaaN4;| zIXHcF2Rk_38Bh*R{~#&Hs6TyFP)<*~x|P$@H+wjGdb)R?a(en+Z}=>AbO9%bpYVt} zE?;;&P)X7RMV^w%o|j#&M3p-nXh))%lax@_RQ6nbZ6x6Y2i_4C4+;a76e__>_f*ApQ@g zN6JXqVfY?m-!IC(EIU>v!(C?2V<0~apMSu22tLDQN6J2fFn!YR=Vh|-nDMajGvk;i z_;MJ^J8Jyg_^ENoIOZvQ4!#Ttm%}sS^%sz%%h@GRTaogEWp9LQqSS}p4;jBO9xD3+ zeETBmXGDMWGop9A=MgAf1|~SiM|7Tz_QQv1RhI;bli@8u)mWra3=% z9;IpZpVuFSv?I$tUsk(p(X!9I$Kdn1_aELv-eK<--XZU&-p{;;*|TEVdCO$)QTWK- zBcSmm=+LyoaQ_T6j@SNc!|i{O_hRp4?-YpL0G}(p-}V-;_MZh3rTw>gw|o8GSH0}T zI^xzP3^@hweD9~ue>gt_{||xxhn-(QJ&roRWc3X>^Sm7NEVWkyJxm9EMej}YCV3}# zlf4G$ZK+7G0idmSt1Gk-w}^~&l|mB!u~*AYOUZnx3G4) zFh?-VoxiYJSX5V4EmSu&)HN7t>xAm_t1A~bRnIK1s%ofiY!pPpqUuF;4Htwp=GHB) ztr83i>&mO<*VYIIC0|8Db@>7V>EbSaJ)PteLO2sK{oEwJY##Lae{SNqi%q0mlvWLH zrrt0OP$Hyl`EvMgIq@uCPX8lqI(oIyI9x0aqBbh0N%VO=WFe5q^0o2wg7jr@6=i|E zD60tUF*A_w^5&~9hl^ak;;L)ulV+m%;mPdHIs5F{XJ0#q#UUdrXW24HXLfm74%26k z5}r_FS2csZqREqsE-#1lwh~Z<@|}D#l;@nMpRCun5F=a%p?>r^HT*nCBXEV3dSAa1 z{8)SSa_TwtpH`7QY56)`QJd50jQT^NP`^D+=UOI*2#wPl%}-6z8+|ANBQ0D{$^@fc zqf(NKmVB=J$jT>lvKR??zycnqs*x%P#ynGaQT^+onV=kr`G88oH`+O>YVR~+B^3jJp82$ z>68m38jG8tDTo(ZEt&U{5)Hjd$knnew-g&m39DBLDXwbxj!UzaguXv#YHEU-OW~c+ z(kYa!u?h5uN~1RlWnfS!lgk8>3KvBH0&=0rs6Q>#(oK&n|K%fF z+j!~&_2s6DY@W}qxJj?qsA)#P-btU~<|N^E=Z@Hm`cE&~_Ebj8q!$fS8)e~3iH1V^!|-^qGcsaAI3RPCW9%^Cter^%RvqkfM+?AQaK?j-+~LC zU?23MV=b?^@Irvi%F_{Y_4UiIzj_&s)A@yv7G23Q4}m#_=g)USoQ{0z2RvZ>6Y?6E zyPC#J_!6*3q=b;bGgSzJ|BOe%;n zPAZ@iv{gV1p3o&=RB2%3bKLpu`<)-l<(^C~A^E?)e{+jb5TM1{+o7RVDvd_Z=O#{` z+H!LX|KWYbhdt$<_I5}Xp!Y$iZ>J8x#p#MW>9c*=WHp^^XoaDB!ss)y{!RP4(NRTJ z!dDxNXFAGY+<)@PCr`fqNhtKm>rX-udeJ9;zUj~O`T5bCj(#56x^?SK@D08G(y?R5 zUV1&mXSaoD>m|Go)p&MC2gU1 zLw{*2DXF;Wmp469Q4*q7x84-0U$1<$Ny=yO6N{gScuB*dx?D@5R?USz{cz`f>pR;y zwKma`TL<&W`ulc%_-Tl80!(x|190u_lhY8Qh;BqipW!cEjqLgG-Tfl5b3|_<>+s-4m zRtNvH+J9@*1WSmsqQt?FnOfzDbm0t1H>2BTZiR?#Wvi$mHZKdWZq55!q_Dh|tv&gi zhM1gdq+K(*t=$8nlMGx7;=!ff*1-jpSrC=xP#muZ*L$yrN<;lMyxwoBY)9Q;o5V1rX-HIxbm2bO(1FwpW* z`>?cR#=y|65z>b|qZ6WUx_hq$b(dI%A+a(7$Q0!ugH9>DIvawmJ)c;N&zn!ME6bGuv7a{(kdg{aJ7-EiE%ZMyQ^)NpajJF+ zyGorJxC>I&%r^O;Q{_46YYymSmS|*&#$Co(;`-)5e-3H7c=~kf^y$;Pp**XJbU`^_ zx`Ueb=%kzih)K^T%DWu%0;bDm_Vf=fP#Fi8YK(cr*guq~GX@4LLC~l%+H}U@J{vKz z{7=W{=M7R8>7-_#q+%L)g$2N_HTYzqoFaVYSIwxg%6rNbk9T3i5A*}!1KYX<3Tr%r1!=JrdE6tp}qq-h6C zNd&^JGUw0?^znZ&apZ>kN^3M8LF>>TSy=!X_U6!-go?^&cKeI0q9iS+aN&4#I}H}a+q7_D_wd=4L-IgkJgx^Rgut2D%Fx_3TdDz z9Vi$8S;t^QAS_?LQ(oqnB0G;9D3INs9w-+`o^0e=fJsgBL?UB0!OWu_~GQ7BxKirck8yq_D&B70N2gq3mjnFmx zPO!R|lj?1SZA+ zbev6t7Y4$es_ zJ3{a9YB}pYS1m-1}aM=svP>b@ekS=zLsuQXWfXSGy`XsuaaWP%ZNpugW zV!Cmz^4CROWv`p#xH^v7aa|o(_c*SOs~hJk03BR!SJXX9w+P(+;9<71hL+#PTQ8JA1p+zM#KORB2dW5Z|I!lr$9? zmG*WlO+7lTCzhreowk>y(M|=1N7;-^8&jTQljR#zp5hBj8&h7i4*8s#m{iv(d|eSQ zMo8B>lL@;NOrJr!=D^)U-^(jUbv#7Q?XDRlS|7JkB{+ELP-Oqxiga3pmw zT-tOd)sK=om^5LOG?z(rqolBOgSKR)#o1;31lDjPOH-D4pw3Xlse@@)|0$Eg2>-wn zB>_6phy-vvnhIMn*Ic738T|ivwU$qdQ5pNZA|@|WBJC^FD`9N{o=|SQ@`tDHpkR2+UEzv zG4)e;GC#-EPq9g-_V9>}t6wcEkEM;NpHd!68&f}}JeD@5e&@w(j;Wv0ek|XZ`Ynp( z8&kiESlXESDLh%nRdy_F23AG}5Q*$#m{b`>Y`nzjD&r8m8lkI<*=so1O^Npsn~}}6 zuy2C3!ZkA(OxUlbvAH*&QxVf2!eiaSd}Sq%kt%O-EwN=VYkYX-hq-2RICo^`2VX$C zJuG!8FIy-Te1)~DwOe^VC|X_P=Dl)UX-injNU%3l2E1YT=o@CrH-l5YN#9VJt@NEY znccIPw?Zp@=h;{|o85C*s)OD0s093hS^AxD8C5Y7anh?IZ8<`>hDl*JI-^zG#n}p& zeP`GvwAKEw&FBbWZ55F!<1NyzBc+jcjYt&>W@2--iV4Ivt5qtWORHMcnwQ1)v3uRY zEpGo_civ=W&m7%s?{){@b^CX_rQJ*Y@4BT`7fH3H(m7Sqi&y0pk5Vm|9X#gt7tGGH z#U)U7P*8CzNa=>zHalpW4N3qmjJ23m+ubU5CBWjYi01ti|1d0o1DqiJ%N_X>rZHapS!tCIEv;FtYh6K9w_&{lZ7B)Fi||2Wf7 zYJ4v9XJOpw%eXbP)wbr3m#~Dq`qro)DWx3g`(zP?gEdM@=*-NFt7fbywl?IgT=2-SOOM^qD{x?fS!5BV^ibGxP zp^4QV`DDs@dUEI;PD5jCvk2-RU$rEVm`d@35GoW_dTM0 z93Q&p(8TUJv0(zc0%c1Cb+3$Bam)#J&+$8squ3Qw{12x1AMuI}kzGmT%ADYD(X)%L;n-feZ^Z#v* zXd8#afijwSpe&9Ctv8oQOx_^qm98~RJ(u!cm)HF|6eu}TbuYZuo#NmaDkNmaBn=d}WF+hufuw_QQ!729$)1zp(+p4;kM z;bjW#705e}t&pm#f>l-i>Z$%Y`mt}n z-_H%cJlFsGxzc+JmF}SI&|s|w^G@87=fk-{|3d$VbE8V(4O@JCWF~g37v0=J8huB! z*97xx{Qg*3k-b}b`1mDiZ*_PZ#I~$a>BtQr+cvQItff4)Nv8*4=njmtd8JQ(|qtLoE*Uy=RTYafbSXS23zL) zGh!8t`X27Qr{woCe;nUGpC25W@BcjF+-TpyC*!%`)A4){uU4r0ADD89SUx@W%CanOHVYptMLmOfWJu8?WH_{ceq z*QuO%vX?gf!IAww!_M&3Fp^=&!jGxo-~VUlO~9f!(#QYq8D_X)8c>Hrt!6w%R2V0b zkcl)PhY}SC;6Y5HCRyDa8p&u?yLlCCTQ{OmOL8JBvXK z9z==3O_rdbViJwb|E=m7W+0l~{e6GW^L?KG?;V}4>#eum`c&0h)!hK>KkLC+Z3Jhv z37pk>=B#GVbxCRyJIMJQb^7PJ#uYmInbWN*gIN{7m6`vu zvV=RSMODMBbvs%%O2f*!p~f)J>+4smz|^f^($B!8DrTzxJeU8xgdekm)08|{**xcz zyo9@HtJiy#C!NNhU?s6^d6-ihM{ias2R#-wiBmSZcUVy|u$$(b7 zfiBgI0CRpp(GKn!tYEz_Roc^oi2Ze)c9@9KUf-(}BtzLHOu0z6cO z74S6c@pcw}wk+XkcNe{ng|$b~K`?T3b$QB%K1_ZZX3BP$DbK=8d790XoAX^a=MR67 z?d;6=?Y_sgfm#n)PqS0qPr&`OW~re&*izle41KO_u!d*bN!alN^Zo~q4?Dp4onZWP zVEhhd{P}#>d9S5z2k5?)qt86WX!@|6Isuq1Y+chkNSIOZI$e9{8SZ}QS&*NbS4lV!mxfhMk8uP3{I`w|c z{8m*NIIEt;zXJxl2VKmW0@s-WO-Gn_^?!GZ>tDAxzq=*jj>l^;`HmlIJzR;OfsOd?h^*kp;y0-Tgy6!4; z?)5Fc1?D6L?JkDeKE>>o-(v;S#_rmob;wMlGlo62Omy1~5>O*=@J7O?#=N1K+AYk? zp_$q(%z{DPi}izEBEHBKSLBQ@f;AXFrYylW=p}6KgpXIqD{{>)a^@A$xdz3ID7A#v z^1QGD4@9>LPY%55pg!qg?I-%KE-Wqu!|2Z)#n-Z_yN9`&Kd|`A?D}e%7|6x{iN)*7 z685;A&)}MVm1byfms$I;>U<_eaItHk$QfJ=_2`QPFut}d;Z>MXe}WlR4>RgjwyOSC zcBU`N#V~-^M#Ec#_R=SG=I6g*tNXa_r(Nrj@r|sbT<}{&(&V6d2&526JDmW z14oqGQ@iicv}Nbn3fR60`^4~l;qZLd&GVgy=hMOR-537C`u^tk_k|$(vX?bEbYB?i zEU&#=`~`ad=3wvdobS4G{_x#Gn}=cSgmTR%VS_@RoAPVkCZ8!LL8WM)T9yzjrzNI;`Kn&2uzg;FiqmO@w4a9ry#rZZs`M$5uTIdR2 z=*(J}@b)#IxekBMNEOkCl(3NBhB^5TjLLg3DsQs|(!Iddy@0NRuhzO3g!X)FAG75H z_scYPT>d{<1oXta4;uUc8q}U`l`eFZE`*n!9!IH-3;0S^dwm2uth!c9_;|07MK0qa zr*RRr6pB6G>;IBp^{DHn?GAH>o*a)eq!xTwCO$31A7F@@$`U>Vst2HxP0+~?8Py$& zTsszNuTj17E++qXP2L6ae;<^0EpoXQX+)ZNMug6@A1!oUUIgzNsfv%7Uu|J3J}yi6 zXowf3!aGY`J4>9_5-NO%`Lx4KxP7=Vtc^po_W#Ln9)g}82Fu&Q@-|D>k)}eyh;ljNHeWYJx(l6c$%E1Ed84P$C_?b&+-Pdxu~nTKT_(Pxi~oYf|5cW78W4T~ z2>%5LPcwuei(Mg$DW;Q9^cfU=4n-$f(WP5mmu_{_4P~$EBdE6%;kO|t+2AdGabXE3 z3akLGJ_Q-GGIH}s8mGN1)*kQQ?7h#}vDh_knsdiut-$9M^6RYNb$0wN6u>|};!=UUpi(TI?c7D5j%Q?F~Mva6er2P1CkD!{M%rj(c30GV8YQOZfP~50<*ZZg+mLlx{t7 zWeH@k=fs`xkA%uuSdH%`%zu@R5WYFZT_I zkL0k-0&PBgfBXJ!iR+^~oZl@0gX7PYC7h#3-NH1@+B!$Ax~2xx64#+SoTepE_gXJq zz2l%Y@SlwtHR&4gn8HlfW&T&^-2F>k z_NC7KY>jB=+zV{;yvU~FH$d6Dd9oAu-JaJYo`T`WZO?-dPq}CDXh-)8FmW%!#Qg>) z?gch+Z(i!UdFk+@E^}nsqPWB?`R<1oMISwVhtUH+uz46(P0!*>(8_m%%j3{e*P*4_ zl+pOX6MlHjwTRBCOJ0YRvCNgR%$di2_W#y0D2~4kZjqVP1@Bp7#WL55WzO}Jn(=zDgpuAfhm8a)rj~aI^mOYY#UmrP1e^iV-NQQsT_72Yh zA@0AGee7)SgAYFV=woo9A1yL8dA9daO)qKu+hY$tO2}i65*EUhCRqaVXxR8S;+FlM zc@GZn0+nF)lHszCKl)hd(9R9YYG!(_U_5J=b;6Sgp_>E5++Bg-Y%f*%_@lIr)?F>| z$kLv;djwF(W2KKj3WhQDte3RRZLiz5gajG^S=zF@6McQ|LQmfYlO9=U^?M!m*zh1& zNtL-jkM@7*85o+Qm3d^TbsmGETSS$?W@tnk6xst{d#SAZ1LM%tM6?-o=@MkR%e1lZ zrm48EEKLuQ^_c0l`B6{{iZzS9{qWj5SRbs_WHpQ3?GM_^jPkU_EMSV6#h!iu`$2mL z^avLxd?|SwM_h{KAtP5cMZC7&6}!hH|ibS=ONtb`#$5x&CJzTDZq+}osErrqnhzgzD5 zZn-mjg?2E}%pzcxbHR%5RfB!fbIi_J;ks^xGiOLOle-!_;%J&4q#dMv@q@k?2m7*j zxohuoS@e2pHdvm~)E1dH#ldg-fro~9>hl?v`fp?&B#%G%;N#@M#~&=EPDo2ZmX>no zz|U!WT7{+_q&E5d*IK7nn)!pGFyX<${70g0b>GtpDjxH;&QfpzcR(A54$uU%At(`k z;X-@Lq9dwM!vKaiTEEOG;VT0s1`pt$HCMA;M2J(Evn{QS>znv=C<*h+Qr;z7%Ro8+E&sLK=$n(G7RSONj zRQ)ccOnzTmO$)p=YHMDvW~E^9&Rq@9(bCrw$$U*tgHC2<6nblb;LCfU-w@VrcUK_0 zXwUZ4Kf_wxQBzw@dp^p|s{bpJO2AcLAxC>41{(>)K7|-;J6FipUqh@Ue?INGr$(== z@xMZP&U#{>4#qZAc}B*|f_CDuZ z_sIz%+Fk0Pe>#4jtMxwT@%!jmGo;M<*?l5-%Mf-Z4k)K5#~|iELp1*>>Up?n3@9J^ z$f}!Zg>3IH5Bj{A_jf-hr}uVnkR5z6A5h-2I0(F52za}Ia_YG++~>M*pA5fy-@>)H zfAhA5qksK`gY+lvkOkaNwSarr9eU*2d}{WxvNn!}R14MV`Ti6%(D=jf&zncf4>O(A z0xh40RJIqsRF;NbJy(mjv2x8qT8Dn99Q}C0UMMx5`{*q2 zwN8_!HXn9#)MhKyM!C^Yv&Yjmt*?!M#!oBPh*JGt3R;YgXD>GkuAWev=N^Joit7IU zm(CZOPyhLbz3%pV+4%i?J(_Oc5e9XGqt?saN0VTq7P16f9&$%gA*8cFvs2?o?P+5y zH6fbTETpoOP%o6z_0#KXOf)$!msxHtTIlJo)*`)n`$FRybxp_cGOb+W zM}3RO1JQiX$G1M60kl2(_2uD_r6KJh{dhtxrL8C$*V@qfr}?L!y8Yqs)+rVGp>vmN zqtY~_`JOTwYO~KXvmpaMTDdl3Xi7_a=1#9Whlbkce-cuDv_9oW!)t#vJ2ZQL%1F>T zF;rf&>HEG}YvcR!TJMJH&}{I`j665Ld2W7mL=A2`>7N{;bv@|_ciP__MziofE+1BZ z3tJI%9`|x0o7cS@fw80YiCZ25HXc8M&@-O2+yq}5hP%T+cSzf({GwR+Fc<00&v%Cq zu-QgvglX{1B#oc96(#_eUN++cAf)X@!j*>kaHTvvI>xhHYBw!yVIiH}H0>)#%Vsiu zE!+Zkk9ckpXXO@i*Kv8Aohya!VvwMvrSQFudknt!L+(7teGI<$L+(s2j0@y~xjo#Y zJpBu80|Pw!D}6ktg*xv0|ERUYKfmLC#no}Y<(hm7E)Db#d_8b#pk*ME@$(dA!FbIA z3rg7+{u~+iXYMublY#buBhWtlwJ>fX^kWiOTEIO3)Y@Sz+u+|P5IYPc2=^fS=ZSek zEr0mcTkfst(Lh6*>-+WOc|vb3Ek^Ze@}6*LeP3PIihFdM+->`Yw2Y=bA=N?CR|~0( zw+&x=eB&m!3=MtrJ$0!DElxwM)FgbbRKoMmmy_wL{5+B#GFokq4o}J((wK+87NZ)pb~GJYTGQ**1&5WZKEk#-^6rWJJf1vve&ZLql-#uGMZ%`Zr=Q> z>+#mt$~|e{_B?r>P-|hRJT3E-59j0CL#?i9ke^n|G)Tg?+{;sw8h-WG(n^M>hszJQ zduaLaQs1<1oYuN}+QZy8)Fiz*TANp|e=WT~oKJOK{p)FUXnikLle^x(3y161^j^Kq zp-ivMYN$=$m-E z9S48dkDV7!`F-ZcL(C6ks5}i{gHwj~d5+g{wd{-|>r7CG*7lXw>OBeuX)!&t!E;8Y ziT?Fh&xhuE@`Jz@tsUClv-)TB?*4d$|4pd16t34=q4s>C|EJ!{{S)+PW&cJ27XSZ; z06T@_1qmPlB!C2v01`j~NB{{S0VIF~kN^@u0!RP}AOR$R1dsp{Kmter2_OL^fCP{L z5hF;R760w${4|d1SGxJotJ4?N<-&8 zI_}GkQ(cX1{as=df2u=EbcrKqyzk)t&W=v`RAY|iJ*&ZV$zs-9Ojq`wlJBrAu+Yn7 zxvtb=`cAHkh=gl-geB5+NscLHL4Ubr`N}@Ia%Ian*;1|&>m^yagFp42<6TEBX}@+UEpx1Koyy8U}(hL;M5jRBQ@%1-A#E4&J8QqTgruUDT$as-Wbc zoT$g5eidbmx=q&^@>m6y zJOw@L61Vc3D{cI^m9&@fnYzxtQ($^mTSxpYx(=~|Z%{byU}sCi4NcApzRk$RG+6y2 z{mkDSl)Dm&K~70C9!%ysm2J9|Fvnu<*S3J3td$eE=QhJA zdQ~Cis|0g!^P|?T6Mp6wZ|IjoPw4v&cJ7zKgz|=_$)g<$xWA_K(`1|lG8_xJzuNj` zuu?gvD^mRQVBX3#)l2T2e`1W|Hm-Wc!u^d$x)SoaBW+#EY3@XvMW;V9)f#bR1nKQ; z-E4={!=WyJzXawyuVr!t73oEOdRLn_S*tHM~s%lex*J3k}XM zbma|1mrN#`zNU#8)>WylSU+XFpAx_;vy9NjLg>&EcQ zaREk?a+4oKoAb#9(}m_)){y3fBsw6KbV){YWLI0GCr+)vzPAT2~ww~5_ z%CEutwS5VfzZ#VH1+0>x(Jsgpmv9YM<9kHkStplv(p<;{IT*X8k!A06Hl3PbUm7Vc zi&Pfz<(+gfIds$_fB#h}{tZoG+-kESwJD5W<2=JbCj>EAgx0wr5PbZ=S+HLH#=)N? zx{FV!16E!0{_gimyCIa5_Q3TZtezvQ=;DN`P!DQ%wK3B>5Axqq9jibC2MQu+gsFCmsWZP?XFmS8sw06hr`M4)Qmpy6DsTNl z<;Z6-r+L!hSi+gN^gnL@*00>I`t=z|vho)LOtSa0Agj$!4z?!s(8CFK_@v+AbP$oq zlW;W#gs13Dmt})2eW6Vb3I-UQUf1N`ZvGb_goz9@_}z9k-DTylp-Bn_*REU%b`*1m zgKXa&2x>C-DVI6AF8fc6={qqRW<&Gwp2fFwYyJ$;&M7eM-~G7TpDu)PU7#nK?}SzI z4rHz9Qj+{To!$PojpW1^xoEm<+WJSf+`e}6=8YPv=)QyUW^n}vb49s@|8nLW!OC?< z8?3=yjYdw{W!&Fs?&&UZ+zzw+4(`tjp%=-}`cIp8LN6?%$yphelvHolNpIT!YJ|Dm zyt8?S(qM#n+C}s?IrFlm~7A*XEhm&_2t-rx_O{fFXLfd-7}I)o-TwPmUij_1 zyWyD9)@3gW>?yh>Q1m}Z=k?y?MAhP(Dz~-3d*#2lOBY#qN z->Uun4dUe)Ju_4I$UYk%*$wqTwj1_6sA$tg%V&65%A49GEr9PG@LfJtZnMV+2?GP7 zj#}GXZvC#goP3uUAPK4DN@R16^)eW-x?zn~2eV>1Z0|S7GrCqP7XqyZ;9`Fy$X*=e zt(zFooKt3nxwp4T8a*He>OkOhgiAUN0a($$Ze{|bI`)OXR` zO^#5rDME;hN=r%zd2-Zc12;J#bmRz{b70Arkn>{$xA9AN&M&v!3pw{kbLtj%&ek=H zZ@c}Dq+bPR78Y|`Jtt#&zQElpG)q1UsHI zHCXjxW=O!7;Lv3$wBPY7Qv=cWnJ4!-zgjYwTGj{0ce_-jmI{Lu50jFYLxX$I9dfJEZ}Y}`|HPPp{vAShE%SEb6@!ktADC1EmT<= zLU*d$jm`lB)uD!388L3P+}ZP|-AT^4d4ZWjNJ$%4BBdl-YC7WzCzL zMY6K#^erfXDCENIojC`hv**HOKi|>S32~VCv*(`g>Y#CuX88xT{H*NrZ7d(Evi$v8 z{>;qtjVzz)DLH>d(^JCqT=D3k`AkmwF{2r;D%T!WGSkTv%C) zE_8HV=^U7sky)7Ed;PM3yzE)$db0BJ3;MW${K8qid3WT`FNPKLLVht_POn1>me4Et z#dJOWHNQ|>Zhsjlm|rv-I^NgFB3apeZ7ec-ZeJIRWaRYqvj|=LS{7Z^T?P3CwAy|e zLal=|gi4(>ggSjRq*Yi3tbw|SrH4NvP$3XGyxfhy8G)F-!EBiuoWOD?>W@cV!7Me{UM@!?H zM?;L3f_sM;Ej2es4;0NQ=sj>pQD#ox4Mj6E>D+-C)icu_hbh%l=#Imr>$%e%2Zz}6 zQyObosqw2J9w(pa;i;M?&il?69kTfM_q?)YEX-%>(2Wor9@6jF-50@ zPD%-a^M7=TUw5bZQ%UDs&x2&S@~fzJOZTLdGm}!_`o*M_uF93&<}YaVw3frbBCY*E zkgWVMN+tW?+5ivIPJ~(grGXQnYV1B|8P6UR)CxwfOSzdp*z@qwsA;{X^R1tM-AcD^ zI3dVAMfaNQ_n74T6Xb-hd6hLttQESH=_3xFFswTL1l(I@3&kT+tw8~B_CIGF5nw(a z18BdDX}C0Ygpx2K(%gUg2?&MfMx8LoZNhaUB2E|%%J5imah54E^28`;*O6m7Fs;;a zi|KT@mA522EN}x@WGKli&S=j!EXXb-Idk(r$u-QKn>{N79DYXe{$fK(K{lC}TQo1D zIJ2q9P+XXsH;c^8&YM--G|!MdFTb#aWM&j(Wabth$uPiHQvy3d&Y$KQa`Un^sftNHkVWErv-B$B+0c^*F5i?TE4 z7dH+LB~?v}hh)sl&uXm5H_QhcVJtw=Ttoh>+)NmGa5^)yKb~7q?C{#@X@%ATLkeIb z6lctw3oXvh&YVMv<}1XIU09e84vKIl>ObOQ%`s-3`Bsk0%FNQ6XIAj(hK+n={g>*iq;r)1UR&j;O6|SMz}T5ozS1)&4=I_Z40bVcwn3o2K7Qo zzG0404CTzP_B*6Fdyc8^V#SHr6TH)I=D3_J4wfk_OmZ3g3rKTtAz3i$3$l#_AQ}_X z2yOZBG}X`cwOxukFirW|42ona8X^+U`~=fR?JKbct9hiKS_1k{=w*;m_LzH?G!TA< zy)Rbe`1rIqdd-Lv9}(j-^WHwwx2%U0bCDr`eqm-dJa&7zEQk3`oks?^gFLOEH+Gie zZ0ws7M|qrymHZD(v->k3*>R3Du?-)##y~l6{=VH{b~_U}9^>exB964U26DR_=9w7i zNf*d;wo`~Xj^NlCB;5^L>&g9$MWvgjW-T`1r{4P zP9sO)Gg#<5SjMZt?0NVhQS!6r$0;>&a5EtA-0Gy(V@iJ9AD0T%T{A_cW{mkQ$IWr!hfc(Glyet1wjNjF zM~fT>H`uP9h{xKK{8KJ;oI?yyqxk^r)W73m*Zi5#+xLprJk*LvJOC(b@M&OR^Bo)<@j+k^?k ztu67j)kzCiCFQS4S|VL=t9W^=aqO}7@b>VOZ_8SbnJ#$ai38raF~}PqBIA>9)cMLJ z^4^p?wz~D0JGN>twx;#i=tR{kni${{f6X|;n;O#We`K0b?^`?3&znko-y1hw7}n$Y(yHHoHNBPDflXbRe8p*la|6{62dv_VaGbk{b|{ej`Dz{)}vR%N5)?1lAiWX1y7fHc9Z^& z>p^D#ys0#fAg7)8j~yYkYje)sy#W$;rISgJ014U-=(yg0HS9(*G~ygNcE~z#em%zB z)z-0N0(`q_V_miVU+8K$8SLuQX?U#+VqrIxg~`$-~U zIBCy$GPLKPjg@rv0_skNjMz#TuNB^L`um{qnM0-9SH;5`~-<^ zE+rAoE2Ly1nEkaZqclmB5=F^=1HCO_2P!xO6mv#i_^3tM7Oy-M57E|U8oifBuUrv7 zYLQMVzl=AANLLmvS+NqH)k1=mbSPR0FLWr%x_Hs3168oA=VW;f9Z5#EV-k2WH#fH! zcFqOU5^Wir80M!*E(SsEULem%;B`od(XAmdG0}Z)Az94%iy{76Q6>~=N<9SuT7d`! zGvUNtYy>?)9{nIX502njBm<7*v<+D@+Dqfju%;kj{gB9tmF6(1&;D|}B->w!mrkx& z*)Ne3`qd}&YvE;mf1@$}gx>Vs{<0JLH7E46q|fxJ{O^CN0VR+C5D$i6u$z>eKx2T!t9*Hi*&6A%w?fsIrvzGcr=L*vRGMk=r8G@6`T>3DTr!-vdf z;rvG02%i!qbZ)eU3;)=t>Qe#)bEQ=;7%H`XQQg0yDkR=sw_bTYQ28iWy_*=7x3@a| zE7aw#qzZMZ^`Gi8>nZh4>k0KP>#=_IWulV~s5{`gL>=M!aGgr}4@Gc&QWU+aIo8$c z%dSJ~)E%yq>(rU9uhyvxT~X^*(ZzA9#nn-zX1Ly3r`A~0)hyS$>(p#l!+P}vmu|iK zyfs)YvW{14t)rdBb%2uROyxY+yKMK%k08lPaJO;$4;3OT2TEJ3gJo>5zfU2Of#(5&;Rp=0?&X{)7&-IfRZm z)z_TXQK}P4Hv%gPO=FZt$&`>jm?YX10CP94=y=4~@u(sGf%PKCcRb?P@u*(WZ4|i| zwEQk*V1x4QhEA9%MlR+(5)^4MeWPsO3bqUHGWDzlvmpG@o02#fSEwb_(qU2{`Ffzl zHMsm~mz5n`MUIPqNDy8S6g?NC#)4Uj$q#xTNk0=j^V7fVa0O(pEK@5!PO9KJ4yK|q zmdcgFeCs#AUkAf)zki$kC))tB*K5nSuzS5&g~ zzz?U$A64Q4$E zG=>qDp1@_T6igG9t_{K$dV0N^qt_sMExTxI)M`lsGr%z0rRWBtuWzdJyJ$0aIpa4u zw^lkI-Q?`rl(lQmE7gwBtlXkG*;%>8i7B@0lTvJikfLX6c0EVt*H-VUC7Eyjeg`4b zZoJVZKnWp*i8HI8f9ctp-`7qd^Acy*yig61n-jBlzEHDkXRQ!wx09P|>a`lAcvsEy zFF8UPSNU{qH^9zY16w(W_3v+Wyv>cIyMh$*QM(y)^_6*G_%FNC6%>iWv zb2CbOYSnJvSwrjjWEB->WzdSDB(q?yPyS#_G?HDvy?PhfSzWt*PkqhyJq`5`-(Iul z&Dv0ya)Y0Z%1s+mRX%{l1-5e?r9Aa+wAf_pp8;!7?h-$$ zR4Z(wEhs1vCSN&Uu2Pn7R_@=d{A{xlvx(fU?A&~%tD~z! zd|=xZv3ApWM_h%3{1tNd}Z`6=J_KA69GNP{CbdmG&AY4C;rqCqv? zwT`wL1g%2TXExhHpi$=+K;Pfly@_&_r6BvUDp@&P*|ET{qg>x$<)b>vbseS9A-<#3 zzvBTz$8w|GoR-vj%;v{Dds1tM9Ci#;(99#y@1)kFvg24)Dky^XV9aF5R0RSXE7fzo z|LO+WJrp)=DCA@9;q6kp&)~?C&VIaVxEU+Kh!yU^SQ2(@Eo-q1+VhTzqsj|ua8w>Q zU7Av+4aC{24}<{4M4!lyTirl-d95>`%5fZeaJ-7>Zjhl1&hwi&M_ZK|Y>ic8t)tWn za5|`{YJP%@YAz+=%`2p25^na_vizh;W}RfW|8_kLweuJ2+XR2k?AIpvnPS)cnOr_7 z_d9k9YA@k0_sO0G2iwKp!?waU)tq*`Xp1pGy|F%ku9D3O&3@}|DmESeTRO& z1vZr~k*g8-nq-bI;CkviWhG>b!0l!US&7>M#k&Qrh93=uUE_VX=b#m7)V2&xgSyZJGYE2P%&0T4pV=4eo2%x{c|Y*SCB=%hqg!OBxx4(>O7 zC50;6x5&z&E&X-MD_i zA_Fqpgf_kMdtR{Vdy2ZZ9MmclBo$0?Zz&DC2y?3Bxm|mh>$Dam6(wbOHUZ-%v(9)x zynmZ^3`tc3QuLn&Sehr&fA#h^w}Qh;xPRN)H=2alZElN=oa6p&JRdOjxc{~g)3=VF zY~uqx2@nx7ws{XRB~5A`Io~I7>|6^&-`}{(u5N_`hh*CSmNex{%KX6eWx(Pes9IJUXwIZiQt5gjmij4F>)Q^os~*y<>plTvPy;D z;3*H|9Lp+Go6~H%unK|WN@j^%ePI0A^?S2A&=?@` zDqo&rwnjSctx)ylDS=kq=_iyum1Y{e6|CGJXo)l(Wx~+x{?HF@sen*0P&*uVR?bk~ z-yke!iMuLk`~enURym_NjV32oI$mAZ@FBBVIKPoL!ly(Dog1y;!ap{u`jh~{Txrz{ zhDxnpRQIo_3W>MZtyf+TR6Yt;?JGRrQAfBwT&I%$LlIn`6h*IUj&-&Avg^<~b%*QZI(4S&t99x^SJZk{ba9+& zadlLw8Lqe1sWsMgHOuwxIyKwXuwH$^rCYB)Zw*$9tmD;M>u9HO9iZenQ+ZOUCHV2z z$k))XB>SuDoJkd&15!beI%Kz8)xX4K9D$Wo5@!k>lbY5`-57MbE{kv0#>B z@`K(-($56X{PZt7TmhLY%hZaGlPY+QgQ=*DrE;Y(-}=q(*TL}H@84$s$u@xOxT~_^ z+^7vwzFLq1bnmK!*>QKJ$eH4Q1lRib6_so~u-?c$Md=%~`FZDktX0S6^d4EDK6DvJ8;<6Jt=G6q)CBBEF?>6)`o(^xAc%b*A^n6%F`(>qigINy(jbVhPCvaIS1=B>OYlHBGo?h?f=rxF5 z%P!g)wOZ1^3^2@gDY}8^>znHQF51jp&iGBvt(DG4H#xgDW$oJYO0^?2E4OG)c2;h2 zVv6nhq!b$=r0Ch2UC)vEwbi?7N#>is-$BT<8*j7;P(nyy;>_yjUwXFY_q9{Vyu{fx zFH}S1=EUrsFVyVXSu2Fv?d0Z~daVX2-c|GbOO8-dRQ>$+hF#Fqp4ykHw{Nc|`Ey7b zv6dv|O(KiaZjXuzwPsIQIK?tWoRTr6XiC8>RTD9AE*3f!BSw+QJ8MI<3$t;-b zlRwxJjbztvuiiy=R@ZLdQ(v=vPeVP#x7X}>vo;i_+~8-Ua?^%X)z8-7LFbJpUdmC& zcGHH2OO=&sf$dyJDNnr{EjHQuXTTbiyTp$w)e75ai%L?=7IkS#h*hv0USsn=@LTX( zopR+$8$YhRQznT|y|=I8=|sojs_;XBn>xz5iyK>y*V)^uV6{wM`-baJRma+s{8KJ; zt#O{ae&*R>wEe^O;{ud*Mh zvLCHtMZvVF@{C`Tb6piEPik$KQtbC`QWkCk_4bM?xvfiit7?qD)~YoSa>G;lI}ggE z$yd&otCZ!NmHRggehaAJ}$9tlf0p5m%vdAG};8J*_C4VF&uM zXZHsWZ0qRkxIUnxJU|mv1*>5M`OM6Z=;*xCsT|*|xMC*!wSo!N_*RstW<^Ja1 zDu3K;e#*DK59V(k(%^{A-Uj!28hqiuXi!aet)s05L95X8na#EkXw>-y(D!$CZ=zgf zDad}TN>&b6b}aDgDAzYw`KXR^T}LT&i0>%%?|8t_vD_#(rzN!>v-vU4p48eQhaCeI zH1i1bJE`@k>^N4H3W}gT7&93%Re`|9O7&dtzq&zo4~0z|3i()jc)Qf@GdQxOvmdV- zZpKP5VugD!mV_N!%UUdh_PnFwsPaM@9F@mSm!_0y19A5110g^$(I@ibRyPn{Uh52~ zavX;q9Iqm}8)WE$^ZaJc(N?7fTVvH&>nQaCoDM3gnx7z}noCJ|^9m`Mgq!`fEI(1W`?U#vrr0%qCYKM&{f?c2+DrJ$eX?i4!FKWYu&uC7HK!df z+F}e4xt2!7x}{5bWJ~9M(*;)0f2e3n-=UvxflZ}LSqa%9aJyMT zR^qlm@os^u;YUMZmpFAdZ>CawAP4(RPraD4n-9{e{d|j9@i9~of@(zTZhj2p3aK@G z0EE!8IU1B0^BZF#+tiaOIw=uWu=3QFgZoWiNukR2EwXZGOMjj6%9g&?0hm0h#6!HU zRh1jt7LGB3J2|GF4t<;G5AK)g`Jit!IU`)$LicF4i8^<$SBXt0rK?L0odjiX1s^8r z8k?WGtc8;jKTo}%t82ek?XNd;5f zTS~(&!kj93Zr2{>I;{msMM)W+O~AOxtTP@E@86~!LsHd%6#b_Gmgb4{U%ma!t>CZ{ z?%%fdjV2*>o7-X|=eU0x&j*Y>?!PU>^sVD3+xS3F0z`z2ZQesnNt2pK&i6?iJJ-U{ z_cyMxt6Sl~A({5SB~AGd&U5m@nqBpK>Youw_Rc-qt9O!Gws%=;Cz1Mw?WDHmmFk_2 zsi9fRFweS&~B$Yzy>*>O+Eqo+1s9jjx4h6{%LH_y{VFQy& zrcy7pB+s-6uTa6{%%1w>1tPR(<&KEcS|Bj$lOKvclI$0K#B@>2Za*Ssw?J0vU{+AF z@VA3}5VRqWe0YqxPWflliZK(FZ=>$Dbjblhe&GgP0(4Iqh*dU3EAb`4 z#vq88E<3)N-Y?BwI3|ELDe6L^yW}>(G%*Vr5*^w;0xX)pgR9zD&JEHO=$}vTH zu}Qp=EcmzZF`RNN%Gny_5YnM2OdNHC5YWP#X|8#?s)L-Q8w5iOKZfO4R6XR(yFt*k z@Z(sHp!$8#8YMn-163AFvqWo4mm?w_>Y4-{7u_xX>;`^3lZ|rNr58z*;74;`yMZS( zw-eAtcXd*mtYMaJ@!$>oM4Asab%~EkLR7jok)qOt*CgeS(=5^xdrBt@FQzKfukW;) zQo;lyRrk#e{AgMY=#k4XwT~FB$q!jfmyf`3G#Ue%<3~Mp=|WVLncrYKzh7>A2C`;a z`3=oU%`v9_{j%`&+tGckou#d(gm2${v8S*OrlzH|OBPS1`C4F-l+W$Lb&~ShG+~t6 zuuN_-Qo-?BZAS_xfj9=NqCOhY>l-Abh9p*1)+xJh$&+wo!u&#&1{_h zzIc>)on&b)w+2kEGwSJDNobbVzClc)NfLm~@6z9PJKc(xHeNs!L(olieLirVT;g%u!&S;FAjt zRbD6jk#?o2MVn~}`=z>f_PyIQIexz+i>HS$BS z`kx>sB?}K6)iCE#d=AHlE5p$z)lz zSD9b{6}-`5qJF?E?q!m+9q}JbGME;}fHxT_9`&|(k(K#FnP(Y0Y}8f3)O(-yrm4No zeynwdeX?XvknEA^vST9nwSA665OO3*OGZME(iM&f52VsLHdE?`F&T6pzoaWu*pLci z2IEvFCQ9$Ml)gxe_9RJJI$l{YUZ(wO0vF82$m&<7rZ<5LqjRfSk{t=O73xSyh&DVy zWoiyF)PXIsz%wyA+qo8@{U7`n`ks28=z|}Bja(MrZx#O8O0(Y7EGB+RN?hFx`$Q1; zPZv(5X*PndIhzJHg7a|u3Z2aa9%zUw5QEZ%)9wneu!dFOTVR!!zi9P?I!&f4Q=(M9Nxc0=;TDNs3dmuCOp;`}O*Eto=ILl290~fB>tg!sx)uklTGl$fWrWx9Vkkw@* z3}%(8Yfts$%p{{`ImV^G+2oi8D?p!W=4aTaNy=N}Wta)qX+?uwZEA=8PRy2shf-g( z2B*S`r5@tR@$w8Bg-Hlebq;a3HQJc$BOn`q|!=%rT*4c_cLEA zOG>v@IXXr8>qJGKE`zDiNoZ1AC`uYp#)?Woypk8^m@27Ulkz~kOgkRx-c&-<=?n(T zZ-}Sad)ujR>`DAwNqOGWE)z+v#GTO(V1|pMCip6%?OM6~1&Ym@m`lw)n?s z0=RUo8u*LP?Ok*hzs3CJblY{p>nx^A@dxjt@>bRZZKu|yi~w{AV0^Q*=Fe6GBqmFp zX8%t25@n}`$&(ohZMWBdY#c+^-7R$8!Imltw`wulDA<~Wh3@Pi;T{%?OcBJhslqwU zUQj;;c+gW*h)=f6W?zW-)u5nE_x2B%+0$%EzGnj1${=5(;MOXhqx&(XaGJVFpTX$X z+$S)0pR($&Mmn2qif&~xtdJK;koZ-ac2bd3yE{+bI;l z8CjT~VzjUnJuwT5Qj8{+x}J-swyyM*T_lVKrI6wWpCWzZ1 z=lpd0PvW6k?{sORy>Gf$ayTrouFL38Ptfc(Bb4+h4_z-l@=5Z~Ey+_Y$xnfZQ1Y=9 z$oq3$ZE!b9??tlabw(GIq>^r#PTJ-1+Q=`D7kjD6K|6Wl6l80B2uF9&9!0X|g|9TmrdE4Yddy$!mULnOTg+yU z8Y&KVKgY*+!xISDX1b_dC7N9hOZtnN_}$|1@jPf^Hw>2YSuoF`1xtB8L>g(+;FG{> z$EC#3g!|5GKin`_9-K@qfSVyRHOaT+p~h2$>ep6bWHGXc`Tn z2%5A$2dUE_Jr*>Lp(c-To16uiBcT%Q?-a1UTt{b`9dbTPvmYBT9=TDt4xH&t+I>!)c<0C95K5y^;+k8@TA?7UiDl$%o{+d^k*sk*($ch$Ts4a4U7s#^$tU0Uq82Cbxk9Go+HQ z-?AE$57GFWO{EaPN}=b)*47uTA<4WYd4wf7QhLN3lx(mh2U?QDq@Rkd$K0E&_{lMP z1|WV?I`j>^d8thAl%!IklWcH{#MYb`a8w99%Aeqq(_zJd$pIhpCwYke{Alt%OY%N3 z^C%c55hZehIOixlW{R9(_BR?!qfOt*;#)Tfg~#}Cx>lQR5?sf4dP653JtjR!8>7da zU?q3L+N2d_Nh>Y#zRy5CO9^E|F^v&stCQI|$ zrpa>iS`wgCPl%Q7jgY%RxS^+zB@-fK;V%>0=))_eVS@05o?h?f=rxF5%Px|G5#0x6 zXZm z`(n?ny~2gubx) zh21h;>wfMtU6|0}_TfUyP3Ano-<=Q7yr{PmLfNtN#tFjbH^C+lG*}99PD!z-=`yRORaQxj1`fJ{0GLnceeut|W`^}JOSBH|K35LZ_g$idAx_T4}XCTLto z4XbC25*0*{;eD&RCnV^7=l%8WJNHx{(p~+nZ++`qpQ`#+RS&UFG3184^!t#251k`J;9$=pn-#hgy2%dxiXS@C!|HdUal!c4 zqBQLQkUKGjyTJEN+|ID4$bmw>mKdx_Kyd;qvL4}8;GgOt2XI8ctxa{a$-=dcs4^fwp`_x#h^QP^@Tvj}AQ=Bl)&4A+Lwbe>+hH{)tma_bU#c>2 z@JF`4RDHm? zxamKD5h&6L_{cT@OHYi1NALhv7gJbefeYROO!oX^EQ88I;Q=y0L%M1jr}&G)62eLL9_e6|*ZaOh~vv77SoX>bCo z$H_E5sU9$(F47$SfXH4{VPC|9MrkzeCCHgjoHT+z>0&Rd+Lz&o{iOsuZly6~zFt#? zIETw1wN~VUj=x&N8j;O&>CMLnq7|JWbDZ?l(8vG|H#ks)l>PxfRp$8ksOAvf;M0$D z6jsQk!li5f0Nd!gtKp`GH=V$57e4gw0$Z%-b6MIIo>9OOM z{{j9I7e}BjT&h<+UCb9euojl`FBC?1ZHn5Hg?cUg z++zA+461u_Qgu5>bsdxJJUzh<u+%{`fZil)BUGY@UnJre6ft~Ry=n=FO|k^ECR&0XCYFHCL`!>BOVPv9 zPd_(uh=1S3cByM~R}l;ljQT?t`=Tm)v4|bSvSEI}1^?t93S;3KhGOtfeUopt2hJo9 z2N{n|2TQaO2FzmE>(ttGWt#Ku;h@fA)1K!75VK(1keuGZ^CtKS;k8=Mpcu6nvDvF8 z7oYJ(e7&`2u8&*~_nb%$+}Q{V_p>&Gp26N&Otoi{-@d&>ufg8n;_3Dqjzh-8(ez>w zhTc^KeW1oMXwAN&VJAYvP6qxo$TM7{72u}Bx0s_nh4ys&&yVxHlYYM;TmZ_rHB4n+ z(d4pF1_TJ(Ven0(7z3vUCpiV~fKy;>+$k`Rozj9sI{1shPF-W?IRDBdk4UfJmPJkB zz9Sw@CyFNTT&7_;W-3fQ5Tn-k%ZvkS8EDj>wCB$0HZGqzr760c8Bc|dmQ9{DS?H# z2G1d4;O(KJZDp|$)5&j(EU}~4Lt?1NP{xD}JwJC0jD#}|b0#z1*e}R9FTKX;%tFTD z(1`$1lMg!Jm(v4WV(lrz;$P1}c5P3UBe?$9ZbxuRFg1z$Hvg6qxz^D$R5YUgt{Dp0 z;{7bt}uy)V0kbzXc;nv%^68t$S@SN+T*Z;!D&OnP^>+Xg%9V; z>@n~%LmFZm@PTIiTj*ky!xlT|$`CYQ2sdCgxvQ-Z%o%$DdqL(T2f?>r72}?$atyuI zumF5CEMD{b#fAljH6NnWRgPo7Dz3$u=iom8+!(wd+!`jnuUKW&>J8m+u1Y+VKGXEw zxg_pvkG=%laFu;!#iH1AdPCCNL^L;j{B360S3UnI9$PT>$k+p8P&y&VjsB+cSW*e@ zH+t#K$`woU%;t8%u4ybVoo{}#QE7X@h*wG==;AcnBx(U!0Xe@5Y_;9EzN^>&9v<+Obz_LMM)n z1+XdfF3Y^j#A=+dHvnN&hWenPAFybUF=#v~f_aGC;5W!)ACzJ>by2zVPNZ+$+T78y zd24G!r@tNDc3Vu_hK9C{AiT-k;zb=TZ5vRlw`GI39W^vIdpkP!v_I9kGS1iTMTre< z8@!uZ8@6omwke9+z0KaXr?w)W-v|1!-i{{Ub}-P=yvf_rNy@jkbaZ&z(y<-_#kLmj zhW3``A1k+XbRwvPc=wcdYcpzT>p-dPTQ_)H+nT+b{F^s>+jQU`vvp&KxAUp|YwFtG z(2mXf{7pWrmD=9Wys`CM@YilRSH$V~8(b>=r zFE_1>X=(E!?;o1Ht*zd+PNm6P+nQIJn|%H@)ZEba6l&huS%@~Ycss7<;wmv5&_tVF zYQqKFu-Qg0G`<~mcw5?561ZxeBy(Gfw-xPa^tNHR6WR?RyzM@3V{40Ip~?4007`uJ zHGn$W(9nVO4Zim6-u6vso3|Z02@oeLebxr0fc(~t(CE#?>K5o|@Y>sod#^L5b2}98 z@IsZ_aUX4iX5qe0YU%9sPT#%rm7QEc_shF?a=TwS!0p}r+zSV|m!3ViYu6hu?CxsF z-MyD9+`qeP_ugk;;&$$T;n|lC?A*&0gZ7S{ySbS!?BDrk+Z%hIe`)7_uKRhofpmH| z=swR)Klt39yf^l~vh&c+F7Afhy-@CjXAi!zb1xZ}8b*Vki40uoKt-t0jefTf`4%G2 z%7s#Ku_E_Be;p+JT^Ib%eK;xcj7`nL36sC8)8A$H?|R3->p}l6oqy*u{+$*6=Lh}I zKZbLkd&&RYLjR6W{W~Q8jx7JPulb+7!~e`#|1+(S3-yBimRO}iWMqu0PZ|wQFnTp- zqgW09z(4S^8N5usr+(2pps=~%BX2J*+;S0l7fw#BMQYYsA`hXKUewZ!TDBqIMda&6 zzHO+v7i}cPHxjeHG>pKv7PX|ImO|9B5VfqtWkI?1^pT(N5@)Jc1-THy59Jokf#<#| zp=x?nZqBIb?EGIk{E2TvgTn9JNekWwdZL=p~~VtmlZz@^Y)y zWHIQK?|il#p=$IdN<~Jj7lnyXC9mqGRgNL#nhSL+_A;s^a^VZ9U- zhxN>=9@yj5WC}Wn&;@vT6}RKJO1)Y&lg}CVFAkw9aw$*pf()wO1pkr|qtm0s9LLq_ z;68^#n>M5LsJ&d`-{#pJXf;{`*S+xfrt*X&RKIESY#&yx9Os7&-G-RjgcNhFK0TpU zlTw?Ih#rmF%ga4jAyiDS$gKeP;i`@PEm%+s``?4mgE<@r_gAs+?j=i>xZU_pE}VdY z371Br(ZZ$E>0;p0>-DhHHW&^qpkNkUvuA_z>x>uH8^2kiL0Nozdn0z{fvF}g;VS2uCI5!Q@_wyzr5NCk_eIoqY80jV@b zD$A4RmrJ5c`nOW)`b_D@Z={>vkQS|$7H3Jf9gyy*ke0q8-IXET{fKnW0qNdmKh}zex66=ZA1spSrHz`V_RK z(S(|8sPX>$y)nP=u1CHY36vX2>}x`(i9;LUpBrtcLS7CB6YmnVQHM5Wp^YU7$A=8m zoQ;|})Leo?Q1e>kn~8iSBx2l$T1rsMTJ*d5(x&-R>wIbRe5pY~jqvXXYI+8>J#VU8 zB-byJrA4xD#vae($Dr3BcH#S;kJ4kzsmbP4^nV$dp~U}#mPPy&P zPy&PPy&PPy&PPy&PPy&PPy&PPy&PPy&PPy&PPy&PPy&l2t|I*v2s}oKTTwB?`L!f z3RIgTx4vC%wtT=B&tvmMW)~K&PT@C~Mc+p6jkwFQ`2VP6Ul$oIWb?~V&T)}nC9;PU zK{x-K9KEhaF#W)v&aDw@c#~Usl|RgtXJ*OCSphz7kc}T?Qjs$T4D23cUmSla8e|=V zdhPL%0i2yW`f`Y|p}24;?x-ou$Mv!CeOO)r#T(yF zAY?eJLEhNMHW4i+*4o|YyiQ>EU`6N8MqhR=<)JUS>?P8d9_tOYLQJ=dA3!~MsK4O%e!KlTpGutL2-pV5U0P1f4h(E6*Fog z$flKt%!1kUjXoX{rc31)O3#T4@60yfDtS$!btEvrn({K&zQSEP5h!AtxPhovDvYaIz;pKL}U%%7Ocw5eWLv5B0;R*Ra3xrRm!C$ zA)Bep$m+4V3v-#NxERpmF2T?q(%YQXg6Yx_bjNYMA()fiaq-*KR14E&`sQfh_;wIo zXJeXzg~1HdxuXI0yVtE_{h^xvPuTC@>>9nj8-}J(GZNrGaZU8VB+8#U*kV!MSHz~P zj-|U*fs*;hO4(Z+<}0uc4^9`W6QM$6{}=YzmT5PHNs}xr`z(?0Wz$5B!zNlRq@Uio zJDo2Ug`me~DCpK}@m$Fdit7(@Cf+2noKmfPf0{)rUrgiYT}4zZjynYvr@Q6AjGVuT z{NF?-)h+*S7FNwrod(sZYBIx3kn&U2XNDWHu%ntXV%@1Wz=$t>7LRqS)Rb-LnkgukBgmQu+0cg|Xm!rhaC1NMtK1II63jewt4pG!O zST~qWaR=B7Bs;+#2YFzL1<^SoGT8N?0`DS&?@DQ`lqRPjKGn&d$J2K7<#IEg|1@g$>%H_I=}3t+Me{KG^y2kUMjx}?}kMA3j1 z=arjq9I)^Qh$gOw{|C`bz}XoPP15+&S8F^^@?s$`I*rTiI8?#V`x|ae?_js%{r(C^ zf#}E=9cFi+JP+d9k@7j9R9-0Fn+7d%%ZOtiuEb;PIx!4=G9EtscxJLqmC$FtFd1-C{x2qRIFzF+kt}f#4g%F0vR!|I-=i^#%AmtL3?uoC9+{ndr zgD(M=A!>NEqds=LV>dwrniLB7csF}SEdUeingUE8%yLhcO$TLqVdCLOG>8QFeIm<< zz_EO$XiFbx=6y{$as@NHl}Y*JPr$y6fXa&9d*EC9Av6exb-pmAKG5xDd!-Nl|1_8f1|>xh&o+ zvNwxlVounrL1)f}hAlqATd!sd<6Ai;TdvKLw`Iw9O_i_DmY>arp^HZEK1yO~K$OEa z`SdLLjXXI}8URFQDheXjeP3E+k&sf$XI8;@Y{d~OaF zA5i1?0a5Urmudpg+oN~?4cD~3i%Y1B9I)#nsb!iusX1@LM8k8;mPj@Wdj4})&yuMy ztw-;EQ-rB4+d1}mGLip)Co+!8pE~elUx*X9t_kb%*I1GNLnZsUI$=I{;brm9MJ$AL zr5MDEPaPw86#s?9%TjwW`wB^E%3>kL=sfwEF-%BBFid~iM}uG?>mftLa?WQh%_ zQ+64CD$0)hhorUXL+_GdN66=!~!uK7p~i z%X;~zNZ&vfMb%gUW=Izo&wt@kb}E6&t5J9>iNfu;pD^GF9TSYY6y1-&rbFo%(jV*> zO8W!jdl$T>L+71S`|%uU0rWS>E~v5#q;Ek6&AX(^E=`a{R9Pfi_6rxwsKb>ZdmbnY zGMy^ZxnZ}2$COKiD62&1uUxRG;O2k>v8o;faK?>?;w2Ym3IQ2rE)YVZ_;?ayHC-NIA1u=+T-8}!24@7dJX@z^St1#yxEeS=TnLO9QE;s- z&d9*bhfQx-+@d!HgAxOp?ed>*c)mJ(1nBZ=8I zjaUfpY)f?ViAE@GnS#v$)@b>&+Iv&b_VrNUm zJjYlmf7dBvT=$4R7Vn_RF(Zi^ldDVk$KG>p7M!yMX9uXTcbydDm{>G20H;ZO7PpA7j z$UjRlTwgrx)?y}#otVZ3*JKF4LoejVWL2MB0F+?G9ft- z3CKn_Ewa>3oDsNctbkjsE2a$pcV3t*f>4T5JeB#z^%Atpi8&MM2mFY3wbC>$7sssii* z9EL2|rHMJ!1-Ne5Xr90^4mjbOSM+;QGQ~M5nFa8KzYzAJxBIWheADY9bL^E7on0qp zTJj?a@XWI0L{i{66*kCLcxGEtA{;!YS>hvk@Z>BSk#~e#;#9}SuAXnFM9deC&eI5pp>|^0CYD zel9;Wk1d8^I$t^Gbo0MF2?3$TT4QyNS!?)JCrR>aNP^-eP}KG-V|G<3I~Q4t^)O*7UPK2TTqh!807M7EUa z_$&1R7>qb7ED*PBS%CL?!ov>)D}qyl(@Yo6NWDUEeQ!Y^xSlh}?K3jP-=qY>pnPcb zcJi8^5@27=8^9m0 z48Q@#0_Kb}5~P-)0B>XhAWZ^ql`Q@M!mbx^$ugS~p?jmzG(RA+ zT5^C%bwhAsAW}gTgW!2}LB`Pwe1p9fY>&w|4E}>jyD;Uu2Fd4Nt;C^|e6l4*pl;<& ziGmPoA>P3zN7*?3mF(Zp2QYp{hHz}maNj6&1LkSs#@ArRl~~fmmMsgQ|1FxJ%k+bt zsfd)6X~Ytk1XlcKsD+qaFl1QVWs6-PK90v6gv2vPY`Ft?7c_c%{1QaK*BI^-e1^%fXasWs4+uBq&OFkim z`G1ntu3uz7R<%ABl`LHAh$;i}6G|!$jEKr%1+OZw0D|$)RPE2AIizQJupL%&!fFn- z{iP}c2Y+PyOVtN#8+sVD$5ibxk?kk#KP9r?sxmLShI4~XnV74}6uXp~0dUV@wn#YrRhlP>nMs(l%b*k4Mp<5n6& z=Ib?Oh;z6MQfoyn==iHOtP$Bfm)?AQAX?E0GRH|z4UG)oaDxLyNa-K&Q)P~ik7^F# z4LTv!@rm%*C)AVa2ZIMglgn$-UF%<)g6pWhkx+#F`0c-PktuBDm{B=8`eaa;}DqGjzTU4_P(&YKxb1bp&*;FfUnRD)p27Xx)+!38EiQiMm?kpsG1NcaPWeyQ@>=@Qb z;CB|{@PRkGV+NeVa4FdRBs^sIjF-Bp5GxM2m_$&N4;13TbAFcI%;&j|j|_)~J+Wsb zn;tuE`5)jfad8Cd!lioE)5Uzj18ZR^|3YE(n}*#+L^(zc)(g3A6ht41(`uAX5d?D* z_c?52LPt&81Lyc1g%hXnlZAK$K3y0c7&shtV41qsKt4>xjzaw1mH*QuwQWCA+oq^J zS*X{-&n>1O#-O?NNbOIG+K#K$@%ygU1{EtG zl+xW{ST%X56qZl04oe+G1L#e%HbNze_(dXqK@r23)vK0(*d$9pYoaCSVPXmBOtiFD zwG=%p{q%DqhxqqhY?rz=cNM_^!KgoUu`jB!7mL_IEF0zrT<}l+p)eM%VJHUw)HnHN zd*Dp+aFFrXbg)DlVZbbgy-ux7SEf1d9uDd}Htl&X05J>34aw;pJa2-Z5MHb042n^U z5u3ega`72o#MfJU=K9F>aL}23igFM4ES^;i4e2Y2SQ)o}O|NJ=LJL&fu!Udp= zTf{k!u}2Lq#L% z@0y{2JzlLNY>6S2Vk67!#$Z-(s+|!MVdH+~N>Ug~Rtt{`tD)?G0at&gu-p(al*OGg z7=q?yX~=NM7H>Ed%m`*0D!KEaTh+6NAt0|S9)|`^ta4=F+r~#k|i%pLUER!mVNA`-)XYt=`ZL=c>d* z=`&5=olD}*_UKE%4OiJ$RxFA=r#B?MO+<6k$KPg_ebw`i;;{u|kBmJq2Bi~%+~{vA zk0q7helywQ;O7^sT{}an!0y+mo!@CWtIo$+cm+wx6bNOnl{J>O;fngu8H2`?BAAEB4Ss_>_CYCDQx}yx??n36 zt<4=Ro42+$bo$%TZMVg=ZD?rQ2*R7pEnd{o(zXG$dRsPl+fhSfv$vyjPy17yE8~3a zUX<9-w!yopwPDK^Z=0gH-P`PKdul84`F)@t>+NXrZ3hD_&6~U}ouqtwOGk&dEgkD2 zP;6`QZfI|5{;_gPM<;?xh<8tUw>G1ewholqzIB7QwXNB^$-jBCw@nBBF~%^O?)*yQsfUqdI_0F`U}aBuXs@A0*F;)ZVbx3+eId;=6g z9i0vB@N(12n3gs#^8TU8+uG`F>r|S&wXJ!jxyk2mL(L6sPod_morP#ai?`!yF0K;8 z0Zp{&r8Zo!4V!KBLgU*}hqt9|C4sBfNiw&!cw5n)MsFL2JE7eG!rSiiHnz4X7Mgs2 z1faxcUjwM44GkSg-{5QC?rq9rw{TXcq44q?XQ3@ATa}U)jkObicfNC%5~R1Ki%-&%JPfd+FJOyLP?t z!tSny+}(S*!u`9ucJF=mC2r^b7oL6Tz|Or~F=+4Dxtp8$!v39qw!N|U`ImO?=enPV z8%U>jgYNU(^n=gs$$Mk(D?1PE?BZ_7-3#Sjc=q5cJNJ@tsbMtunaIGU4pf91-RO4< zk#8aLtXwD+7b|lA^VdPb-*v(N+=r7A&)C!~oG|&jI{jUC|E_oZyB_rK()o8jVZ8@O{SoO2wi}eS8+RjtJJGiGx?lx|Kbp;BA4eCZyH7T_TiRjU&y}aCm6+*@IirfltAFkTy-+~3Tu>U;>J($CBaDNs1?q0HFiQA3u zFAD@trkeHa5l$2yN8k3WgO(qk|vMF$x z&F0k9)G1S@q@|^$r>9#iR;x85BO^02Gb?NA)T!Co+0&*?0}wpV=j7zT(Lk6!eR^(g z?hLr{^73pp+sv6W^Yily3JPYyHG4KVzs`7Jz44p%OPALfKd5um*DW>I)o%9~n>?J| zQ*^@fvtN1c_?PGYWuBVX>vbFIleqdR`|Gpk*3Z~iUpTdX?)rMyJM{~V^-J9K|Gu(* z#iR8PR@YbETfb(Wgpi~?EyeDZ5+0J0^Q4qhQd+H)!Aet~miSC*dYhE@ja0BmnzLOh z8jwn3q_R9|ez_#Nq<<@wuFsTi{6@Oz4QbJ8X>pcx+X3m03Tf#p(p?$S-H%B39FXq) zm-Ndx={~D;f4cObPFnS$^xIw1L%)z7z9Lm^ksdWltJg@6^+``mk!lu5Ykn=&R!M6g zl-4bh)@MoUhorhj$zzc`PfGQ%QvC|4ewS1~DAk{DfblE5x9;(t^^0WBb$$qE^{MOX ztxrK)8cnFlh8pj`-y8D_?|S5mkwCeT#J(nknmDup{<+bHD&*yGF!3%y8+B-77TQ>X zaD2!>&Dp4#L(L^P1U0WkzM05ZLL$a}sHFt8tVO?@FKwDHwa%9|&zBk`)Cm8Mpr&U~ z+w-QnMRNTjSz09fX6*4iehhjIVi&&e`6xZcoSJM-MgNzP8A|*=hPPy&PPy&PPy&P zPy&PPy&PPy&PPy&PPy&PPy&PPy&PPy&PPy&PPy&f?D8=%w-c+vn=!}Vr7xldMqne5u(^n&D8U`U#B#FB;g*(SE zAF-N`WJWLlJU-(LXFC^?r|V@Dd+yF`1FoIdBw9xTqrRuWHSn3{={4+56i))5&m(JO?4{+Db>yH6Xib_31a=OngX_~QZ6kC*-T|dR*%hH zn9EGX#eg1nsRyMD>21zx!E|W|y5qRs5X?#MxcF^qs)cDXeRDK$d^?D)voTGXv^u z3#(?RPJ`-HHJRZiNcpMiGs6v8*ilUxvF=nG;KUU{+bpTz9Xmk^6?u!Hti*m@8 z^LLT|yU55QZYq?8#HWrhe~5Gh6zEgl$sh_$Ajxy?QlQCyUKzECODmoE0qO4{5jW6@ z?_vIRG6;j70``+iTMTrvC0>E0g~2J$n*rettOdHEKQX5W>EU?00eaZv?)f?$y0ZJP zbzEX3p)6I@DzeCO$XC-mLODT^0JQ1x%TZ$I60wtRpCaF3g@4@+hbZbCtQ*XxxC873 zlAU0WgFLXrg6JF(8SHvcfp?L?ccnB|N|RF%pXy}K<7qqka=97L{~3ItlYRIElZ7MY z%})0437A!*FNdA^{DV%`c#_e>o8_0~1u$6!{$ZkDCTaZXt2Le{d9jceoyO&M9I9aG{SCLKcd*;>et(6dKy>7b4zoK@ zo(FO5NckL4DlZi8O@kJ>WyG-$SK={tofw8b84n+RJTuv*O6W7_r#gO)c(|{oi_<#_ zMR`T8yfim}+tmvpnDmiNR~K>jLI}fSD<}ra^KmUWkaCGi_r%vlZscOR!IuEb5H&p7 zQ6D?_59TxN=*tYJO<1#!yTt#kpZ!-q7QLo;%<1H^tnLa&9;nB<*-u=Gj}U9Va)FN! zJk(gBv6~ezT_j;}WV}fs8`C!@9*2cU3YUM?jym8ma*Os&PESA|xr#Mn zo~Vt@k=WTg_>+AVN&P=*t3E={f{)O%krkXdI));Ny%oxU2t-zLMi^BQ&0u9zavhhx zpnSUfwchd~m;u^K3sd1J66L?-24Exmj=w=qlZ z7=)0F+{~4$7VSj$G0;t|bl9;jzffeQN?hn2TnJ>aq$n~d4YJ6cTo!K@*_%Z&F(>TR zpfhJf!xkUmtyi;!@vWSaE!Sqr+p^@lrpni6%g<)R&_$znA0@FgAj)Bze0rArMxGof z4S=iANT^boD6)%_r}6TV9QoF)^4Vep^~w+D1aQNX)I}x9jYlweJ~s!852$hcfGBv* zOEm%L?a{mchHF~i#U<254%qdP)H2PS)SNeAqTxAaOC*~GJ^#6@XUSBU)}wd7DZ@6B$S4PaSx&FT@F4*MxQXYplrsp_2VvoiLxf@Ur;lA{IirQVin7r;ZUk zivL35WvRWGeTAenWw8)_B8-i+Kv}6ZWm5oMJ~$r~*X_5(z)OJ`vc!heDN1$?1qB3! zvf67;>a+2@yA97fSWCU!Tc=Xfp<-b6T|^B z`V#ps#uWp2Z9hibF0vO++!Mf326BahYL)*Qug93e85|}jbVgVSpTJn%Wxf1Uq;DXL zqG~JvGo*`)=f7|%JC#7?)hN7`MB#SaPZ;oojtNFxita~X)1h<>=@0e`rTu~Ny$fE` zq4UnE{dkVF0Qwtb7gX5=(zhUk=3P={mnO&}sw@&M`-O{T)ZxmIJr9%xnNF4I+^}21 zW6C8$lvN`1S1wpoaC5+cSXB=KIOE1c@sbNOg@6n*7YfI#`4F!!kemprXl>T876Fs#|r$|?+7A81Md z?{BVd&jpWTRZj450lQI|KK2=~@%Xy5d{vGB`*oN)ygf`Tvu)9my_tg9>@fHxU zpbp;GjBDXS7CZaVxE5(N6auX}RZF~OE4CFcVv~dl9Gb6fFG!%hzs(V^8*lFuN_*q3 zZLjB)Gmn=~IeEd!@l)T!&m8_C^33JmB+oqF|DJP`pmOo?Pn=?(z+B>fl1q{sdNR1) zriF1M*UVt$e!Wh$^D@zhjGr@J#=bqH=Q27IwtqGqr*e06mud=;mL!c74XafL%)Tm0EV7`=X5ZX3pT_Yu!aqNX8(2M zW&5m%j}*E!vIU-;<;KV#;5p4AMxKFZw#6BF0iIJWbHLO5$m@{K1dn^*nE@5O15Ybd zGyqQvRP-S{)1jg??C}iM<8MHiYndB~*ptAE!n(+Odub#NgaTMH!!rjgO@${9mXtQf zM~dKm8d%E4E>BTiz8-{WPzbj-9SYq6PYV?K1w5@#{eAGvfI^v3VDQ{J)m??O_*x%n}OLQ`VbBf?Ji;r32oiTzlPH-B@+wgaG&)40T_%pDl8DUY*~Q!dcwmG1S^75gVRhG&PcsNaD8t&)8(Pd}Z2N`Ps zzaBtVC@buB9LR%JEaOalN~W@9(}(37^5B$zLmn7~jtZ9_$b+_!^0$Wrc&_WzJ)Myq zR%1BZH{WtA8>`CUn-`9DY!caa&YQu0Iv*B+`0-rOgWPwcWz#AwDL5Bo5Jkwk$u6w0 zdeYFnf!^P6_{tB6td<;LQr!@o7>HC5#UOZIU666~0^eY-1>0lt4TJw+(k@K-u0ito zS1WPoB%f@F5vW^vQ=%ZmT8MYB$x$|re_I8EPSB7YrE|ciCbWh>znj2O;sy5nJxS2#XA( zw?~d}u}(4MoMJIWBuK6eId8MXIGyk~VNDc`zh59$TVf8|bWrsBkbn=JBSYX|&mx-@ zx)i#}4*iNBI?}`HccO8@_}8K|?EsKFF@?Lp_f6c+u&2m@LcW$5tVuv|0xPl};Z@+D z>LCYkM8B;~b+hCXQkefIS?&5o_G4A+V^PV%wT`GVAU~m`;=qWg99HnE0t+A*|4h~X zESf`lh6meWH7Bg*VB24+GH~!mw!c(;z_y`>L3>Qq9uwJq(*9E-`>iSi6yK@I@1oha z!6U^k8>1O$fe{ECfTzBBg=)QVRjj;sSh$_>V`wz@~&CkAQnc# z>;W`-yG>))R9Fplk!5At@aXM#++&5${`Wvs)Ck(;hBFMO30_(UX^%!5g5Qu_f?nr| zg=jOAjYC$`x4}61V5wfmYhB&JxODgjA0Lz1NA;O&U*Rrcm7cw`4QnFIaR^LoMP1HY^Y?ugEo#P2C& zcNUVp0eqytGKYvcb`0wz@H-1}_`sXpF$2zFxD@Pu5+1U9#!KB)h!qE1Od=@C2MY1v zIX_Ep=JQ;~M}|Ygp4c;zO^+S7{15P#xHtlJ;ZnWo>0-X%fwi!df1xn?O~Y;@q8y_J z>xEo53Zjq1X*Eix2!c6@`y4hhp`)hlfph$h!iiJ($wE8=pDv6J3>=O+uuNTRARne; zMks zr1mF8ZO7H>_QzfX zY?39QHPI6EFtG%5CR*C7TH2U}HvD?m#zn}x5H-5d@75w!GVRKSe+zHq5dXf5?NZm~ zt|Ay981;uP_C;0pVi7xtWyAb{3;xMJ6vo0e48`D|`X=9O51dIJ4l*8_4wh&m44B2R z*QvGX$~5QQ!$FToecbGkY~6?E5J>MZ!t%E3hn9kpC9LYC;fgyxB!%KYnaNuqRC~U3WxK=nh&>MSzm&kjT!ZHjG4S?K z(YCVKi0S0FMV8pn>me~zWGG|8hMu2021ddehdGlOZ|oOjoR?nXbY>yraOgyUsL2N% z@XP4|F0uBMVezl$AiK7w$`M?DY_}sgC77DTeVczviCpXG87dl4f7c8J?D1+HVM`3D z6dPG)HwLqUQ|*k92pjh+SCYa|vRZglSPf+d47mC`h2@5bp)Br{!4NbrOGAc3ws^y# zU`8<0P|2MS-Kw5F3;}sv@i;VSVwEEU-!?uXBL4&C?jbNNEDc^1mM>WRz#~HjXp~W- z2V)trLw18f0#}$sL$ExU8MF+U!sd)5E@T)ATJ3Sz!QiwZVJOy~$ij#7W%d|&nIR3a z4fsH_{w;K|%3+J0b7cq`FoYYhn%vb^2ZuB>m$C65LznScD@bin+ zuAL!OVE1cO&!NXN_r}_Fo`To_{GGHrU?}yv0;%pfADfIiJfF{&{wM3oFn_kxh#&xX zG{f7FofS1Ogo5A0Az^ITgNCbH7v$sl`i9i%wZqv3~m`3<=FzmT90N=ZqERf!B z({{jrBY=+(C*bX2TgqiVNLy7iVSAyK(0{hazX~y0IFIcI?%f(21jC0c;Ar z%QEjWu^K1r4L}%`p+0En2P_(73>r_0U>+hj_zm*d2c=lembjSBi#cLQ)}%1``qr(@ z9W9%;wl;M7+hf``G_-95$xY@KFY0J%+kjfVEgQV;sG+gh+tInF{i)8CalUphN^EG` z;N8^Puw{$4O;OzLZT7Z3wH5jNKG2W#b~O36gMpUjP2QGHQog;Vqr=;lj`a{IwzYUS zw6`?>Sh=O66G0^iyY`fKYcpzT>p-dPTQ_)H+nT+b{F^s>+jQU`vvp&KxAUp|YwFtG z(2mXf{7pWrmD=9Wys`CM@YilRSH$V~8(b>=r zFE_1>X=(E!?;o1Ht*zd+PNm6P+nQIJn|%H@)ZEba6l&huS%@~Ycss7<;wmv5&_tVF zYQqKFu-Qg0G`<~mcw5?561ZxeBy(Gfw-xPa^tNHR6WR?RyzM@3V{40Ip~?4007`uJ zHGn$W(9nVO4Zim6-u6vso3|Z02@oeLebxr0fc(~t(CE#?>K5o_@Y>sod#^L5b2}98 z@IsZ_aUX4iX5qe0YUu>8|BEgSqro*NGH{K%&>d7R&ibEegJRDIHDaDvgRIUB`l_y_)hm(Ad1@;&v7 z-T{Tp1s{2Pap9JWcqcb0u@4_g7x}iK=3cas6yHe9`qD50 z-&)j?hFS_y%RCB(LRK}2El%W zvQZM!pyiOsRpsPX<#JV3`*YMXm6g%L)u5M*Vz8bgD$C2QR+Gh`SHAPva)heUnr20$qO>5dK3IhMvP967Q^?pS{>ZyaA?zJlpeL0OZ?kB zy92F8Yv8&U{@zrckc8?tZJzDJ%9Z2%kfGZUQ=5=tuGOa})M`>{6B5y*QG0p02P=e% z=@q#Z;67Zn(Z2-?YGMC-5PC3&iOHWU?SgclS zMn*lqsY_^#*XXfYU7ZeoC zf@}6{aDJWf!g}L3>z6LCGk#F#sIOaUuB+YdF*bQPyQk=c=V!n2-0?5Z{mVQxuh;7~ z)F*NEQ})+q&#j-aufA|<{oM8Su6ODe8ta$1>;HXa{fbBHAFQsgy0?DKJP9F5ds>R! zEhRi8CFe;gr=+x6DT9@!J}vQ?()2bd?;ELLku+z!R5T!!#zhKDqWu` z-S~}k(;L#F)zacD>9zyX9Tn2jSERc#q`M!H?l~ac`!DI2angNO>Hc)-L7lYfL+Q7> zq=$YXJ$yx~+9Ew_lvb~i9_y2ym?G6Ikka0qH%i+nSY zuY^R5`%p^>YFUeZH(%N`UuvB%ZJsYRNT?D19YIacptk2tb&KTsMY6O=_RZMidHfjk z8pJMq-}6y=j5#&goQnScip)ol{}~&!Rk@7JGIW3>pTqLQ?zBuPPy&P zPy&PPy&PPy&PPy&PPy&PPy&PPy&PPy&PPy&PPy&PPy&IzXHhFx{hy;#;&-1UgMqN}cnXYc@%w82b= z*6D78;Zh<7!8n)*5d@t4pQ@gjOaiX^?)(3LKEL<>R)y}mo_gx3Z$0(YQ`G}SfFeK< zpa@U|C;}7#iU37`B0v$K2v7tl0u+J&n-CaL%Um2$YrW{6lf(QtqSkZdb|j#L$jHbe zZ79Wl=12zQ^hc^y4PV<6^o+)%Zxo`CaeBh%0*d7Rh1`1iqa$qOQBO&HF=L%Gu{fQX z&cqhZo;Q=3Us5oWnORm=QWjfW!pvMYGk@`-nGk}{Eb^*yK1@b8B7{^%WPH}hzL(&u=bkmHR5?a;6DySX zc42AIjoeEUIfM%4yA3Qt>21a~gI$%H!}NK&17&S&o56Q;jIYeDPL0iBdb-PR@^o)H zUehNm9pByC_p*`_Qpfi;TwDPq8kVP*{61GeRa>@Q-Nv-# z*tPIxgwYeK{XKTIyQhAGN9QM%22yEgGYnMLZt!%CMT@RUPftxxPZy!TR3q|2Kft;H zvv%u*v6+w)UXSv(S!a2SYbUgK`R1w(zLi>o4H>$6Z90R;mk$LCwFa}!(AQ~32Gai3 z@b;!yVKi#QY+u5~II)K$fNv`Q(nNn8bB5E5SEhF1qLNZ3wsgkgg)^C0(2GSg$`&!x zV`r3=%?M})D9UEX9Y)V)$L&T>-)7;OiM@VR>n4aj09YSLD||HUHe8(3s$_1!b?#X1 znu#;r45SS|c)0TuL3x6qrM+ZRgPZv-E7OQjx36q(tT5TGi!d6-bqSAUZhDhRis&{* zBS>%dtE}4YPSaOL6}o#{PLbBlL|FCbZ_R`Trqi96eDm@6y>`e7&t!HrHFWy&y1H?z zXoUf^J;>$QJuU6spj2WLBm^Cf{c3B%rg#X#K@G^bNr^TOlx$W?@F108`6n<*Kq;Kc z?1r)iUzsORzOL0@ZXM;fpFfr9cYSv%vk$0n@6TkWpx*uVHL0fkiZJdEg~PF?Fpi|< z6~YgitW$kTcSb{?-SK#6*Fjp~vd1z_ZGN>~>v(aZr_c4`#0Dm=*B{I4P)kXXP#D$Z z>22?GBjGO-d*yz2jqG=;AYCW>MbFYh{^POlw3^PfkMPG@bs$@!sZaEvNj(No4GvA} zvQ=80v8>)`uC#W#{$Ow5KeTtXL*6*cPz`;2HBorkZee=cje4Vyj6^|)#7^!*JHKIs z|3b5V6q|16J{{3n?MJ{p#%?k7S?V1AjFVkOE`LS?6VX`(njpLy-=aeLC|7^Rh9)k_ zzS+^A;Z^~er>ngMS~ZEC9^9%ErshY>k4}WhTTk9mKU%oyCb9cY%N-u!3UnK+dr+J@ z-wIDaqZTeI!$!*$i^sCTf(OFwwxc@7AMD)fboY9QjT`JByfN1xXb_A5ilJkSNW>mX zqV;>+e+eG^-F#t`hoGQ?Uh2nU9>H#c`uo!{mptiE&qVf0gD%3-cU-lhH{Nj8!>W)u zrh<(|=C}%+HdNSRD%vwt!;o=AIhYx-n{7qHHFjLu4Fp$YELPde*r|#d>MGmct9OzF!v@Wc_sDD!z{ZnWBCk0K-W}$Y3a)S!8-axV6WA+|aA*R1Clb=_f+>?>7Hxn1 z$p#mLSdcPQJvC50ZqhiW@aca%g4n3b)jGy8^LIY}_^$1U9d^0;$>W%XyBeNlfIG~t zsRBeWk03KWvVw(0Id6i^RN-4W0!ALPEDt@RpUqmYLAf9%^~T zRs0oK1zI+0%#I4yip*0k-_ijsr-WKAzKUOb6$@7As{tjo7_Ld&dB%RgPk{|Wbr zR|U*x*rF+I*jfL`KU_#zMYgmGQ01|ip*3ZDH(yTPFm=^7PeY=aP3s^VZsm0<-^bC_J{Y3inje z42J5A%A8%nrXjPN?4Y^CfaMYWE+Fs13gLaS+{_h9OZ9-Id^C%HG>bcz1xCj_3sZx+ z(<9>_1BT-(RmdQPm8#UZG)VhofL1$TWPmnU3cdswjuqKT&)R{WjnjDJG>)IfYA@S! z`yg&Xd5)1%VzR>Ii2(o94txg7o=8gnGbzcAu2}Cd*&j=uNzW&`Oz!mBzsrbI4?hXWj=#43>rP?sDgE{R6!~z!=O@_ z`;e*xr}2Mfavvos7!)JO;Z;%^6eC#rKO72htp=;;RI-rtLrNEr(jaXROl3NPw82uc zyjXoe;qc}L={aQC&kH!wFwxNgCmQUn;wY0v-mENK>{OFH@N63|hEtsXS&FZRP{2$K z;ql54itt{1E9bygJ1?}=-jdDV63`YkGVW1Y;ypCz6Q4RAaKw_#jh|DU)0#YY(M8c5z|4cjRc{{fa`s7=rTpSS&`?Yp22$%8FbD3xOq zIMa*BxR+G0*CF$=3U&`Nuc!cXW?ognK4a{*Evo=g3b3CIOVPZV>>1^x$=V9rYVgm> zVQ6b%Xse0m{bx7-XE$3!{PJZ`y8>!gLG3b9Tj}O2-NdU~1m#OYfUI`&tKFDCD4_$H zuOs}|Rj}EJ_=k$KexoALje`UNiD47FnKZbi0;Kh=yct;E66(@Coi|Sp2!!3q>!5aB zsN-HY-|L1AEQDHcmu4WK@F@tZK*FuLLRy~i%L3tVD{Tz+S<@;)+x08c`B$cMpHC+h zm^Ivp;3ET!?$(Onl)?53Cj`J3ii7yt^1`MQZ~W(`^KJ9FbJIaPp$qds7sgz^WjSZe zwG|WRkIChkTy9P-?xM1SJse@agLL<+3R@+N_zoEHuVBQLWC|R)ydxLZ1?ax*R?>V; zF25$1yFOO|30K`(!96$~AD`A&2%1TlZ52L8fm^aoMTT<^;lHWERt5a;0sfnSe-+`s zJ(u5}Yg>N*EwIk;_NS;7;VSjG-E?AqIOvX)|zT z+6-GEW*z2+jGn<;^0?76u$Tn_rp5uLIWzbbGq{`?EPENIcazGy159Bm@Tm|(evtua3&Y!ylCgx(ZA^%0Vcb9I40=3d3b97|@+t^7#3A+%0*EDIxYz0&WH8|gsEdpHW0rUe33}?}xO6|?( z6AQS#`2)-_4OX_q0{&<|mskMem8E%Enkj7W=R98+yNF8zmm$(9+P32<`)bGk7U`3;6M~Id4Jm&<k7GDg@Hu`ypPu?#)lDJ7y5L6C1Qh{`cI`a8_XgfY#%s z8oaZ_i%~S+7r3Om5A09SUcE7k-!_YTBd`>LHK2uI)-HNB|HdpXdUm+cz}$($6Eun1 z+5CZ7oOU+sve2z!LoP?;$3(&xbGY%dg_*PQA`IdV^Ee1qWef`LzLhoLnfyBB>)l(x z-&^1bHH9ft`U=zUn`iSk&*sL?`L|O4X*U1EZ0=A0Ug|ey^ZRCVZ(t(f_VMNiDr^rB zXKNoR|6z7WjDW2Hp8%u|@0WbKAcx}tnS;d2fi4WSFye3?mw-8U4*%vHZtk3ai+JT6 ze(M~r5)%!QeJd${bIv8QD@XXD+rv-D4ooj|BnuD^I$yy75eA^>oq6lPkra-WP;P#x z!nPIrA|nU(*t_QPwz=G0b8Qddim-`YHJ8ty%dMIl5mg_Ccoh=lfVS&_~WZ{=2zc&OButVfHU=9zSdzmp1Pb zaes0g1n$r{t{Ld#>3RH;dEC>N_OW#yf7?86>!p4C(+9Hw=jY(MUp=1} z=V6)5c$!oQ>$>$EKj5Ak84-qevHKQ58iUY*DegeSr-OKI?+d{(ItG{jq|5gdD#GWZp(TAZ>?J zk_vdi`5VKAPu`av#~-d>qcrA62#XyRwuj*~_6XR#9boewCZ{o`m}iPf!_|Y1&Cn2z z&3_{eA6FXw4H`ZkYPh_ZUtSz`j^75g+o4uD$A3GY{}wM9-^$-Z`5!|j_Q-tx$o$|L zSCJdec~)Zi_7?Mdi@62lGf)D)ZU$VGkF>-}g&(1Ni}~JS?#d+rl;GR$lSIEm6HNWnuWx5q7O`>US|WDP1&}*46tWTfAu_)} zPSeT&UL*r}IqbVyaLdjw_`GuJ22>d43~qkBk>6J*<(Xl^8& znibg^q4(yHY`Yfly8^Ne(0@Sa_bT)s0R7$&{fPzqi3LQ1-+}V?LZi5K0e|ZPTY_Sp zLiY8WGJaAS_f1(qwc%o~m9XaVC12S3S+CfX^#iynvcIP`?;{O9Qe@c&eSQ>@?HW=1gr$~F?R1;j27whfAVg{KDWNe5wdkl2qvQ*3Gn|2PC2m%*i8<&GQQ zGIoIE2SX!TxR77Ckc{XPDBm9%k$xesU&!XD&4)>cuuP%z&q(@cg>u8DEXl(a zJsWRr_yW!L#lW?Vb`kGg$Y~crh4~A7%Y_fFsiZI!7s5o84=lSsEaDxDxIZiciO2>U z(hToH%x3Q33NU|zg-{UbW;3xQ#Q4GW13ugY#pApSl|Gq)K3f*?I~Q>+i-!3!Ka6{!JqjoYIu@)WP3e>e~2?sT^^|B zf&o|K4HdBKA#!|2Jf?0a2+jG~CA_qRJG%rQL$F?93xZifzlSD3o_wMJ1R)TKj- zp!Xp}Ln*)+CKMq!!NUl$#J{XitQ-hsZ(_~|4O0R!GLx3`la_PU%WUVvY>D}N1>~^}dSV&>#4>Kua{Ox=C_JYS;a@rd zg64C$1e1NRjQ?O6cX63ARlpf)iD^nD6AzmRaf80RTtJvT(UhNT$6PKTSfIG?+~xdD z%edU-%6gqNpoVLg^UIfWYcX@PtAhKrL!odCP~5ki-?*H+Z#h<(Fp9|o6g!vmPb}wl zF2}1cjDj7YxM>;x{&Mc7WmvnFuV}D3;1j?_qI~`eb~JGq!2d^U!M`=D*Wyoc;Co%x z-#@K3Yu93NbZd#fuU+e#t6LlN_YEs}!-~KTikn}~>(`U!(MoeYG>;B7FImBt1ez0@ zh@e&twTeS^ayfr;InnNmpxyqEc7M8@|8%)x{M>{h0!PhoPX#981NhY=0VHlM8CnbsISz)b{1mc$C11WW z;6oA)sRN^WbS3}jO74jj@Y6P1Zn)IB6_Ce@_s&ZGot50%D?Qj4LMhoFE)UV!mHd}0 zxw9(=Xu4SmwqMSZ(jusv6jF^KK{x$KIEQyLce4ToqG&q{0VEr zoo><*-X08qN5TLetN8N3uRy~-hz1wm2OoS8{u8laF~e+zBs`l*e0h>;Ac3cv#Fr)6 z%yB=%q5oGC-#K zQmP;@3LDJ!)FniCTsRCJAN*!7Iun~G&~`ZGCXv}rS*xfO_UVF$#2Z)h+BMvbs|VM> zQrdHQ_Bo+MWb-DIskyUdLfhj zvvSIRvg$7U_+YxiW0DS|Jax+Fze{<1fpjp&UsLqpO}c{$V*z9!rcp(jzc31Mcx*Z};TBS$)~odNaL*+2^Y+f6ah zpM92oq+Y)X86fn)AaQ(UAnw5#2>p24oi;Z$3rAB?q8>KR@=e9!-Yy- zhebwiyS<8(Lk8#Z3%AEC@e4;v!hk#1qg=+I*Q%8&kdp*lj)j1r4g{4F`fHScYYBxu z5c&i3nm{0pp$zK{4me-E`_NZCfk5hkM}S|AlJD9S)2U+tWC(@|8@1@ zp2nK~uO2&e=&`T*tGVYMd+a$5hN9Q{wR)75wco$rkcINnO#R$Cn27AW6)W4zr5{U_+NrY&+U8Tty3REJ;ntp4Oxp|Do`cNT8ya@ zWovQBMz{F={!Lj1lubsJjj{^LZgyy^kY@V58{;E2syLG!W;zaIYghzyNUhZym|S4U zLQI)?6@u9$bP(&IV+6eej9M(uCd}#2E7DdTOk43FmI2GM1pqUpsOU$ z6M9(ZCNvUQ0X?dOWv~v)!2r0|ky2ca(5?F+Kn(nW9`j!Z{7L>+rw*Z8)~{QCOF7PC z`-0FWU3R$}flV=)mf0bXS3Z^lH^cJo1$MXKe6}eY^MmqD<-o8SgsMhqXe5&j^8|rF z)|jPJ;f!Wvc@2&s5D0NX6Ju{A69LGT%_*Eywzh1Jx!-KY56mkj!C{^QUW?6(x8esE zG}>b{_=$lB^RUA+(rhlvn*)>usG#7wWjM|%D1h~X@*rfRJWzt_Jjg)|DgmoX3oBox zswp?&luD&DF-&f5jRC)NYieMk)oQI)50O@DDzB-@&1D#qPK6VYGGL{z!NNdL>9QJe zTvI+$gN+RyFsLW2J_FHjtnUVE0VWBAYFN*Bm2E=(-+ue;OCNsQ-~a80FF_Jk>bIY7 z`5eb*FKoGRwtx5T-CN-4|M1-(fBf;?5Bp7N)%`2d5Q_W)hVw-vD%b?ec)S1CSy@>B zp_8q1r_aSG8KsL7{NJwvD_$5`S=rV7hx)&&&d$!;^4ylk^0NE4?0)XK-CO!gYn8u< zXytG5i;G_jN{Q2pZOPFQFrvjTE_$J~Hn&El(Z!@rUbhd`G?v?U>|2L%0+_HlV=!(b zlSV4dZHw?9QhkS5V)d$9l+YuGZ?HhuDg1&nHIf%?yYDun)A6$6;p79e$L zO@R^3sR`DjIY#v?gE|$NjpjzJLxny-4-ZSKEeP^So@J~_n2C(+)-*I5B{T*31lz;B z;3;G9knmq{j3_P+j2Q%2mn1%Q>J*9b3)cl7T#wVZKD-T1v0-~AZ@S=$AJg` zZ)Ew)Lq}Ouu0nbvYV_3~>g3S)fakzK2y-eF-vs+7mwSd1WB;VGRqX^j5@&y4ZkyRT-VOK9;gHu*1w97BhG$Vx?nq3t{p_r zWVxf`5i+}mG(sJ#kAXPn$D+$RpMiBR(an#v)wQt4X|369 zS2At};*cEdV`f#97v$Qi;KW9GRgXckT5Zv6J|6FnZ{BJaYI8h@At5$Q)bM2G?e&ed zwYA%}9X(oK@AcN!Ha6n;=uzP3WGqAeK}*);by`>psboC^tXw1Uj2bLCj*)g;?2dp0 z#J;(s?7sY`jhXu4%dRT9LIt*Kq4&- zB=hA}J4(|)_*yKg$6XI~ZsgDdFb=gHmX^@!QXv)Y%f-UrSi4Z~QhLp=|EV68a_Ee7 zu-P$okeppD8O|3h&Ic{de`Ej+jLkW{sndgSIkJ#{!E%JlmEbbs*=qygjdqVa7v5bh zV9QiZvM+D*8&LIKns1Iu1p`U*<(Y|*Log7nJ;Xw>Cu14Enjg!!)i6A6ECbBlDu)Iq zA=ctpp(`8%d9~f0;)t~4eqaWHZ-kv#r&eLsSTF<$_8jPV^%zG2h@^!#H)5<4DWui@ zYnwM=9(p@>VvO^C+%ysZjI`g|$o*xEu*=H*b&L~4#5g0NW~|3$z$5(Em>h?JjL;Am z;ql-IkBr$22KLAp-y9euQpRclBZLh)3{?{ts`+sj_lGe7*utWgF4c9QG*25*0n$|Y z9u?s=WLAO`0^Vdk5gXs`0yo6E{+u_FlSrnLrI-_82d$I{afQu^z)9n~XM9p!;D10@r zPigJ-Fv@yd_1;$P$9*}$przS2 zY*s5BYq%?*7REmY_p{8J;}}EacgI5lvsUqyxJQeftHOk^#4G>@p4$H?jP*v}=0pmk z*Q^=bn^u?$Zj#lFmXh`Zc68Hz?-{%09>2OZDEv9-a5sO#s^L1Ug++qOTv^Mw~*ex?4kH{ROy&U@g}A+&hu z@|D-Dskrv~8*bXT`Q9zRx&OBh{_YQd`t!5TJ^#;_{#Ezt>u)x^ja|PN3qC9Stnl%` z-|vf#&aRx(ILBMKZC2%+IkT;E_Rjg$oP@dMbGOY_{=9_@(EKzM@zUVBm|=tS|7}j$ z_w}}b{q}UVxYof8g1*{v9P8|?R%>2ib7vsOLK`T?avM80ottGtC>tuF07^4(X+#8& zvDS1{4a#z(4ODKKEdvu4TC`fBbb6)x+FQqZHxMa9Hurx;W{}Epy7I;&`4-Cx#s9!$*bl++sAhczj(<*1TXd?p{#fS62{ zeKwH1(CRi!{+yBBg+jT?D-xt8h3*ptDcj<^V&b;JgX;bLMe(}#|*A9jpQ_>t|) zNYRW|$LVzuKUS-bY)~Ds{Ae+p`7tB-7t3^wu_h*4bw5Id>C>c9);3&a5|FOc?PYfy z!W`W_tg!<-bQ{31c~E5|I8LbksJFHezwo|ft4&A92%^g%zi&>`d(DRN$lbX6pcP!+ zB;Oov1jH`b?O^$!-3Ln{2gJznS~?W^=8W9koI4(I<)j$zo1`4}MW|RdK5woszdqfA zjQ&V4?Wx`DL*rEu$XDNOoB(@gSt##8Jvg8)>|Cn(e~z#A|AVg|?|%Wm9)uTkI1St% zupi)zPP3cmU~2|)DgFnt%>tW>G7xsQmV&nxbPT(cb7N*UG{p2QoW_b_Be4}@_ZaIfE+vHo3!B~U zRGbH;eCYe4GB@Z=DME#xW0Dr#BxzMMAbvsAs+Pj@Pf>$pcy>!F)w7~TwKMP}0{z!w zgo=abtf;!=@j@AX>SPUhehYEn^BkUT^M>5>d{@?5Mz9jS*pyvLKEDGjD@3?%`@= z!d42(<0`|3Xxt><96o&#te;lbLQLuc(uH^nlUJ)jvR+s z@%#EAA#{uj8Ki)ph-v?u;PyK5>=sM4rO+|LUgfyr=TLQBkL5W5@?38R7sWIgJ1&~Z z;I}~Dg7e_4gaycgU(1^&gZ~1qI<^`dGa13H5;TGU{ZFzJW1@@*Fe(3cGPsuE{>vxl zIF>1R*dgJXj6vRk8M^Ftf2;H=)K4Mvh3z%&GzvS_W_yS=DI}gY6k<6vj>&dtgEv4p zNHh}Rz&&A6F0d>@)w}o(TxNm5wN8c@ZYGqQifq^pQ4W7@GSr+1v_rRBD#?Ic4lJ)> zN{+*!$Xf{s+#lXH!zhjQW}A=JTMB}^XJuS1sntTjTo8g2CS z!i}uEpUe%WSI(O+T?PIkxah;}dzq!KEA2NRcxB%P^#XDhu*2kXi)QOI1IE}-$Q z`t%~#tLeKsKtQZX?Wd1=sd`!p6J(F<6WAG zus3RlaZHv5oKMNALA2gBlhie|6BF1r4Dc zVGQo36AL%s+hPrb^@)`N>>+H4oA+xG-0v$Bm$Oti5m(^#9RAz`i&;G_x%osEFw1}d zE7;BpyX^s-~85%0+qt&akyCQ%cg5FvPTjBk0_$LuN{_-n?s5<53Y6r)N^ zQixQ)l-M0+VXK*4e@JI__E-!TjQ7ZF$23(UZj>sr_48GyASqN{C2XC>mAbLr7#_G} zhfNo@To@3*gjlm(xrrwi@fN%fRDdZ(@J)c+wnMw??f6X2I&Q-VxMc^ziW~_ZS`0iI zlmx3*1F1L+!zBUqoRooG$J2qT{N96B7q%bj&HfsM4(cHT0r~-fCfH%}u-gs>434cT zq;*#=y~8rB>Q&|k#bmgibOEy0xN;m%x;$|8|D@6!x$0bC(I0Tx9*3J_eU$lSSGD66 zm%C>J92)9eT!#ymMXf8_@f4cg10?+}1cw*~>^p+A%kKic^#fi|L=LmiADKUFz2W8-Zk|1`x$ka-a@QpL zdpIUv5g-l*=)#ZFe8<&9Q;wm)U^eV~dV_9wMUd zhcm*#s%)g?Zp_97B~?Ik_ulBe3|vgqDtDo{++CN${21bf{azR$Tylb+ro;8s7Eq(s zY`~GP&xUo*)f0B8>g|IaIJE_q4&Lr?d^zV=&}YLHG7PyiaR2IZ!6Hln{v9g2I-tsk zea`DFCI@slqr<-?>^@Sk1cnRcOV}7uiBBuVY?P8Wju6?}V%1%+w6U;1AB?X_?5+}3 z5;So4IIM?^R++6WQJF9Uj+ssvxc+7?a@}U%=0}a72e-jx0<3fZIU6j2G7fj8UCx>g=%UHZlU-MeW1-d! zb9Trb7s2Mab(-n}Y)^;I3LhB_7unAb7$Xm=dXR5dkm^7LbHozMd}{I%o~nM`Frnru zf0EQQ9jwf0K;R?zzS8RYILBXU1@mK4yAk_VhfYWM-Fi?-U@%|_e3V1JT}|pSV544> z0khBP7-HcONnr)`M?+Ud&^e<2r6iA&n?*B zQd98hk@|v;k9!IZv@kOd9x9)C=%d=1hnu`Jk9=t;{7ft@{JgoQ@aXZz!cH$L`l88R zbgZkU=*#_$MO}M)ijE(*&-&`4%2_9x>Svuij%I%?+h=#TRL=h9v&PxJk9%gHYRR4R z?eT4Mf^z?V6?q{B+e3Ni*v*~#b1eciR;Cu#9Hxb@fopA+$Rd+ zN8(xWocM!emMl`5G+!!~Hb_;{(-JRzCto4w%fFESBEKsi!=DR+!Rxt%`yIgjaq$Up zulS+ZBc)0+q?@Ge(!0_zIYyo$uafVRUzR@!^6>KB)7~>6TcLQX_=vb${8AbwMN5;U z<MV>3)DgRyO2Do@X3du58oJZzt!=O3)UOWqIgZ!ra8Nusg?>X-eWF)xtlNcpwxHMh5QQ9W$l8(xe@fQ{0eZ% zk}9ON((k0-OK$>~&p|>vNVrA*r!4jNdu8uMGADO|j(tG-a{={((yLO3jAW}^Lgd>U zlJ66sA46uaip=0f@gL%I;!g2n(JPALdGUgHQ5plzyP9H z12#ytVC|lf+N6C_pFB#QDc>SLEWamz8Eg&X{cLdiz}nj(HA-KBj>m$9!u=&? zpu_Kr$H6wlfUR~AOZ`H?QqPue4@VpL9TSI%Q^c#p)#4iQw_=^xAs&#_l1*ADEs{1% z&jHeB2aB>)ULr4+7s(std*r+2TKOp%tcLfv z7zfg>67LgV7Td-BV!wnW708<*jh7}!OQdRPr}UBZJ<*O^3 z>jNP1%c2Z6<_FM{Ss=xuVLQeoVs)Qav^qFigv1ljeyZpM8K#Jn#T77f%fzLiJDbH# zutJ{!t#5^W^_1w7lEBuw!1_EW)k~jB{qk6_BlBPfnG-$--jkw{$g>r&{}jezl@>_% zNY8?fW87!TL&o6!T1*h9i4`KIe+5SHNoWMY9j}Y*<3F|Eb&H9jOI#~H2<`U+g19}* z1FW>O;`gAvBc&@q|5K%0*n`|)Wv-L11^fA`bl~z<#`}$!Bwj6ED?TK?2AZP+`AcA( zJ|(phTRmM~C;t&_HQDP3{ys5T%oeW`e$YYU}~u%$;)~)xVFx)2ou`4Nq9WoFkv1YRDIq=;Dx>0{G9gx#6crD5Kx3Ft z{1lTony%f>fZg}RY1pM+;~hvj%0Y|o{Vr>i+r>Wb zjnkM;5`u>$^zCU+gDct_-tDFzF!}H-%#{)ll41T|FBtKSsU-=Nf8$PT< zOE`?d{jBnRAHKc210U*@8ihYpI`NMo;Fl1!^9TPDB9MoZy&p4c?Bxv8kQawAeaMFp zmJK8?Ed`={RGdE_;i`Q6#-vIbYLqhgSRX77(kTo{YoH?4wn=lB%j!gz^b+ z$DWj^kJ2SUkuEAB0%=rnaoA*GYaM)y<7Jf*FX(4wvY^2-J8!o*Z)bl9#J3+H`Jg?` z`T;BwhjN1L{}21`8B|<~07ZZzKoOt_Py{Ff6ak6=MSvne5ugZA1SkR&0g3=cfFeK< zpa@U|C;}7#iU37`B0v$K2v7tl0u%v?07ZZzKoOt_Py{Ff6ak6=MSvne5ugZA1SkR& z0g3=cfFeKDr%Y4xv0?vHGUJQVqZZgk{@$ensj zrPN{S|00~8gphBE+*#*HHF0K>=d^sRTJF4n;|)0OvMoYg?ZPV&q7!urj4CV6wG#c+ zuJ;w(HWsCJH*|WEQw*k-u6C2QS4fB!R;vB6{HH4a75u+ceSXGXVp`~$j~bX!u9I=` zS;Jk$kT&+R>8dWjkzcIyC-9qfoqd?Zn#PV)_3E^HtPK{!`99yuMaZ@i`ID@Ae*&Yo zEkP?bzia<{uP`~n^q8w0`TLojz5d~L&Tq_m-*z&t?JnysVRZzTuA18Cjs>b-v9rko zf>$@RW{h$zLGNbu;p|8Y6u6e6ckO*17@P36YN61kfIJi-or%T&vLb?4?aD z2fAz}=sCrsA3%k?^gkf?!VTM2Wy8kJz3*oPH1pV1w2t6sk0SZ`YqqfuRxplETd>PP~nEV61;Pb5TD z1DB|3KXdSA4Ld4P7qQ2h0L#IjdvK4&zf#(x*`EspZe|<2b^7=$jp2eP!s9-nXbgr1 zP&mG&HL}C>byo{}F;0i}SR;W$9n6^O6_aa&Buo8A> zMdB4--5_>)gs-%%?pV_#AqKe?q5aYJi+iJ6O}zn2Gm6Bq@Q&6n*n&a8Ipk(Q5&MK+ zMv#@A+KWvA)*hoVBDK2VgX$DhL~oz4c6cvnsE3f=K}eaCrf*>EQUo?TeXtmN1wjky z)OOf)4T89HJgm;$k`##-Y+4sc=~Q*XYJLxjZs-!8({*xEb<=_IUXUw%)-ftCXW^OLRV?JTVBuC4=32LROr z(FfEA+IB>@b!Z?`Lo|x%28=sJlT?0_Z|*e+h;DCtyt3`EWfb#0)Id9ryWXUB?{X~A z0c#kZP^`mCQUCG{ZvBf($nDWr75B>1yifDjJ)Sv z`}d-25~ids2V10)GM-mM`Sa7*rlKg+rXN($Kl;}c0?B)PXj`=w0F7Hj;v^%YJ@-5>V~2DTdh<5A6v)yCs-~142VC4*uwrfiqW!9 zMI{P3QCXh|Uqodk3k^{-OdhueS|^&C+$z)eP~0a-QN5jFlV?Ptzs!2Y{uv$q$mt#J zYf?~mdg^M+l5SU4bdEJL-E_VktHZQtHY?hx&Jahm6dmvJ+pU^vQ$%9b@%RnwzoNik zMHRao(M5Gz3_muN)Oo(qUZ*Y8uZjG#ZnExyi08Bx?Z=UQkUkhOHA1DMyYmjW%Av;wQuMf;P~eC>TBj7iV#E~AbC&AkTc%p$UHYT(S?BTF ze%|n19W?RuwH%Kxa_hG_9MMg^p1LmfoW>dj+lWDUCkpK3J5j7*T*jt1nF}!PP7ikP zNO121ORx}z{b|*!R;%!GwD3`M)~JpCeT>mn3cL0&Aquq{H721oMLaF681~8i!-T7c ziG6jBQq=451e&KvYoPf_XnXn-Tg)fxVoV3yQ>4)gq3{!hCn^6t#?%b+Xhf*$RVJ$2 z{C=FdDb7??-J;V++Es~$^G%jvrZ0g4hU-2DTBM6+)ki_ujvK7ex}CzjSi^-n(=1kV z)UAWsYG2Qoqg9RJGJ^oJ_oso+Z79e9AenVZ54f8guA`EMoZ>Hke?`zTF zjT?Lg=wp~$=g=I@hR1LUFa;c2x;CoL+1R8c07R?mS)4BThYbVa&k3Io8^fH3+yr=k zJ`8+<_Li;`wfh{NH|!Tx3m**wzIeksUNhA?)&k9%A0B3VKW-D$Y=#G#)g@bFbqKf^ zE_61vbeZ_hCeZ_EKvm@7&xd^i6=y-lE<9q5Ffztnj)bCEw;CsJbFYDPXK#3QW~ep; zVM?e4dB9T+IL=r|m|J%eqx$Vqz+{Dx7Mo=e3StFI%yGurGm1GyiVVRb<_Hu45tfS# z5CaKqz6}ysd-3XcKMsp8ydIOae*+#Ua|XtVvmdU(@21^M%Vu-9a*yYGQ%qY_7ceW3a-* z?`HJL3}1%@#~q#p941tckF+ONA7_|8lGH=e3ijM1cTV-V3s6pTQ7oXJCM*FxYx20K zn|!B186DRlw(*5JUs)IGW+RWnGW?aZKI6_iGMv${BUzj^8O7D_Fc%HJ{ z7f)z)FM($@JnJTS+8s0FjQ#z9IzZ7@%{$`Ss+*_AW$N9=9OlQwwn9EX4!XLhVWU;; z?su$1B1UBhlkBeBgycAWOq{SH&hc`bvNQ|LLn|XlQEYK4{q+ zDn%7*uf6X2bvN92(=TqGXv>_yux3lzn6cxm=_TVAWGtP%7~A6rU8FuLdRRvX0|yTsKJr;(?(QdE zee>-%o_y`CclJE>dc(W#KYRZ_p4<8GZ?``F>mB!P-}ak7Z~5D!fBEZ!PuKnKfk&Qs z>BWcsSpTm-JpaN!|MdG;UjBRSWAE*%x!P5kefx@>{3X*z&l!1*d)1X|R!`k{uk)Vj z$#dt8x@Be6jH{;n%AR%CwE4H)>e#UUjysDsEu2*R%UOk+3$9ppcV78_iW8;#zZ8LO z!!M?yt6j0nSLA|whtPtug^Lz1S-NcYoVoMn7nhXI$jdL7Sy(h{l4J6etDIA_R;`}E z*r$!pG#L_%iAmEZZX13f0%h1@cR%x&JvGq2_KANy^4v?${(WcNKX<)e-|*zqe|zfj z?JqvMBe<>_AI@R=)3eYl8XEf#(s5bYgHe#|Dfx9%a8XQ|NaN>=MMm-t2{ol%$fMv3OBQSU#d`X7S?r0|gQJCG$$k!t=Ar(yRk{JwV9J zow+<%q|GlW9>jm)j3qM%$f5s|83keaF5gPV)NUM>3EzCd zC79}1Vhi?hY(fGOT9WJ+M)+-wa1c7cj!e=;@3B~o7K`EB0grKn3CO_dG4bHUwjb~m z%t@ZVJGs=AR5UZW@Jw>quB3(eN%L+>TJq1NMJrNVsispZ=)oi8rF8i6;|#uq27@`l z(B5)DxNJIN8HxiTj#;MRN@FfV?FN~vESa| zkIstn8$0$#`VG@N8WKIw#DBGQbW6JsnVgkag5R-4cSk~~DY?6;slg*Q;r59Qcx)Xf z;gvP43%|8uw<)r-o2`Ls#5le1%jAwOUsG?w-<74_8_CJTp);5T zaHvzs%muk)-tHtk+scF=>&4UL&Vd$gm(r{Q3)<8H_b33};UoYM4pZ|xyYP))tB{$( zXtCHJLF)la*HkP$RGE&C*wYBE#EcPpn21EsnL6wS1ET;pU!J9_1+th6l!IDyrg7o$M#4tEDQ0Ml*-} z$7A1V9mSl*zF|+DV?J`v;I1?QbX6(t(6vpEqPblb;bcmRp&E{PkuZ2mGIItBpbl<` z%v=I$@3I&##>1S)S`&3f7)CUtqTqV&j7ifedOEvY7vtf)y~k~8zS7hw)_LF#DI(GD zV$SLeCcUt3qz--X-uy05ZcCi8%gI<`ne&}ha3qGSTD8uAso}!TaMl^y>CwZ~G*~z5 zq3U}7@Pkz;ekN;`zZ@qv^6;v`uixR<_N)T`U#+?R$E?}@=dD@(m#tI$uUhT?H!y8O z);Rxra5{Y-XZB+9kMZkM{JMZ&7xAkfUVWfDRVlrJjmOwp1{F3uSN}L9AcdH2o2B(pHhEEJnf5$+VwTi?dFZ)W@ZyL@-HX9@R@6n<^4b3B{pIGhDD zVEj9a&r>>72YDbeAI}of&Bl16>)E^pYaCo*MhI`G0>}@hnl!MQ?N|D>403&*)!;^s z&$E~}U7uw&G~YVXbvUcR`mSlGvTz%$ZwPx_(w}d{#my%fw&~_B;jcv&^U*ADu$`#W zl;3GPo@Lqm2EWEs=Qxn%>d5l{KkU5=cvDr@KYY@r>AmDq%1JA5l2h8#gi9z`($EG9 zy-=V{ZOcV!0Z~LVNJX7#xwIA?hq*e64!(225iiWV>R3k5fVY=66r0w=5HLv5DiMR1 z7^FzK%IWvp`=kY&nfICJ|2@z5JpboQHRtTJ&)RG6wf5R;uf6u#hp3KatovKebixWf zw|+$0ZKlOom|82H0|s9FRdu^9zCRWhAs{7lmNqRg8O4VA5g^@HfD%FO82u{rB>^2`GDbx z^rNk1LTrnR=dP$Pk$nQ7U@!RHpXy0_)R#T>r{OkuiXygkf2<#B(rN6jT+y>%Jk31C zY-S!|{>=QAd4~B7^CZ*C{Epeg{FHf&`91Sr%r<5>^ExBF$UMtzW!@Wnk9mT5l#zBY z(sPXTJmVIagUli3AIyG6`U~?1M%u(k4>NybUS{58q!;L{`5FA|e&#guEpvwHXU;O; zG3S^8<~;Ka6J$cn1?D32J#&Q_d{bZs-@@;0{9eKDS^T!+_cDHe!|xXYb4p;oK@bEF@}?-Bfdir+8s`x$<%`28BcNAcT)->>l7OlJGR$Arl_aO6HzZ5W|xEOYSb zjc{c6TlNYi0oVR-GW@m?8kdk42+iB&456c3PP6#|{(e3*?{%lk8$ecL8IKGr_)Z_eN>qPw(CZVTLOZ?f zG-DP}1nKDLf_&&(NGVqkHQsN2fH>I++W2<1kB8>T$kfEXK}pj#w+!?M~>1Ayp9wx+NA)z)GX|*f<0H0bg6qMpJfM?!@fe zPplZQxyP&+{<&wZxlDepB0qOlogslSer7d(ZiR!rJv95?(c-Q8(CjPLJ{0fEH&%@9 zTgvn;R6xgoFu`chk~^2)w^Y@)FgEB4%@SfYTBc9Wen@Y9mrNC-$v8d1W1wQ34g`XV z7)HZoV_f!2eobQ`rzGPSn0pOZ2J?dkE*k)$oxO(hgZY;TaA>FLiWROWCIF=pK#e4w zAF4ZI9XBpiZBIP@7KcjQ*gc5JUFk%lKN~&JPFhNv+-LL-wVAfHql@e8@3@RSW#7V> zpz%|rXxkNWOkaFoz$>=Fk=Uj?c!> z{PDcNnZ>FKDekbsK+K;q+dX4W{dQ-rTzov$swiL23pWkJQJ9NEF!dDXuA92Q8QUUF z?|yHrG@e{e3G1Yj-Inamuu^v6y%gO&g$o45dkXyNuI`Sp;+U~Ic7V*`QmrsXsuIQo z4E0RQ0NN1SqZ->7hv}}LrZCgH8%ifJ;jB zI?Tv+E_csZyO8_hSZW>+>Y0etQN-6i(|#gQZ~-61043H2Eb8x?qJ+o4&KU$LZ~=Ar(SqXM;W2 zU{@RLu?Bmz!9LPpR}B51Vz6rr_L!l^RD(UvV2?7`RTL6n(J(ivDoFDj7%s*~>g7hP z6O5#BUt6JTNL#-ltv8+~nkWuNM1d3~IO3!-ON!?Hd6M3mq&YPIsL2w8C%eKWTr3ol z&EIBOrmn-ZCu6@mwM=uB@0f4>_zsni#74 z%nH|jA{iGLobov1;(P>X-YlvEUo8Q*e_ zGwyYIO#kBy&o{fAZfNg(qq_o%9J2+ojjuaxA6mnX3ZMl6`IHK)!7*Sx2NV#FJ#}i!8HbuUx;~>nZstTAAQWR7HW&kuwk?#@T zu4r;~rRxBxzSQPv%Uzm9^-A|jK7dIK_4vuN@%^`q*o#1FIxob#F+1t9!SB!mS=rEa z1D#?_wh$xcPGS4o1_BUjjT*}~@iKG#9?oaV$|kW6hTO(1v$@n5u0G4Y)5xm^Nuk}1JgQTwzhhq_k1rCqXW4e~^^#-a+7g!sGxhi`DcRG) zOK*4Qjg$6uf1N4q@4ht?yb}vDi7IyB{&#GD9kp1arG#Tmo^)wE8;#{RxlGb^xfKS& zaM|)jH%Y1vg#m#Nm?NIelvwnllw@bD@jguw*~Rk~43PW+8L~LmZF>MDD)Zdq_J2j#e>(R@L zAm!+2AGs+Pi!~L*Jm+aEAxrHi_gEBVN>&Lg40fvDBfZAOlAd#aHd`7bod<@z*WGv< zVFPd_E|#KU&3B5ErV#1Gm>H0h?T${Uzw7DmZ9f?YEAMgZ=({H%wy0oP++M3<-CI`0 z1}v4!u;3i3l9)XKj4V2ZW(Z1t>3GbbrflrOLCgDjDXHVVab(~IdA^b_*AnUW+$jC@s90*IEZDO{h=+Bq_d= zs2!pwNSMs*2eaeLNY~39i1lW>c*1n}o3ZGwt|9XxAUd=CXhL+yZowDU4K1XQWa$1p zTgvKQDo8weGd zVY7WA`x(+Enl`aVhte%<&&d{-of8tlmb)5AVSNkG_({(>B!f^T@xpv5OPGU=@M6g% zOpqoDtdt2`=8B+~_H(LhHM8&YEsG=`RgK^WS{C)c$;Ofllig(IK3(tPVhn1Ajiv3Q z&GV#1p&401Tq^X`0F=VXmN%`VXgfMd&&RiumcUDM(S0d_6kqh5_ zTMpPWDhDjK<$%SwOzd{#fW;*_KcLgiziZ|OARWIq@q9~K6j-5@GP%ioYVJ7`vRh5; zI0AB*=hLFtAadrI_%sEp=3C5!Kiu9lhK){B@WFAJumX7D5=KQVz%J&nr@>!dn!v^3 z(QeYQYRSwc+2)vBoC-O!O}dPYpog78u33Xa#s7Es(>ZLkm(^w|eW-0IcWxYap&!Wl zbNoKOrRQC9?vG8jai&FfW|^Jo6kF`=h^iBcI(^7QxR4&!MG9k9MZ*IrXp^)$vwDCe zW9{R$x+L}sJG1xrN2Ve`dVK`eoZe{0=<^aRTp_tw$wjdJ*c5A-0EcSU1kBZzj*m>F zIdHEc=Ha}HQ)FahY}9($L^~6kWwxBmn!tWa+L4M9*I+X;Z0Af`FL{yd!y9nLq=hN& zrEV-@m7llGHo@gaYO|Z+F`WRxU{h>%WX91u+f3vfM9TvXd$T~f5axLm9*5lbrf1Ir;e@IRP6|46Ij;QW#gDoZ}B za?I;=lpd&X6nEClD?d~<-|@lx^2*L?a;b1E?5rl2+G@u^{7Mf1_4BP|B_C9geS^bQ za~u_&b81RHD5Dk6E9os-Tz&*w0Q<2m&{^`Q*v-YO?l;et*y019W_;MymTBcs@&gdf4kt_!nX_FDSX%d&O7hE{qo;h zTiagxWUv*@1tUv7pcD+Dz5ZV8Snxq9s&Q1$D*s^ioa)!Aion&XqT1S$>Vw7AMITm| zkn61S%A%6PvmI5v6=;CFwxpu!AF~%!*EkL@EU7Lp?VUaU@ci9lfp4GcVNCR=+T( zWbq3_%BZNuJ-_7O!XjDWLHU$azh6_n1X{ASb$&@{?F-fAWpip@s3YRw4HnQ!*S?jyoMc zaTsQQ@9-AAFzaPt@5z_A{3%sc+11mlvEjfqu8u)nF;hA)-%4D@IC35O@A=Y_l21#A zp8nlED*xvE2a5mQ+aKn?w)PLJ18XO({c>%>TK2xw`&QrAy}F?Ij^fo*yt68eiBoS` zy$|t{VNXKvGb01?#x>?@~%TG4y}BB<>?jcSDIEy+;c0pt^6VO zq38D1d)7V=NYWUr_5WP50F8Y4bz!x|1n1meL!XlrUMsRtQ)lCc1;HFySA zI;EKIcc%n8?StZCVgO-<)EHhO*%hI>z0P1Gark3p@lcA3uO5$9v(;9%OIw15v>A4%sd^zL$fCWoX+-VF+R;(C;M#4!x8|Vs8CI4YN%##>KLRxo+?bi3Q;ZIjjYgAvdrbdK(nYr8^hTj z)9fUY%~QC+sR7f+Q-h|^RMHmk-+1%TqFI=R&9fj`91|Bjyw!do#u^=DKQo)n3WlKz zYe7e0u+{`fyfp!vAM7c#7lG^8S{R&a3{9QL7*VThDjJN?xd(4HF20#f#11hYmXHTj zXC})`fo>XxYF@dS2#N5Gl!%2w5_i_U9evAw8r0l69}X%kc(B7yyX&|p&2o1mAAX?I~G-beO4ync&s8rzRGFnWlrP7(TSf;${TVIrp@enIwn zzaY9H9uROR17hAR5Ah~1dHbp_qA)=u{cE-}%r-OCLGvFyY?42viaeoD~a?&~GHFz_V?4AKvF zViK?u)7y#SSO(Co;Nu@~h48zAyr2obUig^5p+4r*R!-UO&e2Pcbps~~5P@vP2I#}^ z1d;TK@I8^s;7MPiCnw3y7vq=2YkJJ;=fNmrM-LYeSJ}{c$oGq#kP-z?-+R!2Lg8o| zar@G$ZD+0WibZM{9>;*0H%r=#-8AW84!*qFF`J~%1r@D#^oD?eY_V-7J8Y=?B;VxX zjO$#&n6j8IGK!5@!6#x3mPFiEJRM8C@VVLR=BLmWoM(wwg_l0>#f@x(!U`i%cmwkN8k+EGKiu?Y@gA$? zl=})BR-zqU(v#eG$UMe|_!bt<1?eeaEW9s9AzzX#I_YU_oMeN~+#xCPm^9MDf{QrU zhJFVK9IoFH0=jrMcxuF>2nGH1Dm&+ahk|ZVU$Cbk;DP*MsQ;&bVqJbfrRcF)qI$TV z=@uofocLIN&&MQq{I`FH#-xW9q%&A*p4o{&yH`QG z5440;{hfGN*1w2sg5Bq6Au5>68s6azE{DgL#;o`e{GB+*<6VNj#c3Elq}oup(FF%; zGldjyXZ+R_AqfGwQ1x^}(E~YP&k7SER+S9Sc&PMZiY+vIA%jZb4pRv@h(UAe7<(ed zm`7CE*Z~EDh=@w)|Ak;zc4&4T<4MCIJu*26F?1UT8h0K|6kb*sHtj+4%RJIHAyL{6 zxgw!ByvNp4Aw_jxaM;8Osj>riawIY!Udcy5h?ZeL8X!)meh-G*cSk4M|5WLM-t(J?!isus!T7LxENl=$CP@2a~Z$VJ%=UN+m){hV2ojYoG0>xS;vz zP}K2gTns_GHO%j@&5HP&I9C?1~wZBP9u&_R`rM@=Io00+ukyujT zWk1=7V}{LsgwAX3a{9#AZGL#gqtOoam7rf_n0BxG_2~#H*W6zyzP}s+;~xDXHY(?k zdw|3Ac$bsldDs^8cVe3wA@uO!=n!E?xd@k|5-ze>J7D>s~G07n`Sc1FV{mKZJvY6PdQvR;m0)3fB${) zF7x}1S{$THVSFk^qs|szE7W`$O|Ew`mjzZ87m^pY9785S-|X||U% z@=Ypp&qIPTRIHkCAD?GAnqZBd%3eBP1Yn%g+wSJe7SY}w`3=5neRIPDdM^ymtK%ZaE9iqNrG$(w9u)A7WO3KG}sM7sqi6u3srIunJBk2Fbr9@M+dHu;V9D|y5Q zG(V9s5c!!l6B3Z;)Mj{&zgGy6L(iSjOmt=hv6D$y%EiFGWC!5x?bmDK7_jMj9tkrE zi@xE30TyX>&>90?v!e(H&B6#sqYwyaW;hWsdicFU$Q>|ayPJ!Kes%53uv>6mG|QPc zna?ZHSS@^>8Ie#A5U?yKbWC#>$hGSFrZRnqLETZ`-sh*%#(vqygQ)8?Dj}Oa2v$ME zO7R}VBkEZ)>0QCL6}eXtn~B7#gl9GwwV|5QqR{NxqVU!ng7msyEFwXAK@#kOs5d$U ztSUk2_p_hKPZp9c^$#1rpN*mh{jl*%LM^xi*iP}({>8b%QHc5Vw_)K2F}NsYbWARi zzg=(-NAK9+{(gjbv^0QtXat~&Gs-~V^Rp1Kico~{2q_fkp4~q|5deiyA}NJWNi-%l z>al#(Fj43N<1OLhr3k_V&@5PdMzuOLFGWpav)7fG@KBec)*E*@5ut@cnQCfuWzX#|+JSjntBN}}BtWe!9XDaza4p}u`kDatEMu^uuJ`2kogfRLM zW&mF{oVK;_v2e8|i{&_YEX_#BZC;GrJQA@;@TaK#VtZ*|2xTU7oV0e`arJC+y@g3yCna!hvSjlFJDXf7jF5wI zZq0!;J8m6#o`mh+yc{CVc}5Zd$fqdOpCFmXw0m%4&#gn;JOIt+^XBk*)qGwi zpC|CXKxc4G7FidzBW{UCAF~&{x|BinAM$e8H}l4`9}}4tXlPp%-S8$`-^ikS^ZkX` zOUKSUT742ukCRQ3+8Sja(TJUtGTIpIgJ1D%#-G8clg(|<@Nos6?1Wt$N(nwjl$ol`^o~QDJ2`FV-_6S`|Zv~ zKSH61ZBLDPxit#9z#S@eDt5R;Y|E*ODB&RmF3Q$FnYypieO$#={nZx6g*k6piNIZL zQAiF>Po!FjmDJYKy!5L9zaoW+7sr%B+OFm?5CUkY*GrE7q6F_-u1-zll!)2D5eXa_ z#M)1JwI#{Lv5Lo;cttBCI?Bi}BqbADNoWTtBMq_z2%8tPN`c(=SP241x=9_hWO6_} zU*ZQiL%>`39R)6Kgo07Tx0sV%!sV+iiF;>|*nCBlVi@_*LndO)7MF=>rTy$zSEr`z zyE=6QY>h^~(aiP@h$W?jyz-8jr8qSjesXl@mQtMq^7joTuC^q5#HpoFb`2L`rQQNq^J?hakVlr-eXr1#W#Kw z;WD>Tyc6tDIK=&>pp#K}$O|ZkFuM$4B|xC#pbZd$cCGA8xokP!pp$aJJEia@w&mY1 zVt0{f9GTHKk?rcypkWP^D(#+t?(UR;lS3e-(lp)Ze4O2cU@iQ$uCv&8y z$fZMQmOc}5q~BP6A#JuyhyP+UCFD%Fs-||-PKum>v+Q%OmtY+aBO9&yvP|4n&YmU> z`wAEGW)i2iUqPC(B%EjD;y@R7!rfOUjkm^1ldOlYmF_m@!EgnBc1OC{Ro;!d^2!mb za#oyF-rZM*uZQ^VS+07>>r=KAa52{o0afxkaC5{HLO&cmDdv_~-g1TQZIVt~zMJ9q z-{)xr&FRF^zzsl6C+%~e<)F#;k!<#Sr<57sxh!#gITzz^Z)88|9MGj_VEx(N)NVbE z$Q2*#Vy{ZmR8h<#HfTCqgpq(V3?-Zz*ZEumt~H#JG)aB zLG8oKIxLi|^X!T2XZDf)Mjq?n_;m$rAMuNk&yBR@F2-Jd3tTAk@WqR9=v#brWaV6l zN*#=^d*EJ~2#1RauA~&H)siBfoXZ{#FDuxyl4MORKsC2QgK5su0||Oxu!T2aX&W~mCS3?dU5cIo7X%r0)MAQh!f^rcl1iD zgUX*bucA03!w(VQqBGcwI(%q>ftP?f6Ap=M@D>;RA8%EWxHQX2tdDaJv6pJz*|~N5 zAGs~twz;-3j+eJ=<6he1dOrMIzGu&tr?>Cn{MwB|L zCr+G*;D*|8IWonUR{j9$y7x3>qB0D;U?-_@BKOjZJO8|Ohim5#viFcS?0j+8M7gfn z+jnMf<^Js2iTYpM!i4E~W}9p47FwDq-}%DUZ7*JrNiISoGfKk9Z+K{JMFd81_)XCs z#LNEa9nSU4mZ6pm?e$%Ecf7cjbG^j9v}4bfaJkkhFnKFFW5)~JPS;kBVqsdtfX{4y zX3I8a2xOP*Ps7D#|JRm3|2Ox-i@U;j$UX=0)ot*I+p2?#D}(VtEM@7T0`ZUa&;db2 zwE_sCrhA=mlOW(cU1IQ|qLwr`!SOBtXEt$t5qlY%4+aI(vymIovmQ8c0E6U_=-Ktc zCH4$KE3U6c)cQl!D5+3XG7Ry*!3~G$gO|#>msQfpdMp%rDrigt6eq)J|MiQHjBI(({ z#Z%bP+(mpa1@Jc^L8H)7LlkKMPy`HLL>r&1FzCNGZm;mWpTJqV6AF^SNo>eooO`0u zMwVSN1=2X;ysoO)P$;QUPlkOyP>4+x_y`*AWJ5we1VHz<#MVj@*olcGd}vE-sBHJy zivfx~C=?oxl=u45JlkoXiyGNq+bgcCm~FFHliY7f&60AMK-w@NMKo06BO0iGhQqC_ zw9iIz!+8s?v{kY{lr&%F>>RxKVO}}=HO0lPC$?uDHT%|t~$WQ2Xiq+aqU(K8I~ z-cEZBsdR`A`z_(8AF$$W(xvEM!Wh`*8haJs((yyk_%Pde_CtFyESX_eqk0lqO?Ed) z_1FrPTR|fZWkMDMM|;1oQzljBWkcm~dxrQb)5<+dKGb4RRztuwcPk9>Bw@I}P?J(k zoDq;);13uEZV6uhczO6SFkl#@4>qPc782i&^@7b$&fwsUvYM14S=mEb@xxiEa+V>5 z=GaEi;(oa^0%(UuS#3+HcI}_L6llelZ!zeqjrZSTV5^NAZxPqrLf#2eQ3YvfTfGJi zpS#qO3_$Tmx8Ud>_c>MqHu3-`G{r{!&~6|axP>6Pd<#JYSlf-LNdbGY!Co-{Kxl!0 zxQzgZQ+{th*c-T!o9>phAVy0-?>`o*K7@@(vj0nXy2nOT$F`N?&O0=Nx4>_s0ZKGh zM_&CC(19T!)CM57+P%j{RxtnZU$JGpC7Fl{9s05~DAC*-)d7jHEFT^#!}=pUSUn_o z4Y6GuV&FQ>5EBeKebAoRZ6)!);-`zfqPj*p zeQW>+C&NUF=^PgmCw#?vrL)$UILisPOFCo4%MYzS_MJH4P4=KTy+*olj8=r*=jk==a!otx z{r%V@9)51ChmpFfM!GT#x@rj2zl?$oKfk}6Jxv#}7vR;o$RWsjRn0&E2g&sCfNSW6 zMnCiYd-+L))Ubtw+c3*le>@Xbv;R{uaBj6+3^VkFNQ-+a)Y?!SS z@Z^yr@xi=JG}|XWw^D8q|$v~>=m|0M<+zbC6vWE*f%t}+m>4-Md!5%E zM}ot1;GPioFFqMS7z2&z#XfX<@ID&BfI}cSu}IEn-~i4)B%xz=9gjYja-g`}*k1jj z+qO^|+=sTjY*{V+9FfY;cK>{V^b7PQ@@A4FUzZl40P$x0vA!Q04}_u97WlpH)Y^XE z^)G`b(F{W&?CAt~Yr-DG9)lc#;{rLtvG;oFUzc`SQU`{MQ}!c{gWV>*X;BT>qj>g+ zbm$NtINFMESjEcRoOpV`(G!IAmmivU#0nZ+SaIX1B&)G4Kol@`bx|#=4Ap&Y1+!^o z*i zhLU1JM+E)7-d=al0`Lhnd3+nioP`_32@9KXZ^qs0kwV%a3%!1{ zBp}|qu*~5SlI)z1ieHg?aDg9mx&sSPzr2x&rVzV_;}klOLgN5bSW_w4^G&YqyB3mR zkM_)QzqcR&+Xg%4>3;W0njX3n4wTU|ucX%LVqg)GgijU)TlQKMj&58|zK<6(m7hA*98^5}Ytg$%p-#aSUu;M?nvkK* zNH5UpbQu}xy0Ubgqe;r;wCkj)9EtN8!oj8~7DthS1q``j`^US;Zh2G-5J*5!k0BEb zN7x7bc`7oP$T1HLBbivppEU;6u;=4-o+e_7A}HzdBBD^qq`tl$RN<(XtZ@XM#6wFt z^me`eC4*!5D7#Pm)#4UO=sveNAgXS&sMcX9VP9|4fvCgvE;*&xQ7h3 z50?1bAy8}iX}>R%&qxG{s2`+pT|02xPz@DvT?_G2Bx;pSQnXbO!?UN69lS4?5+h~q zONr(^WSj?m$@P$S1nD+#J~@NyKjhxa(V2yX)1|16 zHx|~Zm|lN?C?`}AAf<>vdBI>zNMwiNWT4mUgW@WzvlZ2K4us}qIXl5U*y4M+I2_{5 za`pog5`}efBzEj3I&Rz1bY=L!Ci$F(4sNmo=v`OU)5xWs z8nJ8uK=`m{zdydB*p%h;l5J3bMKQ$V)Cl&pZC0JD3)>c6F2mCcYFtRsddN__8($37 zBP{IG#rN^OSa9@u2?UoE2x9kf8m-Zf+I2+K!mUw%d}|uhDLkPxMg{b6`jf7}K_?Q(mI(0#d}xnX6qg`S$GiNV_I2l58~F@^985_s5IdKUMnSvj zHY1IK5E%O5yhf~J6!~)N1SN>{mftIEjcmft~E^&S1qxvXiQVxs)Sjnf`)n7xXP6kQ)I$BucceUYE$;ni2yv9asSr$+EU<1w)H>_7Gj zBZ={5*1O|xTle@RhiWjs-E3yRY3YT#qn94O;)D92H~rm?%G)~ebpstzrMIas@c3*_ zi@0fVPd`y7#}9IAPX^31d`^ikt(^A;_)s;GBPH-O$CnZDf@6!$uaJvz7y|YrgmGan z9LxyBpTq}{=%h!qk}Oym{*zQM5_xJQWHhQT^AIFiGvJh#$445_=kM(457j+dZ+x`g zho;y^9FBvP{YX7H%Nk#HiMK~ z-HFRW8*X#@y;tBeOS08DPqp$r@4f-txS2gFoWpYjLp$9k>PypGkDuZkzJPDoAeTk; z~7f63YFsHw3#Ye$~(ZpD!A(BL;>Vxq? zoOVnh-`ydf5Ayoc-wk>&4WNfIUX8UV5gFpa54-w*TG}-O!InXQrsF){`PQ=Z^R0Wh z6wqH5gKrNZKT3TOMg0L{TAZjy3E?|SJZL=K3N}oO!|^Y|h3*seTj3z)4u4;dlWB-= zK767+&Z-E;xwlZ>;A_XWJ77N#a2`uS_wACMyJ$o2 zuX-(sV-bcjy62{(?(df_Ti1*3H{I%NjQ{RZZ@`C^d>49PsWXnh)a&iR7YgH~IBU|; zxVWCwmCl+m4ErtUk8|~8$SClE^RvCdO8ydojSFp9>b&BiO{7)-iB!FfRQ(51^&fj( zLK-}qDLtt@BYU)?k~?-TbMITa%spe-x}$N9^$S*KF+!B(IP%C~dlhUjXLyL$>F6?9 zRKSycOTm+UOLe|J|Ict3?6-?THMcwYw%p~;g*}(i_kmRnz5a##(lQ4UeJ#xS))ahl z*44dtd8|bn*SoIO5n9q4T4ITTE?(}8>#_A@^n#X*9=2EA*T+_tGpt|q>cNbm*Z59vTyl5A?Y&S@cs*^DT19e%1X|kqrQ2|O z|Ek`8gaGzC`pf!znmAo=Pi8L(aziMSy0Bxz?VzH!C$-n2!8EKVYl_g^;tET&s^FH_H`T$*{Aw1hGul_s%qt+>UZVwt$OQMQ9D8qHx{0qJ>zF7+i+Jww}>rz5W3)cSS!>R0jzl zGLTY6loFS&kjuSJ%6SnFM#D|8bSH6R9-oZTFXpWxDgQF}$h)ZOA$lyT3s}0JE(q7_ zM=TZrn!B_Mp-b)^_2deV1+H_K%JA-|3ur>nUf0&A3xa+?(~l9DiTVUqv>jE7?YE;o zxJS{Hc2CRvR&!@KB5ZI)e>)8c6SuFhW`ZwRA?~q3!vm5KAqsbBUS27_eLEsa2$l== zupY)ZHD9kl^Q;cdH{?Ema{btnfJe)kD*kcBNdVKrKfOcqfc_r@y17d~NVz+Ra`a0viD-~*4AGWj zunY}nCSAjNp`J9#M{0r#Y^C?#G_TC?-JP8QQyR|PvZRCkn2l5Ah#^7+a)KtvVOzbQ z$Y;Cyh`$}R@~=*6G?T83Yr%AQ+abuWRKZ?E?W8{N9F4wE|HC@bJG6^Xu*{ILlHCl( z5dlw^CHp3sXQp%~p%z}Uo1Ef-J5T~ifb6^j(TnddhakN4(n~L|kNf%0fAQd$juLt3J#%&s=WVV%fI%!x?|JRn6Tx{o&SDOw1ci0B(FEarql-s{s6?C(ky&edmau zyw`f0r{~4e+C>0v3xCC$}_h#-|?9B^X4}v{_6SW(Z4wMO!LoC(Z>7Eoax{A z;ZrvUHqK76xLeCd9Dfe#Pkd~p5C?J92~imt@D0#8Gz#Abcj4m;Z>O=gBWx}VGDZ(gA)!C63v$wFg#gg9P9MAg&dus zy0OmCvX^>BkpC8imc85)+Y`G4%73gg!1ugKBB?^l8vS{j#NVwz^d%KCz9rY_gq@(- zd^hSRtd?a8BbKOzw>t*7=3Il*3uf=A#{fd_ARy=VV4ErqoBS9jvB>Z5864>Ei46|m zO@FXm9mwUKK27u8=)<06T(st4f}8e{pJsKltH}63BqMwx?YH9%{F``!v?Jr~a7Gg; zMTF#!D~5oOq`+jj1?fQ62zT3frz)-|))I@)e1L`hhy+ugu^F5{LkMuAmt@&MV(cLj zP;veEZ}(7KU}m&jv)g-DCsAU0QZX2W;YJ+OW-v-&IJzk})0wvkbfZd{^brAr00n*$ z(B3c$PuFJ;Vp*J1!x6N|hP?)r3%PA0mY?R=cO!-= z8r%a~I?gb(i$gBk0C~xV&MAjJE1;}gnQ2l+p!0Yxe zduVChvHyOENcE-#3l=QgbhGlishikoXR0?P{;vJ=O))RI@7@$8{_OXg6nA>hZDRf& zs@lXX{_sdEfook<{C!WWbKik4TYo&RIjwd5Bd>kj+H6lsZf$u+Q{VbfWzP~i{#qyB zKk6dAY_h&I-9%I5>;Xg3_GGe%J1aCr?4LawX?q$UTVWbtd8u z|3ZzQd@_eLzV34?nybetn8QC|-G62Wu%5vp{eQ@3KKKoLE~TU z!O}rsXrqdPEPC~iA-Tml2WFhi{zbA`+knw-?825iv>OU#;oBNZK zxnuv)AL9BrZdOrE`D~8vMO0xI8#@x*_ zCg)qHaIXdw7z`1;`w7R4uIhkoA`hN;zTB|YE zYRPWdx*yRVF)-RAC$J`C$d}vx`7dbr%>(veuE5&!a&vHg!^FCC*z5i^GSh>rgQoje zH=n{{=Rhn1_s-+HX+K%L)6snDVuL=g;nc-tD}JPk$x&Zb#p=~py?T#*U+zy@HzY$f_pinw5VAknh0UGZ2UoY{{&+R{oWFSJN20JMw`{fOx%VTc zhr#U#zJ7whl~!z^&J>la1@bwI`&N6}*h}`-+_kHZ%tZ1+m?H8K|J+}$R&i-eQ{j=B z>yL1D<_MFzo;$Dp)<$62U2w4;2h?>SA2FvfnNYB^`0PCe`*j*)yKnU}H+Is|$mqi# z-m98dc=^-Ss$0ob*_8YCy)pr1wzuz1(M$7$xRfcxFaL$mK+z2V_7F9MxD`%J>X zLqBRh!fiYlgXu50b7Kn#@QV#bym+m__%~9}_*#SMZw=*3@A_9ZUT#~{{N%{ufR#KSR^ix z!?|cgkpA9n@OBQ&Z&s;Mz9)YyN(OU+>H(C)5RMws3Zc6DSBGkL;=4f);{I9#@pH*h z7fGw-ce}&y-e|x$nzzQ^9;!nYE%FBL;UaLZiqJ0sw3P4B+9z8Tg*YG9bShd>yr0CV zzs7!giUxcxM8|c(n5F9Fl(lCD`H!fwf--+gjG*k9!Coq(I%g+UIRPj;a@4>GMMcZV zB~A^)Xa7rhBB1xL_6MOZc}Q=N{b@LwSxcjtiFDG4X7QKzg=3jNg#-4ZYe%@>ZU~Pr zdVc$zp(hfyfpGj8aPyTzH9#P80r}`!4HKuwFoP0mK+JbS)2WAWL=gJH({#R-J*N?v z;tIpDf9PY*{$?#=#XLA7c)k@MT*RvLsaWzv|4k_SL*xm1?nn$a&~7*s=s%*wzee+s z6948~d@^@IJ<#qx$$b=q^L*`4jqn?jZ5}1`dO*CZ(lA4Tv15M^Dhy*9q#E)EA+JQW zLr?!jTz$U`0S=J|nXex)4w%yVPGn#Nnt`BQeTFEDv2qW{9JL&VoRg7bdvJ9j@E35q z(WzAXUN~MYf|0ysqVW|-EXA2_oliJrn(u1 z{BIcPZXf9$k>)O7-8rl~jdf?R?kLuMZj{@=y1k=D&J@S$jJ4WOU9DCe$#_;U6?(Cc0M zf2G@yGs>cf{|_#nfN6(T6JIE{>deL++SOT%cl|C-8LHW#MHU{%d#)O!(Vn*4=d_d0 zs7cz*jIk%PQFd;?_MFxwBuEN@lcI!?{hs~-iL=CrTBhIA=@3if+mR(IQr*Y&{rEMr z2RFJd&rB76oNjwT`>5-(EpG})Z6HAG}rN9ysWG&W97J)4=u zG|=R+9Q>&mM?8DxsO6ZHFyqkCSSjI{q@Ljscg2etOhXn!Qh@j1iQH_jXr-z{t8A}o z8>HMrw!eZ_HE30dS5jYP6LEcmjlp%&j`L?4J-$xcOWLyLQ!^Uuik_P+ip@QvEm4~{ z&(C6N>vMASs64*i>oL8ewe8gYZj8dB3>A+a?cx;69Hv*bw%4@3OQU%sM zCD1Yk(`#D1m7y61$<3QLJ5+>hGz~Bg)uDJwvT&#YZIpyVzdKftTb~99f_RIc&?)%0hL2)dpI4tuDFa;z*L|_h|%1?^S>8{XfN)u509zJ4(}jfQ^h+ zDgziAid6R8H6iebnd!;JMYTm-N%h2JhE1l=~UDGZ}Gyswxgb z+ro>lq^r-{r$aPdK201Gs`jelkozaS`V!5B5J{YHNxHKOh@#kcQ7>x9+y`Vj{2fb| zrVAP=SxA;RPN5UWDvvet?AP{8AQbNpI^dN7FCqk7{eKLo`P4X znP6zAL7~Y@#_O8eqUu@@256&FgN%~OVvdtDLUl?FwAC@*7)9O`EvR*b-xyUI(ZE>M zVkTovl)2-WXTTT$FK1Pk6wPCx$9)jkP~EHA(7eBDTll?Pj2C*%Qs(zR^CIL80w#+Vq-hPt-Vd@c z+!{Ta=QRVJ0bg70lNzy$EwgRYxZb~4-*oDXw2!N5lEm)1ILRYqNZrCHsi%8aoYVz& zz9%Hup47N5?_fDqllXBmyT1_S*?43YkVLRa+>tE4o-D24UP9if*3+#d`X?h~3xxTU3vgYjZjLQ|~8Iv{q(mDzrw-y@{; zi@8J_D%x^?r7yGnQvX+%a1(pP_H(^-hKufJM|G-N)lz#w?$7o8?As%`w*rQr>+={t z!POlHnD}r88yZ06w#PK4DorE78OJH@3{*dvs}>Q%b`lr>w!9l%%n?}j92S(sed_BGY)CgDhfinkZy1&(>OWZykd#QC+ zX1>*8NghldoHWg1nKY}YCOLU5LUI;Of`Fk#X0wce zG(|UDd>kWwIb7WTFN&iHv^dX)i~lPDF{x}|h{E75$R@qc6Qsx(Z@4A{NbwLNh{6df z3+{#2y(GE#V+@c`2%3WVq2NGF6ogP9-DEJC(3>V3Za2!#3C8_0d3h~YMk-4z&s@u= zEr4u<>MS-rVd0nP=%GhW=BOTZeQYpUY*>;REjITR!w>`!sOu&91VML#fslpjre4E0 z^mrY<@kY~Bif^jTJ3XvzccFre~m0mGdzBoZLAUlW-P z`XQK*N6MIA7|BS<8yd(~$}%FsdA1t`w~Yc?ZQ|tdc-MS1YInymqald_Bd!~*gs9;^ zhSt60-_|{bH#|$!#|>C&xgu^JR{|unk%Ae-n7+wrePeJYD_>fOc*0W zhY4dK(KitG#SmcxoqlO48C4}8O z&QwYXOSz7)6dPbebtxe1az2t8=rTGG{y2{G81jH*n6M}rI!sv94++~hF5F`T!Trh%{@JkI>Lgr#Q@QT?8lRt^z1hY(hpWtu|?Q(s4z+6LHAof?FFpO55l zk3E=0dJK6$GEA6Kh7J>^{2^h#&k7SpP!1EOypAx;lGis4gvHr3(eey|L3P8N_j#6k zSI&*^Ax_r>KOx)jB$=i#5xBRFHLy%`?)@6rFU`4YHKuR!#SvPVF7)9veHbG@K$(ru zddMttv|x9~!fXShkXLmm!^4cCZ|3dpxFg&BQZ{{fVt2=V*`zI`%#*u2nzP*_1=ATo zpP{A~X3FGjJZqMOh2oiP_cAllICQn>Ru~MAQ-uXdfpH-#PNbLEh!u7lauh^2y&Yv- zN_0`UHA6~iDOE}zWSf>iOD%zxx{YRZq2b{Q&~Pm6^k}=gndU+noI?*t`A}yaO9cWb zn={ZXvnZGQp{kL(gAC6hB_;zxS;&-86bz}WV>?9wTSy+m#lt9&x&eg@h+%mhiYSWW zbBaPXq%c}ahfyGP0}2@s1K>IoN{S*ohY$iQOqR*e07bd(B4PU@vCX2U<#BTdEQ8$K_PSndHywhMsqR5$n&4* zGwS{(pUj`bGY##XpJvNu?hUpaOkR)$s~QpkDS&mp+-4ZVh`V*h6~sg)S}{CTKD#Y7 zRrCBG8Bzek1A)2I2C)c0fI@XE!ow^qK10%SCzX~M(~X#3*a}SVJjW0mOKjqN6VRBE z!vFssp{yIioEn}qm(vQ4Q@W|Vn@;DOu@J$HjAyDP+f454F=#c6!QolIYTK3OJK_AB$@4m)QG>TYJL(LfKpt~vmc97=ER>)m6;}6#q2(e_M zWgRKoG(-mylQCgDn9PIM23dBh+(zd$YsN|Oq>V>$9*acu04$j1-5s^#O_k8x=kxUe zSOi#bT$@lK=LH0$Q3kn4Kp3(nxdsB!w-b;*$RL*qNYsrW7!5NC$U8E~_XI?FBgh=e zB3UWjxW@9(#&JV-3`{ARX{&9fS`0C$?Bofi)izB5^8jw4x-~F@tC$Bo^exo(4ElB+ zeama+UkAlqOY<7?K=7eND=h&px~73bXmXHTa}Ag{*eU!_b>uzDdpxktnvW`XcWjwp zO2zO=wb6{&-5t+QFr^_QP0mQz-LZRuiA4r0XC&|L=$v3mM@G7wq2Aqbbb{$7WZYzf zaY=2?lM~z@Oa$KMqcOWXzMnuA=8J8RNmS!LG7xYMCGrcF zzDSo}luab-dig~qC$il>M)sV5_s&{uhHdHaPhb!LQ@#0Xm z$R4hCcgNd9l_Gn%(%l_LhN?t1tb}2uM9ETSY`8uom~Nmj8DRazFjQBX}}Q z(Notb`r|c<{`AijjTxdyPRJC6)085l|92+dIGV2;pR_yVQF|Q|!-G{Gn^iGlHi!J9@>uy-KOG5|($^JF<&PX;qP1i*#?FtVSSENAP<;7%U` z_!N!gVrZ2 zKpi0oYTttO$qGl=yShVkec$bDso&qSua3|) zeYjt{=g5&SICi25PCn66kHA4sAfyL@HTMWjzzO933%xR#l0okjU24vBX&I~_Sr_E= z*2Pr)<@$A*fpVf3IF9%f7nrV(TCx)>!+!#MIKTju3EfM)`p*9Ag{Q9vs1y$Ihbvdg zak*SRS6l)cmr~dPmB4KQ6%Z*bg8rKrk=p|Mp#6KvfonW? zkZaoiVjbsfVlL4Q)4|4;y1m?fY9;TUxF;L-@8X_1#2s+HxWDB|DyInd?A%{p$2B$X zuHzaTocmgKF@wFk8|vy>;{DFSm3cBTqI7Q^Q`o()VXw1+w&Y%aQ#LpcvMgE_Y}J_8 zWqwEN8-G{F?WX;t5e&ekXZAHbbFhwUY1~`Cziuz}gl0PT!FJEdJy}=JVr&F=_BT;| z+F|zX-btlYcYi&%XFo)}+X)aTjYjU^{-!!^U&}$djii#DjR1t|)-~4GwQ$ZBhKE+& zKF;HLpa`vV5pb=*@2_tkNG)b-K8&I`I8uZ;vrHK`>q2|C$PcWltf?BY^G=Lvce=~o`0A7(fs_`P-W1Vy zrJI<~jzk`|QCt$;BEs(J1G{ny^~ksItgg zXF#ddLG6_)?P{i7&a~l?gJPh5JPCf(3~f=vEdG0-#oJ&}OD*6l2dokua{|u6gG|7= zT4wy#9G9Sv(EQ)~BSrKa2_OL^fCP{L5Zcn?Zsm_Vix;**?aE1EP(z2zW_dAT_C+SqJsm=NrZw4Aq31UxXOxb&_(uNN?cigZt$4it=nI*JzFc zNj2Q3+DCvrTv`2`-8#93;~?&dTq?wss0#s?lSxfFXEYcLpqEbn(Q9=oH=fe0p(lEg z6GmFOfuw@IE=0}(|Jgz1)Co9%0XsDE(N`-UG?!^WUF_&n^tH;tj6p`R(}UjAK6+6( zSU!l9@@nP#zP`iCVK5pw>V`3~+UHBGCVjr|FJC-+xYpm#)AyB6o?N~!oe+c0r!$bm z#FM_0(9R^e299J35DprDs@*^!9N|GY1m@*oD4Eu$)fo&L?XXdk<~`6?d-&|d%isGT zpK^grV`2$_Cza+A`VrtImgNLmlj*TuVB`qY4j6R=x?|0Q>66R* z9z3*f-=POtJ5XPQedRYyFW)B^3_2|}1nh_DRcTJ5w7aHnKnL(^Ff4F7{A{5$YIvwt z8#+A7TKH_B4C+5UXuHvJX`S?-X%!ReP@-!EFT~q&m}`#At6cG>Dfte4n3T#1 zSyu-KT%ml>mpcyhAGps>3W0&a%1fp9Fc3gq4HJNa7-)6#?QjoP%n!K2yg|rAP~6>c zwL}@BEG(b;1LF=RfEqGci3c)j>CiizsMkQ6XveRtrB^sKw9C+hc7**fYX~4`QI5Xa zJ`Md-RH)jb1UQviN*|?vRB+fnLQDT>nw0_9@fJ%_`U23*gehs&QhH5$EBv$8tFN;wpOEoY@N;k7oE<$vbHugmE+8M4NXAG zNIQKkbpQ^HKJhTU)~+0{rIQT}7$zwgeMZ*5X@56bGpUMl)WCSAqYTFVS6_Yg;`?9q z^?mjJi;#p~^wr-V{5!q=>$?ZP`&ZwgLx&!OzrOe1=vo$F%w3IPk^x*W}=dhrKNybqZuUk*+0@jo9?2FSeUZ+tbJcY1>T` zLPLkuq-_tqcSTywmeLhzD@seZJdm~}Dr!sG1D78?Rk&ouZI0EYGfbu#rK^X9!m&N= zfd|q`OR3(LvYWE<;Oe*y?m%zett(dCni4t;?pKuNWjG}F^mfli@FC1&Yp?2hRcHRWa=z zo)D!lehj1nIUZg^SazlG;!FX0XP(0dx>MaIx6!VNN#S~29!2Kn-A3=)5#AzuNKAMN zchR%*PM4?pd~J`kWV)xj=OsBM#Z2#ZeqRm}c6Pa|k5tcGy?y5TSWs>{Ukh2TJnxz* z#MR+lW-xkhX>yOE|1I&}@}hf~dsz7rZ?VBhi)4Q>(>?93u4Zq#eRk*67}x!W>@)wv zuF*XRe+Ap#v|HNrVR_}zgt^Rv!^X?)F)r!p>1M68Z~D!#i#;xBc)aPz3~AR);Wsn% z8h5fi#Lc-=>^eAe(!?1xzKiw{$HkT{F1?Rs8d;{%Z472UyT#Qtg_NwAIyGkM)T!-I zUyO+ygLRf8_~K08NbYMvJ3YN9D{WzTaY;cT7hafF zTAam&7iATfq!pEL^TN}LiqgustfHcVB90H=o=|0SZBN)>a`kMNR?O`7X^vFG)dj$M zz+36)HS4K3<%oQRJz zyFS!pytYgFZG81>TvVvXG@L+syH8`)c{Ta#+3@Toh7vg(Bi`M>Jd^G7k zX}=}Ld{TDC@xJtNxLH*qvm7UVt4+MnBUfiKDt6~bf!!%)L1n*PcHcj+7nN>gw+3aS-V@GrLdpIciV%92!VBpYXN2mVD$pAO89g^W~1Q zzHqA^e2X;qw7bZ47md(01ae)MtDP1+?rY3~%?w~JfG`o4R|FoBPP$E4Z;Qah9C21rwxG<1NpkV*9eq$`6hxAuS+pfQ4*HZHBV&dve63SW zv|+mC2;e^jYw?jXy4Y623d}!e^4Q)f>+tXsiF6}f>iI^Khwmex4(S|f4Ef$=@0NKN zzE>6orPF1;@OrWEdcHzw%98n6F!>i273379`5Z{OjDo^4t|&KWehF8Q z4et3Z($jNh6c=QdEJ-WM;?fo^;!1M!vWnxGK8(ZZ-27ZR9;XK_7G>pUvYeu<8AVwc z1x56ZgT*Dis30vfBdxfE-sctvEs6`XGIFzXGobh~F1w&8JvTEmD?iZh7-D)NyiSRO zdF5=X-_zJoCub9w-~!pjyLawCaG>tsfyS1Wz4Z<8b6~isvNLBS*k{|hw4DugEqkBZ z*YG6AvZIy47iN_eC$UodiK*n+*`shKJe21j8YK;fxOykowEy5i&bhCiYdm;xkXi4| zz052%XjZ?o4s7ZU?%K;aTR3{x-w9fqboLB0g9*T2+uq#`b#*P=p8fSZxkJu<4K$yI z=J#E8k-ACvl|i#>a~k&Vs%yA5o=a=0uWNuR>js$h-qOqUzSj$8Fog`LZU0`bp{{Y) zAzI@AGwLG!>sQ;8PQbuDg&VQlxKw&UD=PPrzrr(^cl9o@W%Z!d#PL}anVmVc2 zJ4I&&x-Adf3@08K{Oz>X*Jg{&vxV1Y^I=q%R{3F>f0hS(bp)1=%hoTD{aK4t0iWwvu=U>inEMT)~)slx&3Dn)ATC*7<_Nk8eMiZnzaOG633 z0J7?GpHg&>g+MFNjKj2L{Juag=*P6zz`g;PYz<<#CsF)kqHs^*kouG!12&}Hg&(jB z`2o8rbAG74t2nvr2aITs8`8tau4)8}$8CWJIl7DhD(|vSp^u)2K6;Mz(Z1PY-)x!7 zS=Pfd0~WA%g#6Q^i0_!3dS^83$T;>I(pZMFxWAjU(=LDZw zVNM0_E`WCz!MjV~-38{IB}ud-@%zK++6Z-iUB*8<%JL1X;c}VnYta7&^e=<{*G&K6 zB=O-Ssww+&g=v0&HDCBWfmj(GTK^R&@B2XgFDHpFv-0GceXKlE&T967CMoyV>`M}T zil?^Ep`0%v_a9Ks=gco-l4wkV9%%_Fhr!!#*y+lpScmkvL#oV{Vv23Y<>4F{!5ij^ z$FCDM%(dyu**Iqz7JWI~(*ge2T=B8FLg!pQlu)68DkW zG`%3d6m|@1zc&QeDUO4=8?2+s`GeP3qFG7ia$8incUg3~ccB@YD5{+9h8mN_#$=@w zxrRU~>2$doqJ{t&zouPP)mT>5c)6;vP}TTARU=Zw5h=Ej;DQn45g;GQTv(DUE=d;t zQyy@9S#U_-6P&Crriizt2p3b>0OIexn$C`(&J)_e)X=}27lS(YT}|iDOlLT2M5y|2 z^p@frUe2#&OTa1utsESK6U+IJLoFPO-BNCw2r+UHqXlA|$YL}&M1wQf`?sD+3c9c)IOeuHCDyE>y&mH2!4&moi zC72%-%zxP-?sW(+(;E5}5gAlD>JZ;|2uGO{fhy()^FMQlpE-oj94^(&XbUO#zZ7G$ z)s%90=M)^1bP(jt6DQ6S^5zAsJhmy&)dx@8pqRrHr<7Z)<)9=NWes}p)1{8QKpn6>`6-(XaJK&_dp=!!I9+%?orMCEfV?Ey%B95_ei1|m z_Y*VywlQosd^TM?lrEeN7|L3oWcsZF1-+0Z8>+_R_zdyebYZ+w1KV%QHBg=~(*$gx zIOebwCT=<>lxBzt8A9m*L%*vk!xyrY*~X>}GiqI#AwHfVRA$J~{5eqLmLS^+nWC5> zOvnuCc=*kMolXDk2JEuv3Jeaj6<8SF&k9x#`5OYSdf_BL-LM6nS$$Y07eP0qu!!4i zw0W)#01y^u3=v0Srno#)NL1CPOp4&Bzw?~S6zejDb1EGcrsB~L$8o%$)&D$>sWd2C zxiB$vh#-11MLtXDRaK<~p=ylhv&1D?!t+`Glg4i7H*lqXUcNh^}nGr8w))4?L#uFpX{;!tBjF@$nqtO=S`rWEQX(;^{`E zOy3v>ROLEhQuZsr6EQdmvxmxY!pg@lQFzr1=AC8MN=X zk|TEJ2v>5{dh7)^dnF+(%Nv*xxQB;+%65fatt4}R#!xMtzn?E=&KG|FqpmzUU%Y$1 z@Mu3hzbouLh`J)>HNsEyMz!J}pD+GvzHmHPOTcB-BHoxwl^Syc#mj9ph+cKBI4M`C z?x)9G{-L)U{^nHPngr^QfwGPa`&jxlYXIDTFJ{$F?7dvklPkOzbTbgMY8Upv0;=@D zf`C6)iMf1%7`Z?w@2BT)CRGpqUye?-A>F$`bS)6}1|14Sr`kHMTu7BxF8s0R<}MVw z7YK9v>G`8$oiI?q|8jt;ecdAq#jh6%j|6=R1gP4hH8G{8A(T}6wLdeZKM$d#+Pi(f zh*tOgB02{rusQe!HV4ltwC_~tkiplP*R2R6jOR?2qjf0Z!@L07X=y(s-vwL@K>&$PNoU)V0!~R*v^6n+XVJt zt6wDQ7YUE&C~rKj$rG>16RrA++f% zw1=|Ahq7JrzHSw~Jhdg2)A@#N@MyCqvu1a&W=~a~A(HzwaUkN7e9@9Gl;qp|`Tp0w ztJoUlm-@knlml#7ZRx{DGWg{Hzf!@kWad|Ip4giQ&ag=kyh$o|@p1iL{cwLf^~1;C z`+czC;OIC8Kkzww_V`uKM_buDp7e5lG_ho|kh9CxAAMLE^h*SMk+|BqmDtiDnoNi$ z8=^^P(Ok?IFXj&_Nn(DqU*&uTycrPj-{1M+gRpMEe+F-SJpA2(ZCf0q=r@k}<-Gow zWdRFpQMqkC9m4Q&!^0nD2JGF2UkC*#_ugd-AeKcC%X}7#t3Y%WD8+qt!jjL5E2PCK z+sV1XL6B7_-dHGP6$a{pVyQPl<@})Ar!2PLgFP%1^@{-- z^!Y`V{nCK!0-3W))=avnOEaxV_S&?&J%Pyi677@&Y4klX}237|1 zrJUoh+D=^jPtyWe6WN@4GlR8~zDSiKvbk84iiOR^gOuoFieKqzru1~N z+&cc^{LcuU0k-}Hfeml^68C0czY^HXFL7@w7H?8YVxNTuy!_-LZulg_&i*mS9HHMO zWx9;JpEz9UL)T}sMMsJ7*=*WZDqv)8x2$5}-%)O>02fw)3wMAE6|7qnmWYKV^mjGT z{PI{WR+>tlzuANdr=vts8o}DB!o~NYh;tm2*iR?ukN4eoFUUIHcQ5qQ85o!1RKK|VdO|mUX7Pm5FB!om!PQcpm=Fz&cn-KMvQzH0PhlnBwISIz!Q?e)c0; zXp+HN{wa*T5ocD%m=(Ol-Dq0_9e6Et;Jcv%uVEdyVX@e-n3ug6g^o)2YXKuK$Z zCo1KB0oxeBqoH!Yj@`q<)J7T|{61hg`>+Xv8a`xv?vP)nJ`)@kbC-%YE*0i3l|R_X z+3U1{iEG7Dv1F-GvXqBOo_+F>H5LRl9#|@FUMf653s7rp3s$jnskn2g@X1njK=kFZ zeE(bk1k_=vVl&Ss)>$@}+o}M~CP1?p&{VO86PJqOQufMeYdQUq);6YEU2fY7s@p)d z8dSG3)t;qd&r%^~DcuRxzy{!irIsl_RBo$LHdgR-@iFYb;oiHf7K|SP;~HjcDHAPa zF8HOfzt3O&%C@9CHt?ToEx*`6gZR}3+l~$1Wxv?qUHGdFVU`^mU>W%E%{#<5@31`x z^8Wz&BOreeaq^DQw zjt$e0&rf`I0;H=ch=vXPTw>YH+-TfjYk=T)gJvTH-@u@>uNK=^+disf_0o=gf%c1E zgWhjI?+MWRHPcI6EherGhPsD^x{s9$b--89=UMu9avjfu?e7A0+_*-(agDl;6n`Ci zKyP25j@UI~>>3xmyr(?h)>>XIv%}Ke6(L38~jL}p!cUh z9h>hIH{a=kpeWLOVtJbt*~-o`Qh}x0hC*ssD=t_oELeLLr1Tq3faij>;tlQCCBqmErAKe)Y)y+zj z*jeWJXO?c4>-aO+wg>7swN^aUua0DY9d6K*0(HE%R(x-*i*MCZp69ie6RgM%c9wbm zm8DM)#dGOhV#8fR!(CV5Stw7~0i+Fgi97nK4@UY|aPBlXCnHU{OH8>di1Z`o$r(A^ zk3jQGAl&!w65qdTNTeq~uOkrdw7bML2 zv3&v)7epM>&Sq)4vy^|JNt8{oTwXxT{m?;_U;X@hHZaM0DuaGlKBzxClQ;+pjxNb=*gDKUYOC*2>u?i^nnLc3sWEGsJKI}bDtpJb z3FItE(wv>?cE zYk2dYIFIoQ(1?wV<^D#i)$$~!d5cD)ktRl(djIU`OXxEi@n8-CMlD2wkP$OeSOxk-EUc= zAW8_m2MBO9^6o7fqS5wrcXaVS^IO)4o*KFNx)Xe6x$QdJ2h|rt%o3Usq`x=t1983s%rhsWHS^wNS~^* zV`zQqO26{`>O+*DzcGLF5aox2P-h0|ga4a{@JG=etiKsxKn2vFjLnPbAF0~7SbUOPOS)JlFjsQ zG5wQCf;~6`_Ux|;t_s9Z?OpBBV?wmq?U$l;+9%qJAU(g`2k9qSdO`c}F*@yUAswpS z*nR`#<}=L(mRrbjceC94SZ)c+-NSMhvvT&a^irnzJkxxTX)b4)FS6X5S?=#?Zs?Bo zwPUnnr<_PMM}%s*2pu8D5tLY4pOd|m#fCP{L5EEluuG^uHzETV8Yza}O(D;w?59X_4$NX1b@{)z$1xx6kgJ8sobEkbUNV*fqKb z;jduZn|4c^J}j?1nlP7naM*acJ;o(HJ>9I8_D#PzcCp7L4Uab+nIY|(Dg0)JUgJ)- zhqyU+id_e1PMSEQ#&^*k;<(td#ijSLOe4!Qx{bliXScYzrjU{qQ>VsEojSE0>WeXv zV^9wi?W9FJ^wN}gxRVZq`P|m|E>p#fjxO)Q5TkdQ&S)dXu5O#&=<;TOpjcG2TRo$6NGXxOBZ;A8ImQ z+a>)rzWOyTD%4{dP9VMAr?Kiho#xL>8gk!bDLFa^7iu+JSr-om=6`ll_3h_Jy=RA8 z>ACo>R%fR-y~{(bhRX$j?T12&-PP9Nflk%l3JFP1uf7m#MD-{*qz|>=W3_zQ9+YgC zB{WDmEZ+<+3N)n)@g9&ly+tlXe#a5tO6vrl{mO-SU(%%u@jakLYkw|2nslGE-x6a! zDLdnMU-~%QtSXUNj+4ICCSK@~t1}rDyYr*K?i912vfsv=-M$dJE}?0rt0$>xrjr}l z?F$$6q^%%F$_{IFb$9eQi1eG8-6#4SwI_TI4Wye-_}X1dKJuLpfBlI0a>rO-xK$6n zMVfosUF5opM(7#>xxUL*X`L0$8%&l;YiH6g>`w80dsheCo8}v9ppMUGN-x=Cx$X{= z!6c0)?UJ6fcM9*@#Vuof-@Rj)z)!Uce;wOd<0DY|2z#u#C$>4kH|>kAoFv~gCl}he z6?%g7hf!@BVhBs>o3^D@h_Y`_=$q!yfSRkTqYbQD+dEyszY5{LlAP%$ME`c`bD^&47$0S*2>F+0q~DCnV6dgAbe`O z-r%U*5^MaPHyqO&+B8<;xNb{WtFZ?>f}(kH3`EUcZ9RHJG^ufNy4my0BYhdxFw?Vf z;DB&_#BBH2SYy|=GgahFYh6PJjYUCljR038v53`S5i#eVm@5d-^ouH`n<>#80pD zX~ptLpYEM;*O|6P1}fkqOr~z5#t3Bz*CY^aJ_QG0IGD)w0g3Dts9AI-o`hLK;5^r&H}QoDCNfuJr;hVPnoMB? zCxszXJU17dGZ7=L>7%nyCUhbbIqYrus8b*?F0Lh#jo9?2FSeUZ+tWy9T1i%Zep+4@ z^aUbY90tF@J8IzylmQY}hHJDbaO9WfrDqj!^Em5uGqSU%h7(e|uF53JSdj(I9SQ6lT%5npoKd{WI;5DRU8jZwQ0qaV;hyOK^R@nKF z0n$1q)eew8!KAtY(t0Kh9U%P;lj;XZA7|2G1EjxYQo{i0Q%o8*K>9wD4j&*r!lc&> zkh++3!~m(tq~QakZYCW$K>7ibjv649nAA8xdX!0{3CwtBXYf@-nrfHK@g?(fi@Cz0 zf*fd`Vy-AFFD*BpE13^{xS+6%E6UB8U&0k+a~ug+q^IX_#Rb_VOVWz6xU@x!xRTtw ztm1fP0F%pfZhkJEWTpo#7G>pUvYeu<8AVwc1x56ZgB3Hq2*wW#pAveXTO70~F3ifv z&Cbn$;>)<~f}-@?%*?F(cy8c9_zESC;`s%oi!!;~5-w{obk6LwTyU&_4bbUaW@#3^ zNy{&TIQ$kFxkVYJd9aY@XJi#m=ZbUl3Zb&1tdi2Ad|D1v%Vig3Wd$vYvI-ZaWn|@L z<(CY0MdcddE2&p}G?7lu0LIhQ2Uplow|6hs*m8*bUELv0okgSyyCt#0mRKR(X}>aU zmKZ%tm^MqAw*vaVB?(3du_UvzgN_qRDodwV@S((#S;5~#EZIyxUl~QA#H3e7(FWG` zY!s=aw=yXkMJnk{Ov*-)N_riWvQeaxYM7LbSsgK*y;UBwFv0uBtV$~Dvf5NqYp^zz zbSjfVybD-Fi`Y3|i3_It&y||)4b~6R3yKtKDxXeWV2(k?*GfiQKlLj?b-%l+qIuZu zC=-vWXmD39nz2+BEl1~<`iqWa6|$IBMQ5|3{n9~R`!o7`?U(j1+8-fN8oIw5{iXgA z`bzVMHRLiz|vM! z5d(9ziFh{J?7{n0aL*4XmXZoSfmjw-NZ-woEc0w7a$TNgZ&5qs!9DHnW9Nut=Lpx& z;a5=u+hVm6n2uadyZq7${@5@}IqMF~D{M8+PX6nO& z3RVLxd-EKzXqK>fjxAYLD$VGbBmQcR&@;!Dsmg%CB;C7QT96M?s`Tm{@l~oMoi7Ru zP~cET0_C5aBgW4XPR@am3mN&r4Cfs2t2u&m4h&ss5jl7F0P7o^4K6dv>)J1VyOz zg=83OFwX^oj11QKNQ&5+EIg9(LqU#A5xbIwkwKlS1qq4|q^K4BzN>;vU^)rG!u&d_ z76hjjr>LFkSD~sagCbP;ND7@xpnDdw@%?y;_;`x&q(knlTrgICp7{F|fuF|@V{_zu zd5(x-J^70i(Ul^6kpd$Xx_Ag+x2&v?Z*26YqC)yCj~2?TXdBc1Kgl8Xr3jN8vSOjy z>ZZX~nxHGo9ActFSf&^%8G#zF9c*h2+Cmtc91w4o!VT@E$gQ{bJ)vuXVP*F9x_g8#< zfFdo?!*8Iget&C4=%96{QgN-Mlw}O9OQ)`1GL2tm$kX8cvZ-Zlh4iyrmC=-| zRq%R-_;H5ty1D|DF0J4zrty_hfwF`Rs-OV6+F90w)g*JG2h&BKR(t?x1rW|oyj<6|*hL~Id2Hs^qgAgBu5Fci(F(XHukrVI=@B>%) z5(cHHCi$Km@zormC#a`9f(Pv6UO%XTSSiwtw0l5Uf^B}lKzXuP-w)lwU?*)`2zuUS z>%j3!aQtrO_{*8%%b9GX{ue{_-wf3+6;x|z7yYjRcs%lQGh`l}ko=prAr(Aw-ybqh zG5#-b^1s2!UxJhW#hhF^UtBt0<>X_`$vVYJI-d`Ak~ZH)5PO$B24&R+%Icjj_68RM zSWSEZhXcDC58vBgC@+@Z^%v5m*2Dh`g!BWG<#9IL>lwwJ%)zIaWLE|MEU`ROK_B*> zt+3V81wJI$wa(>=u3X_@*V+(l1oVQx|8ebwH?vOqL05G)I5 z4+T$PvH?$^-dz=7|#7ya>bTh@Wi`pC&-@yc|DUqlPf-xYkQo{DYq^V zD;5a1E^x^!3DoN0{nI@-s#-CBzCiq7f$;MMHo8rN*EDRe#$NQ${n`L?4{X?>UD(T> zK$#x?I!Y1V)mWZW8g)RPTsGYz&?29cH%anFJJ%nzgR+ls*NfZ{ZF+~#WHM=jZ2<2>0>bMXO>mUx=f#gncxmZz#f!gHiD)JK1j>= z!3Sy8J$sO5_iTE7mF?F4$hzi1c9!R}*ID{aWiY?0^s>ML3UgY&O^hBeMQ` zpnoKw|8jx&asl(|Es!4$c(tNHTu~tRNm!R)p}9;^u|`y_Q(yNN%Inmn{z7@3>INY+ zG>woa7Lhsh0gV=B6$p{NLq94Peas+>Rfqk>)xU?r5_qV_=5IEw3udMPH zZP=$l5ByAP`Ixow-;^c#RW=IY8^lJ|cRz-H@wY&~SXC^pDyBarGsknsj{c;71ayx* z_~6-}@DIMYo8zUQpa_MXAv_GBvlZ}p&2o+f@M#70s<-zi{rg|@%61k8(>Z|lDL^~R zCf>LbF|LIACY||7{|H~JvD_T^#u#`zFrrkvtyCCMYGWTCReS5WQZZt&5T|4)Z#(Ed z$5ATIUMe`03|(-~c3Y{qq*S=Alrn@5;#&H-oWMssW#)WaYdO!De%`NBz&>1gbICf1 zyt}1IWgcNmv7E&wa8(waV$K7V&jVfQzEbhNQvR@3>4aah`u@?czDj>5{1Pnx5wQHC zRQ#gUMZc@UP=F7GAJN|o{N!#E>?Cq?4CpXwVX%`NrGtwb(2dnXRo6YkbO-pO7M`Ky zD!r8H4(zdN;r}B($dk!{wonU$9DZ~rIZF6)I)LQaP-JAYP^$7z0Cc z02SE>rb}nWz^$AJatPKX>-yaY%CG7J7!34{>JF?6T3vL&qKxJs@Pj=%|e0Qb}(4t}jTquAM0zo)UG4qAlp z_I?($Gt0L0+FQJP=l%l+>JA=gY-!nB-w@Buu@gSkZ=o(8Dq;>L{r@7@uUn;W~T5%p0zsbAugnl^+a3TgrN@B4z;rK^)wY zy1n%?a_SnuuS2vrl?A&UaFWgrK7w@wm1#W`n0$f@b&^$1Wdz<``8V8t8>%V?qnzbi zDusU}5V>Dp$zXL*9a&vnhoA013q{*+L9F+$_2UQca$Zg`BEp=Su!TohD9MsTK*Vw>4Rkw3L6mrP9Z#q3uCxRAx z>z&VV`|G(TX9L&B9dI6~YpI{k?Qde5&#>Q@Qs*FYe;hyHNI%bl79~6DV8qZ-vul4- z6Qo<}xo7t8uHOg6v-ldD>gyWRb=19B*Kmm2)A(YY?DBzqd%?y1PwuSe8tL;I+|f8y zUdbUJa6%x3BUO<_!5z{aAM) z{8+c%$?dIgY^djy?EXL4{rFb#{ab~PZ*{@{`-K0S8xlYQNB{{S0VIF~kN^@u0!RP} zAOR$R1dsp{Kmter2_OL^fCP{L5OEkr~KxlzLANMU;<%}OM~HyUAHs8C0QdLm3R2-6Hgxj|TB@J=D* zMCX>+YfgOPI?>4!Vj`bwCYih~C(iQZa}y!#hMyfeONuq6Mr@3&;vd)1^j9<;JBye; zir{ZBK-%53oAAMigeQhOIuqU*k?{0z$GL=eM-)c^L(xx{E*AG*YQJ^HO z9@fR%iTS23UQ5gi!F_Xf7q2Jg)Gj`Pn3KBr(Zqa17e9`e4N$F-LdtHexn*@dv`p!@KyS*O+x({Kw&zTO++2?~1(cqVdEh5+UCE?}|Lp+38XR z)tq38I??Hpz8ihwQz0y}N2(a@GjhX|Oi>p!kk#$-jj)=025yY>Mx=w24n@MX+XdN9 zN3=D>F$yHzE=N>b4i#;+CP=^1w5rQjRdtnQYgb2)^oLOtG(0wTFN`2qr3QzsJPSod{-MEIR#3jwZ+(e zGbIkxIHRNX2~FgbupFl~w0TRc@%z?JS9r;-mA7-ZS5>XA3Mb*&>+fB+iX-8R*5A77 z&ULH9i8s@m>9D1|L%?^_XkpSAX-eemd57EdvC@?&<9DraYrQnvp>;`Iq>DC~E1~`x zvsNmMlrkfIZtF>(%X-NtS}*v{Sx5RLPU{GF`QGQk9R?S4y9=q%AI-<51(Cj6Px-W95=jlVw-Ts@$pV+i|&2KBVuBxiMZNshGwrsrj&gWma>yFJY{r=^(>;CY{J+Hp@ z$Mtvr>Ge0>yw4#dR7NJ;6Upl%EbAiq&1TDnNd9uPMHj)p6=!)fjt?i6x8me}C)^Y1 zcv~0|;V=mLh%SAoyV`2-z!-3Pi*&vGUD3TalitM|xU(B#dSiQIjTdz5w@UX$cY@*w z#|-J7NGDbI7Exu5J=9?jSR`tb&6i{TWYvLEII}(Xr^8U6@!HR|tH^MoAx|9hX68r_ zM;pI$Il|2$4i0i_VnN;bt;@-U@_&goYxxhOYhs;8KxqCKw7vP#jQg$QW>`nfunwDH z)n!TBqPIzhqwnt-1&8E{?mj>2y~nOSntCl1m7TVzIE$1Nm1YrB`WUmRwbfKV#ylJ@ zkBl*EO>@Qw+6WJHCjPoHX5N%H#{89O$r$sOrrXDuyG)zLn9oY1B96h>^l10%)>q+jq zRkv^DHmzUJEdrI`-TXUOuOWH2Zd$XE%eeLKySXgdJ4yb%_f*_o#nkVrhXx3IcFE&51 z-a&S)c2&P7YQ|J|H1#yU`nB1dnFno7OL|Q#G&@XFQ|#Y+ylcY}L%iwkNOwdEcd6U+ zz1i&Pc3w0elGdAj_IbyANiLcScaX!$t}fe~aWydUtv7ddwDm}jn7dn{`-3pH20Ezo za5Om$eKneNNq;nV9_J%KIFit*!X;Hk`og(yUD0~Je#*$3CK89WF6Xp+!Rfxd9o%Vm1$U!6{dCRg51{!>i5A~z`^1heNgrXVpCV}^!L-H~ZXE{m?Uq>c*PZRN zUG4|0+Gg{y)4niHf7*TSwE0gyGk4AS3D!N*9WmT@=AAyRSQ`y<@v!j|-n}En{NFH9 zhtgj8C={gkaUZ^Ap0_2o2PEC|PK^%@x1Q34zVnv(^n}ytx=`_TGjvq*>)`7_Za4_6 zp%Q^^uY)u7c-n{wuBnt7kgD_JZ^< zyCzavW^N5VCf#S|zKDV}O_{%;h&b!FzVO55ucZ%Sd^4;OzG)v+MoLe|Y&*bd-PK0~ zZ?x1IJK&LsA4%$PAby5`xxGWLeKl5=Wa+2Rhd zYhsPxxH>Jn;`C(AN~bq{PRWXC-&T5CY`fyVpkiveHk&Vvow?uqwFk}~vlskx)PDKG*uBGCa#f&*89VMu+PL2Q5bG^n z?$_OKx|7`F+%YNKzqaE?$C*LEkr;ilZ+Qz zZ@CHl)Vm|SYt1?u%hp#{vp722KLJ3?OMw-PX}M~~O7x6_O6x$ir*I(v+xF7=T1u(M z(^~_zgU_t|UibIW5WVp$y#XYem@!k0|C+hJT5qTW@7$3)jQ?uAZ|3Uz+h@9~x$w~x zVs(pLGs9}W=&0Q*-Zx%eHk^ROTYe;Zq ze&v<%In>yAWyD2gb#g%ruC5Lf>ElVNbYyJ6V4L&Gzs7^rhnJ#rn%@vV9-kbl6TcWw z&5sh}Gc?a_z1WP|C$=P*!T`ieBC}!9CADrl+^7tE2Z0(z{O6dvi$dVy#p& zuD7%Mh(|R==gqWU)77zlN}qK1c&HEJYtw7n0Ex74qTK~%t+3KU0p_pW zX-6D0;Kl-m#ea;G9vffU*{W*;mkxHh_(vwe0t)Hm9ETl>H-0DViau$$R6Wt51AkA3 zChC)=`=ZU=Fn~|M-a-#8KZ9-ws4Grr=R8ue_KIT?G>{(FHIMll?%QgBqC}ZKp{oN5 z-?0OBQv8NVF|Z=W=EvS~CwMHSPe|A4ikIKMHkz<`73LfkY&2nkGN0(2>X)_}yB%3F z4Cf_&k~gyeJkb_7rh)7}{qT|Y#}c(8%vWmPv*+9gqOB0}%zkdo1i!qQ)U%p#T^-w; zmxPHtDWtuD-t$dyHwwbUJHET)jz=zgZkpBeNZQZ4KU#D0!ntD39#68S+3lp-dBr&9 z2<-;Y8{9U%uC1%XyYQvBHt)ih!)u_gp%MMVVW{Yy0?<_8ettgH>b&vCI9Ybc%zy!~H!QUZpFb$H270mo7I=B&@xp*7266xb{xz zIOth7NK@iYJFh&!i_h@S+D?Pn>HOI2*tYywJ%JNVL9?BP8DU;qo93jp zP4n4pZJLi^^=9Lic1)Il?&q|IC%Q*nA)ak3~AFGf45DO6$-sY6IR@&c?@dR zwzg@av{bSutxfZvnl?=m=sfFd(|mAuo2J^=7Vu)HR-1;fRdC6jlgYmEV)6zE0 zh(0#@0TY`w>5BW!Hs3$5++dM*KzP zW}dGFzqk2(A5_K~b{KrUoEGwY-$R-kWk@z?NNStDx6S=M_+&T@9+(C*W4*-(<1DYoK`XfDB~Ep6ChxMB;%qO+MM<~CLh!H>DZ13CCC>H= zH8P)r1~J{&*VPf_nEN$YS5 z?-mGn8$9oLmzclqalfglzNt-fxR*gb&UG8MCA)}58xo?`5c)^c0JWMCbiWC!-HBL7 zNWx2Tr}^`_rUvjyQ`*r6uP+;hnFtY z`U8GXYnQAes(qEmuZ#1obc7^ol6RbrCb#gb<6=e<7s7DQbt;ZUQ6vrJHmwIK*CL>(xfm2<#HvLQJiNbsQV{R| zzUy1-UGKNn_pKEm$v%60_V0Q2v!CbL`ylU{d#Q}RVzX-D)RPLc)!UcalpLY&js9l& z--K>5+5hJVjBl!m=Imxt-n#R5<>=X?-pM<2-e5&N}CIE0^!`HBW2$IOqPN&wNdd(;K$y-Y!V^5Ef~O>edw;@lB~Y ze`3SOa=Gl(>f^rV>9tX6I-}vIHq~vX#xX{|v1vOsoT2%tb#*;diJRf4Hcsl)*z-#G zrn<>>HO-xxMWq$|l$xd<%~hpgzM<|D%|oU2d<&WFkmT-Fi#8tNdo3#BDlZZOi0$^B|KXu*v3YT zw^K<9@JIF(x~$o)RLW!srpsk-fS#HUl?q8HRI(0!Vna(^ecf*8O!>{HRx4z^q{6t# zJ2hLK2T5|f=33|X{LH3_Ep^DOcl;uyJ2e+LdV3?C?2PkMW2cOZBdAiTN^PREw1Fi4 zr8Y-hmeh)`z5j{}zf$2~#iLZ%RPh|eX3N~`DEEUDyMWU0BlMi<1Y1(>ev)!OO}Y0_ ztWpc}m$VZmSP(E3XsHw7H)_E`_rsKX1Lc2`;!?BsP^qR$4STW1?WDr9DiExATE_U< zI$5G>Eyez%(O9?g`aR56K5GZVah$0?Mif=@Fj~hja*Vx*!Z`Hb!(mvaHo5QyjZlX$ zR$j4|>LSLJOPDI(=6-~-I!F{HCq1QSn` zl|z)`*MO*xwQ`8>5b`Wih$1!ny<+FKm2dGs_pFSy$NZq=5h@|vrV(DFkWtj??l8;a;lt zVTy1g0p`cSM>0IBY~whgAWOJLBV38#(XIQ!9~@|q^~^$u{;Hm7_`XumS98Uue^`#?W0jO9*=U^j+#p>@+3rKDpJgqI%zt|4>Sy-Y&YM>R}3IUD$|a9RrX1{NV9j>I66($;s)ZYlI@z zUNUMQVfZmcFA=itLIsBa<5oqSK9ZWWjtIrx1hIMg(5yECc}1hZCiE|JBNBXOISAZmD`^cE^h^lLE)MAl-6Z5VJl=SF>9(R`cU_ySgOt4tu z5tBUDiL{oSf{e{QYv9zR2MGned`?IU)i6SaLpCnG9J=<7o07zOjR`3YiV|e$=2@JM zcK(EwERbIR(}dJ6RxTUV4p>yean&*K^m`zYK)Ene)7ypTYk3s}2TF0$2DCZvSRx79 z>90=DpLjtDY35_&dpm(c955#7Z%Fr@%HbVg?j^EIFYFe04qO=@JVIFVARIQo~sA`X`L;y0n3o~MLSy3nyc z!D7(qVM`)4Zi)mT zn@rd_E}1w>g~TJh2E@FD&ot3d z7ILuXq>v^I5-t$gys z%1K`+r(CUWNU0i&)Kf20HC?P}{#4$wT{Gh^nwi(A&R?t1{-|KKDzfy-+I*$HRXzSb zc*Z(KL@#Hfa>+7bq|AD#zZqcv)GQUN-gO>n~k+?HK+4xpnvdUQ6uT zI9aS#f&5g>1$j$IR=!l7+A+OSr)!zS>=wm}SB?4!S1ew5IS#rm zUVO>LS2M#}m?34unJE{Pj?~vKT(sSfF%gR(?lQc{k{=@FT%B1*aBm|OH#{ed3E&hrpgx&nEKBIyt{&T_v)g;z&! z*DsI8wV3sPJNTHRi>O0cOfpxPqpSQ?EMvAH5qh0OxbprZ!i9XwlqB^|kjR#$59$G7 zEfdiahqVZ6nJ{!Zs+G>UIa5V0bg5l@&b%G6;;doxjKID}{_1EsEQnSHMpM{?v%1o_14l9QL5*(J&K3 zr8WLz6uO88q1!MtLk`N15(A@^i3_jihBU&n&n7oZth%MUy!gQz1X$bZxxYd!F`j6R|vW-V>e2p{IL=aJ6X zT{*&2rlgY)3JoNjB8t)fH5CX5-6x%Q+GH?bcR3L;ok zknI@TBXv12*yYW(sLaxM)fidRjn|HmDKT_*FLWVx)u_`l&`G!lq%|t(a2iOn7ZXx} zHeun|Iw?DR5umvW#4A8ND^SA(^j?>m6t;AGEaKGegd8)ENBUz#+@u50y+xg<&~6o=tIjY+9|U7{O?eZ;_!`Nk!u{$ z&{6h9N|U`rDA$FwoavVU5|t+gdc>+1DR3r>9c}Cr!lqt>EF^E}k4=_0Dr!~DSrbh) zj7&DQrgl=@c5afPVd97G7Q^_)rkOQO+Y2u+Ol@kcZ>kaGml`JSWUe(d?xq$S8h7L@ zHMD%BTV)vck@;4`#2xu}8k*}qcHV1fX#807pkYemcI_jEaTE6_o-oX)*`582p{8Mb z){E$Mw{4T5u3@|BZ9{!y%SVp)3^OOTblIbZmRVCfi@FW9aO87)4R!FmEqe_u6Y6#v zzA#L#8C&-ud&p4R*wFm3@_R!~Q&Y{pf}@7%h*5lK6b&;cOq|@Ar!kJLtDm@&HW-`g zY7s4P*^J{FXEwBaq%T6w)Vi9Ft-Nvk^oH7&iH$qeLyVYLZQZ!(O`WRI#yZ@^sk!u0 z>=TQt7@2enVlh(%m$$B|sjE++u332fWy}qiExkd8hn9=yUws+Vyy)UfE|X!K z!Zi-L4CmNmwaKoYrM$6cIiE9ksd)1WM4j>F%8q`KBW`giy8omjyA8gv$K~eG4s+Hj zI?v1Y`PjzYB_b2j$*D5o@oV@g%`ySahwaC)IL=`Z{{DDXT4{Y>oHm`mA)UYEbom6X3o5yv2V zE7RYu*gZtvKeM`7~F|>)kVu}yo zqRnPge*)bX` zzQDc!8fs=mkK`(&;+C#Vb0=>{1gOt#MOMQE;YNI5?lEyop=*J+@;6Vg<=!HsODL?$u{=+GMua%h22Kd z|Gh@JQWo8BbQ#Es)JXnm5*)8;ry4a1dLT{4K-*?UyR4d5Rx^tJn5&>4okEVJ@bvh$ z%|JOu=7H(6S_}3MTEpteuW*1MZI3N)AI&IN+!?Fhwqnn!m{QoBuRM_Gg-V&x#THni zPnnc32*@DnWuk)7xXQ@@{jsdby0Dy=w+&E{b%+PZ2QJLFKk zjt#hCC(BZsj*X^4QkKee3@5GffgF-hhh>PUpGk*Kr&VX=BTe#+$w*sjY=qIkogt*2 zepcg|P^=@2M(A52IyZ6vl`+to4wiLUhEJq#}v;brTjmi z&d+A=Kb^eVa*5?e%N>@#SYEP_^lHmG%QKdC%Q=<`OReQROOs``Wv8Xn@`>f3<%s2k zCErR}hgp5rdDe;6<<^B(;ygTPz0*qMg)R{8G_t=~g^i{_Af{^X7N(i@|4El1n*b*q zGsOc~7^rBry$gex9(tesCfiv1qxqNEU$k$tha8Y%LA34_oxAQNhgd&ZiJT=5cgC{J zCNo+HX4rW0HSO#{_~;!axe#wr)x9xK)bO8*S>1<&8X0^;N%=dTB4M=)8Au3kzIv38s3rc&1wMLo+kRZyT z=JQp&`#(slv|;7PBWgYmQ!;1E?DU&@{)nFc4p0oG4`GI|c%Fz80tbkWZe>5DHvBl$ zhQt3s9Wsve&=2g{^KA6bIg;x&cGPiL`D&<+J^{)@fbvSP`>Bg;G7!{@mLkAs&&fwi z@m*XL6O8m{;S=;Z@>4i@l7y0w`HCr!z)l7ss$W*IpQ>KUw5PS8@R5lfes<$;!bfpA zOLMAG8|frFCAv(R=pzwlA4VN7bvZdVg7hL7NrB!-0=Es4R@4au2ErYJ(%dgv_%hLi zVCbvH`l|g@^dTGPbUGpby^%Qf9Z&|@T|!3r<9_HkR8BA~`Nh`7Arj0(cG}c$d}R z7$;N$kLGne3jp-|Y*bp(zau16=d)qbb1$q;#GSID$0T5iQGP(r+oFpU|^IjBnnu@6q43cpF# zLxv9|4qPrzfY|tf8|0Wcc9@hY*=q$=q}evoDi-M#c9}ZqP7-?mRdq0`jBMVI6PwZX zs`~!T`*B#KR!25>V7vsBpOCO71~uX2T=dwRgis}Wqu-gN5~G3W$jP~)1$R)S@s63C z&OX9QR3{`8BuH1tL2syOgq*x;M0hJO)6V}B@k-$1aK!r);>*1C4AF5|gagQjdfaBG`11n2?ZXIg9&*M}7zaDWmpk?wQJuaIMHUpG^Qlf|JL!D3lYWn#=@cF^(RQf#Rwqh&)0l;ciV8Z>3!F!bnH}n+Us1x{)d)juaE{fh;_!)8y~2w&O(VH2UZWKL zY}1C-k{kj8*fe2zI(dy%vkKR1ZgeSy~4vsZ`d!L^ilQ`C*7}BGl&A4+0RHpZ@eFO z@&BX)>`Gz1lif)$R|@~2Rl;6-0{2s_14`kzT`ja10jfXgV2F0o2LC~-I03d`>M*g9 zAa`)H3won#jjRF@-?1bzBi}*eC`Z0Vm|rL|-FpkfC40qH(zc)I6y_GrUE0nxgZRKjA3-vQ^Pyht6X3QBo8k^%v~k^SV@&B*1vMc!ht7kbgERQ$mF&vrc`@~+A|I0#ei<2G^w)uGlZ;~f1q_@>3 zmottfu);NjK883qDxk9!l@GhlrN0(l=Rj5^S@Nq`YazNJq?19}eDc)jPe4fq1yA8J zR2iT(TC(dUaXuSU;&P4-w`c@|<2k%fAuJ1hEV}!w6fbmpb!_ISoc%ZEzXg_6QuXD*2G9>7i2ik;ZT)YFd z)JYN*1-K2u5?4QnOMv-N4?6OK?|!sV+iKyV^95dDh8Mn0Rpj4*^O2hw(nncZJRczS=Q zn)eb0rE_~~dKs_8p4u}^`I7V(jkr)llDH3w03`iA22ZlFBL2YvT&F3D^wakymbWv( z6{0!hYv(VSwrvo5#_)xq935`}O)dD$!KZ{iyf3~F8&VwWJRaAPEy^C#vd;~& zMkyT3R|yQARN_k+d2&FFYe4{Ay7*VMiyG*JfcJ5dK?x(U&j>*jjGeG?Bc`K*ir9-d z4LWeW9Hg^yq6)S}A99n1X+%i{u<1Ut6)7XJEQJW1Wj;pgINxZ3>XgAVor_#1D!qzDOPu6l=pBTWxY z&3=bU`_5N*Ww4o|vsvPv$d7frD|G>6pwkXQr@5;6Y0E1PQ7dqf5deolBYp-X8>9`F z`5_JCdAH!kFxQ}d~^hdyQW~bx= zEJJ(;UTSAwV`rk8y@KPl)$COq;_A&D(8s2hCvid#ldGQOL}IWR+4DG>VjDOzPy{j{ zYKc>o-96tOsuQX1b8|&C|9Eu18*x@h>cOS2UtWNmkGYggf4`(UgQ&bXpP)J0&3zjBE<$-G_V-3gR_zLRG0vM(1}L z<-N9;Hqfmj!VF-PzM$K~U@ zbXa{v64JikY}A79w?|ryI#QoloqaJIF`^IXd7YkjASGFeuOV?Q>JxuYvL9bW;-bNf z8H2xntT5;ZPUmPndp;KpGwekY%sL{`@a}o)f86kAR3&-zG3kE468^g)o=~3CKcFJf zd-*wv)&VtGo=jxpn|+qqrY%z4<8TgtE3M)=_-Yp z1DZsZIS)24F?Ge&u5(}?Nde03lzY1rpd`zcc*IF!7n20M=Or9slxRfSyv%n>7Bh@> zSi+)`sY9;tl~L+&6+^ky#K5G)r7lg{iiEmJ9vmSjE;grDF$%pt!l=jt>74ZYs{zBz{P zUjj$$?DCnr7C%TrKVmlAh1dPG(UwidyxI?)6cFC^i(B|O zy!*&NC&oyigFs+>pdkrs4*@TCgwhg(@AdZx(gEx!bTQ)9G~8}WCg(UOj~Yb zFFzb7-OA_}`#YnTdS~6*Cn^C2~yzaAImMgcGO_$hMXR^k>0nRf*V zr@@C~KlVW+BCHCxTDDM)u(&Q_3RjM1?5ptJfF@)av?kAK=UtdYqMH8YEOV07hCOkB zbg|5Ary+*XSL_iY_c(flv&!xyMN?-%p`kT_=Q#a|8gGytV6zS+4q(&+qq4}GW%iH1 zu!-Dhk`fmamODi;r~ z4j+au4I{aKLW`g45e*9BYF`x@Vx#mOn0-QqF#+iiSSW4|On=3h_QM<@c<#rpAnI+@@hAN_ZimuQ5a34vBC zdgBI{GFe0KQ$j(Bc?81Zn85p#6pNFFlnl%6%qnpV=U@cS59+2%g9_ zI0}v==_syv;;k&{A}B<39PFJ-6VP7>Coq=NDhogs6a9>TourHy?Ia}S@|`58kqPRt z{CT+^Er3F?N!lx<1sVwS_DSc?acE-9hd`d7pKe2FiQP#x4AaPv*$L)C3q=NXCIUN4 zMxz2JDW8}515hY4ky&3IUt&5LPY}8=%_ZdTa{9JJyDJF3lVPLZmNep>=N~WeFXLiZ zFMUa9AP&s$L-)P?14}R%B7?YpCK!9^Z~O7c^%B?K7Y8tiA|aHMJ|%A?o4~R_Z_K8E zaw9M&p--W;u(pT_Gh-E=#x>_GT(!Uz5xxlB>#BmYXr^R#xDm_W_%P{D3|bseOmw06 zYR6^4IL2>xjZ72o8Yvo)8az@V%8!J}8hD))O5110YNaV`cS(3zWC4@LgO(7?ogCbt zT8a?u-cGs&hwwAxeKr}Q!irM#aX%auJxsSfL0DTq_(>S2s&r|4_oKn;&hE}&&(e;c zgCu;WUk9E3xtZ3Hz!wF35^Z;qp)gWBF>@ulQQ}(8@(yi4{FIQ7obD@vgLFuPB1%Zi zyWXC=iQxy0GM|Cb4yw~(-bC9w1H61@Ti=3(sV2;$w_h^mczHb((6ziH!Me-(pl9Y? z5dqW)rS3AZd>Jz05Ln_eOR%txGB`A>ODZ4`^ka|K2wlc#bD%RS1R{8m3bvw?*anNO zfr!+%i4BqZvq<>m9Fj`6M=QJpq=Z@l0L(g#jL!iC2q3&jGvo6AaM}G{E!0JxmDNWxX2V`r6M}sg*iQO8HL}wuO2X34x5kJTEnbW0!u4gm- zDc;43xoX;Bncx~7jQr~ZdB>87>!yeil!##v`ey~|U&GltoU7<(Juy<_hwB@U3Q4lz5dqBsmpoXtK_3<)Mjsj22Cicc5!EOpi4 z6t!owu(cG!%G;r>a6Aiz&)NuHFxdg<%%y5xt6B~!5YvqEssv9r5A`)(%Uh#1vi3*toO1bX9=cR zmE@Wb**?DZx(|EVCXyFYl4PA!OyL?BG~g`qU&fS{(6-b6AAn$=1(P26vyRC>4t2`) zCEA{q9T%SOPI?peDdX@`drnwmc3Id3vxMX4vqLQAkR_}l$)&T*DQ_QSgj@bbx4z_H z(%wgI<>JmaQTXwL^jFfmdeE)fq-5A8;|Hsm?;%GX8Iog^LFN*M~8TZ18fz70WLp4`)i4%NJhH_*#6(#Ggu;?5JEeMlE|# zCfgvZl}(k+mMxH7FIyqIU3Q=B5!tJ<_henNk7ZxVzLPQX68R8$mAqEoC_i65Pkx2` zI{6Cu8u?oJ1M-dX$KAj_D%L9= zRXnA5M)9)ZHN{(s&5D01K2dzC_(AcL;-o^R%vS1^CS{(|p=6cCN?sXM4pmku!^#?E zow7+eU3sDMQsr&RHs$Nex0N3#qe?;fFXcYv=gO~?-za}n4k(W+3si1ZP&HaLMm0_~ zS=FeTt~y^eTXmD_R@I%Vr&KSiwyJihK2m+6I-okLI;F~17pP0rrRt&TYITEpj(UOm zTJ>Rsvss)PER`ZtxJ zl9Wj4vU0PWS-z~{S(SKQuQ_XR)=gP=Wj&hp_pFz)UdxJP?aJDl70>!A>+7s zDeGvKT5HgnwRu{XmecyQW!jP2Ds8p)Ty3p(ymq2?vbIs%q@AukUprfSk@jNkrP>AB zE49~X7ikx3Z_+N)uGFs9-m1Mrdzbbe?fu#Zv=3`*vnOXaW;bVFn|)*UJ=uTDemeX4 z?3c4&&weX=Yjz|%mi=+|{_F$UUuGw>k7l3DR_B;yG3+<|+mJAPV@Mf}8BQ3oje4WSSZEw> ztTdiutT#3pryDOZUTa)ze8BjE@onQf#`lcdj5~~i@e|`$#>2+%js3=-jlURA8nq^) z$!7AJDojCd|Z`on# zwtQjfw}=+GHOs2EdaS%PWIe|^-r8Wj(0V0q8eDI^(fX+MMeAnk7HgOFBkOK!pY>Dg zm)4~9d+Sl_ajQPpnakyRb4zl|a);y&%bl5fLGHD=2lBqii{~B8OXPi>cQ`MZm&!Ym z*Pr)O-ay_jdB^ik89Kpf92q z&{xve(AUv7&}-?3=#BJK^fUDH^sDq1dMmx1{*dma_tKxzpVM*rD>_Nb?OMCRZno#y z?e=1OseP2a+J3IR-ri)NZl7acV86z`2+r$m_Pgx&*f-dpwm)ls!Tyr{HG4bmXzZ{H z_D}6``&ag){fPZX`+)tJ{e=CLUFk45ERH-!p~LT}bWC>4a$M-R#Bq&dk>f_kQpXC% z&5l1i?sGigc*OCT-rL0$n{FsfjD!Nh`T1v3gREV!;p9np zu2)>Ix!!bbado)<>DuY~)b+V5?)u6#;5z0y;gS~_i|j?kMSM}PC{#4GXhcy}(YZyd zi|#49zv!W&M~WURda~%*qL+)>iry^hDC#WgD(WfPS@dzy-l79VUl#pP^i$EVMZXov z7!9LmikM+cH8Yl}W2P|En3>Fl%v@$Z)5Yvz_A>{Vlgue5kEK~B>tb2f%lg?;HpEu3 z=dyL|1a>-mAv>47oV|j*nq9~)V^^}P*|qG0?0WVQ_A&Me_G!HE{{s68`x?8M{ek_N z^|>qDmF{YHjl166?4IME=f2dvzS{M=A(1UHHs!%gSraW`?R zxLdf}x%;`txtF;p7vpwvy<8vnC3lcZazAj#@c(itJX(**Lwh_PpU3Yh^NjM0_Kfk2 z^-T1%crNr@;#uIi(sQlnI?qzi3eRfKt)9C*4|^W>Jn4DX^SY4lHwu7ql#;aCl^mEZYiEwJg<0D@jJ!u6@O6tQ}MB4wb$Uy^E$mQFY7J#^4@^A z%sbp$>mBc%>YeVL?Y-E0sds^Qk$188Chscmt=>O-@AIzrZuCCx{hRk`@3Y<)ylvjs zz3+J6_ip$8)7#_S>D}Y~+>2Lpyx)8Ky~n)2d1XGzm+dq7@_met^Lc%>zVW`Pz8Ss? zee->n`Tpd))_0xnMqjJ%Hs2cGpMCfG*7_duZSXznd&>8W?|I)VzSn$Pd>{BaeO(vzMp)@e4;CCe?R{h z{%QVMeiQ!|znR~{Z{<7q9eg*xli$tn;XmaM^1t#_iK!&N#9iVmDKDujnN-qHGOc80 z$weg#OO}+}Te6{KW69$se=B*uWM|12CI2otT=HGX4<$dB{8I93$!{eJe~G`se~v%w zukqLWFZEyHU*uoxzukYg|9<~p{7?Dc@Nf73)4v}5S4@rSnQ}EL~Z8N9lc~50`E#eZRD$w6nCUR4CnD`bp{j(tnqJUHV<= zFQuBYoH9#UUKv|9q-ea zE!$BREBmnQqq5y)pOz)cekeOucA`vEZZ4kE`Q_!;mfuvq zru_c$_2ti(zg+%W`CH}hmcL&fDgU^9U-_5iiSnPykCq=VKZ#4&mXIgp3;9E(p-^aO zXhi6oP)%rDs6KRa=#J1`p?g9Phc<@(7J54LZ0Lp1OQF|7Z-&}K?}pq%iiZS;R1P_3 zNO(xi5Sgs=|7-tAXNH~(0vQA{2xJh*Ado>IgFps>3<4PhG6-Z4$RLnGAcH^#feZo} z1TqL@5Xc~qK_G)b27wF$83Zy2WDv+8kU=1WKn8&f0vQA{2xJh*Ado>IgFps>3<4Ph zG6-Z4$RLnGAcH^#feZo}1TqL@5Xc~qK_G)b27wF$83Zy2WDv+8kU=1WKn8&f0vQA{ z2xJh*Ado>IgFps>3<4PhG6-Z4$RLnGAcH^#feZo}1TqL@5Xc~qK_G)b27wF$83Zy2 zWDv+8kU=1WKn8&f0vQA{2xJh*Ado>IgFps>3<4PhG6-Z4$RLnGAcH^#feZo}1TqL@ z5Xc~qK_G)b27wF$83Zy2WDv+8kU=1WKn8&f0vQA{2xJh*Ado>IgFps>3<4PhG6-Z4 z$RLnGAcH^#feZo}1TqL@5Xc~qK_G)b27wF$83Zy2WDv+8kU=1WKn8&f0vQA{2xJh* zAdo>IgFps>3<4PhBm{;O&uTNvWWrDxE88poTAApzj#!l1#L9M=i)Xc`ni7$mzPNRS zjAY$xmYG`H8RLj&Tg7Kb$QX@%rMQbpxw-QNTY=EQ{l@;oD^wH+KY7tBJHwI?PUQ+6 zQ^Zr<-&n+Rci(3dL%ScyYwu222CDB|=#`n*SnL;ZGm`y>6PAR9^(DP`+TOP&EdO8= zmh;@-Fe6xtFWc9^{hj;OTAI5k_ubqDxfKPs7yPY&)c^hOeYTVCgoX0mZ@t|*1ntS+ z3DyVl{)Ep1c~f2e(XfmSd)&WS!c!_dR#ql+d#yqrV-9=Rsk7V?! zd)#Y1VR^;LX{6fi9zy?=Zkf!#)`O>LV=g;G>Sz|}Xq*)t(Qoxf$6JJN>54Tr_pP>p z?yoG>_=wc*uPpsLG)n+NH1Xfc_oIA|hW=bub(^)k;x;R4Vc@@dgoRV9{_1J(YD3yA z+oiD!FIr6}Vg}wJ?935dQ>}VtAgo6smYNL$`NRwETa=)bH$^csyjTQhA$i~+C!>}J3KM}1`lU8`I6xL{)8pz z-r%8wz(ksReL>igZc;5$m8Yw(e2ceY0_}`GfZD<$ZuhkFmW7Tx7Fr#5h$W$%RTb$<8v5v-k_BiB>gx-V^7WqV(TWut z<}TkblMDU40@?KXa4sR{b`NMVp_0?F5D)9q9aODH$0muaY^19z))Ur|;nF0XoYqDv zHs*HrB>*6pcgQ%9FvxgAHJ?K!XSiyQX6~K0&9%wc)p_=$M#=uL%OThrAta_>u8a5c zrfOb~ii$lNQNiR2m*iCiE@%(u@rtmi;^$rQ-bhSTF-hdphqzX*x;_aM6KO^{gmsNp z)A2X}iH)5+sbTt*y7Q;jG}lh4scoLxBvt{Kfv`}av9b5s-IR?z&lXm=vuza{Jr$`u zbhD}*;m=owD$74Eg~KhM@#k4lYIC#Su$G!l|(eqgbpqBL(*M%`ib%T;S^kUN|I zRvUz*W3(eFN%&~T0Q-`+&4O`-pGFHS?T~K4MT4Lnii*2ED0AQCVY6iJH6B5hFYI>o zLm4D2(d#WT@&{F;yU~TnxHY!6iYy!Zq%ACuKA$%LlBz47EapFIJKdj(^!H>j`txt} zcxCj@SC%i}#!V^Fre^zQ z+3Amk?Y6yW>o1GyW2M_nc5t$y4$maOZxBfq$aKLbfz{%z<6|&xMH3?8NWWT zICfS$rPPr7-?dcI(auEYvfsx^*S}-o%AK+WgRLU*5pqt?{Q5tJjeBKUOg4IXej<=$ z?X+ACJ)Xo+@mQzytR&A7GS?#`WE}pX%q*Ug%Vja8#FlSqESPG1&PW%OE9Q^MD+43s zy?tcz5^;S9A!kkt$D#GeYGzovA9Xe3r+-e4 zP?GWSFUkGhX}Zrp^iVu2&7`j7?TmVbsN|J)I_3U?COZju$Lo-vLO%12o&FBEw=Ln8 zkZHxvaM?g=u6UhyOHBUJEm6!Zf1?X5Zs)c2t?gZ)%yg`^J%+Lv9=YnSzVu?R=3Uji zt(wVO(c&E`s%ztQbAt+fq%HN*#U7 zj&@<0C}Y%ZIz6vhc9f|Q?eQfXy)9u@$?PK-ZbV}nve1f455aP!=p}CEWp>k}M8mQF zbhxi`5XDxeAzS4PJDn@3ISrMX1j26jK=%R#Aw~1K31Pn@F7mtAI*3vy5=4K?-tGzW z8|u@O1nW&FB$W@yMq}5&p2VlcDPT`CiEyol<0S2_sV7W20a1DW>r7Yl``{~kbeFkg7AD$w+uY?lWiywF zr$TPQP>|)Q&q^#2esfkTOvmC0N713xX;mPI&X77zxUy`IqtdLA<6Ehsk7q3+l@Dd@ zaEx9O$3{!k2I^M!S#|V_SZQp2Z!cN8@!nX~Bc7i6@Pe*zc`VV!{x;iPJZo_6uqCrJ zval91_-i}{fpD+)V6RW_>FFIm(P@yS39bjhf1U}H7nEsWS>>;KkGGKxKEak;K*kB5 z;&nRu@G4sFfRVNImPkC7wiVthkoM=#3c)yss3dxawx^307fMBTmsI3N(P#@cZwQ=R zChLTFMIabeVBJtr&X)`>C(6l&C9)k1~!#j7qZOk*hNGNMS3Q@>)}+~uFkW;^Q0)``SqAQ8I@sj6J@dY7FZz;-q7iop#?_+Hw6&YA|FIJEeAsVj@%Wn{%E|et*8TM3jzAJHhZi9*$ z?Puq^(nMqGP)`4|F==vU)LyGq8a9so?zHYkL#$=@1OI7}T+LuAL>JrawlUFg;Uh%Fr7iELiZwFf--C8-8w?*}$LPCH7K!x0$Sw)a`B#De^!=xGQqr0(=zh+%|2bD8l5Ck1NNtKf=lVl4l&%ux_-4P~)!N?i zoD1WQ#&Bqx7-Zl4t0eZx;v-~ejdJk_>XS;KN%ToX5v>{Z~$?Y7#D+;eUXr_(3C2dB!MfC7zvDW*@Zl z9t#o!dpSd7Bi*2j5h`r-VK61EteC)rwG}g&@a~G0HukZg`(g&B?>ve1e|53{;N1IN z;fji4hUJ^wUM75`;%-+Ay@jKset9X$i=r4hBnTtlza|L96iaks7MdR*LeMUQTW8u$ zy3TBNc!WF|F;kT?hv@7w_nX+4isfclLRh@eVPp*`%&BIT8K(RXCV`dhE@d$X;>3Am zl>C5G;sMAeX` zNeF+!!#?3L-!((n8HAdFVaLmJQnl&aCrB>DHsN27&jx%-U@8~m0~?mrz=!aVNu_nW z+3YTv#jc!zO@QUj2jK$rZO4>2QgP(PQ5px-aa1RJ@0pd)-s?Wi6HGuj7677rZ~i!{Z}*M?A=#0dukemue@SSrCppI%FC)*CTfwZ zYBM-)G5yw-LGShw21=97C3^*& zXLh+goVx)DbbOYwV>g}|F{~!yFNgRO+~+Y6ek8~Oi%xY#&tZnhWFxUI(}bO^J_lfsM%|llUNQ3RQZ}> zBFkhG8a5D0W8!bjWcEoL$;fE$kB*MwMMuadO;H-5e~;--c7mVOGwEDP ztsEKb4EY$QA3aN`k|9s<{l8Q9zZ>!o6g2;lpy|Q>0kP=AV*l^t>>phsJv0;A$b-q3 znmz68hv|b4{>ETxwp6V$8)J3DPrf zTS_VcC3@K#gAjqX7~yVJV=&EM_(Sg1r(jhXqF*ev-?8Qm zY-4bke^pS5XD~bbGlLMb-%;;El5DX{NLQ1 z5XeE?3OXj;z598uGSUH+Lrfp}a#;^<);<6nfRJK^hO^MSVM&gl} z$@h)&Qdu@}lRbV^^qR78X%9uij6}|ro z60O*Qh$VhWUTOurI?0@b5VeZAA?+|yhMnm(cAAv&w_&GuvgmuIn7HJjA4v2%k;c3= zgkmG+kt0^|)DjhEbo(4+W{$-~s^e`!K4BPWaPuKJ^|4a1nCT}qK_fPB z5O@%UQUSvcfXa_k&4ZgvjI?5Yr8`79ql_+Z5tSVm4ml7w;C|N24l8$Om#4)-bakI9 z7f*CY%d!7pfB7Ngo=xV74F;|Xb})@X_$(Bzh9^wiA##W^D`*~8&KAR&T*4uC(#t;X zBEROV8FrtPN^?S3>x$k|?niAIi59>uuqO%8_u4}tvW-<>L$f;mA2u}5^8RR=^5gfX z(J=^sSlr!JHo$i6((qE$Lk%jWK!}Dj-&6%sN%*6IG4}hPJtH^Kt}^gT=wkX~>}S%{ zPtPyx!MwuN(UWBa)Yd)9F7~$z0!#itwE4FS5YtL+iV4;s`)?`dbD=3rXSO@FsOq?- ze93_DTZouGIK(~EH%t2F@l|zKP;^upHDe5p2UMYxw=^zA=CU0%q&$c(ATO;}_U<46 zhvSKF_+J_nS?QzU5>k&apue5>V{k9drt;EmR5)LFAg}8Fp#R?B5`cXs^FG83(hmd< zhIfiJp?onE(u)CJE0*$Vu?$qBEgA{;+3-Dh&=!M^AodRlDaH2G+I-kX|qcaZcW1-sq%1}p9l zw#P&lUkfpuS1}+2TbN<}kj}FOQW{2Nx>Xghm?S+mJH1$ugxWd; zTNtFcG6q=q`9SQV-_4ULI0dN%&z27%m=SK{Z0uSu;`VDi01}az^ppTvu6Uy3jv<7x zE}ERfRW(H)9(<&K9MrS3gVE(f23wrqIkegf0*N%FkMe-#Sx0&O=-@ww#F-yCqeBDw zu{7C(y}8KP(rhYSd;umw56Ya1F+e1pAfJOiRi-wj2@|y)R}W9GX&~4U9{NAwJJAjE z1n8DvIi1<<2Uk5}oP&t=f(&VkAjS+teiYBUF}#Zmcv|c`M)8TWI*HTUPR|&*XU`aq zl4ujF&(+a1936&q=@|;eEraF~m8X?1Z9{mOp;&nl?Fdht&E;o>M=zchuW*dNGHw51X<{*6(FHIwVIMVsU zQ4Ks#Pi6@xDhS-QYdpMFR3aM4E8)&3Ad@647$?V~m{F=3C#0LIHUNv`!_dj`Vg84M z*wFr?ljh+6?4&t}PMU*e?Eago)=8ni2gzC45Mc!&zPi%4Wz?g^8m z^nYn9VTSyHG!*?6cLn_q1`}yW;_kbHATp5#C61L2@(0pD^#j)ES5su|6Z{|)(43V$D&wke8WVi0X` zdd$Pvdu|>+fZ@q)lm6Ig%j2`t=EMMf=>Mio_y3!|!WY17fI{h$)J7cp08R*q+gzzy z(as=fP{EBL+Xx3n<&Fe5{8L9_+s3J`KX+tmwrwP;##qk?%@65-t!D)IIj1EC&Q@_F z>J$Hqop%9itIGPuPauQ<1#$s;prt)0=_Q0-C~aw)LRtzGXn_!*#fr7gc&Rh9h!^Lx3&_nj6|paSq=hh{ z;V;=ewX;KF3^$orzvSV^ksc<654Y=y$xStV<`Sd2A2bRFEEwXrM5G)S&0Mzd&Pw)} zXf}O;NH7*JVmx<>@R8!>EYq=06WMa;+{sQPd}8|$1V1s8jFMTVBb}xXr99z>d8C_v zp3{+g-wf=tkWn17bPN1)pMN1xvZzc-1d_4B2P=6b0~r zM)*HA0Zo8=b{i7FNn%!x!Ldf1#U()mN#RVz5HUB1z!Yha3FDlCaav;xvb_Ur@0!8p zq8O1*xZg#%-!X%ogoWitrw|7W<_43x*{CGFc(?_bct8pM4&rz29n3Ga-iL`Rc5dz` zZiy(G9cVzoJ7$z3lJ2$MKLh(mGq{6PL?{?WZPc{2iC?$Y?9I;o8`VDBk|fT`iQjAD z|2E@>X5@^ZBG$jnpz+cb)^u%=wM}Q#x9Nrv4?rBeFJ`C0GONp?Bmz2IrtjGkrsI}x zS^SxfvR|3LWWTa}&K_E3t+Liwmsu~cUTpm(p2};v;=;N@tOM87loZu*t2uiOSH(sC z{;%;AvZDW+5b*V=)YAC~96I=DDRsmy?MF+UcNF<~tZDjP!UOr(Qg?4OC2pKuziIYb zz3^ea^X4MkodxcVoXV|t>)4TIqx-c+V^emv%SQ`&T?S7ply_U2e7Vwr*+5cU+Tsl$c* z`=9{67uSAvXaZKh=CyhUdVJc2MFYYU`QB0`baWSL&iK6o!{D^ZNY8+F&r&SO^mh%r z(s!{jS-YHrL?X72$f6k8pmO1$$HF4Q_04?0w+D+@D2P>Yz3H^eXKeHOM%p@UIi_*O zHusL~SR0oUWt%x7#4H}3paUvtSd*Bn&zJy5$Ld?)GIh2b9h)ensE}a#Mmg*?HfQ5; zC%7U=nTa*!Svx`IQlRSm(i|0ZPGCoT{K-+Afg_7rfG8R>!D5|$bEgecxZrZ14NETr z+Brpne`&vUUXf03onNGL`H(UoJe}`F`wPFY^+2~6pt7lbt&O>*enN(rqvv8Kbj9=- zg?3w4zmojCE}w9;P`iw<@~dLn#2hZ#s5x2IHe?)X#$luHyu!*t?ZKsNVaJZXmltcZ zilEl+Cu~T)uCd0haxKAg=ejY_r*zPVO;V4uz_jY3Vd&idsto zg(Rl{o8BY&5J)hagQ@r%ON2>FbEa?TG-XMk6#_BR6#y>Qq9Sq5AhuteTbIm3 z5fJ;lgFty9>y7CJ_!(kruOtJkEng4KV}^V^!f%SYhP-S5bNx~@XYhQEOQrUszxN}i z>hTSbraU5U&pB!ostSD`FRsfxD#pFYo#9URxF?XCoAoI3#qHcz9yjOKx^-^7N4jZ_ zc&^SC$_led!Lma3U)N-lbDdb_HC7qvk-;{%m^~t_D;$m;bY5B{$=iQyiMV}tU`d3; z^Z0rS5a0XNEib(Il85}6($yaKCJ(1OkFJ0{94SA$*?DY9&=Gu5LL323ARb-@`v#sk zYuF~m4U_K8dA{g#dN#@tvY-LL1Q`xfcOv{t-F zeu8fRhtvje@Io_PNGZ~O8BMO2G2|LguC4tia&+WmCXV1Bde1qX-l;s1(|@qpcyM5x zRGa8gG061axEbM7$+%^>v^Y?EMX`WE<&L5e+&XrcqK6l|hCARoUB}S=YW%pYpcohD#c*u8fx2vCJ zoV~>z_+x4>D6F`AJ$tNrb#djo4tA2`q7r+D^PS?lHKiTSo?>R@+79R2#SBy5v9{E{ zZoN7=`5k}mm&I!5XT_c8sjP`O zo)*u2rJfC*`|Y01o(I=?T0IX@=r-P0Pg}wB@m(bz_r~t>VoxV=C~gfrN{Tzxx#%((9 zgbdgk9${?cdK10gOs}`l>#gMaKBM!X%;p={wT@qZaL7xrqZktBJlsE^dD62P`InQt z%dae4UOS2L^y3)Vv5p`F=T_cN>bs+_zl2oS&&QP|sg0y^1AdH0T`l*PW^Z`d-h+WW z8_oGJ=?d8od)Bv*D>?|S_KlwGo+|gL`@1~#n?7OIdi?zZ?ssw)xNnd++yD-@OB~uf ze_H3sZu8u>o?LG#CD)tnoNe`bnGYm)ZoIGS9`TNULO!4_Quo zEz!hHoWZKakNrA!^pZVWv}O;E4EWLw^UKl=Wo2H{ooO)ECSLdcmV(L6ULTTZN}yqW z85wx)D4LJq7;*5^`7AUdksAhG?9O9bQYl`SqxShpFx!O?4g0chKm>MxclVc+^phYR zo|rHNPiy z_rryws$NpLF3o_q%f=X=o86q<#wvF?AIKLg*^~2$08$T_Q-laoWwZos4wagJVLAKP zwx{XuUmMjok>Aa~+m*=?zAte@@#dm&InHr8Z?~5x?|+=XvU^j~>G`_99Cm5TR}iD^ za$Oh9kQ&<9mTRg&AfSDv61hHNsH9V%N03R1)B|!eEBetQzbS$Z12pe^e}_ulGeR0X z7O5B^M~2<8Xzwn~;aqjafc81UOX^+o$Q%&nh_^3F@H`(c^Q4!pglZlPSjxl$O(z!Z zr~O1btT*#==+X)z&UtzT z>6Ni4gmW2ise8BNK2(vn1(kpVsUFEbehK{SL85oCK9JR=@fzF}#Jn))!4#F8>e#Dp z#^)*RmZ(56Ik1#&=&g`4tq)ZkYB#>poQ-KDdMCwz_#YUlWO<}wfQxiuitzyLeL=I- zPO3yH6s0K5!}EN<*2h5gG>$DRrQeqM%42g+eRBC0cEM4{ZQGyTl5kJg z!LM%Jw)5BR=o50-DQ zFaEx7??b<7|Mkvyz8IQfZU6n$*3>CC2<;pH@Zv{}=IHiT+qiMZZ|G`odsutXra#}* zer=U|wPTVi)LGi+G>-qS|AUQNEKe`Wx@i0`-dW+hN@1#9%)s74IyORMO&MaGDZ%y5 z^TNl8m^ZPXk~0goRD6}l9>wQ1c-FArqAB^bDxdkfYJ8uOnty2V`rPZPr!k7_tK-_7 zX?AjG6f1gt?kapBBb3?=XC0Ua;LE^L?WlvS0cuVo_P6Ed-lgrxWe()tshy2m8Yf)l z5US%_Vl6SL+%a|%->z!iW*V1mxVXx?rTSIVCv3v3_RvcVlv!IvO1$OB(T`Z$t4oKs zo8oiZt4D+vs)pGWLZ4bZYWidZ95>`{sUEIJGRs37C{I)|pLIZ+;7A6ADSdDKM$z4C zI|+3dtKz_+_KgdA7rSEd!-hBic6Hn`oan!)xhyTw04*Bw?UEreF84YrLu)T8+Jy3wgw6W~I9v|PX5T1)tDLRCPSPcGM&K*%W zvo@(39~=+6Mh0+hy^pOX9~e6mNLoJFRxru`%FP~vOd zORGJuNt(>=;%Xc<@3vHXU~rND$flAD90{9`#N=d`EmpX+8sB}|)VL4gwB_iJ1s?xq znu;r_s4W>=JXVE{83&VMYU>ND$FeyUS65aNvDzHN)z;Y~2x2Nr3ad$}Z$OB{KT{UL%TJj7sDD zdyNsBWM6}doD{-0EI66M_;41)OZHOoYxmz(gRdTsjf|z+z6bFz*0<0!puvM0=ZZnc z;u|GWNP0OY77mIH==%hS{SO+kRYTGE1|%*qdr+LUc#!1fFWx0C-i5?Y7qQb(#c27m zQEH;2_LX&`WyM9+qt)bTdG#nWN^EtM*ykuQN+cwXise;xqqUBj(ZZ#*qqXH#qeb@G z(Zaf_(Pf22qZL)7_wa(H|$(pzDk@r z_GswE@v@)JCY0EL?8RA@6rsFsCs4wP-ks8^-C0n$7K?A zr`83DLQ2yF=k0aaPFLc)T5`}=G=ahQTr_zkHd$25s>TYE%&De9RKrw2kK$;D3E_+| z2<)U`aT1q@xY3Kdzgp$RpDU%V(a#Z)V1UB0rin!8}eY9^IY#;&jy z)fTQQQN~sPC49a^Syov?=oN8x6pFQ5sUO1OR%J}JwPs}%1+sc&Z5dZswVGQ|vijc| zBV=M3f&YsTQ2bw{>;EoQ<^K(qjDU=QjDU=QjDU=QjDU=QjDU=QjDU=QjDU=QjDU=Q zjDU=QjDU=QjDU=QjDU=QjDU=QjDU=QjDU=QjDU=QjDU=QjDU=QjDU=QjDU=QjDU=Q zjDU=QjDU=QjDU=QjDU=QjDU=QjDU=QjDU=QjDU=QjDU=QjDU=QjDU=QjDU=QjDU=Q zjDU=QjDU=QjDU=QjDU=QjDU=QjDU=QjDU=QjDU=QjDU=QjDU=QjDU=QjDU=QjDU=Q zjDU=QjDU=QjDU=QjDU=QjDU=QjDU=QjDU=QjDU=QjDU=QjDU=QjDU=QjDU=QjDU=Q zjDU=QjDU=QjDU=QjDU=QjDU=QjDU=QjDU=QjDU=QjDU=QjDU=QjDU=QjDU=QjDU=Q zjDU=QjDU=QjDU=QjDU=QjDU=QjDU=QjDU=QjDU=QjDU=QjDU=QjDU=QjDU=QjDU=Q zjDU=QjDU=QjDU=QjKKe?2sl5|JO47(c~6@2u--W-#mT2Qr=>V6Qk?b_XKjjeO^Wl% z6z3}`&R0{M@25B!hWz7Gon5KU&#-EX{>Vs>x^QZ$HzN)*4aNkb%`)pZ>ZA+ z8tQaHD&xAEA@7&zT%#W`gABv)qaPWr(wWzT;4)nk?nc9Uo!@+wt}{^c?M5BX4C37- z$pSeO!~E$MhS|krGUJ%>OdLrH|299quJ!NhU7KHA*ZLA}Pp@nJ*LoND@C>taM)09` zhD$Fc9SuL7oZ;FmwhwNey{>ikdZTOe%e|X<1%s6AY}eWBv%h0-`90%0`&;I$@$412 zxKzx>PEPd_H_mxe+P91KO206w^Mi*)8H1-5WsE6CsL`{}7FR;HP3`90n!vBe1!{7l z(i6{lDd=9UuU_qU31+?DMX5J-zJ05HQ`Yz#McmK0xP0cVI&EBm(5}xmY}Nh8G^T&! zOPn%LyH$rIyv}f)<;6@_NABagIY%|**~v_@C9+XAZp8YyuG17RDomUhWl9}(4UdRi zPK=;qhFv{&VOd-kk_1JHb1;1vf358Mn>$Z0NfCaZVf}~hkDaHjDI-EaKV0CPnc^4T zPDdq1b;!)lo9WC-aXyjJ>U<`n%_t`J3g77269?Oj2RrHGi1ixnh)~TA|6#4LGeelf z^u0YkL!8omd4@hi*qXAxC5=@}PmfNS#;m80gIV~g7<(LhbZ^d}7{7Se-dHhyP}D4T z2`|M76PWeW81e*q7v9Lt`ixGj-nGv9oNm3CyUY3{>Z(CqRl=E+=hy^XUtwc#oxSzM z(Pq~`kM(I?Y3rfI>un16#2m$q?#!I18*i+b#?-CJ%1VduxUPPe`5B${dEGse6gkR3 zab{*Gr&wz@Kc}<4sJkbPrlqDLt-kcmoLPaQCsT#@Q=r5ja#8BZ)H`yYOwCEyf-5w- zF84W|`FS03@9BF#h27hNWI`?Ffcj2K-At4NvNPZAP6wvHN5y zN%RhAO-y>f=BxhyDYp!LvoW!IS=xEr#xd~>wE=VuMGAX-%m`eS9+tX9~o7vdPCR$3X@jqpqwdpJX!&?`5Rt`2B*{^I;>fd-`(-fGZjh$1mR9D_YN;CA^O?YG&7ke1?0iqpTl+k5mPiE+s89O;8q1tXzQi`vI zMU3CoA!N4Tbf;IgXeeb*^bhl=g_V3z}9^XJm?%i6Umo2qEr0sm~ zs`QpaN5!37b&DwUHK;|GX@b~i8ZWy0UQ&y_fb(5by!CEv=jp91r)m*CPGsLMKzTL} ziTUKg-y&>H6kbjgf5|<2vqKH-IAkhSIBt~FF^`Mb1v-`JR3 z=0NV9+S$0Jr3j;OLUnvgY>s6_=u?+kZ%*HCN*fk(i8oYq$xhQmc8~R@ zbnz$`J(aeC9C#~!C= z13`k8G!Vek4-NQ*%^CeJepIVc<#E}XGkD5N^a-;wTHnd>W;btqsr%Lp*8qsLr?nVn z`dypRcUwo2@e^Lo7(SHTIsKiZ?=NwFqt6hzoqG0Edtu_}%BrHW)rQ2;Ib8d)g)`<` z+ZP#D+gEaBg{w-qnv&Y0l_kZ7_CHzMm(7_wBah^k)K-?%lvETKCMFWh<)4he{}TxG z6g|7VtTNtlHEN5lX-IeQ%ud4uT)PaJxON*RnM)1VXpzVr<|2M0+(>WlVeT*^#OXlRnk&)tMv!p5_>WwENHfNY z(h#a2V?{E1soXI#@;-7t$KGCv6dKVY&;m)loY)J`d%l7+nd=n~he@gYA5qgqYa?>v z;W7D0`w_};wM9x9Bp*3ny2LO@48Fa+E{>%AfRKYs&kuhR9a_eDtdiHB*I=ZrpTYEs zF+8W^6BxtuIzEmuyr?r99fl`$Lf%-*qA|&@jb0-j309<~@oOE+3qD3<{-7W?mifbi z5t%g1n5 zbz?|*j*}iks?hWeW4ZM4oXqo!o|DO)SM=P>^NOCE8Bvr#dtT;PQ3CCGnGr?tcz)(s zQPeeCI(<<^zNmvQt=sy}7+ge$ zEb82{9OkJGL$-teGh>+P0FTzaG26P0M*c$jKHJf{t$T%$zl;&K=?!xn<~a^+IwO3k z1D_Q}QZ&oqteRq;>(EYR(gO{%9f;qx4AW$u?Jycuxs^sd$epG%Z{R zQMGo1R1q+n^22mg3qs#Ej&XJ_I!`cowC>%ot^4o~iOv<5BqI>qmt3K88x zS-|6x^TY-kW;&Y8S*UQ9!*9+e5PX|xbO|4HKXXXa8ckvj8~$4E<}qGVcMS*gT@&vdiV!L&%sJ+twjK95n5|8 zZLK$_{8(#+^>p#kjG@Rut_u(tFox;$T0*b09sGfQ!(3cFhEkeRj_aUd1?^v`Ev*45 zRY`LT9ib?~`RjRn3hh{ShuQAXCNsh?=~y35Bh(Iuxz=G=>EPoTL%oAnF@XjL+HM?; zIm|22l;ri0B3*k8(*%}hiF1i$^W8MF161{nbnx<Am4uiTJFt4Kp7n<0pnndj-CLxExG}l~?hWHg&mpfeO7Oi^~ z+qxey5uU$s@Y@p%S2@hTLHXaH{8hC4Z6=p6U1wPD5PA&4<|*d+Qkl0*!f6XBb`AKf zN1A?H_ppg}+$I#<$+Ic!7n;Di$>Cg=MN6c>yJv-|eyT)vxP%t%5FA}1`*xE< zt0CqZ?62Ji%#=H~t^1-Z;mvvG5=r58SuQh3(Ld>su_=qRQq!=khNy4S1Mhd4(D*ydQifSE9Iw7NeZmjrY5vfw)13y-{ zjGBccOoFOJGHA*8em`b>zo*6*pX~~{C_WL>mqsmVHTXH&cKme4&`dm>Rvm>ApV-FuFWQ@pp(|7)j_I$Ev?PYXw;?^Ro@9DnO)lO`w`Tx6&UHMvC*fN7a zu>}#9!te(N-!d3z*n)z?Alw4NEg<{@CH(yiSd;dB+HYOR#fv~+`lOf0X2gizBy|XW z8e{mQgYN}f(i9jA!pi@VvVCs`KZW!hLU^NtKl&qtH&Vip8T`}`;mr=7_56_I&6IG` z%wXdx8N;m({tAze^i&grksDTcjtaNZ0;MzgSjKRhgUq@9?BI1MaGOJ`qLqs*h8hJL zZgT`D)$h^);5J}%8!-Aa<CRazHuip5DB_n5sh&t)qnLY6iBTtDyb^r7)0AbvW`zD z{W_>-ZIQi(1e7hna9<5)ywQ zjprQqE`u<}a6h$!2ON~r2(jKDHj)bKpg+M%4n)O_1VXE__J#wD3i_eqx2$gnG zPN;6lA!%r_{nYA1;oUFK6&NOr6o_8<*m(kP2o?*0`4|-_gav9s0#QAV@`5UXhQ9`b zpL;0z!r9>|C7n;k1Pz0}1cP;HrWqW-F(qvM-t^4XZB!sO+w+IEb zf2W4@&;OwzogHiaWYp7v)(^p@k=|h?*EEh%X^|?~pyX0Q)c>XJgn5QcC1{7?Hjhwa z0R&8=M&66Q8)9z>r$*T8LP?j9y@t6-jSwmtVQ0klrDhK^4w@5c8KJ{kNm`iblCX5F z$%RvYA&E!P2%UmPhQyF5&>kllNw{dxraLctv;gvEVWmy ztkr5$$d57qiaKsO7&xIheQ@!|6+U>OK*IvULyN@}GE(Bv@GCk!oKBoPg3X(j3lnLm zag9T0Hkq%XF?8Rr!_o9>^Mq+8=OtF>U*|z_!?TDc7(<7HJip+O<_n=&LF{}|6B77` zLe%W+bLIzTI{GrGaWI4pG(1bSqZ0=bY!*m?|GC*T(4{#T>c=9{a3QSf(iJGU0#n{k zvL5t9z%AC!};4h@({W56IT43Mu?oG1=*7pYl1+DWpMh_4K0Ed z$C?cd4QWv+Bp|WiV_Kj2Svrgp(`v%Bk!XMb|MdjJt78HFtJH}7d7=5)xCO+7o^_yX zpy37dz-KY^c2J@Z!e%#Pfs22Xni~x5b!v2PQlopzf%HJb>x3R9B?}D7{W99nH72)< zvb=Ob$UOhCAlT7D)jHQWv;JG-{8<(>y5NV+O=|MG!|AnzB!{35oAA%Fqzf%SgY|#e z*6Bam(tS_S`TdWZ&d+LkvS2~NuwusiIvVvYH0tYU)Hi7h6feMPgo|%t3{D6COUBTH z2?2GkFct)Pa95CAgyqU2M{u2@Z{5NWQj)cwQ>n%=|Dk2n>DoIZ-k*=9@5CP7bzlYA z;G&%vVi1tI$tp^q;ax`)^d%7>?K-emn3ynTHv-lAfrX?tr4H?OMQ{@NE$xHaS0mps zUkc|hl{!f{zfO8T5Tu8D0|2O(_CTD(k)-sHfW$}_%iL7%wF}MfBH>-Y=b{Ns3jtry zz_Aqc!I+{SNbp+6)_PrJ`EWYL6bpq%q9R9tdm~4H|H}7YVh#1wSFFVMziM^fZ6)}H z8Gjia$r!7}V?)c2G7b(jp~2N4h=7bm&abW5v>X%gaZIFuixvN-fQ&_<8njRW zZHt8Kr#UMZkqLab61!p}WgP!^WweE5d`xA0MrFLPh}d%{SqL1H^fpedjE%(8qJE+_ z;fSN3tXBUp;y5ST=%;NzJs;a)!8s8k8@l_8h)0`(U2Ub;rp~yZd zaL2^XXWsJ@bLf4P{SEmj6=>M=BcYG9Qo0A0x(AjzK*=`}@}NKu5rS=-^JE|*!`w51 zWq^SW5)%();-^dyG^I0!k0_J-$hrrahLUhDwB+*2zd5c`yJzrG+Ghz-$%mI5?PL?HH)VVD{FY6v2*XNe#JF(9^q(G=JQMy0R~ zj4e!T1HVMK))wlpzh&@-qcL-*w2Eo9@pcbcvEl2an>4hZG#d_%d4Pjdt!1`w90uj+ z%4sKE{~X(&c-$6ts1e~;gmaZ}bw02dqh$mWg%n!BViB42*o6G0PA4V79s*gRg`9Ip zzWh-Vx`Y_oWtqA7zg2~<1WT&G&VEcz_2MyA#z@YQ)4n)jO&Bk5G}fXJx(_Tq7hPw@ z5||c-8EMV9W3d!PleExkuygUbtHD2eef0aqSk85RwkTZfA0JYG%1mAknaOR`OoHaI zddayJ2o4Z158s%1_^5eYzU03(kFF(Q<^D_ac&(6_$5`8+1GuX2zhy!jR$?+{sOK0^ zRv~HF&(4!`4oO7>$xpQX=E8`!$BWeVP<@R49F~uSSO(F3t?*oQoeP&nn#cQvKQxce z3jc@ZF=6S?F%Rdlf?yNxiZy&O*2G`XCN5hV(QQL5Buzh_SsHE?Ea;O!>L(qNbS`Bf zJuN_{J!5!z5!Bu0ptCH=6+{*Nf5df8B-e#S!O=5=E<#2)QJ0IX=7z`a?Fo@1>IFYF zqGBkPX0_)9An*ghy`uYyh;2MvMB;<1sPxc=DH$um@}5bIly}Qd$%BtS>>%FVPlvAn zUH|?@8gK$+xIG*(+>+5OfT1sd@$(zniX%lJFoK2O?57Ebi%6}(5~qiT=@@p*!B4>O zc{ns82O>5i=<4GHhDb5`y`eSeZ@xL|4E`q(4E{h3zUYT(U=nCJhB%&RGfcHvT8xDZ zZFFd`_4#C77tiNhR+j)fI*{!n+)tD2AFmyw8DCcA>QJP6td&O1w})<2vakX@{<+ zsNp9v=tN|zDY}MkgV3&azILIm7F~mdgKsY>4Qr>M33a8U!=u9JYB4qZWXck|zp+2T zGP3u^QVuVTv5cV!Pn43qCkey28lIypdB%|N6D$uzID`bsK~)ykGL9ykF6Adh>?S#v z;71Xg%xJ?qN=qJnNJ<207;fhh?tUp1dLSId>NvvD2N-e^F<*!JYQwGY2adamGR2Gx z+5_Xn8fr49LMHP^k{wnpk*c=6jBF~6?R~vKS>#Hs^^|1LyQSM6$;!`2Z$EI-!Ltf^ zrCwfawGKlmjIVMTYMav_?9AvPOQSjI0WI~0>1Q-_5`861|;J|`P$3dc;3J@)5cWyvh(q6^K?{M17g8>LVtz%z~20>wx)-no_-Ir0q zN{92NF=;;gX=gb=7 zd?rUqBdZ!Hi&~TA-*+A4JQVc88r}?rfgh92Q?_d>VWEMB$u;RT%F3jP^DEitn%qR~ zjg>ej#VbZhr69~$L)L7j)<9L^jE<}xj;$32*EYu_O&^mqoicS*qFkV1DkPC}Z$_H< zcqOe>OvDNe_qR8>BCf8cWK~I3;aDSv_gFdltF>3yxmx?Oy81%w%#$CreVqPJ2}NI# zMp0f>TUWEPsIJ^zRm+)H|FGRxW1FWc*v@?)O?LjK3id)jD!}qd@Kb>@ZY5U*-O9Mt zR9HA;-`J04MAOqbU{F_9!r7NDFDa@cow=^8yjHS2++pO>CqUEy=^^%TXXTdF*egL^ z0;+mga(x-T3gT+qiXF{CB?I-)cCMeJLwQq8tE04D{Jex+Lbk{%JJEe z1%0rlq@*f>4>T(REOoT=)YTOht&sR7NARn(qby;zvKC4~k;0l9dp)&l(nW<;-13!`)nmlqTLXw7y{Mw37VOKbN~wU_>cXOunM(_6 zLX{g^!wPzeBI+ridR=+dN=g2hpD5baS5@s?R2^=`m{4uXsk+><@+$ZNdgNmU)s4bb zR8d~Jlv^30AgOFcVR13kM3a%XS~!pjuD-mg*j_(NYMZh8P&ZVL{33g0bwx>?gcfn* zQa#|k!)tNDdeqW-&<`*vpRr2RZX>41IGlQiQ>FXt|I{z`WxZqsWCUacWCUacWCUac zWCUacWCUacWCUacWCUacWCUacWCUacWCUacWCUacWCUacWCUacWCUacWCUacWCUac zWCUacWCUacWCUacWCUacWCUacWCUacWCUacWCUacWCUacWCUacWCUacWCUacWCUac zWCUacWCUacWCUacWCUacWCUacWCUacWCUacWCUacWCUacWCUacWCUacWCUacWCUac zWCUacWCUacWCUacWCUacWCUacWCUacWCUacWCUacWCUacWCUacWCUacWCUacWCUac zWCUacWCUacWCUacWCUacWCUacWCUacWCUacWCUacWCUacWCUacWCUacWCUacWCUac zWCUacWCUacWCUacWCUacWCUacWCUacWCUacWCUacWCUacWCUacWCUacWCUacWCUac zWCUacWCUacWCUacWCUacWCUacWCUacWCUacWCUacWCUacWCUacWCUacWCUacWCUac z{{M%7b3fzc6i!j;Jgs!jiE&27IOoPV_bbW2qfyRBmCi-+&c*T0jq%R5c;{c@ou8|n z7bf}{=jVyeCla0dc&9Sn*%{~D9S1fHGs>VK!!WF~Hj0^^$}rzJf1QN)!{PtL*psok z__6ofV#%{o{X*>C*v{CGVo#|i#h!`Xsy>NyDUam;4}QnyFic?89&bl(I_osBu48)+ zw(aqrA@^o-_nGS$-+=I3On)BZ6*z?@$=bl&lcNq4ub;-G`#Zg^)HDs-;~QX=!-6he zXowOM`}Qfs34PBhMno>h&emEhnNBX#dN?WBGTvH+XYDYbrSOT`zLhFb*Vn4@jt~;l z6n>&&Sf$)y>NILjj|3X(7;^(7rkK>Cj#HagF&DPJp7X%4FgJ$1-+Bonj&fUv#ql{# zQEPe2d^pMdd((E|;uvR^V!?p*NH|XSnHYBb4FaK zoA9clR&Xm&sr8%gTKmhD!mBaXi$`e9KC_+i4EThv7~vJAF)G?K)1>#LcAr&v zdlV)nuB$(j^A7kt9&f+L>*G5Bs23Z%!4lWmo5T>lu7chq#U}EAN@>4M;-Lr=589S@zCmro zlUBt6F6zX!;;1Rg-R0lW?8n_Tdn>N}M!m+f0St*^D2<|E;2WS7@%AfD5jGpZgaHp7 zd7#{MCgbd_&3a>^=4+INFu=~u9j7^|il2}HBT;KkcCb%%uphUGQCwWcp)K4I+XVJL zQDOR0WVp{V4l&%2buGi*Fw&B{FS;%Fg?MQU69+KWZj+Q{B<M zJ2>nv<)Rg9bdnV(Du#4~veXo|%+Y}_5Vs?^DrXw4Z{jLY_=WHAI9pm1nQZ|orZm9K~YK1s#wFvWsH2inZW+<~jF z$F5?KLz{6Rqtm29Z_%?S`e|oJPk7T3OL}};XTR4ae4*^MC9-pbag4Q&*&Cnp{X6l! z>~PT2WYT*guJO?v@nHCoH^#=n5J!ZoVrb7!A11DVSdUg4lit?(c3T=7Gdv>va{MqX z)I~`fDJgfD{Tg-O9YfsC2s-1iAShu@?vJf&7~H)x&^zDUy*rk4*eO0}nWylgH@|_T zbw1&rDz9^Q>_uq|{{)jxy7z$46O*D0Yk)`Z_W3+r9-!)p_e6Qz_r<#hqj8JEEtB&DV{bpZ`;uP;R;*z_ zbdCGLtKA-o8Pq$)F3^>dq9_+ zLFl&YT-3Lk`7ifq5ARV-Cu-%PJpbiK+QT2=9RM~Hxo3oxs*c>9=;X>+;nNs+#&v)Z z7~Wl)#~3?Jadm6-8Tw|JOdjJRFcS)(Dx6XgFbC7o0(a-HMQS|?!Ba|t=aT9ub}3HA zh6FQ%TE!sV!-7#Q)!Ytn{+?$TLmky%z=v#VA-TTKC5!7upNGip)z1cb9NK;cPqlnkl;DwVgy+ zKk_jm`ArixyqOa}6S>il%YN>=aw?t=QqA@SmFgMr*`jhS@hU}zm}s)0YGSWxf%t)G zx;WEh6ti*Phr5x#Gmca8kHqPPf;h{E!e?=oRG~AjkagLjQCiP-*%a&vB##KY7k=y zjw!m0jnTIpN^a(#jf2CAtFq?Cmv(H?ob9rAxV~0ird+088+)f}uIh%Ee=3d24`N5~ zygz0^j3O#psZx*Au$*~e{N|TUDFc39c>p%n)M!)Ws)>W_ciHlgkQ;lTLrOqrBouik zjctdvEHEWo)d!L-r^z+vwC39m6mgC897-;=sqe_mjqe(Eb@=#`(WW>IBO2kgIQYre z;&{#U?9DH8XHajii-dRdXL}Expcd8M*YbkNBs>!@ydQ7L+$6roX|2^5wG)ImW{_Or}>1cIT>o&u0?=_fncM!k5g%#NrHpXy2%xJAvWBr zyn-@p=e}M*T7RTRMFwuf3XqXtQ{_e<$j6`N2rvbXJ-$tflV(081%N0OM^|PEVnPCx zKPh~gFqJ!vx0$$pnt+&KpvRXMWjjgQjl@N5!utu}O9s3{?F&rPj40Oqmjv@$Nt=<= zia!+VNHry@7;w>?@pkq2*gkJpzYAy}EB5106Fx-7chJ#CY8)+09A~?P5lRznQRH#G zZ7rU?!;#su!nxTDp+qk9L8KfEoQaZXTU!dJxUn9XTqsOQv>1irM8P=j5NA4?$sM6d znotrqgd`9Vy=VmqkSOy_h`=;VddFKyM1A39Owa1PX1G=A%4 zjMt^z`6TW~6lgA91wn1I*S5{B2dSR@;@Al37nd<@M-px(0GflC-0vKpjxH+xl{o+-=vZSa;>Ge)H?u=2%gx5-FrS9*t>7g zv;U)yhd$Z4{{F{*{B!GHZoKKi>+ZY$t~>s4=a#?y z_3nFaeyrox8}5DlUr*n1`}5D<_QaD<{rOMNJ@de$_rI~deUbI*{A(^OC|b36((;LG zY!^*ld+~xz*XC_(o4cYS^FJC|3g^%JU5@4V3oF-T59y)Pq*QYlKU%&95$G&PCKKR~8-+cJN-hu8t{ab!_VMHRopXwn*unv))vHiHEj zf*!UHLF|CXRlGd4^3Bw0Yf5QJ>aydhHQQ5ai&83nm9pxol)4Mktm*6#1thqHrD=nK zq9jeAR--ZKGy^>zVe)wX`{X=@qMZ?Vrpx=`6wHXeNWrxC`jlaBPP92?G_XQ9Dwvu5 zlUeq2kRyEkKAC4mNr~wsRhvZOM&U>rcUWu4cjEE-lu)sm4ErwXHH>O{4IGQXj~Nw~ zGZr>Ov@Y1Ghor#_{gHy5!i3btyPA#ccRH6(P^1nBhEz+!I&zI!KRn#wBBPW(L*z`S zT^W0G2E}+woTwe#8!KuS4|eKZC?YO0P3jpCVpA=8JGmy7ZivON-M*o#tJBrrMat_t zN!LsSCp5h7N2K6Us|@;f=A)e`kitaHzJ z2tz9%piZYP7vfHM+fqntOAUT-m^72E03~czsn{SDVLE*;T!QVJ2}O ziH8zj>&@i8BeCJpj@(MdmgAhv0=kwoTX@;#sARc5qi{GaP1A;HUMwnaOy!Ov0eM&< zGB|b2fX}G?J{fJEXws{+s75@V;;=k-oQ?MOySzT@_sN)V@3778p3HjtJ6u>piqVT! z?mLx+RSVZ_4EaEe!dEyJE9B~_=?X*l6 z-@xqjE%NdXA^(6}_L0jOa`~QIMsXQ|?X;u~2L&tD&XzPasWV*%+cTc7gAtwjk{RcA z(tSJoRE+bQwB^(9dgP(4|KK=|S=G7qk*#>ZBUAFwLyH+_J+FPa2|mG(cy+TlYB_0m zsY$rnz%OMDUogV$1~$f)28$IQ%Mji(1U4aalc6K`wMD>OyNf3?C>7I@yStGe9W@L! z3Kto)$y)1civX1H+jKS>-8N@}b)d1+#^eq(ayzUaHgRRw znz!5g3zFQuo#XfX&L=c2F&aK?gjRWsmo0IYZB(Cn$nGaA*U|T@Klq)WS}JtPc^xae+QS~2TK)GMS5tC zDNyVKeL4n|r<(lm2S%*J^bZ7{pAe{hs;M7EQ6`rmE9Xx&QA)}cd7vWO1B9NG4Qyxo zjWEe2Q?!pKHN21!w=Qx4j_P@4;{;b%py;s)BV8ytgmOd1A;aAh zhT0gI*Kw|An7eG~;^?7OO26UZ2}2jh46Rc66|u}v+>j4V0~n0`LQK6rW5|5>1noFx zD1FG+@4l8(_=U~&7A@*(B-p@`@#th2t%d<%y5V0$*SVkj++#4O}@% zone|JEGrY$ySH*=C@Qs{o^a^T&*w@dXLRr22+4MHV%@6A&1!g`VfqA@>s+}Q{x&Jjlqu?x5=`U8)TCsSR!r;0STT+a81c9y zMQ?y>v~jrwnKo1ItW4^s3HNy0qvUl*8mq%7H7iq?x0qGi^q|8A!HDpFrf5R-`|sL+ z)x^%et0val^iVF9JL$Y?B5G!u8dOrR23i-2i@KX8k{aX2CJNVQvflz3HXctD_|uJ@ zy(&f{7O*F2-TGE64*FxNk6NtjTeO(?=`{?gE0%lASkYcU&UroZ)Nf1R$ z!+3)@*9b4xE3QQM^9dt!y#g~2!nIo)I~KSQ1a6o#>~&F(*7qnUDtnQKRqlLo%l^M} z;-i3AZESOkBWfWr@3-zn?hJRjI}=&?;-lQrR;b^MuGna78g^g%cKKwRGIwQ@OL%V* zJAy2gQd&tDuCE0S1HvckNG~5)CEQtiu(h)k)#en<5Egs2v5hR(d!0+|D5i*J;@aHT zj({KDh}=ytzVNas+4iX0=+?Ql?$iQztLc~rnl>AKo)Ygc7v9tK2>zv z>~|E+#**!MDDB$ z`j521lC)hdoxNlO`Y)3O1=p)N?lKD1Wr5m-@!HE6_yQ$)J-E5kl5D=uA$BbH}QBlr5S#d@}lu2$vZULlC}u8;5yY6mL`Vwiw=~ z;%%|KP0iclcw0PgOW7L=J2*$-Zq!F&EswJd0QTDTfo~aylo+Gv+}k@Yy#lwG)0N|uwV+=UQ$gv z8M_Xwl7QJ@G7#7fH)5P3DEbMmh5#AG)QC><#VFHkwKk==z!ay(#DY7cW{*peZ5Y^W zt(%5bACW5}0}O-aFB*LqDY?6z=a}k;?z)#*`p{jEJ;i9#nuMKsDrJV4vs14*7>9&YN$$98_!@r+B6#$l|U?N=?bK?(cfnCf%FXZqZ@Y@h1!w zx7?!nvqjTxK`ndJ{)FJm)a=nfAJW*$S%ju-vq+0NUh}NQ>rQ*t5|JgiCTn(Ba-1#Y zVeu-3fk{$*rTL=;ix>k#;2xp*9*s!Ro_Vyz?kw*a@|v14D*!SGUhdFL_aO=(GkW7Vzfs+9(^NjxU=Efc+Lv3ntW|ZsCV>v1I*t zB|F$Yc=niKLyUqwCi7DfzaE)I zr|KO0Mk^n2nG(I!3QV+Ns?XV7GKb1Evl;R&CRJ#8|tP7vI8Kfijd= zy}($E=$Ho1;Ua*X?P8wziZ({P3}LX0J4iAi zw09*f7`H(qCxtn-4 z0pW4jeMIx9R4MKZcF_rIGRM-|(G)I*ax^2cH+zR@)*Tz~qn1_bh*JB6JF=2Hx}wyB zi1$c)5^43VbNid;PxaTIPZ4I#?BEiy{(L!G%kypttMsWZ_7m~9+yD;W2ss{7<2-f2 z)DE1FP;p%L0%=7_t4ikbWqR`6)Y+(`kTps1lT)M0I~;%Il4*C0(|1p&a4NNT^(0h5 z&&blxD?BpQgN#DEUY!P^-GTmLrF5d&5j9Pm>R2~TLvd#f(hY9_Ohw@~i zhoCo$YHh8^YpcYm+6o*Jmmt@4u4ytPT>k;7Pi$l5gcDjP`wX{IzC z_rbajE?li**hon%Nh38TgtCTMUy=IB<+}+ zxFLi=?IABYZ<>a+gd0bxshQhSGk=zvS(ci~q-Lh4X3k5^yr|93Jg)_S{^lpA!YYN( zQPX28J$T2RT9jo9%2AAR6o_Rw5YIq4bz0MPWqOO>r{jiD$=gzS-a0-6dxAWvPj*O4M;NIkl-BTm(Yqr6#6qKylbv^qhKmB>A_~pVzXXE;eCmm>an* z<-WLu`*IM>E^0k)EGhTtGB>8?q^CBSm}MrWTiBc33F|U#QMVg`Fq=ujj2Xx1B0`~w z(>@5)K0S=|(B^DRjnt<@ zu{bpyTPc0lKq`p?H6zac&v$T&l$4YW2`+YwiHV%5(+^BdXFni0#v#R3+LV->OQ{Ji ziimY12B@SZU?=2~)H$>%I-fHy6{;u7&7_0oFda>Ujms%Rpi&Ct*v~w+3Da!P(eO+i z9b-11-6Q5^_t^Gw46Fq)gm&{#K=^m-I*ag&{;5-4vST=dA_HsZz4fkFv50rUR3jp^ zCb@NO0(50xdhEP4^PoOH9F|BzXoJ^zQQ#YUk8o>!7*q?>+)~oe2F(*`S7IbK&NnkZ zOmijg>vC`pmh*{{L-i$}Si>il@zA%{rX?$_3CdPJkrt_+V=$vIU$@ss`(|Uf@Ln1l zRTII4VtDZHc6kILty4Id#=XxT8$(CyFt-w1NiGkq=6z8dE!gSNd0Xv3|SJI~8y-6dR2<)j|>3@N9yud*nJZe+n>ck$4 zG-OP&w9d!qg=M`}BBsHdUyBu?q}Qq0)Zflwhz^8w5;<>;dc+u)XNF!S5bNKKjTFpH zFg#;tBCXo@+s<%Uiuvm`)BW{X(CTi`r}`qkJ^~!F&Q!^jwcN+!*R(Kho)R3WmWf0F70m zL<1!VNTQ6<)g?amlyK*CSbIV3k~LkUnV!LDkn3rkEk=#==I5qsem$KX1GOqV50eMk z>1b-vN*X$Uy=S_RJ+ni5S{#E>C5Ag^dw4pWJ{|J&VmihT7FL*c$MC2aF-Ggsd4<2u zTGFubC2ba_W#bs1hvsBxz}OFb@eyTMuSptpdDSPclOe3^B_%M=9`APhAO=bb`;sZ% zC>>N*-BfU#w8yM@73Jl^J3FAgc0&O+*X7Z>v)Mt+dy31KX|963P#P2$d$BC$B4}aE zUR@Z|ULWh^bXfHg#k{%Lr%@83oHx+I(~9Dlw8oHkV-6qZ4Xh&K!|$zbUuPXWA(j?8bcQ+E8Iix|>qC^pRNS85lN95r&rT#%3b0(53SP4^5s>A-WA@Kux!DwfrT%FGXbo8$?{oJbt$^Ws`>bnEs6*j)6ps%>sS|#PCw-Hp0sKf+$ZKe5ywhV__JUnj)<9zMs?X;XU+A<||ZWE~M|9eY+h&?9yq>YBlxLdLR?v0MbQk78Ldx@(pi>95phEW-V} zeIuEGy=~JBsPOdquZT59Lg-67x(sRriSKols)g_CwPT3D7$&}_9po`w(Li-oh6+iB z_j<&WJ>su0*}ThrB(Y=PC55Zh^q~6LhgpTkwnm9n478q-9ze}t3_c$^F zhK!I>f@r)_{D_OCS{>u~dxjW;#~`!_H0>${k6!P!eaY&CFZBJO=+eH!vt1+_#OUe~ zALTv=$qCj!O4>9@T15V)N8AjuMLBVEl#N)DN;1PUfU77I=Bx7wRK zdayd5BZ~S&@iC|wr)gtF?ua<%gm{ylMPtSUOLMM9iyh$S!iJe0Jv{3>HTEa4VENTb z69-1bpojg^G#=+P!qJ&t;b^AwJu+H*_|IerNyd`mSxoI`cf*Ux6(kX&Ge;ldR5^3? zVR)*9fy^sZPs>!$)7E0sHDsk}44ymTSvJ^2y53c0X`XW<*mXsjYqry@H#+-OWARZ+ z`40sI=-g{katfs|X}-s5dxXgS^(R{F-Pk&uXz|bMZ$Tdn7k1CYUia5C>G%)2qjy_q zt_0)E{+3&X!c6svmi1dEEA(NLFZ)ZH__bTUHy)nx@T~l+mf!G(QC)tsIj67XN11&s zYky*X-58y7qUC|i6D@0hYesU_#~yn@=|+$QLVs+210(_Z-^nEGyAcWrAx=Vwb8_zS z%pKpywi3qCuEiKJU}Btvvyx`RhK{bC+(roo;daJjjMK)z%1P*&C2RCBy0GW885o;t z7#Pk*BnjV{IKVw;<>2ky);m&njgfr2Z zzz(hApK0YSI-T9C#*z(-G+7zTj#2MyLH}bz)qgf9!Z8lmMVx}?6xhXOJ>+UGAm0(O z2niVmdXu^=;{@S>*;oFgmfZgwx03xR#Ww)pT&8flbdru#fs=GQn~hpnZOK_> z$pbI;UHDoo&<4<=n#j~K$MxDs+Ni9y3=ZY2wv>ak4Wxr|YW7$xv^OoY*$ZN+HYz2j z#nQ1Kq9$Xuj)E-V#N#uGsaJh$q2~LurSc*s22w_Q)o(6Bn1{3v#))FI9?QfBW-n<7 z;BfzJv=rg~*)I0|4Y;7O(F3Ey_(qFc2+#7AhoL`|7*t>Rpaf?+UA8Z>V2l_4fV6_e_Ejy+_EKq3Nl6Ff&!c@ax3xJ=UcUrY$gzpTH zjd3^6ndh9up8tdCb&h$Q-O|SV_J>m#=8@uBhIwdWA;bJ)9rOtgR^aht4v$UvG8?N7 z9THaP4z(s=`5ni&BXCGIO*n0c|1^}IcQW*hrsqc2d3{1+djj3YFkQ~W(pP^esUz&X z-Zjw554dCOY4=!=8Wr-^Y-0qP2sAA?9)wRHfr<-f&vnZ{ce;J31B~Psb8;H@Ivk=1`z> zo%R!e1bGmfVoFbdJv@e_c(p|3G3g`1VPpYi2^+Nr?O1Brri{#~P}__%*yhaXa10I5y5@RPem>FC`{8S4r z7R_|IIcUQSGj(h-eB1;dZRRsfdf0YyINQLs{gPp(FHF);r`Ync-QY0TvEQqnYSEeW z`>=)8nYeu%wux>)haI!WJC&KPRiwvHvm{v!OuRua&Nhxka{#A2$3SW;lvzG?Tzovk zwcwh>R~|3ja~T_-Q#mLBz!G~+ZaodCa5;=~Iw`=aPw9Dg=#Pu?c6ZCwm>T4NPH2L_S8_9u!ATT*XX3mk5>S-1v>BgDvv4tn0(DKicV~n54 zJ=Pn)Lgqm2XZ0MkfT@;*6nnoS8%+*1cQ$^qCB+x7z-ceQ5632h9fE>jFezTi0H)Cx zX$uLW(>yrPxxCL94y@S;grH747Ohe1^~TSz;JB_=k&Si-&QSVup%_j(_NSQixM?%q zVwlMrO5=@s-k_t?Ga?&r!5Fi#2gNlep3GuS!g@#1)Ope)wKn$ClROGFYA~f@vxfl{ z23Ii(`g52aVPgA=8%GPWT3T?^k#b=2!fwT1Z_V)+|0*Y-e}&zH<75umJ@`no$jh6} zI%9-3%;RC-m%D?W+-06CyPA(CNPD^~yBazj<)X2(iIO%pxQ{Ubwo;yUVIhM?a6wGz z`fiSV=W_}t{X)*K#|p0(cwt8d!yVz~LKN@STv+WNT$aIy zvl3zxr}7AYEbxw`oWk@|Rv?xzNDp8@T)_`X=|ECcfGtu8=|oMZc{k@_H|?>T=P|c# z=AL?d+t$Z6bL4z}^VXfac5Y_G2fHfo=Dl%rLn6L1AH-|LC~eq*nQVk+QA7i1xbe(gZVgg*ohTaZvFuD*aK@sl`+IL zwiSxCa!DA~C0v_%5FfQBQC`m5uUK*N(lL`Zfllb5tcv0du~cL|BdPgwwI5(5_%1Dv zJ8)(uEk12UlFA>eN@=?aV+wSQC5)!jUZ8M}KoI=uGP!?qK zaVqjkib(6J3rJz71Q+Ce2~EkvlD=LsoHT4@Ixv@2nzY=oRUw+WBx<)|*miFyFeDFq zJ&HIcN{A{zLmM_QsDF$)Pnr7vU_!igIBN_Sh65@XjoNLK)nPCY6yghzDCbENY(rQz zB_6iMba1g=!DI3a8^$nno@M2C=5=sm6^tUvs*CN=UK+NJd8L5N5EUT`VMZZ!&ZUJT zo++^AFcu1mfnH zhOM!7VR8Y6rUjsmJr&u59UlCbhg)M|+(Cl?H7#iC4utwU6**pZT-F(Gg1b|^yP zRA?c?HDjXeuw%gBG<^ag$E^`c0FJ^e>?%MJ8HJr9(AUX47KKp<`ZQ7htpE!fW>nfd zIc+6k0DLBJ3)8*|snHw*$)_>K6=Yv~b0OK+eu4-XMIsIx0GnD(ZjSLnNnzVoAWSVh z)H5C$BiPYx_$v$=5FlOO@^({sR7_Mm8zZ?RRFdUI1Vd&Os6CwVX$FxQKnKTaoZx;e{f7 zw&K(e@Ea%UqZKpmCD&!+A!st!bPA`71YeQ(689Q}5%am13||oMTaetgr3mqee9W<> zNc=55y0o{6A7QlomHt=agZgAjG963YxUBvSg~IJ~*)x>uXLwM|3{GYG3T~;efiMlU z6z>;tAKG3k6sH>_#TmxltEnA21D1`*k=>arw9a*a=VwJY2s|fzROEQA5VxM)P{ZHv za)(*-xG*waPKM?j5RH9AJ0!Mg<8;uXvz2|ndnhqE1)IFiHJ!#YI4X2wLFzKaSC_Cnd~7~i zH4HLKITfB&Tr{5bTo{EQ0gPu`O`(#FT<50#owu(ioU^%BvJH#u(N0`(jxm?ZXNk%lLMz z#3joLEV5J==FRoEqB|)4&x=D@m|Y1A=J;I5Ac80E=dro=MA?2a7nKyPjE)S|f2GW4 z&qc%LFB0)Rq3jo@?oa6GNzAFh{rz48#)>F$@nDSC^!ucu?zHXbO8F5!XQ(Y`~>W`Vnkk zt4rivY?Ltqhe1*L0qjL<_wLxvJ+YbFvw2U)&aIo7hBuzvO#bJ$ZQZ%;_j@;UJNNG0 z{Mfd=WFowI$5x7Za_8R7Oijn0-*4T_?e5qOQ6`{q3$pma}ddve=TI}vVva`V=0TXrI8fca*o`0;H!cW>slZ0&fG+uO1Gu^mXg z^ZA|IiRj5~TRA;byA5(q!`fsA@nh=W*u7=jA0Xb<>?-$id$#RpQ6e^=_xk@mTfzC?LscxlO3pphRP{SF=}Vp z=IvV`!gg-Q?h%TB7=e_VN0oWUUS>f}LuD1WecSHsTwQ5xX;A}HQ@XH04k$C%jo@*$ zd5o58$ux$pvy3jzs7lD4Hd45fqJ|=-siLx~RA$^%T2pd^w5S@iFQ#Vw6$s?UA){Sa z+OVLmMowOCu3s>ho3V=npjfymvF|~E(VrnmCH6!g|^Ods6FkaUX z!Awdc)ib$pt+IYW)krs$vu9X=@xIveOoF0yCo z2*BM)E9x@XyxJ9t8jNC?MQ(B!(nvW99VxuLSniltDcLS#i}%+GDX0c3h$@^1)kC|Q z*-?ShDwz436p%vFu0m~JWg4SZnxYUQ|G`MuI^Gm&gTJ8~C0maP^t3))yb0@IIk|H^ z7bQ_m;x6Fj03e?Thh*#v-XX{uiM{GiLNyyJ)Jb1!ep%tMt;e;I4;2)^iLBpLl6jy~ zsI8_#+(PG6Wfkl5MHO;LF;$TmcU0h2Klr5+L|XHcxgDwVzhCKw3(Jncg#}@8WvAOz z0@6jblxR9!uFQA=`pnz>u4JYpd@yHUWvDFkIiUQsdy?{syW>M55I znN9NpzUzv;ld25$M<77)6K|>oT{6BfX}kgv&%Q&MBhwJ%B5mh@RV@sFr4ta^X$6E{ zh?Jd!?ryn6GFpo(uSg*wCzlI1=V1rX7=O1yt*nMxR{eq@KDL@vLh^wWSqFeSTBdZX z;EEfk1Iu}elw#m3y2huu>Z6V!v&@OBj_g0k2}^GVGmjLGJe66a10c<{0b&&baxPb0 zO-cMNQmCAcykC&lBNyI_g2abb=fqZbytSbTeNK3xN}W)xu~exiRBJX?3HMe}oHh$3 zC%M9#;vvO`CVeajg&$PmCJcuo7$KKDI7N`SNe2fuF#4j37+tI)Mxf2TmNg|Xm8ebC zLmWo@T=c4e|obglb%!q3!Cw@}cf84;Nw7Bm#p0?b<7^beb#U26b3anL=R9 ztjJtaE%hdhOLnhSNvHm6{_N?&Wt=}+V5p)EUz)_T=auEzcHwZf_}K|jJTinP!^1Z) zB>cX5(8GS_6-p-?lW{1j927s(#wd@_JsoHguuD_+oL~o0F;Ywfe750P$|HCPlWIht zHd^%W7yQ+x7uj(7c{x*AqZEd!anW*ojj(#M5<{|lE=)G)utmp0mVY?`{Rs!mLg>vH znn5LrlUF02-hb6YiA_7NvfEiBp1CUf&YA%X{S745d5%-+!xfv_*iZ$-pt|VpOhhOQ zd8NY)6z_mI#6>E#9^(h>3GoXqT&Z=j$Ha5SaHYP7b&6+=h{j*k2=l zc{Qi~$Vph-NGJ*YHR8pqG5r+tdpYJ(jX1ntD#oQ6+&Va01A0F|?R}cFy}ww}jC=`& z;RP;%7bFUK);f*UWE%>zLm|zq#9=jAAS&(H%Pz1e#gDmhUUkt@TxpPs0#iXcgd%&` zG5y%W-lU&KwGC^PagrHAJhYXz(-2QKpP>otIc#INumqm{j7&QvqaYl$i&`#*PSVBHuGcu6(TjNdOtZd-EKrBO zyBu~>`pJW^0EJ#5&{_hvL_B&1`YL;dVo?_2$PQ3X`nb^)&i09)IE4A)r;by#;^qA) z)GqxB@nk9OSVdbqa&p7X2Vjb@sR-v z4z&tI)siiAr-U2bVnfb8_BC<0e%#R2#BSm`HlF=YT!EY9!Miy?w}+nG4I7Y>0B_5k?se=&J?0bhEx!GZ#^!>c$a?{5JA_j$8D>r z^C^yOE&TJIqkAttc6`nP7%bwt4<3UpbOIdaZ~m-BE`=mGPPKGBI2`andcz|=TX+-X z$R46eIaRBqS)j6lJ~6rP(eZzRL9 zkxU7z@ZsEMZ2a1UME`Dy8pp~81lZjhgxBY95cbdCh~JI)b=m2*&DHzB*zR3L@jMnw z1h7;>;llj#1Z+l4Tw($aJjlAtj;!V5Z@aWE<2Xek1mq=~p$O;-!r1fF>R8&v!cf&V zX};Cmp-qtVnIvE$v4>J1Las*%8oRKdo+`rnie6z}E#)JD9|(O!AJSg4S_wOykCi~S zi1#MBtYlDli9IUZQ7<&t(>x7}%TyeEnJ%*&z?7KKWQx@fnp|ZCW;W^O5Js-`on|Sw z-{`~I&Fs!R%5_aXyOjcQeipHche^EZYay4xORK`O_^d3QPx17xgo=8FDh^LvqmDiv zosy7}oR^T8n39s5Se~3{UL$65iEG6yE{^aZKE#9_uUHsDDf1Y5;%Kp=-lYFYf=3b% zRf*PP3_&N) zzka->4@!(aIzbw6_ql{~3;L+2y#fc1e?gx|_3_#vZ(n>UUaPkN@4ACsSyXjN8nUt*< z*X`j3J0av+yLA5+mrL{wZa87aj+?b5)gG6BuM0YMudsgsj+LIZ&=C_GnTFfFxCw)Z zB;1j~@*)XWW9X7S*9g;Gvg;{npb94A)-y>*Yy#KqtKL9LppeG3_;%W1V;-SQHI9wc zhb9@LR73U+cV#fRw+vG8wxeu;JFb!?SzqC~FT6ZoMpuZ}?DJ_uJ?zJc zJnqzgsk-3eanTP`tv+f{yx@S5KzI{5Uf^(em~8$jEMXJ8W!({sFKTe8+iQ;Uc{;Hw z3i0n9G<#?!#Na2T$5cHiUeYGwj?SBlaMS(RLfB2Xh2_mI$%f_m7FzM`Y*E9pyAdlv z>29>5i6(7W;y#U8o66vg2*=99Bil8cX=~NtiaZGDcCgZJYQx1LO{E1`TdFLuM1Ilt zqAtZ3xh8X-rT?|2_I-}ZCLAG!ZLx_>{`FP3>--gl#F(6UmQ!uKbKlG0h98|h0yi(r zKL2i8dJ`?&a0He7vNkz+pAj!d)yD9NzH)lq0KGNAvwK{2pq27sq&^I09d>+i zB>!krPXWwjeIOl=TNvlt%9GEx?d75)LM3EFR2PuUwx2Ad65s`oIrUi7JjdDf(Sdj$8!jafN*8YE z`&Hk{jeWoFyLVmRFZ!C+_x-X@KjvoK!kpxs2z$GxWo!Gej!3Jtv_^e?vCr#wEQ+8TRjJVag6?ip&Dd+f3CemaW&L}~`VV~_+VN16#yQ71Z*nF~i0yiIp>0poGF#@twa1m_bqjtlmC=Ui z`w?b_LHUb-L6>5u4VitRT%o{Z4`H&WDban>^HbRUKiq^%EEXPDCoGN5ORzHbuDrL; z)5tF^H^Xt#%A9YD!&~+`94{=2)F&wW*0!1bi~IbG_2F38*IJa$9A`=&%97$_`&1`! z_1ntCa&PzL)LI}b?$KBhiGN?VbE0!nA3bn=b*(lT2mMKX==R{HkG)DZwXN@@=cM=K zePJhm7}|I8zL1kYRHV(fbi{9B{B;`+Fqif&>iT=r$@>_PzIyoENY}_4)#(U;bUG^d7Rv z>5B`GP_{!2qw1K@m)ht5p6c_VSnjm#j>R2){yO{>7(eMt0vIFFcr~Fi)^W$;J`7Tb z&Yqx(pb%}el-l^IZQSC)m3@P-J{&X;mJd4DaEX1+DSc#@1{)+*e%C#VQHnn2xITS6 zhT$Y1MkfEQCDr=Sh_*Zr=I_8ATa=y_UiPg0&`)C!nY|xo{XR9Bv)R3x5R35oVxJ~V z{)wO;f4vg73SqM2C~BrBE&=RXtc7)YqYrNpge44ik$C>1+1klE6dFs|=@1v$v8l)1+o8@%jl+Gm$L)ciuxSh~5K*M_99rT*nsLb}f~L1*CVl zW(RWgz-Wr1H#GIY#>l2a|;y7I8LxO4}e%oeCuuT6PA*UrMIC}6hp47k&7tu{)WUuNAMCq z+hUK*1GaI;7W$hbEC5!S6%nTPF0p-iTQ} zm#crbq}!Vof!k3^swxj=*)Z8uheSq*FAXg!yvaj1Tsl=pJ)Ovve{n`D3~p{af`%6; zLP^v0S)g_#;H6yNSi(LIP^e`_%S|#y#v?7-LWRSdBx2AOZbJ$p*|$|;*Se&-?M#~WYG_~o-3 zC;j}ylN*1Aj5e$~dv*FrXPNY5rqW~-uJhrY`_ft5{zWAUcVf#pia$~&eM~gILEuMD2 zx!d17*5Y5b%Q=?*HTjo4?~HUtF2?XY*5c)zuac3He_5-?ut`|c48umL_2A}Ff(7$! z{F}>>J)tW%8T2vg!moEd$8F4vx43|>q6s|#72=_$(jKA2nLHYNB*F)smxl(Ok-j0s z4Ej1%-poXcJN{MTC{+gDX96dr4yDG09Uhv!PwG(d%a`XQS|XIrNPQ$O1p|OV*hs0) z=EPfm3iF;;7X{@&!pI|Jx-hyQq69QL%%@!7M$;$7oerfs!yVt0InH9(1R;@uEazA+ z-qoB0t6InukQX_1syu7OT*zf7&jhU zc>mJo6VKgGZEe$n1q&KC%?|rKYZIG&wraeUjl2mbP2+eTANY@7AT_$6)k*EknTy`pVq z%Y+NkW0P@LZkpsm!Q~=Jbw?w%wOM!q!@E`~^(xz|&Ct~h>Ckskl^Ev+J1(7Wv`$6GN=nx7t+`DcUb}f}9 z!8nb#;s6-5zwjp8ON*tdk+=tj0gq65yO)N5lG`!dzqu$dp8w%?+2)psw>E?Anr46f z%eP-wI;m(y*4{11+fizuW<29KXK9Ka=1WPT(|ySAF@B~E^Wo-~{1PLuCOf*h z*j-^aMUFqx?ur~cu=wwGV|k8Jq9F8kB;1`rAw8Wo+a08$_;@AVtQf#+ijRN*m+YMV zm|g06U*J5r*FiTr_yK7*Mv5>uu1~)LZSg@muMjm*6bkiscEGM{aL6kR+=;BP!`DU) z&^~`J$5xR8_G$yd%DW`xA2ezM^scJJM0YYT6yKE(;{x1G=*m+o*}p@J0tZN3$zFFN z=?{eD75R8u8D2Vt_buRR(5MSZh6n;2H;BHwd{BI)2QR(yTPEH~ur=?o&{-UhEiBy` zGDPxY#z2=F^ZubNa`e* zA<_#TkUOx4HRyT`Dvj>?LAiL4c933D6TSis_GRuIg>k2q6r$liCTz6t(`%>H5loW5 z`A?Eyc&CK)#woIuRN{RS*m^_9q4u=+pY}iP@u5+%yE6ZNCt@(p&QTL!5&0TDS&J+_r`L4|WxXWLE z|6RCyD`@V*)mq`HyF8s?bm!@eca0)MN{LI4tsW~>I%1)I7XCkhYGeH15O&&0Q7eExt)1nB zQaV(&-0$qTDneb+K7{+ZPjhbMpF)}9Y+}WL1P@83e>_!D{%A7N{7eN&izpL z3W|#CnycnrNEGEA#*4-FSW-Us@AdH)zk=x*lE|da6|4qjaiH~ z(ar+~+;8*mwo=RI#WDM(Dkh1$QMg1m6^shhsrpPNv7;oBQW;pE&-x(Q#qij%lI*N6 za6wqs<;mxN@^|YadJHvg(xAoaNUgZD z0__0Vq7W-R_Rn;I8*e#1?2r|g0Z92n2gqb{Dt>4T7eAqsKaVt0b^4*7EUS=wd+Q~Q z$Uyf%r+?viM$#V#u0qkPBA_QkdU^p?Cf>~NkuH`=#-|Gyyaj>{Z^uY>IrH|rGuPb> zRXbG7Xf#RQZW9B;><%u$~55z)liem5G{^IBF z4jg(*x7BIRx-zmtB#huZ9ZI8daS1Oom%s}ZgbgzYI8|< z{k+N}wN>V0Rh2c}b@ZqN=ywbk%(qpys!r9*13UhULMSbb9 za!CqA6)mhhig(Aph4;yJSC`h6cbg9&*LrhRH|#xZ<^>JU7FX64S9Ld()*q`aDo3GU z?Q@LGe-4$_71ei_*43GNQJU@r^}TZ!b(6JDH;ho;Dk(i6+lss~x3u&~8$M0u+S0?t zRp$EcI&ziQ71j2X)D^u`-&Ay@WZ-4`H5S#?HuP2(ov5xnZ0;?p zd26A$*YtYczWmqo-pJo)dgG0KuRs5%lFH-2aY5DF?YrKWUQZ%#OM=h;EeN!sAE1qv z9+SETHPL_ksYU~{HI!D@zFoYauHM|+SXx(E)>mBBTUA+Ic}z|>*K9r(Y)JoGTFU)Zcdx{!*%8H7QwcTp&Yb&m(+g{&Lx4oit;r8Mlxph_6G;S}d zw^fxMZY(-Psp+S*?r>?{q58_j-Ho;8qZRnJwN;gtHEge|EU#$TUR_zTy|QL|tr-$l z*3>ujA|3d`L~(mV<@UC=vcod(wzmIO?e=s=a>jk>4<>(+{?!yiMsCi=70h>c>Y_Bg zD^Db6r+k%?H1jLCpVjxSEV||R0=%w54eKrLCo?l=?#P&z^fS%oyZ3UhR!pk=>8#eu zk1KtZLzO+6Lz>%te{MO!KBam3C9wCpS+( z+&yba@tmVzk%^Pm} z!EMWytXZ~e=@ZR&EuFXY)#iyyf3R#XXIwgKseL(f`v`p{T;IF>m$yHCyY2RPxG!W< zOi10v`6X9qDCDbDb=}muw7QXWd%5KKn)xB~Rr7C}Phr({->G}BPNj>;oVik_d1vxb ziTXz=h|=6kg0U!(hWD&@CF|CeIlx$j2u@v+>Af9bMM)6*_?Lf9Aj3hOcE>oXzK%!T5WMESC3nNPo{EvI-Z~#e*r?S z>tFhCvD~aIyL?DPj5P={9 zK?H&b1Q7@#5JVt|KoEf-0zm|V2m}!bA`nC%h(Hj5AOb-If(Qf=2qF+fAc#N^fgl1w z1cC?z5eOm>L?DPj5P={9K?H&b1Q7@#5JVt|KoEf-0zm|V2m}!bA`nC%h(Hj5AOb-I zf(Qf=2qF+fAc#N^fgl1w1cC?z5eOm>L?DPj5P={9K?H&b1Q7@#5JVt|KoEf-0zm|V z2m}!bA`nC%h(Hj5AOb-If(Qf=2qF+fAc#N^fgl1w1cC?z5eOm>L?DPj5P={9K?H&b z1Q7@#5JVt|KoEf-0zm|V2m}!bA`nC%h`|3l2-wWk1Z=}{Tuojwv&2hlU@;KUiZ3Q(;X3Ay?8t$iL8destc|pyRc+B8!D`vzLanD z*@Z*t@xMqHo}OV_kRG9M=IKM6oHJh^h9@U{INd6q)rXkQ?ryb5h*G3Vic~pOS0kTp zwR@*B4NFo}lTuStUC1vfo;iYiz9l-@ErJsT@bX7&@?f1_Y>v`G%|O>(r)5aYNnY~8xK zb)`k~V(S~swOnj%(SrI?F1D_;zM-hDfh&kDs;etn#Ff_7nd>-p?8eNNc>Bi8)$#VB zjY7$cK~d4O0l#(tHUw#f!(;BH;QSuhvy$RWv9^*Kr6vw;)kV9 z-q2y<&Rt56XBeNq?m#SJBEsWU)4amsj17O~#)bRhqZzn2iVAI*&%=HauVB{xCcoUo zg=>|UW@Lb#{oF&;8&8crpodpjo8j&3@c8F?eUvC#PLHJh9#^Nm+x?H*pA`KKZ5H8T zh&ExvSbT*3P~@>e{@HjnWTPBHNXTUu)46dZjXT4KunvEnJrKU4M_jI*B?n>>$`s*ZsPW8@oL#&sknYr2q&p#{ps>Xm ztWylphh@Gv!#`ifuiBY~Qo{D|7M+usIhGDo%gZZ2iqdTg&ID%(ChFnrHf!z;cX9?Ppr%>{M8E^|78a9OKhYjIyN5l>rB4@@c!Q2k1kt+*eLx%4Q8UA4? z$UqVf@(7Se!VNk@)J(Ln;iPtZ{Il`u)$tKbjS$NCq6ovWjDI)EY!?pCR6jGv?r%P0 zR>x%n0{>or{TZ`emP9>fM7a1d*=c9YJQ3{H0RgIZ+K-os1hzoEj7?8+U>$?Gl7E?#6_d^A=)#OJ&mrdlzg@? zW(sU3=+b5rQ5ss)3~KsU)1`4qpiG;s{`WZ&F!w2je;6XS_mkobu2YH>el(Ny5Cg4a z(kwCEFl5|;^=dJv_x&tkhTdkJN$rb4npR29)UJBb*Y6{HOMgy;A*C8hwo#Cf2a_Yyl@MNE0sMEg}}7D5rX8IsJxpoQWQ?K z#ZJ=9)$;hDgNa2(l~}0{VU?m8-K3eiNxNO`oN6UNBLJxF#}jNzXCd)ugzf6fGbD;I z^{=Pf)y6EaVn)JJkO~s|&{!;}0*n-)Epiw6+XRGT?2zU3fB=;q5(|Qv5Eif}jWxE;K)@Io;drRRn&uT82)ha>rwOM^AT_c*+m(ZjcMuYYo zn=L$?tuD;AV$x8li=^K$wSu8|aJ-C8tyPMZU0){I-bqs5J@aaP5`KnIwIthBv;)l( zVu#I)4@dh2(w>vN?Vcp@vNqI~F-u}#P<#qPz0@R5^3=VYR@=}FU;B?Rg8UfY^_VZm z8&##%OY(bSwV_GurG_OH?B|kD5Dp_E)tEHmUTt8sIY{Org>>Hn5w&5B4Jilzit|sclZsf#9!r{V5ihkWq zIcvMLQ_v!pasApUorpuLQxu{|$R<=6UL7{PDxB4hrfkg&P$E__yeb5AX}}0+!m}|H zp`Wu;)GfCNbND0bI0Js{+YR;e>l$L8Gt^hs#J*@KHrL1QF_bQ>jooV~sxp_yHcY83 znp+>+WvDExTo~J9D629T#U3^^6xGBYH5Ad$2}7m1F7|yxWl>E@?8k=6h43w!QdtL| z)TOR}e4D%yXpm9yWj_0kV!ny(RpgmiL2<^!_9#{tur|fgIqW{gBl)%?vlR=oZ98Wx zqKnu+DQXMZ|5R9K+uq?7KarllqUZHF%l?ulh5c~R&;HX7+@p+(h#oF#W0*H>f1gJI z@AW>izj*NQxQFbVJ|k;pR_4svr8>PnHkPqd7h?|BMrPCR^`9YcT46RVvK=e4g>~7& zhq;3tT`k$3L8;-1_}%C)DY$pTjKj=IFcO%&QU{_huN`^SY06e`yAnniC8Xee~pV&>kFy#35?OXo{OB+gJ|~R z`Wbo4gcSwC?`N`pn!ty!C?CX}DofmM3pZwa-59>XL`Wpo{S%BnQxJ9^$5loE7tJCR(7)E$C)RvZTeO2DzM>--ijZrh% z28Pe?Dx5=EfOF)9-e-)$GsXft=55>Ub0C2A)cvh?;mn*cVT-YM#T<3X(|o4My9;b7DYiDsfyig8Fy8FV7M8 zgZ4n-r7w*y<++;#ch0!%$*ejw8;}c|j2WTF?lHdiQ=?EyOu7!t5nLcx_dq6-?Xn?9 zB8ON4cqye6~vf7^tLgBaqP~q(q{AaIbL_S zf(hrX9bLc8X;>0>fn2}Ii95@OuMv`rYdc+@pSI>GvLpLn%mE6s&;34U(6qpI(Kz^W zYdab%lWmJOX4~G(X&-RM17hC0;$E~}kBc9$XWNcT!NC8moExg{Uk(uV<*?ZU!c^k` z)@X#ltMJ>U00<9UCT0t{a}>-%^o(Rt=a`=>rgzolMx01YP82g7*4%pqx3Tv}xkHpT zOZr2tWEoctW<>wA^}X*I*LFDSa${_Dxv}RS%#GP7xAhV%XaAgg%X???!A0lz9hf?P zn+s0;zsqf(a_-N$zbO}P%US!Ia)%>VZb_Gp<_gcu3GcGy0yLmMG24z_AJ%m=*XGEb z%G~SrLd*=tQ0wAbcnh@wjAIzSMm_^pegFkBOC>^COmXUSxu^s5D<&h&@opYkb<>%) zOEdBe>6ww)Yk9HKaZ7%jf)~pi59IM)VN8C1VV;nZpA(-w6rmTsH)qhZiudMsRpkl( zJddH2U)y2Oo%^>uV!%htI369=yDINM&MLlj$;2F0w(b2q;^FCiJdZc%a}u*(x%5Du z&6&40|BGUy7koYAm0pQ2*e;3f`fHvcgFm+)i4GY(5bq|3GmlbrZKwRY-pw=3ENkuH z*K{4t%Sp%<9>_VC1Pe`&r>oZnlXe|%v%MjN5r7}k}OuUm1iLN!hJw|vE? zq4d0y!80xzkBtZPo>txvyCi2Um2~oD;cWKA-h1<-)_3$A(7Og&`2n~6(F18c7nWi8 znbh_3d^;K*lRbnSv#moII*!*m4&+~YHD4W;?VPG}j+g)PZO`PRXE{y0b8;TsX^QL( zcilU9s_m^4`PjbD>@ov$%Su{Nj{e-cCNi=u@+akXg3l3~n-OX4xMVQ7j~Cv&%)}fn zY#kpaH*ISDBds3oOBkM$5jp#&t`yVypSIeZxgJvudZX7Z6HC40>p~22wuPpVKy8tf zG3DdT#o!_8-pifS59bJLOkMkOrev!Rn7rs*Q?h9;+n2*-doUMaj`IpHnSM8fjO7F_ z#0+|Re{4eTMCl>{eZ~WrS9?nb3`3Q0e`#1z{vRQxK<|tdL}oBpb;)_R^dJ;dBAAgpd%b zcYFb6Sa|O!2)|T8bFj@+FxYX%9~F>v7@(1V+=OccBIsf-eNX_rxNKRT0B9s%he<3Zj6W*)9ll6y zd!Yaltr1S2=B`~&)7oe*zGdEwbA|S?y>AVTsi1XIfDJPQ4S}+c zo+v0F#+U&x3kxAF7AI0|mXIflnhSp6LG#*|Q&ETqDqbp2RUuYHxpUOY!iZ?J2Di(N z2GNJq>Z(G?4YEGfXR;Ha6@@MkAdmsaJj#YaU(iMXNTLZx_Br z_>Rbp3?(u1O!$RRuaeC3O(PQ8;rOBui!)<1TxUsm_B31;-8plhjb^abnx+uJXpPv4PG;fN#f8*KmAG`AZ(*THpz_rKf!zisRx zVQ$Fqx`1H&54QhrYeR)-FZ3Px6plCozyJOIfB(16pZ|ZK|8D5;*9BY$*A3qPZvVe7 zyBoYWWO!Y`f4BeNkl}R!*JXEu_kTk9zpek=P~htV{%@C`seau2ZSogFUiyxF3P&7) z-|MRT2Jdy`H+cVVmp|D4|9kV_4HbS}zzr3CUBLgh_3xL?%}0x%9?!rW;TbZ5A*Dru zm7c{`wU*J8Th&R7W}a2OiqV*@!qSaur9_~R2qs7bkrF{mfI#R^=T-&&ao_j}#4^ZE zB3>nZzLAvUQ(YvwajY6jF{<{8CwT@G@qjMaA!~xG$&Jq;M0L6E%K=Igo$7A!a%W)KoYn-d$W3DU8 zH3R|Ai0m@$i0_*y<*pK6%BR=)t_jQ?Hik zNByW5e{=AUzBzc;HwV83S(nSa=|_F~I=|~W|HbS4clKYK{#V!eS6}DN!`xEvxOG8w?LXonfXB&i;BloiSBvtUM#py=Z554IqOK|E zCMkAPqZ$MB_pNG7B=<^VpT#N{J?;Be!Vc%Nu5`Hl&G%wtv0!BRzBI@_+UR(+@#@Tk zNvqYW4res$B_{Vv)7S%6+k?y1J7a~obUWfuRmhB(P9~<5_`y+=n>_nr(zr7FjlXvG zW7=p|nbxNHrIg3R$m59SQLFm#qngL03G)xuv`4LEgXpus;ctEn68`}bKPpLF)8wdW zQipu#v}(V0TDh-biKcY8+#dlZc!{@v3wAOwo_I7 z(VDi$s(D^2VY^lEG^YI#C3zk!+QH(FQb{H+bWC1oSD$!0AflRS8zo|gRUOS}_7DeQ z;&jbx5-R|Q%6U_A+pK9FfXM;5h4u|X%tFeALL}fitl+9(k^-fF%^E0qhcyjuiJ?@g zHzAVkN~!K!=(um8#N-gMjajH3E6MOoyiW~-I}5Uq|E|kO%K%icrtAgKsVTuT@l+gH z3>U&m7_=aeNX1QZQDmUEmMwC8vd~txNJ>uyQkN609sU3d1Y%9#3ec}x>iG9XwslJb zvK$=g^$#s_JhaGWZ%%WLggm{-@$@3w!6nyb3klX;!|>oD#~F~30HdUX6Rl!YzDI5& zvLm;lb86nUUe_T(op=p(ShHi|Vp~|V%oKGY75N6H#fu#Wm)MFIUrTniq{|nhq;mHI z$>{23lu0gM+Jjc~lacBU)B-Z0NCFR?Q;wCW(OV^Ix!uSSRCxiIuSMnLV#k3cwvz$L zMv>is3dkf>kZ-~@7#vvQ;F@g*0{H(!49c4cgYp1W(_|K-8VD+UW%IuZLm;`_9{*J& zj#@Pbtt99{x#LLHjv)90RpD!P_?m4q{#j8HZlj_k+$Lk28o)Nd0}W`#ZGh^=u6li4 zQo{dQ39fIt*Vg58w^3a_7ZB^8*5yC%=mB7T|D;9T&{WnfrKWO?u$p(QY441{T(`ur zc8RTSNm?saL^Q#GDT$RP9GDhuO-F=@q5B5?>3W8S2$0oYZNk@P`1BGg_S63=Hw<#} zkgIXZgW1)wR4X^ikx@<>c4KI)ME3u%UEjRav39BL=A|GT-EoP2G$VPqQ)g1{=_N` z-=Q>XeqhBA6BxSDCXhf1lzYbqG;{i!2QY%~PIUZbYYYN1LTr;FtmN_PU$7Tt{VOAP7KtH_9ao_iB4+rAH zu8DhonPbPjw&w$J;n&0+T;@pqciX{bS64zY(jHx2#;Bw{IwoGs@^_4E;%{6Cjg^*0 zp@F4lc~NyK$6*;+$H*&JS~^LK(Ap|oP$?=es;uD(uyR!YA9mgax~VGrA3y0MeUXy1 zP|_lBlc0tcN-5Zc&<09rOM$l7mbW}cIwTEDgaH#GO2d(Phb?EN`=@AJsj z6v~IwgI%MripA7|;hWb-yQND6GLv7rL~bkT(>7#@aMu!k$P&!@m@#pM=g?~_yME#@ zsEP3a8&)rB>b+PMvfWUue7o|=5XshO#(LwAjP0xg>jak8YuJL}M~wE_;DX`k65;3) zgXzDJD}G1UsC3yFSnbct=dfqMGP|g(sHBi9%PlF)C(y6=^aLwMoSq;i0sOiE@Ul}e z_>lt2^GeI|IUDJd6=X=!I-_WIemQORd!OOccCP`iaMS%@p?rH5H$yA7HZ;^xJ?V;@ zL1;IgcVKeIz(Du0BN4op9HMP53ljlUoK~CzW5O;^1f3s8y zkwmour$0RIyjj?JGk@pJtkW}8f!Xs??+LU%cC+x<&HP=9Qojn+?7Uf!e!~yBh0&jr z6_!KvSJn0#t*1su(x9(nD@Yn_p(q43Kp|*0RW^tXUw89Wyb@yyuS9skD`kf>)f;=5 z!-dx|hwD!*rl&$ZaJcZgz^PF2Ekf}vhT;Ft;d(tSjz$*TAmC}`GiDWX1-WI#gl4{p zEJUzPNxYhy4Pd?+&0;#4ZFH~{#`+t?QFZWSV;t3!`ZJF6kUlwL>|bYyAjZTxWJUib z341P@A^X?)rYFJ#c?YApRnXkZOp8K&T+pm$q#RCF(WIy?)lW$mG(aHhx zO)uZH@@=qu^YdLJKT$q90?-{PY!K6ZFx4I7MJJ+;G?kj@-rs`%6aj}9gl?EJ>TwC9 zqYew%j)|_t{Cf$*n5(wRbkMC@7Tq^7o0kgarF`+y%ey@wciUU-7vNhk2-pk`V)Oc~ z!t1wEM`X(Sxu8BJM~drPjroFBV~k)k^4~CKvx(Up;Q!OeHfDe5>>(}{#HGB4DH#9- zbY6oU0{M;0sFr>C`_4?7WrAiIe{C-vKxO zQgS7Xl5@`zxy`p=7=SbdfqZeP@ZwUMyMPY7mQC_?nB+>p=}uLtBuyC z<-(@r{IC_Ff~gCKKKJ1Z_~sQudnL!Ou8&VI7v@&-rFKnTjUDc323Iu)OS68O*t)Pay*QZD3tJK#*)n!?M?)^>GS2d)s z3u{*j+LioUD}xfC$*&E{uNcxtfuJG&<+p#I+INwE?@DURy?r`mw)BaQz@T7Nc$qD~ zs-wTttK!{9c2G_KJbzU+M^;ibNA@~{%q6FnAYcJC<=hsm4))L+-Rz(V84hQDqgn8d z^=G&!qVuwtL4+fA5zYZa*dhm2@@hwJI~0Y12s8xKhd(-f3q~XE#|G2K{guM~l~6DkvS+F7^aMXuc9*Ygk@|eD{j6~Wiq$^sG;6FRY+=fCu-D8!~ zpXSiuTTqDJrU!ewZJ5#=Q>Xi@h3~@9ovnjcEA=ZW*O-*2PSg(^}_@f;1Y#!=Fs5Z&f zvQq`Uqz|X;IOr?rGE;&Hp_hX#o(0GBh^&fa!XcRVCcKnjcj~2UH%)#cU{V=^e^nGl-?5|D(LM7#iLZ)No>zFtO??c?;`x z3l`H*5XEar!?n3oRsF?j|y#1L9V6{3gsHFea6+Q8$cI-1q$>I_coUo&W^ zGzJPfmay271cW|L@D75!7eW!W=x~_7;?zk(Q(;IAFSWF6AO=|kJH3I34O<9;vd?<2 zd#%vDw$BLnUnlfm$B($P583c_!tix{$g+rVi{aUo-|f8bcE*JC8tSt5uM=k9&fmXIZo~d3#GRjKZO{ALu$c;J`)Hl;)$RO8 z{x-}vA#Go=wy)MfKfeY(Xt0idqgw6->xdBQm}=pb8a}2vwXP0Of$S$fD?yKhSs|Eo6-WF5~3uq0+J|HA4Czt8-64F2`8^QH4;sS$3g;cu(yH7UJD zNM|*4+<^!KPzH+I;+NgW#J(gPd@!ha-=??!GdH!IveSrV-qssUazF%*lsJxB>W_&) zOp#WoI!9vY#{jhgj%2yif)m|DCl}CZWmVE&VRLzDvzj-XHoy0 zPEP1J4xo!#{|{_Io~LdXp1PgieY>o*Jl?%N17*+$B(gA%)Wzv?+(~0 zhfE(gqbM?HL!*o;D-T()mSKz9J_aHPgK@yTA*72?aC*DwHP!E_=ql(RSHmsTRf5U{ zy$|{OvJ+Z)4#L1<4w4tbhI->Y43zujIViXgz6W#A{lPhC-krj{JK0$n+n>ol(ZU%* zp6CpP6A;W$32cT!FIbfVZY+f}0y7jl>!vTJ;bpXm>3pu4RX9x5#hOL19`KIKsobJQznd zbn?4D1p4@&2@d5bEew13cdYUPi z&UD@IXdQp|2Jri*mUq?*@2uyW*F%_0BNNaccx2SsiSI+`S_bqG1s}>hBu~!4$|Sim zgv@vqGT7knH+_SUz5$x}dto^A_QC@A@?KCmsBbT*FI}trT`r0q{rM9vZt^Y}JoH?U?i%RALq6=K@BOq~S^GSb z_7d}1(1I271A9$Do)oCpt)l$~?N83n}h+I*!ujhsDCDy8~1G#_HAT8LKFn2M*7pLJpG`@khrJsqZQ;9m2vVb zXIxP^7T-m9QLUs@euIs@e}=^sCx42H*(+%IQ@A-r6;tWUZe<+%9V(r@28Q1ZYcIKN*(@yH z%x~F@T;d-uW1T~O=({+*e+m6Lb?0Wf(W#?vbKxBze@HfN78*D6hc`2*u)PiWtyg{r zhc&QKoI-zLq&Xs_A@Gh*pC5|B;$I8&U2R*o2&1;}qqe{SXzcyN;p(MC4}R=m*hqb_oEB{Q^d>OG*=!K1QY}m1QY}m1QY}m1QY}m1QY}m z1QY}m1QY}m1QY}m1QY}m1QY}m1QY}m1QY}m1QY}m1QY}m1QY}m1QY}m1QY}m1QY}m z1QY}m1QY}m1QY}m1QY}m1QY}m1QY}m1QY}m1QY}m1QY}m1QY}m1QY}m1QY}m1QY}m z1QY}m1QY}m1QY}m1QY}m1QY}m1QY}m1QY}m1QY}m1QY}m1QY}m1QY}m1QY}m1QY}m z1QY}m1QY}m1QY}m1QY}m1QY}m1QY}m1QY}m1QY}m1QY}m1QY}m1QY}m1QY}m1QY}m z1QY}m1QY}m1QY}m1QY}m1QY}m1QY}m1QY}m1QY}m1QY}m1QY}m1QY}m1QY}m1QY}m z1QY}m1QY}m1QY}m1QY}m1QY}m1QY}m1QY}m1QY}m1QY}m1QY}m1QY}m1QY}m1QY}m z1QY}m1QY}m1pZ$~fNvPh6EdaPt~C%cqE*+b%}^!ha9u91zpmBLs`XX&^Oa?UC2MlH z)7~X3UEa+n>bu0`k>1X(SLKrURa&R>mupbNuCCV2Et^L#-!i(&1mc%zgNqdVR$ND1 z9liz8THoTATl>?0b9{?mX^m=)nm@-^9<8M!+4rk7Z=1{0;G3Lbar5KGZTc`{G=D6E z+?An4TRcCBFqI8ZSbL!@*(ELrt zp3iB@^2;l7%PP2un%uIo+<9DnSy^crXV7fPtk$`y0(Z@Mt4f8md&`k09Y5a z6+ersqSZMq^22i4X4mjjM(5i(l(j#*+zyGD)hL_vU8a-G9i^L{cJ9o@Q944rzOsE9 zw5TI>+Uq^y{PfLla|0s1x>$np7D;7}@VfQ?(y7RXhjR+;T%(9C=^_CO; z_hsNw+>q{Rbh>?$JzmNbEAxZ(h`X)P)!gyx{>PfH;szI;jEKzFM!ULfuZ?zc z37wKgP?P2kPidi85JREp?C7!+(J{L7K##rtfMi#p+;Bi@bIpk-b`t%SbV9ScB^oq2 zgb?mxXAbApaNjjhnH?#ThK*vPzN^he#+=r|xp*>D?BT@jVbUUVSc9uOi*$6GaP@YZ z`l>zD~-s297lRI2W*up4yYq&r#PVGeKI<7$;$gcK#><0~I$=6^DhWPFS$ z3WLFTHq+1eGZ@D)M$p45U8+T;BF8-LeqzrsDcyWQtjVyRB~m_@fQo+N@(k;FRzUT6 z->$)SO@dx8rJ2>zD07(8WpPOvR<&fy2(!4HE>#3cCB-pDQtT1OPQa5P%F^cB<(p25 zQ^SgVlaD-*Kmjz6Vvrb~EH#D|8+@h4Q>6fkCJ&dC-=rDh*OWlh?Cz}ad|d?0OS7R=2G{vU%HRGjFT+r(m2^7{*T3l8-19>9v}?3 zg?DvlMPzhmMWU?MbZ144(M3bJ3tFRBJ%A1Cz9X#r_HdAaBogFmkVl~mx~!Nn@UZUW z2AA%6onf6$O-jUY;*Fsg_9wnwu-PSkHpZ}Hyvw)XRH-4}0tkHX`pQq0x@1iZaRKFY zahB9mr6x+SD-8(HVMi~j-$T(c7=HWb)NlBu%78~m!Dg6iXSQ53od zF! zlGu<*J=O0O4KDHhF~EUUak20|G`q*>e?VwQvnT%C7*U@Iy3`veQ7XJ?GY5ywn=uat45+#uQ7 zzaA%!&fu+MsDBag)G|FsG?g2Unb6(AVd5a}h+q)2OjgxN@$bg=HiNj^h#pe`u5qNf z`wr55yGo2UiPutfneF~2RHkMJ2vWvi@P;8%OuB~G3^7hNoA5z^Nx4?7RFn~>kCsXi zCJShoG`I|{*EuMlY5>arb`Za4ESN(Pb{Tp`Gl~eqpGLY2)^QL;0(FDI1r5D$mKqEJ zGDUc`93tNjLOpVatfw0U81yg=2*xmi28gKTzaQkG3ed6}#=0<_(y3Y`V?w&!if(6) zb7A&o^6N+QmNr0T$&Ig{8?iWAF>!GSsa)&w1!-Ek1(hRZHL4j z1hqL@Dr!2P%zv3|STUw|JSl!z;RdE#FWP?hgxV2fbdm61AniV8;@2cgJ?3yeeJm4@ zrTPwp8O$Y)nP_;mI{2>9-iEu8L4J$xCd`*fR&9Rq!kiY3IXqc^v0~v={aL0IltV_O zBgQgruiGs$M>5AeW&%VFwUlVh4TffmHQey7rB`v;5wQ}x&LI_HTubF~-SXz*&2P+c zZFzq2<{h}bvUu~$b7&BEpeKD43T?=wi0fwBv$@GU93HutJ7ON*h&FhgY7$IBH{oLU zx`^(zk$Q6|Wo@RP60NH4wPB!31xDbBv>+8B&h^6$)z^ySP5TY;S-81g$SS|FtU~j* ztn#7~&1+eCrRAD8v-0Q8)V!OOJEOEvQ!%_KcXGL=DXXZUXs)Iut6)ZHuI96>irf;- zfvjA5JCs#aTBi9rt0=c*isqkLMRV~qZ+KA|o>)j-e))I$GSHx->U@s=OVy2beY+~# zt`}9O?D`hfx`}#TwP?J4kLr;ee*X=sxfXus4XW5&{ohqHC+Yu3<+y?W(xkeVUH?e0 zm-j3`PkCD0ixR!<{o$T9(edio?%aApKH`6zPAiVKKe9Kk^RodDy10z=abw11j=3Q} zEh9stAubwXWTA^}VYx-zXc51e(CKWdwzxZ)<4L%0@lBanwR!Ys zWH|(hBs-tr-X%^QZx3t#vn3~UlEog@v;&1)OQ(x?I((}pS$qpHQ4O-Txm{vjrnqjR zc;|TWl%0xP)bKtRWyqLBgHI&Z)=ga0kQOxSf8I1Yd$G7|qWG6FdLNy@yRazl#GEQ? z+`va#EuIdfZwL_+spunvtX_LWN0%cZ(bSpKlwxgjbzs7xkItr4JQ-pwPRF3yw7}Pu z-p}b6R%`NqUFmAkV&$#Yj%JNri)^~X>astb zX|{kemQvau#6u%`$gM}Bpy>j+!fSneuc4pC7H!$K*JO)f*I3Iompw|%883cnP4CzA zxz+6&(qf3VI85)D-f^9%J80X#FP7qBi?h7u5|3F=)GtTzL|v6F3RjoCR7@bcbJvOk ziD)NoPg+`<*pG<2!}-*N%ZKucXYf%ndz^t-vWO|CY0`Mw1tdpZXy0KKcUUL7FmLm} z84m>F>pagR-JIWAsjJ&rXRMPN6cU91Ai1D9(o;)L-kG8d7NBBcp8 zPLM`5l}%6|N=!+V(gnwaDzU@be)ohf$~%tzVN}Lh*LJ4I-dB6H(z?MZluhWzmrc-| zxqm{xEwZmq!E*NX3D+Jyl>;eh!s8GsJT?K6jyyi0VfdNXCp=sz-elYGaG@YfkUi<* zfeGS{@sUmZ1b_zgud%og^$|@6Ch)?9>qu3H2WqC1teI`5YEupM0pu~HufXTH!*m=5 zl`@N9i#^_OW&*|laYfQog|D*V)pJhOUmTsCH7Ya8vcV)33D@Stt4vaXa8I_$BgW+% znUpOK&avq%UFr<6a(t(It;v(qG$UK|WxKQTO&gq9X=hevQvoLR=!3Bl?Q665+18qB z7hYr2TKKQCsSJ1fli8-M3|pe*y^Hr`^R3w%a?a&hJ&@~8iuN$M5W7&*^mcYuy6Mbb zFnwxuL%o4QYc}O-dV%)W^i{TfOhK*Fw7%&;wk^RT-jf5H5ajp(4^MjB4RCDtp)`k- z{%M|doI|qh&C0N+eR$-jY!?Dl#&kar)BwjF)wFi=zvvvd_ZN%CI~zas~c)oM4j4$Ve6Rb|<{w5sz&{l|xLuzjJk%V^9k%jt?T^i#DyDylx} z-a;3JPtZ(Ak8(IKX4yLqP8zn@PClDdn-n3tHue61*TcWW?(ykSHw+5?s5T-Gt|r*#67hm>}7!uTU721H}(+G87TG3>K@5M0A8 zbS~Rt<1B8>MVR9};#>B|yU?-B(1w;ycl&Sc=$%rwQ3bu$eR@~nTZHU+`Q=w^zx&T6#0y8LI{wfdMDsF5S4}YJM>G>7sP1H9 zeDqKi(}8Ig=v#Af{6z7GiRcnaLaFwoiI`#Wc=N=_i&N*EKF>gTjec@*PsCq9lZxcOHnLZkKKu?f^XVZt?=XpxN;XW@5@pYY(t8*cKu zM^@J-a7hq_n!azhi}~RevbQV^Pa6~>+GKj)gQh5^0RbpG#TFl zPx_fjuKw*Gcg0Pm>mO}in8 z1+yAJwn_vC2%XV~=@rqC2c0M5+k|f}z5%__AyYHkjysgvO?AG}9?;N*!nsLUoLOU0 zI!%?=|A5j3TDM=W>K?E6^^kdAV+VsnsEi1=TVLSzb{N04iZ2<&ZwKLE?!X|ouD`BB z6pPwy$$BRjo8mObh>Ic<^*@0?{CSYOL7Yn@&U`@{+%zWF-H@5A=T~y3*xoO#y2a)5~JINXDmb)yk7}sd%}@u zLz_E5>?m}*Al^WJp&V4WR%?82vTwngl>_JpHAmj#sKB6fs#&BtM)&Y!@kS!5iJQMu zpI2HkJHM==sHBjq$e&xmhDRKIg9jF8Mat@VQ{SZh8{@TZv9Z7t5ILM2p*nz=ft2J2 ziFSvMz>2=2B~{a>x!@2-QED-U=%Vw`x!YAbonS9Bh4#yF1S%92%%cxPy1z-{OrCf` zi8H5wc!LyUj@UOwueOiDfac(9A3-m)v_Tv`rND$S7H`X=*BeQ{4N@$}gW2u!Hm`Ta z6Z41^iL;K7jOJ@M0P}uMvpQ>pDJ#vCWi+MKCYs_^+OJW}B8@KG^yfBU6KkPFr~^@+ zDQl`JtIU)&+>~WDb$FV+Ypx@3utqn0DH8np^KFUoJ=(uyjnMDT8mT`j4ycgKCKw^k zEbhXC7%`Vtoug)T=18&aDuV}F9~VC;KE7VkTEp!9Yn|rkLZ*!NqWhBTetZnZ#Cxmk zG|`_!~~A@PV)edp})>MRgGgQ9Q9G7Gl-k^Fu{CG8fiZ4LcdNyWssuL zlbDN*G}=aT15E7Bz%?u+#eUfA3*A>>7+(I#_pi_UcdtCh9?s5HH_MTc(ZJPdA zmzZBb%`0k}RM6=PJe3NW1uW;l{Jnufw?pF+#}y#iRe?owBC17ymOl4%*J|tK>m8sVKr@j+YM+63NvStP7E`(N=srI z^!->_t!=0^X@5}@dc}BmArW^*(*zH*sB1(^VNEMJ24hFF7cT8Z&aoFc&Et^(QWK>m z?GlH?@xx&0dci(bnrKcz3NhdSK1LdjL#RDA>kZ=6BK@aX|I~+NJtSI+^o_OHN{eYl z=JWb@^lvq$h@aT3{lu)I6c8VIx=?=(W&Kmls;*S=+|-Qms)~`g$4eQps=sB>QjfKD zooVg*Msa+RXf2Z7;&wwHDW~bX!mM+U&;NER1n^%^1qGU)5Wb!&Jw`80<}K2<<`L4L zGJY@JpD{tYn;XImIqmOieIt6OEZ>+Tqp0?5fd8MH(F1L z115BchMYFFZhi3-{q=a%=OPl&Z$78Rbp{uUYdIG|YrxUwvL_Tzao5_zO&9@F<6TG2 zaHWHpmWenFv`)9j>A$rP#NI*`Nn$o+>yJsc7UZFh=7!9-Ykrl=Je%N5b>D)B0$wYtf)s3kX@5^b(%&JsJq(~WD zc%t^g^vUkFSSOWpd|J4^3ww*fle}%{NNu9M`~>UWG5o$K<`eP?WI z9Tx?HmT>*K6LksBmPFg!%4{IBH(_v&{=9v7v{#o|DJD)=hllnQ4HkaKG;}h(A)(E+ zS>&c~>7qY8p6D-*n%+r&^^|PZuzgVpiAed=rx#BdJlKsv;lc;&FC?;`4{y#sm~lvo z-7l^|D=zqpv8qdv$}*1gUEGNM`k%``+_mkwzj9l*Z+C7drLSz=&b|Du^LhVs(Yx<% zed4)yxu>4n_ME?}zI@yEox7gk-rc(EiEU5%D~q?j>D>My_snxoKljYeZ6Eq;bGL7Q z?nCaWtuOnZXYAaywJ%?NVQKlS$=Djbu#L);l_)4JOHWTP!E(!AL8thFlFO(<+RO4Q zW|furiD&JiJ*IOnzqsp}Z9AR2E~|c*>agp@H`C?5@}Apu{Wk6y=PvaB;#T6fPDcbeIw(T#5N|IUdL;0-Ye82EM5B2r3nLdzq|Up zC$~QHH|~WO-}G0AON%!;n^cBPE^&LAS9Pf;#*0@P{!rHC@rr+4h#cU><{U&gAAYY= zyxS(O%uZpy(>s#z3oqI{hJS^(ZsgQ-y{s~H7?OW!-OTlG-3XaZ{BDmr1Z(R?^UwOz zRIIphAtcw8fm5X_A;eZpoK5FTF@2b%LSb=~ZF3dkkviKYJ|h_HbNWw$@^-pCNo{G0rcfA2K4PfpksBgy6(E zhS3h;F1Q%|H7L+!740F6DgY7GI^(0ou*&#cv73LS*kkxcMJqT-@3T+I{HBC<5+++9 zUCWtFSd(qak+kS%uzdzqX??L>L+@CxNh2ZK1a-vBv0{Bm2TGVo)N-FdSUdMZ@KFMf&fVEN&xRw=UqOQ5&U6=%@n~)D%3@e(9sMkeb-o)@(1Q zod)c%-{^n342lovkYao(Fj$-G>@z`^f^VYsXDH|^rLdXwU)rZ&B}28q&u$%Q_)S^& z@;dya*GAu<@Ya~B4Plp6tB8nKfM`qj6)mhf;<9SLoPhY0zCv;{0sr{msJPE z2dY&}P5y^DhA^Es^`~{-8bbsM7imF_fj^{7p) zTWmK!x;TmWrbp|V@mOe!)zRfya-)X(k^Nd3Tb&wTjW=c*eDg1ky-^r@BR}p&H0emFyqk*2#U3_(Loc=Ttof#9VS?|FHAR{*6spQ73RPt;AYi<%+7L^OsnxWc zUM-t<9W^hG=*pNCp#XN22``uN9c8k$0XoOk=-MeAf2u6?x@zBo)N0@K^y(P&hS4~3 zcbRZ^nF|fUZbH00SPiM6)tT~;F>Q>Q)u~x@AZ*nDKdU;`P9L(WLsgwsF3c+D7nGyg zXvZiJaXZGAh)<3ZkBpjHG^#wWv@D;16Ti9Oy|W{uGB|%#R&N!duuQHtL=j^FgJ>Fa z7eh3BD|NEmUtkDA-H&-B0yvt8V@LX34L7`_1m~m-)M>BA(BIE+8on9yNa#>fZTK$S zSjKdiU7cD2Ov`}jY+zc#Fdb1LjHrN0z6AxSpN9I$tp3Gv;l*-8VXtRjtydcEva_Y) zRW~`p9{j@^ZSHbVAFhmlgjVU_6+F&BaMXY=? zyIx#}lx6&Bo#9$yl-3y%i7||Vdlit3>T0oZX6pQE*+T)>d^*<4n3zg=6bk4lTo)V# zIeg^-8>up`VWid743sqhr8)@8>{-I>SfH_X z?hC3nakemVHbhX#co&a_Mqw^icBMFUBlKNN_Gi#g3WP{*NomE@{4$QxOr-5HFIvp= zIJ_!ZGJ?poFhrKdLdr%EguyUlF$K*tiSYrZ`GeKs)KR@CI;fw`>*HF6Il`GaykSl% zYb)u~mN!SpnZxJJp|KrLt@kZ>07gC-H1g-!!q2m>s+J$15QVlfg|>x^=~c98VA?cX zRhzasLhBs9EmWJW&}Lgun+N6y56s~|o=w9IX(@@=RpO3O1{^P73@{#7aEOEkX2B>xd_A|fuRV;iN$!g&O#9jcmZo4| z(es4pd91J4tMs*xNf6||_JL6d_BCyuFl`<~Ue2j&V7%%!6N1fq%YGbW*3 zPB1Yv!2mtFga{f2uwd9ZmGK}WJtB8@5JHaxJ9EwxoN{NMp}sxX*&pW#f1DRgBy`9l z{X;%^9#>v5i@tq4v#6{npEKu;;HH-p6;7?VzMRV|EuJ~6BEPJhx@u^!($|&|kzC%a zvhq?Eu`&UCg`NwSa}}jrF@l+S3uC1%_~e$A&MHB|l;b`v5oT9OU*Y9b>(0>6*NO{3P>q4M08X7)w z2qm-b&?zIL*^U_0tPbyFu)2@`%_l%R$WPmOzLT4YU2-`mV~8=4-!n%8rKO2Ki6#DP zLK6SvK;j?7nj!*^aKGS863^%{5n!UI4iH4p=@c$X7gApA9YPmHl{X3bH}RD>AxZcb z$XFy&@9v#Q{nP(rjPfx`Nh4#>VdK}#-M^L7$r5?$rHd36Q(wc)zYV(i&YOgtH^D(D z=S*Te!8pIaN}A{TXcxUuFfHVx7cz+_Ao2U4#BXjAzPX9dXF_ds-(x&Q*K}C>(V)!? zCQ`Wff4#P2p)h0i41(1RHpy%e$Z;g~l>7wo7;CIlWGumGQU?n2I}p<7fBppKouS;WPxMjej%4^fm)ZUnGm45AlnF;@!6h z?pv5^PD6bO>gAj`;TB=SEpqO|?kMPag8xti|KSSG|AN&xsi9{jp-4ha5Xmdo5X!)* zN>Bh^V@AgXLD%)&EckAw`}3P?49HN+Y7DF49s)&uHT-}cD$&TO^dA`XreR0msmzzyr_Hofs94II{B62EZ4;LY z3zzZ}m-73UQq9)X@V6|biA63Tp~?kJxoc`tm(^ep*VG`6an2e%rmL<=y*ac22e9(_ z-JP;0rdFdhaJJ}8y|X5Gz}WZXPFPA!7nY(2ASBDI^mi5_Q`RET5TXT!T0R^4FZ;7C z6OJz9ZOddPYFn?8H$zGPq2--57){tfN0S{r{i^uBCxw4rCTN!Pe};H^#&|XH%pI7> ztF^jluvJn$YI=`uPc0KpE#ng^($ig&Ny}YV24c>{!81Scu`r8TPM40*=iodZ4*19+UjX=2sq8`nN58!*1G2 zA$KJ|Z6%#?k&j9qmNHP5X0>hsU8vguB;rW$*{IS?hfh9C}uC&CTOW7D*rBy!MhbPEu zkR42coi+Z+fF8AA*7XK{*~qID@+$ecmEzzVQ)2_;IJZ)mTgh*)fR@2^3(}h3<~u8e zJ1hCWu|R{jWfSAetdG}ZZ+jV5y%zMg-&G2~tCX$c$E~|epz+RL$B@I!h=dyG6jK&D zHNH_3>XcU|pkS&3SZ`bJ5%+ ztVfOSFraq-r)274vE@agV=?B({nRR&R8Or!wQs>YKzTP%cCdrA*H;Ozui{7D7Q{|Y zO;^X)MpK4g=H%Oi&sOu3Z=(UQr-rWUgG~!>6Ev&&g}0^dsqqt6-6mAs#=p6i+Ox+$ zN!?i!s^aI2=aJhCD*8Lcm1A|)AJ_IVrhT{3EzBD=RDRFr|2=oaYN}?$YC3TZI5#C(O4_+e=EHD8ZTV`Y6 z*h560rO-4cV_IJsi`NL>uHhF$1|3ZRaoLbUARGLvrq-v{2!=KMQ~xb<-^e-4m=9BR z{Ma&wxYpW=zYpebvoPVwo)NA-Z zSM?c^*Q$gY*7C1aT@L3J&T@6Dd{x5QD&F_sv-h=cvAD}~{e{9Cv3vqt^D{{M?n^ivQ}5Ks_M5Ks_M5Ks_M z5Ks_M5Ks_M5Ks_M5Ks_M5Ks_M5Ks_M5Ks_M5Ks_M5Ks_M5Ks_M5Ks_M5Ks_M5Ks_M z5Ks_M5Ks_M5Ks_M5Ks_M5Ks_M5Ks_M5Ks_M5Ks_M5Ks_M5Ks_M5Ks_M5Ks_M5Ks_M z5Ks_M5Ks_M5Ks_M5Ks_M5Ks_M5Ks_M5Ks_M5Ks_M5Ks_M5Ks_M5Ks_M5Ks_M5Ks_M z5Ks_M5Ks_M5Ks_M5Ks_M5Ks_M5Ks_M5Ks_M5Ks_M5Ks_M5Ks_M5Ks_M5Ks_M5Ks_M z5Ks_M5Ks_M5Ks_M5Ks_M5Ks_M5Ks_M5Ks_M5Ks_M5Ks_M5Ks_M5Ks_M5Ks_M5Ks_M z5Ks_M5Ks_M5Ks_M5Ks_M5Ks_M5Ks_M5Ks_M5Ks_M5Ks_M5Ks_M5Ks_M5Ks_M5Ks_M z5Ks_M5Ks_M5Ks_M5Ks_M5Ks_M5Ks_M5Ks_M5Ks_M5Ks_M5Ks{Kzl{KYgz%h-mm>I! z5&W1)J}is_-7;d39PVT8&f>4aHoDM8qxc6U({^Kip8s!nyp9<$S=z1ZbjP(e}` z5NUupT1w!eQ)iR;Ti(z3Yo|CiQvYY$5+e0*J3FO88N8&kew2DLzV#0CyW*lqeuT=> zW!HeJv(4S;g5nNmOWF|IZ1TRfi#}dsLWOM(c|W7e1>3~;ROMo;3Px3J+Pe7WS>k(< zwwuV->^Y6ihdrsKa{GN#KM3}83g=KMR+Vk`wTR0S!Bb*Ks zFNOg<@tsI?GY57p7SE6dpr1*;8I3Q-Af7~biDSd7`A_FQYBS=Ty; z8ycO%dF+7IZCC3PJsr)4Gx56b;#IN4x2v(uZC{dkZy04;7w$Bl&s8m=nV{> zi(#JB#e}t~KjgyQ4K6oGTu=&iwB$+MAHU@TcgykS?9Bb~7;{y7e2k;fO&!D*M%9ao z+F*@ww!{-E*Ok)}ui8WlFiLkO-T*~NENIv7`w`Yi7i_9;xUiqnG&^!H$Wg&4BTLa08a-q#NDR)nTpu}Ap|lKXn{#fFq=m2tW7j&v_F6sodI@k zY(MP<&r7$ig<-}dwDf?jklak8(okX~AQ%26JYN|OzLkt}s+zfkal7i(<;Oc)3%PLB!UWliHL7C?l(Ntq zuG*duhF{{O!`bF`iT{ddv1{~W#D2t9K@P@d{IV~$Mc?VqG(*^3gKKO!M>7~c^oiIx zIAWK$I+8_pawkm%)O&Qg$Yh7}V@Hxcva?H^Kd2KP>SCnTjFda6{{gnQN7A&@g<$Ly z#R#}l>rvZ6g1dVpqVvP{_9z;#!#&V4OXWs1e}Jmx9`QxBn{SW0DTx?fBFQwoJH+P5 zr2WZlw7l@P>qzmG5hG$SjxIW$s^ui6#I$VXNkp?R?{wth=EGBp2bxE87!cha&*8?y zK=p9!;jqK4PsX+$3db!Bw;`Mt7`xl_?MqhrrY|HQTG#s2+Sa3{A>2=B0iVmhOCM%` zH}gg{M8iC>L`_36`qkz3=$GdlIPTkZ!0j@S{kr{Mo)yQa4d(qivR|FqjB=y)=S$Fj zVTHq_8Uq(ga2Y=TQg{B#v$XjJ+HBbWC8$Aq$#58SX(^QM-2@lQt*M6Z4(LuEP+d>e z$^yUPyRUR7zrr&Btfl>45@)F!GWR0LBcjBAL?SaT2aLe*(ZVcZa++f*7AB@7*1~17 zh>OBZDS)c@vzmf=C>bO0X!c^%&H)oLrQGpYYL05Z>OxeYV{%BRI)vw7$1qDhwgHlV zF%V*`U>bCI&yTm_J$@bH`&EXBZ_floOXvd7?H4onKVMgpIw1%T! z{Xab`u0{Dc)9g#XQq3J6dswD5R;@~rG-f+YlUmFc>2ve-(kQb@O2hq2+)ai@Vz>yy zGck!`PK@;n@!J^dK+zeKt9RMM!JVjYw5#+#p}I?KkLh%`HM&v~r84v2gSm&KsELO< z7AFz!h~!14*iF2rZ<_~ncnuNXz{hH;?W)XZnjqU;_AFFnMt##DS0ETEMb-tA?gr{_KVbhUo7jVKhlxZKC~Q_U&u09{XhEYn=p<#Le{^| z#dwV$#Ty&r_3ItY>gcEpRigG{qbW}RPf);I`vrKBI@S>O4V>+S)*P$eDbCPnFE!|= z8p6M^tI?W`ul8%E<}j#fufqZh6TwF5OHQrh;Y^jp*xCnhs{7{vllkIsjnyPh(TJvgCph!zA>1ier43YZ$4~_#suwem z0tucU0|e$y8XX_SQ}x9+`&kdxQbW0Ou#-N1vY1{QKjfk|eZYk`=$!+(5A9(VeFKC+ zlyAXDSb#-SiL-+e!xAm6I;|I#zVeUaH|VoNJ02Y*>kM>x%^q$D>-0=&BklA9j$S|H zq6cz9167=Mcpf;6a*T}1NOYXwxGq+VM$wFX?mFPMxa?C%PE(-<=nofX!_OLB_KAAm zSvX_nt;DeRe;Ryc9^y4beSfqc!~5KMpiZ(bWn~|5 zo7xT>FTqx2H}^9dy5MTqtelnE>(drtOLJ+{8|L^1NcNRkwO-q;#O>1U{U6*2c(Jmf1T~3ad9hgoKn^L#T;;_c@7+>vLGcnEzRquN#uYVopoMv*-J*X z*k|Lr2;XI+TpgJO@w%QKpbjWn9YSV&tE0&hpB`=3<#64Jtp!3}Ji6NG+++^3_hc?3 zZ4{Nugk*cF#DVd`wejNo_{>-1GarZ#%DWq)S_`%a563rTz6DA4n63s0?#$uNA2^;K zh8|z=Q@j!1P-Q1CW-cY@&+T;4L{yfaS6VhDoy?q(JC7x%|MqhF@=s$E|8euaU@iI0 z&9~gTblLJ1D_2#HPE8-h8H}dk*IswMc|_^R8`I_#&7%1@QXLf?6C2l06W?E}OGq3r zFlmrJIi+k~#mxLqT3kZwr{ZUy|KnfZc~1V|+uzoH;ERrfUmiMq1-7tB{e~Z)qkLb!~m2d@9 z#u#&FRg`jgF#i9@_A5<&c+fA&WP(jIZ~i1K?+CfEth{2@>^XCbrcIwwTv9qScXHm8 z{DQ)%V=~8%yCKVBy=l=XE@S-2biFn~mpEYJ=!XYgiX>^Nnh$q8x~Cre&u)KV+l#L} z|JR)je|z`MUCyVU`^z&=ZGHKPCj)V{_puzVXGFF=X&~j_xA@^fwO_IpR?@lU_{@r%z7b~GJmyX*G*tGPeFbjwFF{{x#I z9<(Bo{Pv{gTVL&;9t8gx-hJ-7$G_R~$!A}?jvcw2!Lhv`L=X}&qo}-smE=prl%lfURzjljOnoR&7dfLe zcM8|b5Sdq6QW0oGbp-Xb-e&OU7jV<_=b8O=etDSzmdNtl+4)>AgU7cZUf-dM8{jLC z*V{@-m;KhvQsS$5ZvZ{{!XcRIcw#eMQs2i`Ih-iypmzMQq1m*OX}ki$5GV(>9p388WXe~&4VBc?M)6b3RqA_v5^Z%r?Tw>=xECWe!Po zU4@5+0}|U^%~26Dl>16Lq1oLsggZ~yhNl}ci-|p#*XRM=`Xqbs*ygnCxgL{vGAT*x zz&0-m#+wFm=TLz*oDdoL1k&L#>3->tG1r(A)jF6Fi&6}Z=g#TF-EA(n$M#Eq?6>#W z^-UVRyRE^6Go;8w$;O>mYxU9M*r96j@$zXNIJYTY=gHzs8t$TdJ+{O+str?XDK!r4 zwCA%lZWpSSN`sE9Pm(z6P0|ut*d*XmPcMIE#l={6a51xOBm1)+cqkqTvfpb3`=1J}H{o%Fe%9 z2eI=n+9aq6zbBbCo6YM!nd!5u>1c(?s`FYSMsOuo~~Mh=s#JZOh1Yn&WYd87a0W1Lz&e z`fx;a#!xAOBepdbr=4W3v2d^2R$H7+6NcJWS)Atg_1kT)taF;R4Vka3OL4YzB2MpU z)2rl&cAB3Ni^sQfODSzryvZ=H&LhSbn2c2x*p@}y`aE~)9TwA;w}konhRhWf+j5H( z)-+$w4=|-xS&#rXzG*(@O-=)Y*Mvutulx>+?KX?^<4=dT>2a_)w8>{f0`{3lEQxI4<0z_eeJL&rb8JQtlCx3CEl!llXi^GY$}6nkk)w1d}+l zw9(e>c(;i&9rsF+=ICazbO<&mE}RVbcHy3yo=dxjI-@(FPnt13*NaiI$0Z~-#>L?n zY+fA@6emw*slzGLJ4|nKT6q8fw{O#}7Jk0o&*ex+G_fyKyAW-Aca^j0e^R31m%mSu z?h^i#A{jr;!o_@4(s0Ix1QYErb$Z=!e2^sCzc%XsNF_*`7RlJ6KZgTvjdX@fvP%hx z_80gI$tI6F(oi%+ygS9M|EpAQeaz%B97{P^UuceUI8EFo?a%b*1BlR{ck`E$sVdrw zF8dQWO?Zq6wh0%K14^92k1kw_{$J3~Jj`E7n`te2epISILVGkka*cjFbgDNyrMvJm zi^p(ou>OxvkjKdV$lFAEkvvPbkxzO) zA&-!IiL{eQJBai=;mzbTvY&iTJ|@yjZ}EKq-}~^b$M=u;-iz;D`2GRk`{mU_Bk6fOux@B4 zzb6OCVe$p(AYYP$!JH_rn8mV`$#}EHSX$@8c{R;Jsl|24XwFUKSIjC=lko6B zWm?+8ikRjODwWRTQ@m{*<}lx`wnkPl86vzaqqQK8lO2@H=|zv#X*Kj06Dl^QQGd*Y z>Ey51>1r}0iHmTU^wH8c$XB{IM<1;BcyYR!4Ax~;$C0|6Et1V8#R;pjq<*;2)IWA8 zH^8@GP90`~z{KG3@`IAGvRkpDA+x?JbH6F`iPii!t8nCd=z0T=el}RrjJJzTks(0WKdY`D}j-fO5F0RrEy!-k)F#{W!-eY;X0u;8qb zcraOb&?7C6_bs^Da_zOgGJD*SZ;a@K$InHPncWU3ePCEuBh{3te9YJs(3$DlgD)E^R5L&|+IC zwnEWSZi;|h+5%0>IHU8<`;ND9ocp{wIy&RbSmtKLOQnrrnudd<7^G+&V+|w5CIUMey)lM!@ z*v$@LmQP~s_iTu{H0n7b`4ujWm%eP4zs>3J5|eyjr}J!!+{Ue>xAj~VPv7~xz*(i? zGFjIF0RFujz?nU1n3!kxd}NaI z>2j*)dnS3HXLp`=Wb$<*gRJhk%^Z$M7o4FSch5ge(oLo;7UomIB)K<*e2Yvxe~0PI zVnDt2@ou2oUvJ`hUD&jmaSZ{>B)|5iMjf=HLFJCrz;wMZLC#E15ys17(=!C4Jgy6> zYbxol$+)Deo1w9ZoIPj~1$&nX^l+bruFxj1@&iJ$_!OmejAJvQId_?)cZ*q_n1#%6 zS`JBVW?66~ifU+XfyYmN$hmty}Y8#1`LeB$yz`3E& z-J|0z-zkJfX?d^^1Htm`LXVg&YDZ-eX=)}h%_JI3Vvl9)4zC~S@_GxpZ*~KlxbF`Wq*>*6?a0z~Jch>{=b$)|%F)cSnE~tUY3?dJ( z&dBFdcxlX%h2=r^0R7lO!v76 zNetO7yF!NZc<(QL^WBL)IO$aF_InHA+z{(A5YZ_yI*Y6E1hYlz;M51*R|Zx-%m^Mc-kDRFfk_%OPCYaWE>5ES-2 zAyN9(bat?PC=7--8nEz}E;A<|HU}+R^C()zWbYKL)OvPV9x~h?vzCYQaF@zhjOhSH7 zi$LoOc@wLp@Ak<^b9veX%Jn{qd;wu{9Lwn5tGA?FEl5?tAf$jc5a`!q&|Wf}W&hmB zYlo@O?;3g3tTCKp|D7IxM)`ikc1jD2Pe^i++Xv+$zgtf8xp?`tp0=CigFQ2Emf!4o zWwM9oEmvC55}NEzQ-8!(Q0Pxt+clX-WDQ(bs+(mN(}tWXG7f#vm`ZNqz?>mUpM&(# z@4<*P1AYo$ux52$UN$b-d3k}HtmC$m94{yLa=f?lp@;T8RC#^UKJwPWvhjEgMg%%M zNMFCGkrI~BdX87n0e5u{ylhjIYFG_aKrC%A2mF~!qS55pvQQqT(S@e{y(i-~G>Bk5 zQzNUf{PRjbpAI48#`qeF-F8-bAr`N1XkX`m4l3rOjtLv4AWCgcgYJMs)%>bMwFgF* zQkX7At0b)|j8Uje&AEbx26VJ~M;`pSm=Z!DPnS`k@e|?s3VsnEE!vSMrRPPU)d4}g z0C{GfJYyyu(OQrSoFi;dbkbOPrY1bXgwCcsS=F;zuyLr##lIw^k5wVUO?mejj7FJF_Tz$)^eb7-O|aZqsOZtrg~iJ(x3-E*BfpK`YPDi1%}xvsA&KgV z5X_Puj*m!B&&qLwCqmj^?NN^1>9>v!al1|y{ux;do+k|_T3wJA zVE-vU!405Zq9u>^Ah4h*&kaW*H8tQv4GJK9dwx+fk7FL(3PtHL;h>@}ja-I@=?47` z#wB?{0aryGdHPc7`dA0TK+!2#ru3$n(Ouo6dP-ROYhDN_sJmoKa70G9sE};xnQDsV4^d30PIUxK2u?< zIFe!X6*Jcd`Bfms{k76lDNX;cOScgsA5#Ws|U6=7pv5WMMHvDvD)`Fh!mU z9cCi5pDRMP{3fUUs%G{u@2Zt~RF%OGxoQVrVUsAqB3i86KX$vhM3aGGlN9_E^nBwI zfW~A&HwF@C$TOKAaJ}Lfui)XOp4WF0Cb0Ki^b}dvDCv9L!r1HIO%PJXazl6x(_u_K zDzXII?T_c%2lDMb`S$PS+ZX2Bx8&P@kZ+%zKiBTa2Zf{c9eD`rBGQ@YGMO%X&vRCg z=MF1K{2ePujLX!XpISlUN37pyr-$#bazo&bfqV@6aS0%WMxMw`=f~I)h@(Qq>?F#9 zh1R$PHiDGL^Z9Wq*1)^0L?7(Yb z9}4m=e}~onM!s`Peyzwfh>TZ?%;|*2AuR9)kqCt*8~R8(W7Vo*%N8P_EI`gckn&n{8m$<80fNHKrHg|ug7Xcy+o!-ZKY5CfDBHRwO(Aq( zs7Lh71vjV4&CT7L8DLXHCTX(OHZXY#`wzln3`%^JH#gTQPRR_=i?kr#fGU&s%MaDtjwR zR=vHvs;uJewz7)lD{wtjyr8DDs${{N#br`eiBwYYCZHUJtLW{brN`PTk1Q>DyQ1Ws z<(1{$%0-8kRTg`z%gc@~Ut0P0(y|I~6uow0_bPjN=x2eUR1fX zvUmC7%4Ocg)g^D2DixQP^etFbb_~v`H{nq7E-R@j^|qnD>dK|ww#pSX&lHta6)pAF zlvKYB%Z<0Kt)yx}wYQ|IsxDRn?WfD@&@%7WEY^?Oj^7tnBSrsfCr5Z$m7jM;0tRR$X?asPb6Nf+I_hl&m^h zeQR%3#hc4ZO8g6Ij#QT(Sz7t`w&e?aRSVu!ik4K45TUJYNo8MK(c-FSt81#BU0ky2 z*-?ZRRC|_|99g*_*5s0^BPCUbtIO)Vusa>cUw2#E(vn3r&sLR{F0OfYSy}N&L4YZ% zD1El349|;>i~<|Jr(oVKJU{zJ?JZ|--h9iJc|8Ay{j~iYrs(}QuD$7Yj^`7g{XJ9g z$n+_~w`(7n{uckF`AzfcLY~(Y+@IY%vB=KzdzQSjw({=Ro z=9VK{f4}9qEq~bd^5*=V+jnf+@srKKb;s!Y*!N?FZx%8|Ur+m=J^2=%S$Jalngy*B zcc3+2eJ(jN8j>4Utev-Z=^fs0J$q+EL&KfLceXU>?>z7=o}Yea{+(at{f~Ecw3O#F zs=rh9&3BIK;_9W!Iz?H%R$k=yA0`j7M@QXYf6 zoF}AMp+iCmSPUIYl%9IGra7jOpUdljeS17XXGR`!Mv zpwJx@_ml6Nu@D<|Jxqq?Ryi>gphdlEc-R~C^}tY)BBUUWGYONS+LOCodVYqqerDvh z<&t3?7MK9F`!5HfFkp=vt-gCkw7PM|jkv3sAFKo}ugpUyBJox!HSGl_>@dO&qn zQc4BICl#%pIFlGg_!LCY$f?{}Pwx!eMy#kW49y;2Aw_{tfiWy7rwRdUSo++tx~Ao? z!b~Xmj+97Io0NL0h`B8cHIN6zNThUU4Xig04t%%n3 zQo|9fmfG|R+RG(&y5Rs0lIb-NvIPs-L1@hAFw$kwRTh}x&~H;YEm<7c>n#rG20e0M zMT;Ee3w>mt>Q-`=Z!6@nIN{z_mMgw?#aN+6R|jdO60jw~4_3gi8kL68M}n}yj4b-e z#ZET$AUtFNErYo~NrPZd=m9VSz)KDzz!hJAs8fyBOu&V^0o)l0!H^V!87b5c2VS?k zJL0*g!0SomQ&Pmt1Kdyq>M0DtEaD0tnH~vs2K&ei3`;}UB!9ycoD5TNpBKeFJg@i| zPhK+5g=Gf~i&$VRg28H!Vz6o{wGAt=oJNFgFG#j~7 zcoajWe4+dhG*Osm4XE+Peey?wR;hQwp0J7h01uHH0Cf-WO>WNI>=te;P3)%OY=)+v z0$nW?NXF15n}jvsd1ShR!3CC9Us!f>nJ5m*lFyYaTeYq1Al96lZix+%&%eIzjCghx zV5`eyDE~j=Zi2B;dUEGwo-f6+INT)tdFP>ZFp=vKmChxzycOnL^lvWV^WlhCNfG`P zZ2u7OdteX-L92AJz;?_9&2MkVr;VlQy>ehH|MBz-8>sPmGNCfCjQ%ck@I1hqqs)D5XZp}PajBt z|L#Znq%f>i`JJ`|Kj)uq)8NWU6CD2cD32oKR*q5;M(@KAv<;knVLiFxgvW?T`WU&`%rNn8SY^z&1k4Z5XaS)D`$8FM&XG`xo z(I+{r&g|AX01AVS3Ls(P`l&$I+A9UV;3((Jj^wtBpL<01Y0zYhOzTMp6RA_)VsX#j!;mE6z79#7K;|4j| z#s)!_)ioou>2-pIq+Vx$eSa_ZytRZ7$8D5dL8*9F2!=H^@GxA7gd~RP40skg5#MaQ zJX^YJHKLb&*+(z7rTl339RD2u1opzu#n(9IC+w4L%o95%!T?nS$NR%K%x9SI?}i|HXfZC|;c(f9 zKc;2r;lt88>*2;sZ0Jg7f?CFCxLI<}F@CJ3>s<_8lj+(LxM0i7YR{y-ZQ}48XhF8i z*>24RTVSA(9|)%UEaO^H8htT-wga20oG|3Uor))$7JZh;p7q9P+!>63{E(lQtgwaJ zxCD(=ENSGMv{rwspotc1r)=d5Y{!!w>Y41NLr!=S3YdT|BK>6!qWwC+26x`mWd zleTq)p+Z1i+j<@9VZ1{lLb24*CIr0FqjNi9QJBhQ8jrZJ7jt?b2%{ojFx|@L;E5X_ zA?wXl(S~q%t`T#}RN->L^oRzrg4~r{&-dp90b$U6Fl;*FvWm72*et9f*TH=Ob2R7! z6GbXs1JazHNmCkO5RI79jYfvMA3Mvggu=8nFvFM~ zHhEo$OBuKoJN>YQVkb?H7981pyp8E1|g#e6%|b76NN-< zkYm3Hhv5yg@r{NrV?+f@8{e6YaWe0OQ9lRYCqSkkI5|XvB};zv zWXGI-(;=7fz1h-?dD7kUj`o}0a-oQ~KP)xh4wXxqGb{GSaXL04!^ZR&1Y(kBMRfHM zS7xs7WaS+26?*QB@sKMw0uKg}luLwC$qvCHG?;DFF(A|RG!o_$i9Y240cvPf#E}SE zv*U?^Rv`l{CxpYscU%Zh?5&&w<^p8+&^R^Zr~6>8Xv5~j4p+f+zM#bDu<->}c(1lo zwhk9$NJ}@l-n05=GW`g66ze+sLkhRCANTWU)O8Y*n#~>osUSgRy-#t8)0B1vmTmf8 zPU;f5Tu0_D=(Ex4zs!pkbf+iGV-;X`n=zdY? zn%;YIyrRWl(|alWk4uJbq*qkm3(`r%j*bttW90`nxG3j#{c2upqx{2W=is;Aa)Wy&S{8Yvnn?K5fER?NO@F3 ziL4Rcqxe8L0kOU`G6`sr`ThAZ2#XL6h)fHi8k!A;XnDH9OMxXR*jTt8Mseok*%Abt zV27Z=5Qe?Jn%0S8=1F+KLzJ0vd{Gke0X&F<;AjH@M`-fY1=0HQ)-m)!3au<-&|@H} z?nFUvoUkAkq8Nf#6Xr13ifUkl;c7}&#e%-EUZeQWg2Whl5zDoj!cA=bI68hxLS((vYc$ zFIdbMRPhB9`2qnGt~YX@;??d%422R3%YG5aN*^}-tRRnlr68Yuk2pzC!fuAk$iP9~ zGbAZ~yurEfyTOYGtOsBf8EBFXjs!8I5ysfk5w{37D?Wse$($8awtd%P<#}?ZzychG z5R71pdUU^-mPw7a!AgM|W()n$Bm2lMqFD1OvP4<{QwZMWb7K^~R*Wqa$zeWN6k_LJ zGof@9DY+D`r|ejo(z{6jVfPe;EnP*Un^>vf*Yoml`%-4AZ#+Jyww8u12aEQ~Cv4b5 z_Q?Lm5Sy%M_KGSW!$zg7dPhs0O1f4e$#v=?NdX{Q0|zeR z^|5~q%RdXu%9Ed2evi;b8TTIO>>ynDGg>mGmvgeIrMeLyY2S;zNy3%}7XEB7~mnf2U zDybU_HarhsZA?Q9I&I|dEWSDudl*Xw8;6JjX`@tnv=|5|oA{BEZh+(WYDJ3PCu$%V zrTp?&J+-Cs6LjekTI3IfJoyK< ze~}-u&4w9cg3^#PBULqZqIN3s0jy;oaeV|eA6hlAx?_Dhu@e1x0 zl8mI8IUU-?ec)NSNX~a8$n!_aquI)al;Ilx@jK_pQ*n85gt|Z=eh3#vSKeL^i7Yc3lHKNTqWK!UU z5KxeM&@-Ng)ILbb>;2jMbU0PMf_KvI}*t4?iNST9<#~~pvPj&Iq>@qfli}0Qc<3N9Pvc^FES%6Ow#2y?Z0rwWs*{`vOHQgo z-?gzUW*m)R@qnd7I~EB_3>EZ0!^QH2p+K^m;H)ZBBLpxgeNT)8P?46WS}vgVA-$)3 zF*++nmz<>TonNM#%MK~fq?kwjS*BnshU}o-I_6u>ME@JF)N#85e zs$-gFtR@|bc*d7uMNrnB8NhCzAC=@f4xIXu`0F!tb_B8vX__@`#Eg2o65cX-2TV8{lEFk)W<2J zj3M(l*>d*yBwJ-fb!Au|!D2`WiIry5fpa1Vm_ks~t*ux^BQ_G#x>jiWX6!w4WdrKT6_*l96PMt;CVZ0(I~KI6 zxJM*wIYkaZ^o(pHk#fpAgJLnV!fk;<`M3*QUz%sV;u6%z{+qb$x{BF$v5HbZr#0l8zeE^lZborA^5x(Uag5i< z#w_MNsD2jgtWvOvI;Od2ZP>NQ)9HuDZhr#C|zT1<({H5 zB~0xV;BVswmFcf^W4b)sc%Xuovfx|551XE$RjYu_V)hSn*es;-Oe)gn@^#y~25*!u{rlbpR`^tT1&{m?u=2 zJQe1fE2M1YoiGzsD45n6f%u1Ywlrjv##LZ56891G#PBjaz(A=$Q*4wT0D4LR^cw{b z@`jgv4Kx)Hi%sIPA!LLE2uq7AOureu3k3#2-tgC{>2ZyVV6=p@LnoqDN8!67_aV`= zbQVdD{5z$2YmF~dVAXE~$kIAv2fg|anO2NuLT$+8sqmD}BK`Ki{VBHP+tP?tl%XHv z1`W{tx;UT^p0aCW<(m8$8LYlVQw8|g#{Bb#E=~=Lk&ebxN;UIZ#VF?c@1f#7M zn2}Vl_s}lgNWnfOIVerPGlnMi*NwG}QCxy>Ep@8Z$!cA4sjiZJsq53_d{C8`7>n;~ z4tRbJCl!~6MXGfBih(e^-AZs6T$G)Wt%{=?F~-<;LqWd?_kK$jy56nj(dTj=1e6E< zw}1BZR>{K$fy?i0_sZWx$lFsrT$TJU=u4!{7jCeUf67)#YuXuggD^i6L3?fu1w79$ z$L_@IUPcCh#_wjsbDA78P>YG|3GfjpE>KMHf$LlUH~BBNF+j^L&-` zVpU87ON0iNt5G1KHzJ|FK%eJZRUj5>@&)%womG1!Z&eGvTksw5(e{w9Hbp~8x<)94 z{z2(Os;B-<+E}A9q~nU6 zu=457N<>uyOmF8qsHpzA_vss?WQB24v40fDqRRR^9!_XD(fQ>bx?Yo)C z0uG2|W86eW;x!|o0xgXwn5rTeOR>g+2_1>3hP|NA@->mpi2#}`QFL!%5gu83V??by}!9U%xdI*n*;t`xhTg5_0J@1>9 z>4n9byswrw2Wz!VUnoox3RQ%u6fsl)1jejH#_WM`UmytS6|8mk)q01ba4F3rC zH81x!a$`6aB-I$Qzrh=rCFgFQ}Vu%9_k*1Ef4;l5zb_4T1OZrmyL z&`{felMJ&FLe#ioE8mCJMPGn&aH-)4yitWpjUm*YMXWZ0jp4o9#xdU518P;w%O>9YiDgPtc=jIfpuT}k7ED2!b$2x!X2 zo)*hSByPkxNyF%@NKWJ{z9zP&FtP8hAU>q%sSn`PyxALBwwIQBuhur>uhWOHc&#qa zk&$FmXFK$UA>ZD+r!v@ub7ADr8X4!()%RL%jh5%u0nIF_y(Wk=_ev{cQ)0;T&*edB z+=?*uIWPo|VJm2E9o2arW_*DYc#Rhsngg$vbH?D})Df1%@erX-$Rp&-L)cZmZ~|jB z#;vZ*Qa;O-i9HVi>1V6hM=cZTFvb%F*6NiqDC7l7ft*K|eD1SO!zW;>fe7K}g|ZYa zLglu~5O!3Nzz%v2)?jB4F(g)S^KCaDz#ah{*^pV9MPG@Ai+rJvH(YIIlbWrkGWZ91 z4D4+7tpmbX(%`Jwo~KteKRT^aJFM@tTG>xseOM9q@rorNk{t=;bab6s<;6zbEZn`n z%J2n`<2+na_6q+XiIbD(%-aUSN<1EnMNaNQAk0Urh>tXY)1ogW_JZw0nPkBilQ0Ct zR0R9LHwt2e^#eGVMVa(SD#aKpH#DHgMdGJMYDS~sG7m<&7W3~55(51puYWLFKcUV% zp$^NNRboc(6sXj>b)ZbJU%_dFl;^o~d_Yl5L1_&5T)IrCi*z2ON$qSYFRq07w-hI3vLtT`PH99Aq$AdOK8p(Bx+9nnW% z?o6liK)uDuN&Zb8jKWhUS3UyG7i3&YUbx*>6$n`!^hkXvkxM`}> zIaCpy$8tN-2B)w(L7ko)-e*f5c^_dDl>*Wy^?UpNt#5rx-w*n>?C$%1U+td0f9Wd!DFoXzoMzTLxW?`g521!a-niF1r1KOUGa83;1zznoia^QjhC&{xNrN zs=kq7KS%p@ZhvkJ1P)$4+ZUR(dTKclLD-scv^!T6Q# zALAeE&m5oDwfJ_=s`>`cJN3=Sb(OnU;B;Cc!FCd9G}vAQ8LYY3hEylrcYBOg(9Tu$ zpvkKGtYClWL2NB}q&8Z8$%UYvi>{Ua%jo;?`YnB-mHe90O5F6jm-(!RHT^r(ef>KV`gf=-IK{%akBL_8 zJ;YpIy}Ij(`u?2^$h@bosIImT(NdnU(vfKO^-V=9b9iEcRrP&`_LZWgy2_@x*tOoEu8xKJ_H6 zarZ^5@PD4;pMBXN#^`IDAF501Nm|nf5rx-<;|*F$5t5bCj*mSDRu8W48$>MFVC7)x zpudUB>hn+Rqi82YwHW4hWvxLg`ut=1Y(`AO*|e~TE-7ASQ)}Digs@L=D-6c)kE8Xp zfbh*c2&*H6_ALiJH`Rreg&LxHt+6GbFKm9nCEc+mV*W$y>qYvCR_}MgCkeWoSwq*G z>ZHmwLOzzG5ghu7C=3M1;5x6tMVcc9*Y9Sx`zPEK2n|U+YX*4|9TZSvqEcp*k}j-? zl`E!l0fYuAkqKD8QwWhS7y}uSyx*d`=G#5b-l>Qll4A+ofYLK@_DH=Ugym4C59_)S z%Hk30=nC@$t{*CLFG0w>4#kNunIe;Ne1nywCV&BD)Fj=u2Gzg>3Jf}ZuBB~O??_D0 z!wrL-N>GqAtHCi5s~mSObFcNF9`hmt4l?28u(dH147A zA(R`0u^Lt@#~5iw!vHcXg|pTgHFpxm>1)wadP8^DUIHxM!{Fk%ZB1)U*5RW#jr0CB zp%^4YWHsL&t$)!4l9$c`b>_;NQd938J;&B+lRd}QdeK+g8mRnj3UWX(uMYDfHSAQ| zG$3gOS|-h%3SQI#<$na=KCFBDmv==_PC3UQ1qeA`A|d&b>sn&!S5P0RBcy^<6Um+ zz0QSM@b;r%TX`9K5w%l&pgE9!r0$z_qIZ-oBH3?x;STm85RUlz&oPGnYm8==Kf9>4 zu!Q~9C9S|g`gDsd^VTAM?XJ~egcn|T;rF|B-}~Ob>^Pdn9KFx+`2_3wckI^rYi*C) ze!1$MdH?QQzU0Z--)?Kee7x6!%#AOltbJ+Qa%8^ehi6+}yDMYY-`j5Y`G2#hrWTo7 z37(5Wx?GQ!O?MbWc3;6-N~xKh+dGf)AwyEwI}`ZEm^RA zWYCC&TN)}DZ3^(gi~qaXF7^z@B#a{z)Rhu8{cwTV?FzL=D-qA(c10Ur@MqA!+GxY? z{Yn0$I>>ytE6n>}p;((}Lu065pERWb@plT7@hk|v1}aH|*Sd1} z7W)BL0K^vSFo4iIA>yuftqyKpjFTj!5Bi6P2K`BqA-oxkbQ;3;S6$d6d^h^g-@vJj zMuM&MQAkPZdH!28J`m6bQ^;*=@CG(aJb~MhP&1N{M5TyHW;Bdu!mW~-hFe4#$VT^F z&R1Ppoj=KzggxUR;UHp#3}>7NTn{1$v@t+QPBby;D7n`1r~^@j@9g0`z8%CBZ@^0>H(}W&M>rMewNbvd+Tt($ zZJQ1r`nYZ9q?U1QyC3-Tdu=UZYFeA?SH{(Ctrh+{W&E{GzkmEi<+9K5!fcCjM`7v+ zm$$R66wC9+vZg=v>}I1y+X`b=q9N=$z_DUs%eF!^(XcKw=|=~LaJ3I)7D=-HqNnxU+q_K%Px)afy;6EjU>HqJ{ii58P+HHrBqajHq2VG?JW#9K@v zj{2Bm66c!4c_wi_+()!E1BYOQ4vJaVJ$18Znx>UDPpee>!h3YPO;6E*60bOtID_t0 zTZ#^=0@^!cWl!sBbqyg314a@sYWZR1-k+7KL*YpCeu0iz!g10-J&dO5sbL+0-rOOe zefn7I^sz<1KGvmD(t7C^>!ASv9)N}QBbJEBzzAGgECM3i-XEgHrLthn0$p#$1*em1 zvB>>2Y#K96z0G|HBO5J^V#wmO0~}k}e>&zxGH=}AQ@jsk&!Twjj0iXw26ni7-(R<< z&?n;r#iQ_{;UG^e^~AIeUd>%eL0Ay-yD!h(phP}A$!7_lA8O;&GiLZgun@uneAc!> z!=9Y$qgbc8E}zI{W(Bd`CKmL?XR%*2Mtpl8KiKj^a!+GpfXA?o7L%&;&0ad)<|59i zaGq}3_pfb$8E7&h_&YYZdtTTOv?#s7=jKMs-`F5^?FzKpJ2v1nArS2; z7moaZYnfmwADsfN=dO)#{2W>rw5VKRkc3p#lR3KvJz>JaXHmN_86FG+ z9OAq;hPGO_As0&eDCHJGhbJs9!BR#IBlR_gw)=GUw>IJ|y>#b28xYH8d2Iu4erD++SHy_&|y|Xc5@odNj zfJ!%~*K%|aB~F2dzaIx5P@AymrDCaH6%%fd-rr7y+qi4_ZPD`14PNPuT_N)u8?apJ z*nk(<*5W+h;)bguTL0RHT&-GiY{IsWygajKgI0qFYH&9FxgjUr)=d zn+%saZ!%on0%sW&OhVo)c^bR-t{MGtsF)jBw|1Ig~$;CU>@g+2Rl0^%VeK5)h^Fl*RLEQ1GN z8rEZINEP?wA~<7&PeO$-G0?WUb~XtCSp|%!>IZ85jXLrU>Rsq1@8R|LbOu~%oGpQl zKb_(OFolCabmEf;m;_r^0MHk$e)^uT_4~6c z!LXy8rbXcsH9ht7J!s&MH`{A>I}x+HYIi&0c9oOY5M{fnSvtO+;#KXNF(Az|H%oUk z$@h3(U)Oz6`lRXLpv&lJMlI3(IL%|sZkU1+WKGZe>tt>3`|B(}qtOP)?yl!H(>a}8 zZ{3RsGN+>%8*Pr?8!cbjY?-+k#$C)Sbo|?%^$=>RyEJ-t^nRQb3AT$C6>OFc;VW@- z?w$AO&0{u8pKOm->o!~Lo3qU~Z?-IL1|`gv&5~xbl(iX0g`x#+fmf>F5)sGC-U#F| z>Uw6g&bBS?o@F=EfpVT#?jwA9p51|*h*b`IQWwO^s8I%vXV};4mo`I8qTLkzTRn60 zHzI%$N9TgM^W8 z+va(82P2(YhoPx-A&$(8QTzRMQUf>_hv?0}7w@H=Tc~HhwMDAif{L6+d3V<<>*k<( zlcU-A;1;Q73;OxgX7ux!L1@q4-Gb=%eF6ejYg>(<4wG)OaRUvxX!(}H*!Rwn@79s; zM&%p31{@U^xzh74f``3>xYn;A8!thKnba3 zUEA^AwSBJLy^6zAd1r<$*2cmCY!4gbH?_8KnB!uGKCrMs-Jd@YDz>2r!&pwQ)o2 zTRG@eIoUP#+)4+(;<>TV1*MNSjx>4n5V5dj;|7l-TdAUvNBbJB7&agSh9{b*w9~V8 zyE2sUlT*LjWw(D3%b_tY~}H;Sf! zgl{0E(nFSbp5C#3D`YT#+eVbUqv`RjDC+KceI2+{`V&1s0f4~`qXBa&_-|xhxY(`8 zBzmvvIk*n25A*ywlt3=e`g@}F!z~JdgAk}DjyB-I)6$(_)J z&T6-bt!xrzj=4Qg@35b3K?BZim2TL^eyTJDcj#XtW`5VxJ9zex6x?YVzYQ&dbjJyt z3$~561{3zE#PmtGY@>E{&+Xc?4VnYZ7B_B0B3gX^ww}Z5z$_%5T-!06-P^$(vG#cm zu0xIoDTn6=+eX@qyhH>t8oj@L`E61kJz_k0?%GED0pTK@Z^k&mKBZ&L(%21M?{33y zzac!=e!fLIwI0#(s#6)T&``=y3ymxLZ@0y`BSQ%;P_~-@5u{>509*cUn>favvmL0U z-;WOaa^U{ahIMP{pf5$UC}1xCh zw6vI#hPuY?2t#9~9oN2*QB}X=Ka8ryI|>*!stl?E=K3+^nZ2W3g`WQ9j+h*}M&CP{ zez1cb6H`Y9K*11IQZNjXK~4g~SGqpNf$6t9v|8zd^@b}DU7zltM@{=nh;uj`*lqf@ zD@+Ngt^pF|;fVV%jt3mz4WAGCdel4V=(P%2eU!2=INz;OKhqcSY}qCK6);RcBlR1m zEA`G0+^IC=zV^AEAutXRz<7Lp69s&pSce@a5o7L7W!DLgUfT(7Y1rv$+}V8*sZz8F zf{dh^dEZX7zG)|%z9b3JP;hUIgOHDpsEow2zuG}#mgmxW3~EG_w)TeB&0!NTtzq%x z!x4x^J$~M*LrBdwTpoz+Xddv1$&U{3`~daJ#V}+XsDEf3#Ihow6@d%^jZnbLJ3(|} zInAz7apoLs!C{I>Q_WWqZ$iM1Vf1E|3sD|=vl^PJInkx!aG!*27x;pX`{*w7)fOML zg{x#2{O-QESioNX_cz{oRo4)|3>VB%(ea`FU}NmDT9-PL;tx z!qKzmr@PR%-*#cP0WMJY_``qQWqx><%Y7z{To??rW`Qx1PShYo3)+0`AdA}Gzsr1i zmuYAhN;WF7>sV!=m4}8+r*{EVKVF^o@22J+QLbO>RXl{u#f@kYcq1lB%rhDz=9?QK zdCZo^c6&i1dI_T#4LsSq4)@|PHX&VDWS`&YA6{5~nDoU)9$8HVjWb1EN7v*=%M2vU zX!MvHv6B}g9ou;AKWl_ZLuzRZsA>ESVdo3%*s+Qd;b@ z+|Y!Cc9ifv^xZ8s)kF#{^I_P{Zt`_w!SR)v;92)IH314jjLIPzQs&<@MaPfs*-GLM|VUoy92>Npk?ze0vjqxsI4&2ssrotMh_I0@w)ycmA7Lb{S_i zhk5))LkEW+e872?>O}5b$QMITXpWd?HjBx2bF*oai&ay9e=(eG9^V`hhvy>oGJgF^ z86xm90aNyU-PlrN)xweozR60X&m-EO=|YP(5&DVY3MNjiu^@^UY0%z76@}JNh<5Yr1HCMKdi* zxI#p4k~!j}dmW5l_!S7;B4P=%3oWiJ70nowv}CK@4aMBKYB!c2w0>bsI)ig)7nxh2 zo*&vxnUyaTIJ7%rWHPZX15C^EX0vCv>B-&3XN;<8kbXFp;ThxfGX~S3LHlQgP&8i{ zO+QeZXBk9~-C@8MtX~=X0bhD$P`Y&x+`)iYyw9_DkLRO3o{4*$pR{DWowA3##NRoF zeWs^dFzw+7311q;fq{GaUFiH{S&AQ!x(}N^AE@8}~~8vRArc54S@4>E5d*-=3>s z{KlGi8ozHQpXN@8Pe?s`wamLGGEQVTE=7Oc_1vCgq5he=ewR)*3W;O60ai6u>f3uY zbR|~lsbQQ{`|{qN+xGUmlGtaY7xuD0zrLQXWqXy1X6(JbqOQh0;$Od3(=%O$z5jJh z^8B8CEvPOT)uGPFURx?^^ZXNZPx5@Shp36)$CF-d!La%qO!xNg{*{`37k;Z*HKyN{ z40B1pOW)s^)PG-M|2nPDKX2NxcWoNw^xkR5`hDr|0uCj@+pn8;?4-~6dCOb?LZ#?4 zpF#jS`Hq!#BHG~!GPmr&?KD?I1+ zGS1U2I5;O)&c*TI=Y=e1TMI%d#v^zx!@piE;4-jaQIa%b9>kk{NSe53@XE0e%-9&d z2B!Z$RsXsKsJ#xghP{-%Hot#|zJF&jdAJeViz`Qy4Sp7MR51PD@%_UE|0mj^`#%BX zKZUWrEiH{Z@!$Gz+_JhUg*F>kTvlDqEnHAtR>Wb;cXe511vh=FZD#rM>ZuN!ZDATW z`YFfTnvx1`GPis|RZT@nmGVj`%5%)*O3SK?7MCoYQdGHY`3fv)W+QplEnM}AA})>V z`fq)JxxH|vy?|SI8%}>z7DH)iOglMzKlQy@-(I0fPqh*Ka= zfj9-?6o^wGPJuWD;uMHeAWnfe1>zKlQy@-(I0fPqh*Ka=fj9-?6o^wGPJuWD;uMHe zAWnfe1>zKlQy@-(I0fPqh*Ka=fj9-?6o^wGPJuWD;uMHeAWnfe1>zKlQy@-(I0fPq zh*Ka=fj9-?6o^wGPJuWD;uMHeAWnfe1>zKlQy@-(I0fPqh*Ka=fj9-?6o^wGPJuWD z;uMHeAWnfe1>zKlQy@-(I0fPqh*Ka=fj9-?6o^wGPJuWD;uMHeAWnfe1>zKlQy@-( zI0fPqh*Ka=fj9-?6o^wGPJ#a$Dd0KDcsP|u)_5*!Jkt|B35lK=iJp@h`hOD2=a!wfShh#$IVJ=F=! z&D$8}bI+!9JfFVyPfog+^wra8<_F4?M)#+r<4NwMcatt@Z%n$9^qh`z#okfw{}-Qg z(-|hZ@>rv=~d=l1+jH6(MkO19d$jB#@loTt+>9OIo8xHk@( z@>F5j*t0?_XZEycLqn8Bm}t5|HK^5e2yWhRc_><6!&vGWd5oZwGdZ1QB~#b(s_o~4 z(u_p*r_QyEJj^{eD37;!WTWE^%jtCgPT^%~O`<1HRX8N3A=h9a)ae7_E_b(ef^#MF zs$+;AZ{U&OtYu!c4f)VE>42(Q@~hCOEqfksxO0VcAkld{^Z1QpxlM!_p^= z^pb{8Q1?v{viin$T~&p=DuK~=1}1Q!V7RX@6zB`}wI^&`8wiHo(W;V=$kq0|sIt1; zLgFi&zJReB&bvJ?s$6a^p@6d*zMzLWJtq?8_MAzOE+>F`(o2b`rWWmLkj^sgpuU~? zU>g3=2kDG%NSdJ**XpzeDNBu8ev9SOi%^qL$4H2fe1V>Bf)K zRmn_re`g>huC;$Rfr@QYyM-_84NT>3)G(-PR>*TXA#7=2ly}vkU|>W zg)K+ZTV4xw4|wO;kEWx~RlVtYS7(SA#F;?oB_%aG^zQC-hT!_1d4L+c)hwTmyWTp|2SL2{DvLQ2+=Bm4<`@ zs!If>89*4o$fO$uTBg8Hd#*8yPcwXqvZxGX=VqiDE^3o=bHF4z!^L*?ckS$ZO>zRK z&pEY^`%KJbevuLV?1Mv1_IK1S`+MraM9v{SsR6_K8wHQQw24bN zl!%t+;iEEV>5WIz+cUFN2GG|TNO$*isOQ=P>CWDC&n7j>ZB%kD)-rkpf@(shFl~q! zwusXXh^jxV9~ktPa%$D;%orD^sroZ1XQ`l8{W4SU0u;SV=1y)>n+>p*lYSSUCVR`Nr2Ff zJ`+17va<(C6cG0qjfvSV_nWS9Y~tXM zR5yMQ9O_fD-mhfkPP3n)?Y)U4c7`w*2PH`ZcJjaHT+QG+l#kK*dT(zM4cLicU|FCF zVKl#nr1fFxH`Culq>QB{rMqk0N z+jttIIa+ikvCrFAylkwH7c^mXhr@lHeV}Sza$iE9|0l`*6KZ@V;A;XG0gXcews-Bu zX!&XenYQ_VvDN<`KY_b|Hz?;5_p=G&%l2Ef0FCBJ6x zqsF7}oRg+&O~O$lb5v{h;=a>x=?bu4UE|_a)4^hyKGR$87{7Su9KF7UUYm}-gWSk^ z#ngv<)*Q*;@8TH*Y@~XxNGr7M_JbJYnk4BT ziI9xzK}OKrS zs5z>ms*6dZ6*DJ{suOs=Rxz5TozV`+Uz!-kT%%wR4C6IQH2Qy0fL;a(hlsc&Ujt*g z&~?}yN+?yzQdgqPsaE@HCOk2QdM!k)mcL>5tF{XhLf`UqCLxce-0nj?uS6{m=k*puStCUMv#7TMP-xufOvOv{wi1GZG+JXa{+ zEzI69iDoK*izr|eo^*xWLWXpgE=({dNo~3io2A@F>sK?LHXUB2NPBcK+|DYvv40Q8 zsEcW!!T$?f{qNN-E5_j1xR%vpf>1~wAkpgo1xZ@}d-N9AOWmpo-y-Nf>8Au)JoAd6 zZhz$J5tAbCjY z)enXOoxYqbxk|`AzTkwMH19;PVH^|5%U;8;j5r<1bA_Zl_HvNeVOFxqkz9~q4di%B zPo0r%g4)F6gKGoc%S)^-7dQ3Y*`(Wa4G`!}m zq#@j&Oe{=PC8#x8U8;fQEVGjL{!JJYjF>bZfXBAqFRJW15|9C(Sbzk3(g*Fa1Pn&X zQE-uWo!VC@WH@ynWH>I<)ppr%wjD)$L*7#vrK0XpyFIyc(AOR|T~rHtOd|&A6+PtS zD|(aRX6xR+aaYjpkdM?mtD_#T_X_HL}AAs3T z8H8l*bJEf@!p^*ognB9k4q3QQooU28Sd8L2c)OrYB> zVgv3&gV(>FdhM;1p`3X8|B(0QaZO$6|M(3{2(l%Bc!64Pa?xHA)EF&^5u*r*h!P7Z z3U%qGsI_Wc0F{94Oxx*9*Xc6Tna;G+eVO94ou+o7hKNIg*BWiC*y5)tjU6XVD=Mz_ z@_RowU~NCY@Avije*gVOb93*xXL-(Zp7We%I|sl6NqI($$8rdaBA>8@G#zy7iUa!oZz?t`BsHn z0sP!^IAHeJikayhrAfekj<^VP=JMEPu;DWxM$_$#cF(JA;mRNr(#Cy-X}CFmmtoW0 zhWrs&k@);pLxtl5?sC(I+<9P~$-kUma5%vG4);|+Rr!Fsh!+DOH7F}*BE?$`%b?O+ z-u||b+=iONl@@i#dOH*FX!g8{-|rO|F0B#`IVLW5OsqlHH1^vw12ivgXB^)v8iuMl z954hA_fcJ_CDULC1&E0p4xq9A%N|?B_%7Qbe3#+7a=gcHnw_i}90b;Zif)J3l-%v; zFegt?*)-F+D{0-cy+z4rYMXPr5M>)Qtz>+Jm0wg+5L_>gO!kgV7HgADZzh`_Ouky* zJ*cXCcC+`<0!|MxqRNsY zdu8ziX2HC|B{F0BpI%P=^5g1o@9o@oHI=#L*4u8sW96#))oa&G)K3`CX?1+g*l{-q zx%Rx93^ip7i66%*<5ck@5)zY=Q`DN&wDge~qu9)>$|cncO8(X5@pkVQ4}AJx-~Kyz z^1JXs-=V{w`Hy^lwCC6tU-ll~GxOtT|MAb=@BZcO_daO<>pRX5KY8KTFTV8h6Zb#x z=X?I}tH&R`_pzPNJpKD8fAf6XZ|{5RZ*RQ*;KRHA{?IG0zV^uP-g@&-&;9YE_gkk~ zHxz8FonEwP#`SZrTWY&`%<^UC?JfD+9FxoEjlQ$4vGB$zn~jz&Q|GV0%ha&-?oFjT zswP#en=`w)ID2u^tQG%LJpDhEuX14pH@kR}u5e+sox_9f|DnGB_pUxV>c>oGnl))j z?M#Sw40BUuRrSI}HH*vUmd~4CVP8->otcdEo1|~Qf1q&y<@W|Jbza$a;@ri9|8<}E-9NUT`H!Q& zZ~qrReD>)Pf5&0p&dvAV&HeF}+dheue{lPwqv~UsU!6?)I^6Kk!zh2+9XR{%C%JQEEKr^U{*7Z!6r6^JdeS5yzbL~;z#+E1@hzGOC6 zUa~|ON*k)rG+ZRMs&G*W_fvsjxGtIXYZB7KRmrT?&J5UYH`$r+rrqge`GOHl(U;aq zGLBwMWyH>O+kUt&mB4c7^wjXP+He`F?s;QTn{q>5E=VuddCo#!rmEIpPM(fiD!{w=iqMkXH#IoNYJH*!?Q?$$=mAHXY zH9wNvD1M*8oz(oH(2d()r4JVy&#?bOzxvV5fG(NE;>Qe%a~TVpC0WgT($Lb;thDc^ z?-8>{&N$e>v*%MiK~XW%FX~2G5?0YQc71<;n}=4Zv@D4eE_t$!7>`OLEb)@&=#e-{ zJ>#e|&4VJ+G~xPAzZf^tl4hrCQfX5hKCSj9m&@t#xu|@allpe_BrcYOAYEg8AvP`$ z(ze2kn5+`ljXW9*R|XEUXT%>yihmm^{%2%i&>_AulDBbU_bBz*fNdgv3t<{DM%gCd zmRFwXbhtOfjUkex#8NWZd*Ey zc4WZ&`e~SK(^0}^jTAddfVz&tjsnzunGOU(nVKI6lEtq}oRGoA5ZHjAtA`Jo33|L@ zPh_?4fhbX!)y~DHfo9rB3`RvmwS{N#!A?9{jTsVWxmj94H`~3qw9@6bba~uT zEIldAl>R6bNUsPM=}lpZ^bf%(y-RtWmK&sxpp||?5Bn(lr*!$8E|=-@BV7h@834^R zX7qbhparK8qjEQ9sHm^9{i}PFZ2zKHUM1t+m{IfW%TK+$>uHYTnAy&kcKsPQxMfP7 zeRc-p9?xr*w15MIAf4`zPFXH!^I6@ujFvg2Ti7DnbHth)u_cF%wPk=x!`p9a(GCs< z!<%k5i<_>;3-L&fO#vKeQZ(#sZ6;%(>HW2)wPw>ztmxZ@QP8}@lTM{%+K`H(x-Dk0 zGzYn@#zLo%3^Qh|cqkKy{#zy+jTvpcUW(xu>s@B2jWOM2=H9ffGdnw`U2k1$b_yS| z&syKu=oHj#rZ+ZbIlKBXPq+A3MPx=hg};jPryk<&pu8Q)ymm=TP)wf9>(-mmw|pkR z76tTM%zX2^-deWJRByJfGD}e%wX8dx*RMB&0d9Lo=nZ8WP$0zPkq=jGF@^ zeSj+1^8xqeOaeuH$zyvO)`TbIiml!YnZrPQ52p*4#eNI;gfT;j^qNx9^6#bAW7MMd zvFq4p0aL5sly<_+64ai}W`FlI^8|B0b1(B(<`L#E%tOrYnO5dWW+(G2=3(ZK%paI% znRl6gGSW-TbIeoBzXt!sJjVQ*kzQt`zcJDaj9Xw1FbA1WnZ1nk3iAvj?PR2Tn7=b` zFds0|i}C{eHEi|)=6mJ`<`mP(Ob_!J<7Yl+jxhHzz9Fy)EesIxbJTndFdafcSf~Sap@>~2A*%vICxPVzuSXzRg;m`jccth{5#ixwU;W9t{659VS&`Q`D z#JDorqB(_?g+t(P9Z-SE-!Bh&kE`7Ee69T{%$^8KEK833nHnZlt)4UlQ~VSUnp}aUU#cm zXK(SqUQIkmKffgtuM5-M^$RPMOmy^cqQS7VI=<6SwbD9X9P;^vsPHbIOHP=DDnc?x z>%u(FbWka02rb@i*hC%^sy5!m_VQRx{xnXr$tX!&jDu%Y(pTVDns+81X$^*8-ONPM zmFxS!x}05-)gvW%*XB!!xDe}~d_9*QuB&OmN-(@I1ViponUL)2>)TAN>rDrF)6?tR zU#*47_vj5;n0}hf2Hob|HdAA+X`LA?*tE(FE^pdtHa%iCJ!&=`s{v<68SMy0x6!QI zWQIq@6)svfM!Y*ST=by17nSr*)!D}ME@OHZDX^fR^MX#BO21rI?=ofYqPUPVJWGhv zq%ysk?C0`N??t_B4DsKucrak_-+^FA5zA=S^5E2vc1 zx?4C!Nc_6ik`6&w8^uhek-<`h>d`2=iM*M^{mkP+{Lk7R>VF>ZT{Fgj^@v`gzz`aT zLF&Cr*}F0h=tFj7jNlHChqrf(VGqj_Mocj~_wat1wy;1JaJUOsSvjA%i|xZIAIF;3 z)<;|#bsVAmGMB`QKQ>ACa4NjSBJbN`J>4v|a*OC~9aqWIZyqmj263=VQXLw{ljK`! zt>aESvda{yBu`#9k#8w4Xs_mz^IRCtvy}3n{yXbIncgHU%+tKzXr(;5obW!NmHNEf zayy3>Uneq1(cUGxU`RY?4P-gJ|D_ejXwz7jPX(>$Todrj*7E!<+8>Ki>(x(ZJ>C9o z4bQ8B+NF$R08qwtE5|gbARYC~cO(WT#|xvS)Z_$Vlr%CqMbJnY9S~g;Nq!xHOLBA* zBsLpo@@s8^sY45VI8Q@XXcbuLUSWjoIZA8KU{fJEcWA{gidmH{4VmGz91vS|l3tTN_tzXcFXXBS#rF!=IWG-pMb8>`gi6X2YNcr%|K@m- zWB$!Sn=&|ZfjI?V&tjX>7 zkf5S(F$dd38{^a6W5(pt-DifJru&td-p zoDaf_pplMAuCGOa119zf5?;}Uo=eeSGs zq_A3PLbz_D8IGR>nmU-sk*Ub3{FJGDmXAn<=bLtU$6=~(G>3~enNj6k=6?4!mSprU z_xn?HRV`z6H??^5H7#&yHt?D?5bsjcLdtAf>*!W}E~G1OfdE~T()R;)CNXG3sCg)FkA0Hw&a+NNZRn{kDxm zn#0{HP_E-Bavsd&2-N69S8hzWlAox6K}fDzO;vv!sqH=WY4+^~UO7mGUTfgda*X;6 z`&W8=hVnhhy2M$49*O*Ci!+9K7_AxAg{Tk9W!q(q8We&2zub(T&|-Iz z#v`IZVLT;e$2cC5HE>-iZje|k8&aZ;vBdi|iR32s6%0^%0n&$m`$OVn_$fU8>ZQ54 znYd);=K8YIju?+|yfoqv$9LNAzklcb_G^=NlD8I?jmN7oBQW58`uTIU7&VvlIbH?_ z)aB}X->4{!VPhZyLbbsf@HQ7mv&p@FmNZDS3tjt{H)RPrM0LGTEk#59>lFVq2~5U` z`85!^b=f4w5%W>Y==$-9QY%=l+HFxZeP~f^htZ`Jriwb3>5o03cofJyVXI(vgg4$WH{! zA=YoR(p-6=Iygjx*2Y{(;aw^iIke>9-xHFDo8eKHaRk^yW3G+G;-uf23o_Sj&E21z zE6=ICJv_S$JtL7x$w)db6VYpMb%HXW8pdEP!tmyCBY8Fz>B&%4NAMst`Q7(08l^Ux zjtCl(ucT;hwEkAJEJufD70=h-)M8^A_>KGqg8`~Eo8uoq615YeI!nA99}=IRn&kw_ z`+cR3RG5D*^#^2;*5D7Nx}(N<>&g?Z>1-=KD0}?6gjr+nvJ5Yu}9)5=L?Zcn#BGL_8|e``b*9=b8HQOx`@x z19_%dd8YMwrib!O)AFX9EP23ixUM}HVO@keEnUXZh4;Q}0D5jQ0L8yD0L8dW@cz*N z6hC74ML*qqyMY@3b@b(7+Gj)o6){o{H;GR-ArMD_hS{-{1&UTi6dOXy<9U3Bf>rYl z1L23;ox!lt845l$HV5G*yl@e-A`aPR<+0xbzq~Y_Q{nM}yfjuV8Ms92<9SX_iIj)( z(z17;KkQ_>jvE{<{=d&}$z!8^Z0fieKU!PHogK@a??+|R@&bO|(cNw^eUfKgpI2jJ zmfM(4F;w7!#32-R`jH5MCKK{VGGkCi!KN2-ra zurYDt49323V=iKR#n?8JMpt{ekXiIpS2d3%qyuzLd8N6zMfB8XWI`|lq~*iL1kIRXRT!w3l`$K zueh+KXX&M&Df?QBJRRrYzEt@ef0FBFwk7R~FdE~)wqmYdGj){@G?s?L(i zO8cSKg;j@UEkROo$-Y+kQ)6FHa-e9Qy{fa4?iSOfxa?3>P2oXwyAXJ=7j-YJpeqb7 zWd~Zz%jWHm6s`WWs=DN0^_-Fe3#-a1{?*!AUD#2zz>SyoLxmN4TWuc|v`_!2;N$7- zwvRt<|LBdsx3;#uetfVM9RZ3dFZ(P~YL?yp8Q3yLq;S^ZsU;RK8eMUHRgilEp6$15{Y$o>y{UQDLOZC6xzC zD)(2F)po+}bOhh7*4B9?v#VdMEGwN;{o?$x;-P}5rmUj$#p*IV&pt3*+2Gpz88`C$ zwCj~Op1xt-jq7Ld{3oW9rZZTgcU`|?%*`CnM?v~~A^(v{T6F_*tqzN`F`@W04R5S}dHtIk-(Q!vWz*)3 zoByy5ux=iHANhUEyw}VW{XFge?8!6h)U2bEmKC<-Y({T>`dqZ6EFZCa;ffh6=H1eH z+l#j@U%vd-;#-@S$KSg9HlCk!Yu>Ft<^At>CiIl&Q>uPd`O9~fs^Y47RX?R(x+$vi zi<<^+I&~AJEw9>9^~^PIDeZIl`H>}bf9*$nl7vS;FXaje2FQ>Q0_H%5>=PfJ6!4rh zkVOUT#oEQnE&|!q;UQDVQA@1!?J=y|e}dQvg*n_r$?_BA$5?V7boRNzi!&HeGZj)E ziU<&QO$eiWWdXH=giK0U2n8K##1)4W>(!frowh-7F|kO8XA{K*88r( zqc{yQ=VlZ8MUWEbbF8dj7IJF&cQL2peL?-g7WTRTYN0y_?#GVnpok5-9>zg(v*!eS zq|_@02Rr>9FAOCKLIUDAW<0b zs)oteBcR)gnl*pZS zADWEYkOA!lA=%?6APevbFoyZ1M8RhWia%JERyV&ZOo4!JNeBfwoAC+g1ke#`v1wBQGW==5PfN0%L>NtYc5*t52f4Nwf6AoZMnO=PX zquP9XYjMCZ#3KhZTI497&_=@+Kp5ikY!bfUPM=Vc$`v5UItu!MV%->q}U4I+C5On=>Dsr-vln3r%}WhPK+pNx(2eutTG39ph(woN*5H* zSuku!4~W&E4+Ss3_W*$D!jU#IEXhqKn)Ed6wKrf8xPwx{QE8-+1&XoF3Pgb{u-=@Z z-gWV8=tRn|5t;bARW{B8HAi-hp0{Pd4^JO(fdA=7{Es=PRCHU7QQchkG-C{|oH*Lj z{UyaRKk^SSRXK)UIt6+4)Gj=N*HaNmE~1u;sJqoDf&!6T&qZ=!0a$(PnyX;2wWMJ!7u}FzL|b$9KZ8@fM4p7o(1=R9z;ixA-u=B zb*>cU{o6ci<6Nnt1HZIGFDO1}LBv8T!+tS9rlWoj=Hi*d-@sGC-JzK}ruIcg^6YQR z2FvWr?wTQvsonl|SNAqsix9tUV$Jr6%hPOw%Ew~6w{gnuwC+@PU<3a*tc(VOC#a2u zp%2`9aGLBA@<<3Gvd-{G%e&~VZU#LalnRlNVPJ23Y^r6Hc*J`3zf3U4viMc(*V&;y zV9#fZ^~ixpC^Zy_H;Djy1j3P*A}v7HHOqC<2qWtUT9#H1;pUJPBqScP`q<+;u;;Bg zfH-cA}&ufd+$EJB{79 z(SViL1FnVzi&%!NJ`adZ)B58MV#p$u9^ zsPpjM4k1C@J#ELtRm~IE^B#jkdhAdZ54gS>fJAWDs{ZaDrANC8x(m8Tv*-R~`-o%y zz&_Q=Jh3?k2B;!9-XFehCc`|q4UFjiIk^0a!(}JFO!K_``^A-p{SB$u(3Q;im5fGx zgJ><#{5zViw=;AdLDy#AIb&*CTPp2svkewN3Nl{GbjF-B`uZC9K7XP|pV5NS7>iNU zEZ9_Kg&_~_R6H4#7_(URbY}#|E`JE<2micifGyO>Ma39wB@KL|($L)^#Dt5L<2Ug6 z#v>yv(Noxq`>gOJ>qp zwM{S`a0J9v)7*F3oZhX|{b+SYaGOTiG5}iYcM1umT4l=+K?MN1vgI1kgLsEd1R|-! zUGQ~^k4|^NqA-C=)f{kOFXkklA4Ww!f0BXC!V@x7gdG?YJqj}>CEL5@9-7E?4HT}De=g!jm`4#FE| z4MZd_+A!1y9I4r!WA*~j6-MrqW}hQF1P=zG zl#7K>$qv9G)SszQF+kI`I1*+OioWAf1H{nEkR=wlW=9bQ4MGY?P6!4ypF0qqc*tG= z;zG^vp>fgRpUyqmHX}ACwmb4C@%behi;>SazsoU%Upb8vRiucGaaaz(Y!?I1k3rJidm+R2F1$j1H_0EiNk!!|~ z^&Wv=-qe{C_!S~6G$NZwy{NP(g_uBqJsx>7(*5kfRk`=rC|QcXD)&M?l01C*I^ zoG%G@P(6@?;Ak~fj?m-@h2gsLmUQ|cg*3}Z?U5>}?N}jRGrBMmq8NZz6Xr13imG9R z;i^j(M}oeguTlJGeryE1kp4~w)t{^mh!rKl;VN??Fpx4zczR(7PXr$tLQ#tJlN23` zW}<{Ro^q3a`$=j%;IWr86f{olavUR@tCr9MBi&D^4<^&TG|eZokhw{U7h?8JVwJW@ zkff&LYs;kz-8G5-m^GUxr`^Ruy57VjHc2BmH|cSnP-mkvnGtfq2Q0aeWydxF=ZWwj z<>wN)=j&uoM6yDC9Jl$5%Yz^GY!hPcpid|%4VjAg{5gDnC7++e=L=YHJ41KLUTqg* zDCAIB_Pj4Gc~JdKelGh#ejfWJQIa5s-3*qIfrGqfNRs_{{nO!hgBK4__rWUC*C?qi zQMQx@7-LI^+#=Ylct1W`U0Oug_FRpX=gFA@3vdujFoZ4Y;a#?*RO+-5RtmH*P3VOj z*+X^_*_uz0C1N2=A$XU^rOR|J8(S!nL${|Wz|OpCLg^@ybIDXs*`b=!yRoRkq;=7 zNM_>2H;O@RSMnJU0l3$!;$s=bc<;C}C4q~90~hi7*uMs~Fy@LQ(aEujN11p9!t%RH zA~WksenKnxd8v#v$QB@mTYRS&m0Pom;aK)k8*<5{pm=X_0NEMJ?%-c8aB?XMMiK8Y zBsqmkR~!kuXHcNHB1&6E(WeWB% zmh?9a5C)QlvGiy$0FXEFBPCf4$M2Pjgm{lF28>b68%0>=c8I+|q{1%VRDymo3J<*i za~MLGc8Cd3?kB;K5XAgb*_n~DWq5-@G68on!Uyo|Et<)`0~#Kx;s(Z2O^k?)ysicV&3mfQEe~^1j+&C-p$h#J91D^1V_mZ!TBDC#wDtV~a?e zoPL$OXJBs;k%0WTQUG4+GBTetPWp@5q z)bGAB8x^=~N|6JvpZ3<2N>9+GLui)17ILMBjK7iYH%@~YW3=3nQ$tNPy3jfm`3lyu zZ@3<+H4joXpt@zYD9mBMC%{hPLT@H=YTISp%P1L2({U>Fi~GvGXttDRiIXN;4*gWx zYsiPBiu&1?v&89hylAVf6t3;l;;W_JMYC~ig@5%5WsA=r<0#-_eOGs%RPbrQX3Aqi zKkPlp21gukyv+7AO5YpL%m@TFcpA{>EHWu@0|+Qc+~Xd_gKO`hWcFOAloRB+apIX$ zE;it5V2^hWq-AA8*K{?yEZ@V??T3u)Q)(LL7sKHC{8V;2s2(x$C7c@9dE5wGtGF0S zK?&@EXs|_-^PG3>JT{8A%W~qSG$=%WFS8}EU)x3o8hB{C@l6G6FPX;ZjEgqYDY*R{ zFqD+zn1!(zSDbWlY!1kz4no*!7*Qs`tfGfCDOqYYCX0*9*h51)1bbSNEC~e|cpMV) z{sadvPAg*rxCmc5P(BHG6kbLFo;$_vr(cMHPXQBW+5aeYc*f&D`S*o4sm?R04ynUi zK1Zx8b2rS9M#2f5V2qu9&d5F#5uKz|SaK3A@g1wnBF51Wln1C1ZBP>A7%Iqr>I>zw z0=^MWs%LRoG(rIV;sdsj4-F}KYULbyABcCC&%t0Ns7Ay^ADUUFn$Gr*Kul&FGIT|= zXHT@GI=j-WryK>q%%0Tj>Fjx1jw+<_I>ZOcl+h7MGt!a@Mckvxpb?a{rTVbj=gG3> zffRgBq=lZr4liOn96k$`~?_lPzbvM>N_)ipzuXAt*y~NUS)y z7L*f0z!ZX-Zfb!Rjo3&m>q^m)0oN(ggRp{2 zaFIPlRf?-ZrqqohJn!7yZ-fr$nThnGsdBg!R`Dxg9W&=UW2`iiR(!dV?(JN> zoOd*L!6WCt4mU$D5zqkuP(@JtZM4odSDX2xZr}v(r%P(IlWm(vAmz-(c}@5w8+IgURd$bvhH{D=0_z#tMj~dFyZp9dWQE%T zh4OIcyS6mXcG~8mMfP{L`PVeew%IBv^#^KMin-cB889JP+&>rl{n7q^%H3^qZAG}< ze$I%i3{}KdM&L&*cKpP7QTpMyoxrS{oGcJb?z#vAxcG|Jy~{yQwyH7 z2o!QiOQa)Yo6{O07 zZc%?w`&>on+Q*l!J_ZN0ugeeCH!9*l@%@k{tpSQ2$D20!4JF+$ob>M1r1VIVc6X%s z2XgU1WH5q&L(^7a-Cg0_`*kg<6&F=#+beXVE41zk-3=9Drusn(H zGKv`$*o?$|1357`9}h54%C*ThN;fKcPOj)Bxgz8Z&i`4}RKQlOwap(uMsR?jIHyAU z((qlt*AMgte~wMJBO`>_63h%74Obq7?~2@qgwxWg#5wYA6=$r_yj}sVUxO-3Yc=ik z>c3@LIGhQsA(OkpT{@NI+yC*W*qCQbB2tm3euNrg0PfG(0fq3CU7age`Nz;?^~@%( z86@h=P@^YYXKx8tA-D|v@q0yJw|vQ-lFo9mD&ZvSlTKS=RmQK_ zF6_I*%g-%-_G6Xs0ee6^V3*Dxl^cR%@_^kHX~|X_=!g68>T_u=#FtBU>GIXAmxi-8 z-7IIl`h5FR_Ip|5IS<|c0(S$CatL+5JeUbPs75ww_k$l|N=Gt){<0Uaz2dwD(v>|t zAVIJ^hdG$NUs*qwOI%TOP{cx@Uyrz0W;YFjLO6m$fP z3ltN)``X_BQ+mgkK5(_TjDEQL*=MB>jLHF96we-(4j$x#M_LhArSKVZ7jz^beZ5mN@=AKGSP!gWn%U|enyMrK17%y=PKzVjaoxl3!& zta-pM#?M8(LgLUO7B$z$hImB1`UZNSVk?<`iyW7EVGghwgozP0Sf9AO65S4AszfFb zA`Nj2N@tHNw2^mVUMQk5vN%}jiUVTJE0y9~l@SRn77|!?j9e2&BNXWI^|)`V1hUYQ z$G<~#RqhZwE1U7#j9;IJwuk(*DH=l3RYb}7_lqYheE~oc6l1GO?M@-l#`$F$EOb9z z89+bX&6Q|B;?V*qkZ~YfDbmmt*;}lH$Q{F;Yjk?0N}BtCXO4S$We|c4{Hj?2_m!LI ze)yL#P%3ZVLaWbD6`QMx9JW@69J`GQ`$o{SEjm7gUIV0SUOr}wYOC1D-`Bv~n1>sH z8}=x@-C9lS8bauDg&eFy{>Xg5Xi%lVzsnwSJZecUpt>8Uv+cZXkPWrj*?$K81PDyx zO49noX$;Qoik-qwnPLbjp8K7+x>})5#uYosM;sZEotm9hkeZg3ot>3dnw4g6luTS| zlQe~+n2_N**bK$uC@NUM&=u~0)zvoRuTzl)6cEb9ya^4(YlZ^(N}5qHRfRB@BAo>h zT4K=*doDiB(?~KW0$3ieCay{=cxo+rg-r$#wj=NqT_@$rKi4v0nju$r()vYyp+ge9 zzgrj-|FYPqY{Gnki)ZJ)sLl{|9|XrE$seM~#H*C}KFzp0YXUA1)JER?$I?i|ZLm;Q zlN*{`sN-kN$RwWTASE^-HKtLDwkTqG_Io6UHiVL6rJOy<(Y%Kyd&o~$A7<$LU2YEH z?lI)|p2r2u`J~Vu6G1<2reHVWE@v)bKigjgsjJ1c^hTi6E6Cg7N{u zSe3|_-52cf`N6&XHP)V*&Vg`wy8{P2%!S~6T&Kcbvvx;6YQl}bMn!Q(*U9tN1<+%L z_6pH9e?JZY?P1?@(R~bVX~~-%gC-*za(lWj0;%1*5B+vgV|&LL9fnfZ?&twe>7l)Z z@b>ih#5ZbsLSoCJ5TW|eIUQ17sp$!*|0~$jw4l3zOFxmad;pnn;9!3setxmO-QgpT zSYUoJ$m2u``@Qv8jk60D?sK|qPY-(I#GTv@O|^QQWSEH%qK1VV_#S8%JwD38B?d$A zMw#Un186;sNNorj^_NRBn9j%pT9xSlCdpiEzT6iZu^C!o<1JCaOxS;EC=fPJK~D)F zPvj53?-TE+K{$tR#cEg6xz+|=-nRmzWEF@@YX~TCx3v3lkAff=I+Wl-1C*9W!59cS zAqJiF=>0W*_Y(_;NXvtvr1?P@#x55GG-YB>i+(i{SL2+dK@3(XEA$gx6IoN3*sm87 z9a8kvS8!_H&>5P)gVenbYnt$Nc@P$_ROMPy;*8OmmU#7mXU82A80^A1H*{!?gmdZY z4(V?SmuJ@k%rvpB+K)5$O6`#)G2s4ofnUs67^E==grG5O1Ah=2?H2>Egmc9ka_#axY0t0T3PPjjSV&x22VW-i(Ud4W(M<l zBY-0tQcKh5CsuudH+y*Xl_oZ>$#5ctzmLbn&SXE`EsP`y&XDPTesR;I6Ya{uc$dMz ze&^_cM%=^8mVi)Z$d}dLabj^NHtMF~?)YN$c^=1kIK<3_-TlN)j-AnM>VE)vQlD_sOm5hLYtC)MAQ)Zz2Ma;uc0 z_ke53@&&Ok61%aLUuKJehzI-o)&_$|&R~nBypVJ3wpRB|wQ`#GueJ6zUBAPRBO%T@ z__Wz?h2An`hvFJdXB@{?)U~yHpQwcaA?7Lf3w7b`XB`3GWmr`bt!Er3TKVqw_fR)} z3?3zRb=X7UUGB!(*;%c}5_r2m=)WqJM@Y5rCow$$%59>lNfR0TaaM?AI5~LHVDLr2 z<)-+9S?>vktab|yD;7qR#3+Z*5lhVs#fM<-Os4Zd=vWh9Agev(!7_jm%6==(7=s`I z558~!PpRvgfndB4vSwj-$hp?itaGjJbIIs`X)Mk}L3)(>0*VHLBw94qqJ(h97>_=F z-wHICRS=8`3*N@sr(i$i4n0weeGbLAX{=RQ6d{#ce>33*r?6Uq9d8!zF^(8|A7W$W z0^)z_cJ%zNXH|30Lp|%a^*q>9v%TlHJ;sDFh)5XSeO;pWiMr)YJs5s{zoQ}k%*CFd zACR00Z#w5t@fUl1-8eZ-C8;clM^vir^gGs6UC*#Tp#LgocXp%-9K3wGCse^-q`a!| z_H&NQ9vMWr=|5A`&r;LRP}6_vaS9nQekFIOcaQ8&9hKBE=Vtffy5;WA>za&g4B6O*R4d+fbA(jT&&74X$>O>+e{bMEY%O@CCR}yVfuNoXjz!&< zF!sS!>w5x=_+_Pb-1It_bFIlZ3e)MmX=$7>Rn^nfY7f`;glmnl;Kdgls%~p{b`ScJ z-Ocu>dwY45Na8;2v0lL7XN2o6I?|~A9&`6~-J^Txf>4eoAq%eM%pTg^Q`=)q`YGGE z)}CHO0`_i+>D?UN)4L_Ace6r|Q!F$)nQ-Nfeaxk$OFN#Z>)pZt&D(p5YHNBBE#(f% z1BqT=+g0>3izgyjT-UR2XDNEBvNt|vSCy(7k2A;QdYT4$()iik7eJ%I&`|GJtd@Hp zpg@nF4=b5u`mPk4>`%s>+NojY!svnO1M|1&J#_GAJX!>@6Es4B@Dx2y*& z3a`zh)JjSbM#!Zt|90wZ`NAF32@J!hQt0S29jeFcJ^b=7S2#~>b#&QQqj+k7p zO>65OJ;oOp5WUO#d14(DP@<($I+PO6EsK;ZrgA=n2FZ~L(BCP9$m5Sx84x>fqr0Y? z-7nrMvmWAOQC+CTn=@^w-2lRJDAU)qT?l1y+iK|w^8~J6%X}|NNWBKc9GFazNj|>8 zKwJ}*0c5l!E?I_VU;+gME{|hgtD$o!Cg|bi{Vq8uNSwOdk^^)=J1m_F#*Ul>yXai5 zvEC|HFGH*W)$&L!gogJVnx^FxhhW!ir{4jT>xZ!#Rx3-oIC*&=GRuY2R%l{wC5V$( zpr`bP?ykN>wRjJMi+jnkmg=jI<*I!1L#L;f7vER zM;;>L{o2=WVebdxh_2s`5cIndoax_oP;X%gd)FZ@#6kLWi!3u%Ab#!kr67dYUw{3L zZK?+z_|4{nNzB2!EI*7ktoqz!n7P9ExbfM=pU?QKb-~=Hrrp!piuHJh9+?~7OIY#V z#s$c{_V=foKe|0->%UrW_H@5AySfIMTc|z*R{FUxtn`L>5G-!y+P;kPd|kN(Zk zzcfF9hIVW?b*g{I=TF=i+)IPCgTpYPpFR26ecQhgO570_-4~?hY!fM)nWo+bOJTVd4qY zj)dx=gg7ciL^65#a3V<#M~?iR=r@{- zbUg*PQi(NFss1CX2J1&SN68WuE{>4%n?o^_NQRgOP7As% zCB~=8z5`J#(ZC+6mFF3zR%BjMuYv8WeAh4Yk)a8sdHZ%$fLbD`1lnZW$`cbwf2Tgt zi6@A^B(}Y3n$O*IbIY>2qp!6PRqtH5aN(kzH^!WqvXeERs@$3Ir0biVv9G)9cSec# z{c)$_cHh~Z%s;{lb~1}UKio?BT5F1b>~3ANXWzeDw~TGhXx(=2+h4Xe+Y*yn9e>d* zZEdOOu9fFs>!iC!U63z3Ew4}0%Xbu}j&OMs+d{ECe=lqNhj$wrF4}00ScwL(>j1}! z1@#-v=%RXMpx^1ea0d?B!ct2dCK$%P1&VQxl~oeDU>`_wWQTQl7WOfQEI8if!8=$x zoj5SRcvvqDMNT~!QWELd9-Nvmq(J&R%V)_)?ZmBuvf&S{UJ)+0w>Y9m3l9h}h6MJE z%M(veAySQLrv&|m0BdIgKKSby0XndOdQ!K^4A?WVU*ga<*8KuI0G$SkdJSzH=eNJj zsSp6$@A0u0u127RbVVz%y~T1Iz`H=HBn)7;%NXM^DiYb{63WgdJqu?H1uQ3pm=HFF zME-&ZsxAj^W>IHWlVK7XFnUEd^IH(xy>hr;0bi#dayD>+Zpa$ct|62JTyE`3TdLNU ziStslHoewn(Ax5}wh3C>WUXzA)^?-ThNC_Tw6^J5+YGI3CfrA~H3NrW1oqg{u6gQW zPc=>~ZJKD0_5`=9wrQWE10_DN#BplXhsFdIv;x{YV_;9JYE;Vu6b6hWK-Bzu`;KQy zqXWTE(=LIIS;BGB06mDV#Z$-Hg?L@Nfd0itdKVv2`r{)*D#oo6|GWwk0O~_!!T2Fd zM5u45UQ!lOBiq&+Amvh4Skr*l8*sttMlp@;$zCyV)b*1jU2!q2VA;sCu@fc0QWBoPe+(`PZCD`{?yglwe?d1Aso*g3Sfe`0x(PC40UnRYO#E^c>QXe zy%+CrY_#)^4W;6ywLyZyqmOoAG29bGb%^s`9oS&lh+HV?p_Cg16`r76f}}JtjM&o< z*yK@}K3$Eo^pdS>>k-SQ|EQkVeN^wklcYW9SKzFs!RC0#wVss#9B?B8!S`kP8ZluF zp#yvKKB*7sUG+%a`&hmB`Rb6~U7v{x>`pFT$-EoaJj3#Q~YFWK=(;K)TQ=%yuh{=>)B=}Tpi)MkLt6P(V}GywteL0>fH6p z7(7siGwH7z1TuB5dJq0wz(Ct7QnSXWFS^F4udIi&j0(mfZyNFf2fV-WAN#kh@nwT< zPf@SXKj4}0l&|mv(H>4p!J0FKD1(9AWrP>ls^J0t+Zr4bSr3W*)ipj3bt`iChx~U< z20%yqS}n1tW8Vl--`IaLsNK7UjX^~98u`4Y(`#sA`~lbR! zu?Q7~cDF{d>IthVDuw?}mdcsxDul?D$ADgij z<32pdm^})P=?w2`OC2H{SDSnGTEGOuj(nOHg-=v_>t?#q!Kc@mYPMMsv%7d(8{&55 zlh+VsySPa_vWntWP3tfrbyL=fw=_y?-5;;)x*-0iaZkTPV`)Mw;axb*BYhi8K~YkS z_xMUldFc2`{WCP%P_wh+<#lvUXUC^^B7)3nX~IUEBX@?&=QZi4tb=hE>k1wJwtW?t zn&S4DcxU)-oD~VO3m4_D6ZhdKc3t+ZYvXn4>%{+T3RkJt=}qf0bvLZj&uaoEbozB- z%sMe`9gYe`51axoH^Idsj+eb2z+={Vr?J-7^-k~n>*+u__Xl?oJl+>KBPU{&gYLw_ zNSSDqf#VtW^}2aYV3X)KMgLY!S@(+wV8ju-SKNu6i9j=;+4fGC`;)DB)a%#n_-B_s ze;u)V%oG|0q{11zYl!Ro0{xQ;fqs$@&aQ;SP!Ej5pJpMn6H*W(Og)^}q}#b3m;hJ6 zE~ln&(Y@U5|#W2YF}52P+HEyw=jBxo^E#y&mIyVjaf$R6nHWU#~~>`%VD?t2Hf} z?*>UWSzS+4E?mCe9QoZc^xHD@+aUj9*I)yrhs}{g@O}d zd3v3Hs8%2P5U}k;=dHh9Z<^YqyL}VhJ2p)>IX8(bHi>txZ!?{1j+6$3?*FW%XX*=j zaZBTqcgf%a(2kG6x+9Qc{Aln37<9Oko?d5*bt~`G?_3Xz>hE2zThxSt2dH4zseWp& z^=j+l95i>32TcuC1qO!Gt5(-Xe&vH+<&#|_&nBif>?+>IW}QBJ2!zkBK>pkS&1C?Q4aS*8;AOgyo3ZY8Xe!XV2Rj6kC;#H+cy$@ zfVqfgn=ntXPw8-zII_Oui;ei(ZwSvdooyCRtU|QB;zSB8G?X&XO!Lb0>c$9lq{zVq z@^%vdf>bOBAj{V_+R{x~n*d7k-59VR`|cj@SeKFx`jRD!eCE<0?$%~#5cD6?PHht7 z>Tw9%(Unb-=FriV2(;JX;9n+{c$5+#D7D|;P0s!4+>aWyCcG~ZQLdWu#kfKwS$AQ1S}u=12(J4q|Dl+O^PIfCpO3G`!c z#jLrrEXG+?#j`4lXH_reW^jw_^CrwM#3>||TvbUC&TipmSC*6j-HV$dQv~FDWED^} zY11`JrbLS)hE+6ehUA8k15wJHK)kWB4U-Oot$luTkXW(2gok&DpEhDKRWLCS!gL>Q z0#G()y7vA}5MNGyyy@djk8P50)h=$LbK;<9Hg4503jK$h;AFxQol)BVII z8{@vE0T5y>c@JjStss{mmQmPn(%Nv`X_WB-yqb%eNTfsHhqDWfLft?vEdOj&Jk6F% z*tYJuN@i%~nnnU7yvY!dkmiJx77^0W*2v94NUXHu+A}n(>NfwkSv6;KKEsCPNtMrB zJEz>!Hn%A-($8*=@S&^ty`}M?&1`x^9O(lF1Jp?VAW#NAi5h;A^)U~$uWnW<#jjSW zFN1Y`x0xPe+TKH)!+zg3?LCelB_ulfh?NIJ&iyzZu#Z>&(C_g^Z=s{tDx~Oxl!d|h zZua;oo{)R}R`Ffbp?!wLZ^KQ&vbV^) zPH^?K6e$ci96h`LxD{i2j{~a>V1c;D?|*lz?%}Nt=cyoaVKR`; z0%Ihds6l|{w|d%umS|J&R^6qo+JUVo*&xTRL(4!f_YG=KZbenScy+RS8+G@9eEr#| z;vt|bZa|Mf8xc;To7@o6-OvEeqtiFEnerPjN|?py;ITt1ac>*MCZuz-O*0$12WOS< zCwZ}fM^d(amcgl0lh`~BDcwtrA>D(hr>;@l->6&OXq#zT)~H|J=;&_Q`%0s8|3{4?u(-TYrn2RY z+GUM5cI;@h)-~#HZgjfwM+PuF)^p8p9=CUVy3&D_E#UCr*jb!H5m$g(bvHNSFV_(< z3?Qe>W>uXa5g&HKz@5JrYL{keQ;^5sXlUo~2On@=WppfeCg6#HCp3k0Q<`ieOu8oR z8V4Iq<9&WGQ#Yz9WE-50)Jyp5SMn5rmkE%v$5kUsHI=hU?)@bx4L=V_f7)}+%2>!J z>dRO-m74q{+$odggaEDOnCEVUHAL(na-<<0UEiD^O>qJNc)}wKJ%{5C*YB;1ULrctqD8dmL?=r0-fIvX-?-f_-&&KU0)=PZBhy$9R9T%YS&bAIP{&UN1&K$r{ZdVul+s$URjui*>r zxHr9h6l>m_gL_hGh45Gc`7zeN4S-IJ%wh2xL0)R!|*68KgIP2NS;3>51 zjrSYN6Y3HN^nvG0m%KsR10P_>OgcKmfiAE+u8cst;tlMQ4%xa+e$S5PHc{@zZ{FYo zNXEeD5dZPUKL(dv_HGlU=#=)Hk8jKG8{=N_=Kkx=z3R=q=6&%aEa*ppYbdRae%{~$ z9DPHg0^CnLI}JU-3xLaT`+9>pfzBas>T6dQ#{l2O696CQ)<#A1SCj=@u+!A5^O0BQ z8?R1EPa3Vxc&}61HqX;J@EL2OOW^a(&X#C~M58;~z0eRwhwz5*1P)g}H)MGBO^x$h z8~3?(M!<}EgJy;l@kZyc*Xh*poh2NU0mp{ z*S}w=;hCps@qfBfY6HI4|M!*7#M}M6!R0W)<-j#pyg0GJ)fyK7cl5?(PlzV?e7w#o zZ*W_!gG2Y*V_X|$+y{JCGa}Kr4<@in#(glxpP`RCppILiwRMPb^o??&T)cZPN8flG z?kIR2=$oM1e~qJWq)lku`yO~9a8a;lZ5IHbcRqw(hX>uGtnF$SI4^gh4MHY5^l$re z@uwhhZ+QRbzr+C({2A6)n_!AN>UD8Vu%RQTv>M+3Bc%Vl9q#zxBLLaFFLz?`|Gg6g z;72sb?1&5=;5`f5yc*HHg*Lz`qa^-!tmE4Mju-haU&GoL2Zv_pf9i{d zMoIq;KPM-Rw7iBQjiiKzyc7+1T|1cm?mN z1N|j;!EgWb$ACXnon4aszq~$_s{T7)|0VtZg>U|Mt_}U}|H7sI%m4NN@9WpXUoZif z089WT@P8$N|8D+)e;+0Q6MzZ81YiO%0hjt+#;2oedR}X&V6Zwpu2+O^IX0Pr4L@4l@U;;1!m;g)w zCIAzF3BUwk0x$uX089WT026=-zyx3dFaekVOaLYT6MzZ81YiO%0hjmzB^f0}K4s>8uBqS$qAmIc*|Un@o0~_QxC@JlOEz@cRC*UWeQQ>FxEt2{rcgecBrYK-nR|kAviF3P)g?rw6N8oE8Pv2L;Auqj6M3Kc! zBqMDEZ4%-_6B80YzK{9v@x!N>xQxVv{M79HPpO~sO4ACf^D?WdzE^zBt17Oq{a#d8 z($e1ETG>?BU*A&K(An78Ha6VfHqbHAHP$;bJuvZmetuZX0 z^JMSn=;#z_XKxz^0}AC%WxSgYu zgU31|xg*Nn{sE2wXws=^AKS9*>cd^-TNW%&!B9jv%z;P#H6pJyZ3bw_<#t~w; z_=d9p>ut6>!lw43?oZq#J;46o_i|Tw=IP+9;-nVn`qslk=Y>a*uc5MvnYgv2we;^4 z!;WkP#RtzVeyOUdYZM6k*pHj(8yLQd_w%icCFGTr8LFGr+#QnqRwef`P`J&m%+1?RLk}S zod57^sb@HRv+tg=?`*cX3j~UTkpR;0qMP|n>MCT^V!QvxM!xJL^bzPKt zj6{-dl0ueo_ND^s9=$R<0+TxTwcFZ!+5uSZ{cG0K~*~`DV25%k9|pYh8p*TfL-hdjr&+Mxi1(CN$&WNQsn7Ix>5xnh8PTjxSuyPq*>Rmwxe47d_=tUQgvbL3M5*82kfaMI zlVyyhQeaJ_rIThbVk}i?Tu^Lis#AIE{Nm~J*DrM5PRw-lGGp5Xvz*-dPA05zRGL)Y$wz|GnoPnO+?} zxSyH0Q^~1FGx^zt=%jCcWl<`)TO=UIucBHZ$|cAlrrt10_mwU^qb2JwN2p7~xLd79 z+e+)P!=R4S14BIv2kq%&$u7yJ=Ji&JcKtO6%XO;K26y;xGM>?a^N*{(lxHMh9*DS~Xi0 zAJ{2pt4_LNqCDMycI{~Y;5vd2$=2!N?yHaU&hw9K!|dA}&LXimqHe^{kW%6$+~VP( zy~RoTnTC~v?_c(lCJcDY#FbrptSgRX_Y#DA>JR757dQZhmdyGkh=HK z5PlD=^EL2QRE}3u)hJK9JJ0AF=`J|iTCY5Ed2aT2)7~|}=YT+WR(Es^>5s&uBT7Ov zY7lzxi=g1d0AIY|(ERI>dGABsCVafwe|BUWu>YT%!TxJmScr0I+|4QN>K3pzc=FK2 zLaez-vZ}P9T;4pJH=FH_Dn~3=z1GN__K;DO=P#QNBodC;40F-Y&3s(5s(MQem5L=_u1<~RSg&#;!V=6(J7?Pj6mfW6hA z-mtop*@=|OnFvGY^M^SiwC{DQ34Xl-_E zR{mnFnQizIg%sR)Pm+}oo{||x{XYHu)&AeYd;#`9yOXOlJ0r80-{7HznYp95-Y2$C z^bF#RNzCOBdd8Ie{hXdY3)Fn^BH*2YYt{WKQ85#VN~u2U(|wy|+c@N{v$@TEB$utd zzw1}$-`jK)oPSEJ~Sm!e!SZ@`@Vu14d|b~%-@>`sZ9lt{+ozD!T)-Gy|_=juD+r1 z$5!+GR>Livx@k3zUp>7izfQ?ney)v-j*b7hHip3{G<;;eu(-5L)a7tUv9(FD?FPb; z&?=rU%IVoT%PH%9`9liyYZ#bVyzA=LC|b6dEV0BSq-5lBlquAOau&n_*>@P3nAI6I z9G&T;Ik~v+@)&cQctvoie!nLwCT`2{L*<#={Vw@miW3oGQV)C8H8iyZJ`^Y=7i&0A zn3$TGC+%m~8hEed09~zm8UJJcbNt5$xs3mlw`lTbrbY*c7fN|pIm84WNYpgdY4T`@ z%QxQ>7j8$|T>rJiRZU#7cDSG0Sy5S4{rv!$tYon9M^kePl0rXISLac;ZqLJG;FI zWfyXxk2B4hTHIROy*^yK(8o=oRN)MjLnH5U$q(Ye{>L}Z&c~Lerln_O_Pi79{Jz(v zYSDA;01bCQN!3KhMBQWZP~sAi5nA5z#}IsB_<)d1;lVLg2szL{8_C>sX1P4Ioy7u` zLS}Z3&X&%u(njf={w&PKthH=)E>9U`OI>()`N&!f6r;DNjo0SphAc*wXZA$6m)`>G&zcdO6GQ*};~RAT-`6jdSNyEf z{H{h;G9U%*e|Dc|d&gL(O}EAEy_P-dgNm7{vC+Td9uqFYXoF~6*V?vE|E`>@2Cu(V zBwipEAst3WKRISOO+JreF=X0i(qsYq|B&;9)0|rfSJ*)iRnSOSibVREB(9{p^aC`` zF(zgi)=svsf*jm-O}>WD%-zlIs0fRI^H29+OG?^Nc13Q?IYivNw-)F>FIDgNijPNu z{xb?Pc%7cA^ZcT&j8b}b|H+dNPNXjAN#%ASXHfl<>6z8w7KaMeM}@D7es%e$g-1k2 zMc250c1}p>Oq5CHZk>rOXNA_^o6)zL(#Q#|fBgMHZl}=2`Bx^JJCW|DZ$*^*o%8dj zao6)-mPa>Qmksd1`9~Q-z1g>GF%8Z?-V8oF+XUk38mRv$`d^YLguNw`6H%4bl%`3K ztNfhJ_@nl#fFQe^TsXy3BBfM*K9d~5n(EhsN7 zKfBxYLVQC*UWP&x@=K0V5n;09}nP8ix=@f)yMP*0Yy4q7X ztb3+7yTm+Ye1`s^v%RZ(@Z(K7?i})TD$%U*-d}%uzqR2f#>GUB#>&Srj)oObCx85u z;$O~k1KR(4Iad9fePhi$+d%(LekpgGA)H!9s2-3;2K!$-t_Vtk&ZAj%g5JL0XXVr3 z!y{8;5q};}B2UN9x?U6F7Z#Dm4i5WB5=3}kmQPwiT1Z)(n%@T#4H-!dj-?GM0jgI}Vo}Z5COYR4i&xM3Vcs1&w z`qxpvHAqfg!IfPXQ$QfNoo6_$kwPoK=>CDqg?d9&ck7fp40LDf&TNs*kMYX zUpGmeuh9=2*r3iYEE3LN7n(wTY6IdQ)u6x%jt}PX$?2INLOoI}+x;WTU=~a)Y(7kW zV^pSi8)*GEBu%Ud?n3LQS3)oGePEHx7tCQ(qaN7aq#5?^Wr*IdzTusz8Pnm#18)dapHO80_5We#5pC0r^ihl+1-t(O8%z-VNkGDLiAHWL9-r zx&Ve1#!6K?YVm>)b`DN`b_0JF#i}?#A>oIDR_|=W?D$_fFb~+q#n{C>-a6Prao*Y9 z!Z|*9zOlXLjfk+feIA&csqeK~4}7J}b&uaJUuqNI9t{FoX^yq!=kJRAUuFd=2T>IK ze33$U78V{+6;?g-_6v1e!iU6W->K+QCJHG24`sXNiuG@#Ht|nS9WL*Gz9lSAxx=I5 zlRIaf2+^!E2jp*cK>p{s#;b0O!WeZO)c@i{5;k~TsgYp+6;Z9ogmdFqKuN5|e$M$r z|0%OVm5P9%kfp%G;JaEawo=kEPgvgGGx=q&q^zR)RQ;CbqEGw-hlxHzBjeYGZ!&^( zgR(2~-bE>WHG8@13i(6vZi?>MpT9dsBCi8~=!+kf8)+|4u{}CQOP;%&1*LpavG^FY@ijRs+fI4#`)!otBvfGx{VM0vM zIH$SQ_q)H`>WJ>h!#f1^DT41yU%$_2%zTpkLZaOGERH7!yE~M7eFwpE8wCD*=Lm?i zk&McW8QB$FDQsz<(m5aMYufOuzNf!QNg+mcam{M5O8 zlvo2Sk-V=%k>Xf`Ykc)2mD}>;_*$wH*YS{XF-Yg_jIA79jh)svwy-q*@D1YY%*c$5 zl8yhEaKYdlJhYJo`tSMz5yv#jQ?jk?9qO%{B4TU!-a!8$u!8mLCC4{$W+t(jnp)KOF(L6=q|2^{3yI-!!%f}D$UxPoS|DH?Uksfk* zBVznZ@qv=E`-A82qvdRe-UCZ0K=iL~A<5Y}O~4JRAPO4v)8OkUi1at2^LBhap1VhT zSbO2uxx}DD{-DjzHt+7AFF)gf^B);i5)<%#wtn$Pcp()3Kaa02CTy&Hy7WJm!TO6w zN;AtJOrL)1mAnb`@87yrqN;HvDE{vksEu*<<7!P|3=PkWc8wb^&(BO_&koOf@DK

    k|H6(y|BmKbk%Q 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�g&hrl5Ny{&`-p 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≪g{uxHy`JL;XN*Y;)i+$7%vZ-oiq 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

    cl4cNLgUA4}V(mQx*oqPK}ei%7+hWI6|G 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%0Dx~k8p$yCCfLK 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

    +>6n&Dj#}A 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

    ?&gnST?g-8M?_p^=nwpoBLSCON2{YSjBU?4)qY) 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%0AvQX&1RM;u%6<~#D@u8Lr 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 z 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

    NP4VppHhtMYbtCT8FO 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 zV8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM z7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b* z1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd z0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwA zz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEj zFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r z3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@ z0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VK zfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5 zV8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM z7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b* z1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd z0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwA zz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEj zFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r z3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@ z0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VK zfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5 zV8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM z7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b* z1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd z0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwA zz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEj zFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r z3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@ z0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VK zfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5 zV8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM z7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b* z1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd z0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwA zz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEj zFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r z3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@ z0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VK zfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5 zV8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM z7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b* z1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd z0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwA zz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEj zFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r z3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@ z0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VK zfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5 zV8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM z7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b* z1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd z0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwA zz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEj zFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r z3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@ z0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VK zfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5 zV8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM z7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b* z1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd z0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwA zz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEj zFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r z3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@ z0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VK zfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5 zV8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM z7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b* z1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd z0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwA zz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEj zFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r z3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@ z0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VK zfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5 zV8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM z7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b* z1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd z0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwA zz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEj zFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r z3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@ z0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VK zfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5 zV8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM z7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b* z1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd z0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwA zz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEj zFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r z3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@ z0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VK zfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5 zV8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM z7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b* z1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd z0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwA zz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEj zFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r z3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@ z0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VK zfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5 zV8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM z7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b* z1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd z0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwA zz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEj zFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r z3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@ z0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VK zfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5 zV8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM z7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b* z1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd z0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwA zz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEj zFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r z3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@ z0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VK zfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5 zV8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM z7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b* z1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd z0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwA zz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEj zFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r z3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@ z0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VK zfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5 zV8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM z7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b* z1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd z0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwA zz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEj zFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r z3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@ z0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VK zfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5 zV8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM z7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b* z1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd z0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwA zz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEj zFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r z3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@ z0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VK zfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5 zV8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM z7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b* z1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd z0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwA zz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEj zFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r z3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@ z0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VK zfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5 zV8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM z7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b* z1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd z0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwA zz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEj zFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r z3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@ z0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VK zfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5 zV8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM z7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b* z1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd z0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwA zz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEj zFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r z3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@ z0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VK zfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5 zV8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM z7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b* z1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd z0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwA zz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEj zFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r z3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@ z0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VK zfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5 zV8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM z7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b* z1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd z0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwA zz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEj zFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r z3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@ z0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VK zfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5 zV8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM z7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b* z1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd z0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwA zz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEj zFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r z3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@ z0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VK zfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5 zV8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM z7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b* z1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd z0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwA zz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEj zFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r z3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@ z0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VK zfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5 zV8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM z7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b* z1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd z0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwA zz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEj zFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r z3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@ z0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VK zfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5 zV8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM z7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b* z1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd z0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwA zz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEj zFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r z3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@ z0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VK zfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5 zV8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM z7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b* z1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd z0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwA zz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEj zFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r z3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@ z0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VK zfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5 zV8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM z7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b* z1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd z0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwA zz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEj zFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r z3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@ z0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VK zfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5 zV8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM z7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b* z1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd z0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwA zz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEj zFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r k3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%;FM2xXRe!vFvP literal 0 HcmV?d00001 diff --git a/roms/SHARP_MZ80A_RFS_IMAGE_3.img b/roms/SHARP_MZ80A_RFS_IMAGE_3.img new file mode 100644 index 0000000000000000000000000000000000000000..744ff2fc2c66ab3125c7760517dc7e3479f1b7af GIT binary patch literal 16785408 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 %^`yr(e@pO^W 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%0Akb5HM1hhG;@Z{qnL8 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%0Am5U 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 {891P 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

    8H@A<24D6LD0rQiGh_?&*?Wcpi6&k1jr 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