diff --git a/BIN/CAT.S.txt b/BIN/CAT.S.txt index bbed603f..198bd4ea 100644 --- a/BIN/CAT.S.txt +++ b/BIN/CAT.S.txt @@ -289,7 +289,10 @@ CS.END OptionList >PSTR "ANSans" OptionVars .DA #bPrintAll,#bLineNum,#bSuppressBlankLine,#bPrintAll,#bLineNum,#bSuppressBlankLine *-------------------------------------- -MSG.USAGE .AZ "Usage : CAT File1 [File2...]\r\n -A : Show All non printable caracters\r\n -N : Number all output lines\r\n -S : Suppress repeated empty output lines\r\n" +MSG.USAGE .AS "Usage : CAT File1 [File2...]\r\n" + .AS " -A : Show All non printable caracters\r\n" + .AS " -N : Number all output lines\r\n" + .AZ " -S : Suppress repeated empty output lines\r\n" MSG.LINENUM .AZ "%5D:" MSG.CTRLCHAR .AZ "[%S]" *-------------------------------------- @@ -347,5 +350,5 @@ DS.END .ED *-------------------------------------- MAN -SAVE USR/SRC/BIN/BIN/CAT.S +SAVE USR/SRC/BIN/CAT.S ASM diff --git a/BIN/LSDEV.S.txt b/BIN/LSDEV.S.txt index e08376e5..8d158267 100644 --- a/BIN/LSDEV.S.txt +++ b/BIN/LSDEV.S.txt @@ -9,9 +9,9 @@ AUTO 4,1 .INB INC/MACROS.I .INB INC/MLI.I .INB INC/A2OSX.I + .INB INC/KERNEL.I *-------------------------------------- -ZPPTR1 .EQ ZPBIN -ZPPTR2 .EQ ZPBIN+2 +ZPFDPtr .EQ ZPBIN *-------------------------------------- * File Header (16 Bytes) *-------------------------------------- @@ -38,24 +38,47 @@ L.MSG2.ERR .DA MSG2.ERR L.MSG2 .DA MSG2 L.MSG2.C .DA MSG2.C L.MSG2.B .DA MSG2.B +L.MSG3 .DA MSG3 +L.MSG4 .DA MSG4 +L.FD.T .DA FD.T.REG + .DA FD.T.DIR + .DA FD.T.CDEV + .DA FD.T.BDEV + .DA FD.T.LNK + .DA FD.T.DSOCK + .DA FD.T.SSOCK + .DA FD.T.PIPE .DA 0 *-------------------------------------- CS.INIT clc rts *-------------------------------------- -CS.RUN >LDYA L.MSG0 +CS.RUN jsr DumpDev + bcs .9 + + >STZ.G Table.Index + + jsr DumpNod + bcs .9 + +.8 lda #0 tell TSKMGR that all done ok, but + sec we do not want to stay in memory +.9 rts +*-------------------------------------- +DumpDev >LDYA L.MSG0 >SYSCALL puts - >LDA.G DEV.ID - -.1 >SYSCALL GetDevByID - bcs .7 + >LDA.G Table.Index + +.1 tax + lda Dev.Table.hFD,x + beq .7 - >STYA ZPPTR1 S.FD - txa >STA.G DEV.FD + >SYSCALL GetMemPtr + >STYA ZPFDPtr S.FD - jsr DumpFD + jsr DumpDevFD bcs .9 >PUSHEA.G DEV.DIB @@ -71,41 +94,40 @@ CS.RUN >LDYA L.MSG0 bcs .9 bra .7 -.6 jsr DumpDIB +.6 jsr DumpDevDIB -.7 >INC.G DEV.ID +.7 >INC.G Table.Index cmp #K.DEV.MAX bne .1 - -.8 lda #0 tell TSKMGR that all done ok, but - sec we do not want to stay in memory + + clc .9 rts *-------------------------------------- -DumpFD ldy #S.FD.DEV.DRVPTR+1 - >PUSHB (ZPPTR1),y +DumpDevFD ldy #S.FD.DEV.DRVPTR+1 + >PUSHB (ZPFDPtr),y dey - >PUSHB (ZPPTR1),y + >PUSHB (ZPFDPtr),y lda #S.FD.DEV.NAME clc - adc ZPPTR1 + adc ZPFDPtr tay lda /S.FD.DEV.NAME - adc ZPPTR1+1 + adc ZPFDPtr+1 >PUSHYA >PUSHB.G DEV.FD - >PUSHB.G DEV.ID + >PUSHB.G Table.Index >PUSHBI 6 >LDYA L.MSG1 >SYSCALL printf rts *-------------------------------------- -DumpDIB >PUSHB.G DEV.DIB+S.DIB.VERSION+1 +DumpDevDIB >PUSHB.G DEV.DIB+S.DIB.VERSION+1 >PUSHB.G DEV.DIB+S.DIB.VERSION >PUSHEA.G DEV.DIB+S.DIB.IDS @@ -156,6 +178,46 @@ DumpDIB >PUSHB.G DEV.DIB+S.DIB.VERSION+1 .8 >SYSCALL printf .9 rts *-------------------------------------- +DumpNod >LDYA L.MSG3 + >SYSCALL puts + + >LDA.G Table.Index + +.1 tax + + lda Nod.Table.hPath,x + beq .7 + >SYSCALL GetMemPtr + >PUSHYA + + >LDA.G Table.Index + tax + lda Nod.Table.hFD,x + >SYSCALL GetMemPtr + >STYA ZPFDPtr + + lda (ZPFDPtr) + tax + >PUSHW L.FD.T,x + + >LDA.G Table.Index + tax + lda Nod.Table.hFD,x + >PUSHA + txa + >PUSHA + + >PUSHBI 6 + >LDYA L.MSG4 + >SYSCALL printf + +.7 >INC.G Table.Index + cmp #K.OF.MAX + bne .1 + + clc +.9 rts +*-------------------------------------- CS.EVENT sec rts *-------------------------------------- @@ -170,11 +232,22 @@ MSG2 .AZ "%s $%h/$%h %16S %03d.%03d " MSG2.B .AZ "%10u\r\n" MSG2.C .AZ "n/a\r\n" MSG.SFLAGS .AS "BWRLNEIO" +*-------------------------------------- +MSG3 .AZ "ID hFD Type Filepath" +MSG4 .AZ "%03d $%h %5s %s\r\n" +FD.T.REG .AZ "REG" +FD.T.DIR .AZ "DIR" +FD.T.CDEV .AZ "CDEV" +FD.T.BDEV .AZ "BDEV" +FD.T.LNK .AZ "LNK" +FD.T.DSOCK .AZ "DSOCK" +FD.T.SSOCK .AZ "SSOCK" +FD.T.PIPE .AZ "PIPE" *-------------------------------------- .DUMMY .OR 0 DS.START -DEV.ID .BS 1 +Table.Index .BS 1 DEV.FD .BS 1 DEV.DIB .BS S.DIB DEV.SFLAGS .BS 9 diff --git a/BIN/LSOF.S.txt b/BIN/LSOF.S.txt index e7fe1c49..08d4bd52 100644 --- a/BIN/LSOF.S.txt +++ b/BIN/LSOF.S.txt @@ -11,7 +11,7 @@ AUTO 4,1 .INB INC/A2OSX.I .INB INC/KERNEL.I *-------------------------------------- -pPD .EQ ZPBIN +ZPFDPtr .EQ ZPBIN *-------------------------------------- * File Header (16 Bytes) *-------------------------------------- @@ -54,24 +54,24 @@ CS.RUN >LDYA L.MSG0 .1 tax - lda Nod.Table.hPath,x + lda OF.Table.hPath,x beq .7 >SYSCALL GetMemPtr >PUSHYA >LDA.G FILE.ID tax - lda Nod.Table.hFD,x + lda OF.Table.hFD,x >SYSCALL GetMemPtr - >STYA pFD + >STYA ZPFDPtr - lda (pFD) + lda (ZPFDPtr) tax >PUSHW L.FD.T,x >LDA.G FILE.ID tax - lda Nod.Table.hFD,x + lda OF.Table.hFD,x >PUSHA txa >PUSHA @@ -81,7 +81,7 @@ CS.RUN >LDYA L.MSG0 >SYSCALL printf .7 >INC.G FILE.ID - cmp #K.NOD.MAX + cmp #K.OF.MAX bne .1 .8 lda #0 tell TSKMGR that all done ok, but @@ -114,5 +114,5 @@ DS.END .ED *-------------------------------------- MAN -SAVE USR/SRC/BIN/BIN/LSOF.S +SAVE USR/SRC/BIN/LSOF.S ASM diff --git a/BMP2PIX.S.txt b/BMP2PIX.S.txt index f2142188..ee7d8580 100644 --- a/BMP2PIX.S.txt +++ b/BMP2PIX.S.txt @@ -330,6 +330,25 @@ MSG.FILE.OK .AZ "BMP Loaded, %D Bytes Read\r\n" MSG.HEADER.OK .AZ "BMP Size : %D x %D pixels\r\n" MSG.HEADER.KO .AZ "Invalid Input File Format\r\n" MSG.DONE .AZ "All Done!!!\r\n" +*-------------------------------------- +* LOWRES Patette : https://comp.sys.apple2.narkive.com/lTSrj2ZI/apple-ii-colour-rgb +*-------------------------------------- +0 #000000 +1 #e31e60 +2 #604ebd +3 #ff44fd +4 #00a360 +5 #9c9c9c +6 #14cffd +7 #d0c3ff +8 #607203 +9 #ff6a3c +a #9c9c9c (yes it is the same as #5!) +b #ffa0d0 +c #14f53c +d #d0dd8d +e #72ffd0 +f #ffffff *-------------------------------------- .DUMMY .OR 0 diff --git a/INC/A2osX.I.txt b/INC/A2osX.I.txt index 552de771..2a5c2160 100644 --- a/INC/A2osX.I.txt +++ b/INC/A2osX.I.txt @@ -10,6 +10,7 @@ K.IRQDEV.MAX .EQ 4 K.DEV.MAX .EQ 32 K.NOD.MAX .EQ 32 K.PS.MAX .EQ 32 +K.OF.MAX .EQ 32 K.FLT.MAX .EQ 4 K.EVT.MAX .EQ 4 *-------------------------------------- @@ -438,19 +439,19 @@ S.FD.DEV .EQ 16 *-------------------------------------- * S.FD.LNK *-------------------------------------- -S.FD.DSOCK.HSKT .EQ 2 -S.FD.DSOCK.OPEN .EQ 3 +S.FD.DSOCK.IOHANDLER .EQ 2 +S.FD.DSOCK.OPEN .EQ 3 S.FD.DSOCK.CLOSE .EQ 4 -S.FD.DSOCK.READ .EQ 5 +S.FD.DSOCK.READ .EQ 5 S.FD.DSOCK.WRITE .EQ 6 S.FD.DSOCK.STATUS .EQ 7 * S.FD.DSOCK .EQ 8 *-------------------------------------- -S.FD.SSOCK.HSKT .EQ 2 -S.FD.SSOCK.OPEN .EQ 3 +S.FD.SSOCK.IOHANDLER .EQ 2 +S.FD.SSOCK.OPEN .EQ 3 S.FD.SSOCK.CLOSE .EQ 4 -S.FD.SSOCK.READ .EQ 5 +S.FD.SSOCK.READ .EQ 5 S.FD.SSOCK.WRITE .EQ 6 S.FD.SSOCK.STATUS .EQ 7 * diff --git a/INC/KERNEL.I.txt b/INC/KERNEL.I.txt index e5122e11..c089f22a 100644 --- a/INC/KERNEL.I.txt +++ b/INC/KERNEL.I.txt @@ -110,6 +110,9 @@ PS.Table.hPS .EQ $0CA0 K.PS.MAX PS.Table.Hits .EQ $0CC0 K.PS.MAX PS.Table.Stats .EQ $0CE0 K.PS.MAX *-------------------------------------- +OF.Table.hPath .EQ $0D00 K.OF.MAX +OF.Table.hFD .EQ $0D20 K.OF.MAX +*-------------------------------------- Evt.Table .EQ $0D60 K.EVT.MAX*S.EVT.SIZE=4*8=32b *-------------------------------------- Flt.Table .EQ $0D80 K.FLT.MAX*S.FLT.SIZE=4*32=128b diff --git a/LIB/LIBTCPIP.S.SKT.txt b/LIB/LIBTCPIP.S.SKT.txt index 394f40eb..49b45ab7 100644 --- a/LIB/LIBTCPIP.S.SKT.txt +++ b/LIB/LIBTCPIP.S.SKT.txt @@ -36,7 +36,6 @@ SKT.Socket.DSOCK >SYSCALL GetMem0 bcs .9 >STYA ZPTmpPtr1 - stx FD.DSOCK+S.FD.DSOCK.HSKT jsr SKT.Socket.FindFree bcs .9 @@ -61,7 +60,6 @@ SKT.Socket.STREAM >SYSCALL GetMem0 bcs .9 >STYA ZPTmpPtr1 - stx FD.SSOCK+S.FD.SSOCK.HSKT jsr SKT.Socket.FindFree bcs .9 diff --git a/LIB/LIBTCPIP.S.TCP.txt b/LIB/LIBTCPIP.S.TCP.txt index 1ee91a91..68bc91ad 100644 --- a/LIB/LIBTCPIP.S.TCP.txt +++ b/LIB/LIBTCPIP.S.TCP.txt @@ -3,7 +3,14 @@ PREFIX AUTO 4,1 .LIST OFF *-------------------------------------- -TCP.IN jsr FRM.GetTargetSKT.TCPUDP +TCP.IN +* ldy #S.TCP.OPTIONS +* lda (ZPFrameInPtr),y +* cmp #S.TCP.OPTIONS.ACK +* bne .1 +* >DEBUG +*.1 + jsr FRM.GetTargetSKT.TCPUDP jsr SKT.FindMatchingLocRem bcs TCP.IN.JMP.CLOSED no socket, go discard diff --git a/LIB/LIBTCPIP.S.txt b/LIB/LIBTCPIP.S.txt index c2479fcb..ae551656 100644 --- a/LIB/LIBTCPIP.S.txt +++ b/LIB/LIBTCPIP.S.txt @@ -180,8 +180,8 @@ L.MSG.SKT.Dump .DA MSG.SKT.Dump *-------------------------------------- LIB.LOAD ldx RefCount bne .8 - - sta FD.DSOCK+S.FD.HANDLER + sta FD.DSOCK+S.FD.DSOCK.IOHANDLER + sta FD.SSOCK+S.FD.SSOCK.IOHANDLER jsr ARP.CLEAR @@ -426,8 +426,8 @@ SA.REMOTE .DA #AF.INET S.SOCKADDR.AF .BS 2 S.SOCKADDR.PORT *-------------------------------------- FD.DSOCK .DA #S.FD.T.DSOCK - .BS 1 S.FD.HANDLER - .BS 1 S.FD.DSOCK.HSKT + .DA #0 S.FD.HANDLER + .BS 1 S.FD.DSOCK.IOHANDLER .DA #0 S.FD.DSOCK.OPEN .DA #0 S.FD.DSOCK.CLOSE .DA #LIBTCPIP.Recv @@ -440,8 +440,8 @@ FD.DSOCK .DA #S.FD.T.DSOCK FD.DSOCK.SIZE .EQ *-FD.DSOCK *-------------------------------------- FD.SSOCK .DA #S.FD.T.SSOCK - .BS 1 S.FD.HANDLER - .BS 1 S.FD.SSOCK.HSKT + .DA #0 S.FD.HANDLER + .BS 1 S.FD.SSOCK.IOHANDLER .DA #0 S.FD.SSOCK.OPEN .DA #0 S.FD.SSOCK.CLOSE .DA #LIBTCPIP.Read diff --git a/SBIN/GETTY.S.txt b/SBIN/GETTY.S.txt index f8e92ad5..41ae9695 100644 --- a/SBIN/GETTY.S.txt +++ b/SBIN/GETTY.S.txt @@ -69,8 +69,9 @@ CS.RUN ldy #S.PS.ARGC >STA.G hDEV bra CS.RUN.LOOP0 -.90 >LDYA L.MSG.USAGE - >SYSCALL puts +.90 >PUSHBI 0 + >LDYA L.MSG.USAGE + >SYSCALL printf lda #E.SYN sec .9 rts @@ -253,7 +254,10 @@ Wait.TimeOut sec .9 rts *-------------------------------------- CS.END -MSG.USAGE .AZ "Usage : GETTY " +OptionList >PSTR "Ee" +OptionVars .DA #bCloseOnExit,#bCloseOnExit +MSG.USAGE .AZ "Usage : GETTY \r\n" + .AZ " -E : Close DEV on exit\r\n" MSG.GREETINGS .AZ "\r\nA2osX-GeTTY %d.%d\r\n" MSG.DEBUG .AZ "{%h}" *-------------------------------------- @@ -277,6 +281,7 @@ ENV.TERM .AZ "TERM" .OR 0 DS.START hDEV .BS 1 +bCloseOnExit .BS 1 TimeOut .BS 1 IAC.CMD .BS 1 IAC.SUBCMD .BS 1 diff --git a/SBIN/TELNETD.S.txt b/SBIN/TELNETD.S.txt index 375957fd..c9a34c14 100644 --- a/SBIN/TELNETD.S.txt +++ b/SBIN/TELNETD.S.txt @@ -46,6 +46,7 @@ L.MSG.TCPIPERR .DA MSG.TCPIPERR L.MSG.SKTERR .DA MSG.SKTERR L.MSG.ABORT .DA MSG.ABORT L.MSG.INCOMING .DA MSG.INCOMING +L.MSG.EXECERR .DA MSG.EXECERR L.NOD.Template .DA NOD.Template L.CMD.Template .DA CMD.Template .DA 0 @@ -142,24 +143,28 @@ CS.RUN.SERVER >LDA.G hSrvSocket >LIBCALL hLIBTCPIP,LIBTCPIP.Accept bcs .8 - >STA.G hClientSocket + pha ldy #hSockets ldx #CONN.MAX .1 lda (pData),y - beq CS.RUN.CLIENT - iny + bne .2 + pla + sta (pData),y + + bra CS.RUN.CLIENT + +.2 iny dex bne .1 - >LDA.G hClientSocket + pla >LIBCALL hLIBTCPIP,LIBTCPIP.Shutdown .8 clc rts - -CS.RUN.CLIENT sta (pData),y - +*-------------------------------------- +CS.RUN.CLIENT >STA.G hClientSocket >SYSCALL GetMemPtr >STYA ZPSktPtr @@ -188,6 +193,7 @@ CS.RUN.CLIENT sta (pData),y >LEA.G NodBuf >SYSCALL mknod bcs .9 + >STA.G hClientFile >PUSHEA.G NodBuf >PUSHBI 2 @@ -201,6 +207,13 @@ CS.RUN.CLIENT sta (pData),y >PUSHBI S.PS.F.DUPENV >LEA.G CmdBuf >SYSCALL execl + bcc .8 + + >PUSHA + >PUSHBI 1 + >LDYA L.MSG.EXECERR + >SYSCALL printf + .8 clc .9 rts @@ -264,9 +277,10 @@ MSG.TCPIPERR .AZ "TELNETD:TCP/IP Not initialized properly" MSG.SKTERR .AZ "TELNETD:Listen Error." MSG.ABORT .AZ "TELNETD:User Aborted." MSG.INCOMING .AZ "TELNETD:Incoming Connection [SKT=%h] From : %d.%d.%d.%d\r\n" +MSG.EXECERR .AZ "TELNETD:ExecL failed $%h." *-------------------------------------- NOD.Template .AZ "/DEV/TTY%h" -CMD.Template .AZ "${A2OSX}SBIN/GETTY %s ${A2OSX}SBIN/LOGIN" +CMD.Template .AZ "${ROOT}SBIN/GETTY %s ${ROOT}SBIN/LOGIN" *-------------------------------------- SA.LOCAL .DA #AF.INET S.SOCKADDR.AF .BS 1 @@ -280,6 +294,7 @@ hSockets .BS CONN.MAX pData SktIndex .BS 1 hSrvSocket .BS 1 hClientSocket .BS 1 +hClientFile .BS 1 TimeOut .BS 1 NodBuf .BS 11 CmdBuf .BS 65 diff --git a/SYS/KERNEL.S.CORE.txt b/SYS/KERNEL.S.CORE.txt index 93c9c294..6e0b2391 100644 --- a/SYS/KERNEL.S.CORE.txt +++ b/SYS/KERNEL.S.CORE.txt @@ -385,7 +385,7 @@ CORE.ScrSel and #$0F stx A2osX.ASCREEN set active screen - >SYSCALL GetDevByID + jsr K.GetDevByID bcs .8 phx diff --git a/SYS/KERNEL.S.DEV.txt b/SYS/KERNEL.S.DEV.txt index 8331598b..69a90cc6 100644 --- a/SYS/KERNEL.S.DEV.txt +++ b/SYS/KERNEL.S.DEV.txt @@ -161,7 +161,6 @@ K.MKDev >STYA .1+1 inc DevMgr.DevCnt clc rts - *-------------------------------------- MAN SAVE USR/SRC/SYS/KERNEL.S.DEV diff --git a/SYS/KERNEL.S.DIRENT.txt b/SYS/KERNEL.S.DIRENT.txt index 7ef1cd62..17b7498a 100644 --- a/SYS/KERNEL.S.DIRENT.txt +++ b/SYS/KERNEL.S.DIRENT.txt @@ -595,7 +595,7 @@ K.ReadDir.ConvertTime tay lda ZPPtr3+1 adc #0 - >SYSCALL PTime2Time + >SYSCALL PTime2Time BANK2 rts */------------------------------------- * # CloseDir diff --git a/SYS/KERNEL.S.ENV.txt b/SYS/KERNEL.S.ENV.txt index ad21c1c8..e8f9ecfa 100644 --- a/SYS/KERNEL.S.ENV.txt +++ b/SYS/KERNEL.S.ENV.txt @@ -204,7 +204,7 @@ K.FileSearch.YA >STYA .4+1 .5 >PUSHWI K.S.STAT >LDYAI K.Buf256 - >SYSCALL STAT -> BNK1 + >SYSCALL STAT BANK1 bcs .1 Failed...retry next path... lda K.S.STAT+S.STAT.P.TYPE diff --git a/SYS/KERNEL.S.GP.txt b/SYS/KERNEL.S.GP.txt index f8d3dc6d..5b37afb0 100644 --- a/SYS/KERNEL.S.GP.txt +++ b/SYS/KERNEL.S.GP.txt @@ -288,7 +288,7 @@ GO.EXIT.SaveY ldy #$ff GO.EXIT.SaveX ldx #$ff GO.EXIT.SaveA lda #$ff plp -GO.EXIT.JMP jmp $FFFF Self Modified +GO.EXIT.JMP jmp $FFFF SELF MODIFIED *-------------------------------------- * Called from ProDOS IRQ Manager (LCBNK1) * A,X,Y, $FA->$FF Already Saved diff --git a/SYS/KERNEL.S.INIT.txt b/SYS/KERNEL.S.INIT.txt index 5a2d0571..c72d45d0 100644 --- a/SYS/KERNEL.S.INIT.txt +++ b/SYS/KERNEL.S.INIT.txt @@ -102,9 +102,7 @@ Kernel.Init3 sta SETALTZP sta IRQ.InKernel jsr SysScrInit - jsr MemMgrInit - >LDYAI FD.NULL >SYSCALL MKDev @@ -293,6 +291,7 @@ PS0.Init >LDYAI CORE.S.PS0 Select Process 0 (Kernel) >PUSHWI 0 >PUSHBI 0 >LDYAI DEV.SYS + >DEBUG >SYSCALL fopen bcs .9 @@ -523,6 +522,11 @@ MemMgrInit >LDYAI Mem.MHiMem dex bpl .3 + ldx #K.OF.MAX*2-1 + +.4 stz OF.Table.hPath,x + dex + bpl .4 rts *-------------------------------------- * Setup AuxLC $FFFE->Kernel IRQ Handler diff --git a/SYS/KERNEL.S.IO.txt b/SYS/KERNEL.S.IO.txt index b47e16e3..b16c597f 100644 --- a/SYS/KERNEL.S.IO.txt +++ b/SYS/KERNEL.S.IO.txt @@ -36,7 +36,7 @@ IO.Open.I ldx #5 $/DEV/ dex bne .1 *-------------------------------------- -* /DEV/xxxxxx (CDEV,BDEV,DSOCK,SSOCK,PIPE) +* /DEV/xxxxxx (CDEV,BDEV,LNK,DSOCK,SSOCK,PIPE) *-------------------------------------- >LDYAI K.MLI.PATH+6 skip $/DEV/ @@ -59,7 +59,7 @@ IO.Open.I ldx #5 $/DEV/ cmp #0 end of string ? bne .2 - txa return hFILE + lda Nod.Table.hFD,x return hFD clc rts @@ -72,11 +72,11 @@ IO.Open.I ldx #5 $/DEV/ rts no OF found .7 >STYA pFD - phx DEVID/hFILE + phx DEVID lda (pFD) #S.FD.T tax - pla + pla hFILE jmp (.8,x) .8 .DA STDIO.IOERR REG @@ -269,11 +269,13 @@ IO.CLOSE.PIPE clc * CC: Y,A = bytes read * CS: A = EC *\-------------------------------------- -K.Read jsr K.GetMemPtr +K.Read pha save hFD + jsr K.GetMemPtr >STYA pFD IO.Read.I lda (pFD) #S.FD.T tax + pla jmp (.1,x) .1 .DA IO.READ.REG @@ -298,11 +300,13 @@ IO.Read.I lda (pFD) #S.FD.T * CC: Y,A = bytes written * CS: A = EC *\-------------------------------------- -K.Write jsr K.GetMemPtr +K.Write pha save hFD + jsr K.GetMemPtr >STYA pFD IO.Write.I lda (pFD) #S.FD.T tax + pla jmp (.1,x) .1 .DA IO.WRITE.REG @@ -351,20 +355,20 @@ IO.WRITE.CDEV ldx #IOCTL.WRITE IO.WRITE.SSOCK ldy #S.FD.SSOCK.WRITE .HS 2C BIT ABS *-------------------------------------- -IO.READ.SSOCK ldy #S.FD.SSOCK.READ - +IO.READ.SSOCK sta .1+1 hFD + ldy #S.FD.SSOCK.READ + >DEBUG lda (pFD),y tax Function Offset in LIB - ldy #S.FD.HANDLER + ldy #S.FD.SSOCK.IOHANDLER lda (pFD),y jsr K.GetMemPtr - >STYA .1 + >STYA .2+1 - ldy #S.FD.SSOCK.HSKT - lda (pFD),y +.1 lda #$ff SELF MODIFIED -.1 jmp $ffff +.2 jmp $FFFF SELF MODIFIED *-------------------------------------- IO.READ.PIPE >PULLW K.S.IOCTL+S.IOCTL.BUFPTR >PULLW K.S.IOCTL+S.IOCTL.BYTECNT diff --git a/SYS/KERNEL.S.PFT.txt b/SYS/KERNEL.S.PFT.txt index 7e015876..e636d0b7 100644 --- a/SYS/KERNEL.S.PFT.txt +++ b/SYS/KERNEL.S.PFT.txt @@ -59,7 +59,7 @@ PFT.CheckPathYA stx .71+1 Save SYSCALL # >LDYAI K.Buf256 pass full path to handler .71 ldx #$ff SELF MODIFIED SYSCALL # -.72 jmp $ffff +.72 jmp $ffff SELF MODIFIED .9 rts @@ -102,7 +102,7 @@ PFT.CheckNodeA stx .80+1 Save SYSCALL # sta .81+1 Save hFILE tax - lda Nod.Table.hFD,x + lda OF.Table.hFD,x beq .9 jsr K.GetMemPtr @@ -121,7 +121,7 @@ PFT.CheckNodeA stx .80+1 Save SYSCALL # ldx .80+1 restore SYSCALL # lda .81+1 restore passed hFILE -.1 jmp $ffff +.1 jmp $ffff SELF MODIFIED .8 lda (pFD) #S.FD.T bne .80 diff --git a/SYS/KERNEL.S.PS.txt b/SYS/KERNEL.S.PS.txt index 1b0c730a..848ba0cb 100644 --- a/SYS/KERNEL.S.PS.txt +++ b/SYS/KERNEL.S.PS.txt @@ -73,7 +73,7 @@ PS.Exec jsr PS.CreateChild Child S.PS at ZPPtr3 sta (ZPPtr3),y pla - >SYSCALL GetMemPtr + jsr K.GetMemPtr jsr PS.Load bcc .8 diff --git a/SYS/KERNEL.S.STAT.txt b/SYS/KERNEL.S.STAT.txt index bd5c0902..742e271d 100644 --- a/SYS/KERNEL.S.STAT.txt +++ b/SYS/KERNEL.S.STAT.txt @@ -17,7 +17,7 @@ K.FStat jsr PFT.CheckNodeA bcs K.FStat.9 tax - lda Nod.Table.hPath,x + lda OF.Table.hPath,x jsr K.GetMemPtr jsr PFT.YAToMLIPATH @@ -195,7 +195,7 @@ K.MkNod >STYA ZPPtr1 pathname >LDYA ZPPtr1 ldx K.S.STAT+S.STAT.DEV - jsr STDIO.NewHFileYAX + jsr STAT.NewhNodeYAX bcs K.MKDir.RTS lda (pFD) #S.FD.T @@ -265,6 +265,41 @@ K.MKFIFO >LDYAI K.PIPE.SIZE .99 rts *-------------------------------------- +STAT.NewhNodeYAX + pha + stx .4+1 Store hFD + + ldx #0 + +.1 lda Nod.Table.hFD,x + beq .2 + + inx + cpx #K.Nod.MAX + bne .1 + + pla + lda #E.OOH +* sec + rts + +.2 stx .3+1 Store hFILE + + pla + jsr K.NewStr + bcs .9 + txa + +.3 ldx #$ff SELF MODIFIED + sta Nod.Table.hPath,x +.4 lda #$ff SELF MODIFIED + sta Nod.Table.hFD,x + + txa hNODE + + clc +.9 rts +*-------------------------------------- MAN SAVE USR/SRC/SYS/KERNEL.S.STAT LOAD USR/SRC/SYS/KERNEL.S diff --git a/SYS/KERNEL.S.STDIO.txt b/SYS/KERNEL.S.STDIO.txt index cace0571..c97ee100 100644 --- a/SYS/KERNEL.S.STDIO.txt +++ b/SYS/KERNEL.S.STDIO.txt @@ -975,7 +975,6 @@ K.SScanF.Fwd tya Y=char count parsed * CS : A = EC *\-------------------------------------- K.FOpen jsr PFT.CheckPathYA - bcs .99 >PULLB K.Open.FLAGS @@ -985,11 +984,10 @@ K.FOpen jsr PFT.CheckPathYA jsr IO.Open.I bcs .9 - sta .1+1 save hFD tax - lda (pFD) - cmp + stx .1+1 save hFD + >LDYAI K.Buf256 jsr STDIO.NewHFileYAX @@ -1017,14 +1015,14 @@ K.FOpen jsr PFT.CheckPathYA K.FClose jsr PFT.CheckNodeA tax - lda Nod.Table.hPath,x + lda OF.Table.hPath,x beq .9 - stz Nod.Table.hPath,x + stz OF.Table.hPath,x jsr K.FreeMem discard filename - lda Nod.Table.hFD,x - stz Nod.Table.hFD,x + lda OF.Table.hFD,x + stz OF.Table.hFD,x jmp K.Close .9 lda #E.INVH @@ -1284,11 +1282,11 @@ STDIO.NewHFileYAX ldx #0 -.1 lda Nod.Table.hFD,x +.1 lda OF.Table.hFD,x beq .2 inx - cpx #K.NOD.MAX + cpx #K.OF.MAX bne .1 pla @@ -1304,9 +1302,9 @@ STDIO.NewHFileYAX txa .3 ldx #$ff SELF MODIFIED - sta Nod.Table.hPath,x + sta OF.Table.hPath,x .4 lda #$ff SELF MODIFIED - sta Nod.Table.hFD,x + sta OF.Table.hFD,x txa hFILE diff --git a/SYS/KM.APPLETALK.S.txt b/SYS/KM.APPLETALK.S.txt index 5b9caa29..ce4115f1 100644 --- a/SYS/KM.APPLETALK.S.txt +++ b/SYS/KM.APPLETALK.S.txt @@ -123,10 +123,10 @@ AT.INIT >LDYAI MSG.INIT jsr PrintFYA rts *-------------------------------------- -GO.WSCARD jmp $ffff Self Modifed -GO.OLDMLI jmp $ffff +GO.WSCARD jmp $ffff SELF MODIFIED +GO.OLDMLI jmp $ffff SELF MODIFIED *-------------------------------------- - .INB USR/SRC/BIN/X.PRINTF.S + .INB USR/SRC/X.PRINTF.S *-------------------------------------- MSG.INIT .AZ "AppleTalk Driver For A2osX\n" MSG.FAILED .AZ "AppleTalk Workstation Card Failed Power Up Diagnostics : EC=%h.\n" @@ -162,5 +162,5 @@ MLIGETPREFIX.PARAMS .DA BUF.PREFIX *-------------------------------------- MAN -SAVE USR/SRC/BIN/SYS/KM.APPLETALK.S +SAVE USR/SRC/SYS/KM.APPLETALK.S ASM