From ee33718ab57c5a041b55c70c0ae7e046b3d1592b Mon Sep 17 00:00:00 2001 From: fishsoupisgood Date: Tue, 28 May 2019 12:09:03 +0100 Subject: general tidy up add all the timex apps and the toebes apps and numpad --- 3ball/3ball.asm | 148 --- Makefile | 27 +- dayfind/dayfind.asm | 375 ------- dl150/include/wristapp.i | 1508 ------------------------- dl150s/include/wristapp.i | 1508 ------------------------- flash/flash.asm | 135 --- from_others/Makefile | 9 + from_others/numpad/Makefile | 58 + from_others/numpad/numpad-a.zap | 33 + from_others/numpad/numpad-b.zap | 33 + from_others/numpad/numpad-c.zap | 33 + from_others/numpad/numpad-d.zap | 33 + from_others/numpad/numpad.txt | 165 +++ from_others/numpad/numpad.zsm | 718 ++++++++++++ from_timex/Makefile | 11 + from_timex/chrono12.zap | 27 + from_timex/conv01.zap | 31 + from_timex/copyme01.zap | 25 + from_timex/golf01.zap | 29 + from_timex/melody17.zap | 25 + from_timex/note13.zap | 31 + from_timex/pulse01.zap | 29 + from_timex/quick13.zap | 31 + from_timex/timer13.zap | 31 + from_timex/wksiso11.zap | 33 + from_timex/wksusa11.zap | 33 + from_timex/world01.zap | 31 + from_toebes/3ball/3ball.asm | 1 + from_toebes/3ball/3ball.known_good | 1 + from_toebes/3ball/3ball.zap | 29 + from_toebes/3ball/3ball.zsm | 148 +++ from_toebes/Makefile | 46 + from_toebes/datahid2/Data Hider App Beta.txt | 43 + from_toebes/datahid2/datahid2.zap | 33 + from_toebes/dayfind/dayfind.asm | 384 +++++++ from_toebes/dayfind/dayfind.known_good | 1 + from_toebes/dayfind/dayfind.zap | 31 + from_toebes/dayfind/dayfind.zsm | 375 +++++++ from_toebes/endoff/endoff.asm | 1 + from_toebes/endoff/endoff.known_good | 1 + from_toebes/endoff/endoff.zap | 25 + from_toebes/endoff/endoff.zsm | 145 +++ from_toebes/flash/flash.asm | 1 + from_toebes/flash/flash.known_good | 1 + from_toebes/flash/flash.zap | 25 + from_toebes/flash/flash.zsm | 135 +++ from_toebes/hello/hello.asm | 1 + from_toebes/hello/hello.known_good | 1 + from_toebes/hello/hello.zap | 25 + from_toebes/hello/hello.zsm | 83 ++ from_toebes/hexdump/hexdump.asm | 1 + from_toebes/hexdump/hexdump.known_good | 1 + from_toebes/hexdump/hexdump.zap | 33 + from_toebes/hexdump/hexdump.zsm | 322 ++++++ from_toebes/number/number.asm | 1 + from_toebes/number/number.known_good | Bin 0 -> 147 bytes from_toebes/number/number.zsm | 117 ++ from_toebes/passwd/passwd.asm | 237 ++++ from_toebes/passwd/passwd.known_good | Bin 0 -> 337 bytes from_toebes/passwd/passwd.zap | 25 + from_toebes/passwd/passwd.zsm | 232 ++++ from_toebes/pick6/pick6.asm | 1 + from_toebes/pick6/pick6.known_good | 1 + from_toebes/pick6/pick6.zap | 33 + from_toebes/pick6/pick6.zsm | 335 ++++++ from_toebes/promdump/promdump.asm | 336 ++++++ from_toebes/promdump/promdump.known_good | 1 + from_toebes/promdump/promdump.zap | 33 + from_toebes/promdump/promdump.zsm | 336 ++++++ from_toebes/shipbell/shipbell.asm | 176 +++ from_toebes/shipbell/shipbell.known_good | 1 + from_toebes/shipbell/shipbell.zap | 27 + from_toebes/shipbell/shipbell.zsm | 176 +++ from_toebes/sound1/sound1.asm | 1 + from_toebes/sound1/sound1.known_good | Bin 0 -> 46 bytes from_toebes/sound1/sound1.spc | Bin 0 -> 50 bytes from_toebes/sound1/sound1.zsm | 83 ++ from_toebes/spend0/spend0.asm | 1 + from_toebes/spend0/spend0.known_good | 1 + from_toebes/spend0/spend0.zap | 37 + from_toebes/spend0/spend0.zsm | 656 +++++++++++ from_toebes/spend0/spendset.exe | Bin 0 -> 28160 bytes from_toebes/testsnd/testsnd.asm | 155 +++ from_toebes/testsnd/testsnd.known_good | 1 + from_toebes/testsnd/testsnd.zap | 26 + from_toebes/testsnd/testsnd.zsm | 154 +++ from_toebes/tipcalc/tipcalc1.zap | 35 + from_toebes/update/update.asm | 1 + from_toebes/update/update.known_good | 1 + from_toebes/update/update.zap | 25 + from_toebes/update/update.zsm | 133 +++ hello/hello.asm | 84 -- include/dl150/WRISTAPP.I | 1 + include/dl150/wristapp.i | 1509 ++++++++++++++++++++++++++ include/dl150s/WRISTAPP.I | 1 + include/dl150s/wristapp.i | 1508 +++++++++++++++++++++++++ number/number.asm | 117 -- password/password.asm | 232 ---- tools/zap2app | 14 + update/update.asm | 133 --- 100 files changed, 9758 insertions(+), 4262 deletions(-) delete mode 100644 3ball/3ball.asm delete mode 100644 dayfind/dayfind.asm delete mode 100644 dl150/include/wristapp.i delete mode 100644 dl150s/include/wristapp.i delete mode 100644 flash/flash.asm create mode 100644 from_others/Makefile create mode 100644 from_others/numpad/Makefile create mode 100644 from_others/numpad/numpad-a.zap create mode 100644 from_others/numpad/numpad-b.zap create mode 100644 from_others/numpad/numpad-c.zap create mode 100644 from_others/numpad/numpad-d.zap create mode 100644 from_others/numpad/numpad.txt create mode 100644 from_others/numpad/numpad.zsm create mode 100644 from_timex/Makefile create mode 100644 from_timex/chrono12.zap create mode 100644 from_timex/conv01.zap create mode 100644 from_timex/copyme01.zap create mode 100644 from_timex/golf01.zap create mode 100644 from_timex/melody17.zap create mode 100644 from_timex/note13.zap create mode 100644 from_timex/pulse01.zap create mode 100644 from_timex/quick13.zap create mode 100644 from_timex/timer13.zap create mode 100644 from_timex/wksiso11.zap create mode 100644 from_timex/wksusa11.zap create mode 100644 from_timex/world01.zap create mode 120000 from_toebes/3ball/3ball.asm create mode 120000 from_toebes/3ball/3ball.known_good create mode 100644 from_toebes/3ball/3ball.zap create mode 100644 from_toebes/3ball/3ball.zsm create mode 100644 from_toebes/Makefile create mode 100644 from_toebes/datahid2/Data Hider App Beta.txt create mode 100644 from_toebes/datahid2/datahid2.zap create mode 100644 from_toebes/dayfind/dayfind.asm create mode 120000 from_toebes/dayfind/dayfind.known_good create mode 100644 from_toebes/dayfind/dayfind.zap create mode 100644 from_toebes/dayfind/dayfind.zsm create mode 120000 from_toebes/endoff/endoff.asm create mode 120000 from_toebes/endoff/endoff.known_good create mode 100644 from_toebes/endoff/endoff.zap create mode 100644 from_toebes/endoff/endoff.zsm create mode 120000 from_toebes/flash/flash.asm create mode 120000 from_toebes/flash/flash.known_good create mode 100644 from_toebes/flash/flash.zap create mode 100644 from_toebes/flash/flash.zsm create mode 120000 from_toebes/hello/hello.asm create mode 120000 from_toebes/hello/hello.known_good create mode 100644 from_toebes/hello/hello.zap create mode 100644 from_toebes/hello/hello.zsm create mode 120000 from_toebes/hexdump/hexdump.asm create mode 120000 from_toebes/hexdump/hexdump.known_good create mode 100644 from_toebes/hexdump/hexdump.zap create mode 100644 from_toebes/hexdump/hexdump.zsm create mode 120000 from_toebes/number/number.asm create mode 100644 from_toebes/number/number.known_good create mode 100644 from_toebes/number/number.zsm create mode 100644 from_toebes/passwd/passwd.asm create mode 100644 from_toebes/passwd/passwd.known_good create mode 100644 from_toebes/passwd/passwd.zap create mode 100644 from_toebes/passwd/passwd.zsm create mode 120000 from_toebes/pick6/pick6.asm create mode 120000 from_toebes/pick6/pick6.known_good create mode 100644 from_toebes/pick6/pick6.zap create mode 100644 from_toebes/pick6/pick6.zsm create mode 100644 from_toebes/promdump/promdump.asm create mode 120000 from_toebes/promdump/promdump.known_good create mode 100644 from_toebes/promdump/promdump.zap create mode 100644 from_toebes/promdump/promdump.zsm create mode 100644 from_toebes/shipbell/shipbell.asm create mode 120000 from_toebes/shipbell/shipbell.known_good create mode 100644 from_toebes/shipbell/shipbell.zap create mode 100644 from_toebes/shipbell/shipbell.zsm create mode 120000 from_toebes/sound1/sound1.asm create mode 100644 from_toebes/sound1/sound1.known_good create mode 100644 from_toebes/sound1/sound1.spc create mode 100644 from_toebes/sound1/sound1.zsm create mode 120000 from_toebes/spend0/spend0.asm create mode 120000 from_toebes/spend0/spend0.known_good create mode 100644 from_toebes/spend0/spend0.zap create mode 100644 from_toebes/spend0/spend0.zsm create mode 100644 from_toebes/spend0/spendset.exe create mode 100644 from_toebes/testsnd/testsnd.asm create mode 120000 from_toebes/testsnd/testsnd.known_good create mode 100644 from_toebes/testsnd/testsnd.zap create mode 100644 from_toebes/testsnd/testsnd.zsm create mode 100644 from_toebes/tipcalc/tipcalc1.zap create mode 120000 from_toebes/update/update.asm create mode 120000 from_toebes/update/update.known_good create mode 100644 from_toebes/update/update.zap create mode 100644 from_toebes/update/update.zsm delete mode 100644 hello/hello.asm create mode 120000 include/dl150/WRISTAPP.I create mode 100644 include/dl150/wristapp.i create mode 120000 include/dl150s/WRISTAPP.I create mode 100644 include/dl150s/wristapp.i delete mode 100644 number/number.asm delete mode 100644 password/password.asm create mode 100755 tools/zap2app delete mode 100644 update/update.asm diff --git a/3ball/3ball.asm b/3ball/3ball.asm deleted file mode 100644 index 73a3be4..0000000 --- a/3ball/3ball.asm +++ /dev/null @@ -1,148 +0,0 @@ -;Name: 3BALL -;Version: 3BALL -;Description: An executive decision maker that will give a yes/no/maybe answer. Pressing Next will generate another answer and beep (since it will be the same answer sometimes). -; -;(c) 1997 Wayne Buttles (timex@fdisk.com). Compiled using tools and knowledge published by John A. Toebes, VIII and Michael Polymenakos (mpoly@panix.com). -; Some enhancements by John Toebes... -; -;HelpFile: watchapp.hlp -;HelpTopic: 100 -; -; (1) Program specific constants -; - INCLUDE "wristapp.i" -; -; Program specific constants -; -CURRENT_TIC EQU $27 ; Current system clock tic (Timer) -LAST_ANS EQU $61 -RAND_SEED EQU $60 -MARQ_POS EQU $62 -START EQU * -; -; (2) System entry point vectors -; -L0110: jmp MAIN ; The main entry point - WRIST_MAIN -L0113: bclr 1,BTNFLAGS ; Called when we are suspended for any reason - WRIST_SUSPEND - rts -L0116: jmp FLASH ; Called to handle any timers or time events - WRIST_DOTIC -L0119: bclr 1,BTNFLAGS ; Called when the COMM app starts and we have timers pending - WRIST_INCOMM - rts -L011c: rts ; Called when the COMM app loads new data - WRIST_NEWDATA - nop - nop - -L011f: lda STATETAB,X ; The state table get routine - WRIST_GETSTATE - rts - -L0123: jmp HANDLE_STATE0 - db STATETAB-STATETAB -; -; (3) Program strings -; -S6_MSG timex6 "3 BALL" -S6_MAYBE timex6 "MAYBE" -S6_YES timex6 " YES" -S6_NO timex6 " NO" -S6_MARQ timex6 " +O+ " - -MARQ_SEL - DB S6_MARQ+2-START - DB S6_MARQ+3-START - DB S6_MARQ+2-START - DB S6_MARQ+1-START - DB S6_MARQ-START - DB S6_MARQ+1-START - -MSG_SEL DB S6_YES-START - DB S6_NO-START - DB S6_MAYBE-START - DB S6_YES-START -; -; (4) State Table -; -STATETAB: - db 0 - db EVT_ENTER,TIM2_16TIC,0 ; Initial state - db EVT_RESUME,TIM_ONCE,0 ; Resume from a nested app - db EVT_DNNEXT,TIM2_16TIC,0 ; Next button - db EVT_TIMER2,TIM_ONCE,0 ; Timer - db EVT_MODE,TIM_ONCE,$FF ; Mode button - db EVT_END -; -; (5) State Table 0 Handler -; This is called to process the state events. -; We see ENTER, RESUME, TIMER2 and NEXT events -; -HANDLE_STATE0: - bset 1,APP_FLAGS ; Indicate that we can be suspended - bclr 1,BTNFLAGS - lda BTNSTATE - cmp #EVT_DNNEXT ; Did they press the next button? - beq DOITAGAIN - cmp #EVT_ENTER ; Or did we start out - beq DOITAGAIN - cmp #EVT_RESUME - beq REFRESH -; -; (6) Select a random answer -; -SHOWIT - bsr RAND - and #3 ; go to a 1 in 4 chance - sta LAST_ANS -; -; (7) Display the currently selected random number -; -REFRESH - ldx LAST_ANS ; Get the last answer we had, and use it as an index - lda MSG_SEL,X ; And get the message to display - jsr PUT6TOP ; Put that on the top -BANNER - lda #S6_MSG-START - jsr PUT6MID - lda #SYS8_MODE ; And show the mode on the bottom - jmp PUTMSGBOT -; -; (8) This flashes the text on the screen -; -FLASH - lda CURRENT_APP ; See which app is currently running - cmp #APP_WRIST ; Is it us? - bne L0113 ; No, so just turn off the tic timer since we don't need it - ldx #5 - lda MARQ_POS - jsr INCA_WRAPX - sta MARQ_POS - tax - lda MARQ_SEL,X - jmp PUT6TOP -; -; (9) They want us to do it again -; -DOITAGAIN ; Tell them we are going to do it again - clr MARQ_POS - bset 1,BTNFLAGS - bra BANNER -; -; (10) Here is a simple random number generator -; -RAND - lda RAND_SEED - ldx #85 - mul - add #25 - sta RAND_SEED - rola - rola - rola - rts -; -; (11) This is the main initialization routine which is called when we first get the app into memory -; -MAIN: - lda #$c0 ; We want button beeps and to indicate that we have been loaded - sta WRISTAPP_FLAGS - lda CURRENT_TIC - sta RAND_SEED - rts diff --git a/Makefile b/Makefile index d8482f5..b561b76 100644 --- a/Makefile +++ b/Makefile @@ -1,26 +1,9 @@ +SUBDIRS=from_timex from_others from_toebes +default: + for i in ${SUBDIRS}; do ${MAKE} -C $$i; done -APPDIRS=hello number update flash password dayfind 3ball - -APPS=${foreach appdir,${APPDIRS},${appdir}/${appdir}.app} -PS=${APPS:%.app=%.p} -LSTS=${APPS:%.app=%.lst} - -CROSS=../asl/ - -AFLAGS=-i dl150/include -cpu datalink -AS=${CROSS}asl ${AFLAGS} - -P2BIN=${CROSS}p2bin - - -default:${APPS} - -%.app:%.p - ${P2BIN} $< $@ -r 0x110-\$$ - -%.p:%.asm - ${AS} -L ${@:%.p=%.lst} -o $@ $< clean: - /bin/rm -f ${APPS} ${PS} ${LSTS} + for i in ${SUBDIRS}; do ${MAKE} -C $$i $@; done + diff --git a/dayfind/dayfind.asm b/dayfind/dayfind.asm deleted file mode 100644 index 9eed466..0000000 --- a/dayfind/dayfind.asm +++ /dev/null @@ -1,375 +0,0 @@ -;Name: Day Finder -;Version: DAYFIND -;Description: This will allow you to determine the date for a given day of the week and vice-versa. -;by John A. Toebes, VIII -; -;Press the prev/next buttons to advance by a single day. Press SET to access the ability to advance/backup by -;weeks, months, days, and years. The MODE button advances through those different states -; -;TIP: Download your watch faster: Download a WristApp once, then do not send it again. It stays in the watch! -;HelpFile: watchapp.hlp -;HelpTopic: 106 - INCLUDE "wristapp.i" -; -; (1) Program specific constants -; -FLAGBYTE EQU $61 -B_CLEAR EQU 0 ; Bit 0 indicates that we need to clear the display first -B_SCANUP EQU 1 ; Bit 1 indicates that we are scanning up -B_SCANNING EQU 2 ; Bit 2 indicates that we are in a fake scanning mode -DIGSEL EQU $62 ; Indicates which digit we are working on - ; 0 = DAY OF WEEK - ; 1 = Month - ; 2 = Day - ; 3 = Year -YEAR_DIG1 EQU $63 ; This is the first digit of the year to blink (the tens digit) -YEAR_DIG2 EQU $64 ; This is the second digit of the year to blink (the ones digit) -COUNTER EQU $65 ; A convenient counter for us to advance a week at a time -; -; -; (2) System entry point vectors -; -START EQU * -L0110: jmp MAIN ; The main entry point - WRIST_MAIN -L0113: rts ; Called when we are suspended for any reason - WRIST_SUSPEND - nop - nop -L0116: rts ; Called to handle any timers or time events - WRIST_DOTIC - nop - nop -L0119: rts ; Called when the COMM app starts and we have timers pending - WRIST_INCOMM - nop - nop -L011c: rts ; Called when the COMM app loads new data - WRIST_NEWDATA - nop - nop - -L011f: lda STATETAB0,X ; The state table get routine - WRIST_GETSTATE - rts - -L0123: jmp HANDLE_STATE0 - db STATETAB0-STATETAB0 -L0127: jmp HANDLE_STATE1 - db STATETAB1-STATETAB0 -; -; (3) Program strings -S6_DAY timex6 "DAY " -S6_FIND timex6 " FIND" -S8_TOEBES timex "J.TOEBES" -S8_DAYFIND timex "DAY FIND" -S8_WEEK db C_LEFTARR - timex " WEEK " - db C_RIGHTARR -S8_MONTH db C_LEFTARR - timex "MONTH " - db C_RIGHTARR -S8_DAY db C_LEFTARR - timex " DAY " - db C_RIGHTARR -S8_YEAR db C_LEFTARR - timex " YEAR " - db C_RIGHTARR -; -; (4) State Table -; -STATETAB0: - db 0 - db EVT_ENTER,TIM1_4TIC,0 ; Initial state - db EVT_TIMER1,TIM_ONCE,0 ; The timer from the enter event - db EVT_RESUME,TIM_ONCE,0 ; Resume from a nested app - db EVT_MODE,TIM_ONCE,$FF ; Mode button - db EVT_SET,TIM_ONCE,1 ; SET button pressed - db EVT_DNNEXT,TIM2_8TIC,0 ; NEXT button pressed - db EVT_DNPREV,TIM2_8TIC,0 ; PREV button pressed - db EVT_UPANY4,TIM_ONCE,0 ; The - db EVT_TIMER2,TIM2_TIC,0 ; The timer for the next/prev button pressed - db EVT_END - -STATETAB1: - db 1 - db EVT_RESUME,TIM_ONCE,1 ; Resume from a nested app - db EVT_DNANY4,TIM_ONCE,1 ; NEXT, PREV, SET, MODE button pressed - db EVT_UPANY4,TIM_ONCE,1 ; NEXT, PREV, SET, MODE button released - db EVT_USER2,TIM_ONCE,0 - db EVT_USER3,TIM2_8TIC,1 ; - db EVT_TIMER2,TIM2_TIC,1 ; - db EVT_END -; -; (5) State Table 0 Handler -; This is called to process the state events. -; We see ENTER, TIMER2, and RESUME events -; -HANDLE_STATE0: - bset 1,APP_FLAGS ; Indicate that we can be suspended - lda BTNSTATE ; Get the event - cmp #EVT_DNNEXT - beq DO_NEXT0 - cmp #EVT_DNPREV - beq DO_PREV0 - cmp #EVT_TIMER2 - beq DO_SCAN - cmp #EVT_ENTER ; Is this our initial entry? - bne REFRESH0 -; -; This is the initial event for starting us up -; -DO_ENTER -; -; (6) This code gets the current date from the system - - jsr ACQUIRE ; Lock so that it doesn't change under us - ldx #TZ1_MONTH ; Assume that we are using the first timezone - jsr CHECK_TZ ; See which one we are really using - bcc COPY_TZ1 ; If we were right, just skip on to do the work - ldx #TZ2_MONTH ; Wrong guess, just load up the second time zone -COPY_TZ1 - lda 0,x ; Copy out the month - sta SCAN_MONTH - lda 1,x ; Day - sta SCAN_DAY - lda 2,x ; and year - sta SCAN_YEAR - jsr RELEASE ; Unlock so the rest of the system is happy - - bclr B_CLEAR,FLAGBYTE ; Indicate that we need to clear the display - clr DIGSEL ; Start us off on the week advance - jsr CLEARSYM ; Clear the display - lda #S6_DAY-START - jsr PUT6TOP - lda #S6_FIND-START - jsr PUT6MID - lda #S8_TOEBES-START - jmp BANNER8 - -DO_SCAN - brclr B_SCANUP,FLAGBYTE,DO_PREV0 ; Were we scanning up or down? -DO_NEXT0 - bset B_SCANUP,FLAGBYTE ; We are now scanning up - jsr INCREMENT_SCAN_DATE ; Advance to the next date - bra SHOW_DATE ; Comment this out and use the next one if you want - ; jmp APPT_SHOW_SCAN ; to put the text 'SCAN' on the bottom when we are in scan mode - -DO_PREV0 - bclr B_SCANUP,FLAGBYTE ; We are now scanning down - jsr DECREMENT_SCAN_DATE ; Back up to the previous date - bra SHOW_DATE ; Show the date on the screen. - ; jmp APPT_SHOW_SCAN ; Use this if you want 'SCAN' on the bottom of the display -; -; We come here for a RESUME or TIMER2 event. For this we want to reset the display -; -REFRESH0 - brset B_CLEAR,FLAGBYTE,NOCLEAR0 ; Do we need to clear the display first? - bset B_CLEAR,FLAGBYTE ; Mark that the display has been cleared - jsr CLEARALL ; and do the work of clearing -NOCLEAR0 - lda #S8_DAYFIND-START ; Put up the name of the app on the display - jsr BANNER8 -SHOW_DATE - jsr APPT_SHOW_DATE ; Show the date on the screen - ldx SCAN_YEAR ; as well as the year - jmp PUTYEARMID -;-------------------------------------------------------------------------------- -; (7) State Table 1 Handler -; This is called to process the state events. -; We see SET, RESUME, USER3, TIMER2, DNANY4, and UPANY4 events -; We use the USER3 to trigger a delay which fires off a TIMER2 sequence of events. -; This allows us to have the PREV/NEXT buttons repeat for advancing the WEEK and YEAR -; since we can't use the UPDATE routines for them. -; -HANDLE_STATE1: - bset 1,APP_FLAGS ; Indicate that we can be suspended - lda BTNSTATE ; Get the event - cmp #EVT_TIMER2 ; Was it a timer for a repeat operation? - beq DO_UPD ; Yes, go handle it - cmp #EVT_USER3 ; Was it the USER3 event fired from the PREV/NEXT buttons? - bne TRY_UP ; No, try again - rts ; Yes, just ignore it, it will cause a timer to go off later -TRY_UP - bclr B_SCANNING,FLAGBYTE ; We can't be scanning any more, so turn it off - cmp #EVT_UPANY4 ; Was it any button being released? - bne TRY_DN ; No, try again - jmp REFRESH ; Yes, go refresh the screen (note that the branch is out of range) -TRY_DN - cmp #EVT_DNANY4 ; Is this our initial entry? - beq GET_DN ; No, try again - jmp FORCEFRESH ; Yes, go setup the screen (note that the branch is out of range) -GET_DN - lda BTN_PRESSED ; Let's see what the button they pressed was - cmp #EVT_PREV ; How about the PREV button - beq DO_PREV ; handle it - cmp #EVT_NEXT ; Maybe the NEXT button? - beq DO_NEXT ; Deal with it! - cmp #EVT_MODE ; Perhaps the MODE button - beq DO_MODE ; If so, handle it - ; It must be the set button, so take us out of this state - lda #EVT_USER2 - jmp POSTEVENT -; -; (8) Our real working code... -; We come here when they press the next/prev buttons. if we are in a timer repeat -; situation (triggered when they press prev/next for the WEEK/YEAR) then we skip right -; to processing based on the button that was previously pressed -; -DO_NEXT - bset 0,SYSFLAGS ; Mark our update direction as up - bra DO_UPD -DO_PREV - bclr 0,SYSFLAGS ; Mark our update direction as down -DO_UPD - lda DIGSEL ; Which digit mode are we in? - beq DO_UPD_DOW ; 0 - Handle the WEEK - cmp #2 - blo DO_UPD_MONTH ; <2 = 1 - Handle the MONTH - beq DO_UPD_DAY ; 2 - Handle the Day -DO_UPD_YEAR ; >2 = 3 - Handle the YEAR - brclr 0,SYSFLAGS,LASTYEAR ; Were we in the down direction? - ldx #99 ; Going up, let the WRAPX routine handle it for us - lda SCAN_YEAR - jsr INCA_WRAPX - bra SAVEYEAR -LASTYEAR - lda SCAN_YEAR ; Going down, get the year - deca ; Decrement it - bpl SAVEYEAR ; and see if we hit the lower end - lda #99 ; Yes, 2000 wraps down to 1999 -SAVEYEAR - sta SCAN_YEAR ; Save away the new year - bra SETUP_LAG ; And fire off an event to allow for repeating - -DO_UPD_DOW ; 0 - Day of week - lda #7 ; We want to iterate 7 times advancing by one day. - sta COUNTER ; (this makes it much easier to handle all the fringe cases) -WEEKLOOP - brclr 0,SYSFLAGS,LASTWEEK ; Are we going backwards? - jsr INCREMENT_SCAN_DATE ; Going forwards, advance by one day - bra WEEKLOOPCHK ; And continue the loop -LASTWEEK - jsr DECREMENT_SCAN_DATE ; Going backwards, retreat by one day -WEEKLOOPCHK - dec COUNTER ; Count down - tst COUNTER ; See if we hit the limit - bne WEEKLOOP ; and go back for more -; (9) Fake repeater -; This code is used for the Day of week and year modes where we want to have a -; repeating button, but the system routines won't handle it for us -; It works by posting a USER3 event which has a timer of about 1/2 second. -; After that timer expires, we get a timer2 event which then repeats every tic. -; The only thing that we have to worry about here is to not go through this -; every time so that it takes 1/2 second for every repeat. -SETUP_LAG - brset B_SCANNING,FLAGBYTE,INLAG ; If we were already scanning, skip out - bset B_SCANNING,FLAGBYTE ; Indicate that we are scanning - lda #EVT_USER3 ; and post the event to start it off - jsr POSTEVENT -INLAG - jmp SHOW_DATE ; Put the date up on the display -; (10) Update routine usage -DO_UPD_MONTH ; 1 - Handle the month - lda #MONTH_JAN ; The bottom end is January - sta UPDATE_MIN - lda #MONTH_DEC ; and the top end is December (INCLUSIVE) - sta UPDATE_MAX - lda #UPD_HMONTH ; We want the HALF-MONTH udpate function - ldx #SCAN_MONTH ; To update the SCAN_MONTH variable - bra SEL_UPD ; Go do it -DO_UPD_DAY ; 2 - Handle the day - lda #1 ; 1 is the first day of the month - sta UPDATE_MIN - jsr GET_SCAN_MONTHLEN ; Figure out how long the month is - sta UPDATE_MAX ; and make that the limit - lda #UPD_HDAY ; We want the HALF-DAY update function - ldx #SCAN_DAY ; to update the SCAN_DAY variable -SEL_UPD - jsr START_UPDATEP ; And prepare the update routine - bset 4,BTNFLAGS ; Mark that the update is now pending - rts -; (11) Making the mode button work -; when they press the mode button, we want to cycle through the various choices -; on the display. -DO_MODE - lda DIGSEL ; Figure out where we are in the cycle - inca ; advance to the next one - and #3 ; and wrap at 4 to zero - sta DIGSEL -REFRESH - brset B_CLEAR,FLAGBYTE,NOCLEAR ; Do we need to clear the display first? -FORCEFRESH - jsr CLEARALL ; Yes, clear everything before we start - bset B_CLEAR,FLAGBYTE ; And remember that we have already done that -NOCLEAR - clr BTNFLAGS ; Turn off any scrolling banners - lda #ROW_TD23 ; Turn off the dash from the week blink - sta DISP_ROW - bclr COL_TD23,DISP_COL - jsr SHOW_DATE ; Display the date -; (12) Establishing a blink routine -; This makes the appropriate section of the display blink based on what we are changing - lda DIGSEL ; Get the digit we are on - beq DO_BLINK_DOW ; 0 -> Update Day of week - cmp #2 - blo DO_BLINK_MONTH ; <2 = 1 -> Update month - beq DO_BLINK_DAY ; 2 - Update day of month - -DO_BLINK_YEAR ; 3: Year -; (13) Calling BLINK_SECOND -; For BLINK_SECONDS, the UPDATE_PARM points to the 2 character format for the year. - ldx SCAN_YEAR ; Get our year - jsr GETBCDHI ; And extract out the high digit of it - sta YEAR_DIG1 ; Save that away - ldx SCAN_YEAR ; Do it again - jsr GETBCDLOW ; to get the low digit - sta YEAR_DIG2 ; and save that away - ldx #YEAR_DIG1 ; the parm points to the first digit - lda #BLINK_SECONDS ; and we want a BLINK_SECONDS function - bra SETUP_BLINK ; so do it already - -DO_BLINK_DOW ; 0: Day of week: -; (14) Calling BLINK_SEGMENT -; Unfortunately, there is no blink routine to blink the upper two letters on the display. -; To get around this, I have chosen to blink a single segment on the display (the dash -; after the day of the week). This routine was designed to blink the AM/PM or other -; symbols, but it works quite fine for our purposed. You need to set UPDATE_POS to have -; the row to be updated and UPDATE_VAL holds the mask for the COLUMS to be XORed. -; In this way, you might have more than one segment blinking, but there are few segments -; on the same row which would achieve a reasonable effect. -; UPDATE_POS ROW_TD23 -; UPDATE_VAL (1< -; 02 S8E1 S8D1 S8A1 S8B1 S8C1 -; 04 S8E2 S8D2 S8A2 S8B2 S8C2 -; 06 S8E3 S8D3 S8A3 S8B3 S8C3 -; 08 S8E4 S8D4 S8A4 S8B4 S8C4 -; 0A S8E5 S8D5 S8A5 S8B5 S8C5 -; 0C -; 0E T6C T6B M6C M6B Note -; 10 T6D T6G T6A M6A -; 12 T6I T6H M6I M6G M6H -; 14 T6E T6F M6D M6E M6F -; 16 -; 18 -; 1A -; 1C T5C T5B M5C M5B Alarm -; 1E T5D T5G T5A M5A -; 20 T5I T5H M5I M5G M5H -; 22 T5E T5F M5D M5E M5F -; 24 TP45 TD45 MP45 MD45 -; 26 T4C T4B M4C M4B Night -; 28 T4D T4G T4A M4A -; 2A T4I T4H M4I M4G M4H -; 2C T4E T4F M4D M4E M4F -; 2E T3C T3B M3C M3B TD34 -; 30 T3D T3G T3A M3A -; 32 T3I T3H M3I M3G M3H -; 34 T3E T3F M3D M3E M3F -; 36 TP23 TD23 MP23 MC23 -; 38 T2C T2B M2C M2B Remind -; 3A T2D T2G T2A M2A -; 3C T2I T2H M2I M2G M2H -; 3E T2E T2F M2D M2E M2F -; 40 T1C T1B M1C M1B PM -; 42 T1D T1G T1A M1A -; 44 T1I T1H M1I M1G M1H -; 46 T1E T1F M1D M1E M1F -; 48 AM -; -; For the ODD Bits, we have: -; -; Value Bit0 Bit1 Bit2 Bit3 Bit4 -; ------ ------ ------ ------ ------ ------ -; 01 S7D5 S7E5 S7A5 S7B5 S7C5 -; 03 S7D4 S7E4 S7A4 S7B4 S7C4 -; 05 S7D3 S7E3 S7A3 S7B3 S7C3 -; 07 S7D2 S7E2 S7A2 S7B2 S7C2 -; 09 S7D1 S7E1 S7A1 S7B1 S7C1 -; 0B S6D5 S6E5 S6A5 S6B5 S6C5 -; 0D S6D4 S6E4 S6A4 S6B4 S6C4 -; 0F S6D3 S6E3 S6A3 S6B3 S6C3 -; 11 S6D2 S6E2 S6A2 S6B2 S6C2 -; 13 S6D1 S6E1 S6A1 S6B1 S6C1 -; 15 S5D5 S5E5 S5A5 S5B5 S5C5 -; 17 S5D4 S5E4 S5A4 S5B4 S5C4 -; 19 S5D3 S5E3 S5A3 S5B3 S5C3 -; 1B S5D2 S5E2 S5A2 S5B2 S5C2 -; 1D S5D1 S5E1 S5A1 S5B1 S5C1 -; 1F S4D5 S4E5 S4A5 S4B5 S4C5 -; 21 S4D4 S4E4 S4A4 S4B4 S4C4 -; 23 S4D3 S4E3 S4A3 S4B3 S4C3 -; 25 S4D2 S4E2 S4A2 S4B2 S4C2 -; 27 S4D1 S4E1 S4A1 S4B1 S4C1 -; 29 -; 2B S3D5 S3E5 S3A5 S3B5 S3C5 -; 2D S3D4 S3E4 S3A4 S3B4 S3C4 -; 2F S3D3 S3E3 S3A3 S3B3 S3C3 -; 31 S3D2 S3E2 S3A2 S3B2 S3C2 -; 33 S3D1 S3E1 S3A1 S3B1 S3C1 -; 35 S2D5 S2E5 S2A5 S2B5 S2C5 -; 37 S2D4 S2E4 S2A4 S2B4 S2C4 -; 39 S2D3 S2E3 S2A3 S2B3 S2C3 -; 3B S2D2 S2E2 S2A2 S2B2 S2C2 -; 3D S2D1 S2E1 S2A1 S2B1 S2C1 -; 3F S1D5 S1E5 S1A5 S1B5 S1C5 -; 41 S1D4 S1E4 S1A4 S1B4 S1C4 -; 43 S1D3 S1E3 S1A3 S1B3 S1C3 -; 45 S1D2 S1E2 S1A2 S1B2 S1C2 -; 47 S1D1 S1E1 S1A1 S1B1 S1C1 -; -; -; Of course if you want to look it from the orientation of the segments on the display, -; you can use this information. To make it more compact, I used the notation -; bit:Value -; where value is what you store in $1D and Bit is which bit to set/clear in $1E to get the effect -; -; T1A=2:42 T2A=2:3A T3A=2:30 T4A=2:28 T5A=2:1E T6A=2:10 -; T1B=1:40 T2B=1:38 T3B=1:2E T4B=1:26 T5B=1:1c T6B=1:0e -; T1C=0:40 T2C=0:38 T3C=0:2E T4C=0:26 T5C=0:1c T6C=0:0e -; T1D=0:42 T2D=0:3A T3D=0:30 T4D=0:28 T5D=0:1e T6D=0:10 -; T1E=0:46 T2E=0:3E T3E=0:34 T4E=0:2C T5E=0:22 T6E=0:14 -; T1F=1:46 T2F=1:3E T3F=1:34 T4F=1:2C T5F=1:22 T6F=1:14 -; T1G=1:42 T2G=1:3A T3G=1:30 T4G=1:28 T5G=1:1E T6G=1:10 -; T1H=1:44 T2H=1:3C T3H=1:32 T4H=1:2A T5H=1:20 T6H=1:12 -; T1I=0:44 T2I=0:3C T3I=0:32 T4I=0:2A T5I=0:20 T6I=0:12 -; -; TP23=0:36 -; TD23=1:36 -; TD34=4:2E -; TD45=1:24 -; TP45=0:24 -; -; M1A=4:42 M2A=4:3A M3A=4:30 M4A=4:28 M5A=4:1E M6A=4:10 -; M1B=3:40 M2B=3:38 M3B=3:2E M4B=3:26 M5B=3:1C M6B=3:0E -; M1C=2:40 M2C=2:38 M3C=2:2E M4C=2:26 M5C=2:1C M6C=2:0E -; M1D=2:46 M2D=2:3E M3D=2:34 M4D=2:2C M5D=2:22 M6D=2:14 -; M1E=3:46 M2E=3:3E M3E=3:34 M4E=3:2C M5E=3:22 M6E=3:14 -; M1F=4:46 M2F=4:3E M3F=4:34 M4F=4:2C M5F=4:22 M6F=4:14 -; M1G=3:44 M2G=3:3C M3G=3:32 M4G=3:2A M5G=3:20 M6G=3:12 -; M1H=4:44 M2H=4:3C M3H=4:32 M4H=4:2A M5H=4:20 M6H=4:12 -; M1I=2:44 M2I=2:3C M3I=2:32 M4I=2:2A M5I=2:20 M6I=2:12 -; -; MC23=3:36 -; MP23=2:36 -; MD45=3:24 -; MP45=2:24 -; -; AM=4:48 -; PM=4:40 -; Remind=4:38 -; Night=4:26 -; Alarm=4:1C -; Note=4:0e - -COL_T1A EQU 2 -ROW_T1A EQU $42 -COL_T2A EQU 2 -ROW_T2A EQU $3A -COL_T3A EQU 2 -ROW_T3A EQU $30 -COL_T4A EQU 2 -ROW_T4A EQU $28 -COL_T5A EQU 2 -ROW_T5A EQU $1E -COL_T6A EQU 2 -ROW_T6A EQU $10 -; -COL_T1B EQU 1 -ROW_T1B EQU $40 -COL_T2B EQU 1 -ROW_T2B EQU $38 -COL_T3B EQU 1 -ROW_T3B EQU $2E -COL_T4B EQU 1 -ROW_T4B EQU $26 -COL_T5B EQU 1 -ROW_T5B EQU $1c -COL_T6B EQU 1 -ROW_T6B EQU $0e -; -COL_T1C EQU 0 -ROW_T1C EQU $40 -COL_T2C EQU 0 -ROW_T2C EQU $38 -COL_T3C EQU 0 -ROW_T3C EQU $2E -COL_T4C EQU 0 -ROW_T4C EQU $26 -COL_T5C EQU 0 -ROW_T5C EQU $1c -COL_T6C EQU 0 -ROW_T6C EQU $0e -; -COL_T1D EQU 0 -ROW_T1D EQU $42 -COL_T2D EQU 0 -ROW_T2D EQU $3A -COL_T3D EQU 0 -ROW_T3D EQU $30 -COL_T4D EQU 0 -ROW_T4D EQU $28 -COL_T5D EQU 0 -ROW_T5D EQU $1e -COL_T6D EQU 0 -ROW_T6D EQU $10 -; -COL_T1E EQU 0 -ROW_T1E EQU $46 -COL_T2E EQU 0 -ROW_T2E EQU $3E -COL_T3E EQU 0 -ROW_T3E EQU $34 -COL_T4E EQU 0 -ROW_T4E EQU $2C -COL_T5E EQU 0 -ROW_T5E EQU $22 -COL_T6E EQU 0 -ROW_T6E EQU $14 -; -COL_T1F EQU 1 -ROW_T1F EQU $46 -COL_T2F EQU 1 -ROW_T2F EQU $3E -COL_T3F EQU 1 -ROW_T3F EQU $34 -COL_T4F EQU 1 -ROW_T4F EQU $2C -COL_T5F EQU 1 -ROW_T5F EQU $22 -COL_T6F EQU 1 -ROW_T6F EQU $14 -; -COL_T1G EQU 1 -ROW_T1G EQU $42 -COL_T2G EQU 1 -ROW_T2G EQU $3A -COL_T3G EQU 1 -ROW_T3G EQU $30 -COL_T4G EQU 1 -ROW_T4G EQU $28 -COL_T5G EQU 1 -ROW_T5G EQU $1E -COL_T6G EQU 1 -ROW_T6G EQU $10 -; -COL_T1H EQU 1 -ROW_T1H EQU $44 -COL_T2H EQU 1 -ROW_T2H EQU $3C -COL_T3H EQU 1 -ROW_T3H EQU $32 -COL_T4H EQU 1 -ROW_T4H EQU $2A -COL_T5H EQU 1 -ROW_T5H EQU $20 -COL_T6H EQU 1 -ROW_T6H EQU $12 -; -COL_T1I EQU 0 -ROW_T1I EQU $44 -COL_T2I EQU 0 -ROW_T2I EQU $3C -COL_T3I EQU 0 -ROW_T3I EQU $32 -COL_T4I EQU 0 -ROW_T4I EQU $2A -COL_T5I EQU 0 -ROW_T5I EQU $20 -COL_T6I EQU 0 -ROW_T6I EQU $12 -; -; -COL_TP23 EQU 0 -ROW_TP23 EQU $36 -; -COL_TD23 EQU 1 -ROW_TD23 EQU $36 -; -COL_TD34 EQU 4 -ROW_TD34 EQU $2E -; -COL_TD45 EQU 1 -ROW_TD45 EQU $24 -; -COL_TP45 EQU 0 -ROW_TP45 EQU $24 -; -; -COL_M1A EQU 4 -ROW_M1A EQU $42 -COL_M2A EQU 4 -ROW_M2A EQU $3A -COL_M3A EQU 4 -ROW_M3A EQU $30 -COL_M4A EQU 4 -ROW_M4A EQU $28 -COL_M5A EQU 4 -ROW_M5A EQU $1E -COL_M6A EQU 4 -ROW_M6A EQU $10 -; -COL_M1B EQU 3 -ROW_M1B EQU $40 -COL_M2B EQU 3 -ROW_M2B EQU $38 -COL_M3B EQU 3 -ROW_M3B EQU $2E -COL_M4B EQU 3 -ROW_M4B EQU $26 -COL_M5B EQU 3 -ROW_M5B EQU $1C -COL_M6B EQU 3 -ROW_M6B EQU $0E -; -COL_M1C EQU 2 -ROW_M1C EQU $40 -COL_M2C EQU 2 -ROW_M2C EQU $38 -COL_M3C EQU 2 -ROW_M3C EQU $2E -COL_M4C EQU 2 -ROW_M4C EQU $26 -COL_M5C EQU 2 -ROW_M5C EQU $1C -COL_M6C EQU 2 -ROW_M6C EQU $0E -; -COL_M1D EQU 2 -ROW_M1D EQU $46 -COL_M2D EQU 2 -ROW_M2D EQU $3E -COL_M3D EQU 2 -ROW_M3D EQU $34 -COL_M4D EQU 2 -ROW_M4D EQU $2C -COL_M5D EQU 2 -ROW_M5D EQU $22 -COL_M6D EQU 2 -ROW_M6D EQU $14 -; -COL_M1E EQU 3 -ROW_M1E EQU $46 -COL_M2E EQU 3 -ROW_M2E EQU $3E -COL_M3E EQU 3 -ROW_M3E EQU $34 -COL_M4E EQU 3 -ROW_M4E EQU $2C -COL_M5E EQU 3 -ROW_M5E EQU $22 -COL_M6E EQU 3 -ROW_M6E EQU $14 -; -COL_M1F EQU 4 -ROW_M1F EQU $46 -COL_M2F EQU 4 -ROW_M2F EQU $3E -COL_M3F EQU 4 -ROW_M3F EQU $34 -COL_M4F EQU 4 -ROW_M4F EQU $2C -COL_M5F EQU 4 -ROW_M5F EQU $22 -COL_M6F EQU 4 -ROW_M6F EQU $14 -; -COL_M1G EQU 3 -ROW_M1G EQU $44 -COL_M2G EQU 3 -ROW_M2G EQU $3C -COL_M3G EQU 3 -ROW_M3G EQU $32 -COL_M4G EQU 3 -ROW_M4G EQU $2A -COL_M5G EQU 3 -ROW_M5G EQU $20 -COL_M6G EQU 3 -ROW_M6G EQU $12 -; -COL_M1H EQU 4 -ROW_M1H EQU $44 -COL_M2H EQU 4 -ROW_M2H EQU $3C -COL_M3H EQU 4 -ROW_M3H EQU $32 -COL_M4H EQU 4 -ROW_M4H EQU $2A -COL_M5H EQU 4 -ROW_M5H EQU $20 -COL_M6H EQU 4 -ROW_M6H EQU $12 -; -COL_M1I EQU 2 -ROW_M1I EQU $44 -COL_M2I EQU 2 -ROW_M2I EQU $3C -COL_M3I EQU 2 -ROW_M3I EQU $32 -COL_M4I EQU 2 -ROW_M4I EQU $2A -COL_M5I EQU 2 -ROW_M5I EQU $20 -COL_M6I EQU 2 -ROW_M6I EQU $12 -; -; -COL_MC23 EQU 3 -ROW_MC23 EQU $36 -; -COL_MP23 EQU 2 -ROW_MP23 EQU $36 -; -COL_MD45 EQU 3 -ROW_MD45 EQU $24 -; -COL_MP45 EQU 2 -ROW_MP45 EQU $24 -; -; -COL_AM EQU 4 -ROW_AM EQU $48 -; -COL_PM EQU 4 -ROW_PM EQU $40 -; -COL_REMIND EQU 4 -ROW_REMIND EQU $38 -; -COL_NIGHT EQU 4 -ROW_NIGHT EQU $26 -; -COL_ALARM EQU 4 -ROW_ALARM EQU $1C -; -COL_NOTE EQU 4 -ROW_NOTE EQU $0E -; -; S1A1=2:47 S1B1=3:47 S1C1=4:47 S1D1=0:47 S1E1=1:47 -; S1A2=2:45 S1B2=3:45 S1C2=4:45 S1D2=0:45 S1E2=1:45 -; S1A3=2:43 S1B3=3:43 S1C3=4:43 S1D3=0:43 S1E3=1:43 -; S1A4=2:41 S1B4=3:41 S1C4=4:41 S1D4=0:41 S1E4=1:41 -; S1A5=2:3F S1B5=3:3F S1C5=4:3F S1D5=0:3F S1E5=1:3F -; -; S2A1=2:3D S2B1=3:3D S2C1=4:3D S2D1=0:3D S2E1=1:3D -; S2A2=2:3B S2B2=3:3B S2C2=4:3B S2D2=0:3B S2E2=1:3B -; S2A3=2:39 S2B3=3:39 S2C3=4:39 S2D3=0:39 S2E3=1:39 -; S2A4=2:37 S2B4=3:37 S2C4=4:37 S2D4=0:37 S2E4=1:37 -; S2A5=2:35 S2B5=3:35 S2C5=4:35 S2D5=0:35 S2E5=1:35 -; -; S3A1=2:33 S3B1=3:33 S3C1=4:33 S3D1=0:33 S3E1=1:33 -; S3A2=2:31 S3B2=3:31 S3C2=4:31 S3D2=0:31 S3E2=1:31 -; S3A3=2:2F S3B3=3:2F S3C3=4:2F S3D3=0:2F S3E3=1:2F -; S3A4=2:2D S3B4=3:2D S3C4=4:2D S3D4=0:2D S3E4=1:2D -; S3A5=2:2B S3B5=3:2B S3C5=4:2B S3D5=0:2B S3E5=1:2B -; -; S4A1=2:27 S4B1=3:27 S4C1=4:27 S4D1=0:27 S4E1=1:27 -; S4A2=2:25 S4B2=3:25 S4C2=4:25 S4D2=0:25 S4E2=1:25 -; S4A3=2:23 S4B3=3:23 S4C3=4:23 S4D3=0:23 S4E3=1:23 -; S4A4=2:21 S4B4=3:21 S4C4=4:21 S4D4=0:21 S4E4=1:21 -; S4A5=2:1F S4B5=3:1F S4C5=4:1F S4D5=0:1F S4E5=1:1F -; -; S5A1=2:1D S5B1=3:1D S5C1=4:1D S5D1=0:1D S5E1=1:1D -; S5A2=2:1B S5B2=3:1B S5C2=4:1B S5D2=0:1B S5E2=1:1B -; S5A3=2:19 S5B3=3:19 S5C3=4:19 S5D3=0:19 S5E3=1:19 -; S5A4=2:17 S5B4=3:17 S5C4=4:17 S5D4=0:17 S5E4=1:17 -; S5A5=2:15 S5B5=3:15 S5C5=4:15 S5D5=0:15 S5E5=1:15 -; -; S6A1=2:13 S6B1=3:13 S6C1=4:13 S6D1=0:13 S6E1=1:13 -; S6A2=2:11 S6B2=3:11 S6C2=4:11 S6D2=0:11 S6E2=1:11 -; S6A3=2:0F S6B3=3:0F S6C3=4:0F S6D3=0:0F S6E3=1:0F -; S6A4=2:0D S6B4=3:0D S6C4=4:0D S6D4=0:0D S6E4=1:0D -; S6A5=2:0B S6B5=3:0B S6C5=4:0B S6D5=0:0B S6E5=1:0B -; -; S7A1=2:09 S7B1=3:09 S7C1=4:09 S7D1=0:09 S7E1=1:09 -; S7A2=2:07 S7B2=3:07 S7C2=4:07 S7D2=0:07 S7E2=1:07 -; S7A3=2:05 S7B3=3:05 S7C3=4:05 S7D3=0:05 S7E3=1:05 -; S7A4=2:03 S7B4=3:03 S7C4=4:03 S7D4=0:03 S7E4=1:03 -; S7A5=2:01 S7B5=3:01 S7C5=4:01 S7D5=0:01 S7E5=1:01 -; -; S8A1=2:02 S8B1=3:02 S8C1=4:02 S8D1=1:02 S8E1=0:02 -; S8A2=2:04 S8B2=3:04 S8C2=4:04 S8D2=1:04 S8E2=0:04 -; S8A3=2:06 S8B3=3:06 S8C3=4:06 S8D3=1:06 S8E3=0:06 -; S8A4=2:08 S8B4=3:08 S8C4=4:08 S8D4=1:08 S8E4=0:08 -; S8A5=2:0a S8B5=3:0a S8C5=4:0a S8D5=1:0a S8E5=0:0a -; -; -; Character set -; -C_0 EQU $00 -C_1 EQU $01 -C_2 EQU $02 -C_3 EQU $03 -C_4 EQU $04 -C_5 EQU $05 -C_6 EQU $06 -C_7 EQU $07 -C_8 EQU $08 -C_9 EQU $09 -C_A EQU $0A -C_B EQU $0B -C_C EQU $0C -C_D EQU $0D -C_E EQU $0E -C_F EQU $0F -C_G EQU $10 -C_H EQU $11 -C_I EQU $12 -C_J EQU $13 -C_K EQU $14 -C_L EQU $15 -C_M EQU $16 -C_N EQU $17 -C_O EQU $18 -C_P EQU $19 -C_Q EQU $1A -C_R EQU $1B -C_S EQU $1C -C_T EQU $1D -C_U EQU $1E -C_V EQU $1F -C_W EQU $20 -C_X EQU $21 -C_Y EQU $22 -C_Z EQU $23 -C_BLANK EQU $24 -C_SPACE EQU $24 -C_EXCLAIM EQU $25 -C_DQUOTE EQU $26 -C_POUND EQU $27 -C_DOLLAR EQU $28 -C_PERCENT EQU $29 -C_AMPERSAND EQU $2A -C_QUOTE EQU $2B -C_LPAREN EQU $2C -C_RPAREN EQU $2D -C_TIMES EQU $2E -C_PLUS EQU $2F -C_COMMA EQU $30 -C_MINUS EQU $31 -C_PERIOD EQU $32 -C_SLASH EQU $33 -C_COLON EQU $34 -C_BACKSLASH EQU $35 -C_DIVIDE EQU $36 -C_EQUAL EQU $37 -C_BELL EQU $38 -C_QUESTION EQU $39 -C_UNDER EQU $3A -C_CHECK EQU $3B -C_PREV EQU $3C -C_LEFTARR EQU $3C ; Symbol for the previous key -C_NEXT EQU $3D -C_RIGHTARR EQU $3D ; Symbol for the next key -C_BLOCK EQU $3E -C_SEP EQU $3F -C6_SPACE EQU $1d -; The basic timex character set is: -; 0 1 2 3 4 5 6 7 8 9 A B C D E F -; G H I J K L M N O P Q R S T U V -; W X Y Z ! " # $ % & ' ( ) * + -; , - . / : ; < = > ? @ A B C D E -; -; We also have the timex6 character set as: -; 0 1 2 3 4 5 6 7 8 9 A B C D E F -; G H : L M N P R T U W Y r - + -; - -EVT_NEXT EQU $00 ; Next button pressed (not interested in the up transition) -EVT_MODE EQU $01 ; Mode button pressed (not interested in the up transition) -EVT_SET EQU $02 ; Set/Delete button pressed (not interested in the up transition) -EVT_PREV EQU $03 ; Prev button pressed (not interested in the up transition) -EVT_GLOW EQU $04 ; Indiglo button pressed (not interested in the up transition) -EVT_ANY EQU $05 ; Any button pressed (not interested in the up transition) -EVT_ANY4 EQU $06 ; Any button pressed except indiglo (not interested in the up transition) -EVT_RESUME EQU $1a ; Called when resuming from a nested app -EVT_ENTER EQU $1b ; Initial state. The Time value is generally $01 or $84 for a well behaved app -EVT_NEST EQU $1c ; The state table 1 entry called when a nested application is called. It is the equivalent of - ; EVT_ENTER for an interrupt. This only occurs for Wristapps, Timer, and appt apps. -EVT_END EQU $1d ; End of event table indicator -EVT_TIMER1 EQU $1e ; Timer event - This is fired for a $83 time request -EVT_TIMER2 EQU $1f ; Timer event - This is fired for a $82,$84,$01 timer request -; $20-$36 - UNUSED -; (I bet that you can have user specified events for these too) -EVT_USER0 EQU $37 -EVT_USER1 EQU $38 -EVT_USER2 EQU $39 -EVT_USER3 EQU $3a ; User specified events. Queued by calling POSTEVENT ($4E89) -; $3b-$7f - UNUSED -EVT_DNNEXT EQU $80 ; Next button pressed -EVT_DNMODE EQU $81 ; Mode button pressed -EVT_DNSET EQU $82 ; Set/Delete button pressed -EVT_DNPREV EQU $83 ; Prev button pressed -EVT_DNGLOW EQU $84 ; Indiglo button pressed -EVT_DNANY EQU $85 ; Any of the four buttons Pressed -EVT_DNANY4 EQU $86 ; Any button pressed except indiglo - -; $87-$9F - UNUSED -EVT_UPNEXT EQU $A0 ; Next button released -EVT_UPMODE EQU $A1 ; Mode button released -EVT_UPSET EQU $A2 ; Set/Delete button released -EVT_UPPREV EQU $A3 ; Prev button released -EVT_UPGLOW EQU $A4 ; Indiglo button released -EVT_UPANY EQU $A5 ; Any of the four buttons Released -EVT_UPANY4 EQU $A6 ; Any button Released except indiglo - -ALARM_STATUS EQU $69 ; This is the status flags for the alarms. The low order bit indicates that it is enabled - ; The next bit seems to indicate that the alarm is temporarily masked or disabled - ; Apparently the next bit can be set, but I haven't seen any use for it. -; EQU $69 ; Alarm 1 Status -; EQU $69 ; Alarm 1 Status -; EQU $6a ; Alarm 2 Status -; EQU $6b ; Alarm 3 Status -; EQU $6c ; Alarm 4 Status -; EQU $6d ; Alarm 5 Status - -SCAN_MONTH EQU $7a ; The current SCAN month -SCAN_DAY EQU $7b ; The current SCAN day -SCAN_YEAR EQU $7c ; The current SCAN year - -MONTH_JAN EQU 1 -MONTH_FEB EQU 2 -MONTH_MAR EQU 3 -MONTH_APR EQU 4 -MONTH_MAY EQU 5 -MONTH_JUN EQU 6 -MONTH_JUL EQU 7 -MONTH_AUG EQU 8 -MONTH_SEP EQU 9 -MONTH_OCT EQU 10 -MONTH_NOV EQU 11 -MONTH_DEC EQU 12 - -SYSTEMP0 EQU $A0 -SYSTEMP1 EQU $A1 - -TIM_ONCE EQU $ff ; No time interval. Operation is executed just once - -TIM1_TIC EQU $00 -TIM1_2TIC EQU $01 -TIM1_3TIC EQU $02 -TIM1_4TIC EQU $03 -TIM1_HALFSEC EQU $04 -TIM1_SECOND EQU $05 -TIM1_SECHALF EQU $06 -TIM1_TWOSEC EQU $07 -TIM1_TWOSEC1 EQU $08 -TIM1_12SEC EQU $09 -TIM1_18SEC EQU $0a -; -; Note that the second part of this table is happen-stance since it is really a rollover -; of the second table on top of the first one. But it might be useful to someone... -; -TIM1_TICA EQU $0b ; This is the typical scroll interval -TIM1_2TICA EQU $0c -TIM1_4TICA EQU $0d -TIM1_8TIC EQU $0e ; This is the normal blink interval -TIM1_12TIC EQU $0f ; Just over a second -TIM1_16TIC EQU $10 ; A second and a half -TIM1_24TIC EQU $11 ; Two and a half seconds -TIM1_32TIC EQU $12 ; Just over three seconds -TIM1_40TIC EQU $13 ; Four seconds -TIM1_48TIC EQU $14 ; Almost five seconds -TIM1_96TIC EQU $15 ; Almost ten seconds - -TIM2_TIC EQU $80 ; This is the typical scroll interval -TIM2_2TIC EQU $81 -TIM2_4TIC EQU $82 -TIM2_8TIC EQU $83 ; This is the normal blink interval -TIM2_12TIC EQU $84 ; Just over a second -TIM2_16TIC EQU $85 ; A second and a half -TIM2_24TIC EQU $86 ; Two and a half seconds -TIM2_32TIC EQU $87 ; Just over three seconds -TIM2_40TIC EQU $88 ; Four seconds -TIM2_48TIC EQU $89 ; Almost five seconds -TIM2_96TIC EQU $8a ; Almost ten seconds - -TIM_LONG1 EQU $01 ; Long shot time interval - Fires a $1F when the the timer expires -TIM_03 EQU $03 ; Unknown -TIM_08 EQU $08 ; Unknown - -TIM_SHORT EQU $82 ; Short timer - Fires a $1F event when the timer expires -TIM_MED EQU $83 ; Medium timer - Fires a $1E event when the timer expires -TIM_LONG EQU $84 ; Long timer - Fires a $1F event when the timer expires -TIM_86 EQU $86 ; ?Timer -;----------------------------------------------------------------------------------------- -TZ1_HOUR EQU $b0 ; Time zone 1 current hour (0-23) -TZ1_MINUTE EQU $b1 ; Time zone 1 current minute (0-59) -TZ1_MONTH EQU $b2 ; Time zone 1 current month of the year (1-12) -TZ1_DAY EQU $b3 ; Time zone 1 current day of the month (1-31) -TZ1_YEAR EQU $b4 ; Time zone 1 current year (mod 1900) -TZ1_NAME EQU $b5 ; Time zone 1 name (3 TIMEX characters) -; EQU $b6 ; " " " " -; EQU $b7 ; " " " " -TZ1_DOW EQU $b8 ; Time zone 1 day of week (0=Monday...6=Sunday) -;----------------------------------------------------------------------------------------- -TZ2_HOUR EQU $b9 ; Time zone 2 current hour (0-23) in Timezone 1 -TZ2_MINUTE EQU $ba ; Time zone 2 current minute (0-59) -TZ2_MONTH EQU $bb ; Time zone 2 current month of the year (1-12) -TZ2_DAY EQU $bc ; Time zone 2 current day of the month (1-31) -TZ2_YEAR EQU $bd ; Time zone 2 current year (mod 1900) -TZ2_NAME EQU $be ; Time zone 2 name (3 TIMEX characters) -; EQU $bf ; " " " " -; EQU $c0 ; " " " " -TZ2_DOW EQU $c1 ; Time zone 2 day of the week (0=Monday..6=Sunday) -;----------------------------------------------------------------------------------------- -; Sound Support Values -TONE_END EQU $00 ; END -TONE_LOW_C EQU $10 ; Low C -TONE_HI_C EQU $20 ; High C -TONE_MID_C EQU $30 ; Middle C -TONE_VHI_C EQU $40 ; Very high C -TONE_HI_F EQU $50 ; High F (little bit lower than F) -TONE_MID_F EQU $60 ; Middle F -TONE_LO_F EQU $70 ; Low F -TONE_VHI_GSHARP EQU $80 ; Very High G# (G Sharp) -TONE_HI_GSHARP EQU $90 ; High G# -TONE_MID_GSHARP EQU $A0 ; Middle G# -TONE_LO_GSHARP EQU $B0 ; Low G# -TONE_HI_D EQU $C0 ; High D -TONE_MID_D EQU $D0 ; Middle D -TONE_LO_D EQU $E0 ; Low D -TONE_PAUSE EQU $F0 ; Pause -SND_END EQU $80 -;-------------------------------------------------------------------------------- -SNDSTART EQU $4e4a ; Start playing the current sound in SYSSOUND -;-------------------------------------------------------------------------------- -PLAYCONF EQU $4e7a ; Play a confirmation sound -PLAYBUTTON EQU $4e80 ; Play the button beep sound if no other sound is currently playing -;-------------------------------------------------------------------------------- -POSTEVENT EQU $4e89 ; Post a event to the internal processing queue -; Parameters: -; A - Event to be posted. -; This posts an event to run through the processing loop for the current applet. -; Typical user events are in the $30-$3F range. -; -;-------------------------------------------------------------------------------- -INDIGLO_OFF EQU $4e8e ; This routine turns off the indiglo light -;-------------------------------------------------------------------------------- -SNDSTOP EQU $4f3a ; This stops whatever sound is currently playing -;-------------------------------------------------------------------------------- -CALL_NESTEDAPP EQU $4f4d -; Purpose: -; This sets up to call a nested application while the current one is running. -; Up to 5 apps may be nested (although there are only 3 potential ones defined). -; If more than 5 have been called the oldest one will be forgotten. -; When the nested app is called, NESTED_APP will be set to the application number -; passed in and NESTED_PARM will contain the X parameter passed in -; -; Parameters: -; A - Nested application number. This is one of the three defined apps: -; 9 = APP2_ALARM - Alarm (while another app is running) -; 10 = APP2_APPT - Appointment (while another app is running) -; 11 = APP2_WRIST - Wristapp (while another app is running) -; X - Parameter to pass to the nested application -;-------------------------------------------------------------------------------- -SET_INDIGLO EQU $5504 ; This routine turns on/off the indiglo light -; Parameters: -; 0,Sys_9e - Bit indicates request for on or off -;-------------------------------------------------------------------------------- -PUTSCROLLMSG EQU $5522 ; Make the buffer at MSGBUF visible -;-------------------------------------------------------------------------------- -SCROLLMSG EQU $5545 ; Start the scrolling cycle for the current message -; Parameters: -; MSGBUF - Message to be scroll terminated by a SEPARATOR character -;-------------------------------------------------------------------------------- -SCROLLMSG_CONT EQU $5549 ; Start the scrolling cycle for the current message, but don't reset the - ; scrolling cycle wait count. -; Parameters: -; MSGBUF - Message to be scroll terminated by a SEPARATOR character -; SCROLL_TICS - The current tic count in the cycle -;-------------------------------------------------------------------------------- -START_BLINKX EQU $55bb ; Establish and call the specified blinking rountine -; Parameters: -; X - single byte parameter to the particular blinking function -; A - Blinking function to be selected -;-------------------------------------------------------------------------------- -START_BLINKP EQU $55BF ; Establish and call the specified blinking rountine -; Parameters: -; X - Address of parameter to the particular blinking function -; A - Blinking function to be selected -BLINK_YEAR EQU 0 ; Blink the year in the right place according to the current time format -BLINK_SECONDS EQU 1 ; Blink two characters point to by UPDATE_PARM on the right two digits of the middle line - Used for the seconds -BLINK_AMPM EQU 2 ; Blink AM/PM on the right most digits of the middle line (A or P pointed to by UPDATE_PARM) -BLINK_MONTH EQU 3 ; Blink the month in the right place according to the current time format -BLINK_HMONTH EQU 4 ; Blink the month in the right place according to the current time format for a half date (no year) -BLINK_DAY EQU 5 ; Blink the day in the right place according to the current time format -BLINK_HDAY EQU 6 ; Blink the day in the right place according to the current time format for half dates -BLINK_MID12 EQU 7 ; Blink the left two blank padded digits on the middle line (value pointed to by UPDATE_PARM) -BLINK_HOUR EQU 8 ; Blink the Hour (left two segments on the middle line) and AM/PM indicator (hour point to by UPDATE_PARM) -BLINK_MID34 EQU 9 ; Blink the middle two zero padded digits on the middle line (value pointed to by UPDATE_PARM) -BLINK_SEGMENT EQU 10 ; Blink a single segment indicated by UPDATE_POS and mask in UPDATE_VAL -BLINK_DIGIT EQU 11 ; Blink solid black cursor for the digit (UPDATE_POS is the location on the bottom line) -BLINK_TZONE EQU 12 ; Blink the timezone information (Pointed to by UPDATE_PARM) -BLINK_TOP34 EQU 13 ; Blink the middle zero padded two digits on the top line (value pointed to by UPDATE_PARM) -;-------------------------------------------------------------------------------- -PUTLINE3 EQU $56d5 ; Put a single character on the bottom line of the display -POSL3_1 EQU $47 -POSL3_2 EQU $3d -POSL3_3 EQU $33 -POSL3_4 EQU $27 -POSL3_5 EQU $1d -POSL3_6 EQU $13 -POSL3_7 EQU $09 -POSL3_8 EQU $0a -; Parameters: -; A = Position S1 S2 S3 S4 S5 S6 S7 S8 -; [$47] [$3D] [$33] [$27] [$1D] [$13] [$09] [$0A] -; [ 71] [ 61] [ 51] [ 39] [ 29] [ 19] [ 9] [ 10] -; X = Character in Timex Ascii to display -; Notes: -; This appears to be an XOR operation. Calling the same function twice in a row would -; erase the character. Writing on top of an existing character seems to let you generate -; a non Ascii character. - -PUTLINE1 EQU $570D ; Put a single character on the top line of the display -POSL1_1 EQU $46 -POSL1_2 EQU $3e -POSL1_3 EQU $34 -POSL1_4 EQU $2c -POSL1_5 EQU $22 -POSL1_6 EQU $14 -; Parameters: -; A = Position [$46] [$3E] - [$34] [$2C] - [$22] [$14] -; [ 70] [ 62] [ 52] [ 44] [ 34] [20] -; X = Character in Timex Ascii to display - -PUTLINE2 EQU $5745 ; Put a single character on the second line of the display -POSL2_1 EQU $46 -POSL2_2 EQU $3e -POSL2_3 EQU $34 -POSL2_4 EQU $2c -POSL2_5 EQU $22 -POSL2_6 EQU $14 -; Parameters: -; A = Position [$46] [$3E] - [$34] [$2C] - [$22] [$14] -; [ 70] [ 62] [ 52] [ 44] [ 34] [20] -; X = Character in Timex Ascii to display - -CLEARALL EQU $577A ; Clear the display -CLEARBOT EQU $5787 ; Clear the bottom line of the display -CLEARSYM EQU $579f ; Turns off all the non digit symbols segments (including dots, dashes and colons) -;------------------------------------------------------------------------- -START_UPDATEX equ $57c3 ; Establish and call the specified update function (See START_UPDATEP) -; Parameters: -; X - single byte parameter to the particular update function -; A - Update function to be selected -;------------------------------------------------------------------------- -START_UPDATEP EQU $57C7 ; This establishes an update function. Update functions are called every 8/10th - ; of a second. This function will update a number in an upward or downward - ; direction based on the setting of 0,SYSFLAGS -; Parameters: -; A - Update function to be selected -; X - Pointer to parameters for the update function -UPD_YEAR EQU 0 ; Update the year -UPD_MONTH EQU 1 ; Update the Month -UPD_HMONTH EQU 2 ; Update the Month in Half date format -UPD_DAY EQU 3 ; Update the day -UPD_HDAY EQU 4 ; Update the day in half date format -UPD_MID12 EQU 5 ; Update MID12 -UPD_HOUR EQU 6 ; Update the hour -UPD_MID34 EQU 7 ; Update MID34 -UPD_DIGIT EQU 8 ; Update the digit at UPDATE_POS -;------------------------------------------------------------------------- -BANNER8 EQU $5845 ; Display an 8 character string -; Parameters -; A = Offset from 0110 for the start of an 8 character timex string -; -;------------------------------------------------------------------------- -PUTMSGXBOT EQU $5849 ; Puts a message on the bottom of the screen. -; Parameters -; A = Message selector number. Valid values from 0 to 27. They correspond to -; the same strings passed into PUTMSGBOT scaled down by 8 -;------------------------------------------------------------------------- -PUTMSGBOT EQU $584c ; Puts a message on the bottom of the screen. -; Parameters -; A = Offset into message selector string. Valid values from from $00 to $d8 at -; 8 Byte offsets. $E0 is the start of the 6 byte top/mid message strings. -SYS8_MON EQU $00 ; $00 = "MON " -SYS8_TUE EQU $08 ; $08 = "TUE " -SYS8_WED EQU $10 ; $10 = "WED " -SYS8_THU EQU $18 ; $18 = "THU " -SYS8_FRI EQU $20 ; $20 = "FRI " -SYS8_SAT EQU $28 ; $28 = "SAT " -SYS8_SUN EQU $30 ; $30 = "SUN " -SYS8_VERDATE EQU $38 ; $38 = " 802003 " -SYS8_VERSION EQU $40 ; $40 = " V2.0 " -SYS8_MODE EQU $48 ; $48 = " MODE " -SYS8_SET_MODE EQU $50 ; $50 = "SET MODE" -SYS8_SET EQU $58 ; $58 = "SET " -SYS8_TO EQU $60 ; $60 = "TO " -SYS8_FOR EQU $68 ; $68 = "FOR " -SYS8_ENTRIES EQU $70 ; $70 = "ENTRIES " -SYS8_UPCOMING EQU $78 ; $78 = "UPCOMING" -SYS8_ENTRY EQU $80 ; $80 = " ENTRY " -SYS8_SCAN EQU $88 ; $88 = " SCAN " -SYS8_SCAN_RIGHT EQU $90 ; $90 = " SCAN" -SYS8_SYNCING EQU $98 ; $98 = " SYNCING" -SYS8_PROGRESS EQU $a0 ; $a0 = "PROGRESS" -SYS8_DATA_OK EQU $a8 ; $a8 = " DATA OK" -SYS8_RESEND EQU $b0 ; $b0 = "-RESEND-" -SYS8_ABORTED EQU $b8 ; $b8 = " ABORTED" -SYS8_MISMATCH EQU $c0 ; $c0 = "MISMATCH" -SYS8_SPLIT EQU $c8 ; $c8 = " SPLIT " -SYS8_START EQU $d0 ; $d0 = ">=START " -SYS8_STOP EQU $d8 ; $d8 = ">=STOP " -; $e0 is the start of the message table SYS6_SET -; -PUT6TOP EQU $587e -; Parameters: -; A = Offset from 0110 for the start of a 6 byte data item to be put on the top -; line of the screen. This uses a different encoding for characters where: -; we have 32 different values which correspond to: -; "0123456789ABCDEFGH:LMNPRTUWYr -+" -; 0123456789abcdef0123456789abcdef -; e.g. $12=':', $13='L'. -; It appears that things wrap when you get to $20 -; -PUTMSG1 EQU $5882 ; Put up a message on the top line -; Parameters - Offset into message selector string. -; Typically you want a multiple of 6 to choose from these below -; -SYS6_SET EQU $00 ; 00 = " SET " (This is stored at $5F5F in the roms) -SYS6_HOLDTO EQU $06 ; 06 = "HOLDTO" -SYS6_ALARM EQU $0C ; 0C = "ALARM " -SYS6_ENTER EQU $12 ; 12 = "ENTER " -SYS6_HR EQU $18 ; 18 = " HR" -SYS6_SWITCH EQU $1E ; 1E = "SWITCH" -SYS6_TIME EQU $24 ; 24 = " TIME " -SYS6_FORMAT EQU $2A ; 2A = "FORMAT" -SYS6_DAILY EQU $30 ; 30 = "DAILY " -SYS6_APPT EQU $36 ; 36 = " APPT " -SYS6_NO EQU $3c ; 3c = " NO " -SYS6_APPTS EQU $42 ; 42 = "APPTS " -SYS6_END_OF EQU $48 ; 48 = "END OF" -SYS6_LIST EQU $4e ; 4e = " LIST " -SYS6_DELETE EQU $54 ; 54 = "DELETE" -SYS6_ANN EQU $5a ; 5a = " ANN " -SYS6_PHONE EQU $60 ; 60 = "PHONE " -SYS6_DONE EQU $66 ; 66 = " DONE " -SYS6_PRI EQU $6c ; 6c = "PRI " -SYS6_COMM EQU $72 ; 72 = " COMM " -SYS6_READY EQU $78 ; 78 = "READY " -SYS6_IN EQU $7e ; 7e = " IN " -SYS6_ERROR EQU $84 ; 84 = "ERROR " -SYS6_CEASED EQU $8a ; 8a = "CEASED" -SYS6_PC EQU $90 ; 90 = "PC- " -SYS6_WATCH EQU $96 ; 96 = "WATCH " -SYS6_CHRONO EQU $9c ; 9c = "CHRONO" -SYS6_TIMER EQU $A2 ; A2 = "TIMER " -SYS6_000000 EQU $a8 ; a8 = "000000" -; ae = "MTWTFS" -; B4 = "SOUEHR" -; BA = "AUG+74" -; C0 = "P16174" -; C6 = "P1OY40" -; CC = "W+0++0" -; D2 = "251332" -; D8 = "0321++" -; DE = "R++ 0+" -; E4 = "+12+1T" -; EA = "+0 0+1" -; F0 = "26+2U+" -; F6 = "0 C100" -; FC = "C0GW" -; -PUT6MID EQU $58a8 -; Parameters: -; A = Offset from 0110 for the start of a 6 byte data item to be put on the top -; line of the screen. This uses a different encoding for characters where: -; we have 32 different values which correspond to: -; "0123456789ABCDEFGH:LMNPRTUWYr -+" -; e.g. $12=':', $13='L'. -; It appears that things wrap when you get to $20 -; -; PUT6MIDA was identified wrong... -PUTMSG2 EQU $58AC ; This functions just the same as PUTMSG1 except it puts things on the middle line -CLEARTOP EQU $58d2 ; Puts blanks into all 6 top digits (Blanks out the top line) -; Parameters: -; None -CLEARMID EQU $58d8 ; Puts blanks into all 6 Middle digits (Blanks out the middle line) -; Parameters: -; None -;------------------------------------------------------------------------- -; These next 6 routines take the two bytes in DATDIGIT1 ($A2) and DATDIGIT2($A3) and put them -; on the display in the appropriate locations. The digits are represented using the TIMEX6 -; character set. -; -PUTTOP12 EQU $58e0 ; Puts DATDIGIT1/2 into TOP Digits 1 and 2 -PUTTOP34 EQU $58f0 ; Puts DATDIGIT1/2 into TOP Digits 3 and 4 -PUTTOP56 EQU $5900 ; Puts DATDIGIT1/2 into TOP Digits 5 and 6 -PUTMID12 EQU $5910 ; Puts DATDIGIT1/2 into Middle Digits 1 and 2 -PUTMID34 EQU $5920 ; Puts DATDIGIT1/2 into Middle Digits 3 and 4 -PUTMID56 EQU $5930 ; Puts DATDIGIT1/2 into Middle Digits 5 and 6 -; These 6 routines blank out parts of the display -CLRTOP12 EQU $58de ; Puts Blanks into TOP Digits 1 and 2 -CLRTOP34 EQU $58ee ; Puts Blanks into TOP Digits 3 and 4 -CLRTOP56 EQU $59fe ; Puts Blanks into TOP Digits 5 and 6 -CLRMID12 EQU $590e ; Puts Blanks into Middle Digits 1 and 2 -CLRMID34 EQU $591e ; Puts Blanks into Middle Digits 3 and 4 -CLRMID56 EQU $592e ; Puts Blanks into Middle Digits 5 and 6 -; -FMTXLEAD0 EQU $593E ; Formats into DATDIGIT1/2 with leading zeros -; Parameters: -; X - value to be formatted. 0-9 results in 0 followed by the digit -; 10-99 results in number for both digits -FMTBLANK0 EQU $594d ; Format into DATDIGIT1/2 -; Parameters: -; X - value to be formatted. 0 results in all blanks. -; 1-9 results in blank followed by the digit -; 10-99 results in number for both digits -FMTX EQU $5951 ; Format into DATDIGIT1/2 -; Parameters: -; X - value to be formatted. 0-9 results in blank followed by the digit -; 10-99 results in number for both digits - -FMTSPACE EQU $595C ; Format blankes into DATDIGIT1/2 -; Parameters: NONE -; This routine simply puts spaces into DATDIGIT1 DATDIGIT2 -; -SAYEOLMSG EQU $5979 ; Puts 'END OF LIST' on the display -PUTBOT678 EQU $5a86 ; Puts three digits into the lower corner of the display. -; Typically this is the time zone information. -; Parameters: -; X - Pointer to 3 byte location containing bytes to put on the display -; (pointed to by x) 3 bytes in TIMEX ascii. Because the X register iss -; used to index to them, they must be located in the first 256 bytes of -; memory. -PUTDATESEP EQU $5aab ; Put either Dashes or periods on the top line - -DIGLOCTOP EQU $5e26 ; Locations of digits on the top line -DIGLOCMID EQU $5e2c ; Locations of digits on the middle line -DIGLOCBOT EQU $5e32 ; Locations of digits on the bottom line - -;------------------------------------------------------------------------- -PUT_YEARX EQU $67cc ; Put the leading zero 2 digit year in the appropriate spot on the display based - ; on the current time zone date format -; Parameters: -; X - Year to be displayed -;------------------------------------------------------------------------- -PUT_MONTHX EQU $67d0 ; Put the leading space 2 digit month in the appropriate spot on the display based - ; on the current time zone date format -; Parameters: -; X - Month to be displayed -;------------------------------------------------------------------------- -PUT_DAYX EQU $67d4 ; Put the leading zero 2 digit day in the appropriate spot on the display based - ; on the current time zone date format -; Parameters: -; X - Day to be displayed -;------------------------------------------------------------------------- -SAY_HOURX EQU $67d8 ; Puts up the hour on the display along with an AM/PM indicator and a Colon. - ; This code respects the current 12/24 hour format. -; Parameters: -; X - Hour to be displayed -;------------------------------------------------------------------------- -PUT_MINUTEX EQU $6823 ; This puts the minute in the middle two digits on the middle line followed by a period -; Parameters: -; X - minute (0-59) to be displayed -;------------------------------------------------------------------------- -SHOWSEC_TENS EQU $6830 ; Puts the character at SECOND_TENS onto the next to the last digit on the middle line -; Parameters: -; SECOND_TENS - Value to be put on the display -;------------------------------------------------------------------------- -SHOWSEC_ONES EQU $6838 ; Puts the character at SECOND_ONES onto the last digit on the middle line -; Parameters: -; SECOND_ONES - Value to be put on the display -;------------------------------------------------------------------------- -CALC_DOW_X EQU $68d5 ; Computes the Day of the Week from the Month, Day, Year information -; Parameters: -; X - Pointer to Month, Day, Year block -;------------------------------------------------------------------------- -ACQUIRE EQU $68e8 ; Disable interrupts for a short piece of code -RELEASE EQU $68f2 ; Reenable interrupts -;------------------------------------------------------------------------- -GET_MONTHLEN EQU $68f9 ; Computes the number of days in a given month -; Parameters: -; PARM_MONTH, PARM_YEAR contain the month and year to look for -; Returns: -; A - Number of days in the month -;------------------------------------------------------------------------- -SETALL EQU $5776 ; Turn on all segments on the display -INCA_WRAPX EQU $6b0d ; Advance to the next value wrapped within a range -; Parameters: -; A - Number to be incremented -; X - Range to hold number within -;------------------------------------------------------------------------- -GETBCDHI EQU $6B52 -; Parameters: -; X - Hex value to be converted (Range 0-99) -; Returns: -; A - High byte of number in timex ascii -;------------------------------------------------------------------------- -GETBCDLOW EQU $6B5A -; Parameters: -; X - Hex value to be converted (Range 0-99) -; Returns: -; A - Low byte of number in timex ascii -;------------------------------------------------------------------------- -TABHEX2BCD EQU $6b60 ; 100 bytes from 6b60-6bc3 -; This is a 100 byte table of HEX to BCD conversion values. You can take the value you want -; to convert, load it into the X register and then load TABHEX2BCX,X. To get the high order byte, -; just shift it right by 4. The low order is just an and with $0f. - -SYS_26 EQU $26 -MODE_FLAGS EQU $68 ; FLAGS - ; Bit0 = Indicates that we are in alarm set mode (SET=IN SET MODE) - ; Bit1 = Indicates that we have a backup mode pending alarm (SET=PENDING) - ; Bit2 = Indicates that hourly chimes are to be played (SET=ENABLED) - ; Bit3 = Indicates that hourly chimes are temporarily disabled (SET=DISABLED) - ; Bit4 = Enables beep for any button pressed (SET=BEEP) - ; Bit5 = Indicates that we are in COMM Mode (SET=IN COMM Mode) - ; Bit6 = Indicates that ALARM SET MODE is on the display (SET=On Display) - ; Bit7 = -APP_FLAGS EQU $8f ; System Flags - ; Bit0 = Event has been posted (SET=TRUE) - ; Bit1 = We want to allow the app to be suspended (SET=ALLOW) - ; Bit2 = Run a nested application (SET=TRUE) - only for ALARM,APPT, WRISTAPP - ; Bit3 = A button beep has already been played (SET=PLAYED) - ; Bit4 = - ; Bit5 = - ; Bit6 = - ; Bit7 = -BTNFLAGS EQU $90 ; Flags for the timer. Note that bits 5 and 7 are exclusive because they happen to - ; use the same variables to hold their information. - ; Bit0 = - ; Bit1 = wristapp wants a 1/10 second timer function called (WRIST_DOTIC) (SET=CALL) - ; Bit2 = Indicates a blink routine is pending (SET=PENDING) - ; Bit3 = Indicates a scrolling message is pending (SET=PENDING) - ; Bit4 = Indicates an update routine is pending (SET=PENDING) - ; Bit5 = Indicates a blink routine has been established (SET=ACTIVE) - ; Bit6 = Indicates a scrolling message is in progress (SET=ACTIVE) - ; Bit7 = Indicates an update routine has been established (SET=ACTIVE) -BTNSTATE EQU $91 ; Current event/button press -TIMER_FLAGS EQU $94 ; System Flags - ; Bit0 = Indicates that the timer2 timer has been enabled (SET=ENABLED) - ; Bit1 = Indicates that the TIC timer has been enabled (SET=ENABLED) - ; Bit2 = Indicates that we want to turn off the indiglo automatically (SET=TURN OFF) - ; Bit3 = Indicates that they have done something in this applet (SET=done something) - ; Bit4 = Request to reset the watch (SET=Reset Watch) - ; Bit5 = Request to turn off the INDIGLO at some future time - ; Bit6 = - ; Bit7 = ????Related to indicating that sound is currently playing -MAIN_FLAGS EQU $95 ; Flags to set queue requests to do something in the main loop - ; Bit0 = Indicates that a button has changed state (SET=CHANGED) - ; Bit1 = Indicates that the current app should be suspended and TIME activated (SET=Suspend) - ; Bit2 = Indicates that the TIMER_TICS has been updated (SET=Updated) - ; Bit3 = Indicates that the hourly chimes need to be played (SET=Please Play) - ; Bit4 = Indicates that the appointments should be checked (SET=Please Check) - ; Bit5 = Indicates that the anniversaries need to be checked (SET=Please Check) - ; Bit6 = - ; Bit7 = -WRISTAPP_FLAGS EQU $96 ; System Flags - ; Bit0 = wristapp wants a second timer function called at start of interrupt (WRIST_DOTIC) (SET=CALL) - ; Bit1 = wristapp wants a call once a minute when it changes (WRIST_DOTIC) (SET=CALL) - ; Bit2 = wristapp wants a call once an hour when it changes (WRIST_DOTIC) (SET=CALL) - ; Bit3 = wristapp wants a call once a day when it changes (WRIST_DOTIC) (SET=CALL) - ; Bit4 = Play button beep sound on wristapp for any button (SET=ENABLE) - ; Bit5 = Play button beep sound on wristapp for mode button (SET=ENABLE) - ; Bit6 = Uses system rules for button beep decisions (SET=SYSTEM RULES) - ; Bit7 = Wristapp has been loaded (SET=LOADED) -NEST_PARM EQU $99 ; Holds the parameter passed to the current nested app -SYSSOUND EQU $9B ; Current sound to be played -HW_FLAGS EQU $9e ; System Variable - ; Bit0 = Request state for Indiglo light (SET=ON) - ; Bit1 = Indicates the the SYS_07 hardware has been reset - ; Bit2 = - ; Bit3 = Indicates that we want to load some code from the serial port at reset (SET=ON) - ; Bit4 = Set but never used. Mimics the state of 0,PORT_C_DATA & 0,PORT_C_DDR - ; Bit5 = Set but never used. Mimics the state of 1,PORT_C_DATA & 1,PORT_C_DDR - ; Bit6 = Indicates that INST_ADDR is a pointer into the EEPROM (SET=EEPROM Address) - ; Bit7 = Interrupts have been disabled (SET=DISABLED) -SYSFLAGS EQU $9F ; System flags - ; Bit0 = Indicates the update direction. (SET=UP) - ; Bit1 = Indicates that the screen needs to be cleared (SET=no need to clear) - ; Also used as part of a the digit blinking code (SET=Show digits) - ; Bit2 = Indicates that the end of a scrolling message has been reached (SET=END) - ; Bit3 = User vs system string (SET=User String) - ; Bit4 = - ; Bit5 = - ; Bit6 = - ; Bit7 = -DATDIGIT1 EQU $A2 ; First digit parameter for PUTMIDnn/PUTTOPnn routines -DATDIGIT2 EQU $A3 ; Second digit parameter for PUTMIDnn/PUTTOPnn routines -UPDATE_VAL EQU $a6 ; Temporary value passed to the update/blink routines -UPDATE_PARM EQU $a7 ; Pointer to the data passed to the update/blink routines -; -; The sound in SYSSOUND can be set to one of the following values: -; -SND_HOURLY EQU $83 ; HOURLY CHIME -SND_APPT EQU $85 ; APPOINTMENT BEEP -SND_ALARM EQU $86 ; ALARM BEEP -SND_DLOAD EQU $87 ; PROGRAM DOWNLOAD -SND_EXTRA EQU $88 ; EXTRA -SND_COMERR EQU $89 ; COMM ERROR -SND_DONE EQU $8A ; COMM DONE -SND_BUTTON EQU $c1 ; BUTTON BEEP -SND_RETURN EQU $c2 ; RETURN TO TIME -SND_CONF EQU $c4 ; CONFIRMATION - -APPT_PROMBASE EQU $0100 ; Address of the first entry for Appointments in the EEPROM -LIST_PROMBASE EQU $0102 ; Address of the first entry for LISTs in the EEPROM -PHONE_PROMBASE EQU $0104 ; Address of the first entry for PHONE numbers in the EEPROM -ANNIV_PROMBASE EQU $0106 ; Address of the first entry for Anniversaries in the EEPROM -APPT_ENTRIES EQU $0108 ; Number of currently loaded Appointment entries -LIST_ENTRIES EQU $0109 ; Number of currently loaded LIST entries -PHONE_ENTRIES EQU $010a ; Number of currently loaded Phone number entries -ANNIV_ENTRIES EQU $010b ; Number of currently loaded Anniversary entries -APPT_BASEYEAR EQU $010c ; The year for the first loaded appointment -APPT_PRETIME EQU $010d ; How many minutes ahead of time to announce an appointment -COMM_010e EQU $010e ; ???? -; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -SND_BASEOFF EQU $010f ; Sound base pointer - All sounds are this base relative to SND_BASE (0336) -WRIST_MAIN EQU $0110 ; This is the primary initialization entry point for a Wristapp -WRIST_SUSPEND EQU $0113 ; This is the entry point called immediately before suspending the wristapp -WRIST_DOTIC EQU $0116 ; This is the entry point called for a timer tic in a wristapp -WRIST_INCOMM EQU $0119 ; This is called when the COMM app is suspending the wristapp which has requests to process timer events -WRIST_NEWDATA EQU $011c ; This is the wristapp entry point called when new data has been downloaded to the watch -WRIST_GETSTATE EQU $011f ; Entry to get a wristapp state table entry -WRIST_JMP_STATE0 EQU $0123 ; Wristapp entry point to call state 0 - -INST_ADDRHI EQU $0437 -INST_ADDRLO EQU $0438 -USER04a1 EQU $04a1 -NESTED_APP EQU $04a2 ; Nested application (Only to run an application while a different one is running) - ; This is used to handle alarms and appointments that go off while you are running something else -APP2_ALARM EQU 9 ; 9 = Alarm (while another app is running) -APP2_APPT EQU 10 ; 10 = Appointment (while another app is running) -APP2_WRIST EQU 11 ; 11 = Wristapp (while another app is running) -NESTED_PARM EQU $04a4 ; Parameter passed to the nested app call -USER04c3 EQU $04c3 -BUF_PHONENUM EQU $043a ; 12 byte buffer to hold a decompressed phone number -EXTRACTBUF EQU $0446 ; 32 byte buffer to hold extracted data from the EEPROM -UPDATE_POS EQU $04f3 ; Position to update a segment or digit in the blink/refresh routines -; -; These two constants appear to be associated with the PUTSCROLLMSG and SCROLLMSG routines -; -SEPARATOR EQU $3F ; Indicates the end of a scrolling string -MSGBUF EQU $04d2 ; Location of the system buffer for a scrolling string -CURRENT_APP EQU $04c1 ; The current application number (1-8) -APP_TIME EQU 1 ; 1 = Time of Day -APP_ALARM EQU 2 ; 2 = Alarm -APP_APPT EQU 3 ; 3 = Appointment -APP_ANNIV EQU 4 ; 4 = Anniversary -APP_PHONE EQU 5 ; 5 = Phone number -APP_LIST EQU 6 ; 6 = List -APP_COMM EQU 7 ; 7 = Communication -APP_WRIST EQU 8 ; 8 = Wristapp (if downloaded) -BTN_PRESSED EQU $04c3 ; The button currently pressed (For EVT_ANY or EVT_ANY4 events) 0=NEXT 1=MODE 2=SET 3=PREV 4=GLOW -EFFECTIVE_APP EQU $04c4 ; The efective application -APP_13 EQU 13 ; Some submode of the TIME application -APP_TIME_SET EQU 14 ; Submode of the TIME application -UPDATE_MIN EQU $04f4 ; Minimum value for the update function to generate. At this, it wraps to UPDATE_MAX -UPDATE_MAX EQU $04f5 ; Maximum value for the update function to generate. At this, it wraps to UPDATE_MIN -PARM_MONTH EQU $04f9 ; Month parameter -PARM_YEAR EQU $04fa ; Current year also... - -WATCHTIMER EQU $7ff0 -; -; Other random routines which you might call.... -; -ALARM_BLINKSEL EQU $4095 -ALARM_UPDATESEL EQU $4099 -ALARM_SELMIN EQU $409D -ALARM_SELMAX EQU $40A1 -FIND_ANNIV_TODAY EQU $40CD -FIND_ANNIV_SCAN EQU $40D3 -ANNIV_NEXT_ENTRY EQU $40E1 -ANNIV_PREV_ENTRY EQU $4117 -FIND_ANNIV_ENTRY EQU $415F -CHECK_ANNIVERSARIES EQU $41FC -SET_ANNIVTEST_TODAY EQU $423A -ANNIV_GETMONTHLEN EQU $426A -TEST_ANNIVERSARY EQU $4288 -ANNIV_COPY_INFO EQU $4308 -READ_ANNIV_CURRENT EQU $4317 -READ_ANNIV_FIRST EQU $4326 -READ_ANNIV_NEXT EQU $4335 -TEST_SCAN_START EQU $4346 -FIX_SCAN_YEAR EQU $4371 -TEST_SCAN_END EQU $437E -RESTORE_SCAN_YEAR EQU $43AE -INCREMENT_SCAN_DATE EQU $43B9 -GET_SCAN_MONTHLEN EQU $43E0 -DECREMENT_SCAN_DATE EQU $43F4 -FIND_APPT_NOW EQU $4415 -FIND_APPT_SCAN EQU $441B -SET_APPTFIND_SCAN EQU $4422 -READ_APPT_NEXT EQU $442C -APPT_LATCH_ENTRYDATA EQU $4468 -APPT_LATCH_ENTRYONLY EQU $446C -READ_APPT_PREV EQU $447C -FIND_APPT_ENTRY EQU $44C6 -APPT_LATCH_ENTDYDATA EQU $45A5 -CHECK_APPOINTMENTS EQU $45B9 -SET_APPTFIND_NOW EQU $462A -READ_APPT_FIRST EQU $4686 -READ_APPT_LAST EQU $469D -CHECK_APPT_TIME EQU $46B7 -READ_APPT_PACKET1 EQU $473A -READ_NEXT_APPT_PACKET EQU $4749 -READ_APPT_CURRENT EQU $475A -PROCESS_EVENTS EQU $49F6 -DO_ANYAPP_EVENT EQU $4B42 -DO_NESTAPP_EVENT EQU $4B45 -DO_APP_EVENT EQU $4B81 -DO_NORMAL_STATE EQU $4BB8 -TRANSITION_RBUTTON EQU $48fe -TRANSITION_LBUTTON EQU $494d -QUEUE_INDIGLO_OFF EQU $4992 -;QUEUE_INDIGLO_OFF EQU $49D9 -NIGHTMODE_INDIGLO_ON EQU $49E6 -INDIGLO_ON EQU $49EC -PROCESS_REQUESTS EQU $4C66 -TIMER1_INTERVALS EQU $4de1 -TIMER2_INTERVALS EQU $4dec -DO_EVENT EQU $4CA4 -GETSTATE EQU $4CFE -GETSTATE_TAB EQU $4D0e -CHECK_COMPATIBLE_EVENT EQU $4D96 -STOP_ALL_SOUND EQU $4E68 -PREPARE_TIMER2_TIMER EQU $4E96 -PLAY_HOURLY EQU $4EB1 -PAUSE_WATCH EQU $4EC7 -RESUME_WATCH EQU $4EDE -RESUME_UPDATE EQU $4EF6 -ACQUIRE_TIME EQU $4F22 -RELEASE_TIME EQU $4F2E -PLAY_BUTTON_SAFE EQU $4F46 -PREPARE_NEST_CALL EQU $4FA0 -UNPACK_PHONENUM EQU $4FBF -PHONE_UNPACK_VAL EQU $4FE0 -UNPACK_STRING EQU $4FF0 -READ_PACKET EQU $503E -FIND_PACKET EQU $5044 -DO_TRANSFER EQU $505F -TOGGLE_ENTRYFLAG EQU $5077 -MAKE_INST_LDA EQU $50B4 -MAKE_INST_LDA_X EQU $50B8 -MAKE_INST_STA EQU $50BC -ADD_INSTADDR EQU $50C7 -SET_INSTADDR_0110 EQU $50D7 -GET_INST_BYTE EQU $50EB -WRITE_FLAG_BYTE EQU $510A -FILL_EXTRACTBUF EQU $513E -SAVE_EXTRACTBUF EQU $515D -SYSTEM_RESET EQU $519B -SND_OFF EQU $5286 -DO_SOUND EQU $5298 -SET_SYS_0f_4d EQU $5203 -SET_SYS_0f_41 EQU $5208 -ENABLE_EYE EQU $53A6 -SERIAL_DELAY EQU $53B4 -DISABLE_EYE EQU $53BD -SET_SYS_07 EQU $53C8 -CLEAR_SYS_07 EQU $53CF -RESET_SYS_07 EQU $53D5 -INITHW_SYS_07 EQU $53DC -SETHW_07_08_C1 EQU $53F4 -WRITE_ACQUIRE EQU $543C -WRITE_RELEASE EQU $5448 -MAKE_INST2_LDA_X EQU $5453 -MAKE_INST2_STA_X EQU $5457 -PROM_READ EQU $5462 -PROM_WRITE EQU $5488 -READ_EEPROM_PORT EQU $54CC -PROM_STARTIO EQU $54D6 -PROM_ACQUIRE EQU $54E2 -PROM_RELEASE EQU $54EC -PROM_SHOW EQU $54F3 -PROM_HIDE EQU $54F8 -DO_SCROLL EQU $5566 -DO_BLINK EQU $55c8 -PUTDOWTOP EQU $5872 -FMTBLANK0B EQU $5963 -SAYHOLDTODELETE EQU $598a -PUT_PHONENUM EQU $59a2 -PUTYEARMID EQU $59d9 -CLEAR_HMONTH EQU $59f8 -PUT_HMONTHX EQU $59FD -CLEAR_HDAY EQU $5a11 -PUT_HDAYX EQU $5a16 -FIXLEAD0 EQU $5A2A -CLEAR_MONTH EQU $5a36 -IPUT_MONTHX EQU $5a3b -CLEAR_DAY EQU $5a4f -IPUT_DAYX EQU $5a54 -CLEAR_YEAR EQU $5a6f -IPUT_YEARX EQU $5a74 -PUTHALFDATESEP EQU $5aa0 -PUT_LETTERX EQU $5ace -PUT_HOURX EQU $5ad9 -CLEAR_RANGE EQU $5793 -SYSSYMVALS EQU $57b0 -PHONE_NEXT_ENTRY EQU $616D -PHONE_PREV_ENTRY EQU $618C -PHONE_READ_CURRENT EQU $61A7 -PHONE_SHOW_CURRENT EQU $61B0 -PHONE_FIND_SCAN_ENTRY EQU $61F1 -PHONE_READ_ENTRY EQU $622C -PHONE_READ_NEXT_ENTRY EQU $623D -PHONE_READ_FIRST_NEXT EQU $6251 -UPDATE_SECONDS EQU $625E -ADJUST_TZ1TIME EQU $62d7 -ADJUST_TZ2TIME EQU $6343 -UPDATE_TZ1DISP EQU $63af -UPDATE_TZ2DISP EQU $63e6 -TIME_SET_BLINKON EQU $6660 -TIME_SET_BLINKOFF EQU $6664 -TIME_SET_GET_TIMEPTR EQU $667b -TIME_SET_SHOWDISPLAY EQU $668a -TIME_GET_BLINKPARM EQU $66e5 -SHOW_TIME_DISPLAY EQU $676A -CLEAR_PM EQU $6815 -CLEAR_AM EQU $681c -SHOWNIGHT_SYM EQU $6840 -SAY_HOLD_TO EQU $6855 -FIX_TMAPP_DAY EQU $6861 -TMAPP_COPYTZ1 EQU $6881 -TMAPP_COPYTZ2 EQU $688c -GETTZNAME EQU $6897 -GET_MONTHDAYX EQU $689F -GET_YEAR EQU $68b2 -GET_HOURFORMAT EQU $68bb -GET_DATEFMT EQU $68cb -COPY_MDY EQU $68db -CHECK_TZ EQU $690e -CALC_DOW EQU $691c -TIME_BLINKSEL EQU $69A4 -TIME_UPDATESEL EQU $69AF -TIME_SELMIN EQU $69ba -TIME_SELMAX EQU $69c5 -LIST_GO_NEXT EQU $6A9F -LIST_GO_PREV EQU $6AAD -LIST_DISPLAY_CURRENT EQU $6ABB -CLEAR_WRISTAPPMEM EQU $6b1f -DELAY_X EQU $6b31 -DELAY_X16 EQU $6b43 -SHOWNOTE_SYM EQU $6C62 -SHOWALARM_SYM EQU $6C76 -ALARM_CHECK EQU $6BC4 -ALARM_START_BLINK EQU $6E9D -ALARM_CALL_BLINK EQU $6EA4 -ALARM_GET_BLINKPARM EQU $6EB7 -ALARM_DISPLAY_CURRENT EQU $6EF4 -ALARM_SHOW_HOURLYNOTE EQU $6F39 -ALARM_SHOW_ALARMSYM EQU $6F4A -ALARM_SHOW_AMPM EQU $6F5B -ALARM_SHOW_TEXTCHAR EQU $6F7C -ALARM_FIX_HOUR EQU $6F88 -ALARM_GET_DISPLAYHOUR EQU $6FA0 -ALARM_SET_CURRENT EQU $6FBE -ALARM_SAVE_STATUS EQU $6FD5 -ALARM_GET_TEXTOFFSET EQU $6FDC -ALARM_GET_DATAOFFSET EQU $6FE5 -MASK_ALARMS EQU $6FF3 -UNMASK_ALARMS EQU $7000 -ANNIV_SHOW_DATE EQU $7184 -ANNIV_SHOW_SCAN_DATE EQU $719F -ANNIV_SHOW_CURRENT EQU $71AC -SHOWREMIND_SYM EQU $71D6 -OFFREMIND_SYM EQU $71EE -SAY_NO_ANN_ENTRIES EQU $71F5 -APPT_SHOW_TIME EQU $73D7 -APPT_SHOW_DATE EQU $7439 -APPT_SHOW_SCAN EQU $7454 -APPT_SHOW_CURRENT EQU $7461 -APPT_SHOW_UPCOMING EQU $748E -SAY_NO_APPT_ENTRIES EQU $74BD diff --git a/dl150s/include/wristapp.i b/dl150s/include/wristapp.i deleted file mode 100644 index 13cac0b..0000000 --- a/dl150s/include/wristapp.i +++ /dev/null @@ -1,1508 +0,0 @@ -; -; Wristapp.i - For the Datalink 150s -; Copyright (c) 1997 by John A. Toebes, VIII. All Rights Reserved. -; -DISP_ROW EQU $1d ; Hardware register to select which row of the display is to be written to. You need to - ; Combine this with setting DISP_COL to cause the segment to change -DISP_COL EQU $1e ; Hardware register to select which col of the display is to be written to. You must set - ; DISP_ROW first to cause the segment to change -; It turns out that the segments on the display are readily accessible. You can turn on/off any segment -; pretty easily. -; -; The top and middle lines are a series of segments which can be individually turned on to -; achieve the different letters. I assign the segments as follows: -; A -; _____ -; | | -; F | |H | B -; | | | -; ---G- -; | | | -; E | |I | C -; |_____| -; D -; -; Numbering the digits on the line from left to right we would get -; -; -; 1A 2A 3A 4A 5A 6A -; _____ _____ _____ _____ _____ _____ -; 1| |1 2| |2 3| |3 4| |4 5| |5 6| |6 -; F| |1 |B F| |2 |B F| |3 |B F| |4 |B F| |5 |B F| |6 |B -; | |H | | |H | D23 | |H | D34| |H | D45 | |H | | |H | -; --1G- --2G- --- --3G- -- --4G- --- --5G- --6G- -; 1| |1 |1 2| |2 |2 3| |3 |3 4| |4 |4 5| |5 |5 6| |6 |6 -; E| |I |C E| |I |C E| |I |C E| |I |C E| |I |C E| |I |C -; |_____| |_____| . |_____| |_____| . |_____| |_____| -; 1D 2D P23 3D 4D P45 5D 6D -; -; AM PM Remind Night Alarm Note -; -; -; 1A 2A 3A 4A 5A 6A -; _____ _____ C23 _____ _____ _____ _____ -; 1| |1 2| |2 o 3| |3 4| |4 5| |5 6| |6 -; F| |1 |B F| |2 |B F| |3 |B F| |4 |B F| |5 |B F| |6 |B -; | |H | | |H | D23 | |H | | |H | D45 | |H | | |H | -; --1G- --2G- --- --3G- --4G- --- --5G- --6G- -; 1| |1 |1 2| |2 |2 3| |3 |3 4| |4 |4 5| |5 |5 6| |6 |6 -; E| |I |C E| |I |C o E| |I |C E| |I |C E| |I |C E| |I |C -; |_____| |_____| . |_____| |_____| . |_____| |_____| -; 1D 2D P23 3D 4D P45 5D 6D -; -; Note the two dashes between segments 2&3 and 4&5. For convenience, I refer to these -; as D23 and D45 or DASH23 and DASH45 respectively. -; I prefix all of the items on the first row with a T and those on the middle row with a M. -; -; Pixels on the bottom line are addressed a little differently. For these, we have 8 5x5 sets of -; segments. We can reference them as follows: -; -; S1 S2 S3 S4 S5 S6 S7 S8 -; 12345 12345 12345 12345 12345 12345 12345 12345 -; *****A *****A *****A *****A *****A *****A *****A *****A -; *****B *****B *****B *****B *****B *****B *****B *****B -; *****C *****C *****C *****C *****C *****C *****C *****C -; *****D *****D *****D *****D *****D *****D *****D *****D -; *****E *****E *****E *****E *****E *****E *****E *****E -; -; Hence, the lower right pixel is referenced as S8E5 -; - -; Value Bit0 Bit1 Bit2 Bit3 Bit4 -; ------ ------ ------ ------ ------ ------ -; 00 -; 02 S8E1 S8D1 S8A1 S8B1 S8C1 -; 04 S8E2 S8D2 S8A2 S8B2 S8C2 -; 06 S8E3 S8D3 S8A3 S8B3 S8C3 -; 08 S8E4 S8D4 S8A4 S8B4 S8C4 -; 0A S8E5 S8D5 S8A5 S8B5 S8C5 -; 0C -; 0E T6C T6B M6C M6B Note -; 10 T6D T6G T6A M6A -; 12 T6I T6H M6I M6G M6H -; 14 T6E T6F M6D M6E M6F -; 16 -; 18 -; 1A -; 1C T5C T5B M5C M5B Alarm -; 1E T5D T5G T5A M5A -; 20 T5I T5H M5I M5G M5H -; 22 T5E T5F M5D M5E M5F -; 24 TP45 TD45 MP45 MD45 -; 26 T4C T4B M4C M4B Night -; 28 T4D T4G T4A M4A -; 2A T4I T4H M4I M4G M4H -; 2C T4E T4F M4D M4E M4F -; 2E T3C T3B M3C M3B TD34 -; 30 T3D T3G T3A M3A -; 32 T3I T3H M3I M3G M3H -; 34 T3E T3F M3D M3E M3F -; 36 TP23 TD23 MP23 MC23 -; 38 T2C T2B M2C M2B Remind -; 3A T2D T2G T2A M2A -; 3C T2I T2H M2I M2G M2H -; 3E T2E T2F M2D M2E M2F -; 40 T1C T1B M1C M1B PM -; 42 T1D T1G T1A M1A -; 44 T1I T1H M1I M1G M1H -; 46 T1E T1F M1D M1E M1F -; 48 AM -; -; For the ODD Bits, we have: -; -; Value Bit0 Bit1 Bit2 Bit3 Bit4 -; ------ ------ ------ ------ ------ ------ -; 01 S7D5 S7E5 S7A5 S7B5 S7C5 -; 03 S7D4 S7E4 S7A4 S7B4 S7C4 -; 05 S7D3 S7E3 S7A3 S7B3 S7C3 -; 07 S7D2 S7E2 S7A2 S7B2 S7C2 -; 09 S7D1 S7E1 S7A1 S7B1 S7C1 -; 0B S6D5 S6E5 S6A5 S6B5 S6C5 -; 0D S6D4 S6E4 S6A4 S6B4 S6C4 -; 0F S6D3 S6E3 S6A3 S6B3 S6C3 -; 11 S6D2 S6E2 S6A2 S6B2 S6C2 -; 13 S6D1 S6E1 S6A1 S6B1 S6C1 -; 15 S5D5 S5E5 S5A5 S5B5 S5C5 -; 17 S5D4 S5E4 S5A4 S5B4 S5C4 -; 19 S5D3 S5E3 S5A3 S5B3 S5C3 -; 1B S5D2 S5E2 S5A2 S5B2 S5C2 -; 1D S5D1 S5E1 S5A1 S5B1 S5C1 -; 1F S4D5 S4E5 S4A5 S4B5 S4C5 -; 21 S4D4 S4E4 S4A4 S4B4 S4C4 -; 23 S4D3 S4E3 S4A3 S4B3 S4C3 -; 25 S4D2 S4E2 S4A2 S4B2 S4C2 -; 27 S4D1 S4E1 S4A1 S4B1 S4C1 -; 29 -; 2B S3D5 S3E5 S3A5 S3B5 S3C5 -; 2D S3D4 S3E4 S3A4 S3B4 S3C4 -; 2F S3D3 S3E3 S3A3 S3B3 S3C3 -; 31 S3D2 S3E2 S3A2 S3B2 S3C2 -; 33 S3D1 S3E1 S3A1 S3B1 S3C1 -; 35 S2D5 S2E5 S2A5 S2B5 S2C5 -; 37 S2D4 S2E4 S2A4 S2B4 S2C4 -; 39 S2D3 S2E3 S2A3 S2B3 S2C3 -; 3B S2D2 S2E2 S2A2 S2B2 S2C2 -; 3D S2D1 S2E1 S2A1 S2B1 S2C1 -; 3F S1D5 S1E5 S1A5 S1B5 S1C5 -; 41 S1D4 S1E4 S1A4 S1B4 S1C4 -; 43 S1D3 S1E3 S1A3 S1B3 S1C3 -; 45 S1D2 S1E2 S1A2 S1B2 S1C2 -; 47 S1D1 S1E1 S1A1 S1B1 S1C1 -; -; -; Of course if you want to look it from the orientation of the segments on the display, -; you can use this information. To make it more compact, I used the notation -; bit:Value -; where value is what you store in $1D and Bit is which bit to set/clear in $1E to get the effect -; -; T1A=2:40 T2A=2:38 T3A=2:2E T4A=2:26 T5A=2:1C T6A=2:0E -; T1B=1:3E T2B=1:36 T3B=1:2C T4B=1:24 T5B=1:1A T6B=1:0C -; T1C=0:3E T2C=0:36 T3C=0:2C T4C=0:24 T5C=0:1A T6C=0:0C -; T1D=0:40 T2D=0:38 T3D=0:2E T4D=0:26 T5D=0:1C T6D=0:0E -; T1E=0:44 T2E=0:3C T3E=0:32 T4E=0:2A T5E=0:20 T6E=0:12 -; T1F=1:44 T2F=1:3C T3F=1:32 T4F=1:2A T5F=1:20 T6F=1:12 -; T1G=1:40 T2G=1:38 T3G=1:2E T4G=1:26 T5G=1:1C T6G=1:0E -; T1H=1:42 T2H=1:3A T3H=1:30 T4H=1:28 T5H=1:1E T6H=1:10 -; T1I=0:42 T2I=0:3A T3I=0:30 T4I=0:28 T5I=0:1E T6I=0:10 -; -; TP23=0:34 -; TD23=1:34 -; TD34=4:2C -; TD45=1:22 -; TP45=0:22 -; -; M1A=4:40 M2A=4:38 M3A=4:2E M4A=4:26 M5A=4:1C M6A=4:0E -; M1B=3:3E M2B=3:36 M3B=3:2C M4B=3:24 M5B=3:1A M6B=3:0C -; M1C=2:3E M2C=2:36 M3C=2:2C M4C=2:24 M5C=2:1A M6C=2:0C -; M1D=2:44 M2D=2:3C M3D=2:32 M4D=2:2A M5D=2:20 M6D=2:12 -; M1E=3:44 M2E=3:3C M3E=3:32 M4E=3:2A M5E=3:20 M6E=3:12 -; M1F=4:44 M2F=4:3C M3F=4:32 M4F=4:2A M5F=4:20 M6F=4:12 -; M1G=3:42 M2G=3:3A M3G=3:30 M4G=3:28 M5G=3:1E M6G=3:10 -; M1H=4:42 M2H=4:3A M3H=4:30 M4H=4:28 M5H=4:1E M6H=4:10 -; M1I=2:42 M2I=2:3A M3I=2:30 M4I=2:28 M5I=2:1E M6I=2:10 -; -; MC23=3:34 -; MP23=2:34 -; MD45=3:22 -; MP45=2:22 -; -; AM=4:46 -; PM=4:3E -; Remind=4:36 -; Night=4:24 -; Alarm=4:1A -; Note=4:0C - -COL_T1A EQU 2 -ROW_T1A EQU $40 -COL_T2A EQU 2 -ROW_T2A EQU $38 -COL_T3A EQU 2 -ROW_T3A EQU $2E -COL_T4A EQU 2 -ROW_T4A EQU $26 -COL_T5A EQU 2 -ROW_T5A EQU $1C -COL_T6A EQU 2 -ROW_T6A EQU $0E -; -COL_T1B EQU 1 -ROW_T1B EQU $3E -COL_T2B EQU 1 -ROW_T2B EQU $36 -COL_T3B EQU 1 -ROW_T3B EQU $2C -COL_T4B EQU 1 -ROW_T4B EQU $24 -COL_T5B EQU 1 -ROW_T5B EQU $1A -COL_T6B EQU 1 -ROW_T6B EQU $0C -; -COL_T1C EQU 0 -ROW_T1C EQU $3E -COL_T2C EQU 0 -ROW_T2C EQU $36 -COL_T3C EQU 0 -ROW_T3C EQU $2C -COL_T4C EQU 0 -ROW_T4C EQU $24 -COL_T5C EQU 0 -ROW_T5C EQU $1A -COL_T6C EQU 0 -ROW_T6C EQU $0C -; -COL_T1D EQU 0 -ROW_T1D EQU $40 -COL_T2D EQU 0 -ROW_T2D EQU $38 -COL_T3D EQU 0 -ROW_T3D EQU $2E -COL_T4D EQU 0 -ROW_T4D EQU $26 -COL_T5D EQU 0 -ROW_T5D EQU $1C -COL_T6D EQU 0 -ROW_T6D EQU $0E -; -COL_T1E EQU 0 -ROW_T1E EQU $44 -COL_T2E EQU 0 -ROW_T2E EQU $3C -COL_T3E EQU 0 -ROW_T3E EQU $32 -COL_T4E EQU 0 -ROW_T4E EQU $2A -COL_T5E EQU 0 -ROW_T5E EQU $20 -COL_T6E EQU 0 -ROW_T6E EQU $12 -; -COL_T1F EQU 1 -ROW_T1F EQU $44 -COL_T2F EQU 1 -ROW_T2F EQU $3C -COL_T3F EQU 1 -ROW_T3F EQU $32 -COL_T4F EQU 1 -ROW_T4F EQU $2A -COL_T5F EQU 1 -ROW_T5F EQU $20 -COL_T6F EQU 1 -ROW_T6F EQU $12 -; -COL_T1G EQU 1 -ROW_T1G EQU $40 -COL_T2G EQU 1 -ROW_T2G EQU $38 -COL_T3G EQU 1 -ROW_T3G EQU $2E -COL_T4G EQU 1 -ROW_T4G EQU $26 -COL_T5G EQU 1 -ROW_T5G EQU $1C -COL_T6G EQU 1 -ROW_T6G EQU $0E -; -COL_T1H EQU 1 -ROW_T1H EQU $42 -COL_T2H EQU 1 -ROW_T2H EQU $3A -COL_T3H EQU 1 -ROW_T3H EQU $30 -COL_T4H EQU 1 -ROW_T4H EQU $28 -COL_T5H EQU 1 -ROW_T5H EQU $1E -COL_T6H EQU 1 -ROW_T6H EQU $10 -; -COL_T1I EQU 0 -ROW_T1I EQU $42 -COL_T2I EQU 0 -ROW_T2I EQU $3A -COL_T3I EQU 0 -ROW_T3I EQU $30 -COL_T4I EQU 0 -ROW_T4I EQU $28 -COL_T5I EQU 0 -ROW_T5I EQU $1E -COL_T6I EQU 0 -ROW_T6I EQU $10 -; -; -COL_TP23 EQU 0 -ROW_TP23 EQU $34 -; -COL_TD23 EQU 1 -ROW_TD23 EQU $34 -; -COL_TD34 EQU 4 -ROW_TD34 EQU $2C -; -COL_TD45 EQU 1 -ROW_TD45 EQU $22 -; -COL_TP45 EQU 0 -ROW_TP45 EQU $22 -; -; -COL_M1A EQU 4 -ROW_M1A EQU $40 -COL_M2A EQU 4 -ROW_M2A EQU $38 -COL_M3A EQU 4 -ROW_M3A EQU $2E -COL_M4A EQU 4 -ROW_M4A EQU $26 -COL_M5A EQU 4 -ROW_M5A EQU $1C -COL_M6A EQU 4 -ROW_M6A EQU $0E -; -COL_M1B EQU 3 -ROW_M1B EQU $3E -COL_M2B EQU 3 -ROW_M2B EQU $36 -COL_M3B EQU 3 -ROW_M3B EQU $2C -COL_M4B EQU 3 -ROW_M4B EQU $24 -COL_M5B EQU 3 -ROW_M5B EQU $1A -COL_M6B EQU 3 -ROW_M6B EQU $0C -; -COL_M1C EQU 2 -ROW_M1C EQU $3E -COL_M2C EQU 2 -ROW_M2C EQU $36 -COL_M3C EQU 2 -ROW_M3C EQU $2C -COL_M4C EQU 2 -ROW_M4C EQU $24 -COL_M5C EQU 2 -ROW_M5C EQU $1A -COL_M6C EQU 2 -ROW_M6C EQU $0C -; -COL_M1D EQU 2 -ROW_M1D EQU $44 -COL_M2D EQU 2 -ROW_M2D EQU $3C -COL_M3D EQU 2 -ROW_M3D EQU $32 -COL_M4D EQU 2 -ROW_M4D EQU $2A -COL_M5D EQU 2 -ROW_M5D EQU $20 -COL_M6D EQU 2 -ROW_M6D EQU $12 -; -COL_M1E EQU 3 -ROW_M1E EQU $44 -COL_M2E EQU 3 -ROW_M2E EQU $3C -COL_M3E EQU 3 -ROW_M3E EQU $32 -COL_M4E EQU 3 -ROW_M4E EQU $2A -COL_M5E EQU 3 -ROW_M5E EQU $20 -COL_M6E EQU 3 -ROW_M6E EQU $12 -; -COL_M1F EQU 4 -ROW_M1F EQU $44 -COL_M2F EQU 4 -ROW_M2F EQU $3C -COL_M3F EQU 4 -ROW_M3F EQU $32 -COL_M4F EQU 4 -ROW_M4F EQU $2A -COL_M5F EQU 4 -ROW_M5F EQU $20 -COL_M6F EQU 4 -ROW_M6F EQU $12 -; -COL_M1G EQU 3 -ROW_M1G EQU $42 -COL_M2G EQU 3 -ROW_M2G EQU $3A -COL_M3G EQU 3 -ROW_M3G EQU $30 -COL_M4G EQU 3 -ROW_M4G EQU $28 -COL_M5G EQU 3 -ROW_M5G EQU $1E -COL_M6G EQU 3 -ROW_M6G EQU $10 -; -COL_M1H EQU 4 -ROW_M1H EQU $42 -COL_M2H EQU 4 -ROW_M2H EQU $3A -COL_M3H EQU 4 -ROW_M3H EQU $30 -COL_M4H EQU 4 -ROW_M4H EQU $28 -COL_M5H EQU 4 -ROW_M5H EQU $1E -COL_M6H EQU 4 -ROW_M6H EQU $10 -; -COL_M1I EQU 2 -ROW_M1I EQU $42 -COL_M2I EQU 2 -ROW_M2I EQU $3A -COL_M3I EQU 2 -ROW_M3I EQU $30 -COL_M4I EQU 2 -ROW_M4I EQU $28 -COL_M5I EQU 2 -ROW_M5I EQU $1E -COL_M6I EQU 2 -ROW_M6I EQU $10 -; -; -COL_MC23 EQU 3 -ROW_MC23 EQU $34 -; -COL_MP23 EQU 2 -ROW_MP23 EQU $34 -; -COL_MD45 EQU 3 -ROW_MD45 EQU $22 -; -COL_MP45 EQU 2 -ROW_MP45 EQU $22 -; -; -COL_AM EQU 4 -ROW_AM EQU $46 -; -COL_PM EQU 4 -ROW_PM EQU $3E -; -COL_REMIND EQU 4 -ROW_REMIND EQU $36 -; -COL_NIGHT EQU 4 -ROW_NIGHT EQU $24 -; -COL_ALARM EQU 4 -ROW_ALARM EQU $1A -; -COL_NOTE EQU 4 -ROW_NOTE EQU $0C -; -; S1A1=2:47 S1B1=3:47 S1C1=4:47 S1D1=0:47 S1E1=1:47 -; S1A2=2:45 S1B2=3:45 S1C2=4:45 S1D2=0:45 S1E2=1:45 -; S1A3=2:43 S1B3=3:43 S1C3=4:43 S1D3=0:43 S1E3=1:43 -; S1A4=2:41 S1B4=3:41 S1C4=4:41 S1D4=0:41 S1E4=1:41 -; S1A5=2:3F S1B5=3:3F S1C5=4:3F S1D5=0:3F S1E5=1:3F -; -; S2A1=2:3D S2B1=3:3D S2C1=4:3D S2D1=0:3D S2E1=1:3D -; S2A2=2:3B S2B2=3:3B S2C2=4:3B S2D2=0:3B S2E2=1:3B -; S2A3=2:39 S2B3=3:39 S2C3=4:39 S2D3=0:39 S2E3=1:39 -; S2A4=2:37 S2B4=3:37 S2C4=4:37 S2D4=0:37 S2E4=1:37 -; S2A5=2:35 S2B5=3:35 S2C5=4:35 S2D5=0:35 S2E5=1:35 -; -; S3A1=2:33 S3B1=3:33 S3C1=4:33 S3D1=0:33 S3E1=1:33 -; S3A2=2:31 S3B2=3:31 S3C2=4:31 S3D2=0:31 S3E2=1:31 -; S3A3=2:2F S3B3=3:2F S3C3=4:2F S3D3=0:2F S3E3=1:2F -; S3A4=2:2D S3B4=3:2D S3C4=4:2D S3D4=0:2D S3E4=1:2D -; S3A5=2:2B S3B5=3:2B S3C5=4:2B S3D5=0:2B S3E5=1:2B -; -; S4A1=2:27 S4B1=3:27 S4C1=4:27 S4D1=0:27 S4E1=1:27 -; S4A2=2:25 S4B2=3:25 S4C2=4:25 S4D2=0:25 S4E2=1:25 -; S4A3=2:23 S4B3=3:23 S4C3=4:23 S4D3=0:23 S4E3=1:23 -; S4A4=2:21 S4B4=3:21 S4C4=4:21 S4D4=0:21 S4E4=1:21 -; S4A5=2:1F S4B5=3:1F S4C5=4:1F S4D5=0:1F S4E5=1:1F -; -; S5A1=2:1D S5B1=3:1D S5C1=4:1D S5D1=0:1D S5E1=1:1D -; S5A2=2:1B S5B2=3:1B S5C2=4:1B S5D2=0:1B S5E2=1:1B -; S5A3=2:19 S5B3=3:19 S5C3=4:19 S5D3=0:19 S5E3=1:19 -; S5A4=2:17 S5B4=3:17 S5C4=4:17 S5D4=0:17 S5E4=1:17 -; S5A5=2:15 S5B5=3:15 S5C5=4:15 S5D5=0:15 S5E5=1:15 -; -; S6A1=2:13 S6B1=3:13 S6C1=4:13 S6D1=0:13 S6E1=1:13 -; S6A2=2:11 S6B2=3:11 S6C2=4:11 S6D2=0:11 S6E2=1:11 -; S6A3=2:0F S6B3=3:0F S6C3=4:0F S6D3=0:0F S6E3=1:0F -; S6A4=2:0D S6B4=3:0D S6C4=4:0D S6D4=0:0D S6E4=1:0D -; S6A5=2:0B S6B5=3:0B S6C5=4:0B S6D5=0:0B S6E5=1:0B -; -; S7A1=2:09 S7B1=3:09 S7C1=4:09 S7D1=0:09 S7E1=1:09 -; S7A2=2:07 S7B2=3:07 S7C2=4:07 S7D2=0:07 S7E2=1:07 -; S7A3=2:05 S7B3=3:05 S7C3=4:05 S7D3=0:05 S7E3=1:05 -; S7A4=2:03 S7B4=3:03 S7C4=4:03 S7D4=0:03 S7E4=1:03 -; S7A5=2:01 S7B5=3:01 S7C5=4:01 S7D5=0:01 S7E5=1:01 -; -; S8A1=2:02 S8B1=3:02 S8C1=4:02 S8D1=1:02 S8E1=0:02 -; S8A2=2:04 S8B2=3:04 S8C2=4:04 S8D2=1:04 S8E2=0:04 -; S8A3=2:06 S8B3=3:06 S8C3=4:06 S8D3=1:06 S8E3=0:06 -; S8A4=2:08 S8B4=3:08 S8C4=4:08 S8D4=1:08 S8E4=0:08 -; S8A5=2:0a S8B5=3:0a S8C5=4:0a S8D5=1:0a S8E5=0:0a -; -; -; Character set -; -C_0 EQU $00 -C_1 EQU $01 -C_2 EQU $02 -C_3 EQU $03 -C_4 EQU $04 -C_5 EQU $05 -C_6 EQU $06 -C_7 EQU $07 -C_8 EQU $08 -C_9 EQU $09 -C_A EQU $0A -C_B EQU $0B -C_C EQU $0C -C_D EQU $0D -C_E EQU $0E -C_F EQU $0F -C_G EQU $10 -C_H EQU $11 -C_I EQU $12 -C_J EQU $13 -C_K EQU $14 -C_L EQU $15 -C_M EQU $16 -C_N EQU $17 -C_O EQU $18 -C_P EQU $19 -C_Q EQU $1A -C_R EQU $1B -C_S EQU $1C -C_T EQU $1D -C_U EQU $1E -C_V EQU $1F -C_W EQU $20 -C_X EQU $21 -C_Y EQU $22 -C_Z EQU $23 -C_BLANK EQU $24 -C_SPACE EQU $24 -C_EXCLAIM EQU $25 -C_DQUOTE EQU $26 -C_POUND EQU $27 -C_DOLLAR EQU $28 -C_PERCENT EQU $29 -C_AMPERSAND EQU $2A -C_QUOTE EQU $2B -C_LPAREN EQU $2C -C_RPAREN EQU $2D -C_TIMES EQU $2E -C_PLUS EQU $2F -C_COMMA EQU $30 -C_MINUS EQU $31 -C_PERIOD EQU $32 -C_SLASH EQU $33 -C_COLON EQU $34 -C_BACKSLASH EQU $35 -C_DIVIDE EQU $36 -C_EQUAL EQU $37 -C_BELL EQU $38 -C_QUESTION EQU $39 -C_UNDER EQU $3A -C_CHECK EQU $3B -C_PREV EQU $3C -C_LEFTARR EQU $3C ; Symbol for the previous key -C_NEXT EQU $3D -C_RIGHTARR EQU $3D ; Symbol for the next key -C_BLOCK EQU $3E -C_SEP EQU $3F -C6_SPACE EQU $1d -; The basic timex character set is: -; 0 1 2 3 4 5 6 7 8 9 A B C D E F -; G H I J K L M N O P Q R S T U V -; W X Y Z ! " # $ % & ' ( ) * + -; , - . / : ; < = > ? @ A B C D E -; -; We also have the timex6 character set as: -; 0 1 2 3 4 5 6 7 8 9 A B C D E F -; G H : L M N P R T U W Y r - + -; - -EVT_NEXT EQU $00 ; Next button pressed (not interested in the up transition) -EVT_MODE EQU $01 ; Mode button pressed (not interested in the up transition) -EVT_SET EQU $02 ; Set/Delete button pressed (not interested in the up transition) -EVT_PREV EQU $03 ; Prev button pressed (not interested in the up transition) -EVT_GLOW EQU $04 ; Indiglo button pressed (not interested in the up transition) -EVT_ANY EQU $05 ; Any button pressed (not interested in the up transition) -EVT_ANY4 EQU $06 ; Any button pressed except indiglo (not interested in the up transition) -EVT_RESUME EQU $1a ; Called when resuming from a nested app -EVT_ENTER EQU $1b ; Initial state. The Time value is generally $01 or $84 for a well behaved app -EVT_NEST EQU $1c ; The state table 1 entry called when a nested application is called. It is the equivalent of - ; EVT_ENTER for an interrupt. This only occurs for Wristapps, Timer, and appt apps. -EVT_END EQU $1d ; End of event table indicator -EVT_TIMER1 EQU $1e ; Timer event - This is fired for a $83 time request -EVT_TIMER2 EQU $1f ; Timer event - This is fired for a $82,$84,$01 timer request -; $20-$36 - UNUSED -; (I bet that you can have user specified events for these too) -EVT_USER0 EQU $37 -EVT_USER1 EQU $38 -EVT_USER2 EQU $39 -EVT_USER3 EQU $3a ; User specified events. Queued by calling POSTEVENT ($4E78) -; $3b-$7f - UNUSED -EVT_DNNEXT EQU $80 ; Next button pressed -EVT_DNMODE EQU $81 ; Mode button pressed -EVT_DNSET EQU $82 ; Set/Delete button pressed -EVT_DNPREV EQU $83 ; Prev button pressed -EVT_DNGLOW EQU $84 ; Indiglo button pressed -EVT_DNANY EQU $85 ; Any of the four buttons Pressed -EVT_DNANY4 EQU $86 ; Any button pressed except indiglo - -; $87-$9F - UNUSED -EVT_UPNEXT EQU $A0 ; Next button released -EVT_UPMODE EQU $A1 ; Mode button released -EVT_UPSET EQU $A2 ; Set/Delete button released -EVT_UPPREV EQU $A3 ; Prev button released -EVT_UPGLOW EQU $A4 ; Indiglo button released -EVT_UPANY EQU $A5 ; Any of the four buttons Released -EVT_UPANY4 EQU $A6 ; Any button Released except indiglo - -ALARM_STATUS EQU $69 ; This is the status flags for the alarms. The low order bit indicates that it is enabled - ; The next bit seems to indicate that the alarm is temporarily masked or disabled - ; Apparently the next bit can be set, but I haven't seen any use for it. -; EQU $69 ; Alarm 1 Status -; EQU $69 ; Alarm 1 Status -; EQU $6a ; Alarm 2 Status -; EQU $6b ; Alarm 3 Status -; EQU $6c ; Alarm 4 Status -; EQU $6d ; Alarm 5 Status - -SCAN_MONTH EQU $7a ; The current SCAN month -SCAN_DAY EQU $7b ; The current SCAN day -SCAN_YEAR EQU $7c ; The current SCAN year - -MONTH_JAN EQU 1 -MONTH_FEB EQU 2 -MONTH_MAR EQU 3 -MONTH_APR EQU 4 -MONTH_MAY EQU 5 -MONTH_JUN EQU 6 -MONTH_JUL EQU 7 -MONTH_AUG EQU 8 -MONTH_SEP EQU 9 -MONTH_OCT EQU 10 -MONTH_NOV EQU 11 -MONTH_DEC EQU 12 - -SYSTEMP0 EQU $A0 -SYSTEMP1 EQU $A1 - -TIM_ONCE EQU $ff ; No time interval. Operation is executed just once - -TIM1_TIC EQU $00 -TIM1_2TIC EQU $01 -TIM1_3TIC EQU $02 -TIM1_4TIC EQU $03 -TIM1_HALFSEC EQU $04 -TIM1_SECOND EQU $05 -TIM1_SECHALF EQU $06 -TIM1_TWOSEC EQU $07 -TIM1_TWOSEC1 EQU $08 -TIM1_12SEC EQU $09 -TIM1_18SEC EQU $0a -; -; Note that the second part of this table is happen-stance since it is really a rollover -; of the second table on top of the first one. But it might be useful to someone... -; -TIM1_TICA EQU $0b ; This is the typical scroll interval -TIM1_2TICA EQU $0c -TIM1_4TICA EQU $0d -TIM1_8TIC EQU $0e ; This is the normal blink interval -TIM1_12TIC EQU $0f ; Just over a second -TIM1_16TIC EQU $10 ; A second and a half -TIM1_24TIC EQU $11 ; Two and a half seconds -TIM1_32TIC EQU $12 ; Just over three seconds -TIM1_40TIC EQU $13 ; Four seconds -TIM1_48TIC EQU $14 ; Almost five seconds -TIM1_96TIC EQU $15 ; Almost ten seconds - -TIM2_TIC EQU $80 ; This is the typical scroll interval -TIM2_2TIC EQU $81 -TIM2_4TIC EQU $82 -TIM2_8TIC EQU $83 ; This is the normal blink interval -TIM2_12TIC EQU $84 ; Just over a second -TIM2_16TIC EQU $85 ; A second and a half -TIM2_24TIC EQU $86 ; Two and a half seconds -TIM2_32TIC EQU $87 ; Just over three seconds -TIM2_40TIC EQU $88 ; Four seconds -TIM2_48TIC EQU $89 ; Almost five seconds -TIM2_96TIC EQU $8a ; Almost ten seconds - -TIM_LONG1 EQU $01 ; Long shot time interval - Fires a $1F when the the timer expires -TIM_03 EQU $03 ; Unknown -TIM_08 EQU $08 ; Unknown - -TIM_SHORT EQU $82 ; Short timer - Fires a $1F event when the timer expires -TIM_MED EQU $83 ; Medium timer - Fires a $1E event when the timer expires -TIM_LONG EQU $84 ; Long timer - Fires a $1F event when the timer expires -TIM_86 EQU $86 ; ?Timer -;----------------------------------------------------------------------------------------- -TZ1_HOUR EQU $b0 ; Time zone 1 current hour (0-23) -TZ1_MINUTE EQU $b1 ; Time zone 1 current minute (0-59) -TZ1_MONTH EQU $b2 ; Time zone 1 current month of the year (1-12) -TZ1_DAY EQU $b3 ; Time zone 1 current day of the month (1-31) -TZ1_YEAR EQU $b4 ; Time zone 1 current year (mod 1900) -TZ1_NAME EQU $b5 ; Time zone 1 name (3 TIMEX characters) -; EQU $b6 ; " " " " -; EQU $b7 ; " " " " -TZ1_DOW EQU $b8 ; Time zone 1 day of week (0=Monday...6=Sunday) -;----------------------------------------------------------------------------------------- -TZ2_HOUR EQU $b9 ; Time zone 2 current hour (0-23) in Timezone 1 -TZ2_MINUTE EQU $ba ; Time zone 2 current minute (0-59) -TZ2_MONTH EQU $bb ; Time zone 2 current month of the year (1-12) -TZ2_DAY EQU $bc ; Time zone 2 current day of the month (1-31) -TZ2_YEAR EQU $bd ; Time zone 2 current year (mod 1900) -TZ2_NAME EQU $be ; Time zone 2 name (3 TIMEX characters) -; EQU $bf ; " " " " -; EQU $c0 ; " " " " -TZ2_DOW EQU $c1 ; Time zone 2 day of the week (0=Monday..6=Sunday) -;----------------------------------------------------------------------------------------- -; Sound Support Values -TONE_END EQU $00 ; END -TONE_LOW_C EQU $10 ; Low C -TONE_HI_C EQU $20 ; High C -TONE_MID_C EQU $30 ; Middle C -TONE_VHI_C EQU $40 ; Very high C -TONE_HI_F EQU $50 ; High F (little bit lower than F) -TONE_MID_F EQU $60 ; Middle F -TONE_LO_F EQU $70 ; Low F -TONE_VHI_GSHARP EQU $80 ; Very High G# (G Sharp) -TONE_HI_GSHARP EQU $90 ; High G# -TONE_MID_GSHARP EQU $A0 ; Middle G# -TONE_LO_GSHARP EQU $B0 ; Low G# -TONE_HI_D EQU $C0 ; High D -TONE_MID_D EQU $D0 ; Middle D -TONE_LO_D EQU $E0 ; Low D -TONE_PAUSE EQU $F0 ; Pause -SND_END EQU $80 -;----------------------------------------------------------------------------------------- -SNDSTART EQU $4E39 ; Start playing the current sound in SYSSOUND -;-------------------------------------------------------------------------------- -PLAYCONF EQU $4E69 ; Play a confirmation sound -PLAYBUTTON EQU $4E6F ; Play the button beep sound if no other sound is currently playing -;-------------------------------------------------------------------------------- -POSTEVENT EQU $4E78 ; Post a event to the internal processing queue -; Parameters: -; A - Event to be posted. -; This posts an event to run through the processing loop for the current applet. -; Typical user events are in the $30-$3F range. -; -;-------------------------------------------------------------------------------- -INDIGLO_OFF EQU $4E7D ; This routine turns off the indiglo light -;-------------------------------------------------------------------------------- -SNDSTOP EQU $4F29 ; This stops whatever sound is currently playing -;-------------------------------------------------------------------------------- -CALL_NESTEDAPP EQU $4F3C -; Purpose: -; This sets up to call a nested application while the current one is running. -; Up to 5 apps may be nested (although there are only 3 potential ones defined). -; If more than 5 have been called the oldest one will be forgotten. -; When the nested app is called, NESTED_APP will be set to the application number -; passed in and NESTED_PARM will contain the X parameter passed in -; -; Parameters: -; A - Nested application number. This is one of the three defined apps: -; 9 = APP2_ALARM - Alarm (while another app is running) -; 10 = APP2_APPT - Appointment (while another app is running) -; 11 = APP2_WRIST - Wristapp (while another app is running) -; X - Parameter to pass to the nested application -;-------------------------------------------------------------------------------- -SET_INDIGLO EQU $54f3 ; This routine turns on/off the indiglo light -; Parameters: -; 0,Sys_9e - Bit indicates request for on or off -;-------------------------------------------------------------------------------- -PUTSCROLLMSG EQU $5511 ; Make the buffer at MSGBUF visible -;-------------------------------------------------------------------------------- -SCROLLMSG EQU $5534 ; Start the scrolling cycle for the current message -; Parameters: -; MSGBUF - Message to be scroll terminated by a SEPARATOR character -;-------------------------------------------------------------------------------- -SCROLLMSG_CONT EQU $5538 ; Start the scrolling cycle for the current message, but don't reset the - ; scrolling cycle wait count. -; Parameters: -; MSGBUF - Message to be scroll terminated by a SEPARATOR character -; SCROLL_TICS - The current tic count in the cycle -;-------------------------------------------------------------------------------- -START_BLINKX EQU $55aa ; Establish and call the specified blinking rountine -; Parameters: -; X - single byte parameter to the particular blinking function -; A - Blinking function to be selected -;-------------------------------------------------------------------------------- -START_BLINKP EQU $55ae ; Establish and call the specified blinking rountine -; Parameters: -; X - Address of parameter to the particular blinking function -; A - Blinking function to be selected -BLINK_YEAR EQU 0 ; Blink the year in the right place according to the current time format -BLINK_SECONDS EQU 1 ; Blink two characters point to by UPDATE_PARM on the right two digits of the middle line - Used for the seconds -BLINK_AMPM EQU 2 ; Blink AM/PM on the right most digits of the middle line (A or P pointed to by UPDATE_PARM) -BLINK_MONTH EQU 3 ; Blink the month in the right place according to the current time format -BLINK_HMONTH EQU 4 ; Blink the month in the right place according to the current time format for a half date (no year) -BLINK_DAY EQU 5 ; Blink the day in the right place according to the current time format -BLINK_HDAY EQU 6 ; Blink the day in the right place according to the current time format for half dates -BLINK_MID12 EQU 7 ; Blink the left two blank padded digits on the middle line (value pointed to by UPDATE_PARM) -BLINK_HOUR EQU 8 ; Blink the Hour (left two segments on the middle line) and AM/PM indicator (hour point to by UPDATE_PARM) -BLINK_MID34 EQU 9 ; Blink the middle two zero padded digits on the middle line (value pointed to by UPDATE_PARM) -BLINK_SEGMENT EQU 10 ; Blink a single segment indicated by UPDATE_POS and mask in UPDATE_VAL -BLINK_DIGIT EQU 11 ; Blink solid black cursor for the digit (UPDATE_POS is the location on the bottom line) -BLINK_TZONE EQU 12 ; Blink the timezone information (Pointed to by UPDATE_PARM) -BLINK_TOP34 EQU 13 ; Blink the middle zero padded two digits on the top line (value pointed to by UPDATE_PARM) -;-------------------------------------------------------------------------------- -PUTLINE3 EQU $59e7 ; Put a single character on the bottom line of the display -POSL3_1 EQU $50 -POSL3_2 EQU $4f -POSL3_3 EQU $45 -POSL3_4 EQU $3b -POSL3_5 EQU $31 -POSL3_6 EQU $1f -POSL3_7 EQU $15 -POSL3_8 EQU $0b -; Parameters: -; A = Position S1 S2 S3 S4 S5 S6 S7 S8 -; [$50] [$4f] [$45] [$3b] [$31] [$1f] [$15] [$0b] -; [ 80] [ 79] [ 69] [ 59] [ 49] [ 31] [ 21] [ 11] -; X = Character in Timex Ascii to display -; Notes: -; This appears to be an XOR operation. Calling the same function twice in a row would -; erase the character. Writing on top of an existing character seems to let you generate -; a non Ascii character. - -PUTLINE1 EQU $5a33 ; Put a single character on the top line of the display -POSL1_1 EQU $44 -POSL1_2 EQU $3c -POSL1_3 EQU $32 -POSL1_4 EQU $2a -POSL1_5 EQU $20 -POSL1_6 EQU $12 -; Parameters: -; A = Position [$44] [$3c] - [$32] [$2a] - [$20] [$12] -; [ 68] [ 60] [ 50] [ 42] [ 32] [18] -; X = Character in Timex Ascii to display - -PUTLINE2 EQU $5a6b ; Put a single character on the second line of the display -POSL1_1 EQU $44 -POSL1_2 EQU $3c -POSL1_3 EQU $32 -POSL1_4 EQU $2a -POSL1_5 EQU $20 -POSL1_6 EQU $12 -; Parameters: -; A = Position [$44] [$3c] - [$32] [$2a] - [$20] [$12] -; [ 68] [ 60] [ 50] [ 42] [ 32] [18] -; X = Character in Timex Ascii to display - -CLEARALL EQU $5aa0 ; Clear the display -CLEARBOT EQU $5aad ; Clear the bottom line of the display -CLEARSYM EQU $5acb ; Turns off all the non digit symbols segments (including dots, dashes and colons) -;------------------------------------------------------------------------- -START_UPDATEX equ $56c4 ; Establish and call the specified update function (See START_UPDATEP) -; Parameters: -; X - single byte parameter to the particular update function -; A - Update function to be selected -;------------------------------------------------------------------------- -START_UPDATEP EQU $56C8 ; This establishes an update function. Update functions are called every 8/10th - ; of a second. This function will update a number in an upward or downward - ; direction based on the setting of 0,SYSFLAGS -; Parameters: -; A - Update function to be selected -; X - Pointer to parameters for the update function -UPD_YEAR EQU 0 ; Update the year -UPD_MONTH EQU 1 ; Update the Month -UPD_HMONTH EQU 2 ; Update the Month in Half date format -UPD_DAY EQU 3 ; Update the day -UPD_HDAY EQU 4 ; Update the day in half date format -UPD_MID12 EQU 5 ; Update MID12 -UPD_HOUR EQU 6 ; Update the hour -UPD_MID34 EQU 7 ; Update MID34 -UPD_DIGIT EQU 8 ; Update the digit at UPDATE_POS -;------------------------------------------------------------------------- -BANNER8 EQU $5746 ; Display an 8 character string -; Parameters -; A = Offset from 0110 for the start of an 8 character timex string -; -;------------------------------------------------------------------------- -PUTMSGXBOT EQU $574a ; Puts a message on the bottom of the screen. -; Parameters -; A = Message selector number. Valid values from 0 to 27. They correspond to -; the same strings passed into PUTMSGBOT scaled down by 8 -;------------------------------------------------------------------------- -PUTMSGBOT EQU $574d ; Puts a message on the bottom of the screen. -; Parameters -; A = Offset into message selector string. Valid values from from $00 to $d8 at -; 8 Byte offsets. $E0 is the start of the 6 byte top/mid message strings. -SYS8_MON EQU $00 ; $00 = "MON " -SYS8_TUE EQU $08 ; $08 = "TUE " -SYS8_WED EQU $10 ; $10 = "WED " -SYS8_THU EQU $18 ; $18 = "THU " -SYS8_FRI EQU $20 ; $20 = "FRI " -SYS8_SAT EQU $28 ; $28 = "SAT " -SYS8_SUN EQU $30 ; $30 = "SUN " -SYS8_VERDATE EQU $38 ; $38 = " 802104 " -SYS8_VERSION EQU $40 ; $40 = " V2.1 " -SYS8_MODE EQU $48 ; $48 = " MODE " -SYS8_SET_MODE EQU $50 ; $50 = "SET MODE" -SYS8_SET EQU $58 ; $58 = "SET " -SYS8_TO EQU $60 ; $60 = "TO " -SYS8_FOR EQU $68 ; $68 = "FOR " -SYS8_ENTRIES EQU $70 ; $70 = "ENTRIES " -SYS8_UPCOMING EQU $78 ; $78 = "UPCOMING" -SYS8_ENTRY EQU $80 ; $80 = " ENTRY " -SYS8_SCAN EQU $88 ; $88 = " SCAN " -SYS8_SCAN_RIGHT EQU $90 ; $90 = " SCAN" -SYS8_SYNCING EQU $98 ; $98 = " SYNCING" -SYS8_PROGRESS EQU $a0 ; $a0 = "PROGRESS" -SYS8_DATA_OK EQU $a8 ; $a8 = " DATA OK" -SYS8_RESEND EQU $b0 ; $b0 = "-RESEND-" -SYS8_ABORTED EQU $b8 ; $b8 = " ABORTED" -SYS8_MISMATCH EQU $c0 ; $c0 = "MISMATCH" -SYS8_SPLIT EQU $c8 ; $c8 = " SPLIT " -SYS8_START EQU $d0 ; $d0 = ">=START " -SYS8_STOP EQU $d8 ; $d8 = ">=STOP " -; $e0 is the start of the message table SYS6_SET -; -PUT6TOP EQU $577f -; Parameters: -; A = Offset from 0110 for the start of a 6 byte data item to be put on the top -; line of the screen. This uses a different encoding for characters where: -; we have 32 different values which correspond to: -; "0123456789ABCDEFGH:LMNPRTUWYr -+" -; 0123456789abcdef0123456789abcdef -; e.g. $12=':', $13='L'. -; It appears that things wrap when you get to $20 -; -PUTMSG1 EQU $5783 ; Put up a message on the top line -; Parameters - Offset into message selector string. -; Typically you want a multiple of 6 to choose from these below -; -SYS6_SET EQU $00 ; 00 = " SET " (This is stored at $5F5F in the roms) -SYS6_HOLDTO EQU $06 ; 06 = "HOLDTO" -SYS6_ALARM EQU $0C ; 0C = "ALARM " -SYS6_ENTER EQU $12 ; 12 = "ENTER " -SYS6_HR EQU $18 ; 18 = " HR" -SYS6_SWITCH EQU $1E ; 1E = "SWITCH" -SYS6_TIME EQU $24 ; 24 = " TIME " -SYS6_FORMAT EQU $2A ; 2A = "FORMAT" -SYS6_DAILY EQU $30 ; 30 = "DAILY " -SYS6_APPT EQU $36 ; 36 = " APPT " -SYS6_NO EQU $3c ; 3c = " NO " -SYS6_APPTS EQU $42 ; 42 = "APPTS " -SYS6_END_OF EQU $48 ; 48 = "END OF" -SYS6_LIST EQU $4e ; 4e = " LIST " -SYS6_DELETE EQU $54 ; 54 = "DELETE" -SYS6_ANN EQU $5a ; 5a = " ANN " -SYS6_PHONE EQU $60 ; 60 = "PHONE " -SYS6_DONE EQU $66 ; 66 = " DONE " -SYS6_PRI EQU $6c ; 6c = "PRI " -SYS6_COMM EQU $72 ; 72 = " COMM " -SYS6_READY EQU $78 ; 78 = "READY " -SYS6_IN EQU $7e ; 7e = " IN " -SYS6_ERROR EQU $84 ; 84 = "ERROR " -SYS6_CEASED EQU $8a ; 8a = "CEASED" -SYS6_PC EQU $90 ; 90 = "PC- " -SYS6_WATCH EQU $96 ; 96 = "WATCH " -SYS6_CHRONO EQU $9c ; 9c = "CHRONO" -SYS6_TIMER EQU $A2 ; A2 = "TIMER " -SYS6_000000 EQU $a8 ; a8 = "000000" -; ae = "MTWTFS" -; B4 = "SOUEHR" -; BA = "AUG+74" -; C0 = "P16174" -; C6 = "P1OY40" -; CC = "W+0++0" -; D2 = "251332" -; D8 = "0321++" -; DE = "R++ 0+" -; E4 = "+12+1T" -; EA = "+0 0+1" -; F0 = "26+2U+" -; F6 = "0 C100" -; FC = "C0GW" -; -PUT6MID EQU $57a9 -; Parameters: -; A = Offset from 0110 for the start of a 6 byte data item to be put on the top -; line of the screen. This uses a different encoding for characters where: -; we have 32 different values which correspond to: -; "0123456789ABCDEFGH:LMNPRTUWYr -+" -; e.g. $12=':', $13='L'. -; It appears that things wrap when you get to $20 -; -; PUT6MIDA was identified wrong... -PUTMSG2 EQU $57AD ; This functions just the same as PUTMSG1 except it puts things on the middle line -CLEARTOP EQU $57d3 ; Puts blanks into all 6 top digits (Blanks out the top line) -; Parameters: -; None -CLEARMID EQU $57d9 ; Puts blanks into all 6 Middle digits (Blanks out the middle line) -; Parameters: -; None -;------------------------------------------------------------------------- -; These next 6 routines take the two bytes in DATDIGIT1 ($A2) and DATDIGIT2($A3) and put them -; on the display in the appropriate locations. The digits are represented using the TIMEX6 -; character set. -; -PUTTOP12 EQU $57e1 ; Puts DATDIGIT1/2 into TOP Digits 1 and 2 -PUTTOP34 EQU $57f1 ; Puts DATDIGIT1/2 into TOP Digits 3 and 4 -PUTTOP56 EQU $5801 ; Puts DATDIGIT1/2 into TOP Digits 5 and 6 -PUTMID12 EQU $5811 ; Puts DATDIGIT1/2 into Middle Digits 1 and 2 -PUTMID34 EQU $5821 ; Puts DATDIGIT1/2 into Middle Digits 3 and 4 -PUTMID56 EQU $5831 ; Puts DATDIGIT1/2 into Middle Digits 5 and 6 -; These 6 routines blank out parts of the display -CLRTOP12 EQU $57df ; Puts Blanks into TOP Digits 1 and 2 -CLRTOP34 EQU $57ef ; Puts Blanks into TOP Digits 3 and 4 -CLRTOP56 EQU $57ff ; Puts Blanks into TOP Digits 5 and 6 -CLRMID12 EQU $580f ; Puts Blanks into Middle Digits 1 and 2 -CLRMID34 EQU $581f ; Puts Blanks into Middle Digits 3 and 4 -CLRMID56 EQU $582f ; Puts Blanks into Middle Digits 5 and 6 -; -FMTXLEAD0 EQU $583f ; Formats into DATDIGIT1/2 with leading zeros -; Parameters: -; X - value to be formatted. 0-9 results in 0 followed by the digit -; 10-99 results in number for both digits -FMTBLANK0 EQU $584e ; Format into DATDIGIT1/2 -; Parameters: -; X - value to be formatted. 0 results in all blanks. -; 1-9 results in blank followed by the digit -; 10-99 results in number for both digits -FMTX EQU $5852 ; Format into DATDIGIT1/2 -; Parameters: -; X - value to be formatted. 0-9 results in blank followed by the digit -; 10-99 results in number for both digits - -FMTSPACE EQU $585d ; Format blankes into DATDIGIT1/2 -; Parameters: NONE -; This routine simply puts spaces into DATDIGIT1 DATDIGIT2 -; -SAYEOLMSG EQU $587a ; Puts 'END OF LIST' on the display -PUTBOT678 EQU $5987 ; Puts three digits into the lower corner of the display. -; Typically this is the time zone information. -; Parameters: -; X - Pointer to 3 byte location containing bytes to put on the display -; (pointed to by x) 3 bytes in TIMEX ascii. Because the X register iss -; used to index to them, they must be located in the first 256 bytes of -; memory. -PUTDATESEP EQU $59ac ; Put either Dashes or periods on the top line - -DIGLOCTOP EQU $5e2f ; Locations of digits on the top line -DIGLOCMID EQU $5e35 ; Locations of digits on the middle line -DIGLOCBOT EQU $5e3b ; Locations of digits on the bottom line - -;------------------------------------------------------------------------- -PUT_YEARX EQU $67D5 ; Put the leading zero 2 digit year in the appropriate spot on the display based - ; on the current time zone date format -; Parameters: -; X - Year to be displayed -;------------------------------------------------------------------------- -PUT_MONTHX EQU $67D9 ; Put the leading space 2 digit month in the appropriate spot on the display based - ; on the current time zone date format -; Parameters: -; X - Month to be displayed -;------------------------------------------------------------------------- -PUT_DAYX EQU $67DD ; Put the leading zero 2 digit day in the appropriate spot on the display based - ; on the current time zone date format -; Parameters: -; X - Day to be displayed -;------------------------------------------------------------------------- -SAY_HOURX EQU $67E1 ; Puts up the hour on the display along with an AM/PM indicator and a Colon. - ; This code respects the current 12/24 hour format. -; Parameters: -; X - Hour to be displayed -;------------------------------------------------------------------------- -PUT_MINUTEX EQU $682C ; This puts the minute in the middle two digits on the middle line followed by a period -; Parameters: -; X - minute (0-59) to be displayed -;------------------------------------------------------------------------- -SHOWSEC_TENS EQU $6839 ; Puts the character at SECOND_TENS onto the next to the last digit on the middle line -; Parameters: -; SECOND_TENS - Value to be put on the display -;------------------------------------------------------------------------- -SHOWSEC_ONES EQU $6841 ; Puts the character at SECOND_ONES onto the last digit on the middle line -; Parameters: -; SECOND_ONES - Value to be put on the display -;------------------------------------------------------------------------- -CALC_DOW_X EQU $68DE ; Computes the Day of the Week from the Month, Day, Year information -; Parameters: -; X - Pointer to Month, Day, Year block -;------------------------------------------------------------------------- -ACQUIRE EQU $68F1 ; Disable interrupts for a short piece of code -RELEASE EQU $68FB ; Reenable interrupts -;------------------------------------------------------------------------- -GET_MONTHLEN EQU $6902 ; Computes the number of days in a given month -; Parameters: -; PARM_MONTH, PARM_YEAR contain the month and year to look for -; Returns: -; A - Number of days in the month -;------------------------------------------------------------------------- -SETALL EQU $5a9c ; Turn on all segments on the display -INCA_WRAPX EQU $6B16 ; Advance to the next value wrapped within a range -; Parameters: -; A - Number to be incremented -; X - Range to hold number within -;------------------------------------------------------------------------- -GETBCDHI EQU $6B5b -; Parameters: -; X - Hex value to be converted (Range 0-99) -; Returns: -; A - High byte of number in timex ascii -;------------------------------------------------------------------------- -GETBCDLOW EQU $6B63 -; Parameters: -; X - Hex value to be converted (Range 0-99) -; Returns: -; A - Low byte of number in timex ascii -;------------------------------------------------------------------------- -TABHEX2BCD EQU $6b69 ; 100 bytes from 6b69-6bcc -; This is a 100 byte table of HEX to BCD conversion values. You can take the value you want -; to convert, load it into the X register and then load TABHEX2BCX,X. To get the high order byte, -; just shift it right by 4. The low order is just an and with $0f. - -SYS_26 EQU $26 -MODE_FLAGS EQU $68 ; FLAGS - ; Bit0 = Indicates that we are in alarm set mode (SET=IN SET MODE) - ; Bit1 = Indicates that we have a backup mode pending alarm (SET=PENDING) - ; Bit2 = Indicates that hourly chimes are to be played (SET=ENABLED) - ; Bit3 = Indicates that hourly chimes are temporarily disabled (SET=DISABLED) - ; Bit4 = Enables beep for any button pressed (SET=BEEP) - ; Bit5 = Indicates that we are in COMM Mode (SET=IN COMM Mode) - ; Bit6 = Indicates that ALARM SET MODE is on the display (SET=On Display) - ; Bit7 = -APP_FLAGS EQU $8f ; System Flags - ; Bit0 = Event has been posted (SET=TRUE) - ; Bit1 = We want to allow the app to be suspended (SET=ALLOW) - ; Bit2 = Run a nested application (SET=TRUE) - only for ALARM,APPT, WRISTAPP - ; Bit3 = A button beep has already been played (SET=PLAYED) - ; Bit4 = - ; Bit5 = - ; Bit6 = - ; Bit7 = -BTNFLAGS EQU $90 ; Flags for the timer. Note that bits 5 and 7 are exclusive because they happen to - ; use the same variables to hold their information. - ; Bit0 = - ; Bit1 = wristapp wants a 1/10 second timer function called (WRIST_DOTIC) (SET=CALL) - ; Bit2 = Indicates a blink routine is pending (SET=PENDING) - ; Bit3 = Indicates a scrolling message is pending (SET=PENDING) - ; Bit4 = Indicates an update routine is pending (SET=PENDING) - ; Bit5 = Indicates a blink routine has been established (SET=ACTIVE) - ; Bit6 = Indicates a scrolling message is in progress (SET=ACTIVE) - ; Bit7 = Indicates an update routine has been established (SET=ACTIVE) -BTNSTATE EQU $91 ; Current event/button press -TIMER_FLAGS EQU $94 ; System Flags - ; Bit0 = Indicates that the timer2 timer has been enabled (SET=ENABLED) - ; Bit1 = Indicates that the TIC timer has been enabled (SET=ENABLED) - ; Bit2 = Indicates that we want to turn off the indiglo automatically (SET=TURN OFF) - ; Bit3 = Indicates that they have done something in this applet (SET=done something) - ; Bit4 = Request to reset the watch (SET=Reset Watch) - ; Bit5 = Request to turn off the INDIGLO at some future time - ; Bit6 = - ; Bit7 = ????Related to indicating that sound is currently playing -MAIN_FLAGS EQU $95 ; Flags to set queue requests to do something in the main loop - ; Bit0 = Indicates that a button has changed state (SET=CHANGED) - ; Bit1 = Indicates that the current app should be suspended and TIME activated (SET=Suspend) - ; Bit2 = Indicates that the TIMER_TICS has been updated (SET=Updated) - ; Bit3 = Indicates that the hourly chimes need to be played (SET=Please Play) - ; Bit4 = Indicates that the appointments should be checked (SET=Please Check) - ; Bit5 = Indicates that the anniversaries need to be checked (SET=Please Check) - ; Bit6 = - ; Bit7 = -WRISTAPP_FLAGS EQU $96 ; System Flags - ; Bit0 = wristapp wants a second timer function called at start of interrupt (WRIST_DOTIC) (SET=CALL) - ; Bit1 = wristapp wants a call once a minute when it changes (WRIST_DOTIC) (SET=CALL) - ; Bit2 = wristapp wants a call once an hour when it changes (WRIST_DOTIC) (SET=CALL) - ; Bit3 = wristapp wants a call once a day when it changes (WRIST_DOTIC) (SET=CALL) - ; Bit4 = Play button beep sound on wristapp for any button (SET=ENABLE) - ; Bit5 = Play button beep sound on wristapp for mode button (SET=ENABLE) - ; Bit6 = Uses system rules for button beep decisions (SET=SYSTEM RULES) - ; Bit7 = Wristapp has been loaded (SET=LOADED) -NEST_PARM EQU $99 ; Holds the parameter passed to the current nested app -SYSSOUND EQU $9B ; Current sound to be played -HW_FLAGS EQU $9e ; System Variable - ; Bit0 = Request state for Indiglo light (SET=ON) - ; Bit1 = Indicates the the SYS_07 hardware has been reset - ; Bit2 = - ; Bit3 = Indicates that we want to load some code from the serial port at reset (SET=ON) - ; Bit4 = Set but never used. Mimics the state of 0,PORT_C_DATA & 0,PORT_C_DDR - ; Bit5 = Set but never used. Mimics the state of 1,PORT_C_DATA & 1,PORT_C_DDR - ; Bit6 = Indicates that INST_ADDR is a pointer into the EEPROM (SET=EEPROM Address) - ; Bit7 = Interrupts have been disabled (SET=DISABLED) -SYSFLAGS EQU $9F ; System flags - ; Bit0 = Indicates the update direction. (SET=UP) - ; Bit1 = Indicates that the screen needs to be cleared (SET=no need to clear) - ; Also used as part of a the digit blinking code (SET=Show digits) - ; Bit2 = Indicates that the end of a scrolling message has been reached (SET=END) - ; Bit3 = User vs system string (SET=User String) - ; Bit4 = - ; Bit5 = - ; Bit6 = - ; Bit7 = -DATDIGIT1 EQU $A2 ; First digit parameter for PUTMIDnn/PUTTOPnn routines -DATDIGIT2 EQU $A3 ; Second digit parameter for PUTMIDnn/PUTTOPnn routines -UPDATE_VAL EQU $a6 ; Temporary value passed to the update/blink routines -UPDATE_PARM EQU $a7 ; Pointer to the data passed to the update/blink routines -; -; The sound in SYSSOUND can be set to one of the following values: -; -SND_HOURLY EQU $83 ; HOURLY CHIME -SND_APPT EQU $85 ; APPOINTMENT BEEP -SND_ALARM EQU $86 ; ALARM BEEP -SND_DLOAD EQU $87 ; PROGRAM DOWNLOAD -SND_EXTRA EQU $88 ; EXTRA -SND_COMERR EQU $89 ; COMM ERROR -SND_DONE EQU $8A ; COMM DONE -SND_BUTTON EQU $c1 ; BUTTON BEEP -SND_RETURN EQU $c2 ; RETURN TO TIME -SND_CONF EQU $c4 ; CONFIRMATION - -APPT_PROMBASE EQU $0100 ; Address of the first entry for Appointments in the EEPROM -LIST_PROMBASE EQU $0102 ; Address of the first entry for LISTs in the EEPROM -PHONE_PROMBASE EQU $0104 ; Address of the first entry for PHONE numbers in the EEPROM -ANNIV_PROMBASE EQU $0106 ; Address of the first entry for Anniversaries in the EEPROM -APPT_ENTRIES EQU $0108 ; Number of currently loaded Appointment entries -LIST_ENTRIES EQU $0109 ; Number of currently loaded LIST entries -PHONE_ENTRIES EQU $010a ; Number of currently loaded Phone number entries -ANNIV_ENTRIES EQU $010b ; Number of currently loaded Anniversary entries -APPT_BASEYEAR EQU $010c ; The year for the first loaded appointment -APPT_PRETIME EQU $010d ; How many minutes ahead of time to announce an appointment -COMM_010e EQU $010e ; ???? -; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -SND_BASEOFF EQU $010f ; Sound base pointer - All sounds are this base relative to SND_BASE (0336) -WRIST_MAIN EQU $0110 ; This is the primary initialization entry point for a Wristapp -WRIST_SUSPEND EQU $0113 ; This is the entry point called immediately before suspending the wristapp -WRIST_DOTIC EQU $0116 ; This is the entry point called for a timer tic in a wristapp -WRIST_INCOMM EQU $0119 ; This is called when the COMM app is suspending the wristapp which has requests to process timer events -WRIST_NEWDATA EQU $011c ; This is the wristapp entry point called when new data has been downloaded to the watch -WRIST_GETSTATE EQU $011f ; Entry to get a wristapp state table entry -WRIST_JMP_STATE0 EQU $0123 ; Wristapp entry point to call state 0 - -INST_ADDRHI EQU $0437 -INST_ADDRLO EQU $0438 -USER04a1 EQU $04a1 -NESTED_APP EQU $04a2 ; Nested application (Only to run an application while a different one is running) - ; This is used to handle alarms and appointments that go off while you are running something else -APP2_ALARM EQU 9 ; 9 = Alarm (while another app is running) -APP2_APPT EQU 10 ; 10 = Appointment (while another app is running) -APP2_WRIST EQU 11 ; 11 = Wristapp (while another app is running) -NESTED_PARM EQU $04a4 ; Parameter passed to the nested app call -USER04c3 EQU $04c3 -BUF_PHONENUM EQU $043a ; 12 byte buffer to hold a decompressed phone number -EXTRACTBUF EQU $0446 ; 32 byte buffer to hold extracted data from the EEPROM -UPDATE_POS EQU $04f3 ; Position to update a segment or digit in the blink/refresh routines -; -; These two constants appear to be associated with the PUTSCROLLMSG and SCROLLMSG routines -; -SEPARATOR EQU $3F ; Indicates the end of a scrolling string -MSGBUF EQU $04d2 ; Location of the system buffer for a scrolling string -CURRENT_APP EQU $04c1 ; The current application number (1-8) -APP_TIME EQU 1 ; 1 = Time of Day -APP_ALARM EQU 2 ; 2 = Alarm -APP_APPT EQU 3 ; 3 = Appointment -APP_ANNIV EQU 4 ; 4 = Anniversary -APP_PHONE EQU 5 ; 5 = Phone number -APP_LIST EQU 6 ; 6 = List -APP_COMM EQU 7 ; 7 = Communication -APP_WRIST EQU 8 ; 8 = Wristapp (if downloaded) -BTN_PRESSED EQU $04c3 ; The button currently pressed (For EVT_ANY or EVT_ANY4 events) 0=NEXT 1=MODE 2=SET 3=PREV 4=GLOW -EFFECTIVE_APP EQU $04c4 ; The efective application -APP_13 EQU 13 ; Some submode of the TIME application -APP_TIME_SET EQU 14 ; Submode of the TIME application -UPDATE_MIN EQU $04f4 ; Minimum value for the update function to generate. At this, it wraps to UPDATE_MAX -UPDATE_MAX EQU $04f5 ; Maximum value for the update function to generate. At this, it wraps to UPDATE_MIN -PARM_MONTH EQU $04f9 ; Month parameter -PARM_YEAR EQU $04fa ; Current year also... - -WATCHTIMER EQU $7ff0 -; -; Other random routines which you might call.... -; -ALARM_BLINKSEL EQU $40a5 -ALARM_UPDATESEL EQU $40a9 -ALARM_SELMIN EQU $40aD -ALARM_SELMAX EQU $40b1 -FIND_ANNIV_TODAY EQU $40bc -FIND_ANNIV_SCAN EQU $40c2 -ANNIV_NEXT_ENTRY EQU $40d0 -ANNIV_PREV_ENTRY EQU $4106 -FIND_ANNIV_ENTRY EQU $414E -CHECK_ANNIVERSARIES EQU $41EB -SET_ANNIVTEST_TODAY EQU $4229 -ANNIV_GETMONTHLEN EQU $4259 -TEST_ANNIVERSARY EQU $4277 -ANNIV_COPY_INFO EQU $42F7 -READ_ANNIV_CURRENT EQU $4306 -READ_ANNIV_FIRST EQU $4315 -READ_ANNIV_NEXT EQU $4324 -TEST_SCAN_START EQU $4335 -FIX_SCAN_YEAR EQU $4360 -TEST_SCAN_END EQU $436D -RESTORE_SCAN_YEAR EQU $439D -INCREMENT_SCAN_DATE EQU $43A8 -GET_SCAN_MONTHLEN EQU $43CF -DECREMENT_SCAN_DATE EQU $43E3 -FIND_APPT_NOW EQU $4404 -FIND_APPT_SCAN EQU $440A -SET_APPTFIND_SCAN EQU $4411 -READ_APPT_NEXT EQU $441B -APPT_LATCH_ENTRYDATA EQU $4457 -APPT_LATCH_ENTRYONLY EQU $445B -READ_APPT_PREV EQU $446B -FIND_APPT_ENTRY EQU $44B5 -APPT_LATCH_ENTDYDATA EQU $4594 -CHECK_APPOINTMENTS EQU $45A8 -SET_APPTFIND_NOW EQU $4619 -READ_APPT_FIRST EQU $4675 -READ_APPT_LAST EQU $468C -CHECK_APPT_TIME EQU $46A6 -READ_APPT_PACKET1 EQU $4729 -READ_NEXT_APPT_PACKET EQU $4738 -READ_APPT_CURRENT EQU $4749 -PROCESS_EVENTS EQU $4862 -DO_ANYAPP_EVENT EQU $49ae -DO_NESTAPP_EVENT EQU $49b1 -DO_APP_EVENT EQU $49ed -DO_NORMAL_STATE EQU $4a24 -TRANSITION_RBUTTON EQU $4b5d -TRANSITION_LBUTTON EQU $4bac -QUEUE_INDIGLO_OFF EQU $4bf1 -QUEUE_INDIGLO_OFF EQU $4c38 -NIGHTMODE_INDIGLO_ON EQU $4c45 -INDIGLO_ON EQU $4c4b -PROCESS_REQUESTS EQU $4C55 -TIMER1_INTERVALS EQU $4c93 -TIMER2_INTERVALS EQU $4c9e -DO_EVENT EQU $4Cb8 -GETSTATE EQU $4d12 -GETSTATE_TAB EQU $4D22 -CHECK_COMPATIBLE_EVENT EQU $4Daa -STOP_ALL_SOUND EQU $4E57 -PREPARE_TIMER2_TIMER EQU $4E85 -PLAY_HOURLY EQU $4EA0 -PAUSE_WATCH EQU $4EB6 -RESUME_WATCH EQU $4ECD -RESUME_UPDATE EQU $4EE5 -ACQUIRE_TIME EQU $4F11 -RELEASE_TIME EQU $4F1D -PLAY_BUTTON_SAFE EQU $4F35 -PREPARE_NEST_CALL EQU $4F8F -UNPACK_PHONENUM EQU $4FAE -PHONE_UNPACK_VAL EQU $4FCF -UNPACK_STRING EQU $4FDF -READ_PACKET EQU $502D -FIND_PACKET EQU $5033 -DO_TRANSFER EQU $504E -TOGGLE_ENTRYFLAG EQU $5066 -MAKE_INST_LDA EQU $50A3 -MAKE_INST_LDA_X EQU $50A7 -MAKE_INST_STA EQU $50AB -ADD_INSTADDR EQU $50B6 -SET_INSTADDR_0110 EQU $50C6 -GET_INST_BYTE EQU $50DA -WRITE_FLAG_BYTE EQU $50F9 -FILL_EXTRACTBUF EQU $512D -SAVE_EXTRACTBUF EQU $514C -SYSTEM_RESET EQU $518A -SND_OFF EQU $5213 -DO_SOUND EQU $5225 -SET_SYS_0f_4d EQU $52c0 -SET_SYS_0f_41 EQU $52C5 -ENABLE_EYE EQU $5367 -SERIAL_DELAY EQU $5375 -DISABLE_EYE EQU $537E -SET_SYS_07 EQU $5389 -CLEAR_SYS_07 EQU $5390 -RESET_SYS_07 EQU $5396 -INITHW_SYS_07 EQU $539D -SETHW_07_08_C1 EQU $53B5 -WRITE_ACQUIRE EQU $542b -WRITE_RELEASE EQU $5437 -MAKE_INST2_LDA_X EQU $5442 -MAKE_INST2_STA_X EQU $5446 -PROM_READ EQU $5451 -PROM_WRITE EQU $5477 -READ_EEPROM_PORT EQU $54BB -PROM_STARTIO EQU $54C5 -PROM_ACQUIRE EQU $54D1 -PROM_RELEASE EQU $54DB -PROM_SHOW EQU $54E2 -PROM_HIDE EQU $54E7 -DO_SCROLL EQU $5555 -DO_BLINK EQU $55b7 -PUTDOWTOP EQU $5773 -FMTBLANK0B EQU $5864 -SAYHOLDTODELETE EQU $588b -PUT_PHONENUM EQU $58a3 -PUTYEARMID EQU $58da -CLEAR_HMONTH EQU $58f9 -PUT_HMONTHX EQU $58Fe -CLEAR_HDAY EQU $5912 -PUT_HDAYX EQU $5917 -FIXLEAD0 EQU $592b -CLEAR_MONTH EQU $5937 -IPUT_MONTHX EQU $593c -CLEAR_DAY EQU $5950 -IPUT_DAYX EQU $5955 -CLEAR_YEAR EQU $5970 -IPUT_YEARX EQU $5975 -PUTHALFDATESEP EQU $59a1 -PUT_LETTERX EQU $59cf -PUT_HOURX EQU $59da -CLEAR_RANGE EQU $5abf -SYSSYMVALS EQU $5adc -PHONE_NEXT_ENTRY EQU $6176 -PHONE_PREV_ENTRY EQU $6195 -PHONE_READ_CURRENT EQU $61B0 -PHONE_SHOW_CURRENT EQU $61B9 -PHONE_FIND_SCAN_ENTRY EQU $61FA -PHONE_READ_ENTRY EQU $6235 -PHONE_READ_NEXT_ENTRY EQU $6246 -PHONE_READ_FIRST_NEXT EQU $625A -UPDATE_SECONDS EQU $6267 -ADJUST_TZ1TIME EQU $62E0 -ADJUST_TZ2TIME EQU $634C -UPDATE_TZ1DISP EQU $63B8 -UPDATE_TZ2DISP EQU $63EF -TIME_SET_BLINKON EQU $6669 -TIME_SET_BLINKOFF EQU $666d -TIME_SET_GET_TIMEPTR EQU $6684 -TIME_SET_SHOWDISPLAY EQU $6693 -TIME_GET_BLINKPARM EQU $66ee -SHOW_TIME_DISPLAY EQU $6773 -CLEAR_PM EQU $681E -CLEAR_AM EQU $6825 -SHOWNIGHT_SYM EQU $6849 -SAY_HOLD_TO EQU $685E -FIX_TMAPP_DAY EQU $686A -TMAPP_COPYTZ1 EQU $688A -TMAPP_COPYTZ2 EQU $6895 -GETTZNAME EQU $68A0 -GET_MONTHDAYX EQU $68A8 -GET_YEAR EQU $68BB -GET_HOURFORMAT EQU $68C4 -GET_DATEFMT EQU $68D4 -COPY_MDY EQU $68E4 -CHECK_TZ EQU $6917 -CALC_DOW EQU $6925 -TIME_BLINKSEL EQU $69AD -TIME_UPDATESEL EQU $69B8 -TIME_SELMIN EQU $69c3 -TIME_SELMAX EQU $69ce -LIST_GO_NEXT EQU $6AA8 -LIST_GO_PREV EQU $6AB6 -LIST_DISPLAY_CURRENT EQU $6AC4 -CLEAR_WRISTAPPMEM EQU $6b28 -DELAY_X EQU $6b3a -DELAY_X16 EQU $6b4c -SHOWNOTE_SYM EQU $6C56 -SHOWALARM_SYM EQU $6C6a -ALARM_CHECK EQU $6c9c -ALARM_START_BLINK EQU $6Ea6 -ALARM_CALL_BLINK EQU $6EAd -ALARM_GET_BLINKPARM EQU $6Ec0 -ALARM_DISPLAY_CURRENT EQU $6EFD -ALARM_SHOW_HOURLYNOTE EQU $6F42 -ALARM_SHOW_ALARMSYM EQU $6F53 -ALARM_SHOW_AMPM EQU $6F64 -ALARM_SHOW_TEXTCHAR EQU $6F85 -ALARM_FIX_HOUR EQU $6F91 -ALARM_GET_DISPLAYHOUR EQU $6FA9 -ALARM_SET_CURRENT EQU $6FC7 -ALARM_SAVE_STATUS EQU $6FDE -ALARM_GET_TEXTOFFSET EQU $6FE5 -ALARM_GET_DATAOFFSET EQU $6FEE -MASK_ALARMS EQU $6FFC -UNMASK_ALARMS EQU $7009 -ANNIV_SHOW_DATE EQU $718D -ANNIV_SHOW_SCAN_DATE EQU $71A8 -ANNIV_SHOW_CURRENT EQU $71B5 -SHOWREMIND_SYM EQU $71DF -OFFREMIND_SYM EQU $71F7 -SAY_NO_ANN_ENTRIES EQU $71FE -APPT_SHOW_TIME EQU $73E0 -APPT_SHOW_DATE EQU $7442 -APPT_SHOW_SCAN EQU $745D -APPT_SHOW_CURRENT EQU $746A -APPT_SHOW_UPCOMING EQU $7497 -SAY_NO_APPT_ENTRIES EQU $74C6 diff --git a/flash/flash.asm b/flash/flash.asm deleted file mode 100644 index 3a97f77..0000000 --- a/flash/flash.asm +++ /dev/null @@ -1,135 +0,0 @@ -;Name: Flash -;Version: FLASH -;Description: by John A. Toebes, VIII -;This is a simple number update/flash program -; -;TIP: Download your watch faster: Download a WristApp once, then do not send it again. It stays in the watch! -;HelpFile: watchapp.hlp -;HelpTopic: 106 - INCLUDE "wristapp.i" -; -; (1) Program specific constants -; -FLAGBYTE EQU $61 -; Bit 1 indicates that we need to clear the display first -; -CURVAL EQU $62 ; The current value we are displaying -; -; (2) System entry point vectors -; -START EQU * -L0110: jmp MAIN ; The main entry point - WRIST_MAIN -L0113: rts ; Called when we are suspended for any reason - WRIST_SUSPEND - nop - nop -L0116: rts ; Called to handle any timers or time events - WRIST_DOTIC - nop - nop -L0119: rts ; Called when the COMM app starts and we have timers pending - WRIST_INCOMM - nop - nop -L011c: rts ; Called when the COMM app loads new data - WRIST_NEWDATA - nop - nop - -L011f: lda STATETAB,X ; The state table get routine - WRIST_GETSTATE - rts - -L0123: jmp HANDLE_STATE0 - db STATETAB-STATETAB -; -; (3) Program strings -S6_FLASH: timex6 "FLASH " -S6_SAMPLE: timex6 "SAMPLE" -; -; (4) State Table -; -STATETAB: - db 0 - db EVT_ENTER,TIM2_8TIC,0 ; Initial state - db EVT_TIMER2,TIM_ONCE,0 ; The timer from the enter event - db EVT_RESUME,TIM_ONCE,0 ; Resume from a nested app - db EVT_MODE,TIM_ONCE,$FF ; Mode button - db EVT_DNANY4,TIM_ONCE,0 ; NEXT, PREV, SET, MODE button pressed - db EVT_UPANY4,TIM_ONCE,0 ; NEXT, PREV, SET, MODE button released - db EVT_END -; -; (5) State Table 0 Handler -; This is called to process the state events. -; We see ENTER, TIMER2, RESUME, DNANY4 and UPANY4 events -; -HANDLE_STATE0: - bset 1,APP_FLAGS ; Indicate that we can be suspended - lda BTNSTATE ; Get the event - cmp #EVT_DNANY4 ; Did they press a button? - bne CHKENTER ; No, pass on to see what else there might be - lda BTN_PRESSED ; Let's see what the button they pressed was - cmp #EVT_PREV ; How about the PREV button - beq DO_PREV ; handle it - cmp #EVT_NEXT ; Maybe the NEXT button? - beq DO_NEXT ; Deal with it! - cmp #EVT_SET ; Perhaps the SET button - beq DO_SET ; If so, handle it - ; In reality, we can't reach here since we handled all three buttons - ; in the above code (the MODE button is handled before we get here and the - ; GLOW button doesn't send in an event for this). We can just fall through - ; and take whatever we get from it. -CHKENTER - cmp #EVT_ENTER ; Is this our initial entry? - bne REFRESH -; -; This is the initial event for starting us -; -DO_ENTER - bclr 1,FLAGBYTE ; Indicate that we need to clear the display - jsr CLEARSYM ; Clear the display - lda #S6_FLASH-START - jsr PUT6TOP - lda #S6_SAMPLE-START - jsr PUT6MID - lda #SYS8_MODE - jmp PUTMSGBOT -; -; (6) Our real working code... - -DO_NEXT - bset 0,SYSFLAGS ; Mark our update direction as up - bra DO_UPD -DO_PREV - bclr 0,SYSFLAGS ; Mark our update direction as down -DO_UPD - clra - sta UPDATE_MIN ; Our low end is 0 - lda #99 - sta UPDATE_MAX ; and the high end is 99 (the max since this is a 2 digit value) - ldx #CURVAL ; Point to our value to be updated - lda #UPD_MID34 ; Request updating in the middle of the display - jsr START_UPDATEP ; And prepare the update routine - bset 4,BTNFLAGS ; Mark that the update is now pending - bclr 1,FLAGBYTE - lda #SYS8_SET_MODE - jmp PUTMSGBOT - -DO_SET - clr CURVAL ; When they hit the set button, we just clear to zero -SHOWVAL - brset 1,FLAGBYTE,NOCLEAR ; Do we need to clear the display first? -REFRESH - jsr CLEARALL ; Yes, clear everything before we start - bset 1,FLAGBYTE ; And remember that we have already done that -NOCLEAR - bclr 7,BTNFLAGS ; Turn off any update routine that might be pending - ldx #CURVAL - lda #BLINK_MID34 - jsr START_BLINKP - bset 2,BTNFLAGS ; Mark a blink routine as pending - rts -; -; (7) This is the main initialization routine which is called when we first get the app into memory -; -MAIN: - lda #$c0 ; We want button beeps and to indicate that we have been loaded - sta WRISTAPP_FLAGS - clr FLAGBYTE ; start with a clean slate - clr CURVAL - rts diff --git a/from_others/Makefile b/from_others/Makefile new file mode 100644 index 0000000..5bcc7bd --- /dev/null +++ b/from_others/Makefile @@ -0,0 +1,9 @@ +SUBDIRS=numpad + +default: + for i in ${SUBDIRS}; do ${MAKE} -C $$i; done + + +clean: + for i in ${SUBDIRS}; do ${MAKE} -C $$i $@; done + diff --git a/from_others/numpad/Makefile b/from_others/numpad/Makefile new file mode 100644 index 0000000..18b7788 --- /dev/null +++ b/from_others/numpad/Makefile @@ -0,0 +1,58 @@ +VERSIONS=a b c d +PROG=numpad + +APPS=${VERSIONS:%=${PROG}-%.app} +ASMS=${VERSIONS:%=${PROG}-%.asm} numpad.asm +LSTS=${VERSIONS:%=${PROG}-%.p} +LSTS=${VERSIONS:%=${PROG}-%.lst} +ZAPS=${VERSIONS:%=${PROG}-%.zap} +STAMPS=${VERSIONS:%=${PROG}-%.stamp} +HEX=${APPS:%.app=%.app.hex} ${APPS:%.app=%.zap.app.hex} +ZAPAPPS=${ZAPS:%.zap=%.zap.app} + +CROSS=../../../asl/ + +ZAP2APP=../../tools/zap2app +AFLAGS=-i ../../include/dl150 -cpu datalink +AS=${CROSS}asl ${AFLAGS} +P2BIN=${CROSS}p2bin + +default:${STAMPS} + +numpad.asm:numpad.zsm + sed -e 's/^INCLUDE/ INCLUDE/' < $< > $@ || /bin/rm -f $@ + +numpad-a.asm:numpad.asm + sed -e '/?C{/,/?C}/d' < $< | sed -e '/?A{/,/?A}/d' > $@ || /bin/rm -f $@ + +numpad-b.asm:numpad.asm + sed -e '/?C{/,/?C}/d' < $< > $@ || /bin/rm -f $@ + +numpad-c.asm:numpad.asm + sed -e '/?B{/,/?B}/d' < $< > $@ || /bin/rm -f $@ + +numpad-d.asm:numpad.asm + sed -e '/?C{/,/?C}/d' < $< | sed -e '/?W{/,/?W}/d' > $@ || /bin/rm -f $@ + +%.p:%.asm + ${AS} -L ${@:%.p=%.lst} -o $@ $< + +%.app:%.p + ${P2BIN} $< $@ -r 0x110-\$$ + + +%.hex:% + yes '' | dd bs=272 count=1 | cat - $< | hexdump -C > $@ || /bin/rm -f $@ + + +%.stamp:%.app.hex %.zap.app.hex + diff -uN ${@:%.stamp=%.app.hex} ${@:%.stamp=%.zap.app.hex} && touch $@ + +%.zap.app:%.zap + ${ZAP2APP} $< $@ + +.PRECIOUS:${APPS} + +clean: + /bin/rm -f ${APPS} ${PS} ${LSTS} ${HEX} ${STAMPS} ${ZAPAPPS} ${ASMS} + diff --git a/from_others/numpad/numpad-a.zap b/from_others/numpad/numpad-a.zap new file mode 100644 index 0000000..0dc06fc --- /dev/null +++ b/from_others/numpad/numpad-a.zap @@ -0,0 +1,33 @@ +TDL0705982¬ +Numpad/Chrono A¬ +NUMPAD-A¬ +A multi-function WristApp, which includes three 12 digit Number Pads, a Chronometer, a Countdown Timer, and an Alarm Enhancer +Version 1.4A (Always beeps when it returns to time mode) + +(c) 1998 Michael Polymenakos (mpoly@panix.com). Compiled using tools and knowledge published by John A. Toebes, VIII + +TIP: Read the NUMPAD.TXT file +¬ +watchapp.hlp¬ +101¬ +none¬ +Timex Data Link 150 Watch¬ +CC0186CC019CCC0348819D9D129081D6012781CC01A300001BFF001AFF0000FF0003FF0082FF00A2FF0001FF0004FF0039FFFF1D310C111B18171831171E16190A0D2401443C322A20121E1E1E1E1E1E1E1E1E1E1E1E183C3C641E1E1E1E1E1E1E1E1E1E1E1E00091E001E1E1E1E1E1E1E1E1E1E1E1EA60CB766A6C0B7961F680968021E683FC6CD02CC12901F6614663F6781CD4F3AB691A1012615A61B3C6705670EA6C2B79BCD4E4AADE0A639CC4E89BE672603CC025B14660E66DFA11B2730BEC3A182272CA104272ADE014AA10327074D270220125C5C5A2B04A30A2602AE1EA30A2503DE015A9FBEC3D7014A2005AEFF5C5C5A9FA40FA10C27F4A10F2602A60BBE67CF015358585858BF60BB60B7C39FAB3AB760069303CD4E8ECD577AB660CD587EB660AB06CD58A8A63CCD5845B6C3A40F97A0062A08DE0154BF1D101E8197DE0154BF1D141E811266A11B2718A11A27141E664D2722A103273DA104272BA1A2270BCC0336CD577ACD5AD91B661D661866A634CD5845204D0166081866CD0348116681B626B765106681A6C8CD584C1866CD03481466810466D50066EDB6C54C2616B6C62610B666A808B766A4082606B668A880B7683FC6AE036F615A2AFBBFC5B6C6B7C4156612660466BD0A66BA1A66BE64CD593E0866023FA31966CD590003663ABE63CD593ECD5930BE62CD6823BE61CD593ECD5910BEC4CD5951BEC62603CD594DCD58E0A61CB71D191E076602181EA60EB71D191E0F6802181E1B66136681B6C54C2691A606B760A658CD584C1C66204CAD560D66050E60443A600166E0B62697B065BF65BB64B764AE03E661D0016625091266E7616C605A2AF0BE62B3C52719BFC5B6C627133AC42A0F4AB7C4A6C4076602A686B79BCD4E4ACC02DDB6C6AE63CD6B0DB7C6CC02D7C604C1A402264818680E68021968B6B8CD690E2402B6C14CB7C7A60497585858DE04762719A308270D2221B3C7271597E669A4FE2013BEC7A305220820F1BEC7A30522EB97E669AA01E7699F4A2ACD81¬ +19299¬ +0¬ +Numpad/Chrono A¬ +NUMPAD-A¬ +A multi-function WristApp, which includes three 12 digit Number Pads, a Chronometer, a Countdown Timer, and an Alarm Enhancer +Version 1.4A (Always beeps when it returns to time mode) + +(c) 1998 Michael Polymenakos (mpoly@panix.com). Compiled using tools and knowledge published by John A. Toebes, VIII + +TIP: Read the NUMPAD.TXT file +¬ +watchapp.hlp¬ +101¬ +none¬ +Timex Data Link 150s Watch¬ +CC0186CC019CCC0348819D9D129081D6012781CC01A300001BFF001AFF0000FF0003FF0082FF00A2FF0001FF0004FF0039FFFF1D310C111B18171831171E16190A0D2401423A30281E101E1E1E1E1E1E1E1E1E1E1E1E183C3C641E1E1E1E1E1E1E1E1E1E1E1E00091E001E1E1E1E1E1E1E1E1E1E1E1EA60CB766A6C0B7961F680968021E683FC6CD02CC12901F6614663F6781CD4F29B691A1012615A61B3C6705670EA6C2B79BCD4E39ADE0A639CC4E78BE672603CC025B14660E66DFA11B2730BEC3A182272CA104272ADE014AA10327074D270220125C5C5A2B04A30A2602AE1EA30A2503DE015A9FBEC3D7014A2005AEFF5C5C5A9FA40FA10C27F4A10F2602A60BBE67CF015358585858BF60BB60B7C39FAB3AB760069303CD4E7DCD5AA0B660CD577FB660AB06CD57A9A63CCD5746B6C3A40F97A0062A08DE0154BF1D101E8197DE0154BF1D141E811266A11B2718A11A27141E664D2722A103273DA104272BA1A2270BCC0336CD5AA0CD59DA1B661D661866A634CD5746204D0166081866CD0348116681B626B765106681A6C8CD574D1866CD03481466810466D50066EDB6C54C2616B6C62610B666A808B766A4082606B668A880B7683FC6AE036F615A2AFBBFC5B6C6B7C4156612660466BD0A66BA1A66BE64CD583F0866023FA31966CD580103663ABE63CD583FCD5831BE62CD682CBE61CD583FCD5811BEC4CD5852BEC62603CD584ECD57E1A61AB71D191E076602181EA60CB71D191E0F6802181E1B66136681B6C54C2691A606B760A658CD574D1C66204CAD560D66050E60443A600166E0B62697B065BF65BB64B764AE03E661D0016625091266E7616C605A2AF0BE62B3C52719BFC5B6C627133AC42A0F4AB7C4A6C4076602A686B79BCD4E39CC02DDB6C6AE63CD6B16B7C6CC02D7C604C1A402264818680E68021968B6B8CD69172402B6C14CB7C7A60497585858DE04762719A308270D2221B3C7271597E669A4FE2013BEC7A305220820F1BEC7A30522EB97E669AA01E7699F4A2ACD81¬ +7622¬ +0¬ \ No newline at end of file diff --git a/from_others/numpad/numpad-b.zap b/from_others/numpad/numpad-b.zap new file mode 100644 index 0000000..4125f0f --- /dev/null +++ b/from_others/numpad/numpad-b.zap @@ -0,0 +1,33 @@ +TDL0705982¬ +Numpad/Chrono B¬ +NUMPAD-B¬ +A multi-function WristApp, which includes three 12 digit Number Pads, a Chronometer, a Countdown Timer, and an Alarm Enhancer +Version 1.4B (Basic) + +(c) 1998 Michael Polymenakos (mpoly@panix.com). Compiled using tools and knowledge published by John A. Toebes, VIII + +TIP: Read the NUMPAD.TXT file +¬ +watchapp.hlp¬ +101¬ +none¬ +Timex Data Link 150 Watch¬ +CC0186CC019CCC034B819D9D129081D6012781CC01A300001BFF001AFF0000FF0003FF0082FF00A2FF0001FF0004FF0039FFFF1D310C111B18171831171E16190A0D2401443C322A20121E1E1E1E1E1E1E1E1E1E1E1E183C3C641E1E1E1E1E1E1E1E1E1E1E1E00091E001E1E1E1E1E1E1E1E1E1E1E1EA60CB766A6C0B7961F680968021E683FC6CD02CF12901F6614663F6781CD4F3AB691A1012618A61B3C67056711096807A6C2B79BCD4E4AADDDA639CC4E89BE672603CC025E14660E66DCA11B2730BEC3A182272CA104272ADE014AA10327074D270220125C5C5A2B04A30A2602AE1EA30A2503DE015A9FBEC3D7014A2005AEFF5C5C5A9FA40FA10C27F4A10F2602A60BBE67CF015358585858BF60BB60B7C39FAB3AB760069303CD4E8ECD577AB660CD587EB660AB06CD58A8A63CCD5845B6C3A40F97A0062A08DE0154BF1D101E8197DE0154BF1D141E811266A11B2718A11A27141E664D2722A103273DA104272BA1A2270BCC0339CD577ACD5AD91B661D661866A634CD5845204D0166081866CD034B116681B626B765106681A6C8CD584C1866CD034B1466810466D50066EDB6C54C2616B6C62610B666A808B766A4082606B668A880B7683FC6AE036F615A2AFBBFC5B6C6B7C4156612660466BD0A66BA1A66BE64CD593E0866023FA31966CD590003663ABE63CD593ECD5930BE62CD6823BE61CD593ECD5910BEC4CD5951BEC62603CD594DCD58E0A61CB71D191E076602181EA60EB71D191E0F6802181E1B66136681B6C54C2691A606B760A658CD584C1C66204CAD560D66050E60443A600166E0B62697B065BF65BB64B764AE03E661D0016625091266E7616C605A2AF0BE62B3C52719BFC5B6C627133AC42A0F4AB7C4A6C4076602A686B79BCD4E4ACC02E0B6C6AE63CD6B0DB7C6CC02DAC604C1A402264818680E68021968B6B8CD690E2402B6C14CB7C7A60497585858DE04762719A308270D2221B3C7271597E669A4FE2013BEC7A305220820F1BEC7A30522EB97E669AA01E7699F4A2ACD81¬ +35010¬ +0¬ +Numpad/Chrono B¬ +NUMPAD-B¬ +A multi-function WristApp, which includes three 12 digit Number Pads, a Chronometer, a Countdown Timer, and an Alarm Enhancer +Version 1.4B (Basic) + +(c) 1998 Michael Polymenakos (mpoly@panix.com). Compiled using tools and knowledge published by John A. Toebes, VIII + +TIP: Read the NUMPAD.TXT file +¬ +watchapp.hlp¬ +101¬ +none¬ +Timex Data Link 150s Watch¬ +CC0186CC019CCC034B819D9D129081D6012781CC01A300001BFF001AFF0000FF0003FF0082FF00A2FF0001FF0004FF0039FFFF1D310C111B18171831171E16190A0D2401423A30281E101E1E1E1E1E1E1E1E1E1E1E1E183C3C641E1E1E1E1E1E1E1E1E1E1E1E00091E001E1E1E1E1E1E1E1E1E1E1E1EA60CB766A6C0B7961F680968021E683FC6CD02CF12901F6614663F6781CD4F29B691A1012618A61B3C67056711096807A6C2B79BCD4E39ADDDA639CC4E78BE672603CC025E14660E66DCA11B2730BEC3A182272CA104272ADE014AA10327074D270220125C5C5A2B04A30A2602AE1EA30A2503DE015A9FBEC3D7014A2005AEFF5C5C5A9FA40FA10C27F4A10F2602A60BBE67CF015358585858BF60BB60B7C39FAB3AB760069303CD4E7DCD5AA0B660CD577FB660AB06CD57A9A63CCD5746B6C3A40F97A0062A08DE0154BF1D101E8197DE0154BF1D141E811266A11B2718A11A27141E664D2722A103273DA104272BA1A2270BCC0339CD5AA0CD59DA1B661D661866A634CD5746204D0166081866CD034B116681B626B765106681A6C8CD574D1866CD034B1466810466D50066EDB6C54C2616B6C62610B666A808B766A4082606B668A880B7683FC6AE036F615A2AFBBFC5B6C6B7C4156612660466BD0A66BA1A66BE64CD583F0866023FA31966CD580103663ABE63CD583FCD5831BE62CD682CBE61CD583FCD5811BEC4CD5852BEC62603CD584ECD57E1A61AB71D191E076602181EA60CB71D191E0F6802181E1B66136681B6C54C2691A606B760A658CD574D1C66204CAD560D66050E60443A600166E0B62697B065BF65BB64B764AE03E661D0016625091266E7616C605A2AF0BE62B3C52719BFC5B6C627133AC42A0F4AB7C4A6C4076602A686B79BCD4E39CC02E0B6C6AE63CD6B16B7C6CC02DAC604C1A402264818680E68021968B6B8CD69172402B6C14CB7C7A60497585858DE04762719A308270D2221B3C7271597E669A4FE2013BEC7A305220820F1BEC7A30522EB97E669AA01E7699F4A2ACD81¬ +51942¬ +0¬ \ No newline at end of file diff --git a/from_others/numpad/numpad-c.zap b/from_others/numpad/numpad-c.zap new file mode 100644 index 0000000..b0cb1e0 --- /dev/null +++ b/from_others/numpad/numpad-c.zap @@ -0,0 +1,33 @@ +TDL0705982¬ +Numpad/Chrono C¬ +NUMPAD-C¬ +A multi-function WristApp, which includes three 12 digit Number Pads, a Chronometer, a Countdown Timer, and an Alarm Enhancer +Version 1.4C (Day-Chime feature) + +(c) 1998 Michael Polymenakos (mpoly@panix.com). Compiled using tools and knowledge published by John A. Toebes, VIII + +TIP: Read the NUMPAD.TXT file +¬ +watchapp.hlp¬ +101¬ +none¬ +Timex Data Link 150 Watch¬ +CC0186CC0195CC032F819D9D129081D6012781CC019C00001BFF001AFF0000FF0003FF0082FF00A2FF0001FF0004FF0039FFFF1D310C111B18171831171E16190A0D2401443C322A20121E1E1E1E1E1E1E1E1E1E1E1E183C3C641E1E1E1E1E1E1E1E1E1E1E1E00091E001E1E1E1E1E1E1E1E1E1E1E1EA60CB766A6C0B7963FC6CD02BE12901F6614663F6781CD4F3AB691A1012618A61B3C67056711096807A6C2B79BCD4E4AADDDA639CC4E89BE672603CC025714660E66DCA11B2730BEC3A182272CA104272ADE014AA10327074D270220125C5C5A2B04A30A2602AE1EA30A2503DE015A9FBEC3D7014A2005AEFF5C5C5A9FA40FA10C27F4A10F2602A60BBE67CF015358585858BF60BB60B7C39FAB3AB760069303CD4E8ECD577AB660CD587EB660AB06CD58A8A63CCD5845B6C3A40F97A0062A08DE0154BF1D101E8197DE0154BF1D141E811266A11B2718A11A27141E664D2722A103273DA104272BA1A2270BCC031DCD577ACD5AD91B661D661866A634CD584520430166081866CD032F116681B626B765106681A6C8CD584C1866CD032F1466810466D50066EDB6C54C260CB6C62606B666A808B7663FC6AE036F615A2AFBBFC5B6C6B7C4156612660466C70A66C41A66BE64CD593E0866023FA31966CD590003662FBE63CD593ECD5930BE62CD6823BE61CD593ECD5910BEC4CD5951BEC62603CD594DCD58E0A61CB71D191E076602181E1B66136681B6C54C269CA606B760A658CD584C1C66204CAD560D66050E60443A600166E0B62697B065BF65BB64B764AE03E661D0016625091266E7616C605A2AF0BE62B3C52719BFC5B6C627133AC42A0F4AB7C4A6C4076602A686B79BCD4E4ACC02CFB6C6AE63CD6B0DB7C6CC02C9C604C1A4022658B6B0CD690E2402B6B9A1142208A1082504146820021568B6B8CD690E2402B6C14CB7C7A60497585858DE04762719A308270D2221B3C7271597E669A4FE2013BEC7A305220820F1BEC7A30522EB97E669AA01E7699F4A2ACD81¬ +19015¬ +0¬ +Numpad/Chrono C¬ +NUMPAD-C¬ +A multi-function WristApp, which includes three 12 digit Number Pads, a Chronometer, a Countdown Timer, and an Alarm Enhancer +Version 1.4C (Day-Chime feature) + +(c) 1998 Michael Polymenakos (mpoly@panix.com). Compiled using tools and knowledge published by John A. Toebes, VIII + +TIP: Read the NUMPAD.TXT file +¬ +watchapp.hlp¬ +101¬ +none¬ +Timex Data Link 150s Watch¬ +CC0186CC0195CC032F819D9D129081D6012781CC019C00001BFF001AFF0000FF0003FF0082FF00A2FF0001FF0004FF0039FFFF1D310C111B18171831171E16190A0D2401423A30281E101E1E1E1E1E1E1E1E1E1E1E1E183C3C641E1E1E1E1E1E1E1E1E1E1E1E00091E001E1E1E1E1E1E1E1E1E1E1E1EA60CB766A6C0B7963FC6CD02BE12901F6614663F6781CD4F29B691A1012618A61B3C67056711096807A6C2B79BCD4E39ADDDA639CC4E78BE672603CC025714660E66DCA11B2730BEC3A182272CA104272ADE014AA10327074D270220125C5C5A2B04A30A2602AE1EA30A2503DE015A9FBEC3D7014A2005AEFF5C5C5A9FA40FA10C27F4A10F2602A60BBE67CF015358585858BF60BB60B7C39FAB3AB760069303CD4E7DCD5AA0B660CD577FB660AB06CD57A9A63CCD5746B6C3A40F97A0062A08DE0154BF1D101E8197DE0154BF1D141E811266A11B2718A11A27141E664D2722A103273DA104272BA1A2270BCC031DCD5AA0CD59DA1B661D661866A634CD574620430166081866CD032F116681B626B765106681A6C8CD574D1866CD032F1466810466D50066EDB6C54C260CB6C62606B666A808B7663FC6AE036F615A2AFBBFC5B6C6B7C4156612660466C70A66C41A66BE64CD583F0866023FA31966CD580103662FBE63CD583FCD5831BE62CD682CBE61CD583FCD5811BEC4CD5852BEC62603CD584ECD57E1A61AB71D191E076602181E1B66136681B6C54C269CA606B760A658CD574D1C66204CAD560D66050E60443A600166E0B62697B065BF65BB64B764AE03E661D0016625091266E7616C605A2AF0BE62B3C52719BFC5B6C627133AC42A0F4AB7C4A6C4076602A686B79BCD4E39CC02CFB6C6AE63CD6B16B7C6CC02C9C604C1A4022658B6B0CD69172402B6B9A1142208A1082504146820021568B6B8CD69172402B6C14CB7C7A60497585858DE04762719A308270D2221B3C7271597E669A4FE2013BEC7A305220820F1BEC7A30522EB97E669AA01E7699F4A2ACD81¬ +43151¬ +0¬ \ No newline at end of file diff --git a/from_others/numpad/numpad-d.zap b/from_others/numpad/numpad-d.zap new file mode 100644 index 0000000..b9dbf13 --- /dev/null +++ b/from_others/numpad/numpad-d.zap @@ -0,0 +1,33 @@ +TDL0705982¬ +Numpad/Chrono D¬ +NUMPAD-D¬ +A multi-function WristApp, which includes three 12 digit Number Pads, a Chronometer, and a Countdown Timer +Version 1.4D (Alarm Enhancer Disabled) + +(c) 1998 Michael Polymenakos (mpoly@panix.com). Compiled using tools and knowledge published by John A. Toebes, VIII + +TIP: Read the NUMPAD.TXT file +¬ +watchapp.hlp¬ +101¬ +none¬ +Timex Data Link 150 Watch¬ +CC0186CC019CCC034B819D9D129081D6012781CC01A300001BFF001AFF0000FF0003FF0082FF00A2FF0001FF0004FF0039FFFF1D310C111B18171831171E16190A0D2401443C322A20121E1E1E1E1E1E1E1E1E1E1E1E183C3C641E1E1E1E1E1E1E1E1E1E1E1E00091E001E1E1E1E1E1E1E1E1E1E1E1EA60CB766A6C0B7961F680968021E683FC6CD02CF12901F6614663F6781CD4F3AB691A1012618A61B3C67056711096807A6C2B79BCD4E4AADDDA639CC4E89BE672603CC025E14660E66DCA11B2730BEC3A182272CA104272ADE014AA10327074D270220125C5C5A2B04A30A2602AE1EA30A2503DE015A9FBEC3D7014A2005AEFF5C5C5A9FA40FA10C27F4A10F2602A60BBE67CF015358585858BF60BB60B7C39FAB3AB760069303CD4E8ECD577AB660CD587EB660AB06CD58A8A63CCD5845B6C3A40F97A0062A08DE0154BF1D101E8197DE0154BF1D141E811266A11B2718A11A27141E664D2722A103273DA104272BA1A2270BCC0339CD577ACD5AD91B661D661866A634CD5845204D0166081866CD034B116681B626B765106681A6C8CD584C1866CD034B1466810466D50066EDB6C54C2616B6C62610B666A808B766A4082606B668A880B7683FC6AE036F615A2AFBBFC5B6C6B7C4156612660466BD0A66BA1A66BE64CD593E0866023FA31966CD590003663ABE63CD593ECD5930BE62CD6823BE61CD593ECD5910BEC4CD5951BEC62603CD594DCD58E0A61CB71D191E076602181EA60EB71D191E0F6802181E1B66136681B6C54C2691A606B760A658CD584C1C66204CAD560D66050E60443A600166E0B62697B065BF65BB64B764AE03E661D0016625091266E7616C605A2AF0BE62B3C52719BFC5B6C627133AC42A0F4AB7C4A6C4076602A686B79BCD4E4ACC02E0B6C6AE63CD6B0DB7C6CC02DAC604C1A402260718680E6802196881¬ +53362¬ +0¬ +Numpad/Chrono D¬ +NUMPAD-D¬ +A multi-function WristApp, which includes three 12 digit Number Pads, a Chronometer, and a Countdown Timer +Version 1.4D (Alarm Enhancer Disabled) + +(c) 1998 Michael Polymenakos (mpoly@panix.com). Compiled using tools and knowledge published by John A. Toebes, VIII + +TIP: Read the NUMPAD.TXT file +¬ +watchapp.hlp¬ +101¬ +none¬ +Timex Data Link 150s Watch¬ +CC0186CC019CCC034B819D9D129081D6012781CC01A300001BFF001AFF0000FF0003FF0082FF00A2FF0001FF0004FF0039FFFF1D310C111B18171831171E16190A0D2401423A30281E101E1E1E1E1E1E1E1E1E1E1E1E183C3C641E1E1E1E1E1E1E1E1E1E1E1E00091E001E1E1E1E1E1E1E1E1E1E1E1EA60CB766A6C0B7961F680968021E683FC6CD02CF12901F6614663F6781CD4F29B691A1012618A61B3C67056711096807A6C2B79BCD4E39ADDDA639CC4E78BE672603CC025E14660E66DCA11B2730BEC3A182272CA104272ADE014AA10327074D270220125C5C5A2B04A30A2602AE1EA30A2503DE015A9FBEC3D7014A2005AEFF5C5C5A9FA40FA10C27F4A10F2602A60BBE67CF015358585858BF60BB60B7C39FAB3AB760069303CD4E7DCD5AA0B660CD577FB660AB06CD57A9A63CCD5746B6C3A40F97A0062A08DE0154BF1D101E8197DE0154BF1D141E811266A11B2718A11A27141E664D2722A103273DA104272BA1A2270BCC0339CD5AA0CD59DA1B661D661866A634CD5746204D0166081866CD034B116681B626B765106681A6C8CD574D1866CD034B1466810466D50066EDB6C54C2616B6C62610B666A808B766A4082606B668A880B7683FC6AE036F615A2AFBBFC5B6C6B7C4156612660466BD0A66BA1A66BE64CD583F0866023FA31966CD580103663ABE63CD583FCD5831BE62CD682CBE61CD583FCD5811BEC4CD5852BEC62603CD584ECD57E1A61AB71D191E076602181EA60CB71D191E0F6802181E1B66136681B6C54C2691A606B760A658CD574D1C66204CAD560D66050E60443A600166E0B62697B065BF65BB64B764AE03E661D0016625091266E7616C605A2AF0BE62B3C52719BFC5B6C627133AC42A0F4AB7C4A6C4076602A686B79BCD4E39CC02E0B6C6AE63CD6B16B7C6CC02DAC604C1A402260718680E6802196881¬ +19220¬ +0¬ \ No newline at end of file diff --git a/from_others/numpad/numpad.txt b/from_others/numpad/numpad.txt new file mode 100644 index 0000000..f63cf20 --- /dev/null +++ b/from_others/numpad/numpad.txt @@ -0,0 +1,165 @@ +NUMPAD 1.4 is a multi-function WristApp for the DataLink 150/150s Watch + +(c) 1998 Michael Polymenakos (mpoly@panix.com). Compiled using tools and knowledge published by John A. Toebes, VIII + +1. Release notes +2. Usage Instructions +3. Program Versions +4. Installation +5. Known Bugs +6. About the Source Code + +1. Release notes + + Latest source and .ZAP file available at http://www.panix.com/~mpoly/software/numpad.zip + If you receive this file from another source, you may want to download the file from the above + URL to ensure that you have the most recent version. + + Distribute freely; Please include this file and software credits with the distribution. + Comments are always welcome at mpoly@panix.com + + This is Version 1.4. New features over 1.3: + - Ability to control the ButtonBeeps without resetting them from the PC + - 'Return to time mode' tone + +2. Usage Instructions + There are four functions in Numpad: + + NUMPAD: A simple wristapp that allows the recording "on the fly" + of three numbers, of 12 digits each. + + Keys: + MODE: Exit and advance to next Numpad + NEXT: Increment Digit + PREV: Decrement Digit + SET : Cursor Advance + GLOW: Cursor Back (Indiglo is disabled in this mode, but Night mode works) + + Note: The numbers are lost every time the WristApp is uploaded. + + CHRONO: A Simple Stopwatch. In addition to the usual functions, + there is a Countdown timer that will beep every N minutes, if it is set. + + Keys: + MODE: Switch to Numpad + NEXT: Start/Stop Chronometer + PREV: Enter/Leave Split mode. + If pressed while chronometer is stopped, reset to 0 + If pressed while chronometer is set to 0, reset the Countdown Timer + If pressed while Timer is reset, toggle Chronometer Alarm and ButtonBeeps ON/OFF + SET : Reset chronometer to 0, and continue in same mode + If pressed while chronometer is set to 0, advance the Countdown value by 1 + (Keep pressed to advance quickly) + GLOW: Indiglo is enabled in this mode + + WEEKLY: This is an invisible function, which affects the way the alarms are handled by + the watch. + + Each alarm has an 8-character text field associated with it. Weekly uses the + last (8th) character in that field to automatically set the alarms ON and OFF, + allowing for a weekly schedule. + + To use WEEKLY, set your alarms to DAILY, and set the last digit of the alarm text + to one of the following values: + + 0 - Ring on Weekdays only + 1 - Ring on Mondays only + 2 - Tuesdays + . + . + 7 - Sundays + 8 - Weekends + 9 - Do not adjust + + Any non-numeric values in the field have the same result as 9. + Alarms are adjusted using the current timezone (1 or 2). + + When setting alarms ON or OFF manually, please note: If the 8th digit in the + TEXT field is 0 through 8, your setting will be reset as soon as you return to + TIME mode. This is not a bug, but the way the program functions. + + CORRECTBEEP: + There is a bug in the Timex ROM. The manual for the watch reads: + + <> + + But this is not what happens. When arming/disarming the hourly Chime, the Button + Beeps are also armed/disarmed regardless of the user's setting in the upload program. + The CorrectBeep code fixes this, and causes the watch to behave as described in the + documentation. (The ButtonBeeps will not be corrected until the watch returns + to TIME mode). + + The user can control the ButtonBeeps using the Previous button in the 'Chrono' mode + (see above). When the ButtonBeeps are set, the tone symbol is displayed in Chrono mode. + +3. Program Versions + In response to various requests, there are 4 versions of the software available: + + NUMPAD-A.ZAP - The standard application. When the watch returns to TIME mode, it will + always beep (regardless of the ButtonBeeps setting). + NUMPAD-B.ZAP - The standard application. When the watch returns to TIME mode, it will + beep only if ButtonBeeps are set ON. + NUMPAD-C.ZAP - A new feature has been added: Chime Control. The hourly Chime will be + turned OFF from 8pm through 8am, and ON for the rest of the day. Currently + the only way to change the ON/OFF hours is to alter and recompile the + provided source code. Use the Alarm screen to control ButtonBeeps. + Requested by a Datalink user, who likes the chime, but whose wife does not! + NUMPAD-D.ZAP - As above, but with the WEEKLY function disabled for those who do + not need it. The ButtonBeep control functions are present + +4. Installation. + 4a) Users of Datalink software 2.1D and later: + a) Copy the .ZAP files provided in this extract into the APP subdirectory of your Timex + directory. + + d) Restart TimexDL and select the wristapp you wish to upload. + + 4b) Users of Datalink software 2.1C and earlier: + a) In your Timex Software Directory, locate the file TIMEXDL.DAT, and edit it + + b) Look for the [WristApps] Section. Increment the WristAppTotal count, and add + new lines for Numpad below. This is an example of what the section may look like + after you are done: + [WristApps] + WristAppTotal=9 + SelectedWristApp=7 + WristAppSendOption=True + WristApp000=CHRONO12.ZAP + WristApp001=WKSUSA11.ZAP + WristApp002=WKSISO11.ZAP + WristApp003=TIMER13.ZAP + WristApp004=QUICK13.ZAP + WristApp005=NOTE13.ZAP + WristApp006=MELODY17.ZAP + WristApp007=NUMPAD-A.zap + WristApp008=NUMPAD-D.zap + + c) Copy the .ZAP files provided in this extract into the APP subdirectory of your Timex + directory. + + d) Restart TimexDL and select the wristapp you wish to upload. + +5. Known Bugs. + 5a) If you set an Alarm for 0:00 (midnight), the Weekly feature will treat it as if though + it was set for the night before. So, 0:00 Tuesday morning, is really treated as + 24:00 Monday night. + 5b) When you finish downloading the app, there will be some garbage characters in the COMM + mode screen. Nothing to worry about. + +6. About the Source Code + You can modify and recompile the source code using the compiler found at John Toebes' + pages (http://www.geocities.com/ResearchTriangle/7650/). The source code in this version + will not compile as-is, because the total size of the code for all the features exceeds + the Datalink's 742 byte limitation. + + The source code for Numpad 1.0 was much better organized and documented that the code for + this version. In order to conserve memory, I had to use every trick that would save me one + byte here and another byte there. I'll be glad to explain any code segment to anyone + interested in making improvements. + + If you do create something interesting using Numpad as your starting point, please release + it to the public with the source code, so that we all benefit. Please provide proper + attribution for the code you reused. + + +Enjoy! diff --git a/from_others/numpad/numpad.zsm b/from_others/numpad/numpad.zsm new file mode 100644 index 0000000..4aaced7 --- /dev/null +++ b/from_others/numpad/numpad.zsm @@ -0,0 +1,718 @@ +;Name: Numpad/Chrono +;Version: NUMPAD +;Description: A multi-function WristApp, which includes three 12 digit Number Pads, a Chronometer, a Countdown Timer, and an Alarm Enhancer +;Version 1.4 +; +;(c) 1998 Michael Polymenakos (mpoly@panix.com). Compiled using tools and knowledge published by John A. Toebes, VIII +; +;TIP: Read the NUMPAD.TXT file +; +;HelpFile: watchapp.hlp +;HelpTopic: 101 + +INCLUDE "WRISTAPP.I" + +; +; NOTE: This code can not be compiled 'as-is'. You will need to remove one or more features +; to make the program fit in the 742 bytes of memory available. +; +; ;?C marks day-chime specific code +; ;?B marks correct-beeps specific code +; ;?W Weekly alarm enhancer code +; ;?A Line of code that needs to be removed for 'always beep on return' feature. +; +; Version Remove Lines Marked +; A ;?C ?A +; B ;?C +; C ;?B +; D ;?C ;?W +; + + +; +; Program Constants +; + +DASH equ $1E ; Dash in Timex6 charset + +; +; Memory Addresses + +; steal 5 bytes from the stack. + +CURSOR equ $C3 ; Points to the next byte to be updated by numpad +COUNT_NOW equ $C4 ; Minutes left to countdown +COUNT_LAST equ $C5 ; Last value of MINUTE encountered in timer routine +COUNT_INIT equ $C6 ; User's selected value for countdown +DOW equ $C7 ; Current Day-Of-Week + +; We have bytes $60 thru $67 to use for memory (8 bytes) + +TICKER equ $26 ; System tick counter, incremented by 1 every 1/100 sec + +TEMP equ $60 ; Used sparingly +HOURS equ $61 ; --+ +MINUTES equ $62 ; | The chronometer time value. This matches what is +SECONDS equ $63 ; | displayed on screen +HUNDREDS equ $64 ; --+ + +LASTTICK equ $65 ; Last value of TICKER encountered, see PT_TICK routine + +; Our timer status flags + +STATUS equ $66 ; Chronometer Status Flags, bits as follows: + +ST_BPRESSED equ 7 ; The user has pressed at least one button in Timer +ST_SETCOUNT equ 6 ; We are in Set-Countdown mode +ST_REDRAWING equ 5 ; We are in the redrawing routine +ST_100S equ 4 ; 100s of seconds need to be redrawn (10's are always redrawn) +ST_ALARM equ 3 ; Use alarm instead of beep on countdown +ST_SPLIT equ 2 ; we are in split mode +ST_REDRAW equ 1 ; The chronometer is the current program +ST_RUNNING equ 0 ; time is running + +SV_BPRESSED equ 128 +SV_SETCOUNT equ 64 +SV_REDRAWING equ 32 +SV_100S equ 16 +SV_ALARM equ 8 +SV_SPLIT equ 4 +SV_REDRAW equ 2 +SV_RUNNING equ 1 + +CURRENT_PROGRAM equ $67 ; 0 - 3, Subprogram currently active + +; +; System entry point vectors +; + +START equ * +L0110 jmp PM_MAIN ; The main entry point +L0113 jmp PM_SLEEP ; Called when we are suspended for any reason +L0116 jmp PT_TICK ; Called to handle any timers or time events +L0119 rts ; Called when the COMM app starts and we have timers pending + nop + nop +;011C jmp PM_MAIN ; Called when the COMM app loads new data (Reset application) +L011C bset 1,BTNFLAGS ; Request a TICK event every 1/10 sec. + rts +L011F lda STATETAB0,X ; The state table get routine + rts + +L0123 jmp PM_HANDLE_STATE0 + db STATETAB0-STATETAB0 + +; +; State Table +; + +STATETAB0 + db 0 + db EVT_ENTER,TIM_ONCE,0 ; Initial state + db EVT_RESUME,TIM_ONCE,0 ; Resume from a nested app + db EVT_NEXT,TIM_ONCE,0 + db EVT_PREV,TIM_ONCE,0 ; Various buttons pressed + db EVT_DNSET,TIM_ONCE,0 + db EVT_UPSET,TIM_ONCE,0 + db EVT_MODE,TIM_ONCE,0 + db EVT_GLOW,TIM_ONCE,0 + db EVT_USER2,TIM_ONCE,$FF ; User Event : Exit app + db EVT_END + +; Various display Strings + +BANNERS +S8_CHRONO timex "-CHRONO-" +S8_NUMPAD timex "NUMPAD 1" + +; Cursor Table - for turning "cursor" segments on + +CURSORS db ROW_T1I,ROW_T2I,ROW_T3I,ROW_T4I,ROW_T5I,ROW_T6I + +; DIGITS is the main storage for the NUMPAD wristapps + +DIGITS equ DIGITS1-16 ; So that offsets are right + +DIGITS1 db DASH,DASH,DASH,DASH,DASH,DASH + db DASH,DASH,DASH,DASH,DASH,DASH + +; Note: there must be exactly 4 bytes filler between here and digits2 + +X_IN_Y db 24,60,60,100 ; 24 hours in a day, 60 minutes in an hour, etc... + +DIGITS2 db DASH,DASH,DASH,DASH,DASH,DASH + db DASH,DASH,DASH,DASH,DASH,DASH + +; Note: there must be exactly 4 bytes filler between here and digits3 + + db 0 + +ROLL_TABLE equ ROLL_TABLEX-$1D +ROLL_TABLEX db 9,DASH,0 ; See PN_CHANGE routine + +DIGITS3 db DASH,DASH,DASH,DASH,DASH,DASH + db DASH,DASH,DASH,DASH,DASH,DASH + +; +; General/Setup routines +; +PM_MAIN ; This routine gets called after app/data is uploaded + lda #SV_SPLIT+SV_ALARM ; Defaults for chronometer + sta STATUS ; Set default status + + lda #$C0 ; Store WristApp flags + sta WRISTAPP_FLAGS ; Button Beeps = System, Loaded = Yes +;?B{ + bclr 7,MODE_FLAGS + brclr 4,MODE_FLAGS,PM_MAIN1 + bset 7,MODE_FLAGS +;?B} +PM_MAIN1 + clr COUNT_INIT ; Clear Countdown + jsr PT_RESET_TIMER ; Reset Chronometer time + bset 1,BTNFLAGS ; Request a TICK event every 1/10 sec. + +PM_SLEEP ; Called when we get suspended + bclr ST_BPRESSED,STATUS ; Clear the button-pressed indicator + bset ST_SPLIT,STATUS ; Set split mode (Disables display of timer) + clr CURRENT_PROGRAM ; Reset current program to 0 + rts +; +; Application State table handler +; + +PM_HANDLE_STATE0 ; This routine gets called whenever an event is triggered + jsr SNDSTOP ; Shudup! + lda BTNSTATE ; Get the event + cmp #EVT_MODE ; Is it the mode button? + bne PM_HANDLE_APP ; No, handle program + +PM_HANDLE_NEXT_APP + lda #EVT_ENTER + inc CURRENT_PROGRAM ; Yes, increment program number + + brclr 2,CURRENT_PROGRAM,PM_HANDLE_APP ; Are we now in program number 4? + + ; for some inexplicable reason, when this application returns to TIME mode, it + ; does not produce the distinctive sound that it is supposed to. this is a workaround + ; for that. This is pretty good code to comment out if you need an extra 10 bytes +;?A{ + brclr 4,MODE_FLAGS,PM_NO_RETURN_BEEP ; Should we make a 'return to time' beep? +;?A} + lda #SND_RETURN + sta SYSSOUND ; Play Sound + jsr SNDSTART ; + +PM_NO_RETURN_BEEP + + bsr PM_SLEEP ; Get ready to say bye + + lda #EVT_USER2 ; Go back to original state + jmp POSTEVENT + +PM_HANDLE_APP + ldx CURRENT_PROGRAM ; Is this program 0? + bne PN_HANDLE_NUMPAD ; Yes, go to timer + jmp PT_HANDLE_TIMER + + +;########################### +;# NUMPAD APPLICATION CODE # +;########################### +; Application handler gets called on any event + +PN_HANDLE_NUMPAD ; Called if we are the current app, and there is an event pending + bset ST_SPLIT,STATUS ; Set split mode (Disables display of timer) + +; bset 1,APP_FLAGS ; Indicate that we can be suspended + ; Disabled; we cannot be suspended. + + brset ST_BPRESSED,STATUS,PM_HANDLE_NEXT_APP ; If the user did something in timer, we want out... + + cmp #EVT_ENTER ; Is this our initial entry? + beq PN_CURSORFIRST ; Yes, just move cursor to top/left position + + ldx CURSOR ; Next 2 routines need CURSOR in X + + cmp #EVT_DNSET ; SET Button - Move cursor right + beq PN_CURSORRIGHT ; + + cmp #EVT_GLOW ; SET Button - Move cursor left + beq PN_CURSORLEFT ; + + ldx DIGITS,X ; Next 3 routines need DIGIT,CURSOR in X + + cmp #EVT_PREV ; PREV decrements the value + beq PN_CHANGE_DOWN ; + + ;cmp #EVT_NEXT ; NEXT increments the value + tsta ; since #EVT_NEXT = 0 + beq PN_CHANGE_UP ; + + bra PN_CHANGE_OK ; Catch-all + +; Routines to handle digit changes +; Increment or decrement the digit +; X must have the current digit value in it. + +PN_CHANGE_UP + incx ; Twice, because it will be dec'd later + incx + +PN_CHANGE_DOWN + decx + bmi PN_CHANGE_DASH ; If it is $FF or 10, Change it to DASH + cpx #10 + bne PN_CHANGE_ROLL + +PN_CHANGE_DASH + ldx #DASH + +PN_CHANGE_ROLL + cpx #10 ; Handle transition from 9 <-> DASH <-> 0 + blo PN_CHANGE_OK ; Does it need to be rolled? + ldx ROLL_TABLE,X + +PN_CHANGE_OK ; Done + txa + ldx CURSOR + sta DIGITS,X + bra PN_REDRAW ; Remember, redraw needs Cursor in X + +; Routines to handle Cursor Movement +PN_CURSORFIRST ; Set cursor to 0 (left/top most) digit + ldx #$FF ; (Set it to -1 and let following routine fix it) + +PN_CURSORRIGHT ; Move cursor right + incx + incx + +PN_CURSORLEFT ; Move cursor left + decx + +PN_REDRAW ; Set Cursor, then redraw. X must contain current cursor +PN_CURSOR_SET ; Handle rolling off the edge in both directions + txa + and #$0F ; A = A mod 16 + cmp #$0C ; if a = 13 then a = 0 + beq PN_CURSORFIRST ; + cmp #$0F ; if a = -1 then a = 12 + bne PN_CURSOR_SET1 ; +PN_CURSORLAST ; + lda #$0B ; + +PN_CURSOR_SET1 ; A contains CURSOR mod 16 + ldx CURRENT_PROGRAM + stx S8_NUMPAD+7 ; Patch display to read 'NUMPAD n' + lslx + lslx + lslx + lslx + stx TEMP ; TEMP = (Program * 16) + add TEMP + sta CURSOR ; CURSOR = CURSOR + (Program * 16) + txa + add #DIGITS - START ; TEMP = DIGITS - START + (Program * 16) + sta TEMP + + brset 3,$93,PN_CURSOR_KEEPGLOW ; Are we in night mode? + jsr INDIGLO_OFF ; no, turn off indiglo, in case GLOW was pressed + +PN_CURSOR_KEEPGLOW + jsr CLEARALL ; Clear the display + + lda TEMP + + jsr PUT6TOP ; Print Line 1 + lda TEMP + add #6 + jsr PUT6MID ; Print Line 2 + + lda #S8_NUMPAD-START + jsr BANNER8 ; Print banner +; +; Cursor logic - displays a "," on the digit currently being edited +; Some effort made to keep this code compatible with the 150 and the 150S +; + lda CURSOR + and #$0F ; Cursor = Cursor mod 16 + tax + sub #$06 + bpl PN_REDRAWMID ; If cursor >=6 then we are on line 2 +PN_REDRAWTOP ; See definition of DISP_ROW in WRISTAPP.I + ldx CURSORS,X + stx DISP_ROW + bset COL_T1I,DISP_COL + rts +PN_REDRAWMID + tax + ldx CURSORS,X + stx DISP_ROW + bset COL_M1I,DISP_COL + rts + +;########################### +;# TIMER APPLICATION CODE # +;########################### + +PT_HANDLE_TIMER + bset ST_REDRAW,STATUS + +PT_HANDLE_TIMER0 + cmp #EVT_ENTER ; Is this our initial entry? + beq PT_ENTER + + cmp #EVT_RESUME ; Are we resuming from Suspense? + beq PT_RESUME + + bset ST_BPRESSED,STATUS ; Mark that the user has pressed a button here + + ;cmp #EVT_NEXT ; Next button + tsta + beq PT_START_STOP + + cmp #EVT_PREV ; PREV button + beq PT_SPLIT + + cmp #EVT_GLOW ; Let it glow, let it glow, let it glow + beq PT_RETURN + + cmp #EVT_UPSET ; Did they release the SET key? + beq PT_COUNTDOWN_DONE ; yes - get out of countdown set mode + + jmp PT_COUNTDOWN_SET ; Must be the SET button (DOWN) + + +PT_ENTER ; Routine called when we first enter the timer +PT_RESUME ; and if we are resuming + jsr CLEARALL +; + jsr PUT_HOURX ; just to display the colon + +; lda #ROW_MC23 ; format display as __:__.__ +; sta DISP_ROW +; bset COL_MC23,DISP_COL + +; lda #ROW_MP45 ; replaced by call to PUT_MINUTEX, below +; sta DISP_ROW +; bset COL_MP45,DISP_COL + + bclr ST_REDRAWING,STATUS + +PT_COUNTDOWN_DONE ; Stop incrementing the counter, if we are + bclr ST_SETCOUNT,STATUS + +PT_SPLIT_OFF ; Set split off + bset ST_100S,STATUS ; Show the real 100th digit + + lda #S8_CHRONO-START ; Display "CHRONO" again + jsr BANNER8 + + bra PT_REDRAW_AND_CLEAR_SPLIT + +PT_START_STOP ; Called when NEXT is pressed + brclr ST_RUNNING,STATUS,PT_START ; If we are stopped, then Start + bset ST_100S,STATUS ; Prepare to display the 100's + jsr PT_TICK ; To redisplay the 1/100s byte with the present value + bclr ST_RUNNING,STATUS ; Stop + rts + +PT_START ; Restarts the timer + lda TICKER + sta LASTTICK + bset ST_RUNNING,STATUS ; Run! +PT_RETURN + rts + +PT_SPLIT_TOGGLE ; We are here because the timer is running + ;brset ST_SPLIT,STATUS,PT_SPLIT_OFF ; Already in SPLIT? Clear it, done + lda #SYS8_SPLIT ; enter SPLIT mode + jsr PUTMSGBOT + bset ST_100S,STATUS + jsr PT_TICK ; To fore update of 1/100s byte with the present value + bset ST_SPLIT,STATUS + rts + +PT_SPLIT ; Called when PREVIOUS is pressed + brset ST_SPLIT,STATUS,PT_SPLIT_OFF ; If we are stopped and split, just clear split + brset ST_RUNNING,STATUS,PT_SPLIT_TOGGLE ; If we are running, just go to split mode + + lda COUNT_LAST ; If count_last = FF + inca + bne PT_RESET_TIMER ; Zero the stopwatch + + lda COUNT_INIT ; Is counter turned off? + bne PT_SPLIT_CLEAR_COUNT_INIT ; Turn off counter + + lda STATUS ; Nothing else to do, so toggle alarm/beep mode + eor #SV_ALARM ; Flip Alarm bit + sta STATUS +;?B{ + and #SV_ALARM + bne PT_SPLIT_CLEAR_COUNT_INIT + + lda MODE_FLAGS ; toggle keybeeps + eor #$80 ; bit 7 + sta MODE_FLAGS +;?B} +PT_SPLIT_CLEAR_COUNT_INIT + clr COUNT_INIT + +PT_RESET_TIMER ; Clear Hours, Minutes, Seconds + ldx #3 +PT_RESET_LOOP + clr HOURS,X + decx + bpl PT_RESET_LOOP + + stx COUNT_LAST ; Conveniently, X contains $FF, which will force + ; an update the moment we start the chronometer + lda COUNT_INIT + +PT_RESET_COUNT_NOW + sta COUNT_NOW ; reset countdown + +PT_REDRAW_AND_CLEAR_SPLIT + bclr ST_SPLIT,STATUS + bset ST_REDRAW,STATUS + +PT_REDRAW ; Redraws the timer display + + brset ST_SPLIT,STATUS,PT_RETURN ; Don't redraw if we are in split mode + brset ST_REDRAWING,STATUS,PT_RETURN ; Don't redraw if we are already redrawing + bset ST_REDRAWING,STATUS ; Having some strange problems with segments getting + ; trashed when buttons pressed. It appears that the + ; problem is that tick events happen while this routine is + ; running. This flag checks for the problem + ldx HUNDREDS + jsr FMTXLEAD0 + + ; Hide the 100s digit. Because we usually get a tick every 10/100s of a second, + ; this digit tends to appear 'stuck' on the display, even though it is + ; internally computed correctly. + + brset ST_100S,STATUS,PT_REDRAW_NOHIDE ; Show the real 100th digit + clr DATDIGIT2 +PT_REDRAW_NOHIDE + bclr ST_100S,STATUS + jsr PUTTOP56 + + brclr ST_REDRAW,STATUS,PT_REDRAW_SKIP ; Skip the rest if we don't need them. + + ldx SECONDS + jsr FMTXLEAD0 + jsr PUTMID56 + + ldx MINUTES + jsr PUT_MINUTEX + ;jsr FMTXLEAD0 + ;jsr PUTMID34 + + ldx HOURS + ;jsr PUT_HOURX + jsr FMTXLEAD0 + jsr PUTMID12 + + ldx COUNT_NOW + jsr FMTX + + ldx COUNT_INIT + bne PT_REDRAW_100S + jsr FMTBLANK0 + +PT_REDRAW_100S + jsr PUTTOP12 + +PT_REDRAW_INDICATORS + lda #ROW_ALARM ; Now show or hide the little "o)))" icon + sta DISP_ROW + bclr COL_ALARM,DISP_COL ; hide it + brclr ST_ALARM,STATUS,PT_REDRAW_DONE0 + bset COL_ALARM,DISP_COL ; show it + +PT_REDRAW_DONE0 +;?B{ + lda #ROW_NOTE ; Now show or hide the little "Note" icon + sta DISP_ROW + bclr COL_NOTE,DISP_COL ; hide it + brclr 7,MODE_FLAGS,PT_REDRAW_DONE1 + bset COL_NOTE,DISP_COL ; show it +;?B} +PT_REDRAW_DONE1 +PT_REDRAW_SKIP + bclr ST_REDRAWING,STATUS + bclr ST_REDRAW,STATUS +PT_RETURN2 + rts ; DONE + +PT_COUNTDOWN_SET ; User pressed the SET button + lda COUNT_LAST ; If count_last = FF + inca ; (i.e. stopwatch display is not 00) + bne PT_RESET_TIMER ; just reset the stopwatch + + lda #6 ; Ok, increment the countdown period. If the user keeps this button + sta TEMP ; pressed for over 8/10s sec, we will start incrementing it rapidly + + lda #SYS8_SET ; Display 'SET' + jsr PUTMSGBOT + + bset ST_SETCOUNT,STATUS + bra PT_COUNTDOWN_INC + +PT_TICK ; Called approx. every 1/10th second + + bsr PA_FUDGE_ALARMS + +PT_COUNTDOWN_TIMED_INC ; The user is pressing on the SET key, handle it + brclr ST_SETCOUNT,STATUS,PT_COUNTDOWN_TIMED_INC_DONE ; No s/he is not + brset 7,TEMP,PT_COUNTDOWN_INC; Have we been in this mode for > 8/10ths second? (Temp = -1) + dec TEMP + +PT_COUNTDOWN_TIMED_INC_DONE + brclr ST_RUNNING,STATUS,PT_RETURN2 ; Do nothing if we are paused + + lda TICKER ; This is a constantly rolling counter, it increments by one every 1/100sec + tax + sub LASTTICK ; figure out how many 1/100s elapsed since we were last here + stx LASTTICK ; and remember it for next time + + add HUNDREDS ; Add that to our 'hundreds' byte + sta HUNDREDS + + ldx #3 ; for byte=hundreds to hours + +PT_TICK_LOOP ; Whenever one of the bytes overflows, + lda HOURS,X ; this loop increments the next higher + sub X_IN_Y,X ; byte. + blo PT_TICK_DONE + bset ST_REDRAW,STATUS ; We'll have to redraw + sta HOURS,X ; Store subtracted value in current byte + inc HOURS-1,X ; and Increment the next higher byte + decx ; note: TEMP gets trashed + bpl PT_TICK_LOOP ; loop + +PT_TICK_DONE + ldx MINUTES ; Yes - Have the minutes changed since we were here last? + cpx COUNT_LAST + beq PT_TICK_DONE0 ; No - bye + stx COUNT_LAST ; Remember the current number of minutes + + lda COUNT_INIT ; Are we using the countdown feature? + beq PT_TICK_DONE0 ; No - bye + + dec COUNT_NOW + bpl PT_TICK_DONE0 ; Out of time? + + deca ; Reset the time, A still contains COUNT_INIT + sta COUNT_NOW + + lda #SND_CONF + brclr ST_ALARM,STATUS,PT_TICK_BEEP ; Should we beep or should we start the alarm? + lda #SND_ALARM + +PT_TICK_BEEP + sta SYSSOUND ; Play Sound + jsr SNDSTART ; + +PT_TICK_DONE0 ; Done, now redraw the screen + jmp PT_REDRAW + +PT_COUNTDOWN_INC + lda COUNT_INIT ; Increment the value of COUNT_INIT by A+1 + ldx #99 + jsr INCA_WRAPX + +PT_COUNTDOWN_INC0 + sta COUNT_INIT + jmp PT_RESET_COUNT_NOW ; Update the COUNT_NOW byte (for display) and redraw + +;###################### +;# WEEKLY ALARM CODE # +;###################### + +PA_FUDGE_ALARMS + + ; Note: TEMP and DOW are the same variable! + + lda CURRENT_APP + and #$02 + bne PA_RETURN ; Do not run this code if we are in ALARM or COMM mode +;?B{ + bset 4,MODE_FLAGS + brset 7,MODE_FLAGS,PA_ADJUST + bclr 4,MODE_FLAGS +;?B} +;?C{ + ; Hourly Chime Control Code + ; Note : This only works for Time Zone 1 + + lda TZ1_HOUR + + jsr CHECK_TZ ; See which one we are really using + bcc PA_SET_CHIME ; If we were right, just skip on to do the work + lda TZ2_HOUR ; Wrong guess, just load up the second time zone + +PA_SET_CHIME + cmp #20 ; 8 O'Clock PM + bhi PA_CHIME_OFF + cmp #08 ; 8 o'Clock AM + blo PA_CHIME_OFF + + bset 2,MODE_FLAGS + bra PA_SET_CHIME_DONE + +PA_CHIME_OFF + bclr 2,MODE_FLAGS +PA_SET_CHIME_DONE +;?C} +PA_ADJUST +;?W{ + lda TZ1_DOW ; Assume that we are using the first timezone + jsr CHECK_TZ ; See which one we are really using + bcc PA_SET_DOW ; If we were right, just skip on to do the work + lda TZ2_DOW ; Wrong guess, just load up the second time zone + +PA_SET_DOW + inca ; Adjust to our numbering scheme + sta DOW + lda #4 ; For 5 alarms + +PA_LOOP + tax ; Silly register tricks + lslx + lslx + lslx + ldx $0476,X ; get last digit on display + beq PA_WEEKDAY ; if 0, do weekday routine + cpx #8 ; if 8, do weekend routine + beq PA_WEEKEND + bhi PA_NEXT ; if > 8 do nothing + cpx DOW ; compare with day of week + beq PA_ALARM_ON +PA_ALARM_OFF ; Set the alarm off + tax + lda ALARM_STATUS,X ; Set the alarm off + and #$FE + bra PA_SET +PA_WEEKEND ; Is today a weekend? + ldx DOW + cpx #5 + bhi PA_ALARM_ON + bra PA_ALARM_OFF +PA_WEEKDAY ; Is today a weekday? + ldx DOW + cpx #5 + bhi PA_ALARM_OFF +PA_ALARM_ON ; Set the alarm on + tax + lda ALARM_STATUS,X + ora #$01 +PA_SET + sta ALARM_STATUS,X ; done + txa +PA_NEXT + deca + bpl PA_LOOP ; next timer +;?W} +PA_RETURN + rts diff --git a/from_timex/Makefile b/from_timex/Makefile new file mode 100644 index 0000000..509fd39 --- /dev/null +++ b/from_timex/Makefile @@ -0,0 +1,11 @@ +ZAPS=chrono12.zap conv01.zap copyme01.zap golf01.zap melody17.zap note13.zap pulse01.zap quick13.zap timer13.zap wksiso11.zap wksusa11.zap world01.zap +APPS=${ZAPS:%.zap=%.app} + +default: ${APPS} + +%.app:%.zap + ../tools/zap2app $< $@ + +clean: + /bin/rm -f ${APPS} + diff --git a/from_timex/chrono12.zap b/from_timex/chrono12.zap new file mode 100644 index 0000000..15f76a2 --- /dev/null +++ b/from_timex/chrono12.zap @@ -0,0 +1,27 @@ +TDL0306962¬ +Stopwatch¬ +CHRONO12¬ +The Timex Stopwatch WristApp is a chronograph. +It times events by starting from zero and counting up. + +TIP: Download your watch faster: Download a WristApp once, then do not send it again. It stays in the watch!¬ +watchapp.hlp¬ +101¬ +none¬ +Timex Data Link 150 Watch¬ +CC01D4819D9DCC0200CC01DC819D9DD601E981CC0137003C371B0E1C0E1D24243D371C1D181924B691A11A270FA11B2713A1002731A1032742CC01D1CD577ACD030B207DC604A1261310651B671565CD577AA69CCD58ACA648CC584CA637CD4E894FC704A18102900E02650B0A67081290B626B766204A13902046016505CD577A1165039030B667A820B767B665A804B765B661C702B7B662C702B8B663C702B9B664C702BA1C67CD030B4FC702B6A604C702B5200B0B67061B6715652002AD03CC02BB1390A6C0B79618963F613F623F633F643F673F65810000FF0003FF0001FFFF1AFF001B84001FFF0037FFFF1DC604C4A1082607006504186720021967156713671167B62697B1662504B06620043066BB66BF66BB64A1632204B7642042A0643C63A16322F8B7641467B663A13C2530A03CB76312673C62B662A13C25223F62B661A16324063C6110672014A663B764A63BB763B76213901265096744CD030609673E0A6715CD0398056735CD036C03672FCD0339016729CC0314C602B54A260FB667A840B767C602B64CC702B6A604C702B5C602B6A11E25041B671565CC02BB81000000000000016505CD577A116502902A0A6738B661BA62BA63BA642619A6D0CD584CA624B71D141EA636B71D161EA6A8CD58ACCC0398AD18201B0A6707A61FCD584520110C6704CD578781A6C8CC584CA617CC5845AD07AD2AAD5BCC0398046504BE612003CE02B7A300260BCD595CA636B71D171E2009CD5951A636B71D161ECC5910046506BE62B6612006CE02B8C602B7A1002614A300260BCD595CA624B71D151E200ECD59512003CD593EA624B71D141ECC5920046508BE63B661BA622009CE02B9C602B7CA02B8A100260EA3002605CD595C2008CD59512003CD593ECC59300A6714039011B667A808B767076704AE082002AE092010046504BE642003CE02BAD66B60A40F97A614CD570D046504BE642003CE02BADE6B6054545454A622CC570D¬ +56756¬ +0¬ +Stopwatch¬ +CHRONO22¬ +The Timex Stopwatch WristApp is a chronograph. +It times events by starting from zero and counting up. + +TIP: Download your watch faster: Download a WristApp once, then do not send it again. It stays in the watch!¬ +watchapp.hlp¬ +101¬ +none¬ +Timex Data Link 150s Watch¬ +CC01EB819D9DCC0206CC01F3819D9DD6013781CC014E003C371B0E1C0E1D24243D371C1D1819240000FF0003FF0001FFFF1AFF001B84001FFF0037FFFF1DB691A11A270FA11B2713A1002731A1032742CC01E8CD5AA0CD030B207DC604A1261310651B671565CD5AA0A69CCD57ADA648CC574DA637CD4E784FC704A18102900E02650B0A67081290B626B766204A13902046016505CD5AA01165039030B667A820B767B665A804B765B661C70202B662C70203B663C70204B664C702051C67CD030B4FC70201A604C70200200B0B67061B6715652002AD03CC02BB1390A6C0B79618963F613F623F633F643F673F6581000000000000C604C4A1082607006504186720021967156713671167B62697B1662504B06620043066BB66BF66BB64A1632204B7642042A0643C63A16322F8B7641467B663A13C2530A03CB76312673C62B662A13C25223F62B661A16324063C6110672014A663B764A63BB763B76213901265096744CD030609673E0A6715CD0398056735CD036C03672FCD0339016729CC0314C602004A260FB667A840B767C602014CC70201A604C70200C60201A11E25041B671565CC02BB81016505CD5AA0116502902A0A6738B661BA62BA63BA642619A6D0CD574DA622B71D141EA634B71D161EA6A8CD57ADCC0398AD18201B0A6707A61FCD574620110C6704CD5AAD81A6C8CC574DA617CC5746AD07AD2AAD5BCC0398046504BE612003CE0202A300260BCD585DA634B71D171E2009CD5852A634B71D161ECC5811046506BE62B6612006CE0203C60202A1002614A300260BCD585DA622B71D151E200ECD58522003CD583FA622B71D141ECC5821046508BE63B661BA622009CE0204C60202CA0203A100260EA3002605CD585D2008CD58522003CD583FCC58310A6714039011B667A808B767076704AE082002AE092010046504BE642003CE0205D66B69A40F97A612CD5A33046504BE642003CE0205DE6B6954545454A620CC5A33¬ +55081¬ +0¬ \ No newline at end of file diff --git a/from_timex/conv01.zap b/from_timex/conv01.zap new file mode 100644 index 0000000..37a0cd8 --- /dev/null +++ b/from_timex/conv01.zap @@ -0,0 +1,31 @@ +TDL0704962¬ +Conversion¬ +Conv11¬ +The Timex Conversion WristApp gives you a table for converting values from one unit to another. + +Choose the Input/Configure button to select the conversion that you find most useful. Your choices include currency, distance, temperature, tips, and more. + +TIP: Download to your watch faster: Download a WristApp once, then do not send it again. It stays in the watch!¬ +watchapp.hlp¬ +108¬ +convmain.exe¬ +Timex Data Link 150 Watch¬ +CC01B2CC0192CC02B1819D9D819D9DD6019581CC0135001400150E1B1D1E1C0D313D170E0D128FB691A11B261CCD58D2C604A1260AA617CD58A8A648CC584C4FC704A1A637CD4E8981A11A2704A11E2605CD579F2024A180260414632006A18326051563CD0272A1022609C602C7B76117632006A1A526021390A61DCD5845CC01BD139081001AFF001B01001EFF0080FF0083FF0002FF0001FFFFA5FF0037FFFF1DA6C0B7963F613F623F6381076303CC5979B66148BB61B762AD211363AD3ECD5910AD77CD5920CD0262A624B71D151E0C6306A624B71D141ECC59301263AD1DCD58E0AD56CD58F0CD0262A624B71D111E0C6306A624B71D101ECC5900B663A43EB763BE62036305DE02CA2003DE0360260210639FA1FF26041E63200DA16425091C63A06497260210630F630BA61DB7A2A61EB7A3106381CC594DBE62036305DE02CB2003DE0361006303CC593ECC5951BE62036305DE02CC2003DE0362CC593E3FA51290B6610563160763071763C602C72022C102C824034C201A166320180763071763C602C8200CC102C723034A200416632002B761A61DCD5845CC01BD3CA5B6A5A108250D27BBC102C92506A608B7A520B081003108000100000200000300000400000500000600000700000800000900000A00000C00000E00001000001200001400001600001800001A00001C00001E00002000002200002400002600002800002A00002C00002E00003000003200003700003C00004100004600004B00005000005500005A00005F00010000011900013200014B000200000232000300000400000500000732000A000000014600032900050B000651000834000A16000B5C000D3F000F2100110300142C001755001B19001E4200220700252F002858002C1D002F4600330A00363300395C003D2000404900440E004736004A5F004E2400514C005511005D45010214010A48011318011B4C01241B012C4F01351F013D52014622020C5D02373302620A032844041955050B020651240833460C4D37110328¬ +61397¬ +1¬ +Sample Data¬ +Conversion¬ +Conv21¬ +The Timex Conversion WristApp gives you a table for converting values from one unit to another. + +Choose the Input/Configure button to select the conversion that you find most useful. Your choices include currency, distance, temperature, tips, and more. + +TIP: Download to your watch faster: Download a WristApp once, then do not send it again. It stays in the watch!¬ +watchapp.hlp¬ +108¬ +convmain.exe¬ +Timex Data Link 150s Watch¬ +CC0247CC03F3CC0291819D9D819D9DD602A781CC0135001400150E1B1D1E1C0D313D170E0D128FB691A11B261CCD57D3C604A1260AA617CD57A9A648CC574D4FC704A1A637CD4E7881A11A2704A11E2605CD5ACB2024A180260414632006A18326051563CD0252A1022609C602C4B76117632006A1A526021390A61DCD5746CC0192076303CC587AB66148BB61B762AD211363AD3ECD5811AD77CD5821CD0237A622B71D151E0C6306A622B71D141ECC58311263AD1DCD57E1AD56CD57F1CD0237A622B71D111E0C6306A622B71D101ECC5801B663A43EB763BE62036305DE02C72003DE035D260210639FA1FF26041E63200DA16425091C63A06497260210630F630BA61DB7A2A61EB7A3106381CC584EBE62036305DE02C82003DE035E006303CC583FCC5852BE62036305DE02C92003DE035FCC583FA6C0B7963F613F623F63813FA51290B6610563160763071763C602C42022C102C524034C201A166320180763071763C602C5200CC102C423034A200416632002B761A61DCD5746CC01923CA5B6A5A108250D27BBC102C62506A608B7A520B081001AFF001B01001EFF0080FF0083FF0002FF0001FFFFA5FF0037FFFF1D003108000100000200000300000400000500000600000700000800000900000A00000C00000E00001000001200001400001600001800001A00001C00001E00002000002200002400002600002800002A00002C00002E00003000003200003700003C00004100004600004B00005000005500005A00005F00010000011900013200014B000200000232000300000400000500000732000A000000014600032900050B000651000834000A16000B5C000D3F000F2100110300142C001755001B19001E4200220700252F002858002C1D002F4600330A00363300395C003D2000404900440E004736004A5F004E2400514C005511005D45010214010A48011318011B4C01241B012C4F01351F013D52014622020C5D02373302620A032844041955050B020651240833460C4D37110328139081¬ +54635¬ +1¬ +Sample Data¬ diff --git a/from_timex/copyme01.zap b/from_timex/copyme01.zap new file mode 100644 index 0000000..f25289f --- /dev/null +++ b/from_timex/copyme01.zap @@ -0,0 +1,25 @@ +TDL0807962¬ +CopyMe Game¬ +copyme14¬ +CopyMe is a memory game. The watch displays a sequence of 0's that you must duplicate using the watch's buttons. If you are successful, the watch adds another step to the sequence. Make it through 15 steps and you win! + +TIP: Download to your watch faster: Download a WristApp once, then do not send it again. It stays in the watch!¬ +WATCHAPP.HLP¬ +112¬ +none¬ +Timex Data Link 150 Watch¬ +CC0271CC0276CC033B819D9D819D9DD6025D81CC017E001D0C00161B1D1D140E1D1D24241018180D2424100A160E242405180A17181D243D2437241018240C18192224160E25241C181B1B2224240006241C1D0E191C1A1215150E1701040F010101010101010101010101010101B691A11B2713A11A2734A11E273FA1A52744A185274FCC025CC604A126163F633F643F65A617CD587EA61CCD58A8A628CD5845814FC704A1A638CD4E8981CD577AB665A1002706A602B7652000CD0368CD0372CC025CB665A1012606CD58D2CD58D8CC025CC604C3A1042716A101262019931390A6FFB767A600B766A638CD4E898109680B0A6808CD4E80168FCD4E4ACD0368B665A100270AA1022714A1012725203BCD02E73F61C6016DC7016C4FB766C604C3A1002609A601B765CD0283201DCD03722018CE04C3CD03ADBE61D6016FC104C32605CD029E2003CD02D481001AFF001B01001EFF0038FFFF85FF00A5FF001DA6C0B7968119931390A6FFB767A600B76681A6FACD0323CD577ACD03CCA6E1CD0323CD03803F61A63ECD5845813C61B661C1016C2627C6016C4CC7016CC6016CC1016E2313A600B765A656CD587ECD58D8A636CD58452003CD02832005A622CD584581A646CD5845A6FACD0323A603B7653F67129081B6B0BBB1BBB2BBB3BBB4BBB8BBAFBBAEB7625FBF64B662A401B763B662A40244B863443662B662A403A10125014CD7016FBE645CBF64C3016E25DA81AEFA5A26FD4A26F84FC77FF081A6FACD0323A6FACD032381036704A61D2002A600B766BE61DE016FCD03AD3C67B667A10C26111390A6FFB767A600B765A600B766CD03728115921F92CD4E8E189381CD58D8A630CD587EA636CD584581CD58D2CD58D85FBF64A67DCD0323BE64D6016F97CD03ADA67DCD0323CD58D2CD58D8BE645CBF64C3016C25DD81A3022304A6462002A614A300270BA3042707BE66CD57452005BE66CD570D81CD5787A64ECD5845C6016C5FA10A2505A00A5C20F7B763A3002602AE24A647CD56D5BE63A63DCD56D581¬ +41136¬ +0¬ +CopyMe Game¬ +copyme24¬ +CopyMe is a memory game. The watch displays a sequence of 0s and you must duplicate that sequence using the watch's buttons. If you are successful, the watch adds another step to the sequence. Make it through 15 steps and you win! + +TIP: Download to your watch faster: Download a WristApp once, then do not send it again. It stays in the watch!¬ +WATCHAPP.HLP¬ +112¬ +none¬ +Timex Data Link 150s Watch¬ +CC0359CC025DCC0322819D9D819D9DD603E281CC017E001D0C00161B1D1D140E1D1D24241018180D2424100A160E242405180A17181D243D2437241018240C18192224160E25241C181B1B2224240006241C1D0E191C1A1215150E1701040F010101010101010101010101010101B691A11B2713A11A2734A11E273FA1A52744A185274FCC025CC604A126163F633F643F65A617CD577FA61CCD57A9A628CD5746814FC704A1A638CD4E7881CD5AA0B665A1002706A602B7652000CD034FCD035ECC025CB665A1012606CD57D3CD57D9CC025CC604C3A1042716A101262019931390A6FFB767A600B766A638CD4E788109680B0A6808CD4E6F168FCD4E39CD034FB665A100270AA1022714A1012725203BCD02CE3F61C6016DC7016C4FB766C604C3A1002609A601B765CD026A201DCD035E2018CE04C3CD0399BE61D6016FC104C32605CD02852003CD02BB8119931390A6FFB767A600B76681A6FACD030ACD5AA0CD03B8A6E1CD030ACD036C3F61A63ECD5746813C61B661C1016C2627C6016C4CC7016CC6016CC1016E2313A600B765A656CD577FCD57D9A636CD57462003CD026A2005A622CD574681A646CD5746A6FACD030AA603B7653F67129081B6B0BBB1BBB2BBB3BBB4BBB8BBAFBBAEB7625FBF64B662A401B763B662A40244B863443662B662A403A10125014CD7016FBE645CBF64C3016E25DA81AEFA5A26FD4A26F84FC77FF081A6FACD030AA6FACD030A81036704A61D2002A600B766BE61DE016FCD03993C67B667A10C26111390A6FFB767A600B765A600B766CD035E8115921F92CD4E7D189381A6C0B79681CD57D9A630CD577FA636CD574681CD57D3CD57D95FBF64A67DCD030ABE64D6016F97CD0399A67DCD030ACD57D3CD57D9BE645CBF64C3016C25DD81A3022304A6442002A612A300270BA3042707BE66CD5A6B2005BE66CD5A3381CD5AADA64ECD5746C6016C5FA10A2505A00A5C20F7B763A3002602AE24A650CD59E7BE63A64FCD59E781001AFF001B01001EFF0038FFFF85FF00A5FF001D¬ +40984¬ +0¬ diff --git a/from_timex/golf01.zap b/from_timex/golf01.zap new file mode 100644 index 0000000..49c4247 --- /dev/null +++ b/from_timex/golf01.zap @@ -0,0 +1,29 @@ +TDL0704962¬ +Golf¬ +golf12¬ +The Timex Golf WristApp is a golfer's electronic scorecard. Enter the number of strokes per hole and let the watch calculate the total for the round and the front and back nine. + +You can recall your totals or hole scores at any time. + +TIP: Download to your watch faster: Download a WristApp once, then do not send it again. It stays in the watch!¬ +WATCHAPP.HLP¬ +111¬ +none¬ +Timex Data Link 150 Watch¬ +CC037DCC037C819D9D819D9D819D9DD602AC81CC01F5000C130E0A171D1D1000130F1D1800181D1D1D051100181D1D241C0C181B0E2424181E1D2431241217242424011C1D242424242402170D2424242424031B0D2424242424041D112424242424051D112424242424061D112424242424071D112424242424081D112424242424091D112424242401001D112424242401011D112424242401021D112424242401031D112424242401041D112424242401051D112424242401061D112424242401071D112424242401081D11242401010101010101010101010101010101010101010101B691A11B2616C604A1260711611761CC03644FC704A1A637CD4E8981A11F2602206EA11E2608CD4E7ACD03812062A11A2605CD579F2059A182264E0461201061CD577AA606CD5882A624B71D121EA624B71D121EA617CD58A8A62FCC58451161CD03DE4CA11323014FB762CD03A3BE635AB662D701E397CD031ECD0324A638CD4E8906613116612007A1A22606016126CC02CFA100260413612006A10326171261B663AE120361064A2A069F2003CD6B0DB763CD02D881001AFF001B84001FFF001EFF0000FF0003FF0082010001FFFFA2FF0038FF0037FFFF1DCD0353AD50AD702000BE6327145AD601E3B762046102AD5FAD2F06612B166120DF1561CD58D8A624B71D171EA637CD5845CE01E0AD19CE01DFCD5951CD59100661061661AD3EAD0D81BE62AD022053CD5951CC5930BE642210AE1DC65E29CD570DBE65CD5951CC5900C65E29CD570DBE65CD593ECC5900A624B71D161E1461A629CC58A8A624B71D131EA62EB71D181EA623CC587ECD577AA61DCD58A8A648CC584CB6634AAE0842AB3FCC584581A6C0B7963F613F623F643F654FC701DFC701E0C701E1C701E2B7635F4FD701E35CA31225F881B663A1092211B662CB01E1B066C701E1AD2EC701DF200FB662CB01E2B066C701E2AD1DC701E03F64C601E2CB01E1A16323063C64A06420F6B76581B662B76681A1632302A06481¬ +16971¬ +0¬ +Golf¬ +golf22¬ +The Timex Golf WristApp is a golfer's electronic scorecard. Enter the number of strokes per hole and let the watch calculate the total for the round and the front and back nine. + +You can recall your totals or hole scores at any time. + +TIP: Download to your watch faster: Download a WristApp once, then do not send it again. It stays in the watch!¬ +WATCHAPP.HLP¬ +111¬ +none¬ +Timex Data Link 150s Watch¬ +CC02A2CC03A2819D9D819D9D819D9DD6037F81CC02C8000C130E0A171D1D1000130F1D1800181D1D1D051100181D1D241C0C181B0E2424181E1D2431241217242424011C1D242424242402170D2424242424031B0D2424242424041D112424242424051D112424242424061D112424242424071D112424242424081D112424242424091D112424242401001D112424242401011D112424242401021D112424242401031D112424242401041D112424242401051D112424242401061D112424242401071D112424242401081D11242401010101010101010101010101010101010101010101CD0279AD50AD702000BE6327145AD601E3B762046102AD5FAD2F06612B166120DF1561CD57D9A622B71D171EA637CD5746CE01E0AD19CE01DFCD5852CD58110661061661AD3EAD0D81BE62AD022053CD5852CC5831BE642210AE1DC65E32CD5A33BE65CD5852CC5801C65E32CD5A33BE65CD583FCC5801A622B71D161E1461A629CC57A9A622B71D131EA62CB71D181EA623CC577FCD5AA0A61DCD57A9A648CC574DB6634AAE0842AB3FCC5746A6C0B7963F613F623F643F654FC701DFC701E0C701E1C701E2B7635F4FD701E35CA31225F881B691A11B2616C604A1260711611761CC028A4FC704A1A637CD4E7881A11F2602206EA11E2608CD4E69CD02A62062A11A2605CD5ACB2059A182264E0461201061CD5AA0A606CD5783A622B71D121EA622B71D121EA617CD57A9A62FCC57461161CD03DE4CA11323014FB762CD03A3BE635AB662D701E397CD0244CD024AA638CD4E7806613116612007A1A22606016126CC01F5A100260413612006A10326171261B663AE120361064A2A069F2003CD6B16B763CD01FE81001AFF001B84001FFF001EFF0000FF0003FF0082010001FFFFA2FF0038FF0037FFFF1D81B663A1092211B662CB01E1B066C701E1AD2EC701DF200FB662CB01E2B066C701E2AD1DC701E03F64C601E2CB01E1A16323063C64A06420F6B76581B662B76681A1632302A06481¬ +22936¬ +0¬ diff --git a/from_timex/melody17.zap b/from_timex/melody17.zap new file mode 100644 index 0000000..09d9c4a --- /dev/null +++ b/from_timex/melody17.zap @@ -0,0 +1,25 @@ +TDL0724962¬ Applet file header +Melody Tester¬ Applet friendly name +MELODY18¬ Applet version # +The Melody tester is used for testing Watch Tones on the watch. It sure beats waiting around for the appointment beep to go off. + +TIP: Download your watch faster: Download a WristApp once, then do not send it again. It stays in the watch!¬ +WATCHAPP.HLP¬ Applet help filename +106¬ +none¬ Applet's parent's app name (if it exists - 'none' if it doesn't) +Timex Data Link 150 Watch¬ +CC02B3819D9D819D9D819D9D819D9DD601D681CC020A00CC02BA291D110E0A171D050019150D1D180E05180E17241C181E170D24240B1E1D1D1817240B0E0E193F1B0E1D1E1B17241D18241D12160E3F11181E1B1522240C1112160E3F0C18170F121B160A1D1218173F0A19191812171D160E171D240B0E0E193F0A150A1B16240B0E0E193F191B18101B0A16240D18201715180A0D3F0E211D1B0A3F0C181616240E1B1B181B3F0C181616240D18170E3F7B6A505D354186979DA8868583C4C1C28788898A001B84001AFF001FFF001EFF0084FF00A4FF00808301838301820100A2FF0001FF0038FFFF3984001D00A0FF00A3FF001F82011DB69B26021561128FB691A1A22731A11A272DA11F2729A11B272AA11E2749A1A4274FA1392753A1012753056103CD4F3A1561B691A1842758A1822758CC55451061CC02F1C604A126141061CD577AA621CD587EA627CD58A8A648CC584C4FC704A1A638CD4E8981BE62D601CCB79B146181016106A639CD4E8981CC55490461090968DEA6C2B79B20D81561CD4F3A20D10161E781A606CD5882A624B71D121EA61BCD58A8A62DCC58451E963F623F6181B691A11F2714056105CD4F3A1561B691A183270413612002126103610BBE6227035A200EAE09200ABE62A30927035C20015FBF62CC02F101610A1161CD577AA621CD587EBE62D601C2B7633F64BE63D60110BE64D704D23C643C63A13F26EECD5522CC5545¬ +64579¬ +0¬ No data +Melody Tester¬ Applet friendly name +MELODY28¬ Applet version # +The Melody tester is used for testing Watch Tones on the watch. It sure beats waiting around for the appointment beep to go off. + +TIP: Download your watch faster: Download a WristApp once, then do not send it again. It stays in the watch!¬ +WATCHAPP.HLP¬ Applet help filename +106¬ +none¬ Applet's parent's app name (if it exists - 'none' if it doesn't) +Timex Data Link 150s Watch¬ +CC02EA819D9D819D9D819D9D819D9DD601D681CC024100CC020A291D110E0A171D050019150D1D180E05180E17241C181E170D24240B1E1D1D1817240B0E0E193F1B0E1D1E1B17241D18241D12160E3F11181E1B1522240C1112160E3F0C18170F121B160A1D1218173F0A19191812171D160E171D240B0E0E193F0A150A1B16240B0E0E193F191B18101B0A16240D18201715180A0D3F0E211D1B0A3F0C181616240E1B1B181B3F0C181616240D18170E3F7B6A505D354186979DA8868583C4C1C28788898A001B84001AFF001FFF001EFF0084FF00A4FF00808301838301820100A2FF0001FF0038FFFF3984001D00A0FF00A3FF001F82011DB691A11F2714056105CD4F291561B691A183270413612002126103610BBE6227035A200EAE09200ABE62A30927035C20015FBF62CC02F1B69B26021561128FB691A1A22731A11A272DA11F2729A11B272AA11E2749A1A4274FA1392753A1012753056103CD4F291561B691A1842758A1822758CC55341061CC02F1C604A126141061CD5AA0A621CD577FA627CD57A9A648CC574D4FC704A1A638CD4E7881BE62D601CCB79B146181016106A639CD4E7881CC55380461090968DEA6C2B79B20D81561CD4F2920D10161E781A606CD5783A622B71D121EA61BCD57A9A62DCC57461E963F623F618101610A1161CD5AA0A621CD577FBE62D601C2B7633F64BE63D60110BE64D704D23C643C63A13F26EECD5511CC5534¬ +6781¬ +0¬ No data \ No newline at end of file diff --git a/from_timex/note13.zap b/from_timex/note13.zap new file mode 100644 index 0000000..b96a6d1 --- /dev/null +++ b/from_timex/note13.zap @@ -0,0 +1,31 @@ +TDL0321962¬ +Note¬ +NOTE13¬ +The Timex Note WristApp is used for copying up to 255 characters of text (30-40 words) to the watch. It is useful for storing directions, etc. that need to be readily accessable. + +Press Input/Configure to modify the note for download. + +TIP: Download your watch faster: Download a WristApp once, then do not send it again. It stays in the watch!¬ +watchapp.hlp¬ +100¬ +note.exe¬ +Timex Data Link 150 Watch¬ +CC01BBCC01CECC01E2819D9D819D9DD6014381CC016500CC029B1A1D1D1D1D1D1D1D1500180E1D1D1D1D1D1D1D1D1500180E1D001B84001AFF001FFF0080FF0183FF0102FF0001FFFF38FFFF1D00A0FF00A3FF001D128FB691A11B2714A11A2725A11F2723A1022733AD62096102146181C604A126061061AD442075A638CD4E894FC704A1811061CD022605610713908115611961A604B7661290810161023F640461ED14611390CC0226A6FF4C97DE02B9A33F26F7B7673F61A6C0B7960961051961146181046108B667B7641361176181CE04C4A30D2717CE04C4A30827031390813A662609AD2D3C660261023C6681CD577AA61BCD587EA61BAB06CD58A8A648CC584CCD577AA61BAB0CCD587EA61BAB12CC58A801610F1161ADE808610804612B3F64036126046123B667A108231D06610EB667B16426043F6420103C64200CBE642606B667B76420023A64B664B7633F6203610AB664BA622604A604B766BE62D65E32B765BE63DE02B9A33F260CB667A1082313A6FFB763B665CD56D53C633C62BE62A30826D781B691A1832704176120021661056104186115611261A604B7661290CC02261D11121C24121C241D110E240D0E0F0A1E151D240D0A1D0A240F181B241D110E240D0E0F0A1E151D240A1919241D110A1D241C1E1919181B1D1C241D110E240D0E0F0A1E151D24201B121C1D0A1919240F181B2422181E30241D110E240D0E0F0A1E151D241E1C0E1B323F¬ +62974¬ +1¬ +This is the default data for the default app that supports the default WristApp for you, the default user.¬ +Note¬ +NOTE23¬ +The Timex Note WristApp is used for copying up to 255 characters of text (30-40 words) to the watch. It is useful for storing directions, etc. that need to be readily accessable. + +Press Input/Configure to modify the note for download. + +TIP: Download your watch faster: Download a WristApp once, then do not send it again. It stays in the watch!¬ +watchapp.hlp¬ +100¬ +note.exe¬ +Timex Data Link 150s Watch¬ +CC01BBCC01CECC01E2819D9D819D9DD6014381CC016500CC029B1A1D1D1D1D1D1D1D1500180E1D1D1D1D1D1D1D1D1500180E1D001B84001AFF001FFF0080FF0183FF0102FF0001FFFF38FFFF1D00A0FF00A3FF001D128FB691A11B2714A11A2725A11F2723A1022733AD62096102146181C604A126061061AD442075A638CD4E784FC704A1811061CD022605610713908115611961A604B7661290810161023F640461ED14611390CC0226A6FF4C97DE02B9A33F26F7B7673F61A6C0B7960961051961146181046108B667B7641361176181CE04C4A30D2717CE04C4A30827031390813A662609AD2D3C660261023C6681CD5AA0A61BCD577FA61BAB06CD57A9A648CC574DCD5AA0A61BAB0CCD577FA61BAB12CC57A901610F1161ADE808610804612B3F64036126046123B667A108231D06610EB667B16426043F6420103C64200CBE642606B667B76420023A64B664B7633F6203610AB664BA622604A604B766BE62D65E3BB765BE63DE02B9A33F260CB667A1082313A6FFB763B665CD59E73C633C62BE62A30826D781B691A1832704176120021661056104186115611261A604B7661290CC02261D11121C24121C241D110E240D0E0F0A1E151D240D0A1D0A240F181B241D110E240D0E0F0A1E151D240A1919241D110A1D241C1E1919181B1D1C241D110E240D0E0F0A1E151D24201B121C1D0A1919240F181B2422181E30241D110E240D0E0F0A1E151D241E1C0E1B323F¬ +25581¬ +1¬ +This is the default data for the default app that supports the default WristApp for you, the default user.¬ diff --git a/from_timex/pulse01.zap b/from_timex/pulse01.zap new file mode 100644 index 0000000..6655674 --- /dev/null +++ b/from_timex/pulse01.zap @@ -0,0 +1,29 @@ +TDL0704962¬ +Pulse¬ +pulse11¬ +The Timex Pulse WristApp gives you a quick estimate of your pulse rate. Feel for your pulse. When the watch beeps, start counting beats. When you count ten, press a button, and the watch calculates your pulse. + +It's a great workout companion. + +TIP: Download to your watch faster: Download a WristApp once, then do not send it again. It stays in the watch!¬ +WATCHAPP.HLP¬ +113¬ +none¬ +Timex Data Link 150 Watch¬ +CC0383CC037ECC038A819D9D819D9DD602FF81CC016400CC03C61D161913050E1D0B0E0A18051D24240B19162424243D370B0E101217243C333D371C1D18191C1D0A170D240B2201010101010101010101010101128FB691A11B2616C604A126051561CC034A11614FC704A1A637CD4E8981A10126050761ED2027A11E26041461201FA11A2605CD577A2016A182260601610181200CA100261F046102201407610CCD58D2146117611961CC032A016102200AA638CD4E8981A103260D04610220E007610220DB00610181AE044FE762D7015ED70156D7015A5A26F2CD58D8CD4E80139011611661036103CC02FCB667AE6442C7015FCF0160C601632723C6015FA1FF250E4FC7015FC60160AB01C701602005AB01C7015FC601634AC7016320DBA660C70157A6EAC701583F62C6015748C70157C6015849C70158C6015949C70159C6015A49C7015AC6015B49C7015BC6015C49C7015CC6015D49C7015DC6015E49C7015E3863396439653966C6015BC0015FC6015CC20160C6015DC20161C6015EC201622B39C6015BC0015FC7015BC6015CC20160C7015CC6015DC20161C7015DC6015EC20162C7015EA601BB63B7634FB964B7644FB965B7654FB966B7663C62A620B1622303CC023DB66426154FB764B663A1642514A064B763B664AB01B76420EEA637B763A602B764CC0357001AFF001B01001EFF0000FF0003FF0001FF0082FF0037FFFF3886011D001FFF0138FF0101FF0039FF001DA621CD58A8AE0ACD5951CD58F0016104A6372002A62FCC5845CD577AA63F20F6CD577AA61BCD58A8A648CC584CCD58D81661BE64230DCD5951CD5910BE63CD593E2005BE63CD5951CD5920A61BCD587EA62720C21761116181A6C0B7963F61810A61091A61C60163AB0D20071B61C60163AB0CC70163A16425104FC70163B667A1FF24043C6720021261810A61029881998125041B6120021A615C81B691A1382609106118611461CC0343A11F2617CD4E7A1B6113614FC70163B7671290CD01B2A639CD4E8981¬ +62744¬ +0¬ +Pulse¬ +pulse21¬ +The Timex Pulse WristApp gives you a quick estimate of your pulse rate. Feel for your pulse. When the watch beeps, start counting beats. When you count ten, press a button, and the watch calculates your pulse. + +It's a great workout companion. + +TIP: Download to your watch faster: Download a WristApp once, then do not send it again. It stays in the watch!¬ +WATCHAPP.HLP¬ +113¬ +none¬ +Timex Data Link 150s Watch¬ +CC037ECC03B0CC03B5819D9D819D9DD6038581CC018F00CC01641D161913050E1D0B0E0A18051D24240B19162424243D370B0E101217243C333D371C1D18191C1D0A170D240B2201010101010101010101010101B691A1382609106118611461CC0343A11F2617CD4E691B6113614FC70163B7671290CD01DDA639CD4E7881128FB691A11B2616C604A126051561CC034A11614FC704A1A637CD4E7881A10126050761ED2027A11E26041461201FA11A2605CD5AA02016A182260601610181200CA100261F046102201407610CCD57D3146117611961CC032A016102200AA638CD4E7881A103260D04610220E007610220DB00610181AE044FE762D7015ED70156D7015A5A26F2CD57D9CD4E6F139011611661036103CC0327B667AE6442C7015FCF0160C601632723C6015FA1FF250E4FC7015FC60160AB01C701602005AB01C7015FC601634AC7016320DBA660C70157A6EAC701583F62C6015748C70157C6015849C70158C6015949C70159C6015A49C7015AC6015B49C7015BC6015C49C7015CC6015D49C7015DC6015E49C7015E3863396439653966C6015BC0015FC6015CC20160C6015DC20161C6015EC201622B39C6015BC0015FC7015BC6015CC20160C7015CC6015DC20161C7015DC6015EC20162C7015EA601BB63B7634FB964B7644FB965B7654FB966B7663C62A620B1622303CC0268B66426154FB764B663A1642514A064B763B664AB01B76420EEA637B763A602B764CC0357A621CD57A9AE0ACD5852CD57F1016104A6372002A62FCC5746CD5AA0A63F20F6CD5AA0A61BCD57A9A648CC574DCD57D91661BE64230DCD5852CD5811BE63CD583F2005BE63CD5852CD5821A61BCD577FA62720C2A6C0B7963F6181001AFF001B01001EFF0000FF0003FF0001FF0082FF0037FFFF3886011D001FFF0138FF0101FF0039FF001D17611161810A61091A61C60163AB0D20071B61C60163AB0CC70163A16425104FC70163B667A1FF24043C672002126181¬ +13083¬ +0¬ diff --git a/from_timex/quick13.zap b/from_timex/quick13.zap new file mode 100644 index 0000000..5a6681c --- /dev/null +++ b/from_timex/quick13.zap @@ -0,0 +1,31 @@ +TDL1109952¬ Applet file header +Preset Timer¬ Applet friendly name +QUICK13¬ Applet version # +The Preset Countdown Timer +1) Allows for quick selection of the following preset times: 5, 10, 15 20, 30, 45, or 60 minutes. +2) Counts down from the selected preset time to zero. +3) Beeps when zero is reached. + +TIP: Download your watch faster: Download a WristApp once, then do not send it again. It stays in the watch!¬ +watchapp.hlp¬ Applet help filename +103¬ +none¬ Applet's parent's app name (if it exists - 'none' if it doesn't) +Timex Data Link 150 Watch¬ +CC026BCC027CCC0283819D9D819D9DD6014F81CC01DB00CC018517CC034D253C333D371C1D18193C371B0E1C0E1D241A1E120C141C0E1D050A0F141E2D0000001AFF001B84001FFF0001FFFF06FF0037840238FFFF1D001C08011EFF010503013AFFFE1D020284021A84021FFF0206FF0239FF001DB691A11C271DA11E270A066111C604C3A10427093F663F64A63ACD4E89811761CC4F3A1661A687B79BCD5787AD0DC6014EB766C60067B764CC02EDCD579FA6A2CC58823F65C60067B764C6014EB7663F631161139081B691A11B2708A106272214612048C604A1270A4FC704A1A638CD4E8981CD577A1461A6A2CD58ACA648CC584CC604C3A100270EA103271A029005A637CD4E892015039004ADB5200E016102ADA0AD3A20050290F0AD970561041561AD88CD02ED02901F006115C6014EB166260EC60067B16426071D61A6D0CC584C1C61A627CC58451D61A61FCC58451290B626B762814FB761C700674CC7014EA6C0B796CC01C8036103CD03C48102900181B62697B1622504B06220043062BB62BF62BB63A1632203B76381A064B7631961B665271D18613A652629B664BA66262310611390C604C1A1072705A60BCD4F4D81B66427063A64A63B20063A66A63BB764B765CE04C4A30826BF0461BC096103CC02F1CC02EDAD3EAD16BE6502610BB666BA642605CD59512003CD593ECC5930BE64B666260FBE642610A624B71D151ECD595C200ECD593E2003CD5951A624B71D141ECC5920BE6602610FBE66260BA636B71D171ECD595C2009CD5951A636B71D161ECC5910B691A11A272AA1022734A11F2757A10627531A96CD01C8B6642606A6FFB763200F3F63BE63D60147B16427043C6320F3CD01C0A62FCD5845B691A11A27240D610A1D61B663A1FF270D20023C63BE63D60147B764260AA601B766A6FFB76320023F66CC02EDA639CD4E89AD0BC604C3A1002603CD0264811B96B666C7014EB664C700671361CC01C8B6632706AE64A6092004AE66A607CC55BF¬ Applet Code +27199¬ CRC +0¬ No data +Preset Timer¬ Applet friendly name +QUICK23¬ Applet version # +The Preset Countdown Timer +1) Allows for quick selection of the following preset times: 5, 10, 15 20, 30, 45, or 60 minutes. +2) Counts down from the selected preset time to zero. +3) Beeps when zero is reached. + +TIP: Download your watch faster: Download a WristApp once, then do not send it again. It stays in the watch!¬ +watchapp.hlp¬ Applet help filename +103¬ +none¬ Applet's parent's app name (if it exists - 'none' if it doesn't) +Timex Data Link 150s Watch¬ +CC02FFCC0310CC014F819D9D819D9DD603B081CC026F00CC021917CC0317253C333D371C1D18193C371B0E1C0E1D241A1E120C141C0E1D050A0F141E2D000002900181B62697B1622504B06220043062BB62BF62BB63A1632203B76381A064B7631961B665271D18613A652629B664BA66262310611390C604C1A1072705A60BCD4F3C81B66427063A64A63B20063A66A63BB764B765CE04C4A30826BF0461BC096103CC01BDCC01B9AD3EAD16BE6502610BB666BA642605CD58522003CD583FCC5831BE64B666260FBE642610A622B71D151ECD585D200ECD583F2003CD5852A622B71D141ECC5821BE6602610FBE66260BA634B71D171ECD585D2009CD5852A634B71D161ECC5811B691A11C271DA11E270A066111C604C3A10427093F663F64A63ACD4E78811761CC4F291661A687B79BCD5AADAD0DC6014EB766C60067B764CC01B9CD5ACBA6A2CC57833F65C60067B764C6014EB7663F631161139081B691A11B2708A106272214612048C604A1270A4FC704A1A638CD4E7881CD5AA01461A6A2CD57ADA648CC574DC604C3A100270EA103271A029005A637CD4E782015039004ADB5200E016102ADA0AD3A20050290F0AD970561041561AD88CD01B902901F006115C6014EB166260EC60067B16426071D61A6D0CC574D1C61A627CC57461D61A61FCC57461290B626B762814FB761C700674CC7014EA6C0B796CC025C036103CD038E81B691A11A272AA1022734A11F2757A10627531A96CD025CB6642606A6FFB763200F3F63BE63D60147B16427043C6320F3CD0254A62FCD5746B691A11A27240D610A1D61B663A1FF270D20023C63BE63D60147B764260AA601B766A6FFB76320023F66CC01B9A639CD4E78AD0BC604C3A1002603CD02F8811B96B666C7014EB664C700671361CC025CB6632706AE64A6092004AE66A607CC55AE001AFF001B84001FFF0001FFFF06FF0037840238FFFF1D001C08011EFF010503013AFFFE1D020284021A84021FFF0206FF0239FF001D¬ +16566¬ +0¬ No data \ No newline at end of file diff --git a/from_timex/timer13.zap b/from_timex/timer13.zap new file mode 100644 index 0000000..fd81d53 --- /dev/null +++ b/from_timex/timer13.zap @@ -0,0 +1,31 @@ +TDL1109952¬ +Adjustable Timer¬ +TIMER13¬ +The Adjustable Countdown Timer +1) Allows setting of a time to be counted from 1 minute to 100 hours, in 1 minute increments. +2) Counts down from the selected time to zero. +3) Beeps when zero is reached. + +TIP: Download your watch faster: Download a WristApp once, then do not send it again. It stays in the watch!¬ +watchapp.hlp¬ +102¬ +none¬ +Timex Data Link 150 Watch¬ +CC0253CC0264CC026B819D9D819D9DD6014081CC01C900CC017317CC0338253C333D371C1D18193C371B0E1C0E1D2400001AFF001B84001FFF0001FFFF06FF0037FF0238FFFF1D001C08011EFF010503013AFFFE1D0286FF02A6FF021AFF0239FF001DB691A11C271DA11E270A066111C604C3A10427093F663F64A63ACD4E89811761CC4F3A1661A687B79BCD5787AD0DC6013FB766C60067B764CC02D5CD579FA6A2CC58823F65C60067B764C6013FB7663F631161139081B691A11B2708A106272214612048C604A1270A4FC704A1A638CD4E8981CD577A1461A6A2CD58ACA648CC584CC604C3A100270EA103271A029005A637CD4E892015039004ADB5200E016102ADA0AD3420050290F0AD970561041561AD88CD02D502901B006113C6013FB166260CC60067B1642605A6D0CC584CA627CC5845A61FCC58451290B626B762814FB761C700674CC7013FA6C0B796CC01B6036103CD03BC8102900181B62697B1622504B06220043062BB62BF62BB63A1632203B76381A064B7631961B665271D18613A652629B664BA66262310611390C604C1A1072705A60BCD4F4D81B66427063A64A63B20063A66A63BB764B765CE04C4A30826BF0461BC096103CC02D9CC02D5AD41AD16BE6502610BB666BA642605CD59512003CD593ECC5930BE64026113B666260FBE642610A624B71D151ECD595C200ECD593E2003CD5951A624B71D141ECC5920BE6602610FBE66260BA636B71D171ECD595C2009CD5951A636B71D161ECC5910128FB691A186272CA1A627211261A11A26070B61044FC7013F1A961B61CD01B63F63CD01AEA650CD584CCD02D5129FAD70149081C604C3A1002720A1032718A102273CB66327043A6320023C63CD02D5139FAD4D149081119F2002109F4FC704F4B663270BA63BC704F5AE64A6072009A663C704F5AE66A605CD57C7189081A639CD4E89B666BA642606A601B7661A611B96B666C7013FB664C700671361CC01B6B6632706AE64A6092004AE66A607CC55BF¬ +48395¬ +0¬ +Adjustable Timer¬ +TIMER23¬ +The Adjustable Countdown Timer +1) Allows setting of a time to be counted from 1 minute to 100 hours, in 1 minute increments. +2) Counts down from the selected time to zero. +3) Beeps when zero is reached. + +TIP: Download your watch faster: Download a WristApp once, then do not send it again. It stays in the watch!¬ +watchapp.hlp¬ +102¬ +none¬ +Timex Data Link 150s Watch¬ +CC02EDCC02FECC0140819D9D819D9DD603B781CC026300CC020D17CC0305253C333D371C1D18193C371B0E1C0E1D240002900181B62697B1622504B06220043062BB62BF62BB63A1632203B76381A064B7631961B665271D18613A652629B664BA66262310611390C604C1A1072705A60BCD4F3C81B66427063A64A63B20063A66A63BB764B765CE04C4A30826BF0461BC096103CC01AECC01AAAD41AD16BE6502610BB666BA642605CD58522003CD583FCC5831BE64026113B666260FBE642610A622B71D151ECD585D200ECD583F2003CD5852A622B71D141ECC5821BE6602610FBE66260BA634B71D171ECD585D2009CD5852A634B71D161ECC5811B691A11C271DA11E270A066111C604C3A10427093F663F64A63ACD4E78811761CC4F291661A687B79BCD5AADAD0DC6013FB766C60067B764CC01AACD5ACBA6A2CC57833F65C60067B764C6013FB7663F631161139081B691A11B2708A106272214612048C604A1270A4FC704A1A638CD4E7881CD5AA01461A6A2CD57ADA648CC574DC604C3A100270EA103271A029005A637CD4E782015039004ADB5200E016102ADA0AD3420050290F0AD970561041561AD88CD01AA02901B006113C6013FB166260CC60067B1642605A6D0CC574DA627CC5746A61FCC57461290B626B762814FB761C700674CC7013FA6C0B796CC0250036103CD038981128FB691A186272CA1A627211261A11A26070B61044FC7013F1A961B61CD02503F63CD0248A650CD574DCD01AA129FAD70149081C604C3A1002720A1032718A102273CB66327043A6320023C63CD01AA139FAD4D149081119F2002109F4FC704F4B663270BA63BC704F5AE64A6072009A663C704F5AE66A605CD56C8189081A639CD4E78B666BA642606A601B7661A611B96B666C7013FB664C700671361CC0250B6632706AE64A6092004AE66A607CC55AE001AFF001B84001FFF0001FFFF06FF0037FF0238FFFF1D001C08011EFF010503013AFFFE1D0286FF02A6FF021AFF0239FF001D¬ +37401¬ +0¬ diff --git a/from_timex/wksiso11.zap b/from_timex/wksiso11.zap new file mode 100644 index 0000000..d736fe4 --- /dev/null +++ b/from_timex/wksiso11.zap @@ -0,0 +1,33 @@ +TDL0326962¬ +Week of the Year (International)¬ +WKSISO11¬ +1) Displays what week of the year it is. +2) Displays what day of the year it is. +3) Displays how many days are left in the year. + +The International version uses Monday as the first day of the week. + +TIP: Download your watch faster: Download a WristApp once, then do not send it again. It stays in the watch!¬ +watchapp.hlp¬ +104¬ +none¬ +Timex Data Link 150 Watch¬ +CC01CFCC01DD819D9D819D9D819D9DD6014881CC015C001D0D0A180E1D200E0E1424242424240D0A2224242424150E0F1D00000000000000001AFF001B84001FFF0006FF0037FFFF38FFFF1D128FCD01DEB691A11B2710A106272DCD579F1561CC03520461F881C604A12612CD58D2CD579F1461A617CD58A8A648CC584CA638CD4E894FC704A181C604C3A10227D41561A100270EA1032715A1012605A637CD4E8981C601414CA102230F4F200CC601414AA1002B022002A602C70141209F1E961C9619961B96A600C7014181819BAEB005A902AEB9E602C70145E603C70146E604C701479A813F633F64AE01BF62C3014522232716CD68E8B662C704F9C60147C704FACD68F9CD68F22003C60146AD073C62BE6220D881BB64B76424023C63813F633F64CD68E8C60145C704F9C60147C704FACD68F9CD68F2C00146B764CE01455CBF62A30C221CCD68E8B662C704F9C60147C704FACD68F9CD68F2ADB93C62BE6220E081CD01F7C60145B765C60146B766C60147B767AE659BCD68D59AC70142A601B765B766C60147B767AE659BCD68D59A97D603C7C70143D603CEB762A3022706A3052710201DC60147A5032616A635C70143200FC601474AA5032607A635C70143B762CE0142B664DB03C0B76424023C63B664A1082404B663271BCE0143B662CD6B0D4D2602A601B762B664A007B76424DF3A6320DB3F63B662B764813F653F663F67B6632606B664A164250E3C65B664A064B76424EC3A6320E8B664A10A250A3C66B664A00AB76420F0B664B767B665260AAE24BF65B6662602BF6681CD58D8C60141A101270EA102271BA61DCD5845CD02762008A625CD5845CD01F7A605C70144AD292011A629CD5845CD0231A600C70144AD182000CE0147CD67CCCE0145CD67D0CE0146CD67D4CD5AAB81CD03113F62B662CB014497D65E32BE62EE65CD56D53C62B662A10325E881060504030201003434343535343401010101353434¬ +35393¬ +0¬ +Week of the Year (International)¬ +WKSISO21¬ +1) Displays what week of the year it is. +2) Displays what day of the year it is. +3) Displays how many days are left in the year. + +The International version uses Monday as the first day of the week. + +TIP: Download your watch faster: Download a WristApp once, then do not send it again. It stays in the watch!¬ +watchapp.hlp¬ +104¬ +none¬ +Timex Data Link 150s Watch¬ +CC01BBCC01C9819D9D819D9D819D9DD6035381CC0148001D0D0A180E1D200E0E1424242424240D0A2224242424150E0F1D00000000000000128FCD01CAB691A11B2710A106272DCD5ACB1561CC03670461F881C604A12612CD57D3CD5ACB1461A617CD57A9A648CC574DA638CD4E784FC704A181C604C3A10227D41561A100270EA1032715A1012605A637CD4E7881C601414CA102230F4F200CC601414AA1002B022002A602C70141209F1E961C9619961B96A600C7014181819BAEB005A902AEB9E602C70145E603C70146E604C701479A813F633F64AE01BF62C3014522232716CD68F1B662C704F9C60147C704FACD6902CD68FB2003C60146AD073C62BE6220D881BB64B76424023C63813F633F64CD68F1C60145C704F9C60147C704FACD6902CD68FBC00146B764CE01455CBF62A30C221CCD68F1B662C704F9C60147C704FACD6902CD68FBADB93C62BE6220E081CD01E3C60145B765C60146B766C60147B767AE659BCD68DE9AC70142A601B765B766C60147B767AE659BCD68DE9A97D60345C70143D6034CB762A3022706A3052710201DC60147A5032616A635C70143200FC601474AA5032607A635C70143B762CE0142B664DB033EB76424023C63B664A1082404B663271BCE0143B662CD6B164D2602A601B762B664A007B76424DF3A6320DB3F63B662B764813F653F663F67B6632606B664A164250E3C65B664A064B76424EC3A6320E8B664A10A250A3C66B664A00AB76420F0B664B767B665260AAE24BF65B6662602BF6681060504030201003434343535343401010101353434001AFF001B84001FFF0006FF0037FFFF38FFFF1DCD57D9C60141A101270EA102271BA61DCD5746CD02622008A625CD5746CD01E3A605C70144AD292011A629CD5746CD021DA600C70144AD182000CE0147CD67D5CE0145CD67D9CE0146CD67DDCD59AC81CD02FD3F62B662CB014497D65E3BBE62EE65CD59E73C62B662A10325E881¬ +38373¬ +0¬ \ No newline at end of file diff --git a/from_timex/wksusa11.zap b/from_timex/wksusa11.zap new file mode 100644 index 0000000..63c620e --- /dev/null +++ b/from_timex/wksusa11.zap @@ -0,0 +1,33 @@ +TDL0306962¬ +Week of the Year (U.S.)¬ +WKSUSA11¬ +1) Displays what week of the year it is. +2) Displays what day of the year it is. +3) Displays how many days are left in the year. + +The U.S. version uses Sunday as the first day of the week. + +TIP: Download your watch faster: Download a WristApp once, then do not send it again. It stays in the watch!¬ +watchapp.hlp¬ +104¬ +none¬ +Timex Data Link 150 Watch¬ +CC01CFCC01DD819D9D819D9D819D9DD6014881CC015C001D0D0A180E1D200E0E1424242424240D0A2224242424150E0F1D00000000000000001AFF001B84001FFF0006FF0037FFFF38FFFF1D128FCD01DEB691A11B2710A106272DCD579F1561CC03520461F881C604A12612CD58D2CD579F1461A617CD58A8A648CC584CA638CD4E894FC704A181C604C3A10227D41561A100270EA1032715A1012605A637CD4E8981C601414CA102230F4F200CC601414AA1002B022002A602C70141209F1E961C9619961B96A600C7014181819BAEB005A902AEB9E602C70145E603C70146E604C701479A813F633F64AE01BF62C3014522232716CD68E8B662C704F9C60147C704FACD68F9CD68F22003C60146AD073C62BE6220D881BB64B76424023C63813F633F64CD68E8C60145C704F9C60147C704FACD68F9CD68F2C00146B764CE01455CBF62A30C221CCD68E8B662C704F9C60147C704FACD68F9CD68F2ADB93C62BE6220E081CD01F7C60145B765C60146B766C60147B767AE659BCD68D59AC70142A601B765B766C60147B767AE659BCD68D59A97D603C7C70143D603CEB762A3012706A3042710201DC60147A5032616A635C70143200FC601474AA5032607A635C70143B762CE0142B664DB03C0B76424023C63B664A1082404B663271BCE0143B662CD6B0D4D2602A601B762B664A007B76424DF3A6320DB3F63B662B764813F653F663F67B6632606B664A164250E3C65B664A064B76424EC3A6320E8B664A10A250A3C66B664A00AB76420F0B664B767B665260AAE24BF65B6662602BF6681CD58D8C60141A101270EA102271BA61DCD5845CD02762008A625CD5845CD01F7A605C70144AD292011A629CD5845CD0231A600C70144AD182000CE0147CD67CCCE0145CD67D0CE0146CD67D4CD5AAB81CD03113F62B662CB014497D65E32BE62EE65CD56D53C62B662A10325E881050403020100063434353534343401010135343401¬ +60802¬ +0¬ +Week of the Year (U.S.)¬ +WKSUSA21¬ +1) Displays what week of the year it is. +2) Displays what day of the year it is. +3) Displays how many days are left in the year. + +The U.S. version uses Sunday as the first day of the week. + +TIP: Download your watch faster: Download a WristApp once, then do not send it again. It stays in the watch!¬ +watchapp.hlp¬ +104¬ +none¬ +Timex Data Link 150s Watch¬ +CC01BBCC01C9819D9D819D9D819D9DD6035381CC0148001D0D0A180E1D200E0E1424242424240D0A2224242424150E0F1D00000000000000128FCD01CAB691A11B2710A106272DCD5ACB1561CC03670461F881C604A12612CD57D3CD5ACB1461A617CD57A9A648CC574DA638CD4E784FC704A181C604C3A10227D41561A100270EA1032715A1012605A637CD4E7881C601414CA102230F4F200CC601414AA1002B022002A602C70141209F1E961C9619961B96A600C7014181819BAEB005A902AEB9E602C70145E603C70146E604C701479A813F633F64AE01BF62C3014522232716CD68F1B662C704F9C60147C704FACD6902CD68FB2003C60146AD073C62BE6220D881BB64B76424023C63813F633F64CD68F1C60145C704F9C60147C704FACD6902CD68FBC00146B764CE01455CBF62A30C221CCD68F1B662C704F9C60147C704FACD6902CD68FBADB93C62BE6220E081CD01E3C60145B765C60146B766C60147B767AE659BCD68DE9AC70142A601B765B766C60147B767AE659BCD68DE9A97D60345C70143D6034CB762A3012706A3042710201DC60147A5032616A635C70143200FC601474AA5032607A635C70143B762CE0142B664DB033EB76424023C63B664A1082404B663271BCE0143B662CD6B164D2602A601B762B664A007B76424DF3A6320DB3F63B662B764813F653F663F67B6632606B664A164250E3C65B664A064B76424EC3A6320E8B664A10A250A3C66B664A00AB76420F0B664B767B665260AAE24BF65B6662602BF6681050403020100063434353534343401010135343401001AFF001B84001FFF0006FF0037FFFF38FFFF1DCD57D9C60141A101270EA102271BA61DCD5746CD02622008A625CD5746CD01E3A605C70144AD292011A629CD5746CD021DA600C70144AD182000CE0147CD67D5CE0145CD67D9CE0146CD67DDCD59AC81CD02FD3F62B662CB014497D65E3BBE62EE65CD59E73C62B662A10325E881¬ +46308¬ +0¬ \ No newline at end of file diff --git a/from_timex/world01.zap b/from_timex/world01.zap new file mode 100644 index 0000000..693a98f --- /dev/null +++ b/from_timex/world01.zap @@ -0,0 +1,31 @@ +TDL0815962¬ +World Time¬ +World13¬ +The Timex World Time WristApp displays the time in each of the 24 time zones around the world. + +Choose the Input/Configure button to customize your list of entries, and to make daylight savings time settings. + +TIP: Download to your watch faster: Download this WristApp only when sending new time settings to the watch.¬ +watchapp.hlp¬ +110¬ +worldtm.exe¬ +Timex Data Link 150 Watch¬ +CC0265CC027DCC03A9819D9D819D9DD6025181CC01D6001A0017130D1D1D1812140E1D0000000000000000180017220CFB0C0C1CFC1B1218FD310002FE310001FF15181700190A1B010C0A1202161820030D210B04141112050D0A0C060B141407111410081D2218091C220D0A17181E0B2015100C310101F5111715F60A170CF7150A21F80D0E17F90C1112FA242424FBCD579FCD6838CD6830C60138CD5849AE63CD5A86CE0137CD67CCCE0135CD67D0CE0136CD67D4CD5AABCE0133CD67D8CE0134CC6823128FB691A11B270CA10627301096CD0280CC01A1C604A12619A60EC704C41096CD579FA617CD587EA61DCD58A8A648CC584CA638CD4E894FC704A181C604C3A1002718A1032722A102270CA10126071196A637CD4E8981A60020183C61C6013B4AB16124103F61200C3A612B022006C6013B4AB761CD0280CC01A4001AFF001B84001FFF0006FF0037FFFF38FFFF1DA6C0B796AEB005A902AEB9CF013CA618B762A600B7612003119681AD07AD36AD4ACC030BCD68E8C6013CAB0097F6B766C701395CF6C70134C7013A5CF6C701355CF6C701365CF6C701379FAB0497F6C70138CC68F2B661AE044297D6013DB763D6013EB764D6013FB765813F67B662AE0442AB0397B666D0013DAD17C70133B661AE0442AB0397C60133DB013DAD04C70133812B0CA1182402200AA0183C672004AB183A6781B6672B452742C60138AE06CD6B0DC70138C601364CC70136AD6EC101362429A601C70136C601354CC70135A10C2319A601C70135C60137AE63CD6B0DC70137A1642605A600C7013781C601384AC701382B022005A606C70138C601364AC70136A100230181C601354AC701352706AD18C7013681A60CC70135C601374A2B022002A663C7013720E6CD68E8C60135C704F9C60137C704FACD68F9CD68F281C604C4A108270181CD68E8C6013CAB0097F6B7665CF6C70134CD68F2CD6838CD6830C60134C1013A27DDCE0134CD6823B666C1013927D0CD0280CC01A4¬ +48403¬ +1¬ +Sample Data¬ +World Time¬ +World23¬ +The Timex World Time WristApp displays the time in each of the 24 time zones around the world. + +Choose the Input/Configure button to customize your list of entries, and to make daylight savings time settings. + +TIP: Download to your watch faster: Download this WristApp only when sending new time settings to the watch.¬ +watchapp.hlp¬ +110¬ +worldtm.exe¬ +Timex Data Link 150s Watch¬ +CC013DCC0155CC03A9819D9D819D9DD6039581CC031A001A0017130D1D1D1812140E1D00000000000000001800A6C0B796AEB005A902AEB9CF013CA618B762A600B7612003119681AD07AD36AD4ACC01E3CD68F1C6013CAB0097F6B766C701395CF6C70134C7013A5CF6C701355CF6C701365CF6C701379FAB0497F6C70138CC68FBB661AE044297D60281B763D60282B764D60283B765813F67B662AE0442AB0397B666D00281AD17C70133B661AE0442AB0397C60133DB0281AD04C70133812B0CA1182402200AA0183C672004AB183A6781B6672B452742C60138AE06CD6B16C70138C601364CC70136AD6EC101362429A601C70136C601354CC70135A10C2319A601C70135C60137AE63CD6B16C70137A1642605A600C7013781C601384AC701382B022005A606C70138C601364AC70136A100230181C601354AC701352706AD18C7013681A60CC70135C601374A2B022002A663C7013720E6CD68F1C60135C704F9C60137C704FACD6902CD68FB8117220CFB0C0C1CFC1B1218FD310002FE310001FF15181700190A1B010C0A1202161820030D210B04141112050D0A0C060B141407111410081D2218091C220D0A17181E0B2015100C310101F5111715F60A170CF7150A21F80D0E17F90C1112FA242424FBCD5ACBCD6841CD6839C60138CD574AAE63CD5987CE0137CD67D5CE0135CD67D9CE0136CD67DDCD59ACCE0133CD67E1CE0134CC682C128FB691A11B270CA10627301096CD0158CC02E5C604A12619A60EC704C41096CD5ACBA617CD577FA61DCD57A9A648CC574DA638CD4E784FC704A181C604C3A1002718A1032722A102270CA10126071196A637CD4E7881A60020183C61C6013B4AB16124103F61200C3A612B022006C6013B4AB761CD0158CC02E8001AFF001B84001FFF0006FF0037FFFF38FFFF1DC604C4A108270181CD68F1C6013CAB0097F6B7665CF6C70134CD68FBCD6841CD6839C60134C1013A27DDCE0134CD682CB666C1013927D0CD0158CC02E8¬ +41335¬ +1¬ +Sample Data¬ diff --git a/from_toebes/3ball/3ball.asm b/from_toebes/3ball/3ball.asm new file mode 120000 index 0000000..c89f401 --- /dev/null +++ b/from_toebes/3ball/3ball.asm @@ -0,0 +1 @@ +3ball.zsm \ No newline at end of file diff --git a/from_toebes/3ball/3ball.known_good b/from_toebes/3ball/3ball.known_good new file mode 120000 index 0000000..81bd3de --- /dev/null +++ b/from_toebes/3ball/3ball.known_good @@ -0,0 +1 @@ +3ball.zap.app \ No newline at end of file diff --git a/from_toebes/3ball/3ball.zap b/from_toebes/3ball/3ball.zap new file mode 100644 index 0000000..4dc2511 --- /dev/null +++ b/from_toebes/3ball/3ball.zap @@ -0,0 +1,29 @@ +TDL0831972¬ +3BALL¬ +3BALL¬ +An executive decision maker that will give a yes/no/maybe answer. Pressing Next will generate another answer and beep (since it will be the same answer sometimes). + +(c) 1997 Wayne Buttles (timex@fdisk.com). Compiled using tools and knowledge published by John A. Toebes, VIII and Michael Polymenakos (mpoly@panix.com). + Some enhancements by John Toebes... +¬ +watchapp.hlp¬ +100¬ +none¬ +Timex Data Link 150 Watch¬ +CC01B2139081CC0188139081819D9DD6014D81CC015E00031D0B0A1313140A1B0B0E1D1B0E051D1D15001D1D1D1F001F1D1D1D2C2D2C2B2A2B22261D22001B85001AFF008085001FFF0001FFFF1D128F1390B691A1802737A11B2733A11A2706AD33A403B761BE61D60149CD587EA617CD58A8A648CC584CC604C1A1082684AE05B662CD6B0DB76297D60143CC587E3F62129020D9B660AE5542AB19B76049494981A6C0B796B627B76081¬ +22325¬ +0¬ +3BALL¬ +3BALL¬ +An executive decision maker that will give a yes/no/maybe answer. Pressing Next will generate another answer and beep (since it will be the same answer sometimes). + +(c) 1997 Wayne Buttles (timex@fdisk.com). Compiled using tools and knowledge published by John A. Toebes, VIII and Michael Polymenakos (mpoly@panix.com). + Some enhancements by John Toebes... +¬ +watchapp.hlp¬ +100¬ +none¬ +Timex Data Link 150s Watch¬ +CC01B2139081CC0188139081819D9DD6014D81CC015E00031D0B0A1313140A1B0B0E1D1B0E051D1D15001D1D1D1F001F1D1D1D2C2D2C2B2A2B22261D22001B85001AFF008085001FFF0001FFFF1D128F1390B691A1802737A11B2733A11A2706AD33A403B761BE61D60149CD577FA617CD57A9A648CC574DC604C1A1082684AE05B662CD6B16B76297D60143CC577F3F62129020D9B660AE5542AB19B76049494981A6C0B796B627B76081¬ +52185¬ +0¬ \ No newline at end of file diff --git a/from_toebes/3ball/3ball.zsm b/from_toebes/3ball/3ball.zsm new file mode 100644 index 0000000..e98b2d8 --- /dev/null +++ b/from_toebes/3ball/3ball.zsm @@ -0,0 +1,148 @@ +;Name: 3BALL +;Version: 3BALL +;Description: An executive decision maker that will give a yes/no/maybe answer. Pressing Next will generate another answer and beep (since it will be the same answer sometimes). +; +;(c) 1997 Wayne Buttles (timex@fdisk.com). Compiled using tools and knowledge published by John A. Toebes, VIII and Michael Polymenakos (mpoly@panix.com). +; Some enhancements by John Toebes... +; +;HelpFile: watchapp.hlp +;HelpTopic: 100 +; +; (1) Program specific constants +; + INCLUDE "WRISTAPP.I" +; +; Program specific constants +; +CURRENT_TIC EQU $27 ; Current system clock tic (Timer) +LAST_ANS EQU $61 +RAND_SEED EQU $60 +MARQ_POS EQU $62 +START EQU * +; +; (2) System entry point vectors +; +L0110: jmp MAIN ; The main entry point - WRIST_MAIN +L0113: bclr 1,BTNFLAGS ; Called when we are suspended for any reason - WRIST_SUSPEND + rts +L0116: jmp FLASH ; Called to handle any timers or time events - WRIST_DOTIC +L0119: bclr 1,BTNFLAGS ; Called when the COMM app starts and we have timers pending - WRIST_INCOMM + rts +L011c: rts ; Called when the COMM app loads new data - WRIST_NEWDATA + nop + nop + +L011f: lda STATETAB,X ; The state table get routine - WRIST_GETSTATE + rts + +L0123: jmp HANDLE_STATE0 + db STATETAB-STATETAB +; +; (3) Program strings +; +S6_MSG timex6 "3 BALL" +S6_MAYBE timex6 "MAYBE" +S6_YES timex6 " YES" +S6_NO timex6 " NO" +S6_MARQ timex6 " +O+ " + +MARQ_SEL + DB S6_MARQ+2-START + DB S6_MARQ+3-START + DB S6_MARQ+2-START + DB S6_MARQ+1-START + DB S6_MARQ-START + DB S6_MARQ+1-START + +MSG_SEL DB S6_YES-START + DB S6_NO-START + DB S6_MAYBE-START + DB S6_YES-START +; +; (4) State Table +; +STATETAB: + db 0 + db EVT_ENTER,TIM2_16TIC,0 ; Initial state + db EVT_RESUME,TIM_ONCE,0 ; Resume from a nested app + db EVT_DNNEXT,TIM2_16TIC,0 ; Next button + db EVT_TIMER2,TIM_ONCE,0 ; Timer + db EVT_MODE,TIM_ONCE,$FF ; Mode button + db EVT_END +; +; (5) State Table 0 Handler +; This is called to process the state events. +; We see ENTER, RESUME, TIMER2 and NEXT events +; +HANDLE_STATE0: + bset 1,APP_FLAGS ; Indicate that we can be suspended + bclr 1,BTNFLAGS + lda BTNSTATE + cmp #EVT_DNNEXT ; Did they press the next button? + beq DOITAGAIN + cmp #EVT_ENTER ; Or did we start out + beq DOITAGAIN + cmp #EVT_RESUME + beq REFRESH +; +; (6) Select a random answer +; +SHOWIT + bsr RAND + and #3 ; go to a 1 in 4 chance + sta LAST_ANS +; +; (7) Display the currently selected random number +; +REFRESH + ldx LAST_ANS ; Get the last answer we had, and use it as an index + lda MSG_SEL,X ; And get the message to display + jsr PUT6TOP ; Put that on the top +BANNER + lda #S6_MSG-START + jsr PUT6MID + lda #SYS8_MODE ; And show the mode on the bottom + jmp PUTMSGBOT +; +; (8) This flashes the text on the screen +; +FLASH + lda CURRENT_APP ; See which app is currently running + cmp #APP_WRIST ; Is it us? + bne L0113 ; No, so just turn off the tic timer since we don't need it + ldx #5 + lda MARQ_POS + jsr INCA_WRAPX + sta MARQ_POS + tax + lda MARQ_SEL,X + jmp PUT6TOP +; +; (9) They want us to do it again +; +DOITAGAIN ; Tell them we are going to do it again + clr MARQ_POS + bset 1,BTNFLAGS + bra BANNER +; +; (10) Here is a simple random number generator +; +RAND + lda RAND_SEED + ldx #85 + mul + add #25 + sta RAND_SEED + rola + rola + rola + rts +; +; (11) This is the main initialization routine which is called when we first get the app into memory +; +MAIN: + lda #$c0 ; We want button beeps and to indicate that we have been loaded + sta WRISTAPP_FLAGS + lda CURRENT_TIC + sta RAND_SEED + rts diff --git a/from_toebes/Makefile b/from_toebes/Makefile new file mode 100644 index 0000000..93ce6f1 --- /dev/null +++ b/from_toebes/Makefile @@ -0,0 +1,46 @@ +TUTORIALS=hello number update flash passwd dayfind testsnd endoff hexdump promdump spend0 sound1 3ball shipbell pick6 +ZAPS=${wildcard */*.zap} +#tipcalc +#datahid2 + +STAMPS=${foreach appdir,${TUTORIALS},${appdir}/${appdir}.stamp} +APPS=${STAMPS:%.stamp=%.app} +PS=${APPS:%.app=%.p} +LSTS=${APPS:%.app=%.lst} +HEX=${APPS:%.app=%.app.hex} ${APPS:%.app=%.known_good.hex} +ZAPAPPS=${ZAPS:%.zap=%.zap.app} + + +CROSS=../../asl/ + +ZAP2APP=../tools/zap2app + +AFLAGS=-i ../include/dl150 -cpu datalink +AS=${CROSS}asl ${AFLAGS} + +P2BIN=${CROSS}p2bin + +default:${STAMPS} ${APPS} ${ZAPAPPS} + +%.stamp:%.app.hex %.known_good.hex + diff -uN ${@:%.stamp=%.app.hex} ${@:%.stamp=%.known_good.hex} && touch $@ + + +${HEX}:${ZAPAPPS} + +%.hex:% + yes '' | dd bs=272 count=1 | cat - $< | hexdump -C > $@ || /bin/rm -f $@ + +%.zap.app:%.zap + ${ZAP2APP} $< $@ + +.PRECIOUS:${APPS} + +%.app:%.p + ${P2BIN} $< $@ -r 0x110-\$$ + +%.p:%.asm + ${AS} -L ${@:%.p=%.lst} -o $@ $< + +clean: + /bin/rm -f ${APPS} ${PS} ${LSTS} ${HEX} ${STAMPS} ${ZAPAPPS} diff --git a/from_toebes/datahid2/Data Hider App Beta.txt b/from_toebes/datahid2/Data Hider App Beta.txt new file mode 100644 index 0000000..66a5bc5 --- /dev/null +++ b/from_toebes/datahid2/Data Hider App Beta.txt @@ -0,0 +1,43 @@ +From: John Toebes +Sent: Saturday, April 12, 1997 2:23 PM +To: 'datalink-developers@listproc.wsu.edu' +Subject: Data Hider App Beta + +Hi all, + Here's another useful app which I am nearly finished with, but wanted +people to have a chance to comment on it. What it does is allow you to +protect the entries in your watch so that they can't be seen unless +someone enters a password. The way it works is pretty simple: + Switch to the app. If the data is currently hidden, it says: + DATA + HIDDEN + J. TOEBES + Otherwise if you can actually see the phone numbers and list entries it +says: + DATA + HIDER + J. TOEBES + +To hide the data on your watch, press the next button. Once you exit +the app, you can't see any of the phone or list entries if they have +been hidden. To get them back, just go back to the Data Hider app and +press the SET button to enter the password. What password? Oh, the +default one is 1234. Once you have entered the password, the note +symbol will once again appear and allow you to unlock the entries. If +the note symbol is visible, you can change the password to anything else +by just pressing the SET button. + +Note that if you forget the password, there is no way to retrieve it (downloading another app will destroy where the password is stored!) or your entries. + +Possible enhancements: + 1) Add an automatic timeout to lock the watch after 1 minute + 2) Allow you to set the password before you download it to the watch + 3) Consider hiding the appointments and anniversaries. This has an +unfortunate side effect that they won't go off (or at least I haven't +figured out a way to trick the app into skipping them but still have +them go off). + + +---- John A. Toebes, VIII ---- toebes@southpeakcom +Vice President Research and Development +SouthPeak Interactive diff --git a/from_toebes/datahid2/datahid2.zap b/from_toebes/datahid2/datahid2.zap new file mode 100644 index 0000000..19a623c --- /dev/null +++ b/from_toebes/datahid2/datahid2.zap @@ -0,0 +1,33 @@ +TDL0724962¬ Applet file header +Data Hider¬ Applet friendly name +DATAHID2¬ Applet version # +Data Hider - by John A. Toebes, VIII + +To enter/set the password, press the set button. +If the password has been entered, pressing the NEXT button will toggle between hidden and non-hidden mode. +HINT: When the password is valid, the NOTE symbol will appear. + +TIP: Download your watch faster: Download a WristApp once, then do not send it again. It stays in the watch!¬ +WATCHAPP.HLP¬ Applet help filename +106¬ +none¬ Applet's parent's app name (if it exists - 'none' if it doesn't) +Timex Data Link 150 Watch¬ +CC01F5819D9D819D9D819D9DCC01F5D6015D81CC017F00CC01FE141D0D0A180A1D11010D0D0E1511010D0E171D0E15180E171D0C110A15100E190A1C1C20181B0D13321D180E0B0E1C00000C22001AFF001BFF0001FFFF02FF0100FF0038FFFF1D011AFF0186FF01A6FF0139FF001DB691A11B2735A10026453F613F620060171060C60109C70159C6010AC7015A4FC70109C7010A20270560241160C60159C70109C6015AC7010A20140160021560C604A1270A4FC704A1A638CD4E8981CD579FA61BCD587EA60EB71D016003056004181E2002191EA627016002A621CD58A8A641CC58451E963F613F623F6081128FB691A1862704129F2048C604C3A1022629046017B661C1015B261AB662C1015C2613146001600EAD60200AB661C7015BB662C7015CA639CC4E89C604C3A100274CA1032744A101270181B660A802B760139FCD579FCD595CCD5930BE61CD593ECD5910BE62CD593ECD5920A62D05600CC6015BB761C6015CB762A633CD587EA639CD5845AD25149081119F2002109F4FC704F4A663C704F5036006AE62A6072004AE61A605CD57C7189081036006AE62A6092004AE61A607CC55BF¬ +35029¬ +0¬ No data +Data Hider¬ Applet friendly name +DATAHID2¬ Applet version # +Data Hider - by John A. Toebes, VIII + +To enter/set the password, press the set button. +If the password has been entered, pressing the NEXT button will toggle between hidden and non-hidden mode. +HINT: When the password is valid, the NOTE symbol will appear. + +TIP: Download your watch faster: Download a WristApp once, then do not send it again. It stays in the watch!¬ +WATCHAPP.HLP¬ Applet help filename +106¬ +none¬ Applet's parent's app name (if it exists - 'none' if it doesn't) +Timex Data Link 150s Watch¬ +CC01F5819D9D819D9D819D9DCC01F5D6015D81CC017F00CC01FE141D0D0A180A1D11010D0D0E1511010D0E171D0E15180E171D0C110A15100E190A1C1C20181B0D13321D180E0B0E1C00000C22001AFF001BFF0001FFFF02FF0100FF0038FFFF1D011AFF0186FF01A6FF0139FF001DB691A11B2735A10026453F613F620060171060C60109C70159C6010AC7015A4FC70109C7010A20270560241160C60159C70109C6015AC7010A20140160021560C604A1270A4FC704A1A638CD4E7881CD5ACBA61BCD577FA60EB71D016003056004181E2002191EA627016002A621CD57A9A641CC57461E963F613F623F6081128FB691A1862704129F2048C604C3A1022629046017B661C1015B261AB662C1015C2613146001600EAD60200AB661C7015BB662C7015CA639CC4E78C604C3A100274CA1032744A101270181B660A802B760139FCD5ACBCD585DCD5831BE61CD583FCD5811BE62CD583FCD5821A62D05600CC6015BB761C6015CB762A633CD577FA639CD5746AD25149081119F2002109F4FC704F4A663C704F5036006AE62A6072004AE61A605CD56C8189081036006AE62A6092004AE61A607CC55AE¬ +13022¬ +0¬ No data \ No newline at end of file diff --git a/from_toebes/dayfind/dayfind.asm b/from_toebes/dayfind/dayfind.asm new file mode 100644 index 0000000..0cc1fcd --- /dev/null +++ b/from_toebes/dayfind/dayfind.asm @@ -0,0 +1,384 @@ +;Name: Day Finder +;Version: DAYFIND +;Description: This will allow you to determine the date for a given day of the week and vice-versa. +;by John A. Toebes, VIII +; +;Press the prev/next buttons to advance by a single day. Press SET to access the ability to advance/backup by +;weeks, months, days, and years. The MODE button advances through those different states +; +;TIP: Download your watch faster: Download a WristApp once, then do not send it again. It stays in the watch! +;HelpFile: watchapp.hlp +;HelpTopic: 106 + INCLUDE "WRISTAPP.I" +; +; (1) Program specific constants +; +FLAGBYTE EQU $61 +B_CLEAR EQU 0 ; Bit 0 indicates that we need to clear the display first +B_SCANUP EQU 1 ; Bit 1 indicates that we are scanning up +B_SCANNING EQU 2 ; Bit 2 indicates that we are in a fake scanning mode +DIGSEL EQU $62 ; Indicates which digit we are working on + ; 0 = DAY OF WEEK + ; 1 = Month + ; 2 = Day + ; 3 = Year +YEAR_DIG1 EQU $63 ; This is the first digit of the year to blink (the tens digit) +YEAR_DIG2 EQU $64 ; This is the second digit of the year to blink (the ones digit) +COUNTER EQU $65 ; A convenient counter for us to advance a week at a time +; +; +; (2) System entry point vectors +; +START EQU * +L0110: jmp MAIN ; The main entry point - WRIST_MAIN +L0113: rts ; Called when we are suspended for any reason - WRIST_SUSPEND + nop + nop +L0116: rts ; Called to handle any timers or time events - WRIST_DOTIC + nop + nop +L0119: rts ; Called when the COMM app starts and we have timers pending - WRIST_INCOMM + nop + nop +L011c: rts ; Called when the COMM app loads new data - WRIST_NEWDATA + nop + nop + +L011f: lda STATETAB0,X ; The state table get routine - WRIST_GETSTATE + rts + +L0123: jmp HANDLE_STATE0 + db STATETAB0-STATETAB0 +L0127: jmp HANDLE_STATE1 + db STATETAB1-STATETAB0 +; +; (3) Program strings +S6_DAY timex6 "DAY " +S6_FIND timex6 " FIND" +S8_TOEBES timex "J.TOEBES" +S8_DAYFIND timex "DAY FIND" +S8_WEEK db C_LEFTARR + timex " WEEK " + db C_RIGHTARR +S8_MONTH db C_LEFTARR + timex "MONTH " + db C_RIGHTARR +S8_DAY db C_LEFTARR + timex " DAY " + db C_RIGHTARR +S8_YEAR db C_LEFTARR + timex " YEAR " + db C_RIGHTARR +; +; (4) State Table +; +STATETAB0: + db 0 + db EVT_ENTER,TIM1_4TIC,0 ; Initial state + db EVT_TIMER1,TIM_ONCE,0 ; The timer from the enter event + db EVT_RESUME,TIM_ONCE,0 ; Resume from a nested app + db EVT_MODE,TIM_ONCE,$FF ; Mode button + db EVT_SET,TIM_ONCE,1 ; SET button pressed + db EVT_DNNEXT,TIM2_8TIC,0 ; NEXT button pressed + db EVT_DNPREV,TIM2_8TIC,0 ; PREV button pressed + db EVT_UPANY4,TIM_ONCE,0 ; The + db EVT_TIMER2,TIM2_TIC,0 ; The timer for the next/prev button pressed + db EVT_END + +STATETAB1: + db 1 + db EVT_RESUME,TIM_ONCE,1 ; Resume from a nested app + db EVT_DNANY4,TIM_ONCE,1 ; NEXT, PREV, SET, MODE button pressed + db EVT_UPANY4,TIM_ONCE,1 ; NEXT, PREV, SET, MODE button released + db EVT_USER2,TIM_ONCE,0 + db EVT_USER3,TIM2_8TIC,1 ; + db EVT_TIMER2,TIM2_TIC,1 ; + db EVT_END +; +; (5) State Table 0 Handler +; This is called to process the state events. +; We see ENTER, TIMER2, and RESUME events +; +HANDLE_STATE0: + bset 1,APP_FLAGS ; Indicate that we can be suspended + lda BTNSTATE ; Get the event + cmp #EVT_DNNEXT + beq DO_NEXT0 + cmp #EVT_DNPREV + beq DO_PREV0 + cmp #EVT_TIMER2 + beq DO_SCAN + cmp #EVT_ENTER ; Is this our initial entry? + bne REFRESH0 +; +; This is the initial event for starting us up +; +DO_ENTER +; +; (6) This code gets the current date from the system + + jsr ACQUIRE ; Lock so that it doesn't change under us + ldx #TZ1_MONTH ; Assume that we are using the first timezone + jsr CHECK_TZ ; See which one we are really using + bcc COPY_TZ1 ; If we were right, just skip on to do the work + ldx #TZ2_MONTH ; Wrong guess, just load up the second time zone +COPY_TZ1 + lda 0,x ; Copy out the month + sta SCAN_MONTH + lda 1,x ; Day + sta SCAN_DAY + lda 2,x ; and year + sta SCAN_YEAR + jsr RELEASE ; Unlock so the rest of the system is happy + + bclr B_CLEAR,FLAGBYTE ; Indicate that we need to clear the display + clr DIGSEL ; Start us off on the week advance + jsr CLEARSYM ; Clear the display + lda #S6_DAY-START + jsr PUT6TOP + lda #S6_FIND-START + jsr PUT6MID + lda #S8_TOEBES-START + jmp BANNER8 + +DO_SCAN + brclr B_SCANUP,FLAGBYTE,DO_PREV0 ; Were we scanning up or down? +DO_NEXT0 + bset B_SCANUP,FLAGBYTE ; We are now scanning up + jsr INCREMENT_SCAN_DATE ; Advance to the next date + bra SHOW_DATE ; Comment this out and use the next one if you want + ; jmp APPT_SHOW_SCAN ; to put the text 'SCAN' on the bottom when we are in scan mode + +DO_PREV0 + bclr B_SCANUP,FLAGBYTE ; We are now scanning down + jsr DECREMENT_SCAN_DATE ; Back up to the previous date + bra SHOW_DATE ; Show the date on the screen. + ; jmp APPT_SHOW_SCAN ; Use this if you want 'SCAN' on the bottom of the display +; +; We come here for a RESUME or TIMER2 event. For this we want to reset the display +; +REFRESH0 + brset B_CLEAR,FLAGBYTE,NOCLEAR0 ; Do we need to clear the display first? + bset B_CLEAR,FLAGBYTE ; Mark that the display has been cleared + jsr CLEARALL ; and do the work of clearing +NOCLEAR0 + lda #S8_DAYFIND-START ; Put up the name of the app on the display + jsr BANNER8 +SHOW_DATE + jsr APPT_SHOW_DATE ; Show the date on the screen + ldx SCAN_YEAR ; as well as the year + jmp PUTYEARMID +;-------------------------------------------------------------------------------- +; (7) State Table 1 Handler +; This is called to process the state events. +; We see SET, RESUME, USER3, TIMER2, DNANY4, and UPANY4 events +; We use the USER3 to trigger a delay which fires off a TIMER2 sequence of events. +; This allows us to have the PREV/NEXT buttons repeat for advancing the WEEK and YEAR +; since we can't use the UPDATE routines for them. +; +HANDLE_STATE1: + bset 1,APP_FLAGS ; Indicate that we can be suspended + lda BTNSTATE ; Get the event + cmp #EVT_TIMER2 ; Was it a timer for a repeat operation? + beq DO_UPD ; Yes, go handle it + cmp #EVT_USER3 ; Was it the USER3 event fired from the PREV/NEXT buttons? + bne TRY_UP ; No, try again + rts ; Yes, just ignore it, it will cause a timer to go off later +TRY_UP + bclr B_SCANNING,FLAGBYTE ; We can't be scanning any more, so turn it off + cmp #EVT_UPANY4 ; Was it any button being released? + bne TRY_DN ; No, try again + jmp REFRESH ; Yes, go refresh the screen (note that the branch is out of range) +TRY_DN + cmp #EVT_DNANY4 ; Is this our initial entry? + beq GET_DN ; No, try again + jmp FORCEFRESH ; Yes, go setup the screen (note that the branch is out of range) +GET_DN + lda BTN_PRESSED ; Let's see what the button they pressed was + cmp #EVT_PREV ; How about the PREV button + beq DO_PREV ; handle it + cmp #EVT_NEXT ; Maybe the NEXT button? + beq DO_NEXT ; Deal with it! + cmp #EVT_MODE ; Perhaps the MODE button + beq DO_MODE ; If so, handle it + ; It must be the set button, so take us out of this state + lda #EVT_USER2 + jmp POSTEVENT +; +; (8) Our real working code... +; We come here when they press the next/prev buttons. if we are in a timer repeat +; situation (triggered when they press prev/next for the WEEK/YEAR) then we skip right +; to processing based on the button that was previously pressed +; +DO_NEXT + bset 0,SYSFLAGS ; Mark our update direction as up + bra DO_UPD +DO_PREV + bclr 0,SYSFLAGS ; Mark our update direction as down +DO_UPD + lda DIGSEL ; Which digit mode are we in? + beq DO_UPD_DOW ; 0 - Handle the WEEK + cmp #2 + blo DO_UPD_MONTH ; <2 = 1 - Handle the MONTH + beq DO_UPD_DAY ; 2 - Handle the Day +DO_UPD_YEAR ; >2 = 3 - Handle the YEAR + brclr 0,SYSFLAGS,LASTYEAR ; Were we in the down direction? + ldx #99 ; Going up, let the WRAPX routine handle it for us + lda SCAN_YEAR + jsr INCA_WRAPX + bra SAVEYEAR +LASTYEAR + lda SCAN_YEAR ; Going down, get the year + deca ; Decrement it + bpl SAVEYEAR ; and see if we hit the lower end + lda #99 ; Yes, 2000 wraps down to 1999 +SAVEYEAR + sta SCAN_YEAR ; Save away the new year + bra SETUP_LAG ; And fire off an event to allow for repeating + +DO_UPD_DOW ; 0 - Day of week + lda #7 ; We want to iterate 7 times advancing by one day. + sta COUNTER ; (this makes it much easier to handle all the fringe cases) +WEEKLOOP + brclr 0,SYSFLAGS,LASTWEEK ; Are we going backwards? + jsr INCREMENT_SCAN_DATE ; Going forwards, advance by one day + bra WEEKLOOPCHK ; And continue the loop +LASTWEEK + jsr DECREMENT_SCAN_DATE ; Going backwards, retreat by one day +WEEKLOOPCHK + dec COUNTER ; Count down + tst COUNTER ; See if we hit the limit + bne WEEKLOOP ; and go back for more +; (9) Fake repeater +; This code is used for the Day of week and year modes where we want to have a +; repeating button, but the system routines won't handle it for us +; It works by posting a USER3 event which has a timer of about 1/2 second. +; After that timer expires, we get a timer2 event which then repeats every tic. +; The only thing that we have to worry about here is to not go through this +; every time so that it takes 1/2 second for every repeat. +SETUP_LAG + brset B_SCANNING,FLAGBYTE,INLAG ; If we were already scanning, skip out + bset B_SCANNING,FLAGBYTE ; Indicate that we are scanning + lda #EVT_USER3 ; and post the event to start it off + jsr POSTEVENT +INLAG + jmp SHOW_DATE ; Put the date up on the display +; (10) Update routine usage +DO_UPD_MONTH ; 1 - Handle the month + lda #MONTH_JAN ; The bottom end is January + sta UPDATE_MIN + lda #MONTH_DEC ; and the top end is December (INCLUSIVE) + sta UPDATE_MAX + lda #UPD_HMONTH ; We want the HALF-MONTH udpate function + ldx #SCAN_MONTH ; To update the SCAN_MONTH variable + bra SEL_UPD ; Go do it +DO_UPD_DAY ; 2 - Handle the day + lda #1 ; 1 is the first day of the month + sta UPDATE_MIN + jsr GET_SCAN_MONTHLEN ; Figure out how long the month is + sta UPDATE_MAX ; and make that the limit + lda #UPD_HDAY ; We want the HALF-DAY update function + ldx #SCAN_DAY ; to update the SCAN_DAY variable +SEL_UPD + jsr START_UPDATEP ; And prepare the update routine + bset 4,BTNFLAGS ; Mark that the update is now pending + rts +; (11) Making the mode button work +; when they press the mode button, we want to cycle through the various choices +; on the display. +DO_MODE + lda DIGSEL ; Figure out where we are in the cycle + inca ; advance to the next one + and #3 ; and wrap at 4 to zero + sta DIGSEL +REFRESH + brset B_CLEAR,FLAGBYTE,NOCLEAR ; Do we need to clear the display first? +FORCEFRESH + jsr CLEARALL ; Yes, clear everything before we start + bset B_CLEAR,FLAGBYTE ; And remember that we have already done that +NOCLEAR + clr BTNFLAGS ; Turn off any scrolling banners + lda #ROW_TD23 ; Turn off the dash from the week blink + sta DISP_ROW + bclr COL_TD23,DISP_COL + jsr SHOW_DATE ; Display the date +; (12) Establishing a blink routine +; This makes the appropriate section of the display blink based on what we are changing + lda DIGSEL ; Get the digit we are on + beq DO_BLINK_DOW ; 0 -> Update Day of week + cmp #2 + blo DO_BLINK_MONTH ; <2 = 1 -> Update month + beq DO_BLINK_DAY ; 2 - Update day of month + +DO_BLINK_YEAR ; 3: Year +; (13) Calling BLINK_SECOND +; For BLINK_SECONDS, the UPDATE_PARM points to the 2 character format for the year. + ldx SCAN_YEAR ; Get our year + jsr GETBCDHI ; And extract out the high digit of it + sta YEAR_DIG1 ; Save that away + ldx SCAN_YEAR ; Do it again + jsr GETBCDLOW ; to get the low digit + sta YEAR_DIG2 ; and save that away + ldx #YEAR_DIG1 ; the parm points to the first digit + lda #BLINK_SECONDS ; and we want a BLINK_SECONDS function + bra SETUP_BLINK ; so do it already + +DO_BLINK_DOW ; 0: Day of week: +; (14) Calling BLINK_SEGMENT +; Unfortunately, there is no blink routine to blink the upper two letters on the display. +; To get around this, I have chosen to blink a single segment on the display (the dash +; after the day of the week). This routine was designed to blink the AM/PM or other +; symbols, but it works quite fine for our purposed. You need to set UPDATE_POS to have +; the row to be updated and UPDATE_VAL holds the mask for the COLUMS to be XORed. +; In this way, you might have more than one segment blinking, but there are few segments +; on the same row which would achieve a reasonable effect. +; UPDATE_POS ROW_TD23 +; UPDATE_VAL (1<2 = 3 - Handle the YEAR + brclr 0,SYSFLAGS,LASTYEAR ; Were we in the down direction? + ldx #99 ; Going up, let the WRAPX routine handle it for us + lda SCAN_YEAR + jsr INCA_WRAPX + bra SAVEYEAR +LASTYEAR + lda SCAN_YEAR ; Going down, get the year + deca ; Decrement it + bpl SAVEYEAR ; and see if we hit the lower end + lda #99 ; Yes, 2000 wraps down to 1999 +SAVEYEAR + sta SCAN_YEAR ; Save away the new year + bra SETUP_LAG ; And fire off an event to allow for repeating + +DO_UPD_DOW ; 0 - Day of week + lda #7 ; We want to iterate 7 times advancing by one day. + sta COUNTER ; (this makes it much easier to handle all the fringe cases) +WEEKLOOP + brclr 0,SYSFLAGS,LASTWEEK ; Are we going backwards? + jsr INCREMENT_SCAN_DATE ; Going forwards, advance by one day + bra WEEKLOOPCHK ; And continue the loop +LASTWEEK + jsr DECREMENT_SCAN_DATE ; Going backwards, retreat by one day +WEEKLOOPCHK + dec COUNTER ; Count down + tst COUNTER ; See if we hit the limit + bne WEEKLOOP ; and go back for more +; (9) Fake repeater +; This code is used for the Day of week and year modes where we want to have a +; repeating button, but the system routines won't handle it for us +; It works by posting a USER3 event which has a timer of about 1/2 second. +; After that timer expires, we get a timer2 event which then repeats every tic. +; The only thing that we have to worry about here is to not go through this +; every time so that it takes 1/2 second for every repeat. +SETUP_LAG + brset B_SCANNING,FLAGBYTE,INLAG ; If we were already scanning, skip out + bset B_SCANNING,FLAGBYTE ; Indicate that we are scanning + lda #EVT_USER3 ; and post the event to start it off + jsr POSTEVENT +INLAG + jmp SHOW_DATE ; Put the date up on the display +; (10) Update routine usage +DO_UPD_MONTH ; 1 - Handle the month + lda #MONTH_JAN ; The bottom end is January + sta UPDATE_MIN + lda #MONTH_DEC ; and the top end is December (INCLUSIVE) + sta UPDATE_MAX + lda #UPD_HMONTH ; We want the HALF-MONTH udpate function + ldx #SCAN_MONTH ; To update the SCAN_MONTH variable + bra SEL_UPD ; Go do it +DO_UPD_DAY ; 2 - Handle the day + lda #1 ; 1 is the first day of the month + sta UPDATE_MIN + jsr GET_SCAN_MONTHLEN ; Figure out how long the month is + sta UPDATE_MAX ; and make that the limit + lda #UPD_HDAY ; We want the HALF-DAY update function + ldx #SCAN_DAY ; to update the SCAN_DAY variable +SEL_UPD + jsr START_UPDATEP ; And prepare the update routine + bset 4,BTNFLAGS ; Mark that the update is now pending + rts +; (11) Making the mode button work +; when they press the mode button, we want to cycle through the various choices +; on the display. +DO_MODE + lda DIGSEL ; Figure out where we are in the cycle + inca ; advance to the next one + and #3 ; and wrap at 4 to zero + sta DIGSEL +REFRESH + brset B_CLEAR,FLAGBYTE,NOCLEAR ; Do we need to clear the display first? +FORCEFRESH + jsr CLEARALL ; Yes, clear everything before we start + bset B_CLEAR,FLAGBYTE ; And remember that we have already done that +NOCLEAR + clr BTNFLAGS ; Turn off any scrolling banners + lda #ROW_TD23 ; Turn off the dash from the week blink + sta DISP_ROW + bclr COL_TD23,DISP_COL + jsr SHOW_DATE ; Display the date +; (12) Establishing a blink routine +; This makes the appropriate section of the display blink based on what we are changing + lda DIGSEL ; Get the digit we are on + beq DO_BLINK_DOW ; 0 -> Update Day of week + cmp #2 + blo DO_BLINK_MONTH ; <2 = 1 -> Update month + beq DO_BLINK_DAY ; 2 - Update day of month + +DO_BLINK_YEAR ; 3: Year +; (13) Calling BLINK_SECOND +; For BLINK_SECONDS, the UPDATE_PARM points to the 2 character format for the year. + ldx SCAN_YEAR ; Get our year + jsr GETBCDHI ; And extract out the high digit of it + sta YEAR_DIG1 ; Save that away + ldx SCAN_YEAR ; Do it again + jsr GETBCDLOW ; to get the low digit + sta YEAR_DIG2 ; and save that away + ldx #YEAR_DIG1 ; the parm points to the first digit + lda #BLINK_SECONDS ; and we want a BLINK_SECONDS function + bra SETUP_BLINK ; so do it already + +DO_BLINK_DOW ; 0: Day of week: +; (14) Calling BLINK_SEGMENT +; Unfortunately, there is no blink routine to blink the upper two letters on the display. +; To get around this, I have chosen to blink a single segment on the display (the dash +; after the day of the week). This routine was designed to blink the AM/PM or other +; symbols, but it works quite fine for our purposed. You need to set UPDATE_POS to have +; the row to be updated and UPDATE_VAL holds the mask for the COLUMS to be XORed. +; In this way, you might have more than one segment blinking, but there are few segments +; on the same row which would achieve a reasonable effect. +; UPDATE_POS ROW_TD23 +; UPDATE_VAL (1<