mirror of
https://github.com/A2osX/A2osX.git
synced 2024-07-06 12:29:02 +00:00
Kernel 0.93+
This commit is contained in:
parent
007a976317
commit
f23cf39a41
Binary file not shown.
@ -278,8 +278,8 @@ SYS.UnsetEnv .EQ $BE
|
||||
|
||||
* .EQ $C8
|
||||
* .EQ $CA
|
||||
SYS.LRIntF .EQ $CC
|
||||
SYS.Float .EQ $CE
|
||||
* .EQ $CC
|
||||
* .EQ $CE
|
||||
|
||||
SYS.GetPWUID .EQ $D0
|
||||
SYS.GetPWName .EQ $D2
|
||||
|
@ -127,32 +127,34 @@ FPU.DIV32 .EQ 8
|
||||
FPU.IDIV32 .EQ 10
|
||||
FPU.MOD32 .EQ 12
|
||||
FPU.IMOD32 .EQ 14
|
||||
FPU.CMP32 .EQ 16
|
||||
FPU.ICMP32 .EQ 18
|
||||
|
||||
FPU.FSUB .EQ 16
|
||||
FPU.FADD .EQ 18
|
||||
FPU.FMULT .EQ 20
|
||||
FPU.FDIV .EQ 22
|
||||
FPU.PWR .EQ 24
|
||||
FPU.FADD .EQ 20
|
||||
FPU.FSUB .EQ 22
|
||||
FPU.FMULT .EQ 24
|
||||
FPU.FDIV .EQ 26
|
||||
FPU.PWR .EQ 28
|
||||
|
||||
FPU.LOG .EQ 26
|
||||
FPU.SQR .EQ 28
|
||||
FPU.EXP .EQ 30
|
||||
FPU.COS .EQ 32
|
||||
FPU.SIN .EQ 34
|
||||
FPU.TAN .EQ 36
|
||||
FPU.ATAN .EQ 38
|
||||
FPU.LOG .EQ 30
|
||||
FPU.SQR .EQ 32
|
||||
FPU.EXP .EQ 34
|
||||
FPU.COS .EQ 36
|
||||
FPU.SIN .EQ 38
|
||||
FPU.TAN .EQ 40
|
||||
FPU.ATAN .EQ 42
|
||||
|
||||
FPU.SETARG .EQ 40
|
||||
FPU.SETFAC .EQ 42 PrintF
|
||||
FPU.SETARG .EQ 44 fadd.....
|
||||
FPU.SETFAC .EQ 46 log...., PrintF
|
||||
|
||||
FPU.GETFAC .EQ 44 Copy FAC to (FORPNT)
|
||||
FPU.FCOMP .EQ 46
|
||||
FPU.GETFAC .EQ 48 Copy FAC to (FORPNT)
|
||||
FPU.FCOMP .EQ 50
|
||||
|
||||
FPU.LTOF .EQ 48 Float
|
||||
FPU.QINT .EQ 50 lrintf
|
||||
|
||||
FPU.FIN .EQ 52
|
||||
FPU.FOUT .EQ 54 PrintF
|
||||
FPU.FIN .EQ 56 sscanf
|
||||
FPU.FOUT .EQ 58 PrintF
|
||||
*--------------------------------------
|
||||
.MA FPU
|
||||
ldx #FPU.]1
|
||||
|
@ -40,13 +40,14 @@ DRV.BLK.BlkNum .EQ $46
|
||||
* $5E-$C8 RESERVED APPLESOFT Main/Aux (ROM Call, no need to switch back MainZP)
|
||||
*--------------------------------------
|
||||
*INDEX .EQ $5E ->$5F LOAD.FAC.FROM.YA
|
||||
*DEST .EQ $60 ->$61 used in FCOMP
|
||||
RESULT .EQ $62 ->$66 used in FMULT FDIV
|
||||
TMP32.Sign .EQ RESULT
|
||||
TMP32 .EQ RESULT+1
|
||||
*--------------------------------------
|
||||
ZPTMP .EQ $67 ->$84 29 bytes
|
||||
*--------------------------------------
|
||||
FORPNT .EQ $85 ->$86
|
||||
FORPNT .EQ $85 ->$86 Used in GETFAC
|
||||
FAC .EQ $9D ->$A1
|
||||
FAC.SIGN .EQ $A2
|
||||
* FAC.EXTENSION .EQ $AC
|
||||
|
@ -169,25 +169,33 @@ GP.AtkCall dec IRQ.InKernel
|
||||
.1 .DA *
|
||||
jsr GO.A2osX
|
||||
|
||||
inc IRQ.InKernel
|
||||
GP.AtkCall.INC inc IRQ.InKernel
|
||||
rts
|
||||
*--------------------------------------
|
||||
*/--------------------------------------
|
||||
* # Add32,Sub32,Mul32,IMul32,Div32,IDiv32,Mod32,IMod32,Cmp32,ICmp32
|
||||
* Return X+Y, X-Y, X*Y, X/Y, X mod Y....
|
||||
* ## ASM
|
||||
* **In:**
|
||||
* `>PUSHF X (long)`
|
||||
* `>PUSHF Y (long)`
|
||||
* `>FPU add32`
|
||||
* `...`
|
||||
* ## RETURN VALUE
|
||||
* On stack (long)
|
||||
*\--------------------------------------
|
||||
GP.FpuCall dec IRQ.InKernel
|
||||
jsr .1
|
||||
inc IRQ.InKernel
|
||||
|
||||
clc
|
||||
rts
|
||||
bra GP.AtkCall.INC
|
||||
|
||||
.1 cpx #FPU.IMOD32+1
|
||||
bcc GP.RomCall.JmpX INT32
|
||||
.1 cpx #FPU.FADD
|
||||
bcc GP.RomCall.JmpX INT32, direct JMP
|
||||
|
||||
phx
|
||||
jsr GP.SetFAC Get float from stack
|
||||
|
||||
plx
|
||||
cpx #FPU.PWR+1
|
||||
bcs .2
|
||||
bcs GP.RomCallGetFacOnStack
|
||||
*/--------------------------------------
|
||||
* # FAdd,FSub,FMult,FDiv,FPwr
|
||||
* Return X+Y, X-Y, X*Y, X/Y, X^Y
|
||||
@ -229,9 +237,9 @@ GP.FpuCall dec IRQ.InKernel
|
||||
* ## RETURN VALUE
|
||||
* On stack (Float)
|
||||
*\--------------------------------------
|
||||
.2 jsr GP.ROMCALL
|
||||
GP.RomCallGetFacOnStack
|
||||
jsr GP.ROMCALL
|
||||
|
||||
GP.GETFAC.ON.STACK
|
||||
lda pStack
|
||||
ldy pStack+1
|
||||
|
||||
@ -255,6 +263,68 @@ GP.RomCall phx
|
||||
|
||||
rts
|
||||
*--------------------------------------
|
||||
GP.SetARG ldx #FPU.SETARG
|
||||
.HS 2C BIT ABS
|
||||
GP.SetFAC ldx #FPU.SETFAC
|
||||
|
||||
>LDYA pStack
|
||||
bra GP.RomCall
|
||||
*/--------------------------------------
|
||||
* # float
|
||||
* Return 'floated' long
|
||||
* ## C
|
||||
* `float f = (float)l;
|
||||
* ## ASM
|
||||
* **In:**
|
||||
* `>PUSHL l` (long)
|
||||
* `>FPU float`
|
||||
* ## RETURN VALUE
|
||||
* On stack (float)
|
||||
*\--------------------------------------
|
||||
GP.Float ldy #3
|
||||
|
||||
.1 lda (pStack),y
|
||||
sta FAC+1,y Reverse Order
|
||||
dey
|
||||
bpl .1
|
||||
|
||||
dec pStack keep 5 bytes on stack
|
||||
|
||||
stz FAC.SIGN
|
||||
lda #$80+32
|
||||
sta FAC Positive + Exp=32
|
||||
|
||||
ldx #FPU.LTOF
|
||||
|
||||
bra GP.RomCallGetFacOnStack
|
||||
*/--------------------------------------
|
||||
* # lrintf
|
||||
* Return float rounded into a long
|
||||
* ## C
|
||||
* `long int lrintf (float x);`
|
||||
* ## ASM
|
||||
* **In:**
|
||||
* `>PUSHF x`
|
||||
* `>FPU lrintf`
|
||||
* ## RETURN VALUE
|
||||
* On stack (long)
|
||||
*\--------------------------------------
|
||||
GP.lrintf jsr GP.SetFAC
|
||||
|
||||
inc pStack keep 4 bytes on stack
|
||||
|
||||
ldx #FPU.QINT
|
||||
jsr GP.ROMCALL
|
||||
|
||||
ldy #3
|
||||
|
||||
.1 lda FAC+1,y
|
||||
sta (pStack),y
|
||||
dey
|
||||
bpl .1
|
||||
|
||||
rts
|
||||
*--------------------------------------
|
||||
GP.RomCall.JmpX jmp (.1,x)
|
||||
|
||||
.1 .DA GP.ADD32
|
||||
@ -265,6 +335,8 @@ GP.RomCall.JmpX jmp (.1,x)
|
||||
.DA GP.IDIV32
|
||||
.DA GP.UMOD32
|
||||
.DA GP.IMOD32
|
||||
.DA GP.UCMP32
|
||||
.DA GP.ICMP32
|
||||
|
||||
* http://www.txbobsc.com/scsc/scdocumentor/E7A0.html
|
||||
|
||||
@ -281,12 +353,12 @@ GP.RomCall.JmpX jmp (.1,x)
|
||||
.DA $EFF1 SIN
|
||||
.DA $F03A TAN
|
||||
.DA $F09E ATN
|
||||
|
||||
*--------------------------------------
|
||||
.DA $E9E3 LOAD.ARG.FROM.YA
|
||||
.DA $EAF9 LOAD.FAC.FROM.YA
|
||||
|
||||
.DA $EB27 SETFOR (GETFAC)
|
||||
.DA $EBB2 FCOMP
|
||||
.DA $EBB2 FCOMP (Y,A with FAC)
|
||||
|
||||
.DA $E82E NORMALIZE.FAC.2 (L->F)
|
||||
.DA $EBF2 QINT (F->L)
|
||||
@ -294,13 +366,6 @@ GP.RomCall.JmpX jmp (.1,x)
|
||||
.DA $EC4A FIN AToF
|
||||
.DA $ED36 FOUT.1 PrintF
|
||||
*--------------------------------------
|
||||
GP.SetARG ldx #FPU.SETARG
|
||||
.HS 2C BIT ABS
|
||||
GP.SetFAC ldx #FPU.SETFAC
|
||||
|
||||
>LDYA pStack
|
||||
bra GP.ROMCALL
|
||||
*--------------------------------------
|
||||
GP.ADD32 clc
|
||||
.HS B0 BCS
|
||||
GP.SUB32 sec
|
||||
@ -313,19 +378,15 @@ GP.SUB32 sec
|
||||
ldx #3
|
||||
|
||||
plp
|
||||
bcs .2
|
||||
bcs .1
|
||||
lda #$79 ADC Absolute,Y
|
||||
.HS 2C BIT ABS
|
||||
.1 lda #$F9 SBC Absolute,Y
|
||||
|
||||
.1 lda (pStack),y
|
||||
adc ACC32,y
|
||||
sta (pStack),y
|
||||
iny
|
||||
dex
|
||||
bpl .1
|
||||
|
||||
rts
|
||||
sta .3
|
||||
|
||||
.2 lda (pStack),y
|
||||
sbc ACC32,y
|
||||
.3 adc ACC32,y SELF MODIFIED
|
||||
sta (pStack),y
|
||||
iny
|
||||
dex
|
||||
@ -333,6 +394,30 @@ GP.SUB32 sec
|
||||
|
||||
GP.SUB32.RTS rts
|
||||
*--------------------------------------
|
||||
* Returns:
|
||||
* ff X < Y
|
||||
* 0 X = Y
|
||||
* 1 X > Y
|
||||
*--------------------------------------
|
||||
GP.UCMP32
|
||||
GP.ICMP32 jsr GP.SUB32
|
||||
|
||||
jsr GP.PopACC32 A = ACC32+3 (sign)
|
||||
|
||||
tay
|
||||
bmi .2
|
||||
|
||||
.1 ora ACC32+2
|
||||
ora ACC32+1
|
||||
ora ACC32
|
||||
beq .8
|
||||
|
||||
lda #1
|
||||
rts
|
||||
|
||||
.2 lda #$ff
|
||||
.8 rts
|
||||
*--------------------------------------
|
||||
GP.UMUL32 clc
|
||||
.HS B0 BCS
|
||||
GP.IMUL32 sec
|
||||
@ -412,21 +497,17 @@ GP.PutNotARG32 lda #ARG32
|
||||
|
||||
rts
|
||||
*--------------------------------------
|
||||
GP.PopACC32 ldy #$ff
|
||||
GP.PopACC32 ldy #0
|
||||
|
||||
.1 iny
|
||||
lda (pStack),y
|
||||
.1 lda (pStack)
|
||||
inc pStack
|
||||
sta ACC32,y
|
||||
cpy #3
|
||||
iny
|
||||
cpy #4
|
||||
bne .1
|
||||
|
||||
sta ACC32.Sign
|
||||
|
||||
tya
|
||||
* sec Add 3+CS=4
|
||||
adc pStack
|
||||
sta pStack
|
||||
|
||||
rts
|
||||
*--------------------------------------
|
||||
GP.GetARG32 ldy #0
|
||||
@ -439,7 +520,7 @@ GP.GetARG32 ldy #0
|
||||
|
||||
sta ARG32.Sign
|
||||
|
||||
rts
|
||||
GP.GetARG32.RTS rts
|
||||
*--------------------------------------
|
||||
GP.MULDIVMOD.COMMON
|
||||
php
|
||||
@ -448,69 +529,12 @@ GP.MULDIVMOD.COMMON
|
||||
jsr GP.GetARG32
|
||||
|
||||
plp
|
||||
bcc .1
|
||||
bcc GP.GetARG32.RTS
|
||||
|
||||
jsr MATH.ACC32ABS
|
||||
jsr MATH.ARG32ABS
|
||||
|
||||
.1 rts
|
||||
*/--------------------------------------
|
||||
* # float
|
||||
* Return 'floated' long
|
||||
* ## C
|
||||
* `float f = (float)12345678;
|
||||
* ## ASM
|
||||
* **In:**
|
||||
* `>PUSHL X` (long)
|
||||
* ## RETURN VALUE
|
||||
* On stack (float)
|
||||
*\--------------------------------------
|
||||
K.Float ldy #3
|
||||
|
||||
.1 lda (pStack),y
|
||||
sta FAC,y Reverse Order
|
||||
dey
|
||||
bpl .1
|
||||
|
||||
dec pStack keep 5 bytes on stack
|
||||
|
||||
stz FAC.SIGN
|
||||
lda #$80+32
|
||||
sta FAC Positive + Exp=32
|
||||
|
||||
ldx #FPU.LTOF
|
||||
|
||||
GP.RomCallPushFAC
|
||||
jsr GP.ROMCALL
|
||||
jmp GP.GETFAC.ON.STACK
|
||||
*/--------------------------------------
|
||||
* # lrintf
|
||||
* Return float rounded into a long
|
||||
* ## C
|
||||
* `long int lrintf (float x);`
|
||||
* ## ASM
|
||||
* **In:**
|
||||
* `>PUSHF x`
|
||||
* `>SYSCALL lrintf`
|
||||
* ## RETURN VALUE
|
||||
* On stack (long)
|
||||
*\--------------------------------------
|
||||
K.lrintf jsr GP.SetFAC
|
||||
|
||||
inc pStack keep 4 bytes on stack
|
||||
|
||||
ldx #FPU.QINT
|
||||
jsr GP.ROMCALL
|
||||
|
||||
ldy #3
|
||||
|
||||
.1 lda FAC+1,y
|
||||
sta (pStack),y
|
||||
dey
|
||||
bpl .1
|
||||
|
||||
clc
|
||||
rts
|
||||
jmp MATH.ARG32ABS
|
||||
*--------------------------------------
|
||||
* MLI : From Kernel Aux LC to Main LC
|
||||
*--------------------------------------
|
||||
GP.MLICall stx .1
|
||||
sta K.MLI.PARAMS
|
||||
@ -620,11 +644,6 @@ CORE.Tick10t .BS 1
|
||||
CORE.CPUStatCnt .DA #100
|
||||
CORE.LastPSID .DA #0
|
||||
*--------------------------------------
|
||||
DevMgr.Stat .DA DevMgr.FreeMem
|
||||
DevMgr.Free .DA DevMgr.FreeMem
|
||||
.DA DevMgr.HiMem
|
||||
DevMgr.DevIdx .DA #1
|
||||
*--------------------------------------
|
||||
IRQ.InKernel .BS 1
|
||||
IRQ.InLib .BS 1
|
||||
IRQ.SkipA2osX .BS 1
|
||||
@ -635,8 +654,6 @@ IRQ.VBL.0n .BS 1
|
||||
IRQ.Mode .BS 1
|
||||
IRQ.Tick .BS 1
|
||||
*--------------------------------------
|
||||
IRQ.Vectors .BS K.IRQDEV.MAX*2
|
||||
*--------------------------------------
|
||||
*GO.Reset jsr GO.A2osX
|
||||
* jmp CORE.Run
|
||||
*--------------------------------------
|
||||
|
@ -2,7 +2,7 @@ NEW
|
||||
AUTO 3,1
|
||||
*--------------------------------------
|
||||
* SYSCALL (AUXLC to AUXLC)
|
||||
* Used by user & kernel for inter bank Calls
|
||||
* Used by kernel for inter bank Calls from AUX
|
||||
* In:
|
||||
* X = SYSfnc.Index
|
||||
* Y,A = free for Inline param
|
||||
|
@ -227,6 +227,8 @@ K.IrqH.DEV ldx #0
|
||||
.8 clv clear V (no task switching)
|
||||
rts
|
||||
*--------------------------------------
|
||||
IRQ.Vectors .BS K.IRQDEV.MAX*2
|
||||
*--------------------------------------
|
||||
MAN
|
||||
SAVE USR/SRC/SYS/KERNEL.S.IRQ
|
||||
LOAD USR/SRC/SYS/KERNEL.S
|
||||
|
@ -121,8 +121,8 @@ K.SYSCALL .DA 0 $00
|
||||
.DA 0
|
||||
.DA 0
|
||||
.DA 0
|
||||
.DA K.LRIntF
|
||||
.DA K.Float
|
||||
.DA 0
|
||||
.DA 0
|
||||
|
||||
.DA K.GetPWUID $D0
|
||||
.DA K.GetPWName
|
||||
|
@ -41,7 +41,7 @@ K.AToF >STYA TXTPTR Ptr to source string
|
||||
jsr CHARGOT
|
||||
|
||||
ldx #FPU.FIN
|
||||
jmp GP.RomCallPushFAC
|
||||
jmp GP.RomCallGetFacOnStack
|
||||
*/--------------------------------------
|
||||
* # StrToL/StrToUL
|
||||
* Convert String to 32 bits (unsigned) int
|
||||
|
@ -79,6 +79,11 @@ PWD.hDB .BS 1
|
||||
PWD.DBPtr .BS 2
|
||||
PWD.DBSize .BS 2
|
||||
PWD.FILE .AZ "${ROOT}ETC/PASSWD"
|
||||
*--------------------------------------
|
||||
DevMgr.Stat .DA DevMgr.FreeMem
|
||||
DevMgr.Free .DA DevMgr.FreeMem
|
||||
.DA DevMgr.HiMem
|
||||
DevMgr.DevIdx .DA #1
|
||||
*--------------------------------------
|
||||
.LIST ON
|
||||
DevMgr.FreeMem .EQ *
|
||||
|
Loading…
Reference in New Issue
Block a user