A2osX/BIN/ATLOGON.S.txt
2023-07-14 12:24:49 +02:00

561 lines
9.4 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/atlogon
*--------------------------------------
.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
hCmdBuf .BS 1
hReplyBuf .BS 1
ZPCmdBuf .BS 2
ZPReplyBuf .BS 2
ZPPTR1 .BS 2
ZPPTR2 .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 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.USAGE .DA MSG.USAGE
L.MSG.NOATK .DA MSG.NOATK
L.MSG.ATKERR .DA MSG.ATKERR
L.MSG.GETINFO .DA MSG.GETINFO
L.MSG.NETNODPORT .DA MSG.NETNODPORT
L.MSG.NOTFOUND .DA MSG.NOTFOUND
L.MSG.SRVINFO1 .DA MSG.SRVINFO1
L.MSG.SRVINFO2 .DA MSG.SRVINFO2
L.MSG.PSTR .DA MSG.PSTR
L.FPLogin.Guest .DA FPLogin.Guest
L.FPLogin.Auth .DA FPLogin.Auth
.DA 0
*--------------------------------------
CS.INIT clc
rts
*--------------------------------------
CS.RUN ldy #S.PS.ARGC
lda (pPS),y
beq CS.RUN.USAGE
jsr CS.RUN.GetInfo
bcs .9
jsr CS.RUN.LookupName
bcs .9
jsr CS.RUN.GetParms
bcs .9
jsr CS.RUN.GetStatus
bcs .9
jsr CS.RUN.FILogin
bcs .9
lda #0
sec
.9 rts
*--------------------------------------
CS.RUN.USAGE >PUSHW L.MSG.USAGE
>PUSHBI 0
>SYSCALL PrintF
lda #E.SYN
sec
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.LookupName
lda #1
>SYSCALL ArgV
>STYA ZPPTR1
>LEA.G NameBuf
>STYA ZPPTR2
>STYA.G P.LookupName+$08
ldy #$ff
.1 iny
lda (ZPPTR1),y
bne .1
tya
tax
jsr CS.RUN.PutPtr2
.2 ldy #0
.3 lda (ZPPTR1),y
jsr CS.RUN.PutPtr2
iny
dex
bne .3
ldx #SEARCH.STRING.Len
ldy #0
.4 lda SEARCH.STRING,y
jsr CS.RUN.PutPtr2
iny
dex
bne .4
lda #4
>STA.G P.LookupName+$C RetInt
>STA.G P.LookupName+$D RetCnt
>LDYAI 5+99
>STYA.G P.LookupName+$10 BufLen
>LEA.G LookupBuf
>STYA.G P.LookupName+$12 BufPtr
lda #1
>STA.G P.LookupName+$16 MaxMatch
>LEA.G P.LookupName
ldx #AT.LookupName
jsr CS.RUN.GOATLK
bcs .9
>LDA.G P.LookupName+$17
beq .99
>PUSHW L.MSG.NETNODPORT
ldy #LookupBuf
ldx #4
.5 lda (pData),y
>PUSHA
iny
dex
bne .5
>PUSHBI 4
>SYSCALL PrintF
.9 rts
.99 >LDYA L.MSG.NOTFOUND
>SYSCALL PutS
lda #MLI.E.IO
sec
rts
*--------------------------------------
CS.RUN.GetParms >LEA.G P.GetParms
ldx #AT.GetParms
jsr CS.RUN.GOATLK
bcs .9
>LDYA.G P.GetParms+$4
>SYSCALL GetMem
bcs .9
>STYA ZPCmdBuf
stx hCmdBuf
>LDYA.G P.GetParms+$6
>SYSCALL GetMem
bcs .9
>STYA ZPReplyBuf
stx hReplyBuf
.9 rts
*--------------------------------------
CS.RUN.GetStatus
>LEA.G LookupBuf
>STYA ZPPTR1
>LEA.G P.GetStatus+$8
>STYA ZPPTR2
ldy #3
.1 lda (ZPPTR1),y copy NETWORK/NODE/SOCKET
sta (ZPPTR2),y
dey
bpl .1
>LDYA.G P.GetParms+$6
>STYA.G P.GetStatus+$C Reply buffer length
>LDYA ZPReplyBuf
>STYA.G P.GetStatus+$E
>LEA.G P.GetStatus
ldx #AT.GetStatus
jsr CS.RUN.GOATLK
bcs .9
>PUSHW L.MSG.SRVINFO1
lda #10 Server Name
clc
adc ZPReplyBuf
tay
lda #0
adc ZPReplyBuf+1
>PUSHYA
ldy #1
lda (ZPReplyBuf),y Offset to Machine Type
clc
adc ZPReplyBuf
pha
lda (ZPReplyBuf)
adc ZPReplyBuf+1
ply
>PUSHYA
>PUSHBI 4
>SYSCALL PrintF
ldy #3 Offset to Version list
lda (ZPReplyBuf),y
clc
adc ZPReplyBuf
pha
dey
lda (ZPReplyBuf),y
adc ZPReplyBuf+1
ply
jsr CS.RUN.PrintListYA
>LDYA L.MSG.SRVINFO2
>SYSCALL PutS
ldy #5 Offset to UAM list
lda (ZPReplyBuf),y
clc
adc ZPReplyBuf
pha
dey
lda (ZPReplyBuf),y
adc ZPReplyBuf+1
ply
jsr CS.RUN.PrintListYA
clc
.9 rts
*--------------------------------------
CS.RUN.PrintListYA
>STYA ZPPTR1
lda (ZPPTR1)
beq .8
tax
inc ZPPTR1
bne .1
inc ZPPTR1+1
.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.RUN.FILogin >LEA.G LookupBuf
>STYA ZPPTR1
>LEA.G P.FILogin+$4
>STYA ZPPTR2
ldy #3
.1 lda (ZPPTR1),y copy NETWORK/NODE/SOCKET
sta (ZPPTR2),y
dey
bpl .1
>LDYA.G P.GetParms+$6
>STYA.G P.FILogin+$E Reply buffer length
>LDYA ZPReplyBuf
>STYA.G P.FILogin+$10
lda #2 USERNAME
>SYSCALL ArgV
bcc .2
>LDYAI FPLogin.Guest.Len
>STYA.G P.FILogin+$8 Cmd buffer length
>LDYA L.FPLogin.Guest
>STYA.G P.FILogin+$A
bra .80
*--------------------------------------
.2 >STYA ZPPTR1
ldx #FPLogin.Auth.Len
ldy #0
.3 lda FPLogin.Auth,y
sta (ZPCmdBuf),y
iny
dex
bne .3
phy
ldy #$ff
.4 iny
lda (ZPPTR1),y
bne .4
tya
tax
ply
sta (ZPCmdBuf),y USERNAME Len
iny
.5 jsr CS.RUN.GetPtr1
sta (ZPCmdBuf),y
iny
dex
bne .5
tya
lsr
bcc .6
lda #0
sta (ZPCmdBuf),y
iny
.6 phy
lda #3 PASSWORD
>SYSCALL ArgV
bcs .99
>STYA ZPPTR1
ldx #8
ply
.7 jsr CS.RUN.GetPtr1
beq .8
sta (ZPCmdBuf),y
iny
dex
bne .7
.8 txa
beq .10
lda #0
.9 sta (ZPCmdBuf),y
iny
dex
bne .9
.10 >STYA.G P.FILogin+$8 Cmd buffer length
>LDYA ZPCmdBuf
>STYA.G P.FILogin+$A
.80 >LEA.G P.FILogin
ldx #AT.FILogin
jsr CS.RUN.GOATLK
bcs .89
>LDA.G P.FILogin+$14
sta A2osX.ATLKSID
.89 rts
.99 ply
lda #E.SYN
sec
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.GetPtr1 lda (ZPPTR1)
beq .8
inc ZPPTR1
bne .8
inc ZPPTR1+1
.8 rts
*--------------------------------------
CS.RUN.PutPtr2 sta (ZPPTR2)
inc ZPPTR2
bne .8
inc ZPPTR2+1
.8 rts
*--------------------------------------
CS.DOEVENT sec
rts
*--------------------------------------
CS.QUIT lda hReplyBuf
beq .1
>SYSCALL FreeMem
.1 lda hCmdBuf
beq .2
>SYSCALL FreeMem
.2 clc
rts
*--------------------------------------
CS.END
MSG.USAGE .CZ "Usage : ATLOGON <SERVER> [USER] [PASSWORD]"
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.NETNODPORT .CZ "Server Address : %H/%h:%h\r\n"
MSG.NOTFOUND .CZ "Server not found"
MSG.SRVINFO1 .CS "Server Name : %S\r\n"
.CS "Server Type : %S\r\n"
.CZ "AFP Dialects :\r\n"
MSG.SRVINFO2 .CZ "Supported UAMs :"
MSG.PSTR .CZ " %S\r\n"
SEARCH.STRING .PS "AFPServer"
.PS "*"
SEARCH.STRING.Len .EQ *-SEARCH.STRING
*--------------------------------------
FPLogin.Guest .DA #18
* .DA #0
.PS "AFPVersion 2.1"
.PS "No User Authent"
FPLogin.Guest.Len .EQ *-FPLogin.Guest
*--------------------------------------
FPLogin.Auth .DA #18
* .DA #0
.PS "AFPVersion 2.1"
.PS "Cleartxt Passwrd"
* .PS "username"
* .AS "password" 8 bytes, word aligned, 0 padded
FPLogin.Auth.Len .EQ *-FPLogin.Auth
*--------------------------------------
.DUMMY
.OR 0
DS.START
P.GetInfo .BS $0F
P.LookupName .BS $18
P.GetParms .BS $07
P.GetStatus .BS $14
P.FILogin .BS $19
NameBuf .BS 36
LookupBuf .BS 5+99
DS.END
.ED
*--------------------------------------
MAN
SAVE usr/src/bin/atlogon.s
ASM