NEW AUTO 3,1 Enable MASM3 auto line num .LIST OFF .OP 65C02 Target CPU, must match CPU level in header .OR $2000 usualy $2000, but any value > $100 allowed .TF SBIN/CIFSD *-------------------------------------- .INB INC/MACROS.I .INB INC/A2OSX.I .INB INC/ETH.I .INB INC/LIBTCPIP.I .INB INC/NET.SMB.I *-------------------------------------- TIMEOUT.MAX .EQ 100 10 sec. *-------------------------------------- * Zero Page Segment, up to 32 bytes *-------------------------------------- .DUMMY .OR ZPBIN ZS.START ZPIPCfgPtr .BS 2 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 .DA #0 .DA CS.END-CS.START Code Size (without Constants) .DA DS.END-DS.START Data SegmentSize .DA #64 Stack Size .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.MSG.USAGE .DA MSG.USAGE L.MSG.UNKNOWN .DA MSG.UNKNOWN .DA 0 *-------------------------------------- * Called once at process creation * Put code for loading LIB here *-------------------------------------- CS.INIT >LDYA L.LIBTCPIP >SYSCALL LoadLib bcs .99 sta hLIBTCPIP >LIBCALL hLIBTCPIP,LIBTCPIP.GETCFG is TCPIP loaded ? bcs .99 >STYA ZPIPCfgPtr lda (ZPIPCfgPtr) Configured ? bmi .1 lda #E.SYN sec rts .1 lda #AF.INET >STA.G SA.LOCAL >STA.G SA.REMOTE ldy #S.IPCFG.IP+3 .2 lda (ZPIPCfgPtr),y pha dey cpy #S.IPCFG.IP-1 bne .2 ldy #SA.REMOTE+S.SOCKADDR.PORT .3 pla sta (pData),y iny cpy #SA.REMOTE+S.SOCKADDR.PORT+4 bne .3 lda #TCP.PORT.CIFS >STA.G SA.REMOTE+S.SOCKADDR.PORT iny lda /TCP.PORT.CIFS sta (pData),y clc .99 rts *-------------------------------------- * Called until exit with CS * if RUN exits with CC, RUN entered again *-------------------------------------- CS.RUN jsr CS.RUN.CheckArgs bcs .90 lda #0 sec rts .90 >LDYA L.MSG.USAGE >SYSCALL puts lda #E.SYN sec rts *-------------------------------------- CS.RUN.CheckArgs ldy #S.PS.ARGC lda (pPs),y cmp #3 bcc .9 lda #TIMEOUT.MAX sta TimeOut .1 >PUSHEA.G SA.REMOTE+S.SOCKADDR.ADDR lda #1 >SYSCALL ArgV >PUSHYA >LIBCALL hLIBTCPIP,LIBTCPIP.HST.GETBYNAME bcc .2 >SLEEP lda TimeOut bne .1 lda #1 >SYSCALL ArgV >PUSHYA >PUSHBI 2 >LDYA L.MSG.UNKNOWN >SYSCALL printf sec rts .2 clc rts .9 sec rts *-------------------------------------- CS.RUN.Connect >PUSHBI 0 no protocol lda #S.SOCKET.T.STREAM >LIBCALL hLIBTCPIP,LIBTCPIP.Socket bcs .9 >STA.G hSocket >PUSHW.G SA.LOCAL >LDA.G hSocket >LIBCALL hLIBTCPIP,LIBTCPIP.Bind bcs .9 >PUSHW.G SA.REMOTE >LDA.G hSocket >LIBCALL hLIBTCPIP,LIBTCPIP.Connect .9 rts *-------------------------------------- * Called if option S.PS.F.EVENT enabled in Header * Timer Event : every 10th seconds *-------------------------------------- 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 *-------------------------------------- * Called once, when RUN exited with CS * Put code for unloading LIB here *-------------------------------------- CS.QUIT lda hLIBTCPIP beq .8 >SYSCALL UnloadLib .8 clc rts *-------------------------------------- CS.END *-------------------------------------- * Initialized DATA *-------------------------------------- LIBTCPIP .AZ "libtcpip" hLIBTCPIP .BS 1 MSG.USAGE .AZ "Usage : CIFSD sharename mountpoint" MSG.UNKNOWN .AZ "%s: Unknown host\r\n" *-------------------------------------- * Per Process DATA segement (0 filled before INIT) *-------------------------------------- .DUMMY .OR 0 DS.START SA.LOCAL .BS 1 S.SOCKADDR.AF .BS 1 .BS 4 S.SOCKADDR.ADDR .BS 2 S.SOCKADDR.PORT SA.REMOTE .BS 1 S.SOCKADDR.AF .BS 1 .BS 4 S.SOCKADDR.ADDR .BS 2 S.SOCKADDR.PORT hSocket .BS 1 DS.END .ED *-------------------------------------- MAN SAVE USR/SRC/SBIN/CIFSD ASM