_  __   _  _         _ _     _      _           _           
  __| |/ /_ | || |     __| (_)___| | __ (_)_ __   __| | _____  __
 / _` | '_ \| || |_   / _` | / __| |/ / | | '_ \ / _` |/ _ \ \/ /
| (_| | (_) |__   _| | (_| | \__ \   <  | | | | | (_| |  __/>  < 
 \__,_|\___/   |_|    \__,_|_|___/_|\_\ |_|_| |_|\__,_|\___/_/\_\
                                                                 
            

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 Preview

> CLICK IMAGE PREVIEW FOR FULL MODAL