mirror of https://github.com/A2osX/A2osX.git
Kernel 0.9.1 : Math API
This commit is contained in:
parent
2f42486dbd
commit
94d9a4393e
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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...
|
||||
|
|
|
@ -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
|
||||
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
*/--------------------------------------
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
||||
|
|
27
TEST.S.txt
27
TEST.S.txt
|
@ -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
|
||||
|
|
Loading…
Reference in New Issue