A2osX/BIN/ATBROWSE.S.txt
2023-10-18 07:41:12 +02:00

323 lines
5.9 KiB
Plaintext
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

NEW
AUTO 3,1
.LIST OFF
.OP 65C02
.OR $2000
.TF bin/atbrowse
*--------------------------------------
.INB inc/macros.i
.INB inc/a2osx.i
.INB inc/mli.i
.INB inc/mli.e.i
.INB inc/appletalk.i
*--------------------------------------
.DUMMY
.OR ZPBIN
ZS.START
ZPAtlkParams .BS 2
ZPPTR1 .BS 2
BufPtr .BS 2
hBuf .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 0
.DA CS.END-CS.START CS
.DA DS.END-DS.START DS
.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.MSG.NOATK .DA MSG.NOATK
L.MSG.ATKERR .DA MSG.ATKERR
L.MSG.GETINFO .DA MSG.GETINFO
L.MSG.MYZONE .DA MSG.MYZONE
L.SEARCH.STRING .DA SEARCH.STRING
L.MSG.ZONES .DA MSG.ZONES
L.MSG.PSTR .DA MSG.PSTR
L.MSG.DUMP0 .DA MSG.DUMP0
L.MSG.DUMP .DA MSG.DUMP
.DA 0
*--------------------------------------
CS.INIT clc
CS.INIT.RTS rts
*--------------------------------------
CS.RUN jsr CS.RUN.GetInfo
bcs .9
jsr CS.RUN.GetMyZone
>LDYAI 1024
>SYSCALL GetMem
bcs .9
>STYA BufPtr
stx hBuf
jsr CS.RUN.GetZoneList
jsr CS.RUN.LookupName
lda #0
sec
.9 rts
*--------------------------------------
CS.RUN.GetInfo >LEA.G P.GetInfo
ldx #AT.GetInfo
jsr CS.RUN.GOATLK
bcs .9
>PUSHW L.MSG.GETINFO
>PUSHB.G P.GetInfo+$08 THIS-NET
>PUSHB.G P.GetInfo+$09 THIS-NET
>PUSHB.G P.GetInfo+$0E NODE
>PUSHB.G P.GetInfo+$0A BRIDGE
>PUSHB.G P.GetInfo+$0C HARDWARE ID
>PUSHB.G P.GetInfo+$0D HARDWARE ID
>PUSHB.G P.GetInfo+$0B ROM VERSION
>PUSHBI 7
>SYSCALL PrintF
rts
.9 pha
>LDYA L.MSG.NOATK
>SYSCALL PutS
pla
sec
rts
*--------------------------------------
CS.RUN.GetMyZone
>LEA.G ZoneBuf
>STYA.G P.GetMyZone+$08
lda #4 1/4 sec
>STA.G P.GetMyZone+$0C RetInt
>STA.G P.GetMyZone+$0D RetCnt
>LEA.G P.GetMyZone
ldx #AT.GetMyZone
jsr CS.RUN.GOATLK
bcs .9
>PUSHW L.MSG.MYZONE
>PUSHEA.G ZoneBuf
>PUSHBI 2
>SYSCALL PrintF
.9 rts
*--------------------------------------
CS.RUN.GetZoneList
>LDYAI 1024
>STYA.G P.GetZoneList+$08 BufLen
>LDYA BufPtr
>STYA.G P.GetZoneList+$0A BufPtr
>LDA.G P.GetInfo+$0A BRIDGE
>STA.G P.GetZoneList+$0E
lda #1
>STA.G P.GetZoneList+$0F Start Index
lda #4 1/4 sec
>STA.G P.GetZoneList+$11 RetInt
>STA.G P.GetZoneList+$12 RetCnt
>LEA.G P.GetZoneList
ldx #AT.GetZoneList
jsr CS.RUN.GOATLK
bcs .9
>LDYA L.MSG.ZONES
>SYSCALL PutS
>LDA.G P.GetZoneList+$13 Zone #
beq .8
tax
>LDYA BufPtr
jsr CS.RUN.PrintListYAX
.8 clc
.9 rts
*--------------------------------------
CS.RUN.LookupName
>LDYA L.SEARCH.STRING
>STYA.G P.LookupName+$08 Entry Name Ptr
lda #4
>STA.G P.LookupName+$0C RetInt
>STA.G P.LookupName+$0D RetCnt
>LDYAI 1024
>STYA.G P.LookupName+$10 BufLen
>LDYA BufPtr
>STYA ZPPTR1
>STYA.G P.LookupName+$12 BufPtr
lda #16
>STA.G P.LookupName+$16 MaxMatch
>LEA.G P.LookupName
ldx #AT.LookupName
jsr CS.RUN.GOATLK
.99 bcs .9
>LDYA L.MSG.DUMP0
>SYSCALL PutS
bcs .9
>LDA.G P.LookupName+$17
beq .8
.1 >PUSHW L.MSG.DUMP
ldy #0
.2 >PUSHB (ZPPTR1),y
iny
cpy #5
bne .2
lda ZPPTR1
clc
adc #5
sta ZPPTR1
lda ZPPTR1+1
adc #0
sta ZPPTR1+1
ldx #3
.3 >PUSHW ZPPTR1
lda ZPPTR1
sec
adc (ZPPTR1)
sta ZPPTR1
lda ZPPTR1+1
adc #0
sta ZPPTR1+1
dex
bne .3
>PUSHBI 11
>SYSCALL PrintF
bcs .9
>DEC.G P.LookupName+$17
bne .1
.8 clc
.9 rts
*--------------------------------------
CS.RUN.GOATLK >STYA ZPAtlkParams
ldy #1
txa
sta (ZPAtlkParams),y
>LDYA ZPAtlkParams
jsr A2osX.ATKCALL
bcc .9
pha
>PUSHW L.MSG.ATKERR
ldy #1
lda (ZPAtlkParams),y
>PUSHA
ldy #3
lda (ZPAtlkParams),y
>PUSHA
dey
lda (ZPAtlkParams),y
>PUSHA
>PUSHBI 3
>SYSCALL PrintF
pla
sec
.9 rts
*--------------------------------------
CS.RUN.PrintListYAX
>STYA ZPPTR1
.1 phx
>PUSHW L.MSG.PSTR
>PUSHW ZPPTR1
>PUSHBI 2
>SYSCALL PrintF
plx
bcs .9
lda (ZPPTR1)
sec
adc ZPPTR1
sta ZPPTR1
bcc .2
inc ZPPTR1+1
.2 dex
bne .1
.8 clc
.9 rts
*--------------------------------------
CS.DOEVENT sec
rts
*--------------------------------------
CS.QUIT lda hBuf
beq .8
>SYSCALL FreeMem
.8 clc
rts
*--------------------------------------
CS.END
MSG.NOATK .CZ "AppleTalk Not Loaded."
MSG.ATKERR .CZ "AppleTalk Call %h, ERR:%H\r\n"
MSG.GETINFO .CS "Network/Node:%H/%h\r\n"
.CS "Bridge : %h\r\n"
.CZ "HWID/ROMVER :%H/%h\r\n"
MSG.MYZONE .CZ "Zone Name :%S\r\n"
SEARCH.STRING .PS "="
.PS "="
.PS "*"
MSG.ZONES .CZ "Zone list :"
MSG.PSTR .CZ " %S\r\n"
MSG.DUMP0 .CZ "Net Nod SkT En# Object:Type@Zone"
MSG.DUMP .CZ "\e[?7l%H %h %h %h %S:%S@%S\r\n"
*--------------------------------------
.DUMMY
.OR 0
DS.START
P.GetInfo .BS $0F
P.GetZoneList .BS $19
P.GetMyZone .BS $10
P.LookupName .BS $18
ZoneBuf .BS 33
DS.END .ED
*--------------------------------------
MAN
SAVE usr/src/bin/atbrowse.s
ASM