Home
Downloads
Licenses Contact

Basic Compiler Debug Test Examples - Retro Processors

Debug test examples published below were used for the compiler engine tests during the software development.
Most of the code tested is functionally meaningless, because the focus was on the inspection of the generated code for accuracy and precision.
Commented lines of code were probably used for the test of compiler error messages...
The newest test examples are on the top of the list.

A tip for advanced and/or curious users:
Be sure to turn on (set to 1 using the Registry Editor) the 'Print Debug Comment Lines in Compiler Listing' registry value for the software package you are using (located in 'HKEY_CURRENT_USER\Software\6502 Simulator IDE' registry key, for example), and then inspect the generated assembler listing for these examples, especially for complex expressions related ones at the bottom of the page...



string functions test #1
Dim s1 As String
Dim s2[5] As String
Dim s3 As String
Dim v1 As Byte
Dim v2 As Word

v1 = "9"
s2 = Chr(v1 - 2) + Chr(v1)
s1 = s2
v2 = Len(s2)
v2 = Asc(s1)

s1 = "abcde"
s2 = "abcde"
v1 = 1
If s1 = s2 Then v1 = 2
s1 = "abcdef"
v1 = 3
If s1 != s2 Then v1 = 4

s1 = LeftStr("01234567", 0)
s1 = LeftStr("01234567", 5)
s1 = LeftStr("01234567", 20)
s2 = LeftStr("01234567", 0)
s2 = LeftStr("01234567", 5)
s2 = LeftStr("a01234567", 20)

s1 = RightStr("01234567", 0)
s1 = RightStr("01234567", 5)
s1 = RightStr("01234567", 20)
s2 = RightStr("01234567", 0)
s2 = RightStr("01234567", 5)
s2 = RightStr("01234567", 20)

s1 = MidStr("01234567", 10, 3)
s1 = MidStr("01234567", 7, 3)
s2 = MidStr("01234567", 2, 10)

s1 = "01iuyt"
s3 = UCase(s1)
s2 = LCase(s3)
s2 = UCase("aBCdef")

s1 = "hghghghg"
s3 = ReplaceChr(s1, "h", "o")
s2 = ReplaceChr(s1, "g", "s")

s1 = "qwerty"
v2 = InStr(s1, "r")
v1 = InStr(s1, "0")
s2 = "56565"
v1 = InStrRev(s2, "5")
v1 = InStrRev(s2, "6")
v1 = CountChr(s2, "5")

s1 = FillStr("x", 10)
s2 = FillStr("y", 10)

s1 = RTrimChr("12345600", "0")
s2 = RTrimChr("01234567", "7")
s2 = RTrimChr("a1234444", "4")

s1 = LTrimChr("001234xx", "0")
s2 = LTrimChr("01234567", "0")
s2 = LTrimChr("01234567", "1")

s1 = ReverseStr("w234567")
s2 = ReverseStr(s1)



string functions test #2
Dim s1 As String
Dim s2[5] As String

s1 = LShiftStr("12345678", "x")
s1 = LShiftStr("1234", "x")
s1 = LShiftStr("1", "x")
s1 = LShiftStr("", "x")
s2 = LShiftStr("12345678", "x")
s2 = LShiftStr("123456", "x")
s2 = LShiftStr("12345", "x")
s2 = LShiftStr("1234", "x")
s2 = LShiftStr("1", "x")
s2 = LShiftStr("", "x")

s1 = RShiftStr("12345678", "x")
s1 = RShiftStr("1234", "x")
s1 = RShiftStr("1", "x")
s1 = RShiftStr("", "x")
s2 = RShiftStr("12345678", "x")
s2 = RShiftStr("123456", "x")
s2 = RShiftStr("12345", "x")
s2 = RShiftStr("1234", "x")
s2 = RShiftStr("1", "x")
s2 = RShiftStr("", "x")

s1 = LRotateStr("12345678")
s1 = LRotateStr("1234")
s1 = LRotateStr("1")
s1 = LRotateStr("")
s2 = LRotateStr("12345678")
s2 = LRotateStr("123456")
s2 = LRotateStr("12345")
s2 = LRotateStr("1234")
s2 = LRotateStr("1")
s2 = LRotateStr("")

s1 = RRotateStr("12345678")
s1 = RRotateStr("1234")
s1 = RRotateStr("1")
s1 = RRotateStr("")
s2 = RRotateStr("12345678")
s2 = RRotateStr("123456")
s2 = RRotateStr("12345")
s2 = RRotateStr("1234")
s2 = RRotateStr("1")
s2 = RRotateStr("")



