the cutting room mirror

Galaxy Fighter

This page contains no introduction.
What makes this game notable or what is it about? Are you a bad enough dude to save this article?

Source Code Fragments#

Large fragments of code were included in this game. They can be found in the .sv dump at the hex addresses listed below.

The source isn't for the game, but appears to be automatically generated disassembly of an MS-DOS Text editor; Personal Editor II by Jim Wyllie.

2E00:

                        +6]
        XCHG    AX,SI
        MOV AX,DATA_129[SI]
        CMP AX,[BP+0AH]
        JNE SHORT LOC_2178
        LES BX,DWORD PTR [BP-10H]
        MOV AX,ES:[BX+6]
        MOV DATA_129[SI],AX
LOC_2178:
        PUSH    WORD PTR [BP+0AH]
        PUSH    WORD PTR [BP+8]
;*      CALL    FAR PTR SUB_7       ;*
        DB   9AH, 7DH, 00H, 00H, 00H
        MOV DATA_246,0
        MOV AX,[BP-0CH]
        MOV DX,[BP-0AH]
        MOV [BP-4],AX
        MOV [BP-2],DX
        MOV AX,[BP-4]
        MOV DX,[BP-2]
        MOV SP,BP
        POP BP
        RETF    6
                                    ;* No entry point to code
        PUSH    BP
        MOV BP,SP
        SUB SP,4
        nop                         ;*ASM fixup - sign extn byte
        MOV SP,BP
        POP BP
        RETF
                                    ;* No entry point to code
        ADD [DI-75H],DL
        IN  AL,DX           ; port 0, DMA-1 bas&add ch 0
        MOV AH,0FH
        INT 10H         ; Video display   ah=functn 0Fh
                        ;  get state, al=mode, bh=page
                        ;   ah=columns on screen
        XOR AH,AH
        POP BP
        RETF
                                    ;* No entry point to code
        PUSH    BP
        MOV BP,SP
        XOR AX,AX
        MOV ES,AX
        MOV AH,ES:equip_bits_
        MOV AL,[BP+6]
        CMP AL,7
        JNE SHORT LOC_2179
        OR  AH,30H          ; '0'
        JMP SHORT LOC_2180
LOC_2179:
        AND AH,0CFH
        OR  AH,20H          ; ' '
LOC_2180:
        MOV ES:equip_bits_,AH
        XOR AH,AH
        INT 10H         ; Video display   ah=functn 00h
                        ;  set display mode in al
        MOV AH,5
        XOR AL,AL
        INT 10H         ; Video display   ah=functn 05h
                        ;  set display page al
        POP BP
        RETF    2
                                    ;* No entry point to code
        PUSH    BP
        MOV BP,SP
        MOV AX,1111H
        MOV BX,[BP+6]
        CMP BL,6
        JNE SHORT LOC_2181
        MOV AL,12H
LOC_2181:
        MOV BL,0
        INT 10H         ; Video display   ah=functn 11h
                        ;  load 8x8 font, bl=block
        POP BP
        RETF    2
                                    ;* No entry point to code
        PUSH    BP
        MOV BP,SP
        MOV AH,0BH
        MOV BH,0
        MOV BL,[BP+6]
        INT 10H         ; Video display   ah=functn 0Bh
                        ;  set color from bx (CGA modes)
        POP BP
        RETF    2
                                    ;* No entry point to code
        PUSH    BP
        MOV BP,SP
        MOV DH,[BP+8]
        DEC DH
        MOV DL,[BP+6]
        DEC DL
        XOR BX,BX
        MOV AH,2
        INT 10H         ; Video display   ah=functn 02h
                        ;  set cursor location in dx
        POP BP
        RETF    4
                                    ;* No entry point to code
        PUSH    BP
        MOV BP,SP
        XOR AX,AX
        MOV ES,AX
        MOV DL,ES:video_options_
        MOV DH,DL
        OR  DH,1
        MOV ES:video_options_,DH
        MOV CH,[BP+8]
        MOV CL,[BP+6]
        MOV AH,1
        INT 10H         ; Video display   ah=functn 01h
                        ;  set cursor mode in cx
        MOV ES:video_options_,DL
        POP BP
        RETF    4
                                    ;* No entry point to code
        PUSH    BP
        MOV BP,SP
        MOV DH,[BP+8]
        DEC DH
        MOV DL,[BP+6]
        DEC DL
        XOR BX,BX
        MOV AH,2
        INT 10H         ; Video display   ah=functn 02h
                        ;  set cursor location in dx
        XOR BX,BX
        MOV AH,8
        INT 10H         ; Video display   ah=functn 08h
                        ;  get char al & attrib ah @curs
        POP BP
        RETF    4
                                    ;* No entry point to code
        PUSH    BP
        MOV BP,SP
        MOV DH,[BP+0AH]
        DEC DH
        MOV DL,[BP+8]
        DEC DL
        XOR BX,BX
        MOV AH,2
        INT 10H         ; Video display   ah=functn 02h
                        ;  set cursor location in dx
        MOV AX,[BP+6]
        MOV BL,AH
        XOR BH,BH
        MOV CX,1
        MOV AH,9
        INT 10H         ; Video display   ah=functn 09h
                        ;  set char al & attrib bl @curs
                        ;   cx=# of chars to replicate
        POP BP
        RETF    6
                                    ;* No entry point to code
        MOV DI,CX
        MOV CX,1
        MOV BH,0
