home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
64'er 1989 October
/
64er_Magazin_89-10_1989_Markt__Technik_de_Side_A.d64
/
dienst
(
.txt
)
< prev
next >
Wrap
Commodore BASIC
|
2022-10-26
|
4KB
|
189 lines
1 rem ***************************
2 rem * echtzeituhr 72421 64'er *
3 rem * von nikolaus heusler *
4 rem * dienst- und demoprogrm. *
5 rem * (c) nh-120589-arr rev.1 *
6 rem ***************************
7 :
8 rem **** port vorbereiten ****
9 :
10 poke56579,224
11 rem d0-d3, q5 eingang (0)
12 rem -clk, -rd, -wr ausgang (1)
13 :
20 poke56578,peek(56578)or4
21 rem reset ausgang
22 :
24 sys58692
25 :
30 poke56577,224
31 rem -clk, -rd, -wr abschalten
32 :
34 gosub2000
35 rem ist uhr vorhanden ?
36 :
40 x=15:a=0:gosub1200
41 rem register 15 mit wert 0 fuellen
42 rem uhr einschalten (12 std)
60 :
70 rem **** anwendungsbsp. ****
80 :
90 rem goto 100 oder goto 500
95 :
96 :
100 print:print:print"demoprogramm zur rtc 72421
110 [153]:[153]"wollen sie ein register lesen (1)
112 print" oder beschreiben (2) ?
114 [153]
116 [153]"bitte waehlen !
118 print:poke198,.
120 geta$
130 ifa$="1"then200
140 ifa$="2"then300
150 goto120
200 print:print"welches register lesen ? (nr. 0 bis 15)
202 [133]"nummer";x
204 [139]x[179]0[176]x[177]15[167]100
206 :
208 [141]1100 : [143] register lesen
210 [153]:[153]"register"x"hat den inhalt"a:[137]100
300 [153]:[153]"in welches register schreiben ?
302 input"nummer";x
304 ifx<0orx>15then100
306 print:print"welchen wert ? (0 bis 15)
308 [133]"neuer inhalt";a
310 [139]a[179]0[176]a[177]15[167]100
312 :
320 [141]1200 : [143] reg. beschreiben
330 [137]208
490 :
500 [143] wieviel uhr ist es ?
510 :
520 [153]:[153]"hier kommt die genaue zeit:
530 print:printtab(12)"es ist";:nm=0
540 :
542 x=5:gosub1100
544 rem stunden-zehner lesen
550 if(aand4)=4thennm=1:rem nachmittag
552 h=aand3
554 :
556 x=4:gosub1100
558 rem stunden-einer lesen
560 h=a+h*10+nm*12:rem 12 -> 24 stunden
562 h$=str$(h):ifh<10thenh$=" 0"+chr$(h+48)
564 printh$":";
566 :
568 x=3:gosub1100
570 rem minuten-zehner lesen
572 printchr$(a+48);
574 :
578 x=2:gosub1100
580 rem minuten-einer lesen
582 printchr$(a+48)":";
584 :
588 x=1:gosub1100
590 rem sekunden-zehner lesen
592 printchr$(a+48);
594 :
598 x=0:gosub1100
600 rem minuten-einer lesen
602 printchr$(a+48)
604 :
610 print"[145][145][145]":goto530
620 :
629 rem - kommentar:
630 rem da diese routinen in basic ge-
631 rem schrieben sind, arbeiten sie
632 rem natuerlich nicht so schnell
633 rem wie ein assemblerprogramm. be-
634 rem sonders das anfahren (zeilen
635 rem 1000ff) verzoegert in basic
636 rem doch sehr...
800 :
960 :
970 rem **** dienstroutinen ****
980 :
1000 rem register x anfahren *******
1001 :
1002 poke56576,peek(56576)or4: poke56576,peek(56576)and251
1004 rem kurzen reset-impuls
1005 :
1006 ifx=.thenreturn : rem register 0 ist erreicht
1007 :
1010 fori=1tox : rem sonst x mal clocken
1014 poke56577,peek(56577)and223: poke56577,peek(56577)or32
1016 rem kurzen clock-impuls (low aktiv)
1018 next:return
1020 :
1100 rem lese register x nach a *******
1101 :
1102 gosub1002:rem register x anfahren
1103 :
1104 poke56579,224
1105 rem d0-d3 auf eingang :
1106 poke56577,peek(56577)and127
1107 rem read-signal :
1108 a=peek(56577)and15
1109 rem d0 bis d3 lesen :
1110 poke56577,peek(56577)or192
1111 rem read und write aus :
1112 return
1120 :
1200 rem schreibe a in register x *******
1201 :
1202 gosub1002:rem register x anfahren
1203 poke56577,peek(56577)or192:rem read und write aus (zur sicherheit)
1204 poke56579,239
1205 rem d0-d3 auf ausgang :
1206 poke56577,(peek(56577)and240)or(aand15)
1207 rem a auf d0-d3 (zum port) :
1208 poke56577,peek(56577)and191
1209 rem write-signal :
1210 poke56577,peek(56577)or192
1211 rem write und read aus :
1212 poke56579,224
1213 rem d0-d3 auf eingang :
1214 return
1216 :
2000 rem modul angeschlossen ? *******
2001 :
2002 poke56576,peek(56576)or4
2003 rem reset an :
2004 poke56576,peek(56576)and251
2005 rem reset aus
2006 :
2010 fori=1to16
2011 rem 16 mal clocken, d4 testen :
2012 if(peek(56577)and16)=16then2100
2013 rem wenn zu frueh gesetzt, fehler :
2014 poke56577,peek(56577)and223
2015 rem clock-signal :
2016 poke56577,peek(56577)or32
2017 rem clock aus :
2018 next
2019 :
2020 fori=1to16
2021 rem 16 mal clocken, d4 testen :
2022 if(peek(56577)and16)=0then2100
2023 rem wenn nicht gesetzt, fehler :
2024 poke56577,peek(56577)and223
2025 rem clock-signal :
2026 poke56577,peek(56577)or32
2027 rem clock aus :
2028 next
2029 :
2030 if(peek(56577)and16)=16then2100
2031 rem wenn d4 noch gesetzt, fehler :
2032 print"ok."
2034 return
2035 :
2100 print:print"modul nicht angeschlossen !"
2104 end
2106 :
2200 :
2202 rem ******************************
2204 rem rtc-entwicklung: n. heusler
2206 rem zwengauerweg 18, 8 muenchen 71
2208 rem fuer mehr info (rueckporto!)
2210 rem ******************************