Kernel version 0.9 : Bugfix in IRQ,VBL & MOUSE DRIVER

This commit is contained in:
Rémy GIBERT 2017-06-02 17:14:42 +02:00
parent 4841e57d46
commit 77e3328220
22 changed files with 281 additions and 245 deletions

View File

@ -829,7 +829,7 @@ EscSeqParam .BS 4
STAT .DA #S.DEVSTAT.S.WRITE+S.DEVSTAT.S.READ
.DA #0,#0,#0
>PSTR "ANSI 80c Console"
.DA #S.DEVSTAT.TYPE.CHAR
.DA #S.DEVSTAT.T.CHAR
.DA #0
.DA $0900
ENQ.String >CSTR "A2osXTERM"

View File

@ -10,14 +10,14 @@ AUTO 6
*--------------------------------------
.INB /A2OSX.BUILD/INC/MACROS.I
.INB /A2OSX.BUILD/INC/A2OSX.I
.INB /A2OSX.BUILD/INC/PRODOS.I
.INB /A2OSX.BUILD/INC/MLI.ERR.I
.INB /A2OSX.BUILD/INC/IO.I
.INB /A2OSX.BUILD/INC/LIBGFX.I
*--------------------------------------
ZPBase .EQ ZPDRV
ZPShiftLo .EQ ZPDRV+2
ZPShiftHi .EQ ZPDRV+4
ZPCtrlBlk .EQ ZPDRV+8 limited to 8 bytes for now...have to modify kernel
ZPCtrlBlk .EQ ZPDRV+8
*--------------------------------------
* File Header (16 Bytes)
*--------------------------------------
@ -124,29 +124,31 @@ Dev.Detect >LDYA L.MSG.DETECT
clc
rts
CS.END
MSG.DETECT >CSTR "\nApple IIe/IIc DHGR Driver.\n"
MSG.DETECT >CSTR "Apple IIe/IIc DHGR Driver.\r\n"
*--------------------------------------
* Device Header (16 Bytes)
*--------------------------------------
DEV.HEADER .DA DRV.CS.START
DEV.HEADER cld
jmp (DRV.CS.START,x)
.DA #0
>PSTR "GFX" NAME
.HS 00 NAME must Be 5 bytes long
.BS 6
DEV.HEADER.NAME >PSTR "GFX"
.BS 1
*--------------------------------------
* Driver Code
*--------------------------------------
DRV.CS.START cld
jmp (.1,x)
.1 .DA STATUS
.DA BADCALL
DRV.CS.START .DA STATUS
.DA BADCALL
.DA BADCALL
.DA BADCALL
.DA CONTROL
.DA BADCALL
.DA OPEN
.DA CLOSE
.DA BADCALL
.DA BADCALL
.DA BADCALL
*--------------------------------------
.DA SETPIXEL
.DA GETPIXEL
.DA HLINE
@ -157,7 +159,8 @@ DRV.CS.START cld
.DA SETCUR
.DA HIDECUR
.DA SHOWCUR
L.DEVSTAT .DA DEVSTAT
*--------------------------------------
L.STAT .DA STAT
L.DIV7.0 .DA DIV7.0
L.MOD7.0 .DA MOD7.0
L.Shift0.Lo .DA Shift0.lo
@ -168,7 +171,7 @@ BADCALL lda #MLI.ERR.BADCALL
sec
rts
*--------------------------------------
STATUS >LDYA L.DEVSTAT
STATUS >LDYA L.STAT
clc
rts
*--------------------------------------
@ -599,7 +602,7 @@ Shift5.hi .BS 128
Shift6.lo .BS 128
Shift6.hi .BS 128
*--------------------------------------
.INB DRV/DHGR.DRV.T
.INB /A2OSX.SRC/DRV/DHGR.DRV.T
*--------------------------------------
DIV7.hi .BS 3
MOD7.lo .BS 3
@ -628,22 +631,21 @@ SB.Page .BS 1
SB.StartCol .BS 1
SB.Col .BS 1
*--------------------------------------
DEVSTAT .DA #0
.DA #0,#0,#0 size
>PSTR "Apple II Mouse"
.BS 2
.DA #0
STAT .DA #0
.DA #0,#0,#0
>PSTR "Apple II DHGR"
.BS 3
.DA #S.DEVSTAT.T.GFX
.DA #0
.DA $0900
*--------------------------------------
DEVSTAT.MODES .DA #%10000011 XOR,16 & B/W
DEVSTAT.W .DA 560 X.SIZE
DEVSTAT.H .DA 192 Y.SIZE
.LIST ON
*--------------------------------------
DRV.SIZE .EQ *-DRV.CS.START
*--------------------------------------
.LIST OFF
MAN
SAVE DRV/DHGR.DRV.S
SAVE /A2OSX.SRC/DRV/DHGR.DRV.S
ASM

