commit ec92775
zzo38
·
2023-09-12 22:39:35 +0000 UTC
parent 72aa355
Add save function and some other corrections into the timer program (prg/timer.tal)
1 files changed,
+33,
-21
+33,
-21
1@@ -23,22 +23,31 @@
2 @MusicAddr $2
3 @MusicState $1
4 @HourBells $1
5+@saveSize
6
7 |0100
8+ \\ Load save data
9+ LIT2 cc -Volume STZ filing ;Mode STZ
10 \\ Set up
11 #8090 #08 DEO2k INC INC DEO2k INC INC DEO2
12 #00a0 #24 DEO2
13 #00c0 #22 DEO2
14- #0126 DEO
15+ #0126 DEOk
16 ;ScreenVec #20 DEO2
17 ;KeyVec #80 DEO2
18 ;MouseVec #90 DEO2
19 #0000 #38 DEO2
20 #0002 #3a DEO2
21 ;SqWave #3c DEO2
22- LIT2 cc -Volume STZ
23- redraw-screen
24- BRK
25+ \\ JMP2rk outside of a subroutine call will be like "redraw-screen BRK"
26+ EQU JSR redraw-screen BRK
27+
28+@kSave DUP2r
29+@filing ( -- )
30+ [& "timer.save 00 ]@ LITr a8 DEO2r
31+ ;saveSize DUP2k #aa DEO2
32+ EOR2 #ac DEO2 #aefa STR
33+ JMP2r
34
35 @locate ( x y -- )
36 #0005 SFT2 #2a DEO2
37@@ -146,7 +155,7 @@
38 @redraw-sound0 ( -- )
39 #060c printat 8520 "CHIME 20 2086 00
40 #060e printat 8820 "VOLUME 2087 00
41- #0110 printat 8920 "TEST 00
42+ #0110 printat 8920 "TEST 2020 2020 20 8a20 "SAVE 00
43 @redraw-sound ( -- )
44 #0204 locate
45 .Volume LDZ [@ #7f printc #11 SUB DUP ]? POP
46@@ -171,11 +180,10 @@
47
48 @draw-cursor ( -- )
49 LIT2 06 -Cursor LDZ STHk DUP ADD ADD STHr #01 SFT ADD
50- #04 locate LIT "^ printc
51- JMP2r
52+ #04 locate LIT "^ !printc
53
54 @draw-marked-time ( addr -- addr )
55- [& LIT ": printc ]@ [& LIT ": printc ]@ LDZk printc INC LDZk printc INC JMP2r
56+ [& LIT ": printc ]@ [& LIT ": printc ]@ [& ]@ LDZk printc INC JMP2r
57
58 @redraw-screen ( -- )
59 DUP2rk EOR2r LITr 28 DEO2rk INCr INCr DEO2r #802e DEO
60@@ -253,8 +261,9 @@
61 LIT2 01 -MissFrame LDZ LTH [?
62 .Frame LDZ .Timer/f LDZ NEQ ?ScreenVec/sound
63 ]@
64+ .Frame LDZ .Timer/f STZ
65 .CountDir LDZ [?
66- ( down )
67+ &down
68 .Timer/s downtime
69 .Timer/m downtime
70 .Timer/h downtime
71@@ -263,7 +272,7 @@
72 #0202 printat "! 00
73 #0000 .Timer/h STZk INC STZ2
74 ][
75- ( up )
76+ &up
77 .Timer/s uptime
78 .Timer/m uptime
79 .Timer/h uptime
80@@ -328,7 +337,7 @@
81
82 @KeyCodes
83 ( A ) :kToggleAlarm :kAlarmOn :kGo :kTest
84- ( B ) :kToggle24 :kAlarmOff :kStop :kBrk
85+ ( B ) :kToggle24 :kAlarmOff :kStop :kSave
86 ( SELECT ) :kMode :kMode :kMode :kMode
87 ( START ) :kNoSound :kNoSound :kNoSound :kNoSound
88 ( UP ) :kBrk :kAlUp :kTimerAdj :kHighVolume
89@@ -337,11 +346,11 @@
90 ( RIGHT ) :kBrk :kCursorR :kCursorR :kNextChime
91
92 @kToggleAlarm .AlarmOn LDZ ?kAlarmOn ( fallthrough )
93-@kAlarmOff LIT2 01 -AlarmOn STZ LIT2 61 -SoundState LDZ NEQ [? #60 setsound ]@ @kMode0 ;Mode STZ redraw-screen BRK
94+@kAlarmOff LIT2 01 -AlarmOn STZ LIT2 61 -SoundState LDZ NEQ [? #60 setsound ]@ @kMode0 ;Mode STZ JMP2rk
95 @kAlarmOn LIT2 00 -AlarmOn STZ #60 setsound !kMode0
96-@kNoSound ;SoundState STZ #00ff #3e DEO2 BRK
97-@kMode LIT2 06 -Mode LDZ INC INC AND ;Mode STZ2 redraw-screen BRK
98-@kToggle24 .Clock24 LDZk #01 EOR @kStore SWP STZ redraw-screen BRK
99+@kNoSound ;SoundState STZ #00ff #3e DEO2 JMP2rk
100+@kMode LIT2 06 -Mode LDZ INC INC AND ;Mode STZ2 JMP2rk
101+@kToggle24 .Clock24 LDZk #01 EOR @kStore SWP STZ JMP2rk
102 @kLowVolume .Volume LDZk #11 SUB @kVolume DUP #0f AND [? POP2 BRK ]@ SWP STZ redraw-sound #50 setsound BRK
103 @kHighVolume .Volume LDZk #11 ADD !kVolume
104 @kPrevChime .ChimeSet LDZk DUP [? POP #05 ]@ #01 SUB !kChimeSet
105@@ -371,16 +380,18 @@
106
107 @kAlarmD
108 DUP INC #03 AND .Cursor STZ
109- #01 SFTk SWP ROT AND [? SWP #0a MUL ][ LDZk ROT ADD ]@
110+ commonD
111 OVR #24 MUL #18 ADD OVR GTH ?kStore
112 &wrong POP #00 ;Cursor STZ #38 setsound !kStore
113
114 @kTimerD
115 .TimerOn LDZ ?kNoD
116 DUP INC DUP #06 NEQ MUL .Cursor STZ .2xTimer ADD
117- #01 SFTk SWP ROT AND [? SWP #0a MUL ][ LDZk ROT ADD ]@
118+ commonD
119 DUP #3b GTH ?kAlarmD/wrong !kStore
120
121+@commonD #01 SFTk SWP ROT AND [? SWP #0a MUL ][ LDZk ROT ADD ]@ JMP2r
122+
123 @write-mark ( value address -- )
124 STH #0a DIVk STHk MUL SUB #30 STHk ADDr ADD STH ROTr STZ2r
125 JMP2r
126@@ -389,11 +400,11 @@
127 #c6 setsound
128 .TimerOn LDZ [?
129 LIT2 01 -TimerOn STZ
130- ;Timer LDZk SWP INC LDZ2 ORA ORA EQU .CountDir STZ
131+ ;Timer LDZk SWP INC LDZ2 ORA ORA EQU DUP .CountDir STZ
132 .Frame LDZ .Timer/f STZ
133 ;MissFrame STZ
134 ][
135- #d8 DUP .Mark LDZ EQU [? .Mark LDZk #08 SUB SWP STZ ]@
136+ #d8 DUPk .Mark LDZ EQU [? .Mark LDZk #08 SUB SWP STZ ]@
137 [@ DUP #08 ADD LDZ OVR STZ INC DUP ]? POP
138 .Timer LDZk #f8 write-mark
139 INC LDZk #fa write-mark
140@@ -402,7 +413,8 @@
141 .CountDir LDZ [? #ff MUL ]@
142 #3c DUP2 GTH MUL ADD #fe write-mark
143 ]@
144- redraw-screen BRK
145+ redraw-screen
146+ [? !TimerVec/down ]@ BRK
147
148 @kStop
149 #c6 setsound
150@@ -411,7 +423,7 @@
151 ][
152 ;TimerOn STZ
153 ]@
154- redraw-screen BRK
155+ JMP2rk
156
157 @MouseVec
158 ;Blank mousedraw 41