Kernel 0.93

This commit is contained in:
Rémy GIBERT 2019-03-27 17:01:01 +00:00
parent 1c1c13a328
commit f9e0ce0fab
6 changed files with 61 additions and 36 deletions

Binary file not shown.

View File

@ -148,7 +148,7 @@ SYM.NewOrGetGlobal
SYM.NewGlobal jsr SYM.StoreGlobal SYM.NewGlobal jsr SYM.StoreGlobal
bcs .99 bcs .99
>DEBUG
>PUSHW ZPLinePtr Pass #1; try to add global... >PUSHW ZPLinePtr Pass #1; try to add global...
>LDA.G SYM.hGlobalList >LDA.G SYM.hGlobalList
>SYSCALL SListNewKey >SYSCALL SListNewKey
@ -285,11 +285,21 @@ SYM.StoreGlobal >LDA.G ASM.PASS
bne .1 bne .1
inc inc
phy
pha
>PUSHYA
>PUSHBI 2
>LDYA L.MSG.WORD
>SYSCALL printf
pla
ply
.1 >PUSHYA .1 >PUSHYA
.2 >PUSHW ZPGlobalBuf .2 >PUSHW ZPGlobalBuf
>PUSHW.G SYM.GlobalID >PUSHW.G SYM.GlobalID
>LDA.G SYM.hGlobalList >LDA.G SYM.hGlobalList
>DEBUG
>SYSCALL SListAddData >SYSCALL SListAddData
bcs .9 bcs .9

View File

@ -169,7 +169,7 @@ GP.SysCall dec IRQ.InKernel
.7 ldx #$FF Self Modified .7 ldx #$FF Self Modified
jmp (K.SYSCALL.JMP,x) jmp (K.SYSCALL.JMP,x)
*-------------------------------------- *--------------------------------------
GP.LibCall dec IRQ.InKernel GP.LibCall dec IRQ.InLib
pha No need to save X, K.GetMemPtr will leave it unmodified pha No need to save X, K.GetMemPtr will leave it unmodified
tya Get LIB hMem in A tya Get LIB hMem in A
@ -178,19 +178,20 @@ GP.LibCall dec IRQ.InKernel
pla pla
.1 jsr $FFFF SELF MODIFIED .1 jsr $FFFF SELF MODIFIED
GP.LibCall.8 inc IRQ.InKernel GP.LibCall.8 inc IRQ.InLib
rts rts
*-------------------------------------- *--------------------------------------
GP.AtkCall dec IRQ.InKernel GP.AtkCall dec IRQ.InKernel
>STYA .1 * >STYA .1
jsr GO.ProDOS * jsr GO.ProDOS
jsr MLI * jsr MLI
.DA #MLIATALK * .DA #MLIATALK
.1 .DA * *.1 .DA *
jsr GO.A2osX * jsr GO.A2osX
bra GP.LibCall.8 inc IRQ.InKernel
rts
*-------------------------------------- *--------------------------------------
GP.RomCallPushFAC GP.RomCallPushFAC
jsr GP.ROMCALL jsr GP.ROMCALL
@ -364,6 +365,7 @@ IRQ.Mode .BS 1
IRQ.SkipA2osX .BS 1 IRQ.SkipA2osX .BS 1
IRQ.Tick .BS 1 IRQ.Tick .BS 1
IRQ.InKernel .BS 1 IRQ.InKernel .BS 1
IRQ.InLib .BS 1
IRQ.IntNum .BS 1 IRQ.IntNum .BS 1
IRQ.VBL.n0 .BS 1 IRQ.VBL.n0 .BS 1
IRQ.VBL.0n .BS 1 IRQ.VBL.0n .BS 1

View File

@ -100,6 +100,7 @@ Kernel.Init3 sta SETALTZP
lda #$ff Make sure we are in Kernel Mode during setup lda #$ff Make sure we are in Kernel Mode during setup
sta IRQ.InKernel sta IRQ.InKernel
stz IRQ.InLib
sta CLRMIXED sta CLRMIXED
sta CLRHIRES sta CLRHIRES

View File

@ -176,6 +176,7 @@ K.IrqH.Switch inc IRQ.Tick
bpl .1 bpl .1
.2 lda IRQ.InKernel keep V flag set .2 lda IRQ.InKernel keep V flag set
ora IRQ.InLib
bpl .3 bpl .3
inc PS.Table.Hits inc PS.Table.Hits

View File