LOC_2182:
        AND DI,DI
        JLE SHORT LOC_2183
        MOV AH,2
        INT 10H         ; Video display   ah=functn 02h
                        ;  set cursor location in dx
        LODSB
        MOV AH,9
        INT 10H         ; Video display   ah=functn 09h
                        ;  set char al & attrib bl @curs
                        ;   cx=# of chars to replicate
        INC DL
        DEC DI
        JMP SHORT LOC_2182
LOC_2183:
        RETF
                                    ;* No entry point to code
        PUSH    BP
        MOV BP,SP
        MOV CX,[BP+6]
        AND CX,CX
        JLE SHORT LOC_2189
        TEST    BYTE PTR DATA_254,0FFH
        JNZ SHORT LOC_2188
        MOV AX,[BP+0EH]
        DEC AX
        IMUL    DATA_264
        ADD AX,[BP+0CH]
        DEC AX
        MOV DI,AX
        SHL DI,1
        CLD
        MOV SI,[BP+8]
        MOV ES,DATA_263
        MOV AH,[BP+0AH]
        MOV DX,DATA_262
        AND DX,DX
        JZ  SHORT LOCLOOP_2187

LOCLOOP_2184:
        LODSB
        MOV BX,AX
LOC_2185:
        IN  AL,DX           ; port 5500H ??I/O NON-STANDARD
        TEST    AL,1
        JNZ LOC_2185
        CLI
LOC_2186:
        IN  AL,DX           ; port 5500H ??I/O NON-STANDARD
        TEST    AL,1
        JZ  LOC_2186
        MOV AX,BX
        STOSW
        STI
        LOOP    LOCLOOP_2184

        JMP SHORT LOC_2189

LOCLOOP_2187:
        LODSB
        STOSW
        LOOP    LOCLOOP_2187

        JMP SHORT LOC_2189
LOC_2188:
        MOV BL,[BP+0AH]
        MOV DH,[BP+0EH]
        DEC DH
        MOV DL,[BP+0CH]
        DEC DL
        MOV SI,[BP+8]
;*      CALL    FAR PTR SUB_623     ;*
        DB   9AH,0ECH, 00H, 05H, 01H
LOC_2189:
        POP BP
        RETF    0AH
                                    ;* No entry point to code
        PUSH    BP
        MOV BP,SP
        MOV AX,0B000H
        MOV ES,AX
        XOR SI,SI
        MOV AL,ES:[SI]
        MOV AH,AL
        ADD AH,5AH          ; 'Z'
        MOV ES:[SI],AH
        MOV BH,ES:[SI]
        MOV CL,0
        CMP AH,BH
        JNE SHORT LOC_2190
        MOV CL,0FFH
LOC_2190:
        MOV DI,[BP+0AH]
        MOV [DI],CL
        MOV ES:[SI],AL
        MOV AX,0B800H
        MOV ES,AX
        MOV AL,ES:[SI]
        MOV AH,AL
        ADD AH,5AH          ; 'Z'
        MOV ES:[SI],AH
        MOV BH,ES:[SI]
        MOV CL,0
        CMP AH,BH
        JNE SHORT LOC_2191
        MOV CL,0FFH
LOC_2191:
        MOV DI,[BP+8]
        MOV [DI],CL
        MOV ES:[SI],AL
        MOV AH,12H
        MOV BL,10H
        INT 10H         ; Video display   ah=functn 12h
                        ;  EGA/VGA special, bl=function
        MOV AL,CL
LOC_2192:
        MOV CL,0
        MOV CH,0FFH
        MOV DI,[BP+6]
        MOV [DI],CL
        MOV DI,[BP+0CH]
        MOV [DI],CL
        MOV SI,[BP+0EH]
        MOV [SI],CL
        CMP BL,10H
        JE  SHORT LOC_2195
        MOV [DI],CH
        CMP BH,0
        JNE SHORT LOC_2193
        MOV DI,[BP+8]
        MOV [DI],CH
        MOV DI,[BP+6]
        MOV [DI],CH
        JMP SHORT LOC_2194
LOC_2193:
        CMP BH,1
        JNE SHORT LOC_2194
        MOV DI,[BP+0AH]
        MOV [DI],CH
LOC_2194:
        AND AL,0FH
        MOV BX,204H
DATA_192    DW  0D72EH
DATA_193    DW  488H            ; Data table (indexed access)
LOC_2195:
        POP BP
        RETF    0AH
                                    ;* No entry point to code
        ADD [BX+SI],AL
        ADD BH,BH
        DB  0FFH,0FFH
DATA_194    DW  0           ; Data table (indexed access)
        DB   00H,0FFH,0FFH,0FFH
DATA_195    DW  0           ; Data table (indexed access)
        DB   00H, 00H, 55H, 8BH
DATA_196    DW  0B4ECH          ; Data table (indexed access)
        DB   0FH,0CDH, 10H, 8AH
DATA_197    DW  0B4C4H          ; Data table (indexed access)
        DB   00H,0A3H, 4EH,0EBH,0B4H, 12H
        DB  0B3H, 10H,0CDH, 10H
DATA_198    DW  0FB80H          ; Data table (indexed access)
        DB   10H, 74H, 10H,0B8H, 30H, 11H
        DB  0CDH, 10H,0B6H, 00H
DATA_199    DW  8942H           ; Data table (indexed access)
        DB   16H, 50H,0EBH, 88H, 0EH, 5AH
        DB  0EBH, 5DH,0CBH, 00H

;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
;                              SUBROUTINE
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ

