PR#3
PREFIX /A2OSX.SRC
NEW
INC 1
AUTO 6
				.LIST OFF
*--------------------------------------
CFG.Read		>PUSHW L.HOSTNAME
				>LDYA L.MSG.CFG
				>SYSCALL SYS.PrintFYA

				jsr CFG.Read.HOSTNAME
				bcc .1
				>PUSHA
				>LDYA L.MSG.CFG.KO
				>SYSCALL SYS.PrintFYA
				bra .2
.1				>LDYA L.MSG.CFG.OK
				>SYSCALL SYS.PrintFYA

.2				>PUSHW L.TCPIP.CONF
				>LDYA L.MSG.CFG
				>SYSCALL SYS.PrintFYA

				jsr CFG.Read.TCPIP.CONF
				bcc .3
				>PUSHA
				>LDYA L.MSG.CFG.KO
				>SYSCALL SYS.PrintFYA
				bra .4
.3				>LDYA L.MSG.CFG.OK
				>SYSCALL SYS.PrintFYA
				
.4				>PUSHW L.HOSTS
				>LDYA L.MSG.CFG
				>SYSCALL SYS.PrintFYA

				jsr CFG.Read.HOSTS
				bcc .5
				>PUSHA
				>LDYA L.MSG.CFG.KO
				>SYSCALL SYS.PrintFYA
				bra .6
.5				>LDYA L.MSG.CFG.OK
				>SYSCALL SYS.PrintFYA
.6				rts
*--------------------------------------
CFG.Read.HOSTNAME
				>PUSHWI 0				Aux type
				>PUSHBI 4				S.FILEINFO.TYPE.TXT
				>PUSHBI	SYS.FOPEN.R
				>PUSHW L.HOSTNAME
				>SYSCALL SYS.LoadFile
				bcs .99
				stx CFG.hCfgFile
				>STYA CFG.FileLen
				
				txa
				>SYSCALL SYS.GetMemPtrA
				>STYA ZPIPCfgPtr
				
				lda CFG.FileLen+1
				bne .2
				ldy CFG.FileLen
				beq .2
				cpy #15
				bcs .2

				sta IPCFG+S.IPCFG.HOSTNAME,y
	
.1				dey
				bmi .89
				lda (ZPIPCfgPtr),y
				sta IPCFG+S.IPCFG.HOSTNAME,y
				bra .1
				
.2				jsr .89
				sec
				rts
				
.89				lda CFG.hCfgFile
				>SYSCALL SYS.FreeMemA
				
				clc
.99				rts
*--------------------------------------
CFG.Read.TCPIP.CONF
				>PUSHWI 0				Aux type
				>PUSHBI 4				S.FILEINFO.TYPE.TXT
				>PUSHBI	SYS.FOPEN.R
				>PUSHW L.TCPIP.CONF
				>SYSCALL SYS.LoadFile
				bcs .99
				stx CFG.hCfgFile
				>STYA CFG.FileLen
				txa
				>SYSCALL SYS.GetMemPtrA
				>STYA ZPIPCfgPtr
				
.1				jsr CFG.GetLine
				bcs .89
				
				jsr CFG.GetKeyword
				bcs .1

				lda CFG.Keyword
				bne .3
				
				ldy UsrBuf256

				lda UsrBuf256+1,y
				cmp #35					DOMAIN too long!!!
				bcs .1
				
				sta IPCFG+S.IPCFG.DOMAIN
				ldx #0
				
.2				lda UsrBuf256+2,y
				sta IPCFG+S.IPCFG.DOMAIN,x
				beq .1
				inx
				iny
				bne .2
				bra .1
				
.3				jsr CFG.ScanIP
				bcs .1
				
				ldy CFG.Keyword
				lda CFG.Keyword.Map,y
				tax
				ldy #0
				
.4				lda CFG.IP+1,y
				sta IPCFG,x
				inx
				iny
				cpy #4
				bne .4
				lda CFG.Keyword
				cmp #1
				bne .1
				lda #S.IPCFG.STATUS.OK
				sta IPCFG
				bra .1
				