View File

@ -185,6 +185,6 @@ BASEH .HS 20.24.28.2C.30.34.38.3C
.HS 23.27.2B.2F.33.37.3B.3F
*--------------------------------------
MAN
SAVE DRV/DHGR.DRV.T
LOAD DRV/DHGR.DRV.S
SAVE /A2OSX.SRC/DRV/DHGR.DRV.T
LOAD /A2OSX.SRC/DRV/DHGR.DRV.S
ASM

View File

@ -444,7 +444,7 @@ DEVSTAT .DA #0
.BS 3 size
>PSTR "LanCEGS/L91C96"
.BS 1
.DA #S.DEVSTAT.TYPE.NET
.DA #S.DEVSTAT.T.NET
.BS 1 Subtype
.BS 2 Version
*--------------------------------------

View File

@ -129,26 +129,25 @@ DEVSIG.Value .HS 38180120D6
*--------------------------------------
* Device Header (16 Bytes)
*--------------------------------------
DEV.HEADER .DA DRV.CS.START
DEV.HEADER cld
jmp (DRV.CS.START,x)
.DA #0
DEV.HEADER.NAME >PSTR "MOUx"
.BS 6
DEV.HEADER.NAME >PSTR "MOUX"
*--------------------------------------
* Driver Code
*--------------------------------------
DRV.CS.START cld
jmp (.1,x)
.1 .DA STATUS
DRV.CS.START .DA STATUS
.DA READBLOCK
.DA BADCALL
.DA BADCALL
.DA BADCALL
.DA CONTROL
.DA BADCALL
.DA OPEN
.DA CLOSE
.DA BADCALL
.DA BADCALL
L.DEVSTAT .DA DEVSTAT
L.READBLOCK.FLAGS .DA READBLOCK.FLAGS
.DA 0 end or relocation
*--------------------------------------
BADCALL lda #MLI.ERR.BADCALL
@ -159,6 +158,115 @@ STATUS >LDYA L.DEVSTAT
clc
rts
*--------------------------------------
READBLOCK >STYA ZPTmpPtr1
lda #0
sta (ZPTmpPtr1) Reset Flags
php
sei
* ldy #READMOUSE DONE BY IRQ MANAGER
* jsr GOMOUSE
ldx DEVSLOT0n
lda MOUSESTSx,x
and #MOUSESTSx.DOWN+MOUSESTSx.LDOWN
beq .3 no button state change:up & previously up
cmp #MOUSESTSx.DOWN+MOUSESTSx.LDOWN
beq .3 no button state change:down & previously down
asl if CS, down & previously up
bcc .1
lda #EVENT.MOUSEUP
bra .2
.1 lda #EVENT.MOUSEDOWN
.2 sta (ZPTmpPtr1)
.3 lda MOUSESTSx,x
and #MOUSESTSx.MOVED
beq .4
lda (ZPTmpPtr1)
ora #EVENT.MOUSEMOVE
sta (ZPTmpPtr1)
.4 ldy #1
lda MOUSEXLOx,x
sta (ZPTmpPtr1),y
iny
lda MOUSEXHIx,x
sta (ZPTmpPtr1),y
iny
lda MOUSEYLOx,x
sta (ZPTmpPtr1),y
iny
lda MOUSEYHIx,x
sta (ZPTmpPtr1),y
plp
lda (ZPTmpPtr1)
beq .9
clc
rts
.9 lda #MLI.ERR.EOF
sec
rts
*--------------------------------------
CONTROL >STYA ZPTmpPtr1
php
sei
ldy #0
ldx #0 set X
jsr CONTROL.SETCLAMP
ldy #4
ldx #1 set Y
jsr CONTROL.SETCLAMP
ldy #HOMEMOUSE
jsr GOMOUSE
plp
clc
rts
*--------------------------------------
CONTROL.SETCLAMP
lda (ZPTmpPtr1),y
sta LOCLAMPLO
iny
lda (ZPTmpPtr1),y
sta LOCLAMPHI
iny
lda (ZPTmpPtr1),y
sta HICLAMPLO
iny
lda (ZPTmpPtr1),y
sta HICLAMPHI
txa
ldy #CLAMPMOUSE
jsr GOMOUSE
rts
*--------------------------------------
OPEN php
sei
@ -172,92 +280,11 @@ OPEN php
ldy #INITMOUSE Reset
jsr GOMOUSE
stz LOCLAMPLO
stz LOCLAMPHI
lda #559
sta HICLAMPLO
lda /559
sta HICLAMPHI
lda #0 set X
ldy #CLAMPMOUSE
jsr GOMOUSE
stz LOCLAMPLO
stz LOCLAMPHI
lda #191
sta HICLAMPLO
lda /191
sta HICLAMPHI
lda #1 set Y
ldy #CLAMPMOUSE
jsr GOMOUSE
ldy #HOMEMOUSE
jsr GOMOUSE
plp
clc
rts
*--------------------------------------
READBLOCK php
sei
ldy #READMOUSE
jsr GOMOUSE
stz READBLOCK.FLAGS
ldx DEVSLOT0n
lda MOUSESTSx,x
and #MOUSESTSx.DOWN+MOUSESTSx.LDOWN
beq .3 no button state change:up & previously up
cmp #MOUSESTSx.DOWN+MOUSESTSx.LDOWN
beq .3 no button state change:down & previously down
asl if CS, down & previoulsy up
bcc .1
lda #EVENT.MOUSEUP
bra .2
.1 lda #EVENT.MOUSEDOWN
.2 sta READBLOCK.FLAGS
.3 lda MOUSESTSx,x
and #MOUSESTSx.MOVED
beq .4
lda READBLOCK.FLAGS
ora #EVENT.MOUSEMOVE
sta READBLOCK.FLAGS
.4 lda MOUSEXLOx,x
sta READBLOCK.XY
lda MOUSEXHIx,x
sta READBLOCK.XY+1
lda MOUSEYLOx,x
sta READBLOCK.XY+2
lda MOUSEYHIx,x
sta READBLOCK.XY+3
plp
lda READBLOCK.FLAGS
beq .9
clc
rts
.9 lda #MLI.ERR.EOF
sec
rts
*--------------------------------------
CLOSE php
sei
ldx DEVSLOT0n
@ -290,13 +317,10 @@ DEVSTAT .DA #0
.DA #0,#0,#0 size
>PSTR "Apple II Mouse"
.BS 2
.DA #S.DEVSTAT.TYPE.XY
.DA #S.DEVSTAT.T.XY
.DA #0
.DA $0900
*--------------------------------------
READBLOCK.FLAGS .BS 1
READBLOCK.XY .BS 4
*--------------------------------------
MAN
SAVE DRV/MOUSE.DRV.S
SAVE /A2OSX.SRC/DRV/MOUSE.DRV.S
ASM

