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 >
Wrap
Commodore BASIC
|
2022-10-26
|
6KB
|
187 lines
2 open2,8,2,"rtc 49152,p,w
10 [158]36864
20 .opt o2
30 [172][178] $c000
100 cia [178]$dd00
102 ddra [178]cia[170]2
104 ddrb [178]cia[170]3
106 prta [178]cia
108 prtb [178]cia[170]1
110 errout [178]$a445
112 errptr [178]$22
114 tmp [178]166
116 buffer [178]704
118 [161]x [178]$b7f1
120 komma [178]$aefd
122 frmevl [178]$ad9e
124 [184]str [178]$b6a3
126 strptr [178]$22
128 findvar [178]$b08b
130 varadr [178]$49
132 para [178]$61
134 strres [178]$b475
136 trans [178]2
138 nmivec [178]792
140 oldnmi [178]$fe47
142 sid [178]$d400
500 jmp rtcinit
502 jmp [135]time
504 jmp writetime
506 jmp adj30
508 jmp pieps
600 errt .[198] "unable to access rtlen
601 nixt .asc "string forma[212]
602 days .[198] "somodimidofrsa
702 try brk
704 strlen brk
706 buc1 brk
708 buc2 brk
710 art brk
712 typ brk
714 takt brk
716 xmem brk
718 ymem brk
720 zehn brk
800 .asc "rtc-dienstprogramm
802 .byt 0,0,0
804 .[198] "(c)opyright nikolaus heusler
806 .byt 0,0,0
808 .asc "i.a. redaktion 64'er 120589
810 .byt 0,0,0
1000 [135]time jsr [161]x:stx typ
1001 jsr komma:jsr findvar:sta varadr:sty varadr[170]1:jsr [184]str:ldy #0
1002 jsr wart ; uhr anhalten
1004 lda typ:bmi np4:ldx #5:jsr [194]:[175] #3:jsr numout
1006 ldx #4:jsr [194]:jsr numout
1008 lda typ:bne np1:lda #":":jsr out
1010 np1 ldx #3:jsr [194]:jsr numout
1012 ldx #2:jsr [194]:jsr numout
1014 lda typ:bne np2:lda #":":jsr out
1016 np2 ldx #1:jsr [194]:jsr numout
1018 ldx #0:jsr [194]:jsr numout
1020 lda typ:bne np3:lda #" ":jsr out
1028 ldx #12:jsr [194]:asl:tax:lda days,x:jsr out:lda days[170]1,x:jsr out
1030 lda #",":jsr out
1031 np4 ldx #7:jsr [194]:jsr numout
1032 ldx #6:jsr [194]:jsr numout
1034 bit typ:bvs np5:lda #".":jsr out
1036 np5 ldx #9:jsr [194]:jsr numout:ldx #8:jsr [194]:jsr numout
1038 bit typ:bvs np6:lda #".":jsr out
1040 np6 ldx #11:jsr [194]:jsr numout
1042 ldx #10:jsr [194]:jsr numout
1044 np3 jsr weiter:sty tmp:tya:jsr strres:ldy #2
1046 setpar lda para,y:sta (varadr),y:dey:bpl setpar:iny
1048 settxt cpy tmp:beq carried:lda buffer,y:sta (para[170]1),y:iny:bne settxt
1049 carried rts
1050 numout [176]a #"0
1052 out sta buffer,y:iny:rts
1060 wart lda #10:sta try ; 10 versuche
1061 w3 ldx #13:jsr peek:ora #1:ldx #13:jsr poke
1062 w2 ldx #13:jsr peek:and #2:beq w1
1064 jsr weiter
1066 dec try:bne w3
1068 w1 rts
1070 weiter ldx #13:jsr peek:and #254:ldx #13:jmp poke
1100 ; +- 30 sekunden einstellen
1102 adj30 ldx #13:jsr peek:ora #8 ; adj30 bit setzen
1104 ldx #13:jmp poke
1190 qnix jmp nix
1200 writetime jsr komma:jsr frmevl:jsr frestr:sta strlen:tay:beq qnix
1202 jsr wart:ldy #0
1204 jsr getnum:bmi qnix:ldx #5:jsr poke
1206 jsr getnum:bmi qnix:ldx #4:jsr poke
1208 jsr getnum:bmi qnix:ldx #3:jsr poke
1210 jsr getnum:bmi qnix:ldx #2:jsr poke
1212 jsr getnum:bmi qnix:ldx #1:jsr poke
1214 jsr getnum:bmi qnix:ldx #0:jsr poke
1216 ; datum setzen (optional)
1218 jsr getnum:bmi sat:ldx #7:jsr poke
1220 jsr getnum:bmi qnix:ldx #6:jsr poke
1222 jsr getnum:bmi qnix:ldx #9:jsr poke
1224 jsr getnum:bmi qnix:ldx #8:jsr poke
1226 jsr getnum:bmi nix:ldx #11:jsr poke
1228 jsr getnum:bmi nix:ldx #10:jsr poke
1230 ; tag setzen (optional)
1232 jsr getletter:bmi sat:sta buc1
1234 jsr getletter:bmi nix:sta buc2:ldx #0
1236 suchdoog lda days,x:cmp buc1:bne nein:lda days+1,x:cmp buc2:beq isses
1238 nein inx:inx:cpx #14:bcc suchdoog:bcs nix
1240 isses txa:lsr:ldx #12:jsr poke
1248 sat jmp weiter
1270 getletter cpy strlen:bcs mi1:lda (strptr),y
1271 cmp #"a":bcc nolet:cmp #"z"+1:bcs nolet
1272 iny:rts
1274 nolet iny:cpy strlen:bcc getletter
1276 mi1 lda #-1:rts
1280 getnum cpy strlen:bcs mi1:lda (strptr),y
1281 cmp #"0":bcc nozif:cmp #"9"+1:bcs nozif:and #$f
1282 iny:rts
1284 nozif iny:cpy strlen:bcc getnum
1286 lda #-1:rts
1290 nix jsr weiter:lda #<nixt:sta errptr:lda #>nixt:jmp errout
2000 ; register x anfahren
2002 regx lda prta:ora #4:sta prta:and #251:sta prta ; reset
2004 l1 lda prtb:and #16:bne error ; q5 darf nicht 1 sein
2006 txa:beq reach ; register erreicht
2008 lda prtb:and #223:sta prtb:ora #32:sta prtb ; clock
2010 dex:bne l1 ; x mal clocken
2012 reach rts
2100 ; platine nicht angeschlossen
2102 error lda art:beq errx:lda #0:sta art:sta trans:rts
2104 errx lda #<errt:sta errptr:lda #>errt:jmp errout
2200 ; register x nach a lesen
2202 peek jsr regx ; x anfahren
2204 lda #224:sta ddrb ; port auf eingabe
2206 lda prtb:and #127:sta prtb ; read-signal
2208 lda prtb:and #15:pha ; port lesen
2210 lda prtb:ora #192:sta prtb ; read & write aus
2212 pla:rts
2300 ; cia initialisieren
2302 ciainit lda ddra:ora #4:sta ddra ; reset ausgang
2304 lda #224:sta ddrb ; port auf eingang
2306 sta prtb ; -clk, -wr, -rd aus
2308 rts
2400 ; uhr initialisieren
2402 rtcinit jsr getx:stx art:lda #-1:sta trans
2403 jsr ciainit
2404 ; test, ob rtc angeschlossen
2410 lda prta:ora #4:sta prta:and #251:sta prta ; reset
2412 ldx #16 ; 16 mal clocken
2414 l2 lda prtb:and #16
2415 bne error ; q5 darf nicht 1 sein
2416 lda prtb:and #223:sta prtb:ora #32:sta prtb ; clock
2418 dex:bne l2
2420 ldx #16 ; 16 mal clocken
2422 l3 lda prtb:and #16:beq qqerror ; q5 muss 1 sein
2424 lda prtb:and #223:sta prtb:ora #32:sta prtb ; clock
2426 dex:bne l3
2428 lda prtb:and #16:bne qqerror ; q5 darf nicht 1 sein
2430 ; uhr hochfahren
2432 lda #0:ldx #13:jsr poke ; register 13 loeschen
2434 lda #1:ldx #14:jsr poke ; register 14 ruecksetzen
2436 lda #4:ldx #15:jmp poke ; register 15 uhr anfahren 24 std modus
2450 qqerror jmp error
2500 ; schreibt a in register x
2502 poke and #15:sta tmp:jsr regx ; x anfahren
2504 lda prtb:ora #192:sta prtb ; read & write aus
2506 lda #239:sta ddrb ; port auf ausgang
2508 lda prtb:and #240:ora tmp:sta prtb ; a auf port
2510 lda prtb:and #191:sta prtb ; write
2512 lda prtb:ora #192:sta prtb ; read & write aus
2514 lda #224:sta ddrb ; port auf eingang
2516 rts
3000 pieps jsr getx:txa:and #3:asl:asl:sta takt
3002 lda #<neunmi:ldy #>neunmi:sta nmivec:sty nmivec+1
3004 lda #%10010000:sta cia+13
3006 lda takt:bne isdrin:lda #4:sta zehn
3007 isdrin ldx #14:jsr poke:lda #0:ldx #13:jsr poke:ldx #24:lda #0
3008 clrsid sta sid,x:dex:bpl clrsid:rts
3010 neunmi pha:lda cia+13:and #%10010000:bne warcia:pla:jmp oldnmi
3012 warcia stx xmem:sty ymem:lda takt:bne also
3014 dec zehn:bne no10:lda #10:sta zehn
3020 also lda #15:sta sid+24
3022 lda #40:sta sid+3:lda #100:sta sid+1:lda #240:sta sid+6:lda #65:sta sid+4
3024 ldx #100:ldy #0
3026 del dey:bne del:dex:bne del:lda #64:sta sid+4:stx sid+24
3028 no10 ldx xmem:ldy ymem:pla:rti