Kernel 0.9.1 : KERNEL, Preemtive mode, Code cleaning....step by step....#6

This commit is contained in:
Rémy GIBERT 2018-05-07 08:13:07 +02:00
parent 7550b8bdfb
commit 5bdf3479dd
10 changed files with 96 additions and 110 deletions

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -307,7 +307,6 @@ A2CharAX pha
lsr
lsr
lsr
and #$0F
ora #$30
cmp #'9'+1
bcc .1

View File

@ -221,7 +221,6 @@ A2CharAX pha
lsr
lsr
and #$0F
ora #$30
cmp #'9'+1
bcc .1
adc #6

View File

@ -12,8 +12,7 @@ AUTO 4,1
.INB /A2OSX.BUILD/INC/XY.MOUSE.I
.INB /A2OSX.BUILD/INC/LIBGUI.I
*--------------------------------------
ZPGoMouse .EQ ZPDRV
ZPTmpPtr1 .EQ ZPDRV+2
ZPTmpPtr1 .EQ ZPDRV
*--------------------------------------
* File Header (16 Bytes)
*--------------------------------------
@ -40,9 +39,9 @@ Dev.Detect >LDYA L.MSG.DETECT
stz ZPTmpPtr1
lda #$C1
sta ZPTmpPtr1+1
.1 sta ZPTmpPtr1+1
.1 ldx #DEVSIG.Value-DEVSIG.Offset-1
ldx #DEVSIG.Value-DEVSIG.Offset-1
.2 ldy DEVSIG.Offset,x
lda (ZPTmpPtr1),y
@ -52,7 +51,9 @@ Dev.Detect >LDYA L.MSG.DETECT
bpl .2
lda ZPTmpPtr1+1
sta DEVSLOTCn
sta GOMOUSE+2
sta GOMOUSE.Cn+1
sta GOMOUSE.JMP+2
and #$0F
sta DEVSLOT0n
ora #$30
@ -61,7 +62,7 @@ Dev.Detect >LDYA L.MSG.DETECT
asl
asl
asl
sta DEVSLOTn0
sta GOMOUSE.n0+1
>PUSHW L.DEV.HEADER.NAME
>LDYA L.MSG.DETECT.OK
@ -69,8 +70,8 @@ Dev.Detect >LDYA L.MSG.DETECT
clc
rts
.3 inc ZPTmpPtr1+1 no match, try next slot....
lda ZPTmpPtr1+1
.3 lda ZPTmpPtr1+1 no match, try next slot....
inc
cmp #$C8
bne .1
@ -79,8 +80,7 @@ Dev.Detect >LDYA L.MSG.DETECT
lda #MLI.E.NODEV
sec
rts
rts
*--------------------------------------
CS.END
MSG.DETECT .AZ "Apple Mouse Driver.\r\n"
@ -118,9 +118,7 @@ STATUS >LDYA L.DEVSTAT
*--------------------------------------
READBLOCK >STYA ZPTmpPtr1
ldy #S.MOUSE.S
lda #0
sta (ZPTmpPtr1),y Reset Flags
stz READBLOCK.S+1 Reset Flags
php
sei
@ -151,9 +149,8 @@ READBLOCK >STYA ZPTmpPtr1
lda MOUSEYHIx,x
sta (ZPTmpPtr1),y
ldy #S.MOUSE.S
lda #S.MOUSE.S.MOVE
sta (ZPTmpPtr1),y
tsb READBLOCK.S+1
stz bDblClick Reset DblClick flag
@ -167,10 +164,8 @@ READBLOCK >STYA ZPTmpPtr1
asl if CS, down & previously up
bcc .2
ldy #S.MOUSE.S
lda #S.MOUSE.S.DOWN
ora (ZPTmpPtr1),y
sta (ZPTmpPtr1),y button has been pressed, start drag...
tsb READBLOCK.S+1 button has been pressed, start drag...
lda MOUSEXLOx,x
sta SrcDrag
@ -186,13 +181,12 @@ READBLOCK >STYA ZPTmpPtr1
bra .8
.2 ldy #S.MOUSE.S
lda (ZPTmpPtr1),y
.2 lda READBLOCK.S+1
pha save move state
ora #S.MOUSE.S.UP
sta (ZPTmpPtr1),y
sta READBLOCK.S+1
pla get back move state
@ -209,15 +203,11 @@ READBLOCK >STYA ZPTmpPtr1
.3 dec bDblClick
ldy #S.MOUSE.S
ora (ZPTmpPtr1),y
sta (ZPTmpPtr1),y
tsb READBLOCK.S+1
bra .8
.4 lda #S.MOUSE.S.DRAG
ldy #S.MOUSE.S
ora (ZPTmpPtr1),y
sta (ZPTmpPtr1),y
tsb READBLOCK.S+1
ldy #S.MOUSE.X2+3
@ -228,9 +218,11 @@ READBLOCK >STYA ZPTmpPtr1
.8 plp
ldy #S.MOUSE.S
lda (ZPTmpPtr1),y
READBLOCK.S lda #$ff SELF MODIFIED
beq .9
ldy #S.MOUSE.S
sta (ZPTmpPtr1),y
clc
rts
@ -245,11 +237,11 @@ CONTROL >STYA ZPTmpPtr1
ldy #0
ldx #0 set X
jsr CONTROL.SETCLAMP
jsr SETCLAMP
ldy #4
ldx #1 set Y
jsr CONTROL.SETCLAMP
jsr SETCLAMP
ldy #HOMEMOUSE
jsr GOMOUSE
@ -258,28 +250,6 @@ CONTROL >STYA ZPTmpPtr1
clc
rts
*--------------------------------------
CONTROL.SETCLAMP
lda (ZPTmpPtr1),y
sta LOCLAMPLO
iny
lda (ZPTmpPtr1),y
sta LOCLAMPHI
iny
lda (ZPTmpPtr1),y
sta HICLAMPLO
iny
lda (ZPTmpPtr1),y
sta HICLAMPHI
txa
ldy #CLAMPMOUSE
jsr GOMOUSE
rts
*--------------------------------------
OPEN php
sei
@ -311,25 +281,37 @@ CLOSE php
*--------------------------------------
* PRIVATE
*--------------------------------------
GOMOUSE pha
stz ZPGoMouse
ldx DEVSLOTCn
stx ZPGoMouse+1
lda (ZPGoMouse),y
sta ZPGoMouse
ldy DEVSLOTn0
pla
jmp (ZPGoMouse)
SETCLAMP lda (ZPTmpPtr1),y
sta LOCLAMPLO
iny
lda (ZPTmpPtr1),y
sta LOCLAMPHI
iny
lda (ZPTmpPtr1),y
sta HICLAMPLO
iny
lda (ZPTmpPtr1),y
sta HICLAMPHI
txa
ldy #CLAMPMOUSE
*--------------------------------------
GOMOUSE ldx $FF00,y SELF MODIFIED
stx GOMOUSE.JMP+1
GOMOUSE.Cn ldx #$ff SELF MODIFIED
GOMOUSE.n0 ldy #$ff SELF MODIFIED
GOMOUSE.JMP jmp $FFFF SELF MODIFIED
*--------------------------------------
DRV.CS.END
DEVSLOT0n .BS 1
DEVSLOTn0 .BS 1
DEVSLOTCn .BS 1
bDblClick .BS 1
SrcDrag .BS 4
*--------------------------------------
DEVSTAT .DA #0
.DA #0,#0,#0 size
.DA #0,#0,#0
>PSTR "Apple II Mouse"
.BS 2
.DA #S.DSTAT.T.XY

