Kernel 0.9.1 : Math API

This commit is contained in:
Rémy GIBERT 2017-10-27 16:56:46 +02:00
parent 2f42486dbd
commit 94d9a4393e
32 changed files with 477 additions and 463 deletions

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -62,8 +62,8 @@ A2osX.Init1 ldx #$FF init 6502 stack to highest
jsr PrintFAX
lda MACHID
and #MACHID.RAM
cmp #MACHID.RAM.128
and #MACHID.M
cmp #MACHID.M.128
beq .1
>LDAXI MSG.SYSMEM.KO

View File

@ -261,7 +261,7 @@ FIO.LOAD.ASM.T ldy #ASM.T.hMem
>SYSCALL PrintF.YA
>PUSHWI 0 Aux type
>PUSHBI 6 S.FILEINFO.TYPE.BIN
>PUSHBI 6 S.FI.T.BIN
>PUSHBI SYS.FOpen.R
>PUSHW L.ASM.T.FILENAME
>SYSCALL LoadFile

View File

@ -253,7 +253,7 @@ CS.RUN.OPEN >SYSCALL RealPath.YA
pha
>PUSHWI 0 Aux type
>PUSHBI 4 S.FILEINFO.TYPE.TXT
>PUSHBI 4 S.FI.T.TXT
>PUSHBI SYS.FOpen.R+SYS.FOpen.T
pla

View File

@ -341,7 +341,7 @@ CharIn.Esc ldy #bEscMode
rts
*--------------------------------------
LoadFile >PUSHWI 0 Aux type
>PUSHBI 4 S.FILEINFO.TYPE.TXT
>PUSHBI 4 S.FI.T.TXT
>PUSHBI SYS.FOpen.R
ldy #hFileName
lda (pData),y
@ -413,7 +413,7 @@ LoadFile >PUSHWI 0 Aux type
.9 rts
*--------------------------------------
SaveFile >PUSHWI 0 Aux type
>PUSHBI 4 S.FILEINFO.TYPE.TXT
>PUSHBI 4 S.FI.T.TXT
>PUSHBI SYS.FOpen.X+SYS.FOpen.W
>LDA.G hFileName
>SYSCALL GetMemPtr.A

View File

@ -16,7 +16,7 @@ AUTO 6
.INB /A2OSX.BUILD/INC/LIBTCPIP.I
*--------------------------------------
ZPTmpPTR .EQ ZPDRV
Size .EQ ZPDRV+2
Size .EQ ZPDRV+2
Counter .EQ ZPDRV+4
*--------------------------------------
* File Header (16 Bytes)

View File

@ -44,6 +44,8 @@ A2osX.CPUSPEED .EQ $BEE6 WORD, (->255.99 Mhz)
A2osX.Z80SLOT .EQ $BEE8
A2osX.Z80SPEED .EQ $BEE9 WORD
A2OsX.InKernel .EQ $BEEB
A2osX.TIMER16 .EQ $BEEC WORD
A2osX.RANDOM16 .EQ $BEEE WORD
*--------------------------------------
@ -182,27 +184,45 @@ SYS.SetEnv .EQ $BA
SYS.GetEnv.YA .EQ $BC
SYS.UnsetEnv.YA .EQ $BE
*--------------------------------------
SYS.GetMem .EQ $C0
SYS.FreeMem.A .EQ $C2
SYS.GetMemPtr.A .EQ $C4
SYS.GetMemByID.A .EQ $C6
SYS.FAdd .EQ $C0
SYS.FSub .EQ $C2
SYS.FMult .EQ $C4
SYS.FDiv .EQ $C6
SYS.GetMem.YA .EQ $C8
SYS.GetMem0.YA .EQ $CA
SYS.SetLoMem .EQ $CC
SYS.NewStr.YA .EQ $CE
SYS.FPwr .EQ $C8
* .EQ $CA
* .EQ $CC
* .EQ $CE
* .EQ $D0
* .EQ $D2
* .EQ $D4
* .EQ $D6
SYS.Log .EQ $D0
SYS.Sqr .EQ $D2
SYS.Exp .EQ $D4
SYS.Cos .EQ $D6
SYS.LoadStkObj.YA .EQ $D8
SYS.GetStkObj.A .EQ $DA
SYS.FreeStkObj.A .EQ $DC
SYS.GetMemStat.YA .EQ $DE
SYS.Sin .EQ $D8
SYS.Tan .EQ $DA
SYS.ATan .EQ $DC
* .EQ $DF
*--------------------------------------
SYS.GetMem .EQ $E0
SYS.FreeMem.A .EQ $E2
SYS.GetMemPtr.A .EQ $E4
SYS.GetMemByID.A .EQ $E6
SYS.Sleep .EQ $E0
SYS.GetMem.YA .EQ $E8
SYS.GetMem0.YA .EQ $EA
SYS.NewStr.YA .EQ $EC
SYS.GetMemStat.YA .EQ $EE
SYS.Sleep .EQ $F0
* .EQ $F2
* .EQ $F4
* .EQ $F6
* .EQ $F8
SYS.LoadStkObj.YA .EQ $FA
SYS.GetStkObj.A .EQ $FC
SYS.FreeStkObj.A .EQ $FE
*--------------------------------------
* ProDOS ERROR CODES : $00->$5F
* Lib ERROR CODES : $80->$BF

View File

@ -55,11 +55,11 @@ ROM.FADD .EQ 2
ROM.LTOF .EQ 4
ROM.LOG .EQ 6
ROM.FMULT .EQ 8
ROM.SETARG.AY .EQ 10
ROM.SETARG .EQ 10
ROM.FDIV .EQ 12
ROM.SETFAC.AY .EQ 14
ROM.SETFAC .EQ 14
ROM.GETFAC .EQ 16 Get FAC at FORPNT
ROM.GETFAC .EQ 16 Copy FAC to (FORPNT)
ROM.FCOMP .EQ 18
ROM.QINT .EQ 20
ROM.FIN .EQ 22

View File

@ -17,7 +17,7 @@ S.DSTAT.NET.STATUS.10 .EQ $01
S.DSTAT.NET.STATUS.100 .EQ $02
S.DSTAT.NET.STATUS.1000 .EQ $03
S.DSTAT.NET.MAC .EQ S.DSTAT+2
S.DSTAT.NET .EQ S.DSTAT+8
S.DSTAT.NET .EQ S.DSTAT+8
*--------------------------------------
MAN
SAVE /A2OSX.BUILD/INC/NET.I

View File

@ -39,29 +39,29 @@ MLIGETEOF .EQ $D1
MLISETBUF .EQ $D2
MLIGETBUF .EQ $D3
*--------------------------------------
S.FILEINFO.ACCESS .EQ $03
S.FILEINFO.ACCESS.R .EQ $01
S.FILEINFO.ACCESS.W .EQ $02
S.FILEINFO.ACCESS.B .EQ $20
S.FILEINFO.ACCESS.RN .EQ $40
S.FILEINFO.ACCESS.D .EQ $80
S.FILEINFO.ACCESS.FULL .EQ $C3
S.FILEINFO.TYPE .EQ $04
S.FILEINFO.TYPE.TXT .EQ $04
S.FILEINFO.TYPE.DIR .EQ $0F
S.FILEINFO.TYPE.SYS .EQ $FF
S.FILEINFO.AUXTYPE .EQ $05
S.FILEINFO.TOTALBLOCKS .EQ $05
S.FILEINFO.STORETYPE .EQ $07
S.FILEINFO.STORETYPE.STD .EQ $01
S.FILEINFO.STORETYPE.DIR .EQ $0D
S.FILEINFO.BLOCKSUSED .EQ $08
S.FILEINFO.MODDATE .EQ $0A
S.FILEINFO.MODTIME .EQ $0C
S.FILEINFO.CREATEDATE .EQ $0E
S.FILEINFO.CREATETIME .EQ $10
S.FI.A .EQ $03
S.FI.A.R .EQ $01
S.FI.A.W .EQ $02
S.FI.A.B .EQ $20
S.FI.A.RN .EQ $40
S.FI.A.D .EQ $80
S.FI.A.FULL .EQ $C3
S.FI.T .EQ $04
S.FI.T.TXT .EQ $04
S.FI.T.DIR .EQ $0F
S.FI.T.SYS .EQ $FF
S.FI.AUXTYPE .EQ $05
S.FI.TBLKS .EQ $05
S.FI.ST .EQ $07
S.FI.ST.STD .EQ $01
S.FI.ST.DIR .EQ $0D
S.FI.UBLKS .EQ $08
S.FI.MDATE .EQ $0A
S.FI.MTIME .EQ $0C
S.FI.CDATE .EQ $0E
S.FI.CTIME .EQ $10
*
S.FILEINFO .EQ $12
S.FI .EQ $12
*--------------------------------------
MLI .EQ $BF00
*JSPARE .EQ $BF03
@ -103,16 +103,16 @@ LEVEL .EQ $BF94
*BUBIT .EQ $BF95
*SPARE1 .EQ $BF96
MACHID .EQ $BF98
MACHID.TYPE .EQ %11001000
*MACHID.TYPE.II .EQ %00000000
*MACHID.TYPE.IIp .EQ %01000000
MACHID.TYPE.IIe .EQ %10000000
MACHID.TYPE.IIc .EQ %10001000
*MACHID.TYPE.III .EQ %11000000
MACHID.RAM .EQ %00110000
MACHID.RAM.128 .EQ %00110000
*MACHID.RAM.64 .EQ %00100000
*MACHID.RAM.48 .EQ %00010000
MACHID.T .EQ %11001000
*MACHID.T.II .EQ %00000000
*MACHID.T.IIp .EQ %01000000
MACHID.T.IIe .EQ %10000000
MACHID.T.IIc .EQ %10001000
*MACHID.T.III .EQ %11000000
MACHID.M .EQ %00110000
MACHID.M.128 .EQ %00110000
*MACHID.M.64 .EQ %00100000
*MACHID.M.48 .EQ %00010000
*MACHID.SPARE .EQ %00000100
MACHID.COL80 .EQ %00000010
MACHID.CLK .EQ %00000001

