Revision: 1746
Author: jsuijs
Date: Wed Mar 3 14:29:32 2010
Log: gol implemented as a demo
http://code.google.com/p/jallib/source/detail?r=1746
Modified:
/trunk/test/external/lcd/test_glcd_ks0108.jal
=======================================
--- /trunk/test/external/lcd/test_glcd_ks0108.jal Tue Mar 2 14:16:06 2010
+++ /trunk/test/external/lcd/test_glcd_ks0108.jal Wed Mar 3 14:29:32 2010
@@ -75,6 +75,40 @@
var byte gol_output_column[9]
+--
----------------------------------------------------------------------------
+const byte power[] = { 1, 2, 4, 8, 16, 32, 64, 128 }
+--
----------------------------------------------------------------------------
+
+--
----------------------------------------------------------------------------
+-- gol_get_bit - get one bit from a colomn
+--
----------------------------------------------------------------------------
+--
----------------------------------------------------------------------------
+function gol_get_bit(byte in row_nr, byte in column[9]) return bit is
+
+ var byte byte_nr = (row_nr >> 3) & 0x07
+ var byte bit_nr = row_nr & 0x07
+
+ return ((column[byte_nr] & power[bit_nr]) != 0)
+
+end function
+
+--
----------------------------------------------------------------------------
+-- gol_set_outbit - set one bit in gol_output_column
+--
----------------------------------------------------------------------------
+--
----------------------------------------------------------------------------
+procedure gol_set_outbit(byte in row_nr) is
+
+ var byte byte_nr = (row_nr >> 3) & 0x07
+ var byte bit_nr = row_nr & 0x07
+
+; var bit*3 byte_nr at row_nr : 3
+; var bit*3 bit_nr at row_nr : 0
+
+ gol_output_column[byte_nr] = gol_output_column[byte_nr] | power[bit_nr]
+
+end procedure
+
+
--
----------------------------------------------------------------------------
-- gol_randomize - Game of Life _ Randomize screen
@@ -111,6 +145,22 @@
end procedure
+
+procedure gol_print_column(byte in column[9]) is
+ var byte i
+ var bit b
+
+ for 64 using i loop
+ b = gol_get_bit(i, column)
+ if (b) then
+ serial_hw_data = "*"
+ else
+ serial_hw_data = "."
+ end if
+ end loop
+ print_crlf(serial_hw_data)
+end procedure
+
--
----------------------------------------------------------------------------
--
----------------------------------------------------------------------------
--
----------------------------------------------------------------------------
@@ -141,38 +191,6 @@
end loop
end procedure
---
----------------------------------------------------------------------------
-const byte power[] = { 1, 2, 4, 8, 16, 32, 64, 128 }
---
----------------------------------------------------------------------------
-
---
----------------------------------------------------------------------------
---
----------------------------------------------------------------------------
---
----------------------------------------------------------------------------
-function gol_get_bit(byte in row_nr, byte in column[9]) return bit is
-
- var byte byte_nr = (row_nr >> 3) & 0x07
- var byte bit_nr = row_nr & 0x07
-
- return ((column[byte_nr] & power[bit_nr]) > 0)
-
-end function
-
---
----------------------------------------------------------------------------
---
----------------------------------------------------------------------------
---
----------------------------------------------------------------------------
-procedure gol_set_outbit(byte in row_nr, bit in value) is
-
- var byte byte_nr = (row_nr >> 3) & 0x07
- var byte bit_nr = row_nr & 0x07
-
- if (value) then
- gol_output_column[byte_nr] = gol_output_column[byte_nr] |
power[bit_nr]
- else
- gol_output_column[byte_nr] = gol_output_column[byte_nr] |
(power[bit_nr] ^ 255)
- end if
-
-end procedure
-
-- nbs - NumberofBitsSet
-- 0 1 2 3 4 5 6 7
const byte nbs[] = {0, 1, 1, 2, 1, 2, 2, 3}
@@ -221,18 +239,31 @@
top_n = gol_get_bit(i, gol_next_column)
neighbours = nbs[bottom] + nbs[(middle & 5)] + nbs[top]
-
+;print_byte_dec(serial_hw_data, neighbours)
+;serial_hw_data = " "
if (neighbours == 2) then
-- remain the same
- gol_set_outbit(i-1, (middle & 2) == 2)
+; gol_set_outbit(i-1, (middle & 2) == 2)
+ if ((middle & 2) == 2) then
+ gol_set_outbit(i-1)
+ end if
elsif (neighbours == 3) then
-- become alive
- gol_set_outbit(i-1, true)
+ gol_set_outbit(i-1)
else
-- less then 2 or more then 3 = die
- gol_set_outbit(i-1, false)
- end if
+; gol_set_outbit(i-1, false)
+ end if
+ i = i + 1
until i > 64
+
+; print_crlf(serial_hw_data)
+; gol_print_column(gol_prev_column)
+; gol_print_column(gol_this_column)
+; gol_print_column(gol_next_column)
+; gol_print_column(gol_output_column)
+; print_crlf(serial_hw_data)
+
end procedure
@@ -291,10 +322,10 @@
-- randomize
gol_generation()
- delay_100ms(1)
+; delay_100ms(1)
-
+ serial_hw_data = "+"
end loop
--
You received this message because you are subscribed to the Google Groups
"jallib" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to
[email protected].
For more options, visit this group at
http://groups.google.com/group/jallib?hl=en.