View File

@ -165,7 +165,6 @@ A2CharAX pha
lsr
lsr
lsr
and #$0F
ora #$30
cmp #'9'+1
bcc .1

View File

@ -38,10 +38,7 @@ K.ExpandStr.YA stz ENV.hStr Reset Intermediate string...
.21 bit ENV.bNoExp
bpl .23
.22 ldx ENV.BufLen
sta K.Buf256,x
inx
stx ENV.BufLen
.22 jsr ENV.AddAToBuf
bra .11
.23 ldx ENV.bInVar already in a var?
@ -134,14 +131,6 @@ ENV.GetValue jsr ENV.ExpandSysVar
jsr ENV.AddP3ToBuf
.9 rts
*--------------------------------------
ENV.BufLen .BS 1
ENV.bNoExp .BS 1
ENV.bInVar .BS 1
ENV.bFound .BS 1
ENV.hStr .BS 1
ENV.VarLen .BS 1
ENV.VarName .BS 16
*/--------------------------------------
* # PutEnv.YA
* ## In:
@ -354,8 +343,9 @@ ENV.ExpandSysVar
asl
tax
jmp (ENV.SysVarsJmp,x)
*--------------------------------------
ENV.SysVars .AS "*#?@$!"
*--------------------------------------
ENV.SysVarsJmp .DA ENV.SysVarsArgs
.DA ENV.SysVarsArgC
.DA ENV.SysVarsRC
@ -389,19 +379,6 @@ ENV.SysVarsArgs lda #1
.8 clc
rts
*--------------------------------------
ENV.AddP3ToBuf ldx ENV.BufLen
ldy #$ff
dex
.1 iny
inx
lda (ZPPtr3),y
sta K.Buf256,x
bne .1
stx ENV.BufLen
rts
*--------------------------------------
ENV.SysVarsArgC ldy #S.PS.ARGC
.HS 2C
ENV.SysVarsRC ldy #S.PS.RC
@ -438,10 +415,13 @@ ENV.SysVarsCPID ldy #S.PS.CPID
ldx ENV.BufLen
lda .3+1
beq .4
ora #$30
sta K.Buf256,x
inx
.4 lda .2+1
pha
lsr
lsr
lsr
@ -452,9 +432,11 @@ ENV.SysVarsCPID ldy #S.PS.CPID
sta K.Buf256,x
inx
.5 lda .2+1
.5 pla
and #$0f
ora #$30
.8 ora #$30
sta K.Buf256,x
inx
@ -554,6 +536,33 @@ ENV.NextEnvP3 ldy #0
inc ZPPtr3+1
.8 rts
*--------------------------------------
ENV.AddP3ToBuf ldx ENV.BufLen
ldy #$ff
dex
.1 iny
inx
lda (ZPPtr3),y
sta K.Buf256,x
bne .1
stx ENV.BufLen
rts
*--------------------------------------
ENV.AddAToBuf ldx ENV.BufLen
sta K.Buf256,x
inx
stx ENV.BufLen
rts
*--------------------------------------
ENV.BufLen .BS 1
ENV.bNoExp .BS 1
ENV.bInVar .BS 1
ENV.bFound .BS 1
ENV.hStr .BS 1
ENV.VarLen .BS 1
ENV.VarName .BS 16
*--------------------------------------
MAN
SAVE /A2OSX.SRC/SYS/KERNEL.S.ENV
LOAD /A2OSX.SRC/SYS/KERNEL.S

