This commit is contained in:
Lane Roathe 2019-11-20 13:42:08 -08:00
commit 3cab17d7f5
32 changed files with 110 additions and 29 deletions

View File

@ -32,8 +32,9 @@ debug:
distclean:
rm -rf ./build
-rm -rf ./testout
-rm -rf ./build
-rm -rf ./qasmout
-rm -rf ./m32out
clean:
-rm -rf ./build
@ -60,13 +61,13 @@ compare:
asm:
test1:
-qasm src/main.s
-qasm testdata/3001-lroathe.S
test2:
-qasm src/testfile.s
-qasm testdata/3002-testfile.S
test3:
-qasm src/var.s
-qasm testdata/3003-var.S

View File

@ -1342,6 +1342,11 @@ int CLASS::callOpCode(std::string op, MerlinLine &line)
//line.expr_value = (line.expr_value >> 16) & 0xFFFF;
break;
case '|':
if (syntax==SYNTAX_MERLIN)
{
line.setError(errBadLabel);
line.expr_value=0;
}
break;
}
}
@ -1554,6 +1559,7 @@ void CLASS::initpass(void)
truncdata = 0;
variables.clear(); // clear the variables for each pass
macros.clear();
while (!PCstack.empty())
{
PCstack.pop();

34
asm.h
View File

@ -280,11 +280,12 @@ public:
{
clear();
}
void clear(void) {
lupct=0;
lupoffset=0;
luprunning=0;
lupskip=false;
void clear(void)
{
lupct = 0;
lupoffset = 0;
luprunning = 0;
lupskip = false;
}
uint16_t lupct;
bool lupskip;
@ -299,9 +300,10 @@ public:
{
clear();
}
void clear(void) {
doskip=false;
value=0;
void clear(void)
{
doskip = false;
value = 0;
}
uint32_t value;
bool doskip;
@ -334,7 +336,7 @@ public:
value = 0;
used = false;
//text = "";
var_text="";
var_text = "";
name = "";
namelc = "";
stype = 0;
@ -343,6 +345,17 @@ public:
}
};
class TMacro
{
public:
std::string name;
std::string lcname;
uint32_t currentline;
std::vector<MerlinLine> lines;
std::vector<std::string> variables;
};
class TPsuedoOp;
class T65816Asm : public TFileProcessor
@ -371,8 +384,8 @@ public:
std::string currentsymstr;
std::vector<MerlinLine> lines;
Poco::HashMap<std::string, TMacro> macros;
Poco::HashMap<std::string, TSymbol>opcodes;
Poco::HashMap<std::string, TSymbol> macros;
Poco::HashMap<std::string, TSymbol> symbols;
Poco::HashMap<std::string, TSymbol> variables;
@ -386,6 +399,7 @@ public:
std::stack<TLUPstruct> LUPstack;
std::stack<TDOstruct> DOstack;
std::stack<bool> LSTstack;
std::stack<TMacro> curMacro;
TPsuedoOp *psuedoops;

35
merlintests.sh Executable file
View File

@ -0,0 +1,35 @@
#!/bin/bash
OUTDIR=./m32out
rm -rf $OUTDIR
mkdir -p $OUTDIR
SRC=`ls ./testdata | grep -E '^([0-9]+)(.*)\.[Ss]'`
#SRC=`ls ./testdata | grep -E '^([0-9]+)(.*)\.[Ss]' | grep -i 2007`
for S in $SRC ; do
S1=$S
S1=${S1/.S/}
S1=${S1/.s/}
BASE=${S/.S/}
BASE=${BASE/.s/}
cd ./testdata
merlin32 . $S 2>/dev/null >/dev/null
#merlin32 . $S 2>/dev/null
R=?$
cd - >/dev/null
cp ./testdata/$S1 $OUTDIR/$S1.bin 2>/dev/null
rm -f ./testdata/*.txt 2>/dev/null
rm -f ./testdata/$S1 2>/dev/null
R=?$
done
ls $OUTDIR

View File

@ -1,6 +1,6 @@
#!/bin/bash
OUTDIR=./testout
OUTDIR=./qasmout
TMPFILE=/tmp/qasm_out.txt
rm -f $TMPFILE
@ -40,14 +40,15 @@ for S in $SRC ; do
MSHA="Q"
QSHA="M"
if [ -f ./testdata/M32_expected/$BASE ] ; then
MSHA=`sha256sum ./testdata/M32_expected/$BASE | awk '{ print $1;}'` 2>/dev/null >/dev/null
if [ -f ./m32out/$BASE.bin ] ; then
MSHA=`sha256sum ./m32out/$BASE.bin | awk '{ print $1;}'` 2>/dev/null >/dev/null
fi
if [ -f $OUTDIR/$BASE.bin ] ; then
QSHA=`sha256sum $OUTDIR/$BASE.bin |awk '{print $1;}'` 2>/dev/null >/dev/null
fi
#echo "$MSHA $QSHA"
#echo "MSHA=$MSHA QSHA=$QSHA"
shapass=0;
CX=" "

28
testdata/3000-addresses.S vendored Normal file
View File

@ -0,0 +1,28 @@
lst
xc
xc
org $018200
bank02 equ $020000
bank03 equ $030000
dp equ $A5
long equ $020304
mx %00
start nop
pea ^start
pea start
mvn bank02,bank03
mvp bank03,bank02
lda dp
lda <dp
lda >dp
lda ^dp
lda |dp
lda #long
lda #<long
lda #>long
lda #^long
lda #|long
lst off

View File

@ -114,7 +114,7 @@ START
adc _num1+dum1
sbc _num1+dum1
bit _num1+dum0
sta _num1+dum0 ;(FIXED): can't use sta _num1+dum0
sta _num1+dum0 ;(FIXED): can't use sta _num1+dum0 '
stz _num1+dum0
lda _num1+dum0,x
@ -180,7 +180,7 @@ myQuit
ldaz $FFFF ; forced DP
lda: $FFFF ; forced ABS (any char but 'L', 'D', and 'Z"
lda: $FFFF ; forced ABS (any char but 'L', 'D', and 'Z'
ldal $FFFF ; forced long abs (3 byte address)
ldaz $05
@ -338,8 +338,6 @@ myQuit
lda #^$A51234 ;bank
mx MX
lda $0008 ;ZP
lda $08 ;ZP
lda $ffff-$fff7 ;ZP
@ -362,8 +360,8 @@ L00BC bit L00BC
hex ;no error
hex 11,22,33,44,55,66,77,88,99
hex 112233445566778899F
hex 112233445I566778899FF
;hex 112233445566778899F
;hex 112233445I566778899FF
hex aabb,CC,0123456789abcdefABCDEF,ff

View File

@ -14,7 +14,7 @@ lexpr = $010203
immed = $123456
neg equ -16
]var1 = v1234
*]var1 = v1234
;lst off
start00
@ -308,5 +308,5 @@ startF0
inc expr,x
sbcl lexpr,x
lst off
sav ./test.bin
;sav ./test.bin

View File

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -1,2 +0,0 @@
,ę,˘˙ę
ę,˘˙ę  V$©˘"  ( V$©3˘D : =ę­V$ E` V$©U˘f`<60><EFBFBD>©™`

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.