        page ,132
TITLE   COMMAND Transient Uninitialized DATA
;
;                        IBM Confidential
;                        Copyright (C) IBM Corporation 1991-1993
;                        All Rights Reserved.
;

comment %

The TRANSPACE segment contains variable data that is considered
volatile between command cycles, and therefore is not included in the
transient checksum area.  Contents of these variables MUST be
initialized before use, and must not be relied upon from command
cycle to command cycle.

No constant data values should be stored here.

%




.xlist
.xcref
        include version.inc
        include comsw.asm
        include dossym.inc
        include find.inc
        include intnat.inc
        include comequ.asm
        include comseg.asm
        include magicdrv.inc
.list
.cref

; Uninitialized transient data
TRANSPACE       SEGMENT PUBLIC BYTE

        PUBLIC  ALLSWITCH
        PUBLIC  append_exec             ;AN041;
        PUBLIC  arg
        PUBLIC  argbufptr
        PUBLIC  ARGC
        PUBLIC  ARG1S
        PUBLIC  ARG2S
        PUBLIC  ARGTS
        PUBLIC  arg_buf
        PUBLIC  ASCII
        PUBLIC  AttrSelect
        PUBLIC  AttrSpecified
        PUBLIC  BatBuf
        PUBLIC  BatBufEnd
        PUBLIC  BatBufPos
        PUBLIC  BATHAND
        PUBLIC  BINARY
        PUBLIC  BITS
        PUBLIC  BWDBUF
        PUBLIC  BYTCNT
        PUBLIC  bytes_free
        PUBLIC  CFLAG
        PUBLIC  CHARBUF
        PUBLIC  CHKDRV
        PUBLIC  COM
        PUBLIC  COMBUF
        PUBLIC  comma
        PUBLIC  comptr
        PUBLIC  COMSW
        PUBLIC  CONCAT
        PUBLIC  copy_Num
        PUBLIC  CountryPtrInfo
        PUBLIC  CountryPtrId
        PUBLIC  CountryPtr
        PUBLIC  CPDATE
        PUBLIC  CPTIME
        PUBLIC  cpyflag
        PUBLIC  CURDRV
        PUBLIC  DATE_DAY                ;AN000;
        PUBLIC  DATE_MONTH              ;AN000;
        PUBLIC  DATE_OUTPUT             ;AN000;
        PUBLIC  DATE_TYPE               ;AN000;
        PUBLIC  DATE_YEAR               ;AN000;
        PUBLIC  DELNOTVALID             ;I002;
        PUBLIC  DEST
        PUBLIC  DESTBUF
        PUBLIC  DestClosed
        PUBLIC  DESTDIR
        PUBLIC  DESTFCB
        PUBLIC  DESTFCB2
        PUBLIC  DESTHAND
        PUBLIC  DESTINFO
        PUBLIC  DESTISDEV
        PUBLIC  DESTISDIR
        PUBLIC  DESTNAME
        PUBLIC  DESTSIZ
        PUBLIC  DESTSWITCH
        PUBLIC  DESTTAIL
        PUBLIC  DESTVARS
        PUBLIC  DIRBUF
        PUBLIC  DIRCHAR
        PUBLIC  dirflag                 ;AN015;
        PUBLIC  Dir_Num
IF 0    ; Delete compression ratio code
        PUBLIC  Dir_CRatio_1
        PUBLIC  Dir_CRatio_2