string functions test #3
#define STRING_MAX_LENGTH = 10

Dim s1 As String
Dim s2[3] As String
Dim s3 As String
Dim sh1 As Short
Dim b1 As Byte
Dim w1 As Word
Dim l1 As Long
Dim g1 As Single

s1 = "208"
b1 = StrValB(s1)
s1 = ""
b1 = StrValB(s1)
s1 = "51397"
w1 = StrValW(s1)
s1 = "1234567123"
l1 = StrValL(s1)
s1 = "-6.7891230"
g1 = StrValS(s1)

s3 = "F"
w1 = DecFromHex(s3)
s3 = "FF"
w1 = DecFromHex(s3)
s3 = "FFF"
w1 = DecFromHex(s3)
s3 = "FFFF"
w1 = DecFromHex(s3)
s3 = "123456"
w1 = DecFromHex(s3) '1234h=4660

sh1 = -1
s1 = HexStr(sh1)
s2 = HexStr(sh1)

b1 = 0xaa
s1 = HexStr(b1)
s2 = HexStr(b1)

w1 = 0xfab
s1 = HexStr(w1)
s2 = HexStr(w1)

l1 = 0xfefe
s1 = HexStr(l1)
s2 = HexStr(l1)



string pointers
#define STRING_MAX_LENGTH = 16
Dim sx[1] As String
Dim px As StrPtr
'sx = "aa"
sx = "a"
SetStrPtr px = sx
'px = "aaaa"
px = "b"

Dim a1 As Byte
Dim s1[10] As String
Dim s2 As String
Dim p1 As StrPtr
Dim p2 As StrPtr
s1 = "abc"
s2 = "de"
SetStrPtr p1 = s1
p2 = p1
SetStrPtr p2 = p1
p2 = "1234"
SetStrPtr p2 = p2 + 2
p2 = "x"
SetStrPtr p2 = s2
p1 = "qwerty"
p2 = "zxcv"
s1 = p2
s1 = "aaa" + p2

a1 = 10
s1 = "abc" + "def"
s1 = sx + "7654" + "ggg"
s2 = sx + "01234" + "hh"
Call test1(s2, a1, s1)
End

Proc test1(ByRef arg1 As String, ByRef arg2 As Byte, ByRef arg3 As String)
arg1 = "555"
arg2 = 25
arg3 = "3434"
arg1 = arg1 + "876"
End Proc



bit related
Dim i As Integer
Dim var As UShort
Dim word As UInteger

For i = 0 To 7
    SetBit i, var
    ResetBit i, var
    InvertBit i, var
Next i

var = 0x01
While var <> 0
    For i = 7 To 1 Step -1
        MakeBit i, var, TestBit(i - 1, var)
    Next i
    MakeBit 0, var, False
Wend

word = 0x01
While word <> 0
    For i = 7 To 1 Step -1
        MakeBit i, word.HB, TestBit(i - 1, word.HB)
    Next i
    MakeBit 0, word.HB, TestBit(7, word.LB)
    For i = 7 To 1 Step -1
        MakeBit i, word.LB, TestBit(i - 1, word.LB)
    Next i
    MakeBit 0, word.LB, 0
Wend



6502 c64_print
#define C64_TARGET = 1
#define C64_PRG_ADDSYS = 1

Dim i As UShort
Dim j As UShort
Dim v1 As Short
Dim v2 As Integer
Dim v3 As Long
Dim s1 As String

v1 = 1
v2 = 234
v3 = 987654
s1 = "Num = "

C64_Cls
For i = 1 To 3
    j = 1
    If i = 2 Then j = 10
    If i = 3 Then j = 100
    C64_Print s1, #(v1 * j), Cr
    C64_Print s1, v2 * j, Cr
    C64_Print s1, v3 * j, Cr
Next i



print
Dim i As UShort
Dim j As UShort
Dim v1 As Short
Dim v2 As Integer
Dim v3 As Long
Dim s1 As String

Const myport = 0xff
v1 = 1
v2 = 234
v3 = 987654
s1 = "Num = "

For i = 1 To 3
    j = 1
    If i = 2 Then j = 10
    If i = 3 Then j = 100
    Print myport, s1, #(v1 * j), CrLf
    Print myport, s1, v2 * j, CrLf
    Print myport, s1, v3 * j, CrLf
Next i



single to string
#define STRING_MAX_LENGTH = 16
#define SINGLE_DECIMAL_PLACES = 6

Dim x1 As Single
Dim x2 As Single
Dim x3 As Single
Dim str1 As String
Dim str2 As String
Dim str3 As String

x1 = 0.00000190 'e
str1 = #x1
x1 = 0.00000191
str1 = #x1

