This time very easy Siepinski Trinagle generator.
I used no recursion method. Very strange method, based on random numbers.
Code: Select all
_CPU v5.vcpu
_VAR FC_Main #$20A0
_VAR FC_Fill #$21A0
_VAR TableX #$22A0
_VAR TableY #$22A4
_RUN FC_Main
_VAR random #129
_VAR coordX #131
_VAR coordY #132
_VAR temp #133
_VAR mask #135
_ORG FC_Main
; -- Clear screen -----
LDWI FC_Fill
CALL vAC
LDI #0
STW coordX
LDWI #$3fff
STW mask
; -- random point ------
_LAB #1
LDWI #$04a7 ; SYS_Random
STW sysFn
SYS #34
ANDW mask
STW random
LDWI #$04b9 ; SYS_LSRW7
STW sysFn
LDW random
LSLW
ADDW random ; quick *3
SYS #30
SYS #30
STW random ; >>14
; -- math coordinates ---
LDWI #$0600 ; SYS_LSRW1
STW sysFn
LDWI TableX
ADDW random
PEEK
STW temp
LD coordX
ADDW temp
SYS #48
ST coordX
LDWI TableY
ADDW random
PEEK
STW temp
LD coordY
ADDW temp
SYS #48
ST coordY
; --- Draw point --------
LDI #63
POKE coordX
BRA #1
; ---- Clear screen -----
_ORG FC_Fill
_VAR d #129
_VAR D #130
_VAR s #131
_VAR S #132
_ORG FC_Fill
LDWI #$0B03 ; SYS_SetMemory
STW #$22
LDWI #$78A0
STW @s
LDWI #$0800 ; address of screen
STW @d
LD #0 ; color
ST #$25 ; copy value
_LAB #1
LD @s ; lenght area
ST #$24 ; copy count (c)
LDW @d
STW #$26 ; dest addr (c)
SYS #54
INC @D
LD @S ; height area
SUBI #1
ST @S
BNE #1
RET
; -----------------------
_ORG TableX
DC_B #80, #11, #149
_ORG TableY
DC_B #8, #128, #128