View File

@ -1,60 +0,0 @@
PR#3
PREFIX /A2OSX.BUILD
NEW
INC 1
AUTO 6
.LIST OFF
.OP 65C02
.OR $2000
.TF /A2OSX.BUILD/LIB/LIBMATH.O
*--------------------------------------
.INB /A2OSX.BUILD/INC/MACROS.I
.INB /A2OSX.BUILD/INC/A2OSX.I
.INB /A2OSX.BUILD/INC/APPLESOFT.I
* .INB /A2OSX.BUILD/INC/LIBMATH.I
*--------------------------------------
ZPPtr1 .EQ ZPLIB
*--------------------------------------
* File Header (16 Bytes)
*--------------------------------------
CS.START cld
jmp (.1,x)
.DA #$61 6502,Level 1 (65c02)
.DA #1 BIN Layout Version 1
.DA 0
.DA CS.END-CS.START
.DA 0
.DA 0
.DA 0
*--------------------------------------
* Relocation Table
*--------------------------------------
.1 .DA LIB.LOAD
.DA LIB.UNLOAD
.DA COS
.DA SIN
.DA TAN
.DA 0
*--------------------------------------
COS
*--------------------------------------
SIN
*--------------------------------------
TAN
*--------------------------------------
ACOS
*--------------------------------------
ASIN
*--------------------------------------
ATAN
*--------------------------------------
LIB.LOAD
LIB.UNLOAD clc
rts
*--------------------------------------
*--------------------------------------
MAN
SAVE /A2OSX.SRC/LIB/LIBMATH.S
ASM

View File

@ -178,7 +178,7 @@ CS.RUN.Load >PUSHEA.G StatBuf
bne .99
>PUSHWI 0 Aux type
>PUSHBI 6 S.FILEINFO.TYPE.BIN
>PUSHBI 6 S.FI.T.BIN
>PUSHBI SYS.FOpen.R
>LDA.G hFileName
@ -210,7 +210,7 @@ CS.RUN.Load >PUSHEA.G StatBuf
rts
*--------------------------------------
CS.RUN.Save >PUSHWI 0 AUXTYPE
>PUSHBI 6 S.FILEINFO.TYPE.BIN
>PUSHBI 6 S.FI.T.BIN
>PUSHBI SYS.FOpen.W+SYS.FOpen.X
>LDA.G hFileName

View File

@ -150,7 +150,7 @@ CFG.Read.LoadFile
pha
>PUSHWI 0 Aux type
>PUSHBI 4 S.FILEINFO.TYPE.TXT
>PUSHBI 4 S.FI.T.TXT
>PUSHBI SYS.FOpen.R
pla
>PUSHYA

View File

@ -99,7 +99,7 @@ K.LoadDrv.YA jsr BIN.FindDRV
jsr .88 call Dev.Detect
bcs .96
jsr BIN.InstallDRV
jsr BIN.InsDrv
bcs .96
jsr .96 Cleanup...
@ -254,10 +254,10 @@ BIN.Load.YA.1 >PUSHWI K.S.STAT
bcs .9
>LDYA K.S.STAT+S.STAT.P.AUXTYPE
>STYA BIN.Relocate.Start
>STYA BIN.R.Start
>PUSHYA Push AUXTYPE
>PUSHBI 6 S.FILEINFO.TYPE.BIN
>PUSHBI 6 S.FI.T.BIN
>PUSHBI SYS.FOpen.R
>PUSHW BIN.CmdLine
@ -270,11 +270,11 @@ BIN.Load.YA.1 >PUSHWI K.S.STAT
tya
* clc CC from bcs .99
adc BIN.Relocate.Start Get AUXTYPE for actual Base Address
sta BIN.Relocate.End compute Range End=AUXTYPE+FILELEN
adc BIN.R.Start Get AUXTYPE for actual Base Address
sta BIN.R.End compute Range End=AUXTYPE+FILELEN
pla
adc BIN.Relocate.Start+1
sta BIN.Relocate.End+1
adc BIN.R.Start+1
sta BIN.R.End+1
txa
jsr K.GetMemPtr.A
@ -283,11 +283,11 @@ BIN.Load.YA.1 >PUSHWI K.S.STAT
pha YA = actual load address
tya
sec
sbc BIN.Relocate.Start
sta BIN.Relocate.Offset Offset=ZPPtr1-AUXTYPE
sbc BIN.R.Start
sta BIN.R.Offset Offset=ZPPtr1-AUXTYPE
pla
sbc BIN.Relocate.Start+1
sta BIN.Relocate.Offset+1
sbc BIN.R.Start+1
sta BIN.R.Offset+1
ldy #H.BIN.CODE.LEN get Code Len
lda (ZPPtr1),y
@ -299,7 +299,7 @@ BIN.Load.YA.1 >PUSHWI K.S.STAT
adc ZPPtr1+1
sta ZPPtr2+1
jsr BIN.RelocateEXE
jsr BIN.RelExe
>LDYA BIN.CmdLine get back bin path
jsr K.NewStr.YA make a copy of this string
@ -334,51 +334,51 @@ BIN.Load.YA.1 >PUSHWI K.S.STAT
BIN.CmdLine .BS 2
BIN.hMem .BS 1
*--------------------------------------
* BIN.InstallDRV
* BIN.InsDrv
* In:
* pDrv = .DRV File Loaded Address
* Note:
* BIN.Load.YA called from K.LoadDrvYA
* Already setup correctly pDrv,
* BIN.Relocate.Start,End
* BIN.R.Start,End
*--------------------------------------
BIN.InstallDRV ldy #H.BIN.DRV.CODE.O
BIN.InsDrv ldy #H.BIN.DRV.CODE.O
lda (pDrv),y
clc
adc BIN.Relocate.Start Advance start From AUXTYPE to AUXTYPE+DRV code offset
sta BIN.Relocate.Start
adc BIN.R.Start Advance start From AUXTYPE to AUXTYPE+DRV code offset
sta BIN.R.Start
iny
lda (pDrv),y
adc BIN.Relocate.Start+1
sta BIN.Relocate.Start+1
adc BIN.R.Start+1
sta BIN.R.Start+1
lda DevMgr.Free Offset = Target DRV address-(AUXTYPE+DRV OFFSET)
sec
sbc BIN.Relocate.Start
sta BIN.Relocate.Offset
sbc BIN.R.Start
sta BIN.R.Offset
lda DevMgr.Free+1
sbc BIN.Relocate.Start+1
sta BIN.Relocate.Offset+1
sbc BIN.R.Start+1
sta BIN.R.Offset+1
lda BIN.Relocate.End Compute DRVLen=End-start
lda BIN.R.End Compute DRVLen=End-start
sec
sbc BIN.Relocate.Start
sta BIN.InstallDRV.DRVLen
sbc BIN.R.Start
sta BIN.InsDrv.Len
lda BIN.Relocate.End+1
sbc BIN.Relocate.Start+1
sta BIN.InstallDRV.DRVLen+1
lda BIN.R.End+1
sbc BIN.R.Start+1
sta BIN.InsDrv.Len+1
lda DevMgr.Free
clc
adc BIN.InstallDRV.DRVLen
sta BIN.InstallDRV.DRVEnd
adc BIN.InsDrv.Len
sta BIN.InsDrv.End
tay Save DRVEnd LO
lda DevMgr.Free+1
adc BIN.InstallDRV.DRVLen+1 A = DRVEnd HI
sta BIN.InstallDRV.DRVEnd+1
adc BIN.InsDrv.Len+1 A = DRVEnd HI
sta BIN.InsDrv.End+1
bcs .9 we crossed $FFFF, out of mem
@ -442,10 +442,10 @@ BIN.InstallDRV ldy #H.BIN.DRV.CODE.O
adc pDrv+1
sta ZPPtr1+1 set Ptr1 to Src CODE
lda BIN.InstallDRV.DrvLen+1
lda BIN.InsDrv.Len+1
eor #$ff
pha
lda BIN.InstallDRV.DrvLen
lda BIN.InsDrv.Len
eor #$ff
tax
@ -479,27 +479,27 @@ BIN.InstallDRV ldy #H.BIN.DRV.CODE.O
adc (pDrv),y
sta ZPPtr2+1 Make ZPPtr2 = ZPPtr1 + CodeLen
jsr BIN.RelocateDRV
jsr BIN.RelDrv
>LDYA BIN.InstallDRV.DrvEnd
>LDYA BIN.InsDrv.End
>STYA DevMgr.Free
clc
rts
*--------------------------------------
BIN.InstallDRV.DrvLen .BS 2
BIN.InstallDRV.DrvEnd .BS 2
BIN.InsDrv.Len .BS 2
BIN.InsDrv.End .BS 2
*--------------------------------------
* BIN.Relocate___ :
* BIN.Rel___ :
* In :
* ZPPtr1 = Ptr to Code
* ZPPtr2 = End Of Code
*--------------------------------------
BIN.Relocate.Start .BS 2
BIN.Relocate.End .BS 2
BIN.Relocate.Offset .BS 2
BIN.R.Start .BS 2
BIN.R.End .BS 2
BIN.R.Offset .BS 2
*--------------------------------------
BIN.RelocateEXE ldy #H.BIN.T+1
BIN.RelExe ldy #H.BIN.T+1
lda (ZPPtr1),y
cmp /H.BIN.T.BIN65
beq .1
@ -513,19 +513,19 @@ BIN.RelocateEXE ldy #H.BIN.T+1
.1 ldy #H.BIN.JMP relocate Main JMP
lda (ZPPtr1),y
clc
adc BIN.Relocate.Offset
adc BIN.R.Offset
sta (ZPPtr1),y
iny
lda (ZPPtr1),y
adc BIN.Relocate.Offset+1
adc BIN.R.Offset+1
sta (ZPPtr1),y
ldy #H.BIN.EXE.REL.TABLE skip Header, CS.SIZE & DS.SIZE... (16 bytes)
.HS 2C bit abs
*--------------------------------------
BIN.RelocateDRV ldy #H.BIN.DRV.REL.TABLE
BIN.RelDrv ldy #H.BIN.DRV.REL.TABLE
.1 lda (ZPPtr1),y Start Relocate JMP table
tax LO in X
@ -536,12 +536,12 @@ BIN.RelocateDRV ldy #H.BIN.DRV.REL.TABLE
dey
txa get back LO
clc
adc BIN.Relocate.Offset
adc BIN.R.Offset
sta (ZPPtr1),y
iny
lda (ZPPtr1),y
adc BIN.Relocate.Offset+1
adc BIN.R.Offset+1
sta (ZPPtr1),y
iny
@ -580,25 +580,25 @@ BIN.RelocateDRV ldy #H.BIN.DRV.REL.TABLE
iny make Y point to HI
cpx BIN.Relocate.Start
cpx BIN.R.Start
lda (ZPPtr1),y Get HI
sbc BIN.Relocate.Start+1
bcc .5 addr < BIN.Relocate.Start, out of range
sbc BIN.R.Start+1
bcc .5 addr < BIN.R.Start, out of range
txa Get back LO
cpx BIN.Relocate.End
cpx BIN.R.End
lda (ZPPtr1),y Get HI
sbc BIN.Relocate.End+1
bcs .5 addr > BIN.Relocate.End, out of range
sbc BIN.R.End+1
bcs .5 addr > BIN.R.End, out of range
txa Get back LO
* clc CC from bcs .6
adc BIN.Relocate.Offset add Offset to abs address
adc BIN.R.Offset add Offset to abs address
dey
sta (ZPPtr1),y store relocated addr LO
iny
lda (ZPPtr1),y Get HI
adc BIN.Relocate.Offset+1
adc BIN.R.Offset+1
sta (ZPPtr1),y store relocated addr HI
.5 pla get back Opcode length...

