From 33c45fb4d98d2fc7de6c4711591b9be747b45cf7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9my=20GIBERT?= Date: Sat, 13 Mar 2021 17:11:47 +0100 Subject: [PATCH] Kernel 0.94+ --- .Floppies/A2OSX.BUILD.po | Bin 33553920 -> 33553920 bytes .Floppies/A2OSX.TEST.po | Bin 819200 -> 819200 bytes BIN/IRC.S.txt | 710 +++++++++++++++++++------------------ LIB/LIBBLKDEV.S.D2.txt | 8 +- ProDOS.FX/ProDOS.S.XRW.txt | 4 +- 5 files changed, 370 insertions(+), 352 deletions(-) diff --git a/.Floppies/A2OSX.BUILD.po b/.Floppies/A2OSX.BUILD.po index 934555704cc15d4a9ef484fd7bbff23184a93d42..c238f48fe7d7684663b905bdd4c7662e8dfed04b 100644 GIT binary patch delta 23378 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 diff --git a/.Floppies/A2OSX.TEST.po b/.Floppies/A2OSX.TEST.po index 98e89c30ed2138a9d6a40c67ac35cd1c8769b61f..23736ff59b973d23451601eb30bb8764b3b08f56 100644 GIT binary patch delta 9299 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 jsr CS.RUN.GetMsg bcs .9 - beq .2 + bne .2 - jsr CS.RUN.REQ + jsr CS.RUN.SplitMsg + bcs .2 + + jsr CS.RUN.ProcessMsg bcs .9 >SLEEP @@ -301,124 +300,42 @@ CS.RUN.Connect >PUSHBI 0 no protocol >SYSCALL PrintF rts *-------------------------------------- -CS.RUN.GETBUF >LDYAI 256 - >SYSCALL GetMem - bcs .9 - - stx hReqBuf - >STYA ZPReqPtr - +CS.RUN.GetBuffers >LDYAI 256 >SYSCALL GetMem bcs .9 - stx hMsgBuf - >STYA ZPMsgPtr + >STYA ZPBufPtr + txa + >STA.G hBufBuf + + >LDYAI MSGSIZE + >SYSCALL GetMem + bcs .9 + + >STYA ZPMsg + txa + >STA.G hMsgBuf >LDYAI MSGSIZE >SYSCALL GetMem bcs .9 - stx hRespBuf >STYA ZPRespPtr + txa + >STA.G hRespBuf >LDYAI 256 >SYSCALL GetMem bcs .9 - stx hLineBuf - >STYA ZPLineBufPtr + >STYA ZPOutputBufPtr + txa + >STA.G hOutputBuf .9 rts *-------------------------------------- -CS.RUN.SCRSETUP >PUSHW L.SEQ.INIT - >PUSHBI 0 - >SYSCALL PrintF - bcs .9 - - jsr CS.RUN.TOPUPDATE - bcs .9 - - jsr CS.RUN.TXTCLR - - -.9 rts -*-------------------------------------- -CS.RUN.TOPUPDATE - >PUSHW ZPLineBufPtr - >PUSHW L.MSG.TOPBAR - >PUSHB #K.VER - >PUSHB /K.VER - - lda #1 - >SYSCALL ArgV - >PUSHYA - - lda #2 - >SYSCALL ArgV - >PUSHYA - - lda #3 - >SYSCALL ArgV - >PUSHYA - - >PUSHBI 8 - >SYSCALL SPrintF - - >PUSHW L.SEQ.BAR - >PUSHBI 1 - >PUSHW ZPLineBufPtr - >PUSHBI 3 - >SYSCALL PrintF - - rts -*-------------------------------------- -CS.RUN.STATUSPDATE - pha - phy - >PUSHW ZPLineBufPtr - >PUSHW L.MSG.STATUSBAR - - lda #4 - >SYSCALL ArgV - >PUSHYA - ply - pla - >PUSHYA - >PUSHBI 4 - - bra CS.RUN.STATUS -*-------------------------------------- -CS.RUN.STATUSMSG - pha - >PUSHW ZPLineBufPtr - >PUSHW L.MSG.STATUSBARMSG - pla - >PUSHYA - >PUSHBI 2 - -CS.RUN.STATUS >SYSCALL SPrintF - - >PUSHW L.SEQ.BAR - >PUSHBI 21 - >PUSHW ZPLineBufPtr - >PUSHBI 3 - >SYSCALL PrintF - rts -*-------------------------------------- -CS.RUN.TXTCLR lda #0 - sta (pData) - - stz TextPtr - stz TextLen - stz bEscMode - - >PUSHW L.SEQ.TXTCLR - >PUSHBI 0 - >SYSCALL PrintF - rts -*-------------------------------------- -CS.RUN.REGISTER >LDYA L.MSG.REGISTER +CS.RUN.Register >LDYA L.MSG.REGISTER jsr CS.RUN.STATUSMSG >PUSHW ZPRespPtr @@ -444,9 +361,184 @@ CS.RUN.REGISTER >LDYA L.MSG.REGISTER .9 rts *-------------------------------------- -CS.RUN.REQ jsr CS.RUN.SplitMsg - bcs .9 +CS.RUN.GetMsg bit bPendingMsg + bmi .10 + + >LDYA ZPMsg + >STYA ZPMsgPtr +.10 ldy BufLen + bne .2 + +.1 >PUSHWI 255 + >PUSHW ZPBufPtr + lda hSocket + >LIBCALL hLIBTCPIP,LIBTCPIP.Read + bcs .7 + + sty BufLen + stz BufPtr + +.2 ldy BufPtr + + lda (ZPBufPtr),y + cmp #C.CR + beq .6 + + cmp #C.LF + beq .3 + + sta (ZPMsgPtr) + inc ZPMsgPtr + bne .3 + + inc ZPMsgPtr+1 + +.3 inc BufPtr + dec BufLen + bne .2 + + bra .1 + +.6 inc BufPtr Skip CR + dec BufLen + + stz bPendingMsg + + lda #0 + sta (ZPMsgPtr) will exit with Z + + clc + rts + +.7 cmp #E.NODATA + bne .9 + +.8 lda #$80 will exit with NZ + sta bPendingMsg + clc + +.9 rts +*-------------------------------------- +CS.RUN.SplitMsg >LDYA L.MSG.NULL + >STYA ZPMsgPfxPtr + >STYA ZPMsgCmdPtr + >STYA ZPMsgArgPtr + >STYA ZPMsgExtPtr + + ldy #0 + ldx #0 + + lda (ZPMsg) + cmp #':' do we have a prefix ? + bne .2 + + lda ZPMsg + clc + adc #1 + sta ZPMsgPfxPtr + lda ZPMsg+1 + adc #0 + sta ZPMsgPfxPtr+1 + +.1 iny + lda (ZPMsg),y + beq .9 + + cmp #C.SPACE + bne .1 + + lda #0 + sta (ZPMsg),y End Of prefix + + iny Skip blank + + tya + tax Save CMD start pos + +.2 iny + + lda (ZPMsg),y + beq .4 + +.3 cmp #C.SPACE scan until end of CMD + bne .2 + + lda #0 + sta (ZPMsg),y End of CMD + + iny Skip blank + +.4 php + + txa + clc + adc ZPMsg + sta ZPMsgCmdPtr + + lda #0 + adc ZPMsg+1 + sta ZPMsgCmdPtr+1 + + plp + beq .80 + + tya + tax Save Arg start pos + + lda (ZPMsg),y + cmp #':' + beq .71 no arg....ext + +.6 iny + + lda (ZPMsg),y + beq .7 + + cmp #':' ARGS could be "ARG1 ARG2 ARG3" + bne .6 + + lda #0 + sta (ZPMsg),y + + iny Skip : + +.7 php + + txa + clc + adc ZPMsg + sta ZPMsgArgPtr + + lda #0 + adc ZPMsg+1 + sta ZPMsgArgPtr+1 + + plp + beq .80 + + lda (ZPMsg),y + cmp #':' + bne .8 + +.71 iny Skip blank + +.8 tya + clc + adc ZPMsg + sta ZPMsgExtPtr + + lda #0 + adc ZPMsg+1 + sta ZPMsgExtPtr+1 + +.80 clc + rts + +.9 sec + rts +**-------------------------------------- +CS.RUN.ProcessMsg >LDYA L.IRC.CMDS >STYA ZPPtr1 @@ -505,7 +597,8 @@ CS.RUN.CMD.JOIN sec >LDYA L.MSG.NULL jsr CS.RUN.STATUSPDATE *-------------------------------------- -CS.RUN.CMD.PART >PUSHW ZPRespPtr +CS.RUN.CMD.PART +CS.RUN.CMD.QUIT >PUSHW ZPRespPtr >PUSHW L.IRC.NAMES lda #4 channel >SYSCALL ArgV @@ -544,9 +637,6 @@ CS.RUN.CMD.MODE *-------------------------------------- CS.RUN.CMD.001 jsr CS.RUN.CMD.INFO - sec - ror bRegister - >LDYA L.MSG.JOIN jsr CS.RUN.STATUSMSG @@ -582,7 +672,11 @@ CS.RUN.CMD.001 jsr CS.RUN.CMD.INFO .9 rts *-------------------------------------- -CS.RUN.CMD.353 >LDYA ZPMsgExtPtr RPL_NAMREPLY +CS.RUN.CMD.353 ldy #80 + lda #0 + sta (ZPMsgExtPtr),y + + >LDYA ZPMsgExtPtr RPL_NAMREPLY jmp CS.RUN.STATUSPDATE *-------------------------------------- CS.RUN.CMD.372 @@ -595,176 +689,6 @@ CS.RUN.CMD.INFO >PUSHW L.SEQ.INFOMSG >SYSCALL PrintF rts *-------------------------------------- -CS.RUN.GetMsg ldy ReqLen - bne .2 - -.1 >PUSHWI 255 - >PUSHW ZPReqPtr - lda hSocket - >LIBCALL hLIBTCPIP,LIBTCPIP.Read - bcs .7 - - sty ReqLen - stz ReqPtr - -.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 -*-------------------------------------- -CS.RUN.SplitMsg >LDYA L.MSG.NULL - >STYA ZPMsgPfxPtr - >STYA ZPMsgCmdPtr - >STYA ZPMsgArgPtr - >STYA ZPMsgExtPtr - - ldy #0 - ldx #0 - - lda (ZPMsgPtr) - cmp #':' do we have a prefix ? - bne .2 - - lda ZPMsgPtr - clc - adc #1 - sta ZPMsgPfxPtr - lda ZPMsgPtr+1 - adc #0 - sta ZPMsgPfxPtr+1 - -.1 iny - lda (ZPMsgPtr),y - beq .9 - - cmp #C.SPACE - bne .1 - - lda #0 - sta (ZPMsgPtr),y End Of prefix - - iny Skip blank - - tya - tax Save CMD start pos - -.2 iny - - lda (ZPMsgPtr),y - beq .4 - -.3 cmp #C.SPACE scan until end of CMD - bne .2 - - lda #0 - sta (ZPMsgPtr),y End of CMD - - iny Skip blank - -.4 php - - txa - clc - adc ZPMsgPtr - sta ZPMsgCmdPtr - - lda #0 - adc ZPMsgPtr+1 - sta ZPMsgCmdPtr+1 - - plp - beq .80 - - tya - tax Save Arg start pos - - lda (ZPMsgPtr),y - cmp #':' - beq .71 no arg....ext - -.6 iny - - lda (ZPMsgPtr),y - beq .7 - - cmp #':' ARGS could be "ARG1 ARG2 ARG3" - bne .6 - - lda #0 - sta (ZPMsgPtr),y - - iny Skip : - -.7 php - - txa - clc - adc ZPMsgPtr - sta ZPMsgArgPtr - - lda #0 - adc ZPMsgPtr+1 - sta ZPMsgArgPtr+1 - - plp - beq .80 - - lda (ZPMsgPtr),y - cmp #':' - bne .8 - -.71 iny Skip blank - -.8 tya - clc - adc ZPMsgPtr - sta ZPMsgExtPtr - - lda #0 - adc ZPMsgPtr+1 - sta ZPMsgExtPtr+1 - -.80 clc - rts - -.9 sec - rts -*-------------------------------------- CS.RUN.DUMPMSG >PUSHW L.SEQ.DUMPMSG >PUSHW ZPMsgPfxPtr @@ -776,6 +700,95 @@ CS.RUN.DUMPMSG >PUSHW L.SEQ.DUMPMSG >SYSCALL PrintF rts *-------------------------------------- +CS.RUN.SendMsg >PUSHYA + >PUSHW ZPRespPtr + lda hSocket + >LIBCALL hLIBTCPIP,LIBTCPIP.Write + rts +*-------------------------------------- +CS.RUN.SCRSETUP >PUSHW L.SEQ.INIT + >PUSHBI 0 + >SYSCALL PrintF + bcs CS.RUN.TXTCLR.RTS + + jsr CS.RUN.TOPUPDATE + bcs CS.RUN.TXTCLR.RTS +*-------------------------------------- +CS.RUN.TXTCLR lda #0 + sta (pData) + + stz TextPtr + stz TextLen + stz bEscMode + + >PUSHW L.SEQ.TXTCLR + >PUSHBI 0 + >SYSCALL PrintF +CS.RUN.TXTCLR.RTS + rts +*-------------------------------------- +CS.RUN.TOPUPDATE + >PUSHW ZPOutputBufPtr + >PUSHW L.MSG.TOPBAR + >PUSHB #K.VER + >PUSHB /K.VER + + lda #1 + >SYSCALL ArgV + >PUSHYA + + lda #2 + >SYSCALL ArgV + >PUSHYA + + lda #3 + >SYSCALL ArgV + >PUSHYA + + >PUSHBI 8 + >SYSCALL SPrintF + + >PUSHW L.SEQ.BAR + >PUSHBI 1 + >PUSHW ZPOutputBufPtr + >PUSHBI 3 + >SYSCALL PrintF + + rts +*-------------------------------------- +CS.RUN.STATUSPDATE + pha + phy + >PUSHW ZPOutputBufPtr + >PUSHW L.MSG.STATUSBAR + + lda #4 + >SYSCALL ArgV + >PUSHYA + ply + pla + >PUSHYA + >PUSHBI 4 + + bra CS.RUN.STATUS +*-------------------------------------- +CS.RUN.STATUSMSG + pha + >PUSHW ZPOutputBufPtr + >PUSHW L.MSG.STATUSBARMSG + pla + >PUSHYA + >PUSHBI 2 + +CS.RUN.STATUS >SYSCALL SPrintF + + >PUSHW L.SEQ.BAR + >PUSHBI 21 + >PUSHW ZPOutputBufPtr + >PUSHBI 3 + >SYSCALL PrintF + rts +*-------------------------------------- CS.RUN.CHARIN bit bEscMode bpl .4 @@ -816,14 +829,6 @@ CS.RUN.CHARIN bit bEscMode cmp #C.DEL bne CS.RUN.CHARIN.INS - lda TextLen - beq .8 - - lda TextPtr - beq .8 - - lda #C.BS - >SYSCALL PutChar jmp CS.RUN.CHARIN.DEL *-------------------------------------- CS.RUN.CHARIN.INS @@ -851,11 +856,9 @@ CS.RUN.CHARIN.INS.8 *-------------------------------------- CS.RUN.CHARIN.CTRL cmp #C.CR - bne .1 + beq CS.RUN.CHARIN.CR - jmp CS.RUN.CHARIN.CR - -.1 cmp #$14 Ctrl-T + cmp #$14 Ctrl-T bne .8 >PUSHW ZPRespPtr @@ -913,23 +916,40 @@ CS.RUN.CHARIN.CR jmp CS.RUN.TXTCLR .9 rts +*-------------------------------------- +CS.RUN.CHARIN.DEL + *-------------------------------------- CS.RUN.CHARIN.LEFT clc - lda TextPtr + ldy TextPtr beq .9 - dec TextPtr + dey + sty TextPtr + lda #0 + sta (pData),y lda #C.BS >SYSCALL PutChar + lda #C.SPACE + >SYSCALL PutChar + lda #C.BS + >SYSCALL PutChar + + .9 rts +*-------------------------------------- CS.RUN.CHARIN.DOWN CS.RUN.CHARIN.UP clc rts +*-------------------------------------- CS.RUN.CHARIN.RIGHT + clc + rts + lda TextPtr cmp TextLen clc @@ -943,17 +963,6 @@ CS.RUN.CHARIN.RIGHT >SYSCALL PutChar .9 rts *-------------------------------------- -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? @@ -965,38 +974,36 @@ CS.DOEVENT lda (pEvent) .9 sec do not discard TIMER event rts *-------------------------------------- -CS.QUIT lda hRespBuf +CS.QUIT ldy #hOutputBuf + jsr .7 + + ldy #hRespBuf + jsr .7 + + ldy #hMsgBuf + jsr .7 + + ldy #hBufBuf + jsr .7 + + lda hSocket beq .1 - >SYSCALL FreeMem - -.1 lda hReqBuf - beq .2 - - >SYSCALL FreeMem - -.2 lda hLineBuf - beq .3 - - >SYSCALL FreeMem - -.3 lda hMsgBuf - beq .4 - - >SYSCALL FreeMem - -.4 lda hSocket - beq .5 - >LIBCALL hLIBTCPIP,LIBTCPIP.Shutdown -.5 lda hLIBTCPIP - beq .8 +.1 lda hLIBTCPIP + beq .2 >SYSCALL UnloadLib -.8 clc +.2 clc rts + +.7 lda (pData),y + beq .8 + + >SYSCALL FreeMem +.8 rts *-------------------------------------- CS.END LIBTCPIP .AZ "libtcpip" @@ -1025,6 +1032,7 @@ IRC.REP.JOIN .AZ "JOIN" IRC.CMDS .AZ "PING" .AZ "JOIN" .AZ "PART" + .AZ "QUIT" .AZ "PRIVMSG" .AZ "MODE" .AZ "001" @@ -1045,11 +1053,11 @@ IRC.NAMES .AZ "NAMES %s\r\n" IRC.PRIVMSG .AZ "PRIVMSG %s :%s\r\n" *-------------------------------------- SEQ.INIT .AZ "\ec\e(B\e)0\e[?7l\e[2;20r\e[22;1H\e[?7h" -SEQ.BAR .AZ "\e7\e[%d;1H\e[7m\e[37;40m%80s\e[0m\e8" -SEQ.TXTCLR .AZ "\e[22;1H\e[K\r\n\e[K\r\n\e[K\e[22;1H" -SEQ.PRIVMSG .AZ "\e7\e[20;1H\r\n\e[7m%s:\e[0m%s\e8" +SEQ.BAR .AZ "\e[?7l\e7\e[%d;1H\e[7m\e[37;40m%80s\e[0m\e8\e[?7h" +SEQ.TXTCLR .AZ "\e[22;1H\e[97;41m\e[K\r\n\e[K\r\n\e[K\e[22;1H" +SEQ.PRIVMSG .AZ "\e7\e[20;1H\r\n\e[93;44m\e[7m%s:\e[0m\e[93;44m%s\e[K\e8" SEQ.DUMPMSG .AZ "\e7\e[20;1H\r\n\e[7m%s \e[0m%s %s %s\e8" -SEQ.INFOMSG .AZ "\e7\e[20;1H%s\r\n\e8" +SEQ.INFOMSG .AZ "\e7\e[20;1H\e[92;44m%s\r\n\e8" SEQ.RESET .AZ "\ec" *-------------------------------------- SA.LOCAL .DA #AF.INET S.SOCKADDR.AF @@ -1065,6 +1073,10 @@ SA.REMOTE .DA #AF.INET S.SOCKADDR.AF .DUMMY .OR 0 DS.START .BS TEXTMAX+1 +hBufBuf .BS 1 +hMsgBuf .BS 1 +hRespBuf .BS 1 +hOutputBuf .BS 1 DS.END .ED *-------------------------------------- MAN diff --git a/LIB/LIBBLKDEV.S.D2.txt b/LIB/LIBBLKDEV.S.D2.txt index 8bf02c82..6f4e611f 100644 --- a/LIB/LIBBLKDEV.S.D2.txt +++ b/LIB/LIBBLKDEV.S.D2.txt @@ -128,7 +128,13 @@ D2MoveHead.SEI lda Slotn0 .3 and #6 ora Slotn0 - tay + bcs .30 + + phx + tax + pla + +.30 tay lda IO.D2.Ph0On,x .4 lda IO.D2.RData SELF MODIFIED diff --git a/ProDOS.FX/ProDOS.S.XRW.txt b/ProDOS.FX/ProDOS.S.XRW.txt index 55136255..44d93bf8 100644 --- a/ProDOS.FX/ProDOS.S.XRW.txt +++ b/ProDOS.FX/ProDOS.S.XRW.txt @@ -380,10 +380,10 @@ XRW.Seek ldx XRW.UnitIndex .3 and #6 ora A2L - bcc .30 + bcs .30 phx - tay + tax pla .30 tay