Kernel 0.93

This commit is contained in:
Rémy GIBERT 2019-06-28 17:15:58 +02:00
parent facad7dd06
commit 5c330415ca
12 changed files with 151 additions and 39 deletions

View File

@ -1,6 +1,5 @@
NEW NEW
PREFIX AUTO 3,1
AUTO 4,1
.LIST OFF .LIST OFF
*-------------------------------------- *--------------------------------------
hFileBuf .BS 1 hFileBuf .BS 1

View File

@ -1,15 +1,15 @@
NEW NEW
PREFIX AUTO 3,1
AUTO 4,1
.LIST OFF .LIST OFF
*-------------------------------------- *--------------------------------------
CSH.E.SYNTAX .EQ $7F CSH.E.SYNTAX .EQ $C0
CSH.E.SOVERFLW .EQ $7E CSH.E.SOVERFLW .EQ $C3
CSH.E.NOVERFLW .EQ $7D CSH.E.UNDEF .EQ $C9
CSH.E.OOM .EQ $7C *
CSH.E.DUP .EQ $7B CSH.E.NOVERFLW .EQ $D0
CSH.E.UNDEF .EQ $7A CSH.E.TMISMATCH .EQ $D1
CSH.E.TMISMATCH .EQ $79 CSH.E.OOM .EQ $D2
CSH.E.DUP .EQ $D3
*-------------------------------------- *--------------------------------------
MAN MAN
SAVE USR/SRC/BIN/CSH.E SAVE USR/SRC/BIN/CSH.E

View File

@ -1,6 +1,5 @@
NEW NEW
PREFIX AUTO 3,1
AUTO 4,1
.LIST OFF .LIST OFF
*-------------------------------------- *--------------------------------------
CSH.OPChars .AS "!~+-*/%=&|^&<>" CSH.OPChars .AS "!~+-*/%=&|^&<>"

View File

@ -1,6 +1,5 @@
NEW NEW
PREFIX AUTO 3,1
AUTO 4,1
.LIST OFF .LIST OFF
*-------------------------------------- *--------------------------------------
L.CSH.BOPS .DA CSH.BOPS L.CSH.BOPS .DA CSH.BOPS

View File

@ -1,6 +1,5 @@
NEW NEW
PREFIX AUTO 3,1
AUTO 4,1
.LIST OFF .LIST OFF
*-------------------------------------- *--------------------------------------
CSH.Q.CONST .EQ %10000000 CSH.Q.CONST .EQ %10000000

View File

@ -1,6 +1,5 @@
NEW NEW
PREFIX AUTO 3,1 Enable MASM3 auto line num
AUTO 4,1 Enable MASM3 auto line num
.LIST OFF .LIST OFF
.OP 65C02 Target CPU, must match CPU level in header .OP 65C02 Target CPU, must match CPU level in header
.OR $2000 usualy $2000, but any value > $100 allowed .OR $2000 usualy $2000, but any value > $100 allowed

View File

@ -39,7 +39,7 @@ DRV.BLK.BlkNum .EQ $47
*-------------------------------------- *--------------------------------------
* $5E-$C8 RESERVED APPLESOFT Main/Aux (ROM Call, no need to switch back MainZP) * $5E-$C8 RESERVED APPLESOFT Main/Aux (ROM Call, no need to switch back MainZP)
*-------------------------------------- *--------------------------------------
INDEX .EQ $5E ->$5F *INDEX .EQ $5E ->$5F LOAD.FAC.FROM.YA
RESULT .EQ $62 ->$66 used in FMULT FDIV RESULT .EQ $62 ->$66 used in FMULT FDIV
*-------------------------------------- *--------------------------------------
ZPTMP .EQ $67 ->$84 29 bytes ZPTMP .EQ $67 ->$84 29 bytes

View File

@ -214,9 +214,9 @@ GP.RomCall dec IRQ.InKernel
.DA $E82E NORMALIZE.FAC.2 (L->F) .DA $E82E NORMALIZE.FAC.2 (L->F)
.DA $E941 LOG .DA $E941 LOG
.DA $E987 FMULTT.1 .DA $E987 FMULTT.1
.DA $E9E7 LOAD.ARG.FROM.INDEX .DA $E9E3 LOAD.ARG.FROM.YA
.DA $EA6B FDIVT+2 .DA $EA6B FDIVT+2
.DA $EAFD LOAD.FAC.FROM.INDEX .DA $EAF9 LOAD.FAC.FROM.YA
.DA $EB27 SETFOR (GETFAC) .DA $EB27 SETFOR (GETFAC)
.DA $EBB2 FCOMP .DA $EBB2 FCOMP

View File

@ -124,7 +124,6 @@ MATH.PullARG ldx #ROM.SETARG
MATH.PullFAC ldx #ROM.SETFAC MATH.PullFAC ldx #ROM.SETFAC
>LDYA pStack >LDYA pStack
>STYA INDEX
jsr GP.ROMCALL jsr GP.ROMCALL
lda pStack lda pStack

123
SYS/KERNEL.S.NUM.txt Normal file
View File