View File

@ -93,7 +93,7 @@ CORE.Events jsr CORE.GetEvents
bcs .4 CS=no event
jsr CORE.DispatchEvents
jsr CORE.Dispatch
bcc .4 CC=All Events Dispatched
jsr CORE.PSSelect0
@ -144,7 +144,7 @@ CORE.Events jsr CORE.GetEvents
bcs .8
sta KBDSTROBE
jsr CORE.ScreenSelect
jsr CORE.ScrSel
.8 jmp CORE.Run
*--------------------------------------
* CORE.GetEvents :
@ -224,14 +224,13 @@ CORE.GetEvents lda #Evt.Table
.9 sec
rts
*--------------------------------------
* CORE.DispatchEvents
* CORE.Dispatch
* IN:
* OUT:
* CS: Not Dispatched
* CC: Event Cleared
*--------------------------------------
CORE.DispatchEvents
lda CORE.PSCount
CORE.Dispatch lda CORE.PSCount
sta CORE.Counter
beq .9
@ -378,8 +377,7 @@ CORE.DumpEvent ldy #S.EVT-1
.2 >CSTR "!Evt:F=%b,Dev=$%h,LO=$%h,HI=$%h,W1=$%H,W2=$%H\n"
*--------------------------------------
CORE.ScreenSelect
and #$0F
CORE.ScrSel and #$0F
cmp A2osX.ASCREEN Same as active screen...nothing to do
beq .8

View File