View File

@ -155,7 +155,7 @@ STAT .DA #S.DEVSTAT.S.WRITE
.DA #0,#0,#0
>PSTR "Parallel Card"
.DA #0,#0,#0
.DA #S.DEVSTAT.TYPE.CHAR
.DA #S.DEVSTAT.T.CHAR
.DA #0
.DA $0900
*--------------------------------------

View File

@ -205,7 +205,7 @@ DEVSLOTn0 .BS 1
STAT .DA #S.DEVSTAT.S.WRITE+S.DEVSTAT.S.READ
.DA #0,#0,#0
>PSTR "Serial Card/Port"
.DA #S.DEVSTAT.TYPE.CHAR
.DA #S.DEVSTAT.T.CHAR
.DA #0
.DA $0900
*--------------------------------------

View File

@ -325,7 +325,7 @@ OUTBUF .BS BUF.SIZE
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 #S.DEVSTAT.T.CHAR
.DA #0
.DA $0900
*--------------------------------------

View File

@ -510,7 +510,7 @@ DEVSLOTx0 .BS 1
DEVSTAT .DA #0
.BS 3 size
>PSTR "UtherNetII/W5100"
.DA #S.DEVSTAT.TYPE.NET
.DA #S.DEVSTAT.T.NET
.BS 1 Subtype
.BS 2 Version
*--------------------------------------

