From 1bdffefd00ccc7688b173ecadd8cd1db65a32283 Mon Sep 17 00:00:00 2001 From: burniouf Date: Mon, 5 Jul 2021 21:15:15 +0200 Subject: [PATCH] BBSD & ACOS INPUT, SHUTDOWN with args, bobbi's stuff --- .Floppies/A2OSX.BUILD.po | Bin 33553920 -> 33553920 bytes A2osX.S.QC.txt | 70 ++++--- BIN/ACOS.S.CODE.txt | 7 + BIN/ACOS.S.CORE.txt | 1 + BIN/ACOS.S.KW.txt | 23 ++- BIN/ACOS.S.RT.txt | 43 ++++ BIN/ACOS.S.txt | 3 +- BIN/SED.S.txt | 5 + BIN/SHUTDOWN.S.txt | 67 +++++-- SBIN/BBSD.S.txt | 421 +++++++++++++++++++++++++++++++++++++++ 10 files changed, 596 insertions(+), 44 deletions(-) create mode 100644 SBIN/BBSD.S.txt diff --git a/.Floppies/A2OSX.BUILD.po b/.Floppies/A2OSX.BUILD.po index e2113c5335fc73631f6670bfb904acddbff3ff6c..17a39e97142eeafabf7142e2da0918da46b62440 100644 GIT binary patch delta 51456 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 O@4z399paQD<^KQ~%71JC delta 46675 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
yKkqiOFDOU3Nw=fgNBoCqQk@P~ClR=3#7 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 diff --git a/A2osX.S.QC.txt b/A2osX.S.QC.txt index e41c7303..ccf52e66 100644 --- a/A2osX.S.QC.txt +++ b/A2osX.S.QC.txt @@ -42,13 +42,13 @@ A2osX.QC.Start1 sei ldx $280 some /PATH/.SYSTEM file passed ? beq A2osX.QC.Start2 -.2 dex +.2 dex lda $280,x cmp #'/' bne .2 - + stx A2osX.QC.BOOT get /PATH/ in QC.BOOT... - + .3 lda $280,x sta A2osX.QC.BOOT,x dex @@ -56,28 +56,46 @@ A2osX.QC.Start1 sei jsr A2osX.QC.SetPFX cd to QC.BOOT... bcs A2osX.QC.Start2 - + jsr A2osX.QC.Load bcs A2osX.QC.Start2 - - lda $2000 - cmp #$4C - bne .8 - - lda #$EE - cmp $2003 - bne .8 - - cmp $2004 - bne .8 - - ldx $280 - +*-------------------------------------- +* $2000 = JMP $xxxx +* $2003 = $EE +* $2004 = $EE * $2005 = BufSize * $2006 = PathLen * $2007... Path - - +*-------------------------------------- + lda $2000 + cmp #$4C + bne .8 + + lda #$EE + cmp $2003 + bne .8 + + cmp $2004 + bne .8 + + ldy $280 + iny + lda $280,y + beq .8 + + cmp $2005 + bcs .8 + + sta $2006 + ldx #0 + +.4 iny + lda $280,y + inx + sta $2006,x + cpx $2006 + bne .4 + .8 jmp $2000 A2osX.QC.Start2 sec @@ -110,7 +128,7 @@ A2osX.QC.Start2 sec .5 lda A2osX.QC.BOOT,x sta $280,x - sta $2C0-1,x BOOT sz for KERNEL + sta $2C0-1,x BOOT sz for KERNEL dex bpl .5 @@ -132,7 +150,7 @@ A2osX.QC.Start2 sec sta $280,x cpy SYSKERNEL bne .7 - + stx $280 jsr A2osX.QC.Load @@ -152,11 +170,11 @@ A2osX.QC.SetPFX jsr MLI A2osX.QC.Load >LDYAI MSG.LOAD clc jsr A2osX.QC.PrintYA - + >LDYAI $280 clc jsr A2osX.QC.PrintYA - + jsr MLI .DA #MLIOPEN .DA MLIOPEN03 @@ -190,12 +208,12 @@ A2osX.QC.Load >LDYAI MSG.LOAD sec rts - + .8 >LDYAI MSG.LOAD.OK sec jsr A2osX.QC.PrintYA clc - rts + rts *-------------------------------------- A2osX.QC.PrintYA php diff --git a/BIN/ACOS.S.CODE.txt b/BIN/ACOS.S.CODE.txt index 5e511558..3435b0fb 100644 --- a/BIN/ACOS.S.CODE.txt +++ b/BIN/ACOS.S.CODE.txt @@ -169,6 +169,13 @@ CODE.FPRINTINT ldx #0 rts *-------------------------------------- +CODE.JSRRT lda #$20 JSR + jsr CODE.EmitByte + lda J.RT,x + jsr CODE.EmitByte + lda J.RT+1,x + jmp CODE.EmitByte +*-------------------------------------- CODE.FPUCALL lda #$A2 LDX #imm jsr CODE.EmitByte txa diff --git a/BIN/ACOS.S.CORE.txt b/BIN/ACOS.S.CORE.txt index d3cc4a69..1cd6b11a 100644 --- a/BIN/ACOS.S.CORE.txt +++ b/BIN/ACOS.S.CORE.txt @@ -594,6 +594,7 @@ CORE.GetVarType jsr CORE.GetChar inc ZPInputBufPtr bne .1 + inc ZPInputBufPtr+1 skip $ .1 tax NZ diff --git a/BIN/ACOS.S.KW.txt b/BIN/ACOS.S.KW.txt index e7beb81e..5909d3b9 100644 --- a/BIN/ACOS.S.KW.txt +++ b/BIN/ACOS.S.KW.txt @@ -181,7 +181,28 @@ KW.ELSE clc rts *-------------------------------------- KW.INFO -KW.INPUT + lda #E.CSYN + sec + rts +*-------------------------------------- +KW.INPUT jsr CORE.GetNextCharNB + bcs .9 + + jsr CORE.CreateOrGetVar + bcs .99 + + ldx #0 + jsr CODE.JSRRT + jsr CODE.STRSET + + clc + rts + +.9 lda #E.CSYN + sec + +.99 rts +*-------------------------------------- KW.KILL KW.LINK KW.LOG diff --git a/BIN/ACOS.S.RT.txt b/BIN/ACOS.S.RT.txt index 5947393f..cb8d4905 100644 --- a/BIN/ACOS.S.RT.txt +++ b/BIN/ACOS.S.RT.txt @@ -18,6 +18,49 @@ RT.StrLeft *-------------------------------------- RT.FileOpen *-------------------------------------- +RT.Input lda #0 + sta (ZPStrBuf) + + stz ZPPtr1 + +.1 >SYSCALL GetChar + bcs .9 + + ldy ZPPtr1 + + cmp #C.SPACE + bcs .7 + + cmp #C.CR + beq .8 + + cmp #C.BS + bne .1 + + cpy #0 + beq .1 + + >SYSCALL PutChar + lda #C.SPACE + >SYSCALL PutChar + lda #C.BS + >SYSCALL PutChar + dec ZPPtr1 + bra .1 + +.7 sta (ZPStrBuf),y + >SYSCALL PutChar + inc ZPPtr1 + bne .1 + +.8 lda #0 + sta (ZPStrBuf),y + + >PUSHW ZPStrBuf + clc + +.9 rts +*-------------------------------------- MAN SAVE usr/src/bin/acos.s.rt LOAD usr/src/bin/acos.s diff --git a/BIN/ACOS.S.txt b/BIN/ACOS.S.txt index 97494dec..3835b76b 100644 --- a/BIN/ACOS.S.txt +++ b/BIN/ACOS.S.txt @@ -169,6 +169,7 @@ J.ACOS.FN .DA FN.BYTE .DA FN.VAL .DA FN.WHENd .DA FN.WIDTH +J.RT .DA RT.INPUT .DA 0 *-------------------------------------- * Called once at process creation @@ -399,7 +400,7 @@ PrintErrorMsg >LDA.G bTrace >SYSCALL FPrintF rts *-------------------------------------- -* Precompiled code +* Pre-compiled code *-------------------------------------- CCODE.PULLWS >PULLA pha diff --git a/BIN/SED.S.txt b/BIN/SED.S.txt index 77646dbf..a7d6a602 100644 --- a/BIN/SED.S.txt +++ b/BIN/SED.S.txt @@ -1,3 +1,5 @@ +NEW + AUTO 3,1 .LIST OFF .OP 65C02 .OR $2000 @@ -379,3 +381,6 @@ MSG.CRLF .AZ "\r\n" DS.START DS.END .ED *-------------------------------------- +MAN +SAVE usr/src/bin/od.s +ASM diff --git a/BIN/SHUTDOWN.S.txt b/BIN/SHUTDOWN.S.txt index 37e290c9..d6f4f3f3 100644 --- a/BIN/SHUTDOWN.S.txt +++ b/BIN/SHUTDOWN.S.txt @@ -15,9 +15,12 @@ DEFAULT.TIMEOUT .EQ 60 .OR ZPBIN ZS.START ZPPtr1 .BS 2 +CmdPtr .BS 2 ArgPtr .BS 2 + Count .BS 1 Index .BS 1 + Timeout .BS 4 bSec .BS 1 bTimeout .BS 1 @@ -66,18 +69,9 @@ CS.RUN lda #DEFAULT.TIMEOUT lda (ZPPtr1) cmp #'-' - beq .2 + bne .5 - lda ArgPtr+1 - bne .9 - - >LDYA ZPPtr1 - >STYA ArgPtr - lda #3 - sta Timeout - bra .1 - -.2 ldy #2 + ldy #2 lda (ZPPtr1),y bne .9 @@ -113,6 +107,21 @@ CS.RUN lda #DEFAULT.TIMEOUT sec ror bRestart bra .1 + +.5 >LDYA ZPPtr1 + ldx CmdPtr+1 + bne .6 + + >STYA CmdPtr + lda #3 + sta Timeout + bra .1 + +.6 ldx ArgPtr+1 + bne .1 + + >STYA ArgPtr + bra .1 .8 jsr CS.RUN.WAIT bcs .99 @@ -272,7 +281,6 @@ CS.RUN.DEV ldx #1 >PUSHBI 3 >SYSCALL PrintF - .7 inc Index inc Index @@ -284,13 +292,13 @@ CS.RUN.DEV ldx #1 *-------------------------------------- CS.RUN.SYS stz $280 - >LDYA ArgPtr - beq .9 + >LDYA CmdPtr + beq .8 >PUSHYA >PUSHWI $281 >SYSCALL RealPath - bcs .9 + bcs .8 ldx #$ff @@ -299,8 +307,35 @@ CS.RUN.SYS stz $280 bne .1 stx $280 + + >LDYA ArgPtr + beq .8 + + >PUSHYA + >PUSHBI 2 + txa Arg0 len + ora #$80 $280 + inc +1 byte len + pha + inc skip arg1 len byte + >PUSHA + >SYSCALL RealPath + + ply + ldy $280 + ldx #$ff + +.2 iny + inx + lda $281,y + bne .2 + + txa + ldy $280 + iny + sta $280,y -.9 rts +.8 rts *-------------------------------------- CS.GetPSByID ldx #0 diff --git a/SBIN/BBSD.S.txt b/SBIN/BBSD.S.txt new file mode 100644 index 00000000..f86668b6 --- /dev/null +++ b/SBIN/BBSD.S.txt @@ -0,0 +1,421 @@ +NEW + AUTO 3,1 + .LIST OFF + .OP 65C02 + .OR $2000 + .TF sbin/bbsd +*-------------------------------------- + .INB inc/macros.i + .INB inc/a2osx.i + .INB inc/mli.i + .INB inc/mli.e.i + .INB inc/eth.i + .INB inc/libtcpip.i + .INB inc/net.telnet.i +*-------------------------------------- +TIMEOUT.MAX .EQ 200 20 sec. +*-------------------------------------- + .DUMMY + .OR ZPBIN +ZS.START +ZPIPCfgPtr .BS 2 +ZPSktPtr .BS 2 + +ZPMsgFile .BS 2 +ZPStartupFile .BS 2 + +hFile .BS 1 +hLineBuf .BS 1 +ZPLinePtr .BS 2 + +ZPPtr1 .BS 2 + +hMsgFile .BS 1 +hStartupFile .BS 1 + +TimeOut .BS 1 +hSrvSocket .BS 1 +hClientSocket .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 CS + .DA DS.END-DS.START DS + .DA #32 SS + .DA #ZS.END-ZS.START Zero Page Size + .DA 0 +*-------------------------------------- +* Relocation Table +*-------------------------------------- +.1 .DA CS.INIT + .DA CS.RUN + .DA CS.DOEVENT + .DA CS.QUIT +L.LIBTCPIP .DA LIBTCPIP +L.ETCBBSDCONF .DA ETCBBSDCONF +L.KEYWORDS.CONF .DA KEYWORDS.CONF +J.KEYWORDS.CONF .DA CS.RUN.CONF.TCPLISTEN + .DA CS.RUN.CONF.COMLISTEN + .DA CS.RUN.CONF.MSGFILE + .DA CS.RUN.CONF.STARTUPFILE +L.SA.LOCAL .DA SA.LOCAL +L.MSG.TCPWAIT .DA MSG.TCPWAIT +L.MSG.INITOK .DA MSG.INITOK +L.MSG.TCPIPERR .DA MSG.TCPIPERR +L.MSG.SKTERR .DA MSG.SKTERR +L.MSG.INCOMING .DA MSG.INCOMING +L.NOD.Template .DA NOD.Template +L.CMD.Template .DA CMD.Template + .DA 0 +*-------------------------------------- +CS.INIT >LDYA L.LIBTCPIP + >SYSCALL LoadLib + bcs .9 + + sta hLIBTCPIP + +.9 rts +*-------------------------------------- +CS.RUN lda #TIMEOUT.MAX + sta TimeOut + + >LDYA L.MSG.TCPWAIT + >SYSCALL PutS + +.1 >SLEEP + >LIBCALL hLIBTCPIP,LIBTCPIP.GETCFG is TCPIP loaded ? + bcs .99 + + >STYA ZPIPCfgPtr + + lda (ZPIPCfgPtr) Configured ? + bmi CS.RUN.INIT + + lda TimeOut + beq .99 + + ldy #S.PS.hStdIn + lda (pPS),y + >SYSCALL FEOF + bcs .9 I/O err + + tay + bne .1 + + >SYSCALL GetChar + bcs .9 + + cmp #$03 + bne .1 +* sec + rts + +.99 pha + >LDYA L.MSG.TCPIPERR + >SYSCALL PutS + pla + sec +.9 rts + +CS.RUN.INIT ldx #3 + ldy #S.IPCFG.IP+3 + +.1 lda (ZPIPCfgPtr),y + sta SA.LOCAL+S.SOCKADDR.ADDR,x + dey + dex + bpl .1 + + jsr CS.RUN.CONF + bcs .99 + + >PUSHBI S.SOCKET.T.STREAM + >PUSHBI 0 no protocol + >LIBCALL hLIBTCPIP,LIBTCPIP.Socket + bcs .9 + + sta hSrvSocket + + >PUSHA + >PUSHW L.SA.LOCAL + >LIBCALL hLIBTCPIP,LIBTCPIP.Bind + bcs .9 + + lda hSrvSocket + >LIBCALL hLIBTCPIP,LIBTCPIP.Listen + bcs .9 + + >LDYA L.MSG.INITOK + >SYSCALL PutS + +.2 >SLEEP + + lda hSrvSocket + >LIBCALL hLIBTCPIP,LIBTCPIP.Accept + bcs .2 + + pha + jsr CS.RUN.CLIENT + pla + + bcc .2 + >LIBCALL hLIBTCPIP,LIBTCPIP.Shutdown + bra .2 + +.9 pha + >LDYA L.MSG.SKTERR + >SYSCALL PutS + pla + sec +.99 rts +*-------------------------------------- +CS.RUN.CLIENT >SLEEP give some time for TCPIP SYN/ACK + + sta hClientSocket + >SYSCALL GetMemPtr + >STYA ZPSktPtr + + >PUSHW L.MSG.INCOMING + + >PUSHB hClientSocket + + ldx #3 + ldy #S.SOCKET.REM.ADDR + +.1 >PUSHB (ZPSktPtr),y + iny + dex + bpl .1 + + >PUSHBI 5 + >SYSCALL PrintF + + >PUSHEA.G NodBuf + >PUSHW L.NOD.Template + >PUSHB hClientSocket + >PUSHBI 1 + >SYSCALL SPrintF + +CS.RUN.CLIENT1 >PUSHEA.G NodBuf+5 + >PUSHW 0 + >PUSHB hClientSocket + >SYSCALL MKNod + bcs .9 + + >PUSHEA.G CmdBuf + >PUSHW L.CMD.Template + >PUSHEA.G NodBuf + >PUSHW ZPStartupFile + >PUSHBI 4 + >SYSCALL SPrintF + + >PUSHEA.G CmdBuf + >PUSHBI 0 + >SYSCALL ExecL + +* clc +.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 hSrvSocket + beq .3 + + >LIBCALL hLIBTCPIP,LIBTCPIP.Shutdown + +.3 lda hLIBTCPIP + beq .8 + + >SYSCALL UnloadLib + +.8 clc +CS.QUIT.RTS rts +*-------------------------------------- +CS.RUN.CONF >PUSHW L.ETCBBSDCONF + >PUSHBI O.RDONLY+O.TEXT + >PUSHBI S.FI.T.TXT + >PUSHWZ + >SYSCALL FOpen + bcs CS.QUIT.RTS + + sta hFile + + >LDYAI 256 + >SYSCALL GetMem + bcs .97 + + >STYA ZPLinePtr + stx hLineBuf + +.1 >PUSHB hFile + >PUSHW ZPLinePtr + >PUSHWI 256 + >SYSCALL FGetS + bcs .8 + + tya + beq .1 + + lda (ZPLinePtr) + cmp #'#' + beq .1 + + >LDYA L.KEYWORDS.CONF + >STYA ZPPtr1 + + ldx #0 + +.2 ldy #0 + +.3 lda (ZPPtr1),y + cmp (ZPLinePtr),y + bne .4 + + iny + cmp #C.SPACE + bne .3 + + jsr CS.RUN.CONF.JMP + bcc .1 + + bra .97 + +.4 inx + inx + + ldy #0 + +.5 iny + lda (ZPPtr1),y + cmp #C.SPACE + bne .5 + + tya + sec + adc ZPPtr1 + sta ZPPtr1 + bcc .6 + inc ZPPtr1+1 + +.6 lda (ZPPtr1) + bne .2 + +.96 lda #E.SYN + sec + .HS 90 BCC +.8 clc + +.97 php + pha + + lda hLineBuf + beq .98 + + >SYSCALL FreeMem + +.98 lda hFile + beq .99 + + >SYSCALL FClose + +.99 pla + plp + rts +*-------------------------------------- +CS.RUN.CONF.JMP tya + clc + adc ZPLinePtr + sta ZPPtr1 + tay + lda #0 + adc ZPLinePtr+1 + sta ZPPtr1+1 + + jmp (J.KEYWORDS.CONF,x) + +CS.RUN.CONF.TCPLISTEN + >SYSCALL AToI + bcs .9 + + >STYA SA.LOCAL+S.SOCKADDR.PORT + +.9 rts + +CS.RUN.CONF.COMLISTEN + +.9 clc + rts +CS.RUN.CONF.MSGFILE + >PUSHYA + >PUSHWI 0 Allocate + >SYSCALL RealPath + bcs .9 + + >STYA ZPMsgFile + stx hMsgFile + +.9 rts + +CS.RUN.CONF.STARTUPFILE + >PUSHYA + >PUSHWI 0 Allocate + >SYSCALL RealPath + bcs .9 + + >STYA ZPStartupFile + stx hStartupFile + +.9 rts +*-------------------------------------- +CS.END +*-------------------------------------- +hLIBTCPIP .BS 1 +LIBTCPIP .AZ "libtcpip" +ETCBBSDCONF .AZ "${BOOT}etc/bbsd.conf" +*-------------------------------------- +KEYWORDS.CONF .AS "tcplisten " + .AS "comlisten " + .AS "msgfile " + .AS "startupfile " + .DA #0 +*-------------------------------------- +MSG.TCPWAIT .AZ "BBSD:Waiting for TCP/IP initializing..." +MSG.INITOK .AZ "BBSD:Init Ok, Listening." +MSG.TCPIPERR .AZ "BBSD:TCP/IP Not initialized properly." +MSG.SKTERR .AZ "BBSD:Listen Error." +MSG.INCOMING .AZ "BBSD:Incoming Connection [SKT=%h] From : %d.%d.%d.%d\r\n" +*-------------------------------------- +NOD.Template .AZ "/dev/tty%h" +CMD.Template .AZ "${ROOT}sbin/getty -E %s %s" +*-------------------------------------- +SA.LOCAL .DA #AF.INET S.SOCKADDR.AF + .BS 1 + .BS 4 S.SOCKADDR.ADDR + .DA TCP.PORT.TELNET +*-------------------------------------- + .DUMMY + .OR 0 +DS.START +NodBuf .BS 11 +CmdBuf .BS 65 +DS.END .ED +*-------------------------------------- +MAN +SAVE usr/src/sbin/bbsd.s +ASM