mirror of
https://github.com/SEPPDROID/Digital-Research-Source-Code.git
synced 2025-10-25 17:34:06 +00:00
1457 lines
79 KiB
Plaintext
1457 lines
79 KiB
Plaintext
CP/M ASM86 1.1 SOURCE: SUBMIT.A86 PAGE 1
|
||
|
||
1
|
||
2 ;*****************************************************
|
||
3 ;*
|
||
4 ;* Submit CCP/M-86
|
||
5 ;*
|
||
6 ;*****************************************************
|
||
7
|
||
8 ;Revisions:
|
||
9 ; 30 Mar 83 dh - attach after commands except chain
|
||
10 ; 21 Mar 83 whf - cli on 'mov ss'; fix readchar eof
|
||
11 ; 18 Feb 83 whf - $global/$local cmds
|
||
12 ; 15 Feb 83 dh - closing windows
|
||
13
|
||
14 cseg
|
||
15
|
||
16 0000 EB3B 003D jmps submit
|
||
17
|
||
18 0002 5355424D4954 db 'SUBMIT 1.3 '
|
||
19 20312E3320
|
||
20 000D 434F50595249 db 'COPYRIGHT (C) 1983,'
|
||
21 474854202843
|
||
22 292031393833
|
||
23 2C
|
||
24 0020 204449474954 db ' DIGITAL RESEARCH '
|
||
25 414C20524553
|
||
26 454152434820
|
||
27 0032 332F32312F38 db '3/21/83'
|
||
28 33
|
||
29 0039 0D0A0024 db 13,10,0,'$'
|
||
30
|
||
31
|
||
32
|
||
33 00FF true equ 0ffh
|
||
34 0000 false equ 0
|
||
35 0000 unknown equ 0
|
||
36 00E0 mpmint equ 224 ; int vec for mpm ent.
|
||
37
|
||
38 0001 mpm_conin equ 1
|
||
39 0002 mpm_conout equ 2
|
||
40 0009 mpm_conwrite equ 9
|
||
41 000A mpm_conread equ 10
|
||
42 000B mpm_constat equ 11
|
||
43 000C mpm_version equ 12
|
||
44 000E mpm_diskselect equ 14
|
||
45 000F mpm_openfile equ 15
|
||
46 0010 mpm_closefile equ 16
|
||
47 0014 mpm_readfile equ 20
|
||
48 0019 mpm_getdefdisk equ 25
|
||
49 001A mpm_setdma equ 26
|
||
50 0020 mpm_usercode equ 32
|
||
51 002F mpm_chain equ 47
|
||
52 008F mpm_terminate equ 143
|
||
53 0091 mpm_setprior equ 145
|
||
CP/M ASM86 1.1 SOURCE: SUBMIT.A86 PAGE 2
|
||
|
||
54
|
||
55 0092 mpm_conattach equ 146
|
||
56 0093 mpm_condetach equ 147
|
||
57 0094 mpm_setdefcon equ 148
|
||
58 0096 mpm_clicmd equ 150
|
||
59 0098 mpm_parse equ 152
|
||
60 0099 mpm_getdefcon equ 153
|
||
61 009C mpm_getpdadr equ 156
|
||
62 00A0 mpm_setdeflst equ 160
|
||
63 00A4 mpm_getdeflst equ 164
|
||
64
|
||
65 ; fcb offsets
|
||
66 0006 mode2 equ 6 ; 2nd open mode byte
|
||
67 000A modesys equ 10 ; SYS attribute byte
|
||
68 0009 ftype equ 9 ; file type
|
||
69
|
||
70 004B sysdrive equ byte ptr .4bh ;system disk in SYSDAT
|
||
71
|
||
72 0003 e_no_memory equ 3 ; cant find memory
|
||
73 000C e_no_pd equ 12 ; no free pd's
|
||
74 000F e_q_full equ 15 ; full queue
|
||
75 0017 e_illdisk equ 23 ; illegal disk #
|
||
76 0018 e_badfname equ 24 ; illegal filename
|
||
77 0019 e_badftype equ 25 ; illegal filetype
|
||
78 001C e_bad_load equ 28 ; bad ret. from BDOS load
|
||
79 001D e_bad_read equ 29 ; bad ret. from BDOS read
|
||
80 001E e_bad_open equ 30 ; bad ret. from BDOS open
|
||
81 001F e_nullcmd equ 31 ; null command sent
|
||
82 0025 e_ill_lst equ 37 ; illegal list device
|
||
83 0026 e_ill_passwd equ 38 ; illegal password
|
||
84 0028 e_abort equ 40 ; aborted in CLI
|
||
85
|
||
86 0005 p_prior equ 05H ;process descriptor priority
|
||
87 0006 p_flag equ word ptr 06H ;flags
|
||
88 0008 p_name equ 08H ;name of process
|
||
89 001E p_parent equ 1EH ;PD's parent
|
||
90 0012 p_drv equ byte ptr 012H
|
||
91 0013 p_user equ byte ptr 013H
|
||
92 0024 p_list equ byte ptr 024H
|
||
93
|
||
94 0002 pf_keep equ 02H ;keep flag
|
||
95 0800 pf_childabort equ 800H ;child aborted abnormally
|
||
96 0080 pf_ctlc equ 080H ;control c occured
|
||
97
|
||
98 ;*****************************************************
|
||
99 ;*
|
||
100 ;* Submit Code
|
||
101 ;*
|
||
102 ;*****************************************************
|
||
103
|
||
104 ;======
|
||
105 submit: ; PROGRAM MAIN - INITIALIZATION
|
||
106 ;======
|
||
CP/M ASM86 1.1 SOURCE: SUBMIT.A86 PAGE 3
|
||
|
||
107
|
||
108 003D 8CD8 mov ax,ds
|
||
109 003F 9C5BFA pushf ! pop bx ! cli ;disable interrupts for stack switch
|
||
110 0042 8ED0 mov ss,ax
|
||
111 0044 BC3C01 mov sp,offset stacktop
|
||
112 0047 539D push bx ! popf ;restore interrupts
|
||
113
|
||
114 0049 B10C mov cl,mpm_version
|
||
115 004B E85201 01A0 call mpm
|
||
116 004E 80E7FD and bh,not 2 ;strip network bit
|
||
117 0051 80FF11740E 0064 cmp bh,11H ! jz okvers ;check MP/M-86 or
|
||
118 0056 80FF147409 0064 cmp bh,14H ! jz okvers ;check Concurrent CP/M-86
|
||
119 005B BA0307 mov dx,offset wrongvers
|
||
120 005E E80E06 066F call print_string
|
||
121 0061 E9F405 0658 jmp terminate
|
||
122 okvers:
|
||
123
|
||
124 ;
|
||
125 ;set priority better than parent
|
||
126 ;
|
||
127
|
||
128 0064 B19C mov cl,mpm_getpdadr
|
||
129 0066 E83701 01A0 call mpm ;get our PD address
|
||
130 0069 891E4104 mov pdadr,bx ;save PD address
|
||
131 006D 8C064304 mov sysdatseg,es ;and the system data area segment
|
||
132 0071 268B5F1E mov bx,es:p_parent[bx] ;get our parent's PD address
|
||
133 0075 891E4504 mov parent_offset,bx ;save parent's PD addr
|
||
134 0079 83FB007505 0083 cmp bx,0 ! jne psetpar ;see if parent exists
|
||
135 007E BAC500EB0D 0090 mov dx,197 ! jmps setp ; oops, set to better than TMP
|
||
136 0083 268B5705 psetpar:mov dx,es:p_prior[bx] ;our parent's priority
|
||
137 0087 4A dec dx ;we run at one better,
|
||
138 0088 83FA407303 0090 cmp dx,64 ! jae setp
|
||
139 008D BA4000 mov dx,64 ;don't compete w/system
|
||
140 0090 B191 setp: mov cl,mpm_setprior
|
||
141 0092 E80B01 01A0 call mpm ;set our priority
|
||
142
|
||
143 0095 B11A mov cl,mpm_setdma ;using default buffer at 80H for
|
||
144 0097 BA3C01 mov dx,offset dma ;command tail and argument expansion
|
||
145 009A E80301 01A0 call mpm
|
||
146
|
||
147 009D E8C605 0666 call getuser
|
||
148 00A0 A20A04 mov command_user,al
|
||
149 00A3 A20E04 mov defuser,al
|
||
150
|
||
151 00A6 BE5C00 mov si,offset fcb
|
||
152 00A9 C6440953 mov byte ptr ftype[si],'S' ;look for file with type = SUB
|
||
153 00AD C6440A55 mov byte ptr ftype+1[si],'U'
|
||
154 00B1 C6440B42 mov byte ptr ftype+2[si],'B'
|
||
155 00B5 804C0680 or byte ptr mode2[si],80h ;open in R/O mode
|
||
156 00B9 8BD6 mov dx,si
|
||
157 00BB E8F805 06B6 call openfile
|
||
158 00BE 3CFF cmp al,0ffh
|
||
159 00C0 7532 00F4 jne exists
|
||
CP/M ASM86 1.1 SOURCE: SUBMIT.A86 PAGE 4
|
||
|
||
160
|
||
161
|
||
162 00C2 B200 mov dl,0 ;try user 0
|
||
163 00C4 88160A04 mov command_user,dl
|
||
164 00C8 E89D05 0668 call setuser
|
||
165 00CB 8E064304 mov es,sysdatseg ;on system drive
|
||
166 00CF 26A04B00 mov al,es:sysdrive
|
||
167 00D3 FEC0 inc al
|
||
168 00D5 A25C00 mov fcb,al
|
||
169 00D8 BA5C00 mov dx,offset fcb
|
||
170 00DB E8D805 06B6 call openfile
|
||
171 00DE 3CFF cmp al,0ffh
|
||
172 00E0 7409 00EB je openfail
|
||
173 00E2 BE5C00 mov si,offset fcb
|
||
174 00E5 F6440A80 test byte ptr modesys[si],080H ;does it have SYS attribute?
|
||
175 00E9 7509 00F4 jnz exists
|
||
176 openfail:
|
||
177 00EB BA7308 mov dx,offset sopen_err
|
||
178 00EE E87E05 066F call print_string
|
||
179 00F1 E94804 053C jmp submitabort
|
||
180
|
||
181 exists:
|
||
182 00F4 BA5C00 mov dx,offset fcb
|
||
183 00F7 E8C005 06BA call closefile
|
||
184 00FA A05C00 mov al,fcb ;save disk number where command file is
|
||
185 00FD 3C00 cmp al,0 ;default disk ?
|
||
186 00FF 7505 0106 jnz save_disk_no
|
||
187 0101 E89A05 069E call getdisk
|
||
188 0104 FEC0 inc al
|
||
189 save_disk_no:
|
||
190 0106 A20B04 mov command_disk,al
|
||
191
|
||
192 0109 E88605 0692 call getconsole ;save console number this
|
||
193 010C A20C04 mov command_con,al ;program was run from
|
||
194
|
||
195
|
||
196 ;
|
||
197 ;deblank command tail
|
||
198 ;
|
||
199 010F BE8100 mov si,offset cmdtail + 1
|
||
200 0112 BFFE01 mov di,offset deblankbuf
|
||
201 firstwhites:
|
||
202 0115 803C20 cmp byte ptr [si],' '
|
||
203 0118 7502 011C jnz tab
|
||
204 011A EB05 0121 jmps morewhites
|
||
205 tab:
|
||
206 011C 803C09 cmp byte ptr [si],9
|
||
207 011F 7503 0124 jnz deblank
|
||
208 morewhites:
|
||
209 0121 46 inc si
|
||
210 0122 EBF1 0115 jmps firstwhites
|
||
211 deblank:
|
||
212 0124 8A04 mov al,byte ptr [si]
|
||
CP/M ASM86 1.1 SOURCE: SUBMIT.A86 PAGE 5
|
||
|
||
213
|
||
214 0126 46 inc si
|
||
215 0127 3C20 cmp al,' '
|
||
216 0129 7418 0143 jz skipwhite
|
||
217 012B 3C09 cmp al,9 ;tab
|
||
218 012D 7414 0143 jz skipwhite
|
||
219 012F EB00 0131 jmps copychar
|
||
220
|
||
221 copychar:
|
||
222 0131 3C00 cmp al,0 ;end of of command tail ?
|
||
223 0133 7405 013A jz putlastblank
|
||
224 0135 8805 mov [di],al
|
||
225 0137 47 inc di
|
||
226 0138 EBEA 0124 jmps deblank
|
||
227 putlastblank:
|
||
228 013A C60520 mov byte ptr [di],' '
|
||
229 013D 47 inc di
|
||
230 013E 8805 mov [di],al ;ends with space and zero
|
||
231 0140 EB11 0153 jmps dedone
|
||
232
|
||
233 skipmore:
|
||
234 0142 46 inc si
|
||
235 skipwhite: ;input = si points at tab or blank
|
||
236 0143 8A04 mov al,[si]
|
||
237 0145 3C20 cmp al,' '
|
||
238 0147 74F9 0142 jz skipmore
|
||
239 0149 3C09 cmp al,9 ;tab
|
||
240 014B 74F5 0142 jz skipmore
|
||
241 014D C60520 mov byte ptr [di],' '
|
||
242 0150 47 inc di
|
||
243 0151 EBD1 0124 jmps deblank ;si points to non white char
|
||
244 ;di is next char to copy
|
||
245 dedone:
|
||
246
|
||
247
|
||
248 ;
|
||
249 ;fill argument tail
|
||
250 ;
|
||
251
|
||
252 0153 BDFE01 mov bp,offset deblankbuf
|
||
253 0156 BBBE01 mov bx,offset argtable
|
||
254 0159 33F6 xor si,si ;pointer into deblankbuf
|
||
255 015B 8BFE mov di,si ;index into argtable
|
||
256 nxtfill:
|
||
257 015D 8A02 mov al,byte ptr [bp + si] ;0th argument is '<filename>.sub'
|
||
258 015F 3C00 cmp al,0
|
||
259 0161 7410 0173 jz filldone
|
||
260 0163 8931 mov [bx + di],si
|
||
261 0165 47 inc di
|
||
262 0166 E80200 016B call skiparg ;skip over argument and blank
|
||
263 0169 EBF2 015D jmps nxtfill
|
||
264
|
||
265 skiparg:
|
||
CP/M ASM86 1.1 SOURCE: SUBMIT.A86 PAGE 6
|
||
|
||
266
|
||
267 016B 46 inc si
|
||
268 016C 803A20 cmp byte ptr [bp + si],' '
|
||
269 016F 75FA 016B jnz skiparg
|
||
270 0171 46 inc si ;char after blank
|
||
271 0172 C3 ret
|
||
272
|
||
273 filldone:
|
||
274 0173 893EBC01 mov numargs,di
|
||
275 0177 E8F204 066C call crlf
|
||
276
|
||
277 017A C606030380 mov cmdbuf,maxcmdlen ;get first command
|
||
278 017F BA0303 mov dx,offset cmdbuf
|
||
279 0182 E8C003 0545 call readbuffer
|
||
280 0185 83FB00 cmp bx,0
|
||
281 0188 7511 019B jne submitexit ;EOF on first command
|
||
282
|
||
283 018A C606800280 mov lcmdbuf,maxcmdlen ;try next command
|
||
284 018F BA8002 mov dx,offset lcmdbuf
|
||
285 0192 E8B003 0545 call readbuffer
|
||
286 0195 881E7F02 mov no_more_cmds,bl ;true if EOF
|
||
287 0199 EB08 01A3 jmps topofcmdloop ;and look ahead to see
|
||
288 ;if there are more commands
|
||
289
|
||
290 ;==========
|
||
291 submitexit:
|
||
292 ;==========
|
||
293
|
||
294 019B B100BA0000 mov cl,0 ! mov dx,0
|
||
295 ;jmp mpm
|
||
296
|
||
297 ;===
|
||
298 mpm: ; INTERFACE ROUTINE FOR SYSTEM ENTRY POINTS
|
||
299 ;===
|
||
300
|
||
301 01A0 CDE0C3 int mpmint ! ret
|
||
302
|
||
303 ;===========
|
||
304 topofcmdloop: ; LOOP FOREVER
|
||
305 ;===========
|
||
306
|
||
307 ;
|
||
308 ; print CR,LF if we just sent a command
|
||
309 ;
|
||
310
|
||
311 01A3 803E40040074 01B2 cmp cmdsent,false ! je noclearline
|
||
312 08 01B2
|
||
313 01AA C606400400 mov cmdsent,false
|
||
314 01AF E8BA04 066C call crlf
|
||
315
|
||
316 noclearline:
|
||
317
|
||
318 ;
|
||
CP/M ASM86 1.1 SOURCE: SUBMIT.A86 PAGE 7
|
||
|
||
319
|
||
320 ; set up and print user prompt
|
||
321 ;
|
||
322
|
||
323 ; get current default disk
|
||
324
|
||
325
|
||
326 01B2 E8E904 069E call getdisk
|
||
327 01B5 A20D04 mov defdisk,al
|
||
328
|
||
329 ; get current default user #
|
||
330 ; this call should be made on every
|
||
331 ; loop in case the 'USER' program
|
||
332 ; has changed the default user number
|
||
333
|
||
334 01B8 E8AB04 0666 call getuser
|
||
335 01BB A20E04 mov defuser,al
|
||
336
|
||
337 ;create user part of prompt string
|
||
338
|
||
339 01BE C60611040D mov promptutens,13
|
||
340 01C3 C60612040D mov promptuones,13
|
||
341 01C8 84C0 test al,al ;don't print user 0
|
||
342 01CA 7414 01E0 jz prprompt
|
||
343 01CC C606120430 mov promptuones,'0'
|
||
344 01D1 3C0A7207 01DC cmp al,10 ! jb ones
|
||
345 01D5 C606110431 mov promptutens,'1'
|
||
346 01DA 2C0A sub al,10
|
||
347 01DC 00061204 ones: add promptuones,al
|
||
348 prprompt:
|
||
349 ; create disk part of prompt string
|
||
350
|
||
351 01E0 B04102060D04 mov al,'A' ! add al,defdisk
|
||
352 01E6 A21304 mov promptdisk,al
|
||
353
|
||
354 ; write user prompt
|
||
355
|
||
356 01E9 BA1004 mov dx,offset prompt
|
||
357 01EC 803E11040D75 01F6 cmp promptutens,13 ! jne writeprompt
|
||
358 03 01F6
|
||
359 01F3 BA1104 mov dx,offset promptutens
|
||
360 writeprompt:
|
||
361 01F6 E88004 0679 call print_ds_string
|
||
362
|
||
363 ;
|
||
364 ; copy command to cli buffer, make upper case and
|
||
365 ; expand command arguments
|
||
366 ;
|
||
367
|
||
368 01F9 BE0503 mov si,offset cmd ;where command is
|
||
369 01FC BD8703 mov bp,offset clicmd ;copy w/ expanded args here
|
||
370 01FF 33FF xor di,di ;index into cli command
|
||
371 nextchar:
|
||
CP/M ASM86 1.1 SOURCE: SUBMIT.A86 PAGE 8
|
||
|
||
372
|
||
373 0201 8A04 mov al,[si] ;char from command
|
||
374 0203 46 inc si
|
||
375 0204 3C24 cmp al,'$' ;argument ?
|
||
376 0206 7407 020F jz argmaybe
|
||
377 noarg:
|
||
378 0208 E84F00 025A call copyit
|
||
379 020B E3F4 0201 jcxz nextchar
|
||
380 020D EB61 0270 jmps echo_cmd ;can't expand any more params,
|
||
381 ;buffer is full
|
||
382 argmaybe:
|
||
383 020F 803C24 cmp byte ptr [si],'$' ;look for two '$' in a row
|
||
384 0212 7503 0217 jne numeric
|
||
385 0214 46 inc si ;skip 2nd $ sign
|
||
386 0215 EBF1 0208 jmps noarg ;copy one $ sign to command buffer
|
||
387 numeric:
|
||
388 0217 803C30 cmp byte ptr [si],'0' ;is next char after '$' a digit ?
|
||
389 021A 72EC 0208 jb noarg
|
||
390 021C 803C39 cmp byte ptr [si],'9'
|
||
391 021F 77E7 0208 ja noarg
|
||
392 realarg:
|
||
393 0221 33C0 xor ax,ax ;copy argument throw out - '$' in al
|
||
394 0223 8A04 mov al,[si]
|
||
395 0225 2C30 sub al,'0' ;1st digit
|
||
396 0227 46 inc si
|
||
397 0228 803C30 cmp byte ptr [si],'0' ;is there a second digit ?
|
||
398 022B 7211 023E jb onedigit
|
||
399 022D 803C39 cmp byte ptr [si],'9'
|
||
400 0230 770C 023E ja onedigit
|
||
401 0232 B20A mov dl,10 ;1st digit is tens in column
|
||
402 0234 F6E2 mul dl
|
||
403 0236 8A14 mov dl,[si] ;2nd argument is ones column
|
||
404 0238 46 inc si
|
||
405 0239 80EA30 sub dl,'0'
|
||
406 023C 02C2 add al,dl
|
||
407 onedigit:
|
||
408 023E 8BD8 mov bx,ax
|
||
409 copyarg:
|
||
410 0240 3B1EBC01 cmp bx,numargs
|
||
411 0244 7202 0248 jb oknum ;numargs in range 1 to n
|
||
412 0246 EBB9 0201 jmps nextchar ;no such argument
|
||
413 oknum:
|
||
414 0248 8A9FBE01 mov bl,argtable[bx] ;argument address rel to deblankbuf
|
||
415 copymore:
|
||
416 024C 8A87FE01 mov al,deblankbuf[bx]
|
||
417 0250 3C20 cmp al,' '
|
||
418 0252 74AD 0201 jz nextchar ;end of argument
|
||
419 0254 E80300 025A call copyit
|
||
420 0257 43 inc bx
|
||
421 0258 EBF2 024C jmps copymore
|
||
422
|
||
423
|
||
424 copyit:
|
||
CP/M ASM86 1.1 SOURCE: SUBMIT.A86 PAGE 9
|
||
|
||
425
|
||
426 ;copy character in AL to location BP + DI, increment DI.
|
||
427 ;if AL = 0, or command buffer is full then return CX = 0ffffH
|
||
428 ;else return CX = 0H
|
||
429
|
||
430 025A 8803 mov [bp + di],al ;mov to cli command buffer
|
||
431 025C 47 inc di
|
||
432 025D 33C9 xor cx,cx
|
||
433 025F 81FF8000 cmp di,maxcmdlen ;cli buffer size
|
||
434 0263 7305 026A jae donecopy
|
||
435 testend:
|
||
436 0265 3C00 cmp al,0
|
||
437 0267 7401 026A jz donecopy
|
||
438 0269 C3 ret
|
||
439 donecopy:
|
||
440 026A 893E0804 mov clicmdlen, di
|
||
441 026E 49 dec cx
|
||
442 026F C3 ret
|
||
443
|
||
444 echo_cmd:
|
||
445 0270 BE8703 mov si, offset clicmd ;print command line after
|
||
446 0273 8B0E0804 mov cx, clicmdlen ;parameter substitution
|
||
447 0277 E86E03 05E8 call printcmdline
|
||
448
|
||
449 ;
|
||
450 ; echo newline
|
||
451 ;
|
||
452
|
||
453 027A E8EF03 066C call crlf
|
||
454
|
||
455 ;
|
||
456 ; make sure not a null command
|
||
457 ;
|
||
458
|
||
459 027D 8D1E0503 lea bx,cmd
|
||
460 0281 803E04030074 0304 cmp blen,0 ! je gonextcmd
|
||
461 7C 0304
|
||
462 dblank:
|
||
463 0288 803F207405 0292 cmp byte ptr [bx],' ' ! je zapblank
|
||
464 028D 803F097507 0299 cmp byte ptr [bx],9 ! jne noblanks ;no tabs
|
||
465 zapblank:
|
||
466 0292 43FE0E0403EB 0288 inc bx ! dec blen ! jmps dblank
|
||
467 EF 0288
|
||
468 noblanks:
|
||
469 0299 8D0605033BC3 02B2 lea ax,cmd ! cmp ax,bx ! je chksemi
|
||
470 7411 02B2
|
||
471 ; remove leading blanks
|
||
472 02A1 1E0732ED8A0E push ds ! pop es ! xor ch,ch ! mov cl,blen
|
||
473 0403
|
||
474 02A9 8BF88BF3FCF3 mov di,ax ! mov si,bx ! cld ! rep movsb
|
||
475 A4
|
||
476 02B0 8BD8 mov bx,ax
|
||
477 chksemi: ; see if line starts with semicolon
|
||
CP/M ASM86 1.1 SOURCE: SUBMIT.A86 PAGE 10
|
||
|
||
478
|
||
479 02B2 803F3B744D 0304 cmp byte ptr [bx],';' ! je gonextcmd
|
||
480
|
||
481 ;
|
||
482 ; see if disk change - if 'X:' change def disk to X
|
||
483 ;
|
||
484
|
||
485 02B7 803E04030275 0307 cmp blen,2 ! jne notdrive
|
||
486 49 0307
|
||
487 02BE 807F013A756D 0331 cmp byte ptr 1[bx],':' ! jne try_builtin
|
||
488
|
||
489 ; change default disk
|
||
490
|
||
491 02C4 8A17 mov dl,[bx] ;get disk name
|
||
492 02C6 80E25F and dl,5fh ;make Upper Case
|
||
493 02C9 80EA41 sub dl,'A' ;make disk number
|
||
494
|
||
495 ; check bounds
|
||
496
|
||
497 02CC 80FA007205 02D6 cmp dl,0 ! jb subex
|
||
498 02D1 80FA0F7612 02E8 cmp dl,15 ! jbe okdrive
|
||
499 subex:
|
||
500 02D6 BAD007E89303 066F mov dx,offset errstr ! call print_string
|
||
501 02DC BA5A08E88D03 066F mov dx,offset drverr ! call print_string !call crlf
|
||
502 E88703 066F
|
||
503 02E5 E95402 053C jmp submitabort
|
||
504 okdrive:
|
||
505 02E8 52E8AE035A 069A push dx ! call setdisk ! pop dx ; select default disk
|
||
506 02ED 803E470400 cmp fix_parent,false
|
||
507 02F2 7410 0304 jz gonextcmd ;don't change parent's drive
|
||
508 02F4 8B1E450485DB mov bx,parent_offset ! test bx,bx
|
||
509 02FA 7408 0304 jz gonextcmd ;parent doesn't exist
|
||
510 02FC 8E064304 mov es,sysdatseg
|
||
511 0300 26885712 mov es:p_drv[bx],dl
|
||
512
|
||
513 0304 E9C901 04D0 gonextcmd: jmp getnxtcmd
|
||
514
|
||
515 0307 BF8703 notdrive: mov di,offset clicmd
|
||
516 030A BE1C04 mov si, offset parseresult
|
||
517 030D E8E902 05F9 call parsefilename
|
||
518 0310 E311 0323 jcxz goodparse
|
||
519 0312 B17E mov cl,126
|
||
520 0314 BF8703 mov di,offset clicmd
|
||
521 0317 B020 mov al, ' '
|
||
522 0319 0E07 push cs ! pop es
|
||
523 031B F2AE repne scasb
|
||
524 031D C60524 mov byte ptr[di], '$'
|
||
525 0320 E9D701 04FA jmp clierror
|
||
526
|
||
527 0323 891E1A04 goodparse: mov parseret,bx
|
||
528 0327 803E1C040074 0331 cmp parseresult,0 ! jz try_builtin
|
||
529 03 0331
|
||
530 032E E96D01 049E jmp not_builtin
|
||
CP/M ASM86 1.1 SOURCE: SUBMIT.A86 PAGE 11
|
||
|
||
531
|
||
532
|
||
533 try_builtin:
|
||
534 0331 BF4804 mov di,offset usercmd
|
||
535 0334 BE1C0446 mov si,offset parseresult ! inc si
|
||
536 0338 1E07 push ds ! pop es
|
||
537 033A B90400F3A7 mov cx,4 ! repz cmpsw
|
||
538 033F 7566 03A7 jnz notuser
|
||
539
|
||
540 0341 BE1C04 mov si,offset parseresult
|
||
541 0344 8B3E1A0483FF mov di,parseret ! cmp di,0
|
||
542 00
|
||
543 034B 7443 0390 je pruser
|
||
544 034D E8A902 05F9 call parsefilename ; CX = 0 if ok
|
||
545 0350 83F900753B 0390 cmp cx,0 ! jne pruser
|
||
546 0355 BE1C0446 mov si,offset parseresult ! inc si
|
||
547 0359 8B14 mov dx,[si]
|
||
548 035B E8AB02 0609 call a_to_b
|
||
549 035E 80FB0F7724 0387 cmp bl,15 ! ja usererr
|
||
550 0363 8AD352 mov dl,bl ! push dx
|
||
551 0366 E8FF025A 0668 call setuser ! pop dx
|
||
552 036A 88160E04 mov defuser,dl
|
||
553 036E 803E470400 cmp fix_parent,false
|
||
554 0373 741B 0390 jz pruser ;don't fix parent
|
||
555 0375 8B1E450485DB mov bx,parent_offset ! test bx,bx
|
||
556 037B 7413 0390 jz pruser ;parent doesn't exist
|
||
557 037D 8E064304 mov es,sysdatseg
|
||
558 0381 26885713 mov es:p_user[bx],dl
|
||
559 0385 EB09 0390 jmps pruser
|
||
560 0387 BA2207 usererr: mov dx,offset usererrmsg
|
||
561 038A E8E202 066F call print_string
|
||
562 038D E9AC01 053C jmp submitabort ;any error fatal
|
||
563 0390 BA3A07 pruser: mov dx,offset usermsg
|
||
564 0393 E8D902 066F call print_string
|
||
565 0396 E8CD02 0666 call getuser
|
||
566 0399 8AD3E8A502 0643 mov dl,bl ! call prnum
|
||
567 039E E8CB02E8C802 066C call crlf ! call crlf
|
||
568 03A4 E92901 04D0 jmp getnxtcmd
|
||
569 notuser:
|
||
570 03A7 BE1C0446 mov si,offset parseresult ! inc si
|
||
571 03AB BF5004 mov di,offset printercmd
|
||
572 03AE 1E07 push ds ! pop es
|
||
573 03B0 B90400F3A7 mov cx,4 ! repz cmpsw
|
||
574 03B5 7561 0418 jnz notprinter
|
||
575
|
||
576 03B7 BE1C04 mov si,offset parseresult
|
||
577 03BA 8B3E1A0485FF mov di,parseret ! test di,di
|
||
578 03C0 743F 0401 jz prprinter
|
||
579 03C2 E83402 05F9 call parsefilename ; CX = 0 if ok
|
||
580 03C5 83F9007537 0401 cmp cx,0 ! jne prprinter; no tail
|
||
581 03CA BE1C0446 mov si,offset parseresult ! inc si
|
||
582 03CE 8B14 mov dx,[si]
|
||
583 03D0 E83602 0609 call a_to_b
|
||
CP/M ASM86 1.1 SOURCE: SUBMIT.A86 PAGE 12
|
||
|
||
584
|
||
585 03D3 80FBFF7409 03E1 cmp bl,0ffh ! je printererr
|
||
586 03D8 8AD352 mov dl,bl ! push dx
|
||
587 03DB E8C4025A 06A2 call setlist ! pop dx
|
||
588 03DF E309 03EA jcxz setparent ;CX=0 if ok list #
|
||
589 03E1 BA4907 printererr: mov dx,offset printererrmsg
|
||
590 03E4 E88802E95201 066F call print_string ! jmp submitabort ;any err fatal
|
||
591 setparent:
|
||
592 03EA 803E470400 cmp fix_parent,false
|
||
593 03EF 7410 0401 jz prprinter ;don't fix parent
|
||
594 03F1 8B1E450485DB mov bx,parent_offset ! test bx,bx
|
||
595 03F7 7408 0401 jz prprinter ;check for parent
|
||
596 03F9 8E064304 mov es,sysdat_seg
|
||
597 03FD 26885724 mov es:p_list[bx],dl ;0 relative
|
||
598 ;in CCP/M
|
||
599 prprinter:
|
||
600 0401 BA6407 mov dx,offset printermsg
|
||
601 0404 E86802 066F call print_string
|
||
602 0407 E89C02 06A6 call getlist
|
||
603 040A 8AD3E83402 0643 mov dl,bl ! call prnum
|
||
604 040F E85A02E85702 066C call crlf ! call crlf
|
||
605 0415 E9B800 04D0 jmp getnxtcmd
|
||
606
|
||
607 notprinter:
|
||
608 ; check for '$include' option
|
||
609
|
||
610 0418 BE1C0446 mov si,offset parseresult ! inc si
|
||
611 041C BF5804 mov di,offset includecmd
|
||
612 041F 1E07 push ds ! pop es
|
||
613 0421 B90400F3A7 mov cx,4 ! repz cmpsw
|
||
614 0426 753A 0462 jnz notinclude
|
||
615
|
||
616 0428 BE1C04 mov si,offset parseresult
|
||
617 042B 8B3E1A0485FF mov di,parseret ! test di,di
|
||
618 0431 742F 0462 jz notinclude
|
||
619 0433 E8C301 05F9 call parsefilename ; CX = 0 if ok
|
||
620 0436 83F900751E 0459 cmp cx,0 ! jne includerr; no tail
|
||
621 043B 8B364104 mov si,pdadr
|
||
622 043F 83C608 add si,p_name
|
||
623 0442 BF8703 mov di,offset clicmd
|
||
624 0445 B104 mov cl,4
|
||
625 0447 1E07 push ds ! pop es
|
||
626 0449 1E8E1E4304 push ds ! mov ds,sysdatseg
|
||
627 ; overwrite $include with
|
||
628 044E F3A5 rep movsw ; name of this program
|
||
629 ; for recursive submits
|
||
630 0450 1F pop ds
|
||
631 0451 BA8607 mov dx,offset includemsg
|
||
632 0454 E81802 066F call print_string
|
||
633
|
||
634 0457 EB45 049E jmps clicall ; send submit command
|
||
635
|
||
636 0459 BA7607 includerr: mov dx,offset includerrmsg
|
||
CP/M ASM86 1.1 SOURCE: SUBMIT.A86 PAGE 13
|
||
|
||
637
|
||
638 045C E81002 066F call print_string
|
||
639 045F E9DA00 053C jmp submitabort
|
||
640 notinclude:
|
||
641 ; check for '$global' option
|
||
642
|
||
643 0462 BE1C0446 mov si,offset parseresult ! inc si
|
||
644 0466 BF6004 mov di,offset globalcmd
|
||
645 0469 1E07 push ds ! pop es
|
||
646 046B B90400F3A7 mov cx,4 ! repz cmpsw
|
||
647 0470 750E 0480 jnz notglobcmd
|
||
648
|
||
649 0472 C6064704FF mov fix_parent,true ;for d:, USER & PRINTER cmds
|
||
650 0477 BA9107 mov dx,offset globalmsg
|
||
651 047A E8F201 066F call print_string
|
||
652 047D E95000 04D0 jmp getnxtcmd
|
||
653 notglobcmd:
|
||
654 ; check for '$local' option
|
||
655
|
||
656 0480 BE1C0446 mov si,offset parseresult ! inc si
|
||
657 0484 BF6804 mov di,offset localcmd
|
||
658 0487 1E07 push ds ! pop es
|
||
659 0489 B90400F3A7 mov cx,4 ! repz cmpsw
|
||
660 048E 750E 049E jnz notlocal
|
||
661
|
||
662 0490 C606470400 mov fix_parent,false ;for d:, USER & PRINTER cmds
|
||
663 0495 BAA307 mov dx,offset localmsg
|
||
664 0498 E8D401 066F call print_string
|
||
665 049B E93200 04D0 jmp getnxtcmd
|
||
666 notlocal:
|
||
667
|
||
668 notbuiltin:
|
||
669
|
||
670 ;=======
|
||
671 cli_call: ; SEND CLI COMMAND
|
||
672 ;=======
|
||
673
|
||
674 ; initialize Cli Control Block
|
||
675
|
||
676 049E C606860300 mov clicb_net,0
|
||
677 ; make cli call
|
||
678
|
||
679 04A3 C6064004FF mov cmdsent,true
|
||
680 04A8 803E7F02FF cmp no_more_cmds,true
|
||
681 04AD 7513 04C2 jne gocli
|
||
682 04AF BA8703 mov dx,offset clicmd ;this is the last command
|
||
683 04B2 B11A mov cl,mpm_setdma
|
||
684 04B4 E8E9FC 01A0 call mpm
|
||
685 04B7 B12F mov cl,mpm_chain
|
||
686 04B9 E8E4FC 01A0 call mpm
|
||
687 ;returned from chain
|
||
688 04BC B91E00 mov cx,e_bad_open
|
||
689 04BF E93800 04FA jmp clierror
|
||
CP/M ASM86 1.1 SOURCE: SUBMIT.A86 PAGE 14
|
||
|
||
690
|
||
691 gocli:
|
||
692 04C2 8D168603B196 lea dx,clicb ! mov cl,mpm_clicmd
|
||
693 04C8 E8D5FC 01A0 call mpm
|
||
694 04CB 83FB00752A 04FA cmp bx,0 ! jne clierror
|
||
695 ;jmps get_nxtcmd
|
||
696
|
||
697 getnxtcmd:
|
||
698 04D0 803E7F02FF cmp no_more_cmds,true
|
||
699 04D5 7503 04DA jne getnxt2
|
||
700 04D7 E9C1FC 019B jmp submitexit ;terminate if no more commands
|
||
701 getnxt2:
|
||
702 04DA E8CD01 06AA call attach ;get the console back
|
||
703 ;before the TMP does
|
||
704
|
||
705 04DD BE8002 mov si,offset lcmdbuf ;copy look ahead command
|
||
706 04E0 BF0303 mov di,offset cmdbuf ;buffer to cmdbuf
|
||
707 04E3 B98300 mov cx,maxcmdlen+3 ;cmd buffer length
|
||
708 04E6 8CD8 mov ax,ds
|
||
709 04E8 8EC0 mov es,ax
|
||
710 04EA FC cld
|
||
711 04EB F3A4 rep movsb
|
||
712
|
||
713 04ED BA8002 mov dx,offset lcmdbuf ;get look ahead command
|
||
714 04F0 E85200 0545 call readbuffer
|
||
715 04F3 881E7F02 mov no_more_cmds,bl ;true if EOF
|
||
716 04F7 E9A9FC 01A3 jmp topofcmdloop ;and look ahead to see
|
||
717 ;if there are more commands
|
||
718
|
||
719 ;========
|
||
720 clierror:
|
||
721 ;========
|
||
722 ; Cli call unsuccesful, analyze and display err msg
|
||
723 ; input: CX = ERROR CODE
|
||
724
|
||
725 04FA BEBF06 mov si,(offset clierrtab)-4
|
||
726 04FD 1E0E1F push ds ! push cs ! pop ds
|
||
727 nexterr:
|
||
728 0500 83C604 add si,4
|
||
729 0503 2E83BC0000FF 0512 cmp cs:word ptr [si],0ffffh ! je unknownerr
|
||
730 7407 0512
|
||
731 050B 2E3B8C000075 0500 cmp cx,cs:[si] ! jne nexterr
|
||
732 EE 0500
|
||
733 unknownerr:
|
||
734 0512 2E8B940200 mov dx,cs:2[si]
|
||
735 0517 1F pop ds
|
||
736 ; jmps showerr
|
||
737
|
||
738
|
||
739 showerr: ; Print Error String
|
||
740 ;------- ; input: DX = string in CSEG
|
||
741
|
||
742 0518 52E85001 066C perr: push dx ! call crlf
|
||
CP/M ASM86 1.1 SOURCE: SUBMIT.A86 PAGE 15
|
||
|
||
743
|
||
744 051C BAD007E84D01 066F mov dx, offset errstr ! call print_string
|
||
745 0522 5AE84901E843 066F pop dx ! call print_string ! call crlf
|
||
746 01 066F
|
||
747 0529 BA6808E84001 066F mov dx, offset cmdstr ! call print_string
|
||
748 052F BE8703 mov si, offset clicmd
|
||
749 0532 8B0E0804 mov cx, clicmdlen
|
||
750 0536 E8AF00E83001 05E8 call printcmdline ! call crlf
|
||
751 ;jmp submitabort ;any error at this level is fatal
|
||
752
|
||
753 ;===========
|
||
754 submitabort:
|
||
755 ;===========
|
||
756 ; Tell user we are aborting
|
||
757 053C BAB607E82D01 066F mov dx,offset abortstr ! call print_string
|
||
758 0542 E956FC 019B jmp submitexit
|
||
759
|
||
760 ;==========
|
||
761 readbuffer:
|
||
762 ;==========
|
||
763 ; Simulate Read Console buffer from a disk file.
|
||
764 ; input: DX = buffer address
|
||
765 ; output: BX = 0ffffh if EOF
|
||
766
|
||
767 0545 8BFA mov di,dx
|
||
768 0547 32C0 xor al,al
|
||
769 0549 884501 mov 1[di],al ;no chars read
|
||
770 054C 3805 cmp 0[di],al ;zero length buffer
|
||
771 054E 7504 0554 jnz buf_ok ;return no error - nop
|
||
772 0550 BBFFFF mov bx,0ffffh ;ready for error
|
||
773 0553 C3 ret
|
||
774 buf_ok:
|
||
775 0554 8BF74646 mov si,di ! inc si ! inc si
|
||
776 ;si is next char
|
||
777 read_another:
|
||
778 0558 8A4501 mov al,1[di]
|
||
779 055B 3A05 cmp al,[di]
|
||
780 055D 731E 057D jae done_ok ;full buffer
|
||
781 055F 57 push di
|
||
782 0560 E82700 058A call readchar ;fills [si]
|
||
783 0563 5F pop di
|
||
784 0564 83FB00 cmp bx,0 ;non-zero or eof error
|
||
785 0567 7401 056A jz not_error
|
||
786 0569 C3 ret
|
||
787 not_error:
|
||
788 056A 803C0A7502 0571 cmp byte ptr [si],0ah ! jne not_lf
|
||
789 056F EB0C 057D jmps done_ok
|
||
790 0571 803C0D7407 057D not_lf: cmp byte ptr [si],0dh ! je done_ok
|
||
791
|
||
792 0576 FE4501 inc byte ptr 1[di] ;not cr, inc buffer count
|
||
793 0579 46 inc si ;inc char position
|
||
794 057A E9DBFF 0558 jmp read_another
|
||
795 done_ok:
|
||
CP/M ASM86 1.1 SOURCE: SUBMIT.A86 PAGE 16
|
||
|
||
796
|
||
797 057D 807D0100 cmp byte ptr 1[di],0 ;no characters read in buffer
|
||
798 0581 74D5 0558 jz read_another ;skip leading cr's and lf's
|
||
799 0583 C60400 mov byte ptr [si],0
|
||
800 0586 BB0000C3 mov bx,0 ! ret
|
||
801
|
||
802 ;========
|
||
803 readchar:
|
||
804 ;========
|
||
805 ; Read a character from file.
|
||
806 ; input = SI is address of where to put character
|
||
807 ; output = BX = 0ffffh if error or EOF
|
||
808 ;
|
||
809 058A 32FF xor bh,bh
|
||
810 058C 8A1E0F04 mov bl,buf_ptr ;char ptr in dma buffer
|
||
811 0590 80FB80 cmp bl,128
|
||
812 0593 7231 05C6 jb no_read
|
||
813 0595 56 push si
|
||
814 0596 8A160A04 mov dl,command_user ;user number of command file
|
||
815 059A E8CB00 0668 call setuser
|
||
816 059D BB5C00 mov bx,offset fcb
|
||
817 05A0 A00B04 mov al,command_disk ;disk drive number of command file
|
||
818 05A3 8807 mov [bx],al ;re-open each time to allow deletion
|
||
819 05A5 804F0680 or byte ptr mode2[bx],80h ;of command file, open in R/O mode
|
||
820 05A9 8BD3 mov dx,bx
|
||
821 05AB E80801 06B6 call openfile
|
||
822 05AE 3CFF cmp al,0ffh
|
||
823 05B0 7428 05DA jz readerr
|
||
824 05B2 BA5C00 mov dx,offset fcb
|
||
825 05B5 E80601 06BE call readfile ;read sequential
|
||
826 05B8 3C00 cmp al,0
|
||
827 05BA 751E 05DA jnz readerr
|
||
828 05BC BA5C00 mov dx,offset fcb
|
||
829 05BF E8F800 06BA call closefile
|
||
830 05C2 BB0000 mov bx,0
|
||
831 05C5 5E pop si
|
||
832 no_read:
|
||
833 05C6 8A873C01 mov al,dma[bx]
|
||
834 05CA 3C1A cmp al,1ah ;check for EOF
|
||
835 05CC 740D 05DB jz ret_eof
|
||
836 05CE 8804 mov [si],al
|
||
837 05D0 FEC3 inc bl
|
||
838 05D2 881E0F04 mov buf_ptr,bl ;point to next char in disk buffer
|
||
839 05D6 33DB xor bx,bx
|
||
840 05D8 EB04 05DE jmps read_ret
|
||
841
|
||
842 readerr:
|
||
843 05DA 5E pop si
|
||
844 ret_eof:
|
||
845 05DB BBFFFF mov bx,0ffffh ;error or eof
|
||
846 ;jmps read_ret
|
||
847
|
||
848 read_ret:
|
||
CP/M ASM86 1.1 SOURCE: SUBMIT.A86 PAGE 17
|
||
|
||
849
|
||
850 05DE 538A160E04E8 0668 push bx ! mov dl,defuser ! call setuser ! pop bx
|
||
851 82005B 0668
|
||
852 05E7 C3 ret
|
||
853
|
||
854 ;*****************************************************
|
||
855 ;*
|
||
856 ;* SUBROUTINES
|
||
857 ;*
|
||
858 ;*****************************************************
|
||
859
|
||
860 printcmdline: ;SI = string to print, CX = length
|
||
861 05E8 85C9 test cx,cx ;print byte by byte
|
||
862 05EA 740C 05F8 jz blank ;to include $ signs
|
||
863 moreecho:
|
||
864 05EC AC lodsb
|
||
865 05ED 8AD0 mov dl,al
|
||
866 05EF 5156 push cx ! push si
|
||
867 05F1 E86E00 0662 call prchar
|
||
868 05F4 5E59 pop si ! pop cx
|
||
869 05F6 E2F4 05EC loop moreecho
|
||
870 blank:
|
||
871 05F8 C3 ret
|
||
872
|
||
873 parsefilename: ;SI = fcb DI = string
|
||
874 05F9 B99800 mov cx,mpm_parse
|
||
875 05FC BB1604 mov bx,offset pcb
|
||
876 05FF 893F897702 mov [bx],di ! mov 2[bx],si
|
||
877 0604 8BD3E997FB 01A0 mov dx,bx ! jmp mpm
|
||
878
|
||
879 a_to_b: ;dl = 1st char, dh = 2nd char
|
||
880 0609 80FE207504 0612 cmp dh,' ' ! jne atob2char
|
||
881 060E 8AF2B230 mov dh,dl ! mov dl,'0'
|
||
882 0612 80FE307229 0640 atob2char: cmp dh,'0' ! jb atoberr
|
||
883 0617 80FE397724 0640 cmp dh,'9' ! ja atoberr
|
||
884 061C 80FA30721F 0640 cmp dl,'0' ! jb atoberr
|
||
885 0621 80FA39771A 0640 cmp dl,'9' ! ja atoberr
|
||
886 0626 80EE3080EA30 sub dh,'0' ! sub dl,'0'
|
||
887 062C B800008AC2 mov ax,0 ! mov al,dl
|
||
888 0631 52B10AF6E15A push dx ! mov cl,10 ! mul cl ! pop dx
|
||
889 0637 8AD6B60003C2 mov dl,dh ! mov dh,0 ! add ax,dx
|
||
890 063D 8BD8C3 mov bx,ax ! ret
|
||
891 0640 B3FFC3 atoberr: mov bl,0ffh ! ret
|
||
892 prnum: ; dl = num (0-15)
|
||
893 0643 80FA0A720A 0652 cmp dl,10 ! jb prnum_one
|
||
894 0648 52 push dx
|
||
895 0649 B231E81400 0662 mov dl,'1' ! call prchar
|
||
896 064E 5A80EA0A pop dx ! sub dl,10
|
||
897 0652 80C230 prnum_one: add dl,'0'
|
||
898 0655 E90A00 0662 jmp prchar
|
||
899
|
||
900 0658 33D28BCAEB62 06C0 terminate: xor dx,dx ! mov cx,dx ! jmps mpm1
|
||
901 065E B101EB5E 06C0 charin: mov cl,mpm_conin ! jmps mpm1
|
||
CP/M ASM86 1.1 SOURCE: SUBMIT.A86 PAGE 18
|
||
|
||
902
|
||
903 0662 B102EB5A 06C0 prchar: mov cl,mpm_conout ! jmps mpm1
|
||
904 0666 B2FF getuser: mov dl,0ffh
|
||
905 0668 B120EB54 06C0 setuser: mov cl,mpm_usercode ! jmps mpm1
|
||
906 066C BA1F07 crlf: mov dx,offset crlfstr
|
||
907 ;jmp printstring
|
||
908 066F 1E8CC88ED8 print_string: push ds ! mov ax,cs ! mov ds,ax
|
||
909 0674 E802001FC3 0679 call print_ds_string ! pop ds ! ret
|
||
910 print_ds_string:
|
||
911 0679 061E07 push es ! push ds ! pop es
|
||
912 067C 8BF2 mov si,dx
|
||
913 067E 8BFA mov di,dx
|
||
914 0680 B9FFFF mov cx,0FFFFH
|
||
915 mask:
|
||
916 0683 AC lodsb
|
||
917 0684 247F and al,07FH ;mask parity
|
||
918 0686 AA stosb
|
||
919 0687 3C247402 068D cmp al, '$' ! je print_it
|
||
920 068B E2F6 0683 loop mask
|
||
921 print_it:
|
||
922 068D 07 pop es
|
||
923 068E B109EB2E 06C0 mov cl,mpm_conwrite ! jmps mpm1
|
||
924 0692 B199EB2A 06C0 getconsole: mov cl,mpm_getdefcon ! jmps mpm1
|
||
925 0696 B194EB26 06C0 setconsole: mov cl,mpm_setdefcon ! jmps mpm1
|
||
926 069A B10EEB22 06C0 setdisk: mov cl,mpm_diskselect ! jmps mpm1
|
||
927 069E B119EB1E 06C0 getdisk: mov cl,mpm_getdefdisk ! jmps mpm1
|
||
928 06A2 B1A0EB1A 06C0 setlist: mov cl,mpm_setdeflst ! jmps mpm1
|
||
929 06A6 B1A4EB16 06C0 getlist: mov cl,mpm_getdeflst ! jmps mpm1
|
||
930 06AA B192EB12 06C0 attach: mov cl,mpm_conattach ! jmps mpm1
|
||
931 06AE B193EB0E 06C0 detach: mov cl,mpm_condetach ! jmps mpm1
|
||
932 06B2 B10AEB0A 06C0 conread: mov cl,mpm_conread ! jmps mpm1
|
||
933 06B6 B10FEB06 06C0 openfile: mov cl,mpm_openfile ! jmps mpm1
|
||
934 06BA B110EB02 06C0 closefile: mov cl,mpm_closefile ! jmps mpm1
|
||
935 06BE B114 readfile: mov cl,mpm_readfile ;!; jmps mpm1
|
||
936 mpm1:
|
||
937 06C0 E9DDFA 01A0 jmp mpm
|
||
938
|
||
939
|
||
940 ;*****************************************************
|
||
941 ;*
|
||
942 ;* CODE DATA AREA - can be shared
|
||
943 ;*
|
||
944 ;*****************************************************
|
||
945
|
||
946 06C3 1F000000 clierrtab dw e_nullcmd, 0 ;null command
|
||
947 06C7 0300DD07 dw e_no_memory, memerr ;No memory
|
||
948 06CB 0C00EF07 dw e_no_pd, pderr ;No unused PD
|
||
949 06CF 1800FD07 dw e_badfname, fnameerr;Ill. command
|
||
950 06D3 1700FD07 dw e_illdisk, fnameerr;Ill. disk
|
||
951 06D7 2600FD07 dw e_ill_passwd, fnameerr;Ill. password
|
||
952 06DB 1900FD07 dw e_badftype, fnameerr;Ill. type
|
||
953 06DF 1C001D08 dw e_bad_load, loaderr ;
|
||
954 06E3 1D001D08 dw e_bad_read, loaderr ;
|
||
CP/M ASM86 1.1 SOURCE: SUBMIT.A86 PAGE 19
|
||
|
||
955
|
||
956 06E7 1E002808 dw e_bad_open, openerr ;
|
||
957 06EB 0F003B08 dw e_q_full, qfullerr;
|
||
958 06EF 28005008 dw e_abort, aborterr;
|
||
959
|
||
960 ; a few extra entries for future errors
|
||
961
|
||
962 06F3 FFFF0B08 dw 0ffffh, catcherr;
|
||
963 06F7 FFFF0B08 dw 0ffffh, catcherr;
|
||
964 06FB FFFF0B08 dw 0ffffh, catcherr;
|
||
965 06FF FFFF0B08 dw 0ffffh, catcherr;
|
||
966
|
||
967 ; MESSAGES
|
||
968
|
||
969 0703 526571756972 wrongvers db 'Requires CCP/M-86 or MP/M-86'
|
||
970 657320434350
|
||
971 2F4D2D383620
|
||
972 6F72204D502F
|
||
973 4D2D3836
|
||
974 071F 0A0D24 crlfstr db 10,13,'$'
|
||
975
|
||
976 0722 0D0A496E7661 usererrmsg db 13,10,'Invalid User Number',13,10,'$'
|
||
977 6C6964205573
|
||
978 6572204E756D
|
||
979 6265720D0A24
|
||
980 073A 55736572204E usermsg db 'User Number = $'
|
||
981 756D62657220
|
||
982 3D2024
|
||
983 0749 0D0A496E7661 printererrmsg db 13,10,'Invalid Printer Number',13,10,'$'
|
||
984 6C6964205072
|
||
985 696E74657220
|
||
986 4E756D626572
|
||
987 0D0A24
|
||
988 0764 5072696E7465 printermsg db 'Printer Number = $'
|
||
989 72204E756D62
|
||
990 6572203D2024
|
||
991 0776 0D0A496E636C includerrmsg db 13,10,'Include Error$'
|
||
992 756465204572
|
||
993 726F7224
|
||
994 0786 287375626D69 includemsg db '(submit)',10,13,'$'
|
||
995 74290A0D24
|
||
996 0791 476C6F62616C globalmsg db 'Global mode ON',13,10,10,'$'
|
||
997 206D6F646520
|
||
998 4F4E0D0A0A24
|
||
999 07A3 476C6F62616C localmsg db 'Global mode OFF',13,10,10,'$'
|
||
1000 206D6F646520
|
||
1001 4F46460D0A0A
|
||
1002 24
|
||
1003 07B6 5355424D4954 abortstr db 'SUBMIT can not continue',13,10,'$'
|
||
1004 2063616E206E
|
||
1005 6F7420636F6E
|
||
1006 74696E75650D
|
||
1007 0A24
|
||
CP/M ASM86 1.1 SOURCE: SUBMIT.A86 PAGE 20
|
||
|
||
1008
|
||
1009
|
||
1010 07D0 43502F4D2045 errstr db 'CP/M Error: $'
|
||
1011 72726F723A20
|
||
1012 24
|
||
1013 07DD 4E6F7420456E memerr db 'Not Enough Memory$'
|
||
1014 6F756768204D
|
||
1015 656D6F727924
|
||
1016 07EF 504420546162 pderr db 'PD Table Full$'
|
||
1017 6C652046756C
|
||
1018 6C24
|
||
1019 07FD 426164204669 fnameerr db 'Bad File Spec$'
|
||
1020 6C6520537065
|
||
1021 6324
|
||
1022 080B 556E6B6E6F77 catcherr db 'Unknown CLI Error$' ;we should never print
|
||
1023 6E20434C4920
|
||
1024 4572726F7224
|
||
1025 ;this error, it means
|
||
1026 ;we have added CLI
|
||
1027 ;error returns and
|
||
1028 ;have not updated SUBMIT
|
||
1029 081D 4C6F61642045 loaderr db 'Load Error$'
|
||
1030 72726F7224
|
||
1031 0828 43616E277420 openerr db 'Can''t Find Command$'
|
||
1032 46696E642043
|
||
1033 6F6D6D616E64
|
||
1034 24
|
||
1035 083B 52535020436F qfullerr db 'RSP Command Que Full$'
|
||
1036 6D6D616E6420
|
||
1037 517565204675
|
||
1038 6C6C24
|
||
1039 0850 434C49204162 aborterr db 'CLI Abort$'
|
||
1040 6F727424
|
||
1041 085A 496E76616C69 drverr db 'Invalid Drive$'
|
||
1042 642044726976
|
||
1043 6524
|
||
1044 0868 436F6D6D616E cmdstr db 'Command = $'
|
||
1045 64203D2024
|
||
1046
|
||
1047 0873 4E6F20275355 sopen_err db 'No ''SUB'' File Present',10,13, '$'
|
||
1048 42272046696C
|
||
1049 652050726573
|
||
1050 656E740A0D24
|
||
1051
|
||
1052
|
||
1053 ;*****************************************************
|
||
1054 ;*
|
||
1055 ;* Data Area - separate per invokation of SUBMIT
|
||
1056 ;*
|
||
1057 ;*****************************************************
|
||
1058
|
||
1059 dseg
|
||
1060 org 05cH
|
||
CP/M ASM86 1.1 SOURCE: SUBMIT.A86 PAGE 21
|
||
|
||
1061
|
||
1062
|
||
1063 005C fcb rb 32
|
||
1064 007C 00 cr db 0 ;current record
|
||
1065 007D r0 rw 0
|
||
1066 007D r2 rb 0
|
||
1067
|
||
1068 org 080h
|
||
1069
|
||
1070 0080 cmdtail rb 128
|
||
1071
|
||
1072 0100 CCCCCCCCCCCC stack dw 0cccch,0cccch,0cccch
|
||
1073 0106 CCCCCCCCCCCC dw 0cccch,0cccch,0cccch
|
||
1074 010C CCCCCCCCCCCC dw 0cccch,0cccch,0cccch
|
||
1075 0112 CCCCCCCCCCCC dw 0cccch,0cccch,0cccch
|
||
1076 0118 CCCCCCCCCCCC dw 0cccch,0cccch,0cccch
|
||
1077 011E CCCCCCCCCCCC dw 0cccch,0cccch,0cccch
|
||
1078 0124 CCCCCCCCCCCC dw 0cccch,0cccch,0cccch
|
||
1079 012A CCCCCCCCCCCC dw 0cccch,0cccch,0cccch
|
||
1080 0130 CCCCCCCCCCCC dw 0cccch,0cccch,0cccch
|
||
1081 0136 CCCCCCCCCCCC dw 0cccch,0cccch,0cccch
|
||
1082 013C stacktop rw 0
|
||
1083
|
||
1084 0080 maxcmdlen equ 128
|
||
1085
|
||
1086 ; the Read Console Buffer and the
|
||
1087 ; Cli Control Block share the same memory
|
||
1088
|
||
1089 013C dma rb 128
|
||
1090
|
||
1091 01BC numargs rw 1
|
||
1092 01BE argtable rb 64 ;address of arguments in cmdtail
|
||
1093 01FE deblankbuf rb maxcmdlen + 1
|
||
1094
|
||
1095 027F 00 no_more_cmds db false ;set to true when EOF is
|
||
1096 ;found
|
||
1097 0280 lcmdbuf rb 1
|
||
1098 0281 lblen rb 1 ;read from disk to here,
|
||
1099 0282 lcmd rb maxcmdlen + 1 ;copy this to CMD
|
||
1100
|
||
1101 0303 cmdbuf rb 1 ;current cmd goes here
|
||
1102 0304 blen rb 1
|
||
1103 0305 cmd rb maxcmdlen + 1 ;copy w/ expanded args to CLICMD
|
||
1104
|
||
1105 0386 clicb rb 0 ;cmd w/ expanded args goes here
|
||
1106 0386 00 clicb_net db 0
|
||
1107 0387 clicmd rb maxcmdlen+1
|
||
1108 0408 0000 clicmdlen dw 0
|
||
1109
|
||
1110 040A command_user rb 1
|
||
1111 040B command_disk rb 1
|
||
1112 040C command_con rb 1
|
||
1113 040D defdisk rb 1
|
||
CP/M ASM86 1.1 SOURCE: SUBMIT.A86 PAGE 22
|
||
|
||
1114
|
||
1115 040E defuser rb 1
|
||
1116 040F 80 buf_ptr db 128 ;force initial read
|
||
1117 ;in readchar routine
|
||
1118 0410 0D prompt db 13
|
||
1119 0411 30 promptutens db '0'
|
||
1120 0412 30 promptuones db '0'
|
||
1121 0413 41 promptdisk db 'A'
|
||
1122 0414 3E24 promptend db '>$'
|
||
1123
|
||
1124 0416 8703 pcb dw offset clicmd
|
||
1125 0418 1C04 dw offset parseresult
|
||
1126
|
||
1127 041A 0000 parseret dw 0
|
||
1128 041C parseresult rb 36
|
||
1129 0440 00 cmdsent db false
|
||
1130
|
||
1131 0441 pdadr rw 1 ;our pd address
|
||
1132 0443 sysdatseg rw 1 ;the system data area's segment
|
||
1133 0445 parent_offset rw 1 ;parents pd address
|
||
1134 0447 00 fix_parent db false ;local/global mode
|
||
1135
|
||
1136 0448 555345522020 usercmd db 'USER '
|
||
1137 2020
|
||
1138 0450 5052494E5445 printercmd db 'PRINTER '
|
||
1139 5220
|
||
1140 0458 24494E434C55 includecmd db '$INCLUDE'
|
||
1141 4445
|
||
1142 0460 24474C4F4241 globalcmd db '$GLOBAL '
|
||
1143 4C20
|
||
1144 0468 244C4F43414C localcmd db '$LOCAL '
|
||
1145 2020
|
||
1146
|
||
1147 end
|
||
1148
|
||
1149
|
||
1150 END OF ASSEMBLY. NUMBER OF ERRORS: 0. USE FACTOR: 17%
|
||
CP/M ASM86 1.1 SOURCE: SUBMIT.A86 PAGE 023
|
||
|
||
ABORTERR 0850 V 958 1039#
|
||
ABORTSTR 07B6 V 757 1003#
|
||
ARGMAYBE 020F L 376 382#
|
||
ARGTABLE 01BE V 253 414 1092#
|
||
ATOB 0609 L 548 583 879#
|
||
ATOB2CHAR 0612 L 880 882#
|
||
ATOBERR 0640 L 882 883 884 885 891#
|
||
ATTACH 06AA L 702 930#
|
||
BLANK 05F8 L 862 870#
|
||
BLEN 0304 V 460 466 472 485 1102#
|
||
BUFOK 0554 L 771 774#
|
||
BUFPTR 040F V 810 838 1116#
|
||
CATCHERR 080B V 962 963 964 965 1022#
|
||
CHARIN 065E L 901#
|
||
CHKSEMI 02B2 L 469 477#
|
||
CLICALL 049E L 634 671#
|
||
CLICB 0386 V 692 1105#
|
||
CLICBNET 0386 V 676 1106#
|
||
CLICMD 0387 V 369 445 515 520 623 682 748 1107# 1124
|
||
CLICMDLEN 0408 V 440 446 749 1108#
|
||
CLIERROR 04FA L 525 689 694 720#
|
||
CLIERRTAB 06C3 V 725 946#
|
||
CLOSEFILE 06BA L 183 829 934#
|
||
CMD 0305 V 368 459 469 1103#
|
||
CMDBUF 0303 V 277 278 706 1101#
|
||
CMDSENT 0440 V 311 313 679 1129#
|
||
CMDSTR 0868 V 747 1044#
|
||
CMDTAIL 0080 V 199 1070#
|
||
COMMANDCON 040C V 193 1112#
|
||
COMMANDDISK 040B V 190 817 1111#
|
||
COMMANDUSER 040A V 148 163 814 1110#
|
||
CONREAD 06B2 L 932#
|
||
COPYARG 0240 L 409#
|
||
COPYCHAR 0131 L 219 221#
|
||
COPYIT 025A L 378 419 424#
|
||
COPYMORE 024C L 415# 421
|
||
CR 007C V 1064#
|
||
CRLF 066C L 275 314 453 501 567 567 604 604 742 745
|
||
750 906#
|
||
CRLFSTR 071F V 906 974#
|
||
CS SREG V 522 726 729 731 734 908
|
||
DBLANK 0288 L 462# 466
|
||
DEBLANK 0124 L 207 211# 226 243
|
||
DEBLANKBUF 01FE V 200 252 416 1093#
|
||
DEDONE 0153 L 231 245#
|
||
DEFDISK 040D V 327 351 1113#
|
||
DEFUSER 040E V 149 335 552 850 1115#
|
||
DETACH 06AE L 931#
|
||
DMA 013C V 144 833 1089#
|
||
DONECOPY 026A L 434 437 439#
|
||
DONEOK 057D L 780 789 790 795#
|
||
DRVERR 085A V 501 1041#
|
||
DS SREG V 108 472 536 572 612 625 626 626 630 645
|
||
CP/M ASM86 1.1 SOURCE: SUBMIT.A86 PAGE 024
|
||
|
||
658 708 726 726 735 908 908 909 911
|
||
EABORT 0028 N 84# 958
|
||
EBADFNAME 0018 N 76# 949
|
||
EBADFTYPE 0019 N 77# 952
|
||
EBADLOAD 001C N 78# 953
|
||
EBADOPEN 001E N 80# 688 956
|
||
EBADREAD 001D N 79# 954
|
||
ECHOCMD 0270 L 380 444#
|
||
EILLDISK 0017 N 75# 950
|
||
EILLLST 0025 N 82#
|
||
EILLPASSWD 0026 N 83# 951
|
||
ENOMEMORY 0003 N 72# 947
|
||
ENOPD 000C N 73# 948
|
||
ENULLCMD 001F N 81# 946
|
||
EQFULL 000F N 74# 957
|
||
ERRSTR 07D0 V 500 744 1010#
|
||
ES SREG V 131 132 136 165 166 472 510 511 522 536
|
||
557 558 572 596 597 612 625 645 658 709
|
||
911 911 922
|
||
EXISTS 00F4 L 159 175 181#
|
||
FALSE 0000 N 34# 311 313 506 553 592 662 1095 1129 1134
|
||
FCB 005C V 151 168 169 173 182 184 816 824 828 1063#
|
||
FILLDONE 0173 L 259 273#
|
||
FIRSTWHITES 0115 L 201# 210
|
||
FIXPARENT 0447 V 506 553 592 649 662 1134#
|
||
FNAMEERR 07FD V 949 950 951 952 1019#
|
||
FTYPE 0009 N 68# 152 153 154
|
||
GETCONSOLE 0692 L 192 924#
|
||
GETDISK 069E L 187 326 927#
|
||
GETLIST 06A6 L 602 929#
|
||
GETNXT2 04DA L 699 701#
|
||
GETNXTCMD 04D0 L 513 568 605 652 665 697#
|
||
GETUSER 0666 L 147 334 565 904#
|
||
GLOBALCMD 0460 V 644 1142#
|
||
GLOBALMSG 0791 V 650 996#
|
||
GOCLI 04C2 L 681 691#
|
||
GONEXTCMD 0304 L 460 479 507 509 513#
|
||
GOODPARSE 0323 L 518 527#
|
||
INCLUDECMD 0458 V 611 1140#
|
||
INCLUDEMSG 0786 V 631 994#
|
||
INCLUDERR 0459 L 620 636#
|
||
INCLUDERRMSG 0776 V 636 991#
|
||
LBLEN 0281 V 1098#
|
||
LCMD 0282 V 1099#
|
||
LCMDBUF 0280 V 283 284 705 713 1097#
|
||
LOADERR 081D V 953 954 1029#
|
||
LOCALCMD 0468 V 657 1144#
|
||
LOCALMSG 07A3 V 663 999#
|
||
MASK 0683 L 915# 920
|
||
MAXCMDLEN 0080 N 277 283 433 707 1084# 1093 1099 1103 1107
|
||
MEMERR 07DD V 947 1013#
|
||
MODE2 0006 N 66# 155 819
|
||
MODESYS 000A N 67# 174
|
||
CP/M ASM86 1.1 SOURCE: SUBMIT.A86 PAGE 025
|
||
|
||
MOREECHO 05EC L 863# 869
|
||
MOREWHITES 0121 L 204 208#
|
||
MPM 01A0 L 115 129 141 145 298# 684 686 693 877 937
|
||
MPM1 06C0 L 900 901 903 905 923 924 925 926 927 928
|
||
929 930 931 932 933 934 936#
|
||
MPMCHAIN 002F N 51# 685
|
||
MPMCLICMD 0096 N 58# 692
|
||
MPMCLOSEFILE 0010 N 46# 934
|
||
MPMCONATTACH 0092 N 55# 930
|
||
MPMCONDETACH 0093 N 56# 931
|
||
MPMCONIN 0001 N 38# 901
|
||
MPMCONOUT 0002 N 39# 903
|
||
MPMCONREAD 000A N 41# 932
|
||
MPMCONSTAT 000B N 42#
|
||
MPMCONWRITE 0009 N 40# 923
|
||
MPMDISKSELECT 000E N 44# 926
|
||
MPMGETDEFCON 0099 N 60# 924
|
||
MPMGETDEFDISK 0019 N 48# 927
|
||
MPMGETDEFLST 00A4 N 63# 929
|
||
MPMGETPDADR 009C N 61# 128
|
||
MPMINT 00E0 N 36# 301
|
||
MPMOPENFILE 000F N 45# 933
|
||
MPMPARSE 0098 N 59# 874
|
||
MPMREADFILE 0014 N 47# 935
|
||
MPMSETDEFCON 0094 N 57# 925
|
||
MPMSETDEFLST 00A0 N 62# 928
|
||
MPMSETDMA 001A N 49# 143 683
|
||
MPMSETPRIOR 0091 N 53# 140
|
||
MPMTERMINATE 008F N 52#
|
||
MPMUSERCODE 0020 N 50# 905
|
||
MPMVERSION 000C N 43# 114
|
||
NEXTCHAR 0201 L 371# 379 412 418
|
||
NEXTERR 0500 L 727# 731
|
||
NOARG 0208 L 377# 386 389 391
|
||
NOBLANKS 0299 L 464 468#
|
||
NOCLEARLINE 01B2 L 311 316#
|
||
NOMORECMDS 027F V 286 680 698 715 1095#
|
||
NOREAD 05C6 L 812 832#
|
||
NOTBUILTIN 049E L 530 668#
|
||
NOTDRIVE 0307 L 485 515#
|
||
NOTERROR 056A L 785 787#
|
||
NOTGLOBCMD 0480 L 647 653#
|
||
NOTINCLUDE 0462 L 614 618 640#
|
||
NOTLF 0571 L 788 790#
|
||
NOTLOCAL 049E L 660 666#
|
||
NOTPRINTER 0418 L 574 607#
|
||
NOTUSER 03A7 L 538 569#
|
||
NUMARGS 01BC V 274 410 1091#
|
||
NUMERIC 0217 L 384 387#
|
||
NXTFILL 015D L 256# 263
|
||
OKDRIVE 02E8 L 498 504#
|
||
OKNUM 0248 L 411 413#
|
||
OKVERS 0064 L 117 118 122#
|
||
CP/M ASM86 1.1 SOURCE: SUBMIT.A86 PAGE 026
|
||
|
||
ONEDIGIT 023E L 398 400 407#
|
||
ONES 01DC L 344 347#
|
||
OPENERR 0828 V 956 1031#
|
||
OPENFAIL 00EB L 172 176#
|
||
OPENFILE 06B6 L 157 170 821 933#
|
||
PARENTOFFSET 0445 V 133 508 555 594 1133#
|
||
PARSEFILENAME 05F9 L 517 544 579 619 873#
|
||
PARSERESULT 041C V 516 528 535 540 546 570 576 581 610 616
|
||
643 656 1125 1128#
|
||
PARSERET 041A V 527 541 577 617 1127#
|
||
PCB 0416 V 875 1124#
|
||
PDADR 0441 V 130 621 1131#
|
||
PDERR 07EF V 948 1016#
|
||
PDRV 0012 N 90# 511
|
||
PERR 0518 L 742#
|
||
PFCHILDABORT 0800 N 95#
|
||
PFCTLC 0080 N 96#
|
||
PFKEEP 0002 N 94#
|
||
PFLAG 0006 N 87#
|
||
PLIST 0024 N 92# 597
|
||
PNAME 0008 N 88# 622
|
||
PPARENT 001E N 89# 132
|
||
PPRIOR 0005 N 86# 136
|
||
PRCHAR 0662 L 867 895 898 903#
|
||
PRINTCMDLINE 05E8 L 447 750 860#
|
||
PRINTDSSTRING 0679 L 361 909 910#
|
||
PRINTERCMD 0450 V 571 1138#
|
||
PRINTERERR 03E1 L 585 589#
|
||
PRINTERERRMSG 0749 V 589 983#
|
||
PRINTERMSG 0764 V 600 988#
|
||
PRINTIT 068D L 919 921#
|
||
PRINTSTRING 066F L 120 178 500 501 561 564 590 601 632 638
|
||
651 664 744 745 747 757 908#
|
||
PRNUM 0643 L 566 603 892#
|
||
PRNUMONE 0652 L 893 897#
|
||
PROMPT 0410 V 356 1118#
|
||
PROMPTDISK 0413 V 352 1121#
|
||
PROMPTEND 0414 V 1122#
|
||
PROMPTUONES 0412 V 340 343 347 1120#
|
||
PROMPTUTENS 0411 V 339 345 357 359 1119#
|
||
PRPRINTER 0401 L 578 580 593 595 599#
|
||
PRPROMPT 01E0 L 342 348#
|
||
PRUSER 0390 L 543 545 554 556 559 563#
|
||
PSETPAR 0083 L 134 136#
|
||
PUSER 0013 N 91# 558
|
||
PUTLASTBLANK 013A L 223 227#
|
||
QFULLERR 083B V 957 1035#
|
||
R0 007D V 1065#
|
||
R2 007D V 1066#
|
||
READANOTHER 0558 L 777# 794 798
|
||
READBUFFER 0545 L 279 285 714 761#
|
||
READCHAR 058A L 782 803#
|
||
READERR 05DA L 823 827 842#
|
||
CP/M ASM86 1.1 SOURCE: SUBMIT.A86 PAGE 027
|
||
|
||
READFILE 06BE L 825 935#
|
||
READRET 05DE L 840 848#
|
||
REALARG 0221 L 392#
|
||
RETEOF 05DB L 835 844#
|
||
SAVEDISKNO 0106 L 186 189#
|
||
SETCONSOLE 0696 L 925#
|
||
SETDISK 069A L 505 926#
|
||
SETLIST 06A2 L 587 928#
|
||
SETP 0090 L 135 138 140#
|
||
SETPARENT 03EA L 588 591#
|
||
SETUSER 0668 L 164 551 815 850 905#
|
||
SHOWERR 0518 L 739#
|
||
SKIPARG 016B L 262 265# 269
|
||
SKIPMORE 0142 L 233# 238 240
|
||
SKIPWHITE 0143 L 216 218 235#
|
||
SOPENERR 0873 V 177 1047#
|
||
SS SREG V 110
|
||
STACK 0100 V 1072#
|
||
STACKTOP 013C V 111 1082#
|
||
SUBEX 02D6 L 497 499#
|
||
SUBMIT 003D L 16 105#
|
||
SUBMITABORT 053C L 179 503 562 590 639 754#
|
||
SUBMITEXIT 019B L 281 291# 700 758
|
||
SYSDATSEG 0443 V 131 165 510 557 596 626 1132#
|
||
SYSDRIVE 004B V 70# 166
|
||
TAB 011C L 203 205#
|
||
TERMINATE 0658 L 121 900#
|
||
TESTEND 0265 L 435#
|
||
TOPOFCMDLOOP 01A3 L 287 304# 716
|
||
TRUE 00FF N 33# 649 679 680 698
|
||
TRYBUILTIN 0331 L 487 528 533#
|
||
UNKNOWN 0000 N 35#
|
||
UNKNOWNERR 0512 L 729 733#
|
||
USERCMD 0448 V 534 1136#
|
||
USERERR 0387 L 549 560#
|
||
USERERRMSG 0722 V 560 976#
|
||
USERMSG 073A V 563 980#
|
||
WRITEPROMPT 01F6 L 357 360#
|
||
WRONGVERS 0703 V 119 969#
|
||
ZAPBLANK 0292 L 463 465#
|