2015-03-14 21:48:35 +00:00
|
|
|
|
PR#3
|
2017-03-29 15:48:15 +00:00
|
|
|
|
PREFIX /A2OSX.BUILD
|
2017-02-06 17:04:03 +00:00
|
|
|
|
LOMEM $A00
|
2015-03-14 21:48:35 +00:00
|
|
|
|
INC 1
|
|
|
|
|
AUTO 6
|
|
|
|
|
.LIST OFF
|
|
|
|
|
.OP 65C02
|
|
|
|
|
.OR $2000
|
2017-03-29 15:48:15 +00:00
|
|
|
|
.TF /A2OSX.BUILD/DRV/DHGR.DRV
|
2015-03-14 21:48:35 +00:00
|
|
|
|
*--------------------------------------
|
2017-03-29 15:48:15 +00:00
|
|
|
|
.INB /A2OSX.BUILD/INC/MACROS.I
|
|
|
|
|
.INB /A2OSX.BUILD/INC/A2OSX.I
|
2017-06-02 15:14:42 +00:00
|
|
|
|
.INB /A2OSX.BUILD/INC/MLI.ERR.I
|
2017-03-29 15:48:15 +00:00
|
|
|
|
.INB /A2OSX.BUILD/INC/IO.I
|
|
|
|
|
.INB /A2OSX.BUILD/INC/LIBGFX.I
|
2015-03-14 21:48:35 +00:00
|
|
|
|
*--------------------------------------
|
2016-06-19 20:31:57 +00:00
|
|
|
|
ZPBase .EQ ZPDRV
|
2016-07-22 14:11:13 +00:00
|
|
|
|
ZPShiftLo .EQ ZPDRV+2
|
|
|
|
|
ZPShiftHi .EQ ZPDRV+4
|
2017-06-15 15:36:25 +00:00
|
|
|
|
ZPCount .EQ ZPDRV+6
|
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
|
2016-11-03 16:27:43 +00:00
|
|
|
|
>SYSCALL CPrintFYA
|
2015-06-03 18:30:57 +00:00
|
|
|
|
|
2016-06-21 15:29:27 +00:00
|
|
|
|
ldx #0
|
|
|
|
|
.1 txa
|
|
|
|
|
stz Shift0.hi,x
|
|
|
|
|
asl
|
|
|
|
|
rol Shift0.hi,x
|
|
|
|
|
lsr
|
|
|
|
|
sta Shift0.lo,x
|
|
|
|
|
inx
|
2016-06-22 15:29:43 +00:00
|
|
|
|
bpl .1
|
2016-06-21 15:29:27 +00:00
|
|
|
|
|
2016-06-22 15:29:43 +00:00
|
|
|
|
ldx #0
|
2016-06-21 15:29:27 +00:00
|
|
|
|
.2 lda Shift0.hi,x
|
|
|
|
|
sta Shift1.hi,x
|
|
|
|
|
lda Shift0.lo,x
|
|
|
|
|
asl
|
|
|
|
|
asl
|
|
|
|
|
rol Shift1.hi,x
|
|
|
|
|
lsr
|
|
|
|
|
sta Shift1.lo,x
|
|
|
|
|
inx
|
2016-06-22 15:29:43 +00:00
|
|
|
|
bpl .2
|
2016-06-21 15:29:27 +00:00
|
|
|
|
|
2016-06-22 15:29:43 +00:00
|
|
|
|
ldx #0
|
2016-06-21 15:29:27 +00:00
|
|
|
|
.3 lda Shift1.hi,x
|
|
|
|
|
sta Shift2.hi,x
|
|
|
|
|
lda Shift1.lo,x
|
|
|
|
|
asl
|
|
|
|
|
asl
|
|
|
|
|
rol Shift2.hi,x
|
|
|
|
|
lsr
|
|
|
|
|
sta Shift2.lo,x
|
|
|
|
|
inx
|
2016-06-22 15:29:43 +00:00
|
|
|
|
bpl .3
|
2016-06-21 15:29:27 +00:00
|
|
|
|
|
2016-06-22 15:29:43 +00:00
|
|
|
|
ldx #0
|
2016-06-21 15:29:27 +00:00
|
|
|
|
.4 lda Shift2.hi,x
|
|
|
|
|
sta Shift3.hi,x
|
|
|
|
|
lda Shift2.lo,x
|
|
|
|
|
asl
|
|
|
|
|
asl
|
|
|
|
|
rol Shift3.hi,x
|
|
|
|
|
lsr
|
|
|
|
|
sta Shift3.lo,x
|
|
|
|
|
inx
|
2016-06-22 15:29:43 +00:00
|
|
|
|
bpl .4
|
2016-06-21 15:29:27 +00:00
|
|
|
|
|
2016-06-22 15:29:43 +00:00
|
|
|
|
ldx #0
|
2016-06-21 15:29:27 +00:00
|
|
|
|
.5 lda Shift3.hi,x
|
|
|
|
|
sta Shift4.hi,x
|
|
|
|
|
lda Shift3.lo,x
|
|
|
|
|
asl
|
|
|
|
|
asl
|
|
|
|
|
rol Shift4.hi,x
|
|
|
|
|
lsr
|
|
|
|
|
sta Shift4.lo,x
|
|
|
|
|
inx
|
2016-06-22 15:29:43 +00:00
|
|
|
|
bpl .5
|
2016-06-21 15:29:27 +00:00
|
|
|
|
|
2016-06-22 15:29:43 +00:00
|
|
|
|
ldx #0
|
2016-06-21 15:29:27 +00:00
|
|
|
|
.6 lda Shift4.hi,x
|
|
|
|
|
sta Shift5.hi,x
|
|
|
|
|
lda Shift4.lo,x
|
|
|
|
|
asl
|
|
|
|
|
asl
|
|
|
|
|
rol Shift5.hi,x
|
|
|
|
|
lsr
|
|
|
|
|
sta Shift5.lo,x
|
|
|
|
|
inx
|
2016-06-22 15:29:43 +00:00
|
|
|
|
bpl .6
|
2016-06-21 15:29:27 +00:00
|
|
|
|
|
2016-06-22 15:29:43 +00:00
|
|
|
|
ldx #0
|
2016-06-21 15:29:27 +00:00
|
|
|
|
.7 lda Shift5.hi,x
|
|
|
|
|
sta Shift6.hi,x
|
|
|
|
|
lda Shift5.lo,x
|
|
|
|
|
asl
|
|
|
|
|
asl
|
|
|
|
|
rol Shift6.hi,x
|
|
|
|
|
lsr
|
|
|
|
|
sta Shift6.lo,x
|
|
|
|
|
inx
|
2016-06-22 15:29:43 +00:00
|
|
|
|
bpl .7
|
2016-06-21 15:29:27 +00:00
|
|
|
|
|
2015-06-03 18:30:57 +00:00
|
|
|
|
clc
|
|
|
|
|
rts
|
|
|
|
|
CS.END
|
2017-06-02 15:14:42 +00:00
|
|
|
|
MSG.DETECT >CSTR "Apple IIe/IIc DHGR Driver.\r\n"
|
2015-06-03 18:30:57 +00:00
|
|
|
|
*--------------------------------------
|
|
|
|
|
* Device Header (16 Bytes)
|
|
|
|
|
*--------------------------------------
|
2017-06-02 15:14:42 +00:00
|
|
|
|
DEV.HEADER cld
|
|
|
|
|
jmp (DRV.CS.START,x)
|
2017-02-06 17:04:03 +00:00
|
|
|
|
.DA #0
|
2017-06-02 15:14:42 +00:00
|
|
|
|
.BS 6
|
|
|
|
|
DEV.HEADER.NAME >PSTR "GFX"
|
|
|
|
|
.BS 1
|
2015-06-03 18:30:57 +00:00
|
|
|
|
*--------------------------------------
|
|
|
|
|
* Driver Code
|
|
|
|
|
*--------------------------------------
|
2017-06-02 15:14:42 +00:00
|
|
|
|
DRV.CS.START .DA STATUS
|
2017-02-06 17:04:03 +00:00
|
|
|
|
.DA BADCALL
|
|
|
|
|
.DA BADCALL
|
|
|
|
|
.DA BADCALL
|
2017-06-02 15:14:42 +00:00
|
|
|
|
.DA CONTROL
|
2017-02-06 17:04:03 +00:00
|
|
|
|
.DA BADCALL
|
|
|
|
|
.DA OPEN
|
2015-03-14 21:48:35 +00:00
|
|
|
|
.DA CLOSE
|
2017-02-06 17:04:03 +00:00
|
|
|
|
.DA BADCALL
|
|
|
|
|
.DA BADCALL
|
2017-06-02 15:14:42 +00:00
|
|
|
|
.DA BADCALL
|
|
|
|
|
*--------------------------------------
|
2015-03-14 21:48:35 +00:00
|
|
|
|
.DA SETPIXEL
|
|
|
|
|
.DA GETPIXEL
|
|
|
|
|
.DA HLINE
|
|
|
|
|
.DA VLINE
|
2017-06-09 15:36:05 +00:00
|
|
|
|
.DA FILLRECT
|
2015-03-14 21:48:35 +00:00
|
|
|
|
.DA BITBLT
|
2017-06-02 15:14:42 +00:00
|
|
|
|
*--------------------------------------
|
|
|
|
|
L.STAT .DA STAT
|
2016-06-19 20:31:57 +00:00
|
|
|
|
L.DIV7.0 .DA DIV7.0
|
2017-06-12 15:47:27 +00:00
|
|
|
|
.DA DIV7.256
|
|
|
|
|
.DA DIV7.512
|
2016-06-19 20:31:57 +00:00
|
|
|
|
L.MOD7.0 .DA MOD7.0
|
2017-06-12 15:47:27 +00:00
|
|
|
|
.DA MOD7.256
|
|
|
|
|
.DA MOD7.512
|
2016-06-19 20:31:57 +00:00
|
|
|
|
L.Shift0.Lo .DA Shift0.lo
|
|
|
|
|
L.Shift0.Hi .DA Shift0.hi
|
2015-03-14 21:48:35 +00:00
|
|
|
|
.DA 0 end or relocation
|
|
|
|
|
*--------------------------------------
|
2017-02-06 17:04:03 +00:00
|
|
|
|
BADCALL lda #MLI.ERR.BADCALL
|
|
|
|
|
sec
|
|
|
|
|
rts
|
|
|
|
|
*--------------------------------------
|
2017-06-02 15:14:42 +00:00
|
|
|
|
STATUS >LDYA L.STAT
|
2017-02-06 17:04:03 +00:00
|
|
|
|
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
|
|
|
|
|
|
2017-06-12 15:47:27 +00:00
|
|
|
|
.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
|
2017-06-12 15:47:27 +00:00
|
|
|
|
|
2016-07-22 14:11:13 +00:00
|
|
|
|
iny
|
2017-06-12 15:47:27 +00:00
|
|
|
|
|
|
|
|
|
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
|
2017-06-12 15:47:27 +00:00
|
|
|
|
|
2016-07-22 14:11:13 +00:00
|
|
|
|
iny
|
|
|
|
|
inx
|
|
|
|
|
cpx #3
|
|
|
|
|
bne .1
|
2016-06-19 20:31:57 +00:00
|
|
|
|
|
|
|
|
|
ldx #7
|
|
|
|
|
lda L.Shift0.Lo+1
|
|
|
|
|
.10 sta Shiftlo.hi,x
|
|
|
|
|
inc
|
|
|
|
|
dex
|
|
|
|
|
bne .10
|
|
|
|
|
|
|
|
|
|
ldx #7
|
|
|
|
|
lda L.Shift0.hi+1
|
|
|
|
|
.11 sta Shifthi.hi,x
|
|
|
|
|
inc
|
|
|
|
|
dex
|
|
|
|
|
bne .11
|
|
|
|
|
|
|
|
|
|
.8 clc
|
2015-03-14 21:48:35 +00:00
|
|
|
|
rts
|
|
|
|
|
*--------------------------------------
|
2017-02-06 17:04:03 +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
|
2017-02-06 17:04:03 +00:00
|
|
|
|
|
|
|
|
|
lda #3
|
|
|
|
|
sta A2osX.ASCREEN
|
|
|
|
|
|
2016-06-07 06:10:18 +00:00
|
|
|
|
clc
|
|
|
|
|
rts
|
|
|
|
|
*--------------------------------------
|
2017-02-06 17:04:03 +00:00
|
|
|
|
CLOSE clc
|
|
|
|
|
rts
|
|
|
|
|
*--------------------------------------
|
2015-03-14 21:48:35 +00:00
|
|
|
|
* SETPIXEL
|
2016-07-22 14:11:13 +00:00
|
|
|
|
* In : YA = Ptr to CtrlBlk :
|
2017-06-09 15:36:05 +00:00
|
|
|
|
* 1 : OP (XOR only)
|
|
|
|
|
* 2 : Mode
|
|
|
|
|
* 3 : Color
|
|
|
|
|
* 4 : SrcX1
|
|
|
|
|
* 6 : SrcY1
|
2016-07-22 14:11:13 +00:00
|
|
|
|
*--------------------------------------
|
|
|
|
|
SETPIXEL >STYA ZPBase
|
2017-06-09 15:36:05 +00:00
|
|
|
|
ldy #S.CB.Y1 Skip S.CB.Y1+1.....always 0
|
2016-07-22 14:11:13 +00:00
|
|
|
|
.1 lda (ZPBase),y
|
2017-06-09 15:36:05 +00:00
|
|
|
|
sta CB.Cache,y
|
2016-07-22 14:11:13 +00:00
|
|
|
|
dey
|
|
|
|
|
bpl .1
|
2015-06-03 18:30:57 +00:00
|
|
|
|
|
2016-07-22 14:11:13 +00:00
|
|
|
|
sta SET80STORE
|
|
|
|
|
|
2017-06-09 15:36:05 +00:00
|
|
|
|
lda CB.Cache+S.CB.MODE
|
|
|
|
|
bit #S.CB.MODE.C16
|
|
|
|
|
bne SETPIXEL.C16
|
2017-06-12 15:47:27 +00:00
|
|
|
|
|
|
|
|
|
SETPIXEL.MONO ldx CB.Cache+S.CB.X1+1 Get X Hi byte....
|
|
|
|
|
|
|
|
|
|
lda DIV7.lo,x
|
2017-06-15 15:36:25 +00:00
|
|
|
|
sta .1+1
|
2016-06-22 15:29:43 +00:00
|
|
|
|
lda DIV7.hi,x
|
2017-06-15 15:36:25 +00:00
|
|
|
|
sta .1+2
|
2016-06-22 15:29:43 +00:00
|
|
|
|
|
2016-07-22 14:11:13 +00:00
|
|
|
|
lda MOD7.lo,x
|
2017-06-15 15:36:25 +00:00
|
|
|
|
sta .2+1
|
2016-07-22 14:11:13 +00:00
|
|
|
|
lda MOD7.hi,x
|
2017-06-15 15:36:25 +00:00
|
|
|
|
sta .2+2
|
2016-07-22 14:11:13 +00:00
|
|
|
|
|
2017-06-12 15:47:27 +00:00
|
|
|
|
lda DIV7.BASE,x
|
2017-06-09 15:36:05 +00:00
|
|
|
|
ldx CB.Cache+S.CB.X1
|
|
|
|
|
|
2017-06-12 15:47:27 +00:00
|
|
|
|
clc
|
2017-06-15 15:36:25 +00:00
|
|
|
|
.1 adc $ffff,x DIV7 : x = X.LO, a = X DIV 7
|
2017-06-12 15:47:27 +00:00
|
|
|
|
|
|
|
|
|
pha save X DIV 7
|
|
|
|
|
lsr
|
|
|
|
|
ldy CB.Cache+S.CB.Y1
|
|
|
|
|
clc
|
2016-07-22 14:11:13 +00:00
|
|
|
|
adc BASEL,y setup line Base Ptr (A=Col)
|
2016-06-19 20:31:57 +00:00
|
|
|
|
sta ZPBase
|
2016-07-22 14:11:13 +00:00
|
|
|
|
lda BASEH,y
|
2016-06-19 20:31:57 +00:00
|
|
|
|
sta ZPBase+1
|
2017-06-12 15:47:27 +00:00
|
|
|
|
ply
|
|
|
|
|
lda COL.BANK,y
|
|
|
|
|
tay
|
|
|
|
|
sta $c000,y
|
2016-06-22 15:29:43 +00:00
|
|
|
|
|
2017-06-15 15:36:25 +00:00
|
|
|
|
.2 ldy $ffff,x MOD7 : x = X.LO, y = X MOD 7
|
2016-07-22 14:11:13 +00:00
|
|
|
|
|
2017-06-09 15:36:05 +00:00
|
|
|
|
lda CB.Cache+S.CB.OP
|
|
|
|
|
beq .5
|
2016-07-22 14:11:13 +00:00
|
|
|
|
|
2017-06-09 15:36:05 +00:00
|
|
|
|
lda (ZPBase) XOR
|
2016-07-22 14:11:13 +00:00
|
|
|
|
eor Mono.Masks,y y = mod 7
|
|
|
|
|
sta (ZPBase)
|
2015-11-23 14:54:30 +00:00
|
|
|
|
|
2015-11-29 22:19:10 +00:00
|
|
|
|
sta CLR80STORE
|
2015-03-23 07:28:03 +00:00
|
|
|
|
rts
|
2015-06-03 18:30:57 +00:00
|
|
|
|
|
2016-07-22 14:11:13 +00:00
|
|
|
|
.5 lda (ZPBase)
|
2017-06-09 15:36:05 +00:00
|
|
|
|
ldx CB.Cache+S.CB.COLOR get color
|
2016-07-22 14:11:13 +00:00
|
|
|
|
bne .6
|
2016-06-22 21:12:09 +00:00
|
|
|
|
|
2016-07-22 14:11:13 +00:00
|
|
|
|
and Mono.NMasks,y includes And $7F for mono
|
|
|
|
|
sta (ZPBase)
|
2015-11-29 22:19:10 +00:00
|
|
|
|
sta CLR80STORE
|
2015-03-14 21:48:35 +00:00
|
|
|
|
rts
|
|
|
|
|
|
2016-06-22 21:12:09 +00:00
|
|
|
|
.6 and #$7F switch back this byte to mono
|
2016-07-22 14:11:13 +00:00
|
|
|
|
ora Mono.Masks,y
|
|
|
|
|
sta (ZPBase)
|
2016-10-10 15:55:26 +00:00
|
|
|
|
sta CLR80STORE
|
2015-03-14 21:48:35 +00:00
|
|
|
|
rts
|
2017-06-12 15:47:27 +00:00
|
|
|
|
|
2017-06-09 15:36:05 +00:00
|
|
|
|
SETPIXEL.C16 lda CB.Cache+S.CB.X1
|
|
|
|
|
lsr CB.Cache+S.CB.X1+1 divide by 4
|
2015-06-03 18:30:57 +00:00
|
|
|
|
ror
|
2017-06-09 15:36:05 +00:00
|
|
|
|
lsr CB.Cache+S.CB.X1+1
|
2015-06-03 18:30:57 +00:00
|
|
|
|
ror
|
2017-06-15 15:36:25 +00:00
|
|
|
|
tay Y=X/4 (range 0->139)
|
|
|
|
|
lda DIV7.0,y A=X/4/7 (range 0->19)
|
2015-11-29 22:19:10 +00:00
|
|
|
|
|
|
|
|
|
asl times 2 (range 0->38)
|
|
|
|
|
|
2017-06-09 15:36:05 +00:00
|
|
|
|
ldx CB.Cache+S.CB.Y1
|
2015-11-29 22:19:10 +00:00
|
|
|
|
adc BASEL,x setup line Base Ptr (cc by asl)
|
2016-06-19 20:31:57 +00:00
|
|
|
|
sta ZPBase ZPBase now point to first of...
|
2015-06-03 18:30:57 +00:00
|
|
|
|
lda BASEH,x
|
2016-06-19 20:31:57 +00:00
|
|
|
|
sta ZPBase+1 ...the 4 columns
|
2015-06-03 18:30:57 +00:00
|
|
|
|
|
2015-11-29 22:19:10 +00:00
|
|
|
|
lda MOD7.0,y get MOD
|
|
|
|
|
|
|
|
|
|
asl times 4 to compute index in MASK tables
|
2015-06-03 18:30:57 +00:00
|
|
|
|
asl
|
2015-03-14 21:48:35 +00:00
|
|
|
|
tax set in X for Masks,NMasks
|
|
|
|
|
|
2017-06-09 15:36:05 +00:00
|
|
|
|
lda CB.Cache+S.CB.COLOR
|
2015-06-03 18:30:57 +00:00
|
|
|
|
|
2015-11-29 22:19:10 +00:00
|
|
|
|
asl times 4 to compute index in PIXELS table
|
2015-03-14 21:48:35 +00:00
|
|
|
|
asl
|
|
|
|
|
tay
|
2015-11-29 22:19:10 +00:00
|
|
|
|
|
|
|
|
|
lda Color.Masks,x bits in 1st byte to light?
|
2016-07-22 14:11:13 +00:00
|
|
|
|
beq .10
|
2015-03-23 17:09:21 +00:00
|
|
|
|
and Color.Pixels,y apply color
|
|
|
|
|
sta GBYTE
|
2015-03-14 21:48:35 +00:00
|
|
|
|
|
2015-11-29 22:19:10 +00:00
|
|
|
|
sta SETPAGE2
|
2015-11-23 14:54:30 +00:00
|
|
|
|
|
2016-06-19 20:31:57 +00:00
|
|
|
|
lda (ZPBase)
|
2015-03-14 21:48:35 +00:00
|
|
|
|
and Color.NMasks,x reset existing pixel,
|
2015-03-23 17:09:21 +00:00
|
|
|
|
ora GBYTE
|
2016-06-19 20:31:57 +00:00
|
|
|
|
sta (ZPBase)
|
2015-03-14 21:48:35 +00:00
|
|
|
|
|
2016-07-22 14:11:13 +00:00
|
|
|
|
.10 inx
|
2015-03-14 21:48:35 +00:00
|
|
|
|
iny
|
|
|
|
|
|
|
|
|
|
lda Color.Masks,x
|
2016-07-22 14:11:13 +00:00
|
|
|
|
beq .11
|
2015-03-23 17:09:21 +00:00
|
|
|
|
and Color.Pixels,y apply color
|
|
|
|
|
sta GBYTE
|
2015-03-14 21:48:35 +00:00
|
|
|
|
|
2015-11-29 22:19:10 +00:00
|
|
|
|
sta CLRPAGE2
|
2015-11-23 14:54:30 +00:00
|
|
|
|
|
2016-06-19 20:31:57 +00:00
|
|
|
|
lda (ZPBase)
|
2015-03-14 21:48:35 +00:00
|
|
|
|
and Color.NMasks,x reset existing pixel,
|
2015-03-23 17:09:21 +00:00
|
|
|
|
ora GBYTE
|
2016-06-19 20:31:57 +00:00
|
|
|
|
sta (ZPBase)
|
2015-03-14 21:48:35 +00:00
|
|
|
|
|
2016-07-22 14:11:13 +00:00
|
|
|
|
.11 inc ZPBase
|
2015-03-14 21:48:35 +00:00
|
|
|
|
inx
|
|
|
|
|
iny
|
|
|
|
|
|
|
|
|
|
lda Color.Masks,x
|
2016-07-22 14:11:13 +00:00
|
|
|
|
beq .12
|
2015-03-23 17:09:21 +00:00
|
|
|
|
and Color.Pixels,y apply color
|
|
|
|
|
sta GBYTE
|
2015-03-14 21:48:35 +00:00
|
|
|
|
|
2015-11-29 22:19:10 +00:00
|
|
|
|
sta SETPAGE2
|
2015-11-23 14:54:30 +00:00
|
|
|
|
|
2016-06-19 20:31:57 +00:00
|
|
|
|
lda (ZPBase)
|
2015-03-14 21:48:35 +00:00
|
|
|
|
and Color.NMasks,x reset existing pixel,
|
2015-03-23 17:09:21 +00:00
|
|
|
|
ora GBYTE
|
2016-06-19 20:31:57 +00:00
|
|
|
|
sta (ZPBase)
|
2015-03-14 21:48:35 +00:00
|
|
|
|
|
2016-07-22 14:11:13 +00:00
|
|
|
|
.12 inx
|
2015-03-14 21:48:35 +00:00
|
|
|
|
iny
|
|
|
|
|
|
|
|
|
|
lda Color.Masks,x
|
2016-07-22 14:11:13 +00:00
|
|
|
|
beq .13
|
2015-03-23 17:09:21 +00:00
|
|
|
|
and Color.Pixels,y apply color
|
|
|
|
|
sta GBYTE
|
2015-03-14 21:48:35 +00:00
|
|
|
|
|
2015-11-29 22:19:10 +00:00
|
|
|
|
sta CLRPAGE2
|
2015-11-23 14:54:30 +00:00
|
|
|
|
|
2016-06-19 20:31:57 +00:00
|
|
|
|
lda (ZPBase)
|
2015-03-14 21:48:35 +00:00
|
|
|
|
and Color.NMasks,x reset existing pixel,
|
2015-03-23 17:09:21 +00:00
|
|
|
|
ora GBYTE
|
2016-06-19 20:31:57 +00:00
|
|
|
|
sta (ZPBase)
|
2015-03-23 17:09:21 +00:00
|
|
|
|
|
2016-07-22 14:11:13 +00:00
|
|
|
|
.13 sta CLR80STORE
|
2015-11-23 14:54:30 +00:00
|
|
|
|
rts
|
2015-03-14 21:48:35 +00:00
|
|
|
|
*--------------------------------------
|
2017-06-09 15:36:05 +00:00
|
|
|
|
* GETPIXEL
|
2015-03-14 21:48:35 +00:00
|
|
|
|
*--------------------------------------
|
2017-06-09 15:36:05 +00:00
|
|
|
|
GETPIXEL rts
|
2015-03-14 21:48:35 +00:00
|
|
|
|
*--------------------------------------
|
2017-06-09 15:36:05 +00:00
|
|
|
|
* HLINE X1,X2 at Y1
|
2015-03-14 21:48:35 +00:00
|
|
|
|
*--------------------------------------
|
2017-06-09 15:36:05 +00:00
|
|
|
|
HLINE >STYA ZPBase
|
|
|
|
|
ldy #S.CB.X2+1
|
|
|
|
|
|
|
|
|
|
.1 lda (ZPBase),y
|
|
|
|
|
sta CB.Cache,y
|
|
|
|
|
dey
|
|
|
|
|
bpl .1
|
|
|
|
|
|
2017-06-12 15:47:27 +00:00
|
|
|
|
HLINE.I lda CB.Cache+S.CB.MODE
|
2017-06-09 15:36:05 +00:00
|
|
|
|
bit #S.CB.MODE.C16
|
|
|
|
|
bne HLINE.C16
|
2017-06-12 15:47:27 +00:00
|
|
|
|
|
2017-06-15 15:36:25 +00:00
|
|
|
|
HLINE.MONO lda CB.Cache+S.CB.X2 Count=X2-X1
|
|
|
|
|
sec
|
|
|
|
|
sbc CB.Cache+S.CB.X1
|
|
|
|
|
eor #$ff
|
|
|
|
|
sta ZPCount
|
|
|
|
|
lda CB.Cache+S.CB.X2+1
|
|
|
|
|
sbc CB.Cache+S.CB.X1+1
|
|
|
|
|
eor #$ff
|
|
|
|
|
sta ZPCount+1
|
|
|
|
|
|
|
|
|
|
ldx CB.Cache+S.CB.X1+1 Get X Hi byte....
|
|
|
|
|
|
|
|
|
|
lda DIV7.lo,x
|
|
|
|
|
sta .1+1
|
|
|
|
|
lda DIV7.hi,x
|
|
|
|
|
sta .1+2
|
|
|
|
|
|
|
|
|
|
lda MOD7.lo,x
|
|
|
|
|
sta .2+1
|
|
|
|
|
lda MOD7.hi,x
|
|
|
|
|
sta .2+2
|
|
|
|
|
|
|
|
|
|
lda DIV7.BASE,x
|
|
|
|
|
ldx CB.Cache+S.CB.X1
|
|
|
|
|
|
|
|
|
|
clc
|
|
|
|
|
.1 adc $ffff,x DIV7 : x = X.LO, a = X DIV 7
|
|
|
|
|
|
|
|
|
|
pha save X DIV 7
|
|
|
|
|
lsr
|
|
|
|
|
ldy CB.Cache+S.CB.Y1
|
|
|
|
|
clc
|
|
|
|
|
adc BASEL,y setup line Base Ptr (A=Col)
|
|
|
|
|
sta ZPBase
|
|
|
|
|
lda BASEH,y
|
|
|
|
|
sta ZPBase+1
|
|
|
|
|
ply
|
|
|
|
|
lda COL.BANK,y
|
|
|
|
|
tay
|
|
|
|
|
sta $c000,y
|
2017-06-09 15:36:05 +00:00
|
|
|
|
|
2017-06-15 15:36:25 +00:00
|
|
|
|
.2 ldy $ffff,x MOD7 : x = X.LO, y = X MOD 7
|
2017-06-09 15:36:05 +00:00
|
|
|
|
|
2017-06-15 15:36:25 +00:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2017-06-09 15:36:05 +00:00
|
|
|
|
HLINE.C16
|
|
|
|
|
rts
|
2015-03-14 21:48:35 +00:00
|
|
|
|
*--------------------------------------
|
2017-06-09 15:36:05 +00:00
|
|
|
|
* VLINE Y1,Y2 at X1
|
2015-03-14 21:48:35 +00:00
|
|
|
|
*--------------------------------------
|
2017-06-09 15:36:05 +00:00
|
|
|
|
VLINE >STYA ZPBase
|
|
|
|
|
ldy #S.CB.Y2
|
2016-06-15 15:58:45 +00:00
|
|
|
|
|
|
|
|
|
.1 lda (ZPBase),y
|
2017-06-09 15:36:05 +00:00
|
|
|
|
sta CB.Cache,y
|
2016-06-15 15:58:45 +00:00
|
|
|
|
dey
|
|
|
|
|
bpl .1
|
|
|
|
|
|
2017-06-15 15:36:25 +00:00
|
|
|
|
sta SET80STORE
|
2017-06-16 15:27:48 +00:00
|
|
|
|
|
2017-06-15 15:36:25 +00:00
|
|
|
|
VLINE.MONO ldx CB.Cache+S.CB.X1+1 Get X Hi byte....
|
|
|
|
|
|
|
|
|
|
lda DIV7.lo,x
|
|
|
|
|
sta .1+1
|
|
|
|
|
lda DIV7.hi,x
|
|
|
|
|
sta .1+2
|
|
|
|
|
|
|
|
|
|
lda MOD7.lo,x
|
|
|
|
|
sta .2+1
|
|
|
|
|
lda MOD7.hi,x
|
|
|
|
|
sta .2+2
|
|
|
|
|
|
|
|
|
|
lda DIV7.BASE,x
|
|
|
|
|
ldx CB.Cache+S.CB.X1
|
|
|
|
|
|
|
|
|
|
clc
|
|
|
|
|
|
|
|
|
|
.1 adc $ffff,x DIV7 : x = X.LO, a = X DIV 7
|
|
|
|
|
sta XDIV7 save X DIV 7
|
|
|
|
|
|
|
|
|
|
.2 lda $ffff,x MOD7 : x = X.LO, y = X MOD 7
|
|
|
|
|
sta XMOD7
|
|
|
|
|
|
|
|
|
|
lda CB.Cache+S.CB.OP
|
|
|
|
|
beq .4
|
|
|
|
|
|
|
|
|
|
ldx CB.Cache+S.CB.Y1
|
|
|
|
|
|
|
|
|
|
.3 lda XDIV7
|
|
|
|
|
tay
|
|
|
|
|
lsr
|
|
|
|
|
clc
|
|
|
|
|
adc BASEL,x
|
|
|
|
|
sta ZPBase
|
|
|
|
|
lda BASEH,x
|
|
|
|
|
sta ZPBase+1
|
|
|
|
|
|
|
|
|
|
ldx COL.BANK,y
|
|
|
|
|
sta $C000,x
|
|
|
|
|
|
|
|
|
|
ldy XMOD7
|
|
|
|
|
lda (ZPBase) XOR
|
|
|
|
|
eor Mono.Masks,y y = mod 7
|
|
|
|
|
sta (ZPBase)
|
|
|
|
|
|
2017-06-16 15:27:48 +00:00
|
|
|
|
bra .6
|
2017-06-15 15:36:25 +00:00
|
|
|
|
|
|
|
|
|
.4 lda (ZPBase)
|
|
|
|
|
ldx CB.Cache+S.CB.COLOR get color
|
2017-06-16 15:27:48 +00:00
|
|
|
|
bne .5
|
2017-06-15 15:36:25 +00:00
|
|
|
|
|
|
|
|
|
and Mono.NMasks,y includes And $7F for mono
|
|
|
|
|
sta (ZPBase)
|
2017-06-16 15:27:48 +00:00
|
|
|
|
bra .6
|
2017-06-15 15:36:25 +00:00
|
|
|
|
|
2017-06-16 15:27:48 +00:00
|
|
|
|
.5 and #$7F switch back this byte to mono
|
2017-06-15 15:36:25 +00:00
|
|
|
|
ora Mono.Masks,y
|
|
|
|
|
sta (ZPBase)
|
2017-06-16 15:27:48 +00:00
|
|
|
|
|
|
|
|
|
.6 inc CB.Cache+S.CB.Y1
|
|
|
|
|
ldx CB.Cache+S.CB.Y1
|
|
|
|
|
cpx CB.Cache+S.CB.Y2
|
|
|
|
|
bne .3
|
|
|
|
|
|
2017-06-15 15:36:25 +00:00
|
|
|
|
sta CLR80STORE
|
|
|
|
|
rts
|
|
|
|
|
|
|
|
|
|
VLINE.C16 lda CB.Cache+S.CB.X1
|
|
|
|
|
lsr CB.Cache+S.CB.X1+1 divide by 4
|
|
|
|
|
ror
|
|
|
|
|
lsr CB.Cache+S.CB.X1+1
|
|
|
|
|
ror
|
|
|
|
|
tay Y=X/4 (range 0->139)
|
|
|
|
|
lda DIV7.0,y A=X/4/7 (range 0->19)
|
|
|
|
|
|
|
|
|
|
asl times 2 (range 0->38)
|
|
|
|
|
|
|
|
|
|
ldx CB.Cache+S.CB.Y1
|
|
|
|
|
adc BASEL,x setup line Base Ptr (cc by asl)
|
|
|
|
|
sta ZPBase ZPBase now point to first of...
|
|
|
|
|
lda BASEH,x
|
|
|
|
|
sta ZPBase+1 ...the 4 columns
|
|
|
|
|
|
|
|
|
|
lda MOD7.0,y get MOD
|
|
|
|
|
|
|
|
|
|
asl times 4 to compute index in MASK tables
|
|
|
|
|
asl
|
|
|
|
|
tax set in X for Masks,NMasks
|
|
|
|
|
|
|
|
|
|
lda CB.Cache+S.CB.COLOR
|
|
|
|
|
|
|
|
|
|
asl times 4 to compute index in PIXELS table
|
|
|
|
|
asl
|
|
|
|
|
tay
|
|
|
|
|
|
|
|
|
|
lda Color.Masks,x bits in 1st byte to light?
|
|
|
|
|
beq .10
|
|
|
|
|
and Color.Pixels,y apply color
|
|
|
|
|
sta GBYTE
|
|
|
|
|
|
|
|
|
|
sta SETPAGE2
|
2017-06-09 15:36:05 +00:00
|
|
|
|
|
2017-06-15 15:36:25 +00:00
|
|
|
|
lda (ZPBase)
|
|
|
|
|
and Color.NMasks,x reset existing pixel,
|
|
|
|
|
ora GBYTE
|
|
|
|
|
sta (ZPBase)
|
|
|
|
|
|
|
|
|
|
.10 inx
|
|
|
|
|
iny
|
|
|
|
|
|
|
|
|
|
lda Color.Masks,x
|
|
|
|
|
beq .11
|
|
|
|
|
and Color.Pixels,y apply color
|
|
|
|
|
sta GBYTE
|
|
|
|
|
|
|
|
|
|
sta CLRPAGE2
|
|
|
|
|
|
|
|
|
|
lda (ZPBase)
|
|
|
|
|
and Color.NMasks,x reset existing pixel,
|
|
|
|
|
ora GBYTE
|
|
|
|
|
sta (ZPBase)
|
|
|
|
|
|
|
|
|
|
.11 inc ZPBase
|
|
|
|
|
inx
|
|
|
|
|
iny
|
|
|
|
|
|
|
|
|
|
lda Color.Masks,x
|
|
|
|
|
beq .12
|
|
|
|
|
and Color.Pixels,y apply color
|
|
|
|
|
sta GBYTE
|
|
|
|
|
|
|
|
|
|
sta SETPAGE2
|
|
|
|
|
|
|
|
|
|
lda (ZPBase)
|
|
|
|
|
and Color.NMasks,x reset existing pixel,
|
|
|
|
|
ora GBYTE
|
|
|
|
|
sta (ZPBase)
|
|
|
|
|
|
|
|
|
|
.12 inx
|
|
|
|
|
iny
|
|
|
|
|
|
|
|
|
|
lda Color.Masks,x
|
|
|
|
|
beq .13
|
|
|
|
|
and Color.Pixels,y apply color
|
|
|
|
|
sta GBYTE
|
|
|
|
|
|
|
|
|
|
sta CLRPAGE2
|
|
|
|
|
|
|
|
|
|
lda (ZPBase)
|
|
|
|
|
and Color.NMasks,x reset existing pixel,
|
|
|
|
|
ora GBYTE
|
|
|
|
|
sta (ZPBase)
|
|
|
|
|
|
|
|
|
|
.13 sta CLR80STORE
|
2016-06-15 15:58:45 +00:00
|
|
|
|
rts
|
|
|
|
|
*--------------------------------------
|
2017-06-09 15:36:05 +00:00
|
|
|
|
* FILLRECT
|
|
|
|
|
* 2 : Mode
|
|
|
|
|
* 3 : Color
|
|
|
|
|
* 4 : SrcX1
|
|
|
|
|
* 6 : SrcY1
|
|
|
|
|
* 8 : SrcX2
|
|
|
|
|
* 10 : SrcY2
|
|
|
|
|
*--------------------------------------
|
|
|
|
|
FILLRECT >STYA ZPBase
|
|
|
|
|
ldy #S.CB.Y2
|
|
|
|
|
|
2016-06-15 15:58:45 +00:00
|
|
|
|
.1 lda (ZPBase),y
|
2017-06-09 15:36:05 +00:00
|
|
|
|
sta CB.Cache,y
|
2016-06-15 15:58:45 +00:00
|
|
|
|
dey
|
|
|
|
|
bpl .1
|
2016-06-19 20:31:57 +00:00
|
|
|
|
|
|
|
|
|
|
2017-06-12 15:47:27 +00:00
|
|
|
|
.2 jsr HLINE.I
|
2016-06-19 20:31:57 +00:00
|
|
|
|
|
2017-06-09 15:36:05 +00:00
|
|
|
|
lda CB.Cache+S.CB.Y1
|
|
|
|
|
cmp CB.Cache+S.CB.Y2
|
|
|
|
|
beq .8
|
2016-06-15 15:58:45 +00:00
|
|
|
|
|
2017-06-09 15:36:05 +00:00
|
|
|
|
inc CB.Cache+S.CB.Y1
|
|
|
|
|
bra .2
|
|
|
|
|
.8 rts
|
2016-06-15 15:58:45 +00:00
|
|
|
|
*--------------------------------------
|
2017-06-09 15:36:05 +00:00
|
|
|
|
* BitBlt
|
|
|
|
|
* In : YA = Ptr to CtrlBlk :
|
|
|
|
|
* 1 : OP
|
|
|
|
|
* 4 : SrcX1
|
|
|
|
|
* 6 : SrcY1
|
|
|
|
|
* 8 : SrcX2
|
|
|
|
|
* 10 : SrcY2
|
|
|
|
|
* 12 : DestX
|
|
|
|
|
* 14 : DestY
|
|
|
|
|
* 16 : BM Struct Ptr
|
|
|
|
|
* 18 : Save Ptr
|
|
|
|
|
*--------------------------------------
|
|
|
|
|
BITBLT >STYA ZPBase
|
|
|
|
|
lda (ZPBase)
|
2016-06-15 15:58:45 +00:00
|
|
|
|
clc
|
2015-03-14 21:48:35 +00:00
|
|
|
|
rts
|
|
|
|
|
*--------------------------------------
|
2015-06-03 18:30:57 +00:00
|
|
|
|
DRV.CS.END
|
|
|
|
|
*--------------------------------------
|
2016-06-23 15:56:13 +00:00
|
|
|
|
Shift0.lo .BS 128
|
|
|
|
|
Shift0.hi .BS 128
|
|
|
|
|
Shift1.lo .BS 128
|
|
|
|
|
Shift1.hi .BS 128
|
|
|
|
|
Shift2.lo .BS 128
|
|
|
|
|
Shift2.hi .BS 128
|
|
|
|
|
Shift3.lo .BS 128
|
|
|
|
|
Shift3.hi .BS 128
|
|
|
|
|
Shift4.lo .BS 128
|
|
|
|
|
Shift4.hi .BS 128
|
|
|
|
|
Shift5.lo .BS 128
|
|
|
|
|
Shift5.hi .BS 128
|
2016-06-22 15:29:43 +00:00
|
|
|
|
Shift6.lo .BS 128
|
|
|
|
|
Shift6.hi .BS 128
|
2016-06-19 20:31:57 +00:00
|
|
|
|
*--------------------------------------
|
2017-06-02 15:14:42 +00:00
|
|
|
|
.INB /A2OSX.SRC/DRV/DHGR.DRV.T
|
2016-06-19 20:31:57 +00:00
|
|
|
|
*--------------------------------------
|
2017-06-12 15:47:27 +00:00
|
|
|
|
DIV7.lo .BS 3
|
2016-06-19 20:31:57 +00:00
|
|
|
|
DIV7.hi .BS 3
|
2016-07-22 14:11:13 +00:00
|
|
|
|
MOD7.lo .BS 3
|
2016-06-19 20:31:57 +00:00
|
|
|
|
MOD7.hi .BS 3
|
|
|
|
|
Shiftlo.hi .BS 7
|
|
|
|
|
Shifthi.hi .BS 7
|
2015-03-14 21:48:35 +00:00
|
|
|
|
*--------------------------------------
|
2017-06-09 15:36:05 +00:00
|
|
|
|
CB.Cache .BS S.CB
|
|
|
|
|
*--------------------------------------
|
2017-06-15 15:36:25 +00:00
|
|
|
|
XDIV7 .BS 1
|
|
|
|
|
XMOD7 .BS 1
|
2015-03-23 17:09:21 +00:00
|
|
|
|
GBYTE .BS 1
|
2015-03-14 21:48:35 +00:00
|
|
|
|
*--------------------------------------
|
2017-06-02 15:14:42 +00:00
|
|
|
|
STAT .DA #0
|
|
|
|
|
.DA #0,#0,#0
|
|
|
|
|
>PSTR "Apple II DHGR"
|
|
|
|
|
.BS 3
|
|
|
|
|
.DA #S.DEVSTAT.T.GFX
|
2017-02-06 17:04:03 +00:00
|
|
|
|
.DA #0
|
|
|
|
|
.DA $0900
|
|
|
|
|
*--------------------------------------
|
2017-06-09 15:36:05 +00:00
|
|
|
|
DEVSTAT.MODES .DA #S.CB.MODE.MONO+S.CB.MODE.C16
|
2017-02-06 17:04:03 +00:00
|
|
|
|
DEVSTAT.W .DA 560 X.SIZE
|
|
|
|
|
DEVSTAT.H .DA 192 Y.SIZE
|
2016-06-22 21:12:09 +00:00
|
|
|
|
*--------------------------------------
|
2016-06-21 15:29:27 +00:00
|
|
|
|
DRV.SIZE .EQ *-DRV.CS.START
|
2016-06-22 21:12:09 +00:00
|
|
|
|
*--------------------------------------
|
2016-06-21 15:29:27 +00:00
|
|
|
|
.LIST OFF
|
2015-03-14 21:48:35 +00:00
|
|
|
|
MAN
|
2017-06-02 15:14:42 +00:00
|
|
|
|
SAVE /A2OSX.SRC/DRV/DHGR.DRV.S
|
2015-03-14 21:48:35 +00:00
|
|
|
|
ASM
|