@@ 24,9 24,6 @@
%10MOD { #0f AND } %10MOD2 { #000f AND2 }
%20MOD { #1f AND } %20MOD2 { #001f AND2 }
-%DEBUG { ;print-hex/byte JSR2 #0a .Console/write DEO }
-%DEBUG2 { ;print-hex/short JSR2 #0a .Console/write DEO }
-
%RTN { JMP2r }
%TOB { NIP } %TOS { #00 SWP }
%MOD { DIVk MUL SUB } %MOD2 { DIV2k MUL2 SUB2 }
@@ 91,7 88,7 @@
#0a .player/sp STZ
#0b .player/xp STZ
- ;go-menu JSR2
+ ,go-menu JSR
BRK
@@ 103,7 100,8 @@ BRK
;on-mouse-menu .Mouse/vector DEO2
;on-frame-menu .Screen/vector DEO2
- ;start-menu JSR2
+ ;clear-screen JSR2
+ ;draw-menu JSR2
RTN
@@ 157,13 155,6 @@ BRK
BRK
-@start-menu ( -- )
-
- ;clear-screen JSR2
- ;draw-menu JSR2
-
-RTN
-
@draw-menu ( -- )
( draw castle )
@@ 179,27 170,29 @@ RTN
&options
( easy )
- .frame/x LDZ2 WIDTH 2// #0048 -- ++
- .frame/y LDZ2 #0078 ++
- #0010 ++ ;easy-txt #02 [ .mode LDZ #00 = + ] ;draw-label JSR2
- .Screen/x DEI2 #002c -- .Screen/x DEO2
- ;cursor-hor-icn .Screen/addr DEO2
- #01 [ .mode LDZ #00 = * ] .Screen/sprite DEO
-
- ( normal )
- .frame/x LDZ2 WIDTH 2// #0018 -- ++
- .frame/y LDZ2 #0078 ++
- #0010 ++ ;normal-txt #02 [ .mode LDZ #01 = + ] ;draw-label JSR2
- .Screen/x DEI2 #003c -- .Screen/x DEO2
- ;cursor-hor-icn .Screen/addr DEO2
- #01 [ .mode LDZ #01 = * ] .Screen/sprite DEO
- ( hard )
- .frame/x LDZ2 WIDTH 2// #0028 ++ ++
- .frame/y LDZ2 #0078 ++
- #0010 ++ ;hard-txt #02 [ .mode LDZ #02 = + ] ;draw-label JSR2
- .Screen/x DEI2 #002c -- .Screen/x DEO2
- ;cursor-hor-icn .Screen/addr DEO2
- #01 [ .mode LDZ #02 = * ] .Screen/sprite DEO
+ .frame/x LDZ2 .frame/y LDZ2
+ OVR2 WIDTH 2// #0048 -- ++
+ OVR2 #0078 ++
+ #0010 ++ ;easy-txt #02 [ .mode LDZ #00 = + ] ;draw-label JSR2
+ .Screen/x DEI2 #002c -- .Screen/x DEO2
+ ;cursor-hor-icn .Screen/addr DEO2
+ #01 [ .mode LDZ #00 = * ] .Screen/sprite DEO
+
+ ( normal )
+ OVR2 WIDTH 2// #0018 -- ++
+ OVR2 #0078 ++
+ #0010 ++ ;normal-txt #02 [ .mode LDZ #01 = + ] ;draw-label JSR2
+ .Screen/x DEI2 #003c -- .Screen/x DEO2
+ ;cursor-hor-icn .Screen/addr DEO2
+ #01 [ .mode LDZ #01 = * ] .Screen/sprite DEO
+ ( hard )
+ OVR2 WIDTH 2// #0028 ++ ++
+ OVR2 #0078 ++
+ #0010 ++ ;hard-txt #02 [ .mode LDZ #02 = + ] ;draw-label JSR2
+ .Screen/x DEI2 #002c -- .Screen/x DEO2
+ ;cursor-hor-icn .Screen/addr DEO2
+ #01 [ .mode LDZ #02 = * ] .Screen/sprite DEO
+ POP2 POP2
RTN
@@ 305,16 298,6 @@ BRK
( core )
-@set-mode ( mode -- )
-
- DUP .mode LDZ ! ,&changed JCN
- POP RTN
- &changed
- .mode STZ
- ;draw-menu/options JSR2
-
-RTN
-
@start-game ( -- )
( reset player )
@@ 334,17 317,45 @@ RTN
RTN
-@enter-room ( -- )
+@set-mode ( mode -- )
- ;pull-card JSR2 #00 ;put-card JSR2
- ;pull-card JSR2 #01 ;put-card JSR2
- ;pull-card JSR2 #02 ;put-card JSR2
- ;pull-card JSR2 #03 ;put-card JSR2
+ DUP .mode LDZ ! ,&changed JCN
+ POP RTN
+ &changed
+ .mode STZ
+ ;draw-menu/options JSR2
+
+RTN
+@enter-room ( -- )
+
+ #0400
+ &loop
+ ,pull-card JSR OVR .table + STZ
+ INC GTHk ,&loop JCN
+ POP2
;redraw JSR2
RTN
+@pull-card ( -- card )
+
+ .deck/length LDZ ,&continue JCN
+ #36 RTN
+ &continue
+ ( pull ) .deck/cards LDZ
+ ( decr ) .deck/length LDZ #01 - .deck/length STZ
+ ( shift left )
+ #3600
+ &loop
+ DUP .deck/cards +
+ ( get card ) INCk LDZ
+ ( put card ) SWP STZ
+ INC GTHk ,&loop JCN
+ POP2
+
+RTN
+
@init-deck ( -- )
#3600
@@ 379,31 390,6 @@ RTN
RTN
-@pull-card ( -- card )
-
- .deck/length LDZ ,&continue JCN
- #36 RTN
- &continue
- ( pull ) .deck/cards LDZ
- ( decr ) .deck/length LDZ #01 - .deck/length STZ
- ( shift left )
- #3600
- &loop
- DUP .deck/cards +
- ( get card ) INCk LDZ
- ( put card ) SWP STZ
- INC GTHk ,&loop JCN
- POP2
-
-RTN
-
-@put-card ( card id -- )
-
- .table + STZ
- ;draw-table JSR2
-
-RTN
-
@return-card ( card -- )
.deck/length LDZ .deck/cards + STZ
@@ 856,7 842,7 @@ RTN
SWP2 .Screen/x DEO2
( auto x ) #01 .Screen/auto DEO
&loop
- LDAk ;get-char JSR2 .Screen/addr DEO2
+ LDAk ,get-char JSR .Screen/addr DEO2
STHkr .Screen/sprite DEO
INC2 LDAk ,&loop JCN
POP2
@@ 865,20 851,6 @@ RTN
RTN
-@draw-value ( x* y* value color -- )
-
- STH STH
- .Screen/y DEO2
- .Screen/x DEO2
-
- STHkr #0a DIV TOS 8** ;numbers-icns ++ .Screen/addr DEO2
- OVRr STHr .Screen/sprite DEO
- .Screen/x DEI2 #0008 ++ .Screen/x DEO2
- STHr #0a MOD TOS 8** ;numbers-icns ++ .Screen/addr DEO2
- STHr .Screen/sprite DEO
-
-RTN
-
@get-char ( char -- addr* )
DUP #40 > OVR #5b < #0101 !! ,&no-uc JCN
@@ 897,6 869,20 @@ RTN
RTN
+@draw-value ( x* y* value color -- )
+
+ STH STH
+ .Screen/y DEO2
+ .Screen/x DEO2
+
+ STHkr #0a DIV TOS 8** ;numbers-icns ++ .Screen/addr DEO2
+ OVRr STHr .Screen/sprite DEO
+ .Screen/x DEI2 #0008 ++ .Screen/x DEO2
+ STHr #0a MOD TOS 8** ;numbers-icns ++ .Screen/addr DEO2
+ STHr .Screen/sprite DEO
+
+RTN
+
@clear-screen ( -- )
;blank-icn .Screen/addr DEO2
@@ 914,22 900,5 @@ RTN
RTN
-@print-hex ( value* -- )
-
- &short ( value* -- )
- SWP ,&echo JSR
- &byte ( value -- )
- ,&echo JSR
- RTN
-
- &echo ( value -- )
- STHk #04 SFT ,&parse JSR .Console/write DEO
- STHr #0f AND ,&parse JSR .Console/write DEO
- RTN
- &parse ( value -- char )
- DUP #09 GTH ,&above JCN #30 + RTN &above #09 - #60 + RTN
-
-RTN
-
include src/strings.tal
include src/assets.tal