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

RD.RTC-1.0

FILE INFORMATION

FILENAME(S): RD.RTC-1.0

FILE TYPE(S): SEQ

FILE SIZE: 3.7K

FIRST SEEN: 2025-12-02 02:15:36

APPEARS ON: 1 disk(s)

FILE HASH

cfa44c4d3b3e467ebe8f8baddebc9c81252f52353b34a1b4f020b2333a466659

FOUND ON DISKS (1 DISKS)

DISK TITLE FILENAME FILE TYPE COLLECTION TRACK SECTOR ACTIONS
TIM S TIMER 2 0 RD.RTC-1.0 SEQ The BAM Archive 21 15 DOWNLOAD FILE

FILE CONTENT & ANALYSIS

00000000: 2A 2A 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: 0D 2A A0 72 65 61 64 A0  6F 66 A0 72 65 61 6C A0  |.*.read.of.real.|
00000030: 74 69 6D 65 A0 63 6C 6F  63 6B A0 76 32 2E 31 A0  |time.clock.v2.1.|
00000040: 2A 0D 2A 2A 2A 2A 2A 2A  2A 2A 2A 2A 2A 2A 2A 2A  |*.**************|
00000050: 2A 2A 2A 2A 2A 2A 2A 2A  2A 2A 2A 2A 2A 2A 2A 2A  |****************|
00000060: 2A 2A 0D 2A A0 A0 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 2A 0D 2A A0 A0 A0  A0 A0 A0 A0 A0 A0 6D 61  |..*.*.........ma|
00000090: 79 A0 31 30 A0 31 39 38  37 A0 A0 A0 A0 A0 A0 A0  |y.10.1987.......|
000000A0: A0 A0 A0 2A 0D 2A A0 A0  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 2A 0D 2A A0  A0 A0 A0 A0 A0 62 79 A0  |....*.*......by.|
000000D0: 74 69 6D A0 67 A0 63 6F  72 63 6F 72 61 6E A0 A0  |tim.g.corcoran..|
000000E0: A0 A0 A0 A0 A0 2A 0D 2A  A0 A0 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 2A 0D  2A 2A 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  0D 2A A0 74 68 69 73 A0  |********.*.this.|
00000130: 73 2F 77 A0 69 73 A0 70  61 72 74 A0 6F 66 A0 74  |s/w.is.part.of.t|
00000140: 68 65 A0 72 74 63 A0 A0  2A 0D 2A A0 73 68 61 72  |he.rtc..*.*.shar|
00000150: 65 77 61 72 65 A0 70 61  63 6B 61 67 65 2E A0 69  |eware.package..i|
00000160: 74 A0 69 73 A0 6F 6B 61  79 2A 0D 2A A0 74 6F A0  |t.is.okay*.*.to.|
00000170: 64 69 73 74 72 69 62 75  74 65 A0 61 6E 64 A0 73  |distribute.and.s|
00000180: 68 61 72 65 A0 62 75 74  A0 A0 2A 0D 2A A0 6E 6F  |hare.but..*.*.no|
00000190: 74 A0 74 6F A0 73 65 6C  6C 2E A0 A0 A0 A0 A0 A0  |t.to.sell.......|
000001A0: A0 A0 A0 A0 A0 A0 A0 A0  A0 A0 A0 2A 0D 2A A0 A0  |...........*.*..|
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 2A 0D 2A A0  |............*.*.|
000001D0: 70 6C 65 61 73 65 A0 63  6F 6E 73 69 64 65 72 A0  |please.consider.|
000001E0: 73 75 70 70 6F 72 74 69  6E 67 A0 A0 A0 2A 0D 2A  |supporting...*.*|
000001F0: A0 A0 A0 6D 79 73 74 69  63 A0 6A 69 6D 27 73 A0  |...mystic.jim's.|
00000200: 73 2F 77 A0 73 79 73 74  65 6D A0 A0 A0 A0 2A 0D  |s/w.system....*.|
00000210: 2A A0 A0 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 2A  |...............*|
00000230: 0D 2A 2A 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 0D 2A 0D 2A 0D 2A 0D  20 6F 72 67 20 24 34 35  |*.*.*.*. org $45|
00000260: 38 30 0D 64 64 72 61 20  65 71 75 20 24 64 63 30  |80.ddra equ $dc0|
00000270: 32 0D 64 72 61 20 65 71  75 20 24 64 63 30 30 0D  |2.dra equ $dc00.|
00000280: 68 6F 75 72 73 20 65 71  75 20 24 34 35 37 30 0D  |hours equ $4570.|
00000290: 6D 69 6E 73 20 65 71 75  20 24 34 35 37 31 0D 73  |mins equ $4571.s|
000002A0: 65 63 73 20 65 71 75 20  24 34 35 37 32 0D 74 65  |ecs equ $4572.te|
000002B0: 6D 70 20 65 71 75 20 24  34 35 37 33 0D 74 6D 70  |mp equ $4573.tmp|
000002C0: 31 20 65 71 75 20 24 34  35 37 34 0D 74 6D 70 32  |1 equ $4574.tmp2|
000002D0: 20 65 71 75 20 24 34 35  37 35 0D 2A 0D 2A 0D 2A  | equ $4575.*.*.*|
000002E0: 0D 2A 0D 2A 0D 20 6C 64  61 20 24 30 31 20 3B 67  |.*.*. lda $01 ;g|
000002F0: 65 74 A0 6D 65 6D A0 63  6F 6E 66 69 67 0D 20 70  |et.mem.config. p|
00000300: 68 61 20 20 3B 73 61 76  65 A0 69 74 0D 20 6C 64  |ha  ;save.it. ld|
00000310: 61 20 23 24 33 35 20 3B  74 75 72 6E A0 6F 6E A0  |a #$35 ;turn.on.|
00000320: 69 2F 6F A0 72 65 67 69  6F 6E 0D 20 73 74 61 20  |i/o.region. sta |
00000330: 24 30 31 0D 73 74 61 72  74 20 73 65 69 20 20 3B  |$01.start sei  ;|
00000340: 69 6E 74 A0 6F 66 66 0D  72 64 72 74 63 20 6C 64  |int.off.rdrtc ld|
00000350: 61 20 64 72 61 20 3B 72  65 61 64 A0 64 72 61 0D  |a dra ;read.dra.|
00000360: 20 73 74 61 20 24 30 32  20 3B 73 61 76 65 A0 69  | sta $02 ;save.i|
00000370: 74 0D 20 6C 64 61 20 64  64 72 61 20 3B 72 65 61  |t. lda ddra ;rea|
00000380: 64 A0 64 64 72 61 0D 20  73 74 61 20 24 30 33 20  |d.ddra. sta $03 |
00000390: 3B 73 61 76 65 A0 69 74  0D 20 6C 64 61 20 23 36  |;save.it. lda #6|
000003A0: 20 3B 6C 6F 61 64 A0 6E  65 77 A0 63 6F 6E 66 69  | ;load.new.confi|
000003B0: 67 0D 20 73 74 61 20 64  64 72 61 20 3B 32 A0 6F  |g. sta ddra ;2.o|
000003C0: 2F 70 27 73 0D 20 6C 64  61 20 23 30 20 3B 73 74  |/p's. lda #0 ;st|
000003D0: 61 74 65 73 0D 20 73 74  61 20 64 72 61 20 3B 63  |ates. sta dra ;c|
000003E0: 65 A0 74 72 75 65 2C A0  73 63 6C 6B A0 6C 6F 77  |e.true,.sclk.low|
000003F0: 0D 2A 0D 2A 0D 2A 0D 2A  A0 72 65 61 64 A0 72 6F  |.*.*.*.*.read.ro|
00000400: 75 74 69 6E 65 0D 2A 0D  20 6C 64 61 20 23 24 64  |utine.*. lda #$d|
00000410: 63 30 66 20 3B 72 65 61  64 A0 63 72 62 A0 66 6F  |c0f ;read.crb.fo|
00000420: 72 A0 63 75 72 72 65 6E  74 A0 73 65 74 74 69 6E  |r.current.settin|
00000430: 67 0D 20 73 74 61 20 74  6D 70 31 20 3B 73 61 76  |g. sta tmp1 ;sav|
00000440: 65 A0 69 74 A0 66 6F 72  A0 6E 6F 77 0D 20 61 6E  |e.it.for.now. an|
00000450: 64 20 23 24 37 66 20 3B  74 6F 64 A0 73 65 6C 65  |d #$7f ;tod.sele|
00000460: 63 74 0D 20 73 74 61 20  24 64 63 30 66 20 3B 73  |ct. sta $dc0f ;s|
00000470: 74 6F 72 65 A0 69 74 0D  20 6C 64 61 20 23 24 62  |tore.it. lda #$b|
00000480: 66 20 3B 62 75 72 73 74  A0 72 65 61 64 0D 20 6A  |f ;burst.read. j|
00000490: 73 72 20 77 72 74 62 79  74 20 3B 67 6F 73 75 62  |sr wrtbyt ;gosub|
000004A0: 0D 20 6A 73 72 20 72 64  62 79 74 20 3B 72 65 61  |. jsr rdbyt ;rea|
000004B0: 64 A0 73 65 63 73 0D 20  73 74 61 20 73 65 63 73  |d.secs. sta secs|
000004C0: 20 3B 73 61 76 65 A0 66  6F 72 A0 6E 6F 77 0D 20  | ;save.for.now. |
000004D0: 6A 73 72 20 72 64 62 79  74 20 3B 72 65 61 64 A0  |jsr rdbyt ;read.|
000004E0: 6D 69 6E 73 0D 20 73 74  61 20 6D 69 6E 73 20 3B  |mins. sta mins ;|
000004F0: 73 61 76 65 A0 69 74 A0  66 6F 72 A0 6E 6F 77 0D  |save.it.for.now.|
00000500: 20 6A 73 72 20 72 64 62  79 74 20 3B 72 65 61 64  | jsr rdbyt ;read|
00000510: A0 68 6F 75 72 73 0D 20  74 61 78 20 20 3B 74 72  |.hours. tax  ;tr|
00000520: 61 6E 73 66 65 72 A0 74  6F A0 78 A0 72 65 67 2E  |ansfer.to.x.reg.|
00000530: 0D 20 61 6E 64 20 23 24  31 66 20 3B 63 6C 65 61  |. and #$1f ;clea|
00000540: 72 A0 33 A0 6D 73 62 27  73 0D 20 63 6D 70 20 23  |r.3.msb's. cmp #|
00000550: 24 31 32 20 3B 69 73 A0  69 74 A0 74 77 65 6C 76  |$12 ;is.it.twelv|
00000560: 65 3F 0D 20 62 6E 65 20  6E 6F 77 61 79 20 3B 6E  |e?. bne noway ;n|
00000570: 6F A0 69 74 A0 69 73 6E  27 74 A0 74 77 65 6C 76  |o.it.isn't.twelv|
00000580: 65 0D 20 74 78 61 20 20  3B 72 65 74 72 69 65 76  |e. txa  ;retriev|
00000590: 65 0D 20 65 6F 72 20 23  24 32 30 20 3B 74 6F 67  |e. eor #$20 ;tog|
000005A0: 67 6C 65 A0 61 6D 2F 70  6D A0 62 69 74 0D 20 74  |gle.am/pm.bit. t|
000005B0: 61 78 0D 6E 6F 77 61 79  20 74 78 61 20 20 3B 72  |ax.noway txa  ;r|
000005C0: 65 74 72 69 65 76 65 0D  20 61 6E 64 20 23 24 31  |etrieve. and #$1|
000005D0: 66 20 3B 63 6C 65 61 72  A0 33 A0 6D 73 62 27 73  |f ;clear.3.msb's|
000005E0: 0D 20 73 74 61 20 68 6F  75 72 73 0D 20 74 78 61  |. sta hours. txa|
000005F0: 20 20 3B 72 65 74 72 69  65 76 65 A0 69 74 A0 66  |  ;retrieve.it.f|
00000600: 72 6F 6D A0 78 A0 72 65  67 0D 20 61 6E 64 20 23  |rom.x.reg. and #|
00000610: 24 32 30 20 3B 69 73 6F  6C 61 74 65 A0 61 6D 2F  |$20 ;isolate.am/|
00000620: 70 6D A0 62 69 74 0D 20  61 73 6C 0D 20 61 73 6C  |pm.bit. asl. asl|
00000630: 0D 20 6F 72 61 20 68 6F  75 72 73 20 3B 70 75 74  |. ora hours ;put|
00000640: A0 68 6F 75 72 73 A0 62  61 63 6B A0 69 6E 0D 20  |.hours.back.in. |
00000650: 73 74 61 20 74 6D 70 32  20 3B 73 61 76 65 A0 69  |sta tmp2 ;save.i|
00000660: 74 A0 66 6F 72 A0 6C 61  74 65 72 0D 20 73 74 61  |t.for.later. sta|
00000670: 20 24 64 63 30 62 20 3B  73 61 76 65 A0 74 6F A0  | $dc0b ;save.to.|
00000680: 74 68 65 A0 63 69 61 A0  74 6F 64 0D 20 63 6D 70  |the.cia.tod. cmp|
00000690: 20 23 24 31 32 20 3B 69  73 A0 69 74 A0 74 77 65  | #$12 ;is.it.twe|
000006A0: 6C 76 65 3F 0D 20 62 6E  65 20 74 65 73 74 20 3B  |lve?. bne test ;|
000006B0: 6E 6F 3F A0 67 6F 74 6F  A0 74 65 73 74 0D 20 6C  |no?.goto.test. l|
000006C0: 64 61 20 23 24 30 20 3B  6F 74 68 65 72 77 69 73  |da #$0 ;otherwis|
000006D0: 65 A0 73 65 74 A0 68 6F  75 72 A0 74 6F A0 30 0D  |e.set.hour.to.0.|
000006E0: 74 65 73 74 20 62 69 74  20 74 6D 70 32 20 3B 61  |test bit tmp2 ;a|
000006F0: 6D 2F 70 6D A0 74 65 73  74 0D 20 62 70 6C 20 69  |m/pm.test. bpl i|
00000700: 74 73 61 6D 20 3B 6F 6E  A0 61 6D A0 67 6F 74 6F  |tsam ;on.am.goto|
00000710: A0 69 74 73 61 6D 0D 20  73 65 64 20 20 3B 64 65  |.itsam. sed  ;de|
00000720: 63 69 6D 61 6C A0 6D 6F  64 65 0D 20 63 6C 63 20  |cimal.mode. clc |
00000730: 20 3B 63 6C 65 61 72 A0  63 61 72 72 79 0D 20 61  | ;clear.carry. a|
00000740: 64 63 20 23 24 31 32 20  3B 6D 61 6B 65 A0 69 74  |dc #$12 ;make.it|
00000750: A0 32 34 A0 68 72 A0 63  6C 6F 63 6B A0 66 6F 72  |.24.hr.clock.for|
00000760: 6D 61 74 0D 20 63 6C 64  20 20 3B 6C 65 61 76 65  |mat. cld  ;leave|
00000770: A0 64 65 63 69 6D 61 6C  A0 6D 6F 64 65 0D 69 74  |.decimal.mode.it|
00000780: 73 61 6D 20 6A 73 72 20  62 63 64 74 68 78 20 3B  |sam jsr bcdthx ;|
00000790: 63 6F 6E 76 65 72 74 A0  74 6F A0 68 65 78 0D 20  |convert.to.hex. |
000007A0: 73 74 61 20 24 38 35 31  39 20 3B 73 61 76 65 A0  |sta $8519 ;save.|
000007B0: 74 6F A0 67 65 6F 73 A0  68 6F 75 72 73 0D 20 6C  |to.geos.hours. l|
000007C0: 64 61 20 6D 69 6E 73 20  3B 72 65 74 72 69 65 76  |da mins ;retriev|
000007D0: 65 A0 6D 69 6E 75 74 65  73 0D 20 73 74 61 20 24  |e.minutes. sta $|
000007E0: 64 63 30 61 20 3B 73 61  76 65 A0 74 6F A0 74 6F  |dc0a ;save.to.to|
000007F0: 64 0D 20 6A 73 72 20 62  63 64 74 68 78 20 3B 63  |d. jsr bcdthx ;c|
00000800: 6F 6E 76 65 72 74 A0 74  6F A0 68 65 78 0D 20 73  |onvert.to.hex. s|
00000810: 74 61 20 24 38 35 31 61  20 3B 73 61 76 65 A0 74  |ta $851a ;save.t|
00000820: 6F A0 67 65 6F 73 A0 6D  69 6E 73 0D 20 6C 64 61  |o.geos.mins. lda|
00000830: 20 73 65 63 73 20 3B 72  65 74 72 69 65 76 65 A0  | secs ;retrieve.|
00000840: 73 65 63 6F 6E 64 73 0D  20 73 74 61 20 24 64 63  |seconds. sta $dc|
00000850: 30 39 20 3B 73 61 76 65  A0 74 6F A0 74 6F 64 0D  |09 ;save.to.tod.|
00000860: 20 6A 73 72 20 62 63 64  74 68 78 20 3B 63 6F 6E  | jsr bcdthx ;con|
00000870: 76 65 72 74 A0 74 6F A0  68 65 78 0D 20 73 74 61  |vert.to.hex. sta|
00000880: 20 24 38 35 31 62 20 3B  73 61 76 65 A0 74 6F A0  | $851b ;save.to.|
00000890: 67 65 6F 73 A0 73 65 63  73 0D 20 6C 64 61 20 23  |geos.secs. lda #|
000008A0: 24 30 20 3B 62 6C 61 6E  6B A0 6F 75 74 A0 31 30  |$0 ;blank.out.10|
000008B0: 27 74 68 73 A0 6F 66 A0  73 65 63 73 0D 20 73 74  |'ths.of.secs. st|
000008C0: 61 20 24 64 63 30 38 20  3B 26 A0 73 74 61 72 74  |a $dc08 ;&.start|
000008D0: A0 75 70 A0 74 68 65 A0  74 6F 64 A0 63 6C 6F 63  |.up.the.tod.cloc|
000008E0: 6B 0D 0D 20 6A 73 72 20  72 64 62 79 74 20 3B 72  |k.. jsr rdbyt ;r|
000008F0: 65 61 64 A0 64 61 74 65  0D 20 6A 73 72 20 62 63  |ead.date. jsr bc|
00000900: 64 74 68 78 20 3B 63 6F  6E 76 65 72 74 A0 74 6F  |dthx ;convert.to|
00000910: A0 68 65 78 0D 20 73 74  61 20 24 38 35 31 38 20  |.hex. sta $8518 |
00000920: 3B 73 61 76 65 A0 74 6F  A0 67 65 6F 73 A0 64 61  |;save.to.geos.da|
00000930: 79 0D 20 6A 73 72 20 72  64 62 79 74 20 3B 72 65  |y. jsr rdbyt ;re|
00000940: 61 64 A0 6D 6F 6E 74 68  0D 20 6A 73 72 20 62 63  |ad.month. jsr bc|
00000950: 64 74 68 78 20 3B 63 6F  6E 76 65 72 74 A0 74 6F  |dthx ;convert.to|
00000960: A0 68 65 78 0D 20 73 74  61 20 24 38 35 31 37 20  |.hex. sta $8517 |
00000970: 3B 73 61 76 65 A0 74 6F  A0 67 65 6F 73 A0 6D 6F  |;save.to.geos.mo|
00000980: 6E 74 68 0D 20 6A 73 72  20 72 64 62 79 74 20 3B  |nth. jsr rdbyt ;|
00000990: 72 65 61 64 A0 64 61 79  0D 20 6A 73 72 20 72 64  |read.day. jsr rd|
000009A0: 62 79 74 20 3B 73 6B 69  70 A0 64 61 79 2F 72 65  |byt ;skip.day/re|
000009B0: 61 64 A0 79 65 61 72 0D  20 6A 73 72 20 62 63 64  |ad.year. jsr bcd|
000009C0: 74 68 78 20 3B 63 6F 6E  76 65 72 74 A0 74 6F A0  |thx ;convert.to.|
000009D0: 68 65 78 0D 20 73 74 61  20 24 38 35 31 36 20 3B  |hex. sta $8516 ;|
000009E0: 73 61 76 65 A0 74 6F A0  67 65 6F 73 A0 79 65 61  |save.to.geos.yea|
000009F0: 72 0D 20 6C 64 61 20 23  24 34 20 3B 74 75 72 6E  |r. lda #$4 ;turn|
00000A00: A0 6F 66 66 A0 63 68 69  70 A0 65 6E 61 62 6C 65  |.off.chip.enable|
00000A10: 0D 20 73 74 61 20 64 72  61 0D 66 69 6E 69 73 68  |. sta dra.finish|
00000A20: 20 70 6C 61 20 20 3B 67  65 74 A0 6F 6C 64 A0 6D  | pla  ;get.old.m|
00000A30: 65 6D A0 63 6F 6E 66 69  67 0D 20 73 74 61 20 24  |em.config. sta $|
00000A40: 30 31 20 3B 73 65 74 A0  69 74 0D 20 63 6C 69 20  |01 ;set.it. cli |
00000A50: 20 3B 65 6E 61 62 6C 65  A0 69 6E 74 65 72 72 75  | ;enable.interru|
00000A60: 70 74 73 0D 20 6A 73 72  20 24 63 32 32 63 20 3B  |pts. jsr $c22c ;|
00000A70: 72 65 6C 6F 61 64 A0 64  65 73 6B 74 6F 70 0D 2A  |reload.desktop.*|
00000A80: 0D 2A 0D 2A 0D 2A 0D 2A  A0 77 72 69 74 65 A0 61  |.*.*.*.*.write.a|
00000A90: A0 62 79 74 65 A0 74 6F  A0 74 68 65 A0 72 74 63  |.byte.to.the.rtc|
00000AA0: 0D 2A 0D 77 72 74 62 79  74 20 6C 64 78 20 23 38  |.*.wrtbyt ldx #8|
00000AB0: 20 3B 63 6F 75 6E 74 3D  38 0D 20 73 74 61 20 74  | ;count=8. sta t|
00000AC0: 65 6D 70 20 3B 73 61 76  65 A0 69 74 0D 20 6C 64  |emp ;save.it. ld|
00000AD0: 61 20 23 24 37 20 3B 63  6F 6E 66 69 67 A0 6C 73  |a #$7 ;config.ls|
00000AE0: 62 A0 61 73 A0 6F 2F 70  0D 20 73 74 61 20 64 64  |b.as.o/p. sta dd|
00000AF0: 72 61 20 3B 0D 20 6C 64  61 20 74 65 6D 70 0D 77  |ra ;. lda temp.w|
00000B00: 6C 6F 6F 70 20 61 6E 64  20 23 24 66 39 20 3B 73  |loop and #$f9 ;s|
00000B10: 63 6C 6B A0 6C 6F 77 2C  A0 63 68 69 70 A0 65 6E  |clk.low,.chip.en|
00000B20: 61 62 6C 65 0D 20 73 74  61 20 64 72 61 20 3B 73  |able. sta dra ;s|
00000B30: 65 74 A0 75 70 0D 20 6F  72 61 20 23 32 20 3B 73  |et.up. ora #2 ;s|
00000B40: 63 6C 6B A0 68 69 0D 20  73 74 61 20 64 72 61 20  |clk.hi. sta dra |
00000B50: 3B 6C 73 62 A0 6F 75 74  0D 20 6C 64 61 20 74 65  |;lsb.out. lda te|
00000B60: 6D 70 20 3B 72 65 66 72  65 73 68 A0 62 79 74 65  |mp ;refresh.byte|
00000B70: 0D 20 6C 73 72 20 61 20  3B 6E 65 78 74 A0 62 69  |. lsr a ;next.bi|
00000B80: 74 0D 20 73 74 61 20 74  65 6D 70 20 3B 73 61 76  |t. sta temp ;sav|
00000B90: 65 A0 69 74 0D 20 64 65  78 20 20 3B 75 70 64 61  |e.it. dex  ;upda|
00000BA0: 74 65 A0 63 6F 75 6E 74  0D 20 62 6E 65 20 77 6C  |te.count. bne wl|
00000BB0: 6F 6F 70 20 3B 6C 6F 6F  70 3F 0D 20 6C 64 61 20  |oop ;loop?. lda |
00000BC0: 23 24 36 20 3B 63 6F 6E  66 69 67 A0 6C 73 62 A0  |#$6 ;config.lsb.|
00000BD0: 61 73 A0 69 2F 70 A0 61  67 61 69 6E 0D 20 73 74  |as.i/p.again. st|
00000BE0: 61 20 64 64 72 61 20 3B  0D 20 72 74 73 0D 2A 0D  |a ddra ;. rts.*.|
00000BF0: 2A 0D 2A 0D 2A 0D 2A A0  72 65 61 64 A0 61 A0 62  |*.*.*.*.read.a.b|
00000C00: 79 74 65 A0 66 72 6F 6D  A0 74 68 65 A0 72 74 63  |yte.from.the.rtc|
00000C10: 0D 2A 0D 72 64 62 79 74  20 6C 64 61 20 23 24 30  |.*.rdbyt lda #$0|
00000C20: 0D 20 73 74 61 20 74 65  6D 70 20 3B 63 6C 72 A0  |. sta temp ;clr.|
00000C30: 74 65 6D 70 0D 20 6C 64  78 20 23 24 30 38 20 3B  |temp. ldx #$08 ;|
00000C40: 63 6F 75 6E 74 3D 38 0D  72 6C 6F 6F 70 20 6C 64  |count=8.rloop ld|
00000C50: 61 20 23 24 30 32 20 3B  73 65 74 75 70 0D 20 73  |a #$02 ;setup. s|
00000C60: 74 61 20 64 72 61 20 3B  73 63 6C 6B A0 68 69 2C  |ta dra ;sclk.hi,|
00000C70: A0 63 65 A0 6C 6F 0D 20  6C 64 61 20 23 24 30 20  |.ce.lo. lda #$0 |
00000C80: 3B 63 6C 72 A0 61 63 63  0D 20 73 74 61 20 64 72  |;clr.acc. sta dr|
00000C90: 61 20 3B 73 63 6C 6B A0  6C 6F 2C A0 63 65 A0 6C  |a ;sclk.lo,.ce.l|
00000CA0: 6F 0D 2A A0 A0 3B 64 61  74 61 A0 70 72 65 73 65  |o.*..;data.prese|
00000CB0: 6E 74 0D 20 6C 64 61 20  64 72 61 20 3B 72 65 61  |nt. lda dra ;rea|
00000CC0: 64 A0 64 61 74 61 0D 20  72 6F 72 20 61 20 3B 72  |d.data. ror a ;r|
00000CD0: 6F 74 61 74 65 A0 64 61  74 61 A0 62 69 74 A0 74  |otate.data.bit.t|
00000CE0: 6F A0 63 0D 20 6C 64 61  20 74 65 6D 70 20 3B 72  |o.c. lda temp ;r|
00000CF0: 65 61 64 A0 74 65 6D 70  A0 74 6F A0 61 63 63 0D  |ead.temp.to.acc.|
00000D00: 20 72 6F 72 20 61 0D 20  73 74 61 20 74 65 6D 70  | ror a. sta temp|
00000D10: 20 3B 73 61 76 65 A0 74  65 6D 70 0D 20 64 65 78  | ;save.temp. dex|
00000D20: 20 20 3B 75 70 64 61 74  65 A0 63 6F 75 6E 74 0D  |  ;update.count.|
00000D30: 20 62 6E 65 20 72 6C 6F  6F 70 0D 20 6C 64 61 20  | bne rloop. lda |
00000D40: 74 65 6D 70 20 3B 74 65  6D 70 A0 74 6F A0 61 63  |temp ;temp.to.ac|
00000D50: 63 0D 20 72 74 73 0D 2A  0D 2A 0D 2A 0D 2A 0D 2A  |c. rts.*.*.*.*.*|
00000D60: A0 62 63 64 A0 74 6F A0  68 65 78 A0 63 6F 6E 76  |.bcd.to.hex.conv|
00000D70: 65 72 74 A0 72 6F 75 74  69 6E 65 0D 2A A0 A0 74  |ert.routine.*..t|
00000D80: 68 61 6E 6B 73 A0 74 6F  A0 62 73 77 A0 66 6F 72  |hanks.to.bsw.for|
00000D90: A0 74 68 65 A0 68 65 6C  70 0D 2A 0D 2A 0D 62 63  |.the.help.*.*.bc|
00000DA0: 64 74 68 78 20 70 68 61  20 20 3B 73 61 76 65 A0  |dthx pha  ;save.|
00000DB0: 62 63 64 A0 76 61 6C 75  65 0D 20 61 6E 64 20 23  |bcd.value. and #|
00000DC0: 24 66 30 20 3B 69 73 6F  6C 61 74 65 A0 6C 65 66  |$f0 ;isolate.lef|
00000DD0: 74 A0 6E 69 62 62 6C 65  0D 20 6C 73 72 20 20 3B  |t.nibble. lsr  ;|
00000DE0: 61 6E 64 A0 73 68 69 66  74 A0 74 6F A0 72 68 73  |and.shift.to.rhs|
00000DF0: 0D 20 6C 73 72 0D 20 6C  73 72 0D 20 6C 73 72 0D  |. lsr. lsr. lsr.|
00000E00: 20 74 61 78 20 20 3B 6D  61 72 6B A0 6E 75 6D 62  | tax  ;mark.numb|
00000E10: 65 72 0D 20 70 6C 61 20  20 3B 67 65 74 A0 62 63  |er. pla  ;get.bc|
00000E20: 64 A0 76 61 6C 75 65 0D  20 61 6E 64 20 23 24 30  |d.value. and #$0|
00000E30: 66 20 3B 63 6C 65 61 72  A0 6C 65 66 74 A0 6E 69  |f ;clear.left.ni|
00000E40: 62 62 6C 65 0D 20 63 6C  63 20 20 3B 61 64 64 A0  |bble. clc  ;add.|
00000E50: 78 A0 74 69 6D 65 73 A0  31 30 0D 62 68 6C 6F 6F  |x.times.10.bhloo|
00000E60: 70 20 64 65 78 0D 20 62  6D 69 20 62 68 78 6F 75  |p dex. bmi bhxou|
00000E70: 74 0D 20 61 64 63 20 23  24 30 61 0D 20 62 6E 65  |t. adc #$0a. bne|
00000E80: 20 62 68 6C 6F 6F 70 0D  62 68 78 6F 75 74 20 72  | bhloop.bhxout r|
00000E90: 74 73 0D 2A 0D 2A 0D 2A  0D 2A 0D                 |ts.*.*.*.*.     |
********************************.* READ 
OF REAL TIME CLOCK V2.1 *.**************
******************.*                    
          *.*         MAY 10 1987       
   *.*                              *.* 
     BY TIM G CORCORAN       *.*        
                      *.****************
