mirror of
https://github.com/A2osX/A2osX.git
synced 2024-06-10 06:29:33 +00:00
PRODOS.FX : major bug removed
This commit is contained in:
parent
cae65ca341
commit
6edf99a78f
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
@ -141,26 +141,42 @@ A2osX.QC.Start2 sec
|
||||||
dex
|
dex
|
||||||
bpl .6
|
bpl .6
|
||||||
|
|
||||||
|
lda GP.KVER
|
||||||
|
cmp #$8D
|
||||||
|
beq .7
|
||||||
|
|
||||||
|
ldy #SYSKERNEL
|
||||||
|
lda /SYSKERNEL
|
||||||
|
bra .8
|
||||||
|
|
||||||
|
.7 ldy #SYSKRNL8M
|
||||||
|
lda /SYSKRNL8M
|
||||||
|
|
||||||
|
.8 sty TmpPtr1
|
||||||
|
sta TmpPtr1+1
|
||||||
|
|
||||||
ldx $280
|
ldx $280
|
||||||
|
|
||||||
ldy #0
|
ldy #0
|
||||||
|
|
||||||
.7 inx
|
.9 inx
|
||||||
iny
|
iny
|
||||||
lda SYSKERNEL,y
|
lda (TmpPtr1),y
|
||||||
sta $280,x
|
sta $280,x
|
||||||
cpy SYSKERNEL
|
tya
|
||||||
bne .7
|
cmp (TmpPtr1)
|
||||||
|
bne .9
|
||||||
|
|
||||||
stx $280
|
stx $280
|
||||||
|
|
||||||
jsr A2osX.QC.Load
|
jsr A2osX.QC.Load
|
||||||
bcs *
|
bcs *
|
||||||
.8 >LDYAI MSG.INIT1OK
|
|
||||||
|
>LDYAI MSG.INIT1OK
|
||||||
sec
|
sec
|
||||||
jsr A2osX.QC.PrintYA
|
jsr A2osX.QC.PrintYA
|
||||||
|
|
||||||
A2osX.QC.JMP >DEBUGOA
|
>DEBUGOA
|
||||||
jmp $2000
|
jmp $2000
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
A2osX.QC.SetPFX jsr MLI
|
A2osX.QC.SetPFX jsr MLI
|
||||||
|
@ -257,6 +273,7 @@ MLICLOSE03 .DA #1
|
||||||
.BS 1
|
.BS 1
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
SYSKERNEL .PS "sys/kernel"
|
SYSKERNEL .PS "sys/kernel"
|
||||||
|
SYSKRNL8M .PS "sys/krnl8m"
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
MSG.INIT1 .PS "A2osX[Stage1]:Init"
|
MSG.INIT1 .PS "A2osX[Stage1]:Init"
|
||||||
MSG.SETPREFIXOK .PS "Prefix Set: "
|
MSG.SETPREFIXOK .PS "Prefix Set: "
|
||||||
|
|
24
A2osX.S.txt
24
A2osX.S.txt
|
@ -149,17 +149,32 @@ A2osX.RamDrv >LDYAI MSG.RAMDRV
|
||||||
A2osX.SetupQC lda IO.RRAMWRAMBNK2
|
A2osX.SetupQC lda IO.RRAMWRAMBNK2
|
||||||
lda IO.RRAMWRAMBNK2
|
lda IO.RRAMWRAMBNK2
|
||||||
|
|
||||||
ldx #0
|
lda GP.KVER
|
||||||
.1 lda A2osX.QC.B.Start,x Still at $2xxx !!! not moved to $1xxx
|
cmp #$8D
|
||||||
|
bne .1
|
||||||
|
|
||||||
|
sta IO.SETALTZP
|
||||||
|
|
||||||
|
.1 ldx #0
|
||||||
|
|
||||||
|
.2 lda A2osX.QC.B.Start,x Still at $2xxx !!! not moved to $1xxx
|
||||||
sta $D100,x
|
sta $D100,x
|
||||||
lda A2osX.QC.B.Start+$100,x
|
lda A2osX.QC.B.Start+$100,x
|
||||||
sta $D200,x
|
sta $D200,x
|
||||||
lda A2osX.QC.B.Start+$200,x
|
lda A2osX.QC.B.Start+$200,x
|
||||||
sta $D300,x
|
sta $D300,x
|
||||||
inx
|
inx
|
||||||
bne .1
|
bne .2
|
||||||
|
|
||||||
lda IO.RROMBNK1
|
lda GP.KVER
|
||||||
|
cmp #$8D
|
||||||
|
bne .3
|
||||||
|
|
||||||
|
sta IO.CLRALTZP
|
||||||
|
|
||||||
|
bra A2osX.MLIQuit
|
||||||
|
|
||||||
|
.3 lda IO.RROMBNK1
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
A2osX.EnumPM >LDYAI MSG.PMENUM do this After SetupQC, a PM could override QC
|
A2osX.EnumPM >LDYAI MSG.PMENUM do this After SetupQC, a PM could override QC
|
||||||
jsr PrintFYA
|
jsr PrintFYA
|
||||||
|
@ -691,6 +706,7 @@ SYSTEM.END .EQ *
|
||||||
A2osX.QC.B.Start
|
A2osX.QC.B.Start
|
||||||
A2osX.QC.B.BOOT .EQ *+4
|
A2osX.QC.B.BOOT .EQ *+4
|
||||||
A2osX.QC.B.ROOT .EQ *+4+64
|
A2osX.QC.B.ROOT .EQ *+4+64
|
||||||
|
|
||||||
.INB usr/src/a2osx.s.qc
|
.INB usr/src/a2osx.s.qc
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
MAN
|
MAN
|
||||||
|
|
|
@ -411,7 +411,7 @@ CS.RUN.Arc >LDYA ZPChunkLen
|
||||||
|
|
||||||
>LDYA ZPChunkLen
|
>LDYA ZPChunkLen
|
||||||
jsr X.Arc
|
jsr X.Arc
|
||||||
* bcs .9
|
bcs .9
|
||||||
|
|
||||||
stx ZPAlg
|
stx ZPAlg
|
||||||
>STYA ZPChunkPakedLen
|
>STYA ZPChunkPakedLen
|
||||||
|
@ -485,8 +485,7 @@ CS.RUN.WriteStore
|
||||||
bcs .9
|
bcs .9
|
||||||
|
|
||||||
>PUSHW L.MSG.ARCED
|
>PUSHW L.MSG.ARCED
|
||||||
ldx ZPAlg
|
>PUSHW L.MSG.STORED
|
||||||
>PUSHW L.MSG.STORED,x
|
|
||||||
>PUSHW ZPChunkPakedLen
|
>PUSHW ZPChunkPakedLen
|
||||||
>PUSHW ZPChunkNewOfs
|
>PUSHW ZPChunkNewOfs
|
||||||
>PUSHBI 6
|
>PUSHBI 6
|
||||||
|
|
|
@ -346,8 +346,8 @@ CS.RUN.PROBE >LDYA L.MSG.PROBE
|
||||||
sta AARP.PRB.SPA+2
|
sta AARP.PRB.SPA+2
|
||||||
sta AARP.PRB.TPA+2
|
sta AARP.PRB.TPA+2
|
||||||
|
|
||||||
lda A2osX.TIMER16
|
lda A2osX.T16
|
||||||
eor A2osX.TIMER16+1
|
eor A2osX.T16+1
|
||||||
bne .1
|
bne .1
|
||||||
|
|
||||||
inc
|
inc
|
||||||
|
@ -463,7 +463,7 @@ CS.RUN.EtcFiles >LDYAI 256
|
||||||
|
|
||||||
>PUSHYA
|
>PUSHYA
|
||||||
>PUSHW L.CFG.DefaultHost
|
>PUSHW L.CFG.DefaultHost
|
||||||
>PUSHW A2osX.TIMER16
|
>PUSHW A2osX.T16
|
||||||
>PUSHBI 2
|
>PUSHBI 2
|
||||||
>SYSCALL SPrintF
|
>SYSCALL SPrintF
|
||||||
|
|
||||||
|
|
|
@ -711,8 +711,8 @@ CS.RUN.InitCat lda CatSize
|
||||||
|
|
||||||
>PUSHW pData >PUSHEA.G VolName
|
>PUSHW pData >PUSHEA.G VolName
|
||||||
>PUSHW L.FMT.BLANK
|
>PUSHW L.FMT.BLANK
|
||||||
>PUSHW A2osX.TIMER16
|
>PUSHW A2osX.T16
|
||||||
>PUSHW A2osX.RANDOM16
|
>PUSHW A2osX.R16
|
||||||
>PUSHBI 4
|
>PUSHBI 4
|
||||||
>SYSCALL SPrintF
|
>SYSCALL SPrintF
|
||||||
rts
|
rts
|
||||||
|
|
|
@ -12,7 +12,7 @@ DHCP.INIT lda IPCFG+S.NETCFG.STATUS
|
||||||
|
|
||||||
ldx #3
|
ldx #3
|
||||||
|
|
||||||
.1 eor A2osX.TIMER16,x
|
.1 eor A2osX.T16,x
|
||||||
sta DHCP.DISC.XID,x
|
sta DHCP.DISC.XID,x
|
||||||
sta DHCP.REQ.XID,x
|
sta DHCP.REQ.XID,x
|
||||||
dex
|
dex
|
||||||
|
|
|
@ -19,7 +19,7 @@ ETC.ReadFiles >LDYAI 256
|
||||||
|
|
||||||
>PUSHW L.IPCFG.HOSTNAME
|
>PUSHW L.IPCFG.HOSTNAME
|
||||||
>PUSHW L.CFG.DefaultHost
|
>PUSHW L.CFG.DefaultHost
|
||||||
>PUSHW A2osX.TIMER16
|
>PUSHW A2osX.T16
|
||||||
>PUSHBI 2
|
>PUSHBI 2
|
||||||
>SYSCALL SPrintF
|
>SYSCALL SPrintF
|
||||||
|
|
||||||
|
|
|
@ -40,9 +40,9 @@ CS.RUN.TLS jsr CS.RUN.TLS.init
|
||||||
CS.RUN.TLS.init >LDYA L.MSG.TLS
|
CS.RUN.TLS.init >LDYA L.MSG.TLS
|
||||||
>SYSCALL PutS
|
>SYSCALL PutS
|
||||||
|
|
||||||
lda A2osX.RANDOM16
|
lda A2osX.R16
|
||||||
sta ZPPtr1
|
sta ZPPtr1
|
||||||
lda A2osX.RANDOM16+1
|
lda A2osX.R16+1
|
||||||
and #$7F
|
and #$7F
|
||||||
sta ZPPtr1+1
|
sta ZPPtr1+1
|
||||||
|
|
||||||
|
|
|
@ -180,14 +180,14 @@ CS.RUN.OPENSKT ldx #3
|
||||||
dex
|
dex
|
||||||
bpl .2
|
bpl .2
|
||||||
|
|
||||||
lda A2osX.RANDOM16
|
lda A2osX.R16
|
||||||
eor A2osX.TIMER16+1
|
eor A2osX.T16+1
|
||||||
>STA.G SA.LOCAL+S.SOCKADDR.PORT
|
>STA.G SA.LOCAL+S.SOCKADDR.PORT
|
||||||
>STA.G SA.REMOTE+S.SOCKADDR.PORT
|
>STA.G SA.REMOTE+S.SOCKADDR.PORT
|
||||||
sta Identifier
|
sta Identifier
|
||||||
|
|
||||||
lda A2osX.RANDOM16+1
|
lda A2osX.R16+1
|
||||||
eor A2osX.TIMER16
|
eor A2osX.T16
|
||||||
>STA.G SA.LOCAL+S.SOCKADDR.PORT+1
|
>STA.G SA.LOCAL+S.SOCKADDR.PORT+1
|
||||||
>STA.G SA.REMOTE+S.SOCKADDR.PORT+1
|
>STA.G SA.REMOTE+S.SOCKADDR.PORT+1
|
||||||
sta Identifier+1
|
sta Identifier+1
|
||||||
|
|
|
@ -101,7 +101,7 @@ CS.RUN jsr Init.TimeOut
|
||||||
bcs .91
|
bcs .91
|
||||||
>STA.G hSocket
|
>STA.G hSocket
|
||||||
ldx #3
|
ldx #3
|
||||||
.21 lda A2osX.TIMER16,x
|
.21 lda A2osX.T16,x
|
||||||
sta RPC.Request,x
|
sta RPC.Request,x
|
||||||
dex
|
dex
|
||||||
bpl .21
|
bpl .21
|
||||||
|
|
|
@ -246,17 +246,17 @@ CS.RUN.GetFile stz hFILE
|
||||||
plp
|
plp
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CS.RUN.TYPESUBT lda A2osX.HWType
|
CS.RUN.TYPESUBT lda A2osX.HWT
|
||||||
asl
|
asl
|
||||||
tax
|
tax
|
||||||
|
|
||||||
>LDYA L.TYPES,x
|
>LDYA L.TYPES,x
|
||||||
jsr CS.RUN.PRINTYA
|
jsr CS.RUN.PRINTYA
|
||||||
|
|
||||||
lda A2osX.HWType
|
lda A2osX.HWT
|
||||||
beq .8 Unknown
|
beq .8 Unknown
|
||||||
|
|
||||||
cmp #A2osX.HWType.IIc
|
cmp #A2osX.HWT.IIc
|
||||||
bcc .1
|
bcc .1
|
||||||
|
|
||||||
>PUSHW L.SUBT.ROM //c & IIgs
|
>PUSHW L.SUBT.ROM //c & IIgs
|
||||||
|
|
|
@ -156,12 +156,12 @@ Dev.Detect >STYA ZPArgPtr
|
||||||
Dev.ParseArgs lda (ZPArgPtr)
|
Dev.ParseArgs lda (ZPArgPtr)
|
||||||
bne .1
|
bne .1
|
||||||
|
|
||||||
lda A2osX.RANDOM16
|
lda A2osX.R16
|
||||||
eor A2osX.TIMER16
|
eor A2osX.T16
|
||||||
sta DCB+S.DCB.NIC.MAC+3
|
sta DCB+S.DCB.NIC.MAC+3
|
||||||
eor A2osX.RANDOM16+1
|
eor A2osX.R16+1
|
||||||
sta DCB+S.DCB.NIC.MAC+4
|
sta DCB+S.DCB.NIC.MAC+4
|
||||||
eor A2osX.TIMER16+1
|
eor A2osX.T16+1
|
||||||
sta DCB+S.DCB.NIC.MAC+5
|
sta DCB+S.DCB.NIC.MAC+5
|
||||||
clc
|
clc
|
||||||
rts
|
rts
|
||||||
|
|
|
@ -58,8 +58,8 @@ L.OSD .DA OSD
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
Dev.Detect >LDYA L.MSG.DETECT
|
Dev.Detect >LDYA L.MSG.DETECT
|
||||||
>SYSCALL PutS
|
>SYSCALL PutS
|
||||||
lda A2osX.HWType
|
lda A2osX.HWT
|
||||||
cmp #A2osX.HWType.IIc
|
cmp #A2osX.HWT.IIc
|
||||||
bcc .1
|
bcc .1
|
||||||
|
|
||||||
* stz DCB+S.DCB.GFX.S //c : 80c Mode
|
* stz DCB+S.DCB.GFX.S //c : 80c Mode
|
||||||
|
|
|
@ -107,12 +107,12 @@ Dev.Detect >STYA ZPArgPtr
|
||||||
Dev.ParseArgs lda (ZPArgPtr)
|
Dev.ParseArgs lda (ZPArgPtr)
|
||||||
bne .1
|
bne .1
|
||||||
|
|
||||||
lda A2osX.RANDOM16
|
lda A2osX.R16
|
||||||
eor A2osX.TIMER16
|
eor A2osX.T16
|
||||||
sta DCB+S.DCB.NIC.MAC+3
|
sta DCB+S.DCB.NIC.MAC+3
|
||||||
eor A2osX.RANDOM16+1
|
eor A2osX.R16+1
|
||||||
sta DCB+S.DCB.NIC.MAC+4
|
sta DCB+S.DCB.NIC.MAC+4
|
||||||
eor A2osX.TIMER16+1
|
eor A2osX.T16+1
|
||||||
sta DCB+S.DCB.NIC.MAC+5
|
sta DCB+S.DCB.NIC.MAC+5
|
||||||
clc
|
clc
|
||||||
rts
|
rts
|
||||||
|
|
|
@ -134,12 +134,12 @@ Dev.Detect >STYA ZPArgPtr
|
||||||
Dev.ParseArgs lda (ZPArgPtr)
|
Dev.ParseArgs lda (ZPArgPtr)
|
||||||
bne .1
|
bne .1
|
||||||
|
|
||||||
lda A2osX.RANDOM16
|
lda A2osX.R16
|
||||||
eor A2osX.TIMER16
|
eor A2osX.T16
|
||||||
sta DCB+S.DCB.NIC.MAC+3
|
sta DCB+S.DCB.NIC.MAC+3
|
||||||
eor A2osX.RANDOM16+1
|
eor A2osX.R16+1
|
||||||
sta DCB+S.DCB.NIC.MAC+4
|
sta DCB+S.DCB.NIC.MAC+4
|
||||||
eor A2osX.TIMER16+1
|
eor A2osX.T16+1
|
||||||
sta DCB+S.DCB.NIC.MAC+5
|
sta DCB+S.DCB.NIC.MAC+5
|
||||||
clc
|
clc
|
||||||
rts
|
rts
|
||||||
|
|
|
@ -128,12 +128,12 @@ Dev.Detect >STYA ZPArgPtr
|
||||||
Dev.ParseArgs lda (ZPArgPtr)
|
Dev.ParseArgs lda (ZPArgPtr)
|
||||||
bne .1
|
bne .1
|
||||||
|
|
||||||
lda A2osX.RANDOM16
|
lda A2osX.R16
|
||||||
eor A2osX.TIMER16
|
eor A2osX.T16
|
||||||
sta DCB+S.DCB.NIC.MAC+3
|
sta DCB+S.DCB.NIC.MAC+3
|
||||||
eor A2osX.RANDOM16+1
|
eor A2osX.R16+1
|
||||||
sta DCB+S.DCB.NIC.MAC+4
|
sta DCB+S.DCB.NIC.MAC+4
|
||||||
eor A2osX.TIMER16+1
|
eor A2osX.T16+1
|
||||||
sta DCB+S.DCB.NIC.MAC+5
|
sta DCB+S.DCB.NIC.MAC+5
|
||||||
clc
|
clc
|
||||||
rts
|
rts
|
||||||
|
|
|
@ -132,12 +132,12 @@ Dev.Detect >STYA ZPArgPtr
|
||||||
Dev.ParseArgs lda (ZPArgPtr)
|
Dev.ParseArgs lda (ZPArgPtr)
|
||||||
bne .1
|
bne .1
|
||||||
|
|
||||||
lda A2osX.RANDOM16
|
lda A2osX.R16
|
||||||
eor A2osX.TIMER16
|
eor A2osX.T16
|
||||||
sta DCB+S.DCB.NIC.MAC+3
|
sta DCB+S.DCB.NIC.MAC+3
|
||||||
eor A2osX.RANDOM16+1
|
eor A2osX.R16+1
|
||||||
sta DCB+S.DCB.NIC.MAC+4
|
sta DCB+S.DCB.NIC.MAC+4
|
||||||
eor A2osX.TIMER16+1
|
eor A2osX.T16+1
|
||||||
sta DCB+S.DCB.NIC.MAC+5
|
sta DCB+S.DCB.NIC.MAC+5
|
||||||
clc
|
clc
|
||||||
rts
|
rts
|
||||||
|
|
|
@ -22,54 +22,54 @@ pBase .EQ $DE 8 Bytes
|
||||||
ZPBIN .EQ $E0 32 bytes
|
ZPBIN .EQ $E0 32 bytes
|
||||||
PSCTX.SIZE .EQ $100-pCode
|
PSCTX.SIZE .EQ $100-pCode
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
A2osX.ZCALL .EQ $0000
|
*A2osX.ZCALL .EQ $0000
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
* A2osX GLOBAL PAGE
|
* A2osX GLOBAL PAGE
|
||||||
* $1000->$1012 : Public Vectors
|
* $1000->$1012 : Public Vectors
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
A2osX.SYSCALL .EQ $1000
|
A2osX.GP .EQ $0140
|
||||||
A2osX.LIBCALL .EQ $1003
|
A2osX.SYSCALL .EQ A2osX.GP+00
|
||||||
A2osX.ATKCALL .EQ $1006
|
A2osX.LIBCALL .EQ A2osX.GP+03
|
||||||
A2osX.FPUCALL .EQ $1009
|
A2osX.ATKCALL .EQ A2osX.GP+06
|
||||||
A2osX.BADCALL .EQ $100C
|
A2osX.FPUCALL .EQ A2osX.GP+09
|
||||||
|
A2osX.BADCALL .EQ A2osX.GP+12
|
||||||
|
A2osX.SLEEP .EQ A2osX.GP+16
|
||||||
|
A2osX.SYSCALL2 .EQ A2osX.GP+19
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
A2osX.SLEEP .EQ $1010
|
* Public Variables
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
* $11D0->$11EF : Public Variables
|
A2osX.SCRNDEVS .EQ A2osX.GP+22 0=console, 1-8=VT100, 9=GFX
|
||||||
*--------------------------------------
|
A2osX.ASCREEN .EQ A2osX.GP+32 Active Screen
|
||||||
A2osX.SCRNDEVS .EQ $11D0 0=console, 1-8=VT100, 9=GFX
|
A2osX.FSID .EQ A2osX.GP+33
|
||||||
A2osX.ASCREEN .EQ $11DA Active Screen
|
A2osX.KVER .EQ A2osX.GP+34 WORD
|
||||||
* 5 bytes
|
A2osX.IRQMode .EQ A2osX.GP+36
|
||||||
A2osX.KVER .EQ $11E0 WORD
|
A2osX.ATLKSID .EQ A2osX.GP+37
|
||||||
* 1 byte
|
A2osX.CPUTYPE .EQ A2osX.GP+38
|
||||||
A2osX.IRQMode .EQ $11E3
|
A2osX.CPUSPEED .EQ A2osX.GP+39 WORD, (->255.99 Mhz)
|
||||||
A2osX.ATLKSID .EQ $11E4
|
*
|
||||||
A2osX.FSID .EQ $11E5
|
A2osX.Z80SLOT .EQ A2osX.GP+41
|
||||||
A2osX.CPUTYPE .EQ $11E6
|
A2osX.HWT .EQ A2osX.GP+42
|
||||||
A2osX.CPUSPEED .EQ $11E7 WORD, (->255.99 Mhz)
|
A2osX.HWT.UNKNOWN .EQ 0
|
||||||
|
A2osX.HWT.IIe .EQ 1
|
||||||
A2osX.Z80SLOT .EQ $11E9
|
A2osX.HWT.IIc .EQ 2
|
||||||
A2osX.HWType .EQ $11EA
|
A2osX.HWT.IIgs .EQ 3
|
||||||
A2osX.HWType.UNKNOWN .EQ 0
|
A2osX.HWSubT .EQ A2osX.GP+43
|
||||||
A2osX.HWType.IIe .EQ 1
|
|
||||||
A2osX.HWType.IIc .EQ 2
|
|
||||||
A2osX.HWType.IIgs .EQ 3
|
|
||||||
A2osX.HWSubT .EQ $11EB
|
|
||||||
A2osX.HWSubT.Enh .EQ 1
|
A2osX.HWSubT.Enh .EQ 1
|
||||||
A2osX.HWSubT.LCCard .EQ 2
|
A2osX.HWSubT.LCCard .EQ 2
|
||||||
|
|
||||||
A2osX.TIMER16 .EQ $11EC WORD
|
A2osX.T16 .EQ A2osX.GP+44 WORD
|
||||||
A2osX.RANDOM16 .EQ $11EE WORD
|
A2osX.R16 .EQ A2osX.GP+46 WORD
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
* $11F0->$11FF : Kernel Config Block
|
* Kernel Config Block
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
A2osX.KCONFIG .EQ $11F0
|
A2osX.KCONFIG .EQ A2osX.GP+48
|
||||||
A2osX.HZ .EQ $11F0 5/6 for 50/60Hz
|
A2osX.HZ .EQ A2osX.KCONFIG+00 5/6 for 50/60Hz
|
||||||
A2osX.TTYDEVS .EQ $11F1
|
A2osX.TTYDEVS .EQ A2osX.KCONFIG+01
|
||||||
A2osX.F .EQ $11F8
|
A2osX.F .EQ A2osX.KCONFIG+02
|
||||||
A2osX.F.CHROOT .EQ %10000000 ChRooting to /RAMx
|
A2osX.F.CHROOT .EQ %10000000 ChRooting to /RAMx
|
||||||
A2osX.F.PMODE .EQ %01000000 Pre-emptive Mode
|
A2osX.F.PMODE .EQ %01000000 Pre-emptive Mode
|
||||||
A2osX.S .EQ $11F8 $BEF9->$BEFF, 7 slots
|
*
|
||||||
|
A2osX.S .EQ A2osX.KCONFIG+09 7 slots
|
||||||
A2osX.S.Z80 .EQ $80
|
A2osX.S.Z80 .EQ $80
|
||||||
A2osX.S.VXD .EQ $81
|
A2osX.S.VXD .EQ $81
|
||||||
A2osX.S.ATK .EQ $82
|
A2osX.S.ATK .EQ $82
|
||||||
|
@ -83,10 +83,6 @@ A2osX.S.CLK .EQ $E3
|
||||||
A2osX.S.SND .EQ $E4
|
A2osX.S.SND .EQ $E4
|
||||||
A2osX.S.DISABLE .EQ $FF
|
A2osX.S.DISABLE .EQ $FF
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
* NON BLOCKING Entry point (From libs)
|
|
||||||
*--------------------------------------
|
|
||||||
A2osX.SYSCALL2 .EQ $E200
|
|
||||||
*--------------------------------------
|
|
||||||
* ProDOS ERROR CODES : $00->$5F
|
* ProDOS ERROR CODES : $00->$5F
|
||||||
* Kernel ERROR CODES : $60->$7F
|
* Kernel ERROR CODES : $60->$7F
|
||||||
* Lib ERROR CODES : $80->$BF
|
* Lib ERROR CODES : $80->$BF
|
||||||
|
|
|
@ -78,7 +78,7 @@ DNS.REQUEST lda hDNSSocket
|
||||||
sty DNS.MSG.LEN
|
sty DNS.MSG.LEN
|
||||||
stz DNS.MSG.LEN+1
|
stz DNS.MSG.LEN+1
|
||||||
|
|
||||||
>LDYA A2osX.RANDOM16
|
>LDYA A2osX.R16
|
||||||
>STYA DNS.MSG.ID
|
>STYA DNS.MSG.ID
|
||||||
>STYA DNS.TmpCache+S.DNSCACHE.ID
|
>STYA DNS.TmpCache+S.DNSCACHE.ID
|
||||||
|
|
||||||
|
|
|
@ -1316,7 +1316,7 @@ SKT.NewTCB ldx #S.SOCKET.TCP.INSEQNUM
|
||||||
|
|
||||||
ldx #3
|
ldx #3
|
||||||
|
|
||||||
.2 lda A2osX.TIMER16,x
|
.2 lda A2osX.T16,x
|
||||||
sta SKT.Cache+S.SOCKET.TCP.OUTNEXTSEQ,x
|
sta SKT.Cache+S.SOCKET.TCP.OUTNEXTSEQ,x
|
||||||
dex
|
dex
|
||||||
bpl .2
|
bpl .2
|
||||||
|
|
|
@ -3,18 +3,20 @@ NEW
|
||||||
.LIST OFF
|
.LIST OFF
|
||||||
.OP 65816
|
.OP 65816
|
||||||
.OR $2000
|
.OR $2000
|
||||||
.TF PRODOS8M,TSYS
|
.TF PRODOS.8M,TSYS
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
KVER .EQ 30 release 3.0.0
|
KVER .EQ $8D release "8M"
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
READCAT .EQ 1 Boot Block read Catalog at $C00
|
READCAT .EQ 1 Boot Block read Catalog at $C00
|
||||||
ENHFILENAME .EQ 1
|
ENHFILENAME .EQ 1
|
||||||
|
DIREXTENDROOT .EQ 1
|
||||||
LOWERCASE .EQ 1
|
LOWERCASE .EQ 1
|
||||||
ACL .EQ 1
|
ACL .EQ 1
|
||||||
LOGO .EQ 1
|
LOGO .EQ 1
|
||||||
AUXLC .EQ 1
|
AUXLC .EQ 1
|
||||||
M.PM .EQ 0
|
M.PM .EQ 0
|
||||||
M.RAM .EQ 0
|
M.RAM .EQ 0
|
||||||
|
M.SEL .EQ 1
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
.INB inc/zp.i
|
.INB inc/zp.i
|
||||||
.INB inc/io.i
|
.INB inc/io.i
|
||||||
|
@ -96,6 +98,67 @@ X.Unpak.XatYA sty ZPOutBufPtr
|
||||||
.INB usr/src/prodos.fx/prodos.s.logo
|
.INB usr/src/prodos.fx/prodos.s.logo
|
||||||
.FIN
|
.FIN
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
|
PAKME.Table
|
||||||
|
PAKME.ID .SE 0
|
||||||
|
|
||||||
|
PAKME.ILDR.ID .EQ PAKME.ID
|
||||||
|
PAKME.ILDR .DA ILDR.PAK
|
||||||
|
PAKME.ID .SE PAKME.ID+2
|
||||||
|
|
||||||
|
PAKME.GP.ID .EQ PAKME.ID
|
||||||
|
PAKME.GP .DA GP.PAK
|
||||||
|
PAKME.ID .SE PAKME.ID+2
|
||||||
|
|
||||||
|
PAKME.XRW.ID .EQ PAKME.ID
|
||||||
|
PAKME.XRW .DA XRW.PAK
|
||||||
|
PAKME.ID .SE PAKME.ID+2
|
||||||
|
|
||||||
|
PAKME.XDOS.ID .EQ PAKME.ID
|
||||||
|
PAKME.XDOS .DA XDOS.PAK
|
||||||
|
PAKME.ID .SE PAKME.ID+2
|
||||||
|
|
||||||
|
PAKME.IRQ.ID .EQ PAKME.ID
|
||||||
|
PAKME.IRQ .DA IRQ.PAK
|
||||||
|
PAKME.ID .SE PAKME.ID+2
|
||||||
|
|
||||||
|
.DO M.RAM=1
|
||||||
|
PAKME.RAM.ID .EQ PAKME.ID
|
||||||
|
PAKME.RAM .DA RAM.PAK
|
||||||
|
PAKME.ID .SE PAKME.ID+2
|
||||||
|
|
||||||
|
PAKME.RAMX.ID .EQ PAKME.ID
|
||||||
|
PAKME.RAMX .DA RAMX.PAK
|
||||||
|
PAKME.ID .SE PAKME.ID+2
|
||||||
|
.FIN
|
||||||
|
|
||||||
|
PAKME.DCLK.ID .EQ PAKME.ID
|
||||||
|
PAKME.DCLK .DA DCLK.PAK
|
||||||
|
PAKME.ID .SE PAKME.ID+2
|
||||||
|
|
||||||
|
PAKME.NCLK.ID .EQ PAKME.ID
|
||||||
|
PAKME.NCLK .DA NCLK.PAK
|
||||||
|
PAKME.ID .SE PAKME.ID+2
|
||||||
|
|
||||||
|
PAKME.TCLK.ID .EQ PAKME.ID
|
||||||
|
PAKME.TCLK .DA TCLK.PAK
|
||||||
|
PAKME.ID .SE PAKME.ID+2
|
||||||
|
|
||||||
|
PAKME.XCLK.ID .EQ PAKME.ID
|
||||||
|
PAKME.XCLK .DA XCLK.PAK
|
||||||
|
PAKME.ID .SE PAKME.ID+2
|
||||||
|
|
||||||
|
PAKME.CCLK.ID .EQ PAKME.ID
|
||||||
|
PAKME.CCLK .DA CCLK.PAK
|
||||||
|
PAKME.ID .SE PAKME.ID+2
|
||||||
|
|
||||||
|
PAKME.SEL1.ID .EQ PAKME.ID
|
||||||
|
PAKME.SEL1 .DA SEL1.PAK
|
||||||
|
PAKME.ID .SE PAKME.ID+2
|
||||||
|
|
||||||
|
PAKME.SEL2.ID .EQ PAKME.ID
|
||||||
|
PAKME.SEL2 .DA SEL2.PAK
|
||||||
|
PAKME.ID .SE PAKME.ID+2
|
||||||
|
*--------------------------------------
|
||||||
ILDR.PAK .DA #0
|
ILDR.PAK .DA #0
|
||||||
.DA ILDR.LEN
|
.DA ILDR.LEN
|
||||||
.INB usr/src/prodos.fx/prodos.s.ildr
|
.INB usr/src/prodos.fx/prodos.s.ildr
|
||||||
|
@ -158,67 +221,6 @@ SEL1.PAK .DA #0
|
||||||
SEL2.PAK .DA #0
|
SEL2.PAK .DA #0
|
||||||
.DA SEL2.LEN
|
.DA SEL2.LEN
|
||||||
.INB usr/src/prodos.fx/prodos.s.sel2
|
.INB usr/src/prodos.fx/prodos.s.sel2
|
||||||
*--------------------------------------
|
|
||||||
PAKME.Table
|
|
||||||
PAKME.ID .SE 0
|
|
||||||
|
|
||||||
PAKME.ILDR.ID .EQ PAKME.ID
|
|
||||||
PAKME.ILDR .DA ILDR.PAK
|
|
||||||
PAKME.ID .SE PAKME.ID+2
|
|
||||||
|
|
||||||
PAKME.GP.ID .EQ PAKME.ID
|
|
||||||
PAKME.GP .DA GP.PAK
|
|
||||||
PAKME.ID .SE PAKME.ID+2
|
|
||||||
|
|
||||||
PAKME.XRW.ID .EQ PAKME.ID
|
|
||||||
PAKME.XRW .DA XRW.PAK
|
|
||||||
PAKME.ID .SE PAKME.ID+2
|
|
||||||
|
|
||||||
PAKME.XDOS.ID .EQ PAKME.ID
|
|
||||||
PAKME.XDOS .DA XDOS.PAK
|
|
||||||
PAKME.ID .SE PAKME.ID+2
|
|
||||||
|
|
||||||
PAKME.IRQ.ID .EQ PAKME.ID
|
|
||||||
PAKME.IRQ .DA IRQ.PAK
|
|
||||||
PAKME.ID .SE PAKME.ID+2
|
|
||||||
|
|
||||||
.DO M.RAM=1
|
|
||||||
PAKME.RAM.ID .EQ PAKME.ID
|
|
||||||
PAKME.RAM .DA RAM.PAK
|
|
||||||
PAKME.ID .SE PAKME.ID+2
|
|
||||||
|
|
||||||
PAKME.RAMX.ID .EQ PAKME.ID
|
|
||||||
PAKME.RAMX .DA RAMX.PAK
|
|
||||||
PAKME.ID .SE PAKME.ID+2
|
|
||||||
.FIN
|
|
||||||
|
|
||||||
PAKME.DCLK.ID .EQ PAKME.ID
|
|
||||||
PAKME.DCLK .DA DCLK.PAK
|
|
||||||
PAKME.ID .SE PAKME.ID+2
|
|
||||||
|
|
||||||
PAKME.NCLK.ID .EQ PAKME.ID
|
|
||||||
PAKME.NCLK .DA NCLK.PAK
|
|
||||||
PAKME.ID .SE PAKME.ID+2
|
|
||||||
|
|
||||||
PAKME.TCLK.ID .EQ PAKME.ID
|
|
||||||
PAKME.TCLK .DA TCLK.PAK
|
|
||||||
PAKME.ID .SE PAKME.ID+2
|
|
||||||
|
|
||||||
PAKME.XCLK.ID .EQ PAKME.ID
|
|
||||||
PAKME.XCLK .DA XCLK.PAK
|
|
||||||
PAKME.ID .SE PAKME.ID+2
|
|
||||||
|
|
||||||
PAKME.CCLK.ID .EQ PAKME.ID
|
|
||||||
PAKME.CCLK .DA CCLK.PAK
|
|
||||||
PAKME.ID .SE PAKME.ID+2
|
|
||||||
|
|
||||||
PAKME.SEL1.ID .EQ PAKME.ID
|
|
||||||
PAKME.SEL1 .DA SEL1.PAK
|
|
||||||
PAKME.ID .SE PAKME.ID+2
|
|
||||||
|
|
||||||
PAKME.SEL2.ID .EQ PAKME.ID
|
|
||||||
PAKME.SEL2 .DA SEL2.PAK
|
|
||||||
PAKME.ID .SE PAKME.ID+2
|
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
.AS "PAKME" TAG
|
.AS "PAKME" TAG
|
||||||
.DA $2000 BIN ORG
|
.DA $2000 BIN ORG
|
||||||
|
|
217
ProDOS.FX/PDOSTN.S..txt
Normal file
217
ProDOS.FX/PDOSTN.S..txt
Normal file
|
@ -0,0 +1,217 @@
|
||||||
|
NEW
|
||||||
|
AUTO 3,1
|
||||||
|
.LIST OFF
|
||||||
|
.OP 65816
|
||||||
|
.OR $2000
|
||||||
|
.TF PRODOS.TN,TSYS
|
||||||
|
*--------------------------------------
|
||||||
|
KVER .EQ $23 release 2.0.3
|
||||||
|
*--------------------------------------
|
||||||
|
READCAT .EQ 0 Boot Block read Catalog at $C00
|
||||||
|
ENHFILENAME .EQ 1
|
||||||
|
DIREXTENDROOT .EQ 1
|
||||||
|
LOWERCASE .EQ 1
|
||||||
|
ACL .EQ 0
|
||||||
|
LOGO .EQ 0
|
||||||
|
AUXLC .EQ 0
|
||||||
|
M.PM .EQ 0
|
||||||
|
M.RAM .EQ 0
|
||||||
|
M.SEL .EQ 0
|
||||||
|
*--------------------------------------
|
||||||
|
.INB inc/zp.i
|
||||||
|
.INB inc/io.i
|
||||||
|
.INB inc/io.iigs.i
|
||||||
|
.INB inc/io.d2.i
|
||||||
|
.INB inc/mli.i
|
||||||
|
.INB inc/mli.e.i
|
||||||
|
.INB inc/rom.ii.i
|
||||||
|
.INB inc/rom.iie.i
|
||||||
|
.INB inc/rom.iigs.i
|
||||||
|
.INB inc/arc.i
|
||||||
|
*--------------------------------------
|
||||||
|
ILDR .EQ $0800
|
||||||
|
|
||||||
|
GP .EQ $BF00
|
||||||
|
XRW .EQ $D000
|
||||||
|
CLK .EQ $D742
|
||||||
|
|
||||||
|
XDOS.PathBuf .EQ $D700
|
||||||
|
*XDOS.prefixbuf .EQ $D742+125
|
||||||
|
XDOS.FCBs .EQ $D800 8 opened files
|
||||||
|
XDOS.VCBs .EQ $D900 10 mounted vols
|
||||||
|
XDOS.BMBuf .EQ $DA00 512 byte bitmap buffer
|
||||||
|
XDOS.GBuf .EQ $DC00 general purpose 512 byte block buffer
|
||||||
|
|
||||||
|
XDOS .EQ $DE00
|
||||||
|
|
||||||
|
RAM .EQ $FF00
|
||||||
|
IRQ .EQ $FF9B
|
||||||
|
|
||||||
|
RAMX .EQ $0200
|
||||||
|
*--------------------------------------
|
||||||
|
.DUMMY
|
||||||
|
.OR $10
|
||||||
|
ZPPtr1 .BS 2
|
||||||
|
ZPPtr2 .BS 2
|
||||||
|
ZPInBufPtr .BS 2
|
||||||
|
ZPOutBufPtr .BS 2
|
||||||
|
|
||||||
|
ZPnCnt .BS 2
|
||||||
|
ZPInMask .BS 1
|
||||||
|
ZPSTRLenBits .BS 1
|
||||||
|
ZPBLOfsLBits .BS 1
|
||||||
|
ZPBLOfsHBits .BS 1
|
||||||
|
ZPBLLenBits .BS 1
|
||||||
|
ZPTOPCnt .BS 1
|
||||||
|
.ED
|
||||||
|
*--------------------------------------
|
||||||
|
.INB usr/src/prodos.fx/prodos.s.ldr
|
||||||
|
X.Unpak.XatYAX .DO AUXLC=1
|
||||||
|
.FIN
|
||||||
|
X.Unpak.XatYA sty ZPOutBufPtr
|
||||||
|
sta ZPOutBufPtr+1
|
||||||
|
lda PAKME.Table,x
|
||||||
|
sta ZPInBufPtr
|
||||||
|
lda PAKME.Table+1,x
|
||||||
|
sta ZPInBufPtr+1
|
||||||
|
.INB usr/src/shared/x.unarc.s
|
||||||
|
.DO LOGO=1
|
||||||
|
.INB usr/src/prodos.fx/prodos.s.logo
|
||||||
|
.FIN
|
||||||
|
*--------------------------------------
|
||||||
|
PAKME.Table
|
||||||
|
PAKME.ID .SE 0
|
||||||
|
|
||||||
|
PAKME.ILDR.ID .EQ PAKME.ID
|
||||||
|
PAKME.ILDR .DA ILDR.PAK
|
||||||
|
PAKME.ID .SE PAKME.ID+2
|
||||||
|
|
||||||
|
PAKME.GP.ID .EQ PAKME.ID
|
||||||
|
PAKME.GP .DA GP.PAK
|
||||||
|
PAKME.ID .SE PAKME.ID+2
|
||||||
|
|
||||||
|
PAKME.XRW.ID .EQ PAKME.ID
|
||||||
|
PAKME.XRW .DA XRW.PAK
|
||||||
|
PAKME.ID .SE PAKME.ID+2
|
||||||
|
|
||||||
|
PAKME.XDOS.ID .EQ PAKME.ID
|
||||||
|
PAKME.XDOS .DA XDOS.PAK
|
||||||
|
PAKME.ID .SE PAKME.ID+2
|
||||||
|
|
||||||
|
PAKME.IRQ.ID .EQ PAKME.ID
|
||||||
|
PAKME.IRQ .DA IRQ.PAK
|
||||||
|
PAKME.ID .SE PAKME.ID+2
|
||||||
|
|
||||||
|
.DO M.RAM=1
|
||||||
|
PAKME.RAM.ID .EQ PAKME.ID
|
||||||
|
PAKME.RAM .DA RAM.PAK
|
||||||
|
PAKME.ID .SE PAKME.ID+2
|
||||||
|
|
||||||
|
PAKME.RAMX.ID .EQ PAKME.ID
|
||||||
|
PAKME.RAMX .DA RAMX.PAK
|
||||||
|
PAKME.ID .SE PAKME.ID+2
|
||||||
|
.FIN
|
||||||
|
|
||||||
|
PAKME.DCLK.ID .EQ PAKME.ID
|
||||||
|
PAKME.DCLK .DA DCLK.PAK
|
||||||
|
PAKME.ID .SE PAKME.ID+2
|
||||||
|
|
||||||
|
PAKME.NCLK.ID .EQ PAKME.ID
|
||||||
|
PAKME.NCLK .DA NCLK.PAK
|
||||||
|
PAKME.ID .SE PAKME.ID+2
|
||||||
|
|
||||||
|
PAKME.TCLK.ID .EQ PAKME.ID
|
||||||
|
PAKME.TCLK .DA TCLK.PAK
|
||||||
|
PAKME.ID .SE PAKME.ID+2
|
||||||
|
|
||||||
|
PAKME.XCLK.ID .EQ PAKME.ID
|
||||||
|
PAKME.XCLK .DA XCLK.PAK
|
||||||
|
PAKME.ID .SE PAKME.ID+2
|
||||||
|
|
||||||
|
PAKME.CCLK.ID .EQ PAKME.ID
|
||||||
|
PAKME.CCLK .DA CCLK.PAK
|
||||||
|
PAKME.ID .SE PAKME.ID+2
|
||||||
|
|
||||||
|
.DO M.SEL=1
|
||||||
|
PAKME.SEL1.ID .EQ PAKME.ID
|
||||||
|
PAKME.SEL1 .DA SEL1.PAK
|
||||||
|
PAKME.ID .SE PAKME.ID+2
|
||||||
|
|
||||||
|
PAKME.SEL2.ID .EQ PAKME.ID
|
||||||
|
PAKME.SEL2 .DA SEL2.PAK
|
||||||
|
PAKME.ID .SE PAKME.ID+2
|
||||||
|
.FIN
|
||||||
|
*--------------------------------------
|
||||||
|
ILDR.PAK .DA ILDR.LEN
|
||||||
|
.DA 0
|
||||||
|
.INB usr/src/prodos.fx/prodos.s.ildr
|
||||||
|
|
||||||
|
GP.PAK .DA GP.LEN
|
||||||
|
.DA 0
|
||||||
|
.INB usr/src/prodos.fx/prodos.s.gp
|
||||||
|
|
||||||
|
XRW.PAK .DA XRW.LEN
|
||||||
|
.DA 0
|
||||||
|
.INB usr/src/prodos.fx/prodos.s.xrw
|
||||||
|
|
||||||
|
XDOS.PAK .DA XDOS.LEN
|
||||||
|
.DA 0
|
||||||
|
.INB usr/src/prodos.fx/prodos.s.xdos.a
|
||||||
|
.INB usr/src/prodos.fx/prodos.s.xdos.b
|
||||||
|
.INB usr/src/prodos.fx/prodos.s.xdos.c
|
||||||
|
.INB usr/src/prodos.fx/prodos.s.xdos.d
|
||||||
|
.INB usr/src/prodos.fx/prodos.s.xdos.e
|
||||||
|
.INB usr/src/prodos.fx/prodos.s.xdos.f
|
||||||
|
|
||||||
|
IRQ.PAK .DA IRQ.LEN
|
||||||
|
.DA 0
|
||||||
|
.INB usr/src/prodos.fx/prodos.s.irq
|
||||||
|
|
||||||
|
.DO M.RAM=1
|
||||||
|
RAM.PAK .DA RAM.LEN
|
||||||
|
.DA 0
|
||||||
|
.INB usr/src/prodos.fx/prodos.s.ram
|
||||||
|
|
||||||
|
RAMX.PAK .DA RAMX.LEN
|
||||||
|
.DA 0
|
||||||
|
.INB usr/src/prodos.fx/prodos.s.ramx
|
||||||
|
.FIN
|
||||||
|
|
||||||
|
DCLK.PAK .DA DCLK.LEN
|
||||||
|
.DA 0
|
||||||
|
.INB usr/src/prodos.fx/prodos.s.dclk
|
||||||
|
|
||||||
|
NCLK.PAK .DA NCLK.LEN
|
||||||
|
.DA 0
|
||||||
|
.INB usr/src/prodos.fx/prodos.s.nclk
|
||||||
|
|
||||||
|
TCLK.PAK .DA TCLK.LEN
|
||||||
|
.DA 0
|
||||||
|
.INB usr/src/prodos.fx/prodos.s.tclk
|
||||||
|
|
||||||
|
XCLK.PAK .DA XCLK.LEN
|
||||||
|
.DA 0
|
||||||
|
.INB usr/src/prodos.fx/prodos.s.xclk
|
||||||
|
|
||||||
|
CCLK.PAK .DA CCLK.LEN
|
||||||
|
.DA 0
|
||||||
|
.INB usr/src/prodos.fx/prodos.s.cclk
|
||||||
|
|
||||||
|
.DO M.SEL=1
|
||||||
|
SEL1.PAK .DA SEL1.LEN
|
||||||
|
.DA 0
|
||||||
|
.INB usr/src/prodos.fx/prodos.s.sel1
|
||||||
|
|
||||||
|
SEL2.PAK .DA SEL2.LEN
|
||||||
|
.DA 0
|
||||||
|
.INB usr/src/prodos.fx/prodos.s.sel2
|
||||||
|
.FIN
|
||||||
|
*--------------------------------------
|
||||||
|
.AS "ARCME" TAG
|
||||||
|
.DA $2000 BIN ORG
|
||||||
|
.DA #PAKME.ID/2 Chunk Count
|
||||||
|
.DA PAKME.Table Chunks
|
||||||
|
*--------------------------------------
|
||||||
|
MAN
|
||||||
|
SAVE usr/src/prodos.fx/pdostn.s
|
||||||
|
ASM
|
|
@ -243,6 +243,8 @@ LDR.IIGS sta XDOS.CortFlag
|
||||||
ldx #PAKME.CCLK.ID
|
ldx #PAKME.CCLK.ID
|
||||||
jsr LDR.SetupCLK
|
jsr LDR.SetupCLK
|
||||||
|
|
||||||
|
.DO M.SEL
|
||||||
|
|
||||||
* ldx #PAKME.SEL2.ID
|
* ldx #PAKME.SEL2.ID
|
||||||
* ldy #$1000
|
* ldy #$1000
|
||||||
* lda /$1000
|
* lda /$1000
|
||||||
|
@ -250,6 +252,8 @@ LDR.IIGS sta XDOS.CortFlag
|
||||||
|
|
||||||
ldx #PAKME.SEL2.ID
|
ldx #PAKME.SEL2.ID
|
||||||
jsr LDR.SetupSEL
|
jsr LDR.SetupSEL
|
||||||
|
|
||||||
|
.FIN
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
lda LDR.BootFlag
|
lda LDR.BootFlag
|
||||||
bne .1 branch if prodos 8 alone
|
bne .1 branch if prodos 8 alone
|
||||||
|
@ -261,9 +265,13 @@ LDR.IIGS sta XDOS.CortFlag
|
||||||
|
|
||||||
.1 bra LDR.Common
|
.1 bra LDR.Common
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
LDR.II ldx #PAKME.SEL1.ID
|
LDR.II .DO M.SEL
|
||||||
|
|
||||||
|
ldx #PAKME.SEL1.ID
|
||||||
jsr LDR.SetupSEL
|
jsr LDR.SetupSEL
|
||||||
|
|
||||||
|
.FIN
|
||||||
|
|
||||||
jsr LDR.ClkDevScan
|
jsr LDR.ClkDevScan
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
LDR.Common jsr LDR.BlkDevScan
|
LDR.Common jsr LDR.BlkDevScan
|
||||||
|
|
|
@ -338,18 +338,18 @@ XDOS.SysErr sta GP.ERROR P8 error code
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
XDOS.SysDeath tax death error code.
|
XDOS.SysDeath tax death error code.
|
||||||
sta IO.CLR80DISP disable 80 col hardware.
|
sta IO.CLR80DISP disable 80 col hardware.
|
||||||
lda IO.SETTEXT switch in text.
|
sta IO.SETTEXT switch in text.
|
||||||
lda XDOS.CortFlag is this a Cortland?
|
lda XDOS.CortFlag is this a Cortland?
|
||||||
beq .1 if not, don't use super hires switch.
|
beq .1 if not, don't use super hires switch.
|
||||||
|
|
||||||
stz IO.GS.NEWVIDEO force off super hires.
|
stz IO.GS.NEWVIDEO force off super hires.
|
||||||
|
|
||||||
.1 lda IO.CLRPAGE2 switch in text page 1.
|
.1 sta IO.CLRPAGE2 switch in text page 1.
|
||||||
|
|
||||||
ldy #deathmsg.LEN-1
|
ldy #deathmsg.LEN-1
|
||||||
|
|
||||||
.2 lda deathmsg,y
|
.2 lda deathmsg,y
|
||||||
sta $400,y 'RESTART SYSTEM-$'
|
sta $400,y 'SYS ERR-$'
|
||||||
dey
|
dey
|
||||||
bpl .2
|
bpl .2
|
||||||
|
|
||||||
|
@ -819,44 +819,57 @@ svdevn ldy namptr index to 1st byte of this entry.
|
||||||
rts end of block file manager
|
rts end of block file manager
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
XDOS.Create jsr XDOS.CheckPath check for duplicate, get free entry
|
XDOS.Create jsr XDOS.CheckPath check for duplicate, get free entry
|
||||||
bcc duperr error code may be 'file not found'
|
bcc .4 error code may be 'file not found'
|
||||||
|
|
||||||
tstfnf cmp #MLI.E.FNOTFND 'file not found' is ok
|
cmp #MLI.E.FNOTFND 'file not found' is ok
|
||||||
bne crerr1 otherwise exit with error.
|
bne .5 otherwise exit with error.
|
||||||
|
|
||||||
ldy #$07 test for tree or directory file,
|
ldy #$07 test for tree or directory file,
|
||||||
lda (ZP.A3L),y no other kinds are legal.
|
lda (ZP.A3L),y no other kinds are legal.
|
||||||
cmp #$04 is it seed, sapling or tree?
|
cmp #$04 is it seed, sapling or tree?
|
||||||
bcc tstdspc branch if it is
|
bcc .1 branch if it is
|
||||||
|
|
||||||
cmp #$0D
|
cmp #$0D
|
||||||
bne ctyperr report type error if not directory.
|
bne .3 report type error if not directory.
|
||||||
|
|
||||||
tstdspc lda GP.DEVNUM make sure destination device
|
.1 lda GP.DEVNUM make sure destination device
|
||||||
jsr XDOS.TestWPA is not write protected.
|
jsr XDOS.TestWPA is not write protected.
|
||||||
bcs H351D
|
bcs H351D
|
||||||
|
|
||||||
lda nofree is there space in directory to
|
lda nofree is there space in directory to
|
||||||
beq xtndir add this file? branch if not
|
|
||||||
jmp creat1 otherwise, go create file.
|
|
||||||
|
|
||||||
xtndir lda own_blk before extending directory,
|
.DO DIREXTENDROOT=1
|
||||||
|
|
||||||
|
beq XDOS.DirExtend
|
||||||
|
bne XDOS.Create1
|
||||||
|
|
||||||
|
.ELSE
|
||||||
|
|
||||||
|
beq .2 add this file? branch if not
|
||||||
|
|
||||||
|
jmp XDOS.Create1 otherwise, go create file.
|
||||||
|
|
||||||
|
.2 lda own_blk before extending directory,
|
||||||
ora own_blk+1 make sure it's a subdirectory.
|
ora own_blk+1 make sure it's a subdirectory.
|
||||||
bne H352A
|
bne XDOS.DirExtend
|
||||||
|
|
||||||
lda #MLI.E.DIRFULL otherwise, directory full error
|
lda #MLI.E.DIRFULL otherwise, directory full error
|
||||||
.HS 2C BIT ABS
|
.HS 2C BIT ABS
|
||||||
ctyperr lda #MLI.E.UNSUPST filetype error
|
|
||||||
.HS 2C BIT ABS
|
|
||||||
duperr lda #MLI.E.DUPFILE name already exists
|
|
||||||
crerr1 sec
|
|
||||||
H351D rts
|
|
||||||
|
|
||||||
H352A lda ZP.BLKNUM preserve disk address of current (last)
|
.FIN
|
||||||
|
|
||||||
|
.3 lda #MLI.E.UNSUPST filetype error
|
||||||
|
.HS 2C BIT ABS
|
||||||
|
.4 lda #MLI.E.DUPFILE name already exists
|
||||||
|
|
||||||
|
.5 sec
|
||||||
|
H351D rts
|
||||||
|
*--------------------------------------
|
||||||
|
XDOS.DirExtend lda ZP.BLKNUM preserve disk address of current (last)
|
||||||
pha directory link, before allocating an
|
pha directory link, before allocating an
|
||||||
lda ZP.BLKNUM+1 extended block.
|
lda ZP.BLKNUM+1 extended block.
|
||||||
pha
|
pha
|
||||||
jsr alc1blk allocate a block for extending directory
|
jsr XDOS.GetFreeBlk allocate a block for extending directory
|
||||||
plx
|
plx
|
||||||
stx ZP.BLKNUM+1 restore block addr of dir info in XDOS.GBuf
|
stx ZP.BLKNUM+1 restore block addr of dir info in XDOS.GBuf
|
||||||
plx
|
plx
|
||||||
|
@ -874,25 +887,16 @@ H352A lda ZP.BLKNUM preserve disk address of current (last)
|
||||||
|
|
||||||
ldx #$01
|
ldx #$01
|
||||||
|
|
||||||
swpbloks lda ZP.BLKNUM,x prepare new directory block
|
.1 lda ZP.BLKNUM,x prepare new directory block
|
||||||
sta XDOS.GBuf,x using current block as back link
|
sta XDOS.GBuf,x using current block as back link
|
||||||
lda XDOS.GBuf+2,x
|
lda XDOS.GBuf+2,x
|
||||||
sta ZP.BLKNUM,x and save new block as next to be written
|
sta ZP.BLKNUM,x and save new block as next to be written
|
||||||
dex
|
dex
|
||||||
bpl swpbloks
|
bpl .1
|
||||||
|
|
||||||
inx x = 0
|
jsr XDOS.ZeroGBuf
|
||||||
|
|
||||||
clrdir stz XDOS.GBuf+2,x
|
|
||||||
stz XDOS.GBuf+$100,x
|
|
||||||
inx
|
|
||||||
bne clrdir
|
|
||||||
|
|
||||||
.DO LOWERCASE=1
|
|
||||||
jsr XDOS.WriteGBufDir
|
|
||||||
.ELSE
|
|
||||||
jsr XDOS.WriteGBuf write prepared directory extension.
|
jsr XDOS.WriteGBuf write prepared directory extension.
|
||||||
.FIN
|
|
||||||
bcs H351D if error
|
bcs H351D if error
|
||||||
|
|
||||||
lda own_blk
|
lda own_blk
|
||||||
|
@ -908,23 +912,23 @@ clrdir stz XDOS.GBuf+2,x
|
||||||
|
|
||||||
ldx own_ent and calc entry address.
|
ldx own_ent and calc entry address.
|
||||||
|
|
||||||
ocalc dex has entry address been calculated?
|
.3 dex has entry address been calculated?
|
||||||
beq H3584 if yes.
|
beq .4 if yes.
|
||||||
|
|
||||||
lda own_len next entry address
|
lda own_len next entry address
|
||||||
jsr XDOS.ZPT.NextA
|
jsr XDOS.ZPT.NextA
|
||||||
bra ocalc
|
bra .3
|
||||||
|
|
||||||
H3584 ldy #$13 index to block count
|
.4 ldy #$13 index to block count
|
||||||
clc
|
clc
|
||||||
|
|
||||||
H3588 lda (zpt),y
|
.5 lda (zpt),y
|
||||||
adc dinctbl-$13,y add 1 to block count and
|
adc dinctbl-$13,y add 1 to block count and
|
||||||
sta (zpt),y
|
sta (zpt),y
|
||||||
iny
|
iny
|
||||||
tya $200 to the directory's eof.
|
tya $200 to the directory's eof.
|
||||||
eor #$18 done with usage/eof update?
|
eor #$18 done with usage/eof update?
|
||||||
bne H3588 branch if not.
|
bne .5 branch if not.
|
||||||
|
|
||||||
.DO LOWERCASE=1
|
.DO LOWERCASE=1
|
||||||
jsr XDOS.WriteGBufDir
|
jsr XDOS.WriteGBufDir
|
||||||
|
@ -934,44 +938,40 @@ H3588 lda (zpt),y
|
||||||
bcs crerr2
|
bcs crerr2
|
||||||
|
|
||||||
jmp XDOS.Create
|
jmp XDOS.Create
|
||||||
|
|
||||||
crerr2 rts return and report errors
|
crerr2 rts return and report errors
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
creat1 ldx #$00 zero out XDOS.GBuf
|
XDOS.Create1 jsr XDOS.ZeroGBuf zero out XDOS.GBuf
|
||||||
|
|
||||||
H35A0 stz XDOS.GBuf,x
|
|
||||||
stz XDOS.GBuf+$100,x and data block of file.
|
|
||||||
inx
|
|
||||||
bne H35A0
|
|
||||||
|
|
||||||
ldy #$0B move user specified date/time
|
ldy #$0B move user specified date/time
|
||||||
|
|
||||||
cmvtime lda (ZP.A3L),y to directory.
|
.1 lda (ZP.A3L),y to directory.
|
||||||
sta d_filid,y
|
sta d_filid,y
|
||||||
txa if all 4 bytes of date/time = 0
|
txa if all 4 bytes of date/time = 0
|
||||||
ora (ZP.A3L),y then use built-in date/time.
|
ora (ZP.A3L),y then use built-in date/time.
|
||||||
tax
|
tax
|
||||||
dey
|
dey
|
||||||
cpy #$07
|
cpy #$07
|
||||||
bne cmvtime
|
bne .1
|
||||||
|
|
||||||
txa does user want default time?
|
txa does user want default time?
|
||||||
bne cmvname if not.
|
bne .3 if not.
|
||||||
|
|
||||||
ldx #$03
|
ldx #$03
|
||||||
|
|
||||||
mvdftime lda GP.DATE,x move current default date/time
|
.2 lda GP.DATE,x move current default date/time
|
||||||
sta d_credt,x
|
sta d_credt,x
|
||||||
dex
|
dex
|
||||||
bpl mvdftime
|
bpl .2
|
||||||
|
|
||||||
cmvname lda (ZP.A3L),y y = index to file kind.
|
.3 lda (ZP.A3L),y y = index to file kind.
|
||||||
cmp #$04
|
cmp #$04
|
||||||
lda #$10 assume tree type
|
lda #$10 assume tree type
|
||||||
bcc csvfkind
|
bcc .4
|
||||||
|
|
||||||
lda #$D0 it's directory.
|
lda #$D0 it's directory.
|
||||||
|
|
||||||
csvfkind ldx namptr index to local name of pathname.
|
.4 ldx namptr index to local name of pathname.
|
||||||
ora XDOS.PathBuf,x combine file kind with name length.
|
ora XDOS.PathBuf,x combine file kind with name length.
|
||||||
sta d_stor sos calls this 'storage type'.
|
sta d_stor sos calls this 'storage type'.
|
||||||
and #$0F strip back to name length
|
and #$0F strip back to name length
|
||||||
|
@ -980,12 +980,12 @@ csvfkind ldx namptr index to local name of pathname.
|
||||||
adc namptr calc end of name
|
adc namptr calc end of name
|
||||||
tax
|
tax
|
||||||
|
|
||||||
crname lda XDOS.PathBuf,x move local name as filename
|
.5 lda XDOS.PathBuf,x move local name as filename
|
||||||
sta d_stor,y
|
sta d_stor,y
|
||||||
|
|
||||||
dex
|
dex
|
||||||
dey
|
dey
|
||||||
bne crname
|
bne .5
|
||||||
|
|
||||||
ldy #$03 index to 'access' parameter
|
ldy #$03 index to 'access' parameter
|
||||||
lda (ZP.A3L),y
|
lda (ZP.A3L),y
|
||||||
|
@ -994,11 +994,11 @@ crname lda XDOS.PathBuf,x move local name as filename
|
||||||
lda (ZP.A3L),y
|
lda (ZP.A3L),y
|
||||||
sta d_filid
|
sta d_filid
|
||||||
|
|
||||||
cmvauxid iny move auxillary identification bytes
|
.6 iny move auxillary identification bytes
|
||||||
lda (ZP.A3L),y
|
lda (ZP.A3L),y
|
||||||
sta d_auxid-5,y
|
sta d_auxid-5,y
|
||||||
cpy #$06
|
cpy #$06
|
||||||
bne cmvauxid
|
bne .6
|
||||||
|
|
||||||
.DO LOWERCASE=0
|
.DO LOWERCASE=0
|
||||||
lda xdosver save current xdos version #
|
lda xdosver save current xdos version #
|
||||||
|
@ -1019,9 +1019,9 @@ cmvauxid iny move auxillary identification bytes
|
||||||
lda d_stor storage type.
|
lda d_stor storage type.
|
||||||
and #$E0 is it a directory?
|
and #$E0 is it a directory?
|
||||||
beq cralcblk branch if seed file.
|
beq cralcblk branch if seed file.
|
||||||
|
*--------------------------------------
|
||||||
* Create Dir First Block
|
* Create Dir First Block
|
||||||
|
*--------------------------------------
|
||||||
ldx #$1E move header to data block
|
ldx #$1E move header to data block
|
||||||
|
|
||||||
cmvheadr lda d_stor,x
|
cmvheadr lda d_stor,x
|
||||||
|
@ -1072,7 +1072,7 @@ cmvparnt lda d_entblk,x
|
||||||
jsr XDOS.PackGBuf
|
jsr XDOS.PackGBuf
|
||||||
.FIN
|
.FIN
|
||||||
|
|
||||||
cralcblk jsr alc1blk get address of file's data block
|
cralcblk jsr XDOS.GetFreeBlk get address of file's data block
|
||||||
bcs crerr3
|
bcs crerr3
|
||||||
|
|
||||||
sta d_frst
|
sta d_frst
|
||||||
|
@ -1090,7 +1090,16 @@ cralcblk jsr alc1blk get address of file's data block
|
||||||
credone jsr drevise go revise directories with new file
|
credone jsr drevise go revise directories with new file
|
||||||
bcs crerr3
|
bcs crerr3
|
||||||
|
|
||||||
jmp upbmap lastly, update volume bitmap
|
jmp XDOS.FlushBM lastly, update volume bitmap
|
||||||
|
*--------------------------------------
|
||||||
|
XDOS.ZeroGBuf ldx #0
|
||||||
|
|
||||||
|
.1 stz XDOS.GBuf,x
|
||||||
|
stz XDOS.GBuf+$100,x
|
||||||
|
inx
|
||||||
|
bne .1
|
||||||
|
|
||||||
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
MAN
|
MAN
|
||||||
SAVE usr/src/prodos.fx/prodos.s.xdos.a
|
SAVE usr/src/prodos.fx/prodos.s.xdos.a
|
||||||
|
|
|
@ -272,20 +272,23 @@ L37FC ldx XDOS.GBuf+3 acc has value for block# (low).
|
||||||
rts return error in acc.
|
rts return error in acc.
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
errfnf lda nofree was any free entry found?
|
errfnf lda nofree was any free entry found?
|
||||||
bne fnf0
|
bne .2
|
||||||
lda XDOS.GBuf+2 test link
|
|
||||||
bne L3814
|
|
||||||
cmp XDOS.GBuf+3 if both are 0 then give up.
|
|
||||||
beq fnf0 report 'not found'.
|
|
||||||
|
|
||||||
L3814 sta d_entblk
|
lda XDOS.GBuf+2 test link
|
||||||
|
bne .1
|
||||||
|
|
||||||
|
cmp XDOS.GBuf+3 if both are 0 then give up.
|
||||||
|
beq .2 report 'not found'.
|
||||||
|
|
||||||
|
.1 sta d_entblk
|
||||||
lda XDOS.GBuf+3
|
lda XDOS.GBuf+3
|
||||||
sta d_entblk+1 assume 1st entry of next block
|
sta d_entblk+1 assume 1st entry of next block
|
||||||
lda #$01 is free for use.
|
lda #$01 is free for use.
|
||||||
sta d_entnum mark as valid (for create)
|
sta d_entnum mark as valid (for create)
|
||||||
sta nofree
|
sta nofree
|
||||||
|
|
||||||
fnf0 jsr nxtpnam1 'file not found' or 'path not found'?
|
.2 jsr nxtpnam1 'file not found' or 'path not found'?
|
||||||
|
|
||||||
errpath1 beq .1 if non-zero then 'path not found'
|
errpath1 beq .1 if non-zero then 'path not found'
|
||||||
|
|
||||||
lda #MLI.E.PNOTFND path not found
|
lda #MLI.E.PNOTFND path not found
|
||||||
|
@ -866,7 +869,7 @@ tkfrecnt jsr cntbms get # of bitmaps
|
||||||
lda #$FF mark 'first free' temp as unknown
|
lda #$FF mark 'first free' temp as unknown
|
||||||
sta nofree
|
sta nofree
|
||||||
|
|
||||||
jsr upbmap update volume bitmap.
|
jsr XDOS.FlushBM update volume bitmap.
|
||||||
bcs L3BC1 if error.
|
bcs L3BC1 if error.
|
||||||
|
|
||||||
ldx XDOS.VCBPtr get address of 1st bitmap
|
ldx XDOS.VCBPtr get address of 1st bitmap
|
||||||
|
|
|
@ -31,14 +31,14 @@ XDOS.DeallocAX stx bmcnt high address of block.
|
||||||
sta bmptr save pointer.
|
sta bmptr save pointer.
|
||||||
lsr bmcnt transfer bit which is page of bitmap
|
lsr bmcnt transfer bit which is page of bitmap
|
||||||
rol half
|
rol half
|
||||||
jsr fndbmap make sure device is correct one.
|
jsr XDOS.GetBM make sure device is correct one.
|
||||||
bcs L3C8B error.
|
bcs L3C8B error.
|
||||||
|
|
||||||
lda bmacmap current map.
|
lda bmacmap current map.
|
||||||
cmp bmcnt is in-core bitmap the correct one ?
|
cmp bmcnt is in-core bitmap the correct one ?
|
||||||
beq L3C64 branch if yes.
|
beq L3C64 branch if yes.
|
||||||
|
|
||||||
jsr upbmap put current map away.
|
jsr XDOS.FlushBM put current map away.
|
||||||
bcs L3C8B error.
|
bcs L3C8B error.
|
||||||
|
|
||||||
lda bmcnt get map #
|
lda bmcnt get map #
|
||||||
|
@ -76,7 +76,7 @@ L3C8C lda #MLI.E.BADFS bitmap block # impossible.
|
||||||
sec bitmap disk address wrong
|
sec bitmap disk address wrong
|
||||||
rts (maybe data masquerading as indx block)
|
rts (maybe data masquerading as indx block)
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
alc1blk jsr fndbmap get address of bitmap.
|
XDOS.GetFreeBlk jsr XDOS.GetBM get address of bitmap.
|
||||||
bcs L3CB8 error.
|
bcs L3CB8 error.
|
||||||
|
|
||||||
L3C95 ldy #$00 begin search at start of bitmap block.
|
L3C95 ldy #$00 begin search at start of bitmap block.
|
||||||
|
@ -148,11 +148,14 @@ L3CF7 lda #$80 indicate map is modified.
|
||||||
ldx XDOS.VCBPtr subtract 1 from total free vcb blocks
|
ldx XDOS.VCBPtr subtract 1 from total free vcb blocks
|
||||||
lda XDOS.VCBs+VCB.FBLK,x to account for newly allocated block.
|
lda XDOS.VCBs+VCB.FBLK,x to account for newly allocated block.
|
||||||
bne .7
|
bne .7
|
||||||
|
|
||||||
dec XDOS.VCBs+VCB.FBLK+1,x
|
dec XDOS.VCBs+VCB.FBLK+1,x
|
||||||
|
|
||||||
.7 dec XDOS.VCBs+VCB.FBLK,x
|
.7 dec XDOS.VCBs+VCB.FBLK,x
|
||||||
|
|
||||||
lda scrtch return address in y,a of newly
|
lda scrtch return address in y,a of newly
|
||||||
ldy scrtch+1 allocated block.
|
ldy scrtch+1 allocated block.
|
||||||
|
|
||||||
clc no errors.
|
clc no errors.
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
|
@ -166,14 +169,14 @@ XDOS.NextBM ldx XDOS.VCBPtr inc to next bitmap, but 1st make sure there is
|
||||||
beq L3D60 if no more to look at.
|
beq L3D60 if no more to look at.
|
||||||
|
|
||||||
inc XDOS.VCBs+VCB.BMAPIDX,x add 1 to current map
|
inc XDOS.VCBs+VCB.BMAPIDX,x add 1 to current map
|
||||||
jsr upbmap
|
jsr XDOS.FlushBM
|
||||||
|
|
||||||
fndbmap ldy XDOS.VCBPtr
|
XDOS.GetBM ldy XDOS.VCBPtr
|
||||||
lda XDOS.VCBs+VCB.DEV,y get device #.
|
lda XDOS.VCBs+VCB.DEV,y get device #.
|
||||||
cmp bmadev does this map match this device ?
|
cmp bmadev does this map match this device ?
|
||||||
beq L3D4A yes.
|
beq L3D4A yes.
|
||||||
|
|
||||||
jsr upbmap otherwise, save other volume's bitmap
|
jsr XDOS.FlushBM otherwise, save other volume's bitmap
|
||||||
bcs L3D5F
|
bcs L3D5F
|
||||||
|
|
||||||
ldy XDOS.VCBPtr
|
ldy XDOS.VCBPtr
|
||||||
|
@ -198,7 +201,7 @@ L3D60 lda #MLI.E.VOLFULL request can't be filled
|
||||||
sec error
|
sec error
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
upbmap clc
|
XDOS.FlushBM clc
|
||||||
lda bmastat is current map modified ?
|
lda bmastat is current map modified ?
|
||||||
bpl .9 no.
|
bpl .9 no.
|
||||||
|
|
||||||
|
@ -269,7 +272,7 @@ XDOS.ReadGBuf lda #$01 read command.
|
||||||
|
|
||||||
XDOS.WriteGBuf lda #$02 write command
|
XDOS.WriteGBuf lda #$02 write command
|
||||||
|
|
||||||
sta ZP.A4L pass to device handler.
|
sta ZP.CMDNUM pass to device handler.
|
||||||
lda /XDOS.GBuf general buffer.
|
lda /XDOS.GBuf general buffer.
|
||||||
|
|
||||||
XDOS.RWBlock sta ZP.BUFPTR+1 buffer high.
|
XDOS.RWBlock sta ZP.BUFPTR+1 buffer high.
|
||||||
|
@ -703,7 +706,7 @@ L3FF2 rts
|
||||||
|
|
||||||
*L400C rts
|
*L400C rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
wfcbfst jsr upbmap update the bitmap and write file's 1st block.
|
wfcbfst jsr XDOS.FlushBM update the bitmap and write file's 1st block.
|
||||||
|
|
||||||
ldx #$02 write command
|
ldx #$02 write command
|
||||||
.HS 2C BIT ABS
|
.HS 2C BIT ABS
|
||||||
|
@ -760,7 +763,7 @@ XDOS.WriteDBLK ldx #ZP.DataPtr point at memory address with x and
|
||||||
lda #$BF mark data status as current.
|
lda #$BF mark data status as current.
|
||||||
bra XDOS.ResetFCBStatus
|
bra XDOS.ResetFCBStatus
|
||||||
|
|
||||||
XDOS.WriteIBLK jsr upbmap update bitmap.
|
XDOS.WriteIBLK jsr XDOS.FlushBM update bitmap.
|
||||||
|
|
||||||
ldx #zpt point to address of index buffer
|
ldx #zpt point to address of index buffer
|
||||||
lda #FCB.IBLK and block address of that index block.
|
lda #FCB.IBLK and block address of that index block.
|
||||||
|
|
|
@ -647,7 +647,7 @@ swapdown jsr alcwblk make current seed into a sapling, allocate a block befo
|
||||||
* clc no error
|
* clc no error
|
||||||
.9 rts
|
.9 rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
alcwblk jsr alc1blk
|
alcwblk jsr XDOS.GetFreeBlk
|
||||||
bcs .9
|
bcs .9
|
||||||
|
|
||||||
lda #FCB.F.UMOD
|
lda #FCB.F.UMOD
|
||||||
|
@ -669,9 +669,9 @@ XDOS.TestWP jsr XDOS.GetFCBStatus check for 'never been modified' condition
|
||||||
|
|
||||||
XDOS.TestWPA sta ZP.UNITNUM make the device status call
|
XDOS.TestWPA sta ZP.UNITNUM make the device status call
|
||||||
|
|
||||||
lda ZP.BLKNUM+1
|
lda ZP.BLKNUM
|
||||||
pha
|
pha
|
||||||
lda ZP.BLKNUM save the current block values
|
lda ZP.BLKNUM+1 save the current block values
|
||||||
pha
|
pha
|
||||||
stz ZP.CMDNUM
|
stz ZP.CMDNUM
|
||||||
stz ZP.BLKNUM zero the block #
|
stz ZP.BLKNUM zero the block #
|
||||||
|
|
|
@ -208,7 +208,7 @@ L4780 ldx fcbptr
|
||||||
cmp bmadev is it in same as current file ?
|
cmp bmadev is it in same as current file ?
|
||||||
bne L47B2 yes, put it on the disk if necessary.
|
bne L47B2 yes, put it on the disk if necessary.
|
||||||
|
|
||||||
jsr upbmap go put it away.
|
jsr XDOS.FlushBM go put it away.
|
||||||
bcs glberr flush error
|
bcs glberr flush error
|
||||||
|
|
||||||
L47B2 clc
|
L47B2 clc
|
||||||
|
@ -588,12 +588,24 @@ XDOS.GetFileInfoEx
|
||||||
ldx #7
|
ldx #7
|
||||||
ldy #S.FIEX.ACL+7+3
|
ldy #S.FIEX.ACL+7+3
|
||||||
|
|
||||||
|
.DO ACL=1
|
||||||
|
|
||||||
.3 lda h_acl,x
|
.3 lda h_acl,x
|
||||||
sta (ZP.A3L),y
|
sta (ZP.A3L),y
|
||||||
dey
|
dey
|
||||||
dex
|
dex
|
||||||
bpl .3
|
bpl .3
|
||||||
|
|
||||||
|
.ELSE
|
||||||
|
|
||||||
|
lda #0
|
||||||
|
.3 sta (ZP.A3L),y
|
||||||
|
dey
|
||||||
|
dex
|
||||||
|
bpl .3
|
||||||
|
|
||||||
|
.FIN
|
||||||
|
|
||||||
* clc
|
* clc
|
||||||
.9
|
.9
|
||||||
XDOS.GetFileInfoEx.RTS
|
XDOS.GetFileInfoEx.RTS
|
||||||
|
@ -902,7 +914,7 @@ L4B85 ldx firstbh
|
||||||
jsr XDOS.DeallocAX
|
jsr XDOS.DeallocAX
|
||||||
bcs L4B93
|
bcs L4B93
|
||||||
|
|
||||||
jsr upbmap
|
jsr XDOS.FlushBM
|
||||||
|
|
||||||
L4B93 pha save possible error code.
|
L4B93 pha save possible error code.
|
||||||
lda #$00 update directory to free entry space.
|
lda #$00 update directory to free entry space.
|
||||||
|
@ -942,7 +954,7 @@ L4BCD bcc L4B85 branch widened (always taken)
|
||||||
L4BCF cmp #$D0 is this a directory file ?
|
L4BCF cmp #$D0 is this a directory file ?
|
||||||
bne L4C1B no, file incompatible.
|
bne L4C1B no, file incompatible.
|
||||||
|
|
||||||
jsr fndbmap make sure a buffer available for bitmap
|
jsr XDOS.GetBM make sure a buffer available for bitmap
|
||||||
bcs L4C1A if error.
|
bcs L4C1A if error.
|
||||||
|
|
||||||
jsr XDOS.ReadGBuf_d_frst read 1st block of directory into XDOS.GBuf
|
jsr XDOS.ReadGBuf_d_frst read 1st block of directory into XDOS.GBuf
|
||||||
|
|
|
@ -483,10 +483,12 @@ XDOS.IsValidFirstChar.SEC
|
||||||
sec
|
sec
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
* move 3 pages of dispatcher from 'displc2' to 'dispadr'
|
* move 3 pages of dispatcher from LC Bank2 $D100 to $1000
|
||||||
* this move routine must be resident above $E000 at all times
|
* this move routine must be resident above $E000 at all times
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
XDOS.CallDisp lda IO.RRAMWRAMBNK2 read/write RAM bank 2
|
XDOS.CallDisp .DO M.SEL
|
||||||
|
|
||||||
|
lda IO.RRAMWRAMBNK2 read/write RAM bank 2
|
||||||
lda IO.RRAMWRAMBNK2
|
lda IO.RRAMWRAMBNK2
|
||||||
|
|
||||||
stz ZP.A1L
|
stz ZP.A1L
|
||||||
|
@ -530,6 +532,17 @@ XDOS.CallDisp lda IO.RRAMWRAMBNK2 read/write RAM bank 2
|
||||||
jmp $1000
|
jmp $1000
|
||||||
|
|
||||||
.FIN
|
.FIN
|
||||||
|
|
||||||
|
.ELSE
|
||||||
|
|
||||||
|
inc ROM.PWREDUP
|
||||||
|
lda /ROM.RESETV-1
|
||||||
|
pha
|
||||||
|
lda #ROM.RESETV-1
|
||||||
|
pha
|
||||||
|
jmp IRQ.ToRomRTS
|
||||||
|
|
||||||
|
.FIN
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
XDOS.SPREMAP ldx #$03 assume 3 parameters.
|
XDOS.SPREMAP ldx #$03 assume 3 parameters.
|
||||||
lda ZP.CMDNUM
|
lda ZP.CMDNUM
|
||||||
|
@ -879,6 +892,7 @@ d_dev .HS 00 device number of this directory entry
|
||||||
d_head .HS 0000 address of <sub> directory header
|
d_head .HS 0000 address of <sub> directory header
|
||||||
d_entblk .HS 0000 address of block which contains entry
|
d_entblk .HS 0000 address of block which contains entry
|
||||||
d_entnum .HS 00 entry number within block
|
d_entnum .HS 00 entry number within block
|
||||||
|
*--------------------------------------
|
||||||
d_stor .BS 16 file name
|
d_stor .BS 16 file name
|
||||||
d_filid .HS 00 user's identification byte
|
d_filid .HS 00 user's identification byte
|
||||||
d_frst .HS 0000 first block of file
|
d_frst .HS 0000 first block of file
|
||||||
|
|
|
@ -5,16 +5,18 @@ NEW
|
||||||
.OR $2000
|
.OR $2000
|
||||||
.TF PRODOS,TSYS
|
.TF PRODOS,TSYS
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
KVER .EQ 23 release 2.0.3
|
KVER .EQ $23 release 2.0.3
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
READCAT .EQ 1 Boot Block read Catalog at $C00
|
READCAT .EQ 1 Boot Block read Catalog at $C00
|
||||||
ENHFILENAME .EQ 1
|
ENHFILENAME .EQ 1
|
||||||
|
DIREXTENDROOT .EQ 1
|
||||||
LOWERCASE .EQ 1
|
LOWERCASE .EQ 1
|
||||||
ACL .EQ 1
|
ACL .EQ 1
|
||||||
LOGO .EQ 1
|
LOGO .EQ 1
|
||||||
AUXLC .EQ 0
|
AUXLC .EQ 0
|
||||||
M.PM .EQ 1
|
M.PM .EQ 1
|
||||||
M.RAM .EQ 1
|
M.RAM .EQ 1
|
||||||
|
M.SEL .EQ 1
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
.INB inc/zp.i
|
.INB inc/zp.i
|
||||||
.INB inc/io.i
|
.INB inc/io.i
|
||||||
|
@ -74,6 +76,67 @@ X.Unpak.XatYA sty ZPOutBufPtr
|
||||||
.INB usr/src/prodos.fx/prodos.s.logo
|
.INB usr/src/prodos.fx/prodos.s.logo
|
||||||
.FIN
|
.FIN
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
|
PAKME.Table
|
||||||
|
PAKME.ID .SE 0
|
||||||
|
|
||||||
|
PAKME.ILDR.ID .EQ PAKME.ID
|
||||||
|
PAKME.ILDR .DA ILDR.PAK
|
||||||
|
PAKME.ID .SE PAKME.ID+2
|
||||||
|
|
||||||
|
PAKME.GP.ID .EQ PAKME.ID
|
||||||
|
PAKME.GP .DA GP.PAK
|
||||||
|
PAKME.ID .SE PAKME.ID+2
|
||||||
|
|
||||||
|
PAKME.XRW.ID .EQ PAKME.ID
|
||||||
|
PAKME.XRW .DA XRW.PAK
|
||||||
|
PAKME.ID .SE PAKME.ID+2
|
||||||
|
|
||||||
|
PAKME.XDOS.ID .EQ PAKME.ID
|
||||||
|
PAKME.XDOS .DA XDOS.PAK
|
||||||
|
PAKME.ID .SE PAKME.ID+2
|
||||||
|
|
||||||
|
PAKME.IRQ.ID .EQ PAKME.ID
|
||||||
|
PAKME.IRQ .DA IRQ.PAK
|
||||||
|
PAKME.ID .SE PAKME.ID+2
|
||||||
|
|
||||||
|
.DO M.RAM=1
|
||||||
|
PAKME.RAM.ID .EQ PAKME.ID
|
||||||
|
PAKME.RAM .DA RAM.PAK
|
||||||
|
PAKME.ID .SE PAKME.ID+2
|
||||||
|
|
||||||
|
PAKME.RAMX.ID .EQ PAKME.ID
|
||||||
|
PAKME.RAMX .DA RAMX.PAK
|
||||||
|
PAKME.ID .SE PAKME.ID+2
|
||||||
|
.FIN
|
||||||
|
|
||||||
|
PAKME.DCLK.ID .EQ PAKME.ID
|
||||||
|
PAKME.DCLK .DA DCLK.PAK
|
||||||
|
PAKME.ID .SE PAKME.ID+2
|
||||||
|
|
||||||
|
PAKME.NCLK.ID .EQ PAKME.ID
|
||||||
|
PAKME.NCLK .DA NCLK.PAK
|
||||||
|
PAKME.ID .SE PAKME.ID+2
|
||||||
|
|
||||||
|
PAKME.TCLK.ID .EQ PAKME.ID
|
||||||
|
PAKME.TCLK .DA TCLK.PAK
|
||||||
|
PAKME.ID .SE PAKME.ID+2
|
||||||
|
|
||||||
|
PAKME.XCLK.ID .EQ PAKME.ID
|
||||||
|
PAKME.XCLK .DA XCLK.PAK
|
||||||
|
PAKME.ID .SE PAKME.ID+2
|
||||||
|
|
||||||
|
PAKME.CCLK.ID .EQ PAKME.ID
|
||||||
|
PAKME.CCLK .DA CCLK.PAK
|
||||||
|
PAKME.ID .SE PAKME.ID+2
|
||||||
|
|
||||||
|
PAKME.SEL1.ID .EQ PAKME.ID
|
||||||
|
PAKME.SEL1 .DA SEL1.PAK
|
||||||
|
PAKME.ID .SE PAKME.ID+2
|
||||||
|
|
||||||
|
PAKME.SEL2.ID .EQ PAKME.ID
|
||||||
|
PAKME.SEL2 .DA SEL2.PAK
|
||||||
|
PAKME.ID .SE PAKME.ID+2
|
||||||
|
*--------------------------------------
|
||||||
ILDR.PAK .DA #0
|
ILDR.PAK .DA #0
|
||||||
.DA ILDR.LEN
|
.DA ILDR.LEN
|
||||||
.INB usr/src/prodos.fx/prodos.s.ildr
|
.INB usr/src/prodos.fx/prodos.s.ildr
|
||||||
|
@ -136,67 +199,6 @@ SEL1.PAK .DA #0
|
||||||
SEL2.PAK .DA #0
|
SEL2.PAK .DA #0
|
||||||
.DA SEL2.LEN
|
.DA SEL2.LEN
|
||||||
.INB usr/src/prodos.fx/prodos.s.sel2
|
.INB usr/src/prodos.fx/prodos.s.sel2
|
||||||
*--------------------------------------
|
|
||||||
PAKME.Table
|
|
||||||
PAKME.ID .SE 0
|
|
||||||
|
|
||||||
PAKME.ILDR.ID .EQ PAKME.ID
|
|
||||||
PAKME.ILDR .DA ILDR.PAK
|
|
||||||
PAKME.ID .SE PAKME.ID+2
|
|
||||||
|
|
||||||
PAKME.GP.ID .EQ PAKME.ID
|
|
||||||
PAKME.GP .DA GP.PAK
|
|
||||||
PAKME.ID .SE PAKME.ID+2
|
|
||||||
|
|
||||||
PAKME.XRW.ID .EQ PAKME.ID
|
|
||||||
PAKME.XRW .DA XRW.PAK
|
|
||||||
PAKME.ID .SE PAKME.ID+2
|
|
||||||
|
|
||||||
PAKME.XDOS.ID .EQ PAKME.ID
|
|
||||||
PAKME.XDOS .DA XDOS.PAK
|
|
||||||
PAKME.ID .SE PAKME.ID+2
|
|
||||||
|
|
||||||
PAKME.IRQ.ID .EQ PAKME.ID
|
|
||||||
PAKME.IRQ .DA IRQ.PAK
|
|
||||||
PAKME.ID .SE PAKME.ID+2
|
|
||||||
|
|
||||||
.DO M.RAM=1
|
|
||||||
PAKME.RAM.ID .EQ PAKME.ID
|
|
||||||
PAKME.RAM .DA RAM.PAK
|
|
||||||
PAKME.ID .SE PAKME.ID+2
|
|
||||||
|
|
||||||
PAKME.RAMX.ID .EQ PAKME.ID
|
|
||||||
PAKME.RAMX .DA RAMX.PAK
|
|
||||||
PAKME.ID .SE PAKME.ID+2
|
|
||||||
.FIN
|
|
||||||
|
|
||||||
PAKME.DCLK.ID .EQ PAKME.ID
|
|
||||||
PAKME.DCLK .DA DCLK.PAK
|
|
||||||
PAKME.ID .SE PAKME.ID+2
|
|
||||||
|
|
||||||
PAKME.NCLK.ID .EQ PAKME.ID
|
|
||||||
PAKME.NCLK .DA NCLK.PAK
|
|
||||||
PAKME.ID .SE PAKME.ID+2
|
|
||||||
|
|
||||||
PAKME.TCLK.ID .EQ PAKME.ID
|
|
||||||
PAKME.TCLK .DA TCLK.PAK
|
|
||||||
PAKME.ID .SE PAKME.ID+2
|
|
||||||
|
|
||||||
PAKME.XCLK.ID .EQ PAKME.ID
|
|
||||||
PAKME.XCLK .DA XCLK.PAK
|
|
||||||
PAKME.ID .SE PAKME.ID+2
|
|
||||||
|
|
||||||
PAKME.CCLK.ID .EQ PAKME.ID
|
|
||||||
PAKME.CCLK .DA CCLK.PAK
|
|
||||||
PAKME.ID .SE PAKME.ID+2
|
|
||||||
|
|
||||||
PAKME.SEL1.ID .EQ PAKME.ID
|
|
||||||
PAKME.SEL1 .DA SEL1.PAK
|
|
||||||
PAKME.ID .SE PAKME.ID+2
|
|
||||||
|
|
||||||
PAKME.SEL2.ID .EQ PAKME.ID
|
|
||||||
PAKME.SEL2 .DA SEL2.PAK
|
|
||||||
PAKME.ID .SE PAKME.ID+2
|
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
.AS "PAKME" TAG
|
.AS "PAKME" TAG
|
||||||
.DA $2000 BIN ORG
|
.DA $2000 BIN ORG
|
||||||
|
|
|
@ -302,10 +302,33 @@ X.Arc.BlStat lda X.Arc.BLLen
|
||||||
|
|
||||||
.21 jsr X.Arc.GetYABitCntInX
|
.21 jsr X.Arc.GetYABitCntInX
|
||||||
inc X.Arc.BLO.LO.cnt-1,x
|
inc X.Arc.BLO.LO.cnt-1,x
|
||||||
bne .8
|
bne .30
|
||||||
|
|
||||||
inc X.Arc.BLO.HI.cnt-1,x
|
inc X.Arc.BLO.HI.cnt-1,x
|
||||||
|
|
||||||
|
.30 lda X.Arc.BLLen
|
||||||
|
|
||||||
|
.33 clc
|
||||||
|
adc X.Arc.Ofs
|
||||||
|
sta ZPBackPtr
|
||||||
|
lda #0
|
||||||
|
adc X.Arc.Ofs+1
|
||||||
|
sta ZPBackPtr+1
|
||||||
|
|
||||||
|
ldy #0
|
||||||
|
|
||||||
|
.34 lda (ZPBackPtr),y
|
||||||
|
tax
|
||||||
|
|
||||||
|
inc X.Arc.TopCntL,x
|
||||||
|
bne .35
|
||||||
|
|
||||||
|
inc X.Arc.TopCntH,x
|
||||||
|
|
||||||
|
.35 iny
|
||||||
|
cpy X.Arc.BLLen
|
||||||
|
bne .34
|
||||||
|
|
||||||
.8 rts
|
.8 rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
X.Arc.ComputeTBits
|
X.Arc.ComputeTBits
|
||||||
|
@ -1425,7 +1448,7 @@ BLO.LenBits .DA #%11 bc= 1
|
||||||
.DA #%10 bc= 6
|
.DA #%10 bc= 6
|
||||||
.DA #%10 bc= 7
|
.DA #%10 bc= 7
|
||||||
.DA #%10 bc= 8 : Range 0..255 (8 bits ofs)
|
.DA #%10 bc= 8 : Range 0..255 (8 bits ofs)
|
||||||
.DA #%0 bc=a 9
|
.DA #%0 bc= 9
|
||||||
.DA #%0 bc=10
|
.DA #%0 bc=10
|
||||||
.DA #%0 bc=11
|
.DA #%0 bc=11
|
||||||
.DA #%0 bc=12 : Range 0..4095 (12 bits ofs)
|
.DA #%0 bc=12 : Range 0..4095 (12 bits ofs)
|
||||||
|
|
|
@ -151,12 +151,12 @@ Dev.Detect >STYA ZPArgPtr
|
||||||
Dev.ParseArgs lda (ZPArgPtr)
|
Dev.ParseArgs lda (ZPArgPtr)
|
||||||
bne .1
|
bne .1
|
||||||
|
|
||||||
lda A2osX.RANDOM16
|
lda A2osX.R16
|
||||||
eor A2osX.TIMER16
|
eor A2osX.T16
|
||||||
sta DCB+S.DCB.NIC.MAC+3
|
sta DCB+S.DCB.NIC.MAC+3
|
||||||
eor A2osX.RANDOM16+1
|
eor A2osX.R16+1
|
||||||
sta DCB+S.DCB.NIC.MAC+4
|
sta DCB+S.DCB.NIC.MAC+4
|
||||||
eor A2osX.TIMER16+1
|
eor A2osX.T16+1
|
||||||
sta DCB+S.DCB.NIC.MAC+5
|
sta DCB+S.DCB.NIC.MAC+5
|
||||||
clc
|
clc
|
||||||
rts
|
rts
|
||||||
|
|
|
@ -1,6 +1,403 @@
|
||||||
NEW
|
NEW
|
||||||
AUTO 3,1
|
AUTO 3,1
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
|
GP.Sleep php
|
||||||
|
sei
|
||||||
|
|
||||||
|
phy
|
||||||
|
ldy #S.PS.A
|
||||||
|
sta (pPS),y
|
||||||
|
|
||||||
|
txa
|
||||||
|
iny #S.PS.X
|
||||||
|
sta (pPS),y
|
||||||
|
|
||||||
|
pla
|
||||||
|
iny #S.PS.Y
|
||||||
|
sta (pPS),y
|
||||||
|
|
||||||
|
pla
|
||||||
|
iny #S.PS.P
|
||||||
|
sta (pPS),y
|
||||||
|
|
||||||
|
pla get PC LO
|
||||||
|
plx get PC HI
|
||||||
|
|
||||||
|
inc Advance one byte because of return by RTI
|
||||||
|
bne GP.Sleep2
|
||||||
|
|
||||||
|
inx
|
||||||
|
|
||||||
|
GP.Sleep2 ldy #S.PS.PC
|
||||||
|
sta (pPS),y
|
||||||
|
|
||||||
|
txa
|
||||||
|
iny #S.PS.PC+1
|
||||||
|
sta (pPS),y
|
||||||
|
|
||||||
|
tsx
|
||||||
|
|
||||||
|
inx
|
||||||
|
|
||||||
|
inx keep PC HI,LO from KERNEL jsr PSExec/PSResume
|
||||||
|
inx Stack Ptr is $1ff if empty
|
||||||
|
|
||||||
|
txa
|
||||||
|
beq .3
|
||||||
|
|
||||||
|
tay Save !Byte count for later
|
||||||
|
|
||||||
|
.2 pla
|
||||||
|
>PUSHA
|
||||||
|
inx
|
||||||
|
bne .2
|
||||||
|
|
||||||
|
tya
|
||||||
|
|
||||||
|
.3 >PUSHA push CPU Stack BC to restore on top of Soft Stack
|
||||||
|
|
||||||
|
inc $1fe PC=PC+1
|
||||||
|
bne .4
|
||||||
|
|
||||||
|
inc $1ff because of RTI
|
||||||
|
|
||||||
|
.4 lda (pPS)
|
||||||
|
ora #S.PS.F.SLEEP
|
||||||
|
sta (pPS)
|
||||||
|
lda #0 cld,clc,cli
|
||||||
|
pha
|
||||||
|
rti exit to kernel with CC
|
||||||
|
*--------------------------------------
|
||||||
|
* *** MUST BE REINTRANT ***
|
||||||
|
*--------------------------------------
|
||||||
|
GP.SysCall dec IRQ.InKernel
|
||||||
|
|
||||||
|
pha
|
||||||
|
phy
|
||||||
|
ldy #S.PS.A
|
||||||
|
sta (pPS),y
|
||||||
|
txa
|
||||||
|
iny #S.PS.X
|
||||||
|
sta (pPS),y
|
||||||
|
pla
|
||||||
|
iny #S.PS.Y
|
||||||
|
sta (pPS),y
|
||||||
|
tay
|
||||||
|
pla
|
||||||
|
jsr JMP.2
|
||||||
|
bcc .2 no error quit...
|
||||||
|
|
||||||
|
tax CS,A=0 ?
|
||||||
|
beq .3 Yes, BLOCKING I/O
|
||||||
|
|
||||||
|
.2 inc IRQ.InKernel
|
||||||
|
rts Unmodified Carry
|
||||||
|
|
||||||
|
.3 sei
|
||||||
|
inc IRQ.InKernel
|
||||||
|
|
||||||
|
GO.Sleep2 pla get PC LO
|
||||||
|
plx get PC HI
|
||||||
|
* sec
|
||||||
|
sbc #2
|
||||||
|
bcs GP.Sleep2
|
||||||
|
|
||||||
|
dex
|
||||||
|
|
||||||
|
.1 bra GP.Sleep2
|
||||||
|
*--------------------------------------
|
||||||
|
GP.LibCall dec IRQ.InLib
|
||||||
|
|
||||||
|
pha
|
||||||
|
phy
|
||||||
|
ldy #S.PS.A
|
||||||
|
sta (pPS),y
|
||||||
|
txa
|
||||||
|
iny #S.PS.X
|
||||||
|
sta (pPS),y
|
||||||
|
pla
|
||||||
|
iny #S.PS.Y
|
||||||
|
sta (pPS),y
|
||||||
|
|
||||||
|
jsr K.GetMemPtr Get LIB Code Segment (MemMgr in $E000, no BNK change)
|
||||||
|
>STYA .1+1
|
||||||
|
pla
|
||||||
|
|
||||||
|
.1 jsr $FFFF SELF MODIFIED
|
||||||
|
|
||||||
|
bcc .2
|
||||||
|
|
||||||
|
tax
|
||||||
|
beq .3
|
||||||
|
|
||||||
|
.2 inc IRQ.InLib
|
||||||
|
rts
|
||||||
|
|
||||||
|
.3 sei
|
||||||
|
inc IRQ.InLib
|
||||||
|
|
||||||
|
bra GO.Sleep2
|
||||||
|
*--------------------------------------
|
||||||
|
GP.AtkCall dec IRQ.InKernel
|
||||||
|
|
||||||
|
>STYA .1
|
||||||
|
|
||||||
|
jsr GO.MainIC
|
||||||
|
|
||||||
|
jsr MLI
|
||||||
|
.DA #MLI.ATALK
|
||||||
|
.1 .DA *
|
||||||
|
|
||||||
|
jsr GO.AuxLC
|
||||||
|
|
||||||
|
inc IRQ.InKernel
|
||||||
|
rts
|
||||||
|
*/--------------------------------------
|
||||||
|
* # Add32,Sub32,Mul32,IMul32,Div32,IDiv32,Mod32,IMod32,Cmp32,ICmp32
|
||||||
|
* Return X+Y, X-Y, X*Y, X/Y, X mod Y....
|
||||||
|
* ## ASM
|
||||||
|
* `>PUSHL X (long)`
|
||||||
|
* `>PUSHL Y (long)`
|
||||||
|
* `>FPU add32`
|
||||||
|
* `...`
|
||||||
|
* ## RETURN VALUE
|
||||||
|
* On stack (long)
|
||||||
|
*\--------------------------------------
|
||||||
|
GP.FpuCall dec IRQ.InKernel
|
||||||
|
cpx #FPU.FMUL
|
||||||
|
bcs .1
|
||||||
|
|
||||||
|
jsr MATH math16 & math32, direct JMP
|
||||||
|
|
||||||
|
inc IRQ.InKernel
|
||||||
|
rts
|
||||||
|
|
||||||
|
.1 phx
|
||||||
|
jsr GP.SetFAC Get float from stack
|
||||||
|
plx
|
||||||
|
cpx #FPU.PWR+1
|
||||||
|
bcs GP.GetFAC
|
||||||
|
*/--------------------------------------
|
||||||
|
* # FAdd,FSub,FMul,FDiv,FPwr
|
||||||
|
* Return X*Y, X/Y, X+Y, X-Y
|
||||||
|
* ## C
|
||||||
|
* `float pwr ( float x, float y);`
|
||||||
|
* ## ASM
|
||||||
|
* `>PUSHF X (float)`
|
||||||
|
* `>PUSHF Y (float)`
|
||||||
|
* `>FPU fmul`
|
||||||
|
* `>FPU fdiv`
|
||||||
|
* `>FPU fmod` TODO
|
||||||
|
* `>FPU fadd`
|
||||||
|
* `>FPU fsub`
|
||||||
|
* `>FPU fpwr`
|
||||||
|
* ## RETURN VALUE
|
||||||
|
* On stack (float)
|
||||||
|
*\--------------------------------------
|
||||||
|
lda pStack
|
||||||
|
clc
|
||||||
|
adc #5
|
||||||
|
sta pStack
|
||||||
|
phx
|
||||||
|
jsr GP.SetARG
|
||||||
|
plx
|
||||||
|
*/--------------------------------------
|
||||||
|
* # Log,Sqr,Exp,Cos,Sin,Tan,ATan
|
||||||
|
* Return Log(x), Sqr(x), E^X, Cos(x), Sin(X), Tan(x), ATan(x)
|
||||||
|
* ## C
|
||||||
|
* `float log ( float x);`
|
||||||
|
* `float sqr ( float x);`
|
||||||
|
* `float exp ( float x);`
|
||||||
|
* `float cos ( float x);`
|
||||||
|
* `float sin ( float x);`
|
||||||
|
* `float tan ( float x);`
|
||||||
|
* `float atan ( float x);`
|
||||||
|
* ## ASM
|
||||||
|
* `>PUSHF x (Float)`
|
||||||
|
* `>FPU log`
|
||||||
|
* ## RETURN VALUE
|
||||||
|
* On stack (Float)
|
||||||
|
*\--------------------------------------
|
||||||
|
GP.GetFAC jsr GP.ROMCALL
|
||||||
|
|
||||||
|
lda pStack
|
||||||
|
ldy pStack+1
|
||||||
|
sta FORPNT Ptr to dst buffer
|
||||||
|
sty FORPNT+1
|
||||||
|
ldx #FPU.GETFAC
|
||||||
|
*--------------------------------------
|
||||||
|
GP.RomCall phx
|
||||||
|
ldx $D000
|
||||||
|
stx .8+1
|
||||||
|
bit IO.RROMBNK1
|
||||||
|
plx
|
||||||
|
|
||||||
|
jsr MATHF
|
||||||
|
|
||||||
|
.8 ldx #$ff
|
||||||
|
bit $C000,x
|
||||||
|
* bit $C000,x
|
||||||
|
rts
|
||||||
|
*--------------------------------------
|
||||||
|
GP.SetARG ldx #FPU.SETARG
|
||||||
|
.HS 2C BIT ABS
|
||||||
|
GP.SetFAC ldx #FPU.SETFAC
|
||||||
|
lda pStack
|
||||||
|
ldy pStack+1
|
||||||
|
bra GP.RomCall
|
||||||
|
*/--------------------------------------
|
||||||
|
* # float
|
||||||
|
* Return 'floated' long
|
||||||
|
* ## C
|
||||||
|
* `float f = (float)l;
|
||||||
|
* ## ASM
|
||||||
|
* `>PUSHL l` (long)
|
||||||
|
* `>FPU float`
|
||||||
|
* ## RETURN VALUE
|
||||||
|
* On stack (float)
|
||||||
|
*\--------------------------------------
|
||||||
|
GP.Float ldy #3
|
||||||
|
|
||||||
|
.1 lda (pStack),y
|
||||||
|
sta FAC+1,y Reverse Order
|
||||||
|
dey
|
||||||
|
bpl .1
|
||||||
|
|
||||||
|
dec pStack keep 5 bytes on stack
|
||||||
|
stz FAC.SIGN
|
||||||
|
lda #$80+32
|
||||||
|
sta FAC Positive + Exp=32
|
||||||
|
ldx #FPU.LTOF
|
||||||
|
|
||||||
|
bra GP.GetFAC
|
||||||
|
*/--------------------------------------
|
||||||
|
* # lrintf
|
||||||
|
* Return float rounded into a long
|
||||||
|
* ## C
|
||||||
|
* `long int lrintf (float x);`
|
||||||
|
* ## ASM
|
||||||
|
* `>PUSHF x`
|
||||||
|
* `>FPU lrintf`
|
||||||
|
* ## RETURN VALUE
|
||||||
|
* On stack (long)
|
||||||
|
*\--------------------------------------
|
||||||
|
GP.lrintf jsr GP.SetFAC
|
||||||
|
inc pStack keep 4 bytes on stack
|
||||||
|
ldx #FPU.QINT
|
||||||
|
jsr GP.ROMCALL
|
||||||
|
|
||||||
|
ldy #3
|
||||||
|
|
||||||
|
.1 lda FAC+1,y
|
||||||
|
sta (pStack),y
|
||||||
|
dey
|
||||||
|
bpl .1
|
||||||
|
|
||||||
|
rts
|
||||||
|
*--------------------------------------
|
||||||
|
* MLI : From Kernel Aux LC to Main LC
|
||||||
|
*--------------------------------------
|
||||||
|
GP.MLICall stx .1
|
||||||
|
sta K.MLI.PARAMS
|
||||||
|
jsr GO.MainIC
|
||||||
|
jsr MLI
|
||||||
|
.1 .BS 1
|
||||||
|
.DA K.MLI.PARAMS
|
||||||
|
jsr GO.AuxLC
|
||||||
|
rts
|
||||||
|
*--------------------------------------
|
||||||
|
GO.MainIC pha
|
||||||
|
lda $D000 We re coming from AUXLC, saving bank...
|
||||||
|
sta GO.AuxLC.BNK+1
|
||||||
|
pla
|
||||||
|
php
|
||||||
|
clc
|
||||||
|
.HS 2C BIT ABS
|
||||||
|
GO.AuxLC php
|
||||||
|
sec
|
||||||
|
|
||||||
|
sei
|
||||||
|
sta GO.EXIT.SaveA+1
|
||||||
|
stx GO.EXIT.SaveX+1
|
||||||
|
sty GO.EXIT.SaveY+1
|
||||||
|
pla Restore P in A for later
|
||||||
|
plx Get PC and add 1 for return
|
||||||
|
ply
|
||||||
|
inx
|
||||||
|
bne .1
|
||||||
|
|
||||||
|
iny
|
||||||
|
|
||||||
|
.1 stx GO.EXIT.JMP+1
|
||||||
|
sty GO.EXIT.JMP+2
|
||||||
|
|
||||||
|
bcs .2 if CS, go AUXLC
|
||||||
|
|
||||||
|
tsx
|
||||||
|
stx SaveSX
|
||||||
|
ldx SaveSM
|
||||||
|
txs
|
||||||
|
sta IO.CLRALTZP
|
||||||
|
|
||||||
|
ldx #IO.RRAMWRAMBNK1 Go MAINLC (ProDOS), always BNK1
|
||||||
|
bra GO.EXIT
|
||||||
|
|
||||||
|
.2 sta IO.SETALTZP
|
||||||
|
tsx
|
||||||
|
stx SaveSM
|
||||||
|
ldx SaveSX
|
||||||
|
txs
|
||||||
|
|
||||||
|
GO.AuxLC.BNK ldx #$FF Self Modified, initialized to BNK1 for INIT3
|
||||||
|
*--------------------------------------
|
||||||
|
GO.EXIT bit $C000,x Select Proper LC bank
|
||||||
|
* bit $C000,x
|
||||||
|
|
||||||
|
pha push P on stack
|
||||||
|
GO.EXIT.SaveY ldy #$ff
|
||||||
|
GO.EXIT.SaveX ldx #$ff
|
||||||
|
GO.EXIT.SaveA lda #$ff
|
||||||
|
plp
|
||||||
|
|
||||||
|
GO.EXIT.JMP jmp $FFFF SELF MODIFIED
|
||||||
|
*--------------------------------------
|
||||||
|
* Called from ProDOS IRQ Manager (LCBNK1)
|
||||||
|
* A,X,Y, $FA->$FF Already Saved
|
||||||
|
* Main RAM,ZP/LC selected
|
||||||
|
* must begin with CLD
|
||||||
|
* must exit with RTS
|
||||||
|
* - CC if IRQ cleared, CS if NOT
|
||||||
|
*--------------------------------------
|
||||||
|
GP.IRQ cld
|
||||||
|
|
||||||
|
bit IRQ.Skip After A2osX IRQ.H ?
|
||||||
|
bmi GP.IRQ.Exit
|
||||||
|
|
||||||
|
sta IO.SETALTZP switch to aux LC
|
||||||
|
tsx
|
||||||
|
stx SaveSM
|
||||||
|
ldx SaveSX
|
||||||
|
txs
|
||||||
|
|
||||||
|
GP.IRQ.JSR jsr CORE.IRQ.DEV SELF MODIFIED
|
||||||
|
|
||||||
|
tsx go back to Main
|
||||||
|
stx SaveSX
|
||||||
|
ldx SaveSM
|
||||||
|
txs
|
||||||
|
sta IO.CLRALTZP
|
||||||
|
|
||||||
|
rts
|
||||||
|
|
||||||
|
GP.IRQ.Exit stz IRQ.Skip reset flag
|
||||||
|
sec
|
||||||
|
rts
|
||||||
|
*--------------------------------------
|
||||||
|
*GO.Reset jsr GO.AuxLC
|
||||||
|
* jmp CORE.Run
|
||||||
|
*--------------------------------------
|
||||||
|
*BrkHandler bra *
|
||||||
|
*--------------------------------------
|
||||||
CORE.Run ldx #1
|
CORE.Run ldx #1
|
||||||
|
|
||||||
bra .80 Skip PS0
|
bra .80 Skip PS0
|
||||||
|
@ -245,10 +642,10 @@ CORE.GetEvents lda #K.S.EVT
|
||||||
bne .6
|
bne .6
|
||||||
|
|
||||||
.4 inc DevMgr.Timer
|
.4 inc DevMgr.Timer
|
||||||
inc A2osX.TIMER16
|
inc A2osX.T16
|
||||||
bne .5
|
bne .5
|
||||||
|
|
||||||
inc A2osX.TIMER16+1
|
inc A2osX.T16+1
|
||||||
|
|
||||||
.5 ldx CORE.TickPer10t
|
.5 ldx CORE.TickPer10t
|
||||||
stx CORE.Tick10t
|
stx CORE.Tick10t
|
||||||
|
|
|
@ -4,11 +4,11 @@ NEW
|
||||||
* CONTROL SECTION :
|
* CONTROL SECTION :
|
||||||
.LIST ON
|
.LIST ON
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
*C1 .EQ MAIN.S
|
C1 .EQ MAIN.S
|
||||||
*C2 .EQ AUX.S
|
C2 .EQ AUX.S
|
||||||
*C3 .EQ D1.S
|
C3 .EQ D1.S
|
||||||
*C4 .EQ D2.S
|
C4 .EQ D2.S
|
||||||
*C5 .EQ E0.S
|
C5 .EQ E0.S
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
.LIST OFF
|
.LIST OFF
|
||||||
.DO MAIN.S>$BC0
|
.DO MAIN.S>$BC0
|
||||||
|
|
|
@ -18,7 +18,7 @@ K.SetEnv
|
||||||
* ldy #S.PS.hENV
|
* ldy #S.PS.hENV
|
||||||
* lda (pPS),y
|
* lda (pPS),y
|
||||||
|
|
||||||
* jmp K.SYSCALL.JMPX
|
* jmp JMP.X
|
||||||
*/--------------------------------------
|
*/--------------------------------------
|
||||||
* # GetEnv
|
* # GetEnv
|
||||||
* searches the environment list to find the environment variable name,
|
* searches the environment list to find the environment variable name,
|
||||||
|
@ -71,7 +71,7 @@ K.GetEnv.I ldy #S.PS.hENV FROM STDLIB:EXPAND
|
||||||
tay Y = hSID
|
tay Y = hSID
|
||||||
pla A = hENV
|
pla A = hENV
|
||||||
|
|
||||||
jmp K.SYSCALL.JMPX
|
jmp JMP.X
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
MAN
|
MAN
|
||||||
SAVE usr/src/sys/kernel.s.env
|
SAVE usr/src/sys/kernel.s.env
|
||||||
|
|
|
@ -118,6 +118,7 @@ ENVX.SetEnv.I
|
||||||
jsr SHARED.TXTPTRgY
|
jsr SHARED.TXTPTRgY
|
||||||
sta (ZPPtr3),y
|
sta (ZPPtr3),y
|
||||||
beq .24
|
beq .24
|
||||||
|
|
||||||
jsr SHARED.IsIDValid
|
jsr SHARED.IsIDValid
|
||||||
bcc .23
|
bcc .23
|
||||||
|
|
||||||
|
@ -125,6 +126,7 @@ ENVX.SetEnv.I
|
||||||
sta (ZPPtr3),y
|
sta (ZPPtr3),y
|
||||||
|
|
||||||
jsr ENVX.NextEnvP3Y
|
jsr ENVX.NextEnvP3Y
|
||||||
|
|
||||||
ldy #$ff
|
ldy #$ff
|
||||||
|
|
||||||
.25 iny
|
.25 iny
|
||||||
|
@ -182,7 +184,7 @@ ENVX.GetEnv sta ENVX.hEnv
|
||||||
inc
|
inc
|
||||||
|
|
||||||
.2 ldx #SYS.GetMem
|
.2 ldx #SYS.GetMem
|
||||||
jsr K.SYSCALL2.MAIN !!! Get a buffer In MAIN Mem !!!
|
jsr JMP.M !!! Get a buffer In MAIN Mem !!!
|
||||||
|
|
||||||
bcs .99
|
bcs .99
|
||||||
|
|
||||||
|
|
|
@ -41,417 +41,24 @@ NEW
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
* SLEEP
|
* SLEEP
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
GP.Sleep php
|
jmp GP.Sleep
|
||||||
sei
|
|
||||||
|
|
||||||
phy
|
|
||||||
ldy #S.PS.A
|
|
||||||
sta (pPS),y
|
|
||||||
|
|
||||||
txa
|
|
||||||
iny #S.PS.X
|
|
||||||
sta (pPS),y
|
|
||||||
|
|
||||||
pla
|
|
||||||
iny #S.PS.Y
|
|
||||||
sta (pPS),y
|
|
||||||
|
|
||||||
pla
|
|
||||||
iny #S.PS.P
|
|
||||||
sta (pPS),y
|
|
||||||
|
|
||||||
pla get PC LO
|
|
||||||
plx get PC HI
|
|
||||||
|
|
||||||
inc Advance one byte because of return by RTI
|
|
||||||
bne GP.Sleep2
|
|
||||||
|
|
||||||
inx
|
|
||||||
|
|
||||||
GP.Sleep2 ldy #S.PS.PC
|
|
||||||
sta (pPS),y
|
|
||||||
|
|
||||||
txa
|
|
||||||
iny #S.PS.PC+1
|
|
||||||
sta (pPS),y
|
|
||||||
|
|
||||||
tsx
|
|
||||||
|
|
||||||
inx
|
|
||||||
|
|
||||||
inx keep PC HI,LO from KERNEL jsr PSExec/PSResume
|
|
||||||
inx Stack Ptr is $1ff if empty
|
|
||||||
|
|
||||||
txa
|
|
||||||
beq .3
|
|
||||||
|
|
||||||
tay Save !Byte count for later
|
|
||||||
|
|
||||||
.2 pla
|
|
||||||
>PUSHA
|
|
||||||
inx
|
|
||||||
bne .2
|
|
||||||
|
|
||||||
tya
|
|
||||||
|
|
||||||
.3 >PUSHA push CPU Stack BC to restore on top of Soft Stack
|
|
||||||
|
|
||||||
inc $1fe PC=PC+1
|
|
||||||
bne .4
|
|
||||||
|
|
||||||
inc $1ff because of RTI
|
|
||||||
|
|
||||||
.4 lda (pPS)
|
|
||||||
ora #S.PS.F.SLEEP
|
|
||||||
sta (pPS)
|
|
||||||
lda #0 cld,clc,cli
|
|
||||||
pha
|
|
||||||
rti exit to kernel with CC
|
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
* *** MUST BE REINTRANT ***
|
* NON BLOCKING Entry point (From libs)
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
GP.SysCall dec IRQ.InKernel
|
jmp JMP.2
|
||||||
|
|
||||||
pha
|
|
||||||
phy
|
|
||||||
ldy #S.PS.A
|
|
||||||
sta (pPS),y
|
|
||||||
txa
|
|
||||||
iny #S.PS.X
|
|
||||||
sta (pPS),y
|
|
||||||
pla
|
|
||||||
iny #S.PS.Y
|
|
||||||
sta (pPS),y
|
|
||||||
tay
|
|
||||||
pla
|
|
||||||
jsr K.SYSCALL2
|
|
||||||
bcc .2 no error quit...
|
|
||||||
|
|
||||||
tax CS,A=0 ?
|
|
||||||
beq .3 Yes, BLOCKING I/O
|
|
||||||
|
|
||||||
.2 inc IRQ.InKernel
|
|
||||||
rts Unmodified Carry
|
|
||||||
|
|
||||||
.3 sei
|
|
||||||
inc IRQ.InKernel
|
|
||||||
|
|
||||||
GO.Sleep2 pla get PC LO
|
|
||||||
plx get PC HI
|
|
||||||
* sec
|
|
||||||
sbc #2
|
|
||||||
bcs GP.Sleep2
|
|
||||||
|
|
||||||
dex
|
|
||||||
|
|
||||||
.1 bra GP.Sleep2
|
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
GP.LibCall dec IRQ.InLib
|
* Public Vars
|
||||||
|
|
||||||
pha
|
|
||||||
phy
|
|
||||||
ldy #S.PS.A
|
|
||||||
sta (pPS),y
|
|
||||||
txa
|
|
||||||
iny #S.PS.X
|
|
||||||
sta (pPS),y
|
|
||||||
pla
|
|
||||||
iny #S.PS.Y
|
|
||||||
sta (pPS),y
|
|
||||||
|
|
||||||
jsr K.GetMemPtr Get LIB Code Segment (MemMgr in $E000, no BNK change)
|
|
||||||
>STYA .1+1
|
|
||||||
pla
|
|
||||||
|
|
||||||
.1 jsr $FFFF SELF MODIFIED
|
|
||||||
|
|
||||||
bcc .2
|
|
||||||
|
|
||||||
tax
|
|
||||||
beq .3
|
|
||||||
|
|
||||||
.2 inc IRQ.InLib
|
|
||||||
rts
|
|
||||||
|
|
||||||
.3 sei
|
|
||||||
inc IRQ.InLib
|
|
||||||
|
|
||||||
bra GO.Sleep2
|
|
||||||
*--------------------------------------
|
|
||||||
GP.AtkCall dec IRQ.InKernel
|
|
||||||
|
|
||||||
>STYA .1
|
|
||||||
|
|
||||||
jsr GO.MainIC
|
|
||||||
|
|
||||||
jsr MLI
|
|
||||||
.DA #MLI.ATALK
|
|
||||||
.1 .DA *
|
|
||||||
|
|
||||||
jsr GO.AuxLC
|
|
||||||
|
|
||||||
inc IRQ.InKernel
|
|
||||||
rts
|
|
||||||
*/--------------------------------------
|
|
||||||
* # Add32,Sub32,Mul32,IMul32,Div32,IDiv32,Mod32,IMod32,Cmp32,ICmp32
|
|
||||||
* Return X+Y, X-Y, X*Y, X/Y, X mod Y....
|
|
||||||
* ## ASM
|
|
||||||
* `>PUSHL X (long)`
|
|
||||||
* `>PUSHL Y (long)`
|
|
||||||
* `>FPU add32`
|
|
||||||
* `...`
|
|
||||||
* ## RETURN VALUE
|
|
||||||
* On stack (long)
|
|
||||||
*\--------------------------------------
|
|
||||||
GP.FpuCall dec IRQ.InKernel
|
|
||||||
cpx #FPU.FMUL
|
|
||||||
bcs .1
|
|
||||||
|
|
||||||
jsr MATH math16 & math32, direct JMP
|
|
||||||
|
|
||||||
inc IRQ.InKernel
|
|
||||||
rts
|
|
||||||
|
|
||||||
.1 phx
|
|
||||||
jsr GP.SetFAC Get float from stack
|
|
||||||
plx
|
|
||||||
cpx #FPU.PWR+1
|
|
||||||
bcs GP.GetFAC
|
|
||||||
*/--------------------------------------
|
|
||||||
* # FAdd,FSub,FMul,FDiv,FPwr
|
|
||||||
* Return X*Y, X/Y, X+Y, X-Y
|
|
||||||
* ## C
|
|
||||||
* `float pwr ( float x, float y);`
|
|
||||||
* ## ASM
|
|
||||||
* `>PUSHF X (float)`
|
|
||||||
* `>PUSHF Y (float)`
|
|
||||||
* `>FPU fmul`
|
|
||||||
* `>FPU fdiv`
|
|
||||||
* `>FPU fmod` TODO
|
|
||||||
* `>FPU fadd`
|
|
||||||
* `>FPU fsub`
|
|
||||||
* `>FPU fpwr`
|
|
||||||
* ## RETURN VALUE
|
|
||||||
* On stack (float)
|
|
||||||
*\--------------------------------------
|
|
||||||
lda pStack
|
|
||||||
clc
|
|
||||||
adc #5
|
|
||||||
sta pStack
|
|
||||||
phx
|
|
||||||
jsr GP.SetARG
|
|
||||||
plx
|
|
||||||
*/--------------------------------------
|
|
||||||
* # Log,Sqr,Exp,Cos,Sin,Tan,ATan
|
|
||||||
* Return Log(x), Sqr(x), E^X, Cos(x), Sin(X), Tan(x), ATan(x)
|
|
||||||
* ## C
|
|
||||||
* `float log ( float x);`
|
|
||||||
* `float sqr ( float x);`
|
|
||||||
* `float exp ( float x);`
|
|
||||||
* `float cos ( float x);`
|
|
||||||
* `float sin ( float x);`
|
|
||||||
* `float tan ( float x);`
|
|
||||||
* `float atan ( float x);`
|
|
||||||
* ## ASM
|
|
||||||
* `>PUSHF x (Float)`
|
|
||||||
* `>FPU log`
|
|
||||||
* ## RETURN VALUE
|
|
||||||
* On stack (Float)
|
|
||||||
*\--------------------------------------
|
|
||||||
GP.GetFAC jsr GP.ROMCALL
|
|
||||||
|
|
||||||
lda pStack
|
|
||||||
ldy pStack+1
|
|
||||||
sta FORPNT Ptr to dst buffer
|
|
||||||
sty FORPNT+1
|
|
||||||
ldx #FPU.GETFAC
|
|
||||||
*--------------------------------------
|
|
||||||
GP.RomCall phx
|
|
||||||
ldx $D000
|
|
||||||
stx .8+1
|
|
||||||
bit IO.RROMBNK1
|
|
||||||
plx
|
|
||||||
|
|
||||||
jsr MATHF
|
|
||||||
|
|
||||||
.8 ldx #$ff
|
|
||||||
bit $C000,x
|
|
||||||
* bit $C000,x
|
|
||||||
rts
|
|
||||||
*--------------------------------------
|
|
||||||
GP.SetARG ldx #FPU.SETARG
|
|
||||||
.HS 2C BIT ABS
|
|
||||||
GP.SetFAC ldx #FPU.SETFAC
|
|
||||||
lda pStack
|
|
||||||
ldy pStack+1
|
|
||||||
bra GP.RomCall
|
|
||||||
*/--------------------------------------
|
|
||||||
* # float
|
|
||||||
* Return 'floated' long
|
|
||||||
* ## C
|
|
||||||
* `float f = (float)l;
|
|
||||||
* ## ASM
|
|
||||||
* `>PUSHL l` (long)
|
|
||||||
* `>FPU float`
|
|
||||||
* ## RETURN VALUE
|
|
||||||
* On stack (float)
|
|
||||||
*\--------------------------------------
|
|
||||||
GP.Float ldy #3
|
|
||||||
|
|
||||||
.1 lda (pStack),y
|
|
||||||
sta FAC+1,y Reverse Order
|
|
||||||
dey
|
|
||||||
bpl .1
|
|
||||||
|
|
||||||
dec pStack keep 5 bytes on stack
|
|
||||||
stz FAC.SIGN
|
|
||||||
lda #$80+32
|
|
||||||
sta FAC Positive + Exp=32
|
|
||||||
ldx #FPU.LTOF
|
|
||||||
|
|
||||||
bra GP.GetFAC
|
|
||||||
*/--------------------------------------
|
|
||||||
* # lrintf
|
|
||||||
* Return float rounded into a long
|
|
||||||
* ## C
|
|
||||||
* `long int lrintf (float x);`
|
|
||||||
* ## ASM
|
|
||||||
* `>PUSHF x`
|
|
||||||
* `>FPU lrintf`
|
|
||||||
* ## RETURN VALUE
|
|
||||||
* On stack (long)
|
|
||||||
*\--------------------------------------
|
|
||||||
GP.lrintf jsr GP.SetFAC
|
|
||||||
inc pStack keep 4 bytes on stack
|
|
||||||
ldx #FPU.QINT
|
|
||||||
jsr GP.ROMCALL
|
|
||||||
|
|
||||||
ldy #3
|
|
||||||
|
|
||||||
.1 lda FAC+1,y
|
|
||||||
sta (pStack),y
|
|
||||||
dey
|
|
||||||
bpl .1
|
|
||||||
|
|
||||||
rts
|
|
||||||
*--------------------------------------
|
|
||||||
* MLI : From Kernel Aux LC to Main LC
|
|
||||||
*--------------------------------------
|
|
||||||
GP.MLICall stx .1
|
|
||||||
sta K.MLI.PARAMS
|
|
||||||
jsr GO.MainIC
|
|
||||||
jsr MLI
|
|
||||||
.1 .BS 1
|
|
||||||
.DA K.MLI.PARAMS
|
|
||||||
jsr GO.AuxLC
|
|
||||||
rts
|
|
||||||
*--------------------------------------
|
|
||||||
GO.MainIC pha
|
|
||||||
lda $D000 We re coming from AUXLC, saving bank...
|
|
||||||
sta GO.AuxLC.BNK+1
|
|
||||||
pla
|
|
||||||
php
|
|
||||||
clc
|
|
||||||
.HS 2C BIT ABS
|
|
||||||
GO.AuxLC php
|
|
||||||
sec
|
|
||||||
|
|
||||||
sei
|
|
||||||
sta GO.EXIT.SaveA+1
|
|
||||||
stx GO.EXIT.SaveX+1
|
|
||||||
sty GO.EXIT.SaveY+1
|
|
||||||
pla Restore P in A for later
|
|
||||||
plx Get PC and add 1 for return
|
|
||||||
ply
|
|
||||||
inx
|
|
||||||
bne .1
|
|
||||||
|
|
||||||
iny
|
|
||||||
|
|
||||||
.1 stx GO.EXIT.JMP+1
|
|
||||||
sty GO.EXIT.JMP+2
|
|
||||||
|
|
||||||
bcs .2 if CS, go AUXLC
|
|
||||||
|
|
||||||
tsx
|
|
||||||
stx SaveSX
|
|
||||||
ldx SaveSM
|
|
||||||
txs
|
|
||||||
sta IO.CLRALTZP
|
|
||||||
|
|
||||||
ldx #IO.RRAMWRAMBNK1 Go MAINLC (ProDOS), always BNK1
|
|
||||||
bra GO.EXIT
|
|
||||||
|
|
||||||
.2 sta IO.SETALTZP
|
|
||||||
tsx
|
|
||||||
stx SaveSM
|
|
||||||
ldx SaveSX
|
|
||||||
txs
|
|
||||||
|
|
||||||
GO.AuxLC.BNK ldx #$FF Self Modified, initialized to BNK1 for INIT3
|
|
||||||
*--------------------------------------
|
|
||||||
GO.EXIT bit $C000,x Select Proper LC bank
|
|
||||||
* bit $C000,x
|
|
||||||
|
|
||||||
pha push P on stack
|
|
||||||
GO.EXIT.SaveY ldy #$ff
|
|
||||||
GO.EXIT.SaveX ldx #$ff
|
|
||||||
GO.EXIT.SaveA lda #$ff
|
|
||||||
plp
|
|
||||||
|
|
||||||
GO.EXIT.JMP jmp $FFFF SELF MODIFIED
|
|
||||||
*--------------------------------------
|
|
||||||
* Called from ProDOS IRQ Manager (LCBNK1)
|
|
||||||
* A,X,Y, $FA->$FF Already Saved
|
|
||||||
* Main RAM,ZP/LC selected
|
|
||||||
* must begin with CLD
|
|
||||||
* must exit with RTS
|
|
||||||
* - CC if IRQ cleared, CS if NOT
|
|
||||||
*--------------------------------------
|
|
||||||
GP.IRQ cld
|
|
||||||
|
|
||||||
bit IRQ.Skip After A2osX IRQ.H ?
|
|
||||||
bmi GP.IRQ.Exit
|
|
||||||
|
|
||||||
sta IO.SETALTZP switch to aux LC
|
|
||||||
tsx
|
|
||||||
stx SaveSM
|
|
||||||
ldx SaveSX
|
|
||||||
txs
|
|
||||||
|
|
||||||
GP.IRQ.JSR jsr CORE.IRQ.DEV SELF MODIFIED
|
|
||||||
|
|
||||||
tsx go back to Main
|
|
||||||
stx SaveSX
|
|
||||||
ldx SaveSM
|
|
||||||
txs
|
|
||||||
sta IO.CLRALTZP
|
|
||||||
|
|
||||||
rts
|
|
||||||
|
|
||||||
GP.IRQ.Exit stz IRQ.Skip reset flag
|
|
||||||
sec
|
|
||||||
rts
|
|
||||||
*--------------------------------------
|
|
||||||
*GO.Reset jsr GO.AuxLC
|
|
||||||
* jmp CORE.Run
|
|
||||||
*--------------------------------------
|
|
||||||
*BrkHandler bra *
|
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
.LIST ON
|
.LIST ON
|
||||||
.BS $11D0-*
|
.BS A2osX.KCONFIG-*
|
||||||
.LIST OFF
|
.LIST OFF
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
* $11D0->$11EF : Public Variables
|
* Kernel Config Block
|
||||||
*--------------------------------------
|
|
||||||
.BS 32
|
|
||||||
*--------------------------------------
|
|
||||||
* $11F0->$11FF : Kernel Config Block
|
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
.DA #6 A2osX.HZ=60hz
|
.DA #6 A2osX.HZ=60hz
|
||||||
.DA #2 A2osX.TTYDEVS=2
|
.DA #2 A2osX.TTYDEVS=2
|
||||||
.HS 000000000000
|
|
||||||
.DA #0 ChRoot/Preemptive Disabled
|
.DA #0 ChRoot/Preemptive Disabled
|
||||||
|
.HS 000000000000 spare
|
||||||
.HS 00000000000000 All Slots marked as "Free"
|
.HS 00000000000000 All Slots marked as "Free"
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
MAN
|
MAN
|
||||||
|
|
|
@ -4,11 +4,16 @@ NEW
|
||||||
Kernel.Init2 sei
|
Kernel.Init2 sei
|
||||||
ldx #$FF
|
ldx #$FF
|
||||||
txs
|
txs
|
||||||
|
|
||||||
sta IO.SETALTZP
|
sta IO.SETALTZP
|
||||||
|
|
||||||
stx SaveSM
|
stx SaveSM
|
||||||
stx SaveSX
|
stx SaveSX
|
||||||
|
|
||||||
|
.DO K8M=1
|
||||||
|
sta IO.CLRALTZP
|
||||||
|
.FIN
|
||||||
|
|
||||||
ldx #Kernel.ZP.S-1
|
ldx #Kernel.ZP.S-1
|
||||||
|
|
||||||
.1 lda Kernel.ZP,x
|
.1 lda Kernel.ZP,x
|
||||||
|
@ -16,15 +21,32 @@ Kernel.Init2 sei
|
||||||
dex
|
dex
|
||||||
bpl .1
|
bpl .1
|
||||||
|
|
||||||
|
.DO K8M=0
|
||||||
sta IO.CLRALTZP
|
sta IO.CLRALTZP
|
||||||
|
.FIN
|
||||||
|
|
||||||
>LDYAI MSG.Init2
|
>LDYAI MSG.Init2
|
||||||
jsr PrintFYA
|
jsr PrintFYA
|
||||||
|
|
||||||
>LDYA PAKME.MAIN
|
.DO K8M=0
|
||||||
|
sta IO.SETALTZP
|
||||||
|
.FIN
|
||||||
|
|
||||||
|
>LDYA PAKME.GP
|
||||||
>STYA ZPInBufPtr
|
>STYA ZPInBufPtr
|
||||||
>LDYAI $1000
|
>LDYAI $0140
|
||||||
jsr A2osX.Unpak
|
jsr A2osX.Unpak
|
||||||
|
|
||||||
|
.DO K8M=0
|
||||||
|
sta IO.CLRALTZP
|
||||||
|
.FIN
|
||||||
|
|
||||||
|
>LDYA PAKME.MAIN
|
||||||
|
>STYA ZPInBufPtr
|
||||||
|
>LDYAI MAIN.ORG
|
||||||
|
jsr A2osX.Unpak
|
||||||
|
|
||||||
|
.DO K8M=0
|
||||||
>LDYA PAKME.AUX
|
>LDYA PAKME.AUX
|
||||||
>STYA ZPInBufPtr
|
>STYA ZPInBufPtr
|
||||||
>LDYAI $9F00
|
>LDYAI $9F00
|
||||||
|
@ -66,8 +88,12 @@ Kernel.Init2 sei
|
||||||
|
|
||||||
.4 sta IO.CLRWRITEAUX
|
.4 sta IO.CLRWRITEAUX
|
||||||
|
|
||||||
|
.ELSE
|
||||||
|
|
||||||
sta IO.SETALTZP
|
sta IO.SETALTZP
|
||||||
|
|
||||||
|
.FIN
|
||||||
|
|
||||||
lda IO.RRAMWRAMBNK2
|
lda IO.RRAMWRAMBNK2
|
||||||
lda IO.RRAMWRAMBNK2
|
lda IO.RRAMWRAMBNK2
|
||||||
|
|
||||||
|
@ -96,10 +122,21 @@ Kernel.Init2 sei
|
||||||
|
|
||||||
jsr KConfigLoad
|
jsr KConfigLoad
|
||||||
|
|
||||||
lda A2osX.HZ
|
lda A2osX.FSID
|
||||||
|
beq .5
|
||||||
|
|
||||||
|
sta IO.SETALTZP
|
||||||
|
sta A2osX.FSID
|
||||||
|
sta IO.CLRALTZP
|
||||||
|
|
||||||
|
>LDYAI MSG.FX
|
||||||
|
jsr PrintFYA
|
||||||
|
|
||||||
|
.5 lda A2osX.HZ
|
||||||
pha
|
pha
|
||||||
>LDYAI MSG.HZ
|
>LDYAI MSG.HZ
|
||||||
jsr PrintFYA
|
jsr PrintFYA
|
||||||
|
|
||||||
>LDYAI MSG.Init2.OK
|
>LDYAI MSG.Init2.OK
|
||||||
jsr PrintFYA
|
jsr PrintFYA
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
|
@ -193,6 +230,7 @@ Kernel.Init3C >LDYAI MSG.Init3
|
||||||
|
|
||||||
>PUSHWI SBININITD
|
>PUSHWI SBININITD
|
||||||
>PUSHBI 0 PS Flags
|
>PUSHBI 0 PS Flags
|
||||||
|
|
||||||
>SYSCALL2 ExecV
|
>SYSCALL2 ExecV
|
||||||
bcs Kernel.Init3.Err
|
bcs Kernel.Init3.Err
|
||||||
|
|
||||||
|
@ -219,6 +257,7 @@ KConfigLoad >LDYAI MSG.KCREAD
|
||||||
.DA #MLI.GFINFOEX
|
.DA #MLI.GFINFOEX
|
||||||
.DA pMLIGFIEX
|
.DA pMLIGFIEX
|
||||||
bcc .1
|
bcc .1
|
||||||
|
|
||||||
eor #MLI.E.BADCALL
|
eor #MLI.E.BADCALL
|
||||||
beq .2 regular ProDOS
|
beq .2 regular ProDOS
|
||||||
|
|
||||||
|
@ -254,13 +293,8 @@ KConfigLoad >LDYAI MSG.KCREAD
|
||||||
.9 >LDYAI MSG.KCREAD.KO
|
.9 >LDYAI MSG.KCREAD.KO
|
||||||
|
|
||||||
.8 jsr PrintFYA
|
.8 jsr PrintFYA
|
||||||
lda A2osX.FSID
|
|
||||||
beq .99
|
|
||||||
|
|
||||||
>LDYAI MSG.FX
|
rts
|
||||||
jsr PrintFYA
|
|
||||||
|
|
||||||
.99 rts
|
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
* INIT3 Subs
|
* INIT3 Subs
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
|
@ -396,15 +430,15 @@ HW.Detect >PUSHWI MSG.HW
|
||||||
|
|
||||||
bit IO.RROMBNK1
|
bit IO.RROMBNK1
|
||||||
|
|
||||||
stz A2osX.HWType
|
stz A2osX.HWT
|
||||||
stz A2osX.HWSubT
|
stz A2osX.HWSubT
|
||||||
|
|
||||||
sec
|
sec
|
||||||
jsr $FE1F ROM.IDROUTINE IIgs ?
|
jsr $FE1F ROM.IDROUTINE IIgs ?
|
||||||
bcs .2
|
bcs .2
|
||||||
|
|
||||||
lda #A2osX.HWType.IIgs
|
lda #A2osX.HWT.IIgs
|
||||||
sta A2osX.HWType
|
sta A2osX.HWT
|
||||||
|
|
||||||
cpy #2
|
cpy #2
|
||||||
bne .1
|
bne .1
|
||||||
|
@ -417,8 +451,8 @@ HW.Detect >PUSHWI MSG.HW
|
||||||
.2 lda $FBC0 ROM.ZIDBYTE
|
.2 lda $FBC0 ROM.ZIDBYTE
|
||||||
beq .4 //c
|
beq .4 //c
|
||||||
|
|
||||||
ldx #A2osX.HWType.IIe
|
ldx #A2osX.HWT.IIe
|
||||||
stx A2osX.HWType
|
stx A2osX.HWT
|
||||||
cmp #$EA
|
cmp #$EA
|
||||||
beq .8 //e OLD ROMs
|
beq .8 //e OLD ROMs
|
||||||
|
|
||||||
|
@ -430,8 +464,8 @@ HW.Detect >PUSHWI MSG.HW
|
||||||
inc A2osX.HWSubT //e LC card
|
inc A2osX.HWSubT //e LC card
|
||||||
bra .8
|
bra .8
|
||||||
|
|
||||||
.4 lda #A2osX.HWType.IIc
|
.4 lda #A2osX.HWT.IIc
|
||||||
sta A2osX.HWType
|
sta A2osX.HWT
|
||||||
lda $FBBF
|
lda $FBBF
|
||||||
sta A2osX.HWSubT
|
sta A2osX.HWSubT
|
||||||
|
|
||||||
|
@ -439,7 +473,7 @@ HW.Detect >PUSHWI MSG.HW
|
||||||
bit IO.RRAMWRAMBNK1
|
bit IO.RRAMWRAMBNK1
|
||||||
|
|
||||||
>PUSHWI MSG.HW.TypeSubT
|
>PUSHWI MSG.HW.TypeSubT
|
||||||
>PUSHB A2osX.HWType
|
>PUSHB A2osX.HWT
|
||||||
>PUSHB A2osX.HWSubT
|
>PUSHB A2osX.HWSubT
|
||||||
>PUSHBI 2
|
>PUSHBI 2
|
||||||
>SYSCALL2 printf
|
>SYSCALL2 printf
|
||||||
|
@ -469,8 +503,8 @@ CPU.Init >PUSHWI MSG.CPU
|
||||||
php
|
php
|
||||||
sei
|
sei
|
||||||
|
|
||||||
lda A2osX.HWType
|
lda A2osX.HWT
|
||||||
cmp #A2osX.HWType.IIc
|
cmp #A2osX.HWT.IIc
|
||||||
beq CPU.Init2c
|
beq CPU.Init2c
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
* VBL = 20.000us 50hz, 16.666 60hz
|
* VBL = 20.000us 50hz, 16.666 60hz
|
||||||
|
@ -921,8 +955,8 @@ IrqMgrInit >LDYAI MSG.IRQ
|
||||||
lda K.MLI.PARAMS+1
|
lda K.MLI.PARAMS+1
|
||||||
sta IRQ.INTNUM
|
sta IRQ.INTNUM
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
lda A2osX.HWType
|
lda A2osX.HWT
|
||||||
cmp #A2osX.HWType.IIgs
|
cmp #A2osX.HWT.IIgs
|
||||||
bne .1
|
bne .1
|
||||||
|
|
||||||
.OP 65816
|
.OP 65816
|
||||||
|
@ -975,7 +1009,7 @@ IrqMgrInit >LDYAI MSG.IRQ
|
||||||
sec
|
sec
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
.1 cmp #A2osX.HWType.IIc
|
.1 cmp #A2osX.HWT.IIc
|
||||||
beq .2
|
beq .2
|
||||||
|
|
||||||
jsr IrqMgr.TClk
|
jsr IrqMgr.TClk
|
||||||
|
@ -1193,6 +1227,7 @@ TskMgrInit >LDYAI MSG.TSK
|
||||||
|
|
||||||
>LDYAI K.ENV.SIZE get a buffer for ENV
|
>LDYAI K.ENV.SIZE get a buffer for ENV
|
||||||
>SYSCALL NewStkObj Buffer in AUX mem
|
>SYSCALL NewStkObj Buffer in AUX mem
|
||||||
|
|
||||||
bcs .99
|
bcs .99
|
||||||
|
|
||||||
>STYA ZPPtr1
|
>STYA ZPPtr1
|
||||||
|
@ -1376,7 +1411,8 @@ I.ENV.ROOT .AZ "ROOT"
|
||||||
I.ENV.PATH .AZ "PATH=${BOOT}sbin/:${BOOT}bin/"
|
I.ENV.PATH .AZ "PATH=${BOOT}sbin/:${BOOT}bin/"
|
||||||
I.ENV.LIB .AZ "LIB=${BOOT}lib/"
|
I.ENV.LIB .AZ "LIB=${BOOT}lib/"
|
||||||
I.ENV.DRV .AZ "DRV=${BOOT}drv/"
|
I.ENV.DRV .AZ "DRV=${BOOT}drv/"
|
||||||
SBININITD .AZ "${ROOT}sbin/initd"
|
*SBININITD .AZ "${ROOT}sbin/initd"
|
||||||
|
SBININITD .AZ "/A2OSX.BUILD/sbin/initd"
|
||||||
.DA #0 end of ARGV for ExecV
|
.DA #0 end of ARGV for ExecV
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
pMLIGFIEX .DA #2
|
pMLIGFIEX .DA #2
|
||||||
|
|
|
@ -5,7 +5,7 @@ NEW
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
* Bank 1
|
* Bank 1
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
K.SYSCALL .DA 0 $00 : STAT
|
JMP.TABL .DA 0 $00 : STAT
|
||||||
.DA K.ChMod
|
.DA K.ChMod
|
||||||
.DA K.FStat
|
.DA K.FStat
|
||||||
.DA K.Stat
|
.DA K.Stat
|
||||||
|
@ -162,7 +162,7 @@ K.SYSCALL .DA 0 $00 : STAT
|
||||||
* HI Byte :
|
* HI Byte :
|
||||||
* Flags (ROOT....)
|
* Flags (ROOT....)
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
K.SYSCALL.BANK .DA #IO.RRAMWRAMBNK1 $00
|
JMP.BANK .DA #IO.RRAMWRAMBNK1 $00
|
||||||
.DA #0
|
.DA #0
|
||||||
.DA #IO.RRAMWRAMBNK1
|
.DA #IO.RRAMWRAMBNK1
|
||||||
.DA #0
|
.DA #0
|
||||||
|
@ -435,37 +435,37 @@ K.SYSCALL.BANK .DA #IO.RRAMWRAMBNK1 $00
|
||||||
.DA #$C0 FreeStkObj
|
.DA #$C0 FreeStkObj
|
||||||
.DA #0
|
.DA #0
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
* K.SYSCALL2 : From KERNEL (MAIN,AUX), LIB
|
* From KERNEL (MAIN,AUX), LIB
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
K.SYSCALL2 bit K.SYSCALL.BANK,x Get Target BNK
|
JMP.2 bit JMP.BANK,x Get Target BNK
|
||||||
bvc K.SYSCALL2.BANK
|
bvc JMP.B
|
||||||
|
|
||||||
K.SYSCALL2.AUX sta IO.SETREADAUX MAIN to AUX Mem API
|
sta IO.SETREADAUX MAIN to AUX Mem API
|
||||||
sta IO.SETWRITEAUX
|
sta IO.SETWRITEAUX
|
||||||
jsr K.SYSCALL.JMP
|
jsr JMP.JMPX
|
||||||
sta IO.CLRREADAUX
|
sta IO.CLRREADAUX
|
||||||
sta IO.CLRWRITEAUX
|
sta IO.CLRWRITEAUX
|
||||||
rts
|
rts
|
||||||
|
|
||||||
K.SYSCALL2.MAIN sta IO.CLRREADAUX Coming from KERNEL in AUX...
|
JMP.M sta IO.CLRREADAUX Coming from KERNEL in AUX...
|
||||||
sta IO.CLRWRITEAUX
|
sta IO.CLRWRITEAUX
|
||||||
jsr .1
|
jsr .1
|
||||||
|
|
||||||
sta IO.SETREADAUX
|
sta IO.SETREADAUX
|
||||||
sta IO.SETWRITEAUX
|
sta IO.SETWRITEAUX
|
||||||
rts
|
rts
|
||||||
|
|
||||||
.1 bit K.SYSCALL.BANK,x Get Target LC BNK
|
.1 bit JMP.BANK,x Get Target LC BNK
|
||||||
|
|
||||||
|
JMP.B bpl JMP.JMPX 0, E000, no BNK change
|
||||||
|
|
||||||
K.SYSCALL2.BANK bpl K.SYSCALL.JMP 0, E000, no BNK change
|
|
||||||
sta .7+1
|
sta .7+1
|
||||||
lda $D000 #IO.RRAMWRAMBNK1 or #IO.RRAMWRAMBNK2
|
lda $D000 #IO.RRAMWRAMBNK1 or #IO.RRAMWRAMBNK2
|
||||||
cmp K.SYSCALL.BANK,x
|
cmp JMP.BANK,x
|
||||||
beq .7
|
beq .7
|
||||||
|
|
||||||
pha remember source BNK
|
pha remember source BNK
|
||||||
stx .6+1
|
stx .6+1
|
||||||
lda K.SYSCALL.BANK,x
|
lda JMP.BANK,x
|
||||||
tax get Target BNK in x
|
tax get Target BNK in x
|
||||||
bit $C000,x switch to Target BNK
|
bit $C000,x switch to Target BNK
|
||||||
* bit $C000,x
|
* bit $C000,x
|
||||||
|
@ -483,22 +483,21 @@ K.SYSCALL2.BANK bpl K.SYSCALL.JMP 0, E000, no BNK change
|
||||||
.6 ldx #$ff SELF MODIFIED
|
.6 ldx #$ff SELF MODIFIED
|
||||||
.7 lda #$ff SELF MODIFIED
|
.7 lda #$ff SELF MODIFIED
|
||||||
|
|
||||||
K.SYSCALL.JMP jmp (K.SYSCALL,x)
|
JMP.JMPX jmp (JMP.TABL,x)
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
K.SYSCALL.JMPX1A
|
JMP.X1A >PULLW FORPNT
|
||||||
>PULLW FORPNT
|
bra JMP.XA
|
||||||
bra JMPXA
|
|
||||||
K.SYSCALL.JMPX2A
|
JMP.X2A sec
|
||||||
sec
|
|
||||||
.HS 90 BCC
|
.HS 90 BCC
|
||||||
K.SYSCALL.JMPX2 clc
|
JMP.X2 clc
|
||||||
>PULLW FORPNT
|
>PULLW FORPNT
|
||||||
>PULLW TXTPTR
|
>PULLW TXTPTR
|
||||||
bcc K.SYSCALL.JMPX
|
bcc JMP.X
|
||||||
|
|
||||||
JMPXA >PULLA
|
JMP.XA >PULLA
|
||||||
|
|
||||||
K.SYSCALL.JMPX sta IO.SETREADAUX
|
JMP.X sta IO.SETREADAUX
|
||||||
sta IO.SETWRITEAUX
|
sta IO.SETWRITEAUX
|
||||||
jsr JMPX
|
jsr JMPX
|
||||||
sta IO.CLRREADAUX
|
sta IO.CLRREADAUX
|
||||||
|
|
|
@ -12,7 +12,7 @@ NEW
|
||||||
* ## RETURN VALUE
|
* ## RETURN VALUE
|
||||||
* CC
|
* CC
|
||||||
*\--------------------------------------
|
*\--------------------------------------
|
||||||
K.MD5 .EQ K.SYSCALL.JMPX2
|
K.MD5 .EQ JMP.X2
|
||||||
|
|
||||||
* >PULLW FORPNT
|
* >PULLW FORPNT
|
||||||
* >PULLW TXTPTR
|
* >PULLW TXTPTR
|
||||||
|
@ -26,9 +26,9 @@ K.MD5 .EQ K.SYSCALL.JMPX2
|
||||||
* ## RETURN VALUE
|
* ## RETURN VALUE
|
||||||
* A = hMem To S.MD5
|
* A = hMem To S.MD5
|
||||||
*\--------------------------------------
|
*\--------------------------------------
|
||||||
K.MD5Init .EQ K.SYSCALL.JMPX
|
K.MD5Init .EQ JMP.X
|
||||||
|
|
||||||
* jmp K.SYSCALL.JMPX
|
* jmp JMP.X
|
||||||
*/--------------------------------------
|
*/--------------------------------------
|
||||||
* ## MD5Update
|
* ## MD5Update
|
||||||
* Add Data to MD5 computation
|
* Add Data to MD5 computation
|
||||||
|
@ -41,12 +41,12 @@ K.MD5Init .EQ K.SYSCALL.JMPX
|
||||||
* `>SYSCALL MD5Update`
|
* `>SYSCALL MD5Update`
|
||||||
* ## RETURN VALUE
|
* ## RETURN VALUE
|
||||||
*\--------------------------------------
|
*\--------------------------------------
|
||||||
K.MD5Update .EQ K.SYSCALL.JMPX2A
|
K.MD5Update .EQ JMP.X2A
|
||||||
* >PULLW FORPNT get LEN
|
* >PULLW FORPNT get LEN
|
||||||
* >PULLW TXTPTR get DATA
|
* >PULLW TXTPTR get DATA
|
||||||
* >PULLA
|
* >PULLA
|
||||||
|
|
||||||
* jmp K.SYSCALL.JMPX
|
* jmp JMP.X
|
||||||
*/--------------------------------------
|
*/--------------------------------------
|
||||||
* ## MD5Finalize
|
* ## MD5Finalize
|
||||||
* # C
|
* # C
|
||||||
|
@ -57,11 +57,11 @@ K.MD5Update .EQ K.SYSCALL.JMPX2A
|
||||||
* `>SYSCALL MD5Finalize`
|
* `>SYSCALL MD5Finalize`
|
||||||
* ## RETURN VALUE
|
* ## RETURN VALUE
|
||||||
*\--------------------------------------
|
*\--------------------------------------
|
||||||
K.MD5Finalize .EQ K.SYSCALL.JMPX1A
|
K.MD5Finalize .EQ JMP.X1A
|
||||||
* >PULLW FORPNT
|
* >PULLW FORPNT
|
||||||
* >PULLA
|
* >PULLA
|
||||||
|
|
||||||
* jmp K.SYSCALL.JMPX
|
* jmp JMP.X
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
MAN
|
MAN
|
||||||
SAVE usr/src/sys/kernel.s.md5
|
SAVE usr/src/sys/kernel.s.md5
|
||||||
|
|
|
@ -10,10 +10,10 @@ NEW
|
||||||
* `>SYSCALL getpwuid`
|
* `>SYSCALL getpwuid`
|
||||||
* ## RETURN VALUE
|
* ## RETURN VALUE
|
||||||
*\--------------------------------------
|
*\--------------------------------------
|
||||||
K.GetPWUID .EQ K.SYSCALL.JMPX1A
|
K.GetPWUID .EQ JMP.X1A
|
||||||
* >PULLW FORPNT
|
* >PULLW FORPNT
|
||||||
* >PULLA UID
|
* >PULLA UID
|
||||||
* jmp K.SYSCALL.JMPX
|
* jmp JMP.X
|
||||||
*/--------------------------------------
|
*/--------------------------------------
|
||||||
* # GetGRGID
|
* # GetGRGID
|
||||||
* ## C
|
* ## C
|
||||||
|
@ -24,10 +24,10 @@ K.GetPWUID .EQ K.SYSCALL.JMPX1A
|
||||||
* `>SYSCALL getpwname`
|
* `>SYSCALL getpwname`
|
||||||
* ## RETURN VALUE
|
* ## RETURN VALUE
|
||||||
*\--------------------------------------
|
*\--------------------------------------
|
||||||
K.GetGRGID .EQ K.SYSCALL.JMPX1A
|
K.GetGRGID .EQ JMP.X1A
|
||||||
* >PULLW FORPNT
|
* >PULLW FORPNT
|
||||||
* >PULLA GID
|
* >PULLA GID
|
||||||
* jmp K.SYSCALL.JMPX
|
* jmp JMP.X
|
||||||
*/--------------------------------------
|
*/--------------------------------------
|
||||||
* # CloseSession
|
* # CloseSession
|
||||||
* ## C
|
* ## C
|
||||||
|
@ -37,7 +37,7 @@ K.GetGRGID .EQ K.SYSCALL.JMPX1A
|
||||||
* `>SYSCALL CloseSession`
|
* `>SYSCALL CloseSession`
|
||||||
* ## RETURN VALUE
|
* ## RETURN VALUE
|
||||||
*\--------------------------------------
|
*\--------------------------------------
|
||||||
K.CloseSession .EQ K.SYSCALL.JMPX
|
K.CloseSession .EQ JMP.X
|
||||||
*/--------------------------------------
|
*/--------------------------------------
|
||||||
* # OpenSession
|
* # OpenSession
|
||||||
* ## C
|
* ## C
|
||||||
|
@ -48,12 +48,12 @@ K.CloseSession .EQ K.SYSCALL.JMPX
|
||||||
* `>SYSCALL OpenSession`
|
* `>SYSCALL OpenSession`
|
||||||
* ## RETURN VALUE
|
* ## RETURN VALUE
|
||||||
*\--------------------------------------
|
*\--------------------------------------
|
||||||
K.OpenSession .EQ K.SYSCALL.JMPX2
|
K.OpenSession .EQ JMP.X2
|
||||||
|
|
||||||
* >PULLW FORPNT passwd
|
* >PULLW FORPNT passwd
|
||||||
* >PULLW TXTPTR name
|
* >PULLW TXTPTR name
|
||||||
|
|
||||||
* jmp K.SYSCALL.JMPX
|
* jmp JMP.X
|
||||||
*/--------------------------------------
|
*/--------------------------------------
|
||||||
* # GetPWName
|
* # GetPWName
|
||||||
* ## C
|
* ## C
|
||||||
|
@ -64,11 +64,11 @@ K.OpenSession .EQ K.SYSCALL.JMPX2
|
||||||
* `>SYSCALL getpwname`
|
* `>SYSCALL getpwname`
|
||||||
* ## RETURN VALUE
|
* ## RETURN VALUE
|
||||||
*\--------------------------------------
|
*\--------------------------------------
|
||||||
K.GetPWName .EQ K.SYSCALL.JMPX2
|
K.GetPWName .EQ JMP.X2
|
||||||
|
|
||||||
* >PULLW FORPNT
|
* >PULLW FORPNT
|
||||||
* >PULLW TXTPTR
|
* >PULLW TXTPTR
|
||||||
* jmp K.SYSCALL.JMPX
|
* jmp JMP.X
|
||||||
*/--------------------------------------
|
*/--------------------------------------
|
||||||
* # GetGRName
|
* # GetGRName
|
||||||
* ## C
|
* ## C
|
||||||
|
@ -79,11 +79,11 @@ K.GetPWName .EQ K.SYSCALL.JMPX2
|
||||||
* `>SYSCALL getpwname`
|
* `>SYSCALL getpwname`
|
||||||
* ## RETURN VALUE
|
* ## RETURN VALUE
|
||||||
*\--------------------------------------
|
*\--------------------------------------
|
||||||
K.GetGRName .EQ K.SYSCALL.JMPX2
|
K.GetGRName .EQ JMP.X2
|
||||||
|
|
||||||
* >PULLW FORPNT
|
* >PULLW FORPNT
|
||||||
* >PULLW TXTPTR
|
* >PULLW TXTPTR
|
||||||
* jmp K.SYSCALL.JMPX
|
* jmp JMP.X
|
||||||
*/--------------------------------------
|
*/--------------------------------------
|
||||||
* # PutPW
|
* # PutPW
|
||||||
* ## C
|
* ## C
|
||||||
|
@ -105,7 +105,7 @@ K.PutPW
|
||||||
*\--------------------------------------
|
*\--------------------------------------
|
||||||
K.PutGR >PULLW TXTPTR
|
K.PutGR >PULLW TXTPTR
|
||||||
|
|
||||||
jsr K.SYSCALL.JMPX
|
jsr JMP.X
|
||||||
bcc PWD.FlushFiles
|
bcc PWD.FlushFiles
|
||||||
|
|
||||||
rts
|
rts
|
||||||
|
|
|
@ -36,7 +36,7 @@ K.SListAddData
|
||||||
* ## RETURN VALUE
|
* ## RETURN VALUE
|
||||||
*\--------------------------------------
|
*\--------------------------------------
|
||||||
K.SListSetData >PULLW ZPSListDataLen
|
K.SListSetData >PULLW ZPSListDataLen
|
||||||
jmp K.SYSCALL.JMPX2A
|
jmp JMP.X2A
|
||||||
*/--------------------------------------
|
*/--------------------------------------
|
||||||
* # SListGetByID
|
* # SListGetByID
|
||||||
* ## ASM
|
* ## ASM
|
||||||
|
@ -47,7 +47,7 @@ K.SListSetData >PULLW ZPSListDataLen
|
||||||
* ## RETURN VALUE
|
* ## RETURN VALUE
|
||||||
* Y,A = Next KeyID
|
* Y,A = Next KeyID
|
||||||
*\--------------------------------------
|
*\--------------------------------------
|
||||||
K.SListGetByID .EQ K.SYSCALL.JMPX2A
|
K.SListGetByID .EQ JMP.X2A
|
||||||
* >PULLW FORPNT
|
* >PULLW FORPNT
|
||||||
* >PULLW TXTPTR
|
* >PULLW TXTPTR
|
||||||
* >PULLA
|
* >PULLA
|
||||||
|
@ -62,7 +62,7 @@ K.SListGetByID .EQ K.SYSCALL.JMPX2A
|
||||||
* Y,A = KeyID
|
* Y,A = KeyID
|
||||||
* X = KeyLen
|
* X = KeyLen
|
||||||
*\--------------------------------------
|
*\--------------------------------------
|
||||||
K.SListNewKey .EQ K.SYSCALL.JMPX2A
|
K.SListNewKey .EQ JMP.X2A
|
||||||
* >PULLW FORPNT
|
* >PULLW FORPNT
|
||||||
* >PULLW TXTPTR
|
* >PULLW TXTPTR
|
||||||
* >PULLA
|
* >PULLA
|
||||||
|
@ -77,7 +77,7 @@ K.SListNewKey .EQ K.SYSCALL.JMPX2A
|
||||||
* Y,A = KeyID
|
* Y,A = KeyID
|
||||||
* X = Key Length
|
* X = Key Length
|
||||||
*\--------------------------------------
|
*\--------------------------------------
|
||||||
K.SListLookup .EQ K.SYSCALL.JMPX2A
|
K.SListLookup .EQ JMP.X2A
|
||||||
* >PULLW FORPNT
|
* >PULLW FORPNT
|
||||||
* >PULLW TXTPTR
|
* >PULLW TXTPTR
|
||||||
* >PULLA
|
* >PULLA
|
||||||
|
@ -88,7 +88,7 @@ K.SListLookup .EQ K.SYSCALL.JMPX2A
|
||||||
* `>SYSCALL SListFree`
|
* `>SYSCALL SListFree`
|
||||||
* ## RETURN VALUE
|
* ## RETURN VALUE
|
||||||
*\--------------------------------------
|
*\--------------------------------------
|
||||||
K.SListFree .EQ K.SYSCALL.JMPX
|
K.SListFree .EQ JMP.X
|
||||||
*/--------------------------------------
|
*/--------------------------------------
|
||||||
* # SListNew
|
* # SListNew
|
||||||
* ## ASM
|
* ## ASM
|
||||||
|
@ -97,7 +97,7 @@ K.SListFree .EQ K.SYSCALL.JMPX
|
||||||
* ## RETURN VALUE
|
* ## RETURN VALUE
|
||||||
* A=hSList
|
* A=hSList
|
||||||
*\--------------------------------------
|
*\--------------------------------------
|
||||||
K.SListNew .EQ K.SYSCALL.JMPX
|
K.SListNew .EQ JMP.X
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
MAN
|
MAN
|
||||||
SAVE usr/src/sys/kernel.s.slist
|
SAVE usr/src/sys/kernel.s.slist
|
||||||
|
|
|
@ -53,7 +53,7 @@ SLISTX.GetData jsr SLISTX.Select
|
||||||
ror SLISTX.b0
|
ror SLISTX.b0
|
||||||
|
|
||||||
.11 ldx #SYS.GetMem
|
.11 ldx #SYS.GetMem
|
||||||
jsr K.SYSCALL2.MAIN !!! Get a buffer In MAIN Mem !!!
|
jsr JMP.M !!! Get a buffer In MAIN Mem !!!
|
||||||
bcs .9
|
bcs .9
|
||||||
|
|
||||||
stx .88+1
|
stx .88+1
|
||||||
|
@ -473,6 +473,7 @@ SLISTX.IsIDValid
|
||||||
beq .8
|
beq .8
|
||||||
|
|
||||||
.1 bit SLISTX.Opt SL._
|
.1 bit SLISTX.Opt SL._
|
||||||
|
|
||||||
.2 bvc .3
|
.2 bvc .3
|
||||||
|
|
||||||
cmp #'_'
|
cmp #'_'
|
||||||
|
|
|
@ -9,11 +9,11 @@ NEW
|
||||||
* `>SYSCALL StrVSet`
|
* `>SYSCALL StrVSet`
|
||||||
* ## RETURN VALUE
|
* ## RETURN VALUE
|
||||||
*\--------------------------------------
|
*\--------------------------------------
|
||||||
K.StrVSet .EQ K.SYSCALL.JMPX2A
|
K.StrVSet .EQ JMP.X2A
|
||||||
* >PULLW FORPNT ptr
|
* >PULLW FORPNT ptr
|
||||||
* >PULLW TXTPTR id
|
* >PULLW TXTPTR id
|
||||||
* >PULLA
|
* >PULLA
|
||||||
* jmp K.SYSCALL.JMPX
|
* jmp JMP.X
|
||||||
*/--------------------------------------
|
*/--------------------------------------
|
||||||
* # StrVGet
|
* # StrVGet
|
||||||
* ## ASM
|
* ## ASM
|
||||||
|
@ -25,11 +25,11 @@ K.StrVSet .EQ K.SYSCALL.JMPX2A
|
||||||
* CC: Y,A = Ptr
|
* CC: Y,A = Ptr
|
||||||
* CS: Y,A = NULL
|
* CS: Y,A = NULL
|
||||||
*\--------------------------------------
|
*\--------------------------------------
|
||||||
K.StrVGet .EQ K.SYSCALL.JMPX2A
|
K.StrVGet .EQ JMP.X2A
|
||||||
* >PULLW FORPNT ptr
|
* >PULLW FORPNT ptr
|
||||||
* >PULLW TXTPTR id
|
* >PULLW TXTPTR id
|
||||||
* >PULLA
|
* >PULLA
|
||||||
* jmp K.SYSCALL.JMPX
|
* jmp JMP.X
|
||||||
*/--------------------------------------
|
*/--------------------------------------
|
||||||
* # StrVNew
|
* # StrVNew
|
||||||
* ## ASM
|
* ## ASM
|
||||||
|
@ -37,7 +37,7 @@ K.StrVGet .EQ K.SYSCALL.JMPX2A
|
||||||
* `>SYSCALL StrVNew`
|
* `>SYSCALL StrVNew`
|
||||||
* ## RETURN VALUE
|
* ## RETURN VALUE
|
||||||
*\--------------------------------------
|
*\--------------------------------------
|
||||||
K.StrVNew .EQ K.SYSCALL.JMPX
|
K.StrVNew .EQ JMP.X
|
||||||
*/--------------------------------------
|
*/--------------------------------------
|
||||||
* # StrVFree
|
* # StrVFree
|
||||||
* ## ASM
|
* ## ASM
|
||||||
|
@ -45,7 +45,7 @@ K.StrVNew .EQ K.SYSCALL.JMPX
|
||||||
* `>SYSCALL StrVFree`
|
* `>SYSCALL StrVFree`
|
||||||
* ## RETURN VALUE
|
* ## RETURN VALUE
|
||||||
*\--------------------------------------
|
*\--------------------------------------
|
||||||
K.StrVFree .EQ K.SYSCALL.JMPX
|
K.StrVFree .EQ JMP.X
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
MAN
|
MAN
|
||||||
SAVE usr/src/sys/kernel.s.strv
|
SAVE usr/src/sys/kernel.s.strv
|
||||||
|
|
|
@ -16,7 +16,7 @@ K.Time >PULLW FORPNT
|
||||||
>LDYAI GP.DATE
|
>LDYAI GP.DATE
|
||||||
>STYA TXTPTR
|
>STYA TXTPTR
|
||||||
ldx #SYS.PTime2Time
|
ldx #SYS.PTime2Time
|
||||||
jmp K.SYSCALL.JMPX
|
jmp JMP.X
|
||||||
*/--------------------------------------
|
*/--------------------------------------
|
||||||
* # StrFTime
|
* # StrFTime
|
||||||
* ## C
|
* ## C
|
||||||
|
@ -47,7 +47,7 @@ K.Time >PULLW FORPNT
|
||||||
K.StrFTime >PULLW ZPPtr3 S.TIME
|
K.StrFTime >PULLW ZPPtr3 S.TIME
|
||||||
>PULLW TXTPTR format
|
>PULLW TXTPTR format
|
||||||
>PULLW FORPNT str
|
>PULLW FORPNT str
|
||||||
jmp K.SYSCALL.JMPX
|
jmp JMP.X
|
||||||
*/--------------------------------------
|
*/--------------------------------------
|
||||||
* # PTime2Time
|
* # PTime2Time
|
||||||
* Convert ProDOS Time To S.TIME
|
* Convert ProDOS Time To S.TIME
|
||||||
|
@ -59,11 +59,11 @@ K.StrFTime >PULLW ZPPtr3 S.TIME
|
||||||
* `>SYSCALL PTime2Time`
|
* `>SYSCALL PTime2Time`
|
||||||
* ## RETURN VALUE
|
* ## RETURN VALUE
|
||||||
*\--------------------------------------
|
*\--------------------------------------
|
||||||
K.PTime2Time .EQ K.SYSCALL.JMPX2
|
K.PTime2Time .EQ JMP.X2
|
||||||
|
|
||||||
* >PULLW FORPNT S.TIME
|
* >PULLW FORPNT S.TIME
|
||||||
* >PULLW TXTPTR ptime
|
* >PULLW TXTPTR ptime
|
||||||
* jmp K.SYSCALL.JMPX
|
* jmp JMP.X
|
||||||
*/--------------------------------------
|
*/--------------------------------------
|
||||||
* # CTime2Time
|
* # CTime2Time
|
||||||
* Convert CTime Time To S.TIME
|
* Convert CTime Time To S.TIME
|
||||||
|
@ -75,11 +75,11 @@ K.PTime2Time .EQ K.SYSCALL.JMPX2
|
||||||
* `>SYSCALL CTime2Time`
|
* `>SYSCALL CTime2Time`
|
||||||
* ## RETURN VALUE
|
* ## RETURN VALUE
|
||||||
*\--------------------------------------
|
*\--------------------------------------
|
||||||
K.CTime2Time .EQ K.SYSCALL.JMPX2
|
K.CTime2Time .EQ JMP.X2
|
||||||
|
|
||||||
* >PULLW FORPNT S.TIME
|
* >PULLW FORPNT S.TIME
|
||||||
* >PULLW TXTPTR ctime
|
* >PULLW TXTPTR ctime
|
||||||
* jmp K.SYSCALL.JMPX
|
* jmp JMP.X
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
MAN
|
MAN
|
||||||
SAVE usr/src/sys/kernel.s.time
|
SAVE usr/src/sys/kernel.s.time
|
||||||
|
|
|
@ -6,6 +6,9 @@ NEW
|
||||||
|
|
||||||
.TF sys/kernel
|
.TF sys/kernel
|
||||||
|
|
||||||
|
K8M .EQ 0
|
||||||
|
MAIN.ORG .EQ $1000
|
||||||
|
|
||||||
.INB inc/macros.i
|
.INB inc/macros.i
|
||||||
.INB inc/a2osx.i
|
.INB inc/a2osx.i
|
||||||
.INB inc/io.i
|
.INB inc/io.i
|
||||||
|
@ -24,23 +27,26 @@ NEW
|
||||||
A2osX.Unpak >STYA ZPOutBufPtr
|
A2osX.Unpak >STYA ZPOutBufPtr
|
||||||
.INB usr/src/shared/x.unpak.s
|
.INB usr/src/shared/x.unpak.s
|
||||||
|
|
||||||
PAKME.MAIN .DA MAIN
|
GP .DA #0
|
||||||
PAKME.AUX .DA AUX
|
.DA GP.S
|
||||||
PAKME.D1 .DA D1
|
|
||||||
PAKME.D2 .DA D2
|
GP.B .PH $0140
|
||||||
PAKME.E0 .DA E0
|
.INB usr/src/sys/kernel.s.gp
|
||||||
|
.EP
|
||||||
|
|
||||||
|
GP.S .EQ *-GP.B
|
||||||
|
|
||||||
MAIN .DA #0
|
MAIN .DA #0
|
||||||
.DA MAIN.S
|
.DA MAIN.S
|
||||||
|
|
||||||
MAIN.B .PH $1000
|
MAIN.B .PH MAIN.ORG
|
||||||
.INB usr/src/sys/kernel.s.gp
|
|
||||||
.INB usr/src/sys/kernel.s.core
|
.INB usr/src/sys/kernel.s.core
|
||||||
.INB usr/src/sys/kernel.s.drv
|
.INB usr/src/sys/kernel.s.drv
|
||||||
.INB usr/src/sys/kernel.s.pft
|
.INB usr/src/sys/kernel.s.pft
|
||||||
.INB usr/src/sys/kernel.s.fs
|
.INB usr/src/sys/kernel.s.fs
|
||||||
.INB usr/src/sys/kernel.s.mathf
|
.INB usr/src/sys/kernel.s.mathf
|
||||||
.EP
|
.EP
|
||||||
|
|
||||||
MAIN.S .EQ *-MAIN.B
|
MAIN.S .EQ *-MAIN.B
|
||||||
|
|
||||||
AUX .DA #0
|
AUX .DA #0
|
||||||
|
@ -61,6 +67,7 @@ AUX.B .PH Mem.XHiMem
|
||||||
.INB usr/src/sys/kernel.s.blistx
|
.INB usr/src/sys/kernel.s.blistx
|
||||||
.INB usr/src/sys/kernel.s.errorx
|
.INB usr/src/sys/kernel.s.errorx
|
||||||
.EP
|
.EP
|
||||||
|
|
||||||
AUX.S .EQ *-AUX.B
|
AUX.S .EQ *-AUX.B
|
||||||
|
|
||||||
D1 .DA #0
|
D1 .DA #0
|
||||||
|
@ -77,6 +84,7 @@ D1.B .PH $D000
|
||||||
.INB usr/src/sys/kernel.s.sock
|
.INB usr/src/sys/kernel.s.sock
|
||||||
.INB usr/src/sys/kernel.s.pipe
|
.INB usr/src/sys/kernel.s.pipe
|
||||||
.EP
|
.EP
|
||||||
|
|
||||||
D1.S .EQ *-D1.B
|
D1.S .EQ *-D1.B
|
||||||
|
|
||||||
D2 .DA #0
|
D2 .DA #0
|
||||||
|
@ -93,6 +101,7 @@ D2.B .PH $D000
|
||||||
.INB usr/src/sys/kernel.s.bin
|
.INB usr/src/sys/kernel.s.bin
|
||||||
.INB usr/src/sys/kernel.s.ps
|
.INB usr/src/sys/kernel.s.ps
|
||||||
.EP
|
.EP
|
||||||
|
|
||||||
D2.S .EQ *-D2.B
|
D2.S .EQ *-D2.B
|
||||||
|
|
||||||
E0 .DA #0
|
E0 .DA #0
|
||||||
|
@ -125,10 +134,17 @@ DevMgr.FreeMem .EQ *
|
||||||
|
|
||||||
E0.S .EQ *-E0.B
|
E0.S .EQ *-E0.B
|
||||||
|
|
||||||
|
PAKME.GP .DA GP
|
||||||
|
PAKME.MAIN .DA MAIN
|
||||||
|
PAKME.AUX .DA AUX
|
||||||
|
PAKME.D1 .DA D1
|
||||||
|
PAKME.D2 .DA D2
|
||||||
|
PAKME.E0 .DA E0
|
||||||
|
|
||||||
.AS "PAKME" TAG
|
.AS "PAKME" TAG
|
||||||
.DA $2000 BIN ORG
|
.DA $2000 BIN ORG
|
||||||
.DA #5 Chunk Count
|
.DA #6 Chunk Count
|
||||||
.DA PAKME.MAIN Chunks
|
.DA PAKME.GP Chunks
|
||||||
|
|
||||||
.INB usr/src/sys/kernel.s.ctrl
|
.INB usr/src/sys/kernel.s.ctrl
|
||||||
MAN
|
MAN
|
||||||
|
|
|
@ -6,6 +6,9 @@ NEW
|
||||||
|
|
||||||
.TF sys/krnl8m
|
.TF sys/krnl8m
|
||||||
|
|
||||||
|
K8M .EQ 1
|
||||||
|
MAIN.ORG .EQ $8000
|
||||||
|
|
||||||
.INB inc/macros.i
|
.INB inc/macros.i
|
||||||
.INB inc/a2osx.i
|
.INB inc/a2osx.i
|
||||||
.INB inc/io.i
|
.INB inc/io.i
|
||||||
|
@ -24,17 +27,19 @@ NEW
|
||||||
A2osX.Unpak >STYA ZPOutBufPtr
|
A2osX.Unpak >STYA ZPOutBufPtr
|
||||||
.INB usr/src/shared/x.unpak.s
|
.INB usr/src/shared/x.unpak.s
|
||||||
|
|
||||||
PAKME.MAIN .DA MAIN
|
GP .DA #0
|
||||||
PAKME.AUX .DA AUX
|
.DA GP.S
|
||||||
PAKME.D1 .DA D1
|
|
||||||
PAKME.D2 .DA D2
|
GP.B .PH $0140
|
||||||
PAKME.E0 .DA E0
|
.INB usr/src/sys/kernel.s.gp
|
||||||
|
.EP
|
||||||
|
|
||||||
|
GP.S .EQ *-GP.B
|
||||||
|
|
||||||
MAIN .DA #0
|
MAIN .DA #0
|
||||||
.DA MAIN.S
|
.DA MAIN.S
|
||||||
|
|
||||||
MAIN.B .PH $1000
|
MAIN.B .PH MAIN.ORG
|
||||||
.INB usr/src/sys/kernel.s.gp
|
|
||||||
.INB usr/src/sys/kernel.s.core
|
.INB usr/src/sys/kernel.s.core
|
||||||
.INB usr/src/sys/kernel.s.drv
|
.INB usr/src/sys/kernel.s.drv
|
||||||
.INB usr/src/sys/kernel.s.pft
|
.INB usr/src/sys/kernel.s.pft
|
||||||
|
@ -125,10 +130,17 @@ DevMgr.FreeMem .EQ *
|
||||||
|
|
||||||
E0.S .EQ *-E0.B
|
E0.S .EQ *-E0.B
|
||||||
|
|
||||||
|
PAKME.GP .DA GP
|
||||||
|
PAKME.MAIN .DA MAIN
|
||||||
|
PAKME.AUX .DA AUX
|
||||||
|
PAKME.D1 .DA D1
|
||||||
|
PAKME.D2 .DA D2
|
||||||
|
PAKME.E0 .DA E0
|
||||||
|
|
||||||
.AS "PAKME" TAG
|
.AS "PAKME" TAG
|
||||||
.DA $2000 BIN ORG
|
.DA $2000 BIN ORG
|
||||||
.DA #5 Chunk Count
|
.DA #5 Chunk Count
|
||||||
.DA PAKME.MAIN Chunks
|
.DA PAKME.GP Chunks
|
||||||
|
|
||||||
.INB usr/src/sys/kernel.s.ctrl
|
.INB usr/src/sys/kernel.s.ctrl
|
||||||
MAN
|
MAN
|
||||||
|
|
Loading…
Reference in New Issue
Block a user