SUB_930     PROC    NEAR
DATA_200    DW  0C923H          ; Data table (indexed access)
        DB   7EH, 1DH,0F6H,0C6H, 80H, 75H
        DB   1EH, 23H,0D2H
        DB  74H
DATA_201    DW  0AC15H          ; Data table (indexed access)
        DB   8BH,0D8H
LOC_2196:
        IN  AL,DX           ; port 0, DMA-1 bas&add ch 0
        TEST    AL,1
        JNZ LOC_2196
        CLI
LOC_2197:
        IN  AL,DX           ; port 0, DMA-1 bas&add ch 0
        TEST    AL,1
        JZ  LOC_2197
        MOV AX,BX
        STOSW
DATA_203    DW  0E2FBH, 0C3ECH
LOC_2199:
DATA_205    DW  0ABACH
DATA_206    DW  0FCE2H
DATA_207    DW  8AC3H
DATA_208    DD  9AD78BDCH
DATA_210    DW  0ECH, 0
DATA_212    DW  0FA8BH
DATA_213    DW  80B6H, 8BC3H
DATA_215    DW  0C4EH, 0C13BH
DATA_217    DW  1A7DH, 0C82BH
DATA_219    DW  0CB3BH
DATA_220    DW  27EH
DATA_221    DW  0CB8BH
DATA_222    DW  5350H
DATA_223    DW  8A51H
DATA_224    DW  866H
DATA_225    DW  0B3E8H
DATA_226    DW  59FFH
DATA_227    DW  585BH
DATA_229    DB  3
DATA_230    DB  0C1H
DATA_231    DW  0D92BH
DATA_233    DW  347EH
        DB   8BH, 4EH, 0AH, 3BH,0C1H
LOC_2201:
        JG  SHORT LOC_2203
        CMP AX,[BP+0CH]
        JL  SHORT LOC_2203
        SUB CX,AX
        INC CX
        CMP CX,BX
        JLE SHORT LOC_2202
        MOV CX,BX
LOC_2202:
        PUSH    AX
        PUSH    BX
        PUSH    CX
        MOV AH,[BP+6]
        CALL    SUB_930
        POP CX
        POP BX
        POP AX
        ADD AX,CX
        SUB BX,CX
        JLE SHORT LOC_2204
LOC_2203:
        CMP AX,[BP+0AH]
        JLE SHORT LOC_2204
        MOV CX,BX
        MOV AH,[BP+8]
        CALL    SUB_930
LOC_2204:
DATA_235    DW  55C3H           ; Data table (indexed access)
        DB   8BH,0ECH, 1EH, 8BH, 46H, 0EH
        DB   48H, 36H,0F7H, 2EH, 4EH,0EBH
        DB   03H, 46H, 10H, 48H, 8BH,0F8H
        DB  0D1H,0E7H,0FCH, 36H, 8EH, 06H
        DB   4CH,0EBH, 36H, 8BH, 16H, 4AH
        DB  0EBH, 36H,0F6H, 06H, 22H,0EBH
        DB  0FFH, 74H, 0EH, 8AH, 76H, 0EH
        DB  0FEH,0CEH, 8AH, 56H, 10H,0FEH
        DB  0CAH, 8BH,0FAH,0B6H, 80H
LOC_2205:
        MOV BX,[BP+16H]
        CMP BX,1
        JLE SHORT LOC_2206
        MOV AX,1
        DEC BX
        LDS SI,DWORD PTR [BP+18H]
;*      CALL    SUB_931         ;*
        DB  0E8H, 62H,0FFH
LOC_2206:
        MOV BX,[BP+14H]
        AND BX,BX
        JLE SHORT LOC_2207
        MOV AX,[BP+16H]
        LDS SI,DWORD PTR [BP+1CH]
DATA_237    DB  0E8H
        DB  52H
DATA_238    DW  8BFFH
        DB   46H, 16H, 03H, 46H, 14H, 8BH
        DB   5EH, 12H, 3BH,0C3H, 7FH, 09H
        DB   2BH,0D8H, 43H,0C5H, 76H, 18H
        DB  0E8H, 3CH,0FFH
LOC_2208:
        POP DS
        POP BP
        RETF    1AH
SUB_930     ENDP

                                    ;* No entry point to code
        PUSH    BP
        MOV BP,SP
        PUSH    DS
        MOV CX,7FFFH
        MOV SI,[BP+6]
        MOV SI,[SI]
        AND SI,SI
        JZ  SHORT LOC_2211
        MOV DI,[BP+8]
        MOV DX,[DI]
        MOV CX,[BP+0EH]
        SUB CX,DX
        JL  SHORT LOC_2209
        MOV BL,4
        JMP SHORT LOC_2210
LOC_2209:
        NEG CX
        MOV BL,8
LOC_2210:
        MOV DS,SI
        CMP CX,4
        JL  SHORT LOC_2213
LOC_2211:
        MOV AX,[BP+0EH]
        CMP AX,CX
        JGE SHORT LOC_2212
        MOV CX,AX
        XOR DX,DX
        MOV BL,4
        MOV DS,[BP+0AH]
LOC_2212:
        MOV DI,[BP+0CH]
        ADD DI,2
        MOV AX,DI
        SUB AX,[BP+0EH]
        CMP AX,CX
        JGE SHORT LOC_2213
        MOV DX,DI
        MOV BL,8
        MOV DS,[BP+0AH]
LOC_2213:
        MOV DI,[BP+0EH]
        CMP BL,4
        JNE SHORT LOC_2216
        XOR BX,BX
