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 lsr
lsr lsr
and #$0F
ora #$30 ora #$30
cmp #'9'+1 cmp #'9'+1
bcc .1 bcc .1

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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