112 lines
2.4 KiB
Plaintext
112 lines
2.4 KiB
Plaintext
( dev/screen )
|
|
|
|
%RTN { JMP2r }
|
|
|
|
( devices )
|
|
|
|
|00 @System [ &vector $2 &pad $6 &r $2 &g $2 &b $2 ]
|
|
|20 @Screen [ &vector $2 &width $2 &height $2 &pad $2 &x $2 &y $2 &addr $2 &color $1 ]
|
|
|
|
( variables )
|
|
|
|
|0000
|
|
|
|
@center [ &x $2 &y $2 ]
|
|
|
|
( init )
|
|
|
|
|0100 ( -> )
|
|
|
|
( theme )
|
|
#530f .System/r DEO2
|
|
#f20f .System/g DEO2
|
|
#ad0f .System/b DEO2
|
|
|
|
( find screen center )
|
|
.Screen/width DEI2 #0002 DIV2 .center/x POK2
|
|
.Screen/height DEI2 #0002 DIV2 .center/y POK2
|
|
|
|
( draw )
|
|
;draw-background JSR2
|
|
;draw-sprites JSR2
|
|
|
|
BRK
|
|
|
|
@draw-background ( -- )
|
|
|
|
( draw hor line )
|
|
#0000 .Screen/x DEO2 .center/y PEK2 .Screen/y DEO2
|
|
#0000 .Screen/width DEI2 ( from/to )
|
|
&draw-hor
|
|
( draw ) #01 .Screen/color DEO
|
|
( incr ) SWP2 #0002 ADD2 DUP2 .Screen/x DEO2 SWP2
|
|
OVR2 OVR2 LTH2 ,&draw-hor JNZ
|
|
POP2 POP2
|
|
|
|
( draw ver line )
|
|
.center/x PEK2 .Screen/x DEO2 #0000 .Screen/y DEO2
|
|
#0000 .Screen/height DEI2 ( from/to )
|
|
&draw-ver
|
|
( draw ) #02 .Screen/color DEO
|
|
( incr ) SWP2 #0002 ADD2 DUP2 .Screen/y DEO2 SWP2
|
|
OVR2 OVR2 LTH2 ,&draw-ver JNZ
|
|
POP2 POP2
|
|
|
|
RTN
|
|
|
|
@draw-sprites ( -- )
|
|
|
|
( draw blending modes )
|
|
;preview_icn .Screen/addr DEO2
|
|
#0010 .Screen/y DEO2
|
|
#00 #08
|
|
&draw-pixel1
|
|
( move ) OVR #00 SWP #0008 MUL2 #0010 ADD2 .Screen/x DEO2
|
|
( draw ) OVR .Screen/color DEO
|
|
( incr ) SWP #01 ADD SWP
|
|
DUP2 LTH ,&draw-pixel1 JNZ
|
|
POP POP
|
|
#0018 .Screen/y DEO2
|
|
#00 #08
|
|
&draw-pixel2
|
|
( move ) OVR #00 SWP #0008 MUL2 #0010 ADD2 .Screen/x DEO2
|
|
( draw ) OVR #08 ADD .Screen/color DEO
|
|
( incr ) SWP #01 ADD SWP
|
|
DUP2 LTH ,&draw-pixel2 JNZ
|
|
POP POP
|
|
#0020 .Screen/y DEO2
|
|
#00 #08
|
|
&draw-icn1
|
|
( move ) OVR #00 SWP #0008 MUL2 #0010 ADD2 .Screen/x DEO2
|
|
( draw ) OVR #20 ADD .Screen/color DEO
|
|
( incr ) SWP #01 ADD SWP
|
|
DUP2 LTH ,&draw-icn1 JNZ
|
|
POP POP
|
|
#0028 .Screen/y DEO2
|
|
#00 #08
|
|
&draw-icn2
|
|
( move ) OVR #00 SWP #0008 MUL2 #0010 ADD2 .Screen/x DEO2
|
|
( draw ) OVR #28 ADD .Screen/color DEO
|
|
( incr ) SWP #01 ADD SWP
|
|
DUP2 LTH ,&draw-icn2 JNZ
|
|
POP POP
|
|
#0030 .Screen/y DEO2
|
|
#00 #08
|
|
&draw-chr1
|
|
( move ) OVR #00 SWP #0008 MUL2 #0010 ADD2 .Screen/x DEO2
|
|
( draw ) OVR #40 ADD .Screen/color DEO
|
|
( incr ) SWP #01 ADD SWP
|
|
DUP2 LTH ,&draw-chr1 JNZ
|
|
POP POP
|
|
#0038 .Screen/y DEO2
|
|
#00 #08
|
|
&draw-chr2
|
|
( move ) OVR #00 SWP #0008 MUL2 #0010 ADD2 .Screen/x DEO2
|
|
( draw ) OVR #48 ADD .Screen/color DEO
|
|
( incr ) SWP #01 ADD SWP
|
|
DUP2 LTH ,&draw-chr2 JNZ
|
|
POP POP
|
|
|
|
RTN
|
|
|
|
@preview_icn [ 183c 66db db66 3c18 0000 183c 3c18 0000 ] |