@ -11,18 +11,18 @@ AUTO 6
* X = hMem to Expanded String (C-String)
* Y,A = PTR to Expanded String
*\--------------------------------------
K.ExpandStr.YA stz K.ExpandStr.hPStr Reset Intermediate string...
K.ExpandStr.YA stz ENV.hStr Reset Intermediate string...
.1 >STYA ZPPtr2
stz K.ExpandStr.BufLen init Expanded String len=0
stz K.ExpandStr.bFound No var found yet
stz ENV.BufLen init Expanded String len=0
stz ENV.bFound No var found yet
stz K.ExpandStr.bNoExp Reset no expand flag
stz ENV.bNoExp Reset no expand flag
ldy #0
.10 stz K.ExpandStr.VarLen
stz K.ExpandStr.bInVar
.10 stz ENV.VarLen
stz ENV.bInVar
.11 lda (ZPPtr2),y End of CSTR?
beq .8
@ -32,34 +32,34 @@ K.ExpandStr.YA stz K.ExpandStr.hPStr Reset Intermediate string...
cmp #'''
bne .21
lda K.ExpandStr.bNoExp
lda ENV.bNoExp
eor #$ff
sta K.ExpandStr.bNoExp toggle flag
sta ENV.bNoExp toggle flag
bra .11
.21 bit K.ExpandStr.bNoExp
.21 bit ENV.bNoExp
bpl .23
.22 ldx K.ExpandStr.BufLen
.22 ldx ENV.BufLen
sta K.Buf256,x
inx
stx K.ExpandStr.BufLen
stx ENV.BufLen
bra .11
.23 ldx K.ExpandStr.bInVar already in a var?
.23 ldx ENV.bInVar already in a var?
bne .3 yes...
cmp #'$' no, found one ?
bne .22 no, store...
sta K.ExpandStr.bFound Toggle flag
sta K.ExpandStr.bInVar
sta ENV.bFound Toggle flag
sta ENV.bInVar
bra .11 skip this char
.3 cmp #'{' we are in var, "{" after "$"?
bne .31
ldx K.ExpandStr.VarLen No char in var yet ?
ldx ENV.VarLen No char in var yet ?
beq .11 normal, "${" syntax is ok,skip
bne .5 not allowed char in varname, end of var
@ -67,65 +67,64 @@ K.ExpandStr.YA stz K.ExpandStr.hPStr Reset Intermediate string...
.31 cmp #'}' end of var?
beq .50
jsr K.ExpandStrValidChar
jsr ENV.IsVarChar
bcc .32 yes, add to varname
ldx K.ExpandStr.VarLen
ldx ENV.VarLen
bne .5 varname has already chars...end of var
inx must be a $? or ?x.....go expand
stx K.ExpandStr.VarLen
sta K.ExpandStr.VarName
stx ENV.VarLen
sta ENV.VarName
bra .51 go Expand....
.32 ldx K.ExpandStr.VarLen
.32 ldx ENV.VarLen
cpx #16
beq .11 varname longer than 15....ignore
sta K.ExpandStr.VarName,x
sta ENV.VarName,x
inx
stx K.ExpandStr.VarLen
stx ENV.VarLen
bra .11
.5 dey last char was invalid...move back
.50 ldx K.ExpandStr.VarLen
.50 ldx ENV.VarLen
beq .52 var name is empty...start over
.51 stz K.ExpandStr.VarName,x
.51 stz ENV.VarName,x
phy save current index
jsr K.ExpandStrGetValue
jsr ENV.GetValue
ply restore index in string...
.52 jmp .10 reset start flag and continue
.8 ldx K.ExpandStr.VarLen end of STR,are we in a var?
.8 ldx ENV.VarLen end of STR,are we in a var?
beq .80 no...exit...
stz K.ExpandStr.VarName,x
jsr K.ExpandStrGetValue yes, expand and add to STR
stz ENV.VarName,x
jsr ENV.GetValue yes, expand and add to STR
.80 lda K.ExpandStr.hPStr working from our temp string ?
.80 lda ENV.hStr working from our temp string ?
beq .81 no...
jsr K.FreeMem.A yes, discard....
.81 ldx K.ExpandStr.BufLen
.81 ldx ENV.BufLen
stz K.Buf256,x
>LDYAI K.Buf256
jsr K.NewStr.YA
bcs .9
stx K.ExpandStr.hPStr save this as temp string, in case of recurse
ldx K.ExpandStr.bFound Did we expand something ?
stx ENV.hStr save this as temp string, in case of recurse
ldx ENV.bFound Did we expand something ?
beq .82
jmp .1 Yes, start over with hPStr
.82 ldx K.ExpandStr.hPStr
.82 ldx ENV.hStr
* or exit with Y,A from K.NewStrYA
.9 rts
*--------------------------------------
K.ExpandStrValidChar
cmp #'_'
ENV.IsVarChar cmp #'_'
beq .8
cmp #'0'
@ -146,27 +145,26 @@ K.ExpandStrValidChar
.9 sec
rts
*--------------------------------------
K.ExpandStrGetValue
jsr ENV.ExpandSysVar
ENV.GetValue jsr ENV.ExpandSysVar
bcc .9
>LDYAI K.ExpandStr.VarName
>LDYAI ENV.VarName
jsr K.GetEnv.YA
bcs .9
>STYA ZPPtr3
jsr ENV.AppendPtr3ToBuf
jsr ENV.AddP3ToBuf
.9 rts
*--------------------------------------
K.ExpandStr.BufLen .BS 1
K.ExpandStr.bNoExp .BS 1
K.ExpandStr.bInVar .BS 1
K.ExpandStr.bFound .BS 1
K.ExpandStr.hPStr .BS 1
K.ExpandStr.VarLen .BS 1
K.ExpandStr.VarName .BS 16
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
* ## In:
@ -198,7 +196,7 @@ K.PutEnv.YA >STYA ZPPtr1 NAME=VALUE
>LDYAI K.Buf256
>STYA ZPPtr1
bra K.SetEnvPtr1Ptr2
bra K.SetEnv.I
.9 sec
rts
@ -209,11 +207,10 @@ K.PutEnv.YA >STYA ZPPtr1 NAME=VALUE
* PUSHW = PTR To Name (PSTR)
* ## Out:
*\--------------------------------------
K.SetEnv jsr PullPtr1Ptr2 Ptr1=NAME,Ptr2=VALUE
K.SetEnvPtr1Ptr2
jsr S.UnsetEnvPtr1
K.SetEnv jsr PullP1P2 Ptr1=NAME,Ptr2=VALUE
K.SetEnv.I jsr K.UnsetEnv.I
jsr ENV.InitEnvPtr3 ZPPtr3 -> Env
jsr ENV.InitEnvP3 ZPPtr3 -> Env
ldy #0
ldx #0
@ -316,10 +313,10 @@ K.SetEnvPtr1Ptr2
* CS : not found
*\--------------------------------------
K.GetEnv.YA >STYA ZPPtr1
jsr ENV.FindVarPtr1
jsr ENV.FindVarP1
bcs .9
jsr ENV.NextEnvPtr3 Skip NAME
jsr ENV.NextEnvP3 Skip NAME
clc just in case ADC in NextEnvPtr1 disturb CC
.9 >LDYA ZPPtr3
@ -330,11 +327,11 @@ K.GetEnv.YA >STYA ZPPtr1
* Y,A = PTR To Name (PSTR)
* ## Out:
*\--------------------------------------
K.UnsetEnv.YA >STYA ZPPtr1 Store VAR Name
S.UnsetEnvPtr1 jsr ENV.FindVarPtr1
K.UnsetEnv.YA >STYA ZPPtr1 Store VAR Name
K.UnsetEnv.I jsr ENV.FindVarP1
bcs .8 not found, quit
jsr ENV.DiscardVarPtr3 Ptr3 -> ENVNAME
jsr ENV.DelVarP3 Ptr3 -> ENVNAME
.8 clc
rts
@ -343,18 +340,18 @@ S.UnsetEnvPtr1 jsr ENV.FindVarPtr1
*--------------------------------------
* ENV.ExpandSysVar
* In:
* K.ExpandStr.VarName
* ENV.VarLen,ENV.VarName
* Out:
* CC: Found
* Append VALUE to K.Buf256
* CS: Not Found
*--------------------------------------
ENV.ExpandSysVar
ldx K.ExpandStr.VarLen
ldx ENV.VarLen
cpx #1 is name 1 char?
bne .9
lda K.ExpandStr.VarName
lda ENV.VarName
cmp #'0'-1 $0...$9 ??
bcc .1
cmp #'9'+1
@ -365,7 +362,7 @@ ENV.ExpandSysVar
bcs .8 Arg# is undefined, do not append anything
>STYA ZPPtr3
jmp ENV.AppendPtr3ToBuf
jmp ENV.AddP3ToBuf
.8 clc
rts
@ -401,9 +398,9 @@ ENV.SysVarsArgs lda #1
.1 lda (ZPPtr3)
beq .8
jsr ENV.AppendPtr3ToBuf
jsr ENV.AddP3ToBuf
.2 jsr ENV.NextEnvPtr3
.2 jsr ENV.NextEnvP3
lda (ZPPtr3)
beq .8
@ -411,16 +408,15 @@ ENV.SysVarsArgs lda #1
beq .8 make sure not overlapping buf 256
lda #' '
sta K.Buf256,x
stx K.ExpandStr.BufLen
stx ENV.BufLen
jsr ENV.AppendPtr3ToBuf
jsr ENV.AddP3ToBuf
bra .2
.8 clc
rts
*--------------------------------------
ENV.AppendPtr3ToBuf
ldx K.ExpandStr.BufLen
ENV.AddP3ToBuf ldx ENV.BufLen
ldy #$ff
dex
@ -430,7 +426,7 @@ ENV.AppendPtr3ToBuf
sta K.Buf256,x
bne .1
stx K.ExpandStr.BufLen
stx ENV.BufLen
rts
*--------------------------------------
ENV.SysVarsArgC ldy #S.PS.ARGC
@ -466,7 +462,7 @@ ENV.SysVarsCPID ldy #S.PS.CPID
cld
ldx K.ExpandStr.BufLen
ldx ENV.BufLen
lda .3+1
beq .4
sta K.Buf256,x
@ -489,11 +485,11 @@ ENV.SysVarsCPID ldy #S.PS.CPID
sta K.Buf256,x
inx
stx K.ExpandStr.BufLen
stx ENV.BufLen
clc
rts
*--------------------------------------
* ENV.FindVarPtr1
* ENV.FindVarP1
* In:
* ZPPtr1 -> NAME
* Out:
@ -504,7 +500,7 @@ ENV.SysVarsCPID ldy #S.PS.CPID
* ZPPtr1 -> NAME
* ZPPtr3 -> PTR to Ending 0
*--------------------------------------
ENV.FindVarPtr1 jsr ENV.InitEnvPtr3 Store ENV
ENV.FindVarP1 jsr ENV.InitEnvP3 Store ENV
.1 lda (ZPPtr3)
beq .9 end of ENV
@ -524,22 +520,21 @@ ENV.FindVarPtr1 jsr ENV.InitEnvPtr3 Store ENV
.8 clc
rts
.3 jsr ENV.NextEnvPtr3 Skip NAME
jsr ENV.NextEnvPtr3 Skip VALUE
.3 jsr ENV.NextEnvP3 Skip NAME
jsr ENV.NextEnvP3 Skip VALUE
bra .1
.9 sec
rts
*--------------------------------------
* ENV.DiscardVarPtr3
* ENV.DelVarP3
* In:
* ZPPtr3 -> ENV.NAME to Discard
*--------------------------------------
ENV.DiscardVarPtr3
>LDYA ZPPtr3 save actual Ptr
ENV.DelVarP3 >LDYA ZPPtr3 save actual Ptr
>STYA ZPPtr4
jsr ENV.NextEnvPtr3 Skip current NAME....
jsr ENV.NextEnvPtr3 Skip current VALUE....
jsr ENV.NextEnvP3 Skip current NAME....
jsr ENV.NextEnvP3 Skip current VALUE....
ldy #0
@ -565,13 +560,13 @@ ENV.DiscardVarPtr3
.8 rts
*--------------------------------------
ENV.InitEnvPtr3 ldy #S.PS.hENV
ENV.InitEnvP3 ldy #S.PS.hENV
lda (pPs),y
jsr K.GetMemPtr.A
>STYA ZPPtr3 Store ENV
rts
*--------------------------------------
ENV.NextEnvPtr3 ldy #0
ENV.NextEnvP3 ldy #0
.1 lda (ZPPtr3),y
beq .2

View File

