100 ; CHR$(12) 110 ; '********************* TEST AV CMOS-KLOCKA *********************' 115 ! Ur Service-manualen f|r ABC806. 120 ! ----------------------------------------------------------------- 130 Sto=54 ! ----------- WRITE SPECIAL PORT 140 Cli=55 ! ----------- SERIELL DATA IN FR]N KLOCKKRESTS (P] BIT 7) 150 Csl=128+5 ! -------- AKTIVERAR CHIP SELEKT TILL KLOCKKRETS 160 Csh=5 ! ------------ DEAKTIVERAR CHIP SELEKT TILL KLOCKKRETS 170 Clh=128+6 ! ------- KLOCKA F\R DATA IN/UT FR]N KLOCKKRETS (H\G) 180 Cll=6 ! ------------ KLOCKA F\R DATA IN/UT FR]N KLOCKKRETS (L]G) 190 Doh=128+7 ! ------- SERIELLA DATA OUT TILL KLOCKKRETS (H\G) 200 Dol=7 ! ----------- SERIELLA DATA OUT TILL KLOCKKRETS (L]G) 210 L{s=1 : Skriv=0 ! ANGER L[SNING ELLER SKRIVNING 220 ! ---------------- ADRESS SOM V[LJER REGISTER ATT SKRIVA ELLER L[SA TILL 230 Asec=0 : Amin=1 : Atim=2 : Adat=3 : Am}n=4 : Adag=5 : A}r=6 : Aallt=7 240 ! ------------------------------------------------------------------- 250 ! 260 DATA 56,59,23,31,12,7,99 270 Reg=0 280 WHILE Reg<7 290 READ Tdat$ 300 Setreg$=FNTime$(Reg,Skriv,Tdat$) 310 Reg=Reg+1 320 WEND 330 ! 332 IF PEEK(-15)=0 THEN POKE -15,1 333 IF PEEK(-13)>59 THEN POKE -13,0 335 Min1=PEEK(-13)+2 : IF Min1>59 THEN Min1=Min1-60 337 ; "V{nta... (Max 2 min)" 340 WHILE FNTime$(Asec,L{s,'')<>'00' 345 IF PEEK(-13)=Min1+2 THEN ; "Klockan st}r still!" : STOP 347 WEND 350 ! 360 DATA 00,00,01,01,01,00 370 Reg=1 380 WHILE Reg<7 390 READ Tdat$ 400 IF FNTime$(Reg,L{s,'')<>Tdat$ THEN ; 'Fel p} klockkretsen i reg. ? ' Reg ELSE ; 'Register' Reg ' OK' 410 Reg=Reg+1 420 WEND 430 ! 440 END 1000 ! 1010 ! 1020 DEF FNTime$(Reg,Rw,Tid$) LOCAL Send$=1 1030 Send$=FNKlcmd$(Reg,Rw) 1040 IF Rw THEN RETURN FNTidin$ ELSE Send$=FNTidout$(Tid$) 1050 RETURN '' 1060 FNEND 1070 ! 1080 ! 1090 DEF FNKlcmd$(Reg,Rw) LOCAL Adr,Bit 1100 Adr=(Reg*2)+Rw 1110 OUT Sto,Csl 1120 Bit=4 1130 WHILE Bit<8 1140 OUT Sto,Cll,Sto,7+((Adr*2^Bit) AND 128),Sto,Clh 1150 Bit=Bit+1 1160 WEND 1170 RETURN '' 1180 FNEND 1190 ! 1200 ! 1210 DEF FNTidin$ LOCAL Tid,Bit,Tid$=2 1220 Bit=0 1230 WHILE Bit<8 1240 ! 1250 OUT Sto,Cll : Tid=Tid/2+(INP(Cli) AND 128) : OUT Sto,Clh 1270 Bit=Bit+1 1280 WEND 1290 Tid$=CHR$((Tid AND 240)/16+48)+CHR$((Tid AND 15)+48) 1300 OUT Sto,Csh 1310 RETURN Tid$ 1320 FNEND 1330 ! 1340 ! 1350 DEF FNTidout$(Tid$) LOCAL Tid,Bit 1360 Tid=(ASCII(Tid$)-48)*16+(ASCII(RIGHT$(Tid$,2))-48) 1370 Bit=0 1380 WHILE Bit<8 1390 OUT Sto,Cll,Sto,7+((Tid*2^Bit) AND 128),Sto,Clh 1400 Bit=Bit+1 1410 WEND 1420 OUT Sto,Csh 1430 RETURN '' 1440 FNEND