mirror of
https://git.sr.ht/~rabbits/uxn
synced 2024-12-01 18:17:25 +00:00
Optimizing drawing routines
This commit is contained in:
parent
6a6e9acc50
commit
ac9f94dd6d
5 changed files with 105 additions and 167 deletions
2
build.sh
2
build.sh
|
@ -32,7 +32,7 @@ else
|
||||||
fi
|
fi
|
||||||
|
|
||||||
echo "Assembling.."
|
echo "Assembling.."
|
||||||
./bin/assembler projects/examples/gui.shapes.usm bin/boot.rom
|
./bin/assembler projects/examples/gui.picture.usm bin/boot.rom
|
||||||
|
|
||||||
echo "Running.."
|
echo "Running.."
|
||||||
if [ "${2}" = '--cli' ];
|
if [ "${2}" = '--cli' ];
|
||||||
|
|
|
@ -1,13 +1,14 @@
|
||||||
( GUI Picture )
|
( GUI Picture )
|
||||||
|
|
||||||
%RTN { JMP2r }
|
%RTN { JMP2r }
|
||||||
|
%8+ { #0008 ADD2 }
|
||||||
|
|
||||||
;pointer { x 2 y 2 sprite 2 }
|
;color { byte 1 }
|
||||||
;pict { x 2 y 2 width 2 height 2 color 1 addr 2 }
|
;position { x 2 y 2 }
|
||||||
|
;size { width 2 height 2 }
|
||||||
|
|
||||||
|0100 ;System { vector 2 pad 6 r 2 g 2 b 2 }
|
|0100 ;System { vector 2 pad 6 r 2 g 2 b 2 }
|
||||||
|0120 ;Screen { vector 2 width 2 height 2 pad 2 x 2 y 2 addr 2 color 1 }
|
|0120 ;Screen { vector 2 width 2 height 2 pad 2 x 2 y 2 addr 2 color 1 }
|
||||||
|0160 ;Mouse { vector 2 x 2 y 2 state 1 chord 1 }
|
|
||||||
|0170 ;File { vector 2 pad 6 name 2 length 2 load 2 save 2 }
|
|0170 ;File { vector 2 pad 6 name 2 length 2 load 2 save 2 }
|
||||||
|
|
||||||
( program )
|
( program )
|
||||||
|
@ -15,18 +16,15 @@
|
||||||
|0200
|
|0200
|
||||||
|
|
||||||
( theme ) #ac52 =System.r #a362 =System.g #b253 =System.b
|
( theme ) #ac52 =System.r #a362 =System.g #b253 =System.b
|
||||||
( vectors ) ,on-mouse =Mouse.vector
|
|
||||||
( vectors ) ,on-transfer =File.vector
|
( vectors ) ,on-transfer =File.vector
|
||||||
|
|
||||||
( load )
|
( background ) ,checker_icn #23 ,cover-pattern JSR2
|
||||||
|
|
||||||
#0000 #0000 #0100 #0100 #2c ,pict_large ,draw-picture JSR2
|
#0008 #0008 #0100 #00c0 #2c ,pict_large ,draw-icn JSR2
|
||||||
|
|
||||||
|
#0020 #00d0 #0020 #0020 #25 ,pict_small ,draw-icn JSR2
|
||||||
|
|
||||||
#0128 #0010 #0080 #0080 #2e ,pict_medium ,draw-picture JSR2
|
#0010 #0010 #0020 #0010 #25 ,dvd_icn ,draw-icn JSR2
|
||||||
#0020 #00d0 #0020 #0020 #25 ,pict_small ,draw-picture JSR2
|
|
||||||
|
|
||||||
#0010 #0010 #0020 #0010 #25 ,dvd_icn ,draw-picture JSR2
|
|
||||||
|
|
||||||
( load ) ,filepath =File.name #4000 =File.length ,img =File.load
|
( load ) ,filepath =File.name #4000 =File.length ,img =File.load
|
||||||
|
|
||||||
|
@ -35,58 +33,71 @@ BRK
|
||||||
@on-transfer ( -> )
|
@on-transfer ( -> )
|
||||||
|
|
||||||
( draw ) #0080 #0020 #0100 #0100 #41 ,img ,draw-chr JSR2
|
( draw ) #0080 #0020 #0100 #0100 #41 ,img ,draw-chr JSR2
|
||||||
|
#0128 #0010 #0080 #0080 #2e ,pict_medium ,draw-icn JSR2
|
||||||
|
|
||||||
BRK
|
BRK
|
||||||
|
|
||||||
@on-mouse ( -> )
|
@draw-icn ( x y width height color addr -- )
|
||||||
|
|
||||||
( clear last cursor )
|
( load ) =Screen.addr =color =size.height =size.width =position.y =position.x
|
||||||
,clear_icn =Screen.addr
|
#0000 ~size.height
|
||||||
~pointer.x =Screen.x
|
|
||||||
~pointer.y =Screen.y
|
|
||||||
#30 =Screen.color
|
|
||||||
|
|
||||||
( record pointer positions )
|
|
||||||
~Mouse.x =pointer.x ~Mouse.y =pointer.y
|
|
||||||
|
|
||||||
( draw new cursor )
|
|
||||||
,pointer_icn =Screen.addr
|
|
||||||
~pointer.x =Screen.x
|
|
||||||
~pointer.y =Screen.y
|
|
||||||
#33 =Screen.color
|
|
||||||
|
|
||||||
BRK
|
|
||||||
|
|
||||||
@draw-chr ( x y width height color addr )
|
|
||||||
|
|
||||||
DUP2 =Screen.addr =pict.addr =pict.color =pict.height =pict.width DUP2 =Screen.y =pict.y =pict.x
|
|
||||||
$ver
|
$ver
|
||||||
~pict.x =Screen.x
|
( save ) OVR2 ~position.y ADD2 =Screen.y
|
||||||
|
#0000 ~size.width
|
||||||
$hor
|
$hor
|
||||||
( draw ) ~pict.color =Screen.color
|
( save ) OVR2 ~position.x ADD2 =Screen.x
|
||||||
( incr ) ~Screen.x #0008 ADD2 =Screen.x
|
( draw ) ~color =Screen.color
|
||||||
|
( incr ) ~Screen.addr 8+ =Screen.addr
|
||||||
|
( incr ) SWP2 8+ SWP2
|
||||||
|
OVR2 OVR2 LTH2 ^$hor JNZ
|
||||||
|
POP2 POP2
|
||||||
|
( incr ) SWP2 8+ SWP2
|
||||||
|
OVR2 OVR2 LTH2 ^$ver JNZ
|
||||||
|
POP2 POP2
|
||||||
|
|
||||||
|
RTN
|
||||||
|
|
||||||
|
@draw-chr ( x y width height color addr -- )
|
||||||
|
|
||||||
|
( load ) =Screen.addr =color =size.height =size.width =position.y =position.x
|
||||||
|
#0000 ~size.height
|
||||||
|
$ver
|
||||||
|
( save ) OVR2 ~position.y ADD2 =Screen.y
|
||||||
|
#0000 ~size.width
|
||||||
|
$hor
|
||||||
|
( save ) OVR2 ~position.x ADD2 =Screen.x
|
||||||
|
( draw ) ~color =Screen.color
|
||||||
( incr ) ~Screen.addr #0010 ADD2 =Screen.addr
|
( incr ) ~Screen.addr #0010 ADD2 =Screen.addr
|
||||||
~Screen.x ~pict.width ~pict.x ADD2 LTH2 ^$hor JNZ
|
( incr ) SWP2 8+ SWP2
|
||||||
( incr ) ~Screen.y #0008 ADD2 =Screen.y
|
OVR2 OVR2 LTH2 ^$hor JNZ
|
||||||
~Screen.y ~pict.height ~pict.y ADD2 LTH2 ^$ver JNZ
|
POP2 POP2
|
||||||
|
( incr ) SWP2 8+ SWP2
|
||||||
|
OVR2 OVR2 LTH2 ^$ver JNZ
|
||||||
|
POP2 POP2
|
||||||
|
|
||||||
RTN
|
RTN
|
||||||
|
|
||||||
@draw-picture ( x y width height color addr )
|
@cover-pattern ( addr color -- )
|
||||||
|
|
||||||
DUP2 =Screen.addr =pict.addr =pict.color =pict.height =pict.width DUP2 =Screen.y =pict.y =pict.x
|
( load ) =color =Screen.addr
|
||||||
|
#0000 ~Screen.height
|
||||||
$ver
|
$ver
|
||||||
~pict.x =Screen.x
|
( save ) OVR2 =Screen.y
|
||||||
|
#0000 ~Screen.width
|
||||||
$hor
|
$hor
|
||||||
( draw ) ~pict.color =Screen.color
|
( save ) OVR2 =Screen.x
|
||||||
( incr ) ~Screen.x #0008 ADD2 =Screen.x
|
( draw ) ~color =Screen.color
|
||||||
( incr ) ~Screen.addr #0008 ADD2 =Screen.addr
|
( incr ) SWP2 8+ SWP2
|
||||||
~Screen.x ~pict.width ~pict.x ADD2 LTH2 ^$hor JNZ
|
OVR2 OVR2 LTH2 ^$hor JNZ
|
||||||
( incr ) ~Screen.y #0008 ADD2 =Screen.y
|
POP2 POP2
|
||||||
~Screen.y ~pict.height ~pict.y ADD2 LTH2 ^$ver JNZ
|
( incr ) SWP2 8+ SWP2
|
||||||
|
OVR2 OVR2 LTH2 ^$ver JNZ
|
||||||
|
POP2 POP2
|
||||||
|
|
||||||
RTN
|
RTN
|
||||||
|
|
||||||
|
@checker_icn [ f0f0 f0f0 0f0f 0f0f ]
|
||||||
|
|
||||||
@dvd_icn [
|
@dvd_icn [
|
||||||
001f 3f38 3838 787f
|
001f 3f38 3838 787f
|
||||||
00fe fe7e 7777 e3c3
|
00fe fe7e 7777 e3c3
|
||||||
|
@ -98,9 +109,6 @@ RTN
|
||||||
f000 00e0 fcfc 8000
|
f000 00e0 fcfc 8000
|
||||||
]
|
]
|
||||||
|
|
||||||
@clear_icn [ 0000 0000 0000 0000 ]
|
|
||||||
@pointer_icn [ 80c0 e0f0 f8e0 1000 ]
|
|
||||||
|
|
||||||
@pict_small [
|
@pict_small [
|
||||||
ff80 8080 8080 8088 ffff fffc f8f9 f1f4
|
ff80 8080 8080 8088 ffff fffc f8f9 f1f4
|
||||||
ffff 0010 c721 2120 ffff 3f0f 0717 c343
|
ffff 0010 c721 2120 ffff 3f0f 0717 c343
|
||||||
|
|
|
@ -6,10 +6,15 @@
|
||||||
%8+ { #0008 ADD2 }
|
%8+ { #0008 ADD2 }
|
||||||
%ABS2 { DUP2 #000f SFT2 EQU #04 JNZ #ffff MUL2 }
|
%ABS2 { DUP2 #000f SFT2 EQU #04 JNZ #ffff MUL2 }
|
||||||
|
|
||||||
;pict { x 2 y 2 width 2 height 2 color 1 addr 2 }
|
%SIZE-TO-RECT {
|
||||||
|
STH2 STH2 OVR2 STH2r ADD2 OVR2 STH2r ADD2
|
||||||
|
} ( x y w h -- x1 y1 x2 y2 )
|
||||||
|
|
||||||
|
( draw requirements )
|
||||||
|
;color { byte 1 }
|
||||||
|
|
||||||
;rect { x1 2 y1 2 x2 2 y2 2 }
|
;rect { x1 2 y1 2 x2 2 y2 2 }
|
||||||
;line { x0 2 y0 2 x 2 y 2 sx 2 sy 2 dx 2 dy 2 e1 2 e2 2 }
|
;line { x0 2 y0 2 x 2 y 2 sx 2 sy 2 dx 2 dy 2 e1 2 e2 2 }
|
||||||
;color { byte 1 }
|
|
||||||
;circle { xc 2 yc 2 x 2 y 2 r 2 d 2 }
|
;circle { xc 2 yc 2 x 2 y 2 r 2 d 2 }
|
||||||
|
|
||||||
|0100 ;System { vector 2 pad 6 r 2 g 2 b 2 }
|
|0100 ;System { vector 2 pad 6 r 2 g 2 b 2 }
|
||||||
|
@ -20,43 +25,20 @@
|
||||||
|
|
||||||
|0200
|
|0200
|
||||||
|
|
||||||
( theme ) #13fd =System.r #1ef3 =System.g #1bf2 =System.b
|
( theme ) #f03f =System.r #f03f =System.g #003f =System.b
|
||||||
|
|
||||||
#0010 #0020 #0040 #0060 #01 ,fill-rect-fast JSR2
|
( background ) ,checker_icn #23 ,cover-pattern JSR2
|
||||||
#0020 #0030 #0050 #0070 #02 ,fill-rect-fast JSR2
|
|
||||||
#0030 #0040 #0060 #0080 #03 ,fill-rect-fast JSR2
|
|
||||||
#0070 #0020 #00a0 #0060 #01 ,line-rect-slow JSR2
|
|
||||||
#0080 #0030 #00b0 #0070 #02 ,line-rect-slow JSR2
|
|
||||||
#0090 #0040 #00c0 #0080 #03 ,line-rect-slow JSR2
|
|
||||||
|
|
||||||
#0000 #0080 #0020 #0020 #21 ,pict_small ,draw-picture JSR2
|
#0010 #0030 #0020 #0020 SIZE-TO-RECT #01 ,line-slow JSR2
|
||||||
#0010 #0088 #0020 #0020 #22 ,pict_small ,draw-picture JSR2
|
#0070 #0040 #0010 #01 ,draw-circle JSR2
|
||||||
#0020 #0090 #0020 #0020 #23 ,pict_small ,draw-picture JSR2
|
#0038 #0030 #0020 #0020 SIZE-TO-RECT #01 ,line-rect JSR2
|
||||||
#0030 #0098 #0020 #0020 #24 ,pict_small ,draw-picture JSR2
|
#0038 #0058 #0020 #0020 SIZE-TO-RECT #01 ,fill-rect JSR2
|
||||||
|
|
||||||
#0020 #0020 #0070 #0080 #01 ,draw-line JSR2
|
|
||||||
#0020 #0080 #0070 #0030 #02 ,draw-line JSR2
|
|
||||||
#00a0 #0020 #0050 #00b0 #03 ,draw-line JSR2
|
|
||||||
#00b0 #0090 #0030 #0010 #01 ,draw-line JSR2
|
|
||||||
|
|
||||||
#0040 #0040 #0030 #01 ,draw-circle JSR2
|
|
||||||
#0070 #0030 #0040 #02 ,draw-circle JSR2
|
|
||||||
#0050 #0080 #0050 #03 ,draw-circle JSR2
|
|
||||||
|
|
||||||
( benchmark )
|
|
||||||
#0000 #0000 #0008 #000f #01 ,fill-rect-fast JSR2
|
|
||||||
#0008 #0000 #0010 #000f #02 ,fill-rect-medium JSR2
|
|
||||||
#0010 #0000 #0018 #000f #03 ,fill-rect-slow JSR2
|
|
||||||
|
|
||||||
( #0000 #0010 #0008 #001f #01 ,line-rect-fast JSR2 )
|
|
||||||
#0008 #0010 #000f #001f #02 ,line-rect-medium JSR2
|
|
||||||
#0010 #0010 #0017 #001f #03 ,line-rect-slow JSR2
|
|
||||||
|
|
||||||
BRK
|
BRK
|
||||||
|
|
||||||
@draw-line ( x1 y1 x2 y2 color )
|
@line-slow ( x1 y1 x2 y2 color -- )
|
||||||
|
|
||||||
( load ) =color =line.y0 =line.x0 =line.y =line.x
|
( load ) =color -- =line.y0 -- =line.x0 =line.y =line.x
|
||||||
~line.x0 ~line.x SUB2 ABS2 =line.dx
|
~line.x0 ~line.x SUB2 ABS2 =line.dx
|
||||||
~line.y0 ~line.y SUB2 ABS2 #0000 SWP2 SUB2 =line.dy
|
~line.y0 ~line.y SUB2 ABS2 #0000 SWP2 SUB2 =line.dy
|
||||||
#ffff #00 ~line.x ~line.x0 LTS2 #0002 MUL2 ADD2 =line.sx
|
#ffff #00 ~line.x ~line.x0 LTS2 #0002 MUL2 ADD2 =line.sx
|
||||||
|
@ -80,43 +62,29 @@ BRK
|
||||||
|
|
||||||
RTN
|
RTN
|
||||||
|
|
||||||
@line-rect-medium ( x1 y1 x2 y2 color -- )
|
@line-rect ( x1 y1 x2 y2 color -- )
|
||||||
|
|
||||||
( load ) =color DUP2 ++ STH2 =rect.y2 =rect.x2 DUP2 STH2 =rect.y1 =rect.x1
|
( load ) =color DUP2 STH2 -- =rect.y2 -- =rect.x2 DUP2 STH2 =rect.y1 =rect.x1
|
||||||
STH2r STH2r
|
STH2r STH2r
|
||||||
$ver
|
$ver
|
||||||
( save ) OVR2 =Screen.y
|
( save ) OVR2 =Screen.y
|
||||||
( draw ) ~rect.x1 =Screen.x ~color DUP =Screen.color ~rect.x2 =Screen.x =Screen.color
|
( draw ) ~rect.x1 =Screen.x ~color DUP =Screen.color
|
||||||
|
( draw ) ~rect.x2 =Screen.x =Screen.color
|
||||||
( incr ) SWP2 ++ SWP2
|
( incr ) SWP2 ++ SWP2
|
||||||
OVR2 OVR2 LTH2 ^$ver JNZ
|
OVR2 OVR2 LTH2 ^$ver JNZ
|
||||||
POP2 POP2
|
POP2 POP2
|
||||||
~rect.x1 ++ ~rect.x2 --
|
~rect.x1 ~rect.x2
|
||||||
$hor
|
$hor
|
||||||
( save ) OVR2 =Screen.x
|
( save ) OVR2 =Screen.x
|
||||||
( draw ) ~rect.y1 =Screen.y ~color DUP =Screen.color ~rect.y2 =Screen.y =Screen.color
|
( draw ) ~rect.y1 =Screen.y ~color DUP =Screen.color
|
||||||
|
( draw ) ~rect.y2 =Screen.y =Screen.color
|
||||||
( incr ) SWP2 ++ SWP2
|
( incr ) SWP2 ++ SWP2
|
||||||
OVR2 OVR2 ++ LTH2 ^$hor JNZ
|
OVR2 OVR2 ++ LTH2 ^$hor JNZ
|
||||||
POP2 POP2
|
POP2 POP2
|
||||||
RTN
|
|
||||||
|
|
||||||
@line-rect-slow ( x1 y1 x2 y2 color -- )
|
|
||||||
|
|
||||||
( load ) =color =rect.y2 =rect.x2 DUP2 =Screen.y =rect.y1 DUP2 =Screen.x =rect.x1
|
|
||||||
$hor
|
|
||||||
( incr ) ~Screen.x ++ =Screen.x
|
|
||||||
( draw ) ~rect.y1 =Screen.y ~color =Screen.color
|
|
||||||
( draw ) ~rect.y2 =Screen.y ~color =Screen.color
|
|
||||||
~Screen.x ~rect.x2 LTH2 ^$hor JNZ
|
|
||||||
~rect.y1 =Screen.y
|
|
||||||
$ver
|
|
||||||
( draw ) ~rect.x1 =Screen.x ~color =Screen.color
|
|
||||||
( draw ) ~rect.x2 =Screen.x ~color =Screen.color
|
|
||||||
( incr ) ~Screen.y ++ =Screen.y
|
|
||||||
~Screen.y ~rect.y2 ++ LTH2 ^$ver JNZ
|
|
||||||
|
|
||||||
RTN
|
RTN
|
||||||
|
|
||||||
@fill-rect-fast ( x1 y1 x2 y2 color -- )
|
@fill-rect ( x1 y1 x2 y2 color -- )
|
||||||
|
|
||||||
=color
|
=color
|
||||||
( x1 x2 y1 y2 ) ROT2 SWP2
|
( x1 x2 y1 y2 ) ROT2 SWP2
|
||||||
|
@ -135,67 +103,20 @@ RTN
|
||||||
|
|
||||||
RTN
|
RTN
|
||||||
|
|
||||||
@fill-rect-medium ( x1 y1 x2 y2 color -- )
|
@draw-circle ( xc yc r color -- )
|
||||||
|
|
||||||
( load ) =color SWP2 =rect.x2 ROT2 =rect.x1
|
|
||||||
$ver
|
|
||||||
( save ) OVR2 =Screen.y
|
|
||||||
~rect.x1 ~rect.x2
|
|
||||||
$hor
|
|
||||||
( save ) OVR2 =Screen.x
|
|
||||||
( draw ) ~color =Screen.color
|
|
||||||
( incr ) SWP2 ++ SWP2
|
|
||||||
OVR2 OVR2 LTH2 ^$hor JNZ
|
|
||||||
POP2 POP2
|
|
||||||
( incr ) SWP2 ++ SWP2
|
|
||||||
OVR2 OVR2 LTH2 ^$ver JNZ
|
|
||||||
POP2 POP2
|
|
||||||
|
|
||||||
RTN
|
|
||||||
|
|
||||||
@fill-rect-slow ( x1 y1 x2 y2 color -- )
|
|
||||||
|
|
||||||
( load ) =color =rect.y2 =rect.x2 DUP2 =Screen.y =rect.y1 DUP2 =Screen.x =rect.x1
|
|
||||||
$ver
|
|
||||||
~rect.x1 =Screen.x
|
|
||||||
$hor
|
|
||||||
( draw ) ~color =Screen.color
|
|
||||||
( incr ) ~Screen.x ++ =Screen.x
|
|
||||||
~Screen.x ~rect.x2 LTH2 ^$hor JNZ
|
|
||||||
( incr ) ~Screen.y ++ =Screen.y
|
|
||||||
~Screen.y ~rect.y2 LTH2 ^$ver JNZ
|
|
||||||
|
|
||||||
RTN
|
|
||||||
|
|
||||||
@draw-picture ( x y width height color addr )
|
|
||||||
|
|
||||||
( load ) DUP2 =Screen.addr =pict.addr =pict.color =pict.height =pict.width DUP2 =Screen.y =pict.y =pict.x
|
|
||||||
$ver
|
|
||||||
~pict.x =Screen.x
|
|
||||||
$hor
|
|
||||||
( draw ) ~pict.color =Screen.color
|
|
||||||
( incr ) ~Screen.x 8+ =Screen.x
|
|
||||||
( incr ) ~Screen.addr 8+ =Screen.addr
|
|
||||||
~Screen.x ~pict.width ~pict.x ADD2 LTH2 ^$hor JNZ
|
|
||||||
( incr ) ~Screen.y 8+ =Screen.y
|
|
||||||
~Screen.y ~pict.height ~pict.y ADD2 LTH2 ^$ver JNZ
|
|
||||||
|
|
||||||
RTN
|
|
||||||
|
|
||||||
@draw-circle ( xc yc r color )
|
|
||||||
|
|
||||||
( load ) =color =circle.r =circle.yc =circle.xc
|
( load ) =color =circle.r =circle.yc =circle.xc
|
||||||
#0000 =circle.x ~circle.r =circle.y
|
#0000 =circle.x ~circle.r =circle.y
|
||||||
~circle.r #0002 MUL2 #0003 SUB2 =circle.d
|
~circle.r #0002 MUL2 =circle.d
|
||||||
( draw ) ,$seg JSR2
|
( draw ) ,$seg JSR2
|
||||||
$loop
|
$loop
|
||||||
( incr ) ~circle.x ++ =circle.x
|
( incr ) ~circle.x ++ =circle.x
|
||||||
~circle.d #0000 ++ LTS2 ^$else JNZ
|
~circle.d #0001 LTS2 ^$else JNZ
|
||||||
( decr ) ~circle.y -- =circle.y
|
( decr ) ~circle.y -- =circle.y
|
||||||
~circle.x ~circle.y SUB2 #0004 MUL2 ~circle.d ADD2 #000a ADD2 =circle.d
|
~circle.x ~circle.y SUB2 #0004 MUL2 ~circle.d ADD2 =circle.d
|
||||||
,$end JMP2
|
,$end JMP2
|
||||||
$else
|
$else
|
||||||
~circle.x #0004 MUL2 ~circle.d ADD2 #0006 ADD2 =circle.d
|
~circle.x #0004 MUL2 ~circle.d ADD2 =circle.d
|
||||||
$end
|
$end
|
||||||
( draw ) ,$seg JSR2
|
( draw ) ,$seg JSR2
|
||||||
~circle.y ~circle.x -- GTS2 ^$loop JNZ
|
~circle.y ~circle.x -- GTS2 ^$loop JNZ
|
||||||
|
@ -212,14 +133,23 @@ RTN
|
||||||
|
|
||||||
RTN
|
RTN
|
||||||
|
|
||||||
@pict_small [
|
@cover-pattern ( addr color -- )
|
||||||
|
|
||||||
ff80 8080 8080 8088 ffff fffc f8f9 f1f4
|
( load ) =color =Screen.addr
|
||||||
ffff 0010 c721 2120 ffff 3f0f 0717 c343
|
#0000 ~Screen.height
|
||||||
8888 8080 8080 8080 f0f1 f2f5 f2f1 f0f4
|
$ver
|
||||||
1208 804c 9212 4c00 7303 0343 1b1b fbfb
|
( save ) OVR2 =Screen.y
|
||||||
8080 8f83 8383 8393 f0f3 f1f0 e4c0 80ff
|
#0000 ~Screen.width
|
||||||
00c7 c7c6 4606 00ff c3d3 c307 870f 3fff
|
$hor
|
||||||
8f83 8383 8383 83ff fff7 fdff c0e2 f1ff
|
( save ) OVR2 =Screen.x
|
||||||
7fef bfff 07af 5fff ffff ffff ffff ffff
|
( draw ) ~color =Screen.color
|
||||||
]
|
( incr ) SWP2 8+ SWP2
|
||||||
|
OVR2 OVR2 LTH2 ^$hor JNZ
|
||||||
|
POP2 POP2
|
||||||
|
( incr ) SWP2 8+ SWP2
|
||||||
|
OVR2 OVR2 LTH2 ^$ver JNZ
|
||||||
|
POP2 POP2
|
||||||
|
|
||||||
|
RTN
|
||||||
|
|
||||||
|
@checker_icn [ f0f0 f0f0 0f0f 0f0f ]
|
||||||
|
|
BIN
projects/pictures/ergo100x0c0.chr
Normal file
BIN
projects/pictures/ergo100x0c0.chr
Normal file
Binary file not shown.
BIN
projects/pictures/felix0c0c.chr
Normal file
BIN
projects/pictures/felix0c0c.chr
Normal file
Binary file not shown.
Loading…
Reference in a new issue