LOC_2214:
        CMP DX,DI
        JGE SHORT LOC_2219
        MOV AL,[BX+2]
        CMP AL,3
        JNE SHORT LOC_2215
        MOV AL,[BX+3]
        XOR AH,AH
        ADD AX,DX
        CMP AX,DI
        JG  SHORT LOC_2219
        MOV DX,AX
        MOV DS,[BX+6]
DATA_241    DW  0E3EBH
LOC_2215:
DATA_242    DW  8E42H           ; Data table (indexed access)
DATA_243    DW  65FH            ; Data table (indexed access)
        DB  0EBH,0DDH
LOC_2216:
        XOR BX,BX
LOC_2217:
        CMP DX,DI
        JLE SHORT LOC_2219
        MOV DS,[BX+0AH]
        MOV AL,[BX+2]
        CMP AL,3
        JNE SHORT LOC_2218
        MOV AL,[BX+3]
        XOR AH,AH
        SUB DX,AX
        JMP SHORT LOC_2217
LOC_2218:
        DEC DX
DATA_248    DW  0E6EBH
LOC_2219:
DATA_249    DW  7E8BH
DATA_250    DW  3608H
DATA_251    DW  1589H
DATA_252    DB  8CH
        DB  0DAH
DATA_253    DB  33H
        DB  0C0H
DATA_254    DB  1FH
        DB  8BH
DATA_255    DW  676H
DATA_256    DW  1489H
DATA_257    DW  0CA5DH
DATA_258    DW  0AH
DATA_259    DW  8B55H
        DB  0ECH, 8BH, 4EH, 06H, 23H,0C9H
        DB   7EH, 11H
DATA_260    DW  8E1EH
DATA_261    DW  0A46H
        DB   8BH, 7EH, 08H, 8BH, 76H, 0CH
        DB   8EH, 5EH, 0EH,0FCH,0F3H,0A4H
        DB   1FH
LOC_2220:
        POP BP
        RETF    0AH
                                    ;* No entry point to code
        PUSH    BP
DATA_263    DW  0EC8BH
DATA_264    DW  4E8BH
DATA_265    DW  2306H
DATA_266    DW  7EC9H
DATA_268    DW  1E0BH
        DB   07H, 8BH, 46H, 08H
DATA_270    DW  7E8BH
DATA_271    DW  0FC0AH
DATA_273    DW  0AAF3H
DATA_275    DW  0CA5DH
DATA_277    DW  6
DATA_279    DW  8B55H
DATA_281    DW  8BECH           ; Data table (indexed access)
DATA_283    DW  84EH            ; Data table (indexed access)
DATA_284    DW  0C923H          ; Data table (indexed access)
DATA_285    DW  2C7EH           ; Data table (indexed access)
DATA_286    DW  71EH            ; Data table (indexed access)
DATA_287    DW  768BH           ; Data table (indexed access)
DATA_288    DW  8B0AH
DATA_289    DW  0FCFEH          ; Data table (indexed access)
DATA_290    DW  61BBH           ; Data table (indexed access)
DATA_291    DW  0BA7AH          ; Data table (indexed access)
DATA_292    DW  5A41H           ; Data table (indexed access)
DATA_293    DB  8AH
        DB  66H
DATA_294    DW  2206H
DATA_295    DW  75E4H
        DB   02H, 87H,0DAH

LOCLOOP_2221:
        LODSB
        CMP AL,BL
DATA_296    DW  0D7CH
DATA_297    DW  0C73AH
        DB   7FH, 09H, 2AH,0C3H, 02H,0C2H
DATA_298    DB  0AAH
        DB  0E2H
DATA_299    DW  0EBF0H
DATA_300    DW  4703H
        DB  0E2H,0EBH
LOC_2223:
        POP BP
        RETF    6
DATA_301    DW  8B55H
DATA_302    DW  33ECH
        DB  0DBH, 8BH, 4EH, 08H, 23H,0C9H
DATA_303    DB  7EH
        DB  42H
DATA_304    DW  0F983H
DATA_305    DW  7502H
        DB   28H, 8BH, 76H, 0AH
DATA_306    DW  8AACH
DATA_307    DW  0ACE0H
DATA_308    DW  0FC80H
        DB   41H, 7CH, 08H, 80H,0FCH, 5AH
DATA_309    DB  7FH
        DB  3
DATA_310    DW  0C480H
DATA_311    DW  3C20H
        DB   41H, 7CH
DATA_312    DW  3C06H
        DB   5AH, 7FH
DATA_313    DW  402H
DATA_314    DW  0F620H
        DB  0E4H, 25H, 7FH, 00H, 8BH, 7EH
DATA_315    DB  6
        DB  89H
DATA_316    DW  8B05H
DATA_317    DW  0A76H

LOCLOOP_2226:
        LODSB
        CMP AL,41H          ; 'A'
        JL  SHORT LOC_2227
        CMP AL,5AH          ; 'Z'
        JG  SHORT LOC_2227
        ADD AL,20H          ; ' '
LOC_2227:
        ADD BL,AL
        LOOP    LOCLOOP_2226

        AND BL,7FH
DATA_322    DW  0C38BH
DATA_323    DW  0CA5DH
        DB  6, 0
DATA_324    DW  8B55H
DATA_325    DW  8BECH
DATA_326    DW  64EH
DATA_327    DW  0C923H
        DB   7EH, 1BH, 8BH, 76H, 0AH, 8BH
DATA_328    DB  7EH
        DB  8