View File

@ -448,7 +448,7 @@ DEVSLOTx0 .BS 1
DEVSTAT .DA #0
.BS 3 size
>PSTR "Uthernet/CS8900A"
.DA #S.DEVSTAT.TYPE.NET
.DA #S.DEVSTAT.T.NET
.BS 1 Subtype
.BS 2 Version
*--------------------------------------

View File

@ -396,7 +396,7 @@ DEVSLOTx0 .BS 1
DEVSTAT .DA #0
.BS 3 size
>PSTR "UtherNetII/W5100"
.DA #S.DEVSTAT.TYPE.NET
.DA #S.DEVSTAT.T.NET
.BS 1 Subtype
.BS 2 Version
*--------------------------------------

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -326,14 +326,6 @@ S.MEMSTAT.DH .EQ 20
*
S.MEMSTAT .EQ 24
*--------------------------------------
* 'GFX' Class Driver Functions
*--------------------------------------
*DEVMGR.GFX.SETPIXEL .EQ 14
*DEVMGR.GFX.GETPIXEL .EQ 16
*DEVMGR.GFX.HLINE .EQ 18
*DEVMGR.GFX.VLINE .EQ 20
*DEVMGR.GFX.BITBLT .EQ 22
*--------------------------------------
* DEVMGR (new API) = Smartport
*--------------------------------------
* JMP : (A=Device)
@ -375,6 +367,14 @@ DEVMGR.READ .EQ 16
DEVMGR.WRITE .EQ 18
DEVMGR.IRQ .EQ 20
*--------------------------------------
* 'GFX' Class Driver Functions
*--------------------------------------
DEVMGR.GFX.SETPIXEL .EQ 22
DEVMGR.GFX.GETPIXEL .EQ 24
DEVMGR.GFX.HLINE .EQ 26
DEVMGR.GFX.VLINE .EQ 28
DEVMGR.GFX.BITBLT .EQ 30
*--------------------------------------
S.DEVSTAT.S .EQ 0
S.DEVSTAT.S.BLOCK .EQ %10000000
S.DEVSTAT.S.WRITE .EQ %01000000
@ -386,28 +386,29 @@ S.DEVSTAT.S.IRQ .EQ %00000010
S.DEVSTAT.S.OPENED .EQ %00000001
S.DEVSTAT.SIZE .EQ 1 3 bytes
S.DEVSTAT.IDSTRING .EQ 4 1 (LEN) + 16 MAX
S.DEVSTAT.TYPE .EQ 21
S.DEVSTAT.TYPE.RAM .EQ $00 Memory Expansion Card (RAM disk)
S.DEVSTAT.TYPE.3.5 .EQ $01 3.5" disk
S.DEVSTAT.TYPE.PROFILE .EQ $02 ProFile-type hard disk
S.DEVSTAT.TYPE.GENSCSI .EQ $03 Generic SCSI
S.DEVSTAT.TYPE.ROM .EQ $04 ROM disk
S.DEVSTAT.TYPE.CDROM .EQ $05 SCSI CD-ROM
S.DEVSTAT.TYPE.TAPE .EQ $06 SCSI tape or other SCSI sequential device
S.DEVSTAT.TYPE.HD .EQ $07 SCSI hard disk
S.DEVSTAT.T .EQ 21
S.DEVSTAT.T.RAM .EQ $00 Memory Expansion Card (RAM disk)
S.DEVSTAT.T.3.5 .EQ $01 3.5" disk
S.DEVSTAT.T.PROFILE .EQ $02 ProFile-type hard disk
S.DEVSTAT.T.GENSCSI .EQ $03 Generic SCSI
S.DEVSTAT.T.ROM .EQ $04 ROM disk
S.DEVSTAT.T.CDROM .EQ $05 SCSI CD-ROM
S.DEVSTAT.T.TAPE .EQ $06 SCSI tape or other SCSI sequential device
S.DEVSTAT.T.HD .EQ $07 SCSI hard disk
* .EQ $08 Reserved
S.DEVSTAT.TYPE.SPRINTER .EQ $09 SCSI printer
S.DEVSTAT.TYPE.5.25 .EQ $0A 5-1/4" disk
S.DEVSTAT.T.SPRINTER .EQ $09 SCSI printer
S.DEVSTAT.T.5.25 .EQ $0A 5-1/4" disk
* .EQ $0B Reserved
* .EQ $0C Reserved
S.DEVSTAT.TYPE.PRINTER .EQ $0D Printer
S.DEVSTAT.TYPE.CLOCK .EQ $0E Clock
S.DEVSTAT.TYPE.MODEM .EQ $0F Modem
S.DEVSTAT.TYPE.DISKII .EQ $10
S.DEVSTAT.TYPE.PRODOS .EQ $11
S.DEVSTAT.TYPE.NET .EQ $12 Network board
S.DEVSTAT.TYPE.XY .EQ $13 X,Y Pointing Device
S.DEVSTAT.TYPE.CHAR .EQ $14
S.DEVSTAT.T.PRINTER .EQ $0D Printer
S.DEVSTAT.T.CLOCK .EQ $0E Clock
S.DEVSTAT.T.MODEM .EQ $0F Modem
S.DEVSTAT.T.DISKII .EQ $10
S.DEVSTAT.T.PRODOS .EQ $11
S.DEVSTAT.T.NET .EQ $12 Network board
S.DEVSTAT.T.XY .EQ $13 X,Y Pointing Device
S.DEVSTAT.T.CHAR .EQ $14
S.DEVSTAT.T.GFX .EQ $15
S.DEVSTAT.SUBTYPE .EQ 22
S.DEVSTAT.SUBTYPE.EXT .EQ $80
S.DEVSTAT.SUBTYPE.DSKSW .EQ $40

