mirror of
https://github.com/A2osX/A2osX.git
synced 2025-03-03 12:29:54 +00:00
Kernel 0.9.1 : GUI, API & Driver......RECT & BitBLT
This commit is contained in:
parent
50c85844df
commit
93ec92c91b
Binary file not shown.
Binary file not shown.
@ -106,12 +106,78 @@ BITBLT >LDYA CB.CACHE+S.CB.SrcPtr
|
||||
adc BLT.DX+1
|
||||
jsr LBUF.SetBounds2YA
|
||||
|
||||
.5 lda BLT.BMBitOfs
|
||||
sta BLT.BMBitOfsL
|
||||
|
||||
.6 jsr BLT.Get7BMBits
|
||||
|
||||
clc
|
||||
rts
|
||||
*--------------------------------------
|
||||
BLT.Get7BMBits
|
||||
* BMD/BMM bits :
|
||||
* 76543210 76543210
|
||||
* ^
|
||||
* BMBitOfsL (0->7)
|
||||
* LBUF DATA/MASK Bits
|
||||
* c6543210 c6543210
|
||||
* ^
|
||||
* SCRBitOfsL (0->6)
|
||||
*--------------------------------------
|
||||
BLT.Get7BMBits ldx BLT.BMBitOfsL
|
||||
|
||||
lda
|
||||
|
||||
sta ZPBMShiftPtr+1
|
||||
|
||||
lda (ZPBMDataPtr)
|
||||
and ShiftML,x Get only needed bits
|
||||
|
||||
tay
|
||||
|
||||
lda (ZPBMShiftPtr),y
|
||||
sta GBYTE
|
||||
|
||||
|
||||
inc ZPBMDataPtr
|
||||
bne .1
|
||||
inc ZPBMDataPtr+1
|
||||
|
||||
.1 lda (ZPBMDataPtr)
|
||||
and ShiftMH,x
|
||||
tay
|
||||
|
||||
lda (ZPBMShiftPtr),y
|
||||
ora GBYTE we have the 7 0xxxxxxx DATA bits
|
||||
|
||||
|
||||
ldx
|
||||
tay
|
||||
lda Shift.LO
|
||||
|
||||
|
||||
|
||||
rts
|
||||
*--------------------------------------
|
||||
ShiftML .DA #01111111
|
||||
.DA #11111110
|
||||
.DA #11111100
|
||||
.DA #11111000
|
||||
.DA #11110000
|
||||
.DA #11100000
|
||||
.DA #11000000
|
||||
.DA #10000000
|
||||
|
||||
ShiftMH .DA #00000000
|
||||
.DA #00000000
|
||||
.DA #00000001
|
||||
.DA #00000011
|
||||
.DA #00000111
|
||||
.DA #00001111
|
||||
.DA #00011111
|
||||
.DA #00111111
|
||||
|
||||
*--------------------------------------
|
||||
|
||||
MAN
|
||||
SAVE /A2OSX.SRC/DRV/DHGR.DRV.S.RECT
|
||||
LOAD /A2OSX.SRC/DRV/DHGR.DRV.S
|
||||
|
@ -51,6 +51,7 @@ SETPIXEL.MONO.BLACK
|
||||
|
||||
SETPIXEL.MONO.WHITE
|
||||
lda (ZPBasePtr)
|
||||
and #$7f Clear Color Bit
|
||||
ora Mono.Masks,x
|
||||
sta (ZPBasePtr)
|
||||
|
||||
@ -58,6 +59,7 @@ SETPIXEL.MONO.WHITE
|
||||
|
||||
SETPIXEL.MONO.XOR
|
||||
lda (ZPBasePtr)
|
||||
and #$7f Clear Color Bit
|
||||
eor Mono.Masks,x
|
||||
sta (ZPBasePtr)
|
||||
|
||||
|
@ -10,7 +10,9 @@ AUTO 6
|
||||
*--------------------------------------
|
||||
.INB /A2OSX.BUILD/INC/MACROS.I
|
||||
.INB /A2OSX.BUILD/INC/A2OSX.I
|
||||
.INB /A2OSX.BUILD/INC/PRODOS.I
|
||||
.INB /A2OSX.BUILD/INC/IO.I
|
||||
.INB /A2OSX.BUILD/INC/GFX.EVE.I
|
||||
.INB /A2OSX.BUILD/INC/LIBGUI.I
|
||||
*--------------------------------------
|
||||
ZPCmdPtr .EQ ZPDRV
|
||||
@ -19,6 +21,8 @@ ZPPalettePtr .EQ ZPDRV+4
|
||||
ZPBMDataPtr .EQ ZPDRV+6
|
||||
ZPBMMaskPtr .EQ ZPDRV+8
|
||||
ZPBMSavePtr .EQ ZPDRV+10
|
||||
ZPBMShiftPtr .EQ ZPDRV+12
|
||||
ZPSCRShiftPtr .EQ ZPDRV+14
|
||||
*--------------------------------------
|
||||
* File Header (16 Bytes)
|
||||
*--------------------------------------
|
||||
@ -35,16 +39,78 @@ CS.START cld
|
||||
* Relocation Table
|
||||
*--------------------------------------
|
||||
L.MSG.DETECT .DA MSG.DETECT
|
||||
L.MSG.DETECT.IIC .DA MSG.DETECT.IIC
|
||||
L.MSG.DETECT.EVE .DA MSG.DETECT.EVE
|
||||
L.MSG.DETECT.80C .DA MSG.DETECT.80C
|
||||
.DA 0 End Of Reloc Table
|
||||
*--------------------------------------
|
||||
Dev.Detect >LDYA L.MSG.DETECT
|
||||
>SYSCALL PrintF.YA
|
||||
|
||||
lda MACHID
|
||||
and #MACHID.T
|
||||
cmp #MACHID.T.IIc
|
||||
bne .1
|
||||
|
||||
lda #$80
|
||||
sta DSTAT+S.DSTAT.ST $80=//c
|
||||
|
||||
>LDYA L.MSG.DETECT.IIC
|
||||
|
||||
bra .3
|
||||
|
||||
.1 php
|
||||
sei
|
||||
|
||||
sta SET80STORE
|
||||
|
||||
sta SETPAGE2
|
||||
ldx $400 Save Aux $400
|
||||
|
||||
lda #$ff Make sure !=1 for comparing later
|
||||
sta $400
|
||||
|
||||
sta CLRPAGE2
|
||||
ldy $400 Save Main $400
|
||||
|
||||
lda #$01 Select Foreground/BKgrnd Colors
|
||||
sta TXT16.ON Activate 16 color mode
|
||||
|
||||
sta $400 Store something in Main
|
||||
|
||||
sta SETPAGE2
|
||||
|
||||
eor $400 read back AUX, If EVE, must be F/BG colors
|
||||
bne .2
|
||||
|
||||
dec
|
||||
sta DSTAT+S.DSTAT.ST 0=80C,$ff=EVE
|
||||
|
||||
.2 stx $400 Set back Aux $400
|
||||
sta CLRPAGE2
|
||||
sty $400 Set back Main $400
|
||||
|
||||
sta CLR80STORE
|
||||
|
||||
plp
|
||||
|
||||
|
||||
>LDYA L.MSG.DETECT.EVE
|
||||
|
||||
bit DSTAT+S.DSTAT.ST
|
||||
bmi .3
|
||||
|
||||
>LDYA L.MSG.DETECT.80C
|
||||
|
||||
.3 >SYSCALL PrintF.YA
|
||||
clc
|
||||
rts
|
||||
*--------------------------------------
|
||||
CS.END
|
||||
MSG.DETECT >CSTR "Apple IIe/IIc DHGR Driver.\r\n"
|
||||
MSG.DETECT.IIC >CSTR "Apple //c detected, Assuming 'Le Chat Mauve' Mode.\r\n"
|
||||
MSG.DETECT.EVE >CSTR "'Le Chat Mauve EVE' Board Detected.\r\n"
|
||||
MSG.DETECT.80C >CSTR "No Specific H/W Found, Assuming 80c Mode.\r\n"
|
||||
*--------------------------------------
|
||||
* Device Header (16 Bytes)
|
||||
*--------------------------------------
|
||||
@ -91,23 +157,22 @@ STATUS >LDYA L.DSTAT
|
||||
*--------------------------------------
|
||||
OPEN sta A2osX.SCRNDEVS+2 DEV.ID in A
|
||||
*--------------------------------------
|
||||
CONTROL sta CLRTEXT
|
||||
sta CLRMIXED
|
||||
sta SETHIRES
|
||||
sta CLR80STORE
|
||||
sta CLRPAGE2
|
||||
sta SETIOUDIS
|
||||
sta SETDHIRES
|
||||
CONTROL ldy #0
|
||||
|
||||
* sta CLR80DISP
|
||||
* sta SETDHIRES
|
||||
* sta CLRDHIRES
|
||||
* sta SET80DISP
|
||||
* sta SETDHIRES
|
||||
* sta CLRDHIRES
|
||||
* sta SETDHIRES
|
||||
bit DSTAT+S.DSTAT.ST
|
||||
bmi .1 //c,EVE mode
|
||||
|
||||
ldy #CONTROL.LCM-CONTROL.80C
|
||||
|
||||
.1 ldx CONTROL.SWTCHES,y
|
||||
bmi .8 Ending $ff
|
||||
|
||||
sta $C000,x
|
||||
|
||||
lda #3
|
||||
iny
|
||||
bra .1
|
||||
|
||||
.8 lda #3
|
||||
sta A2osX.ASCREEN
|
||||
|
||||
clc
|
||||
@ -208,6 +273,77 @@ DRV.CS.END
|
||||
*--------------------------------------
|
||||
.INB /A2OSX.SRC/DRV/DHGR.DRV.T
|
||||
*--------------------------------------
|
||||
CONTROL.SWTCHES
|
||||
* sta CLRTEXT
|
||||
* sta CLRMIXED
|
||||
* sta SETHIRES
|
||||
* sta CLR80STORE
|
||||
* sta CLRPAGE2
|
||||
* sta SETIOUDIS
|
||||
|
||||
CONTROL.80C
|
||||
* sta CLRMIXED STA $CO52 ;Full Screen
|
||||
* sta SETHIRES STA $C057 ;HIRES
|
||||
* sta CLRTEXT STA $C050 ;Graphics
|
||||
* sta CLR80DISP STA $C00C ;80 Columns OFF
|
||||
* sta SETDHIRES STA $C05E ;AN3 OFF
|
||||
* sta CLRDHIRES STA $C05F ;AN3 ON
|
||||
* sta SETDHIRES STA $C05E ;AN3 OFF
|
||||
* sta CLRDHIRES STA $C05F ;AN3 ON
|
||||
* sta SET80DISP STA $C00D ;80 Columns ON
|
||||
* sta SETDHIRES STA $C05E ;AN3 OFF
|
||||
* sta CLRDHIRES STA $C05F ;AN3 ON
|
||||
* sta SETDHIRES STA $C05E ;AN3 OFF
|
||||
|
||||
.DA #CLRTEXT
|
||||
.DA #CLRMIXED
|
||||
.DA #SETHIRES
|
||||
.DA #CLR80STORE
|
||||
.DA #CLRPAGE2
|
||||
.DA #SETIOUDIS
|
||||
|
||||
.DA #CLR80DISP
|
||||
.DA #SETDHIRES
|
||||
.DA #CLRDHIRES
|
||||
.DA #SETDHIRES
|
||||
.DA #CLRDHIRES
|
||||
.DA #SET80DISP
|
||||
.DA #SETDHIRES
|
||||
.DA #CLRDHIRES
|
||||
.DA #SETDHIRES
|
||||
.DA #$FF
|
||||
|
||||
CONTROL.LCM
|
||||
* sta CLRTEXT
|
||||
* sta CLRPAGE2
|
||||
* sta CLRMIXED
|
||||
* sta SETHIRES
|
||||
* sta CLRAN2
|
||||
* sta CLR80DISP
|
||||
* sta SETDHIRES
|
||||
* sta CLRDHIRES
|
||||
* sta SET80DISP
|
||||
* sta SETDHIRES
|
||||
* sta CLRDHIRES
|
||||
* sta SETDHIRES
|
||||
|
||||
.DA #CLRTEXT
|
||||
.DA #CLRMIXED
|
||||
.DA #SETHIRES
|
||||
.DA #CLR80STORE
|
||||
.DA #CLRPAGE2
|
||||
.DA #SETIOUDIS
|
||||
|
||||
.DA #CLRAN2
|
||||
.DA #CLR80DISP
|
||||
.DA #SETDHIRES
|
||||
.DA #CLRDHIRES
|
||||
.DA #SET80DISP
|
||||
.DA #SETDHIRES
|
||||
.DA #CLRDHIRES
|
||||
.DA #SETDHIRES
|
||||
.DA #$ff
|
||||
*--------------------------------------
|
||||
CB.CmdLen .DA S.CB.Y1+1 SETPIXEL
|
||||
.DA S.CB.Y1+1 GETPIXEL
|
||||
.DA S.CB.X2+1 HLINE
|
||||
@ -229,7 +365,9 @@ LBUF.MASK .BS 80
|
||||
LBUF.DATA .BS 80
|
||||
*--------------------------------------
|
||||
BLT.BMBitOfs .BS 1
|
||||
BLT.BMBitOfsL .BS 1
|
||||
BLT.SCRBitOfs .BS 1
|
||||
BLT.SCRBitOfsL .BS 1
|
||||
BLT.DX .BS 2
|
||||
*--------------------------------------
|
||||
GBYTE .BS 1
|
||||
|
28
INC/GFX.EVE.I.txt
Normal file
28
INC/GFX.EVE.I.txt
Normal file
@ -0,0 +1,28 @@
|
||||
PR#3
|
||||
PREFIX /A2OSX.BUILD
|
||||
NEW
|
||||
INC 1
|
||||
AUTO 6
|
||||
.LIST OFF
|
||||
*--------------------------------------
|
||||
* Le Chat Mauve : EVE
|
||||
*--------------------------------------
|
||||
ENHRCPREG.OFF .EQ $C0B0 W
|
||||
ENHRCPREG.ON .EQ $C0B1 W
|
||||
HR1.OFF .EQ $C0B2 W
|
||||
HR1.ON .EQ $C0B3 W
|
||||
HR2.OFF .EQ $C0B4 W
|
||||
HR2.ON .EQ $C0B5 W
|
||||
HR3.OFF .EQ $C0B6 W
|
||||
HR3.ON .EQ $C0B7 W
|
||||
TXT16.OFF .EQ $C0B8 W
|
||||
TXT16.ON .EQ $C0B9 W
|
||||
TXTGREEN.OFF .EQ $C0BA W
|
||||
TXTGREEN.ON .EQ $C0BB W
|
||||
LOCKCPREG.OFF .EQ $C0BC W
|
||||
LOCKCPREG.ON .EQ $C0BD W
|
||||
LOCKRES.OFF .EQ $C0BE W
|
||||
LOCKRES.ON .EQ $C0BF W
|
||||
*--------------------------------------
|
||||
MAN
|
||||
SAVE /A2OSX.BUILD/INC/GFX.EVE.I
|
@ -59,12 +59,13 @@ SETHIRES .EQ $C057 W
|
||||
*CLRAN0 .EQ $C059 W, Set annunciator-0 output to 1
|
||||
*SETAN1 .EQ $C05A W, Set annunciator-1 output to 0
|
||||
*CLRAN1 .EQ $C05B W, Set annunciator-1 output to 1
|
||||
*ENBVBLIIC .EQ $C05B W, Enable VBL switch (IIc)
|
||||
*SETAN2 .EQ $C05C W, Set annunciator-2 output to 0
|
||||
*CLRAN2 .EQ $C05D W, Set annunciator-2 output to 1
|
||||
CLRAN2 .EQ $C05D W, Set annunciator-2 output to 1
|
||||
*SETAN3 .EQ $C05E W, Set annunciator-3 output to 0
|
||||
SETDHIRES .EQ $C05E W, if IOUDIS Set, turn on double-hires
|
||||
*CLRAN3 .EQ $C05F W, Set annunciator-3 output to 1
|
||||
|
||||
*ENBVBLIIC .EQ $C05B W, Enable VBL switch (IIc)
|
||||
SETDHIRES .EQ $C05E W, if IOUDIS Set, turn on double-hires
|
||||
CLRDHIRES .EQ $C05F W, if IOUDIS Set, turn off double-hires
|
||||
|
||||
*TAPEIN .EQ $C060 R
|
||||
|
@ -113,7 +113,8 @@ K.STACKTOP .EQ $0F20 down to $0f00
|
||||
Z80STACK .EQ $0FFF (0FFFFh) Down to $0F20
|
||||
Z80JMP .EQ $1000 (00000h) Up To $10FF
|
||||
*--------------------------------------
|
||||
* free $1100->15FF = $500
|
||||
* free $1100->$15FF = $500 Main
|
||||
* free $0C00->$17FF = $C00 Aux
|
||||
*--------------------------------------
|
||||
Dev.Table .EQ $1600 K.DEV.MAX*S.DEV=32*16=512b
|
||||
*--------------------------------------
|
||||
|
@ -98,4 +98,4 @@ PP.RxFrame .EQ $0404
|
||||
PP.TxFrame .EQ $0A00
|
||||
*--------------------------------------
|
||||
MAN
|
||||
SAVE /A2OSX.BUILD/INC/NET.8900A.I
|
||||
SAVE /A2OSX.BUILD/INC/NIC.8900A.I
|
@ -63,4 +63,4 @@ L91C96.3.RCV .EQ $C08C
|
||||
L91C96.BSR .EQ $C08E
|
||||
*--------------------------------------
|
||||
MAN
|
||||
SAVE /A2OSX.BUILD/INC/NET.91C96.I
|
||||
SAVE /A2OSX.BUILD/INC/NIC.91C96.I
|
@ -77,4 +77,4 @@ RX.BASE .EQ $6000
|
||||
RXTX.MASK .EQ $1FFF
|
||||
*--------------------------------------
|
||||
MAN
|
||||
SAVE /A2OSX.BUILD/INC/NET.W5100.I
|
||||
SAVE /A2OSX.BUILD/INC/NIC.W5100.I
|
Loading…
x
Reference in New Issue
Block a user