ENDIF
        PUBLIC  display_ioctl           ;AN000;
        PUBLIC  display_mode            ;AN000;
        PUBLIC  display_width           ;AN000;
        PUBLIC  DRIVE_NUMBER            ;AN000;
        PUBLIC  DRIVE_OUTPUT            ;AN000;
        PUBLIC  DRIVE_TYPE              ;AN000;
        PUBLIC  DRIVE_VALUE             ;AN000;
        PUBLIC  ELCNT
        PUBLIC  ELPOS
        PUBLIC  ENDDESTBUF
        PUBLIC  EXECPATH
        PUBLIC  EXEC_ADDR
        PUBLIC  EXEFCB
        PUBLIC  expand_star
        PUBLIC  ext_entered             ;AN005;
        PUBLIC  FBUF
        PUBLIC  FileCnt
        PUBLIC  FileCntTotal
        PUBLIC  FileSiz
        PUBLIC  FileSizTotal
        PUBLIC  file_size_high
        PUBLIC  file_size_low
        PUBLIC  FILTYP
        PUBLIC  FIRSTDEST
        PUBLIC  FRSTSRCH
        PUBLIC  GOTOLEN
        PUBLIC  HEADCALL
        PUBLIC  ID
        PUBLIC  IDLEN
        PUBLIC  IFNOTFLAG
        PUBLIC  if_not_count
        PUBLIC  INEXACT
        PUBLIC  INTERNATVARS
        PUBLIC  KPARSE
        PUBLIC  last_arg
        PUBLIC  PerLine
        PUBLIC  LeftOnLine
        PUBLIC  LeftOnPage
        PUBLIC  linperpag               ;AN000;
        PUBLIC  major_ver_num
        PUBLIC  MELCOPY
        PUBLIC  MELSTART
        PUBLIC  minor_ver_num
        PUBLIC  msg_flag                ;AN022;
        PUBLIC  msg_numb                ;AN022;
        PUBLIC  NOWRITE
        PUBLIC  NXTADD
        PUBLIC  objcnt
        PUBLIC  OCtrlZ
        PUBLIC  OFilePtr_Hi
        PUBLIC  OFilePtr_Lo
        PUBLIC  OldCtrlCHandler
        PUBLIC  one_char_val
        PUBLIC  PARM1
        PUBLIC  PARM2
        PUBLIC  parse_last              ;AN018;
        PUBLIC  PARSE1_ADDR             ;AN000;
        PUBLIC  PARSE1_CODE             ;AN000;
        PUBLIC  PARSE1_OUTPUT           ;AN000;
        PUBLIC  PARSE1_SYN              ;AN000;
        PUBLIC  PARSE1_TYPE             ;AN000;
        PUBLIC  PATHCNT
        PUBLIC  pathinfo
        PUBLIC  PATHPOS
        PUBLIC  PATHSW
        PUBLIC  PLUS
        PUBLIC  plus_comma
        PUBLIC  print_err_flag          ;AN000;
        PUBLIC  psep_char
        PUBLIC  RCH_ADDR
        PUBLIC  RDEOF
        PUBLIC  RE_INSTR
; VCB - Moved these to the transient portion of COMMAND.COM
        PUBLIC  RE_OUT_APP
        PUBLIC  RE_OUTSTR
        PUBLIC  RESSEG
        PUBLIC  save_ax                  ;; D6209
        PUBLIC  save_bx                  ;; D6209
        PUBLIC  save_cx                  ;; D6209
        PUBLIC  SCANBUF
        PUBLIC  SDIRBUF
        PUBLIC  search_best
        PUBLIC  search_best_buf
        PUBLIC  search_curdir_buf
        PUBLIC  search_error
        PUBLIC  SKPDEL
        PUBLIC  SOURCE
        PUBLIC  SPECDRV
        PUBLIC  SRCBUF
        PUBLIC  SRCHAND
        PUBLIC  SRCINFO
        PUBLIC  SRCISDEV
        PUBLIC  SRCISDIR
        PUBLIC  SRCPT
        PUBLIC  SRCSIZ
        PUBLIC  SRCTAIL
        PUBLIC  SRCVARS
        PUBLIC  srcxname
        PUBLIC  STACK
        PUBLIC  STARTEL
        PUBLIC  string_ptr_2
