Mercurial > hg > Members > kono > nitros9-code
changeset 1167:a3d0ac951684
Miscellaneous source improvements
author | boisy |
---|---|
date | Mon, 19 May 2003 11:10:57 +0000 |
parents | bb618bed0bdc |
children | 3be7fce1a56b |
files | level2/cmds/makefile level2/cmds/mmap.asm level2/coco3/ChangeLog level2/coco3/bootfiles/makefile level2/coco3_6309/ChangeLog level2/coco3_6309/bootfiles/makefile level2/defs/makefile level2/makefile level2/modules/boot_1773.asm level2/modules/clock.asm level2/modules/makefile level2/modules/scf.asm level2/sys/makefile |
diffstat | 13 files changed, 212 insertions(+), 160 deletions(-) [+] |
line wrap: on
line diff
--- a/level2/cmds/makefile Mon May 19 11:06:54 2003 +0000 +++ b/level2/cmds/makefile Mon May 19 11:10:57 2003 +0000 @@ -1,3 +1,5 @@ +# Makefile for OS-9 Level Two CMDS/ + include ../../Makefile.rules vpath %.asm $(LEVEL1)/CMDS:$(3RDPARTY)/packages/basic09 @@ -15,8 +17,8 @@ SUBS = gfx2 gfx inkey syscall SHELLMODS = shellplus date deiniz echo iniz link load save unlink -UTILPAK1 = attr copy del deldir dir display list makdir mdir \ - mfree procs rename tmode +UTILPAK1 = attr build copy del deldir dir display list makdir mdir \ + merge mfree procs rename sleep tee tmode ALLOBJS = $(CMDS) $(SUBS)
--- a/level2/cmds/mmap.asm Mon May 19 11:06:54 2003 +0000 +++ b/level2/cmds/mmap.asm Mon May 19 11:10:57 2003 +0000 @@ -8,7 +8,7 @@ * Ed. Comments Who YY/MM/DD * ------------------------------------------------------------------ * ? Original verison KKD 88/??/?? -* 4 Modified by Ken Drexler fr various block sizes KD 89/07/30 +* 4 Modified by Ken Drexler for other block sizes KD 89/07/30 nam MMap ttl Memory Block Utility
--- a/level2/coco3/ChangeLog Mon May 19 11:06:54 2003 +0000 +++ b/level2/coco3/ChangeLog Mon May 19 11:10:57 2003 +0000 @@ -1,3 +1,8 @@ +OS-9 Level Two V03.01.02: +- The cputype command has been optimized for size. +- Slight performance modifications were made to RBF and SCF. +- More commands have been added to the merged utilpak1 file. + OS-9 Level Two V03.01.01: - SYS/helpmsg expanded to include new commands. - ident now correctly reports modules with a language byte of Obj6309.
--- a/level2/coco3/bootfiles/makefile Mon May 19 11:06:54 2003 +0000 +++ b/level2/coco3/bootfiles/makefile Mon May 19 11:10:57 2003 +0000 @@ -1,3 +1,5 @@ +# Makefile for OS-9 Level Two BOOTLISTS/ + include ../../Makefile.rules # Module directory
--- a/level2/coco3_6309/ChangeLog Mon May 19 11:06:54 2003 +0000 +++ b/level2/coco3_6309/ChangeLog Mon May 19 11:10:57 2003 +0000 @@ -1,3 +1,8 @@ +OS-9 Level Two V03.01.02: +- The cputype command has been optimized for size. +- Slight performance modifications were made to RBF and SCF. +- More commands have been added to the merged utilpak1 file. + OS-9 Level Two V03.01.01: - SYS/helpmsg expanded to include new commands. - ident now correctly reports modules with a language byte of Obj6309.
--- a/level2/coco3_6309/bootfiles/makefile Mon May 19 11:06:54 2003 +0000 +++ b/level2/coco3_6309/bootfiles/makefile Mon May 19 11:10:57 2003 +0000 @@ -1,3 +1,5 @@ +# Makefile for OS-9 Level Two BOOTLISTS/ + include ../../Makefile.rules # Module directory
--- a/level2/defs/makefile Mon May 19 11:06:54 2003 +0000 +++ b/level2/defs/makefile Mon May 19 11:10:57 2003 +0000 @@ -1,3 +1,5 @@ +# Makefile for OS-9 Level Two DEFS/ + include ../../Makefile.rules DEPENDS = ./Makefile
--- a/level2/makefile Mon May 19 11:06:54 2003 +0000 +++ b/level2/makefile Mon May 19 11:10:57 2003 +0000 @@ -1,3 +1,5 @@ +# Makefile for OS-9 Level Two + include ../Makefile.rules RELEASE = os9l2v030101
--- a/level2/modules/boot_1773.asm Mon May 19 11:06:54 2003 +0000 +++ b/level2/modules/boot_1773.asm Mon May 19 11:10:57 2003 +0000 @@ -5,9 +5,11 @@ * * Ed. Comments Who YY/MM/DD * ------------------------------------------------------------------ -* 4 Original Tandy distribution version -* 6 Obtained from L2 Upgrade archive, has 6ms step BGP 98/10/12 +* 4 Original Tandy distribution version +* 6 Obtained from L2 Upgrade archive, has 6ms step BGP 98/10/12 * rate and disk timeout changes +* 6r2 Added '.' output for each sector under NitrOS9 BGP 03/05/18 +* for Mark Marlette (a special request :) nam Boot ttl WD1773 Boot module @@ -25,7 +27,7 @@ tylg set Systm+Objct atrv set ReEnt+rev -rev set $01 +rev set $02 edition set 6 mod eom,name,tylg,atrv,start,size @@ -43,12 +45,12 @@ name fcs /Boot/ fcb edition -start clra - ldb #size -L0015 pshs a - decb - bne L0015 - tfr s,u +start clra clear A + ldb #size get our 'stack' size +L0015 pshs a save 0 on stack + decb and continue... + bne L0015 until we've created our stack + tfr s,u put 'stack statics' in U ldx #$FF48 lda #$D0 sta ,x @@ -61,16 +63,16 @@ lda #$09 sta >$FF40 ldd #$C350 - ifne NitrOS9 + IFNE NitrOS9 nop - endc + ENDC L003A nop nop - ifne NitrOS9 + IFNE NitrOS9 nop nop nop - endc + ENDC subd #$0001 bne L003A pshs u,y,x,b,a @@ -82,7 +84,7 @@ std u0002,u clrb ldx #$0000 - bsr L00C7 + bsr ReadSect bcs L00AA ldd $01,y std u0007,u @@ -111,8 +113,14 @@ beq L00A3 L0091 pshs x,b,a clrb - bsr L00C7 + bsr ReadSect bcs L00A8 + + IFNE NitrOS9 + lda #'. dump out a period for boot debugging + jsr <D.BtBug do the debug stuff + ENDC + puls x,b,a inc u0002,u leax 1,x @@ -123,11 +131,12 @@ bra L00AC L00A8 leas $04,s L00AA leas $02,s -L00AC sta >$FFD9 +L00AC sta >$FFD9 unnecessary - rel does this for us puls u,y,x - leas $0A,s - clr >$FF40 + leas size,s clean up stack + clr >$FF40 shut off floppy disk rts + L00B7 lda #$29 sta ,u clr u0004,u @@ -135,8 +144,11 @@ lbsr L0170 ldb #STEP lbra L0195 -L00C7 lda #$91 - cmpx #$0000 + +* Read a sector from the 1773 +* Entry: X = LSN to read +ReadSect lda #$91 + cmpx #$0000 LSN0? bne L00DF bsr L00DF bcs L00D6 @@ -245,26 +257,26 @@ stb >$FF48 rts L01A8 - ifne NitrOS9 + IFNE NitrOS9 nop - endc + ENDC bsr L019F L01AA - ifne NitrOS9 + IFNE NitrOS9 nop nop - endc + ENDC lbsr L01AD L01AD - ifne NitrOS9 + IFNE NitrOS9 nop nop - endc + ENDC lbsr L01B0 L01B0 - ifne NitrOS9 + IFNE NitrOS9 nop - endc + ENDC rts * Filler to get $1D0
--- a/level2/modules/clock.asm Mon May 19 11:06:54 2003 +0000 +++ b/level2/modules/clock.asm Mon May 19 11:10:57 2003 +0000 @@ -194,9 +194,18 @@ ora <D.IRQS Check to see if other hardware IRQ pending. bita #%10110111 Any V/IRQ interrupts pending? beq toggle + IFGT Level-2 + lbsr DoPoll Yes, go service them. + ELSE bsr DoPoll Yes, go service them. + ENDC bra KbdCheck -toggle bsr DoToggle No, toggle GIME anyway +toggle equ * + IFGT Level-2 + lbsr DoToggle No, toggle GIME anyway + ELSE + bsr DoToggle No, toggle GIME anyway + ENDC KbdCheck equ * IFGT Level-2
--- a/level2/modules/makefile Mon May 19 11:06:54 2003 +0000 +++ b/level2/modules/makefile Mon May 19 11:10:57 2003 +0000 @@ -1,3 +1,5 @@ +# Makefile for OS-9 Level Two MODULES/ + include ../../Makefile.rules CLOCKELIM = -aRTCElim=1 -aRTCDsto2=0 -aRTCDsto4=0 -aRTCBB=0 -aRTCSmart=0 -aRTCHarrs=0 -aRTCTc3=0 -aRTCSoft=0 -aMPIFlag=0
--- a/level2/modules/scf.asm Mon May 19 11:06:54 2003 +0000 +++ b/level2/modules/scf.asm Mon May 19 11:10:57 2003 +0000 @@ -19,108 +19,134 @@ * * Ed. Comments Who YY/MM/DD * ------------------------------------------------------------------ +* V1.09 Speeded up L05CC (write char to device) ??? 93/04/20 +* routine by a few cycles +* - Slightly optomized Insert char +* - Move branch table so Read & ReadLn are 1 +* cycle faster each +* Fixed SS.Fill so size is truncated @ 256 bytes +* - Added NO CR option to SS.Fill (for use with +* modified Shellplus V2.2 command history) +* Slight speedup to some of ReadLn parsing, ??? 93/04/21 +* TFM's in Open/Close +* - More optomization to read/write driver calls +* - Got rid of branch table @ L05E3 for speed +* V1.10 Added Boisy Pitre's patch for non-sharable ??? 93/05/25 +* devices. +* - Saved 4 cycles in routine @ L042B ??? 93/05/27 +* - Modified Boisy's routine to not pshs/puls B +* (saves 2 cycles) +* - Changed buffer prefill of CR's to save 1 byte +* V1.11 Changed a BRA to a LBRA to a straight 93/07/27 +* LBRA in L0322 +* - Optimized path option character routine @ L032C +* Modified vector table @ L033F to save 1 cycle ??? 93/08/03 +* on PD.PSC +* - Sped up uppercase conversion checks for ReadLn & WritLn +* - Changed 2 BRA's to L02F9 to do an LBRA straight to L05F8 +* (ReadLn loop) +* - Moved L0565 routine so Reprint line, Insert & Delete char +* (on ReadLn) are 1 cycle faster / char printed +* - Changed 2 references to L0420 to go straight to L0565 +* - Sped up ReadLn loop by 2 or 3 cycles per char read +* V1.12 Sped up L0435 by 1 or 2 cycles (depending on ??? 93/09/21 +* branch) +* - Changed LDD ,S to TFR X,D (saves 1 cycle) @ L04F1 (Write & WritLn) +* - Modified L04F1 to use W without TFR (+1 byte, -3 cycles) (Write) +* Took LDX #0/LDU PD.BUF,y from L03B5 & merged ??? 93/11/09 +* in @ L028A, L02EF & L0381. Also changed BEQ +* @ L03A5 to skip re-loading X with 0. +* Moved L04B2 routine to allow a couple of BSR's ??? 93/11/10 +* instead of LBSR's In READ. +* - Moved driver call right into READ loop +* (should save 25 cycles/char read) +* - Moved driver call right into L0565 (should +* save 12 cycles/char written on echo, +* line editing, etc.) +* Moved L02FE (ReadLn parsing) to end where ??? 93/11/26 +* ReadLn routine is Moved L03E2 so Read loop +* would be optomized for it (read char +* from driver) instead of L042B (write filled +* buffer to caller) +* - Changed LDA #C$NULL to CLRA +*12/01/93Modified device write call (L056F) to preserve +* Y as well, to cut down on PSHS/PULS +* - Changed L03E2 & L03DA to exit immediately if ??? 93/12/01 +* PD.DEV or PD.DV2 (depending on which routine) +* is empty (eliminated redundant LEAX ,X) +* Attempted mode to L03F1 to eliminate ??? 94/05/31 +* LDW #D$READ, changed LDX V$DRIV,x +* ADDW M$Exec,x +* JSR w,x +* to +* LDW V$DRIV,x +* ADDW M$Exec,w +* JSR D$READ,w +* Did same to L05C9 & L056F +* (should speed up each by 1 cycle) +* Attempted to modify all M$Exec calls to use ??? 94/06/07 +* new V$DRIVEX (REQUIRES NEW IOMAN) +* - L01FA (Get/SetStat), L03F1 (Read), L05C9 +* (Write), L056F (Write) +* - Changed L046A to use +* LDB V.BUSY,x...CMPB ,s...TFR B,A +* Changed TST <PD.EKO,y in read loop (L02BC) ??? 94/06/08 +* to LDB PD.EKO,y +* - Changed LEAX 1,X to LDB #1/ABX @ L02C4 +* - Changed LEAX >L033F,pc @ L032C to use +* < (8 bit) version +* - Modified L02E5 to use D instead of X, +* allowing TSTA, and faster exit on 0 byte +* just BRAnching to L0453 +* Changed LEAX 1,X to LDB #1/ABX @ L053D, ??? 94/06/09 +* L05F8, L0312, L0351, L03B8 +* - Changed to L0573: All TST's changed to LDB's +* - Changed Open/Create init to use LEAX ,pc +* instead of BSR/PULS X +* - Changed TST PD.CNT,y to LDA PD.CNT,y @ close +* - Eliminated L010D, changed references to it +* to go to L0129 +* - Eliminated useless LEAX ,X @ L0182, and changed +* BEQ @ L0182 to go to L012A instead of L0129 +* (speeds CLOSE by 5 or 10 cycles) +* - Moved L06B9 into L012B, eliminate BSR/RTS, plus +* - Changed TST V.TYPE,x to LDB V.TYPE,x +* - Moved L0624 to just before L05F8 to eliminate +* BRA L05F8 (ReadLn) +* - Changed TST PD.EKO,y @ L0413 to LDB PD.EKO,y +* - Moved L0413-L0423 routines to later in code to +* allow short branches +* - As result of above, changed 6 LBxx to Bxx +* - Changed TST PD.MIN,y @ L04BB to LDA PD.MIN,y +* - Changed TST PD.RAW,y/TST PD.UPC,y @ L0523 to LDB's +* - Changed TST PD.ALF,y @ L052A to LDB +* - L053D: Moved TST PD.RAW,y to before LDA -1,u +* to speed up WRITE, changed it to LDB +* Changed TST PD.ALF,y to LDB @ L052A ??? 94/06/10 +* - Changed CLR V.WAKE,u to CLRA/STA V.WAKE,u @ L03F1 (Read) +* - Changed CLR V.BUSY,u to CLRA/STA V.BUSY,u @ L045D +* - Changed CLR PD.MIN,y to CLRA/STA PD.MIN,y, +* moved before LDA P$ID,x @ L04A7 +* - Changed CLR PD.RAW,y @ L04BB to STA PD.RAW, +* since A already 0 to get there +* - Changed CLR V.PAUS,u to CLRA/STA V.PAUS,u @ L05A2 +* - Changed TST PD.RAW,y to LDA PD.RAW,y @ L05A2 +* - Changed TST PD.ALF,y to LDA PD.ALF,y @ L05A2 +* - Changed CLR V.WAKE,u to CLRB/STB V.WAKE,u @ L05C9 +* - Changed CLR V.WAKE,u to CLRB/STB V.WAKE,u @ L056F +* - Changed TST PD.UPC,y to LDB PD.UPC,y @ L0322 +* - Changed TST PD.DLO,y/TST PD.EKO,y to LDB's @ L03A5 +* Changed TST PD.UPC,y to LDB PD.UPC,y @ L0322 ??? 94/06/16 +* - Changed TST PD.BSO,y to LDB PD.BSO,y @ L03BF +* - Changed TST PD.EKO,y to LDB PD.EKO,y @ L03BF * Merged NitrOS-9 and TuneUp versions for BGP 02/10/11 * single-source maintenance. Note that * the 6809 version of TuneUp never seemed * to call GrfDrv directly to do fast screen * writes (see note around g.done label) -* -* NitrOS9 V1.09 Additions: -* 04/20/93: Speeded up L05CC (write char to device) routine by a few cycles -* : Slightly optomized Insert char -* : Move branch table so Read & ReadLn are 1 cycle faster each -* : Fixed SS.Fill so size is truncated @ 256 bytes -* : Added NO CR option to SS.Fill (for use with modified -* Shellplus V2.2 command history) -* 04/21/93: Slight speedup to some of ReadLn parsing, TFM's in Open/Close -* : More optomization to read/write driver calls -* : Got rid of branch table @ L05E3 for speed -* NitrOS9 V1.10 Additions: -* 05/25/93: Added Boisy Pitre's patch for non-sharable devices -* 05/27/93: Saved 4 cycles in routine @ L042B -* : Modified Boisy's routine to not pshs/puls B (saves 2 cycles) -* : Changed buffer prefill of CR's to save 1 byte -* NitrOS9 V1.11 Additions: -* 07/27/93: Changed a BRA to a LBRA to a straight LBRA in L0322 -* : Optomized path option character routine @ L032C -* 08/03/93: Modified vector table @ L033F to save 1 cycle on PD.PSC -* : Sped up uppercase conversion checks for ReadLn & WritLn -* : Changed 2 BRA's to L02F9 to do an LBRA straight to L05F8 -* (ReadLn loop) -* : Moved L0565 routine so Reprint line, Insert & Delete char (on -* ReadLn) are 1 cycle faster / char printed -* : Changed 2 references to L0420 to go straight to L0565 -* : Sped up ReadLn loop by 2 or 3 cycles per char read -* NitrOS9 V1.20 Additions: -* 09/21/93: Sped up L0435 by 1 or 2 cycles (depending on branch) -* : Changed LDD ,S to TFR X,D (saves 1 cycle) @ L04F1 (Write & WritLn) -* : Modified L04F1 to use W without TFR (+1 byte, -3 cycles) (Write) -* 11/09/93: Took LDX #0/LDU PD.BUF,y from L03B5 & merged in @ L028A, L02EF & -* L0381. Also changed BEQ @ L03A5 to skip re-loading X with 0. -* 11/10/93: Moved L04B2 routine to allow a couple of BSR's instead of LBSR's -* In READ. -* : Moved driver call right into READ loop (should save 25 cycles/char -* read) -* : Moved driver call right into L0565 (should save 12 cycles/char -* written on echo, line editing, etc.) -* 11/26/93: Moved L02FE (ReadLn parsing) to end where ReadLn routine is -* Moved L03E2 so Read loop would be optomized for it (read char -* from driver) instead of L042B (write filled buffer to caller) -* Changed LDA #C$NULL to CLRA -* 12/01/93: Modified device write call (L056F) to preserve Y as well, to cut -* down on PSHS/PULS -* Changed L03E2 & L03DA to exit immediately if PD.DEV or PD.DV2 -* (depending on which routine) is empty (eliminated redundant -* LEAX ,X) -* 05/31/94: Attempted mode to L03F1 to eliminate LDW #D$READ, changed -* LDX V$DRIV,x/ADDW M$Exec,x/JSR w,x to LDW V$DRIV,x/ADDW M$Exec,w/ -* jsr D$READ,w -* Did same to L05C9 & L056F (should speed up each by 1 cycle) -* 06/07/94: Attempted to modify all M$Exec calls to use new V$DRIVEX -* (REQUIRES NEW IOMAN) - L01FA (Get/SetStat), L03F1 (Read), L05C9 -* (Write), L056F (Write) -* Changed L046A to use LDB V.BUSY,x...CMPB ,s...TFR B,A -* 06/08/94: Changed TST <PD.EKO,y in read loop (L02BC) to LDB PD.EKO,y -* Changed LEAX 1,X to LDB #1/ABX @ L02C4 -* Changed LEAX >L033F,pc @ L032C to use < (8 bit) version -* Modified L02E5 to use D instead of X, allowing TSTA, and faster -* exit on 0 byte just BRAnching to L0453 -* 06/09/94: Changed LEAX 1,X to LDB #1/ABX @ L053D, L05F8, L0312, L0351, -* L03B8 -* Changed to L0573: All TST's changed to LDB's -* Changed Open/Create init to use LEAX ,pc instead of BSR/PULS X -* Changed TST PD.CNT,y to LDA PD.CNT,y @ close -* Eliminated L010D, changed references to it to go to L0129 -* Eliminated useless LEAX ,X @ L0182, and changed BEQ @ L0182 to go -* to L012A instead of L0129 (speeds CLOSE by 5 or 10 cycles) -* Moved L06B9 into L012B, eliminate BSR/RTS, plus -* Changed TST V.TYPE,x to LDB V.TYPE,x -* Moved L0624 to just before L05F8 to eliminate BRA L05F8 (ReadLn) -* Changed TST PD.EKO,y @ L0413 to LDB PD.EKO,y -* Moved L0413-L0423 routines to later in code to allow short branches -* As result of above, changed 6 LBxx to Bxx -* Changed TST PD.MIN,y @ L04BB to LDA PD.MIN,y -* Changed TST PD.RAW,y/TST PD.UPC,y @ L0523 to LDB's -* Changed TST PD.ALF,y @ L052A to LDB -* L053D: Moved TST PD.RAW,y to before LDA -1,u to speed up WRITE, -* changed it to LDB -* 06/10/94: Changed TST PD.ALF,y to LDB @ L052A -* Changed CLR V.WAKE,u to CLRA/STA V.WAKE,u @ L03F1 (Read) -* Changed CLR V.BUSY,u to CLRA/STA V.BUSY,u @ L045D -* Changed CLR PD.MIN,y to CLRA/STA PD.MIN,y, moved before LDA -* P$ID,x @ L04A7 -* Changed CLR PD.RAW,y @ L04BB to STA PD.RAW, since A already 0 -* to get there -* Changed CLR V.PAUS,u to CLRA/STA V.PAUS,u @ L05A2 -* Changed TST PD.RAW,y to LDA PD.RAW,y @ L05A2 -* Changed TST PD.ALF,y to LDA PD.ALF,y @ L05A2 -* Changed CLR V.WAKE,u to CLRB/STB V.WAKE,u @ L05C9 -* Changed CLR V.WAKE,u to CLRB/STB V.WAKE,u @ L056F -* Changed TST PD.UPC,y to LDB PD.UPC,y @ L0322 -* Changed TST PD.DLO,y/TST PD.EKO,y to LDB's @ L03A5 -* 06/16/94: Changed TST PD.UPC,y to LDB PD.UPC,y @ L0322 -* Changed TST PD.BSO,y to LDB PD.BSO,y @ L03BF -* Changed TST PD.EKO,y to LDB PD.EKO,y @ L03BF +* 16r2 Removed pshs/puls of b from sharable code BGP 05/16/11 +* segment for non-NitrOS-9 because it was +* not needed. nam SCF ttl OS-9 Level Two Sequential Character File Manager @@ -132,7 +158,7 @@ tylg set FlMgr+Objct atrv set ReEnt+rev -rev set 1 +rev set 2 edition equ 16 mod eom,SCFName,tylg,atrv,SCFEnt,0 @@ -255,50 +281,31 @@ ldx V.PDLHd,u Get path descriptor list header pointer * 05/25/93 mod - Boisy Pitre's non-sharable device patches beq Yespath No path's open, so we know we can open it - - IFNE H6309 - pshs u,x Preserve static mem & path dsc. hdr ptrs & 0 byte? + pshs u,x Preserve static mem & path dsc. hdr ptrs ldu PD.DEV,y Get device table ptr ldx V$DRIV,u Get ptr to device driver + IFNE H6309 tim #SHARE.,M$Mode,x Non-sharable driver? + ELSE + ldb M$Mode,x + bitb #SHARE. + ENDC bne NoShare Yes, driver busy ldx V$DESC,u Get ptr to device descriptor + IFNE H6309 tim #SHARE.,M$Mode,x Non-sharable device? + ELSE + ldb M$Mode,x + bitb #SHARE. + ENDC beq Shrble No, check for carrier status NoShare puls u,x Restore regs - - ELSE - - pshs u,x,b Preserve static mem & path dsc. hdr ptrs & 0 byte? - ldu PD.DEV,y Get device table ptr - ldx V$DRIV,u Get ptr to device driver - ldb M$Mode,x - bitb #SHARE. - bne NoShare - ldx V$DESC,u Get ptr to device driver - ldb M$Mode,x - bitb #SHARE. - beq Shrble -NoShare puls u,x,b Restore regs - - ENDC - leas 2,s Eat extra stack (including good path count) comb ldb #E$DevBsy Non-sharable device busy error bra L0111 Go detach device & exit with error - - IFNE H6309 - Shrble puls u,x Restore Static mem & path dsc. ptrs - - ELSE - -Shrble puls u,x,b Restore Static mem & path dsc. ptrs - - ENDC - bra L00E8 Check carrier status Yespath sty V.PDLHd,u Save path descriptor ptr