View File

@ -1155,11 +1155,10 @@ HEX2DEC ror .31+1
lsr
.6 and #$0F
beq .7 a zero?
ora #$30
cmp #'0' a zero?
beq .7
inc PADLEN found a non zero, Print all digits, even if 0, next time
ldy #'0'
sty PADCHAR

View File

@ -556,24 +556,26 @@ K.StrFTime.Y ldy #S.Time.YEAR
K.StrFTime.addDecPtr1Y
lda (ZPPtr1),y
K.StrFTime.addDecA
sta K.StrFTime.BIN
stz K.StrFTime.DEC
sed
stz .2+1
ldx #8
sed
.1 asl K.StrFTime.BIN
.1 asl
pha
.2 lda #$ff Self Modified
lda K.StrFTime.DEC
adc K.StrFTime.DEC
sta K.StrFTime.DEC
adc .2+1
sta .2+1
pla
dex
bne .1
cld
* lda K.StrFTime.DEC already in A
lda .2+1
pha
lsr
lsr
@ -613,9 +615,6 @@ K.StrFTime.MON >PSTR "January"
>PSTR "November"
>PSTR "December"
*--------------------------------------
K.StrFTime.BIN .BS 1
K.StrFTime.DEC .BS 1 always < 100
*--------------------------------------
MAN
SAVE /A2OSX.SRC/SYS/KERNEL.S.TIME
LOAD /A2OSX.SRC/SYS/KERNEL.S