Kernel 0.93+

This commit is contained in:
Rémy GIBERT 2019-08-06 17:58:01 +02:00
parent 01f29acdd7
commit 9656653843
4 changed files with 146 additions and 73 deletions

Binary file not shown.

View File

@ -39,12 +39,15 @@ CS.START cld
.DA CS.QUIT .DA CS.QUIT
L.DEVNAME.GFX .DA DEVNAME.GFX L.DEVNAME.GFX .DA DEVNAME.GFX
L.FONTFILE .DA FONTFILE L.FONTFILE .DA FONTFILE
L.FONTFILEB .DA FONTFILEB
L.PIXFILE .DA PIXFILE L.PIXFILE .DA PIXFILE
L.CB.RECT .DA CB.RECT L.CB.RECT .DA CB.RECT
L.CB.TEXTB .DA CB.TEXTB
L.CB.TEXT .DA CB.TEXT L.CB.TEXT .DA CB.TEXT
L.CB.PIX .DA CB.PIX L.CB.PIX .DA CB.PIX
L.CB.Apple .DA CB.Apple L.CB.Apple .DA CB.Apple
L.BM.Apple .DA BM.Apple L.BM.Apple .DA BM.Apple
L.MESSAGEB .DA MESSAGEB
L.MESSAGE .DA MESSAGE L.MESSAGE .DA MESSAGE
.DA 0 .DA 0
@ -53,42 +56,50 @@ CS.INIT clc
rts rts
*-------------------------------------- *--------------------------------------
CS.RUN jsr GFX.Open CS.RUN jsr GFX.Open
bcs .99 bcs .9
>PUSHWZ Aux type jsr LoadResources
>PUSHBI $CC Type bcs .9
>PUSHBI O.RDONLY
>LDYA L.FONTFILE
>SYSCALL LoadStkObj
bcs .99
stx hFont
>PUSHWZ Aux type
>PUSHBI $CB Type
>PUSHBI O.RDONLY
>LDYA L.PIXFILE
>SYSCALL LoadStkObj
.99 bcs .9
stx CB.PIX+S.CB.SrcPtr
>LDYA L.CB.RECT >LDYA L.CB.RECT
jsr GFX.Write.YA jsr GFX.Write.YA
>LDYA L.BM.Apple >LDYA L.BM.Apple
>STYA CB.Apple+S.CB.SrcPtr >STYA CB.Apple+S.CB.SrcPtr
>LDYA L.CB.PIX >LDYA L.CB.PIX
jsr GFX.Write.YA jsr GFX.Write.YA
>LDYA L.CB.Apple >LDYA L.CB.Apple
jsr GFX.Write.YA jsr GFX.Write.YA
lda hFontB
sta CB.TEXTB+S.CB.hFont
>LDYA L.MESSAGEB
>STYA CB.TEXTB+S.CB.TxtPtr
>LDYA L.CB.TEXTB
>SYSCALL OSD
bcs .9
>LDYA L.CB.TEXTB
jsr GFX.Write.YA
lda hFont lda hFont
sta CB.TEXT+S.CB.hFont sta CB.TEXT+S.CB.hFont
>LDYA L.MESSAGE >LDYA L.MESSAGE
>STYA CB.TEXT+S.CB.TxtPtr >STYA CB.TEXT+S.CB.TxtPtr
>LDYA L.CB.TEXT >LDYA L.CB.TEXT
>SYSCALL OSD >SYSCALL OSD
bcs .9 bcs .9
@ -109,11 +120,11 @@ CS.QUIT lda hFont
>SYSCALL FreeStkObj >SYSCALL FreeStkObj
.1 lda hFontB .1 lda hFontB
beq .1 beq .2
>SYSCALL FreeStkObj >SYSCALL FreeStkObj
lda CB.PIX+S.CB.SrcPtr .2 lda CB.PIX+S.CB.SrcPtr
beq .3 beq .3
>SYSCALL FreeStkObj >SYSCALL FreeStkObj
@ -129,6 +140,32 @@ CS.QUIT lda hFont
clc clc
rts rts
*-------------------------------------- *--------------------------------------
LoadResources >PUSHWZ Aux type
>PUSHBI $CC Type
>PUSHBI O.RDONLY
>LDYA L.FONTFILE
>SYSCALL LoadStkObj
bcs .9
stx hFont
>PUSHWZ Aux type
>PUSHBI $CC Type
>PUSHBI O.RDONLY
>LDYA L.FONTFILEB
>SYSCALL LoadStkObj
bcs .9
stx hFontb
>PUSHWZ Aux type
>PUSHBI $CB Type
>PUSHBI O.RDONLY
>LDYA L.PIXFILE
>SYSCALL LoadStkObj
bcs .9
stx CB.PIX+S.CB.SrcPtr
.9 rts
*--------------------------------------
GFX.Open >PUSHBI 0 GFX.Open >PUSHBI 0
>LDYA L.DEVNAME.GFX >LDYA L.DEVNAME.GFX
>SYSCALL open >SYSCALL open
@ -145,9 +182,11 @@ GFX.Write.YA >PUSHYA
*-------------------------------------- *--------------------------------------
CS.END CS.END
DEVNAME.GFX .AZ "/DEV/GFX" DEVNAME.GFX .AZ "/DEV/GFX"
FONTFILE .AZ "${ROOT}SBIN/GUI/SYSX7B" FONTFILE .AZ "${ROOT}SBIN/GUI/SYSX7"
FONTFILEB .AZ "${ROOT}SBIN/GUI/SYSX7B"
PIXFILE .AZ "${ROOT}ROOT/GUITEST/MARILYN" PIXFILE .AZ "${ROOT}ROOT/GUITEST/MARILYN"
MESSAGE .AZ " @@@ DHGR & OSD Drivers Test @@@ " MESSAGEB .AZ " DHGR Driver & OSD 'Off-Screen Driver' Test (SYSX7B Font, Inverse) "
MESSAGE .AZ " 1234567890 abcdefghijklmnopqrstuvwxyz { + - * / } (SYSX7B Font, Normal) "
CB.RECT .DA #S.CB.CMD.FILLRECT CB.RECT .DA #S.CB.CMD.FILLRECT
.DA #S.CB.OP.SET .DA #S.CB.OP.SET
@ -184,6 +223,19 @@ CB.PIX .DA #S.CB.CMD.BITBLT
.BS 2 SrcPtr .BS 2 SrcPtr
.DA 0 DSTPTR .DA 0 DSTPTR
CB.TEXTB .DA #S.CB.CMD.DRAWTEXT
.DA #S.CB.OP.SET+S.CB.OP.INVERSE
.DA #S.CB.M.MONO
.BS 1 hFONT
.DA 0 X1
.DA 0 Y1
.DA 0 X2
.DA 0 Y2
.DA 7 DstX
.DA 1 DstY
.BS 2 TXTPTR
.DA 0 DSTPTR
CB.TEXT .DA #S.CB.CMD.DRAWTEXT CB.TEXT .DA #S.CB.CMD.DRAWTEXT
.DA #S.CB.OP.SET .DA #S.CB.OP.SET
.DA #S.CB.M.MONO .DA #S.CB.M.MONO
@ -192,8 +244,8 @@ CB.TEXT .DA #S.CB.CMD.DRAWTEXT
.DA 0 Y1 .DA 0 Y1
.DA 0 X2 .DA 0 X2
.DA 0 Y2 .DA 0 Y2
.DA 60 DstX .DA 50 DstX
.DA 1 DstY .DA 184 DstY
.BS 2 TXTPTR .BS 2 TXTPTR
.DA 0 DSTPTR .DA 0 DSTPTR