View File

@ -43,11 +43,6 @@ LIB.UNLOAD clc
*--------------------------------------
InitGFXA sta hDev
>SYSCALL GetDevInfoA
bcs .9
>STYA ZPPtr1
clc
rts

View File

@ -13,6 +13,8 @@ AUTO 6
.INB /A2OSX.BUILD/INC/A2OSX.I
.INB /A2OSX.BUILD/INC/LIBGFX.I
*--------------------------------------
ZPPtr1 .EQ ZPBIN
*--------------------------------------
* File Header (16 Bytes)
*--------------------------------------
CS.START cld
@ -35,6 +37,8 @@ L.LIBGFX .DA LIBGFX
L.DEVNAME.GFX .DA DEVNAME.GFX
L.DEVNAME.MOUSE .DA DEVNAME.MOUSE
L.MSG.INIT .DA MSG.INIT
L.MouseClamp .DA MouseClamp
L.MouseData .DA MouseData
L.SetPixel.X .DA SetPixel.X
L.DrawLine.X1 .DA DrawLine.X1
.DA 0
@ -53,14 +57,9 @@ CS.INIT >LDYA L.MSG.INIT
.10 stx hDevGFX
ldx pDev
phx
ldx pDev+1
phx
>STYA GoDevGFX+1
>STYA pDev
txa
ldx #DEVMGR.OPEN
jsr GoDevGFX
@ -76,21 +75,37 @@ CS.INIT >LDYA L.MSG.INIT
.20 stx hDevMouse
>STYA GoDevMouse+1
>STYA pDev
ldx #DEVMGR.OPEN
jsr GoDevMouse
ldx #DEVMGR.SELECT Mouse driver disturb graphic mode....
ldx #DEVMGR.CONTROL Mouse driver disturb graphic screen....
jsr GoDevGFX
ldx #DEVMGR.STATUS get graphic mode and resolution....
jsr GoDevGFX
.21 pla
sta pDev+1
pla
sta pDev
>STYA ZPPtr1
ldy #S.DEVSTAT+1
lda (ZPPtr1),y
sta MouseClamp+2
iny
lda (ZPPtr1),y
sta MouseClamp+3
lda hDevGFX
iny
lda (ZPPtr1),y
sta MouseClamp+6
iny
lda (ZPPtr1),y
sta MouseClamp+7
>LDYA L.MouseClamp
ldx #DEVMGR.CONTROL
jsr GoDevMouse
.21 lda hDevGFX
>LIBCALL hLibGFX,LIBGFX.InitGFXA
lda (pPs)
@ -102,37 +117,35 @@ CS.INIT >LDYA L.MSG.INIT
clc
rts
*--------------------------------------
CS.RUN clc
rts
*--------------------------------------
CS.DOEVENT ldy #S.EVT.hDEV
CS.RUN ldy #S.EVT.hDEV
lda hDevMouse Mouse is active ?
beq .1 go check KB
cmp (pEvent),y Event coming from Mouse ?
bne .1 go check KB
lda A2osX.ASCREEN GUI screen active ?
cmp #3
bne .98 no, discard mouse event & exit
bne .8 no, exit....
ldy #S.EVT.DATALO
lda (pEvent),y
and #4 mouse move
beq .98
lda hDevMouse Mouse is active ?
beq .4 go check KB
ldy #S.EVT.DATAW2
lda (pEvent),y
sta SetPixel.Y
>LDYA L.MouseData
ldx #DEVMGR.READBLOCK
jsr GoDevMouse
bcs .4 go check KB
lda MouseData
bit #4 mouse move
beq .1
dey
lda (pEvent),y X.HI
lda MouseData+1
sta SetPixel.X
lda MouseData+2
sta SetPixel.X+1
dey
lda (pEvent),y X.LO
sta SetPixel.X
lda MouseData+3
sta SetPixel.Y
lda MouseData+4
sta SetPixel.Y+1
lda #4
sta SetPixel.Mode
@ -143,20 +156,23 @@ CS.DOEVENT ldy #S.EVT.hDEV
>LDYA L.SetPixel.X
ldx #DEVMGR.GFX.SETPIXEL
jsr GoDevGFX
.98 clc Mark event proceeded
clc
rts
.1 bit #$20
beq .4
jsr Destop.Paint
.1 lda A2osX.ASCREEN GUI screen active ?
cmp #3
bne .99 not for us...
sec
rts
.99 sec
.4
.8 clc
rts
*--------------------------------------
CS.DOEVENT sec
rts
*--------------------------------------
CS.QUIT clc
rts
*--------------------------------------
@ -215,10 +231,12 @@ CS.END
DEVNAME.GFX >PSTR "GFX"
DEVNAME.MOUSE >PSTR "MOU1"
LIBGFX >PSTR "libgfx.o"
MSG.INIT >CSTR "DESKTOP:Init...\n"
MSG.INIT >CSTR "DESKTOP:Init...\r\n"
hLibGFX .BS 1
hDevGFX .BS 1
hDevMouse .BS 1
MouseClamp .BS 8
MouseData .BS 5
SetPixel.X .BS 2
SetPixel.Y .BS 2
SetPixel.Mode .BS 1

