From 9a68bac57070b8f560486b7267b74ba50193cd34 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9my=20GIBERT?= Date: Tue, 11 Dec 2018 07:44:57 +0100 Subject: [PATCH] Kernel 0.92 --- .Floppies/A2OSX.BUILD.po | Bin 33553920 -> 33553920 bytes BIN/ADT.S.txt | 454 +++++++++++++++++++++++++++++++++++++++ DRV/CONSOLE.DRV.S.txt | 4 +- SYS/KERNEL.S.CORE.txt | 11 +- SYS/KERNEL.S.DRV.txt | 2 +- 5 files changed, 460 insertions(+), 11 deletions(-) create mode 100644 BIN/ADT.S.txt diff --git a/.Floppies/A2OSX.BUILD.po b/.Floppies/A2OSX.BUILD.po index 3c885cfdafbec3c7a04310ebe09363992be56ca1..7c2767e6de7bc766837f6f4d41a584f521babdd4 100644 GIT binary patch delta 37332 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ΞZ%$ld}TFL8ko_Eb~Iy(ShQR5 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 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