PAGE 62,132 ; CODE SEGMENT PUBLIC 'CODE' ASSUME CS:CODE,DS:CODE,ES:CODE ; INCLUDE ENVIRON.ASM MARKER: ; ; FOLLOWING SEQUENCE OCCURS AT START OF THENODE CODE SEGMENT ; RET DB 'BPQ' ; FOR DUMP SYSTEM LOGNAME DB DUMPNAME,0 HANDLE DW 0 NOTFOUNDMSG DB 'SWITCH CODE NOT FOUND$' PARAM DB 0 START: MOV AL,DS:[5DH] ; PARAM MOV CS:PARAM,AL MOV AX,CODE MOV DS,AX MOV ES,AX CLI MOV SS,AX MOV SP,OFFSET STACK+256 STI ; MOV DX,OFFSET LOGNAME MOV CX,0 MOV AH,3CH INT 21H MOV HANDLE,AX ; ; CHECK ALL INTS ; ASSUME DS:NOTHING MOV BX,0 CHECKLOOP: CALL CHECKIT JE CODEFOUND ADD BX,4 CMP BX,400H JB CHECKLOOP PUSH CS POP DS MOV DX,OFFSET NOTFOUNDMSG MOV AH,9 INT 21H JMP CLOSE ; GIVE UP CODEFOUND: ; ; IF NO PARAM, DUMP NOW, ELSE WAIT TILL BUFFERS < 21 ; PUSH DS MOV AX,[SI] ; DATA SEG MOV DI,5DH CMP BYTE PTR PARAM,20H JE DUMPNOW ; MOV DI,2[SI] ; QCOUNT OFFSET MOV DS,AX DUMPWAIT: CMP BYTE PTR [DI],21 JB DUMPNOW PUSH AX MOV AX,1000H INT 15H ; DESQVIEW RELEASE TIMESLICE POP AX JMP DUMPWAIT DUMPNOW: POP DS PUSH AX MOV DX,0 MOV CX,32768 MOV AH,40H ; WRITE MOV BX,HANDLE INT 21H POP DS ; DS MOV DX,0 MOV CX,32768 MOV AH,40H ; WRITE MOV BX,HANDLE INT 21H PUSH DS POP AX ADD AX,800H ; NEXT 32K MOV DS,AX MOV DX,0 MOV CX,32768 MOV AH,40H ; WRITE MOV BX,HANDLE INT 21H CLOSE: MOV BX,HANDLE MOV AH,3EH INT 21H ; CLOSE LOG FILE ; MOV AX,4C00H INT 21H CHECKIT: MOV AX,0 MOV DS,AX MOV AX,2[BX] ; CODE SEGMENT MOV DS,AX MOV SI,0 MOV DI,OFFSET MARKER MOV CX,4 REP CMPSB RET STACK DB 256 DUP (0) ; CODE ENDS ; END START