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 jsr PrintFAX
lda MACHID lda MACHID
and #MACHID.RAM and #MACHID.M
cmp #MACHID.RAM.128 cmp #MACHID.M.128
beq .1 beq .1
>LDAXI MSG.SYSMEM.KO >LDAXI MSG.SYSMEM.KO

View File

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

View File

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

View File

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

View File

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

View File

@ -44,6 +44,8 @@ A2osX.CPUSPEED .EQ $BEE6 WORD, (->255.99 Mhz)
A2osX.Z80SLOT .EQ $BEE8 A2osX.Z80SLOT .EQ $BEE8
A2osX.Z80SPEED .EQ $BEE9 WORD A2osX.Z80SPEED .EQ $BEE9 WORD
A2OsX.InKernel .EQ $BEEB
A2osX.TIMER16 .EQ $BEEC WORD A2osX.TIMER16 .EQ $BEEC WORD
A2osX.RANDOM16 .EQ $BEEE WORD A2osX.RANDOM16 .EQ $BEEE WORD
*-------------------------------------- *--------------------------------------
@ -182,27 +184,45 @@ SYS.SetEnv .EQ $BA
SYS.GetEnv.YA .EQ $BC SYS.GetEnv.YA .EQ $BC
SYS.UnsetEnv.YA .EQ $BE SYS.UnsetEnv.YA .EQ $BE
*-------------------------------------- *--------------------------------------
SYS.GetMem .EQ $C0 SYS.FAdd .EQ $C0
SYS.FreeMem.A .EQ $C2 SYS.FSub .EQ $C2
SYS.GetMemPtr.A .EQ $C4 SYS.FMult .EQ $C4
SYS.GetMemByID.A .EQ $C6 SYS.FDiv .EQ $C6
SYS.GetMem.YA .EQ $C8 SYS.FPwr .EQ $C8
SYS.GetMem0.YA .EQ $CA * .EQ $CA
SYS.SetLoMem .EQ $CC * .EQ $CC
SYS.NewStr.YA .EQ $CE * .EQ $CE
* .EQ $D0 SYS.Log .EQ $D0
* .EQ $D2 SYS.Sqr .EQ $D2
* .EQ $D4 SYS.Exp .EQ $D4
* .EQ $D6 SYS.Cos .EQ $D6
SYS.LoadStkObj.YA .EQ $D8 SYS.Sin .EQ $D8
SYS.GetStkObj.A .EQ $DA SYS.Tan .EQ $DA
SYS.FreeStkObj.A .EQ $DC SYS.ATan .EQ $DC
SYS.GetMemStat.YA .EQ $DE * .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 * ProDOS ERROR CODES : $00->$5F
* Lib ERROR CODES : $80->$BF * Lib ERROR CODES : $80->$BF

View File

@ -55,11 +55,11 @@ ROM.FADD .EQ 2
ROM.LTOF .EQ 4 ROM.LTOF .EQ 4
ROM.LOG .EQ 6 ROM.LOG .EQ 6
ROM.FMULT .EQ 8 ROM.FMULT .EQ 8
ROM.SETARG.AY .EQ 10 ROM.SETARG .EQ 10
ROM.FDIV .EQ 12 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.FCOMP .EQ 18
ROM.QINT .EQ 20 ROM.QINT .EQ 20
ROM.FIN .EQ 22 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.100 .EQ $02
S.DSTAT.NET.STATUS.1000 .EQ $03 S.DSTAT.NET.STATUS.1000 .EQ $03
S.DSTAT.NET.MAC .EQ S.DSTAT+2 S.DSTAT.NET.MAC .EQ S.DSTAT+2
S.DSTAT.NET .EQ S.DSTAT+8 S.DSTAT.NET .EQ S.DSTAT+8
*-------------------------------------- *--------------------------------------
MAN MAN
SAVE /A2OSX.BUILD/INC/NET.I SAVE /A2OSX.BUILD/INC/NET.I

View File

