-
Notifications
You must be signed in to change notification settings - Fork 82
/
time
78 lines (78 loc) · 1.83 KB
/
time
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
.PAG 'TIME FUNCTION'
;***********************************
;* *
;* TIME *
;* *
;*CONSISTS OF THREE FUNCTIONS: *
;* (1) UDTIM-- UPDATE TIME. USUALLY*
;* CALLED EVERY 60TH SECOND. *
;* (2) SETTIM-- SET TIME. .Y=MSD, *
;* .X=NEXT SIGNIFICANT,.A=LSD *
;* (3) RDTIM-- READ TIME. .Y=MSD, *
;* .X=NEXT SIGNIFICANT,.A=LSD *
;* *
;***********************************
.SKI
;INTERRUPTS ARE COMING FROM THE 6526 TIMERS
;
UDTIM LDX #0 ;PRE-LOAD FOR LATER
;
;HERE WE PROCEED WITH AN INCREMENT
;OF THE TIME REGISTER.
;
UD20 INC TIME+2
BNE UD30
INC TIME+1
BNE UD30
INC TIME
;
;HERE WE CHECK FOR ROLL-OVER 23:59:59
;AND RESET THE CLOCK TO ZERO IF TRUE
;
UD30 SEC
LDA TIME+2
SBC #$01
LDA TIME+1
SBC #$1A
LDA TIME
SBC #$4F
BCC UD60
;
;TIME HAS ROLLED--ZERO REGISTER
;
STX TIME
STX TIME+1
STX TIME+2
;
;SET STOP KEY FLAG HERE
;
UD60 LDA ROWS ;WAIT FOR IT TO SETTLE
CMP ROWS
BNE UD60 ;STILL BOUNCING
TAX ;SET FLAGS...
BMI UD80 ;NO STOP KEY...EXIT STOP KEY=$7F
LDX #$FF-$42 ;CHECK FOR A SHIFT KEY (C64 KEYBOARD)
STX COLM
UD70 LDX ROWS ;WAIT TO SETTLE...
CPX ROWS
BNE UD70
STA COLM ;!!!!!WATCH OUT...STOP KEY .A=$7F...SAME AS COLMS WAS...
INX ;ANY KEY DOWN ABORTS
BNE UD90 ;LEAVE SAME AS BEFORE...
UD80 STA STKEY ;SAVE FOR OTHER ROUTINES
UD90 RTS
.SKI 5
RDTIM SEI ;KEEP TIME FROM ROLLING
LDA TIME+2 ;GET LSD
LDX TIME+1 ;GET NEXT MOST SIG.
LDY TIME ;GET MSD
.SKI 5
SETTIM SEI ;KEEP TIME FROM CHANGING
STA TIME+2 ;STORE LSD
STX TIME+1 ;NEXT MOST SIGNIFICANT
STY TIME ;STORE MSD
CLI
RTS
.END
; RSR 8/21/80 REMOVE CRFAC CHANGE STOP
; RSR 3/29/82 ADD SHIT KEY CHECK FOR COMMODORE 64