diff --git a/A2osX.STARTUP.txt b/A2osX.STARTUP.txt index adfc7d9b..b1b9afc7 100644 --- a/A2osX.STARTUP.txt +++ b/A2osX.STARTUP.txt @@ -16,9 +16,9 @@ STARTPROC GETTY COM2 ${A2OSX}SBIN/LOGIN #INSDRV PIC.DRV # Network Section INSDRV UTHERNET.DRV 000E3A123456 -#INSDRV UTHERNET2.DRV 0008DC123456 +INSDRV UTHERNET2.DRV 0008DC123456 #INSDRV UTHER2.AI.DRV 0008DC123456 -#INSDRV LANCEGS.DRV +INSDRV LANCEGS.DRV STARTPROC TCPIP STARTPROC DHCPCLNT STARTPROC TELNETD diff --git a/DRV/LANCEGS.DRV.S.txt b/DRV/LANCEGS.DRV.S.txt index 075ed40f..18a546a0 100644 --- a/DRV/LANCEGS.DRV.S.txt +++ b/DRV/LANCEGS.DRV.S.txt @@ -1,6 +1,6 @@ PR#3 PREFIX /A2OSX.BUILD -NEW +LOMEM $A00 INC 1 AUTO 6 .LIST OFF @@ -10,11 +10,12 @@ AUTO 6 *-------------------------------------- .INB /A2OSX.BUILD/INC/MACROS.I .INB /A2OSX.BUILD/INC/A2OSX.I + .INB /A2OSX.BUILD/INC/MLI.ERR.I + .INB /A2OSX.BUILD/INC/NET.I + .INB /A2OSX.BUILD/INC/NET.91C96.I .INB /A2OSX.BUILD/INC/LIBTCPIP.I *-------------------------------------- ZPTmpPTR .EQ ZPDRV -*-------------------------------------- - .INB DRV/X.NET.91C96.S *-------------------------------------- * File Header (16 Bytes) *-------------------------------------- @@ -40,27 +41,46 @@ Dev.Detect >STYA Args >LDYA L.MSG.DETECT >SYSCALL CPrintFYA - ldx #$10 -.1 lda L91C96.BSR+1,x + ldx #$70 + +.1 txa IO based detection, avoid scanning in Disk Controller IO!!!! + lsr + lsr + lsr + lsr + tay + + lda A2osX.SLOTS,y + bne .2 + + lda L91C96.BSR+1,x cmp #DEVID beq .3 - inc DEV.HEADER.NAME+4 +.2 dec DEV.HEADER.NAME+4 txa - clc - adc #$10 + sec + sbc #$10 tax - bpl .1 not yat at $80 + bne .1 >LDYA L.MSG.DETECT.KO >SYSCALL CPrintFYA - lda #DEVMGR.ERRNOHW Not Found in any slot, exiting + lda #MLI.ERR.NODEV sec rts .3 stx DEVSLOTx0 - + txa + lsr + lsr + lsr + lsr + tay + lda #A2osX.SLOTS.NET + sta A2osX.SLOTS,y + >LDYA ARGS >STYA ZPTmpPTR lda (ZPTmpPTR) @@ -82,108 +102,79 @@ Dev.Detect >STYA Args clc rts *-------------------------------------- - .INB DRV/X.NET.DRV.S + .INB /A2OSX.SRC/DRV/X.NET.DRV.S *-------------------------------------- CS.END -MSG.DETECT >CSTR "LanCeGS/SMSC91C96 Driver.\n" -MSG.DETECT.OK >CSTR "LanCeGS/SMSC91C96 Installed As Device : %S\n" -MSG.DETECT.KO >CSTR "Hardware Not Found.\n" +MSG.DETECT >CSTR "LanCeGS/SMSC91C96 Driver.\r\n" +MSG.DETECT.OK >CSTR "LanCeGS/SMSC91C96 Installed As Device : %S\r\n" +MSG.DETECT.KO >CSTR "Hardware Not Found.\r\n" Args .BS 2 *-------------------------------------- * Device Header (16 Bytes) *-------------------------------------- DEV.HEADER cld jmp (DRV.CS.START,x) - .DA #S.DEV.F.SHARE+S.DEV.F.EVENT -DEV.HEADER.NAME >PSTR "ETH1" NAME - .HS 00.00 - .HS 00.00.00.00 + .DA #0 + .BS 6 +DEV.HEADER.NAME >PSTR "ETH7" *-------------------------------------- * Driver Code *-------------------------------------- -DRV.CS.START .DA OPEN - .DA GETEVENT - .DA $FFFF no COUT +DRV.CS.START .DA STATUS + .DA READBLOCK + .DA WRITEBLOCK + .DA BADCALL + .DA BADCALL + .DA BADCALL + .DA OPEN .DA CLOSE - .DA GETINFO - .DA $FFFF no IRQ - .DA SEND - .DA $FFFF no SETIPCFG -L.DEVINFO .DA DEVINFO + .DA BADCALL + .DA BADCALL +L.DEVSTAT .DA DEVSTAT .DA 0 end or relocation *-------------------------------------- -* input : -* none -* output : -* CC on success -* CS on error -*-------------------------------------- -OPEN jsr Reset will select L91C96.0 +BADCALL lda #MLI.ERR.BADCALL + sec + rts +*-------------------------------------- +STATUS lda #S.DEVSTAT.NET.STATUS.10 + sta LINK.STATUS - lda #L91C96.0.TCR.FDSE+L91C96.0.TCR.FUDPLX+L91C96.0.TCR.PADEN+L91C96.0.TCR.TXENA - sta L91C96.0.TCR,x - lda /L91C96.0.TCR.FDSE+L91C96.0.TCR.FUDPLX+L91C96.0.TCR.PADEN+L91C96.0.TCR.TXENA - sta L91C96.0.TCR+1,x - - lda #L91C96.0.RCR.NOCRC+L91C96.0.RCR.RXENA+L91C96.0.RCR.ALLMUL - sta L91C96.0.RCR,x - lda /L91C96.0.RCR.NOCRC+L91C96.0.RCR.RXENA+L91C96.0.RCR.ALLMUL - sta L91C96.0.RCR+1,x - - lda #1 - sta L91C96.BSR,x - - lda #L91C96.1.CR.NOWAIT - sta L91C96.1.CR,x - lda /L91C96.1.CR.NOWAIT - sta L91C96.1.CR+1,x + ldx DEVSLOTx0 - ldy #0 - bit USERMAC - bmi .2 + stz L91C96.BSR,x + lda L91C96.0.EPHSR,x + lda L91C96.0.EPHSR+1,x + and /L91C96.0.EPHSR.LINK + beq .1 + lda LINK.STATUS + ora #S.DEVSTAT.NET.STATUS.OK + sta LINK.STATUS -.1 lda L91C96.1.IAR,x - sta MAC,y - inx - iny - cpy #6 - bne .1 - bra .3 - -.2 lda MAC,y - sta L91C96.1.IAR,x - inx - iny - cpy #6 +.1 lda L91C96.0.TCR,x + lda L91C96.0.TCR+1,x + and /L91C96.0.TCR.FDSE bne .2 + lda LINK.STATUS + ora #S.DEVSTAT.NET.STATUS.FD + sta LINK.STATUS -.3 ldx DEVSLOTx0 - lda #L91C96.1.CTR.DEFAULT+L91C96.1.CTR.AUTOREL - sta L91C96.1.CTR,x - lda /L91C96.1.CTR.DEFAULT+L91C96.1.CTR.AUTOREL - sta L91C96.1.CTR+1,x - +.2 >LDYA L.DEVSTAT clc rts *-------------------------------------- -* input : -* pEvent -* output : -* CC no event -* CS event -*-------------------------------------- -GETEVENT ldx DEVSLOTx0 +READBLOCK ldx DEVSLOTx0 lda #2 sta L91C96.BSR,x lda L91C96.2.IST,x and #L91C96.2.IST.RCV - bne GETEVENT.RxOK + bne READBLOCK.RxOK lda #ERR.DEV.NOFRAME sec rts -GETEVENT.RxOK lda #L91C96.2.PTR.RCVD+L91C96.2.PTR.AUTOI+L91C96.2.PTR.READ +READBLOCK.RxOK lda #L91C96.2.PTR.RCVD+L91C96.2.PTR.AUTOI+L91C96.2.PTR.READ sta L91C96.2.PTR,x lda /L91C96.2.PTR.RCVD+L91C96.2.PTR.AUTOI+L91C96.2.PTR.READ sta L91C96.2.PTR+1,x @@ -191,10 +182,7 @@ GETEVENT.RxOK lda #L91C96.2.PTR.RCVD+L91C96.2.PTR.AUTOI+L91C96.2.PTR.READ lda L91C96.2.DATA,x Get Frame Status Word (lo) lda L91C96.2.DATA,x Get Frame Status Word (HI) - asl #$60 = Broadcast? - ldy #S.EVT.DATAHI - sta (pEvent),y - + asl asl asl #$10 = odd? asl if odd, CS @@ -209,21 +197,20 @@ GETEVENT.RxOK lda #L91C96.2.PTR.RCVD+L91C96.2.PTR.AUTOI+L91C96.2.PTR.READ iny bne .1 + inc .1 iny bne .11 + inc .11 >PUSHYA FRAMLEN+2 >PUSHBI 0 >SYSCALL GetMem bcs .99 >STYA ZPTmpPTR - txa - ldy #S.EVT.DATALO - sta (pEvent),y - - lda #S.EVT.F.NET+S.EVT.F.hMEM1 - sta (pEvent) + stx .8+1 + sty .8+3 + sta .8+5 lda FRAMELEN sta (ZPTmpPTR) @@ -236,14 +223,14 @@ GETEVENT.RxOK lda #L91C96.2.PTR.RCVD+L91C96.2.PTR.AUTOI+L91C96.2.PTR.READ ldx DEVSLOTx0 .2 jsr DecFrameLen - beq .8 + beq .4 lda L91C96.2.DATA,x sta (ZPTmpPTR),y iny bne .3 inc ZPTmpPTR+1 .3 jsr DecFrameLen - beq .8 + beq .4 lda L91C96.2.DATA,x sta (ZPTmpPTR),y iny @@ -251,58 +238,16 @@ GETEVENT.RxOK lda #L91C96.2.PTR.RCVD+L91C96.2.PTR.AUTOI+L91C96.2.PTR.READ inc ZPTmpPTR+1 bra .2 -.8 lda #L91C96.2.MMUCR.REMREL +.4 lda #L91C96.2.MMUCR.REMREL sta L91C96.2.MMUCR,x - clc - rts -.99 sec - rts -*-------------------------------------- -CLOSE jsr Reset +.8 ldx #$ff hMem + ldy #$ff PtrLO + lda #$ff PtrHI clc - rts +.99 rts *-------------------------------------- -* in: -* out: -* Y,A = BUFFER PTR -* CC on success -* CS on error -*-------------------------------------- -GETINFO lda #S.DEVINFO.NET.STATUS.10 - sta LINK.STATUS - - ldx DEVSLOTx0 - - stz L91C96.BSR,x - lda L91C96.0.EPHSR,x - lda L91C96.0.EPHSR+1,x - and /L91C96.0.EPHSR.LINK - beq .1 - lda LINK.STATUS - ora #S.DEVINFO.NET.STATUS.OK - sta LINK.STATUS - -.1 lda L91C96.0.TCR,x - lda L91C96.0.TCR+1,x - and /L91C96.0.TCR.FDSE - bne .2 - lda LINK.STATUS - ora #S.DEVINFO.NET.STATUS.FD - sta LINK.STATUS - -.2 >LDYA L.DEVINFO - clc - rts -*-------------------------------------- -* in: -* PULLW = FRAME PTR -* PULLW = FRAME LEN -* out: -* CC on success -* CS on error -*-------------------------------------- -SEND >PULLW ZPTmpPTR +WRITEBLOCK >STYA ZPTmpPTR ldx DEVSLOTx0 lda #2 @@ -406,9 +351,55 @@ SEND >PULLW ZPTmpPTR .9 sec rts *-------------------------------------- -* PRIVATE +OPEN jsr CLOSE + + lda #L91C96.0.TCR.FDSE+L91C96.0.TCR.FUDPLX+L91C96.0.TCR.PADEN+L91C96.0.TCR.TXENA + sta L91C96.0.TCR,x + lda /L91C96.0.TCR.FDSE+L91C96.0.TCR.FUDPLX+L91C96.0.TCR.PADEN+L91C96.0.TCR.TXENA + sta L91C96.0.TCR+1,x + + lda #L91C96.0.RCR.NOCRC+L91C96.0.RCR.RXENA+L91C96.0.RCR.ALLMUL + sta L91C96.0.RCR,x + lda /L91C96.0.RCR.NOCRC+L91C96.0.RCR.RXENA+L91C96.0.RCR.ALLMUL + sta L91C96.0.RCR+1,x + + lda #1 + sta L91C96.BSR,x + + lda #L91C96.1.CR.NOWAIT + sta L91C96.1.CR,x + lda /L91C96.1.CR.NOWAIT + sta L91C96.1.CR+1,x + + ldy #0 + bit USERMAC + bmi .2 + +.1 lda L91C96.1.IAR,x + sta MAC,y + inx + iny + cpy #6 + bne .1 + bra .3 + +.2 lda MAC,y + sta L91C96.1.IAR,x + inx + iny + cpy #6 + bne .2 + +.3 ldx DEVSLOTx0 + lda #L91C96.1.CTR.DEFAULT+L91C96.1.CTR.AUTOREL + sta L91C96.1.CTR,x + lda /L91C96.1.CTR.DEFAULT+L91C96.1.CTR.AUTOREL + sta L91C96.1.CTR+1,x + + clc + rts *-------------------------------------- -Reset ldx DEVSLOTx0 +CLOSE ldx DEVSLOTx0 stz L91C96.BSR,x lda #L91C96.0.RCR.RESET @@ -426,6 +417,8 @@ Reset ldx DEVSLOTx0 stz L91C96.0.RCR,x stz L91C96.0.RCR+1,x + + clc rts *-------------------------------------- DecFrameLen lda FRAMELEN @@ -438,16 +431,22 @@ DecFrameLen lda FRAMELEN .8 rts *-------------------------------------- DRV.CS.END -*-------------------------------------- DEVSLOTx0 .BS 1 USERMAC .BS 1 FRAMELEN .BS 2 +*-------------------------------------- +DEVSTAT .DA #0 + .BS 3 size + >PSTR "LanCEGS/L91C96" + .BS 1 + .DA #S.DEVSTAT.TYPE.NET + .BS 1 Subtype + .BS 2 Version *-------------------------------------- -DEVINFO .DA #S.DEVINFO.TYPE.NET -DEVFLAGS .DA #0 -MAC .BS 6 +FLAGS .DA #0 LINK.STATUS .BS 1 OK/DUPLEX/SPEED +MAC .BS 6 *-------------------------------------- MAN -SAVE DRV/LANCEGS.DRV.S +SAVE /A2OSX.SRC/DRV/LANCEGS.DRV.S ASM diff --git a/DRV/PIC.DRV.S.txt b/DRV/PIC.DRV.S.txt index 741fded1..579021a8 100644 --- a/DRV/PIC.DRV.S.txt +++ b/DRV/PIC.DRV.S.txt @@ -36,7 +36,7 @@ L.DEV.HEADER.NAME .DA DEV.HEADER.NAME *-------------------------------------- Dev.Detect >STYA ARGS >LDYA L.MSG.DETECT - >SYSCALL PPrintFYA + >SYSCALL CPrintFYA stz ZPTmpPtr1 lda #$C1 @@ -63,7 +63,7 @@ Dev.Detect >STYA ARGS bne .1 >LDYA L.MSG.DETECT.KO - >SYSCALL PPrintFYA + >SYSCALL CPrintFYA lda #MLI.ERR.NODEV Not Found in any slot, exiting sec @@ -86,7 +86,7 @@ Dev.Detect >STYA ARGS >PUSHW L.DEV.HEADER.NAME >LDYA L.MSG.DETECT.OK - >SYSCALL PPrintFYA + >SYSCALL CPrintFYA clc rts *-------------------------------------- @@ -94,9 +94,9 @@ CS.END DEVSIG.Offset .HS 0507 DEVSIG.Value .HS 4848 DEVSIG.Length .EQ DEVSIG.Value-DEVSIG.Offset -MSG.DETECT >CSTR "Apple PIC (Parallel Interface Card).\n" -MSG.DETECT.OK >CSTR "PIC Installed As Device : %S\n" -MSG.DETECT.KO >CSTR "No PIC Found.\n" +MSG.DETECT >CSTR "Apple PIC (Parallel Interface Card).\r\n" +MSG.DETECT.OK >CSTR "PIC Installed As Device : %S\r\n" +MSG.DETECT.KO >CSTR "No PIC Found.\r\n" ARGS .BS 2 *-------------------------------------- * Device Header (16 Bytes) diff --git a/DRV/UTHER2.AI.DRV.S.txt b/DRV/UTHER2.AI.DRV.S.txt index 3ec66403..7cbf5800 100644 --- a/DRV/UTHER2.AI.DRV.S.txt +++ b/DRV/UTHER2.AI.DRV.S.txt @@ -75,7 +75,7 @@ Dev.Detect >STYA Args cmp #W5100.MR.AI+W5100.MR.IND bne .2 - >AR.SELECT RTR Double Check with RTR default value... + >AR.SELECT RTR lda W5100.DR,x Get RTR HI cmp /2000 @@ -299,7 +299,7 @@ READBLOCK.RxOK >AR.SELECT S0.RX.RD clc rts *-------------------------------------- -WRITEBLOCK >PULLW ZPTmpPTR +WRITEBLOCK >STYA ZPTmpPTR lda (ZPTmpPTR) sec @@ -383,6 +383,8 @@ WRITEBLOCK.1 >AR.SELECT S0.DIPR lda Offset+1 adc RXTX.Size+1 + and /RXTX.MASK + ora /TX.BASE sta W5100.DR,x write HI pla sta W5100.DR,x write LO @@ -507,11 +509,9 @@ DEVSTAT .DA #0 .DA #S.DEVSTAT.TYPE.NET .BS 1 Subtype .BS 2 Version -*-------------------------------------- FLAGS .DA #S.DEVSTAT.NET.FLAGS.ARPOFFLOAD+S.DEVSTAT.NET.FLAGS.IPOFFLOAD LINK.STATUS .DA #S.DEVSTAT.NET.STATUS.OK+S.DEVSTAT.NET.STATUS.FD+S.DEVSTAT.NET.STATUS.100 MAC .BS 6 -*-------------------------------------- MAN SAVE /A2OSX.SRC/DRV/UTHER2.AI.DRV.S ASM diff --git a/DRV/UTHERNET2.DRV.S.txt b/DRV/UTHERNET2.DRV.S.txt index 6ea90789..22dc093b 100644 --- a/DRV/UTHERNET2.DRV.S.txt +++ b/DRV/UTHERNET2.DRV.S.txt @@ -74,7 +74,7 @@ Dev.Detect >STYA Args cmp #W5100.MR.AI+W5100.MR.IND bne .2 - >AR.SELECT RTR Double Check with RTR default value... + >AR.SELECT RTR lda W5100.DR,x Get RTR HI cmp /2000 @@ -153,7 +153,7 @@ DEV.HEADER cld jmp (DRV.CS.START,x) .DA #0 .BS 6 -DEV.HEADER.NAME >PSTR "ETH7" NAME +DEV.HEADER.NAME >PSTR "ETH7" *-------------------------------------- * Driver Code *-------------------------------------- @@ -187,7 +187,7 @@ READBLOCK ldx DEVSLOTx0 lda #ERR.DEV.NOFRAME -READBLOCK.Err sec + sec rts READBLOCK.RxOK >AR.SELECT S0.RX.RD @@ -217,7 +217,7 @@ READBLOCK.RxOK >AR.SELECT S0.RX.RD * >PUSHYA Already pushed.... >PUSHBI 0 >SYSCALL GetMem - bcs READBLOCK.Err + bcs .99 >STYA ZPTmpPTR stx .8+1 sty .8+3 @@ -274,9 +274,9 @@ READBLOCK.RxOK >AR.SELECT S0.RX.RD ldy #$ff PtrLO lda #$ff PtrHI clc - rts +.99 rts *-------------------------------------- -WRITEBLOCK >PULLW ZPTmpPTR +WRITEBLOCK >STYA ZPTmpPTR lda (ZPTmpPTR) sta RXTX.Size @@ -347,8 +347,8 @@ WRITEBLOCK.1 ldy #S.ETH.SRCMAC+5 lda Offset+1 adc RXTX.Size+1 -* and /RXTX.MASK -* ora /TX.BASE + and /RXTX.MASK + ora /TX.BASE sta W5100.DR,x write HI pla sta W5100.DR,x write LO diff --git a/Floppies/A2OSX.BOOT.po b/Floppies/A2OSX.BOOT.po index 38336ce9..a3325941 100644 Binary files a/Floppies/A2OSX.BOOT.po and b/Floppies/A2OSX.BOOT.po differ diff --git a/Floppies/A2OSX.BUILD.po b/Floppies/A2OSX.BUILD.po index ee8323b2..427d196d 100644 Binary files a/Floppies/A2OSX.BUILD.po and b/Floppies/A2OSX.BUILD.po differ diff --git a/Floppies/A2OSX.SRC.po b/Floppies/A2OSX.SRC.po index 8ce349d4..775b977b 100644 Binary files a/Floppies/A2OSX.SRC.po and b/Floppies/A2OSX.SRC.po differ diff --git a/README.md b/README.md index 0056f9db..32993b23 100644 --- a/README.md +++ b/README.md @@ -81,7 +81,7 @@ OApple+1,OApple+2,OApple+3 to switch between screens : Kernel Log, text, DHGR. | LOGIN | In Progress | no auth using /etc/passd yet | 0.9 | | SHELL | Working | (See Internal Shell commands) | 0.9 | | KCONFIG | Working | Kernel Configuration Utility | 0.9 | -| ---- | ------ | ------- | -----:| +| ---- | ------ | ------- | ----- | | TCPIP | Working | Socket API.ARP,IP,ICMP,UDP & TCP ok | 0.9 | | DHCPCLNT| Working | rewritten to use new Socket API | 0.9 | | TELNETD | In Progress | | 0.9 | @@ -126,14 +126,14 @@ note : '$VAR' does NOT expand Variable | Console.DRV | Working | ANSI support in Progress. | 0.9 | | SSC.DRV | Working | Apple "Super Serial Card" Driver | 0.9 | | SSC.I.DRV | Working | Apple "Super Serial Card" Driver (IRQ enabled) | 0.9 | -| PIC.DRV | In Progress | Apple "Parallel Interface Card" Driver, renamed from PPIC.DRV | 0.8 | +| PIC.DRV | In Progress | Apple "Parallel Interface Card" Driver, renamed from PPIC.DRV | 0.9 | | Mouse.DRV | Working | Apple Mouse Card,//c Mouse Port | 0.9 | | DHGR.DRV | In Progress | except bitblt... | 0.8 | | ---- | ------ | ------- | ----- | +| LanCeGS.DRV | Working | | 0.9 | | Uthernet.DRV | Working | | 0.9 | | Uthernet2.DRV | Working | | 0.9 | -| Uther2.AI.DRV | In Progress | With ARP/IP Offloading | 0.8 | -| LanCeGS.DRV | Working | | 0.8 | +| Uther2.AI.DRV | In Progress | With ARP/IP Offloading | 0.9 | ## BIN,External Shell commands: | Name | Status | Comment | K.Ver | diff --git a/SYS/KM.APPLETALK.S.txt b/SYS/KM.APPLETALK.S.txt index dda02358..2d438691 100644 --- a/SYS/KM.APPLETALK.S.txt +++ b/SYS/KM.APPLETALK.S.txt @@ -78,12 +78,18 @@ AT.INIT >LDAXI MSG.INIT bmi .5 >STYA MLI+1 + + >LDAXI MSG.ATINIT + jsr PrintCStrAX .5 jsr GO.WSCARD .DA #MLIATALK .DA MLIATALK.PARAMS bcs .9 + >LDAXI MSG.PRODOS + jsr PrintCStrAX + jsr MLI .DA #MLIALLOCIRQ .DA MLIALLOCIRQ.PARAMS @@ -116,9 +122,11 @@ GO.OLDMLI jmp $ffff .INB /A2OSX.SRC/X.PRINTF.S *-------------------------------------- MSG.INIT >CSTR "AppleTalk Driver For A2osX\n" +MSG.FAILED >CSTR "AppleTalk Workstation Card Failed Power Up Diagnostics : EC=%h.\n" MSG.NOHW >CSTR "AppleTalk Workstation Card Not Found.\n" MSG.HWOK >CSTR "AppleTalk Workstation Card Type #%d Found In Slot #%d.\n" -MSG.FAILED >CSTR "AppleTalk Workstation Card Failed Power Up Diagnostics : EC=%h.\n" +MSG.ATINIT >CSTR "Calling ATINIT..." +MSG.PRODOS >CSTR "Registering Into ProDOS..." MSG.OK >CSTR "AppleTalk Driver Successfully Installed.\n" MSG.KO >CSTR "AppleTalk Driver Install Failed : EC=%h.\n" *--------------------------------------