View File

@ -90,7 +90,7 @@ DevMgr.NUL.Code .DA .1 STATUS
.2 .DA #S.DEV.S.WRITE+S.DEV.S.READ
.DA #0,#0,#0
>PSTR "NULL DEVICE "
.DA #S.DEVSTAT.TYPE.CHAR
.DA #S.DEVSTAT.T.CHAR
.DA #0
.DA $0900
*--------------------------------------
@ -112,7 +112,7 @@ DevMgr.SYS.Code .DA .1 STATUS
.2 .DA #S.DEV.S.WRITE+S.DEV.S.READ
.DA #0,#0,#0
>PSTR "A2osX SYS Screen"
.DA #S.DEVSTAT.TYPE.CHAR
.DA #S.DEVSTAT.T.CHAR
.DA #0
.DA $0900
*--------------------------------------

View File

@ -131,7 +131,7 @@ A2osx.DIIStat .DA #S.DEVSTAT.S.BLOCK+S.DEVSTAT.S.WRITE+S.DEVSTAT.S.READ
.DA #0
>PSTR "Disk II 5.25"
.BS 4
.DA #S.DEVSTAT.TYPE.DISKII
.DA #S.DEVSTAT.T.DISKII
.DA #0
.DA #0,#9
*--------------------------------------
@ -187,7 +187,7 @@ A2osX.BlkDrv.Go ldy #S.DEV.ROM.JMP
A2osX.BlkStat .DA #S.DEVSTAT.S.BLOCK+S.DEVSTAT.S.WRITE+S.DEVSTAT.S.READ
.BS 3
>PSTR "ProDOS Block Dev"
.DA #S.DEVSTAT.TYPE.PRODOS
.DA #S.DEVSTAT.T.PRODOS
.DA #0
.DA #0,#9
*--------------------------------------

View File

