1 TITLE COMMAND Language modifiable
Code Resident
15 DATARES
SEGMENT PUBLIC
16 EXTRN ENDBATMES
:BYTE,BATCH
:WORD,ECHOFLAG
:BYTE,CDEVAT
:BYTE
17 EXTRN DEVENAM
:BYTE,DRVLET
:BYTE,MREAD
:BYTE,MWRITE
:BYTE,IOTYP
:BYTE
18 EXTRN ERRCD_24
:WORD,MESBAS
:BYTE,ERRMES
:BYTE,DEVEMES
:BYTE
19 EXTRN DRVNUM
:BYTE,LOADING
:BYTE,REQUEST
:BYTE,PIPEFLAG
:BYTE
20 EXTRN SINGLECOM
:WORD,FORFLAG
:BYTE,BADFAT
:BYTE,NEWLIN
:BYTE
25 CODERES
SEGMENT PUBLIC BYTE
27 EXTRN SAVHAND
:NEAR,RESTHAND
:NEAR,CONTCTERM
:NEAR
30 PUBLIC ASKEND
,DSKERR
,RPRINT
32 ASSUME
CS:RESGROUP
,DS:NOTHING
,ES:NOTHING
,SS:NOTHING
34 ;********************************************
35 ; TERMINATE BATCH JOB PROMPTER
41 MOV DX,OFFSET RESGROUP
:ENDBATMES
43 MOV AX,(STD_CON_INPUT_FLUSH
SHL 8)+STD_CON_INPUT
53 MOV [BATCH
],0 ; Flag no batch AFTER DEALLOC in case
55 MOV [ECHOFLAG
],1 ; Make sure ECHO turned back on
63 ASSUME
DS:NOTHING
,ES:NOTHING
,SS:NOTHING
64 ; ******************************************************
65 ; THIS IS THE DEFAULT DISK ERROR HANDLING CODE
66 ; AVAILABLE TO ALL USERS IF THEY DO NOT TRY TO
67 ; INTERCEPT INTERRUPT 24H.
68 ; ******************************************************
80 MOV DI,OFFSET RESGROUP
:DEVENAM
82 ADD SI,SDEVNAME
; Suck up device name (even on Block)
87 POP ES ; Stack just contains DS at this point
90 POP DS ; Set up local data segment
97 ADD AL,"A" ; Compute drive letter (even on character)
99 TEST AH,80H
; Check if hard disk error
101 TEST [CDEVAT
],DEVTYP
SHR 8
105 MOV SI,OFFSET RESGROUP
:MREAD
108 MOV SI,OFFSET RESGROUP
:MWRITE
111 MOV WORD PTR [IOTYP
],AX
113 MOV WORD PTR [IOTYP
+2],AX
121 MOV DI,WORD PTR [DI+MESBAS
] ; Get pointer to error message
122 XCHG DI,DX ; May need DX later
123 CALL RPRINT
; Print error type
124 MOV DX,OFFSET RESGROUP
:ERRMES
126 TEST [CDEVAT
],DEVTYP
SHR 8
128 MOV DX,OFFSET RESGROUP
:DEVEMES
129 MOV AH,STD_CON_STRING_OUTPUT
131 JMP SHORT ASK
; Don't ralph on COMMAND
134 MOV DX,OFFSET RESGROUP
:DRVNUM
139 JMP GETCOMDSK2
; If error loading COMMAND, re-prompt
141 MOV DX,OFFSET RESGROUP
:REQUEST
143 MOV AX,(STD_CON_INPUT_FLUSH
SHL 8)+STD_CON_INPUT
144 INT int_command
; Get response
146 OR AL,20H
; Convert to lower case
147 MOV AH,0 ; Return code for ignore
157 XCHG DL,[PIPEFLAG
] ; Abort a pipe in progress
162 MOV [SINGLECOM
],-1 ; Make sure SINGLECOM exits
164 CMP [ERRCD_24
],0 ; Write protect
166 CMP [ERRCD_24
],2 ; Drive not ready
167 JNZ EEXIT
; Don't abort the FOR
169 MOV [FORFLAG
],0 ; Abort a FOR in progress
172 MOV [SINGLECOM
],-1 ; Make sure SINGLECOM exits
182 MOV DX,OFFSET RESGROUP
:BADFAT
184 MOV DX,OFFSET RESGROUP
:ERRMES
186 MOV DX,OFFSET RESGROUP
:DRVNUM
192 ;*********************************************
193 ; Print routines for Tokenized resident messages
195 ASSUME
DS:RESGROUP
,SS:RESGROUP
198 MOV DX,OFFSET RESGROUP
:NEWLIN
201 PUSH AX ; Tokenized message printer
217 MOV BX,OFFSET RESGROUP
:MESADD
224 MOV AH,STD_CON_OUTPUT
228 TEST AL,10000000B ; High bit set indicates end