@ -15,7 +15,7 @@ AUTO 6
K.LoadTxtFile.YA
pha
>PUSHWI 0 Aux type
>PUSHBI 4 S.FILEINFO.TYPE.TXT
>PUSHBI 4 S.FI.T.TXT
>PUSHBI SYS.FOpen.R
pla
>PUSHYA
@ -34,18 +34,18 @@ K.LoadTxtFile.YA
* X = hMem of Loaded File
*\--------------------------------------
K.LoadFile clc
ror K.LoadFile.bTXT
ror FIO.bTXT
jsr K.FOpen
bcs .9
sta K.LoadFile.hFile
sta FIO.hFile
jsr K.LoadFile.GetSize
jsr FIO.GetSize
bcs .99
>LDYA K.LoadFile.FSize
>LDYA FIO.FSize
bit K.LoadFile.bTXT Add 1 to buffer size for ending 0
bit FIO.bTXT Add 1 to buffer size for ending 0
bpl .1
iny
bne .1
@ -56,12 +56,12 @@ K.LoadFile clc
.1 jsr K.GetMem.YA
bcs .99
>STYA K.LoadFile.Mem
>STYA FIO.Mem
stx .8+1
>PUSHW K.LoadFile.Mem
>PUSHW K.LoadFile.FSize
>PUSHB K.LoadFile.hFile
>PUSHW FIO.Mem
>PUSHW FIO.FSize
>PUSHB FIO.hFile
jsr K.FRead
bcs .98
@ -70,15 +70,15 @@ K.LoadFile clc
jsr .99 close file
bit K.LoadFile.bTXT
bit FIO.bTXT
bpl .6
clc set ending 0
lda .6+1
adc K.LoadFile.Mem
adc FIO.Mem
sta .5+1
lda .7+1
adc K.LoadFile.Mem+1
adc FIO.Mem+1
sta .5+2
.5 stz $ffff Self Modified
@ -95,52 +95,51 @@ K.LoadFile clc
pla
.99 pha
lda K.LoadFile.hFile
lda FIO.hFile
jsr K.FClose.A
pla
sec
rts
*--------------------------------------
K.LoadFile.GetSize
stz K.LoadFile.FPos
stz K.LoadFile.FPos+1
stz K.LoadFile.FPos+2
stz K.LoadFile.FPos+3
FIO.GetSize stz FIO.FPos
stz FIO.FPos+1
stz FIO.FPos+2
stz FIO.FPos+3
>PUSHWI K.LoadFile.FPos
>PUSHWI FIO.FPos
>PUSHBI SYS.FSeek.END
>PUSHB K.LoadFile.hFile
>PUSHB FIO.hFile
jsr K.FSeek
bcs .99
>PUSHWI K.LoadFile.FPos
>PUSHB K.LoadFile.hFile
>PUSHWI FIO.FPos
>PUSHB FIO.hFile
jsr K.FTell
bcs .99
lda K.LoadFile.FPos+2
ora K.LoadFile.FPos+3
lda FIO.FPos+2
ora FIO.FPos+3
bne .98 too big!
>LDYA K.LoadFile.FPos
>STYA K.LoadFile.FSize
>LDYA FIO.FPos
>STYA FIO.FSize
stz K.LoadFile.FPos
stz K.LoadFile.FPos+1
stz FIO.FPos
stz FIO.FPos+1
>PUSHWI K.LoadFile.FPos
>PUSHWI FIO.FPos
>PUSHBI SYS.FSeek.SET
>PUSHB K.LoadFile.hFile
>PUSHB FIO.hFile
jmp K.FSeek
.98 lda #K.E.FTB
.99 rts
*--------------------------------------
K.LoadFile.bTXT .BS 1
K.LoadFile.hFile .BS 1
K.LoadFile.FPos .BS 4
K.LoadFile.Mem .BS 2
K.LoadFile.FSize .BS 2
FIO.bTXT .BS 1
FIO.hFile .BS 1
FIO.FPos .BS 4
FIO.Mem .BS 2
FIO.FSize .BS 2
*/--------------------------------------
* # ChTyp
* ## In:
@ -154,7 +153,7 @@ K.ChTyp jsr PFT.CheckPathSTK
bcs .9
.1 lda #$ff
sta K.MLI.PARAMS+S.FILEINFO.TYPE
sta K.MLI.PARAMS+S.FI.T
>MLICALL MLISETFILEINFO
.9 rts
*/--------------------------------------

View File

@ -10,7 +10,7 @@ AUTO 6
* X = SYSfnc.Index
* Y,A = free for Inline param
*--------------------------------------
jmp A2osX.SYSCALL1
jmp GP.SysCall
*--------------------------------------
* LIBCALL (AUXLC to AUXLC)
* Used by user
@ -19,7 +19,7 @@ AUTO 6
* X = LIBfnc.Index
* A = free for Inline param
*--------------------------------------
jmp A2osX.LIBCALL1
jmp GP.LibCall
*--------------------------------------
* MLICALL (AUXLC to MAINLC)
* Used by Kernel
@ -27,7 +27,7 @@ AUTO 6
* X = MLI Function
* A = Param Count
*--------------------------------------
jmp A2osX.MLICALL1
jmp GP.MLICall
*--------------------------------------
* MLICALL (AUXLC to MAINLC)
* Used by Kernel
@ -35,7 +35,7 @@ AUTO 6
* X = MLI Function
* A = Param Count
*--------------------------------------
jmp A2osX.ROMCALL1
jmp GP.ROMCall
*--------------------------------------
* BADCALL
*--------------------------------------
@ -47,7 +47,7 @@ AUTO 6
*--------------------------------------
* *** MUST BE REINTRANT ***
*--------------------------------------
A2osX.SYSCALL1 bit K.SYSCALL.BANK,x
GP.SysCall bit K.SYSCALL.BANK,x
bpl .8 in $E000, no BNK change
sta .7+1 save A (Func Arg)
@ -78,14 +78,14 @@ A2osX.SYSCALL1 bit K.SYSCALL.BANK,x
.7 lda #$FF Self Modified
.8 jmp (K.SYSCALL.JMP,x)
*--------------------------------------
A2osX.LIBCALL1 pha No need to save X, K.GetMemPtr.A will leave it unmodified
GP.LibCall pha No need to save X, K.GetMemPtr.A will leave it unmodified
tya Get LIB hMem in A
jsr K.GetMemPtr.A Get LIB Code Segment (MemMgr in $E000, no BNK change)
>STYA .1+1
pla
.1 jmp $ffff
*--------------------------------------
A2osX.MLICALL1 stx .1
GP.MLICall stx .1
sta K.MLI.PARAMS
jsr GO.ProDOS
jsr MLI
@ -94,7 +94,7 @@ A2osX.MLICALL1 stx .1
jsr GO.A2osX
rts
*--------------------------------------
A2osX.ROMCALL1 phx
GP.ROMCall phx
ldx $D000
stx .8+1
@ -117,15 +117,15 @@ A2osX.ROMCALL1 phx
.DA $E82E NORMALIZE.FAC.2 (L->F)
.DA $E941 LOG
.DA $E97F FMULT
.DA $E9E3 LOAD.ARG.FROM.YA
.DA $E9E7 LOAD.ARG.FROM.INDEX
.DA $EA66 FDIV
.DA $EAF9 LOAD.FAC.FROM.YA
.DA $EAFD LOAD.FAC.FROM.INDEX
.DA $EB27 SETFOR
.DA $EB27 SETFOR GETFAC)
.DA $EBB2 FCOMP
.DA $EBF2 QINT (F->L)
.DA $EC4A FIN
.DA $ED36 FOUT.1
.DA $EC4A FIN StrToF
.DA $ED36 FOUT.1 PrintF
.DA $EE8D SQR
.DA $EE97 FPWRT
.DA $EF09 EXP
@ -216,7 +216,7 @@ GO.EXIT.JMP jmp $FFFF Self Modified
* must exit with RTS
* - CC if IRQ cleared, CS if NOT
*--------------------------------------
IrqHandler cld
GP.IrqH cld
lda RDALTZP
sta .2+1
@ -228,7 +228,7 @@ IrqHandler cld
ldx A2osX.SaveSX
txs
.1 jsr K.IrqHandler
.1 jsr K.IrqH
.2 lda #$ff get back ZP status when called
bmi .3 we were coming from AuxZP/LC
@ -247,6 +247,12 @@ IrqHandler cld
*BrkHandler bra *
*--------------------------------------
.BS $BEE0-*
*--------------------------------------
* $BEE0->$BEEF : Public Variables
*--------------------------------------
.BS 16
*--------------------------------------
* $BEF0->$BEFF : Kernel Config Block
*--------------------------------------
.DA #6 60hz
.BS 7

View File

