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
|
|
|
|
|
.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
|
|
|
|
|
2017-06-27 20:37:45 +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
|
2017-08-25 15:02:16 +00:00
|
|
|
|
>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
|
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
|
2017-11-14 16:57:34 +00:00
|
|
|
|
DEV.HEADER.NAME >CSTR "GFX"
|
2017-06-02 15:14:42 +00:00
|
|
|
|
.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-07-01 13:45:53 +00:00
|
|
|
|
.DA A2osX.BADCALL
|
|
|
|
|
.DA A2osX.BADCALL
|
|
|
|
|
.DA A2osX.BADCALL
|
2017-06-02 15:14:42 +00:00
|
|
|
|
.DA CONTROL
|
2017-07-01 13:45:53 +00:00
|
|
|
|
.DA A2osX.BADCALL
|
2017-02-06 17:04:03 +00:00
|
|
|
|
.DA OPEN
|
2015-03-14 21:48:35 +00:00
|
|
|
|
.DA CLOSE
|
2017-07-01 13:45:53 +00:00
|
|
|
|
.DA A2osX.BADCALL
|
2017-11-14 16:57:34 +00:00
|
|
|
|
.DA WRITE
|
2017-07-01 13:45:53 +00:00
|
|
|
|
.DA A2osX.BADCALL
|
2017-06-02 15:14:42 +00:00
|
|
|
|
*--------------------------------------
|
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
|
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
|
|
|
|
*--------------------------------------
|
2017-11-14 16:57:34 +00:00
|
|
|
|
L.DSTAT .DA DSTAT
|
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
|
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
|
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
|
2015-03-14 21:48:35 +00:00
|
|
|
|
*--------------------------------------
|
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
|
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)
|
2017-02-06 17:04:03 +00:00
|
|
|
|
*--------------------------------------
|
2017-07-05 14:45:19 +00:00
|
|
|
|
.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
|
2017-07-05 14:45:19 +00:00
|
|
|
|
.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-06-09 15:36:05 +00:00
|
|
|
|
*--------------------------------------
|
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
|
2017-06-09 15:36:05 +00:00
|
|
|
|
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
|
2017-06-09 15:36:05 +00:00
|
|
|
|
.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
|
|
|
|
*--------------------------------------
|
2017-06-27 20:37:45 +00:00
|
|
|
|
* IN:
|
|
|
|
|
* Y = LO
|
2017-11-14 16:57:34 +00:00
|
|
|
|
* A = HI
|
2017-06-27 20:37:45 +00:00
|
|
|
|
* 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
|
|
|
|
|
|
2017-06-27 20:37:45 +00:00
|
|
|
|
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
|
2017-06-27 20:37:45 +00:00
|
|
|
|
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
|
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-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
|
|
|
|
|
*--------------------------------------
|
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
|
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
|
2017-06-09 15:36:05 +00:00
|
|
|
|
*--------------------------------------
|
2017-06-15 15:36:25 +00:00
|
|
|
|
XDIV7 .BS 1
|
|
|
|
|
XMOD7 .BS 1
|
2017-07-01 13:45:53 +00:00
|
|
|
|
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
|
2017-06-02 15:14:42 +00:00
|
|
|
|
.DA #0,#0,#0
|
|
|
|
|
>PSTR "Apple II DHGR"
|
|
|
|
|
.BS 3
|
2017-10-27 06:36:46 +00:00
|
|
|
|
.DA #S.DSTAT.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
|
|
|
|
*--------------------------------------
|
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
|