A2osX/DRV/DHGR.DRV.S.txt

313 lines
6.5 KiB
Plaintext
Raw Normal View History

2015-03-14 21:48:35 +00:00
PR#3
PREFIX /A2OSX.BUILD
LOMEM $A00
2015-03-14 21:48:35 +00:00
INC 1
AUTO 6
.LIST OFF
.OP 65C02
.OR $2000
.TF /A2OSX.BUILD/DRV/DHGR.DRV
2015-03-14 21:48:35 +00:00
*--------------------------------------
.INB /A2OSX.BUILD/INC/MACROS.I
.INB /A2OSX.BUILD/INC/A2OSX.I
.INB /A2OSX.BUILD/INC/IO.I
2017-11-14 16:57:34 +00:00
.INB /A2OSX.BUILD/INC/LIBGUI.I
2015-03-14 21:48:35 +00:00
*--------------------------------------
2017-11-14 16:57:34 +00:00
ZPCmdPtr .EQ ZPDRV
2017-11-15 07:27:12 +00:00
ZPBasePtr .EQ ZPDRV+2
ZPPalettePtr .EQ ZPDRV+4
2017-11-14 16:57:34 +00:00
2015-03-14 21:48:35 +00:00
*--------------------------------------
2015-06-03 18:30:57 +00:00
* File Header (16 Bytes)
2015-03-14 21:48:35 +00:00
*--------------------------------------
CS.START cld
2015-06-03 18:30:57 +00:00
jmp Dev.Detect cld,jmp abs=DRV
.DA #$61 6502,Level 1 (65c02)
.DA #1 DRV Layout Version 1
.DA 0
.DA CS.END-CS.START Code Length
.DA DEV.HEADER-CS.START Device Header Offset
.DA DRV.CS.START-CS.START Driver Code Offset
.DA DRV.CS.END-DRV.CS.START Drv Code Length
*--------------------------------------
* Relocation Table
*--------------------------------------
L.MSG.DETECT .DA MSG.DETECT
.DA 0 End Of Reloc Table
*--------------------------------------
Dev.Detect >LDYA L.MSG.DETECT
>SYSCALL PrintF.YA
2015-06-03 18:30:57 +00:00
clc
rts
2017-11-14 16:57:34 +00:00
*--------------------------------------
2015-06-03 18:30:57 +00:00
CS.END
MSG.DETECT >CSTR "Apple IIe/IIc DHGR Driver.\r\n"
2015-06-03 18:30:57 +00:00
*--------------------------------------
* Device Header (16 Bytes)
*--------------------------------------
DEV.HEADER cld
jmp (DRV.CS.START,x)
.DA #0
.BS 6
2017-11-14 16:57:34 +00:00
DEV.HEADER.NAME >CSTR "GFX"
.BS 1
2015-06-03 18:30:57 +00:00
*--------------------------------------
* Driver Code
*--------------------------------------
DRV.CS.START .DA STATUS
.DA A2osX.BADCALL
.DA A2osX.BADCALL
.DA A2osX.BADCALL
.DA CONTROL
.DA A2osX.BADCALL
.DA OPEN
2015-03-14 21:48:35 +00:00
.DA CLOSE
.DA A2osX.BADCALL
2017-11-14 16:57:34 +00:00
.DA WRITE
.DA A2osX.BADCALL
*--------------------------------------
2017-11-14 16:57:34 +00:00
J.Cmds .DA SETPIXEL
2015-03-14 21:48:35 +00:00
.DA GETPIXEL
.DA HLINE
.DA VLINE
.DA FILLRECT
2015-03-14 21:48:35 +00:00
.DA BITBLT
*--------------------------------------
2017-11-14 16:57:34 +00:00
L.DSTAT .DA DSTAT
L.DIV7.0 .DA DIV7.0
.DA DIV7.256
.DA DIV7.512
L.MOD7.0 .DA MOD7.0
.DA MOD7.256
.DA MOD7.512
2017-11-15 07:27:12 +00:00
L.Color.Pixels .DA Color.Pixels
2015-03-14 21:48:35 +00:00
.DA 0 end or relocation
*--------------------------------------
2017-11-14 16:57:34 +00:00
STATUS >LDYA L.DSTAT
clc
rts
*--------------------------------------
OPEN sta A2osX.SCRNDEVS+2 DEV.ID in A
2016-10-07 20:48:49 +00:00
2016-07-22 14:11:13 +00:00
ldy #0
ldx #0
.1 lda L.DIV7.0,y
sta DIV7.lo,x
lda L.MOD7.0,y
2016-07-22 14:11:13 +00:00
sta MOD7.lo,x
2016-07-22 14:11:13 +00:00
iny
lda L.DIV7.0,y
sta DIV7.hi,x
2016-07-22 14:11:13 +00:00
lda L.MOD7.0,y
sta MOD7.hi,x
2016-07-22 14:11:13 +00:00
iny
inx
cpx #3
bne .1
2015-03-14 21:48:35 +00:00
*--------------------------------------
CONTROL sta CLRTEXT
2016-06-07 06:10:18 +00:00
sta CLRMIXED
sta SETHIRES
sta CLR80STORE
sta CLRPAGE2
sta SETIOUDIS
sta SETDHIRES
* sta CLR80DISP
* sta SETDHIRES
* sta CLRDHIRES
* sta SET80DISP
* sta SETDHIRES
* sta CLRDHIRES
* sta SETDHIRES
lda #3
sta A2osX.ASCREEN
2016-06-07 06:10:18 +00:00
clc
rts
*--------------------------------------
CLOSE clc
rts
2017-11-14 16:57:34 +00:00
*--------------------------------------
WRITE >STYA ZPCmdPtr
2017-11-16 07:12:03 +00:00
sta SETHIRES Make sure SET80STORE active a $2000
2017-11-14 16:57:34 +00:00
sta SET80STORE
2017-11-15 16:29:23 +00:00
lda (ZPCmdPtr) Get Cmd
2017-11-14 16:57:34 +00:00
.1 tax
ldy CB.CmdLen,x
2017-11-15 16:29:23 +00:00
.2 lda (ZPCmdPtr),y
2017-11-14 16:57:34 +00:00
sta CB.Cache,y
dey
bpl .2
2017-11-15 16:29:23 +00:00
2017-11-14 16:57:34 +00:00
.3 jsr .10
sta CLR80STORE
2017-11-16 07:12:03 +00:00
clc
2017-11-14 16:57:34 +00:00
rts
.10 jmp (J.Cmds,x)
*--------------------------------------
.INB /A2OSX.SRC/DRV/DHGR.DRV.S.PIX
2017-11-14 16:57:34 +00:00
.INB /A2OSX.SRC/DRV/DHGR.DRV.S.LINE
.INB /A2OSX.SRC/DRV/DHGR.DRV.S.RECT
.INB /A2OSX.SRC/DRV/DHGR.DRV.S.BLT
2016-06-15 15:58:45 +00:00
*--------------------------------------
2017-11-14 16:57:34 +00:00
LBUF.SetBounds1YA
jsr DIVMOD7YA A=DIV, X=MOD
sta LBUF.C1
tay
2017-11-15 16:29:23 +00:00
2017-11-16 07:12:03 +00:00
lda C1.MASK,x
sta LBUF.MASK,y
2017-11-14 16:57:34 +00:00
rts
*--------------------------------------
2017-11-14 16:57:34 +00:00
LBUF.SetBounds2YA
2017-11-15 16:29:23 +00:00
jsr DIVMOD7YA A=DIV, X=MOD
2017-11-14 16:57:34 +00:00
sta LBUF.C2
tay
2017-11-15 16:29:23 +00:00
cmp LBUF.C1
beq .2
2017-11-16 07:12:03 +00:00
lda C2.MASK,x
sta LBUF.MASK,y
2017-11-14 16:57:34 +00:00
lda #0
.1 dey
cpy LBUF.C1
beq .8
2017-11-16 07:12:03 +00:00
sta LBUF.MASK,y
2017-11-14 16:57:34 +00:00
bra .1
2016-06-15 15:58:45 +00:00
2017-11-16 07:12:03 +00:00
.2 lda C1.MASK,x
and C2.MASK,x
sta LBUF.MASK,y
.8 rts
2016-06-15 15:58:45 +00:00
*--------------------------------------
2017-11-15 07:27:12 +00:00
LBUF.SetOPA
*--------------------------------------
2017-11-14 16:57:34 +00:00
LBUF.DrawAtY lda BASEL,y setup line Base Ptr
2017-11-15 07:27:12 +00:00
sta ZPBasePtr
2017-11-14 16:57:34 +00:00
lda BASEH,y
2017-11-15 07:27:12 +00:00
sta ZPBasePtr+1
2017-11-14 16:57:34 +00:00
2017-11-15 16:29:23 +00:00
2017-11-14 16:57:34 +00:00
ldy LBUF.C1 y C1->C2
.1 ldx COL.BANK,y
sta $C000,x
2017-11-15 07:27:12 +00:00
lda (ZPBasePtr),y
2017-11-16 07:12:03 +00:00
and LBUF.MASK,y
2017-11-15 07:27:12 +00:00
2017-11-16 07:12:03 +00:00
ora LBUF.DATA,y
2017-11-15 16:29:23 +00:00
lda #$ff
2017-11-15 07:27:12 +00:00
sta (ZPBasePtr),y
2017-11-14 16:57:34 +00:00
cpy LBUF.C2
2017-11-15 16:29:23 +00:00
iny
bcc .1
2017-11-14 16:57:34 +00:00
rts
2017-11-15 07:27:12 +00:00
*--------------------------------------
LBUF.DrawAtY.XOR
.1 ldx COL.BANK,y
sta $C000,x
lda (ZPBasePtr),y
2017-11-16 07:12:03 +00:00
and LBUF.MASK,y
2017-11-15 07:27:12 +00:00
2017-11-16 07:12:03 +00:00
eor LBUF.DATA,y
2017-11-15 07:27:12 +00:00
sta (ZPBasePtr),y
iny
cpy LBUF.C2
bcs .1
rts
2017-11-14 16:57:34 +00:00
*--------------------------------------
* IN:
* Y = LO
2017-11-14 16:57:34 +00:00
* A = HI
* OUT:
* A = DIV
* X = MOD
*--------------------------------------
2017-11-14 16:57:34 +00:00
DIVMOD7YA dec
beq DIVMOD7Y1
2017-11-15 16:29:23 +00:00
bpl DIVMOD7Y2
DIVMOD7Y0 lda DIV7.0,y
ldx MOD7.0,y
rts
DIVMOD7Y1 lda DIV7.256,y
clc
adc #$24
ldx MOD7.256,y
rts
DIVMOD7Y2 lda DIV7.512,y
2016-06-15 15:58:45 +00:00
clc
adc #$49
ldx MOD7.512,y
2015-03-14 21:48:35 +00:00
rts
*--------------------------------------
2015-06-03 18:30:57 +00:00
DRV.CS.END
*--------------------------------------
.INB /A2OSX.SRC/DRV/DHGR.DRV.T
*--------------------------------------
2017-11-14 16:57:34 +00:00
CB.CmdLen .DA S.CB.Y1+1 SETPIXEL
.DA S.CB.Y1+1 GETPIXEL
.DA S.CB.X2+1 HLINE
2017-11-15 16:29:23 +00:00
.DA S.CB.Y2+1 VLINE
2017-11-14 16:57:34 +00:00
.DA S.CB.Y2+1 FILLRECT
.DA S.CB.DstPtr+1 BITBLT
*--------------------------------------
CB.Cache .BS S.CB
*--------------------------------------
DIV7.lo .BS 3
DIV7.hi .BS 3
2016-07-22 14:11:13 +00:00
MOD7.lo .BS 3
MOD7.hi .BS 3
2015-03-14 21:48:35 +00:00
*--------------------------------------
2017-11-14 16:57:34 +00:00
LBUF.C1 .BS 1
2017-11-16 07:12:03 +00:00
LBUF.C2 .BS 1 C1 C2
LBUF.MASK .BS 80 Bits to CLR in VMEM & LBUF.DATA from C1 to C2 : 11100000 00000000 00111111
LBUF.DATA .BS 80 Bits to SET/ORA/XOR in VMEM from C1 to C2 : 000ccccc cccccccc cc000000
*--------------------------------------
XDIV7 .BS 1
XMOD7 .BS 1
XCOL7 .BS 1
2015-03-23 17:09:21 +00:00
GBYTE .BS 1
2015-03-14 21:48:35 +00:00
*--------------------------------------
2017-11-14 16:57:34 +00:00
DSTAT .DA #0
.DA #0,#0,#0
>PSTR "Apple II DHGR"
.BS 3
.DA #S.DSTAT.T.GFX
.DA #0
.DA $0900
*--------------------------------------
DEVSTAT.MODES .DA #S.CB.MODE.MONO+S.CB.MODE.C16
DEVSTAT.W .DA 560 X.SIZE
DEVSTAT.H .DA 192 Y.SIZE
2016-06-22 21:12:09 +00:00
*--------------------------------------
2015-03-14 21:48:35 +00:00
MAN
SAVE /A2OSX.SRC/DRV/DHGR.DRV.S
2015-03-14 21:48:35 +00:00
ASM