READ.2.0.─
FILE INFORMATION
FILENAME(S): READ.2.0.─
FILE TYPE(S): PRG
FILE SIZE: 4.2K
FIRST SEEN: 2025-12-02 02:15:36
APPEARS ON: 1 disk(s)
FILE HASH
94946d77523cfd81d8dcd0d663a1214f2237c09fb01ded247b7851a353e2d759
FOUND ON DISKS (1 DISKS)
| DISK TITLE | FILENAME | FILE TYPE | COLLECTION | TRACK | SECTOR | ACTIONS |
|---|---|---|---|---|---|---|
| TIM S TIMER 2 0 | READ.2.0.─ | PRG | The BAM Archive | 10 | 6 | DOWNLOAD FILE |
FILE CONTENT & ANALYSIS
00000000: 00 0A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A |..**************| 00000010: 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A |****************| 00000020: 2A 2A 0D 2A A0 72 65 61 64 A0 6F 66 A0 72 65 61 |**.*.read.of.rea| 00000030: 6C A0 74 69 6D 65 A0 63 6C 6F 63 6B A0 23 32 2E |l.time.clock.#2.| 00000040: 30 A0 2A 0D 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A |0.*.************| 00000050: 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A |****************| 00000060: 2A 2A 2A 2A 0D 2A A0 A0 A0 A0 A0 A0 A0 A0 A0 A0 |****.*..........| 00000070: A0 A0 A0 A0 A0 A0 A0 A0 A0 A0 A0 A0 A0 A0 A0 A0 |................| 00000080: A0 A0 A0 A0 2A 0D 2A A0 A0 A0 A0 A0 A0 A0 A0 A0 |....*.*.........| 00000090: 6D 61 79 A0 32 39 A0 31 39 38 37 A0 A0 A0 A0 A0 |may.29.1987.....| 000000A0: A0 A0 A0 A0 A0 2A 0D 2A A0 A0 A0 A0 A0 A0 A0 A0 |.....*.*........| 000000B0: A0 A0 A0 A0 A0 A0 A0 A0 A0 A0 A0 A0 A0 A0 A0 A0 |................| 000000C0: A0 A0 A0 A0 A0 A0 2A 0D 2A A0 A0 A0 A0 A0 A0 62 |......*.*......b| 000000D0: 79 A0 74 69 6D A0 67 A0 63 6F 72 63 6F 72 61 6E |y.tim.g.corcoran| 000000E0: A0 A0 A0 A0 A0 A0 A0 2A 0D 2A A0 A0 A0 A0 A0 A0 |.......*.*......| 000000F0: A0 A0 A0 A0 A0 A0 A0 A0 A0 A0 A0 A0 A0 A0 A0 A0 |................| 00000100: A0 A0 A0 A0 A0 A0 A0 A0 2A 0D 2A 2A 2A 2A 2A 2A |........*.******| 00000110: 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A |****************| 00000120: 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 0D 2A A0 74 68 69 |**********.*.thi| 00000130: 73 A0 73 2F 77 A0 69 73 A0 70 61 72 74 A0 6F 66 |s.s/w.is.part.of| 00000140: A0 74 68 65 A0 72 74 63 A0 A0 2A 0D 2A A0 73 68 |.the.rtc..*.*.sh| 00000150: 61 72 65 77 61 72 65 A0 70 61 63 6B 61 67 65 2E |areware.package.| 00000160: A0 69 74 A0 69 73 A0 6F 6B 61 79 2A 0D 2A A0 74 |.it.is.okay*.*.t| 00000170: 6F A0 64 69 73 74 72 69 62 75 74 65 A0 61 6E 64 |o.distribute.and| 00000180: A0 73 68 61 72 65 A0 62 75 74 A0 A0 2A 0D 2A A0 |.share.but..*.*.| 00000190: 6E 6F 74 A0 74 6F A0 73 65 6C 6C 2E A0 A0 A0 A0 |not.to.sell.....| 000001A0: A0 A0 A0 A0 A0 A0 A0 A0 A0 A0 A0 A0 A0 2A 0D 2A |.............*.*| 000001B0: A0 A0 A0 A0 A0 A0 A0 A0 A0 A0 A0 A0 A0 A0 A0 A0 |................| 000001C0: A0 A0 A0 A0 A0 A0 A0 A0 A0 A0 A0 A0 A0 A0 2A 0D |..............*.| 000001D0: 2A A0 70 6C 65 61 73 65 A0 63 6F 6E 73 69 64 65 |*.please.conside| 000001E0: 72 A0 73 75 70 70 6F 72 74 69 6E 67 A0 A0 A0 2A |r.supporting...*| 000001F0: 0D 2A A0 A0 A0 6D 79 73 74 69 63 A0 6A 69 6D 27 |.*...mystic.jim'| 00000200: 73 A0 73 2F 77 A0 73 79 73 74 65 6D A0 A0 A0 A0 |s.s/w.system....| 00000210: 2A 0D 2A A0 A0 A0 A0 A0 A0 A0 A0 A0 A0 A0 A0 A0 |*.*.............| 00000220: A0 A0 A0 A0 A0 A0 A0 A0 A0 A0 A0 A0 A0 A0 A0 A0 |................| 00000230: A0 2A 0D 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A |.*.*************| 00000240: 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A |****************| 00000250: 2A 2A 2A 0D 2A 0D 2A 0D 2A 0D 20 6F 72 67 20 24 |***.*.*.*. org $| 00000260: 34 35 38 30 0D 64 64 72 61 20 65 71 75 20 24 64 |4580.ddra equ $d| 00000270: 63 30 32 0D 64 72 61 20 65 71 75 20 24 64 63 30 |c02.dra equ $dc0| 00000280: 30 0D 68 6F 75 72 73 20 65 71 75 20 24 34 35 37 |0.hours equ $457| 00000290: 30 0D 6D 69 6E 73 20 65 71 75 20 24 34 35 37 31 |0.mins equ $4571| 000002A0: 0D 73 65 63 73 20 65 71 75 20 24 34 35 37 32 0D |.secs equ $4572.| 000002B0: 74 65 6D 70 20 65 71 75 20 24 34 35 37 33 0D 74 |temp equ $4573.t| 000002C0: 6D 70 31 20 65 71 75 20 24 34 35 37 34 0D 74 6D |mp1 equ $4574.tm| 000002D0: 70 32 20 65 71 75 20 24 34 35 37 35 0D 68 73 65 |p2 equ $4575.hse| 000002E0: 63 73 20 65 71 75 20 24 34 35 37 36 0D 63 6F 75 |cs equ $4576.cou| 000002F0: 6E 74 20 65 71 75 20 24 34 35 37 37 0D 2A 0D 2A |nt equ $4577.*.*| 00000300: 0D 2A 0D 2A 0D 2A 0D 20 6C 64 61 20 24 30 31 20 |.*.*.*. lda $01 | 00000310: 3B 67 65 74 A0 6D 65 6D A0 63 6F 6E 66 69 67 0D |;get.mem.config.| 00000320: 20 70 68 61 20 20 3B 73 61 76 65 A0 69 74 0D 20 | pha ;save.it. | 00000330: 6C 64 61 20 23 24 33 35 20 3B 74 75 72 6E A0 6F |lda #$35 ;turn.o| 00000340: 6E A0 69 2F 6F A0 72 65 67 69 6F 6E 0D 20 73 74 |n.i/o.region. st| 00000350: 61 20 24 30 31 0D 73 74 61 72 74 20 73 65 69 20 |a $01.start sei | 00000360: 20 3B 69 6E 74 A0 6F 66 66 0D 72 64 72 74 63 20 | ;int.off.rdrtc | 00000370: 6C 64 61 20 64 72 61 20 3B 72 65 61 64 A0 64 72 |lda dra ;read.dr| 00000380: 61 0D 20 73 74 61 20 24 30 32 20 3B 73 61 76 65 |a. sta $02 ;save| 00000390: A0 69 74 0D 20 6C 64 61 20 64 64 72 61 20 3B 72 |.it. lda ddra ;r| 000003A0: 65 61 64 A0 64 64 72 61 0D 20 73 74 61 20 24 30 |ead.ddra. sta $0| 000003B0: 33 20 3B 73 61 76 65 A0 69 74 0D 20 6C 64 61 20 |3 ;save.it. lda | 000003C0: 23 24 66 20 3B 6C 6F 61 64 A0 6E 65 77 A0 63 6F |#$f ;load.new.co| 000003D0: 6E 66 69 67 0D 20 73 74 61 20 64 64 72 61 20 3B |nfig. sta ddra ;| 000003E0: 34 A0 6F 2F 70 27 73 0D 20 6C 64 61 20 23 24 66 |4.o/p's. lda #$f| 000003F0: 20 3B 73 74 61 74 65 73 0D 20 73 74 61 20 64 72 | ;states. sta dr| 00000400: 61 20 3B 63 65 A0 74 72 75 65 2C A0 73 63 6C 6B |a ;ce.true,.sclk| 00000410: A0 6C 6F 77 0D 2A 0D 2A 0D 2A 0D 2A A0 72 65 61 |.low.*.*.*.*.rea| 00000420: 64 A0 72 6F 75 74 69 6E 65 0D 2A 0D 20 6C 64 61 |d.routine.*. lda| 00000430: 20 23 24 64 63 30 66 20 3B 72 65 61 64 A0 63 72 | #$dc0f ;read.cr| 00000440: 62 A0 66 6F 72 A0 63 75 72 72 65 6E 74 A0 73 65 |b.for.current.se| 00000450: 74 74 69 6E 67 0D 20 73 74 61 20 74 6D 70 31 20 |tting. sta tmp1 | 00000460: 3B 73 61 76 65 A0 69 74 A0 66 6F 72 A0 6E 6F 77 |;save.it.for.now| 00000470: 0D 20 61 6E 64 20 23 24 37 66 20 3B 74 6F 64 A0 |. and #$7f ;tod.| 00000480: 73 65 6C 65 63 74 0D 20 73 74 61 20 24 64 63 30 |select. sta $dc0| 00000490: 66 20 3B 73 74 6F 72 65 A0 69 74 0D 20 6A 73 72 |f ;store.it. jsr| 000004A0: 20 73 6C 63 74 20 3B 73 65 6C 65 63 74 A0 63 6C | slct ;select.cl| 000004B0: 6F 63 6B A0 63 68 69 70 0D 20 6A 73 72 20 72 64 |ock.chip. jsr rd| 000004C0: 62 79 74 20 3B 72 65 61 64 A0 73 65 63 73 2F 31 |byt ;read.secs/1| 000004D0: 30 30 0D 20 6C 73 72 20 20 3B 73 68 69 66 74 A0 |00. lsr ;shift.| 000004E0: 72 69 67 68 74 A0 34 A0 70 6C 61 63 65 73 0D 20 |right.4.places. | 000004F0: 6C 73 72 20 20 3B 0D 20 6C 73 72 20 20 3B 0D 20 |lsr ;. lsr ;. | 00000500: 6C 73 72 20 20 3B 0D 20 73 74 61 20 68 73 65 63 |lsr ;. sta hsec| 00000510: 73 20 3B 73 61 76 65 A0 66 6F 72 A0 6E 6F 77 0D |s ;save.for.now.| 00000520: 20 6A 73 72 20 72 64 62 79 74 20 3B 72 65 61 64 | jsr rdbyt ;read| 00000530: A0 73 65 63 73 0D 20 73 74 61 20 73 65 63 73 20 |.secs. sta secs | 00000540: 3B 73 61 76 65 A0 66 6F 72 A0 6E 6F 77 0D 20 6A |;save.for.now. j| 00000550: 73 72 20 72 64 62 79 74 20 3B 72 65 61 64 A0 6D |sr rdbyt ;read.m| 00000560: 69 6E 73 0D 20 73 74 61 20 6D 69 6E 73 20 3B 73 |ins. sta mins ;s| 00000570: 61 76 65 A0 69 74 A0 66 6F 72 A0 6E 6F 77 0D 20 |ave.it.for.now. | 00000580: 6A 73 72 20 72 64 62 79 74 20 3B 72 65 61 64 A0 |jsr rdbyt ;read.| 00000590: 68 6F 75 72 73 0D 20 74 61 78 20 20 3B 74 72 61 |hours. tax ;tra| 000005A0: 6E 73 66 65 72 A0 74 6F A0 78 A0 72 65 67 2E 0D |nsfer.to.x.reg..| 000005B0: 20 61 6E 64 20 23 24 31 66 20 3B 63 6C 65 61 72 | and #$1f ;clear| 000005C0: A0 33 A0 6D 73 62 27 73 0D 20 63 6D 70 20 23 24 |.3.msb's. cmp #$| 000005D0: 31 32 20 3B 69 73 A0 69 74 A0 74 77 65 6C 76 65 |12 ;is.it.twelve| 000005E0: 3F 0D 20 62 6E 65 20 6E 6F 77 61 79 20 3B 6E 6F |?. bne noway ;no| 000005F0: A0 69 74 A0 69 73 6E 27 74 A0 74 77 65 6C 76 65 |.it.isn't.twelve| 00000600: 0D 20 74 78 61 20 20 3B 72 65 74 72 69 65 76 65 |. txa ;retrieve| 00000610: 0D 20 65 6F 72 20 23 24 32 30 20 3B 74 6F 67 67 |. eor #$20 ;togg| 00000620: 6C 65 A0 61 6D 2F 70 6D A0 62 69 74 0D 20 74 61 |le.am/pm.bit. ta| 00000630: 78 0D 6E 6F 77 61 79 20 74 78 61 20 20 3B 72 65 |x.noway txa ;re| 00000640: 74 72 69 65 76 65 0D 20 61 6E 64 20 23 24 31 66 |trieve. and #$1f| 00000650: 20 3B 63 6C 65 61 72 A0 33 A0 6D 73 62 27 73 0D | ;clear.3.msb's.| 00000660: 20 73 74 61 20 68 6F 75 72 73 0D 20 74 78 61 20 | sta hours. txa | 00000670: 20 3B 72 65 74 72 69 65 76 65 A0 69 74 A0 66 72 | ;retrieve.it.fr| 00000680: 6F 6D A0 78 A0 72 65 67 0D 20 61 6E 64 20 23 24 |om.x.reg. and #$| 00000690: 32 30 20 3B 69 73 6F 6C 61 74 65 A0 61 6D 2F 70 |20 ;isolate.am/p| 000006A0: 6D A0 62 69 74 0D 20 61 73 6C 0D 20 61 73 6C 0D |m.bit. asl. asl.| 000006B0: 20 6F 72 61 20 68 6F 75 72 73 20 3B 70 75 74 A0 | ora hours ;put.| 000006C0: 68 6F 75 72 73 A0 62 61 63 6B A0 69 6E 0D 20 73 |hours.back.in. s| 000006D0: 74 61 20 74 6D 70 32 20 3B 73 61 76 65 A0 69 74 |ta tmp2 ;save.it| 000006E0: A0 66 6F 72 A0 6C 61 74 65 72 0D 20 73 74 61 20 |.for.later. sta | 000006F0: 24 64 63 30 62 20 3B 73 61 76 65 A0 74 6F A0 74 |$dc0b ;save.to.t| 00000700: 68 65 A0 63 69 61 A0 74 6F 64 0D 20 63 6D 70 20 |he.cia.tod. cmp | 00000710: 23 24 31 32 20 3B 69 73 A0 69 74 A0 74 77 65 6C |#$12 ;is.it.twel| 00000720: 76 65 3F 0D 20 62 6E 65 20 74 65 73 74 20 3B 6E |ve?. bne test ;n| 00000730: 6F 3F A0 67 6F 74 6F A0 74 65 73 74 0D 20 6C 64 |o?.goto.test. ld| 00000740: 61 20 23 24 30 20 3B 6F 74 68 65 72 77 69 73 65 |a #$0 ;otherwise| 00000750: A0 73 65 74 A0 68 6F 75 72 A0 74 6F A0 30 0D 74 |.set.hour.to.0.t| 00000760: 65 73 74 20 62 69 74 20 74 6D 70 32 20 3B 61 6D |est bit tmp2 ;am| 00000770: 2F 70 6D A0 74 65 73 74 0D 20 62 70 6C 20 69 74 |/pm.test. bpl it| 00000780: 73 61 6D 20 3B 6F 6E A0 61 6D A0 67 6F 74 6F A0 |sam ;on.am.goto.| 00000790: 69 74 73 61 6D 0D 20 73 65 64 20 20 3B 64 65 63 |itsam. sed ;dec| 000007A0: 69 6D 61 6C A0 6D 6F 64 65 0D 20 63 6C 63 20 20 |imal.mode. clc | 000007B0: 3B 63 6C 65 61 72 A0 63 61 72 72 79 0D 20 61 64 |;clear.carry. ad| 000007C0: 63 20 23 24 31 32 20 3B 6D 61 6B 65 A0 69 74 A0 |c #$12 ;make.it.| 000007D0: 32 34 A0 68 72 A0 63 6C 6F 63 6B A0 66 6F 72 6D |24.hr.clock.form| 000007E0: 61 74 0D 20 63 6C 64 20 20 3B 6C 65 61 76 65 A0 |at. cld ;leave.| 000007F0: 64 65 63 69 6D 61 6C A0 6D 6F 64 65 0D 69 74 73 |decimal.mode.its| 00000800: 61 6D 20 6A 73 72 20 62 63 64 74 68 78 20 3B 63 |am jsr bcdthx ;c| 00000810: 6F 6E 76 65 72 74 A0 74 6F A0 68 65 78 0D 20 73 |onvert.to.hex. s| 00000820: 74 61 20 24 38 35 31 39 20 3B 73 61 76 65 A0 74 |ta $8519 ;save.t| 00000830: 6F A0 67 65 6F 73 A0 68 6F 75 72 73 0D 20 6C 64 |o.geos.hours. ld| 00000840: 61 20 6D 69 6E 73 20 3B 72 65 74 72 69 65 76 65 |a mins ;retrieve| 00000850: A0 6D 69 6E 75 74 65 73 0D 20 73 74 61 20 24 64 |.minutes. sta $d| 00000860: 63 30 61 20 3B 73 61 76 65 A0 74 6F A0 74 6F 64 |c0a ;save.to.tod| 00000870: 0D 20 6A 73 72 20 62 63 64 74 68 78 20 3B 63 6F |. jsr bcdthx ;co| 00000880: 6E 76 65 72 74 A0 74 6F A0 68 65 78 0D 20 73 74 |nvert.to.hex. st| 00000890: 61 20 24 38 35 31 61 20 3B 73 61 76 65 A0 74 6F |a $851a ;save.to| 000008A0: A0 67 65 6F 73 A0 6D 69 6E 73 0D 20 6C 64 61 20 |.geos.mins. lda | 000008B0: 73 65 63 73 20 3B 72 65 74 72 69 65 76 65 A0 73 |secs ;retrieve.s| 000008C0: 65 63 6F 6E 64 73 0D 20 73 74 61 20 24 64 63 30 |econds. sta $dc0| 000008D0: 39 20 3B 73 61 76 65 A0 74 6F A0 74 6F 64 0D 20 |9 ;save.to.tod. | 000008E0: 6A 73 72 20 62 63 64 74 68 78 20 3B 63 6F 6E 76 |jsr bcdthx ;conv| 000008F0: 65 72 74 A0 74 6F A0 68 65 78 0D 20 73 74 61 20 |ert.to.hex. sta | 00000900: 24 38 35 31 62 20 3B 73 61 76 65 A0 74 6F A0 67 |$851b ;save.to.g| 00000910: 65 6F 73 A0 73 65 63 73 0D 20 6C 64 61 20 68 73 |eos.secs. lda hs| 00000920: 65 63 73 20 3B 72 65 74 72 69 65 76 65 A0 73 65 |ecs ;retrieve.se| 00000930: 63 73 2F 31 30 30 0D 20 73 74 61 20 24 64 63 30 |cs/100. sta $dc0| 00000940: 38 20 3B 26 A0 73 74 61 72 74 A0 75 70 A0 74 68 |8 ;&.start.up.th| 00000950: 65 A0 74 6F 64 A0 63 6C 6F 63 6B 0D 20 6A 73 72 |e.tod.clock. jsr| 00000960: 20 62 63 64 74 68 78 20 3B 63 6F 6E 76 65 72 74 | bcdthx ;convert| 00000970: 0D 20 73 74 61 20 24 38 35 31 63 20 3B 73 61 76 |. sta $851c ;sav| 00000980: 65 A0 74 6F A0 67 65 6F 73 A0 73 65 63 73 2F 31 |e.to.geos.secs/1| 00000990: 30 30 0D 20 6A 73 72 20 72 64 62 79 74 20 3B 72 |00. jsr rdbyt ;r| 000009A0: 65 61 64 A0 64 61 79 A0 26 A0 69 67 6E 6F 72 65 |ead.day.&.ignore| 000009B0: 0D 20 6A 73 72 20 72 64 62 79 74 20 3B 72 65 61 |. jsr rdbyt ;rea| 000009C0: 64 A0 64 61 74 65 0D 20 6A 73 72 20 62 63 64 74 |d.date. jsr bcdt| 000009D0: 68 78 20 3B 63 6F 6E 76 65 72 74 A0 74 6F A0 68 |hx ;convert.to.h| 000009E0: 65 78 0D 20 73 74 61 20 24 38 35 31 38 20 3B 73 |ex. sta $8518 ;s| 000009F0: 61 76 65 A0 74 6F A0 67 65 6F 73 A0 64 61 79 0D |ave.to.geos.day.| 00000A00: 20 6A 73 72 20 72 64 62 79 74 20 3B 72 65 61 64 | jsr rdbyt ;read| 00000A10: A0 6D 6F 6E 74 68 0D 20 6A 73 72 20 62 63 64 74 |.month. jsr bcdt| 00000A20: 68 78 20 3B 63 6F 6E 76 65 72 74 A0 74 6F A0 68 |hx ;convert.to.h| 00000A30: 65 78 0D 20 73 74 61 20 24 38 35 31 37 20 3B 73 |ex. sta $8517 ;s| 00000A40: 61 76 65 A0 74 6F A0 67 65 6F 73 A0 6D 6F 6E 74 |ave.to.geos.mont| 00000A50: 68 0D 20 6A 73 72 20 72 64 62 79 74 20 3B 72 65 |h. jsr rdbyt ;re| 00000A60: 61 64 A0 79 65 61 72 0D 20 6A 73 72 20 62 63 64 |ad.year. jsr bcd| 00000A70: 74 68 78 20 3B 63 6F 6E 76 65 72 74 A0 74 6F A0 |thx ;convert.to.| 00000A80: 68 65 78 0D 20 73 74 61 20 24 38 35 31 36 20 3B |hex. sta $8516 ;| 00000A90: 73 61 76 65 A0 74 6F A0 67 65 6F 73 A0 79 65 61 |save.to.geos.yea| 00000AA0: 72 0D 20 6C 64 61 20 23 24 65 20 3B 64 65 73 65 |r. lda #$e ;dese| 00000AB0: 6C 65 63 74 A0 74 68 65 A0 63 68 69 70 0D 20 73 |lect.the.chip. s| 00000AC0: 74 61 20 64 72 61 0D 66 69 6E 69 73 68 20 70 6C |ta dra.finish pl| 00000AD0: 61 20 20 3B 67 65 74 A0 6F 6C 64 A0 6D 65 6D A0 |a ;get.old.mem.| 00000AE0: 63 6F 6E 66 69 67 0D 20 73 74 61 20 24 30 31 20 |config. sta $01 | 00000AF0: 3B 73 65 74 A0 69 74 0D 20 63 6C 69 20 20 3B 65 |;set.it. cli ;e| 00000B00: 6E 61 62 6C 65 A0 69 6E 74 65 72 72 75 70 74 73 |nable.interrupts| 00000B10: 0D 20 6A 73 72 20 24 63 32 32 63 20 3B 72 65 6C |. jsr $c22c ;rel| 00000B20: 6F 61 64 A0 64 65 73 6B 74 6F 70 0D 2A 0D 2A 0D |oad.desktop.*.*.| 00000B30: 2A 0D 2A 0D 2A A0 77 72 69 74 65 A0 61 A0 62 79 |*.*.*.write.a.by| 00000B40: 74 65 A0 74 6F A0 74 68 65 A0 72 74 63 0D 2A 0D |te.to.the.rtc.*.| 00000B50: 77 72 74 62 79 74 20 74 61 78 20 20 3B 73 61 76 |wrtbyt tax ;sav| 00000B60: 65 A0 64 61 74 61 A0 62 79 74 65 0D 20 6C 64 79 |e.data.byte. ldy| 00000B70: 20 23 24 38 20 3B 73 65 74 A0 75 70 A0 63 6F 75 | #$8 ;set.up.cou| 00000B80: 6E 74 0D 20 6C 64 61 20 23 24 65 20 3B 69 6E 69 |nt. lda #$e ;ini| 00000B90: 74 69 61 6C A0 63 6F 6E 66 69 67 0D 20 73 74 61 |tial.config. sta| 00000BA0: 20 64 72 61 20 3B 6F 75 74 70 75 74 A0 65 6E 61 | dra ;output.ena| 00000BB0: 62 6C 65 A0 6F 66 66 0D 20 74 78 61 20 20 3B 72 |ble.off. txa ;r| 00000BC0: 65 74 72 69 65 76 65 A0 64 61 74 61 0D 77 6C 6F |etrieve.data.wlo| 00000BD0: 6F 70 20 61 6E 64 20 23 24 31 20 3B 63 6C 72 A0 |op and #$1 ;clr.| 00000BE0: 61 6C 6C A0 62 75 74 A0 6C 73 62 0D 20 6F 72 61 |all.but.lsb. ora| 00000BF0: 20 23 24 34 20 3B 73 65 74 A0 75 70 A0 66 6F 72 | #$4 ;set.up.for| 00000C00: A0 77 72 69 74 65 0D 20 73 74 61 20 64 72 61 0D |.write. sta dra.| 00000C10: 20 6F 72 61 20 23 24 65 20 3B 77 72 69 74 65 A0 | ora #$e ;write.| 00000C20: 64 61 74 61 A0 62 69 74 0D 20 73 74 61 20 64 72 |data.bit. sta dr| 00000C30: 61 0D 20 64 65 79 20 20 3B 64 65 63 72 65 6D 65 |a. dey ;decreme| 00000C40: 6E 74 A0 63 6F 75 6E 74 0D 20 62 65 71 20 77 64 |nt.count. beq wd| 00000C50: 6F 6E 65 20 3B 66 69 6E 69 73 68 65 64 3F 0D 20 |one ;finished?. | 00000C60: 74 78 61 20 20 3B 67 65 74 A0 64 61 74 61 0D 20 |txa ;get.data. | 00000C70: 6C 73 72 20 20 3B 73 65 6C 65 63 74 A0 6E 65 78 |lsr ;select.nex| 00000C80: 74 A0 62 69 74 0D 20 74 61 78 20 20 3B 73 61 76 |t.bit. tax ;sav| 00000C90: 65 A0 6E 65 77 A0 64 61 74 61 0D 20 6A 6D 70 20 |e.new.data. jmp | 00000CA0: 77 6C 6F 6F 70 20 3B 6C 6F 6F 70 0D 77 64 6F 6E |wloop ;loop.wdon| 00000CB0: 65 20 72 74 73 0D 2A 0D 2A 0D 2A 0D 2A 0D 2A A0 |e rts.*.*.*.*.*.| 00000CC0: 72 65 61 64 A0 61 A0 62 79 74 65 A0 66 72 6F 6D |read.a.byte.from| 00000CD0: A0 74 68 65 A0 72 74 63 0D 2A 0D 72 64 62 79 74 |.the.rtc.*.rdbyt| 00000CE0: 20 6C 64 61 20 23 24 65 20 3B 63 6F 6E 66 69 67 | lda #$e ;config| 00000CF0: A0 6C 73 62 A0 61 73 A0 69 2F 70 0D 20 73 74 61 |.lsb.as.i/p. sta| 00000D00: 20 64 64 72 61 20 3B 0D 20 6C 64 61 20 23 24 30 | ddra ;. lda #$0| 00000D10: 20 3B 0D 20 73 74 61 20 74 65 6D 70 20 3B 63 6C | ;. sta temp ;cl| 00000D20: 72 A0 74 65 6D 70 0D 20 6C 64 78 20 23 24 38 20 |r.temp. ldx #$8 | 00000D30: 3B 63 6F 75 6E 74 3D 38 0D 72 6C 6F 6F 70 20 6C |;count=8.rloop l| 00000D40: 64 61 20 23 24 65 20 3B 73 65 74 75 70 A0 66 6F |da #$e ;setup.fo| 00000D50: 72 A0 72 65 61 64 0D 20 73 74 61 20 64 72 61 20 |r.read. sta dra | 00000D60: 3B 61 6C 6C A0 6F 2F 70 A0 62 69 74 73 A0 68 69 |;all.o/p.bits.hi| 00000D70: 0D A0 20 6C 64 61 20 23 24 32 20 3B 65 6E 61 62 |.. lda #$2 ;enab| 00000D80: 6C 65 A0 64 61 74 61 A0 74 6F A0 72 65 61 64 0D |le.data.to.read.| 00000D90: 20 73 74 61 20 64 72 61 0D 20 6C 64 61 20 64 72 | sta dra. lda dr| 00000DA0: 61 20 3B 72 65 61 64 A0 64 61 74 61 0D 20 72 6F |a ;read.data. ro| 00000DB0: 72 20 61 20 3B 72 6F 74 61 74 65 A0 64 61 74 61 |r a ;rotate.data| 00000DC0: A0 62 69 74 A0 74 6F A0 63 0D 20 6C 64 61 20 74 |.bit.to.c. lda t| 00000DD0: 65 6D 70 20 3B 72 65 61 64 A0 74 65 6D 70 A0 74 |emp ;read.temp.t| 00000DE0: 6F A0 61 63 63 0D 20 72 6F 72 20 61 0D 20 73 74 |o.acc. ror a. st| 00000DF0: 61 20 74 65 6D 70 20 3B 73 61 76 65 A0 74 65 6D |a temp ;save.tem| 00000E00: 70 0D 20 64 65 78 20 20 3B 75 70 64 61 74 65 A0 |p. dex ;update.| 00000E10: 63 6F 75 6E 74 0D 20 62 6E 65 20 72 6C 6F 6F 70 |count. bne rloop| 00000E20: 0D 20 6C 64 61 20 74 65 6D 70 20 3B 74 65 6D 70 |. lda temp ;temp| 00000E30: A0 74 6F A0 61 63 63 0D 20 72 74 73 0D 2A 0D 2A |.to.acc. rts.*.*| 00000E40: 0D 2A 0D 2A 0D 2A A0 62 63 64 A0 74 6F A0 68 65 |.*.*.*.bcd.to.he| 00000E50: 78 A0 63 6F 6E 76 65 72 74 A0 72 6F 75 74 69 6E |x.convert.routin| 00000E60: 65 0D 2A A0 A0 74 68 61 6E 6B 73 A0 74 6F A0 62 |e.*..thanks.to.b| 00000E70: 73 77 A0 66 6F 72 A0 74 68 65 A0 68 65 6C 70 0D |sw.for.the.help.| 00000E80: 2A 0D 2A 0D 62 63 64 74 68 78 20 70 68 61 20 20 |*.*.bcdthx pha | 00000E90: 3B 73 61 76 65 A0 62 63 64 A0 76 61 6C 75 65 0D |;save.bcd.value.| 00000EA0: 20 61 6E 64 20 23 24 66 30 20 3B 69 73 6F 6C 61 | and #$f0 ;isola| 00000EB0: 74 65 A0 6C 65 66 74 A0 6E 69 62 62 6C 65 0D 20 |te.left.nibble. | 00000EC0: 6C 73 72 20 20 3B 61 6E 64 A0 73 68 69 66 74 A0 |lsr ;and.shift.| 00000ED0: 74 6F A0 72 68 73 0D 20 6C 73 72 0D 20 6C 73 72 |to.rhs. lsr. lsr| 00000EE0: 0D 20 6C 73 72 0D 20 74 61 78 20 20 3B 6D 61 72 |. lsr. tax ;mar| 00000EF0: 6B A0 6E 75 6D 62 65 72 0D 20 70 6C 61 20 20 3B |k.number. pla ;| 00000F00: 67 65 74 A0 62 63 64 A0 76 61 6C 75 65 0D 20 61 |get.bcd.value. a| 00000F10: 6E 64 20 23 24 30 66 20 3B 63 6C 65 61 72 A0 6C |nd #$0f ;clear.l| 00000F20: 65 66 74 A0 6E 69 62 62 6C 65 0D 20 63 6C 63 20 |eft.nibble. clc | 00000F30: 20 3B 61 64 64 A0 78 A0 74 69 6D 65 73 A0 31 30 | ;add.x.times.10| 00000F40: 0D 62 68 6C 6F 6F 70 20 64 65 78 0D 20 62 6D 69 |.bhloop dex. bmi| 00000F50: 20 62 68 78 6F 75 74 0D 20 61 64 63 20 23 24 30 | bhxout. adc #$0| 00000F60: 61 0D 20 62 6E 65 20 62 68 6C 6F 6F 70 0D 62 68 |a. bne bhloop.bh| 00000F70: 78 6F 75 74 20 72 74 73 0D 2A 0D 2A 0D 2A 0D 2A |xout rts.*.*.*.*| 00000F80: 0D 2A 0D 2A 0D 2A 0D 2A 0D 2A 73 65 6C 65 63 74 |.*.*.*.*.*select| 00000F90: A0 63 6C 6F 63 6B A0 63 68 69 70 0D 2A 0D 2A 0D |.clock.chip.*.*.| 00000FA0: 2A 0D 73 6C 63 74 20 6C 64 61 20 23 24 65 20 3B |*.slct lda #$e ;| 00000FB0: 72 65 61 64 A0 63 79 63 6C 65 A0 74 6F A0 73 74 |read.cycle.to.st| 00000FC0: 61 72 74 A0 64 61 6C 6C 61 73 A0 63 68 69 70 0D |art.dallas.chip.| 00000FD0: 20 73 74 61 20 64 72 61 0D 20 6C 64 61 20 23 24 | sta dra. lda #$| 00000FE0: 32 0D 20 73 74 61 20 64 72 61 0D 20 6C 64 61 20 |2. sta dra. lda | 00000FF0: 23 24 65 0D 20 73 74 61 20 64 72 61 0D 20 6C 64 |#$e. sta dra. ld| 00001000: 61 20 23 24 32 20 3B 6C 6F 6F 70 A0 63 6F 75 6E |a #$2 ;loop.coun| 00001010: 74 0D 20 73 74 61 20 63 6F 75 6E 74 0D 73 6C 6F |t. sta count.slo| 00001020: 6F 70 20 6C 64 61 20 23 24 63 35 0D 20 6A 73 72 |op lda #$c5. jsr| 00001030: 20 77 72 74 62 79 74 0D 20 6C 64 61 20 23 24 33 | wrtbyt. lda #$3| 00001040: 61 0D 20 6A 73 72 20 77 72 74 62 79 74 0D 20 6C |a. jsr wrtbyt. l| 00001050: 64 61 20 23 24 61 33 0D 20 6A 73 72 20 77 72 74 |da #$a3. jsr wrt| 00001060: 62 79 74 0D 20 6C 64 61 20 23 24 35 63 0D 20 6A |byt. lda #$5c. j| 00001070: 73 72 20 77 72 74 62 79 74 0D 20 64 65 63 20 63 |sr wrtbyt. dec c| 00001080: 6F 75 6E 74 20 3B 64 65 63 72 65 6D 65 6E 74 A0 |ount ;decrement.| 00001090: 63 6F 75 6E 74 0D 20 62 6E 65 20 73 6C 6F 6F 70 |count. bne sloop| 000010A0: 0D 20 72 74 73 0D |. rts. |
..********************************.* REA
D OF REAL TIME CLOCK #2.0 *.************
********************.*
*.* MAY 29 1987
*.* *.
* BY TIM G CORCORAN *.*
*.**************
******************.* THIS S/W IS PART OF
THE RTC *.* SHAREWARE PACKAGE. IT IS O
KAY*.* TO DISTRIBUTE AND SHARE BUT *.*
NOT TO SELL. *.*
*.* PLEASE CONSIDE
R SUPPORTING *.* MYSTIC JIM'S S/W SY
STEM *.*
*.********************************.*.*.
*. ORG $4580.DDRA EQU $DC02.DRA EQU $DC0
0.HOURS EQU $4570.MINS EQU $4571.SECS EQ
U $4572.TEMP EQU $4573.TMP1 EQU $4574.TM
P2 EQU $4575.HSECS EQU $4576.COUNT EQU $
4577.*.*.*.*.*. LDA $01 ;GET MEM CONFIG.
PHA ;SAVE IT. LDA #$35 ;TURN ON I/O RE
GION. STA $01.START SEI ;INT OFF.RDRTC
LDA DRA ;READ DRA. STA $02 ;SAVE IT. LDA
DDRA ;READ DDRA. STA $03 ;SAVE IT. LDA
#$F ;LOAD NEW CONFIG. STA DDRA ;4 O/P'S.
LDA #$F ;STATES. STA DRA ;CE TRUE, SCLK
LOW.*.*.*.* READ ROUTINE.*. LDA #$DC0F
;READ CRB FOR CURRENT SETTING. STA TMP1
;SAVE IT FOR NOW. AND #$7F ;TOD SELECT.
STA $DC0F ;STORE IT. JSR SLCT ;SELECT CL
OCK CHIP. JSR RDBYT ;READ SECS/100. LSR
;SHIFT RIGHT 4 PLACES. LSR ;. LSR ;.
LSR ;. STA HSECS ;SAVE FOR NOW. JSR RDB
YT ;READ SECS. STA SECS ;SAVE FOR NOW. J
SR RDBYT ;READ MINS. STA MINS ;SAVE IT F
OR NOW. JSR RDBYT ;READ HOURS. TAX ;TRA
NSFER TO X REG.. AND #$1F ;CLEAR 3 MSB'S
. CMP #$12 ;IS IT TWELVE?. BNE NOWAY ;NO
IT ISN'T TWELVE. TXA ;RETRIEVE. EOR #$
20 ;TOGGLE AM/PM BIT. TAX.NOWAY TXA ;RE
TRIEVE. AND #$1F ;CLEAR 3 MSB'S. STA HOU
RS. TXA ;RETRIEVE IT FROM X REG. AND #$
20 ;ISOLATE AM/PM BIT. ASL. ASL. ORA HOU
RS ;PUT HOURS BACK IN. STA TMP2 ;SAVE IT
FOR LATER. STA $DC0B ;SAVE TO THE CIA T
OD. CMP #$12 ;IS IT TWELVE?. BNE TEST ;N
O? GOTO TEST. LDA #$0 ;OTHERWISE SET HOU
R TO 0.TEST BIT TMP2 ;AM/PM TEST. BPL IT
SAM ;ON AM GOTO ITSAM. SED ;DECIMAL MOD
E. CLC ;CLEAR CARRY. ADC #$12 ;MAKE IT
24 HR CLOCK FORMAT. CLD ;LEAVE DECIMAL
MODE.ITSAM JSR BCDTHX ;CONVERT TO HEX. S
TA $8519 ;SAVE TO GEOS HOURS. LDA MINS ;
RETRIEVE MINUTES. STA $DC0A ;SAVE TO TOD
. JSR BCDTHX ;CONVERT TO HEX. STA $851A
;SAVE TO GEOS MINS. LDA SECS ;RETRIEVE S
ECONDS. STA $DC09 ;SAVE TO TOD. JSR BCDT
HX ;CONVERT TO HEX. STA $851B ;SAVE TO G
EOS SECS. LDA HSECS ;RETRIEVE SECS/100.
STA $DC08 ;& START UP THE TOD CLOCK. JSR
BCDTHX ;CONVERT. STA $851C ;SAVE TO GEO
S SECS/100. JSR RDBYT ;READ DAY & IGNORE
. JSR RDBYT ;READ DATE. JSR BCDTHX ;CONV
ERT TO HEX. STA $8518 ;SAVE TO GEOS DAY.
JSR RDBYT ;READ MONTH. JSR BCDTHX ;CONV
ERT TO HEX. STA $8517 ;SAVE TO GEOS MONT
H. JSR RDBYT ;READ YEAR. JSR BCDTHX ;CON
VERT TO HEX. STA $8516 ;SAVE TO GEOS YEA
R. LDA #$E ;DESELECT THE CHIP. STA DRA.F
INISH PLA ;GET OLD MEM CONFIG. STA $01
;SET IT. CLI ;ENABLE INTERRUPTS. JSR $C
22C ;RELOAD DESKTOP.*.*.*.*.* WRITE A BY
TE TO THE RTC.*.WRTBYT TAX ;SAVE DATA B
YTE. LDY #$8 ;SET UP COUNT. LDA #$E ;INI
TIAL CONFIG. STA DRA ;OUTPUT ENABLE OFF.
TXA ;RETRIEVE DATA.WLOOP AND #$1 ;CLR
ALL BUT LSB. ORA #$4 ;SET UP FOR WRITE.
STA DRA. ORA #$E ;WRITE DATA BIT. STA DR
A. DEY ;DECREMENT COUNT. BEQ WDONE ;FIN
ISHED?. TXA ;GET DATA. LSR ;SELECT NEX
T BIT. TAX ;SAVE NEW DATA. JMP WLOOP ;L
OOP.WDONE RTS.*.*.*.*.* READ A BYTE FROM
THE RTC.*.RDBYT LDA #$E ;CONFIG LSB AS
I/P. STA DDRA ;. LDA #$0 ;. STA TEMP ;CL
R TEMP. LDX #$8 ;COUNT=8.RLOOP LDA #$E ;
SETUP FOR READ. STA DRA ;ALL O/P BITS HI
. LDA #$2 ;ENABLE DATA TO READ. STA DRA
. LDA DRA ;READ DATA. ROR A ;ROTATE DATA
BIT TO C. LDA TEMP ;READ TEMP TO ACC. R
OR A. STA TEMP ;SAVE TEMP. DEX ;UPDATE
COUNT. BNE RLOOP. LDA TEMP ;TEMP TO ACC.
RTS.*.*.*.*.* BCD TO HEX CONVERT ROUTIN
E.* THANKS TO BSW FOR THE HELP.*.*.BCDT
HX PHA ;SAVE BCD VALUE. AND #$F0 ;ISOLA
TE LEFT NIBBLE. LSR ;AND SHIFT TO RHS.
LSR. LSR. LSR. TAX ;MARK NUMBER. PLA ;
GET BCD VALUE. AND #$0F ;CLEAR LEFT NIBB
LE. CLC ;ADD X TIMES 10.BHLOOP DEX. BMI
BHXOUT. ADC #$0A. BNE BHLOOP.BHXOUT RTS
.*.*.*.*.*.*.*.*.*SELECT CLOCK CHIP.*.*.
*.SLCT LDA #$E ;READ CYCLE TO START DALL
AS CHIP. STA DRA. LDA #$2. STA DRA. LDA
#$E. STA DRA. LDA #$2 ;LOOP COUNT. STA C
OUNT.SLOOP LDA #$C5. JSR WRTBYT. LDA #$3
A. JSR WRTBYT. LDA #$A3. JSR WRTBYT. LDA
#$5C. JSR WRTBYT. DEC COUNT ;DECREMENT
COUNT. BNE SLOOP. RTS.
×
C64 Image
> CLICK IMAGE PREVIEW FOR FULL MODAL