comparison level2/modules/scf.asm @ 1167:a3d0ac951684

Miscellaneous source improvements
author boisy
date Mon, 19 May 2003 11:10:57 +0000
parents 8f1263d3e3d5
children 275aea78cb87
comparison
equal deleted inserted replaced
1166:bb618bed0bdc 1167:a3d0ac951684
17 * 17 *
18 * This also includes Kevin Darlings SCF Editor patches. 18 * This also includes Kevin Darlings SCF Editor patches.
19 * 19 *
20 * Ed. Comments Who YY/MM/DD 20 * Ed. Comments Who YY/MM/DD
21 * ------------------------------------------------------------------ 21 * ------------------------------------------------------------------
22 * V1.09 Speeded up L05CC (write char to device) ??? 93/04/20
23 * routine by a few cycles
24 * - Slightly optomized Insert char
25 * - Move branch table so Read & ReadLn are 1
26 * cycle faster each
27 * Fixed SS.Fill so size is truncated @ 256 bytes
28 * - Added NO CR option to SS.Fill (for use with
29 * modified Shellplus V2.2 command history)
30 * Slight speedup to some of ReadLn parsing, ??? 93/04/21
31 * TFM's in Open/Close
32 * - More optomization to read/write driver calls
33 * - Got rid of branch table @ L05E3 for speed
34 * V1.10 Added Boisy Pitre's patch for non-sharable ??? 93/05/25
35 * devices.
36 * - Saved 4 cycles in routine @ L042B ??? 93/05/27
37 * - Modified Boisy's routine to not pshs/puls B
38 * (saves 2 cycles)
39 * - Changed buffer prefill of CR's to save 1 byte
40 * V1.11 Changed a BRA to a LBRA to a straight 93/07/27
41 * LBRA in L0322
42 * - Optimized path option character routine @ L032C
43 * Modified vector table @ L033F to save 1 cycle ??? 93/08/03
44 * on PD.PSC
45 * - Sped up uppercase conversion checks for ReadLn & WritLn
46 * - Changed 2 BRA's to L02F9 to do an LBRA straight to L05F8
47 * (ReadLn loop)
48 * - Moved L0565 routine so Reprint line, Insert & Delete char
49 * (on ReadLn) are 1 cycle faster / char printed
50 * - Changed 2 references to L0420 to go straight to L0565
51 * - Sped up ReadLn loop by 2 or 3 cycles per char read
52 * V1.12 Sped up L0435 by 1 or 2 cycles (depending on ??? 93/09/21
53 * branch)
54 * - Changed LDD ,S to TFR X,D (saves 1 cycle) @ L04F1 (Write & WritLn)
55 * - Modified L04F1 to use W without TFR (+1 byte, -3 cycles) (Write)
56 * Took LDX #0/LDU PD.BUF,y from L03B5 & merged ??? 93/11/09
57 * in @ L028A, L02EF & L0381. Also changed BEQ
58 * @ L03A5 to skip re-loading X with 0.
59 * Moved L04B2 routine to allow a couple of BSR's ??? 93/11/10
60 * instead of LBSR's In READ.
61 * - Moved driver call right into READ loop
62 * (should save 25 cycles/char read)
63 * - Moved driver call right into L0565 (should
64 * save 12 cycles/char written on echo,
65 * line editing, etc.)
66 * Moved L02FE (ReadLn parsing) to end where ??? 93/11/26
67 * ReadLn routine is Moved L03E2 so Read loop
68 * would be optomized for it (read char
69 * from driver) instead of L042B (write filled
70 * buffer to caller)
71 * - Changed LDA #C$NULL to CLRA
72 *12/01/93Modified device write call (L056F) to preserve
73 * Y as well, to cut down on PSHS/PULS
74 * - Changed L03E2 & L03DA to exit immediately if ??? 93/12/01
75 * PD.DEV or PD.DV2 (depending on which routine)
76 * is empty (eliminated redundant LEAX ,X)
77 * Attempted mode to L03F1 to eliminate ??? 94/05/31
78 * LDW #D$READ, changed LDX V$DRIV,x
79 * ADDW M$Exec,x
80 * JSR w,x
81 * to
82 * LDW V$DRIV,x
83 * ADDW M$Exec,w
84 * JSR D$READ,w
85 * Did same to L05C9 & L056F
86 * (should speed up each by 1 cycle)
87 * Attempted to modify all M$Exec calls to use ??? 94/06/07
88 * new V$DRIVEX (REQUIRES NEW IOMAN)
89 * - L01FA (Get/SetStat), L03F1 (Read), L05C9
90 * (Write), L056F (Write)
91 * - Changed L046A to use
92 * LDB V.BUSY,x...CMPB ,s...TFR B,A
93 * Changed TST <PD.EKO,y in read loop (L02BC) ??? 94/06/08
94 * to LDB PD.EKO,y
95 * - Changed LEAX 1,X to LDB #1/ABX @ L02C4
96 * - Changed LEAX >L033F,pc @ L032C to use
97 * < (8 bit) version
98 * - Modified L02E5 to use D instead of X,
99 * allowing TSTA, and faster exit on 0 byte
100 * just BRAnching to L0453
101 * Changed LEAX 1,X to LDB #1/ABX @ L053D, ??? 94/06/09
102 * L05F8, L0312, L0351, L03B8
103 * - Changed to L0573: All TST's changed to LDB's
104 * - Changed Open/Create init to use LEAX ,pc
105 * instead of BSR/PULS X
106 * - Changed TST PD.CNT,y to LDA PD.CNT,y @ close
107 * - Eliminated L010D, changed references to it
108 * to go to L0129
109 * - Eliminated useless LEAX ,X @ L0182, and changed
110 * BEQ @ L0182 to go to L012A instead of L0129
111 * (speeds CLOSE by 5 or 10 cycles)
112 * - Moved L06B9 into L012B, eliminate BSR/RTS, plus
113 * - Changed TST V.TYPE,x to LDB V.TYPE,x
114 * - Moved L0624 to just before L05F8 to eliminate
115 * BRA L05F8 (ReadLn)
116 * - Changed TST PD.EKO,y @ L0413 to LDB PD.EKO,y
117 * - Moved L0413-L0423 routines to later in code to
118 * allow short branches
119 * - As result of above, changed 6 LBxx to Bxx
120 * - Changed TST PD.MIN,y @ L04BB to LDA PD.MIN,y
121 * - Changed TST PD.RAW,y/TST PD.UPC,y @ L0523 to LDB's
122 * - Changed TST PD.ALF,y @ L052A to LDB
123 * - L053D: Moved TST PD.RAW,y to before LDA -1,u
124 * to speed up WRITE, changed it to LDB
125 * Changed TST PD.ALF,y to LDB @ L052A ??? 94/06/10
126 * - Changed CLR V.WAKE,u to CLRA/STA V.WAKE,u @ L03F1 (Read)
127 * - Changed CLR V.BUSY,u to CLRA/STA V.BUSY,u @ L045D
128 * - Changed CLR PD.MIN,y to CLRA/STA PD.MIN,y,
129 * moved before LDA P$ID,x @ L04A7
130 * - Changed CLR PD.RAW,y @ L04BB to STA PD.RAW,
131 * since A already 0 to get there
132 * - Changed CLR V.PAUS,u to CLRA/STA V.PAUS,u @ L05A2
133 * - Changed TST PD.RAW,y to LDA PD.RAW,y @ L05A2
134 * - Changed TST PD.ALF,y to LDA PD.ALF,y @ L05A2
135 * - Changed CLR V.WAKE,u to CLRB/STB V.WAKE,u @ L05C9
136 * - Changed CLR V.WAKE,u to CLRB/STB V.WAKE,u @ L056F
137 * - Changed TST PD.UPC,y to LDB PD.UPC,y @ L0322
138 * - Changed TST PD.DLO,y/TST PD.EKO,y to LDB's @ L03A5
139 * Changed TST PD.UPC,y to LDB PD.UPC,y @ L0322 ??? 94/06/16
140 * - Changed TST PD.BSO,y to LDB PD.BSO,y @ L03BF
141 * - Changed TST PD.EKO,y to LDB PD.EKO,y @ L03BF
22 * Merged NitrOS-9 and TuneUp versions for BGP 02/10/11 142 * Merged NitrOS-9 and TuneUp versions for BGP 02/10/11
23 * single-source maintenance. Note that 143 * single-source maintenance. Note that
24 * the 6809 version of TuneUp never seemed 144 * the 6809 version of TuneUp never seemed
25 * to call GrfDrv directly to do fast screen 145 * to call GrfDrv directly to do fast screen
26 * writes (see note around g.done label) 146 * writes (see note around g.done label)
27 * 147 * 16r2 Removed pshs/puls of b from sharable code BGP 05/16/11
28 * NitrOS9 V1.09 Additions: 148 * segment for non-NitrOS-9 because it was
29 * 04/20/93: Speeded up L05CC (write char to device) routine by a few cycles 149 * not needed.
30 * : Slightly optomized Insert char
31 * : Move branch table so Read & ReadLn are 1 cycle faster each
32 * : Fixed SS.Fill so size is truncated @ 256 bytes
33 * : Added NO CR option to SS.Fill (for use with modified
34 * Shellplus V2.2 command history)
35 * 04/21/93: Slight speedup to some of ReadLn parsing, TFM's in Open/Close
36 * : More optomization to read/write driver calls
37 * : Got rid of branch table @ L05E3 for speed
38 * NitrOS9 V1.10 Additions:
39 * 05/25/93: Added Boisy Pitre's patch for non-sharable devices
40 * 05/27/93: Saved 4 cycles in routine @ L042B
41 * : Modified Boisy's routine to not pshs/puls B (saves 2 cycles)
42 * : Changed buffer prefill of CR's to save 1 byte
43 * NitrOS9 V1.11 Additions:
44 * 07/27/93: Changed a BRA to a LBRA to a straight LBRA in L0322
45 * : Optomized path option character routine @ L032C
46 * 08/03/93: Modified vector table @ L033F to save 1 cycle on PD.PSC
47 * : Sped up uppercase conversion checks for ReadLn & WritLn
48 * : Changed 2 BRA's to L02F9 to do an LBRA straight to L05F8
49 * (ReadLn loop)
50 * : Moved L0565 routine so Reprint line, Insert & Delete char (on
51 * ReadLn) are 1 cycle faster / char printed
52 * : Changed 2 references to L0420 to go straight to L0565
53 * : Sped up ReadLn loop by 2 or 3 cycles per char read
54 * NitrOS9 V1.20 Additions:
55 * 09/21/93: Sped up L0435 by 1 or 2 cycles (depending on branch)
56 * : Changed LDD ,S to TFR X,D (saves 1 cycle) @ L04F1 (Write & WritLn)
57 * : Modified L04F1 to use W without TFR (+1 byte, -3 cycles) (Write)
58 * 11/09/93: Took LDX #0/LDU PD.BUF,y from L03B5 & merged in @ L028A, L02EF &
59 * L0381. Also changed BEQ @ L03A5 to skip re-loading X with 0.
60 * 11/10/93: Moved L04B2 routine to allow a couple of BSR's instead of LBSR's
61 * In READ.
62 * : Moved driver call right into READ loop (should save 25 cycles/char
63 * read)
64 * : Moved driver call right into L0565 (should save 12 cycles/char
65 * written on echo, line editing, etc.)
66 * 11/26/93: Moved L02FE (ReadLn parsing) to end where ReadLn routine is
67 * Moved L03E2 so Read loop would be optomized for it (read char
68 * from driver) instead of L042B (write filled buffer to caller)
69 * Changed LDA #C$NULL to CLRA
70 * 12/01/93: Modified device write call (L056F) to preserve Y as well, to cut
71 * down on PSHS/PULS
72 * Changed L03E2 & L03DA to exit immediately if PD.DEV or PD.DV2
73 * (depending on which routine) is empty (eliminated redundant
74 * LEAX ,X)
75 * 05/31/94: Attempted mode to L03F1 to eliminate LDW #D$READ, changed
76 * LDX V$DRIV,x/ADDW M$Exec,x/JSR w,x to LDW V$DRIV,x/ADDW M$Exec,w/
77 * jsr D$READ,w
78 * Did same to L05C9 & L056F (should speed up each by 1 cycle)
79 * 06/07/94: Attempted to modify all M$Exec calls to use new V$DRIVEX
80 * (REQUIRES NEW IOMAN) - L01FA (Get/SetStat), L03F1 (Read), L05C9
81 * (Write), L056F (Write)
82 * Changed L046A to use LDB V.BUSY,x...CMPB ,s...TFR B,A
83 * 06/08/94: Changed TST <PD.EKO,y in read loop (L02BC) to LDB PD.EKO,y
84 * Changed LEAX 1,X to LDB #1/ABX @ L02C4
85 * Changed LEAX >L033F,pc @ L032C to use < (8 bit) version
86 * Modified L02E5 to use D instead of X, allowing TSTA, and faster
87 * exit on 0 byte just BRAnching to L0453
88 * 06/09/94: Changed LEAX 1,X to LDB #1/ABX @ L053D, L05F8, L0312, L0351,
89 * L03B8
90 * Changed to L0573: All TST's changed to LDB's
91 * Changed Open/Create init to use LEAX ,pc instead of BSR/PULS X
92 * Changed TST PD.CNT,y to LDA PD.CNT,y @ close
93 * Eliminated L010D, changed references to it to go to L0129
94 * Eliminated useless LEAX ,X @ L0182, and changed BEQ @ L0182 to go
95 * to L012A instead of L0129 (speeds CLOSE by 5 or 10 cycles)
96 * Moved L06B9 into L012B, eliminate BSR/RTS, plus
97 * Changed TST V.TYPE,x to LDB V.TYPE,x
98 * Moved L0624 to just before L05F8 to eliminate BRA L05F8 (ReadLn)
99 * Changed TST PD.EKO,y @ L0413 to LDB PD.EKO,y
100 * Moved L0413-L0423 routines to later in code to allow short branches
101 * As result of above, changed 6 LBxx to Bxx
102 * Changed TST PD.MIN,y @ L04BB to LDA PD.MIN,y
103 * Changed TST PD.RAW,y/TST PD.UPC,y @ L0523 to LDB's
104 * Changed TST PD.ALF,y @ L052A to LDB
105 * L053D: Moved TST PD.RAW,y to before LDA -1,u to speed up WRITE,
106 * changed it to LDB
107 * 06/10/94: Changed TST PD.ALF,y to LDB @ L052A
108 * Changed CLR V.WAKE,u to CLRA/STA V.WAKE,u @ L03F1 (Read)
109 * Changed CLR V.BUSY,u to CLRA/STA V.BUSY,u @ L045D
110 * Changed CLR PD.MIN,y to CLRA/STA PD.MIN,y, moved before LDA
111 * P$ID,x @ L04A7
112 * Changed CLR PD.RAW,y @ L04BB to STA PD.RAW, since A already 0
113 * to get there
114 * Changed CLR V.PAUS,u to CLRA/STA V.PAUS,u @ L05A2
115 * Changed TST PD.RAW,y to LDA PD.RAW,y @ L05A2
116 * Changed TST PD.ALF,y to LDA PD.ALF,y @ L05A2
117 * Changed CLR V.WAKE,u to CLRB/STB V.WAKE,u @ L05C9
118 * Changed CLR V.WAKE,u to CLRB/STB V.WAKE,u @ L056F
119 * Changed TST PD.UPC,y to LDB PD.UPC,y @ L0322
120 * Changed TST PD.DLO,y/TST PD.EKO,y to LDB's @ L03A5
121 * 06/16/94: Changed TST PD.UPC,y to LDB PD.UPC,y @ L0322
122 * Changed TST PD.BSO,y to LDB PD.BSO,y @ L03BF
123 * Changed TST PD.EKO,y to LDB PD.EKO,y @ L03BF
124 150
125 nam SCF 151 nam SCF
126 ttl OS-9 Level Two Sequential Character File Manager 152 ttl OS-9 Level Two Sequential Character File Manager
127 153
128 IFP1 154 IFP1
130 use scfdefs 156 use scfdefs
131 ENDC 157 ENDC
132 158
133 tylg set FlMgr+Objct 159 tylg set FlMgr+Objct
134 atrv set ReEnt+rev 160 atrv set ReEnt+rev
135 rev set 1 161 rev set 2
136 edition equ 16 162 edition equ 16
137 163
138 mod eom,SCFName,tylg,atrv,SCFEnt,0 164 mod eom,SCFName,tylg,atrv,SCFEnt,0
139 165
140 SCFName fcs /SCF/ 166 SCFName fcs /SCF/
253 sta PD.PST,y Clear path status: Carrier not lost 279 sta PD.PST,y Clear path status: Carrier not lost
254 pshs d Save 0 on stack 280 pshs d Save 0 on stack
255 ldx V.PDLHd,u Get path descriptor list header pointer 281 ldx V.PDLHd,u Get path descriptor list header pointer
256 * 05/25/93 mod - Boisy Pitre's non-sharable device patches 282 * 05/25/93 mod - Boisy Pitre's non-sharable device patches
257 beq Yespath No path's open, so we know we can open it 283 beq Yespath No path's open, so we know we can open it
258 284
259 IFNE H6309 285 pshs u,x Preserve static mem & path dsc. hdr ptrs
260
261 pshs u,x Preserve static mem & path dsc. hdr ptrs & 0 byte?
262 ldu PD.DEV,y Get device table ptr 286 ldu PD.DEV,y Get device table ptr
263 ldx V$DRIV,u Get ptr to device driver 287 ldx V$DRIV,u Get ptr to device driver
288 IFNE H6309
264 tim #SHARE.,M$Mode,x Non-sharable driver? 289 tim #SHARE.,M$Mode,x Non-sharable driver?
290 ELSE
291 ldb M$Mode,x
292 bitb #SHARE.
293 ENDC
265 bne NoShare Yes, driver busy 294 bne NoShare Yes, driver busy
266 ldx V$DESC,u Get ptr to device descriptor 295 ldx V$DESC,u Get ptr to device descriptor
296 IFNE H6309
267 tim #SHARE.,M$Mode,x Non-sharable device? 297 tim #SHARE.,M$Mode,x Non-sharable device?
298 ELSE
299 ldb M$Mode,x
300 bitb #SHARE.
301 ENDC
268 beq Shrble No, check for carrier status 302 beq Shrble No, check for carrier status
269 NoShare puls u,x Restore regs 303 NoShare puls u,x Restore regs
270
271 ELSE
272
273 pshs u,x,b Preserve static mem & path dsc. hdr ptrs & 0 byte?
274 ldu PD.DEV,y Get device table ptr
275 ldx V$DRIV,u Get ptr to device driver
276 ldb M$Mode,x
277 bitb #SHARE.
278 bne NoShare
279 ldx V$DESC,u Get ptr to device driver
280 ldb M$Mode,x
281 bitb #SHARE.
282 beq Shrble
283 NoShare puls u,x,b Restore regs
284
285 ENDC
286
287 leas 2,s Eat extra stack (including good path count) 304 leas 2,s Eat extra stack (including good path count)
288 comb 305 comb
289 ldb #E$DevBsy Non-sharable device busy error 306 ldb #E$DevBsy Non-sharable device busy error
290 bra L0111 Go detach device & exit with error 307 bra L0111 Go detach device & exit with error
291
292 IFNE H6309
293
294 Shrble puls u,x Restore Static mem & path dsc. ptrs 308 Shrble puls u,x Restore Static mem & path dsc. ptrs
295
296 ELSE
297
298 Shrble puls u,x,b Restore Static mem & path dsc. ptrs
299
300 ENDC
301
302 bra L00E8 Check carrier status 309 bra L00E8 Check carrier status
303 310
304 Yespath sty V.PDLHd,u Save path descriptor ptr 311 Yespath sty V.PDLHd,u Save path descriptor ptr
305 bra L00F8 Go open the path 312 bra L00F8 Go open the path
306 313