@ -0,0 +1,123 @@
NEW
AUTO 3,1
*--------------------------------------
ACC32.Sign .EQ FAC
ACC32 .EQ FAC+1
*--------------------------------------
NUM.A2STR10 jsr NUM.A2ACC32
clc
*--------------------------------------
* CS = signed long
* CC = unsigned long
*--------------------------------------
NUM.ACC322STR10 bcc .1
clc
lda ACC32+3
bpl .1
jsr NUM.ACC32NEG
sec
.1 php
ldx #4
.2 stz RESULT,x Clear all 5 bytes
dex
bpl .2
sed switch to BCD mode
ldx #32 let's roll 32 bits
.3 asl ACC32
rol ACC32+1
rol ACC32+2
rol ACC32+3
ldy #4
.4 lda RESULT,y
adc RESULT,y
sta RESULT,y
dey
bpl .4
dex
bne .3
cld
ldy #0
* ldx #0
plp
bcc .5
lda #'-'
sta $102,x
inx
.5 stz $102,x
.50 tya
lsr
tay
lda RESULT,y
bcs .6
lsr
lsr
lsr
lsr
.6 and #$0F
ora #$30
cmp #$30
lda $102,x
sta $102,x
.7 sta $102,x
inx
.8 iny
cpy #10
bne .50
stz $102,x
clc
.99 rts
*--------------------------------------
NUM.A2ACC32 sta ACC32
.HS 2C BIT ABS
NUM.ACC32ZERO stz ACC32
stz ACC32+1
stz ACC32+2
stz ACC32+3
rts
*--------------------------------------
NUM.ACC32NEG sec
ldy #0
ldx #3
.1 lda ACC32,y two's complement of X bytes
eor #$ff
adc #0
sta ACC32,y
iny
dex
bpl .1
rts
*--------------------------------------
MAN
SAVE USR/SRC/SYS/KERNEL.S.NUM
LOAD USR/SRC/SYS/KERNEL.S
ASM

View File

@ -4,7 +4,6 @@ NEW
HEXBUF .EQ FAC HEXBUF .EQ FAC
K.PrintF.PadL .EQ FAC+4 K.PrintF.PadL .EQ FAC+4
K.PrintF.PadC .EQ FAC+5 K.PrintF.PadC .EQ FAC+5
BCDBUF .EQ ARG 5, enough to handle 10 digits (32bits)
HEXBUF.Signed .EQ ARG.SIGN HEXBUF.Signed .EQ ARG.SIGN
*/-------------------------------------- */--------------------------------------
* # putchar (BLOCKING) * # putchar (BLOCKING)
@ -397,13 +396,13 @@ K.PrintF.1 stz PrintF.Cnt
sec sec
rts rts
*-------------------------------------- *--------------------------------------
.8 lda PrintF.hFILE .8 ldx PrintF.hFILE
beq .80 Writing to buffer, append \0 beq .80 Writing to buffer, append \0
>PUSHW PrintF.Cnt Writing to File/dev... >PUSHW PrintF.Cnt Writing to File/dev...
>PUSHWI K.IOBuf >PUSHWI K.IOBuf
lda PrintF.hFILE txa
jsr K.FWrite jsr K.FWrite
bcc .81 bcc .81
@ -559,7 +558,7 @@ PrintF.Hex2Dec ror HEXBUF.Signed
ldx #4 ldx #4
.1 stz BCDBUF,x Clear all 5 bytes .1 stz RESULT,x Clear all 5 bytes
dex dex
bpl .1 bpl .1
@ -574,9 +573,9 @@ PrintF.Hex2Dec ror HEXBUF.Signed
ldy #4 ldy #4
.3 lda BCDBUF,y .3 lda RESULT,y
adc BCDBUF,y adc RESULT,y
sta BCDBUF,y sta RESULT,y
dey dey
bpl .3 bpl .3
@ -605,7 +604,7 @@ PrintF.Hex2Dec ror HEXBUF.Signed
lsr CS if lo nibble (1,3,5,7,9) lsr CS if lo nibble (1,3,5,7,9)
tay tay
lda BCDBUF,y lda RESULT,y
bcs .6 bcs .6
@ -662,10 +661,9 @@ PrintF.F clc
.1 tya .1 tya
sec +1 sec +1
adc pStack adc pStack
sta INDEX tay
lda pStack+1 lda pStack+1
sta INDEX+1
ldx #ROM.SETFAC ldx #ROM.SETFAC
jsr GP.ROMCALL jsr GP.ROMCALL
@ -1348,6 +1346,7 @@ K.FSeek jsr PFT.CheckNodeA
.HS 2C bit abs .HS 2C bit abs
.99 lda #E.FTB .99 lda #E.FTB
sec sec
K.FSeek.RTS
rts rts
*/-------------------------------------- */--------------------------------------
* # FEOF * # FEOF
@ -1365,11 +1364,9 @@ K.FSeek jsr PFT.CheckNodeA
* CS : * CS :
*\-------------------------------------- *\--------------------------------------
K.FEOF jsr PFT.CheckNodeA K.FEOF jsr PFT.CheckNodeA
bcs .9 bcs K.FSeek.RTS
jmp IO.EOF jmp IO.EOF
.9 rts
*/-------------------------------------- */--------------------------------------
* # FTell * # FTell
* Return the current value of the file-position indicator * Return the current value of the file-position indicator

View File

@ -30,11 +30,9 @@ TIME.Year .BS 1
* ## RETURN VALUE * ## RETURN VALUE
* S.TIME filled with System date/time * S.TIME filled with System date/time
*\-------------------------------------- *\--------------------------------------
K.Time >STYA ZPPtr2 K.Time >PUSHYA
>MLICALL MLIGETTIME >MLICALL MLIGETTIME
>LDYAI DATELO >LDYAI DATELO
>STYA ZPPtr1
bra TIME.PTime2TimeP1P2
*/-------------------------------------- */--------------------------------------
* # PTime2Time * # PTime2Time
* Convert ProDOS Time To S.TIME * Convert ProDOS Time To S.TIME