mirror of
https://github.com/A2osX/A2osX.git
synced 2025-04-22 16:40:09 +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.
@ -140,27 +140,43 @@ A2osX.QC.Start2 sec
|
||||
sta $2E0-1,x ROOT sz for KERNEL
|
||||
dex
|
||||
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
|
||||
|
||||
ldy #0
|
||||
|
||||
.7 inx
|
||||
.9 inx
|
||||
iny
|
||||
lda SYSKERNEL,y
|
||||
lda (TmpPtr1),y
|
||||
sta $280,x
|
||||
cpy SYSKERNEL
|
||||
bne .7
|
||||
tya
|
||||
cmp (TmpPtr1)
|
||||
bne .9
|
||||
|
||||
stx $280
|
||||
|
||||
jsr A2osX.QC.Load
|
||||
bcs *
|
||||
.8 >LDYAI MSG.INIT1OK
|
||||
|
||||
>LDYAI MSG.INIT1OK
|
||||
sec
|
||||
jsr A2osX.QC.PrintYA
|
||||
|
||||
A2osX.QC.JMP >DEBUGOA
|
||||
>DEBUGOA
|
||||
jmp $2000
|
||||
*--------------------------------------
|
||||
A2osX.QC.SetPFX jsr MLI
|
||||
@ -257,6 +273,7 @@ MLICLOSE03 .DA #1
|
||||
.BS 1
|
||||
*--------------------------------------
|
||||
SYSKERNEL .PS "sys/kernel"
|
||||
SYSKRNL8M .PS "sys/krnl8m"
|
||||
*--------------------------------------
|
||||
MSG.INIT1 .PS "A2osX[Stage1]:Init"
|
||||
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
|
||||
lda IO.RRAMWRAMBNK2
|
||||
|
||||
ldx #0
|
||||
.1 lda A2osX.QC.B.Start,x Still at $2xxx !!! not moved to $1xxx
|
||||
lda GP.KVER
|
||||
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
|
||||
lda A2osX.QC.B.Start+$100,x
|
||||
sta $D200,x
|
||||
lda A2osX.QC.B.Start+$200,x
|
||||
sta $D300,x
|
||||
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
|
||||
jsr PrintFYA
|
||||
@ -691,6 +706,7 @@ SYSTEM.END .EQ *
|
||||
A2osX.QC.B.Start
|
||||
A2osX.QC.B.BOOT .EQ *+4
|
||||
A2osX.QC.B.ROOT .EQ *+4+64
|
||||
|
||||
.INB usr/src/a2osx.s.qc
|
||||
*--------------------------------------
|
||||
MAN
|
||||
|
@ -411,7 +411,7 @@ CS.RUN.Arc >LDYA ZPChunkLen
|
||||
|
||||
>LDYA ZPChunkLen
|
||||
jsr X.Arc
|
||||
* bcs .9
|
||||
bcs .9
|
||||
|
||||
stx ZPAlg
|
||||
>STYA ZPChunkPakedLen
|
||||
@ -485,8 +485,7 @@ CS.RUN.WriteStore
|
||||
bcs .9
|
||||
|
||||
>PUSHW L.MSG.ARCED
|
||||
ldx ZPAlg
|
||||
>PUSHW L.MSG.STORED,x
|
||||
>PUSHW L.MSG.STORED
|
||||
>PUSHW ZPChunkPakedLen
|
||||
>PUSHW ZPChunkNewOfs
|
||||
>PUSHBI 6
|
||||
|
@ -346,8 +346,8 @@ CS.RUN.PROBE >LDYA L.MSG.PROBE
|
||||
sta AARP.PRB.SPA+2
|
||||
sta AARP.PRB.TPA+2
|
||||
|
||||
lda A2osX.TIMER16
|
||||
eor A2osX.TIMER16+1
|
||||
lda A2osX.T16
|
||||
eor A2osX.T16+1
|
||||
bne .1
|
||||
|
||||
inc
|
||||
@ -463,7 +463,7 @@ CS.RUN.EtcFiles >LDYAI 256
|
||||
|
||||
>PUSHYA
|
||||
>PUSHW L.CFG.DefaultHost
|
||||
>PUSHW A2osX.TIMER16
|
||||
>PUSHW A2osX.T16
|
||||
>PUSHBI 2
|
||||
>SYSCALL SPrintF
|
||||
|
||||
|
@ -711,8 +711,8 @@ CS.RUN.InitCat lda CatSize
|
||||
|
||||
>PUSHW pData >PUSHEA.G VolName
|
||||
>PUSHW L.FMT.BLANK
|
||||
>PUSHW A2osX.TIMER16
|
||||
>PUSHW A2osX.RANDOM16
|
||||
>PUSHW A2osX.T16
|
||||
>PUSHW A2osX.R16
|
||||
>PUSHBI 4
|
||||
>SYSCALL SPrintF
|
||||
rts
|
||||
|
@ -12,7 +12,7 @@ DHCP.INIT lda IPCFG+S.NETCFG.STATUS
|
||||
|
||||
ldx #3
|
||||
|
||||
.1 eor A2osX.TIMER16,x
|
||||
.1 eor A2osX.T16,x
|
||||
sta DHCP.DISC.XID,x
|
||||
sta DHCP.REQ.XID,x
|
||||
dex
|
||||
|
@ -19,7 +19,7 @@ ETC.ReadFiles >LDYAI 256
|
||||
|
||||
>PUSHW L.IPCFG.HOSTNAME
|
||||
>PUSHW L.CFG.DefaultHost
|
||||
>PUSHW A2osX.TIMER16
|
||||
>PUSHW A2osX.T16
|
||||
>PUSHBI 2
|
||||
>SYSCALL SPrintF
|
||||
|
||||
|
@ -40,9 +40,9 @@ CS.RUN.TLS jsr CS.RUN.TLS.init
|
||||
CS.RUN.TLS.init >LDYA L.MSG.TLS
|
||||
>SYSCALL PutS
|
||||
|
||||
lda A2osX.RANDOM16
|
||||
lda A2osX.R16
|
||||
sta ZPPtr1
|
||||
lda A2osX.RANDOM16+1
|
||||
lda A2osX.R16+1
|
||||
and #$7F
|
||||
sta ZPPtr1+1
|
||||
|
||||
|
@ -180,14 +180,14 @@ CS.RUN.OPENSKT ldx #3
|
||||
dex
|
||||
bpl .2
|
||||
|
||||
lda A2osX.RANDOM16
|
||||
eor A2osX.TIMER16+1
|
||||
lda A2osX.R16
|
||||
eor A2osX.T16+1
|
||||
>STA.G SA.LOCAL+S.SOCKADDR.PORT
|
||||
>STA.G SA.REMOTE+S.SOCKADDR.PORT
|
||||
sta Identifier
|
||||
|
||||
lda A2osX.RANDOM16+1
|
||||
eor A2osX.TIMER16
|
||||
lda A2osX.R16+1
|
||||
eor A2osX.T16
|
||||
>STA.G SA.LOCAL+S.SOCKADDR.PORT+1
|
||||
>STA.G SA.REMOTE+S.SOCKADDR.PORT+1
|
||||
sta Identifier+1
|
||||
|
@ -101,7 +101,7 @@ CS.RUN jsr Init.TimeOut
|
||||
bcs .91
|
||||
>STA.G hSocket
|
||||
ldx #3
|
||||
.21 lda A2osX.TIMER16,x
|
||||
.21 lda A2osX.T16,x
|
||||
sta RPC.Request,x
|
||||
dex
|
||||
bpl .21
|
||||
|
@ -246,17 +246,17 @@ CS.RUN.GetFile stz hFILE
|
||||
plp
|
||||
rts
|
||||
*--------------------------------------
|
||||
CS.RUN.TYPESUBT lda A2osX.HWType
|
||||
CS.RUN.TYPESUBT lda A2osX.HWT
|
||||
asl
|
||||
tax
|
||||
|
||||
>LDYA L.TYPES,x
|
||||
jsr CS.RUN.PRINTYA
|
||||
|
||||
lda A2osX.HWType
|
||||
lda A2osX.HWT
|
||||
beq .8 Unknown
|
||||
|
||||
cmp #A2osX.HWType.IIc
|
||||
cmp #A2osX.HWT.IIc
|
||||
bcc .1
|
||||
|
||||
>PUSHW L.SUBT.ROM //c & IIgs
|
||||
|
@ -156,12 +156,12 @@ Dev.Detect >STYA ZPArgPtr
|
||||
Dev.ParseArgs lda (ZPArgPtr)
|
||||
bne .1
|
||||
|
||||
lda A2osX.RANDOM16
|
||||
eor A2osX.TIMER16
|
||||
lda A2osX.R16
|
||||
eor A2osX.T16
|
||||
sta DCB+S.DCB.NIC.MAC+3
|
||||
eor A2osX.RANDOM16+1
|
||||
eor A2osX.R16+1
|
||||
sta DCB+S.DCB.NIC.MAC+4
|
||||
eor A2osX.TIMER16+1
|
||||
eor A2osX.T16+1
|
||||
sta DCB+S.DCB.NIC.MAC+5
|
||||
clc
|
||||
rts
|
||||
|
@ -58,8 +58,8 @@ L.OSD .DA OSD
|
||||
*--------------------------------------
|
||||
Dev.Detect >LDYA L.MSG.DETECT
|
||||
>SYSCALL PutS
|
||||
lda A2osX.HWType
|
||||
cmp #A2osX.HWType.IIc
|
||||
lda A2osX.HWT
|
||||
cmp #A2osX.HWT.IIc
|
||||
bcc .1
|
||||
|
||||
* stz DCB+S.DCB.GFX.S //c : 80c Mode
|
||||
|
@ -107,12 +107,12 @@ Dev.Detect >STYA ZPArgPtr
|
||||
Dev.ParseArgs lda (ZPArgPtr)
|
||||
bne .1
|
||||
|
||||
lda A2osX.RANDOM16
|
||||
eor A2osX.TIMER16
|
||||
lda A2osX.R16
|
||||
eor A2osX.T16
|
||||
sta DCB+S.DCB.NIC.MAC+3
|
||||
eor A2osX.RANDOM16+1
|
||||
eor A2osX.R16+1
|
||||
sta DCB+S.DCB.NIC.MAC+4
|
||||
eor A2osX.TIMER16+1
|
||||
eor A2osX.T16+1
|
||||
sta DCB+S.DCB.NIC.MAC+5
|
||||
clc
|
||||
rts
|
||||
|
@ -134,12 +134,12 @@ Dev.Detect >STYA ZPArgPtr
|
||||
Dev.ParseArgs lda (ZPArgPtr)
|
||||
bne .1
|
||||
|
||||
lda A2osX.RANDOM16
|
||||
eor A2osX.TIMER16
|
||||
lda A2osX.R16
|
||||
eor A2osX.T16
|
||||
sta DCB+S.DCB.NIC.MAC+3
|
||||
eor A2osX.RANDOM16+1
|
||||
eor A2osX.R16+1
|
||||
sta DCB+S.DCB.NIC.MAC+4
|
||||
eor A2osX.TIMER16+1
|
||||
eor A2osX.T16+1
|
||||
sta DCB+S.DCB.NIC.MAC+5
|
||||
clc
|
||||
rts
|
||||
|
@ -128,12 +128,12 @@ Dev.Detect >STYA ZPArgPtr
|
||||
Dev.ParseArgs lda (ZPArgPtr)
|
||||
bne .1
|
||||
|
||||
lda A2osX.RANDOM16
|
||||
eor A2osX.TIMER16
|
||||
lda A2osX.R16
|
||||
eor A2osX.T16
|
||||
sta DCB+S.DCB.NIC.MAC+3
|
||||
eor A2osX.RANDOM16+1
|
||||
eor A2osX.R16+1
|
||||
sta DCB+S.DCB.NIC.MAC+4
|
||||
eor A2osX.TIMER16+1
|
||||
eor A2osX.T16+1
|
||||
sta DCB+S.DCB.NIC.MAC+5
|
||||
clc
|
||||
rts
|
||||
|
@ -132,12 +132,12 @@ Dev.Detect >STYA ZPArgPtr
|
||||
Dev.ParseArgs lda (ZPArgPtr)
|
||||
bne .1
|
||||
|
||||
lda A2osX.RANDOM16
|
||||
eor A2osX.TIMER16
|
||||
lda A2osX.R16
|
||||
eor A2osX.T16
|
||||
sta DCB+S.DCB.NIC.MAC+3
|
||||
eor A2osX.RANDOM16+1
|
||||
eor A2osX.R16+1
|
||||
sta DCB+S.DCB.NIC.MAC+4
|
||||
eor A2osX.TIMER16+1
|
||||
eor A2osX.T16+1
|
||||
sta DCB+S.DCB.NIC.MAC+5
|
||||
clc
|
||||
rts
|
||||
|
@ -22,54 +22,54 @@ pBase .EQ $DE 8 Bytes
|
||||
ZPBIN .EQ $E0 32 bytes
|
||||
PSCTX.SIZE .EQ $100-pCode
|
||||
*--------------------------------------
|
||||
A2osX.ZCALL .EQ $0000
|
||||
*A2osX.ZCALL .EQ $0000
|
||||
*--------------------------------------
|
||||
* A2osX GLOBAL PAGE
|
||||
* $1000->$1012 : Public Vectors
|
||||
*--------------------------------------
|
||||
A2osX.SYSCALL .EQ $1000
|
||||
A2osX.LIBCALL .EQ $1003
|
||||
A2osX.ATKCALL .EQ $1006
|
||||
A2osX.FPUCALL .EQ $1009
|
||||
A2osX.BADCALL .EQ $100C
|
||||
A2osX.GP .EQ $0140
|
||||
A2osX.SYSCALL .EQ A2osX.GP+00
|
||||
A2osX.LIBCALL .EQ A2osX.GP+03
|
||||
A2osX.ATKCALL .EQ A2osX.GP+06
|
||||
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 $11D0 0=console, 1-8=VT100, 9=GFX
|
||||
A2osX.ASCREEN .EQ $11DA Active Screen
|
||||
* 5 bytes
|
||||
A2osX.KVER .EQ $11E0 WORD
|
||||
* 1 byte
|
||||
A2osX.IRQMode .EQ $11E3
|
||||
A2osX.ATLKSID .EQ $11E4
|
||||
A2osX.FSID .EQ $11E5
|
||||
A2osX.CPUTYPE .EQ $11E6
|
||||
A2osX.CPUSPEED .EQ $11E7 WORD, (->255.99 Mhz)
|
||||
|
||||
A2osX.Z80SLOT .EQ $11E9
|
||||
A2osX.HWType .EQ $11EA
|
||||
A2osX.HWType.UNKNOWN .EQ 0
|
||||
A2osX.HWType.IIe .EQ 1
|
||||
A2osX.HWType.IIc .EQ 2
|
||||
A2osX.HWType.IIgs .EQ 3
|
||||
A2osX.HWSubT .EQ $11EB
|
||||
A2osX.SCRNDEVS .EQ A2osX.GP+22 0=console, 1-8=VT100, 9=GFX
|
||||
A2osX.ASCREEN .EQ A2osX.GP+32 Active Screen
|
||||
A2osX.FSID .EQ A2osX.GP+33
|
||||
A2osX.KVER .EQ A2osX.GP+34 WORD
|
||||
A2osX.IRQMode .EQ A2osX.GP+36
|
||||
A2osX.ATLKSID .EQ A2osX.GP+37
|
||||
A2osX.CPUTYPE .EQ A2osX.GP+38
|
||||
A2osX.CPUSPEED .EQ A2osX.GP+39 WORD, (->255.99 Mhz)
|
||||
*
|
||||
A2osX.Z80SLOT .EQ A2osX.GP+41
|
||||
A2osX.HWT .EQ A2osX.GP+42
|
||||
A2osX.HWT.UNKNOWN .EQ 0
|
||||
A2osX.HWT.IIe .EQ 1
|
||||
A2osX.HWT.IIc .EQ 2
|
||||
A2osX.HWT.IIgs .EQ 3
|
||||
A2osX.HWSubT .EQ A2osX.GP+43
|
||||
A2osX.HWSubT.Enh .EQ 1
|
||||
A2osX.HWSubT.LCCard .EQ 2
|
||||
|
||||
A2osX.TIMER16 .EQ $11EC WORD
|
||||
A2osX.RANDOM16 .EQ $11EE WORD
|
||||
A2osX.T16 .EQ A2osX.GP+44 WORD
|
||||
A2osX.R16 .EQ A2osX.GP+46 WORD
|
||||
*--------------------------------------
|
||||
* $11F0->$11FF : Kernel Config Block
|
||||
* Kernel Config Block
|
||||
*--------------------------------------
|
||||
A2osX.KCONFIG .EQ $11F0
|
||||
A2osX.HZ .EQ $11F0 5/6 for 50/60Hz
|
||||
A2osX.TTYDEVS .EQ $11F1
|
||||
A2osX.F .EQ $11F8
|
||||
A2osX.KCONFIG .EQ A2osX.GP+48
|
||||
A2osX.HZ .EQ A2osX.KCONFIG+00 5/6 for 50/60Hz
|
||||
A2osX.TTYDEVS .EQ A2osX.KCONFIG+01
|
||||
A2osX.F .EQ A2osX.KCONFIG+02
|
||||
A2osX.F.CHROOT .EQ %10000000 ChRooting to /RAMx
|
||||
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.VXD .EQ $81
|
||||
A2osX.S.ATK .EQ $82
|
||||
@ -83,10 +83,6 @@ A2osX.S.CLK .EQ $E3
|
||||
A2osX.S.SND .EQ $E4
|
||||
A2osX.S.DISABLE .EQ $FF
|
||||
*--------------------------------------
|
||||
* NON BLOCKING Entry point (From libs)
|
||||
*--------------------------------------
|
||||
A2osX.SYSCALL2 .EQ $E200
|
||||
*--------------------------------------
|
||||
* ProDOS ERROR CODES : $00->$5F
|
||||
* Kernel ERROR CODES : $60->$7F
|
||||
* Lib ERROR CODES : $80->$BF
|
||||
|
@ -78,7 +78,7 @@ DNS.REQUEST lda hDNSSocket
|
||||
sty DNS.MSG.LEN
|
||||
stz DNS.MSG.LEN+1
|
||||
|
||||
>LDYA A2osX.RANDOM16
|
||||
>LDYA A2osX.R16
|
||||
>STYA DNS.MSG.ID
|
||||
>STYA DNS.TmpCache+S.DNSCACHE.ID
|
||||
|
||||
|
@ -1316,7 +1316,7 @@ SKT.NewTCB ldx #S.SOCKET.TCP.INSEQNUM
|
||||
|
||||
ldx #3
|
||||
|
||||
.2 lda A2osX.TIMER16,x
|
||||
.2 lda A2osX.T16,x
|
||||
sta SKT.Cache+S.SOCKET.TCP.OUTNEXTSEQ,x
|
||||
dex
|
||||
bpl .2
|
||||
|
@ -3,18 +3,20 @@ NEW
|
||||
.LIST OFF
|
||||
.OP 65816
|
||||
.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
|
||||
ENHFILENAME .EQ 1
|
||||
DIREXTENDROOT .EQ 1
|
||||
LOWERCASE .EQ 1
|
||||
ACL .EQ 1
|
||||
LOGO .EQ 1
|
||||
AUXLC .EQ 1
|
||||
M.PM .EQ 0
|
||||
M.RAM .EQ 0
|
||||
M.SEL .EQ 1
|
||||
*--------------------------------------
|
||||
.INB inc/zp.i
|
||||
.INB inc/io.i
|
||||
@ -96,6 +98,67 @@ X.Unpak.XatYA sty ZPOutBufPtr
|
||||
.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
|
||||
|
||||
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
|
||||
.DA ILDR.LEN
|
||||
.INB usr/src/prodos.fx/prodos.s.ildr
|
||||
@ -158,67 +221,6 @@ SEL1.PAK .DA #0
|
||||
SEL2.PAK .DA #0
|
||||
.DA SEL2.LEN
|
||||
.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
|
||||
.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
|
||||
jsr LDR.SetupCLK
|
||||
|
||||
.DO M.SEL
|
||||
|
||||
* ldx #PAKME.SEL2.ID
|
||||
* ldy #$1000
|
||||
* lda /$1000
|
||||
@ -250,6 +252,8 @@ LDR.IIGS sta XDOS.CortFlag
|
||||
|
||||
ldx #PAKME.SEL2.ID
|
||||
jsr LDR.SetupSEL
|
||||
|
||||
.FIN
|
||||
*--------------------------------------
|
||||
lda LDR.BootFlag
|
||||
bne .1 branch if prodos 8 alone
|
||||
@ -261,8 +265,12 @@ LDR.IIGS sta XDOS.CortFlag
|
||||
|
||||
.1 bra LDR.Common
|
||||
*--------------------------------------
|
||||
LDR.II ldx #PAKME.SEL1.ID
|
||||
LDR.II .DO M.SEL
|
||||
|
||||
ldx #PAKME.SEL1.ID
|
||||
jsr LDR.SetupSEL
|
||||
|
||||
.FIN
|
||||
|
||||
jsr LDR.ClkDevScan
|
||||
*--------------------------------------
|
||||
|
@ -338,18 +338,18 @@ XDOS.SysErr sta GP.ERROR P8 error code
|
||||
*--------------------------------------
|
||||
XDOS.SysDeath tax death error code.
|
||||
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?
|
||||
beq .1 if not, don't use super hires switch.
|
||||
|
||||
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
|
||||
|
||||
.2 lda deathmsg,y
|
||||
sta $400,y 'RESTART SYSTEM-$'
|
||||
sta $400,y 'SYS ERR-$'
|
||||
dey
|
||||
bpl .2
|
||||
|
||||
@ -799,11 +799,11 @@ online1.ERR pha save error code.
|
||||
.1 sec flag error
|
||||
rts
|
||||
*--------------------------------------
|
||||
online1.OK lda XDOS.VCBs,x get volume name count
|
||||
online1.OK lda XDOS.VCBs,x get volume name count
|
||||
sta namcnt
|
||||
ldy namptr index to user's buffer.
|
||||
|
||||
.1 lda XDOS.VCBs,x move name to user's buffer
|
||||
.1 lda XDOS.VCBs,x move name to user's buffer
|
||||
sta (usrbuf),y
|
||||
inx
|
||||
iny
|
||||
@ -811,7 +811,7 @@ online1.OK lda XDOS.VCBs,x get volume name count
|
||||
bpl .1
|
||||
|
||||
svdevn ldy namptr index to 1st byte of this entry.
|
||||
lda GP.DEVNUM upper nibble = device# and
|
||||
lda GP.DEVNUM upper nibble = device# and
|
||||
ora (usrbuf),y lower nibble = name length.
|
||||
sta (usrbuf),y
|
||||
|
||||
@ -819,52 +819,65 @@ svdevn ldy namptr index to 1st byte of this entry.
|
||||
rts end of block file manager
|
||||
*--------------------------------------
|
||||
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
|
||||
bne crerr1 otherwise exit with error.
|
||||
cmp #MLI.E.FNOTFND 'file not found' is ok
|
||||
bne .5 otherwise exit with error.
|
||||
|
||||
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?
|
||||
bcc tstdspc branch if it is
|
||||
bcc .1 branch if it is
|
||||
|
||||
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.
|
||||
bcs H351D
|
||||
|
||||
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.
|
||||
bne H352A
|
||||
bne XDOS.DirExtend
|
||||
|
||||
lda #MLI.E.DIRFULL otherwise, directory full error
|
||||
.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
|
||||
lda ZP.BLKNUM+1 extended block.
|
||||
pha
|
||||
jsr alc1blk allocate a block for extending directory
|
||||
jsr XDOS.GetFreeBlk allocate a block for extending directory
|
||||
plx
|
||||
stx ZP.BLKNUM+1 restore block addr of dir info in XDOS.GBuf
|
||||
plx
|
||||
stx ZP.BLKNUM
|
||||
bcs H351D unable to allocate.
|
||||
|
||||
sta XDOS.GBuf+2 save block address in y,a to
|
||||
sty XDOS.GBuf+3 current directory.
|
||||
|
||||
sta XDOS.GBuf+2 save block address in y,a to
|
||||
sty XDOS.GBuf+3 current directory.
|
||||
.DO LOWERCASE=1
|
||||
jsr XDOS.WriteGBufDir
|
||||
.ELSE
|
||||
@ -874,25 +887,16 @@ H352A lda ZP.BLKNUM preserve disk address of current (last)
|
||||
|
||||
ldx #$01
|
||||
|
||||
swpbloks lda ZP.BLKNUM,x prepare new directory block
|
||||
sta XDOS.GBuf,x using current block as back link
|
||||
.1 lda ZP.BLKNUM,x prepare new directory block
|
||||
sta XDOS.GBuf,x using current block as back link
|
||||
lda XDOS.GBuf+2,x
|
||||
sta ZP.BLKNUM,x and save new block as next to be written
|
||||
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.
|
||||
.FIN
|
||||
bcs H351D if error
|
||||
|
||||
lda own_blk
|
||||
@ -908,23 +912,23 @@ clrdir stz XDOS.GBuf+2,x
|
||||
|
||||
ldx own_ent and calc entry address.
|
||||
|
||||
ocalc dex has entry address been calculated?
|
||||
beq H3584 if yes.
|
||||
.3 dex has entry address been calculated?
|
||||
beq .4 if yes.
|
||||
|
||||
lda own_len next entry address
|
||||
jsr XDOS.ZPT.NextA
|
||||
bra ocalc
|
||||
bra .3
|
||||
|
||||
H3584 ldy #$13 index to block count
|
||||
.4 ldy #$13 index to block count
|
||||
clc
|
||||
|
||||
H3588 lda (zpt),y
|
||||
.5 lda (zpt),y
|
||||
adc dinctbl-$13,y add 1 to block count and
|
||||
sta (zpt),y
|
||||
iny
|
||||
tya $200 to the directory's eof.
|
||||
eor #$18 done with usage/eof update?
|
||||
bne H3588 branch if not.
|
||||
bne .5 branch if not.
|
||||
|
||||
.DO LOWERCASE=1
|
||||
jsr XDOS.WriteGBufDir
|
||||
@ -934,45 +938,41 @@ H3588 lda (zpt),y
|
||||
bcs crerr2
|
||||
|
||||
jmp XDOS.Create
|
||||
|
||||
crerr2 rts return and report errors
|
||||
*--------------------------------------
|
||||
creat1 ldx #$00 zero out XDOS.GBuf
|
||||
|
||||
H35A0 stz XDOS.GBuf,x
|
||||
stz XDOS.GBuf+$100,x and data block of file.
|
||||
inx
|
||||
bne H35A0
|
||||
XDOS.Create1 jsr XDOS.ZeroGBuf zero out XDOS.GBuf
|
||||
|
||||
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
|
||||
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
|
||||
dey
|
||||
cpy #$07
|
||||
bne cmvtime
|
||||
bne .1
|
||||
|
||||
txa does user want default time?
|
||||
bne cmvname if not.
|
||||
bne .3 if not.
|
||||
|
||||
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
|
||||
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
|
||||
lda #$10 assume tree type
|
||||
bcc csvfkind
|
||||
bcc .4
|
||||
|
||||
lda #$D0 it's directory.
|
||||
|
||||
csvfkind ldx namptr index to local name of pathname.
|
||||
ora XDOS.PathBuf,x combine file kind with name length.
|
||||
.4 ldx namptr index to local name of pathname.
|
||||
ora XDOS.PathBuf,x combine file kind with name length.
|
||||
sta d_stor sos calls this 'storage type'.
|
||||
and #$0F strip back to name length
|
||||
tay and use as counter for move.
|
||||
@ -980,12 +980,12 @@ csvfkind ldx namptr index to local name of pathname.
|
||||
adc namptr calc end of name
|
||||
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
|
||||
|
||||
dex
|
||||
dey
|
||||
bne crname
|
||||
bne .5
|
||||
|
||||
ldy #$03 index to 'access' parameter
|
||||
lda (ZP.A3L),y
|
||||
@ -994,11 +994,11 @@ crname lda XDOS.PathBuf,x move local name as filename
|
||||
lda (ZP.A3L),y
|
||||
sta d_filid
|
||||
|
||||
cmvauxid iny move auxillary identification bytes
|
||||
.6 iny move auxillary identification bytes
|
||||
lda (ZP.A3L),y
|
||||
sta d_auxid-5,y
|
||||
cpy #$06
|
||||
bne cmvauxid
|
||||
bne .6
|
||||
|
||||
.DO LOWERCASE=0
|
||||
lda xdosver save current xdos version #
|
||||
@ -1019,9 +1019,9 @@ cmvauxid iny move auxillary identification bytes
|
||||
lda d_stor storage type.
|
||||
and #$E0 is it a directory?
|
||||
beq cralcblk branch if seed file.
|
||||
|
||||
*--------------------------------------
|
||||
* Create Dir First Block
|
||||
|
||||
*--------------------------------------
|
||||
ldx #$1E move header to data block
|
||||
|
||||
cmvheadr lda d_stor,x
|
||||
@ -1030,7 +1030,7 @@ cmvheadr lda d_stor,x
|
||||
bpl cmvheadr
|
||||
|
||||
eor #$30
|
||||
sta XDOS.GBuf+4 make it a directory header mark.
|
||||
sta XDOS.GBuf+4 make it a directory header mark.
|
||||
|
||||
.DO LOWERCASE=0
|
||||
|
||||
@ -1066,13 +1066,13 @@ cmvparnt lda d_entblk,x
|
||||
bpl cmvparnt
|
||||
|
||||
lda h_entln lastly, the length of parent's
|
||||
sta XDOS.GBuf+42 directory entries.
|
||||
sta XDOS.GBuf+42 directory entries.
|
||||
|
||||
.DO LOWERCASE=1
|
||||
jsr XDOS.PackGBuf
|
||||
.FIN
|
||||
|
||||
cralcblk jsr alc1blk get address of file's data block
|
||||
cralcblk jsr XDOS.GetFreeBlk get address of file's data block
|
||||
bcs crerr3
|
||||
|
||||
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
|
||||
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
|
||||
SAVE usr/src/prodos.fx/prodos.s.xdos.a
|
||||
|
@ -218,8 +218,8 @@ XDOS.CheckPath jsr XDOS.FindVol
|
||||
|
||||
lda #$D0 fake directory file
|
||||
sta d_stor
|
||||
lda XDOS.GBuf+2 check forward link.
|
||||
ora XDOS.GBuf+3 if non-zero, assume full sized directory
|
||||
lda XDOS.GBuf+2 check forward link.
|
||||
ora XDOS.GBuf+3 if non-zero, assume full sized directory
|
||||
bne .3 else assume it's the slot 3 /RAM volume
|
||||
|
||||
lda #$02 so reset eof and blocks_used fields
|
||||
@ -237,7 +237,7 @@ fnderr.RTS rts
|
||||
lookfil0 stz nofree reset free entry indicator.
|
||||
|
||||
sec dir to be searched has header in this block.
|
||||
|
||||
|
||||
L37C9 stz totent reset entry counter.
|
||||
|
||||
jsr XDOS.LookupNameInDirBlk look for name pointed to by pnptr.
|
||||
@ -253,16 +253,16 @@ L37C9 stz totent reset entry counter.
|
||||
|
||||
L37E2 dec entcnth should be at least one
|
||||
L37EB sta entcntl keep a running count.
|
||||
lda /XDOS.GBuf reset indirect pointer
|
||||
lda /XDOS.GBuf reset indirect pointer
|
||||
sta zpt+1
|
||||
|
||||
lda XDOS.GBuf+2 get link to next dir block
|
||||
lda XDOS.GBuf+2 get link to next dir block
|
||||
bne L37FC (if there is one).
|
||||
|
||||
cmp XDOS.GBuf+3 are both zero, i.e. no link? if so,
|
||||
cmp XDOS.GBuf+3 are both zero, i.e. no link? if so,
|
||||
beq errdir then not all entries were acct'd for.
|
||||
|
||||
L37FC ldx XDOS.GBuf+3 acc has value for block# (low).
|
||||
L37FC ldx XDOS.GBuf+3 acc has value for block# (low).
|
||||
.DO LOWERCASE=1
|
||||
jsr XDOS.ReadGBufAXDir
|
||||
.ELSE
|
||||
@ -272,20 +272,23 @@ L37FC ldx XDOS.GBuf+3 acc has value for block# (low).
|
||||
rts return error in acc.
|
||||
*--------------------------------------
|
||||
errfnf lda nofree was any free entry found?
|
||||
bne fnf0
|
||||
lda XDOS.GBuf+2 test link
|
||||
bne L3814
|
||||
cmp XDOS.GBuf+3 if both are 0 then give up.
|
||||
beq fnf0 report 'not found'.
|
||||
bne .2
|
||||
|
||||
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
|
||||
sta d_entblk+1 assume 1st entry of next block
|
||||
lda #$01 is free for use.
|
||||
sta d_entnum mark as valid (for create)
|
||||
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'
|
||||
|
||||
lda #MLI.E.PNOTFND path not found
|
||||
@ -320,7 +323,7 @@ namfound jsr nxtpname adj index to next name in path.
|
||||
.FIN
|
||||
bcs lookfil0.RTS if error.
|
||||
|
||||
lda XDOS.GBuf+37 get the # of files contained in this
|
||||
lda XDOS.GBuf+37 get the # of files contained in this
|
||||
sta entcntl directory.
|
||||
lda XDOS.GBuf+38
|
||||
sta entcnth
|
||||
@ -329,7 +332,7 @@ namfound jsr nxtpname adj index to next name in path.
|
||||
* (8 bytes reserved)
|
||||
*--------------------------------------
|
||||
.DO LOWERCASE=0
|
||||
lda XDOS.GBuf+20 make sure password is disabled
|
||||
lda XDOS.GBuf+20 make sure password is disabled
|
||||
|
||||
ldx #$00
|
||||
sec
|
||||
@ -381,14 +384,14 @@ movhed0 ldx #9 move this directory info
|
||||
|
||||
.21 .FIN
|
||||
|
||||
lda XDOS.GBuf+4 if this is root, then nothing to do
|
||||
lda XDOS.GBuf+4 if this is root, then nothing to do
|
||||
and #$F0
|
||||
eor #$F0 test header type.
|
||||
beq .8 branch if root
|
||||
|
||||
ldx #$03 otherwise, save owner info about
|
||||
|
||||
.3 lda XDOS.GBuf+$27,x this header.
|
||||
.3 lda XDOS.GBuf+$27,x this header.
|
||||
sta own_blk,x
|
||||
dex
|
||||
bpl .3
|
||||
@ -866,10 +869,10 @@ tkfrecnt jsr cntbms get # of bitmaps
|
||||
lda #$FF mark 'first free' temp as unknown
|
||||
sta nofree
|
||||
|
||||
jsr upbmap update volume bitmap.
|
||||
jsr XDOS.FlushBM update volume bitmap.
|
||||
bcs L3BC1 if error.
|
||||
|
||||
ldx XDOS.VCBPtr get address of 1st bitmap
|
||||
ldx XDOS.VCBPtr get address of 1st bitmap
|
||||
|
||||
lda XDOS.VCBs+VCB.BMAP,x
|
||||
sta ZP.BLKNUM
|
||||
@ -889,18 +892,18 @@ L3B81 jsr XDOS.ReadGBuf use general buffer for temp space to
|
||||
inc ZP.BLKNUM+1
|
||||
bra L3B81
|
||||
|
||||
L3B96 ldx XDOS.VCBPtr mark which block had 1st free space
|
||||
L3B96 ldx XDOS.VCBPtr mark which block had 1st free space
|
||||
lda nofree
|
||||
bmi L3BBE if no free space was found.
|
||||
|
||||
sta XDOS.VCBs+VCB.BMAPIDX,x update the free count.
|
||||
sta XDOS.VCBs+VCB.BMAPIDX,x update the free count.
|
||||
|
||||
lda scrtch+1
|
||||
sta XDOS.VCBs+VCB.FBLK+1,x update volume control byte.
|
||||
sta XDOS.VCBs+VCB.FBLK+1,x update volume control byte.
|
||||
lda scrtch
|
||||
sta XDOS.VCBs+VCB.FBLK,x
|
||||
|
||||
L3BAD lda XDOS.VCBs+VCB.FBLK,x compare total available free blocks
|
||||
L3BAD lda XDOS.VCBs+VCB.FBLK,x compare total available free blocks
|
||||
sec on this volume.
|
||||
sbc reql
|
||||
lda XDOS.VCBs+VCB.FBLK+1,x
|
||||
|
@ -22,7 +22,7 @@ XDOS.DeallocAX stx bmcnt high address of block.
|
||||
ror
|
||||
dex
|
||||
bne .1
|
||||
|
||||
|
||||
* lsr bmcnt
|
||||
* ror
|
||||
* lsr bmcnt
|
||||
@ -31,14 +31,14 @@ XDOS.DeallocAX stx bmcnt high address of block.
|
||||
sta bmptr save pointer.
|
||||
lsr bmcnt transfer bit which is page of bitmap
|
||||
rol half
|
||||
jsr fndbmap make sure device is correct one.
|
||||
jsr XDOS.GetBM make sure device is correct one.
|
||||
bcs L3C8B error.
|
||||
|
||||
lda bmacmap current map.
|
||||
cmp bmcnt is in-core bitmap the correct one ?
|
||||
beq L3C64 branch if yes.
|
||||
|
||||
jsr upbmap put current map away.
|
||||
jsr XDOS.FlushBM put current map away.
|
||||
bcs L3C8B error.
|
||||
|
||||
lda bmcnt get map #
|
||||
@ -76,7 +76,7 @@ L3C8C lda #MLI.E.BADFS bitmap block # impossible.
|
||||
sec bitmap disk address wrong
|
||||
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.
|
||||
|
||||
L3C95 ldy #$00 begin search at start of bitmap block.
|
||||
@ -91,7 +91,7 @@ L3C9A lda XDOS.BMBuf,y
|
||||
inc half now search page 2.
|
||||
inc basval base value = base address / 2048.
|
||||
|
||||
L3CA8 lda XDOS.BMBuf+$100,y search 2nd half for free block
|
||||
L3CA8 lda XDOS.BMBuf+$100,y search 2nd half for free block
|
||||
bne L3CB9
|
||||
|
||||
iny
|
||||
@ -148,11 +148,14 @@ L3CF7 lda #$80 indicate map is modified.
|
||||
ldx XDOS.VCBPtr subtract 1 from total free vcb blocks
|
||||
lda XDOS.VCBs+VCB.FBLK,x to account for newly allocated block.
|
||||
bne .7
|
||||
|
||||
dec XDOS.VCBs+VCB.FBLK+1,x
|
||||
|
||||
.7 dec XDOS.VCBs+VCB.FBLK,x
|
||||
|
||||
|
||||
lda scrtch return address in y,a of newly
|
||||
ldy scrtch+1 allocated block.
|
||||
|
||||
clc no errors.
|
||||
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.
|
||||
|
||||
inc XDOS.VCBs+VCB.BMAPIDX,x add 1 to current map
|
||||
jsr upbmap
|
||||
jsr XDOS.FlushBM
|
||||
|
||||
fndbmap ldy XDOS.VCBPtr
|
||||
lda XDOS.VCBs+VCB.DEV,y get device #.
|
||||
XDOS.GetBM ldy XDOS.VCBPtr
|
||||
lda XDOS.VCBs+VCB.DEV,y get device #.
|
||||
cmp bmadev does this map match this device ?
|
||||
beq L3D4A yes.
|
||||
|
||||
jsr upbmap otherwise, save other volume's bitmap
|
||||
jsr XDOS.FlushBM otherwise, save other volume's bitmap
|
||||
bcs L3D5F
|
||||
|
||||
ldy XDOS.VCBPtr
|
||||
@ -186,7 +189,7 @@ L3D4A ldy bmastat is it already modified ?
|
||||
jsr XDOS.ReadBMDevA otherwise read in fresh bitmap.
|
||||
bcs L3D5F if error.
|
||||
|
||||
L3D54 ldy XDOS.VCBPtr get relative block # of bitmap.
|
||||
L3D54 ldy XDOS.VCBPtr get relative block # of bitmap.
|
||||
lda XDOS.VCBs+VCB.BMAPIDX,y
|
||||
asl 2 pages per block
|
||||
sta basval
|
||||
@ -198,7 +201,7 @@ L3D60 lda #MLI.E.VOLFULL request can't be filled
|
||||
sec error
|
||||
rts
|
||||
*--------------------------------------
|
||||
upbmap clc
|
||||
XDOS.FlushBM clc
|
||||
lda bmastat is current map modified ?
|
||||
bpl .9 no.
|
||||
|
||||
@ -211,11 +214,11 @@ upbmap clc
|
||||
*--------------------------------------
|
||||
XDOS.ReadBMDevA sta bmadev read bitmap specified by dev and vcb.
|
||||
|
||||
ldy XDOS.VCBPtr get lowest map # with free blocks in it
|
||||
ldy XDOS.VCBPtr get lowest map # with free blocks in it
|
||||
lda XDOS.VCBs+VCB.BMAPIDX,y
|
||||
sta bmacmap associate offset with bitmap ctrl block.
|
||||
clc add this # to the base address of
|
||||
adc XDOS.VCBs+VCB.BMAP,y 1st bitmap and save in bmadadr which
|
||||
adc XDOS.VCBs+VCB.BMAP,y 1st bitmap and save in bmadadr which
|
||||
sta bmadadr is address of bitmap to be used.
|
||||
|
||||
lda XDOS.VCBs+VCB.BMAP+1,y
|
||||
@ -225,10 +228,10 @@ XDOS.ReadBMDevA sta bmadev read bitmap specified by dev and vcb.
|
||||
lda #$01 read device command
|
||||
.HS 2C BIT ABS
|
||||
XDOS.WriteBM lda #$02 write command.
|
||||
|
||||
|
||||
sta ZP.CMDNUM
|
||||
|
||||
lda GP.DEVNUM save current dev #
|
||||
lda GP.DEVNUM save current dev #
|
||||
pha
|
||||
lda bmadev get bitmap's dev #
|
||||
sta GP.DEVNUM
|
||||
@ -256,7 +259,7 @@ XDOS.ReadGBuf_d_frst
|
||||
lda d_frst read 1st block of directory into XDOS.GBuf
|
||||
ldx d_frst+1
|
||||
.DO LOWERCASE=1
|
||||
XDOS.ReadGBufAXDir
|
||||
XDOS.ReadGBufAXDir
|
||||
jsr XDOS.ReadGBufAX
|
||||
bcc XDOS.UnpackGBuf
|
||||
rts
|
||||
@ -269,8 +272,8 @@ XDOS.ReadGBuf lda #$01 read command.
|
||||
|
||||
XDOS.WriteGBuf lda #$02 write command
|
||||
|
||||
sta ZP.A4L pass to device handler.
|
||||
lda /XDOS.GBuf general buffer.
|
||||
sta ZP.CMDNUM pass to device handler.
|
||||
lda /XDOS.GBuf general buffer.
|
||||
|
||||
XDOS.RWBlock sta ZP.BUFPTR+1 buffer high.
|
||||
stz ZP.BUFPTR buffer low (always on page boundary)
|
||||
@ -286,7 +289,7 @@ XDOS.CheckAndUnpackGBuf
|
||||
sty h_maxent
|
||||
cmp #$27
|
||||
bne .9
|
||||
|
||||
|
||||
cpy #$0D
|
||||
beq XDOS.UnpackGBuf
|
||||
|
||||
@ -299,13 +302,13 @@ XDOS.UnpackGBuf jsr XDOS.ZPT.InitGBuf
|
||||
ldx h_maxent
|
||||
|
||||
.1 jsr XDOS.ZPT.Unpack
|
||||
|
||||
|
||||
dex
|
||||
beq .8
|
||||
|
||||
|
||||
jsr XDOS.ZPT.Next
|
||||
bra .1
|
||||
|
||||
|
||||
.8 clc make sure CC
|
||||
rts
|
||||
*--------------------------------------
|
||||
@ -335,23 +338,23 @@ XDOS.PackGBuf jsr XDOS.ZPT.InitGBuf
|
||||
|
||||
eor #$20 to uppercase
|
||||
sta (zpt),y
|
||||
|
||||
|
||||
cpy #8 CS if MIN_VERSION to use
|
||||
bcs .3
|
||||
|
||||
lda whichbit,y
|
||||
tsb XDOS.PackGBuf.Bitmap+1
|
||||
bra .4
|
||||
|
||||
|
||||
.3 lda whichbit-8,y
|
||||
tsb XDOS.PackGBuf.Bitmap
|
||||
|
||||
|
||||
.4 lda #$80
|
||||
tsb XDOS.PackGBuf.Bitmap+1
|
||||
|
||||
|
||||
.5 dey
|
||||
bne .2
|
||||
|
||||
|
||||
ldy #$1C VERSION
|
||||
lda XDOS.PackGBuf.Bitmap
|
||||
sta (zpt),y
|
||||
@ -359,11 +362,11 @@ XDOS.PackGBuf jsr XDOS.ZPT.InitGBuf
|
||||
iny MIN_VERSION
|
||||
lda XDOS.PackGBuf.Bitmap+1
|
||||
sta (zpt),y
|
||||
|
||||
|
||||
.6 jsr XDOS.ZPT.Next
|
||||
dex
|
||||
dex
|
||||
bne .1
|
||||
|
||||
|
||||
rts
|
||||
|
||||
.FIN
|
||||
@ -533,9 +536,9 @@ saplevel sta ZP.BLKNUM read in next lower index block.
|
||||
lda (zpt),y (high address)
|
||||
sta ZP.BLKNUM+1
|
||||
dec zpt+1
|
||||
|
||||
|
||||
* jsr rfcbidx read in sapling level
|
||||
|
||||
|
||||
lda #$01 prepare to read index block : read command
|
||||
sta ZP.CMDNUM
|
||||
|
||||
@ -663,7 +666,7 @@ dirpos1 lda (ZP.DataPtr),y get link address of previous or next
|
||||
lda #MLI.E.EOF something is wrong with directory file!
|
||||
|
||||
sec error.
|
||||
|
||||
|
||||
L3FD6 rts
|
||||
|
||||
L3FD8 sta ZP.BLKNUM+1
|
||||
@ -703,7 +706,7 @@ L3FF2 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
|
||||
.HS 2C BIT ABS
|
||||
@ -723,14 +726,14 @@ XDOS.FileIOPtrXCmdABlkY
|
||||
lda XDOS.FCBs,y get disk block address from fcb.
|
||||
sta ZP.BLKNUM block 0 not legal
|
||||
bne .1
|
||||
|
||||
|
||||
lda XDOS.FCBs+1,y high address of disk block
|
||||
bne .2
|
||||
|
||||
lda #$0C Block = $0000, allocation error.
|
||||
jsr GP.SYSDEATH doesn't return...
|
||||
|
||||
.1 lda XDOS.FCBs+1,y
|
||||
.1 lda XDOS.FCBs+1,y
|
||||
.2 sta ZP.BLKNUM+1
|
||||
*--------------------------------------
|
||||
XDOS.FileIOPtrX lda $00,x get memory address of buffer from
|
||||
@ -749,7 +752,7 @@ XDOS.FileIO2 sec also, set to indicate reg call made to
|
||||
*--------------------------------------
|
||||
|
||||
*--------------------------------------
|
||||
XDOS.WriteDBLK ldx #ZP.DataPtr point at memory address with x and
|
||||
XDOS.WriteDBLK ldx #ZP.DataPtr point at memory address with x and
|
||||
lda #FCB.DBLK disk address with y.
|
||||
ora fcbptr add offset to fcbptr
|
||||
tay and put in y.
|
||||
@ -760,7 +763,7 @@ XDOS.WriteDBLK ldx #ZP.DataPtr point at memory address with x and
|
||||
lda #$BF mark data status as current.
|
||||
bra XDOS.ResetFCBStatus
|
||||
|
||||
XDOS.WriteIBLK jsr upbmap update bitmap.
|
||||
XDOS.WriteIBLK jsr XDOS.FlushBM update bitmap.
|
||||
|
||||
ldx #zpt point to address of index buffer
|
||||
lda #FCB.IBLK and block address of that index block.
|
||||
@ -806,14 +809,14 @@ L40BD stz XDOS.FCBs,x but clean it first.
|
||||
bne L40BD
|
||||
|
||||
ldy #0
|
||||
|
||||
|
||||
ldx fcbptr
|
||||
|
||||
|
||||
L40CB lda d_dev,y move ownership info.
|
||||
sta XDOS.FCBs+FCB.DEVID,x note: this code depends upon the defined
|
||||
inx order of both the fcb and directory entry buffer.
|
||||
iny
|
||||
cpy #6
|
||||
cpy #6
|
||||
bne L40CB
|
||||
|
||||
lda d_stor get storage type and
|
||||
@ -898,7 +901,7 @@ L415E jsr XDOS.ReadFCB.DBLK read in 1st block of directory file.
|
||||
|
||||
L4163 ldx XDOS.VCBPtr index to vcb.
|
||||
inc XDOS.VCBs+VCB.OFCNT,x add 1 to # of files currently open
|
||||
|
||||
|
||||
ldx fcbptr index to fcb.
|
||||
lda XDOS.FCBs+FCB.ID,x return ref # to user.
|
||||
ldy #$05
|
||||
|
@ -647,7 +647,7 @@ swapdown jsr alcwblk make current seed into a sapling, allocate a block befo
|
||||
* clc no error
|
||||
.9 rts
|
||||
*--------------------------------------
|
||||
alcwblk jsr alc1blk
|
||||
alcwblk jsr XDOS.GetFreeBlk
|
||||
bcs .9
|
||||
|
||||
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
|
||||
|
||||
lda ZP.BLKNUM+1
|
||||
lda ZP.BLKNUM
|
||||
pha
|
||||
lda ZP.BLKNUM save the current block values
|
||||
lda ZP.BLKNUM+1 save the current block values
|
||||
pha
|
||||
stz ZP.CMDNUM
|
||||
stz ZP.BLKNUM zero the block #
|
||||
|
@ -208,7 +208,7 @@ L4780 ldx fcbptr
|
||||
cmp bmadev is it in same as current file ?
|
||||
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
|
||||
|
||||
L47B2 clc
|
||||
@ -427,7 +427,7 @@ L48C2 inx
|
||||
iny
|
||||
|
||||
ldx #2
|
||||
|
||||
|
||||
L48F2 lda XDOS.FCBs+FCB.MARK,y tell 'rdposn' to go to correct
|
||||
sta tposll,x
|
||||
eor #$80 position from incorrect place.
|
||||
@ -588,14 +588,26 @@ XDOS.GetFileInfoEx
|
||||
ldx #7
|
||||
ldy #S.FIEX.ACL+7+3
|
||||
|
||||
.DO ACL=1
|
||||
|
||||
.3 lda h_acl,x
|
||||
sta (ZP.A3L),y
|
||||
dey
|
||||
dex
|
||||
bpl .3
|
||||
|
||||
.ELSE
|
||||
|
||||
lda #0
|
||||
.3 sta (ZP.A3L),y
|
||||
dey
|
||||
dex
|
||||
bpl .3
|
||||
|
||||
.FIN
|
||||
|
||||
* clc
|
||||
.9
|
||||
.9
|
||||
XDOS.GetFileInfoEx.RTS
|
||||
rts
|
||||
*--------------------------------------
|
||||
@ -769,7 +781,7 @@ L4A52 ldy rnptr index to last name in the chain.
|
||||
|
||||
L4A72 lda #MLI.E.INVPATH bad pathname error.
|
||||
.HS 2C BIT ABS
|
||||
L4A7F lda #MLI.E.DUPFILE
|
||||
L4A7F lda #MLI.E.DUPFILE
|
||||
L4A74 sec
|
||||
rts
|
||||
|
||||
@ -902,7 +914,7 @@ L4B85 ldx firstbh
|
||||
jsr XDOS.DeallocAX
|
||||
bcs L4B93
|
||||
|
||||
jsr upbmap
|
||||
jsr XDOS.FlushBM
|
||||
|
||||
L4B93 pha save possible error code.
|
||||
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 ?
|
||||
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.
|
||||
|
||||
jsr XDOS.ReadGBuf_d_frst read 1st block of directory into XDOS.GBuf
|
||||
|
@ -483,10 +483,12 @@ XDOS.IsValidFirstChar.SEC
|
||||
sec
|
||||
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
|
||||
*--------------------------------------
|
||||
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
|
||||
|
||||
stz ZP.A1L
|
||||
@ -530,6 +532,17 @@ XDOS.CallDisp lda IO.RRAMWRAMBNK2 read/write RAM bank 2
|
||||
jmp $1000
|
||||
|
||||
.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.
|
||||
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_entblk .HS 0000 address of block which contains entry
|
||||
d_entnum .HS 00 entry number within block
|
||||
*--------------------------------------
|
||||
d_stor .BS 16 file name
|
||||
d_filid .HS 00 user's identification byte
|
||||
d_frst .HS 0000 first block of file
|
||||
|
@ -5,16 +5,18 @@ NEW
|
||||
.OR $2000
|
||||
.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
|
||||
ENHFILENAME .EQ 1
|
||||
DIREXTENDROOT .EQ 1
|
||||
LOWERCASE .EQ 1
|
||||
ACL .EQ 1
|
||||
LOGO .EQ 1
|
||||
AUXLC .EQ 0
|
||||
M.PM .EQ 1
|
||||
M.RAM .EQ 1
|
||||
M.SEL .EQ 1
|
||||
*--------------------------------------
|
||||
.INB inc/zp.i
|
||||
.INB inc/io.i
|
||||
@ -74,6 +76,67 @@ X.Unpak.XatYA sty ZPOutBufPtr
|
||||
.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
|
||||
|
||||
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
|
||||
.DA ILDR.LEN
|
||||
.INB usr/src/prodos.fx/prodos.s.ildr
|
||||
@ -136,67 +199,6 @@ SEL1.PAK .DA #0
|
||||
SEL2.PAK .DA #0
|
||||
.DA SEL2.LEN
|
||||
.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
|
||||
.DA $2000 BIN ORG
|
||||
|
@ -302,10 +302,33 @@ X.Arc.BlStat lda X.Arc.BLLen
|
||||
|
||||
.21 jsr X.Arc.GetYABitCntInX
|
||||
inc X.Arc.BLO.LO.cnt-1,x
|
||||
bne .8
|
||||
bne .30
|
||||
|
||||
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
|
||||
*--------------------------------------
|
||||
X.Arc.ComputeTBits
|
||||
@ -1425,7 +1448,7 @@ BLO.LenBits .DA #%11 bc= 1
|
||||
.DA #%10 bc= 6
|
||||
.DA #%10 bc= 7
|
||||
.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=11
|
||||
.DA #%0 bc=12 : Range 0..4095 (12 bits ofs)
|
||||
|
@ -151,12 +151,12 @@ Dev.Detect >STYA ZPArgPtr
|
||||
Dev.ParseArgs lda (ZPArgPtr)
|
||||
bne .1
|
||||
|
||||
lda A2osX.RANDOM16
|
||||
eor A2osX.TIMER16
|
||||
lda A2osX.R16
|
||||
eor A2osX.T16
|
||||
sta DCB+S.DCB.NIC.MAC+3
|
||||
eor A2osX.RANDOM16+1
|
||||
eor A2osX.R16+1
|
||||
sta DCB+S.DCB.NIC.MAC+4
|
||||
eor A2osX.TIMER16+1
|
||||
eor A2osX.T16+1
|
||||
sta DCB+S.DCB.NIC.MAC+5
|
||||
clc
|
||||
rts
|
||||
|
@ -1,6 +1,403 @@
|
||||
NEW
|
||||
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
|
||||
|
||||
bra .80 Skip PS0
|
||||
@ -245,10 +642,10 @@ CORE.GetEvents lda #K.S.EVT
|
||||
bne .6
|
||||
|
||||
.4 inc DevMgr.Timer
|
||||
inc A2osX.TIMER16
|
||||
inc A2osX.T16
|
||||
bne .5
|
||||
|
||||
inc A2osX.TIMER16+1
|
||||
inc A2osX.T16+1
|
||||
|
||||
.5 ldx CORE.TickPer10t
|
||||
stx CORE.Tick10t
|
||||
|
@ -4,11 +4,11 @@ NEW
|
||||
* CONTROL SECTION :
|
||||
.LIST ON
|
||||
*--------------------------------------
|
||||
*C1 .EQ MAIN.S
|
||||
*C2 .EQ AUX.S
|
||||
*C3 .EQ D1.S
|
||||
*C4 .EQ D2.S
|
||||
*C5 .EQ E0.S
|
||||
C1 .EQ MAIN.S
|
||||
C2 .EQ AUX.S
|
||||
C3 .EQ D1.S
|
||||
C4 .EQ D2.S
|
||||
C5 .EQ E0.S
|
||||
*--------------------------------------
|
||||
.LIST OFF
|
||||
.DO MAIN.S>$BC0
|
||||
|
@ -18,7 +18,7 @@ K.SetEnv
|
||||
* ldy #S.PS.hENV
|
||||
* lda (pPS),y
|
||||
|
||||
* jmp K.SYSCALL.JMPX
|
||||
* jmp JMP.X
|
||||
*/--------------------------------------
|
||||
* # GetEnv
|
||||
* 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
|
||||
pla A = hENV
|
||||
|
||||
jmp K.SYSCALL.JMPX
|
||||
jmp JMP.X
|
||||
*--------------------------------------
|
||||
MAN
|
||||
SAVE usr/src/sys/kernel.s.env
|
||||
|
@ -118,6 +118,7 @@ ENVX.SetEnv.I
|
||||
jsr SHARED.TXTPTRgY
|
||||
sta (ZPPtr3),y
|
||||
beq .24
|
||||
|
||||
jsr SHARED.IsIDValid
|
||||
bcc .23
|
||||
|
||||
@ -125,6 +126,7 @@ ENVX.SetEnv.I
|
||||
sta (ZPPtr3),y
|
||||
|
||||
jsr ENVX.NextEnvP3Y
|
||||
|
||||
ldy #$ff
|
||||
|
||||
.25 iny
|
||||
@ -182,7 +184,7 @@ ENVX.GetEnv sta ENVX.hEnv
|
||||
inc
|
||||
|
||||
.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
|
||||
|
||||
|
@ -41,417 +41,24 @@ NEW
|
||||
*--------------------------------------
|
||||
* SLEEP
|
||||
*--------------------------------------
|
||||
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
|
||||
jmp GP.Sleep
|
||||
*--------------------------------------
|
||||
* *** MUST BE REINTRANT ***
|
||||
* NON BLOCKING Entry point (From libs)
|
||||
*--------------------------------------
|
||||
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 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
|
||||
jmp JMP.2
|
||||
*--------------------------------------
|
||||
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 *
|
||||
* Public Vars
|
||||
*--------------------------------------
|
||||
.LIST ON
|
||||
.BS $11D0-*
|
||||
.BS A2osX.KCONFIG-*
|
||||
.LIST OFF
|
||||
*--------------------------------------
|
||||
* $11D0->$11EF : Public Variables
|
||||
*--------------------------------------
|
||||
.BS 32
|
||||
*--------------------------------------
|
||||
* $11F0->$11FF : Kernel Config Block
|
||||
* Kernel Config Block
|
||||
*--------------------------------------
|
||||
.DA #6 A2osX.HZ=60hz
|
||||
.DA #2 A2osX.TTYDEVS=2
|
||||
.HS 000000000000
|
||||
.DA #0 ChRoot/Preemptive Disabled
|
||||
.HS 000000000000 spare
|
||||
.HS 00000000000000 All Slots marked as "Free"
|
||||
*--------------------------------------
|
||||
MAN
|
||||
|
@ -4,11 +4,16 @@ NEW
|
||||
Kernel.Init2 sei
|
||||
ldx #$FF
|
||||
txs
|
||||
|
||||
sta IO.SETALTZP
|
||||
|
||||
stx SaveSM
|
||||
stx SaveSX
|
||||
|
||||
.DO K8M=1
|
||||
sta IO.CLRALTZP
|
||||
.FIN
|
||||
|
||||
ldx #Kernel.ZP.S-1
|
||||
|
||||
.1 lda Kernel.ZP,x
|
||||
@ -16,15 +21,32 @@ Kernel.Init2 sei
|
||||
dex
|
||||
bpl .1
|
||||
|
||||
.DO K8M=0
|
||||
sta IO.CLRALTZP
|
||||
.FIN
|
||||
|
||||
>LDYAI MSG.Init2
|
||||
jsr PrintFYA
|
||||
|
||||
>LDYA PAKME.MAIN
|
||||
.DO K8M=0
|
||||
sta IO.SETALTZP
|
||||
.FIN
|
||||
|
||||
>LDYA PAKME.GP
|
||||
>STYA ZPInBufPtr
|
||||
>LDYAI $1000
|
||||
>LDYAI $0140
|
||||
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
|
||||
>STYA ZPInBufPtr
|
||||
>LDYAI $9F00
|
||||
@ -66,8 +88,12 @@ Kernel.Init2 sei
|
||||
|
||||
.4 sta IO.CLRWRITEAUX
|
||||
|
||||
.ELSE
|
||||
|
||||
sta IO.SETALTZP
|
||||
|
||||
.FIN
|
||||
|
||||
lda IO.RRAMWRAMBNK2
|
||||
lda IO.RRAMWRAMBNK2
|
||||
|
||||
@ -96,10 +122,21 @@ Kernel.Init2 sei
|
||||
|
||||
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
|
||||
>LDYAI MSG.HZ
|
||||
jsr PrintFYA
|
||||
|
||||
>LDYAI MSG.Init2.OK
|
||||
jsr PrintFYA
|
||||
*--------------------------------------
|
||||
@ -193,6 +230,7 @@ Kernel.Init3C >LDYAI MSG.Init3
|
||||
|
||||
>PUSHWI SBININITD
|
||||
>PUSHBI 0 PS Flags
|
||||
|
||||
>SYSCALL2 ExecV
|
||||
bcs Kernel.Init3.Err
|
||||
|
||||
@ -219,6 +257,7 @@ KConfigLoad >LDYAI MSG.KCREAD
|
||||
.DA #MLI.GFINFOEX
|
||||
.DA pMLIGFIEX
|
||||
bcc .1
|
||||
|
||||
eor #MLI.E.BADCALL
|
||||
beq .2 regular ProDOS
|
||||
|
||||
@ -254,13 +293,8 @@ KConfigLoad >LDYAI MSG.KCREAD
|
||||
.9 >LDYAI MSG.KCREAD.KO
|
||||
|
||||
.8 jsr PrintFYA
|
||||
lda A2osX.FSID
|
||||
beq .99
|
||||
|
||||
>LDYAI MSG.FX
|
||||
jsr PrintFYA
|
||||
|
||||
.99 rts
|
||||
|
||||
rts
|
||||
*--------------------------------------
|
||||
* INIT3 Subs
|
||||
*--------------------------------------
|
||||
@ -396,15 +430,15 @@ HW.Detect >PUSHWI MSG.HW
|
||||
|
||||
bit IO.RROMBNK1
|
||||
|
||||
stz A2osX.HWType
|
||||
stz A2osX.HWT
|
||||
stz A2osX.HWSubT
|
||||
|
||||
sec
|
||||
jsr $FE1F ROM.IDROUTINE IIgs ?
|
||||
bcs .2
|
||||
|
||||
lda #A2osX.HWType.IIgs
|
||||
sta A2osX.HWType
|
||||
lda #A2osX.HWT.IIgs
|
||||
sta A2osX.HWT
|
||||
|
||||
cpy #2
|
||||
bne .1
|
||||
@ -417,8 +451,8 @@ HW.Detect >PUSHWI MSG.HW
|
||||
.2 lda $FBC0 ROM.ZIDBYTE
|
||||
beq .4 //c
|
||||
|
||||
ldx #A2osX.HWType.IIe
|
||||
stx A2osX.HWType
|
||||
ldx #A2osX.HWT.IIe
|
||||
stx A2osX.HWT
|
||||
cmp #$EA
|
||||
beq .8 //e OLD ROMs
|
||||
|
||||
@ -430,8 +464,8 @@ HW.Detect >PUSHWI MSG.HW
|
||||
inc A2osX.HWSubT //e LC card
|
||||
bra .8
|
||||
|
||||
.4 lda #A2osX.HWType.IIc
|
||||
sta A2osX.HWType
|
||||
.4 lda #A2osX.HWT.IIc
|
||||
sta A2osX.HWT
|
||||
lda $FBBF
|
||||
sta A2osX.HWSubT
|
||||
|
||||
@ -439,7 +473,7 @@ HW.Detect >PUSHWI MSG.HW
|
||||
bit IO.RRAMWRAMBNK1
|
||||
|
||||
>PUSHWI MSG.HW.TypeSubT
|
||||
>PUSHB A2osX.HWType
|
||||
>PUSHB A2osX.HWT
|
||||
>PUSHB A2osX.HWSubT
|
||||
>PUSHBI 2
|
||||
>SYSCALL2 printf
|
||||
@ -469,8 +503,8 @@ CPU.Init >PUSHWI MSG.CPU
|
||||
php
|
||||
sei
|
||||
|
||||
lda A2osX.HWType
|
||||
cmp #A2osX.HWType.IIc
|
||||
lda A2osX.HWT
|
||||
cmp #A2osX.HWT.IIc
|
||||
beq CPU.Init2c
|
||||
*--------------------------------------
|
||||
* VBL = 20.000us 50hz, 16.666 60hz
|
||||
@ -921,8 +955,8 @@ IrqMgrInit >LDYAI MSG.IRQ
|
||||
lda K.MLI.PARAMS+1
|
||||
sta IRQ.INTNUM
|
||||
*--------------------------------------
|
||||
lda A2osX.HWType
|
||||
cmp #A2osX.HWType.IIgs
|
||||
lda A2osX.HWT
|
||||
cmp #A2osX.HWT.IIgs
|
||||
bne .1
|
||||
|
||||
.OP 65816
|
||||
@ -975,7 +1009,7 @@ IrqMgrInit >LDYAI MSG.IRQ
|
||||
sec
|
||||
rts
|
||||
*--------------------------------------
|
||||
.1 cmp #A2osX.HWType.IIc
|
||||
.1 cmp #A2osX.HWT.IIc
|
||||
beq .2
|
||||
|
||||
jsr IrqMgr.TClk
|
||||
@ -1193,6 +1227,7 @@ TskMgrInit >LDYAI MSG.TSK
|
||||
|
||||
>LDYAI K.ENV.SIZE get a buffer for ENV
|
||||
>SYSCALL NewStkObj Buffer in AUX mem
|
||||
|
||||
bcs .99
|
||||
|
||||
>STYA ZPPtr1
|
||||
@ -1376,7 +1411,8 @@ I.ENV.ROOT .AZ "ROOT"
|
||||
I.ENV.PATH .AZ "PATH=${BOOT}sbin/:${BOOT}bin/"
|
||||
I.ENV.LIB .AZ "LIB=${BOOT}lib/"
|
||||
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
|
||||
*--------------------------------------
|
||||
pMLIGFIEX .DA #2
|
||||
|
@ -5,7 +5,7 @@ NEW
|
||||
*--------------------------------------
|
||||
* Bank 1
|
||||
*--------------------------------------
|
||||
K.SYSCALL .DA 0 $00 : STAT
|
||||
JMP.TABL .DA 0 $00 : STAT
|
||||
.DA K.ChMod
|
||||
.DA K.FStat
|
||||
.DA K.Stat
|
||||
@ -162,7 +162,7 @@ K.SYSCALL .DA 0 $00 : STAT
|
||||
* HI Byte :
|
||||
* Flags (ROOT....)
|
||||
*--------------------------------------
|
||||
K.SYSCALL.BANK .DA #IO.RRAMWRAMBNK1 $00
|
||||
JMP.BANK .DA #IO.RRAMWRAMBNK1 $00
|
||||
.DA #0
|
||||
.DA #IO.RRAMWRAMBNK1
|
||||
.DA #0
|
||||
@ -435,37 +435,37 @@ K.SYSCALL.BANK .DA #IO.RRAMWRAMBNK1 $00
|
||||
.DA #$C0 FreeStkObj
|
||||
.DA #0
|
||||
*--------------------------------------
|
||||
* K.SYSCALL2 : From KERNEL (MAIN,AUX), LIB
|
||||
* From KERNEL (MAIN,AUX), LIB
|
||||
*--------------------------------------
|
||||
K.SYSCALL2 bit K.SYSCALL.BANK,x Get Target BNK
|
||||
bvc K.SYSCALL2.BANK
|
||||
JMP.2 bit JMP.BANK,x Get Target BNK
|
||||
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
|
||||
jsr K.SYSCALL.JMP
|
||||
jsr JMP.JMPX
|
||||
sta IO.CLRREADAUX
|
||||
sta IO.CLRWRITEAUX
|
||||
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
|
||||
jsr .1
|
||||
|
||||
sta IO.SETREADAUX
|
||||
sta IO.SETWRITEAUX
|
||||
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
|
||||
lda $D000 #IO.RRAMWRAMBNK1 or #IO.RRAMWRAMBNK2
|
||||
cmp K.SYSCALL.BANK,x
|
||||
cmp JMP.BANK,x
|
||||
beq .7
|
||||
|
||||
pha remember source BNK
|
||||
stx .6+1
|
||||
lda K.SYSCALL.BANK,x
|
||||
lda JMP.BANK,x
|
||||
tax get Target BNK in x
|
||||
bit $C000,x switch to Target BNK
|
||||
* bit $C000,x
|
||||
@ -483,22 +483,21 @@ K.SYSCALL2.BANK bpl K.SYSCALL.JMP 0, E000, no BNK change
|
||||
.6 ldx #$ff SELF MODIFIED
|
||||
.7 lda #$ff SELF MODIFIED
|
||||
|
||||
K.SYSCALL.JMP jmp (K.SYSCALL,x)
|
||||
JMP.JMPX jmp (JMP.TABL,x)
|
||||
*--------------------------------------
|
||||
K.SYSCALL.JMPX1A
|
||||
>PULLW FORPNT
|
||||
bra JMPXA
|
||||
K.SYSCALL.JMPX2A
|
||||
sec
|
||||
JMP.X1A >PULLW FORPNT
|
||||
bra JMP.XA
|
||||
|
||||
JMP.X2A sec
|
||||
.HS 90 BCC
|
||||
K.SYSCALL.JMPX2 clc
|
||||
JMP.X2 clc
|
||||
>PULLW FORPNT
|
||||
>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
|
||||
jsr JMPX
|
||||
sta IO.CLRREADAUX
|
||||
|
@ -12,7 +12,7 @@ NEW
|
||||
* ## RETURN VALUE
|
||||
* CC
|
||||
*\--------------------------------------
|
||||
K.MD5 .EQ K.SYSCALL.JMPX2
|
||||
K.MD5 .EQ JMP.X2
|
||||
|
||||
* >PULLW FORPNT
|
||||
* >PULLW TXTPTR
|
||||
@ -26,9 +26,9 @@ K.MD5 .EQ K.SYSCALL.JMPX2
|
||||
* ## RETURN VALUE
|
||||
* A = hMem To S.MD5
|
||||
*\--------------------------------------
|
||||
K.MD5Init .EQ K.SYSCALL.JMPX
|
||||
K.MD5Init .EQ JMP.X
|
||||
|
||||
* jmp K.SYSCALL.JMPX
|
||||
* jmp JMP.X
|
||||
*/--------------------------------------
|
||||
* ## MD5Update
|
||||
* Add Data to MD5 computation
|
||||
@ -41,12 +41,12 @@ K.MD5Init .EQ K.SYSCALL.JMPX
|
||||
* `>SYSCALL MD5Update`
|
||||
* ## RETURN VALUE
|
||||
*\--------------------------------------
|
||||
K.MD5Update .EQ K.SYSCALL.JMPX2A
|
||||
K.MD5Update .EQ JMP.X2A
|
||||
* >PULLW FORPNT get LEN
|
||||
* >PULLW TXTPTR get DATA
|
||||
* >PULLA
|
||||
|
||||
* jmp K.SYSCALL.JMPX
|
||||
* jmp JMP.X
|
||||
*/--------------------------------------
|
||||
* ## MD5Finalize
|
||||
* # C
|
||||
@ -57,11 +57,11 @@ K.MD5Update .EQ K.SYSCALL.JMPX2A
|
||||
* `>SYSCALL MD5Finalize`
|
||||
* ## RETURN VALUE
|
||||
*\--------------------------------------
|
||||
K.MD5Finalize .EQ K.SYSCALL.JMPX1A
|
||||
K.MD5Finalize .EQ JMP.X1A
|
||||
* >PULLW FORPNT
|
||||
* >PULLA
|
||||
|
||||
* jmp K.SYSCALL.JMPX
|
||||
* jmp JMP.X
|
||||
*--------------------------------------
|
||||
MAN
|
||||
SAVE usr/src/sys/kernel.s.md5
|
||||
|
@ -10,10 +10,10 @@ NEW
|
||||
* `>SYSCALL getpwuid`
|
||||
* ## RETURN VALUE
|
||||
*\--------------------------------------
|
||||
K.GetPWUID .EQ K.SYSCALL.JMPX1A
|
||||
K.GetPWUID .EQ JMP.X1A
|
||||
* >PULLW FORPNT
|
||||
* >PULLA UID
|
||||
* jmp K.SYSCALL.JMPX
|
||||
* jmp JMP.X
|
||||
*/--------------------------------------
|
||||
* # GetGRGID
|
||||
* ## C
|
||||
@ -24,10 +24,10 @@ K.GetPWUID .EQ K.SYSCALL.JMPX1A
|
||||
* `>SYSCALL getpwname`
|
||||
* ## RETURN VALUE
|
||||
*\--------------------------------------
|
||||
K.GetGRGID .EQ K.SYSCALL.JMPX1A
|
||||
K.GetGRGID .EQ JMP.X1A
|
||||
* >PULLW FORPNT
|
||||
* >PULLA GID
|
||||
* jmp K.SYSCALL.JMPX
|
||||
* jmp JMP.X
|
||||
*/--------------------------------------
|
||||
* # CloseSession
|
||||
* ## C
|
||||
@ -37,7 +37,7 @@ K.GetGRGID .EQ K.SYSCALL.JMPX1A
|
||||
* `>SYSCALL CloseSession`
|
||||
* ## RETURN VALUE
|
||||
*\--------------------------------------
|
||||
K.CloseSession .EQ K.SYSCALL.JMPX
|
||||
K.CloseSession .EQ JMP.X
|
||||
*/--------------------------------------
|
||||
* # OpenSession
|
||||
* ## C
|
||||
@ -48,12 +48,12 @@ K.CloseSession .EQ K.SYSCALL.JMPX
|
||||
* `>SYSCALL OpenSession`
|
||||
* ## RETURN VALUE
|
||||
*\--------------------------------------
|
||||
K.OpenSession .EQ K.SYSCALL.JMPX2
|
||||
K.OpenSession .EQ JMP.X2
|
||||
|
||||
* >PULLW FORPNT passwd
|
||||
* >PULLW TXTPTR name
|
||||
|
||||
* jmp K.SYSCALL.JMPX
|
||||
* jmp JMP.X
|
||||
*/--------------------------------------
|
||||
* # GetPWName
|
||||
* ## C
|
||||
@ -64,11 +64,11 @@ K.OpenSession .EQ K.SYSCALL.JMPX2
|
||||
* `>SYSCALL getpwname`
|
||||
* ## RETURN VALUE
|
||||
*\--------------------------------------
|
||||
K.GetPWName .EQ K.SYSCALL.JMPX2
|
||||
K.GetPWName .EQ JMP.X2
|
||||
|
||||
* >PULLW FORPNT
|
||||
* >PULLW TXTPTR
|
||||
* jmp K.SYSCALL.JMPX
|
||||
* jmp JMP.X
|
||||
*/--------------------------------------
|
||||
* # GetGRName
|
||||
* ## C
|
||||
@ -79,11 +79,11 @@ K.GetPWName .EQ K.SYSCALL.JMPX2
|
||||
* `>SYSCALL getpwname`
|
||||
* ## RETURN VALUE
|
||||
*\--------------------------------------
|
||||
K.GetGRName .EQ K.SYSCALL.JMPX2
|
||||
K.GetGRName .EQ JMP.X2
|
||||
|
||||
* >PULLW FORPNT
|
||||
* >PULLW TXTPTR
|
||||
* jmp K.SYSCALL.JMPX
|
||||
* jmp JMP.X
|
||||
*/--------------------------------------
|
||||
* # PutPW
|
||||
* ## C
|
||||
@ -105,7 +105,7 @@ K.PutPW
|
||||
*\--------------------------------------
|
||||
K.PutGR >PULLW TXTPTR
|
||||
|
||||
jsr K.SYSCALL.JMPX
|
||||
jsr JMP.X
|
||||
bcc PWD.FlushFiles
|
||||
|
||||
rts
|
||||
|
@ -36,7 +36,7 @@ K.SListAddData
|
||||
* ## RETURN VALUE
|
||||
*\--------------------------------------
|
||||
K.SListSetData >PULLW ZPSListDataLen
|
||||
jmp K.SYSCALL.JMPX2A
|
||||
jmp JMP.X2A
|
||||
*/--------------------------------------
|
||||
* # SListGetByID
|
||||
* ## ASM
|
||||
@ -47,7 +47,7 @@ K.SListSetData >PULLW ZPSListDataLen
|
||||
* ## RETURN VALUE
|
||||
* Y,A = Next KeyID
|
||||
*\--------------------------------------
|
||||
K.SListGetByID .EQ K.SYSCALL.JMPX2A
|
||||
K.SListGetByID .EQ JMP.X2A
|
||||
* >PULLW FORPNT
|
||||
* >PULLW TXTPTR
|
||||
* >PULLA
|
||||
@ -62,7 +62,7 @@ K.SListGetByID .EQ K.SYSCALL.JMPX2A
|
||||
* Y,A = KeyID
|
||||
* X = KeyLen
|
||||
*\--------------------------------------
|
||||
K.SListNewKey .EQ K.SYSCALL.JMPX2A
|
||||
K.SListNewKey .EQ JMP.X2A
|
||||
* >PULLW FORPNT
|
||||
* >PULLW TXTPTR
|
||||
* >PULLA
|
||||
@ -77,7 +77,7 @@ K.SListNewKey .EQ K.SYSCALL.JMPX2A
|
||||
* Y,A = KeyID
|
||||
* X = Key Length
|
||||
*\--------------------------------------
|
||||
K.SListLookup .EQ K.SYSCALL.JMPX2A
|
||||
K.SListLookup .EQ JMP.X2A
|
||||
* >PULLW FORPNT
|
||||
* >PULLW TXTPTR
|
||||
* >PULLA
|
||||
@ -88,7 +88,7 @@ K.SListLookup .EQ K.SYSCALL.JMPX2A
|
||||
* `>SYSCALL SListFree`
|
||||
* ## RETURN VALUE
|
||||
*\--------------------------------------
|
||||
K.SListFree .EQ K.SYSCALL.JMPX
|
||||
K.SListFree .EQ JMP.X
|
||||
*/--------------------------------------
|
||||
* # SListNew
|
||||
* ## ASM
|
||||
@ -97,7 +97,7 @@ K.SListFree .EQ K.SYSCALL.JMPX
|
||||
* ## RETURN VALUE
|
||||
* A=hSList
|
||||
*\--------------------------------------
|
||||
K.SListNew .EQ K.SYSCALL.JMPX
|
||||
K.SListNew .EQ JMP.X
|
||||
*--------------------------------------
|
||||
MAN
|
||||
SAVE usr/src/sys/kernel.s.slist
|
||||
|
@ -53,7 +53,7 @@ SLISTX.GetData jsr SLISTX.Select
|
||||
ror SLISTX.b0
|
||||
|
||||
.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
|
||||
|
||||
stx .88+1
|
||||
@ -231,7 +231,7 @@ SLISTX.CheckLen lda ZPSListDataLen
|
||||
|
||||
iny
|
||||
bne .1
|
||||
|
||||
|
||||
inc FORPNT+1
|
||||
|
||||
inx
|
||||
@ -473,6 +473,7 @@ SLISTX.IsIDValid
|
||||
beq .8
|
||||
|
||||
.1 bit SLISTX.Opt SL._
|
||||
|
||||
.2 bvc .3
|
||||
|
||||
cmp #'_'
|
||||
|
@ -9,11 +9,11 @@ NEW
|
||||
* `>SYSCALL StrVSet`
|
||||
* ## RETURN VALUE
|
||||
*\--------------------------------------
|
||||
K.StrVSet .EQ K.SYSCALL.JMPX2A
|
||||
K.StrVSet .EQ JMP.X2A
|
||||
* >PULLW FORPNT ptr
|
||||
* >PULLW TXTPTR id
|
||||
* >PULLA
|
||||
* jmp K.SYSCALL.JMPX
|
||||
* jmp JMP.X
|
||||
*/--------------------------------------
|
||||
* # StrVGet
|
||||
* ## ASM
|
||||
@ -25,11 +25,11 @@ K.StrVSet .EQ K.SYSCALL.JMPX2A
|
||||
* CC: Y,A = Ptr
|
||||
* CS: Y,A = NULL
|
||||
*\--------------------------------------
|
||||
K.StrVGet .EQ K.SYSCALL.JMPX2A
|
||||
K.StrVGet .EQ JMP.X2A
|
||||
* >PULLW FORPNT ptr
|
||||
* >PULLW TXTPTR id
|
||||
* >PULLA
|
||||
* jmp K.SYSCALL.JMPX
|
||||
* jmp JMP.X
|
||||
*/--------------------------------------
|
||||
* # StrVNew
|
||||
* ## ASM
|
||||
@ -37,7 +37,7 @@ K.StrVGet .EQ K.SYSCALL.JMPX2A
|
||||
* `>SYSCALL StrVNew`
|
||||
* ## RETURN VALUE
|
||||
*\--------------------------------------
|
||||
K.StrVNew .EQ K.SYSCALL.JMPX
|
||||
K.StrVNew .EQ JMP.X
|
||||
*/--------------------------------------
|
||||
* # StrVFree
|
||||
* ## ASM
|
||||
@ -45,7 +45,7 @@ K.StrVNew .EQ K.SYSCALL.JMPX
|
||||
* `>SYSCALL StrVFree`
|
||||
* ## RETURN VALUE
|
||||
*\--------------------------------------
|
||||
K.StrVFree .EQ K.SYSCALL.JMPX
|
||||
K.StrVFree .EQ JMP.X
|
||||
*--------------------------------------
|
||||
MAN
|
||||
SAVE usr/src/sys/kernel.s.strv
|
||||
|
@ -16,7 +16,7 @@ K.Time >PULLW FORPNT
|
||||
>LDYAI GP.DATE
|
||||
>STYA TXTPTR
|
||||
ldx #SYS.PTime2Time
|
||||
jmp K.SYSCALL.JMPX
|
||||
jmp JMP.X
|
||||
*/--------------------------------------
|
||||
* # StrFTime
|
||||
* ## C
|
||||
@ -47,7 +47,7 @@ K.Time >PULLW FORPNT
|
||||
K.StrFTime >PULLW ZPPtr3 S.TIME
|
||||
>PULLW TXTPTR format
|
||||
>PULLW FORPNT str
|
||||
jmp K.SYSCALL.JMPX
|
||||
jmp JMP.X
|
||||
*/--------------------------------------
|
||||
* # PTime2Time
|
||||
* Convert ProDOS Time To S.TIME
|
||||
@ -59,11 +59,11 @@ K.StrFTime >PULLW ZPPtr3 S.TIME
|
||||
* `>SYSCALL PTime2Time`
|
||||
* ## RETURN VALUE
|
||||
*\--------------------------------------
|
||||
K.PTime2Time .EQ K.SYSCALL.JMPX2
|
||||
K.PTime2Time .EQ JMP.X2
|
||||
|
||||
* >PULLW FORPNT S.TIME
|
||||
* >PULLW TXTPTR ptime
|
||||
* jmp K.SYSCALL.JMPX
|
||||
* jmp JMP.X
|
||||
*/--------------------------------------
|
||||
* # CTime2Time
|
||||
* Convert CTime Time To S.TIME
|
||||
@ -75,11 +75,11 @@ K.PTime2Time .EQ K.SYSCALL.JMPX2
|
||||
* `>SYSCALL CTime2Time`
|
||||
* ## RETURN VALUE
|
||||
*\--------------------------------------
|
||||
K.CTime2Time .EQ K.SYSCALL.JMPX2
|
||||
K.CTime2Time .EQ JMP.X2
|
||||
|
||||
* >PULLW FORPNT S.TIME
|
||||
* >PULLW TXTPTR ctime
|
||||
* jmp K.SYSCALL.JMPX
|
||||
* jmp JMP.X
|
||||
*--------------------------------------
|
||||
MAN
|
||||
SAVE usr/src/sys/kernel.s.time
|
||||
|
@ -6,6 +6,9 @@ NEW
|
||||
|
||||
.TF sys/kernel
|
||||
|
||||
K8M .EQ 0
|
||||
MAIN.ORG .EQ $1000
|
||||
|
||||
.INB inc/macros.i
|
||||
.INB inc/a2osx.i
|
||||
.INB inc/io.i
|
||||
@ -24,23 +27,26 @@ NEW
|
||||
A2osX.Unpak >STYA ZPOutBufPtr
|
||||
.INB usr/src/shared/x.unpak.s
|
||||
|
||||
PAKME.MAIN .DA MAIN
|
||||
PAKME.AUX .DA AUX
|
||||
PAKME.D1 .DA D1
|
||||
PAKME.D2 .DA D2
|
||||
PAKME.E0 .DA E0
|
||||
GP .DA #0
|
||||
.DA GP.S
|
||||
|
||||
GP.B .PH $0140
|
||||
.INB usr/src/sys/kernel.s.gp
|
||||
.EP
|
||||
|
||||
GP.S .EQ *-GP.B
|
||||
|
||||
MAIN .DA #0
|
||||
.DA MAIN.S
|
||||
|
||||
MAIN.B .PH $1000
|
||||
.INB usr/src/sys/kernel.s.gp
|
||||
MAIN.B .PH MAIN.ORG
|
||||
.INB usr/src/sys/kernel.s.core
|
||||
.INB usr/src/sys/kernel.s.drv
|
||||
.INB usr/src/sys/kernel.s.pft
|
||||
.INB usr/src/sys/kernel.s.fs
|
||||
.INB usr/src/sys/kernel.s.mathf
|
||||
.EP
|
||||
|
||||
MAIN.S .EQ *-MAIN.B
|
||||
|
||||
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.errorx
|
||||
.EP
|
||||
|
||||
AUX.S .EQ *-AUX.B
|
||||
|
||||
D1 .DA #0
|
||||
@ -77,6 +84,7 @@ D1.B .PH $D000
|
||||
.INB usr/src/sys/kernel.s.sock
|
||||
.INB usr/src/sys/kernel.s.pipe
|
||||
.EP
|
||||
|
||||
D1.S .EQ *-D1.B
|
||||
|
||||
D2 .DA #0
|
||||
@ -93,6 +101,7 @@ D2.B .PH $D000
|
||||
.INB usr/src/sys/kernel.s.bin
|
||||
.INB usr/src/sys/kernel.s.ps
|
||||
.EP
|
||||
|
||||
D2.S .EQ *-D2.B
|
||||
|
||||
E0 .DA #0
|
||||
@ -125,10 +134,17 @@ DevMgr.FreeMem .EQ *
|
||||
|
||||
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
|
||||
.DA $2000 BIN ORG
|
||||
.DA #5 Chunk Count
|
||||
.DA PAKME.MAIN Chunks
|
||||
.DA #6 Chunk Count
|
||||
.DA PAKME.GP Chunks
|
||||
|
||||
.INB usr/src/sys/kernel.s.ctrl
|
||||
MAN
|
||||
|
@ -6,6 +6,9 @@ NEW
|
||||
|
||||
.TF sys/krnl8m
|
||||
|
||||
K8M .EQ 1
|
||||
MAIN.ORG .EQ $8000
|
||||
|
||||
.INB inc/macros.i
|
||||
.INB inc/a2osx.i
|
||||
.INB inc/io.i
|
||||
@ -24,17 +27,19 @@ NEW
|
||||
A2osX.Unpak >STYA ZPOutBufPtr
|
||||
.INB usr/src/shared/x.unpak.s
|
||||
|
||||
PAKME.MAIN .DA MAIN
|
||||
PAKME.AUX .DA AUX
|
||||
PAKME.D1 .DA D1
|
||||
PAKME.D2 .DA D2
|
||||
PAKME.E0 .DA E0
|
||||
GP .DA #0
|
||||
.DA GP.S
|
||||
|
||||
GP.B .PH $0140
|
||||
.INB usr/src/sys/kernel.s.gp
|
||||
.EP
|
||||
|
||||
GP.S .EQ *-GP.B
|
||||
|
||||
MAIN .DA #0
|
||||
.DA MAIN.S
|
||||
|
||||
MAIN.B .PH $1000
|
||||
.INB usr/src/sys/kernel.s.gp
|
||||
MAIN.B .PH MAIN.ORG
|
||||
.INB usr/src/sys/kernel.s.core
|
||||
.INB usr/src/sys/kernel.s.drv
|
||||
.INB usr/src/sys/kernel.s.pft
|
||||
@ -125,10 +130,17 @@ DevMgr.FreeMem .EQ *
|
||||
|
||||
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
|
||||
.DA $2000 BIN ORG
|
||||
.DA #5 Chunk Count
|
||||
.DA PAKME.MAIN Chunks
|
||||
.DA PAKME.GP Chunks
|
||||
|
||||
.INB usr/src/sys/kernel.s.ctrl
|
||||
MAN
|
||||
|
Loading…
x
Reference in New Issue
Block a user