·汇编源码--BRK
·汇编源码--CLOCK
·汇编源码--BURNOUT
·汇编源码--DOSSYM
·汇编源码--circle
·汇编源码--DEV
·汇编源码--getspace
·汇编源码--CLEAR
·汇编源码--col
·汇编源码--gameport
;COBLOAD.ASM 07/09/84 - DKeels
;----------------------------------------------------------------------------
;This program provides COBOL programs with accessto the program loader (LOAD)
;by passing parameters via the system parameter area (SYSPARM).
;
;Inputs:
;01 COBLOAD-PARMS
; 05 FILE-SPEC-1 PIC X(80). Contains complete drive, path and filename.
; 05 PARAMETER-1 PIC X(80). Contains command line parameters.
; 05 FILE-SPEC-2 PIC X(80). Same as 1.
; 05 PARAMETER-2 PIC X(80). Same as 1.
;
;Outputs:
; None.
;----------------------------------------------------------------------------
CL_CODE_SEGSEGMENT PUBLIC 'CODE'
ASSUMECS:CL_CODE_SEG,DS:CL_CODE_SEG,ES:CL_CODE_SEG
STACK_PARMSTRUC
PUSHED_SIDW?
PUSHED_DIDW?
PUSHED_DSDW?
PUSHED_ESDW?
PUSHED_BPDW?
RETURN_IPDW?
RETURN_CSDW?
PARM1_OFFSETDW?
PARM1_DSDW?
STACK_PARMENDS
PUBLICCOBLOAD;make known to COBOL at link time
COBLOADPROCFAR
;prologue
PUSHBP
PUSHES
PUSHDS
PUSHDI
PUSHSI
MOVBP,SP;set base for stack parm structure
;address caller's parameter block
MOVAX,[BP].PARM1_DS
MOVDS,AX;DS -> cobol data seg
MOVSI,[BP].PARM1_OFFSET;SI -> offset to parm block
;address load's parameter block in sysparm
MOVDX,'dk';verification switch
INT77H;get seg addr in AX
MOVES,AX;ES -> sysparm
MOVDI,0;DI -> offset to LOAD parms
;move cobol's parm block to load's parm block (in sysparm)
CLD;set direction for moves
MOVCX,80;length of move
REPMOVSB;move file spec 1
ASCIIZ1:MOVBYTE PTR ES:[DI],0;make asciiz string
DECDI
MOVAL,BYTE PTR ES:[DI]
CMPAL,' ';nullify trailing spaces
JEASCIIZ1
MOVBX,81;point to parm length byte
MOVBYTE PTR ES:[BX],82;init length of parm, + 2
MOVDI,82;point to 1st parm position
MOVCX,80;length of move
REPMOVSB;move parm
ADD_CR_1:MOVBYTE PTR ES:[DI],13;add carriage return
DECBYTE PTR ES:[BX];sub 1 from length of parm
DECDI
MOVAL,BYTE PTR ES:[DI]
CMPAL,' ';put cr in trailing spaces
JEADD_CR_1
MOVDI,163
MOVCX,80;length of move
REPMOVSB;move file spec 2
ASCIIZ2:MOVBYTE PTR ES:[DI],0;make asciiz string
DECDI
MOVAL,BYTE PTR ES:[DI]
CMPAL,' ';nullify trailing spaces
JEASCIIZ2
MOVBX,244;point to parm length byte
MOVBYTE PTR ES:[BX],82;init length of parm, + 2
MOVDI,245;point to 1st parm position
MOVCX,80;length of move
REPMOVSB;move parm
ADD_CR_2:MOVBYTE PTR ES:[DI],13;add carriage return
DECBYTE PTR ES:[BX];sub 1 from length of parm
DECDI
MOVAL,BYTE PTR ES:[DI]
CMPAL,' ';put cr in trailing spaces
JEADD_CR_2
;return to caller
POPSI
POPDI
POPDS
POPES
POPBP
RET4
COBLOADENDP
CL_CODE_SEGENDS
END
进入讨论组讨论。