;AD061; PUBLIC  string_ptr_2_sb         ;AN000;
        PUBLIC  subst_buffer            ;AN061;
        PUBLIC  SWITCHAR
        PUBLIC  system_cpage
        PUBLIC  TERMREAD
        PUBLIC  TIME_FRACTION           ;AN000;
        PUBLIC  TIME_HOUR               ;AN000;
        PUBLIC  TIME_MINUTES            ;AN000;
        PUBLIC  TIME_OUTPUT             ;AN000;
        PUBLIC  TIME_SECONDS            ;AN000;
        PUBLIC  TIME_TYPE               ;AN000;
        PUBLIC  TPA
        PUBLIC  tpbuf
        PUBLIC  TRANSPACEEND
        PUBLIC  TRAN_TPA
        PUBLIC  trgxname
        PUBLIC  UCOMBUF
        PUBLIC  USERDIR1
        PUBLIC  vol_drv
        PUBLIC  vol_ioctl_buf           ;AC030;
        PUBLIC  vol_serial              ;AC030;
        PUBLIC  vol_label               ;AC030;
        PUBLIC  WRITTEN
        PUBLIC  zflag

        Public  TypeFilSiz              ;stores size of file to be typed

        public  sublist1
        public  check_overwrite
        public  asked_overwrite
        public  overwriting

IF 0    ; Delete compression ratio code
        PUBLIC  fhCVF, szCVF, MDBPB
        PUBLIC  ccluUsed, ccluUsedDir, ccluUsedTotal
        PUBLIC  csecUsed, csecUsedDir, csecUsedTotal
        PUBLIC  cFATEntries, entInBuf, bufDOSFAT, bufMDFAT
        PUBLIC  pbufDOSFAT, pbufMDFAT, segFATBUF, savBytCnt
        PUBLIC  csecPerCluster, fUseHostSize
ENDIF

        IF  IBM_ROM_FIND
        PUBLIC  ROM_CALL
        PUBLIC  ROM_CS
        PUBLIC  ROM_IP
        ENDIF


        ORG     0
ZERO    =       $
SRCXNAME        DB      DIRSTRLEN + 20 DUP (?)  ;g buffer for name translate
TRGXNAME        DB      DIRSTRLEN + 20 DUP (?)  ;g buffer for name translate
UCOMBUF         DB      COMBUFLEN+3 DUP(?)      ; Raw console buffer
COMBUF          DB      COMBUFLEN+3 DUP(?)      ; Cooked console buffer
USERDIR1        DB      DIRSTRLEN+3 DUP(?)      ; Storage for users current directory
EXECPATH        DB      COMBUFLEN+3 DUP(?)      ; Path for external command
RE_INSTR        DB      DIRSTRLEN+3+13 DUP (?)  ; path for input redirection
; VCB - Moved these to the transient portion of COMMAND.COM
RE_OUTSTR       DB      DIRSTRLEN+3+13 DUP (?)  ; path for output redirection
RE_OUT_APP      DB      0

; Variables passed up from resident
HEADCALL        LABEL   DWORD
                DW      ?
RESSEG          DW      ?
TPA             DW      ?
SWITCHAR        DB      ?
DIRCHAR         DB      ?
EXEC_ADDR       DD      ?
RCH_ADDR        DD      ?
; VCB - Delete unused variable
;fTest           DW      ?
TRAN_TPA        DW      ?

CHKDRV          DB      ?
RDEOF           LABEL   BYTE                    ; Misc flags
IFNOTFLAG       LABEL   BYTE
FILTYP          DB      ?
CURDRV          DB      ?
CONCAT          LABEL   BYTE
PARM1           DB      ?
ARGC            LABEL   BYTE
DELNOTVALID     DB      ?                       ; I002
PARM2           DB      ?
COMSW           DW      ?                       ; Switches between command and 1st arg
ARG1S           DW      ?                       ; Switches between 1st and 2nd arg
DESTSWITCH      LABEL   WORD
ARG2S           DW      ?                       ; Switches after 2nd arg
ALLSWITCH       LABEL   WORD
ARGTS           DW      ?                       ; ALL switches except for COMSW
CFLAG           DB      ?
DESTCLOSED      LABEL   BYTE
SPECDRV         DB      ?
BYTCNT          DW      ?                       ; Size of buffer between RES and TRANS
SAVBYTCNT       DW      ?
NXTADD          DW      ?
FRSTSRCH        DB      ?
LeftOnLine      DB      ?                       ; entries left on line u.b. DIR
PerLine         DB      ?                       ; entries/line u.b. DIR
LeftOnPage      DW      ?                       ; lines left on page u.b. DIR
FileCnt         DW      ?                       ; file count u.b. DIR
FileSiz         DD      ?                       ; file size u.b. DIR

