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
PREFIX
AUTO 4,1
AUTO 3,1
.LIST OFF
*--------------------------------------
hFileBuf .BS 1

View File

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

View File

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

View File

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

View File

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

View File

@ -1,6 +1,5 @@
NEW
PREFIX
AUTO 4,1 Enable MASM3 auto line num
AUTO 3,1 Enable MASM3 auto line num
.LIST OFF
.OP 65C02 Target CPU, must match CPU level in header
.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)
*--------------------------------------
INDEX .EQ $5E ->$5F
*INDEX .EQ $5E ->$5F LOAD.FAC.FROM.YA
RESULT .EQ $62 ->$66 used in FMULT FDIV
*--------------------------------------
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 $E941 LOG
.DA $E987 FMULTT.1
.DA $E9E7 LOAD.ARG.FROM.INDEX
.DA $E9E3 LOAD.ARG.FROM.YA
.DA $EA6B FDIVT+2
.DA $EAFD LOAD.FAC.FROM.INDEX
.DA $EAF9 LOAD.FAC.FROM.YA
.DA $EB27 SETFOR (GETFAC)
.DA $EBB2 FCOMP

View File

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

View File

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