View File

@ -59,10 +59,12 @@ S.CB.OP.SAVE .EQ %00010000 Save Screen to DstPtr before painting
S.CB.OP.RESTORE .EQ %00100000 Restore Screen From DstPtr S.CB.OP.RESTORE .EQ %00100000 Restore Screen From DstPtr
S.CB.OP.COLOR .EQ %01000000 Assume BitMap is COLOR S.CB.OP.COLOR .EQ %01000000 Assume BitMap is COLOR
S.CB.OP.F.B .EQ %00010000 BOLD S.CB.OP.INVERSE .EQ %10000000 General Inverse Flag
S.CB.OP.F.I .EQ %00100000 ITALIC
S.CB.OP.F.U .EQ %01000000 UNDERLINED S.CB.OP.F.B .EQ %00000001 BOLD
S.CB.OP.F.G .EQ %10000000 GREYED S.CB.OP.F.I .EQ %00000010 ITALIC
S.CB.OP.F.U .EQ %00000100 UNDERLINED
S.CB.OP.F.G .EQ %00001000 GREYED
S.CB.M .EQ 2 S.CB.M .EQ 2
S.CB.M.MONO .EQ %00000001 b/w (1 bit/pixel) S.CB.M.MONO .EQ %00000001 b/w (1 bit/pixel)
*S.CB.M.C4 .EQ %00000010 *S.CB.M.C4 .EQ %00000010

