MOUSE.DRV working,DHGR.DRV color mode with bugs

This commit is contained in:
Rémy GIBERT 2015-03-23 08:28:03 +01:00
parent 87bb6efe1f
commit 2192ead073
14 changed files with 596 additions and 221 deletions

Binary file not shown.

View File

@ -19,5 +19,6 @@ EXEC DHCPCLNT
*MOUNT TFTP 192.168.1.5:/AO2SX /TFTP *MOUNT TFTP 192.168.1.5:/AO2SX /TFTP
LOAD DHGR.DRV LOAD DHGR.DRV
LOAD MOUSE.DRV LOAD MOUSE.DRV
EXEC GUI
MAN MAN
TEXT A2OSX.STARTUP TEXT A2OSX.STARTUP

View File

@ -63,6 +63,9 @@ OPEN stz CURON
.8 lda A2osX.SCREENS .8 lda A2osX.SCREENS
ora #A2osX.SCREENS.C ora #A2osX.SCREENS.C
sta A2osX.SCREENS sta A2osX.SCREENS
lda #A2osX.SCREENS.C
>SYSCALL SYS.ScreenSelectA
clc clc
rts rts
@ -298,7 +301,11 @@ SetCharAtXY pha
.4 sta CLRPAGE2 .4 sta CLRPAGE2
rts rts
*-------------------------------------- *--------------------------------------
GetCharAtXY sta SET80STORE GetCharAtXY lda RDPAGE2
pha
lda RD80STORE
pha
sta SET80STORE
txa txa
lsr lsr
@ -314,7 +321,19 @@ GetCharAtXY sta SET80STORE
sta ZPBASL1+1 sta ZPBASL1+1
lda (ZPBASL1) lda (ZPBASL1)
plx
bmi .3
sta CLR80STORE
.3 plx
bpl .4
sta SETPAGE2
rts rts
.4 sta CLRPAGE2
rts
*-------------------------------------- *--------------------------------------
CS.END CS.END
DEVNAME >PSTRING "CON" DEVNAME >PSTRING "CON"

View File

