diff --git a/.Floppies/A2OSX.BOOTHD.woz b/.Floppies/A2OSX.BOOTHD.woz index 5b97f1fc..350db6f7 100644 Binary files a/.Floppies/A2OSX.BOOTHD.woz and b/.Floppies/A2OSX.BOOTHD.woz differ diff --git a/.Floppies/A2OSX.BUILD.po b/.Floppies/A2OSX.BUILD.po index 9491d208..4f004583 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 b6ec649c..f153be92 100644 Binary files a/.Floppies/A2OSX.TEST.po and b/.Floppies/A2OSX.TEST.po differ diff --git a/BIN/FORMAT.S.txt b/BIN/FORMAT.S.txt index 0aac8cd4..4f63633f 100644 --- a/BIN/FORMAT.S.txt +++ b/BIN/FORMAT.S.txt @@ -330,16 +330,6 @@ CS.RUN.LL.DISKII jsr CS.RUN.Wait bcs CS.RUN.LL.RTS - >LDYAI 4096 - >SYSCALL GetMem - bcs CS.RUN.LL.RTS - - stx hTrackBuf - >STYA ZPPtr1 - - ldx #16 - jsr CS.RUN.ZeroPtr1 16 sectors filled with 0, give some time to spin up - stz CurTrack stz CurQTrack @@ -361,7 +351,7 @@ CS.RUN.LL.DISKII >PUSHB DSSS0000 >PUSHB VolNum >PUSHB CurTrack - >PUSHW ZPPtr1 + >PUSHWI 0 Empty track >LIBCALL hLIBBLKDEV,LIBBLKDEV.D2TrkWrite16s bcs .9 @@ -401,17 +391,18 @@ CS.RUN.LL.DISKII jsr CS.RUN.LL.DISKII.V bcs .99 - jsr CS.RUN.MotorOn +* jsr CS.RUN.MotorOn - lda #5 - jsr CS.RUN.Wait +* lda #10 +* jsr CS.RUN.Wait .80 - >PUSHB DSSS0000 - >LIBCALL hLIBBLKDEV,LIBBLKDEV.D2Recalibrate +* >PUSHB DSSS0000 +* >LIBCALL hLIBBLKDEV,LIBBLKDEV.D2Recalibrate + +* lda #10 +* jsr CS.RUN.Wait - lda #5 - jsr CS.RUN.Wait clc .99 rts *-------------------------------------- diff --git a/BIN/IRC.S.txt b/BIN/IRC.S.txt index 1a06b441..0e068758 100644 --- a/BIN/IRC.S.txt +++ b/BIN/IRC.S.txt @@ -11,7 +11,7 @@ NEW .INB inc/eth.i .INB inc/libtcpip.i *-------------------------------------- -TIMEOUT.MAX .EQ 200 20 sec. +TIMEOUT.MAX .EQ 250 25 sec. MSGSIZE .EQ 1024 TEXTMAX .EQ 240 *-------------------------------------- @@ -23,22 +23,21 @@ ZS.START ZPPtr1 .BS 2 hSocket .BS 1 -hFile .BS 1 hLineBuf .BS 1 ZPLineBufPtr .BS 2 TextPtr .BS 1 TextLen .BS 1 -hText .BS 1 ZPTextPtr .BS 2 +hText .BS 1 bEscMode .BS 1 - TimeOut .BS 1 - bJoin .BS 1 + hMsgBuf .BS 1 +MsgLen .BS 1 ZPMsgPtr .BS 2 ZPMsgPfxPtr .BS 2 @@ -46,8 +45,14 @@ ZPMsgCmdPtr .BS 2 ZPMsgArgPtr .BS 2 ZPMsgExtPtr .BS 2 -ZS.END - .ED +hReqBuf .BS 1 +ReqPtr .BS 1 +ReqLen .BS 1 +hRespBuf .BS 1 +ZPReqPtr .BS 2 +ZPRespPtr .BS 2 + +ZS.END .ED *-------------------------------------- * File Header (16 Bytes) *-------------------------------------- @@ -71,7 +76,6 @@ L.LIBTCPIP .DA LIBTCPIP L.SA.LOCAL .DA SA.LOCAL L.SA.REMOTE .DA SA.REMOTE L.SA.REMOTE.AD .DA SA.REMOTE+S.SOCKADDR.ADDR -L.NOD.Template .DA NOD.Template L.MSG.IPKO .DA MSG.IPKO L.MSG.USAGE .DA MSG.USAGE L.MSG.UNKNOWN .DA MSG.UNKNOWN @@ -119,163 +123,41 @@ J.ESC .DA CS.RUN.CHARIN.LEFT CS.INIT >LDYA L.LIBTCPIP >SYSCALL LoadLib bcs .9 + sta hLIBTCPIP -.9 rts +.9 +CS.INIT.RTS rts *-------------------------------------- -CS.RUN >LIBCALL hLIBTCPIP,LIBTCPIP.GETCFG is TCPIP loaded ? +CS.RUN jsr CS.RUN.CheckTCPIP + bcs CS.INIT.RTS - >STYA ZPPtr1 - lda (ZPPtr1) Configured ? - bmi CS.RUN.IPOK - - >LDYA L.MSG.IPKO - >SYSCALL PutS - lda #E.SYN - sec -.99 rts - -CS.RUN.IPOK ldy #S.PS.ARGC - lda (pPS),y - cmp #3 - bcc .9 - - ldy #S.IPCFG.IP+3 - ldx #3 - -.1 lda (ZPPtr1),y - sta SA.LOCAL+S.SOCKADDR.ADDR,x - dey - dex - bpl .1 - - lda #TIMEOUT.MAX - sta TimeOut - -.2 >SLEEP - - >PUSHW L.SA.REMOTE.AD - lda #1 - >SYSCALL ArgV - >PUSHYA - >LIBCALL hLIBTCPIP,LIBTCPIP.HST.GetByName - bcc CS.RUN.HOSTOK - lda TimeOut - bne .2 - - >PUSHW L.MSG.UNKNOWN - lda #1 - >SYSCALL ArgV - >PUSHYA - >PUSHBI 2 - >SYSCALL PrintF - bra .99 - -.9 >LDYA L.MSG.USAGE - >SYSCALL PutS - -.99 lda #E.SYN - sec - rts - -CS.RUN.HOSTOK lda #2 - >SYSCALL ArgV - >SYSCALL AToI - >STYA SA.REMOTE+S.SOCKADDR.PORT - - >PUSHW L.MSG.HOSTOK - ldx #0 - -.1 >PUSHB SA.REMOTE+S.SOCKADDR.ADDR,x - inx - cpx #4 - bne .1 - - >PUSHW SA.REMOTE+S.SOCKADDR.PORT - lda #1 - >SYSCALL ArgV - >PUSHYA - - >PUSHBI 8 - >SYSCALL PrintF - -CS.RUN.OPENSKT >PUSHBI 0 no protocol - lda #S.SOCKET.T.STREAM - >LIBCALL hLIBTCPIP,LIBTCPIP.Socket - bcs .9 - - sta hSocket - - >PUSHW L.SA.LOCAL - lda hSocket - >LIBCALL hLIBTCPIP,LIBTCPIP.Bind - bcc .2 - -.9 pha - >LDYA L.MSG.SKTKO - >SYSCALL PutS - pla - sec -.99 rts - -.2 lda #TIMEOUT.MAX - sta TimeOut - -.3 >SLEEP - - >PUSHW L.SA.REMOTE - lda hSocket - >LIBCALL hLIBTCPIP,LIBTCPIP.Connect - bcc .4 - - cmp #ERR.SKT.NOCONN - bne .9 - - lda TimeOut - bne .3 - - lda #ERR.SKT.NOCONN - bra .9 - -.4 >PUSHW L.MSG.SKTOK - >PUSHBI 0 - >SYSCALL PrintF - - jsr CS.RUN.MkNod - bcs .99 + jsr CS.RUN.CheckArgs + bcs CS.INIT.RTS + + jsr CS.RUN.Connect + bcs CS.INIT.RTS jsr CS.RUN.GETBUF - bcs .99 + bcs CS.INIT.RTS jsr CS.RUN.SCRSETUP - bcs .99 + bcs CS.INIT.RTS jsr CS.RUN.NICK - bcs .99 - - >SLEEP + bcs CS.INIT.RTS jsr CS.RUN.USER - bcs .99 - - >SLEEP + bcs CS.INIT.RTS jsr CS.RUN.JOIN - bcs .99 + bcs CS.INIT.RTS >LDYA pData NULLSTRING jsr CS.RUN.STATUSPDATE - bcs .99 CS.RUN.LOOP >SLEEP - lda hFile - >SYSCALL FEOF - bcs .9 - - tay - bne .2 - jsr CS.RUN.GetMsg bcs .9 beq .2 @@ -290,6 +172,7 @@ CS.RUN.LOOP >SLEEP >SYSCALL FEOF bcs .9 + tay bne CS.RUN.LOOP EOF = true, no char from STDIN @@ -308,39 +191,153 @@ CS.RUN.LOOP >SLEEP plp rts *-------------------------------------- -CS.RUN.MkNod >PUSHEA.G NodBuf - >PUSHW L.NOD.Template - >PUSHB hSocket - >PUSHBI 1 - >SYSCALL SPrintF +CS.RUN.CheckTCPIP + >LIBCALL hLIBTCPIP,LIBTCPIP.GETCFG is TCPIP loaded ? bcs .9 + + >STYA ZPPtr1 + lda (ZPPtr1) Configured ? + bpl .99 + + ldy #S.IPCFG.IP+3 + ldx #3 - >PUSHEA.G NodBuf+5 - >PUSHW 0 - >PUSHB hSocket - >SYSCALL MKNod - bcs .9 - - >PUSHEA.G NodBuf - >PUSHBI O.RDWR+O.TEXT - >PUSHBI S.FI.T.TXT - >PUSHWZ Aux type - >SYSCALL FOpen - bcs .9 - - sta hFile +.1 lda (ZPPtr1),y + sta SA.LOCAL+S.SOCKADDR.ADDR,x + dey + dex + bpl .1 + + rts +.99 >LDYA L.MSG.IPKO + >SYSCALL PutS + lda #E.SYN + sec .9 rts *-------------------------------------- -CS.RUN.GETBUF >LDYAI MSGSIZE +CS.RUN.CheckArgs + ldy #S.PS.ARGC + lda (pPS),y + cmp #3 + bcs .1 + + >LDYA L.MSG.USAGE + >SYSCALL PutS + + lda #E.SYN + sec + rts + +.1 lda #TIMEOUT.MAX + sta TimeOut + +.2 >PUSHW L.SA.REMOTE.AD + lda #1 + >SYSCALL ArgV + >PUSHYA + >LIBCALL hLIBTCPIP,LIBTCPIP.HST.GetByName + bcc .3 + + >SLEEP + + lda TimeOut + bne .2 + + >PUSHW L.MSG.UNKNOWN + lda #1 + >SYSCALL ArgV + >PUSHYA + >PUSHBI 2 + >SYSCALL PrintF + lda #ERR.SKT.NOCONN + sec + rts + +.3 lda #2 + >SYSCALL ArgV + >SYSCALL AToI + >STYA SA.REMOTE+S.SOCKADDR.PORT + + >PUSHW L.MSG.HOSTOK + ldx #0 + +.4 >PUSHB SA.REMOTE+S.SOCKADDR.ADDR,x + inx + cpx #4 + bne .4 + + >PUSHW SA.REMOTE+S.SOCKADDR.PORT + lda #1 + >SYSCALL ArgV + >PUSHYA + + >PUSHBI 8 + >SYSCALL PrintF + rts +*-------------------------------------- +CS.RUN.Connect >PUSHBI 0 no protocol + lda #S.SOCKET.T.STREAM + >LIBCALL hLIBTCPIP,LIBTCPIP.Socket + bcs .9 + + sta hSocket + + >PUSHW L.SA.LOCAL + lda hSocket + >LIBCALL hLIBTCPIP,LIBTCPIP.Bind + bcs .9 + + lda #TIMEOUT.MAX + sta TimeOut + +.1 >SLEEP + + >PUSHW L.SA.REMOTE + lda hSocket + >LIBCALL hLIBTCPIP,LIBTCPIP.Connect + bcc .8 + + ldx TimeOut + bne .1 + +.9 pha + >LDYA L.MSG.SKTKO + >SYSCALL PutS + pla + sec + rts + +.8 >PUSHW L.MSG.SKTOK + >PUSHBI 0 + >SYSCALL PrintF + rts +*-------------------------------------- +CS.RUN.GETBUF >LDYAI 256 >SYSCALL GetMem bcs .9 - stx hMsgBuf - >STYA ZPMsgPtr + + stx hReqBuf + >STYA ZPReqPtr >LDYAI 256 >SYSCALL GetMem bcs .9 + + stx hMsgBuf + >STYA ZPMsgPtr + + >LDYAI MSGSIZE + >SYSCALL GetMem + bcs .9 + + stx hRespBuf + >STYA ZPRespPtr + + >LDYAI 256 + >SYSCALL GetMem + bcs .9 + stx hText >STYA ZPTextPtr @@ -442,14 +439,17 @@ CS.RUN.TXTCLR lda #0 CS.RUN.NICK >LDYA L.MSG.NICK jsr CS.RUN.STATUSMSG - >PUSHB hFile + >PUSHW ZPRespPtr >PUSHW L.IRC.NICK lda #3 nickname >SYSCALL ArgV >PUSHYA >PUSHBI 2 - >SYSCALL FPrintF + >SYSCALL SPrintF + bcs .9 + + jsr CS.RUN.SendMsg bcs .9 .1 >SLEEP @@ -470,7 +470,10 @@ CS.RUN.NICK >LDYA L.MSG.NICK cmp (ZPMsgExtPtr),y beq .3 - bra .1 + jsr CS.RUN.REQ1 + bcc .1 + + rts .8 clc .9 rts @@ -478,10 +481,8 @@ CS.RUN.NICK >LDYA L.MSG.NICK CS.RUN.USER >LDYA L.MSG.USER jsr CS.RUN.STATUSMSG - >PUSHB hFile - + >PUSHW ZPRespPtr >PUSHW L.IRC.USER - lda #3 nickname >SYSCALL ArgV >PUSHYA @@ -489,7 +490,10 @@ CS.RUN.USER >LDYA L.MSG.USER >SYSCALL ArgV >PUSHYA >PUSHBI 4 - >SYSCALL FPrintF + >SYSCALL SPrintF + bcs .9 + + jsr CS.RUN.SendMsg bcs .9 .1 >SLEEP @@ -510,7 +514,10 @@ CS.RUN.USER >LDYA L.MSG.USER cmp (ZPMsgCmdPtr),y beq .3 - bra .1 + jsr CS.RUN.REQ1 + bcc .1 + + rts .8 clc .9 rts @@ -518,7 +525,7 @@ CS.RUN.USER >LDYA L.MSG.USER CS.RUN.JOIN >LDYA L.MSG.JOIN jsr CS.RUN.STATUSMSG - >PUSHB hFile + >PUSHW ZPRespPtr lda #5 key >SYSCALL ArgV @@ -543,15 +550,20 @@ CS.RUN.JOIN >LDYA L.MSG.JOIN >PUSHYA >PUSHBI 2 -.2 >SYSCALL FPrintF +.2 >SYSCALL SPrintF + bcs .9 + + jsr CS.RUN.SendMsg + .9 rts *-------------------------------------- CS.RUN.REQ jsr CS.RUN.SplitMsg - bcs .8 + bcc CS.RUN.REQ1 -* jsr CS.RUN.DUMPMSG + clc + rts - >LDYA L.IRC.CMDS +CS.RUN.REQ1 >LDYA L.IRC.CMDS >STYA ZPPtr1 ldx #0 @@ -601,21 +613,37 @@ CS.RUN.CMD.JOIN lda bJoin rts .1 *-------------------------------------- -CS.RUN.CMD.PART >PUSHB hFile +CS.RUN.CMD.PART >PUSHW ZPRespPtr >PUSHW L.IRC.NAMES lda #4 channel >SYSCALL ArgV >PUSHYA >PUSHBI 2 - >SYSCALL FPrintF - rts + >SYSCALL SPrintF + bcs .9 + + jsr CS.RUN.SendMsg + +.9 rts *-------------------------------------- -CS.RUN.CMD.PING >PUSHB hFile +CS.RUN.CMD.PING >PUSHW ZPRespPtr >PUSHW L.IRC.PONG >PUSHW ZPMsgExtPtr >PUSHBI 2 - >SYSCALL FPrintF - rts + + +* lda #1 server name +* >SYSCALL ArgV +* >PUSHYA + + >PUSHW ZPMsgExtPtr + >PUSHBI 2 + >SYSCALL SPrintF + bcs .9 + + jsr CS.RUN.SendMsg + +.9 rts *-------------------------------------- CS.RUN.CMD.PRIVMSG ldy #0 @@ -653,14 +681,55 @@ CS.RUN.CMD.376 >SYSCALL PrintF rts *-------------------------------------- -CS.RUN.GetMsg >PUSHB hFile - >PUSHW ZPMsgPtr - >PUSHWI MSGSIZE - >SYSCALL FGetS - bcs .9 +CS.RUN.GetMsg ldy ReqLen + bne .2 + +.1 >PUSHWI 255 + >PUSHW ZPReqPtr + lda hSocket + >LIBCALL hLIBTCPIP,LIBTCPIP.Read + bcs .7 + + sty ReqLen + stz ReqPtr - lda (ZPMsgPtr) -* clc +.2 ldy ReqPtr + + lda (ZPReqPtr),y + cmp #C.CR + beq .6 + + cmp #C.LF + beq .3 + + ldy MsgLen + sta (ZPMsgPtr),y + + inc MsgLen + +.3 inc ReqPtr + dec ReqLen + bne .2 + + bra .1 + +.6 inc ReqPtr Skip CR + dec ReqLen + + lda #0 + + ldy MsgLen will exit with NZ + stz MsgLen + + sta (ZPMsgPtr),y + + clc + rts + +.7 cmp #E.NODATA + bne .9 + +.8 clc will exit with NZ .9 rts *-------------------------------------- @@ -869,14 +938,39 @@ CS.RUN.CHARIN.INS.8 CS.RUN.CHARIN.CTRL cmp #C.CR bne .1 - + + jmp CS.RUN.CHARIN.CR + +.1 cmp #$14 Ctrl-T + bne .8 + + >PUSHW ZPRespPtr + >PUSHW L.IRC.PART + lda #4 channel + >SYSCALL ArgV + >PUSHYA + >PUSHBI 2 + >SYSCALL SPrintF + bcs .9 + + jsr CS.RUN.SendMsg + bcs .9 + + lda #3 + sec +.9 rts + +.8 clc + rts +*-------------------------------------- +CS.RUN.CHARIN.CR bit bJoin bpl CS.RUN.CHARIN.INS.8 lda TextLen beq CS.RUN.CHARIN.INS.8 - >PUSHB hFile + >PUSHW ZPRespPtr >PUSHW L.IRC.PRIVMSG lda #4 channel @@ -885,7 +979,10 @@ CS.RUN.CHARIN.CTRL >PUSHW ZPTextPtr >PUSHBI 4 - >SYSCALL FPrintF + >SYSCALL SPrintF + bcs .9 + + jsr CS.RUN.SendMsg bcs .9 >PUSHW L.SEQ.PRIVMSG @@ -901,26 +998,7 @@ CS.RUN.CHARIN.CTRL jmp CS.RUN.TXTCLR -.1 cmp #$14 Ctrl-T - bne .8 - - >PUSHB hFile - - >PUSHW L.IRC.PART - lda #4 channel - >SYSCALL ArgV - >PUSHYA - >PUSHBI 2 - >SYSCALL FPrintF - - >SLEEP - - lda #3 - sec - rts - -.8 clc -.9 rts +.9 rts *-------------------------------------- CS.RUN.CHARIN.LEFT clc @@ -956,30 +1034,39 @@ CS.RUN.CHARIN.DEL clc rts *-------------------------------------- +CS.RUN.SendMsg >PUSHYA + >PUSHW ZPRespPtr + lda hSocket + >LIBCALL hLIBTCPIP,LIBTCPIP.Write + rts +*-------------------------------------- CS.DOEVENT lda (pEvent) bpl .9 is it a TIMER event? + lda TimeOut beq .9 + dec TimeOut + .9 sec do not discard TIMER event rts *-------------------------------------- -CS.QUIT lda hFile - beq .1 - - >SYSCALL FClose - -.1 lda hSocket +CS.QUIT lda hSocket beq .2 >LIBCALL hLIBTCPIP,LIBTCPIP.Shutdown -.2 lda hText +.2 lda hLineBuf beq .3 + + >SYSCALL FreeMem + +.3 lda hText + beq .4 >SYSCALL FreeMem -.3 lda hLIBTCPIP +.4 lda hLIBTCPIP beq .8 >SYSCALL UnloadLib @@ -1027,7 +1114,8 @@ IRC.NICK .AZ "NICK %s\r\n" IRC.USER .AZ "USER %s 0 * :%s\r\n" IRC.JOIN .AZ "JOIN %s\r\n" IRC.JOINKEY .AZ "JOIN %s %s\r\n" -IRC.PONG .AZ "PONG %s\r\n" +IRC.PONG .AZ "PONG :%s\r\n" +*IRC.PONG .AZ "PONG %s:%s\r\n" IRC.PART .AS "PART %s\r\n" .AZ "QUIT :Pfff\r\n" IRC.NAMES .AZ "NAMES %s\r\n" @@ -1049,15 +1137,12 @@ SA.LOCAL .DA #AF.INET S.SOCKADDR.AF SA.REMOTE .DA #AF.INET S.SOCKADDR.AF .BS 1 .BS 4 S.SOCKADDR.ADDR - .BS 2 -*-------------------------------------- -NOD.Template .AZ "/dev/irc%h" + .DA 6667 *-------------------------------------- .DUMMY .OR 0 DS.START NULLSTRING .BS 1 -NodBuf .BS 11 DS.END .ED *-------------------------------------- MAN diff --git a/BIN/LSOF.S.txt b/BIN/LSOF.S.txt index 5e270af4..e51b5eb6 100644 --- a/BIN/LSOF.S.txt +++ b/BIN/LSOF.S.txt @@ -10,8 +10,12 @@ NEW .INB inc/a2osx.i .INB inc/kernel.i *-------------------------------------- -ZPFDPtr .EQ ZPBIN -FILE.ID .EQ ZPBIN+2 + .DUMMY + .OR ZPBIN +ZS.START +ZPFDPtr .BS 2 +FILE.ID .BS 2 +ZS.END .ED *-------------------------------------- * File Header (16 Bytes) *-------------------------------------- @@ -23,7 +27,7 @@ CS.START cld .DA CS.END-CS.START CS .DA DS.END-DS.START DS .DA #16 SS - .DA #4 ZP + .DA #ZS.END-ZS.START Zero Page Size .DA 0 *-------------------------------------- * Relocation Table @@ -71,6 +75,7 @@ CS.RUN >LDYA L.MSG0 tax >PUSHW L.FD.T,x + ldx FILE.ID lda Nod.Table.hName-2,x >SYSCALL GetMemPtr >PUSHYA diff --git a/BIN/PPPTEST.S.txt b/BIN/PPPTEST.S.txt index c7512c9c..0f9b3944 100644 --- a/BIN/PPPTEST.S.txt +++ b/BIN/PPPTEST.S.txt @@ -343,7 +343,7 @@ DumpBuf >STYA ZPPtr1 *-------------------------------------- CS.END MSG.USAGE .AZ "Usage : TERM device " -MSG.DEVOK .AZ "Openning Device..." +MSG.DEVOK .AZ "Opening Device..." MSG.AT .AS "ATI0" .HS 0D0A MSG.AT.LEN .EQ *-MSG.AT diff --git a/BIN/TERM.S.txt b/BIN/TERM.S.txt index 06684352..f8d70d6c 100644 --- a/BIN/TERM.S.txt +++ b/BIN/TERM.S.txt @@ -18,8 +18,7 @@ ZPBufPtr .BS 2 hBuf .BS 1 hDev .BS 1 TimeOut .BS 1 -ZS.END - .ED +ZS.END .ED *-------------------------------------- * File Header (16 Bytes) *-------------------------------------- diff --git a/DRV/PPPSSC.DRV.S.txt b/DRV/PPPSSC.DRV.S.txt index 1f886ada..96b3ee9f 100644 --- a/DRV/PPPSSC.DRV.S.txt +++ b/DRV/PPPSSC.DRV.S.txt @@ -13,9 +13,6 @@ NEW .INB inc/nic.i *-------------------------------------- INBUF.SIZE .EQ $800 -*AT+CGDCONT=1,"IP","APN","0.0.0.0",0,0 -*AT+CGDCONT=1,"PPP","APN","0.0.0.0",0,0 -*ATD*99#1 *-------------------------------------- .DUMMY .OR ZPBIN @@ -108,7 +105,7 @@ Dev.Detect >STYA ZPArgsPtr lda #MLI.E.NODEV Not Found in any slot, exiting sec rts - +*-------------------------------------- .4 lda ZPPtr1+1 asl asl @@ -121,6 +118,7 @@ Dev.Detect >STYA ZPArgsPtr jsr SSC.Init jsr PPP.ETCFILE bcs .99 + jsr PPP.Init bcs .99 @@ -149,7 +147,13 @@ Dev.Detect >STYA ZPArgsPtr lda #A2osX.S.NIC sta A2osX.S,x -.9 + lda #0 + sec + rts + +.9 ldx DEVSLOTn08F + stz SSC.RESET-$8F,x + Dev.Detect.RTS rts *-------------------------------------- PPP.ETCFILE >PUSHW L.ETCFILE @@ -173,24 +177,27 @@ PPP.ETCFILE >PUSHW L.ETCFILE bcs .8 lda FILE.Buf + beq .1 + cmp #'#' beq .1 >LDYA L.FILE.Buf >SYSCALL PutS - + lda FILE.Buf - cmp #'?' + cmp #'>' bne .2 >LDYA L.FILE.Bufp1 jsr SSC.WriteYA bcs .9 - bra .1 -.2 cmp #'!' +.10 bra .1 + +.2 cmp #'?' bne .7 - +*-------------------------------------- .3 jsr SSC.Read bcs .9 @@ -200,45 +207,34 @@ PPP.ETCFILE >PUSHW L.ETCFILE lda #0 sta RCV.Buf,y - >LDYA L.RCV.Bufp1 + >LDYA L.RCV.Buf >STYA ZPPtr2 - -.4 ldy #0 + +.4 jsr PPP.SkipCRLFPtr2 + bcs .3 + + ldy #$ff .5 iny - lda FILE.Buf,y - bne .6 - - lda #C.CR + lda FILE.Buf+1,y skip ! + beq .10 .6 cmp (ZPPtr2),y - bne .60 + beq .5 + + lda (ZPPtr2),y + beq .60 cmp #C.CR - bne .5 - jmp .1 - -.60 ldy #0 - -.61 iny - lda (ZPPtr2),y - cmp #C.LF - bne .61 - - tya - sec - adc ZPPtr2 - sta ZPPtr2 - bcc .62 - - inc ZPPtr2+1 - -.62 lda (ZPPtr2) - bne .60 + beq .60 jsr PPP.ETCFILE.ERR1 bra .9 +.60 jsr PPP.NextStrPtr2 + lda (ZPPtr2) + bne .4 + .7 jsr PPP.ETCFILE.ERR2 bra .9 @@ -258,6 +254,56 @@ PPP.ETCFILE >PUSHW L.ETCFILE rts *-------------------------------------- +PPP.SkipCRLFPtr2 +.1 lda (ZPPtr2) + beq .9 + + cmp #C.CR + bne .8 + + ldy #1 + lda (ZPPtr2),y + beq .9 + + cmp #C.LF + bne .2 + + iny + +.2 tya + clc + adc ZPPtr2 + sta ZPPtr2 + bcc .1 + + inc ZPPtr2+1 + bra .1 + +.8 clc + rts + +.9 sec + rts +*-------------------------------------- +PPP.NextStrPtr2 ldy #$ff + +.1 iny + lda (ZPPtr2),y + beq .2 + + cmp #C.CR + bne .1 + +.2 tya + clc + adc ZPPtr2 + sta ZPPtr2 + bcc .8 + + inc ZPPtr2+1 + +.8 rts +*-------------------------------------- PPP.ETCFILE.ERR1 >PUSHW L.MSG.UNEXPECTED >PUSHW L.RCV.Buf @@ -340,9 +386,9 @@ PPP.Init >LDYAI PPP.LCPReq.LEN SSC.Init ldx DEVSLOTn08F stz SSC.RESET-$8F,x - lda #SSC.CTL.CLKINT+SSC.CTL.B115200+SSC.CTL.8D+SSC.CTL.1S+SSC.CMD.NOP + lda #SSC.CTL.1S+SSC.CTL.8D+SSC.CTL.CLKINT+SSC.CTL.B115200 sta SSC.CTL-$8F,x - lda #SSC.CMD.RIRQDIS+SSC.CMD.TE+SSC.CMD.DTR + lda #SSC.CMD.NOP+SSC.CMD.TE+SSC.CMD.RIRQDIS+SSC.CMD.DTR sta SSC.CMD-$8F,x lda SSC.DATA-$8F,x discard any garbage byte @@ -484,9 +530,8 @@ DumpBuf >STYA ZPPtr1 lda (ZPPtr1) cmp #$0D -* bne DumpBuf.PPP - bra DumpBuf.PPP - + bne DumpBuf.PPP + lda ZPBufLen eor #$ff sta ZPBufLen @@ -509,12 +554,15 @@ DumpBuf >STYA ZPPtr1 .3 cmp #$0D beq .4 + cmp #$0A + beq .4 + cmp #C.SPACE bcs .4 ora #$20 -.4 >SYSCALL PutS +.4 >SYSCALL PutChar bcc .1 .9 rts @@ -722,8 +770,8 @@ PPP.LCPReq.DATA .HS 01 Configure-Request .DA /576,#576 .HS 02.06.000A0000 ACCM .HS 05.06.002A2B78 MAGIC - .HS 07.02 - .HS 08.02 +* .HS 07.02 +* .HS 08.02 PPP.LCPReq.DATA.LEN .EQ *-PPP.LCPReq.DATA * .HS 0000 PADDING .BS 2 FCS diff --git a/INC/COM.6551.I.txt b/INC/COM.6551.I.txt index 0262a91a..d3397f27 100644 --- a/INC/COM.6551.I.txt +++ b/INC/COM.6551.I.txt @@ -39,6 +39,7 @@ SSC.CTL.6D .EQ %01000000 SSC.CTL.5D .EQ %01100000 SSC.CTL.CLKINT .EQ %00010000 SSC.CTL.B16EXT .EQ %00000000 +SSC.CTL.B115200 .EQ %00000000 SSC.CTL.B50 .EQ %00000001 SSC.CTL.B75 .EQ %00000010 SSC.CTL.B110 .EQ %00000011 @@ -54,8 +55,6 @@ SSC.CTL.B4800 .EQ %00001100 SSC.CTL.B7200 .EQ %00001101 SSC.CTL.B9600 .EQ %00001110 SSC.CTL.B19200 .EQ %00001111 -SSC.CTL.B115200 .EQ %00000000 - *-------------------------------------- MAN SAVE INC/COM.6551.I diff --git a/INC/IO.D2.I.txt b/INC/IO.D2.I.txt index 4bb65e2f..a0a703bc 100644 --- a/INC/IO.D2.I.txt +++ b/INC/IO.D2.I.txt @@ -1,10 +1,10 @@ NEW AUTO 3,1 *-------------------------------------- -IO.D2.SeekTimeR .EQ 65 LIBBLKDEV Recalibration +IO.D2.SeekTimeR .EQ 45 LIBBLKDEV Recalibration IO.D2.SeekTimeF .EQ 65 LIBBLKDEV Track Formatter IO.D2.SeekTimeB .EQ 65 LIBBLKDEV Boot Block -IO.D2.SeekTimeP .EQ 65 ProDOS.FX initial +IO.D2.SeekTimeP .EQ 35 ProDOS.FX initial IO.D2.SeekTimeI .EQ 10 ProDOS.FX increment -> until > 128 *-------------------------------------- IO.D2.Ph0Off .EQ $C080 diff --git a/LIB/LIBBLKDEV.S.D2.txt b/LIB/LIBBLKDEV.S.D2.txt index 71c6a9b7..8bf02c82 100644 --- a/LIB/LIBBLKDEV.S.D2.txt +++ b/LIB/LIBBLKDEV.S.D2.txt @@ -76,7 +76,14 @@ D2MoveHead >PULLB MoveTo clc .9 rts -D2MoveHead.SEI lda MoveFrom +D2MoveHead.SEI lda Slotn0 + ora #IO.D2.RData + sta .4+1 + sta .5+1 + sta .6+1 + sta .7+1 + + lda MoveFrom tay and #6 @@ -90,6 +97,8 @@ D2MoveHead.SEI lda MoveFrom .1 pha jsr .8 + pla + pha bcs .2 * Current < Target, must move in @@ -121,17 +130,11 @@ D2MoveHead.SEI lda MoveFrom ora Slotn0 tay -* lda Slotn0 -* ora #IO.D2.RData -* sta .4+1 -* sta .5+1 - lda IO.D2.Ph0On,x -*.4 lda IO.D2.RData SELF MODIFIED - nop - nop +.4 lda IO.D2.RData SELF MODIFIED + lda IO.D2.Ph0On,y -*.5 lda IO.D2.RData SELF MODIFIED +.5 lda IO.D2.RData SELF MODIFIED lda #IO.D2.SeekTimeF jsr D2.Wait100usecA @@ -142,12 +145,12 @@ D2MoveHead.SEI lda MoveFrom jsr D2.Wait25600usec -.8 pha - lda IO.D2.Ph0Off,x - nop - nop +.8 lda IO.D2.Ph0Off,x +.6 lda IO.D2.RData SELF MODIFIED + lda IO.D2.Ph0Off,y - pla +.7 lda IO.D2.RData SELF MODIFIED + rts */-------------------------------------- * # D2TrkRead16s @@ -197,33 +200,34 @@ D2TrkWrite16s >PULLW ZPPtr1 >STYA ZPPtr2 stx hTrkBuf - lda TrkNum - jsr D2.Trk2Qtrk - tay +* lda TrkNum +* jsr D2.Trk2Qtrk +* tay - and #6 - ora Slotn0 - tax +* and #6 +* ora Slotn0 +* tax - tya - inc - and #6 - ora Slotn0 - tay - - lda IO.D2.Ph0On,x - stx PhX - lda IO.D2.Ph0On,y - sty PhY - -* lda #10 -* jsr D2.Wait100usecA - -* ldx PhX -* lda IO.D2.Ph0Off,x -* ldy PhY -* lda IO.D2.Ph0Off,y +* tya +* inc +* and #6 +* ora Slotn0 +* tay +* stx PhX +* sty PhY +* lda Slotn0 +* ora #IO.D2.RData +* sta .10+1 +* sta .11+1 +* sta .12+1 +* sta .13+1 + +* lda IO.D2.Ph0On,x +*.10 lda IO.D2.RData SELF MODIFIED +* lda IO.D2.Ph0On,y +*.11 lda IO.D2.RData SELF MODIFIED +* stz SectNum ldy #0 put 256 FF sync bytes for slooooow drives @@ -250,14 +254,32 @@ D2TrkWrite16s >PULLW ZPPtr1 jsr PutDataHeadPtr2 - jsr PutData + lda ZPPtr1+1 + bne .7 + + ldy #$57 + ldx #2 + lda #$96 + +.3 sta (ZPPtr2) + inc ZPPtr2 + bne .4 + inc ZPPtr2+1 - jsr PutTailPtr2 +.4 dey + bne .3 + dex + bne .3 + + bra .8 + +.7 jsr PutData + inc ZPPtr1+1 + +.8 jsr PutTailPtr2 ldy #TRACK16.GAP3 jsr PutSyncBytePtr2 - inc ZPPtr1+1 - inc SectNum lda SectNum cmp #16 @@ -266,15 +288,18 @@ D2TrkWrite16s >PULLW ZPPtr1 lda #0 sta (ZPPtr2) - ldx PhX - lda IO.D2.Ph0Off,x - ldy PhY - lda IO.D2.Ph0Off,y - - jsr D2.Wait25600usec - jsr D2.Wait25600usec +* ldx PhX +* ldy PhY + +* lda IO.D2.Ph0Off,x +*.12 lda IO.D2.RData SELF MODIFIED +* lda IO.D2.Ph0Off,y +*.13 lda IO.D2.RData SELF MODIFIED + +* jsr D2.Wait25600usec jsr D2WriteTrackPtr2 + php pha lda hTrkBuf diff --git a/LIB/LIBCIFS.S.txt b/LIB/LIBCIFS.S.txt index 8b081c2c..d6018550 100644 --- a/LIB/LIBCIFS.S.txt +++ b/LIB/LIBCIFS.S.txt @@ -22,12 +22,13 @@ ZPCtxPtr .BS 2 pFD .BS 2 pPath .BS 2 -ZPRespPtr .BS 2 - ZPPtr1 .BS 2 ZPPtr2 .BS 2 BufPtr .BS 2 hBuf .BS 1 +hResp .BS 1 +ZPRespPtr .BS 2 + bFlag .BS 1 ZS.END .ED @@ -498,6 +499,7 @@ CIFS.CallBack bit CIFS.Status rts .1 jmp (J.CIFS,x) + .2 pla ply jmp (J.CIFS2,x) @@ -543,15 +545,7 @@ CIFS.Stat >STYA pPath resolved path jsr GO.LIBTCPIP bcs .9 - ldy #S.PS.PID - lda (pPS),y - sta CIFS.PID - - dec CIFS.Status - - lda #0 - sec - rts + jmp Sleep .9 >RET 4 *-------------------------------------- @@ -578,6 +572,9 @@ CIFS2.Stat lda MountTable+3 hSocket jsr FileInfo2StatBuf jsr StatBuf2Ptr2 + lda hResp + >SYSCALL2 FreeMem + stz CIFS.Status clc rts @@ -593,6 +590,7 @@ CIFS2.Stat lda MountTable+3 hSocket rts .90 lda #MLI.E.IO + .99 sec stz CIFS.Status >RET 4 @@ -626,15 +624,7 @@ CIFS.MKDir >STYA pPath resolved path jsr GO.LIBTCPIP bcs .9 - ldy #S.PS.PID - lda (pPS),y - sta CIFS.PID - - dec CIFS.Status - - lda #0 - sec - rts + jmp Sleep .9 >RET 4 *-------------------------------------- @@ -647,26 +637,29 @@ CIFS2.MKDir lda MountTable+3 hSocket ldy #S.NETBIOS+S.SMB.H.STATUS lda (ZPRespPtr),y - beq .1 + clc + beq .8 lda #MLI.E.DUPFILE - bra .99 + sec + +.8 jsr FreeRespData -.1 stz CIFS.Status - clc + stz CIFS.Status >RET 4 .9 cmp #E.NODATA bne .99 dec CIFS.Retries - beq .90 + beq .98 lda #0 sec rts -.90 lda #MLI.E.IO +.98 lda #MLI.E.IO + .99 sec stz CIFS.Status >RET 4 @@ -800,14 +793,8 @@ CIFS.ReadDir.Send jsr GO.LIBTCPIP bcs .9 - ldy #S.PS.PID - lda (pPS),y - sta CIFS.PID + jmp Sleep - dec CIFS.Status - - lda #0 - sec .9 rts *-------------------------------------- CIFS2.ReadDir jsr GetPFD @@ -815,58 +802,72 @@ CIFS2.ReadDir jsr GetPFD lda MountTable+3 hSocket ldx #LIBTCPIP.Recv jsr GO.LIBTCPIP - bcs .9 + bcs .90 jsr GetRespData ldy #S.NETBIOS+S.SMB.H.STATUS lda (ZPRespPtr),y - bne .99 + beq .1 - ldy #S.FD.DIR.FC +.91 sec + lda #MLI.E.IO + bra .9 + +.1 ldy #S.FD.DIR.FC lda (pFD),y iny ora (pFD),y sta bFlag - bne .1 + bne .2 ldy #S.NETBIOS+S.SMB.H+S.TRANS2.H+1 Search ID lda (ZPRespPtr),y tax dey - lda (ZPRespPtr),y + ora (ZPRespPtr),y + beq .91 + lda (ZPRespPtr),y + ldy #S.FD.DIR.FC sta (pFD),y iny txa sta (pFD),y -.1 jsr GetRespDataOffset +.2 jsr GetRespDataOffset jsr CIFS2.ReadDir.GetBuf - bcs .99 + bcs .9 jsr GetRespDataOffset jsr CIFS2.ReadDir.FillBuf + lda hResp + >SYSCALL2 FreeMem + >LDYA BufPtr ldx hBuf - + stz CIFS.Status clc rts + +.9 stz CIFS.Status + + jmp FreeRespData -.9 cmp #E.NODATA +.90 cmp #E.NODATA bne .99 dec CIFS.Retries - beq .90 + beq .98 lda #0 sec rts -.90 lda #MLI.E.IO +.98 lda #MLI.E.IO .99 stz CIFS.Status sec @@ -1200,6 +1201,18 @@ SetReqLenNETBIOS >LDYA ZPReqLen rts *-------------------------------------- +Sleep ldy #S.PS.PID + lda (pPS),y + sta CIFS.PID + + dec CIFS.Status + + stz CIFS.Retries + + lda #0 + sec + rts +*-------------------------------------- GetRespData sta hResp >SYSCALL2 GetMemPtr @@ -1236,6 +1249,14 @@ GetRespDataOffset + rts +*-------------------------------------- +FreeRespData php + pha + lda hResp + >SYSCALL2 FreeMem + pla + plp rts *-------------------------------------- FileInfo2StatBuf @@ -1448,7 +1469,7 @@ SMB.ComWrite.H .DA #12 WORD COUNT .BS 2 FID .BS 4 Offset .HS 00000000 Timeout - .HS 00001 WriteMode=WritethroughMode + .HS 0001 WriteMode=WritethroughMode .BS 2 Remaining .HS 0000 Reserved .BS 2 DataLength @@ -1469,7 +1490,7 @@ SMB.Trans2.H .DA #15 WORD COUNT .BS 2 TotalParamCount .DA 0 TotalDataCount .DA 10 MaxParameterCount - .DA 480 MaxDataCount + .DA 450 MaxDataCount .DA #0 MaxSetupCount .HS 00 Reserved1 .DA 0 Flags @@ -1541,7 +1562,6 @@ hLIBTCPIP .BS 1 pLIBTCPIP .BS 2 hSocket .BS 1 hReq .BS 1 -hResp .BS 1 *-------------------------------------- CIFS.Status .BS 1 CIFS.PID .BS 1 diff --git a/LIB/LIBTCPIP.S.ICMP.txt b/LIB/LIBTCPIP.S.ICMP.txt index e0216553..1abcb929 100644 --- a/LIB/LIBTCPIP.S.ICMP.txt +++ b/LIB/LIBTCPIP.S.ICMP.txt @@ -16,6 +16,7 @@ ICMP.IN.ECHOREQ ldy #S.IP.DST+3 .1 lda (ZPFrameInPtr),y cmp IPCFG+S.IPCFG.IP,x bne ICMP.IN.EXIT + dey dex bne .1 @@ -54,9 +55,11 @@ ICMP.IN.ECHOREP jsr FRM.GetTargetSKT.RAW ldy #S.ICMP.IDENTIFIER lda (ZPFrameInPtr),y + sta SKT.LOC.ADDR+S.SOCKADDR.PORT+1 sta SKT.REM.ADDR+S.SOCKADDR.PORT+1 iny lda (ZPFrameInPtr),y + sta SKT.LOC.ADDR+S.SOCKADDR.PORT sta SKT.REM.ADDR+S.SOCKADDR.PORT jsr SKT.FindMatchingLocRem diff --git a/LIB/LIBTCPIP.S.SKT.txt b/LIB/LIBTCPIP.S.SKT.txt index c05be80b..3a54e52b 100644 --- a/LIB/LIBTCPIP.S.SKT.txt +++ b/LIB/LIBTCPIP.S.SKT.txt @@ -221,7 +221,7 @@ SKT.connect.SEQPKT bcs .99 lda #S.SOCKET.TCP.S.SYNSENT - jmp SKT.StoreTCB.S + jsr SKT.StoreTCB.S .99 lda #ERR.SKT.NOCONN sec diff --git a/LIB/LIBTCPIP.S.TCP.txt b/LIB/LIBTCPIP.S.TCP.txt index be278407..71311d63 100644 --- a/LIB/LIBTCPIP.S.TCP.txt +++ b/LIB/LIBTCPIP.S.TCP.txt @@ -152,9 +152,12 @@ TCP.IN.JMP.ESTBLSH dex bpl .1 + bcc .70 ACK > SENT SEQ ???? + lda TmpDWord+3 ldx TmpDWord+2 bne .2 + tay beq .4 @@ -224,7 +227,8 @@ TCP.IN.JMP.ESTBLSH jsr TCP.AddAYToSktCacheAtX jsr SKT.StoreTCB update socket - jsr TCP.SetSocketTCPO.ACK ...and ack data + +.70 jsr TCP.SetSocketTCPO.ACK ...and ack data .7 ldy #S.TCP.OPTIONS lda (ZPFrameInPtr),y diff --git a/ProDOS.FX/ProDOS.S.XDOS.F.txt b/ProDOS.FX/ProDOS.S.XDOS.F.txt index 68e8df54..c0b823ea 100644 --- a/ProDOS.FX/ProDOS.S.XDOS.F.txt +++ b/ProDOS.FX/ProDOS.S.XDOS.F.txt @@ -741,6 +741,45 @@ XDOS.SPParams .HS 03 # of parms (always 3 except format) XDOS.SPParams.U .HS 00 unit number XDOS.SPParams.B .HS 0000 data buffer .HS 000000 block number (3 bytes) +*-------------------------------------- + .DO XRWDBG=1 +XRW.DEBUG sta CLRPAGE2 + + lda #"R" + bit XRW.bWrite + bpl .1 + + lda #"W" + +.1 sta $723 + + ldx #$24 + + lda XRW.ReqTrack + jsr .6 + + lda XRW.ReqSector + +.6 pha + lsr + lsr + lsr + lsr + jsr .7 + + pla + +.7 and #$0F + ora #$B0 + cmp #"9"+1 + bcc .8 + + adc #6 + +.8 sta $700,x + inx + rts + .FIN *-------------------------------------- * data tables *-------------------------------------- @@ -952,7 +991,7 @@ XDOS.SPStatus .HS 00000000 XDOS.DATA.LEN .EQ *-XDOS.DATA .LIST OFF .ED - +*-------------------------------------- * zero fill to page boundary - 3 ($FEFD). so that cortland flag stays within page boundary. .LIST ON XDOS.FREE .EQ $FEFD-*-XDOS.DATA.LEN (2.0.3 = $0C) diff --git a/ProDOS.FX/ProDOS.S.XRW.txt b/ProDOS.FX/ProDOS.S.XRW.txt index 03a546db..3b03770a 100644 --- a/ProDOS.FX/ProDOS.S.XRW.txt +++ b/ProDOS.FX/ProDOS.S.XRW.txt @@ -191,14 +191,6 @@ XRW.TrackSelect lda #2 sta XRW.RecalibrateCnt sta XRW.BadSeek -* lda XRW.ReqTrack -* jsr XRW.SEEK2T - -* lda #5 -* jsr XRW.Wait100usecA - -* jsr XRW.SEEKOFF - .1 stz XRW.RetryCnt .2 jsr XRW.ReadAddr read next address field. @@ -217,7 +209,7 @@ XRW.TrackSelect lda #2 sta XRW.D2Trk-1,y lda #0 - sta XRW.D2VolNum-1,y reset volnum for seeking 4 Qtracks + sta XRW.D2VolNum-1,y reset volnum for seeking 41 Qtracks jsr XRW.Seek Seek from Track 41 -> 0 bra .1 @@ -249,7 +241,15 @@ XRW.TrackSelect lda #2 jsr XRW.Seek bra .3 -.8 clc +.8 +* jsr XRW.SEEK2T + +* lda #1 +* jsr XRW.Wait100usecA + +* jsr XRW.SEEKOFF + + clc .9 rts *-------------------------------------- .LIST ON @@ -309,14 +309,14 @@ XRW.ReadAddr ldy #$FC tay if final checksum non-zero, bne .99 (2) then error. - clc (2) - .9 lda IO.D2.RData,x (4) bpl .9 (2) eor #$DE (2) bne .99 (2) + clc (2) + rts (6) .99 sec @@ -344,7 +344,8 @@ XRW.Seek ldx XRW.UnitIndex sta XRW.D2Trk-1,x will be current track at the end tya - jsr XRW.Seek2QT + jsr XRW.Seek2QTXY + lda #1 bra .4 .1 pha @@ -377,10 +378,10 @@ XRW.Seek ldx XRW.UnitIndex inc inc -.3 jsr XRW.SEEK2QT2 +.3 jsr XRW.SEEK2QTY -.4 lda XRW.SeekTime - jsr XRW.Wait100usecA + lda XRW.SeekTime +.4 jsr XRW.Wait100usecA lda XRW.CurrentQTrack cmp XRW.TargetQTrack @@ -389,51 +390,44 @@ XRW.Seek ldx XRW.UnitIndex jsr XRW.Wait25600usec XRW.SEEKOFF pha - lda IO.D2.Ph0Off,x - nop - nop - lda IO.D2.Ph0Off,y - pla - rts -*-------------------------------------- -XRW.SEEK2T ldx XRW.UnitIndex - jsr XRW.Trk2Qtrk - -XRW.SEEK2QT pha - and #6 - ora A2L - tax - - pla - inc - -XRW.SEEK2QT2 and #6 - ora A2L - tay - -* lda A2L -* ora #IO.D2.RData -* sta .1+1 -* sta .2+1 - - lda IO.D2.Ph0On,x -*.1 lda IO.D2.RData SELF MODIFIED - nop - nop - lda IO.D2.Ph0On,y -*.2 lda IO.D2.RData SELF MODIFIED - rts -*-------------------------------------- -XRW.Trk2Qtrk asl x2 + lda A2L + ora #IO.D2.RData sta .1+1 + sta .2+1 + + lda IO.D2.Ph0Off,x +.1 lda IO.D2.RData SELF MODIFIED - bit XRW.D2VolNum-1,x - bpl .1 x4 - bvs .1 > $C0 ? (VOL=254) + lda IO.D2.Ph0Off,y +.2 lda IO.D2.RData SELF MODIFIED - lsr x3 + pla + rts +*-------------------------------------- +XRW.CheckMotorOn + ldx A2L +XRW.CheckMotorOnX + ldy #0 init loop counter. -.1 adc #$ff SELF MODIFIED +.1 lda IO.D2.RData,x read the shift register. + jsr .9 delay + + pha + pla more delay. + + cmp IO.D2.RData,x has shift reg changed ? + bne .9 yes, motor is moving. + + dey no, dec retry counter + bne .1 and try 256 times. + +.9 rts Z if motor OFF +*-------------------------------------- +XRW.TestWP ldx A2L + lda IO.D2.ReadProt,x test for write protected + lda IO.D2.ReadMode,x + rol write protect-->carry-->bit 0=1 + lda IO.D2.RData,x keep in read mode rts *-------------------------------------- * preniblize subroutine (16 sector format) @@ -560,18 +554,22 @@ L596F ldy #$FF index to last byte of data to write. XRW.SectorIO bit XRW.bWrite bpl .1 - lda XRW.ReqTrack - jsr XRW.SEEK2T - phx - phy +* lda XRW.ReqTrack +* jsr XRW.SEEK2T +* phx +* phy + jsr XRW.PreNibble - ply - plx - jsr XRW.SEEKOFF + +* ply +* plx +* jsr XRW.SEEKOFF .1 stz XRW.RetryCnt + .DO XRWDBG=1 jsr XRW.DEBUG + .FIN .2 jsr XRW.ReadAddr bcs .3 (2) @@ -765,13 +763,6 @@ wnibl sta IO.D2.WLoad,x (5) nibl write XRW.Write.RTS rts (6) .LIST OFF *-------------------------------------- -XRW.TestWP ldx A2L - lda IO.D2.ReadProt,x test for write protected - lda IO.D2.ReadMode,x - rol write protect-->carry-->bit 0=1 - lda IO.D2.RData,x keep in read mode - rts -*-------------------------------------- XRW.Wait25600usec lda #0 XRW.Wait100usecA @@ -945,65 +936,43 @@ L57CD pla place last byte into user buffer XRW.Read.RTS rts .LIST OFF *-------------------------------------- -* determine if motor is stopped -* -* if stopped, controller's shift register will not be changing. -* return y = 0 and zero flag set if it is stopped. -*-------------------------------------- -XRW.CheckMotorOn - ldx A2L -XRW.CheckMotorOnX - ldy #0 init loop counter. +XRW.SEEK2T ldx XRW.UnitIndex + jsr XRW.Trk2Qtrk -.1 lda IO.D2.RData,x read the shift register. - jsr .9 delay - - pha - pla more delay. - - cmp IO.D2.RData,x has shift reg changed ? - bne .9 yes, motor is moving. - - dey no, dec retry counter - bne .1 and try 256 times. - -.9 rts Z if motor OFF -*-------------------------------------- -XRW.DEBUG sta CLRPAGE2 - - lda #"R" - bit XRW.bWrite - bpl .1 - - lda #"W" - -.1 sta $723 - - ldx #$24 - - lda XRW.ReqTrack - jsr .6 - - lda XRW.ReqSector - -.6 pha - lsr - lsr - lsr - lsr - jsr .7 +XRW.SEEK2QTXY pha + and #6 + ora A2L + tax pla + inc -.7 and #$0F - ora #$B0 - cmp #"9"+1 - bcc .8 +XRW.SEEK2QTY and #6 + ora A2L + tay - adc #6 + lda A2L + ora #IO.D2.RData + sta .1+1 + sta .2+1 -.8 sta $700,x - inx + lda IO.D2.Ph0On,y +.1 lda IO.D2.RData SELF MODIFIED + + lda IO.D2.Ph0On,x +.2 lda IO.D2.RData SELF MODIFIED + rts +*-------------------------------------- +XRW.Trk2Qtrk asl x2 + sta .1+1 + + bit XRW.D2VolNum-1,x + bpl .1 x4 + bvs .1 > $C0 ? (VOL=254) + + lsr x3 + +.1 adc #$ff SELF MODIFIED rts *-------------------------------------- .LIST ON diff --git a/ProDOS.FX/ProDOS.S.txt b/ProDOS.FX/ProDOS.S.txt index 26cdb6ca..eccd152f 100644 --- a/ProDOS.FX/ProDOS.S.txt +++ b/ProDOS.FX/ProDOS.S.txt @@ -1,15 +1,17 @@ NEW AUTO 3,1 - .LIST OFF - .OP 65816 - .OR $2000 - .TF PRODOS.FX,TSYS + .LIST OFF + .OP 65816 + .OR $2000 + .TF PRODOS.FX,TSYS *-------------------------------------- -READCAT .EQ 0 Boot Block read Catalog at $C00 +READCAT .EQ 0 Boot Block read Catalog at $C00 ENHFILENAME .EQ 1 LOWERCASE .EQ 1 ACL .EQ 1 LOGO .EQ 1 +*-------------------------------------- +XRWDBG .EQ 1 *-------------------------------------- .INB inc/zp.i .INB inc/io.i @@ -198,7 +200,7 @@ X.Unpak.XatYA sty ZPOutBufPtr lda PAKME.Table,x sta ZPInBufPtr lda PAKME.Table+1,x - sta ZPInBufPtr+1 + sta ZPInBufPtr+1 .INB usr/src/shared/x.unpak.s .DO LOGO .INB usr/src/prodos.fx/prodos.s.logo diff --git a/SBIN/CIFSD.S.txt b/SBIN/CIFSD.S.txt index 0a8dd677..22c519dc 100644 --- a/SBIN/CIFSD.S.txt +++ b/SBIN/CIFSD.S.txt @@ -245,8 +245,6 @@ CS.RUN.Connect >PUSHBI 0 no protocol >LIBCALL hLIBTCPIP,LIBTCPIP.Bind bcs .9 - >SLEEP - >PUSHEA.G SA.REMOTE lda hSocket diff --git a/SHARED/X.FILEENUM.S.txt b/SHARED/X.FILEENUM.S.txt index d126bfac..70bf6b2e 100644 --- a/SHARED/X.FILEENUM.S.txt +++ b/SHARED/X.FILEENUM.S.txt @@ -49,7 +49,7 @@ ExcludeMatch sec >SYSCALL StrUpr .10 lda (ZPPtr2) Get first pattern byte - beq .8 Match always if empty + beq .8 Match always if empty ldy #0 bra .2 @@ -59,10 +59,10 @@ ExcludeMatch sec .2 cmp #'*' beq .5 - + .3 lda (ZPFileName),y we must match ? or regular char, check if at end of string - beq .9 no char left, exit with error - + beq .9 no char left, exit with error + lda (ZPPtr2) get back pattern char cmp #'?' beq .4 no need to compare, any char will match @@ -71,37 +71,37 @@ ExcludeMatch sec bne .9 no match, exit .4 iny advance to next char to compare - bra .1 continue if remaining char in pattern + bra .1 continue if remaining char in pattern .41 lda (ZPFileName),y end of pattern, but end of string ? beq .8 yes, string matched entirely * no, remaining char in string, no match .9 sec - rts + rts .5 jsr FilterMatch.NextPtr2 we have '*', last char of pattern ? beq .8 yes, match everything, including empty string - + cmp #'*' another '*' ? beq .5 yes, '**' = '*', go next char cmp #'?' '*?' ? we must match a least one char beq .3 - + .7 lda (ZPFileName),y we need at least one remaining char in string, check if at end of string beq .9 no chance to match ? or regular char - + iny jsr FilterMatch.CmpPtr2CharPtr1Y compare with char in string - bne .7 not equal to next non wildcard in pattern + bne .7 not equal to next non wildcard in pattern iny bra .1 go check remaining char in pattern... - + .8 FilterMatch.CLCRTS clc FilterMatch.RTS - rts + rts *-------------------------------------- FilterMatch.CmpPtr2CharPtr1Y phx @@ -154,11 +154,16 @@ InitSrcDirYA >PUSHYA cmp /S.STAT.MODE.DIR bne .4 TYPE not a DIR, extract.... bra .5 TYPE=DIR, do not extract pattern - .ELSE + .ELSE bra .4 .FIN -.1 jsr GetPtr1Len TYPE is not DIR, check if wc +.1 cmp #MLI.E.INVPATH + beq .11 + + jmp .9 + +.11 jsr GetPtr1Len TYPE is not DIR, check if wc dey @@ -200,6 +205,7 @@ InitSrcDirYA >PUSHYA >SYSCALL StrDup bcs .9 + txa >STA.G hFilter @@ -209,6 +215,7 @@ InitSrcDirYA >PUSHYA .5 >LDYAI 256 >SYSCALL GetMem Get a 256 buffer to store BasePath bcs .9 + >STYA ZPPtr2 txa >STA.G hSrcBasePath @@ -235,7 +242,9 @@ InitSrcDirYA >PUSHYA ldy #index lda #1 sta (pData),y index=hDIRs[0] + jsr .9 Cleanup + clc rts diff --git a/SHARED/X.SSC.DRV.S.txt b/SHARED/X.SSC.DRV.S.txt index 8a2cff43..4cd21983 100644 --- a/SHARED/X.SSC.DRV.S.txt +++ b/SHARED/X.SSC.DRV.S.txt @@ -9,11 +9,12 @@ NEW .TF drv/ssc.drv .FIN *-------------------------------------- -ZPArgPtr .EQ ZPBIN -ZPParityPtr .EQ ZPBIN+2 -ZPControlPtr .EQ ZPBIN+4 -ZPhParity .EQ ZPBIN+6 -ZPhControl .EQ ZPBIN+7 + .DUMMY + .OR ZPBIN +ZS.START +ZPArgPtr .BS 2 +ZPSlotPtr .BS 2 +ZS.END .ED *-------------------------------------- * File Header (16 Bytes) *-------------------------------------- @@ -22,10 +23,9 @@ CS.START cld .DA #$61 6502,Level 1 (65c02) .DA #1 DRV Layout Version 1 .DA 0 - .DA CS.END-CS.START Code Length + .DA CS.END-CS.START Code Length + .DA 0 .DA 0 - .DA #32 SS - .DA #10 ZP .DA 0 *-------------------------------------- * Relocation Table @@ -36,20 +36,16 @@ L.MSG.DETECT.KO .DA MSG.DETECT.KO L.DRV.CS.START .DA DRV.CS.START L.FD.DEV .DA FD.DEV L.FD.DEV.NAME .DA FD.DEV.NAME -L.SSCANF.ARGS .DA SSCANF.ARGS -L.DCB.BAUD .DA DCB+S.DCB.COM.BAUD -L.DCB.DATA .DA DCB+S.DCB.COM.DATA -L.DCB.STOP .DA DCB+S.DCB.COM.STOP .DA 0 End Of Reloc Table *-------------------------------------- -Dev.Detect >STYA ARGS +Dev.Detect >STYA ZPArgPtr >LDYA L.MSG.DETECT >SYSCALL PutS - stz ZPArgPtr + stz ZPSlotPtr lda #$C1 - sta ZPArgPtr+1 + sta ZPSlotPtr+1 .1 and #$0f tay @@ -59,7 +55,7 @@ Dev.Detect >STYA ARGS ldx #DEVSIG.Length-1 .2 ldy DEVSIG.Offset,x - lda (ZPArgPtr),y + lda (ZPSlotPtr),y cmp DEVSIG.Value,x bne .3 @@ -69,24 +65,19 @@ Dev.Detect >STYA ARGS bra .4 .3 inc FD.DEV.NAME+3 - inc ZPArgPtr+1 no match, try next slot.... - lda ZPArgPtr+1 + inc ZPSlotPtr+1 no match, try next slot.... + lda ZPSlotPtr+1 cmp #$C8 bne .1 + >LDYA L.MSG.DETECT.KO >SYSCALL PutS lda #MLI.E.NODEV Not Found in any slot, exiting sec - rts +.99 rts -.4 lda ZPArgPtr+1 - and #$0F - pha - tay - lda #A2osX.S.COM - sta A2osX.S,y - pla +.4 lda ZPSlotPtr+1 asl asl asl @@ -94,8 +85,9 @@ Dev.Detect >STYA ARGS clc adc #$8F sta DEVSLOTn08F + jsr Dev.ParseArgs - bcs .9 + bcs .99 .8 >PUSHW L.MSG.DETECT.OK >PUSHW L.FD.DEV.NAME @@ -114,61 +106,227 @@ Dev.Detect >STYA ARGS >PUSHW L.FD.DEV >PUSHW L.FD.DEV.NAME >SYSCALL MKDev + bcs .9 + + lda ZPSlotPtr+1 + and #$0F + tay + lda #A2osX.S.COM + sta A2osX.S,y + +* clc .9 rts *-------------------------------------- -Dev.ParseArgs >LDYA ARGS - >STYA ZPArgPtr - lda (ZPArgPtr) +Dev.ParseArgs lda (ZPArgPtr) bne .1 clc rts -.1 stz ZPhParity - stz ZPhControl - - >LDYAI 256 - >SYSCALL GetMem - bcs .2 - - >STYA ZPParityPtr - stx ZPhParity - - >LDYAI 256 - >SYSCALL GetMem - -.2 bcs .90 - - >STYA ZPControlPtr - stx ZPhControl - - >PUSHW ZPArgPtr - >PUSHW L.SSCANF.ARGS - - >PUSHW L.DCB.BAUD - >PUSHW L.DCB.DATA - >PUSHW L.DCB.STOP - >PUSHW ZPParityPtr - >PUSHW ZPControlPtr - >PUSHBI 10 5 x byte PTRs - >SYSCALL SScanF +.1 stz DCB+S.DCB.COM.BAUD + stz DCB+S.DCB.COM.BAUD+1 + stz DCB+S.DCB.COM.BAUD+2 + stz DCB+S.DCB.COM.BAUD+3 + +.2 jsr DevNextChar + beq .90 + + cmp #',' + beq .3 + + jsr Dev.IsDigit bcs .90 + + jsr Dev.BaudT10pA + bra .2 + +.3 jsr Dev.CheckBaud + bcs .99 -.90 lda ZPhControl - beq .91 + jsr DevNextChar + beq .99 + + ldx #P2.Cnt-1 + +.4 cmp P2,x + beq .5 + + dex + bpl .4 + +.90 bra .99 + +.5 lda #%11100000 + trb DEVCMD + + txa + asl + asl + asl + asl + asl + tsb DEVCMD + + jsr DevCheckSep + bcs .99 + + ldx #P3.Cnt-1 + +.6 cmp P3,x + beq .7 + + dex + bpl .6 + + bra .99 - >SYSCALL FreeMem +.7 lda #%01100000 + trb DEVCTL + + txa + asl + asl + asl + asl + asl + tsb DEVCTL + + jsr DevCheckSep + bcs .99 -.91 lda ZPhParity - beq .92 + ldx #P4.Cnt-1 + +.8 cmp P4,x + beq .9 + + dex + bpl .8 + + bra .99 - >SYSCALL FreeMem +.9 lda #%10000000 + trb DEVCTL + + txa + rol + rol + tsb DEVCTL + + jsr DevCheckSep + bcs .99 -.92 lda #E.SYN + ldx #P5.Cnt-1 + +.10 cmp P5,x + beq .11 + + dex + bpl .10 + + bra .99 + +.11 stx DEVFLOWCTRL + + clc + rts + +.99 lda #E.SYN sec rts *-------------------------------------- +DevCheckSep jsr DevNextChar + beq .9 + + cmp #',' + bne .9 + + jsr DevNextChar + beq .9 + + clc + rts + +.9 sec + rts +*-------------------------------------- +DevNextChar lda (ZPArgPtr) + beq .9 + + inc ZPArgPtr + bne .9 + + inc ZPArgPtr+1 +.9 rts +*-------------------------------------- +Dev.IsDigit cmp #'0' + bcc .9 + + cmp #'9'+1 + bcs .99 + + and #$0F + rts + +.9 sec +.99 rts +*-------------------------------------- +Dev.BaudT10pA pha + + >PUSHL DCB+S.DCB.COM.BAUD + >PUSHBI 0 + >PUSHBI 0 + >PUSHBI 0 + >PUSHBI 10 + >FPU MUL32 + + >PUSHBI 0 + >PUSHBI 0 + >PUSHBI 0 + pla + >PUSHA + >FPU ADD32 + >PULLL DCB+S.DCB.COM.BAUD + rts +*-------------------------------------- +Dev.CheckBaud ldx #0 + +.1 txa + asl + asl + tay + + lda DCB+S.DCB.COM.BAUD + cmp P1,y + bne .7 + + lda DCB+S.DCB.COM.BAUD+1 + cmp P1+1,y + bne .7 + + lda DCB+S.DCB.COM.BAUD+2 + cmp P1+2,y + bne .7 + + lda DCB+S.DCB.COM.BAUD+3 + cmp P1+3,y + bne .7 + + lda #$F + trb DEVCTL + + txa + tsb DEVCTL + + clc + rts + +.7 inx + cpx #P1.Cnt + bcc .1 + + rts +*-------------------------------------- CS.END DEVSIG.Offset .HS 05070B0C DEVSIG.Value .HS 38180131 @@ -180,8 +338,36 @@ MSG.DETECT .AS "Apple SSC (Super Serial Card,//c Serial Port) Driver" .AZ "." MSG.DETECT.OK .AZ "SSC Installed As Device : %s\r\n" MSG.DETECT.KO .AZ "No SSC Found." -SSCANF.ARGS .AZ "%u,%d,%d,%s,%s" -ARGS .BS 2 +*-------------------------------------- +P1 .DA >115200 Baud + .DA >50 + .DA >75 + .DA >110 + .DA >135 + .DA >150 + .DA >300 + .DA >600 + .DA >1200 + .DA >1800 + .DA >2400 + .DA >3600 + .DA >4800 + .DA >7200 + .DA >9600 + .DA >19200 +P1.Cnt .EQ 16 +*-------------------------------------- +P2 .AS "NOEMS" Parity +P2.Cnt .EQ *-P2 +*-------------------------------------- +P3 .AS "8765" Data +P3.Cnt .EQ *-P3 +*-------------------------------------- +P4 .AS "12" Stop +P4.Cnt .EQ *-P4 +*-------------------------------------- +P5 .AS "NHX" flow Control +P5.Cnt .EQ *-P5 *-------------------------------------- FD.DEV .DA #S.FD.T.CDEV .DA #0 HANDLER @@ -241,6 +427,7 @@ STATUS.DCB cmp #S.IOCTL.STATCODE.GETDCB bne .3 ldy #S.DCB.COM-1 + .2 lda DCB,y sta (ZPBufPtr),y dey @@ -267,6 +454,15 @@ STATUS.DCB cmp #S.IOCTL.STATCODE.GETDCB clc rts .ELSE + + ldx DEVSLOTn08F + lda SSC.STATUS-$8F,x + and #SSC.STATUS.RDRF + beq .4 + + lda #1 + +.4 dec .FIN .8 clc rts @@ -323,28 +519,17 @@ OPEN.1 php stz OUTBUF.HEAD stz OUTBUF.TAIL - ldx DEVSLOTn08F - stz SSC.RESET-$8F,x - - lda #SSC.CTL.CLKINT+SSC.CTL.B9600+SSC.CTL.8D+SSC.CTL.1S+SSC.CMD.NOP - sta SSC.CTL-$8F,x - - lda #SSC.CMD.TEIRQ+SSC.CMD.DTR - sta SSC.CMD-$8F,x - - .ELSE - - ldx DEVSLOTn08F - stz SSC.RESET-$8F,x - - lda #SSC.CTL.CLKINT+SSC.CTL.B115200+SSC.CTL.8D+SSC.CTL.1S+SSC.CMD.NOP - sta SSC.CTL-$8F,x - - lda #SSC.CMD.RIRQDIS+SSC.CMD.TE+SSC.CMD.DTR - sta SSC.CMD-$8F,x - .FIN + ldx DEVSLOTn08F + stz SSC.RESET-$8F,x + + lda DEVCTL + sta SSC.CTL-$8F,x + + lda DEVCMD + sta SSC.CMD-$8F,x + lda SSC.DATA-$8F,x discard any garbage byte lda SSC.STATUS-$8F,x clear any IRQ pending @@ -370,7 +555,7 @@ OPEN.1 php *-------------------------------------- CLOSE lda DIB+S.DIB.S bit #S.DIB.S.OPENED - bne OPEN.E + beq OPEN.E php sei @@ -623,7 +808,7 @@ IRQ.INBUF sta $FFFF,y SELF MODIFIED IRQ.1 pla *------------ IRQ Out IRQ.2 bit #SSC.STATUS.TDRE - beq IRQ.8 no transmition possible.... + beq IRQ.8 no transmission possible.... ldy OUTBUF.TAIL something to transmit ? cpy OUTBUF.HEAD @@ -646,6 +831,14 @@ IRQ.9 sec DRV.CS.END DEVSLOTn08F .BS 1 .DO SSCIRQ=1 +DEVCMD .DA #SSC.CMD.NOP+SSC.CMD.TEIRQ+SSC.CMD.DTR +DEVCTL .DA #SSC.CTL.1S+SSC.CTL.8D+SSC.CTL.CLKINT+SSC.CTL.B9600 + .ELSE +DEVCMD .DA #SSC.CMD.NOP+SSC.CMD.TE+SSC.CMD.RIRQDIS+SSC.CMD.DTR +DEVCTL .DA #SSC.CTL.1S+SSC.CTL.8D+SSC.CTL.CLKINT+SSC.CTL.B115200 + .FIN +DEVFLOWCTRL .BS 1 + .DO SSCIRQ=1 INBUF.TAIL .BS 1 INBUF.HEAD .BS 1 OUTBUF.TAIL .BS 1 @@ -674,11 +867,11 @@ DCB .DA #S.DCB.T.COM .FIN .DA #8 DATA .DA #1 STOP - .DA #S.DCB.COM.P.NONE PARITY - .DA #S.DCB.COM.C.XONXOFF + .DA #'N' PARITY + .DA #'N' FLOW *-------------------------------------- DRV.END MAN SAVE usr/src/shared/x.ssc.drv.s -LOAD usr/src/drv/ssc.i.drv.s +LOAD usr/src/drv/ssc.drv.s ASM diff --git a/SYS/KERNEL.S.DEF.txt b/SYS/KERNEL.S.DEF.txt index ded51756..37438421 100644 --- a/SYS/KERNEL.S.DEF.txt +++ b/SYS/KERNEL.S.DEF.txt @@ -78,8 +78,7 @@ ARG32 .EQ ARG+1 TXTPTR .EQ $B8 *-------------------------------------- .DUMMY - .OR FAC 13 Bytes -BIN.hMem .BS 1 + .OR FAC 12 Bytes BIN.R.CS.Start .BS 2 BIN.R.CS.End .BS 2 BIN.R.End .BS 2 @@ -97,7 +96,8 @@ ENV.bExp .BS 1 .ED *-------------------------------------- .DUMMY - .OR ZPTMP 5 Bytes + .OR ZPTMP 6 Bytes +BIN.hMem .BS 1 PS.bTXT .BS 1 PS.hMem .BS 1 PS.MemPtr .BS 2 diff --git a/SYS/KERNEL.S.INIT.txt b/SYS/KERNEL.S.INIT.txt index 7d6615ae..966ba4db 100644 --- a/SYS/KERNEL.S.INIT.txt +++ b/SYS/KERNEL.S.INIT.txt @@ -153,9 +153,9 @@ Kernel.Init3 sta SETALTZP jsr SysScrInit bcs * - + sta CLRMIXED - + >PUSHWI DEV.CONSOLE >PUSHBI O.RDWR >PUSHBI S.FI.T.TXT @@ -473,7 +473,7 @@ CPU.Init >PUSHWI MSG.CPU lda A2osX.HZ asl tax - + .1 bit VBL //e : Wait VBL high.... bpl .1 @@ -492,11 +492,11 @@ CPU.Init >PUSHWI MSG.CPU pla (4) pha (3) pla (4) - + iny cpy #100 bne .5 - + ldy #0 inc A2osX.CPUSPEED+1 @@ -522,7 +522,7 @@ CPU.Init2c sta CLRIOUDIS bit IO.IIC.CLRVBLIRQ clear //c IRQ -.3 lda #20 +.3 lda #40 .4 pha (3) pla (4) @@ -531,11 +531,11 @@ CPU.Init2c sta CLRIOUDIS dec bne .4 - + iny cpy #100 bne .5 - + inc A2osX.CPUSPEED+1 ldy #0 @@ -798,36 +798,29 @@ DevMgrInit.VSD ldy #VSD.PATCH.SIZE-1 .1 lda $BF41,y cmp VSD.PATCH,y bne .9 - + dey bpl .1 - + php sei bit RRAMWRAMBNK2 bit RRAMWRAMBNK2 sta CLRALTZP - lda $d002 + ldx $d001 sta SETALTZP bit RRAMWRAMBNK1 bit RRAMWRAMBNK1 - sec - sbc #$8F - lsr - lsr - lsr - lsr - tax lda #A2osX.S.VSDRIVE sta A2osX.S,x plp - -.9 rts + +.9 rts *-------------------------------------- VSD.PATCH bit RRAMWRAMBNK2 - jsr $D001 + jsr $D002 bit RRAMWRAMBNK1 rts VSD.PATCH.SIZE .EQ *-VSD.PATCH @@ -879,7 +872,7 @@ IrqMgrInit >LDYAI MSG.IRQ .9 plp sec rts - + .1 cmp #A2osX.HWType.IIc beq .2 @@ -891,10 +884,10 @@ IrqMgrInit >LDYAI MSG.IRQ >LDYAI CORE.IRQ.TCLOCK jsr IrqMgrInit.SetV - + >LDYAI CORE.IRQ.TCLOCK.Off >STYA CORE.Quit+1 - + >LDYAI MSG.IRQ.CLOCK bra .8 @@ -904,7 +897,7 @@ IrqMgrInit >LDYAI MSG.IRQ lda #$60 sta $5fa sta $5fb - + stz $4FF //c ROM FF stz $4FC //c ROM 1,2,3,4,5 plp @@ -987,7 +980,7 @@ IrqMgrInit.TClock sta CLRPAGE2 sta $478,x sta $7f8,x - + sta SETPAGE2 sta $478,x sta $7f8,x diff --git a/SYS/KERNEL.S.MEM.txt b/SYS/KERNEL.S.MEM.txt index 5365e257..ac2742cb 100644 --- a/SYS/KERNEL.S.MEM.txt +++ b/SYS/KERNEL.S.MEM.txt @@ -343,8 +343,8 @@ K.FreeMem.ERR >PUSHWI K.FreeMem.MSG >PUSHA >PUSHBI 2 -.1 >SYSCALL2 printf -* >DEBUG + >SYSCALL2 printf + lda #E.INVH sec rts diff --git a/SYS/KM.VSDRIVE.S.txt b/SYS/KM.VSDRIVE.S.txt index 5c6834e0..ec3a862f 100644 --- a/SYS/KM.VSDRIVE.S.txt +++ b/SYS/KM.VSDRIVE.S.txt @@ -23,14 +23,14 @@ VSDRIVE.Init >LDYAI VSDRIVE.MSG0 jsr VSDRIVE.Check bcs .90 -.1 lda #$C1 Self Modified + stz TmpPtr1 + lda #$C1 + sta TmpPtr1+1 .2 jsr SSC.Detect bcs .99 - stx DRV+1 DRV.Slotn0 - - sta .1+1 Slot Cn + lda TmpPtr1+1 Slot Cn and #$0F pha slot n >LDYAI VSDRIVE.SSCOK @@ -66,8 +66,9 @@ VSDRIVE.Init >LDYAI VSDRIVE.MSG0 .92 pha Push EC >LDYAI VSDRIVE.SRVKO jsr PrintFYA - inc .1+1 - lda .1+1 + + inc TmpPtr1+1 + lda TmpPtr1+1 cmp #$C8 bne .2 Go try next SSC.... @@ -75,12 +76,12 @@ VSDRIVE.Init >LDYAI VSDRIVE.MSG0 jsr PrintFYA rts *-------------------------------------- -VSDRIVE.Check ldx #REGULAR.SIZE +VSDRIVE.Check ldx #COPYRIGHT.LEN sec .1 lda DRV.EntryPoint-1,x - eor REGULAR-1,x + eor COPYRIGHT-1,x bne .9 dex @@ -90,8 +91,7 @@ VSDRIVE.Check ldx #REGULAR.SIZE .9 rts *-------------------------------------- -SSC.Detect stz TmpPtr1 - sta TmpPtr1+1 +SSC.Detect .1 ldx #DEVSIG.Value-DEVSIG.Offset-1 .2 ldy DEVSIG.Offset,x @@ -102,7 +102,18 @@ SSC.Detect stz TmpPtr1 dex bpl .2 - lda TmpPtr1+1 A=SlotCN + clc + rts + +.3 inc TmpPtr1+1 no match, try next slot.... + lda TmpPtr1+1 + cmp #$C8 + bne .1 + + sec + rts +*-------------------------------------- +VSDRIVE.Ping lda TmpPtr1+1 A=SlotCN asl asl asl @@ -110,38 +121,32 @@ SSC.Detect stz TmpPtr1 clc adc #$8F tax X=SlotN0 + + php + sei + stz SSC.RESET-$8F,x - lda #SSC.CTL.CLKINT+SSC.CTL.B115200+SSC.CTL.8D+SSC.CTL.1S+SSC.CMD.NOP + + lda #SSC.CTL.1S+SSC.CTL.8D+SSC.CTL.CLKINT+SSC.CTL.B115200 sta SSC.CTL-$8F,x - lda #SSC.CMD.RIRQDIS+SSC.CMD.TE+SSC.CMD.DTR + + lda #SSC.CMD.NOP+SSC.CMD.RIRQDIS+SSC.CMD.TE+SSC.CMD.DTR sta SSC.CMD-$8F,x - lda TmpPtr1+1 A=Slot Cn, X=n0 - - clc - rts X=SlotN0, A=SlotCN - -.3 inc TmpPtr1+1 no match, try next slot.... - lda TmpPtr1+1 - cmp #$C8 - bne .1 - -.9 sec - rts -*-------------------------------------- -VSDRIVE.Ping ldx DRV+1 DRV.Slotn0 + lda SSC.DATA-$8F,x discard any garbage byte + lda SSC.STATUS-$8F,x clear any IRQ pending stz VSDRIVE.Ping.TO stz VSDRIVE.Ping.TO+1 - + .10 jsr VSDRIVE.IncTimer Wait....... bne .10 ldy #10 .1 lda SSC.STATUS-$8F,x - and #SSC.STATUS.TDRE Ready for transmit? - bne .20 + and #SSC.STATUS.nDCD Ready for transmit? + beq .20 jsr VSDRIVE.IncTimer Wait....... bne .1 @@ -150,13 +155,9 @@ VSDRIVE.Ping ldx DRV+1 DRV.Slotn0 bne .1 lda #1 - sec - rts Time Out..... + bra .9 Time Out..... -.20 stz VSDRIVE.Ping.TO - stz VSDRIVE.Ping.TO+1 - - ldy #5 5 bytes to send +.20 ldy #5 5 bytes to send .2 lda VSDRIVE.CMDS-1,y sta SSC.DATA-$8F,x @@ -169,20 +170,20 @@ VSDRIVE.Ping ldx DRV+1 DRV.Slotn0 bne .3 lda #2 - sec - rts + bra .9 .4 dey bne .2 next byte - lda #521^$ffff 522 bytes to recieve + lda #521^$ffff 522 bytes to receive sta VSDRIVE.Ping.BC lda /521^$ffff sta VSDRIVE.Ping.BC+1 + stz VSDRIVE.Ping.TO stz VSDRIVE.Ping.TO+1 - ldy #3 EC if no byte recieved + ldy #3 EC=3 if no byte received .5 lda SSC.STATUS-$8F,x and #SSC.STATUS.RDRF incoming char? @@ -192,6 +193,9 @@ VSDRIVE.Ping ldx DRV+1 DRV.Slotn0 bne .5 tya + +.9 stz SSC.RESET-$8F,x + plp sec rts @@ -204,6 +208,10 @@ VSDRIVE.Ping ldx DRV+1 DRV.Slotn0 inc VSDRIVE.Ping.BC+1 bne .5 + lda #SSC.CMD.NOP+SSC.CMD.RIRQDIS+SSC.CMD.TE + sta SSC.CMD-$8F,x + + plp clc rts *-------------------------------------- @@ -270,7 +278,7 @@ VSDRIVE.SetSlot ldx #2 Starts at Slot1 rts sec from CPX *-------------------------------------- -VSDRIVE.Install ldx #PATCH.SIZE +VSDRIVE.Install ldx #PATCH.LEN .1 lda PATCH-1,x sta DRV.EntryPoint-1,x @@ -287,6 +295,31 @@ VSDRIVE.Install ldx #PATCH.SIZE dex bne .2 + lda TmpPtr1+1 A=SlotCN + asl + asl + asl + asl + + ora #SSC.DATA + sta DRV.SSCSend.D+1 + sta DRV.SSCGet.D+1 + + inc #SSC.STATUS + + sta DRV.SSCSend.S+1 + sta DRV.SSCGet.S+1 + sta DRV.SSCClose.S+1 + + inc #SSC.CMD + + sta DRV.INIT.C+1 + sta DRV.SSCClose.C+1 + + lda TmpPtr1+1 A=SlotCN + and #$0F + sta DRV.START + bit RROMBNK1 clc @@ -308,15 +341,15 @@ VSDRIVE.OK .AZ "VSDRIVE Driver Successfully Installed.\n" *-------------------------------------- * ProDOS $BE41->$BE4B Patch for switching to BANK2 (10 bytes) *-------------------------------------- -REGULAR .AS "(C)APPLE " -REGULAR.SIZE .EQ *-REGULAR +COPYRIGHT .AS "(C)APPLE " +COPYRIGHT.LEN .EQ *-COPYRIGHT PATCH .PH DRV.EntryPoint bit RRAMWRAMBNK2 - jsr $D001 + jsr $D002 bit RRAMWRAMBNK1 rts .EP -PATCH.SIZE .EQ *-PATCH +PATCH.LEN .EQ *-PATCH *-------------------------------------- * Driver *-------------------------------------- @@ -327,9 +360,11 @@ PATCH.SIZE .EQ *-PATCH * CMD = $C5+OP+BLKLO+BLKHI+CHKSUM * DO NOT trash DRV.COMMAND...DRV.BLKNUM as ProDOS * reuses them after Block operation -* A1,A2 are used by Disk II Driver, +* PC,A1,A2 are used by Disk II Driver, * so we use it safely as Tmp Ptr *-------------------------------------- +DRV.PCL .EQ $3A +DRV.PCH .EQ $3B DRV.A1L .EQ $3C DRV.A1H .EQ $3D DRV.A2L .EQ $3E @@ -341,10 +376,8 @@ DRV.BLKNUM .EQ $46 *-------------------------------------- DRV .PH $D001 Main LC Bnk 2 $D001->$DFFF -DRV.START ldx #$ff Self Modified - - bit RRAMWRAMBNK2 - +DRV.START .BS 1 SELF MODIFIED slot 0n + lda DRV.COMMAND S=0,R=1,W=2,F=3 bne .1 @@ -355,14 +388,16 @@ DRV.START ldx #$ff Self Modified clc rts -.9 lda #MLI.E.IO -* sec - rts - .1 cmp #3 beq .8 Format .... - bcs .9 + bcc DRV.START.OK + +DRV.START.IO lda #MLI.E.IO + sec + rts +DRV.START.OK tax + ora #2 W=2,R=3 ldy DRV.UNITNUM @@ -375,6 +410,7 @@ DRV.START ldx #$ff Self Modified eor DRV.BLKNUM eor DRV.BLKNUM+1 sta DRV.CmdBuf.Sum Compute & store CheckSum + lda DRV.BLKNUM sta DRV.CmdBuf.BlkL @@ -385,6 +421,9 @@ DRV.START ldx #$ff Self Modified *-------------------------------------- php sei + +* lda #SSC.CMD.NOP+SSC.CMD.RIRQDIS+SSC.CMD.TE+SSC.CMD.DTR +DRV.INIT.C inc SSC.CMD SELF MODIFIED ldy #4 Send 5 bytes including Sum @@ -400,8 +439,7 @@ DRV.START ldx #$ff Self Modified dey bpl .5 *-------------------------------------- - lda DRV.COMMAND - dec 1-1=0 if read + dex 1-1=0 if read bne DRV.DO.CMD.W go write *-------------------------------------- * Read block @@ -411,6 +449,7 @@ DRV.DO.CMD.R ldy #3 Read Back and check 4 bytes .1 jsr DRV.SSCGet eor DRV.CmdBuf.BlkH,y bne DRV.DO.CMD.ERR + dey bpl .1 @@ -428,36 +467,31 @@ DRV.DO.CMD.R ldy #3 Read Back and check 4 bytes * Y=0 from TAY - stz DRV.CmdBuf.Sum +* stz DRV.CmdBuf.Sum sec - -.3 jsr DRV.SSCGet + .HS 90 BCC +.3 clc + +.4 jsr DRV.SSCGet jsr $102 eor DRV.CmdBuf.Sum sta DRV.CmdBuf.Sum iny - bne .3 - - bcc .4 + bne .4 inc DRV.BUFF+1 - clc - bcc .3 + bcs .3 + + dec DRV.BUFF+1 + dec DRV.BUFF+1 -.4 dec DRV.BUFF+1 jsr DRV.SSCGet eor DRV.CmdBuf.Sum - bne DRV.DO.CMD.ERR - - plp - clc - rts A=0,CC from bcc .4 + beq DRV.DO.CMD.OK *-------------------------------------- -DRV.DO.CMD.ERR plp - lda #MLI.E.IO - sec - rts +DRV.DO.CMD.ERR jsr DRV.SSCClose + jmp DRV.START.IO *-------------------------------------- * Write Block *-------------------------------------- @@ -470,21 +504,21 @@ DRV.DO.CMD.W lda #$B1 lda (),y stz DRV.CmdBuf.Sum sec + .HS 90 BCC +.1 clc -.1 jsr $102 +.2 jsr $102 jsr DRV.SSCSend eor DRV.CmdBuf.Sum sta DRV.CmdBuf.Sum iny - bne .1 - - bcc .2 + bne .2 inc DRV.BUFF+1 - clc - bcc .1 - -.2 dec DRV.BUFF+1 + bcs .1 + + dec DRV.BUFF+1 + dec DRV.BUFF+1 * A = DRV.CmdBuf.Sum @@ -499,33 +533,41 @@ DRV.DO.CMD.W lda #$B1 lda (),y dey bpl .3 - +*-------------------------------------- +DRV.DO.CMD.OK +*-------------------------------------- +DRV.SSCClose +* lda #SSC.CMD.NOP+SSC.CMD.RIRQDIS+SSC.CMD.TE +DRV.SSCClose.C dec SSC.CMD SELF MODIFIED +DRV.SSCClose.S bit SSC.STATUS SELF MODIFIED + bmi DRV.SSCClose.S plp clc - rts + rts *-------------------------------------- DRV.SSCSend pha -.1 lda SSC.STATUS-$8F,x +DRV.SSCSend.S lda SSC.STATUS SELF MODIFIED and #SSC.STATUS.TDRE Outgoing char? - beq .1 + beq DRV.SSCSend.S pla - - sta SSC.DATA-$8F,x + +DRV.SSCSend.D sta SSC.DATA SELF MODIFIED rts *-------------------------------------- -DRV.SSCGet lda SSC.STATUS-$8F,x +DRV.SSCGet +DRV.SSCGet.S lda SSC.STATUS SELF MODIFIED and #SSC.STATUS.RDRF incoming char? beq DRV.SSCGet - lda SSC.DATA-$8F,x +DRV.SSCGet.D lda SSC.DATA SELF MODIFIED rts *-------------------------------------- DRV.102 bit RRAMWRAMBNK1 sta (DRV.BUFF),y bit RRAMWRAMBNK2 - rts + rts DRV.102.LEN .EQ *-DRV.102 *-------------------------------------- DRV.CmdBuf.Sum .BS 1 Reverse order for dey