@ -214,8 +214,8 @@ CPU.Init >LDAXI MSG.CPU
jsr PrintFAX
lda MACHID
and #MACHID.TYPE
cmp #MACHID.TYPE.IIc
and #MACHID.T
cmp #MACHID.T.IIc
beq CPU.Init.Z80
>LDAXI MSG.CPU.SPEED
@ -485,10 +485,10 @@ IrqMgrInit >LDYAI MSG.IRQ
sei
>LDYA $FFFE
>STYA IRQ.OldFFFE
>LDYAI K.IrqHandlerAuxLC
>LDYAI K.IrqHAuxLC
>STYA $FFFE
>LDYAI IrqHandler
>LDYAI GP.IrqH
>STYA K.MLI.PARAMS+2
>MLICALL MLIALLOCIRQ
bcs .9
@ -504,8 +504,8 @@ IrqMgrInit >LDYAI MSG.IRQ
lda #'v'
sta SYS.BASL0+37
>LDYAI K.IrqHandler.VBL
>STYA K.IrqHandler+1
>LDYAI K.IrqH.VBL
>STYA K.IrqH+1
>LDYAI MSG.IRQ.VBL
>SYSCALL PrintF.YA
@ -518,8 +518,8 @@ IrqMgrInit >LDYAI MSG.IRQ
lda #'c'
sta SYS.BASL0+37
>LDYAI K.IrqHandler.TClock
>STYA K.IrqHandler+1
>LDYAI K.IrqH.TClock
>STYA K.IrqH+1
>LDYAI MSG.IRQ.CLOCK
>SYSCALL PrintF.YA
@ -581,25 +581,25 @@ IrqMgrInit.Mouse
.4 lda ZPPtr1+1
sta K.IrqMgrVBL.MSM+2
sta K.IrqMgrVBL.MRM+2
sta IRQ.VBL.MSM+2
sta IRQ.VBL.MRM+2
and #$0f
sta K.IrqMgrVBL.0n
sta IRQ.VBL.0n
asl
asl
asl
asl
sta K.IrqMgrVBL.n0
sta IRQ.VBL.n0
ldy #$13 SERVEMOUSE
lda (ZPPtr1),y
sta K.IrqMgrVBL.MSM+1
sta IRQ.VBL.MSM+1
ldy #$14 READMOUSE
lda (ZPPtr1),y
sta K.IrqMgrVBL.MRM+1
sta IRQ.VBL.MRM+1
ldy #$12 SETMOUSE
@ -610,7 +610,7 @@ IrqMgrInit.Mouse
ldx ZPPtr1+1 DEVSLOTCn
stx .7+2
ldy K.IrqMgrVBL.n0
ldy IRQ.VBL.n0
php
sei
@ -665,7 +665,7 @@ IrqMgrInit.TClock
asl
asl
tay get $n0
sty K.IrqMgrVBL.n0
sty IRQ.VBL.n0
lda #$40 Enable interrupt
sta $c080,y

View File

@ -13,8 +13,7 @@ AUTO 6
* if A2osX Drivers cannot clear IRQ,
* must call regular System Handler
*--------------------------------------
K.IrqHandlerAuxLC
sta .12+1
K.IrqHAuxLC sta .12+1
pla
pha
and #$10 BRK?
@ -30,7 +29,7 @@ K.IrqHandlerAuxLC
pha
sta CLRREADAUX Make sure we can access Dev.Table
jsr K.IrqHandler
jsr K.IrqH
pla Must keep Carry
bpl .1
@ -56,17 +55,16 @@ K.IrqHandlerAuxLC
.8 jmp (IRQ.OldFFFE)
*--------------------------------------
* Called by :
* Kernel IrqHandlerAuxLC
* ProDOS IRQ Manager (GP)
* - Kernel K.IrqHAuxLC
* - ProDOS IRQ Manager (GP)
*--------------------------------------
K.IrqHandler jmp K.IrqHandler.DEV Modified by INIT
K.IrqH jmp K.IrqH.DEV Modified by INIT
*--------------------------------------
K.IrqHandler.TCLOCK
ldy K.IrqMgrVBL.n0
K.IrqH.TCLOCK ldy IRQ.VBL.n0
lda $c080,y
and #$20
beq K.IrqHandler.DEV
beq K.IrqH.DEV
lda $c080,y
lda $c088,y
@ -80,18 +78,17 @@ K.IrqHandler.TCLOCK
clc
rts
*--------------------------------------
K.IrqHandler.VBL
jsr K.IrqMgrVBL.MSM SERVEMOUSE
bcs K.IrqHandler.DEV Not From Mouse
K.IrqH.VBL jsr IRQ.VBL.MSM SERVEMOUSE
bcs K.IrqH.DEV Not From Mouse
ldx K.IrqMgrVBL.0n
ldx IRQ.VBL.0n
lda $778,x
and #$08 IRQ was caused by VBL ?
beq K.IrqHandler.DEV
beq K.IrqH.DEV
ldx K.IrqMgrVBL.MRM+2 $Cn
ldy K.IrqMgrVBL.n0
jsr K.IrqMgrVBL.MRM READMOUSE
ldx IRQ.VBL.MRM+2 $Cn
ldy IRQ.VBL.n0
jsr IRQ.VBL.MRM READMOUSE
inc CORE.IRQTick
@ -102,8 +99,7 @@ K.IrqHandler.VBL
clc
rts
*--------------------------------------
K.IrqHandler.DEV
>LDYAI Dev.Table
K.IrqH.DEV >LDYAI Dev.Table
>STYA $fe
ldx DevMgr.Count
@ -114,7 +110,7 @@ K.IrqHandler.DEV
beq .6
phx
jsr K.IrqHandlerJMP
jsr K.IrqHJMP
plx
bcc .8 CC, IRQ cleared by device
@ -136,12 +132,12 @@ IRQ.IntNum .BS 1
*--------------------------------------
IRQ.OldFFFE .BS 2
*--------------------------------------
K.IrqMgrVBL.n0 .BS 1
K.IrqMgrVBL.0n .BS 1
K.IrqMgrVBL.MSM jmp $0000
K.IrqMgrVBL.MRM jmp $0000
IRQ.VBL.n0 .BS 1
IRQ.VBL.0n .BS 1
IRQ.VBL.MSM jmp $0000
IRQ.VBL.MRM jmp $0000
*--------------------------------------
K.IrqHandlerJMP ldx #DEVMGR.IRQ
K.IrqHJMP ldx #DEVMGR.IRQ
jmp ($fe)
*--------------------------------------
MAN

View File

@ -109,7 +109,7 @@ K.SYSCALL.JMP .DA 0 $00
.DA K.GetPSStatus.A
.DA K.GetPSList.YA
.DA * $B0
.DA 0 $B0
.DA K.GetArg.A
.DA K.ExpandStr.YA
.DA 0
@ -117,28 +117,44 @@ K.SYSCALL.JMP .DA 0 $00
.DA K.SetEnv
.DA K.GetEnv.YA
.DA K.UnsetEnv.YA
.DA K.FAdd $C0
.DA K.FSub
.DA K.FMult
.DA K.FDiv
.DA K.FPwr
.DA 0
.DA 0
.DA 0
.DA K.Log $D0
.DA K.Sqr
.DA K.Exp
.DA K.Cos
.DA K.Sin
.DA K.Tan
.DA K.ATan
.DA 0
*--------------------------------------
* $E000
*--------------------------------------
.DA K.GetMem $C0
.DA K.GetMem $E0
.DA K.FreeMem.A
.DA K.GetMemPtr.A
.DA K.GetMemByID.A
.DA K.GetMem.YA
.DA K.GetMem0.YA
.DA K.SetLoMem
.DA K.NewStr.YA
.DA K.GetMemStat.YA
*--------------------------------------
.DA 0 $D0
.DA K.Sleep $F0
.DA 0
.DA 0
.DA 0
.DA 0
.DA K.LoadStkObj.YA
.DA K.GetStkObj.A
.DA K.FreeStkObj.A
.DA K.GetMemStat.YA
*--------------------------------------
.DA K.Sleep $E0
*--------------------------------------
* LO Byte :
* #RRAMWRAMBNK1,#RRAMWRAMBNK2
@ -348,8 +364,42 @@ K.SYSCALL.BANK .DA #RRAMWRAMBNK1 $00
.DA #$80
.DA #RRAMWRAMBNK2
.DA #$80
.DA #RRAMWRAMBNK2 $C0
.DA #$80
.DA #RRAMWRAMBNK2
.DA #$80
.DA #RRAMWRAMBNK2
.DA #$80
.DA #RRAMWRAMBNK2
.DA #$80
.DA #RRAMWRAMBNK2
.DA #$80
.DA #RRAMWRAMBNK2
.DA #$80
.DA #RRAMWRAMBNK2
.DA #$80
.DA #RRAMWRAMBNK2
.DA #$80
.DA #RRAMWRAMBNK2 $D0
.DA #$80
.DA #RRAMWRAMBNK2
.DA #$80
.DA #RRAMWRAMBNK2
.DA #$80
.DA #RRAMWRAMBNK2
.DA #$80
.DA #RRAMWRAMBNK2
.DA #$80
.DA #RRAMWRAMBNK2
.DA #$80
.DA #RRAMWRAMBNK2
.DA #$80
.DA #RRAMWRAMBNK2
.DA #$80
*--------------------------------------
.DA 0 $C0 : MemMgr at $E000
.DA 0 $E0 : MemMgr at $E000
.DA 0
.DA 0
.DA 0
@ -367,7 +417,7 @@ K.SYSCALL.BANK .DA #RRAMWRAMBNK1 $00
.DA 0
.DA 0
*--------------------------------------
.DA 0 $D0
.DA 0 $F0
.DA 0
.DA 0
.DA 0
@ -385,12 +435,9 @@ K.SYSCALL.BANK .DA #RRAMWRAMBNK1 $00
.DA 0
.DA 0
*--------------------------------------
.DA 0 $E0
*--------------------------------------
PullPtr1Ptr2Ptr3
sec
PullP1P2P3 sec
.HS 90 bcc
PullPtr1Ptr2 clc
PullP1P2 clc
>PULLW ZPPtr1
>PULLW ZPPtr2
bcc .9

View File

