1 |
14 |
robfinch |
|
2 |
4 |
robfinch |
; ============================================================================
|
3 |
|
|
; __
|
4 |
13 |
robfinch |
; \\__/ o\ (C) 2013-2022 Robert Finch, Waterloo
|
5 |
4 |
robfinch |
; \ __ / All rights reserved.
|
6 |
|
|
; \/_// robfinch@opencores.org
|
7 |
|
|
; ||
|
8 |
|
|
;
|
9 |
|
|
;
|
10 |
13 |
robfinch |
; BSD 3-Clause License
|
11 |
|
|
; Redistribution and use in source and binary forms, with or without
|
12 |
|
|
; modification, are permitted provided that the following conditions are met:
|
13 |
|
|
;
|
14 |
|
|
; 1. Redistributions of source code must retain the above copyright notice, this
|
15 |
|
|
; list of conditions and the following disclaimer.
|
16 |
|
|
;
|
17 |
|
|
; 2. Redistributions in binary form must reproduce the above copyright notice,
|
18 |
|
|
; this list of conditions and the following disclaimer in the documentation
|
19 |
|
|
; and/or other materials provided with the distribution.
|
20 |
|
|
;
|
21 |
|
|
; 3. Neither the name of the copyright holder nor the names of its
|
22 |
|
|
; contributors may be used to endorse or promote products derived from
|
23 |
|
|
; this software without specific prior written permission.
|
24 |
|
|
;
|
25 |
|
|
; THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
26 |
|
|
; AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
27 |
|
|
; IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
28 |
|
|
; DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
|
29 |
|
|
; FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
30 |
|
|
; DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
|
31 |
|
|
; SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
|
32 |
|
|
; CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
|
33 |
|
|
; OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
34 |
|
|
; OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
35 |
4 |
robfinch |
;
|
36 |
|
|
; ============================================================================
|
37 |
|
|
;
|
38 |
|
|
CR EQU $0D ;ASCII equates
|
39 |
|
|
LF EQU $0A
|
40 |
|
|
TAB EQU $09
|
41 |
|
|
CTRLC EQU $03
|
42 |
|
|
CTRLH EQU $08
|
43 |
|
|
CTRLI EQU $09
|
44 |
|
|
CTRLJ EQU $0A
|
45 |
|
|
CTRLK EQU $0B
|
46 |
|
|
CTRLM EQU $0D
|
47 |
|
|
CTRLS EQU $13
|
48 |
13 |
robfinch |
CTRLT EQU $14
|
49 |
4 |
robfinch |
CTRLX EQU $18
|
50 |
|
|
XON EQU $11
|
51 |
|
|
XOFF EQU $13
|
52 |
|
|
|
53 |
|
|
FIRST_CORE EQU 1
|
54 |
|
|
MAX_TASKNO EQU 63
|
55 |
|
|
DRAM_BASE EQU $10000000
|
56 |
|
|
|
57 |
|
|
ScreenLocation EQU $10
|
58 |
|
|
ColorCodeLocation EQU $14
|
59 |
|
|
ScreenLocation2 EQU $18
|
60 |
|
|
BlkcpySrc EQU $1C
|
61 |
|
|
BlkcpyDst EQU $20
|
62 |
|
|
Strptr EQU $24
|
63 |
|
|
PICptr EQU $28
|
64 |
|
|
; Forth Area
|
65 |
|
|
; 0x30-0x60
|
66 |
|
|
|
67 |
|
|
RunningID EQU $800000
|
68 |
|
|
|
69 |
|
|
; Task control blocks, room for 256 tasks
|
70 |
|
|
TCB_NxtRdy EQU $00 ; next task on ready / timeout list
|
71 |
|
|
TCB_PrvRdy EQU $04 ; previous task on ready / timeout list
|
72 |
|
|
TCB_NxtTCB EQU $08
|
73 |
|
|
TCB_Timeout EQU $0C
|
74 |
|
|
TCB_Priority EQU $10
|
75 |
|
|
TCB_MSGPTR_D1 EQU $14
|
76 |
|
|
TCB_MSGPTR_D2 EQU $18
|
77 |
|
|
TCB_hJCB EQU $1C
|
78 |
|
|
TCB_Status EQU $1E
|
79 |
|
|
TCB_CursorRow EQU $20
|
80 |
|
|
TCB_CursorCol EQU $21
|
81 |
|
|
TCB_hWaitMbx EQU $22 ; handle of mailbox task is waiting at
|
82 |
|
|
TCB_mbq_next EQU $24 ; mailbox queue next
|
83 |
|
|
TCB_mbq_prev EQU $28 ; mailbox queue previous
|
84 |
|
|
TCB_iof_next EQU $2C
|
85 |
|
|
TCB_iof_prev EQU $30
|
86 |
|
|
TCB_SPSave EQU $34 ; TCB_SPSave area
|
87 |
|
|
TCB_mmu_map EQU $38
|
88 |
|
|
|
89 |
|
|
KeybdHead EQU $FFFFFC800
|
90 |
|
|
KeybdTail EQU $FFFFFC900
|
91 |
|
|
KeybdEcho EQU $FFFFFCA00
|
92 |
|
|
KeybdBad EQU $FFFFFCB00
|
93 |
|
|
KeybdAck EQU $FFFFFCC00
|
94 |
|
|
KeybdLocks EQU $FFFFFCD00
|
95 |
|
|
KeybdBuffer EQU $FFFFFC000 ; buffer is 16 chars
|
96 |
|
|
|
97 |
|
|
COREID EQU $FFFFFFFE0
|
98 |
|
|
MSCOUNT EQU $FFFFFFFE4
|
99 |
13 |
robfinch |
LEDS EQU $FFFE60001
|
100 |
|
|
VIA EQU $FFFE60000
|
101 |
|
|
VIA_PA EQU 1
|
102 |
|
|
VIA_DDRA EQU 3
|
103 |
|
|
VIA_ACR EQU 11
|
104 |
|
|
VIA_IFR EQU 13
|
105 |
|
|
VIA_IER EQU 14
|
106 |
|
|
VIA_T3LL EQU 18
|
107 |
|
|
VIA_T3LH EQU 19
|
108 |
|
|
VIA_T3CMPL EQU 20
|
109 |
|
|
VIA_T3CMPH EQU 21
|
110 |
4 |
robfinch |
TEXTSCR EQU $FFFE00000
|
111 |
|
|
TEXTREG EQU $FFFE0DF00
|
112 |
|
|
TEXT_COLS EQU 0
|
113 |
|
|
TEXT_ROWS EQU 1
|
114 |
|
|
TEXT_CURPOS EQU 34
|
115 |
13 |
robfinch |
ACIA EQU $FFFE30100
|
116 |
|
|
ACIA_TX EQU 0
|
117 |
|
|
ACIA_RX EQU 0
|
118 |
|
|
ACIA_STAT EQU 1
|
119 |
|
|
ACIA_CMD EQU 2
|
120 |
|
|
ACIA_CTRL EQU 3
|
121 |
|
|
ACIA_CTRL2 EQU 11
|
122 |
|
|
RTC EQU $FFFE30500 ; I2C
|
123 |
|
|
RTCBuf EQU $7FC0
|
124 |
|
|
|
125 |
4 |
robfinch |
KEYBD EQU $FFFE30400
|
126 |
|
|
KEYBDCLR EQU $FFFE30402
|
127 |
|
|
PIC EQU $FFFE3F000
|
128 |
|
|
SPRITE_CTRL EQU $FFFE10000
|
129 |
|
|
SPRITE_EN EQU $3C0
|
130 |
|
|
|
131 |
13 |
robfinch |
OUTSEMA EQU $EF0000
|
132 |
|
|
SEMAABS EQU $1000
|
133 |
|
|
OSSEMA EQU $EF0010
|
134 |
|
|
|
135 |
4 |
robfinch |
BIOS_SCREENS EQU $17000000 ; $17000000 to $171FFFFF
|
136 |
|
|
|
137 |
|
|
; EhBASIC vars:
|
138 |
|
|
;
|
139 |
13 |
robfinch |
NmiBase EQU $FF0013
|
140 |
|
|
IrqBase EQU $FF0014
|
141 |
4 |
robfinch |
|
142 |
|
|
IOFocusNdx EQU $100
|
143 |
|
|
|
144 |
13 |
robfinch |
; These variables in global OS storage area
|
145 |
|
|
|
146 |
|
|
IOFocusList EQU $FF0000 ; to $FF000F
|
147 |
|
|
IOFocusID EQU $FF0010
|
148 |
|
|
IrqSource EQU $FF0011
|
149 |
|
|
IRQFlag EQU $FF0012
|
150 |
|
|
|
151 |
4 |
robfinch |
; These variables use direct page access
|
152 |
|
|
CursorRow EQU $110
|
153 |
|
|
CursorCol EQU $111
|
154 |
|
|
CharColor EQU $112
|
155 |
|
|
ScreenColor EQU $113
|
156 |
|
|
CursorFlash EQU $114
|
157 |
|
|
KeyState1 EQU $120
|
158 |
|
|
KeyState2 EQU $121
|
159 |
|
|
KeyLED EQU $122
|
160 |
|
|
KeybdID EQU $124
|
161 |
13 |
robfinch |
KeybdBlock EQU $126
|
162 |
|
|
kbdHeadRcv EQU $127
|
163 |
|
|
kbdTailRcv EQU $128
|
164 |
|
|
kbdFifo EQU $40 ; in local RAM
|
165 |
|
|
kbdFifoAlias EQU $C00040 ; to $C0007F ; alias for $40 to $7F
|
166 |
|
|
SerhZero EQU $130
|
167 |
|
|
SerHeadRcv EQU $131
|
168 |
|
|
SertZero EQU $132
|
169 |
|
|
SerTailRcv EQU $133
|
170 |
|
|
SerHeadXmit EQU $136
|
171 |
|
|
SerTailXmit EQU $138
|
172 |
|
|
SerRcvXon EQU $139
|
173 |
|
|
SerRcvXoff EQU $140
|
174 |
|
|
SerRcvBuf EQU $BFF000 ; 4kB serial recieve buffer
|
175 |
4 |
robfinch |
|
176 |
14 |
robfinch |
farflag EQU $15F
|
177 |
13 |
robfinch |
asmbuf EQU $160 ; to $17F
|
178 |
|
|
|
179 |
4 |
robfinch |
QNdx0 EQU $780
|
180 |
|
|
QNdx1 EQU QNdx0+2
|
181 |
|
|
QNdx2 EQU QNdx1+2
|
182 |
|
|
QNdx3 EQU QNdx2+2
|
183 |
|
|
QNdx4 EQU QNdx3+2
|
184 |
|
|
FreeTCB EQU QNdx4+2
|
185 |
|
|
TimeoutList EQU FreeTCB+2
|
186 |
|
|
FreeMbx EQU RunningTCB + 2
|
187 |
|
|
nMailbox EQU FreeMbx + 2
|
188 |
|
|
FreeMsg EQU nMailbox + 2
|
189 |
|
|
nMsgBlk EQU FreeMsg + 2
|
190 |
|
|
|
191 |
|
|
|
192 |
|
|
CharOutVec EQU $800
|
193 |
|
|
CharInVec EQU $804
|
194 |
13 |
robfinch |
CmdPromptJI EQU $808
|
195 |
14 |
robfinch |
MonErrVec EQU $80C
|
196 |
4 |
robfinch |
|
197 |
|
|
; Register save area for monitor
|
198 |
|
|
mon_DSAVE EQU $900
|
199 |
|
|
mon_XSAVE EQU $902
|
200 |
|
|
mon_YSAVE EQU $904
|
201 |
|
|
mon_USAVE EQU $906
|
202 |
|
|
mon_SSAVE EQU $908
|
203 |
|
|
mon_PCSAVE EQU $90A
|
204 |
|
|
mon_DPRSAVE EQU $90E
|
205 |
|
|
mon_CCRSAVE EQU $90F
|
206 |
|
|
|
207 |
|
|
mon_numwka EQU $910
|
208 |
|
|
mon_r1 EQU $920
|
209 |
13 |
robfinch |
mon_r2 EQU $924
|
210 |
4 |
robfinch |
|
211 |
|
|
; The ORG directive must set an address a multiple of 4 in order for the Verilog
|
212 |
|
|
; output to work correctly.
|
213 |
|
|
|
214 |
|
|
org $FFD0AC
|
215 |
|
|
00FFD0AC 012 nop
|
216 |
|
|
00FFD0AD 012 nop
|
217 |
|
|
00FFD0AE 012 nop
|
218 |
|
|
XBLANK
|
219 |
|
|
00FFD0AF 0C6020 ldb #' '
|
220 |
13 |
robfinch |
00FFD0B1 017001C5E lbsr OUTCH
|
221 |
4 |
robfinch |
00FFD0B4 039 rts
|
222 |
|
|
|
223 |
|
|
org $FFD0D0
|
224 |
|
|
00FFD0D0 012 nop
|
225 |
|
|
00FFD0D1 012 nop
|
226 |
|
|
CRLF
|
227 |
|
|
CRLF1:
|
228 |
|
|
00FFD0D2 0C600D ldb #CR
|
229 |
13 |
robfinch |
00FFD0D4 017001C3B lbsr OUTCH
|
230 |
4 |
robfinch |
00FFD0D7 0C600A ldb #LF
|
231 |
13 |
robfinch |
00FFD0D9 017001C36 lbsr OUTCH
|
232 |
4 |
robfinch |
00FFD0DC 039 rts
|
233 |
|
|
|
234 |
|
|
org $FFD0F0
|
235 |
|
|
00FFD0F0 012 nop
|
236 |
|
|
00FFD0F1 020FDF bra CRLF1
|
237 |
|
|
|
238 |
|
|
org $FFD1DC
|
239 |
|
|
ONEKEY
|
240 |
|
|
00FFD1DC 06E90F000804 jmp [CharInVec]
|
241 |
|
|
|
242 |
|
|
org $FFD2C0
|
243 |
|
|
00FFD2C0 012 nop
|
244 |
|
|
LETTER
|
245 |
13 |
robfinch |
00FFD2C1 017001A4E lbsr OUTCH
|
246 |
4 |
robfinch |
00FFD2C4 039 rts
|
247 |
|
|
|
248 |
|
|
org $FFD2CC
|
249 |
|
|
00FFD2CC 012 nop
|
250 |
|
|
00FFD2CD 012 nop
|
251 |
|
|
HEX2
|
252 |
14 |
robfinch |
00FFD2CE 017001139 lbsr DispByteAsHex
|
253 |
4 |
robfinch |
00FFD2D1 039 rts
|
254 |
|
|
HEX4
|
255 |
14 |
robfinch |
00FFD2D2 01700112C lbsr DispWordAsHex
|
256 |
4 |
robfinch |
00FFD2D5 039 rts
|
257 |
|
|
|
258 |
|
|
org $FFD300
|
259 |
|
|
ClearScreenJmp
|
260 |
14 |
robfinch |
00FFD300 016000F22 lbra ClearScreen
|
261 |
4 |
robfinch |
org $FFD308
|
262 |
|
|
HomeCursorJmp
|
263 |
14 |
robfinch |
00FFD308 016000F8D lbra HomeCursor
|
264 |
4 |
robfinch |
|
265 |
13 |
robfinch |
org $FFD400
|
266 |
4 |
robfinch |
|
267 |
|
|
; Local RAM test routine
|
268 |
|
|
; Checkerboard testing.
|
269 |
|
|
; There is 70kB of local RAM
|
270 |
|
|
; Does not use any RAM including no stack
|
271 |
|
|
|
272 |
|
|
ramtest:
|
273 |
13 |
robfinch |
00FFD400 18E000000 ldy #0
|
274 |
|
|
00FFD403 086001 lda #1
|
275 |
|
|
00FFD405 0150B7FFFE60001 sta LEDS
|
276 |
|
|
00FFD40A 0CCAAA555 ldd #$AAA555
|
277 |
4 |
robfinch |
ramtest1:
|
278 |
13 |
robfinch |
00FFD40D 0EDA01 std ,y++
|
279 |
|
|
00FFD40F 18C008000 cmpy #$8000
|
280 |
|
|
00FFD412 025FF9 blo ramtest1
|
281 |
4 |
robfinch |
; now readback values and compare
|
282 |
13 |
robfinch |
00FFD414 18E000000 ldy #0
|
283 |
4 |
robfinch |
ramtest3:
|
284 |
13 |
robfinch |
00FFD417 0ECA01 ldd ,y++
|
285 |
|
|
00FFD419 183AAA555 cmpd #$AAA555
|
286 |
|
|
00FFD41C 02600E bne ramerr
|
287 |
|
|
00FFD41E 18C008000 cmpy #$8000
|
288 |
|
|
00FFD421 025FF4 blo ramtest3
|
289 |
|
|
00FFD423 086002 lda #2
|
290 |
|
|
00FFD425 0150B7FFFE60001 sta LEDS
|
291 |
|
|
00FFD42A 06EC04 jmp ,u
|
292 |
4 |
robfinch |
ramerr:
|
293 |
13 |
robfinch |
00FFD42C 086080 lda #$80
|
294 |
|
|
00FFD42E 0150B7FFFE60001 sta LEDS
|
295 |
|
|
00FFD433 08EE00000 ldx #TEXTSCR
|
296 |
|
|
00FFD436 0150F6FFFFFFFE0 ldb COREID
|
297 |
|
|
00FFD43B 03A abx
|
298 |
|
|
00FFD43C 086046 lda #'F'
|
299 |
|
|
00FFD43E 0A7804 sta ,x
|
300 |
|
|
00FFD440 013 sync
|
301 |
|
|
00FFD441 06EC04 jmp ,u
|
302 |
4 |
robfinch |
|
303 |
13 |
robfinch |
org $FFE000
|
304 |
14 |
robfinch |
00FFE000 FFF92E FDB Monitor
|
305 |
13 |
robfinch |
00FFE002 FFE022 FDB DumRts ; NEXTCMD
|
306 |
|
|
00FFE004 FFECDA FDB INCH
|
307 |
|
|
00FFE006 FFECF8 FDB INCHE
|
308 |
|
|
00FFE008 FFECFC FDB INCHEK
|
309 |
|
|
00FFE00A FFED12 FDB OUTCH
|
310 |
14 |
robfinch |
00FFE00C FFE3EE FDB PDATA
|
311 |
|
|
00FFE00E FFE3E1 FDB PCRLF
|
312 |
|
|
00FFE010 FFE3DD FDB PSTRNG
|
313 |
13 |
robfinch |
00FFE012 FFE022 FDB DumRts ; LRA
|
314 |
|
|
00FFE014 FFE022 FDB DumRts
|
315 |
|
|
00FFE016 FFE022 FDB DumRts
|
316 |
|
|
00FFE018 FFE022 FDB DumRts
|
317 |
|
|
00FFE01A FFE022 FDB DumRts ; VINIZ
|
318 |
14 |
robfinch |
00FFE01C FFE2F5 FDB DisplayChar ; VOUTCH
|
319 |
13 |
robfinch |
00FFE01E FFE022 FDB DumRts ; ACINIZ
|
320 |
|
|
00FFE020 FFE022 FDB DumRts ; AOUTCH
|
321 |
4 |
robfinch |
|
322 |
|
|
DumRts:
|
323 |
13 |
robfinch |
00FFE022 039 rts
|
324 |
4 |
robfinch |
|
325 |
|
|
;------------------------------------------------------------------------------
|
326 |
|
|
;------------------------------------------------------------------------------
|
327 |
|
|
|
328 |
|
|
start:
|
329 |
13 |
robfinch |
00FFE023 086FFF lda #$FFF ; all cores can do this
|
330 |
|
|
00FFE025 0150B7FFFE60003 sta VIA+VIA_DDRA
|
331 |
|
|
00FFE02A 086055 lda #$55 ; see if we can at least set LEDs
|
332 |
|
|
00FFE02C 0150B7FFFE60001 sta LEDS
|
333 |
|
|
00FFE031 086001 lda #1 ; prime OS semaphore
|
334 |
|
|
00FFE033 0B7EF1010 sta OSSEMA+$1000
|
335 |
|
|
00FFE036 0CEFFE03C ldu #st6 ; U = return address
|
336 |
|
|
00FFE039 07EFFD400 jmp ramtest ; JMP dont JSR
|
337 |
4 |
robfinch |
st6:
|
338 |
13 |
robfinch |
00FFE03C 1CE006FFF lds #$6FFF ; boot up stack area
|
339 |
|
|
00FFE03F 0150B6FFFFFFFE0 lda COREID
|
340 |
|
|
00FFE044 081001 cmpa #FIRST_CORE
|
341 |
4 |
robfinch |
; beq st8
|
342 |
|
|
; sync ; halt cores other than 2
|
343 |
|
|
st8:
|
344 |
|
|
; bne skip_init
|
345 |
|
|
; bsr romToRam
|
346 |
|
|
; ldd #st7 & $FFFF
|
347 |
|
|
; tfr d,x
|
348 |
|
|
; jmp ,x ; jump to the BIOS now in local RAM
|
349 |
|
|
st7:
|
350 |
14 |
robfinch |
00FFE046 08D159 bsr Delay3s ; give some time for devices to reset
|
351 |
13 |
robfinch |
00FFE048 0860AA lda #$AA
|
352 |
|
|
00FFE04A 0150B7FFFE60001 sta LEDS
|
353 |
|
|
00FFE04F 086001 lda #FIRST_CORE
|
354 |
|
|
00FFE051 0B7FF0010 sta IOFocusID ; core #2 has focus
|
355 |
|
|
00FFE054 0B7800000 sta RunningID
|
356 |
14 |
robfinch |
; Clear IO focus list
|
357 |
|
|
00FFE057 08E000000 ldx #0
|
358 |
|
|
st9:
|
359 |
|
|
00FFE05A 06F80A000FF0000 clr IOFocusList,x
|
360 |
|
|
00FFE05F 030001 inx
|
361 |
|
|
00FFE061 08C000010 cmpx #16
|
362 |
|
|
00FFE064 025FF4 blo st9
|
363 |
|
|
00FFE066 086018 lda #24
|
364 |
|
|
00FFE068 0B7FF0001 sta IOFocusList+FIRST_CORE
|
365 |
|
|
|
366 |
|
|
00FFE06B 0860CE lda #$0CE
|
367 |
|
|
00FFE06D 097113 sta ScreenColor
|
368 |
|
|
00FFE06F 097112 sta CharColor
|
369 |
|
|
00FFE071 08D1B2 bsr ClearScreen
|
370 |
|
|
00FFE073 0CCFFE2F5 ldd #DisplayChar
|
371 |
|
|
00FFE076 0FD000800 std CharOutVec
|
372 |
|
|
00FFE079 0CCFFEBE4 ldd #SerialPeekCharDirect
|
373 |
|
|
00FFE07C 0FD000804 std CharInVec
|
374 |
|
|
00FFE07F 0C6018 ldb #24 ; request IO focus
|
375 |
|
|
00FFE081 017000CD5 lbsr OSCall
|
376 |
|
|
00FFE084 0150F6FFFFFFFE0 ldb COREID
|
377 |
|
|
00FFE089 0C1001 cmpb #FIRST_CORE
|
378 |
|
|
00FFE08B 02700D beq init
|
379 |
|
|
00FFE08D 020046 bra skip_init
|
380 |
|
|
00FFE08F 0200AE bra multi_sieve
|
381 |
4 |
robfinch |
st3:
|
382 |
14 |
robfinch |
00FFE091 0860FF lda #$FF
|
383 |
|
|
00FFE093 0150B7FFFE60001 sta LEDS
|
384 |
|
|
00FFE098 020FF7 bra st3
|
385 |
4 |
robfinch |
|
386 |
|
|
; initialize interrupt controller
|
387 |
|
|
; first, zero out all the vectors
|
388 |
|
|
init:
|
389 |
14 |
robfinch |
00FFE09A 01700042A lbsr rtc_read ; get clock values
|
390 |
|
|
00FFE09D 08E000127 ldx #kbdHeadRcv
|
391 |
|
|
00FFE0A0 0C6020 ldb #32 ; number of bytes to zero out
|
392 |
13 |
robfinch |
init1:
|
393 |
14 |
robfinch |
00FFE0A2 06F800 clr ,x+
|
394 |
|
|
00FFE0A4 05A decb
|
395 |
|
|
00FFE0A5 026FFB bne init1
|
396 |
|
|
00FFE0A7 01700038E lbsr TimerInit
|
397 |
|
|
00FFE0AA 017000AC2 lbsr InitSerial
|
398 |
|
|
00FFE0AD 08E000080 ldx #128
|
399 |
|
|
00FFE0B0 086001 lda #1 ; set irq(bit0), clear firq (bit1), disable int (bit 6), clear edge sense(bit 7)
|
400 |
|
|
00FFE0B2 0C6001 ldb #FIRST_CORE ; serving core id
|
401 |
4 |
robfinch |
st1:
|
402 |
14 |
robfinch |
00FFE0B4 06F809E3F000 clr PIC,x ; cause code
|
403 |
|
|
00FFE0B8 0A7809E3F001 sta PIC+1,x
|
404 |
|
|
00FFE0BC 0E7809E3F002 stb PIC+2,x
|
405 |
|
|
00FFE0C0 030004 leax 4,x
|
406 |
|
|
00FFE0C2 08C000100 cmpx #256
|
407 |
|
|
00FFE0C5 025FED blo st1
|
408 |
4 |
robfinch |
; lda #4 ; make the timer interrupt edge sensitive
|
409 |
|
|
; sta PIC+4 ; reg #4 is the edge sensitivity setting
|
410 |
|
|
; sta PIC ; reg #0 is interrupt enable
|
411 |
14 |
robfinch |
00FFE0C7 086081 lda #$81 ; make irq edge sensitive
|
412 |
|
|
00FFE0C9 0150B7FFFE3F0FD sta PIC+$FD
|
413 |
|
|
00FFE0CE 08601F lda #31 ; enable timer interrupt
|
414 |
13 |
robfinch |
; sta PIC+9
|
415 |
14 |
robfinch |
00FFE0D0 0C6001 ldb #1
|
416 |
|
|
00FFE0D2 0F7EF1000 stb OUTSEMA+SEMAABS ; set semaphore to 1 available slot
|
417 |
4 |
robfinch |
skip_init:
|
418 |
14 |
robfinch |
00FFE0D5 01C0EF andcc #$EF ; unmask irq
|
419 |
|
|
00FFE0D7 086038 lda #56
|
420 |
|
|
00FFE0D9 0150B7FFFE0DF00 sta TEXTREG+TEXT_COLS
|
421 |
|
|
00FFE0DE 08601D lda #29
|
422 |
|
|
00FFE0E0 0150B7FFFE0DF01 sta TEXTREG+TEXT_ROWS
|
423 |
|
|
00FFE0E5 08D13E bsr ClearScreen
|
424 |
|
|
00FFE0E7 08D1AF bsr HomeCursor
|
425 |
|
|
00FFE0E9 086005 lda #5
|
426 |
|
|
00FFE0EB 0150B7FFFE60001 sta LEDS
|
427 |
|
|
00FFE0F0 0CCFFE108 ldd #msgStartup
|
428 |
|
|
00FFE0F3 08D2C1 bsr DisplayString
|
429 |
|
|
00FFE0F5 08E000000 ldx #0
|
430 |
|
|
00FFE0F8 0CC000000 ldd #0
|
431 |
|
|
00FFE0FB 017000C1E lbsr ShowSprites
|
432 |
|
|
00FFE0FE 01700083F lbsr KeybdInit
|
433 |
|
|
00FFE101 0DC124 ldd KeybdID
|
434 |
|
|
00FFE103 08D2FC bsr DispWordAsHex
|
435 |
|
|
00FFE105 07EFFF910 jmp MonitorStart
|
436 |
4 |
robfinch |
|
437 |
|
|
msgStartup
|
438 |
14 |
robfinch |
00FFE108 072066036038030039020 fcb "rf6809 12-bit System Starting.",CR,LF,0
|
439 |
|
|
00FFE10F 03103202D062069074020
|
440 |
|
|
00FFE116 05307907307406506D020
|
441 |
|
|
00FFE11D 05307406107207406906E
|
442 |
|
|
00FFE124 06702E00D00A000
|
443 |
4 |
robfinch |
|
444 |
|
|
;------------------------------------------------------------------------------
|
445 |
|
|
; The checkpoint register must be cleared within 1 second or a NMI interrupt
|
446 |
|
|
; will occur. checkpoint should be called with a JSR so that the global ROM
|
447 |
|
|
; routine is called.
|
448 |
|
|
;
|
449 |
|
|
; Modifies:
|
450 |
|
|
; none
|
451 |
|
|
;------------------------------------------------------------------------------
|
452 |
|
|
|
453 |
|
|
checkpoint:
|
454 |
14 |
robfinch |
00FFE129 01507FFFFFFFFE1 clr $FFFFFFFE1 ; writing any value will do
|
455 |
|
|
00FFE12E 039 rts
|
456 |
4 |
robfinch |
|
457 |
|
|
;------------------------------------------------------------------------------
|
458 |
|
|
; Copy the system ROM to local RAM
|
459 |
|
|
; Running the code from local RAM is probably an order of magnitude faster
|
460 |
|
|
; then running from the global ROM. It also reduces the network traffic to
|
461 |
|
|
; run from local RAM.
|
462 |
|
|
;
|
463 |
|
|
; Modifies:
|
464 |
|
|
; d,x,y
|
465 |
|
|
;------------------------------------------------------------------------------
|
466 |
|
|
|
467 |
|
|
romToRam:
|
468 |
14 |
robfinch |
00FFE12F 08EFFC000 ldx #$FFC000
|
469 |
|
|
00FFE132 18E00C000 ldy #$00C000
|
470 |
4 |
robfinch |
romToRam1:
|
471 |
14 |
robfinch |
00FFE135 0EC801 ldd ,x++
|
472 |
|
|
00FFE137 0EDA01 std ,y++
|
473 |
|
|
00FFE139 08C000000 cmpx #0
|
474 |
|
|
00FFE13C 026FF7 bne romToRam1
|
475 |
|
|
00FFE13E 039 rts
|
476 |
4 |
robfinch |
|
477 |
|
|
;------------------------------------------------------------------------------
|
478 |
|
|
; Multi-core sieve program.
|
479 |
|
|
;------------------------------------------------------------------------------
|
480 |
|
|
|
481 |
|
|
; First fill screen chars with 'P' indicating prime positions
|
482 |
|
|
; Each core is responsible for the Nth position where N is the
|
483 |
|
|
; core number minus two.
|
484 |
|
|
;
|
485 |
|
|
multi_sieve:
|
486 |
14 |
robfinch |
00FFE13F 086050 lda #'P' ; indicate prime
|
487 |
|
|
00FFE141 0150F6FFFFFFFE0 ldb COREID ; find out which core we are
|
488 |
|
|
00FFE146 0C0001 subb #FIRST_CORE
|
489 |
|
|
00FFE148 08E000000 ldx #0 ; start at first char of screen
|
490 |
|
|
00FFE14B 03A abx
|
491 |
4 |
robfinch |
multi_sieve3:
|
492 |
14 |
robfinch |
00FFE14C 0A7809E00000 sta TEXTSCR,x ; store 'P'
|
493 |
|
|
00FFE150 030008 leax 8,x ; advance to next position
|
494 |
|
|
00FFE152 08C000FFF cmpx #4095
|
495 |
|
|
00FFE155 025FF5 blo multi_sieve3
|
496 |
|
|
00FFE157 0BDFFE129 jsr checkpoint
|
497 |
4 |
robfinch |
*** warning 1: Long branch within short branch range could be optimized
|
498 |
14 |
robfinch |
00FFE15A 0CB002 addb #2 ; start sieve at 2 (core id)
|
499 |
|
|
00FFE15C 08604E lda #'N' ; flag position value of 'N' for non-prime
|
500 |
4 |
robfinch |
multi_sieve2:
|
501 |
14 |
robfinch |
00FFE15E 08E000000 ldx #0
|
502 |
|
|
00FFE161 03A abx ; skip the first position - might be prime
|
503 |
4 |
robfinch |
multi_sieve1:
|
504 |
14 |
robfinch |
00FFE162 03A abx ; increment
|
505 |
|
|
00FFE163 0A7809E00000 sta TEXTSCR,x
|
506 |
|
|
00FFE167 08C000FFF cmpx #4095
|
507 |
|
|
00FFE16A 025FF6 blo multi_sieve1
|
508 |
|
|
00FFE16C 0BDFFE129 jsr checkpoint
|
509 |
4 |
robfinch |
*** warning 1: Long branch within short branch range could be optimized
|
510 |
14 |
robfinch |
00FFE16F 0CB008 addb #8 ; number of cores working on it
|
511 |
|
|
00FFE171 0C1FF0 cmpb #4080
|
512 |
|
|
00FFE173 025FE9 blo multi_sieve2
|
513 |
4 |
robfinch |
multi_sieve4: ; hang machine
|
514 |
14 |
robfinch |
00FFE175 013 sync
|
515 |
|
|
00FFE176 0160017B5 lbra Monitor
|
516 |
4 |
robfinch |
|
517 |
13 |
robfinch |
;------------------------------------------------------------------------------
|
518 |
|
|
; Single core sieve.
|
519 |
|
|
;------------------------------------------------------------------------------
|
520 |
|
|
|
521 |
4 |
robfinch |
sieve:
|
522 |
14 |
robfinch |
00FFE179 086050 lda #'P' ; indicate prime
|
523 |
|
|
00FFE17B 08E000000 ldx #0 ; start at first char of screen
|
524 |
4 |
robfinch |
sieve3:
|
525 |
14 |
robfinch |
00FFE17E 0A7809E00000 sta TEXTSCR,x ; store 'P'
|
526 |
|
|
00FFE182 030001 inx ; advance to next position
|
527 |
|
|
00FFE184 08C000FFF cmpx #4095
|
528 |
|
|
00FFE187 025FF5 blo sieve3
|
529 |
|
|
00FFE189 0C6002 ldb #2 ; start sieve at 2
|
530 |
|
|
00FFE18B 08604E lda #'N' ; flag position value of 'N' for non-prime
|
531 |
4 |
robfinch |
sieve2:
|
532 |
14 |
robfinch |
00FFE18D 08E000000 ldx #0
|
533 |
|
|
00FFE190 03A abx ; skip the first position - might be prime
|
534 |
4 |
robfinch |
sieve1:
|
535 |
14 |
robfinch |
00FFE191 03A abx ; increment
|
536 |
|
|
00FFE192 0A7809E00000 sta TEXTSCR,x
|
537 |
|
|
00FFE196 08C000FFF cmpx #4095
|
538 |
|
|
00FFE199 025FC7 blo multi_sieve1
|
539 |
|
|
00FFE19B 05C incb ; number of cores working on it
|
540 |
|
|
00FFE19C 0C1FF0 cmpb #4080
|
541 |
|
|
00FFE19E 025FED blo sieve2
|
542 |
4 |
robfinch |
sieve4: ; hang machine
|
543 |
14 |
robfinch |
00FFE1A0 039 rts
|
544 |
4 |
robfinch |
|
545 |
|
|
;------------------------------------------------------------------------------
|
546 |
|
|
; Three second delay for user convenience and to allow some devices time to
|
547 |
|
|
; reset.
|
548 |
|
|
;------------------------------------------------------------------------------
|
549 |
|
|
|
550 |
|
|
Delay3s:
|
551 |
14 |
robfinch |
00FFE1A1 0CC895440 ldd #9000000
|
552 |
4 |
robfinch |
dly3s1:
|
553 |
14 |
robfinch |
00FFE1A4 0C10FF cmpb #$FF
|
554 |
|
|
00FFE1A6 026000 bne dly3s2
|
555 |
4 |
robfinch |
dly3s2:
|
556 |
14 |
robfinch |
00FFE1A8 0150B7FFFE60001 sta LEDS
|
557 |
|
|
00FFE1AD 083000001 subd #1
|
558 |
|
|
00FFE1B0 026FF2 bne dly3s1
|
559 |
|
|
00FFE1B2 039 rts
|
560 |
4 |
robfinch |
|
561 |
|
|
;------------------------------------------------------------------------------
|
562 |
|
|
;------------------------------------------------------------------------------
|
563 |
|
|
ShiftLeft5:
|
564 |
14 |
robfinch |
00FFE1B3 058 aslb
|
565 |
|
|
00FFE1B4 049 rola
|
566 |
|
|
00FFE1B5 058 aslb
|
567 |
|
|
00FFE1B6 049 rola
|
568 |
|
|
00FFE1B7 058 aslb
|
569 |
|
|
00FFE1B8 049 rola
|
570 |
|
|
00FFE1B9 058 aslb
|
571 |
|
|
00FFE1BA 049 rola
|
572 |
|
|
00FFE1BB 058 aslb
|
573 |
|
|
00FFE1BC 049 rola
|
574 |
|
|
00FFE1BD 039 rts
|
575 |
4 |
robfinch |
|
576 |
|
|
;------------------------------------------------------------------------------
|
577 |
13 |
robfinch |
; Parameters:
|
578 |
|
|
; b = core id of core to copy
|
579 |
4 |
robfinch |
;------------------------------------------------------------------------------
|
580 |
|
|
;
|
581 |
|
|
CopyVirtualScreenToScreen:
|
582 |
14 |
robfinch |
00FFE1BE 034076 pshs d,x,y,u
|
583 |
13 |
robfinch |
; Compute virtual screen location for core passed in accb.
|
584 |
14 |
robfinch |
00FFE1C0 01F098 tfr b,a
|
585 |
|
|
00FFE1C2 048 asla
|
586 |
|
|
00FFE1C3 048 asla
|
587 |
|
|
00FFE1C4 048 asla
|
588 |
|
|
00FFE1C5 048 asla
|
589 |
|
|
00FFE1C6 08AC00 ora #$C00
|
590 |
|
|
00FFE1C8 05F clrb
|
591 |
|
|
00FFE1C9 01F001 tfr d,x
|
592 |
|
|
00FFE1CB 034006 pshs d
|
593 |
|
|
00FFE1CD 18EE00000 ldy #TEXTSCR
|
594 |
|
|
00FFE1D0 0CE00032C ldu #56*29/2
|
595 |
4 |
robfinch |
cv2s1:
|
596 |
14 |
robfinch |
00FFE1D3 0EC801 ldd ,x++
|
597 |
|
|
00FFE1D5 0EDA01 std ,y++
|
598 |
|
|
00FFE1D7 0335FF leau -1,u
|
599 |
|
|
00FFE1D9 283000000 cmpu #0
|
600 |
|
|
00FFE1DC 026FF5 bne cv2s1
|
601 |
4 |
robfinch |
; reset the cursor position in the text controller
|
602 |
14 |
robfinch |
00FFE1DE 035010 puls x
|
603 |
|
|
00FFE1E0 0E6808110 ldb CursorRow,x
|
604 |
|
|
00FFE1E3 086038 lda #56
|
605 |
|
|
00FFE1E5 03D mul
|
606 |
|
|
00FFE1E6 01F002 tfr d,y
|
607 |
|
|
00FFE1E8 0E6808111 ldb CursorCol,x
|
608 |
|
|
00FFE1EB 01F021 tfr y,x
|
609 |
|
|
00FFE1ED 03A abx
|
610 |
|
|
00FFE1EE 0150BFFFFE0DF22 stx TEXTREG+TEXT_CURPOS
|
611 |
|
|
00FFE1F3 0350F6 puls d,x,y,u,pc
|
612 |
4 |
robfinch |
|
613 |
|
|
;------------------------------------------------------------------------------
|
614 |
|
|
;------------------------------------------------------------------------------
|
615 |
|
|
;
|
616 |
|
|
CopyScreenToVirtualScreen:
|
617 |
14 |
robfinch |
00FFE1F5 034076 pshs d,x,y,u
|
618 |
|
|
00FFE1F7 08D08D bsr GetScreenLocation
|
619 |
|
|
00FFE1F9 01F002 tfr d,y
|
620 |
|
|
00FFE1FB 08EE00000 ldx #TEXTSCR
|
621 |
|
|
00FFE1FE 0CE00032C ldu #56*29/2
|
622 |
4 |
robfinch |
cs2v1:
|
623 |
14 |
robfinch |
00FFE201 0EC801 ldd ,x++
|
624 |
|
|
00FFE203 0EDA01 std ,y++
|
625 |
|
|
00FFE205 0335FF leau -1,u
|
626 |
|
|
00FFE207 283000000 cmpu #0
|
627 |
|
|
00FFE20A 026FF5 bne cs2v1
|
628 |
|
|
00FFE20C 0350F6 puls d,x,y,u,pc
|
629 |
4 |
robfinch |
|
630 |
|
|
;------------------------------------------------------------------------------
|
631 |
|
|
;------------------------------------------------------------------------------
|
632 |
14 |
robfinch |
00FFE20E 054045058054053043052 fcb "TEXTSCR "
|
633 |
|
|
00FFE215 020
|
634 |
|
|
00FFE216 FFE220 fcw TextOpen
|
635 |
|
|
00FFE218 FFE221 fcw TextClose
|
636 |
|
|
00FFE21A FFE222 fcw TextRead
|
637 |
|
|
00FFE21C FFE223 fcw TextWrite
|
638 |
|
|
00FFE21E FFE224 fcw TextSeek
|
639 |
4 |
robfinch |
|
640 |
|
|
TextOpen:
|
641 |
14 |
robfinch |
00FFE220 039 rts
|
642 |
4 |
robfinch |
TextClose:
|
643 |
14 |
robfinch |
00FFE221 039 rts
|
644 |
4 |
robfinch |
TextRead:
|
645 |
14 |
robfinch |
00FFE222 039 rts
|
646 |
4 |
robfinch |
TextWrite:
|
647 |
14 |
robfinch |
00FFE223 039 rts
|
648 |
4 |
robfinch |
TextSeek:
|
649 |
14 |
robfinch |
00FFE224 039 rts
|
650 |
4 |
robfinch |
|
651 |
|
|
;------------------------------------------------------------------------------
|
652 |
|
|
; Clear the screen and the screen color memory
|
653 |
|
|
; We clear the screen to give a visual indication that the system
|
654 |
|
|
; is working at all.
|
655 |
|
|
;
|
656 |
|
|
; Modifies:
|
657 |
|
|
; none
|
658 |
|
|
;------------------------------------------------------------------------------
|
659 |
|
|
|
660 |
|
|
ClearScreen:
|
661 |
14 |
robfinch |
00FFE225 034076 pshs d,x,y,u
|
662 |
|
|
00FFE227 08E000658 ldx #56*29
|
663 |
|
|
00FFE22A 01F013 tfr x,u
|
664 |
|
|
00FFE22C 08D058 bsr GetScreenLocation
|
665 |
|
|
00FFE22E 01F002 tfr d,y
|
666 |
|
|
00FFE230 0C6020 ldb #' ' ; space char
|
667 |
4 |
robfinch |
cs1:
|
668 |
14 |
robfinch |
00FFE232 0E7A00 stb ,y+ ; set text to space
|
669 |
|
|
00FFE234 0301FF leax -1,x ; decrement x
|
670 |
|
|
00FFE236 026FFA bne cs1
|
671 |
|
|
00FFE238 0150F6FFFFFFFE0 ldb COREID ; update colors only if we have focus
|
672 |
|
|
00FFE23D 0F1FF0010 cmpb IOFocusID
|
673 |
|
|
00FFE240 02000D bra cs3
|
674 |
|
|
00FFE242 18EE02000 ldy #TEXTSCR+$2000
|
675 |
4 |
robfinch |
; lda CharColor
|
676 |
14 |
robfinch |
00FFE245 0860CE lda #$0CE
|
677 |
|
|
00FFE247 01F031 tfr u,x ; get back count
|
678 |
4 |
robfinch |
cs2:
|
679 |
14 |
robfinch |
00FFE249 0A7A00 sta ,y+
|
680 |
|
|
00FFE24B 0301FF dex ; decrement x
|
681 |
|
|
00FFE24D 026FFA bne cs2
|
682 |
4 |
robfinch |
cs3:
|
683 |
14 |
robfinch |
00FFE24F 0350F6 puls d,x,y,u,pc
|
684 |
4 |
robfinch |
|
685 |
|
|
;------------------------------------------------------------------------------
|
686 |
|
|
; Scroll text on the screen upwards
|
687 |
|
|
;
|
688 |
|
|
; Modifies:
|
689 |
|
|
; none
|
690 |
|
|
;------------------------------------------------------------------------------
|
691 |
|
|
|
692 |
|
|
ScrollUp:
|
693 |
14 |
robfinch |
00FFE251 034076 pshs d,x,y,u
|
694 |
|
|
00FFE253 18E00032B ldy #(56*29-1)/2 ; y = num chars/2 to move
|
695 |
|
|
00FFE256 08D02E bsr GetScreenLocation
|
696 |
|
|
00FFE258 01F001 tfr d,x
|
697 |
|
|
00FFE25A 01F003 tfr d,u
|
698 |
|
|
00FFE25C 030038 leax 56,x ; x = index to source row
|
699 |
4 |
robfinch |
scrup1:
|
700 |
14 |
robfinch |
00FFE25E 0EC801 ldd ,x++ ; move 2 characters
|
701 |
|
|
00FFE260 0EDC01 std ,u++
|
702 |
|
|
00FFE262 0313FF dey
|
703 |
|
|
00FFE264 026FF8 bne scrup1
|
704 |
|
|
00FFE266 08601D lda #29
|
705 |
|
|
00FFE268 08D002 bsr BlankLine
|
706 |
|
|
00FFE26A 0350F6 puls d,x,y,u,pc
|
707 |
4 |
robfinch |
|
708 |
|
|
;------------------------------------------------------------------------------
|
709 |
|
|
; Blank out a line on the display
|
710 |
|
|
;
|
711 |
|
|
; Modifies:
|
712 |
|
|
; none
|
713 |
|
|
; Parameters:
|
714 |
|
|
; acca = line number to blank
|
715 |
|
|
;------------------------------------------------------------------------------
|
716 |
|
|
|
717 |
|
|
BlankLine:
|
718 |
14 |
robfinch |
00FFE26C 034016 pshs d,x
|
719 |
|
|
00FFE26E 034002 pshs a
|
720 |
|
|
00FFE270 08D014 bsr GetScreenLocation
|
721 |
|
|
00FFE272 01F001 tfr d,x
|
722 |
|
|
00FFE274 035002 puls a
|
723 |
|
|
00FFE276 0C6038 ldb #56 ; b = # chars to blank out from video controller
|
724 |
|
|
00FFE278 03D mul ; d = screen index (row# * #cols)
|
725 |
|
|
00FFE279 03080B leax d,x
|
726 |
|
|
00FFE27B 086020 lda #' '
|
727 |
|
|
00FFE27D 0C6038 ldb #56 ; b = # chars to blank out from video controller
|
728 |
4 |
robfinch |
blnkln1:
|
729 |
14 |
robfinch |
00FFE27F 0A7800 sta ,x+
|
730 |
|
|
00FFE281 05A decb
|
731 |
|
|
00FFE282 026FFB bne blnkln1
|
732 |
|
|
00FFE284 035096 puls d,x,pc
|
733 |
4 |
robfinch |
|
734 |
|
|
;------------------------------------------------------------------------------
|
735 |
|
|
; Get the location of the screen memory. The location
|
736 |
|
|
; depends on whether or not the task has the output focus.
|
737 |
|
|
;
|
738 |
|
|
; Modifies:
|
739 |
|
|
; d
|
740 |
|
|
; Retuns:
|
741 |
|
|
; d = screen location
|
742 |
|
|
;------------------------------------------------------------------------------
|
743 |
|
|
|
744 |
|
|
GetScreenLocation:
|
745 |
14 |
robfinch |
00FFE286 0150B6FFFFFFFE0 lda COREID ; which core are we?
|
746 |
|
|
00FFE28B 0B1FF0010 cmpa IOFocusID ; do we have the IO focus
|
747 |
|
|
00FFE28E 026004 bne gsl1 ; no, go pick virtual screen address
|
748 |
|
|
00FFE290 0CCE00000 ldd #TEXTSCR ; yes, we update the real screen
|
749 |
|
|
00FFE293 039 rts
|
750 |
4 |
robfinch |
gsl1:
|
751 |
14 |
robfinch |
00FFE294 0CC007800 ldd #$7800
|
752 |
|
|
00FFE297 039 rts
|
753 |
4 |
robfinch |
|
754 |
|
|
;------------------------------------------------------------------------------
|
755 |
|
|
; HomeCursor
|
756 |
|
|
; Set the cursor location to the top left of the screen.
|
757 |
|
|
;
|
758 |
|
|
; Modifies:
|
759 |
|
|
; none
|
760 |
|
|
;------------------------------------------------------------------------------
|
761 |
|
|
|
762 |
|
|
HomeCursor:
|
763 |
14 |
robfinch |
00FFE298 034016 pshs d,x
|
764 |
|
|
00FFE29A 00F110 clr CursorRow
|
765 |
|
|
00FFE29C 00F111 clr CursorCol
|
766 |
|
|
00FFE29E 0150F6FFFFFFFE0 ldb COREID
|
767 |
|
|
00FFE2A3 0F1FF0010 cmpb IOFocusID
|
768 |
|
|
00FFE2A6 026006 bne hc1
|
769 |
|
|
00FFE2A8 04F clra
|
770 |
|
|
00FFE2A9 0150B7FFFE0DF22 sta TEXTREG+TEXT_CURPOS
|
771 |
4 |
robfinch |
hc1:
|
772 |
14 |
robfinch |
00FFE2AE 035096 puls d,x,pc
|
773 |
4 |
robfinch |
|
774 |
|
|
;------------------------------------------------------------------------------
|
775 |
|
|
; Update the cursor position in the text controller based on the
|
776 |
|
|
; CursorRow,CursorCol.
|
777 |
|
|
;
|
778 |
|
|
; Modifies:
|
779 |
|
|
; none
|
780 |
|
|
;------------------------------------------------------------------------------
|
781 |
|
|
;
|
782 |
|
|
UpdateCursorPos:
|
783 |
14 |
robfinch |
00FFE2B0 034016 pshs d,x
|
784 |
|
|
00FFE2B2 0150F6FFFFFFFE0 ldb COREID ; update cursor position in text controller
|
785 |
|
|
00FFE2B7 0F1FF0010 cmpb IOFocusID ; only for the task with the output focus
|
786 |
|
|
00FFE2BA 026014 bne ucp1
|
787 |
|
|
00FFE2BC 096110 lda CursorRow
|
788 |
|
|
00FFE2BE 08403F anda #$3F ; limit of 63 rows
|
789 |
|
|
00FFE2C0 0150F6FFFE0DF00 ldb TEXTREG+TEXT_COLS
|
790 |
|
|
00FFE2C5 03D mul
|
791 |
|
|
00FFE2C6 01F001 tfr d,x
|
792 |
|
|
00FFE2C8 0D6111 ldb CursorCol
|
793 |
|
|
00FFE2CA 03A abx
|
794 |
|
|
00FFE2CB 0150BFFFFE0DF22 stx TEXTREG+TEXT_CURPOS
|
795 |
4 |
robfinch |
ucp1:
|
796 |
14 |
robfinch |
00FFE2D0 035096 puls d,x,pc
|
797 |
4 |
robfinch |
|
798 |
|
|
;------------------------------------------------------------------------------
|
799 |
|
|
; Calculate screen memory location from CursorRow,CursorCol.
|
800 |
|
|
; Also refreshes the cursor location.
|
801 |
|
|
;
|
802 |
|
|
; Modifies:
|
803 |
|
|
; d
|
804 |
|
|
; Returns:
|
805 |
|
|
; d = screen location
|
806 |
|
|
;------------------------------------------------------------------------------
|
807 |
|
|
;
|
808 |
|
|
CalcScreenLoc:
|
809 |
14 |
robfinch |
00FFE2D2 034010 pshs x
|
810 |
|
|
00FFE2D4 096110 lda CursorRow
|
811 |
|
|
00FFE2D6 0C6038 ldb #56
|
812 |
|
|
00FFE2D8 03D mul
|
813 |
|
|
00FFE2D9 01F001 tfr d,x
|
814 |
|
|
00FFE2DB 0D6111 ldb CursorCol
|
815 |
|
|
00FFE2DD 03A abx
|
816 |
|
|
00FFE2DE 0150F6FFFFFFFE0 ldb COREID ; update cursor position in text controller
|
817 |
|
|
00FFE2E3 0F1FF0010 cmpb IOFocusID ; only for the task with the output focus
|
818 |
|
|
00FFE2E6 026005 bne csl1
|
819 |
|
|
00FFE2E8 0150BFFFFE0DF22 stx TEXTREG+TEXT_CURPOS
|
820 |
4 |
robfinch |
csl1:
|
821 |
14 |
robfinch |
00FFE2ED 08DF97 bsr GetScreenLocation
|
822 |
|
|
00FFE2EF 03080B leax d,x
|
823 |
|
|
00FFE2F1 01F010 tfr x,d
|
824 |
|
|
00FFE2F3 035090 puls x,pc
|
825 |
4 |
robfinch |
|
826 |
|
|
;------------------------------------------------------------------------------
|
827 |
|
|
; Display a character on the screen.
|
828 |
|
|
; If the task doesn't have the I/O focus then the character is written to
|
829 |
|
|
; the virtual screen.
|
830 |
|
|
;
|
831 |
|
|
; Modifies:
|
832 |
|
|
; none
|
833 |
|
|
; Parameters:
|
834 |
|
|
; accb = char to display
|
835 |
|
|
;------------------------------------------------------------------------------
|
836 |
|
|
;
|
837 |
|
|
DisplayChar:
|
838 |
14 |
robfinch |
00FFE2F5 017000910 lbsr SerialPutChar
|
839 |
|
|
00FFE2F8 034016 pshs d,x
|
840 |
|
|
00FFE2FA 0C100D cmpb #CR ; carriage return ?
|
841 |
|
|
00FFE2FC 026007 bne dccr
|
842 |
|
|
00FFE2FE 00F111 clr CursorCol ; just set cursor column to zero on a CR
|
843 |
|
|
00FFE300 08DFAE bsr UpdateCursorPos
|
844 |
4 |
robfinch |
dcx14:
|
845 |
14 |
robfinch |
00FFE302 01600008C lbra dcx4
|
846 |
4 |
robfinch |
dccr:
|
847 |
14 |
robfinch |
00FFE305 0C1091 cmpb #$91 ; cursor right ?
|
848 |
|
|
00FFE307 02600D bne dcx6
|
849 |
|
|
00FFE309 096111 lda CursorCol
|
850 |
|
|
00FFE30B 081038 cmpa #56
|
851 |
|
|
00FFE30D 024003 bhs dcx7
|
852 |
|
|
00FFE30F 04C inca
|
853 |
|
|
00FFE310 097111 sta CursorCol
|
854 |
4 |
robfinch |
dcx7:
|
855 |
14 |
robfinch |
00FFE312 08DF9C bsr UpdateCursorPos
|
856 |
|
|
00FFE314 035096 puls d,x,pc
|
857 |
4 |
robfinch |
dcx6:
|
858 |
14 |
robfinch |
00FFE316 0C1090 cmpb #$90 ; cursor up ?
|
859 |
|
|
00FFE318 026009 bne dcx8
|
860 |
|
|
00FFE31A 096110 lda CursorRow
|
861 |
|
|
00FFE31C 027FF4 beq dcx7
|
862 |
|
|
00FFE31E 04A deca
|
863 |
|
|
00FFE31F 097110 sta CursorRow
|
864 |
|
|
00FFE321 020FEF bra dcx7
|
865 |
4 |
robfinch |
dcx8:
|
866 |
14 |
robfinch |
00FFE323 0C1093 cmpb #$93 ; cursor left ?
|
867 |
|
|
00FFE325 026009 bne dcx9
|
868 |
|
|
00FFE327 096111 lda CursorCol
|
869 |
|
|
00FFE329 027FE7 beq dcx7
|
870 |
|
|
00FFE32B 04A deca
|
871 |
|
|
00FFE32C 097111 sta CursorCol
|
872 |
|
|
00FFE32E 020FE2 bra dcx7
|
873 |
4 |
robfinch |
dcx9:
|
874 |
14 |
robfinch |
00FFE330 0C1092 cmpb #$92 ; cursor down ?
|
875 |
|
|
00FFE332 02600B bne dcx10
|
876 |
|
|
00FFE334 096110 lda CursorRow
|
877 |
|
|
00FFE336 08101D cmpa #29
|
878 |
|
|
00FFE338 027FD8 beq dcx7
|
879 |
|
|
00FFE33A 04C inca
|
880 |
|
|
00FFE33B 097110 sta CursorRow
|
881 |
|
|
00FFE33D 020FD3 bra dcx7
|
882 |
4 |
robfinch |
dcx10:
|
883 |
14 |
robfinch |
00FFE33F 0C1094 cmpb #$94 ; cursor home ?
|
884 |
|
|
00FFE341 02600C bne dcx11
|
885 |
|
|
00FFE343 096111 lda CursorCol
|
886 |
|
|
00FFE345 027004 beq dcx12
|
887 |
|
|
00FFE347 00F111 clr CursorCol
|
888 |
|
|
00FFE349 020FC7 bra dcx7
|
889 |
4 |
robfinch |
dcx12:
|
890 |
14 |
robfinch |
00FFE34B 00F110 clr CursorRow
|
891 |
|
|
00FFE34D 020FC3 bra dcx7
|
892 |
4 |
robfinch |
dcx11:
|
893 |
14 |
robfinch |
00FFE34F 0C1099 cmpb #$99 ; delete ?
|
894 |
|
|
00FFE351 026008 bne dcx13
|
895 |
|
|
00FFE353 08DF7D bsr CalcScreenLoc
|
896 |
|
|
00FFE355 01F001 tfr d,x
|
897 |
|
|
00FFE357 096111 lda CursorCol ; acc = cursor column
|
898 |
|
|
00FFE359 020011 bra dcx5
|
899 |
4 |
robfinch |
dcx13
|
900 |
14 |
robfinch |
00FFE35B 0C1008 cmpb #CTRLH ; backspace ?
|
901 |
|
|
00FFE35D 02601E bne dcx3
|
902 |
|
|
00FFE35F 096111 lda CursorCol
|
903 |
|
|
00FFE361 02702E beq dcx4
|
904 |
|
|
00FFE363 04A deca
|
905 |
|
|
00FFE364 097111 sta CursorCol
|
906 |
|
|
00FFE366 08DF6A bsr CalcScreenLoc
|
907 |
|
|
00FFE368 01F001 tfr d,x
|
908 |
|
|
00FFE36A 096111 lda CursorCol
|
909 |
4 |
robfinch |
dcx5:
|
910 |
14 |
robfinch |
00FFE36C 0E6001 ldb 1,x
|
911 |
|
|
00FFE36E 0E7801 stb ,x++
|
912 |
|
|
00FFE370 04C inca
|
913 |
|
|
00FFE371 081038 cmpa #56
|
914 |
|
|
00FFE373 025FF7 blo dcx5
|
915 |
|
|
00FFE375 0C6020 ldb #' '
|
916 |
|
|
00FFE377 0301FF dex
|
917 |
|
|
00FFE379 0E7804 stb ,x
|
918 |
|
|
00FFE37B 020014 bra dcx4
|
919 |
4 |
robfinch |
dcx3:
|
920 |
14 |
robfinch |
00FFE37D 0C100A cmpb #LF ; linefeed ?
|
921 |
|
|
00FFE37F 02700E beq dclf
|
922 |
|
|
00FFE381 034004 pshs b
|
923 |
|
|
00FFE383 08DF4D bsr CalcScreenLoc
|
924 |
|
|
00FFE385 01F001 tfr d,x
|
925 |
|
|
00FFE387 035004 puls b
|
926 |
|
|
00FFE389 0E7804 stb ,x
|
927 |
4 |
robfinch |
; ToDo character color
|
928 |
|
|
; lda CharColor
|
929 |
|
|
; sta $2000,x
|
930 |
14 |
robfinch |
00FFE38B 08D006 bsr IncCursorPos
|
931 |
|
|
00FFE38D 020002 bra dcx4
|
932 |
4 |
robfinch |
dclf:
|
933 |
14 |
robfinch |
00FFE38F 08D011 bsr IncCursorRow
|
934 |
4 |
robfinch |
dcx4:
|
935 |
14 |
robfinch |
00FFE391 035096 puls d,x,pc
|
936 |
4 |
robfinch |
|
937 |
|
|
;------------------------------------------------------------------------------
|
938 |
|
|
; Increment the cursor position, scroll the screen if needed.
|
939 |
|
|
;
|
940 |
|
|
; Modifies:
|
941 |
|
|
; none
|
942 |
|
|
;------------------------------------------------------------------------------
|
943 |
|
|
|
944 |
|
|
IncCursorPos:
|
945 |
14 |
robfinch |
00FFE393 034016 pshs d,x
|
946 |
|
|
00FFE395 096111 lda CursorCol
|
947 |
|
|
00FFE397 04C inca
|
948 |
|
|
00FFE398 097111 sta CursorCol
|
949 |
|
|
00FFE39A 081038 cmpa #56
|
950 |
|
|
00FFE39C 025014 blo icc1
|
951 |
|
|
00FFE39E 00F111 clr CursorCol ; column = 0
|
952 |
|
|
00FFE3A0 020002 bra icr1
|
953 |
4 |
robfinch |
IncCursorRow:
|
954 |
14 |
robfinch |
00FFE3A2 034016 pshs d,x
|
955 |
4 |
robfinch |
icr1:
|
956 |
14 |
robfinch |
00FFE3A4 096110 lda CursorRow
|
957 |
|
|
00FFE3A6 04C inca
|
958 |
|
|
00FFE3A7 097110 sta CursorRow
|
959 |
|
|
00FFE3A9 08101D cmpa #29
|
960 |
|
|
00FFE3AB 025005 blo icc1
|
961 |
|
|
00FFE3AD 04A deca ; backup the cursor row, we are scrolling up
|
962 |
|
|
00FFE3AE 097110 sta CursorRow
|
963 |
|
|
00FFE3B0 08DE9F bsr ScrollUp
|
964 |
4 |
robfinch |
icc1:
|
965 |
14 |
robfinch |
00FFE3B2 08DEFC bsr UpdateCursorPos
|
966 |
4 |
robfinch |
icc2:
|
967 |
14 |
robfinch |
00FFE3B4 035096 puls d,x,pc
|
968 |
4 |
robfinch |
|
969 |
|
|
;------------------------------------------------------------------------------
|
970 |
|
|
; Display a string on the screen.
|
971 |
|
|
;
|
972 |
|
|
; Modifies:
|
973 |
|
|
; none
|
974 |
|
|
; Parameters:
|
975 |
|
|
; d = pointer to string
|
976 |
|
|
;------------------------------------------------------------------------------
|
977 |
|
|
;
|
978 |
|
|
DisplayString:
|
979 |
14 |
robfinch |
00FFE3B6 034016 pshs d,x
|
980 |
|
|
00FFE3B8 01F001 tfr d,x
|
981 |
13 |
robfinch |
dspj2: ; lock semaphore for access
|
982 |
14 |
robfinch |
00FFE3BA 0B6EF0001 lda OUTSEMA+1
|
983 |
|
|
00FFE3BD 027FFB beq dspj2
|
984 |
4 |
robfinch |
dspj1B:
|
985 |
14 |
robfinch |
00FFE3BF 0E6800 ldb ,x+ ; move string char into acc
|
986 |
|
|
00FFE3C1 027005 beq dsretB ; is it end of string ?
|
987 |
|
|
00FFE3C3 01700094C lbsr OUTCH ; display character
|
988 |
|
|
00FFE3C6 020FF7 bra dspj1B
|
989 |
4 |
robfinch |
dsretB:
|
990 |
14 |
robfinch |
00FFE3C8 07FEF0001 clr OUTSEMA+1 ; unlock semaphore
|
991 |
|
|
00FFE3CB 035096 puls d,x,pc
|
992 |
4 |
robfinch |
|
993 |
|
|
DisplayStringCRLF:
|
994 |
14 |
robfinch |
00FFE3CD 034006 pshs d
|
995 |
|
|
00FFE3CF 08DFE5 bsr DisplayString
|
996 |
|
|
00FFE3D1 0C600D ldb #CR
|
997 |
|
|
00FFE3D3 01700093C lbsr OUTCH
|
998 |
|
|
00FFE3D6 0C600A ldb #LF
|
999 |
|
|
00FFE3D8 017000937 lbsr OUTCH
|
1000 |
|
|
00FFE3DB 035086 puls d,pc
|
1001 |
4 |
robfinch |
|
1002 |
|
|
;
|
1003 |
|
|
; PRINT CR, LF, STRING
|
1004 |
|
|
;
|
1005 |
|
|
PSTRNG
|
1006 |
14 |
robfinch |
00FFE3DD 08D002 BSR PCRLF
|
1007 |
|
|
00FFE3DF 02000D BRA PDATA
|
1008 |
4 |
robfinch |
PCRLF
|
1009 |
14 |
robfinch |
00FFE3E1 034010 PSHS X
|
1010 |
|
|
00FFE3E3 08EFFE3F5 LDX #CRLFST
|
1011 |
|
|
00FFE3E6 08D006 BSR PDATA
|
1012 |
|
|
00FFE3E8 035010 PULS X
|
1013 |
|
|
00FFE3EA 039 RTS
|
1014 |
4 |
robfinch |
|
1015 |
|
|
PRINT
|
1016 |
14 |
robfinch |
00FFE3EB 0BDFFED12 JSR OUTCH
|
1017 |
4 |
robfinch |
PDATA
|
1018 |
14 |
robfinch |
00FFE3EE 0E6800 LDB ,X+
|
1019 |
|
|
00FFE3F0 0C1004 CMPB #$04
|
1020 |
|
|
00FFE3F2 026FF7 BNE PRINT
|
1021 |
|
|
00FFE3F4 039 RTS
|
1022 |
4 |
robfinch |
|
1023 |
|
|
CRLFST
|
1024 |
14 |
robfinch |
00FFE3F5 00D00A004 fcb CR,LF,4
|
1025 |
4 |
robfinch |
|
1026 |
|
|
DispDWordAsHex:
|
1027 |
14 |
robfinch |
00FFE3F8 08D007 bsr DispWordAsHex
|
1028 |
|
|
00FFE3FA 01E001 exg d,x
|
1029 |
|
|
00FFE3FC 08D003 bsr DispWordAsHex
|
1030 |
|
|
00FFE3FE 01E001 exg d,x
|
1031 |
|
|
00FFE400 039 rts
|
1032 |
4 |
robfinch |
|
1033 |
|
|
DispWordAsHex:
|
1034 |
14 |
robfinch |
00FFE401 01E089 exg a,b
|
1035 |
|
|
00FFE403 08D005 bsr DispByteAsHex
|
1036 |
|
|
00FFE405 01E089 exg a,b
|
1037 |
|
|
00FFE407 08D001 bsr DispByteAsHex
|
1038 |
|
|
00FFE409 039 rts
|
1039 |
4 |
robfinch |
|
1040 |
|
|
DispByteAsHex:
|
1041 |
14 |
robfinch |
00FFE40A 034004 pshs b
|
1042 |
|
|
00FFE40C 054 lsrb
|
1043 |
|
|
00FFE40D 054 lsrb
|
1044 |
|
|
00FFE40E 054 lsrb
|
1045 |
|
|
00FFE40F 054 lsrb
|
1046 |
|
|
00FFE410 054 lsrb
|
1047 |
|
|
00FFE411 054 lsrb
|
1048 |
|
|
00FFE412 054 lsrb
|
1049 |
|
|
00FFE413 054 lsrb
|
1050 |
|
|
00FFE414 08D00C bsr DispNyb
|
1051 |
|
|
00FFE416 035004 puls b
|
1052 |
|
|
00FFE418 034004 pshs b
|
1053 |
|
|
00FFE41A 054 lsrb
|
1054 |
|
|
00FFE41B 054 lsrb
|
1055 |
|
|
00FFE41C 054 lsrb
|
1056 |
|
|
00FFE41D 054 lsrb
|
1057 |
|
|
00FFE41E 08D002 bsr DispNyb
|
1058 |
|
|
00FFE420 035004 puls b
|
1059 |
4 |
robfinch |
|
1060 |
|
|
DispNyb
|
1061 |
14 |
robfinch |
00FFE422 034004 pshs b
|
1062 |
|
|
00FFE424 0C400F andb #$0F
|
1063 |
|
|
00FFE426 0C100A cmpb #10
|
1064 |
|
|
00FFE428 025007 blo DispNyb1
|
1065 |
|
|
00FFE42A 0CB037 addb #'A'-10
|
1066 |
|
|
00FFE42C 0170008E3 lbsr OUTCH
|
1067 |
|
|
00FFE42F 035084 puls b,pc
|
1068 |
4 |
robfinch |
DispNyb1
|
1069 |
14 |
robfinch |
00FFE431 0CB030 addb #'0'
|
1070 |
|
|
00FFE433 0170008DC lbsr OUTCH
|
1071 |
|
|
00FFE436 035084 puls b,pc
|
1072 |
4 |
robfinch |
|
1073 |
|
|
;==============================================================================
|
1074 |
13 |
robfinch |
; Timer
|
1075 |
|
|
;==============================================================================
|
1076 |
|
|
|
1077 |
|
|
; ============================================================================
|
1078 |
|
|
; __
|
1079 |
|
|
; \\__/ o\ (C) 2022 Robert Finch, Waterloo
|
1080 |
|
|
; \ __ / All rights reserved.
|
1081 |
|
|
; \/_// robfinch@opencores.org
|
1082 |
|
|
; ||
|
1083 |
|
|
;
|
1084 |
|
|
;
|
1085 |
|
|
; Timer routines for a WDC6522 compatible circuit.
|
1086 |
|
|
;
|
1087 |
|
|
; This source file is free software: you can redistribute it and/or modify
|
1088 |
|
|
; it under the terms of the GNU Lesser General Public License as published
|
1089 |
|
|
; by the Free Software Foundation, either version 3 of the License, or
|
1090 |
|
|
; (at your option) any later version.
|
1091 |
|
|
;
|
1092 |
|
|
; This source file is distributed in the hope that it will be useful,
|
1093 |
|
|
; but WITHOUT ANY WARRANTY; without even the implied warranty of
|
1094 |
|
|
; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
1095 |
|
|
; GNU General Public License for more details.
|
1096 |
|
|
;
|
1097 |
|
|
; You should have received a copy of the GNU General Public License
|
1098 |
|
|
; along with this program. If not, see .
|
1099 |
|
|
;
|
1100 |
|
|
; ============================================================================
|
1101 |
|
|
;
|
1102 |
|
|
TimerInit:
|
1103 |
14 |
robfinch |
00FFE438 0CC061A80 ldd #$61A80 ; compare to 400000 (100 Hz assuming 40MHz clock)
|
1104 |
|
|
00FFE43B 0150F7FFFE60014 stb VIA+VIA_T3CMPL
|
1105 |
|
|
00FFE440 0150B7FFFE60015 sta VIA+VIA_T3CMPH
|
1106 |
|
|
00FFE445 01507FFFFE60012 clr VIA+VIA_T3LL
|
1107 |
|
|
00FFE44A 01507FFFFE60013 clr VIA+VIA_T3LH
|
1108 |
|
|
00FFE44F 0150B6FFFE6000B lda VIA+VIA_ACR ; set continuous mode for timer
|
1109 |
|
|
00FFE454 08A100 ora #$100
|
1110 |
|
|
00FFE456 0150B7FFFE6000B sta VIA+VIA_ACR ; enable timer #3 interrupts
|
1111 |
|
|
00FFE45B 086810 lda #$810
|
1112 |
|
|
00FFE45D 0150B7FFFE6000E sta VIA+VIA_IER
|
1113 |
|
|
00FFE462 039 rts
|
1114 |
13 |
robfinch |
|
1115 |
|
|
TimerIRQ:
|
1116 |
|
|
; Reset the edge sense circuit in the PIC
|
1117 |
14 |
robfinch |
00FFE463 08601F lda #31 ; Timer is IRQ #31
|
1118 |
|
|
00FFE465 0B7FF0011 sta IrqSource ; stuff a byte indicating the IRQ source for PEEK()
|
1119 |
|
|
00FFE468 0150B7FFFE3F010 sta PIC+16 ; register 16 is edge sense reset reg
|
1120 |
|
|
00FFE46D 0150B6FFFE6000D lda VIA+VIA_IFR
|
1121 |
|
|
00FFE472 02A011 bpl notTimerIRQ
|
1122 |
|
|
00FFE474 085800 bita #$800
|
1123 |
|
|
00FFE476 02700D beq notTimerIRQ
|
1124 |
|
|
00FFE478 01507FFFFE60012 clr VIA+VIA_T3LL
|
1125 |
|
|
00FFE47D 01507FFFFE60013 clr VIA+VIA_T3LH
|
1126 |
|
|
00FFE482 07CE00037 inc $E00037 ; update timer IRQ screen flag
|
1127 |
13 |
robfinch |
notTimerIRQ:
|
1128 |
14 |
robfinch |
00FFE485 039 rts
|
1129 |
13 |
robfinch |
|
1130 |
|
|
|
1131 |
|
|
|
1132 |
|
|
; ============================================================================
|
1133 |
|
|
; __
|
1134 |
|
|
; \\__/ o\ (C) 2013-2022 Robert Finch, Waterloo
|
1135 |
|
|
; \ __ / All rights reserved.
|
1136 |
|
|
; \/_// robfinch@opencores.org
|
1137 |
|
|
; ||
|
1138 |
|
|
;
|
1139 |
|
|
;
|
1140 |
|
|
; BSD 3-Clause License
|
1141 |
|
|
; Redistribution and use in source and binary forms, with or without
|
1142 |
|
|
; modification, are permitted provided that the following conditions are met:
|
1143 |
|
|
;
|
1144 |
|
|
; 1. Redistributions of source code must retain the above copyright notice, this
|
1145 |
|
|
; list of conditions and the following disclaimer.
|
1146 |
|
|
;
|
1147 |
|
|
; 2. Redistributions in binary form must reproduce the above copyright notice,
|
1148 |
|
|
; this list of conditions and the following disclaimer in the documentation
|
1149 |
|
|
; and/or other materials provided with the distribution.
|
1150 |
|
|
;
|
1151 |
|
|
; 3. Neither the name of the copyright holder nor the names of its
|
1152 |
|
|
; contributors may be used to endorse or promote products derived from
|
1153 |
|
|
; this software without specific prior written permission.
|
1154 |
|
|
;
|
1155 |
|
|
; THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
1156 |
|
|
; AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
1157 |
|
|
; IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
1158 |
|
|
; DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
|
1159 |
|
|
; FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
1160 |
|
|
; DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
|
1161 |
|
|
; SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
|
1162 |
|
|
; CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
|
1163 |
|
|
; OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
1164 |
|
|
; OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
1165 |
|
|
;
|
1166 |
|
|
; ============================================================================
|
1167 |
|
|
;
|
1168 |
|
|
;===============================================================================
|
1169 |
|
|
; Generic I2C routines
|
1170 |
|
|
;
|
1171 |
|
|
; It is assumed there may be more than one I2C controller in the system, so
|
1172 |
|
|
; the address of the controller is passed in the X register.
|
1173 |
|
|
;===============================================================================
|
1174 |
|
|
|
1175 |
|
|
I2C_PREL EQU $0
|
1176 |
|
|
I2C_PREH EQU $1
|
1177 |
|
|
I2C_CTRL EQU $2
|
1178 |
|
|
I2C_RXR EQU $3
|
1179 |
|
|
I2C_TXR EQU $3
|
1180 |
|
|
I2C_CMD EQU $4
|
1181 |
|
|
I2C_STAT EQU $4
|
1182 |
|
|
|
1183 |
|
|
; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
1184 |
|
|
; i2c initialization, sets the clock prescaler
|
1185 |
|
|
;
|
1186 |
|
|
; Parameters:
|
1187 |
|
|
; x = I2C controller address
|
1188 |
|
|
; Returns: none
|
1189 |
|
|
; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
1190 |
|
|
|
1191 |
|
|
_i2c_init:
|
1192 |
14 |
robfinch |
00FFE486 034004 pshs b
|
1193 |
|
|
00FFE488 0C6004 ldb #4 ; setup prescale for 400kHz clock
|
1194 |
|
|
00FFE48A 0E7804 stb I2C_PREL,x
|
1195 |
|
|
00FFE48C 06F001 clr I2C_PREH,x
|
1196 |
|
|
00FFE48E 035084 puls b,pc
|
1197 |
13 |
robfinch |
|
1198 |
|
|
; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
1199 |
|
|
; Wait for I2C transfer to complete
|
1200 |
|
|
;
|
1201 |
|
|
; Parameters
|
1202 |
|
|
; x - I2C controller base address
|
1203 |
|
|
; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
1204 |
|
|
|
1205 |
|
|
i2c_wait_tip:
|
1206 |
14 |
robfinch |
00FFE490 034004 pshs b
|
1207 |
13 |
robfinch |
i2cw1:
|
1208 |
14 |
robfinch |
00FFE492 0E6004 ldb I2C_STAT,x ; would use lvb, but lb is okay since its the I/O area
|
1209 |
|
|
00FFE494 0C5001 bitb #1 ; wait for tip to clear
|
1210 |
|
|
00FFE496 026FFA bne i2cw1
|
1211 |
|
|
00FFE498 035084 puls b,pc
|
1212 |
13 |
robfinch |
|
1213 |
|
|
; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
1214 |
|
|
; Write command to i2c
|
1215 |
|
|
;
|
1216 |
|
|
; Parameters
|
1217 |
|
|
; accb - data to transmit
|
1218 |
|
|
; acca - command value
|
1219 |
|
|
; x - I2C controller base address
|
1220 |
|
|
; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
1221 |
|
|
|
1222 |
|
|
i2c_wr_cmd:
|
1223 |
14 |
robfinch |
00FFE49A 0E7003 stb I2C_TXR,x
|
1224 |
|
|
00FFE49C 0A7004 sta I2C_CMD,x
|
1225 |
|
|
00FFE49E 08DFF0 bsr i2c_wait_tip
|
1226 |
|
|
00FFE4A0 0E6004 ldb I2C_STAT,x
|
1227 |
|
|
00FFE4A2 039 rts
|
1228 |
13 |
robfinch |
|
1229 |
|
|
; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
1230 |
|
|
; Parameters
|
1231 |
|
|
; x - I2C controller base address
|
1232 |
|
|
; accb - data to send
|
1233 |
|
|
; Returns: none
|
1234 |
|
|
; Stack space: 2 words
|
1235 |
|
|
; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
1236 |
|
|
|
1237 |
|
|
_i2c_xmit1:
|
1238 |
14 |
robfinch |
00FFE4A3 034006 pshs d ; save data value
|
1239 |
|
|
00FFE4A5 034006 pshs d ; and save it again
|
1240 |
|
|
00FFE4A7 0C6001 ldb #1
|
1241 |
|
|
00FFE4A9 0E7002 stb I2C_CTRL,x ; enable the core
|
1242 |
|
|
00FFE4AB 0C6076 ldb #$76 ; set slave address = %0111011
|
1243 |
|
|
00FFE4AD 086090 lda #$90 ; set STA, WR
|
1244 |
|
|
00FFE4AF 08DFE9 bsr i2c_wr_cmd
|
1245 |
|
|
00FFE4B1 08D00A bsr i2c_wait_rx_nack
|
1246 |
|
|
00FFE4B3 035006 puls d ; get back data value
|
1247 |
|
|
00FFE4B5 086050 lda #$50 ; set STO, WR
|
1248 |
|
|
00FFE4B7 08DFE1 bsr i2c_wr_cmd
|
1249 |
|
|
00FFE4B9 08D002 bsr i2c_wait_rx_nack
|
1250 |
|
|
00FFE4BB 035086 puls d,pc
|
1251 |
13 |
robfinch |
|
1252 |
|
|
; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
1253 |
|
|
; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
1254 |
|
|
|
1255 |
|
|
i2c_wait_rx_nack:
|
1256 |
14 |
robfinch |
00FFE4BD 034004 pshs b ; save off accb
|
1257 |
13 |
robfinch |
i2cwr1:
|
1258 |
14 |
robfinch |
00FFE4BF 0E6004 ldb I2C_STAT,x ; wait for RXack = 0
|
1259 |
|
|
00FFE4C1 0C5080 bitb #$80 ; test for nack
|
1260 |
|
|
00FFE4C3 026FFA bne i2cwr1
|
1261 |
|
|
00FFE4C5 035084 puls b,pc
|
1262 |
13 |
robfinch |
|
1263 |
|
|
; ============================================================================
|
1264 |
|
|
; __
|
1265 |
|
|
; \\__/ o\ (C) 2022 Robert Finch, Waterloo
|
1266 |
|
|
; \ __ / All rights reserved.
|
1267 |
|
|
; \/_// robfinch@opencores.org
|
1268 |
|
|
; ||
|
1269 |
|
|
;
|
1270 |
|
|
;
|
1271 |
|
|
; BSD 3-Clause License
|
1272 |
|
|
; Redistribution and use in source and binary forms, with or without
|
1273 |
|
|
; modification, are permitted provided that the following conditions are met:
|
1274 |
|
|
;
|
1275 |
|
|
; 1. Redistributions of source code must retain the above copyright notice, this
|
1276 |
|
|
; list of conditions and the following disclaimer.
|
1277 |
|
|
;
|
1278 |
|
|
; 2. Redistributions in binary form must reproduce the above copyright notice,
|
1279 |
|
|
; this list of conditions and the following disclaimer in the documentation
|
1280 |
|
|
; and/or other materials provided with the distribution.
|
1281 |
|
|
;
|
1282 |
|
|
; 3. Neither the name of the copyright holder nor the names of its
|
1283 |
|
|
; contributors may be used to endorse or promote products derived from
|
1284 |
|
|
; this software without specific prior written permission.
|
1285 |
|
|
;
|
1286 |
|
|
; THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
1287 |
|
|
; AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
1288 |
|
|
; IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
1289 |
|
|
; DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
|
1290 |
|
|
; FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
1291 |
|
|
; DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
|
1292 |
|
|
; SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
|
1293 |
|
|
; CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
|
1294 |
|
|
; OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
1295 |
|
|
; OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
1296 |
|
|
;
|
1297 |
|
|
; ============================================================================
|
1298 |
|
|
|
1299 |
|
|
;===============================================================================
|
1300 |
|
|
; Realtime clock routines
|
1301 |
|
|
;===============================================================================
|
1302 |
|
|
|
1303 |
|
|
; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
1304 |
|
|
; Read the real-time-clock chip.
|
1305 |
|
|
;
|
1306 |
|
|
; The entire contents of the clock registers and sram are read into a buffer
|
1307 |
|
|
; in one-shot rather than reading the registers individually.
|
1308 |
|
|
;
|
1309 |
|
|
; Parameters: none
|
1310 |
|
|
; Returns: d = 0 on success, otherwise non-zero
|
1311 |
|
|
; Modifies: d and RTCBuf
|
1312 |
|
|
; Stack space: 6 words
|
1313 |
|
|
; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
1314 |
|
|
|
1315 |
|
|
rtc_read:
|
1316 |
14 |
robfinch |
00FFE4C7 08EE30500 ldx #RTC
|
1317 |
|
|
00FFE4CA 18E007FC0 ldy #RTCBuf
|
1318 |
|
|
00FFE4CD 0C6080 ldb #$80
|
1319 |
|
|
00FFE4CF 0E7002 stb I2C_CTRL,x ; enable I2C
|
1320 |
|
|
00FFE4D1 0CC0900DE ldd #$900DE ; read address, write op, STA + wr bit
|
1321 |
|
|
00FFE4D4 08DFC4 bsr i2c_wr_cmd
|
1322 |
|
|
00FFE4D6 0C5080 bitb #$80
|
1323 |
|
|
00FFE4D8 02603C bne rtc_rxerr
|
1324 |
|
|
00FFE4DA 0CC010000 ldd #$10000 ; address zero, wr bit
|
1325 |
|
|
00FFE4DD 08DFBB bsr i2c_wr_cmd
|
1326 |
|
|
00FFE4DF 0C5080 bitb #$80
|
1327 |
|
|
00FFE4E1 026033 bne rtc_rxerr
|
1328 |
|
|
00FFE4E3 0CC0900DF ldd #$900DF ; read address, read op, STA + wr bit
|
1329 |
|
|
00FFE4E6 08DFB2 bsr i2c_wr_cmd
|
1330 |
|
|
00FFE4E8 0C5080 bitb #$80
|
1331 |
|
|
00FFE4EA 02602A bne rtc_rxerr
|
1332 |
13 |
robfinch |
|
1333 |
14 |
robfinch |
00FFE4EC 05F clrb
|
1334 |
13 |
robfinch |
rtcr0001:
|
1335 |
14 |
robfinch |
00FFE4ED 086020 lda #$20
|
1336 |
|
|
00FFE4EF 0A7004 sta I2C_CMD,x ; rd bit
|
1337 |
|
|
00FFE4F1 08DF9D bsr i2c_wait_tip
|
1338 |
|
|
00FFE4F3 08DFC8 bsr i2c_wait_rx_nack
|
1339 |
|
|
00FFE4F5 0A6004 lda I2C_STAT,x
|
1340 |
|
|
00FFE4F7 085080 bita #$80
|
1341 |
|
|
00FFE4F9 02601B bne rtc_rxerr
|
1342 |
|
|
00FFE4FB 0A6003 lda I2C_RXR,x
|
1343 |
|
|
00FFE4FD 0A7A07 sta b,y
|
1344 |
|
|
00FFE4FF 05C incb
|
1345 |
|
|
00FFE500 0C105F cmpb #$5F
|
1346 |
|
|
00FFE502 025FE9 blo rtcr0001
|
1347 |
|
|
00FFE504 086068 lda #$68
|
1348 |
|
|
00FFE506 0A7004 sta I2C_CMD,x ; STO, rd bit + nack
|
1349 |
|
|
00FFE508 08DF86 bsr i2c_wait_tip
|
1350 |
|
|
00FFE50A 0A6004 lda I2C_STAT,x
|
1351 |
|
|
00FFE50C 085080 bita #$80
|
1352 |
|
|
00FFE50E 026006 bne rtc_rxerr
|
1353 |
|
|
00FFE510 0A6003 lda I2C_RXR,x
|
1354 |
|
|
00FFE512 0A7A07 sta b,y
|
1355 |
|
|
00FFE514 04F05F clrd ; return 0
|
1356 |
13 |
robfinch |
rtc_rxerr:
|
1357 |
14 |
robfinch |
00FFE516 06F002 clr I2C_CTRL,x ; disable I2C and return status
|
1358 |
|
|
00FFE518 04F clra
|
1359 |
|
|
00FFE519 039 rts
|
1360 |
13 |
robfinch |
|
1361 |
|
|
; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
1362 |
|
|
; Write the real-time-clock chip.
|
1363 |
|
|
;
|
1364 |
|
|
; The entire contents of the clock registers and sram are written from a
|
1365 |
|
|
; buffer (RTCBuf) in one-shot rather than writing the registers individually.
|
1366 |
|
|
;
|
1367 |
|
|
; Parameters: none
|
1368 |
|
|
; Returns: r1 = 0 on success, otherwise non-zero
|
1369 |
|
|
; Modifies: r1 and RTCBuf
|
1370 |
|
|
; Stack space: 6 words
|
1371 |
|
|
; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
1372 |
|
|
|
1373 |
|
|
rtc_write:
|
1374 |
14 |
robfinch |
00FFE51A 08EE30500 ldx #RTC
|
1375 |
|
|
00FFE51D 18E007FC0 ldy #RTCBuf
|
1376 |
13 |
robfinch |
|
1377 |
14 |
robfinch |
00FFE520 0C6080 ldb #$80
|
1378 |
|
|
00FFE522 0E7002 stb I2C_CTRL,x ; enable I2C
|
1379 |
|
|
00FFE524 0CC0900DE ldd #$900DE ; read address, write op, STA + wr bit
|
1380 |
|
|
00FFE527 08DF71 bsr i2c_wr_cmd
|
1381 |
|
|
00FFE529 0C5080 bitb #$80
|
1382 |
|
|
00FFE52B 026FE9 bne rtc_rxerr
|
1383 |
|
|
00FFE52D 0CC010000 ldd #$10000 ; address zero, wr bit
|
1384 |
|
|
00FFE530 08DF68 bsr i2c_wr_cmd
|
1385 |
|
|
00FFE532 0C5080 bitb #$80
|
1386 |
|
|
00FFE534 026FE0 bne rtc_rxerr
|
1387 |
13 |
robfinch |
|
1388 |
14 |
robfinch |
00FFE536 0C6000 ldb #0
|
1389 |
13 |
robfinch |
rtcw0001:
|
1390 |
14 |
robfinch |
00FFE538 034004 pshs b
|
1391 |
|
|
00FFE53A 0E6A05 ldb b,y
|
1392 |
|
|
00FFE53C 086010 lda #$10
|
1393 |
|
|
00FFE53E 08DF5A bsr i2c_wr_cmd
|
1394 |
|
|
00FFE540 0C5080 bitb #$80
|
1395 |
|
|
00FFE542 035004 puls b
|
1396 |
|
|
00FFE544 026FD0 bne rtc_rxerr
|
1397 |
|
|
00FFE546 05C incb
|
1398 |
|
|
00FFE547 0C105F cmpb #$5F
|
1399 |
|
|
00FFE549 025FED blo rtcw0001
|
1400 |
|
|
00FFE54B 0E6A05 ldb b,y
|
1401 |
|
|
00FFE54D 086050 lda #$50 ; STO, wr bit
|
1402 |
|
|
00FFE54F 08DF49 bsr i2c_wr_cmd
|
1403 |
|
|
00FFE551 0C5080 bitb #$80
|
1404 |
|
|
00FFE553 026FC1 bne rtc_rxerr
|
1405 |
|
|
00FFE555 04F05F clrd ; return 0
|
1406 |
|
|
00FFE557 06F002 clr I2C_CTRL,x ; disable I2C and return status
|
1407 |
|
|
00FFE559 039 rts
|
1408 |
13 |
robfinch |
|
1409 |
|
|
;==============================================================================
|
1410 |
4 |
robfinch |
; Keyboard I/O
|
1411 |
|
|
;==============================================================================
|
1412 |
|
|
|
1413 |
|
|
;--------------------------------------------------------------------------
|
1414 |
|
|
; PS2 scan codes to ascii conversion tables.
|
1415 |
|
|
;--------------------------------------------------------------------------
|
1416 |
|
|
;
|
1417 |
|
|
org (* + 127) & $FFFFFF80
|
1418 |
|
|
|
1419 |
|
|
unshiftedScanCodes:
|
1420 |
13 |
robfinch |
00FFE580 02E0A902E0A50A30A10A2 fcb $2e,$a9,$2e,$a5,$a3,$a1,$a2,$ac
|
1421 |
|
|
00FFE587 0AC
|
1422 |
|
|
00FFE588 02E0AA0A80A60A4009060 fcb $2e,$aa,$a8,$a6,$a4,$09,$60,$2e
|
1423 |
|
|
00FFE58F 02E
|
1424 |
|
|
00FFE590 02E02E02E02E02E071031 fcb $2e,$2e,$2e,$2e,$2e,$71,$31,$2e
|
1425 |
|
|
00FFE597 02E
|
1426 |
|
|
00FFE598 02E02E07A073061077032 fcb $2e,$2e,$7a,$73,$61,$77,$32,$2e
|
1427 |
|
|
00FFE59F 02E
|
1428 |
|
|
00FFE5A0 02E063078064065034033 fcb $2e,$63,$78,$64,$65,$34,$33,$2e
|
1429 |
|
|
00FFE5A7 02E
|
1430 |
|
|
00FFE5A8 02E020076066074072035 fcb $2e,$20,$76,$66,$74,$72,$35,$2e
|
1431 |
|
|
00FFE5AF 02E
|
1432 |
|
|
00FFE5B0 02E06E062068067079036 fcb $2e,$6e,$62,$68,$67,$79,$36,$2e
|
1433 |
|
|
00FFE5B7 02E
|
1434 |
|
|
00FFE5B8 02E02E06D06A075037038 fcb $2e,$2e,$6d,$6a,$75,$37,$38,$2e
|
1435 |
|
|
00FFE5BF 02E
|
1436 |
|
|
00FFE5C0 02E02C06B06906F030039 fcb $2e,$2c,$6b,$69,$6f,$30,$39,$2e
|
1437 |
|
|
00FFE5C7 02E
|
1438 |
|
|
00FFE5C8 02E02E02F06C03B07002D fcb $2e,$2e,$2f,$6c,$3b,$70,$2d,$2e
|
1439 |
|
|
00FFE5CF 02E
|
1440 |
|
|
00FFE5D0 02E02E02702E05B03D02E fcb $2e,$2e,$27,$2e,$5b,$3d,$2e,$2e
|
1441 |
|
|
00FFE5D7 02E
|
1442 |
|
|
00FFE5D8 0AD02E00D05D02E05C02E fcb $ad,$2e,$0d,$5d,$2e,$5c,$2e,$2e
|
1443 |
|
|
00FFE5DF 02E
|
1444 |
|
|
00FFE5E0 02E02E02E02E02E02E008 fcb $2e,$2e,$2e,$2e,$2e,$2e,$08,$2e
|
1445 |
|
|
00FFE5E7 02E
|
1446 |
|
|
00FFE5E8 02E09502E09309402E02E fcb $2e,$95,$2e,$93,$94,$2e,$2e,$2e
|
1447 |
|
|
00FFE5EF 02E
|
1448 |
|
|
00FFE5F0 09807F09202E09109001B fcb $98,$7f,$92,$2e,$91,$90,$1b,$af
|
1449 |
|
|
00FFE5F7 0AF
|
1450 |
|
|
00FFE5F8 0AB02E09702E02E0960AE fcb $ab,$2e,$97,$2e,$2e,$96,$ae,$2e
|
1451 |
|
|
00FFE5FF 02E
|
1452 |
4 |
robfinch |
|
1453 |
13 |
robfinch |
00FFE600 02E02E02E0A702E02E02E fcb $2e,$2e,$2e,$a7,$2e,$2e,$2e,$2e
|
1454 |
|
|
00FFE607 02E
|
1455 |
|
|
00FFE608 02E02E02E02E02E02E02E fcb $2e,$2e,$2e,$2e,$2e,$2e,$2e,$2e
|
1456 |
|
|
00FFE60F 02E
|
1457 |
|
|
00FFE610 02E02E02E02E02E02E02E fcb $2e,$2e,$2e,$2e,$2e,$2e,$2e,$2e
|
1458 |
|
|
00FFE617 02E
|
1459 |
|
|
00FFE618 02E02E02E02E02E02E02E fcb $2e,$2e,$2e,$2e,$2e,$2e,$2e,$2e
|
1460 |
|
|
00FFE61F 02E
|
1461 |
|
|
00FFE620 02E02E02E02E02E02E02E fcb $2e,$2e,$2e,$2e,$2e,$2e,$2e,$2e
|
1462 |
|
|
00FFE627 02E
|
1463 |
|
|
00FFE628 02E02E02E02E02E02E02E fcb $2e,$2e,$2e,$2e,$2e,$2e,$2e,$2e
|
1464 |
|
|
00FFE62F 02E
|
1465 |
|
|
00FFE630 02E02E02E02E02E02E02E fcb $2e,$2e,$2e,$2e,$2e,$2e,$2e,$2e
|
1466 |
|
|
00FFE637 02E
|
1467 |
|
|
00FFE638 02E02E02E02E02E02E02E fcb $2e,$2e,$2e,$2e,$2e,$2e,$2e,$2e
|
1468 |
|
|
00FFE63F 02E
|
1469 |
|
|
00FFE640 02E02E02E02E02E02E02E fcb $2e,$2e,$2e,$2e,$2e,$2e,$2e,$2e
|
1470 |
|
|
00FFE647 02E
|
1471 |
|
|
00FFE648 02E02E02E02E02E02E02E fcb $2e,$2e,$2e,$2e,$2e,$2e,$2e,$2e
|
1472 |
|
|
00FFE64F 02E
|
1473 |
|
|
00FFE650 02E02E02E02E02E02E02E fcb $2e,$2e,$2e,$2e,$2e,$2e,$2e,$2e
|
1474 |
|
|
00FFE657 02E
|
1475 |
|
|
00FFE658 02E02E02E02E02E02E02E fcb $2e,$2e,$2e,$2e,$2e,$2e,$2e,$2e
|
1476 |
|
|
00FFE65F 02E
|
1477 |
|
|
00FFE660 02E02E02E02E02E02E02E fcb $2e,$2e,$2e,$2e,$2e,$2e,$2e,$2e
|
1478 |
|
|
00FFE667 02E
|
1479 |
|
|
00FFE668 02E02E02E02E02E02E02E fcb $2e,$2e,$2e,$2e,$2e,$2e,$2e,$2e
|
1480 |
|
|
00FFE66F 02E
|
1481 |
|
|
00FFE670 02E02E02E02E02E02E02E fcb $2e,$2e,$2e,$2e,$2e,$2e,$2e,$2e
|
1482 |
|
|
00FFE677 02E
|
1483 |
|
|
00FFE678 02E02E0FA02E02E02E02E fcb $2e,$2e,$fa,$2e,$2e,$2e,$2e,$2e
|
1484 |
|
|
00FFE67F 02E
|
1485 |
4 |
robfinch |
|
1486 |
|
|
shiftedScanCodes:
|
1487 |
13 |
robfinch |
00FFE680 02E02E02E02E02E02E02E fcb $2e,$2e,$2e,$2e,$2e,$2e,$2e,$2e
|
1488 |
|
|
00FFE687 02E
|
1489 |
|
|
00FFE688 02E02E02E02E02E00907E fcb $2e,$2e,$2e,$2e,$2e,$09,$7e,$2e
|
1490 |
|
|
00FFE68F 02E
|
1491 |
|
|
00FFE690 02E02E02E02E02E051021 fcb $2e,$2e,$2e,$2e,$2e,$51,$21,$2e
|
1492 |
|
|
00FFE697 02E
|
1493 |
|
|
00FFE698 02E02E05A053041057040 fcb $2e,$2e,$5a,$53,$41,$57,$40,$2e
|
1494 |
|
|
00FFE69F 02E
|
1495 |
|
|
00FFE6A0 02E043058044045024023 fcb $2e,$43,$58,$44,$45,$24,$23,$2e
|
1496 |
|
|
00FFE6A7 02E
|
1497 |
|
|
00FFE6A8 02E020056046054052025 fcb $2e,$20,$56,$46,$54,$52,$25,$2e
|
1498 |
|
|
00FFE6AF 02E
|
1499 |
|
|
00FFE6B0 02E04E04204804705905E fcb $2e,$4e,$42,$48,$47,$59,$5e,$2e
|
1500 |
|
|
00FFE6B7 02E
|
1501 |
|
|
00FFE6B8 02E02E04D04A05502602A fcb $2e,$2e,$4d,$4a,$55,$26,$2a,$2e
|
1502 |
|
|
00FFE6BF 02E
|
1503 |
|
|
00FFE6C0 02E03C04B04904F029028 fcb $2e,$3c,$4b,$49,$4f,$29,$28,$2e
|
1504 |
|
|
00FFE6C7 02E
|
1505 |
|
|
00FFE6C8 02E03E03F04C03A05005F fcb $2e,$3e,$3f,$4c,$3a,$50,$5f,$2e
|
1506 |
|
|
00FFE6CF 02E
|
1507 |
|
|
00FFE6D0 02E02E02202E07B02B02E fcb $2e,$2e,$22,$2e,$7b,$2b,$2e,$2e
|
1508 |
|
|
00FFE6D7 02E
|
1509 |
|
|
00FFE6D8 02E02E00D07D02E07C02E fcb $2e,$2e,$0d,$7d,$2e,$7c,$2e,$2e
|
1510 |
|
|
00FFE6DF 02E
|
1511 |
|
|
00FFE6E0 02E02E02E02E02E02E008 fcb $2e,$2e,$2e,$2e,$2e,$2e,$08,$2e
|
1512 |
|
|
00FFE6E7 02E
|
1513 |
|
|
00FFE6E8 02E02E02E02E02E02E02E fcb $2e,$2e,$2e,$2e,$2e,$2e,$2e,$2e
|
1514 |
|
|
00FFE6EF 02E
|
1515 |
|
|
00FFE6F0 02E07F02E02E02E02E01B fcb $2e,$7f,$2e,$2e,$2e,$2e,$1b,$2e
|
1516 |
|
|
00FFE6F7 02E
|
1517 |
|
|
00FFE6F8 02E02E02E02E02E02E02E fcb $2e,$2e,$2e,$2e,$2e,$2e,$2e,$2e
|
1518 |
|
|
00FFE6FF 02E
|
1519 |
4 |
robfinch |
|
1520 |
13 |
robfinch |
00FFE700 02E02E02E02E02E02E02E fcb $2e,$2e,$2e,$2e,$2e,$2e,$2e,$2e
|
1521 |
|
|
00FFE707 02E
|
1522 |
|
|
00FFE708 02E02E02E02E02E02E02E fcb $2e,$2e,$2e,$2e,$2e,$2e,$2e,$2e
|
1523 |
|
|
00FFE70F 02E
|
1524 |
|
|
00FFE710 02E02E02E02E02E02E02E fcb $2e,$2e,$2e,$2e,$2e,$2e,$2e,$2e
|
1525 |
|
|
00FFE717 02E
|
1526 |
|
|
00FFE718 02E02E02E02E02E02E02E fcb $2e,$2e,$2e,$2e,$2e,$2e,$2e,$2e
|
1527 |
|
|
00FFE71F 02E
|
1528 |
|
|
00FFE720 02E02E02E02E02E02E02E fcb $2e,$2e,$2e,$2e,$2e,$2e,$2e,$2e
|
1529 |
|
|
00FFE727 02E
|
1530 |
|
|
00FFE728 02E02E02E02E02E02E02E fcb $2e,$2e,$2e,$2e,$2e,$2e,$2e,$2e
|
1531 |
|
|
00FFE72F 02E
|
1532 |
|
|
00FFE730 02E02E02E02E02E02E02E fcb $2e,$2e,$2e,$2e,$2e,$2e,$2e,$2e
|
1533 |
|
|
00FFE737 02E
|
1534 |
|
|
00FFE738 02E02E02E02E02E02E02E fcb $2e,$2e,$2e,$2e,$2e,$2e,$2e,$2e
|
1535 |
|
|
00FFE73F 02E
|
1536 |
|
|
00FFE740 02E02E02E02E02E02E02E fcb $2e,$2e,$2e,$2e,$2e,$2e,$2e,$2e
|
1537 |
|
|
00FFE747 02E
|
1538 |
|
|
00FFE748 02E02E02E02E02E02E02E fcb $2e,$2e,$2e,$2e,$2e,$2e,$2e,$2e
|
1539 |
|
|
00FFE74F 02E
|
1540 |
|
|
00FFE750 02E02E02E02E02E02E02E fcb $2e,$2e,$2e,$2e,$2e,$2e,$2e,$2e
|
1541 |
|
|
00FFE757 02E
|
1542 |
|
|
00FFE758 02E02E02E02E02E02E02E fcb $2e,$2e,$2e,$2e,$2e,$2e,$2e,$2e
|
1543 |
|
|
00FFE75F 02E
|
1544 |
|
|
00FFE760 02E02E02E02E02E02E02E fcb $2e,$2e,$2e,$2e,$2e,$2e,$2e,$2e
|
1545 |
|
|
00FFE767 02E
|
1546 |
|
|
00FFE768 02E02E02E02E02E02E02E fcb $2e,$2e,$2e,$2e,$2e,$2e,$2e,$2e
|
1547 |
|
|
00FFE76F 02E
|
1548 |
|
|
00FFE770 02E02E02E02E02E02E02E fcb $2e,$2e,$2e,$2e,$2e,$2e,$2e,$2e
|
1549 |
|
|
00FFE777 02E
|
1550 |
|
|
00FFE778 02E02E02E02E02E02E02E fcb $2e,$2e,$2e,$2e,$2e,$2e,$2e,$2e
|
1551 |
|
|
00FFE77F 02E
|
1552 |
4 |
robfinch |
|
1553 |
|
|
; control
|
1554 |
|
|
keybdControlCodes:
|
1555 |
13 |
robfinch |
00FFE780 02E02E02E02E02E02E02E fcb $2e,$2e,$2e,$2e,$2e,$2e,$2e,$2e
|
1556 |
|
|
00FFE787 02E
|
1557 |
|
|
00FFE788 02E02E02E02E02E00907E fcb $2e,$2e,$2e,$2e,$2e,$09,$7e,$2e
|
1558 |
|
|
00FFE78F 02E
|
1559 |
|
|
00FFE790 02E02E02E02E02E011021 fcb $2e,$2e,$2e,$2e,$2e,$11,$21,$2e
|
1560 |
|
|
00FFE797 02E
|
1561 |
|
|
00FFE798 02E02E01A013001017040 fcb $2e,$2e,$1a,$13,$01,$17,$40,$2e
|
1562 |
|
|
00FFE79F 02E
|
1563 |
|
|
00FFE7A0 02E003018004005024023 fcb $2e,$03,$18,$04,$05,$24,$23,$2e
|
1564 |
|
|
00FFE7A7 02E
|
1565 |
|
|
00FFE7A8 02E020016006014012025 fcb $2e,$20,$16,$06,$14,$12,$25,$2e
|
1566 |
|
|
00FFE7AF 02E
|
1567 |
|
|
00FFE7B0 02E00E00200800701905E fcb $2e,$0e,$02,$08,$07,$19,$5e,$2e
|
1568 |
|
|
00FFE7B7 02E
|
1569 |
|
|
00FFE7B8 02E02E00D00A01502602A fcb $2e,$2e,$0d,$0a,$15,$26,$2a,$2e
|
1570 |
|
|
00FFE7BF 02E
|
1571 |
|
|
00FFE7C0 02E03C00B00900F029028 fcb $2e,$3c,$0b,$09,$0f,$29,$28,$2e
|
1572 |
|
|
00FFE7C7 02E
|
1573 |
|
|
00FFE7C8 02E03E03F00C03A01005F fcb $2e,$3e,$3f,$0c,$3a,$10,$5f,$2e
|
1574 |
|
|
00FFE7CF 02E
|
1575 |
|
|
00FFE7D0 02E02E02202E07B02B02E fcb $2e,$2e,$22,$2e,$7b,$2b,$2e,$2e
|
1576 |
|
|
00FFE7D7 02E
|
1577 |
|
|
00FFE7D8 02E02E00D07D02E07C02E fcb $2e,$2e,$0d,$7d,$2e,$7c,$2e,$2e
|
1578 |
|
|
00FFE7DF 02E
|
1579 |
|
|
00FFE7E0 02E02E02E02E02E02E008 fcb $2e,$2e,$2e,$2e,$2e,$2e,$08,$2e
|
1580 |
|
|
00FFE7E7 02E
|
1581 |
|
|
00FFE7E8 02E02E02E02E02E02E02E fcb $2e,$2e,$2e,$2e,$2e,$2e,$2e,$2e
|
1582 |
|
|
00FFE7EF 02E
|
1583 |
|
|
00FFE7F0 02E07F02E02E02E02E01B fcb $2e,$7f,$2e,$2e,$2e,$2e,$1b,$2e
|
1584 |
|
|
00FFE7F7 02E
|
1585 |
|
|
00FFE7F8 02E02E02E02E02E02E02E fcb $2e,$2e,$2e,$2e,$2e,$2e,$2e,$2e
|
1586 |
|
|
00FFE7FF 02E
|
1587 |
4 |
robfinch |
|
1588 |
|
|
keybdExtendedCodes:
|
1589 |
13 |
robfinch |
00FFE800 02E02E02E02E0A30A10A2 fcb $2e,$2e,$2e,$2e,$a3,$a1,$a2,$2e
|
1590 |
|
|
00FFE807 02E
|
1591 |
|
|
00FFE808 02E02E02E02E02E02E02E fcb $2e,$2e,$2e,$2e,$2e,$2e,$2e,$2e
|
1592 |
|
|
00FFE80F 02E
|
1593 |
|
|
00FFE810 02E02E02E02E02E02E02E fcb $2e,$2e,$2e,$2e,$2e,$2e,$2e,$2e
|
1594 |
|
|
00FFE817 02E
|
1595 |
|
|
00FFE818 02E02E02E02E02E02E02E fcb $2e,$2e,$2e,$2e,$2e,$2e,$2e,$2e
|
1596 |
|
|
00FFE81F 02E
|
1597 |
|
|
00FFE820 02E02E02E02E02E02E02E fcb $2e,$2e,$2e,$2e,$2e,$2e,$2e,$2e
|
1598 |
|
|
00FFE827 02E
|
1599 |
|
|
00FFE828 02E02E02E02E02E02E02E fcb $2e,$2e,$2e,$2e,$2e,$2e,$2e,$2e
|
1600 |
|
|
00FFE82F 02E
|
1601 |
|
|
00FFE830 02E02E02E02E02E02E02E fcb $2e,$2e,$2e,$2e,$2e,$2e,$2e,$2e
|
1602 |
|
|
00FFE837 02E
|
1603 |
|
|
00FFE838 02E02E02E02E02E02E02E fcb $2e,$2e,$2e,$2e,$2e,$2e,$2e,$2e
|
1604 |
|
|
00FFE83F 02E
|
1605 |
|
|
00FFE840 02E02E02E02E02E02E02E fcb $2e,$2e,$2e,$2e,$2e,$2e,$2e,$2e
|
1606 |
|
|
00FFE847 02E
|
1607 |
|
|
00FFE848 02E02E02E02E02E02E02E fcb $2e,$2e,$2e,$2e,$2e,$2e,$2e,$2e
|
1608 |
|
|
00FFE84F 02E
|
1609 |
|
|
00FFE850 02E02E02E02E02E02E02E fcb $2e,$2e,$2e,$2e,$2e,$2e,$2e,$2e
|
1610 |
|
|
00FFE857 02E
|
1611 |
|
|
00FFE858 02E02E02E02E02E02E02E fcb $2e,$2e,$2e,$2e,$2e,$2e,$2e,$2e
|
1612 |
|
|
00FFE85F 02E
|
1613 |
|
|
00FFE860 02E02E02E02E02E02E02E fcb $2e,$2e,$2e,$2e,$2e,$2e,$2e,$2e
|
1614 |
|
|
00FFE867 02E
|
1615 |
|
|
00FFE868 02E09502E09309402E02E fcb $2e,$95,$2e,$93,$94,$2e,$2e,$2e
|
1616 |
|
|
00FFE86F 02E
|
1617 |
|
|
00FFE870 09809909202E09109002E fcb $98,$99,$92,$2e,$91,$90,$2e,$2e
|
1618 |
|
|
00FFE877 02E
|
1619 |
|
|
00FFE878 02E02E09702E02E09602E fcb $2e,$2e,$97,$2e,$2e,$96,$2e,$2e
|
1620 |
|
|
00FFE87F 02E
|
1621 |
4 |
robfinch |
|
1622 |
|
|
; ============================================================================
|
1623 |
|
|
; __
|
1624 |
|
|
; \\__/ o\ (C) 2013-2022 Robert Finch, Waterloo
|
1625 |
|
|
; \ __ / All rights reserved.
|
1626 |
|
|
; \/_// robfinch@opencores.org
|
1627 |
|
|
; ||
|
1628 |
|
|
;
|
1629 |
|
|
;
|
1630 |
|
|
; Keyboard driver routines to interface to a PS2 style keyboard
|
1631 |
|
|
; Converts the scancode to ascii
|
1632 |
|
|
;
|
1633 |
|
|
; This source file is free software: you can redistribute it and/or modify
|
1634 |
|
|
; it under the terms of the GNU Lesser General Public License as published
|
1635 |
|
|
; by the Free Software Foundation, either version 3 of the License, or
|
1636 |
|
|
; (at your option) any later version.
|
1637 |
|
|
;
|
1638 |
|
|
; This source file is distributed in the hope that it will be useful,
|
1639 |
|
|
; but WITHOUT ANY WARRANTY; without even the implied warranty of
|
1640 |
|
|
; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
1641 |
|
|
; GNU General Public License for more details.
|
1642 |
|
|
;
|
1643 |
|
|
; You should have received a copy of the GNU General Public License
|
1644 |
|
|
; along with this program. If not, see .
|
1645 |
|
|
;
|
1646 |
|
|
; ============================================================================
|
1647 |
|
|
;
|
1648 |
|
|
SC_F12 EQU $07
|
1649 |
|
|
SC_C EQU $21
|
1650 |
|
|
SC_T EQU $2C
|
1651 |
|
|
SC_Z EQU $1A
|
1652 |
|
|
SC_DEL EQU $71 ; extend
|
1653 |
|
|
SC_KEYUP EQU $F0 ; should be $f0
|
1654 |
|
|
SC_EXTEND EQU $E0
|
1655 |
|
|
SC_CTRL EQU $14
|
1656 |
|
|
SC_RSHIFT EQU $59
|
1657 |
|
|
SC_NUMLOCK EQU $77
|
1658 |
|
|
SC_SCROLLLOCK EQU $7E
|
1659 |
|
|
SC_CAPSLOCK EQU $58
|
1660 |
|
|
SC_ALT EQU $11
|
1661 |
|
|
|
1662 |
|
|
;#define SC_LSHIFT EQU $12
|
1663 |
|
|
;SC_DEL EQU $71 ; extend
|
1664 |
|
|
;SC_LCTRL EQU $58
|
1665 |
|
|
|
1666 |
|
|
SC_TAB EQU $0D
|
1667 |
|
|
|
1668 |
|
|
; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
1669 |
|
|
; Recieve a byte from the keyboard, used after a command is sent to the
|
1670 |
|
|
; keyboard in order to wait for a response.
|
1671 |
|
|
;
|
1672 |
|
|
; Parameters: none
|
1673 |
|
|
; Returns: accd = recieved byte ($00 to $FF), -1 on timeout
|
1674 |
|
|
; Modifies: acc
|
1675 |
|
|
; Stack Space: 2 words
|
1676 |
|
|
; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
1677 |
|
|
|
1678 |
|
|
KeybdRecvByte:
|
1679 |
13 |
robfinch |
00FFE880 034010 pshs x
|
1680 |
|
|
00FFE882 08E000064 ldx #100 ; wait up to 1s
|
1681 |
4 |
robfinch |
krb3:
|
1682 |
13 |
robfinch |
00FFE885 08D05A bsr KeybdGetStatus ; wait for response from keyboard
|
1683 |
|
|
00FFE887 05D tstb
|
1684 |
|
|
00FFE888 02B00B bmi krb4 ; is input buffer full ? yes, branch
|
1685 |
|
|
00FFE88A 08D02D bsr Wait10ms ; wait a bit
|
1686 |
|
|
00FFE88C 0301FF dex
|
1687 |
|
|
00FFE88E 026FF5 bne krb3 ; go back and try again
|
1688 |
|
|
00FFE890 0CCFFFFFF ldd #-1 ; return -1
|
1689 |
|
|
00FFE893 035090 puls x,pc
|
1690 |
4 |
robfinch |
krb4:
|
1691 |
13 |
robfinch |
00FFE895 08D066 bsr KeybdGetScancode
|
1692 |
|
|
00FFE897 035090 puls x,pc
|
1693 |
4 |
robfinch |
|
1694 |
|
|
; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
1695 |
|
|
; Send a byte to the keyboard.
|
1696 |
|
|
;
|
1697 |
|
|
; Parameters: accb byte to send
|
1698 |
|
|
; Returns: none
|
1699 |
|
|
; Modifies: none
|
1700 |
|
|
; Stack Space: 0 words
|
1701 |
|
|
; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
1702 |
|
|
|
1703 |
|
|
KeybdSendByte:
|
1704 |
13 |
robfinch |
00FFE899 0150F7FFFE30400 stb KEYBD
|
1705 |
|
|
00FFE89E 039 rts
|
1706 |
4 |
robfinch |
|
1707 |
|
|
; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
1708 |
|
|
; Wait until the keyboard transmit is complete
|
1709 |
|
|
;
|
1710 |
|
|
; Parameters: none
|
1711 |
|
|
; Returns: r1 = 0 if successful, r1 = -1 timeout
|
1712 |
|
|
; Modifies: r1
|
1713 |
|
|
; Stack Space: 3 words
|
1714 |
|
|
; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
1715 |
|
|
|
1716 |
|
|
KeybdWaitTx:
|
1717 |
13 |
robfinch |
00FFE89F 034010 pshs x
|
1718 |
|
|
00FFE8A1 08E000064 ldx #100 ; wait a max of 1s
|
1719 |
4 |
robfinch |
kwt1:
|
1720 |
13 |
robfinch |
00FFE8A4 08D03B bsr KeybdGetStatus
|
1721 |
|
|
00FFE8A6 0C4040 andb #$40 ; check for transmit complete bit; branch if bit set
|
1722 |
|
|
00FFE8A8 02600B bne kwt2
|
1723 |
|
|
00FFE8AA 08D00D bsr Wait10ms ; delay a little bit
|
1724 |
|
|
00FFE8AC 0301FF dex
|
1725 |
|
|
00FFE8AE 026FF4 bne kwt1 ; go back and try again
|
1726 |
|
|
00FFE8B0 0CCFFFFFF ldd #-1 ; timed out, return -1
|
1727 |
|
|
00FFE8B3 035090 puls x,pc
|
1728 |
4 |
robfinch |
kwt2:
|
1729 |
13 |
robfinch |
00FFE8B5 04F clra ; wait complete, return 0
|
1730 |
|
|
00FFE8B6 05F clrb
|
1731 |
|
|
00FFE8B7 035090 puls x,pc
|
1732 |
4 |
robfinch |
|
1733 |
|
|
; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
1734 |
|
|
; Wait for 10 ms
|
1735 |
|
|
;
|
1736 |
|
|
; Parameters: none
|
1737 |
|
|
; Returns: none
|
1738 |
|
|
; Modifies: none
|
1739 |
|
|
; Stack Space: 2 words
|
1740 |
|
|
; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
1741 |
|
|
|
1742 |
|
|
Wait10ms:
|
1743 |
13 |
robfinch |
00FFE8B9 034006 pshs d
|
1744 |
|
|
00FFE8BB 0150B6FFFFFFFE7 lda MSCOUNT+3
|
1745 |
4 |
robfinch |
W10_0001:
|
1746 |
13 |
robfinch |
00FFE8C0 01F089 tfr a,b
|
1747 |
|
|
00FFE8C2 0150F0FFFFFFFE7 subb MSCOUNT+3
|
1748 |
|
|
00FFE8C7 0C1FFA cmpb #$FFA
|
1749 |
|
|
00FFE8C9 022FF5 bhi W10_0001
|
1750 |
|
|
00FFE8CB 035086 puls d,pc
|
1751 |
4 |
robfinch |
|
1752 |
|
|
; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
1753 |
|
|
; Wait for 300 ms (256 ms)
|
1754 |
|
|
;
|
1755 |
|
|
; Parameters: none
|
1756 |
|
|
; Returns: none
|
1757 |
|
|
; Modifies: none
|
1758 |
|
|
; Stack Space: 2 words
|
1759 |
|
|
; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
1760 |
|
|
|
1761 |
|
|
Wait300ms:
|
1762 |
13 |
robfinch |
00FFE8CD 034006 pshs d
|
1763 |
|
|
00FFE8CF 0150B6FFFFFFFE7 lda MSCOUNT+3
|
1764 |
4 |
robfinch |
W300_0001:
|
1765 |
13 |
robfinch |
00FFE8D4 01F089 tfr a,b
|
1766 |
|
|
00FFE8D6 0150F0FFFFFFFE7 subb MSCOUNT+3
|
1767 |
|
|
00FFE8DB 0C1F00 cmpb #$F00
|
1768 |
|
|
00FFE8DD 022FF5 bhi W300_0001
|
1769 |
|
|
00FFE8DF 035086 puls d,pc
|
1770 |
4 |
robfinch |
|
1771 |
|
|
; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
1772 |
|
|
; Get the keyboard status
|
1773 |
|
|
;
|
1774 |
|
|
; Parameters: none
|
1775 |
|
|
; Returns: d = status
|
1776 |
|
|
; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
1777 |
|
|
|
1778 |
|
|
KeybdGetStatus:
|
1779 |
|
|
kbgs3:
|
1780 |
13 |
robfinch |
00FFE8E1 0150F6FFFE30401 ldb KEYBD+1
|
1781 |
|
|
00FFE8E6 0C5080 bitb #$80
|
1782 |
|
|
00FFE8E8 02600E bne kbgs1
|
1783 |
|
|
00FFE8EA 0C5001 bitb #$01 ; check parity error flag
|
1784 |
|
|
00FFE8EC 026002 bne kbgs2
|
1785 |
|
|
00FFE8EE 04F clra
|
1786 |
|
|
00FFE8EF 039 rts
|
1787 |
4 |
robfinch |
kbgs2:
|
1788 |
13 |
robfinch |
00FFE8F0 0C60FE ldb #$FE ; request resend
|
1789 |
|
|
00FFE8F2 08DFA5 bsr KeybdSendByte
|
1790 |
|
|
00FFE8F4 08DFA9 bsr KeybdWaitTx
|
1791 |
|
|
00FFE8F6 020FE9 bra kbgs3
|
1792 |
4 |
robfinch |
kbgs1: ; return negative status
|
1793 |
13 |
robfinch |
00FFE8F8 0CAF00 orb #$F00
|
1794 |
|
|
00FFE8FA 086FFF lda #-1
|
1795 |
|
|
00FFE8FC 039 rts
|
1796 |
4 |
robfinch |
|
1797 |
|
|
; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
1798 |
|
|
; Get the scancode from the keyboard port
|
1799 |
|
|
;
|
1800 |
|
|
; Parameters: none
|
1801 |
|
|
; Returns: acca = scancode
|
1802 |
|
|
; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
1803 |
|
|
|
1804 |
|
|
KeybdGetScancode:
|
1805 |
13 |
robfinch |
00FFE8FD 04F clra
|
1806 |
|
|
00FFE8FE 0150F6FFFE30400 ldb KEYBD ; get the scan code
|
1807 |
|
|
00FFE903 01507FFFFE30401 clr KEYBD+1 ; clear receive register (write $00 to status reg)
|
1808 |
|
|
00FFE908 039 rts
|
1809 |
4 |
robfinch |
|
1810 |
|
|
; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
1811 |
|
|
; Set the LEDs on the keyboard.
|
1812 |
|
|
;
|
1813 |
|
|
; Parameters: d LED status to set
|
1814 |
|
|
; Returns: none
|
1815 |
|
|
; Modifies: none
|
1816 |
|
|
; Stack Space: 2 words
|
1817 |
|
|
; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
1818 |
|
|
|
1819 |
|
|
KeybdSetLED:
|
1820 |
13 |
robfinch |
00FFE909 034004 pshs b
|
1821 |
|
|
00FFE90B 0C60ED ldb #$ED ; set LEDs command
|
1822 |
|
|
00FFE90D 08DF8A bsr KeybdSendByte
|
1823 |
|
|
00FFE90F 08DF8E bsr KeybdWaitTx
|
1824 |
|
|
00FFE911 08DF6D bsr KeybdRecvByte ; should be an ack
|
1825 |
|
|
00FFE913 035004 puls b
|
1826 |
|
|
00FFE915 08DF82 bsr KeybdSendByte
|
1827 |
|
|
00FFE917 08DF86 bsr KeybdWaitTx
|
1828 |
|
|
00FFE919 08DF65 bsr KeybdRecvByte ; should be an ack
|
1829 |
|
|
00FFE91B 039 rts
|
1830 |
4 |
robfinch |
|
1831 |
|
|
; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
1832 |
|
|
; Get ID - get the keyboards identifier code.
|
1833 |
|
|
;
|
1834 |
|
|
; Parameters: none
|
1835 |
|
|
; Returns: d = $AB83, $00 on fail
|
1836 |
|
|
; Modifies: d, KeybdID updated
|
1837 |
|
|
; Stack Space: 2 words
|
1838 |
|
|
; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
1839 |
|
|
|
1840 |
|
|
KeybdGetID:
|
1841 |
13 |
robfinch |
00FFE91C 0C60F2 ldb #$F2
|
1842 |
|
|
00FFE91E 08DF79 bsr KeybdSendByte
|
1843 |
|
|
00FFE920 08DF7D bsr KeybdWaitTx
|
1844 |
|
|
00FFE922 08DF5C bsr KeybdRecvByte
|
1845 |
|
|
00FFE924 0C5080 bitb #$80
|
1846 |
|
|
00FFE926 026014 bne kgnotKbd
|
1847 |
|
|
00FFE928 0C10AB cmpb #$AB
|
1848 |
|
|
00FFE92A 026010 bne kgnotKbd
|
1849 |
|
|
00FFE92C 08DF52 bsr KeybdRecvByte
|
1850 |
|
|
00FFE92E 0C5080 bitb #$80
|
1851 |
|
|
00FFE930 02600A bne kgnotKbd
|
1852 |
|
|
00FFE932 0C1083 cmpb #$83
|
1853 |
|
|
00FFE934 026006 bne kgnotKbd
|
1854 |
|
|
00FFE936 0CC00AB83 ldd #$AB83
|
1855 |
4 |
robfinch |
kgid1:
|
1856 |
13 |
robfinch |
00FFE939 0DD124 std KeybdID
|
1857 |
|
|
00FFE93B 039 rts
|
1858 |
4 |
robfinch |
kgnotKbd:
|
1859 |
13 |
robfinch |
00FFE93C 04F clra
|
1860 |
|
|
00FFE93D 05F clrb
|
1861 |
|
|
00FFE93E 020FF9 bra kgid1
|
1862 |
4 |
robfinch |
|
1863 |
|
|
; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
1864 |
|
|
; Initialize the keyboard.
|
1865 |
|
|
;
|
1866 |
|
|
; Parameters:
|
1867 |
|
|
; none
|
1868 |
|
|
; Modifies:
|
1869 |
|
|
; none
|
1870 |
|
|
; Returns:
|
1871 |
|
|
; none
|
1872 |
|
|
; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
1873 |
|
|
|
1874 |
|
|
KeybdInit:
|
1875 |
13 |
robfinch |
00FFE940 034026 pshs d,y
|
1876 |
|
|
00FFE942 18E000005 ldy #5
|
1877 |
|
|
00FFE945 00F120 clr KeyState1 ; records key up/down state
|
1878 |
|
|
00FFE947 00F121 clr KeyState2 ; records shift,ctrl,alt state
|
1879 |
4 |
robfinch |
kbdi0002:
|
1880 |
13 |
robfinch |
00FFE949 08DF6E bsr Wait10ms
|
1881 |
|
|
00FFE94B 01507FFFFE30401 clr KEYBD+1 ; clear receive register (write $00 to status reg)
|
1882 |
|
|
00FFE950 0C6FFF ldb #-1 ; send reset code to keyboard
|
1883 |
|
|
00FFE952 0150F7FFFE30401 stb KEYBD+1 ; write $FF to status reg to clear TX state
|
1884 |
|
|
00FFE957 08DF40 bsr KeybdSendByte ; now write to transmit register
|
1885 |
|
|
00FFE959 08DF44 bsr KeybdWaitTx ; wait until no longer busy
|
1886 |
|
|
00FFE95B 08DF23 bsr KeybdRecvByte ; look for an ACK ($FA)
|
1887 |
|
|
00FFE95D 0C10FA cmpb #$FA
|
1888 |
|
|
00FFE95F 026021 bne kbdiTryAgain
|
1889 |
|
|
00FFE961 08DF1D bsr KeybdRecvByte ; look for BAT completion code ($AA)
|
1890 |
|
|
00FFE963 0C10FC cmpb #$FC ; reset error ?
|
1891 |
|
|
00FFE965 02701B beq kbdiTryAgain
|
1892 |
|
|
00FFE967 0C10AA cmpb #$AA ; reset complete okay ?
|
1893 |
|
|
00FFE969 026017 bne kbdiTryAgain
|
1894 |
4 |
robfinch |
|
1895 |
|
|
; After a reset, scan code set #2 should be active
|
1896 |
|
|
.config:
|
1897 |
13 |
robfinch |
00FFE96B 0C60F0 ldb #$F0 ; send scan code select
|
1898 |
|
|
00FFE96D 0150F7FFFE60001 stb LEDS
|
1899 |
|
|
00FFE972 08DF25 bsr KeybdSendByte
|
1900 |
|
|
00FFE974 08DF29 bsr KeybdWaitTx
|
1901 |
|
|
00FFE976 05D tstb
|
1902 |
|
|
00FFE977 02B009 bmi kbdiTryAgain
|
1903 |
|
|
00FFE979 08DF05 bsr KeybdRecvByte ; wait for response from keyboard
|
1904 |
|
|
00FFE97B 04D tsta
|
1905 |
|
|
00FFE97C 02B004 bmi kbdiTryAgain
|
1906 |
|
|
00FFE97E 0C10FA cmpb #$FA ; ACK
|
1907 |
|
|
00FFE980 02700C beq kbdi0004
|
1908 |
4 |
robfinch |
kbdiTryAgain:
|
1909 |
13 |
robfinch |
00FFE982 0313FF dey
|
1910 |
|
|
00FFE984 026FC3 bne kbdi0002
|
1911 |
4 |
robfinch |
.keybdErr:
|
1912 |
13 |
robfinch |
00FFE986 0CCFFE9AE ldd #msgBadKeybd
|
1913 |
14 |
robfinch |
00FFE989 017FFFA41 lbsr DisplayStringCRLF
|
1914 |
4 |
robfinch |
*** warning 1: Long branch within short branch range could be optimized
|
1915 |
13 |
robfinch |
00FFE98C 020014 bra ledxit
|
1916 |
4 |
robfinch |
kbdi0004:
|
1917 |
13 |
robfinch |
00FFE98E 0C6002 ldb #2 ; select scan code set #2
|
1918 |
|
|
00FFE990 08DF07 bsr KeybdSendByte
|
1919 |
|
|
00FFE992 08DF0B bsr KeybdWaitTx
|
1920 |
|
|
00FFE994 05D tstb
|
1921 |
|
|
00FFE995 02BFEB bmi kbdiTryAgain
|
1922 |
|
|
00FFE997 08DEE7 bsr KeybdRecvByte ; wait for response from keyboard
|
1923 |
|
|
00FFE999 04D tsta
|
1924 |
|
|
00FFE99A 02BFE6 bmi kbdiTryAgain
|
1925 |
|
|
00FFE99C 0C10FA cmpb #$FA
|
1926 |
|
|
00FFE99E 026FE2 bne kbdiTryAgain
|
1927 |
|
|
00FFE9A0 08DF7A bsr KeybdGetID
|
1928 |
4 |
robfinch |
ledxit:
|
1929 |
13 |
robfinch |
00FFE9A2 0C6007 ldb #$07
|
1930 |
|
|
00FFE9A4 08DF63 bsr KeybdSetLED
|
1931 |
|
|
00FFE9A6 08DF25 bsr Wait300ms
|
1932 |
|
|
00FFE9A8 0C6000 ldb #$00
|
1933 |
|
|
00FFE9AA 08DF5D bsr KeybdSetLED
|
1934 |
|
|
00FFE9AC 0350A6 puls d,y,pc
|
1935 |
4 |
robfinch |
|
1936 |
|
|
msgBadKeybd:
|
1937 |
13 |
robfinch |
00FFE9AE 04B06507906206F061072 fcb "Keyboard error",0
|
1938 |
|
|
00FFE9B5 06402006507207206F072
|
1939 |
|
|
00FFE9BC 000
|
1940 |
4 |
robfinch |
|
1941 |
13 |
robfinch |
;------------------------------------------------------------------------------
|
1942 |
|
|
; Calculate number of character in input buffer
|
1943 |
|
|
;
|
1944 |
|
|
; Parameters:
|
1945 |
|
|
; y = $Cn00000 where n is core id
|
1946 |
|
|
; Returns:
|
1947 |
|
|
; d = number of bytes in buffer.
|
1948 |
|
|
;------------------------------------------------------------------------------
|
1949 |
|
|
|
1950 |
|
|
kbdRcvCount:
|
1951 |
|
|
00FFE9BD 04F clra
|
1952 |
|
|
00FFE9BE 0E6A08128 ldb kbdTailRcv,y
|
1953 |
|
|
00FFE9C1 0E0A08127 subb kbdHeadRcv,y
|
1954 |
|
|
00FFE9C4 02C008 bge krcXit
|
1955 |
|
|
00FFE9C6 0C6040 ldb #$40
|
1956 |
|
|
00FFE9C8 0E0A08127 subb kbdHeadRcv,y
|
1957 |
|
|
00FFE9CB 0EBA08128 addb kbdTailRcv,y
|
1958 |
|
|
krcXit:
|
1959 |
|
|
00FFE9CE 039 rts
|
1960 |
|
|
|
1961 |
|
|
|
1962 |
4 |
robfinch |
; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
1963 |
|
|
; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
1964 |
|
|
|
1965 |
13 |
robfinch |
KeybdIRQ:
|
1966 |
|
|
00FFE9CF 0150B6FFFE30401 lda KEYBD+1 ; check status
|
1967 |
|
|
00FFE9D4 085080 bita #$80 ; was key pressed?
|
1968 |
|
|
00FFE9D6 027034 beq notKbdIRQ ; if not, exit
|
1969 |
|
|
00FFE9D8 0150F6FFFE30400 ldb KEYBD ; get the scan code
|
1970 |
|
|
00FFE9DD 01507FFFFE30401 clr KEYBD+1 ; clear receive register (write $00 to status reg)
|
1971 |
|
|
00FFE9E2 034004 pshs b ; save it off
|
1972 |
|
|
00FFE9E4 0B6FF0010 lda IOFocusID ; compute core memory address $Cn0000
|
1973 |
|
|
00FFE9E7 05F clrb
|
1974 |
|
|
00FFE9E8 048 asla
|
1975 |
|
|
00FFE9E9 048 asla
|
1976 |
|
|
00FFE9EA 048 asla
|
1977 |
|
|
00FFE9EB 048 asla
|
1978 |
|
|
00FFE9EC 08AC00 ora #$C00 ; address $Cn0000
|
1979 |
|
|
00FFE9EE 01F002 tfr d,y ; y =
|
1980 |
|
|
00FFE9F0 08DFCB bsr kbdRcvCount ; get count of scan codes in buffer
|
1981 |
|
|
00FFE9F2 0C1040 cmpb #64 ; check if buffer full?
|
1982 |
|
|
00FFE9F4 024017 bhs kbdBufFull ; if buffer full, ignore new keystroke
|
1983 |
|
|
00FFE9F6 01F021 tfr y,x ; compute fifo address
|
1984 |
|
|
00FFE9F8 0E6A08128 ldb kbdTailRcv,y ; b = buffer index
|
1985 |
|
|
00FFE9FB 035002 puls a ; get back scancode
|
1986 |
|
|
00FFE9FD 030040 leax kbdFifo,x ; x = base address for fifo
|
1987 |
|
|
00FFE9FF 0A7845 sta b,x ; store in buffer
|
1988 |
|
|
00FFEA01 05C incb ; increment buffer index
|
1989 |
|
|
00FFEA02 0C403F andb #$3f ; wrap around at 64 chars
|
1990 |
|
|
00FFEA04 0E7A08128 stb kbdTailRcv,y ; update it
|
1991 |
|
|
00FFEA07 08601C lda #28 ; Keyboard is IRQ #28
|
1992 |
|
|
00FFEA09 0B7FF0011 sta IrqSource ; stuff a byte indicating the IRQ source for PEEK()
|
1993 |
|
|
notKbdIRQ:
|
1994 |
|
|
00FFEA0C 039 rts
|
1995 |
|
|
kbdBufFull:
|
1996 |
|
|
00FFEA0D 032601 leas 1,s ; get rid of saved scancode
|
1997 |
|
|
00FFEA0F 039 rts
|
1998 |
|
|
|
1999 |
|
|
; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
2000 |
|
|
; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
2001 |
|
|
|
2002 |
4 |
robfinch |
DBGCheckForKey:
|
2003 |
13 |
robfinch |
00FFEA10 020ECF bra KeybdGetStatus
|
2004 |
4 |
robfinch |
|
2005 |
|
|
|
2006 |
|
|
; KeyState2 variable bit meanings
|
2007 |
|
|
;1176543210
|
2008 |
|
|
; ||||||||+ = shift
|
2009 |
|
|
; |||||||+- = alt
|
2010 |
|
|
; ||||||+-- = control
|
2011 |
|
|
; |||||+--- = numlock
|
2012 |
|
|
; ||||+---- = capslock
|
2013 |
|
|
; |||+----- = scrolllock
|
2014 |
|
|
; ||+------ =
|
2015 |
|
|
; |+------- = "
|
2016 |
|
|
; | = "
|
2017 |
|
|
; | = "
|
2018 |
|
|
; | = "
|
2019 |
|
|
; +-------- = extended
|
2020 |
|
|
|
2021 |
|
|
; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
2022 |
13 |
robfinch |
; Keyboard get routine.
|
2023 |
4 |
robfinch |
;
|
2024 |
13 |
robfinch |
; The routine may get characters directly from the scancode input or less
|
2025 |
|
|
; directly from the scancode buffer, if things are interrupt driven.
|
2026 |
|
|
;
|
2027 |
4 |
robfinch |
; Parameters:
|
2028 |
13 |
robfinch |
; b: bit 11 = blocking status 1=blocking, 0=non blocking
|
2029 |
|
|
; b: bit 1 = scancode source 1=scancode buffer, 0=direct
|
2030 |
4 |
robfinch |
; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
2031 |
|
|
|
2032 |
13 |
robfinch |
GetKey:
|
2033 |
|
|
00FFEA12 034030 pshs x,y
|
2034 |
|
|
00FFEA14 0D7126 stb KeybdBlock ; save off blocking status
|
2035 |
4 |
robfinch |
dbgk2:
|
2036 |
13 |
robfinch |
00FFEA16 0D6126 ldb KeybdBlock
|
2037 |
|
|
00FFEA18 034004 pshs b
|
2038 |
|
|
00FFEA1A 0C5001 bitb #1 ; what is the scancode source
|
2039 |
|
|
00FFEA1C 02701A beq dbgk20 ; branch if direct read
|
2040 |
|
|
00FFEA1E 0150B6FFFFFFFE0 lda COREID ; compute core memory address
|
2041 |
|
|
00FFEA23 05F clrb
|
2042 |
|
|
00FFEA24 048 asla
|
2043 |
|
|
00FFEA25 048 asla
|
2044 |
|
|
00FFEA26 048 asla
|
2045 |
|
|
00FFEA27 048 asla
|
2046 |
|
|
00FFEA28 08AC00 ora #$C00
|
2047 |
|
|
00FFEA2A 01F002 tfr d,y ; y = $Cn0000
|
2048 |
|
|
00FFEA2C 08DF8F bsr kbdRcvCount
|
2049 |
|
|
00FFEA2E 05D tstb ; anything in buffer?
|
2050 |
|
|
00FFEA2F 035004 puls b
|
2051 |
|
|
00FFEA31 026018 bne dbgk1 ; branch if something in buffer
|
2052 |
|
|
00FFEA33 05D tstb
|
2053 |
|
|
00FFEA34 02BFE0 bmi dbgk2 ; if no key and blocking - loop
|
2054 |
|
|
00FFEA36 02000E bra dbgk24
|
2055 |
|
|
dbgk20:
|
2056 |
|
|
00FFEA38 18E000000 ldy #0
|
2057 |
|
|
00FFEA3B 08DEA4 bsr KeybdGetStatus
|
2058 |
|
|
00FFEA3D 0C4080 andb #$80 ; is key available?
|
2059 |
|
|
00FFEA3F 035004 puls b
|
2060 |
|
|
00FFEA41 026008 bne dbgk1 ; branch if key
|
2061 |
|
|
00FFEA43 05D tstb ; block?
|
2062 |
|
|
00FFEA44 02BFD0 bmi dbgk2 ; If no key and blocking - loop
|
2063 |
|
|
dbgk24:
|
2064 |
|
|
00FFEA46 0CCFFFFFF ldd #-1 ; return -1 if no block and no key
|
2065 |
|
|
00FFEA49 0350B0 puls x,y,pc
|
2066 |
4 |
robfinch |
dbgk1:
|
2067 |
13 |
robfinch |
00FFEA4B 18C000000 cmpy #0
|
2068 |
|
|
00FFEA4E 026004 bne dbgk22
|
2069 |
|
|
00FFEA50 08DEAB bsr KeybdGetScancode ; get scancode directly
|
2070 |
|
|
00FFEA52 020011 bra dbgk23
|
2071 |
|
|
dbgk22:
|
2072 |
|
|
; Retrieve value from scancode buffer
|
2073 |
|
|
00FFEA54 01F021 tfr y,x
|
2074 |
|
|
00FFEA56 030040 leax kbdFifo,x ; x = fifo address
|
2075 |
|
|
00FFEA58 0E6A08127 ldb kbdHeadRcv,y ; b = buffer index
|
2076 |
|
|
00FFEA5B 0A6A0D lda b,x ; get the scancode
|
2077 |
|
|
00FFEA5D 05C incb ; increment fifo index
|
2078 |
|
|
00FFEA5E 0C403F andb #$3f ; and wrap around
|
2079 |
|
|
00FFEA60 0E7A08127 stb kbdHeadRcv,y ; save it back
|
2080 |
|
|
00FFEA63 01F089 tfr a,b ; the scancode is needed in accb
|
2081 |
|
|
dbgk23:
|
2082 |
4 |
robfinch |
; lbsr DispByteAsHex
|
2083 |
|
|
; Make sure there is a small delay between scancode reads
|
2084 |
13 |
robfinch |
00FFEA65 08E000014 ldx #20
|
2085 |
4 |
robfinch |
dbgk3:
|
2086 |
13 |
robfinch |
00FFEA68 0301FF dex
|
2087 |
|
|
00FFEA6A 026FFC bne dbgk3
|
2088 |
4 |
robfinch |
; switch on scan code
|
2089 |
13 |
robfinch |
00FFEA6C 0C10F0 cmpb #SC_KEYUP
|
2090 |
|
|
00FFEA6E 026004 bne dbgk4
|
2091 |
|
|
00FFEA70 0D7120 stb KeyState1 ; make KeyState1 <> 0
|
2092 |
|
|
00FFEA72 020FA2 bra dbgk2 ; loop back
|
2093 |
4 |
robfinch |
dbgk4:
|
2094 |
13 |
robfinch |
00FFEA74 0C10E0 cmpb #SC_EXTEND
|
2095 |
|
|
00FFEA76 026008 bne dbgk5
|
2096 |
|
|
00FFEA78 096121 lda KeyState2
|
2097 |
|
|
00FFEA7A 08A800 ora #$800
|
2098 |
|
|
00FFEA7C 097121 sta KeyState2
|
2099 |
|
|
00FFEA7E 020F96 bra dbgk2
|
2100 |
4 |
robfinch |
dbgk5:
|
2101 |
13 |
robfinch |
00FFEA80 0C1014 cmpb #SC_CTRL
|
2102 |
|
|
00FFEA82 026016 bne dbgkNotCtrl
|
2103 |
|
|
00FFEA84 00D120 tst KeyState1
|
2104 |
|
|
00FFEA86 026008 bne dbgk7
|
2105 |
|
|
00FFEA88 096121 lda KeyState2
|
2106 |
|
|
00FFEA8A 08A004 ora #4
|
2107 |
|
|
00FFEA8C 097121 sta KeyState2
|
2108 |
|
|
00FFEA8E 020006 bra dbgk8
|
2109 |
4 |
robfinch |
dbgk7:
|
2110 |
13 |
robfinch |
00FFEA90 096121 lda KeyState2
|
2111 |
|
|
00FFEA92 084FFB anda #~4
|
2112 |
|
|
00FFEA94 097121 sta KeyState2
|
2113 |
4 |
robfinch |
dbgk8:
|
2114 |
13 |
robfinch |
00FFEA96 00F120 clr KeyState1
|
2115 |
|
|
00FFEA98 020F7C bra dbgk2
|
2116 |
4 |
robfinch |
dbgkNotCtrl:
|
2117 |
13 |
robfinch |
00FFEA9A 0C1059 cmpb #SC_RSHIFT
|
2118 |
|
|
00FFEA9C 026016 bne dbgkNotRshift
|
2119 |
|
|
00FFEA9E 00D120 tst KeyState1
|
2120 |
|
|
00FFEAA0 026008 bne dbgk9
|
2121 |
|
|
00FFEAA2 096121 lda KeyState2
|
2122 |
|
|
00FFEAA4 08A001 ora #1
|
2123 |
|
|
00FFEAA6 097121 sta KeyState2
|
2124 |
|
|
00FFEAA8 020006 bra dbgk10
|
2125 |
4 |
robfinch |
dbgk9:
|
2126 |
13 |
robfinch |
00FFEAAA 096121 lda KeyState2
|
2127 |
|
|
00FFEAAC 084FFE anda #~1
|
2128 |
|
|
00FFEAAE 097121 sta KeyState2
|
2129 |
4 |
robfinch |
dbgk10:
|
2130 |
13 |
robfinch |
00FFEAB0 00F120 clr KeyState1
|
2131 |
|
|
00FFEAB2 020F62 bra dbgk2
|
2132 |
4 |
robfinch |
dbgkNotRshift:
|
2133 |
13 |
robfinch |
00FFEAB4 0C1077 cmpb #SC_NUMLOCK
|
2134 |
|
|
00FFEAB6 026013 bne dbgkNotNumlock
|
2135 |
|
|
00FFEAB8 096121 lda KeyState2
|
2136 |
|
|
00FFEABA 088010 eora #16
|
2137 |
|
|
00FFEABC 097121 sta KeyState2
|
2138 |
|
|
00FFEABE 096122 lda KeyLED
|
2139 |
|
|
00FFEAC0 088002 eora #2
|
2140 |
|
|
00FFEAC2 097122 sta KeyLED
|
2141 |
|
|
00FFEAC4 01F089 tfr a,b
|
2142 |
|
|
00FFEAC6 04F clra
|
2143 |
|
|
00FFEAC7 08DE40 bsr KeybdSetLED
|
2144 |
|
|
00FFEAC9 020F4B bra dbgk2
|
2145 |
4 |
robfinch |
dbgkNotNumlock:
|
2146 |
13 |
robfinch |
00FFEACB 0C1058 cmpb #SC_CAPSLOCK
|
2147 |
|
|
00FFEACD 026013 bne dbgkNotCapslock
|
2148 |
|
|
00FFEACF 096121 lda KeyState2
|
2149 |
|
|
00FFEAD1 088020 eora #32
|
2150 |
|
|
00FFEAD3 097121 sta KeyState2
|
2151 |
|
|
00FFEAD5 096122 lda KeyLED
|
2152 |
|
|
00FFEAD7 088004 eora #4
|
2153 |
|
|
00FFEAD9 097122 sta KeyLED
|
2154 |
|
|
00FFEADB 01F089 tfr a,b
|
2155 |
|
|
00FFEADD 04F clra
|
2156 |
|
|
00FFEADE 08DE29 bsr KeybdSetLED
|
2157 |
|
|
00FFEAE0 020F34 bra dbgk2
|
2158 |
4 |
robfinch |
dbgkNotCapslock:
|
2159 |
13 |
robfinch |
00FFEAE2 0C107E cmpb #SC_SCROLLLOCK
|
2160 |
|
|
00FFEAE4 026013 bne dbgkNotScrolllock
|
2161 |
|
|
00FFEAE6 096121 lda KeyState2
|
2162 |
|
|
00FFEAE8 088040 eora #64
|
2163 |
|
|
00FFEAEA 097121 sta KeyState2
|
2164 |
|
|
00FFEAEC 096122 lda KeyLED
|
2165 |
|
|
00FFEAEE 088001 eora #1
|
2166 |
|
|
00FFEAF0 097122 sta KeyLED
|
2167 |
|
|
00FFEAF2 01F089 tfr a,b
|
2168 |
|
|
00FFEAF4 04F clra
|
2169 |
|
|
00FFEAF5 08DE12 bsr KeybdSetLED
|
2170 |
|
|
00FFEAF7 020F1D bra dbgk2
|
2171 |
4 |
robfinch |
dbgkNotScrolllock:
|
2172 |
13 |
robfinch |
00FFEAF9 0C1011 cmpb #SC_ALT
|
2173 |
|
|
00FFEAFB 026016 bne dbgkNotAlt
|
2174 |
|
|
00FFEAFD 00D120 tst KeyState1
|
2175 |
|
|
00FFEAFF 026008 bne dbgk11
|
2176 |
|
|
00FFEB01 096121 lda KeyState2
|
2177 |
|
|
00FFEB03 08A002 ora #2
|
2178 |
|
|
00FFEB05 097121 sta KeyState2
|
2179 |
|
|
00FFEB07 020006 bra dbgk12
|
2180 |
4 |
robfinch |
dbgk11:
|
2181 |
13 |
robfinch |
00FFEB09 096121 lda KeyState2
|
2182 |
|
|
00FFEB0B 084FFD anda #~2
|
2183 |
|
|
00FFEB0D 097121 sta KeyState2
|
2184 |
4 |
robfinch |
dbgk12:
|
2185 |
13 |
robfinch |
00FFEB0F 00F120 clr KeyState1
|
2186 |
|
|
00FFEB11 020F03 bra dbgk2
|
2187 |
4 |
robfinch |
dbgkNotAlt:
|
2188 |
13 |
robfinch |
00FFEB13 00D120 tst KeyState1
|
2189 |
|
|
00FFEB15 027004 beq dbgk13
|
2190 |
|
|
00FFEB17 00F120 clr KeyState1
|
2191 |
|
|
00FFEB19 020EFB bra dbgk2
|
2192 |
4 |
robfinch |
dbgk13:
|
2193 |
13 |
robfinch |
00FFEB1B 096121 lda KeyState2 ; Check for CTRL-ALT-DEL
|
2194 |
|
|
00FFEB1D 084006 anda #6
|
2195 |
|
|
00FFEB1F 081006 cmpa #6
|
2196 |
|
|
00FFEB21 026008 bne dbgk14
|
2197 |
|
|
00FFEB23 0C1071 cmpb #SC_DEL
|
2198 |
|
|
00FFEB25 026004 bne dbgk14
|
2199 |
|
|
00FFEB27 06E90FFFFFFC jmp [$FFFFFC] ; jump to NMI vector
|
2200 |
4 |
robfinch |
dbgk14:
|
2201 |
13 |
robfinch |
00FFEB2B 00D121 tst KeyState2 ; extended code?
|
2202 |
|
|
00FFEB2D 02A00B bpl dbgk15
|
2203 |
|
|
00FFEB2F 096121 lda KeyState2
|
2204 |
|
|
00FFEB31 0847FF anda #$7FF
|
2205 |
|
|
00FFEB33 097121 sta KeyState2
|
2206 |
|
|
00FFEB35 08EFFE800 ldx #keybdExtendedCodes
|
2207 |
|
|
00FFEB38 020017 bra dbgk18
|
2208 |
4 |
robfinch |
dbgk15:
|
2209 |
13 |
robfinch |
00FFEB3A 096121 lda KeyState2 ; Is CTRL down?
|
2210 |
|
|
00FFEB3C 085004 bita #4
|
2211 |
|
|
00FFEB3E 027005 beq dbgk16
|
2212 |
|
|
00FFEB40 08EFFE780 ldx #keybdControlCodes
|
2213 |
|
|
00FFEB43 02000C bra dbgk18
|
2214 |
4 |
robfinch |
dbgk16:
|
2215 |
13 |
robfinch |
00FFEB45 085001 bita #1 ; Is shift down?
|
2216 |
|
|
00FFEB47 027005 beq dbgk17
|
2217 |
|
|
00FFEB49 08EFFE680 ldx #shiftedScanCodes
|
2218 |
|
|
00FFEB4C 020003 bra dbgk18
|
2219 |
4 |
robfinch |
dbgk17:
|
2220 |
13 |
robfinch |
00FFEB4E 08EFFE580 ldx #unshiftedScanCodes
|
2221 |
4 |
robfinch |
dbgk18:
|
2222 |
13 |
robfinch |
00FFEB51 0E690FFFE580 ldb b,x ; load accb with ascii from table
|
2223 |
|
|
00FFEB55 04F clra
|
2224 |
|
|
00FFEB56 0350B0 puls x,y,pc ; and return
|
2225 |
4 |
robfinch |
|
2226 |
|
|
|
2227 |
13 |
robfinch |
00FFEB58 04B04505904204F041052 fcb "KEYBOARD"
|
2228 |
|
|
00FFEB5F 044
|
2229 |
|
|
00FFEB60 FFEB6A fcw KeybdOpen
|
2230 |
|
|
00FFEB62 FFEB6B fcw KeybdClose
|
2231 |
|
|
00FFEB64 FFEB6C fcw KeybdRead
|
2232 |
|
|
00FFEB66 FFEB6D fcw KeybdWrite
|
2233 |
|
|
00FFEB68 FFEB6E fcw KeybdSeek
|
2234 |
4 |
robfinch |
|
2235 |
|
|
; Keyboard Open:
|
2236 |
|
|
; Initialize the keyboard buffer head and tail indexes
|
2237 |
|
|
;
|
2238 |
|
|
KeybdOpen:
|
2239 |
13 |
robfinch |
00FFEB6A 039 rts
|
2240 |
4 |
robfinch |
|
2241 |
|
|
; Keyboard Close:
|
2242 |
|
|
; Nothing to do except maybe clear the keyboard buffer
|
2243 |
|
|
;
|
2244 |
|
|
KeybdClose:
|
2245 |
13 |
robfinch |
00FFEB6B 039 rts
|
2246 |
4 |
robfinch |
;
|
2247 |
|
|
KeybdRead:
|
2248 |
13 |
robfinch |
00FFEB6C 039 rts
|
2249 |
4 |
robfinch |
;
|
2250 |
|
|
KeybdWrite:
|
2251 |
13 |
robfinch |
00FFEB6D 039 rts
|
2252 |
4 |
robfinch |
|
2253 |
|
|
KeybdSeek:
|
2254 |
13 |
robfinch |
00FFEB6E 039 rts
|
2255 |
4 |
robfinch |
|
2256 |
13 |
robfinch |
;==============================================================================
|
2257 |
|
|
; Serial I/O
|
2258 |
|
|
;==============================================================================
|
2259 |
|
|
|
2260 |
|
|
; ============================================================================
|
2261 |
|
|
; __
|
2262 |
|
|
; \\__/ o\ (C) 2022 Robert Finch, Waterloo
|
2263 |
|
|
; \ __ / All rights reserved.
|
2264 |
|
|
; \/_// robfinch@opencores.org
|
2265 |
|
|
; ||
|
2266 |
|
|
;
|
2267 |
|
|
;
|
2268 |
|
|
; Serial port routines for a WDC6551 compatible circuit.
|
2269 |
|
|
;
|
2270 |
|
|
; This source file is free software: you can redistribute it and/or modify
|
2271 |
|
|
; it under the terms of the GNU Lesser General Public License as published
|
2272 |
|
|
; by the Free Software Foundation, either version 3 of the License, or
|
2273 |
|
|
; (at your option) any later version.
|
2274 |
|
|
;
|
2275 |
|
|
; This source file is distributed in the hope that it will be useful,
|
2276 |
|
|
; but WITHOUT ANY WARRANTY; without even the implied warranty of
|
2277 |
|
|
; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
2278 |
|
|
; GNU General Public License for more details.
|
2279 |
|
|
;
|
2280 |
|
|
; You should have received a copy of the GNU General Public License
|
2281 |
|
|
; along with this program. If not, see .
|
2282 |
|
|
;
|
2283 |
|
|
; ============================================================================
|
2284 |
|
|
;
|
2285 |
4 |
robfinch |
;------------------------------------------------------------------------------
|
2286 |
13 |
robfinch |
; Initialize serial port.
|
2287 |
|
|
;
|
2288 |
|
|
; Clear buffer indexes. Two bytes are used for the buffer index even though
|
2289 |
|
|
; only a single byte is needed. This is for convenience in calculating the
|
2290 |
|
|
; number of characters in the buffer, done later. The upper byte remains at
|
2291 |
|
|
; zero.
|
2292 |
|
|
; The port is initialized for 9600 baud, 1 stop bit and 8 bits data sent.
|
2293 |
|
|
; The internal baud rate generator is used.
|
2294 |
|
|
;
|
2295 |
|
|
; Parameters:
|
2296 |
|
|
; none
|
2297 |
|
|
; Modifies:
|
2298 |
|
|
; d
|
2299 |
|
|
; Returns:
|
2300 |
|
|
; none
|
2301 |
|
|
;------------------------------------------------------------------------------
|
2302 |
|
|
|
2303 |
|
|
InitSerial:
|
2304 |
|
|
SerialInit:
|
2305 |
|
|
00FFEB6F 04F clra
|
2306 |
|
|
00FFEB70 05F clrb
|
2307 |
|
|
00FFEB71 0DD130 std SerHeadRcv-1
|
2308 |
|
|
00FFEB73 0DD132 std SerTailRcv-1
|
2309 |
|
|
00FFEB75 0DD135 std SerHeadXmit-1
|
2310 |
|
|
00FFEB77 0DD137 std SerTailXmit-1
|
2311 |
|
|
00FFEB79 00F139 clr SerRcvXon
|
2312 |
|
|
00FFEB7B 00F140 clr SerRcvXoff
|
2313 |
|
|
00FFEB7D 0150B6FFFFFFFE0 lda COREID
|
2314 |
|
|
sini1:
|
2315 |
|
|
00FFEB82 0B1FF0010 cmpa IOFocusID
|
2316 |
|
|
00FFEB85 026FFB bne sini1
|
2317 |
|
|
00FFEB87 0C6009 ldb #$09 ; dtr,rts active, rxint enabled, no parity
|
2318 |
|
|
00FFEB89 0150F7FFFE30102 stb ACIA+ACIA_CMD
|
2319 |
14 |
robfinch |
00FFEB8E 0C601F ldb #$1F ; baud 9600, 1 stop bit, 8 bit, internal baud gen
|
2320 |
13 |
robfinch |
00FFEB90 0150F7FFFE30103 stb ACIA+ACIA_CTRL
|
2321 |
|
|
00FFEB95 0C60A6 ldb #$0A6 ; diable fifos, reset fifos
|
2322 |
|
|
00FFEB97 0150F7FFFE3010B stb ACIA+ACIA_CTRL2
|
2323 |
|
|
00FFEB9C 039 rts
|
2324 |
|
|
|
2325 |
|
|
;------------------------------------------------------------------------------
|
2326 |
|
|
; SerialGetChar
|
2327 |
|
|
;
|
2328 |
|
|
; Check the serial port buffer to see if there's a char available. If there's
|
2329 |
|
|
; a char available then return it. If the buffer is almost empty then send an
|
2330 |
|
|
; XON.
|
2331 |
|
|
;
|
2332 |
|
|
; Stack Space:
|
2333 |
|
|
; 2 words
|
2334 |
|
|
; Parameters:
|
2335 |
|
|
; none
|
2336 |
|
|
; Modifies:
|
2337 |
|
|
; none
|
2338 |
|
|
; Returns:
|
2339 |
|
|
; d = character or -1
|
2340 |
|
|
;------------------------------------------------------------------------------
|
2341 |
|
|
|
2342 |
|
|
SerialGetChar:
|
2343 |
|
|
00FFEB9D 034030 pshs x,y
|
2344 |
|
|
00FFEB9F 18E000000 ldy #0
|
2345 |
|
|
00FFEBA2 01A010 sei ; disable interrupts
|
2346 |
|
|
00FFEBA4 08D082 bsr SerialRcvCount ; check number of chars in receive buffer
|
2347 |
|
|
00FFEBA6 0C1008 cmpb #8 ; less than 8?
|
2348 |
|
|
00FFEBA8 02200C bhi sgc2
|
2349 |
|
|
00FFEBAA 0D6139 ldb SerRcvXon ; skip sending XON if already sent
|
2350 |
|
|
00FFEBAC 026008 bne sgc2 ; XON already sent?
|
2351 |
|
|
00FFEBAE 0C6011 ldb #XON ; if <8 send an XON
|
2352 |
|
|
00FFEBB0 00F140 clr SerRcvXoff ; clear XOFF status
|
2353 |
|
|
00FFEBB2 0D7139 stb SerRcvXon ; flag so we don't send it multiple times
|
2354 |
|
|
00FFEBB4 08D052 bsr SerialPutChar
|
2355 |
|
|
sgc2:
|
2356 |
|
|
00FFEBB6 0D6131 ldb SerHeadRcv ; check if anything is in buffer
|
2357 |
|
|
00FFEBB8 0D1133 cmpb SerTailRcv
|
2358 |
|
|
00FFEBBA 02700A beq sgcNoChars ; no?
|
2359 |
|
|
00FFEBBC 08EBFF000 ldx #SerRcvBuf
|
2360 |
|
|
00FFEBBF 04F clra
|
2361 |
|
|
00FFEBC0 0E6835 ldb b,x ; get byte from buffer
|
2362 |
|
|
00FFEBC2 00C131 inc SerHeadRcv ; 4k wrap around
|
2363 |
|
|
00FFEBC4 020003 bra sgcXit
|
2364 |
|
|
sgcNoChars:
|
2365 |
|
|
00FFEBC6 0CCFFFFFF ldd #-1
|
2366 |
|
|
sgcXit:
|
2367 |
|
|
00FFEBC9 01C0EF cli
|
2368 |
|
|
00FFEBCB 0350B0 puls x,y,pc
|
2369 |
|
|
|
2370 |
|
|
;------------------------------------------------------------------------------
|
2371 |
|
|
; SerialPeekChar
|
2372 |
|
|
;
|
2373 |
|
|
; Check the serial port buffer to see if there's a char available. If there's
|
2374 |
|
|
; a char available then return it. But don't update the buffer indexes. No need
|
2375 |
|
|
; to send an XON here.
|
2376 |
|
|
;
|
2377 |
|
|
; Stack Space:
|
2378 |
|
|
; 0 words
|
2379 |
|
|
; Parameters:
|
2380 |
|
|
; none
|
2381 |
|
|
; Modifies:
|
2382 |
|
|
; none
|
2383 |
|
|
; Returns:
|
2384 |
|
|
; d = character or -1
|
2385 |
|
|
;------------------------------------------------------------------------------
|
2386 |
|
|
|
2387 |
|
|
SerialPeekChar:
|
2388 |
|
|
00FFEBCD 034011 pshs x,ccr
|
2389 |
|
|
00FFEBCF 01A010 sei
|
2390 |
|
|
00FFEBD1 0D6131 ldb SerHeadRcv ; check if anything is in buffer
|
2391 |
|
|
00FFEBD3 0D1133 cmpb SerTailRcv
|
2392 |
|
|
00FFEBD5 027008 beq spcNoChars ; no?
|
2393 |
|
|
00FFEBD7 08EBFF000 ldx #SerRcvBuf
|
2394 |
|
|
00FFEBDA 04F clra
|
2395 |
|
|
00FFEBDB 0E6815 ldb b,x ; get byte from buffer
|
2396 |
|
|
00FFEBDD 020003 bra spcXit
|
2397 |
|
|
spcNoChars:
|
2398 |
|
|
00FFEBDF 0CCFFFFFF ldd #-1
|
2399 |
|
|
spcXit:
|
2400 |
|
|
00FFEBE2 035091 puls x,ccr,pc
|
2401 |
|
|
|
2402 |
|
|
;------------------------------------------------------------------------------
|
2403 |
|
|
; SerialPeekChar
|
2404 |
|
|
; Get a character directly from the I/O port. This bypasses the input
|
2405 |
|
|
; buffer.
|
2406 |
|
|
;
|
2407 |
|
|
; Stack Space:
|
2408 |
|
|
; 0 words
|
2409 |
|
|
; Parameters:
|
2410 |
|
|
; none
|
2411 |
|
|
; Modifies:
|
2412 |
|
|
; d
|
2413 |
|
|
; Returns:
|
2414 |
|
|
; d = character or -1
|
2415 |
|
|
;------------------------------------------------------------------------------
|
2416 |
|
|
|
2417 |
|
|
SerialPeekCharDirect:
|
2418 |
|
|
00FFEBE4 0150B6FFFFFFFE0 lda COREID ; Ensure we have the IO Focus
|
2419 |
|
|
00FFEBE9 0B1FF0010 cmpa IOFocusID
|
2420 |
|
|
00FFEBEC 026014 bne spcd0001
|
2421 |
|
|
; Disallow interrupts between status read and rx read.
|
2422 |
|
|
00FFEBEE 01A010 sei
|
2423 |
|
|
00FFEBF0 0150F6FFFE30101 ldb ACIA+ACIA_STAT
|
2424 |
|
|
00FFEBF5 0C5008 bitb #8 ; look for Rx not empty
|
2425 |
|
|
00FFEBF7 027009 beq spcd0001
|
2426 |
|
|
00FFEBF9 04F clra
|
2427 |
|
|
00FFEBFA 0150F6FFFE30100 ldb ACIA+ACIA_RX
|
2428 |
|
|
00FFEBFF 01C0EF cli
|
2429 |
|
|
00FFEC01 039 rts
|
2430 |
|
|
spcd0001:
|
2431 |
|
|
00FFEC02 0CCFFFFFF ldd #-1
|
2432 |
|
|
00FFEC05 01C0EF cli
|
2433 |
|
|
00FFEC07 039 rts
|
2434 |
|
|
|
2435 |
|
|
;------------------------------------------------------------------------------
|
2436 |
|
|
; SerialPutChar
|
2437 |
|
|
; Put a character to the serial transmitter. This routine blocks until the
|
2438 |
|
|
; transmitter is empty.
|
2439 |
|
|
;
|
2440 |
|
|
; Stack Space
|
2441 |
|
|
; 0 words
|
2442 |
|
|
; Parameters:
|
2443 |
|
|
; b = character to put
|
2444 |
|
|
; Modifies:
|
2445 |
|
|
; none
|
2446 |
|
|
;------------------------------------------------------------------------------
|
2447 |
|
|
|
2448 |
|
|
SerialPutChar:
|
2449 |
|
|
00FFEC08 034003 pshs a,ccr
|
2450 |
|
|
spc0001:
|
2451 |
|
|
00FFEC0A 0150B6FFFFFFFE0 lda COREID ; Ensure we have the IO Focus
|
2452 |
|
|
00FFEC0F 0B1FF0010 cmpa IOFocusID
|
2453 |
|
|
00FFEC12 026FF6 bne spc0001
|
2454 |
|
|
00FFEC14 01C0EF cli ; provide a window for an interrupt to occur
|
2455 |
|
|
00FFEC16 01A010 sei
|
2456 |
|
|
; Between the status read and the transmit do not allow an
|
2457 |
|
|
; intervening interrupt.
|
2458 |
|
|
00FFEC18 0150B6FFFE30101 lda ACIA+ACIA_STAT ; wait until the uart indicates tx empty
|
2459 |
|
|
00FFEC1D 085010 bita #16 ; bit #4 of the status reg
|
2460 |
|
|
00FFEC1F 027FE9 beq spc0001 ; branch if transmitter is not empty
|
2461 |
|
|
00FFEC21 0150F7FFFE30100 stb ACIA+ACIA_TX ; send the byte
|
2462 |
|
|
00FFEC26 035083 puls a,ccr,pc
|
2463 |
|
|
|
2464 |
|
|
;------------------------------------------------------------------------------
|
2465 |
|
|
; Calculate number of character in input buffer
|
2466 |
|
|
;
|
2467 |
|
|
; Parameters:
|
2468 |
|
|
; y = 0 if current core, otherwise reference to core memory area $Cyxxxx
|
2469 |
|
|
; Returns:
|
2470 |
|
|
; d = number of bytes in buffer.
|
2471 |
|
|
;------------------------------------------------------------------------------
|
2472 |
|
|
|
2473 |
|
|
SerialRcvCount:
|
2474 |
|
|
00FFEC28 04F clra
|
2475 |
|
|
00FFEC29 0E6A08133 ldb SerTailRcv,y
|
2476 |
|
|
00FFEC2C 0E0A08131 subb SerHeadRcv,y
|
2477 |
|
|
00FFEC2F 02C009 bge srcXit
|
2478 |
|
|
00FFEC31 0CC001000 ldd #$1000
|
2479 |
|
|
00FFEC34 0A3A08131 subd SerHeadRcv,y
|
2480 |
|
|
00FFEC37 0E3A08133 addd SerTailRcv,y
|
2481 |
|
|
srcXit:
|
2482 |
|
|
00FFEC3A 039 rts
|
2483 |
|
|
|
2484 |
|
|
;------------------------------------------------------------------------------
|
2485 |
|
|
; Serial IRQ routine
|
2486 |
|
|
;
|
2487 |
|
|
; Keeps looping as long as it finds characters in the ACIA recieve buffer/fifo.
|
2488 |
|
|
; Received characters are buffered. If the buffer becomes full, new characters
|
2489 |
|
|
; will be lost.
|
2490 |
|
|
;
|
2491 |
|
|
; Parameters:
|
2492 |
|
|
; none
|
2493 |
|
|
; Modifies:
|
2494 |
|
|
; d,x
|
2495 |
|
|
; Returns:
|
2496 |
|
|
; none
|
2497 |
|
|
;------------------------------------------------------------------------------
|
2498 |
|
|
|
2499 |
|
|
SerialIRQ:
|
2500 |
|
|
sirqNxtByte:
|
2501 |
|
|
00FFEC3B 0150F6FFFE30101 ldb ACIA+ACIA_STAT ; check the status
|
2502 |
|
|
00FFEC40 0C5008 bitb #$08 ; bit 3 = rx full
|
2503 |
|
|
00FFEC42 027049 beq notRxInt
|
2504 |
|
|
00FFEC44 0150F6FFFE30100 ldb ACIA+ACIA_RX ; get data from Rx buffer to clear interrupt
|
2505 |
|
|
00FFEC49 0C1014 cmpb #CTRLT ; detect special keystroke
|
2506 |
|
|
00FFEC4B 026000 bne sirq0001
|
2507 |
|
|
; bsr DumpTraceQueue
|
2508 |
|
|
sirq0001:
|
2509 |
|
|
00FFEC4D 034004 pshs b
|
2510 |
|
|
; Compute receive buffer address
|
2511 |
|
|
00FFEC4F 0B6FF0010 lda IOFocusID
|
2512 |
|
|
00FFEC52 048 asla
|
2513 |
|
|
00FFEC53 048 asla
|
2514 |
|
|
00FFEC54 048 asla
|
2515 |
|
|
00FFEC55 048 asla
|
2516 |
|
|
00FFEC56 08AC00 ora #$C00
|
2517 |
|
|
00FFEC58 05F clrb
|
2518 |
|
|
00FFEC59 01F002 tfr d,y
|
2519 |
|
|
00FFEC5B 035004 puls b
|
2520 |
|
|
00FFEC5D 0A6A08133 lda SerTailRcv,y ; check if recieve buffer full
|
2521 |
|
|
00FFEC60 04C inca
|
2522 |
|
|
00FFEC61 0A1A08131 cmpa SerHeadRcv,y
|
2523 |
|
|
00FFEC64 027027 beq sirqRxFull
|
2524 |
|
|
00FFEC66 0A7A08133 sta SerTailRcv,y ; update tail pointer
|
2525 |
|
|
00FFEC69 04A deca ; backup
|
2526 |
|
|
00FFEC6A 01E089 exg a,b
|
2527 |
|
|
00FFEC6C 030A0A000BFF000 leax SerRcvBuf,y ; x = buffer address
|
2528 |
|
|
00FFEC71 0A7A0F sta b,x ; store recieved byte in buffer
|
2529 |
|
|
00FFEC73 06DA08140 tst SerRcvXoff,y ; check if xoff already sent
|
2530 |
|
|
00FFEC76 026FC3 bne sirqNxtByte
|
2531 |
|
|
00FFEC78 08DFAE bsr SerialRcvCount ; if more than 4080 chars in buffer
|
2532 |
|
|
00FFEC7A 0C1FF0 cmpb #4080
|
2533 |
|
|
00FFEC7C 025FBD blo sirqNxtByte
|
2534 |
|
|
00FFEC7E 0C6013 ldb #XOFF ; send an XOFF
|
2535 |
|
|
00FFEC80 06FA08139 clr SerRcvXon,y ; clear XON status
|
2536 |
|
|
00FFEC83 0E7A08140 stb SerRcvXoff,y ; set XOFF status
|
2537 |
|
|
00FFEC86 0150F7FFFE30100 stb ACIA+ACIA_TX
|
2538 |
|
|
00FFEC8B 020FAE bra sirqNxtByte ; check the status for another byte
|
2539 |
|
|
sirqRxFull:
|
2540 |
|
|
notRxInt:
|
2541 |
|
|
00FFEC8D 039 rts
|
2542 |
|
|
|
2543 |
|
|
nmeSerial:
|
2544 |
|
|
00FFEC8E 05306507206906106C000 fcb "Serial",0
|
2545 |
|
|
|
2546 |
|
|
;------------------------------------------------------------------------------
|
2547 |
|
|
; Put a string to the serial port.
|
2548 |
|
|
;
|
2549 |
|
|
; Parameters:
|
2550 |
|
|
; d = pointer to string
|
2551 |
|
|
; Modifies:
|
2552 |
|
|
; none
|
2553 |
|
|
; Returns:
|
2554 |
|
|
; none
|
2555 |
|
|
;------------------------------------------------------------------------------
|
2556 |
|
|
|
2557 |
|
|
SerialPutString:
|
2558 |
|
|
00FFEC95 034016 pshs d,x
|
2559 |
|
|
00FFEC97 01F001 tfr d,x
|
2560 |
|
|
sps2:
|
2561 |
|
|
00FFEC99 0E6804 ldb ,x
|
2562 |
|
|
00FFEC9B 027006 beq spsXit
|
2563 |
|
|
00FFEC9D 030001 inx
|
2564 |
|
|
00FFEC9F 08DF67 bsr SerialPutChar
|
2565 |
|
|
00FFECA1 020FF6 bra sps2
|
2566 |
|
|
spsXit:
|
2567 |
|
|
00FFECA3 035096 puls d,x,pc
|
2568 |
|
|
|
2569 |
|
|
;------------------------------------------------------------------------------
|
2570 |
|
|
; A little routine to test serial output.
|
2571 |
|
|
;
|
2572 |
|
|
; Parameters:
|
2573 |
|
|
; none
|
2574 |
|
|
; Modifies:
|
2575 |
|
|
; none
|
2576 |
|
|
; Returns:
|
2577 |
|
|
; none
|
2578 |
|
|
;------------------------------------------------------------------------------
|
2579 |
|
|
|
2580 |
|
|
SerialOutputTest:
|
2581 |
|
|
00FFECA5 034006 pshs d
|
2582 |
|
|
00FFECA7 0CCFFECC5 ldd #msgSerialTest
|
2583 |
14 |
robfinch |
00FFECAA 017FFF709 lbsr DisplayString
|
2584 |
13 |
robfinch |
*** warning 1: Long branch within short branch range could be optimized
|
2585 |
|
|
00FFECAD 08DEC0 bsr SerialInit
|
2586 |
|
|
sotst1:
|
2587 |
|
|
00FFECAF 0C6011 ldb #XON
|
2588 |
|
|
00FFECB1 08DF55 bsr SerialPutChar
|
2589 |
|
|
00FFECB3 08DF53 bsr SerialPutChar
|
2590 |
|
|
00FFECB5 08DF51 bsr SerialPutChar
|
2591 |
|
|
00FFECB7 0CCFFECC5 ldd #msgSerialTest
|
2592 |
|
|
00FFECBA 08DFD9 bsr SerialPutString
|
2593 |
|
|
00FFECBC 01700001B lbsr INCH
|
2594 |
|
|
00FFECBF 0C1003 cmpb #CTRLC
|
2595 |
|
|
00FFECC1 026FEC bne sotst1
|
2596 |
|
|
00FFECC3 035086 puls d,pc
|
2597 |
|
|
|
2598 |
|
|
msgSerialTest:
|
2599 |
|
|
00FFECC5 05306507206906106C020 fcb "Serial port test",CR,LF,0
|
2600 |
|
|
00FFECCC 07006F072074020074065
|
2601 |
|
|
00FFECD3 07307400D00A000
|
2602 |
|
|
|
2603 |
|
|
|
2604 |
|
|
;------------------------------------------------------------------------------
|
2605 |
4 |
robfinch |
; Check if there is a keyboard character available. If so return true (<0)
|
2606 |
|
|
; otherwise return false (0) in accb.
|
2607 |
|
|
;------------------------------------------------------------------------------
|
2608 |
|
|
;
|
2609 |
|
|
KeybdCheckForKeyDirect:
|
2610 |
13 |
robfinch |
00FFECD8 020D36 bra DBGCheckForKey
|
2611 |
4 |
robfinch |
|
2612 |
|
|
;------------------------------------------------------------------------------
|
2613 |
|
|
;------------------------------------------------------------------------------
|
2614 |
|
|
INCH:
|
2615 |
13 |
robfinch |
00FFECDA 034004 pshs b
|
2616 |
|
|
INCH2:
|
2617 |
|
|
00FFECDC 0150F6FFFFFFFE0 ldb COREID
|
2618 |
|
|
00FFECE1 0F1FF0010 cmpb IOFocusID ; if we do not have focus, block
|
2619 |
|
|
00FFECE4 026FF6 bne INCH2
|
2620 |
|
|
; ldb #$800 ; block if no key available, get scancode directly
|
2621 |
|
|
; bra GetKey
|
2622 |
|
|
; jsr [CharInVec] ; vector is being overwritten somehow
|
2623 |
|
|
00FFECE6 017FFFEFB lbsr SerialPeekCharDirect
|
2624 |
|
|
*** warning 1: Long branch within short branch range could be optimized
|
2625 |
|
|
00FFECE9 04D tsta
|
2626 |
|
|
00FFECEA 02B003 bmi INCH1 ; block if no key available
|
2627 |
|
|
00FFECEC 032601 leas 1,s ; get rid of blocking status
|
2628 |
|
|
00FFECEE 039 rts
|
2629 |
|
|
INCH1:
|
2630 |
|
|
00FFECEF 035004 puls b ; check blocking status
|
2631 |
|
|
00FFECF1 05D tstb
|
2632 |
|
|
00FFECF2 02BFE6 bmi INCH ; if blocking, loop
|
2633 |
|
|
00FFECF4 0CCFFFFFF ldd #-1 ; return -1 if no char available
|
2634 |
|
|
00FFECF7 039 rts
|
2635 |
4 |
robfinch |
|
2636 |
|
|
INCHE:
|
2637 |
13 |
robfinch |
00FFECF8 08DFE0 bsr INCH
|
2638 |
|
|
00FFECFA 020009 bra INCHEK3
|
2639 |
4 |
robfinch |
|
2640 |
|
|
INCHEK:
|
2641 |
13 |
robfinch |
00FFECFC 08DFDC bsr INCH
|
2642 |
|
|
00FFECFE 01507DFFFFFCA00 tst KeybdEcho
|
2643 |
|
|
00FFED03 02700C beq INCHEK1
|
2644 |
4 |
robfinch |
INCHEK3:
|
2645 |
13 |
robfinch |
00FFED05 08100D cmpa #CR
|
2646 |
|
|
00FFED07 026005 bne INCHEK2
|
2647 |
|
|
00FFED09 017FFE3C6 lbsr CRLF
|
2648 |
4 |
robfinch |
*** warning 1: Long branch within short branch range could be optimized
|
2649 |
13 |
robfinch |
00FFED0C 020003 bra INCHEK1
|
2650 |
4 |
robfinch |
INCHEK2:
|
2651 |
14 |
robfinch |
00FFED0E 017FFF5E4 lbsr DisplayChar
|
2652 |
13 |
robfinch |
*** warning 1: Long branch within short branch range could be optimized
|
2653 |
4 |
robfinch |
INCHEK1:
|
2654 |
13 |
robfinch |
00FFED11 039 rts
|
2655 |
4 |
robfinch |
|
2656 |
|
|
OUTCH:
|
2657 |
13 |
robfinch |
00FFED12 06E90F000800 jmp [CharOutVec]
|
2658 |
4 |
robfinch |
|
2659 |
|
|
;------------------------------------------------------------------------------
|
2660 |
|
|
; r1 0=echo off, non-zero = echo on
|
2661 |
|
|
;------------------------------------------------------------------------------
|
2662 |
|
|
;
|
2663 |
|
|
SetKeyboardEcho:
|
2664 |
13 |
robfinch |
00FFED16 0150F7FFFFFCA00 stb KeybdEcho
|
2665 |
|
|
00FFED1B 039 rts
|
2666 |
4 |
robfinch |
|
2667 |
|
|
|
2668 |
|
|
;------------------------------------------------------------------------------
|
2669 |
|
|
; Parameters:
|
2670 |
|
|
; x,d bitmap of sprites to enable
|
2671 |
|
|
;------------------------------------------------------------------------------
|
2672 |
|
|
|
2673 |
|
|
ShowSprites:
|
2674 |
13 |
robfinch |
00FFED1C 0150BFFFFE103C0 stx SPRITE_CTRL+SPRITE_EN
|
2675 |
|
|
00FFED21 0150FDFFFE103C2 std SPRITE_CTRL+SPRITE_EN+2
|
2676 |
|
|
00FFED26 039 rts
|
2677 |
4 |
robfinch |
|
2678 |
|
|
;==============================================================================
|
2679 |
13 |
robfinch |
; Femtiki Operating System.
|
2680 |
|
|
;==============================================================================
|
2681 |
|
|
|
2682 |
|
|
OSCallTbl:
|
2683 |
|
|
00FFED27 000000 fcw 0
|
2684 |
|
|
00FFED29 000000 fcw 0
|
2685 |
|
|
00FFED2B 000000 fcw 0
|
2686 |
|
|
00FFED2D 000000 fcw 0
|
2687 |
|
|
00FFED2F 000000 fcw 0
|
2688 |
|
|
00FFED31 000000 fcw 0
|
2689 |
|
|
00FFED33 000000 fcw 0
|
2690 |
|
|
00FFED35 000000 fcw 0
|
2691 |
|
|
00FFED37 000000 fcw 0
|
2692 |
|
|
00FFED39 000000 fcw 0
|
2693 |
|
|
00FFED3B 000000 fcw 0
|
2694 |
|
|
00FFED3D 000000 fcw 0
|
2695 |
|
|
00FFED3F 000000 fcw 0
|
2696 |
|
|
00FFED41 000000 fcw 0
|
2697 |
|
|
00FFED43 000000 fcw 0
|
2698 |
|
|
00FFED45 000000 fcw 0
|
2699 |
|
|
00FFED47 000000 fcw 0
|
2700 |
|
|
00FFED49 000000 fcw 0
|
2701 |
|
|
00FFED4B 000000 fcw 0
|
2702 |
|
|
00FFED4D 000000 fcw 0
|
2703 |
|
|
00FFED4F 000000 fcw 0
|
2704 |
|
|
00FFED51 000000 fcw 0
|
2705 |
|
|
00FFED53 FFED84 fcw ReleaseIOFocus
|
2706 |
|
|
00FFED55 000000 fcw 0
|
2707 |
|
|
00FFED57 FFED6D fcw RequestIOFocus
|
2708 |
|
|
|
2709 |
|
|
OSCall:
|
2710 |
|
|
; wait for availability
|
2711 |
|
|
osc1:
|
2712 |
|
|
00FFED59 07DEF0011 tst OSSEMA+1
|
2713 |
|
|
00FFED5C 027FFB beq osc1
|
2714 |
|
|
00FFED5E 058 aslb
|
2715 |
|
|
00FFED5F 08EFFED27 ldx #OSCallTbl
|
2716 |
|
|
00FFED62 03A abx
|
2717 |
|
|
00FFED63 06D804 tst ,x
|
2718 |
|
|
00FFED65 027002 beq oscx
|
2719 |
|
|
00FFED67 06E904 jmp [,x]
|
2720 |
|
|
oscx:
|
2721 |
|
|
00FFED69 07FEF0011 clr OSSEMA+1
|
2722 |
|
|
00FFED6C 039 rts
|
2723 |
|
|
|
2724 |
|
|
RequestIOFocus:
|
2725 |
|
|
00FFED6D 0150F6FFFFFFFE0 ldb COREID
|
2726 |
|
|
00FFED72 08EFF0000 ldx #IOFocusList
|
2727 |
|
|
00FFED75 03A abx
|
2728 |
|
|
00FFED76 0A7804 sta ,x
|
2729 |
|
|
00FFED78 07DFF0010 tst IOFocusID
|
2730 |
|
|
00FFED7B 126FFFFEB lbne oscx
|
2731 |
|
|
*** warning 1: Long branch within short branch range could be optimized
|
2732 |
|
|
00FFED7E 0F7FF0010 stb IOFocusID
|
2733 |
|
|
00FFED81 016FFFFE5 lbra oscx
|
2734 |
|
|
*** warning 1: Long branch within short branch range could be optimized
|
2735 |
|
|
|
2736 |
|
|
ReleaseIOFocus:
|
2737 |
|
|
00FFED84 0150F6FFFFFFFE0 ldb COREID
|
2738 |
|
|
00FFED89 08EFF0000 ldx #IOFocusList
|
2739 |
|
|
00FFED8C 03A abx
|
2740 |
|
|
00FFED8D 06F804 clr ,x ; clear the request indicator
|
2741 |
14 |
robfinch |
00FFED8F 017FFF463 lbsr CopyScreenToVirtualScreen
|
2742 |
13 |
robfinch |
*** warning 1: Long branch within short branch range could be optimized
|
2743 |
|
|
00FFED92 0F1FF0010 cmpb IOFocusID ; are we the one with the focus?
|
2744 |
|
|
00FFED95 126FFFFD1 lbne oscx
|
2745 |
|
|
*** warning 1: Long branch within short branch range could be optimized
|
2746 |
|
|
; We had the focus, so now a new core needs the focus.
|
2747 |
|
|
; Search the focus list for a requestor. If no requester
|
2748 |
|
|
; is found, give focus to core #1.
|
2749 |
|
|
00FFED98 08600F lda #15
|
2750 |
|
|
riof2:
|
2751 |
|
|
00FFED9A 05C incb
|
2752 |
|
|
00FFED9B 0C400F andb #15
|
2753 |
|
|
00FFED9D 03A abx
|
2754 |
|
|
00FFED9E 06D804 tst ,x
|
2755 |
|
|
00FFEDA0 026009 bne riof1
|
2756 |
|
|
00FFEDA2 04A deca
|
2757 |
|
|
00FFEDA3 026FF5 bne riof2
|
2758 |
|
|
; If no focus is requested by anyone, give to core #1
|
2759 |
|
|
00FFEDA5 0C6001 ldb #1
|
2760 |
|
|
00FFEDA7 086018 lda #24
|
2761 |
|
|
00FFEDA9 0A7804 sta ,x
|
2762 |
|
|
riof1:
|
2763 |
|
|
00FFEDAB 0F7FF0010 stb IOFocusID
|
2764 |
14 |
robfinch |
00FFEDAE 017FFF40D lbsr CopyVirtualScreenToScreen
|
2765 |
13 |
robfinch |
*** warning 1: Long branch within short branch range could be optimized
|
2766 |
|
|
00FFEDB1 016FFFFB5 lbra oscx
|
2767 |
|
|
*** warning 1: Long branch within short branch range could be optimized
|
2768 |
|
|
|
2769 |
|
|
|
2770 |
|
|
;==============================================================================
|
2771 |
|
|
; Disassembler
|
2772 |
|
|
;==============================================================================
|
2773 |
|
|
|
2774 |
|
|
; ============================================================================
|
2775 |
|
|
; __
|
2776 |
|
|
; \\__/ o\ (C) 2013-2022 Robert Finch, Waterloo
|
2777 |
|
|
; \ __ / All rights reserved.
|
2778 |
|
|
; \/_// robfinch@opencores.org
|
2779 |
|
|
; ||
|
2780 |
|
|
;
|
2781 |
|
|
;
|
2782 |
|
|
; BSD 3-Clause License
|
2783 |
|
|
; Redistribution and use in source and binary forms, with or without
|
2784 |
|
|
; modification, are permitted provided that the following conditions are met:
|
2785 |
|
|
;
|
2786 |
|
|
; 1. Redistributions of source code must retain the above copyright notice, this
|
2787 |
|
|
; list of conditions and the following disclaimer.
|
2788 |
|
|
;
|
2789 |
|
|
; 2. Redistributions in binary form must reproduce the above copyright notice,
|
2790 |
|
|
; this list of conditions and the following disclaimer in the documentation
|
2791 |
|
|
; and/or other materials provided with the distribution.
|
2792 |
|
|
;
|
2793 |
|
|
; 3. Neither the name of the copyright holder nor the names of its
|
2794 |
|
|
; contributors may be used to endorse or promote products derived from
|
2795 |
|
|
; this software without specific prior written permission.
|
2796 |
|
|
;
|
2797 |
|
|
; THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
2798 |
|
|
; AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
2799 |
|
|
; IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
2800 |
|
|
; DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
|
2801 |
|
|
; FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
2802 |
|
|
; DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
|
2803 |
|
|
; SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
|
2804 |
|
|
; CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
|
2805 |
|
|
; OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
2806 |
|
|
; OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
2807 |
|
|
;
|
2808 |
|
|
; ============================================================================
|
2809 |
|
|
;
|
2810 |
|
|
; Disassembler
|
2811 |
|
|
;
|
2812 |
|
|
;
|
2813 |
|
|
DIRECT EQU 1
|
2814 |
|
|
LSREL EQU 2
|
2815 |
|
|
IMMB EQU 3
|
2816 |
|
|
SREL EQU 4
|
2817 |
|
|
NDX EQU 5
|
2818 |
|
|
EXT EQU 6
|
2819 |
|
|
IMMW EQU 7
|
2820 |
|
|
FAREXT EQU 8
|
2821 |
14 |
robfinch |
TFREXG EQU 9
|
2822 |
13 |
robfinch |
|
2823 |
|
|
distbl1:
|
2824 |
|
|
; 00 to 0F
|
2825 |
|
|
00FFEDB4 04E045047020001 fcb "NEG ", DIRECT
|
2826 |
|
|
00FFEDB9 020020020020000 fcb " ", 0
|
2827 |
|
|
00FFEDBE 020020020020000 fcb " ", 0
|
2828 |
|
|
00FFEDC3 04304F04D020001 fcb "COM ", DIRECT
|
2829 |
|
|
00FFEDC8 04C053052020001 fcb "LSR ", DIRECT
|
2830 |
|
|
00FFEDCD 020020020020000 fcb " ", 0
|
2831 |
|
|
00FFEDD2 05204F052020001 fcb "ROR ", DIRECT
|
2832 |
|
|
00FFEDD7 041053052020001 fcb "ASR ", DIRECT
|
2833 |
|
|
00FFEDDC 04105304C020001 fcb "ASL ", DIRECT
|
2834 |
|
|
00FFEDE1 05204F04C020001 fcb "ROL ", DIRECT
|
2835 |
|
|
00FFEDE6 044045043020001 fcb "DEC ", DIRECT
|
2836 |
|
|
00FFEDEB 020020020020000 fcb " ", 0
|
2837 |
|
|
00FFEDF0 04904E043020001 fcb "INC ", DIRECT
|
2838 |
|
|
00FFEDF5 054053054020001 fcb "TST ", DIRECT
|
2839 |
|
|
00FFEDFA 04A04D050020001 fcb "JMP ", DIRECT
|
2840 |
|
|
00FFEDFF 04304C052020001 fcb "CLR ", DIRECT
|
2841 |
|
|
|
2842 |
|
|
; 10 to 1F
|
2843 |
|
|
00FFEE04 020020020020000 fcb " ", 0
|
2844 |
|
|
00FFEE09 020020020020000 fcb " ", 0
|
2845 |
|
|
00FFEE0E 04E04F050020000 fcb "NOP ", 0
|
2846 |
|
|
00FFEE13 05305904E043000 fcb "SYNC", 0
|
2847 |
|
|
00FFEE18 020020020020000 fcb " ", 0
|
2848 |
|
|
00FFEE1D 046041052020000 fcb "FAR ", 0
|
2849 |
|
|
00FFEE22 04C042052041002 fcb "LBRA", LSREL
|
2850 |
|
|
00FFEE27 04C042053052002 fcb "LBSR", LSREL
|
2851 |
|
|
00FFEE2C 020020020020000 fcb " ", 0
|
2852 |
|
|
00FFEE31 044041041020000 fcb "DAA ", 0
|
2853 |
|
|
00FFEE36 04F052043043003 fcb "ORCC", IMMB
|
2854 |
|
|
00FFEE3B 020020020020000 fcb " ", 0
|
2855 |
|
|
00FFEE40 04104E044043003 fcb "ANDC", IMMB
|
2856 |
|
|
00FFEE45 053045058020000 fcb "SEX ", 0
|
2857 |
14 |
robfinch |
00FFEE4A 045058047020009 fcb "EXG ", TFREXG
|
2858 |
|
|
00FFEE4F 054046052020009 fcb "TFR ", TFREXG
|
2859 |
13 |
robfinch |
|
2860 |
|
|
; 20 to 2F
|
2861 |
|
|
00FFEE54 042052041020004 fcb "BRA ", SREL
|
2862 |
|
|
00FFEE59 04205204E020004 fcb "BRN ", SREL
|
2863 |
|
|
00FFEE5E 042048049020004 fcb "BHI ", SREL
|
2864 |
|
|
00FFEE63 04204C053020004 fcb "BLS ", SREL
|
2865 |
|
|
00FFEE68 042048053020004 fcb "BHS ", SREL
|
2866 |
|
|
00FFEE6D 04204C04F020004 fcb "BLO ", SREL
|
2867 |
|
|
00FFEE72 04204E045020004 fcb "BNE ", SREL
|
2868 |
|
|
00FFEE77 042045051020004 fcb "BEQ ", SREL
|
2869 |
|
|
00FFEE7C 042056043020004 fcb "BVC ", SREL
|
2870 |
|
|
00FFEE81 042056053020004 fcb "BVS ", SREL
|
2871 |
|
|
00FFEE86 04205004C020004 fcb "BPL ", SREL
|
2872 |
|
|
00FFEE8B 04204D049020004 fcb "BMI ", SREL
|
2873 |
|
|
00FFEE90 042047045020004 fcb "BGE ", SREL
|
2874 |
|
|
00FFEE95 04204C054020004 fcb "BLT ", SREL
|
2875 |
|
|
00FFEE9A 042047054020004 fcb "BGT ", SREL
|
2876 |
|
|
00FFEE9F 04204C045020004 fcb "BLE ", SREL
|
2877 |
|
|
|
2878 |
|
|
; 30 to 3F
|
2879 |
|
|
00FFEEA4 04C045041058005 fcb "LEAX", NDX
|
2880 |
|
|
00FFEEA9 04C045041059005 fcb "LEAY", NDX
|
2881 |
|
|
00FFEEAE 04C045041053005 fcb "LEAS", NDX
|
2882 |
|
|
00FFEEB3 04C045041055005 fcb "LEAU", NDX
|
2883 |
|
|
00FFEEB8 050053048053003 fcb "PSHS", IMMB
|
2884 |
|
|
00FFEEBD 05005504C053003 fcb "PULS", IMMB
|
2885 |
|
|
00FFEEC2 050053048055003 fcb "PSHU", IMMB
|
2886 |
|
|
00FFEEC7 05005504C055003 fcb "PULU", IMMB
|
2887 |
|
|
00FFEECC 052054046020000 fcb "RTF ", 0
|
2888 |
|
|
00FFEED1 052054053020000 fcb "RTS ", 0
|
2889 |
|
|
00FFEED6 041042058020000 fcb "ABX ", 0
|
2890 |
|
|
00FFEEDB 052054049020000 fcb "RTI ", 0
|
2891 |
|
|
00FFEEE0 043057041049003 fcb "CWAI", IMMB
|
2892 |
|
|
00FFEEE5 04D05504C020000 fcb "MUL ", 0
|
2893 |
|
|
00FFEEEA 020020020020000 fcb " ", 0
|
2894 |
|
|
00FFEEEF 053057049020000 fcb "SWI ", 0
|
2895 |
|
|
|
2896 |
|
|
; 40 to 4F
|
2897 |
|
|
00FFEEF4 04E045047041000 fcb "NEGA", 0
|
2898 |
|
|
00FFEEF9 020020020020000 fcb " ", 0
|
2899 |
|
|
00FFEEFE 020020020020000 fcb " ", 0
|
2900 |
|
|
00FFEF03 04304F04D041000 fcb "COMA", 0
|
2901 |
|
|
00FFEF08 04C053052041000 fcb "LSRA", 0
|
2902 |
|
|
00FFEF0D 020020020020000 fcb " ", 0
|
2903 |
|
|
00FFEF12 05204F052041000 fcb "RORA", 0
|
2904 |
|
|
00FFEF17 041053052041000 fcb "ASRA", 0
|
2905 |
|
|
00FFEF1C 04105304C041000 fcb "ASLA", 0
|
2906 |
|
|
00FFEF21 05204F04C041000 fcb "ROLA", 0
|
2907 |
|
|
00FFEF26 044045043041000 fcb "DECA", 0
|
2908 |
|
|
00FFEF2B 020020020020000 fcb " ", 0
|
2909 |
|
|
00FFEF30 04904E043041000 fcb "INCA", 0
|
2910 |
|
|
00FFEF35 054053054041000 fcb "TSTA", 0
|
2911 |
|
|
00FFEF3A 020020020020000 fcb " ", 0
|
2912 |
|
|
00FFEF3F 04304C052041000 fcb "CLRA", 0
|
2913 |
|
|
|
2914 |
|
|
; 50 to 5F
|
2915 |
|
|
00FFEF44 04E045047042000 fcb "NEGB", 0
|
2916 |
|
|
00FFEF49 020020020020000 fcb " ", 0
|
2917 |
|
|
00FFEF4E 020020020020000 fcb " ", 0
|
2918 |
|
|
00FFEF53 04304F04D042000 fcb "COMB", 0
|
2919 |
|
|
00FFEF58 04C053052042000 fcb "LSRB", 0
|
2920 |
|
|
00FFEF5D 020020020020000 fcb " ", 0
|
2921 |
|
|
00FFEF62 05204F052042000 fcb "RORB", 0
|
2922 |
|
|
00FFEF67 041053052042000 fcb "ASRB", 0
|
2923 |
|
|
00FFEF6C 04105304C042000 fcb "ASLB", 0
|
2924 |
|
|
00FFEF71 05204F04C042000 fcb "ROLB", 0
|
2925 |
|
|
00FFEF76 044045043042000 fcb "DECB", 0
|
2926 |
|
|
00FFEF7B 020020020020000 fcb " ", 0
|
2927 |
|
|
00FFEF80 04904E043042000 fcb "INCB", 0
|
2928 |
|
|
00FFEF85 054053054042000 fcb "TSTB", 0
|
2929 |
|
|
00FFEF8A 020020020020000 fcb " ", 0
|
2930 |
|
|
00FFEF8F 04304C052042000 fcb "CLRB", 0
|
2931 |
|
|
|
2932 |
|
|
; 60 to 6F
|
2933 |
|
|
00FFEF94 04E045047020005 fcb "NEG ", NDX
|
2934 |
|
|
00FFEF99 020020020020000 fcb " ", 0
|
2935 |
|
|
00FFEF9E 020020020020000 fcb " ", 0
|
2936 |
|
|
00FFEFA3 04304F04D020005 fcb "COM ", NDX
|
2937 |
|
|
00FFEFA8 04C053052020005 fcb "LSR ", NDX
|
2938 |
|
|
00FFEFAD 020020020020000 fcb " ", 0
|
2939 |
|
|
00FFEFB2 05204F052020005 fcb "ROR ", NDX
|
2940 |
|
|
00FFEFB7 041053052020005 fcb "ASR ", NDX
|
2941 |
|
|
00FFEFBC 04105304C020005 fcb "ASL ", NDX
|
2942 |
|
|
00FFEFC1 05204F04C020005 fcb "ROL ", NDX
|
2943 |
|
|
00FFEFC6 044045043020005 fcb "DEC ", NDX
|
2944 |
|
|
00FFEFCB 020020020020000 fcb " ", 0
|
2945 |
|
|
00FFEFD0 04904E043020005 fcb "INC ", NDX
|
2946 |
|
|
00FFEFD5 054053054020005 fcb "TST ", NDX
|
2947 |
|
|
00FFEFDA 04A04D050020005 fcb "JMP ", NDX
|
2948 |
|
|
00FFEFDF 04304C052020005 fcb "CLR ", NDX
|
2949 |
|
|
|
2950 |
|
|
; 70 to 7F
|
2951 |
|
|
00FFEFE4 04E045047020006 fcb "NEG ", EXT
|
2952 |
|
|
00FFEFE9 020020020020000 fcb " ", 0
|
2953 |
|
|
00FFEFEE 020020020020000 fcb " ", 0
|
2954 |
|
|
00FFEFF3 04304F04D020006 fcb "COM ", EXT
|
2955 |
|
|
00FFEFF8 04C053052020006 fcb "LSR ", EXT
|
2956 |
|
|
00FFEFFD 020020020020000 fcb " ", 0
|
2957 |
|
|
00FFF002 05204F052020006 fcb "ROR ", EXT
|
2958 |
|
|
00FFF007 041053052020006 fcb "ASR ", EXT
|
2959 |
|
|
00FFF00C 04105304C020006 fcb "ASL ", EXT
|
2960 |
|
|
00FFF011 05204F04C020006 fcb "ROL ", EXT
|
2961 |
|
|
00FFF016 044045043020006 fcb "DEC ", EXT
|
2962 |
|
|
00FFF01B 020020020020000 fcb " ", 0
|
2963 |
|
|
00FFF020 04904E043020006 fcb "INC ", EXT
|
2964 |
|
|
00FFF025 054053054020006 fcb "TST ", EXT
|
2965 |
|
|
00FFF02A 04A04D050020006 fcb "JMP ", EXT
|
2966 |
|
|
00FFF02F 04304C052020006 fcb "CLR ", EXT
|
2967 |
|
|
|
2968 |
|
|
; 80 to 8F
|
2969 |
|
|
00FFF034 053055042041003 fcb "SUBA", IMMB
|
2970 |
|
|
00FFF039 04304D050041003 fcb "CMPA", IMMB
|
2971 |
|
|
00FFF03E 053042043041003 fcb "SBCA", IMMB
|
2972 |
|
|
00FFF043 053055042044007 fcb "SUBD", IMMW
|
2973 |
|
|
00FFF048 04104E044041003 fcb "ANDA", IMMB
|
2974 |
|
|
00FFF04D 042049054041003 fcb "BITA", IMMB
|
2975 |
|
|
00FFF052 04C044041020003 fcb "LDA ", IMMB
|
2976 |
|
|
00FFF057 020020020020000 fcb " ", 0
|
2977 |
|
|
00FFF05C 04504F052041003 fcb "EORA", IMMB
|
2978 |
|
|
00FFF061 041044043041003 fcb "ADCA", IMMB
|
2979 |
|
|
00FFF066 04F052041020003 fcb "ORA ", IMMB
|
2980 |
|
|
00FFF06B 041044044041003 fcb "ADDA", IMMB
|
2981 |
|
|
00FFF070 04304D050058007 fcb "CMPX", IMMW
|
2982 |
|
|
00FFF075 042053052020004 fcb "BSR ", SREL
|
2983 |
|
|
00FFF07A 04C044058020007 fcb "LDX ", IMMW
|
2984 |
|
|
00FFF07F 04A04D046020008 fcb "JMF ", FAREXT
|
2985 |
|
|
|
2986 |
|
|
; 90 to 9F
|
2987 |
|
|
00FFF084 053055042041001 fcb "SUBA", DIRECT
|
2988 |
|
|
00FFF089 04304D050041001 fcb "CMPA", DIRECT
|
2989 |
|
|
00FFF08E 053042043041001 fcb "SBCA", DIRECT
|
2990 |
|
|
00FFF093 053055042044001 fcb "SUBD", DIRECT
|
2991 |
|
|
00FFF098 04104E044041001 fcb "ANDA", DIRECT
|
2992 |
|
|
00FFF09D 042049054041001 fcb "BITA", DIRECT
|
2993 |
|
|
00FFF0A2 04C044041020001 fcb "LDA ", DIRECT
|
2994 |
|
|
00FFF0A7 053054041020001 fcb "STA ", DIRECT
|
2995 |
|
|
00FFF0AC 04504F052041001 fcb "EORA", DIRECT
|
2996 |
|
|
00FFF0B1 041044043041001 fcb "ADCA", DIRECT
|
2997 |
|
|
00FFF0B6 04F052041020001 fcb "ORA ", DIRECT
|
2998 |
|
|
00FFF0BB 041044044041001 fcb "ADDA", DIRECT
|
2999 |
|
|
00FFF0C0 04304D050058001 fcb "CMPX", DIRECT
|
3000 |
|
|
00FFF0C5 04A053052020001 fcb "JSR ", DIRECT
|
3001 |
|
|
00FFF0CA 04C044058020001 fcb "LDX ", DIRECT
|
3002 |
|
|
00FFF0CF 053054058020001 fcb "STX ", DIRECT
|
3003 |
|
|
|
3004 |
|
|
; A0 to AF
|
3005 |
|
|
00FFF0D4 053055042041005 fcb "SUBA", NDX
|
3006 |
|
|
00FFF0D9 04304D050041005 fcb "CMPA", NDX
|
3007 |
|
|
00FFF0DE 053042043041005 fcb "SBCA", NDX
|
3008 |
|
|
00FFF0E3 053055042044005 fcb "SUBD", NDX
|
3009 |
|
|
00FFF0E8 04104E044041005 fcb "ANDA", NDX
|
3010 |
|
|
00FFF0ED 042049054041005 fcb "BITA", NDX
|
3011 |
|
|
00FFF0F2 04C044041020005 fcb "LDA ", NDX
|
3012 |
|
|
00FFF0F7 053054041020005 fcb "STA ", NDX
|
3013 |
|
|
00FFF0FC 04504F052041005 fcb "EORA", NDX
|
3014 |
|
|
00FFF101 041044043041005 fcb "ADCA", NDX
|
3015 |
|
|
00FFF106 04F052041020005 fcb "ORA ", NDX
|
3016 |
|
|
00FFF10B 041044044041005 fcb "ADDA", NDX
|
3017 |
|
|
00FFF110 04304D050058005 fcb "CMPX", NDX
|
3018 |
|
|
00FFF115 04A053052020005 fcb "JSR ", NDX
|
3019 |
|
|
00FFF11A 04C044058020005 fcb "LDX ", NDX
|
3020 |
|
|
00FFF11F 053054058020005 fcb "STX ", NDX
|
3021 |
|
|
|
3022 |
|
|
; B0 to BF
|
3023 |
|
|
00FFF124 053055042041006 fcb "SUBA", EXT
|
3024 |
|
|
00FFF129 04304D050041006 fcb "CMPA", EXT
|
3025 |
|
|
00FFF12E 053042043041006 fcb "SBCA", EXT
|
3026 |
|
|
00FFF133 053055042044006 fcb "SUBD", EXT
|
3027 |
|
|
00FFF138 04104E044041006 fcb "ANDA", EXT
|
3028 |
|
|
00FFF13D 042049054041006 fcb "BITA", EXT
|
3029 |
|
|
00FFF142 04C044041020006 fcb "LDA ", EXT
|
3030 |
|
|
00FFF147 053054041020006 fcb "STA ", EXT
|
3031 |
|
|
00FFF14C 04504F052041006 fcb "EORA", EXT
|
3032 |
|
|
00FFF151 041044043041006 fcb "ADCA", EXT
|
3033 |
|
|
00FFF156 04F052041020006 fcb "ORA ", EXT
|
3034 |
|
|
00FFF15B 041044044041006 fcb "ADDA", EXT
|
3035 |
|
|
00FFF160 04304D050058006 fcb "CMPX", EXT
|
3036 |
|
|
00FFF165 04A053052020006 fcb "JSR ", EXT
|
3037 |
|
|
00FFF16A 04C044058020006 fcb "LDX ", EXT
|
3038 |
|
|
00FFF16F 053054058020006 fcb "STX ", EXT
|
3039 |
|
|
|
3040 |
|
|
; C0 to CF
|
3041 |
|
|
00FFF174 053055042042003 fcb "SUBB", IMMB
|
3042 |
|
|
00FFF179 04304D050042003 fcb "CMPB", IMMB
|
3043 |
|
|
00FFF17E 053042043062003 fcb "SBCb", IMMB
|
3044 |
|
|
00FFF183 041044044044007 fcb "ADDD", IMMW
|
3045 |
|
|
00FFF188 04104E044042003 fcb "ANDB", IMMB
|
3046 |
|
|
00FFF18D 042049054042003 fcb "BITB", IMMB
|
3047 |
|
|
00FFF192 04C044042020003 fcb "LDB ", IMMB
|
3048 |
|
|
00FFF197 020020020020000 fcb " ", 0
|
3049 |
|
|
00FFF19C 04504F052042003 fcb "EORB", IMMB
|
3050 |
|
|
00FFF1A1 041044043042003 fcb "ADCB", IMMB
|
3051 |
|
|
00FFF1A6 04F052042020003 fcb "ORB ", IMMB
|
3052 |
|
|
00FFF1AB 041044044042003 fcb "ADDB", IMMB
|
3053 |
|
|
00FFF1B0 04C044044020007 fcb "LDD ", IMMW
|
3054 |
|
|
00FFF1B5 020020020020004 fcb " ", SREL
|
3055 |
|
|
00FFF1BA 04C044055020007 fcb "LDU ", IMMW
|
3056 |
|
|
00FFF1BF 04A053046020008 fcb "JSF ", FAREXT
|
3057 |
|
|
|
3058 |
|
|
; D0 to DF
|
3059 |
|
|
00FFF1C4 053055042042001 fcb "SUBB", DIRECT
|
3060 |
|
|
00FFF1C9 04304D050042001 fcb "CMPB", DIRECT
|
3061 |
|
|
00FFF1CE 053042043042001 fcb "SBCB", DIRECT
|
3062 |
|
|
00FFF1D3 041044044044001 fcb "ADDD", DIRECT
|
3063 |
|
|
00FFF1D8 04104E044042001 fcb "ANDB", DIRECT
|
3064 |
|
|
00FFF1DD 042049054042001 fcb "BITB", DIRECT
|
3065 |
|
|
00FFF1E2 04C044042020001 fcb "LDB ", DIRECT
|
3066 |
|
|
00FFF1E7 053054042020001 fcb "STB ", DIRECT
|
3067 |
|
|
00FFF1EC 04504F052042001 fcb "EORB", DIRECT
|
3068 |
|
|
00FFF1F1 041044043042001 fcb "ADCB", DIRECT
|
3069 |
|
|
00FFF1F6 04F052042020001 fcb "ORB ", DIRECT
|
3070 |
|
|
00FFF1FB 041044044042001 fcb "ADDB", DIRECT
|
3071 |
|
|
00FFF200 04C044044020001 fcb "LDD ", DIRECT
|
3072 |
|
|
00FFF205 053054044020001 fcb "STD ", DIRECT
|
3073 |
|
|
00FFF20A 04C044055020001 fcb "LDU ", DIRECT
|
3074 |
|
|
00FFF20F 053054055020001 fcb "STU ", DIRECT
|
3075 |
|
|
|
3076 |
|
|
; E0 to EF
|
3077 |
|
|
00FFF214 053055042042005 fcb "SUBB", NDX
|
3078 |
|
|
00FFF219 04304D050042005 fcb "CMPB", NDX
|
3079 |
|
|
00FFF21E 053042043042005 fcb "SBCB", NDX
|
3080 |
|
|
00FFF223 041044044044005 fcb "ADDD", NDX
|
3081 |
|
|
00FFF228 04104E044042005 fcb "ANDB", NDX
|
3082 |
|
|
00FFF22D 042049054042005 fcb "BITB", NDX
|
3083 |
|
|
00FFF232 04C044042020005 fcb "LDB ", NDX
|
3084 |
|
|
00FFF237 053054042020005 fcb "STB ", NDX
|
3085 |
|
|
00FFF23C 04504F052042005 fcb "EORB", NDX
|
3086 |
|
|
00FFF241 041044043042005 fcb "ADCB", NDX
|
3087 |
|
|
00FFF246 04F052042020005 fcb "ORB ", NDX
|
3088 |
|
|
00FFF24B 041044044042005 fcb "ADDB", NDX
|
3089 |
|
|
00FFF250 04C044044020005 fcb "LDD ", NDX
|
3090 |
|
|
00FFF255 053054044020005 fcb "STD ", NDX
|
3091 |
|
|
00FFF25A 04C044055020005 fcb "LDU ", NDX
|
3092 |
|
|
00FFF25F 053054055020005 fcb "STU ", NDX
|
3093 |
|
|
|
3094 |
|
|
; F0 to FF
|
3095 |
|
|
00FFF264 053055042042006 fcb "SUBB", EXT
|
3096 |
|
|
00FFF269 04304D050042006 fcb "CMPB", EXT
|
3097 |
|
|
00FFF26E 053042043042006 fcb "SBCB", EXT
|
3098 |
|
|
00FFF273 041044044044006 fcb "ADDD", EXT
|
3099 |
|
|
00FFF278 04104E044042006 fcb "ANDB", EXT
|
3100 |
|
|
00FFF27D 042049054042006 fcb "BITB", EXT
|
3101 |
|
|
00FFF282 04C044042020006 fcb "LDB ", EXT
|
3102 |
|
|
00FFF287 053054042020006 fcb "STB ", EXT
|
3103 |
|
|
00FFF28C 04504F052042006 fcb "EORB", EXT
|
3104 |
|
|
00FFF291 041044043042006 fcb "ADCB", EXT
|
3105 |
|
|
00FFF296 04F052042020006 fcb "ORB ", EXT
|
3106 |
|
|
00FFF29B 041044044042006 fcb "ADDB", EXT
|
3107 |
|
|
00FFF2A0 04C044044020006 fcb "LDD ", EXT
|
3108 |
|
|
00FFF2A5 053054044020006 fcb "STD ", EXT
|
3109 |
|
|
00FFF2AA 04C044055020006 fcb "LDU ", EXT
|
3110 |
|
|
00FFF2AF 053054055020006 fcb "STU ", EXT
|
3111 |
|
|
|
3112 |
|
|
; 120 to 12F
|
3113 |
|
|
distbl2:
|
3114 |
|
|
00FFF2B4 04C042052041 fcb "LBRA"
|
3115 |
|
|
00FFF2B8 04C04205204E fcb "LBRN"
|
3116 |
|
|
00FFF2BC 04C042048049 fcb "LBHI"
|
3117 |
|
|
00FFF2C0 04C04204C053 fcb "LBLS"
|
3118 |
|
|
00FFF2C4 04C042048053 fcb "LBHS"
|
3119 |
|
|
00FFF2C8 04C04204C04F fcb "LBLO"
|
3120 |
|
|
00FFF2CC 04C04204E045 fcb "LBNE"
|
3121 |
|
|
00FFF2D0 04C042045051 fcb "LBEQ"
|
3122 |
|
|
00FFF2D4 04C042056043 fcb "LBVC"
|
3123 |
|
|
00FFF2D8 04C042056053 fcb "LBVS"
|
3124 |
|
|
00FFF2DC 04C04205004C fcb "LBPL"
|
3125 |
|
|
00FFF2E0 04C04204D049 fcb "LBMI"
|
3126 |
|
|
00FFF2E4 04C042047045 fcb "LBGE"
|
3127 |
|
|
00FFF2E8 04C04204C054 fcb "LBLT"
|
3128 |
|
|
00FFF2EC 04C042047054 fcb "LBGT"
|
3129 |
|
|
00FFF2F0 04C04204C045 fcb "LBLE"
|
3130 |
|
|
|
3131 |
|
|
distbl3:
|
3132 |
|
|
00FFF2F4 13F fcb $13F
|
3133 |
|
|
00FFF2F5 183 fcb $183
|
3134 |
|
|
00FFF2F6 18C fcb $18C
|
3135 |
|
|
00FFF2F7 18E fcb $18E
|
3136 |
|
|
00FFF2F8 193 fcb $193
|
3137 |
|
|
00FFF2F9 19C fcb $19C
|
3138 |
|
|
00FFF2FA 19E fcb $19E
|
3139 |
|
|
00FFF2FB 19F fcb $19F
|
3140 |
|
|
00FFF2FC 1A3 fcb $1A3
|
3141 |
|
|
00FFF2FD 1AC fcb $1AC
|
3142 |
|
|
00FFF2FE 1AE fcb $1AE
|
3143 |
|
|
00FFF2FF 1AF fcb $1AF
|
3144 |
|
|
00FFF300 1B3 fcb $1B3
|
3145 |
|
|
00FFF301 1BC fcb $1BC
|
3146 |
|
|
00FFF302 1BE fcb $1BE
|
3147 |
|
|
00FFF303 1BF fcb $1BF
|
3148 |
|
|
00FFF304 1CE fcb $1CE
|
3149 |
|
|
00FFF305 1DE fcb $1DE
|
3150 |
|
|
00FFF306 1DF fcb $1DF
|
3151 |
|
|
00FFF307 1EE fcb $1EE
|
3152 |
|
|
00FFF308 1EF fcb $1EF
|
3153 |
|
|
00FFF309 1FE fcb $1FE
|
3154 |
|
|
00FFF30A 1FF fcb $1FF
|
3155 |
|
|
00FFF30B 23F fcb $23F
|
3156 |
|
|
00FFF30C 283 fcb $283
|
3157 |
|
|
00FFF30D 28C fcb $28C
|
3158 |
|
|
00FFF30E 293 fcb $293
|
3159 |
|
|
00FFF30F 29C fcb $29C
|
3160 |
|
|
00FFF310 2A3 fcb $2A3
|
3161 |
|
|
00FFF311 2AC fcb $2AC
|
3162 |
|
|
00FFF312 2B3 fcb $2B3
|
3163 |
|
|
00FFF313 2BC fcb $2BC
|
3164 |
|
|
|
3165 |
|
|
distbl4:
|
3166 |
|
|
00FFF314 053057049032000 fcb "SWI2", 0
|
3167 |
|
|
00FFF319 04304D050044007 fcb "CMPD", IMMW
|
3168 |
|
|
00FFF31E 04304D050059007 fcb "CMPY", IMMW
|
3169 |
|
|
00FFF323 04C044059020007 fcb "LDY ", IMMW
|
3170 |
|
|
00FFF328 04304D050044001 fcb "CMPD", DIRECT
|
3171 |
|
|
00FFF32D 04304D050059001 fcb "CMPY", DIRECT
|
3172 |
|
|
00FFF332 04C044059020001 fcb "LDY ", DIRECT
|
3173 |
|
|
00FFF337 053054059020001 fcb "STY ", DIRECT
|
3174 |
|
|
00FFF33C 04304D050044005 fcb "CMPD", NDX
|
3175 |
|
|
00FFF341 04304D050059005 fcb "CMPY", NDX
|
3176 |
|
|
00FFF346 04C044059020005 fcb "LDY ", NDX
|
3177 |
|
|
00FFF34B 053054059020005 fcb "STY ", NDX
|
3178 |
|
|
00FFF350 04304D050044006 fcb "CMPD", EXT
|
3179 |
|
|
00FFF355 04304D050059006 fcb "CMPY", EXT
|
3180 |
|
|
00FFF35A 04C044059020006 fcb "LDY ", EXT
|
3181 |
|
|
00FFF35F 053054059020006 fcb "STY ", EXT
|
3182 |
|
|
00FFF364 04C044053020007 fcb "LDS ", IMMW
|
3183 |
|
|
00FFF369 04C044053020001 fcb "LDS ", DIRECT
|
3184 |
|
|
00FFF36E 053054053020001 fcb "STS ", DIRECT
|
3185 |
|
|
00FFF373 04C044053020005 fcb "LDS ", NDX
|
3186 |
|
|
00FFF378 053054053020005 fcb "STS ", NDX
|
3187 |
|
|
00FFF37D 04C044053020006 fcb "LDS ", EXT
|
3188 |
|
|
00FFF382 053054053020006 fcb "STS ", EXT
|
3189 |
|
|
00FFF387 053057049033000 fcb "SWI3", 0
|
3190 |
|
|
00FFF38C 04304D050055007 fcb "CMPU", IMMW
|
3191 |
|
|
00FFF391 04304D050053007 fcb "CMPS", IMMW
|
3192 |
|
|
00FFF396 04304D050055001 fcb "CMPU", DIRECT
|
3193 |
|
|
00FFF39B 04304D050053001 fcb "CMPS", DIRECT
|
3194 |
|
|
00FFF3A0 04304D050055005 fcb "CMPU", NDX
|
3195 |
|
|
00FFF3A5 04304D050053005 fcb "CMPS", NDX
|
3196 |
|
|
00FFF3AA 04304D050055006 fcb "CMPU", EXT
|
3197 |
|
|
00FFF3AF 04304D050053006 fcb "CMPS", EXT
|
3198 |
|
|
|
3199 |
|
|
disassem:
|
3200 |
14 |
robfinch |
00FFF3B4 00F15F clr farflag
|
3201 |
|
|
00FFF3B6 0170006AD lbsr GetRange
|
3202 |
|
|
00FFF3B9 017FFDD16 lbsr CRLF
|
3203 |
13 |
robfinch |
*** warning 1: Long branch within short branch range could be optimized
|
3204 |
14 |
robfinch |
00FFF3BC 1BE000922 ldy mon_r1+2
|
3205 |
13 |
robfinch |
disLoop1:
|
3206 |
14 |
robfinch |
00FFF3BF 01F020 tfr y,d
|
3207 |
|
|
00FFF3C1 017FFF03D lbsr DispWordAsHex
|
3208 |
13 |
robfinch |
*** warning 1: Long branch within short branch range could be optimized
|
3209 |
14 |
robfinch |
00FFF3C4 0C6020 ldb #' '
|
3210 |
|
|
00FFF3C6 017FFF949 lbsr OUTCH
|
3211 |
13 |
robfinch |
*** warning 1: Long branch within short branch range could be optimized
|
3212 |
14 |
robfinch |
00FFF3C9 0E6A00 ldb ,y+
|
3213 |
|
|
00FFF3CB 0C5300 bitb #$300
|
3214 |
|
|
00FFF3CD 12600041F lbne dis1
|
3215 |
|
|
00FFF3D0 0C40FF andb #$FF ; mask off extra bits
|
3216 |
|
|
00FFF3D2 0C1015 cmpb #$15
|
3217 |
|
|
00FFF3D4 026004 bne dis20
|
3218 |
|
|
00FFF3D6 0D715F stb farflag
|
3219 |
|
|
00FFF3D8 020FE5 bra disLoop1
|
3220 |
13 |
robfinch |
dis20:
|
3221 |
14 |
robfinch |
00FFF3DA 08EFFEDB4 ldx #distbl1
|
3222 |
13 |
robfinch |
dis23:
|
3223 |
14 |
robfinch |
00FFF3DD 086005 lda #5
|
3224 |
|
|
00FFF3DF 03D mul
|
3225 |
|
|
00FFF3E0 03A abx
|
3226 |
|
|
00FFF3E1 0E6800 ldb ,x+
|
3227 |
|
|
00FFF3E3 017FFF92C lbsr OUTCH
|
3228 |
13 |
robfinch |
*** warning 1: Long branch within short branch range could be optimized
|
3229 |
14 |
robfinch |
00FFF3E6 0E6800 ldb ,x+
|
3230 |
|
|
00FFF3E8 017FFF927 lbsr OUTCH
|
3231 |
13 |
robfinch |
*** warning 1: Long branch within short branch range could be optimized
|
3232 |
14 |
robfinch |
00FFF3EB 0E6800 ldb ,x+
|
3233 |
|
|
00FFF3ED 017FFF922 lbsr OUTCH
|
3234 |
13 |
robfinch |
*** warning 1: Long branch within short branch range could be optimized
|
3235 |
14 |
robfinch |
00FFF3F0 0E6800 ldb ,x+
|
3236 |
|
|
00FFF3F2 017FFF91D lbsr OUTCH
|
3237 |
13 |
robfinch |
*** warning 1: Long branch within short branch range could be optimized
|
3238 |
14 |
robfinch |
00FFF3F5 0C6020 ldb #' '
|
3239 |
|
|
00FFF3F7 017FFF918 lbsr OUTCH
|
3240 |
13 |
robfinch |
*** warning 1: Long branch within short branch range could be optimized
|
3241 |
14 |
robfinch |
00FFF3FA 0E6800 ldb ,x+
|
3242 |
|
|
00FFF3FC 127000443 lbeq disNextLine
|
3243 |
|
|
00FFF3FF 0C1001 cmpb #DIRECT
|
3244 |
|
|
00FFF401 026008 bne disNotDirect
|
3245 |
|
|
00FFF403 0E6A00 ldb ,y+
|
3246 |
|
|
00FFF405 017FFF002 lbsr DispByteAsHex
|
3247 |
13 |
robfinch |
*** warning 1: Long branch within short branch range could be optimized
|
3248 |
14 |
robfinch |
00FFF408 016000437 lbra disNextLine
|
3249 |
13 |
robfinch |
disNotDirect:
|
3250 |
14 |
robfinch |
00FFF40B 0C1002 cmpb #LSREL
|
3251 |
|
|
00FFF40D 02600C bne disNotLRel
|
3252 |
13 |
robfinch |
dis21:
|
3253 |
14 |
robfinch |
00FFF40F 0ECA01 ldd ,y++
|
3254 |
13 |
robfinch |
dis2:
|
3255 |
14 |
robfinch |
00FFF411 030A0B leax d,y
|
3256 |
|
|
00FFF413 01F010 tfr x,d
|
3257 |
|
|
00FFF415 017FFEFE9 lbsr DispWordAsHex
|
3258 |
13 |
robfinch |
*** warning 1: Long branch within short branch range could be optimized
|
3259 |
14 |
robfinch |
00FFF418 016000427 lbra disNextLine
|
3260 |
13 |
robfinch |
disNotLRel:
|
3261 |
14 |
robfinch |
00FFF41B 0C1004 cmpb #SREL
|
3262 |
|
|
00FFF41D 026005 bne disNotRel
|
3263 |
|
|
00FFF41F 0E6A00 ldb ,y+
|
3264 |
|
|
00FFF421 04F clra
|
3265 |
|
|
00FFF422 020FED bra dis2
|
3266 |
13 |
robfinch |
disNotRel:
|
3267 |
14 |
robfinch |
00FFF424 0C1005 cmpb #NDX
|
3268 |
|
|
00FFF426 026385 bne disNotNdx
|
3269 |
|
|
00FFF428 0E6A00 ldb ,y+
|
3270 |
|
|
00FFF42A 0C5800 bitb #$800
|
3271 |
|
|
00FFF42C 02601E bne disNot9 ; test for offset 9 mode
|
3272 |
|
|
00FFF42E 034004 pshs b
|
3273 |
|
|
00FFF430 0C41FF andb #$1FF ; mask to offset bits
|
3274 |
|
|
00FFF432 04F clra ;
|
3275 |
|
|
00FFF433 0C5100 bitb #$100 ; test for negative offset
|
3276 |
|
|
00FFF435 027003 beq dis3
|
3277 |
|
|
00FFF437 04A deca ; sign extend offset
|
3278 |
|
|
00FFF438 0CAE00 orb #$E00
|
3279 |
13 |
robfinch |
dis3:
|
3280 |
14 |
robfinch |
00FFF43A 017FFEFC4 lbsr DispWordAsHex
|
3281 |
13 |
robfinch |
*** warning 1: Long branch within short branch range could be optimized
|
3282 |
14 |
robfinch |
00FFF43D 0C602C ldb #','
|
3283 |
|
|
00FFF43F 017FFF8D0 lbsr OUTCH
|
3284 |
13 |
robfinch |
*** warning 1: Long branch within short branch range could be optimized
|
3285 |
14 |
robfinch |
00FFF442 035004 puls b
|
3286 |
|
|
00FFF444 08D42E bsr disNdxReg
|
3287 |
|
|
00FFF446 017FFF8C9 lbsr OUTCH
|
3288 |
13 |
robfinch |
*** warning 1: Long branch within short branch range could be optimized
|
3289 |
14 |
robfinch |
00FFF449 0160003F6 lbra disNextLine
|
3290 |
13 |
robfinch |
disNot9:
|
3291 |
14 |
robfinch |
00FFF44C 034004 pshs b
|
3292 |
|
|
00FFF44E 0C5100 bitb #$100 ; check if indirect
|
3293 |
|
|
00FFF450 027005 beq dis4
|
3294 |
|
|
00FFF452 0C605B ldb #'['
|
3295 |
|
|
00FFF454 017FFF8BB lbsr OUTCH
|
3296 |
13 |
robfinch |
*** warning 1: Long branch within short branch range could be optimized
|
3297 |
|
|
dis4:
|
3298 |
14 |
robfinch |
00FFF457 0E6E04 ldb ,s ; get back b
|
3299 |
|
|
00FFF459 0C400F andb #15
|
3300 |
|
|
00FFF45B 026030 bne disNotRplus
|
3301 |
|
|
00FFF45D 0E6E04 ldb ,s
|
3302 |
|
|
00FFF45F 0C5080 bitb #$80 ; outer indexed?
|
3303 |
|
|
00FFF461 027005 beq dis5
|
3304 |
|
|
00FFF463 0C605D ldb #']'
|
3305 |
|
|
00FFF465 017FFF8AA lbsr OUTCH
|
3306 |
13 |
robfinch |
*** warning 1: Long branch within short branch range could be optimized
|
3307 |
|
|
dis5:
|
3308 |
14 |
robfinch |
00FFF468 0C602C ldb #','
|
3309 |
|
|
00FFF46A 017FFF8A5 lbsr OUTCH
|
3310 |
13 |
robfinch |
*** warning 1: Long branch within short branch range could be optimized
|
3311 |
14 |
robfinch |
00FFF46D 0E6E04 ldb ,s
|
3312 |
|
|
00FFF46F 08D403 bsr disNdxReg
|
3313 |
|
|
00FFF471 017FFF89E lbsr OUTCH
|
3314 |
13 |
robfinch |
*** warning 1: Long branch within short branch range could be optimized
|
3315 |
14 |
robfinch |
00FFF474 0C602B ldb #'+'
|
3316 |
|
|
00FFF476 017FFF899 lbsr OUTCH
|
3317 |
13 |
robfinch |
*** warning 1: Long branch within short branch range could be optimized
|
3318 |
14 |
robfinch |
00FFF479 035004 puls b
|
3319 |
|
|
00FFF47B 0C5100 bitb #$100
|
3320 |
|
|
00FFF47D 1270003C2 lbeq disNextLine
|
3321 |
|
|
00FFF480 0C5080 bitb #$80
|
3322 |
|
|
00FFF482 1260003BD lbne disNextLine
|
3323 |
|
|
00FFF485 0C605D ldb #']'
|
3324 |
|
|
00FFF487 017FFF888 lbsr OUTCH
|
3325 |
13 |
robfinch |
*** warning 1: Long branch within short branch range could be optimized
|
3326 |
14 |
robfinch |
00FFF48A 0160003B5 lbra disNextLine
|
3327 |
13 |
robfinch |
disNotRplus:
|
3328 |
14 |
robfinch |
00FFF48D 0C1001 cmpb #1
|
3329 |
|
|
00FFF48F 026033 bne disNotRplusplus
|
3330 |
|
|
00FFF491 0E6E04 ldb ,s
|
3331 |
|
|
00FFF493 0C5080 bitb #$80 ; outer indexed?
|
3332 |
|
|
00FFF495 027005 beq dis6
|
3333 |
|
|
00FFF497 0C605D ldb #']'
|
3334 |
|
|
00FFF499 017FFF876 lbsr OUTCH
|
3335 |
13 |
robfinch |
*** warning 1: Long branch within short branch range could be optimized
|
3336 |
|
|
dis6:
|
3337 |
14 |
robfinch |
00FFF49C 0C602C ldb #','
|
3338 |
|
|
00FFF49E 017FFF871 lbsr OUTCH
|
3339 |
13 |
robfinch |
*** warning 1: Long branch within short branch range could be optimized
|
3340 |
14 |
robfinch |
00FFF4A1 0E6E04 ldb ,s
|
3341 |
|
|
00FFF4A3 08D3CF bsr disNdxReg
|
3342 |
|
|
00FFF4A5 017FFF86A lbsr OUTCH
|
3343 |
13 |
robfinch |
*** warning 1: Long branch within short branch range could be optimized
|
3344 |
14 |
robfinch |
00FFF4A8 0C602B ldb #'+'
|
3345 |
|
|
00FFF4AA 017FFF865 lbsr OUTCH
|
3346 |
13 |
robfinch |
*** warning 1: Long branch within short branch range could be optimized
|
3347 |
14 |
robfinch |
00FFF4AD 017FFF862 lbsr OUTCH
|
3348 |
13 |
robfinch |
*** warning 1: Long branch within short branch range could be optimized
|
3349 |
14 |
robfinch |
00FFF4B0 035004 puls b
|
3350 |
|
|
00FFF4B2 0C5100 bitb #$100
|
3351 |
|
|
00FFF4B4 12700038B lbeq disNextLine
|
3352 |
|
|
00FFF4B7 0C5080 bitb #$80
|
3353 |
|
|
00FFF4B9 126000386 lbne disNextLine
|
3354 |
|
|
00FFF4BC 0C605D ldb #']'
|
3355 |
|
|
00FFF4BE 017FFF851 lbsr OUTCH
|
3356 |
13 |
robfinch |
*** warning 1: Long branch within short branch range could be optimized
|
3357 |
14 |
robfinch |
00FFF4C1 01600037E lbra disNextLine
|
3358 |
13 |
robfinch |
disNotRplusplus:
|
3359 |
14 |
robfinch |
00FFF4C4 0C1002 cmpb #2
|
3360 |
|
|
00FFF4C6 026030 bne disNotRminus
|
3361 |
|
|
00FFF4C8 0E6E04 ldb ,s
|
3362 |
|
|
00FFF4CA 0C5080 bitb #$80 ; outer indexed?
|
3363 |
|
|
00FFF4CC 027005 beq dis7
|
3364 |
|
|
00FFF4CE 0C605D ldb #']'
|
3365 |
|
|
00FFF4D0 017FFF83F lbsr OUTCH
|
3366 |
13 |
robfinch |
*** warning 1: Long branch within short branch range could be optimized
|
3367 |
|
|
dis7:
|
3368 |
14 |
robfinch |
00FFF4D3 0C602C ldb #','
|
3369 |
|
|
00FFF4D5 017FFF83A lbsr OUTCH
|
3370 |
13 |
robfinch |
*** warning 1: Long branch within short branch range could be optimized
|
3371 |
14 |
robfinch |
00FFF4D8 0E6E04 ldb ,s
|
3372 |
|
|
00FFF4DA 08D398 bsr disNdxReg
|
3373 |
|
|
00FFF4DC 017FFF833 lbsr OUTCH
|
3374 |
13 |
robfinch |
*** warning 1: Long branch within short branch range could be optimized
|
3375 |
14 |
robfinch |
00FFF4DF 0C602D ldb #'-'
|
3376 |
|
|
00FFF4E1 017FFF82E lbsr OUTCH
|
3377 |
13 |
robfinch |
*** warning 1: Long branch within short branch range could be optimized
|
3378 |
14 |
robfinch |
00FFF4E4 035004 puls b
|
3379 |
|
|
00FFF4E6 0C5100 bitb #$100
|
3380 |
|
|
00FFF4E8 127000357 lbeq disNextLine
|
3381 |
|
|
00FFF4EB 0C5080 bitb #$80
|
3382 |
|
|
00FFF4ED 126000352 lbne disNextLine
|
3383 |
|
|
00FFF4F0 0C605D ldb #']'
|
3384 |
|
|
00FFF4F2 017FFF81D lbsr OUTCH
|
3385 |
13 |
robfinch |
*** warning 1: Long branch within short branch range could be optimized
|
3386 |
14 |
robfinch |
00FFF4F5 01600034A lbra disNextLine
|
3387 |
13 |
robfinch |
disNotRminus:
|
3388 |
14 |
robfinch |
00FFF4F8 0C1003 cmpb #3
|
3389 |
|
|
00FFF4FA 026033 bne disNotRminusminus
|
3390 |
|
|
00FFF4FC 0E6E04 ldb ,s
|
3391 |
|
|
00FFF4FE 0C5080 bitb #$80 ; outer indexed?
|
3392 |
|
|
00FFF500 027005 beq dis8
|
3393 |
|
|
00FFF502 0C605D ldb #']'
|
3394 |
|
|
00FFF504 017FFF80B lbsr OUTCH
|
3395 |
13 |
robfinch |
*** warning 1: Long branch within short branch range could be optimized
|
3396 |
|
|
dis8:
|
3397 |
14 |
robfinch |
00FFF507 0C602C ldb #','
|
3398 |
|
|
00FFF509 017FFF806 lbsr OUTCH
|
3399 |
13 |
robfinch |
*** warning 1: Long branch within short branch range could be optimized
|
3400 |
14 |
robfinch |
00FFF50C 0E6E04 ldb ,s
|
3401 |
|
|
00FFF50E 08D364 bsr disNdxReg
|
3402 |
|
|
00FFF510 017FFF7FF lbsr OUTCH
|
3403 |
13 |
robfinch |
*** warning 1: Long branch within short branch range could be optimized
|
3404 |
14 |
robfinch |
00FFF513 0C602D ldb #'-'
|
3405 |
|
|
00FFF515 017FFF7FA lbsr OUTCH
|
3406 |
13 |
robfinch |
*** warning 1: Long branch within short branch range could be optimized
|
3407 |
14 |
robfinch |
00FFF518 017FFF7F7 lbsr OUTCH
|
3408 |
13 |
robfinch |
*** warning 1: Long branch within short branch range could be optimized
|
3409 |
14 |
robfinch |
00FFF51B 035004 puls b
|
3410 |
|
|
00FFF51D 0C5100 bitb #$100
|
3411 |
|
|
00FFF51F 127000320 lbeq disNextLine
|
3412 |
|
|
00FFF522 0C5080 bitb #$80
|
3413 |
|
|
00FFF524 12600031B lbne disNextLine
|
3414 |
|
|
00FFF527 0C605D ldb #']'
|
3415 |
|
|
00FFF529 017FFF7E6 lbsr OUTCH
|
3416 |
13 |
robfinch |
*** warning 1: Long branch within short branch range could be optimized
|
3417 |
14 |
robfinch |
00FFF52C 016000313 lbra disNextLine
|
3418 |
13 |
robfinch |
disNotRminusminus:
|
3419 |
14 |
robfinch |
00FFF52F 0C1004 cmpb #4
|
3420 |
|
|
00FFF531 02602B bne disNotR
|
3421 |
|
|
00FFF533 0E6E04 ldb ,s
|
3422 |
|
|
00FFF535 0C5080 bitb #$80 ; outer indexed?
|
3423 |
|
|
00FFF537 027005 beq dis9
|
3424 |
|
|
00FFF539 0C605D ldb #']'
|
3425 |
|
|
00FFF53B 017FFF7D4 lbsr OUTCH
|
3426 |
13 |
robfinch |
*** warning 1: Long branch within short branch range could be optimized
|
3427 |
|
|
dis9:
|
3428 |
14 |
robfinch |
00FFF53E 0C602C ldb #','
|
3429 |
|
|
00FFF540 017FFF7CF lbsr OUTCH
|
3430 |
13 |
robfinch |
*** warning 1: Long branch within short branch range could be optimized
|
3431 |
14 |
robfinch |
00FFF543 0E6E04 ldb ,s
|
3432 |
|
|
00FFF545 08D32D bsr disNdxReg
|
3433 |
|
|
00FFF547 017FFF7C8 lbsr OUTCH
|
3434 |
13 |
robfinch |
*** warning 1: Long branch within short branch range could be optimized
|
3435 |
14 |
robfinch |
00FFF54A 035004 puls b
|
3436 |
|
|
00FFF54C 0C5100 bitb #$100
|
3437 |
|
|
00FFF54E 1270002F1 lbeq disNextLine
|
3438 |
|
|
00FFF551 0C5080 bitb #$80
|
3439 |
|
|
00FFF553 1260002EC lbne disNextLine
|
3440 |
|
|
00FFF556 0C605D ldb #']'
|
3441 |
|
|
00FFF558 017FFF7B7 lbsr OUTCH
|
3442 |
13 |
robfinch |
*** warning 1: Long branch within short branch range could be optimized
|
3443 |
14 |
robfinch |
00FFF55B 0160002E4 lbra disNextLine
|
3444 |
13 |
robfinch |
disNotR:
|
3445 |
14 |
robfinch |
00FFF55E 0C1005 cmpb #5
|
3446 |
|
|
00FFF560 026038 bne disNotBOffs
|
3447 |
|
|
00FFF562 0C6042 ldb #'B'
|
3448 |
|
|
00FFF564 017FFF7AB lbsr OUTCH
|
3449 |
13 |
robfinch |
*** warning 1: Long branch within short branch range could be optimized
|
3450 |
14 |
robfinch |
00FFF567 0E6E04 ldb ,s
|
3451 |
|
|
00FFF569 0C5080 bitb #$80 ; outer indexed?
|
3452 |
|
|
00FFF56B 027005 beq dis10
|
3453 |
|
|
00FFF56D 0C605D ldb #']'
|
3454 |
|
|
00FFF56F 017FFF7A0 lbsr OUTCH
|
3455 |
13 |
robfinch |
*** warning 1: Long branch within short branch range could be optimized
|
3456 |
|
|
dis10:
|
3457 |
14 |
robfinch |
00FFF572 0C602C ldb #','
|
3458 |
|
|
00FFF574 017FFF79B lbsr OUTCH
|
3459 |
13 |
robfinch |
*** warning 1: Long branch within short branch range could be optimized
|
3460 |
14 |
robfinch |
00FFF577 0E6E04 ldb ,s
|
3461 |
|
|
00FFF579 08D2F9 bsr disNdxReg
|
3462 |
|
|
00FFF57B 017FFF794 lbsr OUTCH
|
3463 |
13 |
robfinch |
*** warning 1: Long branch within short branch range could be optimized
|
3464 |
14 |
robfinch |
00FFF57E 0C602D ldb #'-'
|
3465 |
|
|
00FFF580 017FFF78F lbsr OUTCH
|
3466 |
13 |
robfinch |
*** warning 1: Long branch within short branch range could be optimized
|
3467 |
14 |
robfinch |
00FFF583 017FFF78C lbsr OUTCH
|
3468 |
13 |
robfinch |
*** warning 1: Long branch within short branch range could be optimized
|
3469 |
14 |
robfinch |
00FFF586 035004 puls b
|
3470 |
|
|
00FFF588 0C5100 bitb #$100
|
3471 |
|
|
00FFF58A 1270002B5 lbeq disNextLine
|
3472 |
|
|
00FFF58D 0C5080 bitb #$80
|
3473 |
|
|
00FFF58F 1260002B0 lbne disNextLine
|
3474 |
|
|
00FFF592 0C605D ldb #']'
|
3475 |
|
|
00FFF594 017FFF77B lbsr OUTCH
|
3476 |
13 |
robfinch |
*** warning 1: Long branch within short branch range could be optimized
|
3477 |
14 |
robfinch |
00FFF597 0160002A8 lbra disNextLine
|
3478 |
13 |
robfinch |
disNotBOffs:
|
3479 |
14 |
robfinch |
00FFF59A 0C1006 cmpb #6
|
3480 |
|
|
00FFF59C 026038 bne disNotAOffs
|
3481 |
|
|
00FFF59E 0C6041 ldb #'A'
|
3482 |
|
|
00FFF5A0 017FFF76F lbsr OUTCH
|
3483 |
13 |
robfinch |
*** warning 1: Long branch within short branch range could be optimized
|
3484 |
14 |
robfinch |
00FFF5A3 0E6E04 ldb ,s
|
3485 |
|
|
00FFF5A5 0C5080 bitb #$80 ; outer indexed?
|
3486 |
|
|
00FFF5A7 027005 beq dis11
|
3487 |
|
|
00FFF5A9 0C605D ldb #']'
|
3488 |
|
|
00FFF5AB 017FFF764 lbsr OUTCH
|
3489 |
13 |
robfinch |
*** warning 1: Long branch within short branch range could be optimized
|
3490 |
|
|
dis11:
|
3491 |
14 |
robfinch |
00FFF5AE 0C602C ldb #','
|
3492 |
|
|
00FFF5B0 017FFF75F lbsr OUTCH
|
3493 |
13 |
robfinch |
*** warning 1: Long branch within short branch range could be optimized
|
3494 |
14 |
robfinch |
00FFF5B3 0E6E04 ldb ,s
|
3495 |
|
|
00FFF5B5 08D2BD bsr disNdxReg
|
3496 |
|
|
00FFF5B7 017FFF758 lbsr OUTCH
|
3497 |
13 |
robfinch |
*** warning 1: Long branch within short branch range could be optimized
|
3498 |
14 |
robfinch |
00FFF5BA 0C602D ldb #'-'
|
3499 |
|
|
00FFF5BC 017FFF753 lbsr OUTCH
|
3500 |
13 |
robfinch |
*** warning 1: Long branch within short branch range could be optimized
|
3501 |
14 |
robfinch |
00FFF5BF 017FFF750 lbsr OUTCH
|
3502 |
13 |
robfinch |
*** warning 1: Long branch within short branch range could be optimized
|
3503 |
14 |
robfinch |
00FFF5C2 035004 puls b
|
3504 |
|
|
00FFF5C4 0C5100 bitb #$100
|
3505 |
|
|
00FFF5C6 127000279 lbeq disNextLine
|
3506 |
|
|
00FFF5C9 0C5080 bitb #$80
|
3507 |
|
|
00FFF5CB 126000274 lbne disNextLine
|
3508 |
|
|
00FFF5CE 0C605D ldb #']'
|
3509 |
|
|
00FFF5D0 017FFF73F lbsr OUTCH
|
3510 |
13 |
robfinch |
*** warning 1: Long branch within short branch range could be optimized
|
3511 |
14 |
robfinch |
00FFF5D3 01600026C lbra disNextLine
|
3512 |
13 |
robfinch |
disNotAOffs:
|
3513 |
14 |
robfinch |
00FFF5D6 0C1008 cmpb #8
|
3514 |
|
|
00FFF5D8 026039 bne disNotBO
|
3515 |
|
|
00FFF5DA 0E6A00 ldb ,y+
|
3516 |
|
|
00FFF5DC 01D sex
|
3517 |
|
|
00FFF5DD 017FFEE21 lbsr DispWordAsHex
|
3518 |
13 |
robfinch |
*** warning 1: Long branch within short branch range could be optimized
|
3519 |
14 |
robfinch |
00FFF5E0 0E6E04 ldb ,s
|
3520 |
|
|
00FFF5E2 0C5080 bitb #$80 ; outer indexed?
|
3521 |
|
|
00FFF5E4 027005 beq dis12
|
3522 |
|
|
00FFF5E6 0C605D ldb #']'
|
3523 |
|
|
00FFF5E8 017FFF727 lbsr OUTCH
|
3524 |
13 |
robfinch |
*** warning 1: Long branch within short branch range could be optimized
|
3525 |
|
|
dis12:
|
3526 |
14 |
robfinch |
00FFF5EB 0C602C ldb #','
|
3527 |
|
|
00FFF5ED 017FFF722 lbsr OUTCH
|
3528 |
13 |
robfinch |
*** warning 1: Long branch within short branch range could be optimized
|
3529 |
14 |
robfinch |
00FFF5F0 0E6E04 ldb ,s
|
3530 |
|
|
00FFF5F2 08D280 bsr disNdxReg
|
3531 |
|
|
00FFF5F4 017FFF71B lbsr OUTCH
|
3532 |
13 |
robfinch |
*** warning 1: Long branch within short branch range could be optimized
|
3533 |
14 |
robfinch |
00FFF5F7 0C602D ldb #'-'
|
3534 |
|
|
00FFF5F9 017FFF716 lbsr OUTCH
|
3535 |
13 |
robfinch |
*** warning 1: Long branch within short branch range could be optimized
|
3536 |
14 |
robfinch |
00FFF5FC 017FFF713 lbsr OUTCH
|
3537 |
13 |
robfinch |
*** warning 1: Long branch within short branch range could be optimized
|
3538 |
14 |
robfinch |
00FFF5FF 035004 puls b
|
3539 |
|
|
00FFF601 0C5100 bitb #$100
|
3540 |
|
|
00FFF603 12700023C lbeq disNextLine
|
3541 |
|
|
00FFF606 0C5080 bitb #$80
|
3542 |
|
|
00FFF608 126000237 lbne disNextLine
|
3543 |
|
|
00FFF60B 0C605D ldb #']'
|
3544 |
|
|
00FFF60D 017FFF702 lbsr OUTCH
|
3545 |
13 |
robfinch |
*** warning 1: Long branch within short branch range could be optimized
|
3546 |
14 |
robfinch |
00FFF610 01600022F lbra disNextLine
|
3547 |
13 |
robfinch |
disNotBO:
|
3548 |
14 |
robfinch |
00FFF613 0C1009 cmpb #9
|
3549 |
|
|
00FFF615 026038 bne disNotWO
|
3550 |
|
|
00FFF617 0ECA01 ldd ,y++
|
3551 |
|
|
00FFF619 017FFEDE5 lbsr DispWordAsHex
|
3552 |
13 |
robfinch |
*** warning 1: Long branch within short branch range could be optimized
|
3553 |
14 |
robfinch |
00FFF61C 0E6E04 ldb ,s
|
3554 |
|
|
00FFF61E 0C5080 bitb #$80 ; outer indexed?
|
3555 |
|
|
00FFF620 027005 beq dis13
|
3556 |
|
|
00FFF622 0C605D ldb #']'
|
3557 |
|
|
00FFF624 017FFF6EB lbsr OUTCH
|
3558 |
13 |
robfinch |
*** warning 1: Long branch within short branch range could be optimized
|
3559 |
|
|
dis13:
|
3560 |
14 |
robfinch |
00FFF627 0C602C ldb #','
|
3561 |
|
|
00FFF629 017FFF6E6 lbsr OUTCH
|
3562 |
13 |
robfinch |
*** warning 1: Long branch within short branch range could be optimized
|
3563 |
14 |
robfinch |
00FFF62C 0E6E04 ldb ,s
|
3564 |
|
|
00FFF62E 08D244 bsr disNdxReg
|
3565 |
|
|
00FFF630 017FFF6DF lbsr OUTCH
|
3566 |
13 |
robfinch |
*** warning 1: Long branch within short branch range could be optimized
|
3567 |
14 |
robfinch |
00FFF633 0C602D ldb #'-'
|
3568 |
|
|
00FFF635 017FFF6DA lbsr OUTCH
|
3569 |
13 |
robfinch |
*** warning 1: Long branch within short branch range could be optimized
|
3570 |
14 |
robfinch |
00FFF638 017FFF6D7 lbsr OUTCH
|
3571 |
13 |
robfinch |
*** warning 1: Long branch within short branch range could be optimized
|
3572 |
14 |
robfinch |
00FFF63B 035004 puls b
|
3573 |
|
|
00FFF63D 0C5100 bitb #$100
|
3574 |
|
|
00FFF63F 127000200 lbeq disNextLine
|
3575 |
|
|
00FFF642 0C5080 bitb #$80
|
3576 |
|
|
00FFF644 1260001FB lbne disNextLine
|
3577 |
|
|
00FFF647 0C605D ldb #']'
|
3578 |
|
|
00FFF649 017FFF6C6 lbsr OUTCH
|
3579 |
13 |
robfinch |
*** warning 1: Long branch within short branch range could be optimized
|
3580 |
14 |
robfinch |
00FFF64C 0160001F3 lbra disNextLine
|
3581 |
13 |
robfinch |
disNotWO:
|
3582 |
14 |
robfinch |
00FFF64F 0C100A cmpb #10
|
3583 |
|
|
00FFF651 02603D bne disNotTO
|
3584 |
|
|
00FFF653 0E6A01 ldb ,y++
|
3585 |
|
|
00FFF655 017FFEDB2 lbsr DispByteAsHex
|
3586 |
13 |
robfinch |
*** warning 1: Long branch within short branch range could be optimized
|
3587 |
14 |
robfinch |
00FFF658 0ECA01 ldd ,y++
|
3588 |
|
|
00FFF65A 017FFEDA4 lbsr DispWordAsHex
|
3589 |
13 |
robfinch |
*** warning 1: Long branch within short branch range could be optimized
|
3590 |
14 |
robfinch |
00FFF65D 0E6E04 ldb ,s
|
3591 |
|
|
00FFF65F 0C5080 bitb #$80 ; outer indexed?
|
3592 |
|
|
00FFF661 027005 beq dis14
|
3593 |
|
|
00FFF663 0C605D ldb #']'
|
3594 |
|
|
00FFF665 017FFF6AA lbsr OUTCH
|
3595 |
13 |
robfinch |
*** warning 1: Long branch within short branch range could be optimized
|
3596 |
|
|
dis14:
|
3597 |
14 |
robfinch |
00FFF668 0C602C ldb #','
|
3598 |
|
|
00FFF66A 017FFF6A5 lbsr OUTCH
|
3599 |
13 |
robfinch |
*** warning 1: Long branch within short branch range could be optimized
|
3600 |
14 |
robfinch |
00FFF66D 0E6E04 ldb ,s
|
3601 |
|
|
00FFF66F 08D203 bsr disNdxReg
|
3602 |
|
|
00FFF671 017FFF69E lbsr OUTCH
|
3603 |
13 |
robfinch |
*** warning 1: Long branch within short branch range could be optimized
|
3604 |
14 |
robfinch |
00FFF674 0C602D ldb #'-'
|
3605 |
|
|
00FFF676 017FFF699 lbsr OUTCH
|
3606 |
13 |
robfinch |
*** warning 1: Long branch within short branch range could be optimized
|
3607 |
14 |
robfinch |
00FFF679 017FFF696 lbsr OUTCH
|
3608 |
13 |
robfinch |
*** warning 1: Long branch within short branch range could be optimized
|
3609 |
14 |
robfinch |
00FFF67C 035004 puls b
|
3610 |
|
|
00FFF67E 0C5100 bitb #$100
|
3611 |
|
|
00FFF680 1270001BF lbeq disNextLine
|
3612 |
|
|
00FFF683 0C5080 bitb #$80
|
3613 |
|
|
00FFF685 1260001BA lbne disNextLine
|
3614 |
|
|
00FFF688 0C605D ldb #']'
|
3615 |
|
|
00FFF68A 017FFF685 lbsr OUTCH
|
3616 |
13 |
robfinch |
*** warning 1: Long branch within short branch range could be optimized
|
3617 |
14 |
robfinch |
00FFF68D 0160001B2 lbra disNextLine
|
3618 |
13 |
robfinch |
disNotTO:
|
3619 |
14 |
robfinch |
00FFF690 0C100B cmpb #11
|
3620 |
|
|
00FFF692 026038 bne disNotDOffs
|
3621 |
|
|
00FFF694 0C6044 ldb #'D'
|
3622 |
|
|
00FFF696 017FFF679 lbsr OUTCH
|
3623 |
13 |
robfinch |
*** warning 1: Long branch within short branch range could be optimized
|
3624 |
14 |
robfinch |
00FFF699 0E6E04 ldb ,s
|
3625 |
|
|
00FFF69B 0C5080 bitb #$80 ; outer indexed?
|
3626 |
|
|
00FFF69D 027005 beq dis15
|
3627 |
|
|
00FFF69F 0C605D ldb #']'
|
3628 |
|
|
00FFF6A1 017FFF66E lbsr OUTCH
|
3629 |
13 |
robfinch |
*** warning 1: Long branch within short branch range could be optimized
|
3630 |
|
|
dis15:
|
3631 |
14 |
robfinch |
00FFF6A4 0C602C ldb #','
|
3632 |
|
|
00FFF6A6 017FFF669 lbsr OUTCH
|
3633 |
13 |
robfinch |
*** warning 1: Long branch within short branch range could be optimized
|
3634 |
14 |
robfinch |
00FFF6A9 0E6E04 ldb ,s
|
3635 |
|
|
00FFF6AB 08D1C7 bsr disNdxReg
|
3636 |
|
|
00FFF6AD 017FFF662 lbsr OUTCH
|
3637 |
13 |
robfinch |
*** warning 1: Long branch within short branch range could be optimized
|
3638 |
14 |
robfinch |
00FFF6B0 0C602D ldb #'-'
|
3639 |
|
|
00FFF6B2 017FFF65D lbsr OUTCH
|
3640 |
13 |
robfinch |
*** warning 1: Long branch within short branch range could be optimized
|
3641 |
14 |
robfinch |
00FFF6B5 017FFF65A lbsr OUTCH
|
3642 |
13 |
robfinch |
*** warning 1: Long branch within short branch range could be optimized
|
3643 |
14 |
robfinch |
00FFF6B8 035004 puls b
|
3644 |
|
|
00FFF6BA 0C5100 bitb #$100
|
3645 |
|
|
00FFF6BC 127000183 lbeq disNextLine
|
3646 |
|
|
00FFF6BF 0C5080 bitb #$80
|
3647 |
|
|
00FFF6C1 12600017E lbne disNextLine
|
3648 |
|
|
00FFF6C4 0C605D ldb #']'
|
3649 |
|
|
00FFF6C6 017FFF649 lbsr OUTCH
|
3650 |
13 |
robfinch |
*** warning 1: Long branch within short branch range could be optimized
|
3651 |
14 |
robfinch |
00FFF6C9 016000176 lbra disNextLine
|
3652 |
13 |
robfinch |
disNotDOffs:
|
3653 |
14 |
robfinch |
00FFF6CC 0C100C cmpb #12
|
3654 |
|
|
00FFF6CE 026040 bne disNotPBO
|
3655 |
|
|
00FFF6D0 0E6A00 ldb ,y+
|
3656 |
|
|
00FFF6D2 01D sex
|
3657 |
|
|
00FFF6D3 017FFED2B lbsr DispWordAsHex
|
3658 |
13 |
robfinch |
*** warning 1: Long branch within short branch range could be optimized
|
3659 |
14 |
robfinch |
00FFF6D6 0E6E04 ldb ,s
|
3660 |
|
|
00FFF6D8 0C5080 bitb #$80 ; outer indexed?
|
3661 |
|
|
00FFF6DA 027005 beq dis16
|
3662 |
|
|
00FFF6DC 0C605D ldb #']'
|
3663 |
|
|
00FFF6DE 017FFF631 lbsr OUTCH
|
3664 |
13 |
robfinch |
*** warning 1: Long branch within short branch range could be optimized
|
3665 |
|
|
dis16:
|
3666 |
14 |
robfinch |
00FFF6E1 0C602C ldb #','
|
3667 |
|
|
00FFF6E3 017FFF62C lbsr OUTCH
|
3668 |
13 |
robfinch |
*** warning 1: Long branch within short branch range could be optimized
|
3669 |
14 |
robfinch |
00FFF6E6 0E6E04 ldb ,s
|
3670 |
|
|
00FFF6E8 08D18A bsr disNdxReg
|
3671 |
|
|
00FFF6EA 0C6050 ldb #'P'
|
3672 |
|
|
00FFF6EC 017FFF623 lbsr OUTCH
|
3673 |
13 |
robfinch |
*** warning 1: Long branch within short branch range could be optimized
|
3674 |
14 |
robfinch |
00FFF6EF 0C6043 ldb #'C'
|
3675 |
|
|
00FFF6F1 017FFF61E lbsr OUTCH
|
3676 |
13 |
robfinch |
*** warning 1: Long branch within short branch range could be optimized
|
3677 |
14 |
robfinch |
00FFF6F4 0C602D ldb #'-'
|
3678 |
|
|
00FFF6F6 017FFF619 lbsr OUTCH
|
3679 |
13 |
robfinch |
*** warning 1: Long branch within short branch range could be optimized
|
3680 |
14 |
robfinch |
00FFF6F9 017FFF616 lbsr OUTCH
|
3681 |
13 |
robfinch |
*** warning 1: Long branch within short branch range could be optimized
|
3682 |
14 |
robfinch |
00FFF6FC 035004 puls b
|
3683 |
|
|
00FFF6FE 0C5100 bitb #$100
|
3684 |
|
|
00FFF700 12700013F lbeq disNextLine
|
3685 |
|
|
00FFF703 0C5080 bitb #$80
|
3686 |
|
|
00FFF705 12600013A lbne disNextLine
|
3687 |
|
|
00FFF708 0C605D ldb #']'
|
3688 |
|
|
00FFF70A 017FFF605 lbsr OUTCH
|
3689 |
13 |
robfinch |
*** warning 1: Long branch within short branch range could be optimized
|
3690 |
14 |
robfinch |
00FFF70D 016000132 lbra disNextLine
|
3691 |
13 |
robfinch |
disNotPBO:
|
3692 |
14 |
robfinch |
00FFF710 0C100D cmpb #13
|
3693 |
|
|
00FFF712 02603F bne disNotPWO
|
3694 |
|
|
00FFF714 0ECA01 ldd ,y++
|
3695 |
|
|
00FFF716 017FFECE8 lbsr DispWordAsHex
|
3696 |
13 |
robfinch |
*** warning 1: Long branch within short branch range could be optimized
|
3697 |
14 |
robfinch |
00FFF719 0E6E04 ldb ,s
|
3698 |
|
|
00FFF71B 0C5080 bitb #$80 ; outer indexed?
|
3699 |
|
|
00FFF71D 027005 beq dis17
|
3700 |
|
|
00FFF71F 0C605D ldb #']'
|
3701 |
|
|
00FFF721 017FFF5EE lbsr OUTCH
|
3702 |
13 |
robfinch |
*** warning 1: Long branch within short branch range could be optimized
|
3703 |
|
|
dis17:
|
3704 |
14 |
robfinch |
00FFF724 0C602C ldb #','
|
3705 |
|
|
00FFF726 017FFF5E9 lbsr OUTCH
|
3706 |
13 |
robfinch |
*** warning 1: Long branch within short branch range could be optimized
|
3707 |
14 |
robfinch |
00FFF729 0E6E04 ldb ,s
|
3708 |
|
|
00FFF72B 08D147 bsr disNdxReg
|
3709 |
|
|
00FFF72D 0C6050 ldb #'P'
|
3710 |
|
|
00FFF72F 017FFF5E0 lbsr OUTCH
|
3711 |
13 |
robfinch |
*** warning 1: Long branch within short branch range could be optimized
|
3712 |
14 |
robfinch |
00FFF732 0C6043 ldb #'C'
|
3713 |
|
|
00FFF734 017FFF5DB lbsr OUTCH
|
3714 |
13 |
robfinch |
*** warning 1: Long branch within short branch range could be optimized
|
3715 |
14 |
robfinch |
00FFF737 0C602D ldb #'-'
|
3716 |
|
|
00FFF739 017FFF5D6 lbsr OUTCH
|
3717 |
13 |
robfinch |
*** warning 1: Long branch within short branch range could be optimized
|
3718 |
14 |
robfinch |
00FFF73C 017FFF5D3 lbsr OUTCH
|
3719 |
13 |
robfinch |
*** warning 1: Long branch within short branch range could be optimized
|
3720 |
14 |
robfinch |
00FFF73F 035004 puls b
|
3721 |
|
|
00FFF741 0C5100 bitb #$100
|
3722 |
|
|
00FFF743 1270000FC lbeq disNextLine
|
3723 |
|
|
00FFF746 0C5080 bitb #$80
|
3724 |
|
|
00FFF748 1260000F7 lbne disNextLine
|
3725 |
|
|
00FFF74B 0C605D ldb #']'
|
3726 |
|
|
00FFF74D 017FFF5C2 lbsr OUTCH
|
3727 |
13 |
robfinch |
*** warning 1: Long branch within short branch range could be optimized
|
3728 |
14 |
robfinch |
00FFF750 0160000EF lbra disNextLine
|
3729 |
13 |
robfinch |
disNotPWO:
|
3730 |
14 |
robfinch |
00FFF753 0C100E cmpb #14
|
3731 |
|
|
00FFF755 026044 bne disNotPTO
|
3732 |
|
|
00FFF757 0E6A00 ldb ,y+
|
3733 |
|
|
00FFF759 017FFECAE lbsr DispByteAsHex
|
3734 |
13 |
robfinch |
*** warning 1: Long branch within short branch range could be optimized
|
3735 |
14 |
robfinch |
00FFF75C 0ECA01 ldd ,y++
|
3736 |
|
|
00FFF75E 017FFECA0 lbsr DispWordAsHex
|
3737 |
13 |
robfinch |
*** warning 1: Long branch within short branch range could be optimized
|
3738 |
14 |
robfinch |
00FFF761 0E6E04 ldb ,s
|
3739 |
|
|
00FFF763 0C5080 bitb #$80 ; outer indexed?
|
3740 |
|
|
00FFF765 027005 beq dis18
|
3741 |
|
|
00FFF767 0C605D ldb #']'
|
3742 |
|
|
00FFF769 017FFF5A6 lbsr OUTCH
|
3743 |
13 |
robfinch |
*** warning 1: Long branch within short branch range could be optimized
|
3744 |
|
|
dis18:
|
3745 |
14 |
robfinch |
00FFF76C 0C602C ldb #','
|
3746 |
|
|
00FFF76E 017FFF5A1 lbsr OUTCH
|
3747 |
13 |
robfinch |
*** warning 1: Long branch within short branch range could be optimized
|
3748 |
14 |
robfinch |
00FFF771 0E6E04 ldb ,s
|
3749 |
|
|
00FFF773 08D0FF bsr disNdxReg
|
3750 |
|
|
00FFF775 0C6050 ldb #'P'
|
3751 |
|
|
00FFF777 017FFF598 lbsr OUTCH
|
3752 |
13 |
robfinch |
*** warning 1: Long branch within short branch range could be optimized
|
3753 |
14 |
robfinch |
00FFF77A 0C6043 ldb #'C'
|
3754 |
|
|
00FFF77C 017FFF593 lbsr OUTCH
|
3755 |
13 |
robfinch |
*** warning 1: Long branch within short branch range could be optimized
|
3756 |
14 |
robfinch |
00FFF77F 0C602D ldb #'-'
|
3757 |
|
|
00FFF781 017FFF58E lbsr OUTCH
|
3758 |
13 |
robfinch |
*** warning 1: Long branch within short branch range could be optimized
|
3759 |
14 |
robfinch |
00FFF784 017FFF58B lbsr OUTCH
|
3760 |
13 |
robfinch |
*** warning 1: Long branch within short branch range could be optimized
|
3761 |
14 |
robfinch |
00FFF787 035004 puls b
|
3762 |
|
|
00FFF789 0C5100 bitb #$100
|
3763 |
|
|
00FFF78B 1270000B4 lbeq disNextLine
|
3764 |
|
|
00FFF78E 0C5080 bitb #$80
|
3765 |
|
|
00FFF790 1260000AF lbne disNextLine
|
3766 |
|
|
00FFF793 0C605D ldb #']'
|
3767 |
|
|
00FFF795 017FFF57A lbsr OUTCH
|
3768 |
13 |
robfinch |
*** warning 1: Long branch within short branch range could be optimized
|
3769 |
14 |
robfinch |
00FFF798 0160000A7 lbra disNextLine
|
3770 |
13 |
robfinch |
disNotPTO:
|
3771 |
14 |
robfinch |
00FFF79B 0C605B ldb #'['
|
3772 |
|
|
00FFF79D 017FFF572 lbsr OUTCH
|
3773 |
13 |
robfinch |
*** warning 1: Long branch within short branch range could be optimized
|
3774 |
14 |
robfinch |
00FFF7A0 0ECA01 ldd ,y++
|
3775 |
|
|
00FFF7A2 017FFEC5C lbsr DispWordAsHex
|
3776 |
13 |
robfinch |
*** warning 1: Long branch within short branch range could be optimized
|
3777 |
14 |
robfinch |
00FFF7A5 0C605D ldb #']'
|
3778 |
|
|
00FFF7A7 017FFF568 lbsr OUTCH
|
3779 |
13 |
robfinch |
*** warning 1: Long branch within short branch range could be optimized
|
3780 |
14 |
robfinch |
00FFF7AA 016000095 lbra disNextLine
|
3781 |
13 |
robfinch |
disNotNdx:
|
3782 |
14 |
robfinch |
00FFF7AD 0C1006 cmpb #EXT
|
3783 |
|
|
00FFF7AF 026013 bne disNotExt
|
3784 |
|
|
00FFF7B1 00D15F tst farflag
|
3785 |
|
|
00FFF7B3 027005 beq dis30
|
3786 |
|
|
00FFF7B5 0E6A01 ldb ,y++
|
3787 |
|
|
00FFF7B7 017FFEC50 lbsr DispByteAsHex
|
3788 |
13 |
robfinch |
*** warning 1: Long branch within short branch range could be optimized
|
3789 |
14 |
robfinch |
dis30:
|
3790 |
|
|
00FFF7BA 0ECA01 ldd ,y++
|
3791 |
|
|
00FFF7BC 017FFEC42 lbsr DispWordAsHex
|
3792 |
|
|
*** warning 1: Long branch within short branch range could be optimized
|
3793 |
|
|
00FFF7BF 00F15F clr farflag
|
3794 |
|
|
00FFF7C1 01600007E lbra disNextLine
|
3795 |
13 |
robfinch |
disNotExt:
|
3796 |
14 |
robfinch |
00FFF7C4 0C1003 cmpb #IMMB
|
3797 |
|
|
00FFF7C6 02600D bne disNotIMMB
|
3798 |
|
|
00FFF7C8 0C6023 ldb #'#'
|
3799 |
|
|
00FFF7CA 017FFF545 lbsr OUTCH
|
3800 |
13 |
robfinch |
*** warning 1: Long branch within short branch range could be optimized
|
3801 |
14 |
robfinch |
00FFF7CD 0E6A00 ldb ,y+
|
3802 |
|
|
00FFF7CF 017FFEC38 lbsr DispByteAsHex
|
3803 |
13 |
robfinch |
*** warning 1: Long branch within short branch range could be optimized
|
3804 |
14 |
robfinch |
00FFF7D2 01600006D lbra disNextLine
|
3805 |
13 |
robfinch |
disNotIMMB:
|
3806 |
14 |
robfinch |
00FFF7D5 0C1007 cmpb #IMMW
|
3807 |
|
|
00FFF7D7 02600C bne disNotIMMW
|
3808 |
|
|
00FFF7D9 0C6023 ldb #'#'
|
3809 |
|
|
00FFF7DB 017FFF534 lbsr OUTCH
|
3810 |
13 |
robfinch |
*** warning 1: Long branch within short branch range could be optimized
|
3811 |
14 |
robfinch |
00FFF7DE 0ECA01 ldd ,y++
|
3812 |
|
|
00FFF7E0 017FFEC1E lbsr DispWordAsHex
|
3813 |
13 |
robfinch |
*** warning 1: Long branch within short branch range could be optimized
|
3814 |
14 |
robfinch |
00FFF7E3 02005D bra disNextLine
|
3815 |
13 |
robfinch |
disNotIMMW:
|
3816 |
14 |
robfinch |
00FFF7E5 0C1009 cmpb #TFREXG
|
3817 |
|
|
00FFF7E7 026006 bne disNotTfr
|
3818 |
|
|
00FFF7E9 0E6A00 ldb ,y+
|
3819 |
|
|
00FFF7EB 08D0B8 bsr disTfrExg
|
3820 |
|
|
00FFF7ED 020053 bra disNextLine
|
3821 |
|
|
disNotTfr:
|
3822 |
13 |
robfinch |
dis1:
|
3823 |
14 |
robfinch |
00FFF7EF 0C1121 cmpb #$121
|
3824 |
|
|
00FFF7F1 025028 blo dis19
|
3825 |
|
|
00FFF7F3 0C112F cmpb #$12F
|
3826 |
|
|
00FFF7F5 022024 bhi dis19
|
3827 |
|
|
00FFF7F7 0C40FF andb #$FF
|
3828 |
|
|
00FFF7F9 08EFFF2B4 ldx #distbl2
|
3829 |
|
|
00FFF7FC 058 aslb
|
3830 |
|
|
00FFF7FD 058 aslb
|
3831 |
|
|
00FFF7FE 03A abx
|
3832 |
|
|
00FFF7FF 0E6800 ldb ,x+
|
3833 |
|
|
00FFF801 017FFF50E lbsr OUTCH
|
3834 |
13 |
robfinch |
*** warning 1: Long branch within short branch range could be optimized
|
3835 |
14 |
robfinch |
00FFF804 0E6800 ldb ,x+
|
3836 |
|
|
00FFF806 017FFF509 lbsr OUTCH
|
3837 |
13 |
robfinch |
*** warning 1: Long branch within short branch range could be optimized
|
3838 |
14 |
robfinch |
00FFF809 0E6800 ldb ,x+
|
3839 |
|
|
00FFF80B 017FFF504 lbsr OUTCH
|
3840 |
13 |
robfinch |
*** warning 1: Long branch within short branch range could be optimized
|
3841 |
14 |
robfinch |
00FFF80E 0E6800 ldb ,x+
|
3842 |
|
|
00FFF810 017FFF4FF lbsr OUTCH
|
3843 |
13 |
robfinch |
*** warning 1: Long branch within short branch range could be optimized
|
3844 |
14 |
robfinch |
00FFF813 0C6020 ldb #' '
|
3845 |
|
|
00FFF815 017FFF4FA lbsr OUTCH
|
3846 |
13 |
robfinch |
*** warning 1: Long branch within short branch range could be optimized
|
3847 |
14 |
robfinch |
00FFF818 016FFFBF4 lbra dis21
|
3848 |
13 |
robfinch |
*** warning 1: Long branch within short branch range could be optimized
|
3849 |
|
|
dis19:
|
3850 |
14 |
robfinch |
00FFF81B 08E000000 ldx #0
|
3851 |
13 |
robfinch |
dis24:
|
3852 |
14 |
robfinch |
00FFF81E 0E180A000FFF2F4 cmpb distbl3,x
|
3853 |
|
|
00FFF823 026006 bne dis25
|
3854 |
|
|
00FFF825 08EFFF314 ldx #distbl4
|
3855 |
|
|
00FFF828 016FFFBB2 lbra dis23
|
3856 |
13 |
robfinch |
*** warning 1: Long branch within short branch range could be optimized
|
3857 |
|
|
dis25:
|
3858 |
14 |
robfinch |
00FFF82B 030001 inx
|
3859 |
|
|
00FFF82D 08C00001F cmpx #31
|
3860 |
|
|
00FFF830 025FEC blo dis24
|
3861 |
|
|
00FFF832 0C603F ldb #'?'
|
3862 |
|
|
00FFF834 017FFF4DB lbsr OUTCH
|
3863 |
13 |
robfinch |
*** warning 1: Long branch within short branch range could be optimized
|
3864 |
14 |
robfinch |
00FFF837 017FFF4D8 lbsr OUTCH
|
3865 |
13 |
robfinch |
*** warning 1: Long branch within short branch range could be optimized
|
3866 |
14 |
robfinch |
00FFF83A 017FFF4D5 lbsr OUTCH
|
3867 |
13 |
robfinch |
*** warning 1: Long branch within short branch range could be optimized
|
3868 |
14 |
robfinch |
00FFF83D 017FFF4D2 lbsr OUTCH
|
3869 |
13 |
robfinch |
*** warning 1: Long branch within short branch range could be optimized
|
3870 |
14 |
robfinch |
00FFF840 020000 bra disNextLine
|
3871 |
|
|
disNextLine:
|
3872 |
|
|
00FFF842 00F15F clr farflag
|
3873 |
|
|
00FFF844 017FFD88B lbsr CRLF
|
3874 |
13 |
robfinch |
*** warning 1: Long branch within short branch range could be optimized
|
3875 |
14 |
robfinch |
00FFF847 1BC000926 cmpy mon_r2+2
|
3876 |
|
|
00FFF84A 125FFFB72 lblo disLoop1
|
3877 |
13 |
robfinch |
*** warning 1: Long branch within short branch range could be optimized
|
3878 |
14 |
robfinch |
00FFF84D 0160000DE lbra Monitor
|
3879 |
13 |
robfinch |
|
3880 |
|
|
disNdxRegs:
|
3881 |
14 |
robfinch |
00FFF850 058059053055 fcb 'X','Y','S','U'
|
3882 |
|
|
disTfrRegs:
|
3883 |
|
|
00FFF854 044020058020059020055 fcb "D X Y U S PC A B CCDP "
|
3884 |
|
|
00FFF85B 020053020050043020020
|
3885 |
|
|
00FFF862 020020041020042020043
|
3886 |
|
|
00FFF869 043044050020020020020
|
3887 |
|
|
00FFF870 020020020020
|
3888 |
|
|
|
3889 |
13 |
robfinch |
disNdxReg:
|
3890 |
14 |
robfinch |
00FFF874 0C4600 andb #$600
|
3891 |
|
|
00FFF876 059 rolb
|
3892 |
|
|
00FFF877 059 rolb
|
3893 |
|
|
00FFF878 059 rolb
|
3894 |
|
|
00FFF879 059 rolb
|
3895 |
|
|
00FFF87A 04F clra
|
3896 |
|
|
00FFF87B 034040 pshs u
|
3897 |
|
|
00FFF87D 01F003 tfr d,u
|
3898 |
|
|
00FFF87F 0A6C0A000FFF850 lda disNdxRegs,u
|
3899 |
|
|
00FFF884 035040 puls u
|
3900 |
|
|
00FFF886 01E089 exg a,b
|
3901 |
|
|
00FFF888 039 rts
|
3902 |
13 |
robfinch |
|
3903 |
14 |
robfinch |
disTfrReg:
|
3904 |
|
|
00FFF889 034014 pshs b,x
|
3905 |
|
|
00FFF88B 08EFFF854 ldx #disTfrRegs
|
3906 |
|
|
00FFF88E 058 aslb
|
3907 |
|
|
00FFF88F 0A6815 lda b,x
|
3908 |
|
|
00FFF891 01E089 exg a,b
|
3909 |
|
|
00FFF893 017FFF47C lbsr OUTCH
|
3910 |
|
|
*** warning 1: Long branch within short branch range could be optimized
|
3911 |
|
|
00FFF896 01E089 exg a,b
|
3912 |
|
|
00FFF898 030001 inx
|
3913 |
|
|
00FFF89A 0E688D ldb b,x
|
3914 |
|
|
00FFF89C 0C1020 cmpb #' '
|
3915 |
|
|
00FFF89E 027003 beq disTfr1
|
3916 |
|
|
00FFF8A0 017FFF46F lbsr OUTCH
|
3917 |
|
|
*** warning 1: Long branch within short branch range could be optimized
|
3918 |
|
|
disTfr1:
|
3919 |
|
|
00FFF8A3 035094 puls b,x,pc
|
3920 |
|
|
|
3921 |
|
|
disTfrExg:
|
3922 |
|
|
00FFF8A5 034004 pshs b
|
3923 |
|
|
00FFF8A7 059 rolb
|
3924 |
|
|
00FFF8A8 059 rolb
|
3925 |
|
|
00FFF8A9 059 rolb
|
3926 |
|
|
00FFF8AA 059 rolb
|
3927 |
|
|
00FFF8AB 0C400F andb #15
|
3928 |
|
|
00FFF8AD 08DFDA bsr disTfrReg
|
3929 |
|
|
00FFF8AF 0C602C ldb #','
|
3930 |
|
|
00FFF8B1 017FFF45E lbsr OUTCH
|
3931 |
|
|
*** warning 1: Long branch within short branch range could be optimized
|
3932 |
|
|
00FFF8B4 0E6E04 ldb ,s
|
3933 |
|
|
00FFF8B6 0C400F andb #15
|
3934 |
|
|
00FFF8B8 08DFCF bsr disTfrReg
|
3935 |
|
|
00FFF8BA 035084 puls b,pc
|
3936 |
|
|
|
3937 |
13 |
robfinch |
ASMO:
|
3938 |
14 |
robfinch |
00FFF8BC 034006 pshs d
|
3939 |
|
|
00FFF8BE 0CCFFF8D0 ldd #ASMOUTCH
|
3940 |
|
|
00FFF8C1 0FD000800 std CharOutVec
|
3941 |
|
|
00FFF8C4 035086 puls d,pc
|
3942 |
13 |
robfinch |
|
3943 |
|
|
ASMOO:
|
3944 |
14 |
robfinch |
00FFF8C6 034006 pshs d
|
3945 |
|
|
00FFF8C8 0CCFFE2F5 ldd #DisplayChar
|
3946 |
|
|
00FFF8CB 0FD000800 std CharOutVec
|
3947 |
|
|
00FFF8CE 035086 puls d,pc
|
3948 |
13 |
robfinch |
|
3949 |
|
|
ASMOUTCH:
|
3950 |
14 |
robfinch |
00FFF8D0 0E7C00 stb ,u+
|
3951 |
|
|
00FFF8D2 039 rts
|
3952 |
13 |
robfinch |
|
3953 |
|
|
DumpAsmbuf:
|
3954 |
14 |
robfinch |
00FFF8D3 0CE000160 ldu #asmbuf
|
3955 |
13 |
robfinch |
dab2:
|
3956 |
14 |
robfinch |
00FFF8D6 0E6C00 ldb ,u+
|
3957 |
|
|
00FFF8D8 027005 beq dab1
|
3958 |
|
|
00FFF8DA 017FFF435 lbsr OUTCH
|
3959 |
13 |
robfinch |
*** warning 1: Long branch within short branch range could be optimized
|
3960 |
14 |
robfinch |
00FFF8DD 020FF7 bra dab2
|
3961 |
13 |
robfinch |
dab1:
|
3962 |
14 |
robfinch |
00FFF8DF 039 rts
|
3963 |
13 |
robfinch |
|
3964 |
|
|
;==============================================================================
|
3965 |
4 |
robfinch |
; System Monitor
|
3966 |
|
|
;==============================================================================
|
3967 |
13 |
robfinch |
|
3968 |
|
|
CmdPrompt:
|
3969 |
14 |
robfinch |
00FFF8E0 017FFD7EF lbsr CRLF
|
3970 |
13 |
robfinch |
*** warning 1: Long branch within short branch range could be optimized
|
3971 |
14 |
robfinch |
00FFF8E3 0C6024 ldb #'$'
|
3972 |
|
|
00FFF8E5 017FFF42A lbsr OUTCH
|
3973 |
13 |
robfinch |
*** warning 1: Long branch within short branch range could be optimized
|
3974 |
14 |
robfinch |
00FFF8E8 016FFF427 lbra OUTCH
|
3975 |
13 |
robfinch |
*** warning 1: Long branch within short branch range could be optimized
|
3976 |
|
|
|
3977 |
|
|
msgF09Starting:
|
3978 |
14 |
robfinch |
00FFF8EB 04606506D07406906B069 fcb "Femtiki F09 Multi-core OS Starting",CR,LF,0
|
3979 |
|
|
00FFF8F2 02004603003902004D075
|
3980 |
|
|
00FFF8F9 06C07406902D06306F072
|
3981 |
|
|
00FFF900 06502004F053020053074
|
3982 |
|
|
00FFF907 06107207406906E06700D
|
3983 |
|
|
00FFF90E 00A000
|
3984 |
13 |
robfinch |
|
3985 |
4 |
robfinch |
MonitorStart:
|
3986 |
14 |
robfinch |
00FFF910 0CCFFF8EB ldd #msgF09Starting
|
3987 |
|
|
00FFF913 017FFEAA0 lbsr DisplayString
|
3988 |
13 |
robfinch |
*** warning 1: Long branch within short branch range could be optimized
|
3989 |
14 |
robfinch |
00FFF916 0CCFFFB0E ldd #HelpMsg
|
3990 |
|
|
00FFF919 017FFEA9A lbsr DisplayString
|
3991 |
13 |
robfinch |
*** warning 1: Long branch within short branch range could be optimized
|
3992 |
14 |
robfinch |
00FFF91C 0CCFFF8E0 ldd #CmdPrompt
|
3993 |
|
|
00FFF91F 0FD000808 std CmdPromptJI
|
3994 |
|
|
00FFF922 0CCFFFAF5 ldd #DisplayErr
|
3995 |
|
|
00FFF925 0FD00080C std MonErrVec
|
3996 |
|
|
00FFF928 0CC0063FF ldd #$63FF ; default app stack
|
3997 |
|
|
00FFF92B 0FD000908 std mon_SSAVE
|
3998 |
4 |
robfinch |
Monitor:
|
3999 |
14 |
robfinch |
00FFF92E 03280F006FFF leas $6FFF ; reset stack pointer
|
4000 |
|
|
00FFF932 05F clrb ; turn off keyboard echo
|
4001 |
|
|
00FFF933 017FFF3E0 lbsr SetKeyboardEcho
|
4002 |
13 |
robfinch |
*** warning 1: Long branch within short branch range could be optimized
|
4003 |
|
|
; Reset IO vectors
|
4004 |
14 |
robfinch |
00FFF936 0CCFFEBE4 ldd #SerialPeekCharDirect
|
4005 |
|
|
00FFF939 0FD000804 std CharInVec
|
4006 |
|
|
00FFF93C 0CCFFE2F5 ldd #DisplayChar
|
4007 |
|
|
00FFF93F 0FD000800 std CharOutVec
|
4008 |
|
|
00FFF942 0CCFFF8E0 ldd #CmdPrompt
|
4009 |
|
|
00FFF945 0FD000808 std CmdPromptJI
|
4010 |
4 |
robfinch |
; jsr RequestIOFocus
|
4011 |
|
|
PromptLn:
|
4012 |
14 |
robfinch |
00FFF948 0AD90F000808 jsr [CmdPromptJI]
|
4013 |
4 |
robfinch |
|
4014 |
|
|
; Get characters until a CR is keyed
|
4015 |
|
|
|
4016 |
|
|
Prompt3:
|
4017 |
14 |
robfinch |
00FFF94C 0CCFFFFFF ldd #-1 ; block until key present
|
4018 |
|
|
00FFF94F 017FFF388 lbsr INCH
|
4019 |
13 |
robfinch |
*** warning 1: Long branch within short branch range could be optimized
|
4020 |
14 |
robfinch |
00FFF952 0C100D cmpb #CR
|
4021 |
|
|
00FFF954 027005 beq Prompt1
|
4022 |
|
|
00FFF956 017FFF3B9 lbsr OUTCH
|
4023 |
13 |
robfinch |
*** warning 1: Long branch within short branch range could be optimized
|
4024 |
14 |
robfinch |
00FFF959 020FF1 bra Prompt3
|
4025 |
4 |
robfinch |
|
4026 |
|
|
; Process the screen line that the CR was keyed on
|
4027 |
|
|
;
|
4028 |
|
|
Prompt1:
|
4029 |
14 |
robfinch |
00FFF95B 0CC005050 ldd #$5050
|
4030 |
|
|
00FFF95E 0150FDFFFE60001 std LEDS
|
4031 |
13 |
robfinch |
; ldb RunningID
|
4032 |
|
|
; cmpb #61
|
4033 |
|
|
; bhi Prompt3
|
4034 |
14 |
robfinch |
00FFF963 0CC005151 ldd #$5151
|
4035 |
|
|
00FFF966 0150FDFFFE60001 std LEDS
|
4036 |
|
|
00FFF96B 00F111 clr CursorCol ; go back to the start of the line
|
4037 |
|
|
00FFF96D 017FFE962 lbsr CalcScreenLoc ; calc screen memory location
|
4038 |
13 |
robfinch |
*** warning 1: Long branch within short branch range could be optimized
|
4039 |
14 |
robfinch |
00FFF970 01F002 tfr d,y
|
4040 |
|
|
00FFF972 0CC005252 ldd #$5252
|
4041 |
|
|
00FFF975 0150FDFFFE60001 std LEDS
|
4042 |
13 |
robfinch |
skipDollar:
|
4043 |
14 |
robfinch |
00FFF97A 08D0B9 bsr MonGetNonSpace
|
4044 |
|
|
00FFF97C 0C1024 cmpb #'$'
|
4045 |
|
|
00FFF97E 027FFA beq skipDollar ; skip over '$' prompt character
|
4046 |
|
|
00FFF980 086353 lda #$5353
|
4047 |
|
|
00FFF982 0150FDFFFE60001 std LEDS
|
4048 |
4 |
robfinch |
|
4049 |
|
|
; Dispatch based on command character
|
4050 |
|
|
;
|
4051 |
|
|
Prompt2:
|
4052 |
14 |
robfinch |
00FFF987 0C103C cmpb #'<'
|
4053 |
|
|
00FFF989 02602C bne PromptHelp
|
4054 |
|
|
00FFF98B 08D0A3 bsr MonGetch
|
4055 |
|
|
00FFF98D 0C103E cmpb #'>'
|
4056 |
|
|
00FFF98F 026F9D bne Monitor
|
4057 |
|
|
00FFF991 08D09D bsr MonGetch
|
4058 |
|
|
00FFF993 0C1073 cmpb #'s'
|
4059 |
|
|
00FFF995 02600E bne Prompt2a
|
4060 |
|
|
00FFF997 0CCFFEBE4 ldd #SerialPeekCharDirect
|
4061 |
|
|
00FFF99A 0FD000804 std CharInVec
|
4062 |
|
|
00FFF99D 0CCFFEC08 ldd #SerialPutChar
|
4063 |
|
|
00FFF9A0 0FD000800 std CharOutVec
|
4064 |
|
|
00FFF9A3 020F89 bra Monitor
|
4065 |
13 |
robfinch |
Prompt2a:
|
4066 |
14 |
robfinch |
00FFF9A5 0C1063 cmpb #'c'
|
4067 |
|
|
00FFF9A7 026F85 bne Monitor
|
4068 |
|
|
00FFF9A9 0CCFFEA12 ldd #GetKey
|
4069 |
|
|
00FFF9AC 0FD000804 std CharInVec
|
4070 |
|
|
00FFF9AF 0CCFFE2F5 ldd #DisplayChar
|
4071 |
|
|
00FFF9B2 0FD000800 std CharOutVec
|
4072 |
|
|
00FFF9B5 020F77 bra Monitor
|
4073 |
13 |
robfinch |
PromptHelp:
|
4074 |
14 |
robfinch |
00FFF9B7 0C103F cmpb #'?' ; $? - display help
|
4075 |
|
|
00FFF9B9 026008 bne PromptC
|
4076 |
|
|
00FFF9BB 0CCFFFB0E ldd #HelpMsg
|
4077 |
|
|
00FFF9BE 017FFE9F5 lbsr DisplayString
|
4078 |
13 |
robfinch |
*** warning 1: Long branch within short branch range could be optimized
|
4079 |
14 |
robfinch |
00FFF9C1 020F6B bra Monitor
|
4080 |
4 |
robfinch |
PromptC:
|
4081 |
14 |
robfinch |
00FFF9C3 0C1043 cmpb #'C'
|
4082 |
|
|
00FFF9C5 026008 bne PromptD
|
4083 |
|
|
00FFF9C7 017FFE85B lbsr ClearScreen
|
4084 |
4 |
robfinch |
*** warning 1: Long branch within short branch range could be optimized
|
4085 |
14 |
robfinch |
00FFF9CA 017FFE8CB lbsr HomeCursor
|
4086 |
13 |
robfinch |
*** warning 1: Long branch within short branch range could be optimized
|
4087 |
14 |
robfinch |
00FFF9CD 020F5F bra Monitor
|
4088 |
4 |
robfinch |
PromptD:
|
4089 |
14 |
robfinch |
00FFF9CF 0C1044 cmpb #'D'
|
4090 |
|
|
00FFF9D1 026008 bne PromptColon
|
4091 |
|
|
00FFF9D3 08D05B bsr MonGetch
|
4092 |
|
|
00FFF9D5 0C1052 cmpb #'R'
|
4093 |
|
|
00FFF9D7 02626F bne DumpMemory
|
4094 |
|
|
00FFF9D9 020309 bra DumpRegs
|
4095 |
|
|
PromptColon:
|
4096 |
|
|
00FFF9DB 0C103A cmpb #':'
|
4097 |
|
|
00FFF9DD 026003 bne PromptF
|
4098 |
|
|
00FFF9DF 0160002C2 lbra EditMemory
|
4099 |
4 |
robfinch |
PromptF:
|
4100 |
14 |
robfinch |
00FFF9E2 0C1046 cmpb #'F'
|
4101 |
|
|
00FFF9E4 026016 bne PromptJ
|
4102 |
|
|
00FFF9E6 08D048 bsr MonGetch
|
4103 |
|
|
00FFF9E8 0C1049 cmpb #'I'
|
4104 |
|
|
00FFF9EA 026009 bne PromptFL
|
4105 |
|
|
00FFF9EC 08D042 bsr MonGetch
|
4106 |
|
|
00FFF9EE 0C1047 cmpb #'G'
|
4107 |
|
|
00FFF9F0 026F3C bne Monitor
|
4108 |
|
|
00FFF9F2 07EFE0000 jmp $FE0000
|
4109 |
|
|
PromptFL:
|
4110 |
|
|
00FFF9F5 0C104C cmpb #'L'
|
4111 |
|
|
00FFF9F7 026F35 bne Monitor
|
4112 |
|
|
00FFF9F9 0160003A9 lbra DumpIOFocusList
|
4113 |
4 |
robfinch |
PromptJ:
|
4114 |
14 |
robfinch |
00FFF9FC 0C104A cmpb #'J'
|
4115 |
|
|
00FFF9FE 12700032E lbeq jump_to_code
|
4116 |
4 |
robfinch |
PromptR:
|
4117 |
14 |
robfinch |
00FFFA01 0C1052 cmpb #'R'
|
4118 |
|
|
00FFFA03 026006 bne Prompt_s
|
4119 |
|
|
00FFFA05 0CEFFF92E ldu #Monitor
|
4120 |
|
|
00FFFA08 016FFD9F5 lbra ramtest
|
4121 |
4 |
robfinch |
*** warning 1: Long branch within short branch range could be optimized
|
4122 |
13 |
robfinch |
Prompt_s:
|
4123 |
14 |
robfinch |
00FFFA0B 0C1073 cmpb #'s'
|
4124 |
|
|
00FFFA0D 026005 bne PromptT
|
4125 |
|
|
00FFFA0F 017FFF293 lbsr SerialOutputTest
|
4126 |
13 |
robfinch |
*** warning 1: Long branch within short branch range could be optimized
|
4127 |
14 |
robfinch |
00FFFA12 020F1A bra Monitor
|
4128 |
13 |
robfinch |
PromptT:
|
4129 |
14 |
robfinch |
00FFFA14 0C1054 cmpb #'T'
|
4130 |
|
|
00FFFA16 026011 bne PromptU
|
4131 |
|
|
00FFFA18 08D016 bsr MonGetch
|
4132 |
|
|
00FFFA1A 0C1049 cmpb #'I'
|
4133 |
|
|
00FFFA1C 026F10 bne Monitor
|
4134 |
|
|
00FFFA1E 08D010 bsr MonGetch
|
4135 |
|
|
00FFFA20 0C1052 cmpb #'R'
|
4136 |
|
|
00FFFA22 026F0A bne Monitor
|
4137 |
|
|
00FFFA24 017FFEAA0 lbsr rtc_read
|
4138 |
13 |
robfinch |
*** warning 1: Long branch within short branch range could be optimized
|
4139 |
14 |
robfinch |
00FFFA27 020F05 bra Monitor
|
4140 |
13 |
robfinch |
PromptU:
|
4141 |
14 |
robfinch |
00FFFA29 0C1055 cmpb #'U'
|
4142 |
|
|
00FFFA2B 026F01 bne Monitor
|
4143 |
|
|
00FFFA2D 016FFF984 lbra disassem
|
4144 |
13 |
robfinch |
*** warning 1: Long branch within short branch range could be optimized
|
4145 |
4 |
robfinch |
|
4146 |
|
|
MonGetch:
|
4147 |
14 |
robfinch |
00FFFA30 0E6A04 ldb ,y
|
4148 |
|
|
00FFFA32 031201 iny
|
4149 |
|
|
00FFFA34 039 rts
|
4150 |
4 |
robfinch |
|
4151 |
|
|
MonGetNonSpace:
|
4152 |
14 |
robfinch |
00FFFA35 08DFF9 bsr MonGetCh
|
4153 |
|
|
00FFFA37 0C1020 cmpb #' '
|
4154 |
|
|
00FFFA39 027FFA beq MonGetNonSpace
|
4155 |
|
|
00FFFA3B 039 rts
|
4156 |
4 |
robfinch |
|
4157 |
|
|
;------------------------------------------------------------------------------
|
4158 |
|
|
; Ignore blanks in the input
|
4159 |
|
|
; Y = text pointer
|
4160 |
|
|
; D destroyed
|
4161 |
|
|
;------------------------------------------------------------------------------
|
4162 |
|
|
;
|
4163 |
|
|
ignBlanks:
|
4164 |
|
|
ignBlanks1:
|
4165 |
14 |
robfinch |
00FFFA3C 08DFF2 bsr MonGetch
|
4166 |
|
|
00FFFA3E 0C1020 cmpb #' '
|
4167 |
|
|
00FFFA40 027FFA beq ignBlanks1
|
4168 |
|
|
00FFFA42 0313FF dey
|
4169 |
|
|
00FFFA44 039 rts
|
4170 |
4 |
robfinch |
|
4171 |
|
|
;------------------------------------------------------------------------------
|
4172 |
|
|
;------------------------------------------------------------------------------
|
4173 |
|
|
GetTwoParams:
|
4174 |
14 |
robfinch |
00FFFA45 08DFF5 bsr ignBlanks
|
4175 |
|
|
00FFFA47 08D046 bsr GetHexNumber ; get start address of dump
|
4176 |
|
|
00FFFA49 0FC000910 ldd mon_numwka
|
4177 |
|
|
00FFFA4C 0FD000920 std mon_r1
|
4178 |
|
|
00FFFA4F 0FC000912 ldd mon_numwka+2
|
4179 |
|
|
00FFFA52 0FD000922 std mon_r1+2
|
4180 |
|
|
00FFFA55 08DFE5 bsr ignBlanks
|
4181 |
|
|
00FFFA57 08D036 bsr GetHexNumber ; get end address of dump
|
4182 |
|
|
00FFFA59 0FC000910 ldd mon_numwka
|
4183 |
|
|
00FFFA5C 0FD000924 std mon_r2
|
4184 |
|
|
00FFFA5F 0FC000912 ldd mon_numwka+2
|
4185 |
|
|
00FFFA62 0FD000926 std mon_r2+2
|
4186 |
|
|
00FFFA65 039 rts
|
4187 |
4 |
robfinch |
|
4188 |
|
|
;------------------------------------------------------------------------------
|
4189 |
|
|
; Get a range, the end must be greater or equal to the start.
|
4190 |
|
|
;------------------------------------------------------------------------------
|
4191 |
|
|
GetRange:
|
4192 |
14 |
robfinch |
00FFFA66 08DFDD bsr GetTwoParams
|
4193 |
|
|
00FFFA68 0FC000926 ldd mon_r2+2
|
4194 |
|
|
00FFFA6B 0B3000922 subd mon_r1+2
|
4195 |
|
|
00FFFA6E 0FC000924 ldd mon_r2
|
4196 |
|
|
00FFFA71 0F2000921 sbcb mon_r1+1
|
4197 |
|
|
00FFFA74 0B2000920 sbca mon_r1
|
4198 |
|
|
00FFFA77 124000007 lbcc grng1
|
4199 |
|
|
00FFFA7A 0AD90F00080C jsr [MonErrVec]
|
4200 |
|
|
00FFFA7E 016FFFEAD lbra Monitor
|
4201 |
|
|
*** warning 1: Long branch within short branch range could be optimized
|
4202 |
|
|
grng1:
|
4203 |
|
|
00FFFA81 039 rts
|
4204 |
4 |
robfinch |
|
4205 |
|
|
shl_numwka:
|
4206 |
14 |
robfinch |
00FFFA82 078000913 asl mon_numwka+3
|
4207 |
|
|
00FFFA85 079000912 rol mon_numwka+2
|
4208 |
|
|
00FFFA88 079000911 rol mon_numwka+1
|
4209 |
|
|
00FFFA8B 079000910 rol mon_numwka
|
4210 |
|
|
00FFFA8E 039 rts
|
4211 |
4 |
robfinch |
|
4212 |
|
|
;------------------------------------------------------------------------------
|
4213 |
13 |
robfinch |
; Get a hexidecimal number. Maximum of twelve digits.
|
4214 |
|
|
;
|
4215 |
|
|
; Modifies:
|
4216 |
|
|
; Y = text pointer (updated)
|
4217 |
|
|
; D = number of digits
|
4218 |
|
|
; mon_numwka contains number
|
4219 |
4 |
robfinch |
;------------------------------------------------------------------------------
|
4220 |
|
|
;
|
4221 |
|
|
GetHexNumber:
|
4222 |
14 |
robfinch |
00FFFA8F 04F05F clrd
|
4223 |
|
|
00FFFA91 0FD000910 std mon_numwka ; zero out work area
|
4224 |
|
|
00FFFA94 0FD000912 std mon_numwka+2
|
4225 |
|
|
00FFFA97 034010 pshs x
|
4226 |
|
|
00FFFA99 08E000000 ldx #0 ; max 12 eight digits
|
4227 |
4 |
robfinch |
gthxn2:
|
4228 |
14 |
robfinch |
00FFFA9C 08DF92 bsr MonGetch
|
4229 |
|
|
00FFFA9E 08D01F bsr AsciiToHexNybble
|
4230 |
|
|
00FFFAA0 0C1FFF cmpb #-1
|
4231 |
|
|
00FFFAA2 027017 beq gthxn1
|
4232 |
|
|
00FFFAA4 08DFDC bsr shl_numwka
|
4233 |
|
|
00FFFAA6 08DFDA bsr shl_numwka
|
4234 |
|
|
00FFFAA8 08DFD8 bsr shl_numwka
|
4235 |
|
|
00FFFAAA 08DFD6 bsr shl_numwka
|
4236 |
|
|
00FFFAAC 0C400F andb #$0f
|
4237 |
|
|
00FFFAAE 0FA000913 orb mon_numwka+3
|
4238 |
|
|
00FFFAB1 0F7000913 stb mon_numwka+3
|
4239 |
|
|
00FFFAB4 030001 inx
|
4240 |
|
|
00FFFAB6 08C00000C cmpx #12
|
4241 |
|
|
00FFFAB9 025FE1 blo gthxn2
|
4242 |
4 |
robfinch |
gthxn1:
|
4243 |
14 |
robfinch |
00FFFABB 01F010 tfr x,d
|
4244 |
|
|
00FFFABD 035090 puls x,pc
|
4245 |
4 |
robfinch |
|
4246 |
|
|
;GetDecNumber:
|
4247 |
|
|
; phx
|
4248 |
|
|
; push r4
|
4249 |
|
|
; push r5
|
4250 |
|
|
; ldx #0
|
4251 |
|
|
; ld r4,#10
|
4252 |
|
|
; ld r5,#10
|
4253 |
|
|
;gtdcn2:
|
4254 |
|
|
; jsr MonGetch
|
4255 |
|
|
; jsr AsciiToDecNybble
|
4256 |
|
|
; cmp #-1
|
4257 |
|
|
; beq gtdcn1
|
4258 |
|
|
; mul r2,r2,r5
|
4259 |
|
|
; add r2,r1
|
4260 |
|
|
; dec r4
|
4261 |
|
|
; bne gtdcn2
|
4262 |
|
|
;gtdcn1:
|
4263 |
|
|
; txa
|
4264 |
|
|
; pop r5
|
4265 |
|
|
; pop r4
|
4266 |
|
|
; plx
|
4267 |
|
|
; rts
|
4268 |
|
|
|
4269 |
|
|
;------------------------------------------------------------------------------
|
4270 |
|
|
; Convert ASCII character in the range '0' to '9', 'a' to 'f' or 'A' to 'F'
|
4271 |
|
|
; to a hex nybble.
|
4272 |
|
|
;------------------------------------------------------------------------------
|
4273 |
|
|
;
|
4274 |
|
|
AsciiToHexNybble:
|
4275 |
14 |
robfinch |
00FFFABF 0C1030 cmpb #'0'
|
4276 |
|
|
00FFFAC1 025021 blo gthx3
|
4277 |
|
|
00FFFAC3 0C1039 cmpb #'9'
|
4278 |
|
|
00FFFAC5 022003 bhi gthx5
|
4279 |
|
|
00FFFAC7 0C0030 subb #'0'
|
4280 |
|
|
00FFFAC9 039 rts
|
4281 |
4 |
robfinch |
gthx5:
|
4282 |
14 |
robfinch |
00FFFACA 0C1041 cmpb #'A'
|
4283 |
|
|
00FFFACC 025016 blo gthx3
|
4284 |
|
|
00FFFACE 0C1046 cmpb #'F'
|
4285 |
|
|
00FFFAD0 022005 bhi gthx6
|
4286 |
|
|
00FFFAD2 0C0041 subb #'A'
|
4287 |
|
|
00FFFAD4 0CB00A addb #10
|
4288 |
|
|
00FFFAD6 039 rts
|
4289 |
4 |
robfinch |
gthx6:
|
4290 |
14 |
robfinch |
00FFFAD7 0C1061 cmpb #'a'
|
4291 |
|
|
00FFFAD9 025009 blo gthx3
|
4292 |
|
|
00FFFADB 0C107A cmpb #'z'
|
4293 |
|
|
00FFFADD 022005 bhi gthx3
|
4294 |
|
|
00FFFADF 0C0061 subb #'a'
|
4295 |
|
|
00FFFAE1 0CB00A addb #10
|
4296 |
|
|
00FFFAE3 039 rts
|
4297 |
4 |
robfinch |
gthx3:
|
4298 |
14 |
robfinch |
00FFFAE4 0C6FFF ldb #-1 ; not a hex number
|
4299 |
|
|
00FFFAE6 039 rts
|
4300 |
4 |
robfinch |
|
4301 |
|
|
AsciiToDecNybble:
|
4302 |
14 |
robfinch |
00FFFAE7 0C1030 cmpb #'0'
|
4303 |
|
|
00FFFAE9 024007 bcc gtdc3
|
4304 |
|
|
00FFFAEB 0C103A cmpb #'9'+1
|
4305 |
|
|
00FFFAED 025003 bcs gtdc3
|
4306 |
|
|
00FFFAEF 0C0030 subb #'0'
|
4307 |
|
|
00FFFAF1 039 rts
|
4308 |
4 |
robfinch |
gtdc3:
|
4309 |
14 |
robfinch |
00FFFAF2 0C6FFF ldb #-1
|
4310 |
|
|
00FFFAF4 039 rts
|
4311 |
4 |
robfinch |
|
4312 |
|
|
DisplayErr:
|
4313 |
14 |
robfinch |
00FFFAF5 0CCFFFB06 ldd #msgErr
|
4314 |
|
|
00FFFAF8 017FFE8BB lbsr DisplayString
|
4315 |
|
|
*** warning 1: Long branch within short branch range could be optimized
|
4316 |
|
|
00FFFAFB 07EFFF92E jmp Monitor
|
4317 |
4 |
robfinch |
|
4318 |
|
|
DisplayStringDX
|
4319 |
14 |
robfinch |
00FFFAFE 0DD024 std Strptr
|
4320 |
|
|
00FFFB00 09F026 stx Strptr+2
|
4321 |
|
|
00FFFB02 0BDFFE3B6 jsr DisplayString
|
4322 |
|
|
00FFFB05 039 rts
|
4323 |
4 |
robfinch |
|
4324 |
|
|
msgErr:
|
4325 |
14 |
robfinch |
00FFFB06 02A02A04507207200D00A fcb "**Err",CR,LF,0
|
4326 |
|
|
00FFFB0D 000
|
4327 |
4 |
robfinch |
|
4328 |
|
|
HelpMsg:
|
4329 |
14 |
robfinch |
00FFFB0E 03F02003D020044069073 fcb "? = Display help",CR,LF
|
4330 |
|
|
00FFFB15 07006C061079020068065
|
4331 |
|
|
00FFFB1C 06C07000D00A
|
4332 |
|
|
00FFFB20 04304C05302003D020063 fcb "CLS = clear screen",CR,LF
|
4333 |
|
|
00FFFB27 06C065061072020073063
|
4334 |
|
|
00FFFB2E 07206506506E00D00A
|
4335 |
4 |
robfinch |
; db "S = Boot from SD Card",CR,LF
|
4336 |
14 |
robfinch |
00FFFB34 03A02003D020045064069 fcb ": = Edit memory bytes",CR,LF
|
4337 |
|
|
00FFFB3B 07402006D06506D06F072
|
4338 |
|
|
00FFFB42 079020062079074065073
|
4339 |
|
|
00FFFB49 00D00A
|
4340 |
4 |
robfinch |
; db "L = Load sector",CR,LF
|
4341 |
|
|
; db "W = Write sector",CR,LF
|
4342 |
14 |
robfinch |
00FFFB4B 04405202003D020044075 fcb "DR = Dump registers",CR,LF
|
4343 |
|
|
00FFFB52 06D070020072065067069
|
4344 |
|
|
00FFFB59 07307406507207300D00A
|
4345 |
|
|
00FFFB60 04402003D02004407506D fcb "D = Dump memory",CR,LF
|
4346 |
|
|
00FFFB67 07002006D06506D06F072
|
4347 |
|
|
00FFFB6E 07900D00A
|
4348 |
4 |
robfinch |
; db "F = Fill memory",CR,LF
|
4349 |
14 |
robfinch |
00FFFB71 04604C02003D020044075 fcb "FL = Dump I/O Focus List",CR,LF
|
4350 |
|
|
00FFFB78 06D07002004902F04F020
|
4351 |
|
|
00FFFB7F 04606F06307507302004C
|
4352 |
|
|
00FFFB86 06907307400D00A
|
4353 |
|
|
00FFFB8B 04604904702003D020073 fcb "FIG = start FIG Forth",CR,LF
|
4354 |
|
|
00FFFB92 074061072074020046049
|
4355 |
|
|
00FFFB99 04702004606F072074068
|
4356 |
|
|
00FFFBA0 00D00A
|
4357 |
4 |
robfinch |
; db "KILL n = kill task #n",CR,LF
|
4358 |
|
|
; db "B = start tiny basic",CR,LF
|
4359 |
|
|
; db "b = start EhBasic 6502",CR,LF
|
4360 |
14 |
robfinch |
00FFFBA2 04A02003D02004A07506D fcb "J = Jump to code",CR,LF
|
4361 |
|
|
00FFFBA9 07002007406F02006306F
|
4362 |
|
|
00FFFBB0 06406500D00A
|
4363 |
|
|
00FFFBB4 05204104D02003D020074 fcb "RAM = test RAM",CR,LF
|
4364 |
|
|
00FFFBBB 06507307402005204104D
|
4365 |
|
|
00FFFBC2 00D00A
|
4366 |
4 |
robfinch |
; db "R[n] = Set register value",CR,LF
|
4367 |
|
|
; db "r = random lines - test bitmap",CR,LF
|
4368 |
|
|
; db "e = ethernet test",CR,LF
|
4369 |
14 |
robfinch |
00FFFBC4 07302003D020073065072 fcb "s = serial output test",CR,LF
|
4370 |
|
|
00FFFBCB 06906106C02006F075074
|
4371 |
|
|
00FFFBD2 070075074020074065073
|
4372 |
|
|
00FFFBD9 07400D00A
|
4373 |
4 |
robfinch |
; db "T = Dump task list",CR,LF
|
4374 |
|
|
; db "TO = Dump timeout list",CR,LF
|
4375 |
14 |
robfinch |
00FFFBDC 05404902003D020064069 fcb "TI = display date/time",CR,LF
|
4376 |
|
|
00FFFBE3 07307006C061079020064
|
4377 |
|
|
00FFFBEA 06107406502F07406906D
|
4378 |
|
|
00FFFBF1 06500D00A
|
4379 |
4 |
robfinch |
; db "TEMP = display temperature",CR,LF
|
4380 |
14 |
robfinch |
00FFFBF4 05502003D02007506E061 fcb "U = unassemble",CR,LF
|
4381 |
|
|
00FFFBFB 07307306506D06206C065
|
4382 |
|
|
00FFFC02 00D00A
|
4383 |
4 |
robfinch |
; db "P = Piano",CR,LF,0
|
4384 |
14 |
robfinch |
00FFFC04 000 fcb 0
|
4385 |
4 |
robfinch |
|
4386 |
|
|
msgRegHeadings
|
4387 |
14 |
robfinch |
00FFFC05 00D00A02002004402F041 fcb CR,LF," D/AB X Y U S PC DP CCR",CR,LF,0
|
4388 |
|
|
00FFFC0C 042020020020020020058
|
4389 |
|
|
00FFFC13 020020020020020020059
|
4390 |
|
|
00FFFC1A 020020020020020020055
|
4391 |
|
|
00FFFC21 020020020020020020053
|
4392 |
|
|
00FFFC28 020020020020020020020
|
4393 |
|
|
00FFFC2F 050043020020020020044
|
4394 |
|
|
00FFFC36 05002002004304305200D
|
4395 |
|
|
00FFFC3D 00A000
|
4396 |
4 |
robfinch |
|
4397 |
|
|
nHEX4:
|
4398 |
14 |
robfinch |
00FFFC3F 0BDFFD2D2 jsr HEX4
|
4399 |
|
|
00FFFC42 039 rts
|
4400 |
4 |
robfinch |
|
4401 |
|
|
nXBLANK:
|
4402 |
14 |
robfinch |
00FFFC43 0C6020 ldb #' '
|
4403 |
|
|
00FFFC45 016FFF0CA lbra OUTCH
|
4404 |
13 |
robfinch |
*** warning 1: Long branch within short branch range could be optimized
|
4405 |
4 |
robfinch |
|
4406 |
13 |
robfinch |
;------------------------------------------------------------------------------
|
4407 |
|
|
; Dump Memory
|
4408 |
|
|
;
|
4409 |
|
|
; Usage:
|
4410 |
14 |
robfinch |
; $D FFFC12 FFFC20
|
4411 |
13 |
robfinch |
;
|
4412 |
|
|
; Dump formatted to look like:
|
4413 |
|
|
; :FFFC12 012 012 012 012 555 666 777 888
|
4414 |
|
|
;
|
4415 |
|
|
;------------------------------------------------------------------------------
|
4416 |
4 |
robfinch |
|
4417 |
13 |
robfinch |
DumpMemory:
|
4418 |
14 |
robfinch |
00FFFC48 08DE1C bsr GetRange
|
4419 |
|
|
00FFFC4A 18E000000 ldy #0
|
4420 |
|
|
00FFFC4D 1BE000922 ldy mon_r1+2
|
4421 |
13 |
robfinch |
dmpm2:
|
4422 |
14 |
robfinch |
00FFFC50 017FFD47F lbsr CRLF
|
4423 |
13 |
robfinch |
*** warning 1: Long branch within short branch range could be optimized
|
4424 |
14 |
robfinch |
00FFFC53 0C603A ldb #':'
|
4425 |
|
|
00FFFC55 017FFF0BA lbsr OUTCH
|
4426 |
13 |
robfinch |
*** warning 1: Long branch within short branch range could be optimized
|
4427 |
14 |
robfinch |
00FFFC58 01F020 tfr y,d
|
4428 |
13 |
robfinch |
;addd mon_r1+2 ; output the address
|
4429 |
14 |
robfinch |
00FFFC5A 017FFE7A4 lbsr DispWordAsHex
|
4430 |
13 |
robfinch |
*** warning 1: Long branch within short branch range could be optimized
|
4431 |
14 |
robfinch |
00FFFC5D 0C6020 ldb #' '
|
4432 |
|
|
00FFFC5F 017FFF0B0 lbsr OUTCH
|
4433 |
13 |
robfinch |
*** warning 1: Long branch within short branch range could be optimized
|
4434 |
14 |
robfinch |
00FFFC62 08E000008 ldx #8 ; number of bytes to display
|
4435 |
13 |
robfinch |
dmpm1:
|
4436 |
|
|
; ldb far [mon_r1+1],y
|
4437 |
|
|
;ldb [mon_r1+2],y
|
4438 |
14 |
robfinch |
00FFFC65 0E6A04 ldb ,y
|
4439 |
|
|
00FFFC67 031201 iny
|
4440 |
|
|
00FFFC69 017FFE79E lbsr DispByteAsHex ; display byte
|
4441 |
13 |
robfinch |
*** warning 1: Long branch within short branch range could be optimized
|
4442 |
14 |
robfinch |
00FFFC6C 0C6020 ldb #' ' ; followed by a space
|
4443 |
|
|
00FFFC6E 017FFF0A1 lbsr OUTCH
|
4444 |
13 |
robfinch |
*** warning 1: Long branch within short branch range could be optimized
|
4445 |
14 |
robfinch |
00FFFC71 05F clrb
|
4446 |
|
|
00FFFC72 04F clra
|
4447 |
|
|
00FFFC73 017FFF064 lbsr INCH
|
4448 |
13 |
robfinch |
*** warning 1: Long branch within short branch range could be optimized
|
4449 |
14 |
robfinch |
00FFFC76 0C1003 cmpb #CTRLC
|
4450 |
|
|
00FFFC78 027024 beq dmpm3
|
4451 |
|
|
00FFFC7A 0301FF dex
|
4452 |
|
|
00FFFC7C 026FE7 bne dmpm1
|
4453 |
13 |
robfinch |
; Now output ascii
|
4454 |
14 |
robfinch |
00FFFC7E 0C6020 ldb #' '
|
4455 |
|
|
00FFFC80 017FFF08F lbsr OUTCH
|
4456 |
13 |
robfinch |
*** warning 1: Long branch within short branch range could be optimized
|
4457 |
14 |
robfinch |
00FFFC83 08E000008 ldx #8 ; 8 chars to output
|
4458 |
|
|
00FFFC86 0313F8 leay -8,y ; backup pointer
|
4459 |
13 |
robfinch |
dmpm5:
|
4460 |
|
|
; ldb far [mon_r1+1],y ; get the char
|
4461 |
|
|
; ldb [mon_r1+2],y ; get the char
|
4462 |
14 |
robfinch |
00FFFC88 0E6A04 ldb ,y
|
4463 |
|
|
00FFFC8A 0C1020 cmpb #$20 ; is it a control char?
|
4464 |
|
|
00FFFC8C 024002 bhs dmpm4
|
4465 |
|
|
00FFFC8E 0C602E ldb #'.'
|
4466 |
13 |
robfinch |
dmpm4:
|
4467 |
14 |
robfinch |
00FFFC90 017FFF07F lbsr OUTCH
|
4468 |
13 |
robfinch |
*** warning 1: Long branch within short branch range could be optimized
|
4469 |
14 |
robfinch |
00FFFC93 031201 iny
|
4470 |
|
|
00FFFC95 0301FF dex
|
4471 |
|
|
00FFFC97 026FEF bne dmpm5
|
4472 |
|
|
00FFFC99 1BC000926 cmpy mon_r2+2
|
4473 |
|
|
00FFFC9C 025FB2 blo dmpm2
|
4474 |
13 |
robfinch |
dmpm3:
|
4475 |
14 |
robfinch |
00FFFC9E 017FFD431 lbsr CRLF
|
4476 |
13 |
robfinch |
*** warning 1: Long branch within short branch range could be optimized
|
4477 |
14 |
robfinch |
00FFFCA1 016FFFC8A lbra Monitor
|
4478 |
13 |
robfinch |
*** warning 1: Long branch within short branch range could be optimized
|
4479 |
|
|
|
4480 |
|
|
;------------------------------------------------------------------------------
|
4481 |
14 |
robfinch |
; Edit Memory
|
4482 |
|
|
;
|
4483 |
|
|
; Usage:
|
4484 |
|
|
; $$:FFFC12 8 "Hello World!" 0
|
4485 |
|
|
;
|
4486 |
|
|
; Dump formatted to look like:
|
4487 |
|
|
; :FFFC12 012 012 012 012 555 666 777 888
|
4488 |
|
|
;
|
4489 |
|
|
;------------------------------------------------------------------------------
|
4490 |
|
|
|
4491 |
|
|
EditMemory:
|
4492 |
|
|
00FFFCA4 0CE000008 ldu #8 ; set max byte count
|
4493 |
|
|
00FFFCA7 017FFFDE5 lbsr GetHexNumber ; get the start address
|
4494 |
|
|
*** warning 1: Long branch within short branch range could be optimized
|
4495 |
|
|
00FFFCAA 0BE000922 ldx mon_r1+2
|
4496 |
|
|
EditMem2:
|
4497 |
|
|
00FFFCAD 017FFFD8C lbsr ignBlanks ; skip over blanks
|
4498 |
|
|
*** warning 1: Long branch within short branch range could be optimized
|
4499 |
|
|
00FFFCB0 017FFFDDC lbsr GetHexNumber ; get the byte value
|
4500 |
|
|
*** warning 1: Long branch within short branch range could be optimized
|
4501 |
|
|
00FFFCB3 05D tstb ; check for valid value
|
4502 |
|
|
00FFFCB4 02B00C bmi EditMem1 ; if invalid, quit
|
4503 |
|
|
00FFFCB6 0F6000923 ldb mon_r1+3 ; get value
|
4504 |
|
|
00FFFCB9 0E7800 stb ,x+ ; update memory at address
|
4505 |
|
|
00FFFCBB 0335FF leau -1,u ; decremeent byte count
|
4506 |
|
|
00FFFCBD 283000000 cmpu #0
|
4507 |
|
|
00FFFCC0 026FEB bne EditMem2 ; go back for annother byte
|
4508 |
|
|
EditMem1:
|
4509 |
|
|
00FFFCC2 017FFFD6B lbsr MonGetch ; see if a string is being entered
|
4510 |
|
|
*** warning 1: Long branch within short branch range could be optimized
|
4511 |
|
|
00FFFCC5 0C1022 cmpb #'"'
|
4512 |
|
|
00FFFCC7 026018 bne EditMem3 ; no string, we're done
|
4513 |
|
|
00FFFCC9 0CE000028 ldu #40 ; string must be less than 40 chars
|
4514 |
|
|
EditMem4:
|
4515 |
|
|
00FFFCCC 017FFFD61 lbsr MonGetch ; look for close quote
|
4516 |
|
|
*** warning 1: Long branch within short branch range could be optimized
|
4517 |
|
|
00FFFCCF 0C1022 cmpb #'"'
|
4518 |
|
|
00FFFCD1 026005 bne EditMem6 ; end of string?
|
4519 |
|
|
00FFFCD3 0CE000008 ldu #8 ; reset the byte count
|
4520 |
|
|
00FFFCD6 020FD5 bra EditMem2
|
4521 |
|
|
EditMem6:
|
4522 |
|
|
00FFFCD8 0E7800 stb ,x+ ; store the character in memory
|
4523 |
|
|
00FFFCDA 0335FF leau -1,u ; decrement byte count
|
4524 |
|
|
00FFFCDC 283000000 cmpu #0
|
4525 |
|
|
00FFFCDF 022FEB bhi EditMem4 ; max 40 chars
|
4526 |
|
|
EditMem3:
|
4527 |
|
|
00FFFCE1 016FFFC4A lbra Monitor
|
4528 |
|
|
*** warning 1: Long branch within short branch range could be optimized
|
4529 |
|
|
|
4530 |
|
|
|
4531 |
|
|
;------------------------------------------------------------------------------
|
4532 |
13 |
robfinch |
; Dump Registers
|
4533 |
|
|
;
|
4534 |
|
|
; Usage:
|
4535 |
|
|
; $DR
|
4536 |
|
|
;------------------------------------------------------------------------------
|
4537 |
|
|
|
4538 |
|
|
DumpRegs:
|
4539 |
14 |
robfinch |
00FFFCE4 0CCFFFC05 ldd #msgRegHeadings
|
4540 |
|
|
00FFFCE7 017FFE6CC lbsr DisplayString
|
4541 |
13 |
robfinch |
*** warning 1: Long branch within short branch range could be optimized
|
4542 |
14 |
robfinch |
00FFFCEA 08DF57 bsr nXBLANK
|
4543 |
|
|
00FFFCEC 0FC000900 ldd mon_DSAVE
|
4544 |
|
|
00FFFCEF 08DF4E bsr nHEX4
|
4545 |
|
|
00FFFCF1 08DF50 bsr nXBLANK
|
4546 |
|
|
00FFFCF3 0FC000902 ldd mon_XSAVE
|
4547 |
|
|
00FFFCF6 08DF47 bsr nHEX4
|
4548 |
|
|
00FFFCF8 08DF49 bsr nXBLANK
|
4549 |
|
|
00FFFCFA 0FC000904 ldd mon_YSAVE
|
4550 |
|
|
00FFFCFD 08DF40 bsr nHEX4
|
4551 |
|
|
00FFFCFF 08DF42 bsr nXBLANK
|
4552 |
|
|
00FFFD01 0FC000906 ldd mon_USAVE
|
4553 |
|
|
00FFFD04 08DF39 bsr nHEX4
|
4554 |
|
|
00FFFD06 08DF3B bsr nXBLANK
|
4555 |
|
|
00FFFD08 0FC000908 ldd mon_SSAVE
|
4556 |
|
|
00FFFD0B 08DF32 bsr nHEX4
|
4557 |
|
|
00FFFD0D 08DF34 bsr nXBLANK
|
4558 |
|
|
00FFFD0F 0F600090B ldb mon_PCSAVE+1
|
4559 |
|
|
00FFFD12 017FFE6F5 lbsr DispByteAsHex
|
4560 |
13 |
robfinch |
*** warning 1: Long branch within short branch range could be optimized
|
4561 |
14 |
robfinch |
00FFFD15 0FC00090C ldd mon_PCSAVE+2
|
4562 |
|
|
00FFFD18 08DF25 bsr nHEX4
|
4563 |
|
|
00FFFD1A 08DF27 bsr nXBLANK
|
4564 |
|
|
00FFFD1C 0FC00090E ldd mon_DPRSAVE
|
4565 |
|
|
00FFFD1F 0BDFFD2CE jsr HEX2
|
4566 |
|
|
00FFFD22 08DF1F bsr nXBLANK
|
4567 |
|
|
00FFFD24 0B600090F lda mon_CCRSAVE
|
4568 |
|
|
00FFFD27 017FFD5A4 lbsr HEX2
|
4569 |
13 |
robfinch |
*** warning 1: Long branch within short branch range could be optimized
|
4570 |
14 |
robfinch |
00FFFD2A 08DF17 bsr nXBLANK
|
4571 |
|
|
00FFFD2C 016FFFBFF lbra Monitor
|
4572 |
13 |
robfinch |
*** warning 1: Long branch within short branch range could be optimized
|
4573 |
|
|
|
4574 |
|
|
;------------------------------------------------------------------------------
|
4575 |
4 |
robfinch |
; Jump to code
|
4576 |
13 |
robfinch |
;
|
4577 |
|
|
; Registers are loaded with values from the monitor register save area before
|
4578 |
|
|
; the code is jumped to.
|
4579 |
|
|
;
|
4580 |
|
|
; J
|
4581 |
|
|
;------------------------------------------------------------------------------
|
4582 |
|
|
|
4583 |
4 |
robfinch |
jump_to_code:
|
4584 |
14 |
robfinch |
00FFFD2F 08DD5E bsr GetHexNumber
|
4585 |
|
|
00FFFD31 01A010 sei
|
4586 |
|
|
00FFFD33 1FE000908 lds mon_SSAVE
|
4587 |
|
|
00FFFD36 0CCFFFD6A ldd #
|
4588 |
|
|
00FFFD39 034006 pshs d
|
4589 |
|
|
00FFFD3B 0C6000 ldb #>jtc_exit
|
4590 |
|
|
00FFFD3D 034004 pshs b
|
4591 |
|
|
00FFFD3F 0FC000912 ldd mon_numwka+2 ; get the address parameter
|
4592 |
|
|
00FFFD42 034006 pshs d
|
4593 |
|
|
00FFFD44 0F6000911 ldb mon_numwka+1
|
4594 |
|
|
00FFFD47 034004 pshs b
|
4595 |
|
|
00FFFD49 0FC000906 ldd mon_USAVE
|
4596 |
|
|
00FFFD4C 034006 pshs d
|
4597 |
|
|
00FFFD4E 0FC000904 ldd mon_YSAVE
|
4598 |
|
|
00FFFD51 034006 pshs d
|
4599 |
|
|
00FFFD53 0FC000902 ldd mon_XSAVE
|
4600 |
|
|
00FFFD56 034006 pshs d
|
4601 |
|
|
00FFFD58 0B600090E lda mon_DPRSave
|
4602 |
|
|
00FFFD5B 034002 pshs a
|
4603 |
|
|
00FFFD5D 0FC000900 ldd mon_DSAVE
|
4604 |
|
|
00FFFD60 034006 pshs d
|
4605 |
|
|
00FFFD62 0B600090F lda mon_CCRSAVE
|
4606 |
|
|
00FFFD65 034002 pshs a
|
4607 |
|
|
00FFFD67 0150350FF puls far ccr,d,dpr,x,y,u,pc
|
4608 |
4 |
robfinch |
jtc_exit:
|
4609 |
14 |
robfinch |
00FFFD6A 1FF000908 sts >mon_SSAVE ; need to use extended addressing, no direct page setting
|
4610 |
|
|
00FFFD6D 03280F006FFF leas $6FFF ; reset stack to system area, dont modify flags register!
|
4611 |
|
|
00FFFD71 034001 pshs ccr ; now the stack can be used
|
4612 |
|
|
00FFFD73 034002 pshs a ; save acca register so we can use it
|
4613 |
|
|
00FFFD75 01F0B8 tfr dpr,a ; a = outgoing dpr value
|
4614 |
|
|
00FFFD77 0B700090E sta >mon_DPRSAVE ; force extended addressing mode usage here dpr is not set
|
4615 |
|
|
00FFFD7A 04F clra ; dpg register must be set to zero before values are
|
4616 |
|
|
00FFFD7B 01F08B tfr a,dpr ; saved in the monitor register save area.
|
4617 |
|
|
00FFFD7D 035002 puls a ; get back acca
|
4618 |
|
|
00FFFD7F 0FD000900 std mon_DSAVE ; save regsters, can use direct addressing now
|
4619 |
|
|
00FFFD82 0BF000902 stx mon_XSAVE
|
4620 |
|
|
00FFFD85 1BF000904 sty mon_YSAVE
|
4621 |
|
|
00FFFD88 0FF000906 stu mon_USAVE
|
4622 |
|
|
00FFFD8B 035002 puls a ; get back ccr
|
4623 |
|
|
00FFFD8D 0B700090F sta mon_CCRSAVE ; and save it too
|
4624 |
13 |
robfinch |
; Reset vectors in case they got toasted.
|
4625 |
14 |
robfinch |
00FFFD90 0CCFFEBE4 ldd #SerialPeekCharDirect
|
4626 |
|
|
00FFFD93 0FD000804 std CharInVec
|
4627 |
|
|
00FFFD96 0CCFFE2F5 ldd #DisplayChar
|
4628 |
|
|
00FFFD99 0FD000800 std CharOutVec
|
4629 |
|
|
00FFFD9C 0FCFFFAF5 ldd DisplayErr
|
4630 |
|
|
00FFFD9F 0FD00080C std MonErrVec
|
4631 |
4 |
robfinch |
; todo set according to coreid
|
4632 |
14 |
robfinch |
00FFFDA2 016FFFF3F lbra DumpRegs ; now go do a register dump
|
4633 |
13 |
robfinch |
*** warning 1: Long branch within short branch range could be optimized
|
4634 |
4 |
robfinch |
|
4635 |
|
|
;------------------------------------------------------------------------------
|
4636 |
|
|
;------------------------------------------------------------------------------
|
4637 |
14 |
robfinch |
|
4638 |
|
|
DumpIOFocusList:
|
4639 |
|
|
00FFFDA5 08E000000 ldx #0
|
4640 |
|
|
dfl2:
|
4641 |
|
|
00FFFDA8 0E680A000FF0000 ldb IOFocusList,x
|
4642 |
|
|
00FFFDAD 0C1018 cmpb #24
|
4643 |
|
|
00FFFDAF 02600A bne dfl1
|
4644 |
|
|
00FFFDB1 01F010 tfr x,d
|
4645 |
|
|
00FFFDB3 017FFE654 lbsr DispByteAsHex
|
4646 |
|
|
*** warning 1: Long branch within short branch range could be optimized
|
4647 |
|
|
00FFFDB6 0C6020 ldb #' '
|
4648 |
|
|
00FFFDB8 017FFEF57 lbsr OUTCH
|
4649 |
|
|
*** warning 1: Long branch within short branch range could be optimized
|
4650 |
|
|
dfl1:
|
4651 |
|
|
00FFFDBB 030001 inx
|
4652 |
|
|
00FFFDBD 08C000010 cmpx #16
|
4653 |
|
|
00FFFDC0 025FE6 blo dfl2
|
4654 |
|
|
00FFFDC2 017FFD30D lbsr CRLF
|
4655 |
|
|
*** warning 1: Long branch within short branch range could be optimized
|
4656 |
|
|
00FFFDC5 016FFFB66 lbra Monitor
|
4657 |
|
|
*** warning 1: Long branch within short branch range could be optimized
|
4658 |
|
|
|
4659 |
|
|
|
4660 |
|
|
;------------------------------------------------------------------------------
|
4661 |
|
|
;------------------------------------------------------------------------------
|
4662 |
4 |
robfinch |
swi3_rout:
|
4663 |
14 |
robfinch |
00FFFDC8 01A010 sei
|
4664 |
|
|
00FFFDCA 035002 puls a
|
4665 |
|
|
00FFFDCC 0B700090F sta mon_CCRSAVE
|
4666 |
|
|
00FFFDCF 03507E puls D,DPR,X,Y,U
|
4667 |
|
|
00FFFDD1 0FD000900 std mon_DSAVE
|
4668 |
|
|
00FFFDD4 0BF000902 stx mon_XSAVE
|
4669 |
|
|
00FFFDD7 1BF000904 sty mon_YSAVE
|
4670 |
|
|
00FFFDDA 0FF000906 stu mon_USAVE
|
4671 |
|
|
00FFFDDD 01F0B8 tfr dpr,a
|
4672 |
|
|
00FFFDDF 0B700090E sta mon_DPRSAVE
|
4673 |
|
|
00FFFDE2 035002 puls a
|
4674 |
|
|
00FFFDE4 0B700090A sta mon_PCSAVE
|
4675 |
|
|
00FFFDE7 035006 puls D
|
4676 |
|
|
00FFFDE9 0FD00090B std mon_PCSAVE+1
|
4677 |
|
|
00FFFDEC 1FF000908 sts mon_SSAVE
|
4678 |
|
|
00FFFDEF 1CE003FFF lds #$3FFF
|
4679 |
|
|
00FFFDF2 01C0EF cli
|
4680 |
|
|
00FFFDF4 07EFFFCE4 jmp DumpRegs
|
4681 |
4 |
robfinch |
swi3_exit:
|
4682 |
14 |
robfinch |
00FFFDF7 01A010 sei
|
4683 |
|
|
00FFFDF9 1FE000908 lds mon_SSAVE
|
4684 |
|
|
00FFFDFC 0FC00090B ldd mon_PCSAVE+1
|
4685 |
|
|
00FFFDFF 034006 pshs d
|
4686 |
|
|
00FFFE01 0B600090A lda mon_PCSAVE
|
4687 |
|
|
00FFFE04 034002 pshs a
|
4688 |
|
|
00FFFE06 0FE000906 ldu mon_USAVE
|
4689 |
|
|
00FFFE09 1BE000904 ldy mon_YSAVE
|
4690 |
|
|
00FFFE0C 0BE000902 ldx mon_XSAVE
|
4691 |
|
|
00FFFE0F 034070 pshs x,y,u
|
4692 |
|
|
00FFFE11 0B600090E lda mon_DPRSAVE
|
4693 |
|
|
00FFFE14 034002 pshs a
|
4694 |
|
|
00FFFE16 0FC000900 ldd mon_DSAVE
|
4695 |
|
|
00FFFE19 034006 pshs d
|
4696 |
|
|
00FFFE1B 0B600090F lda mon_CCRSAVE
|
4697 |
|
|
00FFFE1E 034002 pshs a
|
4698 |
|
|
00FFFE20 01F08A tfr a,ccr
|
4699 |
|
|
00FFFE22 01C0EF cli
|
4700 |
|
|
00FFFE24 03B rti
|
4701 |
4 |
robfinch |
|
4702 |
|
|
;------------------------------------------------------------------------------
|
4703 |
|
|
;------------------------------------------------------------------------------
|
4704 |
13 |
robfinch |
firq_rout:
|
4705 |
14 |
robfinch |
00FFFE25 03B rti
|
4706 |
13 |
robfinch |
|
4707 |
4 |
robfinch |
irq_rout:
|
4708 |
13 |
robfinch |
; lbsr SerialIRQ ; check for recieved character
|
4709 |
|
|
; lbsr TimerIRQ
|
4710 |
|
|
|
4711 |
4 |
robfinch |
; Reset the edge sense circuit in the PIC
|
4712 |
14 |
robfinch |
00FFFE26 08601F lda #31 ; Timer is IRQ #31
|
4713 |
|
|
00FFFE28 0B7FF0011 sta IrqSource ; stuff a byte indicating the IRQ source for PEEK()
|
4714 |
|
|
00FFFE2B 0150B7FFFE3F010 sta PIC+16 ; register 16 is edge sense reset reg
|
4715 |
|
|
00FFFE30 0150B6FFFE6000D lda VIA+VIA_IFR
|
4716 |
|
|
00FFFE35 02A011 bpl notTimerIRQ2
|
4717 |
|
|
00FFFE37 085800 bita #$800
|
4718 |
|
|
00FFFE39 02700D beq notTimerIRQ2
|
4719 |
|
|
00FFFE3B 01507FFFFE60012 clr VIA+VIA_T3LL
|
4720 |
|
|
00FFFE40 01507FFFFE60013 clr VIA+VIA_T3LH
|
4721 |
|
|
00FFFE45 07CE00037 inc $E00037 ; update timer IRQ screen flag
|
4722 |
13 |
robfinch |
notTimerIRQ2:
|
4723 |
4 |
robfinch |
|
4724 |
14 |
robfinch |
00FFFE48 0B6FF0014 lda IrqBase ; get the IRQ flag byte
|
4725 |
|
|
00FFFE4B 044 lsra
|
4726 |
|
|
00FFFE4C 0BAFF0014 ora IrqBase
|
4727 |
|
|
00FFFE4F 0840E0 anda #$E0
|
4728 |
|
|
00FFFE51 0B7FF0014 sta IrqBase
|
4729 |
4 |
robfinch |
|
4730 |
13 |
robfinch |
; inc TEXTSCR+54 ; update IRQ live indicator on screen
|
4731 |
4 |
robfinch |
|
4732 |
|
|
; flash the cursor
|
4733 |
|
|
; only bother to flash the cursor for the task with the IO focus.
|
4734 |
13 |
robfinch |
; lda COREID
|
4735 |
|
|
; cmpa IOFocusID
|
4736 |
|
|
; bne tr1a
|
4737 |
|
|
; lda CursorFlash ; test if we want a flashing cursor
|
4738 |
|
|
; beq tr1a
|
4739 |
|
|
; lbsr CalcScreenLoc ; compute cursor location in memory
|
4740 |
|
|
; tfr d,y
|
4741 |
|
|
; lda $2000,y ; get color code $2000 higher in memory
|
4742 |
|
|
; ldb IRQFlag ; get counter
|
4743 |
|
|
; lsrb
|
4744 |
|
|
; lsra
|
4745 |
|
|
; lsra
|
4746 |
|
|
; lsra
|
4747 |
|
|
; lsra
|
4748 |
|
|
; lsrb
|
4749 |
|
|
; rola
|
4750 |
|
|
; lsrb
|
4751 |
|
|
; rola
|
4752 |
|
|
; lsrb
|
4753 |
|
|
; rola
|
4754 |
|
|
; lsrb
|
4755 |
|
|
; rola
|
4756 |
|
|
; sta $E00000,y ; store the color code back to memory
|
4757 |
|
|
tr1a:
|
4758 |
14 |
robfinch |
00FFFE54 03B rti
|
4759 |
4 |
robfinch |
|
4760 |
|
|
;------------------------------------------------------------------------------
|
4761 |
|
|
;------------------------------------------------------------------------------
|
4762 |
|
|
nmi_rout:
|
4763 |
14 |
robfinch |
00FFFE55 0150F6FFFFFFFE0 ldb COREID
|
4764 |
|
|
00FFFE5A 086049 lda #'I'
|
4765 |
|
|
00FFFE5C 08EE00028 ldx #TEXTSCR+40
|
4766 |
|
|
00FFFE5F 0A788F sta b,x
|
4767 |
13 |
robfinch |
rti_insn:
|
4768 |
14 |
robfinch |
00FFFE61 03B rti
|
4769 |
4 |
robfinch |
|
4770 |
13 |
robfinch |
; Special Register Area
|
4771 |
|
|
org $FFFFE0
|
4772 |
|
|
|
4773 |
|
|
; Interrupt vector table
|
4774 |
|
|
|
4775 |
4 |
robfinch |
org $FFFFF0
|
4776 |
14 |
robfinch |
00FFFFF0 FFFE61 fcw rti_insn ; reserved
|
4777 |
|
|
00FFFFF2 FFFDC8 fcw swi3_rout ; SWI3
|
4778 |
|
|
00FFFFF4 FFFE61 fcw rti_insn ; SWI2
|
4779 |
|
|
00FFFFF6 FFFE25 fcw firq_rout ; FIRQ
|
4780 |
|
|
00FFFFF8 FFFE26 fcw irq_rout ; IRQ
|
4781 |
13 |
robfinch |
00FFFFFA FFE023 fcw start ; SWI
|
4782 |
14 |
robfinch |
00FFFFFC FFFE55 fcw nmi_rout ; NMI
|
4783 |
13 |
robfinch |
00FFFFFE FFE023 fcw start ; RST
|
4784 |
4 |
robfinch |
|
4785 |
14 |
robfinch |
192 warning(s) in pass 2.
|
4786 |
4 |
robfinch |
|
4787 |
|
|
SYMBOL TABLE
|
4788 |
13 |
robfinch |
ACIA 00 FFE30100 ACIA_CMD 00 00000002 ACIA_CTRL 00 00000003 ACIA_CTRL2 00 0000000B
|
4789 |
14 |
robfinch |
ACIA_RX 00 00000000 ACIA_STAT 00 00000001 ACIA_TX 00 00000000 ASCIITODECNYBBLE 02 00FFFAE7
|
4790 |
|
|
ASCIITOHEXNYBBLE 02 00FFFABF ASMBUF 00 00000160 ASMO 02 00FFF8BC ASMOO 02 00FFF8C6
|
4791 |
|
|
ASMOUTCH 02 00FFF8D0 BIOS_SCREENS 00 17000000 BLANKLINE 02 00FFE26C BLKCPYDST 00 00000020
|
4792 |
|
|
BLKCPYSRC 00 0000001C BLNKLN1 02 00FFE27F CALCSCREENLOC 02 00FFE2D2 CHARCOLOR 00 00000112
|
4793 |
|
|
CHARINVEC 00 00000804 CHAROUTVEC 00 00000800 CHECKPOINT 02 00FFE129 CLEARSCREEN 02 00FFE225
|
4794 |
|
|
CLEARSCREENJMP 02 00FFD300 CMDPROMPT 02 00FFF8E0 CMDPROMPTJI 00 00000808 COLORCODELOCATION 00 00000014
|
4795 |
|
|
COPYSCREENTOVIRTUALSCREEN 02 00FFE1F5 COPYVIRTUALSCREENTOSCREEN 02 00FFE1BE COREID 00 FFFFFFE0 CR 00 0000000D
|
4796 |
|
|
CRLF 02 00FFD0D2 CRLF1 02 00FFD0D2 CRLFST 02 00FFE3F5 CS1 02 00FFE232
|
4797 |
|
|
CS2 02 00FFE249 CS2V1 02 00FFE201 CS3 02 00FFE24F CSL1 02 00FFE2ED
|
4798 |
13 |
robfinch |
CTRLC 00 00000003 CTRLH 00 00000008 CTRLI 00 00000009 CTRLJ 00 0000000A
|
4799 |
|
|
CTRLK 00 0000000B CTRLM 00 0000000D CTRLS 00 00000013 CTRLT 00 00000014
|
4800 |
|
|
CTRLX 00 00000018 CURSORCOL 00 00000111 CURSORFLASH 00 00000114 CURSORROW 00 00000110
|
4801 |
14 |
robfinch |
CV2S1 02 00FFE1D3 DAB1 02 00FFF8DF DAB2 02 00FFF8D6 DBGCHECKFORKEY 02 00FFEA10
|
4802 |
13 |
robfinch |
DBGK1 02 00FFEA4B DBGK10 02 00FFEAB0 DBGK11 02 00FFEB09 DBGK12 02 00FFEB0F
|
4803 |
|
|
DBGK13 02 00FFEB1B DBGK14 02 00FFEB2B DBGK15 02 00FFEB3A DBGK16 02 00FFEB45
|
4804 |
|
|
DBGK17 02 00FFEB4E DBGK18 02 00FFEB51 DBGK2 02 00FFEA16 DBGK20 02 00FFEA38
|
4805 |
|
|
DBGK22 02 00FFEA54 DBGK23 02 00FFEA65 DBGK24 02 00FFEA46 DBGK3 02 00FFEA68
|
4806 |
|
|
DBGK4 02 00FFEA74 DBGK5 02 00FFEA80 DBGK7 02 00FFEA90 DBGK8 02 00FFEA96
|
4807 |
|
|
DBGK9 02 00FFEAAA DBGKNOTALT 02 00FFEB13 DBGKNOTCAPSLOCK 02 00FFEAE2 DBGKNOTCTRL 02 00FFEA9A
|
4808 |
14 |
robfinch |
DBGKNOTNUMLOCK 02 00FFEACB DBGKNOTRSHIFT 02 00FFEAB4 DBGKNOTSCROLLLOCK 02 00FFEAF9 DCCR 02 00FFE305
|
4809 |
|
|
DCLF 02 00FFE38F DCX10 02 00FFE33F DCX11 02 00FFE34F DCX12 02 00FFE34B
|
4810 |
|
|
DCX13 02 00FFE35B DCX14 02 00FFE302 DCX3 02 00FFE37D DCX4 02 00FFE391
|
4811 |
|
|
DCX5 02 00FFE36C DCX6 02 00FFE316 DCX7 02 00FFE312 DCX8 02 00FFE323
|
4812 |
|
|
DCX9 02 00FFE330 DELAY3S 02 00FFE1A1 DFL1 02 00FFFDBB DFL2 02 00FFFDA8
|
4813 |
|
|
DIRECT 00 00000001 DIS1 02 00FFF7EF DIS10 02 00FFF572 DIS11 02 00FFF5AE
|
4814 |
|
|
DIS12 02 00FFF5EB DIS13 02 00FFF627 DIS14 02 00FFF668 DIS15 02 00FFF6A4
|
4815 |
|
|
DIS16 02 00FFF6E1 DIS17 02 00FFF724 DIS18 02 00FFF76C DIS19 02 00FFF81B
|
4816 |
|
|
DIS2 02 00FFF411 DIS20 02 00FFF3DA DIS21 02 00FFF40F DIS23 02 00FFF3DD
|
4817 |
|
|
DIS24 02 00FFF81E DIS25 02 00FFF82B DIS3 02 00FFF43A DIS30 02 00FFF7BA
|
4818 |
|
|
DIS4 02 00FFF457 DIS5 02 00FFF468 DIS6 02 00FFF49C DIS7 02 00FFF4D3
|
4819 |
|
|
DIS8 02 00FFF507 DIS9 02 00FFF53E DISASSEM 02 00FFF3B4 DISLOOP1 02 00FFF3BF
|
4820 |
|
|
DISNDXREG 02 00FFF874 DISNDXREGS 02 00FFF850 DISNEXTLINE 02 00FFF842 DISNOT9 02 00FFF44C
|
4821 |
|
|
DISNOTAOFFS 02 00FFF5D6 DISNOTBO 02 00FFF613 DISNOTBOFFS 02 00FFF59A DISNOTDIRECT 02 00FFF40B
|
4822 |
|
|
DISNOTDOFFS 02 00FFF6CC DISNOTEXT 02 00FFF7C4 DISNOTIMMB 02 00FFF7D5 DISNOTIMMW 02 00FFF7E5
|
4823 |
|
|
DISNOTLREL 02 00FFF41B DISNOTNDX 02 00FFF7AD DISNOTPBO 02 00FFF710 DISNOTPTO 02 00FFF79B
|
4824 |
|
|
DISNOTPWO 02 00FFF753 DISNOTR 02 00FFF55E DISNOTREL 02 00FFF424 DISNOTRMINUS 02 00FFF4F8
|
4825 |
|
|
DISNOTRMINUSMINUS 02 00FFF52F DISNOTRPLUS 02 00FFF48D DISNOTRPLUSPLUS 02 00FFF4C4 DISNOTTFR 02 00FFF7EF
|
4826 |
|
|
DISNOTTO 02 00FFF690 DISNOTWO 02 00FFF64F DISPBYTEASHEX 02 00FFE40A DISPDWORDASHEX 02 00FFE3F8
|
4827 |
|
|
DISPLAYCHAR 02 00FFE2F5 DISPLAYERR 02 00FFFAF5 DISPLAYSTRING 02 00FFE3B6 DISPLAYSTRINGCRLF 02 00FFE3CD
|
4828 |
|
|
DISPLAYSTRINGDX 02 00FFFAFE DISPNYB 02 00FFE422 DISPNYB1 02 00FFE431 DISPWORDASHEX 02 00FFE401
|
4829 |
13 |
robfinch |
DISTBL1 02 00FFEDB4 DISTBL2 02 00FFF2B4 DISTBL3 02 00FFF2F4 DISTBL4 02 00FFF314
|
4830 |
14 |
robfinch |
DISTFR1 02 00FFF8A3 DISTFREXG 02 00FFF8A5 DISTFRREG 02 00FFF889 DISTFRREGS 02 00FFF854
|
4831 |
|
|
DLY3S1 02 00FFE1A4 DLY3S2 02 00FFE1A8 DMPM1 02 00FFFC65 DMPM2 02 00FFFC50
|
4832 |
|
|
DMPM3 02 00FFFC9E DMPM4 02 00FFFC90 DMPM5 02 00FFFC88 DRAM_BASE 00 10000000
|
4833 |
|
|
DSPJ1B 02 00FFE3BF DSPJ2 02 00FFE3BA DSRETB 02 00FFE3C8 DUMPASMBUF 02 00FFF8D3
|
4834 |
|
|
DUMPIOFOCUSLIST 02 00FFFDA5 DUMPMEMORY 02 00FFFC48 DUMPREGS 02 00FFFCE4 DUMRTS 02 00FFE022
|
4835 |
|
|
EDITMEM1 02 00FFFCC2 EDITMEM2 02 00FFFCAD EDITMEM3 02 00FFFCE1 EDITMEM4 02 00FFFCCC
|
4836 |
|
|
EDITMEM6 02 00FFFCD8 EDITMEMORY 02 00FFFCA4 EXT 00 00000006 FAREXT 00 00000008
|
4837 |
|
|
FARFLAG 00 0000015F FIRQ_ROUT 02 00FFFE25 FIRST_CORE 00 00000001 FREEMBX 02 00000002
|
4838 |
|
|
FREEMSG 02 00000006 FREETCB 00 0000078A GETHEXNUMBER 02 00FFFA8F GETKEY 02 00FFEA12
|
4839 |
|
|
GETRANGE 02 00FFFA66 GETSCREENLOCATION 02 00FFE286 GETTWOPARAMS 02 00FFFA45 GRNG1 02 00FFFA81
|
4840 |
|
|
GSL1 02 00FFE294 GTDC3 02 00FFFAF2 GTHX3 02 00FFFAE4 GTHX5 02 00FFFACA
|
4841 |
|
|
GTHX6 02 00FFFAD7 GTHXN1 02 00FFFABB GTHXN2 02 00FFFA9C HC1 02 00FFE2AE
|
4842 |
|
|
HELPMSG 02 00FFFB0E HEX2 02 00FFD2CE HEX4 02 00FFD2D2 HOMECURSOR 02 00FFE298
|
4843 |
|
|
HOMECURSORJMP 02 00FFD308 I2CW1 02 00FFE492 I2CWR1 02 00FFE4BF I2C_CMD 00 00000004
|
4844 |
|
|
I2C_CTRL 00 00000002 I2C_PREH 00 00000001 I2C_PREL 00 00000000 I2C_RXR 00 00000003
|
4845 |
|
|
I2C_STAT 00 00000004 I2C_TXR 00 00000003 I2C_WAIT_RX_NACK 02 00FFE4BD I2C_WAIT_TIP 02 00FFE490
|
4846 |
|
|
I2C_WR_CMD 02 00FFE49A ICC1 02 00FFE3B2 ICC2 02 00FFE3B4 ICR1 02 00FFE3A4
|
4847 |
|
|
IGNBLANKS 02 00FFFA3C IGNBLANKS1 02 00FFFA3C IMMB 00 00000003 IMMW 00 00000007
|
4848 |
|
|
INCCURSORPOS 02 00FFE393 INCCURSORROW 02 00FFE3A2 INCH 02 00FFECDA INCH1 02 00FFECEF
|
4849 |
|
|
INCH2 02 00FFECDC INCHE 02 00FFECF8 INCHEK 02 00FFECFC INCHEK1 02 00FFED11
|
4850 |
|
|
INCHEK2 02 00FFED0E INCHEK3 02 00FFED05 INIT 02 00FFE09A INIT1 02 00FFE0A2
|
4851 |
|
|
INITSERIAL 02 00FFEB6F IOFOCUSID 00 00FF0010 IOFOCUSLIST 00 00FF0000 IOFOCUSNDX 00 00000100
|
4852 |
|
|
IRQBASE 00 00FF0014 IRQFLAG 00 00FF0012 IRQSOURCE 00 00FF0011 IRQ_ROUT 02 00FFFE26
|
4853 |
|
|
JTC_EXIT 02 00FFFD6A JUMP_TO_CODE 02 00FFFD2F KBDBUFFULL 02 00FFEA0D KBDFIFO 00 00000040
|
4854 |
|
|
KBDFIFOALIAS 00 00C00040 KBDHEADRCV 00 00000127 KBDI0002 02 00FFE949 KBDI0004 02 00FFE98E
|
4855 |
|
|
KBDITRYAGAIN 02 00FFE982 KBDRCVCOUNT 02 00FFE9BD KBDTAILRCV 00 00000128 KBGS1 02 00FFE8F8
|
4856 |
|
|
KBGS2 02 00FFE8F0 KBGS3 02 00FFE8E1 KEYBD 00 FFE30400 KEYBDACK 00 FFFFCC00
|
4857 |
|
|
KEYBDBAD 00 FFFFCB00 KEYBDBLOCK 00 00000126 KEYBDBUFFER 00 FFFFC000 KEYBDCHECKFORKEYDIRECT 02 00FFECD8
|
4858 |
|
|
KEYBDCLOSE 02 00FFEB6B KEYBDCLR 00 FFE30402 KEYBDCONTROLCODES 02 00FFE780 KEYBDECHO 00 FFFFCA00
|
4859 |
|
|
KEYBDEXTENDEDCODES 02 00FFE800 KEYBDGETID 02 00FFE91C KEYBDGETSCANCODE 02 00FFE8FD KEYBDGETSTATUS 02 00FFE8E1
|
4860 |
|
|
KEYBDHEAD 00 FFFFC800 KEYBDID 00 00000124 KEYBDINIT 02 00FFE940 KEYBDIRQ 02 00FFE9CF
|
4861 |
|
|
KEYBDLOCKS 00 FFFFCD00 KEYBDOPEN 02 00FFEB6A KEYBDREAD 02 00FFEB6C KEYBDRECVBYTE 02 00FFE880
|
4862 |
|
|
KEYBDSEEK 02 00FFEB6E KEYBDSENDBYTE 02 00FFE899 KEYBDSETLED 02 00FFE909 KEYBDTAIL 00 FFFFC900
|
4863 |
|
|
KEYBDWAITTX 02 00FFE89F KEYBDWRITE 02 00FFEB6D KEYLED 00 00000122 KEYSTATE1 00 00000120
|
4864 |
|
|
KEYSTATE2 00 00000121 KGID1 02 00FFE939 KGNOTKBD 02 00FFE93C KRB3 02 00FFE885
|
4865 |
|
|
KRB4 02 00FFE895 KRCXIT 02 00FFE9CE KWT1 02 00FFE8A4 KWT2 02 00FFE8B5
|
4866 |
|
|
LEDS 00 FFE60001 LEDXIT 02 00FFE9A2 LETTER 02 00FFD2C1 LF 00 0000000A
|
4867 |
|
|
LSREL 00 00000002 MAX_TASKNO 00 0000003F MONERRVEC 00 0000080C MONGETCH 02 00FFFA30
|
4868 |
|
|
MONGETNONSPACE 02 00FFFA35 MONITOR 02 00FFF92E MONITORSTART 02 00FFF910 MON_CCRSAVE 00 0000090F
|
4869 |
|
|
MON_DPRSAVE 00 0000090E MON_DSAVE 00 00000900 MON_NUMWKA 00 00000910 MON_PCSAVE 00 0000090A
|
4870 |
|
|
MON_R1 00 00000920 MON_R2 00 00000924 MON_SSAVE 00 00000908 MON_USAVE 00 00000906
|
4871 |
|
|
MON_XSAVE 00 00000902 MON_YSAVE 00 00000904 MSCOUNT 00 FFFFFFE4 MSGBADKEYBD 02 00FFE9AE
|
4872 |
|
|
MSGERR 02 00FFFB06 MSGF09STARTING 02 00FFF8EB MSGREGHEADINGS 02 00FFFC05 MSGSERIALTEST 02 00FFECC5
|
4873 |
|
|
MSGSTARTUP 02 00FFE108 MULTI_SIEVE 02 00FFE13F MULTI_SIEVE1 02 00FFE162 MULTI_SIEVE2 02 00FFE15E
|
4874 |
|
|
MULTI_SIEVE3 02 00FFE14C MULTI_SIEVE4 02 00FFE175 NDX 00 00000005 NHEX4 02 00FFFC3F
|
4875 |
|
|
NMAILBOX 02 00000004 NMESERIAL 02 00FFEC8E NMIBASE 00 00FF0013 NMI_ROUT 02 00FFFE55
|
4876 |
|
|
NMSGBLK 02 00000008 NOTKBDIRQ 02 00FFEA0C NOTRXINT 02 00FFEC8D NOTTIMERIRQ 02 00FFE485
|
4877 |
|
|
NOTTIMERIRQ2 02 00FFFE48 NXBLANK 02 00FFFC43 ONEKEY 02 00FFD1DC OSC1 02 00FFED59
|
4878 |
|
|
OSCALL 02 00FFED59 OSCALLTBL 02 00FFED27 OSCX 02 00FFED69 OSSEMA 00 00EF0010
|
4879 |
|
|
OUTCH 02 00FFED12 OUTSEMA 00 00EF0000 PCRLF 02 00FFE3E1 PDATA 02 00FFE3EE
|
4880 |
|
|
PIC 00 FFE3F000 PICPTR 00 00000028 PRINT 02 00FFE3EB PROMPT1 02 00FFF95B
|
4881 |
|
|
PROMPT2 02 00FFF987 PROMPT2A 02 00FFF9A5 PROMPT3 02 00FFF94C PROMPTC 02 00FFF9C3
|
4882 |
|
|
PROMPTCOLON 02 00FFF9DB PROMPTD 02 00FFF9CF PROMPTF 02 00FFF9E2 PROMPTFL 02 00FFF9F5
|
4883 |
|
|
PROMPTHELP 02 00FFF9B7 PROMPTJ 02 00FFF9FC PROMPTLN 02 00FFF948 PROMPTR 02 00FFFA01
|
4884 |
|
|
PROMPTT 02 00FFFA14 PROMPTU 02 00FFFA29 PROMPT_S 02 00FFFA0B PSTRNG 02 00FFE3DD
|
4885 |
13 |
robfinch |
QNDX0 00 00000780 QNDX1 00 00000782 QNDX2 00 00000784 QNDX3 00 00000786
|
4886 |
|
|
QNDX4 00 00000788 RAMERR 02 00FFD42C RAMTEST 02 00FFD400 RAMTEST1 02 00FFD40D
|
4887 |
|
|
RAMTEST3 02 00FFD417 RELEASEIOFOCUS 02 00FFED84 REQUESTIOFOCUS 02 00FFED6D RIOF1 02 00FFEDAB
|
4888 |
14 |
robfinch |
RIOF2 02 00FFED9A ROMTORAM 02 00FFE12F ROMTORAM1 02 00FFE135 RTC 00 FFE30500
|
4889 |
|
|
RTCBUF 00 00007FC0 RTCR0001 02 00FFE4ED RTCW0001 02 00FFE538 RTC_READ 02 00FFE4C7
|
4890 |
|
|
RTC_RXERR 02 00FFE516 RTC_WRITE 02 00FFE51A RTI_INSN 02 00FFFE61 RUNNINGID 00 00800000
|
4891 |
13 |
robfinch |
RUNNINGTCB 06 00000000 SCREENCOLOR 00 00000113 SCREENLOCATION 00 00000010 SCREENLOCATION2 00 00000018
|
4892 |
14 |
robfinch |
SCROLLUP 02 00FFE251 SCRUP1 02 00FFE25E SC_ALT 00 00000011 SC_C 00 00000021
|
4893 |
13 |
robfinch |
SC_CAPSLOCK 00 00000058 SC_CTRL 00 00000014 SC_DEL 00 00000071 SC_EXTEND 00 000000E0
|
4894 |
|
|
SC_F12 00 00000007 SC_KEYUP 00 000000F0 SC_NUMLOCK 00 00000077 SC_RSHIFT 00 00000059
|
4895 |
|
|
SC_SCROLLLOCK 00 0000007E SC_T 00 0000002C SC_TAB 00 0000000D SC_Z 00 0000001A
|
4896 |
|
|
SEMAABS 00 00001000 SERHEADRCV 00 00000131 SERHEADXMIT 00 00000136 SERHZERO 00 00000130
|
4897 |
|
|
SERIALGETCHAR 02 00FFEB9D SERIALINIT 02 00FFEB6F SERIALIRQ 02 00FFEC3B SERIALOUTPUTTEST 02 00FFECA5
|
4898 |
|
|
SERIALPEEKCHAR 02 00FFEBCD SERIALPEEKCHARDIRECT 02 00FFEBE4 SERIALPUTCHAR 02 00FFEC08 SERIALPUTSTRING 02 00FFEC95
|
4899 |
|
|
SERIALRCVCOUNT 02 00FFEC28 SERRCVBUF 00 00BFF000 SERRCVXOFF 00 00000140 SERRCVXON 00 00000139
|
4900 |
|
|
SERTAILRCV 00 00000133 SERTAILXMIT 00 00000138 SERTZERO 00 00000132 SETKEYBOARDECHO 02 00FFED16
|
4901 |
|
|
SGC2 02 00FFEBB6 SGCNOCHARS 02 00FFEBC6 SGCXIT 02 00FFEBC9 SHIFTEDSCANCODES 02 00FFE680
|
4902 |
14 |
robfinch |
SHIFTLEFT5 02 00FFE1B3 SHL_NUMWKA 02 00FFFA82 SHOWSPRITES 02 00FFED1C SIEVE 02 00FFE179
|
4903 |
|
|
SIEVE1 02 00FFE191 SIEVE2 02 00FFE18D SIEVE3 02 00FFE17E SIEVE4 02 00FFE1A0
|
4904 |
13 |
robfinch |
SINI1 02 00FFEB82 SIRQ0001 02 00FFEC4D SIRQNXTBYTE 02 00FFEC3B SIRQRXFULL 02 00FFEC8D
|
4905 |
14 |
robfinch |
SKIPDOLLAR 02 00FFF97A SKIP_INIT 02 00FFE0D5 SOTST1 02 00FFECAF SPC0001 02 00FFEC0A
|
4906 |
13 |
robfinch |
SPCD0001 02 00FFEC02 SPCNOCHARS 02 00FFEBDF SPCXIT 02 00FFEBE2 SPRITE_CTRL 00 FFE10000
|
4907 |
|
|
SPRITE_EN 00 000003C0 SPS2 02 00FFEC99 SPSXIT 02 00FFECA3 SRCXIT 02 00FFEC3A
|
4908 |
14 |
robfinch |
SREL 00 00000004 ST1 02 00FFE0B4 ST3 02 00FFE091 ST6 02 00FFE03C
|
4909 |
|
|
ST7 02 00FFE046 ST8 02 00FFE046 ST9 02 00FFE05A START 02 00FFE023
|
4910 |
|
|
STRPTR 00 00000024 SWI3_EXIT 02 00FFFDF7 SWI3_ROUT 02 00FFFDC8 TAB 00 00000009
|
4911 |
|
|
TCB_CURSORCOL 00 00000021 TCB_CURSORROW 00 00000020 TCB_HJCB 00 0000001C TCB_HWAITMBX 00 00000022
|
4912 |
|
|
TCB_IOF_NEXT 00 0000002C TCB_IOF_PREV 00 00000030 TCB_MBQ_NEXT 00 00000024 TCB_MBQ_PREV 00 00000028
|
4913 |
|
|
TCB_MMU_MAP 00 00000038 TCB_MSGPTR_D1 00 00000014 TCB_MSGPTR_D2 00 00000018 TCB_NXTRDY 00 00000000
|
4914 |
|
|
TCB_NXTTCB 00 00000008 TCB_PRIORITY 00 00000010 TCB_PRVRDY 00 00000004 TCB_SPSAVE 00 00000034
|
4915 |
|
|
TCB_STATUS 00 0000001E TCB_TIMEOUT 00 0000000C TEXTCLOSE 02 00FFE221 TEXTOPEN 02 00FFE220
|
4916 |
|
|
TEXTREAD 02 00FFE222 TEXTREG 00 FFE0DF00 TEXTSCR 00 FFE00000 TEXTSEEK 02 00FFE224
|
4917 |
|
|
TEXTWRITE 02 00FFE223 TEXT_COLS 00 00000000 TEXT_CURPOS 00 00000022 TEXT_ROWS 00 00000001
|
4918 |
|
|
TFREXG 00 00000009 TIMEOUTLIST 00 0000078C TIMERINIT 02 00FFE438 TIMERIRQ 02 00FFE463
|
4919 |
|
|
TR1A 02 00FFFE54 UCP1 02 00FFE2D0 UNSHIFTEDSCANCODES 02 00FFE580 UPDATECURSORPOS 02 00FFE2B0
|
4920 |
|
|
VIA 00 FFE60000 VIA_ACR 00 0000000B VIA_DDRA 00 00000003 VIA_IER 00 0000000E
|
4921 |
|
|
VIA_IFR 00 0000000D VIA_PA 00 00000001 VIA_T3CMPH 00 00000015 VIA_T3CMPL 00 00000014
|
4922 |
|
|
VIA_T3LH 00 00000013 VIA_T3LL 00 00000012 W10_0001 02 00FFE8C0 W300_0001 02 00FFE8D4
|
4923 |
|
|
WAIT10MS 02 00FFE8B9 WAIT300MS 02 00FFE8CD XBLANK 02 00FFD0AF XOFF 00 00000013
|
4924 |
|
|
XON 00 00000011
|
4925 |
|
|
545 SYMBOLS
|
4926 |
4 |
robfinch |
|
4927 |
14 |
robfinch |
|