@ -46,8 +46,7 @@ L.DEVINFO .DA DEVINFO
.DA CS.END-CS.START Code Length To Relocate .DA CS.END-CS.START Code Length To Relocate
.DA DS.END-DS.START Data Segment to Allocate .DA DS.END-DS.START Data Segment to Allocate
*-------------------------------------- *--------------------------------------
OPEN OPEN lda #S.DEV.F.GFX
lda #S.DEV.F.GFX
sta (pDevContext) sta (pDevContext)
ldy #S.DEV.NAME ldy #S.DEV.NAME
@ -60,10 +59,68 @@ OPEN
iny iny
bne .1 bne .1
.8 lda A2osX.SCREENS .8 lda A2osX.SCREENS
ora #A2osX.SCREENS.G ora #A2osX.SCREENS.G
sta A2osX.SCREENS 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 clc
rts rts
*-------------------------------------- *--------------------------------------
@ -87,9 +144,9 @@ GETINFO >LDYA L.DEVINFO
* PULLB = X.HI * PULLB = X.HI
* PULLB = Y * PULLB = Y
* PULLB = Mode * PULLB = Mode
* 00000000=mono * 00000001=mono
* 00000001=xor (mono on 1 bit) * 00000010=16 colors
* 10000000=color * 1000000=xor (mono on 1 bit)
* PULLB = Color (if not xor) * PULLB = Color (if not xor)
*-------------------------------------- *--------------------------------------
SETPIXEL >PULLA X.LO SETPIXEL >PULLA X.LO
@ -99,18 +156,15 @@ SETPIXEL >PULLA X.LO
bcs .1 bcs .1
lsr lsr
bcs .2 if 512 < x bcs .2 if 512 < x
lda DIV7.0,x ldy DIV7.0,x
tay
lda MOD7.0,x lda MOD7.0,x
bra .3 bra .3
.1 lda DIV7.256,x .1 ldy DIV7.256,x
tay
lda MOD7.256,x lda MOD7.256,x
bra .3 bra .3
.2 lda DIV7.512,x .2 ldy DIV7.512,x
tay
lda MOD7.512,x lda MOD7.512,x
.3 pha save MOD,y=DIV .3 pha save MOD,y=DIV
@ -123,15 +177,29 @@ SETPIXEL >PULLA X.LO
sta ZPBASE+1 sta ZPBASE+1
sta SET80STORE and prepare for page switching sta SET80STORE and prepare for page switching
sta SETHIRES
plx get back MOD in x plx get back MOD in x
>PULLA Pull Mode >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 tya
lsr lsr
tay tay
@ -139,29 +207,21 @@ SETPIXEL.MONO pha
sta SETPAGE2 sta SETPAGE2
bra .2 bra .2
.1 sta CLRPAGE2 .1 sta CLRPAGE2
.2 pla
lsr CS=xor .2 >PULLA get COLOR
bcs SETPIXEL.MONOX
>PULLA get COLOR
lsr lsr
bcs SETPIXEL.MONOW bcs .3 set white pixel
lda (ZPBASE),y lda (ZPBASE),y
and Mono.NMasks,x and Mono.NMasks,x includes And $7F for mono
sta (ZPBASE),y sta (ZPBASE),y
rts rts
SETPIXEL.MONOW lda (ZPBASE),y .3 lda (ZPBASE),y
and #$7F switch back ths byte to mono and #$7F switch back this byte to mono
ora Mono.Masks,x ora Mono.Masks,x
sta (ZPBASE),y sta (ZPBASE),y
rts rts
SETPIXEL.MONOX lda (ZPBASE),y
eor Mono.Masks,x
sta (ZPBASE),y
rts
*-------------------------------------- *--------------------------------------
* X=MOD,Y=DIV * X=MOD,Y=DIV
*-------------------------------------- *--------------------------------------
@ -245,8 +305,7 @@ FILLREC
BITBLT BITBLT
rts rts
*-------------------------------------- *--------------------------------------
* PRIVATE CS.END
*--------------------------------------
DIV7.0 .HS 0000000000000001010101010101 DIV7.0 .HS 0000000000000001010101010101
.HS 0202020202020203030303030303 .HS 0202020202020203030303030303
.HS 0404040404040405050505050505 .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
.HS 23.27.2B.2F.33.37.3B.3F .HS 23.27.2B.2F.33.37.3B.3F
*-------------------------------------- *--------------------------------------
Mono.NMasks .DA %01111110 Mono.NMasks .DA #%01111110
.DA %01111101 .DA #%01111101
.DA %01111011 .DA #%01111011
.DA %01110111 .DA #%01110111
.DA %01101111 .DA #%01101111
.DA %01011111 .DA #%01011111
.DA %00111111 .DA #%00111111
*-------------------------------------- *--------------------------------------
Mono.Masks .DA %00000001 Mono.Masks .DA #%00000001
.DA %00000010 .DA #%00000010
.DA %00000100 .DA #%00000100
.DA %00001000 .DA #%00001000
.DA %00010000 .DA #%00010000
.DA %00100000 .DA #%00100000
.DA %01000000 .DA #%01000000
*-------------------------------------- *--------------------------------------
* bits to "and" to reset color of pixel (0 means nothing to do) * bits to "and" to reset color of pixel (0 means nothing to do)
*-------------------------------------- *--------------------------------------
Color.NMasks .DA %01110000.00000000.00000000.00000000 Color.NMasks .DA #%01110000,#%00000000,#%00000000,#%00000000
.DA %00001111.01111110.00000000.00000000 .DA #%00001111,#%01111110,#%00000000,#%00000000
.DA %00000000.01100001.00000000.00000000 .DA #%00000000,#%01100001,#%00000000,#%00000000
.DA %00000000.00011111.01111100.00000000 .DA #%00000000,#%00011111,#%01111100,#%00000000
.DA %00000000.00000000.01000011.00000000 .DA #%00000000,#%00000000,#%01000011,#%00000000
.DA %00000000.00000000.00111111.01111000 .DA #%00000000,#%00000000,#%00111111,#%01111000
.DA %00000000.00000000.00000000.00000111 .DA #%00000000,#%00000000,#%00000000,#%00000111
*-------------------------------------- *--------------------------------------
* bits to "and" to Get color of pixel (0 means nothing to do) * bits to "and" to Get color of pixel (0 means nothing to do)
* 4 bytes * 7 mods * 4 bytes * 7 mods
*-------------------------------------- *--------------------------------------
Color.Masks .DA %00001111.00000000.00000000.00000000 (nothing to do) Color.Masks .DA #%00001111,#%00000000,#%00000000,#%00000000 (nothing to do)
.DA %01110000.00000001.00000000.00000000 asl0,asl0,rol1,asl0,rol1,asl0,rol1 .DA #%01110000,#%00000001,#%00000000,#%00000000 asl0,asl0,rol1,asl0,rol1,asl0,rol1
.DA %00000000.00011110.00000000.00000000 lsr1 .DA #%00000000,#%00011110,#%00000000,#%00000000 lsr1
.DA %00000000.01100000.00000011.00000000 asl1,asl1,rol2,asl1,rol2 .DA #%00000000,#%01100000,#%00000011,#%00000000 asl1,asl1,rol2,asl1,rol2
.DA %00000000.00000000.00111100.00000000 lsr2,lsr2 .DA #%00000000,#%00000000,#%00111100,#%00000000 lsr2,lsr2
.DA %00000000.00000000.01000000.00000111 asl2,asl2,rol3 .DA #%00000000,#%00000000,#%01000000,#%00000111 asl2,asl2,rol3
.DA %00000000.00000000.00000000.01111000 lsr3,lsr3,lsr3 .DA #%00000000,#%00000000,#%00000000,#%01111000 lsr3,lsr3,lsr3
*-------------------------------------- *--------------------------------------
Color.Enable .DA %10001111.00000000.00000000.00000000 Color.Enable .DA #%10001111,#%00000000,#%00000000,#%00000000
.DA %11110000.00000001.00000000.00000000 .DA #%11110000,#%00000001,#%00000000,#%00000000
.DA %00000000.10011110.00000000.00000000 .DA #%00000000,#%10011110,#%00000000,#%00000000
.DA %00000000.11100000.00000011.00000000 .DA #%00000000,#%11100000,#%00000011,#%00000000
.DA %00000000.00000000.10111100.00000000 .DA #%00000000,#%00000000,#%10111100,#%00000000
.DA %00000000.00000000.11000000.00000111 .DA #%00000000,#%00000000,#%11000000,#%00000111
.DA %00000000.00000000.00000000.11111000 .DA #%00000000,#%00000000,#%00000000,#%11111000
*-------------------------------------- *--------------------------------------
* bits to "ora" to set color of pixel (including "color bit set " for byte hosting bit0) * bits to "ora" to set color of pixel (including "color bit set " for byte hosting bit0)
* 4 bytes * 16 Colors * 4 bytes * 16 Colors
* pixel masks c1110000.c3322221.c5444433.c6666555 * pixel masks c1110000.c3322221.c5444433.c6666555
*-------------------------------------- *--------------------------------------
Color.Pixels .DA %00000000.00000000.00000000.00000000 0000,Black (color bit disable) Color.Pixels .DA #%00000000,#%00000000,#%00000000,#%00000000 (color bit disable)
.DA %10010001.10100010.11000100.10001000 0001,Magenta .DA #%10010001,#%10100010,#%11000100,#%10001000
.DA %10100010.11000100.10001000.10010001 0010,Brown .DA #%10100010,#%11000100,#%10001000,#%10010001
.DA %10110011.11100110.11001100.10011001 0011,Orange .DA #%10110011,#%11100110,#%11001100,#%10011001
.DA %11000100.10001000.10010001.10100010 0100,Dark Green .DA #%11000100,#%10001000,#%10010001,#%10100010
.DA %11010101.10101010.11010101.10101010 0101,Grey1 .DA #%11010101,#%10101010,#%11010101,#%10101010
.DA %11100110.11001100.10011001.10110011 0110,Green .DA #%11100110,#%11001100,#%10011001,#%10110011
.DA %11110111.11101110.11011101.10111011 0111,Yellow .DA #%11110111,#%11101110,#%11011101,#%10111011
.DA %10001000.10010001.10100010.11000100 1000,Dark Blue .DA #%10001000,#%10010001,#%10100010,#%11000100
.DA %10011001.10110011.11100110.11001100 1001,Violet .DA #%10011001,#%10110011,#%11100110,#%11001100
.DA %10101010.11010101.10101010.11010101 1010,Grey2 .DA #%10101010,#%11010101,#%10101010,#%11010101
.DA %10111011.11110111.11101111.11011101 1011,Pink .DA #%10111011,#%11110111,#%11101111,#%11011101
.DA %11001100.10011001.10110011.11100110 1100,Medium Blue .DA #%11001100,#%10011001,#%10110011,#%11100110
.DA %11011101.10111011.11110111.11101110 1101,Light Blue .DA #%11011101,#%10111011,#%11110111,#%11101110
.DA %11101110.11011101.10111011.11110111 1110,Aqua .DA #%11101110,#%11011101,#%10111011,#%11110111
.DA %01111111.01111111.01111111.01111111 1111,White (color bit disable) .DA #%01111111,#%01111111,#%01111111,#%01111111 (color bit disable)
*Black 00 00 00 00 0000 *Black 00 00 00 00 0000
*Magenta 08 11 22 44 0001 *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 *Light Blue 3B 77 6E 5D 1101
*Aqua 77 6E 5D 3B 1110 *Aqua 77 6E 5D 3B 1110
*White 7F 7F 7F 7F 1111 *White 7F 7F 7F 7F 1111
*-------------------------------------- *--------------------------------------
CS.END
DEVNAME >PSTRING "GFX" DEVNAME >PSTRING "GFX"
*-------------------------------------- *--------------------------------------
DS.START DS.START
*--------------------------------------
DEVINFO .DA #S.DEV.F.GFX type of DEVINFO STRUCT 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.W .DA 560 X.SIZE
DEVINFO.H .DA 192 Y.SIZE DEVINFO.H .DA 192 Y.SIZE
DS.END DS.END