@ -4,8 +4,8 @@ LOMEM $A00
INC 1
AUTO 6
*/--------------------------------------
* # FAdd,FSub,FMult,FDiv
* Return X+Y,X-Y,X*Y,X/Y
* # FAdd,FSub,FMult,FDiv,FPwr
* Return X+Y, X-Y, X*Y, X/Y, X^Y
* ## In:
* PUSHW = X (*Float)
* PUSHW = Y (*Float)
@ -18,38 +18,52 @@ K.FSub ldx #ROM.FSUB
K.FMult ldx #ROM.FMULT
.HS 2C BIT ABS
K.FDiv ldx #ROM.FDIV
.HS 2C BIT ABS
K.FPwr ldx #ROM.PWR
>STYA FORPNT
phx
jsr MATH.PullFAC
jsr MATH.PullARG
>PULLW FORPNT
plx
jsr A2osX.ROMCALL
>ROMCALL GETFAC
clc
rts
bra MATH.Go
*/--------------------------------------
* # Log,Cos,Sin,Tan,ATan
* Return
* # Log,Sqr,Exp,Cos,Sin,Tan,ATan
* Return Log(x), Sqr(x), E^X, Cos(x), Sin(X), Tan(x), ATan(x)
* ## In:
* PUSHW = X (*Float)
* Y,A = Dest (*Float)
*\--------------------------------------
K.Cos jsr MATH.PullFAC
* >ROMCALL COS
*--------------------------------------
MATH.PullFAC >PULLA
tay
>PULLA
>ROMCALL SETFAC.AY
K.Log ldx #ROM.LOG
.HS 2C BIT ABS
K.Sqr ldx #ROM.SQR
.HS 2C BIT ABS
K.Exp ldx #ROM.EXP
.HS 2C BIT ABS
K.Cos ldx #ROM.COS
.HS 2C BIT ABS
K.Sin ldx #ROM.SIN
.HS 2C BIT ABS
K.Tan ldx #ROM.TAN
.HS 2C BIT ABS
K.ATan ldx #ROM.ATAN
>STYA FORPNT
phx
jsr MATH.PullFAC
MATH.Go plx
jsr A2osX.ROMCALL
>ROMCALL GETFAC
clc
rts
*--------------------------------------
MATH.PullARG >PULLA
tay
>PULLA
>ROMCALL SETARG.AY
*--------------------------------------
MATH.PullFAC >PULLW INDEX
>ROMCALL SETFAC
rts
*--------------------------------------
MATH.PullARG >PULLW INDEX
>ROMCALL SETARG
rts
*--------------------------------------
MAN
SAVE /A2OSX.SRC/SYS/KERNEL.S.MATH

View File

@ -181,7 +181,7 @@ K.GetMem.I tya
* Y,A = Requested size
* Out:
*--------------------------------------
Mem.AddSlot >STYA ZPMemMgrTmp1 save req size
Mem.AddSlot >STYA ZPMemMgrTmp1 save req size
ldx Mem.LastSlot
inx
beq .99 > 255 ERR:OUT OF SLOT
@ -238,7 +238,7 @@ Mem.NextSlot lda ZPMemMgrSPtr
inc ZPMemMgrSPtr+1
.8 rts
*--------------------------------------
Mem.Init0 ldy #S.MEM.PTR
Mem.Init0 ldy #S.MEM.PTR
lda (ZPMemMgrSPtr),y ZPMemMgrSPtr already set
sta .2+1
iny
@ -434,10 +434,6 @@ K.GetMemByID.A sta ZPMemMgrSPtr
* sty ZPMemMgrSPtr
* sta ZPMemMgrSPtr+1
* rts
*--------------------------------------
K.SetLoMem
clc
rts
*/--------------------------------------
* # NewStr.YA
* Create a new copy of this C-String

View File

@ -24,15 +24,15 @@ K.CreatePSNewEnv.YA
.HS 2C bit abs
K.CreatePS.YA
ldx #0
stx K.CreatePS.Flags
>STYA K.CreatePS.CmdLine
stx PS.Flags
>STYA PS.CL
jsr PS.CreateChild Child S.PS at ZPPtr3
bcs .9
sta .8+1
>LDYA K.CreatePS.CmdLine
>LDYA PS.CL
jsr PS.CmdLine2Args Y,A = Args[0]
bcs .9
@ -49,8 +49,8 @@ K.CreatePS.YA
.8 lda #$ff self modified
.9 rts
*--------------------------------------
K.CreatePS.Flags .BS 1
K.CreatePS.CmdLine .BS 2
PS.Flags .BS 1
PS.CL .BS 2
*--------------------------------------
* PS.CreateChild
* in :
@ -103,14 +103,14 @@ PS.CreateChild ldx #0
plx
sta PS.Table.hMem,x
jsr PS.SetMemOwnership Set Ownership
jsr PS.SetMemOwner Set Ownership
ldy #S.PS.PID
lda CORE.LastPSID
sta (ZPPtr3),y
lda #S.PS.F.DUPENV
bit K.CreatePS.Flags need to create ENV & Prefix ?
bit PS.Flags need to create ENV & Prefix ?
beq .6 no...
sta (ZPPtr3) Mark this PS with DUPENV flag
@ -121,7 +121,7 @@ PS.CreateChild ldx #0
jsr K.NewStr.YA
bcs .9
jsr PS.SetMemOwnership Set Ownership
jsr PS.SetMemOwner Set Ownership
txa
ldy #S.PS.hPREFIX
@ -159,7 +159,7 @@ PS.CreateChild ldx #0
sta (ZPPtr3),y
lda #S.PS.F.HOLD
bit K.CreatePS.Flags
bit PS.Flags
beq .82
ora (pPs)
@ -206,9 +206,9 @@ PS.CmdLine2Args >STYA ZPPtr1
ldy #S.PS.hARGS
sta (ZPPtr3),y
jsr PS.SetMemOwnership Set Ownership
jsr PS.SetMemOwner Set Ownership
stz PS.CmdLine2Args.bInQuote
stz PS.bInQuote
ldy #$ff
ldx #0 Arg Count
@ -219,15 +219,15 @@ PS.CmdLine2Args >STYA ZPPtr1
cmp #'"' found a quote ?
bne .5
lda PS.CmdLine2Args.bInQuote
lda PS.bInQuote
eor #$ff
sta PS.CmdLine2Args.bInQuote
sta PS.bInQuote
bra .4
.5 cmp #' '
bne .6
bit PS.CmdLine2Args.bInQuote
bit PS.bInQuote
bmi .6
inx Found one arg !!!
@ -258,8 +258,7 @@ PS.CmdLine2Args >STYA ZPPtr1
clc
.9 rts
PS.CmdLine2Args.bInQuote
.BS 1
PS.bInQuote .BS 1
*--------------------------------------
PS.Init jsr BIN.Load.YA Y,A=filename full path
bcs .9
@ -277,7 +276,7 @@ PS.Init jsr BIN.Load.YA Y,A=filename full path
sta (ZPPtr3),y save CS hMem in S.PS
jsr K.GetMemByID.A
jsr PS.SetMemOwnership Set Ownership
jsr PS.SetMemOwner Set Ownership
ldy #H.BIN.EXE.DS.SIZE+1
lda (ZPPtr4),y Load DS.SIZE HI
@ -304,7 +303,7 @@ PS.Init jsr BIN.Load.YA Y,A=filename full path
ldy #S.PS.hDS
sta (ZPPtr3),y save DS hMem in S.PS
jsr PS.SetMemOwnership Set Ownership
jsr PS.SetMemOwner Set Ownership
.2 ldy #H.BIN.EXE.SS.SIZE
lda (ZPPtr4),y Load SS.SIZE
@ -330,7 +329,7 @@ PS.Init jsr BIN.Load.YA Y,A=filename full path
ldy #S.PS.hSS
sta (ZPPtr3),y save SS hMem in S.PS
jsr PS.SetMemOwnership Set Ownership
jsr PS.SetMemOwner Set Ownership
clc
.9 rts
@ -350,7 +349,7 @@ PS.DupEnv.A jsr K.GetMemPtr.A
>STYA ZPPtr2
jsr PS.SetMemOwnership Set Ownership
jsr PS.SetMemOwner Set Ownership
ldy #0
@ -378,8 +377,7 @@ PS.DupEnv.A jsr K.GetMemPtr.A
clc
.9 rts
*--------------------------------------
PS.SetMemOwnership
lda CORE.LastPSID
PS.SetMemOwner lda CORE.LastPSID
ldy #S.MEM.OWNERPID
sta (ZPMEMMGR),y
rts

View File