LOCLOOP_2228:
DATA_329    DW  8AACH
DATA_330    DW  471DH
        DB   3AH,0C3H
DATA_331    DW  774H
        DB   80H,0EBH
DATA_332    DW  3A20H
DATA_333    DW  75C3H
        DB   06H,0E2H,0EFH,0B0H, 01H,0EBH
DATA_334    DB  2
LOC_2229:
        XOR AX,AX
LOC_2230:
        POP BP
DATA_336    DW  6CAH
        DB   00H, 55H, 8BH,0ECH, 8BH, 5EH
DATA_337    DW  8B06H
DATA_338    DW  0AC36H
        DB  0EEH, 03H, 76H, 0AH, 8AH, 66H
DATA_339    DB  8
        DB  0AH
DATA_340    DW  74E4H
DATA_341    DW  0FE14H
        DB  0CCH,0ACH
DATA_342    DW  413CH
        DB   7CH, 06H
DATA_343    DW  5A3CH
DATA_344    DW  277H
        DB   04H, 20H
LOC_2231:
        CMP AL,[BX]
        JNE SHORT LOC_2234
DATA_345    DW  0EB43H
DATA_346    DW  0ACE8H
        DB   3CH, 20H, 74H, 04H, 3CH, 5DH
        DB   75H, 05H
LOC_2233:
        MOV AX,1
        JMP SHORT LOC_2235
LOC_2234:
        XOR AX,AX
LOC_2235:
        POP BP
        RETF    6
                                    ;* No entry point to code
        PUSH    BP
        MOV BP,SP
        PUSH    DS
        POP ES
        MOV AX,[BP+0EH]
        MOV BX,[BP+8]
        MOV DX,[BP+0CH]
        CLD
LOC_2236:
        MOV SI,AX
        MOV DI,BX
        MOV CX,[BP+6]
        REPE    CMPSB
        JZ  SHORT LOC_2237
        CMP AX,DX
        JE  SHORT LOC_2238
        ADD AX,[BP+0AH]
        JMP SHORT LOC_2236
LOC_2237:
        SUB AX,[BP+0EH]
        JMP SHORT LOC_2239
LOC_2238:
        MOV AX,3E7H
LOC_2239:
        POP BP
        RETF    0AH
                                    ;* No entry point to code
        PUSH    BP
        MOV BP,SP
        XOR AH,AH
        INT 16H         ; Keyboard i/o  ah=function 00h
                        ;  get keybd char in al, ah=scan
        POP BP
        RETF
                                    ;* No entry point to code
        PUSH    BP
        MOV BP,SP
        MOV AH,1
        INT 16H         ; Keyboard i/o  ah=function 01h
                        ;  get status, if zf=0  al=char
DATA_348    DW  275H
        DB   33H,0C0H, 5DH,0CBH, 55H, 8BH
        DB  0ECH, 33H,0D2H,0B4H, 02H,0CDH
        DB   17H, 80H,0E4H, 09H, 75H, 0CH
        DB   8AH, 46H, 06H, 32H,0E4H,0CDH
        DB   17H, 80H,0E4H, 09H, 74H, 05H
LOC_2240:
        MOV AX,1
        JMP SHORT LOC_2242
LOC_2241:
        XOR AX,AX
LOC_2242:
        POP BP
        RETF    2
                                    ;* No entry point to code
        MOV BX,BP
        MOV BP,SP
        MOV AX,[BP+4]
        AND AX,AX
        JNZ SHORT LOC_2243
        MOV AX,[BP+2]
        MOV DATA_384,AX
        MOV AX,[BP]
        MOV DATA_385,AX
        MOV DATA_386,BX
        MOV DATA_387,SP
        MOV BP,BX
        RETF    2
LOC_2243:
        MOV SP,DATA_387
        MOV BP,SP
        MOV AX,DATA_385
        MOV [BP],AX
        MOV AX,DATA_384
        MOV [BP+2],AX
        MOV BP,DATA_386
        RETF    2
                                    ;* No entry point to code
        MOV AL,0B6H
        OUT 43H,AL          ; port 43H, 8253 wrt timr mode
        MOV AX,533H
        OUT 42H,AL          ; port 42H, 8253 timer 2 spkr
        MOV AL,AH
        OUT 42H,AL          ; port 42H, 8253 timer 2 spkr
        MOV AL,4FH          ; 'O'
        OUT 61H,AL          ; port 61H, 8255 B - spkr, etc
                        ;  al = 4FH, speaker on
        MOV CX,32C8H

LOCLOOP_2244:
        LOOP    LOCLOOP_2244

        MOV AL,4DH          ; 'M'
        OUT 61H,AL          ; port 61H, 8255 B - spkr, etc
                        ;  al = 4DH, enable keyboard
        RETF
LOC_2245:
        MOV AH,1
        INT 16H         ; Keyboard i/o  ah=function 01h
                        ;  get status, if zf=0  al=char
        JZ  SHORT LOC_2246
        XOR AH,AH
        INT 16H         ; Keyboard i/o  ah=function 00h
                        ;  get keybd char in al, ah=scan
        JMP SHORT LOC_2245
LOC_2246:
        RETF
        DB  1, 0, 2, 0
DATA_349    DW  3
        DB   04H, 00H, 55H, 8BH,0ECH
