216 lines
6.6 KiB
NASM
216 lines
6.6 KiB
NASM
TITLE COMMAND Resident DATA
|
||
|
||
INCLUDE COMSW.ASM
|
||
.xlist
|
||
.xcref
|
||
INCLUDE COMSEG.ASM
|
||
.list
|
||
.cref
|
||
|
||
INCLUDE IFEQU.ASM
|
||
|
||
CODERES SEGMENT PUBLIC
|
||
EXTRN THEADFIX:NEAR,EXT_EXEC:NEAR,TREMCHECK:NEAR
|
||
CODERES ENDS
|
||
|
||
TRANCODE SEGMENT PUBLIC
|
||
EXTRN COMMAND:NEAR
|
||
TRANCODE ENDS
|
||
|
||
ZEXEC_CODE SEGMENT PUBLIC
|
||
IF IBMVER
|
||
EXTRN $EXEC:NEAR
|
||
ENDIF
|
||
ZEXEC_CODE ENDS
|
||
|
||
|
||
; Data for resident portion
|
||
|
||
DATARES SEGMENT PUBLIC BYTE
|
||
|
||
PUBLIC MESBAS,MESADD,MREAD,MWRITE,ERRMES,IOTYP,DRVNUM,DRVLET,NEWLIN
|
||
PUBLIC DEVEMES,DEVENAM,REQUEST,CDEVAT,BADFAT,COMBAD,NEEDCOM,DRVMSG
|
||
PUBLIC COMLET,DEFMSG,PROMPT,ENDBATMES,EXECEMES,EXEBAD,TOOBIG,NOCOM
|
||
PUBLIC NOHANDMES,BMEMMES,HALTMES,FRETMES,RBADNAM,INT_2E_RET,SAVE_PDB
|
||
PUBLIC PARENT,ERRCD_24,HANDLE01,LOADING,BATCH,BATLOC,COMSPEC,TRANS
|
||
PUBLIC TRNSEG,COMDRV,BATBYT,MEMSIZ,SUM,EXTCOM,RETCODE,ECHOFLAG
|
||
PUBLIC IO_SAVE,RESTDIR,PERMCOM,SINGLECOM,VERVAL,FORFLAG,UFORDRV
|
||
PUBLIC FORSET,FORCOM,FORVAR,FORPTR,FORUFCB,FORFCB,RE_INSTR,RE_OUT_APP
|
||
PUBLIC RE_OUTSTR,PIPEFLAG,PIPEFILES,PIPEPTR,PIPESTR,PIPE1,PIPE2
|
||
PUBLIC INPIPEPTR,OUTPIPEPTR,EXEC_BLOCK,ENVIRSEG,COM_PTR,COM_FCB1
|
||
PUBLIC COM_FCB2,PARMBUF,TRANVARS,MYSEG,LTPA,RSWITCHAR,RDIRCHAR
|
||
PUBLIC MYSEG1,MYSEG2
|
||
PUBLIC DATARESEND
|
||
|
||
IF IBMVER
|
||
PUBLIC SYS_CALL,ZEXEC,EXESEG,USER_SP,USER_SS,EXESUM
|
||
ENDIF
|
||
|
||
ORG 0
|
||
ZERO = $
|
||
MESBAS DW OFFSET RESGROUP:ERR0
|
||
DW OFFSET RESGROUP:ERR1
|
||
DW OFFSET RESGROUP:ERR2
|
||
DW OFFSET RESGROUP:ERR3
|
||
DW OFFSET RESGROUP:ERR4
|
||
DW OFFSET RESGROUP:ERR5
|
||
DW OFFSET RESGROUP:ERR6
|
||
DW OFFSET RESGROUP:ERR7
|
||
DW OFFSET RESGROUP:ERR8
|
||
DW OFFSET RESGROUP:ERR9
|
||
DW OFFSET RESGROUP:ERR10
|
||
DW OFFSET RESGROUP:ERR11
|
||
DW OFFSET RESGROUP:ERR12
|
||
|
||
MESADD DW OFFSET RESGROUP:NEWLIN ;"0"
|
||
DW OFFSET RESGROUP:COM$1 ;"1"
|
||
DW OFFSET RESGROUP:ERR3 ;"2"
|
||
DW OFFSET RESGROUP:ALLOC$3 ;"3"
|
||
DW OFFSET RESGROUP:FILE$4 ;"4"
|
||
DW OFFSET RESGROUP:RROR$5 ;"5"
|
||
DW OFFSET RESGROUP:CAN$6 ;"6"
|
||
DW OFFSET RESGROUP:EMORY$7 ;"7"
|
||
DW OFFSET RESGROUP:BAT$8 ;"8"
|
||
DW OFFSET RESGROUP:INS$9 ;"9"
|
||
|
||
ERR0 DB "Write protec","t"+80h
|
||
ERR1 DB "Bad uni","t"+80h
|
||
ERR2 DB "Not read","y"+80h
|
||
ERR3 DB "Bad command"," "+80h
|
||
ERR4 DB "Dat","a"+80h
|
||
ERR5 DB "Bad call forma","t"+80h
|
||
ERR6 DB "See","k"+80h
|
||
ERR7 DB "Non-DOS dis","k"+80h
|
||
ERR8 DB "Sector not foun","d"+80h
|
||
ERR9 DB "No pape","r"+80h
|
||
ERR10 DB "Write faul","t"+80h
|
||
ERR11 DB "Read faul","t"+80h
|
||
ERR12 DB "Dis","k"+80h
|
||
MREAD DB "read"
|
||
MWRITE DB "writ"
|
||
ERRMES DB " e5"
|
||
IOTYP DB "writin","g"+80h
|
||
DRVNUM DB " drive "
|
||
DRVLET DB "A"
|
||
NEWLIN DB 13,10+80h
|
||
DEVEMES DB " device "
|
||
DEVENAM DB 8 DUP (?)
|
||
DB 13,10,"$" ;Must be $ terminated
|
||
COM$1 DB " COMMAN","D"+80h
|
||
ALLOC$3 DB " allocation"," "+80h
|
||
FILE$4 DB " file"," "+80h
|
||
RROR$5 DB "rror"," "+80h
|
||
CAN$6 DB "Cannot"," "+80h
|
||
EMORY$7 DB "emor","y"+80h
|
||
BAT$8 DB " batc","h"+80h
|
||
INS$9 DB "Inser","t"+80h
|
||
REQUEST DB "Abort, Retry, Ignore?"," "+80h
|
||
CDEVAT DB ?
|
||
BADFAT DB "0File3table bad",","+80h
|
||
COMBAD DB "0Invalid1.COM"
|
||
NEEDCOM DB "091.COM disk in"," "+80h
|
||
DRVMSG DB "drive "
|
||
COMLET DB "A"," "+80h
|
||
DEFMSG DB "default driv","e"+80h
|
||
PROMPT DB "0and strike any key when ready","0"+80h
|
||
ENDBATMES DB "0Terminate8 job (Y/N)?"," "+80h
|
||
EXECEMES DB "EXEC failure","0"+80h
|
||
EXEBAD DB "E5in EXE4","0"+80h
|
||
TOOBIG DB "Program too big to fit in m7","0"+80h
|
||
NOCOM DB "0Bad or missing Command Interprete","r"+80H
|
||
NOHANDMES DB "0No free4handle","s"+80h
|
||
BMEMMES DB "0M73e","5"+80h
|
||
HALTMES DB "06load1, system halte","d"+80h
|
||
FRETMES DB "06start1, exiting","0"+80h
|
||
RBADNAM DB "2or4name","0"+80h
|
||
|
||
INT_2E_RET DD ? ; Magic command executer return address
|
||
SAVE_PDB DW ?
|
||
PARENT DW ?
|
||
ERRCD_24 DW ?
|
||
HANDLE01 DW ?
|
||
LOADING DB 0
|
||
BATCH DW 0 ; Assume no batch mode initially
|
||
BATLOC DD 0 ; Position in batch file
|
||
COMSPEC DB 40 DUP(0)
|
||
TRANS DW OFFSET TRANGROUP:COMMAND
|
||
TRNSEG DW ?
|
||
COMDRV DB ? ; DRIVE SPEC TO LOAD AUTOEXEC AND COMMAND
|
||
BATBYT DB ?
|
||
MEMSIZ DW ?
|
||
SUM DW ?
|
||
EXTCOM DB 1 ; For init, pretend just did an external
|
||
RETCODE DW ?
|
||
ECHOFLAG DB 1
|
||
IO_SAVE DW ?
|
||
RESTDIR DB 0
|
||
PERMCOM DB 0
|
||
SINGLECOM DW 0
|
||
VERVAL DW -1
|
||
|
||
FORFLAG DB ?
|
||
UFORDRV DB 0
|
||
FORSET DB 40 DUP (?)
|
||
FORCOM DB 90 DUP (?)
|
||
FORVAR DB ?
|
||
FORPTR DW ?
|
||
FORUFCB DB -1
|
||
FORFCB DB 0
|
||
DB 34 DUP(?)
|
||
DW 0
|
||
DW 0 ; Initialize RR field to zero
|
||
|
||
RE_INSTR DB 40 DUP(0)
|
||
RE_OUT_APP DB 0
|
||
RE_OUTSTR DB 40 DUP(0)
|
||
|
||
;These two bytes refed as a word
|
||
PIPEFLAG DB 0
|
||
PIPEFILES DB 0
|
||
|
||
PIPEPTR DW ?
|
||
PIPESTR DB 129 DUP(?)
|
||
PIPE1 DB "_:/%PIPE1.$$$",0
|
||
PIPE2 DB "_:/%PIPE2.$$$",0
|
||
INPIPEPTR DW OFFSET RESGROUP:PIPE1
|
||
OUTPIPEPTR DW OFFSET RESGROUP:PIPE2
|
||
|
||
EXEC_BLOCK LABEL BYTE ; The data block for EXEC calls
|
||
ENVIRSEG DW ?
|
||
COM_PTR LABEL DWORD
|
||
DW 80H ; Point at unformatted parameters
|
||
DW ?
|
||
COM_FCB1 LABEL DWORD
|
||
DW 5CH
|
||
DW ?
|
||
COM_FCB2 LABEL DWORD
|
||
DW 6CH
|
||
DW ?
|
||
|
||
PARMBUF DB 129 DUP (?)
|
||
|
||
IF IBMVER
|
||
SYS_CALL DD ?
|
||
ZEXEC DW OFFSET ZEXEC_CODE:$EXEC
|
||
EXESEG DW ?
|
||
USER_SP DW ?
|
||
USER_SS DW ?
|
||
EXESUM DW ?
|
||
ENDIF
|
||
|
||
TRANVARS LABEL BYTE ; Variables passed to transient
|
||
DW OFFSET RESGROUP:THEADFIX
|
||
MYSEG DW 0 ; Put our own segment here
|
||
LTPA DW 0 ; WILL STORE TPA SEGMENT HERE
|
||
RSWITCHAR DB "-"
|
||
RDIRCHAR DB "/"
|
||
DW OFFSET RESGROUP:EXT_EXEC
|
||
MYSEG1 DW ?
|
||
DW OFFSET RESGROUP:TREMCHECK
|
||
MYSEG2 DW 0
|
||
|
||
DATARESEND LABEL BYTE
|
||
|
||
DATARES ENDS
|
||
END
|
||
|