home *** CD-ROM | disk | FTP | other *** search
/ Programmer 7500 / MAX_PROGRAMMERS.iso / PROGRAMS / UTILS / HAMRADIO / 68705CLK.ZIP / 68705CLK.TXT
Encoding:
Text File  |  1990-01-24  |  20.9 KB  |  499 lines

  1.  
  2.  
  3.  
  4. ......PAGE 00001 
  5.  
  6. LINE# LOC  CODE     SOURCE                         COMMENT
  7.  
  8.  
  9. 01020 0000 ;
  10. 01030 0000 ;******************************
  11. 01040 0000 ;*                            *
  12. 01050 0000 ;*       REALTIME CLOCK       *
  13. 01060 0000 ;*       FOR THE 68705        *
  14. 01070 0000 ;*                            *
  15. 01080 0000 ;*        THOMAS HENRY        *
  16. 01090 0000 ;*      FEBRUARY 1, 1988      *
  17. 01100 0000 ;*   REVISED APRIL 12, 1989   *
  18. 01110 0000 ;*                            *
  19. 01120 0000 ;******************************
  20. 01130 0000 ;
  21. 01140 0000                   .REL  $4000
  22. 01150 0000                   .OPT  N,P8
  23. 01160 0000 ;
  24. 01170 0000          SLOWCON  =     30              ;SLOW SET TIMING DELAY.
  25. 01180 0000          FASTCON  =     1               ;FAST SET TIMING DELAY.
  26. 01190 0000 ;
  27. 01200 0000          START    =     $000            ;START OF 68705 MAP.
  28. 01210 0000          PORTA    =     START           ;I/O PORT A.
  29. 01220 0000          PORTB    =     $001            ;I/O PORT B.
  30. 01230 0000          PORTC    =     $002            ;I/O PORT C.
  31. 01240 0000          DDRA     =     $004            ;DATA DIRECTION A.
  32. 01250 0000          DDRB     =     $005            ;DATA DIRECTION B.
  33. 01260 0000          DDRC     =     $006            ;DATA DIRECTION C.
  34. 01270 0000          TIMEDATA =     $008            ;TIMER DATA REGISTER.
  35. 01280 0000          TIMECNTL =     $009            ;TIMER CONTROL REGISTER.
  36. 01290 0000          PGMCNTL  =     $00B            ;PROGRAM CONTROL REGISTER.
  37. 01300 0000          RAMSTART =     $010            ;START OF USER RAM.
  38. 01310 0000          JIFFY    =     RAMSTART        ;JIFFY COUNTER.
  39. 01320 0000          SECONDS  =     JIFFY+1         ;SECONDS COUNTER.
  40. 01330 0000          MINUTES  =     SECONDS+1       ;MINUTES COUNTER.
  41. 01340 0000          HOURS    =     MINUTES+1       ;HOURS COUNTER.
  42. 01350 0000          COLON    =     HOURS+1         ;COLON/SECONDS TOGGLE.
  43. 01360 0000          LOW      =     COLON+1         ;LOW ORDER DIGIT.
  44. 01370 0000          HIGH     =     LOW+1           ;HIGH ORDER DIGIT.
  45. 01380 0000          SWITCHES =     HIGH+1          ;SWITCHES REGISTER.
  46. 01390 0000          MINREG   =     SWITCHES+1      ;LOW ORDER REGISTER.
  47. 01400 0000          HOUREG   =     MINREG+1        ;HIGH ORDER REGISTER.
  48. 01410 0000          TEMP     =     HOUREG+1        ;TEMPORARY FOR SWITCHES.
  49. 01420 0000          MODE     =     TEMP+1          ;12/24 HOUR MODE.
  50. 01430 0000          TIMECON  =     MODE+1          ;DELAY TIME CONSTANT.
  51. 01440 0000          ALMIN    =     TIMECON+1       ;ALARM MINUTES.
  52. 01450 0000          ALHOUR   =     ALMIN+1         ;ALARM HOUR.
  53. 01460 0000          ALARM    =     ALHOUR+1        ;ALARM FLAG.
  54. 01470 0000          STACK    =     $07F            ;TOP OF STACK.
  55. 01480 0000          ZEPROM   =     $080            ;PAGE 0 EPROM.
  56. 01490 0000          AEPROM   =     $100            ;ABSOLUTE EPROM.
  57. 01500 0000          MOR      =     $784            ;MASK OPTIONS REGISTER.
  58. 01510 0000          BOOT     =     $785            ;PROGRAMMING BOOTSTRAP.
  59. 01520 0000          TIMEIRQ  =     $7F8            ;TIMER IRQ VECTOR.
  60. 01530 0000          EXTIRQ   =     $7FA            ;EXTERNAL IRQ VECTOR.
  61. 01540 0000          SOFTIRQ  =     $7FC            ;SWI VECTOR.
  62. 01550 0000          RESET    =     $7FE            ;RESET VECTOR.
  63.  
  64.  
  65.  
  66.  
  67.  
  68.  
  69. ......PAGE 00002 
  70.  
  71. LINE# LOC  CODE     SOURCE                         COMMENT
  72.  
  73.  
  74. 01560 0000 ;
  75. 01570 0000 ;
  76. 01580 0000                   *     =START
  77. 01590 0000                   *     =AEPROM         ;SKIP OVER EARLIER JUNK.
  78. 01600 0100 ;
  79. 01610 0100 ;(BOOTSTRAP WILL IGNORE ALL NON-EPROM ADDRESSES)
  80. 01620 0100 ;
  81. 01630 0100 ;
  82. 01640 0100 ;*** THE RESET VECTOR JUMPS HERE ***
  83. 01650 0100 ;
  84. 01660 0100 ;
  85. 01670 0100 A6 C0    INITIAL  LDA   #%11000000
  86. 01680 0102 B7 04             STA   DDRA            ;A6 AND A7 OUTPUT.
  87. 01690 0104 A6 FF             LDA   #%11111111
  88. 01700 0106 B7 05             STA   DDRB            ;SET FOR OUTPUT.
  89. 01710 0108 B7 06             STA   DDRC            ;SET FOR OUTPUT.
  90. 01720 010A 3F 10             CLR   JIFFY           ;CLEAR CLOCK VARIABLES.
  91. 01730 010C 3F 11             CLR   SECONDS
  92. 01740 010E 3F 12             CLR   MINUTES
  93. 01750 0110 A6 0C             LDA   #12             ;SET CLOCK TO 12 NOON.
  94. 01760 0112 B7 13             STA   HOURS
  95. 01770 0114 3F 1B             CLR   MODE
  96. 01780 0116 A6 80             LDA   #%10000000      ;SHUT COLON OFF.
  97. 01790 0118 B7 14             STA   COLON
  98. 01800 011A A6 06             LDA   #6              ;SET ALARM TO
  99. 01810 011C B7 1E             STA   ALHOUR          ;6 O'CLOCK AM.
  100. 01820 011E 3F 1D             CLR   ALMIN
  101. 01830 0120 3F 1F             CLR   ALARM
  102. 01840 0122 A6 FF    INIT1    LDA   #%11111111      ;BLANK DISPLAY.
  103. 01850 0124 B7 02             STA   PORTC
  104. 01860 0126 3F 00             CLR   PORTA           ;TURN ON BEEPER.
  105. 01870 0128 ;
  106. 01880 0128 AE 3C             LDX   #60
  107. 01890 012A CD 02 67 INIT2    JSR   DELAY
  108. 01900 012D 5A                DEC   X
  109. 01910 012E 26 FA             BNE   INIT2
  110. 01920 0130 ;
  111. 01930 0130 A6 28             LDA   #40
  112. 01940 0132 B7 1C             STA   TIMECON
  113. 01950 0134 33 00             COM   PORTA           ;TURN OFF BEEPER.
  114. 01960 0136 AE 0E    INIT3    LDX   #14             ;PRINT 'HELP'.
  115. 01970 0138 CD 02 2E          JSR   DISPLAY1
  116. 01980 013B AE 0D             LDX   #13
  117. 01990 013D CD 02 32          JSR   DISPLAY2
  118. 02000 0140 AE 0C             LDX   #12
  119. 02010 0142 CD 02 36          JSR   DISPLAY3
  120. 02020 0145 AE 0B             LDX   #11
  121. 02030 0147 CD 02 3A          JSR   DISPLAY4
  122. 02040 014A 3A 1C             DEC   TIMECON         ;"DELAYED ENOUGH?
  123. 02050 014C 26 E8             BNE   INIT3
  124. 02060 014E ;
  125. 02070 014E B6 00             LDA   PORTA           ;"ANY SWITCH PUSHED?
  126. 02080 0150 43                COM   A
  127. 02090 0151 A4 0F             AND   #%00001111      ;CHECK PUSHBUTTONS ONLY.
  128. 02100 0153 27 CD             BEQ   INIT1           ;NO, CONTINUE SIGNON ROUTINE.
  129.  
  130.  
  131.  
  132.  
  133.  
  134.  
  135. ......PAGE 00003 
  136.  
  137. LINE# LOC  CODE     SOURCE                         COMMENT
  138.  
  139.  
  140. 02110 0155 ;
  141. 02120 0155 3F 14             CLR   COLON           ;TURN COLON ON.
  142. 02130 0157 9A                CLI                   ;ALLOW UPDATE ROUTINE.
  143. 02140 0158 ;
  144. 02150 0158 ;
  145. 02160 0158 ;*** MAIN CLOCK DISPLAY PROGRAM ***
  146. 02170 0158 ;
  147. 02180 0158 ;
  148. 02190 0158 CD 02 B2 MAIN     JSR   INPUT           ;SERVICE SWITCHES.
  149. 02200 015B 00 17 05          BRSET 0,SWITCHES,MAIN1
  150. 02210 015E CD 01 7D          JSR   CLOCKSET        ;GO SET CLOCK TIME.
  151. 02220 0161 20 06             BRA   MAIN2
  152. 02230 0163 ;
  153. 02240 0163 02 17 03 MAIN1    BRSET 1,SWITCHES,MAIN2
  154. 02250 0166 CD 01 71          JSR   ALARMSET        ;GO SET ALARM TIME.
  155. 02260 0169 ;
  156. 02270 0169 CD 01 C0 MAIN2    JSR   OUTPUT          ;SERVICE DISPLAY.
  157. 02280 016C CD 02 E2          JSR   CHECKALM        ;CHECK ALARM TIME.
  158. 02290 016F 20 E7             BRA   MAIN
  159. 02300 0171 ;
  160. 02310 0171 ;
  161. 02320 0171 ;*** CLOCK AND ALARM SET ROUTINES ***
  162. 02330 0171 ;
  163. 02340 0171 ;
  164. 02350 0171 B6 1D    ALARMSET LDA   ALMIN           ;GET OLD ALARM TIME.
  165. 02360 0173 BE 1E             LDX   ALHOUR
  166. 02370 0175 CD 01 8F          JSR   SET             ;UPDATE IT.
  167. 02380 0178 B7 1D             STA   ALMIN           ;SAVE NEW ALARM TIME.
  168. 02390 017A BF 1E             STX   ALHOUR
  169. 02400 017C 81                RTS
  170. 02410 017D ;
  171. 02420 017D B6 12    CLOCKSET LDA   MINUTES         ;GET CURRENT TIME.
  172. 02430 017F BE 13             LDX   HOURS
  173. 02440 0181 05 17 03          BRCLR 2,SWITCHES,CLKSET1;BRANCH IF FAST.
  174. 02450 0184 06 17 07          BRSET 3,SWITCHES,CLKSET2;BRANCH IF NOTHING.
  175. 02460 0187 CD 01 8F CLKSET1  JSR   SET             ;UPDATE IT.
  176. 02470 018A B7 12             STA   MINUTES         ;SAVE NEW CLOCK TIME.
  177. 02480 018C BF 13             STX   HOURS
  178. 02490 018E 81       CLKSET2  RTS
  179. 02500 018F ;
  180. 02510 018F B7 18    SET      STA   MINREG          ;PARAMS:
  181. 02520 0191 BF 19             STX   HOUREG
  182. 02530 0193 A6 1E    SET1     LDA   #SLOWCON        ;ASSUME SLOW MODE.
  183. 02540 0195 07 17 02          BRCLR 3,SWITCHES,SET2
  184. 02550 0198 A6 01             LDA   #FASTCON        ;ELSE FAST MODE CHOSEN.
  185. 02560 019A ;
  186. 02570 019A B7 1C    SET2     STA   TIMECON
  187. 02580 019C CD 01 D2 SET3     JSR   OUTPUT2         ;SHOW TIME.
  188. 02590 019F 3A 1C             DEC   TIMECON         ;DELAY A BIT.
  189. 02600 01A1 26 F9             BNE   SET3
  190. 02610 01A3 ;
  191. 02620 01A3 CD 02 B2          JSR   INPUT           ;CHECK SWITCHES.
  192. 02630 01A6 01 17 03          BRCLR 0,SWITCHES,SET4 ;CLOCK SET PUSHED.
  193. 02640 01A9 02 17 0F          BRSET 1,SWITCHES,SET6 ;NOTHING PUSHED, EXIT.
  194. 02650 01AC B6 17    SET4     LDA   SWITCHES
  195.  
  196.  
  197.  
  198.  
  199.  
  200.  
  201. ......PAGE 00004 
  202.  
  203. LINE# LOC  CODE     SOURCE                         COMMENT
  204.  
  205.  
  206. 02660 01AE A4 0C             AND   #%00001100      ;FAST & SLOW, DO NOTHING.
  207. 02670 01B0 27 07             BEQ   SET5
  208. 02680 01B2 A1 0C             CMP   #%00001100      ;NEITHER FAST NOR SLOW.
  209. 02690 01B4 27 03             BEQ   SET5
  210. 02700 01B6 CD 02 9D          JSR   BUMP            ;INCREASE SETTING.
  211. 02710 01B9 20 D8    SET5     BRA   SET1            ;DO NEXT AMOUNT.
  212. 02720 01BB ;
  213. 02730 01BB ;
  214. 02740 01BB B6 18    SET6     LDA   MINREG          ;PASS PARAMS BACK.
  215. 02750 01BD BE 19             LDX   HOUREG
  216. 02760 01BF 81                RTS
  217. 02770 01C0 ;
  218. 02780 01C0 ;
  219. 02790 01C0 ;*** OUTPUT ROUTINES ***
  220. 02800 01C0 ;
  221. 02810 01C0 ;
  222. 02820 01C0 B6 12    OUTPUT   LDA   MINUTES         ;DEFAULT TO HOURS/MINS.
  223. 02830 01C2 BE 13             LDX   HOURS
  224. 02840 01C4 0A 17 07          BRSET 5,SWITCHES,OUTPUT1;BRANCH IF HOURS/MINS.
  225. 02850 01C7 01 17 04          BRCLR 0,SWITCHES,OUTPUT1;CLOCK SET PUSHED.
  226. 02860 01CA B6 11             LDA   SECONDS
  227. 02870 01CC BE 12             LDX   MINUTES         ;ELSE MINS/SECS.
  228. 02880 01CE B7 18    OUTPUT1  STA   MINREG
  229. 02890 01D0 BF 19             STX   HOUREG          ;FALL THROUGH TO 'OUTPUT2'.
  230. 02900 01D2 ;
  231. 02910 01D2 B6 18    OUTPUT2  LDA   MINREG
  232. 02920 01D4 CD 02 1F          JSR   CONVERT         ;CONVERT TO BCD.
  233. 02930 01D7 BE 15             LDX   LOW             ;MINUTES/LOW DIGIT.
  234. 02940 01D9 CD 02 2E          JSR   DISPLAY1
  235. 02950 01DC BE 16             LDX   HIGH            ;MINUTES/HIGH DIGIT.
  236. 02960 01DE CD 02 32          JSR   DISPLAY2
  237. 02970 01E1 B6 19             LDA   HOUREG
  238. 02980 01E3 03 17 05          BRCLR 1,SWITCHES,OUTPUT3;BRANCH IF ALARM SET.
  239. 02990 01E6 0A 17 02          BRSET 5,SWITCHES,OUTPUT3;BRANCH, HOURS/SECONDS.
  240. 03000 01E9 B6 13             LDA   HOURS
  241. 03010 01EB A1 0C    OUTPUT3  CMP   #12             ;"12:
  242. 03020 01ED 25 04             BLO   OUTPUT4
  243. 03030 01EF 1D 00             BCLR  6,PORTA         ;TURN ON PM.
  244. 03040 01F1 20 02             BRA   OUTPUT5
  245. 03050 01F3 ;
  246. 03060 01F3 1C 00    OUTPUT4  BSET  6,PORTA         ;TURN ON AM.
  247. 03070 01F5 B6 19    OUTPUT5  LDA   HOUREG
  248. 03080 01F7 01 17 06          BRCLR 0,SWITCHES,OUTPUT6;BRANCH IF CLOCK SET.
  249. 03090 01FA 03 17 03          BRCLR 1,SWITCHES,OUTPUT6;OR ALARM SET.
  250. 03100 01FD 0B 17 11          BRCLR 5,SWITCHES,OUTPUT8;BRANCH IF MINS/SECS.
  251. 03110 0200 00 1B 0E OUTPUT6  BRSET 0,MODE,OUTPUT8  ;BRANCH IF 24 HOUR MODE.
  252. 03120 0203 A1 00             CMP   #0              ;"0 HOURS?
  253. 03130 0205 26 04             BNE   OUTPUT7
  254. 03140 0207 A6 0C             LDA   #12             ;MAKE 12 HOUR FORMAT.
  255. 03150 0209 20 06             BRA   OUTPUT8
  256. 03160 020B ;
  257. 03170 020B A1 0D    OUTPUT7  CMP   #13
  258. 03180 020D 25 02             BLO   OUTPUT8         ;NO ADJUSTMENT.
  259. 03190 020F A0 0C             SUB   #12             ;MAKE 12 HOUR FORMAT.
  260. 03200 0211 CD 02 1F OUTPUT8  JSR   CONVERT         ;CONVERT TO BCD.
  261.  
  262.  
  263.  
  264.  
  265.  
  266.  
  267. ......PAGE 00005 
  268.  
  269. LINE# LOC  CODE     SOURCE                         COMMENT
  270.  
  271.  
  272. 03210 0214 BE 15             LDX   LOW             ;HOURS/LOW DIGIT.
  273. 03220 0216 CD 02 36          JSR   DISPLAY3
  274. 03230 0219 BE 16             LDX   HIGH            ;HOURS/HIGH DIGIT.
  275. 03240 021B CD 02 3A          JSR   DISPLAY4
  276. 03250 021E 81                RTS
  277. 03260 021F ;
  278. 03270 021F ;
  279. 03280 021F ;*** BINARY-TO-BCD CONVERSION ROUTINE ***
  280. 03290 021F ;
  281. 03300 021F ;ENTER WITH ACC = PURE BINARY NUMBER;
  282. 03310 021F ;EXIT WITH HIGH = MS BYTE, BCD FORMAT,
  283. 03320 021F ;AND       LOW  = LS BYTE, BCD FORMAT.
  284. 03330 021F ;X IS CORRUPTED.
  285. 03340 021F ;
  286. 03350 021F 5F       CONVERT  CLR   X               ;CLEAR HIGH ORDER.
  287. 03360 0220 A1 0A    CONVERT1 CMP   #10             ;"LESS THAN 10?
  288. 03370 0222 25 05             BLO   DONE            ;YES, ALL DONE.
  289. 03380 0224 5C                INC   X               ;ELSE BUMP TENS PLACE.
  290. 03390 0225 A0 0A             SUB   #10             ;REPEATED SUBTRACTIONS.
  291. 03400 0227 20 F7             BRA   CONVERT1        ;KEEP GOING.
  292. 03410 0229 BF 16    DONE     STX   HIGH            ;HIGH ORDER DIGIT.
  293. 03420 022B B7 15             STA   LOW             ;LOW ORDER DIGIT.
  294. 03430 022D 81                RTS
  295. 03440 022E ;
  296. 03450 022E ;
  297. 03460 022E ;*** DISPLAY DRIVER ROUTINES ***
  298. 03470 022E ;
  299. 03480 022E ;ENTER WITH X = INDEX INTO 'TABLE'
  300. 03490 022E ;
  301. 03500 022E ;
  302. 03510 022E A6 F7    DISPLAY1 LDA   #%11110111      ;MINUTES, LOW DIGIT.
  303. 03520 0230 20 1C             BRA   DISPLAY6
  304. 03530 0232 ;
  305. 03540 0232 A6 FB    DISPLAY2 LDA   #%11111011      ;MINUTES, HIGH DIGIT.
  306. 03550 0234 20 18             BRA   DISPLAY6
  307. 03560 0236 ;
  308. 03570 0236 A6 FD    DISPLAY3 LDA   #%11111101      ;HOURS, LOW DIGIT.
  309. 03580 0238 20 14             BRA   DISPLAY6
  310. 03590 023A ;
  311. 03600 023A A6 FE    DISPLAY4 LDA   #%11111110      ;HOURS, HIGH DIGIT.
  312. 03610 023C 00 1B 0F          BRSET 0,MODE,DISPLAY6 ;BRANCH IF 24 HOUR MODE.
  313. 03620 023F 01 17 06          BRCLR 0,SWITCHES,DISPLAY5;BRANCH IF CLOCK SET.
  314. 03630 0242 03 17 03          BRCLR 1,SWITCHES,DISPLAY5;BRANCH IF ALARM SET.
  315. 03640 0245 0B 17 06          BRCLR 5,SWITCHES,DISPLAY6;BRANCH IF MIN/SEC.
  316. 03650 0248 A3 00    DISPLAY5 CPX   #0              ;"A LEADING ZERO?
  317. 03660 024A 26 02             BNE   DISPLAY6        ;NO.
  318. 03670 024C AE 0A             LDX   #10             ;ELSE BLANK IT OUT.
  319. 03680 024E B7 02    DISPLAY6 STA   PORTC           ;TURN OFF CHOSEN PORT.
  320. 03690 0250 D6 02 F8          LDA   TABLE,X2        ;GET LED PATTERN.
  321. 03700 0253 BA 14             ORA   COLON           ;SET/CLR SECONDS COLON.
  322. 03710 0255 B7 01             STA   PORTB           ;SEND LED PATTERN.
  323. 03720 0257 ;
  324. 03730 0257 01 1F 07          BRCLR 0,ALARM,DISPLAY7;BRANCH, ALARM FLAG OFF.
  325. 03740 025A 0E 14 04          BRSET 7,COLON,DISPLAY7;ELSE WAIT FOR COLON ON
  326. 03750 025D 1F 00             BCLR  7,PORTA         ;AND THEN BEEP BUZZER.
  327.  
  328.  
  329.  
  330.  
  331.  
  332.  
  333. ......PAGE 00006 
  334.  
  335. LINE# LOC  CODE     SOURCE                         COMMENT
  336.  
  337.  
  338. 03760 025F 20 02             BRA   DISPLAY8
  339. 03770 0261 ;
  340. 03780 0261 1E 00    DISPLAY7 BSET  7,PORTA         ;ELSE TURN OFF BUZZER.
  341. 03790 0263 CD 02 67 DISPLAY8 JSR   DELAY           ;GET RID OF GHOSTING.
  342. 03800 0266 81                RTS
  343. 03810 0267 ;
  344. 03820 0267 ;
  345. 03830 0267 ;*** GENERAL PURPOSE DELAY ROUTINE ***
  346. 03840 0267 ;
  347. 03850 0267 ;
  348. 03860 0267 4F       DELAY    CLR   A
  349. 03870 0268 4A       DELAY1   DEC   A
  350. 03880 0269 26 FD             BNE   DELAY1
  351. 03890 026B 81                RTS
  352. 03900 026C ;
  353. 03910 026C ;
  354. 03920 026C ;***       MAIN UPDATE PROGRAM      ***
  355. 03930 026C ;***  DRIVEN BY EXTERNAL INTERRUPT  ***
  356. 03940 026C ;***  FROM THE 60 HZ LINE FREQUENCY ***
  357. 03950 026C ;
  358. 03960 026C ;
  359. 03970 026C 3C 10    UPDATE   INC   JIFFY           ;1/60TH OF SECOND COUNTER.
  360. 03980 026E B6 10             LDA   JIFFY
  361. 03990 0270 A1 1E             CMP   #30             ;"TIME TO TOGGLE COLON?
  362. 04000 0272 26 02             BNE   UPDATE1
  363. 04010 0274 1E 14             BSET  7,COLON         ;TURN OFF COLON.
  364. 04020 0276 A1 3C    UPDATE1  CMP   #60             ;"NEXT SECOND?
  365. 04030 0278 25 22             BLO   UPDATE3         ;BRANCH IF NOT TIME.
  366. 04040 027A 3F 10             CLR   JIFFY           ;START OVER.
  367. 04050 027C 1F 14             BCLR  7,COLON         ;TURN ON COLON.
  368. 04060 027E 3C 11             INC   SECONDS
  369. 04070 0280 B6 11             LDA   SECONDS
  370. 04080 0282 A1 3C             CMP   #60             ;"NEXT MINUTE?
  371. 04090 0284 25 16             BLO   UPDATE3
  372. 04100 0286 3F 11             CLR   SECONDS         ;START OVER.
  373. 04110 0288 3C 12             INC   MINUTES
  374. 04120 028A B6 12             LDA   MINUTES
  375. 04130 028C A1 3C             CMP   #60             ;"NEXT HOUR?
  376. 04140 028E 25 0C             BLO   UPDATE3
  377. 04150 0290 3F 12             CLR   MINUTES
  378. 04160 0292 3C 13             INC   HOURS
  379. 04170 0294 B6 13             LDA   HOURS
  380. 04180 0296 A1 18    UPDATE2  CMP   #24             ;"NEXT DAY?
  381. 04190 0298 26 02             BNE   UPDATE3
  382. 04200 029A 3F 13             CLR   HOURS
  383. 04210 029C 80       UPDATE3  RTI
  384. 04220 029D ;
  385. 04230 029D ;
  386. 04240 029D ;*** BUMP ROUTINE USED BY 'SET' ***
  387. 04250 029D ;
  388. 04260 029D ;
  389. 04270 029D 3C 18    BUMP     INC   MINREG
  390. 04280 029F B6 18             LDA   MINREG
  391. 04290 02A1 A1 3C             CMP   #60
  392. 04300 02A3 25 0C             BLO   BUMP1
  393.  
  394.  
  395.  
  396.  
  397.  
  398.  
  399. ......PAGE 00007 
  400.  
  401. LINE# LOC  CODE     SOURCE                         COMMENT
  402.  
  403.  
  404. 04310 02A5 3F 18             CLR   MINREG
  405. 04320 02A7 3C 19             INC   HOUREG
  406. 04330 02A9 B6 19             LDA   HOUREG
  407. 04340 02AB A1 18             CMP   #24
  408. 04350 02AD 26 02             BNE   BUMP1
  409. 04360 02AF 3F 19             CLR   HOUREG
  410. 04370 02B1 81       BUMP1    RTS
  411. 04380 02B2 ;
  412. 04390 02B2 ;
  413. 04400 02B2 ;*** MAIN SWITCH INPUT ROUTINE ***
  414. 04410 02B2 ;
  415. 04420 02B2 ;
  416. 04430 02B2 AE 14    INPUT    LDX   #20             ;DEBOUNCE CONSTANT.
  417. 04440 02B4 B6 00             LDA   PORTA           ;READ SWITCH PORT.
  418. 04450 02B6 A4 3F             AND   #%00111111      ;IGNORE OUTPUT LINES.
  419. 04460 02B8 B7 1A             STA   TEMP
  420. 04470 02BA B6 00    INPUT1   LDA   PORTA           ;READ SWITCHES AGAIN.
  421. 04480 02BC A4 3F             AND   #%00111111      ;IGNORE OUTPUT LINES.
  422. 04490 02BE B1 1A             CMP   TEMP            ;"SEEN IT BEFORE?
  423. 04500 02C0 26 F0             BNE   INPUT           ;NO, MUST BE BOUNCE.
  424. 04510 02C2 5A                DEC   X               ;YES.
  425. 04520 02C3 26 F5             BNE   INPUT1          ;TRY AGAIN TO BE SURE.
  426. 04530 02C5 ;
  427. 04540 02C5 1C 1A             BSET  6,TEMP          ;"BOTH CLOCK & ALARM?
  428. 04550 02C7 00 1A 0E          BRSET 0,TEMP,INPUT2   ;NO.
  429. 04560 02CA 02 1A 0B          BRSET 1,TEMP,INPUT2   ;NO.
  430. 04570 02CD 10 1A             BSET  0,TEMP          ;CLEAR CLOCK SET.
  431. 04580 02CF 12 1A             BSET  1,TEMP          ;CLEAR ALARM SET.
  432. 04590 02D1 1D 1A             BCLR  6,TEMP          ;BOTH PUSHED NOW.
  433. 04600 02D3 0D 17 02          BRCLR 6,SWITCHES,INPUT2;BOTH PUSHED BEFORE, EXIT.
  434. 04610 02D6 3C 1B             INC   MODE            ;ELSE TOGGLE 12/24 MODE.
  435. 04620 02D8 B6 1A    INPUT2   LDA   TEMP            ;ACCEPT NEW SWITCH PATTERN.
  436. 04630 02DA B7 17             STA   SWITCHES
  437. 04640 02DC 09 17 02          BRCLR 4,SWITCHES,INPUT3;BRANCH, ALARM SWITCH ON.
  438. 04650 02DF 11 1F             BCLR  0,ALARM         ;ELSE CLEAR ALARM FLAG.
  439. 04660 02E1 81       INPUT3   RTS
  440. 04670 02E2 ;
  441. 04680 02E2 ;
  442. 04690 02E2 ;*** SEE IF TIME MATCHES ALARM TIME ***
  443. 04700 02E2 ;
  444. 04710 02E2 ;
  445. 04720 02E2 B6 11    CHECKALM LDA   SECONDS         ;ONLY TURN ON DURING
  446. 04730 02E4 26 11             BNE   CHECKA1         ;1ST SECOND.
  447. 04740 02E6 B6 1D             LDA   ALMIN           ;"MINUTES MATCH?
  448. 04750 02E8 B1 12             CMP   MINUTES
  449. 04760 02EA 26 0B             BNE   CHECKA1
  450. 04770 02EC B6 1E             LDA   ALHOUR          ;"HOURS MATCH?
  451. 04780 02EE B1 13             CMP   HOURS
  452. 04790 02F0 26 05             BNE   CHECKA1
  453. 04800 02F2 08 17 02          BRSET 4,SWITCHES,CHECKA1;ALARM SWITCH OFF.
  454. 04810 02F5 10 1F             BSET  0,ALARM         ;SET ALARM FLAG.
  455. 04820 02F7 81       CHECKA1  RTS
  456. 04830 02F8 ;
  457. 04840 02F8 ;
  458. 04850 02F8 ;*** TABLE OF SEVEN-SEGMENT LED PATTERNS ***
  459.  
  460.  
  461.  
  462.  
  463.  
  464.  
  465. ......PAGE 00008 
  466.  
  467. LINE# LOC  CODE     SOURCE                         COMMENT
  468.  
  469.  
  470. 04860 02F8 ;
  471. 04870 02F8 ;
  472. 04880 02F8 40       TABLE    .BYTE %01000000       ;0.
  473. 04890 02F9 79                .BYTE %01111001       ;1.
  474. 04900 02FA 24                .BYTE %00100100       ;2.
  475. 04910 02FB 30                .BYTE %00110000       ;3.
  476. 04920 02FC 19                .BYTE %00011001       ;4.
  477. 04930 02FD 12                .BYTE %00010010       ;5.
  478. 04940 02FE 02                .BYTE %00000010       ;6.
  479. 04950 02FF 78                .BYTE %01111000       ;7.
  480. 04960 0300 00                .BYTE %00000000       ;8.
  481. 04970 0301 18                .BYTE %00011000       ;9.
  482. 04980 0302 7F                .BYTE %01111111       ;BLANKED OUTPUT.
  483. 04990 0303 09                .BYTE %00001001       ;H.
  484. 05000 0304 06                .BYTE %00000110       ;E.
  485. 05010 0305 47                .BYTE %01000111       ;L.
  486. 05020 0306 0C                .BYTE %00001100       ;P.
  487. 05030 0307 ;
  488. 05040 0307 ;
  489. 05050 0307                   *     =MOR
  490. 05060 0784 FF                .BYTE %11111111       ;SELECT RC CLOCK.
  491. 05070 0785                   *     =EXTIRQ
  492. 05080 07FA 02 6C             .WORD UPDATE          ;INTERRUPT ROUTINE.
  493. 05090 07FC                   *     =RESET
  494. 05100 07FE 01 00             .WORD INITIAL         ;MAIN ROUTINE.
  495. 05110 0800 ;
  496. 05120 0800 ;
  497. 05130 0800                   .END
  498.