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