@ -170,11 +170,11 @@ IrqMgrInit php
lda #$C1
sta ZPPtr1+1
.1 ldx #DEVSIG.Value-DEVSIG.Offset-1
.1 ldx #Mouse.SIG-Mouse.OFS-1
.2 ldy DEVSIG.Offset,x
.2 ldy Mouse.OFS,x
lda (ZPPtr1),y
cmp DEVSIG.Value,x
cmp Mouse.SIG,x
bne .3
dex
bpl .2
@ -194,17 +194,17 @@ IrqMgrInit php
rts
.4 lda ZPPtr1+1
sta GOMOUSE.JMP+2 DEVSLOTCn
sta K.IrqMgrVBL.MSM+2
sta K.IrqMgrVBL.MRM+2
and #$0f
sta K.IrqMgrVBL.0n
asl
asl
asl
asl
sta GOMOUSE.n0+1
sta K.IrqMgrVBL.n0
ldy #SERVEMOUSE
@ -217,12 +217,17 @@ IrqMgrInit php
bit RROMBNK2 Renable ROM to allow MOUSE II firmware works properly
ldx K.IrqMgrVBL.0n
lda $7F8,x
and #$0F
ora #9
ldy #SETMOUSE
jsr GOMOUSE
lda (ZPPtr1),y
sta .7+1
lda #9 #MOUSEMODx.INTVBL+MOUSEMODx.ACTIVE
ldx ZPPtr1+1 DEVSLOTCn
stx .7+2
ldy K.IrqMgrVBL.n0
.7 jsr $ffff self Modified, CALL SETMOUSE
bcs *
bit RRAMWRAMBNK1 Back To LC Ram
@ -234,18 +239,8 @@ IrqMgrInit php
clc
rts
*--------------------------------------
GOMOUSE pha
stz ZPPtr1
ldx GOMOUSE.JMP+2 DEVSLOTCn
stx ZPPtr1+1
lda (ZPPtr1),y
sta GOMOUSE.JMP+1
GOMOUSE.n0 ldy #$ff
pla
GOMOUSE.JMP jmp $ffff Self Modified
*--------------------------------------
DEVSIG.Offset .HS 05070B0CFB
DEVSIG.Value .HS 38180120D6
Mouse.OFS .HS 05070B0CFB
Mouse.SIG .HS 38180120D6
*--------------------------------------
DevMgrInit stz ZPPtr1
lda #$C1

View File

@ -55,7 +55,9 @@ K.IrqMgr.Y .BS 1
K.IrkMgr.VBL .BS 1
K.IrkMgr.VBLINT .BS 1
*--------------------------------------
* Called by ProDOS IRQ Manager (GP)
* Called by :
* Kernel IrqHandlerAuxLC
* ProDOS IRQ Manager (GP)
*--------------------------------------
K.IrqHandler lda K.IrkMgr.VBL
beq .10 0, totally disabled....
@ -74,8 +76,9 @@ K.IrqHandler lda K.IrkMgr.VBL
inc K.IrkMgr.VBLINT
lda #$80
sta K.IrkMgr.VBL Confirm VBL signal valid for EvtMgr
lda SYS.BASL0+37
eor #'V'
sta SYS.BASL0+37 Confirm VBL signal valid for EvtMgr
clc
rts
@ -85,25 +88,25 @@ K.IrqHandler lda K.IrkMgr.VBL
ldx DevMgr.Count
.1 ldy #S.DEV.S
.4 ldy #S.DEV.S
lda ($fe),y
and #S.DEV.S.IRQ
beq .2
beq .6
phx
jsr K.IrqHandlerJMP
plx
bcc .8 CC, IRQ cleared by device
.2 lda $fe
.6 lda $fe
clc
adc #S.DEV
sta $fe
bcc .3
bcc .7
inc $ff
.3 dex
bne .1
.7 dex
bne .4
sec

View File

@ -40,19 +40,17 @@ K.KernelRun jsr TSK.TskMgrRun
.4 lda A2osX.ASCREEN
cmp #2 is SYS active?
bne .42
lda K.IrkMgr.VBL if verified = $80
bne .6
ldx SYS.CPULOADI
ora SYS.CPULOADC,x
lda SYS.CPULOADC,x
sta SYS.BASL0+38
dex
bpl .41
bpl .5
ldx #3
.41 stx SYS.CPULOADI
.5 stx SYS.CPULOADI
.42 bit OPENAPPLE
.6 bit OPENAPPLE
bpl K.KernelRun
lda KBD