home *** CD-ROM | disk | FTP | other *** search
/ 64'er Special 67 / 64er_Magazin_Sonderheft_67_19xx_Markt__Technik_de_Side_B.d64 / op.rtc (.txt) < prev    next >
Commodore BASIC  |  2022-10-26  |  6KB  |  187 lines

  1. 2 open2,8,2,"rtc 49152,p,w
  2. 10 [158]36864
  3. 20 .opt o2
  4. 30 [172][178] $c000
  5. 100 cia [178]$dd00
  6. 102 ddra [178]cia[170]2
  7. 104 ddrb [178]cia[170]3
  8. 106 prta [178]cia
  9. 108 prtb [178]cia[170]1
  10. 110 errout [178]$a445
  11. 112 errptr [178]$22
  12. 114 tmp [178]166
  13. 116 buffer [178]704
  14. 118 [161]x [178]$b7f1
  15. 120 komma [178]$aefd
  16. 122 frmevl [178]$ad9e
  17. 124 [184]str [178]$b6a3
  18. 126 strptr [178]$22
  19. 128 findvar [178]$b08b
  20. 130 varadr [178]$49
  21. 132 para [178]$61
  22. 134 strres [178]$b475
  23. 136 trans [178]2
  24. 138 nmivec [178]792
  25. 140 oldnmi [178]$fe47
  26. 142 sid [178]$d400
  27. 500 jmp rtcinit
  28. 502 jmp [135]time
  29. 504 jmp writetime
  30. 506 jmp adj30
  31. 508 jmp pieps
  32. 600 errt .[198] "unable to access rtlen
  33. 601 nixt .asc "string forma[212]
  34. 602 days .[198] "somodimidofrsa
  35. 702 try brk
  36. 704 strlen brk
  37. 706 buc1 brk
  38. 708 buc2 brk
  39. 710 art brk
  40. 712 typ brk
  41. 714 takt brk
  42. 716 xmem brk
  43. 718 ymem brk
  44. 720 zehn brk
  45. 800 .asc "rtc-dienstprogramm
  46. 802 .byt 0,0,0
  47. 804 .[198] "(c)opyright nikolaus heusler
  48. 806 .byt 0,0,0
  49. 808 .asc "i.a. redaktion 64'er 120589
  50. 810 .byt 0,0,0
  51. 1000 [135]time jsr [161]x:stx typ
  52. 1001 jsr komma:jsr findvar:sta varadr:sty varadr[170]1:jsr [184]str:ldy #0
  53. 1002 jsr wart ; uhr anhalten
  54. 1004 lda typ:bmi np4:ldx #5:jsr [194]:[175] #3:jsr numout
  55. 1006 ldx #4:jsr [194]:jsr numout
  56. 1008 lda typ:bne np1:lda #":":jsr out
  57. 1010 np1 ldx #3:jsr [194]:jsr numout
  58. 1012 ldx #2:jsr [194]:jsr numout
  59. 1014 lda typ:bne np2:lda #":":jsr out
  60. 1016 np2 ldx #1:jsr [194]:jsr numout
  61. 1018 ldx #0:jsr [194]:jsr numout
  62. 1020 lda typ:bne np3:lda #" ":jsr out
  63. 1028 ldx #12:jsr [194]:asl:tax:lda days,x:jsr out:lda days[170]1,x:jsr out
  64. 1030 lda #",":jsr out
  65. 1031 np4 ldx #7:jsr [194]:jsr numout
  66. 1032 ldx #6:jsr [194]:jsr numout
  67. 1034 bit typ:bvs np5:lda #".":jsr out
  68. 1036 np5 ldx #9:jsr [194]:jsr numout:ldx #8:jsr [194]:jsr numout
  69. 1038 bit typ:bvs np6:lda #".":jsr out
  70. 1040 np6 ldx #11:jsr [194]:jsr numout
  71. 1042 ldx #10:jsr [194]:jsr numout
  72. 1044 np3 jsr weiter:sty tmp:tya:jsr strres:ldy #2
  73. 1046 setpar lda para,y:sta (varadr),y:dey:bpl setpar:iny
  74. 1048 settxt cpy tmp:beq carried:lda buffer,y:sta (para[170]1),y:iny:bne settxt
  75. 1049 carried rts
  76. 1050 numout [176]a #"0
  77. 1052 out sta buffer,y:iny:rts
  78. 1060 wart lda #10:sta try ; 10 versuche
  79. 1061 w3 ldx #13:jsr peek:ora #1:ldx #13:jsr poke
  80. 1062 w2 ldx #13:jsr peek:and #2:beq w1
  81. 1064 jsr weiter
  82. 1066 dec try:bne w3
  83. 1068 w1 rts
  84. 1070 weiter ldx #13:jsr peek:and #254:ldx #13:jmp poke
  85. 1100 ; +- 30 sekunden einstellen
  86. 1102 adj30 ldx #13:jsr peek:ora #8 ; adj30 bit setzen
  87. 1104 ldx #13:jmp poke
  88. 1190 qnix jmp nix
  89. 1200 writetime jsr komma:jsr frmevl:jsr frestr:sta strlen:tay:beq qnix
  90. 1202 jsr wart:ldy #0
  91. 1204 jsr getnum:bmi qnix:ldx #5:jsr poke
  92. 1206 jsr getnum:bmi qnix:ldx #4:jsr poke
  93. 1208 jsr getnum:bmi qnix:ldx #3:jsr poke
  94. 1210 jsr getnum:bmi qnix:ldx #2:jsr poke
  95. 1212 jsr getnum:bmi qnix:ldx #1:jsr poke
  96. 1214 jsr getnum:bmi qnix:ldx #0:jsr poke
  97. 1216 ; datum setzen (optional)
  98. 1218 jsr getnum:bmi sat:ldx #7:jsr poke
  99. 1220 jsr getnum:bmi qnix:ldx #6:jsr poke
  100. 1222 jsr getnum:bmi qnix:ldx #9:jsr poke
  101. 1224 jsr getnum:bmi qnix:ldx #8:jsr poke
  102. 1226 jsr getnum:bmi nix:ldx #11:jsr poke
  103. 1228 jsr getnum:bmi nix:ldx #10:jsr poke
  104. 1230 ; tag setzen (optional)
  105. 1232 jsr getletter:bmi sat:sta buc1
  106. 1234 jsr getletter:bmi nix:sta buc2:ldx #0
  107. 1236 suchdoog lda days,x:cmp buc1:bne nein:lda days+1,x:cmp buc2:beq isses
  108. 1238 nein inx:inx:cpx #14:bcc suchdoog:bcs nix
  109. 1240 isses txa:lsr:ldx #12:jsr poke
  110. 1248 sat jmp weiter
  111. 1270 getletter cpy strlen:bcs mi1:lda (strptr),y
  112. 1271 cmp #"a":bcc nolet:cmp #"z"+1:bcs nolet
  113. 1272 iny:rts
  114. 1274 nolet iny:cpy strlen:bcc getletter
  115. 1276 mi1 lda #-1:rts
  116. 1280 getnum cpy strlen:bcs mi1:lda (strptr),y
  117. 1281 cmp #"0":bcc nozif:cmp #"9"+1:bcs nozif:and #$f
  118. 1282 iny:rts
  119. 1284 nozif iny:cpy strlen:bcc getnum
  120. 1286 lda #-1:rts
  121. 1290 nix jsr weiter:lda #<nixt:sta errptr:lda #>nixt:jmp errout
  122. 2000 ; register x anfahren
  123. 2002 regx lda prta:ora #4:sta prta:and #251:sta prta ; reset
  124. 2004 l1 lda prtb:and #16:bne error ; q5 darf nicht 1 sein
  125. 2006 txa:beq reach ; register erreicht
  126. 2008 lda prtb:and #223:sta prtb:ora #32:sta prtb ; clock
  127. 2010 dex:bne l1 ; x mal clocken
  128. 2012 reach rts
  129. 2100 ; platine nicht angeschlossen
  130. 2102 error lda art:beq errx:lda #0:sta art:sta trans:rts
  131. 2104 errx lda #<errt:sta errptr:lda #>errt:jmp errout
  132. 2200 ; register x nach a lesen
  133. 2202 peek jsr regx ; x anfahren
  134. 2204 lda #224:sta ddrb ; port auf eingabe
  135. 2206 lda prtb:and #127:sta prtb ; read-signal
  136. 2208 lda prtb:and #15:pha ; port lesen
  137. 2210 lda prtb:ora #192:sta prtb ; read & write aus
  138. 2212 pla:rts
  139. 2300 ; cia initialisieren
  140. 2302 ciainit lda ddra:ora #4:sta ddra ; reset ausgang
  141. 2304 lda #224:sta ddrb ; port auf eingang
  142. 2306 sta prtb ; -clk, -wr, -rd aus
  143. 2308 rts
  144. 2400 ; uhr initialisieren
  145. 2402 rtcinit jsr getx:stx art:lda #-1:sta trans
  146. 2403 jsr ciainit
  147. 2404 ; test, ob rtc angeschlossen
  148. 2410 lda prta:ora #4:sta prta:and #251:sta prta ; reset
  149. 2412 ldx #16 ; 16 mal clocken
  150. 2414 l2 lda prtb:and #16
  151. 2415 bne error ; q5 darf nicht 1 sein
  152. 2416 lda prtb:and #223:sta prtb:ora #32:sta prtb ; clock
  153. 2418 dex:bne l2
  154. 2420 ldx #16 ; 16 mal clocken
  155. 2422 l3 lda prtb:and #16:beq qqerror ; q5 muss 1 sein
  156. 2424 lda prtb:and #223:sta prtb:ora #32:sta prtb ; clock
  157. 2426 dex:bne l3
  158. 2428 lda prtb:and #16:bne qqerror ; q5 darf nicht 1 sein
  159. 2430 ; uhr hochfahren
  160. 2432 lda #0:ldx #13:jsr poke ; register 13 loeschen
  161. 2434 lda #1:ldx #14:jsr poke ; register 14 ruecksetzen
  162. 2436 lda #4:ldx #15:jmp poke ; register 15 uhr anfahren 24 std modus
  163. 2450 qqerror jmp error
  164. 2500 ; schreibt a in register x
  165. 2502 poke and #15:sta tmp:jsr regx ; x anfahren
  166. 2504 lda prtb:ora #192:sta prtb ; read & write aus
  167. 2506 lda #239:sta ddrb ; port auf ausgang
  168. 2508 lda prtb:and #240:ora tmp:sta prtb ; a auf port
  169. 2510 lda prtb:and #191:sta prtb ; write
  170. 2512 lda prtb:ora #192:sta prtb ; read & write aus
  171. 2514 lda #224:sta ddrb ; port auf eingang
  172. 2516 rts
  173. 3000 pieps jsr getx:txa:and #3:asl:asl:sta takt
  174. 3002 lda #<neunmi:ldy #>neunmi:sta nmivec:sty nmivec+1
  175. 3004 lda #%10010000:sta cia+13
  176. 3006 lda takt:bne isdrin:lda #4:sta zehn
  177. 3007 isdrin ldx #14:jsr poke:lda #0:ldx #13:jsr poke:ldx #24:lda #0
  178. 3008 clrsid sta sid,x:dex:bpl clrsid:rts
  179. 3010 neunmi pha:lda cia+13:and #%10010000:bne warcia:pla:jmp oldnmi
  180. 3012 warcia stx xmem:sty ymem:lda takt:bne also
  181. 3014 dec zehn:bne no10:lda #10:sta zehn
  182. 3020 also lda #15:sta sid+24
  183. 3022 lda #40:sta sid+3:lda #100:sta sid+1:lda #240:sta sid+6:lda #65:sta sid+4
  184. 3024 ldx #100:ldy #0
  185. 3026 del dey:bne del:dex:bne del:lda #64:sta sid+4:stx sid+24
  186. 3028 no10 ldx xmem:ldy ymem:pla:rti
  187.