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
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
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