DATA_350    DB  0B4H
DATA_351    DW  2E35H
DATA_352    DW  20A0H
DATA_353    DW  0CD06H
        DB   21H, 33H,0C0H, 26H, 81H, 7FH
        DB   02H, 50H, 45H, 75H, 11H, 26H
        DB   81H, 7FH, 04H, 32H, 69H, 75H
        DB   09H, 26H, 81H, 7FH, 06H, 6EH
        DB   74H, 75H, 01H
        DB  48H
LOC_2247:
        POP BP
        RETF
                                    ;* No entry point to code
        PUSH    BP
        MOV BP,SP
        PUSH    DS
        LEA DX,[BP+6]
        INT 67H         ; ??INT NON-STANDARD INTERRUPT
        POP DS
        POP BP
        RETF    14H
                                    ;* No entry point to code
        ADD AX,600H
        ADD [BX],AL
        ADD [BX+SI],CL
        ADD [BP],AH
        ADD [DI-75H],DL
        IN  AL,DX           ; port 0, DMA-1 bas&add ch 0
        MOV AH,35H          ; '5'
        MOV AL,CS:DATA_60
        INT 21H         ; DOS Services  ah=function 35h
                        ;  get intrpt vector al in es:bx
        MOV SI,[BP+8]
        MOV [SI],ES
        MOV SI,[BP+6]
        MOV [SI],BX
        MOV CS:DATA_61,DS
        PUSH    DS
        PUSH    CS
        POP DS
DATA_356    DW  85BAH
        DB   06H,0B4H, 25H, 2EH
DATA_357    DB  0A0H
        DB   2EH, 06H,0CDH
DATA_358    DW  1F21H
DATA_359    DW  0CA5DH
DATA_360    DW  4
        DB   09H, 00H, 0AH, 00H, 0BH, 00H
        DB   0CH, 00H, 55H, 8BH,0ECH, 1EH
        DB   8BH, 56H, 06H, 8EH, 5EH, 08H
        DB  0B4H, 25H, 2EH,0A0H, 2EH, 06H
        DB  0CDH, 21H, 1FH, 5DH,0CAH, 04H
        DB   00H, 0DH, 00H, 0EH, 00H, 0FH
        DB   00H, 10H, 00H, 1EH, 2EH, 8EH
        DB   1EH, 2FH, 06H, 50H, 9AH, 63H
        DB   08H, 00H, 00H, 1FH,0CFH, 11H
        DB   00H, 12H, 00H, 13H, 00H, 14H
        DB   00H, 15H, 00H, 16H, 00H, 17H
        DB   00H, 18H, 00H, 00H, 55H, 8BH
        DB  0ECH, 33H,0C0H, 8BH
        DB  76H
DATA_361    DB  6
DATA_362    DB  0B9H
        DB   40H, 00H

LOCLOOP_2248:
        ADD AX,[SI]
        ADD AX,[SI+2]
        ADD AX,[SI+4]
        ADD AX,[SI+6]
        ADD SI,8
        LOOP    LOCLOOP_2248

        POP BP
        RETF    2
                                    ;* No entry point to code
        PUSH    BP
DATA_366    DW  0EC8BH
        DB   8DH, 3EH, 50H,0EFH, 1EH, 07H
        DB  0B9H, 81H, 00H,0FCH, 33H,0C0H
        DB  0F3H,0AEH, 23H,0C9H, 74H, 22H
        DB   4FH, 8BH,0C7H, 8DH, 0EH, 50H
        DB  0EFH, 2BH,0C1H,0B1H, 03H,0D3H
        DB  0E0H, 8AH, 15H,0BBH, 00H, 01H
LOC_2249:
        MOV DH,DL
        AND DH,BH
        JNZ SHORT LOC_2250
        SHL BH,1
        INC BL
        JMP SHORT LOC_2249
LOC_2250:
        XOR BH,BH
        ADD AX,BX
LOC_2251:
        POP BP
        RETF
                                    ;* No entry point to code
        PUSH    BP
        MOV BP,SP
        MOV AX,[BP+6]
        MOV BX,8
        XOR DX,DX
        DIV BX
        LEA DI,CS:[0EF50H]
DATA_368    DB  3
DATA_369    DB  0F8H
        DB  0B3H, 01H, 8AH
DATA_370    DB  0CAH
        DB  0D2H
DATA_371    DW  8AE3H
DATA_372    DW  3205H
        DB  0C3H, 88H, 05H, 5DH,0CAH, 02H
        DB   00H, 00H

;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
;                              SUBROUTINE
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ

SUB_932     PROC    NEAR
        CMP SI,BX
        JB  SHORT LOC_2253
        PUSH    AX
        PUSH    DX
        PUSH    DI
        PUSH    ES
        PUSH    BP
;*      CALL    FAR PTR SUB_1       ;*
        DB   9AH, 01H, 00H, 00H, 00H
        MOV CX,AX
        POP ES
        POP DI
        POP DX
        POP AX
        MOV SI,[BP+0AH]
        MOV BX,SI
        ADD BX,[BP+0CH]
        AND CX,CX
        JZ  SHORT LOC_2252
        MOV AH,CL
LOC_2252:
        CMP SI,BX
        JB  SHORT LOC_2253
        MOV AL,1AH
        MOV BYTE PTR [BP+5],0FFH
        RETN
LOC_2253:
        TEST    BYTE PTR [BP+5],0FFH
        JZ  SHORT LOC_2254
        MOV AL,1AH
        RETN
LOC_2254:
        LODSB
        CMP AL,1AH
        JNE SHORT LOC_2255
        MOV BYTE PTR [BP+5],0FFH
LOC_2255:
        RETN
