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

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 Preview

> CLICK IMAGE PREVIEW FOR FULL MODAL