diff --git a/.Floppies/A2OSX.BUILD.po b/.Floppies/A2OSX.BUILD.po index 7e97f3b1..b6e40c30 100644 Binary files a/.Floppies/A2OSX.BUILD.po and b/.Floppies/A2OSX.BUILD.po differ diff --git a/.Floppies/A2OSX.TEST.po b/.Floppies/A2OSX.TEST.po index c87562a5..6f70b68d 100644 Binary files a/.Floppies/A2OSX.TEST.po and b/.Floppies/A2OSX.TEST.po differ diff --git a/.Floppies/ProDOSFX.BOOT.po b/.Floppies/ProDOSFX.BOOT.po index b05dfd14..dc70cd59 100644 Binary files a/.Floppies/ProDOSFX.BOOT.po and b/.Floppies/ProDOSFX.BOOT.po differ diff --git a/.Floppies/ProDOSFX.BOOTHD.woz b/.Floppies/ProDOSFX.BOOTHD.woz index dd6e73e8..0a5c4435 100644 Binary files a/.Floppies/ProDOSFX.BOOTHD.woz and b/.Floppies/ProDOSFX.BOOTHD.woz differ diff --git a/A2osX.S.QC.txt b/A2osX.S.QC.txt index 9e187f73..395116bb 100644 --- a/A2osX.S.QC.txt +++ b/A2osX.S.QC.txt @@ -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: " diff --git a/A2osX.S.txt b/A2osX.S.txt index ff7ce0aa..154bd142 100644 --- a/A2osX.S.txt +++ b/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 diff --git a/BIN/ARCME.S.txt b/BIN/ARCME.S.txt index cee2c4b5..952ad88e 100644 --- a/BIN/ARCME.S.txt +++ b/BIN/ARCME.S.txt @@ -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 diff --git a/BIN/ETCONFIG.S.txt b/BIN/ETCONFIG.S.txt index 34f6cb19..31d56f3a 100644 --- a/BIN/ETCONFIG.S.txt +++ b/BIN/ETCONFIG.S.txt @@ -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 diff --git a/BIN/FORMAT.S.txt b/BIN/FORMAT.S.txt index 94a2a2a0..2b8736aa 100644 --- a/BIN/FORMAT.S.txt +++ b/BIN/FORMAT.S.txt @@ -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 diff --git a/BIN/IPCONFIG.S.DHCP.txt b/BIN/IPCONFIG.S.DHCP.txt index 2271ca06..0dbdd8ba 100644 --- a/BIN/IPCONFIG.S.DHCP.txt +++ b/BIN/IPCONFIG.S.DHCP.txt @@ -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 diff --git a/BIN/IPCONFIG.S.ETC.txt b/BIN/IPCONFIG.S.ETC.txt index f6ef7fe0..8ed9f6f6 100644 --- a/BIN/IPCONFIG.S.ETC.txt +++ b/BIN/IPCONFIG.S.ETC.txt @@ -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 diff --git a/BIN/IRC.S.TLS.txt b/BIN/IRC.S.TLS.txt index 90ec01fc..2e16e9f9 100644 --- a/BIN/IRC.S.TLS.txt +++ b/BIN/IRC.S.TLS.txt @@ -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 diff --git a/BIN/PING.S.txt b/BIN/PING.S.txt index f4c90b39..e0bd76cc 100644 --- a/BIN/PING.S.txt +++ b/BIN/PING.S.txt @@ -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 diff --git a/BIN/RPCDUMP.S.txt b/BIN/RPCDUMP.S.txt index 212dfbfd..4cb68c4c 100644 --- a/BIN/RPCDUMP.S.txt +++ b/BIN/RPCDUMP.S.txt @@ -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 diff --git a/BIN/UNAME.S.txt b/BIN/UNAME.S.txt index 76ec8c48..0248f6e4 100644 --- a/BIN/UNAME.S.txt +++ b/BIN/UNAME.S.txt @@ -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 diff --git a/DRV/DAN2ETH.DRV.S.txt b/DRV/DAN2ETH.DRV.S.txt index 6c26b710..34500c73 100644 --- a/DRV/DAN2ETH.DRV.S.txt +++ b/DRV/DAN2ETH.DRV.S.txt @@ -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 diff --git a/DRV/DHGR.DRV.S.txt b/DRV/DHGR.DRV.S.txt index 41a7b200..91f15584 100644 --- a/DRV/DHGR.DRV.S.txt +++ b/DRV/DHGR.DRV.S.txt @@ -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 diff --git a/DRV/LANCEGS.DRV.S.txt b/DRV/LANCEGS.DRV.S.txt index 964616f4..bdba537f 100644 --- a/DRV/LANCEGS.DRV.S.txt +++ b/DRV/LANCEGS.DRV.S.txt @@ -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 diff --git a/DRV/UTHER2.AI.DRV.S.txt b/DRV/UTHER2.AI.DRV.S.txt index 744eadf8..ab710fd2 100644 --- a/DRV/UTHER2.AI.DRV.S.txt +++ b/DRV/UTHER2.AI.DRV.S.txt @@ -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 diff --git a/DRV/UTHERNET.DRV.S.txt b/DRV/UTHERNET.DRV.S.txt index c7a6bebb..e82b33a0 100644 --- a/DRV/UTHERNET.DRV.S.txt +++ b/DRV/UTHERNET.DRV.S.txt @@ -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 diff --git a/DRV/UTHERNET2.DRV.S.txt b/DRV/UTHERNET2.DRV.S.txt index ecfdb9de..e0f10b30 100644 --- a/DRV/UTHERNET2.DRV.S.txt +++ b/DRV/UTHERNET2.DRV.S.txt @@ -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 diff --git a/INC/A2osX.I.txt b/INC/A2osX.I.txt index 5400d5b1..e3368f24 100644 --- a/INC/A2osX.I.txt +++ b/INC/A2osX.I.txt @@ -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 diff --git a/LIB/LIBTCPIP.S.DNS.txt b/LIB/LIBTCPIP.S.DNS.txt index 1d5e2287..3524ffd0 100644 --- a/LIB/LIBTCPIP.S.DNS.txt +++ b/LIB/LIBTCPIP.S.DNS.txt @@ -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 diff --git a/LIB/LIBTCPIP.S.SKT.txt b/LIB/LIBTCPIP.S.SKT.txt index 40d671e6..78bba855 100644 --- a/LIB/LIBTCPIP.S.SKT.txt +++ b/LIB/LIBTCPIP.S.SKT.txt @@ -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 diff --git a/ProDOS.FX/PDOS8M.S.txt b/ProDOS.FX/PDOS8M.S.txt index 323ae006..b7a6dba3 100644 --- a/ProDOS.FX/PDOS8M.S.txt +++ b/ProDOS.FX/PDOS8M.S.txt @@ -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 diff --git a/ProDOS.FX/PDOSTN.S..txt b/ProDOS.FX/PDOSTN.S..txt new file mode 100644 index 00000000..7876363e --- /dev/null +++ b/ProDOS.FX/PDOSTN.S..txt @@ -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 diff --git a/ProDOS.FX/ProDOS.S.LDR.txt b/ProDOS.FX/ProDOS.S.LDR.txt index b5500708..44e08291 100644 --- a/ProDOS.FX/ProDOS.S.LDR.txt +++ b/ProDOS.FX/ProDOS.S.LDR.txt @@ -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 *-------------------------------------- diff --git a/ProDOS.FX/ProDOS.S.XDOS.A.txt b/ProDOS.FX/ProDOS.S.XDOS.A.txt index 95e44294..33458637 100644 --- a/ProDOS.FX/ProDOS.S.XDOS.A.txt +++ b/ProDOS.FX/ProDOS.S.XDOS.A.txt @@ -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 diff --git a/ProDOS.FX/ProDOS.S.XDOS.B.txt b/ProDOS.FX/ProDOS.S.XDOS.B.txt index 9d591adf..154b19f2 100644 --- a/ProDOS.FX/ProDOS.S.XDOS.B.txt +++ b/ProDOS.FX/ProDOS.S.XDOS.B.txt @@ -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 diff --git a/ProDOS.FX/ProDOS.S.XDOS.C.txt b/ProDOS.FX/ProDOS.S.XDOS.C.txt index b2f5a69a..163ded8a 100644 --- a/ProDOS.FX/ProDOS.S.XDOS.C.txt +++ b/ProDOS.FX/ProDOS.S.XDOS.C.txt @@ -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 diff --git a/ProDOS.FX/ProDOS.S.XDOS.D.txt b/ProDOS.FX/ProDOS.S.XDOS.D.txt index 29e23e25..56fe1725 100644 --- a/ProDOS.FX/ProDOS.S.XDOS.D.txt +++ b/ProDOS.FX/ProDOS.S.XDOS.D.txt @@ -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 # diff --git a/ProDOS.FX/ProDOS.S.XDOS.E.txt b/ProDOS.FX/ProDOS.S.XDOS.E.txt index fe7967e4..e9f7083a 100644 --- a/ProDOS.FX/ProDOS.S.XDOS.E.txt +++ b/ProDOS.FX/ProDOS.S.XDOS.E.txt @@ -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 diff --git a/ProDOS.FX/ProDOS.S.XDOS.F.txt b/ProDOS.FX/ProDOS.S.XDOS.F.txt index 4b05a415..83a284cd 100644 --- a/ProDOS.FX/ProDOS.S.XDOS.F.txt +++ b/ProDOS.FX/ProDOS.S.XDOS.F.txt @@ -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 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 diff --git a/ProDOS.FX/ProDOS.S.txt b/ProDOS.FX/ProDOS.S.txt index adcac862..cbfceb48 100644 --- a/ProDOS.FX/ProDOS.S.txt +++ b/ProDOS.FX/ProDOS.S.txt @@ -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 diff --git a/SHARED/X.ARC.S.txt b/SHARED/X.ARC.S.txt index 7611b6c4..da39d76f 100644 --- a/SHARED/X.ARC.S.txt +++ b/SHARED/X.ARC.S.txt @@ -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) diff --git a/SHARED/X.UDETH.DRV.S.txt b/SHARED/X.UDETH.DRV.S.txt index 4e1ed69b..4494cbac 100644 --- a/SHARED/X.UDETH.DRV.S.txt +++ b/SHARED/X.UDETH.DRV.S.txt @@ -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 diff --git a/SYS/KERNEL.S.CORE.txt b/SYS/KERNEL.S.CORE.txt index 7d573efb..2d4c5e22 100644 --- a/SYS/KERNEL.S.CORE.txt +++ b/SYS/KERNEL.S.CORE.txt @@ -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 diff --git a/SYS/KERNEL.S.CTRL.txt b/SYS/KERNEL.S.CTRL.txt index fad7448c..17a8bd9f 100644 --- a/SYS/KERNEL.S.CTRL.txt +++ b/SYS/KERNEL.S.CTRL.txt @@ -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 diff --git a/SYS/KERNEL.S.ENV.txt b/SYS/KERNEL.S.ENV.txt index d4c437d0..26196fad 100644 --- a/SYS/KERNEL.S.ENV.txt +++ b/SYS/KERNEL.S.ENV.txt @@ -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 diff --git a/SYS/KERNEL.S.ENVX.txt b/SYS/KERNEL.S.ENVX.txt index 4b62d86e..efddc56e 100644 --- a/SYS/KERNEL.S.ENVX.txt +++ b/SYS/KERNEL.S.ENVX.txt @@ -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 diff --git a/SYS/KERNEL.S.GP.txt b/SYS/KERNEL.S.GP.txt index ac336695..9886a644 100644 --- a/SYS/KERNEL.S.GP.txt +++ b/SYS/KERNEL.S.GP.txt @@ -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 diff --git a/SYS/KERNEL.S.INIT.txt b/SYS/KERNEL.S.INIT.txt index b867f39f..ad2c9b22 100644 --- a/SYS/KERNEL.S.INIT.txt +++ b/SYS/KERNEL.S.INIT.txt @@ -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 diff --git a/SYS/KERNEL.S.JMP.txt b/SYS/KERNEL.S.JMP.txt index a7f7026d..f2a9f601 100644 --- a/SYS/KERNEL.S.JMP.txt +++ b/SYS/KERNEL.S.JMP.txt @@ -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 diff --git a/SYS/KERNEL.S.MD5.txt b/SYS/KERNEL.S.MD5.txt index 005c1448..1f7138b4 100644 --- a/SYS/KERNEL.S.MD5.txt +++ b/SYS/KERNEL.S.MD5.txt @@ -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 diff --git a/SYS/KERNEL.S.PWD.txt b/SYS/KERNEL.S.PWD.txt index 1eede683..faf685c8 100644 --- a/SYS/KERNEL.S.PWD.txt +++ b/SYS/KERNEL.S.PWD.txt @@ -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 diff --git a/SYS/KERNEL.S.SLIST.txt b/SYS/KERNEL.S.SLIST.txt index 8ef027ea..c46d9c93 100644 --- a/SYS/KERNEL.S.SLIST.txt +++ b/SYS/KERNEL.S.SLIST.txt @@ -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 diff --git a/SYS/KERNEL.S.SLISTX.txt b/SYS/KERNEL.S.SLISTX.txt index 2eb6f7fa..08a1479f 100644 --- a/SYS/KERNEL.S.SLISTX.txt +++ b/SYS/KERNEL.S.SLISTX.txt @@ -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 #'_' diff --git a/SYS/KERNEL.S.STRV.txt b/SYS/KERNEL.S.STRV.txt index 5e81bfb3..b9120c2c 100644 --- a/SYS/KERNEL.S.STRV.txt +++ b/SYS/KERNEL.S.STRV.txt @@ -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 diff --git a/SYS/KERNEL.S.TIME.txt b/SYS/KERNEL.S.TIME.txt index 7721a780..ed02f818 100644 --- a/SYS/KERNEL.S.TIME.txt +++ b/SYS/KERNEL.S.TIME.txt @@ -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 diff --git a/SYS/KERNEL.S.txt b/SYS/KERNEL.S.txt index b6abd727..57e14713 100644 --- a/SYS/KERNEL.S.txt +++ b/SYS/KERNEL.S.txt @@ -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 diff --git a/SYS/KRNL8M.S.txt b/SYS/KRNL8M.S.txt index e119388a..1dcf5a3a 100644 --- a/SYS/KRNL8M.S.txt +++ b/SYS/KRNL8M.S.txt @@ -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