SUB_932     ENDP

                                    ;* No entry point to code
        PUSH    BP
        MOV BP,SP
        MOV BP,[BP+6]
        MOV SI,[BP+0AH]
        MOV BX,SI
        ADD SI,[BP+6]
DATA_374    DW  34EH            ; Data table (indexed access)
        DB   5EH, 0CH,0E8H,0ABH,0FFH, 3CH
        DB   0AH, 75H, 03H,0E8H,0A4H,0FFH
LOC_2256:
        CMP AL,1AH
        JNE SHORT LOC_2257
        MOV AH,1
        JMP SHORT LOC_2263
LOC_2257:
        PUSH    DS
        POP ES
        MOV DI,WORD PTR DS:[0EEACH]
        INC DI
        XOR DX,DX
        MOV AH,0
LOC_2258:
        CMP AL,0DH
        JE  SHORT LOC_2262
        CMP AL,1AH
        JE  SHORT LOC_2262
        CMP AL,9
        JNE SHORT LOC_2259
        TEST    BYTE PTR [BP+4],0FFH
        JZ  SHORT LOC_2259
        MOV CX,DX
        AND CX,0FFF8H
        nop                         ;*ASM fixup - sign extn byte
        ADD CX,8
        MOV AL,20H          ; ' '
        CMP DX,CX
        JGE SHORT LOC_2261
        CMP DX,0FFH
        JGE SHORT LOC_2261
        STOSB
        INC DX
DATA_376    DW  0F2EBH
LOC_2259:
        CMP DX,0FFH
        JGE SHORT LOC_2260
        INC DX
        STOSB
        JMP SHORT LOC_2261
LOC_2260:
        MOV AH,3
LOC_2261:
        CALL    SUB_932
        JMP SHORT LOC_2258
LOC_2262:
        MOV WORD PTR DS:[0DF80H],DX
        MOV DATA_170,0FFH
DATA_380    DW  762BH
DATA_381    DW  460AH
DATA_382    DB  89H
        DB   76H, 06H
LOC_2263:
        MOV AL,AH
        MOV AH,0
        POP BP
        RETF    2
        DB   00H, 55H, 8BH,0ECH, 8BH, 7EH
        DB   06H
DATA_383    DW  58BH
        DB   8AH, 66H, 08H, 8BH, 5DH, 02H
        DB   8BH, 4DH, 04H, 8BH, 55H, 06H
        DB   8BH, 75H, 08H,0CDH, 21H, 89H
        DB   05H, 89H
DATA_384    DW  25DH
DATA_385    DW  4D89H
DATA_386    DW  8904H
DATA_387    DW  655H
        DB   89H, 75H, 08H, 72H, 02H, 33H
        DB  0C0H
LOC_2265:
        TEST    BYTE PTR DATA_241,0FFH
        JZ  SHORT LOC_2266
        PUSH    AX
        MOV AH,30H
        INT 21H         ; DOS Services  ah=function 30h
                        ;  get DOS version number ax
        POP AX
LOC_2266:
        POP BP

B400:

                         X,WORD PTR DS:[2]
        ADD AX,WORD PTR DS:[4]
        ADD AX,WORD PTR DS:[6]
        ADD AX,WORD PTR DS:[8]
        ADD AX,WORD PTR DS:[0AH]
        ADD AX,WORD PTR DS:[0CH]
        ADD AX,WORD PTR DS:[0EH]
        INC BX
        LOOP    LOCLOOP_2310

        MOV CX,ES:DATA_5E
        SUB CX,ES:DATA_4E
        MOV BX,ES:DATA_4E

LOCLOOP_2311:
        MOV DS,BX
        ADD AX,WORD PTR DS:[0]
        ADD AX,WORD PTR DS:[2]
        ADD AX,WORD PTR DS:[4]
        ADD AX,WORD PTR DS:[6]
        ADD AX,WORD PTR DS:[8]
        ADD AX,WORD PTR DS:[0AH]
        ADD AX,WORD PTR DS:[0CH]
        ADD AX,WORD PTR DS:[0EH]
        INC BX
        LOOP    LOCLOOP_2311

        SUB AX,CS:DATA_55
        SUB AX,WORD PTR CS:[3B2H]
        MOV BX,ES
        MOV DS,BX
        MOV CX,0FFF8H
        SUB CX,SP
        SHR CX,1
        MOV SI,SP
        ADD SI,6

LOCLOOP_2312:
        ADD AX,[SI]
        ADD SI,2
        LOOP    LOCLOOP_2312

        SUB AX,DS:DATA_7E
        MOV CX,DS:DATA_3E
        SUB CX,DS:DATA_2E
        SHR CX,1
        MOV SI,DS:DATA_2E

LOCLOOP_2313:
        ADD AX,[SI]
        ADD SI,2
        LOOP    LOCLOOP_2313

        RETN
SUB_938     ENDP

        DB  7 DUP (0)
        DB   01H, 02H, 03H, 04H, 05H, 06H
        DB   07H, 08H, 01H, 02H, 03H, 04H
        DB   05H, 06H, 07H, 08H, 01H, 02H
        DB   03H, 04H, 05H, 06H, 07H, 08H
        DB   01H, 02H, 03H, 04H, 05H, 06H
        DB   07H, 08H, 01H, 02H, 03H, 04H
        DB   05H, 06H, 07H, 08H, 01H, 02H
        DB   03H, 04H, 05H, 06H, 07H, 08H
        DB   01H, 02H, 03H, 04H, 05H, 06H
        DB   07H, 08H, 01H, 02H, 03H, 04H
        DB   05H, 06H, 07H, 08H, 00H, 00H
        DB   05H, 00H, 29H, 45H, 3CH, 2DH
        DB   2DH, 00H, 00H, 00H, 07H, 00H
        DB  29H
        DB  'E     Personally Developed Softw'
        DB  'are  '
        DB   19H, 00H
        DB  ')EFor IBM Personal Computers  '
        DB   17H, 00H
        DB   29H, 45H, 2AH, 2AH, 2AH, 2AH