View File

@ -9,11 +9,19 @@ AUTO 6
.TF DRV/MOUSE.DRV .TF DRV/MOUSE.DRV
*-------------------------------------- *--------------------------------------
.INB INC/MACROS.I .INB INC/MACROS.I
.INB INC/IO.I
.INB INC/A2OSX.I .INB INC/A2OSX.I
*-------------------------------------- *--------------------------------------
ZPGoMouse .EQ ZPDRV ZPGoMouse .EQ ZPDRV
ZPTmpPtr1 .EQ ZPDRV+2 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 SETMOUSE .EQ $12 Sets mouse mode
SERVEMOUSE .EQ $13 Services mouse interrupt SERVEMOUSE .EQ $13 Services mouse interrupt
READMOUSE .EQ $14 Reads mouse position 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 CLAMPMOUSE .EQ $17 Sets mouse bounds in a window
HOMEMOUSE .EQ $18 Sets mouse to upper-left corner of clamp win 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 INITMOUSE .EQ $19 Resets mouse clamps to default values,sets mouse position to 0,0
XCLAMPLO .EQ $0478 low byte of low clamp. LOCLAMPLO .EQ $0478 low byte of low clamp.
XCLAMPHI .EQ $04F8 low byte of high clamp. HICLAMPLO .EQ $04F8 low byte of high clamp.
YCLAMPLO .EQ $0578 high byte of low clamp. LOCLAMPHI .EQ $0578 high byte of low clamp.
YCLAMPHI .EQ $05F8 high byte of high 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 * Main DRV entry point
* input : * input :
@ -58,19 +74,23 @@ OPEN stz ZPTmpPtr1
.2 ldy DEVSIG.Offset,x .2 ldy DEVSIG.Offset,x
lda (ZPTmpPtr1),y lda (ZPTmpPtr1),y
cmp DEVSIG.Value,x 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 lda ZPTmpPtr1+1
cmp #$C8 cmp #$C8
bne .1 bne .1
beq .99 Not Found in any slot, exiting
.3 dex lda #DEVMGR.ERRNOHW Not Found in any slot, exiting
bpl .2 sec
rts
lda ZPTmpPtr1+1
.10 lda ZPTmpPtr1+1
and #$0F and #$0F
sta DEVSLOT0n
pha pha
ora #$30 ora #$30
sta DEVNAME+4 sta DEVNAME+4
@ -86,13 +106,22 @@ OPEN stz ZPTmpPtr1
ldx #0 ldx #0
ldy #S.DEV.NAME ldy #S.DEV.NAME
.7 lda DEVNAME,x .4 lda DEVNAME,x
sta (pDevContext),y sta (pDevContext),y
cpx DEVNAME cpx DEVNAME
beq .8 beq .5
inx inx
iny 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 lda #1 Enable, Polling mode
ldy #SETMOUSE ldy #SETMOUSE
@ -100,41 +129,131 @@ OPEN stz ZPTmpPtr1
ldy #INITMOUSE Reset ldy #INITMOUSE Reset
jsr GOMOUSE jsr GOMOUSE
* lda #0 set X
* ldy #CLAMPMOUSE
* jsr GOMOUSE
* lda #1 set Y stz LOCLAMPLO
* ldy #CLAMPMOUSE stz LOCLAMPHI
* jsr GOMOUSE 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) sta (pDevContext)
clc clc
rts rts
.99 lda #DEVMGR.ERRNOHW
sec
rts
*-------------------------------------- *--------------------------------------
GETEVENT >PULLW pEvent 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 rts
*-------------------------------------- *--------------------------------------
OUT clc OUT clc
rts rts
*-------------------------------------- *--------------------------------------
CLOSE clc CLOSE php
sei
lda #0 Disable
ldy #SETMOUSE
jsr GOMOUSE
plp
clc
rts rts
*-------------------------------------- *--------------------------------------
GOMOUSE pha GOMOUSE pha
stz ZPGoMouse stz ZPGoMouse
lda DEVSLOTCn ldx DEVSLOTCn
sta ZPGoMouse+1 stx ZPGoMouse+1
lda (ZPGoMouse),y lda (ZPGoMouse),y
sta ZPGoMouse sta ZPGoMouse
ldy DEVSLOTn0
pla pla
jmp (ZPGoMouse) jmp (ZPGoMouse)
*-------------------------------------- *--------------------------------------
@ -143,6 +262,7 @@ DEVSIG.Offset .HS 05070B0CFB
DEVSIG.Value .HS 38180120D6 DEVSIG.Value .HS 38180120D6
DEVSIG.Length .EQ DEVSIG.Value-DEVSIG.Offset DEVSIG.Length .EQ DEVSIG.Value-DEVSIG.Offset
DEVNAME >PSTRING "MOU0" DEVNAME >PSTRING "MOU0"
DEVSLOT0n .BS 1
DEVSLOTCn .BS 1 DEVSLOTCn .BS 1
DEVSLOTn0 .BS 1 DEVSLOTn0 .BS 1
*-------------------------------------- *--------------------------------------

