mirror of
https://github.com/A2osX/A2osX.git
synced 2024-10-09 14:55:05 +00:00
Kernel version 0.9 : COM drivers and IRQ related Fixes
This commit is contained in:
parent
2f13635422
commit
41b21d8091
BIN
A2OSX.BOOT.po
BIN
A2OSX.BOOT.po
Binary file not shown.
BIN
A2OSX.DEV.po
BIN
A2OSX.DEV.po
Binary file not shown.
BIN
A2OSX.SRC.po
BIN
A2OSX.SRC.po
Binary file not shown.
@ -13,7 +13,8 @@ INSDRV CONSOLE.DRV
|
|||||||
STARTPROC GETTY CON ${A2OSX}SBIN/LOGIN
|
STARTPROC GETTY CON ${A2OSX}SBIN/LOGIN
|
||||||
# Serial Login
|
# Serial Login
|
||||||
#INSDRV SSC.DRV 9600,N,8,1,X
|
#INSDRV SSC.DRV 9600,N,8,1,X
|
||||||
#STARTPROC GETTY COM2 ${A2OSX}SBIN/LOGIN
|
INSDRV SSC.I.DRV 9600,N,8,1,X
|
||||||
|
STARTPROC GETTY COM2 ${A2OSX}SBIN/LOGIN
|
||||||
#INSDRV PIC.DRV
|
#INSDRV PIC.DRV
|
||||||
# Network Section
|
# Network Section
|
||||||
INSDRV UTHERNET.DRV 000E3A123456
|
INSDRV UTHERNET.DRV 000E3A123456
|
||||||
|
@ -55,6 +55,7 @@ CS.RUN >LDYA L.MSG0
|
|||||||
>SYSCALL GetDevByIDA
|
>SYSCALL GetDevByIDA
|
||||||
bcc .10
|
bcc .10
|
||||||
jmp .8
|
jmp .8
|
||||||
|
|
||||||
.10 >STYA ZPPTR1
|
.10 >STYA ZPPTR1
|
||||||
|
|
||||||
ldy #S.DEV.JMP+1
|
ldy #S.DEV.JMP+1
|
||||||
@ -80,7 +81,9 @@ CS.RUN >LDYA L.MSG0
|
|||||||
>PUSHW L.DEV.NAME
|
>PUSHW L.DEV.NAME
|
||||||
|
|
||||||
ldy #S.DEV.F
|
ldy #S.DEV.F
|
||||||
>PUSHB (ZPPTR1),y
|
lda (ZPPTR1),y
|
||||||
|
and #$FF^S.DEV.F.LEN
|
||||||
|
>PUSHA
|
||||||
|
|
||||||
ldy #S.DEV.S
|
ldy #S.DEV.S
|
||||||
>PUSHB (ZPPTR1),y
|
>PUSHB (ZPPTR1),y
|
||||||
|
@ -10,6 +10,7 @@ AUTO 6
|
|||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
.INB /A2OSX.DEV/INC/MACROS.I
|
.INB /A2OSX.DEV/INC/MACROS.I
|
||||||
.INB /A2OSX.DEV/INC/A2OSX.I
|
.INB /A2OSX.DEV/INC/A2OSX.I
|
||||||
|
.INB /A2OSX.DEV/INC/PRODOS.I
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
ZPTmpPtr1 .EQ ZPDRV
|
ZPTmpPtr1 .EQ ZPDRV
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
@ -61,14 +62,12 @@ Dev.Detect sta hArgs
|
|||||||
>LDYA L.MSG.DETECT.KO
|
>LDYA L.MSG.DETECT.KO
|
||||||
>SYSCALL CPrintFYA
|
>SYSCALL CPrintFYA
|
||||||
|
|
||||||
lda #DEVMGR.ERRNOHW Not Found in any slot, exiting
|
lda #MLI.ERR.NODEV Not Found in any slot, exiting
|
||||||
sec
|
sec
|
||||||
rts
|
rts
|
||||||
|
|
||||||
.4 lda ZPTmpPtr1+1
|
.4 lda ZPTmpPtr1+1
|
||||||
sta DEVSLOTCn
|
|
||||||
and #$0F
|
and #$0F
|
||||||
sta DEVSLOT0n
|
|
||||||
ora #$30
|
ora #$30
|
||||||
sta DEV.HEADER.NAME+4
|
sta DEV.HEADER.NAME+4
|
||||||
asl
|
asl
|
||||||
@ -94,25 +93,38 @@ hArgs .BS 1
|
|||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
* Device Header (16 Bytes)
|
* Device Header (16 Bytes)
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
DEV.HEADER cld
|
DEV.HEADER .DA DRV.CS.START
|
||||||
jmp (DRV.CS.START,x)
|
.DA #S.DEV.S.WRITE+S.DEV.S.READ
|
||||||
.HS 00 DevID
|
|
||||||
.DA #S.DEV.F.EVENT+S.DEV.F.COUT+S.DEV.F.CHAR
|
|
||||||
DEV.HEADER.NAME >PSTR "COM1" NAME
|
DEV.HEADER.NAME >PSTR "COM1" NAME
|
||||||
.HS 00
|
|
||||||
.HS 00.00.00.00
|
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
* Driver Code
|
* Driver Code
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
DRV.CS.START .DA OPEN
|
DRV.CS.START cld
|
||||||
.DA GETEVENT
|
jmp (.1,x)
|
||||||
.DA COUT
|
.1 .DA STATUS
|
||||||
|
.DA BADCALL
|
||||||
|
.DA BADCALL
|
||||||
|
.DA BADCALL
|
||||||
|
.DA CONTROL
|
||||||
|
.DA BADCALL
|
||||||
|
.DA OPEN
|
||||||
.DA CLOSE
|
.DA CLOSE
|
||||||
.DA GETINFO
|
.DA READ
|
||||||
.DA IRQ
|
.DA WRITE
|
||||||
L.DEVINFO .DA DEVINFO
|
L.STAT .DA STAT
|
||||||
.DA 0 end or relocation
|
.DA 0 end or relocation
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
|
BADCALL lda #MLI.ERR.BADCALL
|
||||||
|
sec
|
||||||
|
rts
|
||||||
|
*--------------------------------------
|
||||||
|
STATUS >LDYA L.STAT
|
||||||
|
clc
|
||||||
|
rts
|
||||||
|
*--------------------------------------
|
||||||
|
CONTROL clc
|
||||||
|
rts
|
||||||
|
*--------------------------------------
|
||||||
OPEN ldx DEVSLOTn0
|
OPEN ldx DEVSLOTn0
|
||||||
|
|
||||||
php
|
php
|
||||||
@ -132,7 +144,15 @@ OPEN ldx DEVSLOTn0
|
|||||||
clc
|
clc
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
GETEVENT ldx DEVSLOTn0
|
CLOSE php
|
||||||
|
sei
|
||||||
|
ldx DEVSLOTn0
|
||||||
|
stz SSC.RESET,x
|
||||||
|
plp
|
||||||
|
clc
|
||||||
|
rts
|
||||||
|
*--------------------------------------
|
||||||
|
READ ldx DEVSLOTn0
|
||||||
lda SSC.STATUS,x
|
lda SSC.STATUS,x
|
||||||
bmi *
|
bmi *
|
||||||
|
|
||||||
@ -140,16 +160,6 @@ GETEVENT ldx DEVSLOTn0
|
|||||||
beq .9
|
beq .9
|
||||||
|
|
||||||
lda SSC.DATA,x
|
lda SSC.DATA,x
|
||||||
ldy #S.EVT.DATA
|
|
||||||
sta (pEvent),y
|
|
||||||
|
|
||||||
iny
|
|
||||||
lda #0
|
|
||||||
sta (pEvent),y
|
|
||||||
|
|
||||||
lda #S.EVT.F.KEY
|
|
||||||
sta (pEvent)
|
|
||||||
|
|
||||||
clc
|
clc
|
||||||
rts
|
rts
|
||||||
|
|
||||||
@ -157,16 +167,17 @@ GETEVENT ldx DEVSLOTn0
|
|||||||
sec
|
sec
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
COUT pha
|
WRITE pha
|
||||||
|
|
||||||
ldx DEVSLOTn0
|
ldx DEVSLOTn0
|
||||||
|
|
||||||
.1 lda SSC.STATUS,x
|
.1 lda SSC.STATUS,x
|
||||||
bmi *
|
|
||||||
and #SSC.STATUS.DCD+SSC.STATUS.DSR
|
* and #SSC.STATUS.DCD+SSC.STATUS.DSR
|
||||||
beq .9
|
* beq .9
|
||||||
|
|
||||||
and #SSC.STATUS.TDRE Outgoing char?
|
and #SSC.STATUS.TDRE Outgoing char?
|
||||||
bne .1
|
beq .1
|
||||||
|
|
||||||
pla
|
pla
|
||||||
sta SSC.DATA,x
|
sta SSC.DATA,x
|
||||||
@ -178,24 +189,15 @@ COUT pha
|
|||||||
sec
|
sec
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CLOSE php
|
|
||||||
sei
|
|
||||||
ldx DEVSLOTn0
|
|
||||||
stz SSC.RESET,x
|
|
||||||
plp
|
|
||||||
clc
|
|
||||||
rts
|
|
||||||
*--------------------------------------
|
|
||||||
GETINFO >LDYA L.DEVINFO
|
|
||||||
IRQ clc
|
|
||||||
rts
|
|
||||||
*--------------------------------------
|
|
||||||
DRV.CS.END
|
DRV.CS.END
|
||||||
DEVSLOT0n .BS 1
|
|
||||||
DEVSLOTCn .BS 1
|
|
||||||
DEVSLOTn0 .BS 1
|
DEVSLOTn0 .BS 1
|
||||||
DEVINFO .DA #S.DEVINFO.TYPE.CHAR
|
*--------------------------------------
|
||||||
|
STAT .DA #S.DEVSTAT.S.WRITE+S.DEVSTAT.S.READ
|
||||||
|
.DA #0,#0,#0
|
||||||
|
>PSTR "Serial Card/Port"
|
||||||
|
.DA #S.DEVSTAT.TYPE.CHAR
|
||||||
.DA #0
|
.DA #0
|
||||||
|
.DA $0900
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
MAN
|
MAN
|
||||||
SAVE DRV/SSC.DRV.S
|
SAVE DRV/SSC.DRV.S
|
||||||
|
@ -10,6 +10,7 @@ AUTO 6
|
|||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
.INB /A2OSX.DEV/INC/MACROS.I
|
.INB /A2OSX.DEV/INC/MACROS.I
|
||||||
.INB /A2OSX.DEV/INC/A2OSX.I
|
.INB /A2OSX.DEV/INC/A2OSX.I
|
||||||
|
.INB /A2OSX.DEV/INC/PRODOS.I
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
BUF.SIZE .EQ $20
|
BUF.SIZE .EQ $20
|
||||||
BUF.MASK .EQ $1F
|
BUF.MASK .EQ $1F
|
||||||
@ -18,10 +19,6 @@ ZPTmpPtr1 .EQ ZPDRV
|
|||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
.INB DRV/X.SER.6551.S
|
.INB DRV/X.SER.6551.S
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
* see this :
|
|
||||||
* http://mirrors.apple2.org.za/apple.cabi.net/Applications/Telcom/SSC.DRIVER/SSC.DRIVER.TXT
|
|
||||||
* About False read issue in SSC
|
|
||||||
*--------------------------------------
|
|
||||||
* File Header (16 Bytes)
|
* File Header (16 Bytes)
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CS.START cld
|
CS.START cld
|
||||||
@ -68,7 +65,7 @@ Dev.Detect sta hArgs
|
|||||||
>LDYA L.MSG.DETECT.KO
|
>LDYA L.MSG.DETECT.KO
|
||||||
>SYSCALL CPrintFYA
|
>SYSCALL CPrintFYA
|
||||||
|
|
||||||
lda #DEVMGR.ERRNOHW Not Found in any slot, exiting
|
lda #MLI.ERR.NODEV Not Found in any slot, exiting
|
||||||
sec
|
sec
|
||||||
rts
|
rts
|
||||||
|
|
||||||
@ -104,25 +101,39 @@ hArgs .BS 1
|
|||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
* Device Header (16 Bytes)
|
* Device Header (16 Bytes)
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
DEV.HEADER cld
|
DEV.HEADER .DA DRV.CS.START
|
||||||
jmp (DRV.CS.START,x)
|
.DA #S.DEV.S.WRITE+S.DEV.S.READ+S.DEV.S.IRQ
|
||||||
.HS 00 DevID
|
|
||||||
.DA #S.DEV.F.IRQ+S.DEV.F.EVENT+S.DEV.F.COUT+S.DEV.F.CHAR
|
|
||||||
DEV.HEADER.NAME >PSTR "COM1" NAME
|
DEV.HEADER.NAME >PSTR "COM1" NAME
|
||||||
.HS 00
|
|
||||||
.HS 00.00.00.00
|
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
* Driver Code
|
* Driver Code
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
DRV.CS.START .DA OPEN
|
DRV.CS.START cld
|
||||||
.DA GETEVENT
|
jmp (.1,x)
|
||||||
.DA COUT
|
.1 .DA STATUS
|
||||||
|
.DA BADCALL
|
||||||
|
.DA BADCALL
|
||||||
|
.DA BADCALL
|
||||||
|
.DA CONTROL
|
||||||
|
.DA BADCALL
|
||||||
|
.DA OPEN
|
||||||
.DA CLOSE
|
.DA CLOSE
|
||||||
.DA GETINFO
|
.DA READ
|
||||||
|
.DA WRITE
|
||||||
.DA IRQ
|
.DA IRQ
|
||||||
L.DEVINFO .DA DEVINFO
|
L.STAT .DA STAT
|
||||||
.DA 0 end or relocation
|
.DA 0 end or relocation
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
|
BADCALL lda #MLI.ERR.BADCALL
|
||||||
|
sec
|
||||||
|
rts
|
||||||
|
*--------------------------------------
|
||||||
|
STATUS >LDYA L.STAT
|
||||||
|
clc
|
||||||
|
rts
|
||||||
|
*--------------------------------------
|
||||||
|
CONTROL clc
|
||||||
|
rts
|
||||||
|
*--------------------------------------
|
||||||
OPEN php
|
OPEN php
|
||||||
sei
|
sei
|
||||||
ldx DEVSLOTn0
|
ldx DEVSLOTn0
|
||||||
@ -137,7 +148,7 @@ OPEN php
|
|||||||
lda #SSC.CTL.CLKINT+SSC.CTL.B9600
|
lda #SSC.CTL.CLKINT+SSC.CTL.B9600
|
||||||
sta SSC.CTL,x
|
sta SSC.CTL,x
|
||||||
|
|
||||||
lda #SSC.CMD.TE+SSC.CMD.DTR
|
lda #SSC.CMD.TEIRQ+SSC.CMD.TE+SSC.CMD.DTR
|
||||||
sta SSC.CMD,x
|
sta SSC.CMD,x
|
||||||
|
|
||||||
lda SSC.DATA,x discard any garbage byte
|
lda SSC.DATA,x discard any garbage byte
|
||||||
@ -147,24 +158,22 @@ OPEN php
|
|||||||
clc
|
clc
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
GETEVENT php
|
CLOSE php
|
||||||
|
sei
|
||||||
|
ldx DEVSLOTn0
|
||||||
|
stz SSC.RESET,x
|
||||||
|
plp
|
||||||
|
clc
|
||||||
|
rts
|
||||||
|
*--------------------------------------
|
||||||
|
READ php
|
||||||
sei
|
sei
|
||||||
lda INBUF.CNT
|
lda INBUF.CNT
|
||||||
|
|
||||||
beq .9
|
beq .9
|
||||||
|
|
||||||
ldx INBUF.PTR
|
ldx INBUF.PTR
|
||||||
lda INBUF,x
|
ldy INBUF,x
|
||||||
|
|
||||||
ldy #S.EVT.DATA
|
|
||||||
sta (pEvent),y
|
|
||||||
|
|
||||||
iny
|
|
||||||
lda #0
|
|
||||||
sta (pEvent),y
|
|
||||||
|
|
||||||
lda #S.EVT.F.KEY
|
|
||||||
sta (pEvent)
|
|
||||||
|
|
||||||
txa
|
txa
|
||||||
inc
|
inc
|
||||||
@ -172,6 +181,7 @@ GETEVENT php
|
|||||||
sta INBUF.PTR
|
sta INBUF.PTR
|
||||||
dec INBUF.CNT
|
dec INBUF.CNT
|
||||||
|
|
||||||
|
tya
|
||||||
plp
|
plp
|
||||||
clc
|
clc
|
||||||
rts
|
rts
|
||||||
@ -181,31 +191,34 @@ GETEVENT php
|
|||||||
sec
|
sec
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
COUT php
|
WRITE php
|
||||||
sei
|
sei
|
||||||
tay save char in Y
|
tay save char in Y
|
||||||
|
|
||||||
ldx DEVSLOTn0
|
* ldx DEVSLOTn0
|
||||||
lda SSC.STATUS,x
|
* lda SSC.STATUS,x
|
||||||
|
* bit #SSC.STATUS.DCD+SSC.STATUS.DSR true when 0
|
||||||
bit #SSC.STATUS.DCD+SSC.STATUS.DSR true when 0
|
* bne .9
|
||||||
bne .9
|
|
||||||
|
|
||||||
ldx OUTBUF.CNT Buffer Empty?
|
ldx OUTBUF.CNT Buffer Empty?
|
||||||
bne .10 not empty, queue char
|
bne .11 not empty, queue char
|
||||||
|
|
||||||
|
ldx DEVSLOTn0
|
||||||
|
lda SSC.STATUS,x
|
||||||
|
|
||||||
and #SSC.STATUS.TDRE Register Empty ?
|
and #SSC.STATUS.TDRE Register Empty ?
|
||||||
beq .10 not empty, queue char
|
beq .10 not empty, queue char
|
||||||
|
|
||||||
tya yes, write directly to ACIA
|
tya yes, write directly to ACIA
|
||||||
ldx DEV.DATA.BFFF
|
sta SSC.DATA,x
|
||||||
sta $BFFF,x
|
|
||||||
|
|
||||||
plp
|
plp
|
||||||
clc
|
clc
|
||||||
rts
|
rts
|
||||||
|
|
||||||
.10 cpx #BUF.SIZE
|
.10 ldx OUTBUF.CNT
|
||||||
|
|
||||||
|
.11 cpx #BUF.SIZE
|
||||||
beq .9 Buffer Full!!
|
beq .9 Buffer Full!!
|
||||||
|
|
||||||
lda OUTBUF.PTR
|
lda OUTBUF.PTR
|
||||||
@ -220,8 +233,8 @@ COUT php
|
|||||||
inc OUTBUF.CNT
|
inc OUTBUF.CNT
|
||||||
|
|
||||||
* ldx DEVSLOTn0
|
* ldx DEVSLOTn0
|
||||||
lda #SSC.CMD.TEIRQ+SSC.CMD.DTR
|
* lda #SSC.CMD.TEIRQ+SSC.CMD.DTR
|
||||||
sta SSC.CMD,x
|
* sta SSC.CMD,x
|
||||||
plp
|
plp
|
||||||
clc
|
clc
|
||||||
rts
|
rts
|
||||||
@ -230,27 +243,17 @@ COUT php
|
|||||||
sec
|
sec
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CLOSE php
|
|
||||||
sei
|
|
||||||
ldx DEVSLOTn0
|
|
||||||
stz SSC.RESET,x
|
|
||||||
plp
|
|
||||||
clc
|
|
||||||
rts
|
|
||||||
*--------------------------------------
|
|
||||||
GETINFO >LDYA L.DEVINFO
|
|
||||||
clc
|
|
||||||
rts
|
|
||||||
*--------------------------------------
|
|
||||||
* IRQ Handler
|
* IRQ Handler
|
||||||
* on exit, CC if handled
|
* on exit, CC if handled
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
IRQ ldx DEVSLOTn0
|
IRQ stz .8+1
|
||||||
lda SSC.STATUS,x IRQ from this device ?
|
|
||||||
* bpl .9 no, exit !!!!Applewin bug #308!!!!
|
.1 ldx DEVSLOTn0
|
||||||
|
lda SSC.STATUS,x
|
||||||
|
* bpl .9 IRQ from this device ? no, exit !!!!Applewin bug #308!!!!
|
||||||
|
|
||||||
bit #SSC.STATUS.RDRF incoming char?
|
bit #SSC.STATUS.RDRF incoming char?
|
||||||
beq .1
|
beq .3
|
||||||
|
|
||||||
*------------ IRQ In
|
*------------ IRQ In
|
||||||
|
|
||||||
@ -258,7 +261,7 @@ IRQ ldx DEVSLOTn0
|
|||||||
|
|
||||||
lda INBUF.CNT
|
lda INBUF.CNT
|
||||||
cmp #BUF.SIZE
|
cmp #BUF.SIZE
|
||||||
beq .8 buffer full, discard
|
beq .8 buffer full, discard and exit
|
||||||
|
|
||||||
clc
|
clc
|
||||||
adc INBUF.PTR
|
adc INBUF.PTR
|
||||||
@ -268,41 +271,41 @@ IRQ ldx DEVSLOTn0
|
|||||||
sta INBUF,x
|
sta INBUF,x
|
||||||
|
|
||||||
inc INBUF.CNT
|
inc INBUF.CNT
|
||||||
bra IRQ start over if
|
|
||||||
|
lda #$ff
|
||||||
|
sta .8+1
|
||||||
|
|
||||||
|
bra .1
|
||||||
|
|
||||||
*------------ IRQ Out
|
*------------ IRQ Out
|
||||||
|
|
||||||
.1 bit #SSC.STATUS.TDRE
|
.2 ldx DEVSLOTn0
|
||||||
beq .2 no transmit, no recieve, CTS changed!
|
lda SSC.STATUS,x
|
||||||
|
|
||||||
|
.3 bit #SSC.STATUS.TDRE
|
||||||
|
beq .8 no transmition possible....
|
||||||
|
|
||||||
lda OUTBUF.CNT something to transmit ?
|
lda OUTBUF.CNT something to transmit ?
|
||||||
beq .11 no, disable IRQ and exit
|
beq .8
|
||||||
|
|
||||||
ldx OUTBUF.PTR
|
ldy OUTBUF.PTR
|
||||||
lda OUTBUF,x
|
lda OUTBUF,y
|
||||||
ldy DEV.DATA.BFFF
|
|
||||||
sta $BFFF,y
|
sta SSC.DATA,x
|
||||||
|
|
||||||
dec OUTBUF.CNT
|
dec OUTBUF.CNT
|
||||||
txa get back OUTBUF.PTR
|
tya get back OUTBUF.PTR
|
||||||
inc
|
inc
|
||||||
and #BUF.MASK
|
and #BUF.MASK
|
||||||
sta OUTBUF.PTR
|
sta OUTBUF.PTR
|
||||||
|
|
||||||
|
bra .2
|
||||||
|
|
||||||
|
.8 lda #$ff did we finally handle and IRQ condtion ?
|
||||||
|
beq .9
|
||||||
clc
|
clc
|
||||||
rts
|
rts
|
||||||
|
|
||||||
.11 lda #SSC.CMD.TE+SSC.CMD.DTR
|
|
||||||
sta SSC.CMD,x
|
|
||||||
clc
|
|
||||||
rts
|
|
||||||
|
|
||||||
*------------ IRQ CTS High
|
|
||||||
|
|
||||||
.2
|
|
||||||
|
|
||||||
.8 clc
|
|
||||||
rts
|
|
||||||
|
|
||||||
.9 sec
|
.9 sec
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
@ -317,8 +320,14 @@ OUTBUF.PTR .BS 1
|
|||||||
OUTBUF.CNT .BS 1
|
OUTBUF.CNT .BS 1
|
||||||
INBUF .BS BUF.SIZE
|
INBUF .BS BUF.SIZE
|
||||||
OUTBUF .BS BUF.SIZE
|
OUTBUF .BS BUF.SIZE
|
||||||
DEVINFO .DA #S.DEVINFO.TYPE.CHAR
|
*--------------------------------------
|
||||||
|
STAT .DA #S.DEVSTAT.S.WRITE+S.DEVSTAT.S.READ+S.DEV.S.IRQ
|
||||||
|
.DA #0,#0,#0
|
||||||
|
>PSTR "Serial Card/Port"
|
||||||
|
.DA #S.DEVSTAT.TYPE.CHAR
|
||||||
.DA #0
|
.DA #0
|
||||||
|
.DA $0900
|
||||||
|
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
MAN
|
MAN
|
||||||
SAVE DRV/SSC.DRV.I.S
|
SAVE DRV/SSC.DRV.I.S
|
||||||
|
@ -412,8 +412,8 @@ S.DEV.S.WENABL .EQ %00000100
|
|||||||
S.DEV.S.IRQ .EQ %00000010
|
S.DEV.S.IRQ .EQ %00000010
|
||||||
S.DEV.S.OPENED .EQ %00000001
|
S.DEV.S.OPENED .EQ %00000001
|
||||||
S.DEV.F .EQ 3
|
S.DEV.F .EQ 3
|
||||||
S.DEV.F.IRQ .EQ %10000000 Device is irq driven
|
*S.DEV.F.IRQ .EQ %10000000 Device is irq driven
|
||||||
S.DEV.F.EVENT .EQ %01000000 Device is event driven
|
*S.DEV.F.EVENT .EQ %01000000 Device is event driven
|
||||||
S.DEV.F.LEN .EQ %00000111 Len
|
S.DEV.F.LEN .EQ %00000111 Len
|
||||||
S.DEV.NAME .EQ 4 4 MAX
|
S.DEV.NAME .EQ 4 4 MAX
|
||||||
*
|
*
|
||||||
@ -429,6 +429,7 @@ DEVMGR.OPEN .EQ 12
|
|||||||
DEVMGR.CLOSE .EQ 14
|
DEVMGR.CLOSE .EQ 14
|
||||||
DEVMGR.READ .EQ 16
|
DEVMGR.READ .EQ 16
|
||||||
DEVMGR.WRITE .EQ 18
|
DEVMGR.WRITE .EQ 18
|
||||||
|
DEVMGR.IRQ .EQ 20
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
S.DEVSTAT.S .EQ 0
|
S.DEVSTAT.S .EQ 0
|
||||||
S.DEVSTAT.S.BLOCK .EQ %10000000
|
S.DEVSTAT.S.BLOCK .EQ %10000000
|
||||||
|
@ -115,9 +115,9 @@ note : '$VAR' does NOT expand Variable
|
|||||||
| Name | Status | Comment | K.Ver |
|
| Name | Status | Comment | K.Ver |
|
||||||
| ---- | ------ | ------- | ----- |
|
| ---- | ------ | ------- | ----- |
|
||||||
| Console.DRV | Working | ANSI support in Progress. | 0.9 |
|
| Console.DRV | Working | ANSI support in Progress. | 0.9 |
|
||||||
|
| SSC.DRV | Working | Apple "Super Serial Card" Driver | 0.9 |
|
||||||
|
| SSC.I.DRV | Working | Apple "Super Serial Card" Driver (IRQ enabled) | 0.9 |
|
||||||
| PIC.DRV | In Progress | Apple "Parallel Interface Card" Driver, renamed from PPIC.DRV | 0.8 |
|
| PIC.DRV | In Progress | Apple "Parallel Interface Card" Driver, renamed from PPIC.DRV | 0.8 |
|
||||||
| SSC.DRV | In Progress | Apple "Super Serial Card" Driver | 0.8 |
|
|
||||||
| SSC.I.DRV | In Progress | Apple "Super Serial Card" Driver (IRQ enabled) | 0.8 |
|
|
||||||
| Mouse.DRV | Working | Apple Mouse Card,//c Mouse Port | 0.9 |
|
| Mouse.DRV | Working | Apple Mouse Card,//c Mouse Port | 0.9 |
|
||||||
| DHGR.DRV | In Progress | except bitblt... | 0.8 |
|
| DHGR.DRV | In Progress | except bitblt... | 0.8 |
|
||||||
| Uthernet.DRV | Working | | 0.9 |
|
| Uthernet.DRV | Working | | 0.9 |
|
||||||
|
@ -135,7 +135,7 @@ DevMgr.NUL .DA DevMgr.NUL.Code
|
|||||||
.HS 00 NAME must Be 4 bytes long
|
.HS 00 NAME must Be 4 bytes long
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
DevMgr.SYS .DA DevMgr.SYS.Code
|
DevMgr.SYS .DA DevMgr.SYS.Code
|
||||||
.DA #S.DEV.S.WRITE+S.DEV.S.READ+3
|
.DA #S.DEV.S.WRITE+S.DEV.S.READ
|
||||||
.DA #3
|
.DA #3
|
||||||
.AS "SYS" NAME
|
.AS "SYS" NAME
|
||||||
.HS 00 NAME must Be 4 bytes long
|
.HS 00 NAME must Be 4 bytes long
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
PR#3
|
PR#3
|
||||||
PREFIX /A2OSX.SRC
|
PREFIX /A2OSX.SRC
|
||||||
NEW
|
LOMEM $A00
|
||||||
INC 1
|
INC 1
|
||||||
AUTO 6
|
AUTO 6
|
||||||
.LIST OFF
|
.LIST OFF
|
||||||
@ -61,13 +61,9 @@ K.IrqHandler >LDYAI DevMgr.Table
|
|||||||
|
|
||||||
ldx DevMgr.Count
|
ldx DevMgr.Count
|
||||||
|
|
||||||
.1 lda ($fe) End Of Table ?
|
.1 ldy #S.DEV.S
|
||||||
sec
|
|
||||||
beq .8
|
|
||||||
|
|
||||||
ldy #S.DEV.F
|
|
||||||
lda ($fe),y
|
lda ($fe),y
|
||||||
and #S.DEV.F.IRQ
|
and #S.DEV.S.IRQ
|
||||||
beq .2
|
beq .2
|
||||||
|
|
||||||
phx
|
phx
|
||||||
@ -75,11 +71,13 @@ K.IrqHandler >LDYAI DevMgr.Table
|
|||||||
plx
|
plx
|
||||||
bcc .8 CC, IRQ cleared by device
|
bcc .8 CC, IRQ cleared by device
|
||||||
|
|
||||||
.2 lda $fe CS,
|
.2 lda $fe
|
||||||
adc #S.DEV-1
|
clc
|
||||||
|
adc #S.DEV
|
||||||
sta $fe
|
sta $fe
|
||||||
bcc .3
|
bcc .3
|
||||||
inc $ff
|
inc $ff
|
||||||
|
|
||||||
.3 dex
|
.3 dex
|
||||||
bne .1
|
bne .1
|
||||||
|
|
||||||
@ -87,8 +85,13 @@ K.IrqHandler >LDYAI DevMgr.Table
|
|||||||
|
|
||||||
.8 rts
|
.8 rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
K.IrqHandlerJMP ldx #DEVMGR.READ
|
K.IrqHandlerJMP lda ($fe)
|
||||||
jmp ($fe)
|
sta .1+1
|
||||||
|
ldy #1
|
||||||
|
lda ($fe),y
|
||||||
|
sta .1+2
|
||||||
|
ldx #DEVMGR.IRQ
|
||||||
|
.1 jmp $ffff
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
MAN
|
MAN
|
||||||
SAVE SYS/KERNEL.S.IRQ
|
SAVE SYS/KERNEL.S.IRQ
|
||||||
|
Loading…
Reference in New Issue
Block a user