****************.* THIS S/W IS PART OF T
HE RTC  *.* SHAREWARE PACKAGE. IT IS OKA
Y*.* TO DISTRIBUTE AND SHARE BUT  *.* NO
T TO SELL.                 *.*          
                    *.* PLEASE CONSIDER 
SUPPORTING   *.*   MYSTIC JIM'S S/W SYST
EM    *.*                              *
.********************************.*.*.*.
 ORG $4580.DDRA EQU $DC02.DRA EQU $DC00.
HOURS EQU $4570.MINS EQU $4571.SECS EQU 
$4572.TEMP EQU $4573.TMP1 EQU $4574.TMP2
 EQU $4575.*.*.*.*.*. LDA $01 ;GET MEM C
ONFIG. PHA  ;SAVE IT. LDA #$35 ;TURN ON 
I/O REGION. STA $01.START SEI  ;INT OFF.
RDRTC LDA DRA ;READ DRA. STA $02 ;SAVE I
T. 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 #$D
C0F ;READ CRB FOR CURRENT SETTING. STA T
MP1 ;SAVE IT FOR NOW. AND #$7F ;TOD SELE
CT. STA $DC0F ;STORE IT. LDA #$BF ;BURST
 READ. JSR WRTBYT ;GOSUB. JSR RDBYT ;REA