LOC_2314:
        ADC AL,[BX+SI]
        SUB [DI+2AH],AX
        SUB AH,[BX+SI]
        AND [BP+SI],DL
        ADD [BX+DI],CH
        INC BP
        AND [BP+SI],CH
DATA_395    DW  202AH           ; Data table (indexed access)
        DB  20H
DATA_396    DW  420H            ; Data table (indexed access)
DATA_398    DW  2900H           ; Data table (indexed access)
        DB  'EPersonal Editor II  '
        DB   05H, 00H, 29H, 45H, 2AH, 2AH
        DB   20H, 20H, 12H, 00H
        DB  ')E *****'
        DB   12H, 00H, 29H, 45H, 2AH, 20H
        DB   20H, 20H, 14H, 00H
        DB  ')E (C) Copyright IB'
LOC_2315:
        DEC BP
        AND [BP+DI+6FH],AL
        JC  SHORT LOC_2322
        AND CS:[BX+DI],DH
        CMP [BX+SI],DI
        XOR CH,[SI]
        XOR [BX+DI],DI
        CMP [DI],DH
        AND [BX+SI],AH
        SBB [BX+SI],AX
        SUB [DI+20H],AX
        PUSH    DI
        JC  SHORT LOC_2323
        JZ  SHORT LOC_2324
        OUTS    DX,BYTE PTR GS:[SI]
        AND [BP+SI+79H],AH
        AND [BP+SI+69H],CL
        INSW
        AND [BX+79H],DL
        INSB
        INSB
        IMUL    SP,WORD PTR [DI+20H],520H
        ADD [BX+DI],CH
        INC BP
        INC SP
LOC_2319:
        DB  'o you really want to quit? Type '
        DB  'y or nBlock mar'
LOC_2320:
        IMUL    SP,WORD PTR [BX+SI],72H
        DB  'equiredColo'
LOC_2321:
        JC  SHORT LOC_2325
        IMUL    SI,WORD PTR FS:[BP+DI+70H],616CH
        JNS SHORT LOC_2326
        OUTSB
        OUTSW
        JZ  SHORT LOC_2327
        IMUL    BP,WORD PTR [BP+73H],6174H
LOC_2323:
        INSB
        INSB
        DB  'edUnknown c'
LOC_2324:
        OUTSW
        INSW
LOC_2325:
        INSW
        POPA
        OUTSB
        DB   64H, 43H, 61H, 6EH, 6EH
LOC_2326:
        OUTSW
        JZ  SHORT LOC_2328
        OUTSB
LOC_2327:
        POPA
        INSW

F400:

 PTR FS:[SI]
        JA  SHORT $+70H
        POP BP
        POP BX
LOC_2515:
        DB  'fn][mb][el][we][mb][u'
LOC_2516:
        JO  SHORT $+5FH
        POP BX
        DB  'el][we][right][cm'

SEG_A       ENDS



;------------------------------------------------------  STACK_SEG_B   ----

STACK_SEG_B SEGMENT WORD STACK 'STACK'

        DB  256 DUP (1)
        DB   02H, 01H,0B9H, 10H, 00H, 00H
        DB   1AH, 0FH,0FEH, 02H, 00H, 00H
        DB   00H, 00H, 00H, 00H, 8CH,0C3H
        DB   8BH

STACK_SEG_B ENDS



        END START

        POP BP
        POP BX
        OUTS    DX,WORD

F800:

                  ▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
                          SOURCER DEFINITION FILE
                  ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄

 ▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒ Section 1: CONTROL INFORMATION   ▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒

Analysis Options = a b c d e f g h i j k l m n o p q r s t u v w x y z
uP               = 386
File format      = ASM
Word style UPPER
Label type       = Decimal
Remarks          = Interrupt & I/O only
Segment display  = Name
Target Assembler = TASM-3.0
Input filename   = PE.EXE
Code style       = Exe
Drive (output)   = C
Output filename  = PE.ASM
Passes           = 2
Xref             = OFF



 ▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒ Section 2: RANGE DEFINITION      ▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒

 ════ Segments ══════════════════════════

  begin      end      default      seg   seg          seg
 seg:off     off     ds     es     type  size         value
 -------     ----    ----   ----   ----- -----        -----
SEG_A:0000   FEFF    SEG_A  SEG_A  AUTO  USE16       ; 8E2E
SEG_B:0000   0112    0000   0000   STACK USE16       ; 9FCE

 ▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒ Section 3: REFERENCE DEFINITIONS ▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒

 ════ Subroutines ═══════════════════════
  seg:off    type & options labels & comments
  -------    -------------- ----------------------------------------------
0000:0001    SUB, FAR                  ; SUB_1
0000:0003    SUB, FAR                  ; SUB_2
0000:0005    SUB, FAR                  ; SUB_3
0000:0007    SUB, FAR                  ; SUB_4
0000:000D    SUB, FAR                  ; SUB_5
0000:002B

(Source: AttackedByGlitch)