.89				lda CFG.hCfgFile
				>SYSCALL SYS.FreeMemA
				
				clc
.99				rts
*--------------------------------------
CFG.Read.HOSTS	>PUSHWI 0				Aux type
				>PUSHBI 4				S.FILEINFO.TYPE.TXT
				>PUSHBI	SYS.FOPEN.R
				>PUSHW L.HOSTS
				>SYSCALL SYS.LoadFile
				bcs .99
				stx CFG.hCfgFile
				>STYA CFG.FileLen
				
				txa
				>SYSCALL SYS.GetMemPtrA
				>STYA ZPIPCfgPtr
				
.89				lda CFG.hCfgFile
				>SYSCALL SYS.FreeMemA
				clc
.99				rts
*--------------------------------------
CFG.GetLine		stz UsrBuf256
				ldx #0
				ldy #0
				
.1				jsr CFG.GetChar
				bne .2					end of file?
				txa
				bne .8
				sec
				rts
				
.2				cmp #$0D
				beq .8					end of line
				inx
				sta UsrBuf256,x
				cmp #'='
				bne .3
				txa
				dec
				tay
.3				cpx #64					line too long ?
				bne .1
				sec
				rts
				
.8				tya						= found ?
				beq .9
				
				sta UsrBuf256
				txa
				sec
				sbc UsrBuf256
				sta UsrBuf256+1,y
				stz UsrBuf256+1,x	End with 0 for ScanIP
				clc
				rts
				
.9				sec
				rts		
*--------------------------------------
CFG.GetChar		lda CFG.FileLen
				bne .1
				lda CFG.FileLen+1
				beq .9
				dec CFG.FileLen+1
.1				dec CFG.FileLen
				lda (ZPIPCfgPtr)
				inc ZPIPCfgPtr
				bne .9
				inc ZPIPCfgPtr+1		NZ
.9				rts				
*--------------------------------------
CFG.GetKeyword	stz CFG.Keyword
				
				ldx #0
				
.1				phx
				ldy #0
				
.2				lda CFG.Keywords,x
				cmp UsrBuf256,y
				bne .3
				cpy UsrBuf256
				beq .4
				inx
				iny
				bne .2
				plx
				sec
				rts
				
.3				inc CFG.Keyword
				plx
				txa
				sec
				adc CFG.Keywords,x
				tax
				lda CFG.Keywords,x
				bne .1
				sec
				rts
				
.4				plx
				clc
				rts
*--------------------------------------
CFG.ScanIP		stz CFG.IP

				ldx UsrBuf256
				
.1				ldy #0
.11				lda UsrBuf256+2,x
				beq .3
				cmp #'0'
				bcc .2
				cmp #'9'+1
				bcs .2
				cpy #3
				beq .9
				iny
				sta CFG.StrBuf,y
				inx
				bra .11
				
.2				cmp #'.'
				bne .9
				
.3				sty CFG.StrBuf
				lda CFG.IP
				cmp #4
				beq .9
				jsr CFG.Dec2Hex
				bcs .9
				lda CFG.HexByte
				inc CFG.IP
				ldy CFG.IP
				sta CFG.IP,y
				inx
				lda UsrBuf256+1,x
				bne .1
				clc
				rts
				
.9				sec
				rts
*--------------------------------------
CFG.Dec2Hex		sec
				ldy CFG.StrBuf
				beq .9
				
				lda CFG.StrBuf+1
				and #$0f
				sta CFG.HexByte
				
				ldy #1
				
.1				cpy CFG.StrBuf
				beq .8
				iny
				lda CFG.HexByte
				asl CFG.HexByte
				bcs .9
				asl CFG.HexByte
				bcs .9
				adc CFG.HexByte
				bcs .9
				asl
				bcs .9
				sta CFG.HexByte
				lda CFG.StrBuf,y
				and #$0f
				adc CFG.HexByte
				sta CFG.HexByte
				bcc .1
.9				rts
				
.8				clc
				rts
*--------------------------------------
MAN
SAVE SBIN/TCPIP.S.CFG
LOAD SBIN/TCPIP.S
ASM
