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 [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