home *** CD-ROM | disk | FTP | other *** search
- PAGE 59,132
- TITLE ASMGEN - An 8086/8087/8088 disassembler
- ;==========================================================================
- ;== ==
- ;== ASMGEN ==
- ;== ==
- ;== Created: 3-Jun-85 ==
- ;== Passes: 5 Analysis Flags on: HIK ==
- ;== ==
- ;==========================================================================
- ; This disassembly and code revision of ASMGEN was performed by:
- ; James E.Galbraith
- ; 1201 Chase St.
- ; Novato, CA 94945
- ;
- ; This source code was generated from the public domain program ASMGEN.COM,
- ; version 2.01, by using the disassembler program SOURCER. The disassembly
- ; of ASMGEN, using ASMGEN as the disassembler, was used for reference. Two
- ; different disassembler programs were used because they use entirely
- ; different strategies, and have somewhat complementary strengths and
- ; weaknesses. Numerous iterations were required before a good disassembly
- ; was accomplished. The phrase "good disassembly" means regenerated source
- ; code that can be altered, and then be reassembled to properly executable
- ; code. The simplest test for a good disassembly is to insert a NOP
- ; instruction at the beginning of the program or between any arbitrary
- ; pair of instructions and then reassemble it. If the program runs the
- ; same as before, then the test may have passed. Until such a "good
- ; disassembly" has been achieved, there must be no changes to any of the
- ; address relationships in the program. The main problems, which must be
- ; resolved manually, are usually with immediate operand data values vs.
- ; address offsets, and embedded address difference relationships.
- ;
- ; I got this program as a public domain program, and am releasing my
- ; modified version back into public domain. The only operational changes
- ; that I made were to make it conform more closely to the description in
- ; the ASMGEN.DOC file. Program code changes were made to remove "hacker"
- ; type self-modifying code and to make it easier for someone else to
- ; disassemble it in the future. I have included the original version,
- ; along with ASMGEN.SEQ, as an example of an ASMGEN disassembly.
- ;
- ;==========================================================================
- ;
- ; Changes made for Version 3.00.
- ;
- ; There are a number of changes that have been made to this program for
- ; version 3.00. These changes are in two classes - fixing bugs and cleaning
- ; up bad code. This includes what I consider particularly bad "8080 hacker"
- ; style code. Additionally, ASCII string messages have been placed in the
- ; program code to indicate the location and nature of "points of interest"
- ; for future disassembly. Addresses listed are from the disassembled
- ; version 2.01. Specific program changes are commented below.
- ;
- ; 1.) The term "smoking gun" comes from its use to describe particularly
- ; damaging evidence in a court trial. It is used here to describe
- ; particularly bad coding that would never have been written without
- ; hostile intent. The most flagrent example (the "smoking gun") involves
- ; mucking around with the JMP instruction offset byte at address 0943 by
- ; various instructions. The six instructions (at 02FF, 0377, 034A, 0358,
- ; 03D5, and 03FD) treat the offset byte with disrespect that is completely
- ; inappropriate to a jump offset byte. The instruction at 03D5 is a
- ; DECrement instruction, an operation which is a totally incompatible with
- ; a JMP instruction offset byte in a variable byte length instruction set.
- ; These instructions have now been assigned their own byte variable, named
- ; SMOKING_GUN_0944.
- ;
- ; 2.) The altered immediate operand data values have been reassigned as
- ; conventional bytes or words (as appropriate). They are initiallized to
- ; the value that was originally contained in the immediate operand.
- ;
- ; 3.) Altered instruction op-codes have been replaced by the use of flag
- ; bytes and conditional operations. Such altered op-codes should have died
- ; with the 8080.
- ;
- ; 4.) A number of TEST (AX,immediate operand) instructions were used to skip
- ; over the operand word. The operand word was, itself, executable code and
- ; the destination of subroutine CALLs. All such TEST instructions have been
- ; replaced by JMP SHORT instructions. This is a "cute trick" that saves one
- ; byte of code, but makes the intent of the code more obscure until its
- ; function is deciphered. If it weren't for the "smoking gun" item, above,
- ; this could be considered just 8080 style hacker code.
- ;
- ; 5.) The assembler directive 'PAGE 58,132' is added just preceding 'TITLE'.
- ;
- ; 6.) PATCH83 MACRO has been altered to allow using it correctly with the
- ; /H switch. An 'H' is added to the '81' op-code byte.
- ;
- ; 7.) PATCH83 MACRO has been altered to allow it to accomodate negative
- ; numbers.
- ;
- ; 8.) The program code has been corrected to make PATCH83 work correctly. In
- ; version 2.01 the tests were implemented incorrectly. The function of PATCH83
- ; is based on an optimization trick allowed with the 8086/88 instruction set.
- ; An arithmetic or logical instruction that operates on a 16-bit register
- ; (other than AX) with an immediate operand, that can be expressed as a sign
- ; extended 8-bit value, has a shorter alternative instruction form. This
- ; optimization is used with MASM 5.0 and 5.1, but not with earlier versions.
- ; Op-code 81H is for the 4-byte long form, 83H is for the 3-byte short form.
- ; PATCH83 is used to force later versions of MASM to generate the longer form
- ; so that the program can be reassembled to its original executable code.
- ; Until data value vs address offset issues are resolved, it is absolutely
- ; essential that code relationships not be altered.
- ;
- ;-----------------------------------------------------------------------
- ; This is the corrected PATCH83 MACRO definition (see symbol MAC_PATCH83).
- ; This source code file (ASMGEN3) has been edited to include the three
- ; occurences of "PATCH83" that (should) be generated when it is disassembled
- ; using ASMGEN.COM. These are the same ones that occur in ASMGEN version
- ; 2.01, although it completely misses the third instance of PATCH83 (at offset
- ; 14BC in version 2.01). This has been done for the benefit of future users
- ; of ASMGEN, when they try to disassemble ASMGEN. It also makes it easier
- ; to reassemble using earlier versions of Microsoft MASM than 5.0.
- PATCH83 MACRO X
- ORG $-3
- DB 81H
- ORG $+2
- DB X
- ENDM
- ;==========================================================================
- ;
- ; Changes made for Version 3.01.
- ;
- ; 9.) The immediate operand value 0FFFF now has an 'H' suffix. This means
- ; that if the /H switch is set, it is no longer necessary to search for each
- ; occurence to add an 'H'. ASMGEN.COM version 2.01 can now be disassembled
- ; with the /H switch set, and then reassembled with no severe errors. There
- ; are 116 warning errors, but that is merely MASM's commentary on the quality
- ; of the version 2.01 code.
- ;
- ; 10.) The 'D' command now works correctly when the /H switch is set.
- ;
- ; 11.) INT 20H program termination was replaced with INT 21H Function 4CH,
- ; except when running under DOS versions below 2.00, INT 21H Function 0.
- ;
- ;=======================================================================
- ;Program Segment Prefix (PSP) -- address allocation (either .COM or .EXE)
- ; 0000H, 2-byte = op-code INT 20H, return to DOS (an artifact of CPM)
- ; 0002H, 1-word = Segment, end of allocation block
- ; 0004H, 1-byte = Resreved for DOS
- ; 0005H, = long call to MS-DOS function dispatcher
- ; 000AH, DWord = prev. contents of termination interrupt vector, INT 22H
- ; 000EH, DWord = prev. contents of Ctrl-C handler interrupt vector, INT 23H
- ; 0012H, DWord = prev. contents of critical-error handler vector, INT 24H
- ; 0016H, 22-byte = Reserved for DOS
- ; 002CH, 1-word = Segment address of environment block
- ; 002EH, -byte = Reserved for DOS
- ; 005CH, 16-byte = default FCB #1
- ; 006CH, 16-byte = default FCB #2 (overlaid if FCB #1 opened)
- ; 0080H, 128-byte = default Disk Transfer Area (buffer)
- ; 0080H, 1-byte = number of bytes transferred in command tail
- ; 0081H, 127-byte = command tail buffer area
- ;-----------------------------------------------------------------------
- ;Program Header for a .EXE file.
- ; 0000H, 1-byte = 4DH -- First part of .EXE file signature
- ; 0001H, 1-byte = 5AH -- Second part of .EXE file signature
- ; 0002H, 1-word = Length of file MOD 512
- ; 0004H, 1-word = Size of file in 512-byte pages, including header
- ; 0006H, 1-word = Number of relocation table items
- ; 0008H, 1-word = Size of header in paragraphs (16-byte units)
- ; 000AH, 1-word = Minimum number of paragraphs needed above program
- ; 000CH, 1-word = Maximum number of paragraphs desired above program
- ; 000EH, 1-word = Segment displacement of stack module
- ; 0010H, 1-word = Contents of Stack Pointer at entry
- ; 0012H, 1-word = Word checksum
- ; 0014H, 1-word = Contents of IP register at entry (Program Counter)
- ; 0016H, 1-word = Segment displacement of code module
- ; 0018H, 1-word = Offset of first relocation item in program
- ; 001AH, 1-byte = Overlay number (0 for resident part of program)
- ; 001BH, variable reserved space
- ;[0018] Relocation table
- ;[0006] variable reserved space (padding for 256-byte alignment)
- ;[0008] Data segment(s)
- ;[0014] Program segment(s), [0016:0014] is IP at program entry
- ;[001E] Stack Segment
- ;-----------------------------------------------------------------------
- ;Normal File Control Block (FCB), total length is 37 bytes
- ; 00H, 1-byte = Drive Identification (not 0FFH)
- ; +01H, 8-byte = Filename (8-characters, padded with spaces)
- ; +09H, 3-byte = Extension (3-characters, padded with spaces)
- ; +0CH, 1-word = Current Block Number
- ; +0EH, 1-word = Record size
- ; +10H, 4-byte = FIle size (in bytes)
- ; +14H, 1-word = Date created/last updated
- ; +16H, 1-word = Time created/last updated
- ; +18H, 8-byte = Reserved for DOS
- ; +20H, 1-byte = Current record number
- ; +21H, 4-byte = Random Record Number
- ;-----------------------------------------------------------------------
- ;Extended File Control Block (FCB), total length is 44 bytes
- ; 00H, 1-byte = 0FFH
- ; +01H, 5-byte = Reserved (must be zeros)
- ; +06H, 1-byte = Attribute byte
- ; +07H, 1-byte = Drive Identification
- ; +08H, 8-byte = Filename (8-characters, padded with spaces)
- ; +10H, 3-byte = Extension (3-characters, padded with spaces)
- ; +13H, 1-word = Current Block Number
- ; +15H, 1-word = Record size
- ; +17H, 4-byte = FIle size (in bytes)
- ; +1BH, 1-word = Date created/last updated
- ; +1DH, 1-word = Time created/last updated
- ; +1FH, 8-byte = Reserved for DOS
- ; +27H, 1-byte = Current record number
- ; +28H, 4-byte = Random Record Number
- ;=======================================================================
-
- DATA_0002_E EQU 2 ; (=0)
- ;ALTR_W_03A6+1 EQU 3A7H ; (72B5:703A7=0)
- ;ALTR_OPB_064A+0 EQU 64AH ; (72B5:064A=0C3H)
- ;ALTR_W_0802+1 EQU 803H ; (72B5:0803=0)
- ;ALTR_W_08E3+1 EQU 8E4H ; (72B5:08E4=0)
- ;ALTR_J_B_0943+1 EQU 944H ; (72B5:0944=0AH)
- ;ALTR_W_0945+1 EQU 946H ; (72B5:0946=0)
- ;ALTR_W_09A0+1 EQU 9A1H ; (72B5:09A1=0)
- ;ALTR_W_09E2+1 EQU 9E3H ; (72B5:09E3=0FFFFH)
- ;ALTR_B_0A0E+2 EQU 0A10H ; (72B5:0A10=40H)
- ;ALTR_W_0A47+1 EQU 0A48H ; (72B5:0A48=10H)
- ;ALTR_W_0B2B+1 EQU 0B2CH ; (72B5:0B2C=0)
- ;ALTR_W_0D37+1 EQU 0D38H ; (72B5:0D38=0)
- ;ALTR_B_0EF8+1 EQU 0EF9H ; (72B5:0EF9=0)
- ;ALTR_B_0F47+1 EQU 0F48H ; (72B5:0F48=0)
- ;ALTR_B_0FBA+1 EQU 0FBBH ; (72B5:0FBB=0)
- ;ALTR_J_B_1081+1 EQU 1082H ; (72B5:1082=24H)
- ;ALTR_B_10AA+1 EQU 10ABH ; (72B5:10AB=0)
- ;ALTR_B_10B6+1 EQU 10B7H ; (72B5:10B7=0)
- ;ALTR_W_10BC+2 EQU 10BEH ; (72B5:10BE=8888H)
- ;ALTR_W_1123+1 EQU 1124H ; (72B5:1124=0)
- ;ALTR_W_1222+1 EQU 1223H ; (72B5:1223=0)
- ;ALTR_OPW_1965+0 EQU 1965H ; (72B5:1965=0CAFEH)
- ;ALTR_W_1AC9+1 EQU 1ACAH ; (72B5:1ACA=0)
- ;DATA_2E9E_E EQU 2E9EH ; (=0)
-
- ;DATA_2E9E_E EQU OFFSET LAST_BYTE+19FH
- DATA_2E9E_E EQU OFFSET DTA4_2C9E+512
-
- CR EQU 0DH
- LF EQU 0AH
-
- ;=======================================================================
-
- SEG_A SEGMENT
- ASSUME CS:SEG_A, DS:SEG_A
-
- ORG 100h
- ;=======================================================================
-
- ASMGEN PROC FAR
-
- START:
- JMP SHORT BEGIN
- ;==========================================================================
-
- DB ' ASMGEN',7,1AH ;name, beep, ctrl-Z (EOF)
- OLD_W_03A7 DW 0
- OLD_RET_NOP_064A DB 0 ;00=RETN, 0FFH=NOP (execute following code)
- OLD_W_0803 DW 0
- OLD_W_08E4 DW 0
- SMOKING_GUN_0944 DB 0 ;was altereed byte at 0944
- OLD_JUMP_0944 DB 0 ;00=jump, 0FFH=no jump
- OLD_W_0946 DW 0 ;(immediate) operand word/(byte?)
- OLD_W_09A1 DW 0
- OLD_W_09E3 DW 0FFFFH
- OLD_B_0A10 DB 040H
- OLD_W_0A48 DW 0010H
- OLD_W_0B2C DW 0
- OLD_W_0D38 DW 0
- OLD_B_0EF9 DB 0
- OLD_B_0F48 DB 0
- OLD_B_0FBB DB 0
- OLD_JUMP_1082 DB 0 ;00=jump, 0FFH=no jump
- OLD_B_10AB DB 0
- OLD_B_10B7 DB 0
- OLD_W_10BE DW 8888H
- OLD_W_1124 DW 0
- OLD_W_1223 DW 0
- OLD_DEC_1965 DB 1 ;01=decrement, 00=test for zero
- OLD_W_1ACA DW 0
-
- ;==========================================================================
-
- ;**DAT_02B9 DB 0
- SEQ_FILE_CMDS DB 0 ;(14 bytes in table)
- DB '/' ; .SEQ switch character
- DB 'I' ; set Initial value for IP
- DB 'A' ; Assume directive
- DB 'X' ; repeat structure
- DB 0, 0
- DB 'D' ; data operand (not label) (resume as code)
- DB '#' ; defined length string
- DB '$' ; defined length string
- DB 'S' ; disassemble as ASCII string of characters
- DB 'W' ; disassemble as data words or labels
- DB 'B' ; disassemble as data bytes
- DB 'C' ; disassemble as code
-
- ;**DATA_02C7 DB 'MHBTFLERO'
- ; SEQ_SW_BYTES, indexed switch characters
- SEQ_FILE_SWITCH DB 'M' ; Suppress MACRO library
- DB 'H' ; Append hex 'H'
- DB 'B' ; Generate byte references
- DB 'T' ; Control trace output
- DB 'F' ; 8087 mnemonics
- DB 'L' ; Generate label or number
- DB 'E' ; Embedded references in ASM file
- DB 'R' ; Control TBL output
- DB 'O' ; Control ASM output
-
- ;==========================================================================
-
- EXIT_CODE DB 00, 4CH ; DOS EXIT function code
-
- ;==========================================================================
- ; Program Code Starts
- ;==========================================================================
-
- BEGIN: CLD ; Clear direction
- MOV SP,OFFSET START
-
- MOV AH,30H
- INT 21H ; get DOS version number
- CMP AL,2
- JAE DOS_2_UP
- MOV EXIT_CODE+1,0
- DOS_2_UP:
- MOV AX,DS:DATA_0002_E ; (=0)
- MOV BX,CS
- SUB AX,BX
- TEST AH,0F0H
- JZ LOC_0115
- MOV AX,0FFFFH
- JMP SHORT LOC_0119
- LOC_0115:
- MOV CL,4
- SHL AX,CL ; Shift w/zeros fill
- LOC_0119:
- MOV DATA_2883,AX ; (=0)
- SUB AX,DATA_2E9E_E ; (=0)
- JC LOC_0126
- CMP AX,100H
- JAE LOC_012C
- LOC_0126:
- MOV DX,OFFSET MS_INSUFF_MEM ; (72B5:27D9=49H)
- JMP LOC_0214
- LOC_012C:
- MOV DX,OFFSET INT_23H_ENTRY
- MOV AX,2523H
- INT 21H ; DOS Services ah=function 25h
- ; set intrpt vector al to ds:dx
- MOV SI,81H ; command tail in PSP
- CALL SCAN_SPTAB_0E3F
- JNZ LOC_013F
- JMP LOC_0204
- LOC_013F:
- CALL SUB_056C
- CALL SCAN_SPTAB_0E3F
- JNZ LOC_014F
- LOC_0147:
- MOV BYTE PTR FCB4_NAME_2A35,20H ; (72B5:2A35=0AH) ' '
- JMP LOC_0269
- LOC_014F:
- CMP AL,3BH ; ';'
- JE LOC_0147
- CALL SUB_0E37
- MOV DI,OFFSET FCB1_291C ;
- MOV AX,2904H
- INT 21H ; DOS Services ah=function 29h
- ; parse filenam @ds:si FCBes:di
- CMP BYTE PTR FCB1_NAME_291D,20H ; (72B5:291D=20H) ' '
- JNE LOC_017D
- PUSH SI
- MOV SI,OFFSET FCB3_2A0F ; (72B5:2A0F=61H)
- MOV DI,OFFSET FCB1_291C ; (72B5:291C=0)
- MOV CX,9
- REP MOVSB ; Rep when cx >0 Mov [si] to es:[di]
- MOV SI,OFFSET MS_ASM_2764 ; (72B5:2764=41H)
- MOV DI,OFFSET FCB1_EXT_2925 ; (72B5:2925=20H)
- MOV CX,3
- REP MOVSB ; Rep when cx >0 Mov [si] to es:[di]
- POP SI
- LOC_017D:
- CALL SCAN_SPTAB_0E3F
- JZ LOC_01BD
- CMP AL,3BH ; ';'
- JE LOC_01B9
- CALL SUB_0E37
- MOV DI,OFFSET FCB2_2942 ; (72B5:2942=0)
- MOV AX,2904H
- INT 21H ; DOS Services ah=function 29h
- ; parse filenam @ds:si FCBes:di
- CMP BYTE PTR FCB2_NAME_2943,20H ; (72B5:2943=20H) ' '
- JNE LOC_01B0
- PUSH SI
- MOV SI,OFFSET FCB3_2A0F ; (72B5:2A0F=61H)
- MOV DI,OFFSET FCB2_2942 ; (72B5:2942=0)
- MOV CX,9
- REP MOVSB ; Rep when cx >0 Mov [si] to es:[di]
- MOV SI,OFFSET MS_TBL_276E ; (72B5:276E=54H)
- MOV DI,OFFSET FCB2_EXT_294B ; (72B5:294B=20H)
- MOV CX,3
- REP MOVSB ; Rep when cx >0 Mov [si] to es:[di]
- POP SI
- LOC_01B0:
- CALL SCAN_SPTAB_0E3F
- JZ LOC_01BD
- CMP AL,3BH ; ';'
- JNE LOC_0211
- LOC_01B9:
- DEC DATA_286F ; (=0)
- LOC_01BD:
- MOV SI,OFFSET FCB1_NAME_291D ; (72B5:291D=20H)
- MOV DI,OFFSET MS_NUL_2767 ; (72B5:2767=4EH)
- MOV CX,4
- REPE CMPSB ; Rep zf=1+cx >0 Cmp [si] to es:[di]
- JNZ LOC_01D1
- CMP BYTE PTR FCB1_FILSZ_292C,20H ; (72B5:292C=20H) ' '
- JE LOC_01EB
- LOC_01D1:
- CMP BYTE PTR FCB1_NAME_291D,20H ; (72B5:291D=20H) ' '
- JE LOC_01EB
- MOV BYTE PTR DATA_2862,41H ; (=0) 'A'
- MOV SI,OFFSET FCB1_291C ; (72B5:291C=0)
- MOV DI,OFFSET FCB4_2A34 ; (72B5:2A34=0DH)
- MOV CX,24H ; 36 decimal
- REP MOVSB ; Rep when cx >0 Mov [si] to es:[di]
- CALL SUB_0714
- LOC_01EB:
- CMP BYTE PTR FCB2_NAME_2943,20H ; (72B5:2943=20H) ' '
- JE LOC_0226
- MOV BYTE PTR DATA_2862,52H ; (=0) 'R'
- MOV SI,OFFSET FCB2_2942 ; (72B5:2942=0)
- MOV DI,OFFSET FCB4_2A34 ; (72B5:2A34=0DH)
- MOV CX,24H ; 36 decimal
- REP MOVSB ; Rep when cx >0 Mov [si] to es:[di]
- JMP SHORT LOC_0269
- LOC_0204:
- ;**CHANGED** MOV DX,OFFSET MS_PC_DASM_2969 ; (72B5:2969=54H)
- MOV DX,OFFSET MS_PC_DISASMB ; (72B5:2969=54H)
- MOV AH,9
- INT 21H ; DOS Services ah=function 09h
- ; display char string at ds:dx
- CALL SUB_06F1
- JMP SHORT LOC_0287
- ;*** DB 90H
- LOC_0211:
- MOV DX,OFFSET MS_INVALID_CMD ; (72B5:27ED=49H)
-
- ASMGEN ENDP
-
- ;==========================================================================
- ; Output Beep and error message DX
- ;==========================================================================
-
- DSPY_ER_DX_0214 PROC NEAR
- LOC_0214:
- MOV SP,OFFSET START
- MOV AL,7
- CALL DSPY_CHR_AL_070
- LOC_021C:
- CALL DSPY_CRLF_06FB
- MOV AH,9
- INT 21H ; DOS Services ah=function 09h
- ; display char string at ds:dx
- LOC_0223:
- CALL DSPY_CRLF_06FB
- LOC_0226:
- TEST BYTE PTR DATA_286F,0FFH ; (=0)
- JNZ LOC_0290 ; INT 20H program terminate
- CLD ; Clear direction
- MOV SP,OFFSET START
- MOV DX,OFFSET MS_PROMPT_XARQ ; (=58H)
- MOV AH,9
- INT 21H ; DOS Services ah=function 09h
- ; display char string at ds:dx
- MOV SI,OFFSET FCB3_2A0F ; (72B5:2A0F=61H)
- CALL SUB_06B1
- MOV DX,OFFSET DATA_2627 ; (=3EH)
- MOV AH,9
- INT 21H ; DOS Services ah=function 09h
- ; display char string at ds:dx
- CALL SUB_06F1
- CALL SCAN_SPTAB_0E3F
- JZ LOC_0226
- LODSB ; String [si] to al
- AND AL,5FH ; clear bit-5, strip case
- MOV DATA_2862,AL ; (=0)
- MOV DI,OFFSET FCB4_2A34 ; (72B5:2A34=0DH)
- CMP AL,41H ; 'A'
- JNE LOC_0262
- CALL SUB_053A
- CALL SUB_0714
- JMP SHORT LOC_0226
- LOC_0262:
- CMP AL,52H ; 'R'
- JNE LOC_0283
- CALL SUB_053A
- LOC_0269:
- CMP BYTE PTR DATA_2861,2 ; (=0)
- JE LOC_0277
- PUSH DI
- PUSH SI
- CALL SUB_071B
- POP SI
- POP DI
- LOC_0277:
- CMP BYTE PTR FCB4_NAME_2A35,20H ; (72B5:2A35=0AH) ' '
- JE LOC_0226
- CALL SUB_0B4A
- JMP SHORT LOC_0226
- LOC_0283:
- CMP AL,58H ; 'X'
- JNE LOC_028C
- LOC_0287:
- CALL SUB_056C
- JMP SHORT LOC_0226
-
- LOC_028C: ; Is it "Q" for QUIT?
- CMP AL,51H ; 'Q'
- JNE LOC_0211
- LOC_0290:
- ;**CHANGED** INT 20H ; Program Terminate
- MOV AX,WORD PTR EXIT_CODE
- INT 21H ; Program Terminate
-
- DSPY_ER_DX_0214 ENDP
-
-
- ;==========================================================================
- ;
- ; External Entry Point
- ;
- ;==========================================================================
-
- INT_23H_ENTRY PROC FAR
- STI ; Enable interrupts
- PUSH CS
- POP SS
- MOV SP,OFFSET START
- PUSH CS
- POP DS
- PUSH CS
- POP ES
- CALL DSPY_CRLF_06FB
- CALL SUB_064A
- CMP BYTE PTR DATA_2861,2 ; (=0)
- JE LOC_02AC
- CALL SUB_0572
- LOC_02AC:
- ;**CHANGED** MOV DX,OFFSET DATA_268E ; (72B5:268E=0DH)
- MOV DX,OFFSET MS_CRLF_$ ; (72B5:268E=0DH)
- TEST BYTE PTR DATA_286F,0FFH ; (=0)
- JNZ LOC_0290 ; INT 20H, program terminate
- JMP LOC_021C ; display CR LF
- INT_23H_ENTRY ENDP
-
- ;==========================================================================
- ; SUBROUTINE
- ;==========================================================================
-
- SUB_02D0 PROC NEAR
- LOC_02D0:
- MOV AL,0FFH
- ;**CHANGED** MOV DI,OFFSET DATA_2870 ; (=0FFH)
- MOV DI,OFFSET SEQ_SW_BYTES ; (=0FFH)
- MOV CX,9
- REP STOSB ; Rep when cx >0 Store al to es:[di]
- MOV SI,OFFSET MAC_PATCH83 ; (72B5:24E0=0)
- LOC_02DD:
- LODSB ; String [si] to al
- CMP AL,0FFH
- JE LOC_02EC
- CMP AL,1
- JA LOC_02DD
- MOV BYTE PTR [SI-1],0
- JMP SHORT LOC_02DD
- LOC_02EC:
- PUSH WORD PTR FCB3_EXT_2A17 ; (72B5:2A17=7261H)
- PUSH WORD PTR FCB3_EXT2_2A19 ; (72B5:2A19=2079H)
- MOV SI,OFFSET MS_SEQ_276B ; (72B5:276B=53H)
- MOV DI,OFFSET FCB3_EXT1_2A18 ; (72B5:2A18=72H)
- MOV CX,3
- REP MOVSB ; Rep when cx >0 Mov [si] to es:[di]
- ;**CHANGED** MOV DS:ALTR_J_B_0943+1,CL ; (72B5:0944=0AH)
- MOV DS:SMOKING_GUN_0944,CL ; (72B5:0944=0AH)
- CALL SUB_0E00
- MOV DI,DATA_2E9E_E ; (=0)
- JNC LOC_0314
- LOC_030B:
- POP WORD PTR FCB3_EXT2_2A19 ; (72B5:2A19=2079H)
- POP WORD PTR FCB3_EXT_2A17 ; (72B5:2A17=7261H)
- RETN
- LOC_0314:
- MOV AX,WORD PTR FCB3_FILSZ_2A1F ; (72B5:2A1F=2058H)
- MOV DATA_284D,AX ; (72B5:284D=0)
- MOV BX,5
- XOR CX,CX
- LOC_031F:
- CALL SUB_04BE
- DEC BX
- JP LOC_031F ; Jump if parity=1
- ;**CHANGED** MOV DS:ALTR_W_03A6+1,CX ; (72B5:03A7=0)
- MOV DS:OLD_W_03A7,CX ; (72B5:03A7=0)
- LOC_0329:
- CALL SUB_04D7
- JC LOC_030B
- CALL RD_SK_SPTB_1238
- CMP AL,61H ; 'a'
- JB LOC_0337
- AND AL,5FH ; clear bit-5, strip case
- LOC_0337:
- ;**CHANGED** CMP BYTE PTR DS:ALTR_J_B_0943+1,0FFH ; (72B5:0944=0AH)
- CMP BYTE PTR DS:SMOKING_GUN_0944,0FFH ; (72B5:0944=0AH)
- JE LOC_03B5
- PUSH DI
- ;**CHANGED** MOV DI,OFFSET DAT_02B9 ; (72B5:02B9=0)
- MOV DI,OFFSET SEQ_FILE_CMDS ; .SEQ file commands (table)
- MOV CX,0EH ; (14 bytes in table)
- REPNE SCASB ; Rep zf=0+cx >0 Scan es:[di] for al
- POP DI
- JNZ ALTR_W_03A6 ; jump if char not in table
- ;**CHANGED** CMP BYTE PTR DS:ALTR_J_B_0943+1,0C0H ; (72B5:0944=0AH)
- CMP BYTE PTR DS:SMOKING_GUN_0944,0C0H ; (72B5:0944=0AH)
- JNE LOC_0354
- JMP LOC_03EB
- LOC_0354:
- CMP AL,58H ; 'X' .SEQ repeating structure
- JNE LOC_0360
- ;**CHANGED** MOV BYTE PTR DS:ALTR_J_B_0943+1,0C0H ; (72B5:0944=0AH)
- MOV BYTE PTR DS:SMOKING_GUN_0944,0C0H ; (72B5:0944=0AH)
- JMP LOC_03F8
- LOC_0360:
- CMP AL,2FH ; '/' .SEQ switch character?
- JNE LOC_03D1 ; if not, jump and try command
- CALL RD_NXT_BYT_1B1B ; check for .SEQ file switches
- CMP AL,61H ; 'a'
- JB LOC_036D
- AND AL,5FH ; clear bit-5, strip case
- LOC_036D:
- PUSH DI
- ;**CHANGED** MOV DI,OFFSET DATA_02C7 ; (=4DH)
- MOV DI,OFFSET SEQ_FILE_SWITCH
- MOV CX,9 ; scan for switch character
- REPNE SCASB ; Rep zf=0+cx >0 Scan es:[di] for al
- POP DI
- JNZ ALTR_W_03A6 ; jump if switch not found
- XCHG BX,CX
- CALL RD_NXT_BYT_1B1B
- CMP BX,7 ; BX is switch index value
- JAE LOC_039E
- ;**CHANGED** NOT DATA_2870[BX] ; (=0FFH)
- NOT SEQ_SW_BYTES[BX] ; (=0FFH)
- MOV AH,0FFH ; switch ON value
- CMP AL,2BH ; '+' is it plus?
- JE LOC_0393 ; if yes, set switch
- CMP AL,2DH ; '-' is it minus?
- JNE LOC_0397 ; if not minus, jump
- MOV AH,0 ; switch OFF value
- LOC_0393:
- ;**CHANGED** MOV DATA_2870[BX],AH ; (=0FFH)
- MOV SEQ_SW_BYTES[BX],AH ; write indexed switch value
- LOC_0397:
- PUSH AX
- CALL SUB_04BE
- POP AX
- JMP SHORT LOC_03A3
- LOC_039E:
- ;**CHANGED** MOV BYTE PTR DATA_2870[BX],0 ; (=0FFH)
- MOV BYTE PTR SEQ_SW_BYTES[BX],0 ; (=0FFH)
- LOC_03A3:
- JMP LOC_0497
- ;-----------------------------------------------
- ; switch character not found
- ALTR_W_03A6:
- ;**CHANGED** MOV DX,0
- MOV DX,OLD_W_03A7
- MOV DI,OFFSET DATA_270C ; (72B5:270C=30H)
- CALL CNV_W_2_HX_151D
- MOV DX,OFFSET MS_ERR_SEQ_26E0 ; (72B5:26E0=55H)
- JMP LOC_0214
- LOC_03B5:
- MOV CL,AL
- CALL RD_NXT_BYT_1B1B
- AND AL,5FH ; clear bit-5, strip case
- MOV AH,AL
- MOV AL,CL
- PUSH DI
- MOV DI,OFFSET SEG_REGS_24BB ; (72B5:24BB=45H)
- MOV CX,4
- REPNE SCASW ; Rep zf=0+cx >0 Scan es:[di] for ax
- POP DI
- JNZ ALTR_W_03A6
- ADD CL,10H
- JMP SHORT LOC_03F8
- ;-----------------------------------------------
- LOC_03D1:
- CMP AL,41H ; 'A' Assume directive
- JNE LOC_03DB
- ;**CHANGED** DEC BYTE PTR DS:ALTR_J_B_0943+1 ; (72B5:0944=0AH)
- DEC BYTE PTR DS:SMOKING_GUN_0944 ; (72B5:0944=0AH)
- JMP SHORT LOC_03F8
- LOC_03DB:
- CMP AL,49H ; 'I' Initial value for IP
- JNE LOC_03F8
- MOV DATA_285A,BX ; (=0)
- MOV BYTE PTR DATA_286D,0FFH ; (=0)
- JMP LOC_049B
-
- LOC_03EB:
- CMP CL,1 ; 7 SEQ commands
- JB ALTR_W_03A6
- CMP CL,8
- JA ALTR_W_03A6
- OR CL,40H ; '@' make 41H thru 48H
- LOC_03F8:
- MOV AH,4 ; 4 bytes to store
- CALL SUB_0F6C
- ;**CHANGED** TEST BYTE PTR DS:ALTR_J_B_0943+1,0FFH ; (72B5:0944=0AH)
- TEST BYTE PTR DS:SMOKING_GUN_0944,0FFH ; (72B5:0944=0AH)
- JNZ LOC_0421
- ;**CHANGED** CMP BX,DS:ALTR_W_03A6+1 ; (72B5:03A7=0)
- CMP BX,DS:OLD_W_03A7 ; (72B5:03A7=0)
- JAE LOC_041D
- PUSH DI
- ;**CHANGED** MOV DX,DS:ALTR_W_03A6+1 ; (72B5:03A7=0)
- MOV DX,DS:OLD_W_03A7 ; (72B5:03A7=0)
- MOV DI,OFFSET DATA_2736 ; (72B5:2736=30H)
- CALL CNV_W_2_HX_151D
- MOV DX,OFFSET MS_AD_ORDR_2712 ; (72B5:2712=41H)
- MOV AH,9
- INT 21H ; DOS Services ah=function 09h
- ; display char string at ds:dx
- POP DI
- LOC_041D:
- ;**CHANGED** MOV DS:ALTR_W_03A6+1,BX ; (72B5:03A7=0)
- MOV DS:OLD_W_03A7,BX ; (72B5:03A7=0)
- LOC_0421:
- MOV AX,BX
- STOSW ; Store ax to es:[di]
- MOV AL,CL
- STOSB ; Store al to es:[di]
- MOV BX,DI
- MOV AL,0
- STOSB ; Store al to es:[di]
- CALL RD_SK_SPTB_1238
- CMP AL,3BH ; ';' is it comment delimiter?
- JE SCAN_2_EOL_04A2 ; if yes, jump
- LOC_0433:
- CMP AL,0DH ; CR
- JE LOC_0459
- CMP AL,0AH ; LF
- JE LOC_0459
- CMP AL,9 ; TAB
- JE LOC_0459
- MOV AH,1
- CALL SUB_0F6C
- CMP AL,61H ; 'a'
- JB LOC_044A
- AND AL,5FH ; clear bit-5, strip case
- LOC_044A:
- STOSB ; Store al to es:[di]
- INC BYTE PTR [BX]
- CMP BYTE PTR [BX],7FH
- JE LOC_0459
- CALL RD_NXT_BYT_1B1B
- CMP AL,20H ; ' '
- JNE LOC_0433
- LOC_0459:
- TEST BYTE PTR [BX],0FFH
- JZ LOC_0497
- OR BYTE PTR [DI-1],80H
- CMP BYTE PTR [BX],7FH
- JE LOC_0497
- CMP AL,0DH ; CR
- JE LOC_0497
- CALL RD_SK_SPTB_1238
- CMP AL,3BH ; ';'
- JE SCAN_2_EOL_04A2
- LOC_0472:
- CMP AL,0DH ; CR
- JE LOC_0493
- CMP AL,9 ; TAB
- JNE LOC_047C
- MOV AL,20H ; ' '
- LOC_047C:
- MOV AH,1
- CALL SUB_0F6C
- STOSB ; Store al to es:[di]
- OR BYTE PTR [BX],80H
- INC BYTE PTR [BX]
- CMP BYTE PTR [BX],0FFH
- JE LOC_0493
- CALL RD_NXT_BYT_1B1B
- CMP AL,3BH ; ';'
- JNE LOC_0472
- LOC_0493:
- OR BYTE PTR [DI-1],80H
- LOC_0497:
- CMP AL,0DH ; CR
- JE LOC_04B1
- LOC_049B:
- CALL RD_SK_SPTB_1238
- CMP AL,3BH ; ';'
- JNE LOC_04AD
- SCAN_2_EOL_04A2:
- CALL RD_SK_SPTB_1238
- CMP AL,1AH ; Ctrl-Z
- JE LOC_04BB
- CMP AL,0DH ; CR
- JNE SCAN_2_EOL_04A2
- LOC_04AD:
- CMP AL,0DH ; CR
- JNE LOC_04BB
- LOC_04B1:
- CALL RD_NXT_BYT_1B1B
- CMP AL,0AH ; LF
- JNE LOC_04BB
- JMP LOC_0329
- LOC_04BB:
- JMP ALTR_W_03A6
- SUB_02D0 ENDP
-
-
- ;==========================================================================
- ; SUBROUTINE
- ;==========================================================================
-
- SUB_04BE PROC NEAR
- MOV AH,4
- CALL SUB_0F6C
- MOV AX,CX
- STOSW ; Store ax to es:[di]
- MOV AL,BL
- OR AL,20H ; ' '
- ;**CHANGED** TEST BYTE PTR DATA_2870[BX],0FFH ; (=0FFH)
- TEST BYTE PTR SEQ_SW_BYTES[BX],0FFH ; (=0FFH)
- JZ LOC_04D3
- OR AL,10H
- LOC_04D3:
- MOV AH,0
- STOSW ; Store ax to es:[di]
- RETN
- SUB_04BE ENDP
-
-
- ;==========================================================================
- ; SUBROUTINE
- ;==========================================================================
-
- SUB_04D7 PROC NEAR
- CALL RD_SK_SPTB_1238
- CMP AL,3BH ; ';'
- JNE LOC_04E1
- POP AX
- JMP SHORT SCAN_2_EOL_04A2
- LOC_04E1:
- XOR BX,BX
- CMP AL,26H ; '&'
- JE LOC_04EE
- ;**CHANGED** MOV BYTE PTR DS:ALTR_J_B_0943+1,0 ; (72B5:0944=0AH)
- MOV BYTE PTR DS:OLD_JUMP_0944,0FFH ; don't take jump
- JMP SHORT LOC_04F6
- LOC_04EE:
- CALL RD_SK_SPTB_1238
- JMP SHORT LOC_04F6
- LOC_04F3:
- CALL RD_NXT_BYT_1B1B
- LOC_04F6:
- MOV AH,AL
-
- ; ****** Error, 'A' s/b 'a' ******
- ;**ERROR** CMP AL,41H ; 'A' -typographical error-
- CMP AL,61H ; 'a'
- JB LOC_04FE
- AND AL,5FH ; clear bit-5, strip case
- LOC_04FE:
- SUB AL,30H ; '0'
- JC LOC_0521
- CMP AL,0AH ; number TEN
- JB LOC_0508
- SUB AL,7 ; ASCII HEX conversion
- LOC_0508:
- CMP AL,0FH
- JA LOC_0521
- MOV CX,4
-
- LOCLOOP_050F:
- ADD BX,BX
- JC LOC_051B
- LOOP LOCLOOP_050F ; Loop if cx > 0
-
- MOV AH,0
- ADD BX,AX
- JNC LOC_04F3
- LOC_051B:
- MOV DX,OFFSET MS_HXVL_ER_2771 ; (72B5:2771=48H)
- JMP LOC_0214
- LOC_0521:
- CMP AH,20H ; ' '
- JE LOC_RET_0539
- CMP AH,9 ; Tab
- JE LOC_RET_0539
- AND AH,5FH ; clear bit-5, strip case
- CMP AH,48H ; 'H'
- JE LOC_RET_0539
- CMP AH,1AH ; EOF
- STC ; Set carry flag
- JNZ LOC_051B ; read next char
-
- LOC_RET_0539:
- RETN
- SUB_04D7 ENDP
-
-
- ;==========================================================================
- ; SUBROUTINE
- ;==========================================================================
-
- SUB_053A PROC NEAR
- CALL SCAN_SPTAB_0E3F
- JNZ LOC_0548
- CMP DI,OFFSET FCB3_2A0F ; (72B5:2A0F=61H)
- JE LOC_0563
- MOV SI,OFFSET DATA_2150_CON ; (72B5:2150=43H)
- LOC_0548:
- MOV AX,2901H
- INT 21H ; DOS Services ah=function 29h
- ; parse filenam @ds:si FCBes:di
- OR AL,AL
- JNZ LOC_0558
- CMP BYTE PTR [DI+1],20H ; ' '
- JE LOC_0558
- RETN
- LOC_0558:
- MOV SI,DI
- CALL SUB_06B1
- MOV DX,OFFSET MS_FILE_SPEC_ER ; (72B5:27A5=20H)
- JMP LOC_0214
- LOC_0563:
- MOV WORD PTR FCB3_NAME_2A10,20H ; (72B5:2A10=646EH)
- JMP LOC_0226
- SUB_053A ENDP
-
-
- ;==========================================================================
- ; SUBROUTINE
- ;==========================================================================
-
- SUB_056C PROC NEAR
- MOV DI,OFFSET FCB3_2A0F ; (72B5:2A0F=61H)
- CALL SUB_053A
-
- ;==== External Entry into Subroutine ======================================
-
- SUB_0572:
- MOV DATA_2915,DATA_2E9E_E ; (=0) (=0)
- MOV AL,0
- ;**CHANGED** MOV DS:ALTR_B_0F47+1,AL ; (72B5:0F48=0)
- MOV DS:OLD_B_0F48,AL ; (72B5:0F48=0)
- MOV BYTE PTR DATA_2861,1 ; (=0)
- MOV DATA_286D,AL ; (=0)
- MOV DATA_285A,100H ; (=0)
- RETN
- SUB_056C ENDP
-
-
- ;==========================================================================
- ; SUBROUTINE
- ;==========================================================================
-
- SUB_058C PROC NEAR
- ;**CHANGED** MOV DI,OFFSET DATA_298B ; 132-byte line buffer
- MOV DI,OFFSET LINE_BUF_132CHR ; 132-byte line buffer
- PUSH CX
- PUSH SI
- PUSH DI
- MOV DX,AX
- CALL CNV_W_2_HX_151D
- POP DI
- XCHG SI,DI
- MOV CX,4
-
- LOCLOOP_059D:
- LODSB ; String [si] to al
- CALL WR_CHR_AL_05C1
- LOOP LOCLOOP_059D ; Loop if cx > 0
-
- POP SI
- POP CX
- RETN
- SUB_058C ENDP
-
-
- ;==========================================================================
- ; SUBROUTINE
- ;==========================================================================
-
- SUB_05A6 PROC NEAR
- MOV AX,DX
- PUSH DI
- CALL SUB_058C
- POP DI
- RETN
- SUB_05A6 ENDP
-
-
- ;==========================================================================
- ; SUBROUTINE
- ;==========================================================================
-
- WR_CRLF_05AE PROC NEAR
- MOV AL,0DH ; CR
- CALL WR_CHR_AL_05C1
- MOV AL,0AH ; LF
- ;***TEST1 DB 0A9H ; TEST - (JMP SHORT LOC_05C1)
- JMP SHORT WR_CHR_AL_05C1
-
- ;==== External Entry into Subroutine ======================================
-
- WR_L_05B6:
- MOV AL,4CH ; 'L'
- ;***TEST2 DB 0A9H ; TEST - (JMP SHORT LOC_05C1)
- JMP SHORT WR_CHR_AL_05C1
-
- ;==== External Entry into Subroutine ======================================
-
- WR_SEMI_05B9:
- LOC_05B9:
- MOV AL,3BH ; ';'
- ;***TEST3 DB 0A9H ; TEST - (JMP SHORT LOC_05C1)
- JMP SHORT WR_CHR_AL_05C1
-
- ;==== External Entry into Subroutine ======================================
-
- SUB_05BC:
- MOV AL,9 ; TAB
- ;***TEST4 DB 0A9H ; TEST - (JMP SHORT LOC_05C1)
- JMP SHORT WR_CHR_AL_05C1
-
- ;==== External Entry into Subroutine ======================================
-
- SUB_05BF:
- MOV AL,20H ; ' '
-
- ;==== External Entry into Subroutine ======================================
-
- WR_CHR_AL_05C1:
- ;**CHANGED** TEST BYTE PTR DATA_2870,0FFH ; (=0FFH)
- TEST BYTE PTR SW_O_OUTPUT_LST,0FFH ; (=0FFH)
- JZ LOC_RET_0600
- CMP BYTE PTR DATA_2861,1 ; (=0)
- JE LOC_RET_0600
- PUSH AX
- PUSH DI
- MOV DI,OFFSET DATA_2848 ; (=0)
- INC BYTE PTR [DI]
- CMP AL,9
- JNE LOC_05E0
- ADD BYTE PTR [DI],7
- AND BYTE PTR [DI],0F8H ; clear low 3-bits
- LOC_05E0:
- MOV DI,DATA_2881 ; (=0)
- AND AL,7FH ; clear bit-7
- STOSB ; Store al to es:[di]
- CMP DI,DATA_2E9E_E ; (=0)
- JNE LOC_05F0
- CALL SUB_062D
- LOC_05F0:
- MOV DATA_2881,DI ; (=0)
- INC DATA_2849 ; (=0)
- JNZ LOC_05FE
- INC DATA_284B ; (=0)
- LOC_05FE:
- POP DI
- POP AX
-
- LOC_RET_0600:
- RETN
- WR_CRLF_05AE ENDP
-
-
- ;==========================================================================
- ; SUBROUTINE
- ;==========================================================================
-
- WR_STRING_0601 PROC NEAR
- LOC_0601:
- LODSB ; String [si] to al
- TEST AL,7FH
- JZ LOC_RET_060D
- CALL WR_CHR_AL_05C1
- AND AL,80H ; clear all but bit-7
- JZ LOC_0601
-
- LOC_RET_060D:
- RETN
- WR_STRING_0601 ENDP
-
-
- ;==========================================================================
- ; SUBROUTINE
- ;==========================================================================
-
- SUB_060E PROC NEAR
- PUSH AX
-
- LOCLOOP_060F:
- MOV AH,DATA_2848 ; (=0)
- AND AH,7 ; clear all but 3 LSB's
- MOV AL,7
- SUB AL,AH
- CBW ; Convrt byte to word
- CMP CX,AX
- JBE LOC_0626
- SUB CX,AX
- CALL SUB_05BC
- JMP SHORT LOC_0629
- LOC_0626:
- CALL SUB_05BF
- LOC_0629:
- LOOP LOCLOOP_060F ; Loop if cx > 0
-
- POP AX
- RETN
- SUB_060E ENDP
-
-
- ;==========================================================================
- ; SUBROUTINE
- ;==========================================================================
-
- SUB_062D PROC NEAR
- PUSH DX
- MOV DX,OFFSET DTA4_2C9E ; (72B5:2C9E=0)
- MOV AH,1AH
- INT 21H ; DOS Services ah=function 1Ah
- ; set DTA to ds:dx
- XCHG DX,DI
- MOV DX,OFFSET FCB4_2A34 ; (72B5:2A34=0DH)
- MOV AH,15H
- INT 21H ; DOS Services ah=function 15h
- ; sequent file write FCB @ds:dx
- OR AL,AL
- POP DX
- JNZ LOC_0644
- RETN
- LOC_0644:
- MOV DX,OFFSET MS_DSKFULL_26AB ; (72B5:26AB=49H)
- JMP LOC_0214
- SUB_062D ENDP
-
-
- ;==========================================================================
- ; SUBROUTINE
- ;==========================================================================
-
- SUB_064A PROC NEAR
-
- TEST OLD_RET_NOP_064A,0FFH
- JNZ LOC_064B ; jump if old NOP condition
-
- ALTR_OPB_064A: ; Altered code -- RETN or NOP
- RETN
- SUB_064A ENDP
-
- LOC_064B:
- ;**CHANGED** MOV BYTE PTR DS:ALTR_OPB_064A+0,0C3H ; (72B5:064A=0C3H)
- MOV OLD_RET_NOP_064A,0 ; (=0C3H) RETN
- MOV AL,1AH
- CALL WR_CHR_AL_05C1
- MOV BX,DATA_2881 ; (=0)
- SUB BX,OFFSET DTA4_2C9E ; (72B5:2C9E=0)
- PUSHF
- JZ LOC_0663
- CALL SUB_062D
- LOC_0663:
- POPF
- JZ LOC_0677
- MOV AX,200H
- SUB AX,BX
- JZ LOC_0677
- SUB WORD PTR FCB4_FILSZ_2A44,AX ; (72B5:2A44=646FH)
- JNC LOC_0677
- DEC WORD PTR FCB4_FLSZH_2A46 ; (72B5:2A46=2065H)
- LOC_0677:
- MOV DX,OFFSET FCB4_2A34 ; (72B5:2A34=0DH)
- MOV AH,10H
- INT 21H ; DOS Services ah=function 10h
- ; close file, FCB @ ds:dx
- OR AL,AL
- JNZ LOC_06AB
- MOV DX,OFFSET MS_BYT_N_OT_FLE ; (72B5:278E=42H)
- MOV AH,9
- INT 21H ; DOS Services ah=function 09h
- ; display char string at ds:dx
- ;**CHANGED** MOV DI,OFFSET DATA_298B ; 132-byte line buffer
- MOV DI,OFFSET LINE_BUF_132CHR ; 132-byte line buffer
- PUSH DI ; save as pointer to display buf
- MOV DX,DATA_284B ; data for HEX ASCII conversion
- OR DX,DX ; test for zero
- JZ LOC_0698
- CALL CNV_W_2_HX_151D
- LOC_0698:
- MOV DX,DATA_2849 ; data for HEX ASCII conversion
- CALL CNV_W_2_HX_151D
- MOV AX,2448H ; 'H$' add terminal character
- STOSW ; Store ax to es:[di]
- POP DX ; get pointer to display buf
- MOV AH,9
- INT 21H ; DOS Services ah=function 09h
- ; display char string at ds:dx
- JMP SHORT LOC_06FB
- ;*** DB 90H
- LOC_06AB:
- MOV DX,OFFSET MS_NOCLOSE_265F ; (72B5:265F=0DH)
- JMP LOC_0214
-
- ;==========================================================================
- ; SUBROUTINE
- ;==========================================================================
-
- SUB_06B1 PROC NEAR
- PUSH CX
- LODSB ; String [si] to al
- CMP AL,0
- JE LOC_06C6
- CMP BYTE PTR [SI],20H ; ' '
- JE LOC_06C6
- OR AL,40H ; '@'
- CALL DSPY_CHR_AL_070
- MOV AL,3AH ; ':'
- CALL DSPY_CHR_AL_070
- LOC_06C6:
- LODSB ; String [si] to al
- MOV CX,8
- CMP AL,20H ; ' '
- JNE LOC_06D4
- CALL DSPY_DOT_0703
- JMP SHORT LOC_06EA
-
- LOCLOOP_06D3:
- LODSB ; String [si] to al
- LOC_06D4:
- CALL SUB_06EC
- LOOP LOCLOOP_06D3 ; Loop if cx > 0
-
- CMP BYTE PTR [SI],20H ; ' '
- JE LOC_06EA
- MOV CX,3
- CALL DSPY_DOT_0703
-
- LOCLOOP_06E4:
- LODSB ; String [si] to al
- CALL SUB_06EC
- LOOP LOCLOOP_06E4 ; Loop if cx > 0
-
- LOC_06EA:
- POP CX
- RETN
- SUB_06B1 ENDP
-
-
- ;==========================================================================
- ; SUBROUTINE
- ;==========================================================================
-
- SUB_06EC PROC NEAR
- CMP AL,20H ; ' '
- JNE LOC_0708
- RETN
-
- ;==== External Entry into Subroutine ======================================
- ;
- ; Buffered Keyboard Input
-
- SUB_06F1:
- MOV DX,OFFSET KBD_BUF_2968 ; (72B5:2968=20H)
- MOV AH,0AH
- INT 21H ; DOS Services ah=function 0Ah
- ; get keybd line, put at ds:dx
- MOV SI,OFFSET DATA_296A ; Keyboard line buffer
-
- ;==== External Entry into Subroutine ======================================
-
- DSPY_CRLF_06FB:
- LOC_06FB:
- MOV AL,0DH ; CR
- CALL DSPY_CHR_AL_070
- MOV AL,0AH ; LF
- ;***TEST5 DB 0A9H ; TEST skips next instruction
- JMP SHORT DSPY_CHR_AL_070
-
- ;==== External Entry into Subroutine ======================================
-
- DSPY_DOT_0703:
- MOV AL,2EH ; '.'
- ;***TEST6 DB 0A9H ; TEST skips next instruction
- ; JMP SHORT DSPY_CHR_AL_070
- ;SUB_0706:
- ; MOV AL,20H ; ' '
- SUB_06EC ENDP
-
-
- ;==========================================================================
- ; SUBROUTINE
- ;==========================================================================
-
- DSPY_CHR_AL_070 PROC NEAR
- LOC_0708:
- PUSH AX
- PUSH DX
- AND AL,7FH ; clear bit-7
- XCHG AX,DX
- MOV AH,2
- INT 21H ; DOS Services ah=function 02h
- ; display char dl
- POP DX
- POP AX
- RETN
- DSPY_CHR_AL_070 ENDP
-
-
- ;==========================================================================
- ; SUBROUTINE
- ;==========================================================================
-
- SUB_0714 PROC NEAR
- CMP BYTE PTR DATA_2861,2 ; (=0)
- JE LOC_0722
-
- ;==== External Entry into Subroutine ======================================
-
- SUB_071B:
- CALL SUB_02D0
- MOV DATA_288F,DI ; (=0)
- LOC_0722:
- MOV BYTE PTR DATA_286E,0 ; (=0)
-
- ; 24H s/b LOC_RET_10A7-SUB_1081-2
- ;**CHANGED** MOV BYTE PTR DS:ALTR_J_B_1081+1,24H ; (72B5:1082=24H) '$'
- ;**CHANGED** MOV BYTE PTR DS:ALTR_J_B_1081+1,LOC_RET_10A7-SUB_1081-2
- MOV BYTE PTR DS:OLD_JUMP_1082,0 ;take jump
- MOV BX,DATA_2893 ; (=0)
- TEST BYTE PTR [BX],80H
- JNZ LOC_073A
- MOV BYTE PTR DATA_2888,0FFH ; (=0)
- LOC_073A:
- CALL SUB_0C37
- ;**CHANGED** MOV BYTE PTR DATA_2870,0FFH ; (=0FFH)
- MOV BYTE PTR SW_O_OUTPUT_LST,0FFH ; (=0FFH)
- JNC LOC_0747
- JMP LOC_0223
- LOC_0747:
- MOV BP,DATA_2893 ; (=0)
- CMP BYTE PTR DATA_2861,1 ; (=0)
- JNE LOC_075C
- MOV DX,OFFSET MS_BLDG_REF_TBL ; (72B5:2808=42H)
- MOV AH,9
- INT 21H ; DOS Services ah=function 09h
- ; display char string at ds:dx
- JMP SHORT LOC_0799
- ;*** DB 90H
- LOC_075C:
- CALL SUB_0E4C
- CALL SUB_0B70
- CALL SUB_0C2E
- JNC LOC_076A
- JMP LOC_0214
- LOC_076A:
- ;**CHANGED** TEST BYTE PTR DATA_2878,0FFH ; (=0FFH)
- TEST BYTE PTR SW_M_MACRO_LIST,0FFH ; (=0FFH)
- JZ LOC_0789
- MOV SI,OFFSET MAC_PATCH83 ; (72B5:24E0=0)
- LOC_0774:
- LODSB ; String [si] to al
- CMP AL,0FFH
- JE LOC_0789
- CMP AL,1
- JNE LOC_0782
- CALL WR_STRING_0601
- JMP SHORT LOC_0774
- LOC_0782:
- LODSB ; String [si] to al
- TEST AL,80H
- JNZ LOC_0774
- JMP SHORT LOC_0782
- LOC_0789:
- MOV SI,OFFSET MN_DOT_RADIX_16 ; (72B5:25C5=2EH)
- ;**CHANGED** TEST BYTE PTR RAD16_FLAG_2877,0FFH ; (72B5:2877=0FFH)
- TEST BYTE PTR SW_H_HEX_SUFFIX,0FFH ; (72B5:2877=0FFH)
- JNZ LOC_0796
- MOV SI,OFFSET MN_CRLF_INIT_VL ; (72B5:25D0=4CH)
- LOC_0796:
- CALL WR_STRING_0601
- LOC_0799:
- CMP BYTE PTR DATA_2887,80H ; (=0)
- JNE LOC_07A5
- MOV BYTE PTR DATA_2887,0 ; (=0)
- LOC_07A5:
- MOV SI,DATA_2889 ; (=0)
- CMP SI,DATA_288F ; (=0)
- JB LOC_07B2
- LOC_07AF:
- JMP LOC_088F
- LOC_07B2:
- MOV AX,DATA_2858 ; (=0)
- CMP AX,[SI]
- JB LOC_07AF
- MOV CX,SI
- LODSW ; String [si] to ax
- LODSB ; String [si] to al
- PUSH AX
- LODSB ; String [si] to al
- ;**CHANGED** MOV DS:ALTR_W_1123+1,SI ; (72B5:1124=0)
- MOV DS:OLD_W_1124,SI ; (72B5:1124=0)
- AND AL,7FH ; clear bit-7
- MOV AH,0
- ADD SI,AX
- POP AX
- MOV DATA_2889,SI ; (=0)
- CMP AL,9
- JNE LOC_0817
- CMP SI,DATA_288F ; (=0)
- JAE LOC_07FE
- TEST BYTE PTR [SI+2],40H ; '@'
- JZ LOC_07FE
- MOV SI,CX
- ;**CHANGED** MOV DS:ALTR_W_0802+1,SI ; (72B5:0803=0)
- MOV DS:OLD_W_0803,SI ; (72B5:0803=0)
- ;**CHANGED** MOV DS:ALTR_W_08E3+1,SI ; (72B5:08E4=0)
- MOV DS:OLD_W_08E4,SI ; (72B5:08E4=0)
- LOC_07E8:
- ADD SI,3
- LODSB ; String [si] to al
- AND AL,7FH ; clear bit-7
- MOV AH,0
- ADD SI,AX
- CMP SI,DATA_288F ; (=0)
- JAE LOC_07FE
- TEST BYTE PTR [SI+2],40H ; '@'
- JNZ LOC_07E8
- LOC_07FE:
- MOV DATA_2889,SI ; (=0)
-
- ALTR_W_0802: ; Altered code
- ;**CHANGED** MOV DI,0
- MOV DI,OLD_W_0803
- OR DI,DI
- JZ LOC_0811
- MOV BYTE PTR DATA_291B,0FFH ; (=0)
- JMP SHORT LOC_0888
- ;*** DB 90H
- LOC_0811:
- MOV DX,OFFSET MS_STR_SEQ_273E ; (72B5:273E=55H)
- JMP LOC_0214
- LOC_0817:
- TEST AL,20H ; ' ' space
- JNZ LOC_0851
- CMP AL,0AH ; number TEN
- JB LOC_0866
- LOC_081F:
- CMP SI,DATA_288F ; (=0)
- JAE LOC_0888
- LODSW ; String [si] to ax
- MOV CX,AX
- MOV DATA_2885,AX ; (=0)
- LODSB ; String [si] to al
- PUSH AX
- LODSB ; String [si] to al
- AND AL,7FH ; clear bit-7
- MOV AH,0
- ADD SI,AX
- POP AX
- SUB AL,10H
- JC LOC_088C
- CMP AL,3
- JA LOC_088C
- SHL AL,1 ; Shift w/zeros fill
- MOV AH,0
- ;**CHANGED** MOV BYTE PTR DS:ALTR_J_B_1081+1,AH ; (72B5:1082=24H)
- MOV BYTE PTR DS:OLD_JUMP_1082,0FFH ;don't take jump
- MOV BX,AX
- MOV DATA_2823[BX],CX ; 4-words indexed
- MOV DATA_2889,SI ; (=0)
- JMP SHORT LOC_081F
- LOC_0851:
- MOV BL,AL
- AND BL,0CFH ; clear bits 4 & 5
- MOV BH,0
- TEST AL,10H ; check if bit-4 is zero
- MOV AL,BH
- JZ LOC_0860
- NOT AL
- LOC_0860:
- ;**CHANGED** MOV DATA_2870[BX],AL ; (=0FFH)
- MOV SEQ_SW_BYTES[BX],AL ; (=0FFH)
- JMP SHORT LOC_0888
- LOC_0866:
- MOV DATA_2887,AL ; (=0)
- CMP AL,6
- JNE LOC_0872
- MOV BYTE PTR DATA_2887,80H ; (=0)
- LOC_0872:
- MOV BYTE PTR DATA_291B,0 ; (=0)
- MOV DATA_2919,0 ; (=0)
- MOV BYTE PTR DATA_2856,0 ; (=0)
- ;**CHANGED** MOV AX,DS:ALTR_W_0802+1 ; (72B5:0803=0)
- MOV AX,DS:OLD_W_0803 ; (72B5:0803=0)
- ;**CHANGED** MOV DS:ALTR_W_08E3+1,AX ; (72B5:08E4=0)
- MOV DS:OLD_W_08E4,AX ; (72B5:08E4=0)
- LOC_0888:
- LODSW ; String [si] to ax
- MOV DATA_2885,AX ; (=0)
- LOC_088C:
- JMP LOC_07A5
- LOC_088F:
- XOR AX,AX
- ;**CHANGED** MOV DS:ALTR_W_09E2+1,AX ; (72B5:09E3=0FFFFH)
- MOV DS:OLD_W_09E3,AX ; (72B5:09E3=0FFFFH)
- MOV DATA_2854,AX ; (Tab counter ?)
- MOV DATA_2846,AL ; (=0)
- MOV DATA_2847,AL ; (=0)
- MOV DATA_285D,AL ; (=0)
- MOV DATA_285C,AL ; (=0)
- CMP BYTE PTR DATA_2861,1 ; (=0)
- JE LOC_08C8
- CALL SUB_1081
- LOC_08AD:
- TEST BYTE PTR DATA_2888,0FFH ; (=0)
- JZ LOC_08C5
- MOV AX,[BP+1]
- CMP AX,DATA_2858 ; (=0)
- JA LOC_08C5
- CALL SUB_0FA8
- CALL SUB_10A8
- JZ LOC_08AD
- LOC_08C5:
- CALL SUB_05BC
-
- LOC_08C8: ; 0AH s/b LOC_094F-ALTR_J_B_0943-2
- ;**CHANGED** MOV BYTE PTR DS:ALTR_J_B_0943+1,0AH ; (72B5:0944=0AH)
- ;**CHANGED** MOV BYTE PTR DS:ALTR_J_B_0943+1,LOC_094F-ALTR_J_B_0943-2
- MOV BYTE PTR DS:OLD_JUMP_0944,0 ; take jump
- TEST BYTE PTR DATA_2856,0FFH ; (=0)
- JNZ LOC_0917
- TEST BYTE PTR DATA_291B,0FFH ; (=0)
- JZ LOC_0917
- TEST DATA_2919,0FFFFH ; (=0)
- JNZ LOC_0917
-
- ALTR_W_08E3: ; Altered code
- ;**CHANGED** MOV SI,0
- MOV SI,OLD_W_08E4
- LOC_08E6:
- LEA SI,[SI+3] ; Load effective addr
- LODSB ; String [si] to al
- AND AL,7FH ; clear bit-7
- MOV AH,0
- ADD SI,AX
- CMP SI,DATA_288F ; (=0)
- JAE LOC_08FC
- TEST BYTE PTR [SI+2],40H ; '@'
- JNZ LOC_0902
- LOC_08FC:
- ;**CHANGED** MOV SI,DS:ALTR_W_0802+1 ; (72B5:0803=0)
- MOV SI,DS:OLD_W_0803 ; (72B5:0803=0)
- JMP SHORT LOC_08E6
- LOC_0902:
- ;**CHANGED** MOV DS:ALTR_W_08E3+1,SI ; (72B5:08E4=0)
- MOV DS:OLD_W_08E4,SI ; (72B5:08E4=0)
- LODSW ; String [si] to ax
- MOV DATA_2919,AX ; (=0)
- LODSB ; String [si] to al
- AND AL,3FH ; clear bits 6 & 7
- MOV DATA_2887,AL ; (=0)
- LODSB ; String [si] to al
- AND AL,7FH ; clear bit-7
- MOV AH,0
- ADD SI,AX
- LOC_0917:
- MOV BYTE PTR DATA_286E,1 ; (=0)
- ;**CHANGED** MOV DI,OFFSET DATA_298B ; 132-byte line buffer
- MOV DI,OFFSET LINE_BUF_132CHR ; 132-byte line buffer
- MOV BYTE PTR [DI],80H
- CALL SUB_165A
- MOV BH,0
- MOV DATA_2848,BH ; (=0)
- MOV BL,DATA_2887 ; (=0)
- AND BL,7FH ;*** mask low 7-bits ERROR?
- ADD BX,BX
- CALL WORD PTR DATA_1BA9[BX] ;*(72B5:1BA9=1277H) 9 entries
- MOV AH,0BH
- INT 21H ; DOS Services ah=function 0Bh
- ; if keybd char available,al=FF
- CMP BYTE PTR DATA_2861,1 ; (=0)
- JE LOC_0984
-
- ALTR_J_B_0943: ; Altered code
- ;**CHANGED** JMP SHORT LOC_094F
- TEST BYTE PTR OLD_JUMP_0944,0FFH ; test for jump
- JZ LOC_094F ; if zero, take jump
-
- ALTR_W_0945: ; Altered code
- ;**CHANGED** MOV DX,0
- MOV DX,OLD_W_0946 ;(immediate) operand word
- MOV AX,3B09H ; "TAB Semicolon"
- STOSW ; Store ax to es:[di]
- CALL CNV_W_2_HX_151D
- LOC_094F:
- TEST BYTE PTR DATA_2866,0FFH ; (=0)
- JZ LOC_0963
- MOV AL,9 ; TAB
- STOSB ; Store al to es:[di]
- CALL SUB_181D
- MOV AL,9 ; TAB
- STOSB ; Store al to es:[di]
- MOV AX,3F3FH ; '??'
- STOSW ; Store ax to es:[di]
- LOC_0963:
- OR BYTE PTR [DI-1],80H
- MOV SI,OPW_TBL_WD_285F ; (72B5:285F=0)
- AND SI,0FFFH ; keep low 12-bits
- ADD SI,OFFSET MN_AAA ; (72B5:20F4=41H)
- CALL WR_STRING_0601
- ;**CHANGED** MOV SI,OFFSET DATA_298B ; 132-byte line buffer
- MOV SI,OFFSET LINE_BUF_132CHR ; 132-byte line buffer
- TEST BYTE PTR [SI],7FH
- JZ LOC_0984
- LOC_097E:
- CALL SUB_05BC
- CALL WR_STRING_0601
- LOC_0984:
- MOV DI,DATA_288D ; (=0)
- CMP DI,DATA_2893 ; (=0)
- JAE LOC_09AB
- MOV AX,[DI]
- CMP AX,DATA_2858 ; (=0)
- JA LOC_09AB
- ADD DI,2
- MOV DATA_288D,DI ; (=0)
- MOV SI,OFFSET MS_RELOC_275E ; (72B5:275E=3BH)
-
- ALTR_W_09A0: ; Altered code
- ;**CHANGED** MOV DX,0
- MOV DX,OLD_W_09A1
- CALL SUB_0E70
- OR BYTE PTR [DI],1
- JMP SHORT LOC_097E
- LOC_09AB:
- MOV SI,OFFSET DATA_2879 ; (72B5:2879=9)
- TEST BYTE PTR DATA_2887,7FH ; (=0)
- JNZ LOC_09BE
- TEST BYTE PTR [SI+3],7FH
- JZ LOC_09BE
- CALL WR_STRING_0601
- LOC_09BE:
- ;**CHANGED** TEST BYTE PTR DATA_2870,0FFH ; (=0FFH)
- TEST BYTE PTR SW_O_OUTPUT_LST,0FFH ; (=0FFH)
- JNZ LOC_09C8
- JMP LOC_0AAA
- LOC_09C8:
- ;**CHANGED** MOV BYTE PTR DS:ALTR_B_0A0E+2,28H ; (72B5:0A10=40H) '('
- MOV BYTE PTR DS:OLD_B_0A10,28H ; (72B5:0A10=40H) '('
- ;**CHANGED** TEST WORD PTR DS:ALTR_W_09E2+1,0FFFFH ; (72B5:09E3=0FFFFH)
- TEST WORD PTR DS:OLD_W_09E3,0FFFFH ; (72B5:09E3=0FFFFH)
- JZ LOC_09ED
- LOC_09D5:
- CALL SUB_05BC
- CMP BYTE PTR DATA_2848,1EH ; (=0) 30 decimal
- JB LOC_09D5
- CALL WR_SEMI_05B9
-
- ALTR_W_09E2: ; Altered code
- ;**CHANGED** MOV SI,0FFFFH
- MOV SI,OLD_W_09E3
- CALL WR_STRING_0601
- ;**CHANGED** MOV BYTE PTR DS:ALTR_B_0A0E+2,40H ; (72B5:0A10=40H) '@'
- MOV BYTE PTR DS:OLD_B_0A10,40H ; (72B5:0A10=40H) '@'
- LOC_09ED:
- ;**CHANGED** TEST BYTE PTR DATA_2875,0FFH ; (=0FFH)
- TEST BYTE PTR SW_T_TRACE_OUTP,0FFH ; (=0FFH)
- JZ LOC_0A6A
- MOV BL,DATA_2848 ; (=0)
- AND BL,0F8H ; clear low 3-bits
- LOC_09FB:
- ADD BL,8
- CALL SUB_05BC
- CMP BL,28H ; '('
- JB LOC_09FB
- ;**CHANGED** MOV WORD PTR DS:ALTR_W_0A47+1,10H ; (72B5:0A48=10H)
- MOV WORD PTR DS:OLD_W_0A48,10H ; (72B5:0A48=10H)
- JZ LOC_0A35
-
- ALTR_B_0A0E: ; Altered code
- ;**CHANGED** CMP BL,40H ; '@'
- CMP BL,OLD_B_0A10 ; '@'
- JB LOC_0A35
- CALL WR_CRLF_05AE
- CALL SUB_05BC
- CALL SUB_05BC
- CALL SUB_05BC
- ;**CHANGED** MOV WORD PTR DS:ALTR_W_0A47+1,18H ; (72B5:0A48=10H)
- MOV WORD PTR DS:OLD_W_0A48,18H ; (72B5:0A48=10H)
- CMP DATA_2854,6 ; (Tab counter ?)
- JA LOC_0A35
- CALL SUB_05BC
- CALL SUB_05BC
- CALL SUB_05BC
- LOC_0A35:
- CALL WR_SEMI_05B9
- MOV AX,DATA_2858 ; (=0)
- MOV CX,DATA_2854 ; (=0)
- SUB AX,CX
- ;**CHANGED** CMP CX,DS:ALTR_W_0A47+1 ; (72B5:0A48=10H)
- CMP CX,DS:OLD_W_0A48 ; (72B5:0A48=10H)
- JBE LOC_0A4A
-
- ALTR_W_0A47: ; Altered code
- ;**CHANGED** MOV CX,10H
- MOV CX,OLD_W_0A48
- LOC_0A4A:
- CALL SUB_058C
- MOV SI,OFFSET DATA_282B ; 24-byte buffer
-
- LOCLOOP_0A50:
- CALL SUB_05BF
- LODSB ; String [si] to al
- ;**CHANGED** MOV DI,OFFSET DATA_298B ; 132-byte line buffer
- MOV DI,OFFSET LINE_BUF_132CHR ; 132-byte line buffer
- PUSH DI
- CALL CNV_B_2_HX_1524
- POP DI
- XCHG SI,DI
- LODSB ; String [si] to al
- CALL WR_CHR_AL_05C1
- LODSB ; String [si] to al
- CALL WR_CHR_AL_05C1
- XCHG SI,DI
- LOOP LOCLOOP_0A50 ; Loop if cx > 0
-
- LOC_0A6A:
- CALL WR_CRLF_05AE
- TEST BYTE PTR DATA_285D,0FFH ; (=0)
- JZ LOC_0A7D
- MOV SI,OFFSET MN_TAB_NOP ; (72B5:239D=9)
- CALL WR_STRING_0601
- CALL WR_CRLF_05AE
-
- LOC_0A7D: ;test for op-code 81H, possible op-code 83H optimization.
-
- CMP BYTE PTR OPCODE_BYT_286B,81H ; (72B5:286B=0)
- JNE LOC_0AA0 ; Jump if not op-code 81H
-
- MOV AL,MOD_REG_RM_286C ; (72B5:286C=0)
- XOR AL,0C0H ;flip the MOD bits
- AND AL,0C7H ;mask out REG op-code bits
- JZ LOC_0AA0 ;PATCH83 not used for AX reg
- TEST AL,0C0H ;was it MOD 11?
- JNZ LOC_0AA0 ;PATCH83 only used for MOD 11
-
- CMP OLD_W_0946,07FH ;is value 0 thru 127?
- JA LOC_0AA_NEG ;if no, jump
-
- MOV BYTE PTR MAC_PATCH83,1 ; (72B5:24E0=0)
- MOV SI,OFFSET MN_PATCH83_POS
- CALL WR_STRING_0601
- JMP SHORT LOC_0AA0
-
- LOC_0AA_NEG:
- CMP OLD_W_0946,0FF80H ;is value -1 thru -128?
- JB LOC_0AA0 ;if no, jump
-
- MOV BYTE PTR MAC_PATCH83,1 ; (72B5:24E0=0)
- MOV SI,OFFSET MN_PATCH83_NEG
- CALL WR_STRING_0601
-
- LOC_0AA0:
- TEST BYTE PTR DATA_285C,0FFH ; (=0)
- JZ LOC_0AAA
- CALL WR_CRLF_05AE
- LOC_0AAA:
- TEST DATA_284D,0FFFFH ; (72B5:284D=0)
- JZ LOC_0AB5
- JMP LOC_0799
- LOC_0AB5:
- TEST BYTE PTR DATA_286D,0FFH ; (=0)
- JNZ LOC_0AE3
- MOV DX,DATA_2A94 ; Code Segment value
- MOV CL,4
- SHL DX,CL ; Shift w/zeros fill
- ADD DX,DATA_2A92 ; Code Offset value
- ;**CHANGED** MOV DS:ALTR_W_0B2B+1,DX ; (72B5:0B2C=0)
- MOV DS:OLD_W_0B2C,DX ; (72B5:0B2C=0)
- MOV BYTE PTR DATA_2887,0 ; (=0)
- MOV BYTE PTR OPW_HI_NBL_286A,0 ; (72B5:286A=0)
- MOV BYTE PTR OPJ_HI_BYT_2869,20H ; (72B5:2869=0) ' '
- ;**CHANGED** MOV BYTE PTR DATA_2871,0FFH ; (=0FFH)
- MOV BYTE PTR SW_R_TABLE_LST,0FFH ; (=0FFH)
- CALL SUB_0EAB
- LOC_0AE3:
- CMP BYTE PTR DATA_2861,1 ; (=0)
- JE LOC_0AFE
- ;**CHANGED** MOV BYTE PTR DATA_2870,0FFH ; (=0FFH)
- MOV BYTE PTR SW_O_OUTPUT_LST,0FFH ; (=0FFH)
- LOC_0AEF:
- TEST BYTE PTR DATA_2888,0FFH ; (=0)
- JZ LOC_0AFE
- CALL SUB_0FA8
- CALL SUB_10A8
- JMP SHORT LOC_0AEF
- LOC_0AFE:
- MOV DX,OFFSET FCB3_2A0F ; (72B5:2A0F=61H)
- MOV AH,10H
- INT 21H ; DOS Services ah=function 10h
- ; close file, FCB @ ds:dx
- CMP BYTE PTR DATA_2861,1 ; (=0)
- JNE LOC_0B1B
- MOV BYTE PTR DATA_2861,2 ; (=0)
- CMP BYTE PTR DATA_2862,41H ; (=0) 'A'
- JNE LOC_RET_0B49
- JMP LOC_0722
- LOC_0B1B:
- CALL SUB_1221
- MOV SI,OFFSET DATA_217E ; (72B5:217E=45H)
- CALL WR_STRING_0601
- TEST BYTE PTR DATA_286D,0FFH ; (=0)
- JNZ LOC_0B43
-
- ALTR_W_0B2B: ; Altered code
- ;**CHANGED** MOV DX,0
- MOV DX,OLD_W_0B2C
- CALL SUB_0E70
- CALL SUB_1B70
- JC LOC_0B3D
- JZ LOC_0B3D
- CALL WR_STRING_0601
- JMP SHORT LOC_0B43
- LOC_0B3D:
- CALL WR_L_05B6
- CALL SUB_05A6
- LOC_0B43:
- CALL WR_CRLF_05AE
- CALL SUB_064A
-
- LOC_RET_0B49:
- RETN
- SUB_0714 ENDP
-
-
- ;==========================================================================
- ; SUBROUTINE
- ;==========================================================================
-
- SUB_0B4A PROC NEAR
- MOV BX,DATA_2893 ; (=0)
- TEST BYTE PTR [BX],80H
- JNZ LOC_RET_0B6F
- MOV BYTE PTR DATA_2888,0FFH ; (=0)
- ;**CHANGED** MOV BYTE PTR DS:ALTR_B_0FBA+1,0 ; (72B5:0FBB=0)
- MOV BYTE PTR DS:OLD_B_0FBB,0 ; (72B5:0FBB=0)
- CALL SUB_0B70
- MOV SI,BP
- JNC LOC_0B67
- JMP LOC_0214
- LOC_0B67:
- CALL SUB_0FA8
- JZ LOC_0B67
- CALL SUB_064A
-
- LOC_RET_0B6F:
- RETN
- SUB_0B4A ENDP
-
-
- ;==========================================================================
- ; SUBROUTINE
- ;==========================================================================
-
- SUB_0B70 PROC NEAR
- MOV AX,OFFSET DTA4_2C9E ; (72B5:2C9E=0)
- MOV DATA_2881,AX ; (=0)
- MOV SI,OFFSET MN_TITLE ; (72B5:2431=54H)
- CALL WR_STRING_0601
- MOV SI,OFFSET FCB3_NAME_2A10 ; (72B5:2A10=6EH)
- MOV CX,8
-
- LOCLOOP_0B82:
- LODSB ; String [si] to al
- CMP AL,20H ; ' '
- JE LOC_0B8C
- CALL WR_CHR_AL_05C1
- LOOP LOCLOOP_0B82 ; Loop if cx > 0
-
- LOC_0B8C:
- ;**CHANGED** MOV DI,OFFSET DATA_298B ; 132-byte line buffer
- MOV DI,OFFSET LINE_BUF_132CHR ; 132-byte line buffer
- PUSH DI
- MOV AL,9
- STOSB ; Store al to es:[di]
- MOV DX,WORD PTR FCB3_DATE_2A23 ; (72B5:2A23=6365H)
- MOV BX,DX
- MOV CL,5
- SHR BX,CL ; Shift w/zeros fill
- AND BX,0FH ; clear high 12-bits
- ;*** nop ;*Fixup for MASM (M)
- PATCH83 0 ;PATCH83 edited in (JEG)
- CALL SUB_11E7
- MOV BX,DX
- AND BX,1FH ; clear high 11-bits
- ;*** nop ;*Fixup for MASM (M)
- PATCH83 0 ;PATCH83 edited in (JEG)
- CALL SUB_11E4
- MOV BL,DH
- SHR BX,1 ; Shift w/zeros fill
- ADD BX,50H
- CALL SUB_11E4
- MOV AX,5B09H ; "TAB ["
- STOSW ; Store ax to es:[di]
- MOV AH,2AH
- INT 21H ; DOS Services ah=function 2Ah
- ; get date, cx=year, dx=mon/day
- MOV BL,DH
- MOV BH,0
- CALL SUB_11E7
- MOV BL,DL
- CALL SUB_11E4
- MOV BX,CX
- SUB BX,76CH ;***** WHAT IS THIS ? *****
- CALL SUB_11E4
- MOV AL,5DH ; ']'
- STOSB ; Store al to es:[di]
- MOV AX,8A0DH ; "CR LF", high bit set
- STOSW ; Store ax to es:[di]
- POP SI
- CALL WR_STRING_0601
- CALL WR_CRLF_05AE
- MOV DX,OFFSET FCB4_2A34 ; (72B5:2A34=0DH)
- MOV AH,16H
- INT 21H ; DOS Services ah=function 16h
- ; creat/truncat file FCB @ds:dx
- PUSH AX
- MOV AH,FCB4_RESRV_2A4C ; (72B5:2A4C=73H)
- CMP AH,0FFH
- JE LOC_0C03
- MOV DX,OFFSET MS_WRITING_27FD ; (72B5:27FD=0DH)
- MOV AH,9
- INT 21H ; DOS Services ah=function 09h
- ; display char string at ds:dx
- MOV SI,OFFSET FCB4_2A34 ; (72B5:2A34=0DH)
- CALL SUB_06B1
- CALL DSPY_CRLF_06FB
- LOC_0C03:
- ;**CHANGED** MOV BYTE PTR DS:ALTR_OPB_064A+0,90H ; (72B5:064A=0C3H)
- MOV OLD_RET_NOP_064A,0FFH ; (=0C3H) set NOP
- MOV BYTE PTR FCB4_CUREC_2A54,0 ; (=52H)
- MOV WORD PTR FCB4_RECSZ_2A42,200H ; (72B5:2A42=4320H)
- ;**CHANGED** MOV BYTE PTR DATA_2872,0FFH ; (=0FFH)
- MOV BYTE PTR SW_E_EMBED_REF,0FFH ; (=0FFH)
- ;**CHANGED** MOV BYTE PTR DATA_2870,0FFH ; (=0FFH)
- MOV BYTE PTR SW_O_OUTPUT_LST,0FFH ; (=0FFH)
- MOV DATA_2849,0 ; (=0)
- MOV DATA_284B,0 ; (=0)
- MOV BP,DATA_2893 ; (=0)
- POP AX
-
- ;==== External Entry into Subroutine ======================================
-
- SUB_0C2E:
- OR AL,AL
- JZ LOC_RET_0C36
- MOV DX,OFFSET MS_DIRFULL_2691 ; (72B5:2691=4EH)
- STC ; Set carry flag
-
- LOC_RET_0C36:
- RETN
- SUB_0B70 ENDP
-
-
- ;==========================================================================
- ; SUBROUTINE
- ;==========================================================================
-
- SUB_0C37 PROC NEAR
- CALL SUB_0E00
- JNC LOC_0C3D
- RETN
- LOC_0C3D:
- MOV DATA_2889,DATA_2E9E_E ; (=0) (=0)
- MOV AX,DATA_288F ; (=0)
- MOV DATA_288D,AX ; (=0)
- XOR AX,AX
- MOV DATA_2867,AX ; (=0)
- MOV DATA_2866,AL ; (=0)
- ;**CHANGED** MOV DS:ALTR_B_0EF8+1,AL ; (72B5:0EF9=0)
- MOV DS:OLD_B_0EF9,AL ; (72B5:0EF9=0)
- MOV DATA_2856,AL ; (=0)
- MOV DATA_2919,AX ; (=0)
- ;**CHANGED** MOV DS:ALTR_W_0802+1,AX ; (72B5:0803=0)
- MOV DS:OLD_W_0803,AX ; (72B5:0803=0)
- MOV DATA_291B,AL ; (=0)
- MOV DATA_2887,AL ; (=0)
- MOV DATA_2854,AX ; (=0)
- CMP BYTE PTR DATA_2861,1 ; (=0)
- JNE LOC_0CD1
- XOR AX,AX
- ;**CHANGED** MOV DS:ALTR_B_10B6+1,AL ; (72B5:10B7=0)
- MOV DS:OLD_B_10B7,AL ; (72B5:10B7=0)
- MOV DATA_2853,AL ; (=0)
- MOV DATA_2891,AX ; (=0)
- MOV DATA_2A94,AX ; Code Segment value
- MOV DATA_2A92,100H ; Code Offset value
- MOV DATA_2A8C,AX ; (=0A0AH)
- MOV DATA_2A8E,0FFFFH ; (=7845H)
- MOV AX,WORD PTR FCB3_FILSZ_2A1F ; (72B5:2A1F=2058H)
- MOV DATA_2851,AX ; (=0)
- MOV DI,DATA_288F ; (=0)
- CMP WORD PTR FCB3_EXT1_2A18,5845H ; 'EX' test for EXE
- JNE LOC_0CB7
- CMP BYTE PTR FCB3_EXT3_2A1A,45H ; (72B5:2A1A=20H) 'E'
- JNE LOC_0CB7
- CALL SUB_0D5A
- MOV DI,DATA_2915 ; (=0)
- TEST BYTE PTR DATA_286D,0FFH ; (=0)
- JNZ LOC_0CB7
- MOV DATA_285A,0 ; (=0)
- LOC_0CB7:
- MOV DATA_2893,DI ; (=0)
- MOV BYTE PTR [DI],0C0H
- MOV AH,3
- CALL SUB_0F6C
- MOV AL,41H ; 'A'
- STOSB ; Store al to es:[di]
- XOR AX,AX
- ;**CHANGED** MOV DS:ALTR_W_1222+1,AX ; (72B5:1223=0)
- MOV DS:OLD_W_1223,AX ; (72B5:1223=0)
- STOSW ; Store ax to es:[di]
- MOV BYTE PTR DATA_2888,0 ; (=0)
- LOC_0CD1:
- MOV AX,DATA_2851 ; (=0)
- MOV DATA_284D,AX ; (72B5:284D=0)
- MOV WORD PTR FCB3_RECSZ_2A1D,200H ; (72B5:2A1D=90AH)
- MOV WORD PTR FCB3_BLKNO_2A1B,0 ; (72B5:2A1B=0D3AH)
- MOV AL,DATA_2853 ; (=0)
- MOV FCB3_CUREC_2A2F,AL ; (=65H)
- MOV DI,OFFSET INIT_CS_SEG_FIX ; (72B5:2603=30H)
- MOV DX,DATA_2A94 ; Code Segment value
- CALL CNV_W_2_HX_151D
- MOV DX,DATA_2A92 ; Code Offset value
- INC DI
- CALL CNV_W_2_HX_151D
- MOV DI,OFFSET DATA_2823 ; (=0)
- XOR AX,AX
- MOV CX,4
- REP STOSW ; Rep when cx >0 Store ax to es:[di]
- MOV DI,OFFSET INIT_SP_SEG_FIX ; (72B5:2618=30H)
- MOV DX,DATA_2A8C ;
- CALL CNV_W_2_HX_151D
- INC DI
- MOV CL,4
- SHL DX,CL ; Shift w/zeros fill
- PUSH DX
- MOV DX,DATA_2A8E ;
- CALL CNV_W_2_HX_151D
- MOV AX,DATA_285A ; (=0)
- MOV DATA_2858,AX ; (=0)
- MOV DATA_287F,OFFSET DTA4_2C9E ; (=0) (72B5:2C9E=0)
- POP AX
- PUSH AX
- ADD DX,AX
- ;**CHANGED** TEST BYTE PTR DS:ALTR_B_10B6+1,0FFH ; (72B5:10B7=0)
- TEST BYTE PTR DS:OLD_B_10B7,0FFH ; (72B5:10B7=0)
- PUSHF
- JZ LOC_0D3D
- CALL SUB_0EAB
-
- ALTR_W_0D37: ; Altered code
- ;**CHANGED** MOV BX,0
- MOV BX,OLD_W_0D38
- OR BYTE PTR [BX],1
- LOC_0D3D:
- POPF
- POP DX
- JZ LOC_0D53
- CALL SUB_0EAB
- ;**CHANGED** MOV BX,DS:ALTR_W_0D37+1 ; (72B5:0D38=0)
- MOV BX,DS:OLD_W_0D38 ; (72B5:0D38=0)
- OR BYTE PTR [BX],1
- MOV DATA_2825,DX ; (=0)
- ;**CHANGED** MOV DS:ALTR_W_10BC+2,DX ; (72B5:10BE=8888H)
- MOV DS:OLD_W_10BE,DX ; (72B5:10BE=8888H)
- LOC_0D53:
- CLC ; Clear carry flag
- ;**CHANGED** MOV BYTE PTR DS:ALTR_B_0FBA+1,0 ; (72B5:0FBB=0)
- MOV BYTE PTR DS:OLD_B_0FBB,0 ; (72B5:0FBB=0)
-
- LOC_RET_0D59:
- RETN
- SUB_0C37 ENDP
-
-
- ;==========================================================================
- ; SUBROUTINE
- ;==========================================================================
-
- SUB_0D5A PROC NEAR
- ;**CHANGED** DEC BYTE PTR DS:ALTR_B_10B6+1 ; (72B5:10B7=0)
- DEC BYTE PTR DS:OLD_B_10B7 ; (72B5:10B7=0)
- MOV CX,1AH
- MOV WORD PTR FCB3_RECSZ_2A1D,1 ; (72B5:2A1D=90AH)
- MOV DX,OFFSET DTA1_2A7E ; (72B5:2A7E=72H)
- MOV AH,1AH
- INT 21H ; DOS Services ah=function 1Ah
- ; set DTA to ds:dx
- MOV DX,OFFSET FCB3_2A0F ; (72B5:2A0F=61H)
- MOV CX,1AH
- MOV AH,27H
- INT 21H ; DOS Services ah=function 27h
- ; random block read, FCB @ds:dx
- OR AL,AL
- JZ LOC_0D7F
- JMP SHORT LOC_0DFA
- ;*** DB 90H
- LOC_0D7F:
- MOV AX,DATA_2A86 ;
- ADD AX,1FH
- MOV CL,5
- SHR AX,CL ; Shift w/zeros fill
- MOV DATA_2853,AL ; (=0)
- MOV CL,9
- SHL AX,CL ; Shift w/zeros fill
- XCHG AX,BX
- MOV AX,DATA_2A82 ;
- DEC AX
- SHL AX,CL ; Shift w/zeros fill
- SUB AX,BX
- MOV BX,DATA_2A80 ;
- CMP BX,4
- JNE LOC_0DA5
- MOV BX,200H
- LOC_0DA5:
- ADD AX,BX
- MOV DATA_2851,AX ; (=0)
- MOV AX,DATA_2A96 ; FCB3 Random Rec Num value
- MOV FCB3_RNDRC_2A30,AX ; (=7073H)
- TEST DATA_2A84,0FFFFH ;
- JZ LOC_RET_0D59
- MOV DX,OFFSET DTA2_2A98
- MOV AH,1AH
- INT 21H ; DOS Services ah=function 1Ah
- ; set DTA to ds:dx
- LOC_0DBF:
- MOV DX,OFFSET FCB3_2A0F ; (72B5:2A0F=61H)
- MOV CX,4
- MOV AH,27H
- INT 21H ; DOS Services ah=function 27h
- ; random block read, FCB @ds:dx
- OR AL,AL
- JNZ LOC_0DFA
- MOV BX,WORD PTR DTA2_W2_2A9A ; Segment value
- MOV CL,4
- SHL BX,CL ; Shift w/zeros fill
- ADD BX,WORD PTR DTA2_2A98 ; Offset value
- MOV DI,DATA_288F ; (=0)
- LOC_0DDD:
- CMP DI,DATA_2915 ; (=0)
- JAE LOC_0DEC
- CMP BX,[DI]
- JBE LOC_0DEC
- ADD DI,2
- JMP SHORT LOC_0DDD
- LOC_0DEC:
- MOV AH,2
- CALL SUB_0F6C
- XCHG AX,BX
- STOSW ; Store ax to es:[di]
- DEC DATA_2A84 ; (=7420H)
- JNZ LOC_0DBF
- RETN
- LOC_0DFA:
- MOV DX,OFFSET MS_ERR_RD_26C6 ; (72B5:26C6=45H)
- JMP LOC_0214
- SUB_0D5A ENDP
-
-
- ;==========================================================================
- ; SUBROUTINE
- ;==========================================================================
-
- SUB_0E00 PROC NEAR
- MOV DX,OFFSET FCB3_2A0F ; (72B5:2A0F=61H)
- MOV DI,OFFSET FCB3_BLKNO_2A1B ; (72B5:2A1B=3AH)
- MOV CX,19H ; 25 decimal, initiallize FCB3
- MOV AL,0
- REP STOSB ; Rep when cx >0 Store al to es:[di]
- MOV AH,0FH
- INT 21H ; DOS Services ah=function 0Fh
- ; open file, FCB @ ds:dx
- MOV DATA_287F,OFFSET DTA4_2C9E ; (=0) (72B5:2C9E=0)
- MOV WORD PTR FCB3_RECSZ_2A1D,200H ; (72B5:2A1D=90AH)
- OR AL,AL
- JZ LOC_RET_0E36
- MOV DX,OFFSET MS_FILE_267D ; (72B5:267D=46H)
- MOV AH,9
- INT 21H ; DOS Services ah=function 09h
- ; display char string at ds:dx
- MOV SI,OFFSET FCB3_2A0F ; (72B5:2A0F=61H)
- CALL SUB_06B1
- MOV DX,OFFSET MS_NOTFND_2683 ; (72B5:2683=20H)
- MOV AH,9
- INT 21H ; DOS Services ah=function 09h
- ; display char string at ds:dx
- STC ; Set carry flag
-
- LOC_RET_0E36:
- RETN
- SUB_0E00 ENDP
-
-
- ;==========================================================================
- ; SUBROUTINE
- ;==========================================================================
-
- SUB_0E37 PROC NEAR
- CALL SCAN_SPTAB_0E3F
- CMP AL,2CH ; ','
- JNE LOC_0E49
- INC SI
-
- ;==== External Entry into Subroutine ======================================
- ;
- ; Scan off spaces and Tabs
-
- SCAN_SPTAB_0E3F:
- LOC_0E3F:
- LODSB ; String [si] to al
- CMP AL,20H ; ' '
- JE LOC_0E3F
- CMP AL,9 ; TAB
- JE LOC_0E3F
- DEC SI
- LOC_0E49:
- CMP AL,0DH ; CR
- RETN
- SUB_0E37 ENDP
-
-
- ;==========================================================================
- ; SUBROUTINE
- ;==========================================================================
-
- SUB_0E4C PROC NEAR
- MOV SI,DATA_2893 ; (=0)
- LOC_0E50:
- MOV DL,0
- TEST BYTE PTR [SI],80H
- JZ LOC_0E58
- RETN
- LOC_0E58:
- MOV BX,SI
- LOC_0E5A:
- ADD SI,3
- MOV AL,[SI]
- TEST AL,0C0H
- JNZ LOC_0E67
- OR DL,AL
- JMP SHORT LOC_0E5A
- LOC_0E67:
- OR DL,DL
- JNZ LOC_0E50
- OR BYTE PTR [BX],20H ; ' '
- JMP SHORT LOC_0E50
- SUB_0E4C ENDP
-
-
- ;==========================================================================
- ; SUBROUTINE
- ;==========================================================================
-
- SUB_0E70 PROC NEAR
- CMP DATA_2891,40H ; (=0)
- MOV DI,OFFSET DATA_2895 ; 128-byte buffer
- JC LOC_0E88
- MOV CX,20H
- JMP SHORT LOC_0E82
-
- LOCLOOP_0E7F:
- ADD DI,4
- LOC_0E82:
- CMP DX,[DI]
- JE LOC_0E8F
- JNC LOC_0E8D
- LOC_0E88:
- SUB DI,4
- JMP SHORT LOC_0E8F
- LOC_0E8D:
- LOOPNZ LOCLOOP_0E7F ; Loop if zf=0, cx>0
-
- LOC_0E8F:
- MOV DI,[DI+2]
- JMP SHORT LOC_0E97
- LOC_0E94:
- ADD DI,3
- LOC_0E97:
- MOV AL,[DI]
- TEST AL,0C0H
- JZ LOC_0E94
- TEST AL,80H
- JNZ LOC_0EA6
- CMP DX,[DI+1]
- JA LOC_0E94
- LOC_0EA6:
- ;**CHANGED** MOV DS:ALTR_W_0D37+1,DI ; (72B5:0D38=0)
- MOV DS:OLD_W_0D38,DI ; (72B5:0D38=0)
- RETN
- SUB_0E70 ENDP
-
-
- ;==========================================================================
- ; SUBROUTINE
- ;==========================================================================
-
- SUB_0EAB PROC NEAR
- LOC_0EAB:
- CMP BYTE PTR DATA_2861,1 ; (=0)
- JNE LOC_0EA6
- ;**CHANGED** TEST BYTE PTR DATA_2871,0FFH ; (=0FFH)
- TEST BYTE PTR SW_R_TABLE_LST,0FFH ; (=0FFH)
- JZ LOC_0EA6
- PUSH DI
- MOV BX,DATA_2858 ; (=0)
- TEST BYTE PTR DATA_2887,7FH ; (=0)
- JNZ LOC_0EC9
- SUB BX,DATA_2854 ; (=0)
- LOC_0EC9:
- CALL SUB_0E70
- JZ LOC_0EE4
- MOV AH,6
- INC DATA_2891 ; (=0)
- CALL SUB_0F76
- JC ALTR_B_0EF8
- MOV BYTE PTR [DI],40H ; '@'
- MOV [DI+1],DX
- ADD DI,3
- JMP SHORT LOC_0F0C
- LOC_0EE4:
- ADD DI,3
- TEST BYTE PTR [DI],0C0H
- JNZ LOC_0EF1
- CMP BX,[DI+1]
- JAE LOC_0EE4
- LOC_0EF1:
- MOV AH,3
- CALL SUB_0F76
- JNC LOC_0F0C
-
- ALTR_B_0EF8: ; Altered code
- ;**CHANGED** MOV AL,0
- MOV AL,OLD_B_0EF9
- OR AL,AL
- JNZ LOC_0F6A
- PUSH DX
- MOV DX,OFFSET MS_REF_TBL_INCOMP ; (72B5:27B6=7)
- MOV AH,9
- ;**CHANGED** MOV DS:ALTR_B_0EF8+1,AH ; (72B5:0EF9=0)
- MOV DS:OLD_B_0EF9,AH ; (72B5:0EF9=0) value=9
- INT 21H ; DOS Services ah=function 09h
- ; display char string at ds:dx
- JMP SHORT LOC_0F69
- LOC_0F0C:
- MOV AL,OPW_HI_NBL_286A ; (72B5:286A=0)
- MOV CL,4
- SHR AL,CL ; Shift w/zeros fill
- MOV CL,30H ; '0'
- AND CL,OPJ_HI_BYT_2869 ; (72B5:2869=0)
- OR AL,CL
- TEST BYTE PTR DATA_2887,7FH ; (=0)
- JZ LOC_0F24
- MOV AL,0
- LOC_0F24:
- MOV [DI],AL
- MOV [DI+1],BX
- MOV BYTE PTR DATA_2888,0FFH ; (=0)
- TEST DATA_2891,3FH ; (=0)
- JNZ LOC_0F6A
- MOV SI,DATA_2893 ; (=0)
- MOV DI,OFFSET DATA_2895 ; 128-byte buffer
- PUSH DX
- PUSH BX
- MOV BL,20H ; ' '
- MOV CL,5
- MOV DX,DATA_2891 ; (=0)
-
- ALTR_B_0F47: ; Altered code
- ;**CHANGED** MOV AL,0
- MOV AL,OLD_B_0F48
- CMP AL,DL
- JE LOC_0F68
- ;**CHANGED** MOV DS:ALTR_B_0F47+1,DL ; (72B5:0F48=0)
- MOV DS:OLD_B_0F48,DL ; (72B5:0F48=0)
- SHR DX,CL ; Shift w/zeros fill
- LOC_0F53:
- MOV CX,DX
- MOV AX,SI
- INC SI
- MOVSW ; Mov [si] to es:[di]
- STOSW ; Store ax to es:[di]
-
- LOCLOOP_0F5A:
- ADD SI,3
- TEST BYTE PTR [SI],0C0H
- JZ LOCLOOP_0F5A
- LOOP LOCLOOP_0F5A ; Loop if cx > 0
-
- DEC BL
- JNZ LOC_0F53
- LOC_0F68:
- POP BX
- LOC_0F69:
- POP DX
- LOC_0F6A:
- POP DI
- RETN
- SUB_0EAB ENDP
-
-
- ;==========================================================================
- ; SUBROUTINE
- ;==========================================================================
-
- SUB_0F6C PROC NEAR
- CALL SUB_0F76
- JNC LOC_RET_0F75
- POP AX ; equallize stack
- JMP LOC_0126 ; memory full error message
-
- LOC_RET_0F75:
- RETN
- SUB_0F6C ENDP
-
-
- ;==========================================================================
- ; SUBROUTINE
- ;==========================================================================
-
- SUB_0F76 PROC NEAR
- PUSH DI
- PUSH SI
- PUSH CX
- PUSH AX
- MOV AL,AH
- MOV AH,0
- MOV CX,DATA_2915 ; (=0)
- MOV SI,CX
- SUB CX,DI
- INC CX
- MOV DI,SI
- ADD DI,AX
- CMP DI,DATA_2E9E_E ; (=0)
- JB LOC_0F97
- CMP DATA_2883,DI ; (=0)
- JAE LOC_0F9A
- LOC_0F97:
- STC ; Set carry flag
- JMP SHORT LOC_0FA3
- LOC_0F9A:
- MOV DATA_2915,DI ; (=0)
- STD ; Set direction flag
- REP MOVSB ; Rep when cx >0 Mov [si] to es:[di]
- CLD ; Clear direction
- CLC ; Clear carry flag
- LOC_0FA3:
- POP AX
- POP CX
- POP SI
- POP DI
-
- LOC_RET_0FA7:
- RETN
- SUB_0F76 ENDP
-
-
- ;==========================================================================
- ; SUBROUTINE
- ;==========================================================================
-
- SUB_0FA8 PROC NEAR
- TEST BYTE PTR DATA_2888,0FFH ; (=0)
- JZ LOC_RET_0FA7
- MOV DI,BP
- MOV AL,[DI]
- AND AL,1 ; clear all but bit-0
- ;**CHANGED** MOV DS:ALTR_B_10AA+1,AL ; (72B5:10AB=0)
- MOV DS:OLD_B_10AB,AL ; (72B5:10AB=0)
- JZ LOC_0FC3
-
- ALTR_B_0FBA: ; Altered code
- ;**CHANGED** MOV AL,0
- MOV AL,OLD_B_0FBB
- OR AL,AL
- JZ LOC_0FC3
- CALL SUB_1221
- LOC_0FC3:
- PUSH WORD PTR [DI+1]
- MOV SI,BP
- MOV BYTE PTR DATA_2863,0 ; (=0)
- ;**CHANGED** MOV AL,DATA_2870 ; (=0FFH)
- MOV AL,SW_O_OUTPUT_LST ; (=0FFH)
- PUSH AX
- OR AL,AL
- JZ LOC_0FD8
- ;**CHANGED** MOV AL,DATA_2872 ; (=0FFH)
- MOV AL,SW_E_EMBED_REF ; (=0FFH)
- LOC_0FD8:
- ;**CHANGED** MOV DATA_2870,AL ; (=0FFH)
- MOV SW_O_OUTPUT_LST,AL ; (=0FFH)
- CALL SUB_1067
- XOR CX,CX
- LOC_0FE0:
- INC DATA_2863 ; (=0)
- MOV AL,DATA_2863 ; (=0)
- MOV BX,8
- CMP BYTE PTR DATA_2862,41H ; (=0) 'A'
- JNE LOC_0FF4
- INC AL
- INC BX
- LOC_0FF4:
- OR CX,CX
- JZ LOC_100C
- CMP AL,9
- JBE LOC_1009
- CALL WR_CRLF_05AE
- CALL SUB_1067
- MOV BYTE PTR DATA_2863,2 ; (=0)
- MOV CX,BX
- LOC_1009:
- CALL SUB_060E
- LOC_100C:
- CMP BYTE PTR DATA_2862,41H ; (=0) 'A'
- JNE LOC_1016
- CALL WR_L_05B6
- LOC_1016:
- LODSB ; String [si] to al
- LODSW ; String [si] to ax
- CALL SUB_058C
- MOV CX,4
- MOV AL,[SI-3]
- TEST AL,40H ; '@'
- JZ LOC_102D
- TEST AL,1
- JZ LOC_104D
- MOV AL,53H ; 'S'
- JMP SHORT LOC_1049
- LOC_102D:
- PUSH AX
- CALL SUB_05BF
- POP AX
- MOV CL,4
- SHR AL,CL ; Shift w/zeros fill
- AND AL,3 ; clear all but 2 LSB's
- MOV BX,OFFSET DATA_24DC ; (72B5:24DC=44H)
- XLAT ; al=[al+[bx]] table
- CALL WR_CHR_AL_05C1
- DEC CX
- MOV AL,[SI-3]
- AND AL,0FH ; clear high 4-bits
- MOV BX,OFFSET DATA_24D3 ; (72B5:24D3=49H)
- XLAT ; al=[al+[bx]] table
- LOC_1049:
- CALL WR_CHR_AL_05C1
- DEC CX
- LOC_104D:
- CMP BYTE PTR [SI],3FH ; '?'
- JBE LOC_0FE0
- CALL WR_CRLF_05AE
- POP AX
- ;**CHANGED** MOV DATA_2870,AL ; (=0FFH)
- MOV SW_O_OUTPUT_LST,AL ; (=0FFH)
- MOV BP,SI
- LODSB ; String [si] to al
- TEST AL,80H
- JZ LOC_1065
- MOV BYTE PTR DATA_2888,0 ; (=0)
- LOC_1065:
- POP DX
- RETN
- SUB_0FA8 ENDP
-
-
- ;==========================================================================
- ; SUBROUTINE
- ;==========================================================================
-
- SUB_1067 PROC NEAR
- CMP BYTE PTR DATA_2862,41H ; (=0) 'A'
- JNE LOC_107B
- PUSH CX
- MOV CX,6
-
- LOCLOOP_1072:
- CALL SUB_05BC
- LOOP LOCLOOP_1072 ; Loop if cx > 0
-
- POP CX
- JMP LOC_05B9
- LOC_107B:
- MOV BYTE PTR DATA_2848,0 ; (=0)
- RETN
- SUB_1067 ENDP
-
-
- ;==========================================================================
- ; SUBROUTINE
- ;==========================================================================
-
- SUB_1081 PROC NEAR
-
- ALTR_J_B_1081: ; Altered JMP offset, to 10A7 or 'NOP'
-
- ;**CHANGED** JMP SHORT LOC_RET_10A7
- TEST BYTE PTR OLD_JUMP_1082,0FFH
- JZ LOC_RET_10A7
-
- ;==== External Entry into Subroutine ======================================
-
- SUB_1083:
-
- ; 24H s/b LOC_RET_10A7-SUB_1081-2
- ;**CHANGED** MOV BYTE PTR DS:ALTR_J_B_1081+1,24H ; (72B5:1082=24H) '$'
- ;**CHANGED** MOV BYTE PTR DS:ALTR_J_B_1081+1,LOC_RET_10A7-SUB_1081-2
- MOV BYTE PTR DS:OLD_JUMP_1082,0 ;take jump next time
- PUSH DI
- PUSH DX
- MOV SI,OFFSET DATA_2823 ; (=0)
- MOV DI,OFFSET FIX_DS_SEG ; (72B5:2470=30H)
- MOV CX,4
-
- LOCLOOP_1093:
- PUSH CX
- LODSW ; String [si] to ax
- XCHG AX,DX
- CALL CNV_W_2_HX_151D
- POP CX
- ADD DI,6
- LOOP LOCLOOP_1093 ; Loop if cx > 0
-
- MOV SI,OFFSET MN_ASSUME ; (72B5:2464=9)
- CALL WR_STRING_0601
- POP DX
- POP DI
-
- LOC_RET_10A7:
- RETN
- SUB_1081 ENDP
-
-
- ;==========================================================================
- ; SUBROUTINE
- ;==========================================================================
-
- SUB_10A8 PROC NEAR
- PUSH DX
- PUSHF
-
- ALTR_B_10AA: ; Altered code
- ;**CHANGED** MOV AL,0
- MOV AL,OLD_B_10AB
- TEST AL,1
- JZ LOC_110E
- MOV WORD PTR FIX_MN_STK,8A0DH ; "CR LF", high bit set
-
- ALTR_B_10B6: ; Altered code
- ;**CHANGED** MOV AL,0
- MOV AL,OLD_B_10B7
- OR AL,AL
- JZ LOC_10C8
- ALTR_W_10BC:
- ;**CHANGED** CMP DX,8888H
- CMP DX,OLD_W_10BE
- JNE LOC_10C8
- MOV WORD PTR FIX_MN_STK,2020H ; "Space Space"
- LOC_10C8:
- MOV AL,53H ; 'S'
- CALL WR_CHR_AL_05C1
- ;CHANGED** MOV DS:ALTR_W_1222+1,DX ; (72B5:1223=0)
- MOV DS:OLD_W_1223,DX ; (72B5:1223=0)
- CALL SUB_05A6
- MOV SI,OFFSET MN_SEG_STK ; (72B5:2453=9)
- CALL WR_STRING_0601
- MOV WORD PTR FIX_MN_STK,8A0DH ; "CR LF", bit-7 set
- ;**CHANGED** MOV BYTE PTR DS:ALTR_B_0FBA+1,0FFH ; (72B5:0FBB=0)
- MOV BYTE PTR DS:OLD_B_0FBB,0FFH ; (72B5:0FBB=0)
- TEST BYTE PTR DATA_2887,7FH ; (=0)
- JNZ LOC_10EF
- CALL SUB_1083
- LOC_10EF:
- OR DX,DX
- JNZ LOC_110E
- MOV AX,DATA_285A ; (=0)
- OR AX,AX
- JZ LOC_110E
- PUSH DX
- XCHG AX,DX
- MOV SI,OFFSET MN_ORG_$ ; (72B5:2494=9)
- CALL WR_STRING_0601
- CALL SUB_05A6
- MOV AL,48H ; 'H'
- CALL WR_CHR_AL_05C1
- CALL WR_CRLF_05AE
- POP DX
- LOC_110E:
- MOV AX,DATA_2858 ; (=0)
- TEST DATA_284D,0FFFFH ; (72B5:284D=0)
- JZ LOC_111D
- CMP AX,DX
- JE LOC_1122
- LOC_111D:
- CALL SUB_119B
- JMP SHORT LOC_1198
- LOC_1122:
- PUSH SI
- ALTR_W_1123:
- ;**CHANGED** MOV SI,0
- MOV SI,OLD_W_1124
- CMP DX,[SI-4]
- JNE LOC_1185
- TEST BYTE PTR [SI-1],0FFH
- JZ LOC_1185
- PUSH DX
- MOV DL,[SI-1]
- TEST DL,80H
- JZ LOC_1150
- PUSH SI
- XOR DX,DX
- LOC_113D:
- LODSB ; String [si] to al
- INC DX
- TEST AL,80H
- JZ LOC_113D
- CALL WR_SEMI_05B9
- CALL SUB_05BC
- CALL WR_STRING_0601
- CALL WR_CRLF_05AE
- POP SI
- LOC_1150:
- CMP BYTE PTR [SI],0AEH
- JE LOC_1184
- POP AX
- CALL WR_STRING_0601
- TEST BYTE PTR DATA_2887,0FH ; (=0)
- JNZ LOC_1167
- INC DL
- MOV AL,3AH ; ':'
- CALL WR_CHR_AL_05C1
- LOC_1167:
- CMP DL,7
- JBE LOC_1181
- TEST BYTE PTR DATA_2887,0FH ; (=0)
- JZ LOC_117E
- MOV SI,OFFSET DATA_218C_EQU ; (72B5:218C=9)
- CALL WR_STRING_0601
- MOV AL,24H ; '$'
- CALL WR_CHR_AL_05C1
- LOC_117E:
- CALL WR_CRLF_05AE
- LOC_1181:
- POP SI
- JMP SHORT LOC_1198
- LOC_1184:
- POP DX
- LOC_1185:
- POP SI
- CALL WR_L_05B6
- CALL SUB_05A6
- TEST BYTE PTR DATA_2887,0FH ; (=0)
- JNZ LOC_1198
- MOV AL,3AH ; ':'
- CALL WR_CHR_AL_05C1
- LOC_1198:
- POPF
- POP DX
- RETN
- SUB_10A8 ENDP
-
-
- ;==========================================================================
- ; SUBROUTINE
- ;==========================================================================
-
- SUB_119B PROC NEAR
- PUSH DX
- ;**CHANGED** MOV DI,OFFSET DATA_298B ; 132-byte line buffer
- MOV DI,OFFSET LINE_BUF_132CHR ; 132-byte line buffer
- PUSH DI
- PUSH AX
- ;**CHANGED** MOV SI,DS:ALTR_W_1123+1 ; (72B5:1124=0)
- MOV SI,DS:OLD_W_1124 ; (72B5:1124=0)
- CMP DX,[SI-4]
- JNE LOC_11B5
- TEST BYTE PTR [SI-1],0FFH
- JZ LOC_11B5
- CALL WRT_STRING_18A4
- JMP SHORT LOC_11BB
- LOC_11B5:
- MOV AL,4CH ; 'L'
- STOSB ; Store al to es:[di]
- CALL CNV_W_2_HX_151D
- LOC_11BB:
- MOV SI,OFFSET DATA_218C_EQU ; (72B5:218C=9)
- CALL WRT_STRING_18A4
- POP AX
- SUB AX,DX
- XCHG AX,DX
- MOV AL,24H ; '$'
- MOV AH,2DH ; '-'
- OR DH,DH
- JNS LOC_11D1 ; Jump if not sign
- MOV AH,2BH ; '+'
- NEG DX
- LOC_11D1:
- STOSW ; Store ax to es:[di]
- CALL SUB_1345
- CALL SUB_136C
- MOV BYTE PTR [DI],0
- POP SI
- CALL WR_STRING_0601
- CALL WR_CRLF_05AE
- POP DX
- RETN
- SUB_119B ENDP
-
-
- ;==========================================================================
- ; SUBROUTINE
- ;==========================================================================
-
- SUB_11E4 PROC NEAR
- MOV AL,2DH ; '-'
- STOSB ; Store al to es:[di]
-
- ;==== External Entry into Subroutine ======================================
-
- SUB_11E7:
- PUSH CX
- PUSH SI
- MOV SI,OFFSET LOC_1215
- MOV CX,5
- LOC_11EF:
- MOV AL,0
- ADD SI,2
- LOC_11F4:
- SUB BX,[SI]
- JC LOC_11FC
- INC AL
- JMP SHORT LOC_11F4
- LOC_11FC:
- ADD BX,[SI]
- OR AL,30H ; '0'
- OR CH,CH
- JNZ LOC_1208
- TEST AL,0FH
- JZ LOC_120B
- LOC_1208:
- STOSB ; Store al to es:[di]
- INC CH
- LOC_120B:
- DEC CL
- JNZ LOC_11EF
- OR CH,CH
- JNZ LOC_1214
- STOSB ; Store al to es:[di]
- LOC_1214:
- POP SI
- LOC_1215:
- POP CX
- RETN
- SUB_11E4 ENDP
-
- DATA_1217 DW 2710H, 3E8H, 64H
- DW 0AH, 1
-
- ;==========================================================================
- ; SUBROUTINE
- ;==========================================================================
-
- SUB_1221 PROC NEAR
- PUSH DX
- ALTR_W_1222:
- ;**CHANGED** MOV DX,0
- MOV DX,OLD_W_1223
- CALL SUB_05BC
- MOV AL,53H ; 'S'
- CALL WR_CHR_AL_05C1
- CALL SUB_05A6
- MOV SI,OFFSET DATA_2182 ; (72B5:2182=9)
- CALL WR_STRING_0601
- POP DX
- RETN
- SUB_1221 ENDP
-
-
- ;==========================================================================
- ; Read byte and skip over Space or Tab
- ;==========================================================================
-
- RD_SK_SPTB_1238 PROC NEAR
- LOC_1238:
- CALL RD_NXT_BYT_1B1B
- CMP AL,20H ; ' '
- JE LOC_1238
- CMP AL,9
- JE LOC_1238
- RETN
- RD_SK_SPTB_1238 ENDP
-
- DB 10,'Op-codes '
-
- ;==========================================================================
- ; SUBROUTINE
- ;==========================================================================
- ; op-codes: 26, 2E, 36, 3E
-
- OP_1250 PROC NEAR
- LOC_1250:
- TEST BYTE PTR DATA_2866,0FFH ; (=0)
- JZ LOC_125A
- JMP LOC_17D1
- LOC_125A:
- MOV DATA_2866,AL ; (=0)
- SHL AL,1 ; Shift w/zeros fill
- NOT AL
- AND AL,30H ; clear all but bits 4 & 5
- MOV OPJ_HI_BYT_2869,AL ; (72B5:2869=0)
- JMP SHORT LOC_1277
-
- ;==== External Entry into Subroutine ======================================
- ; op-codes: F0, F2, F3
-
- OP_1268:
- MOV SI,OPW_TBL_WD_285F ; (72B5:285F=0)
- AND SI,0FFFH ; clear high 4-bits
- ADD SI,OFFSET MN_AAA ; (72B5:20F4=41H)
- CALL WR_STRING_0601
-
- ;==== External Entry into Subroutine ======================================
-
- SUB_1277:
- LOC_1277:
- CALL RD_NXT_BYT_1B1B
- MOV AH,0
- MOV BX,AX
- MOV OPCODE_BYT_286B,AL ; (72B5:286B=0)
- ADD BX,BX
- ADD BX,BX
- ADD BX,OFFSET OPW_00_ADD ; Op-code Dispatch Table
- MOV CX,[BX]
- MOV OPW_TBL_WD_285F,CX ; (72B5:285F=0)
- MOV DH,0F0H ; mask for AND
- AND DH,CH ; keep high 4-bits
- MOV OPW_HI_NBL_286A,DH ; (72B5:286A=0)
- AND BYTE PTR OPW_HI_NBL_286A,0F0H ; (72B5:286A=0)
- ;**CHANGED** MOV DI,OFFSET DATA_298B ; 132-byte line buffer
- MOV DI,OFFSET LINE_BUF_132CHR ; 132-byte line buffer
- MOV BX,[BX+2]
- TEST BYTE PTR DATA_2866,0FFH ; (=0)
- JNZ LOC_12AD
- MOV OPJ_HI_BYT_2869,BH ; (72B5:2869=0)
- LOC_12AD:
- AND BH,0FH ; keep low 12-bits of BX
- ;**CHANGED** ADD BX,WORD PTR OPJ_BASE_288B ; (72B5:288B=1250H)
- ADD BX,OFFSET LOC_1250 ; beginning of op-code handlers
- XCHG CX,BX
-
- ; Op-code byte (X4) is index
- JMP CX ;*Register jump
- DB 10,'Dispatch '
- ;==== External Entry into Subroutine ======================================
- ; op-codes: 80-82
-
- OP_12B8:
- CALL SUB_17E6
- LOC_12BB:
- CALL SUB_18B0
- JMP SHORT LOC_1322
-
- ;==== External Entry into Subroutine ======================================
- ; op-codes: 83
-
- OP_12C0:
- CALL SUB_17E6
- CALL SUB_18B0
- MOV AL,2CH ; ','
- STOSB ; Store al to es:[di]
- CALL RD_NXT_BYT_1B1B
- CBW ; Convrt byte to word
- XCHG AX,DX
- MOV BYTE PTR OPW_HI_NBL_286A,0 ; (72B5:286A=0)
- CALL SUB_1420
- CALL SUB_13CB
- OR DH,DH
- JNZ LOC_12DE
- RETN
- LOC_12DE:
- DEC DI
- CMP BYTE PTR [DI-1],2CH ; ','
- JNE LOC_12DE
- NEG DX
- MOV AL,2DH ; '-'
- STOSB ; Store al to es:[di]
- JMP SHORT LOC_1345
- ;*** DB 90H
-
- ;==== External Entry into Subroutine ======================================
- ; op-codes: C4, C5
-
- OP_12ED:
- CALL PARS_MOD_B_1836
- CALL SUB_1551
- MOV AL,2CH ; ','
- STOSB ; Store al to es:[di]
- MOV SI,OFFSET DATA_2174 ; (72B5:2174=44H)
- CALL WRT_STRING_18A4
- JMP LOC_18BA
-
- ;==== External Entry into Subroutine ======================================
- ; op-codes: C6, C7
-
- OP_12FF:
- CALL PARS_MOD_B_1836
- OR AL,AL
- JZ LOC_12BB
- JMP LOC_17FE
-
- ;==== External Entry into Subroutine ======================================
- ; op-codes: C2
-
- OP_1309:
- MOV BX,OFFSET MAC_RET_NEAR_P ; (72B5:258B=0)
- JMP SHORT LOC_1311
-
- ;==== External Entry into Subroutine ======================================
- ; op-codes: CA
-
- OP_130E:
- MOV BX,OFFSET MAC_RET_FAR_P ; (72B5:253A=0)
- LOC_1311:
- MOV BYTE PTR [BX],1
- CALL SUB_1B10
- INC DATA_285C ; (=0)
- JMP SHORT LOC_1342
-
- ;==== External Entry into Subroutine ======================================
- ; op-codes: 04, 05, 0C, 0D, 14, 15, 1C, 1D, 24, 25, 2C, 2D, 34, 35, 3C, 3D,
- ; A8, A9, A8, A9
-
- OP_131D:
- MOV AL,0
- LOC_131F:
- CALL SUB_1554
- LOC_1322:
- MOV AL,2CH ; ','
- STOSB ; Store al to es:[di]
- TEST BYTE PTR OPCODE_BYT_286B,1 ; (72B5:286B=0)
- JZ LOC_132F
- JMP LOC_13C3
-
- ;==== External Entry into Subroutine ======================================
-
- SUB_132F:
- LOC_132F:
- CALL RD_NXT_BYT_1B1B
-
- ;==== External Entry into Subroutine ======================================
-
- SUB_1332:
- LOC_1332:
- MOV BYTE PTR OPW_HI_NBL_286A,0 ; (72B5:286A=0)
-
- ;==== External Entry into Subroutine ======================================
-
- SUB_1337:
- MOV AH,0
- MOV DX,AX
- ;**CHANGED** TEST BYTE PTR DATA_2876,0FFH ; (=0FFH)
- TEST BYTE PTR SW_B_BYTE_REFS,0FFH ; (=0FFH)
- JZ LOC_1345
-
- ;==== External Entry into Subroutine ======================================
-
- SUB_1342:
- LOC_1342:
- CALL SUB_0EAB
-
- ;==== External Entry into Subroutine ======================================
-
- SUB_1345:
- LOC_1345:
- OR DX,DX
- JZ LOC_1386
- CALL SUB_138A
- CMP DX,0AH
- JB LOC_RET_1385
- MOV AL,DL
- CALL SUB_1A7D
- JNC LOC_136C
- PUSH DI
- MOV DI,OFFSET DATA_287C ; (72B5:287C=48H)
- MOV AH,27H ; ''' single quote
- CMP AL,AH ; number TEN
- JNE LOC_1364
- MOV AH,22H ; '"' double quote
- LOC_1364:
- MOV [DI-1],AH
- OR AH,80H ; set bit-7
- STOSW ; Store ax to es:[di]
- POP DI
-
- ;==== External Entry into Subroutine ======================================
-
- SUB_136C:
- LOC_136C:
- MOV AL,[DI-1]
- CMP AL,48H ; 'H'
- JE LOC_RET_1385
- ;**CHANGED** TEST BYTE PTR RAD16_FLAG_2877,0FFH ; (72B5:2877=0FFH)
- TEST BYTE PTR SW_H_HEX_SUFFIX,0FFH ; (72B5:2877=0FFH)
- JZ LOC_1382
- CMP AL,42H ; 'B'
- JE LOC_1382
- CMP AL,44H ; 'D'
- JNE LOC_RET_1385
- LOC_1382:
- MOV AL,48H ; 'H'
- STOSB ; Store al to es:[di]
-
- LOC_RET_1385:
- RETN
- LOC_1386:
- MOV AL,30H ; '0'
- STOSB ; Store al to es:[di]
- RETN
-
- ;==== External Entry into Subroutine ======================================
- ; Convert word in DX to ASCII HEX and write to file
-
- SUB_138A:
- ;**LOC_138A:
- MOV BYTE PTR DATA_13C2,0 ; zero suppress flag = true
- MOV AL,DH ; to convert high byte
- CALL SUB_1396
- MOV AL,DL ; to convert low byte
-
- ;==== External Entry into Subroutine ======================================
- ; Convert byte in AL to ASCII HEX and write to file
-
- SUB_1396:
- MOV AH,AL ; save low nyble
- MOV CL,4 ; shift high nyble right
- SHR AL,CL ; Shift w/zeros fill
- CALL SUB_13A1 ; convert nyble to ASCII
- MOV AL,AH ; convert nyble to ASCII
-
- ;==== External Entry into Subroutine ======================================
- ; Convert nyble to ASCII HEX and write to file
-
- SUB_13A1:
- AND AL,0FH ; clear high 4-bits
- TEST BYTE PTR DATA_13C2,0FFH ; suppress zero?
- JNZ LOC_13BA
- OR AL,AL
- JNZ LOC_13AF
- RETN
- LOC_13AF:
- MOV DATA_13C2,AL ; zero suppress flag
- CMP AL,0AH ; number TEN
- JB LOC_13BA
- MOV BYTE PTR [DI],30H ; '0'
- INC DI
- LOC_13BA:
- ADD AL,90H
- DAA ; Decimal adjust
- ADC AL,40H ; '@'
- DAA ; Decimal adjust
- STOSB ; Store al to es:[di]
-
- LOC_RET_13C1:
- RETN
-
- DATA_13C2 DB 0 ; zero suppress flag
-
- ;==========================================================================
- LOC_13C3:
- MOV BYTE PTR OPW_HI_NBL_286A,0 ; (72B5:286A=0)
- CALL SUB_141D
- OP_1250 ENDP
-
-
- ;==========================================================================
- ; SUBROUTINE
- ;==========================================================================
-
- SUB_13CB PROC NEAR
- MOV AL,DL
- CALL SUB_1A7D
- JNC LOC_RET_13C1
- MOV AL,DH
- CALL SUB_1A7D
- JNC LOC_RET_13C1
- MOV AH,DL
- PUSH DI
- PUSH BX
- MOV DI,OFFSET DATA_287C ; (72B5:287C=48H)
- MOV BL,27H ; '''
- CMP AL,BL
- JE LOC_13EA
- CMP AH,BL
- JNE LOC_13EC
- LOC_13EA:
- MOV BL,22H ; '"'
- LOC_13EC:
- MOV [DI-1],BL
- STOSW ; Store ax to es:[di]
- XCHG AX,BX
- OR AL,80H
- STOSB ; Store al to es:[di]
- POP BX
- POP DI
- RETN
- SUB_13CB ENDP
-
- DB 0FEH, 6, 5CH, 28H ; (apparemtly unused)
-
- ;==========================================================================
- ; SUBROUTINE
- ;==========================================================================
- ; op-codes: 9A, EA
-
- OP_13FB PROC NEAR
- CALL SUB_1B10
- XCHG BX,DX
- CALL SUB_1B10
- MOV CL,4
- PUSH DX
- SHL DX,CL ; Shift w/zeros fill
- ADD BX,DX
- XCHG BX,DX
- CALL SUB_14C8
- POP DX
- CALL SUB_1420
- SUB DI,5
- RETN
- OP_13FB ENDP
-
-
- ;==========================================================================
- ; SUBROUTINE
- ;==========================================================================
- ; op-codes: A0, A1
-
- OP_1417 PROC NEAR
- CALL SUB_15FA
- MOV AL,2CH ; ','
- STOSB ; Store al to es:[di]
-
- ;==== External Entry into Subroutine ======================================
-
- SUB_141D:
- LOC_141D:
- CALL SUB_1B10
-
- ;==== External Entry into Subroutine ======================================
-
- SUB_1420:
- ;**CHANGED** MOV DS:ALTR_W_0945+1,DX ; (72B5:0946=0)
- MOV DS:OLD_W_0946,DX ; (72B5:0946=0)
- PUSH BX
- MOV BL,OPJ_HI_BYT_2869 ; (72B5:2869=0)
- TEST BL,80H
- JNZ LOC_1446 ; jump if bit-7=1
- AND BL,30H ; clear all but bits 4 & 5
- MOV CL,3 ; align as word index value
- SHR BL,CL ; Shift w/zeros fill
- MOV BH,0
- MOV AX,DATA_2823[BX] ; 4-words indexed
- OR AX,AX
- JZ LOC_1446
- ADD DX,AX
- ;**CHANGED** MOV BYTE PTR DS:ALTR_J_B_0943+1,0 ; (72B5:0944=0AH)
- MOV BYTE PTR DS:OLD_JUMP_0944,0FFH ; don't take jump
- LOC_1446:
- POP BX
-
- ;==== External Entry into Subroutine ======================================
-
- SUB_1447:
- LOC_1447:
- CALL SUB_181D
- PUSH DI
- MOV DI,DATA_288D ; (=0)
- CMP DI,DATA_2893 ; (=0)
- JAE LOC_147C
- MOV AX,[DI]
- CMP AX,DATA_2858 ; (=0)
- POP DI
- JNC LOC_147B
- ;**CHANGED** MOV DX,DS:ALTR_W_0945+1 ; (72B5:0946=0)
- MOV DX,DS:OLD_W_0946 ; (72B5:0946=0)
- TEST DX,0F000H
- JZ LOC_146E
- MOV AX,3F09H ; "TAB ?"
- STOSW ; Store ax to es:[di]
- JMP SHORT LOC_1472
- LOC_146E:
- MOV CL,4
- SHL DX,CL ; Shift w/zeros fill
- LOC_1472:
- ;**CHANGED** MOV DS:ALTR_W_09A0+1,DX ; (72B5:09A1=0)
- MOV DS:OLD_W_09A1,DX ; (72B5:09A1=0)
- MOV AL,53H ; 'S'
- JMP LOC_1519
- LOC_147B:
- PUSH DI
- LOC_147C:
- CALL SUB_0E70
- TEST BYTE PTR [DI],20H ; ' '
- POP DI
- JZ LOC_148F
- ;**CHANGED** TEST BYTE PTR DATA_2873,0FFH ; (=0FFH)
- TEST BYTE PTR SW_L_LABEL_NUMB,0FFH ; (=0FFH)
- JNZ LOC_148F
- JMP LOC_1345
- LOC_148F:
- MOV AL,OPW_HI_NBL_286A ; (72B5:286A=0)
- MOV AH,DATA_2887 ; (=0)
- CMP DX,DATA_285A ; (=0)
- JAE LOC_14B8
- OR AH,AH
- JNZ LOC_14C8
- OR AL,AL
- JZ LOC_14B5
- CMP AL,60H ; '`'
- JA LOC_14C8
- CMP BYTE PTR [DI-1],3AH ; ':'
- JE LOC_14B5
- MOV AX,5344H ; 'DS'
- STOSW ; Store ax to es:[di]
- MOV AL,3AH ; ':'
- STOSB ; Store al to es:[di]
- LOC_14B5:
- JMP LOC_1342
- LOC_14B8:
- OR AX,AX
- JNZ LOC_14C8
- CMP DX,0FFFFH ; test for 0FFFF (s/b H)
- ;*** nop ;*Fixup for MASM (M)
- PATCH83 0FFH ;PATCH83 edited in
- ;**FIXED** JE LOC_1514
- JNE LOC_14BC_X ; jump, could be label
-
- ; new code to correct the 0FFFF 'H' suffix (JEG)
- CALL SUB_138A ; convert 0FFFF to HEX
- MOV AL,'H' ; output 'H' Hex suffix
- STOSB
- RETN
-
- LOC_14BC_X: MOV SI,OFFSET MN_OFFSET ; (72B5:23A4=4FH)
- CALL WRT_STRING_18A4
-
- ;==== External Entry into Subroutine ======================================
-
- SUB_14C8:
- LOC_14C8:
- CMP BYTE PTR DATA_2861,2 ; (=0)
- JE LOC_14D9
- TEST BYTE PTR DATA_2887,80H ; (=0)
- JNZ LOC_RET_1501
- JMP LOC_0EAB
- LOC_14D9:
- CALL SUB_1B70
- JC LOC_150D
- JZ LOC_1502
- TEST BYTE PTR OPW_HI_NBL_286A,0FFH ; (72B5:286A=0)
- JZ LOC_14F2
- CMP BYTE PTR [SI-2],3
- JNE LOC_14F2
- PUSH SI
- CALL SUB_1897
- POP SI
- LOC_14F2:
- PUSH SI
- CALL WRT_STRING_18A4
- POP AX
- XCHG AX,SI
- TEST BYTE PTR [SI-1],80H
- JZ LOC_RET_1501
- ;**CHANGED** MOV DS:ALTR_W_09E2+1,AX ; (72B5:09E3=0FFFFH)
- MOV DS:OLD_W_09E3,AX ; (72B5:09E3=0FFFFH)
-
- LOC_RET_1501:
- RETN
-
- LOC_1502:
- TEST BYTE PTR [SI-1],80H
- JZ LOC_150D
- INC SI
- ;**CHANGED** MOV DS:ALTR_W_09E2+1,SI ; (72B5:09E3=0FFFFH)
- MOV DS:OLD_W_09E3,SI ; (72B5:09E3=0FFFFH)
- LOC_150D:
- TEST BYTE PTR DATA_2887,80H ; (=0)
- JZ LOC_1517
-
- ;**LOC_1514:
- ;**FIXED** JMP LOC_138A ; convert DX to ASCII HEX
- ; new code to correct the 'D' command 'H' suffix (JEG)
- CALL SUB_138A ; convert number to HEX
- MOV AL,'H' ; output 'H' Hex suffix
- STOSB
- RETN
-
- LOC_1517:
- MOV AL,4CH ; 'L'
- LOC_1519:
- STOSB ; Store al to es:[di]
- CALL SUB_0EAB
- OP_1417 ENDP
-
-
- ;==========================================================================
- ; Convert word in DX to HEX, store [DI]
- ;==========================================================================
-
- CNV_W_2_HX_151D PROC NEAR
- MOV AL,DH
- CALL CNV_B_2_HX_1524
- MOV AL,DL
-
- ;==== External Entry into Subroutine ======================================
- ;
- ; Convert byte in AL to HEX, store [DI]
-
- CNV_B_2_HX_1524:
- MOV AH,AL
- SHR AL,1 ; Shift w/zeros fill
- SHR AL,1 ; Shift w/zeros fill
- SHR AL,1 ; Shift w/zeros fill
- SHR AL,1 ; Shift w/zeros fill
- CALL SUB_1533
- MOV AL,AH
-
- ;==== External Entry into Subroutine ======================================
-
- SUB_1533: ; convert low 4-bits to ASCII
- AND AL,0FH ; clear high 4-bits
- ADD AL,90H
- DAA ; Decimal adjust
- ADC AL,40H ; '@'
- DAA ; Decimal adjust
- STOSB ; Store al to es:[di]
- RETN
- CNV_W_2_HX_151D ENDP
-
-
- ;==========================================================================
- ; SUBROUTINE
- ;==========================================================================
- ; op-codes: D4, D5
-
- OP_153D PROC NEAR
- CALL RD_NXT_BYT_1B1B
- CMP AL,0AH
- JNE LOC_1545
- RETN
- LOC_1545:
- JMP LOC_1810
- OP_153D ENDP
-
-
- ;==========================================================================
- ; SUBROUTINE
- ;==========================================================================
- ; op-codes: 00, 01, 08, 09, 10, 11, 18, 19, 20, 21, 28, 29, 30, 31, 38, 39,
- ; 88, 89
-
- OP_1548 PROC NEAR
- CALL PARS_MOD_B_1836
- CALL SUB_18BA
- MOV AL,2CH ; ','
- STOSB ; Store al to es:[di]
-
- ;==== External Entry into Subroutine ======================================
-
- SUB_1551:
- MOV AL,REG_FIELD_2845 ; (72B5:2845=0)
-
- ;==== External Entry into Subroutine ======================================
-
- SUB_1554:
- LOC_1554:
- MOV SI,OFFSET BYTE_REGS_249B ; (72B5:249B=41H)
- TEST BYTE PTR OPCODE_BYT_286B,1 ; (72B5:286B=0)
- JZ LOC_1561
-
- ;==== External Entry into Subroutine ======================================
- ; op-codes: 40-4F, 50-5F
-
- OP_155E:
- LOC_155E:
- MOV SI,OFFSET WORD_REGS_24AB ; (72B5:24AB=41H)
- LOC_1561:
- AND AL,7 ; clear high 5-bits
- CBW ; Convrt byte to word
- ADD SI,AX
- ADD SI,AX
- MOVSW ; Mov [si] to es:[di]
- RETN
- OP_1548 ENDP
-
-
- ;==========================================================================
- ; SUBROUTINE
- ;==========================================================================
- ; op-codes: 06, 07, 0E, 16, 17, 1E, 1F,
-
- OP_156A PROC NEAR
- MOV CL,3
- SHR AL,CL ; Shift w/zeros fill
-
- ;==== External Entry into Subroutine ======================================
-
- SUB_156E:
- LOC_156E:
- AND AL,3 ; clear all but 2-LSB's
- MOV SI,OFFSET SEG_REGS_24BB ; (72B5:24BB=45H)
- JMP SHORT LOC_1561
- OP_156A ENDP
-
-
- ;==========================================================================
- ; SUBROUTINE
- ;==========================================================================
- ; op-codes: 8C
-
- OP_1575 PROC NEAR
- MOV BYTE PTR OPCODE_BYT_286B,1 ; (72B5:286B=0)
- CALL PARS_MOD_B_1836
- CMP AL,4
- JB LOC_1584
- LOC_1581:
- JMP LOC_17FE
- LOC_1584:
- CALL SUB_18BA
- MOV AL,2CH ; ','
- STOSB ; Store al to es:[di]
- MOV AL,REG_FIELD_2845 ; (72B5:2845=0)
- JMP SHORT LOC_156E
-
- ;==== External Entry into Subroutine ======================================
- ; op-codes: 8E
-
- OP_158F:
- CALL PARS_MOD_B_1836
- CMP AL,4
- JAE LOC_1581
- CALL SUB_156E
- MOV BYTE PTR OPCODE_BYT_286B,1 ; (72B5:286B=0)
- JMP SHORT LOC_15B4
-
- ;==== External Entry into Subroutine ======================================
- ; op-codes: 8F
-
- OP_15A0:
- CALL PARS_MOD_B_1836
- OR AL,AL
- JNZ LOC_1581
- JMP SHORT LOC_15B7
-
- ;==== External Entry into Subroutine ======================================
- ; op-codes: 8D
-
- OP_15A9:
- OR BYTE PTR OPCODE_BYT_286B,1 ; (72B5:286B=0)
-
- ;==== External Entry into Subroutine ======================================
- ; op-codes: 02, 03, 0A, 0B, 12, 13, 1A, 1B, 22, 23, 2A, 2B, 32, 33, 3A, 3B,
- ; 84-87, 8A, 8B
-
- OP_15AE:
- CALL PARS_MOD_B_1836
- CALL SUB_1551
- LOC_15B4:
- MOV AL,2CH ; ','
- STOSB ; Store al to es:[di]
- LOC_15B7:
- JMP LOC_18BA
-
- ;==== External Entry into Subroutine ======================================
- ; op-codes: EB
-
- OP_15BA:
- INC DATA_285C ; (=0)
-
- ;==== External Entry into Subroutine ======================================
- ; op-codes: 70-7F E0-E3
-
- OP_15BE:
- CALL RD_NXT_BYT_1B1B
- CBW ; Convrt byte to word
- MOV DX,AX
- JMP SHORT LOC_15E2
-
- ;==== External Entry into Subroutine ======================================
- ; op-codes: E9
-
- OP_15C6:
- INC DATA_285C ; (=0)
- CALL SUB_1B10
- PUSH DX
- CALL SUB_15E2
- POP DX
- INC DH
- JNZ LOC_RET_15DE
- OR DL,DL
- JNS LOC_RET_15DE ; Jump if not sign
- INC DATA_285D ; (=0)
-
- LOC_RET_15DE:
- RETN
-
- ;==== External Entry into Subroutine ======================================
- ; op-codes: E8
-
- OP_15DF:
- CALL SUB_1B10
-
- ;==== External Entry into Subroutine ======================================
-
- SUB_15E2:
- LOC_15E2:
- ADD DX,DATA_2858 ; (=0)
- JMP LOC_1447
-
- ;==== External Entry into Subroutine ======================================
- ; op-codes: 91-97
-
- OP_15E9:
- CALL OP_155E
- MOV AL,2CH ; ','
- STOSB ; Store al to es:[di]
- MOV AL,0
- JMP LOC_155E
-
- ;==== External Entry into Subroutine ======================================
- ; op-codes: A2, A3
-
- OP_15F4:
- CALL SUB_141D
- MOV AL,2CH ; ','
- STOSB ; Store al to es:[di]
-
- ;==== External Entry into Subroutine ======================================
-
- SUB_15FA:
- JMP SHORT LOC_1649
- ;*** DB 90H
-
- ;==== External Entry into Subroutine ======================================
- ; op-codse: A4-A7, AA-AF
-
- OP_15FD_STRINGS:
- TEST BYTE PTR DATA_2866,0FFH ; (=0)
- JZ LOC_RET_165F
- MOV DL,AL
- SUB AL,0A4H
- SHR AL,1 ; Shift w/zeros fill
- MOV BX,OFFSET STR_2030 ; (72B5:2030=95H)
- CALL SUB_185A
- DEC BX
- JNZ LOC_1616
- JMP LOC_17D1
- LOC_1616:
- CALL SUB_1897
- CMP DL,0A8H
- JA LOC_1624
- MOV SI,OFFSET DATA_2165 ; (72B5:2165=5BH)
- CALL WRT_STRING_18A4
- LOC_1624:
- CALL SUB_181D
- MOV SI,OFFSET DATA_2417 ; (72B5:2417=5BH)
- JMP LOC_18A4
-
- ;==== External Entry into Subroutine ======================================
- ; op-codes: B0-B7
-
- OP_162D:
- MOV BYTE PTR OPCODE_BYT_286B,0 ; (72B5:286B=0)
- JMP SHORT LOC_1639
-
- ;==== External Entry into Subroutine ======================================
- ; op-codes: B8-BF
-
- OP_1634:
- MOV BYTE PTR OPCODE_BYT_286B,1 ; (72B5:286B=0)
- LOC_1639:
- AND AL,7 ; clear high 5-bits
- JMP LOC_131F
-
- ;==== External Entry into Subroutine ======================================
- ; op-codes: CC
-
- OP_163E:
- MOV AL,3
- JMP LOC_1332
-
- ;==== External Entry into Subroutine ======================================
- ; op-codes: E6, E7
-
- OP_1643:
- CALL OP_1654
- MOV AL,2CH ; ','
- STOSB ; Store al to es:[di]
-
- ;==== External Entry into Subroutine ======================================
-
- SUB_1649:
- LOC_1649:
- MOV AL,0
- JMP LOC_1554
-
- ;==== External Entry into Subroutine ======================================
- ; op-codes: E4, E5
-
- OP_164E:
- CALL SUB_1649
- MOV AL,2CH ; ','
- STOSB ; Store al to es:[di]
-
- ;==== External Entry into Subroutine ======================================
- ; op-codes: CD
- OP_1654:
- CALL RD_NXT_BYT_1B1B
- CALL SUB_1337
-
- ;==== External Entry into Subroutine ======================================
-
- SUB_165A:
- LOC_165A:
- MOV BYTE PTR DATA_287C,80H ; (72B5:287C=48H)
-
- LOC_RET_165F:
- RETN
-
- ;==== External Entry into Subroutine ======================================
- ; op-codes: D8
-
- OP_1660:
- CALL SUB_171A
- MOV AX,5453H ; 'ST'
- STOSW ; Store ax to es:[di]
- MOV AL,2CH ; ','
- STOSB ; Store al to es:[di]
-
- ;==== External Entry into Subroutine ======================================
-
- SUB_166A:
- LOC_166A:
- MOV AX,5453H ; 'ST'
- STOSW ; Store ax to es:[di]
- MOV AX,3028H ; '(0'
- OR AH,RM_FIELD_2843 ; patch the '0', above
- STOSW ; Store ax to es:[di]
- MOV AL,29H ; ')'
- STOSB ; Store al to es:[di]
- RETN
-
- ;==== External Entry into Subroutine ======================================
- ; op-code: DC
- OP_167A:
- CALL SUB_171A
- CALL SUB_166A
- JMP LOC_1712
-
- ;==== External Entry into Subroutine ======================================
- ; op-codes: D9
-
- OP_1683_ESC1:
- CALL SUB_171A
- MOV AL,MOD_REG_RM_286C ; (72B5:286C=0)
- SUB AL,0E0H
- JC LOC_1697
- MOV BX,OFFSET ESC_2054 ; (72B5:2054=0BBH)
- CALL SUB_185A
- DEC BX
- JZ LOC_16AF
-
- LOC_RET_1696:
- RETN
- LOC_1697:
- MOV BX,OFFSET ESC_204C ; (72B5:204C=40H)
- MOV AL,REG_FIELD_2845 ; (72B5:2845=0)
- CALL SUB_185A
- MOV AL,MOD_REG_RM_286C ; (72B5:286C=0)
- SUB AL,0D0H
- JC LOC_166A
- JZ LOC_RET_1696
- AND AL,0FH ; clear high 4-bits
- CMP AL,8 ; test if bit-3 set
- JAE LOC_166A ; jump if 8 thru 15
- LOC_16AF:
- JMP LOC_17FE ; jump, 0 thru 7
-
- ;==== External Entry into Subroutine ======================================
- ; op-codes: DA
-
- OP_16B2:
- CALL SUB_171A
- JMP LOC_17FE
-
- ;==== External Entry into Subroutine ======================================
- ; op-codes: DB
-
- OP_16B8_ESC3:
- CALL SUB_171A
- MOV BX,OFFSET ESC_20B4 ; (72B5:20B4=0F3H)
- MOV AL,MOD_REG_RM_286C ; (72B5:286C=0)
- SUB AL,0E0H
- JC LOC_172F
- CMP AL,4
- JAE LOC_172F
- JMP LOC_185A
-
- ;==== External Entry into Subroutine ======================================
- ; op-codes: DD, DF
-
- OP_16CC_ESC5_7:
- CALL SUB_171A
- CMP BYTE PTR REG_FIELD_2845,4 ; (72B5:2845=0)
- JAE LOC_172F
- MOV BX,OFFSET ESC_20CC ; (72B5:20CC=0F7H)
- CALL SUB_185A
- CMP BYTE PTR OPCODE_BYT_286B,0DDH ; (72B5:286B=0)
- JE LOC_16EA
- TEST BYTE PTR REG_FIELD_2845,0FFH ; (72B5:2845=0)
- JZ LOC_172F
- LOC_16EA:
- JMP LOC_166A
-
- ;==== External Entry into Subroutine ======================================
- ; op-codes: DE
-
- OP_16ED_ESC6:
- CALL SUB_171A
- MOV BX,OFFSET ESC_20D4 ; (72B5:20D4=0ADH)
- MOV AL,REG_FIELD_2845 ; (72B5:2845=0)
- CALL SUB_185A
- CMP BYTE PTR REG_FIELD_2845,3 ; (72B5:2845=0)
- JNE LOC_1708
- CMP BYTE PTR MOD_REG_RM_286C,0D9H ; (72B5:286C=0)
- JNE LOC_172F
- RETN
- LOC_1708:
- CALL SUB_166A
- CMP BYTE PTR REG_FIELD_2845,2 ; (72B5:2845=0)
- JE LOC_RET_1719
- LOC_1712:
- MOV AL,2CH ; ','
- STOSB ; Store al to es:[di]
- MOV AX,5453H ; 'ST'
- STOSW ; Store ax to es:[di]
-
- LOC_RET_1719:
- RETN
-
- ;==== External Entry into Subroutine ======================================
-
- SUB_171A:
- ;**CHANGED** TEST BYTE PTR DATA_2874,0FFH ; (=0FFH)
- TEST BYTE PTR SW_F_8087_CODES,0FFH ; (=0FFH)
- JNZ LOC_1735
- CALL SUB_1855
- CMP BYTE PTR MOD_FIELD_2844,3 ; (72B5:2844=0)
- JE LOC_RET_1719
- DEC BX
- POP AX
- JNZ LOC_1732
- LOC_172F:
- JMP LOC_17FE
- LOC_1732:
- JMP LOC_18BA
- LOC_1735:
- POP CX
- ; 9DH s/b MN_ESC-MN_AAA
- ;**CHANGED** MOV OPW_TBL_WD_285F,9DH ; (72B5:285F=0)
- MOV OPW_TBL_WD_285F,MN_ESC-MN_AAA
- AND AL,7 ; clear high 5-bits
- MOV DL,AL
- CALL PARS_MOD_B_1836
- MOV CL,3
- SHL DL,CL ; Shift w/zeros fill
- OR AL,DL
- CALL SUB_1332
- MOV BYTE PTR OPCODE_BYT_286B,1 ; (72B5:286B=0)
- JMP LOC_15B4
-
- ;==== External Entry into Subroutine ======================================
- ; op-codes: EC, ED
-
- OP_1754:
- CALL SUB_1649
- MOV AL,2CH ; ','
- STOSB ; Store al to es:[di]
-
- ;==== External Entry into Subroutine ======================================
-
- SUB_175A:
- MOV AX,5844H ; 'DT'
- STOSW ; Store ax to es:[di]
- RETN
-
- ;==== External Entry into Subroutine ======================================
- ; op-codes: EE, EF
-
- OP_175F:
- CALL SUB_175A
- MOV AL,2CH ; ','
- STOSB ; Store al to es:[di]
- JMP LOC_1649
-
- ;==== External Entry into Subroutine ======================================
- ; op-codes: D0-D3
-
- OP_1768:
- CALL SUB_1865
- CALL SUB_18B0
- MOV AL,2CH ; ','
- STOSB ; Store al to es:[di]
- TEST BYTE PTR OPCODE_BYT_286B,2 ; (72B5:286B=0)
- JZ LOC_177D
- MOV AX,4C43H ; 'CL'
- STOSW ; Store ax to es:[di]
- RETN
- LOC_177D:
- MOV AL,31H ; '1'
- STOSB ; Store al to es:[di]
- RETN
-
- ;==== External Entry into Subroutine ======================================
- ; op-codes: F6, F7
-
- OP_1781:
- CALL SUB_1865
- OR AL,AL
- JNZ LOC_179D
- JMP LOC_12BB
-
- ;==== External Entry into Subroutine ======================================
- ; op-codes: FE, FF
-
- OP_178B:
- CALL SUB_1865
- CMP BYTE PTR OPW_HI_NBL_286A,50H ; (72B5:286A=0) 'P'
- JNE LOC_1799
- INC DATA_285C ; (=0)
- LOC_1799:
- CMP AL,2
- JAE LOC_17A0
- LOC_179D:
- JMP LOC_18B0
- LOC_17A0:
- TEST BYTE PTR OPCODE_BYT_286B,1 ; (72B5:286B=0)
- JZ LOC_17FE
- CMP AL,2
- JE LOC_179D
- CMP AL,4
- JE LOC_179D
- JMP LOC_18BA
-
- ;==== External Entry into Subroutine ======================================
- ; op-codes: C3
-
- OP_17B2:
- MOV BX,OFFSET MAC_RET_NEAR ; (72B5:2568=0)
- JMP SHORT LOC_17C0
-
- ;==== External Entry into Subroutine ======================================
- ; op-codes: CF
- OP_17B7:
- INC DATA_285C ; (=0)
- JMP SHORT LOC_17CA
-
- ;==== External Entry into Subroutine ======================================
- ; op-codes: CB
-
- OP_17BD:
- MOV BX,OFFSET MAC_RET_FAR ; (72B5:2518=0)
- LOC_17C0:
- MOV BYTE PTR [BX],1
- INC DATA_285C ; (=0)
-
- ;==== External Entry into Subroutine ======================================
- ; op-codes: D7
-
- OP_17C7:
- CALL SUB_181D
-
- ;==== External Entry into Subroutine ======================================
- ; op-codes: 27, 2F, 37, 3F, 90, 98, 99, 9B-9F, CE, F4, F5, F8-FD
-
- OP_17CA:
- LOC_17CA:
- TEST BYTE PTR DATA_2866,0FFH ; (=0)
- JZ LOC_RET_1835
-
- ;==== External Entry into Subroutine ======================================
- ; op-codes: 0F, 60-6F, C0, C1, C8, C9, D6, F1
-
- OP_17D1:
- LOC_17D1:
- TEST BYTE PTR DATA_2866,0FFH ; (=0)
- JZ LOC_180A
- MOV AL,DATA_2866 ; (=0)
- CALL SUB_1332
- MOV AL,2CH ; ','
- STOSB ; Store al to es:[di]
- MOV AL,OPCODE_BYT_286B ; (72B5:286B=0)
- JMP SHORT LOC_180A
-
- ;==== External Entry into Subroutine ======================================
-
- SUB_17E6:
- CALL SUB_1865
- CMP BYTE PTR OPCODE_BYT_286B,82H ; (72B5:286B=0)
- JB LOC_RET_17FC
- CMP AL,1
- JE LOC_17FD
- CMP AL,4
- JE LOC_17FD
- CMP AL,6
- JE LOC_17FD
-
- LOC_RET_17FC:
- RETN
- LOC_17FD:
- POP BX
- LOC_17FE:
- MOV AL,OPCODE_BYT_286B ; (72B5:286B=0)
- CALL SUB_1332
- MOV AL,2CH ; ','
- STOSB ; Store al to es:[di]
- MOV AL,MOD_REG_RM_286C ; (72B5:286C=0)
-
- LOC_180A: ; 6AH s/b MN_DB-MN_AAA
- ;**CHANGED** MOV OPW_TBL_WD_285F,6AH ; (72B5:285F=0)
- MOV OPW_TBL_WD_285F,MN_DB-MN_AAA
- LOC_1810:
- CALL SUB_1332
- MOV AL,9 ; TAB
- STOSB ; Store al to es:[di]
- MOV AX,3F3FH ; '??'
- STOSW ; Store ax to es:[di]
- JMP LOC_165A
-
- ;==== External Entry into Subroutine ======================================
-
- SUB_181D:
- TEST BYTE PTR DATA_2866,0FFH ; (=0)
- JZ LOC_RET_1835
- PUSH AX
- MOV AL,DATA_2866 ; (=0)
- CALL OP_156A
- MOV AL,3AH ; ':'
- STOSB ; Store al to es:[di]
- MOV BYTE PTR DATA_2866,0 ; (=0)
- POP AX
- STC ; Set carry flag
-
- LOC_RET_1835:
- RETN
-
- ;==== External Entry into Subroutine ======================================
- ;
- ; Parse MOD-REG-R/M byte
-
- PARS_MOD_B_1836:
- CALL RD_NXT_BYT_1B1B
- MOV MOD_REG_RM_286C,AL ; (72B5:286C=0)
- MOV AH,AL
- AND AL,7 ; clear high 5-bits
- MOV RM_FIELD_2843,AL ; (72B5:2843=0)
- MOV CL,3
- SHR AH,CL ; Shift w/zeros fill
- MOV AL,AH
- AND AL,7 ; clear high 5-bits
- MOV REG_FIELD_2845,AL ; (72B5:2845=0)
- SHR AH,CL ; Shift w/zeros fill
- MOV MOD_FIELD_2844,AH ; (72B5:2844=0)
- RETN
-
- ;==== External Entry into Subroutine ======================================
-
- SUB_1855:
- CALL PARS_MOD_B_1836
- MOV DL,AL
-
- ;==== External Entry into Subroutine ======================================
-
- SUB_185A:
- LOC_185A:
- MOV AH,0
- ADD BX,AX
- ADD BX,AX
- XOR AX,AX
- DEC BX
- JMP SHORT LOC_1873
-
- ;==== External Entry into Subroutine ======================================
-
- SUB_1865:
- CALL PARS_MOD_B_1836
- MOV DL,AL
- CBW ; Convrt byte to word
- ADD BX,AX
- ADD BX,AX
- ADD BX,AX
- MOV AL,[BX]
- LOC_1873:
- TEST BYTE PTR DATA_2866,0FFH ; (=0)
- JNZ LOC_187D
- MOV OPJ_HI_BYT_2869,AL ; (72B5:2869=0)
- LOC_187D:
- MOV AX,[BX+1]
- MOV OPW_TBL_WD_285F,AX ; (72B5:285F=0)
- MOV BX,AX
- MOV OPW_HI_NBL_286A,AH ; (72B5:286A=0)
- AND BYTE PTR OPW_HI_NBL_286A,0F0H ; clear low 4-bits
- OR AX,AX
- MOV AL,DL
- JNZ LOC_RET_18AF
- JMP LOC_17FD
-
- ;==== External Entry into Subroutine ======================================
- ;
- ; Output string - 'BYTE PTR' or 'WORD PTR'
-
- SUB_1897:
- MOV SI,OFFSET MN_BYT_PT ; (72B5:2109=42H)
- TEST BYTE PTR OPCODE_BYT_286B,1 ; (72B5:286B=0)
- JZ LOC_18A4
- MOV SI,OFFSET MN_WORD_PT ; (72B5:243F=57H)
-
- ;==== External Entry into Subroutine ======================================
- ;
- ; Output string - ends with bit-7=1
-
- WRT_STRING_18A4:
- LOC_18A4:
- LODSB ; String [si] to al
- MOV AH,AL
- AND AL,7FH ; clear bit-7
- STOSB ; Store al to es:[di]
- AND AH,80H ; clear all but bit-7
- JZ LOC_18A4 ; jump if not end of string
-
- LOC_RET_18AF:
- RETN
-
- ;==== External Entry into Subroutine ======================================
-
- SUB_18B0:
- LOC_18B0:
- CMP BYTE PTR MOD_FIELD_2844,3 ; (72B5:2844=0)
- JE LOC_18BA
- CALL SUB_1897
- OP_1575 ENDP
-
-
- ;==========================================================================
- ; SUBROUTINE
- ;==========================================================================
-
- SUB_18BA PROC NEAR
- LOC_18BA:
- MOV AX,WORD PTR RM_FIELD_2843 ; (72B5:2843=0)
- CMP AH,3
- JNE LOC_18C5
- JMP LOC_1554
- LOC_18C5:
- MOV DX,AX
- CMP AX,6
- JNE LOC_18CF
- JMP LOC_141D
- LOC_18CF:
- MOV BL,AL
- MOV BH,0
- SHL BX,1 ; Shift w/zeros fill
- CMP BYTE PTR DATA_24C3[BX],50H ; (72B5:24C3=42H) 'P'
- JNE LOC_18E1
- MOV BYTE PTR OPJ_HI_BYT_2869,10H ; (72B5:2869=0)
- LOC_18E1:
- CALL SUB_181D
- MOV AL,5BH ; '['
- STOSB ; Store al to es:[di]
- MOV AX,WORD PTR DATA_24C3[BX] ; (72B5:24C3=5842H)
- STOSW ; Store ax to es:[di]
- CMP DL,4
- JAE LOC_18FC
- MOV AL,2BH ; '+'
- STOSB ; Store al to es:[di]
- AND BL,2 ; clear all but bit-1
- MOV AX,WORD PTR DATA_24CB[BX] ; 2-words indexed SI,DI
- STOSW ; Store ax to es:[di]
- LOC_18FC:
- OR DH,DH
- JZ LOC_1924
- DEC DH
- JZ LOC_190C
- MOV AL,2BH ; '+'
- STOSB ; Store al to es:[di]
- CALL SUB_141D
- JMP SHORT LOC_1924
- LOC_190C:
- CALL RD_NXT_BYT_1B1B
- CBW ; Convrt byte to word
- MOV DX,AX
- MOV AH,AL
- MOV AL,2BH ; '+'
- OR AH,AH
- JNS LOC_191E
- MOV AL,2DH ; '-'
- NEG AH
- LOC_191E:
- STOSB ; Store al to es:[di]
- MOV AL,AH
- CALL SUB_1332
- LOC_1924:
- MOV AL,5DH ; ']'
- STOSB ; Store al to es:[di]
- JMP LOC_165A
- SUB_18BA ENDP
-
-
- ;==========================================================================
- ; SUBROUTINE
- ;==========================================================================
-
- SUB_192A PROC NEAR
-
- ; D20AH is opcode OR DL,DL
- ;**CHANGED** MOV WORD PTR DS:ALTR_OPW_1965+0,0D20AH ; (72B5:1965=0CAFEH)
- MOV BYTE PTR OLD_DEC_1965,0 ;for OR DL,DL (no decrement)
- JMP SHORT LOC_1938
-
- ;==== External Entry into Subroutine ======================================
-
- SUB_1932:
-
- ; CAFEH is opcode DEC DL
- ;**CHANGED** MOV WORD PTR DS:ALTR_OPW_1965+0,0CAFEH ; (72B5:1965=0CAFEH)
- MOV BYTE PTR OLD_DEC_1965,1 ;for DEC DL
-
- LOC_1938:
- TEST BYTE PTR DATA_2856,0FFH ; (=0)
- JNZ LOC_1970
- CALL SUB_132F
- MOV AX,DATA_2919 ; (=0) (store AL only)
- MOV BYTE PTR DATA_2919+1,0 ; (=0) (zero AH value)
- OR AH,AH
- JNZ LOC_1950
- DEC AH
- LOC_1950:
- AND DL,AH
- LOC_1952:
- SHR AH,1 ; Shift w/zeros fill
- JC LOC_195A
- SHR DL,1 ; Shift w/zeros fill
- JMP SHORT LOC_1952
- LOC_195A:
- OR DL,DL
- JNZ ALTR_OPW_1965
-
- LOC_195E: ; 6AH s/b MN_DB-MN_AAA
- ;**CHANGED** MOV OPW_TBL_WD_285F,6AH ; (72B5:285F=0)
- MOV OPW_TBL_WD_285F,MN_DB-MN_AAA
- RETN
-
- ALTR_OPW_1965: ; Altered op-code - 'DEC DL' or
- ; 'OR DL,DL'
- ;**CHANGED** DEC DL
- SUB DL,OLD_DEC_1965 ;conditional decrement, test 0
-
- MOV DATA_2856,DL ; (=0)
- JZ LOC_195E
- MOV AL,2CH ; ','
- STOSB ; Store al to es:[di]
- SUB_192A ENDP
-
-
- ;==========================================================================
- ; SUBROUTINE
- ;==========================================================================
-
- SUB_1970 PROC NEAR
- LOC_1970:
- XOR CX,CX
-
- ; 6AH s/b MN_DB-MN_AAA
- ;**CHANGED** MOV OPW_TBL_WD_285F,6AH ; (72B5:285F=0)
- MOV OPW_TBL_WD_285F,MN_DB-MN_AAA
- LOC_1978:
- CALL RD_NXT_BYT_1B1B
- MOV DL,AL
- TEST BYTE PTR DATA_2846,0FFH ; (=0)
- PUSHF
- CMP AL,2CH ; ','
- JE LOC_19AD
- CMP AL,27H ; '''
- JE LOC_19AD
- CMP AL,22H ; '"'
- JE LOC_19AD
- CALL SUB_1A7D
- JNC LOC_19AD
- POPF
- JNZ LOC_199D
- MOV AL,27H ; '''
- STOSB ; Store al to es:[di]
- MOV DATA_2846,AL ; (=0)
- LOC_199D:
- MOV AL,DL
- STOSB ; Store al to es:[di]
- INC CX
- CMP AL,24H ; '$'
- JNE LOC_19E5
- LOC_19A5:
- CALL SUB_19F1
- JC LOC_RET_19ED
- JMP LOC_1A68
- LOC_19AD:
- POPF
- JZ LOC_19B9
- MOV AX,2C27H ; "'," single quote, comma
- STOSW ; Store ax to es:[di]
- MOV BYTE PTR DATA_2846,0 ; (=0)
- LOC_19B9:
- CMP DL,0DH ; CR
- JNE LOC_19C3
- MOV AX,5243H ; 'CR'
- JMP SHORT LOC_19CB
- LOC_19C3:
- CMP DL,0AH ; LF
- JNE LOC_19CE
- MOV AX,464CH ; 'LF'
- LOC_19CB:
- STOSW ; Store ax to es:[di]
- JMP SHORT LOC_19D5
- LOC_19CE:
- MOV AL,DL
- PUSH CX
- CALL SUB_1332
- POP CX
- LOC_19D5:
- MOV AL,2CH ; ','
- STOSB ; Store al to es:[di]
- CMP DL,0AH
- JE LOC_19A5
- TEST DL,80H
- JNZ LOC_19A5
- ADD CX,4
- LOC_19E5:
- CMP CX,35H ; 53 decimal
- CALL SUB_19F1
- JNC LOC_1978
-
- LOC_RET_19ED:
- RETN
-
- ;==== External Entry into Subroutine ======================================
-
- SUB_19EE:
- CMP CX,16H ; 22 decimal
-
- ;==== External Entry into Subroutine ======================================
-
- SUB_19F1:
- PUSH BX
- PUSHF
- TEST BYTE PTR DATA_2856,0FFH ; (=0)
- JZ LOC_1A0D
- DEC DATA_2856 ; (=0)
- JNZ LOC_1A1A
- TEST BYTE PTR DATA_291B,0FFH ; (=0)
- JZ LOC_1A5D
- DEC DATA_2919 ; (=0)
- JMP SHORT LOC_1A5D
- LOC_1A0D:
- TEST BYTE PTR DATA_291B,0FFH ; (=0)
- JZ LOC_1A1A
- DEC DATA_2919 ; (=0)
- JZ LOC_1A5D
- LOC_1A1A:
- TEST DATA_284D,0FFFFH ; (72B5:284D=0)
- JZ LOC_1A5D
- MOV AX,DATA_2889 ; (=0)
- CMP AX,DATA_288F ; (=0)
- MOV AX,DATA_2858 ; (=0)
- JNC LOC_1A34
- CMP DATA_2885,AX ; (=0)
- JBE LOC_1A5D
- LOC_1A34:
- CMP BYTE PTR DATA_2861,1 ; (=0)
- JE LOC_1A47
- TEST BYTE PTR DATA_2888,0FFH ; (=0)
- JZ LOC_1A47
- CMP AX,[BP+1]
- JAE LOC_1A5D
- LOC_1A47:
- MOV BX,DATA_288D ; (=0)
- CMP BX,DATA_2893 ; (=0)
- JAE LOC_1A55
- CMP AX,[BX]
- JAE LOC_1A5D
- LOC_1A55:
- POPF
- JNC LOC_1A5E
- CLC ; Clear carry flag
- POP BX
- RETN
- CALL_INDR_1A5B DW 0 ; Indirect CALL offset
- LOC_1A5D:
- POPF
- LOC_1A5E:
- POP BX
- POP CALL_INDR_1A5B ; (72B5:1A5B=0)
- STC ; Set carry flag
- CALL CALL_INDR_1A5B ; (72B5:1A5B=0)
- LOC_1A68:
- CMP BYTE PTR [DI-1],2CH ; ','
- JNE LOC_1A72
- DEC DI
- MOV BYTE PTR [DI],0
- LOC_1A72:
- TEST BYTE PTR DATA_2846,0FFH ; (=0)
- JZ LOC_RET_1A7C
- MOV AL,27H ; '''
- STOSB ; Store al to es:[di]
-
- LOC_RET_1A7C:
- RETN
- SUB_1970 ENDP
-
-
- ;==========================================================================
- ; SUBROUTINE
- ;==========================================================================
-
- SUB_1A7D PROC NEAR
- CMP AL,20H ; ' '
- CMC ; Complement carry
- JNC LOC_RET_1A84
- CMP AL,7BH ; '{'
-
- LOC_RET_1A84:
- RETN
- SUB_1A7D ENDP
-
-
- ;==========================================================================
- ; SUBROUTINE
- ;==========================================================================
-
- SUB_1A85 PROC NEAR
-
- ; 7EH s/b MN_DW-MN_AAA
- ;**CHANGED** MOV AX,7EH
- MOV AX,MN_DW-MN_AAA
- CMP BYTE PTR DATA_2887,1 ; (=0)
- JNE LOC_1A92
-
- ; 6AH s/b MN_DB-MN_AAA
- ;**CHANGED** MOV AX,6AH
- MOV AX,MN_DB-MN_AAA
- LOC_1A92:
- MOV OPW_TBL_WD_285F,AX ; (72B5:285F=0)
- XOR BX,BX
- MOV CX,BX
- CALL SUB_1AFC
- LOC_1A9C:
- ;**CHANGED** MOV DS:ALTR_W_1AC9+1,AX ; (72B5:1ACA=0)
- MOV DS:OLD_W_1ACA,AX ; (72B5:1ACA=0)
- CALL SUB_19EE
- JC LOC_1AC5
- LOC_1AA4:
- CALL SUB_1AFC
- ;**CHANGED** CMP AX,DS:ALTR_W_1AC9+1 ; (72B5:1ACA=0)
- CMP AX,DS:OLD_W_1ACA ; (72B5:1ACA=0)
- JNE LOC_1AB5
- INC BX
- CALL SUB_19EE
- JC LOC_1AE0
- JMP SHORT LOC_1AA4
- LOC_1AB5:
- PUSH AX
- OR BX,BX
- JZ LOC_1ABF
- CALL SUB_1AE0
- JMP SHORT LOC_1AC2
- LOC_1ABF:
- CALL SUB_1AC5
- LOC_1AC2:
- POP AX
- JMP SHORT LOC_1A9C
-
- ;==== External Entry into Subroutine ======================================
-
- SUB_1AC5:
- LOC_1AC5:
- ADD CX,6
- PUSH CX
-
- ALTR_W_1AC9: ; Altered code
- ;**CHANGED** MOV DX,0
- MOV DX,OLD_W_1ACA
- CMP BYTE PTR DATA_2887,1 ; (=0)
- JNE LOC_1AD8
- CALL SUB_1342
- JMP SHORT LOC_1ADB
- LOC_1AD8:
- CALL SUB_1447
- LOC_1ADB:
- MOV AL,2CH ; ','
- STOSB ; Store al to es:[di]
- POP CX
- RETN
- SUB_1A85 ENDP
-
-
- ;==========================================================================
- ; SUBROUTINE
- ;==========================================================================
-
- SUB_1AE0 PROC NEAR
- LOC_1AE0:
- ADD CX,0AH
- PUSH CX
- INC BX
- XCHG DX,BX
- CALL SUB_1345
- MOV SI,OFFSET DATA_216D_DUP ; (72B5:216D=20H)
- CALL WRT_STRING_18A4
- POP CX
- CALL SUB_1AC5
- DEC DI
- MOV AX,2C29H ; '),' close paren, comma
- STOSW ; Store ax to es:[di]
- XOR BX,BX
- RETN
- SUB_1AE0 ENDP
-
-
- ;==========================================================================
- ; SUBROUTINE
- ;==========================================================================
-
- SUB_1AFC PROC NEAR
- CALL RD_NXT_BYT_1B1B
- MOV AH,AL
- MOV AL,0
- CMP BYTE PTR DATA_2887,1 ; (=0)
- JE LOC_1B0D
- CALL RD_NXT_BYT_1B1B
- LOC_1B0D:
- XCHG AH,AL
- RETN
- SUB_1AFC ENDP
-
-
- ;==========================================================================
- ; SUBROUTINE
- ;==========================================================================
-
- SUB_1B10 PROC NEAR
- CALL RD_NXT_BYT_1B1B
- MOV DL,AL
- CALL RD_NXT_BYT_1B1B
- MOV DH,AL
- RETN
- SUB_1B10 ENDP
-
-
- ;==========================================================================
- ; Read next byte from input file
- ;==========================================================================
-
- RD_NXT_BYT_1B1B PROC NEAR
- PUSH SI
- MOV AL,0
- TEST DATA_284D,0FFFFH ; (72B5:284D=0)
- JZ LOC_1B57
- MOV SI,DATA_287F ; (=0)
- CMP SI,OFFSET DTA4_2C9E ; (72B5:2C9E=0)
- JB LOC_1B4E
- PUSH AX
- PUSH DX
- MOV DX,OFFSET DTA3_2A9E ;
- MOV AH,1AH
- INT 21H ; DOS Services ah=function 1Ah
- ; set DTA to ds:dx
- XCHG DX,SI
- MOV DX,OFFSET FCB3_2A0F ; (72B5:2A0F=61H)
- MOV AH,14H
- INT 21H ; DOS Services ah=function 14h
- ; sequentl file read FCB @ds:dx
- CMP AL,1
- JNE LOC_1B4C
- MOV DATA_284D,0 ; (72B5:284D=0)
- LOC_1B4C:
- POP DX
- POP AX
- LOC_1B4E:
- LODSB ; String [si] to al
- MOV DATA_287F,SI ; (=0)
- DEC DATA_284D ; (72B5:284D=0)
- LOC_1B57:
- INC DATA_2854 ; (=0)
- INC DATA_2858 ; (=0)
- MOV SI,DATA_2854 ; (=0)
- CMP SI,18H
- JA LOC_1B6E
- ADD SI,OFFSET DATA_282A ; (=0)
- MOV [SI],AL
- LOC_1B6E:
- POP SI
- RETN
- RD_NXT_BYT_1B1B ENDP
-
-
- ;==========================================================================
- ; SUBROUTINE
- ;==========================================================================
-
- SUB_1B70 PROC NEAR
- MOV SI,DATA_2E9E_E ; (=0)
- LOC_1B73:
- CMP SI,DATA_288F ; (=0)
- JA LOC_1B95
- CMP DX,[SI]
- PUSHF
- LODSW ; String [si] to ax
- LODSB ; String [si] to al
- LODSB ; String [si] to al
- AND AL,7FH ; clear bit-7
- MOV AH,0
- ADD SI,AX
- POPF
- JC LOC_1B95
- JNZ LOC_1B73
- OR AX,AX
- JZ LOC_1B73
- SUB SI,AX
- CMP BYTE PTR [SI],0AEH
- CLC ; Clear carry flag
- RETN
- LOC_1B95:
- STC ; Set carry flag
- RETN
- SUB_1B70 ENDP
-
- ;==========================================================================
- DB 10,'Table '
- DATA_1BA9 DW OFFSET SUB_1277 ; Data table (indexed access)
- DW OFFSET SUB_1A85
- DW OFFSET SUB_1A85
- DW OFFSET SUB_1970
- DW OFFSET SUB_1932
- DW OFFSET SUB_192A
- DW OFFSET SUB_1277
- DW OFFSET SUB_1277
- DW OFFSET SUB_1277
- DB 5 DUP (0) ;(apparent padding)
-
- DB 10,'Op-code Dispatch, 2-words/entry, all 12-bit differences plus high 4-bits'
- DB 10,'1st word difference from "Mnemonic", 2nd word difference from "Op-codes"'
- DB 10,'except, use labels for 1st word of op-codes: 80-83,D0-D3,D8-DF,F6,F7,FE,FF',10
-
- OPW_00_ADD DW MN_ADD-MN_AAA+04000H ;00 ADD
- OPJ_00 DW OP_1548-OP_1250 ;
- OPW_01_ADD DW MN_ADD-MN_AAA+04000H ;01 ADD
- OPJ_01 DW OP_1548-OP_1250 ;
- OPW_02_ADD DW MN_ADD-MN_AAA+01000H ;02 ADD
- OPJ_02 DW OP_15AE-OP_1250 ;
- OPW_03_ADD DW MN_ADD-MN_AAA+01000H ;03 ADD
- OPJ_03 DW OP_15AE-OP_1250 ;
- OPW_04_ADD DW MN_ADD-MN_AAA ;04 ADD
- OPJ_04 DW OP_131D-OP_1250 ;
- OPW_05_ADD DW MN_ADD-MN_AAA ;05 ADD
- OPJ_05 DW OP_131D-OP_1250 ;
- OPW_06_PUSH_ES DW MN_PUSH-MN_AAA ;06 PUSH ES
- OPJ_06 DW OP_156A-OP_1250 ;
- OPW_07_POP_ES DW MN_POP-MN_AAA ;07 POP ES
- OPJ_07 DW OP_156A-OP_1250 ;
- OPW_08_OR DW MN_OR-MN_AAA+04000H ;08 OR
- OPJ_08 DW OP_1548-OP_1250 ;
- OPW_09_OR DW MN_OR-MN_AAA+04000H ;09 OR
- OPJ_09 DW OP_1548-OP_1250 ;
- OPW_0A_OR DW MN_OR-MN_AAA+01000H ;0A OR
- OPJ_0A DW OP_15AE-OP_1250 ;
- OPW_0B_OR DW MN_OR-MN_AAA+01000H ;0B OR
- OPJ_0B DW OP_15AE-OP_1250 ;
- OPW_0C_OR DW MN_OR-MN_AAA ;0C OR
- OPJ_0C DW OP_131D-OP_1250 ;
- OPW_0D_OR DW MN_OR-MN_AAA ;0D OR
- OPJ_0D DW OP_131D-OP_1250 ;
- OPW_0E_PUSH_CS DW MN_PUSH-MN_AAA ;0E PUSH CS
- OPJ_0E DW OP_156A-OP_1250 ;
- OPW_0F_??? DW 0000H ;0F ???
- OPJ_0F DW OP_17D1-OP_1250 ;
- OPW_10_ADC DW MN_ADC-MN_AAA+04000H ;10 ADC
- OPJ_10 DW OP_1548-OP_1250 ;
- OPW_11_ADC DW MN_ADC-MN_AAA+04000H ;11 ADC
- OPJ_11 DW OP_1548-OP_1250 ;
- OPW_12_ADC DW MN_ADC-MN_AAA+01000H ;12 ADC
- OPJ_12 DW OP_15AE-OP_1250 ;
- OPW_13_ADC DW MN_ADC-MN_AAA+01000H ;13 ADC
- OPJ_13 DW OP_15AE-OP_1250 ;
- OPW_14_ADC DW MN_ADC-MN_AAA ;14 ADC
- OPJ_14 DW OP_131D-OP_1250 ;
- OPW_15_ADC DW MN_ADC-MN_AAA ;15 ADC
- OPJ_15 DW OP_131D-OP_1250 ;
- OPW_16_PUSH_ES DW MN_PUSH-MN_AAA ;16 PUSH ES
- OPJ_16 DW OP_156A-OP_1250 ;
- OPW_17_POP_ES DW MN_POP-MN_AAA ;17 POP ES
- OPJ_17 DW OP_156A-OP_1250 ;
- OPW_18_SBB DW MN_SBB-MN_AAA+04000H ;18 SBB
- OPJ_18 DW OP_1548-OP_1250 ;
- OPW_19_SBB DW MN_SBB-MN_AAA+04000H ;19 SBB
- OPJ_19 DW OP_1548-OP_1250 ;
- OPW_1A_SBB DW MN_SBB-MN_AAA+01000H ;1A SBB
- OPJ_1A DW OP_15AE-OP_1250 ;
- OPW_1B_SBB DW MN_SBB-MN_AAA+01000H ;1B SBB
- OPJ_1B DW OP_15AE-OP_1250 ;
- OPW_1C_SBB DW MN_SBB-MN_AAA ;1C SBB
- OPJ_1C DW OP_131D-OP_1250 ;
- OPW_1D_SBB DW MN_SBB-MN_AAA ;1D SBB
- OPJ_1D DW OP_131D-OP_1250 ;
- OPW_1E_PUSH_DS DW MN_PUSH-MN_AAA ;1E PUSH DS
- OPJ_1E DW OP_156A-OP_1250 ;
- OPW_1F_POP_DS DW MN_POP-MN_AAA ;1F POP DS
- OPJ_1F DW OP_156A-OP_1250 ;
- OPW_20_AND DW MN_AND-MN_AAA+04000H ;20 AND
- OPJ_20 DW OP_1548-OP_1250 ;
- OPW_21_AND DW MN_AND-MN_AAA+04000H ;21 AND
- OPJ_21 DW OP_1548-OP_1250 ;
- OPW_22_AND DW MN_AND-MN_AAA+01000H ;22 AND
- OPJ_22 DW OP_15AE-OP_1250 ;
- OPW_23_AND DW MN_AND-MN_AAA+01000H ;23 AND
- OPJ_23 DW OP_15AE-OP_1250 ;
- OPW_24_AND DW MN_AND-MN_AAA ;24 AND
- OPJ_24 DW OP_131D-OP_1250 ;
- OPW_25_AND DW MN_AND-MN_AAA ;25 AND
- OPJ_25 DW OP_131D-OP_1250 ;
- OPW_26_ES_COLON DW MN_AAA-MN_AAA ;26 ES:
- OPJ_26 DW OP_1250-OP_1250 ;
- OPW_27_DAA DW MN_DAA-MN_AAA ;27 DAA
- OPJ_27 DW OP_17CA-OP_1250 ;
- OPW_28_SUB DW MN_SUB-MN_AAA+04000H ;28 SUB
- OPJ_28 DW OP_1548-OP_1250 ;
- OPW_29_SUB DW MN_SUB-MN_AAA+04000H ;29 SUB
- OPJ_29 DW OP_1548-OP_1250 ;
- OPW_2A_SUB DW MN_SUB-MN_AAA+01000H ;2A SUB
- OPJ_2A DW OP_15AE-OP_1250 ;
- OPW_2B_SUB DW MN_SUB-MN_AAA+01000H ;2B SUB
- OPJ_2B DW OP_15AE-OP_1250 ;
- OPW_2C_SUB DW MN_SUB-MN_AAA ;2C SUB
- OPJ_2C DW OP_131D-OP_1250 ;
- OPW_2D_SUB DW MN_SUB-MN_AAA ;2D SUB
- OPJ_2D DW OP_131D-OP_1250 ;
- OPW_2E_CS_COLON DW MN_AAA-MN_AAA ;2E CS:
- OPJ_2E DW OP_1250-OP_1250 ;
- OPW_2F_DAS DW MN_DAS-MN_AAA ;2F DAS
- OPJ_2F DW OP_17CA-OP_1250 ;
- OPW_30_XOR DW MN_XOR-MN_AAA+04000H ;30 XOR
- OPJ_30 DW OP_1548-OP_1250 ;
- OPW_31_XOR DW MN_XOR-MN_AAA+04000H ;31 XOR
- OPJ_31 DW OP_1548-OP_1250 ;
- OPW_32_XOR DW MN_XOR-MN_AAA+01000H ;32 XOR
- OPJ_32 DW OP_15AE-OP_1250 ;
- OPW_33_XOR DW MN_XOR-MN_AAA+01000H ;33 XOR
- OPJ_33 DW OP_15AE-OP_1250 ;
- OPW_34_XOR DW MN_XOR-MN_AAA ;34 XOR
- OPJ_34 DW OP_131D-OP_1250 ;
- OPW_35_XOR DW MN_XOR-MN_AAA ;35 XOR
- OPJ_35 DW OP_131D-OP_1250 ;
- OPW_36_SS_COLON DW MN_AAA-MN_AAA ;36 SS:
- OPJ_36 DW OP_1250-OP_1250 ;
- OPW_37_AAA DW MN_AAA-MN_AAA ;37 AAA
- OPJ_37 DW OP_17CA-OP_1250 ;
- OPW_38_CMP DW MN_CMP-MN_AAA+02000H ;38 CMP
- OPJ_38 DW OP_1548-OP_1250 ;
- OPW_39_CMP DW MN_CMP-MN_AAA+02000H ;39 CMP
- OPJ_39 DW OP_1548-OP_1250 ;
- OPW_3A_CMP DW MN_CMP-MN_AAA+02000H ;3A CMP
- OPJ_3A DW OP_15AE-OP_1250 ;
- OPW_3B_CMP DW MN_CMP-MN_AAA+02000H ;3B CMP
- OPJ_3B DW OP_15AE-OP_1250 ;
- OPW_3C_CMP DW MN_CMP-MN_AAA ;3C CMP
- OPJ_3C DW OP_131D-OP_1250 ;
- OPW_3D_CMP DW MN_CMP-MN_AAA ;3D CMP
- OPJ_3D DW OP_131D-OP_1250 ;
- OPW_3E_DS_COLON DW MN_AAA-MN_AAA ;3E DS:
- OPJ_3E DW OP_1250-OP_1250 ;
- OPW_3F_AAS DW MN_AAS-MN_AAA ;3F AAS
- OPJ_3F DW OP_17CA-OP_1250 ;
- OPW_40_INC_AX DW MN_INC-MN_AAA ;40 INC AX
- OPJ_40 DW OP_155E-OP_1250 ;
- OPW_41_INC_CX DW MN_INC-MN_AAA ;41 INC CX
- OPJ_41 DW OP_155E-OP_1250 ;
- OPW_42_INC_DX DW MN_INC-MN_AAA ;42 INC DX
- OPJ_42 DW OP_155E-OP_1250 ;
- OPW_43_INC_BX DW MN_INC-MN_AAA ;43 INC BX
- OPJ_43 DW OP_155E-OP_1250 ;
- OPW_44_INC_SP DW MN_INC-MN_AAA ;44 INC SP
- OPJ_44 DW OP_155E-OP_1250 ;
- OPW_45_INC_BP DW MN_INC-MN_AAA ;45 INC BP
- OPJ_45 DW OP_155E-OP_1250 ;
- OPW_46_INC_SI DW MN_INC-MN_AAA ;46 INC SI
- OPJ_46 DW OP_155E-OP_1250 ;
- OPW_47_INC_DI DW MN_INC-MN_AAA ;47 INC DI
- OPJ_47 DW OP_155E-OP_1250 ;
- OPW_48_DEC_AX DW MN_DEC-MN_AAA ;48 DEC AX
- OPJ_48 DW OP_155E-OP_1250 ;
- OPW_49_DEC_CX DW MN_DEC-MN_AAA ;49 DEC CX
- OPJ_49 DW OP_155E-OP_1250 ;
- OPW_4A_DEC_DX DW MN_DEC-MN_AAA ;4A DEC DX
- OPJ_4A DW OP_155E-OP_1250 ;
- OPW_4B_DEC_BX DW MN_DEC-MN_AAA ;4B DEC BX
- OPJ_4B DW OP_155E-OP_1250 ;
- OPW_4C_DEC_SP DW MN_DEC-MN_AAA ;4C DEC SP
- OPJ_4C DW OP_155E-OP_1250 ;
- OPW_4D_DEC_BP DW MN_DEC-MN_AAA ;4D DEC BP
- OPJ_4D DW OP_155E-OP_1250 ;
- OPW_4E_DEC_SI DW MN_DEC-MN_AAA ;4E DEC SI
- OPJ_4E DW OP_155E-OP_1250 ;
- OPW_4F_DEC_DI DW MN_DEC-MN_AAA ;4F DEC DI
- OPJ_4F DW OP_155E-OP_1250 ;
- OPW_50_PUSH_AX DW MN_PUSH-MN_AAA ;50 PUSH AX
- OPJ_50 DW OP_155E-OP_1250 ;
- OPW_51_PUSH_CX DW MN_PUSH-MN_AAA ;51 PUSH CX
- OPJ_51 DW OP_155E-OP_1250 ;
- OPW_52_PUSH_DX DW MN_PUSH-MN_AAA ;52 PUSH DX
- OPJ_52 DW OP_155E-OP_1250 ;
- OPW_53_PUSH_BX DW MN_PUSH-MN_AAA ;53 PUSH BX
- OPJ_53 DW OP_155E-OP_1250 ;
- OPW_54_PUSH_SP DW MN_PUSH-MN_AAA ;54 PUSH SP
- OPJ_54 DW OP_155E-OP_1250 ;
- OPW_55_PUSH_BP DW MN_PUSH-MN_AAA ;55 PUSH BP
- OPJ_55 DW OP_155E-OP_1250 ;
- OPW_56_PUSH_SI DW MN_PUSH-MN_AAA ;56 PUSH SI
- OPJ_56 DW OP_155E-OP_1250 ;
- OPW_57_PUSH_DI DW MN_PUSH-MN_AAA ;57 PUSH DI
- OPJ_57 DW OP_155E-OP_1250 ;
- OPW_58_POP_AX DW MN_POP-MN_AAA ;58 POP AX
- OPJ_58 DW OP_155E-OP_1250 ;
- OPW_59_POP_CX DW MN_POP-MN_AAA ;59 POP CX
- OPJ_59 DW OP_155E-OP_1250 ;
- OPW_5A_POP_DX DW MN_POP-MN_AAA ;5A POP DX
- OPJ_5A DW OP_155E-OP_1250 ;
- OPW_5B_POP_BX DW MN_POP-MN_AAA ;5B POP BX
- OPJ_5B DW OP_155E-OP_1250 ;
- OPW_5C_POP_SP DW MN_POP-MN_AAA ;5C POP SP
- OPJ_5C DW OP_155E-OP_1250 ;
- OPW_5D_POP_BP DW MN_POP-MN_AAA ;5D POP BP
- OPJ_5D DW OP_155E-OP_1250 ;
- OPW_5E_POP_SI DW MN_POP-MN_AAA ;5E POP SI
- OPJ_5E DW OP_155E-OP_1250 ;
- OPW_5F_POP_DI DW MN_POP-MN_AAA ;5F POP DI
- OPJ_5F DW OP_155E-OP_1250 ;
- OPW_60_??? DW 0000H ;60 ???
- OPJ_60 DW OP_17D1-OP_1250 ;
- OPW_61_??? DW 0000H ;61 ???
- OPJ_61 DW OP_17D1-OP_1250 ;
- OPW_62_??? DW 0000H ;62 ???
- OPJ_62 DW OP_17D1-OP_1250 ;
- OPW_63_??? DW 0000H ;63 ???
- OPJ_63 DW OP_17D1-OP_1250 ;
- OPW_64_??? DW 0000H ;64 ???
- OPJ_64 DW OP_17D1-OP_1250 ;
- OPW_65_??? DW 0000H ;65 ???
- OPJ_65 DW OP_17D1-OP_1250 ;
- OPW_66_??? DW 0000H ;66 ???
- OPJ_66 DW OP_17D1-OP_1250 ;
- OPW_67_??? DW 0000H ;67 ???
- OPJ_67 DW OP_17D1-OP_1250 ;
- OPW_68_??? DW 0000H ;68 ???
- OPJ_68 DW OP_17D1-OP_1250 ;
- OPW_69_??? DW 0000H ;69 ???
- OPJ_69 DW OP_17D1-OP_1250 ;
- OPW_6A_??? DW 0000H ;6A ???
- OPJ_6A DW OP_17D1-OP_1250 ;
- OPW_6B_??? DW 0000H ;6B ???
- OPJ_6B DW OP_17D1-OP_1250 ;
- OPW_6C_??? DW 0000H ;6C ???
- OPJ_6C DW OP_17D1-OP_1250 ;
- OPW_6D_??? DW 0000H ;6D ???
- OPJ_6D DW OP_17D1-OP_1250 ;
- OPW_6E_??? DW 0000H ;6E ???
- OPJ_6E DW OP_17D1-OP_1250 ;
- OPW_6F_??? DW 0000H ;6F ???
- OPJ_6F DW OP_17D1-OP_1250 ;
- OPW_70_JO DW MN_JO-MN_AAA+05000H ;70 JO
- OPJ_70 DW OP_15BE-OP_1250+0A000H ;
- OPW_71_JNO DW MN_JNO-MN_AAA+05000H ;71 JNO
- OPJ_71 DW OP_15BE-OP_1250+0A000H ;
- OPW_72_JB DW MN_JB-MN_AAA+05000H ;72 JB
- OPJ_72 DW OP_15BE-OP_1250+0A000H ;
- OPW_73_JAE_JNB DW MN_JNB-MN_AAA+05000H ;73 JAE/JNB
- OPJ_73 DW OP_15BE-OP_1250+0A000H ;
- OPW_74_JZ DW MN_JZ-MN_AAA+05000H ;74 JZ/JE
- OPJ_74 DW OP_15BE-OP_1250+0A000H ;
- OPW_75_JNZ DW MN_JNZ-MN_AAA+05000H ;75 JNZ/JNE
- OPJ_75 DW OP_15BE-OP_1250+0A000H ;
- OPW_76_JBE DW MN_JBE-MN_AAA+05000H ;76 JBE
- OPJ_76 DW OP_15BE-OP_1250+0A000H ;
- OPW_77_JA DW MN_JA-MN_AAA+05000H ;77 JA
- OPJ_77 DW OP_15BE-OP_1250+0A000H ;
- OPW_78_JS DW MN_JS-MN_AAA+05000H ;78 JS
- OPJ_78 DW OP_15BE-OP_1250+0A000H ;
- OPW_79_JNS DW MN_JNS-MN_AAA+05000H ;79 JNS
- OPJ_79 DW OP_15BE-OP_1250+0A000H ;
- OPW_7A_JP DW MN_JPE-MN_AAA+05000H ;7A JP
- OPJ_7A DW OP_15BE-OP_1250+0A000H ;
- OPW_7B_JNP DW MN_JPO-MN_AAA+05000H ;7B JNP
- OPJ_7B DW OP_15BE-OP_1250+0A000H ;
- OPW_7C_JL DW MN_JL-MN_AAA+05000H ;7C JL
- OPJ_7C DW OP_15BE-OP_1250+0A000H ;
- OPW_7D_JGE DW MN_JGE-MN_AAA+05000H ;7D JGE
- OPJ_7D DW OP_15BE-OP_1250+0A000H ;
- OPW_7E_JLE DW MN_JLE-MN_AAA+05000H ;7E JLE
- OPJ_7E DW OP_15BE-OP_1250+0A000H ;
- OPW_7F_JG DW MN_JG-MN_AAA+05000H ;7F JG
- OPJ_7F DW OP_15BE-OP_1250+0A000H ;
- OPW_80_TABLE_V DW OFFSET MNV_1FD8 ;80 (TABLE V)
- OPJ_80 DW OP_12B8-OP_1250 ;
- OPW_81_TABLE_V DW OFFSET MNV_1FD8 ;81 (TABLE V)
- OPJ_81 DW OP_12B8-OP_1250 ;
- OPW_82_TABLE_V DW OFFSET MNV_1FD8 ;82 (TABLE V)
- OPJ_82 DW OP_12B8-OP_1250 ;
- OPW_83_TABLE_V DW OFFSET MNV_1FD8 ;83 (TABLE V)
- OPJ_83 DW OP_12C0-OP_1250 ;
- OPW_84_TEST DW MN_TEST-MN_AAA+02000H ;84 TEST
- OPJ_84 DW OP_15AE-OP_1250 ;
- OPW_85_TEST DW MN_TEST-MN_AAA+02000H ;85 TEST
- OPJ_85 DW OP_15AE-OP_1250 ;
- OPW_86_XCHG DW MN_XCHG-MN_AAA+03000H ;86 XCHG
- OPJ_86 DW OP_15AE-OP_1250 ;
- OPW_87_XCHG DW MN_XCHG-MN_AAA+03000H ;87 XCHG
- OPJ_87 DW OP_15AE-OP_1250 ;
- OPW_88_MOV DW MN_MOV-MN_AAA+03000H ;88 MOV
- OPJ_88 DW OP_1548-OP_1250 ;
- OPW_89_MOV DW MN_MOV-MN_AAA+03000H ;89 MOV
- OPJ_89 DW OP_1548-OP_1250 ;
- OPW_8A_MOV DW MN_MOV-MN_AAA+01000H ;8A MOV
- OPJ_8A DW OP_15AE-OP_1250 ;
- OPW_8B_MOV DW MN_MOV-MN_AAA+01000H ;8B MOV
- OPJ_8B DW OP_15AE-OP_1250 ;
- OPW_8C_MOV DW MN_MOV-MN_AAA+03000H ;8C MOV
- OPJ_8C DW OP_1575-OP_1250 ;
- OPW_8D_LEA DW MN_LEA-MN_AAA+01000H ;8D LEA
- OPJ_8D DW OP_15A9-OP_1250 ;
- OPW_8E_MOV DW MN_MOV-MN_AAA+01000H ;8E MOV
- OPJ_8E DW OP_158F-OP_1250 ;
- OPW_8F_POP DW MN_POP-MN_AAA+03000H ;8F POP
- OPJ_8F DW OP_15A0-OP_1250 ;
- OPW_90_NOP DW MN_NOP-MN_AAA ;90 NOP
- OPJ_90 DW OP_17CA-OP_1250 ;
- OPW_91_XCHG DW MN_XCHG-MN_AAA ;91 XCHG
- OPJ_91 DW OP_15E9-OP_1250 ;
- OPW_92_XCHG DW MN_XCHG-MN_AAA ;92 XCHG
- OPJ_92 DW OP_15E9-OP_1250 ;
- OPW_93_XCHG DW MN_XCHG-MN_AAA ;93 XCHG
- OPJ_93 DW OP_15E9-OP_1250 ;
- OPW_94_XCHG DW MN_XCHG-MN_AAA ;94 XCHG
- OPJ_94 DW OP_15E9-OP_1250 ;
- OPW_95_XCHG DW MN_XCHG-MN_AAA ;95 XCHG
- OPJ_95 DW OP_15E9-OP_1250 ;
- OPW_96_XCHG DW MN_XCHG-MN_AAA ;96 XCHG
- OPJ_96 DW OP_15E9-OP_1250 ;
- OPW_97_XCHG DW MN_XCHG-MN_AAA ;97 XCHG
- OPJ_97 DW OP_15E9-OP_1250 ;
- OPW_98_CBW DW MN_CBW-MN_AAA ;98 CBW
- OPJ_98 DW OP_17CA-OP_1250 ;
- OPW_99_CDW DW MN_CWD-MN_AAA ;99 CDW
- OPJ_99 DW OP_17CA-OP_1250 ;
- OPW_9A_CALL_FAR DW MN_CALL_FAR-MN_AAA+06000H ;9A CALL FAR
- OPJ_9A DW OP_13FB-OP_1250+0A000H ;
- OPW_9B_WAIT DW MN_WAIT-MN_AAA ;9B WAIT
- OPJ_9B DW OP_17CA-OP_1250 ;
- OPW_9C_PUSHF DW MN_PUSHF-MN_AAA ;9C PUSHF
- OPJ_9C DW OP_17CA-OP_1250 ;
- OPW_9D_POPF DW MN_POPF-MN_AAA ;9D POPF
- OPJ_9D DW OP_17CA-OP_1250 ;
- OPW_9E_SAHF DW MN_SAHF-MN_AAA ;9E SAHF
- OPJ_9E DW OP_17CA-OP_1250 ;
- OPW_9F_LAHF DW MN_LAHF-MN_AAA ;9F LAHF
- OPJ_9F DW OP_17CA-OP_1250 ;
- OPW_A0_MOV DW MN_MOV-MN_AAA+01000H ;A0 MOV
- OPJ_A0 DW OP_1417-OP_1250 ;
- OPW_A1_MOV DW MN_MOV-MN_AAA+01000H ;A1 MOV
- OPJ_A1 DW OP_1417-OP_1250 ;
- OPW_A2_MOV DW MN_MOV-MN_AAA+03000H ;A2 MOV
- OPJ_A2 DW OP_15F4-OP_1250 ;
- OPW_A3_MOV DW MN_MOV-MN_AAA+03000H ;A3 MOV
- OPJ_A3 DW OP_15F4-OP_1250 ;
- OPW_A4_MOVSB DW MN_MOVSB-MN_AAA ;A4 MOVSB
- OPJ_A4 DW OP_15FD_STRINGS-OP_1250 ;
- OPW_A5_MOVSW DW MN_MOVSW-MN_AAA ;A5 MOVSW
- OPJ_A5 DW OP_15FD_STRINGS-OP_1250 ;
- OPW_A6_CMPSB DW MN_CMPSB-MN_AAA ;A6 CMPSB
- OPJ_A6 DW OP_15FD_STRINGS-OP_1250 ;
- OPW_A7_CMPSW DW MN_CMPSW-MN_AAA ;A7 CMPSW
- OPJ_A7 DW OP_15FD_STRINGS-OP_1250 ;
- OPW_A8_TEST DW MN_TEST-MN_AAA ;A8 TEST
- OPJ_A8 DW OP_131D-OP_1250 ;
- OPW_A9_TEST DW MN_TEST-MN_AAA ;A9 TEST
- OPJ_A9 DW OP_131D-OP_1250 ;
- OPW_AA_STOSB DW MN_STOSB-MN_AAA ;AA STOSB
- OPJ_AA DW OP_15FD_STRINGS-OP_1250 ;
- OPW_AB_STOSW DW MN_STOSW-MN_AAA ;AB STOSW
- OPJ_AB DW OP_15FD_STRINGS-OP_1250 ;
- OPW_AC_LODSB DW MN_LODSB-MN_AAA ;AC LODSB
- OPJ_AC DW OP_15FD_STRINGS-OP_1250 ;
- OPW_AD_LODSW DW MN_LODSW-MN_AAA ;AD LODSW
- OPJ_AD DW OP_15FD_STRINGS-OP_1250 ;
- OPW_AE_SCASB DW MN_SCASB-MN_AAA ;AE SCASB
- OPJ_AE DW OP_15FD_STRINGS-OP_1250 ;
- OPW_AF_SCASW DW MN_SCASW-MN_AAA ;AF SCASW
- OPJ_AF DW OP_15FD_STRINGS-OP_1250 ;
- OPW_B0_MOV DW MN_MOV-MN_AAA ;B0 MOV
- OPJ_B0 DW OP_162D-OP_1250 ;
- OPW_B1_MOV DW MN_MOV-MN_AAA ;B1 MOV
- OPJ_B1 DW OP_162D-OP_1250 ;
- OPW_B2_MOV DW MN_MOV-MN_AAA ;B2 MOV
- OPJ_B2 DW OP_162D-OP_1250 ;
- OPW_B3_MOV DW MN_MOV-MN_AAA ;B3 MOV
- OPJ_B3 DW OP_162D-OP_1250 ;
- OPW_B4_MOV DW MN_MOV-MN_AAA ;B4 MOV
- OPJ_B4 DW OP_162D-OP_1250 ;
- OPW_B5_MOV DW MN_MOV-MN_AAA ;B5 MOV
- OPJ_B5 DW OP_162D-OP_1250 ;
- OPW_B6_MOV DW MN_MOV-MN_AAA ;B6 MOV
- OPJ_B6 DW OP_162D-OP_1250 ;
- OPW_B7_MOV DW MN_MOV-MN_AAA ;B7 MOV
- OPJ_B7 DW OP_162D-OP_1250 ;
- OPW_B8_MOV DW MN_MOV-MN_AAA ;B8 MOV
- OPJ_B8 DW OP_1634-OP_1250 ;
- OPW_B9_MOV DW MN_MOV-MN_AAA ;B9 MOV
- OPJ_B9 DW OP_1634-OP_1250 ;
- OPW_BA_MOV DW MN_MOV-MN_AAA ;BA MOV
- OPJ_BA DW OP_1634-OP_1250 ;
- OPW_BB_MOV DW MN_MOV-MN_AAA ;BB MOV
- OPJ_BB DW OP_1634-OP_1250 ;
- OPW_BC_MOV DW MN_MOV-MN_AAA ;BC MOV
- OPJ_BC DW OP_1634-OP_1250 ;
- OPW_BD_MOV DW MN_MOV-MN_AAA ;BD MOV
- OPJ_BD DW OP_1634-OP_1250 ;
- OPW_BE_MOV DW MN_MOV-MN_AAA ;BE MOV
- OPJ_BE DW OP_1634-OP_1250 ;
- OPW_BF_MOV DW MN_MOV-MN_AAA ;BF MOV
- OPJ_BF DW OP_1634-OP_1250 ;
- OPW_C0_??? DW 0000H ;C0 ???
- OPJ_C0 DW OP_17D1-OP_1250 ;
- OPW_C1_??? DW 0000H ;C1 ???
- OPJ_C1 DW OP_17D1-OP_1250 ;
- OPW_C2_RETN DW MN_RET_NEAR_POP-MN_AAA ;C2 RETN POP
- OPJ_C2 DW OP_1309-OP_1250 ;
- OPW_C3_RETN DW MN_RET_NEAR-MN_AAA ;C3 RETN
- OPJ_C3 DW OP_17B2-OP_1250 ;
- OPW_C4_LES DW MN_LES-MN_AAA+01000H ;C4 LES
- OPJ_C4 DW OP_12ED-OP_1250 ;
- OPW_C5_LDS DW MN_LDS-MN_AAA+01000H ;C5 LDS
- OPJ_C5 DW OP_12ED-OP_1250 ;
- OPW_C6_MOV DW MN_MOV-MN_AAA+03000H ;C6 MOV
- OPJ_C6 DW OP_12FF-OP_1250 ;
- OPW_C7_MOV DW MN_MOV-MN_AAA+03000H ;C7 MOV
- OPJ_C7 DW OP_12FF-OP_1250 ;
- OPW_C8_??? DW 0000H ;C8 ???
- OPJ_C8 DW OP_17D1-OP_1250 ;
- OPW_C9_??? DW 0000H ;C9 ???
- OPJ_C9 DW OP_17D1-OP_1250 ;
- OPW_CA_RETF DW MN_RET_FAR_POP-MN_AAA ;CA RETF POP
- OPJ_CA DW OP_130E-OP_1250 ;
- OPW_CB_RETF DW MN_RET_FAR-MN_AAA ;CB RETF
- OPJ_CB DW OP_17BD-OP_1250 ;
- OPW_CC_INT_3 DW MN_INT-MN_AAA+06000H ;CC INT 3
- OPJ_CC DW OP_163E-OP_1250+02000H ;
- OPW_CD_INT DW MN_INT-MN_AAA+06000H ;CD INT
- OPJ_CD DW OP_1654-OP_1250+02000H ;
- OPW_CE_INTO DW MN_INTO-MN_AAA ;CE INTO
- OPJ_CE DW OP_17CA-OP_1250 ;
- OPW_CF_IRET DW MN_IRET-MN_AAA ;CF IRET
- OPJ_CF DW OP_17B7-OP_1250+02000H ;
- OPW_D0_TABLE_W DW OFFSET MNW_1FC0 ;D0 (TABLE W)
- OPJ_D0 DW OP_1768-OP_1250 ;
- OPW_D1_TABLE_W DW OFFSET MNW_1FC0 ;D1 (TABLE W)
- OPJ_D1 DW OP_1768-OP_1250 ;
- OPW_D2_TABLE_W DW OFFSET MNW_1FC0 ;D2 (TABLE W)
- OPJ_D2 DW OP_1768-OP_1250 ;
- OPW_D3_TABLE_W DW OFFSET MNW_1FC0 ;D3 (TABLE W)
- OPJ_D3 DW OP_1768-OP_1250 ;
- OPW_D4_AAM DW MN_AAM-MN_AAA ;D4 AAM
- OPJ_D4 DW OP_153D-OP_1250 ;
- OPW_D5_AAD DW MN_AAD-MN_AAA ;D5 AAD
- OPJ_D5 DW OP_153D-OP_1250 ;
- OPW_D6_??DB?? DW MN_DB-MN_AAA ;D6 ??DB??
- OPJ_D6 DW OP_17D1-OP_1250 ;
- OPW_D7_XLAT DW MN_XLAT-MN_AAA ;D7 XLAT
- OPJ_D7 DW OP_17C7-OP_1250 ;
- OPW_D8_ESC_0 DW OFFSET ESC_2020 ;D8 ESC 0
- OPJ_D8 DW OP_1660-OP_1250 ;
- OPW_D9_ESC_1 DW OFFSET ESC_203C ;D9 ESC 1
- OPJ_D9 DW OP_1683_ESC1-OP_1250 ;
- OPW_DA_ESC_2 DW OFFSET ESC_2094 ;DA ESC 2
- OPJ_DA DW OP_16B2-OP_1250 ;
- OPW_DB_ESC_3 DW OFFSET ESC_20A4 ;DB ESC 3
- OPJ_DB DW OP_16B8_ESC3-OP_1250 ;
- OPW_DC_ESC_4 DW OFFSET ESC_2020 ;DC ESC 4
- OPJ_DC DW OP_167A-OP_1250 ;
- OPW_DD_ESC_5 DW OFFSET ESC_20BC ;DD ESC 5
- OPJ_DD DW OP_16CC_ESC5_7-OP_1250 ;
- OPW_DE_ESC_6 DW OFFSET ESC_2094 ;DE ESC 6
- OPJ_DE DW OP_16ED_ESC6-OP_1250 ;
- OPW_DF_ESC_7 DW OFFSET ESC_20E4 ;DF ESC 7
- OPJ_DF DW OP_16CC_ESC5_7-OP_1250 ;
- OPW_E0_LOOPNZ DW MN_LOOPNZ-MN_AAA+05000H ;E0 LOOPNZ
- OPJ_E0 DW OP_15BE-OP_1250+0A000H ;
- OPW_E1_LOOPZ DW MN_LOOPZ-MN_AAA+05000H ;E1 LOOPZ
- OPJ_E1 DW OP_15BE-OP_1250+0A000H ;
- OPW_E2_LOOP DW MN_LOOP-MN_AAA+05000H ;E2 LOOP
- OPJ_E2 DW OP_15BE-OP_1250+0A000H ;
- OPW_E3_JCXZ DW MN_JCXZ-MN_AAA+05000H ;E3 JCXZ
- OPJ_E3 DW OP_15BE-OP_1250+0A000H ;
- OPW_E4_IN DW MN_IN-MN_AAA+07000H ;E4 IN
- OPJ_E4 DW OP_164E-OP_1250 ;
- OPW_E5_IN DW MN_IN-MN_AAA+07000H ;E5 IN
- OPJ_E5 DW OP_164E-OP_1250 ;
- OPW_E6_OUT DW MN_OUT-MN_AAA+07000H ;E6 OUT
- OPJ_E6 DW OP_1643-OP_1250 ;
- OPW_E7_OUT DW MN_OUT-MN_AAA+07000H ;E7 OUT
- OPJ_E7 DW OP_1643-OP_1250 ;
- OPW_E8_CALL_NEA DW MN_CALL-MN_AAA+06000H ;E8 CALL NEAR
- OPJ_E8 DW OP_15DF-OP_1250+0A000H ;
- OPW_E9_JMP_NEAR DW MN_JMP-MN_AAA+05000H ;E9 JMP NEAR
- OPJ_E9 DW OP_15C6-OP_1250+0A000H ;
- OPW_EA_JMP_FAR DW MN_JMP_FAR_PTR-MN_AAA+05000H ;EA JMP FAR
- OPJ_EA DW OP_13FB-OP_1250+0A000H ;
- OPW_EB_JMP_SHOR DW MN_JMP_SHORT-MN_AAA+05000H ;EB JMP SHORT
- OPJ_EB DW OP_15BA-OP_1250+0A000H ;
- OPW_EC_IN DW MN_IN-MN_AAA+07000H ;EC IN
- OPJ_EC DW OP_1754-OP_1250 ;
- OPW_ED_IN DW MN_IN-MN_AAA+07000H ;ED IN
- OPJ_ED DW OP_1754-OP_1250 ;
- OPW_EE_OUT DW MN_OUT-MN_AAA+07000H ;EE OUT
- OPJ_EE DW OP_175F-OP_1250 ;
- OPW_EF_OUT DW MN_OUT-MN_AAA+07000H ;EF OUT
- OPJ_EF DW OP_175F-OP_1250 ;
- OPW_F0_LOCK DW MN_LOCK-MN_AAA ;F0 LOCK
- OPJ_F0 DW OP_1268-OP_1250 ;
- OPW_F1_??? DW 0000H ;F1 ???
- OPJ_F1 DW OP_17D1-OP_1250 ;
- OPW_F2_REPNZ DW MN_REPNZ-MN_AAA ;F2 REPNZ
- OPJ_F2 DW OP_1268-OP_1250 ;
- OPW_F3_REPZ DW MN_REPZ-MN_AAA ;F3 REPZ
- OPJ_F3 DW OP_1268-OP_1250 ;
- OPW_F4_HLT DW MN_HLT-MN_AAA ;F4 HLT
- OPJ_F4 DW OP_17CA-OP_1250 ;
- OPW_F5_CMC DW MN_CMC-MN_AAA ;F5 CMC
- OPJ_F5 DW OP_17CA-OP_1250 ;
- OPW_F6_TABLE_X DW OFFSET MNX_1FF0 ;F6 (TABLE X)
- OPJ_F6 DW OP_1781-OP_1250 ;
- OPW_F7_TABLE_X DW OFFSET MNX_1FF0 ;F7 (TABLE X)
- OPJ_F7 DW OP_1781-OP_1250 ;
- OPW_F8_CLC DW MN_CLC-MN_AAA ;F8 CLC
- OPJ_F8 DW OP_17CA-OP_1250 ;
- OPW_F9_STC DW MN_STC-MN_AAA ;F9 STC
- OPJ_F9 DW OP_17CA-OP_1250 ;
- OPW_FA_CLI DW MN_CLI-MN_AAA ;FA CLI
- OPJ_FA DW OP_17CA-OP_1250 ;
- OPW_FB_STI DW MN_STI-MN_AAA ;FB STI
- OPJ_FB DW OP_17CA-OP_1250 ;
- OPW_FC_CLD DW MN_CLD-MN_AAA ;FC CLD
- OPJ_FC DW OP_17CA-OP_1250 ;
- OPW_FD_STD DW MN_STD-MN_AAA ;FD STD
- OPJ_FD DW OP_17CA-OP_1250 ;
- OPW_FE_TABLE_Y DW OFFSET MNY_2008 ;FE (TABLE Y)
- OPJ_FE DW OP_178B-OP_1250 ;
- OPW_FF_TABLE_Y DW OFFSET MNY_2008 ;FF (TABLE Y)
- OPJ_FF DW OP_178B-OP_1250 ;
- DB 10,'Table V, 80-83: DB and DW difference from Mnemonic '
- MNV_1FD8 DB 0 ; op-code table-V
- MNV_00_ADD DW MN_ADD-MN_AAA+04000H
- MNV_1FDB DB 0
- MNV_01_OR DW MN_OR-MN_AAA+04000H
- MNV_1FDE DB 0
- MNV_02_ADC DW MN_ADC-MN_AAA+04000H
- MNV_1FE1 DB 0
- MNV_03_SBB DW MN_SBB-MN_AAA+04000H
- MNV_1FE4 DB 0
- MNV_04_AND DW MN_AND-MN_AAA+04000H
- MNV_1FE7 DB 0
- MNV_05_SUB DW MN_SUB-MN_AAA+04000H
- MNV_1FEA DB 0
- MNV_06_XOR DW MN_XOR-MN_AAA+04000H
- MNV_1FED DB 0
- MNV_07_CMP DW MN_CMP-MN_AAA+02000H
- DB 10, 'Table W, D0-D3:'
- MNW_1FC0 DB 0 ; op-code table-W
- MNW_00_ROL DW MN_ROL-MN_AAA+04000H
- MNW_1FC3 DB 0
- MNW_01_ROR DW MN_ROR-MN_AAA+04000H
- MNW_1FC6 DB 0
- MNW_02_RCL DW MN_RCL-MN_AAA+04000H
- MNW_1FC9 DB 0
- MNW_03_RCR DW MN_RCR-MN_AAA+04000H
- MNW_1FCC DB 0
- MNW_04_SHL DW MN_SHL-MN_AAA+04000H
- MNW_1FCF DB 0
- MNW_05_SHR DW MN_SHR-MN_AAA+04000H
- MNW_1FD2 DB 0
- MNW_06_??? DW 0000H
- MNW_1FD5 DB 0
- MNW_07_SAR DW MN_SAR-MN_AAA+04000H
- DB 10, 'Table X, F6,F7:'
- MNX_1FF0 DB 0 ; op-code table-X
- MNX_00_TEST DW MN_TEST-MN_AAA+02000H
- MNX_1FF3 DB 0
- MNX_01_??? DW 0000H
- MNX_1FF6 DB 0
- MNX_02_NOT DW MN_NOT-MN_AAA+04000H
- MNX_1FF9 DB 0
- MNX_03_NEG DW MN_NEG-MN_AAA+04000H
- MNX_1FFC DB 0
- MNX_04_MUL DW MN_MUL-MN_AAA+01000H
- MNX_1FFF DB 0
- MNX_05_IMUL DW MN_IMUL-MN_AAA+01000H
- MNX_2002 DB 0
- MNX_06_DIV DW MN_DIV-MN_AAA+01000H
- MNX_2005 DB 0
- MNX_07_IDIV DW MN_IDIV-MN_AAA+01000H
- DB 10, 'Table Y, FE,FF:'
- MNY_2008 DB 0 ; op-code table-Y
- MNY_00_INC DW MN_INC-MN_AAA+04000H
- MNY_200B DB 0
- MNY_01_DEC DW MN_DEC-MN_AAA+04000H
- MNY_200E DB 20H
- MNY_02_CALL_NEA DW MN_CALL-MN_AAA+06000H
- MNY_2011 DB 20H
- MNY_03_CALL_FAR DW MN_CALL_DW-MN_AAA+06000H
- MNY_2014 DB 20H
- MNY_04_JMP_NEAR DW MN_JMP-MN_AAA+05000H
- MNY_2017 DB 20H
- MNY_05_JMP_FAR DW MN_JMP_DW_PTR-MN_AAA+05000H
- MNY_201A DB 0
- MNY_06_??PUSH?? DW MN_PUSH-MN_AAA+01000H
- MNY_201D DB 0
- MNY_07_??? DW 0000H
- DB 10,'Table ESC & String: DW difference from Mnemonic, 1=null '
- ESC_2020 DW MN_FADD-MN_AAA+01000H
- ESC_2022 DW MN_FMUL-MN_AAA+01000H
- ESC_2024 DW MN_FCOM-MN_AAA+01000H
- ESC_2026 DW MN_FCOMP-MN_AAA+01000H
- ESC_2028 DW MN_FSUB-MN_AAA+01000H
- ESC_202A DW MN_FSUBR-MN_AAA+01000H
- ESC_202C DW MN_FDIV-MN_AAA+01000H
- ESC_202E DW MN_FDIVR-MN_AAA+01000H
- STR_2030 DW MN_MOVS-MN_AAA
- STR_2032 DW MN_CMPS-MN_AAA
- STR_2034 DW 1 ; 1
- STR_2036 DW 1 ; 1
- STR_2038 DW MN_LODS-MN_AAA
- STR_203A DW 1 ; 1
- ESC_203C DW MN_FLD-MN_AAA+01000H
- ESC_203E DW 1 ; 1
- ESC_2040 DW MN_FST-MN_AAA+03000H
- ESC_2042 DW MN_FSTP-MN_AAA+03000H
- ESC_2044 DW MN_FLDENV-MN_AAA+01000H
- ESC_2046 DW MN_FLDCW-MN_AAA+01000H
- ESC_2048 DW MN_FSTENV-MN_AAA+03000H
- ESC_204A DW MN_FSTCW-MN_AAA+03000H
- ESC_204C DW MN_FLD-MN_AAA+01000H
- ESC_204E DW MN_FXCH-MN_AAA
- ESC_2050 DW MN_FNOP-MN_AAA
- ESC_2052 DW MN_FSTP-MN_AAA
- ESC_2054 DW MN_FCHS-MN_AAA
- ESC_2056 DW MN_FABS-MN_AAA
- ESC_2058 DW 1 ; 1
- ESC_205A DW 1 ; 1
- ESC_205C DW MN_FTST-MN_AAA
- ESC_205E DW MN_FXAM-MN_AAA
- ESC_2060 DW 1 ; 1
- ESC_2062 DW 1 ; 1
- ESC_2064 DW MN_FLD1-MN_AAA
- ESC_2066 DW MN_FLDL2T-MN_AAA
- ESC_2068 DW MN_FLDL2E-MN_AAA
- ESC_206A DW MN_FLDPI-MN_AAA
- ESC_206C DW MN_FLDLG2-MN_AAA
- ESC_206E DW MN_FLDLN2-MN_AAA
- ESC_2070 DW MN_FLDZ-MN_AAA
- ESC_2072 DW 1 ; 1
- ESC_2074 DW MN_F2XM1-MN_AAA
- ESC_2076 DW MN_FYL2X-MN_AAA
- ESC_2078 DW MN_FPTAN-MN_AAA
- ESC_207A DW MN_FPATAN-MN_AAA
- ESC_207C DW MN_FXTRACT-MN_AAA
- ESC_207E DW 1 ; 1
- ESC_2080 DW MN_FDECSTP-MN_AAA
- ESC_2082 DW MN_FINCSTP-MN_AAA
- ESC_2084 DW MN_FPREM-MN_AAA
- ESC_2086 DW MN_FYL2XP1-MN_AAA
- ESC_2088 DW MN_FSQRT-MN_AAA
- ESC_208A DW 1 ; 1
- ESC_208C DW MN_FRNDINT-MN_AAA
- ESC_208E DW MN_FSCALE-MN_AAA
- ESC_2090 DW 1 ; 1
- ESC_2092 DW 1 ; 1
- ESC_2094 DW MN_FIADD-MN_AAA+01000H
- ESC_2096 DW MN_FIMUL-MN_AAA+01000H
- ESC_2098 DW MN_FICOM-MN_AAA+01000H
- ESC_209A DW MN_FICOMP-MN_AAA+01000H
- ESC_209C DW MN_FISUB-MN_AAA+01000H
- ESC_209E DW MN_FISUBR-MN_AAA+01000H
- ESC_20A0 DW MN_FIDIV-MN_AAA+01000H
- ESC_20A2 DW MN_FIDIVR-MN_AAA+01000H
- ESC_20A4 DW MN_FILD-MN_AAA+01000H
- ESC_20A6 DW 1 ; 1
- ESC_20A8 DW MN_FIST-MN_AAA+03000H
- ESC_20AA DW MN_FISTP-MN_AAA+03000H
- ESC_20AC DW 1 ; 1
- ESC_20AE DW MN_FLD-MN_AAA+01000H
- ESC_20B0 DW 1 ; 1
- ESC_20B2 DW MN_FSTP-MN_AAA+03000H
- ESC_20B4 DW MN_FENI-MN_AAA
- ESC_20B6 DW MN_FDISI-MN_AAA
- ESC_20B8 DW MN_FCLEX-MN_AAA
- ESC_20BA DW MN_FINIT-MN_AAA
- ESC_20BC DW MN_FLD-MN_AAA+01000H
- ESC_20BE DW 1 ; 1
- ESC_20C0 DW MN_FST-MN_AAA+03000H
- ESC_20C2 DW MN_FSTP-MN_AAA+03000H
- ESC_20C4 DW MN_FRSTOR-MN_AAA
- ESC_20C6 DW 1 ; 1
- ESC_20C8 DW MN_FSAVE-MN_AAA+03000H
- ESC_20CA DW MN_FSTSW-MN_AAA+03000H
- ESC_20CC DW MN_FFREE-MN_AAA+03000H
- ESC_20CE DW MN_FXCH-MN_AAA+03000H
- ESC_20D0 DW MN_FST-MN_AAA+03000H
- ESC_20D2 DW MN_FSTP-MN_AAA+03000H
- ESC_20D4 DW MN_FADDP-MN_AAA+01000H
- ESC_20D6 DW MN_FMULP-MN_AAA+01000H
- ESC_20D8 DW MN_FCOMP-MN_AAA+01000H
- ESC_20DA DW MN_FCOMPP-MN_AAA+01000H
- ESC_20DC DW MN_FSUBP-MN_AAA+01000H
- ESC_20DE DW MN_FSUBRP-MN_AAA+01000H
- ESC_20E0 DW MN_FDIVP-MN_AAA+01000H
- ESC_20E2 DW MN_FDIVRP-MN_AAA+01000H
- ESC_20E4 DW MN_FILD-MN_AAA+01000H
- ESC_20E6 DW 1 ; 1
- ESC_20E8 DW MN_FIST-MN_AAA+03000H
- ESC_20EA DW MN_FISTP-MN_AAA+03000H
- ESC_20EC DW MN_FBLD-MN_AAA+01000H
- ESC_20EE DW MN_FILD-MN_AAA+01000H
- ESC_20F0 DW MN_FBSTP-MN_AAA+03000H
- ESC_20F2 DW MN_FISTP-MN_AAA+03000H
- DB 10,'Mnemonic '
- MN_AAA DB 'AA', 0C1H
- MN_AAD DB 'AA', 0C4H
- MN_AAM DB 'AA', 0CDH
- MN_AAS DB 'AA', 0D3H
- MN_ADC DB 'AD', 0C3H
- MN_ADD DB 'AD', 0C4H
- MN_AND DB 'AN', 0C4H
- MN_BYT_PT DB 'BYTE PTR', 0A0H
- MN_CALL DB 'CAL', 0CCH
- MN_CALL_DW DB 'CALL', 9, 'DWORD PT', 0D2H
- MN_CALL_FAR DB 'CALL', 9, 'FAR PT', 0D2H
- MN_CBW DB 'CB', 0D7H
- MN_CLC DB 'CL', 0C3H
- MN_CLD DB 'CL', 0C4H
- MN_CLI DB 'CL', 0C9H
- MN_CMC DB 'CM', 0C3H
- MN_CMP DB 'CM', 0D0H
- MN_CMPS DB 'CMP', 0D3H
- MN_CMPSB DB 'CMPS', 0C2H
- MN_CMPSW DB 'CMPS', 0D7H
- DATA_2150_CON DB 'CON:', 0DH
- MN_CWD DB 'CW', 0C4H
- MN_DAA DB 'DA', 0C1H
- MN_DAS DB 'DA', 0D3H
- MN_DB DB 'D', 0C2H
- MN_DD DB 'D', 0C4H
- MN_DEC DB 'DE', 0C3H
- DATA_2165 DB '[DI]', 0ACH
- MN_DIV DB 'DI', 0D6H
- DATA_216D_DUP DB ' DUP', 0A8H
- MN_DW DB 'D', 0D7H
- DATA_2174 DB 'DWORD PTR', 0A0H
- DATA_217E DB 'END', 89H
- DATA_2182 DB 9, 'ENDS', 0DH, 0AH, ';', 0DH, 8AH
- DATA_218C_EQU DB 9, 'EQU', 89H
- MN_ESC DB 'ES', 0C3H
- MN_F2XM1 DB 'F2XM', 0B1H
- MN_FABS DB 'FAB', 0D3H
- MN_FADD DB 'FAD', 0C4H
- MN_FADDP DB 'FADD', 0D0H
- MN_FBLD DB 'FBL', 0C4H
- MN_FBSTP DB 'FBST', 0D0H
- MN_FCHS DB 'F'
- MN_CHS DB 'CH', 0D3H
- MN_FCLEX DB 'FCLE', 0D8H
- MN_FCOM DB 'FCO', 0CDH
- MN_FCOMP DB 'FCOM', 0D0H
- MN_FCOMPP DB 'FCOMP', 0D0H
- MN_FDECSTP DB 'FDECST', 0D0H
- MN_FDISI DB 'FDIS', 0C9H
- MN_FDIV DB 'FDI', 0D6H
- MN_FDIVP DB 'F'
- MN_DIVP DB 'DIV', 0D0H
- MN_FDIVR DB 'FDIV', 0D2H
- MN_FDIVRP DB 'FDIVR', 0D0H
- MN_FENI DB 'FEN', 0C9H
- MN_FFREE DB 'FFRE', 0C5H
- MN_FIADD DB 'FIAD', 0C4H
- MN_FICOM DB 'FICO', 0CDH
- MN_FICOMP DB 'FICOM', 0D0H
- MN_FIDIV DB 'FIDI', 0D6H
- MN_FIDIVR DB 'FIDIV', 0D2H
- MN_FILD DB 'FIL', 0C4H
- MN_FIMUL DB 'FIMU', 0CCH
- MN_FINCSTP DB 'FINCST', 0D0H
- MN_FINIT DB 'FINI', 0D4H
- MN_FIST DB 'FIS', 0D4H
- MN_FISTP DB 'FIST', 0D0H
- MN_FISUB DB 'FISU', 0C2H
- MN_FISUBR DB 'FISUB', 0D2H
- MN_FLD DB 'FL', 0C4H
- MN_FLD1 DB 'FLD', 0B1H
- MN_FLDL2E DB 'FLDL2', 0C5H
- MN_FLDL2T DB 'FLDL2', 0D4H
- MN_FLDCW DB 'FLDC', 0D7H
- MN_FLDENV DB 'FLDEN', 0D6H
- MN_FLDLG2 DB 'FLDLG', 0B2H
- MN_FLDLN2 DB 'FLDLN', 0B2H
- MN_FLDPI DB 'FLDP', 0C9H
- MN_FLDZ DB 'FLD', 0DAH
- MN_FMUL DB 'FMU', 0CCH
- MN_FMULP DB 'FMUL', 0D0H
- MN_FNOP DB 'FNO', 0D0H
- MN_FPATAN DB 'FPATA', 0CEH
- MN_FPREM DB 'FPRE', 0CDH
- MN_FPTAN DB 'FPTA', 0CEH
- MN_FRNDINT DB 'FRNDIN', 0D4H
- MN_FRSTOR DB 'FRSTO', 0D2H
- MN_FSAVE DB 'FSAV', 0C5H
- MN_FSCALE DB 'FSCAL', 0C5H
- MN_FSQRT DB 'FSQR', 0D4H
- MN_FST DB 'FS', 0D4H
- MN_FSTCW DB 'FSTC', 0D7H
- MN_FSTENV DB 'FSTEN', 0D6H
- MN_FSTP DB 'FST', 0D0H
- MN_FSTSW DB 'FSTS', 0D7H
- MN_FSUB DB 'FSU', 0C2H
- MN_FSUBP DB 'FSUB', 0D0H
- MN_FSUBR DB 'FSUB', 0D2H
- MN_FSUBRP DB 'FSUBR', 0D0H
- MN_FTST DB 'FTS', 0D4H
- MN_FXAM DB 'FXA', 0CDH
- MN_FXCH DB 'FXC', 0C8H
- MN_FXTRACT DB 'FXTRAC', 0D4H
- MN_FYL2X DB 'FYL2', 0D8H
- MN_FYL2XP1 DB 'FYL2XP', 0B1H
- MN_HLT DB 'HL', 0D4H
- MN_IDIV DB 'IDI', 0D6H
- MN_IMUL DB 'IMU', 0CCH
- MN_IN DB 'I', 0CEH
- MN_INC DB 'IN', 0C3H
- MN_INT DB 'IN', 0D4H
- MN_INTO DB 'INT', 0CFH
- MN_IRET DB 'IRE', 0D4H
- MN_JA DB 'J', 0C1H
- MN_JB DB 'J', 0C2H
- MN_JBE DB 'JB', 0C5H
- MN_JCXZ DB 'JCX', 0DAH
- MN_JG DB 'J', 0C7H
- MN_JGE DB 'JG', 0C5H
- MN_JL DB 'J', 0CCH
- MN_JLE DB 'JL', 0C5H
- MN_JMP DB 'JM', 0D0H
- MN_JMP_FAR_PTR DB 'JMP', 9, 'FAR PT', 0D2H
- MN_JMP_DW_PTR DB 'JMP', 9, 'DWORD PT', 0D2H
- MN_JMP_SHORT DB 'JMP', 9, 'SHOR', 0D4H
- MN_JNB DB 'JN', 0C2H
- MN_JNO DB 'JN', 0CFH
- MN_JNS DB 'JN', 0D3H
- MN_JNZ DB 'JN', 0DAH
- MN_JO DB 'J', 0CFH
- MN_JPE DB 'JP', 0C5H
- MN_JPO DB 'JP', 0CFH
- MN_JS DB 'J', 0D3H
- MN_JZ DB 'J', 0DAH
- MN_LAHF DB 'LAH', 0C6H
- MN_LDS DB 'LD', 0D3H
- MN_LEA DB 'LE', 0C1H
- MN_LES DB 'LE', 0D3H
- MN_LOCK DB 'LOCK', 89H
- MN_LODS DB 'LOD', 0D3H
- MN_LODSB DB 'LODS', 0C2H
- MN_LODSW DB 'LODS', 0D7H
- MN_LOOP DB 'LOO', 0D0H
- MN_LOOPNZ DB 'LOOPN', 0DAH
- MN_LOOPZ DB 'LOOP', 0DAH
- MN_MOV DB 'MO', 0D6H
- MN_MOVS DB 'MOV', 0D3H
- MN_MOVSB DB 'MOVS', 0C2H
- MN_MOVSW DB 'MOVS', 0D7H
- MN_MUL DB 'MU', 0CCH
- MN_NEG DB 'NE', 0C7H
- MN_TAB_NOP DB 9
- MN_NOP DB 'NO', 0D0H
- MN_NOT DB 'NO', 0D4H
- MN_OFFSET DB 'OFFSET', 0A0H
- MN_OR DB 'O', 0D2H
- MN_OUT DB 'OU', 0D4H
- MN_POP DB 'PO', 0D0H
- MN_POPF DB 'POP', 0C6H
- MN_PUSH DB 'PUS', 0C8H
- MN_PUSHF DB 'PUSH', 0C6H
- MN_RCL DB 'RC', 0CCH
- MN_RCR DB 'RC', 0D2H
- MN_REPNZ DB 'REPNZ', 89H
- MN_REPZ DB 'REPZ', 89H
- MN_RET_FAR DB 'RET_FA', 0D2H
- MN_RET_FAR_POP DB 'RET_FAR_PO', 0D0H
- MN_RET_NEAR DB 'RET_NEA', 0D2H
- MN_RET_NEAR_POP DB 'RET_NEAR_PO', 0D0H
- MN_ROL DB 'RO', 0CCH
- MN_ROR DB 'RO', 0D2H
- MN_SAHF DB 'SAH', 0C6H
- MN_SAR DB 'SA', 0D2H
- MN_SBB DB 'SB', 0C2H
- MN_SCASB DB 'SCAS', 0C2H
- MN_SCASW DB 'SCAS', 0D7H
- MN_SHL DB 'SH', 0CCH
- MN_SHR DB 'SH', 0D2H
- DATA_2417 DB '[SI', 0DDH
- MN_STC DB 'ST', 0C3H
- MN_STD DB 'ST', 0C4H
- MN_STI DB 'ST', 0C9H
- MN_STOSB DB 'STOS', 0C2H
- MN_STOSW DB 'STOS', 0D7H
- MN_SUB DB 'SU', 0C2H
- MN_TITLE DB 'PAGE',9,'58,132',0DH,0AH ;added characters in string
- DB 'TITLE', 89H ; 'PAGE',9,'58,132',0DH,0AH,'TITLE',89H
- MN_TEST DB 'TES', 0D4H
- MN_WAIT DB 'WAI', 0D4H
- MN_WORD_PT DB 'WORD PTR', 0A0H
- MN_XCHG DB 'XCH', 0C7H
- MN_XLAT DB 'XLA', 0D4H
- MN_XOR DB 'XO', 0D2H
- MN_SEG_STK DB 9, 'SEGMENT'
- FIX_MN_STK DB 0DH, 8AH
- DB 'STACK', 0DH, 8AH
- MN_ASSUME DB 9, 'ASSUME DS:S'
- FIX_DS_SEG DB '0000, SS:S0000 ,CS:S0000 ,ES:S0000', 0DH, 8AH
- MN_ORG_$ DB 9, 'ORG', 9, '$', 0ABH
- ;-------------------------------
- BYTE_REGS_249B DB 'ALCLDLBLAHCHDHBH'
- WORD_REGS_24AB DB 'AXCXDXBXSPBPSIDI'
- SEG_REGS_24BB DB 'ESCSSSDS'
- DATA_24C3 DB 'BXBXBPBP' ; Data table (indexed access)
- DATA_24CB DB 'SIDIBPBX' ; Data table (indexed access)
- DATA_24D3 DB 'IRTWMJCP?'
- DATA_24DC DB 'DSCE'
- ;-------------------------------
- MAC_PATCH83 DB 0 ; byte can now be 0 or 0FFH
- DB 'PATCH83', 9, 'MACRO', 9, 'X', 0DH, 0AH
- DB 'ORG', 9, '$-3', 0DH, 0AH
- DB 'DB', 9, '81H', 0DH, 0AH ;op-code is now 81H
- DB 'ORG', 9, '$+2', 0DH, 0AH
- DB 'DB', 9, 'X', 0DH, 0AH
- DB 'ENDM', 0DH, 0AH
- DB ';', 0DH
- DB 8AH
- MAC_RET_FAR DB 0
- DB 'RET_FAR', 9, 'MACRO', 0DH, 0AH
- DB 'DB', 9, '0CBH', 0DH, 0AH
- DB 'ENDM', 0DH, 0AH
- DB ';', 0DH
- DB 8AH
- MAC_RET_FAR_P DB 0
- DB 'RET_FAR_POP', 9, 'MACRO', 9, 'X', 0DH, 0AH
- DB 'DB', 9, '0CAH', 0DH, 0AH
- DB 'DW', 9, 'X', 0DH, 0AH
- DB 'ENDM', 0DH, 0AH
- DB ';', 0DH
- DB 8AH
- MAC_RET_NEAR DB 0
- DB 'RET_NEAR', 9, 'MACRO', 0DH, 0AH
- DB 'DB', 9, '0C3H', 0DH, 0AH
- DB 'ENDM', 0DH, 0AH
- DB ';', 0DH
- DB 8AH
- MAC_RET_NEAR_P DB 0
- DB 'RET_NEAR_POP', 9, 'MACRO', 9, 'X'
- DB 0DH, 0AH, 'DB', 9, '0C2H', 0DH, 0AH
- DB 'DW', 9, 'X', 0DH, 0AH
- DB 'ENDM', 0DH, 0AH
- DB ';', 0DH
- DB 8AH, 0FFH
- ;-------------------------------
- MN_PATCH83_POS DB 9, 'PATCH83', 9, '0', 0DH ;altered, positive
- DB 8AH
- MN_PATCH83_NEG DB 9, 'PATCH83', 9, '0FFH', 0DH ;New MACRO, negative
- DB 8AH
- MN_DOT_RADIX_16 DB '.RADIX', 9, '16', 0DH, 0AH
- MN_CRLF_INIT_VL DB 'LF', 9, 'EQU', 9, '0AH', 0DH, 0AH
- DB 'CR', 9, 'EQU', 9, '0DH', 0DH, 0AH
- DB ';', 0DH, 0AH
- DB ';INITIAL VALUES :', 9, 'CS:IP', 9
- INIT_CS_SEG_FIX DB '0000:0000', 0DH, 0AH ;patch up location
- DB ';', 9, 9, 9, 'SS:SP', 9
- INIT_SP_SEG_FIX DB '0000:0000', 0DH ;patch up location
- DB 8AH
- ;-------------------------------
- MS_PROMPT_XARQ DB 'X <$'
- DATA_2627 DB '>, A <CON>, R <CON> or Q ? $'
- ;**** DB 'Invalid drive specification$' ; (apparently unused)
- MS_NOCLOSE_265F DB 0DH, 0AH, 'Unable to close output file$'
- MS_FILE_267D DB 'File $'
- MS_NOTFND_2683 DB ' not found', 7
- ;***DATA_268E DB 0DH, 0AH, '$'
- MS_CRLF_$ DB 0DH, 0AH, '$'
- MS_DIRFULL_2691 DB 'No room in disk directory$'
- MS_DSKFULL_26AB DB 'Insufficient space on disk$'
- MS_ERR_RD_26C6 DB 'Error in reading exe file$'
- MS_ERR_SEQ_26E0 DB 'Unrecognized type in /SEQ file near address '
- DATA_270C DB '0000H$'
- MS_AD_ORDR_2712 DB 'Addresses out of order near address '
- DATA_2736 DB '0000H', 0DH, 0AH, '$'
- MS_STR_SEQ_273E DB 'Undefined structure in SEQ file$'
- MS_RELOC_275E DB ';Relo'
- DB 0E3H
- MS_ASM_2764 DB 'ASM'
- MS_NUL_2767 DB 'NUL '
- MS_SEQ_276B DB 'SEQ'
- MS_TBL_276E DB 'TBL'
- MS_HXVL_ER_2771 DB 'Hex value error in /SEQ file$'
- MS_BYT_N_OT_FLE DB 'Bytes in output file: $'
- MS_FILE_SPEC_ER DB ' File spec error$'
- MS_REF_TBL_INCOMP DB 7, 'Reference Table Incomplete due to '
- MS_INSUFF_MEM DB 'Insufficient memory$'
- MS_INVALID_CMD DB 'Invalid command$'
- MS_WRITING_27FD DB 0DH, 0AH, 'Writing $'
- MS_BLDG_REF_TBL DB 'Building Reference Table', 0DH, 0AH, '$'
- ;-------------------------------
- DATA_2823 DW 0 ; Data table (indexed access)
- DATA_2825 DW 0, 0, 0 ; 4-words
-
- DATA_282A DB 0 ; 0th-buffer byte (unused)
- DATA_282B DB 24 DUP (0) ; 24-byte buffer
-
- RM_FIELD_2843 DB 0 ; R/M 3-bit field
- MOD_FIELD_2844 DB 0 ; MOD 2-bit field
- REG_FIELD_2845 DB 0 ; REG 3-bit field
- DATA_2846 DB 0
- DATA_2847 DB 0
- DATA_2848 DB 0
- DATA_2849 DW 0
- DATA_284B DW 0
- DATA_284D DW 0, 0
- DATA_2851 DW 0
- DATA_2853 DB 0
- DATA_2854 DW 0 ; Tab counter ?
- DATA_2856 DB 0, 0
- DATA_2858 DW 0
- DATA_285A DW 0
- DATA_285C DB 0
- DATA_285D DB 0, 0
- OPW_TBL_WD_285F DW 0
- DATA_2861 DB 0
- DATA_2862 DB 0
- DATA_2863 DB 0, 0, 0
- DATA_2866 DB 0
- DATA_2867 DW 0
- OPJ_HI_BYT_2869 DB 0
- OPW_HI_NBL_286A DB 0 ; The low 4-bits are zeros
- OPCODE_BYT_286B DB 0 ; used as BYTE/WORD flag
- MOD_REG_RM_286C DB 0 ; MOD REG R/M Op-code modifier byte
- DATA_286D DB 0
- DATA_286E DB 0
- DATA_286F DB 0
- ;-------------------------------
- ;DATA_2870 DB 0FFH ; Data table (indexed access)
- ;DATA_2871 DB 0FFH
- ;DATA_2872 DB 0FFH
- ;DATA_2873 DB 0FFH
- ;DATA_2874 DB 0FFH
- ;DATA_2875 DB 0FFH
- ;DATA_2876 DB 0FFH
- ;RAD16_FLAG_2877 DB 0FFH
- ;DATA_2878 DB 0FFH
-
- SEQ_SW_BYTES LABEL BYTE ;alias name, used for indexing
- SW_O_OUTPUT_LST DB 0FFH ; Data table (indexed access)
- SW_R_TABLE_LST DB 0FFH
- SW_E_EMBED_REF DB 0FFH
- SW_L_LABEL_NUMB DB 0FFH
- SW_F_8087_CODES DB 0FFH
- SW_T_TRACE_OUTP DB 0FFH
- SW_B_BYTE_REFS DB 0FFH
- SW_H_HEX_SUFFIX DB 0FFH
- SW_M_MACRO_LIST DB 0FFH
- ;-------------------------------
- DATA_2879 DB 9, ';', 27H
- DATA_287C DB 'HL'
- DB 0A7H
- DATA_287F DW 0
- DATA_2881 DW 0
- DATA_2883 DW 0
- DATA_2885 DW 0
- DATA_2887 DB 0
- DATA_2888 DB 0
- DATA_2889 DW 0
- DATA_288D DW 0
- DATA_288F DW 0
- DATA_2891 DW 0
- DATA_2893 DW 0
- DATA_2895 DB 128 DUP (0) ; 128-byte buffer
- DATA_2915 DW 0, 0
- DATA_2919 DW 0
- DATA_291B DB 0
- ;-------------------------------
- FCB1_291C DB 0 ; File Control Block #1 (37-bytes)
- FCB1_NAME_291D DB 8 DUP (20H) ; 8-Byte File Name
- FCB1_EXT_2925 DB 3 DUP (20H) ; 3-Byte File Extension
- DB 0, 0 ; 1-Word Current Block Number
- DB 0, 0 ; 1-Word Record Size
- FCB1_FILSZ_292C DB 4 DUP (0) ; 4-Byte File Size (in bytes)
- DB 0, 0 ; 1-Word Date
- DB 0, 0 ; 1-Word Time
- DB 8 DUP (0) ; 8-Byte Reserved for DOS
- DB 0 ; 1-Byte Current Record Number
- DB 4 DUP (0) ; 4-Byte Random Record Number
- ;*** DB 0 ; (apparently unused)
- ;-------------------------------
- FCB2_2942 DB 0 ; File Control Block #2 (37-bytes)
- FCB2_NAME_2943 DB 8 DUP (20H) ; 8-Byte File Name
- FCB2_EXT_294B DB 3 DUP (20H) ; 3-Byte File Extension
- DB 0, 0 ; 1-Word Current Block Number
- DB 0, 0 ; 1-Word Record Size
- DB 4 DUP (0) ; 4-Byte File Size (in bytes)
- DB 0, 0 ; 1-Word Date
- DB 0, 0 ; 1-Word Time
- DB 8 DUP (0) ; 8-Byte Reserved for DOS
- DB 0 ; 1-Byte Current Record Number
- DB 4 DUP (0) ; 4-Byte Random Record Number
- ;-------------------------------
- ;*** DB 0 ; (apparently unused)
-
- KBD_BUF_2968 DB 20H, 0 ; Keyboard Buffer
- DATA_296A DB 33 DUP (0) ; Keyboard line buffer
- ;**DATA_298B DB 132 DUP (0) ; line buffer
- LINE_BUF_132CHR DB 132 DUP (0) ; line buffer
- ;-------------------------------
- FCB3_2A0F DB 0 ; FCB #3 - File to be disassembled
- FCB3_NAME_2A10 DB 7 DUP (20H) ; 8-Byte File Name
- FCB3_EXT_2A17 DB 20H ; 1-Word File Ext 1st char
- FCB3_EXT1_2A18 DB 20H ; 1-Byte File Ext 1st char
- FCB3_EXT2_2A19 DB 20H ; 1-Byte File Ext 2nd char
- FCB3_EXT3_2A1A DB 20H ; 1-Byte File Ext 3rd char
- FCB3_BLKNO_2A1B DB 0, 0 ; 1-Word Current Block Number
- FCB3_RECSZ_2A1D DB 0, 0 ; 1-Word Record Size
- FCB3_FILSZ_2A1F DB 4 DUP (0) ; 4-Byte File Size
- FCB3_DATE_2A23 DB 0, 0 ; 1-Word Date File Created/Updated
- DB 0, 0 ; 1-Word Time File Created
- DB 8 DUP (0) ; 8-Byte Reserved for DOS
- FCB3_CUREC_2A2F DB 0 ; 1-byte Current Record Number
- FCB3_RNDRC_2A30 DW 0, 0 ; 2-Word Random Record Number
- ;-------------------------------
- FCB4_2A34 DB 0 ; File Control Block #4 (37-bytes)
- FCB4_NAME_2A35 DB 8 DUP (20H) ; 8-Byte File Name
- DB 3 DUP (20H) ; 3-Byte File Extension
- DB 0, 0 ; 1-word Current Block number
- FCB4_RECSZ_2A42 DB 0, 0 ; 1-Word Record Size
- FCB4_FILSZ_2A44 DB 0, 0 ; 4-Byte File Size
- FCB4_FLSZH_2A46 DB 0, 0 ; (High word of File Size)
- DB 0, 0 ; Date
- DB 0, 0 ; Time
- FCB4_RESRV_2A4C DB 8 DUP (0) ; 8-Byte (Reserved area)
- FCB4_CUREC_2A54 DB 0 ; Current Record number
- DB 4 DUP (0) ; Random Record number
- ;-------------------------------
- ;*** DB 37 DUP (0) ; (apparently unused)
-
- DTA1_2A7E DB 0, 0 ; Disk transfer area #1
- DATA_2A80 DW 0
- DATA_2A82 DW 0
- DATA_2A84 DW 7420H ; (value left just in case)
- DATA_2A86 DW 0, 0, 0
- DATA_2A8C DW 0
- DATA_2A8E DW 0, 0
- DATA_2A92 DW 0 ; initial IP for disassembly
- DATA_2A94 DW 0 ; initial CS for disassembly
- DATA_2A96 DW 0 ; Random Rec Numb for FCB3
- ;-------------------------------
- DTA2_2A98 DB 0, 0 ; Disk transfer area #2
- DTA2_W2_2A9A DB 0, 0
- DB 0, 0 ; (apparently not used)
- ;-------------------------------
- DTA3_2A9E DB 0 ; Disk transfer area #3, 512 bytes
- MS_PC_DISASMB DB 0DH, 0AH, 'The IBM Personal Computer '
- DB 'Assembly Code Generator', 0DH, 0AH
- DB 'By J. Gersbach BTVVMLAB(U6081) '
- DB 'Public Domain Material', 0DH, 0AH
- DB 'Version 2.01 - Enhancements By '
- DB 'J. Damke BOEVM1(DAMKE)', 0DH, 0AH
- DB 'Version 3.01 - Enhancements and code clean-up By '
- DB 'James E. Galbraith', 0DH, 0AH, 0AH
- DB 'Command summary :', 0DH, 0AH
- DB 9, 'X Executable filespec', 0DH, 0AH
- DB 9, 'A <Assembly Code filespec>', 0DH, 0AH
- DB 9, 'R <Reference table filespec>', 0DH, 0AH
- DB 9, 'Q Quit and return to DOS', 0DH, 0AH, 0AH
- DB 'Executable filespec ? $'
- DB 124 DUP (0) ; for a total of 512 bytes in DTA3
- ;-------------------------------
- DTA4_2C9E DB 0 ; Disk transfer area #4, 98 bytes
- ;*** DB 96 DUP (0)
- ;**LAST_BYTE DB 0 ; DATA_2E9E_E EQU OFFSET LAST_BYTE+19FH
-
- SEG_A ENDS
-
- END START
-