Mercurial > hg > Members > kono > nitros9-code
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 |