home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
FreeWare Collection 2
/
FreeSoftwareCollection2pd199x-jp.img
/
ms_dos
/
mcpr
/
cprbuf.asm
next >
Wrap
Assembly Source File
|
1990-06-14
|
4KB
|
212 lines
page 95,132
;§∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞§
;§ §
;§ マルチカラム コンパクト プリント ユーティリティ §
;§ §
;§ Multicolumn Compact PRint utility MCPR.EXE Ver1.40 §
;§ ~ ~ ~~ §
;§ Copyright (C) by 福地 邦雄 1989-1990. All rights reserved. §
;§∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞§
public namebuf
public namebufoff
public namebufseg
public nameptr
public nameptroff
public nameptrseg
public filebuf
public filebufoff
public filebufseg
public bitimg
public bitimgoff
public bitimgseg
public prtbuf
public prtbufoff
public prtbufseg
public pgbuf
public pgbufoff
public pgbufseg
public pgbufsiz
public allocnambuf
public freenambuf
public allocprtbuf
public freeprtbuf
extrn linsiz:word
extrn lincnt:word
extrn hdrprint:word
extrn hdrlinseg:word
extrn hdrln2seg:word
extrn pgwidth:word
extrn pghight:word
extrn clmpitch:word
extrn errorno:word
extrn abort:near
;
YES equ 1
;
data segment para public 'DATA'
;
namebuf label dword
namebufoff dw 0
namebufseg dw 0
;
nameptr label dword
nameptroff dw 0
nameptrseg dw 0
;
filebuf label dword
filebufoff dw 0
filebufseg dw 0
;
bitimg label dword
bitimgoff dw 0
bitimgseg dw 0
;
prtbuf label dword
prtbufoff dw 0
prtbufseg dw 0
;
pgbuf label dword
pgbufoff dw 0
pgbufseg dw 0
;
pgbufsiz dw ?
;
allocmsg db 'memory allocation error',0dh,0ah
alcmsgsiz equ $-allocmsg
;
data ends
;
code segment para public 'CODE'
assume cs:code,ds:data
;
allocnambuf proc
;
mov bx,4096/16 ;file name build buffer size
call dosalloc
mov namebufseg,ax
;
mov bx,1024/16 ;file name list pointer buffer size
call dosalloc
mov nameptrseg,ax
ret
;
allocnambuf endp
;
freenambuf proc
;
mov ah,49h
mov es,namebufseg
int 21h
;
mov ah,49h
mov es,nameptrseg
int 21h
ret
;
freenambuf endp
;
allocprtbuf proc
;
mov bx,8192/16 ;file read buffer size
call dosalloc
mov filebufseg,ax
;
cmp clmpitch,3
jne nobitaloc
;
mov ax,32 ;buffer size for 1 column
mul linsiz
and dx,0fh
or ax,dx
mov cl,4
ror ax,cl
mov bx,ax
call dosalloc ;bit image buffer
mov bitimgseg,ax
;
call dosalloc ;print data buffer
mov prtbufseg,ax
;
nobitaloc:
mov ax,linsiz ;calculate page buffer size
mul lincnt
mov bx,ax
shr ax,1
mov pgbufsiz,ax
cmp hdrprint,YES
jne nohdrsiz
add bx,linsiz
add bx,linsiz
nohdrsiz:
mov cl,4
shr bx,cl
call dosalloc
mov pgbufseg,ax
;
cmp hdrprint,YES
jne nohdrstr
mov dx,pgbufsiz
mov cl,3
shr dx,cl
add ax,dx
mov dx,ax
mov hdrlinseg,ax
mov bx,linsiz
mov cl,4
shr bx,cl
add ax,bx
mov hdrln2seg,ax
xor ax,ax
mov di,ax
mov cx,linsiz
mov es,dx
cld
rep stosw
nohdrstr:
ret
;
allocprtbuf endp
;
freeprtbuf proc
;
mov ah,49h
mov es,filebufseg
int 21h
;
cmp clmpitch,3
jne nobitfree
;
mov ah,49h
mov es,bitimgseg
int 21h
;
mov ah,49h
mov es,prtbufseg
int 21h
;
nobitfree:
mov ah,49h
mov es,pgbufseg
int 21h
;
ret
;
freeprtbuf endp
;
dosalloc proc
;
mov ah,48h
int 21h
jc allocerr
ret
allocerr:
mov errorno,ax
mov dx,offset allocmsg
mov cx,alcmsgsiz
jmp abort
;
dosalloc endp
;
code ends
end