x1 = 8388607
str1 = #x1
x1 = 8388608 'e
str1 = #x1

x1 = 838860
str1 = #x1
x1 = 83886
str1 = #x1

x1 = 123.456789
str1 = #x1

x2 = -0.987654
str2 = #x2

x3 = 543987
str3 = #x3

x2 = -800000
str2 = #x2

x3 = 0.00987
str3 = #x3



integer types to string
#define STRING_MAX_LENGTH = 16
#define SINGLE_DECIMAL_PLACES = 3

Dim x1 As Integer
Dim x2 As UInteger
Dim y1 As Short
Dim y2 As UShort
Dim y3 As Bit
Dim str1 As String
Dim str2 As String
Dim str3 As String
Dim z1 As Long
Dim z2 As ULong

y1 = -108
y2 = 245
y3 = y1 != y2
str1 = #y1 + " " + #y2 + " " + #y3

x1 = -12345
x2 = 23456

Const c1 = "xyz"
str1 = c1
str2 = "abcde"
str3 = str1

str1 = #x1
str2 = #x2
str2 = #6123
str3 = str1 + " " + str2 + " " + #x2

x1 = Len(str1)
x2 = Len(str2)
y1 = Len(str3)

z1 = -2012789543
z2 = 3456987123
str1 = #z1
str2 = #z2
str3 = #-9123123
str3 = str1 + " " + str2



poke, peek
Dim v1 As UInteger
Dim v2 As UShort
Dim v3 As Long

Dim d(6) As UShort
Dim i As UShort

v1 = 0xf000
v2 = 0xff
v2 = Peek(v1 + 1)
v3 = 0x55555555
v3 = Peek(v1 + 1)

For i = 0 To 5
    d(i) = 110 + i
Next i

For i = 0 To 5
    Poke v1 + i, d(i) + 100
Next i

For i = 0 To 5
    d(5 - i) = Peek(v1 + i)
Next i



for-next test
Dim x1 As Short
Dim x2 As UShort
Dim x3 As Integer
Dim x4 As UInteger

For x1 = -50 To 100 Step 100
Next x1
For x1 = 50 To -100 Step -100
Next x1

For x2 = 100 To 250 Step 100
Next x2
For x2 = 170 To 50 Step -100
Next x2

For x3 = -5000 To 30000 Step 10000
Next x3
For x3 = 5000 To -30000 Step -10000
Next x3

For x4 = 10000 To 65000 Step 10000
Next x4
For x4 = 17000 To 5000 Step -10000
Next x4



sqr test
Dim v1 As Integer
Dim v2 As Short

Dim s1 As Single
Dim s2 As Single

s1 = 200
s2 = Sqr(s1) + 1

v1 = 10000
v2 = Sqr(v1)



comparison test
Dim x As Single
Dim y As Single
Dim _ne As Bit
Dim _lt As Bit
Dim _le As Bit
Dim _eq As Bit
Dim _ge As Bit
Dim _gt As Bit

x = -20
y = -5
While x <= 10
    _ne = x <> y
    _lt = x < y
    _le = x <= y
    _eq = x = y
    _ge = x >= y
    _gt = x > y
    x = x + 15
Wend



long arithmetics
Dim v1 As Long
Dim v2 As ULong
Dim v3 As UInteger

v2 = 4123123 * 1000

v2 = 0xffffffff / 0xffffffff
v2 = 0xffffffff / 1
v2 = 1 / 0xffffffff
v2 = 100 / 0x0fffffff
v2 = 100 % 0x0fffffff
v2 = 101 / 0xefffffff
v2 = 101 % 0xefffffff
v2 = 102 / 0xffffffff
v2 = 102 % 0xffffffff

v2 = 4000000000 / 256 '15625000

v3 = 30000 / 100
v3 = 21234 / 100
v3 = 21234 % 100
v3 = 45678 / 100
v3 = 65535 / 100

v2 = 4123123123 / 1000

v3 = 60005 / 5

v1 = 123123123 / 1000
v1 = 123123123 % 1000
v1 = 2123123123 / 1000
v1 = 2123123123 % 1000
v1 = -2123123123 / 1000
v1 = -2123123123 % 1000

v2 = 1123123123 / 1000
v2 = 1123123123 % 1000
v2 = 2123123123 / 1000
v2 = 2123123123 % 1000
v2 = 3123123123 / 1000
v2 = 3123123123 % 1000



single cshort
Dim x1 As Single
Dim x2 As Single
Dim v1 As Integer
Dim v2 As Integer

v2 = -100
x1 = 12.5
x2 = 50.7

