mirror of
https://github.com/A2osX/A2osX.git
synced 2024-06-07 01:29:33 +00:00
Kernel version 0.9 : Bugfix in IRQ,VBL & MOUSE DRIVER
This commit is contained in:
parent
4841e57d46
commit
77e3328220
|
@ -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"
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
*--------------------------------------
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
*--------------------------------------
|
||||
|
|
|
@ -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
|
||||
*--------------------------------------
|
||||
|
|
|
@ -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
|
||||
*--------------------------------------
|
||||
|
|
|
@ -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
|
||||
*--------------------------------------
|
||||
|
|
|
@ -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
|
||||
*--------------------------------------
|
||||
|
|
|
@ -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.
|
@ -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
|
||||
|
|
|
@ -43,11 +43,6 @@ LIB.UNLOAD clc
|
|||
|
||||
*--------------------------------------
|
||||
InitGFXA sta hDev
|
||||
>SYSCALL GetDevInfoA
|
||||
bcs .9
|
||||
>STYA ZPPtr1
|
||||
|
||||
|
||||
clc
|
||||
rts
|
||||
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
*--------------------------------------
|
||||
|
|
|
@ -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
|
||||
*--------------------------------------
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
||||
|
|
|
@ -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
|
||||
|
|
Loading…
Reference in New Issue
Block a user