View File

@ -83,6 +83,7 @@ SYS.GetDevTable .EQ $74
SYS.GetDevInfoA .EQ $76 SYS.GetDevInfoA .EQ $76
SYS.DevOutA .EQ $78 SYS.DevOutA .EQ $78
SYS.GetDevByNameYA .EQ $7A
*-------------------------------------- *--------------------------------------
SYS.GetEvent .EQ $80 SYS.GetEvent .EQ $80
SYS.DestroyEvent .EQ $82 SYS.DestroyEvent .EQ $82
@ -105,6 +106,8 @@ SYS.SetNetCfg .EQ $B2
SYS.GetNetCfgA .EQ $B4 SYS.GetNetCfgA .EQ $B4
SYS.ClrNetCfgA .EQ $B6 SYS.ClrNetCfgA .EQ $B6
*-------------------------------------- *--------------------------------------
SYS.ScreenSelectA .EQ $C0
*--------------------------------------
A2osX.SaveSM .EQ $100 Main A2osX.SaveSM .EQ $100 Main
A2osX.SaveSX .EQ $101 Aux A2osX.SaveSX .EQ $101 Aux
*-------------------------------------- *--------------------------------------
@ -178,8 +181,6 @@ S.MEM.F.NOMOV .EQ %00100000
S.MEM.F.ALIGN .EQ %00010000 S.MEM.F.ALIGN .EQ %00010000
S.MEM.F.SPARE .EQ %00001000 S.MEM.F.SPARE .EQ %00001000
S.MEM.F.AUX .EQ %00000100 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.REFCNT .EQ 1
S.MEM.PTR .EQ 2 S.MEM.PTR .EQ 2
S.MEM.LEN .EQ 4 S.MEM.LEN .EQ 4
@ -212,7 +213,7 @@ S.DEV.hOWNERPS .EQ 11
* *
S.DEV.SIZE .EQ 12 S.DEV.SIZE .EQ 12
*-------------------------------------- *--------------------------------------
* Driver Function Indexes * Generic Driver Functions
*-------------------------------------- *--------------------------------------
DEVMGR.OPEN .EQ 0 DEVMGR.OPEN .EQ 0
DEVMGR.GETEVENT .EQ 2 DEVMGR.GETEVENT .EQ 2
@ -220,6 +221,11 @@ DEVMGR.OUT .EQ 4
DEVMGR.CLOSE .EQ 6 DEVMGR.CLOSE .EQ 6
DEVMGR.GETINFO .EQ 8 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.ERRNICL .EQ $EB Invalid Command Line
DEVMGR.ERRNOHW .EQ $EC No Hardware DEVMGR.ERRNOHW .EQ $EC No Hardware
DEVMGR.ERRDNF .EQ $ED Device Not Found Error DEVMGR.ERRDNF .EQ $ED Device Not Found Error