;               Note:  keep FileCntTotal through csecUsedTotal together!

FileCntTotal    DD      ?                       ; total file count u.b. DIR
FileSizTotal    DD      ?                       ; total file size u.b. DIR

IF 0    ; Delete compression ratio code
ccluUsed        DW      ?                       ; count of DOS clusters used
ccluUsedDir     DW      ?
ccluUsedTotal   DW      ?
csecUsed        DD      ?                       ; count of comp sectors used
csecUsedDir     DD      ?
csecUsedTotal   DD      ?

;               Note:  keep FileCntTotal through csecUsedTotal together!

fhCVF           DW      ?                       ; Compressed Volume File handle
szCVF           DB      16 DUP (?)              ; "X:\\12345678.123\0"
MDBPB           MD_BPB  <>                      ; Extended MagicDrv BPB

csecPerCluster  DB      ?                       ; sectors/cluster for ratio calc
fUseHostSize    DB      ?                       ; NZ if using host cluster size

cFATEntries     DW      ?                       ; # FAT entries in buffers
entInBuf        DW      ?                       ; 1st entry # in FAT buffers
segFATBUF       DW      ?                       ; seg of DOS & MD FAT buffers
pbufDOSFAT      DW      ?                       ; off of DOS FAT buffer
pbufMDFAT       DW      ?                       ; off of MD FAT buffer
bufDOSFAT       DB      (cRES_FAT_ENTRIES * 2) DUP (?)  ; small DOS FAT buffer
bufMDFAT        DB      (cRES_FAT_ENTRIES * 4) DUP (?)  ; small MD FAT buffer
ENDIF

CHARBUF         DB      80 DUP (?)              ;line byte character buffer for xenix write
DESTFCB2        LABEL   BYTE
IDLEN           DB      ?
ID              DB      8 DUP(?)
COM             DB      3 DUP(?)
DEST            DB      37 DUP(?)
DESTNAME        DB      11 DUP(?)
DESTFCB         LABEL   BYTE
DESTDIR         DB      DIRSTRLEN DUP(?)        ; Directory for PATH searches
GOTOLEN         LABEL   WORD
BWDBUF          LABEL   BYTE
EXEFCB          LABEL   WORD
DIRBUF          DB      DIRSTRLEN+3 DUP(?)
SDIRBUF         DB      12 DUP(?)
BITS            DW      ?
PATHCNT         DW      ?
PATHPOS         DW      ?
PATHSW          DW      ?
AttrSpecified   db      ?                       ; attribute bits u.b. DIR
AttrSelect      db      ?                       ; attribute bits u.b. DIR
comma           db      0                       ;g flag set if +,, occurs
plus_comma      db      0                       ;g flag set if +,, occurs
dirflag         db      0                       ;AN015; set when pathcrunch called from DIR
parse_last      dw      0                       ;AN018; used to hold parsing position

system_cpage    DW      0                       ;AC001; used for CHCP variable



TypeFilSiz      label   dword                   ;stores size of file to be typed
file_size_low   dw      ?                       ;AC000;
file_size_high  dw      ?                       ;AC000;
string_ptr_2    dw      ?
;AD061;string_ptr_2_sb dw      ?
copy_Num        dw      ?
cpyflag         db      ?
Dir_Num         DW      ?
IF 0    ; Delete compression ratio code
Dir_CRatio_1    db      ?
Dir_CRatio_2    db      ?
ENDIF
bytes_free      dw      ?
                dw      ?
major_ver_num   dw      ?
minor_ver_num   dw      ?
one_char_val    db      ?,0
vol_drv         db      ?

