mirror of https://github.com/A2osX/A2osX.git
MOUSE.DRV working,DHGR.DRV color mode with bugs
This commit is contained in:
parent
87bb6efe1f
commit
2192ead073
BIN
A2OSX.BUILD.HDV
BIN
A2OSX.BUILD.HDV
Binary file not shown.
|
@ -19,5 +19,6 @@ EXEC DHCPCLNT
|
|||
*MOUNT TFTP 192.168.1.5:/AO2SX /TFTP
|
||||
LOAD DHGR.DRV
|
||||
LOAD MOUSE.DRV
|
||||
EXEC GUI
|
||||
MAN
|
||||
TEXT A2OSX.STARTUP
|
||||
|
|
|
@ -63,6 +63,9 @@ OPEN stz CURON
|
|||
.8 lda A2osX.SCREENS
|
||||
ora #A2osX.SCREENS.C
|
||||
sta A2osX.SCREENS
|
||||
|
||||
lda #A2osX.SCREENS.C
|
||||
>SYSCALL SYS.ScreenSelectA
|
||||
|
||||
clc
|
||||
rts
|
||||
|
@ -298,7 +301,11 @@ SetCharAtXY pha
|
|||
.4 sta CLRPAGE2
|
||||
rts
|
||||
*--------------------------------------
|
||||
GetCharAtXY sta SET80STORE
|
||||
GetCharAtXY lda RDPAGE2
|
||||
pha
|
||||
lda RD80STORE
|
||||
pha
|
||||
sta SET80STORE
|
||||
txa
|
||||
lsr
|
||||
|
||||
|
@ -314,7 +321,19 @@ GetCharAtXY sta SET80STORE
|
|||
sta ZPBASL1+1
|
||||
|
||||
lda (ZPBASL1)
|
||||
|
||||
plx
|
||||
bmi .3
|
||||
sta CLR80STORE
|
||||
|
||||
.3 plx
|
||||
bpl .4
|
||||
|
||||
sta SETPAGE2
|
||||
rts
|
||||
|
||||
.4 sta CLRPAGE2
|
||||
rts
|
||||
*--------------------------------------
|
||||
CS.END
|
||||
DEVNAME >PSTRING "CON"
|
||||
|
|
|
@ -46,8 +46,7 @@ L.DEVINFO .DA DEVINFO
|
|||
.DA CS.END-CS.START Code Length To Relocate
|
||||
.DA DS.END-DS.START Data Segment to Allocate
|
||||
*--------------------------------------
|
||||
OPEN
|
||||
lda #S.DEV.F.GFX
|
||||
OPEN lda #S.DEV.F.GFX
|
||||
sta (pDevContext)
|
||||
|
||||
ldy #S.DEV.NAME
|
||||
|
@ -60,10 +59,68 @@ OPEN
|
|||
iny
|
||||
bne .1
|
||||
|
||||
|
||||
.8 lda A2osX.SCREENS
|
||||
ora #A2osX.SCREENS.G
|
||||
sta A2osX.SCREENS
|
||||
|
||||
lda #A2osX.SCREENS.G
|
||||
>SYSCALL SYS.ScreenSelectA
|
||||
|
||||
sta SET80STORE
|
||||
ldx #192
|
||||
|
||||
.81 dex
|
||||
|
||||
lda BASEL,x
|
||||
sta ZPBASE
|
||||
lda BASEH,x
|
||||
sta ZPBASE+1
|
||||
|
||||
lda #$D5
|
||||
|
||||
ldy #39
|
||||
sta SETPAGE2
|
||||
.82 sta (ZPBASE),y
|
||||
dey
|
||||
bpl .82
|
||||
|
||||
lda #$AA
|
||||
|
||||
ldy #39
|
||||
sta CLRPAGE2
|
||||
.83 sta (ZPBASE),y
|
||||
dey
|
||||
bpl .83
|
||||
|
||||
dex
|
||||
|
||||
lda BASEL,x
|
||||
sta ZPBASE
|
||||
lda BASEH,x
|
||||
sta ZPBASE+1
|
||||
|
||||
lda #$2A
|
||||
|
||||
ldy #39
|
||||
sta SETPAGE2
|
||||
.84 sta (ZPBASE),y
|
||||
dey
|
||||
bpl .84
|
||||
|
||||
lda #$55
|
||||
|
||||
ldy #39
|
||||
sta CLRPAGE2
|
||||
.85 sta (ZPBASE),y
|
||||
dey
|
||||
bpl .85
|
||||
|
||||
txa
|
||||
bne .81
|
||||
|
||||
>DEBUG
|
||||
|
||||
clc
|
||||
rts
|
||||
*--------------------------------------
|
||||
|
@ -87,9 +144,9 @@ GETINFO >LDYA L.DEVINFO
|
|||
* PULLB = X.HI
|
||||
* PULLB = Y
|
||||
* PULLB = Mode
|
||||
* 00000000=mono
|
||||
* 00000001=xor (mono on 1 bit)
|
||||
* 10000000=color
|
||||
* 00000001=mono
|
||||
* 00000010=16 colors
|
||||
* 1000000=xor (mono on 1 bit)
|
||||
* PULLB = Color (if not xor)
|
||||
*--------------------------------------
|
||||
SETPIXEL >PULLA X.LO
|
||||
|
@ -99,18 +156,15 @@ SETPIXEL >PULLA X.LO
|
|||
bcs .1
|
||||
lsr
|
||||
bcs .2 if 512 < x
|
||||
lda DIV7.0,x
|
||||
tay
|
||||
ldy DIV7.0,x
|
||||
lda MOD7.0,x
|
||||
bra .3
|
||||
|
||||
.1 lda DIV7.256,x
|
||||
tay
|
||||
.1 ldy DIV7.256,x
|
||||
lda MOD7.256,x
|
||||
bra .3
|
||||
|
||||
.2 lda DIV7.512,x
|
||||
tay
|
||||
.2 ldy DIV7.512,x
|
||||
lda MOD7.512,x
|
||||
|
||||
.3 pha save MOD,y=DIV
|
||||
|
@ -123,15 +177,29 @@ SETPIXEL >PULLA X.LO
|
|||
sta ZPBASE+1
|
||||
|
||||
sta SET80STORE and prepare for page switching
|
||||
|
||||
sta SETHIRES
|
||||
plx get back MOD in x
|
||||
|
||||
>PULLA Pull Mode
|
||||
bmi SETPIXEL.COLOR
|
||||
and #$FF
|
||||
bpl SETPIXEL.SOLID
|
||||
|
||||
SETPIXEL.XOR tya
|
||||
lsr
|
||||
tay
|
||||
bcs .1 odd=main ram
|
||||
sta SETPAGE2
|
||||
bra .2
|
||||
.1 sta CLRPAGE2
|
||||
.2 lda (ZPBASE),y
|
||||
eor Mono.Masks,x
|
||||
sta (ZPBASE),y
|
||||
rts
|
||||
*--------------------------------------
|
||||
* X=MOD,Y=DIV
|
||||
* A=Mode,X=MOD,Y=DIV
|
||||
*--------------------------------------
|
||||
SETPIXEL.MONO pha
|
||||
SETPIXEL.SOLID dec
|
||||
bne SETPIXEL.COLOR
|
||||
tya
|
||||
lsr
|
||||
tay
|
||||
|
@ -139,29 +207,21 @@ SETPIXEL.MONO pha
|
|||
sta SETPAGE2
|
||||
bra .2
|
||||
.1 sta CLRPAGE2
|
||||
.2 pla
|
||||
lsr CS=xor
|
||||
bcs SETPIXEL.MONOX
|
||||
|
||||
>PULLA get COLOR
|
||||
|
||||
.2 >PULLA get COLOR
|
||||
lsr
|
||||
bcs SETPIXEL.MONOW
|
||||
bcs .3 set white pixel
|
||||
|
||||
lda (ZPBASE),y
|
||||
and Mono.NMasks,x
|
||||
and Mono.NMasks,x includes And $7F for mono
|
||||
sta (ZPBASE),y
|
||||
rts
|
||||
|
||||
SETPIXEL.MONOW lda (ZPBASE),y
|
||||
and #$7F switch back ths byte to mono
|
||||
.3 lda (ZPBASE),y
|
||||
and #$7F switch back this byte to mono
|
||||
ora Mono.Masks,x
|
||||
sta (ZPBASE),y
|
||||
rts
|
||||
|
||||
SETPIXEL.MONOX lda (ZPBASE),y
|
||||
eor Mono.Masks,x
|
||||
sta (ZPBASE),y
|
||||
rts
|
||||
*--------------------------------------
|
||||
* X=MOD,Y=DIV
|
||||
*--------------------------------------
|
||||
|
@ -245,8 +305,7 @@ FILLREC
|
|||
BITBLT
|
||||
rts
|
||||
*--------------------------------------
|
||||
* PRIVATE
|
||||
*--------------------------------------
|
||||
CS.END
|
||||
DIV7.0 .HS 0000000000000001010101010101
|
||||
.HS 0202020202020203030303030303
|
||||
.HS 0404040404040405050505050505
|
||||
|
@ -383,71 +442,71 @@ BASEH .HS 20.24.28.2C.30.34.38.3C
|
|||
.HS 23.27.2B.2F.33.37.3B.3F
|
||||
.HS 23.27.2B.2F.33.37.3B.3F
|
||||
*--------------------------------------
|
||||
Mono.NMasks .DA %01111110
|
||||
.DA %01111101
|
||||
.DA %01111011
|
||||
.DA %01110111
|
||||
.DA %01101111
|
||||
.DA %01011111
|
||||
.DA %00111111
|
||||
Mono.NMasks .DA #%01111110
|
||||
.DA #%01111101
|
||||
.DA #%01111011
|
||||
.DA #%01110111
|
||||
.DA #%01101111
|
||||
.DA #%01011111
|
||||
.DA #%00111111
|
||||
*--------------------------------------
|
||||
Mono.Masks .DA %00000001
|
||||
.DA %00000010
|
||||
.DA %00000100
|
||||
.DA %00001000
|
||||
.DA %00010000
|
||||
.DA %00100000
|
||||
.DA %01000000
|
||||
Mono.Masks .DA #%00000001
|
||||
.DA #%00000010
|
||||
.DA #%00000100
|
||||
.DA #%00001000
|
||||
.DA #%00010000
|
||||
.DA #%00100000
|
||||
.DA #%01000000
|
||||
*--------------------------------------
|
||||
* bits to "and" to reset color of pixel (0 means nothing to do)
|
||||
*--------------------------------------
|
||||
Color.NMasks .DA %01110000.00000000.00000000.00000000
|
||||
.DA %00001111.01111110.00000000.00000000
|
||||
.DA %00000000.01100001.00000000.00000000
|
||||
.DA %00000000.00011111.01111100.00000000
|
||||
.DA %00000000.00000000.01000011.00000000
|
||||
.DA %00000000.00000000.00111111.01111000
|
||||
.DA %00000000.00000000.00000000.00000111
|
||||
Color.NMasks .DA #%01110000,#%00000000,#%00000000,#%00000000
|
||||
.DA #%00001111,#%01111110,#%00000000,#%00000000
|
||||
.DA #%00000000,#%01100001,#%00000000,#%00000000
|
||||
.DA #%00000000,#%00011111,#%01111100,#%00000000
|
||||
.DA #%00000000,#%00000000,#%01000011,#%00000000
|
||||
.DA #%00000000,#%00000000,#%00111111,#%01111000
|
||||
.DA #%00000000,#%00000000,#%00000000,#%00000111
|
||||
*--------------------------------------
|
||||
* bits to "and" to Get color of pixel (0 means nothing to do)
|
||||
* 4 bytes * 7 mods
|
||||
*--------------------------------------
|
||||
Color.Masks .DA %00001111.00000000.00000000.00000000 (nothing to do)
|
||||
.DA %01110000.00000001.00000000.00000000 asl0,asl0,rol1,asl0,rol1,asl0,rol1
|
||||
.DA %00000000.00011110.00000000.00000000 lsr1
|
||||
.DA %00000000.01100000.00000011.00000000 asl1,asl1,rol2,asl1,rol2
|
||||
.DA %00000000.00000000.00111100.00000000 lsr2,lsr2
|
||||
.DA %00000000.00000000.01000000.00000111 asl2,asl2,rol3
|
||||
.DA %00000000.00000000.00000000.01111000 lsr3,lsr3,lsr3
|
||||
Color.Masks .DA #%00001111,#%00000000,#%00000000,#%00000000 (nothing to do)
|
||||
.DA #%01110000,#%00000001,#%00000000,#%00000000 asl0,asl0,rol1,asl0,rol1,asl0,rol1
|
||||
.DA #%00000000,#%00011110,#%00000000,#%00000000 lsr1
|
||||
.DA #%00000000,#%01100000,#%00000011,#%00000000 asl1,asl1,rol2,asl1,rol2
|
||||
.DA #%00000000,#%00000000,#%00111100,#%00000000 lsr2,lsr2
|
||||
.DA #%00000000,#%00000000,#%01000000,#%00000111 asl2,asl2,rol3
|
||||
.DA #%00000000,#%00000000,#%00000000,#%01111000 lsr3,lsr3,lsr3
|
||||
*--------------------------------------
|
||||
Color.Enable .DA %10001111.00000000.00000000.00000000
|
||||
.DA %11110000.00000001.00000000.00000000
|
||||
.DA %00000000.10011110.00000000.00000000
|
||||
.DA %00000000.11100000.00000011.00000000
|
||||
.DA %00000000.00000000.10111100.00000000
|
||||
.DA %00000000.00000000.11000000.00000111
|
||||
.DA %00000000.00000000.00000000.11111000
|
||||
Color.Enable .DA #%10001111,#%00000000,#%00000000,#%00000000
|
||||
.DA #%11110000,#%00000001,#%00000000,#%00000000
|
||||
.DA #%00000000,#%10011110,#%00000000,#%00000000
|
||||
.DA #%00000000,#%11100000,#%00000011,#%00000000
|
||||
.DA #%00000000,#%00000000,#%10111100,#%00000000
|
||||
.DA #%00000000,#%00000000,#%11000000,#%00000111
|
||||
.DA #%00000000,#%00000000,#%00000000,#%11111000
|
||||
*--------------------------------------
|
||||
* bits to "ora" to set color of pixel (including "color bit set " for byte hosting bit0)
|
||||
* 4 bytes * 16 Colors
|
||||
* pixel masks c1110000.c3322221.c5444433.c6666555
|
||||
*--------------------------------------
|
||||
Color.Pixels .DA %00000000.00000000.00000000.00000000 0000,Black (color bit disable)
|
||||
.DA %10010001.10100010.11000100.10001000 0001,Magenta
|
||||
.DA %10100010.11000100.10001000.10010001 0010,Brown
|
||||
.DA %10110011.11100110.11001100.10011001 0011,Orange
|
||||
.DA %11000100.10001000.10010001.10100010 0100,Dark Green
|
||||
.DA %11010101.10101010.11010101.10101010 0101,Grey1
|
||||
.DA %11100110.11001100.10011001.10110011 0110,Green
|
||||
.DA %11110111.11101110.11011101.10111011 0111,Yellow
|
||||
.DA %10001000.10010001.10100010.11000100 1000,Dark Blue
|
||||
.DA %10011001.10110011.11100110.11001100 1001,Violet
|
||||
.DA %10101010.11010101.10101010.11010101 1010,Grey2
|
||||
.DA %10111011.11110111.11101111.11011101 1011,Pink
|
||||
.DA %11001100.10011001.10110011.11100110 1100,Medium Blue
|
||||
.DA %11011101.10111011.11110111.11101110 1101,Light Blue
|
||||
.DA %11101110.11011101.10111011.11110111 1110,Aqua
|
||||
.DA %01111111.01111111.01111111.01111111 1111,White (color bit disable)
|
||||
Color.Pixels .DA #%00000000,#%00000000,#%00000000,#%00000000 (color bit disable)
|
||||
.DA #%10010001,#%10100010,#%11000100,#%10001000
|
||||
.DA #%10100010,#%11000100,#%10001000,#%10010001
|
||||
.DA #%10110011,#%11100110,#%11001100,#%10011001
|
||||
.DA #%11000100,#%10001000,#%10010001,#%10100010
|
||||
.DA #%11010101,#%10101010,#%11010101,#%10101010
|
||||
.DA #%11100110,#%11001100,#%10011001,#%10110011
|
||||
.DA #%11110111,#%11101110,#%11011101,#%10111011
|
||||
.DA #%10001000,#%10010001,#%10100010,#%11000100
|
||||
.DA #%10011001,#%10110011,#%11100110,#%11001100
|
||||
.DA #%10101010,#%11010101,#%10101010,#%11010101
|
||||
.DA #%10111011,#%11110111,#%11101111,#%11011101
|
||||
.DA #%11001100,#%10011001,#%10110011,#%11100110
|
||||
.DA #%11011101,#%10111011,#%11110111,#%11101110
|
||||
.DA #%11101110,#%11011101,#%10111011,#%11110111
|
||||
.DA #%01111111,#%01111111,#%01111111,#%01111111 (color bit disable)
|
||||
|
||||
*Black 00 00 00 00 0000
|
||||
*Magenta 08 11 22 44 0001
|
||||
|
@ -465,15 +524,12 @@ Color.Pixels .DA %00000000.00000000.00000000.00000000 0000,Black (color bit disa
|
|||
*Light Blue 3B 77 6E 5D 1101
|
||||
*Aqua 77 6E 5D 3B 1110
|
||||
*White 7F 7F 7F 7F 1111
|
||||
|
||||
|
||||
*--------------------------------------
|
||||
CS.END
|
||||
DEVNAME >PSTRING "GFX"
|
||||
*--------------------------------------
|
||||
DS.START
|
||||
*--------------------------------------
|
||||
DEVINFO .DA #S.DEV.F.GFX type of DEVINFO STRUCT
|
||||
DEVINFO.MODES .DA #%10000011 XOR,16 & B/W
|
||||
DEVINFO.W .DA 560 X.SIZE
|
||||
DEVINFO.H .DA 192 Y.SIZE
|
||||
DS.END
|
||||
|
|
|
@ -9,11 +9,19 @@ AUTO 6
|
|||
.TF DRV/MOUSE.DRV
|
||||
*--------------------------------------
|
||||
.INB INC/MACROS.I
|
||||
.INB INC/IO.I
|
||||
.INB INC/A2OSX.I
|
||||
*--------------------------------------
|
||||
ZPGoMouse .EQ ZPDRV
|
||||
ZPTmpPtr1 .EQ ZPDRV+2
|
||||
*--------------------------------------
|
||||
EVENT.MOUSEUP .EQ %00000001
|
||||
EVENT.MOUSEDOWN .EQ %00000010
|
||||
EVENT.MOUSEMOVE .EQ %00000100
|
||||
EVENT.MOUSEDRAG .EQ %00001000
|
||||
EVENT.MOUSECLK .EQ %00010000
|
||||
EVENT.MOUSEDCLK .EQ %00100000
|
||||
*--------------------------------------
|
||||
SETMOUSE .EQ $12 Sets mouse mode
|
||||
SERVEMOUSE .EQ $13 Services mouse interrupt
|
||||
READMOUSE .EQ $14 Reads mouse position
|
||||
|
@ -22,10 +30,18 @@ POSMOUSE .EQ $16 Sets mouse position to a user-defined pos
|
|||
CLAMPMOUSE .EQ $17 Sets mouse bounds in a window
|
||||
HOMEMOUSE .EQ $18 Sets mouse to upper-left corner of clamp win
|
||||
INITMOUSE .EQ $19 Resets mouse clamps to default values,sets mouse position to 0,0
|
||||
XCLAMPLO .EQ $0478 low byte of low clamp.
|
||||
XCLAMPHI .EQ $04F8 low byte of high clamp.
|
||||
YCLAMPLO .EQ $0578 high byte of low clamp.
|
||||
YCLAMPHI .EQ $05F8 high byte of high clamp.
|
||||
LOCLAMPLO .EQ $0478 low byte of low clamp.
|
||||
HICLAMPLO .EQ $04F8 low byte of high clamp.
|
||||
LOCLAMPHI .EQ $0578 high byte of low clamp.
|
||||
HICLAMPHI .EQ $05F8 high byte of high clamp.
|
||||
MOUSEXLOx .EQ $0478
|
||||
MOUSEYLOx .EQ $04F8
|
||||
MOUSEXHIx .EQ $0578
|
||||
MOUSEYHIx .EQ $05F8
|
||||
MOUSESTSx .EQ $0778
|
||||
MOUSESTSx.DOWN .EQ %10000000
|
||||
MOUSESTSx.LDOWN .EQ %01000000
|
||||
MOUSESTSx.MOVED .EQ %00100000
|
||||
*--------------------------------------
|
||||
* Main DRV entry point
|
||||
* input :
|
||||
|
@ -58,19 +74,23 @@ OPEN stz ZPTmpPtr1
|
|||
.2 ldy DEVSIG.Offset,x
|
||||
lda (ZPTmpPtr1),y
|
||||
cmp DEVSIG.Value,x
|
||||
beq .3
|
||||
bne .3
|
||||
dex
|
||||
bpl .2
|
||||
bra .10
|
||||
|
||||
inc ZPTmpPtr1+1 no match, try next slot....
|
||||
.3 inc ZPTmpPtr1+1 no match, try next slot....
|
||||
lda ZPTmpPtr1+1
|
||||
cmp #$C8
|
||||
bne .1
|
||||
beq .99 Not Found in any slot, exiting
|
||||
|
||||
.3 dex
|
||||
bpl .2
|
||||
|
||||
lda ZPTmpPtr1+1
|
||||
lda #DEVMGR.ERRNOHW Not Found in any slot, exiting
|
||||
sec
|
||||
rts
|
||||
|
||||
.10 lda ZPTmpPtr1+1
|
||||
and #$0F
|
||||
sta DEVSLOT0n
|
||||
pha
|
||||
ora #$30
|
||||
sta DEVNAME+4
|
||||
|
@ -86,13 +106,22 @@ OPEN stz ZPTmpPtr1
|
|||
ldx #0
|
||||
ldy #S.DEV.NAME
|
||||
|
||||
.7 lda DEVNAME,x
|
||||
.4 lda DEVNAME,x
|
||||
sta (pDevContext),y
|
||||
cpx DEVNAME
|
||||
beq .8
|
||||
beq .5
|
||||
inx
|
||||
iny
|
||||
bne .7
|
||||
bne .4
|
||||
|
||||
.5 bit RROMBNK2 Renable ROM to allow MOUSE II firmware
|
||||
|
||||
php to read IIe ROM ID bytes
|
||||
sei
|
||||
|
||||
lda RD80STORE
|
||||
pha
|
||||
sta CLR80STORE
|
||||
|
||||
lda #1 Enable, Polling mode
|
||||
ldy #SETMOUSE
|
||||
|
@ -100,41 +129,131 @@ OPEN stz ZPTmpPtr1
|
|||
|
||||
ldy #INITMOUSE Reset
|
||||
jsr GOMOUSE
|
||||
|
||||
* lda #0 set X
|
||||
* ldy #CLAMPMOUSE
|
||||
* jsr GOMOUSE
|
||||
|
||||
* lda #1 set Y
|
||||
* ldy #CLAMPMOUSE
|
||||
* jsr GOMOUSE
|
||||
stz LOCLAMPLO
|
||||
stz LOCLAMPHI
|
||||
lda #559
|
||||
sta HICLAMPLO
|
||||
lda /559
|
||||
sta HICLAMPHI
|
||||
|
||||
.8 lda #S.DEV.F.MOUSE+S.DEV.F.EVENT
|
||||
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
|
||||
|
||||
pla
|
||||
bpl .6
|
||||
sta SET80STORE
|
||||
|
||||
.6 plp
|
||||
|
||||
lda #S.DEV.F.MOUSE+S.DEV.F.EVENT
|
||||
sta (pDevContext)
|
||||
clc
|
||||
rts
|
||||
|
||||
.99 lda #DEVMGR.ERRNOHW
|
||||
sec
|
||||
rts
|
||||
*--------------------------------------
|
||||
GETEVENT >PULLW pEvent
|
||||
lda #0
|
||||
sec
|
||||
|
||||
php
|
||||
sei
|
||||
|
||||
lda RD80STORE
|
||||
pha
|
||||
sta CLR80STORE
|
||||
|
||||
ldy #READMOUSE
|
||||
jsr GOMOUSE
|
||||
|
||||
ldx DEVSLOT0n
|
||||
ldy #S.EVT.DATALO
|
||||
|
||||
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 (pEvent),y
|
||||
|
||||
.3 lda MOUSESTSx,x
|
||||
and #MOUSESTSx.MOVED
|
||||
beq .4
|
||||
|
||||
lda (pEvent),y
|
||||
ora #EVENT.MOUSEMOVE
|
||||
sta (pEvent),y
|
||||
|
||||
ldy #S.EVT.DATAW1
|
||||
lda MOUSEXLOx,x
|
||||
sta (pEvent),y
|
||||
iny
|
||||
lda MOUSEXHIx,x
|
||||
sta (pEvent),y
|
||||
iny
|
||||
lda MOUSEYLOx,x
|
||||
sta (pEvent),y
|
||||
iny
|
||||
lda MOUSEYHIx,x
|
||||
sta (pEvent),y
|
||||
|
||||
.4 pla
|
||||
bpl .5
|
||||
sta SET80STORE
|
||||
|
||||
.5 plp
|
||||
ldy #S.EVT.DATALO
|
||||
lda (pEvent),y
|
||||
beq .9
|
||||
|
||||
lda #S.EVT.F.MOUSE
|
||||
sta (pEvent)
|
||||
clc
|
||||
rts
|
||||
|
||||
.9 sec A=0 : no event
|
||||
rts
|
||||
*--------------------------------------
|
||||
OUT clc
|
||||
rts
|
||||
*--------------------------------------
|
||||
CLOSE clc
|
||||
CLOSE php
|
||||
sei
|
||||
lda #0 Disable
|
||||
ldy #SETMOUSE
|
||||
jsr GOMOUSE
|
||||
plp
|
||||
clc
|
||||
rts
|
||||
*--------------------------------------
|
||||
GOMOUSE pha
|
||||
stz ZPGoMouse
|
||||
lda DEVSLOTCn
|
||||
sta ZPGoMouse+1
|
||||
ldx DEVSLOTCn
|
||||
stx ZPGoMouse+1
|
||||
lda (ZPGoMouse),y
|
||||
sta ZPGoMouse
|
||||
ldy DEVSLOTn0
|
||||
pla
|
||||
jmp (ZPGoMouse)
|
||||
*--------------------------------------
|
||||
|
@ -143,6 +262,7 @@ DEVSIG.Offset .HS 05070B0CFB
|
|||
DEVSIG.Value .HS 38180120D6
|
||||
DEVSIG.Length .EQ DEVSIG.Value-DEVSIG.Offset
|
||||
DEVNAME >PSTRING "MOU0"
|
||||
DEVSLOT0n .BS 1
|
||||
DEVSLOTCn .BS 1
|
||||
DEVSLOTn0 .BS 1
|
||||
*--------------------------------------
|
||||
|
|
|
@ -83,6 +83,7 @@ SYS.GetDevTable .EQ $74
|
|||
SYS.GetDevInfoA .EQ $76
|
||||
|
||||
SYS.DevOutA .EQ $78
|
||||
SYS.GetDevByNameYA .EQ $7A
|
||||
*--------------------------------------
|
||||
SYS.GetEvent .EQ $80
|
||||
SYS.DestroyEvent .EQ $82
|
||||
|
@ -105,6 +106,8 @@ SYS.SetNetCfg .EQ $B2
|
|||
SYS.GetNetCfgA .EQ $B4
|
||||
SYS.ClrNetCfgA .EQ $B6
|
||||
*--------------------------------------
|
||||
SYS.ScreenSelectA .EQ $C0
|
||||
*--------------------------------------
|
||||
A2osX.SaveSM .EQ $100 Main
|
||||
A2osX.SaveSX .EQ $101 Aux
|
||||
*--------------------------------------
|
||||
|
@ -178,8 +181,6 @@ S.MEM.F.NOMOV .EQ %00100000
|
|||
S.MEM.F.ALIGN .EQ %00010000
|
||||
S.MEM.F.SPARE .EQ %00001000
|
||||
S.MEM.F.AUX .EQ %00000100
|
||||
S.MEM.F.LC1 .EQ %00000010
|
||||
S.MEM.F.LC2 .EQ %00000001
|
||||
S.MEM.REFCNT .EQ 1
|
||||
S.MEM.PTR .EQ 2
|
||||
S.MEM.LEN .EQ 4
|
||||
|
@ -212,7 +213,7 @@ S.DEV.hOWNERPS .EQ 11
|
|||
*
|
||||
S.DEV.SIZE .EQ 12
|
||||
*--------------------------------------
|
||||
* Driver Function Indexes
|
||||
* Generic Driver Functions
|
||||
*--------------------------------------
|
||||
DEVMGR.OPEN .EQ 0
|
||||
DEVMGR.GETEVENT .EQ 2
|
||||
|
@ -220,6 +221,11 @@ DEVMGR.OUT .EQ 4
|
|||
DEVMGR.CLOSE .EQ 6
|
||||
DEVMGR.GETINFO .EQ 8
|
||||
*--------------------------------------
|
||||
* 'GFX' Class Driver Functions
|
||||
*--------------------------------------
|
||||
DEVMGR.GFX.SETPIXEL .EQ 10
|
||||
DEVMGR.GFX.GETPIXEL .EQ 12
|
||||
*--------------------------------------
|
||||
DEVMGR.ERRNICL .EQ $EB Invalid Command Line
|
||||
DEVMGR.ERRNOHW .EQ $EC No Hardware
|
||||
DEVMGR.ERRDNF .EQ $ED Device Not Found Error
|
||||
|
|
|
@ -0,0 +1,29 @@
|
|||
PR#3
|
||||
PREFIX /A2OSX.BUILD
|
||||
NEW
|
||||
INC 1
|
||||
AUTO 6
|
||||
.LIST OFF
|
||||
.OP 65C02
|
||||
*--------------------------------------
|
||||
LIBCRYPT.MD5PStrA .EQ 4
|
||||
LIBCRYPT.MD5Init .EQ 6
|
||||
LIBCRYPT.MD5Update .EQ 8
|
||||
LIBCRYPT.MD5FinalizeA .EQ 10
|
||||
*--------------------------------------
|
||||
* S.MD5 STRUCT
|
||||
*--------------------------------------
|
||||
S.MD5.ABCD0 .EQ 0
|
||||
S.MD5.A0 .EQ 0
|
||||
S.MD5.B0 .EQ 4
|
||||
S.MD5.C0 .EQ 8
|
||||
S.MD5.D0 .EQ 12
|
||||
S.MD5.BITCOUNT .EQ 16
|
||||
S.MD5.EXTRABIT .EQ 24
|
||||
S.MD5.FINALIZED .EQ 25
|
||||
*
|
||||
S.MD5.SIZE .EQ 26
|
||||
*--------------------------------------
|
||||
MAN
|
||||
SAVE INC/LIBCRYPT.I
|
||||
|
|
@ -0,0 +1,13 @@
|
|||
PR#3
|
||||
PREFIX /A2OSX.BUILD
|
||||
NEW
|
||||
INC 1
|
||||
AUTO 6
|
||||
.LIST OFF
|
||||
.OP 65C02
|
||||
*--------------------------------------
|
||||
LIBGFX.test .EQ 4
|
||||
*--------------------------------------
|
||||
MAN
|
||||
SAVE INC/LIBGFX.I
|
||||
|
|
@ -0,0 +1,41 @@
|
|||
PR#3
|
||||
PREFIX /A2OSX.BUILD
|
||||
NEW
|
||||
INC 1
|
||||
AUTO 6
|
||||
.LIST OFF
|
||||
.OP 65C02
|
||||
.OR $2000
|
||||
.TF LIB/LIBGFX.O
|
||||
*--------------------------------------
|
||||
.INB INC/MACROS.I
|
||||
.INB INC/A2OSX.I
|
||||
.INB INC/LIBGFX.I
|
||||
*--------------------------------------
|
||||
* Main entry point
|
||||
* input :
|
||||
* X = Function
|
||||
*--------------------------------------
|
||||
* Code signature and relocation table
|
||||
*--------------------------------------
|
||||
* CLD $D8
|
||||
* JMP (*,x) $7C
|
||||
* #JMPTABLE
|
||||
* /JMPTABLE
|
||||
*--------------------------------------
|
||||
CS.START cld
|
||||
jmp (.1,x)
|
||||
.1 .DA LIB.LOAD
|
||||
.DA LIB.UNLOAD
|
||||
|
||||
*--------------------------------------
|
||||
.DA 0
|
||||
.DA CS.END-CS.START
|
||||
.DA 0
|
||||
*--------------------------------------
|
||||
LIB.LOAD
|
||||
LIB.UNLOAD clc
|
||||
rts
|
||||
MAN
|
||||
SAVE LIB/LIBGFX.S
|
||||
ASM
|
|
@ -0,0 +1,114 @@
|
|||
PR#3
|
||||
PREFIX /A2OSX.BUILD
|
||||
NEW
|
||||
INC 1
|
||||
AUTO 6
|
||||
.LIST OFF
|
||||
.OP 65C02
|
||||
.OR $2000
|
||||
.TF SBIN/GUI
|
||||
*--------------------------------------
|
||||
.INB INC/MACROS.I
|
||||
.INB INC/A2OSX.I
|
||||
*--------------------------------------
|
||||
* Main entry point
|
||||
*--------------------------------------
|
||||
* Code signature and INIT table
|
||||
*--------------------------------------
|
||||
* CLD $D8
|
||||
* JMP (*,x) $7C
|
||||
* #JMPTABLE
|
||||
* /JMPTABLE
|
||||
*--------------------------------------
|
||||
CS.START cld
|
||||
jmp (.1,x)
|
||||
.1 .DA CS.INIT
|
||||
.DA CS.RUN
|
||||
.DA CS.DOEVENT
|
||||
.DA CS.QUIT
|
||||
L.DEVNAME.GFX .DA DEVNAME.GFX
|
||||
.DA 0
|
||||
.DA CS.END-CS.START Code Length To Relocate
|
||||
.DA DS.END-DS.START Data Segment to Allocate
|
||||
*--------------------------------------
|
||||
CS.INIT >LDYA L.DEVNAME.GFX
|
||||
>SYSCALL SYS.GetDevByNameYA
|
||||
bcc .10
|
||||
rts
|
||||
|
||||
.10 sta hDevGFX
|
||||
>SYSCALL SYS.GetDevByIDA
|
||||
>STYA ZPQuickPtr1
|
||||
|
||||
ldy #S.DEV.hCS
|
||||
lda (ZPQuickPtr1),y
|
||||
>SYSCALL SYS.GetMemPtrA
|
||||
|
||||
>STYA DevJMP
|
||||
|
||||
stz C
|
||||
stz X
|
||||
stz X+1
|
||||
|
||||
.1 stz Y
|
||||
>DEBUG
|
||||
.2
|
||||
>PUSHBI C Color
|
||||
>PUSHBI 2 Mode:1=B/W,2=16 colors,...,128=XOR
|
||||
>PUSHB Y
|
||||
>PUSHW X
|
||||
jsr SetPixel
|
||||
|
||||
inc Y
|
||||
lda Y
|
||||
cmp #192
|
||||
bne .2
|
||||
|
||||
inc C
|
||||
lda C
|
||||
cmp #16
|
||||
bne .3
|
||||
stz C
|
||||
|
||||
.3 lda X
|
||||
clc
|
||||
adc #4
|
||||
sta X
|
||||
bcc .4
|
||||
inc X+1
|
||||
|
||||
.4 lda X
|
||||
sec
|
||||
sbc #560
|
||||
lda X+1
|
||||
sbc /560
|
||||
bcc .1
|
||||
|
||||
clc
|
||||
.9 rts
|
||||
*--------------------------------------
|
||||
CS.RUN clc
|
||||
rts
|
||||
*--------------------------------------
|
||||
CS.DOEVENT clc
|
||||
rts
|
||||
*--------------------------------------
|
||||
CS.QUIT clc
|
||||
rts
|
||||
*--------------------------------------
|
||||
SetPixel ldx #DEVMGR.GFX.SETPIXEL
|
||||
jmp (DevJMP)
|
||||
*--------------------------------------
|
||||
CS.END
|
||||
DEVNAME.GFX >PSTRING "GFX"
|
||||
DEVNAME.MOU0 >PSTRING "MOU0"
|
||||
DS.START
|
||||
hDevGFX .BS 1
|
||||
DevJMP .BS 2
|
||||
X .BS 2
|
||||
Y .BS 1
|
||||
C .BS 1
|
||||
DS.END
|
||||
MAN
|
||||
SAVE SBIN/GUI.S
|
||||
ASM
|
|
@ -49,7 +49,7 @@ S.GetDevByIDA sta ZPQuickPtr1
|
|||
>STYA ZPQuickPtr2
|
||||
|
||||
.1 lda (ZPQuickPtr2) get S.DEV.F
|
||||
bpl .3 In use ?
|
||||
bpl .2 In use ?
|
||||
ldy #S.DEV.ID
|
||||
lda (ZPQuickPtr2),y
|
||||
cmp ZPQuickPtr1
|
||||
|
@ -80,6 +80,7 @@ S.GetDevByIDA sta ZPQuickPtr1
|
|||
* set DEVMGR.DEVPTR to devslot
|
||||
*--------------------------------------
|
||||
S.GetDevByNameA jsr S.GetMemPtrA
|
||||
S.GetDevByNameYA
|
||||
>STYA ZPQuickPtr1
|
||||
>LDYAI DEVMGR.TABLE
|
||||
>STYA DEVMGR.DEVPTR
|
||||
|
@ -126,7 +127,6 @@ S.GetDevByNameA jsr S.GetMemPtrA
|
|||
* X = LASTID
|
||||
*--------------------------------------
|
||||
S.GetDevTable >LDYAI DEVMGR.TABLE
|
||||
|
||||
ldx DEVMGR.LASTID
|
||||
rts
|
||||
*--------------------------------------
|
||||
|
@ -142,28 +142,7 @@ S.DevOutA ldx #DEVMGR.OUT
|
|||
S.GetDevInfoA ldx #DEVMGR.GETINFO
|
||||
jmp S.DevCallFunc
|
||||
*--------------------------------------
|
||||
* PRIVATE
|
||||
*--------------------------------------
|
||||
* S.DevOpenA
|
||||
* IN :
|
||||
* A = hDev
|
||||
* OUT CC = OK, CS = ERROR
|
||||
*--------------------------------------
|
||||
S.DevOpenA ldx #DEVMGR.OPEN
|
||||
bra S.DevCallFunc
|
||||
*--------------------------------------
|
||||
* S.DevGetEventA
|
||||
* IN :
|
||||
* A = hDev
|
||||
* OUT CC = OK, CS = ERROR
|
||||
*--------------------------------------
|
||||
S.DevGetEventA ldx #DEVMGR.GETEVENT
|
||||
bra S.DevCallFunc
|
||||
*--------------------------------------
|
||||
* S.DevCloseA
|
||||
*--------------------------------------
|
||||
S.DevCloseA ldx #DEVMGR.CLOSE
|
||||
bra S.DevCallFunc
|
||||
* PRIVATE
|
||||
*--------------------------------------
|
||||
S.DevCallFunc jsr S.GetDevByIDA
|
||||
bcs .9
|
||||
|
@ -180,7 +159,6 @@ S.DevCallFunc jsr S.GetDevByIDA
|
|||
* IN : none
|
||||
* OUT : A = DevID
|
||||
* set DEVMGR.DEVPTR to freeslot
|
||||
* init (DEVMGR.DEVPTR),S.DEV.ID with Dev.ID
|
||||
*--------------------------------------
|
||||
S.CreateDevice >LDYAI DEVMGR.TABLE
|
||||
>STYA DEVMGR.DEVPTR
|
||||
|
|
|
@ -315,6 +315,28 @@ S.SetEnvVar plp
|
|||
*--------------------------------------
|
||||
* PRIVATE
|
||||
*--------------------------------------
|
||||
S.SetSysEnvA >PUSHA Push Cmd Line
|
||||
>PUSHBI $3D Push SEP='='
|
||||
>PUSHBI 0 Push Token IDX
|
||||
jsr S.PStrGetTkn
|
||||
bcs *
|
||||
phx save X,A for discard
|
||||
pha
|
||||
pha
|
||||
txa
|
||||
>PUSHA
|
||||
pla
|
||||
>PUSHA
|
||||
ldy #S.PS.hENV
|
||||
lda TSKMGR.TABLE,y
|
||||
>PUSHA
|
||||
jsr S.SetEnvVarH
|
||||
|
||||
pla disard NAME
|
||||
jsr S.FreeMemA
|
||||
pla discard VALUE
|
||||
jmp S.FreeMemA
|
||||
*--------------------------------------
|
||||
* S.SelectEnvH
|
||||
* In:
|
||||
* PULLB = hENV
|
||||
|
|
|
@ -47,6 +47,54 @@ S.SysScrInit stz SYSSCR.CPULOADI
|
|||
clc
|
||||
rts
|
||||
*--------------------------------------
|
||||
* S.ScreenSelectA
|
||||
* IN :
|
||||
* A = Screen to display
|
||||
*--------------------------------------
|
||||
S.ScreenSelectA and A2osX.SCREENS Screen is available ?
|
||||
beq .9 ...not setup up
|
||||
|
||||
cmp #A2osX.SCREENS.S
|
||||
bne .1
|
||||
sta SETTEXT
|
||||
sta SET80DISP
|
||||
sta CLR80STORE
|
||||
sta SETPAGE2
|
||||
sta SETALTCHAR
|
||||
lda #A2osX.SCREENS.S
|
||||
bra .8
|
||||
|
||||
.1 cmp #A2osX.SCREENS.C
|
||||
bne .2
|
||||
sta SETTEXT
|
||||
sta SET80DISP
|
||||
sta CLRPAGE2
|
||||
sta SET80STORE
|
||||
sta SETALTCHAR
|
||||
lda #A2osX.SCREENS.C
|
||||
bra .8
|
||||
|
||||
.2 cmp #A2osX.SCREENS.G
|
||||
bne .9
|
||||
|
||||
sta CLRTEXT
|
||||
sta CLRMIXED
|
||||
sta SETHIRES
|
||||
sta CLRPAGE2
|
||||
|
||||
sta SET80DISP
|
||||
sta SETIOUDIS
|
||||
sta SETDHIRES
|
||||
sta CLRDHIRES
|
||||
sta SETDHIRES
|
||||
sta CLRDHIRES
|
||||
sta SETDHIRES
|
||||
|
||||
lda #A2osX.SCREENS.G
|
||||
|
||||
.8 sta A2osX.ACTIVESCRN
|
||||
.9 rts
|
||||
*--------------------------------------
|
||||
S.SysScrCPULoad ldx SYSSCR.CPULOADI
|
||||
lda SYSSCR.CPULOADC,x
|
||||
sta SYSSCR.BASL0+38
|
||||
|
@ -268,58 +316,6 @@ S.SysScrSetCharAtYX
|
|||
ply
|
||||
rts
|
||||
*--------------------------------------
|
||||
* S.ScreenSelectA
|
||||
* IN :
|
||||
* A = Screen to display
|
||||
*--------------------------------------
|
||||
S.ScreenSelectA and A2osX.SCREENS Screen is available ?
|
||||
beq .9 ...not setup up
|
||||
|
||||
cmp #A2osX.SCREENS.S
|
||||
bne .1
|
||||
sta SETTEXT
|
||||
sta SET80DISP
|
||||
sta CLR80STORE
|
||||
sta SETPAGE2
|
||||
sta SETALTCHAR
|
||||
lda #A2osX.SCREENS.S
|
||||
bra .8
|
||||
|
||||
.1 cmp #A2osX.SCREENS.C
|
||||
bne .2
|
||||
sta SETTEXT
|
||||
sta SET80DISP
|
||||
sta SET80STORE
|
||||
sta CLRPAGE2
|
||||
sta SETALTCHAR
|
||||
lda #A2osX.SCREENS.C
|
||||
bra .8
|
||||
|
||||
.2 cmp #A2osX.SCREENS.G
|
||||
bne .9
|
||||
sta CLRTEXT
|
||||
sta CLRMIXED
|
||||
sta SETHIRES
|
||||
sta CLRPAGE2
|
||||
|
||||
sta SETIOUDIS
|
||||
|
||||
sta CLR80DISP
|
||||
sta SETDHIRES
|
||||
sta CLRDHIRES
|
||||
sta SETDHIRES
|
||||
sta CLRDHIRES
|
||||
|
||||
sta SET80DISP
|
||||
sta SETDHIRES
|
||||
sta CLRDHIRES
|
||||
sta SETDHIRES
|
||||
|
||||
lda #A2osX.SCREENS.G
|
||||
|
||||
.8 sta A2osX.ACTIVESCRN
|
||||
.9 rts
|
||||
*--------------------------------------
|
||||
SYSSCR.CH .BS 1
|
||||
SYSSCR.CV .BS 1
|
||||
SYSSCR.CPULOADI .BS 1
|
||||
|
|
|
@ -94,7 +94,7 @@ KERNEL.SYSCALL jmp (.1,x)
|
|||
.DA S.GetDevInfoA
|
||||
|
||||
.DA S.DevOutA
|
||||
.DA 0
|
||||
.DA S.GetDevByNameYA
|
||||
.DA 0
|
||||
.DA 0
|
||||
*--------------------------------------
|
||||
|
@ -137,6 +137,8 @@ KERNEL.SYSCALL jmp (.1,x)
|
|||
.DA 0
|
||||
.DA 0
|
||||
.DA 0
|
||||
*--------------------------------------
|
||||
.DA S.ScreenSelectA $C0
|
||||
*--------------------------------------
|
||||
S.Kernel jsr S.KernelInit
|
||||
jsr S.KernelRun
|
||||
|
@ -411,28 +413,6 @@ S.ExecCmdLine jmp (.1,x)
|
|||
.DA S.LoadDrvA VCPU!!!!
|
||||
.DA S.CreateProcessA VCPU!!!!
|
||||
*--------------------------------------
|
||||
S.SetSysEnvA >PUSHA Push Cmd Line
|
||||
>PUSHBI $3D Push SEP='='
|
||||
>PUSHBI 0 Push Token IDX
|
||||
jsr S.PStrGetTkn
|
||||
bcs *
|
||||
phx save X,A for discard
|
||||
pha
|
||||
pha
|
||||
txa
|
||||
>PUSHA
|
||||
pla
|
||||
>PUSHA
|
||||
ldy #S.PS.hENV
|
||||
lda TSKMGR.TABLE,y
|
||||
>PUSHA
|
||||
jsr S.SetEnvVarH
|
||||
|
||||
pla disard NAME
|
||||
jsr S.FreeMemA
|
||||
pla discard VALUE
|
||||
jmp S.FreeMemA
|
||||
*--------------------------------------
|
||||
S.PrintSysEnv ldy #S.PS.hENV
|
||||
lda TSKMGR.TABLE,y Get PS #0 ENV
|
||||
jsr S.GetMemPtrA
|
||||
|
|
Loading…
Reference in New Issue