mirror of
https://github.com/irmen/prog8.git
synced 2024-09-08 10:55:08 +00:00
txtelite goatsoup
This commit is contained in:
parent
8408bf3789
commit
d8fcbb78d3
@ -6,25 +6,17 @@ main {
|
|||||||
sub start() {
|
sub start() {
|
||||||
txt.lowercase()
|
txt.lowercase()
|
||||||
|
|
||||||
ubyte i
|
txt.print("\n--> TextElite conversion to Prog8 <--\n\n")
|
||||||
for i in 1 to 4 {
|
|
||||||
txt.print("TextElite Goatsoup ")
|
|
||||||
txt.print_ub(i)
|
|
||||||
txt.print(":\n")
|
|
||||||
goatsoup.set_seed(rndw(), rndw())
|
|
||||||
goatsoup.planet_name = goatsoup.random_name()
|
|
||||||
txt.print("System: ")
|
|
||||||
txt.print(goatsoup.planet_name)
|
|
||||||
txt.chrout('\n')
|
|
||||||
txt.print(goatsoup.soup())
|
|
||||||
txt.chrout('\n')
|
|
||||||
txt.chrout('\n')
|
|
||||||
}
|
|
||||||
|
|
||||||
txt.print("Some planet names:\n")
|
repeat 5 {
|
||||||
repeat 20 {
|
planet.set_seed(rndw(), rndw())
|
||||||
txt.print(goatsoup.random_name())
|
planet.name = planet.random_name()
|
||||||
txt.chrout(' ')
|
txt.print("System: ")
|
||||||
|
txt.print(planet.name)
|
||||||
|
txt.chrout('\n')
|
||||||
|
txt.print(planet.soup())
|
||||||
|
txt.chrout('\n')
|
||||||
|
txt.chrout('\n')
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -45,7 +37,7 @@ _saveX .byte 0
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
goatsoup {
|
planet {
|
||||||
%option force_output
|
%option force_output
|
||||||
|
|
||||||
str[] words81 = ["fabled", "notable", "well known", "famous", "noted"]
|
str[] words81 = ["fabled", "notable", "well known", "famous", "noted"]
|
||||||
@ -96,7 +88,7 @@ goatsoup {
|
|||||||
ubyte[4] goatsoup_rnd = [0, 0, 0, 0]
|
ubyte[4] goatsoup_rnd = [0, 0, 0, 0]
|
||||||
ubyte[4] goatsoup_seed = [0, 0, 0, 0]
|
ubyte[4] goatsoup_seed = [0, 0, 0, 0]
|
||||||
|
|
||||||
str planet_name = " " ; 8 max
|
str name = " " ; 8 max
|
||||||
|
|
||||||
sub set_seed(uword s1, uword s2) {
|
sub set_seed(uword s1, uword s2) {
|
||||||
goatsoup_seed[0] = lsb(s1)
|
goatsoup_seed[0] = lsb(s1)
|
||||||
@ -148,16 +140,16 @@ goatsoup {
|
|||||||
}
|
}
|
||||||
|
|
||||||
sub soup() -> str {
|
sub soup() -> str {
|
||||||
str goatsoup_result = " " * 160
|
str planet_result = " " * 160
|
||||||
uword[6] source_stack
|
uword[6] source_stack
|
||||||
ubyte stack_ptr = 0
|
ubyte stack_ptr = 0
|
||||||
str start_source = "\x8F is \x97."
|
str start_source = "\x8F is \x97."
|
||||||
uword source_ptr = &start_source
|
uword source_ptr = &start_source
|
||||||
uword result_ptr = &goatsoup_result
|
uword result_ptr = &planet_result
|
||||||
|
|
||||||
reset_rnd()
|
reset_rnd()
|
||||||
recursive_soup()
|
recursive_soup()
|
||||||
return goatsoup_result
|
return planet_result
|
||||||
|
|
||||||
sub recursive_soup() {
|
sub recursive_soup() {
|
||||||
repeat {
|
repeat {
|
||||||
@ -184,18 +176,16 @@ goatsoup {
|
|||||||
source_ptr = source_stack[stack_ptr]
|
source_ptr = source_stack[stack_ptr]
|
||||||
} else {
|
} else {
|
||||||
if c == $b0 {
|
if c == $b0 {
|
||||||
@(result_ptr) = planet_name[0] | 32
|
@(result_ptr) = name[0] | 32
|
||||||
result_ptr++
|
result_ptr++
|
||||||
; TODO copy rest of planet name
|
concat_string(&name + 1)
|
||||||
; txt.print(&planet_name + 1)
|
|
||||||
}
|
}
|
||||||
else if c == $b1 {
|
else if c == $b1 {
|
||||||
; planet name + ian
|
@(result_ptr) = name[0] | 32
|
||||||
@(result_ptr) = planet_name[0] | 32
|
|
||||||
result_ptr++
|
result_ptr++
|
||||||
ubyte ni
|
ubyte ni
|
||||||
for ni in 1 to len(planet_name) {
|
for ni in 1 to len(name) {
|
||||||
ubyte cc = planet_name[ni]
|
ubyte cc = name[ni]
|
||||||
if cc=='e' or cc=='o' or cc==0
|
if cc=='e' or cc=='o' or cc==0
|
||||||
break
|
break
|
||||||
else {
|
else {
|
||||||
@ -211,12 +201,7 @@ goatsoup {
|
|||||||
result_ptr++
|
result_ptr++
|
||||||
}
|
}
|
||||||
else if c == $b2 {
|
else if c == $b2 {
|
||||||
; TODO copy randon name
|
concat_string(random_name())
|
||||||
; txt.print(random_name())
|
|
||||||
@(result_ptr) = '?'
|
|
||||||
result_ptr++
|
|
||||||
@(result_ptr) = '?'
|
|
||||||
result_ptr++
|
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
@(result_ptr) = c
|
@(result_ptr) = c
|
||||||
@ -226,6 +211,19 @@ goatsoup {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
sub concat_string(uword str_ptr) {
|
||||||
|
repeat {
|
||||||
|
ubyte c = @(str_ptr)
|
||||||
|
if c==0
|
||||||
|
break
|
||||||
|
else {
|
||||||
|
@(result_ptr) = c
|
||||||
|
str_ptr++
|
||||||
|
result_ptr++
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user