IFDEF ROMEXEC

        PUBLIC  ExecFromROM
ExecFromROM     db      ?               ; flag for ROM executable commands

ENDIF ; ROMEXEC

IF  IBM_ROM_FIND
ROM_CALL        DB      ?                       ; flag for rom function
ROM_IP          DW      ?
ROM_CS          DW      ?
ENDIF

DESTVARS        LABEL   BYTE
DESTISDIR       DB      ?
DESTSIZ         DB      ?
DESTTAIL        DW      ?
DESTINFO        DB      ?
DESTBUF         DB      DIRSTRLEN + 20 DUP (?)
ENDDESTBUF      LABEL   BYTE

DESTHAND        DW      ?
DESTISDEV       DB      ?
FIRSTDEST       DB      ?
MELCOPY         DB      ?
MELSTART        DW      ?

SRCVARS         LABEL   BYTE
SRCISDIR        DB      ?
SRCSIZ          DB      ?
SRCTAIL         DW      ?
SRCINFO         DB      ?
SRCBUF          DB      DIRSTRLEN + 20 DUP (?)

SRCHAND         DW      ?
SRCISDEV        DB      ?

SCANBUF         DB      DIRSTRLEN + 20 DUP (?)

SRCPT           DW      ?
INEXACT         DB      ?
NOWRITE         DB      ?
BINARY          DB      ?
WRITTEN         DW      ?
TERMREAD        DB      ?
ASCII           DB      ?
PLUS            DB      ?
objcnt          db      ?               ; Used in copy
CPDATE          DW      ?
CPTIME          DW      ?

OFilePtr_Lo     DW      ?               ; original file ptr for COPY when
OFilePtr_Hi     DW      ?               ; 1st source is also destination
zflag           label   byte            ; Used by typefil to indicate ^Z's
OCtrlZ          DB      ?               ; original ctrl+Z for COPY when ditto

sublist1        db 11 dup (?)
check_overwrite db      ?
asked_overwrite db      ?
overwriting     db      ?

BATHAND         DW      ?               ; Batch handle
STARTEL         DW      ?
ELCNT           DB      ?
ELPOS           DB      ?
SKPDEL          DB      ?
SOURCE          DB      11 DUP(?)

ext_entered     db      0                       ;AN005;

display_ioctl   db      0                       ;AN000; info level
                db      0                       ;AN000; reserved
                dw      crt_ioctl_ln            ;AN000; length of data
                dw      ?                       ;AN000; control flags
display_mode    db      ?                       ;AN000; display mode, colors
                db      0                       ;AN000; reserved
                dw      ?                       ;AN023; colors
                dw      ?                       ;AN000; display width (PELS)
                dw      ?                       ;AN000; display length (PELS)
display_width   dw      ?                       ;AN000; display width
linperpag       dw      linesperpage            ;AN000; display length (default to linesperpage)

vol_ioctl_buf   label   byte                    ;AN000; buffer for ioctl volume label/serial call
                dw      0                       ;AN000; info level
vol_serial      dd      0                       ;AN000; volume serial number
vol_label       db      11 dup (" ")            ;AN000; volume label - init to blanks
                db      8  dup (" ")            ;AN000; file system type

expand_star     db      ?
msg_flag        db      ?                       ;AN022; flag set if non-utility message issued
msg_numb        dw      0                       ;AN022; set with extended error message issued
append_exec     db      0                       ;AN041; set if internal append executed
print_err_flag  dw      0                       ;AN000; flag set if error during sysdispmsg
subst_buffer    db      parm_block_size*2 dup (0);AN061;

;;;;    IFDEF   DBCS            3/3/KK
KPARSE          DB      ?
;;;;    ENDIF                   3/3/KK

; Data declarations taken out of parse.asm

arg     arg_unit        <>                      ; pointers, arg count, string buffer
argbufptr       DW      ?                       ; index for argv[].argpointer
arg_buf         label   byte
tpbuf           DB      128 DUP (?)             ; temporary buffer
LAST_ARG        DW      ?                       ; point at which to accumulate switch info
comptr          dw      ?                       ; ptr into combuf

