diff --git a/.Floppies/A2OSX.BUILD.po b/.Floppies/A2OSX.BUILD.po index 2ccfe151..51f6619d 100644 Binary files a/.Floppies/A2OSX.BUILD.po and b/.Floppies/A2OSX.BUILD.po differ diff --git a/BIN/DNSINFO.S.txt b/BIN/DNSINFO.S.txt index eb180e47..9c4181b3 100644 --- a/BIN/DNSINFO.S.txt +++ b/BIN/DNSINFO.S.txt @@ -35,7 +35,7 @@ CS.START cld *-------------------------------------- .1 .DA CS.INIT .DA CS.RUN - .DA CS.EVENT + .DA CS.EVENT .DA CS.QUIT L.LIBTCPIP .DA LIBTCPIP L.MSG.IPKO .DA MSG.IPKO @@ -63,7 +63,7 @@ CS.RUN >LIBCALL hLIBTCPIP,LIBTCPIP.GETCFG is TCPIP loaded ? >LDYA L.MSG.IPKO >SYSCALL PutS lda #E.SYN - sec + sec rts CS.RUN.IPOK ldy #S.PS.ARGC @@ -87,7 +87,7 @@ CS.RUN.ADD lda #2 >SYSCALL ArgV >PUSHYA >PUSHW L.SSCANF.IP - + >PUSHEA.G DST.IP >PUSHEA.G DST.IP+1 >PUSHEA.G DST.IP+2 @@ -104,7 +104,7 @@ CS.RUN.ADD lda #2 >LIBCALL hLIBTCPIP,LIBTCPIP.DNS.Add bcs .99 - lda #0 tell TSKMGR that all done ok, but + lda #0 tell TSKMGR that all done ok, but sec we do not want to stay in memory rts @@ -130,14 +130,14 @@ CS.RUN.DUMP >LIBCALL hLIBTCPIP,LIBTCPIP.DNS.GetCache asl tax - + .5 >PUSHW L.MSG1.Status,x ldy #S.DNSCACHE.ID >PUSHB (ZPPTR1),y iny >PUSHB (ZPPTR1),y - + ldy #S.DNSCACHE.hNAME lda (ZPPTR1),y >SYSCALL GetMemPtr @@ -168,7 +168,7 @@ CS.RUN.DUMP >LIBCALL hLIBTCPIP,LIBTCPIP.DNS.GetCache sta ZPPTR1 bcc .7 inc ZPPTR1+1 - + .7 dec EntryCount bne .1 @@ -185,7 +185,7 @@ CS.QUIT lda hLIBTCPIP .8 clc rts *-------------------------------------- -CS.END +CS.END LIBTCPIP .AZ "libtcpip" hLIBTCPIP .BS 1 MSG.IPKO .AZ "TCP/IP Not Loaded/Configured." diff --git a/BIN/HMACMD5.S.txt b/BIN/HMACMD5.S.txt index a4bd3b51..f02ca6ef 100644 --- a/BIN/HMACMD5.S.txt +++ b/BIN/HMACMD5.S.txt @@ -71,7 +71,7 @@ CS.RUN ldy #S.PS.ARGC .1 inc ArgIndex lda ArgIndex - + >SYSCALL ArgV plx bcs .8 diff --git a/BIN/UNPAK.S.txt b/BIN/UNPAK.S.txt index ba633055..bd156893 100644 --- a/BIN/UNPAK.S.txt +++ b/BIN/UNPAK.S.txt @@ -52,7 +52,7 @@ CS.START cld *-------------------------------------- .1 .DA CS.INIT .DA CS.RUN - .DA CS.DOEVENT + .DA CS.DOEVENT .DA CS.QUIT L.MSG.USAGE .DA MSG.USAGE L.MSG.DIR .DA MSG.DIR @@ -98,7 +98,7 @@ s1 .1 pla .11 jsr CS.RUN.OpenArc bcs .9 - + >LDYAI 256 >SYSCALL GetMem bcc .15 @@ -150,7 +150,7 @@ CS.RUN.SetupPath >STYA ZPPtr1 ldy #$ff - + .2 iny lda (ZPPtr1),y sta (ZPFullPathPtr),y @@ -178,17 +178,19 @@ CS.RUN.LOOP jsr CS.RUN.GetByte jsr CS.RUN.GetFileName bcs .99 + ldx #0 jsr CS.RUN.PrintFN jsr CS.RUN.CheckDir bcs .99 + lda ZPProgress bne CS.RUN.LOOP >LDYA L.MSG.OK >SYSCALL PutS bra CS.RUN.LOOP - clc + .99 rts .9 jmp CS.RUN.E.IARC @@ -208,23 +210,27 @@ CS.RUN.LOOP jsr CS.RUN.GetByte bcs .99 *-------------------------------------- jsr CS.RUN.GetByte DATA - bcs .8 eof + bcs CS.RUN.Exit eof .2 cmp #CHNK.T.DATA bne .3 Could be a 0 byte file .20 lda ZPProgress beq .21 + jsr CS.RUN.Spinner bra .22 + .21 lda #'.' >SYSCALL PutChar .22 jsr CS.RUN.GetByte DataLen LO bcs .99 + sta ZPInBufLen jsr CS.RUN.GetByte DataLen HI bcs .99 + sta ZPInBufLen+1 jsr CS.RUN.ReadData @@ -233,7 +239,7 @@ CS.RUN.LOOP jsr CS.RUN.GetByte ldy #1 lda (ZPInBufPtr),y sta ZPOutBufLen - + iny lda (ZPInBufPtr),y sta ZPOutBufLen+1 @@ -241,31 +247,32 @@ CS.RUN.LOOP jsr CS.RUN.GetByte >LDA.G hOutBuf >SYSCALL GetMemPtr >STYA ZPOutBufPtr - + jsr X.Unpak bcs .9 - + jsr CS.RUN.WriteFile bcs .99 jsr CS.RUN.GetByte - bcs .8 + bcs CS.RUN.Exit cmp #CHNK.T.DATA beq .20 .3 pha - jsr .8 + jsr CS.RUN.Exit pla - jmp .10 - -.8 >LDA.G hFile + jmp .10 +*-------------------------------------- +CS.RUN.Exit >LDA.G hFile >SYSCALL FClose - LDA ZPProgress - bne S1 + lda ZPProgress + bne .9 + >LDYA L.MSG.OK >SYSCALL PutS -S1 rts +.9 rts *-------------------------------------- CS.RUN.PrintFN lda ZPProgress bne .9 @@ -307,10 +314,10 @@ CS.RUN.TidyUp lda ZPProgress CS.RUN.OpenArc >PUSHYA >PUSHBI O.RDONLY >PUSHBI $CF PAK - >PUSHWZ Aux type + >PUSHWZ Aux type >SYSCALL FOpen bcs .9 - + >STA.G hArcFile >PUSHA >PUSHW ZPInBufPtr @@ -351,7 +358,7 @@ CS.RUN.GetFileName jsr CS.RUN.GetByte bcs .9 pha - + >PUSHB.G hArcFile >PUSHW ZPRelPathPtr @@ -387,7 +394,7 @@ CS.RUN.CheckDir >PUSHW ZPFullPathPtr >PUSHW ZPFullPathPtr >PUSHWI S.STAT.MODE.FO+S.STAT.MODE.FG+S.STAT.MODE.FU - >SYSCALL MKDir + >SYSCALL MKDir rts @@ -444,7 +451,7 @@ CS.QUIT >LDA.G hFile .4 >LDA.G hArcFile beq .8 >SYSCALL FClose - + .8 clc rts *-------------------------------------- diff --git a/INC/NET.SMB.I.txt b/INC/NET.SMB.I.txt index 7606ad39..ed2d805e 100644 --- a/INC/NET.SMB.I.txt +++ b/INC/NET.SMB.I.txt @@ -14,9 +14,7 @@ S.SMB.H.CMD.CLOSE .EQ $04 S.SMB.H.CMD.FLUSH .EQ $05 S.SMB.H.CMD.DELETE .EQ $06 S.SMB.H.CMD.RENAME .EQ $07 - S.SMB.H.CMD.SEEK .EQ $12 - S.SMB.H.CMD.READ.ANDX .EQ $2E S.SMB.H.CMD.WRITE.ANDX .EQ $2F S.SMB.H.CMD.TRANS2 .EQ $32 diff --git a/LIB/LIBCIFS.S.IO.txt b/LIB/LIBCIFS.S.IO.txt index ab8cb480..51f9c0f3 100644 --- a/LIB/LIBCIFS.S.IO.txt +++ b/LIB/LIBCIFS.S.IO.txt @@ -18,7 +18,7 @@ CIFS.Stat >STYA pPath resolved path jsr ClearSocket - jsr GetGTX + jsr GetCTX jsr MakeTrans2Req @@ -35,18 +35,7 @@ CIFS.Stat >STYA pPath resolved path jsr AppendPathPtr2 - tya - - inc +1 for \0 - - clc - adc ZPReqLen - sta ZPReqLen - bcc .2 - - inc ZPReqLen+1 - -.2 jsr SetT2ReqLen + jsr SetT2ReqLen jsr WriteSocket bcs .9 @@ -59,17 +48,10 @@ CIFS2.Stat jsr ReadSocket jsr GetRespData - ldy #S.NETBIOS+S.SMB.H.STATUS - lda (ZPRespPtr),y - beq .1 + jsr CheckSMBStatus + bcs .90 - lda hResp - >SYSCALL2 FreeMem - - lda #MLI.E.FNOTFND - bra .99 - -.1 jsr GetRespDataOffset + jsr GetRespDataPtr1 jsr FileInfo2StatBuf >PULLW ZPPtr2 Stat Buffer @@ -79,32 +61,18 @@ CIFS2.Stat jsr ReadSocket jsr StatBuf2Ptr2 - lda hResp - >SYSCALL2 FreeMem + jmp Exit.OK - stz CIFS.Status - clc - rts +.9 jsr Exit.NODATA + beq .99 + +.90 >POP 4 -.9 cmp #E.NODATA - bne .99 - - dec CIFS.Retries - beq .90 - - lda #0 - sec - rts - -.90 lda #MLI.E.IO - -.99 sec - stz CIFS.Status - >RET 4 +.99 rts *-------------------------------------- CIFS.MKDir >STYA pPath resolved path - jsr GetGTX + jsr GetCtx jsr MakeTrans2Req @@ -137,34 +105,17 @@ CIFS2.MKDir jsr ReadSocket jsr GetRespData - ldy #S.NETBIOS+S.SMB.H.STATUS - lda (ZPRespPtr),y - clc - beq .8 + jsr CheckSMBStatus + bcs .90 - lda #MLI.E.DUPFILE - sec + jmp Exit.OK -.8 jsr FreeRespData +.9 jsr Exit.NODATA + beq .99 + +.90 >POP 4 - stz CIFS.Status - >RET 4 - -.9 cmp #E.NODATA - bne .99 - - dec CIFS.Retries - beq .98 - - lda #0 - sec - rts - -.98 lda #MLI.E.IO - -.99 sec - stz CIFS.Status - >RET 4 +.99 rts *-------------------------------------- CIFS.OpenDir >STYA pPath resolved path @@ -205,7 +156,7 @@ CIFS.ReadDir jsr GetPFD jsr ClearSocket - jsr GetGTX + jsr GetCtx ldy #S.FD.DIR.EPB lda (pFD),y @@ -290,19 +241,14 @@ CIFS.ReadDir.Send CIFS2.ReadDir jsr GetPFD jsr ReadSocket - bcs .90 + bcs .9 jsr GetRespData - ldy #S.NETBIOS+S.SMB.H.STATUS - lda (ZPRespPtr),y - beq .1 + jsr CheckSMBStatus + bcs .90 -.91 sec - lda #MLI.E.IO - bra .9 - -.1 ldy #S.FD.DIR.FC + ldy #S.FD.DIR.FC lda (pFD),y iny ora (pFD),y @@ -314,7 +260,7 @@ CIFS2.ReadDir jsr GetPFD tax dey ora (ZPRespPtr),y - beq .91 + beq .90 lda (ZPRespPtr),y @@ -324,11 +270,11 @@ CIFS2.ReadDir jsr GetPFD txa sta (pFD),y -.2 jsr GetRespDataOffset +.2 jsr GetRespDataPtr1 jsr CIFS2.ReadDir.GetBuf - bcs .9 + bcs .99 - jsr GetRespDataOffset + jsr GetRespDataPtr1 jsr CIFS2.ReadDir.FillBuf lda hResp @@ -339,27 +285,11 @@ CIFS2.ReadDir jsr GetPFD stz CIFS.Status clc - rts +.90 rts -.9 stz CIFS.Status +.9 jmp Exit.NODATA - jmp FreeRespData - -.90 cmp #E.NODATA - bne .99 - - dec CIFS.Retries - beq .98 - - lda #0 - sec - rts - -.98 lda #MLI.E.IO - -.99 stz CIFS.Status - sec - rts +.99 jmp Exit.KO *-------------------------------------- CIFS2.ReadDir.GetBuf ldy #S.NETBIOS+S.SMB.H+S.TRANS2.H Search Count @@ -533,7 +463,7 @@ CIFS2.ChOwn *-------------------------------------- CIFS.FOpen >STYA pPath resolved path - jsr GetGTX + jsr GetCtx ldx #S.SMB.H.CMD.NT.CREATE.ANDX jsr RequestSetupX @@ -561,14 +491,7 @@ CIFS.FOpen >STYA pPath resolved path ldy ByteCountOfs sta (ZPReqPtr),y - clc - adc ZPReqLen - sta ZPReqLen - bcc .2 - - inc ZPReqLen+1 - -.2 lda #0 + lda #0 ror iny ByteCountOfs+1 sta (ZPReqPtr),y @@ -605,18 +528,12 @@ CIFS2.FOpen jsr ReadSocket jsr GetRespData - ldy #S.NETBIOS+S.SMB.H.STATUS - lda (ZPRespPtr),y - clc - beq .8 - - lda #MLI.E.DUPFILE - sec - bra .80 - -.8 >LDYAI S.FD.REG + jsr CheckSMBStatus + bcs .90 + >DEBUG + >LDYAI S.FD.REG >SYSCALL2 GetMem - bcs .99 + bcs .91 >STYA pFD @@ -651,30 +568,19 @@ CIFS2.FOpen jsr ReadSocket >PUSHA >SYSCALL2 mknod -.80 jsr FreeRespData +.91 jsr FreeRespData + + bra .90 - stz CIFS.Status - >RET 6 - -.9 cmp #E.NODATA - bne .99 - - dec CIFS.Retries - beq .98 - - lda #0 - sec - rts - -.98 lda #MLI.E.IO - -.99 sec - stz CIFS.Status - >RET 6 +.9 jsr Exit.NODATA + beq .99 + +.90 >POP 6 +.99 rts *-------------------------------------- CIFS.FClose jsr GetPFD - jsr GetGtx + jsr GetCtx ldx #S.SMB.H.CMD.CLOSE jsr RequestSetupX @@ -719,40 +625,20 @@ CIFS2.FClose sta hFILE jsr GetRespData - ldy #S.NETBIOS+S.SMB.H.STATUS - lda (ZPRespPtr),y - clc - beq .8 + jsr CheckSMBStatus + bcs .99 - lda #MLI.E.DUPFILE - sec - bra .80 - -.8 lda hFILE + lda hFILE jsr CIFS.CloseDir + + lda hResp + >SYSCALL2 FreeMem - clc + jmp Exit.OK -.80 jsr FreeRespData +.9 jmp Exit.NODATA - stz CIFS.Status - rts - -.9 cmp #E.NODATA - bne .99 - - dec CIFS.Retries - beq .98 - - lda #0 - sec - rts - -.98 lda #MLI.E.IO - -.99 sec - stz CIFS.Status - rts +.99 rts *-------------------------------------- CIFS.FRead clc @@ -767,7 +653,7 @@ CIFS.FWrite ldy #4 hNod jsr GetPFD - jsr GetGTX + jsr GetCtx ldx #S.SMB.H.CMD.WRITE.ANDX jsr RequestSetupX @@ -865,40 +751,33 @@ CIFS.FWrite ldy #4 hNod lda (pStack),y beq .7 - dec + dec DataLen - $100 sta (pStack),y ldy #3 DataPtr HI lda (pStack),y - inc + inc DataPtr + $100 sta (pStack),y - bra .8 + jmp Sleep .7 lda #0 - sta (pStack) DataLen LO + sta (pStack) DataLen = 0 -.8 jmp Sleep + jmp Sleep .9 >RET 5 *-------------------------------------- -CIFS2.FWrite ldy #4 - lda (pStack),y - - jsr ReadSocket +CIFS2.FWrite jsr ReadSocket bcs .9 jsr GetRespData - ldy #S.NETBIOS+S.SMB.H.STATUS - lda (ZPRespPtr),y - clc - beq .8 + jsr CheckSMBStatus + bcs .90 - lda #MLI.E.IO - sec - -.8 jsr FreeRespData + lda hResp + >SYSCALL2 FreeMem ldy #1 lda (pStack),y @@ -908,23 +787,11 @@ CIFS2.FWrite ldy #4 jmp Sleep2 -.9 cmp #E.NODATA - bne .99 +.9 jsr Exit.NODATA + beq .99 - dec CIFS.Retries - beq .98 - - lda #0 - sec - rts - -.98 lda #MLI.E.IO - -.99 sec - -.90 stz CIFS.Status - - >RET 5 +.90 >POP 5 +.99 rts *-------------------------------------- CIFS.FFlush CIFS2.FFlush @@ -933,15 +800,136 @@ CIFS2.FSeek CIFS.FTell CIFS2.FTell CIFS.FEOF -CIFS2.FEOF -CIFS.Remove -CIFS2.Remove -CIFS.Rename -CIFS2.Rename >DEBUG +CIFS2.FEOF >DEBUG lda #MLI.E.BADCALL sec rts *-------------------------------------- +CIFS.Remove >STYA pPath resolved path + + jsr ClearSocket + + jsr GetCTX + + ldx #S.SMB.H.CMD.DELETE + jsr RequestSetupX + + ldx #0 + +.1 lda SMB.ComDelete.H,x + sta (ZPReqPtr),y + iny + inx + cpx #SMB.ComDelete.H.Len + bne .1 + + jsr ReqSetupPtr2 + + lda #$04 BufferFormat + jsr PutBytePtr2 + + jsr AppendPathPtr2 + + tya + inc +1 for BufferFormat + inc +1 for \0 + + jsr Add2ByteCount + + jsr SetReqLen + + jsr WriteSocket + bcs .9 + + jmp Sleep + +.9 rts +*-------------------------------------- +CIFS2.Remove jsr ReadSocket + bcs .9 + + jsr GetRespData + + jsr CheckSMBStatus + bcs .99 + + jmp Exit.OK + +.9 jmp Exit.NODATA + +.99 rts +*-------------------------------------- +CIFS.Rename >STYA pPath resolved src path + + jsr ClearSocket + + jsr GetCTX + + ldx #S.SMB.H.CMD.RENAME + jsr RequestSetupX + + ldx #0 + +.1 lda SMB.ComRename.H,x + sta (ZPReqPtr),y + iny + inx + cpx #SMB.ComRename.H.Len + bne .1 + + jsr ReqSetupPtr2 + + lda #$04 BufferFormat + jsr PutBytePtr2 + + jsr AppendPathPtr2 + + tya + inc +1 for BufferFormat + inc +1 for \0 + jsr Add2ByteCount + + lda (pStack) + sta pPath + + ldy #1 + lda (pStack),y + sta pPath+1 + + lda #$04 BufferFormat + jsr PutBytePtr2 + + jsr AppendPathPtr2 + + tya + inc +1 for BufferFormat + inc +1 for \0 + + jsr Add2ByteCount + + jsr SetReqLen + + jsr WriteSocket + bcs .9 + + jmp Sleep + +.9 >RET 4 +*-------------------------------------- +CIFS2.Rename jsr ReadSocket + bcs .9 + + jsr GetRespData + + jsr CheckSMBStatus + bcs .99 + + jmp Exit.OK + +.9 jmp Exit.NODATA + +.99 >RET 4 +*-------------------------------------- MAN SAVE usr/src/lib/libcifs.io.s LOAD usr/src/lib/libcifs.s diff --git a/LIB/LIBCIFS.S.txt b/LIB/LIBCIFS.S.txt index 5e18b890..838baf34 100644 --- a/LIB/LIBCIFS.S.txt +++ b/LIB/LIBCIFS.S.txt @@ -570,7 +570,7 @@ GetPFD tax >STYA pFD rts *-------------------------------------- -GetGTX lda MountTable+2 +GetCTX lda MountTable+2 >SYSCALL2 GetMemPtr >STYA ZPCtxPtr rts @@ -635,6 +635,19 @@ ReqT2SetupPtr2 sty ZPReqLen rts *-------------------------------------- +PutBytePtr2 sta (ZPPtr2) + inc ZPPtr2 + bne .1 + + inc ZPPtr2+1 + +.1 inc ZPReqLen + bne .8 + + inc ZPReqLen+1 + +.8 rts +*-------------------------------------- AppendPathPtr2 ldx #0 ldy #$ff @@ -657,10 +670,41 @@ AppendPathPtr2 ldx #0 dey -.5 -* lda #0 - sta (ZPPtr2),y +.5 sta (ZPPtr2),y A = 0 + tya + + sec +1 for \0 + + adc ZPReqLen + sta ZPReqLen + bcc .6 + + inc ZPReqLen+1 + +.6 tya + + sec +1 for \0 + + adc ZPPtr2 + sta ZPPtr2 + bcc .8 + + inc ZPPtr2+1 + + +.8 rts +*-------------------------------------- +Add2ByteCount ldy ByteCountOfs + clc + adc (ZPReqPtr),y + sta (ZPReqPtr),y + + iny ByteCountOfs+1 + + lda #0 + adc (ZPReqPtr),y + sta (ZPReqPtr),y rts *-------------------------------------- AppendPath ldx #0 @@ -760,6 +804,38 @@ Sleep2 stz CIFS.Retries sec rts *-------------------------------------- +Exit.OK lda hResp + >SYSCALL2 FreeMem + + stz CIFS.Status + clc + rts +*-------------------------------------- +Exit.KO pha + lda hResp + >SYSCALL2 FreeMem + pla + + stz CIFS.Status + sec + rts +*-------------------------------------- +Exit.NODATA cmp #E.NODATA + bne .99 + + dec CIFS.Retries + beq .98 + + lda #0 + sec + rts + +.98 lda #MLI.E.OFFLINE + +.99 stz CIFS.Status + sec + rts +*-------------------------------------- GetRespData sta hResp >SYSCALL2 GetMemPtr @@ -773,8 +849,48 @@ GetRespData sta hResp sta ZPRespPtr+1 rts *-------------------------------------- -GetRespDataOffset - ldy #S.NETBIOS+S.SMB.H+15 Data Offset +CheckSMBStatus ldy #S.NETBIOS+S.SMB.H.STATUS + lda (ZPRespPtr),y + clc + beq FreeRespData.RTS + + stz CIFS.Status + + cmp #2 SRV + bcs .9 + + iny + iny + + lda (ZPRespPtr),y ERR CODE + ldx #MLIERR01-SMBERR01 + +.1 cmp SMBERR01-1,x + beq .2 + + dex + bne .1 + + sec + bra .9 + +.2 lda MLIERR01-1,x + sec + bra FreeRespData + +.9 lda #MLI.E.IO +*-------------------------------------- +FreeRespData php + pha + lda hResp + >SYSCALL2 FreeMem + pla + plp + +FreeRespData.RTS + rts +*-------------------------------------- +GetRespDataPtr1 ldy #S.NETBIOS+S.SMB.H+15 Data Offset lda (ZPRespPtr),y clc adc ZPRespPtr @@ -794,16 +910,6 @@ GetRespDataOffset adc /S.NETBIOS sta ZPPtr1+1 - - - rts -*-------------------------------------- -FreeRespData php - pha - lda hResp - >SYSCALL2 FreeMem - pla - plp rts *-------------------------------------- FileInfo2StatBuf @@ -945,6 +1051,9 @@ CIFS.BADCALL lda #MLI.E.BADCALL *-------------------------------------- CS.END *-------------------------------------- +SMBERR01 .DA #2,#3,#32 +MLIERR01 .DA #MLI.E.FNOTFND,#MLI.E.PNOTFND,#MLI.E.OPEN +*-------------------------------------- NETBIOS .DA #0 DIRECT TCP TRANSPORT .DA #0 24 BITS LENGTH .DA /SMB.NegReq.end-SMB.H diff --git a/SYS/KERNEL.S.PFT.txt b/SYS/KERNEL.S.PFT.txt index 44a391b1..70a74cf0 100644 --- a/SYS/KERNEL.S.PFT.txt +++ b/SYS/KERNEL.S.PFT.txt @@ -28,7 +28,7 @@ PFT.CheckPathYA >PUSHYA beq .8 sta ZPPtr1+1 - + lda Flt.Table.pftLO-1,x sta ZPPtr1 @@ -56,9 +56,9 @@ PFT.CheckPathYA >PUSHYA lda Flt.Table.cbHI-1,x sta .7+2 - + stx hHandler - + pla discard JSR return @ pla @@ -117,10 +117,10 @@ PFT.CheckNodeA stx .80+1 Save SYSCALL # sta .7+1 lda Flt.Table.cbHI-1,x - sta .7+2 - + sta .7+2 + stx hHandler - + pla discard JSR return @ pla ldx .80+1 restore SYSCALL # diff --git a/SYS/KERNEL.S.STDIO.txt b/SYS/KERNEL.S.STDIO.txt index 74f16b10..036122a9 100644 --- a/SYS/KERNEL.S.STDIO.txt +++ b/SYS/KERNEL.S.STDIO.txt @@ -10,7 +10,7 @@ NEW * `>PUSHB stream` * `>PUSHB character` * `>SYSCALL fputc` -* ## RETURN VALUE +* ## RETURN VALUE * CC = success *\-------------------------------------- K.FPutC lda (pStack) character @@ -22,7 +22,7 @@ K.FPutC lda (pStack) character jsr STDIO.Put1 bcc .8 - + tay beq .9 BLOCKING, keep parms on stack @@ -38,7 +38,7 @@ K.FPutC lda (pStack) character * **In:** * `lda character` * `>SYSCALL putchar` -* ## RETURN VALUE +* ## RETURN VALUE * CC = success *\-------------------------------------- K.PutChar sta K.IOBuf character @@ -72,7 +72,7 @@ STDIO.Write jsr K.FWrite * ## ASM * `>LDYAI str` * `>SYSCALL PutS` -* ## RETURN VALUE +* ## RETURN VALUE * CC = success *\-------------------------------------- K.PutS >STYA .1+1 @@ -119,18 +119,18 @@ K.PutS >STYA .1+1 * `>PUSHB stream` * `>PUSHW str` * `>SYSCALL fputs` -* ## RETURN VALUE +* ## RETURN VALUE * CC = success *\-------------------------------------- K.FPutS lda (pStack) sta ZPPtr1 Get String sta ZPPtr2 - + ldy #1 lda (pStack),y sta ZPPtr1+1 sta ZPPtr2+1 - + ldy #0 ldx #0 @@ -151,7 +151,7 @@ K.FPutS lda (pStack) >PUSHA >PUSHW ZPPtr2 - + txa >PUSHA push len HI @@ -160,8 +160,8 @@ K.FPutS lda (pStack) jsr STDIO.Write bcs K.FPutS.RTS - -.8 >POP 2 + +.8 >POP 2 K.FPutS.RTS rts */-------------------------------------- @@ -178,8 +178,8 @@ K.FPutS.RTS rts * `>PUSHW s` * `>PUSHW n` * `>SYSCALL fgets` -* ## RETURN VALUE -* Y,A: s +* ## RETURN VALUE +* Y,A: s * CC = success *\-------------------------------------- * (pStack)+4 h @@ -192,10 +192,10 @@ K.FGetS ldy #3 sta ZPPtr1,y dey bpl .1 - + lda ZPPtr1+1 bmi .4 already something in buffer - + .2 ldy #4 lda (pStack),y jsr STDIO.Get1 @@ -218,7 +218,7 @@ K.FGetS ldy #3 eor #$ff adc #0 sta ZPPtr1+1 - + bra .5 *-------------------------------------- .4 ldy #4 @@ -229,19 +229,19 @@ K.FGetS ldy #3 .5 lda K.IOBuf cmp #C.CR beq .8 - + jsr SHARED.PutCP2 inc ZPPtr1 bne .4 inc ZPPtr1+1 bne .4 - + beq .8 Buffer full - + .6 tay beq .70 - + cmp #MLI.E.EOF beq .8 String terminated by EOF @@ -272,12 +272,12 @@ K.FGetS ldy #3 * ## ASM * **In:** * `>SYSCALL getchar` -* ## RETURN VALUE +* ## RETURN VALUE * CC = success * A = char *\-------------------------------------- K.GetChar ldy #S.PS.hStdIn - lda (pPS),y + lda (pPS),y */-------------------------------------- * # getc (BLOCKING) * Get char from Node @@ -287,13 +287,13 @@ K.GetChar ldy #S.PS.hStdIn * **In:** * `lda stream` * `>SYSCALL getc` -* ## RETURN VALUE +* ## RETURN VALUE * CC = success * A = char *\-------------------------------------- K.GetC jsr STDIO.Get1 bcc .8 - + tay bne .9 I/O error @@ -322,7 +322,7 @@ STDIO.Get1 >PUSHA * `>PUSHB c` * `>PUSHB stream` * `>SYSCALL ungetc` -* ## RETURN VALUE +* ## RETURN VALUE * CC = success * A = char *\-------------------------------------- @@ -354,20 +354,20 @@ K.UngetC clc * + a+ = O_RDWR | O_CREAT | O_APPEND * + ,t=123 or t=$ff or t=TXT * + ,x=12345 or x=$ffff -* ## RETURN VALUE +* ## RETURN VALUE * CC : A = hFILE * CS : A = EC *\-------------------------------------- K.FOpen jsr PFT.CheckPath4 bcs .9 - + >PULLW IO.Open.AUXTYPE >PULLB IO.Open.TYPE >PULLB IO.Open.FLAGS - + inc pStack discard filename inc pStack - + jmp UNISTD.Open .9 >POP 6 @@ -407,7 +407,7 @@ K.FRead jsr PFT.CheckNode4 jsr UNISTD.Read bcs K.FWrite.9 -K.FRead.RTS rts +K.FRead.RTS rts */-------------------------------------- * # FWrite (BLOCKING) * Write bytes to file @@ -424,7 +424,7 @@ K.FRead.RTS rts *\-------------------------------------- K.FWrite jsr PFT.CheckNode4 bcs K.FWrite.RET5 - + jsr UNISTD.Write bcc K.FRead.RTS @@ -482,10 +482,10 @@ K.FSeek ldy #5 .11 lda (pFD) bne STDIO.IOERR - + >PULLA whence tax - + >PULLL ACC32 cpx #SEEK.END beq .30 @@ -522,7 +522,7 @@ K.FSeek ldy #5 eor #3 bne .81 - bcs .99 Offset out of range! + bcs .99 Offset out of range! .82 >MLICALL MLISETMARK bcc .9 @@ -547,7 +547,7 @@ K.FSeek.RTS rts * `lda stream` * `>SYSCALL feof` * ## RETURN VALUE -* CC : +* CC : * A = $ff EOF * A = 0 NOT EOF * CS : @@ -627,11 +627,11 @@ K.Rename jsr PFT.CheckPath2 lda (pStack) sta ZPPtr1 - + ldy #1 lda (pStack),y sta ZPPtr1+1 - + dey ldy #0 .1 lda (ZPPtr1),y @@ -659,20 +659,20 @@ K.Rename jsr PFT.CheckPath2 * `int sprintf ( char *str, const char *format, ... );` * ## ASM * **In:** -* PrintF : (example is for printing Y,A as integer : format="%I", 2 bytes) +* PrintF : (example is for printing Y,A as integer : format="%I", 2 bytes) * `>PUSHW format` * `>PUSHW i` * `...` * `>PUSHBI 2` #bytecount * `>SYSCALL PrintF` -* FPrintF : +* FPrintF : * `>PUSHB hFILE` * `>PUSHW format` * `>PUSHW i` * `...` * `>PUSHBI 2` #bytecount * `>SYSCALL fprintf` -* SPrintF : +* SPrintF : * `>PUSHW str` * `>PUSHW format` * `>PUSHW i` @@ -683,7 +683,7 @@ K.Rename jsr PFT.CheckPath2 * CC : success, Y,A = bytes sent * CS : error, A = code from Output * Specifiers : -* + %b : pull 1 byte to Print BIN +* + %b : pull 1 byte to Print BIN * + %d : pull 1 byte unsigned DEC 0..255 * + %D : pull 2 bytes unsigned DEC 0..65535 * + %u : pull 4 bytes long unsigned DEC 0..4294967295 @@ -706,11 +706,11 @@ K.Rename jsr PFT.CheckPath2 * + \xHH : Print byte with hexadecimal value HH (1 to 2 digits) * + \\\\ : Print \ * + \\% : Print % -* Modifiers for len and padding : +* Modifiers for len and padding : * + %d : '9' '12' * + %2d : ' 9' '12' * + %02d : '09' '12' -* + %11s : 'ABCDEFGH ' +* + %11s : 'ABCDEFGH ' * + %011s : 'ABCDEFGH000' * + %2f : '3.14' *\-------------------------------------- @@ -799,7 +799,7 @@ K.PrintF.1 sec format string->ptr2 bra .99 .7 lda #'%' bra .20 -*-------------------------------------- +*-------------------------------------- .10 cmp #'\' bne .20 @@ -841,7 +841,7 @@ K.PrintF.1 sec format string->ptr2 tay bne .9 - + >RET 5 0=BLOCKING .80 ldy PrintF.Cnt A=0, Writing to buffer, append \0 @@ -918,10 +918,10 @@ PrintF.NUM sty .2+1 sta ACC32-1,y PULL 4,2 or 1 dey bne .1 - + bit ACC32.Sign bpl .4 - + .2 ldy #$ff SELF MODIFIED lda ACC32-1,y Get highest Byte @@ -935,17 +935,17 @@ PrintF.NUM sty .2+1 iny sta ACC32-1,y bra .3 - + .4 ldx K.PrintF.PadL ldy K.PrintF.PadC rol ACC32.Sign get back signed/unsigned flag jsr MATH.ACC322STR10 bra PrintF.StrNum -*-------------------------------------- +*-------------------------------------- * EXP(8) 1(s) 1significants(31) * http://apple2.org.za/gswv/a2zine/GS.WorldView/Resources/GS.TECH.INFO/AppleSoft/ -*-------------------------------------- +*-------------------------------------- PrintF.E sec Force "E+12" .HS 90 BCC PrintF.F clc @@ -965,7 +965,7 @@ PrintF.F clc ldy #FOUTBuf+1 FOUT.1 will do a DEY ldx #FPU.FOUT jsr GP.ROMCALL - + PrintF.StrNum ldy #0 .2 lda FOUTBuf,y beq .8 @@ -987,7 +987,7 @@ PrintF.S ldy #$ff CSTR PrintF.SS ldy #$00 PSTR sty .1+1 - + jsr STDIO.GetStkB bcs .9 @@ -996,24 +996,24 @@ PrintF.SS ldy #$00 PSTR bcs .9 sta ZPPtr1 - + lda (ZPPtr1) if CSTR:last char=0, if PSTR:len=0 beq .8 - + ldy .1+1 - + .1 lda #$ff Self Modified bne .11 CSTR tya PSTR cmp (ZPPtr1) len check - + beq .2 - + .11 iny lda (ZPPtr1),y beq .2 - + jsr PrintF.PutC bcs .9 @@ -1023,17 +1023,17 @@ PrintF.SS ldy #$00 PSTR bne .1 .8 clc rts - + .2 lda K.PrintF.PadL beq .8 - + .3 cpy K.PrintF.PadL beq .8 - + lda K.PrintF.PadC jsr PrintF.PutC bcs .9 - + iny bne .3 @@ -1079,7 +1079,7 @@ PrintF.PutC phy .9 lda #E.BUF sec -STDIO.RTS rts +STDIO.RTS rts */-------------------------------------- * # ScanF (BLOCKING) * # FScanF (BLOCKING) @@ -1128,7 +1128,7 @@ STDIO.RTS rts K.ScanF ldy #S.PS.hStdIn lda (pPS),y sta PrintF.hFILE - + ldx #1 .HS 2C BIT ABS *-------------------------------------- @@ -1144,21 +1144,21 @@ K.SScanF.1 clc format string->ptr1 sta ZPPtr2+1 Output buffer->ZPPtr2 sty STDIO.PopCnt Total bytes to POP - + ldx PrintF.hFILE beq .1 - + txa >PUSHA >PUSHW pIOBuf - >PUSHWI 256 + >PUSHWI 256 jsr K.FGetS bcc .1 - + tax bne STDIO.RTS >RET 4 - + .1 jsr SHARED.GetCP1 End Of format? beq .8 @@ -1167,26 +1167,26 @@ K.SScanF.1 clc format string->ptr1 cmp #C.SPACE Space ? beq .12 - + sta .11+1 - + jsr SHARED.GetCP2 beq .9 - + .11 cmp #$ff Same char in string? beq .1 - + bra .9 .12 jsr SHARED.GetCP2 beq .9 cmp #C.SPACE bne .9 - + .13 jsr SHARED.GetCP2 cmp #C.SPACE another space ? beq .13 - + bra .1 .2 jsr SHARED.GetCP1 Get specifier after % @@ -1210,7 +1210,7 @@ K.SScanF.1 clc format string->ptr1 jsr STDIO.GetStkB bcs .9 sta ZPPtr3 - + jsr .5 bcs .9 out of Ptr on stack @@ -1234,8 +1234,8 @@ K.SScanFJMP .DA K.SScanF.I .DA K.SScanF.HH .DA K.SScanF.S *-------------------------------------- -K.SScanF.I -K.SScanF.D +K.SScanF.I +K.SScanF.D K.SScanF.II K.SScanF.DD K.SScanF.L @@ -1253,7 +1253,7 @@ K.SScanF.H lda K.SScanFTBL+1,x Get VAR size K.SScanF.GetVAL jsr SHARED.AddY2P2 Y=char count parsed -.1 ply get back VAL size +.1 ply get back VAL size .2 lda ACC32-1,y dey @@ -1268,13 +1268,13 @@ K.SScanF.S ldy #$ff lda (ZPPtr2),y Get char in string to scan sta (ZPPtr3),y store in param ptr beq K.SScanF.Fwd end of string to scan ? - - cmp (ZPPtr1) match format next char ? + + cmp (ZPPtr1) match format next char ? beq .2 - + cmp #C.SPACE is it a space ? bne .1 - + .2 lda #0 add \0 to param ptr sta (ZPPtr3),y @@ -1296,7 +1296,7 @@ STDIO.GetParams stz PrintF.Cnt stz PrintF.Cnt+1 lda (pStack) Bytecount - + tay sty STDIO.iStkB @@ -1307,7 +1307,7 @@ STDIO.GetParams stz PrintF.Cnt iny lda (pStack),y format HI bcs .10 - + sta ZPPtr1+1 pla sta ZPPtr1 @@ -1316,22 +1316,22 @@ STDIO.GetParams stz PrintF.Cnt .10 sta ZPPtr2+1 pla sta ZPPtr2 - + .11 dex beq .1 - + dex beq .2 - + .3 stz PrintF.hFILE - + iny lda (pStack),y str LO tax iny lda (pStack),y str HI - + rts .2 iny @@ -1340,7 +1340,7 @@ STDIO.GetParams stz PrintF.Cnt .1 ldx #K.IOBuf lda /K.IOBuf - + rts *-------------------------------------- STDIO.GetStkB phy @@ -1363,12 +1363,12 @@ STDIO.GetStkB phy *-------------------------------------- STDIO.Exit php pha - + lda pStack sec adc STDIO.PopCnt sta pStack - + pla plp rts