hippy
Ex-Staff (retired)
Programming Editor 4.1.4
Both the following cause WSTAMP16.EXE to thow an Illegal Opcode error and crash ...
- SYMBOL testMin = 1 MIN 1
- SYMBOL testMax = 1 MAX 1
Also ...
1) Is it possible to extend the maths of a SYMBOL expression to include more than two operands ?
2) Is it possible to add comparisons to SYMBOL expressions ?
I'm currently trying to implement the following pseudo code ( to configure by only changing the "BIT" definition ), and can't find any easy way to do it automatically ...
- SYMBOL BIT = 0 ' 0..7
-
- IF BIT = 0 THEN SYMBOL MASK = %00010000
- IF BIT = 1 THEN SYMBOL MASK = %00001000
- IF BIT = 2 THEN SYMBOL MASK = %00100000
- IF BIT = 3 THEN SYMBOL MASK = %00000100
- IF BIT = 4 THEN SYMBOL MASK = %01000000
- IF BIT = 5 THEN SYMBOL MASK = %00000010
- IF BIT = 6 THEN SYMBOL MASK = %10000000
- IF BIT = 7 THEN SYMBOL MASK = %00000001
The following would work nicely if the previous two ideas were allowed, and True=1/False=0 ...
- SYMBOL BIT = 0 ' 0..7
-
- SYMBOL MASK0 = BIT EQ 0 * %00010000
- SYMBOL MASK1 = BIT EQ 1 * %00001000
- SYMBOL MASK2 = BIT EQ 2 * %00100000
- SYMBOL MASK3 = BIT EQ 3 * %00000100
- SYMBOL MASK4 = BIT EQ 4 * %01000000
- SYMBOL MASK5 = BIT EQ 5 * %00000010
- SYMBOL MASK6 = BIT EQ 6 * %10000000
- SYMBOL MASK7 = BIT EQ 7 * %00000001
-
- SYMBOL MASK = MASK0 OR MASK1 OR ... OR MASK7
The above could be effected nearly as nicely with more operands allowed even without comparisons, but the best I can envisage at present is ...
- SYMBOL BIT = 0 ' 0..7
-
- SYMBOL USE0a = BIT-0
- SYMBOL USE1a = BIT-1
- :
- SYMBOL USE6a = BIT-6
- SYMBOL USE7a = BIT-7
-
- SYMBOL USE0b = USE0a MAX 1
- SYMBOL USE1b = USE1a MAX 1
- :
- SYMBOL USE6b = USE6a MAX 1
- SYMBOL USE7b = USE7a MAX 1
-
- SYMBOL USE0c = 1-USE0b
- SYMBOL USE1c = 1-USE1b
- :
- SYMBOL USE6c = 1-USE6b
- SYMBOL USE7c = 1-USE7b
-
- SYMBOL MASK0 = USE0c * %00010000
- SYMBOL MASK1 = USE1c * %00001000
- :
- SYMBOL MASK6 = USE6c * %10000000
- SYMBOL MASK7 = USE7c * %00000001
-
- SYMBOL MASKa = MASK0 OR MASK1
- SYMBOL MASKb = MASKa OR MASK2
- SYMBOL MASKc = MASKb OR MASK3
- :
- SYMBOL MASKf = MASKe OR MASK6
- SYMBOL MASK = MASKf OR MASK7
Not very elegant, and not very short.
Both the following cause WSTAMP16.EXE to thow an Illegal Opcode error and crash ...
- SYMBOL testMin = 1 MIN 1
- SYMBOL testMax = 1 MAX 1
Also ...
1) Is it possible to extend the maths of a SYMBOL expression to include more than two operands ?
2) Is it possible to add comparisons to SYMBOL expressions ?
I'm currently trying to implement the following pseudo code ( to configure by only changing the "BIT" definition ), and can't find any easy way to do it automatically ...
- SYMBOL BIT = 0 ' 0..7
-
- IF BIT = 0 THEN SYMBOL MASK = %00010000
- IF BIT = 1 THEN SYMBOL MASK = %00001000
- IF BIT = 2 THEN SYMBOL MASK = %00100000
- IF BIT = 3 THEN SYMBOL MASK = %00000100
- IF BIT = 4 THEN SYMBOL MASK = %01000000
- IF BIT = 5 THEN SYMBOL MASK = %00000010
- IF BIT = 6 THEN SYMBOL MASK = %10000000
- IF BIT = 7 THEN SYMBOL MASK = %00000001
The following would work nicely if the previous two ideas were allowed, and True=1/False=0 ...
- SYMBOL BIT = 0 ' 0..7
-
- SYMBOL MASK0 = BIT EQ 0 * %00010000
- SYMBOL MASK1 = BIT EQ 1 * %00001000
- SYMBOL MASK2 = BIT EQ 2 * %00100000
- SYMBOL MASK3 = BIT EQ 3 * %00000100
- SYMBOL MASK4 = BIT EQ 4 * %01000000
- SYMBOL MASK5 = BIT EQ 5 * %00000010
- SYMBOL MASK6 = BIT EQ 6 * %10000000
- SYMBOL MASK7 = BIT EQ 7 * %00000001
-
- SYMBOL MASK = MASK0 OR MASK1 OR ... OR MASK7
The above could be effected nearly as nicely with more operands allowed even without comparisons, but the best I can envisage at present is ...
- SYMBOL BIT = 0 ' 0..7
-
- SYMBOL USE0a = BIT-0
- SYMBOL USE1a = BIT-1
- :
- SYMBOL USE6a = BIT-6
- SYMBOL USE7a = BIT-7
-
- SYMBOL USE0b = USE0a MAX 1
- SYMBOL USE1b = USE1a MAX 1
- :
- SYMBOL USE6b = USE6a MAX 1
- SYMBOL USE7b = USE7a MAX 1
-
- SYMBOL USE0c = 1-USE0b
- SYMBOL USE1c = 1-USE1b
- :
- SYMBOL USE6c = 1-USE6b
- SYMBOL USE7c = 1-USE7b
-
- SYMBOL MASK0 = USE0c * %00010000
- SYMBOL MASK1 = USE1c * %00001000
- :
- SYMBOL MASK6 = USE6c * %10000000
- SYMBOL MASK7 = USE7c * %00000001
-
- SYMBOL MASKa = MASK0 OR MASK1
- SYMBOL MASKb = MASKa OR MASK2
- SYMBOL MASKc = MASKb OR MASK3
- :
- SYMBOL MASKf = MASKe OR MASK6
- SYMBOL MASK = MASKf OR MASK7
Not very elegant, and not very short.