D SECS. STA SECS ;SAVE FOR NOW. JSR RDBY
T ;READ MINS. STA MINS ;SAVE IT FOR NOW.
 JSR RDBYT ;READ HOURS. TAX  ;TRANSFER T
O X REG.. AND #$1F ;CLEAR 3 MSB'S. CMP #
$12 ;IS IT TWELVE?. BNE NOWAY ;NO IT ISN
'T TWELVE. TXA  ;RETRIEVE. EOR #$20 ;TOG
GLE AM/PM BIT. TAX.NOWAY TXA  ;RETRIEVE.
 AND #$1F ;CLEAR 3 MSB'S. STA HOURS. TXA
  ;RETRIEVE IT FROM X REG. AND #$20 ;ISO
LATE AM/PM BIT. ASL. ASL. ORA HOURS ;PUT
 HOURS BACK IN. STA TMP2 ;SAVE IT FOR LA
TER. STA $DC0B ;SAVE TO THE CIA TOD. CMP
 #$12 ;IS IT TWELVE?. BNE TEST ;NO? GOTO
 TEST. LDA #$0 ;OTHERWISE SET HOUR TO 0.
TEST BIT TMP2 ;AM/PM TEST. BPL ITSAM ;ON
 AM GOTO ITSAM. SED  ;DECIMAL MODE. CLC 
 ;CLEAR CARRY. ADC #$12 ;MAKE IT 24 HR C
