From 047a7a96d92975129ebb27c25ce0ca52954d5f34 Mon Sep 17 00:00:00 2001 From: Marcin Gasperowicz Date: Fri, 21 Dec 2012 16:45:26 +0100 Subject: [PATCH] Initial commit The compiler is working. That's all :D --- .gitignore | 3 + Makefile | 15 + README | 3 + bin/align | 14 + bin/ar65 | Bin 0 -> 50268 bytes bin/ca65 | Bin 0 -> 265440 bytes bin/ca65html | 1220 +++++++++++++++++++++++++++++++++++++++ bin/cc65 | Bin 0 -> 461908 bytes bin/cl65 | Bin 0 -> 55620 bytes bin/co65 | Bin 0 -> 56040 bytes bin/da65 | Bin 0 -> 116812 bytes bin/ld65 | Bin 0 -> 181672 bytes bin/od65 | Bin 0 -> 55072 bytes disk | 3 + include/console.h | 48 ++ include/disk.h | 29 + include/iox.h | 46 ++ include/redbus.h | 33 ++ lib/Makefile | 21 + lib/asminc/mmu.inc | 4 + lib/asminc/zeropage.inc | 21 + lib/common/Makefile | 217 +++++++ lib/common/copydata.s | 49 ++ lib/common/zerobss.s | 46 ++ lib/rpc8e.cfg | 40 ++ lib/rpc8e.lib | Bin 0 -> 108327 bytes lib/rpc8e/Makefile | 45 ++ lib/rpc8e/crt0.s | 95 +++ lib/rpc8e/redbus.s | 55 ++ lib/runtime/Makefile | 234 ++++++++ lib/runtime/add.s | 39 ++ lib/runtime/addeqsp.s | 24 + lib/runtime/addysp.s | 21 + lib/runtime/along.s | 24 + lib/runtime/and.s | 30 + lib/runtime/aslax1.s | 17 + lib/runtime/aslax2.s | 18 + lib/runtime/aslax3.s | 20 + lib/runtime/aslax4.s | 22 + lib/runtime/asleax1.s | 19 + lib/runtime/asleax2.s | 23 + lib/runtime/asleax3.s | 27 + lib/runtime/asleax4.s | 22 + lib/runtime/asr.s | 60 ++ lib/runtime/asrax1.s | 16 + lib/runtime/asrax2.s | 19 + lib/runtime/asrax3.s | 23 + lib/runtime/asrax4.s | 26 + lib/runtime/asreax1.s | 20 + lib/runtime/asreax2.s | 25 + lib/runtime/asreax3.s | 30 + lib/runtime/asreax4.s | 23 + lib/runtime/axlong.s | 26 + lib/runtime/bneg.s | 20 + lib/runtime/bpushbsp.s | 18 + lib/runtime/call.s | 13 + lib/runtime/callirq.s | 63 ++ lib/runtime/callmain.s | 40 ++ lib/runtime/compl.s | 17 + lib/runtime/condes.s | 84 +++ lib/runtime/decax1.s | 18 + lib/runtime/decax2.s | 18 + lib/runtime/decax3.s | 18 + lib/runtime/decax4.s | 18 + lib/runtime/decax5.s | 18 + lib/runtime/decax6.s | 18 + lib/runtime/decax7.s | 18 + lib/runtime/decax8.s | 18 + lib/runtime/decaxy.s | 21 + lib/runtime/decsp1.s | 23 + lib/runtime/decsp2.s | 27 + lib/runtime/decsp3.s | 27 + lib/runtime/decsp4.s | 27 + lib/runtime/decsp5.s | 27 + lib/runtime/decsp6.s | 27 + lib/runtime/decsp7.s | 25 + lib/runtime/decsp8.s | 27 + lib/runtime/div.s | 37 ++ lib/runtime/enter.s | 18 + lib/runtime/eq.s | 17 + lib/runtime/ge.s | 17 + lib/runtime/gt.s | 18 + lib/runtime/icmp.s | 47 ++ lib/runtime/incax1.s | 24 + lib/runtime/incax2.s | 18 + lib/runtime/incax3.s | 16 + lib/runtime/incax5.s | 16 + lib/runtime/incax6.s | 16 + lib/runtime/incax7.s | 16 + lib/runtime/incax8.s | 16 + lib/runtime/incaxy.s | 17 + lib/runtime/incsp1.s | 22 + lib/runtime/incsp2.s | 47 ++ lib/runtime/incsp3.s | 20 + lib/runtime/incsp4.s | 20 + lib/runtime/incsp5.s | 20 + lib/runtime/incsp6.s | 20 + lib/runtime/incsp7.s | 20 + lib/runtime/incsp8.s | 17 + lib/runtime/jmpvec.s | 14 + lib/runtime/ladd.s | 44 ++ lib/runtime/laddeq.s | 53 ++ lib/runtime/laddeqsp.s | 34 ++ lib/runtime/land.s | 36 ++ lib/runtime/lasr.s | 44 ++ lib/runtime/lbneg.s | 22 + lib/runtime/lcmp.s | 56 ++ lib/runtime/lcompl.s | 26 + lib/runtime/ldai.s | 19 + lib/runtime/ldau0sp.s | 27 + lib/runtime/ldaui.s | 16 + lib/runtime/ldauisp.s | 24 + lib/runtime/ldaxi.s | 19 + lib/runtime/ldaxsp.s | 20 + lib/runtime/ldeaxi.s | 25 + lib/runtime/ldeaxysp.s | 28 + lib/runtime/ldec.s | 26 + lib/runtime/ldiv.s | 40 ++ lib/runtime/le.s | 17 + lib/runtime/leaaxsp.s | 23 + lib/runtime/leave.s | 37 ++ lib/runtime/leq.s | 15 + lib/runtime/lge.s | 13 + lib/runtime/lgt.s | 14 + lib/runtime/linc.s | 24 + lib/runtime/lle.s | 13 + lib/runtime/llt.s | 12 + lib/runtime/lmod.s | 44 ++ lib/runtime/lmul.s | 69 +++ lib/runtime/lne.s | 14 + lib/runtime/lneg.s | 31 + lib/runtime/lor.s | 36 ++ lib/runtime/lpop.s | 25 + lib/runtime/lpush.s | 34 ++ lib/runtime/lrsub.s | 38 ++ lib/runtime/lsave.s | 28 + lib/runtime/lshelp.s | 65 +++ lib/runtime/lshl.s | 44 ++ lib/runtime/lshr.s | 48 ++ lib/runtime/lsub.s | 47 ++ lib/runtime/lsubeq.s | 56 ++ lib/runtime/lsubeqsp.s | 36 ++ lib/runtime/lt.s | 17 + lib/runtime/ltest.s | 22 + lib/runtime/ludiv.s | 98 ++++ lib/runtime/luge.s | 13 + lib/runtime/lugt.s | 14 + lib/runtime/lule.s | 13 + lib/runtime/lult.s | 12 + lib/runtime/lumod.s | 26 + lib/runtime/lxor.s | 37 ++ lib/runtime/makebool.s | 60 ++ lib/runtime/mod.s | 37 ++ lib/runtime/mul.s | 69 +++ lib/runtime/mul8.s | 63 ++ lib/runtime/mulax10.s | 32 + lib/runtime/mulax3.s | 27 + lib/runtime/mulax5.s | 29 + lib/runtime/mulax6.s | 30 + lib/runtime/mulax7.s | 33 ++ lib/runtime/mulax9.s | 32 + lib/runtime/ne.s | 18 + lib/runtime/neg.s | 21 + lib/runtime/or.s | 23 + lib/runtime/popa.s | 29 + lib/runtime/popsreg.s | 27 + lib/runtime/push1.s | 19 + lib/runtime/push2.s | 19 + lib/runtime/push3.s | 19 + lib/runtime/push4.s | 19 + lib/runtime/push5.s | 19 + lib/runtime/push6.s | 19 + lib/runtime/push7.s | 19 + lib/runtime/pusha.s | 33 ++ lib/runtime/pushaff.s | 20 + lib/runtime/pushax.s | 35 ++ lib/runtime/pushb.s | 30 + lib/runtime/pushbsp.s | 17 + lib/runtime/pushc0.s | 19 + lib/runtime/pushc1.s | 19 + lib/runtime/pushc2.s | 19 + lib/runtime/pushlysp.s | 31 + lib/runtime/pushw.s | 21 + lib/runtime/pushwsp.s | 31 + lib/runtime/regswap.s | 28 + lib/runtime/regswap1.s | 22 + lib/runtime/regswap2.s | 35 ++ lib/runtime/return0.s | 20 + lib/runtime/return1.s | 20 + lib/runtime/rsub.s | 29 + lib/runtime/shelp.s | 30 + lib/runtime/shl.s | 58 ++ lib/runtime/shr.s | 55 ++ lib/runtime/shrax1.s | 15 + lib/runtime/shrax2.s | 18 + lib/runtime/shrax3.s | 20 + lib/runtime/shrax4.s | 22 + lib/runtime/shreax1.s | 18 + lib/runtime/shreax2.s | 22 + lib/runtime/shreax3.s | 26 + lib/runtime/shreax4.s | 21 + lib/runtime/staspidx.s | 28 + lib/runtime/staxsp.s | 20 + lib/runtime/staxspi.s | 32 + lib/runtime/steaxsp.s | 27 + lib/runtime/steaxspi.s | 39 ++ lib/runtime/stkchk.s | 114 ++++ lib/runtime/sub.s | 35 ++ lib/runtime/subeqsp.s | 26 + lib/runtime/subysp.s | 24 + lib/runtime/swap.s | 25 + lib/runtime/tosint.s | 33 ++ lib/runtime/toslong.s | 60 ++ lib/runtime/udiv.s | 82 +++ lib/runtime/uge.s | 20 + lib/runtime/ugt.s | 18 + lib/runtime/ule.s | 18 + lib/runtime/ult.s | 18 + lib/runtime/umod.s | 28 + lib/runtime/xor.s | 23 + lib/runtime/zeropage.s | 34 ++ script/disk | 4 + test/Makefile | 33 ++ test/irc_client.c | 185 ++++++ test/test_rb.c | 22 + test/test_rb.s | 64 ++ 226 files changed, 7941 insertions(+) create mode 100644 .gitignore create mode 100644 Makefile create mode 100644 README create mode 100755 bin/align create mode 100755 bin/ar65 create mode 100755 bin/ca65 create mode 100755 bin/ca65html create mode 100755 bin/cc65 create mode 100755 bin/cl65 create mode 100755 bin/co65 create mode 100755 bin/da65 create mode 100755 bin/ld65 create mode 100755 bin/od65 create mode 100755 disk create mode 100644 include/console.h create mode 100644 include/disk.h create mode 100644 include/iox.h create mode 100644 include/redbus.h create mode 100644 lib/Makefile create mode 100644 lib/asminc/mmu.inc create mode 100644 lib/asminc/zeropage.inc create mode 100644 lib/common/Makefile create mode 100644 lib/common/copydata.s create mode 100644 lib/common/zerobss.s create mode 100644 lib/rpc8e.cfg create mode 100644 lib/rpc8e.lib create mode 100644 lib/rpc8e/Makefile create mode 100644 lib/rpc8e/crt0.s create mode 100644 lib/rpc8e/redbus.s create mode 100644 lib/runtime/Makefile create mode 100644 lib/runtime/add.s create mode 100644 lib/runtime/addeqsp.s create mode 100644 lib/runtime/addysp.s create mode 100644 lib/runtime/along.s create mode 100644 lib/runtime/and.s create mode 100644 lib/runtime/aslax1.s create mode 100644 lib/runtime/aslax2.s create mode 100644 lib/runtime/aslax3.s create mode 100644 lib/runtime/aslax4.s create mode 100644 lib/runtime/asleax1.s create mode 100644 lib/runtime/asleax2.s create mode 100644 lib/runtime/asleax3.s create mode 100644 lib/runtime/asleax4.s create mode 100644 lib/runtime/asr.s create mode 100644 lib/runtime/asrax1.s create mode 100644 lib/runtime/asrax2.s create mode 100644 lib/runtime/asrax3.s create mode 100644 lib/runtime/asrax4.s create mode 100644 lib/runtime/asreax1.s create mode 100644 lib/runtime/asreax2.s create mode 100644 lib/runtime/asreax3.s create mode 100644 lib/runtime/asreax4.s create mode 100644 lib/runtime/axlong.s create mode 100644 lib/runtime/bneg.s create mode 100644 lib/runtime/bpushbsp.s create mode 100644 lib/runtime/call.s create mode 100644 lib/runtime/callirq.s create mode 100644 lib/runtime/callmain.s create mode 100644 lib/runtime/compl.s create mode 100644 lib/runtime/condes.s create mode 100644 lib/runtime/decax1.s create mode 100644 lib/runtime/decax2.s create mode 100644 lib/runtime/decax3.s create mode 100644 lib/runtime/decax4.s create mode 100644 lib/runtime/decax5.s create mode 100644 lib/runtime/decax6.s create mode 100644 lib/runtime/decax7.s create mode 100644 lib/runtime/decax8.s create mode 100644 lib/runtime/decaxy.s create mode 100644 lib/runtime/decsp1.s create mode 100644 lib/runtime/decsp2.s create mode 100644 lib/runtime/decsp3.s create mode 100644 lib/runtime/decsp4.s create mode 100644 lib/runtime/decsp5.s create mode 100644 lib/runtime/decsp6.s create mode 100644 lib/runtime/decsp7.s create mode 100644 lib/runtime/decsp8.s create mode 100644 lib/runtime/div.s create mode 100644 lib/runtime/enter.s create mode 100644 lib/runtime/eq.s create mode 100644 lib/runtime/ge.s create mode 100644 lib/runtime/gt.s create mode 100644 lib/runtime/icmp.s create mode 100644 lib/runtime/incax1.s create mode 100644 lib/runtime/incax2.s create mode 100644 lib/runtime/incax3.s create mode 100644 lib/runtime/incax5.s create mode 100644 lib/runtime/incax6.s create mode 100644 lib/runtime/incax7.s create mode 100644 lib/runtime/incax8.s create mode 100644 lib/runtime/incaxy.s create mode 100644 lib/runtime/incsp1.s create mode 100644 lib/runtime/incsp2.s create mode 100644 lib/runtime/incsp3.s create mode 100644 lib/runtime/incsp4.s create mode 100644 lib/runtime/incsp5.s create mode 100644 lib/runtime/incsp6.s create mode 100644 lib/runtime/incsp7.s create mode 100644 lib/runtime/incsp8.s create mode 100644 lib/runtime/jmpvec.s create mode 100644 lib/runtime/ladd.s create mode 100644 lib/runtime/laddeq.s create mode 100644 lib/runtime/laddeqsp.s create mode 100644 lib/runtime/land.s create mode 100644 lib/runtime/lasr.s create mode 100644 lib/runtime/lbneg.s create mode 100644 lib/runtime/lcmp.s create mode 100644 lib/runtime/lcompl.s create mode 100644 lib/runtime/ldai.s create mode 100644 lib/runtime/ldau0sp.s create mode 100644 lib/runtime/ldaui.s create mode 100644 lib/runtime/ldauisp.s create mode 100644 lib/runtime/ldaxi.s create mode 100644 lib/runtime/ldaxsp.s create mode 100644 lib/runtime/ldeaxi.s create mode 100644 lib/runtime/ldeaxysp.s create mode 100644 lib/runtime/ldec.s create mode 100644 lib/runtime/ldiv.s create mode 100644 lib/runtime/le.s create mode 100644 lib/runtime/leaaxsp.s create mode 100644 lib/runtime/leave.s create mode 100644 lib/runtime/leq.s create mode 100644 lib/runtime/lge.s create mode 100644 lib/runtime/lgt.s create mode 100644 lib/runtime/linc.s create mode 100644 lib/runtime/lle.s create mode 100644 lib/runtime/llt.s create mode 100644 lib/runtime/lmod.s create mode 100644 lib/runtime/lmul.s create mode 100644 lib/runtime/lne.s create mode 100644 lib/runtime/lneg.s create mode 100644 lib/runtime/lor.s create mode 100644 lib/runtime/lpop.s create mode 100644 lib/runtime/lpush.s create mode 100644 lib/runtime/lrsub.s create mode 100644 lib/runtime/lsave.s create mode 100644 lib/runtime/lshelp.s create mode 100644 lib/runtime/lshl.s create mode 100644 lib/runtime/lshr.s create mode 100644 lib/runtime/lsub.s create mode 100644 lib/runtime/lsubeq.s create mode 100644 lib/runtime/lsubeqsp.s create mode 100644 lib/runtime/lt.s create mode 100644 lib/runtime/ltest.s create mode 100644 lib/runtime/ludiv.s create mode 100644 lib/runtime/luge.s create mode 100644 lib/runtime/lugt.s create mode 100644 lib/runtime/lule.s create mode 100644 lib/runtime/lult.s create mode 100644 lib/runtime/lumod.s create mode 100644 lib/runtime/lxor.s create mode 100644 lib/runtime/makebool.s create mode 100644 lib/runtime/mod.s create mode 100644 lib/runtime/mul.s create mode 100644 lib/runtime/mul8.s create mode 100644 lib/runtime/mulax10.s create mode 100644 lib/runtime/mulax3.s create mode 100644 lib/runtime/mulax5.s create mode 100644 lib/runtime/mulax6.s create mode 100644 lib/runtime/mulax7.s create mode 100644 lib/runtime/mulax9.s create mode 100644 lib/runtime/ne.s create mode 100644 lib/runtime/neg.s create mode 100644 lib/runtime/or.s create mode 100644 lib/runtime/popa.s create mode 100644 lib/runtime/popsreg.s create mode 100644 lib/runtime/push1.s create mode 100644 lib/runtime/push2.s create mode 100644 lib/runtime/push3.s create mode 100644 lib/runtime/push4.s create mode 100644 lib/runtime/push5.s create mode 100644 lib/runtime/push6.s create mode 100644 lib/runtime/push7.s create mode 100644 lib/runtime/pusha.s create mode 100644 lib/runtime/pushaff.s create mode 100644 lib/runtime/pushax.s create mode 100644 lib/runtime/pushb.s create mode 100644 lib/runtime/pushbsp.s create mode 100644 lib/runtime/pushc0.s create mode 100644 lib/runtime/pushc1.s create mode 100644 lib/runtime/pushc2.s create mode 100644 lib/runtime/pushlysp.s create mode 100644 lib/runtime/pushw.s create mode 100644 lib/runtime/pushwsp.s create mode 100644 lib/runtime/regswap.s create mode 100644 lib/runtime/regswap1.s create mode 100644 lib/runtime/regswap2.s create mode 100644 lib/runtime/return0.s create mode 100644 lib/runtime/return1.s create mode 100644 lib/runtime/rsub.s create mode 100644 lib/runtime/shelp.s create mode 100644 lib/runtime/shl.s create mode 100644 lib/runtime/shr.s create mode 100644 lib/runtime/shrax1.s create mode 100644 lib/runtime/shrax2.s create mode 100644 lib/runtime/shrax3.s create mode 100644 lib/runtime/shrax4.s create mode 100644 lib/runtime/shreax1.s create mode 100644 lib/runtime/shreax2.s create mode 100644 lib/runtime/shreax3.s create mode 100644 lib/runtime/shreax4.s create mode 100644 lib/runtime/staspidx.s create mode 100644 lib/runtime/staxsp.s create mode 100644 lib/runtime/staxspi.s create mode 100644 lib/runtime/steaxsp.s create mode 100644 lib/runtime/steaxspi.s create mode 100644 lib/runtime/stkchk.s create mode 100644 lib/runtime/sub.s create mode 100644 lib/runtime/subeqsp.s create mode 100644 lib/runtime/subysp.s create mode 100644 lib/runtime/swap.s create mode 100644 lib/runtime/tosint.s create mode 100644 lib/runtime/toslong.s create mode 100644 lib/runtime/udiv.s create mode 100644 lib/runtime/uge.s create mode 100644 lib/runtime/ugt.s create mode 100644 lib/runtime/ule.s create mode 100644 lib/runtime/ult.s create mode 100644 lib/runtime/umod.s create mode 100644 lib/runtime/xor.s create mode 100644 lib/runtime/zeropage.s create mode 100644 script/disk create mode 100644 test/Makefile create mode 100644 test/irc_client.c create mode 100644 test/test_rb.c create mode 100644 test/test_rb.s diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..be91256 --- /dev/null +++ b/.gitignore @@ -0,0 +1,3 @@ +.DS_Store +*.o +*.img diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..610dd9a --- /dev/null +++ b/Makefile @@ -0,0 +1,15 @@ +CC = bin/cc65 +AS = bin/ca65 +LD = bin/ld65 +export CPU = 65c02 + +.PHONY: all +all: lib test + +.PHONY: test +test: + make -C test/ + +.PHONY: lib +lib: + make -C lib/ \ No newline at end of file diff --git a/README b/README new file mode 100644 index 0000000..7716e83 --- /dev/null +++ b/README @@ -0,0 +1,3 @@ +Nothing to see here. + +Find me on #redpower at espernet IRC. \ No newline at end of file diff --git a/bin/align b/bin/align new file mode 100755 index 0000000..4da0baf --- /dev/null +++ b/bin/align @@ -0,0 +1,14 @@ +#!/bin/bash +BS=128 +COUNT=`wc -c $1` +BYTES=${COUNT//[^0-9]/} +BLOCKS=$(( BYTES / BS )) +SECTORS=$(( BLOCKS + 1 )) +echo "Code size = " $BYTES +echo "Image size = " $SECTORS " * " $BS " = " $(( SECTORS * BS )) +dd if=/dev/zero of=$1.pad bs=$BS count=$SECTORS > /dev/null 2>&1 +dd if=$1 of=$1.pad conv=notrunc > /dev/null 2>&1 +rm $1 +mv $1.pad $1 +#echo $BLOCKS " bytes aligned to " $NEWBLOCKS " blocks" +#dd if=/dev/zero oflag=seek_bytes seek=$BLOCKS of=$1 bs=16 count=$NEWBLOCKS conv=notrunc \ No newline at end of file diff --git a/bin/ar65 b/bin/ar65 new file mode 100755 index 0000000000000000000000000000000000000000..1fd945c635ef763bcdf1ddf401965a4f7d115e54 GIT binary patch literal 50268 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 literal 0 HcmV?d00001 diff --git a/bin/ca65 b/bin/ca65 new file mode 100755 index 0000000000000000000000000000000000000000..55b20c8df073528dee60dcb24c482df4808257e6 GIT binary patch literal 265440 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 E1E!EAp#T5? literal 0 HcmV?d00001 diff --git a/bin/ca65html b/bin/ca65html new file mode 100755 index 0000000..3d82aba --- /dev/null +++ b/bin/ca65html @@ -0,0 +1,1220 @@ +#!/usr/bin/perl +############################################################################### +# # +# ca65html # +# # +# Convert a ca65 source into HTML # +# # +# # +# # +# (C) 2000-2007 Ullrich von Bassewitz # +# Roemerstrasse 52 # +# D-70794 Filderstadt # +# EMail: uz@cc65.org # +# # +# # +# This software is provided 'as-is', without any expressed or implied # +# warranty. In no event will the authors be held liable for any damages # +# arising from the use of this software. # +# # +# Permission is granted to anyone to use this software for any purpose, # +# including commercial applications, and to alter it and redistribute it # +# freely, subject to the following restrictions: # +# # +# 1. The origin of this software must not be misrepresented; you must not # +# claim that you wrote the original software. If you use this software # +# in a product, an acknowledgment in the product documentation would be # +# appreciated but is not required. # +# 2. Altered source versions must be plainly marked as such, and must not # +# be misrepresented as being the original software. # +# 3. This notice may not be removed or altered from any source # +# distribution. # +# # +############################################################################### + + + +# Things currently missing: +# +# - Scoping with .proc/.endproc, .scope/.endscope, .enum/.endenum, +# .struct/.endstruct, .union/endunion, .repeat/.endrep, .local +# - .global is ignored +# - .case is ignored, labels are always case-sensitive +# - .include handling (difficult) +# - The global namespace operator :: +# + + + +use strict 'vars'; +use warnings; + +# Modules +use Getopt::Long; + + + +#-----------------------------------------------------------------------------# +# Variables # +# ----------------------------------------------------------------------------# + + + +# Global variables +my %Files = (); # List of all files. +my $FileCount = 0; # Number of input files +my %Exports = (); # List of exported symbols. +my %Imports = (); # List of imported symbols. +my %Labels = (); # List of all labels +my $LabelNum = 0; # Counter to generate unique labels + +# Command line options +my $BGColor = "#FFFFFF"; # Background color +my $Colorize = 0; # Colorize the output +my $CommentColor = "#B22222"; # Color for comments +my $CRefs = 0; # Add references to the C file +my $CtrlColor = "#228B22"; # Color for control directives +my $CvtTabs = 0; # Convert tabs to spaces +my $TabSize = 8; # This is how god created them +my $Debug = 0; # No debugging +my $Help = 0; # Help flag +my $HTMLDir = ""; # Directory in which to create the files +my $IndexCols = 6; # Columns in the file listing +my $IndexTitle = "Index"; # Title of index page +my $IndexName = "index.html"; # Name of index page +my $IndexPage = 0; # Create an index page +my $KeywordColor = "#A020F0"; # Color for keywords +my $LineLabels = 0; # Add a HTML label to each line +my $LineNumbers = 0; # Add line numbers to the output +my $LinkStyle = 0; # Default link style +my $ReplaceExt = 0; # Replace extension instead of appending +my $StringColor = "#6169C1"; # Color for strings +my $TextColor = "#000000"; # Text color +my $Verbose = 0; # Be quiet + +# Table used to convert the label number into names +my @NameTab = ('A' .. 'Z', '0' .. '9'); + + + +#-----------------------------------------------------------------------------# +# Helper functions # +# ----------------------------------------------------------------------------# + + + +# Terminate with an error +sub Abort { + print STDERR "ca65html: @_\n"; + exit 1; +} + +# Print a message if verbose is true +sub Gabble { + if ($Verbose) { + print "ca65html: @_\n"; + } +} + +# Generate a label and return it +sub GenLabel { + + my $I; + my $L = "";; + my $Num = $LabelNum++; + + # Generate the label + for ($I = 0; $I < 4; $I++) { + $L = $NameTab[$Num % 36] . $L; + $Num /= 36; + } + return $L; +} + +# Make an output file name from an input file name +sub GetOutName { + + # Input name is parameter + my $InName = $_[0]; + + # Create the output file name from the input file name + if ($ReplaceExt && $InName =~ /^(.+)\.([^\.\/]*)$/) { + return "$1.html"; + } else { + return "$InName.html"; + } +} + +# Translate some HTML characters into harmless names. +sub Cleanup { + my $S = shift (@_); + $S =~ s/&/&/g; + $S =~ s//>/g; + $S =~ s/\"/"/g; + return $S; +} + +# Strip a path from a filename and return just the name +sub StripPath { + + # Filename is argument + my $FileName = $_[0]; + + # Remove a path name if we have one + $FileName =~ /^(.*?)([^\/]*)$/; + return $2; +} + + + +#-----------------------------------------------------------------------------# +# Document header and footer # +# ----------------------------------------------------------------------------# + + + +# Print the document header +sub DocHeader { + my $OUT = shift (@_); + my $Asm = shift (@_); + print $OUT "\n"; + print $OUT <<"EOF"; + + + + +$Asm + + + +

$Asm

+EOF +} + +# Print the document footer +sub DocFooter { + my $OUT = shift (@_); + my $Name = shift (@_); + + # Get the current date and time + my $Today = localtime; + + # Print + print $OUT "
\n"; + print $OUT "\n"; + print $OUT "\"Valid
\n"; + print $OUT "$Name; generated on $Today by ca65html
\n"; + print $OUT "uz@cc65.org\n"; + print $OUT "
\n"; + print $OUT "\n"; +} + + + +#-----------------------------------------------------------------------------# +# Colorization # +#-----------------------------------------------------------------------------# + + + +sub ColorizeComment { + if ($Colorize && $_[0] ne "") { + return "$_[0]"; + } else { + return $_[0]; + } +} + + + +sub ColorizeCtrl { + if ($Colorize) { + return "$_[0]"; + } else { + return $_[0]; + } +} + + + +sub ColorizeKeyword { + if ($Colorize) { + return "$_[0]"; + } else { + return $_[0]; + } +} + + + +sub ColorizeString { + if ($Colorize) { + return "$_[0]"; + } else { + return $_[0]; + } +} + + + +#-----------------------------------------------------------------------------# +# File list management # +#-----------------------------------------------------------------------------# + + + +sub AddFile { + + # Argument is file to add + my $FileName = $_[0]; + + # Get just the name (remove a path if there is one) + my $Name = StripPath ($FileName); + + # Check if we have the file already + if (exists ($Files{$Name})) { + Gabble ("File \"$FileName\" already known"); + return; + } + + # Check with the full pathname. If we don't find it, search in the current + # directory + if (-f $FileName && -r _) { + $Files{$Name} = $FileName; + $FileCount++; + } elsif (-f $Name && -r _) { + $Files{$Name} = $Name; + $FileCount++; + } else { + Abort ("$FileName not found or not readable"); + } +} + + + +#-----------------------------------------------------------------------------# +# Referencing and defining labels # +#-----------------------------------------------------------------------------# + + + +# Get a label reference +sub RefLabel { + + # Arguments are: Filename, identifier, item that should be tagged + my $FileName = $_[0]; + my $Id = $_[1]; + my $Item = $_[2]; + + # Search for the identifier in the list of labels + if (exists ($Labels{$FileName}{$Id})) { + # It is a label (in this file) + return sprintf ("%s", $Labels{$FileName}{$Id}, $Item); + } elsif (exists ($Imports{$FileName}{$Id})) { + # It is an import. If LinkStyle is 1, or if the file exporting the + # identifier is not visible, we link to the .import statement in the + # current file. Otherwise we link directly to the referenced symbol + # in the file that exports it. + if ($LinkStyle == 1 or not exists ($Exports{$Id})) { + return sprintf ("%s", $Imports{$FileName}{$Id}, $Item); + } else { + # Get the filename from the export + my $Label; + ($FileName, $Label) = split (/#/, $Exports{$Id}); + if (not defined ($Labels{$FileName}{$Id})) { + # This may currently happen because we don't see .include + # statements, so we may have an export but no definition. + # Link to the .export statement instead + $Label = $Exports{$Id}; + } else { + # Link to the definition in the file + $Label = sprintf ("%s#%s", $FileName, $Labels{$FileName}{$Id}); + } + return sprintf ("%s", $Label, $Item); + } + } else { + # The symbol is unknown, return as is + return $Item; + } +} + + + +#-----------------------------------------------------------------------------# +# Pass 1 # +# ----------------------------------------------------------------------------# + + + +# Process1: Read one file for the first time. +sub Process1 { + + # Variables + my $Line; + my $Id; + + # Filename is parameter + my $InName = shift(@_); + + # Create the output file name from the input file name + my $OutName = GetOutName ($InName); + + # Current cheap local label prefix is empty + my $CheapPrefix = ""; + + # Open a the input file + my $FileName = $Files{$InName}; # Includes path if needed + open (INPUT, "<$FileName") or Abort ("Cannot open $FileName: $!"); + + # Keep the user happy + Gabble ("$FileName => $OutName"); + + # Read and process all lines from the file + while ($Line = ) { + + # Remove the newline + chomp ($Line); + + # Check for a label + if ($Line =~ /^\s*(([\@?]?)[_a-zA-Z]\w*)\s*(?::=?|=)/) { + + # Is this a local label? + if ($2 ne "") { + # Use the prefix + $Id = "$CheapPrefix$1"; + } else { + # Use as is + $Id = $1; + # Remember the id as new cheap local prefix + $CheapPrefix = $Id; + } + + # Remember the label + $Labels{$OutName}{$Id} = GenLabel(); + + # Check for an import statement + } elsif ($Line =~ /^\s*\.(?:(?:force)?import|importzp)\s+(.*?)\s*(?:;.*)?$/i) { + + # Split into a list of identifiers + my @Ids = split (/\s*(?::\s*[A-Za-z]+\s*)?,\s*/, $1); + + # Remove an address-size specifier, from the last identifier, + # if there is one. + $Ids[$#Ids] =~ s/\s*:\s*[A-Za-z]+//; + + for $Id (@Ids) { + $Imports{$OutName}{$Id} = GenLabel(); + } + + # Check for an export statement + } elsif ($Line =~ /^\s*\.export(?:zp)?\s+(.*?)\s*(?:;.*)?$/i) { + + # Split into a list of identifiers + my @Ids = split (/\s*(?::\s*[A-Za-z]+\s*)?,\s*/, $1); + + # Remove an address-size specifier, from the last identifier, + # if there is one. + $Ids[$#Ids] =~ s/\s*:\s*[A-Za-z]+//; + + for $Id (@Ids) { + $Exports{$Id} = sprintf ("%s#%s", $OutName, GenLabel()); + } + + # Check for an actor statement. + } elsif ($Line =~ /^\s*\.(?:(?:(?:con|de)struc|interrup)tor|condes)\s+([_a-z]\w*)/i) { + $Exports{$1} = sprintf ("%s#%s", $OutName, GenLabel()); + + # Check for a .proc statement + } elsif ($Line =~ /^\s*\.proc\s+([_a-z]\w*)/i) { + + # Remember the ID as the new cheap-local prefix. + $CheapPrefix = $1; + $Labels{$OutName}{$1} = GenLabel(); + } + } + + # Close the input file + close (INPUT); +} + + + +# Pass1: Read all files for the first time. +sub Pass1 () { + + # Keep the user happy + Gabble ("Pass 1"); + + # Walk over the files + for my $InName (keys (%Files)) { + # Process one file + Process1 ($InName); + } +} + + + +#-----------------------------------------------------------------------------# +# Pass 2 # +# ----------------------------------------------------------------------------# + + + +# Process2: Read one file the second time. +sub Process2 { + + # Variables + my $Base; + my $Ext; + my $Line; + my $OutLine; + my $Id; + my $Label; + my $Comment; + my $Trailer; + + # Input file is parameter + my $InName = shift(@_); + + # Create the output file name from the input file name + my $OutName = GetOutName ($InName); + + # Current cheap local label prefix is empty + my $CheapPrefix = ""; + + # Open a the input file + my $FileName = $Files{$InName}; # Includes path if needed + open (INPUT, "<$FileName") or Abort ("Cannot open $FileName: $!"); + + # Open the output file and print the HTML header + open (OUTPUT, ">$HTMLDir$OutName") or Abort ("Cannot open $OutName: $!"); + DocHeader (OUTPUT, $InName); + print OUTPUT "
\n";
+
+    # Keep the user happy
+    Gabble ("$FileName => $OutName");
+
+    # The instructions that will have hyperlinks if a label is used.
+    # And, they will be highlighted when color is used.
+    my $LabelIns = "adc|add|and|asl|bb[rs][0-7]|b[cv][cs]|beq|bge|bit|blt|".
+		 "bmi|bne|bpl|br[akl]|bsr|cmp|cop|cp[axy]|dec|eor|inc|jml|".
+		 "jmp|jsl|jsr|ld[axy]|lsr|mvn|mvp|ora|pe[air]|rep|".
+		 "[rs]mb[0-7]|rol|ror|sbc|sep|st[012axyz]|sub|tai|tam|tdd|".
+		 "ti[ain]|tma|trb|tsb|tst";
+
+    # Instructions that have only the implied-addressing mode -- therefore,
+    # no hyperlinking.  They will be highlighted only, when color is used.
+    my $OtherIns = "cl[acdivxy]|csh|csl|de[axy]|in[axy]|nop|ph[abdkpxy]|".
+		 "pl[abdpxy]|rt[ils]|sax|say|se[cdit]|stp|swa|sxy|ta[dsxy]|".
+		 "tam[0-7]|tcd|tcs|tda|tdc|tma[0-7]|ts[acx]|tx[asy]|tya|tyx|".
+		 "wai|xba|xce";
+
+    # Read the input file, replacing references with hyperlinks; and, mark
+    # labels as link targets.
+    my $LineNo = 0;
+    LINE: while ($Line = ) {
+
+        # Count input lines
+        $LineNo++;
+
+ 	# Remove the newline at the end of line. Don't use chomp to be able to
+        # read dos/windows sources on unices.
+        $Line =~ s/[\r\n]*$//;
+
+        # If requested, convert tabs to spaces
+	if ($CvtTabs) {
+	    # Don't ask me - this is from the perl manual page
+	    1 while ($Line =~ s/\t+/' ' x (length($&) * $TabSize - length($`) % $TabSize)/e) ;
+	}
+
+       	# Clear the output line
+	$OutLine = "";
+
+        # If requested, add a html label to each line with a name "linexxx",
+        # so it can be referenced from the outside (this is the same convention
+        # that is used by c2html). If we have line numbers enabled, add them.
+        if ($LineLabels && $LineNumbers) {
+            $OutLine .= sprintf ("%6d:  ", $LineNo, $LineNo);
+        } elsif ($LineLabels) {
+            $OutLine .= sprintf ("", $LineNo);
+        } elsif ($LineNumbers) {
+            $OutLine .= sprintf ("%6d:  ", $LineNo);
+        }
+
+        # Cut off a comment from the input line. Beware: We have to check for
+        # strings, since these may contain a semicolon that is no comment
+        # start.
+        ($Line, $Comment) = $Line =~ /^((?:[^"';]+|".*?"|'.*?')*)(.*)$/;
+        if ($Comment =~ /^["']/) {
+            # Line with invalid syntax - there's a string start but
+            # no string end.
+            Abort (sprintf ("Invalid input at %s(%d)", $FileName, $LineNo));
+        }
+
+        # Remove trailing whitespace and move it together with the comment
+        # into the $Trailer variable.
+       	$Line =~ s/\s*$//;
+	$Trailer = $& . ColorizeComment (Cleanup ($Comment));
+
+       	# Check for a label at the start of the line. If we have one, process
+        # it, and remove it from the line.
+        if ($Line =~ s/^\s*?(([\@?]?)[_a-zA-Z]\w*)(\s*(?::=?|=))//) {
+
+	    # Is this a local label?
+       	    if ($2 ne "") {
+		# Use the prefix
+	     	$Id = "$CheapPrefix$1";
+	    } else {
+	      	# Use as is
+	      	$Id = $1;
+	      	# Remember the id as new cheap local prefix
+	      	$CheapPrefix = $Id;
+	    }
+
+	    # Get the label for the id
+	    $Label = $Labels{$OutName}{$Id};
+
+	    # Print the label with a tag
+	    $OutLine .= "$1$3";
+
+	    # Is the name explicitly assigned a value?
+	    if ($3 =~ /=$/) {
+		# Print all identifiers if there are any.
+		while ($Line =~ s/^([^_a-zA-Z]*?)(([\@?]?)[_a-zA-Z]\w*)//) {
+		    # Add the non-label stuff.
+		    $OutLine .= Cleanup ($1);
+
+		    # Use the prefix if the label is local.
+		    # Get the reference to that label if we find it.
+		    $OutLine .= RefLabel ($OutName, ($3 ne "") ? "$CheapPrefix$2" : $2, $2);
+		}
+
+		# Add a remainder if there is one.
+		$OutLine .= Cleanup ($Line);
+
+		# The line is complete; print it.
+		next LINE;
+	    }
+	}
+
+	# Print any leading whitespace and remove it, so we don't have to
+	# care about whitespace below.
+	if ($Line =~ s/^\s+//) {
+      	    $OutLine .= $&;
+	}
+
+	# Handle the import statements
+	if ($Line =~ s/^\.(?:(?:force)?import|importzp)\s+//i) {
+
+	    # Print any fixed stuff from the line and remove it
+       	    $OutLine .= $&;
+
+ 	    # Print all identifiers if there are any
+ 	    while ($Line =~ s/^[_a-zA-Z]\w*//) {
+
+                # Remember the identifier
+       	       	my $Id = $&;
+
+		# Variable to assemble HTML representation
+       	       	my $Contents = "";
+
+		# Make this import a link target
+		if (exists ($Imports{$OutName}{$Id})) {
+       	       	    $Label = $Imports{$OutName}{$Id};
+       	       	    $Contents .= sprintf (" name=\"%s\"", $Label);
+		}
+
+		# If we have an export for this import, add a link to this
+	     	# export definition
+		if (exists ($Exports{$Id})) {
+		    $Label = $Exports{$Id};
+		    $Contents .= sprintf (" href=\"%s\"", $Label);
+		}
+
+     		# Add the HTML stuff to the output line
+		if ($Contents ne "") {
+		    $OutLine .= sprintf ("%s", $Contents, $Id);
+		} else {
+		    $OutLine .= $Id;
+		}
+
+	     	# Check if another identifier follows
+		if ($Line =~ s/^\s*(?::\s*[A-Za-z]+\s*)?,\s*//) {
+     		    $OutLine .= $&;
+       	     	} else {
+		    last;
+      		}
+	    }
+
+	    # Add an remainder if there is one
+	    $OutLine .= Cleanup ($Line);
+
+       	# Handle export statements
+	} elsif ($Line =~ s/^\.export(?:zp)?\s+//i) {
+
+	    # Print the command and the whitespace.
+	    $OutLine .= $&;
+
+	    # Print all identifiers if there are any
+	    while ($Line =~ s/^[_a-zA-Z]\w*//) {
+
+                # Remember the identifier
+       	       	my $Id = $&;
+
+		# Variable to assemble HTML representation
+       	       	my $Contents = "";
+
+		# If we have a definition for this export in this file, add
+		# a link to the definition.
+		if (exists ($Labels{$OutName}{$Id})) {
+		    $Label = $Labels{$OutName}{$Id};
+       	       	    $Contents = sprintf (" href=\"#%s\"", $Label);
+		}
+
+		# If we have this identifier in the list of exports, add a
+		# jump target for the export.
+		if (exists ($Exports{$Id})) {
+		    $Label = $Exports{$Id};
+       	       	    # Be sure to use only the label part
+		    $Label =~ s/^.*#//;
+		    $Contents .= sprintf (" name=\"%s\"", $Label);
+	     	}
+
+     		# Add the HTML stuff to the output line
+		if ($Contents ne "") {
+	     	    $OutLine .= sprintf ("%s", $Contents, $Id);
+		} else {
+		    $OutLine .= $Id;
+		}
+
+     		# Check if another identifier follows
+      	      	if ($Line =~ s/^\s*(?::\s*[A-Za-z]+\s*)?,\s*//) {
+     	    	    $OutLine .= $&;
+     		} else {
+     		    last;
+     		}
+     	    }
+
+     	    # Add an remainder if there is one
+     	    $OutLine .= Cleanup ($Line);
+
+	# Handle actor statements.
+	} elsif ($Line =~ s/^(\.(?:(?:(?:con|de)struc|interrup)tor|condes)\s+)([_a-z]\w*)//i) {
+
+	    # Print the command and the whitespace.
+	    $OutLine .= $1;
+
+	    # Remember the identifier.
+	    $Id = $2;
+
+	    # Variable to assemble HTML representation
+	    my $Contents = "";
+
+	    # If we have a definition for this actor, in this file,
+	    # then add a link to that definition.
+	    if (exists ($Labels{$OutName}{$Id})) {
+		$Contents = sprintf (" href=\"#%s\"", $Labels{$OutName}{$Id});
+	    }
+
+	    # Get the target, for linking from imports in other files.
+	    $Label = $Exports{$Id};
+	    # Be sure to use only the label part.
+	    $Label =~ s/^.*#//;
+
+	    # Add the HTML stuff and the remainder of the actor
+	    # to the output line.
+	    $OutLine .= sprintf ("%s%s", $Label,
+				 $Contents, $Id, Cleanup ($Line));
+
+     	# Check for .faraddr, .addr, .dword, .word, .dbyt, .byt, .byte, .res,
+	# .elseif, .if, .align, and .org.
+     	} elsif ($Line =~ s/^\.(?:(?:far)?addr|d?word|d?byte?|res|(?:else)?if|align|org)\s+//i) {
+
+     	    # Print the command and the white space
+       	    $OutLine .= $&;
+
+     	    # Print all identifiers if there are any
+       	    while ($Line =~ s/^([^_a-zA-Z]*?)(([\@?]?)[_a-zA-Z]\w*)//) {
+                # Add the non label stuff
+                $OutLine .= Cleanup ($1);
+
+		# Use the prefix if the label is local.
+		# Get the reference to that label if we find it.
+		$OutLine .= RefLabel ($OutName, ($3 ne "") ? "$CheapPrefix$2" : $2, $2);
+     	    }
+
+     	    # Add an remainder if there is one
+     	    $OutLine .= Cleanup ($Line);
+
+	# Handle .proc
+       	} elsif ($Line =~ /^(\.proc)(\s+)([_a-z]\w*)?(.*)$/i) {
+
+	    # Do we have an identifier?
+	    if ($3 ne "") {
+		# Remember the ID as the new cheap-local prefix.
+		$CheapPrefix = $3;
+
+      	      	# Get the label for the id
+	    	$Label = $Labels{$OutName}{$3};
+
+		# Print the label with a tag
+		$OutLine .= "$1$2$3";
+
+	    } else {
+
+		# Print a line that has invalid syntax (its operand isn't
+		# a correctly formed name).
+		$OutLine .= "$1$2";
+            }
+
+            # Add the remainder
+            $OutLine .= Cleanup ($4);
+
+	# Handle .include
+	} elsif ($Line =~ /^(\.include)(\s*)\"((?:[^\"]+?|\\\")+)(\".*)$/i) {
+
+	    # Add the fixed stuff to the output line
+	    $OutLine .= "$1$2"";
+
+	    # Get the filename into a named variable
+	    my $FileName = Cleanup ($3);
+
+	    # Get the name without a path
+	    my $Name = StripPath ($3);
+
+	    # If the include file is among the list of our files, add a link,
+	    # otherwise just add the name as is.
+	    if (exists ($Files{$Name})) {
+	    	$OutLine .= sprintf ("%s", GetOutName ($Name), $FileName);
+	    } else {
+	    	$OutLine .= $FileName;
+	    }
+
+	    # Add the remainder
+	    $OutLine .= Cleanup ($4);
+
+        # Handle .dbg line
+        } elsif ($CRefs && $Line =~ s/^\.dbg\s+//) {
+
+            # Add the fixed stuff to the output line
+            $OutLine .= $&;
+
+            # Check for the type of the .dbg directive
+            if ($Line =~ /^(line,\s*)\"((?:[^\"]+?|\\\")+)\"(,\s*)(\d+)(.*)$/) {
+
+                # Add the fixed stuff to the output line
+                $OutLine .= "$1"";
+
+                # Get the filename and line number into named variables
+                my $DbgFile = $2;
+                my $DbgLine = $4;
+
+                # Remember the remainder
+                $Line = "\"$3$4$5";
+
+                # Get the name without a path
+                my $Name = StripPath ($DbgFile);
+
+                # We don't need FileName any longer as is, so clean it up
+                $DbgFile = Cleanup ($DbgFile);
+
+                # Add a link to the source file
+                $OutLine .= sprintf ("%s", $Name, $DbgLine, $DbgFile);
+
+                # Add the remainder
+                $OutLine .= Cleanup ($Line);
+
+            } elsif ($Line =~ /^(file,\s*)\"((?:[^\"]+?|\\\")+)\"(.*)$/) { #pf FIXME: doesn't handle \" correctly!
+
+                # Get the filename into a named variables
+                my $DbgFile = Cleanup ($2);
+
+                # Get the name without a path
+                my $Name = Cleanup (StripPath ($2));
+
+                # Add the fixed stuff to the output line
+                $OutLine .= sprintf ("%s\"%s\"%s",
+                                     $1, $Name, $DbgFile, $3);
+
+            } else {
+
+                # Add the remainder
+                $OutLine .= Cleanup ($Line);
+
+            }
+
+        } elsif ($CRefs && $Line =~ /^(\.dbg)(\s+line,\s*)\"((?:[^\"]+?|\\\")+)\"(,\s*)(\d+)(.*$)/) {
+
+            # Add the fixed stuff to the output line
+            $OutLine .= "$1$2"";
+
+	    # Get the filename and line number into named variables
+	    my $FileName = $3;
+            my $LineNo   = $5;
+
+	    # Remember the remainder
+	    $Line = "\"$4$5$6";
+
+	    # Get the name without a path
+	    my $Name = StripPath ($FileName);
+
+	    # We don't need FileName any longer as is, so clean it up
+	    $FileName = Cleanup ($FileName);
+
+       	    # Add a link to the source file
+       	    $OutLine .= sprintf ("%s", $Name, $LineNo, $FileName);
+
+	    # Add the remainder
+	    $OutLine .= Cleanup ($Line);
+
+     	# Check for .ifdef, .ifndef, .ifref, and .ifnref.
+     	} elsif ($Line =~ s/^(\.ifn?[dr]ef\s+)(([\@?]?)[_a-z]\w*)?//i) {
+
+     	    # Print the command and the whitespace.
+       	    $OutLine .= $1;
+
+       	    if ($2 ne "") {
+		# Use the prefix if the label is local.
+		# Get the reference to that label if we find it.
+		$OutLine .= RefLabel ($OutName, ($3 ne "") ? "$CheapPrefix$2" : $2, $2);
+     	    }
+
+     	    # Add a remainder if there is one.
+     	    $OutLine .= Cleanup ($Line);
+
+	# Check for assertions.
+	} elsif ($Line =~ s/^(\.assert\s+)(.+?)(,\s*(?:error|warning)\s*(?:,.*)?)$/$2/i) {
+
+	    # Print the command and the whitespace.
+	    $OutLine .= $1;
+
+	    $Comment = $3;
+
+	    # Print all identifiers if there are any.
+	    while ($Line =~ s/^([^_a-zA-Z]*?)(([\@?]?)[_a-zA-Z]\w*)//) {
+		# Add the non-label stuff.
+		$OutLine .= Cleanup ($1);
+
+		# Use the prefix if the label is local.
+		# Get the reference to that label if we find it.
+		$OutLine .= RefLabel ($OutName, ($3 ne "") ? "$CheapPrefix$2" : $2, $2);
+	    }
+
+	    # Add a remainder if there is one.
+	    $OutLine .= Cleanup ($Line . $Comment);
+
+     	# Check for instructions with labels
+        } elsif ($Line =~ s/^($LabelIns)\b(\s*)//io) {
+
+	    # Print the instruction and white space
+            $OutLine .= ColorizeKeyword ($1) . $2;
+
+	    # Print all identifiers if there are any.
+	    while ($Line =~ s/^([^_a-zA-Z]*?)(([\@?]?)[_a-zA-Z]\w*)//) {
+
+		# Add the non-label stuff.
+		$OutLine .= Cleanup ($1);
+
+		# Is this a local label?
+		if ($3 ne "") {
+		    # Use the prefix
+		    $Id = "$CheapPrefix$2";
+	     	} else {
+	     	    # Use as is
+	     	    $Id = $2;
+	     	}
+
+	     	# Get the reference to this label if we find it
+		$OutLine .= RefLabel ($OutName, $Id, $2);
+	    }
+
+	    # Reassemble and print the line
+     	    $OutLine .= Cleanup ($Line);
+
+     	# Check for all other instructions
+        } elsif ($Line =~ /^($OtherIns)\b(.*)$/io) {
+
+	    # Colorize and print
+            $OutLine .= ColorizeKeyword ($1) . Cleanup ($2);
+
+      	} else {
+
+	    # Nothing known - print the line
+	    $OutLine .= Cleanup ($Line);
+
+	}
+
+    } continue {
+        # Colorize all keywords
+       	$OutLine =~ s/(?\n";
+    DocFooter (OUTPUT, $OutName);
+
+    # Close the files
+    close (INPUT);
+    close (OUTPUT);
+}
+
+
+
+# Pass2: Read all files the second time.
+sub Pass2 () {
+
+    # Keep the user happy
+    Gabble ("Pass 2");
+
+    # Walk over the files
+    for my $InName (keys (%Files)) {
+       	# Process one file
+       	Process2 ($InName);
+    }
+}
+
+
+
+#-----------------------------------------------------------------------------#
+#		   	     Create an index page     			      #
+# ----------------------------------------------------------------------------#
+
+
+
+# Print a list of all files
+sub FileIndex {
+
+    # File is argument
+    my $INDEX = $_[0];
+
+    # Print the file list in a table
+    print $INDEX "

Files

\n"; + print $INDEX "\n"; + my $Count = 0; + for my $File (sort (keys (%Files))) { + + # + if (($Count % $IndexCols) == 0) { + print $INDEX "\n"; + } + printf $INDEX "\n", GetOutName ($File), $File; + if (($Count % $IndexCols) == $IndexCols-1) { + print $INDEX "\n"; + } + $Count++; + } + if (($Count % $IndexCols) != 0) { + print $INDEX "\n"; + } + print $INDEX "
%s


\n"; +} + + + +# Print a list of all exports +sub ExportIndex { + + # File is argument + my $INDEX = $_[0]; + + # Print the file list in a table + print $INDEX "

Exports

\n"; + print $INDEX "\n"; + my $Count = 0; + for my $Export (sort (keys (%Exports))) { + + # Get the export + my $File; + my $Label; + ($File, $Label) = split (/#/, $Exports{$Export}); + + # The label is the label of the export statement. If we can find the + # actual label, use this instead. + if (exists ($Labels{$File}{$Export})) { + $Label = $Labels{$File}{$Export}; + } + + # + if (($Count % $IndexCols) == 0) { + print $INDEX "\n"; + } + printf $INDEX "\n", $File, $Label, $Export; + if (($Count % $IndexCols) == $IndexCols-1) { + print $INDEX "\n"; + } + $Count++; + } + if (($Count % $IndexCols) != 0) { + print $INDEX "\n"; + } + print $INDEX "
%s


\n"; +} + + + +sub CreateIndex { + + # Open the index page file + open (INDEX, ">$HTMLDir$IndexName") or Abort ("Cannot open $IndexName: $!"); + + # Print the header + DocHeader (INDEX, $IndexTitle, 0); + + # Print the file list in a table + FileIndex (INDEX); + ExportIndex (INDEX); + + # Print the document footer + DocFooter (INDEX, $IndexName); + + # Close the index file + close (INDEX); +} + + + +#-----------------------------------------------------------------------------# +# Print usage information # +# ----------------------------------------------------------------------------# + + + +sub Usage { + print "Usage: ca65html [options] file ...\n"; + print "Options:\n"; + print " --bgcolor c Use background color c instead of $BGColor\n"; + print " --colorize Add color highlights to the output\n"; + print " --commentcolor c Use color c for comments instead of $CommentColor\n"; + print " --crefs Generate references to the C source file(s)\n"; + print " --ctrlcolor c Use color c for directives instead of $CtrlColor\n"; + print " --cvttabs Convert tabs to spaces in the output\n"; + print " --help This text\n"; + print " --htmldir dir Specify directory for HTML files\n"; + print " --indexcols n Use n columns on index page (default $IndexCols)\n"; + print " --indexname file Use file for the index file instead of $IndexName\n"; + print " --indexpage Create an index page\n"; + print " --indextitle title Use title as the index title instead of $IndexTitle\n"; + print " --keywordcolor c Use color c for keywords instead of $KeywordColor\n"; + print " --linelabels Generate a linexxx HTML label for each line\n"; + print " --linenumbers Add line numbers to the output\n"; + print " --linkstyle style Use the given link style\n"; + print " --replaceext Replace source extension instead of appending .html\n"; + print " --tabsize n Use n spaces when replacing tabs (default $TabSize)\n"; + print " --textcolor c Use text color c instead of $TextColor\n"; + print " --verbose Be more verbose\n"; +} + + + +#-----------------------------------------------------------------------------# +# Main # +# ----------------------------------------------------------------------------# + + + +# Get program options +GetOptions ("bgcolor=s" => \$BGColor, + "colorize" => \$Colorize, + "commentcolor=s" => \$CommentColor, + "crefs" => \$CRefs, + "ctrlcolor=s" => \$CtrlColor, + "cvttabs" => \$CvtTabs, + "debug!" => \$Debug, + "help" => \$Help, + "htmldir=s" => \$HTMLDir, + "indexcols=i" => \$IndexCols, + "indexname=s" => \$IndexName, + "indexpage" => \$IndexPage, + "indextitle=s" => \$IndexTitle, + "keywordcolor=s" => \$KeywordColor, + "linelabels" => \$LineLabels, + "linenumbers" => \$LineNumbers, + "linkstyle=i" => \$LinkStyle, + "replaceext" => \$ReplaceExt, + "tabsize=i" => \$TabSize, + "textcolor=s" => \$TextColor, + "verbose!" => \$Verbose, + "<>" => \&AddFile); + +# Check some arguments +if ($IndexCols <= 0 || $IndexCols >= 20) { + Abort ("Invalid value for --indexcols option"); +} +if ($TabSize < 1 || $TabSize > 16) { + Abort ("Invalid value for --tabsize option"); +} +if ($HTMLDir ne "" && $HTMLDir =~ /[^\/]$/) { + # Add a trailing path separator + $HTMLDir .= "/"; +} + + + +# Print help if requested +if ($Help) { + Usage (); +} + +# Check if we have input files given +if ($FileCount == 0) { + Abort ("No input files"); +} + +# Convert the documents +Pass1 (); +Pass2 (); + +# Generate an index page if requested +if ($IndexPage) { + CreateIndex (); +} + +# Done +exit 0; diff --git a/bin/cc65 b/bin/cc65 new file mode 100755 index 0000000000000000000000000000000000000000..a3643d3012155626eeab4f73f8c6bf114c56d9f6 GIT binary patch literal 461908 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 ^%_3VsUC&pT5o68kKl!t~Pe?m0SnM4Y6hvN- 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 (MP$ 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 h${)B9E^z~MzTuO4qL(7{QB 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 D18q*K literal 0 HcmV?d00001 diff --git a/bin/da65 b/bin/da65 new file mode 100755 index 0000000000000000000000000000000000000000..dcb408d16e900b1ba511aaf36bb26d78d4bb38b4 GIT binary patch literal 116812 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

I_qxGN$*&6vAs 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 literal 0 HcmV?d00001 diff --git a/bin/ld65 b/bin/ld65 new file mode 100755 index 0000000000000000000000000000000000000000..8f47c9ee4bd2827f5787196b5717dcc723451852 GIT binary patch literal 181672 zcmeFa33yY*_dlGp2@OlRVJTE)iCDELODj}cXr-YEy@7;9L2jy6xB0MutKtaJ!=kTHRL3sYE23WK(NHLi4(3}1W3cO=xc*VB}*T%7H_;zXdC`^2h{#``h=tA$*36sZZ01fe3C4sN=!vcW9Xv^qdJ=};bC>Z_VzGfOx6#jRA1qEZq7mS@c zYSI`1)ev89K;T=}SEN%ow!RHj zOrBU!`0%8AADmb)#XI#P`eY5CRy_lS8{$i^hi~Gje}`|lhHt#aJ_^U;BmVWMhwr{o z-cfZC4f$8LQ)>?mABF$D+%=Tr`t4DM4#rVw4M^etgm2QM2Pf+kUPRxI0^i_b9YW|O zJ*1JX2f_b)3+uGX#qDb=h~xD2d@P!!9(@h*)#+ikYv2Hxc69SLngodYD8PopHjjmK*|-Xkfj{Z%4dhW=9ei_x$w$-s3}GSW_*Ga8b>%d**V29|Fy zG)3HCEzcJaMtZuVpkGkn4O;xAUb(a4>XoO%(70p619ffa?kk+yed2_ByWjWl#QPAY zzbo(%9lK6_*X>w&){K%xhdY10?WX1_h~qMy&;)}-6VAhxh@-xD9iIQc|McGpSqOZs5y=dkM&3xCRf^Kl7~7uoC?5tc9t){^#$1 zIPgCl_#Y1Z@8rP!23a{Q`wyLv)!7y~;Ik^{{2Pqr2jgYqDOuSWHp%{Si|o%b_-g2j zZJT5;C_#1}=K1MG_#1}o_S@~Z-75Qkv&hOHF6F{{vZ0v&H-o{Y1l`IRS=q^hK1S?2*;P z_YiceDdm*W%0}OYNmrTo6A>~G0h*FBUnR#X3Sm`?sZN{isyBtI$*PY4NVQNn*?+<4 zy{x3hcb!XZosw4ORw8cYID7m?Dmh$Ck)Y}pP(^9SnGa))OKnDx{k6!WY$WIue7V~` zLhy#S&w3h^*r}riLy%Zxkb}A0s=}KOyP&aFv(ZJ5Yn2}Y~y`R+{grR{@Am^z_1a+)om-j-$ zt2dU^NF}FW;knc~RymMSi(0XF|0ag@vk)g!SRaJcOqP0q1mKLUP6u30%4O708_-Jk zQtegq_2r0AGiB9TC9AS^9Sx&$AZZ!r68qO40=g?XbO6y($6P~AUb{H28^RChxfW@8 zVWwLhQ^r}V4oPF45d@$3T^S+GqG-2jPfIIXM`OGkNbHUwURJi^YY)EIWT1Ct71(@D zWz|zAtBot{PNVkej(;c(pDPh7D|nS`kxD)W7EZwsw_2Dgs{_*9Stkn}uFl(0=qORB zLt37f87(nsCdzRuCs{nNNetP_DfSvV4UnJ>2B4_Bta8a-sn`WmiZ{i{t)Ot?Ap)_0 zQE?nSVb)mm3f17l?%h5_>{16=iyn3we9c{fK~}J%tirj&5N;L|GM1Fd0rQt= zY?p$s#AVd%lA~N!lVn~@FWv_3K;p|>Ahx;#Nt^lCP6)%{??gi&<8+Rq63E626lj+u zbA1$dL{U5%Meznu2wCWvQZ&bj);3?uQ4uwr1S+EDEAUTNqtrByqH;u0-40YW&K*Xe zIK)MoQ0&K-TXGVL>Ge^3O(`T)W(!crN;xXj8YlqiiGf7=GC)H5f$a#sJjw|`9{rXe zJ&@;zElfGbv$d(0E%9NVjih!3zQA8(`yAQq3kPMAs>$r1JM9KpeI%0|dxFw8iPm0L ziPpaUAYnuoK<)(`&knb8kR8J06K$I+l|U}h+=JTHlv}+I5XP@azFf*~*Efd-1l-p| zTxWiAUAc|;;cY^~FBP`~ghx5->HKHCj;I`E|GI-3A>+2SMkt1xwO#;)zTz)p(J9c7 z1sXya6AU%wkXBRzAGscNT$jEqL|;;G$>|pw3xm43O~rD*K4oI zZ)fvPLfx|dP2C#tj_tT~fqxF?^_tVL!2Rd-dU;WxM`7%W-Sj>}^^i&io{vOy7O{_N zdE22E)PuXux5H(*AZG%%%Dux=B6HQBF@4QoIB?P&%B4Pi8)GK|nUXfjpI#&9 z@Yfo>Er9YHLE5HQwAeUV9kIvP7@*ax4=GF70#u(78~LbsiSh6}nK!3_-W~8QgB9{j zV=_jreuQ}X9HQ&lBN|ym+A@$;MP#vGF_-lBMt7mX|5ug?TF8D_f;9i^Wzl#W;_d#w z6TB_(zme}g($%u`NuDKa;{#907GHC2TCkdzskLY<%CpEX$Y;*VN}dI%;&{c%*jUmw z0rP8eoWY@{+5^sW{@OTcegVdUiyN;JIwq~m0jp$xw@bDkS%(4hEkLHG1^Pw&wF%OK z6f}*joJR+~j=n~l=E=s&NHrMVe-p$oka1N$92Il+b89n*_H-!~9@s}ofT$&<7RWFH z0*!qg>O$OTnMD%G0U`pRx*rE4E#d`Rh{6DMCbt?qSkDIh()sMD^rJ65=RdF zz{O3Mk-kt&VCGElOUTGykddh!LPe-WR9GWSeGykqgO_2T*C2CFQs053d+}Pem)GC?J`y7^vCU6Lp#}-4Y=YV+po%$E{rSVi z^QzJ&O5if%za@iqt`$&g2n|81b8`V(e!04o1|B#Qb+p>_zUY=Xi_Lr}#Ws$u;T3R_2c|6*R8A-B|PX~$Wf z9Yyw$K=ykLkXc9v2Fy1JWDV!D{zyXMvt1rLr10S@^LFAA+!V+ww>=T1d z4~(&~f_o@daAU`N!bh|BfcYNal9jV^=W@9`WR^#lFLcNCU+8GmKeG~pM`6NB^z}$M zGqZA90w3$cU0q6zdIO3#!Q#avn$7y28%da8QfM+l&@yi22N25*}qgYS;`&;AoJQAK8^<1Z;Jt*YKH5`YzUSDJK_IF&M}!F)+{j z258&fFv-K+xtKVzdQ7{YhVg-FmlNyB%o5WgnB=2wLDf}HuB^z(u1JM5>%!EXASQhm zRo|OIg(a6nycSX_zMD{zI-*KNwaOIdHX5Vnrx9)bP096awf2vEPO{b;N`w7@Oo60R zc&(a=lEE4u5+ki*bX>#nD4E^=JJr}+2qv<}Cr|~=57PI+w>gIEbKzvE^Dlr!FHrwi zg6qg}fME4`%CmuWdWKlhgKd2lLuV6__AO7VV7I+PgGR-1yZ?e&TJUEw&zN+X!O(wn zvt_ceJaRynH>m0#$nFhfe0DR4NF)IXByI;0cBLY0Uc}vBn6Z~^@uoVm(tW=p!%}2$ zz$mbN3t(+3R7~cAvV*<+G^iO4YS{cAK%bJ<(Ag5q1vM}xa@)}hsW$DMs=Z=_aXhaq@}`Cw>v>ID-p8YPyJ>mbMe~{{FY4Dzt1j|Vbvtvw4eS>H`g>pRGuw*> zwllHf#o*9;=xDrN77c&5DE@Ew*LJoBU02l0!f9)Ud=QCeR&g1coDGg|*-cT2^C3@m zB^Yi~&%SqLWqEI@6Dr^D!dp5Fa_3MoHHTai`D8jg)8by6PI za14p!$R!-m|tV=O5ajRJB$mwpQeinvzo`z zjExWreUSJHtd1f$_%Ss~oc$5$1|##mE_ho)+daU9Z$A|}L+eC8ac#GOy$W`b4(|6P z8m0yEK;dRd#lTKqy`++EtqcYXXm$1x*w`2hKW&o+~aJ0rsG-){7uP4q2d z9{^)mu@h9pnI3T}e>s%dyYW=v*%rR6LHqe@6Mbej4Vge)$7Q0{W+4f;@!~hIr6|{- zUe5*-u^(V=j+sgJ+`;&Nxm0p*3nDpa(MbO7xK8q8MDpwaLGQ3&f+Us9mpJ`2t}*Wu zyu_qTnoXsJ%vOTiyb(C#r3KA_Gc>0;mi`m(>J?`&g%+VzbbBM`GBVZz8K-W7?(tN? zs&VdSUjm)Kx8zM?O+g=8fW>3j#d=H#EoWfQBAJ+xe#ogD2`9yjw_5!LHIYy1wfb$m zE~q~$!Rrqw_5lnVs=xO}{O_&Te-m#q*kQlHPKV_M`nLQ*^~ZJzyMLRJd5?2)!oBP@ zo8mNHl>t^X@0$cW1hDKcURDow2s}r|IEYmbX>l2x;wRL2e{D0Vq(3!x%_gHSiDV?_ zNkS6HxQj4IR2uO6;=uuR_HH)EhD5lndeBt!Qv~2JxYh}`LRaM63EM^W?Pjij0Z0t% zIad>!N);m16#2?=$mwP8wd@^5)yl&MwqpOum->N{o|$cOjF_g|Ae5 zjUxqXB3SIevX%@3u{%5SCg;>OpleD77f{w3NPx3F$GHO*tV214`R>nG2;A+K+Pr;S zsyijsmE}&c`LGmZ&d{>{pzy4n8f1M#&+4zX|H3h(tmajK^%{aJycPXiPM zI*O%6Up~)TV{d2jW~=FN?3{uMBR9tVFxlN|rd{osLczNb)Qva|pIbS{cB2GhWILt2 zJY@18Fe)3$k0$sJ8jV}aStEb7(FhM=+|(AF$67x28Zx>3U>i(-e1bvdo}d`(EiT2K z0>jLPm=1`E7(7_?OI?p%j`fip)I~;GWU)HuQU}Vg>wJx1F6D;fp^fn&6THpS8=1Ug zMYc}$vw769vZv&buL)(N9O0W?iYbME^`tg!Z}g>5r6K9RLa(uVx7Jns1L`!eUb`(I zQhsHPfSWz^k~Ri>#H*6?DQUw%#=;)ZGl#)77|5v3tq6t_qw*~K%V2x(P6m59joZsJ zkdf@=6I<#^w1-8B6H6h`Xoj9}(m_3~&n1rJZ|9RXr_wXU6?CLvoFX4M_-aRpn?&@% z4QP9XBPG+oHbWfQBDjh|tKmQ@O6&<)iwjM_H%OeZRP-ebiPR+T9;Ko;ume;y`jSF< zhjKU5g*2)7FBFF!)mqj@Uy2+tVD|RjfB*dlqgV zyMNOWyZ^7on13_{U3nNpFdtq?BPh(7)~qD~l79$_#5V(oKYdpqhHj^F7!!zlam2mZ zK}ZzK;fNzCQpwMR$3LgFK`I#q{K)X6mS3x8nMT+-v?-~|?q0vYHccuC0GdyhLq2Fu zrg93JdPgxk3V?8IC3`23@n$-j`N9^+16Et8jhpjP!k*R0do5=17LR%(`D1^_+#c)e zpcS17*(Or9=N=VfPIn^t-1De?GKwlnd=+>sp>MD(P-A`y-xvd5g6+op&;U;E4t5vv zhDs2N*<`}oAcapg5C2NEC7s1<)m>mA5}P0~(hBu{2o;LX>xA;Nc!lztOxgI{qA^Fm zo&8k;wvmGLSHghD8w-J$Gt*WrRvo4>35)(`nD1R|p)0qSx>GVaujFs4-B~BRqPvTh z*};|(F4EuDP%i2uineM+|8YbwdNFUv?QC9M(Xg%S7d@t~=yUJrMQ2@H^dydJ2g}fl zwuLsI)r+=iMbC&9-HF$KJ8M)|w2c?d-U6Hby?aO{^C&x2!V;Pm#T2Ju>K4WHqlRe> zhAoYMn4F;!keKIbtO{g2)E!N~El7=%7=Rdrn?l~RjNY`E>COp&PXM@5!47T)q&9oL zPL#v$0rqrEX)$DkSgl^KT#cF~hjo??(WvQGM@?=$mKuz#5qXCLYq`9z<~gPFaF zO2T1dLK*0vD>&!|_7I3wdj$G@>#vQU4qGD8WI?*V^21vxE_8}!cO;IDLcih@ETdM3 zW#Pw^81e*sKPT}1zJ$9W*aO8>NKWhbIb)A?0b}LORJTpCn$rd%>43MZ&3yoZ-6y6I zwYpSitRwKyJS3_)N6{t(`{U?X*uSE%PZ8`|z+!G;1^ibUd@sN=C#VSZhGJrSQA^NM zOrt~~V+3Vdxk;zzQ7zB3dS$GPmeGyC?-2Cdslnb^4|YuyHjZGs3VJZ)=3J-2Hz9hy z1Qj934b7fR-Yd9<9d!_tab;-yg}%14-ysEH=$v!P zeeF=rhOQ_#X*f*cjtG50p|%tfx=|MNvBf~mx)T*w3o48n6?+fpRE*Swasoj4e66?9 zcZE>Le4;-Jq6Ko|t|yx>Gduy`12sxbg3>0uunnv&CeUz22Erk;4vjI2?~T2B=V zceZof;VbRy<0*WZeLbPk=nisXcCer3g6`=kIXnfdvuQ+M6D9iNLqz^|_66Yh+!NqS z50juK4#D`V7*P{j7zS5Gu9o*`wO(PLmUo7h7p1d_$crqwG-)fsESk?Mo~4e5X|GQ- z+`1@+t{R3LfdMn*c%Kbm$=-CZ=9_nnhIyG0Buwwbo4W~W6qa};MAKwxRXjU~^Ysm6 zpp8H|CyBwz1$EeNwtXTWkqa?lfQ?F>QrxSZ(TVT6Y{)X7NF8Pq3#8~1B$%GicVvY~|G34tL~ zU}!-YCJGF3aIuF_CSfpX-FjXW!y>}ak}!A#h8i*?0vS6}f#EuV!32(nUIhk__}mhB zBuFS=Vl=KswhH8hX$Uhg&zpq*eZ3Fizg;TH1kspFhR562aiJQC@~v9=#%TF%sQjm9 zbKEltH^BmT4#nRO+~9%Lp3dMC`zh1~ghz%*(@#?A%Af!e~)#raKZ- zc$BBlbl=@aNHd;6cV$3!C?9-_BdGTTR4X0o=!-h8O4!1H z`U$U99}B2sNaVOSMWNmhP|FGGZvhq5pP8L~&!O^l%vT7^uL;c7Xr5VuOL3IvMl;XTO2>Tk zg=qbMqLiec@LIK4KpjJ(sDBiyLf~3XP^Se{kV7rn2;*}Po9S#9C=iIY=JImTDcV_f3P>)>I2E))ENJzDqGxH z6KpaX_E_pM=3&iyeh$~kkxUqkaw z2O+dOy6ruH^lt>pE3jqLJ5ct|Og4CrsXYkIS6^XNm|=lSVG3BQ7PiK$D-jBR!*fQ1 zv^-5IY)!kLKII!BasUCmZ8f|FyRka@j#y@mZnug$Jd2=fF5=JdAek~;(zaY3X9%5v zq+<6U*!39{8PRhc=z;%45Z4|781c@MLwvK;Z9fq2xc>x`GB9%zBErXF{EM`e6w8%^ z)fuf>+K-V)X5wPjZ4{Bu z>~UXt0@F2@O54h(q|zHu?TQWOPr6ZpmV^j#_T^j%JS`uc}*Y@wEH;(Kfd-8e44h;NIFaZGbueyB#gQJpUGp zGN7HSv$kKd=rv3#&#xqQrScuP4^qTYMCk6tIeTc{eAKNRU~j@0jyQ{HqwG?PR6Gm1 zN9?CWe>K2|DV2Of%@TB$;f3YrO7YqzUU2*Jb^^JZY%1F! z*jqn^GesSj>QVmmTt6|zhAiK|3RS{ED_9sg`3gDcVjm~#Sib-W>)sHnCyLbzti*7) zItm6@PDu>L7j%qFx(w)w2DOjV=wcT>;kC3$C65vPHTmsLn33WW^;}9-3ObjG*B9ai zR60eSh@w|k5Hqc0@OYLA-|^<}FtQy+HdN9UQ^`}WP$dZp^I@GNs^pfof+~}SgN-Mu zNUGweppBiSIOzTFXd2bo0+xMuM*u`An2g9i6J> z%|KqUui=Ae&UrC8Glq-e{)MU`Tbh>b0zi0yw1v044UrOI6QH8%w2@Tef+|&=#ZV)| zV|D^)Yy46D%J*xGeVN9jOjsqeAhzt+e-XJGq0@ZVvLXbqeSgAs#0A=Cb4a*_bM6Er z+;OPW5=`vaOQZy_x$g5)f-|=RoIlgx&4ty4<%C28>#e6cl^Qe^c0Z(?fa8)_*B`9c zJ|m>OXy?OC)4wO213&_1ft}cCbQ{p}Gtq~w<=ozY5uH=B7Za8Tp%kLqL8A53&y)Dq zV|kZI{6oeXlJ{<+3)^Y+`8%g)!5%>LS4}6}>PYm6@fN;(_z;R=zd?|Nz|!`Q#E(!Q z1QH5>_WG^`S)AS#RL1nrMV;3XQBNa+#xsX!zkWeu^@2j|c9h~wKNjvH@G)|fL(WauiEfqET#S(JIP%FU`$;N0bDB0gvnHmb zPTwguT7b*Rf>he_>&RMR13l6L+K<;@u!)`zik`>O&xf30JFi7;`3WIb!9O>x&qOVm z3!M|kWL!ZfLI4Rmp&BV_gcWhAT3i~vou#vTI!ni7P!D?pIK)vRHi{5C)9li6XV0Zp zZz7UOGSV)`VAP6Wk8~!s^Pbl93PSBnbp?F|}11FMeVwQ3#Z5188`F=8DNdbb@3LlI$ZD4)scdu5!xfoxWWFgEj(N>3zn zap_qOhV<*X)Fw6~;h+tbDiwbQFg6q@anbff_l)u9^;SW~(rP;HbX}%WNgN`wHS}J=18VCka4h$j#3?ko8c6Az!2@gF_ z@{e%>MiIn|_Miuna=Bc7NBU>|7E-$jE~Sx2xe1#avAZ(sH7l2_8---W?nHuat$mzt z*N3)Qjt&Q8Yw+T{LSh(+_DGvc^9Q@fW|xJacf%8~=b5<4X0Kd@w9JHZm#@#Rte z3U^q9%>&>EypFz>w16f!vH+SD9GT=%Q&MP+=0~j|(4?1vWH1z8N%+D6mujTV$zUlM zSNK^m&bk|6>#cD=zbPkvf;;0=v{XFqprdAw3{g3 zsq>^oQfJ>1sq^e*ZY7Y3Xtz?rHW}RlT)UXJCCAqP7uXdT zfO9Ie`Xd*2ma$fd`9He;Z)^4cP}EW^Gn{Si~I15o=*%k#Tn z>l>--NjgI_#*k?iNScY)sv<6k=J7}*b-fZgPqz;!zfya3L?Y?LEPDdv4?Y{wm>G=h9CH2Nv1w0$2? zv(Vu17-lzo=16B7pM#P8Pve_E$NL(_Q>plCFxj6oS_Jq2sf~NsMXzSGTR^k=oX3H- zp8P6%p$4u+CYVoqXstfi;G0Hfl+ECsY*({WaNwaTGOQBnx_~UIRBg%pizh*DcTTRA zpG1S!umCx0yb(r4ca$N9QXBI&JGSIWqdPs;96lv2@Ch94Kytg!{WD*jlJ8y z{VJ@8`Qu2X`Ri@8)$tL(WA`6hudG@Z7%8>#xg`tTs~9FuaqUM3&sk?{Sfm)p$fB{20Qp?16 z-6_dm0UJfxWZ+79?<<|5N&$mE}C!xt`* zf`AvMhO>BII|EyYOhecO7f8i-qVjcGVssjNk5ZM*obnu^d?gLXI^}LGIn&8CtP!JM&BCr4 zb#|Fs$)-c|ft;i&vfkkX8wOK@WDixU3UMO?jEiu_^)`3MBvYFIDO`*YlGsTtTKUal z-2ne;2Z{|Oy@%H-+O~njXOS4O#`ZUoPg%{+B^O{vekOV$%qC{mNDk!KK@mE@Cip$k z^dmxHE6E}xM_|$AJ32o~--|00P?J2M!6_{pvWH!D{zrcEz_=Gle|0Grp2i4!4&yZx z4~U3(d&1eo9z`MO4cO=}Iw1%c1rI9IdV1z z=^$3H%-h$|rHvDr)4#wU_Um{WBLXu2mKaDXP+RLG&q&P?{ zXyMDgii%q46uBz-qyv_7#t-C!fDkz`=XR|{mv`=_QxChbqsx~hG?MD8WId4-bkbBD zp1Dn`b5n2gpU=k`3WuTts)+~j$va=bd^gNWQn1ab_xW&(K%Trb!TU8fDHh70Bf-Aj zMReHk57gHp+QrX7Vryp&gfK*o?r5=Sn#?*sOX!m|ppX0{H=q#q5j2@-oDh5$;N3*{ z(YGP{t9ahQ^D&-_<#R4^(`OG6fxweQo3Gv)4@->Q>O$fkk*~M5lq~NgcrTYWMXSxH0hN6?0^=bZ%Bm8rdsKx~7 zh9K3Qm{yO6%JAf1u1!m+$3I8u4B1gS(sdF49JsILAm+@Qym{`xq@BFeA7?kBJbvu3 zI-$Y%VPEJmlx{6L*zv-KvXB`Qdwc27X8m1}&2psDcaX@w6M2OnWyxTwfGLHqaq3Q# zFenyIl-H9{1K~ueXiO^Gk&^2QcvJW|T+At`ZlGs`eaK}EMx_ykG&%|_8ZX$kpPi_H zqcL77pLamWU((zp>SEbjxhhx&zNGI8*Ev{%m_o90PR7#YO<5JbU%7qk z8wlMD+<6u?-=^fDne$T-g5P78w~?&eX$d!lhEJwqly+OyJX>dT+h?#w+=%PI0jXgS zcL#FO`5)iuaA$PG4`5ibYhFiT+;07FEANJfPhh2`iL4YrrgknS*}<7iI+~ZXy0t(a zK2pz~iRyb<`37g!>`KJBaBP+k5E-fr1E5oxZGgjzO9-4`yqh5mu5+iDjo!LL4DVbD z+bf)M8a!eye4wWx8@d|)^S(wWzqljpcHo51E7z_3&K`im_z(WB2KHwiy?q6}&qFEw ze@5?W%nkk-x~Y`5k!pO!)+NqB#MtPAV0ag#k6enOt)_As z{ddLDf6iY=3TLn*r9Ov;aSkIR?WVPGlB=UW<%as1_^a8sf7o$<(r^^U@;JFcr*e}^ zyFS4l6xSyptdW{;Bf1dQ2+hx>u)QK*rhi0bJ|{At)0i(vgcou@OKL>S$On1w_rt$0 z&M520h#S}^oVJ>LtC;dWGE+B@c0-Fn!b>Y)Al-n08U~UNi8wT?oTm|-^&zVXlL_7# zLZ7~YxwJms#K^y{FUwnic5DGoLmij{z-TR3(3C=Taw&JGSUiD=Wb^&b5+0{oYYjzh z$m>sS(giNzSt(sfk39u+LXYhkK!^dQX-7r{Nz3m}=~}wyLS?pTY96`jphhCzCbED1 z9xBjhXD7ig8ii=5Hah-iesuhFz4>{l#cyOoB@j<#%D`PEOCvu`=B zppI)S;X3fLj_VU}P@nwTl|Ae^;A=Qv8G5U@T#Ivu^bd?@S1^GyM-vcNV6K&gA0yrf z$$-RYoXPKEu$LClDTnZUnmE<4t6n9hG?A;%hFBNN(k)2%| zr94BUoVaiRdpsaVQ8D-6h9*8;WZ!cXSQX_cCJ>54FX@&4Y_q652A`8u`4@qv&gH`8 z1-%1p(;H%iNsR^Dj=g+7!S-Y7fQf~beTNTf^MOkU>r5-#j0i{`zeXVok@SHvTkHoY z>NDTh8Uuo?4#HeQ;fJrW{J~FBzdS>i?iWE9r27NBR&4>BA>Gd*Q8)i%+K2EZUyKiH zDK?H%j^gYmaNbThzZE$1bewheL{T5VuM>uRcO5M&}pY-m8Q#Y$b%qEi@{H-yN! zKqJ$_M$+=8ndMRmTxf>ClXJmY|2fn2hhayf3&75A{VeW^iyXA818rFYY~g`LXZ=#i zqm-l$Koz#23U{Fjzn}^)=vCNg%l7-mV7~+GJzmWgPIa2iRemJi9luNf(NS?%?+(Jn z74GRlx;v}T7Cw#!##C~eg^>#x9BNA~jtDF3$Ror#_HbN!8EayD^KnuS zno);0A6jHsb@;Xc&fqA`bSMYr9Vo;1yt764k6!G%6MgXXybFE=y{YqPkFLSnX5NK) zc>B09wF0vpvQooz2LxNy3}S%8Bxl$Y_(C7H#r8V%(PY#PQ-dMcrUNKi`J(j`AfQYX zyjBFQ;fnOK@MbX_#mF;_Mlm<}t)kw3iAq%%=3(E3jWZcI>f|@dFR~OcaS*(j`j2S* zFuQH&)!>D9gaCE|n5%z%e1`r{u2cCHrW7L`2(bw0w*QElQ%II6#*ON5d@Q3xwWH&a zZZAaX-9Q@ZlGQH0nBHdq{NK|%?jKSAzo56}KO!x;nBK!L{@ZB>EnJ@ANXU6BNN_ z2vT$khG2|(^w}6u;W@wywe~iZsOD*!SyyY%*Qqty!bO)Vsky1N%_!{RWn!aHxR3T_ z3ull9V+Ub)QwcO&eMd&P@kAJTky06xvWC7p<4np4q0A_KX-xXd^euf-5w7N012IYS z@Qo2fDsDqWD;t4>?s_^O{*r^<8v}Zq4tkbbY*A2IsR}RP&^=?IQ}OL?d?Iu|+JPsw zjY(`uiRmXo9zF3KtY5vJ$H@}D@kwq`>)Ai4gQyMt zhJrYb7h)g+^qo}^y2nWE1YXUGNt~i3zE5&Ui3Kr#5gii22e}XsjMh8%L>}VR}RykJuD)=n*HeEmJOM*6i43*3!;vm`Mkms2kPMy!Zm5x$JW+O?$O2=y0{BrWIunKH!q&*pmP2_wcgKTtXs znEhu>)BB=1t|eTfn=O=$J0l0Op^nK={AYE%65Q6+@fv(X9Y0A$Lif(5X2ClH+mq?M zDLx-T6m~&{AIgS4UQBTRQ6J-~H4|yyqL~hD$u!(UgtH9c0yO z=#BRTJP+fkoBcGnUs*ZfukIrU?hYo~xnYI72g7Zn4!$CwHsH*y_a3Y_p&boqSKKdR zLoECADJ0chMx!}vaZRUHk=tS4CT4wGd}f!D07fZx99Pb_*dzHs(iFE*U_KuoD7p>nV}f8MXVpJVJvjci8{_mY6TW-;WQpjlZFD2!d7!+LTwn&h3& zc4F{hi)_7gnheF-pXBq4U7r@d6*U3;fcfEt2@s6htAM5IvDRP^O%dQG{|!>6xhyU~ z4lkx}J@!r**c(XGj%@3;k!JCyZ>d|ak%Nv(?yZq&8Sreb@A$>{QO5dz=>BYiXL&#m zgP6?xN`!^%H}6dbe*#5bg+X02=~-Lx4I4N1UTiK##6R35HS;aL0}0FctoBXx#Y}bp zF=)weSK!5Wly=%jI#1ItCA%;K@Lqwtx9rMy>(HI4H^SM$u0b}Ogr(Wy9<4v*bO#Q! z{ehn$x|E-F1dzWr;ze;N!YYzCAi2T*fb_jsy@tUZ<8LB|R5d81?AJI-PtsO2|G~NP zHwWd$-{7)?gyOOp*x^QZZtC7D6!Fn=PC)^Rh&ER-h>ltB9eS%)+8LMfS6%y%e{PB> zPbz)}8UCTn?_Ekqj-Ua4%Acmud&fWI-8uo zPkINdKYt+^$23!17#ehPA6C%$6R|+sPgTe4B8t`OLHwQqUmNjz>Oav#_o8CjScFME zjwj#{;Or`_6LGPCOt_V^OaclLi|)z@Y|P4ebP68o-1d-yDpaqV1GkHx~r=mXA$swH(?$Rc9a z^N1i$07ks26!9@4h%HwT{h$yFl!ChY-Q>~FIjb`p(5LyH&nn+w^+fCJKeC~~DQE5R zB?w(eO*Km7ul=EZ{bZ$<{0bH9c8v_t?|TU7t$?oUZ(P4b{oQAFaX*7g`97Q^taG4cXm1LVh1dLm^m2x z?xO60L5yLUCIEzf^gPv~1T!%bTOcB-2hc zLDT~caXSR=z26gVN4@veLrmwEaVnn#CVe~#^u>%ne)M;S0G$kKf&`x9J!KL73L9qYS?tOk8RWvEKoe)UU(O{{(>kV4F#ZiDM#ou zY%u+M27O~o8i&FrQVZP6FQVgqj0c>H;6P*j{(Tk7fN?Q{hSwKf=ELiJiVEb61`aX2 zZUhpH$i#2a-vT)fNclSQ;IoPu9C|pQxzw;PMZ`#ofU#jr$xk+XvC?R z90!Lm62t)!QHP_7N3^F>;0nEqUdsNjIJQ3@;c)}BIFVn(_15Bu4511_L8NF#s@|V* zUuSOV`C@Ed`OdDK@g}VA1MslP9+=yQ%_!BJP1;%x7Hlj?H8|nH!YO{%#8a_k# zz+oQx2ng*;aY_}DPelEO2<{K%p?y45oI(~RkN6iw5M0XN;se4H$VPisL7KFHuCi8>zV=~#Jdm>qFFJ1W@+9my zGrxlnwwB)!Rh3vevH+^vcq|>gHxK;bi|>zo%oWA>Z?Jvt$`^RQYXbg)M|RqgScF<3 z({{d#4+hAOP{Xh^vH-3l4$T6L7%`{fE7Xftty~>E)A-EyLE-`FP!d|0~ zQHoo|0S^Bh5`~wLitF3Lrm>5ZjZOt@?w5%ZP__0*&|V`N+vqi6ayWs``DEEu5y!9S z5TD^2HT~~Um`i;ur4|_J2oNR)U!k6uIBvB^aOmg5loLpq{)3JJ+nzDY_>~>*hHj#x z#bsD~oLO_wq?6I4%EpLuw`%^QFwW51xm#M$3vt>ms*=5{fz9AMkiIw6GM+F@qgEY0 z7OeSZE`~?i!}%+l(UrGb78abi@X*C##XBL$0=zSUzf}kB65zc69^S$C$IV6A#4hkC z^a%7;On)Jjp$^24yx{PZ&MK+6KY(Z<(W8FI`vUEhIL`V#C;DosmdZZCW-IDE$#TxH zM<$QL{e-9+Ux0KXg?gRP2e<0c-Lz;Z1gug{(XvAwAat)5O5>rSS_nVifV6&ED3^ya zwUEq1*J+`_Jk(AL4d8MM%N9y)be5I=>74r!qoJoFt86{i%Tb$G;PEdrWb zM0}w|EYc(1)FPhOBc9SCmgo`lw1}m8#1t)JnI2J~MXb~#25J#yJi-g*AOD4>oaR98 z4zjh7I~Uf~XEaP0nobE{q;P^8WLlag(l{Xv(k6BnX`F-xY1LX`a>K%&gTBQeYF@+onK ztUc0#EI} z|A80ABCQAgdM|p=y-#sHo$!ZHZ z>&NN$%IZU~Jx<}M|J*1eLqerE=9!w!ZJ+xx8djD z@J>33fsLKM2mks&p|D=ViKiph;MYv5uupk3>__ZV9tsUJOY0Xyz(EY|2|`>Vm|Dz*uS=pw8-IVRL{l zd`A@16Tk#C=tRuX2q}H+(mH1xT*A2gXp-*=&^omMXW}ZH24natga)7-`vs?g*5!X^ zPa^jse5?b%BdpMZe(GF9`-<0~)OG;Hov;2R^c>921Bvm7z{Wzpjk{>Jp{s8*6$YYj zp4-!3n<^ETV;17C?JN~<;2&M368xkt)fxpKxsx{W9RI2%F(nJ-h8O#5$4O7Tj>Z6B!w_gjD)?GNyhXbW-oceo|b>fQ%{;{Mp=B}gvHOz}xF9Sp!N z3Fdd+0xPkNlfGZYchvlN3B==fK&0Zq)R}O<0Ri@k3eIi71QBF6gG{pSt*9DF0{RB- z7em3MT}pb0yyv;jBm?7m<_b33y8bE@u#Y)Hj_P@X?~azw?v=ZvRr_xTe1oBSI7 zxz>=8#acdr@2*h1aLM%oy+7U!fuf`GO~lc)8!(UXpQqm(yB5s=#rW-$cuDyuKz;|r zV1($7^4X7H;oqM!fta7waU?)KPNKmPw@{BWvj}7wF-3JTf3GKYnEURh4e)VOo3OtI zg8E-yp+y|%oYWYdgJO?DC!^SvL8|s~M7%8`-bDmL{jo5MV?Utr zVxO-u7*QC%Mp-YO;>?(R+>K`%o>+ZO`X2-#g|9G94M^nr@u#Fnrv;Y&hIRK#;`dV&qCjV2IxdPj5UOLdEA>G8U*HY z$tAE20xTxkN*U12cvWb!-5s@wntOHp)%n35gyD>-pp8pA;p{L@5Z#Vcq^Re47|=i} z3I6=Nkr$E7LnMsb5Ye#z>Hcl(CpG`ph#Cq$cTXj5R)XE5%FPtdZZ+4cIQJ}UlwCmU zP|c-vwQK{J1Aet%7*C-?JhZT>FRAEkftP+X#ii^IXA_aiP<|>BSFKczT_mkLNu2%m zL4%>Mv~E@pBYPh?`!00%Fyc2+P`Q1S|A&ErYz&aIE7{#sV4fBA$?-jeUta29O!1|_ zFVz7T)?_S%n-V>v8ht9D@IK*158lr%M{xv0VsL*Q%me}B>x`dOsm7twN-*g`$P0Ua zDl7ng^@IVg0&o#ZQmlml*}rbRgnY8^y(n5ul;JcIHtu(CB7)zUvapma@dp0&+it~z z327G$W&7FLk+ghBmqg*FsCXa!79{1~&jyb{r{c>oMp2q>r@__?0o;0FDBm$AB{bZy^1-J;+ z;`0^K&++(%{>4ae>2#srX(vaWElgjeA4xuSd)R_YULdBkVVj6+Io`y?i#4ZeL3plZ z??1|kdz#lX@iq=dH_15O0t9cNtz}eWT0R+!IL`d9+JQP5Tc%GSx8@rO{fapFb08;) z*K#y29BqUTL!E;u<{35`d9dJv_6d5sU>?^D2s;9fy*L@T>W=MNc)_?)<}8~G?BTXF zDC`GPTKDDWdC#$7NU;0YRii|M_d$3`>g0!elOAPAz`-vZ2pyS-tnYqZdYJFxlY}^vEn;-t@f$z5a&+p z7<3*a>pM!vIW!oqGOtkqP=s!VYzXBUoi<&h&jaR(JQLk`wD4)N+klZ8o8Nf!xIjOh zqi^4rLy{T32SbvOjgQwszTaCV$T~@bAb$4@aAd}%iQ9j!Krm+f*6us%kHg*6LH5>@NST8gsI6Fq^%id*!m6{GC%{JKG*-j8Ey^3V1EdXfRQ7U~f73C1H} z2mvs>tBTb^d|@X&xHDmB5{OG+@vl>MLDt|YinU!w`!_#Wlgc-zI=S~ z*#e{n;<$jwP@h;La+($i_*NIe`|bcNQKvpZ2o{KueeGyL^bnYF!?(Ax5S0bBR2ZC7y&b4|a+C)Ip}Ka=yCkZA6Dk!=0h8o2@fIWLDC@u-RCK>789cDtu@u&|h>U z6sH(W%9hf0mPol>8EE3GiI=ipqT_=cTu_B7&>udl@q#*w(Ege8Qt?6r?aFq$g6$)x zIsfRF=C#w-qhRf_pT<)wW52L@s)G+Pbw8ec*bixMhsiyDpu~F>rqozpI)sDMFrN$J^mw!Bo;ATLEmT@EPP$UnVM;x(dKR-k`anmgVHlTH zUQ4&Snkr{kC3xFR*h~$lUa72pUX4iDG_KAy@H(2Zw&FaAYu<$mh{YWi%HJWF;qY4c zN(lhBTA>#dAqFZ}(C1Np$B&6XM)FC5wrCQxic65mxP{u*1IA;u>EHuY5cbXC2ei@P zFxfMqnsI$(2ot~$og*h$Z)Jqp8(FG%H8ZXPq%Tjha zN_%o~ZHCKBP-n$ojS9fu`24~I)5`2dQybAY?SRDLE@i|L>=GiS0>gte1*FzVdV}6& z+MDzOg?Y2W3%KMfbU*w)LL)+ppK_(&wueLGnGMqNUD!C7D?L+@D=n`vekc2J1(k@0 zPn5>&x-|6esR<~PP*LvU`ScMOoGS-0aMO=7m4$Cu%-=Zau3cLwRPjiuw}tbvUG$L~?v>r2K9+>jRo`N9HNbTI(sAM&M3KJH!M?mK+yb5H1uXxeGfn*x zL;vz3&{&2>fvdL$E@I;A{opV@aHd+Ff(A!23_r!Haq~4enX?4+c<;cT-_f86hc&1y+~zU><)B|K z#W`&izZ`tcrHaC~RNBTro^&Xk@gBenq0XQTz-0%a7XME%wz(umzJug6ar0Sl6Zk)c zQ;JKuR19Yo)QF~n60osWQ>{=Nsh1)hyEwVl_;8%AH3mhAw`0(wwF4M}i@eK^TSD3BYmg#8*2^J9T|TE!`;Yq2;6o?m zx*#4-|BiUAdX>a4(0&OLBdx|RN?s;cw&T$>>Dz z6yU!K$i6azTWsDBR6F#I9&EY(S!iNg_fm8rZ_Uc94K@t?t;l;?Kw=GW_8tJjjrr$x z>|_J1m0CU)wucToyAJjZ0h`Qm7=?0)3KvD?AnY<}JV(CD_)8v85aScEoEX%QB7 z5+Nkr))<#7BvQ01Fs%uD39;I51;LJ-IVHV@PxUt;I(oiR+aHFG_48-I2;J38hJ(ur z*`&z~$jaykf80LyaRKp(+;5SyPdf35!90A0ZV!;Lh=~`B5e9hFY#PouFK?7Xh0VQ& zek%ND+#(~DkmVNx`!-x z&&5TBc@{}Fw^FDj^-B$<12MnPTq>D{Pc1z;)Z(H7%RdDPfs9VQY5fSlftRs( zF)9#9qSvZI(2v94rXKManTFvw*4-OXGjJgkCu{(QlBOjGpDk`@EUV~MMT+f;_kr;Dey9jiM{jE`d z)V$wh(pFq7F=gnUN!So}R`Dx>q&&YD*8SzZYEoau|z^VF5}d z4?`3j@UYSiZhu2zxRghqM@GBKvGV96B6_KarV@Dc4iUXlM3?E&D@AlA!o2#ACFs@X z=adGHZvCXoi2YIrJ?gWB5@adOHblz8c0>>|1yhS=ry>>MG(->@C4z`^ksxfxKu#9c z001&atE&%L`Z1AXQ|2iE}7#lESgT0tDlY^TI^@4*_7)`TpI6doM^D1C6s<9s2*}Lx4?1>D|?6a%epS@YwO(rd0!+~>)BQsiowx@gIXLTGav&&gyT!|TOxz2#j&6FwRmlLPS zP|H|pjD6hL~7sAM2<5E>sVATFg0?6ClrmP3x>9VyEZCDRTL z@=v4S?Z{fUO$XP>^9yFMQ+LRHY+_RvdR zPJ(P#p9KNr;a>%&8`zrTH0(TDMG#6qD?Us4r=Eud5P6p170pvxFOSU?Otr75p>2Dt|Lv#$$1A1HrSs@q*gW|50a-qXs+D} zYpJOg=#TN1XB&cSWV^^PnM-nLKSFRU_Jc&&a7s}2BjfSgP%YI)8^p$8MJg~DzM45x zXt$GhJ2hy8WeX(8>%)HDIq>vwrqWbS9c*GAfN9ahH$D1B5j~u(#fm=EdmZT=G4D;J z94LJXDCI_8BXlT8L)yCn8InpcMgnR$dkhHBO`bNcxQqqt{|z15u|R)~eZLq7Yg6G?_dEHT9d_zX{hb{LUUEM;nl$?z9DB z7B(8NRvyO_=hs`X!ynluBkmuc6aCz-jpawD2qXG2xZfk}^QR1%+f3ND>x) zk=g)OEzNzuT#00oPap2WK)h5kkaT1q#|#dHt^T!il-}U|0x=u0&P_{H$Ju3I3nC7{ zGsG?7#_x#QKM6MlZu&sdyRbrt;EuznIa3{I&XlF1fZ}Wrfxb&kJQ#6QW@n1Rj5yb= zd`XOzgC$fk5NimQa0>8+$Yok2K8bEh$0yZL`>fPIm3_h^Gw@Gf^RMOcz7Aj*<)gb@ zim&8j!CIbKDsF|4D2iAVN<@&DnO=jVfg`aAk63ieDG|x8Mg&;cj%|mR37U8X!kQ*t zI0d;MItRdDKYSuS*lz|WPBp*LT^J+1omJie>@DO4r~ZVLL((c>|H699PuESm_rYA4 zcB^0}bL$6*y^sjg4w)>R^VAfNzlG||!})W%!6#}*Mb1Pb`|yPDoW?_Y%oIE?;`sni zLw_x|2Xjk(r%Q+Zi4{;<7`?XCQ&T$W%=%U!p6$7v7){l{{e%`{MQ&r0>N%~*O~O~M zZ$SVnE&_-f3y84*!E|acwj#nZ7S>+OfvzG#$n8sUo=sg%+K0VQ$kf%Ox7e%Vo0J}V zN_>;jWRKz--dgJ7XeaplD2z6mEaHpw_1H(xcpX>NASYl zMy6rPA6c*M1{Kq<7un}f_OnAMJN(r-zhX@sU1}d&{yInqnCVBP!`IT5?I-qd+D+wr za+gopHt=kGSBjbc-ZM>2V%XcD{HzsekP_t&{Qe)R+!(?&3Z;cx3PS$G4mCC63`)iR%OLDCJC(sd*3P;xG z1V8K?}2Jf}V#QpyQ-hxODKl?)+p5Ue*xa4|+%nuN>L>1JeX84c&FWI`iUB`de z4(e*E29u$duz*G1^rzP;x_-mkOI<(|;zYFi1W}Jp;k_FAK2oXpDFN3mma_viq9ek9eRFM*0)sola8%xwk=5GgKJ3KmsS5Px#8h`JX21&fG!`a>iUOn<>5qKW59=#q<}JA{<#f5f7L2TI|9t`62qzQWB08W zYP_@u@2FTeMlIC}Q7rj?pJ(QM_uU(W*7G^%_pdK(-g#%9ndg~jW}bQGnH!ziL01a# z?yLt$nE1Jo`JN&W#WOj6c~Fg^)V>3bqA-g5$xn;IpjfRiT*<=F+b7S58SBSXNzYEa z{XSLD6SZ6H96=A&S>ICxlCXXdh~!TxG{T7bK@m^QpNDn|{!Czc(hw)MynN-%pL7KJ zo+6Nh^bm-o=lQ#%=%I+GrsrHq&wY4H@fFj4J}YB-NF?~4Vi}RB{t$?y=X_{z5&WTu zr>1B94#6J_)1x2{vHYnP^rRqA>m(AiX9AJ*>_B%BK@X*UYI=@6Bj{NJy5#I&41ZoO zW&VViKZo!)VR;dVr02va%uXBS3q_1ikG8)}7_UOZNQtBqEN7?FRw|?yGNCrV1{)Zxkm|iHo4Pb4 z?j_{z67E`Z?-6c{&5nh(3HM5JZ)NxTHo=3?&&B5k`T0HZxk-Mm5uf+S&t~ztS$RCxRN;--(nKFIPipq z^~-~;PJ&T9HZ1(1EdLm_$Dbs<2e`AIqEJo$ zD+xSAk^HX{WD_89VD!&uhv$8iNb8|u>`$d2kEG%&yg`ND$2|poUF>*;#qL6!vmgjL z2o%65`nm7$cnX_>PK5sOBo!kjB1PB$_hd2Z)Aiqyz<*F&pd|2n0dDsnzQS*NA7hI> z_WXw^#n#tA6_@^72q)^6399s#DrjlHf|)|?5BMlh@yr!Wp~Q23MS3(bhJpsTr%J}O z0nW%D*?uX?3CI&a_V6aZ!7Sp|`zDCtD)${p%&T~VMI>riY(%ptLy*;raNs5|#Zww) z(REO1C5tF*fP13OB4`QV4@H#xnE}{H{!kR=57+h`+Xa7S36e+}Gf9F!n^D%4@h;RdoRu?mi z9PkAp6sUO0!c}O;H5!X3Xn;GHtB`U0iuOg3B|YB*yn#OyiTSe)=~6vDQxfwdyuqJx zgvaI2pB+rrLWF}X0#iIzsccJ+0q*Q=NfT5Y0+fLz*9qJq_yQFLDjsK;CBHcz(A=shXn;FMV~H3afFBf7^5bRz8~8yn zTHmy`-O&XH%uB~YS6)r9eWA%PZqWN-@s6CB>3#yf5TfljD$0{*ASzU6|1OvxPg#fcxrTQ7|3&{JN`|UyE=LnhW=!HQ*jJ?<2SitsQrv zIS_=q&#=e4>abI8u~dhfd58UP;)|Lv#Qr*!LG6d+U1$ffmN=Wi zyHXfnbqFigyXYdc!`OG=2u$`)!ESpP&VuHLeuLp8CIL!9-t!!|M+pH)(fkNZ&#=p% zi!3`VwjB){{Hwp<{mI7ozJdezR9X{|}T`E;@LW*Y9(+@;dgbi1PX`1WD-J@Xm>@H z9n+_WdSEFk+K@b*hA#eIYuof>#rrPKXolGpl@Q=r-v#)l68|xDwATDLTCz)mt+4O6 z_L9|i`9iV@c;B%GE+9J~@LK)nN47$&4#2&Y!Gdio1^uvO_PojSv&iOf#0bz1Jlcwx z_+^-+}*@`vkB(7X;wgLAm64NLt6A^*;BGTg=C z12{ZSgx_imw{y6O!*fLVQaxOb{{rT|ZxdA`3(upgfF^(b5WNaM zZ)_9!@kFXK`#hIe9yj^TPazF({;Ur3!*EeiK`Mi_GaNXO&Ofvsz&&T91zitEXc^`w z{N@b+q_cFs-Dh3|Ute#kH?7aS0=^w)2R!J3r)BLQ*wN?R*!>2?rmyz~%N-XaV_L)U zmhX#iTh@P$v2wQ=9=_fS*SypHCO!+ul->FlM|I~>Tc9A>^M3cY;p^)i<$b@KwyVw8%*R==CCLr`2?ruj6~6V@)fq(7lwFmH5qH;ZiS=(NEwqWE8uXoc_rV1DZ3s6^_tDAklB$2SAz8d*LfH z`UHGC%zk*#~%4AgwJAW-cvmq-H9Bvy*q*gL)iiwg4Lk4@IN(bYfl?-L}wU%?SN2Ah`O z{4In_dOv}$q<0W}JIt@bgC0?De&MJ-2o`0Z3-XTI?ww)s`~aFL_V+)Cb|UsDAowf< z>-Qx)1JjCkeSisQtZnplboHc$E&@_t`#xH`@KuQk$7x;c3>3J4hqmAo*9ZB{x20=b zUkMj+eJB0tDa3hXPJh8vKr`2;z!A#fTvPy1=3*RtWiG7n?J%DM4|@C^xA0s}>p9Nq zzM_C_$Mj#(eoo7}`A8i3m;kc_29kkrvjRz51VIK3F zpGVdu5f8vu67e*AJIvpM2R(w7-*;B`79F+iKpVUbJSq!L-|1`bniEW33FQk6sRT4J z%yLl>0?dNEOxg$TvfLvDAP z-syYC*Lx#&IfEEq?`khjw;37A;tFM1yBO7sE7d?oXIVEB9v$YtAR3ML3hBMNsVWdOgE0K<7q{lLKq}hxV z@>1#k3Y`IvK99gK(j&vQoW2VeaYW1MF9F9$e*s5mb2;VoS-{Ag-VI-g^bz=Wm~Vv# zJ;>=(|4uoDwMFTsV@iPZN(6?H-l!vOh(ekJI7XTcN9a;US`tQj5qu@mX^eCzJS5Ut zj1)CR={{Q^J$$JV=|CN6@36?6J`FfV`V<_Y$6-YCn-2m;=Ja9sN~C+?3q24X66uTR zU^2CN+q;J5t!~9!#NTeTZrkth{ z(*HV+oN{ZpRZH&{O7A94@7{2FE#dTT=k%@(r*}7}M$C4zmXy66wSD5$Dnf=_-Nr3Iv9cHt0wfME&Uh!{95CW--#faXQjGMmm&`CJUs0LSPta?^#+-KZMJe)87J)kvUx{=Zd^^k=;UROn`(DZ^lt`ufjxU(KRR|0t_322xQAqOv$4K+w z2u)(7^TJ3kfv-eb#7Kw3Ln19@q!vPYo@fcj9`pd>e!Pe|W&$AP{hfMN z^56e!U!PGm8@d)Tp_={tXQY}95vo}s(jnC>OQ>d5070!kr^8$U7ZpqPKG7@MgmRV! zcqZ2ZM<|ua%><|{9TR*dqt1hGhxwy1f=*xWMYxvd=q`EO2vnNA2qDa41m+JcT7`HO zE>R%_%AW&}QT_~$(A_YD`OVt_BT;@2z7pj_@a-_Kf(JdU_C4~`u-f+^GTxCyf!)nm zVu2CXo#dmOMLyS(Phe;^BGW))3J)~q3Zh1Km~E0Mu=hvTGkb44g5G-^#o|H7vC)#s zqi}@&3LBZA4RyY{duBfNmLs zo#z1{1W`L&T1%mE&RW1RV|;LgZf2C50V5gXg|B4H_ZZ0%c+i84SHXi8orC`)(P3`< z2{tg05>Iychmg=-?8?T2b7OEHI0E-_tZFc`gVz2j-4n1l4y2lpWSG>8k*XkdI9x_j zUmYb$JqSnWWe0KR^PxJa`{64|eGk4J=EvYc576&`2MuF`Ll68IE@9-!`W{>`VBBAaA=VSKiL2&AoUJWkKz!KSW) zZHRyzKPuu~&+*I}l@fk5!w+Hj4FdlA0)869|M4%<5J~V@pW^T3n*oOY;UeN@@~*-S zbdzAunVWDQfMxBS;Dq7Q_nw^&c!b`WNGndWwZrT2PA8V(t;+W}`6inp`RCDlZ($*R zR%OG&nR^S1;I!dqNBImbM@1CZ1(@w{_L*nnZy?3@&gHPWOd`qxx%(Y{T9}u-zsH=n zaHdzDOpNWa!I8gn0g1)_8dx+7x)8Q2g?41Yi0W_SuP+xexBQAZ#hKYe~EA0wO*Qej3@WGvV(0SE*Xz@n?17PaT%TXJtX)HF#DNlq`Y1MNENQ#32<2w}WEq)} z>CW~K;BvyCXLuL`-pS zdx<|(f@2_-+X(3DH1zG>O|ZE|90aG)%WHzPEe|^jL1<_fie1hL-~y=>lt1Z3R1dUz z!u11(ZEtYoZCIH9BsD!8)K5p`If9=TgJxxSy@Wm$I^LH@nkJ?xrPzrTnQEl|KoaU#V+ zN&z>Chb~8mub>eq_~4AAo3Ne>2W5Qb46Mw?x-U>t4#hqZ)vP-oAvAP1B1mL@mINvpe3AMYnY(n&`C2eJbwkzDrv-r7wi+UOa*5 zG#|khHgPz~MU+5r_&B__+dv}%-$Nj7rlf4)Bu7i6Hw1El)+vs*7OCi`O-1Y z5xBq+s2JzS-@jteHY#LvbvU$urgzY>={ttdKwvuxK$W4Hmn7uP8ORGvqK~5)pe2Bb z;1gl+?h0fsX8%ok4sLg#8|vq^W9upo7+jH#3nIEN1X@3>KP-pCQ9a@w9G}?t9$&6` z32!zn4qSuNqZ|Jl1O*Fr)&L02$p0ETi8(i7F3j?TXOt1pE&z7`u;-64p<_j87ll57 z^p3%Sl$0Adbqn~0uTNK@&2O>>DshH2ZavPY>80Op1};#N<}~#b``;`Hj2cBp!Jpq# z4`M&4=88p42;{y(%7_p z1lQU-vE8?CUONoomi5=72)gM48K=KTo+o)B8PW+&abSKnVc7sI#Yxw~AipfF8!Muy z%#1>S)pnO>1m!zr>A(v zu5I_`VD|^uQ<{$(r?@@S;_MMPZx2nx5iB-&{?hX>R=B2zUct;S_4)V7y@F5BMQRXO z_i=^erDGBDK*+1-to}ctdf>pH&<~J6@Cv$usHF@CCiwSxa7xxo6M+)$G4<39z0s$}$EoaH~WZ$;>{(i*@I&%n;Py$Z_u=SZFgo7CFsGvBHfoCx$ihRFM zqO&PFcapUtGy=XoC6b-2n4!1RpKJwouHYLjy`bo^{YIggsxVx7z!iFp^mM18WX z`wW$vm_>>J_REQF+w15$FNe?GiB19K!$IQE)EW+mXeJN@!>YLHAM=t<*#?TE_UHLN z%ES65hksF*Tur(9r_?f!h0H&OX&nLy_YJ-bm%WobmmmZg-0m0l9wn~L#IIP#mQjc?+gBtr~S@RDFN>`8*V_b z;q(crF;@SJe9jkY?nLCl;m6*3`y(jor_ZIYw?oNDD6qOS;C&jZb%+KE=uDB3cA*PA zhOS=f0=UogB)Y)Lyg*!4P}%8MuJZm+Y9Tld(T~yE zL1>ZbJrP$AWb>kIEj@jiYWGJR;I_AXmsi;Bi&&;PsSwr4;T zW=(m9Gw{7}@TT?E4*!kWfd%P8w!Rg*AI2Dl@VDUdtvw!IfwL93{JVYc<@t_Zu;%i0 zP$I8_g!Uaz@eKAINBcbsUpU|K%LO)otClBPE^!1Fby0OOcZrG#=YDL+0Y|GBOODb#&USyV z-QNwy{=pr!V1o2bK)WEHAWUyXq($BLpnSAV2o&x+F|6fcNA+GT8lh7bzc5qfu1rZm zgvTD?2Kd8#T6_Qz_3;VfSsp?v2!C*R176!P`$Y09guuQuEoJd$eHZ=NEgy9ekpDQ2 zwfn&X2{1mqJCAa1R-Q|>}>LJ@4rd@sS;QOBckZg)| z{6Gu3LvvKK;~2_+KYox>eQ)6RK7Pjjp7|%&O9w~(5=CR(0T4(jG0HCXzX3fM7dEA~ zj4Td96Qa}Fu>_zmG!vza4*o3&spL`Eh1~~Y^|jA>AyN8;bSMeV?^v{ZJLNW~oqJY6 z1y1TU;V_pMJV$#DY5Tnkaox{5LNk5&(5_FCQj(|Y`$RZBWBAc7K&S#j_SgO+yFy8z zYLH0ihHi~gl>LvQkZ z)6a9KlLHam7DVhq#ME!KGpVf3P}D;1j|$uWLS%OMjvyQH(rfD*3}q4tsIW7p>@wnI z`Vi1Mj8ed*RnS1F5FC~Vb}`=15p6&u-st)fMV$yX^p{$;Wh(K)cM@Ap5>C0-sE8Mz z!c!8)XMPUU_&M;D{A}wREBHlrS;;S1V~Jl@9NOrA(c%A8Y}C1SE6b=mVfhl}Exdm% zyl;fJp*~ami14dp!vp9EhrhgzL`m{~|IxPT*@|}<&bWEr5g7I<4nOh?@#89EoY3Yl z!M;H!XJE&oY_;L^uM_x>!!Q?x-?%;~oyL0RWrU2hltAvmV=p;;dm*Lh&Np$4SsPVM zS)L`xeqRU9un)S@aVi;xC&xlJMRcAzCni6u{fiQ zhKZ3Qk-kIZopZG3eM-iPOwgN-b4D45+k>_~W_C(o@sNBR7e;pot}vGb#`ffyUUvki zzexm!Oe$n2-HJ06CxWFocD;-JryqpwpF|S%^3cTyE%A@V&3r>}?0yRE+0WfWM+?k` z+OO}(h|=$F`6!S2ZvQj1RTF&r?NNM5g_6d~d02yntuzk*W3;W)Gb~gx1OUOI*D^m% zSX+f7S%c;>{!H&!cK}c%@jKROTRVliHR}Sx!dpKLn?bv80rF5D%yzJeUWk04BmLE{ z2@;#K$R2tDjJHwk9m)uAS;t*2pL>SUe)Sz|jZIDxA38KoHZjiL?(NlJ04?1s)@= z*#gfH8}0eWR^T-KUr@}RBD<+?PH_6)iQ>=~Be@e3$F;}Ijpx){Ey8g4($zfqR$71ENjP6Y%*_XjOu#tmy(fGe8Ae0JB|ILQGUQ!v^d2{11z@UtlkDg zj^Ded8*8~BG71&{5nHg?WSiz~zj=`@u)5tgZS@|{xj0A$cY5r0RL|Q38!_5XF2vZ7 zmjm8C7`p_M|INQ^SN8>`T`zuN%m2a>ges+2gRLfrm2EU2z)+?uM2BCXvfKQt+q-`Y z0B5yp4lX{)>X=5^u%w|7dakCp~9KP##3 zgH`YN9Dnj>rT)z0h{T7ip0M2E1e%iSPfCNCJ-puy{zxx{(mN+6y;Vr>FAREzHMjs3 zWc4;=Nhg^~l$TSk-UIJ^Z@cA=H>oD@kY~^WHviTCY~TKz zqlH)QN~oV(dVR+P5{kEu!Yk*7gim;yvwM(cVUTTUwi(uSgIE^Z~BZX z7Ae`+{t~X>@TGWd$E+3HW*-9k(!jev_3ihci?wr*zq>Hp+m({>EXmx^l<}m58s&H3 z-26{hs05C?KX;V+txx@{CGB7zSHip-M~yK=8DTvHSmCOh@7YD&&9FX~Lc5(>v`MC#<{v zoMiKV8p;7+&m>#^>OGeA-=|ar@bnN4lCoudnDH9c+2Y7%N5+eeU~VU|tuGVQX1ooF zU5wN71djrXplH0sm|sIML}6tA*7ZzIk~&^ejBypl_SV0*V$nrGrxTR^STmEs&%$LzU;;avi%x+R5SU(`S9}-EyK0_y}gF@AweQ`lkfUr+Dcw z!Q0j#IUJ#BS&wA{;Q3I3(vPx);&S)DvzB~5=%qy`IGpHaweMw87;xn{ACFJ^9{@c9 z@N-NdbT@Na1vT*M=|R{Ma=Z)2HRN~|j``&1f}@-qSR7g~ha5ZLu#w|2I10(J6^?1- zcmR&6|lug#Qt8rwKPLRq0L^?nC76rLG}Z@EW;45^g$3y!()FzfA5| zg!_4NlWqj~edK;xxc88oRaeZBko!U5|0LW{9}j&(wPA&dSbyEjK5gSjd$<;(*bpcw z1@uPzet_R=_$I$O_|3;}DSnOkVUM%^!*ogCZTQ`Z-@W+#8o$T!D@Xh*@mq@D_4s-4 zTaDjs_}ziuJ^0;^->>l_Md(@l=%oJF@cT1&fHyZwq4yt76E6r{^h=>M#0V|nuj?4_^DzGEtoNZXVU`hHQ1L`@Yu2UASf6|x^fV7U1u)rI%~kLGw7HZtFa+0NYV;B&&u&~h<#|5$IUl-v8v^W8`gT> zyZ|kzS6V2Kbl5-2Mj>H88hU5Qb9>0){}W9W{0=P#V*e)#2_8O@te)97(K% zZGPjh)V41t6k2|`x9!VoEI)j>}wNIgrc>CyRz);w~dX#lQkJ?i&94IK&kMelu-G&*2UdB*vr4ousCN$mmqR@i3(_AP$$Ch<%U?a9-eTaJ8 z(@OHD!+ro>cy-dN=L|A|bV4h`U4soTh9hhapIoS9|C8Ma}P1?iRu^2K(0$)_Q3{C*5@|L zq1E!h+buXGeMV>|rc;VL29l?t>~MY!X;R|&lc@C$>8!`1fEL`V6;Kx!&_OPsH@JWf zg=Qni)SIjnf+X~Fd_yG-QoA}4dOaED8T&zmkLtsWVo6uqbkj8+ECXWK1X?n-x=XOQ zkhys*bPXqf`-+eN$)!*$s3zXO0063kkW3H4T0>q`nxf|M8X0bH%nSc#q2HKaJImV(ECFuW>PVBJ{92_)LAKkq9J$<2^6K_l_odi$csWciU5r| zScLW{^$C>eTKeGrj8gVuIO_;pzNk9@SVR9o_&I+Bgy|YO)qGlL8KLLV4=Ke9IZ8Oa zNcp1;P8^_(#Y-RwGm_N$I;kOHV1&!1F-23-j@iIa=1`J0d+h5DuUrAUV45|5k9+RA zcIz`}4vNiU4_SlGQKp_VH2UqPkFEKCaQC9T!I;ZK2hPBV(2rXDm(VS6VnvhP-vqqq zay~)&bXCJXkZY&$O~-7wkda710)cVCVd5^G#$9p`T*2W5cx`{dMDCGiBakjL4d?gk zk^c_=T|!koiR`BW#E#-n=q{*Vy3`j9RQ#p#+DTnR=vJs_XJ{3f}MEIeO9ty!G3 z+%b!*2x$Pbp`B61!Wp*ArDFg2PX7^BMx*iR@hP5#;sxfX7t5A^V@m7m1`)^YSCf|s)4MGqy)R)o!hXb)rib&Z&^q$FwASS| z7Y7FQOhrq1TDFu!Jp&$$m%4!}IJtc+PxE8Z7g`8z^?EI&AUCke zhpq6UxD)iRDWGCq`%{F|Vn3Kq=XJN7WhgJx>-nF#zeMY#J^^Jtoskagxu_&C16S;( zpvJrkDa$?6Um(9p9k?0!M~`pyUyBXs)LH1ZIC)-{aeb$M9`4IMLV_hwn39ijJ>EJ} z7kETgbo++=+nVvG;IOmupS4+L{S{Kl2I*{uH0@ag_U)uN5H!7FyZ}Qs3{1>FtWlX} zLl3ixdIf({4|IVfl3=z#b&3sL!&!Phpw~c{y&HP$JnBa-MVD&x-g+k(00fK1M;7mHi^M0sBmue|N~e-rdV9?~h9 z`_P-AoO>|mgR==iFUsD4;h=s-)BCMRdOL~U$Dj?0Is$6YZ@d<|5(Guj z`)a`ZN+IrIi9;vqaAf<|?++6E4PIf&??l}twhrteQp5GYVw88N57zt_H2%(@`cTKT zag`oJ^Te;BQJ_NvQ#xi#>5ZX^F~9j!SENZxZy-NC- zo#WsUx)%8%OK68U=-KW^WV^q96fXBOzl1Dclu(S-Txrlkt$3$H52g1AXrfkJtfD#s zlL8efC4`KW!^N1}Wkt+3Y6N}XfxVU104}E{vt!8mA^L1gm2jd%aH5uKg%vv8YMO;Q zVFS)6S;tb8_(S>^a*DI5S04&p(Mu!7w`u;0XQZe-@|ZWWehZ!La#qcQ*w9r>rX-1^}5Mu%i2Wmxw#f@Liz3nr;PPa>XCxn@Jew}Ewu9N zFaDb({$Zz&A574P65X#rd!PmsfuB!RB*QpWrxn8?j3MdIEe_77EK}_m20siqr}inh z*$2u<9|l?+aC{g^?%ps0G^jS>Lsa_I-}M;#I}A}VJBy*+j8Hz(z`)tEV_IlDIrBTb z19`Ugb!!Hl;bBNz*b?HQ{D4oDys zJOZ4A;;qo1UNx?tSkyfQz~TDEbqjKWAa4@Mc+Ip}*^pMIp4LW6D`LNjuHVr~JgoRK zWkZRqBa}Iib%AcBA_@Kxd?Tv^$TjIG#sWp$`hn%S(`0^+A&I_rbS(b80vj3fZk5(g`L59igol zWXbvWjc2rdG1_z4+I^O_lgT~-V+}ejznGh!#z$_q;<$lzgnI*QITXfp1Q?`er)^^k zZnNG!0GCsZ_FfPh`ED6`uQIx)y~F+}k^DPTPP={;hSd+_)3ZHdW=Yf+r|Ee1K58-9 z;u|+!WP4ihH_Ln2_kzj4`cZ%Htc|(Tpu0yUV_$pJYPoB-ZSAX`61!!`TZnVXns4E+ zify32;}?4$wEFfz@hf@M=I`uz3SO6b@3;Co2iW{}c(wOzvHJGo(x-X&=<4~Y@A)*p z_fh|mp6?@jmv|Qkf?O27FDBrovA|=Ss6b55`*x-HIe_*`J|;L{suiCtFvaHgc4Bq? zDvNKw2`O8T;U*k!r@xD`;OkU@c~0<}X{H`eX>imuQ2mJw1K|*=C)xCz{`Y#W#)|JQ zo4=vczA<+c#MFrp-CsmK1vcOo9(k?`wa za$CuxDl#_SvhHJ)ip{cPQo#NwZkgOy2nNBxbcuIvWRC9=Io=b(nya>OGYi%@e1-0kOB9*-Nx z`*^P88}xcsiYT?-b7U02a1_YbYnZSu8cg%D#GWgJ2c^m>_FM)W(B(AR$k{Unekgy< zkDNVc!w;&s=10yz$)o=LzIO-uz8vTs=zHfl%9g&*@_l(0eg6gDM|Tx^q!Wz!lkdx= zxLx$ig_d>4f#{ZfZ6FL#xbu*7)$W_{>3jC)zAuMc*1rY-m|PwQa!2*BA302)_Pr}4 z5@kjTneHE9-IK3(AQFImL$Rzs2jDc^ox|>V9KB78zKw>pJ!vQa-G}&xWnCnOs4sd6?8h65W%n4w z4dWpB6vIK1PtiTY#=#qcHzT#Z>(<~e%2Mkk9KpxPKXf^W(8}@oFa9AMbU`%TuP_t! zIgB9mK3bTTGF`Rkdxm>5%i1S_H!>?y@I0$m2Fi*QJTt?c+yH0+mbE6Jp&Ffv5kP*) zfz~s6h6s_yc4-WaX|6`}sU4vuAR^p_YUI4%%W|^&zrj>gT+8|c)C5ptM;1~Zs*`;V z)4_-u3x5Axl;`dUB7ZKVBd#XXdg7!&a0@c%Pl?Rp{|m8^MX+mytZG5f=1vw2;?20+jOYk3aFt3Rf}E&P)`Xcp$o<8K9C=*EbRqw zwC03)j$8JS;%BgwA;n@H-TGUZsC)6+z8S3^fliI6Njg-DAZjH+O%p_o(V&LvP;16; zT5}0XZgEu@YT2egKx)>ZmXCxX%lM1-s{jn$U-^BKvX~>$U~{DV0r+cvmjZSYek<_X zj^9}bGye7=4&94s$Ipk~Zv2u^uZr-a@eqwa0^%T6ZhXJt>{E8at6^XkqmBY=ILp$o zb%Wa6Ae#K7m2sr@&Q8IUF!rCH8tjRFfd%>n7G+)E`DX=~lwFP$uq1)Vz)Uf{IH}rya-sxXoh_EefIGqJr z*WkVO&$1lH-s<_cEdx9Q@o{O-kS)m=!0hXxAeA?WID^=5j_YsDCI0$$DjwHGRXs z39odrv-Nd)4+Tw{4h(=*75*dJ;HWora=2l!y}9+$Q6 zInNVOky<|#~K>B^zs)kt0m?;5BW5y5hNY?Q7m3 zvM-_WWhB2q-*aL5bcS{F%`>*J{e|W~?&Dg#yHG5C^qg-GJVZrVT>VN8)|MO#U6O?M z0*0j7GLH0Mg(CLc!3VR8M|Z21br4|K+JuQlPoA~!0QSPNz0JDuOe}XKa&cI~xMCtV z6$Txw;rAZy!5qed^bJt`DKNd~1Ef7As{F7P5|MWm`^ylyjLN^0${*h8drim=g`oVy z%Vh%Vseak=4_UrP>$h-CqsNRdZ;CDBQ1`X)p`f)De|hf9Lbxh5Yv_{(BAoy_Wwj;lE4yZw>!l#(!)1?{)mQp8q!T-)8>n=D!~P zyMq6&u5_RA^tVgq2tT+SuAD zDYBDv^10A5vEJBwWBlV2sd zhLLM2xoE{??RUvV>jZ0WCf8ADDz!m!(W=r~TCU3nO4R;_TnEXI7OZvC3e4Jl z9k~{fYYDmP$u*x`tI6dg*X`t*Nv@xfE00{iBG-7hU`?-TY;5wVt`$}F-YSnvt!im; zxjl7FjcQ$^+R#+vt#_$QMz@U3RO{;+UFzt1uQIx299|ihsiRvUyc-d-uEr3rs+yyZ z8|}?Vn1(uTSsfCtZgRW5&7R9Ma5{|J>r$3g)wj45m7mcqY5_2$8b7mFj;>!Rd=|Lt zJavuBnYL7AX-kXZY^tiUx?NR@&D+rIs!?oB1mjYyH8pM*!e;?v*|KGznVt&Q@&;F< zhvP?)sk&X?_0}PdT3_W}?sBWh;POU-Rw`yKwmOSvmy)Aw)~pJ9rS7%ZS!T5<3*1dW z2~_oRRb>xf`qM$F*dr z%bL86HENbxElR2ySwuNCc|FZuk4kJ*T9;A^ic;3>YD8ozuJPl?6Q76`VJ^wCZY8#; zo+bw5Qq&4@S(Ce=%A>Y4yQ=G!)w$dV^opcW&K?)>!n3N`1@Zvlp&ZU@tgULSL1vNO z^)9Y7l`eM!B8u!IUUgGLbCsuVDaxB7w-C3H0F?==aHEyaAaGbM> zRSoe$<77=KDl4_wD@Zm_-IBaUBiH4~(z?bf_bMs~)I@?&Dz2|<)+;gB>&1&lw=AAJ zuXOQZg`E|}SJ^c;wL-WRYUwTyYGsq!(oj{;B~L|~skRteKIDL>%I#6Bgp6SD`leQ@ zCh>s5s}fg36X>f#D^#0SxZKMUf~zDYMQhKHbXHpDR_cUWE65Eohe}pekMwF*sWq-; zkg_%8TLlwx-BK@FD#9D;&{!ImD>nNq>pW+rV$}jszqQ6_h{0`@V0nVH1ld#jZ39?6@-tZF!PohmXK}Wwv5vPu|h&&R@vMVYbC);nMGw;#nMhz z4M|_wl*!7>;!^rq=U%DI;%Z}LiWF&rBN0Mh@>(VokLU{f>=JuvWrZSSKK~VBo@Kr4 z0LscMi_1!h1@oZiShc=FRhRDXryvK zL2^@Ff=+HMi6T!`T_Z_Rbb#oYZh-8qsq$12v+!u~!^9fug(lc*GF8+plmHq-a}^}4 zOQjsC5alXzp&BX*Dk7@ha;lUO=_jJEwyH&4+JwHXp9#wHrM}EPp*5m$QY&;%Xfje0 z7T9Ht^{dn-Xe3}O=QUI1x|*qqVo@8aR;l2=w*{1I#EJ^ugg%IMo|Sbi9>u<}ybM*m zxP)J26$(V>eEZxAlqqEx-Aa=iU0p=CAiH8JTy%L21R=PCfuXm#zOI@$igsy?DLb2D zhCW$(B3^8I0*@Y3rdLs7#T8&q>)hG)h+0K8MpSy|ywc)@N?C;!O{J&^f6B`3rA0GK z;Kd!XF&cSMKMwgR0#%B^yd;j*R;_?I;vBT7=qd%NE!=I^)wH0y8drEEjmvG!U=w+0c_cbThZLqlWQH5uXlS)= z6mgVn7BPfmwAyTQ?P$`opp$vsE+eL8!b{?Uh@59v7TB#<5K=toHAx@g8X2bp5aNi% zZH1!CAt4rl&Tg%o2gFLnl_fLFoE6H<`ljmZ)w&w!sI0gtOKvnMDuzB{DFcc!Ub5N% zL&Gt8WP6laW{qp9cexO|L@C6SRG$?)=~rrXeG~Od=rj_+k%Bt-qR}lEWwt<66`)JZ zZ1B`IxC%)3&8uISs?fMXK#+?dluS42a11h~eqk1Y;?4BgvSy%3x`kp?vvfK1I;j~U zxSsSD1=>5>A4B8jkW~#LaT?(0STm`^7X-CrQehX+NMm%%W$J<|cO!B{ITaqH_>wBF za*o6PhEGCOROhbtV!VLC!!noK)mR;)OlBfU9yl>&^J0~KQ5p33HIRRokrFSX5joH) zS~A!Z-dPhTw}b<=PF_=GD0iUNtBfnonlY=sYI%z~Mun7HTwLlbuBgl)oh@6DEf`9| z9JF3=Rw%3J$D~F?$*532pp8}6azkIj6#<|^x-D}zHGm2|cjzxTBbicAkQ9#-EQ{xq zcw{?46Cu2!-_j*vBHRkWvR>7QQI*!wYlA8Ug~=649nXa<_((NO9bGN{VbCTCG|F>X z5yH((%HVPKFo)5dL~>ZBqZN;!U1hd{Gc@238H>)89Aonk5mo=R<6kC5m!j2hKjzMw zQPxbw4jSh!7NUbHfE%Tc;*1Km7m-?{<0UvTV#A;e^(uSfLd90MqK?LJP;%89T<#{N zgzN=Pa@0lvti5oMHV!kS17fJ@aV3rDHzl9ZbTtvF%!PU^#&j{J10LmTVKsFv*Q?9C z_4TkRZ~(@2m#G@_^fn=+7xCZYss{kXnyzTNuIKLw-WK-+NXx4F3H5bLCsbEYnamC) zUO>~*>n6kvs9v^wg5tDInY_4Y)@eBfL;A=t{BTE_EOcDh=IMu^Tv2r%kO>Kd0dp=yfbomL4yecnEK*Vz40)jnWQQSEE#tMF{?Mvs*eo0ELByr#tj}kSPnuXGf9CN2(&{fk1ACPDpDI^AQ(J&UW*Iy z8n351!2>=nLxQl8&RT$eZ}4Cnk1LUkXj2sGRAH5=1#UL>U_`59Z*f(*A?qoa0UITz zB4K%|Qs);J*W*Ccyc~QMtPgmNx>Egv%O2 z;h<=+!&Tp`j`P$)=zAcvGswRonuvy~W*vKz4CI<%L~pQ?Q6gM$VIo0WxG*W44HAO~ zV-$(*TUYIAh@r_MyvGvc3XnP9aDAXb}y@(msEY3sH?FiiyLXenwteGs$E%HPY4CA9}Lf`MWu*eHL@TZxGD@D z>_kIA#X`lA@`CdTcU*pJG9{YVs9Iqj>b2fj;j)B8$b#X!uEx-WbV0#*Aas)(SuP31O;)%?oTQax$>w^JhOCQOnIKhLZ2+uI z7#I~y5~NxWj1fDe+XOULVSZbCMQc{IAoI~7mHzXgqsz<^dmna!HwC=eSid(pHLiAFn+jzZZAr#q>EuBULY>?E3 zgBrhyyR?xsmegZZ%RWmZhO&Q@(vC;P@ zz>M%>X;+CKKQjNZ`O;KeeXfd!7BG*}TQjADj~blY1%n0jUmCpu3dC1J7YBfr4Wn_J zr6IRbExI;-sfAw7^F-OX3t{~*Okh!FH5-)}tv5}X40UX-YZinQeJ;7K-M3qG%B9RW~#n@KI^-z(kEi=k_wyEJs>>lK$;C;? z_SR5!Ju5;qT};AWR4lGCS4Zj!i@24^>0`)kEpg>a*t1H@6xjJNwP1Bt*p-=0P4%v- zM(wS#2`3z(ST}ct{VGJZA*>+npk(T)Yx9?}Ar7#*rfzwi0eBwSd>Swl#fD!_QfI7a zPTCwPEWJ>C^uX#`Sko~xN`w09v5FgcRhC?4FtaV0X80fmmIy%_At8muou{X{ni(go zFv@n5t*%9QO4AyIxkodX2}2v%4RY%j#y4~k-tg4^WhyoONF$F-o~wjX4AT(Af*4uJ z5Hh+IQybO;C^w42Dmct1k&n{9ct98hOZnH}rF^Z%*g&)e@QDT8EN^3YMsAtA zN-RT=h7hu)E ztT|k#FbymFPj9AJUqO8-+{6fW%Klfg8%1y`rnrnrgF}>E`4sD;cTre+R~D`o;cf@A znU)?bYZ8VlAw0p&aSc@~(GOr6A2ent)1|mYqivz#zIt)?3=LnUIzz3TUAcH(=@q4A z3reXBE75$&OU!6^mU}S%)9n&+-torNtI97^<#4$`9fetxY@J8+l`~7{jk`5d&eDQW zt6VM9Qs-JrF4NS0l-in-+*{qdT!VoWg0BFGp z0Wjk#2#l8krc|SO>9AX=B;sRa_-GznWuIGCZk-JtN*b>!2is&tzM+{Iu1(m0;bQs- z#U-UWE!`-t%uJQ=+&{U!)mZeBnJU!W0(CL!PN_ESwYbtc(~0#CnW>^iMh9~>TfBH$ z987|nIxZ|K!LqApRN)D>c$f^KF^FUqVBB%>x-QB>IGY;saHb6NckxgegLPb}ykgD^ ztXz!MF4m$e#PSc+NSb^kZc|%~Y*$>KJpLiDsK$jB60Y$vZL6rP1d9vowr~TBia!fa zCXe%xc1-)4Gq0qa3rw#aT7qGmP191t?MSOcallZkqU&C`0i7hCu^F8dEZmq9gMmR& z(kI-)62^+t&cdxmi^a``OUlr8>}}rpj(dpJGKEURNMzdN0#0o2W+Z-aP=vi(rUW`dx``r0<+hS2)7cVw|qgJXB;Hy((Yqga#NpX?3Jb^=mSp{C$=XGH{g@ur8L7& z;>LWkG$Lt_-$4=%J->-MNh1(?(yPiVtn*0`NW{4~jX2!&6Hpu{PW%qmKn%yB@9-1N zsj%>ncy*x=S9BxZK2M6)4zKl(Y~(!U1-t~l1>vB z+;vAtxg2Y_Bx1Vm2(@@rHuuw-TAXdq&WTk0A|zFW;E69&4DIXxvJ#E@8DB;i=nwb% z#%8PmB$N#j0PS^JYJ5o$hKS_#wAA=gzz84R6yvvf8RK6`&5l*6B@-eP@BcwHJ6EVZ ztSm*e(};fk>uIM`G4%bWWulMzre%IJ0H#rWKL^171MPAujdQjBvnVg3T}F%dZ~9Mz zUXn<+4)=E7^q)q9n5Ice{(RkLs{hsg(>T6|xhm2gV6Z=Y{p~kr=CWns_G``krv36v z0~rmz(SNa&FWQd$f7Z%Sle*#@Z7k7&%d7 zuxx8{6k!87n*8L5RIRqtOf_1k4x6D2l+S{hU#C2WgiJ!p4dl{v|8b<6`D;bg0 z$(Rt8)TF4SCjDbc>5~iws$gpfQ)MfnF9Y%-hjp%qrLzQcGKLs5`yI(gJ^n=(O-r3$ zY?Da!__HG7XET1I$vq-|#4smZv*cJ^^N1Jp=e2O;Uh36_IwP3w8!0U7*GFC=nN~EzxK!HE;jgm&F z)0&^qrc^jmbnfDtCyltsMj4*YlswQUF0{mHvMy?V>R)Ak;eS=JqwZpAUJfZ#5$gxE zMjSb586nxJztCzhO0PcxxS#!nA=SvX)gK&TNuvw5?CgK3{$iHZitf?SUwk944fDd$ z{bIC4`$k@WBd-^qY`xe2y1Y)f-pe5HCS#S4t{`Wh&V2DCqrH3T%#*G13X58!YNJW- zZ^qr<%n;kL3N>MS`MNFKvf@R|2gf4+ADkhU4HKG_KJJcQ-#pbYN`rAMQiU=qI~Woe zmp6~X$_+!*sXS~=)Wx5oT}JkR{{q&r_yZzYUHUy1GQvkI4e^ITGRD8sDvkd$ZBVRe zO*O7T=VlRaMQe6m_9PksMYdWDVhtT?o}u+&aRwG(ML&_PS6gdpNW$2FVQ$HlNf=tO zw94psqn4ZIPsyg`rV-0aqZ@NcnOM!30IyiK&7|viqmytJv0+Q6Vw5ey9F@)HsFUYD zV#E=@aTpUYG?c{4U9|`j_~gr8;{cz;AS9s;DW7B%5DOfCrI|(oy$vbHpLL4|oNxtN z9AKjqQ!%LLh1T)qUVmf9tnH<$m8rVDjYyx3SbDC)wi_L{qj6oReu|jepiA8Xd7zL3OL*Q(jy=7q*ot|M?;yI~V z*#OgjNfK9#oI;312kY(Y6e6Smw(e+&MQJ6L9#Nq&h-8-gB{(Q8qg03z8_~f!u7pAZ zvUU_&qGm{*nb&gn#yrfs#_7}zs3#la=JUL|9wD-UMTrNU4sGGM^w9Zx z@==4*Tp*S8NX!LWctie}!#ZehK9k3PV`ATmxm>5xiWp?EWHSYm_~ z{~Q=w^aihH!l@sXf~nZZ0Wb=fiuBI3r6u9lqAd_zjhmMz0xTulL~ zHYCGN0~sIzYl*_tN030$_at$VgNg{XXB1Xn8FG-#BF`uqrg63-b)`{Ij|`Cn&ZtOO zTWvV@LgRVNpoioDKL!aHt2%+{5i(B)j#0Z}Z7nB@t05QfXc-tgJ~~-i#{BnZq}1QE z;)&V*$BmV~95;?FC3YRme4I&KHkXd`&}P}nO6JEc2S{*Q8b+W-V6;iYqZL|0MbQAO ziP<#W!{a(PbK6jn`t*TgDaw-e|>*9a&KY(NFh?V+x}2%r_^A;9dc-kt&hp zheSLH9)o&_^Z8OEhH|om5=gyltUE*%ET0F_QFMh-IPzg5np72FEdMyYaB4iOrGe$} zjF+)JW96bAOOFJFHcALmQ^mk0lb9%xeE+N(?amNvAE4JpL zz6tqA(N8zB^<=s%lcUR_e?$WQQvy(zf8c|$w5fG|BMu>}G?V;4JD<-MZC#($Rw(M? z1=7VJUPyF>$CCZ9XGg})&c?i{P-)gPHc|BTzGDhO+Nxvb7oFlwu=bu6b!;a|lv7`sYHvM9ow{?AI9QxB~b z?fM-B4TNqIQ0NwsW*oMtR4v6NnYb4Zw}rZudK|8=XxA?wM5)2Woz)(trWH3mDUCQp zU%8jO7v~xeXJ#%z<__3TPEaS@{!dHvpb^+s+6F9e6+*2tU z2%k2tACAq3kkcJX(wmc%w@4QAQNcJal&*=yy^_@uUj-cri-RY%`zQG@QTDqOhosX< zmUQW)yquCxsT7wX7<`pd9P}%1>%vtd0+TUZ9mQwNDk{ozoRWbfK`ZP<^k=rBUaF{B zih7BnPEgd6GMl2}>MnI5{jrwftHR-=Klm(Arq58+>558!3-H2kW?7kYF~hNoVzGnc zms0XKBlZGox%4kBtAy*yN_)0=<%rir@tUNl3viDZ!swNwv)Xw7jLwpoSu=2Qvw|t9 zrQT)WW(AHZEp_1v!x~TqCO6{FIYpeguHckscb&4Lu6iPvpEE_No|23A#5|?B-rEA_ z(uT=72wB=N1+Qk8M_IbGTB&NrY0?wr%hgz`EO#}vC~W&if(>vtx>^*l-Q^ay>nQcB z8gX}tcRc@>#jBLz!aUqdArDr^k+is+qaN4QU{wrVUyC_4P%LiylEVnPSPSQEN5ne? zFyOU%&0>I40~69#u=L z(P*@MX~{4u@R_eOw#m2B zM&H_p7OH{ctp$l_3I1B)pM)RX=4YaJMG3!)B)q-ErkLTLJ-0|n#(PfLmHbV&4pF?4 zvU&Vn1~+bjrt{auH!dThZ@Q$D(#5fa>|Z&%nBP_Kqxe-4Z&gbJ!&SqN9#=yR!!37L zGv4c(R`EC8TtM*}n!Nno1UKQqL5$)XR~FDWT?RmSar-p;dzRPn8(ydNP#UNEBR)mP zA(}P+5pWO0FBd<0=uI@^F}=9ZY%(b(QCCfVoCdnyDNj`Kf;w{D{@r#utWr;GN za0y_RC`s*0l;pH3#k{FXNiM90Up2x|b<&n2&E<+otw%oU74wmL~y$Z;rm6T`4aN*iehfV-S(UQs0?Vw`_LZ| z_aI zr0m0r`H{nlDJ=xt-HJ*5P#IAEA!z*w@E-vO-s;Do?_*^^^T$e3;U|h|$rs?mm&$L`No|h>pBALB|-l`H4%Y2QY8F$NRZGIO;2)U{)n!__+{TF@^LD< zPQ{Pjbs`<2ho5Nt()(2D9Fggu>5C^ion-2Ld`X0d_^L|!Atc2U10R`hinkWOUKy`E zVLYlnzU1$5EfV$UY4~Js5cwRQFkURazad__U&OlwZhm6ujI6hb_(b$m{aYy0<4c4o z!BeD1?(re!;=<7&GUu65&+TFs3MZEGv@ua`j?p8|p{8PYFIXsHr z1_`hBGoKXiBmA0wE9jcp&v=RWLv)i|YW@$A-e++06H^~j;O$Eycqe{^kMtj&`o*;0 z^$-43bau*g@{lG!(R500jn0D-p7_SkN#Kdjkc2-^g2%KA=}+lz#ZOD$+7I|Q0Mjee zKUKd?>C+HFOTRzx(*eItrhn!s=pla81O6TfpHMExk(&=9-Xk(zZz4QV@{jPnfp{zb zQ`Cdwrx9-$233XsCE}e9oleACDC61Wz$~Ubqv#~QuLW%LV*($BQsPNaZzx}n0=`Yc zKa>bQ3J=Bm2=RJlydQ!${6yo4ibwQ~f^O6NgrM(S87(GX(x32D0)B~v&r66WQjei{ zw6! z;lFbVc;d@p{K_SKdP06i=7Zvm0IXxDpzFOvc%t}8@hS;NyNEY6VZ2y;wi<=2jYE&c)kBXyj+rxyF~t;q`FN{Onr{cUp?Y&*el}wfp|pEDdG(iPzmh{ z<2prp|0UsK(~E77m4JOj#=9s{Jn661PYs?@<0qPK>8;hzO)~xdz*GHfJ`H#pPnAn} z(#rTb2|YHzXG{40=n*uYN|W$26QwW5^OWBQ4e8qw!At*Bm1myBo7j#JS)Pf~Bf3bh zb;$I_pMtJjggXuJmnVW}b5+>BKzP>Tr z(x2!f`K7_vCW4RRBjF+WRW9))97h=HcMaf|NcdCP4T-KF8sJO%Nf*UCfOsnnP&Y?Dl9U!rtmeMyuK<%8r=`T@bWdlIG-Sx%=) zuU4iv3U!B{=zbtdKcW0o;(fteYpZbL^na)V? zh@TifM%q~@9`StJ8-iX;6^kb(UL-#g(LsD>efdq1-mHY>Bg&KDo%q$hCE%YE*kkLN z^e6b6@Jo4H!1t%#Zv}ivrr#gkhL5U;6z@UAJ0#;-;f^0Kwm!T8*j~xsUsEyB6N4`{-Y{za?~8I7k+A-uvK#C? zM5hz58$J;6<`OP?V(>-Aqk6Cw@g9-!PGzSi_(uW1=``RE1HQSR@RW~XAhBG+|1u%J zBij+t886UB;M<_ktnM=vRr~FHnNH=jevr(j0lLb4SN*CVKpeq$fBT# z|M#tWzn+?tp2^Hyp8xawem_q?ea?BSzW1xI)>Egd&N)yTl!Hl!+(|JbA!qcj32{cf2Lc!;mixMKU0+a0fUCq z-;T}-G|4VdIstDR=wlHPY=o)n2rqZT>R&X zH{CxbY{^{k}+PQ5AdDinj=|4!~8?*~@ zr~c~#`Qhk)4)Q(HzmN0`rJwx2v|)ExwHtWKg^u z#o8~%oA)i<6MQ-idjBYOl;?d*)z)5qN4XDGK0d;xZv^t6fqb9r*?SoJ&kf`c9ESWI zBak1go-@5!&)3P$!RHqdSkOOU`Ypk~p!ArEbGOCwNzRmCgMU%-$I5-M^rl_6;NK(p z8wZn*)fe(!$A4~>&)31neFpaX$eWCMQxvZq=WdI~r%ZUCf$aKie0V9*Hi%d3KAYiP z0A6BS&s#Hs@E(HfnG-#4@ayKl{9<^l=e^>MBwaoM-rPw(yw^rxXAZn*d(YdO=5X6c zdQS3E8_Wx`{IHz%?&$SxtiEnc&u!8(=>3iC7)%e-llJsT&o3pvVf=W9+dr=~m_CbN z?M^;^8(Wvg@aN;-CHWHu4S!(&X=C9Rq>uKvEuLR;ra!|sd0XDNLHq;x|H8T1yNle1 zlD`fzdD%0Z{`qr|PfI>A4E?;`H%NZZjmU2--R2HckENT*6T5AQbY{Al{5BHbSh^i4 zdxn!QOt&eLXSs6Q5cV+LO#j4T$g`hh`iCRWe$tMzXE^fTg8cXq$g}-?SM_!{`rn8A zddUwbzdnL?&*V3j{u?V--3oVO^En&SvsQYx8%BQ3hs>EHkZ1W^CHapHL;rOn(9iP7 z@@e|79!!6k>+&SzTc7M|ACxz+ePnp^!L#!ED6e7M;`L$dz;T(4rT;a%_;!6``N;Cc z^j|CaLB|THuYWnnCnTR5X1tkR*FpBg-F-NNj&H~AFUWftygu>rz;4?hod=dD zrW?mzkKDtDXSXvOlqack`49OWCBL`aH;~`RytE6KT#(^e)I9S_#HE7xgXfC zG`)k36Xy5y@&4bogC|PQjE%&@r5|KgNuIqgx5e{G&KtA8MtTMWi; zjp@yL+b#Wn9aMf`dD@u0>AieN&<>mnUe9FDTQF#N8{Q{!+;Y8mgOB438X*L4a%9^nXW9CCrWRuUoq!kEiVG(~&lo<;j`x;Pw1W$rHOR9*&%uUjG%y6T2-gUuJ&q7Vx?h z&fxWb!*qTfya&YFSUsdYyq>%(`9bd!%ZxWH0k3L5pKc@JoeSO+@v=&e4a!@Y>*c-R zrN#U2L3so7m+|Ac+->6hb_6`GCuo@B<2RD=qBii>i8qq|Xoc+1_DYn*pW{@;cn&+AQ(7bv!@7$8TqpQMYYS4+h4McClWs z7jHk$+OS_4v;*uXn*5;Swq?pQ>vi>k-af|7Z5!A(upJ&O{TW|ge;TCk-@Udnb`R7? z-V*%J6mQUUjoH63JJw2H+c51IOds=u@w!d=rVpxb6ZrH$2e?l1TMQ;I_l<>Hke)&B z3uFDKqU1N$Z)3ce=UtLNd@wtMa&{eL%$||tFU#`-3TMTj;S4MngQd%1;4?qgOW)ZR z(GAM&!23(acM1MIhx_vW3eMdY=gFD!yfzk(@bW)Fo9ec>yu<$a{aYYV^D!?!`145v z`=bo!b^MR~xaTc!fnc{mIQ`{|*Y6W0|D!?W$HPbEk?n)z@wyMc#r2zenIq^?_pkBR z791bYu}8;sI+mdg=`?>UukUyr8+1Hb$DEG;t>c+Go~Prtbi7K(qK-e-@m?Jt(Q%!Q zFY5TZj(^cHn&9o(T*pZ|?yln$9jEH}2_5I?SgYfI=-8rThmNas{F096>i9o87IeH; z$6Iu~OUDOvd|b!pbbM9EJ{|w2<5;{Hg!#okw<{AKM=Hk^?u|lGlz<;)Cam%Pd+2zC zj&pR(Khv)Z;-#(TE1ox7$N4%g*6~CgKci!Vj!7L?=$O%QwT@rV@iZOJ)bTtWFVgYb zI$o~h)jHm+<6XEoGJbPP77si*7%#q{zs-kC6Sn*9j|toO`O(5Q{ys~XZ4$Rn3Ge1% zR4ZH>x01UZPL%(FayUtt?E<%}geQBr!TwSC+d8W!gsUa_Obo{rOxxba-})IJ7qLzbe;+COl<@w-i-m36?IdAa=M+!xc>2ce+gSR1QTjhB;_1S+9%36j*vR~~@wpv^ z6OxaIzlZ$yl>c7BdkOC&yti zom(Drul-;=w=w@>cl&{1OA^UtkD z@v4%$cg48Y>HRY1#^X0X>iITacd77U61ptre^t!i!tI*s^;C+te%e60rW`pCU-QX< zxE2eN!+5NpH4tAjcOY)S%~vS@?xKNs%JBp7x|0Utbp1g5E+#Gp=!@an<=)@omu?#< zzhinJuFVa^M}B@FPJGeh=T7%W(|b=0-z2PLMLrJH^E=_O5_nJ;Lj!JmH0J+DVGHke zVavxiV_0hbb@*2b{3`|il>+}tff1&_HhV?K&1v}P^z@F$&1l$eW`5K0=^fMK@zXv( z9;f+9{dlYKi>Ghwm#)f>8IRpW$U*_f?6;}GH%$Gj%NKWcB`1j96`(KwiXaNo9dfd@v`qs)Ws-gPGku6?!D!3 z$uv0F-k4p1PbnqovfR1o1eTJn$nM-FH@2sY>wRCB0Zcb*igarq4saAq(2%55ZF?;iJ;v#W#uC?9Sd>c`6Rcnr3 z-2_XU+frHQ_ke@Tk~yce$05EMouca;(z~F6dp+*VHPd&!LwG?p5<1HC2|1A(!IGAj2UhdMPXs{jm z8D(xWm|jiTE!dt~>ElVl6_a%amgB|t;Pwi;Bw0^zN)~UVr&k}5UJ6e9E^#*7 z+}N>{Fh7Pchg@)q&NS#v>@w(0Tq{^AZ3Q{B`Q*Pwu%p?_7l})GO0aTiDMqTWmG#k9 z?rR^>4HeOj_0gFXi<8mK6*Hp?D;Gu=kD1XL{b|gc=*+RTndoQZk4Z*1ZgxU+^XBuS z2REM`y|?*-=*caQ>xeGiYJPNgRbBLM6+aIe-Lu`I=ug|tiq`EmJ-TG~xsB1~d##Gr z?6<_d+CI8(f8GP3e+!05kV2YwgTy&TGr8s zLixe|?3s;;x-pZ+U-oxj=aRq5!(3G>?dz0&9p zThGC#0-^`EJu=EqJRX_#m5FuHc@y!H_-iH}IyJgs;?%>UpG}%x z&gQoZqF-$lZBjBR8(lEwxQvEas;>ly8UX0#U;_duMDOfzGJr}({wv^U)Ag%i#u;skykxgbsFK@CqDvmoL`o*~E z(W~R?qPurKCYf8vtbb!?pR#A{G9#60TasFV!d}>g@4m-*v~HJ0>FD`gcv?6R@yj7? zGtqB1;oI&nIB-l<#E8)tW+&2Lp66`JwrpNUx-%D@wo9rb+lf%t?h09qu2eE*qf0kM z+w*(^S=rL!Gb?&v(>i=Q;NeZ@HfEzU$Ia?Q4ZUjIOkXg*KMo}mw~AwtozCXBH=Wo64Mu4&vI&K*W+DvkQBah`e^QZ}CX%@<(CU zi_wirHlO#7YwTE-bRWZruG$4zi(#C~AY)$`*O=*O#V0v#-x;16c;XW9_PCY2%KUxj zsIqlgN2%bQJ-#!OjIM*0?pzdYg3|4(%w6N_lF{ELEQqeydM1*H$;t}#v#p(VPUI2R zmM=g#K0OdUIX>m1e$|0aNp#v~zLYFzOh>P%#7E~(P`Gsc-LBE&dqtJ5=6!9my6B9} z5k*W$SGo!oUA`HLPV~2J$3}(IDx$Gb-lm zTGVtht#jG%<_>6+c3`dfUV@HGR;QEEIeVei$)Z+F&qgorJ2vXZtzA@!99p}%RmKN* zjVfI{v(eR?XQS&k9~}<#@-8Y) zm=XPR*XhxZ_oz!ZHYcM$?lG%%8O(ZXkNK_#@!lSbyu&$(6aC3I5})o&q1C%6ftXnv z7X5fj*S+}X9#N%Lj4h)_wuHS1b8OVbmynNbjNaKY*`CU*c9D8&o9wda{N3YbF7%Owrxj z`e0w#IurdB%6hMJ!CvoF-stu>fnyE%WmO9J>Z&?jF|My-x;%?W7Joqb{LS3=xP9>! zr{RatFs3!?t-{BDlr^{FQ#{GGQf7W1*L73{74A2ynxa2Xf|A=9bTT@3n;G@d6?@m# zN3ZXbi>}x=8e=JviN3eZvgpQb*gK`N=-j;#*V{>JPpTDvbelQohevns>aJ+fA9tM< zUAY_5;>WbD?INP$8R74*1$*JC^{x_#ksGH~_$?nGt7?TAwTNhkdj_l2h`D(cXD<3m7qB8b8> z&I|i!{46$?f1P+_^pA-P_@$=PCmr7yoi)i_j3=S9^PNfP>|8kseV^~cgzj}@=6}U~ z5qn%eqVp%UMK{4O|7)k!@1Ny)_jBAAe#3pQ+vk4^&KPtvCe4g~;u=>*?#pP;gI>cc zlMt7?5rrb8q4x!F#^RD1UAmpScpZ~Tb*7^$wsT)e^5EL-W_Pss(;^CZ;YAXAUgf^e z?R)!p-t}khi*It@{WkYKXIEn1_cinrD-WOMx<~7`YdYDb%HL5Jd%EB=2A@0m%J!(8 zr|pEhx=!E0ST_X`!L|Ln+arsjZ|x9vk$QHB#)0$7_I13iSdePLMg4>A=d&m4!I~YW zw;?}RETgk`P&Mk>L2bhS?64@hV~41+dTR9M_D3S=-`yTIUO-Fp7joa__64^ux_$Te z=w7&%@sPTrsr%s$h%s;TGi=&yaz?RYCe{yqvE)0S##Y(w!uM*_|Ek9MSR2kXPPaf!*_-!GHJ z<5n)6pGFwH@WB4(^!DUz^oI9-2j2My=v{RCo?k#{%wqOvF4>92;^v*H##P849T1IU zfZ3>br@H9Xoq|5~Svy-NG8xP7e!utHsE>UF*OWggtVE6bgFcSVS?+;Fu+xK9P%Glxi zxo_>l`v4gB9)yc$VHms;DT;y{os0W~_V&i;JY;@m>N9+LmkWfJIANmqi!ujuMoK{<$ZT zfGWl`p(%=P*c}D)mfg{Z{278SUd2E&?o(9v>|PhGLxZ;@#XNa>_c@tVJI|im9mZYb zjK@CO#9gPpvIm=(bN9dpt#CYVk9pZ>?H&t~Xh))3_CSE&b5XjM`vUgvx)EI?@f#q~ z?fiP(KL346v_(JPBir2C8ohwdSbBM5^wb^;am{)b!bJ!m1>L^uI-VEZzQ^smu6HhO z-{bauZr^o-b9eh*w=djCmu|Q3b^AimxnPeTT8k^Ik0<(XG}k2%><^rp+aNM_UPttP zqK^HRZ|pfM*_K3q^4ohZ;1J8L_)Jqva#eKBp01DlAX6O_Y^?ka_5DifWJvcsIde=k<Xh}6 zRJsgC@9)*w)PFC{QZgIERcqO$d2CFD;Y*31a6v!CefQH&*E;Chd{*?{-Y(I;I{Elo z_ocV!rpY?_(d2m@tvQuF-t#>*d1fklcJh*F%|2*a`7yfa_I>KwTG8phd!Om(y`xay zw+{+&Djl6MnHA*x$%s1wLNwgI`&WzrqxSvDmTs3K-Fo2;BY*7-d(LDYEy?5|)Abwr zc4Lq7k#5ATQIS`=NlPcqZq+QCtlUdSEiZZfXk z$KRV=k4oM1TZ$KY9m(%saOW?Y9Z&8vlf!Yprtr)3%D>8e@ps(!tfv^S?|<8eSDLTD z)WU1@>2>?=-;b%Fapy6buhYHjk8b}b@-opa`{Fx}F7Kb8g2EO3bYIup+=+sa!eHCu z`!;5iGtuI#V-mbUW}n;l^pWq&9~OtBel}qY-~&i?|Jmt(6aJfO$nwVhmU0y4*8MQ5 z;PUM!`?a8d^wa&a(a-l=nT>wGAB+Y8Cc1r}+ZW%0iZQtiMPJ@e<9p{!u}|`S1NV|$ zZ_^5M`KJke8D9B!sIPG0Seoqi#fva$8rGj1r@(&Z;H{7^d}C8c7SG3fOe*nV_2{7~ z8rpdrp1p8J%q|~?{R3{_gFWt$^nFi1kaO1l7)<>7{;mh8L9d(l9~-TwD6Ss%-OuRy z{oU6+r~8k4Mz=$z&nbP^?ekYKm@~1D#;`@tMo;gbjh@>-dIjxt!Fl%HM3v3a>-(>a z-UPk-R%e;p_qhE!x9@fPm$8Qdyy^SS0j;-PB{QdI%_sPgz^ zbM(Xk{(j!O!UZ16&8^OSr;6={(oDeXrZU?Dp&3K7R+* zDsIEz*dn=$hUs0W|sjkH_-B44gsO|y3I5tt8C~Q_;fR%llRaGSt33%65RaG|> zE1O}7*NUC%i>KeK#@|C@nwcQnong+Ueu|S2lRp`MH%Wyf@j~oEO#M}OOn`os*ipaXi8v4S zeJX|lo&K$Pf{h32H~cl6@4IyrCF=1(MftbzL|Z&Pz6rk;^Te?LTrNElcun2l7Kqeii1w=y!(r zhUrFrf+yH`AV0+9S7UaIe&>sCm~P~shCerA@hX}+i>_* zSg=jmCE^<%F276sWfs1$@x%C*i+``=PZi(raQW4k6r}7~;u{_=KQI2p;u{_=zeoHl z#W!sHF4)G6nDGxW^REF@m-M?ue8Y5`j6arJx{U|&4c`NKUY}})d42jN3ef85Nz5Ho%WEO2&y(r4KC37!P}5R+enDMN~U zPJF}0x9<@WGkpx70{MN>H|WNQH2uCL+$(&(aKjVc|2x8Y;i7Os_%7oMKWg$A+ot|! zg}a4c7fxW*oBr<#*9dQo>mu#T3nzqog+C&kKu3Z6ql9aO=L$Cn|GRKr_+;P&c($#I z;V)C3{hJ2gzxlfG6yZyRtA(!?K2rE*;Tqw)h35)CBs^dE8R1%C#%ZYb_;tvK<@GPX z<;rUw9Z%}2#(fOiW5Y)Smn*NmN)U2bUP3&SJ*%NFwC8l-a`rSF?d`b}{gK}=fR)$7(NcToIO3xntppi%=(y~?)|&)^9* z9>_P`19{e$hGCZ9=O7>E&&$B&@+UpZhqWtikC{J)_W@qxEb%+qL;IXzI?%olGk)pW z-s!WZPk7k;IiA1F_`=42i#A{*X80i~tkpo1GR`5`7hE&f#T4G))}7r#b)!^7owiN8pE!^RKeTQ2^+ z;x~$K*!V8uLHt9^`1j89X|vk+!o%ht>-lFHU)cB?v%mUNo`0eEhD-cP=3amP)draM z=NEXt%f&Zr{2IsZ=ZBd5Zt-st->~tEF@A{2PcQVk?-k#0iO&;kJS@bn7+~@fNFX{r zDZXL4vHU0S=SEC^f&d#a`8DFdB)(z#yZXx$Y&?)(6JYZ5SVT>yKZ|deZsb=7^5ln@ z{NiHI|A+X7jqj904>9>6cKkZ;v;|&x!1kjkZ2U02$qzC44NE*fA->_^@~e*X{AuDF z9xlII{CVOVHhuw7=0;5W3k2ARo&CrA^Us+5!p2ATy3P0@Cch~8<>DL80k0942h$hk zAMFV-_4S_MWp9u^!^Z!MbP|(q_;$#<>;H1!U%tmM=C~>Qpzw0xr-a*tpBGLGlQY!y zay{f*WD5^(0GGR7_MYhDvoFS3S-uQc1D8vmFnt-n5Ho$M|K00bCVhr!FY8MvUyh#_ zf2H__hs*B~|I6YVHhu$a;6}{w8wjuwJNy5`pI>P93mZQy59EiK{DzY}zaYM0$e@uMC!{rw~ z=fnSv_=b&Ni~C@1#0#+tG41bb_I|Hf_`=42nJ3tIAV0)I)u+EeUs#_a+9@C$)2AO->~s}V*C)3-y{D1;u|)8 zZHymcXa5Qx{vl?+u<`RTeu&90Nd74C4I95Y#t*TxU;Jat{#f|w7(c}1*R*;27m07! z!mo+(Lri{N{QnT&u<=8C7s4^bla?dhGs<=WGt!hcuc8{Vv{eEa^3m^~pL%AQ%! z7uvH3xSTzCWH94?HvHM18omg)-1TN{%$^VrWzXZ#7uxeIaA?n@ZP2z#HxG#zJ}`!- z#qg{cu8rZ(#&BBLPo`%ecB?I)k*D{+cX&pYAI^fY`QaJlrX4#s~LLO#UQ zSDW?v{waNi;pO_12^_f*lb;~KMofNM{0Vq*5bZHc|H=4QARIZS-R#y=nyzTxSR=ly$L_umVIyM}o`egfpf z{B8m+m)~8o@7wTa`WpT|aJl?0#Ow_*<6FJj$M;p~Gi>qQlqcADV0wpmsPg*`^o8+x zAGln6YCi9EA3D*;$M8|W<>J#f)|peXC&Vs3dLL3+`s_VX79TVNZnOA=n0$LL(|?&g z(l=bby^rZk@eLb45eq-W3_q>#E)d`FaQR*07sNL_Tz*mf>%=!~{Cv#*5WDn;17&X) zzgpP%Y4~v?UWi?Y$uH!+-_ON2Z2Vf1u^B(aqUM<9fnpoG9BW ze8n)YCt1k1C@dbn09>y9tyTPf1pmnh$ngEZNXpV?_9tTfhY&OV=`)n1SO-XbhK>K2 zG!irYL)=0~Z44%~e;eov@eaUc<8!7De}TfU75;bNa`CBEm}XCi8K1&gUf?#_!$4M}V08 z5R+dx&-1qv->~t+`a^z*UHBJx{yrAIu<^t6B0t3BCoc5-L&Z02{II-{A7b*W#h)&| z;oQ7we!+ulx4O5=+%j3_DnEX5e zHe&J%m-+Me#WzfU@-N4q8!`EYH`@W%r!DdQiO2lMZ1uj>8!_V-V#crLDzEQG=`(Enbc`Qj@{8i%W%dXgKMb#I_*eVzAG7d< zhs*Dg{0rh69xlJ(8Xx{!;u{_=zfb%zJNfcqc)0xh_k8#h#Wy@$e$};}zqj~?hs!UB zf0+1&jc?zxCuaVIc&PIH3Fr&U^BmxE+BK0gc_zb_X55HtM5Ek67$#W!sH?ifGBu1#W!sHFuxgoh#7uC{F}r#JY0T{`1go!*!Ty=;&1qI$g@A%tN!Ry z!Y>Q=5@UR&fY&-v*Bii=c2xO(3~!F-#zOyzF}!OGPX^|A%{3aI`KWMFc$)BS!ZpI( z!yL~!7V<4LRNHaDydFFhTR#!q@5>LLn`8Mg{4L-$M#hm|lZknv1M@S)%+KiO-su_B zCv5y0h;Sn&zlH!CG5Ix;=W}^nSaGZ9_Y7?64W%a4Y2Z-2~+gFP@~|e+oAUpDUafzLXgCw^#M? zYQuPM6!}Hr^}=*(;Z9p6jx7do{4wN1d=GHB`dWP4+x|EBvwRvJhvzoe1o{{ha*{COc1v3ee57?-}~58*uMAi5n=n@#}UHz zy^o`X?Ry``7{AGvr^UkdeUFn&Uf=gf3fuQRQYN4C{8NSP`yOWq+xI=XfQQP@i{T&U z-@`Hd6fpDi#@O|t`Uzj&_T0ngr{O8UvzRBYyEe=mw}c)0v(@n09;u<^t4!t@U@)2~7Nzld+x_!tIp8!`DI9;!b5 z6Z*pTaok?z>yv%ovJU>NPllHPm#a^>tPQZo@MVxs$d8AcWBA?}elmuC7sD`R$oBtj z$cOR!0JvOxQBeBM-`mH}@Dkv1@k`KnYz&|2oglzQ%>3$>zAouAO#jLFC-CP+T#nx> z{>9=OHhvAs*ol}rLri|(Z+v_% z72mM&6S43^On%k#o_~$_hK(QE%kV=?evSA)65p`#)3NYFOny=PpNntU__Z;9h{=zB z>+OF+e8a{M(~I_pnEZ6F=f5JpVdMA2!VfX|H7|JnpDq5ve+OP8E)S+JFE?V^6JqM? ze!4k80sIV)6|yfqcSymHdaQZ%N3v z1oCO%a`i2G(c5#k>@oZc;57l?>`Tba>u4zfXl@vyuLHNLp+o{x5w3gpA|UJYC>z4Nl?KG|dV5#Vz1OULXBG2_=K zedDM2^fGMm3+0(UAtt}!RiFRcif=dpT+W`q#_S34Q0en;&=;o9T;Ou))9^cQ&;OV` z!rvLho|>3FA!hsv;y){WhF=~;-=|~xLOfLb_Sk=5{PqK8{ED&hm1w<>Ul#t8nMuN* z2QHW1UyIpe_!h_~eZMb;+LH4)FFF{s?e6`&_^ZpXDpWO#iOe zyweKPCrr`F_&4wb8xQ1%nEbxqd%sh~H%xi*Yw_o1{1B60^9S$uRq+iQzuU3<`5`7h zdfoe7CB9+fCt`fVcR-%w#Sy+DKw18W%Aa3AKFpuTfy?DjLiX%|i7l2N!&89E1&og!}NFgLt$*h1L;->~uf9J`+%V)COudB3lUZ`k-JX8IJQ z?|0H?*!VRueu&BM75@$K4I959#t$+1HShTNd?3DI<0p86jR)EvV)7gQ;{7)LDB>Gn z$}|4e_;VvBKg8sBiNB5bhK-*m8JqF*4tY#|6*_qI+f#hQ#{aKCp5cdhsPb?K^o8Z& zKWVAKL$2;BxkN%lZ@my2IQ;r|f+ zw8!w>z~%C%hQ?tt`)VBWnDJ|nzQ0SKVahXpRe?O?7h>|$;#XFCdkh=DCdLmj`9<-! z6yLD%8)EzrlV9~WAD3;#H*EYBF@A`LDsQ_$Uzi{J0y95uirp{e6@I6}H+&j!x%}XJ z>bTK9re}y5pTZ`7{`M~EGi>px;t4h$$PY33MLgh4zX!xOOgH9dcWk^S#N?+p^ZX~o zH*EZBo?zpF;fI*~!sed;yxA{Id4^w$KR4rtnEXD;zb3w6<99oDKR?9e7q{@?za_q5 z<9{K>4{=x?J^+6LNcO#mtq$?HVS*2P7h(H8z@EbPzW@D&?fw1Jgzf$3vxIw(_4;a! zpY`}8VSE06nQ-+Ny?<8Np7;KuaIO5$5l#zVB-|x@xo}aqC|sTQ`tK4h2tO>`C;Xgn zbeflcP1v3nep9$c{{Ijz2yZo2>H8(m-%;3}x7}OVo}WEf*q(zx47y5zas3@uR{v-}8+5 zYd+#dVH;n4TiC_}{~>Jc!MH zTiDhsEinEpukSdMpX>4Ggl)aja$#Gqlohu1O8+fv>y^GDZ0nW2W_+zzx>(rOD}C4G zwO;8uVOy{CLzCBfrMrY}z0xDXwqEHOVvMKSdb`(zZN1&!gl)aumWO$H8-Lw_csv@H z9-kh&6K~o7eA!2YZGG>-!nVHmW5ipbeSX~YKP7DM z{ir($+xuGf5w`cW94u_l-ybDx&)?4!w)Nigg>Aj}5@B2KT`z3wy<3HCy=lg<)|dXL zu&p=!vapReo+oVm<8J};+fufk?{Z-q-~EAb^tx|P9}u?j(iennz1*87|D>0%I0E`{ z?SA01KK-{4?iQX%jPUcizV9t;>)$>i-0+mwccgHQ@C@S%&lgSzA1@pUf6n+H^ZHH^ zPT%VBX~OpW$Jd3suf4%(wP5#x}dH-XD?Rk~sh3$Ei7L&iv%bzM- zD}0u)J@2zt*uKwl88PgQKIilQTKU`aS+@$?^J701PTbvVa z@n3}Pdu!w1?#lP4y#IE@xITS0X_kZ6Y zZ0{rgnXtWId>t{$)4N)4`wB7gvs=&WyiJV$MDJPtdK-P*$Jf>uR0-R7S3=mz5F(x@abva!`ofh z)?XYX+;F^?|Cq_2=om!4pFspsz`Z0i~J z6|ViR_di_Np1+zQZ0{d9PPpnlFW)L`<85CMw)yO@2;2Pm*NIVoURM3N)ck+t^?hI1 z){Ff_I8u3eK-k^~`76VZd;Y7!Ha`Cs^Iz=!$Nrm7pBfB6uszvU*xpaDr*OmN-v3Zx z`+m$Pg$v5R*~ZuPeW9?euRcMz>S?d9LD<&Yo-Az7H+2eEOa8xw6SDWK#&7oezA4-# z`OAfi!q*Ag`rIE1H^~0Gg=;1MfXUDG`kxlI@4Nh7xJUAD3ETSJe-I;o`;@<19_`cH z-tRa`xHjwc?=5WaE36i__b(o8@}KeY^M!5w<%!1EdXc5Vk@D~J#IR?*>^Z~a6~FU^ z?S1awk$kV@zekMr{av;1w+pWqeo(ki_&MQ7*Y`Jw5q`Jy{Z;q@;eQgNAa*N1#@Be9 z0Egvsl5o}YN-yEwq{jyd+xxdaA)HTp|9QgpKB?n`?R^%F!Zi#ggw)a2XA#CqcdRVyo0x$opu)Xi+HDP<7)8EbiGB3Z$be~@K zzMF}{T?&66VS9hgG+}$+!6%84*3q;6dVQ???fn*?6}I<7v4mS9*KS5w`a^ zTq11mr?_6&-nVgwu)V+GVe`M*>-!Bc%HIPjU$4pE*5~vI+xOHy5Vq${t7iE0vG0NH zEo|TSIz-sMe=|$izGt&U*uEFkVp!#+lNjkYUj5@Q%HQ6%eTLx`K0aR;P6%HlZ12au zQrO;Cex0y=FZn0JwadM}`;3orQGslH%;Z0<^b@x4Rs2ra-WUIlu)UwWa;8r&`<}`K zVS8WcuEO>_=l;U>e)6ftmwg`>w)c}BD{SA>{j9Lfudfic`SQ;T+xmyEnEx9-eixd5 zpU0O8cfaoOwZaMEo6Y}E-v55#2KhfKZ0k*aEo|!#UKO_W1bxCbKmUQSt(Vw*mQPPx zf3dx=t%uo5*yf)P5VrZ{X~H%?{z+k5zctUWt`El(qdY#T`^^^Nb;75Z{KG!}pBJ|0 z#ZMQu=as)IY|jrDgzftw*At_D_Nac|X7Yda`tKF)5`LH%_9fKbJT2TK`<^F;zJ#tH ze;~&AV6UG4f14Nu-JV|huN9(q_`4iUEZi+@bGro;Qs z6t?%D&lk4$!7nlSHZNZPs|0-DO`Paz5 zNB%d7Z|~pzk+97t-YIPJoA(MQ)PH?gI4%5)@im|HqOi?Jy)JC?jqeEC{9gs`yO=*V zAGW1%4f2%fy)7_~JayZ?F??_ge>{edjp5J4a4LpBAH!dc;qznovKYQDhJO^pcgOI3 zG5kmjKNZ8z#_&rq{QDUGa}572hAaGiTq%9W$MA$0-Y$lBjp4~Ld_W9Ojp2{Q@QfHf zHij3+@JTV;9K)?KoQdI8G5p0CJ~M{9Vt8!~7h?FD82&*F|2T$!7Q?@Y;U{AF<#A}c z@P8Hm-{JoU{9niakNE!y|2OdO!~f6tzlr}__`i++JNW+v|G(n@F8=S~|2O>qj{p1k z{{#OI@c$?N(Rfrq{44Pvga26kH^F~X{Kw%x9{ut?=hO55Ff{h5t7A zZ;Ss#{9l63_4vPr|L^gi1UGCo|0l*J5gmM7HkrvD+>uHxYdm;XGP@#|N*|m_H??*g z+}wQlw2w|b=#WDXI`rUdrupEumcyqVd~np51tXU|sCmR(W2U0|#mUB&=}u8=s$=cB!_ugO*42GnXfuSCmZ2j@XuLI+dcLktSrnCD~l2sdFi93CutS zj3R}}Lh3F|o;sto1Gzc!1oGk5gMM5`CYepOtxUE=gePQLbIIAO(wTm=q%pHBnTzV@ zWRgh>5B#O=xzU+UqAMG1spiI9V^bTo&S}q$IBiQt)Xz#TZR~8zNl)|AWl6+f6xJCN z=FMEXY+gssrNl_{+_W@D^-GeOcBEWmb1sDxt!r&hw<&d@-<8Q^iv`o1>S#%hroxFx zqf;yn(_30#cPcaT6fKz`O?Am!U2@sN#`dJ?hRgiMres@yXQnzka&@Z_Paix)7G+wJ zh_AveD$MC;E(Kvozw;RtlO$ z!&MWj7{I8~t;;$P&GuwRE{iIj%Vk=dI&;X+!w#7`b%4X6M;tN@C1Z6Oo;W`|=6M7h z=A<(1jc9xiJ>rNX26`V^ePoGyWc5)4J&!uPy5xD(;fF-^i_*zVW3IJhS>5VvF4+!+ zM;$)Un8T{4!ND7Y^FzU5-ofnZX@|iOq<$wF2*lzrzyZ->05edBSFn6QVrn%ckOXXy zT$w1L`K?*DAFXXkf3_gmp31ED=f2LmMy!6(;nUC#_;blLlIhQ-lWI!pn{&9ZWM_9Y zvkWFPXvA8YmMw+ED2j+NSw>u`o7J?8fsMGNn4)GHgN8CSI%6CY#?)q7J94mP9yE={ z7FhsWva3-9Mt-p{CTwBNfhnx*BW)E;3tGjQZOO)rSF?oee^h@=k}-tZ;~UYmSd4*P zJAn!nI01RtT3nK&WG0guO;hiAh|&p-nGV#D5y!^@u1EWw%yiK1*|a6XwFhnQXcF3( zu!wW&1Dnx;zYULp5v6tT3PBI@$x|UD0e)1o_vRY3^)m z%q&hW^-=cStA737a?3W47BsSrZ%;#)E-37hdCibS3GnCrCBWkWCBQp5Rr9jAyktd+ zkPGauD#=_q^|Iz;$XD&Uq-#0ij;{G0=;+&?fo=l=W=@$mtH&sFE!A{#3wlHBA0CtJ zuy`QJm!pcHXst@S;?5Jbevm=?-hl|V%PBd!UXP=x%t3u-?;?3+%0UnOb_j(8r>@tf^W-XCKwU|r9#TZQFejov)GRYxbxW^Eha-IL=M8Gh!-6QW}~*&j?uO`B`V^_S~VZ4M%Ct& z6uHWdyOENn_Qp|-tvDL2;&H@jt}u~A?9Q?nFu8InF7A9$)5)xh?i@FcrE{cc>Ab%T zf*ceQ7`x*xa+b{fKbgl~U_0nAOdA+vE}_o+C=jb*d-E9n)e!WarN!4Xi@vmCHP zdFWVCiUllmzKDU;Hu1LbP=KbBDTRg~CQnx)=IFTkbS zTl2`eazMVD<$7`+1%9=SnXJaO;Mad2U`kQaTzP`0Ge9Ns;LdF3;MR`jw$7I1!Oc00 zi2SccSeuul757RMnMHNJ*MxBWsKSy=BT8lFphKr(V8y!JBfldyCQ1X6MaAD;4Mtod z)a^$hWjmbeMEzt9@|TtcjVqGJxJ#XHp?O*IH#!K@d!W*lTzr>=-9&hM2E2v6Ckt=W z$^Kj?uK$^8I(d}!)tE>ND70?X$om?m2Pq*vbM*orM(hNi-o44k99l+NKk zqjRYfnZ6Q5+?~yALw{vn2YNXU+O0aYq?669jcrR(D|q_|RWmS>(vKE5b}UP}4ue;i z&0+{}UW;pBAdGwfcHP<%!Wf8?U5FbMD01iQC-jHzn}EhPKT;|IwhE1H81ijL4;{*Q zW8LWnn@i_2Q*FEw^?TMO+gpKI>=85OIEEo%f3mRynn0APyXDm2er?s<}IKqq>sBs`p zPh$oPT@{=jljN;4PUd%Zw65~LxpuiNoL%Q!>N+t6v9i^7Cn>wS1ET)=KcZ`d=5sMI z-IVNT8Abi;pNaLV4r-j@Ri*aF#6}ak&LgRdGRKT*#Jyv-_4A|Y@0PR6v^moN>Y#c_ zicRhaN{g9j%5VkYEiQG<$)ws{18xp(82+HC)fl2^YQ@@s(TrY~iHLMD8Z%mRuB{q* z1WE=`2QG9@7j9E^HV?Cl-fdpC-*rI}z2vCWBOG}PQYJPfZH&*n?DV$u^2SkQNJ$Mc zgj(E~A5OB(t*EwWb=w*{a0NxY(v8i$_+)3bE^9>;=Vj59vZs!r{4}Z+PiB<-7M0FU zES-J2GliRgW?mgWoEqa*G5(rzcUPV{>{O4Y`j}<)3$n{>8b#d{xYTBn&6pE!_4f{N z2m>RfHj`SGX>6a~gu4=s&xQWY?JaHS8+=I7mNJ*|9V-#{(d2u{BHThITc&4l_lG{5 zJ091uq9b)`hutU5PjxJ_b5v0$!YkR#b~jRjikw+?e3BJ9qYEXj`6)k9?^e8gIOUyd zXMB_qG=QHp8BNrw3FcDCJgjoSCE(MYt?072+ey0mGjvmeaGdz8WLq+qoQK(KPxsiL zFG#ISa?G_A*CbQUS)hL3(b|gfnOV5BhQ{zVD#Wwf)4A1wLlTo9Ey<-HQp;J==IRW$O_>!K_MAsJc&{s#Y4Xzu?vDOLDbLjFw9!P= zJX+}bw);*Yma^ZD0^*gaMI=f?K%#f06zhE{}mVGF#fpjqi>Sol>%B0exiMuaD zjQ0#o9j!#9sm$G#@q&Tk?Zy(|c)TkS7^A_to$|K4UxHV7^~~LD37UJVAH9 zB&ALu#FnJgGjx>nY6}zh=4}`acJg&?t?W%g0{3vZg)$kBW@7BrtHp}N)(*Gk&RyYT zUpALwvu*4+p_%r=#DMj1!!+z~$h;vR}9 zuZ#know?T0%rBO!Zc^q-S}rp)m0mr%k|vWl95J&oo5Zk9gj;>oun(v0k}jIbOO3xr zABCkQn@aZxwa3{lKQBHQG?4C7qni!ZSM1h0K$N3c!Ze6S!Z1ziJk-3P=N(nPs3K3@(_|U7|hghNQ7E_m+ z+;Hg{%7cp4fGKm_vi;va?TZz!$YpH*<}H&lwIFk1jLLz}DQ|5(oE?8{FI2 zrE}xO2cwezhYq8TYP7xoE~P%b67#lbjl)UN*v!g+72p3aEo4Vs#=V>tIK<|cQ2zXo zEEg~PQPc3D9uz%3hQZ6|{~s&f!`0CJb1AsNcO9xB7mU`smd{}V#Y zgxI7mXXJ)CW2#9}42}&sJ&J2vDWgkMr7+u#7`bBbznkNY%`S8L(3w=4jYXQe0tPd2 zTC!z>No$+6wV8F=HXut~>V>NYoCD&4QAZTPaI`o+gX;YH*RhmV36xp+zQMB$91{#j zDdQuU8UUr3U%3$sSGpn34Tm*toOIyRU213i;wCDgx1W^t=NKDtYo5#x81+&q>ZFmt zZlV=yicJVk14zIF9_Iq?SAt$;4x^&MI(%)gNPC_4Ki6Tyg2CWkaQimM7!2=skx(cv=wA~A1KC<< z?icOT&nJUFE3G~!v=v}HFD z`v>xA8=&~p1!j_$&6E}<2=_Dna(p;5UEL@!@A9yYh}ah>V3c&fu#V@k#aVDF-DKKL zVd&-~-9JKE8t=r(fR)7qW_BDv)1bK)H$Fm>T)w-(l5i|dqbI%;3zQPnw=O=(IM5P4 zAQM|NR)WEzGJC3No}ci-WMltarJMSsOKH-wH0M}aG!o2Y4rn35XEdOqL@Z5i_RnPc z`AZ0urb7GMWX^u}qf#vUr$%iWw6yHg=PH({y3rsUT`S+eD7t_3Ed0WiwF4eX3Fqbp zjH2WDsSQ`_Y4NHLI()z?e1fHay>FRGPP?-iVqP>p54!L~)E?eA^N4}f(sU!n8%wo5 zHrEE|8y<@5ln<5=l~(K%lqx#Ut)An&RMmK{D(+891rk(L5X&l$til4JbsKaY?7%gy zkPNf{4b-yX5?L+;^&!}_sz}m(J22O^238|CSd=s%c|G*YRq5ev_O4a}=#Fy?1o4c??4xbS zwVVW2NO*4P?MbDwOD`m>chz%3;X?%o0uWFB^uM)Wqa*625u|eC`Tb+{e$oIkZYqLW z*`CMd14>g2F7^Fn0&Ffb$j@;tjpIXAI6)9j9Q030Y&b@4qv_#{juOfzH!_dm3^(rP>#Mb?o`EK05) zTEn7T7m#kloV#hJ%WXH3U zEW?8_&T!zcSHBmKS$+BwFMJ;XSDrX#*C3#b~6iddD zeoNDw(?$JQiZ#Nx5+VtCo9R<>X*QWeRF>wFZCD??^i)307uACgLF|zU%m81f+LP_g z%aJoYvOM$1LWpC#o9?rKd^p^@nKYchnp3iFflDdFvRus#tFk#v=t3)x)XF2Z;;1aZ h87AkQONaCFab9T=Ygyga0`bnK`X-FWqU><{{{X(W*w+96 literal 0 HcmV?d00001 diff --git a/bin/od65 b/bin/od65 new file mode 100755 index 0000000000000000000000000000000000000000..b6d198d065a111686278b09f3332d76dc75c7f84 GIT binary patch literal 55072 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 literal 0 HcmV?d00001 diff --git a/disk b/disk new file mode 100755 index 0000000..0ee836e --- /dev/null +++ b/disk @@ -0,0 +1,3 @@ +#!/bin/bash + +cp test/$1.img /Applications/MultiMC.app/Contents/Resources/instances/1.2.5\ ftb/minecraft/saves/cpu\ test/redpower/disk_1b63bbbd8ce6001f.img \ No newline at end of file diff --git a/include/console.h b/include/console.h new file mode 100644 index 0000000..561a941 --- /dev/null +++ b/include/console.h @@ -0,0 +1,48 @@ +//console.h + +// 0x00 Memory access row. Used to set which line of characters appears in the display memory window. + +// 0x01 cursor x +// 0x02 cursor y +// 0x03 cursor mode (0: hidden, 1: solid, 2: blink) + +// 0x04 key buffer start (16 byte buffer) +// 0x05 key buffer position +// 0x06 key value at buffer start + +// 0x07 blit mode (1: fill, 2: invert; 3: shift) +// 0x08 blit x start / fill value +// 0x09 blit y start +// 0x0A blit x offset +// 0x0B blit y offset +// 0x0C blit width +// 0x0D blit height + +// 0x10 -> 0x60 display memory window + +typedef struct Console { + char line; + char cursor_x; + char cursor_y; + char cursor_mode; + + char kb_start; + char kb_pos; + char kb_key; + + char blit_mode; + char blit_start_x; + char blit_start_y; + char blit_offset_x; + char blit_offset_y; + char blit_width; + char blit_height; + + unsigned int padding; + + char display[0x50]; +} Console; + +//character with inverted colors +#define inv(c) ((c) | 0x80) + diff --git a/include/disk.h b/include/disk.h new file mode 100644 index 0000000..6fd9ad4 --- /dev/null +++ b/include/disk.h @@ -0,0 +1,29 @@ +//disk.h + +// 0x00-0x7F: Disk sector buffer +// 0x80-0x81: Sector number +// 0x82: Disk command: +// 0: Idle/success +// 1: Read Disk Name +// 2: Write Disk Name +// 3: Read Disk Serial +// 4: Read Disk Sector +// 5: Write Disk Sector +// 0xFF: Command failure + +typedef enum { + IDLE = 0, + READ_NAME = 1, + WRITE_NAME = 2, + READ_SERIAL = 3, + READ = 4, + WRITE = 5, + FAIL = 0xFF +} DiskCommand; + +typedef struct Disk { + char sector[0x80]; + unsigned int sector_num; + DiskCommand command; +} Disk; + diff --git a/include/iox.h b/include/iox.h new file mode 100644 index 0000000..26689f2 --- /dev/null +++ b/include/iox.h @@ -0,0 +1,46 @@ +// iox.h + + +// device struct + +typedef struct Iox { + unsigned int in; + unsigned int out; +} Iox; + +// Bit Dec Hex Color +// 0 1 0x1 White +// 1 2 0x2 Orange +// 2 4 0x4 Magenta +// 3 8 0x8 Light Blue +// 4 16 0x10 Yellow +// 5 32 0x20 Lime +// 6 64 0x40 Pink +// 7 128 0x80 Gray +// 8 256 0x100 Light Gray +// 9 512 0x200 Cyan +// 10 1024 0x400 Purple +// 11 2048 0x800 Blue +// 12 4096 0x1000 Brown +// 13 8192 0x2000 Green +// 14 16384 0x4000 Red +// 15 32768 0x8000 Black + +typedef enum { + WHITE = 0x0001, + ORANGE = 0x0002, + MAGENTA = 0x0004, + LBLUE = 0x0008, + YELLOW = 0x0010, + LIME = 0x0020, + PINK = 0x0040, + GRAY = 0x0080, + LGRAY = 0x0100, + CYAN = 0x0200, + PURPLE = 0x0400, + BLUE = 0x0800, + BROWN = 0x1000, + GREEN = 0x2000, + RED = 0x4000, + BLACK = 0x8000 +} WireColor; \ No newline at end of file diff --git a/include/redbus.h b/include/redbus.h new file mode 100644 index 0000000..344bd75 --- /dev/null +++ b/include/redbus.h @@ -0,0 +1,33 @@ +// redbus.h + +void rb_enable(void); +void rb_disable(void); + +void __fastcall__ rb_set_window(void* address); + +void __fastcall__ rb_map_device(unsigned char id); + + + +// 0x00 Map device in Reg A to redbus window. +// 0x80 Get mapped device to A. + +// 0x01 Redbus Window offset to A +// 0x81 Get RB window offset to A. + +// 0x02 Enable redbus +// 0x82 Disable redbus + +// 0x03 Set external memory mapped window to A. +// 0x83 Get memory mapped window to A. + +// 0x04 Enable external memory mapped window. +// 0x84 Disable external memory mapped window. + +// 0x05 Set BRK address to A +// 0x85 Get BRK address to A + +// 0x06 Set POR address to A +// 0x86 Get POR address to A + +// 0xFF Output A register to MC logfile. \ No newline at end of file diff --git a/lib/Makefile b/lib/Makefile new file mode 100644 index 0000000..b6bf78c --- /dev/null +++ b/lib/Makefile @@ -0,0 +1,21 @@ +AR = ../bin/ar65 +export CPU = 65c02 + + +#.PHONY: all +all: rpc8e.lib + +rpc8e.lib: runtime common rpc8e + rm -f rpc8e.lib + $(AR) a rpc8e.lib runtime/*.o rpc8e/*.o common/*.o + +.PHONY: runtime rpc8e common + +rpc8e: + make -C rpc8e/ + +runtime: + make -C runtime/ + +common: + make -C common/ \ No newline at end of file diff --git a/lib/asminc/mmu.inc b/lib/asminc/mmu.inc new file mode 100644 index 0000000..c45552f --- /dev/null +++ b/lib/asminc/mmu.inc @@ -0,0 +1,4 @@ +.macro mmu command + .byte $EF + .byte command +.endmacro \ No newline at end of file diff --git a/lib/asminc/zeropage.inc b/lib/asminc/zeropage.inc new file mode 100644 index 0000000..a258741 --- /dev/null +++ b/lib/asminc/zeropage.inc @@ -0,0 +1,21 @@ +; +; zeropage.inc +; +; (C) Copyright 2002 Ullrich von Bassewitz (uz@cc65.org) +; + +; Assembler include file that imports the runtime zero page locations used +; by the compiler, ready for usage in asm code. + + .importzp sp, sreg, regsave + .importzp ptr1, ptr2, ptr3, ptr4 + .importzp tmp1, tmp2, tmp3, tmp4 + .importzp regbank + +; The total amount of zero page space used + +zpspace = 26 + + + + diff --git a/lib/common/Makefile b/lib/common/Makefile new file mode 100644 index 0000000..b4a5617 --- /dev/null +++ b/lib/common/Makefile @@ -0,0 +1,217 @@ +# +# makefile for CC65 runtime library +# + +.SUFFIXES: .o .s .c + +#-------------------------------------------------------------------------- +# Programs and flags + +SYS = none + +AS = ../../bin/ca65 +CC = ../../bin/cc65 +LD = ../../bin/ld65 + +AFLAGS = -t $(SYS) --forget-inc-paths -I../asminc --cpu $(CPU) +CFLAGS = -Osir -g -T -t $(SYS) --forget-inc-paths -I . -I ../../include --cpu $(CPU) + +#-------------------------------------------------------------------------- +# Rules + +%.o: %.c + @$(CC) $(CFLAGS) $< + @$(AS) -g -o $@ $(AFLAGS) $(*).s + +%.o: %.s + @$(AS) -g -o $@ $(AFLAGS) $< + +#-------------------------------------------------------------------------- +# Rules to help us see what code the compiler and assembler make. + +%.s : %.c + @$(CC) $(CFLAGS) -S $< + +%.lst : %.s + @$(AS) $(AFLAGS) -l -o /dev/null $< + +#-------------------------------------------------------------------------- +# Object files + +# From C source-files +# C_OBJS = _afailed.o \ +# _hextab.o \ +# _poserror.o \ +# _scanf.o \ +# abort.o \ +# asctime.o \ +# bsearch.o \ +# errormsg.o \ +# fdopen.o \ +# fgetc.o \ +# fgetpos.o \ +# fgets.o \ +# fputc.o \ +# fputs.o \ +# freopen.o \ +# fseek.o \ +# fsetpos.o \ +# ftell.o \ +# getchar.o \ +# gets.o \ +# gmtime.o \ +# locale.o \ +# localtime.o \ +# mktime.o \ +# perror.o \ +# pmemalign.o \ +# puts.o \ +# qsort.o \ +# realloc.o \ +# rewind.o \ +# sleep.o \ +# strftime.o \ +# strtok.o \ +# strtol.o \ +# strtoul.o \ +# strxfrm.o \ +# system.o \ +# timezone.o + +# From assembly source-files +S_OBJS = zerobss.o copydata.o +#_cwd.o \ + # _environ.o \ + # _fdesc.o \ + # _file.o \ + # _fopen.o \ + # _heap.o \ + # _heapadd.o \ + # _heapblocksize.o\ + # _heapmaxavail.o \ + # _heapmemavail.o \ + # _oserror.o \ + # _printf.o \ + # _seterrno.o \ + # _swap.o \ + # _sys.o \ + # abs.o \ + # atexit.o \ + # atoi.o \ + # calloc.o \ + # chdir.o \ + # copydata.o \ + # creat.o \ + # ctime.o \ + # divt.o \ + # errno.o \ + # fclose.o \ + # fmisc.o \ + # fopen.o \ + # fprintf.o \ + # fread.o \ + # free.o \ + # fscanf.o \ + # fwrite.o \ + # getcpu.o \ + # getcwd.o \ + # getenv.o \ + # interrupt.o \ + # isalnum.o \ + # isalpha.o \ + # isblank.o \ + # iscntrl.o \ + # isdigit.o \ + # isgraph.o \ + # islower.o \ + # isprint.o \ + # ispunct.o \ + # isspace.o \ + # isupper.o \ + # isxdigit.o \ + # itoa.o \ + # labs.o \ + # longjmp.o \ + # ltoa.o \ + # malloc.o \ + # maperrno.o \ + # memchr.o \ + # memcmp.o \ + # memcpy.o \ + # memmove.o \ + # memset.o \ + # mkdir.o \ + # modfree.o \ + # modload.o \ + # oserrcheck.o \ + # printf.o \ + # putchar.o \ + # putenv.o \ + # rand.o \ + # raise.o \ + # remove.o \ + # rename.o \ + # rmdir.o \ + # scanf.o \ + # searchenv.o \ + # setjmp.o \ + # signal.o \ + # sigtable.o \ + # snprintf.o \ + # sprintf.o \ + # sscanf.o \ + # strcat.o \ + # strchr.o \ + # strcmp.o \ + # strcoll.o \ + # strcpy.o \ + # strcspn.o \ + # strdup.o \ + # strerror.o \ + # stricmp.o \ + # strlen.o \ + # strlower.o \ + # strncat.o \ + # strncmp.o \ + # strncpy.o \ + # strnicmp.o \ + # stroserr.o \ + # strpbrk.o \ + # strrchr.o \ + # strspn.o \ + # strstr.o \ + # strtoimax.o \ + # strtoumax.o \ + # strupper.o \ + # time.o \ + # tolower.o \ + # toupper.o \ + # uname.o \ + # ungetc.o \ + # unlink.o \ + # utscopy.o \ + # vfprintf.o \ + # vfscanf.o \ + # vprintf.o \ + # vscanf.o \ + # vsnprintf.o \ + # vsprintf.o \ + # vsscanf.o \ + # zerobss.o + + +#-------------------------------------------------------------------------- +# Targets + +.PHONY: all clean zap + +all: $(C_OBJS) $(S_OBJS) + +clean: + @$(RM) *~ *.lst + @$(RM) $(C_OBJS:.o=.s) + @$(RM) $(C_OBJS) + @$(RM) $(S_OBJS) + +zap: clean + diff --git a/lib/common/copydata.s b/lib/common/copydata.s new file mode 100644 index 0000000..b0a9987 --- /dev/null +++ b/lib/common/copydata.s @@ -0,0 +1,49 @@ +; +; Ullrich von Bassewitz, 1998-12-07, 2004-12-01 +; +; Copy the data segment from the LOAD to the RUN location +; + + .export copydata + .import __DATA_LOAD__, __DATA_RUN__, __DATA_SIZE__ + .importzp ptr1, ptr2, tmp1 + + +copydata: + lda #<__DATA_LOAD__ ; Source pointer + sta ptr1 + lda #>__DATA_LOAD__ + sta ptr1+1 + + lda #<__DATA_RUN__ ; Target pointer + sta ptr2 + lda #>__DATA_RUN__ + sta ptr2+1 + + ldx #<~__DATA_SIZE__ + lda #>~__DATA_SIZE__ ; Use -(__DATASIZE__+1) + sta tmp1 + ldy #$00 + +; Copy loop + +@L1: inx + beq @L3 + +@L2: lda (ptr1),y + sta (ptr2),y + iny + bne @L1 + inc ptr1+1 + inc ptr2+1 ; Bump pointers + bne @L1 ; Branch always (hopefully) + +; Bump the high counter byte + +@L3: inc tmp1 + bne @L2 + +; Done + + rts + diff --git a/lib/common/zerobss.s b/lib/common/zerobss.s new file mode 100644 index 0000000..321424e --- /dev/null +++ b/lib/common/zerobss.s @@ -0,0 +1,46 @@ +; +; Ullrich von Bassewitz, 1998-09-17, 2005-02-26. +; +; Zero the bss segment. +; + + .export zerobss + .import __BSS_RUN__, __BSS_SIZE__ + .importzp ptr1 + + +.segment "INIT" + +zerobss: + lda #<__BSS_RUN__ + sta ptr1 + lda #>__BSS_RUN__ + sta ptr1+1 + lda #0 + tay + +; Clear full pages + +L1: ldx #>__BSS_SIZE__ + beq L3 +L2: sta (ptr1),y + iny + bne L2 + inc ptr1+1 + dex + bne L2 + +; Clear remaining page (y is zero on entry) + +L3: cpy #<__BSS_SIZE__ + beq L4 + sta (ptr1),y + iny + bne L3 + +; Done + +L4: rts + + + diff --git a/lib/rpc8e.cfg b/lib/rpc8e.cfg new file mode 100644 index 0000000..65e932a --- /dev/null +++ b/lib/rpc8e.cfg @@ -0,0 +1,40 @@ +MEMORY { + ZEROPAGE: start = $0006, size = $00FA; + STACK: start = $0100, size = $0100, define = yes; + RAM: start = $0500, size = $FAFF, define = yes; +} + +SEGMENTS { + ZEROPAGE: load = ZEROPAGE, type = zp, define = yes; + STARTUP: load = RAM, type = ro; + CODE: load = RAM, type = ro; + INIT: load = RAM, type = ro; + DATA: load = RAM, type = rw, define = yes, run = RAM; + RODATA: load = RAM, type = ro; + BSS: load = RAM, type = bss, define = yes; + HEAP: load = RAM, type = bss, optional = yes; + # VECTOR: load = RAM, type = ro, start = $C000; +} + +FEATURES { + CONDES: segment = STARTUP, + type = constructor, + label = __CONSTRUCTOR_TABLE__, + count = __CONSTRUCTOR_COUNT__; + CONDES: segment = STARTUP, + type = destructor, + label = __DESTRUCTOR_TABLE__, + count = __DESTRUCTOR_COUNT__; +} + +SYMBOLS { + # Define the stack size for the application + __STACKSIZE__: value = $0200, weak = yes; +} + +# 0x0000 Zero page +# 0x0100 P-stack +# 0x0200 R-stack +# 0x0300 bus output +# 0x0400 bus input (also Bootloader space) +# 0x0500 Ram (the bootloader loads the disk image here) \ No newline at end of file diff --git a/lib/rpc8e.lib b/lib/rpc8e.lib new file mode 100644 index 0000000000000000000000000000000000000000..59d3d691dfb1a5552cfaf7ef6e656af8d83de309 GIT binary patch literal 108327 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 z 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 MHl#vQug1;)11RGsg#Z8m literal 0 HcmV?d00001 diff --git a/lib/rpc8e/Makefile b/lib/rpc8e/Makefile new file mode 100644 index 0000000..c30a725 --- /dev/null +++ b/lib/rpc8e/Makefile @@ -0,0 +1,45 @@ +# +# makefile for CC65 runtime library +# + +.SUFFIXES: .o .s .c + +#-------------------------------------------------------------------------- +# Programs and flags + +SYS = none + +AS = ../../bin/ca65 +CC = ../../bin/cc65 +LD = ../../bin/ld65 + +AFLAGS = -t $(SYS) --forget-inc-paths -I../asminc --cpu $(CPU) +CFLAGS = -Osir -g -T -t $(SYS) --forget-inc-paths -I . -I ../../include --cpu $(CPU) + +#-------------------------------------------------------------------------- +# Rules + +.c.s: + @$(CC) $(CFLAGS) $< + +.s.o: + @$(AS) -g -o $@ $(AFLAGS) $< + +#-------------------------------------------------------------------------- +# Object files + +OBJS = crt0.o \ + redbus.o + +#-------------------------------------------------------------------------- +# Targets + +.PHONY: all clean zap + +all: $(OBJS) + +clean: + @$(RM) *~ $(COBJS:.o=.s) $(OBJS) + +zap: clean + diff --git a/lib/rpc8e/crt0.s b/lib/rpc8e/crt0.s new file mode 100644 index 0000000..0124f15 --- /dev/null +++ b/lib/rpc8e/crt0.s @@ -0,0 +1,95 @@ +; --------------------------------------------------------------------------- +; crt0.s +; --------------------------------------------------------------------------- +; +; Startup code for c65el02 + +.export _init, _exit +.import _main + +.export __STARTUP__ : absolute = 1 ; Mark as startup +.import __STACK_START__, __STACK_SIZE__ ; Linker generated + +.import copydata, zerobss, initlib, donelib + +.include "zeropage.inc" + +.macro MMU command + .byte $EF + .byte command +.endmacro + +.macro XCE + .byte $FB +.endmacro + +; --------------------------------------------------------------------------- +; Place the startup code in a special segment + +.segment "STARTUP" + +;.byte $DB + +; --------------------------------------------------------------------------- +; A little light 6502 housekeeping + +_init: LDX #$FF ; Initialize stack pointer to $01FF + TXS + CLD ; Clear decimal mode + +; --------------------------------------------------------------------------- +; Set cc65 argument stack pointer + + LDA #<(__STACK_START__ + __STACK_SIZE__ - 1) + STA sp + LDA #>(__STACK_START__ + __STACK_SIZE__ - 1) + STA sp+1 + +; --------------------------------------------------------------------------- +; Initialize memory storage + + JSR zerobss ; Clear BSS segment + JSR copydata ; Initialize DATA segment + JSR initlib ; Run constructors + +; --------------------------------------------------------------------------- +; Initialize redbus + +; from foth boot disk +;000500 18 CLC +;000501 FB XCE +;000502 C2 30 REP #$30 +;000504 A9 00 03 LDA #$0300 +;000507 EF 01 MMU $01 +;000509 EF 02 MMU $02 +;00050B A9 00 04 LDA #$0400 +;00050E EF 03 MMU $03 +;000510 EF 04 MMU $04 +;000512 A9 00 05 LDA #$0500 +;000515 EF 06 MMU $06 +;000517 4C 56 1D JMP $1D56 + +;LDA $01 ; Get the main console ID +;MMU $00 + +;LDA #$00 ; Select first line +;STA $0300 + +;LDA #$42 ; Seems to work +;STA $0310 + +;.byte $DB + + + + +; --------------------------------------------------------------------------- +; Call main() + + JSR _main + +; --------------------------------------------------------------------------- +; Back from main (this is also the _exit entry): force a software break + +_exit: JSR donelib ; Run destructors + BRK \ No newline at end of file diff --git a/lib/rpc8e/redbus.s b/lib/rpc8e/redbus.s new file mode 100644 index 0000000..4a6bc3a --- /dev/null +++ b/lib/rpc8e/redbus.s @@ -0,0 +1,55 @@ +.include "mmu.inc" + +.export _rb_enable, _rb_disable, _rb_map_device, _rb_set_window + + +.segment "CODE" + +;------------------------------------------ +; void __inline__ rb_enable(void); +;------------------------------------------ +_rb_enable: + mmu $02 + rts + + +;------------------------------------------ +; void __inline__ rb_disable(void); +;------------------------------------------ +_rb_disable: + mmu $82 + rts + + +;------------------------------------------ +; void __fastcall__ rb_set_window(void* address); +;------------------------------------------ +_rb_set_window: + ;switch to native 16bit + clc + .byte $FB ; XCE + .byte $C2, $30 ; REP #$30 + + ; init redstone window at $0300 + ;.byte $A9, $00, $03 ; LDA #$0300 + .byte $EB ; XBA + stx $55 + ora $55 + .byte $EB ; XBA + mmu $01 + + ;switch to emulated 8bit + .byte $E2, $30 ; SEP #$30 + sec + .byte $FB ; XCE + rts + + +;------------------------------------------ +; void __fastcall__ rb_map_device(unsigned char id); +;------------------------------------------ +_rb_map_device: + mmu $00 + rts + + diff --git a/lib/runtime/Makefile b/lib/runtime/Makefile new file mode 100644 index 0000000..8cadbd4 --- /dev/null +++ b/lib/runtime/Makefile @@ -0,0 +1,234 @@ +# +# makefile for CC65 runtime library +# + +.SUFFIXES: .o .s .c + +#-------------------------------------------------------------------------- +# Programs and flags + +SYS = none + +AS = ../../bin/ca65 +CC = ../../bin/cc65 +LD = ../../bin/ld65 + +AFLAGS = -t $(SYS) --forget-inc-paths -I../asminc --cpu $(CPU) +CFLAGS = -Osir -g -T -t $(SYS) --forget-inc-paths -I . -I ../../include --cpu $(CPU) + +#-------------------------------------------------------------------------- +# Rules + +.c.s: + @$(CC) $(CFLAGS) $< + +.s.o: + @$(AS) -g -o $@ $(AFLAGS) $< + +#-------------------------------------------------------------------------- +# Object files + +OBJS = add.o \ + addeqsp.o \ + addysp.o \ + along.o \ + and.o \ + aslax1.o \ + aslax2.o \ + aslax3.o \ + aslax4.o \ + asleax1.o \ + asleax2.o \ + asleax3.o \ + asleax4.o \ + asr.o \ + asrax1.o \ + asrax2.o \ + asrax3.o \ + asrax4.o \ + asreax1.o \ + asreax2.o \ + asreax3.o \ + asreax4.o \ + axlong.o \ + bneg.o \ + bpushbsp.o \ + call.o \ + callirq.o \ + callmain.o \ + compl.o \ + condes.o \ + decax1.o \ + decax2.o \ + decax3.o \ + decax4.o \ + decax5.o \ + decax6.o \ + decax7.o \ + decax8.o \ + decaxy.o \ + decsp1.o \ + decsp2.o \ + decsp3.o \ + decsp4.o \ + decsp5.o \ + decsp6.o \ + decsp7.o \ + decsp8.o \ + div.o \ + enter.o \ + eq.o \ + ge.o \ + gt.o \ + icmp.o \ + incax1.o \ + incax2.o \ + incax3.o \ + incax5.o \ + incax6.o \ + incax7.o \ + incax8.o \ + incaxy.o \ + incsp1.o \ + incsp2.o \ + incsp3.o \ + incsp4.o \ + incsp5.o \ + incsp6.o \ + incsp7.o \ + incsp8.o \ + jmpvec.o \ + ladd.o \ + laddeq.o \ + laddeqsp.o \ + land.o \ + lasr.o \ + lbneg.o \ + lcmp.o \ + lcompl.o \ + ldai.o \ + ldau0sp.o \ + ldaui.o \ + ldauisp.o \ + ldaxi.o \ + ldaxsp.o \ + ldeaxi.o \ + ldeaxysp.o \ + ldec.o \ + ldiv.o \ + le.o \ + leaaxsp.o \ + leave.o \ + leq.o \ + lge.o \ + lgt.o \ + linc.o \ + lle.o \ + llt.o \ + lmod.o \ + lmul.o \ + lne.o \ + lneg.o \ + lor.o \ + lpop.o \ + lpush.o \ + lrsub.o \ + lsave.o \ + lshelp.o \ + lshl.o \ + lshr.o \ + lsub.o \ + lsubeq.o \ + lsubeqsp.o \ + lt.o \ + ltest.o \ + ludiv.o \ + luge.o \ + lugt.o \ + lule.o \ + lult.o \ + lumod.o \ + lxor.o \ + makebool.o \ + mod.o \ + mul.o \ + mul8.o \ + mulax3.o \ + mulax5.o \ + mulax6.o \ + mulax7.o \ + mulax9.o \ + mulax10.o \ + ne.o \ + neg.o \ + or.o \ + popa.o \ + popsreg.o \ + push1.o \ + push2.o \ + push3.o \ + push4.o \ + push5.o \ + push6.o \ + push7.o \ + pusha.o \ + pushaff.o \ + pushax.o \ + pushb.o \ + pushbsp.o \ + pushc0.o \ + pushc1.o \ + pushc2.o \ + pushlysp.o \ + pushw.o \ + pushwsp.o \ + regswap.o \ + regswap1.o \ + regswap2.o \ + return0.o \ + return1.o \ + rsub.o \ + shelp.o \ + shl.o \ + shr.o \ + shrax1.o \ + shrax2.o \ + shrax3.o \ + shrax4.o \ + shreax1.o \ + shreax2.o \ + shreax3.o \ + shreax4.o \ + staspidx.o \ + staxsp.o \ + staxspi.o \ + steaxsp.o \ + steaxspi.o \ + stkchk.o \ + sub.o \ + subeqsp.o \ + subysp.o \ + swap.o \ + tosint.o \ + toslong.o \ + udiv.o \ + uge.o \ + ugt.o \ + ule.o \ + ult.o \ + umod.o \ + xor.o \ + zeropage.o + +#-------------------------------------------------------------------------- +# Targets + +.PHONY: all clean zap + +all: $(OBJS) + +clean: + @$(RM) *~ $(COBJS:.o=.s) $(OBJS) + +zap: clean + diff --git a/lib/runtime/add.s b/lib/runtime/add.s new file mode 100644 index 0000000..a4a058d --- /dev/null +++ b/lib/runtime/add.s @@ -0,0 +1,39 @@ +; +; Ullrich von Bassewitz, 05.08.1998 +; +; CC65 runtime: add ints +; + +; Make this as fast as possible, even if it needs more space since it's +; called a lot! + + .export tosadda0, tosaddax + .importzp sp + + .macpack cpu + +tosadda0: + ldx #0 +tosaddax: + clc +.if (.cpu .bitand CPU_ISET_65SC02) + adc (sp) ; 65SC02 version - saves 2 cycles + ldy #1 +.else + ldy #0 + adc (sp),y ; lo byte + iny +.endif + pha ; save it + txa + adc (sp),y ; hi byte + tax + clc + lda sp + adc #2 + sta sp + bcc L1 + inc sp+1 +L1: pla ; Restore low byte + rts + diff --git a/lib/runtime/addeqsp.s b/lib/runtime/addeqsp.s new file mode 100644 index 0000000..d667e36 --- /dev/null +++ b/lib/runtime/addeqsp.s @@ -0,0 +1,24 @@ +; +; Ullrich von Bassewitz, 08.10.1998 +; +; CC65 runtime: += operator for ints on the stack +; + + .export addeq0sp, addeqysp + .importzp sp + +addeq0sp: + ldy #0 +addeqysp: + clc + adc (sp),y + sta (sp),y + pha + iny + txa + adc (sp),y + sta (sp),y + tax + pla + rts + diff --git a/lib/runtime/addysp.s b/lib/runtime/addysp.s new file mode 100644 index 0000000..b5069f1 --- /dev/null +++ b/lib/runtime/addysp.s @@ -0,0 +1,21 @@ +; +; Ullrich von Bassewitz, 25.10.2000 +; +; CC65 runtime: Increment the stackpointer by value in y +; + + .export addysp1, addysp + .importzp sp + +addysp1: + iny +addysp: pha ; Save A + clc + tya ; Get the value + adc sp ; Add low byte + sta sp ; Put it back + bcc @L1 ; If no carry, we're done + inc sp+1 ; Inc high byte +@L1: pla ; Restore A + rts + diff --git a/lib/runtime/along.s b/lib/runtime/along.s new file mode 100644 index 0000000..e8707d8 --- /dev/null +++ b/lib/runtime/along.s @@ -0,0 +1,24 @@ +; +; Ullrich von Bassewitz, 23.11.2002 +; +; CC65 runtime: Convert char in ax into a long +; + + .export aulong, along + .importzp sreg + +; Convert A from char to long in EAX + +aulong: ldx #0 + stx sreg + stx sreg+1 + rts + +along: cmp #$80 ; Positive? + bcc aulong ; Yes, handle like unsigned type + ldx #$ff + stx sreg + stx sreg+1 + rts + + diff --git a/lib/runtime/and.s b/lib/runtime/and.s new file mode 100644 index 0000000..c38b47b --- /dev/null +++ b/lib/runtime/and.s @@ -0,0 +1,30 @@ +; +; Ullrich von Bassewitz, 05.08.1998 +; +; CC65 runtime: and on ints +; + + .export tosanda0, tosandax + .import addysp1 + .importzp sp, ptr4 + + .macpack cpu + +tosanda0: + ldx #$00 +tosandax: +.if (.cpu .bitand CPU_ISET_65SC02) + and (sp) ; 65SC02 version, saves 2 cycles and 1 byte + ldy #1 +.else + ldy #0 + and (sp),y + iny +.endif + pha + txa + and (sp),y + tax + pla + jmp addysp1 ; drop TOS, set condition codes + diff --git a/lib/runtime/aslax1.s b/lib/runtime/aslax1.s new file mode 100644 index 0000000..eddb527 --- /dev/null +++ b/lib/runtime/aslax1.s @@ -0,0 +1,17 @@ +; +; Ullrich von Bassewitz, 06.08.1998 +; +; CC65 runtime: Scale the primary register +; + + .export aslax1, shlax1 + .importzp tmp1 + +aslax1: +shlax1: stx tmp1 + asl A + rol tmp1 + ldx tmp1 + rts + + diff --git a/lib/runtime/aslax2.s b/lib/runtime/aslax2.s new file mode 100644 index 0000000..e6e56b0 --- /dev/null +++ b/lib/runtime/aslax2.s @@ -0,0 +1,18 @@ +; +; Ullrich von Bassewitz, 06.08.1998 +; +; CC65 runtime: Scale the primary register by 4 +; + + .export aslax2, shlax2 + .importzp tmp1 + +aslax2: +shlax2: stx tmp1 + asl a + rol tmp1 + asl a + rol tmp1 + ldx tmp1 + rts + diff --git a/lib/runtime/aslax3.s b/lib/runtime/aslax3.s new file mode 100644 index 0000000..9c9bbb8 --- /dev/null +++ b/lib/runtime/aslax3.s @@ -0,0 +1,20 @@ +; +; Ullrich von Bassewitz, 06.08.1998 +; +; CC65 runtime: Scale the primary register by 8 +; + + .export aslax3, shlax3 + .importzp tmp1 + +aslax3: +shlax3: stx tmp1 + asl a + rol tmp1 + asl a + rol tmp1 + asl a + rol tmp1 + ldx tmp1 + rts + diff --git a/lib/runtime/aslax4.s b/lib/runtime/aslax4.s new file mode 100644 index 0000000..13c5273 --- /dev/null +++ b/lib/runtime/aslax4.s @@ -0,0 +1,22 @@ +; +; Ullrich von Bassewitz, 25.07.2001 +; +; CC65 runtime: Scale the primary register by 16 +; + + .export aslax4, shlax4 + .importzp tmp1 + +aslax4: +shlax4: stx tmp1 + asl a + rol tmp1 + asl a + rol tmp1 + asl a + rol tmp1 + asl a + rol tmp1 + ldx tmp1 + rts + diff --git a/lib/runtime/asleax1.s b/lib/runtime/asleax1.s new file mode 100644 index 0000000..8f30a18 --- /dev/null +++ b/lib/runtime/asleax1.s @@ -0,0 +1,19 @@ +; +; Ullrich von Bassewitz, 06.08.1998 +; +; CC65 runtime: Scale the 32 bit primary register by 2 +; + + .export asleax1, shleax1 + .importzp sreg, tmp1 + +asleax1: +shleax1: + stx tmp1 + asl a + rol tmp1 + rol sreg + rol sreg+1 + ldx tmp1 + rts + diff --git a/lib/runtime/asleax2.s b/lib/runtime/asleax2.s new file mode 100644 index 0000000..772a37d --- /dev/null +++ b/lib/runtime/asleax2.s @@ -0,0 +1,23 @@ +; +; Ullrich von Bassewitz, 06.08.1998 +; +; CC65 runtime: Scale the 32 bit primary register by 4 +; + + .export asleax2, shleax2 + .importzp sreg, tmp1 + +asleax2: +shleax2: + stx tmp1 + asl a + rol tmp1 + rol sreg + rol sreg+1 + asl a + rol tmp1 + rol sreg + rol sreg+1 + ldx tmp1 + rts + diff --git a/lib/runtime/asleax3.s b/lib/runtime/asleax3.s new file mode 100644 index 0000000..1c45320 --- /dev/null +++ b/lib/runtime/asleax3.s @@ -0,0 +1,27 @@ +; +; Ullrich von Bassewitz, 06.08.1998 +; +; CC65 runtime: Scale the 32 bit primary register by 8 +; + + .export asleax3, shleax3 + .importzp sreg, tmp1 + +asleax3: +shleax3: + stx tmp1 + asl a + rol tmp1 + rol sreg + rol sreg+1 + asl a + rol tmp1 + rol sreg + rol sreg+1 + asl a + rol tmp1 + rol sreg + rol sreg+1 + ldx tmp1 + rts + diff --git a/lib/runtime/asleax4.s b/lib/runtime/asleax4.s new file mode 100644 index 0000000..b5f1721 --- /dev/null +++ b/lib/runtime/asleax4.s @@ -0,0 +1,22 @@ +; +; Ullrich von Bassewitz, 25.07.2001 +; +; CC65 runtime: Scale the 32 bit primary register by 16 +; + + .export asleax4, shleax4 + .importzp sreg, tmp1 + +asleax4: +shleax4: + stx tmp1 + ldx #4 +@L1: asl a + rol tmp1 + rol sreg + rol sreg+1 + dex + bne @L1 + ldx tmp1 + rts + diff --git a/lib/runtime/asr.s b/lib/runtime/asr.s new file mode 100644 index 0000000..8a3565e --- /dev/null +++ b/lib/runtime/asr.s @@ -0,0 +1,60 @@ +; +; Ullrich von Bassewitz, 2004-06-30 +; +; CC65 runtime: right shift support for ints +; +; Note: The standard declares a shift count that is negative or >= the +; bitcount of the shifted type for undefined behaviour. +; +; Note^2: The compiler knowns about the register/zero page usage of this +; function, so you need to change the compiler source if you change it! +; + + + .export tosasrax + .import popax + .importzp tmp1 + +tosasrax: + and #$0F ; Bring the shift count into a valid range + sta tmp1 ; Save it + + jsr popax ; Get the left hand operand + + ldy tmp1 ; Get shift count + beq L9 ; Bail out if shift count zero + + cpy #8 ; Shift count 8 or greater? + bcc L1 ; Jump if not + +; Shift count is greater 8. The carry is set when we enter here. + + tya + sbc #8 + tay ; Adjust shift count + txa + ldx #$00 ; Shift by 8 bits + cmp #$00 ; Test sign bit + bpl L1 + dex ; Make X the correct sign extended value + +; Save the high byte so we can shift it + +L1: stx tmp1 ; Save high byte + jmp L3 + +; Do the actual shift + +L2: cpx #$80 ; Copy bit 15 into the carry + ror tmp1 + ror a +L3: dey + bpl L2 + +; Done with shift + + ldx tmp1 +L9: rts + + + diff --git a/lib/runtime/asrax1.s b/lib/runtime/asrax1.s new file mode 100644 index 0000000..bf7646a --- /dev/null +++ b/lib/runtime/asrax1.s @@ -0,0 +1,16 @@ +; +; Ullrich von Bassewitz, 06.08.1998 +; +; CC65 runtime: Scale the primary register +; + + .export asrax1 + .importzp tmp1 + +asrax1: stx tmp1 + cpx #$80 ; Put bit 7 into carry + ror tmp1 + ror a + ldx tmp1 + rts + diff --git a/lib/runtime/asrax2.s b/lib/runtime/asrax2.s new file mode 100644 index 0000000..b6cb3f7 --- /dev/null +++ b/lib/runtime/asrax2.s @@ -0,0 +1,19 @@ +; +; Ullrich von Bassewitz, 06.08.1998 +; +; CC65 runtime: Scale the primary register by 4 +; + + .export asrax2 + .importzp tmp1 + +asrax2: stx tmp1 + cpx #$80 ; Put bit 7 into carry + ror tmp1 + ror a + cpx #$80 + ror tmp1 + ror a + ldx tmp1 + rts + diff --git a/lib/runtime/asrax3.s b/lib/runtime/asrax3.s new file mode 100644 index 0000000..ee3e9f0 --- /dev/null +++ b/lib/runtime/asrax3.s @@ -0,0 +1,23 @@ +; +; Piotr Fusik, 24.10.2003 +; originally by Ullrich von Bassewitz +; +; CC65 runtime: Scale the primary register by 8 +; + + .export asrax3 + .importzp tmp1 + +asrax3: stx tmp1 + cpx #$80 ; Put bit 7 into carry + ror tmp1 + ror a + cpx #$80 + ror tmp1 + ror a + cpx #$80 + ror tmp1 + ror a + ldx tmp1 + rts + diff --git a/lib/runtime/asrax4.s b/lib/runtime/asrax4.s new file mode 100644 index 0000000..61b6645 --- /dev/null +++ b/lib/runtime/asrax4.s @@ -0,0 +1,26 @@ +; +; Piotr Fusik, 24.10.2003 +; originally by Ullrich von Bassewitz +; +; CC65 runtime: Scale the primary register by 16 +; + + .export asrax4 + .importzp tmp1 + +asrax4: stx tmp1 + cpx #$80 ; Put bit 7 into carry + ror tmp1 + ror a + cpx #$80 + ror tmp1 + ror a + cpx #$80 + ror tmp1 + ror a + cpx #$80 + ror tmp1 + ror a + ldx tmp1 + rts + diff --git a/lib/runtime/asreax1.s b/lib/runtime/asreax1.s new file mode 100644 index 0000000..ab02ed9 --- /dev/null +++ b/lib/runtime/asreax1.s @@ -0,0 +1,20 @@ +; +; Ullrich von Bassewitz, 06.08.1998 +; +; CC65 runtime: Scale the primary register +; + + .export asreax1 + .importzp sreg, tmp1 + +asreax1: + stx tmp1 + ldx sreg+1 + cpx #$80 ; Get bit 7 into carry + ror sreg+1 + ror sreg + ror tmp1 + ror a + ldx tmp1 + rts + diff --git a/lib/runtime/asreax2.s b/lib/runtime/asreax2.s new file mode 100644 index 0000000..9006b12 --- /dev/null +++ b/lib/runtime/asreax2.s @@ -0,0 +1,25 @@ +; +; Ullrich von Bassewitz, 06.08.1998 +; +; CC65 runtime: Scale the 32 bit primary register by 4 +; + + .export asreax2 + .importzp sreg, tmp1 + +asreax2: + stx tmp1 + ldx sreg+1 + cpx #$80 ; Get bit 7 into carry + ror sreg+1 + ror sreg + ror tmp1 + ror a + cpx #$80 ; Get bit 7 into carry + ror sreg+1 + ror sreg + ror tmp1 + ror a + ldx tmp1 + rts + diff --git a/lib/runtime/asreax3.s b/lib/runtime/asreax3.s new file mode 100644 index 0000000..5f759b2 --- /dev/null +++ b/lib/runtime/asreax3.s @@ -0,0 +1,30 @@ +; +; Ullrich von Bassewitz, 06.08.1998 +; +; CC65 runtime: Scale the 32 bit primary register by 8 +; + + .export asreax3 + .importzp sreg, tmp1 + +asreax3: + stx tmp1 + ldx sreg+1 + cpx #$80 ; Get bit 7 into carry + ror sreg+1 + ror sreg + ror tmp1 + ror a + cpx #$80 ; Get bit 7 into carry + ror sreg+1 + ror sreg + ror tmp1 + ror a + cpx #$80 ; Get bit 7 into carry + ror sreg+1 + ror sreg + ror tmp1 + ror a + ldx tmp1 + rts + diff --git a/lib/runtime/asreax4.s b/lib/runtime/asreax4.s new file mode 100644 index 0000000..577d9ae --- /dev/null +++ b/lib/runtime/asreax4.s @@ -0,0 +1,23 @@ +; +; Ullrich von Bassewitz, 25.07.2001 +; +; CC65 runtime: Scale the 32 bit primary register by 16 +; + + .export asreax4 + .importzp sreg, tmp1 + +asreax4: + stx tmp1 + ldx sreg+1 + ldy #4 +@L1: cpx #$80 ; Get bit 7 into carry + ror sreg+1 + ror sreg + ror tmp1 + ror a + dey + bne @L1 + ldx tmp1 + rts + diff --git a/lib/runtime/axlong.s b/lib/runtime/axlong.s new file mode 100644 index 0000000..dd208bf --- /dev/null +++ b/lib/runtime/axlong.s @@ -0,0 +1,26 @@ +; +; Ullrich von Bassewitz, 25.10.2000 +; +; CC65 runtime: Convert int in ax into a long +; + + .export axulong, axlong + .importzp sreg + +; Convert AX from int to long in EAX + +axulong: + ldy #0 + sty sreg + sty sreg+1 + rts + +axlong: cpx #$80 ; Positive? + bcc axulong ; Yes, handle like unsigned type + ldy #$ff + sty sreg + sty sreg+1 + rts + + + diff --git a/lib/runtime/bneg.s b/lib/runtime/bneg.s new file mode 100644 index 0000000..8f488f9 --- /dev/null +++ b/lib/runtime/bneg.s @@ -0,0 +1,20 @@ +; +; Ullrich von Bassewitz, 05.08.1998 +; +; CC65 runtime: boolean negation +; + + .export bnega, bnegax + .import return0, return1 + +bnegax: cpx #0 + bne L0 +bnega: tax + bne L0 +L1: lda #1 ; Zero already in X + rts + +L0: ldx #0 + txa + rts + diff --git a/lib/runtime/bpushbsp.s b/lib/runtime/bpushbsp.s new file mode 100644 index 0000000..f4d8d53 --- /dev/null +++ b/lib/runtime/bpushbsp.s @@ -0,0 +1,18 @@ +; +; Ullrich von Bassewitz, 31.08.1998 +; +; CC65 runtime: Load a from stack slot and push as byte +; + + .export bpushbsp, bpushbysp + .import pusha + .importzp sp + +bpushbsp: + ldy #0 +bpushbysp: + lda (sp),y + jmp pusha + + + diff --git a/lib/runtime/call.s b/lib/runtime/call.s new file mode 100644 index 0000000..0600177 --- /dev/null +++ b/lib/runtime/call.s @@ -0,0 +1,13 @@ +; +; Ullrich von Bassewitz, 06.08.1998 +; +; CC65 runtime: call function via pointer in ax +; + + .export callax + .importzp ptr1 + +callax: sta ptr1 + stx ptr1+1 + jmp (ptr1) ; jump there + diff --git a/lib/runtime/callirq.s b/lib/runtime/callirq.s new file mode 100644 index 0000000..5f2c2d6 --- /dev/null +++ b/lib/runtime/callirq.s @@ -0,0 +1,63 @@ +; +; Ullrich von Bassewitz, 2004-04-04 +; +; CC65 runtime: Support for calling special irq routines declared as condes +; type 2. +; +; There are two reasons, why this is a separate routine, and the generic +; condes routine in condes.s is not used: +; +; 1. Speed. Having several things hardcoded makes it faster. This is +; important if it is called in each interrupt. +; +; 2. Reentrancy. The condes routines must use self modyfiying code, which +; means it is not reentrant. An IRQ using condes, that interrupts +; another use of condes will cause unpredicatble behaviour. The current +; code avoids this by using locking mechanisms, but it's complex and +; has a size and performance penalty. +; +; 3. Special semantics: An interruptor called by callirq must tell by +; setting or resetting the carry flag if the interrupt has been handled +; (which means that the interrupt is no longer active at the interrupt +; source). callirq will call no other interruptors if this happens. To +; simplify code, all interrupt routines will be called with carry clear +; on entry. +; +; As the normal condes routine, this one has the limitation of 127 table +; entries. +; + + .export callirq + .export callirq_y ; Same but with Y preloaded + + .import __INTERRUPTOR_TABLE__, __INTERRUPTOR_COUNT__ + +.code + +; -------------------------------------------------------------------------- +; Call all IRQ routines. The function needs to use self modifying code and +; is thereforce placed in the data segment. It will return carry set if the +; interrupt was handled and carry clear if not. The caller may choose to +; ignore this at will. +; NOTE: The routine must not be called if the table is empty! + +.data + +callirq: + ldy #.lobyte(__INTERRUPTOR_COUNT__*2) +callirq_y: + clc ; Preset carry flag +loop: dey + lda __INTERRUPTOR_TABLE__,y + sta jmpvec+2 ; Modify code below + dey + lda __INTERRUPTOR_TABLE__,y + sta jmpvec+1 ; Modify code below + sty index+1 ; Modify code below +jmpvec: jsr $FFFF ; Patched at runtime + bcs done ; Bail out if interrupt handled +index: ldy #$FF ; Patched at runtime + bne loop +done: rts + + diff --git a/lib/runtime/callmain.s b/lib/runtime/callmain.s new file mode 100644 index 0000000..7e7b689 --- /dev/null +++ b/lib/runtime/callmain.s @@ -0,0 +1,40 @@ +; +; Ullrich von Bassewitz, 2003-03-07 +; +; Push arguments and call main() +; + + + .export callmain + .export __argc, __argv + + .import _main, pushax + +;--------------------------------------------------------------------------- +; Setup the stack for main(), then jump to it + +.proc callmain + + lda __argc + ldx __argc+1 + jsr pushax ; Push argc + + lda __argv + ldx __argv+1 + jsr pushax ; Push argv + + ldy #4 ; Argument size + jmp _main + +.endproc + +;--------------------------------------------------------------------------- +; Data + +.bss +__argc: .res 2 +__argv: .res 2 + + + + diff --git a/lib/runtime/compl.s b/lib/runtime/compl.s new file mode 100644 index 0000000..5e96263 --- /dev/null +++ b/lib/runtime/compl.s @@ -0,0 +1,17 @@ +; +; Ullrich von Bassewitz, 06.08.1998 +; +; CC65 runtime: integer complement +; + + .export complax + +complax: + eor #$FF ; Not A + pha + txa + eor #$FF ; Not X + tax + pla + rts + diff --git a/lib/runtime/condes.s b/lib/runtime/condes.s new file mode 100644 index 0000000..c94e412 --- /dev/null +++ b/lib/runtime/condes.s @@ -0,0 +1,84 @@ +; +; Ullrich von Bassewitz, 20.11.2000 +; +; CC65 runtime: Support for calling module constructors/destructors +; +; The condes routine must be called with the table address in a/x and the +; size of the table (which must not be zero!) in y. The current implementation +; limits the table size to 254 bytes (127 vectors) but this shouldn't be +; problem for now and may be changed later. +; +; libinit and libdone call condes with the predefined module constructor and +; destructor tables, they must be called from the platform specific startup +; code. + + + .export initlib, donelib, condes + + .import __CONSTRUCTOR_TABLE__, __CONSTRUCTOR_COUNT__ + .import __DESTRUCTOR_TABLE__, __DESTRUCTOR_COUNT__ + + .macpack cpu + +; -------------------------------------------------------------------------- +; Initialize library modules + +.segment "INIT" + +.proc initlib + + ldy #<(__CONSTRUCTOR_COUNT__*2) + beq exit + lda #<__CONSTRUCTOR_TABLE__ + ldx #>__CONSTRUCTOR_TABLE__ + jmp condes +exit: rts + +.endproc + + +; -------------------------------------------------------------------------- +; Cleanup library modules + +.code + +.proc donelib + + ldy #<(__DESTRUCTOR_COUNT__*2) + beq exit + lda #<__DESTRUCTOR_TABLE__ + ldx #>__DESTRUCTOR_TABLE__ + jmp condes +exit: rts + +.endproc + + +; -------------------------------------------------------------------------- +; Generic table call handler. The code uses self modifying code and goes +; into the data segment for this reason. +; NOTE: The routine must not be called if the table is empty! + +.data + +.proc condes + + sta fetch1+1 + stx fetch1+2 + sta fetch2+1 + stx fetch2+2 +loop: dey +fetch1: lda $FFFF,y ; Patched at runtime + sta jmpvec+2 + dey +fetch2: lda $FFFF,y ; Patched at runtime + sta jmpvec+1 + sty index+1 +jmpvec: jsr $FFFF ; Patched at runtime +index: ldy #$FF ; Patched at runtime + bne loop + rts + +.endproc + + diff --git a/lib/runtime/decax1.s b/lib/runtime/decax1.s new file mode 100644 index 0000000..7c6891a --- /dev/null +++ b/lib/runtime/decax1.s @@ -0,0 +1,18 @@ +; +; Ullrich von Bassewitz, 29.12.1999 +; +; CC65 runtime: Decrement ax by 1 +; + + .export decax1 + + .macpack generic + +.proc decax1 + + sub #1 + bcs @L9 + dex +@L9: rts + +.endproc diff --git a/lib/runtime/decax2.s b/lib/runtime/decax2.s new file mode 100644 index 0000000..f117063 --- /dev/null +++ b/lib/runtime/decax2.s @@ -0,0 +1,18 @@ +; +; Ullrich von Bassewitz, 29.12.1999 +; +; CC65 runtime: Decrement ax by 2 +; + + .export decax2 + + .macpack generic + +.proc decax2 + + sub #2 + bcs @L9 + dex +@L9: rts + +.endproc diff --git a/lib/runtime/decax3.s b/lib/runtime/decax3.s new file mode 100644 index 0000000..3a86d3f --- /dev/null +++ b/lib/runtime/decax3.s @@ -0,0 +1,18 @@ +; +; Ullrich von Bassewitz, 26.03.2001 +; +; CC65 runtime: Decrement ax by 3 +; + + .export decax3 + + .macpack generic + +.proc decax3 + + sub #3 + bcs @L9 + dex +@L9: rts + +.endproc diff --git a/lib/runtime/decax4.s b/lib/runtime/decax4.s new file mode 100644 index 0000000..57e5c7c --- /dev/null +++ b/lib/runtime/decax4.s @@ -0,0 +1,18 @@ +; +; Ullrich von Bassewitz, 26.03.2001 +; +; CC65 runtime: Decrement ax by 4 +; + + .export decax4 + + .macpack generic + +.proc decax4 + + sub #4 + bcs @L9 + dex +@L9: rts + +.endproc diff --git a/lib/runtime/decax5.s b/lib/runtime/decax5.s new file mode 100644 index 0000000..5b44bbb --- /dev/null +++ b/lib/runtime/decax5.s @@ -0,0 +1,18 @@ +; +; Ullrich von Bassewitz, 26.03.2001 +; +; CC65 runtime: Decrement ax by 5 +; + + .export decax5 + + .macpack generic + +.proc decax5 + + sub #5 + bcs @L9 + dex +@L9: rts + +.endproc diff --git a/lib/runtime/decax6.s b/lib/runtime/decax6.s new file mode 100644 index 0000000..0ca4de6 --- /dev/null +++ b/lib/runtime/decax6.s @@ -0,0 +1,18 @@ +; +; Ullrich von Bassewitz, 26.03.2001 +; +; CC65 runtime: Decrement ax by 6 +; + + .export decax6 + + .macpack generic + +.proc decax6 + + sub #6 + bcs @L9 + dex +@L9: rts + +.endproc diff --git a/lib/runtime/decax7.s b/lib/runtime/decax7.s new file mode 100644 index 0000000..17636b5 --- /dev/null +++ b/lib/runtime/decax7.s @@ -0,0 +1,18 @@ +; +; Ullrich von Bassewitz, 26.03.2001 +; +; CC65 runtime: Decrement ax by 7 +; + + .export decax7 + + .macpack generic + +.proc decax7 + + sub #7 + bcs @L9 + dex +@L9: rts + +.endproc diff --git a/lib/runtime/decax8.s b/lib/runtime/decax8.s new file mode 100644 index 0000000..abeb632 --- /dev/null +++ b/lib/runtime/decax8.s @@ -0,0 +1,18 @@ +; +; Ullrich von Bassewitz, 26.03.2001 +; +; CC65 runtime: Decrement ax by 8 +; + + .export decax8 + + .macpack generic + +.proc decax8 + + sub #8 + bcs @L9 + dex +@L9: rts + +.endproc diff --git a/lib/runtime/decaxy.s b/lib/runtime/decaxy.s new file mode 100644 index 0000000..ec2b9c7 --- /dev/null +++ b/lib/runtime/decaxy.s @@ -0,0 +1,21 @@ +; +; Ullrich von Bassewitz, 29.12.1999 +; +; CC65 runtime: Decrement ax by value in Y +; + + .export decaxy + .importzp tmp1 + + .macpack generic + +.proc decaxy + + sty tmp1 + sub tmp1 + bcs @L9 + dex +@L9: rts + +.endproc + diff --git a/lib/runtime/decsp1.s b/lib/runtime/decsp1.s new file mode 100644 index 0000000..ab31a49 --- /dev/null +++ b/lib/runtime/decsp1.s @@ -0,0 +1,23 @@ +; +; Ullrich von Bassewitz, 25.10.2000 +; +; CC65 runtime: Decrement the stackpointer by 1 +; + + .export decsp1 + .importzp sp + +.proc decsp1 + + ldy sp + bne @L1 + dec sp+1 +@L1: dec sp + rts + +.endproc + + + + + diff --git a/lib/runtime/decsp2.s b/lib/runtime/decsp2.s new file mode 100644 index 0000000..c92da4d --- /dev/null +++ b/lib/runtime/decsp2.s @@ -0,0 +1,27 @@ +; +; Ullrich von Bassewitz, 25.10.2000 +; +; CC65 runtime: Decrement the stackpointer by 2 +; + + .export decsp2 + .importzp sp + +.proc decsp2 + + lda sp + sec + sbc #2 + sta sp + bcc @L1 + rts + +@L1: dec sp+1 + rts + +.endproc + + + + + diff --git a/lib/runtime/decsp3.s b/lib/runtime/decsp3.s new file mode 100644 index 0000000..9401c3d --- /dev/null +++ b/lib/runtime/decsp3.s @@ -0,0 +1,27 @@ +; +; Ullrich von Bassewitz, 25.10.2000 +; +; CC65 runtime: Decrement the stackpointer by 3 +; + + .export decsp3 + .importzp sp + +.proc decsp3 + + lda sp + sec + sbc #3 + sta sp + bcc @L1 + rts + +@L1: dec sp+1 + rts + +.endproc + + + + + diff --git a/lib/runtime/decsp4.s b/lib/runtime/decsp4.s new file mode 100644 index 0000000..8513390 --- /dev/null +++ b/lib/runtime/decsp4.s @@ -0,0 +1,27 @@ +; +; Ullrich von Bassewitz, 25.10.2000 +; +; CC65 runtime: Decrement the stackpointer by 4 +; + + .export decsp4 + .importzp sp + +.proc decsp4 + + lda sp + sec + sbc #4 + sta sp + bcc @L1 + rts + +@L1: dec sp+1 + rts + +.endproc + + + + + diff --git a/lib/runtime/decsp5.s b/lib/runtime/decsp5.s new file mode 100644 index 0000000..0519bf4 --- /dev/null +++ b/lib/runtime/decsp5.s @@ -0,0 +1,27 @@ +; +; Ullrich von Bassewitz, 25.10.2000 +; +; CC65 runtime: Decrement the stackpointer by 5 +; + + .export decsp5 + .importzp sp + +.proc decsp5 + + lda sp + sec + sbc #5 + sta sp + bcc @L1 + rts + +@L1: dec sp+1 + rts + +.endproc + + + + + diff --git a/lib/runtime/decsp6.s b/lib/runtime/decsp6.s new file mode 100644 index 0000000..31d6ec9 --- /dev/null +++ b/lib/runtime/decsp6.s @@ -0,0 +1,27 @@ +; +; Ullrich von Bassewitz, 25.10.2000 +; +; CC65 runtime: Decrement the stackpointer by 6 +; + + .export decsp6 + .importzp sp + +.proc decsp6 + + lda sp + sec + sbc #6 + sta sp + bcc @L1 + rts + +@L1: dec sp+1 + rts + +.endproc + + + + + diff --git a/lib/runtime/decsp7.s b/lib/runtime/decsp7.s new file mode 100644 index 0000000..249b00b --- /dev/null +++ b/lib/runtime/decsp7.s @@ -0,0 +1,25 @@ +; +; Ullrich von Bassewitz, 25.10.2000 +; +; CC65 runtime: Decrement the stackpointer by 7 +; + + .export decsp7 + .importzp sp + +.proc decsp7 + + lda sp + sec + sbc #7 + sta sp + bcc @L1 + rts + +@L1: dec sp+1 + rts + +.endproc + + + diff --git a/lib/runtime/decsp8.s b/lib/runtime/decsp8.s new file mode 100644 index 0000000..0c0c8fe --- /dev/null +++ b/lib/runtime/decsp8.s @@ -0,0 +1,27 @@ +; +; Ullrich von Bassewitz, 25.10.2000 +; +; CC65 runtime: Decrement the stackpointer by 8 +; + + .export decsp8 + .importzp sp + +.proc decsp8 + + lda sp + sec + sbc #8 + sta sp + bcc @L1 + rts + +@L1: dec sp+1 + rts + +.endproc + + + + + diff --git a/lib/runtime/div.s b/lib/runtime/div.s new file mode 100644 index 0000000..e419ded --- /dev/null +++ b/lib/runtime/div.s @@ -0,0 +1,37 @@ +; +; Ullrich von Bassewitz, 07.08.1998 +; +; CC65 runtime: division for signed ints +; + +; When negating values, we will ignore the possibility here, that one of the +; values if $8000, in which case the negate will fail. + + .export tosdiva0, tosdivax + .import popsargs, udiv16, negax + .importzp sreg, tmp1, tmp2 + +tosdiva0: + ldx #0 +tosdivax: + jsr popsargs ; Get arguments from stack, adjust sign + jsr udiv16 ; Do the division + ldx sreg+1 ; Load high byte of result + +; Adjust the sign of the result. tmp1 contains the high byte of the left +; operand, tmp2 contains the high byte of the right operand. + + lda tmp1 + eor tmp2 + bpl Pos ; Jump if sign of result positive + +; Result is negative + + lda sreg ; Load low byte of result + jmp negax ; Adjust the sign + +; Result is positive + +Pos: lda sreg + rts + diff --git a/lib/runtime/enter.s b/lib/runtime/enter.s new file mode 100644 index 0000000..a246d5e --- /dev/null +++ b/lib/runtime/enter.s @@ -0,0 +1,18 @@ +; +; Ullrich von Bassewitz, 06.08.1998 +; +; CC65 runtime: function prologue +; + + .export enter + .importzp sp + +enter: tya ; get arg size + ldy sp + bne L1 + dec sp+1 +L1: dec sp + ldy #0 + sta (sp),y ; Store the arg count + rts + diff --git a/lib/runtime/eq.s b/lib/runtime/eq.s new file mode 100644 index 0000000..28e5205 --- /dev/null +++ b/lib/runtime/eq.s @@ -0,0 +1,17 @@ +; +; Ullrich von Bassewitz, 06.08.1998 +; +; CC65 runtime: Compare == for ints +; + + .export toseq00, toseqa0, toseqax + .import tosicmp, booleq + .importzp sp, tmp1 + +toseq00: + lda #$00 +toseqa0: + ldx #$00 +toseqax: + jsr tosicmp ; Set flags + jmp booleq ; Convert to boolean diff --git a/lib/runtime/ge.s b/lib/runtime/ge.s new file mode 100644 index 0000000..17d4bb9 --- /dev/null +++ b/lib/runtime/ge.s @@ -0,0 +1,17 @@ +; +; Ullrich von Bassewitz, 06.08.1998 +; +; CC65 runtime: Compare >= for signed ints +; + + .export tosge00, tosgea0, tosgeax + .import tosicmp, boolge + + +tosge00: + lda #$00 +tosgea0: + ldx #$00 +tosgeax: + jsr tosicmp ; Set flags + jmp boolge ; Convert to boolean diff --git a/lib/runtime/gt.s b/lib/runtime/gt.s new file mode 100644 index 0000000..b6ba7b6 --- /dev/null +++ b/lib/runtime/gt.s @@ -0,0 +1,18 @@ +; +; Ullrich von Bassewitz, 06.08.1998 +; +; CC65 runtime: Compare > for signed ints +; + + .export tosgt00, tosgta0, tosgtax + .import tosicmp, boolgt + + +tosgt00: + lda #$00 +tosgta0: + ldx #$00 +tosgtax: + jsr tosicmp ; Set the flags + jmp boolgt ; Convert to boolean + diff --git a/lib/runtime/icmp.s b/lib/runtime/icmp.s new file mode 100644 index 0000000..70bcb76 --- /dev/null +++ b/lib/runtime/icmp.s @@ -0,0 +1,47 @@ +; +; Piotr Fusik, 15.04.2002 +; originally by Ullrich von Bassewitz +; +; Integer compare function - used by the compare operators +; + + .export tosicmp, tosicmp0 + .importzp sp, sreg + + +tosicmp0: + ldx #$00 + +tosicmp: + sta sreg + stx sreg+1 ; Save ax + + ldy #$00 + lda (sp),y ; Get low byte + tax + inc sp ; 5 + bne @L1 ; 3 + inc sp+1 ; (5) +@L1: + lda (sp),y ; Get high byte + inc sp ; 5 + bne @L2 ; 3 + inc sp+1 ; (5) + +; Do the compare. + +@L2: sec + sbc sreg+1 ; Compare high byte + bne @L4 + cpx sreg ; Compare low byte + beq @L3 + adc #$FF ; If the C flag is set then clear the N flag + ora #$01 ; else set the N flag +@L3: rts + +@L4: bvc @L3 + eor #$FF ; Fix the N flag if overflow + ora #$01 ; Clear the Z flag + rts + + diff --git a/lib/runtime/incax1.s b/lib/runtime/incax1.s new file mode 100644 index 0000000..2d57b39 --- /dev/null +++ b/lib/runtime/incax1.s @@ -0,0 +1,24 @@ +; +; Ullrich von Bassewitz, 05.08.1998 +; +; CC65 runtime: Increment ax by 1 +; + + .export incax1 + + .macpack generic + .macpack cpu + +.proc incax1 + +.if (.cpu .bitand ::CPU_ISET_65SC02) + ina ; 65C02 version + bne @L9 +.else + add #1 + bcc @L9 +.endif + inx +@L9: rts + +.endproc diff --git a/lib/runtime/incax2.s b/lib/runtime/incax2.s new file mode 100644 index 0000000..9525171 --- /dev/null +++ b/lib/runtime/incax2.s @@ -0,0 +1,18 @@ +; +; Ullrich von Bassewitz, 05.08.1998 +; +; CC65 runtime: Increment ax by 2 +; + + .export incax2 + + .macpack generic + +.proc incax2 + + add #2 + bcc @L9 + inx +@L9: rts + +.endproc diff --git a/lib/runtime/incax3.s b/lib/runtime/incax3.s new file mode 100644 index 0000000..e06b913 --- /dev/null +++ b/lib/runtime/incax3.s @@ -0,0 +1,16 @@ +; +; Ullrich von Bassewitz, 05.08.1998 +; +; CC65 runtime: Increment ax by 3 +; + + .export incax3 + .import incaxy + +.proc incax3 + + ldy #3 + jmp incaxy + +.endproc + diff --git a/lib/runtime/incax5.s b/lib/runtime/incax5.s new file mode 100644 index 0000000..ae9e063 --- /dev/null +++ b/lib/runtime/incax5.s @@ -0,0 +1,16 @@ +; +; Ullrich von Bassewitz, 05.08.1998 +; +; CC65 runtime: Increment ax by 5 +; + + .export incax5 + .import incaxy + +.proc incax5 + + ldy #5 + jmp incaxy + +.endproc + diff --git a/lib/runtime/incax6.s b/lib/runtime/incax6.s new file mode 100644 index 0000000..5f80d36 --- /dev/null +++ b/lib/runtime/incax6.s @@ -0,0 +1,16 @@ +; +; Ullrich von Bassewitz, 05.08.1998 +; +; CC65 runtime: Increment ax by 6 +; + + .export incax6 + .import incaxy + +.proc incax6 + + ldy #6 + jmp incaxy + +.endproc + diff --git a/lib/runtime/incax7.s b/lib/runtime/incax7.s new file mode 100644 index 0000000..ed883c3 --- /dev/null +++ b/lib/runtime/incax7.s @@ -0,0 +1,16 @@ +; +; Ullrich von Bassewitz, 05.08.1998 +; +; CC65 runtime: Increment ax by 7 +; + + .export incax7 + .import incaxy + +.proc incax7 + + ldy #7 + jmp incaxy + +.endproc + diff --git a/lib/runtime/incax8.s b/lib/runtime/incax8.s new file mode 100644 index 0000000..ae1e526 --- /dev/null +++ b/lib/runtime/incax8.s @@ -0,0 +1,16 @@ +; +; Ullrich von Bassewitz, 05.08.1998 +; +; CC65 runtime: Increment ax by 8 +; + + .export incax8 + .import incaxy + +.proc incax8 + + ldy #8 + jmp incaxy + +.endproc + diff --git a/lib/runtime/incaxy.s b/lib/runtime/incaxy.s new file mode 100644 index 0000000..feed956 --- /dev/null +++ b/lib/runtime/incaxy.s @@ -0,0 +1,17 @@ +; +; Ullrich von Bassewitz, 05.08.1998 +; +; CC65 runtime: Increment ax by valie in y +; + + .export incaxy, incax4 + .importzp tmp1 + .macpack generic + +incax4: ldy #4 +incaxy: sty tmp1 + add tmp1 + bcc @L9 + inx +@L9: rts + diff --git a/lib/runtime/incsp1.s b/lib/runtime/incsp1.s new file mode 100644 index 0000000..a85092d --- /dev/null +++ b/lib/runtime/incsp1.s @@ -0,0 +1,22 @@ +; +; Ullrich von Bassewitz, 25.10.2000 +; +; CC65 runtime: Increment the stackpointer by 1 +; + + .export incsp1 + .importzp sp + +.proc incsp1 + + inc sp + bne @L1 + inc sp+1 +@L1: rts + +.endproc + + + + + diff --git a/lib/runtime/incsp2.s b/lib/runtime/incsp2.s new file mode 100644 index 0000000..639f8a4 --- /dev/null +++ b/lib/runtime/incsp2.s @@ -0,0 +1,47 @@ +; +; Ullrich von Bassewitz, 25.10.2000 +; +; CC65 runtime: Increment the stackpointer by 2. For performance reasons, +; this modules does also contain the popax function. + + .export popax, incsp2 + .importzp sp + + .macpack cpu + +; Pop a/x from stack. This function will run directly into incsp2 + +.proc popax + + ldy #1 + lda (sp),y ; get hi byte + tax ; into x +.if (.cpu .bitand ::CPU_ISET_65SC02) + lda (sp) ; get lo byte +.else + dey + lda (sp),y ; get lo byte +.endif + +.endproc + + + +.proc incsp2 + + inc sp ; 5 + beq @L1 ; 2 + inc sp ; 5 + beq @L2 ; 2 + rts + +@L1: inc sp ; 5 +@L2: inc sp+1 ; 5 + rts + +.endproc + + + + + diff --git a/lib/runtime/incsp3.s b/lib/runtime/incsp3.s new file mode 100644 index 0000000..90dca0b --- /dev/null +++ b/lib/runtime/incsp3.s @@ -0,0 +1,20 @@ +; +; Ullrich von Bassewitz, 25.10.2000 +; +; CC65 runtime: Increment the stackpointer by 3 +; + + .export incsp3 + .import addysp + +.proc incsp3 + + ldy #3 + jmp addysp + +.endproc + + + + + diff --git a/lib/runtime/incsp4.s b/lib/runtime/incsp4.s new file mode 100644 index 0000000..125c533 --- /dev/null +++ b/lib/runtime/incsp4.s @@ -0,0 +1,20 @@ +; +; Ullrich von Bassewitz, 25.10.2000 +; +; CC65 runtime: Increment the stackpointer by 4 +; + + .export incsp4 + .import addysp + +.proc incsp4 + + ldy #4 + jmp addysp + +.endproc + + + + + diff --git a/lib/runtime/incsp5.s b/lib/runtime/incsp5.s new file mode 100644 index 0000000..df239cf --- /dev/null +++ b/lib/runtime/incsp5.s @@ -0,0 +1,20 @@ +; +; Ullrich von Bassewitz, 25.10.2000 +; +; CC65 runtime: Increment the stackpointer by 5 +; + + .export incsp5 + .import addysp + +.proc incsp5 + + ldy #5 + jmp addysp + +.endproc + + + + + diff --git a/lib/runtime/incsp6.s b/lib/runtime/incsp6.s new file mode 100644 index 0000000..a7ab932 --- /dev/null +++ b/lib/runtime/incsp6.s @@ -0,0 +1,20 @@ +; +; Ullrich von Bassewitz, 25.10.2000 +; +; CC65 runtime: Increment the stackpointer by 6 +; + + .export incsp6 + .import addysp + +.proc incsp6 + + ldy #6 + jmp addysp + +.endproc + + + + + diff --git a/lib/runtime/incsp7.s b/lib/runtime/incsp7.s new file mode 100644 index 0000000..417700f --- /dev/null +++ b/lib/runtime/incsp7.s @@ -0,0 +1,20 @@ +; +; Ullrich von Bassewitz, 25.10.2000 +; +; CC65 runtime: Increment the stackpointer by 7 +; + + .export incsp7 + .import addysp + +.proc incsp7 + + ldy #7 + jmp addysp + +.endproc + + + + + diff --git a/lib/runtime/incsp8.s b/lib/runtime/incsp8.s new file mode 100644 index 0000000..3ec1520 --- /dev/null +++ b/lib/runtime/incsp8.s @@ -0,0 +1,17 @@ +; +; Ullrich von Bassewitz, 25.10.2000 +; +; CC65 runtime: Increment the stackpointer by 8 +; + + .export incsp8 + .import addysp + +.proc incsp8 + + ldy #8 + jmp addysp + +.endproc + + diff --git a/lib/runtime/jmpvec.s b/lib/runtime/jmpvec.s new file mode 100644 index 0000000..6ae8715 --- /dev/null +++ b/lib/runtime/jmpvec.s @@ -0,0 +1,14 @@ +; +; Ullrich von Bassewitz, 2002-12-26 +; +; CC65 runtime: Jump vector that resides in the data segment so it's address +; may be patched at runtime. +; + + .export jmpvec + +.data + +jmpvec: jmp $FFFF + + diff --git a/lib/runtime/ladd.s b/lib/runtime/ladd.s new file mode 100644 index 0000000..4e864c7 --- /dev/null +++ b/lib/runtime/ladd.s @@ -0,0 +1,44 @@ +; +; Ullrich von Bassewitz, 05.08.1998 +; +; CC65 runtime: long add +; + + .export tosadd0ax, tosaddeax + .import addysp1 + .importzp sp, sreg, tmp1 + + .macpack cpu + +; EAX = TOS + EAX + +tosadd0ax: + ldy #$00 + sty sreg + sty sreg+1 + +tosaddeax: + clc +.if (.cpu .bitand CPU_ISET_65SC02) + adc (sp) ; 65SC02 version - saves 2 cycles + ldy #1 +.else + ldy #0 + adc (sp),y ; lo byte + iny +.endif + sta tmp1 ; use as temp storage + txa + adc (sp),y ; byte 1 + tax + iny + lda sreg + adc (sp),y ; byte 2 + sta sreg + iny + lda sreg+1 + adc (sp),y ; byte 3 + sta sreg+1 + lda tmp1 ; load byte 0 + jmp addysp1 ; drop TOS + diff --git a/lib/runtime/laddeq.s b/lib/runtime/laddeq.s new file mode 100644 index 0000000..6478017 --- /dev/null +++ b/lib/runtime/laddeq.s @@ -0,0 +1,53 @@ +; +; Ullrich von Bassewitz, 07.04.2000 +; +; CC65 runtime: += operator +; +; On entry, the low byte of the address of the variable to increment is +; in ptr1, the high byte is in Y, and the increment is in eax. +; + + .export laddeq1, laddeqa, laddeq + .importzp sreg, ptr1, tmp1 + + +laddeq1: + lda #$01 + +laddeqa: + ldx #$00 + stx sreg + stx sreg+1 + +laddeq: sty ptr1+1 ; Store high byte of address + ldy #$00 ; Address low byte + clc + + adc (ptr1),y + sta (ptr1),y + pha ; Save byte 0 of result for later + + iny ; Address byte 1 + txa + adc (ptr1),y ; Load byte 1 + sta (ptr1),y + tax + + iny ; Address byte 2 + lda sreg + adc (ptr1),y + sta (ptr1),y + sta sreg + + iny ; Address byte 3 + lda sreg+1 + adc (ptr1),y + sta (ptr1),y + sta sreg+1 + + pla ; Retrieve byte 0 of result + + rts ; Done + + + diff --git a/lib/runtime/laddeqsp.s b/lib/runtime/laddeqsp.s new file mode 100644 index 0000000..e5a1f04 --- /dev/null +++ b/lib/runtime/laddeqsp.s @@ -0,0 +1,34 @@ +; +; Ullrich von Bassewitz, 08.10.1998 +; +; CC65 runtime: += operator for longs on the stack +; + + .export laddeq0sp, laddeqysp + .importzp sp, sreg + +laddeq0sp: + ldy #0 +laddeqysp: + clc + adc (sp),y + sta (sp),y + pha + iny + txa + adc (sp),y + sta (sp),y + tax + iny + lda sreg + adc (sp),y + sta (sp),y + sta sreg + iny + lda sreg+1 + adc (sp),y + sta (sp),y + sta sreg+1 + pla + rts + diff --git a/lib/runtime/land.s b/lib/runtime/land.s new file mode 100644 index 0000000..1e66039 --- /dev/null +++ b/lib/runtime/land.s @@ -0,0 +1,36 @@ +; +; Ullrich von Bassewitz, 06.08.1998 +; +; CC65 runtime: and on longs +; + + .export tosand0ax, tosandeax + .import addysp1 + .importzp sp, sreg, tmp1 + + +tosand0ax: + ldy #$00 + sty sreg + sty sreg+1 + +tosandeax: + ldy #0 + and (sp),y ; byte 0 + sta tmp1 + iny + txa + and (sp),y ; byte 1 + tax + iny + lda sreg + and (sp),y ; byte 2 + sta sreg + iny + lda sreg+1 + and (sp),y ; byte 3 + sta sreg+1 + + lda tmp1 + jmp addysp1 + diff --git a/lib/runtime/lasr.s b/lib/runtime/lasr.s new file mode 100644 index 0000000..c96f1e1 --- /dev/null +++ b/lib/runtime/lasr.s @@ -0,0 +1,44 @@ +; +; Ullrich von Bassewitz, 2004-06-30 +; +; CC65 runtime: right shift support for longs +; +; Note: The standard declares a shift count that is negative or >= the +; bitcount of the shifted type for undefined behaviour. +; +; Note^2: The compiler knowns about the register/zero page usage of this +; function, so you need to change the compiler source if you change it! +; + + + .export tosasreax + .import popeax + .importzp sreg, tmp1 + + +tosasreax: + and #$1F ; Bring the shift count into a valid range + sta tmp1 ; Save it + + jsr popeax ; Get the left hand operand + + ldy tmp1 ; Get shift count + beq L9 ; Bail out if shift count zero + stx tmp1 ; Save byte 1 + ldx sreg+1 ; Load byte 3 + +; Do the actual shift. Faster solutions are possible but need a lot more code. + +L2: cpx #$80 ; Copy bit 31 into the carry + ror sreg+1 + ror sreg + ror tmp1 + ror a + dey + bne L2 + +; Shift done + + ldx tmp1 +L9: rts + diff --git a/lib/runtime/lbneg.s b/lib/runtime/lbneg.s new file mode 100644 index 0000000..ca737e4 --- /dev/null +++ b/lib/runtime/lbneg.s @@ -0,0 +1,22 @@ +; +; Ullrich von Bassewitz, 06.08.1998 +; +; CC65 runtime: boolean negation for longs +; + + .export bnegeax + .importzp sreg, tmp1 + +bnegeax: + stx tmp1 + ldx #0 ; High byte of result + ora tmp1 + ora sreg + ora sreg+1 + bne @L0 + lda #1 + rts + +@L0: txa ; X is zero + rts + diff --git a/lib/runtime/lcmp.s b/lib/runtime/lcmp.s new file mode 100644 index 0000000..4e50aa5 --- /dev/null +++ b/lib/runtime/lcmp.s @@ -0,0 +1,56 @@ +; +; Piotr Fusik, 15.04.2002 +; originally by Ullrich von Bassewitz +; +; Long int compare function - used by the compare operators +; + + .export toslcmp + .import incsp4 + .importzp sp, sreg, ptr1 + + +toslcmp: + sta ptr1 + stx ptr1+1 ; EAX now in sreg:ptr1 + + ldy #$03 + lda (sp),y + sec + sbc sreg+1 + bne L4 + + dey + lda (sp),y + cmp sreg + bne L1 + + dey + lda (sp),y + cmp ptr1+1 + bne L1 + + dey + lda (sp),y + cmp ptr1 + +L1: php ; Save flags + jsr incsp4 ; Drop TOS + plp ; Restore the flags + beq L2 + bcs L3 + lda #$FF ; Set the N flag +L2: rts + +L3: lda #$01 ; Clear the N flag + rts + +L4: bvc L5 + eor #$FF ; Fix the N flag if overflow + ora #$01 ; Clear the Z flag +L5: php ; Save flags + jsr incsp4 ; Drop TOS + plp ; Restore flags + rts + + diff --git a/lib/runtime/lcompl.s b/lib/runtime/lcompl.s new file mode 100644 index 0000000..fff31d9 --- /dev/null +++ b/lib/runtime/lcompl.s @@ -0,0 +1,26 @@ +; +; Ullrich von Bassewitz, 06.08.1998 +; +; CC65 runtime: long complement +; + + .export compleax + .importzp sreg + +; eax = ~eax + +compleax: + eor #$FF + pha + txa + eor #$FF + tax + lda sreg + eor #$FF + sta sreg + lda sreg+1 + eor #$FF + sta sreg+1 + pla + rts + diff --git a/lib/runtime/ldai.s b/lib/runtime/ldai.s new file mode 100644 index 0000000..ec3a996 --- /dev/null +++ b/lib/runtime/ldai.s @@ -0,0 +1,19 @@ +; +; Ullrich von Bassewitz, 31.08.1998 +; +; CC65 runtime: Load a indirect from address in ax +; + + .export ldaidx + .importzp ptr1 + +.proc ldaidx + sta ptr1 + stx ptr1+1 + ldx #$00 + lda (ptr1),y + bpl @L1 + dex +@L1: rts +.endproc + diff --git a/lib/runtime/ldau0sp.s b/lib/runtime/ldau0sp.s new file mode 100644 index 0000000..0be99d3 --- /dev/null +++ b/lib/runtime/ldau0sp.s @@ -0,0 +1,27 @@ +; +; Ullrich von Bassewitz, 11.04.1999 +; +; CC65 runtime: Load an unsigned char indirect from pointer somewhere in stack +; + + .export ldau00sp, ldau0ysp + .importzp sp, ptr1 + + .macpack cpu + +ldau00sp: + ldy #1 +ldau0ysp: + lda (sp),y + sta ptr1+1 + dey + lda (sp),y + sta ptr1 + ldx #0 +.if (.cpu .bitand CPU_ISET_65SC02) + lda (ptr1) ; Save one cycle for the C02 +.else + lda (ptr1,x) +.endif + rts + diff --git a/lib/runtime/ldaui.s b/lib/runtime/ldaui.s new file mode 100644 index 0000000..b84783d --- /dev/null +++ b/lib/runtime/ldaui.s @@ -0,0 +1,16 @@ +; +; Ullrich von Bassewitz, 31.08.1998 +; +; CC65 runtime: Load a unsigned indirect from address in ax +; + + .export ldauidx + .importzp ptr1 + +.proc ldauidx + sta ptr1 + stx ptr1+1 + ldx #0 + lda (ptr1),y + rts +.endproc diff --git a/lib/runtime/ldauisp.s b/lib/runtime/ldauisp.s new file mode 100644 index 0000000..7e15329 --- /dev/null +++ b/lib/runtime/ldauisp.s @@ -0,0 +1,24 @@ +; +; Ullrich von Bassewitz, 11.04.1999 +; +; CC65 runtime: Load an unsigned char indirect from pointer somewhere in stack +; + + .export ldaui0sp, ldauiysp + .importzp sp, ptr1 + +ldaui0sp: + ldy #1 +ldauiysp: + lda (sp),y + sta ptr1+1 + dey + lda (sp),y + sta ptr1 + txa + tay + ldx #0 + lda (ptr1),y + rts + + diff --git a/lib/runtime/ldaxi.s b/lib/runtime/ldaxi.s new file mode 100644 index 0000000..a03c610 --- /dev/null +++ b/lib/runtime/ldaxi.s @@ -0,0 +1,19 @@ +; +; Ullrich von Bassewitz, 31.08.1998 +; +; CC65 runtime: Load ax indirect from address in ax +; + + .export ldaxi, ldaxidx + .importzp ptr1 + +ldaxi: ldy #1 +ldaxidx: + sta ptr1 + stx ptr1+1 + lda (ptr1),y + tax + dey + lda (ptr1),y + rts + diff --git a/lib/runtime/ldaxsp.s b/lib/runtime/ldaxsp.s new file mode 100644 index 0000000..0f1a2c8 --- /dev/null +++ b/lib/runtime/ldaxsp.s @@ -0,0 +1,20 @@ +; +; Ullrich von Bassewitz, 31.08.1998 +; +; CC65 runtime: Load ax from offset in stack +; + + .export ldax0sp, ldaxysp + .importzp sp + +; Beware: The optimizer knows about the value in Y after return! + +ldax0sp: + ldy #1 +ldaxysp: + lda (sp),y ; get high byte + tax ; and save it + dey ; point to lo byte + lda (sp),y ; load low byte + rts + diff --git a/lib/runtime/ldeaxi.s b/lib/runtime/ldeaxi.s new file mode 100644 index 0000000..a1f9e64 --- /dev/null +++ b/lib/runtime/ldeaxi.s @@ -0,0 +1,25 @@ +; +; Ullrich von Bassewitz, 31.08.1998 +; +; CC65 runtime: Load eax indirect from address in ax +; + + .export ldeaxidx, ldeaxi + .importzp sreg, ptr1 + +ldeaxi: ldy #3 +ldeaxidx: + sta ptr1 + stx ptr1+1 + lda (ptr1),y + dey + sta sreg+1 + lda (ptr1),y + dey + sta sreg + lda (ptr1),y + dey + tax + lda (ptr1),y + rts + diff --git a/lib/runtime/ldeaxysp.s b/lib/runtime/ldeaxysp.s new file mode 100644 index 0000000..cf15f3f --- /dev/null +++ b/lib/runtime/ldeaxysp.s @@ -0,0 +1,28 @@ +; +; Ullrich von Bassewitz, 22.06.1998 +; +; CC65 runtime: Load a long from somewhere in the stack +; +; Beware: The optimizer knows about the register contents after calling +; this function! +; + + + .export ldeax0sp, ldeaxysp + .importzp sreg, sp + +ldeax0sp: + ldy #3 +ldeaxysp: + lda (sp),y + sta sreg+1 + dey + lda (sp),y + sta sreg + dey + lda (sp),y + tax + dey + lda (sp),y + rts + diff --git a/lib/runtime/ldec.s b/lib/runtime/ldec.s new file mode 100644 index 0000000..a87323e --- /dev/null +++ b/lib/runtime/ldec.s @@ -0,0 +1,26 @@ +; +; Ullrich von Bassewitz, 29.12.1999 +; +; CC65 runtime: Decrement eax by value in Y +; + + .export deceaxy + .importzp sreg, tmp1 + +deceaxy: + sty tmp1 + sec + sbc tmp1 + sta tmp1 + txa + sbc #0 + tax + lda sreg + sbc #0 + sta sreg + lda sreg+1 + sbc #0 + sta sreg+1 + lda tmp1 + rts + diff --git a/lib/runtime/ldiv.s b/lib/runtime/ldiv.s new file mode 100644 index 0000000..3d8dda0 --- /dev/null +++ b/lib/runtime/ldiv.s @@ -0,0 +1,40 @@ +; +; Ullrich von Bassewitz, 17.08.1998 +; +; CC65 runtime: division for signed long ints +; + +; When negating values, we will ignore the possibility here, that one of the +; values if $80000000, in which case the negate will fail. + + .export tosdiv0ax, tosdiveax + .import poplsargs, udiv32, negeax + .importzp sreg, ptr1, tmp1, tmp2 + +tosdiv0ax: + ldy #$00 + sty sreg + sty sreg+1 + +tosdiveax: + jsr poplsargs ; Get arguments from stack, adjust sign + jsr udiv32 ; Do the division, result is in (ptr1:sreg) + ldx ptr1+1 ; Load byte 1 of result + +; Adjust the sign of the result + + lda tmp1 ; Get sign of left operand + eor tmp2 ; Calculate sign of result + bpl Pos ; Jump if result positive + +; Result is negative + + lda ptr1 ; Load byte 0 + jmp negeax ; Negate value + +; Result is positive + +Pos: lda ptr1 + rts + + diff --git a/lib/runtime/le.s b/lib/runtime/le.s new file mode 100644 index 0000000..a615b3f --- /dev/null +++ b/lib/runtime/le.s @@ -0,0 +1,17 @@ +; +; Ullrich von Bassewitz, 06.08.1998 +; +; CC65 runtime: Compare <= for signed ints +; + + .export tosle00, toslea0, tosleax + .import tosicmp, boolle + +tosle00: + lda #$00 +toslea0: + ldx #$00 +tosleax: + jsr tosicmp ; Set flags + jmp boolle ; Convert to boolean + diff --git a/lib/runtime/leaaxsp.s b/lib/runtime/leaaxsp.s new file mode 100644 index 0000000..2a92cf0 --- /dev/null +++ b/lib/runtime/leaaxsp.s @@ -0,0 +1,23 @@ +; +; Ullrich von Bassewitz, 2009-08-31 +; +; CC65 runtime: Load effective address with offset in A/X relative to SP +; + + .export leaaxsp, leaa0sp + .importzp sp + +leaa0sp: + ldx #$00 +leaaxsp: + clc + adc sp + pha + txa + adc sp+1 + tax + pla + rts + + + diff --git a/lib/runtime/leave.s b/lib/runtime/leave.s new file mode 100644 index 0000000..4846b9e --- /dev/null +++ b/lib/runtime/leave.s @@ -0,0 +1,37 @@ +; +; Ullrich von Bassewitz, 06.08.1998 +; +; CC65 runtime: function epilogue +; + +; exit a function. pop stack and rts. The function comes in different +; flavours that provide default values for the return val, or drop a local +; stack frame with size in y. + + .export leave00, leave0, leavey00, leavey0, leavey + .export leave + .import addysp + .importzp sp + +leave00: + lda #0 +leave0: ldx #0 + beq leave + +leavey00: + lda #0 ; "return 0" +leavey0: + ldx #0 ; return < 256 +leavey: + jsr addysp ; drop stack frame +leave: pha ; save A a sec + ldy #0 + lda (sp),y ; that's the pushed arg size + sec ; Count the byte, the count's stored in + adc sp + sta sp + bcc L1 + inc sp+1 +L1: pla ; Get return value back + rts + diff --git a/lib/runtime/leq.s b/lib/runtime/leq.s new file mode 100644 index 0000000..6349caf --- /dev/null +++ b/lib/runtime/leq.s @@ -0,0 +1,15 @@ +; +; Ullrich von Bassewitz, 05.08.1998 +; +; CC65 runtime: long equal +; + + .export toseqeax + .import toslcmp, booleq + +toseqeax: + jsr toslcmp ; Set flags + jmp booleq ; Convert to boolean + + + diff --git a/lib/runtime/lge.s b/lib/runtime/lge.s new file mode 100644 index 0000000..1e4df32 --- /dev/null +++ b/lib/runtime/lge.s @@ -0,0 +1,13 @@ +; +; Ullrich von Bassewitz, 07.08.1998 +; +; CC65 runtime: Compare >= for long ints +; + + .export tosgeeax + .import toslcmp, boolge + +tosgeeax: + jsr toslcmp ; Set the flags + jmp boolge ; Convert to boolean + diff --git a/lib/runtime/lgt.s b/lib/runtime/lgt.s new file mode 100644 index 0000000..aa71570 --- /dev/null +++ b/lib/runtime/lgt.s @@ -0,0 +1,14 @@ +; +; Ullrich von Bassewitz, 07.08.1998 +; +; CC65 runtime: Compare > for long ints +; + + .export tosgteax + .import toslcmp, boolgt + +tosgteax: + jsr toslcmp ; Set the flags + jmp boolgt ; Convert to boolean + + diff --git a/lib/runtime/linc.s b/lib/runtime/linc.s new file mode 100644 index 0000000..aff3758 --- /dev/null +++ b/lib/runtime/linc.s @@ -0,0 +1,24 @@ +; +; Ullrich von Bassewitz, 29.12.1999 +; +; CC65 runtime: Increment eax by value in Y +; + + .export inceaxy + .importzp ptr4, sreg + +.proc inceaxy + + sty ptr4 + clc + adc ptr4 + bcc @L9 + inx + bne @L9 + inc sreg + bne @L9 + inc sreg+1 +@L9: rts + +.endproc + diff --git a/lib/runtime/lle.s b/lib/runtime/lle.s new file mode 100644 index 0000000..6f11e03 --- /dev/null +++ b/lib/runtime/lle.s @@ -0,0 +1,13 @@ +; +; Ullrich von Bassewitz, 07.08.1998 +; +; CC65 runtime: Compare <= for long ints +; + + .export tosleeax + .import toslcmp, boolle + +tosleeax: + jsr toslcmp ; Set the flags + jmp boolle ; Convert to boolean + diff --git a/lib/runtime/llt.s b/lib/runtime/llt.s new file mode 100644 index 0000000..5d5290d --- /dev/null +++ b/lib/runtime/llt.s @@ -0,0 +1,12 @@ +; +; Ullrich von Bassewitz, 07.08.1998 +; +; CC65 runtime: Compare < for long ints +; + + .export toslteax + .import toslcmp, boollt + +toslteax: + jsr toslcmp ; Set the flags + jmp boollt ; Convert to boolean diff --git a/lib/runtime/lmod.s b/lib/runtime/lmod.s new file mode 100644 index 0000000..89826ba --- /dev/null +++ b/lib/runtime/lmod.s @@ -0,0 +1,44 @@ +; +; Ullrich von Bassewitz, 07.08.1998 +; +; CC65 runtime: modulo operation for long signed ints +; + +; When negating values, we will ignore the possibility here, that one of the +; values if $8000, in which case the negate will fail. + + .export tosmod0ax, tosmodeax + .import poplsargs, udiv32, negeax + .importzp sreg, ptr1, ptr2, tmp1, tmp3, tmp4 + +tosmod0ax: + ldy #$00 + sty sreg + sty sreg+1 + +tosmodeax: + jsr poplsargs ; Get arguments from stack, adjust sign + jsr udiv32 ; Do the division, remainder is in (ptr2:tmp3:tmp4) + +; Load the result + + lda ptr2 + ldx ptr2+1 + ldy tmp3 + sty sreg + ldy tmp4 + sty sreg+1 + +; Check the sign of the result. It is the sign of the left operand. + + bit tmp1 ; Check sign of left operand + bpl Pos ; Jump if result is positive + +; Result is negative + + jmp negeax ; Negate result + +; Result is positive + +Pos: rts ; Done + diff --git a/lib/runtime/lmul.s b/lib/runtime/lmul.s new file mode 100644 index 0000000..44a46b5 --- /dev/null +++ b/lib/runtime/lmul.s @@ -0,0 +1,69 @@ +; +; Ullrich von Bassewitz, 13.08.1998 +; +; CC65 runtime: multiplication for long (unsigned) ints +; + + .export tosumul0ax, tosumuleax, tosmul0ax, tosmuleax + .import addysp1 + .importzp sp, sreg, tmp1, tmp2, tmp3, tmp4, ptr1, ptr3, ptr4 + +tosmul0ax: +tosumul0ax: + ldy #$00 + sty sreg + sty sreg+1 + +tosmuleax: +tosumuleax: +mul32: sta ptr1 + stx ptr1+1 ; op2 now in ptr1/sreg + ldy #0 + lda (sp),y + sta ptr3 + iny + lda (sp),y + sta ptr3+1 + iny + lda (sp),y + sta ptr4 + iny + lda (sp),y + sta ptr4+1 ; op1 in pre3/ptr4 + jsr addysp1 ; Drop TOS + +; Do (ptr1:sreg)*(ptr3:ptr4) --> EAX. + + lda #0 + sta tmp4 + sta tmp3 + sta tmp2 + ldy #32 +L0: lsr tmp4 + ror tmp3 + ror tmp2 + ror a + ror sreg+1 + ror sreg + ror ptr1+1 + ror ptr1 + bcc L1 + clc + adc ptr3 + pha + lda ptr3+1 + adc tmp2 + sta tmp2 + lda ptr4 + adc tmp3 + sta tmp3 + lda ptr4+1 + adc tmp4 + sta tmp4 + pla +L1: dey + bpl L0 + lda ptr1 ; Load the low result word + ldx ptr1+1 + rts + diff --git a/lib/runtime/lne.s b/lib/runtime/lne.s new file mode 100644 index 0000000..e0f0485 --- /dev/null +++ b/lib/runtime/lne.s @@ -0,0 +1,14 @@ +; +; Ullrich von Bassewitz, 05.08.1998 +; +; CC65 runtime: long not equal +; + + .export tosneeax + .import toslcmp, boolne + +tosneeax: + jsr toslcmp ; Set flags + jmp boolne ; Convert to boolean + + diff --git a/lib/runtime/lneg.s b/lib/runtime/lneg.s new file mode 100644 index 0000000..12b744b --- /dev/null +++ b/lib/runtime/lneg.s @@ -0,0 +1,31 @@ +; +; Ullrich von Bassewitz, 06.08.1998 +; +; CC65 runtime: negation on longs +; + +; +; eax = -eax +; + .export negeax + .importzp sreg + +negeax: clc + eor #$FF + adc #1 + pha + txa + eor #$FF + adc #0 + tax + lda sreg + eor #$FF + adc #0 + sta sreg + lda sreg+1 + eor #$FF + adc #0 + sta sreg+1 + pla + rts + diff --git a/lib/runtime/lor.s b/lib/runtime/lor.s new file mode 100644 index 0000000..841154b --- /dev/null +++ b/lib/runtime/lor.s @@ -0,0 +1,36 @@ +; +; Ullrich von Bassewitz, 06.08.1998 +; +; CC65 runtime: or on longs +; + + .export tosor0ax, tosoreax + .import addysp1 + .importzp sp, sreg, tmp1 + + +tosor0ax: + ldy #$00 + sty sreg + sty sreg+1 + +tosoreax: + ldy #0 + ora (sp),y ; byte 0 + sta tmp1 + iny + txa + ora (sp),y ; byte 1 + tax + iny + lda sreg + ora (sp),y ; byte 2 + sta sreg + iny + lda sreg+1 + ora (sp),y ; byte 3 + sta sreg+1 + + lda tmp1 + jmp addysp1 + diff --git a/lib/runtime/lpop.s b/lib/runtime/lpop.s new file mode 100644 index 0000000..ff0d59b --- /dev/null +++ b/lib/runtime/lpop.s @@ -0,0 +1,25 @@ +; +; Ullrich von Bassewitz, 29.12.1999 +; +; CC65 runtime: long pop +; + + .export popeax + .import incsp4 + .importzp sp, sreg + + +popeax: ldy #3 + lda (sp),y + sta sreg+1 + dey + lda (sp),y + sta sreg + dey + lda (sp),y + tax + dey + lda (sp),y + jmp incsp4 + + diff --git a/lib/runtime/lpush.s b/lib/runtime/lpush.s new file mode 100644 index 0000000..6b7312a --- /dev/null +++ b/lib/runtime/lpush.s @@ -0,0 +1,34 @@ +; +; Ullrich von Bassewitz, 06.08.1998 +; +; CC65 runtime: long push +; + +; +; push eax on stack +; + .export push0ax, pusheax + .import decsp4 + .importzp sp, sreg + +push0ax: + ldy #0 + sty sreg + sty sreg+1 +pusheax: + pha ; decsp will destroy A (but not X) + jsr decsp4 + ldy #3 + lda sreg+1 + sta (sp),y + dey + lda sreg + sta (sp),y + dey + txa + sta (sp),y + dey + pla + sta (sp),y + rts + diff --git a/lib/runtime/lrsub.s b/lib/runtime/lrsub.s new file mode 100644 index 0000000..7dfe43a --- /dev/null +++ b/lib/runtime/lrsub.s @@ -0,0 +1,38 @@ +; +; Ullrich von Bassewitz, 05.08.1998 +; +; CC65 runtime: long sub reversed +; + +; +; EAX = EAX - TOS +; + .export tosrsub0ax, tosrsubeax + .import addysp1 + .importzp sp, sreg, tmp1 + +tosrsub0ax: + ldy #$00 + sty sreg + sty sreg+1 + +tosrsubeax: + ldy #0 + sec + sbc (sp),y ; byte 0 + sta tmp1 ; use as temp storage + txa + iny + sbc (sp),y ; byte 1 + tax + iny + lda sreg + sbc (sp),y ; byte 2 + sta sreg + iny + lda sreg+1 + sbc (sp),y ; byte 3 + sta sreg+1 + lda tmp1 + jmp addysp1 ; drop TOS + diff --git a/lib/runtime/lsave.s b/lib/runtime/lsave.s new file mode 100644 index 0000000..e9ccfc3 --- /dev/null +++ b/lib/runtime/lsave.s @@ -0,0 +1,28 @@ +; +; Ullrich von Bassewitz, 08.08.1998 +; +; CC65 runtime: save ax into temp storage/restore ax from temp storage +; + + .export saveeax, resteax + .importzp sreg, regsave + +saveeax: + sta regsave + stx regsave+1 + lda sreg + sta regsave+2 + lda sreg+1 + sta regsave+3 + lda regsave + rts + +resteax: + lda regsave+3 + sta sreg+1 + lda regsave+2 + sta sreg + ldx regsave+1 + lda regsave + rts + diff --git a/lib/runtime/lshelp.s b/lib/runtime/lshelp.s new file mode 100644 index 0000000..a17f12f --- /dev/null +++ b/lib/runtime/lshelp.s @@ -0,0 +1,65 @@ +; +; Ullrich von Bassewitz, 13.08.1998 +; +; CC65 runtime: helper stuff for mod/div/mul with long signed ints +; + +; When negating values, we will ignore the possibility here, that one of the +; values if $80000000, in which case the negate will fail. + + .export poplsargs + .import getlop + .importzp sreg, tmp1, tmp2, ptr1, ptr3, ptr4 + +poplsargs: + jsr getlop ; Get the operands + +; Remember the signs of the operands (that is, the high bytes) in tmp1 and +; tmp2. Make both operands positive. + + lda sreg+1 ; Is the left operand negative? + sta tmp1 ; Remember the sign for later + bpl L1 ; Jump if not + + clc ; Make it positive + lda ptr1 + eor #$FF + adc #$01 + sta ptr1 + lda ptr1+1 + eor #$FF + adc #$00 + sta ptr1+1 + lda sreg + eor #$FF + adc #$00 + sta sreg + lda sreg+1 + eor #$FF + adc #$00 + sta sreg+1 + +L1: lda ptr4+1 ; Is the right operand nagative? + sta tmp2 ; Remember the sign for later + bpl L2 ; Jump if not + + clc ; Make it positive + lda ptr3 + eor #$FF + adc #$01 + sta ptr3 + lda ptr3+1 + eor #$FF + adc #$00 + sta ptr3+1 + lda ptr4 + eor #$FF + adc #$00 + sta ptr4 + lda ptr4+1 + eor #$FF + adc #$00 + sta ptr4+1 + +L2: rts + diff --git a/lib/runtime/lshl.s b/lib/runtime/lshl.s new file mode 100644 index 0000000..3c4e708 --- /dev/null +++ b/lib/runtime/lshl.s @@ -0,0 +1,44 @@ +; +; Ullrich von Bassewitz, 2004-06-30 +; +; CC65 runtime: left shift support for long and unsigned long +; +; Note: The standard declares a shift count that is negative or >= the +; bitcount of the shifted type for undefined behaviour. +; +; Note^2: The compiler knowns about the register/zero page usage of this +; function, so you need to change the compiler source if you change it! +; + + + .export tosasleax, tosshleax + .import popeax + .importzp sreg, tmp1 + + +tosshleax: +tosasleax: + and #$1F ; Bring the shift count into a valid range + sta tmp1 ; Save it + + jsr popeax ; Get the left hand operand + + ldy tmp1 ; Get shift count + beq L9 ; Bail out if shift count zero + stx tmp1 ; Save byte 1 + +; Do the actual shift. Faster solutions are possible but need a lot more code. + +L2: asl a + rol tmp1 + rol sreg + rol sreg+1 + dey + bne L2 + +; Shift done + + ldx tmp1 +L9: rts + + diff --git a/lib/runtime/lshr.s b/lib/runtime/lshr.s new file mode 100644 index 0000000..9c2a6e3 --- /dev/null +++ b/lib/runtime/lshr.s @@ -0,0 +1,48 @@ +; +; Ullrich von Bassewitz, 2004-06-30 +; +; CC65 runtime: right shift support for unsigned longs +; +; Note: The standard declares a shift count that is negative or >= the +; bitcount of the shifted type for undefined behaviour. +; +; Note^2: The compiler knowns about the register/zero page usage of this +; function, so you need to change the compiler source if you change it! +; + + + .export tosshreax + .import popeax + .importzp sreg, tmp1 + + +tosshreax: + and #$1F ; Bring the shift count into a valid range + sta tmp1 ; Save it + + jsr popeax ; Get the left hand operand + + ldy tmp1 ; Get shift count + beq L9 ; Bail out if shift count zero + stx tmp1 ; Save byte 1 + +; Do the actual shift. Faster solutions are possible but need a lot more code. + +L2: lsr sreg+1 + ror sreg + ror tmp1 + ror a + dey + bne L2 + +; Shift done + + ldx tmp1 +L9: rts + + + + + + + diff --git a/lib/runtime/lsub.s b/lib/runtime/lsub.s new file mode 100644 index 0000000..30ae49d --- /dev/null +++ b/lib/runtime/lsub.s @@ -0,0 +1,47 @@ +; +; Ullrich von Bassewitz, 05.08.1998 +; +; CC65 runtime: long sub +; + +; +; EAX = TOS - EAX +; + .export tossub0ax, tossubeax + .import addysp1 + .importzp sp, sreg + + .macpack cpu + +tossub0ax: + ldy #$00 + sty sreg + sty sreg+1 + +tossubeax: + sec + eor #$FF +.if (.cpu .bitand CPU_ISET_65SC02) + adc (sp) ; 65SC02 version - saves 2 cycles + ldy #1 +.else + ldy #0 + adc (sp),y ; lo byte + iny +.endif + pha ; Save low byte + txa + eor #$FF + adc (sp),y ; byte 1 + tax + iny + lda (sp),y + sbc sreg ; byte 2 + sta sreg + iny + lda (sp),y + sbc sreg+1 ; byte 3 + sta sreg+1 + pla ; Restore byte 0 + jmp addysp1 ; Drop TOS + diff --git a/lib/runtime/lsubeq.s b/lib/runtime/lsubeq.s new file mode 100644 index 0000000..acc6a28 --- /dev/null +++ b/lib/runtime/lsubeq.s @@ -0,0 +1,56 @@ +; +; Ullrich von Bassewitz, 07.04.2000 +; +; CC65 runtime: -= operator +; +; On entry, the low byte of the address of the variable to decrement is +; in ptr1, the high byte is in Y, and the decrement is in eax. +; + + .export lsubeq1, lsubeqa, lsubeq + .importzp sreg, ptr1 + + +lsubeq1: + lda #$01 + +lsubeqa: + ldx #$00 + stx sreg + stx sreg+1 + +lsubeq: sty ptr1+1 ; Store high byte of address + ldy #$00 ; Address low byte + sec + + eor #$FF + adc (ptr1),y ; Subtract byte 0 + sta (ptr1),y + pha ; Save byte 0 of result for later + + iny ; Address byte 1 + txa + eor #$FF + adc (ptr1),y ; Subtract byte 1 + sta (ptr1),y + tax + + iny ; Address byte 2 + lda (ptr1),y + sbc sreg + sta (ptr1),y + sta sreg + + iny ; Address byte 3 + lda (ptr1),y + sbc sreg+1 + sta (ptr1),y + sta sreg+1 + + pla ; Retrieve byte 0 of result + + rts ; Done + + + + diff --git a/lib/runtime/lsubeqsp.s b/lib/runtime/lsubeqsp.s new file mode 100644 index 0000000..c679c88 --- /dev/null +++ b/lib/runtime/lsubeqsp.s @@ -0,0 +1,36 @@ +; +; Ullrich von Bassewitz, 08.10.1998 +; +; CC65 runtime: -= operator for longs on the stack +; + + .export lsubeq0sp, lsubeqysp + .importzp sp, sreg + +lsubeq0sp: + ldy #0 +lsubeqysp: + sec + eor #$FF + adc (sp),y + sta (sp),y + pha ; Save low byte + iny + txa + eor #$FF + adc (sp),y + sta (sp),y + tax + iny + lda (sp),y + sbc sreg + sta (sp),y + sta sreg + iny + lda (sp),y + sbc sreg+1 + sta (sp),y + sta sreg+1 + pla + rts + diff --git a/lib/runtime/lt.s b/lib/runtime/lt.s new file mode 100644 index 0000000..1b681f5 --- /dev/null +++ b/lib/runtime/lt.s @@ -0,0 +1,17 @@ +; +; Ullrich von Bassewitz, 06.08.1998 +; +; CC65 runtime: Compare < for signed ints +; + + .export toslt00, toslta0, tosltax + .import tosicmp, boollt + +toslt00: + lda #$00 +toslta0: + ldx #$00 +tosltax: + jsr tosicmp ; Set flags + jmp boollt ; Convert to boolean + diff --git a/lib/runtime/ltest.s b/lib/runtime/ltest.s new file mode 100644 index 0000000..2c66300 --- /dev/null +++ b/lib/runtime/ltest.s @@ -0,0 +1,22 @@ +; +; Ullrich von Bassewitz, 07.08.1998 +; +; CC65 runtime: test long in eax +; + + .export utsteax, tsteax + .importzp sreg, tmp1 + +tsteax: +utsteax: + tay ; Save value + stx tmp1 + ora tmp1 + ora sreg + ora sreg+1 + beq L9 + tya + ldy #1 ; Force NE +L9: rts + + diff --git a/lib/runtime/ludiv.s b/lib/runtime/ludiv.s new file mode 100644 index 0000000..aa40a96 --- /dev/null +++ b/lib/runtime/ludiv.s @@ -0,0 +1,98 @@ +; +; Ullrich von Bassewitz, 17.08.1998 +; +; CC65 runtime: division for long unsigned ints +; + + .export tosudiv0ax, tosudiveax, getlop, udiv32 + .import addysp1 + .importzp sp, sreg, tmp3, tmp4, ptr1, ptr2, ptr3, ptr4 + +tosudiv0ax: + ldy #$00 + sty sreg + sty sreg+1 + +tosudiveax: + jsr getlop ; Get the paramameters + jsr udiv32 ; Do the division + lda ptr1 ; Result is in ptr1:sreg + ldx ptr1+1 + rts + +; Pop the parameters for the long division and put it into the relevant +; memory cells. Called from the signed divisions also. + +getlop: sta ptr3 ; Put right operand in place + stx ptr3+1 + lda sreg + sta ptr4 + lda sreg+1 + sta ptr4+1 + + ldy #0 ; Put left operand in place + lda (sp),y + sta ptr1 + iny + lda (sp),y + sta ptr1+1 + iny + lda (sp),y + sta sreg + iny + lda (sp),y + sta sreg+1 + jmp addysp1 ; Drop parameters + +; Do (ptr1:sreg) / (ptr3:ptr4) --> (ptr1:sreg), remainder in (ptr2:tmp3:tmp4) +; This is also the entry point for the signed division + +udiv32: lda #0 + sta ptr2+1 + sta tmp3 + sta tmp4 +; sta ptr1+1 + ldy #32 +L0: asl ptr1 + rol ptr1+1 + rol sreg + rol sreg+1 + rol a + rol ptr2+1 + rol tmp3 + rol tmp4 + +; Do a subtraction. we do not have enough space to store the intermediate +; result, so we may have to do the subtraction twice. + + pha + cmp ptr3 + lda ptr2+1 + sbc ptr3+1 + lda tmp3 + sbc ptr4 + lda tmp4 + sbc ptr4+1 + bcc L1 + +; Overflow, do the subtraction again, this time store the result + + sta tmp4 ; We have the high byte already + pla + sbc ptr3 ; byte 0 + pha + lda ptr2+1 + sbc ptr3+1 + sta ptr2+1 ; byte 1 + lda tmp3 + sbc ptr4 + sta tmp3 ; byte 2 + inc ptr1 ; Set result bit + +L1: pla + dey + bne L0 + sta ptr2 + rts + + diff --git a/lib/runtime/luge.s b/lib/runtime/luge.s new file mode 100644 index 0000000..541ff48 --- /dev/null +++ b/lib/runtime/luge.s @@ -0,0 +1,13 @@ +; +; Ullrich von Bassewitz, 10.12.1998 +; +; CC65 runtime: Compare >= for long unsigneds +; + + .export tosugeeax + .import toslcmp, booluge + +tosugeeax: + jsr toslcmp ; Set the flags + jmp booluge ; Convert to boolean + diff --git a/lib/runtime/lugt.s b/lib/runtime/lugt.s new file mode 100644 index 0000000..19cbcc0 --- /dev/null +++ b/lib/runtime/lugt.s @@ -0,0 +1,14 @@ +; +; Ullrich von Bassewitz, 10.12.1998 +; +; CC65 runtime: Compare > for long unsigneds +; + + .export tosugteax + .import toslcmp, boolugt + +tosugteax: + jsr toslcmp ; Set the flags + jmp boolugt ; Convert to boolean + + diff --git a/lib/runtime/lule.s b/lib/runtime/lule.s new file mode 100644 index 0000000..d898979 --- /dev/null +++ b/lib/runtime/lule.s @@ -0,0 +1,13 @@ +; +; Ullrich von Bassewitz, 10.12.1998 +; +; CC65 runtime: Compare <= for long unsigneds +; + + .export tosuleeax + .import toslcmp, boolule + +tosuleeax: + jsr toslcmp ; Set the flags + jmp boolule ; Convert to boolean + diff --git a/lib/runtime/lult.s b/lib/runtime/lult.s new file mode 100644 index 0000000..f13735e --- /dev/null +++ b/lib/runtime/lult.s @@ -0,0 +1,12 @@ +; +; Ullrich von Bassewitz, 10.12.1998 +; +; CC65 runtime: Compare < for long unsigneds +; + + .export tosulteax + .import toslcmp, boolult + +tosulteax: + jsr toslcmp ; Set the flags + jmp boolult ; Convert to boolean diff --git a/lib/runtime/lumod.s b/lib/runtime/lumod.s new file mode 100644 index 0000000..3128bc0 --- /dev/null +++ b/lib/runtime/lumod.s @@ -0,0 +1,26 @@ +; +; Ullrich von Bassewitz, 27.09.1998 +; +; CC65 runtime: modulo operation for long unsigned ints +; + + .export tosumod0ax, tosumodeax + .import getlop, udiv32 + .importzp sreg, tmp3, tmp4, ptr2 + +tosumod0ax: + ldy #$00 + sty sreg + sty sreg+1 + +tosumodeax: + jsr getlop ; Get the paramameters + jsr udiv32 ; Do the division + lda tmp3 ; Remainder is in ptr2:tmp3:tmp4 + sta sreg + lda tmp4 + sta sreg+1 + lda ptr2 + ldx ptr2+1 + rts + diff --git a/lib/runtime/lxor.s b/lib/runtime/lxor.s new file mode 100644 index 0000000..46086fb --- /dev/null +++ b/lib/runtime/lxor.s @@ -0,0 +1,37 @@ +; +; Ullrich von Bassewitz, 06.08.1998 +; +; CC65 runtime: xor on longs +; + + .export tosxor0ax, tosxoreax + .import addysp1 + .importzp sp, sreg, tmp1 + +tosxor0ax: + ldy #$00 + sty sreg + sty sreg+1 + +tosxoreax: + ldy #0 + eor (sp),y ; byte 0 + sta tmp1 + iny + txa + eor (sp),y ; byte 1 + tax + iny + lda sreg + eor (sp),y ; byte 2 + sta sreg + iny + lda sreg+1 + eor (sp),y ; byte 3 + sta sreg+1 + + lda tmp1 + jmp addysp1 + + + diff --git a/lib/runtime/makebool.s b/lib/runtime/makebool.s new file mode 100644 index 0000000..3429ff0 --- /dev/null +++ b/lib/runtime/makebool.s @@ -0,0 +1,60 @@ +; +; Ullrich von Bassewitz, 05.10.1998 +; +; CC65 runtime: Make boolean according to flags +; + + .export boolne, booleq, boollt, boolle, boolgt, boolge + .export boolult, boolule, boolugt, booluge + + +boolne: bne ret1 + ldx #$00 + txa + rts + + +booleq: beq ret1 + ldx #$00 + txa + rts + + +boolle: beq ret1 +boollt: bmi ret1 + ldx #$00 + txa + rts + + +boolgt: beq L0 +boolge: bpl ret1 +L0: ldx #$00 + txa + rts + + +boolule: + beq ret1 +boolult: + bcc ret1 + ldx #$00 + txa + rts + + +boolugt: + beq L1 +booluge: + bcs ret1 +L1: ldx #$00 + txa + rts + + +ret1: ldx #$00 + lda #$01 + rts + + + diff --git a/lib/runtime/mod.s b/lib/runtime/mod.s new file mode 100644 index 0000000..c5565a8 --- /dev/null +++ b/lib/runtime/mod.s @@ -0,0 +1,37 @@ +; +; Ullrich von Bassewitz, 07.08.1998 +; +; CC65 runtime: modulo operation for signed ints +; + +; When negating values, we will ignore the possibility here, that one of the +; values if $8000, in which case the negate will fail. + + .export tosmoda0, tosmodax + .import popsargs, udiv16, negax + .importzp ptr1, tmp1 + +tosmoda0: + ldx #0 +tosmodax: + jsr popsargs ; Get arguments from stack, adjust sign + jsr udiv16 ; Do the division + lda ptr1 ; Load low byte of result + ldx ptr1+1 ; Load high byte of result + +; Adjust the sign of the result. tmp1 contains the high byte of the left +; operand, tmp2 contains the high byte of the right operand. The sign of +; the result of the modulo operation is the same as that of the left +; operand + + bit tmp1 + bpl Pos ; Jump if sign of result positive + +; Result is negative + + jmp negax ; Adjust the sign + +; Result is positive + +Pos: rts + diff --git a/lib/runtime/mul.s b/lib/runtime/mul.s new file mode 100644 index 0000000..eaf1fb9 --- /dev/null +++ b/lib/runtime/mul.s @@ -0,0 +1,69 @@ +; +; Ullrich von Bassewitz, 2009-08-17 +; +; CC65 runtime: multiplication for ints +; + + .export tosumulax, tosmulax + .import mul8x16, mul8x16a ; in mul8.s + .import popsreg + .importzp sreg, tmp1, ptr4 + + +;--------------------------------------------------------------------------- +; 16x16 multiplication routine + +tosmulax: +tosumulax: + sta ptr4 + txa ; High byte zero + beq @L3 ; Do 8x16 multiplication if high byte zero + stx ptr4+1 ; Save right operand + jsr popsreg ; Get left operand + +; Do ptr4:ptr4+1 * sreg:sreg+1 --> AX + + lda #0 + ldx sreg+1 ; Get high byte into register for speed + beq @L4 ; -> we can do 8x16 after swap + sta tmp1 + ldy #16 ; Number of bits + + lsr ptr4+1 + ror ptr4 ; Get first bit into carry +@L0: bcc @L1 + + clc + adc sreg + pha + txa ; hi byte of left op + adc tmp1 + sta tmp1 + pla + +@L1: ror tmp1 + ror a + ror ptr4+1 + ror ptr4 + dey + bne @L0 + + lda ptr4 ; Load the result + ldx ptr4+1 + rts ; Done + +; High byte of rhs is zero, jump to the 8x16 routine instead + +@L3: jmp mul8x16 + +; If the high byte of rhs is zero, swap the operands and use the 8x16 +; routine. On entry, A and X are zero + +@L4: ldy sreg ; Save right operand (8 bit) + ldx ptr4 ; Copy left 16 bit operand to right + stx sreg + ldx ptr4+1 ; Don't store, this is done later + sty ptr4 ; Copy low 8 bit of right op to left + ldy #8 + jmp mul8x16a + diff --git a/lib/runtime/mul8.s b/lib/runtime/mul8.s new file mode 100644 index 0000000..3287e21 --- /dev/null +++ b/lib/runtime/mul8.s @@ -0,0 +1,63 @@ +; +; Ullrich von Bassewitz, 2009-08-17 +; +; CC65 runtime: multiplication for ints. Short versions. +; + + .export tosumula0, tosmula0 + .export mul8x16, mul8x16a + .import popsreg + .importzp sreg, ptr4 + + +;--------------------------------------------------------------------------- +; 8x16 routine with external entry points used by the 16x16 routine in mul.s + +tosmula0: +tosumula0: + sta ptr4 +mul8x16:jsr popsreg ; Get left operand + + lda #0 ; Clear byte 1 + ldy #8 ; Number of bits + ldx sreg+1 ; Get into register for speed + beq mul8x8 ; Do 8x8 multiplication if high byte zero +mul8x16a: + sta ptr4+1 ; Clear byte 2 + + lsr ptr4 ; Get first bit into carry +@L0: bcc @L1 + + clc + adc sreg + pha + txa ; hi byte of left op + adc ptr4+1 + sta ptr4+1 + pla + +@L1: ror ptr4+1 + ror a + ror ptr4 + dey + bne @L0 + tax + lda ptr4 ; Load the result + rts + +;--------------------------------------------------------------------------- +; 8x8 multiplication routine + +mul8x8: + lsr ptr4 ; Get first bit into carry +@L0: bcc @L1 + clc + adc sreg +@L1: ror + ror ptr4 + dey + bne @L0 + tax + lda ptr4 ; Load the result + rts ; Done + diff --git a/lib/runtime/mulax10.s b/lib/runtime/mulax10.s new file mode 100644 index 0000000..3fe250c --- /dev/null +++ b/lib/runtime/mulax10.s @@ -0,0 +1,32 @@ +; +; Piotr Fusik, 24.10.2003 +; originally by Ullrich von Bassewitz +; +; CC65 runtime: Multiply the primary register by 10 +; + + .export mulax10 + .importzp ptr1 + +.proc mulax10 + + sta ptr1 + stx ptr1+1 + asl a + rol ptr1+1 + asl a + rol ptr1+1 + clc + adc ptr1 + sta ptr1 + txa + adc ptr1+1 + asl ptr1 + rol a + tax + lda ptr1 + rts + +.endproc + + diff --git a/lib/runtime/mulax3.s b/lib/runtime/mulax3.s new file mode 100644 index 0000000..07625f8 --- /dev/null +++ b/lib/runtime/mulax3.s @@ -0,0 +1,27 @@ +; +; Ullrich von Bassewitz, 04.10.2001 +; +; CC65 runtime: Multiply the primary register +; + + .export mulax3 + .importzp ptr1 + +.proc mulax3 + + sta ptr1 + stx ptr1+1 + asl a + rol ptr1+1 + clc + adc ptr1 + pha + txa + adc ptr1+1 + tax + pla + rts + +.endproc + + diff --git a/lib/runtime/mulax5.s b/lib/runtime/mulax5.s new file mode 100644 index 0000000..dbfa9fc --- /dev/null +++ b/lib/runtime/mulax5.s @@ -0,0 +1,29 @@ +; +; Ullrich von Bassewitz, 04.10.2001 +; +; CC65 runtime: Multiply the primary register +; + + .export mulax5 + .importzp ptr1 + +.proc mulax5 + + sta ptr1 + stx ptr1+1 + asl a + rol ptr1+1 + asl a + rol ptr1+1 + clc + adc ptr1 + pha + txa + adc ptr1+1 + tax + pla + rts + +.endproc + + diff --git a/lib/runtime/mulax6.s b/lib/runtime/mulax6.s new file mode 100644 index 0000000..78aa85b --- /dev/null +++ b/lib/runtime/mulax6.s @@ -0,0 +1,30 @@ +; +; Piotr Fusik, 24.10.2003 +; originally by Ullrich von Bassewitz +; +; CC65 runtime: Multiply the primary register by 6 +; + + .export mulax6 + .importzp ptr1 + +.proc mulax6 + + sta ptr1 + stx ptr1+1 + asl a + rol ptr1+1 + clc + adc ptr1 + sta ptr1 + txa + adc ptr1+1 + asl ptr1 + rol a + tax + lda ptr1 + rts + +.endproc + + diff --git a/lib/runtime/mulax7.s b/lib/runtime/mulax7.s new file mode 100644 index 0000000..c9f7e47 --- /dev/null +++ b/lib/runtime/mulax7.s @@ -0,0 +1,33 @@ +; +; Piotr Fusik, 24.10.2003 +; originally by Ullrich von Bassewitz +; +; CC65 runtime: Multiply the primary register by 7 +; + + .export mulax7 + .importzp ptr1 + +.proc mulax7 + + sta ptr1 + stx ptr1+1 + asl a + rol ptr1+1 ; * 2 + asl a + rol ptr1+1 ; * 4 + asl a + rol ptr1+1 ; * 8 + sec + sbc ptr1 + pha + txa + eor #$ff + adc ptr1+1 ; * (8 - 1) + tax + pla + rts + +.endproc + + diff --git a/lib/runtime/mulax9.s b/lib/runtime/mulax9.s new file mode 100644 index 0000000..67a07b4 --- /dev/null +++ b/lib/runtime/mulax9.s @@ -0,0 +1,32 @@ +; +; Piotr Fusik, 24.10.2003 +; originally by Ullrich von Bassewitz +; +; CC65 runtime: Multiply the primary register by 9 +; + + .export mulax9 + .importzp ptr1 + +.proc mulax9 + + sta ptr1 + stx ptr1+1 + asl a + rol ptr1+1 ; * 2 + asl a + rol ptr1+1 ; * 4 + asl a + rol ptr1+1 ; * 8 + clc + adc ptr1 ; * (8+1) + pha + txa + adc ptr1+1 + tax + pla + rts + +.endproc + + diff --git a/lib/runtime/ne.s b/lib/runtime/ne.s new file mode 100644 index 0000000..ce9b817 --- /dev/null +++ b/lib/runtime/ne.s @@ -0,0 +1,18 @@ +; +; Ullrich von Bassewitz, 06.08.1998 +; +; CC65 runtime: Compare != for ints +; + + .export tosne00, tosnea0, tosneax + .import tosicmp, boolne + +tosne00: + lda #$00 +tosnea0: + ldx #$00 +tosneax: + jsr tosicmp ; Set flags + jmp boolne ; Convert to boolean + + diff --git a/lib/runtime/neg.s b/lib/runtime/neg.s new file mode 100644 index 0000000..62807c7 --- /dev/null +++ b/lib/runtime/neg.s @@ -0,0 +1,21 @@ +; +; Ullrich von Bassewitz, 05.08.1998 +; +; CC65 runtime: negation on ints +; + + .export negax + +negax: clc + eor #$FF + adc #1 + pha + txa + eor #$FF + adc #0 + tax + pla + rts + + + diff --git a/lib/runtime/or.s b/lib/runtime/or.s new file mode 100644 index 0000000..f953549 --- /dev/null +++ b/lib/runtime/or.s @@ -0,0 +1,23 @@ +; +; Ullrich von Bassewitz, 05.08.1998 +; +; CC65 runtime: or on ints +; + + .export tosora0, tosorax + .import addysp1 + .importzp sp, tmp1 + +tosora0: + ldx #$00 +tosorax: + ldy #0 + ora (sp),y + sta tmp1 + iny + txa + ora (sp),y + tax + lda tmp1 + jmp addysp1 ; drop TOS, set condition codes + diff --git a/lib/runtime/popa.s b/lib/runtime/popa.s new file mode 100644 index 0000000..0534b24 --- /dev/null +++ b/lib/runtime/popa.s @@ -0,0 +1,29 @@ +; +; Ullrich von Bassewitz, 25.10.2000 +; +; CC65 runtime: Pop a from stack +; + + .export popa + .importzp sp + + .macpack cpu + +.proc popa + +.if (.cpu .bitand ::CPU_ISET_65SC02) + lda (sp) +.else + ldy #0 ; (2) + lda (sp),y ; (7) Read byte +.endif + inc sp ; (12) + beq @L1 ; (14) + rts ; (20) + +@L1: inc sp+1 + rts + +.endproc + + diff --git a/lib/runtime/popsreg.s b/lib/runtime/popsreg.s new file mode 100644 index 0000000..80e4843 --- /dev/null +++ b/lib/runtime/popsreg.s @@ -0,0 +1,27 @@ +; +; Ullrich von Bassewitz, 1998-08-21, 2009-02-22 +; +; CC65 runtime: Pop TOS into sreg +; + + .export popsreg + .import incsp2 + .importzp sp, sreg + + .macpack cpu + +popsreg: + pha ; save A + ldy #1 + lda (sp),y ; get hi byte + sta sreg+1 ; store it +.if (.cpu .bitand ::CPU_ISET_65SC02) + lda (sp) ; get lo byte +.else + dey + lda (sp),y ; get lo byte +.endif + sta sreg ; store it + pla ; get A back + jmp incsp2 ; bump stack and return + diff --git a/lib/runtime/push1.s b/lib/runtime/push1.s new file mode 100644 index 0000000..d58509a --- /dev/null +++ b/lib/runtime/push1.s @@ -0,0 +1,19 @@ +; +; Ullrich von Bassewitz, 26.10.2000 +; +; CC65 runtime: Push (int)1 onto the stack +; + + .export push1 + .import pusha0 + +; Beware: The optimizer knows about this function! + +.proc push1 + + lda #1 + jmp pusha0 + +.endproc + + diff --git a/lib/runtime/push2.s b/lib/runtime/push2.s new file mode 100644 index 0000000..2bbf815 --- /dev/null +++ b/lib/runtime/push2.s @@ -0,0 +1,19 @@ +; +; Ullrich von Bassewitz, 26.10.2000 +; +; CC65 runtime: Push (int)2 onto the stack +; + + .export push2 + .import pusha0 + +; Beware: The optimizer knows about this function! + +.proc push2 + + lda #2 + jmp pusha0 + +.endproc + + diff --git a/lib/runtime/push3.s b/lib/runtime/push3.s new file mode 100644 index 0000000..d55d1e4 --- /dev/null +++ b/lib/runtime/push3.s @@ -0,0 +1,19 @@ +; +; Ullrich von Bassewitz, 26.10.2000 +; +; CC65 runtime: Push (int)3 onto the stack +; + + .export push3 + .import pusha0 + +; Beware: The optimizer knows about this function! + +.proc push3 + + lda #3 + jmp pusha0 + +.endproc + + diff --git a/lib/runtime/push4.s b/lib/runtime/push4.s new file mode 100644 index 0000000..0ceeeda --- /dev/null +++ b/lib/runtime/push4.s @@ -0,0 +1,19 @@ +; +; Ullrich von Bassewitz, 26.10.2000 +; +; CC65 runtime: Push (int)4 onto the stack +; + + .export push4 + .import pusha0 + +; Beware: The optimizer knows about this function! + +.proc push4 + + lda #4 + jmp pusha0 + +.endproc + + diff --git a/lib/runtime/push5.s b/lib/runtime/push5.s new file mode 100644 index 0000000..5834864 --- /dev/null +++ b/lib/runtime/push5.s @@ -0,0 +1,19 @@ +; +; Ullrich von Bassewitz, 26.10.2000 +; +; CC65 runtime: Push (int)5 onto the stack +; + + .export push5 + .import pusha0 + +; Beware: The optimizer knows about this function! + +.proc push5 + + lda #5 + jmp pusha0 + +.endproc + + diff --git a/lib/runtime/push6.s b/lib/runtime/push6.s new file mode 100644 index 0000000..7355aea --- /dev/null +++ b/lib/runtime/push6.s @@ -0,0 +1,19 @@ +; +; Ullrich von Bassewitz, 26.10.2000 +; +; CC65 runtime: Push (int)6 onto the stack +; + + .export push6 + .import pusha0 + +; Beware: The optimizer knows about this function! + +.proc push6 + + lda #6 + jmp pusha0 + +.endproc + + diff --git a/lib/runtime/push7.s b/lib/runtime/push7.s new file mode 100644 index 0000000..2dfc994 --- /dev/null +++ b/lib/runtime/push7.s @@ -0,0 +1,19 @@ +; +; Ullrich von Bassewitz, 26.10.2000 +; +; CC65 runtime: Push (int)7 onto the stack +; + + .export push7 + .import pusha0 + +; Beware: The optimizer knows about this function! + +.proc push7 + + lda #7 + jmp pusha0 + +.endproc + + diff --git a/lib/runtime/pusha.s b/lib/runtime/pusha.s new file mode 100644 index 0000000..c1f1e31 --- /dev/null +++ b/lib/runtime/pusha.s @@ -0,0 +1,33 @@ +; +; Ullrich von Bassewitz, 26.10.2000 +; +; CC65 runtime: Push value in a onto the stack +; + + .export pusha0sp, pushaysp, pusha + .importzp sp + + .macpack cpu + +; Beware: The optimizer knows about this function! + +pusha0sp: + ldy #$00 +pushaysp: + lda (sp),y +pusha: ldy sp ; (3) + beq @L1 ; (6) + dec sp ; (11) +.if (.cpu .bitand CPU_ISET_65SC02) + sta (sp) +.else + ldy #0 ; (13) + sta (sp),y ; (19) +.endif + rts ; (25) + +@L1: dec sp+1 ; (11) + dec sp ; (16) + sta (sp),y ; (22) + rts ; (28) + diff --git a/lib/runtime/pushaff.s b/lib/runtime/pushaff.s new file mode 100644 index 0000000..dd8dc87 --- /dev/null +++ b/lib/runtime/pushaff.s @@ -0,0 +1,20 @@ +; +; Ullrich von Bassewitz, 26.10.2000 +; +; CC65 runtime: Push a extended with FF onto the stack +; + + .export pushaFF + .import pushax + +; Beware: The optimizer knows about this function! + +.proc pushaFF + + ldx #$FF + jmp pushax + +.endproc + + + diff --git a/lib/runtime/pushax.s b/lib/runtime/pushax.s new file mode 100644 index 0000000..d9efe7c --- /dev/null +++ b/lib/runtime/pushax.s @@ -0,0 +1,35 @@ +; +; Ullrich von Bassewitz, 26.10.2000 +; +; CC65 runtime: Push value in a/x onto the stack +; + + .export push0, pusha0, pushax + .importzp sp + +push0: lda #0 +pusha0: ldx #0 + +; This function is used *a lot*, so don't call any subroutines here. +; Beware: The value in ax must not be changed by this function! +; Beware^2: The optimizer knows about the value of Y after the function +; returns! + +.proc pushax + + pha ; (3) + lda sp ; (6) + sec ; (8) + sbc #2 ; (10) + sta sp ; (13) + bcs @L1 ; (17) + dec sp+1 ; (+5) +@L1: ldy #1 ; (19) + txa ; (21) + sta (sp),y ; (27) + pla ; (31) + dey ; (33) + sta (sp),y ; (38) + rts ; (44) + +.endproc diff --git a/lib/runtime/pushb.s b/lib/runtime/pushb.s new file mode 100644 index 0000000..d32c1c9 --- /dev/null +++ b/lib/runtime/pushb.s @@ -0,0 +1,30 @@ +; +; Ullrich von Bassewitz, 31.08.1998 +; +; CC65 runtime: Push word from stack +; + + .export pushb, pushbidx + .import pushax + .importzp ptr1 + + .macpack cpu + +pushbidx: + sty ptr1 + clc + adc ptr1 + bcc pushb + inx +pushb: sta ptr1 + stx ptr1+1 + ldx #0 ; Load index/high byte +.if (.cpu .bitand CPU_ISET_65SC02) + lda (ptr1) ; Save one cycle for the C02 +.else + lda (ptr1,x) +.endif + bpl L1 + dex ; Make high byte FF +L1: jmp pushax + diff --git a/lib/runtime/pushbsp.s b/lib/runtime/pushbsp.s new file mode 100644 index 0000000..2ae0625 --- /dev/null +++ b/lib/runtime/pushbsp.s @@ -0,0 +1,17 @@ +; +; Ullrich von Bassewitz, 31.08.1998 +; +; CC65 runtime: Load a from stack slot and push as word +; + + .export pushbsp, pushbysp + .import pusha0 + .importzp sp + +pushbsp: + ldy #0 +pushbysp: + lda (sp),y ; get lo byte + jmp pusha0 ; promote to unsigned and push + + diff --git a/lib/runtime/pushc0.s b/lib/runtime/pushc0.s new file mode 100644 index 0000000..fd72064 --- /dev/null +++ b/lib/runtime/pushc0.s @@ -0,0 +1,19 @@ +; +; Ullrich von Bassewitz, 26.10.2000 +; +; CC65 runtime: Push (char)0 onto the stack +; + + .export pushc0 + .import pusha + +; Beware: The optimizer knows about this function! + +.proc pushc0 + + lda #0 + jmp pusha + +.endproc + + diff --git a/lib/runtime/pushc1.s b/lib/runtime/pushc1.s new file mode 100644 index 0000000..9997b56 --- /dev/null +++ b/lib/runtime/pushc1.s @@ -0,0 +1,19 @@ +; +; Ullrich von Bassewitz, 26.10.2000 +; +; CC65 runtime: Push (char)1 onto the stack +; + + .export pushc1 + .import pusha + +; Beware: The optimizer knows about this function! + +.proc pushc1 + + lda #1 + jmp pusha + +.endproc + + diff --git a/lib/runtime/pushc2.s b/lib/runtime/pushc2.s new file mode 100644 index 0000000..4539f30 --- /dev/null +++ b/lib/runtime/pushc2.s @@ -0,0 +1,19 @@ +; +; Ullrich von Bassewitz, 26.10.2000 +; +; CC65 runtime: Push (char)2 onto the stack +; + + .export pushc2 + .import pusha + +; Beware: The optimizer knows about this function! + +.proc pushc2 + + lda #2 + jmp pusha + +.endproc + + diff --git a/lib/runtime/pushlysp.s b/lib/runtime/pushlysp.s new file mode 100644 index 0000000..a91b9f7 --- /dev/null +++ b/lib/runtime/pushlysp.s @@ -0,0 +1,31 @@ +; +; Ullrich von Bassewitz, 22.06.1998 +; +; CC65 runtime: Push a long from somewhere in the stack +; + + + .export pushlysp + .import pusheax + .importzp sreg, sp + +.proc pushlysp + + iny + iny + lda (sp),y + iny + sta sreg + lda (sp),y + sta sreg+1 + dey + dey + lda (sp),y + dey + tax + lda (sp),y + jmp pusheax + +.endproc + + diff --git a/lib/runtime/pushw.s b/lib/runtime/pushw.s new file mode 100644 index 0000000..a88ebc3 --- /dev/null +++ b/lib/runtime/pushw.s @@ -0,0 +1,21 @@ +; +; Ullrich von Bassewitz, 31.08.1998 +; +; CC65 runtime: Fetch word indirect and push +; + + .export pushw, pushwidx + .import pushax + .importzp ptr1 + + +pushw: ldy #1 +pushwidx: + sta ptr1 + stx ptr1+1 + lda (ptr1),y + tax + dey + lda (ptr1),y + jmp pushax + diff --git a/lib/runtime/pushwsp.s b/lib/runtime/pushwsp.s new file mode 100644 index 0000000..6e97354 --- /dev/null +++ b/lib/runtime/pushwsp.s @@ -0,0 +1,31 @@ +; +; Ullrich von Bassewitz, 24.10.2001 +; +; CC65 runtime: Load word from stack slot and push +; + + .export pushwysp, pushw0sp + .importzp sp + + .macpack generic + +pushw0sp: + ldy #3 +pushwysp: + lda sp ; 3 + sub #2 ; 4 + sta sp ; 3 + bcs @L1 ; 3(+1) + dec sp+1 ; (5) +@L1: lda (sp),y ; 5 =16 + tax ; 2 + dey ; 2 + lda (sp),y ; 5 + ldy #$00 ; 2 + sta (sp),y ; 5 + iny ; 2 + txa ; 2 + sta (sp),y ; 5 + rts + + diff --git a/lib/runtime/regswap.s b/lib/runtime/regswap.s new file mode 100644 index 0000000..28e0441 --- /dev/null +++ b/lib/runtime/regswap.s @@ -0,0 +1,28 @@ +; +; Ullrich von Bassewitz, 25.11.2002 +; +; CC65 runtime: Swap x bytes of register variable space +; + + .export regswap + .importzp sp, regbank, tmp1 + +.proc regswap + + sta tmp1 ; Store count +@L1: lda regbank,x ; Get old value + pha ; Save it + lda (sp),y ; Get stack loc + sta regbank,x ; Store new value + pla + sta (sp),y ; Store old value + inx + iny + dec tmp1 + bne @L1 + + rts + +.endproc + + diff --git a/lib/runtime/regswap1.s b/lib/runtime/regswap1.s new file mode 100644 index 0000000..e2410f9 --- /dev/null +++ b/lib/runtime/regswap1.s @@ -0,0 +1,22 @@ +; +; Ullrich von Bassewitz, 25.11.2002 +; +; CC65 runtime: Swap 1 byte of register variable space +; + + .export regswap1 + .importzp sp, regbank + +.proc regswap1 + + lda regbank,x ; Get old value + pha ; Save it + lda (sp),y ; Get stack loc + sta regbank,x ; Store new value + pla + sta (sp),y ; Store old value + rts + +.endproc + + diff --git a/lib/runtime/regswap2.s b/lib/runtime/regswap2.s new file mode 100644 index 0000000..50eb6c2 --- /dev/null +++ b/lib/runtime/regswap2.s @@ -0,0 +1,35 @@ +; +; Ullrich von Bassewitz, 25.11.2002 +; +; CC65 runtime: Swap 2 bytes of register variable space +; + + .export regswap2 + .importzp sp, regbank + +.proc regswap2 + +; First byte + + lda regbank,x ; Get old value + pha ; Save it + lda (sp),y ; Get stack loc + sta regbank,x ; Store new value + pla + sta (sp),y ; Store old value + +; Second byte + + iny + lda regbank+1,x ; Get old value + pha ; Save it + lda (sp),y ; Get stack loc + sta regbank+1,x ; Store new value + pla + sta (sp),y ; Store old value + + rts + +.endproc + + diff --git a/lib/runtime/return0.s b/lib/runtime/return0.s new file mode 100644 index 0000000..37c2608 --- /dev/null +++ b/lib/runtime/return0.s @@ -0,0 +1,20 @@ +; +; Ullrich von Bassewitz, 25.10.2000 +; +; CC65 runtime: Return 0 in a/x +; + + .export return0 + +.proc return0 + + lda #0 + tax + rts + +.endproc + + + + + diff --git a/lib/runtime/return1.s b/lib/runtime/return1.s new file mode 100644 index 0000000..2987de3 --- /dev/null +++ b/lib/runtime/return1.s @@ -0,0 +1,20 @@ +; +; Ullrich von Bassewitz, 25.10.2000 +; +; CC65 runtime: Return 1 in a/x +; + + .export return1 + +.proc return1 + + ldx #0 + lda #1 + rts + +.endproc + + + + + diff --git a/lib/runtime/rsub.s b/lib/runtime/rsub.s new file mode 100644 index 0000000..2b722e0 --- /dev/null +++ b/lib/runtime/rsub.s @@ -0,0 +1,29 @@ +; +; Ullrich von Bassewitz, 05.08.1998 +; +; CC65 runtime: sub ints reversed +; + + .export tosrsuba0, tosrsubax + .import addysp1 + .importzp sp, tmp1 + +; +; AX = AX - TOS +; + +tosrsuba0: + ldx #0 +tosrsubax: + ldy #0 + sec + sbc (sp),y ; lo byte + sta tmp1 ; save lo byte + txa + iny + sbc (sp),y ; hi byte + tax + lda tmp1 + jmp addysp1 ; drop TOS, set condition codes + + diff --git a/lib/runtime/shelp.s b/lib/runtime/shelp.s new file mode 100644 index 0000000..d4f55b1 --- /dev/null +++ b/lib/runtime/shelp.s @@ -0,0 +1,30 @@ +; +; Ullrich von Bassewitz, 07.08.1998 +; +; CC65 runtime: helper stuff for mod/div/mul with signed ints +; + +; When negating values, we will ignore the possibility here, that one of the +; values if $8000, in which case the negate will fail. + + .export popsargs + .import negax, popax + .importzp sreg, tmp1, tmp2, ptr4 + +popsargs: + stx tmp2 ; Remember sign + cpx #0 + bpl L1 + jsr negax ; Negate accumulator +L1: sta ptr4 + stx ptr4+1 ; Save right operand + + jsr popax + stx tmp1 ; Remember sign + cpx #0 + bpl L2 + jsr negax +L2: sta sreg + stx sreg+1 + rts + diff --git a/lib/runtime/shl.s b/lib/runtime/shl.s new file mode 100644 index 0000000..1963abb --- /dev/null +++ b/lib/runtime/shl.s @@ -0,0 +1,58 @@ +; +; Ullrich von Bassewitz, 1998-08-05, 2004-06-25 +; +; CC65 runtime: left shift support for ints and unsigneds +; +; Note: The standard declares a shift count that is negative or >= the +; bitcount of the shifted type for undefined behaviour. +; +; Note^2: The compiler knowns about the register/zero page usage of this +; function, so you need to change the compiler source if you change it! +; + + + .export tosaslax, tosshlax + .import popax + .importzp tmp1 + +tosshlax: +tosaslax: + and #$0F ; Bring the shift count into a valid range + sta tmp1 ; Save it + + jsr popax ; Get the left hand operand + + ldy tmp1 ; Get shift count + beq L9 ; Bail out if shift count zero + + cpy #8 ; Shift count 8 or greater? + bcc L3 ; Jump if not + +; Shift count is greater 7. The carry is set when we enter here. + + tax + tya + sbc #8 + tay + txa + jmp L2 +L1: asl a +L2: dey + bpl L1 + tax + lda #$00 + rts + +; Shift count is less than 8. + +L3: stx tmp1 ; Save high byte of lhs +L4: asl a + rol tmp1 + dey + bne L4 + +; Done with shift + + ldx tmp1 +L9: rts + diff --git a/lib/runtime/shr.s b/lib/runtime/shr.s new file mode 100644 index 0000000..3b505e7 --- /dev/null +++ b/lib/runtime/shr.s @@ -0,0 +1,55 @@ +; +; Ullrich von Bassewitz, 2004-06-30 +; +; CC65 runtime: right shift support for unsigneds +; +; Note: The standard declares a shift count that is negative or >= the +; bitcount of the shifted type for undefined behaviour. +; +; Note^2: The compiler knowns about the register/zero page usage of this +; function, so you need to change the compiler source if you change it! +; + + + .export tosshrax + .import popax + .importzp tmp1 + +tosshrax: + and #$0F ; Bring the shift count into a valid range + sta tmp1 ; Save it + + jsr popax ; Get the left hand operand + + ldy tmp1 ; Get shift count + beq L9 ; Bail out if shift count zero + + cpy #8 ; Shift count 8 or greater? + bcc L3 ; Jump if not + +; Shift count is greater 7. The carry is set when we enter here. + + tya + sbc #8 + tay ; Adjust shift count + txa + ldx #$00 ; Shift by 8 bits + beq L2 ; Branch always +L1: lsr a +L2: dey + bpl L1 + rts + +; Shift count is less than 8. Do the actual shift. + +L3: stx tmp1 ; Save high byte of lhs +L4: lsr tmp1 + ror a + dey + bne L4 + +; Done with shift + + ldx tmp1 +L9: rts + diff --git a/lib/runtime/shrax1.s b/lib/runtime/shrax1.s new file mode 100644 index 0000000..f7b6b72 --- /dev/null +++ b/lib/runtime/shrax1.s @@ -0,0 +1,15 @@ +; +; Ullrich von Bassewitz, 06.08.1998 +; +; CC65 runtime: Scale the primary register +; + + .export shrax1 + .importzp tmp1 + +shrax1: stx tmp1 + lsr tmp1 + ror a + ldx tmp1 + rts + diff --git a/lib/runtime/shrax2.s b/lib/runtime/shrax2.s new file mode 100644 index 0000000..074ab8e --- /dev/null +++ b/lib/runtime/shrax2.s @@ -0,0 +1,18 @@ +; +; Ullrich von Bassewitz, 06.08.1998 +; +; CC65 runtime: Scale the primary register by 4 +; + + .export shrax2 + .importzp tmp1 + +shrax2: stx tmp1 + lsr tmp1 + ror a + lsr tmp1 + ror a + ldx tmp1 + rts + + diff --git a/lib/runtime/shrax3.s b/lib/runtime/shrax3.s new file mode 100644 index 0000000..07e1e1f --- /dev/null +++ b/lib/runtime/shrax3.s @@ -0,0 +1,20 @@ +; +; Ullrich von Bassewitz, 06.08.1998 +; +; CC65 runtime: Scale the primary register by 8 +; + + .export shrax3 + .importzp tmp1 + +shrax3: stx tmp1 + lsr tmp1 + ror a + lsr tmp1 + ror a + lsr tmp1 + ror a + ldx tmp1 + rts + + diff --git a/lib/runtime/shrax4.s b/lib/runtime/shrax4.s new file mode 100644 index 0000000..46589e2 --- /dev/null +++ b/lib/runtime/shrax4.s @@ -0,0 +1,22 @@ +; +; Ullrich von Bassewitz, 25.07.2001 +; +; CC65 runtime: Scale the primary register by 16 +; + + .export shrax4 + .importzp tmp1 + +shrax4: stx tmp1 + lsr tmp1 + ror a + lsr tmp1 + ror a + lsr tmp1 + ror a + lsr tmp1 + ror a + ldx tmp1 + rts + + diff --git a/lib/runtime/shreax1.s b/lib/runtime/shreax1.s new file mode 100644 index 0000000..f4d808f --- /dev/null +++ b/lib/runtime/shreax1.s @@ -0,0 +1,18 @@ +; +; Ullrich von Bassewitz, 06.08.1998 +; +; CC65 runtime: Scale the 32 bit primary register by 2 +; + + .export shreax1 + .importzp sreg, tmp1 + +shreax1: + stx tmp1 + lsr sreg+1 + ror sreg + ror tmp1 + ror a + ldx tmp1 + rts + diff --git a/lib/runtime/shreax2.s b/lib/runtime/shreax2.s new file mode 100644 index 0000000..1f2a23d --- /dev/null +++ b/lib/runtime/shreax2.s @@ -0,0 +1,22 @@ +; +; Ullrich von Bassewitz, 06.08.1998 +; +; CC65 runtime: Scale the 32 bit primary register by 4 +; + + .export shreax2 + .importzp sreg, tmp1 + +shreax2: + stx tmp1 + lsr sreg+1 + ror sreg + ror tmp1 + ror a + lsr sreg+1 + ror sreg + ror tmp1 + ror a + ldx tmp1 + rts + diff --git a/lib/runtime/shreax3.s b/lib/runtime/shreax3.s new file mode 100644 index 0000000..8111253 --- /dev/null +++ b/lib/runtime/shreax3.s @@ -0,0 +1,26 @@ +; +; Ullrich von Bassewitz, 06.08.1998 +; +; CC65 runtime: Scale the 32 bit primary register by 8 +; + + .export shreax3 + .importzp sreg, tmp1 + +shreax3: + stx tmp1 + lsr sreg+1 + ror sreg + ror tmp1 + ror a + lsr sreg+1 + ror sreg + ror tmp1 + ror a + lsr sreg+1 + ror sreg + ror tmp1 + ror a + ldx tmp1 + rts + diff --git a/lib/runtime/shreax4.s b/lib/runtime/shreax4.s new file mode 100644 index 0000000..8020592 --- /dev/null +++ b/lib/runtime/shreax4.s @@ -0,0 +1,21 @@ +; +; Ullrich von Bassewitz, 25.07.2001 +; +; CC65 runtime: Scale the 32 bit primary register by 16 +; + + .export shreax4 + .importzp sreg, tmp1 + +shreax4: + stx tmp1 + ldx #4 +@L1: lsr sreg+1 + ror sreg + ror tmp1 + ror a + dex + bne @L1 + ldx tmp1 + rts + diff --git a/lib/runtime/staspidx.s b/lib/runtime/staspidx.s new file mode 100644 index 0000000..c5e1440 --- /dev/null +++ b/lib/runtime/staspidx.s @@ -0,0 +1,28 @@ +; +; Ullrich von Bassewitz, 26.10.2000 +; +; CC65 runtime: Store a indirect into address at top of stack with index +; + + .export staspidx + .import incsp2 + .importzp sp, tmp1, ptr1 + +.proc staspidx + + pha + sty tmp1 ; Save Index + ldy #1 + lda (sp),y + sta ptr1+1 + dey + lda (sp),y + sta ptr1 ; Pointer now in ptr1 + ldy tmp1 ; Restore offset + pla ; Restore value + sta (ptr1),y ; Store + jmp incsp2 ; Drop address + +.endproc + + diff --git a/lib/runtime/staxsp.s b/lib/runtime/staxsp.s new file mode 100644 index 0000000..07828e3 --- /dev/null +++ b/lib/runtime/staxsp.s @@ -0,0 +1,20 @@ +; +; Ullrich von Bassewitz, 31.08.1998 +; +; CC65 runtime: Store ax at (sp),y +; + + .export staxysp, stax0sp + .importzp sp + +stax0sp: + ldy #0 +staxysp: + sta (sp),y + iny + pha + txa + sta (sp),y + pla + rts + diff --git a/lib/runtime/staxspi.s b/lib/runtime/staxspi.s new file mode 100644 index 0000000..1c4c011 --- /dev/null +++ b/lib/runtime/staxspi.s @@ -0,0 +1,32 @@ +; +; Ullrich von Bassewitz, 26.10.2000 +; +; CC65 runtime: Store a/x indirect into address at top of stack with index +; + + .export staxspidx + .import incsp2 + .importzp sp, tmp1, ptr1 + +.proc staxspidx + + sty tmp1 ; Save Y + pha ; Save A + ldy #1 + lda (sp),y + sta ptr1+1 + dey + lda (sp),y + sta ptr1 ; Address now in ptr1 + ldy tmp1 ; Restore Y + iny ; Address high byte + txa ; Get high byte + sta (ptr1),y ; Store high byte + dey ; Address low byte + pla ; Restore low byte into A + sta (ptr1),y ; Store low byte + jmp incsp2 ; Drop address + +.endproc + + diff --git a/lib/runtime/steaxsp.s b/lib/runtime/steaxsp.s new file mode 100644 index 0000000..de134e2 --- /dev/null +++ b/lib/runtime/steaxsp.s @@ -0,0 +1,27 @@ +; +; Ullrich von Bassewitz, 31.08.1998 +; +; CC65 runtime: Store eax at (sp),y +; + + .export steaxysp, steax0sp + .importzp sp, sreg + +steax0sp: + ldy #0 +steaxysp: + sta (sp),y + iny + pha + txa + sta (sp),y + iny + lda sreg + sta (sp),y + iny + lda sreg+1 + sta (sp),y + pla + rts + + diff --git a/lib/runtime/steaxspi.s b/lib/runtime/steaxspi.s new file mode 100644 index 0000000..ec1777e --- /dev/null +++ b/lib/runtime/steaxspi.s @@ -0,0 +1,39 @@ +; +; Ullrich von Bassewitz, 22.06.1998 +; +; CC65 runtime: Store eax at the address on top of stack with index +; + + + .export steaxspidx + .import popax + .importzp sreg, ptr1, tmp1, tmp2, tmp3 + + +.proc steaxspidx + + sta tmp1 + stx tmp2 + sty tmp3 + jsr popax ; get the pointer + sta ptr1 + stx ptr1+1 + ldy tmp3 + lda tmp1 + sta (ptr1),y + iny + lda tmp2 + sta (ptr1),y + iny + tax + lda sreg + sta (ptr1),y + iny + lda sreg+1 + sta (ptr1),y + lda tmp1 + rts + +.endproc + + diff --git a/lib/runtime/stkchk.s b/lib/runtime/stkchk.s new file mode 100644 index 0000000..ee0b714 --- /dev/null +++ b/lib/runtime/stkchk.s @@ -0,0 +1,114 @@ +; +; Ullrich von Bassewitz, 19.03.2001 +; +; Stack checking code. These are actually two routines, one to check the C +; stack, and the other one to check the 6502 hardware stack. +; For performance reasons (to avoid having to pass a parameter), the compiler +; calls the cstkchk routine *after* allocating space on the stack. So the +; stackpointer may already be invalid if this routine is called. In addition +; to that, pushs and pops that are needed for expression evaluation are not +; checked (this would be way too much overhead). As a consequence we will +; operate using a safety area at the stack bottom. Once the stack reaches this +; safety area, we consider it an overflow, even if the stack is still inside +; its' bounds. +; + + .export stkchk, cstkchk + .constructor initstkchk, 25 + .import __STACKSIZE__ ; Linker defined + .import pusha0, _exit + .importzp sp + + ; Use macros for better readability + .macpack generic + .macpack cpu + + +; ---------------------------------------------------------------------------- +; Initialization code. This is a constructor, so it is called on startup if +; the linker has detected references to this module. + +.segment "INIT" + +.proc initstkchk + + lda sp + sta initialsp + sub #<__STACKSIZE__ + sta lowwater + lda sp+1 + sta initialsp+1 + sbc #>__STACKSIZE__ +.if (.cpu .bitand ::CPU_ISET_65SC02) + ina ; Add 256 bytes safety area +.else + add #1 ; Add 256 bytes safety area +.endif + sta lowwater+1 + rts + +.endproc + +; ---------------------------------------------------------------------------- +; 6502 stack checking routine. Does not need to save any registers. +; Safety zone for the hardware stack is 12 bytes. + +.code + +stkchk: tsx + cpx #12 + bcc Fail ; Jump on stack overflow + rts ; Return if ok + +; ---------------------------------------------------------------------------- +; C stack checking routine. Does not need to save any registers. + +.code + +cstkchk: + +; Check the high byte of the software stack + +@L0: lda lowwater+1 + cmp sp+1 + bcs @L1 + rts + +; Check low byte + +@L1: bne CStackOverflow + lda lowwater + cmp sp + bcs CStackOverflow +Done: rts + +; We have a C stack overflow. Set the stack pointer to the initial value, so +; we can continue without worrying about stack issues. + +CStackOverflow: + lda initialsp + sta sp + lda initialsp+1 + sta sp+1 + +; Generic abort entry. We should output a diagnostic here, but this is +; difficult, since we're operating at a lower level here. + +Fail: lda #4 + ldx #0 + jmp _exit + +; ---------------------------------------------------------------------------- +; Data + +.bss + +; Initial stack pointer value. Stack is reset to this in case of overflows to +; allow program exit processing. +initialsp: .word 0 + +; Stack low water mark. +lowwater: .word 0 + + + diff --git a/lib/runtime/sub.s b/lib/runtime/sub.s new file mode 100644 index 0000000..c9d427e --- /dev/null +++ b/lib/runtime/sub.s @@ -0,0 +1,35 @@ +; +; Ullrich von Bassewitz, 05.08.1998 +; +; CC65 runtime: sub ints +; + + .export tossuba0, tossubax + .import addysp1 + .importzp sp + + .macpack cpu + +; AX = TOS - AX + +tossuba0: + ldx #0 +tossubax: + sec + eor #$FF +.if (.cpu .bitand CPU_ISET_65SC02) + adc (sp) + ldy #1 +.else + ldy #0 + adc (sp),y ; Subtract low byte + iny +.endif + pha ; Save high byte + txa + eor #$FF + adc (sp),y ; Subtract high byte + tax ; High byte into X + pla ; Restore low byte + jmp addysp1 ; drop TOS + diff --git a/lib/runtime/subeqsp.s b/lib/runtime/subeqsp.s new file mode 100644 index 0000000..8a2e3e3 --- /dev/null +++ b/lib/runtime/subeqsp.s @@ -0,0 +1,26 @@ +; +; Ullrich von Bassewitz, 08.10.1998 +; +; CC65 runtime: -= operator for ints on the stack +; + + .export subeq0sp, subeqysp + .importzp sp + +subeq0sp: + ldy #0 +subeqysp: + sec + eor #$FF + adc (sp),y + sta (sp),y + pha ; Save low byte + iny + txa + eor #$FF + adc (sp),y + sta (sp),y + tax + pla ; Restore low byte + rts + diff --git a/lib/runtime/subysp.s b/lib/runtime/subysp.s new file mode 100644 index 0000000..9d1a2c6 --- /dev/null +++ b/lib/runtime/subysp.s @@ -0,0 +1,24 @@ +; +; Piotr Fusik, 24.10.2003 +; originally by Ullrich von Bassewitz +; +; CC65 runtime: Decrement the stackpointer by value in y +; + + .export subysp + .importzp sp + +.proc subysp + + tya + eor #$ff + sec + adc sp + sta sp + bcs @L1 + dec sp+1 +@L1: rts + +.endproc + + diff --git a/lib/runtime/swap.s b/lib/runtime/swap.s new file mode 100644 index 0000000..e2f882f --- /dev/null +++ b/lib/runtime/swap.s @@ -0,0 +1,25 @@ +; +; Ullrich von Bassewitz, 06.08.1998 +; +; CC65 runtime: swap ax with TOS +; + + .export swapstk + .importzp sp, ptr4 + +swapstk: + sta ptr4 + stx ptr4+1 + ldy #1 ; index + lda (sp),y + tax + lda ptr4+1 + sta (sp),y + dey + lda (sp),y + pha + lda ptr4 + sta (sp),y + pla + rts ; whew! + diff --git a/lib/runtime/tosint.s b/lib/runtime/tosint.s new file mode 100644 index 0000000..d29fa2e --- /dev/null +++ b/lib/runtime/tosint.s @@ -0,0 +1,33 @@ +; +; Ullrich von Bassewitz, 25.10.2000 +; +; CC65 runtime: Convert tos from long to int +; + + .export tosint + .import incsp2 + .importzp sp + + .macpack cpu + +; Convert TOS from long to int by cutting of the high 16bit + +.proc tosint + + pha +.if (.cpu .bitand ::CPU_ISET_65SC02) + lda (sp) +.else + ldy #0 + lda (sp),y ; sp+1 +.endif + ldy #2 + sta (sp),y + dey + lda (sp),y + ldy #3 + sta (sp),y + pla + jmp incsp2 ; Drop 16 bit + +.endproc diff --git a/lib/runtime/toslong.s b/lib/runtime/toslong.s new file mode 100644 index 0000000..9bf66a3 --- /dev/null +++ b/lib/runtime/toslong.s @@ -0,0 +1,60 @@ +; +; Ullrich von Bassewitz, 25.10.2000 +; +; CC65 runtime: Convert tos from int to long +; + + .export tosulong, toslong + .import decsp2 + .importzp sp + + .macpack cpu + +; Convert TOS from int to long + +tosulong: + pha + jsr decsp2 ; Make room + ldy #2 + lda (sp),y +.if (.cpu .bitand CPU_ISET_65SC02) + sta (sp) ; 65C02 version + iny ; Y = 3 +.else + ldy #0 + sta (sp),y + ldy #3 +.endif + lda (sp),y +toslong1: + ldy #1 + sta (sp),y + lda #0 ; Zero extend +toslong2: + iny + sta (sp),y + iny + sta (sp),y + pla + rts + +toslong: + pha + jsr decsp2 ; Make room + ldy #2 + lda (sp),y +.if (.cpu .bitand CPU_ISET_65SC02) + sta (sp) ; 65C02 version + iny ; Y = 3 +.else + ldy #0 + sta (sp),y + ldy #3 +.endif + lda (sp),y + bpl toslong1 ; Jump if positive, high word is zero + ldy #1 + sta (sp),y + lda #$FF + bne toslong2 ; Branch always + diff --git a/lib/runtime/udiv.s b/lib/runtime/udiv.s new file mode 100644 index 0000000..e667af0 --- /dev/null +++ b/lib/runtime/udiv.s @@ -0,0 +1,82 @@ +; +; Ullrich von Bassewitz, 07.08.1998 +; +; CC65 runtime: division for unsigned ints +; + + .export tosudiva0, tosudivax, udiv16 + .import popsreg + .importzp sreg, ptr1, ptr4 + + +tosudiva0: + ldx #$00 ; Clear high byte +tosudivax: + sta ptr4 + stx ptr4+1 ; Save right operand + jsr popsreg ; Get left operand + +; Do the division + + jsr udiv16 + +; Result is in sreg, remainder in ptr1 + + lda sreg + ldx sreg+1 + rts + +;--------------------------------------------------------------------------- +; 16by16 division. Divide sreg by ptr4. Result is in sreg, remainder in ptr1 +; (see mult-div.s from "The Fridge"). +; This is also the entry point for the signed division + +udiv16: lda #0 + sta ptr1+1 + ldy #16 + ldx ptr4+1 + beq udiv16by8a + +L0: asl sreg + rol sreg+1 + rol a + rol ptr1+1 + + pha + cmp ptr4 + lda ptr1+1 + sbc ptr4+1 + bcc L1 + + sta ptr1+1 + pla + sbc ptr4 + pha + inc sreg + +L1: pla + dey + bne L0 + sta ptr1 + rts + + +;--------------------------------------------------------------------------- +; 16by8 division + +udiv16by8a: +@L0: asl sreg + rol sreg+1 + rol a + bcs @L1 + + cmp ptr4 + bcc @L2 +@L1: sbc ptr4 + inc sreg + +@L2: dey + bne @L0 + sta ptr1 + rts + diff --git a/lib/runtime/uge.s b/lib/runtime/uge.s new file mode 100644 index 0000000..96e9497 --- /dev/null +++ b/lib/runtime/uge.s @@ -0,0 +1,20 @@ +; +; Ullrich von Bassewitz, 06.08.1998 +; +; CC65 runtime: Compare >= for unsigned ints +; + + .export tosuge00, tosugea0, tosugeax + .import tosicmp, booluge + + +tosuge00: + lda #$00 +tosugea0: + ldx #$00 +tosugeax: + jsr tosicmp ; Set flags + jmp booluge ; Convert to boolean + + + diff --git a/lib/runtime/ugt.s b/lib/runtime/ugt.s new file mode 100644 index 0000000..a8befbf --- /dev/null +++ b/lib/runtime/ugt.s @@ -0,0 +1,18 @@ +; +; Ullrich von Bassewitz, 06.08.1998 +; +; CC65 runtime: Compare > for unsigned ints +; + + .export tosugt00, tosugta0, tosugtax + .import tosicmp, boolugt + + +tosugt00: + lda #$00 +tosugta0: + ldx #$00 +tosugtax: + jsr tosicmp ; Set flags + jmp boolugt ; Convert to boolean + diff --git a/lib/runtime/ule.s b/lib/runtime/ule.s new file mode 100644 index 0000000..5e0817d --- /dev/null +++ b/lib/runtime/ule.s @@ -0,0 +1,18 @@ +; +; Ullrich von Bassewitz, 06.08.1998 +; +; CC65 runtime: Compare <= for unsigned ints +; + + .export tosule00, tosulea0, tosuleax + .import tosicmp, boolule + +tosule00: + lda #$00 +tosulea0: + ldx #$00 +tosuleax: + jsr tosicmp ; Set flags + jmp boolule ; Convert to boolean + + diff --git a/lib/runtime/ult.s b/lib/runtime/ult.s new file mode 100644 index 0000000..d2895d0 --- /dev/null +++ b/lib/runtime/ult.s @@ -0,0 +1,18 @@ +; +; Ullrich von Bassewitz, 06.08.1998 +; +; CC65 runtime: Compare < for unsigned ints +; + + .export tosult00, tosulta0, tosultax + .import tosicmp, boolult, return0 + + +tosult00 = return0 ; This is always false + +tosulta0: + ldx #$00 +tosultax: + jsr tosicmp ; Set flags + jmp boolult ; Convert to boolean + diff --git a/lib/runtime/umod.s b/lib/runtime/umod.s new file mode 100644 index 0000000..b465d90 --- /dev/null +++ b/lib/runtime/umod.s @@ -0,0 +1,28 @@ +; +; Ullrich von Bassewitz, 07.08.1998 +; +; CC65 runtime: modulo operation for unsigned ints +; + + .export tosumoda0, tosumodax + .import popsreg, udiv16 + .importzp ptr1, ptr4 + +tosumoda0: + ldx #0 +tosumodax: + sta ptr4 + stx ptr4+1 ; Save right operand + jsr popsreg ; Get right operand + +; Do the division + + jsr udiv16 + +; Result is in sreg, remainder in ptr1 + + lda ptr1 + ldx ptr1+1 + rts + + diff --git a/lib/runtime/xor.s b/lib/runtime/xor.s new file mode 100644 index 0000000..9027cb1 --- /dev/null +++ b/lib/runtime/xor.s @@ -0,0 +1,23 @@ +; +; Ullrich von Bassewitz, 05.08.1998 +; +; CC65 runtime: xor on ints +; + + .export tosxora0, tosxorax + .import addysp1 + .importzp sp, tmp1 + +tosxora0: + ldx #$00 +tosxorax: + ldy #0 + eor (sp),y + sta tmp1 + iny + txa + eor (sp),y + tax + lda tmp1 + jmp addysp1 ; drop TOS, set condition codes + diff --git a/lib/runtime/zeropage.s b/lib/runtime/zeropage.s new file mode 100644 index 0000000..ab87901 --- /dev/null +++ b/lib/runtime/zeropage.s @@ -0,0 +1,34 @@ +; +; Ullrich von Bassewitz, 26.05.2002 +; +; CC65 runtime: zeropage usage +; + + .exportzp sp, sreg, regsave + .exportzp ptr1, ptr2, ptr3, ptr4 + .exportzp tmp1, tmp2, tmp3, tmp4 + .exportzp regbank + +; ------------------------------------------------------------------------ + +.zeropage + +sp: .res 2 ; Stack pointer +sreg: .res 2 ; Secondary register/high 16 bit for longs +regsave: .res 4 ; slot to save/restore (E)AX into +ptr1: .res 2 +ptr2: .res 2 +ptr3: .res 2 +ptr4: .res 2 +tmp1: .res 1 +tmp2: .res 1 +tmp3: .res 1 +tmp4: .res 1 +regbank: .res 6 ; 6 byte register bank + +; Add an empty EXTZP zeropage segment to avoid linker warnings that this +; segment does not exist (it does not exist in most builtin linker configs +; but is used when linking modules). + +.segment "EXTZP" : zeropage + diff --git a/script/disk b/script/disk new file mode 100644 index 0000000..e57a27f --- /dev/null +++ b/script/disk @@ -0,0 +1,4 @@ +#!/bin/bash + + +cp ./test/irc_client.img /Applications/MultiMC.app/Contents/Resources/instances/1.2.5\ ftb/minecraft/saves/cpu\ test/redpower/ \ No newline at end of file diff --git a/test/Makefile b/test/Makefile new file mode 100644 index 0000000..a9a86c2 --- /dev/null +++ b/test/Makefile @@ -0,0 +1,33 @@ +LD = ../bin/ld65 +AS = ../bin/ca65 +CC = ../bin/cc65 +AL = ../bin/align + +CINCLUDE = -I ../include +CFLAGS = -t none --cpu $(CPU) +LFLAGS = -C ../lib/rpc8e.cfg +LLIBS = ../lib/rpc8e.lib + +IMAGES = test_rb.img irc_client.img + +.PHONY: all +all: $(IMAGES) + +%.s: %.c + $(CC) $(CFLAGS) $(CINCLUDE) $< + +%.o: %.s + $(AS) $(CFLAGS) $< + +%.img: %.o + $(LD) $(LFLAGS) $< $(LLIBS) -o $@ + $(AL) $@ + + + + + +clean: + rm *.o + +.SUFFIXES: \ No newline at end of file diff --git a/test/irc_client.c b/test/irc_client.c new file mode 100644 index 0000000..e276cc0 --- /dev/null +++ b/test/irc_client.c @@ -0,0 +1,185 @@ +//irc_client.c + +#include +#include +#include + +#define RB 0x0300 + +Console* con; +Disk* dis; + +#define DSTAT 32 +#define DOUT 31 +#define DIN 30 + + +#define LPROMPT 49 +#define LSTAT 48 +#define LSTREAM 47 + +#define SCREEN_W 80 +#define SCREEN_H 50 + +#define map_con() rb_map_device(0x01); +#define map_dis() rb_map_device(0x02); + +void blit(char command, char x, char y, char xo, char yo, char w, char h) { + con->blit_start_x = x; + con->blit_start_y = y; + con->blit_offset_x = xo; + con->blit_offset_y = yo; + con->blit_width = w; + con->blit_height = h; + con->blit_mode = command; + while(con->blit_mode != 0) ; //WAI +} + +#define fill(b, x, y, w, h) blit(1, b, 0, x, y, w, h) +#define invert(x, y, w, h) blit(2, 0, 0, x, y, w, h) +#define scroll(x, y, ox, oy, w, h) blit(3, x, y, ox, oy, w, h) + +#define LF 13 + +void prepare_screen() { + map_con(); + fill(0x20,0,0,SCREEN_W,SCREEN_H); + invert(0,LSTAT,SCREEN_W,1); + con->cursor_x = 0; + con->cursor_y = LPROMPT; + con->cursor_mode = 2; +} + +char send = 0; +char recv = 0; +char outbuf[128]; +char inbuf[128]; + +#define CONTROL 0 +#define READPTR 1 +#define WRITEPTR 2 + +unsigned char flush() { + dis->command = WRITE; + while(dis->command != IDLE && dis->command != FAIL) ; + return dis->command; +} + +unsigned char wait() { + dis->command = READ; + while(dis->command != IDLE && dis->command != FAIL) ; + return dis->command; +} + +void prepare_disk() { + map_dis(); + dis->sector_num = DSTAT; + dis->sector[CONTROL] = 'N'; + flush(); +} + +unsigned char cursor = 0; + +void linefeed() { + scroll(0,1,0,0,SCREEN_W,SCREEN_H-3); + fill(0x20,0,LSTREAM,SCREEN_W,1); +} + +void print(char* buffer) { + unsigned char i = 0; + + if(buffer[0] == 0) return; + + con->line = LSTREAM; + + if(cursor == 0) linefeed(); + + while(buffer[i] != 0 && i < 128) { + if(buffer[i] == '\n' || cursor == 80) { + cursor = 0; + linefeed(); + } else { + con->display[cursor] = buffer[i]; + ++cursor; + } + ++i; + } + + if(i < 128) + cursor = 0; +} + +void read_keyboard() { + con->line = LPROMPT; + while(con->kb_pos != con->kb_start) { + outbuf[con->cursor_x] = con->kb_key; + if(con->kb_key == LF) { + outbuf[con->cursor_x+1] = 0; + fill(0x20,0,LPROMPT,SCREEN_W,1); + send = 1; + con->cursor_x = 0; + ++con->kb_start; + break; + } + con->display[con->cursor_x] = con->kb_key; + ++con->cursor_x; + ++con->kb_start; + } +} + +void perform_io() { + unsigned int i = 0; + + map_dis(); + + i = 0; + dis->sector_num = DIN; + wait(); + while(dis->sector[i] != 0 && i < 128) { + inbuf[i] = dis->sector[i]; + dis->sector[i] = 0; + ++i; + } + inbuf[i] = 0; + + flush(); + + i = 0; + + dis->sector_num = DOUT; + if(send == 1) { + while(outbuf[i] != 0 && i < 128) { + dis->sector[i] = outbuf[i]; + ++i; + } + //send = 0; + } else dis->sector[i] == 0; + if(!flush() && send == 1) send = 0; + + map_con(); +} + +void main() { + + rb_set_window((void*)RB); + con = (Console*)RB; + dis = (Disk*)RB; + rb_enable(); + + prepare_screen(); + + print("IRC for RPC8/e\nInitializing IO buffer space... "); + + prepare_disk(); + + map_con(); + + print("[DONE]\nStarting IO loop."); + + while(1) { + read_keyboard(); + perform_io(); + print(inbuf); + inbuf[0] = 0; + } +} \ No newline at end of file diff --git a/test/test_rb.c b/test/test_rb.c new file mode 100644 index 0000000..59ee58b --- /dev/null +++ b/test/test_rb.c @@ -0,0 +1,22 @@ +//test_rb.c + +#include +#include + +#define redbus 0x0300 +#define default_console_id 0x01 + +void main() { + Console* console; + + rb_set_window((void*)redbus); + rb_map_device(default_console_id); + rb_enable(); + + + console = (Console*)redbus; + + console->cursor_mode = 2; + console->display[0] = 'X'; + console->display[1] = inv('Y'); +} \ No newline at end of file diff --git a/test/test_rb.s b/test/test_rb.s new file mode 100644 index 0000000..c0063b2 --- /dev/null +++ b/test/test_rb.s @@ -0,0 +1,64 @@ +; +; File generated by cc65 v 2.13.3 +; + .fopt compiler,"cc65 v 2.13.3" + .setcpu "65C02" + .smart on + .autoimport on + .case on + .debuginfo off + .importzp sp, sreg, regsave, regbank, tmp1, ptr1, ptr2 + .macpack longbranch + .forceimport __STARTUP__ + .import _rb_enable + .import _rb_set_window + .import _rb_map_device + .export _main + +; --------------------------------------------------------------- +; void __near__ main (void) +; --------------------------------------------------------------- + +.segment "CODE" + +.proc _main: near + +.segment "CODE" + + jsr decsp2 + ldx #$03 + lda #$00 + jsr _rb_set_window + lda #$01 + jsr _rb_map_device + jsr _rb_enable + ldx #$03 + lda #$00 + ldy #$00 + jsr staxysp + ldy #$01 + jsr ldaxysp + jsr pushax + ldx #$00 + lda #$02 + ldy #$03 + jsr staspidx + ldy #$01 + jsr ldaxysp + jsr pushax + ldx #$00 + lda #$58 + ldy #$10 + jsr staspidx + ldy #$01 + jsr ldaxysp + jsr pushax + ldx #$00 + lda #$D9 + ldy #$11 + jsr staspidx + jsr incsp2 + rts + +.endproc +