Mercurial > hg > Members > kono > nitros9-code
annotate level1/modules/mc6850.asm @ 3169:1ff3d7673e36
mc09 l2: bring sys/makefile in line with latest organisation for other platforms
Revise bootfiles/makefile to remove sysgo from bootfile - it can be
found on the root of the disk.
author | Neal Crook <foofoobedoo@gmail.com> |
---|---|
date | Mon, 17 Apr 2017 22:59:28 +0100 |
parents | 61a8ce1200ed |
children |
rev | line source |
---|---|
3114
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
1 ******************************************************************** |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
2 * mc6850 Driver |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
3 * |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
4 * $Id$ |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
5 * |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
6 * Edt/Rev YYYY/MM/DD Modified by |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
7 * Comment |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
8 * ------------------------------------------------------------------ |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
9 * ????/??/?? |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
10 * NitrOS-9 2.00 distribution. |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
11 * |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
12 * 9r4 2003/01/01 Boisy G. Pitre |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
13 * Back-ported to OS-9 Level Two. |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
14 * |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
15 * 10r1 2003/??/?? Robert Gault |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
16 * Added 6809 code where it was lacking. |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
17 * |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
18 * 10r2 2004/05/03 Boisy G. Pitre |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
19 * Fixed numerous issues with 6809 and Level 1 versions. |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
20 * Tested 6809 Level 1 and Level 2. |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
21 * [NAC HACK 2015Sep08] I should have cloned this to make 6851 version |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
22 * and that's what I'll end up doing, reverting this to its former glory. |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
23 * I might even need to do 2 versions - one with handshake and one without. |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
24 |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
25 nam mc6850 |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
26 ttl mc6850 Driver |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
27 |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
28 ifp1 |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
29 use defsfile |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
30 ; use scfdefs |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
31 endc |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
32 |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
33 * conditional assembly switches |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
34 TC9 set false "true" for TC-9 version, "false" for Coco 3 |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
35 |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
36 * miscellaneous definitions |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
37 DCDStBit equ %00100000 DCD status bit for SS.CDSta call |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
38 DSRStBit equ %01000000 DSR status bit for SS.CDSta call |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
39 SlpBreak set TkPerSec/2+1 line Break duration |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
40 SlpHngUp set TkPerSec/2+1 hang up (drop DTR) duration |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
41 |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
42 ifeq TC9-true |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
43 IRQBit equ %00000100 GIME IRQ bit to use for IRQ ($FF92) |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
44 else |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
45 IRQBit equ %00000001 GIME IRQ bit to use for IRQ ($FF92) |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
46 endc |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
47 |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
48 IFNE mc09 |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
49 * 6850 registers |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
50 org 0 |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
51 StatReg rmb 1 |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
52 CtlReg equ StatReg |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
53 DataReg rmb 1 |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
54 ELSE |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
55 * 6551 register definitions |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
56 org 0 |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
57 DataReg rmb 1 receive/transmit Data (read Rx / write Tx) |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
58 StatReg rmb 1 status (read only) |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
59 PRstReg equ StatReg programmed reset (write only) |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
60 CmdReg rmb 1 command (read/write) |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
61 CtlReg rmb 1 control (read/write) |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
62 ENDC |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
63 |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
64 IFNE mc09 |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
65 * Status bit definitions |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
66 Stat.IRQ equ %10000000 IRQ occurred |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
67 Stat.TxE equ %00000010 Tx data register Empty |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
68 Stat.RxF equ %00000001 Rx data register Full |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
69 Stat.Ovr equ %00100000 Rx data Overrun error |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
70 Stat.Frm equ %00010000 Rx data Framing error |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
71 Stat.Par equ %01000000 Rx data Parity error |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
72 |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
73 Stat.Err equ Stat.Ovr!Stat.Frm!Stat.Par Status error bits |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
74 Stat.Flp equ $00 all Status bits active when set |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
75 Stat.Msk equ Stat.IRQ!Stat.RxF active IRQs |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
76 ELSE |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
77 * Status bit definitions |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
78 Stat.IRQ equ %10000000 IRQ occurred |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
79 Stat.DSR equ %01000000 DSR level (clear = active) |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
80 Stat.DCD equ %00100000 DCD level (clear = active) |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
81 Stat.TxE equ %00010000 Tx data register Empty |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
82 Stat.RxF equ %00001000 Rx data register Full |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
83 Stat.Ovr equ %00000100 Rx data Overrun error |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
84 Stat.Frm equ %00000010 Rx data Framing error |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
85 Stat.Par equ %00000001 Rx data Parity error |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
86 |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
87 Stat.Err equ Stat.Ovr!Stat.Frm!Stat.Par Status error bits |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
88 Stat.Flp equ $00 all Status bits active when set |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
89 Stat.Msk equ Stat.IRQ!Stat.RxF active IRQs |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
90 ENDC |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
91 |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
92 * Control bit definitions |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
93 Ctl.Stop equ %10000000 stop bits (set=two, clear=one) |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
94 Ctl.DBit equ %01100000 see data bit table below |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
95 Ctl.RxCS equ %00010000 Rx clock source (set=baud rate, clear=external) |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
96 Ctl.Baud equ %00001111 see baud rate table below |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
97 |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
98 * data bit table |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
99 DB.8 equ %00000000 eight data bits per character |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
100 DB.7 equ %00100000 seven data bits per character |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
101 DB.6 equ %01000000 six data bits per character |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
102 DB.5 equ %01100000 five data bits per character |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
103 |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
104 * baud rate table |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
105 org $00 |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
106 BR.ExClk rmb 1 16x external clock (not supported) |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
107 org $11 |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
108 BR.00050 rmb 1 50 baud (not supported) |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
109 BR.00075 rmb 1 75 baud (not supported) |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
110 BR.00110 rmb 1 109.92 baud |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
111 BR.00135 rmb 1 134.58 baud (not supported) |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
112 BR.00150 rmb 1 150 baud (not supported) |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
113 BR.00300 rmb 1 300 baud |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
114 BR.00600 rmb 1 600 baud |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
115 BR.01200 rmb 1 1200 baud |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
116 BR.01800 rmb 1 1800 baud (not supported) |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
117 BR.02400 rmb 1 2400 baud |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
118 BR.03600 rmb 1 3600 baud (not supported) |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
119 BR.04800 rmb 1 4800 baud |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
120 BR.07200 rmb 1 7200 baud (not supported) |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
121 BR.09600 rmb 1 9600 baud |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
122 BR.19200 rmb 1 19200 baud |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
123 |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
124 * Command bit definitions |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
125 Cmd.Par equ %11100000 see parity table below |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
126 Cmd.Echo equ %00010000 local echo (set=activated) |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
127 Cmd.TIRB equ %00001100 see Tx IRQ/RTS/Break table below |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
128 Cmd.RxI equ %00000010 Rx IRQ (set=disabled) |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
129 Cmd.DTR equ %00000001 DTR output (set=enabled) |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
130 |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
131 * parity table |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
132 Par.None equ %00000000 |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
133 Par.Odd equ %00100000 |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
134 Par.Even equ %01100000 |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
135 Par.Mark equ %10100000 |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
136 Par.Spac equ %11100000 |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
137 |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
138 * Tx IRQ/RTS/Break table |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
139 TIRB.Off equ %00000000 RTS & Tx IRQs disabled |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
140 TIRB.On equ %00000100 RTS & Tx IRQs enabled |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
141 TIRB.RTS equ %00001000 RTS enabled, Tx IRQs disabled |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
142 TIRB.Brk equ %00001100 RTS enabled, Tx IRQs disabled, Tx line Break |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
143 |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
144 * V.ERR bit definitions |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
145 DCDLstEr equ %00100000 DCD lost error |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
146 OvrFloEr equ %00000100 Rx data overrun or Rx buffer overflow error |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
147 FrmingEr equ %00000010 Rx data framing error |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
148 ParityEr equ %00000001 Rx data parity error |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
149 |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
150 * FloCtlRx bit definitions |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
151 FCRxSend equ %10000000 send flow control character |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
152 FCRxSent equ %00010000 Rx disabled due to XOFF sent |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
153 FCRxDTR equ %00000010 Rx disabled due to DTR |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
154 FCRxRTS equ %00000001 Rx disabled due to RTS |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
155 |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
156 * FloCtlTx bit definitions |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
157 FCTxXOff equ %10000000 due to XOFF received |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
158 FCTxBrk equ %00000010 due to currently transmitting Break |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
159 |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
160 * Wrk.Type bit definitions |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
161 Parity equ %11100000 parity bits |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
162 MdmKill equ %00010000 modem kill option |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
163 RxSwFlow equ %00001000 Rx data software (XON/XOFF) flow control |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
164 TxSwFlow equ %00000100 Tx data software (XON/XOFF) flow control |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
165 RTSFlow equ %00000010 CTS/RTS hardware flow control |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
166 DSRFlow equ %00000001 DSR/DTR hardware flow control |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
167 |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
168 * Wrk.Baud bit definitions |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
169 StopBits equ %10000000 number of stop bits code |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
170 WordLen equ %01100000 word length code |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
171 BaudRate equ %00001111 baud rate code |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
172 |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
173 * Wrk.XTyp bit definitions |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
174 SwpDCDSR equ %10000000 swap DCD+DSR bits (valid for 6551 only) |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
175 ForceDTR equ %01000000 don't drop DTR in term routine |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
176 RxBufPag equ %00001111 input buffer page count |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
177 |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
178 * static data area definitions |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
179 org V.SCF allow for SCF manager data area |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
180 Cpy.Stat rmb 1 Status register copy |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
181 CpyDCDSR rmb 1 DSR+DCD status copy |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
182 Mask.DCD rmb 1 DCD status bit mask (MUST immediately precede Mask.DSR) |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
183 Mask.DSR rmb 1 DSR status bit mask (MUST immediately follow Mask.DCD) |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
184 CDSigPID rmb 1 process ID for CD signal |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
185 CDSigSig rmb 1 CD signal code |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
186 FloCtlRx rmb 1 Rx flow control flags |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
187 FloCtlTx rmb 1 Tx flow control flags |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
188 RxBufEnd rmb 2 end of Rx buffer |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
189 RxBufGet rmb 2 Rx buffer output pointer |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
190 RxBufMax rmb 2 Send XOFF (if enabled) at this point |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
191 RxBufMin rmb 2 Send XON (if XOFF sent) at this point |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
192 RxBufPtr rmb 2 pointer to Rx buffer |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
193 RxBufPut rmb 2 Rx buffer input pointer |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
194 RxBufSiz rmb 2 Rx buffer size |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
195 RxDatLen rmb 2 current length of data in Rx buffer |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
196 SigSent rmb 1 keyboard abort/interrupt signal already sent |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
197 SSigPID rmb 1 SS.SSig process ID |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
198 SSigSig rmb 1 SS.SSig signal code |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
199 WritFlag rmb 1 initial write attempt flag |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
200 Wrk.Type rmb 1 type work byte (MUST immediately precede Wrk.Baud) |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
201 Wrk.Baud rmb 1 baud work byte (MUST immediately follow Wrk.Type) |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
202 Wrk.XTyp rmb 1 extended type work byte |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
203 |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
204 regWbuf rmb 2 substitute for regW |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
205 RxBufDSz equ 256-. default Rx buffer gets remainder of page... |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
206 RxBuff rmb RxBufDSz default Rx buffer |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
207 MemSize equ . |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
208 |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
209 rev set 2 |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
210 edition set 10 |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
211 |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
212 mod ModSize,ModName,Drivr+Objct,ReEnt+rev,ModEntry,MemSize |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
213 |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
214 fcb UPDAT. access mode(s) |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
215 |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
216 ModName fcs "mc6850" |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
217 fcb edition |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
218 |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
219 |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
220 * These 3 bytes control how the IRQ ISR processes interrupts from this |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
221 * device |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
222 IRQPckt equ * |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
223 Pkt.Flip fcb Stat.Flp flip byte |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
224 Pkt.Mask fcb Stat.Msk mask byte |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
225 fcb $0A priority |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
226 |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
227 BaudTabl equ * |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
228 fcb BR.00110,BR.00300,BR.00600 |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
229 fcb BR.01200,BR.02400,BR.04800 |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
230 fcb BR.09600,BR.19200 |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
231 |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
232 |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
233 * NOTE: SCFMan has already cleared all device memory except for V.PAGE and |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
234 * V.PORT. Zero-default variables are: CDSigPID, CDSigSig, Wrk.XTyp. |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
235 * Entry: |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
236 * Y = address of the device descriptor |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
237 * U = address of the device memory area |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
238 * |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
239 * Exit: |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
240 * CC = carry set on error |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
241 * B = error code |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
242 Init clrb default to no error... |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
243 pshs cc,dp save IRQ/Carry status, system DP |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
244 IFNE H6309 |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
245 tfr u,w |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
246 tfr e,dp |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
247 tfr y,w save descriptor pointer |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
248 ELSE |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
249 tfr u,d get device memory area |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
250 tfr a,dp and make it the direct page |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
251 pshs y save descriptor pointer |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
252 ENDC |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
253 |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
254 * Register the ISR |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
255 * D address of the device status register |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
256 * X address of the "packet" containing the flip/mask/priority |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
257 * Y address of the device IRQ service routine |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
258 * U address of the device IRQ service routine memory |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
259 ldd <V.PORT base hardware address (=status register) |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
260 |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
261 leax IRQPckt,pc |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
262 leay IRQSvc,pc |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
263 os9 F$IRQ |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
264 |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
265 IFNE H6309 |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
266 tfr w,y recover descriptor pointer |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
267 ELSE |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
268 puls y |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
269 ENDC |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
270 |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
271 lbcs ErrExit failed to register interrupt |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
272 |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
273 DfltInfo ldd #RxBufDSz default Rx buffer size |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
274 leax RxBuff,u default Rx buffer address |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
275 std <RxBufSiz save Rx buffer size |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
276 stx <RxBufPtr save Rx buffer address |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
277 stx <RxBufGet set initial Rx buffer input address |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
278 stx <RxBufPut set initial Rx buffer output address |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
279 IFNE H6309 |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
280 addr d,x point to end of Rx buffer |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
281 ELSE |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
282 leax d,x |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
283 ENDC |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
284 stx <RxBufEnd save Rx buffer end address |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
285 subd #80 characters available in Rx buffer |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
286 std <RxBufMax set auto-XOFF threshold |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
287 ldd #10 characters remaining in Rx buffer |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
288 std <RxBufMin set auto-XON threshold after auto-XOFF |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
289 ldb #TIRB.RTS default command register |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
290 |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
291 NoDTR ldx <V.PORT get port address |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
292 |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
293 orcc #IntMasks disable IRQs while setting up hardware |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
294 |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
295 * [NAC HACK 2015Sep13] might be a problem that mc09 has no way to flush |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
296 * (virtual or real) UART fifos. |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
297 |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
298 * lda StatReg,x ensure old IRQ flags are clear |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
299 * lda DataReg,x ensure old error and Rx data IRQ flags are clear |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
300 * lda StatReg,x ... again |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
301 * lda DataReg,x ... and again |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
302 |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
303 * [NAC HACK 2015Sep13] NOPs are to keep addresses unchanged during debug |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
304 nop |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
305 nop |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
306 nop |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
307 nop |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
308 nop |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
309 nop |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
310 nop |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
311 nop |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
312 lda StatReg,x get new Status register contents |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
313 |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
314 * [NAC HACK 2015Sep16] Enable Rx interrupt |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
315 ora #$80 |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
316 sta StatReg,x |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
317 |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
318 sta <Cpy.Stat save Status copy |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
319 tfr a,b copy it... |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
320 eora Pkt.Flip,pc flip bits per D.Poll |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
321 anda Pkt.Mask,pc any IRQ(s) still pending? |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
322 |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
323 * [NAC HACK 2015Sep13] the UART model in exec09 cannot flag rx char available |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
324 * so this test will always fail. Even if I could get the i/o there to be non- |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
325 * blocking I still can't work out how I could get the UART status register to |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
326 * behave correctly.. it would need to support type-ahead. |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
327 * lbne NRdyErr yes, go report error... (device not plugged in?) |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
328 nop |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
329 nop |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
330 |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
331 puls cc,dp,pc recover IRQ/Carry status, system DP, return |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
332 |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
333 * |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
334 * |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
335 Term clrb default to no error... |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
336 pshs cc,dp save IRQ/Carry status, dummy B, system DP |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
337 IFNE H6309 |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
338 tfr u,w setup our DP |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
339 tfr e,dp |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
340 ELSE |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
341 tfr u,d |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
342 tfr a,dp |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
343 ENDC |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
344 IFEQ Level-1 |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
345 ldx >D.Proc |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
346 lda P$ID,x |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
347 sta <V.BUSY |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
348 sta <V.LPRC |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
349 ENDC |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
350 ldx <V.PORT |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
351 lda 0,x get current status |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
352 * [NAC HACK 2015Sep09] ?? |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
353 anda #^(Cmd.TIRB!Cmd.DTR) disable Tx IRQs, RTS, and DTR |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
354 ora #Cmd.RxI disable Rx IRQs |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
355 |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
356 |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
357 ldd <RxBufSiz get Rx buffer size |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
358 tsta less than 256 bytes? |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
359 beq TermExit yes, no system memory to return... |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
360 pshs u save data pointer |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
361 ldu <RxBufPtr get address of system memory |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
362 os9 F$SRtMem |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
363 puls u recover data pointer |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
364 TermExit |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
365 ldd <V.PORT base hardware address is status register |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
366 |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
367 ldx #$0000 remove IRQ table entry |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
368 leay IRQSvc,pc |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
369 puls cc recover IRQ/Carry status |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
370 os9 F$IRQ |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
371 puls dp,pc restore dummy A, system DP, return |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
372 |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
373 ReadSlp |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
374 IFEQ Level-1 |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
375 lda <V.BUSY |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
376 sta <V.WAKE |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
377 lbsr Sleep0 go suspend process... |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
378 ELSE |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
379 ldd >D.Proc process descriptor address |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
380 sta <V.WAKE save MSB for IRQ service routine |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
381 tfr d,x copy process descriptor address |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
382 IFNE H6309 |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
383 oim #Suspend,P$State,x |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
384 ELSE |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
385 ldb P$State,x |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
386 orb #Suspend |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
387 stb P$State,x |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
388 ENDC |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
389 lbsr Sleep1 go suspend process... |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
390 ENDC |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
391 ldx >D.Proc process descriptor address |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
392 ldb P$Signal,x pending signal for this process? |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
393 beq ChkState no, go check process state... |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
394 cmpb #S$Intrpt do we honor signal? |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
395 lbls ErrExit yes, go do it... |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
396 ChkState equ * |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
397 IFNE H6309 |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
398 tim #Condem,P$State,x |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
399 ELSE |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
400 ldb P$State,x |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
401 bitb #Condem |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
402 ENDC |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
403 bne PrAbtErr yes, go do it... |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
404 ldb <V.WAKE true interrupt? |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
405 beq ReadChk yes, go read the char. |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
406 bra ReadSlp no, go suspend the process |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
407 |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
408 * |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
409 * Input U = Address of device static data storage |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
410 * Y = Address of path descriptor module |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
411 * |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
412 * Output |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
413 * A = Character read |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
414 * CC = carry set on error, clear on none |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
415 * B = error code if CC.C set. |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
416 * |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
417 Read clrb default to no errors... |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
418 pshs cc,dp save IRQ/Carry status, system DP |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
419 IFNE H6309 |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
420 tfr u,w setup our DP |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
421 tfr e,dp |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
422 ELSE |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
423 tfr u,d |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
424 tfr a,dp |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
425 ENDC |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
426 ReadLoop orcc #IntMasks disable IRQs while checking Rx flow control |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
427 ReadChk lda <FloCtlRx get Rx flow control flags |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
428 beq ReadChar none, go get Rx character... |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
429 ldx <RxDatLen get Rx data count again |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
430 cmpx <RxBufMin at or below XON level? |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
431 bhi ReadChar no, go get Rx character... |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
432 ldx <V.PORT |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
433 bita #FCRxSent Rx disabled due to XOFF sent? |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
434 beq ChkHWHS no, go check hardware handshake(s)... |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
435 ldb <FloCtlTx get Tx flow control flags |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
436 bitb #FCTxBrk currently transmitting line Break? |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
437 beq NotTxBrk yes, go skip XON this time... |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
438 ReadLp2 andcc #^IntMasks turn interupts back on |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
439 bra ReadLoop |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
440 NotTxBrk equ * |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
441 IFNE H6309 |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
442 tim #Stat.TxE,StatReg,x |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
443 ELSE |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
444 pshs a |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
445 lda StatReg,x |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
446 bita #Stat.TxE |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
447 puls a |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
448 ENDC |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
449 beq ReadLp2 no, go skip XON this time... |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
450 ldb <V.XON |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
451 stb DataReg,x write XON character |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
452 ChkHWHS bita #FCRxDTR!FCRxRTS Rx disabled due to DTR or RTS? |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
453 beq RxFloClr no, go clear Rx flow control flag(s)... |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
454 * ldb CmdReg,x get current Command register contents |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
455 ldb #0 |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
456 andb #^Cmd.TIRB clear Tx IRQ/RTS/Break control bits |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
457 orb #TIRB.RTS!Cmd.DTR enable RTS and DTR, disable Tx IRQs |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
458 * stb CmdReg,x set Command register |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
459 RxFloClr clr <FloCtlRx clear Rx flow control flags |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
460 ReadChar ldb <V.ERR get accumulated errors, if any |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
461 stb PD.ERR,y set/clear error(s) in path descriptor |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
462 bne ReprtErr error(s), go report it/them... |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
463 ldd <RxDatLen get Rx buffer count |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
464 beq ReadSlp none, go sleep while waiting for new Rx data... |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
465 IFNE H6309 |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
466 decd less character we're about to grab |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
467 ELSE |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
468 subd #$0001 |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
469 ENDC |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
470 std <RxDatLen save new Rx data count |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
471 orcc #IntMasks see if this fixes the problem |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
472 ldx <RxBufGet current Rx buffer pickup position |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
473 lda ,x+ get Rx character, set up next pickup position |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
474 cmpx <RxBufEnd end of Rx buffer? |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
475 blo SetPckUp no, go keep pickup pointer |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
476 ldx <RxBufPtr get Rx buffer start address |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
477 SetPckUp stx <RxBufGet set new Rx data pickup pointer |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
478 puls cc,dp,pc recover IRQ/Carry status, dummy B, system DP, return |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
479 |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
480 * |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
481 * Module jump table |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
482 * |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
483 ModEntry lbra Init |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
484 bra Read |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
485 nop |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
486 bra Write |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
487 nop |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
488 IFNE H6309 |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
489 bra GStt |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
490 nop |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
491 ELSE |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
492 lbra GStt |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
493 ENDC |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
494 lbra SStt |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
495 lbra Term |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
496 |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
497 PrAbtErr ldb #E$PrcAbt |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
498 bra ErrExit |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
499 |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
500 ReprtErr clr <V.ERR clear error status |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
501 bitb #DCDLstEr DCD lost error? |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
502 bne HngUpErr yes, go report it... |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
503 ldb #E$Read |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
504 |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
505 * come here with cc, dp, pc stacked. |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
506 * set carry in the stacked copy of cc and return. |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
507 ErrExit equ * |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
508 IFNE H6309 |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
509 oim #Carry,,s set carry |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
510 ELSE |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
511 lda ,s |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
512 ora #Carry |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
513 sta ,s |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
514 ENDC |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
515 puls cc,dp,pc restore CC, system DP, return |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
516 |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
517 HngUpErr ldb #E$HangUp |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
518 lda #PST.DCD DCD lost flag |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
519 sta PD.PST,y set path status flag |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
520 bra ErrExit |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
521 |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
522 NRdyErr ldb #E$NotRdy |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
523 bra ErrExit |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
524 |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
525 UnSvcErr ldb #E$UnkSvc |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
526 bra ErrExit |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
527 |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
528 * |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
529 * |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
530 Write clrb default to no error... |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
531 pshs cc,dp save IRQ/Carry status, Tx character, system DP |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
532 IFNE H6309 |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
533 tfr u,w setup our DP |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
534 tfr e,dp |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
535 tfr a,e |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
536 ELSE |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
537 pshs a |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
538 tfr u,d |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
539 tfr a,dp |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
540 puls a |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
541 sta <regWbuf |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
542 ENDC |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
543 orcc #IntMasks disable IRQs during error and Tx disable checks |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
544 bra WritChr |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
545 WritLoop lda <WritFlag |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
546 beq WritFast |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
547 lbsr Sleep1 |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
548 WritFast inc <WritFlag |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
549 WritChr ldx <V.PORT |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
550 ldb <V.ERR get accumulated errors, if any |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
551 andb #DCDLstEr DCD lost error? (ignore other errors, if any) |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
552 stb PD.ERR,y set/clear error(s) in path descriptor |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
553 bne ReprtErr DCD lost error, go report it... |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
554 ChkTxFlo ldb <FloCtlTx get Tx flow control flags |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
555 bitb #FCTxBrk currently transmitting line Break? |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
556 bne WritLoop yes, go sleep a while... |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
557 lda <Wrk.Type get software/hardware handshake enables |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
558 bita #DSRFlow DSR/DTR handshake enabled? |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
559 * Changed below - BGP |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
560 * beq ChkTxFlo no, go check Tx flow control |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
561 beq ChkRxFlo no, go check Rx flow control |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
562 ldb <Cpy.Stat get copy of status register |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
563 bitb <Mask.DSR Tx disabled due to DSR? |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
564 bne WritLoop yes, go sleep a while... |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
565 bita #TxSwFlow Tx software flow control enabled? |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
566 beq ChkRxFlo no, go check pending Rx flow control |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
567 bitb #FCTxXOff Tx disabled due to received XOFF? |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
568 bne WritLoop yes, go sleep a while... |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
569 ChkRxFlo bita #RxSwFlow Rx software flow control enabled? |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
570 beq ChkTxE no, go check Tx register empty |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
571 ldb <FloCtlRx get Rx flow control flags |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
572 bitb #FCRxSend XON/XOFF Rx flow control pending? |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
573 bne WritLoop yes, go sleep a while... |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
574 ChkTxE equ * |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
575 IFNE H6309 |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
576 tim #Stat.TxE,StatReg,x |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
577 ELSE |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
578 pshs a |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
579 lda StatReg,x |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
580 bita #Stat.TxE |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
581 puls a |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
582 ENDC |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
583 beq WritLoop no, go sleep a while... |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
584 IFNE H6309 |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
585 ste DataReg,x write Tx character |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
586 ELSE |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
587 ldb <regWbuf |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
588 stb DataReg,x |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
589 ENDC |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
590 clr <WritFlag clear "initial write attempt" flag |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
591 puls cc,dp,pc recover IRQ/Carry status, Tx character, system DP, return |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
592 |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
593 GStt clrb default to no error... |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
594 pshs cc,dp save IRQ/Carry status, dummy B, system DP |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
595 IFNE H6309 |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
596 tfr u,w setup our DP |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
597 tfr e,dp |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
598 ELSE |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
599 pshs a |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
600 tfr u,d |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
601 tfr a,dp |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
602 puls a |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
603 ENDC |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
604 ldx PD.RGS,y caller's register stack pointer |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
605 cmpa #SS.EOF |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
606 beq GSExitOK yes, SCF devices never return EOF |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
607 cmpa #SS.Ready |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
608 bne GetScSiz |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
609 ldd <RxDatLen get Rx data length |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
610 beq NRdyErr none, go report error |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
611 tsta more than 255 bytes? |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
612 beq SaveLen no, keep Rx data available |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
613 ldb #255 yes, just use 255 |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
614 SaveLen stb R$B,x set Rx data available in caller's [B] |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
615 GSExitOK puls cc,dp,pc restore Carry status, dummy B, system DP, return |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
616 |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
617 GetScSiz cmpa #SS.ScSiz |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
618 bne GetComSt |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
619 ldu PD.DEV,y |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
620 ldu V$DESC,u |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
621 clra |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
622 ldb IT.COL,u |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
623 std R$X,x |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
624 ldb IT.ROW,u |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
625 std R$Y,x |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
626 puls cc,dp,pc restore Carry status, dummy B, system DP, return |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
627 |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
628 GetComSt cmpa #SS.ComSt |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
629 lbne UnSvcErr no, go report error |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
630 ldd <Wrk.Type |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
631 std R$Y,x |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
632 clra default to DCD and DSR enabled |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
633 ldb <CpyDCDSR |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
634 bitb #Mask.DCD |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
635 beq CheckDSR no, go check DSR status |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
636 ora #DCDStBit |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
637 CheckDSR bitb <Mask.DSR DSR bit set (disabled)? |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
638 beq SaveCDSt no, go set DCD/DSR status |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
639 ora #DSRStBit |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
640 SaveCDSt sta R$B,x set 6551 ACIA style DCD/DSR status in caller's [B] |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
641 puls cc,dp,pc restore Carry status, dummy B, system DP, return |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
642 |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
643 BreakSlp ldx #SlpBreak SS.Break duration |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
644 bra TimedSlp |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
645 |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
646 HngUpSlp ldx #SlpHngUp SS.HngUp duration |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
647 bra TimedSlp |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
648 |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
649 IFEQ Level-1 |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
650 Sleep0 ldx #$0000 |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
651 bra TimedSlp |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
652 ENDC |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
653 Sleep1 ldx #1 give up balance of tick |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
654 TimedSlp pshs cc save IRQ enable status |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
655 andcc #^Intmasks enable IRQs |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
656 os9 F$Sleep |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
657 puls cc,pc restore IRQ enable status, return |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
658 |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
659 SStt clrb default to no error... |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
660 pshs cc,dp save IRQ/Carry status, dummy B, system DP |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
661 IFNE H6309 |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
662 tfr u,w setup our DP |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
663 tfr e,dp |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
664 ELSE |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
665 pshs a |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
666 tfr u,d |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
667 tfr a,dp |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
668 puls a |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
669 ENDC |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
670 ldx PD.RGS,y |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
671 cmpa #SS.HngUp |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
672 bne SetBreak |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
673 lda #^Cmd.DTR cleared (disabled) DTR bit |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
674 ldx <V.PORT |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
675 orcc #IntMasks disable IRQs while setting Command register |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
676 * anda CmdReg,x mask in current Command register contents |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
677 * sta CmdReg,x set new Command register |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
678 bsr HngUpSlp go sleep for a while... |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
679 BreakClr lda #^(Cmd.TIRB!Cmd.DTR) clear (disable) DTR and RTS control bits |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
680 FRegClr ldx <V.PORT |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
681 * anda CmdReg,x mask in current Command register |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
682 ldb <FloCtlRx get Rx flow control flags |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
683 bitb #FCRxDTR Rx disabled due to DTR? |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
684 bne LeaveDTR yes, go leave DTR disabled |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
685 ora #Cmd.DTR set (enable) DTR bit |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
686 LeaveDTR bitb #FCRxRTS Rx disabled due to RTS? |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
687 bne LeaveRTS yes, go leave RTS disabled |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
688 ora #TIRB.RTS enable RTS output |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
689 LeaveRTS ldb <FloCtlTx get Tx flow control flags |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
690 bitb #FCTxBrk currently transmitting line Break? |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
691 beq NoTxBrk no, go leave RTS alone... |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
692 ora #TIRB.Brk set Tx Break bits |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
693 NoTxBrk |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
694 * sta CmdReg,x set new Command register |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
695 puls cc,dp,pc restore IRQ/Carry status, dummy B, system DP, return |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
696 |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
697 SetBreak cmpa #SS.Break Tx line break? |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
698 bne SetSSig |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
699 ldy <V.PORT |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
700 ldd #FCTxBrk*256+TIRB.Brk [A]=flow control flag, [B]=Tx break enable |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
701 orcc #Intmasks disable IRQs while messing with flow control flags |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
702 ora <FloCtlTx set Tx break flag bit |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
703 sta <FloCtlTx save Tx flow control flags |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
704 * orb CmdReg,y set Tx line break bits |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
705 * stb CmdReg,y start Tx line break |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
706 bsr BreakSlp go sleep for a while... |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
707 anda #^FCTxBrk clear Tx break flag bit |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
708 sta <FloCtlTx save Tx flow control flags |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
709 * clr CmdReg,y clear Tx line break |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
710 bra BreakClr go restore RTS output to previous... |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
711 |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
712 SetSSig cmpa #SS.SSig |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
713 bne SetRelea |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
714 lda PD.CPR,y current process ID |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
715 ldb R$X+1,x LSB of [X] is signal code |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
716 orcc #IntMasks disable IRQs while checking Rx data length |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
717 ldx <RxDatLen |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
718 bne RSendSig |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
719 std <SSigPID |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
720 puls cc,dp,pc restore IRQ/Carry status, dummy B, system DP, return |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
721 RSendSig puls cc restore IRQ/Carry status |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
722 os9 F$Send |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
723 puls dp,pc restore system DP, return |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
724 |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
725 SetRelea cmpa #SS.Relea |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
726 bne SetCDSig |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
727 leax SSigPID,u point to Rx data signal process ID |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
728 bsr ReleaSig go release signal... |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
729 puls cc,dp,pc restore Carry status, dummy B, system DP, return |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
730 |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
731 SetCDSig cmpa #SS.CDSig set DCD signal? |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
732 bne SetCDRel |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
733 lda PD.CPR,y current process ID |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
734 ldb R$X+1,x LSB of [X] is signal code |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
735 std <CDSigPID |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
736 puls cc,dp,pc restore Carry status, dummy B, system DP, return |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
737 |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
738 SetCDRel cmpa #SS.CDRel release DCD signal? |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
739 bne SetComSt |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
740 CDRelSig leax CDSigPID,u point to DCD signal process ID |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
741 bsr ReleaSig go release signal... |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
742 puls cc,dp,pc restore Carry status, dummy B, system DP, return |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
743 |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
744 SetComSt cmpa #SS.ComSt |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
745 bne SetOpen |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
746 ldd R$Y,x caller's [Y] contains ACIAPAK format type/baud info |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
747 * bsr SetPort go save it and set up control/format registers |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
748 ReturnOK puls cc,dp,pc restore Carry status, dummy B, system DP, return |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
749 |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
750 SetOpen cmpa #SS.Open |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
751 bne SetClose |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
752 lda R$Y+1,x get LSB of caller's [Y] |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
753 deca real SS.Open from SCF? (SCF sets LSB of [Y] = 1) |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
754 bne ReturnOK no, go do nothing but return OK... |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
755 lda #TIRB.RTS enabled DTR and RTS outputs |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
756 orcc #IntMasks disable IRQs while setting Format register |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
757 lbra FRegClr go enable DTR and RTS (if not disabled due to Rx flow control) |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
758 |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
759 SetClose cmpa #SS.Close |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
760 lbne UnSvcErr no, go report error... |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
761 lda R$Y+1,x real SS.Close from SCF? (SCF sets LSB of [Y] = 0) |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
762 bne ReturnOK no, go do nothing but return OK... |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
763 leax SSigPID,u point to Rx data signal process ID |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
764 bsr ReleaSig go release signal... |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
765 bra CDRelSig go release DCD signal, return from there... |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
766 |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
767 ReleaSig pshs cc save IRQ enable status |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
768 orcc #IntMasks disable IRQs while releasing signal |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
769 lda PD.CPR,y get current process ID |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
770 suba ,x same as signal process ID? |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
771 bne NoReleas no, go return... |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
772 sta ,x clear this signal's process ID |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
773 NoReleas puls cc,pc restore IRQ enable status, return |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
774 |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
775 |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
776 * Interrupt service routine |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
777 IRQSvc |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
778 pshs dp save system DP |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
779 IFNE H6309 |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
780 tfr u,w setup our DP |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
781 tfr e,dp |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
782 ELSE |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
783 tfr u,d setup our DP |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
784 tfr a,dp |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
785 ENDC |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
786 |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
787 ldx <V.PORT |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
788 ldb StatReg,x get current Status register contents |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
789 stb <Cpy.Stat save Status register copy |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
790 bitb #Stat.Err error(s)? |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
791 beq ChkRDRF no, go check Rx data |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
792 * Error-handling |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
793 tst DataReg,x read Rx data register to clear ACIA error flags |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
794 bitb #Stat.Frm framing error (assume Rx line Break)? |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
795 beq ChkParty no, go check if parity error... |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
796 lda <V.QUIT default to keyboard quit ("Break") code |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
797 bra RxBreak go pretend we've received V.QUIT character... |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
798 |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
799 ChkParty bitb #Stat.Par parity error? |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
800 beq ChkOvRun no, go check overrun error... |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
801 lda #ParityEr mark parity error |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
802 ChkOvRun bita #Stat.Ovr overrun error? |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
803 beq SaveErrs no, go save errors... |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
804 ora #OvrFloEr mark overrun error |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
805 SaveErrs ora <V.ERR |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
806 sta <V.ERR |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
807 lbra ChkTrDCD go check if DCD transition... |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
808 |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
809 * Read data? |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
810 ChkRDRF bitb #Stat.RxF Rx data? |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
811 lbeq ChkTrDCD no, go check DCD transition |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
812 lda DataReg,x get Rx data |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
813 RxBreak beq SavRxDat its a null, go save it... |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
814 clr <SigSent |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
815 cmpa <V.INTR interrupt? |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
816 bne Chk.Quit no, go on... |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
817 ldb #S$Intrpt |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
818 bra SendSig |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
819 |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
820 Chk.Quit cmpa <V.QUIT abort? |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
821 bne Chk.PChr no, go on... |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
822 ldb #S$Abort |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
823 SendSig pshs a save Rx data |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
824 lda <V.LPRC get last process' ID |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
825 os9 F$Send |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
826 puls a recover Rx data |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
827 stb <SigSent set signal sent flag |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
828 bra SavRxDat go save Rx data... |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
829 |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
830 Chk.PChr cmpa <V.PCHR pause? |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
831 bne Chk.Flow no, go on... |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
832 ldx <V.DEV2 attached device defined? |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
833 beq SavRxDat no, go save Rx data... |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
834 sta V.PAUS,x yes, pause attached device |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
835 bra SavRxDat go save Rx data... |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
836 |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
837 Chk.Flow equ * |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
838 IFNE H6309 |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
839 tim #TxSwFlow,<Wrk.Type Tx data software flow control enabled? |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
840 ELSE |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
841 pshs a |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
842 lda #TxSwFlow |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
843 bita <Wrk.Type |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
844 puls a |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
845 ENDC |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
846 beq SavRxDat no, go save Rx data... |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
847 cmpa <V.XON XON? |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
848 bne Chk.XOff no, go on... |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
849 IFNE H6309 |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
850 aim #^FCTxXOff,<FloCtlTx clear XOFF received bit |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
851 ELSE |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
852 pshs a |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
853 lda #^FCTxXOff |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
854 anda <FloCtlTx |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
855 sta <FloCtlTx |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
856 puls a |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
857 ENDC |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
858 bra SetTxFlo go save new Tx flow control flags... |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
859 |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
860 Chk.XOff cmpa <V.XOFF XOFF? |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
861 bne SavRxDat no, go save Rx data... |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
862 ldb #FCTxXOff set XOFF received bit |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
863 orb <FloCtlTx set software Tx flow control flag |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
864 SetTxFlo stb <FloCtlTx save new Tx flow control flags |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
865 lbra ChkTrDCD go check DCD transition... |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
866 SavRxDat equ * |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
867 IFNE H6309 |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
868 aim #^FCRxSend,<FloCtlRx clear possible pending XOFF flag |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
869 ELSE |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
870 pshs a |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
871 lda #^FCRxSend |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
872 anda <FloCtlRx |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
873 sta <FloCtlRx |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
874 puls a |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
875 ENDC |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
876 ldx <RxBufPut get Rx buffer input pointer |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
877 IFNE H6309 |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
878 ldw <RxDatLen Rx get Rx buffer data length |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
879 cmpw <RxBufSiz Rx buffer already full? |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
880 ELSE |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
881 pshs d |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
882 ldd <RxDatLen |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
883 std <regWbuf |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
884 cmpd <RxBufSiz |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
885 puls d |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
886 ENDC |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
887 blo NotOvFlo no, go skip overflow error... |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
888 IFNE H6309 |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
889 oim #OvrFloEr,<V.ERR mark RX buffer overflow error |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
890 ELSE |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
891 ldb #OvrFloEr |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
892 orb <V.ERR |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
893 stb <V.ERR |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
894 ENDC |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
895 bra DisRxFlo go ensure Rx is disabled (if possible) |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
896 |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
897 NotOvFlo sta ,x+ save Rx data |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
898 cmpx <RxBufEnd end of Rx buffer? |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
899 blo SetLayDn no, go keep laydown pointer |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
900 ldx <RxBufPtr get Rx buffer start address |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
901 SetLayDn stx <RxBufPut set new Rx data laydown pointer |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
902 IFNE H6309 |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
903 incw one more byte in Rx buffer |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
904 stw <RxDatLen save new Rx data length |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
905 cmpw <RxBufMax at or past maximum fill point? |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
906 ELSE |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
907 pshs d |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
908 ldd <regWbuf |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
909 addd #1 |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
910 std <regWbuf |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
911 std <RxDatLen |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
912 cmpd <RxBufMax |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
913 puls d |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
914 ENDC |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
915 blo SgnlRxD no, go check Rx data signal... |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
916 DisRxFlo ldx <V.PORT |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
917 * ldb CmdReg,x get current Command register contents |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
918 IFNE H6309 |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
919 tim #ForceDTR,<Wrk.XTyp forced DTR? |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
920 ELSE |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
921 lda #ForceDTR |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
922 bita <Wrk.XTyp |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
923 ENDC |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
924 bne DisRxRTS yes, go check RTS disable... |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
925 IFNE H6309 |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
926 tim #DSRFlow,<Wrk.Type DSR/DTR Flow control? |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
927 ELSE |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
928 lda #DSRFlow |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
929 bita <Wrk.Type |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
930 ENDC |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
931 beq DisRxRTS no, go check RTS disable |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
932 IFNE H6309 |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
933 oim #FCRxDTR,<Wrk.Type mark RX disabled due to DTR |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
934 ELSE |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
935 lda #FCRxDTR |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
936 ora <Wrk.Type |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
937 sta <Wrk.Type |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
938 ENDC |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
939 andb #^Cmd.DTR clear (disable) DTR bit |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
940 DisRxRTS equ * |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
941 IFNE H6309 |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
942 tim #RTSFlow,<Wrk.Type |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
943 ELSE |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
944 lda #RTSFlow |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
945 bita <Wrk.Type |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
946 ENDC |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
947 beq NewRxFlo no, go set new Rx flow control... |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
948 IFNE H6309 |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
949 tim #DSRFlow,<Wrk.Type line break? |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
950 ELSE |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
951 lda #DSRFlow |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
952 bita <Wrk.Type |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
953 ENDC |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
954 bne NewRxFlo yes, go set new Rx flow control... |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
955 IFNE H6309 |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
956 oim #FCRxRTS,<FloCtlRx |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
957 ELSE |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
958 lda #FCRxRTS |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
959 ora <FloCtlRx |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
960 sta <FloCtlRx |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
961 ENDC |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
962 andb #^Cmd.TIRB clear Tx IRQ/RTS/Break control bits (disable RTS) |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
963 NewRxFlo |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
964 * stb CmdReg,x set/clear DTR and RTS in Command register |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
965 IFNE H6309 |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
966 tim #RxSwFlow,<Wrk.Type Rx software flow control? |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
967 ELSE |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
968 ldb <Wrk.Type |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
969 bitb #RxSwFlow |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
970 ENDC |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
971 beq SgnlRxD no, go check Rx data signal... |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
972 lda <V.XOFF XOFF character defined? |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
973 beq SgnlRxD no, go check Rx data signal... |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
974 ldb <FloCtlRx get Rx flow control flags |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
975 bitb #FCRxSent XOFF already sent? |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
976 bne SgnlRxD yes, go check Rx data signal... |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
977 orb #FCRxSend set send XOFF flag |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
978 stb <FloCtlRx set new Rx flow control flags |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
979 IFNE H6309 |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
980 tim #Stat.TxE,StatReg,x |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
981 ELSE |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
982 ldb StatReg,x |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
983 bitb #Stat.TxE |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
984 ENDC |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
985 beq SgnlRxD no, go skip XOFF this time... |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
986 sta DataReg,x write XOFF character |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
987 ldb #FCRxSent set XOFF sent flag |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
988 orb <FloCtlRx mask in current Rx flow control flags |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
989 andb #^FCRxSend clear send XOFF flag |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
990 stb <FloCtlRx save new flow control flags |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
991 SgnlRxD ldb <SigSent already sent abort/interrupt signal? |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
992 bne ChkTrDCD yes, go check DCD transition... |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
993 lda <SSigPID Rx data signal process ID? |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
994 beq ChkTrDCD none, go check DCD transition... |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
995 stb <SSigPID clear Rx data signal |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
996 ldb <SSigSig Rx data signal code |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
997 os9 F$Send |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
998 ChkTrDCD ldx <V.PORT |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
999 lda <Cpy.Stat get Status register copy |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
1000 tfr a,b copy it... |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
1001 eora <CpyDCDSR mark changes from old DSR+DCD status copy |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
1002 * andb #Stat.DSR!Stat.DCD clear all but DSR+DCD status |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
1003 stb <CpyDCDSR save new DSR+DCD status copy |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
1004 bita <Mask.DCD DCD transition? |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
1005 beq CkSuspnd no, go check for suspended process... |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
1006 bitb <Mask.DCD DCD disabled now? |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
1007 beq SgnlDCD no, go check DCD signal... |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
1008 lda <Wrk.Type |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
1009 bita #MdmKill modem kill enabled? |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
1010 beq SgnlDCD no, go on... |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
1011 ldx <V.PDLHd path descriptor list header |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
1012 beq StCDLost no list, go set DCD lost error... |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
1013 lda #PST.DCD DCD lost flag |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
1014 PDListLp sta PD.PST,x set path status flag |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
1015 ldx PD.PLP,x get next path descriptor in list |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
1016 bne PDListLp not end of list, go do another... |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
1017 StCDLost lda #DCDLstEr DCD lost error flag |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
1018 ora <V.ERR |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
1019 sta <V.ERR |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
1020 SgnlDCD lda <CDSigPID get process ID, send a DCD signal? |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
1021 beq CkSuspnd no, go check for suspended process... |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
1022 ldb <CDSigSig get DCD signal code |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
1023 clr <CDSigPID clear DCD signal |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
1024 os9 F$Send |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
1025 |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
1026 CkSuspnd clrb clear Carry (for exit) and LSB of process descriptor address |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
1027 lda <V.WAKE anybody waiting? ([D]=process descriptor address) |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
1028 beq IRQExit no, go return... |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
1029 IFEQ Level-1 |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
1030 clr <V.WAKE |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
1031 ldb #S$Wake |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
1032 os9 F$Send |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
1033 ELSE |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
1034 stb <V.WAKE mark I/O done |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
1035 tfr d,x copy process descriptor pointer |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
1036 lda P$State,x get state flags |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
1037 anda #^Suspend clear suspend state |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
1038 sta P$State,x save state flags |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
1039 ENDC |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
1040 IRQExit puls dp,pc recover system DP, return... |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
1041 |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
1042 emod |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
1043 ModSize equ * |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
1044 end |
61a8ce1200ed
New mc6850 driver, based on existing sc6551 driver
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
1045 |