@ -27,14 +27,14 @@ K.Stat jsr PFT.CheckPathSTK
>MLICALL MLIGETFILEINFO
bcs .9
ldx K.MLI.PARAMS+S.FILEINFO.ACCESS
ldx K.MLI.PARAMS+S.FI.A
lda #S.STAT.MODE.XO+S.STAT.MODE.WO+S.STAT.MODE.RO
cpx #S.FILEINFO.ACCESS.FULL
cpx #S.FI.A.FULL
beq .2
lda #S.STAT.MODE.XO+S.STAT.MODE.RO
cpx #S.FILEINFO.ACCESS.R
cpx #S.FI.A.R
beq .2
lda #0
@ -57,13 +57,13 @@ K.Stat jsr PFT.CheckPathSTK
iny
lda K.MLI.PARAMS+S.FILEINFO.BLOCKSUSED
lda K.MLI.PARAMS+S.FI.UBLKS
asl
jsr K.Stat.StoreY
iny
lda K.MLI.PARAMS+S.FILEINFO.BLOCKSUSED+1
lda K.MLI.PARAMS+S.FI.UBLKS+1
rol
jsr K.Stat.StoreY
@ -79,9 +79,9 @@ K.Stat jsr PFT.CheckPathSTK
K.Stat.StoreY sta $ffff,y
rts
*--------------------------------------
K.Stat.SRC .DA #S.FILEINFO.TYPE
.DA #S.FILEINFO.AUXTYPE,#S.FILEINFO.AUXTYPE+1
.DA #S.FILEINFO.BLOCKSUSED,#S.FILEINFO.BLOCKSUSED+1
K.Stat.SRC .DA #S.FI.T
.DA #S.FI.AUXTYPE,#S.FI.AUXTYPE+1
.DA #S.FI.UBLKS,#S.FI.UBLKS+1
K.Stat.DST .DA #S.STAT.P.TYPE
.DA #S.STAT.P.AUXTYPE,#S.STAT.P.AUXTYPE+1
.DA #S.STAT.BLOCKS,#S.STAT.BLOCKS+1
@ -96,12 +96,12 @@ K.Stat.DST .DA #S.STAT.P.TYPE
*\-------------------------------------
K.MKDir.YA jsr PFT.CheckPathYA
jsr STDIO.SetMLIPathYA
lda #S.FILEINFO.ACCESS.FULL
sta K.MLI.PARAMS+S.FILEINFO.ACCESS
lda #S.FILEINFO.TYPE.DIR
sta K.MLI.PARAMS+S.FILEINFO.TYPE
lda #S.FILEINFO.STORETYPE.DIR
sta K.MLI.PARAMS+S.FILEINFO.STORETYPE
lda #S.FI.A.FULL
sta K.MLI.PARAMS+S.FI.A
lda #S.FI.T.DIR
sta K.MLI.PARAMS+S.FI.T
lda #S.FI.ST.DIR
sta K.MLI.PARAMS+S.FI.ST
* jsr DATETIME

View File

@ -255,13 +255,13 @@ K.FOpen jsr PFT.CheckPathSTK
bit K.FOpen.MODE Create if not exists ?
bpl K.FOpen.9 No, return MLI error
lda #S.FILEINFO.ACCESS.FULL Yes, Create...
lda #S.FI.A.FULL Yes, Create...
sta K.MLI.PARAMS+3 Access
lda K.FOpen.TYPE
sta K.MLI.PARAMS+4 File type
>LDYA K.FOpen.AUXTYPE
>STYA K.MLI.PARAMS+5 Aux type
lda #S.FILEINFO.STORETYPE.STD
lda #S.FI.ST.STD
sta K.MLI.PARAMS+7
ldx #3
@ -621,7 +621,7 @@ K.Rename jsr PFT.CheckPathSTK
* PUSHW PSTR to scan (ex: "192.168.1.5")
* ## Out:
*\--------------------------------------
K.SScanF jsr PullPtr1Ptr2Ptr3
K.SScanF jsr PullP1P2P3
ldy #0 Y = PTR in pattern
@ -940,10 +940,8 @@ PrintF.U.1 bcc .8 unsigned, nothing to check
PrintF.E sec Force "E+12"
.HS 90 BCC
PrintF.F clc
>PULLA
tay
>PULLA
>ROMCALL SETFAC.AY
>PULLW INDEX
>ROMCALL SETFAC
ldy #3 In order not to trash A2osX.SaveSM,A2osX.SaveSX
>ROMCALL FOUT

View File

@ -60,7 +60,7 @@ K.StrToL sec Signed
* ## Out:
*\--------------------------------------
K.StrToUL clc Unsigned
jsr PullPtr1Ptr2Ptr3
jsr PullP1P2P3
>PULLA Base
jsr K.AToL.I
@ -83,7 +83,7 @@ K.StrToUL.rts rts
* PUSHW PTR to target buffer DWORD
* ## Out:
*\--------------------------------------
K.AToL jsr PullPtr1Ptr2 C-String in Ptr2, Dst buffer in Ptr1
K.AToL jsr PullP1P2 C-String in Ptr2, Dst buffer in Ptr1
lda #10 base 10
sec signed

View File

@ -35,7 +35,7 @@ K.StrLen.YA >STYA ZPPtr1
* ## Out:
* DST = DST+SRC
*\--------------------------------------
K.StrCat jsr PullPtr1Ptr2
K.StrCat jsr PullP1P2
.1 lda (ZPPtr1)
beq K.StrCpy.I
@ -53,7 +53,7 @@ K.StrCat jsr PullPtr1Ptr2
* ## Out:
* DST = SRC
*\--------------------------------------
K.StrCpy jsr PullPtr1Ptr2
K.StrCpy jsr PullP1P2
K.StrCpy.I ldy #0
@ -77,7 +77,7 @@ K.StrCpy.I ldy #0
* CC : match
* CS : no match
*\--------------------------------------
K.StrMatch jsr PullPtr1Ptr2
K.StrMatch jsr PullP1P2
lda (ZPPtr2) Get pattern 1st byte
beq .8 Match always if empty

View File

@ -30,7 +30,7 @@ K.Time.YA >STYA ZPPtr2
* PUSHW = Dst PTR To S.TIME
* PUSHW = Src PTR to ProDOS DATE/TIME (DWORD)
*\--------------------------------------
K.PTime2Time jsr PullPtr1Ptr2
K.PTime2Time jsr PullP1P2
TIME.PTime2TimeP1P2
ldy #1
lda (ZPPtr1),y Get Year
@ -167,7 +167,7 @@ K.ComputeWDAY lda #3 Thursday : 4 (-1 for mod 7)
* PUSHW = Dst PTR To S.TIME
* PUSHW = Src CTIME DWORD
*\--------------------------------------
K.CTime2Time jsr PullPtr1Ptr2
K.CTime2Time jsr PullP1P2
ldy #3
@ -402,7 +402,7 @@ K.CTime.Year .BS 1
* ## Out:
* none. always succeed.
*\--------------------------------------
K.StrFTime jsr PullPtr1Ptr2Ptr3
K.StrFTime jsr PullP1P2P3
ldy #0

View File

@ -35,9 +35,10 @@ L.FLOAT2 .DA FLOAT2
L.FLOAT3 .DA FLOAT3
L.FLOAT4 .DA FLOAT4
L.FLOAT5 .DA FLOAT5
L.MSG .DA MSG
L.CONST1 .DA CONST1
L.CONST2 .DA CONST2
L.MSG1 .DA MSG1
L.MSG2 .DA MSG2
.DA 0
*--------------------------------------
CS.INIT clc
@ -46,32 +47,36 @@ CS.INIT clc
CS.RUN >PUSHEA.G ENDPTR
>PUSHW L.CONST2
>PUSHEA.G MYFLOAT2
>SYSCALL StrToF
>PUSHEA.G MYFLOAT2
>PUSHEA.G ENDPTR
>PUSHW L.CONST1
>PUSHEA.G MYFLOAT1
>SYSCALL StrToF
>PUSHEA.G MYFLOAT2
>PUSHEA.G MYFLOAT1
>PUSHW L.FLOAT5
>PUSHW L.FLOAT4
>PUSHW L.FLOAT3
>PUSHW L.FLOAT2
>PUSHW L.FLOAT1
>LDYA L.MSG
>LDYA L.MSG1
>SYSCALL PrintF.YA
>PUSHEA.G MYFLOAT1
>PUSHEA.G MYFLOAT2
>LEA.G MYFLOAT3
>SYSCALL FSub
>PUSHEA.G MYFLOAT3
>LDYA L.MSG2
>SYSCALL PrintF.YA
lda #0
sec
.9 rts
rts
*--------------------------------------
CS.DOEVENT sec
rts
@ -80,20 +85,22 @@ CS.QUIT clc
rts
*--------------------------------------
CS.END
MSG >CSTR "PrintF:%e,%e,%e,%e,%e\r\nStrToF:%e,%e\r\n"
MSG1 >CSTR "PrintF:%e, %e, %e\r\n%e, %e\r\nStrToF:%e, %e\r\n"
FLOAT1 .HS 9B3EBC1FFD 99,999,999.9
FLOAT2 .HS 9E6E6B27FD 999,999,999
FLOAT3 .HS 9E6E6B2800 1,000,000,000
FLOAT4 .HS 8100000000 1
FLOAT5 .HS 9080000000 -32768
CONST1 >CSTR "3.141592653"
CONST2 >CSTR "-12.345678E-17"
CONST2 >CSTR "2"
MSG2 >CSTR "PI/2=%e\r\n"
*--------------------------------------
.DUMMY
.OR 0
DS.START
MYFLOAT1 .BS 5
MYFLOAT2 .BS 5
MYFLOAT3 .BS 5
ENDPTR .BS 2
DS.END
.ED