mirror of
https://git.sr.ht/~rabbits/uxn
synced 2024-10-31 19:42:39 +00:00
Remove many macros.
This commit is contained in:
parent
5eadd7695b
commit
42aab23dc1
6 changed files with 77 additions and 121 deletions
|
@ -1,16 +1,5 @@
|
|||
( uxnasm projects/examples/demos/snake.tal bin/snake.rom && uxnemu bin/snake.rom )
|
||||
|
||||
%2/ { #01 SFT } %2* { #10 SFT }
|
||||
%8// { #03 SFT2 } %8** { #30 SFT2 }
|
||||
%MOD { DIVk MUL SUB }
|
||||
%MAX { LTHk JMP SWP POP }
|
||||
%RTN { JMP2r }
|
||||
%TOS { #00 SWP }
|
||||
%BRK? { #01 JCN BRK }
|
||||
|
||||
|
||||
%DIFFICULTY { #06 }
|
||||
|
||||
( devices )
|
||||
|
||||
|00 @System [ &vector $2 &wst $1 &rst $1 &pad $4 &r $2 &g $2 &b $2 &debug $1 &halt $1 ]
|
||||
|
@ -51,8 +40,8 @@
|
|||
#0100 .Screen/height DEO2
|
||||
|
||||
( set arena )
|
||||
.Screen/width DEI2 8// NIP .arena/w STZ
|
||||
.Screen/height DEI2 8// NIP .arena/h STZ
|
||||
.Screen/width DEI2 #03 SFT2 NIP .arena/w STZ
|
||||
.Screen/height DEI2 #03 SFT2 NIP .arena/h STZ
|
||||
|
||||
;reset JSR2
|
||||
|
||||
|
@ -61,7 +50,8 @@ BRK
|
|||
@on-frame ( -> )
|
||||
|
||||
.arena/timer LDZ INC DUP .arena/timer STZ
|
||||
DIFFICULTY EQU BRK?
|
||||
#06 ( difficulty - lower value produces faster gameplay )
|
||||
EQU JMP BRK
|
||||
|
||||
( clear ) #00 ;draw-snake JSR2
|
||||
( update ) ;move JSR2
|
||||
|
@ -90,8 +80,8 @@ BRK
|
|||
#00 ;draw-snake JSR2
|
||||
#00 ;draw-apple JSR2
|
||||
|
||||
.arena/w LDZ 2/ #01 SUB .snake/x STZ
|
||||
.arena/h LDZ 2/ #01 SUB .snake/y STZ
|
||||
.arena/w LDZ #01 SFT #01 SUB .snake/x STZ
|
||||
.arena/h LDZ #01 SFT #01 SUB .snake/y STZ
|
||||
#00 .snake/dead STZ
|
||||
#00 .snake/length STZ
|
||||
#00 .snake/direction STZ
|
||||
|
@ -99,7 +89,7 @@ BRK
|
|||
#03 ;draw-snake JSR2
|
||||
;add-apple JSR2
|
||||
|
||||
RTN
|
||||
JMP2r
|
||||
|
||||
@move ( -- )
|
||||
|
||||
|
@ -107,33 +97,33 @@ RTN
|
|||
.snake/x LDZ2 STH2
|
||||
.snake/length LDZ #00
|
||||
&loop
|
||||
( pop ) DUP 2* .snake/tail ADD LDZ2 STH2 SWP2r
|
||||
( push ) DUP 2* .snake/tail ADD STH2r ROT STZ2
|
||||
( pop ) DUPk ADD .snake/tail ADD LDZ2 STH2 SWP2r
|
||||
( push ) DUPk ADD .snake/tail ADD STH2r ROT STZ2
|
||||
INC GTHk ,&loop JCN
|
||||
POP2
|
||||
POP2r
|
||||
|
||||
.snake/dead LDZ #00 EQU JMP RTN
|
||||
.snake/dead LDZ #00 EQU JMP JMP2r
|
||||
|
||||
.snake/direction LDZ
|
||||
DUP #01 NEQ ,&no-up JCN
|
||||
.snake/y LDZ #01 SUB
|
||||
.arena/h LDZ MAX
|
||||
.arena/h LDZ LTHk JMP SWP POP
|
||||
.snake/y STZ
|
||||
&no-up
|
||||
DUP #02 NEQ ,&no-down JCN
|
||||
.snake/y LDZ INC
|
||||
.arena/h LDZ MOD
|
||||
.arena/h LDZ DIVk MUL SUB
|
||||
.snake/y STZ
|
||||
&no-down
|
||||
DUP #04 NEQ ,&no-left JCN
|
||||
.snake/x LDZ #01 SUB
|
||||
.arena/w LDZ MAX
|
||||
.arena/w LDZ LTHk JMP SWP POP
|
||||
.snake/x STZ
|
||||
&no-left
|
||||
DUP #08 NEQ ,&no-right JCN
|
||||
.snake/x LDZ INC
|
||||
.arena/w LDZ MOD
|
||||
.arena/w LDZ DIVk MUL SUB
|
||||
.snake/x STZ
|
||||
&no-right
|
||||
POP
|
||||
|
@ -148,7 +138,7 @@ RTN
|
|||
|
||||
.snake/length LDZ #01
|
||||
&loop-body
|
||||
( pop ) DUP 2* .snake/tail ADD LDZ2
|
||||
( pop ) DUPk ADD .snake/tail ADD LDZ2
|
||||
.snake/x LDZ2 NEQ2 ,&no-collision-body JCN
|
||||
#01 .snake/dead STZ
|
||||
#03 ;draw-snake JSR2
|
||||
|
@ -156,16 +146,16 @@ RTN
|
|||
INC GTHk ,&loop-body JCN
|
||||
POP2
|
||||
|
||||
RTN
|
||||
JMP2r
|
||||
|
||||
@add-apple ( -- )
|
||||
|
||||
.DateTime/hour DEI2 .DateTime/minute DEI2 MUL2 #1234 MUL2 ADD
|
||||
.arena/w LDZ MOD .apple/x STZ
|
||||
.arena/w LDZ DIVk MUL SUB .apple/x STZ
|
||||
.DateTime/hour DEI2 .DateTime/minute DEI2 MUL2 #abcd MUL2 ADD
|
||||
.arena/h LDZ MOD .apple/y STZ
|
||||
.arena/h LDZ DIVk MUL SUB .apple/y STZ
|
||||
|
||||
RTN
|
||||
JMP2r
|
||||
|
||||
@draw-snake ( color -- )
|
||||
|
||||
|
@ -174,41 +164,41 @@ RTN
|
|||
;snake-icns .Screen/addr DEO2
|
||||
.snake/length LDZ #00
|
||||
&loop
|
||||
DUP 2* .snake/tail ADD LDZ TOS 8** .Screen/x DEO2
|
||||
DUP 2* .snake/tail ADD INC LDZ TOS 8** .Screen/y DEO2
|
||||
DUPk ADD .snake/tail ADD LDZ #0005 SFT2 .Screen/x DEO2
|
||||
DUPk ADD .snake/tail ADD INC LDZ #0005 SFT2 .Screen/y DEO2
|
||||
STHkr .Screen/sprite DEO
|
||||
INC GTHk ,&loop JCN
|
||||
POP2
|
||||
( draw head )
|
||||
.snake/x LDZ TOS 8** .Screen/x DEO2
|
||||
.snake/y LDZ TOS 8** .Screen/y DEO2
|
||||
.snake/x LDZ #0005 SFT2 .Screen/x DEO2
|
||||
.snake/y LDZ #0005 SFT2 .Screen/y DEO2
|
||||
;snake-icns/face .Screen/addr DEO2
|
||||
STHr .Screen/sprite DEO
|
||||
|
||||
RTN
|
||||
JMP2r
|
||||
|
||||
@draw-apple ( color -- )
|
||||
|
||||
.apple/x LDZ TOS 8** .Screen/x DEO2
|
||||
.apple/y LDZ TOS 8** .Screen/y DEO2
|
||||
.apple/x LDZ #0005 SFT2 .Screen/x DEO2
|
||||
.apple/y LDZ #0005 SFT2 .Screen/y DEO2
|
||||
;apple-chr .Screen/addr DEO2
|
||||
.Screen/sprite DEO
|
||||
|
||||
RTN
|
||||
JMP2r
|
||||
|
||||
@draw-score ( score color -- )
|
||||
|
||||
STH
|
||||
#0010 .Screen/x DEO2
|
||||
#0010 .Screen/y DEO2
|
||||
DUP #04 SFT TOS 8** ;font-hex ADD2 .Screen/addr DEO2
|
||||
DUP #04 SFT #0005 SFT2 ;font-hex ADD2 .Screen/addr DEO2
|
||||
.Screen/x DEI2 #0008 ADD2 .Screen/x DEO2
|
||||
( draw ) STHkr .Screen/sprite DEO
|
||||
#0f AND TOS 8** ;font-hex ADD2 .Screen/addr DEO2
|
||||
#0f AND #0005 SFT2 ;font-hex ADD2 .Screen/addr DEO2
|
||||
.Screen/x DEI2 #0008 ADD2 .Screen/x DEO2
|
||||
( draw ) STHr .Screen/sprite DEO
|
||||
|
||||
RTN
|
||||
JMP2r
|
||||
|
||||
( assets )
|
||||
|
||||
|
|
|
@ -1,7 +1,5 @@
|
|||
( dev/audio )
|
||||
|
||||
%MOD { DIVk MUL SUB }
|
||||
|
||||
( devices )
|
||||
|
||||
|00 @System [ &vector $2 &pad $6 &r $2 &g $2 &b $2 ]
|
||||
|
@ -57,7 +55,7 @@ BRK
|
|||
( skip ) .timer LDZ #10 EQU #01 JCN [ BRK ]
|
||||
|
||||
( get note )
|
||||
.counter LDZ #18 MOD #30 ADD
|
||||
.counter LDZ #18 DIVk MUL SUB #30 ADD
|
||||
.Audio0/pitch .counter LDZ #03 AND #40 SFT ADD DEO
|
||||
|
||||
.counter LDZ INC .counter STZ
|
||||
|
|
|
@ -1,15 +1,5 @@
|
|||
( art by @ritualdust )
|
||||
|
||||
%8** { #30 SFT2 }
|
||||
%10** { #40 SFT2 }
|
||||
|
||||
%DEBUG { ;print-hex JSR2 #0a .Console/write DEO }
|
||||
%DEBUG2 { SWP ;print-hex JSR2 ;print-hex JSR2 #0a .Console/write DEO }
|
||||
|
||||
%RTN { JMP2r }
|
||||
%TOS { #00 SWP }
|
||||
%DEC { #01 SUB }
|
||||
|
||||
%MOUSE { #82 }
|
||||
|
||||
( devices )
|
||||
|
@ -65,7 +55,7 @@ BRK
|
|||
DUP #10 NEQ ,&no-up JCN
|
||||
#00 .player/d STZ
|
||||
#00 ;draw-mouse JSR2
|
||||
.player/y LDZk DEC SWP STZ
|
||||
.player/y LDZk #01 SUB SWP STZ
|
||||
MOUSE ;draw-mouse JSR2
|
||||
&no-up
|
||||
DUP #20 NEQ ,&no-down JCN
|
||||
|
@ -77,7 +67,7 @@ BRK
|
|||
DUP #40 NEQ ,&no-left JCN
|
||||
#02 .player/d STZ
|
||||
#00 ;draw-mouse JSR2
|
||||
.player/x LDZk DEC SWP STZ
|
||||
.player/x LDZk #01 SUB SWP STZ
|
||||
MOUSE ;draw-mouse JSR2
|
||||
&no-left
|
||||
DUP #80 NEQ ,&no-right JCN
|
||||
|
@ -98,24 +88,24 @@ BRK
|
|||
|
||||
@draw-mouse ( color -- )
|
||||
|
||||
;spritesheet #29 .player/d LDZ ADD TOS DUP2 DEBUG2 10** ADD2 .Screen/addr DEO2
|
||||
.player/x LDZ TOS 8** .room/x LDZ2 ADD2 .Screen/x DEO2
|
||||
.player/y LDZ TOS 8** .room/y LDZ2 ADD2 .Screen/y DEO2
|
||||
;spritesheet #29 .player/d LDZ ADD #0004 SFT2 ADD2 .Screen/addr DEO2
|
||||
.player/x LDZ #0005 SFT2 .room/x LDZ2 ADD2 .Screen/x DEO2
|
||||
.player/y LDZ #0005 SFT2 .room/y LDZ2 ADD2 .Screen/y DEO2
|
||||
#40 ADD .Screen/sprite DEO
|
||||
|
||||
RTN
|
||||
JMP2r
|
||||
|
||||
@draw-dungeon ( stage* -- )
|
||||
|
||||
STH2
|
||||
#1000
|
||||
&ver
|
||||
DUP TOS 8** .room/y LDZ2 ADD2 .Screen/y DEO2
|
||||
DUP #0005 SFT2 .room/y LDZ2 ADD2 .Screen/y DEO2
|
||||
#1000
|
||||
&hor
|
||||
DUP TOS 8** .room/x LDZ2 ADD2 .Screen/x DEO2
|
||||
( get id ) STH2 DUP STH2r ROT OVR SWP #40 SFT ADD TOS
|
||||
( tile ) DUP2 STH2kr ADD2 LDA TOS 10** ;spritesheet ADD2 .Screen/addr DEO2
|
||||
DUP #0005 SFT2 .room/x LDZ2 ADD2 .Screen/x DEO2
|
||||
( get id ) STH2 DUP STH2r ROT OVR SWP #40 SFT ADD #00 SWP
|
||||
( tile ) DUP2 STH2kr ADD2 LDA #0004 SFT2 ;spritesheet ADD2 .Screen/addr DEO2
|
||||
( color ) STH2kr #0100 ADD2 ADD2 LDA .Screen/sprite DEO
|
||||
INC GTHk ,&hor JCN
|
||||
POP2
|
||||
|
@ -123,17 +113,17 @@ RTN
|
|||
POP2
|
||||
POP2r
|
||||
|
||||
RTN
|
||||
JMP2r
|
||||
|
||||
@print-hex ( value -- )
|
||||
|
||||
STHk #04 SFT ,&parse JSR .Console/write DEO
|
||||
STHr #0f AND ,&parse JSR .Console/write DEO
|
||||
RTN
|
||||
JMP2r
|
||||
&parse ( value -- char )
|
||||
DUP #09 GTH ,&above JCN #30 ADD RTN &above #09 SUB #60 ADD RTN
|
||||
DUP #09 GTH ,&above JCN #30 ADD JMP2r &above #09 SUB #60 ADD JMP2r
|
||||
|
||||
RTN
|
||||
JMP2r
|
||||
|
||||
@mouse-icn
|
||||
ffff ffff ffff ffff 0000 0000 0000 0000
|
||||
|
|
|
@ -11,12 +11,6 @@
|
|||
examples of asma's usage and can be discarded.
|
||||
)
|
||||
|
||||
(
|
||||
Common macros for use later on.
|
||||
)
|
||||
|
||||
%asma-IF-ERROR { ;asma/error LDA2 ORA }
|
||||
|
||||
(
|
||||
Asma's public interface.
|
||||
These routines are what are expected to be called from programs that bundle
|
||||
|
@ -32,7 +26,7 @@
|
|||
;asma-init-first-pass JSR2
|
||||
;asma-flush-ignore ;asma/flush-fn STA2
|
||||
;asma/src-filename LDA2 ;asma-assemble-file-pass JSR2
|
||||
asma-IF-ERROR ,&error JCN
|
||||
;asma/error LDA2 ORA ,&error JCN
|
||||
|
||||
;asma-init-next-pass JSR2
|
||||
;asma-flush-to-file ;asma/flush-fn STA2
|
||||
|
@ -40,7 +34,7 @@
|
|||
;asma-flush-to-console ;asma/flush-fn STA2
|
||||
&filename-present
|
||||
;asma/src-filename LDA2 ;asma-assemble-file-pass JSR2
|
||||
asma-IF-ERROR ,&error JCN
|
||||
;asma/error LDA2 ORA ,&error JCN
|
||||
|
||||
( flush output buffer )
|
||||
;asma-output/ptr LDA2 ;asma-write-buffer SUB2 ;asma/flush-fn LDA2 JSR2
|
||||
|
@ -226,7 +220,7 @@
|
|||
ROT2 ( func* line^ buf* size^ filename* )
|
||||
,file-read-chunks JSR
|
||||
|
||||
asma-IF-ERROR ,&error JCN
|
||||
;asma/error LDA2 ORA ,&error JCN
|
||||
|
||||
&error
|
||||
POP2 POP2 POP2 POP2 POP2
|
||||
|
@ -318,7 +312,7 @@
|
|||
LDAk #0a NEQ ( end-chunk* ws-char* not-newline / line^ start-of-token* )
|
||||
#00 OVR2 STA
|
||||
STH2r ,asma-assemble-token JSR ( end-chunk* ws-char* not-newline / line^ )
|
||||
asma-IF-ERROR ,&error JCN
|
||||
;asma/error LDA2 ORA ,&error JCN
|
||||
,¬-newline JCN
|
||||
,asma/lines LDR2 INC2 ,asma/lines STR2
|
||||
¬-newline ( end-chunk* ws-char* / line^ )
|
||||
|
@ -362,9 +356,9 @@
|
|||
asma/state contains several meaningful bits:
|
||||
0x02 we are in a comment,
|
||||
0x04 we are in a macro body,
|
||||
0x10 we are in a macro body that we are ignoring
|
||||
0x08 we are in a macro body that we are ignoring
|
||||
(because the macro was already defined in a previous pass).
|
||||
Since 0x10 never appears without 0x04, the lowest bit set in asma/state is
|
||||
Since 0x08 never appears without 0x04, the lowest bit set in asma/state is
|
||||
always 0x00, 0x02, or 0x04, which is very handy for use with jump tables.
|
||||
The lowest bit set can be found easily by #00 (n) SUBk AND.
|
||||
)
|
||||
|
@ -596,14 +590,11 @@
|
|||
-body routines) tokens that fail to match any first letter in their tree.
|
||||
)
|
||||
|
||||
%asma-STATE-SET { ;asma/state LDA ORA ;asma/state STA }
|
||||
%asma-STATE-CLEAR { #ff EOR ;asma/state LDA AND ;asma/state STA }
|
||||
|
||||
@asma-comment-more
|
||||
;asma/token LDA2 ;strlen JSR2 ORA ,asma-ignore JCN
|
||||
@asma-comment-start
|
||||
;asma/comment-level LDAk INC ROT ROT STA
|
||||
#02 asma-STATE-SET
|
||||
;asma/state LDA #02 ORA ;asma/state STA
|
||||
@asma-ignore
|
||||
JMP2r
|
||||
|
||||
|
@ -611,7 +602,7 @@
|
|||
;asma/token LDA2 ;strlen JSR2 ORA ,asma-ignore JCN
|
||||
;asma/comment-level LDAk #01 SUB DUP SWP2 STA ,asma-ignore JCN
|
||||
@asma-comment-end
|
||||
#02 asma-STATE-CLEAR
|
||||
;asma/state LDA #0c AND ;asma/state STA
|
||||
JMP2r
|
||||
|
||||
@asma-macro-define
|
||||
|
@ -628,22 +619,22 @@
|
|||
#0000 ;append-heap-short JSR2 ( less-than pointer )
|
||||
#0000 ;append-heap-short JSR2 ( greater-than pointer )
|
||||
;asma/token LDA2 ;append-heap-string JSR2 ( key )
|
||||
#04 asma-STATE-SET
|
||||
;asma/state LDA #04 ORA ;asma/state STA
|
||||
JMP2r
|
||||
|
||||
&ignore-macro
|
||||
#14 asma-STATE-SET
|
||||
;asma/state LDA #0c ORA ;asma/state STA
|
||||
JMP2r
|
||||
|
||||
@asma-macro-body
|
||||
;asma/state LDA #10 AND ,&skip JCN
|
||||
;asma/state LDA #08 AND ,&skip JCN
|
||||
;asma/token LDA2 ;append-heap-string JSR2
|
||||
&skip
|
||||
JMP2r
|
||||
|
||||
@asma-macro-end
|
||||
#00 ;append-heap-byte JSR2
|
||||
#14 asma-STATE-CLEAR
|
||||
;asma/state LDA #02 AND ;asma/state STA
|
||||
JMP2r
|
||||
|
||||
@asma-label-define
|
||||
|
@ -852,7 +843,7 @@
|
|||
|
||||
&keep-going
|
||||
DUP2k ;strlen JSR2 INC2 ADD2
|
||||
SWP2 ;asma-assemble-token JSR2 asma-IF-ERROR ,¯o-error JCN
|
||||
SWP2 ;asma-assemble-token JSR2 ;asma/error LDA2 ORA ,¯o-error JCN
|
||||
,¯o-loop JMP
|
||||
|
||||
¯o-error
|
||||
|
|
|
@ -54,10 +54,6 @@
|
|||
( - mul32 memory, 12 bytes )
|
||||
( - _divmod32 memory, 16 bytes )
|
||||
|
||||
%COMPLEMENT32 { SWP2 #ffff EOR2 SWP2 #ffff EOR2 }
|
||||
%DUP4 { OVR2 OVR2 }
|
||||
%POP4 { POP2 POP2 }
|
||||
|
||||
( bitcount: number of bits needed to represent number )
|
||||
( equivalent to floor[log2[x]] + 1 )
|
||||
|
||||
|
@ -164,7 +160,7 @@
|
|||
|
||||
( ~x )
|
||||
@complement32 ( x** -> ~x** )
|
||||
COMPLEMENT32 JMP2r
|
||||
SWP2 #ffff EOR2 SWP2 #ffff EOR2 JMP2r
|
||||
|
||||
( temporary registers )
|
||||
( shared by most operations, except mul32 and div32 )
|
||||
|
@ -289,7 +285,7 @@
|
|||
|
||||
( -x )
|
||||
@negate32 ( x** -> -x** )
|
||||
COMPLEMENT32
|
||||
;complement32 JSR2
|
||||
INC2 ( ~xhi -xlo )
|
||||
DUP2 #0000 NEQ2 ( ~xhi -xlo non-zero? )
|
||||
,&done JCN ( xlo non-zero => don't inc hi )
|
||||
|
@ -414,10 +410,10 @@
|
|||
( greatest common divisor - euclidean algorithm )
|
||||
@gcd32 ( x** y** -> z** )
|
||||
&loop ( x y )
|
||||
DUP4 ( x y y )
|
||||
OVR2 OVR2 ( x y y )
|
||||
;is-zero32 JSR2 ( x y y=0? )
|
||||
,&done JCN ( x y )
|
||||
DUP4 ( x y y )
|
||||
OVR2 OVR2 ( x y y )
|
||||
STH2 STH2 ( x y [y] )
|
||||
;mod32 JSR2 ( r=x%y [y] )
|
||||
STH2r ( rhi rlo yhi [ylo] )
|
||||
|
@ -428,5 +424,5 @@
|
|||
ROT2 ( yhi ylo rhi rlo )
|
||||
,&loop JMP
|
||||
&done
|
||||
POP4 ( x )
|
||||
POP2 POP2 ( x )
|
||||
JMP2r
|
||||
|
|
|
@ -1,14 +1,5 @@
|
|||
( app/neralie : clock with arvelie date )
|
||||
|
||||
%PAD { #0018 }
|
||||
|
||||
%MOD { DIVk MUL SUB }
|
||||
%MOD2 { DIV2k MUL2 SUB2 }
|
||||
|
||||
%h { .DateTime/hour DEI }
|
||||
%m { .DateTime/minute DEI }
|
||||
%s { .DateTime/second DEI }
|
||||
|
||||
( devices )
|
||||
|
||||
|00 @System [ &vector $2 &pad $6 &r $2 &g $2 &b $2 ]
|
||||
|
@ -47,7 +38,7 @@
|
|||
#01 .fps/current STZ
|
||||
|
||||
( set size )
|
||||
PAD
|
||||
#0018 ( padding )
|
||||
DUP2 .frame/x1 STZ2
|
||||
DUP2 .frame/y1 STZ2
|
||||
DUP2 .Screen/width DEI2 SWP2 SUB2 #0001 SUB2 .frame/x2 STZ2
|
||||
|
@ -79,22 +70,22 @@ BRK
|
|||
@neralie-calc ( -- )
|
||||
|
||||
( add up fractions of a pulse, store tenths in n6 )
|
||||
#0120 #00 h MUL2
|
||||
#00c0 #00 m MUL2 ADD2
|
||||
#00f8 #00 s MUL2 ADD2
|
||||
#0120 #00 .DateTime/hour DEI MUL2
|
||||
#00c0 #00 .DateTime/minute DEI MUL2 ADD2
|
||||
#00f8 #00 .DateTime/second DEI MUL2 ADD2
|
||||
#0271 #00 .fps/next LDZ MUL2 #00 .fps/current LDZ DIV2 #30 SFT2 ADD2
|
||||
#01b0 ;modf JSR2 SWP2 #0017 MUL2 #03e8 DIV2 .neralie/n6 STZ POP
|
||||
|
||||
( add up units and tens of pulses, store in n5 and n4 )
|
||||
#0042 #00 h MUL2 ADD2
|
||||
#005e #00 m MUL2 ADD2
|
||||
#000b #00 s MUL2 ADD2
|
||||
#0042 #00 .DateTime/hour DEI MUL2 ADD2
|
||||
#005e #00 .DateTime/minute DEI MUL2 ADD2
|
||||
#000b #00 .DateTime/second DEI MUL2 ADD2
|
||||
#000a ;modf JSR2 SWP2 .neralie/n5 STZ POP
|
||||
#000a ;modf JSR2 SWP2 .neralie/n4 STZ POP
|
||||
|
||||
( add up hundreds of pulses + 10 x beats, store in n0123 )
|
||||
#01a0 #00 h MUL2 ADD2
|
||||
#0006 #00 m MUL2 ADD2 .neralie/n0123 STZ2
|
||||
#01a0 #00 .DateTime/hour DEI MUL2 ADD2
|
||||
#0006 #00 .DateTime/minute DEI MUL2 ADD2 .neralie/n0123 STZ2
|
||||
|
||||
JMP2r
|
||||
|
||||
|
@ -109,14 +100,14 @@ JMP2r
|
|||
.DateTime/year DEI2 #07d6 SUB2 NIP
|
||||
DUP #0a DIV #00 SWP #30 SFT2 ;font-numbers ADD2 .Screen/addr DEO2
|
||||
#01 .Screen/sprite DEO
|
||||
#0a MOD #00 SWP #30 SFT2 ;font-numbers ADD2 .Screen/addr DEO2
|
||||
#0a DIVk MUL SUB #00 SWP #30 SFT2 ;font-numbers ADD2 .Screen/addr DEO2
|
||||
#01 .Screen/sprite DEO
|
||||
.DateTime/doty DEI2
|
||||
DUP2 #000e DIV2 #30 SFT2 ;font-letters ADD2 .Screen/addr DEO2
|
||||
#01 .Screen/sprite DEO
|
||||
#000e MOD2
|
||||
#000e DIV2k MUL2 SUB2
|
||||
DUP2 #000a DIV2 ,digit JSR
|
||||
#000a MOD2 ,digit JSR
|
||||
#000a DIV2k MUL2 SUB2 ,digit JSR
|
||||
|
||||
.Screen/x DEI2 #0008 ADD2 .Screen/x DEO2
|
||||
|
||||
|
@ -223,8 +214,8 @@ JMP2r
|
|||
|
||||
@update-fps ( -- )
|
||||
.fps/next LDZ INC .fps/next STZ
|
||||
s .fps/second LDZ NEQ JMP JMP2r
|
||||
s .fps/second STZ
|
||||
.DateTime/second DEI .fps/second LDZ NEQ JMP JMP2r
|
||||
.DateTime/second DEI .fps/second STZ
|
||||
.fps/next LDZ .fps/current STZ
|
||||
|
||||
#00 .fps/next STZ
|
||||
|
|
Loading…
Reference in a new issue