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: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: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: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