; Data declarations taken out of path.asm
fbuf    find_buf        <>                      ; dma buffer for findfirst/findnext
pathinfo        DW      3 DUP (?)               ; ES, SI(old), and SI(new) of user path
psep_char       DB      ?                       ; '/' or '\'
search_best     DB      (?)                     ; best code, best filename so far
fname_max_len   equ     13
search_best_buf DB      fname_max_len DUP (?)
search_curdir_buf DB    64 DUP (?)              ; a place for CurDir info, if successful
search_error    DW      (?)                     ; address of error message to be printed

; Data declarations taken out of tbatch.asm
if_not_count    DW      ?

                DW      80H DUP(0)              ; Init to 0 to make sure the linker is not fooled
STACK           LABEL   WORD

INTERNATVARS    internat_block <>
                DB      (internat_block_max - ($ - INTERNATVARS)) DUP (?)

;               Buffer for DOS function 64h (Get extended country information)
;               subfunctions 2, 4, 6, or 7:

CountryPtrInfo  label   byte
CountryPtrId    db      ?
CountryPtr      dd      ?
                .erre   (($ - CountryPtrInfo) GE 5)

OldCtrlCHandler dd      ?                       ; previous int 23 vector


BatBufPos       DW      ?                       ; integer position in buffer of next byte
BatBuf          DB      BatLen DUP (?)
BatBufEnd       DW      ?

save_ax         dw      ?                                          ; D6209
save_bx         dw      ?                                          ; D6209
save_cx         dw      ?                                          ; D6209

; *****************************************************
; EMG 4.00
; DATA STARTING HERE WAS ADDED BY EMG FOR 4.00
; FOR IMPLEMENTATION OF COMMON PARSE ROUTINE
; *****************************************************
;
; COMMON PARSE OUTPUT BLOCKS
;


;
; Common output blocks for PARSE number, complex, or string values.
;

PARSE1_OUTPUT   LABEL   BYTE                    ;AN000;
PARSE1_TYPE     DB      0                       ;AN000;  type
PARSE1_CODE     DB      0                       ;AN000;  return value
PARSE1_SYN      DW      0                       ;AN000;  es offset of synonym
PARSE1_ADDR     DD      0                       ;AN000;  numeric value / address
                                                ;        of string value

;
;  Common output block for PARSE date strings.
;

DATE_OUTPUT     LABEL   BYTE                    ;AN000;
DATE_TYPE       DB      0                       ;AN000;  type
                DB      0                       ;AN000;  return value
                DW      0                       ;AN000;  es offset of synonym
DATE_YEAR       DW      0                       ;AN000;  year
DATE_MONTH      DB      0                       ;AN000;  month
DATE_DAY        DB      0                       ;AN000;  day

;
;  Common output block for PARSE time strings.
;

TIME_OUTPUT     LABEL   BYTE                    ;AN000;
TIME_TYPE       DB      0                       ;AN000;  type
                DB      0                       ;AN000;  return value
                DW      0                       ;AN000;  es offset of synonym
TIME_HOUR       DB      0                       ;AN000;  hour
TIME_MINUTES    DB      0                       ;AN000;  minutes
TIME_SECONDS    DB      0                       ;AN000;  seconds
TIME_FRACTION   DB      0                       ;AN000;  hundredths

;
;  Common output block for PARSE drive specifier (one based drive number).
;

DRIVE_OUTPUT    LABEL   BYTE                    ;AN000;
DRIVE_TYPE      DB      0                       ;AN000;  type
DRIVE_VALUE     DB      0                       ;AN000;  return value
                DW      0                       ;AN000;  es offset of synonym
DRIVE_NUMBER    DB      0                       ;AN000;  drive number
                DB      0,0,0                   ;AN000;  reserved

TRANSPACEEND    LABEL   BYTE

TRANSPACE       ENDS
        END
