mirror of
https://github.com/irmen/prog8.git
synced 2024-09-11 15:55:55 +00:00
112 lines
2.9 KiB
Plaintext
112 lines
2.9 KiB
Plaintext
%output basic
|
|
%import c64lib
|
|
|
|
|
|
~ main {
|
|
var .byte v1t = true
|
|
var .byte v1f = false
|
|
var .word v2t = true
|
|
var .word v2f = false
|
|
var .float v3t = true
|
|
var .float v3f = false
|
|
var .text v4t = true
|
|
var .text v4f = false
|
|
var .array(3) v5t = true
|
|
var .array(3) v5f = false
|
|
var .array(10) v6t = true
|
|
var .array(10) v6f = false
|
|
var .wordarray(3) v7t = true
|
|
var .wordarray(3) v7f = false
|
|
var .wordarray(10) v8t = true
|
|
var .wordarray(10) v8f = false
|
|
var .matrix(2,2) v9t = true
|
|
var .matrix(2,2) v9f = false
|
|
var .matrix(5,5) v10t = true
|
|
var .matrix(5,5) v10f = false
|
|
|
|
const .byte c1t=true
|
|
const .byte c1f=false
|
|
const .word c2t=true
|
|
const .word c2f=false
|
|
const .float c3t=true
|
|
const .float c3f=false
|
|
|
|
memory border = $d020
|
|
|
|
|
|
start:
|
|
%breakpoint abc,def
|
|
|
|
X += border
|
|
XY += border ; @todo .word augassign register
|
|
XY -= 234+3 ; @todo .word augassign register
|
|
|
|
X += [c2f]
|
|
XY += [c2f]
|
|
Y += [XY]
|
|
|
|
XY+=255
|
|
XY+=254
|
|
XY+=253
|
|
XY-=255
|
|
XY-=254
|
|
XY-=253
|
|
|
|
v3t++
|
|
;v3t+=1 ; @todo non-reg augassign
|
|
;v3t+=1 ; @todo? (optimize) join with previous
|
|
;v3t+=0 ; is removed by optimizer
|
|
;v3t+=1 ; @todo? (optimize) join with previous
|
|
;v3t+=1 ; @todo? (optimize) join with previous
|
|
;v3t=2.23424 ; @todo store as constant float with generated name, replace value node
|
|
;v3t=2.23411 ; @todo store as constant float with generated name, replace value node
|
|
;v3t=1.23411 + 1; @todo store as constant float with generated name, replace value node
|
|
;v3t+=2.23424 ; @todo store as constant float with generated name, replace value node
|
|
;v3t+=2.23424 ; @todo store as constant float with generated name, replace value node
|
|
;v3t+=2.23411 ; @todo store as constant float with generated name, replace value node
|
|
;v3t+=2.23411 ; @todo store as constant float with generated name, replace value node
|
|
;v3t=2.23424 * v3t ; @todo store as constant float with generated name, replace value node
|
|
;XY*=2 ; @todo operator
|
|
;XY*=3 ; @todo operator
|
|
X=3 ; @todo optimize consecutive assignments
|
|
X=4
|
|
X=5
|
|
X=A=6
|
|
A=X=6
|
|
X=A=6
|
|
X=A=9
|
|
X=A=10
|
|
v3t=1 ; @todo optimize consecutive assignments
|
|
v3t=2
|
|
v3t=3
|
|
border = 0 ; @todo do not optimize consecucutive assignments to a memory var
|
|
border = 1
|
|
border = 2
|
|
|
|
;XY=XY/0 ; @todo zerodiv (during expression to code generation) @todo operator
|
|
;XY=XY//0 ; @todo zerodiv (during expression to code generation) @todo operator
|
|
;XY*=2.23424 ; @todo store as constant float with generated name, replace value node @todo operator
|
|
;XY*=2.23424 * v3t ; @todo store as constant float with generated name, replace value node @todo operator
|
|
;v3t*=2.23424 * v3t ; @todo store as constant float with generated name, replace value node @todo operator, non-register
|
|
A++
|
|
X--
|
|
A+=1
|
|
X-=2
|
|
[AX]++
|
|
[AX .byte]++
|
|
[AX .word]++
|
|
[AX .float]++
|
|
[$ccc0]++
|
|
[$ccc0 .byte]++
|
|
[$ccc0 .word]++
|
|
[$ccc0 .float]++
|
|
A+=2
|
|
A+=3
|
|
XY+=6
|
|
XY+=222
|
|
XY+=11
|
|
|
|
return 44
|
|
}
|
|
|