@ -39,29 +39,29 @@ MLIGETEOF .EQ $D1
MLISETBUF .EQ $D2 MLISETBUF .EQ $D2
MLIGETBUF .EQ $D3 MLIGETBUF .EQ $D3
*-------------------------------------- *--------------------------------------
S.FILEINFO.ACCESS .EQ $03 S.FI.A .EQ $03
S.FILEINFO.ACCESS.R .EQ $01 S.FI.A.R .EQ $01
S.FILEINFO.ACCESS.W .EQ $02 S.FI.A.W .EQ $02
S.FILEINFO.ACCESS.B .EQ $20 S.FI.A.B .EQ $20
S.FILEINFO.ACCESS.RN .EQ $40 S.FI.A.RN .EQ $40
S.FILEINFO.ACCESS.D .EQ $80 S.FI.A.D .EQ $80
S.FILEINFO.ACCESS.FULL .EQ $C3 S.FI.A.FULL .EQ $C3
S.FILEINFO.TYPE .EQ $04 S.FI.T .EQ $04
S.FILEINFO.TYPE.TXT .EQ $04 S.FI.T.TXT .EQ $04
S.FILEINFO.TYPE.DIR .EQ $0F S.FI.T.DIR .EQ $0F
S.FILEINFO.TYPE.SYS .EQ $FF S.FI.T.SYS .EQ $FF
S.FILEINFO.AUXTYPE .EQ $05 S.FI.AUXTYPE .EQ $05
S.FILEINFO.TOTALBLOCKS .EQ $05 S.FI.TBLKS .EQ $05
S.FILEINFO.STORETYPE .EQ $07 S.FI.ST .EQ $07
S.FILEINFO.STORETYPE.STD .EQ $01 S.FI.ST.STD .EQ $01
S.FILEINFO.STORETYPE.DIR .EQ $0D S.FI.ST.DIR .EQ $0D
S.FILEINFO.BLOCKSUSED .EQ $08 S.FI.UBLKS .EQ $08
S.FILEINFO.MODDATE .EQ $0A S.FI.MDATE .EQ $0A
S.FILEINFO.MODTIME .EQ $0C S.FI.MTIME .EQ $0C
S.FILEINFO.CREATEDATE .EQ $0E S.FI.CDATE .EQ $0E
S.FILEINFO.CREATETIME .EQ $10 S.FI.CTIME .EQ $10
* *
S.FILEINFO .EQ $12 S.FI .EQ $12
*-------------------------------------- *--------------------------------------
MLI .EQ $BF00 MLI .EQ $BF00
*JSPARE .EQ $BF03 *JSPARE .EQ $BF03
@ -103,16 +103,16 @@ LEVEL .EQ $BF94
*BUBIT .EQ $BF95 *BUBIT .EQ $BF95
*SPARE1 .EQ $BF96 *SPARE1 .EQ $BF96
MACHID .EQ $BF98 MACHID .EQ $BF98
MACHID.TYPE .EQ %11001000 MACHID.T .EQ %11001000
*MACHID.TYPE.II .EQ %00000000 *MACHID.T.II .EQ %00000000
*MACHID.TYPE.IIp .EQ %01000000 *MACHID.T.IIp .EQ %01000000
MACHID.TYPE.IIe .EQ %10000000 MACHID.T.IIe .EQ %10000000
MACHID.TYPE.IIc .EQ %10001000 MACHID.T.IIc .EQ %10001000
*MACHID.TYPE.III .EQ %11000000 *MACHID.T.III .EQ %11000000
MACHID.RAM .EQ %00110000 MACHID.M .EQ %00110000
MACHID.RAM.128 .EQ %00110000 MACHID.M.128 .EQ %00110000
*MACHID.RAM.64 .EQ %00100000 *MACHID.M.64 .EQ %00100000
*MACHID.RAM.48 .EQ %00010000 *MACHID.M.48 .EQ %00010000
*MACHID.SPARE .EQ %00000100 *MACHID.SPARE .EQ %00000100
MACHID.COL80 .EQ %00000010 MACHID.COL80 .EQ %00000010
MACHID.CLK .EQ %00000001 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 bne .99
>PUSHWI 0 Aux type >PUSHWI 0 Aux type
>PUSHBI 6 S.FILEINFO.TYPE.BIN >PUSHBI 6 S.FI.T.BIN
>PUSHBI SYS.FOpen.R >PUSHBI SYS.FOpen.R
>LDA.G hFileName >LDA.G hFileName
@ -210,7 +210,7 @@ CS.RUN.Load >PUSHEA.G StatBuf
rts rts
*-------------------------------------- *--------------------------------------
CS.RUN.Save >PUSHWI 0 AUXTYPE 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 >PUSHBI SYS.FOpen.W+SYS.FOpen.X
>LDA.G hFileName >LDA.G hFileName

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@ -60,7 +60,7 @@ K.StrToL sec Signed
* ## Out: * ## Out:
*\-------------------------------------- *\--------------------------------------
K.StrToUL clc Unsigned K.StrToUL clc Unsigned
jsr PullPtr1Ptr2Ptr3 jsr PullP1P2P3
>PULLA Base >PULLA Base
jsr K.AToL.I jsr K.AToL.I
@ -83,7 +83,7 @@ K.StrToUL.rts rts
* PUSHW PTR to target buffer DWORD * PUSHW PTR to target buffer DWORD
* ## Out: * ## 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 lda #10 base 10
sec signed sec signed

View File

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

View File

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

View File

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