mirror of
https://github.com/A2osX/A2osX.git
synced 2025-01-10 18:34:45 +00:00
Kernel 0.94
This commit is contained in:
parent
db6ce4e4cf
commit
12231d6fec
Binary file not shown.
@ -134,28 +134,26 @@ CS.QUIT lda hFont
|
||||
clc
|
||||
rts
|
||||
*--------------------------------------
|
||||
LoadResources bra .1
|
||||
|
||||
>PUSHWZ Aux type
|
||||
>PUSHBI $CC Type
|
||||
LoadResources >PUSHW L.FONTFILE
|
||||
>PUSHBI O.RDONLY
|
||||
>LDYA L.FONTFILE
|
||||
>PUSHBI $CC Type
|
||||
>PUSHWZ Aux type
|
||||
>SYSCALL LoadStkObj
|
||||
bcs .9
|
||||
stx hFont
|
||||
|
||||
>PUSHWZ Aux type
|
||||
>PUSHBI $CC Type
|
||||
>PUSHW L.FONTFILEB
|
||||
>PUSHBI O.RDONLY
|
||||
>LDYA L.FONTFILEB
|
||||
>PUSHBI $CC Type
|
||||
>PUSHWZ Aux type
|
||||
>SYSCALL LoadStkObj
|
||||
bcs .9
|
||||
stx hFontb
|
||||
|
||||
.1 >PUSHWZ Aux type
|
||||
>PUSHBI $CB Type
|
||||
>PUSHW L.PIXFILE
|
||||
>PUSHBI O.RDONLY
|
||||
>LDYA L.PIXFILE
|
||||
>PUSHBI $CB Type
|
||||
>PUSHWZ Aux type
|
||||
>SYSCALL LoadStkObj
|
||||
bcs .9
|
||||
stx CB.PIX+S.CB.SrcPtr
|
||||
@ -169,9 +167,11 @@ GFX.Open >PUSHBI 0
|
||||
sta hDevGFX
|
||||
.9 rts
|
||||
*--------------------------------------
|
||||
GFX.Write.YA >PUSHYA
|
||||
GFX.Write.YA pha
|
||||
>PUSHB hDevGFX
|
||||
>PUSHBI IOCTL.WRITE
|
||||
lda hDevGFX
|
||||
pla
|
||||
>PUSHYA
|
||||
>SYSCALL IOCTL
|
||||
rts
|
||||
*--------------------------------------
|
||||
|
@ -14,25 +14,18 @@ GBYTE .EQ ZPDRV+17
|
||||
GBYTE2 .EQ ZPDRV+18
|
||||
|
||||
GWORD .EQ ZPDRV+20
|
||||
TXTPTR .EQ ZPDRV+22
|
||||
*--------------------------------------
|
||||
* Y,A = Ptr to S.CB in MAIN
|
||||
*--------------------------------------
|
||||
X.OSD >STYA ZPCmdPtr
|
||||
>STYA TXTPTR
|
||||
ldy #S.CB-1
|
||||
|
||||
.10 jsr SHARED.TXTPTR.GetY
|
||||
sta CB.Cache,y
|
||||
dey
|
||||
bpl .10
|
||||
|
||||
ldy CB.Cache+S.CB.DstPtr
|
||||
X.OSD ldy CB.Cache+S.CB.DstPtr
|
||||
lda CB.Cache+S.CB.DstPtr+1
|
||||
bne .11 Ptr To Aux
|
||||
tya hBM in Aux
|
||||
beq .8 no Src BM
|
||||
beq .7 no Src BM
|
||||
|
||||
>SYSCALL2 GetMemPtr
|
||||
|
||||
jsr K.GetMemPtr
|
||||
.11 >STYA ZPDstBMPtr
|
||||
ldx #0
|
||||
.1 lda (ZPDstBMPtr)
|
||||
@ -44,21 +37,22 @@ X.OSD >STYA ZPCmdPtr
|
||||
.2 inx
|
||||
cpx #S.BM
|
||||
bne .1
|
||||
.8 ldx CB.Cache+S.CB.CMD
|
||||
jmp (J.Cmds,x)
|
||||
|
||||
.7 ldx CB.Cache+S.CB.CMD
|
||||
jmp (.8,x)
|
||||
*--------------------------------------
|
||||
J.Cmds .DA SETPIXEL
|
||||
.DA GETPIXEL
|
||||
.DA HLINE
|
||||
.DA VLINE
|
||||
.DA FILLRECT
|
||||
.DA BITBLT
|
||||
.DA GETRECTBUFSIZE
|
||||
.8 .DA OSD.SETPIXEL
|
||||
.DA OSD.GETPIXEL
|
||||
.DA OSD.HLINE
|
||||
.DA OSD.VLINE
|
||||
.DA OSD.FILLRECT
|
||||
.DA OSD.BITBLT
|
||||
.DA OSD.GETRECTBUFSIZE
|
||||
.DA $ffff DRAWLINE
|
||||
.DA DRAWTEXT
|
||||
.DA GETTEXTSIZE
|
||||
.DA OSD.DRAWTEXT
|
||||
.DA OSD.GETTEXTSIZE
|
||||
*--------------------------------------
|
||||
SETPIXEL >LDYA CB.Cache+S.CB.Y1
|
||||
OSD.SETPIXEL >LDYA CB.Cache+S.CB.Y1
|
||||
ldx DstBM.Cache+S.BM.RowBytes
|
||||
jsr YAMultX
|
||||
pha
|
||||
@ -71,8 +65,9 @@ SETPIXEL >LDYA CB.Cache+S.CB.Y1
|
||||
sta ZPDstBMPtr+1
|
||||
lda CB.Cache+S.CB.M
|
||||
bit #S.CB.M.C16
|
||||
bne SETPIXEL.C16
|
||||
SETPIXEL.MONO lda CB.Cache+S.CB.X1
|
||||
bne OSD.SETPIXEL.C16
|
||||
|
||||
OSD.SETPIXEL.M lda CB.Cache+S.CB.X1
|
||||
pha
|
||||
and #$7 MOD 7
|
||||
tax
|
||||
@ -96,27 +91,27 @@ SETPIXEL.MONO lda CB.Cache+S.CB.X1
|
||||
lda CB.Cache+S.CB.COLOR
|
||||
bne .1
|
||||
lda (ZPDstBMPtr)
|
||||
and Mono.NMasks,x
|
||||
and Mono8.NMasks,x
|
||||
sta (ZPDstBMPtr)
|
||||
rts
|
||||
|
||||
.1 lda (ZPDstBMPtr)
|
||||
ora Mono.Masks,x
|
||||
ora Mono8.Masks,x
|
||||
sta (ZPDstBMPtr)
|
||||
rts
|
||||
.2 lda (ZPDstBMPtr)
|
||||
eor Mono.Masks,x
|
||||
eor Mono8.Masks,x
|
||||
sta (ZPDstBMPtr)
|
||||
rts
|
||||
SETPIXEL.C16
|
||||
OSD.SETPIXEL.C16
|
||||
*--------------------------------------
|
||||
GETPIXEL
|
||||
OSD.GETPIXEL
|
||||
*--------------------------------------
|
||||
HLINE
|
||||
OSD.HLINE
|
||||
*--------------------------------------
|
||||
VLINE
|
||||
OSD.VLINE
|
||||
*--------------------------------------
|
||||
FILLRECT
|
||||
OSD.FILLRECT
|
||||
*--------------------------------------
|
||||
* BitBlt
|
||||
* S.CB.X1 : SrcX1 in bitmap/mask
|
||||
@ -128,14 +123,14 @@ FILLRECT
|
||||
* S.CB.DstY : Destination Y (screen)
|
||||
|
||||
* S.CB.SrcPtr : pointer to S.BM
|
||||
* S.CB.SrcPtr+1 = 0, hMem in S.CB.SrcPtr
|
||||
* S.CB.DstPtr : pointer to Save Buffer
|
||||
* S.CB.SrcPtr+1 = 0, hMem in S.CB.SrcPtr
|
||||
* S.CB.DstPtr : pointer to Save Buffer
|
||||
*--------------------------------------
|
||||
BITBLT >LDYA CB.CACHE+S.CB.SrcPtr
|
||||
bne BITBLT.1
|
||||
OSD.BITBLT >LDYA CB.CACHE+S.CB.SrcPtr
|
||||
bne OSD.BITBLT.1
|
||||
tya
|
||||
jsr K.GetMemPtr
|
||||
BITBLT.1 >STYA ZPSrcBMPtr
|
||||
>SYSCALL2 GetMemPtr
|
||||
OSD.BITBLT.1 >STYA ZPSrcBMPtr
|
||||
|
||||
|
||||
*--------------------------------------
|
||||
@ -146,9 +141,9 @@ BITBLT.1 >STYA ZPSrcBMPtr
|
||||
* Out:
|
||||
* S.CB.DstPtr : Buffer Size (in bytes)
|
||||
*--------------------------------------
|
||||
GETRECTBUFSIZE
|
||||
OSD.GETRECTBUFSIZE
|
||||
|
||||
GETRECTBUFSIZE.RTS
|
||||
OSD.GETRECTBUFSIZE.RTS
|
||||
rts
|
||||
*--------------------------------------
|
||||
* DRAWTEXT
|
||||
@ -158,7 +153,7 @@ GETRECTBUFSIZE.RTS
|
||||
* Out:
|
||||
* A=hBM
|
||||
*--------------------------------------
|
||||
DRAWTEXT sec
|
||||
OSD.DRAWTEXT sec
|
||||
.HS 90 BCC
|
||||
*--------------------------------------
|
||||
* GETTEXTSIZE
|
||||
@ -169,10 +164,10 @@ DRAWTEXT sec
|
||||
* A,X = Width
|
||||
* Y = Height
|
||||
*--------------------------------------
|
||||
GETTEXTSIZE clc
|
||||
OSD.GETTEXTSIZE clc
|
||||
php
|
||||
lda CB.Cache+S.CB.hFONT
|
||||
jsr K.GetMemPtr
|
||||
>SYSCALL2 GetMemPtr
|
||||
>STYA ZPFontPtr
|
||||
ldy #S.FON-1
|
||||
.1 lda (ZPFontPtr),y
|
||||
@ -194,9 +189,9 @@ GETTEXTSIZE clc
|
||||
lda FON.Cache+S.FON.PixH
|
||||
sta CB.Cache+S.CB.SrcH
|
||||
stz CB.Cache+S.CB.SrcH+1
|
||||
.3 jsr SHARED.TXTPTR.GetNext
|
||||
.3 jsr OSD.TXTPTR.GetNext
|
||||
beq .4
|
||||
jsr FON.GetChar
|
||||
jsr OSD.FON.GetChar
|
||||
lda (ZPCharPtr) Get Char PixelW
|
||||
sec
|
||||
adc CB.Cache+S.CB.SrcW
|
||||
@ -209,34 +204,36 @@ GETTEXTSIZE clc
|
||||
lda CB.Cache+S.CB.SrcW
|
||||
ldx CB.Cache+S.CB.SrcW+1
|
||||
ldy CB.Cache+S.CB.SrcH
|
||||
bcc GETRECTBUFSIZE.RTS
|
||||
bcc OSD.GETRECTBUFSIZE.RTS
|
||||
sta DstBM.Cache+S.BM.W
|
||||
stx DstBM.Cache+S.BM.W+1
|
||||
sty DstBM.Cache+S.BM.H
|
||||
stz DstBM.Cache+S.BM.H+1
|
||||
lda #S.BM.F.BBP1
|
||||
sta DstBM.Cache+S.BM.F
|
||||
jsr BM.Create
|
||||
bcs GETRECTBUFSIZE.RTS
|
||||
sta DRAWTEXT.END+1 save hBM, ZPDstBMPtr=BMData
|
||||
jsr OSD.BM.Create
|
||||
bcs OSD.GETRECTBUFSIZE.RTS
|
||||
sta OSD.DRAWTEXT.END+1 save hBM, ZPDstBMPtr=BMData
|
||||
>LDYA CB.Cache+S.CB.TxtPtr
|
||||
>STYA TXTPTR
|
||||
|
||||
|
||||
stz GWORD reset Col index in BM
|
||||
stz GWORD+1 reset Bit index in Col
|
||||
DRAWTEXT.LOOP jsr SHARED.TXTPTR.GetNext
|
||||
beq DRAWTEXT.END
|
||||
jsr FON.GetChar
|
||||
|
||||
OSD.DRAWTEXT.LOOP
|
||||
jsr OSD.TXTPTR.GetNext
|
||||
beq OSD.DRAWTEXT.END
|
||||
jsr OSD.FON.GetChar
|
||||
lda (ZPCharPtr) Char PixW
|
||||
sta GBYTE
|
||||
|
||||
jsr CHAR.GetNext Char ByteW
|
||||
jsr OSD.CHAR.GetNext Char ByteW
|
||||
sta GBYTE2
|
||||
>LDYA ZPDstBMPtr
|
||||
>STYA ZPTmpPtr
|
||||
|
||||
lda GWORD+1 Get Bit Index for shifting
|
||||
jsr DRAWTEXT.JMP
|
||||
jsr OSD.DRAWTEXT.JMP
|
||||
|
||||
lda GBYTE Get Char PixW
|
||||
sec +1 for char spacing
|
||||
@ -251,8 +248,10 @@ DRAWTEXT.LOOP jsr SHARED.TXTPTR.GetNext
|
||||
clc
|
||||
adc GWORD Update Col Index in BM
|
||||
sta GWORD
|
||||
bra DRAWTEXT.LOOP
|
||||
DRAWTEXT.END lda #$FF SELF MODIFIED
|
||||
bra OSD.DRAWTEXT.LOOP
|
||||
|
||||
OSD.DRAWTEXT.END
|
||||
lda #$FF SELF MODIFIED
|
||||
sta CB.Cache+S.CB.SrcPtr Save hBM in Src CB
|
||||
stz CB.Cache+S.CB.SrcPtr+1
|
||||
|
||||
@ -260,26 +259,28 @@ DRAWTEXT.END lda #$FF SELF MODIFIED
|
||||
sta CB.Cache+S.CB.CMD
|
||||
jmp CB.Update
|
||||
*--------------------------------------
|
||||
DRAWTEXT.JMP asl
|
||||
OSD.DRAWTEXT.JMP
|
||||
asl
|
||||
tax
|
||||
jmp (.1,x)
|
||||
.1 .DA DRAWTEXT.SHIFT0
|
||||
.DA DRAWTEXT.SHIFT1
|
||||
.DA DRAWTEXT.SHIFT26
|
||||
.DA DRAWTEXT.SHIFT26
|
||||
.DA DRAWTEXT.SHIFT26
|
||||
.DA DRAWTEXT.SHIFT26
|
||||
.DA DRAWTEXT.SHIFT26
|
||||
.DA DRAWTEXT.SHIFT7
|
||||
.1 .DA OSD.DRAWTEXT.SHIFT0
|
||||
.DA OSD.DRAWTEXT.SHIFT1
|
||||
.DA OSD.DRAWTEXT.SHIFT26
|
||||
.DA OSD.DRAWTEXT.SHIFT26
|
||||
.DA OSD.DRAWTEXT.SHIFT26
|
||||
.DA OSD.DRAWTEXT.SHIFT26
|
||||
.DA OSD.DRAWTEXT.SHIFT26
|
||||
.DA OSD.DRAWTEXT.SHIFT7
|
||||
*--------------------------------------
|
||||
DRAWTEXT.SHIFT0 lda FON.Cache+S.FON.PixH
|
||||
OSD.DRAWTEXT.SHIFT0
|
||||
lda FON.Cache+S.FON.PixH
|
||||
.6 pha save Height counter
|
||||
|
||||
ldx GBYTE2 init Width counter
|
||||
ldy GWORD get col index in BM
|
||||
.7 jsr CHAR.GetNext
|
||||
.7 jsr OSD.CHAR.GetNext
|
||||
|
||||
eor (ZPTmpPtr),y
|
||||
eor (ZPTmpPtr),y
|
||||
sta (ZPTmpPtr),y
|
||||
iny
|
||||
|
||||
@ -298,12 +299,13 @@ DRAWTEXT.SHIFT0 lda FON.Cache+S.FON.PixH
|
||||
|
||||
rts
|
||||
*--------------------------------------
|
||||
DRAWTEXT.SHIFT1 lda FON.Cache+S.FON.PixH
|
||||
OSD.DRAWTEXT.SHIFT1
|
||||
lda FON.Cache+S.FON.PixH
|
||||
.1 pha save Height counter
|
||||
|
||||
ldx GBYTE2 init Width counter
|
||||
ldy GWORD get col index in BM
|
||||
.2 jsr CHAR.GetNext
|
||||
.2 jsr OSD.CHAR.GetNext
|
||||
asl 8th bit in ->carry
|
||||
eor (ZPTmpPtr),y
|
||||
sta (ZPTmpPtr),y
|
||||
@ -329,7 +331,7 @@ DRAWTEXT.SHIFT1 lda FON.Cache+S.FON.PixH
|
||||
*--------------------------------------
|
||||
* X = ShiftL x2 (Range 4..10)
|
||||
*--------------------------------------
|
||||
DRAWTEXT.SHIFT26
|
||||
OSD.DRAWTEXT.SHIFT26
|
||||
lda SHIFT8.L-4,x
|
||||
sta .3+1
|
||||
lda SHIFT8.L-3,x
|
||||
@ -348,7 +350,7 @@ DRAWTEXT.SHIFT26
|
||||
sta ColIndex
|
||||
lda GBYTE2
|
||||
.2 pha save Width counter
|
||||
jsr CHAR.GetNext
|
||||
jsr OSD.CHAR.GetNext
|
||||
pha
|
||||
and First.Masks,x x = 2->6, for X=3 : A=000xxxxx
|
||||
tay Range 0..127
|
||||
@ -384,13 +386,14 @@ DRAWTEXT.SHIFT26
|
||||
bne .1
|
||||
rts
|
||||
*--------------------------------------
|
||||
DRAWTEXT.SHIFT7 lda FON.Cache+S.FON.PixH
|
||||
OSD.DRAWTEXT.SHIFT7
|
||||
lda FON.Cache+S.FON.PixH
|
||||
|
||||
.1 pha save Height counter
|
||||
|
||||
ldx GBYTE2 init Width counter
|
||||
ldy GWORD get col index in BM
|
||||
.2 jsr CHAR.GetNext
|
||||
.2 jsr OSD.CHAR.GetNext
|
||||
lsr 1st bit in carry, for COL 1
|
||||
bcc .3
|
||||
pha Other 7 bits for COL 2
|
||||
@ -415,13 +418,14 @@ DRAWTEXT.SHIFT7 lda FON.Cache+S.FON.PixH
|
||||
bne .1
|
||||
rts
|
||||
*--------------------------------------
|
||||
CHAR.GetNext inc ZPCharPtr
|
||||
OSD.CHAR.GetNext
|
||||
inc ZPCharPtr
|
||||
bne .8
|
||||
inc ZPCharPtr+1
|
||||
.8 lda (ZPCharPtr)
|
||||
rts
|
||||
*--------------------------------------
|
||||
FON.GetChar cmp FON.Cache+S.FON.Last
|
||||
OSD.FON.GetChar cmp FON.Cache+S.FON.Last
|
||||
bcc .1
|
||||
bne .2
|
||||
|
||||
@ -453,7 +457,7 @@ FON.GetChar cmp FON.Cache+S.FON.Last
|
||||
sta ZPCharPtr
|
||||
rts
|
||||
*--------------------------------------
|
||||
BM.Create lda DstBM.Cache+S.BM.W
|
||||
OSD.BM.Create lda DstBM.Cache+S.BM.W
|
||||
ldx DstBM.Cache+S.BM.W+1
|
||||
bit #7
|
||||
beq .1
|
||||
@ -462,7 +466,7 @@ BM.Create lda DstBM.Cache+S.BM.W
|
||||
adc #8
|
||||
bcc .1
|
||||
inx
|
||||
.1 sta DstBM.Cache+S.BM.RowBytes
|
||||
.1 sta DstBM.Cache+S.BM.RowBytes
|
||||
txa
|
||||
|
||||
lsr
|
||||
@ -486,7 +490,7 @@ BM.Create lda DstBM.Cache+S.BM.W
|
||||
tay
|
||||
pla
|
||||
adc /S.BM
|
||||
jsr K.GetMem
|
||||
>SYSCALL2 GetMem
|
||||
bcs .9
|
||||
>STYA ZPDstBMPtr
|
||||
ldy #S.BM-1
|
||||
@ -495,7 +499,7 @@ BM.Create lda DstBM.Cache+S.BM.W
|
||||
dey
|
||||
bpl .2
|
||||
lda ZPDstBMPtr
|
||||
* clc
|
||||
* clc
|
||||
adc #S.BM
|
||||
sta ZPDstBMPtr
|
||||
sta .4+1
|
||||
@ -529,7 +533,7 @@ BM.Create lda DstBM.Cache+S.BM.W
|
||||
* OUT:
|
||||
* Y,A = (Y,A) * X
|
||||
*--------------------------------------
|
||||
YAMultX stx GBYTE
|
||||
OSD.YAMultX stx GBYTE
|
||||
|
||||
sty GWORD
|
||||
sta GWORD+1
|
||||
@ -550,24 +554,25 @@ YAMultX stx GBYTE
|
||||
bne .2
|
||||
rts
|
||||
*--------------------------------------
|
||||
CB.Update >LDYA ZPCmdPtr
|
||||
>STYA ZPSListDataPtr
|
||||
|
||||
ldx #0
|
||||
.1 lda CB.Cache,x
|
||||
jsr SHARED.SetDataByte
|
||||
inx
|
||||
cpx #S.CB
|
||||
bne .1
|
||||
CB.Update ldy #S.CB-1
|
||||
sta SETWRITEAUX
|
||||
|
||||
.1 lda CB.Cache,y
|
||||
sta (ZPCmdPtr),y
|
||||
dey
|
||||
bpl .1
|
||||
|
||||
sta CLRWRITEAUX
|
||||
|
||||
clc
|
||||
rts
|
||||
*--------------------------------------
|
||||
CB.Cache .BS S.CB
|
||||
*CB.Cache .BS S.CB
|
||||
FON.Cache .BS S.FON
|
||||
SrcBM.Cache .BS S.BM
|
||||
DstBM.Cache .BS S.BM
|
||||
*--------------------------------------
|
||||
Mono.NMasks .DA #%11111110
|
||||
Mono8.NMasks .DA #%11111110
|
||||
.DA #%11111101
|
||||
.DA #%11111011
|
||||
.DA #%11110111
|
||||
@ -576,7 +581,7 @@ Mono.NMasks .DA #%11111110
|
||||
.DA #%10111111
|
||||
.DA #%01111111
|
||||
*--------------------------------------
|
||||
Mono.Masks .DA #%00000001
|
||||
Mono8.Masks .DA #%00000001
|
||||
.DA #%00000010
|
||||
.DA #%00000100
|
||||
.DA #%00001000
|
||||
@ -737,8 +742,9 @@ SHIFT8.L7 .DA #%00000000,#%10000000,#%00000001,#%10000001,#%00000010,#%10000010
|
||||
.DA #%00110100,#%10110100,#%00110101,#%10110101,#%00110110,#%10110110,#%00110111,#%10110111
|
||||
.DA #%00111000,#%10111000,#%00111001,#%10111001,#%00111010,#%10111010,#%00111011,#%10111011
|
||||
.DA #%00111100,#%10111100,#%00111101,#%10111101,#%00111110,#%10111110,#%00111111,#%10111111
|
||||
X.OSD.LEN .EQ *-X.OSD
|
||||
*--------------------------------------
|
||||
MAN
|
||||
SAVE usr/src/sys/kernel.s.osdx
|
||||
LOAD usr/src/sys/kernel.s
|
||||
SAVE usr/src/drv/dhgr.drv.s.osd
|
||||
LOAD usr/src/drv/dhgr.drv.s
|
||||
ASM
|
@ -13,7 +13,9 @@ NEW
|
||||
.INB inc/gfx.i
|
||||
.INB inc/gfx.eve.i
|
||||
*--------------------------------------
|
||||
ZPPtr .EQ ZPBIN
|
||||
ZPPtr1 .EQ ZPBIN
|
||||
ZPPtr2 .EQ ZPBIN+2
|
||||
ZPPtr3 .EQ ZPBIN+4
|
||||
*--------------------------------------
|
||||
* File Header (16 Bytes)
|
||||
*--------------------------------------
|
||||
@ -37,12 +39,7 @@ L.DRV.CS.START .DA DRV.CS.START
|
||||
L.FD.DEV .DA FD.DEV
|
||||
L.FD.DEV.NAME .DA FD.DEV.NAME
|
||||
*--------------------------------------
|
||||
L.SHIFT .DA SHIFT.L1
|
||||
.DA SHIFT.L2
|
||||
.DA SHIFT.L3
|
||||
.DA SHIFT.L4
|
||||
.DA SHIFT.L5
|
||||
.DA SHIFT.L6
|
||||
L.X.OSD .DA X.OSD
|
||||
.DA 0 End Of Reloc Table
|
||||
*--------------------------------------
|
||||
Dev.Detect >LDYA L.MSG.DETECT
|
||||
@ -94,6 +91,8 @@ Dev.Detect >LDYA L.MSG.DETECT
|
||||
|
||||
>STYA FD.DEV+S.FD.DEV.DRVPTR
|
||||
|
||||
jsr DrvReloc
|
||||
|
||||
>PUSHW L.FD.DEV
|
||||
>PUSHW L.FD.DEV.NAME
|
||||
>SYSCALL MKDEV
|
||||
@ -109,6 +108,8 @@ Dev.Detect >LDYA L.MSG.DETECT
|
||||
sta SETHIRES
|
||||
sta SET80STORE
|
||||
|
||||
jsr OSD.install
|
||||
|
||||
jsr ClrScr
|
||||
plp
|
||||
|
||||
@ -117,56 +118,126 @@ Dev.Detect >LDYA L.MSG.DETECT
|
||||
DrvReloc lda FD.DEV+S.FD.DEV.DRVPTR
|
||||
sec
|
||||
sbc #DRV.CS.START
|
||||
sta ZPPtr
|
||||
sta ZPPtr1
|
||||
|
||||
lda FD.DEV+S.FD.DEV.DRVPTR+1
|
||||
sbc /DRV.CS.START
|
||||
sta ZPPtr+1
|
||||
sta ZPPtr1+1
|
||||
|
||||
lda ZPPtr1
|
||||
clc
|
||||
adc #Shift.L.LO
|
||||
sta ZPPtr2
|
||||
|
||||
lda ZPPtr1+1
|
||||
adc /Shift.L.LO+1
|
||||
sta ZPPtr2+1
|
||||
|
||||
lda ZPPtr1
|
||||
clc
|
||||
adc #Shift.L.HI
|
||||
sta ZPPtr3
|
||||
|
||||
lda ZPPtr1+1
|
||||
adc /Shift.L.HI+1
|
||||
sta ZPPtr3+1
|
||||
|
||||
ldx #0
|
||||
ldy #0
|
||||
|
||||
.1 lda L.SHIFT,x Get relocated LO BYTE
|
||||
.1 lda (ZPPtr2),y
|
||||
clc
|
||||
adc ZPPtr
|
||||
sta Shift.L.LO,y
|
||||
adc ZPPtr1
|
||||
sta (ZPPtr2),y
|
||||
|
||||
inx
|
||||
lda (ZPPtr3),y
|
||||
adc ZPPtr1+1
|
||||
sta (ZPPtr3),y
|
||||
|
||||
lda L.SHIFT,x Get relocated HI BYTE
|
||||
adc ZPPtr+1
|
||||
sta Shift.L.HI,y
|
||||
|
||||
inx
|
||||
iny
|
||||
cpy #6
|
||||
bne .1
|
||||
|
||||
ldx #0 SHIFT.L1 = SHIFT.R6 !!!
|
||||
ldy #5
|
||||
|
||||
.2 lda L.SHIFT,x Get relocated LO BYTE
|
||||
lda ZPPtr1
|
||||
clc
|
||||
adc ZPPtr
|
||||
sta Shift.R.LO,y
|
||||
inx
|
||||
adc #Shift.R.LO
|
||||
sta ZPPtr2
|
||||
|
||||
lda L.SHIFT,x Get relocated HI BYTE
|
||||
adc ZPPtr+1
|
||||
sta Shift.R.HI,y
|
||||
lda ZPPtr1+1
|
||||
adc /Shift.R.LO+1
|
||||
sta ZPPtr2+1
|
||||
|
||||
lda ZPPtr1
|
||||
clc
|
||||
adc #Shift.R.HI
|
||||
sta ZPPtr3
|
||||
|
||||
lda ZPPtr1+1
|
||||
adc /Shift.R.HI+1
|
||||
sta ZPPtr3+1
|
||||
|
||||
ldy #0
|
||||
|
||||
.2 lda (ZPPtr2),y
|
||||
clc
|
||||
adc ZPPtr1
|
||||
sta (ZPPtr2),y
|
||||
|
||||
inx
|
||||
dey
|
||||
bpl .2
|
||||
lda (ZPPtr3),y
|
||||
adc ZPPtr1+1
|
||||
sta (ZPPtr3),y
|
||||
|
||||
iny
|
||||
cpy #6
|
||||
bne .2
|
||||
|
||||
rts
|
||||
*--------------------------------------
|
||||
OSD.install >LDYA L.X.OSD
|
||||
>STYA ZPPtr1
|
||||
|
||||
>LDYAI X.OSD
|
||||
>STYA ZPPtr2
|
||||
|
||||
lda /X.OSD.LEN
|
||||
eor #$ff
|
||||
pha
|
||||
|
||||
lda /X.OSD.LEN
|
||||
eor #$ff
|
||||
tax
|
||||
|
||||
ldy #0
|
||||
|
||||
sta SETWRITEAUX
|
||||
|
||||
.1 inx
|
||||
bne .2
|
||||
|
||||
pla
|
||||
inc
|
||||
beq .8
|
||||
|
||||
pha
|
||||
|
||||
.2 lda (ZPPtr1),y
|
||||
sta (ZPPtr2),y
|
||||
|
||||
iny
|
||||
bne .1
|
||||
|
||||
inc ZPPtr1
|
||||
inc ZPPtr2
|
||||
bra .1
|
||||
|
||||
.8 sta CLRWRITEAUX
|
||||
rts
|
||||
*--------------------------------------
|
||||
ClrScr ldx #0
|
||||
txa lda #0
|
||||
.1 ldy BASEL,x
|
||||
sty ZPPtr
|
||||
sty ZPPtr1
|
||||
ldy BASEH,x
|
||||
sty ZPPtr+1
|
||||
sty ZPPtr1+1
|
||||
sta SETPAGE2
|
||||
|
||||
jsr .2
|
||||
@ -180,7 +251,7 @@ ClrScr ldx #0
|
||||
rts
|
||||
|
||||
.2 ldy #39
|
||||
.3 sta (ZPPtr),y
|
||||
.3 sta (ZPPtr1),y
|
||||
dey
|
||||
bpl .3
|
||||
rts
|
||||
@ -373,12 +444,22 @@ WRITE >STYA ZPIOCTL NON STANDARD
|
||||
dey
|
||||
bpl .2
|
||||
|
||||
.3 jsr .10
|
||||
|
||||
clc
|
||||
rts
|
||||
|
||||
|
||||
.10 jmp (J.Cmds,x)
|
||||
|
||||
|
||||
*--------------------------------------
|
||||
OSD.TXTPTR.GetNext
|
||||
sta CLRREADAUX
|
||||
lda (TXTPTR)
|
||||
sta SETREADAUX
|
||||
beq OSD.TXTPTR.RTS
|
||||
|
||||
OSD.TXTPTR.Next inc TXTPTR
|
||||
bne OSD.TXTPTR.RTS
|
||||
inc TXTPTR+1
|
||||
OSD.TXTPTR.RTS rts
|
||||
*--------------------------------------
|
||||
* IN:
|
||||
* Y = LO
|
||||
@ -473,10 +554,30 @@ CONTROL.EVE .DA #SETIOUDIS
|
||||
|
||||
.DA #0
|
||||
*--------------------------------------
|
||||
Shift.L.LO .BS 6
|
||||
Shift.L.HI .BS 6
|
||||
Shift.R.LO .BS 6
|
||||
Shift.R.HI .BS 6
|
||||
Shift.L.LO .DA #SHIFT.L1
|
||||
.DA #SHIFT.L2
|
||||
.DA #SHIFT.L3
|
||||
.DA #SHIFT.L4
|
||||
.DA #SHIFT.L5
|
||||
.DA #SHIFT.L6
|
||||
Shift.L.HI .DA /SHIFT.L1
|
||||
.DA /SHIFT.L2
|
||||
.DA /SHIFT.L3
|
||||
.DA /SHIFT.L4
|
||||
.DA /SHIFT.L5
|
||||
.DA /SHIFT.L6
|
||||
Shift.R.LO .DA #SHIFT.L6
|
||||
.DA #SHIFT.L5
|
||||
.DA #SHIFT.L4
|
||||
.DA #SHIFT.L3
|
||||
.DA #SHIFT.L2
|
||||
.DA #SHIFT.L1
|
||||
Shift.R.HI .DA /SHIFT.L6
|
||||
.DA /SHIFT.L5
|
||||
.DA /SHIFT.L4
|
||||
.DA /SHIFT.L3
|
||||
.DA /SHIFT.L2
|
||||
.DA /SHIFT.L1
|
||||
*--------------------------------------
|
||||
CB.CmdLen .DA S.CB.Y1+1 SETPIXEL
|
||||
.DA S.CB.Y1+1 GETPIXEL
|
||||
@ -508,6 +609,11 @@ DCB .DA #S.DCB.T.GFX
|
||||
.DA 192 H
|
||||
*--------------------------------------
|
||||
DRV.END
|
||||
*--------------------------------------
|
||||
.PH $1000
|
||||
.INB usr/src/drv/dhgr.drv.s.osd
|
||||
.EP
|
||||
*--------------------------------------
|
||||
.LIST ON
|
||||
DRV.CS.SIZE .EQ DRV.CS.END-DRV.CS.START
|
||||
DRV.SIZE .EQ DRV.END-DRV.CS.START
|
||||
|
Loading…
x
Reference in New Issue
Block a user