LOCK FORMAT. CLD  ;LEAVE DECIMAL MODE.IT
SAM JSR BCDTHX ;CONVERT TO HEX. STA $851
9 ;SAVE TO GEOS HOURS. LDA MINS ;RETRIEV
E MINUTES. STA $DC0A ;SAVE TO TOD. JSR B
CDTHX ;CONVERT TO HEX. STA $851A ;SAVE T
O GEOS MINS. LDA SECS ;RETRIEVE SECONDS.
 STA $DC09 ;SAVE TO TOD. JSR BCDTHX ;CON
VERT TO HEX. STA $851B ;SAVE TO GEOS SEC
S. LDA #$0 ;BLANK OUT 10'THS OF SECS. ST
A $DC08 ;& START UP THE TOD CLOCK.. JSR 
RDBYT ;READ DATE. JSR BCDTHX ;CONVERT TO
 HEX. STA $8518 ;SAVE TO GEOS DAY. JSR R
DBYT ;READ MONTH. JSR BCDTHX ;CONVERT TO
 HEX. STA $8517 ;SAVE TO GEOS MONTH. JSR
 RDBYT ;READ DAY. JSR RDBYT ;SKIP DAY/RE
AD YEAR. JSR BCDTHX ;CONVERT TO HEX. STA
 $8516 ;SAVE TO GEOS YEAR. LDA #$4 ;TURN
 OFF CHIP ENABLE. STA DRA.FINISH PLA  ;G