29
INC/LIBCRYPT.I.txt Normal file
View File

@ -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

13
INC/LIBGFX.I.txt Normal file
View File

@ -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

41
LIB/LIBGFX.S.txt Normal file
View File

@ -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

114
SBIN/GUI.S.txt Normal file
View File

@ -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

View File

@ -49,7 +49,7 @@ S.GetDevByIDA sta ZPQuickPtr1
>STYA ZPQuickPtr2 >STYA ZPQuickPtr2
.1 lda (ZPQuickPtr2) get S.DEV.F .1 lda (ZPQuickPtr2) get S.DEV.F
bpl .3 In use ? bpl .2 In use ?
ldy #S.DEV.ID ldy #S.DEV.ID
lda (ZPQuickPtr2),y lda (ZPQuickPtr2),y
cmp ZPQuickPtr1 cmp ZPQuickPtr1
@ -80,6 +80,7 @@ S.GetDevByIDA sta ZPQuickPtr1
* set DEVMGR.DEVPTR to devslot * set DEVMGR.DEVPTR to devslot
*-------------------------------------- *--------------------------------------
S.GetDevByNameA jsr S.GetMemPtrA S.GetDevByNameA jsr S.GetMemPtrA
S.GetDevByNameYA
>STYA ZPQuickPtr1 >STYA ZPQuickPtr1
>LDYAI DEVMGR.TABLE >LDYAI DEVMGR.TABLE
>STYA DEVMGR.DEVPTR >STYA DEVMGR.DEVPTR
@ -126,7 +127,6 @@ S.GetDevByNameA jsr S.GetMemPtrA
* X = LASTID * X = LASTID
*-------------------------------------- *--------------------------------------
S.GetDevTable >LDYAI DEVMGR.TABLE S.GetDevTable >LDYAI DEVMGR.TABLE
ldx DEVMGR.LASTID ldx DEVMGR.LASTID
rts rts
*-------------------------------------- *--------------------------------------
@ -142,28 +142,7 @@ S.DevOutA ldx #DEVMGR.OUT
S.GetDevInfoA ldx #DEVMGR.GETINFO S.GetDevInfoA ldx #DEVMGR.GETINFO
jmp S.DevCallFunc jmp S.DevCallFunc
*-------------------------------------- *--------------------------------------
* PRIVATE * 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
*-------------------------------------- *--------------------------------------
S.DevCallFunc jsr S.GetDevByIDA S.DevCallFunc jsr S.GetDevByIDA
bcs .9 bcs .9
@ -180,7 +159,6 @@ S.DevCallFunc jsr S.GetDevByIDA
* IN : none * IN : none
* OUT : A = DevID * OUT : A = DevID
* set DEVMGR.DEVPTR to freeslot * set DEVMGR.DEVPTR to freeslot
* init (DEVMGR.DEVPTR),S.DEV.ID with Dev.ID
*-------------------------------------- *--------------------------------------
S.CreateDevice >LDYAI DEVMGR.TABLE S.CreateDevice >LDYAI DEVMGR.TABLE
>STYA DEVMGR.DEVPTR >STYA DEVMGR.DEVPTR

