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
L.DEVNAME.GFX .DA DEVNAME.GFX
L.FONTFILE .DA FONTFILE
L.FONTFILEB .DA FONTFILEB
L.PIXFILE .DA PIXFILE
L.CB.RECT .DA CB.RECT
L.CB.TEXTB .DA CB.TEXTB
L.CB.TEXT .DA CB.TEXT
L.CB.PIX .DA CB.PIX
L.CB.Apple .DA CB.Apple
L.BM.Apple .DA BM.Apple
L.MESSAGEB .DA MESSAGEB
L.MESSAGE .DA MESSAGE
.DA 0
@ -53,42 +56,50 @@ CS.INIT clc
rts
*--------------------------------------
CS.RUN jsr GFX.Open
bcs .99
bcs .9
>PUSHWZ Aux type
>PUSHBI $CC Type
>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
jsr LoadResources
bcs .9
>LDYA L.CB.RECT
jsr GFX.Write.YA
>LDYA L.BM.Apple
>STYA CB.Apple+S.CB.SrcPtr
>LDYA L.CB.PIX
jsr GFX.Write.YA
>LDYA L.CB.Apple
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
sta CB.TEXT+S.CB.hFont
>LDYA L.MESSAGE
>STYA CB.TEXT+S.CB.TxtPtr
>LDYA L.CB.TEXT
>SYSCALL OSD
bcs .9
@ -109,11 +120,11 @@ CS.QUIT lda hFont
>SYSCALL FreeStkObj
.1 lda hFontB
beq .1
beq .2
>SYSCALL FreeStkObj
lda CB.PIX+S.CB.SrcPtr
.2 lda CB.PIX+S.CB.SrcPtr
beq .3
>SYSCALL FreeStkObj
@ -129,6 +140,32 @@ CS.QUIT lda hFont
clc
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
>LDYA L.DEVNAME.GFX
>SYSCALL open
@ -145,9 +182,11 @@ GFX.Write.YA >PUSHYA
*--------------------------------------
CS.END
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"
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
.DA #S.CB.OP.SET
@ -184,6 +223,19 @@ CB.PIX .DA #S.CB.CMD.BITBLT
.BS 2 SrcPtr
.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
.DA #S.CB.OP.SET
.DA #S.CB.M.MONO
@ -192,8 +244,8 @@ CB.TEXT .DA #S.CB.CMD.DRAWTEXT
.DA 0 Y1
.DA 0 X2
.DA 0 Y2
.DA 60 DstX
.DA 1 DstY
.DA 50 DstX
.DA 184 DstY
.BS 2 TXTPTR
.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.COLOR .EQ %01000000 Assume BitMap is COLOR
S.CB.OP.F.B .EQ %00010000 BOLD
S.CB.OP.F.I .EQ %00100000 ITALIC
S.CB.OP.F.U .EQ %01000000 UNDERLINED
S.CB.OP.F.G .EQ %10000000 GREYED
S.CB.OP.INVERSE .EQ %10000000 General Inverse Flag
S.CB.OP.F.B .EQ %00000001 BOLD
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.MONO .EQ %00000001 b/w (1 bit/pixel)
*S.CB.M.C4 .EQ %00000010

View File

@ -8,6 +8,12 @@ ZPTablePtr .EQ ZPDRV+6
ZPCharPtr .EQ ZPDRV+8
ZPSrcBMPtr .EQ ZPDRV+10
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
*--------------------------------------
@ -273,13 +279,13 @@ DRAWTEXT.LOOP jsr SHARED.TXTPTR.GetNext
sec +1 for char spacing
adc GWORD+1 Add Bit index in Col
pha
and #7 mod 7
and #7 mod 8
sta GWORD+1 Update Bit index in Col
pla
lsr
lsr
lsr
lsr div 8
clc
adc GWORD Update Col Index in BM
sta GWORD
@ -333,6 +339,7 @@ DRAWTEXT.SHIFT0 lda FON.Cache+S.FON.PixH
.10 pla get back Height counter
dec
bne .6
rts
*--------------------------------------
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
dec
bne .1
bne .1
rts
*--------------------------------------
* X = ShiftL x2 (Range 4..10)
*--------------------------------------
DRAWTEXT.SHIFT26
ldx GWORD+1 Get Bit Index for shifting
lda SHIFT8.LL-1,x
lda SHIFT8.L-4,x
sta .3+1
lda SHIFT8.LH-1,x
lda SHIFT8.L-3,x
sta .3+2
lda SHIFT8.LL,x
lda SHIFT8.L-2,x
sta .4+1
lda SHIFT8.LH,x
lda SHIFT8.L-1,x
sta .4+2
ldx GWORD+1 ShiftL Index
lda FON.Cache+S.FON.PixH
.1 pha save Height counter
@ -411,7 +422,7 @@ DRAWTEXT.SHIFT26
and Last.Masks,x x = 2->6, for X=3 : A=xxx00000
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
@ -582,8 +593,13 @@ BM.Create lda DstBM.Cache+S.BM.W
sta ZPDstBMPtr+1
sta .4+2
lda CB.Cache+S.CB.M Get Background color
ldy #0
lda CB.Cache+S.CB.OP
and #S.CB.OP.INVERSE
beq .3
lda #$ff
.3 inc ZPTmpPtr
bne .4
@ -651,10 +667,6 @@ CB.Cache .BS S.CB
FON.Cache .BS S.FON
SrcBM.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
.DA #%11111101
@ -692,37 +704,44 @@ Last.Masks .DA #%00000000 Useless
.DA #%11111100
.DA #%11111110
*--------------------------------------
SHIFT8.LL .DA #SHIFT8.L1
.DA #SHIFT8.L2
.DA #SHIFT8.L3
.DA #SHIFT8.L4
.DA #SHIFT8.L5
.DA #SHIFT8.L6
.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.L .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
.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.LL .DA #SHIFT8.L1
* .DA #SHIFT8.L2
* .DA #SHIFT8.L3
* .DA #SHIFT8.L4
* .DA #SHIFT8.L5
* .DA #SHIFT8.L6
* .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
* .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
.DA #%00100000,#%00100100,#%00101000,#%00101100,#%00110000,#%00110100,#%00111000,#%00111100
.DA #%01000000,#%01000100,#%01001000,#%01001100,#%01010000,#%01010100,#%01011000,#%01011100