@ -109,22 +109,35 @@ SLIST.AddData jsr SLIST.Select
>LDYA SLIST.KeyID Save DataLen location >LDYA SLIST.KeyID Save DataLen location
>STYA ZPSListKeyID to update later >STYA ZPSListKeyID to update later
jsr SLIST.SkipData ldy SLIST.BytePtr
lda (ZPSListDBlkPtr),y
lda ZPSListDataLen
pha pha
clc clc
adc SLIST.DataLen adc ZPSListDataLen
sta SLIST.DataLen sta (ZPSListDBlkPtr),y
php
jsr SLIST.ToNextByte skip LEN lo
plp
ldy SLIST.BytePtr
lda (ZPSListDBlkPtr),y
pha
adc ZPSListDataLen+1
sta (ZPSListDBlkPtr),y
jsr SLIST.ToNextByte skip LEN hi
plx
pla pla
jsr SLIST.SkipDataAX
lda ZPSListDataLen
eor #$ff eor #$ff
sta ZPSListDataLen sta ZPSListDataLen
lda ZPSListDataLen+1 lda ZPSListDataLen+1
pha
adc SLIST.DataLen+1
sta SLIST.DataLen+1
pla
eor #$ff eor #$ff
sta ZPSListDataLen+1 sta ZPSListDataLen+1
@ -141,16 +154,7 @@ SLIST.AddData jsr SLIST.Select
.8 lda #0 .8 lda #0
jsr SLIST.AddBlockByte Make sure 0 follow DATA jsr SLIST.AddBlockByte Make sure 0 follow DATA
bcs .9
jsr SLIST.Select.I go back to DataLen Location
lda SLIST.DataLen
jsr SLIST.SetBlockByte
lda SLIST.DataLen+1
jsr SLIST.SetBlockByte
clc
.9 rts .9 rts
*-------------------------------------- *--------------------------------------
SLIST.SetData jsr SLIST.Select SLIST.SetData jsr SLIST.Select
@ -233,7 +237,7 @@ SLIST.NewKey jsr SLIST.Search
cpy SLIST.KeyLen cpy SLIST.KeyLen
bne .1 bne .1
lda #0 lda #0 Data Len = 0
jsr SLIST.AddBlockByte jsr SLIST.AddBlockByte
bcs .9 bcs .9
@ -241,6 +245,10 @@ SLIST.NewKey jsr SLIST.Search
jsr SLIST.AddBlockByte jsr SLIST.AddBlockByte
bcs .9 bcs .9
lda #0 Next Len = 0
jsr SLIST.AddBlockByte
bcs .9
>LDYA ZPSListKeyID >LDYA ZPSListKeyID
ldx SLIST.KeyLen ldx SLIST.KeyLen
clc clc
@ -265,8 +273,11 @@ SLIST.New >LDYAI 160 40k Max before out of memory!!!
stx .8+1 stx .8+1
>LDYAI 256 >LDYAI 256
jsr K.GetMem0 jsr K.GetMem
bcs .9 bcs .9
>STYA ZPSListDBlkPtr
lda #0
sta (ZPSListDBlkPtr)
txa txa
sta (ZPSListIBlkPtr) sta (ZPSListIBlkPtr)
@ -309,14 +320,10 @@ SLIST.Select.I ldy ZPSListKeyID+1
SLIST.Search jsr K.GetMemPtr SLIST.Search jsr K.GetMemPtr
>STYA ZPSListIBlkPtr >STYA ZPSListIBlkPtr
stz SLIST.BlockPtr
lda (ZPSListIBlkPtr) lda (ZPSListIBlkPtr)
jsr K.GetMemPtr jsr K.GetMemPtr
>STYA ZPSListDBlkPtr >STYA ZPSListDBlkPtr
stz SLIST.BytePtr
ldy #$ff ldy #$ff
.1 iny .1 iny
@ -325,6 +332,9 @@ SLIST.Search jsr K.GetMemPtr
sty SLIST.KeyLen sty SLIST.KeyLen
stz SLIST.BytePtr
stz SLIST.BlockPtr
.2 >LDYA SLIST.KeyID .2 >LDYA SLIST.KeyID
>STYA ZPSListKeyID >STYA ZPSListKeyID
@ -367,7 +377,7 @@ SLIST.Search jsr K.GetMemPtr
SLIST.Next jsr SLIST.SkipKey SLIST.Next jsr SLIST.SkipKey
SLIST.SkipData jsr SLIST.GetDataLen SLIST.SkipData jsr SLIST.GetDataLen
lda SLIST.DataLen lda SLIST.DataLen
ldx SLIST.DataLen+1 ldx SLIST.DataLen+1
SLIST.SkipDataAX SLIST.SkipDataAX
@ -409,6 +419,7 @@ SLIST.GetDataLen
SLIST.GetNextByte SLIST.GetNextByte
ldy SLIST.BytePtr ldy SLIST.BytePtr
lda (ZPSListDBlkPtr),y lda (ZPSListDBlkPtr),y
SLIST.ToNextByte
inc SLIST.BytePtr inc SLIST.BytePtr
bne .8 bne .8
@ -430,7 +441,7 @@ SLIST.AddBlockByte
phx phx
>LDYAI 256 >LDYAI 256
jsr K.GetMem0 jsr K.GetMem
bcs .9 bcs .9
>STYA ZPSListDBlkPtr >STYA ZPSListDBlkPtr
txa txa