View File

@ -315,6 +315,28 @@ S.SetEnvVar plp
*-------------------------------------- *--------------------------------------
* PRIVATE * 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 * S.SelectEnvH
* In: * In:
* PULLB = hENV * PULLB = hENV

View File

@ -47,6 +47,54 @@ S.SysScrInit stz SYSSCR.CPULOADI
clc clc
rts 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 S.SysScrCPULoad ldx SYSSCR.CPULOADI
lda SYSSCR.CPULOADC,x lda SYSSCR.CPULOADC,x
sta SYSSCR.BASL0+38 sta SYSSCR.BASL0+38
@ -268,58 +316,6 @@ S.SysScrSetCharAtYX
ply ply
rts 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.CH .BS 1
SYSSCR.CV .BS 1 SYSSCR.CV .BS 1
SYSSCR.CPULOADI .BS 1 SYSSCR.CPULOADI .BS 1

View File

@ -94,7 +94,7 @@ KERNEL.SYSCALL jmp (.1,x)
.DA S.GetDevInfoA .DA S.GetDevInfoA
.DA S.DevOutA .DA S.DevOutA
.DA 0 .DA S.GetDevByNameYA
.DA 0 .DA 0
.DA 0 .DA 0
*-------------------------------------- *--------------------------------------
@ -137,6 +137,8 @@ KERNEL.SYSCALL jmp (.1,x)
.DA 0 .DA 0
.DA 0 .DA 0
.DA 0 .DA 0
*--------------------------------------
.DA S.ScreenSelectA $C0
*-------------------------------------- *--------------------------------------
S.Kernel jsr S.KernelInit S.Kernel jsr S.KernelInit
jsr S.KernelRun jsr S.KernelRun
@ -411,28 +413,6 @@ S.ExecCmdLine jmp (.1,x)
.DA S.LoadDrvA VCPU!!!! .DA S.LoadDrvA VCPU!!!!
.DA S.CreateProcessA 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 S.PrintSysEnv ldy #S.PS.hENV
lda TSKMGR.TABLE,y Get PS #0 ENV lda TSKMGR.TABLE,y Get PS #0 ENV
jsr S.GetMemPtrA jsr S.GetMemPtrA