ET OLD MEM CONFIG. STA $01 ;SET IT. CLI 
 ;ENABLE INTERRUPTS. JSR $C22C ;RELOAD D
ESKTOP.*.*.*.*.* WRITE A BYTE TO THE RTC
.*.WRTBYT LDX #8 ;COUNT=8. STA TEMP ;SAV
E IT. LDA #$7 ;CONFIG LSB AS O/P. STA DD
RA ;. LDA TEMP.WLOOP AND #$F9 ;SCLK LOW,
 CHIP ENABLE. STA DRA ;SET UP. ORA #2 ;S
CLK HI. STA DRA ;LSB OUT. LDA TEMP ;REFR
ESH BYTE. LSR A ;NEXT BIT. STA TEMP ;SAV
E IT. DEX  ;UPDATE COUNT. BNE WLOOP ;LOO
P?. LDA #$6 ;CONFIG LSB AS I/P AGAIN. ST
A DDRA ;. RTS.*.*.*.*.* READ A BYTE FROM
 THE RTC.*.RDBYT LDA #$0. STA TEMP ;CLR 
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.*  ;DA
TA PRESENT. LDA DRA ;READ DATA. ROR A ;R
OTATE DATA BIT TO C. LDA TEMP ;READ TEMP
 TO ACC. ROR A. STA TEMP ;SAVE TEMP. DEX
  ;UPDATE COUNT. BNE RLOOP. LDA TEMP ;TE
MP TO ACC. RTS.*.*.*.*.* BCD TO HEX CONV
ERT ROUTINE.*  THANKS TO BSW FOR THE HEL
P.*.*.BCDTHX PHA  ;SAVE BCD VALUE. AND #
$F0 ;ISOLATE LEFT NIBBLE. LSR  ;AND SHIF
T TO RHS. LSR. LSR. LSR. TAX  ;MARK NUMB
ER. PLA  ;GET BCD VALUE. AND #$0F ;CLEAR
 LEFT NIBBLE. CLC  ;ADD X TIMES 10.BHLOO
P DEX. BMI BHXOUT. ADC #$0A. BNE BHLOOP.
BHXOUT RTS.*.*.*.*.
C64 Preview

> CLICK IMAGE PREVIEW FOR FULL MODAL