diff --git a/.Floppies/A2OSX.BOOTHD.woz b/.Floppies/A2OSX.BOOTHD.woz index 2953156b..447edadf 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 9496c83f..70c2a414 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 e444ea8a..2acb5a75 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 f4f65ab6..3d4c3672 100644 --- a/BIN/FORMAT.S.txt +++ b/BIN/FORMAT.S.txt @@ -384,7 +384,10 @@ CS.RUN.LL.DISKII sec rts -.8 >PUSHW L.MSG.CRLF +.8 ldx #0 + jsr CS.RUN.SeekToX + + >PUSHW L.MSG.CRLF >PUSHBI 0 >SYSCALL PrintF bcs .9 @@ -395,24 +398,20 @@ CS.RUN.LL.DISKII bit bVerify bpl .80 - ldx #0 - jsr CS.RUN.SeekToX - jsr CS.RUN.LL.DISKII.V bcs .99 jsr CS.RUN.MotorOn - lda #20 + lda #5 jsr CS.RUN.Wait -.80 - >PUSHB DSSS0000 +.80 >PUSHB DSSS0000 >LIBCALL hLIBBLKDEV,LIBBLKDEV.D2Recalibrate - lda #20 + lda #5 jsr CS.RUN.Wait - + clc .99 rts *-------------------------------------- CS.RUN.LL.DISKII.V diff --git a/BIN/LS.S.txt b/BIN/LS.S.txt index b819a62b..76c4c30c 100644 --- a/BIN/LS.S.txt +++ b/BIN/LS.S.txt @@ -78,7 +78,7 @@ J.CS.RUN.PRINT .DA CS.RUN.PRINT.REG CS.INIT clc rts *-------------------------------------- -CS.RUN +CS.RUN .1 >INC.G ArgCount >SYSCALL ArgV bcs .6 diff --git a/BIN/PPPTEST.S.txt b/BIN/PPPTEST.S.txt new file mode 100644 index 00000000..c7512c9c --- /dev/null +++ b/BIN/PPPTEST.S.txt @@ -0,0 +1,446 @@ +NEW + AUTO 3,1 + .LIST OFF + .OP 65C02 + .OR $2000 + .TF root/ppptest +*-------------------------------------- + .INB inc/macros.i + .INB inc/a2osx.i +*-------------------------------------- +TIMEOUT.MAX .EQ 200 20 sec. +BUFSIZE .EQ 256 +*-------------------------------------- + .DUMMY + .OR ZPBIN +ZS.START +ZPBufPtr .BS 2 +ZPBufLen .BS 2 +ZPPtr1 .BS 2 +ZPPtr2 .BS 2 + +FCS .BS 2 +hBuf .BS 1 +hDev .BS 1 +TimeOut .BS 1 +ZS.END + .ED +*-------------------------------------- +* File Header (16 Bytes) +*-------------------------------------- +CS.START cld + jmp (.1,x) + .DA #$61 6502,Level 1 (65c02) + .DA #1 BIN Layout Version 1 + .DA #S.PS.F.EVENT S.PS.F + .DA #0 + .DA CS.END-CS.START Code Size (without Constants) + .DA DS.END-DS.START Data Segment Size + .DA #32 Stack Size + .DA #ZS.END-ZS.START Zero Page Size + .DA 0 +*-------------------------------------- +.1 .DA CS.INIT + .DA CS.RUN + .DA CS.DOEVENT + .DA CS.QUIT +L.MSG.USAGE .DA MSG.USAGE +L.MSG.DEVOK .DA MSG.DEVOK +L.MSG.AT .DA MSG.AT +L.MSG.BUFLEN .DA MSG.BUFLEN +L.MSG.HEXDUMP .DA MSG.HEXDUMP +L.PPP.1 .DA PPP.1 + .DA 0 +*-------------------------------------- +CS.INIT clc + rts +*-------------------------------------- +CS.RUN lda #1 + >SYSCALL ArgV + bcs .9 + + >PUSHYA + >PUSHBI O.RDWR + >PUSHBI 0 type + >PUSHWZ auxtype + >SYSCALL FOpen + bcs .99 + + sta hDev + >LDYA L.MSG.DEVOK + >SYSCALL PutS + + >LDYAI BUFSIZE + >SYSCALL GetMem + bcs .99 + + >STYA ZPBufPtr + stx hBuf + + bra CS.RUN.TEST +* jmp CS.RUN.LOOP + +.9 >LDYA L.MSG.USAGE + >SYSCALL PutS + + lda #E.SYN + sec +.99 rts +*-------------------------------------- +CS.RUN.TEST +* jsr ATInit +* bcs .9 + + >LDYAI PPP.1.LEN + >STYA ZPBufLen + >LDYA L.PPP.1 + jsr PPPFCS16 + + >LDYA L.PPP.1 + jsr DumpBuf + + >PUSHWI PPP.1.LEN + >PUSHW L.PPP.1 + lda hDev + + >SYSCALL FWrite + bcs .9 + + >SLEEP + + >PUSHWI BUFSIZE + >PUSHW ZPBufPtr + lda hDev + >SYSCALL FRead + bcs .9 + >STYA ZPBufLen + + >LDYA ZPBufPtr + jsr DumpBuf + + lda #0 + sec + +.9 +CS.RUN.RTS rts +*-------------------------------------- +CS.RUN.LOOP >SLEEP + + lda hDev + >SYSCALL FEOF + bcs CS.RUN.RTS + tay + bne .1 EOF, no char + + >PUSHWI BUFSIZE + >PUSHW ZPBufPtr + lda hDev + >SYSCALL FRead + bcs CS.RUN.RTS + + >PUSHYA len + >PUSHW ZPBufPtr + ldy #S.PS.hStdOut + lda (pPS),y + + >SYSCALL FWrite + bcs .9 + +.1 ldy #S.PS.hStdIn + lda (pPS),y + + >SYSCALL FEOF + bcs .9 + tay + bne CS.RUN.LOOP EOF = true, no char from STDIN + + >PUSHWI BUFSIZE + >PUSHW ZPBufPtr + ldy #S.PS.hStdIn + lda (pPS),y + >SYSCALL FRead + bcs .9 + + tax + lda (ZPBufPtr) + cmp #$14 Ctrl-T + beq .9 + + txa + + >PUSHYA len + >PUSHW ZPBufPtr + lda hDev + >SYSCALL FWrite + bcs .9 + jmp CS.RUN.LOOP + +.9 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 hDev + beq .1 + + >SYSCALL FClose + +.1 lda hBuf + beq .2 + + >SYSCALL FreeMem + +.2 clc + rts +*-------------------------------------- +ATInit lda #250 + sta TimeOut + + >PUSHWI MSG.AT.LEN + >PUSHW L.MSG.AT + lda hDev + >SYSCALL FWrite + bcs .9 + +.1 lda hDev + >SYSCALL FEOF + bcs .9 + + tay + beq .2 + + >SLEEP + + dec TimeOut + bne .1 + + rts + +.2 >PUSHWI BUFSIZE + >PUSHW ZPBufPtr + lda hDev + >SYSCALL FRead + bcs .9 + + >PUSHYA len + >PUSHW ZPBufPtr + ldy #S.PS.hStdOut + lda (pPS),y + bcc .1 + +.9 rts +*-------------------------------------- +* U16 fcs = 0xFFFF; +* +* while (len--) +* { +* fcs=(fcs >> 8) ^ fcstab[(fcs ^ *cp++) & 0xff]; +* } +* return (~fcs); +*-------------------------------------- +PPPFCS16 >STYA ZPPtr1 + + lda #$ff + sta FCS + sta FCS+1 + + lda ZPBufLen + sec + sbc #4 minus 7E .... FCS FCS 7E + eor #$ff + sta ZPPtr2 + + lda ZPBufLen+1 + sbc #0 + eor #$ff + sta ZPPtr2+1 + +.1 inc ZPPtr2 + bne .2 + + inc ZPPtr2+1 + beq .8 + +.2 inc ZPPtr1 + bne .3 + + inc ZPPtr1+1 + +.3 lda (ZPPtr1) + eor FCS + tax + + lda FCS.LO,x + eor FCS+1 + sta FCS + + lda FCS.HI,x + sta FCS+1 + + bra .1 + +.8 lda FCS+1 + eor #$ff + ldy #1 + sta (ZPPtr1),y + + lda FCS + eor #$ff + iny + sta (ZPPtr1),y + + rts +*-------------------------------------- +DumpBuf >STYA ZPPtr1 + + >PUSHW L.MSG.BUFLEN + >PUSHW ZPBufLen + >PUSHBI 2 + >SYSCALL PrintF + bcs .9 + +.1 >PUSHW L.MSG.HEXDUMP + + ldy #0 + +.2 >PUSHB (ZPPtr1),y + iny + cpy #16 + bne .2 + + >PUSHBI 16 + >SYSCALL PrintF + bcs .9 + + lda ZPPtr1 + adc #16 + sta ZPPtr1 + lda ZPPtr1+1 + adc #0 + sta ZPPtr1+1 + + lda ZPBufLen + sec + sbc #16 + sta ZPBufLen + lda ZPBufLen+1 + sbc #0 + sta ZPBufLen+1 + bcc .9 + ora ZPBufLen + bne .1 + + clc + +.9 rts +*-------------------------------------- +CS.END +MSG.USAGE .AZ "Usage : TERM device " +MSG.DEVOK .AZ "Openning Device..." +MSG.AT .AS "ATI0" + .HS 0D0A +MSG.AT.LEN .EQ *-MSG.AT +MSG.BUFLEN .AZ "BufLen:%H\r\n" +MSG.HEXDUMP .AZ "%h:%h:%h:%h:%h:%h:%h:%h:%h:%h:%h:%h:%h:%h:%h:%h\r\n" +*-------------------------------------- +FCS.LO .DA #$0000,#$1189,#$2312,#$329b,#$4624,#$57ad,#$6536,#$74bf + .DA #$8c48,#$9dc1,#$af5a,#$bed3,#$ca6c,#$dbe5,#$e97e,#$f8f7 + .DA #$1081,#$0108,#$3393,#$221a,#$56a5,#$472c,#$75b7,#$643e + .DA #$9cc9,#$8d40,#$bfdb,#$ae52,#$daed,#$cb64,#$f9ff,#$e876 + .DA #$2102,#$308b,#$0210,#$1399,#$6726,#$76af,#$4434,#$55bd + .DA #$ad4a,#$bcc3,#$8e58,#$9fd1,#$eb6e,#$fae7,#$c87c,#$d9f5 + .DA #$3183,#$200a,#$1291,#$0318,#$77a7,#$662e,#$54b5,#$453c + .DA #$bdcb,#$ac42,#$9ed9,#$8f50,#$fbef,#$ea66,#$d8fd,#$c974 + .DA #$4204,#$538d,#$6116,#$709f,#$0420,#$15a9,#$2732,#$36bb + .DA #$ce4c,#$dfc5,#$ed5e,#$fcd7,#$8868,#$99e1,#$ab7a,#$baf3 + .DA #$5285,#$430c,#$7197,#$601e,#$14a1,#$0528,#$37b3,#$263a + .DA #$decd,#$cf44,#$fddf,#$ec56,#$98e9,#$8960,#$bbfb,#$aa72 + .DA #$6306,#$728f,#$4014,#$519d,#$2522,#$34ab,#$0630,#$17b9 + .DA #$ef4e,#$fec7,#$cc5c,#$ddd5,#$a96a,#$b8e3,#$8a78,#$9bf1 + .DA #$7387,#$620e,#$5095,#$411c,#$35a3,#$242a,#$16b1,#$0738 + .DA #$ffcf,#$ee46,#$dcdd,#$cd54,#$b9eb,#$a862,#$9af9,#$8b70 + .DA #$8408,#$9581,#$a71a,#$b693,#$c22c,#$d3a5,#$e13e,#$f0b7 + .DA #$0840,#$19c9,#$2b52,#$3adb,#$4e64,#$5fed,#$6d76,#$7cff + .DA #$9489,#$8500,#$b79b,#$a612,#$d2ad,#$c324,#$f1bf,#$e036 + .DA #$18c1,#$0948,#$3bd3,#$2a5a,#$5ee5,#$4f6c,#$7df7,#$6c7e + .DA #$a50a,#$b483,#$8618,#$9791,#$e32e,#$f2a7,#$c03c,#$d1b5 + .DA #$2942,#$38cb,#$0a50,#$1bd9,#$6f66,#$7eef,#$4c74,#$5dfd + .DA #$b58b,#$a402,#$9699,#$8710,#$f3af,#$e226,#$d0bd,#$c134 + .DA #$39c3,#$284a,#$1ad1,#$0b58,#$7fe7,#$6e6e,#$5cf5,#$4d7c + .DA #$c60c,#$d785,#$e51e,#$f497,#$8028,#$91a1,#$a33a,#$b2b3 + .DA #$4a44,#$5bcd,#$6956,#$78df,#$0c60,#$1de9,#$2f72,#$3efb + .DA #$d68d,#$c704,#$f59f,#$e416,#$90a9,#$8120,#$b3bb,#$a232 + .DA #$5ac5,#$4b4c,#$79d7,#$685e,#$1ce1,#$0d68,#$3ff3,#$2e7a + .DA #$e70e,#$f687,#$c41c,#$d595,#$a12a,#$b0a3,#$8238,#$93b1 + .DA #$6b46,#$7acf,#$4854,#$59dd,#$2d62,#$3ceb,#$0e70,#$1ff9 + .DA #$f78f,#$e606,#$d49d,#$c514,#$b1ab,#$a022,#$92b9,#$8330 + .DA #$7bc7,#$6a4e,#$58d5,#$495c,#$3de3,#$2c6a,#$1ef1,#$0f78 +*-------------------------------------- +FCS.HI .DA /$0000,/$1189,/$2312,/$329b,/$4624,/$57ad,/$6536,/$74bf + .DA /$8c48,/$9dc1,/$af5a,/$bed3,/$ca6c,/$dbe5,/$e97e,/$f8f7 + .DA /$1081,/$0108,/$3393,/$221a,/$56a5,/$472c,/$75b7,/$643e + .DA /$9cc9,/$8d40,/$bfdb,/$ae52,/$daed,/$cb64,/$f9ff,/$e876 + .DA /$2102,/$308b,/$0210,/$1399,/$6726,/$76af,/$4434,/$55bd + .DA /$ad4a,/$bcc3,/$8e58,/$9fd1,/$eb6e,/$fae7,/$c87c,/$d9f5 + .DA /$3183,/$200a,/$1291,/$0318,/$77a7,/$662e,/$54b5,/$453c + .DA /$bdcb,/$ac42,/$9ed9,/$8f50,/$fbef,/$ea66,/$d8fd,/$c974 + .DA /$4204,/$538d,/$6116,/$709f,/$0420,/$15a9,/$2732,/$36bb + .DA /$ce4c,/$dfc5,/$ed5e,/$fcd7,/$8868,/$99e1,/$ab7a,/$baf3 + .DA /$5285,/$430c,/$7197,/$601e,/$14a1,/$0528,/$37b3,/$263a + .DA /$decd,/$cf44,/$fddf,/$ec56,/$98e9,/$8960,/$bbfb,/$aa72 + .DA /$6306,/$728f,/$4014,/$519d,/$2522,/$34ab,/$0630,/$17b9 + .DA /$ef4e,/$fec7,/$cc5c,/$ddd5,/$a96a,/$b8e3,/$8a78,/$9bf1 + .DA /$7387,/$620e,/$5095,/$411c,/$35a3,/$242a,/$16b1,/$0738 + .DA /$ffcf,/$ee46,/$dcdd,/$cd54,/$b9eb,/$a862,/$9af9,/$8b70 + .DA /$8408,/$9581,/$a71a,/$b693,/$c22c,/$d3a5,/$e13e,/$f0b7 + .DA /$0840,/$19c9,/$2b52,/$3adb,/$4e64,/$5fed,/$6d76,/$7cff + .DA /$9489,/$8500,/$b79b,/$a612,/$d2ad,/$c324,/$f1bf,/$e036 + .DA /$18c1,/$0948,/$3bd3,/$2a5a,/$5ee5,/$4f6c,/$7df7,/$6c7e + .DA /$a50a,/$b483,/$8618,/$9791,/$e32e,/$f2a7,/$c03c,/$d1b5 + .DA /$2942,/$38cb,/$0a50,/$1bd9,/$6f66,/$7eef,/$4c74,/$5dfd + .DA /$b58b,/$a402,/$9699,/$8710,/$f3af,/$e226,/$d0bd,/$c134 + .DA /$39c3,/$284a,/$1ad1,/$0b58,/$7fe7,/$6e6e,/$5cf5,/$4d7c + .DA /$c60c,/$d785,/$e51e,/$f497,/$8028,/$91a1,/$a33a,/$b2b3 + .DA /$4a44,/$5bcd,/$6956,/$78df,/$0c60,/$1de9,/$2f72,/$3efb + .DA /$d68d,/$c704,/$f59f,/$e416,/$90a9,/$8120,/$b3bb,/$a232 + .DA /$5ac5,/$4b4c,/$79d7,/$685e,/$1ce1,/$0d68,/$3ff3,/$2e7a + .DA /$e70e,/$f687,/$c41c,/$d595,/$a12a,/$b0a3,/$8238,/$93b1 + .DA /$6b46,/$7acf,/$4854,/$59dd,/$2d62,/$3ceb,/$0e70,/$1ff9 + .DA /$f78f,/$e606,/$d49d,/$c514,/$b1ab,/$a022,/$92b9,/$8330 + .DA /$7bc7,/$6a4e,/$58d5,/$495c,/$3de3,/$2c6a,/$1ef1,/$0f78 +*-------------------------------------- +PPP.1 .HS 7E + +* .HS ff.03.C0.21.01.01.00.17.02.06.00.0a.00.00.05.06 +* .HS 00.2a.2b.78.07.02.08.02.0d.03.06 +* .HS A5.F8 + +PPP.1.START .HS FF03 + .HS C021 LCP +PPP.1.LCP .HS 01 Configure-Request + .HS 01 ID + .DA /PPP.1.LCP.LEN,#PPP.1.LCP.LEN + .HS 01.04.05DC MRU + .HS 02.06.000A0000 ACCM + .HS 05.06.2A2B7807 MAGIC +PPP.1.LCP.LEN .EQ *-PPP.1.LCP + .BS 2 FCS + .HS 7E +PPP.1.LEN .EQ *-PPP.1 +*-------------------------------------- + .DUMMY + .OR 0 +DS.START +DS.END + .ED +*-------------------------------------- +MAN +SAVE root/ppptest.s +ASM diff --git a/BIN/SH.S.CMD.txt b/BIN/SH.S.CMD.txt index 7306ee7a..10c76f38 100644 --- a/BIN/SH.S.CMD.txt +++ b/BIN/SH.S.CMD.txt @@ -101,8 +101,8 @@ CMD.CD.YA >PUSHYA .12 >LDYA ZPPtr1 jsr IO.StatYA bcs .19 - - cmp #S.FI.T.DIR + + cmp /S.STAT.MODE.DIR beq .11 lda #MLI.E.INVPATH @@ -431,7 +431,7 @@ CMD.RD lda (ZPArgVBufPtr) jsr IO.StatArgVBufPtr bcs .99 - cmp #S.FI.T.DIR + cmp /S.STAT.MODE.DIR bne CMD.REN.CSYN >LDYA ZPArgVBufPtr diff --git a/BIN/SH.S.EXP.txt b/BIN/SH.S.EXP.txt index 12f3fde4..72e79f5c 100644 --- a/BIN/SH.S.EXP.txt +++ b/BIN/SH.S.EXP.txt @@ -156,7 +156,7 @@ EXP.OP.UNARY.ESYN EXP.OP.UNARY.D jsr IO.StatArgVBufPtr bcs EXP.OP.UNARY.DEF.9 - cmp #S.FI.T.DIR + cmp /S.STAT.MODE.DIR bne EXP.OP.UNARY.DEF.9 bra EXP.OP.UNARY.DEF.8 @@ -167,7 +167,7 @@ EXP.OP.UNARY.E jsr IO.StatArgVBufPtr EXP.OP.UNARY.F jsr IO.StatArgVBufPtr bcs EXP.OP.UNARY.DEF.9 - cmp #S.FI.T.DIR + cmp /S.STAT.MODE.DIR beq EXP.OP.UNARY.DEF.9 EXP.OP.UNARY.DEF.8 diff --git a/BIN/SH.S.IO.txt b/BIN/SH.S.IO.txt index 75d12795..3e9bb930 100644 --- a/BIN/SH.S.IO.txt +++ b/BIN/SH.S.IO.txt @@ -155,8 +155,9 @@ IO.StatYA >PUSHYA >SYSCALL Stat bcs .9 - ldy #S.STAT.P.TYPE + ldy #S.STAT.MODE+1 lda (ZPCLBuf),y + and #$F0 .9 rts *-------------------------------------- diff --git a/BIN/UNPAK.S.txt b/BIN/UNPAK.S.txt index 87debe5f..d7af7563 100644 --- a/BIN/UNPAK.S.txt +++ b/BIN/UNPAK.S.txt @@ -317,9 +317,10 @@ CS.RUN.CheckDir >PUSHW ZPFullPathPtr rts -.1 ldy #STAT+S.STAT.P.TYPE +.1 ldy #STAT+S.STAT.MODE lda (pData),y - cmp #$F + and #$F0 + cmp /S.STAT.MODE.DIR bne .99 clc rts diff --git a/BIN/WC.S.txt b/BIN/WC.S.txt index cab98646..0e592794 100644 --- a/BIN/WC.S.txt +++ b/BIN/WC.S.txt @@ -184,9 +184,11 @@ CS.RUN.LOOP ldy #S.PS.hStdIn jsr CS.RUN.DEV bcc CS.RUN.LOOP rts -.5 ldy #S.STAT.P.TYPE + +.5 ldy #S.STAT.MODE+1 lda (ZPFileStat),y - cmp #$0F Directory ? + and #$F0 + cmp /S.STAT.MODE.DIR bne .6 jsr CS.RUN.DIR diff --git a/DRV/PPPSSC.DRV.S.txt b/DRV/PPPSSC.DRV.S.txt index 1bb4ef3e..43131e8e 100644 --- a/DRV/PPPSSC.DRV.S.txt +++ b/DRV/PPPSSC.DRV.S.txt @@ -13,6 +13,9 @@ 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 @@ -53,11 +56,15 @@ L.FD.DEV .DA FD.DEV L.FD.DEV.NAME .DA FD.DEV.NAME L.ETCFILE .DA ETCFILE L.MSG.ETCFILE .DA MSG.ETCFILE -L.MSG.BUFLEN .DA MSG.BUFLEN +L.MSG.DUMPBUF .DA MSG.DUMPBUFS + .DA MSG.DUMPBUFR L.MSG.HEXDUMP .DA MSG.HEXDUMP -L.PPP.CfgReg .DA PPP.CfgReg +L.MSG.STRING .DA MSG.STRING +L.PPP.LCPReq .DA PPP.LCPReq +L.PPP.IPCPReq .DA PPP.IPCPReq L.RCV.Buf .DA RCV.Buf L.RCV.Bufp1 .DA RCV.Buf+1 +L.RCV.Bufp2 .DA RCV.Buf+2 .DA 0 End Of Reloc Table *-------------------------------------- Dev.Detect >STYA ZPArgsPtr @@ -107,7 +114,7 @@ Dev.Detect >STYA ZPArgsPtr clc adc #$8F sta DEVSLOTn08F - + jsr SSC.Init jsr PPP.ETCFILE jsr PPP.Init @@ -131,14 +138,14 @@ Dev.Detect >STYA ZPArgsPtr >PUSHW L.FD.DEV.NAME >SYSCALL MKDev bcs .9 - + lda FD.DEV.NAME+3 and #$0F tax lda #A2osX.S.NIC sta A2osX.S,x -.9 +.9 Dev.Detect.RTS rts *-------------------------------------- PPP.ETCFILE >PUSHW L.ETCFILE @@ -149,7 +156,7 @@ PPP.ETCFILE >PUSHW L.ETCFILE bcs Dev.Detect.RTS sta hETCFILE - + >PUSHW L.MSG.ETCFILE >PUSHW L.ETCFILE >PUSHBI 2 @@ -164,25 +171,30 @@ PPP.ETCFILE >PUSHW L.ETCFILE lda RCV.Buf cmp #'?' bne .7 - + >LDYA L.RCV.Buf >SYSCALL PutS - + >LDYA L.RCV.Bufp1 jsr SSC.WriteYA bcs .9 - + .2 jsr SSC.Read bcs .9 - + tya beq .2 - + lda #0 sta RCV.Buf,y - >LDYA L.RCV.Buf - >SYSCALL PutS - + + >PUSHW L.MSG.STRING + tya + >PUSHA + >PUSHW L.RCV.Bufp2 + >PUSHBI 3 + >SYSCALL PrintF + .7 bra .1 .8 cmp #MLI.E.EOF @@ -190,7 +202,7 @@ PPP.ETCFILE >PUSHW L.ETCFILE lda #0 clc - + .9 php pha lda hETCFILE @@ -200,36 +212,53 @@ PPP.ETCFILE >PUSHW L.ETCFILE .99 rts *-------------------------------------- -PPP.Init >LDYAI PPP.CfgReg.LEN +PPP.Init >LDYAI PPP.LCPReq.LEN >STYA ZPBufLen - >LDYA L.PPP.CfgReg + >LDYA L.PPP.LCPReq jsr PPPFCS16 - >LDYA L.PPP.CfgReg + >LDYA L.PPP.LCPReq + ldx #0 jsr DumpBuf - - >LDYA L.PPP.CfgReg - ldx #PPP.CfgReg.LEN + + >LDYA L.PPP.LCPReq + ldx #PPP.LCPReq.LEN jsr SSC.WriteYAX bcs .9 - + + >LDYAI PPP.IPCPReq.LEN + >STYA ZPBufLen + >LDYA L.PPP.IPCPReq + jsr PPPFCS16 + + >LDYA L.PPP.IPCPReq + ldx #0 + jsr DumpBuf + + >LDYA L.PPP.IPCPReq + ldx #PPP.IPCPReq.LEN + + jsr SSC.WriteYAX + bcs .9 + .1 jsr SSC.Read bcs .9 - + tya beq .1 - + sty ZPBufLen stz ZPBufLen+1 - + >LDYA L.RCV.Buf + ldx #2 jsr DumpBuf sec - + * clc -.9 rts +.9 rts *-------------------------------------- SSC.Init ldx DEVSLOTn08F stz SSC.RESET-$8F,x @@ -254,74 +283,102 @@ SSC.WriteYA >STYA ZPPtr1 lda #C.CR sta (ZPPtr1),y iny - + lda #C.LF sta (ZPPtr1),y iny - + sty Len - + bra SSC.Write SSC.WriteYAX >STYA ZPPtr1 stx Len - + SSC.Write php sei - + ldx DEVSLOTn08F - - lda SSC.STATUS-$8F,x + + ldy #0 + +.1 phy + + ldy #0 + +.2 lda SSC.STATUS-$8F,x bit #SSC.STATUS.nDSR true when 0 bne .9 - ldy #0 - -.1 lda SSC.STATUS-$8F,x - and #SSC.STATUS.TDRE Register Empty ? - beq .1 + bit #SSC.STATUS.TDRE Register Empty ? + bne .3 + + iny + bne .2 + +.9 lda #MLI.E.IO + plp + sec + rts + +.3 ply lda (ZPPtr1),y + pha + and #$7F + cmp #C.XON + beq .4 + + cmp #C.XOFF + bne .6 + +.4 lda #$7D + sta SSC.DATA-$8F,x + +.5 lda SSC.STATUS-$8F,x + bit #SSC.STATUS.TDRE + beq .5 + + pla + ora #$20 + .HS F0 BEQ + +.6 pla + sta SSC.DATA-$8F,x iny cpy Len bne .1 -.2 lda SSC.STATUS-$8F,x - and #SSC.STATUS.TDRE Register Empty ? + plp clc rts - -.9 plp - lda #MLI.E.IO - sec - rts *-------------------------------------- SSC.Read php sei - + ldx DEVSLOTn08F - + ldy #0 - -.1 lda SSC.STATUS-$8F,x + +.1 phy + + ldy #0 + +.2 lda SSC.STATUS-$8F,x bit #SSC.STATUS.nDSR true when 0 bne .9 - - phy - ldy #0 - -.2 bit #SSC.STATUS.RDRF incoming char? + bit #SSC.STATUS.RDRF incoming char? bne .3 - - dey + + iny bne .2 - + ply - + plp clc rts @@ -331,45 +388,56 @@ SSC.Read php lda SSC.DATA-$8F,x sta RCV.Buf,y iny - + bra .1 - + .9 lda #MLI.E.IO plp sec - rts + rts *-------------------------------------- DumpBuf >STYA ZPPtr1 - >PUSHW L.MSG.BUFLEN + >PUSHW L.MSG.DUMPBUF,x >PUSHW ZPBufLen >PUSHBI 2 >SYSCALL PrintF bcs .9 + stz ZPPtr2 + stz ZPPtr2+1 + .1 >PUSHW L.MSG.HEXDUMP + >PUSHW ZPPtr2 ldy #0 .2 >PUSHB (ZPPtr1),y iny - cpy #16 + cpy #8 bne .2 - >PUSHBI 16 + >PUSHBI 10 >SYSCALL PrintF bcs .9 lda ZPPtr1 - adc #16 + adc #8 sta ZPPtr1 lda ZPPtr1+1 adc #0 sta ZPPtr1+1 + lda ZPPtr2 + adc #8 + sta ZPPtr2 + lda ZPPtr2+1 + adc #0 + sta ZPPtr2+1 + lda ZPBufLen sec - sbc #16 + sbc #8 sta ZPBufLen lda ZPBufLen+1 sbc #0 @@ -383,18 +451,139 @@ DumpBuf >STYA ZPPtr1 .9 rts *-------------------------------------- +PPPFCS16 >STYA ZPPtr1 + + lda #$ff + sta FCS + sta FCS+1 + + lda ZPBufLen + sec + sbc #4 minus 7E .... FCS FCS 7E + eor #$ff + sta ZPPtr2 + + lda ZPBufLen+1 + sbc #0 + eor #$ff + sta ZPPtr2+1 + +.1 inc ZPPtr2 + bne .2 + + inc ZPPtr2+1 + beq .8 + +.2 inc ZPPtr1 skip First 7E + bne .3 + + inc ZPPtr1+1 + +.3 lda (ZPPtr1) + eor FCS + tax + + lda FCS.LO,x + eor FCS+1 + sta FCS + + lda FCS.HI,x + sta FCS+1 + + bra .1 + +.8 lda FCS+1 + eor #$ff + ldy #1 + sta (ZPPtr1),y + + lda FCS + eor #$ff + iny + sta (ZPPtr1),y + + rts +*-------------------------------------- CS.END +FCS.LO .DA #$0000,#$1189,#$2312,#$329b,#$4624,#$57ad,#$6536,#$74bf + .DA #$8c48,#$9dc1,#$af5a,#$bed3,#$ca6c,#$dbe5,#$e97e,#$f8f7 + .DA #$1081,#$0108,#$3393,#$221a,#$56a5,#$472c,#$75b7,#$643e + .DA #$9cc9,#$8d40,#$bfdb,#$ae52,#$daed,#$cb64,#$f9ff,#$e876 + .DA #$2102,#$308b,#$0210,#$1399,#$6726,#$76af,#$4434,#$55bd + .DA #$ad4a,#$bcc3,#$8e58,#$9fd1,#$eb6e,#$fae7,#$c87c,#$d9f5 + .DA #$3183,#$200a,#$1291,#$0318,#$77a7,#$662e,#$54b5,#$453c + .DA #$bdcb,#$ac42,#$9ed9,#$8f50,#$fbef,#$ea66,#$d8fd,#$c974 + .DA #$4204,#$538d,#$6116,#$709f,#$0420,#$15a9,#$2732,#$36bb + .DA #$ce4c,#$dfc5,#$ed5e,#$fcd7,#$8868,#$99e1,#$ab7a,#$baf3 + .DA #$5285,#$430c,#$7197,#$601e,#$14a1,#$0528,#$37b3,#$263a + .DA #$decd,#$cf44,#$fddf,#$ec56,#$98e9,#$8960,#$bbfb,#$aa72 + .DA #$6306,#$728f,#$4014,#$519d,#$2522,#$34ab,#$0630,#$17b9 + .DA #$ef4e,#$fec7,#$cc5c,#$ddd5,#$a96a,#$b8e3,#$8a78,#$9bf1 + .DA #$7387,#$620e,#$5095,#$411c,#$35a3,#$242a,#$16b1,#$0738 + .DA #$ffcf,#$ee46,#$dcdd,#$cd54,#$b9eb,#$a862,#$9af9,#$8b70 + .DA #$8408,#$9581,#$a71a,#$b693,#$c22c,#$d3a5,#$e13e,#$f0b7 + .DA #$0840,#$19c9,#$2b52,#$3adb,#$4e64,#$5fed,#$6d76,#$7cff + .DA #$9489,#$8500,#$b79b,#$a612,#$d2ad,#$c324,#$f1bf,#$e036 + .DA #$18c1,#$0948,#$3bd3,#$2a5a,#$5ee5,#$4f6c,#$7df7,#$6c7e + .DA #$a50a,#$b483,#$8618,#$9791,#$e32e,#$f2a7,#$c03c,#$d1b5 + .DA #$2942,#$38cb,#$0a50,#$1bd9,#$6f66,#$7eef,#$4c74,#$5dfd + .DA #$b58b,#$a402,#$9699,#$8710,#$f3af,#$e226,#$d0bd,#$c134 + .DA #$39c3,#$284a,#$1ad1,#$0b58,#$7fe7,#$6e6e,#$5cf5,#$4d7c + .DA #$c60c,#$d785,#$e51e,#$f497,#$8028,#$91a1,#$a33a,#$b2b3 + .DA #$4a44,#$5bcd,#$6956,#$78df,#$0c60,#$1de9,#$2f72,#$3efb + .DA #$d68d,#$c704,#$f59f,#$e416,#$90a9,#$8120,#$b3bb,#$a232 + .DA #$5ac5,#$4b4c,#$79d7,#$685e,#$1ce1,#$0d68,#$3ff3,#$2e7a + .DA #$e70e,#$f687,#$c41c,#$d595,#$a12a,#$b0a3,#$8238,#$93b1 + .DA #$6b46,#$7acf,#$4854,#$59dd,#$2d62,#$3ceb,#$0e70,#$1ff9 + .DA #$f78f,#$e606,#$d49d,#$c514,#$b1ab,#$a022,#$92b9,#$8330 + .DA #$7bc7,#$6a4e,#$58d5,#$495c,#$3de3,#$2c6a,#$1ef1,#$0f78 +*-------------------------------------- +FCS.HI .DA /$0000,/$1189,/$2312,/$329b,/$4624,/$57ad,/$6536,/$74bf + .DA /$8c48,/$9dc1,/$af5a,/$bed3,/$ca6c,/$dbe5,/$e97e,/$f8f7 + .DA /$1081,/$0108,/$3393,/$221a,/$56a5,/$472c,/$75b7,/$643e + .DA /$9cc9,/$8d40,/$bfdb,/$ae52,/$daed,/$cb64,/$f9ff,/$e876 + .DA /$2102,/$308b,/$0210,/$1399,/$6726,/$76af,/$4434,/$55bd + .DA /$ad4a,/$bcc3,/$8e58,/$9fd1,/$eb6e,/$fae7,/$c87c,/$d9f5 + .DA /$3183,/$200a,/$1291,/$0318,/$77a7,/$662e,/$54b5,/$453c + .DA /$bdcb,/$ac42,/$9ed9,/$8f50,/$fbef,/$ea66,/$d8fd,/$c974 + .DA /$4204,/$538d,/$6116,/$709f,/$0420,/$15a9,/$2732,/$36bb + .DA /$ce4c,/$dfc5,/$ed5e,/$fcd7,/$8868,/$99e1,/$ab7a,/$baf3 + .DA /$5285,/$430c,/$7197,/$601e,/$14a1,/$0528,/$37b3,/$263a + .DA /$decd,/$cf44,/$fddf,/$ec56,/$98e9,/$8960,/$bbfb,/$aa72 + .DA /$6306,/$728f,/$4014,/$519d,/$2522,/$34ab,/$0630,/$17b9 + .DA /$ef4e,/$fec7,/$cc5c,/$ddd5,/$a96a,/$b8e3,/$8a78,/$9bf1 + .DA /$7387,/$620e,/$5095,/$411c,/$35a3,/$242a,/$16b1,/$0738 + .DA /$ffcf,/$ee46,/$dcdd,/$cd54,/$b9eb,/$a862,/$9af9,/$8b70 + .DA /$8408,/$9581,/$a71a,/$b693,/$c22c,/$d3a5,/$e13e,/$f0b7 + .DA /$0840,/$19c9,/$2b52,/$3adb,/$4e64,/$5fed,/$6d76,/$7cff + .DA /$9489,/$8500,/$b79b,/$a612,/$d2ad,/$c324,/$f1bf,/$e036 + .DA /$18c1,/$0948,/$3bd3,/$2a5a,/$5ee5,/$4f6c,/$7df7,/$6c7e + .DA /$a50a,/$b483,/$8618,/$9791,/$e32e,/$f2a7,/$c03c,/$d1b5 + .DA /$2942,/$38cb,/$0a50,/$1bd9,/$6f66,/$7eef,/$4c74,/$5dfd + .DA /$b58b,/$a402,/$9699,/$8710,/$f3af,/$e226,/$d0bd,/$c134 + .DA /$39c3,/$284a,/$1ad1,/$0b58,/$7fe7,/$6e6e,/$5cf5,/$4d7c + .DA /$c60c,/$d785,/$e51e,/$f497,/$8028,/$91a1,/$a33a,/$b2b3 + .DA /$4a44,/$5bcd,/$6956,/$78df,/$0c60,/$1de9,/$2f72,/$3efb + .DA /$d68d,/$c704,/$f59f,/$e416,/$90a9,/$8120,/$b3bb,/$a232 + .DA /$5ac5,/$4b4c,/$79d7,/$685e,/$1ce1,/$0d68,/$3ff3,/$2e7a + .DA /$e70e,/$f687,/$c41c,/$d595,/$a12a,/$b0a3,/$8238,/$93b1 + .DA /$6b46,/$7acf,/$4854,/$59dd,/$2d62,/$3ceb,/$0e70,/$1ff9 + .DA /$f78f,/$e606,/$d49d,/$c514,/$b1ab,/$a022,/$92b9,/$8330 + .DA /$7bc7,/$6a4e,/$58d5,/$495c,/$3de3,/$2c6a,/$1ef1,/$0f78 +*-------------------------------------- DEVSIG.Offset .HS 05070B0C DEVSIG.Value .HS 38180131 DEVSIG.Length .EQ DEVSIG.Value-DEVSIG.Offset MSG.DETECT .AZ "PPP Driver For Apple SSC." MSG.DETECT.OK .AZ "PPP Installed As Device : %s\r\n" MSG.DETECT.KO .AZ "No SSC Found." +MSG.STRING .AZ "[%h]:{%s}\r\n" ETCFILE .AZ "${ROOT}etc/ppp.conf" *-------------------------------------- MSG.ETCFILE .AZ "Executing %s File...\r\n" -MSG.BUFLEN .AZ "BufLen:%H\r\n" -MSG.HEXDUMP .AZ "%h:%h:%h:%h:%h:%h:%h:%h:%h:%h:%h:%h:%h:%h:%h:%h\r\n" +MSG.DUMPBUFS .AZ "Send:%H\r\n" +MSG.DUMPBUFR .AZ "Recv:%H\r\n" +MSG.HEXDUMP .AZ "%H:%h %h %h %h %h %h %h %h\r\n" *-------------------------------------- FD.DEV .DA #S.FD.T.CDEV .DA #0 HANDLER @@ -406,20 +595,38 @@ FD.DEV .DA #S.FD.T.CDEV .DA 0 BUFPTR FD.DEV.NAME .AZ "eth1" *-------------------------------------- -PPP.CfgReg .HS 7E -PPP.CfgReg.START +PPP.LCPReq .HS 7E +PPP.LCPReq.START .HS FF03 .HS C021 LCP -PPP.CfgReg.LCP .HS 01 Configure-Request +PPP.LCPReq.DATA .HS 01 Configure-Request .HS 01 ID - .DA /PPP.CfgReg.LCP.LEN,#PPP.CfgReg.LCP.LEN - .HS 01.04.05DC MRU + .DA /PPP.LCPReq.DATA.LEN,#PPP.LCPReq.DATA.LEN + .HS 01.04 MRU + .DA /576,#576 .HS 02.06.000A0000 ACCM - .HS 05.06.55334466 MAGIC -PPP.CfgReg.LCP.LEN .EQ *-PPP.CfgReg.LCP + .HS 05.06.002A2B78 MAGIC + .HS 07.02 + .HS 08.02 +PPP.LCPReq.DATA.LEN .EQ *-PPP.LCPReq.DATA +* .HS 0000 PADDING .BS 2 FCS .HS 7E -PPP.CfgReg.LEN .EQ *-PPP.CfgReg +PPP.LCPReq.LEN .EQ *-PPP.LCPReq +*-------------------------------------- +PPP.IPCPReq .HS 7E +PPP.IPCPReq.START + .HS FF03 + .HS 8021 IPCP +PPP.IPCPReq.DATA .HS 01 Configure-Request + .HS 01 ID + .DA /PPP.IPCPReq.DATA.LEN,#PPP.IPCPReq.DATA.LEN + .HS 03.06.00.00.00.00 IP Address +PPP.IPCPReq.DATA.LEN .EQ *-PPP.IPCPReq.DATA +* .HS 0000 PADDING + .BS 2 FCS + .HS 7E +PPP.IPCPReq.LEN .EQ *-PPP.IPCPReq *-------------------------------------- RCV.Buf .BS 256 *-------------------------------------- @@ -564,7 +771,7 @@ CLOSE php lda #S.DIB.S.OPENED trb DIB+S.DIB.S - + lda hINBUF >SYSCALL2 FreeMem @@ -767,125 +974,7 @@ IRQ.8 clc IRQ.9 sec rts *-------------------------------------- -PPPFCS16 >STYA ZPPtr1 - - lda #$ff - sta FCS - sta FCS+1 - - lda ZPBufLen - sec - sbc #4 minus 7E .... FCS FCS 7E - eor #$ff - sta ZPPtr2 - - lda ZPBufLen+1 - sbc #0 - eor #$ff - sta ZPPtr2+1 - -.1 inc ZPPtr2 - bne .2 - - inc ZPPtr2+1 - beq .8 - -.2 inc ZPPtr1 - bne .3 - - inc ZPPtr1+1 - -.3 lda (ZPPtr1) - eor FCS - tax - - lda FCS.LO,x - eor FCS+1 - sta FCS - - lda FCS.HI,x - sta FCS+1 - - bra .1 - -.8 lda FCS+1 - eor #$ff - ldy #1 - sta (ZPPtr1),y - - lda FCS - eor #$ff - iny - sta (ZPPtr1),y - - rts -*-------------------------------------- DRV.CS.END -FCS.LO .DA #$0000,#$1189,#$2312,#$329b,#$4624,#$57ad,#$6536,#$74bf - .DA #$8c48,#$9dc1,#$af5a,#$bed3,#$ca6c,#$dbe5,#$e97e,#$f8f7 - .DA #$1081,#$0108,#$3393,#$221a,#$56a5,#$472c,#$75b7,#$643e - .DA #$9cc9,#$8d40,#$bfdb,#$ae52,#$daed,#$cb64,#$f9ff,#$e876 - .DA #$2102,#$308b,#$0210,#$1399,#$6726,#$76af,#$4434,#$55bd - .DA #$ad4a,#$bcc3,#$8e58,#$9fd1,#$eb6e,#$fae7,#$c87c,#$d9f5 - .DA #$3183,#$200a,#$1291,#$0318,#$77a7,#$662e,#$54b5,#$453c - .DA #$bdcb,#$ac42,#$9ed9,#$8f50,#$fbef,#$ea66,#$d8fd,#$c974 - .DA #$4204,#$538d,#$6116,#$709f,#$0420,#$15a9,#$2732,#$36bb - .DA #$ce4c,#$dfc5,#$ed5e,#$fcd7,#$8868,#$99e1,#$ab7a,#$baf3 - .DA #$5285,#$430c,#$7197,#$601e,#$14a1,#$0528,#$37b3,#$263a - .DA #$decd,#$cf44,#$fddf,#$ec56,#$98e9,#$8960,#$bbfb,#$aa72 - .DA #$6306,#$728f,#$4014,#$519d,#$2522,#$34ab,#$0630,#$17b9 - .DA #$ef4e,#$fec7,#$cc5c,#$ddd5,#$a96a,#$b8e3,#$8a78,#$9bf1 - .DA #$7387,#$620e,#$5095,#$411c,#$35a3,#$242a,#$16b1,#$0738 - .DA #$ffcf,#$ee46,#$dcdd,#$cd54,#$b9eb,#$a862,#$9af9,#$8b70 - .DA #$8408,#$9581,#$a71a,#$b693,#$c22c,#$d3a5,#$e13e,#$f0b7 - .DA #$0840,#$19c9,#$2b52,#$3adb,#$4e64,#$5fed,#$6d76,#$7cff - .DA #$9489,#$8500,#$b79b,#$a612,#$d2ad,#$c324,#$f1bf,#$e036 - .DA #$18c1,#$0948,#$3bd3,#$2a5a,#$5ee5,#$4f6c,#$7df7,#$6c7e - .DA #$a50a,#$b483,#$8618,#$9791,#$e32e,#$f2a7,#$c03c,#$d1b5 - .DA #$2942,#$38cb,#$0a50,#$1bd9,#$6f66,#$7eef,#$4c74,#$5dfd - .DA #$b58b,#$a402,#$9699,#$8710,#$f3af,#$e226,#$d0bd,#$c134 - .DA #$39c3,#$284a,#$1ad1,#$0b58,#$7fe7,#$6e6e,#$5cf5,#$4d7c - .DA #$c60c,#$d785,#$e51e,#$f497,#$8028,#$91a1,#$a33a,#$b2b3 - .DA #$4a44,#$5bcd,#$6956,#$78df,#$0c60,#$1de9,#$2f72,#$3efb - .DA #$d68d,#$c704,#$f59f,#$e416,#$90a9,#$8120,#$b3bb,#$a232 - .DA #$5ac5,#$4b4c,#$79d7,#$685e,#$1ce1,#$0d68,#$3ff3,#$2e7a - .DA #$e70e,#$f687,#$c41c,#$d595,#$a12a,#$b0a3,#$8238,#$93b1 - .DA #$6b46,#$7acf,#$4854,#$59dd,#$2d62,#$3ceb,#$0e70,#$1ff9 - .DA #$f78f,#$e606,#$d49d,#$c514,#$b1ab,#$a022,#$92b9,#$8330 - .DA #$7bc7,#$6a4e,#$58d5,#$495c,#$3de3,#$2c6a,#$1ef1,#$0f78 -*-------------------------------------- -FCS.HI .DA /$0000,/$1189,/$2312,/$329b,/$4624,/$57ad,/$6536,/$74bf - .DA /$8c48,/$9dc1,/$af5a,/$bed3,/$ca6c,/$dbe5,/$e97e,/$f8f7 - .DA /$1081,/$0108,/$3393,/$221a,/$56a5,/$472c,/$75b7,/$643e - .DA /$9cc9,/$8d40,/$bfdb,/$ae52,/$daed,/$cb64,/$f9ff,/$e876 - .DA /$2102,/$308b,/$0210,/$1399,/$6726,/$76af,/$4434,/$55bd - .DA /$ad4a,/$bcc3,/$8e58,/$9fd1,/$eb6e,/$fae7,/$c87c,/$d9f5 - .DA /$3183,/$200a,/$1291,/$0318,/$77a7,/$662e,/$54b5,/$453c - .DA /$bdcb,/$ac42,/$9ed9,/$8f50,/$fbef,/$ea66,/$d8fd,/$c974 - .DA /$4204,/$538d,/$6116,/$709f,/$0420,/$15a9,/$2732,/$36bb - .DA /$ce4c,/$dfc5,/$ed5e,/$fcd7,/$8868,/$99e1,/$ab7a,/$baf3 - .DA /$5285,/$430c,/$7197,/$601e,/$14a1,/$0528,/$37b3,/$263a - .DA /$decd,/$cf44,/$fddf,/$ec56,/$98e9,/$8960,/$bbfb,/$aa72 - .DA /$6306,/$728f,/$4014,/$519d,/$2522,/$34ab,/$0630,/$17b9 - .DA /$ef4e,/$fec7,/$cc5c,/$ddd5,/$a96a,/$b8e3,/$8a78,/$9bf1 - .DA /$7387,/$620e,/$5095,/$411c,/$35a3,/$242a,/$16b1,/$0738 - .DA /$ffcf,/$ee46,/$dcdd,/$cd54,/$b9eb,/$a862,/$9af9,/$8b70 - .DA /$8408,/$9581,/$a71a,/$b693,/$c22c,/$d3a5,/$e13e,/$f0b7 - .DA /$0840,/$19c9,/$2b52,/$3adb,/$4e64,/$5fed,/$6d76,/$7cff - .DA /$9489,/$8500,/$b79b,/$a612,/$d2ad,/$c324,/$f1bf,/$e036 - .DA /$18c1,/$0948,/$3bd3,/$2a5a,/$5ee5,/$4f6c,/$7df7,/$6c7e - .DA /$a50a,/$b483,/$8618,/$9791,/$e32e,/$f2a7,/$c03c,/$d1b5 - .DA /$2942,/$38cb,/$0a50,/$1bd9,/$6f66,/$7eef,/$4c74,/$5dfd - .DA /$b58b,/$a402,/$9699,/$8710,/$f3af,/$e226,/$d0bd,/$c134 - .DA /$39c3,/$284a,/$1ad1,/$0b58,/$7fe7,/$6e6e,/$5cf5,/$4d7c - .DA /$c60c,/$d785,/$e51e,/$f497,/$8028,/$91a1,/$a33a,/$b2b3 - .DA /$4a44,/$5bcd,/$6956,/$78df,/$0c60,/$1de9,/$2f72,/$3efb - .DA /$d68d,/$c704,/$f59f,/$e416,/$90a9,/$8120,/$b3bb,/$a232 - .DA /$5ac5,/$4b4c,/$79d7,/$685e,/$1ce1,/$0d68,/$3ff3,/$2e7a - .DA /$e70e,/$f687,/$c41c,/$d595,/$a12a,/$b0a3,/$8238,/$93b1 - .DA /$6b46,/$7acf,/$4854,/$59dd,/$2d62,/$3ceb,/$0e70,/$1ff9 - .DA /$f78f,/$e606,/$d49d,/$c514,/$b1ab,/$a022,/$92b9,/$8330 - .DA /$7bc7,/$6a4e,/$58d5,/$495c,/$3de3,/$2c6a,/$1ef1,/$0f78 *-------------------------------------- DEVSLOTn08F .BS 1 hINBUF .BS 1 diff --git a/INC/A2osX.I.txt b/INC/A2osX.I.txt index e9198feb..981bb509 100644 --- a/INC/A2osX.I.txt +++ b/INC/A2osX.I.txt @@ -162,6 +162,8 @@ C.FF .EQ 12 C.CR .EQ 13 C.SO .EQ 14 C.SI .EQ 15 +C.XON .EQ 17 +C.XOFF .EQ 19 C.FS .EQ 21 C.ESC .EQ 27 C.SPACE .EQ 32 diff --git a/LIB/LIBBLKDEV.S.D2.txt b/LIB/LIBBLKDEV.S.D2.txt index 2bca2342..35c3e847 100644 --- a/LIB/LIBBLKDEV.S.D2.txt +++ b/LIB/LIBBLKDEV.S.D2.txt @@ -24,40 +24,41 @@ D2Recalibrate >PULLB DrvSlt jsr CheckDiskII bcs .9 - ldx Slotn0 - ldy #168 - -.1 lda IO.D2.Ph0Off,x + lda #168 + + ldy Slotn0 + lda IO.D2.Ph0On,y lda #IO.D2.SeekTimeR jsr D2.Wait100usecA - dey - dey - - tya - +.1 dec + dec + + pha + and #6 ora Slotn0 - tax - lda IO.D2.Ph0On,x + phy + plx + tay + lda IO.D2.Ph0On,y lda #IO.D2.SeekTimeR jsr D2.Wait100usecA - tya - bne .1 - - ldy #20 - -.2 jsr D2.Wait25600usec - dey - bne .2 - lda IO.D2.Ph0Off,x + + lda #IO.D2.SeekTimeR + jsr D2.Wait100usecA + + pla + bne .1 jsr D2.Wait25600usec + lda IO.D2.Ph0Off,y + clc .9 rts */-------------------------------------- @@ -75,7 +76,7 @@ D2MoveHead >PULLB MoveTo clc .9 rts -D2MoveHead.SEI lda MoveFrom +D2MoveHead.SEI lda MoveFrom tay and #6 @@ -121,8 +122,15 @@ D2MoveHead.SEI lda MoveFrom ora Slotn0 tay + lda Slotn0 + ora #IO.D2.RData + sta .4+1 + sta .5+1 + sta IO.D2.Ph0On,x +.4 lda IO.D2.RData SELF MODIFIED sta IO.D2.Ph0On,y +.5 lda IO.D2.RData SELF MODIFIED lda #IO.D2.SeekTimeF jsr D2.Wait100usecA diff --git a/LIB/LIBCIFS.S.txt b/LIB/LIBCIFS.S.txt index e378f6cb..50288368 100644 --- a/LIB/LIBCIFS.S.txt +++ b/LIB/LIBCIFS.S.txt @@ -20,6 +20,7 @@ ZPReqPtr .BS 2 ZPReqLen .BS 2 ZPCtxPtr .BS 2 pFD .BS 2 +pPath .BS 2 ZPRespPtr .BS 2 @@ -27,7 +28,7 @@ ZPPtr1 .BS 2 ZPPtr2 .BS 2 BufPtr .BS 2 hBuf .BS 1 - +bFlag .BS 1 ZS.END .ED *-------------------------------------- @@ -86,7 +87,7 @@ J.CIFS2 .DA CIFS2.ChTyp .DA CIFS2.Close .DA CIFS2.Read .DA CIFS2.Write - .DA CIFS2.ChOwn + .DA CIFS2.ChOwn L.LIBTCPIP .DA LIBTCPIP L.NETBIOS .DA NETBIOS .DA 0 @@ -349,7 +350,7 @@ CIFS.TreeConnect jsr RequestSetupX ldx #0 - + .1 lda SMB.TreeConnect.H,x sta (ZPReqPtr),y iny @@ -456,44 +457,50 @@ CIFS.Mount ldy #1 >PUSHA lda (pStack),y MP LO >PUSHA - + >PUSHW L.CALLBACK >SYSCALL2 Mount bcs .9 - + pha hMount - + ldx #0 .1 >PULLB MountTable,x inx cpx #4 bne .1 - - clc - + pla - + clc + rts + .9 >RET 4 *-------------------------------------- CIFS.UMount clc rts *-------------------------------------- CIFS.CallBack bit CIFS.Status - bmi .1 - - jmp (J.CIFS,x) - -.1 ldy #S.PS.PID + bpl .1 + + phy + pha + ldy #S.PS.PID lda (pPS),y cmp CIFS.PID - bne .8 + beq .2 - jmp (J.CIFS2,x) - -.8 lda #0 + pla + ply + + lda #0 sec - rts + rts + +.1 jmp (J.CIFS,x) +.2 pla + ply + jmp (J.CIFS2,x) *-------------------------------------- CIFS.ChTyp CIFS2.ChTyp @@ -501,35 +508,30 @@ CIFS2.ChTyp CIFS.ChMod CIFS2.ChMod *-------------------------------------- -CIFS.FStat +CIFS.FStat *-------------------------------------- CIFS2.FStat lda #MLI.E.BADCALL sec rts *-------------------------------------- -CIFS.Stat >STYA ZPPtr1 resolved path - +CIFS.Stat >STYA pPath resolved path + jsr MakeTrans2Reg ldx #0 - -.2 lda SMB.QueryPathInfo,x + +.1 lda SMB.QueryPathInfo,x sta (ZPReqPtr),y iny inx cpx #SMB.QueryPathInfo.Len - bne .2 + bne .1 -.3 lda (ZPPtr1) - inc ZPPtr1 - bne .4 + jsr AppendPath - inc ZPPtr1+1 - -.4 sta (ZPReqPtr),y + lda #0 + sta (ZPReqPtr),y iny - tax - bne .3 jsr SetT2ReqLenYA @@ -546,33 +548,36 @@ CIFS.Stat >STYA ZPPtr1 resolved path sta CIFS.PID dec CIFS.Status - + lda #0 sec rts - lda #MLI.E.INVPATH - sec .9 >RET 4 *-------------------------------------- CIFS2.Stat lda MountTable+3 hSocket ldx #LIBTCPIP.Recv jsr GO.LIBTCPIP bcs .9 - + jsr GetRespData ldy #S.NETBIOS+S.SMB.H.STATUS lda (ZPRespPtr),y beq .1 - + lda #MLI.E.FNOTFND bra .99 -.1 >PULLW ZPPtr1 +.1 >PULLW ZPPtr2 Stat Buffer + + inc pStack Skip Filename inc pStack - inc pStack - + + jsr GetRespDataOffset + jsr FileInfo2StatBuf + jsr StatBuf2Ptr2 + stz CIFS.Status clc rts @@ -582,18 +587,89 @@ CIFS2.Stat lda MountTable+3 hSocket dec CIFS.Retries beq .90 - + lda #0 sec rts - + .90 lda #MLI.E.IO .99 sec stz CIFS.Status - >RET 4 + >RET 4 *-------------------------------------- -CIFS.MKDir -CIFS2.MKDir +CIFS.MKDir >STYA pPath resolved path + + jsr MakeTrans2Reg + + ldx #0 + +.1 lda SMB.CreateDirectory,x + sta (ZPReqPtr),y + iny + inx + cpx #SMB.CreateDirectory.Len + bne .1 + + jsr AppendPath + + lda #0 + sta (ZPReqPtr),y + iny + + jsr SetT2ReqLenYA + + >PUSHYA + >PUSHW ZPReqPtr + lda MountTable+3 hSocket + + ldx #LIBTCPIP.Send + jsr GO.LIBTCPIP + bcs .9 + + ldy #S.PS.PID + lda (pPS),y + sta CIFS.PID + + dec CIFS.Status + + lda #0 + sec + rts + +.9 >RET 4 +*-------------------------------------- +CIFS2.MKDir lda MountTable+3 hSocket + ldx #LIBTCPIP.Recv + jsr GO.LIBTCPIP + bcs .9 + + jsr GetRespData + + ldy #S.NETBIOS+S.SMB.H.STATUS + lda (ZPRespPtr),y + beq .1 + + lda #MLI.E.DUPFILE + bra .99 + +.1 stz CIFS.Status + clc + >RET 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 *-------------------------------------- CIFS.MKNod CIFS2.MKNod @@ -606,65 +682,75 @@ CIFS2.Pipe lda #MLI.E.BADCALL sec rts *-------------------------------------- -CIFS.OpenDir >STYA ZPPtr1 resolved path +CIFS.OpenDir >STYA pPath resolved path >LDYAI S.FD.DIR >SYSCALL2 GetMem bcs .9 - + >STYA ZPPtr2 - + lda #S.FD.T.DIR sta (ZPPtr2) - + lda hHandler ldy #S.FD.HANDLER sta (ZPPtr2),y - + lda #0 - ldy #S.FD.DIR.FC + ldy #S.FD.DIR.EPB + sta (ZPPtr2),y EOF Flag + iny sta (ZPPtr2),y iny sta (ZPPtr2),y - - >PUSHW ZPPtr1 + + >PUSHW pPath >PUSHWI 0 txa >PUSHA >SYSCALL2 mknod - -.9 rts +.9 rts +*-------------------------------------- CIFS2.OpenDir lda #MLI.E.BADCALL sec rts *-------------------------------------- CIFS.ReadDir jsr GetPFD - ldy #S.FD.DIR.FC - lda (ZPPtr2),y + ldy #S.FD.DIR.EPB + lda (pFD),y + beq .1 + + lda #MLI.E.EOF + sec + rts + +.1 iny + lda (pFD),y iny - ora (ZPPtr2),y + ora (pFD),y bne CIFS.ReadDir.Next jsr MakeTrans2Reg ldx #0 - + .2 lda SMB.FindFirst,x sta (ZPReqPtr),y iny inx cpx #SMB.FindFirst.Len bne .2 - + bra CIFS.ReadDir.Send - -CIFS.ReadDir.Next + +CIFS.ReadDir.Next jsr MakeTrans2Reg ldx #0 - + .2 lda SMB.FindNext,x sta (ZPReqPtr),y iny @@ -675,19 +761,35 @@ CIFS.ReadDir.Next phy ldy #S.FD.DIR.FC+1 - lda (ZPPtr2),y + lda (pFD),y tax dey - lda (ZPPtr2),y - - ldy #S.NETBIOS+S.SMB.H+S.TRANS2.H Search ID - sta (ZPRespPtr),y + lda (pFD),y + + ldy #S.NETBIOS+S.SMB.H+SMB.Trans2.H.Len+7 Search ID + sta (ZPReqPtr),y txa iny - sta (ZPRespPtr),y - + sta (ZPReqPtr),y + ply -CIFS.ReadDir.Send +CIFS.ReadDir.Send + lda (pPath) + beq .1 + + jsr AppendPath + + lda #'\' + sta (ZPReqPtr),y + iny + +.1 lda #'*' + sta (ZPReqPtr),y + iny + lda #0 + sta (ZPReqPtr),y + iny + jsr SetT2ReqLenYA >PUSHYA @@ -696,51 +798,60 @@ CIFS.ReadDir.Send ldx #LIBTCPIP.Send jsr GO.LIBTCPIP - bcs .9 + bcs .9 ldy #S.PS.PID lda (pPS),y sta CIFS.PID dec CIFS.Status - + lda #0 sec .9 rts *-------------------------------------- -CIFS2.ReadDir lda MountTable+3 hSocket +CIFS2.ReadDir jsr GetPFD + + lda MountTable+3 hSocket ldx #LIBTCPIP.Recv jsr GO.LIBTCPIP bcs .9 - + jsr GetRespData ldy #S.NETBIOS+S.SMB.H.STATUS lda (ZPRespPtr),y bne .99 + ldy #S.FD.DIR.FC + lda (pFD),y + iny + ora (pFD),y + sta bFlag + bne .1 + ldy #S.NETBIOS+S.SMB.H+S.TRANS2.H+1 Search ID lda (ZPRespPtr),y tax dey lda (ZPRespPtr),y - + ldy #S.FD.DIR.FC - sta (ZPPtr2),y + sta (pFD),y iny txa - sta (ZPPtr2),y + sta (pFD),y - jsr GetRespDataOffset +.1 jsr GetRespDataOffset jsr CIFS2.ReadDir.GetBuf bcs .99 - + jsr GetRespDataOffset jsr CIFS2.ReadDir.FillBuf - + >LDYA BufPtr ldx hBuf - + stz CIFS.Status clc rts @@ -750,26 +861,44 @@ CIFS2.ReadDir lda MountTable+3 hSocket dec CIFS.Retries beq .90 - + lda #0 sec rts - + .90 lda #MLI.E.IO .99 stz CIFS.Status sec - rts + rts *-------------------------------------- CIFS2.ReadDir.GetBuf + ldy #S.NETBIOS+S.SMB.H+S.TRANS2.H Search Count + lda bFlag + bne .10 + + iny + iny + +.10 iny + iny + lda (ZPRespPtr),y End Of Search + phy + ldy #S.FD.DIR.EPB + sta (pFD),y + ply + + dey + dey + + lda (ZPRespPtr),y Search Count + beq .99 + tax + lda #1 +Ending 0 sta ZPPtr2 stz ZPPtr2+1 - ldy #S.NETBIOS+S.SMB.H+S.TRANS2.H+2 Search Count - lda (ZPRespPtr),y - tax - .1 lda ZPPtr2 clc adc #S.STAT @@ -777,7 +906,7 @@ CIFS2.ReadDir.GetBuf bcc .2 inc ZPPtr2+1 - + .2 lda ZPPtr1 clc adc #22 @@ -785,28 +914,28 @@ CIFS2.ReadDir.GetBuf bcc .3 inc ZPPtr1+1 - + .3 lda (ZPPtr1) Filename Len pha sec adc ZPPtr2 sta ZPPtr2 bcc .4 - + inc ZPPtr2+1 - + .4 pla inc sec adc ZPPtr1 sta ZPPtr1 bcc .5 - + inc ZPPtr1+1 - + .5 dex bne .1 - + >LDYA ZPPtr2 >SYSCALL2 GetMem bcs .9 @@ -816,12 +945,22 @@ CIFS2.ReadDir.GetBuf stx hBuf .9 rts + +.99 lda #MLI.E.EOF + sec + rts *-------------------------------------- CIFS2.ReadDir.FillBuf - ldy #S.NETBIOS+S.SMB.H+S.TRANS2.H+2 Search Count - lda (ZPRespPtr),y + ldy #S.NETBIOS+S.SMB.H+S.TRANS2.H Search Count + lda bFlag + bne .10 + + iny + iny + +.10 lda (ZPRespPtr),y tax - + .1 jsr FileInfo2StatBuf lda ZPPtr1 @@ -829,59 +968,70 @@ CIFS2.ReadDir.FillBuf adc #22 sta ZPPtr1 bcc .2 - + inc ZPPtr1+1 - + .2 ldy #$ff - + .3 iny lda (ZPPtr1),y sta (ZPPtr2),y bne .3 - + tya sec adc ZPPtr1 sta ZPPtr1 bcc .4 - + inc ZPPtr1+1 - + .4 tya sec adc ZPPtr2 sta ZPPtr2 bcc .5 - - inc ZPPtr2+1 - -.5 ldy #S.STAT-1 -.6 lda StatBuf,y - sta (ZPPtr2),y - dey - bpl .6 + inc ZPPtr2+1 + +.5 jsr StatBuf2Ptr2 lda #S.STAT clc adc ZPPtr2 sta ZPPtr2 bcc .7 - + inc ZPPtr2+1 .7 dex bne .1 - + lda #0 sta (ZPPtr2) - + rts *-------------------------------------- -CIFS.CloseDir jsr GetPFD - - >DEBUG +CIFS.CloseDir tax + lda Nod.Table.hName-2,x + beq .1 + + phx + + stz Nod.Table.hName-2,x + >SYSCALL2 FreeMem + + plx + +.1 lda Nod.Table.hFD-2,x + stz Nod.Table.hFD-2,x + >SYSCALL2 FreeMem + + stz CIFS.Status + clc + rts +*-------------------------------------- CIFS2.CloseDir lda #MLI.E.INVPATH sec rts @@ -889,10 +1039,7 @@ CIFS2.CloseDir lda #MLI.E.INVPATH CIFS.Open CIFS2.Open *-------------------------------------- -CIFS.Close jsr GetPFD - - >DEBUG - +CIFS.Close CIFS2.Close lda #MLI.E.INVPATH sec @@ -910,6 +1057,19 @@ CIFS2.ChOwn sec rts *-------------------------------------- +GetPFD tax + phx + + lda Nod.Table.hName-2,x + >SYSCALL2 GetMemPtr + >STYA pPath + + plx + lda Nod.Table.hFD-2,x + >SYSCALL2 GetMemPtr + >STYA pFD + rts +*-------------------------------------- MakeTrans2Reg lda MountTable+2 >SYSCALL2 GetMemPtr >STYA ZPCtxPtr @@ -918,7 +1078,7 @@ MakeTrans2Reg lda MountTable+2 jsr RequestSetupX ldx #0 - + .1 lda SMB.Trans2.H,x sta (ZPReqPtr),y iny @@ -956,6 +1116,33 @@ RequestSetupX phx rts *-------------------------------------- +AppendPath ldx #0 + +.1 lda (pPath) + beq .4 + + inc pPath + bne .2 + + inc pPath+1 + +.2 cmp #'/' + bne .3 + + lda #'\' + +.3 sta (ZPReqPtr),y + tax + iny + bra .1 + +.4 cpx #'\' + bne .5 + + dey + +.5 rts +*-------------------------------------- * Y = LEN from S.NETBIOS.TYPE * A = Ptr to LEN Word *-------------------------------------- @@ -980,7 +1167,7 @@ SetReqLenYAtA sty ZPReqLen *-------------------------------------- SetT2ReqLenYA sty ZPReqLen stz ZPReqLen+1 - + tya sec sbc #S.NETBIOS+S.SMB.H+SMB.Trans2.H.Len+7 @@ -990,11 +1177,11 @@ SetT2ReqLenYA sty ZPReqLen ldy #S.NETBIOS+S.SMB.H+19 sta (ZPReqPtr),y - + inc inc inc - + ldy #S.NETBIOS+S.SMB.H+SMB.Trans2.H.Len+2 sta (ZPReqPtr),y @@ -1037,18 +1224,18 @@ GetRespDataOffset lda (ZPRespPtr),y adc ZPRespPtr+1 pha - + txa clc adc #S.NETBIOS sta ZPPtr1 - + pla adc /S.NETBIOS sta ZPPtr1+1 - - - + + + rts *-------------------------------------- FileInfo2StatBuf @@ -1059,35 +1246,110 @@ FileInfo2StatBuf .1 stz StatBuf,x dex bpl .1 - - ldy #20 File Attribute - lda (ZPPtr1),y - and #10 - beq .2 - - lda #S.STAT.MODE.DIR - sta StatBuf+S.STAT.MODE+1 - -.2 ldy #12+3 Data Size + + ldy #0 Creation Date/Time + ldx #S.STAT.CTIME + + jsr FileInfo2StatBufDT + + ldy #4 Last Access Date/Time + ldx #S.STAT.ATIME + + jsr FileInfo2StatBufDT + + ldy #8 Last Write Date/Time + ldx #S.STAT.MTIME + + jsr FileInfo2StatBufDT + + ldy #12+3 Data Size ldx #3 - -.3 lda (ZPPtr1),y + +.7 lda (ZPPtr1),y sta StatBuf+S.STAT.SIZE,x dey dex - bpl .3 - + bpl .7 + + ldy #20 File Attribute + lda (ZPPtr1),y + and #$10 + beq .8 + + lda /S.STAT.MODE.DIR + sta StatBuf+S.STAT.MODE+1 + .8 plx - rts -*-------------------------------------- -GetPFD tax - lsr - lda Nod.Table.hFD-2,x - >SYSCALL2 GetMemPtr - >STYA pFD rts -*-------------------------------------- +*-------------------------------------- +* YYYYYYYM MMM DDDDD +* HHHHHmmm mmm SSSSS +*-------------------------------------- +FileInfo2StatBufDT + iny + lda (ZPPtr1),y + lsr + + php + + clc + adc #80 + sta StatBuf+S.TIME.YEAR,x + lda #19 + adc #0 + sta StatBuf+S.TIME.CENTURY,x + + dey + + plp + lda (ZPPtr1),y + ror + lsr + lsr + lsr + lsr + sta StatBuf+S.TIME.MONTH,x + + lda (ZPPtr1),y + and #$1F + sta StatBuf+S.TIME.DAY,x + + iny + iny + + lda (ZPPtr1),y + and #$1F + asl + sta StatBuf+S.TIME.SECOND,x + + lda (ZPPtr1),y + and #$E0 + sta StatBuf+S.TIME.MINUTE,x + + lda (ZPPtr1),y + lsr + ror StatBuf+S.TIME.MINUTE,x + lsr + ror StatBuf+S.TIME.MINUTE,x + lsr + ror StatBuf+S.TIME.MINUTE,x + lsr StatBuf+S.TIME.MINUTE,x + lsr StatBuf+S.TIME.MINUTE,x + + sta StatBuf+S.TIME.HOUR,x + rts +* TODO : S.TIME.WDAY +*-------------------------------------- +StatBuf2Ptr2 ldy #S.STAT-1 + +.1 lda StatBuf,y + sta (ZPPtr2),y + dey + bpl .1 + + rts +*-------------------------------------- GO.LIBTCPIP jmp (pLIBTCPIP) *-------------------------------------- CS.END @@ -1174,7 +1436,7 @@ SMB.Trans2.H .DA #15 WORD COUNT .BS 2 TotalParamCount .DA 0 TotalDataCount .DA 10 MaxParameterCount - .DA 512 MaxDataCount + .DA 480 MaxDataCount .DA #0 MaxSetupCount .HS 00 Reserved1 .DA 0 Flags @@ -1186,7 +1448,33 @@ SMB.Trans2.H .DA #15 WORD COUNT .HS 0000 DataOffset .DA #1 SetupCount .HS 00 Reserved3 -SMB.Trans2.H.Len .EQ *-SMB.Trans2.H +SMB.Trans2.H.Len .EQ *-SMB.Trans2.H +*-------------------------------------- +SMB.Open2 .DA 0 TRANS2_OPEN2 + .BS 2 +SMB.Open2.Len .EQ *-SMB.Open2 +*-------------------------------------- +SMB.FindFirst .DA 1 TRANS2_FIND_FIRST2 + .BS 2 PrmCnt + .HS 000000 Padding + .DA $0037 SearchAttributes + .DA 1024 SearchCount + .DA 2 Flags + .DA SMB_INFO_STANDARD InformationLevel + .HS 00000000 SearchStorageType +* .AZ "path\*" FileName +SMB.FindFirst.Len .EQ *-SMB.FindFirst +*-------------------------------------- +SMB.FindNext .DA 2 TRANS2_FIND_NEXT2 + .BS 2 PrmCnt + .HS 000000 Padding + .BS 2 SID + .DA 1024 SearchCount + .DA SMB_INFO_STANDARD InformationLevel + .HS 00000000 ResumeKey + .DA 2+8 Flags +* .AZ "path\*" FileName +SMB.FindNext.Len .EQ *-SMB.FindNext *-------------------------------------- SMB.QueryPathInfo .DA 5 TRANS2_QUERY_PATH_INFORMATION @@ -1197,27 +1485,13 @@ SMB.QueryPathInfo * .AZ "file" FileName SMB.QueryPathInfo.Len .EQ *-SMB.QueryPathInfo *-------------------------------------- -SMB.FindFirst .DA 1 TRANS2_FIND_FIRST2 +SMB.CreateDirectory + .DA 13 TRANS2_CREATE_DIRECTORY .BS 2 PrmCnt .HS 000000 Padding - .DA $0037 SearchAttributes - .DA 1024 SearchCount - .DA 2 Flags - .DA SMB_INFO_STANDARD InformationLevel - .HS 00000000 SearchStorageType - .AZ "*" FileName -SMB.FindFirst.Len .EQ *-SMB.FindFirst -*-------------------------------------- -SMB.FindNext .DA 2 TRANS2_FIND_NEXT2 - .BS 2 PrmCnt - .HS 000000 Padding - .BS 2 SID - .DA 1024 SearchCount - .DA SMB_INFO_STANDARD InformationLevel - .HS 00000000 ResumeKey - .DA 2 Flags - .AZ "*" FileName -SMB.FindNext.Len .EQ *-SMB.FindNext + .HS 00000000 Reserved +* .AZ "DirName" +SMB.CreateDirectory.Len .EQ *-SMB.CreateDirectory *-------------------------------------- LIBTCPIP .AZ "libtcpip" hLIBTCPIP .BS 1 diff --git a/ProDOS.FX/ProDOS.S.XRW.txt b/ProDOS.FX/ProDOS.S.XRW.txt index a02b5c68..026032cc 100644 --- a/ProDOS.FX/ProDOS.S.XRW.txt +++ b/ProDOS.FX/ProDOS.S.XRW.txt @@ -129,8 +129,8 @@ L59BD lda bloknml * motor should be up to speed, * if it looks stopped then the drive is not present - jsr XRW.CheckMotorOn is drive present ? - beq XRW.E.ND +* jsr XRW.CheckMotorOn is drive present ? +* beq XRW.E.ND *-------------------------------------- L538E lda A4L get command # bne .1 @@ -215,7 +215,12 @@ XRW.TrackSelect lda #2 jsr XRW.Seek Seek from Track 41 -> 0 bra .1 -.4 cmp XRW.ReqTrack +.4 ldy XRW.UnitIndex (4) + lda XRW.AddrField.V (4) + sta XRW.D2VolNum-1,y (4) + lda XRW.AddrField.T (4) + sta XRW.D2Trk-1,y (4) + cmp XRW.ReqTrack beq .8 lda XRW.BadSeek @@ -227,16 +232,16 @@ XRW.TrackSelect lda #2 .5 lda XRW.SeekTime bmi .6 seektime already > 128 -* clc -* adc #IO.D2.SeekTimeI -* sta XRW.SeekTime + clc + adc #IO.D2.SeekTimeI + sta XRW.SeekTime -* sta XRW.D2SeekTime-1,y + sta XRW.D2SeekTime-1,y .6 lda XRW.ReqTrack jsr XRW.Seek bra .3 - + .8 clc .9 rts *-------------------------------------- @@ -297,20 +302,12 @@ XRW.ReadAddr ldy #$FC tay if final checksum non-zero, bne .99 (2) then error. - ldy XRW.UnitIndex (4) - .9 lda IO.D2.RData,x (4) bpl .9 (2) eor #$DE (2) bne .99 (2) - lda XRW.AddrField.V (4) - sta XRW.D2VolNum-1,y (4) - lda XRW.AddrField.T (4) - sta XRW.D2Trk-1,y (4) - ldy XRW.AddrField.S (4) - clc (2) rts (6) @@ -376,12 +373,12 @@ XRW.Seek ldx XRW.UnitIndex .4 lda XRW.SeekTime jsr XRW.Wait100usecA - + lda XRW.CurrentQTrack cmp XRW.TargetQTrack bne .1 -.8 jsr XRW.Wait25600usec + jsr XRW.Wait25600usec XRW.SEEKOFF sta IO.D2.Ph0Off,x sta IO.D2.Ph0Off,y @@ -394,22 +391,23 @@ 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 sta IO.D2.Ph0On,x -.1 lda IO.D2.RData SELF MODIFIED +.1 lda IO.D2.RData SELF MODIFIED sta IO.D2.Ph0On,y -.2 lda IO.D2.RData SELF MODIFIED +.2 lda IO.D2.RData SELF MODIFIED rts *-------------------------------------- XRW.Trk2Qtrk asl x2 @@ -562,18 +560,19 @@ XRW.SectorIO bit XRW.bWrite .2 jsr XRW.ReadAddr bcs .3 (2) - - cpy XRW.ReqSector (4) + + lda XRW.AddrField.S (4) + cmp XRW.ReqSector (4) bne .3 (2) - + bit XRW.bWrite (4) bmi XRW.Write (3) jmp XRW.Read - + .3 inc XRW.RetryCnt bpl .2 - + sec .9 rts @@ -728,7 +727,7 @@ wrefd5 ldx #$60 (2) restore slot. warning: modified by prenib bmi .2 (3) .2 nop (2) - + lda #$FF (2) jsr wnibl (6+9,6) write turn off byte. @@ -955,7 +954,7 @@ XRW.CheckMotorOnX .9 rts Z if motor OFF *-------------------------------------- XRW.DEBUG sta CLRPAGE2 - + lda #"R" bit XRW.bWrite bpl .1 @@ -965,7 +964,7 @@ XRW.DEBUG sta CLRPAGE2 .1 sta $723 ldx #$24 - + lda XRW.ReqTrack jsr .6 @@ -977,6 +976,7 @@ XRW.DEBUG sta CLRPAGE2 lsr lsr jsr .7 + pla .7 and #$0F diff --git a/SHARED/X.FILEENUM.S.txt b/SHARED/X.FILEENUM.S.txt index 1e4edfdb..d126bfac 100644 --- a/SHARED/X.FILEENUM.S.txt +++ b/SHARED/X.FILEENUM.S.txt @@ -149,8 +149,9 @@ InitSrcDirYA >PUSHYA bcs .1 File/DIR does not exists, go extract pattern .DO X.ENTER.SUBDIR=1 - >LDA.G STAT+S.STAT.P.TYPE - cmp #S.FI.T.DIR + >LDA.G STAT+S.STAT.MODE+1 + and #$F0 + cmp /S.STAT.MODE.DIR bne .4 TYPE not a DIR, extract.... bra .5 TYPE=DIR, do not extract pattern .ELSE @@ -262,8 +263,9 @@ InitDstDirYA >PUSHYA >SYSCALL Stat bcs .1 File/DIR does not exists, go extract DstFileName - >LDA.G STAT+S.STAT.P.TYPE - cmp #S.FI.T.DIR + >LDA.G STAT+S.STAT.MODE+1 + and #$F0 + cmp /S.STAT.MODE.DIR beq .5 Dst is a directory...no destfilename .1 jsr GetPtr1Len Search end of string..... diff --git a/SYS/KERNEL.S.CORE.txt b/SYS/KERNEL.S.CORE.txt index f6007282..8f554ddb 100644 --- a/SYS/KERNEL.S.CORE.txt +++ b/SYS/KERNEL.S.CORE.txt @@ -300,7 +300,9 @@ CORE.Dispatch ldx #1 skip PS0 .2 lda (pEvent) Empty event, select next beq .3 - jsr CORE.PSExec2 + + ldx #S.PS.S.DOEVENT + jsr CORE.PSExecX dec IRQ.InKernel bcs .3 not for this PS, try next event in list @@ -311,6 +313,7 @@ CORE.Dispatch ldx #1 skip PS0 .3 dec CORE.EvtIndex beq .4 all EVT submitted to this PS, try other PS + lda pEvent try next EVT to this PS clc adc #S.EVT @@ -412,11 +415,11 @@ CORE.PSExec lda (pPS) bit #S.PS.F.SLEEP bne CORE.PSResume -CORE.PSExec2 ldy #S.PS.S + ldy #S.PS.S lda (pPS),y - tax - lda pCode+1 + +CORE.PSExecX lda pCode+1 pha lda pCode pha diff --git a/SYS/KERNEL.S.DIRENT.txt b/SYS/KERNEL.S.DIRENT.txt index e6fd820c..d5a2e19a 100644 --- a/SYS/KERNEL.S.DIRENT.txt +++ b/SYS/KERNEL.S.DIRENT.txt @@ -73,6 +73,7 @@ K.ReadDir.ROOT ldy #S.FD.DIR.FC did we already returned something ? >LDYAI K.Buf256 >STYA K.MLI.PARAMS+2 >STYA ZPPtr2 + >MLICALL MLIONLINE bcs K.ReadDir.RTS diff --git a/SYS/KM.VSDRIVE.S.txt b/SYS/KM.VSDRIVE.S.txt index 30340b4d..75633f73 100644 --- a/SYS/KM.VSDRIVE.S.txt +++ b/SYS/KM.VSDRIVE.S.txt @@ -22,13 +22,13 @@ VSDRIVE.Init >LDYAI VSDRIVE.MSG0 jsr VSDRIVE.Check bcs .90 - + .1 lda #$C1 Self Modified .2 jsr SSC.Detect bcs .99 - stx DRV+2 DRV.Slotn0 + stx DRV+1 DRV.Slotn0 sta .1+1 Slot Cn and #$0F @@ -87,7 +87,7 @@ VSDRIVE.Check ldx #REGULAR.SIZE bne .1 clc - + .9 rts *-------------------------------------- SSC.Detect stz TmpPtr1 @@ -110,7 +110,7 @@ SSC.Detect stz TmpPtr1 clc adc #$8F tax X=SlotN0 - stz SSC.RESET-$8F,x + stz SSC.RESET-$8F,x jsr VSDRIVE.Wait lda #SSC.CTL.CLKINT+SSC.CTL.B115200+SSC.CTL.8D+SSC.CTL.1S+SSC.CMD.NOP sta SSC.CTL-$8F,x @@ -127,13 +127,13 @@ SSC.Detect stz TmpPtr1 .3 inc TmpPtr1+1 no match, try next slot.... lda TmpPtr1+1 cmp #$C8 - bne .1 + bne .1 .9 sec rts *-------------------------------------- -VSDRIVE.Ping ldx DRV+2 DRV.Slotn0 - +VSDRIVE.Ping ldx DRV+1 DRV.Slotn0 + stz VSDRIVE.Ping.TO stz VSDRIVE.Ping.TO+1 @@ -145,7 +145,7 @@ VSDRIVE.Ping ldx DRV+2 DRV.Slotn0 .1 lda SSC.STATUS-$8F,x and #SSC.STATUS.TDRE Ready for transmit? bne .20 - + jsr VSDRIVE.IncTimer Wait....... bne .1 @@ -224,12 +224,12 @@ VSDRIVE.Wait lda #0 bne .1 rts -*-------------------------------------- +*-------------------------------------- VSDRIVE.CMDS .HS C6.00.00.03 .DA #ADT.CMD.VSD * C6=C5 eor 03 eor 00 eor 00 VSDRIVE.Ping.TO .BS 2 -VSDRIVE.Ping.BC .BS 2 +VSDRIVE.Ping.BC .BS 2 *-------------------------------------- * Find 2 free slots in DEVPTRS (D1 & D2) *-------------------------------------- @@ -336,9 +336,9 @@ PATCH.SIZE .EQ *-PATCH * OP = 4 : Write drv2 * OP = 5 : Read drv2 * CMD = $C5+OP+BLKLO+BLKHI+CHKSUM -* DO NOT trash DRV.COMMAND...DRV.BLKNUM as ProDOS +* DO NOT trash DRV.COMMAND...DRV.BLKNUM as ProDOS * reuses them after Block operation -* A1,A2 are used by Disk II Driver, +* A1,A2 are used by Disk II Driver, * so we use it safely as Tmp Ptr *-------------------------------------- DRV.A1L .EQ $3C @@ -347,14 +347,12 @@ DRV.A2L .EQ $3E DRV.A2H .EQ $3F DRV.COMMAND .EQ $42 DRV.UNITNUM .EQ $43 -DRV.BUFF .EQ $44 +DRV.BUFF .EQ $44 DRV.BLKNUM .EQ $46 *-------------------------------------- DRV .PH $D001 Main LC Bnk 2 $D001->$DFFF -DRV.START cld - - ldx #$ff Self Modified +DRV.START ldx #$ff Self Modified lda DRV.COMMAND S=0,R=1,W=2,F=3 bne .1 @@ -365,14 +363,17 @@ DRV.START cld clc rts +.9 lda #MLI.E.IO +* sec + rts + .1 cmp #3 beq .8 Format .... - -* bcs DRV.DO.CMD.ERR more....IO error - + bcs .9 + ora #2 W=2,R=3 - ldy DRV.UNITNUM + ldy DRV.UNITNUM bpl .2 adc #2 CC from bcs @@ -387,7 +388,12 @@ DRV.START cld lda DRV.BLKNUM+1 sta DRV.CmdBuf.BlkH +*-------------------------------------- * send CMD+CS +*-------------------------------------- + php + sei + ldy #4 Send 5 bytes including Sum .3 lda DRV.CmdBuf.Sum,y @@ -451,12 +457,13 @@ DRV.DO.CMD.R ldy #3 Read Back and check 4 bytes jsr DRV.SSCGet eor DRV.CmdBuf.Sum bne DRV.DO.CMD.ERR + + plp + clc rts A=0,CC from bcc .4 *-------------------------------------- -DRV.DO.CMD.ERR1 pla - pla - -DRV.DO.CMD.ERR lda #MLI.E.IO +DRV.DO.CMD.ERR plp + lda #MLI.E.IO sec rts *-------------------------------------- @@ -501,23 +508,22 @@ DRV.DO.CMD.W lda #$B1 lda (),y dey bpl .3 + plp + clc rts *-------------------------------------- -DRV.SSCSend sta .2+1 +DRV.SSCSend pha .1 lda SSC.STATUS-$8F,x -* bit #SSC.STATUS.DCD+SSC.STATUS.DSR -* beq DRV.DO.CMD.ERR1 and #SSC.STATUS.TDRE Outgoing char? beq .1 -.2 lda #$ff + pla + sta SSC.DATA-$8F,x rts *-------------------------------------- DRV.SSCGet lda SSC.STATUS-$8F,x -* bit #SSC.STATUS.DCD+SSC.STATUS.DSR -* beq DRV.DO.CMD.ERR1 and #SSC.STATUS.RDRF incoming char? beq DRV.SSCGet @@ -527,9 +533,9 @@ DRV.SSCGet lda SSC.STATUS-$8F,x DRV.READWRITE bit RRAMWRAMBNK1 sta (DRV.BUFF),y bit RRAMWRAMBNK2 - rts + rts *-------------------------------------- -DRV.CmdBuf.Sum .BS 1 Reverse order for dey +DRV.CmdBuf.Sum .BS 1 Reverse order for dey DRV.CmdBuf.BlkH .BS 1 DRV.CmdBuf.BlkL .BS 1 DRV.CmdBuf.Cmd .BS 1