diff --git a/.Floppies/A2OSX.BUILD.po b/.Floppies/A2OSX.BUILD.po index 3c885cfd..7c2767e6 100644 Binary files a/.Floppies/A2OSX.BUILD.po and b/.Floppies/A2OSX.BUILD.po differ diff --git a/BIN/ADT.S.txt b/BIN/ADT.S.txt new file mode 100644 index 00000000..b70fdc4f --- /dev/null +++ b/BIN/ADT.S.txt @@ -0,0 +1,454 @@ +NEW +PREFIX +AUTO 4,1 + .LIST OFF + .OP 65C02 + .OR $2000 + .TF BIN/DEV/ADT +*-------------------------------------- + .INB INC/MACROS.I + .INB INC/A2OSX.I + .INB INC/MLI.E.I + .INB INC/ETH.I + .INB INC/LIBTCPIP.I +*-------------------------------------- +RESP.BUFSIZE .EQ 1024 +TIMEOUT.MAX .EQ 100 10 sec. +*-------------------------------------- + .DUMMY + .OR ZPBIN +ZS.START +ZPIPCfgPtr .BS 2 +ZPHostPtr .BS 2 +ZPPtr .BS 2 +ZPCnt .BS 2 +ZPReqBufPtr .BS 2 +ZPReqBufLen .BS 2 +ZPRespBufPtr .BS 2 +ZPPayloadPtr .BS 2 +ZPPayloadLen .BS 2 +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 Length To Relocate + .DA DS.END-DS.START Data Segment to Allocate + .DA #16 SS + .DA #ZS.END-ZS.START Zero Page Size + .DA 0 +*-------------------------------------- +.1 .DA CS.INIT + .DA CS.RUN + .DA CS.DOEVENT + .DA CS.QUIT +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.MSG.IPKO .DA MSG.IPKO +L.MSG.USAGE .DA MSG.USAGE +L.MSG.UNKNOWN .DA MSG.UNKNOWN +L.MSG.HOSTOK .DA MSG.HOSTOK +L.MSG.SKTKO .DA MSG.SKTKO +L.MSG.SKTOK .DA MSG.SKTOK +L.MSG.SKTERR .DA MSG.SKTERR +L.MSG.IOERR .DA MSG.IOERR +L.ADT.DIR .DA ADT.DIR + .DA 0 +*-------------------------------------- +CS.INIT >LDYA L.LIBTCPIP + >SYSCALL LoadLib + bcs .9 + sta hLIBTCPIP + +.9 rts +*-------------------------------------- +CS.RUN >LIBCALL hLIBTCPIP,LIBTCPIP.GET.IPCFG is TCPIP loaded ? + >STYA ZPIPCfgPtr + + lda (ZPIPCfgPtr) Configured ? + bmi CS.RUN.IPOK + + >LDYA L.MSG.IPKO + >SYSCALL puts + lda #E.SYN + sec + rts + +CS.RUN.IPOK ldy #S.IPCFG.IP+3 + ldx #3 + +.1 lda (ZPIPCfgPtr),y + sta SA.LOCAL+S.SOCKADDR.ADDR,x + dey + dex + bpl .1 + + >INC.G ArgIndex + >SYSCALL ArgV + bcs .9 + + >STYA ZPHostPtr + jsr Init.Timeout + +.2 >PUSHW L.SA.REMOTE.AD + + >PUSHW ZPHostPtr + >LIBCALL hLIBTCPIP,LIBTCPIP.HST.GETBYNAME + bcc CS.RUN.HOSTOK + >SLEEP + jsr Wait.Timeout + bcc .2 + + >PUSHW ZPHostPtr + >PUSHBI 2 + >LDYA L.MSG.UNKNOWN + >SYSCALL printf + bra CS.RUN.ESYN + +.9 >PUSHBI 0 + >LDYA L.MSG.USAGE + >SYSCALL printf + +CS.RUN.ESYN lda #E.SYN + sec +CS.RUN.RTS rts + +CS.RUN.HOSTOK >INC.G ArgIndex + >SYSCALL ArgV + bcc .10 + jmp CS.RUN.PORTOK + +.10 >STYA ZPPtr + lda (ZPPtr) + cmp #'-' + beq .1 + + >LDYA ZPPtr + >SYSCALL atoi + bcs CS.RUN.RTS + >STYA SA.REMOTE+S.SOCKADDR.PORT + + >INC.G ArgIndex + >SYSCALL ArgV + bcs .8 + + >STYA ZPPtr + lda (ZPPtr) + cmp #'-' + bne CS.RUN.ESYN + +.1 ldy #1 + lda (ZPPtr),y + cmp #'U' + bne .2 + + >INC.G ArgIndex + >SYSCALL ArgV +.9 bcs CS.RUN.ESYN + + >STYA ZPReqBufPtr + >SYSCALL strlen + >STYA ZPReqBufLen +.8 bra CS.RUN.PORTOK + +.2 cmp #'F' + bne CS.RUN.ESYN + + >INC.G ArgIndex + >SYSCALL ArgV + bcs CS.RUN.RTS + +CS.RUN.PORTOK >PUSHW ZPHostPtr + >PUSHW SA.REMOTE+S.SOCKADDR.PORT + + ldx #3 + +.1 >PUSHB SA.REMOTE+S.SOCKADDR.ADDR,x + dex + bpl .1 + + >PUSHBI 8 + >LDYA L.MSG.HOSTOK + >SYSCALL printf + +CS.RUN.OPENSKT >PUSHBI 0 no protocol + lda #S.SOCKET.T.DGRAM + >LIBCALL hLIBTCPIP,LIBTCPIP.Socket + bcs .9 + + >STA.G hSocket + pha + >PUSHW L.SA.LOCAL + pla + >LIBCALL hLIBTCPIP,LIBTCPIP.Bind + bcc .2 + +.9 >LDYA L.MSG.SKTKO + >SYSCALL puts + lda #E.SYN + sec + rts + +.2 >PUSHW L.SA.REMOTE + >LDA.G hSocket + >LIBCALL hLIBTCPIP,LIBTCPIP.Connect + bcs .9 + + >LDYA L.MSG.SKTOK + >SYSCALL puts + + >LDYAI RESP.BUFSIZE + >SYSCALL getmem + bcs .9 + >STYA ZPRespBufPtr + txa + >STA.G hRespBuf + +CS.RUN.GET jsr CS.RUN.DIR + bcs .99 + + jsr CS.RUN.DIRDECODE + bcs .99 + +.9 lda #0 + sec +.99 rts +*-------------------------------------- +CS.RUN.SKTERR pha + >PUSHA + >PUSHBI 1 + >LDYA L.MSG.SKTERR + >SYSCALL printf + pla + sec + rts +*-------------------------------------- +CS.RUN.IOERR pha + >PUSHA + >PUSHBI 1 + >LDYA L.MSG.IOERR + >SYSCALL printf + pla + sec + rts +*-------------------------------------- +CS.RUN.DIR jsr Init.Timeout + +.10 >PUSHWI ADT.DIR.LEN + >PUSHW L.ADT.DIR + + >LDA.G hSocket + >LIBCALL hLIBTCPIP,LIBTCPIP.Send + bcc .8 + tay + bne .99 + + >SLEEP + jsr Wait.TimeOut + bcc .10 + +.99 lda #MLI.E.IO + sec + rts + +.8 clc + rts +*-------------------------------------- +CS.RUN.DIRDECODE + jsr Init.Timeout + +.1 >SLEEP + + >LDA.G hSocket + >LIBCALL hLIBTCPIP,LIBTCPIP.Recv + bcc .2 + + tay + bne .8 + + >LDA.G bResponse + bne .81 + + jsr Wait.Timeout + bcs .99 + + bra .1 + +.2 >STA.G hFrame + >SYSCALL GetMemPtr + >STYA ZPRespBufPtr + + ldy #S.UDP+1 + lda (ZPRespBufPtr),y + cmp #$C1 + bne .99 + + iny + lda (ZPRespBufPtr),y + sta ZPPayloadLen + + iny + lda (ZPRespBufPtr),y + sta ZPPayloadLen+1 + + iny + lda (ZPRespBufPtr),y + cmp #$D3 + bne .99 + + >DEBUG + jsr CS.RUN.UNRLE + + >PUSHW ZPPayloadLen + >PUSHW ZPPayloadPtr + ldy #S.PS.hStdOut + lda (pPs),y + >SYSCALL fwrite + + >INC.G bResponse + bra .1 + +.8 cmp #MLI.E.IO SKT Close ? + bne .9 + +.80 >LDA.G bResponse + beq .99 +.81 clc + rts + +.99 lda #MLI.E.IO +.9 sec + + rts +*-------------------------------------- +CS.RUN.UNRLE >LDYA ZPPayloadLen + >SYSCALL getmem + bcs .9 + + >STYA ZPPayloadPtr + >STYA ZPPtr + txa + >STA.G hPayloadBuf + + lda ZPPayloadLen + eor #$ff + sta ZPCnt + + lda ZPPayloadLen+1 + eor #$ff + sta ZPCnt+1 + + ldx #0 + ldy #S.UDP+8 + +.1 inc ZPCnt + bne .2 + inc ZPCnt+1 + beq .8 + +.2 txa + clc + adc (ZPRespBufPtr),y + tax + jsr .80 + iny + bne .3 + inc ZPRespBufPtr+1 + +.3 bra .1 + +.8 clc +.9 rts + +.80 sta (ZPPtr) + inc ZPPtr + bne .81 + inc ZPPtr+1 +.81 rts +*-------------------------------------- +CS.DOEVENT lda (pEvent) + bpl .9 is it a TIMER event? + + >LDA.G TimeOut + beq .9 + + dec + sta (pData),y + +.9 sec do not discard TIMER event + rts +*-------------------------------------- +CS.QUIT >LDA.G hSocket + beq .1 + + >LIBCALL hLIBTCPIP,LIBTCPIP.Shutdown + +.1 lda hLIBTCPIP + beq .8 + >SYSCALL UnloadLib + +.8 clc + rts +*-------------------------------------- +Init.Timeout lda #TIMEOUT.MAX + >STA.G TimeOut + rts +*-------------------------------------- +Wait.TimeOut sec + >LDA.G TimeOut + beq .9 + + clc +.9 rts +*-------------------------------------- +CS.END +LIBTCPIP .AZ "libtcpip" +hLIBTCPIP .BS 1 +MSG.IPKO .AZ "TCP/IP Not Loaded/Configured." +MSG.USAGE .AS "Usage : ADT [port]\r\n" + .AS " -U Url\r\n" + .AZ " -F UrlFile\r\n" +MSG.UNKNOWN .AZ "%s: Unknown host\r\n" +MSG.HOSTOK .AZ "Connecting to %d.%d.%d.%d:%D (%s)..." +MSG.SKTKO .AZ "Failed to Open Socket." +MSG.SKTOK .AZ "Connected." +MSG.SKTERR .AZ "Socket Error : $%h\r\n" +MSG.IOERR .AZ "I/O Error : $%h\r\n" +*-------------------------------------- +SA.LOCAL .DA #AF.INET S.SOCKADDR.AF + .BS 1 + .BS 4 S.SOCKADDR.ADDR + .BS 2 S.SOCKADDR.PORT +*-------------------------------------- +SA.REMOTE .DA #AF.INET S.SOCKADDR.AF + .BS 1 + .BS 4 S.SOCKADDR.ADDR + .DA 6502 +*-------------------------------------- +ADT.DIR .HS C10100C4040101 +ADT.DIR.LEN .EQ *-ADT.DIR +*-------------------------------------- + .DUMMY + .OR 0 +DS.START +ArgIndex .BS 1 +hSocket .BS 1 +hFrame .BS 1 +hPayloadBuf .BS 1 +hRespBuf .BS 1 +bResponse .BS 1 +TimeOut .BS 1 +DS.END + .ED +*-------------------------------------- +MAN +SAVE USR/SRC/BIN/ADT.S +ASM diff --git a/DRV/CONSOLE.DRV.S.txt b/DRV/CONSOLE.DRV.S.txt index cfc91d34..92333786 100644 --- a/DRV/CONSOLE.DRV.S.txt +++ b/DRV/CONSOLE.DRV.S.txt @@ -190,7 +190,7 @@ CLOSE lda #S.DIB.S.OPENED READ >STYA ZPIOCTL lda A2osX.ASCREEN - cmp #1 is CON active? + cmp DEVID is screen active? bne .6 no....go check flush... lda A2osX.TIMER16 @@ -885,7 +885,7 @@ CUROFF lda CURON beq CUREXIT.RTS CURBLNK lda A2osX.ASCREEN - cmp #1 + cmp DEVID beq CURBLNK1 lda CURON diff --git a/SYS/KERNEL.S.CORE.txt b/SYS/KERNEL.S.CORE.txt index 3bdde0ae..d15a10f7 100644 --- a/SYS/KERNEL.S.CORE.txt +++ b/SYS/KERNEL.S.CORE.txt @@ -375,16 +375,13 @@ CORE.GetPS ldy #0 *.2 .AZ "!Evt:F=%b,Dev=$%h,LO=$%h,HI=$%h,W1=$%H,W2=$%H\n" *-------------------------------------- CORE.ScrSel and #$0F - cmp A2osX.ASCREEN Same as active screen...nothing to do - beq .8 - tax - lda A2osX.SCRNDEVS,x Get DevID beq .8 No device claimed this screen - stx A2osX.ASCREEN set active screen - + cmp A2osX.ASCREEN Same as active screen...nothing to do + beq .8 + jsr K.GetDevByID bcs .8 phx @@ -395,8 +392,6 @@ CORE.ScrSel and #$0F jsr K.IOCTL - - .8 rts *-------------------------------------- CORE.DestroyEvent diff --git a/SYS/KERNEL.S.DRV.txt b/SYS/KERNEL.S.DRV.txt index 6a5c6b07..46419770 100644 --- a/SYS/KERNEL.S.DRV.txt +++ b/SYS/KERNEL.S.DRV.txt @@ -272,7 +272,7 @@ DRV.SYS.CLOSE rts *-------------------------------------- DRV.SYS.Read lda A2osX.ASCREEN - cmp #2 is SYS active? + cmp DRV.SYS.DEVID is screen active? bne .9 lda OPENAPPLE