View File

@ -8,6 +8,12 @@ ZPTablePtr .EQ ZPDRV+6
ZPCharPtr .EQ ZPDRV+8 ZPCharPtr .EQ ZPDRV+8
ZPSrcBMPtr .EQ ZPDRV+10 ZPSrcBMPtr .EQ ZPDRV+10
ZPTmpPtr .EQ ZPDRV+14 ZPTmpPtr .EQ ZPDRV+14
ColIndex .EQ ZPDRV+16
GBYTE .EQ ZPDRV+17
GBYTE2 .EQ ZPDRV+18
GWORD .EQ ZPDRV+20
*-------------------------------------- *--------------------------------------
* Y,A = Ptr to S.CB in MAIN * Y,A = Ptr to S.CB in MAIN
*-------------------------------------- *--------------------------------------
@ -273,13 +279,13 @@ DRAWTEXT.LOOP jsr SHARED.TXTPTR.GetNext
sec +1 for char spacing sec +1 for char spacing
adc GWORD+1 Add Bit index in Col adc GWORD+1 Add Bit index in Col
pha pha
and #7 mod 7 and #7 mod 8
sta GWORD+1 Update Bit index in Col sta GWORD+1 Update Bit index in Col
pla pla
lsr lsr
lsr lsr
lsr lsr div 8
clc clc
adc GWORD Update Col Index in BM adc GWORD Update Col Index in BM
sta GWORD sta GWORD
@ -333,6 +339,7 @@ DRAWTEXT.SHIFT0 lda FON.Cache+S.FON.PixH
.10 pla get back Height counter .10 pla get back Height counter
dec dec
bne .6 bne .6
rts rts
*-------------------------------------- *--------------------------------------
DRAWTEXT.SHIFT1 lda FON.Cache+S.FON.PixH DRAWTEXT.SHIFT1 lda FON.Cache+S.FON.PixH
@ -369,21 +376,25 @@ DRAWTEXT.SHIFT1 lda FON.Cache+S.FON.PixH
.4 pla get back Height counter .4 pla get back Height counter
dec dec
bne .1 bne .1
rts rts
*-------------------------------------- *--------------------------------------
* X = ShiftL x2 (Range 4..10)
*--------------------------------------
DRAWTEXT.SHIFT26 DRAWTEXT.SHIFT26
ldx GWORD+1 Get Bit Index for shifting lda SHIFT8.L-4,x
lda SHIFT8.LL-1,x
sta .3+1 sta .3+1
lda SHIFT8.LH-1,x lda SHIFT8.L-3,x
sta .3+2 sta .3+2
lda SHIFT8.LL,x lda SHIFT8.L-2,x
sta .4+1 sta .4+1
lda SHIFT8.LH,x lda SHIFT8.L-1,x
sta .4+2 sta .4+2
ldx GWORD+1 ShiftL Index
lda FON.Cache+S.FON.PixH lda FON.Cache+S.FON.PixH
.1 pha save Height counter .1 pha save Height counter
@ -411,7 +422,7 @@ DRAWTEXT.SHIFT26
and Last.Masks,x x = 2->6, for X=3 : A=xxx00000 and Last.Masks,x x = 2->6, for X=3 : A=xxx00000
lsr Range 0..127 !! A=0xxx0000 lsr Range 0..127 !! A=0xxx0000
tay but SHIFTL(x+1) A=00000xxx tay but SHIFTL(X+1) A=00000xxx
.4 lda $FFFF,y SELF MODIFIED .4 lda $FFFF,y SELF MODIFIED
@ -582,8 +593,13 @@ BM.Create lda DstBM.Cache+S.BM.W
sta ZPDstBMPtr+1 sta ZPDstBMPtr+1
sta .4+2 sta .4+2
lda CB.Cache+S.CB.M Get Background color
ldy #0 ldy #0
lda CB.Cache+S.CB.OP
and #S.CB.OP.INVERSE
beq .3
lda #$ff
.3 inc ZPTmpPtr .3 inc ZPTmpPtr
bne .4 bne .4
@ -651,10 +667,6 @@ CB.Cache .BS S.CB
FON.Cache .BS S.FON FON.Cache .BS S.FON
SrcBM.Cache .BS S.BM SrcBM.Cache .BS S.BM
DstBM.Cache .BS S.BM DstBM.Cache .BS S.BM
ColIndex .BS 1
GBYTE .BS 1
GBYTE2 .BS 1
GWORD .BS 2
*-------------------------------------- *--------------------------------------
Mono.NMasks .DA #%11111110 Mono.NMasks .DA #%11111110
.DA #%11111101 .DA #%11111101
@ -692,37 +704,44 @@ Last.Masks .DA #%00000000 Useless
.DA #%11111100 .DA #%11111100
.DA #%11111110 .DA #%11111110
*-------------------------------------- *--------------------------------------
SHIFT8.LL .DA #SHIFT8.L1 SHIFT8.L .DA SHIFT8.L2
.DA #SHIFT8.L2 .DA SHIFT8.L3
.DA #SHIFT8.L3 .DA SHIFT8.L4
.DA #SHIFT8.L4 .DA SHIFT8.L5
.DA #SHIFT8.L5 .DA SHIFT8.L6
.DA #SHIFT8.L6 .DA SHIFT8.L7
.DA #SHIFT8.L7
SHIFT8.LH .DA /SHIFT8.L1
.DA /SHIFT8.L2
.DA /SHIFT8.L3
.DA /SHIFT8.L4
.DA /SHIFT8.L5
.DA /SHIFT8.L6
.DA /SHIFT8.L7
*-------------------------------------- *--------------------------------------
SHIFT8.L1 .DA #%00000000,#%00000010,#%00000100,#%00000110,#%00001000,#%00001010,#%00001100,#%00001110 *SHIFT8.LL .DA #SHIFT8.L1
.DA #%00010000,#%00010010,#%00010100,#%00010110,#%00011000,#%00011010,#%00011100,#%00011110 * .DA #SHIFT8.L2
.DA #%00100000,#%00100010,#%00100100,#%00100110,#%00101000,#%00101010,#%00101100,#%00101110 * .DA #SHIFT8.L3
.DA #%00110000,#%00110010,#%00110100,#%00110110,#%00111000,#%00111010,#%00111100,#%00111110 * .DA #SHIFT8.L4
.DA #%01000000,#%01000010,#%01000100,#%01000110,#%01001000,#%01001010,#%01001100,#%01001110 * .DA #SHIFT8.L5
.DA #%01010000,#%01010010,#%01010100,#%01010110,#%01011000,#%01011010,#%01011100,#%01011110 * .DA #SHIFT8.L6
.DA #%01100000,#%01100010,#%01100100,#%01100110,#%01101000,#%01101010,#%01101100,#%01101110 * .DA #SHIFT8.L7
.DA #%01110000,#%01110010,#%01110100,#%01110110,#%01111000,#%01111010,#%01111100,#%01111110 *SHIFT8.LH .DA /SHIFT8.L1
.DA #%10000000,#%10000010,#%10000100,#%10000110,#%10001000,#%10001010,#%10001100,#%10001110 * .DA /SHIFT8.L2
.DA #%10010000,#%10010010,#%10010100,#%10010110,#%10011000,#%10011010,#%10011100,#%10011110 * .DA /SHIFT8.L3
.DA #%10100000,#%10100010,#%10100100,#%10100110,#%10101000,#%10101010,#%10101100,#%10101110 * .DA /SHIFT8.L4
.DA #%10110000,#%10110010,#%10110100,#%10110110,#%10111000,#%10111010,#%10111100,#%10111110 * .DA /SHIFT8.L5
.DA #%11000000,#%11000010,#%11000100,#%11000110,#%11001000,#%11001010,#%11001100,#%11001110 * .DA /SHIFT8.L6
.DA #%11010000,#%11010010,#%11010100,#%11010110,#%11011000,#%11011010,#%11011100,#%11011110 * .DA /SHIFT8.L7
.DA #%11100000,#%11100010,#%11100100,#%11100110,#%11101000,#%11101010,#%11101100,#%11101110 *--------------------------------------
.DA #%11110000,#%11110010,#%11110100,#%11110110,#%11111000,#%11111010,#%11111100,#%11111110 *SHIFT8.L1 .DA #%00000000,#%00000010,#%00000100,#%00000110,#%00001000,#%00001010,#%00001100,#%00001110
* .DA #%00010000,#%00010010,#%00010100,#%00010110,#%00011000,#%00011010,#%00011100,#%00011110
* .DA #%00100000,#%00100010,#%00100100,#%00100110,#%00101000,#%00101010,#%00101100,#%00101110
* .DA #%00110000,#%00110010,#%00110100,#%00110110,#%00111000,#%00111010,#%00111100,#%00111110
* .DA #%01000000,#%01000010,#%01000100,#%01000110,#%01001000,#%01001010,#%01001100,#%01001110
* .DA #%01010000,#%01010010,#%01010100,#%01010110,#%01011000,#%01011010,#%01011100,#%01011110
* .DA #%01100000,#%01100010,#%01100100,#%01100110,#%01101000,#%01101010,#%01101100,#%01101110
* .DA #%01110000,#%01110010,#%01110100,#%01110110,#%01111000,#%01111010,#%01111100,#%01111110
* .DA #%10000000,#%10000010,#%10000100,#%10000110,#%10001000,#%10001010,#%10001100,#%10001110
* .DA #%10010000,#%10010010,#%10010100,#%10010110,#%10011000,#%10011010,#%10011100,#%10011110
* .DA #%10100000,#%10100010,#%10100100,#%10100110,#%10101000,#%10101010,#%10101100,#%10101110
* .DA #%10110000,#%10110010,#%10110100,#%10110110,#%10111000,#%10111010,#%10111100,#%10111110
* .DA #%11000000,#%11000010,#%11000100,#%11000110,#%11001000,#%11001010,#%11001100,#%11001110
* .DA #%11010000,#%11010010,#%11010100,#%11010110,#%11011000,#%11011010,#%11011100,#%11011110
* .DA #%11100000,#%11100010,#%11100100,#%11100110,#%11101000,#%11101010,#%11101100,#%11101110
* .DA #%11110000,#%11110010,#%11110100,#%11110110,#%11111000,#%11111010,#%11111100,#%11111110
SHIFT8.L2 .DA #%00000000,#%00000100,#%00001000,#%00001100,#%00010000,#%00010100,#%00011000,#%00011100 SHIFT8.L2 .DA #%00000000,#%00000100,#%00001000,#%00001100,#%00010000,#%00010100,#%00011000,#%00011100
.DA #%00100000,#%00100100,#%00101000,#%00101100,#%00110000,#%00110100,#%00111000,#%00111100 .DA #%00100000,#%00100100,#%00101000,#%00101100,#%00110000,#%00110100,#%00111000,#%00111100
.DA #%01000000,#%01000100,#%01001000,#%01001100,#%01010000,#%01010100,#%01011000,#%01011100 .DA #%01000000,#%01000100,#%01001000,#%01001100,#%01010000,#%01010100,#%01011000,#%01011100