Free Web Hosting Provider - Web Hosting - E-commerce - High Speed Internet - Free Web Page
Search the Web


0100 B8 30 11           0     MOV     AX,1130
0103 32 FF             2      XOR     BH,BH
0105 CD 10                    INT     10        ;DL=rows-1
0107 B4 0F                    MOV     AH,0F
0109 CD 10                    INT     10        ;AH=columns
010B 8A F4                    MOV     DH,AH     ;DH=columns
010D 0E                       PUSH    CS
010E 07                       POP     ES        ;restore ES
010F 33 F6             3      XOR     SI,SI     ;SI=screen offset
0111 BF 00 02                 MOV     DI,0200   ;DI=data store
0114 8B EF                    MOV     BP,DI     ;BP=contains offset of end of
                                                ;   last non-blank line
0116 57                W      PUSH    DI        ;stack=0200
0117 B8 00 B8                 MOV     AX,B800
011A 8E D8                    MOV     DS,AX     ;DS=screen segment
011C 0F B6 CE                 MOVZX   CX,DH     ;CX=screen columns
011F 8B DF                    MOV     BX,DI     ;BX=offset of last non-blank
0121 AD                       LODSW             ;get next character
0122 A8 DF                    TEST    AL,DF
0124 75 02             u      JNZ     0128
0126 B0 20                    MOV     AL,20     ;00=>SPACE
0128 AA                       STOSB             ;store
0129 74 02             t      JZ      012D
012B 8B DF                    MOV     BX,DI     ;BX updated every non-blank
012D E2 F2                    LOOP    0121      ;
012F 87 FB                    XCHG    BX,DI     ;DI=last non-blank on line
0131 2B DF             +      SUB     BX,DI     ;BX=#trailing blanks on line
0133 B8 0D 0A                 MOV     AX,0A0D
0136 AB                       STOSW             ;append newline to store
0137 38 F3             8      CMP     BL,DH     ;line is all blanks?
0139 74 02             t      JZ      013D
013B 8B EF                    MOV     BP,DI     ;if not update BP to include
                                                ;up to this line
013D FE CA                    DEC     DL        ;loop for each screen row
013F 79 DB             y      JNS     011C
0141 0E                       PUSH    CS
0142 1F                       POP     DS
0143 BA 5B 01           [     MOV     DX,015B   ;DS:DX="SNAP"
0146 33 C9             3      XOR     CX,CX
0148 B4 3C              <     MOV     AH,3C
014A CD 21              !     INT     21        ;open create file
014C 93                       XCHG    BX,AX
014D 5A                Z      POP     DX        ;DX=0200 (data start)
014E 8B CD                    MOV     CX,BP     ;CX=data bytes upto
0150 2B CA             +      SUB     CX,DX     ;   last non-blank line
0152 B4 40              @     MOV     AH,40
0154 CD 21              !     INT     21        ;write file
0156 B4 3E              >     MOV     AH,3E     ;close file
0158 CD 21              !     INT     21
015A C3                       RET     
=D15BL5                                         ;default filename
015B 53 4E 41 50 00                                  SNAP            
=Q