RDRTC-1.0─
FILE INFORMATION
FILENAME(S): RDRTC-1.0─
FILE TYPE(S): PRG
FILE SIZE: 3.7K
FIRST SEEN: 2025-12-02 02:15:36
APPEARS ON: 1 disk(s)
FILE HASH
52b2a038d5c097cd31c2ffd28bf88d36a86280de3adf55b95045a77ffd8a9196
FOUND ON DISKS (1 DISKS)
| DISK TITLE | FILENAME | FILE TYPE | COLLECTION | TRACK | SECTOR | ACTIONS |
|---|---|---|---|---|---|---|
| TIM S TIMER 2 0 | RDRTC-1.0─ | PRG | The BAM Archive | 19 | 11 | 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 76 32 2E |l.time.clock.v2.| 00000040: 31 A0 2A 0D 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A |1.*.************| 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 31 30 A0 31 39 38 37 A0 A0 A0 A0 A0 |may.10.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 2A 0D 2A |p2 equ $4575.*.*| 000002E0: 0D 2A 0D 2A 0D 2A 0D 20 6C 64 61 20 24 30 31 20 |.*.*.*. lda $01 | 000002F0: 3B 67 65 74 A0 6D 65 6D A0 63 6F 6E 66 69 67 0D |;get.mem.config.| 00000300: 20 70 68 61 20 20 3B 73 61 76 65 A0 69 74 0D 20 | pha ;save.it. | 00000310: 6C 64 61 20 23 24 33 35 20 3B 74 75 72 6E A0 6F |lda #$35 ;turn.o| 00000320: 6E A0 69 2F 6F A0 72 65 67 69 6F 6E 0D 20 73 74 |n.i/o.region. st| 00000330: 61 20 24 30 31 0D 73 74 61 72 74 20 73 65 69 20 |a $01.start sei | 00000340: 20 3B 69 6E 74 A0 6F 66 66 0D 72 64 72 74 63 20 | ;int.off.rdrtc | 00000350: 6C 64 61 20 64 72 61 20 3B 72 65 61 64 A0 64 72 |lda dra ;read.dr| 00000360: 61 0D 20 73 74 61 20 24 30 32 20 3B 73 61 76 65 |a. sta $02 ;save| 00000370: A0 69 74 0D 20 6C 64 61 20 64 64 72 61 20 3B 72 |.it. lda ddra ;r| 00000380: 65 61 64 A0 64 64 72 61 0D 20 73 74 61 20 24 30 |ead.ddra. sta $0| 00000390: 33 20 3B 73 61 76 65 A0 69 74 0D 20 6C 64 61 20 |3 ;save.it. lda | 000003A0: 23 36 20 3B 6C 6F 61 64 A0 6E 65 77 A0 63 6F 6E |#6 ;load.new.con| 000003B0: 66 69 67 0D 20 73 74 61 20 64 64 72 61 20 3B 32 |fig. sta ddra ;2| 000003C0: A0 6F 2F 70 27 73 0D 20 6C 64 61 20 23 30 20 3B |.o/p's. lda #0 ;| 000003D0: 73 74 61 74 65 73 0D 20 73 74 61 20 64 72 61 20 |states. sta dra | 000003E0: 3B 63 65 A0 74 72 75 65 2C A0 73 63 6C 6B A0 6C |;ce.true,.sclk.l| 000003F0: 6F 77 0D 2A 0D 2A 0D 2A 0D 2A A0 72 65 61 64 A0 |ow.*.*.*.*.read.| 00000400: 72 6F 75 74 69 6E 65 0D 2A 0D 20 6C 64 61 20 23 |routine.*. lda #| 00000410: 24 64 63 30 66 20 3B 72 65 61 64 A0 63 72 62 A0 |$dc0f ;read.crb.| 00000420: 66 6F 72 A0 63 75 72 72 65 6E 74 A0 73 65 74 74 |for.current.sett| 00000430: 69 6E 67 0D 20 73 74 61 20 74 6D 70 31 20 3B 73 |ing. sta tmp1 ;s| 00000440: 61 76 65 A0 69 74 A0 66 6F 72 A0 6E 6F 77 0D 20 |ave.it.for.now. | 00000450: 61 6E 64 20 23 24 37 66 20 3B 74 6F 64 A0 73 65 |and #$7f ;tod.se| 00000460: 6C 65 63 74 0D 20 73 74 61 20 24 64 63 30 66 20 |lect. sta $dc0f | 00000470: 3B 73 74 6F 72 65 A0 69 74 0D 20 6C 64 61 20 23 |;store.it. lda #| 00000480: 24 62 66 20 3B 62 75 72 73 74 A0 72 65 61 64 0D |$bf ;burst.read.| 00000490: 20 6A 73 72 20 77 72 74 62 79 74 20 3B 67 6F 73 | jsr wrtbyt ;gos| 000004A0: 75 62 0D 20 6A 73 72 20 72 64 62 79 74 20 3B 72 |ub. jsr rdbyt ;r| 000004B0: 65 61 64 A0 73 65 63 73 0D 20 73 74 61 20 73 65 |ead.secs. sta se| 000004C0: 63 73 20 3B 73 61 76 65 A0 66 6F 72 A0 6E 6F 77 |cs ;save.for.now| 000004D0: 0D 20 6A 73 72 20 72 64 62 79 74 20 3B 72 65 61 |. jsr rdbyt ;rea| 000004E0: 64 A0 6D 69 6E 73 0D 20 73 74 61 20 6D 69 6E 73 |d.mins. sta mins| 000004F0: 20 3B 73 61 76 65 A0 69 74 A0 66 6F 72 A0 6E 6F | ;save.it.for.no| 00000500: 77 0D 20 6A 73 72 20 72 64 62 79 74 20 3B 72 65 |w. jsr rdbyt ;re| 00000510: 61 64 A0 68 6F 75 72 73 0D 20 74 61 78 20 20 3B |ad.hours. tax ;| 00000520: 74 72 61 6E 73 66 65 72 A0 74 6F A0 78 A0 72 65 |transfer.to.x.re| 00000530: 67 2E 0D 20 61 6E 64 20 23 24 31 66 20 3B 63 6C |g.. and #$1f ;cl| 00000540: 65 61 72 A0 33 A0 6D 73 62 27 73 0D 20 63 6D 70 |ear.3.msb's. cmp| 00000550: 20 23 24 31 32 20 3B 69 73 A0 69 74 A0 74 77 65 | #$12 ;is.it.twe| 00000560: 6C 76 65 3F 0D 20 62 6E 65 20 6E 6F 77 61 79 20 |lve?. bne noway | 00000570: 3B 6E 6F A0 69 74 A0 69 73 6E 27 74 A0 74 77 65 |;no.it.isn't.twe| 00000580: 6C 76 65 0D 20 74 78 61 20 20 3B 72 65 74 72 69 |lve. txa ;retri| 00000590: 65 76 65 0D 20 65 6F 72 20 23 24 32 30 20 3B 74 |eve. eor #$20 ;t| 000005A0: 6F 67 67 6C 65 A0 61 6D 2F 70 6D A0 62 69 74 0D |oggle.am/pm.bit.| 000005B0: 20 74 61 78 0D 6E 6F 77 61 79 20 74 78 61 20 20 | tax.noway txa | 000005C0: 3B 72 65 74 72 69 65 76 65 0D 20 61 6E 64 20 23 |;retrieve. and #| 000005D0: 24 31 66 20 3B 63 6C 65 61 72 A0 33 A0 6D 73 62 |$1f ;clear.3.msb| 000005E0: 27 73 0D 20 73 74 61 20 68 6F 75 72 73 0D 20 74 |'s. sta hours. t| 000005F0: 78 61 20 20 3B 72 65 74 72 69 65 76 65 A0 69 74 |xa ;retrieve.it| 00000600: A0 66 72 6F 6D A0 78 A0 72 65 67 0D 20 61 6E 64 |.from.x.reg. and| 00000610: 20 23 24 32 30 20 3B 69 73 6F 6C 61 74 65 A0 61 | #$20 ;isolate.a| 00000620: 6D 2F 70 6D A0 62 69 74 0D 20 61 73 6C 0D 20 61 |m/pm.bit. asl. a| 00000630: 73 6C 0D 20 6F 72 61 20 68 6F 75 72 73 20 3B 70 |sl. ora hours ;p| 00000640: 75 74 A0 68 6F 75 72 73 A0 62 61 63 6B A0 69 6E |ut.hours.back.in| 00000650: 0D 20 73 74 61 20 74 6D 70 32 20 3B 73 61 76 65 |. sta tmp2 ;save| 00000660: A0 69 74 A0 66 6F 72 A0 6C 61 74 65 72 0D 20 73 |.it.for.later. s| 00000670: 74 61 20 24 64 63 30 62 20 3B 73 61 76 65 A0 74 |ta $dc0b ;save.t| 00000680: 6F A0 74 68 65 A0 63 69 61 A0 74 6F 64 0D 20 63 |o.the.cia.tod. c| 00000690: 6D 70 20 23 24 31 32 20 3B 69 73 A0 69 74 A0 74 |mp #$12 ;is.it.t| 000006A0: 77 65 6C 76 65 3F 0D 20 62 6E 65 20 74 65 73 74 |welve?. bne test| 000006B0: 20 3B 6E 6F 3F A0 67 6F 74 6F A0 74 65 73 74 0D | ;no?.goto.test.| 000006C0: 20 6C 64 61 20 23 24 30 20 3B 6F 74 68 65 72 77 | lda #$0 ;otherw| 000006D0: 69 73 65 A0 73 65 74 A0 68 6F 75 72 A0 74 6F A0 |ise.set.hour.to.| 000006E0: 30 0D 74 65 73 74 20 62 69 74 20 74 6D 70 32 20 |0.test bit tmp2 | 000006F0: 3B 61 6D 2F 70 6D A0 74 65 73 74 0D 20 62 70 6C |;am/pm.test. bpl| 00000700: 20 69 74 73 61 6D 20 3B 6F 6E A0 61 6D A0 67 6F | itsam ;on.am.go| 00000710: 74 6F A0 69 74 73 61 6D 0D 20 73 65 64 20 20 3B |to.itsam. sed ;| 00000720: 64 65 63 69 6D 61 6C A0 6D 6F 64 65 0D 20 63 6C |decimal.mode. cl| 00000730: 63 20 20 3B 63 6C 65 61 72 A0 63 61 72 72 79 0D |c ;clear.carry.| 00000740: 20 61 64 63 20 23 24 31 32 20 3B 6D 61 6B 65 A0 | adc #$12 ;make.| 00000750: 69 74 A0 32 34 A0 68 72 A0 63 6C 6F 63 6B A0 66 |it.24.hr.clock.f| 00000760: 6F 72 6D 61 74 0D 20 63 6C 64 20 20 3B 6C 65 61 |ormat. cld ;lea| 00000770: 76 65 A0 64 65 63 69 6D 61 6C A0 6D 6F 64 65 0D |ve.decimal.mode.| 00000780: 69 74 73 61 6D 20 6A 73 72 20 62 63 64 74 68 78 |itsam jsr bcdthx| 00000790: 20 3B 63 6F 6E 76 65 72 74 A0 74 6F A0 68 65 78 | ;convert.to.hex| 000007A0: 0D 20 73 74 61 20 24 38 35 31 39 20 3B 73 61 76 |. sta $8519 ;sav| 000007B0: 65 A0 74 6F A0 67 65 6F 73 A0 68 6F 75 72 73 0D |e.to.geos.hours.| 000007C0: 20 6C 64 61 20 6D 69 6E 73 20 3B 72 65 74 72 69 | lda mins ;retri| 000007D0: 65 76 65 A0 6D 69 6E 75 74 65 73 0D 20 73 74 61 |eve.minutes. sta| 000007E0: 20 24 64 63 30 61 20 3B 73 61 76 65 A0 74 6F A0 | $dc0a ;save.to.| 000007F0: 74 6F 64 0D 20 6A 73 72 20 62 63 64 74 68 78 20 |tod. jsr bcdthx | 00000800: 3B 63 6F 6E 76 65 72 74 A0 74 6F A0 68 65 78 0D |;convert.to.hex.| 00000810: 20 73 74 61 20 24 38 35 31 61 20 3B 73 61 76 65 | sta $851a ;save| 00000820: A0 74 6F A0 67 65 6F 73 A0 6D 69 6E 73 0D 20 6C |.to.geos.mins. l| 00000830: 64 61 20 73 65 63 73 20 3B 72 65 74 72 69 65 76 |da secs ;retriev| 00000840: 65 A0 73 65 63 6F 6E 64 73 0D 20 73 74 61 20 24 |e.seconds. sta $| 00000850: 64 63 30 39 20 3B 73 61 76 65 A0 74 6F A0 74 6F |dc09 ;save.to.to| 00000860: 64 0D 20 6A 73 72 20 62 63 64 74 68 78 20 3B 63 |d. jsr bcdthx ;c| 00000870: 6F 6E 76 65 72 74 A0 74 6F A0 68 65 78 0D 20 73 |onvert.to.hex. s| 00000880: 74 61 20 24 38 35 31 62 20 3B 73 61 76 65 A0 74 |ta $851b ;save.t| 00000890: 6F A0 67 65 6F 73 A0 73 65 63 73 0D 20 6C 64 61 |o.geos.secs. lda| 000008A0: 20 23 24 30 20 3B 62 6C 61 6E 6B A0 6F 75 74 A0 | #$0 ;blank.out.| 000008B0: 31 30 27 74 68 73 A0 6F 66 A0 73 65 63 73 0D 20 |10'ths.of.secs. | 000008C0: 73 74 61 20 24 64 63 30 38 20 3B 26 A0 73 74 61 |sta $dc08 ;&.sta| 000008D0: 72 74 A0 75 70 A0 74 68 65 A0 74 6F 64 A0 63 6C |rt.up.the.tod.cl| 000008E0: 6F 63 6B 0D 0D 20 6A 73 72 20 72 64 62 79 74 20 |ock.. jsr rdbyt | 000008F0: 3B 72 65 61 64 A0 64 61 74 65 0D 20 6A 73 72 20 |;read.date. jsr | 00000900: 62 63 64 74 68 78 20 3B 63 6F 6E 76 65 72 74 A0 |bcdthx ;convert.| 00000910: 74 6F A0 68 65 78 0D 20 73 74 61 20 24 38 35 31 |to.hex. sta $851| 00000920: 38 20 3B 73 61 76 65 A0 74 6F A0 67 65 6F 73 A0 |8 ;save.to.geos.| 00000930: 64 61 79 0D 20 6A 73 72 20 72 64 62 79 74 20 3B |day. jsr rdbyt ;| 00000940: 72 65 61 64 A0 6D 6F 6E 74 68 0D 20 6A 73 72 20 |read.month. jsr | 00000950: 62 63 64 74 68 78 20 3B 63 6F 6E 76 65 72 74 A0 |bcdthx ;convert.| 00000960: 74 6F A0 68 65 78 0D 20 73 74 61 20 24 38 35 31 |to.hex. sta $851| 00000970: 37 20 3B 73 61 76 65 A0 74 6F A0 67 65 6F 73 A0 |7 ;save.to.geos.| 00000980: 6D 6F 6E 74 68 0D 20 6A 73 72 20 72 64 62 79 74 |month. jsr rdbyt| 00000990: 20 3B 72 65 61 64 A0 64 61 79 0D 20 6A 73 72 20 | ;read.day. jsr | 000009A0: 72 64 62 79 74 20 3B 73 6B 69 70 A0 64 61 79 2F |rdbyt ;skip.day/| 000009B0: 72 65 61 64 A0 79 65 61 72 0D 20 6A 73 72 20 62 |read.year. jsr b| 000009C0: 63 64 74 68 78 20 3B 63 6F 6E 76 65 72 74 A0 74 |cdthx ;convert.t| 000009D0: 6F A0 68 65 78 0D 20 73 74 61 20 24 38 35 31 36 |o.hex. sta $8516| 000009E0: 20 3B 73 61 76 65 A0 74 6F A0 67 65 6F 73 A0 79 | ;save.to.geos.y| 000009F0: 65 61 72 0D 20 6C 64 61 20 23 24 34 20 3B 74 75 |ear. lda #$4 ;tu| 00000A00: 72 6E A0 6F 66 66 A0 63 68 69 70 A0 65 6E 61 62 |rn.off.chip.enab| 00000A10: 6C 65 0D 20 73 74 61 20 64 72 61 0D 66 69 6E 69 |le. sta dra.fini| 00000A20: 73 68 20 70 6C 61 20 20 3B 67 65 74 A0 6F 6C 64 |sh pla ;get.old| 00000A30: A0 6D 65 6D A0 63 6F 6E 66 69 67 0D 20 73 74 61 |.mem.config. sta| 00000A40: 20 24 30 31 20 3B 73 65 74 A0 69 74 0D 20 63 6C | $01 ;set.it. cl| 00000A50: 69 20 20 3B 65 6E 61 62 6C 65 A0 69 6E 74 65 72 |i ;enable.inter| 00000A60: 72 75 70 74 73 0D 20 6A 73 72 20 24 63 32 32 63 |rupts. jsr $c22c| 00000A70: 20 3B 72 65 6C 6F 61 64 A0 64 65 73 6B 74 6F 70 | ;reload.desktop| 00000A80: 0D 2A 0D 2A 0D 2A 0D 2A 0D 2A A0 77 72 69 74 65 |.*.*.*.*.*.write| 00000A90: A0 61 A0 62 79 74 65 A0 74 6F A0 74 68 65 A0 72 |.a.byte.to.the.r| 00000AA0: 74 63 0D 2A 0D 77 72 74 62 79 74 20 6C 64 78 20 |tc.*.wrtbyt ldx | 00000AB0: 23 38 20 3B 63 6F 75 6E 74 3D 38 0D 20 73 74 61 |#8 ;count=8. sta| 00000AC0: 20 74 65 6D 70 20 3B 73 61 76 65 A0 69 74 0D 20 | temp ;save.it. | 00000AD0: 6C 64 61 20 23 24 37 20 3B 63 6F 6E 66 69 67 A0 |lda #$7 ;config.| 00000AE0: 6C 73 62 A0 61 73 A0 6F 2F 70 0D 20 73 74 61 20 |lsb.as.o/p. sta | 00000AF0: 64 64 72 61 20 3B 0D 20 6C 64 61 20 74 65 6D 70 |ddra ;. lda temp| 00000B00: 0D 77 6C 6F 6F 70 20 61 6E 64 20 23 24 66 39 20 |.wloop and #$f9 | 00000B10: 3B 73 63 6C 6B A0 6C 6F 77 2C A0 63 68 69 70 A0 |;sclk.low,.chip.| 00000B20: 65 6E 61 62 6C 65 0D 20 73 74 61 20 64 72 61 20 |enable. sta dra | 00000B30: 3B 73 65 74 A0 75 70 0D 20 6F 72 61 20 23 32 20 |;set.up. ora #2 | 00000B40: 3B 73 63 6C 6B A0 68 69 0D 20 73 74 61 20 64 72 |;sclk.hi. sta dr| 00000B50: 61 20 3B 6C 73 62 A0 6F 75 74 0D 20 6C 64 61 20 |a ;lsb.out. lda | 00000B60: 74 65 6D 70 20 3B 72 65 66 72 65 73 68 A0 62 79 |temp ;refresh.by| 00000B70: 74 65 0D 20 6C 73 72 20 61 20 3B 6E 65 78 74 A0 |te. lsr a ;next.| 00000B80: 62 69 74 0D 20 73 74 61 20 74 65 6D 70 20 3B 73 |bit. sta temp ;s| 00000B90: 61 76 65 A0 69 74 0D 20 64 65 78 20 20 3B 75 70 |ave.it. dex ;up| 00000BA0: 64 61 74 65 A0 63 6F 75 6E 74 0D 20 62 6E 65 20 |date.count. bne | 00000BB0: 77 6C 6F 6F 70 20 3B 6C 6F 6F 70 3F 0D 20 6C 64 |wloop ;loop?. ld| 00000BC0: 61 20 23 24 36 20 3B 63 6F 6E 66 69 67 A0 6C 73 |a #$6 ;config.ls| 00000BD0: 62 A0 61 73 A0 69 2F 70 A0 61 67 61 69 6E 0D 20 |b.as.i/p.again. | 00000BE0: 73 74 61 20 64 64 72 61 20 3B 0D 20 72 74 73 0D |sta ddra ;. rts.| 00000BF0: 2A 0D 2A 0D 2A 0D 2A 0D 2A A0 72 65 61 64 A0 61 |*.*.*.*.*.read.a| 00000C00: A0 62 79 74 65 A0 66 72 6F 6D A0 74 68 65 A0 72 |.byte.from.the.r| 00000C10: 74 63 0D 2A 0D 72 64 62 79 74 20 6C 64 61 20 23 |tc.*.rdbyt lda #| 00000C20: 24 30 0D 20 73 74 61 20 74 65 6D 70 20 3B 63 6C |$0. sta temp ;cl| 00000C30: 72 A0 74 65 6D 70 0D 20 6C 64 78 20 23 24 30 38 |r.temp. ldx #$08| 00000C40: 20 3B 63 6F 75 6E 74 3D 38 0D 72 6C 6F 6F 70 20 | ;count=8.rloop | 00000C50: 6C 64 61 20 23 24 30 32 20 3B 73 65 74 75 70 0D |lda #$02 ;setup.| 00000C60: 20 73 74 61 20 64 72 61 20 3B 73 63 6C 6B A0 68 | sta dra ;sclk.h| 00000C70: 69 2C A0 63 65 A0 6C 6F 0D 20 6C 64 61 20 23 24 |i,.ce.lo. lda #$| 00000C80: 30 20 3B 63 6C 72 A0 61 63 63 0D 20 73 74 61 20 |0 ;clr.acc. sta | 00000C90: 64 72 61 20 3B 73 63 6C 6B A0 6C 6F 2C A0 63 65 |dra ;sclk.lo,.ce| 00000CA0: A0 6C 6F 0D 2A A0 A0 3B 64 61 74 61 A0 70 72 65 |.lo.*..;data.pre| 00000CB0: 73 65 6E 74 0D 20 6C 64 61 20 64 72 61 20 3B 72 |sent. lda dra ;r| 00000CC0: 65 61 64 A0 64 61 74 61 0D 20 72 6F 72 20 61 20 |ead.data. ror a | 00000CD0: 3B 72 6F 74 61 74 65 A0 64 61 74 61 A0 62 69 74 |;rotate.data.bit| 00000CE0: A0 74 6F A0 63 0D 20 6C 64 61 20 74 65 6D 70 20 |.to.c. lda temp | 00000CF0: 3B 72 65 61 64 A0 74 65 6D 70 A0 74 6F A0 61 63 |;read.temp.to.ac| 00000D00: 63 0D 20 72 6F 72 20 61 0D 20 73 74 61 20 74 65 |c. ror a. sta te| 00000D10: 6D 70 20 3B 73 61 76 65 A0 74 65 6D 70 0D 20 64 |mp ;save.temp. d| 00000D20: 65 78 20 20 3B 75 70 64 61 74 65 A0 63 6F 75 6E |ex ;update.coun| 00000D30: 74 0D 20 62 6E 65 20 72 6C 6F 6F 70 0D 20 6C 64 |t. bne rloop. ld| 00000D40: 61 20 74 65 6D 70 20 3B 74 65 6D 70 A0 74 6F A0 |a temp ;temp.to.| 00000D50: 61 63 63 0D 20 72 74 73 0D 2A 0D 2A 0D 2A 0D 2A |acc. rts.*.*.*.*| 00000D60: 0D 2A A0 62 63 64 A0 74 6F A0 68 65 78 A0 63 6F |.*.bcd.to.hex.co| 00000D70: 6E 76 65 72 74 A0 72 6F 75 74 69 6E 65 0D 2A A0 |nvert.routine.*.| 00000D80: A0 74 68 61 6E 6B 73 A0 74 6F A0 62 73 77 A0 66 |.thanks.to.bsw.f| 00000D90: 6F 72 A0 74 68 65 A0 68 65 6C 70 0D 2A 0D 2A 0D |or.the.help.*.*.| 00000DA0: 62 63 64 74 68 78 20 70 68 61 20 20 3B 73 61 76 |bcdthx pha ;sav| 00000DB0: 65 A0 62 63 64 A0 76 61 6C 75 65 0D 20 61 6E 64 |e.bcd.value. and| 00000DC0: 20 23 24 66 30 20 3B 69 73 6F 6C 61 74 65 A0 6C | #$f0 ;isolate.l| 00000DD0: 65 66 74 A0 6E 69 62 62 6C 65 0D 20 6C 73 72 20 |eft.nibble. lsr | 00000DE0: 20 3B 61 6E 64 A0 73 68 69 66 74 A0 74 6F A0 72 | ;and.shift.to.r| 00000DF0: 68 73 0D 20 6C 73 72 0D 20 6C 73 72 0D 20 6C 73 |hs. lsr. lsr. ls| 00000E00: 72 0D 20 74 61 78 20 20 3B 6D 61 72 6B A0 6E 75 |r. tax ;mark.nu| 00000E10: 6D 62 65 72 0D 20 70 6C 61 20 20 3B 67 65 74 A0 |mber. pla ;get.| 00000E20: 62 63 64 A0 76 61 6C 75 65 0D 20 61 6E 64 20 23 |bcd.value. and #| 00000E30: 24 30 66 20 3B 63 6C 65 61 72 A0 6C 65 66 74 A0 |$0f ;clear.left.| 00000E40: 6E 69 62 62 6C 65 0D 20 63 6C 63 20 20 3B 61 64 |nibble. clc ;ad| 00000E50: 64 A0 78 A0 74 69 6D 65 73 A0 31 30 0D 62 68 6C |d.x.times.10.bhl| 00000E60: 6F 6F 70 20 64 65 78 0D 20 62 6D 69 20 62 68 78 |oop dex. bmi bhx| 00000E70: 6F 75 74 0D 20 61 64 63 20 23 24 30 61 0D 20 62 |out. adc #$0a. b| 00000E80: 6E 65 20 62 68 6C 6F 6F 70 0D 62 68 78 6F 75 74 |ne bhloop.bhxout| 00000E90: 20 72 74 73 0D 2A 0D 2A 0D 2A 0D 2A 0D | rts.*.*.*.*. |
..********************************.* REA
D OF REAL TIME CLOCK V2.1 *.************
********************.*
*.* MAY 10 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.*.*.*.*.*. LDA $01 ;GET MEM
CONFIG. PHA ;SAVE IT. LDA #$35 ;TURN O
N I/O REGION. STA $01.START SEI ;INT OF
F.RDRTC LDA DRA ;READ DRA. STA $02 ;SAVE
IT. LDA DDRA ;READ DDRA. STA $03 ;SAVE
IT. LDA #6 ;LOAD NEW CONFIG. STA DDRA ;2
O/P'S. LDA #0 ;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 SE
LECT. STA $DC0F ;STORE IT. LDA #$BF ;BUR
ST READ. JSR WRTBYT ;GOSUB. JSR RDBYT ;R
EAD SECS. STA SECS ;SAVE FOR NOW. JSR RD
BYT ;READ MINS. STA MINS ;SAVE IT FOR NO
W. JSR RDBYT ;READ HOURS. TAX ;TRANSFER
TO X REG.. AND #$1F ;CLEAR 3 MSB'S. CMP
#$12 ;IS IT TWELVE?. BNE NOWAY ;NO IT I
SN'T TWELVE. TXA ;RETRIEVE. EOR #$20 ;T
OGGLE AM/PM BIT. TAX.NOWAY TXA ;RETRIEV
E. AND #$1F ;CLEAR 3 MSB'S. STA HOURS. T
XA ;RETRIEVE IT FROM X REG. AND #$20 ;I
SOLATE AM/PM BIT. ASL. ASL. ORA HOURS ;P
UT HOURS BACK IN. STA TMP2 ;SAVE IT FOR
LATER. STA $DC0B ;SAVE TO THE CIA TOD. C
MP #$12 ;IS IT TWELVE?. BNE TEST ;NO? GO
TO TEST. LDA #$0 ;OTHERWISE SET HOUR TO
0.TEST BIT TMP2 ;AM/PM TEST. BPL ITSAM ;
ON AM GOTO ITSAM. SED ;DECIMAL MODE. CL
C ;CLEAR CARRY. ADC #$12 ;MAKE IT 24 HR
CLOCK FORMAT. CLD ;LEAVE DECIMAL MODE.
ITSAM JSR BCDTHX ;CONVERT TO HEX. STA $8
519 ;SAVE TO GEOS HOURS. LDA MINS ;RETRI
EVE MINUTES. STA $DC0A ;SAVE TO TOD. JSR
BCDTHX ;CONVERT TO HEX. STA $851A ;SAVE
TO GEOS MINS. LDA SECS ;RETRIEVE SECOND
S. STA $DC09 ;SAVE TO TOD. JSR BCDTHX ;C
ONVERT TO HEX. STA $851B ;SAVE TO GEOS S
ECS. LDA #$0 ;BLANK OUT 10'THS OF SECS.
STA $DC08 ;& START UP THE TOD CLOCK.. JS
R RDBYT ;READ DATE. JSR BCDTHX ;CONVERT
TO HEX. STA $8518 ;SAVE TO GEOS DAY. JSR
RDBYT ;READ MONTH. JSR BCDTHX ;CONVERT
TO HEX. STA $8517 ;SAVE TO GEOS MONTH. J
SR RDBYT ;READ DAY. JSR RDBYT ;SKIP DAY/
READ YEAR. JSR BCDTHX ;CONVERT TO HEX. S
TA $8516 ;SAVE TO GEOS YEAR. LDA #$4 ;TU
RN OFF CHIP ENABLE. STA DRA.FINISH PLA
;GET OLD MEM CONFIG. STA $01 ;SET IT. CL
I ;ENABLE INTERRUPTS. JSR $C22C ;RELOAD
DESKTOP.*.*.*.*.* WRITE A BYTE TO THE R
TC.*.WRTBYT LDX #8 ;COUNT=8. STA TEMP ;S
AVE IT. LDA #$7 ;CONFIG LSB AS O/P. STA
DDRA ;. LDA TEMP.WLOOP AND #$F9 ;SCLK LO
W, CHIP ENABLE. STA DRA ;SET UP. ORA #2
;SCLK HI. STA DRA ;LSB OUT. LDA TEMP ;RE
FRESH BYTE. LSR A ;NEXT BIT. STA TEMP ;S
AVE IT. DEX ;UPDATE COUNT. BNE WLOOP ;L
OOP?. LDA #$6 ;CONFIG LSB AS I/P AGAIN.
STA DDRA ;. RTS.*.*.*.*.* READ A BYTE FR
OM THE RTC.*.RDBYT LDA #$0. STA TEMP ;CL
R TEMP. LDX #$08 ;COUNT=8.RLOOP LDA #$02
;SETUP. STA DRA ;SCLK HI, CE LO. LDA #$
0 ;CLR ACC. STA DRA ;SCLK LO, CE LO.* ;
DATA PRESENT. LDA DRA ;READ DATA. ROR A
;ROTATE DATA BIT TO C. LDA TEMP ;READ TE
MP TO ACC. ROR A. STA TEMP ;SAVE TEMP. D
EX ;UPDATE COUNT. BNE RLOOP. LDA TEMP ;
TEMP TO ACC. RTS.*.*.*.*.* BCD TO HEX CO
NVERT ROUTINE.* THANKS TO BSW FOR THE H
ELP.*.*.BCDTHX PHA ;SAVE BCD VALUE. AND
#$F0 ;ISOLATE LEFT NIBBLE. LSR ;AND SH
IFT TO RHS. LSR. LSR. LSR. TAX ;MARK NU
MBER. PLA ;GET BCD VALUE. AND #$0F ;CLE
AR LEFT NIBBLE. CLC ;ADD X TIMES 10.BHL
OOP DEX. BMI BHXOUT. ADC #$0A. BNE BHLOO
P.BHXOUT RTS.*.*.*.*.
×
C64 Image
> CLICK IMAGE PREVIEW FOR FULL MODAL