mirror of
https://github.com/A2osX/A2osX.git
synced 2025-04-04 03:32:12 +00:00
Fixed MemMgr Bugs preventing TCPIP stack working properly
This commit is contained in:
parent
3c12891610
commit
7c787a2c6c
BIN
A2OSX.BOOT.DSK
BIN
A2OSX.BOOT.DSK
Binary file not shown.
BIN
A2OSX.SRC.po
BIN
A2OSX.SRC.po
Binary file not shown.
@ -10,7 +10,7 @@ SET LIB=%A2OSX%LIB/
|
||||
LOAD CONSOLE.DRV
|
||||
EXEC GETTY KBD CON LOGIN
|
||||
LOAD SSC.DRV 9600 N 8 1 X
|
||||
*EXEC GETTY COM2 COM2 LOGIN
|
||||
EXEC GETTY COM2 COM2 LOGIN
|
||||
*LOAD PPIC.DRV
|
||||
LOAD UTHERNET.DRV 000E3A123456
|
||||
EXEC TCPIP ETH3
|
||||
@ -18,8 +18,8 @@ EXEC DHCPCLNT
|
||||
*EXEC TELNETD
|
||||
*MOUNT TFTP 192.168.1.5:/A2OSX /MNT/A2OSX
|
||||
*MOUNT CIFS 192.168.1.5:/MSSHARE /MNT/MSSHARE
|
||||
LOAD DHGR.DRV
|
||||
LOAD MOUSE.DRV
|
||||
EXEC GUI
|
||||
*LOAD DHGR.DRV
|
||||
*LOAD MOUSE.DRV
|
||||
*EXEC GUI
|
||||
MAN
|
||||
TEXT A2OSX.STARTUP
|
||||
|
@ -134,7 +134,6 @@ CS.RUN lda #ARP.TIMEOUT
|
||||
>PUSHW L.DST.MAC
|
||||
>PUSHW L.DST.IP
|
||||
>LIBCALL hLIBTCPIP,LIBTCPIP.ARP.QUERY
|
||||
bra *
|
||||
|
||||
bcc .2 success, print & exit
|
||||
|
||||
|
@ -6,27 +6,31 @@ AUTO 6
|
||||
.LIST ON
|
||||
.OP 65C02
|
||||
.OR $2000
|
||||
.TF BIN/DNS
|
||||
.TF /A2OSX.BOOT/BIN/DNS
|
||||
*--------------------------------------
|
||||
.INB INC/MACROS.I
|
||||
.INB INC/A2OSX.I
|
||||
.INB INC/A2OSX.API.I
|
||||
.INB INC/KERNEL.I
|
||||
.INB INC/LIBSTR.I
|
||||
.INB INC/LIBTCPIP.I
|
||||
*--------------------------------------
|
||||
ZPPTR1 .EQ ZPBIN
|
||||
*--------------------------------------
|
||||
* Main entry point
|
||||
*--------------------------------------
|
||||
* Code signature and INIT table
|
||||
*--------------------------------------
|
||||
* CLD $D8
|
||||
* JMP (*,x) $7C
|
||||
* #JMPTABLE
|
||||
* /JMPTABLE
|
||||
* File Header (16 Bytes)
|
||||
*--------------------------------------
|
||||
CS.START cld
|
||||
jmp (.1,x)
|
||||
.DA #$61 6502,Level 1 (65c02)
|
||||
.DA #1 BIN Layout Version 1
|
||||
.DA 0
|
||||
.DA CS.END-CS.START Code Length To Relocate
|
||||
.DA 0 No Data Segment to Allocate
|
||||
.DA 0
|
||||
.DA 0
|
||||
*--------------------------------------
|
||||
* Relocation Table
|
||||
*--------------------------------------
|
||||
.1 .DA CS.INIT
|
||||
.DA CS.RUN
|
||||
.DA CS.EVENT
|
||||
@ -38,20 +42,20 @@ L.IP .DA IP
|
||||
L.MSG0 .DA MSG0
|
||||
L.MSG1 .DA MSG1
|
||||
.DA 0
|
||||
.DA CS.END-CS.START Code Length To Relocate
|
||||
.DA DS.END-DS.START Data Segment to Allocate
|
||||
*--------------------------------------
|
||||
CS.INIT stz hHostName
|
||||
stz hIP
|
||||
|
||||
>LIBLOADP L.LIBSTR
|
||||
>LDYA L.LIBSTR
|
||||
>LOADLIBYA
|
||||
sta hLIBSTR
|
||||
|
||||
>LIBLOADP L.LIBTCPIP
|
||||
>LDYA L.LIBTCPIP
|
||||
>LOADLIBYA
|
||||
sta hLIBTCPIP
|
||||
|
||||
|
||||
ldy #S.PS.hARGS
|
||||
lda (pPsContext),y
|
||||
lda (pPs),y
|
||||
bne CS.INIT.ADD
|
||||
jmp CS.INIT.DUMP
|
||||
|
||||
@ -63,7 +67,7 @@ CS.INIT.ADD >PUSHA
|
||||
sta hHostName
|
||||
|
||||
ldy #S.PS.hARGS
|
||||
lda (pPsContext),y
|
||||
lda (pPs),y
|
||||
>PUSHA
|
||||
>PUSHBI $20 Push SEP=' '
|
||||
>PUSHBI 2 Push 2 for getting IP
|
||||
@ -81,7 +85,9 @@ CS.INIT.ADD >PUSHA
|
||||
|
||||
>PUSHWI 1800 default TTL
|
||||
>PUSHW L.IP
|
||||
>PUSHB hHostName
|
||||
lda hHostName
|
||||
>SYSCALL SYS.GetMemPtrA
|
||||
>PUSHYA
|
||||
>LIBCALL hLIBTCPIP,LIBTCPIP.DNS.ADD
|
||||
bcs .99
|
||||
|
||||
@ -98,12 +104,13 @@ CS.INIT.DUMP >LIBCALL hLIBTCPIP,LIBTCPIP.DNS.GETCACHE
|
||||
>PUSHW L.MSG0
|
||||
>LIBCALL hLIBSTR,LIBSTR.PRINTF
|
||||
|
||||
ldx #K.DNSCACHE.SIZE
|
||||
ldx #K.DNSCACHE.SIZE
|
||||
|
||||
.1 phx
|
||||
lda (ZPPTR1)
|
||||
beq .2
|
||||
|
||||
ldy #S.DNSCACHE.IP+3
|
||||
ldy #S.DNSCACHE.RDATA+3
|
||||
lda (ZPPTR1),y
|
||||
>PUSHA
|
||||
dey
|
||||
@ -116,13 +123,17 @@ CS.INIT.DUMP >LIBCALL hLIBTCPIP,LIBTCPIP.DNS.GETCACHE
|
||||
lda (ZPPTR1),y
|
||||
>PUSHA
|
||||
|
||||
ldy #S.DNSCACHE.TTL
|
||||
ldy #S.DNSCACHE.TTL+3
|
||||
>PUSHA
|
||||
dey
|
||||
lda (ZPPTR1),y
|
||||
pha
|
||||
iny
|
||||
>PUSHA
|
||||
dey
|
||||
lda (ZPPTR1),y
|
||||
ply
|
||||
>PUSHYA
|
||||
>PUSHA
|
||||
dey
|
||||
lda (ZPPTR1),y
|
||||
>PUSHA
|
||||
|
||||
ldy #S.DNSCACHE.hNAME
|
||||
lda (ZPPTR1),y
|
||||
@ -170,14 +181,12 @@ LIBSTR >PSTRING "libstr.o"
|
||||
LIBTCPIP >PSTRING "libtcpip.o"
|
||||
SSCANF.IP >PSTRING "%d.%d.%d.%d"
|
||||
MSG0 >CSTRING "STS Hostname TTL IP Address\n"
|
||||
MSG1 >CSTRING "$%h %32S %05D %d.%d.%d.%d\n"
|
||||
DS.START
|
||||
MSG1 >CSTRING "$%h %32S %09L %d.%d.%d.%d\n"
|
||||
hLIBSTR .BS 1
|
||||
hLIBTCPIP .BS 1
|
||||
hHostName .BS 1
|
||||
hIP .BS 1
|
||||
IP .BS 4
|
||||
DS.END
|
||||
MAN
|
||||
SAVE BIN/DNS.S
|
||||
ASM
|
||||
|
176
BIN/MEM.S.txt
176
BIN/MEM.S.txt
@ -15,6 +15,7 @@ AUTO 6
|
||||
.INB INC/LIBSTR.I
|
||||
*--------------------------------------
|
||||
PAGELEN .EQ 22
|
||||
FOOTERLEN .EQ 8
|
||||
*--------------------------------------
|
||||
ZPPTR1 .EQ ZPBIN
|
||||
ZPPTR2 .EQ ZPBIN+2
|
||||
@ -78,6 +79,11 @@ CS.RUN ldy #bCANCEL
|
||||
lda (pData),y
|
||||
bne .8
|
||||
|
||||
ldy #MEM.COUNT
|
||||
lda (pData),y
|
||||
cmp MemMgr.LastSlot
|
||||
beq .10
|
||||
|
||||
ldy #LINE.COUNT
|
||||
lda (pData),y
|
||||
bne .1
|
||||
@ -103,62 +109,61 @@ CS.RUN ldy #bCANCEL
|
||||
lda (pData),y
|
||||
inc
|
||||
sta (pData),y
|
||||
cmp MemMgr.LastSlot
|
||||
beq .9
|
||||
|
||||
.8 clc
|
||||
rts
|
||||
|
||||
.9 jsr CS.RUN.PRINTEND
|
||||
sec
|
||||
rts
|
||||
*--------------------------------------
|
||||
CS.DOEVENT ldy #S.EVT.hDEV is Event from active IN device?
|
||||
lda (pEvent),y
|
||||
ldy #S.PS.hINDEV
|
||||
cmp (pPs),y
|
||||
bne .9
|
||||
|
||||
lda (pEvent)
|
||||
and #S.EVT.F.KEY is it a KEY event?
|
||||
beq .9
|
||||
|
||||
ldy #S.EVT.DATAHI is it an O or SAPPLE key ?
|
||||
lda (pEvent),y
|
||||
bne .9
|
||||
|
||||
ldy #S.EVT.DATALO
|
||||
lda (pEvent),y
|
||||
cmp #$03 Ctrl-C
|
||||
bne .1
|
||||
|
||||
lda #$FF
|
||||
ldy #bCANCEL
|
||||
sta (pData),y
|
||||
bra .8
|
||||
|
||||
.1 cmp #$13 Ctrl-S
|
||||
bne .2
|
||||
|
||||
ldy #bSTOP
|
||||
lda (pData),y
|
||||
eor #$FF
|
||||
sta (pData),y
|
||||
bra .8
|
||||
|
||||
.2 ldy #bSTOP
|
||||
lda #0
|
||||
sta (pData),y
|
||||
|
||||
.8 clc
|
||||
rts
|
||||
rts
|
||||
|
||||
.9 sec
|
||||
rts
|
||||
*--------------------------------------
|
||||
CS.QUIT lda hLIBSTR
|
||||
>SYSCALL SYS.UnloadLibA
|
||||
|
||||
.10 ldy #LINE.COUNT
|
||||
lda (pData),y
|
||||
clc
|
||||
adc #FOOTERLEN
|
||||
cmp #PAGELEN
|
||||
bcc .11
|
||||
|
||||
lda #$FF
|
||||
ldy #bSTOP
|
||||
sta (pData),y
|
||||
|
||||
lda #0
|
||||
ldy #LINE.COUNT
|
||||
sta (pData),y
|
||||
|
||||
clc
|
||||
rts
|
||||
|
||||
.11 ldy #MEM.COUNT
|
||||
>PUSHB (pData),y
|
||||
ldy #USED.COUNT
|
||||
>PUSHB (pData),y
|
||||
>PUSHW L.MSG2
|
||||
>LIBCALL hLIBSTR,LIBSTR.PRINTF
|
||||
|
||||
>PUSHW MemMgr.HiMem
|
||||
>PUSHW L.MSG3
|
||||
>LIBCALL hLIBSTR,LIBSTR.PRINTF
|
||||
|
||||
>PUSHW MemMgr.Free
|
||||
>PUSHW L.MSG4
|
||||
>LIBCALL hLIBSTR,LIBSTR.PRINTF
|
||||
|
||||
>PUSHW MemMgr.LoMem
|
||||
>PUSHW L.MSG5
|
||||
>LIBCALL hLIBSTR,LIBSTR.PRINTF
|
||||
|
||||
lda MemMgr.Free
|
||||
sec
|
||||
sbc MemMgr.LoMem
|
||||
tay
|
||||
lda MemMgr.Free+1
|
||||
sbc MemMgr.LoMem+1
|
||||
|
||||
>PUSHYA
|
||||
>PUSHW L.MSG6
|
||||
>LIBCALL hLIBSTR,LIBSTR.PRINTF
|
||||
sec
|
||||
rts
|
||||
*--------------------------------------
|
||||
CS.RUN.PRINTMEM ldy #S.MEM.LEN
|
||||
@ -250,35 +255,52 @@ CS.RUN.PRINTMEM ldy #S.MEM.LEN
|
||||
|
||||
.5 rts
|
||||
*--------------------------------------
|
||||
CS.RUN.PRINTEND ldy #MEM.COUNT
|
||||
>PUSHB (pData),y
|
||||
ldy #USED.COUNT
|
||||
>PUSHB (pData),y
|
||||
>PUSHW L.MSG2
|
||||
>LIBCALL hLIBSTR,LIBSTR.PRINTF
|
||||
|
||||
>PUSHW MemMgr.HiMem
|
||||
>PUSHW L.MSG3
|
||||
>LIBCALL hLIBSTR,LIBSTR.PRINTF
|
||||
|
||||
>PUSHW MemMgr.Free
|
||||
>PUSHW L.MSG4
|
||||
>LIBCALL hLIBSTR,LIBSTR.PRINTF
|
||||
|
||||
>PUSHW MemMgr.LoMem
|
||||
>PUSHW L.MSG5
|
||||
>LIBCALL hLIBSTR,LIBSTR.PRINTF
|
||||
CS.DOEVENT ldy #S.EVT.hDEV is Event from active IN device?
|
||||
lda (pEvent),y
|
||||
ldy #S.PS.hINDEV
|
||||
cmp (pPs),y
|
||||
bne .9
|
||||
|
||||
lda MemMgr.Free
|
||||
sec
|
||||
sbc MemMgr.LoMem
|
||||
tay
|
||||
lda MemMgr.Free+1
|
||||
sbc MemMgr.LoMem+1
|
||||
lda (pEvent)
|
||||
and #S.EVT.F.KEY is it a KEY event?
|
||||
beq .9
|
||||
|
||||
>PUSHYA
|
||||
>PUSHW L.MSG6
|
||||
>LIBCALL hLIBSTR,LIBSTR.PRINTF
|
||||
ldy #S.EVT.DATAHI is it an O or SAPPLE key ?
|
||||
lda (pEvent),y
|
||||
bne .9
|
||||
|
||||
ldy #S.EVT.DATALO
|
||||
lda (pEvent),y
|
||||
cmp #$03 Ctrl-C
|
||||
bne .1
|
||||
|
||||
lda #$FF
|
||||
ldy #bCANCEL
|
||||
sta (pData),y
|
||||
bra .8
|
||||
|
||||
.1 cmp #$13 Ctrl-S
|
||||
bne .2
|
||||
|
||||
ldy #bSTOP
|
||||
lda (pData),y
|
||||
eor #$FF
|
||||
sta (pData),y
|
||||
bra .8
|
||||
|
||||
.2 ldy #bSTOP
|
||||
lda #0
|
||||
sta (pData),y
|
||||
|
||||
.8 clc
|
||||
rts
|
||||
|
||||
.9 sec
|
||||
rts
|
||||
*--------------------------------------
|
||||
CS.QUIT lda hLIBSTR
|
||||
>SYSCALL SYS.UnloadLibA
|
||||
clc
|
||||
rts
|
||||
*--------------------------------------
|
||||
PRBYTE pha
|
||||
|
@ -106,7 +106,8 @@ CS.RUN >PUSHW pData DST.IP
|
||||
CS.RUN.DNSQUERY >PUSHW pData DST.IP
|
||||
ldy #S.PS.hARGS
|
||||
lda (pPs),y
|
||||
>PUSHA
|
||||
>SYSCALL SYS.GetMemPtrA
|
||||
>PUSHYA
|
||||
>LIBCALL hLIBTCPIP,LIBTCPIP.DNS.QUERY
|
||||
bcc CS.RUN.IPOK
|
||||
|
||||
|
@ -108,7 +108,8 @@ CS.RUN >PUSHW pData DST.IP
|
||||
CS.RUN.DNSQUERY >PUSHW pData DST.IP
|
||||
ldy #S.PS.hARGS
|
||||
lda (pPs),y
|
||||
>PUSHA
|
||||
>SYSCALL SYS.GetMemPtrA
|
||||
>PUSHYA
|
||||
>LIBCALL hLIBTCPIP,LIBTCPIP.DNS.QUERY
|
||||
bcc CS.RUN.IPOK
|
||||
|
||||
|
@ -76,10 +76,21 @@ S.DNSCACHE.STATUS .EQ 0
|
||||
S.DNSCACHE.STATUS.PENDING .EQ 64
|
||||
S.DNSCACHE.STATUS.RESOLVED .EQ 128
|
||||
S.DNSCACHE.hNAME .EQ 1
|
||||
S.DNSCACHE.TTL .EQ 2
|
||||
S.DNSCACHE.IP .EQ 4
|
||||
S.DNSCACHE.TYPE .EQ 2
|
||||
S.DNSCACHE.TYPE.A .EQ 1
|
||||
S.DNSCACHE.TYPE.NS .EQ 2
|
||||
S.DNSCACHE.TYPE.CNAME .EQ 5
|
||||
S.DNSCACHE.TYPE.SOA .EQ 6
|
||||
S.DNSCACHE.TYPE.WKS .EQ 11
|
||||
S.DNSCACHE.TYPE.PTR .EQ 12
|
||||
S.DNSCACHE.TYPE.MX .EQ 15
|
||||
S.DNSCACHE.TYPE.SRV .EQ 33
|
||||
S.DNSCACHE.CLASS .EQ 4
|
||||
S.DNSCACHE.TTL .EQ 6
|
||||
S.DNSCACHE.RDLENGTH .EQ 10
|
||||
S.DNSCACHE.RDATA .EQ 12
|
||||
*
|
||||
S.DNSCACHE .EQ 8
|
||||
S.DNSCACHE .EQ 16
|
||||
*--------------------------------------
|
||||
S.LISTENER.PORT .EQ 0
|
||||
S.LISTENER.hPS .EQ 2
|
||||
|
@ -186,8 +186,6 @@ ARP.QUERY.I ldx #0
|
||||
cpy #S.ETH.DSTMAC+6
|
||||
bne .75
|
||||
|
||||
>DEBUG
|
||||
|
||||
jsr SEND.ARP.FRAME.I
|
||||
|
||||
bcs .76
|
||||
|
@ -21,9 +21,7 @@ DNS.CLEAR ldx #K.DNSCACHE.SIZE*S.DNSCACHE
|
||||
* CC: hit: IP filled with address
|
||||
* CS: missed
|
||||
*--------------------------------------
|
||||
DNS.QUERY >PULLB hHOST Get host string hMem
|
||||
>SYSCALL SYS.GetMemPtrA
|
||||
>STYA ZPDNSHostname
|
||||
DNS.QUERY >PULLW ZPDNSHostname Get host string
|
||||
>PULLW ZPDNSIP Get IP address to fill
|
||||
|
||||
ldx #0
|
||||
@ -49,7 +47,7 @@ DNS.QUERY >PULLB hHOST Get host string hMem
|
||||
bpl .4 Pending...
|
||||
|
||||
ldy #0
|
||||
.3 lda DNS.CACHE+S.DNSCACHE.IP,x
|
||||
.3 lda DNS.CACHE+S.DNSCACHE.RDATA,x
|
||||
sta (ZPDNSIP),y
|
||||
inx
|
||||
iny
|
||||
@ -200,9 +198,7 @@ DNS.REQUEST jsr NEW.UDP.FRAME
|
||||
* PULLW = PTR to IP
|
||||
* PULLW = TTL
|
||||
*--------------------------------------
|
||||
DNS.ADD >PULLB hHOST Get host string hMem
|
||||
>SYSCALL SYS.GetMemPtrA
|
||||
>STYA ZPDNSHostname
|
||||
DNS.ADD >PULLW ZPDNSHostname Get host string
|
||||
>PULLW ZPDNSIP Get host IP address
|
||||
>PULLW HOST.TTL
|
||||
lda #S.DNSCACHE.STATUS.RESOLVED
|
||||
@ -291,7 +287,7 @@ DNS.UPD.ENTRY lda Status
|
||||
|
||||
ldy #0
|
||||
.2 lda (ZPDNSIP),y
|
||||
sta DNS.CACHE+S.DNSCACHE.IP,x
|
||||
sta DNS.CACHE+S.DNSCACHE.RDATA,x
|
||||
inx
|
||||
iny
|
||||
cpy #4
|
||||
|
@ -77,7 +77,7 @@ L.DNS.CACHE .DA DNS.CACHE
|
||||
.DA 0
|
||||
*--------------------------------------
|
||||
LIB.LOAD lda bFirstLoad
|
||||
bne *
|
||||
bne .8
|
||||
jsr ARP.CLEAR
|
||||
jsr DNS.CLEAR
|
||||
inc bFirstLoad
|
||||
@ -466,7 +466,6 @@ CS.END
|
||||
*--------------------------------------
|
||||
bFirstLoad .DA #0
|
||||
Status .BS 1
|
||||
hHOST .BS 1 for DNS Cache functions
|
||||
HOST.TTL .BS 2 for DNS Cache functions
|
||||
IP.CHECKSUM .BS 4
|
||||
IPCFG .BS S.IPCFG
|
||||
|
@ -33,12 +33,20 @@ CS.START cld
|
||||
.DA CS.RUN
|
||||
.DA CS.DOEVENT
|
||||
.DA CS.QUIT
|
||||
L.MSG.GREETINGS .DA MSG.GREETINGS
|
||||
L.MSG.USAGE .DA MSG.USAGE
|
||||
L.MSG.GREETINGS .DA MSG.GREETINGS
|
||||
.DA 0 End Of Reloc Table
|
||||
*--------------------------------------
|
||||
CS.INIT ldy #S.PS.hARGS
|
||||
lda (pPs),y
|
||||
>PUSHA
|
||||
bne .1
|
||||
|
||||
>LDYA L.MSG.USAGE
|
||||
jsr PRINT.MSG
|
||||
sec
|
||||
rts
|
||||
|
||||
.1 >PUSHA
|
||||
>PUSHBI $20 Push SEP=' '
|
||||
>PUSHBI 1 Push 1 for getting INDEV
|
||||
>SYSCALL SYS.PStrGetTkn
|
||||
@ -195,6 +203,7 @@ COUT phx
|
||||
pDevJmp jmp (pDev)
|
||||
*--------------------------------------
|
||||
CS.END
|
||||
MSG.USAGE >CSTRING "GETTY <INDEV> <OUTDEV> <PROGRAM>"
|
||||
MSG.GREETINGS >CSTRING "A2osX-GeTTY on Dev="
|
||||
hDEVNAME .BS 1
|
||||
*--------------------------------------
|
||||
|
@ -213,8 +213,22 @@ CS.DOEVENT.NET ldy #S.EVT.DATALO Get Frame hMem
|
||||
rts
|
||||
|
||||
.2 cmp #S.IP.PROTOCOL.UDP
|
||||
bne .21
|
||||
|
||||
ldy #S.UDP.DSTPORT
|
||||
lda /UDP.PORT.DNS
|
||||
cmp (ZPFrameBase1),y
|
||||
bne .3
|
||||
>PUSHW ZPFrameLen1
|
||||
iny
|
||||
lda #UDP.PORT.DNS
|
||||
cmp (ZPFrameBase1),y
|
||||
bne .3
|
||||
|
||||
jsr DNSListener
|
||||
bcc .89
|
||||
rts
|
||||
|
||||
.21 >PUSHW ZPFrameLen1
|
||||
>PUSHW ZPFrameBase1
|
||||
>LIBCALL hLIBTCPIP,LIBTCPIP.UDP.LISTENER
|
||||
bcc .89
|
||||
@ -380,6 +394,53 @@ ICMPListener ldy #S.ICMP.TYPE
|
||||
.9 sec
|
||||
rts
|
||||
*--------------------------------------
|
||||
DNSListener ldy #S.DNS.F+1
|
||||
lda (ZPFrameBase1),y
|
||||
and /S.DNS.F.QR
|
||||
beq .9
|
||||
|
||||
ldy #S.DNS.QDCOUNT
|
||||
lda (ZPFrameBase1),y
|
||||
tax
|
||||
beq .3 no QUERY to skip
|
||||
|
||||
ldy #S.DNS Read query
|
||||
|
||||
.1 lda (ZPFrameBase1),y
|
||||
beq .2
|
||||
iny
|
||||
bne .1
|
||||
.2 tya
|
||||
clc
|
||||
adc #4 Skip QTYPE & QCLASS
|
||||
tay
|
||||
dex skip another QUERY ?
|
||||
bne .1
|
||||
|
||||
.3 lda (ZPFrameBase1),y get offset of NAME
|
||||
phy save current offset in frame
|
||||
tay
|
||||
|
||||
ldx #0
|
||||
.4 lda (ZPFrameBase1),y compute len of NAME
|
||||
beq .5
|
||||
inx
|
||||
iny
|
||||
bne .4
|
||||
|
||||
.5 inx X=length of NAME
|
||||
txa
|
||||
f
|
||||
sdf
|
||||
sdf
|
||||
|
||||
>STYA ZPQuickPtr1
|
||||
clc
|
||||
rts
|
||||
|
||||
.9 sec
|
||||
rts
|
||||
*--------------------------------------
|
||||
GetIPCFG >LIBCALL hLIBTCPIP,LIBTCPIP.GET.IPCFG
|
||||
>STYA ZPQuickPtr1
|
||||
|
||||
|
@ -14,9 +14,27 @@ AUTO 6
|
||||
* X = hMem of Code Segment
|
||||
*--------------------------------------
|
||||
S.LoadBinA sta S.LoadBinA.hFilename save file path
|
||||
jsr S.GetMemByNameA
|
||||
bcs .1 not already loaded
|
||||
jsr S.GetMemPtrA
|
||||
>STYA ZPQuickPtr1
|
||||
|
||||
lda (ZPQuickPtr1)
|
||||
tay
|
||||
|
||||
.1 lda (ZPQuickPtr1),y convert to UPPERCASE
|
||||
cmp #$61 "a"
|
||||
bmi .2
|
||||
cmp #$7B "z"+1
|
||||
bpl .2
|
||||
sec
|
||||
sbc #$20
|
||||
sta (ZPQuickPtr1),y
|
||||
.2 dey
|
||||
bne .1
|
||||
|
||||
lda S.LoadBinA.hFilename
|
||||
jsr S.GetMemByNameA
|
||||
bcs .3 not already loaded
|
||||
|
||||
>STYA ZPQuickPtr1 Save base address
|
||||
ldy #S.MEM.REFCNT
|
||||
lda (ZPQuickPtr1),y
|
||||
@ -32,12 +50,12 @@ S.LoadBinA sta S.LoadBinA.hFilename save file path
|
||||
clc
|
||||
rts
|
||||
|
||||
.1 lda S.LoadBinA.hFilename
|
||||
.3 lda S.LoadBinA.hFilename
|
||||
jsr S.LoadFileA
|
||||
bcc .2
|
||||
bcc .4
|
||||
rts Error Loading file
|
||||
|
||||
.2 >STYA S.LoadBinA.FileLen
|
||||
.4 >STYA S.LoadBinA.FileLen
|
||||
stx S.LoadBinA.hMem save hMem
|
||||
txa
|
||||
jsr S.GetMemPtrA
|
||||
@ -87,6 +105,7 @@ S.LoadBinA sta S.LoadBinA.hFilename save file path
|
||||
bcs .98
|
||||
|
||||
pha save copy of bin path
|
||||
|
||||
lda S.LoadBinA.hMem
|
||||
jsr S.GetMemByIDA
|
||||
>STYA ZPQuickPtr1
|
||||
|
@ -383,47 +383,50 @@ S.GetMemByNameA jsr S.GetMemPtrA
|
||||
bcs *
|
||||
S.GetMemByNameYA
|
||||
>STYA ZPMemMgrTmp1 save BINPATH
|
||||
>LDYAI MemMgr.Table+S.MEM.SIZE
|
||||
>STYA ZPMemMgrSPtr
|
||||
>LDYAI MemMgr.Table
|
||||
>STYA ZPMemMgrTmp2
|
||||
ldx #0
|
||||
|
||||
.1 cpx MemMgr.LastSlot
|
||||
beq .9
|
||||
inx
|
||||
lda (ZPMemMgrSPtr)
|
||||
|
||||
lda (ZPMemMgrTmp2)
|
||||
bpl .6 In Use?
|
||||
|
||||
ldy #S.MEM.BIN any BIN PATH in this slot?
|
||||
lda (ZPMemMgrSPtr),y
|
||||
lda (ZPMemMgrTmp2),y
|
||||
beq .6
|
||||
|
||||
jsr S.GetMemPtrA get pathname
|
||||
>STYA ZPMemMgrTmp2
|
||||
bcs *
|
||||
>STYA ZPMemMgrTmp3
|
||||
|
||||
ldy #0
|
||||
lda (ZPMemMgrTmp1)
|
||||
cmp (ZPMemMgrTmp3)
|
||||
bne .6
|
||||
|
||||
tay
|
||||
|
||||
.2 lda (ZPMemMgrTmp1),y
|
||||
cmp (ZPMemMgrTmp2),y
|
||||
cmp (ZPMemMgrTmp3),y
|
||||
bne .6
|
||||
|
||||
tya
|
||||
iny
|
||||
cmp (ZPMemMgrTmp1)
|
||||
dey
|
||||
bne .2
|
||||
|
||||
>LDYA ZPMemMgrSPtr
|
||||
|
||||
bra *
|
||||
>LDYA ZPMemMgrTmp2
|
||||
|
||||
clc
|
||||
rts
|
||||
|
||||
.6 lda ZPMemMgrSPtr
|
||||
.6 lda ZPMemMgrTmp2
|
||||
clc
|
||||
adc #S.MEM.SIZE
|
||||
sta ZPMemMgrSPtr
|
||||
bcc .1
|
||||
inc ZPMemMgrSPtr+1
|
||||
sta ZPMemMgrTmp2
|
||||
bcc .7
|
||||
inc ZPMemMgrTmp2+1
|
||||
|
||||
.7 inx
|
||||
|
||||
bra .1
|
||||
|
||||
.9 sec
|
||||
|
@ -466,7 +466,7 @@ S.InitProcessA >PUSHA Push Cmd Line
|
||||
|
||||
lda (pCode),y
|
||||
>PUSHAX Push DS.SIZE
|
||||
>PUSHBI 0 no option
|
||||
>PUSHBI S.MEM.F.INIT0 Clear DS
|
||||
jsr S.GetMem
|
||||
bcs .97
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user