v1 = x1 + x2
v1 = CShort x1 + CShort(x2) - v2



logical
Dim var1 As ULong
Dim var2 As ULong
Dim var3 As Integer
Dim var4 As ULong

var3 = 4
var1 = 3 << 16
var2 = var1 >> var3

var1 = 0x12343355
var2 = 0x22223456
var4 = var1 Or var2
var4 = var1 & var2



data type conversions
Dim xbool As Boolean
Dim xshort As Short
Dim xint As Integer
Dim xlong As Long
Dim xsingle As Single
Dim xushort As UShort
Dim xuint As UInteger
Dim xulong As ULong

Dim xbool2 As Boolean
Dim xshort2 As Short
Dim xint2 As Integer
Dim xlong2 As Long
Dim xsingle2 As Single
Dim xushort2 As UShort
Dim xuint2 As UInteger
Dim xulong2 As ULong

xshort = -100
xsingle = xshort
xushort = 200
xsingle = xushort
xint = -30000
xsingle = xint
xuint = 50000
xsingle = xuint
xlong = -1500500500
xsingle = xlong
xulong = 500500500
xsingle = xulong
xulong = 2500500500
xsingle = xulong
xulong = 3500500500
xsingle = xulong
xulong = 4200500500
xsingle = xulong

xsingle = 5123123123
xlong = xsingle
xulong = xsingle

xsingle = 4294967040
xlong = xsingle
xulong = xsingle

xsingle = 255
xshort = xsingle
xushort = xsingle
xint = xsingle
xuint = xsingle
xlong = xsingle
xulong = xsingle

xsingle = 65535
xshort = xsingle
xushort = xsingle
xint = xsingle
xuint = xsingle
xlong = xsingle
xulong = xsingle

xsingle = 4000000000
xlong = xsingle
xulong = xsingle

xsingle = -1
xshort = xsingle
xushort = xsingle
xint = xsingle
xuint = xsingle
xlong = xsingle
xulong = xsingle

xshort = -2
xshort2 = xshort
xushort2 = xshort
xint2 = xshort
xuint2 = xshort
xlong2 = xshort
xulong2 = xshort

xushort = 10
xshort2 = xushort
xushort2 = xushort
xint2 = xushort
xuint2 = xushort
xlong2 = xushort
xulong2 = xushort

xint = -3
xshort2 = xint
xushort2 = xint
xint2 = xint
xuint2 = xint
xlong2 = xint
xulong2 = xint

xuint = 55
xshort2 = xuint
xushort2 = xuint
xint2 = xuint
xuint2 = xuint
xlong2 = xuint
xulong2 = xuint

xlong = -1
xshort2 = xlong
xushort2 = xlong
xint2 = xlong
xuint2 = xlong
xlong2 = xlong
xulong2 = xlong

xulong = 100
xshort2 = xulong
xushort2 = xulong
xint2 = xulong
xuint2 = xulong
xlong2 = xulong
xulong2 = xulong

xbool = True
xbool = 0
xbool = 10
xshort = -100
xushort = 200
xint = -30000
xuint = 50000
xlong = -1500500500
xulong = 3500500500
xsingle = 5678.4321
xsingle = -234.5432

xbool2 = xbool
xshort2 = xshort
xint2 = xint
xlong2 = xlong
xsingle2 = xsingle
xushort2 = xushort
xuint2 = xuint
xulong2 = xulong



fill memory
#define ROMEND = 0x0FFF
#define RAMSTART = 0x3000
#define RAMEND = 0x33FF

Dim xbool As Boolean
Dim xshort As Short
Dim xint As Integer
Dim xlong As Long
Dim xsingle As Single
Dim xushort As UShort
Dim xuint As UInteger
Dim xulong As ULong

Dim xbool2 As Boolean
Dim xshort2 As Short
Dim xint2 As Integer
Dim xlong2 As Long
Dim xsingle2 As Single
Dim xushort2 As UShort
Dim xuint2 As UInteger
Dim xulong2 As ULong

Dim xbool3(5) As Boolean
Dim xshort3(5) As Short
Dim xint3(5) As Integer
Dim xlong3(5) As Long
Dim xsingle3(5) As Single
Dim xushort3(5) As UShort
Dim xuint3(5) As UInteger
Dim xulong3(5) As ULong

Dim xfill(370) As Short
Dim xfill2(9) As Short
'Dim xfill3 As Short

xbool = True
xbool = 0
xbool = 10

xshort3(40) = 1
xshort3(200) = 1
xlong = xint.LB
xlong = xshort
'xlong = CLong(xshort2)

xbool3(10) = 1