mirror of
https://github.com/irmen/prog8.git
synced 2024-11-27 03:50:27 +00:00
textelite
This commit is contained in:
parent
bd237b2b95
commit
e5ee5be9c5
@ -3,8 +3,6 @@ TODO
|
||||
====
|
||||
|
||||
- get rid of all other TODO's in the code ;-)
|
||||
- make it possible for array literals to not only contain compile time constants?
|
||||
- allow assignment of all elements of an array at once via new array literal assignment (flatten, like with struct)
|
||||
- implement @stack for asmsub parameters
|
||||
- make it possible to use cpu opcodes such as 'nop' as variable names by prefixing all asm vars with something such as '_'
|
||||
- option to load the built-in library files from a directory instead of the embedded ones (for easier library development/debugging)
|
||||
@ -20,7 +18,7 @@ Add more compiler optimizations to the existing ones.
|
||||
|
||||
- further optimize assignment codegeneration, such as the following:
|
||||
- binexpr splitting (beware self-referencing expressions and asm code ballooning though)
|
||||
- subroutine calling convention? like: 1 byte arg -> pass in A, 2 bytes -> pass in A+Y, return value likewise.
|
||||
- subroutine calling convention? like: 1 byte arg -> pass in A, 2 bytes -> pass in A+Y, return value likewise. Especially for built-in functions!
|
||||
- can such parameter passing to subroutines be optimized to avoid copying?
|
||||
- more optimizations on the language AST level
|
||||
- more optimizations on the final assembly source level
|
||||
|
@ -7,40 +7,6 @@ main {
|
||||
|
||||
sub start() {
|
||||
|
||||
const ubyte c1 = 111
|
||||
const ubyte c2 = 122
|
||||
const ubyte c3 = 133
|
||||
ubyte ii
|
||||
|
||||
|
||||
for ii in [c1, c2, c3] {
|
||||
txt.print_ub(ii)
|
||||
}
|
||||
|
||||
; ubyte[3] numbers
|
||||
;
|
||||
; for ii in [55,44,33] {
|
||||
; txt.print_ub(ii)
|
||||
; }
|
||||
|
||||
; ubyte a = 99
|
||||
; ubyte b = 88
|
||||
; ubyte c = 77
|
||||
;
|
||||
; ;numbers = numbers ; TODO optimize away
|
||||
;
|
||||
; numbers = [c1,c2,c3]
|
||||
; numbers = [1,2,3]
|
||||
; numbers = [a,b,c]
|
||||
;
|
||||
; ubyte[] a1 = [c1,c2,c3]
|
||||
; ubyte[3] a2
|
||||
;
|
||||
; a2 = [a,b,c]
|
||||
;
|
||||
; txt.print_ub(a)
|
||||
; txt.print_ub(b)
|
||||
; txt.print_ub(c)
|
||||
}
|
||||
|
||||
asmsub testX() {
|
||||
|
@ -13,20 +13,13 @@ main {
|
||||
txt.print("\n--> TextElite conversion to Prog8 <--\n")
|
||||
|
||||
ubyte systemNr
|
||||
; for systemNr in [galaxy.numforLave, galaxy.numforZaonce, galaxy.numforDiso] { ; TODO fix compiler crash, should be able to iterate over array literal
|
||||
|
||||
|
||||
galaxy.init(1)
|
||||
repeat galaxy.numforLave+1 {
|
||||
galaxy.generate_next_planet()
|
||||
for systemNr in [galaxy.numforLave, galaxy.numforZaonce, galaxy.numforDiso] {
|
||||
galaxy.init(1)
|
||||
repeat systemNr+1 {
|
||||
galaxy.generate_next_planet()
|
||||
}
|
||||
planet.display(false)
|
||||
}
|
||||
planet.display(false)
|
||||
|
||||
galaxy.init(1)
|
||||
repeat galaxy.numforZaonce+1 {
|
||||
galaxy.generate_next_planet()
|
||||
}
|
||||
planet.display(false)
|
||||
|
||||
repeat {
|
||||
str input = "????????"
|
||||
@ -80,11 +73,7 @@ galaxy {
|
||||
sub init(ubyte galaxynum) {
|
||||
number = galaxynum
|
||||
planet.number = 255
|
||||
; TODO make this work: seed = [base0, base1, base2]
|
||||
seed[0] = base0
|
||||
seed[1] = base1
|
||||
seed[2] = base2
|
||||
|
||||
seed = [base0, base1, base2]
|
||||
repeat galaxynum-1 {
|
||||
nextgalaxy()
|
||||
}
|
||||
@ -95,9 +84,7 @@ galaxy {
|
||||
; Apply to base seed; once for galaxy 2
|
||||
; twice for galaxy 3, etc.
|
||||
; Eighth application gives galaxy 1 again
|
||||
seed[0] = twist(seed[0])
|
||||
seed[1] = twist(seed[1])
|
||||
seed[2] = twist(seed[2])
|
||||
seed = [twist(seed[0]), twist(seed[1]), twist(seed[2])]
|
||||
planet.number = 255
|
||||
}
|
||||
|
||||
@ -177,8 +164,6 @@ galaxy {
|
||||
planet.productivity *= planet.population * 8
|
||||
ubyte seed2_msb = msb(seed[2])
|
||||
planet.radius = mkword((seed2_msb & 15) + 11, planet.x)
|
||||
;planet.radius = 256 * (((seed[2] >> 8) & 15) + 11) + planet.x ; TODO why not the same answer??
|
||||
|
||||
planet.species_is_alien = lsb(seed[2]) & 128 ; bit 7 of w2_lo
|
||||
if planet.species_is_alien {
|
||||
planet.species_size = (seed2_msb >> 2) & 7 ; bits 2-4 of w2_hi
|
||||
@ -187,11 +172,7 @@ galaxy {
|
||||
planet.species_kind = (planet.species_look + (seed2_msb & 3)) & 7 ;Add bits 0-1 of w2_hi to A from previous step, and take bits 0-2 of the result
|
||||
}
|
||||
|
||||
; TODO make this work: planet.goatsoup_seed = [seed[1] & $FF, seed[1] >> 8, seed[2] & $FF, seed[2] >> 8]
|
||||
planet.goatsoup_seed[0] = lsb(seed[1])
|
||||
planet.goatsoup_seed[1] = msb(seed[1])
|
||||
planet.goatsoup_seed[2] = lsb(seed[2])
|
||||
planet.goatsoup_seed[3] = seed2_msb
|
||||
planet.goatsoup_seed = [lsb(seed[1]), msb(seed[1]), lsb(seed[2]), seed2_msb]
|
||||
}
|
||||
|
||||
sub tweakseed() {
|
||||
|
Loading…
Reference in New Issue
Block a user