0
|
1 nam getclk
|
|
2 ttl program module
|
|
3
|
|
4 * Disassembled 98/06/01 09:08:21 by Disasm v1.5 (C) 1988 by RML
|
|
5
|
|
6 Level equ 2
|
|
7 ifp1
|
|
8 use os9defs
|
|
9 endc
|
|
10
|
|
11 * MPI slot selection code
|
|
12 * $33 = Slot 4
|
|
13 * $22 = Slot 3
|
|
14 * $11 = Slot 2
|
|
15 * $00 = Slot 1
|
|
16 MPISlot equ $33
|
|
17
|
|
18 tylg set Prgrm+Objct
|
|
19 atrv set ReEnt+rev
|
|
20 rev set $02
|
|
21
|
|
22 mod eom,name,tylg,atrv,start,size
|
|
23
|
|
24 SWSubr rmb 202
|
|
25 ROMAddr rmb 2
|
|
26 Blk0Addr rmb 2
|
|
27 u00CE rmb 1
|
|
28 TmpSecs rmb 1
|
|
29 NumSecs rmb 1
|
|
30 TimePckt rmb 6
|
|
31 rmb 200
|
|
32
|
|
33 size equ .
|
|
34
|
|
35 name fcs /getclk/
|
|
36 fcb $02
|
|
37
|
|
38 start equ *
|
|
39 clr <u00CE
|
|
40 cmpd #$0002
|
|
41 bcs L003F
|
|
42 com <u00CE
|
|
43 ldd ,x
|
|
44 cmpb #$0D
|
|
45 beq ProcParm
|
|
46 subd #$2F30
|
|
47 L0027 suba #$01
|
|
48 beq L0037
|
|
49 addb #$0A
|
|
50 bra L0027
|
|
51
|
|
52 * process parameter
|
|
53 ProcParm suba #$30
|
|
54 cmpa #$09
|
|
55 bcc L0093
|
|
56 tfr a,b
|
|
57 L0037 cmpb #$3C
|
|
58 bcc L0093
|
|
59 stb <TmpSecs
|
|
60 stb <NumSecs
|
|
61
|
|
62 L003F leax ,u
|
|
63 leay >L0098,pcr
|
|
64 ldb #$88
|
|
65 L0047 lda ,y+
|
|
66 sta ,x+
|
|
67 decb
|
|
68 bne L0047
|
|
69 L004E pshs u
|
|
70 ldx #$003E X holds ROM block
|
|
71 incb set B to 1
|
|
72 os9 F$MapBlk map into our addr space
|
|
73 leax ,u set X to address of ROM block
|
|
74 stx <ROMAddr save X
|
|
75 ldx #$0000 get block zero (OS-9 globs, etc)
|
|
76 os9 F$MapBlk map into our address space
|
|
77 leax ,u point X to U
|
|
78 stx <Blk0Addr save X
|
|
79 puls u
|
|
80 jsr <SWSubr
|
|
81 pshs u
|
|
82 ldb #1
|
|
83 ldu <ROMAddr
|
|
84 os9 F$ClrBlk clear this block from our space
|
|
85 ldu <Blk0Addr
|
|
86 os9 F$ClrBlk clear this block from our space
|
|
87 puls u
|
|
88 os9 F$STime
|
|
89 bcs L0095
|
|
90 clrb
|
|
91 tst <u00CE
|
|
92 beq L0095
|
|
93 L0083 ldx #$0DD0
|
|
94 os9 F$Sleep
|
|
95 dec <TmpSecs
|
|
96 bne L0083
|
|
97 lda <NumSecs
|
|
98 sta <TmpSecs
|
|
99 bra L004E
|
|
100 L0093 ldb #E$IllArg
|
|
101 L0095 os9 F$Exit
|
|
102
|
|
103 * Exit:
|
|
104 * X = address of time packet with time from SW
|
|
105 L0098 pshs cc
|
|
106 orcc #FIRQMask+IRQMask
|
|
107 lda $FF7F
|
|
108 ldb >D.HINIT,x get GIME INT0 value in OS-9 globs
|
|
109 ldx <ROMAddr point X to rom block address
|
|
110 pshs b,a save GIME INT0 value/MPI slot
|
|
111 lda #MPISlot get slot where SW is
|
|
112 sta $FF7F select it
|
|
113 andb #$FC 16x16 ROM
|
|
114 stb >$FF90 save it in HW
|
|
115 leay >L0117,pcr
|
|
116 sta >$FFDE put CC3 in ROM mode
|
|
117 lda $04,x read ROM block (trigger SW?)
|
|
118 L00BA ldb #$08
|
|
119 lda ,y+
|
|
120 beq L00CD
|
|
121 L00C0 lsra
|
|
122 bcs L00C6
|
|
123 tst ,x
|
|
124 fcb $8C
|
|
125 L00C6 fdb $6D01
|
|
126 decb
|
|
127 beq L00BA
|
|
128 bra L00C0
|
|
129 L00CD lda #$08
|
|
130 L00CF ldb #$08
|
|
131 pshs b,a
|
|
132 L00D3 ldb 4,x
|
|
133 lsrb
|
|
134 rora
|
|
135 dec 1,s dec count (B) on stack
|
|
136 bne L00D3
|
|
137 bsr L0107
|
|
138 stb 1,s
|
|
139 puls a
|
|
140 deca
|
|
141 bne L00CF
|
|
142 sta >$FFDF put in ALL RAM Mode
|
|
143 leax >TimePckt,u
|
|
144 ldd ,s get year/Month
|
|
145 std ,x save year/month
|
|
146 lda 2,s get day
|
|
147 sta 2,x save day
|
|
148 ldd 4,s get hour/min
|
|
149 std 3,x save hour/min
|
|
150 lda 6,s get seconds
|
|
151 sta 5,x save seconds
|
|
152 leas 8,s clean stack
|
|
153 puls b,a get GIME INT0, org MPI slot
|
|
154 sta >$FF7F restore org MPI slot
|
|
155 stb >$FF90 restore org GIME INT0
|
|
156 puls pc,cc
|
|
157
|
|
158 L0107 clrb
|
|
159 L0108 cmpa #$10
|
|
160 bcs L0112
|
|
161 suba #$10
|
|
162 addb #$0A
|
|
163 bra L0108
|
|
164 L0112 pshs a
|
|
165 addb ,s+
|
|
166 rts
|
|
167
|
|
168 L0117 fcb $C5,$3A,$A3,$5C
|
|
169 fcb $C5,$3A,$A3,$5C
|
|
170 fcb $00
|
|
171
|
|
172 emod
|
|
173 eom equ *
|
|
174 end
|