2015-03-14 21:48:35 +00:00
|
|
|
|
PR#3
|
2015-06-03 18:30:57 +00:00
|
|
|
|
PREFIX /A2OSX.SRC
|
2015-03-14 21:48:35 +00:00
|
|
|
|
NEW
|
|
|
|
|
INC 1
|
|
|
|
|
AUTO 6
|
|
|
|
|
.LIST OFF
|
|
|
|
|
.OP 65C02
|
|
|
|
|
.OR $2000
|
2015-06-03 18:30:57 +00:00
|
|
|
|
.TF /A2OSX.BOOT/DRV/DHGR.DRV
|
2015-03-14 21:48:35 +00:00
|
|
|
|
*--------------------------------------
|
|
|
|
|
.INB INC/MACROS.I
|
|
|
|
|
.INB INC/A2OSX.I
|
|
|
|
|
.INB INC/IO.I
|
2016-06-15 06:21:42 +00:00
|
|
|
|
.INB INC/LIBGFX.I
|
2015-03-14 21:48:35 +00:00
|
|
|
|
*--------------------------------------
|
2016-06-19 20:31:57 +00:00
|
|
|
|
ZPBase .EQ ZPDRV
|
2016-06-15 06:21:42 +00:00
|
|
|
|
ZPBitBlt .EQ ZPDRV+2
|
2016-06-19 20:31:57 +00:00
|
|
|
|
ZPShiftLo .EQ ZPDRV+4
|
|
|
|
|
ZPShiftHi .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
|
2015-11-23 14:54:30 +00:00
|
|
|
|
>SYSCALL SYS.PSTROutYA
|
2015-06-03 18:30:57 +00:00
|
|
|
|
|
|
|
|
|
clc
|
|
|
|
|
rts
|
|
|
|
|
CS.END
|
2015-11-23 14:54:30 +00:00
|
|
|
|
MSG.DETECT >PSTRING "\nApple IIe/IIc DHGR Driver.\n"
|
2015-06-03 18:30:57 +00:00
|
|
|
|
*--------------------------------------
|
|
|
|
|
* Device Header (16 Bytes)
|
|
|
|
|
*--------------------------------------
|
|
|
|
|
DEV.HEADER cld
|
|
|
|
|
jmp (DRV.CS.START,x)
|
2016-06-07 06:10:18 +00:00
|
|
|
|
.HS 00 DevID
|
2015-11-22 22:30:06 +00:00
|
|
|
|
.DA #S.DEV.F.EVENT
|
2015-06-03 18:30:57 +00:00
|
|
|
|
>PSTRING "GFX" NAME
|
|
|
|
|
.HS 00 NAME must Be 5 bytes long
|
2016-06-07 06:10:18 +00:00
|
|
|
|
.HS 00
|
2015-06-03 18:30:57 +00:00
|
|
|
|
.HS 00.00.00.00
|
|
|
|
|
*--------------------------------------
|
|
|
|
|
* Driver Code
|
|
|
|
|
*--------------------------------------
|
|
|
|
|
DRV.CS.START .DA OPEN
|
2015-03-14 21:48:35 +00:00
|
|
|
|
.DA GETEVENT
|
2015-06-03 18:30:57 +00:00
|
|
|
|
.DA COUT
|
2015-03-14 21:48:35 +00:00
|
|
|
|
.DA CLOSE
|
|
|
|
|
.DA GETINFO
|
2015-06-03 18:30:57 +00:00
|
|
|
|
.DA IRQ
|
2016-06-07 06:10:18 +00:00
|
|
|
|
.DA SELECT
|
2015-03-14 21:48:35 +00:00
|
|
|
|
.DA SETPIXEL
|
|
|
|
|
.DA GETPIXEL
|
|
|
|
|
.DA HLINE
|
|
|
|
|
.DA VLINE
|
|
|
|
|
.DA BITBLT
|
2015-06-03 18:30:57 +00:00
|
|
|
|
.DA FILLREC
|
2016-06-15 15:58:45 +00:00
|
|
|
|
.DA SETCURPOS
|
|
|
|
|
.DA SETCUR
|
|
|
|
|
.DA HIDECUR
|
|
|
|
|
.DA SHOWCUR
|
2015-03-14 21:48:35 +00:00
|
|
|
|
L.DEVINFO .DA DEVINFO
|
2016-06-19 20:31:57 +00:00
|
|
|
|
L.DIV7.0 .DA DIV7.0
|
|
|
|
|
L.DIV7.256 .DA DIV7.256
|
|
|
|
|
L.DIV7.512 .DA DIV7.512
|
|
|
|
|
L.MOD7.0 .DA MOD7.0
|
|
|
|
|
L.MOD7.256 .DA MOD7.256
|
|
|
|
|
L.MOD7.512 .DA MOD7.512
|
|
|
|
|
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
|
|
|
|
|
*--------------------------------------
|
2016-06-07 06:10:18 +00:00
|
|
|
|
OPEN ldy #S.DEV.ID
|
|
|
|
|
lda (pDev),y
|
|
|
|
|
sta A2osX.SCRNDEVS+2
|
2015-03-23 07:28:03 +00:00
|
|
|
|
|
2016-06-07 06:10:18 +00:00
|
|
|
|
jsr SELECT
|
|
|
|
|
lda #3
|
|
|
|
|
sta A2osX.ASCREEN
|
2015-03-23 07:28:03 +00:00
|
|
|
|
|
2016-06-19 20:31:57 +00:00
|
|
|
|
lda L.DIV7.0+1
|
|
|
|
|
sta DIV7.hi
|
|
|
|
|
lda L.DIV7.256+1
|
|
|
|
|
sta DIV7.hi+1
|
|
|
|
|
lda L.DIV7.512+1
|
|
|
|
|
sta DIV7.hi+2
|
|
|
|
|
|
|
|
|
|
lda L.MOD7.0+1
|
|
|
|
|
sta MOD7.hi
|
|
|
|
|
lda L.MOD7.256+1
|
|
|
|
|
sta MOD7.hi+1
|
|
|
|
|
lda L.MOD7.512+1
|
|
|
|
|
sta MOD7.hi+2
|
|
|
|
|
|
|
|
|
|
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
|
|
|
|
|
|
|
|
|
|
ldy #0
|
|
|
|
|
|
|
|
|
|
.12 sty CX
|
|
|
|
|
stz CX+1
|
|
|
|
|
|
|
|
|
|
lda CX
|
|
|
|
|
sta Shift0.lo,y
|
|
|
|
|
lda CX+1
|
|
|
|
|
sta Shift0.hi,y
|
|
|
|
|
|
|
|
|
|
lsr CX
|
|
|
|
|
ror CX+1
|
|
|
|
|
lda CX
|
|
|
|
|
sta Shift1.lo,y
|
|
|
|
|
lda CX+1
|
|
|
|
|
sta Shift1.hi,y
|
|
|
|
|
|
|
|
|
|
lsr CX
|
|
|
|
|
ror CX+1
|
|
|
|
|
lda CX
|
|
|
|
|
sta Shift2.lo,y
|
|
|
|
|
lda CX+1
|
|
|
|
|
sta Shift2.hi,y
|
|
|
|
|
|
|
|
|
|
lsr CX
|
|
|
|
|
ror CX+1
|
|
|
|
|
lda CX
|
|
|
|
|
sta Shift3.lo,y
|
|
|
|
|
lda CX+1
|
|
|
|
|
sta Shift3.hi,y
|
|
|
|
|
|
|
|
|
|
lsr CX
|
|
|
|
|
ror CX+1
|
|
|
|
|
lda CX
|
|
|
|
|
sta Shift4.lo,y
|
|
|
|
|
lda CX+1
|
|
|
|
|
sta Shift4.hi,y
|
|
|
|
|
|
|
|
|
|
lsr CX
|
|
|
|
|
ror CX+1
|
|
|
|
|
lda CX
|
|
|
|
|
sta Shift5.lo,y
|
|
|
|
|
lda CX+1
|
|
|
|
|
sta Shift5.hi,y
|
|
|
|
|
|
|
|
|
|
lsr CX
|
|
|
|
|
ror CX+1
|
|
|
|
|
lda CX
|
|
|
|
|
sta Shift6.lo,y
|
|
|
|
|
lda CX+1
|
|
|
|
|
sta Shift6.hi,y
|
|
|
|
|
|
|
|
|
|
iny
|
|
|
|
|
beq .8
|
|
|
|
|
jmp .12
|
|
|
|
|
|
|
|
|
|
.8 clc
|
2015-03-14 21:48:35 +00:00
|
|
|
|
rts
|
|
|
|
|
*--------------------------------------
|
2015-11-22 22:30:06 +00:00
|
|
|
|
GETEVENT lda A2osX.ASCREEN
|
2016-06-07 06:10:18 +00:00
|
|
|
|
cmp #3
|
|
|
|
|
bne .9
|
2015-11-22 22:30:06 +00:00
|
|
|
|
|
|
|
|
|
>SYSCALL SYS.GetKeyboardEvent
|
|
|
|
|
bcs .9
|
2016-06-07 06:10:18 +00:00
|
|
|
|
|
2015-11-22 22:30:06 +00:00
|
|
|
|
rts
|
|
|
|
|
|
|
|
|
|
.9 lda #0 Error = no event
|
|
|
|
|
sec
|
|
|
|
|
rts
|
|
|
|
|
*--------------------------------------
|
2015-06-03 18:30:57 +00:00
|
|
|
|
COUT
|
|
|
|
|
IRQ sec
|
2015-03-14 21:48:35 +00:00
|
|
|
|
rts
|
|
|
|
|
*--------------------------------------
|
2015-06-03 18:30:57 +00:00
|
|
|
|
CLOSE clc
|
2015-03-14 21:48:35 +00:00
|
|
|
|
rts
|
|
|
|
|
*--------------------------------------
|
|
|
|
|
GETINFO >LDYA L.DEVINFO
|
|
|
|
|
clc
|
|
|
|
|
rts
|
|
|
|
|
*--------------------------------------
|
2016-06-07 06:10:18 +00:00
|
|
|
|
SELECT sta CLRTEXT
|
|
|
|
|
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
|
|
|
|
|
clc
|
|
|
|
|
rts
|
|
|
|
|
*--------------------------------------
|
2015-03-14 21:48:35 +00:00
|
|
|
|
* SETPIXEL
|
|
|
|
|
* PULLB = Mode
|
2015-06-03 18:30:57 +00:00
|
|
|
|
* 00000001=B/W
|
2015-03-23 07:28:03 +00:00
|
|
|
|
* 00000010=16 colors
|
|
|
|
|
* 1000000=xor (mono on 1 bit)
|
2015-06-03 18:30:57 +00:00
|
|
|
|
* PULLW = X
|
|
|
|
|
* PULLB = Y
|
2015-03-14 21:48:35 +00:00
|
|
|
|
* PULLB = Color (if not xor)
|
|
|
|
|
*--------------------------------------
|
2015-11-29 22:19:10 +00:00
|
|
|
|
SETPIXEL sta SET80STORE
|
|
|
|
|
|
|
|
|
|
>PULLA Pull Mode
|
2015-06-03 18:30:57 +00:00
|
|
|
|
and #$FF
|
|
|
|
|
bpl SETPIXEL.1
|
|
|
|
|
|
|
|
|
|
SETPIXEL.XOR >PULLYA Y=X.LO,A=X.HI
|
2015-03-14 21:48:35 +00:00
|
|
|
|
lsr if 256 =< x < 511
|
|
|
|
|
bcs .1
|
|
|
|
|
lsr
|
|
|
|
|
bcs .2 if 512 < x
|
2015-06-03 18:30:57 +00:00
|
|
|
|
lda DIV7.0,y
|
|
|
|
|
ldx MOD7.0,y
|
2015-03-14 21:48:35 +00:00
|
|
|
|
bra .3
|
|
|
|
|
|
2015-06-03 18:30:57 +00:00
|
|
|
|
.1 lda DIV7.256,y
|
|
|
|
|
ldx MOD7.256,y
|
2015-03-14 21:48:35 +00:00
|
|
|
|
bra .3
|
|
|
|
|
|
2015-06-03 18:30:57 +00:00
|
|
|
|
.2 lda DIV7.512,y
|
|
|
|
|
ldx MOD7.512,y
|
2015-03-14 21:48:35 +00:00
|
|
|
|
|
2015-06-03 18:30:57 +00:00
|
|
|
|
.3 lsr
|
|
|
|
|
tay
|
2016-06-07 06:10:18 +00:00
|
|
|
|
sta CLRPAGE2
|
2015-06-03 18:30:57 +00:00
|
|
|
|
bcs .4 odd=main ram
|
2015-11-29 22:19:10 +00:00
|
|
|
|
sta SETPAGE2
|
|
|
|
|
|
2015-11-23 14:54:30 +00:00
|
|
|
|
.4 >PULLA Pull Y
|
2015-03-14 21:48:35 +00:00
|
|
|
|
tax
|
|
|
|
|
lda BASEL,x setup line Base Ptr
|
2016-06-19 20:31:57 +00:00
|
|
|
|
sta ZPBase
|
2015-03-14 21:48:35 +00:00
|
|
|
|
lda BASEH,x
|
2016-06-19 20:31:57 +00:00
|
|
|
|
sta ZPBase+1
|
2015-06-03 18:30:57 +00:00
|
|
|
|
|
2016-06-19 20:31:57 +00:00
|
|
|
|
lda (ZPBase),y
|
2015-03-23 07:28:03 +00:00
|
|
|
|
eor Mono.Masks,x
|
2016-06-19 20:31:57 +00:00
|
|
|
|
sta (ZPBase),y
|
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-03-14 21:48:35 +00:00
|
|
|
|
*--------------------------------------
|
2015-06-03 18:30:57 +00:00
|
|
|
|
SETPIXEL.1 lsr
|
|
|
|
|
bcc SETPIXEL.COLOR
|
2015-11-29 22:19:10 +00:00
|
|
|
|
>PULLW CX
|
|
|
|
|
>PULLB CY
|
2015-06-03 18:30:57 +00:00
|
|
|
|
|
2015-11-29 22:19:10 +00:00
|
|
|
|
ldy CX
|
|
|
|
|
lsr CX+1 if 256 =< x < 511
|
2015-06-03 18:30:57 +00:00
|
|
|
|
bcs .1
|
2015-11-29 22:19:10 +00:00
|
|
|
|
lsr CX+1
|
2015-06-03 18:30:57 +00:00
|
|
|
|
bcs .2 if 512 < x
|
|
|
|
|
lda DIV7.0,y
|
|
|
|
|
ldx MOD7.0,y
|
|
|
|
|
bra .3
|
|
|
|
|
|
|
|
|
|
.1 lda DIV7.256,y
|
|
|
|
|
ldx MOD7.256,y
|
|
|
|
|
bra .3
|
|
|
|
|
|
|
|
|
|
.2 lda DIV7.512,y
|
|
|
|
|
ldx MOD7.512,y
|
|
|
|
|
|
|
|
|
|
.3 lsr
|
2015-11-29 22:19:10 +00:00
|
|
|
|
bcc .4 odd=main ram
|
|
|
|
|
sta CLRPAGE2
|
|
|
|
|
clc
|
|
|
|
|
bra .41
|
|
|
|
|
.4 sta SETPAGE2
|
|
|
|
|
|
|
|
|
|
.41 ldy CY
|
|
|
|
|
adc BASEL,y setup line Base Ptr
|
2016-06-19 20:31:57 +00:00
|
|
|
|
sta ZPBase
|
2015-11-29 22:19:10 +00:00
|
|
|
|
lda BASEH,y
|
2016-06-19 20:31:57 +00:00
|
|
|
|
sta ZPBase+1
|
2015-06-03 18:30:57 +00:00
|
|
|
|
|
|
|
|
|
>PULLA Pull Color
|
2015-03-14 21:48:35 +00:00
|
|
|
|
lsr
|
2015-06-03 18:30:57 +00:00
|
|
|
|
bcs .6 set white pixel
|
2015-03-14 21:48:35 +00:00
|
|
|
|
|
2016-06-19 20:31:57 +00:00
|
|
|
|
lda (ZPBase)
|
2015-03-23 07:28:03 +00:00
|
|
|
|
and Mono.NMasks,x includes And $7F for mono
|
2016-06-19 20:31:57 +00:00
|
|
|
|
sta (ZPBase)
|
2015-11-29 22:19:10 +00:00
|
|
|
|
sta CLR80STORE
|
2015-03-14 21:48:35 +00:00
|
|
|
|
rts
|
|
|
|
|
|
2016-06-19 20:31:57 +00:00
|
|
|
|
.6 lda (ZPBase)
|
2015-03-23 07:28:03 +00:00
|
|
|
|
and #$7F switch back this byte to mono
|
2015-03-14 21:48:35 +00:00
|
|
|
|
ora Mono.Masks,x
|
2016-06-19 20:31:57 +00:00
|
|
|
|
sta (ZPBase)
|
2015-11-29 22:19:10 +00:00
|
|
|
|
sta CLR80STORE
|
2015-03-14 21:48:35 +00:00
|
|
|
|
rts
|
|
|
|
|
*--------------------------------------
|
2015-11-29 22:19:10 +00:00
|
|
|
|
SETPIXEL.COLOR >PULLW CX Get X.LO...
|
|
|
|
|
>PULLB CY
|
|
|
|
|
|
|
|
|
|
lda CX
|
|
|
|
|
lsr CX+1 divide by 4
|
2015-06-03 18:30:57 +00:00
|
|
|
|
ror
|
2015-11-29 22:19:10 +00:00
|
|
|
|
lsr CX+1
|
2015-06-03 18:30:57 +00:00
|
|
|
|
ror
|
2015-11-29 22:19:10 +00:00
|
|
|
|
tay Y=CX/4 (range 0->139)
|
|
|
|
|
lda DIV7.0,y A=CX/4/7 (range 0->19)
|
|
|
|
|
|
|
|
|
|
asl times 2 (range 0->38)
|
|
|
|
|
|
|
|
|
|
ldx CY
|
|
|
|
|
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
|
|
|
|
|
|
|
|
|
|
>PULLA get 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?
|
2015-03-14 21:48:35 +00:00
|
|
|
|
beq .1
|
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
|
|
|
|
|
|
|
|
|
.1 inx
|
|
|
|
|
iny
|
|
|
|
|
|
|
|
|
|
lda Color.Masks,x
|
|
|
|
|
beq .2
|
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-06-19 20:31:57 +00:00
|
|
|
|
.2 inc ZPBase
|
2015-03-14 21:48:35 +00:00
|
|
|
|
inx
|
|
|
|
|
iny
|
|
|
|
|
|
|
|
|
|
lda Color.Masks,x
|
|
|
|
|
beq .3
|
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
|
|
|
|
|
|
|
|
|
.3 inx
|
|
|
|
|
iny
|
|
|
|
|
|
|
|
|
|
lda Color.Masks,x
|
|
|
|
|
beq .8
|
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
|
|
|
|
|
2015-11-29 22:19:10 +00:00
|
|
|
|
.8 sta CLR80STORE
|
2015-11-23 14:54:30 +00:00
|
|
|
|
rts
|
2015-03-14 21:48:35 +00:00
|
|
|
|
*--------------------------------------
|
2015-11-29 22:19:10 +00:00
|
|
|
|
GETPIXEL rts
|
2015-03-14 21:48:35 +00:00
|
|
|
|
*--------------------------------------
|
2015-11-29 22:19:10 +00:00
|
|
|
|
HLINE rts
|
2015-03-14 21:48:35 +00:00
|
|
|
|
*--------------------------------------
|
2015-11-29 22:19:10 +00:00
|
|
|
|
VLINE rts
|
2015-03-14 21:48:35 +00:00
|
|
|
|
*--------------------------------------
|
2015-11-29 22:19:10 +00:00
|
|
|
|
FILLREC rts
|
2015-03-14 21:48:35 +00:00
|
|
|
|
*--------------------------------------
|
2016-06-15 06:21:42 +00:00
|
|
|
|
* BitBlt
|
2016-06-15 15:58:45 +00:00
|
|
|
|
* In : YA = Ptr to Job :
|
2016-06-15 06:21:42 +00:00
|
|
|
|
* 0 : Operation
|
2016-06-15 15:58:45 +00:00
|
|
|
|
* %00000001 : Save
|
|
|
|
|
* %00000010 : Replace
|
|
|
|
|
* %00000100 : AND with Src BitMask
|
|
|
|
|
* %00001000 : ORA with Src BitMap
|
|
|
|
|
* %00010000 : XOR
|
|
|
|
|
* 2 : SavePTR
|
|
|
|
|
* 4 : SrcAX
|
|
|
|
|
* 6 : SrcAY
|
|
|
|
|
* 8 : SrcBX
|
|
|
|
|
* 10 : SrcBY
|
|
|
|
|
* 12 : DestX
|
|
|
|
|
* 14 : DestY
|
|
|
|
|
* 16 : BM Struct
|
2015-03-14 21:48:35 +00:00
|
|
|
|
*--------------------------------------
|
2016-06-15 06:21:42 +00:00
|
|
|
|
BITBLT >STYA ZPBitBlt
|
|
|
|
|
lda (ZPBitBlt)
|
2016-06-15 15:58:45 +00:00
|
|
|
|
clc
|
|
|
|
|
rts
|
|
|
|
|
*--------------------------------------
|
2016-06-19 20:31:57 +00:00
|
|
|
|
SETCURPOS >STYA ZPBase
|
2016-06-15 15:58:45 +00:00
|
|
|
|
|
|
|
|
|
ldy #3
|
|
|
|
|
.1 lda (ZPBase),y
|
|
|
|
|
sta CUR.X,y
|
|
|
|
|
dey
|
|
|
|
|
bpl .1
|
|
|
|
|
|
|
|
|
|
bit CUR.State
|
|
|
|
|
bpl .2
|
|
|
|
|
jsr HIDECUR.I
|
|
|
|
|
jsr SHOWCUR.I
|
|
|
|
|
.2 clc
|
|
|
|
|
rts
|
|
|
|
|
*--------------------------------------
|
|
|
|
|
SETCUR >STYA ZPBase
|
|
|
|
|
ldy #S.CUR-1
|
|
|
|
|
.1 lda (ZPBase),y
|
2016-06-19 20:31:57 +00:00
|
|
|
|
sta CUR.Buf,y
|
2016-06-15 15:58:45 +00:00
|
|
|
|
dey
|
|
|
|
|
bpl .1
|
|
|
|
|
|
|
|
|
|
bit CUR.State
|
|
|
|
|
bpl .2
|
|
|
|
|
jsr HIDECUR.I
|
|
|
|
|
jsr SHOWCUR.I
|
|
|
|
|
.2 clc
|
|
|
|
|
rts
|
|
|
|
|
*--------------------------------------
|
|
|
|
|
SHOWCUR bit CUR.State
|
2016-06-19 20:31:57 +00:00
|
|
|
|
bpl SHOWCUR.I
|
|
|
|
|
clc
|
|
|
|
|
rts
|
|
|
|
|
|
|
|
|
|
SHOWCUR.I sta SET80STORE
|
|
|
|
|
|
|
|
|
|
ldx CUR.X+1
|
|
|
|
|
lda DIV7.hi,x
|
|
|
|
|
sta .71+2
|
|
|
|
|
lda MOD7.hi,x
|
|
|
|
|
sta .72+2
|
2016-06-15 15:58:45 +00:00
|
|
|
|
|
2016-06-19 20:31:57 +00:00
|
|
|
|
ldx CUR.X
|
2016-06-15 15:58:45 +00:00
|
|
|
|
|
2016-06-19 20:31:57 +00:00
|
|
|
|
.71 lda DIV7.0,x
|
|
|
|
|
lsr
|
|
|
|
|
sta SB.StartCol
|
|
|
|
|
lda #0
|
|
|
|
|
sbc #0
|
|
|
|
|
sta SB.StartPage
|
|
|
|
|
|
|
|
|
|
.72 ldy MOD7.0,x
|
|
|
|
|
lda Shiftlo.Hi,y
|
|
|
|
|
sta ZPShiftLo+1
|
|
|
|
|
lda ShiftHi.Hi,y
|
|
|
|
|
sta ZPShiftHi+1
|
|
|
|
|
|
|
|
|
|
lda L.Shift0.Lo
|
|
|
|
|
sta ZPShiftLo
|
|
|
|
|
lda L.Shift0.hi
|
|
|
|
|
sta ZPShifthi
|
|
|
|
|
|
|
|
|
|
lda CUR.Y
|
|
|
|
|
sta CY
|
|
|
|
|
|
|
|
|
|
ldx #0 index to CUR data/mask
|
|
|
|
|
|
|
|
|
|
.1 ldy CY
|
|
|
|
|
lda BaseL,y
|
|
|
|
|
clc
|
|
|
|
|
adc SB.StartCol
|
|
|
|
|
sta ZPBase
|
|
|
|
|
|
|
|
|
|
lda BaseH,y
|
|
|
|
|
sta ZPBase+1
|
|
|
|
|
|
|
|
|
|
lda SB.StartPage
|
|
|
|
|
sta SB.Page
|
|
|
|
|
|
|
|
|
|
lda SB.Page
|
|
|
|
|
tay
|
|
|
|
|
eor #1
|
|
|
|
|
sta SB.Page
|
|
|
|
|
sta CLRPAGE2,y
|
|
|
|
|
|
|
|
|
|
lda (ZPBase)
|
|
|
|
|
ldy CUR.Buf+S.CUR.MASK,x
|
|
|
|
|
and (ZPShiftLo),y
|
|
|
|
|
ldy CUR.Buf+S.CUR.DATA,x
|
|
|
|
|
ora (ZPShiftLo),y
|
|
|
|
|
sta (ZPBase)
|
|
|
|
|
|
|
|
|
|
lda SB.Page
|
|
|
|
|
tay
|
|
|
|
|
eor #1
|
|
|
|
|
sta SB.Page
|
|
|
|
|
sta CLRPAGE2,y
|
|
|
|
|
beq .3
|
|
|
|
|
inc ZPBase
|
|
|
|
|
|
|
|
|
|
.3 lda (ZPBase)
|
|
|
|
|
ldy CUR.Buf+S.CUR.MASK,x
|
|
|
|
|
and (ZPShiftHi),y
|
|
|
|
|
ldy CUR.Buf+S.CUR.DATA,x
|
|
|
|
|
ora (ZPShiftHi),y
|
|
|
|
|
inx
|
|
|
|
|
ldy CUR.Buf+S.CUR.MASK,x
|
|
|
|
|
and (ZPShiftLo),y
|
|
|
|
|
ldy CUR.Buf+S.CUR.DATA,x
|
|
|
|
|
ora (ZPShiftLo),y
|
|
|
|
|
sta (ZPBase)
|
|
|
|
|
|
|
|
|
|
lda SB.Page
|
|
|
|
|
tay
|
|
|
|
|
eor #1
|
|
|
|
|
sta SB.Page
|
|
|
|
|
sta CLRPAGE2,y
|
|
|
|
|
beq .4
|
|
|
|
|
inc ZPBase
|
|
|
|
|
|
|
|
|
|
.4 lda (ZPBase)
|
|
|
|
|
ldy CUR.Buf+S.CUR.MASK,x
|
|
|
|
|
and (ZPShiftHi),y
|
|
|
|
|
ldy CUR.Buf+S.CUR.DATA,x
|
|
|
|
|
ora (ZPShiftHi),y
|
|
|
|
|
sta (ZPBase)
|
2016-06-15 15:58:45 +00:00
|
|
|
|
|
2016-06-19 20:31:57 +00:00
|
|
|
|
inx
|
|
|
|
|
cpx #32
|
|
|
|
|
bne .1
|
|
|
|
|
|
|
|
|
|
sta CLR80STORE
|
2016-06-15 15:58:45 +00:00
|
|
|
|
sec
|
|
|
|
|
ror CUR.State
|
2016-06-19 20:31:57 +00:00
|
|
|
|
|
|
|
|
|
SHOWCUR.RTS clc
|
2016-06-15 15:58:45 +00:00
|
|
|
|
rts
|
|
|
|
|
*--------------------------------------
|
|
|
|
|
HIDECUR bit CUR.State
|
2016-06-19 20:31:57 +00:00
|
|
|
|
bpl HIDECUR.RTS
|
2016-06-15 15:58:45 +00:00
|
|
|
|
|
|
|
|
|
HIDECUR.I
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
clc
|
|
|
|
|
ror CUR.State
|
2016-06-19 20:31:57 +00:00
|
|
|
|
HIDECUR.RTS clc
|
2015-03-14 21:48:35 +00:00
|
|
|
|
rts
|
|
|
|
|
*--------------------------------------
|
2015-06-03 18:30:57 +00:00
|
|
|
|
DRV.CS.END
|
|
|
|
|
*--------------------------------------
|
2016-06-19 20:31:57 +00:00
|
|
|
|
Shift0.lo .BS 256
|
|
|
|
|
Shift0.hi .BS 256
|
|
|
|
|
Shift1.lo .BS 256
|
|
|
|
|
Shift1.hi .BS 256
|
|
|
|
|
Shift2.lo .BS 256
|
|
|
|
|
Shift2.hi .BS 256
|
|
|
|
|
Shift3.lo .BS 256
|
|
|
|
|
Shift3.hi .BS 256
|
|
|
|
|
Shift4.lo .BS 256
|
|
|
|
|
Shift4.hi .BS 256
|
|
|
|
|
Shift5.lo .BS 256
|
|
|
|
|
Shift5.hi .BS 256
|
|
|
|
|
Shift6.lo .BS 256
|
|
|
|
|
Shift6.hi .BS 256
|
|
|
|
|
*--------------------------------------
|
|
|
|
|
.INB DRV/DHGR.DRV.T
|
|
|
|
|
*--------------------------------------
|
|
|
|
|
DIV7.hi .BS 3
|
|
|
|
|
MOD7.hi .BS 3
|
|
|
|
|
Shiftlo.hi .BS 7
|
|
|
|
|
Shifthi.hi .BS 7
|
2015-03-14 21:48:35 +00:00
|
|
|
|
*--------------------------------------
|
2015-11-29 22:19:10 +00:00
|
|
|
|
CX .BS 2
|
|
|
|
|
CY .BS 1
|
|
|
|
|
COL .BS 1
|
2015-03-23 17:09:21 +00:00
|
|
|
|
GBYTE .BS 1
|
2015-03-14 21:48:35 +00:00
|
|
|
|
*--------------------------------------
|
2016-06-15 15:58:45 +00:00
|
|
|
|
CUR.State .BS 1
|
|
|
|
|
CUR.X .BS 2
|
2016-06-19 20:31:57 +00:00
|
|
|
|
CUR.Xdiv7 .BS 1
|
|
|
|
|
CUR.Xmod7 .BS 1
|
2016-06-15 15:58:45 +00:00
|
|
|
|
CUR.Y .BS 2
|
2016-06-19 20:31:57 +00:00
|
|
|
|
CUR.Buf .BS S.CUR
|
2016-06-15 15:58:45 +00:00
|
|
|
|
CUR.SaveCol .BS 1
|
|
|
|
|
CUR.SaveColCnt .BS 1
|
|
|
|
|
CUR.SaveRow .BS 1
|
|
|
|
|
CUR.SaveRowCnt .BS 1
|
|
|
|
|
CUR.SaveBuf .BS 3*16 MAX 3 bytes*16 rows
|
2016-06-19 20:31:57 +00:00
|
|
|
|
SB.StartPage .BS 1
|
|
|
|
|
SB.Page .BS 1
|
|
|
|
|
SB.StartCol .BS 1
|
|
|
|
|
SB.Col .BS 1
|
2016-06-15 15:58:45 +00:00
|
|
|
|
*--------------------------------------
|
2015-06-03 18:30:57 +00:00
|
|
|
|
DEVINFO .DA #S.DEVINFO.TYPE.GFX type of DEVINFO STRUCT
|
2015-03-23 07:28:03 +00:00
|
|
|
|
DEVINFO.MODES .DA #%10000011 XOR,16 & B/W
|
2015-03-14 21:48:35 +00:00
|
|
|
|
DEVINFO.W .DA 560 X.SIZE
|
|
|
|
|
DEVINFO.H .DA 192 Y.SIZE
|
|
|
|
|
*--------------------------------------
|
|
|
|
|
MAN
|
|
|
|
|
SAVE DRV/DHGR.DRV.S
|
|
|
|
|
ASM
|