Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

dkview2.asm assembler language real mode picture viewer for DosBox

9 views
Skip to first unread message

ericmatteson...@hotmail.com

unread,
May 13, 2012, 3:28:22 PM5/13/12
to
; This is the first line of this program
; DKVIEW2.TXT or DKVIEW2.ASM bitmap file viewer for DOS
; written by ericmatt...@yahoo.com
; written by Eric Matteson
; should assemble into 16384 byte dkview2.exe
; permission is granted to copy this file dkview2.txt
; and to publish it on the internet and to use it
; at least for non-profit use.
bits 16
; 0104h is number of 512 byte units
dw 05A4Dh 0000h 0020h 0000h 0020h 03FFFh 0FFFFh 0FF0h
dw 01FF4h 0000h 0100h 0FFF0h 0000h 0000h 0000h 0000h
dw 0000h 0000h 0000h 0000h 0000h 0000h 0000h 0000h
dw 0000h 0000h 0000h 0000h 0000h 0000h 0000h 0000h
dw 0000h 0000h 0000h 0000h 0000h 0000h 0000h 0000h
dw 0000h 0000h 0000h 0000h 0000h 0000h 0000h 0000h
dw 0000h 0000h 0000h 0000h 0000h 0000h 0000h 0000h
dw 0000h 0000h 0000h 0000h 0000h 0000h 0000h 0000h
dw 0000h 0000h 0000h 0000h 0000h 0000h 0000h 0000h
dw 0000h 0000h 0000h 0000h 0000h 0000h 0000h 0000h
dw 0000h 0000h 0000h 0000h 0000h 0000h 0000h 0000h
dw 0000h 0000h 0000h 0000h 0000h 0000h 0000h 0000h
dw 0000h 0000h 0000h 0000h 0000h 0000h 0000h 0000h
dw 0000h 0000h 0000h 0000h 0000h 0000h 0000h 0000h
dw 0000h 0000h 0000h 0000h 0000h 0000h 0000h 0000h
dw 0000h 0000h 0000h 0000h 0000h 0000h 0000h 0000h
dw 0000h 0000h 0000h 0000h 0000h 0000h 0000h 0000h
dw 0000h 0000h 0000h 0000h 0000h 0000h 0000h 0000h
dw 0000h 0000h 0000h 0000h 0000h 0000h 0000h 0000h
dw 0000h 0000h 0000h 0000h 0000h 0000h 0000h 0000h
dw 0000h 0000h 0000h 0000h 0000h 0000h 0000h 0000h
dw 0000h 0000h 0000h 0000h 0000h 0000h 0000h 0000h
dw 0000h 0000h 0000h 0000h 0000h 0000h 0000h 0000h
dw 0000h 0000h 0000h 0000h 0000h 0000h 0000h 0000h
dw 0000h 0000h 0000h 0000h 0000h 0000h 0000h 0000h
dw 0000h 0000h 0000h 0000h 0000h 0000h 0000h 0000h
dw 0000h 0000h 0000h 0000h 0000h 0000h 0000h 0000h
dw 0000h 0000h 0000h 0000h 0000h 0000h 0000h 0000h
dw 0000h 0000h 0000h 0000h 0000h 0000h 0000h 0000h
dw 0000h 0000h 0000h 0000h 0000h 0000h 0000h 0000h
dw 0000h 0000h 0000h 0000h 0000h 0000h 0000h 0000h
dw 0000h 0000h 0000h 0000h 0000h 0000h 0000h 0000h
org 0100h
jmp dkviewmain
; dkview ds:[di+????] variables list
; 00-43h drms ax 1c cx 18
; dx 14 bx 10 bp 08
; si 04 di 00
; flags 28
; 2c sp 30h ss
; 34h es 38h ds
;-------------
; 44h bpvalue 48 dsvalue 4c ssvalue
; 50 initscreen 54 displaywidth
; 58h displayheight 5c upleftx
; 60h uplefty 64 ydowncounter
; 68 colorsused 6c scalefactor
; 70 squareofscale 74 filelength32
; 78 modesave 7a nzcolor
; 7ch handle 080h
; 84 hgtfactor 88 need 8c dwords
; 90 memneed 94 smallwidth
; 98 ilopctsmw 9c threectr
; 0a0 smallwidbyscaby3
; 0a4 biwidby3 0a8 ilc 0ac olc
; 0b0 bigolc 0b4 medct
; 0b8 threone 0bc thretwo
; 0c0 medctby3 0c4 bigilc
; 0c8 needtoclear
; 0cc TeLaftbot 0d0 TeLastline
; 0d4 Textheight 0d8 currtext
; 0dc commandletter 0e0 previousscreen15
; 0e4 currentscreen15
; 0e8 zurfirstfn
; 0100 color green color unused
; 0108 color green color unused
; 0110 color green color uu
; 0100-011f is thresholds multiplied by squareofscale
; 0118 color green color unused
; 0120 sc sg sc xx
; 0120-0125 is sums of cgc triplets. Words.
; 0128
; 0182 1E length DTA reserved region starting at 0182
; 01A0 line of text
; 0200 fn
; 0380 bmpheader 392 biwidth 396 biheight
; 39c bibitcount {1,4,8,24}tiny
; 3ae biclrused number of colors used when > 0
; 03b6 colortable
; 0800 record
; 02800h
; ----------------------------
;
; DKVIEW2.TXT
; 16-bit c compatible subroutines are
; called after pushing rightmost argument
; first.
; artihmetic subroutines return result in DX:AX
; radd(cah,cal,cbh,cbl)
; bp+ variables
; 0a cbl 08 cbh 06 cal 04 cah
; 02 retad 00 bpsave
; returns with sum in DX:AX
radd: push bp
mov bp,sp
mov ax,[bp+0ah]
add ax,[bp+06h]
mov dx,[bp+08h]
adc dx,[bp+04h]
pop bp
ret
; rsubtract(cbigh,cbigl,ctinyh,ctinyl)
; 32-bit subtract result is in DX:AX
; CX is comparision result
; RETURNS CX=0000 equal. Or cx,08h for borrow
; or cx,04h for sign
; or cx,02h for UNEQUAL.
; bp+variables in stack
; 0e ctinyl 0c ctinyh
; 0a cbigl 08 cbigh
; 06 retad 04 disave
; 02 sisave 00 bpsave
rsubtract: push di
push si
push bp
mov bp,sp
mov ax,[bp+0ah]
mov dx,[bp+08h]
mov si,[bp+0eh]
mov di,[bp+0ch]
sub ax,si
sbb dx,di
jb aresdone
jne aresdone
mov di,dx
or di,ax
jz aresdone
or di,000fh
and di,000fh
aresdone: jb abparcond
js asparcond
je aeqcond
agrcond: mov cx,0002h
jmp acmpbot
aeqcond: xor cx,cx
jmp acmpbot
asparcond: mov cx,0006h
jmp acmpbot
abparcond: js abscond
je abeqcond
abgrcond: mov cx,000ah
jmp acmpbot
abeqcond: mov cx,0008h
; *** ERROR *** forgot everything
; between here and jmp acmpbot
; invalidated unequal lower 16 bits when
; carry ( borrow ) flag is set
; 06h and 02h were invalid
; masks for cx when 08h was set. used ce
mov di,dx
or di,ax
jnz abgrcond
jmp acmpbot
abscond: mov cx,000eh
acmpbot: pop bp
pop si
pop di
ret
; rmpy(slh,sll,srh,srl)
; returns 32 bit ordinal product in DX:AX
; stack variables bp+
; 0c srl 0a srh 08 sll 06 slh
; 04 retad 02 bpsave 00 cxsave
rmpy: push bp
push cx
mov bp,sp
xor dx,dx
xor ax,ax
rmpyl: test word [bp+0ch],01h
jz rkipaddm
add ax,[bp+08h]
adc dx,[bp+06h]
rkipaddm: shr word [bp+0ah],1
rcr word [bp+0ch],1
shl word [bp+08h],1
rcl word [bp+06h],1
mov cx,[bp+0ch]
or cx,[bp+0ah]
jnz rmpyl
pop cx
pop bp
ret
; rposdiv(numerh,numerl,denomh,denoml)
; returns fraction in DX:AX
; 22 denoml 20 denomh 1e numerl
; 1c numerh 1a retad 18 disave 16 sisave
; 14 bpsave
; 12 bxsave 10 dxsave 0e cxsave 0c axsave
; 0a bigl
; 08 bigh 06 dlctr 04 negctr 02 resultl
; 00 resulth
rposdiv: push di
push si
push bp
push bx
push dx
push cx
push ax
xor di,di
push di
push di
push di
push di
push di
push di
mov bp,sp
cmp [bp+020h],di
jns askipnegden
push word [bp+022h]
push word [bp+020h]
push di
push di
call rsubtract
add sp,0008h
mov [bp+022h],ax
mov [bp+020h],dx
inc word [bp+04h]
askipnegden: cmp [bp+01ch],di
jns askipnegnum
push word [bp+01eh]
push word [bp+01ch]
push di
push di
call rsubtract
add sp,008h
mov [bp+01eh],ax
mov [bp+01ch],dx
inc word [bp+04h]
askipnegnum: shl word [bp+02h],1
rcl word [bp+di],1
shl word [bp+01eh],1
rcl word [bp+01ch],1
rcl word [bp+0ah],1
rcl word [bp+08h],1
push word [bp+022h]
push word [bp+020h]
push word [bp+0ah]
push word [bp+08h]
call rsubtract
add sp,0008h
test cx,08h
jnz askipdiv
mov [bp+0ah],ax
mov [bp+08h],dx
inc word [bp+02h]
jnz askipdiv
inc word [bp+di]
askipdiv: inc word [bp+06h]
cmp word [bp+06h],0020h
jns acheckneg
jmp askipnegnum
acheckneg: test word [bp+04h],01h
jz aposres
push word [bp+02h]
push word [bp+di]
push di
push di
call rsubtract
add sp,0008h
mov [bp+02h],ax
mov [bp+di],dx
aposres: pop word [bp+010h]
pop word [bp+0ch]
add sp,0008h
pop ax
pop cx
pop dx
pop bx
pop bp
pop si
pop di
ret
; end of I/O arithmetic section is line 000216 000249
; alternate interrupt 10h
bwten: push es
push ds
push di
push si
push bp
int 10h
pop bp
pop si
pop di
pop ds
pop es
ret
; end of bwten
; DOS calling points dzdos szdos nondos
; all require es:di dzdos szdos es:di only
; nondos BX also
dzdos: push ax
mov ax,[di+048h]
mov [di+0038h],ax
mov [di+0034h],ax
; 34 is drms es 38 is drms ds
; 48 is main dsvalue
jmp szdosa
szdos: push ax
szdosa: push bx
mov bx,0021h
; szdos does not initialize ds or es
jmp nondosa
nondos: push ax
push bx
; does not even initialize interrupt type
nondosa: mov ax,[di+004ch]
mov [di+0030h],ax
; 4c is main ssvalue 30 is drms ss
push dx
push cx
mov cx,0000h
mov ax,0103h
mov dx,sp
sub dx,0040h
mov [di+002ch],dx
; 2c is drms sp
call drms
pop cx
pop dx
pop bx
pop ax
ret
; DRMS DOS real mode services.
; ax=0103h call real mode interrupt proceedure
; cx=00h bx=interrupt number ES:DI pointer to list
; of register values.
; 000 edi
; 004 esi
; 008 ebp
; 00c do not use
; 010 ebx
; 014 edx
; 018 ecx
; 01c eax
; ----
; 028 eflags
; ----
; 02c esp
; 030 SS
; 034 ES
; 038 DS
; limit is 043h
drms: push ds
push es
push di
push si
push bp
push bx
push dx
push cx
push ax
mov si,ss
mov bp,sp
es
mov dx,[di+030h]
es
mov ax,[di+02ch]
mov ss,dx
mov sp,ax
push si
push bp
push es
push di
cmp bx,0010h
jz ru10
cmp bx,0021h
jz ru21
mov ax,0000h
jmp inpu
ru10: lea ax,[tenjump]
jmp inpu
ru21: lea ax,[jump21]
jmp inpu
inpu: push ax
es
push word [di+0038h]
es
push word [di+0034h]
es
push word [di+0000h]
es
push word [di+0004h]
es
push word [di+0008h]
es
push word [di+0010h]
es
push word [di+0014h]
es
push word [di+0018h]
es
push word [di+001ch]
es
mov word [di+0028h],0002h
es
mov word [di+002ah],0000h
pop ax
pop cx
pop dx
pop bx
pop bp
pop si
pop di
pop es
pop ds
cmp bp,bp
ret
tenjump: int 10h
jmp bot21
jump21: int 21h
bot21: push ds
push es
push di
push si
push bp
push bx
push dx
push cx
push ax
mov bp,sp
mov di,[bp+012h]
mov ax,[bp+014h]
mov es,ax
jnz skipzurfset
es
mov word [di+0028h],0042h
skipzurfset: jnb skipsetcarry
es
mov word [di+0028h],0003h
skipsetcarry: nop
es
pop word [di+001ch]
es
pop word [di+0018h]
es
pop word [di+0014h]
es
pop word [di+0010h]
es
pop word [di+0008h]
es
pop word [di+0004h]
es
pop word [di+0000h]
es
pop word [di+0034h]
es
pop word [di+0038h]
add sp,04h
; rem skip already used di and es
pop bp
pop bx
mov ss,bx
mov sp,bp
pop ax
pop cx
pop dx
pop bx
pop bp
pop si
pop di
pop es
pop ds
ret
; end of drms i/o subroutine
; clearline(yvalue,color)
; 22 color 20 yvalue 1e retad 1c disave
; 1a sisave 18 bpsave
; 16 bxsave 14 dxsave 12 cxsave 10 axsave
; 0e 0c counter 0a 08 ybase 06 04
; sivalue 02 00
clearline: push di
push si
push bp
push bx
push dx
push cx
push ax
mov cx,08h
xor bx,bx
lclearpu: push bx
dec cx
jnz lclearpu
mov bp,sp
mov si,[di+05ch]
mov [bp+04h],si
mov ax,[di+054h]
mov [bp+0ch],ax
mov ax,[di+060h]
add ax,[bp+0020h]
mov [bp+08h],ax
lclearlop: dec word [bp+0ch]
js lclearbot
mov ax,0c00h
mov al,[bp+0022h]
mov bx,0010h
mov dx,[bp+08h]
mov cx,[bp+04h]
mov word [di+0010h],0000h
mov word [di+0014h],dx
mov word [di+0018h],cx
mov word [di+001ch],ax
call nondos
inc word [bp+04h]
jmp lclearlop
lclearbot: add sp,0010h
pop ax
pop cx
pop dx
pop bx
pop bp
pop si
pop di
ret
; end of clearline
; clearpage (color2)
; 20 color2 1e retad 1c disave 1a sisave
; 18 bpsave
; 16 bxsave 14 dxsave 12 cxsave 10 axsave
; 0e 0c counter 0a 08
; 06 04 02 00
clearpage: push di
push si
push bp
push bx
push dx
push cx
push ax
mov cx,0008h
xor si,si
clearpushb: push si
dec cx
jnz clearpushb
mov bp,sp
clearpageoop: mov cx,[bp+020h]
push cx
push word [bp+0ch]
call clearline
add sp,04h
add word [bp+0ch],0001h
mov cx,[bp+0ch]
cmp cx,[di+058h]
js clearpageoop
add sp,0010h
pop ax
pop cx
pop dx
pop bx
pop bp
pop si
pop di
ret
; inttochar(col,width,nuH,nuL)
; 86 nuL 84 nuH 82 width 80 col
; 7e retad 7c disave 7a sisave 78 bpsave
; 76 bxsave 74 dxsave 72 cxsave 70 axsave
; 6e downcounter 6c 6a 68
; 66 shrinkerH 64 shrinkerL
; 62 divresultH 60 divresultL
inttochar: push di
push si
push bp
push bx
push dx
push cx
push ax
mov cx,038h
xor si,si
intpuchar: push si
dec cx
jnz intpuchar
mov bp,sp
mov si,di
add si,[bp+080h]
dec si
mov cx,[bp+082h]
or cx,cx
jz failintar
intastear: mov byte [si+01a0h],02ah
inc si
dec cx
jnz intastear
cmp word [bp+084h],0000h
jns keepintar
failintar: jmp failintfr
keepintar: mov ax,[bp+086h]
mov dx,[bp+084h]
mov cx,[bp+082h]
mov [bp+06eh],cx
mov [bp+064h],ax
mov [bp+066h],dx
intextrap: dec word [bp+06eh]
jns keepintbr
jmp finishiar
keepintbr: mov ax,0ah
mov dx,00h
push ax
push dx
push word [bp+064h]
push word [bp+066h]
call rposdiv
add sp,08h
mov [bp+060h],ax
mov [bp+062h],dx
push ax
push dx
mov dx,0000h
mov ax,000ah
push ax
push dx
call rmpy
add sp,08h
push ax
push dx
push word [bp+064h]
push word [bp+066h]
call rsubtract
add sp,08h
mov si,0010h
add si,[bp+006eh]
mov [bp+si],al
mov ax,[bp+060h]
mov dx,[bp+062h]
mov [bp+064h],ax
mov [bp+066h],dx
jmp intextrap
finishiar: mov ax,[bp+064h]
or ax,[bp+066h]
jz finishibr
jmp failintar
finishibr: mov cx,[bp+082h]
mov si,0010h
mov bx,0000h
add bx,[bp+0080h]
sub bx,0001h
finishalt: mov dl,[bp+si+00h]
add dl,030h
mov [bx+di+01a0h],dl
inc bx
inc si
dec cx
jnz finishalt
failintfr: add sp,0070h
pop ax
pop cx
pop dx
pop bx
pop bp
pop si
pop di
ret
; displayline()
; 6e retad 6c disave 6a sisave
; 68 bpsave 66 bxsave
; 64 dxsave 62 cxsave 60 axsave
; 5e ilopct 5c medlopct2
; 5a olopct 58 charout 56 pixsave
; 54 ysave 52
displayline: push di
push si
push bp
push bx
push dx
push cx
push ax
sub sp,060h
mov bp,sp
mov ax,[di+0d0h]
cmp ax,[di+0d8h]
jns displaykeel
errordis: jmp canceldis
displaykeel: mov word [bp+05ah],0000h
olod: mov si,di
add si,[bp+05ah]
mov dl,[si+01a0h]
and dx,00ffh
mov [bp+058h],dx
mov word [bp+05ch],0000h
medlod: mov word [bp+05eh],0000h
ilod: lea ax,[fontbase]
mov si,[bp+058h]
add si,si
add si,si
add si,si
add si,[bp+05ch]
add si,ax
mov dl,[si+00h]
mov cx,[bp+05eh]
mov ax,0040h
add ax,ax
cmp cx,00h
jz skipshdout
shr al,cl
skipshdout: mov cx,0c00h
and dl,al
jz bkgndou
mov cx,0c0ah
bkgndou: mov [di+01ch],cx
mov word [di+0010h],0000h
mov dx,[di+0d8h]
add dx,dx
add dx,dx
add dx,dx
add dx,dx
add dx,[bp+05ch]
add dx,[bp+05ch]
mov [bp+054h],dx
mov [bp+056h],cx
add dx,[di+060h]
mov [di+014h],dx
mov cx,[bp+05ah]
add cx,cx
add cx,cx
add cx,cx
add cx,[bp+05eh]
add cx,[di+05ch]
mov [di+018h],cx
mov bx,0010h
call nondos
mov ax,[bp+056h]
mov [di+01ch],ax
mov cx,[bp+05ah]
add cx,cx
add cx,cx
add cx,cx
add cx,[bp+05eh]
add cx,[di+05ch]
mov [di+018h],cx
mov dx,[bp+054h]
add dx,01h
add dx,[di+060h]
mov [di+014h],dx
mov word [di+010h],00h
mov bx,0010h
call nondos
inc word [bp+05eh]
cmp word [bp+05eh],0008h
jns botilod
jmp ilod
botilod: inc word [bp+005ch]
cmp word [bp+005ch],0008h
jns botmedlod
jmp medlod
botmedlod: inc word [bp+005ah]
cmp word [bp+005ah],0028h
jns botolod
jmp olod
botolod: inc word [di+0d8h]
canceldis: add sp,0060h
pop ax
pop cx
pop dx
pop bx
pop bp
pop si
pop di
ret
; prints(*string$)
; 60 string$ 5e retad 5c disave
; 5a sisave 58 bpsave
; 56 bxsave 54 dxsave 52 cxsave
; 50 axsave 4e
prints: push di
push si
push bp
push bx
push dx
push cx
push ax
sub sp,0050h
mov bp,sp
mov si,di
mov cx,0028h
printcles: mov byte [si+01a0h],020h
inc si
dec cx
jnz printcles
mov si,di
mov bx,[bp+0060h]
sub bx,si
mov cx,0028h
printlopsz: mov dl,[bx+si+00h]
cmp dl,00h
jz printsbot
cmp dl,024h
jz printsbot
mov [si+01a0h],dl
inc si
dec cx
jnz printlopsz
printsbot: add sp,0050h
pop ax
pop cx
pop dx
pop bx
pop bp
pop si
pop di
ret
; cx:ax = keysub() key to al or ax
; keytype to cx regular=1
keysub: push di
push si
push bp
push bx
push dx
push cx
push ax
mov bp,sp
mov word [bp+02h],00h
waitup: mov word [di+01ch],0600h
mov word [di+014h],00ffh
mov word [di+028h],02h
call dzdos
mov dx,040h
and dx,[di+028h]
jz waitup
waitdown: mov word [di+01ch],0600h
mov word [di+014h],00ffh
mov word [di+028h],046h
call dzdos
mov dx,040h
and dx,[di+028h]
jnz waitdown
inc word [bp+02h]
mov ax,[di+01ch]
and ax,00ffh
jz waitdown
mov [bp+00h],ax
pop ax
pop cx
pop dx
pop bx
pop bp
pop si
pop di
ret
; copytlfn()
; 1e retad 1c disave 1a sisave
; 18 bpsave 16 bxsave
; 14 dxsave 12 cxsave 10 axsave
; 0e 0c
; 0a 08 06
; 04 02
copytlfn: push di
push si
push bp
push bx
push dx
push cx
push ax
sub sp,0010h
mov bp,sp
mov si,0000h
mov bx,di
copytlfnl: mov dl,[bx+si+01a0h]
cmp dl,021h
jb copytlfnb
mov [bx+si+0200h],dl
inc si
cmp si,0028h
js copytlfnl
copytlfnb: mov byte [bx+si+0200h],00h
add sp,0010h
pop ax
pop cx
pop dx
pop bx
pop bp
pop si
pop di
ret
; clearhdr()
; 0e retad 0c disave 0a sisave 08 bpsave
; 06 bxsave 04 dxsave
; 02 cxsave 00 axsave
clearhdr: push di
push si
push bp
push bx
push dx
push cx
push ax
mov bp,sp
mov cx,02000h
mov si,di
clearhdrr: mov byte [si+0380h],00h
inc si
dec cx
jnz clearhdrr
pop ax
pop cx
pop dx
pop bx
pop bp
pop si
pop di
ret
; akeyline()
; 1e retad 1c disave 1a sisave 18 bpsave
; 16 bxsave 14 dxsave
; 12 cxsave 10 axsave 0e counter
akeyline: push di
push si
push bp
push bx
push dx
push cx
push ax
sub sp,0010h
mov bp,sp
mov cx,0028h
mov si,di
bkeyerase: mov byte [si+01a0h],020h
inc si
dec cx
jnz bkeyerase
mov word [bp+0eh],0000h
dkeysloop: call displayline
dec word [di+0d8h]
mov si,di
add si,[bp+0eh]
rekey: call keysub
cmp cx,01h
jnz rekey
mov dl,020h
mov [si+01a0h],dl
inc word [bp+0eh]
cmp al,0dh
jz botkeyline
cmp al,08h
jnz notbackward
dec word [bp+0eh]
jz dkeysloop
dec si
mov [si+01a0h],dl
dec word [bp+0eh]
jmp dkeysloop
notbackward: cmp al,020h
js keyewidcmp
mov [si+01a0h],ax
keyewidcmp: cmp word [bp+0eh],0028h
jns botkeyline
jmp dkeysloop
botkeyline: inc word [di+00d8h]
add sp,0010h
pop ax
pop cx
pop dx
pop bx
pop bp
pop si
pop di
ret
; findnextfn()
; 1e retad 1c disave 1a sisave
; 18 bpsave 16 bxsave
; 14 dxsave 12 cxsave 10 axsave
; 0e dosdtaseg 0c dosdtaoffset
findnextfn: push di
push si
push bp
push bx
push dx
push cx
push ax
sub sp,0010h
mov bp,sp
mov word [di+001ch],02f00h
call dzdos
mov ax,[di+0010h]
mov [bp+0ch],ax
mov ax,[di+0034h]
mov [bp+0eh],ax
lea dx,[di+0182h]
mov [di+014h],dx
mov word [di+001ch],01a00h
call dzdos
lea dx,[filespec]
mov [di+0014h],dx
mov word [di+001ch],04e00h
cmp word [di+00e8h],0000h
jz findfirsta
mov word [di+001ch],04f00h
findfirsta: mov cx,0000h
mov [di+0018h],cx
call dzdos
mov word [di+00e8h],0000h
mov cx,0001h
and cx,[di+0028h]
jnz resetff
mov word [di+00e8h],0001h
resetff: mov si,[bp+0eh]
mov dx,[bp+0ch]
mov [di+0038h],si
mov [di+0034h],si
mov [di+0014h],dx
mov word [di+001ch],01a00h
call szdos
cmp word [di+00e8h],0000h
jnz afoundfn
mov cx,0028h
mov si,di
unfound: mov byte [di+01a0h],020h
inc si
dec cx
jnz unfound
afoundfn: add sp,0010h
pop ax
pop cx
pop dx
pop bx
pop bp
pop si
pop di
ret
; bitmap header loc len desc
; 00 00 "BM"
; 02 04 BFSIZE
; 06 02 2r1
; 08 02 2R2
; 0A 04 bfoffbits to start of bitmap
; 0e 04 bisize of header
; 12 04 biwidth in pixels
; 16 04 biheight in pixels
; 1A 02 biplanes set to one
; 1C 02 bibitcount = {1,4,8,24}
; 1E 04 bicompression or zero for RGB
; 22 04 bisize size of image or zero
; 26 04 bixpelspermeter
; 2A 04 biypelspermeter
; 2E 04 biclrused number of colors used when > 0
; 32 04 biclrimportant or 0
; 36 08 colortable
; 3E 0500H 640*16 2800H pixel 0500H byte 1*80
; character bitmap line
; 053Eh size of bitmap in hex
bmpstart db "BM"
bfsize db 03eh, 05h, 00h, 00h
cst2r1 db 00h,00h,00h,00h
bfoffbits db 03eh,00h,00h,00h
bisizehdr db 028h,00h,00h,00h
biwidth db 080h,02h,00h,00h
biheight db 010h,00h,00h,00h
biplanes db 01h,00h
bibitcount db 01h,00h
bicompression db 00h,00h,00h,00h
bisize db 00h,05h,00h,00h
bixmete db 4ch,0eh,00h,00h
biymete db 4ch,0eh,00h,00h
biclrused db 00h,00h,00h,00h
biclrimportant db 00h,00h,00h,00h
colortable db 00h,00h,00h,00h,0ffh,0ffh,0ffh,00h
need0500 db 00h,00h
; dkview.txt or dkview.asm bitmap file viewer
dkviewmain: mov bp,sp
push ds
xor cx,cx
push cx
mov bx,001fh
lea di,[bx+botdkview]
and di,0fff0h
; di is set to point to ds based variables
xor bx,bx
xor ax,ax
bxvarclr: mov [bx+di],al
inc bx
cmp bx,04000h
js bxvarclr
xor si,si
mov cx,06800h
bpvarclr: mov [bp+si],ax
inc si
inc si
dec cx
jnz bpvarclr
mov ax,ds
mov cx,ss
mov [di+0048h],ax
mov [di+004ch],cx
mov word [di+01ch],0f00h
mov word [di+007ah],0001h
mov bx,0010h
call nondos
mov ax,[di+001ch]
and ax,00ffh
mov [di+0050h],ax
cmp ax,0012h
jz skipsetv
mov word [di+01ch],0012h
mov bx,0010h
call nondos
skipsetv: mov word [di+0054h],0280h
mov word [di+0058h],01e0h
mov word [di+00e0h],0005h
; after full screen width is set check command tail
; and copy to filename
mov si,0080h
mov bx,0000h
mov dl,[bx+080h]
cmp dl,02h
jns untrap545
trap0516: jmp bfileskip
untrap545: and dx,00ffh
sub dx,01h
and dx,00ffh
ctailoop: mov al,[bx+0082h]
cmp al,020h
js ctailbot
jz ctailbot
mov [bx+di+0200h],al
inc bx
cmp bx,dx
js ctailoop
ctailbot: mov byte [bx+di+0200h],00h
; command tail to filename is above
; begin open filename
dkfopen: mov word [di+01ch],03d00h
mov word [di+0cch],0000h
lea dx,[di+0200h]
mov [di+0014h],dx
call dzdos
mov ax,[di+01ch]
mov [di+07ch],ax
mov dx,01h
and dx,[di+028h]
jz untrap0570
jmp bfileskip
; end of open 7c is handle offset
; 28 flags even no error
untrap0570: mov word [di+01ch],04202h
mov word [di+014h],0000h
mov word [di+018h],0000h
mov ax,[di+07ch]
mov [di+010h],ax
call dzdos
mov ax,[di+01ch]
mov dx,[di+014h]
xor bx,bx
mov [bx+di+0074h],ax
inc bx
inc bx
mov [bx+di+0074h],dx
mov word [di+01ch],04200h
mov word [di+014h],0000h
mov word [di+018h],0000h
mov ax,[di+07ch]
mov [di+010h],ax
call dzdos
; file pointer is at beginning of file
mov ax,007eh
mov bx,0000h
; minimum length is above
push ax
push bx
push word [di+074h]
push word [di+076h]
call rsubtract
add sp,0008h
and cx,000ch
jz gethdrvv
trap0568: jmp bfileclose
; if filesize is too small
gethdrvv: mov word [di+01ch],03f00h
mov word [di+0018h],0036h
lea dx,[di+0380h]
mov [di+0014h],dx
mov ax,[di+007ch]
mov [di+0010h],ax
call dzdos
; just obtained bitmap header
lea bx,[di+0380h]
; [di+0380h] is bmpheader
; [bx+001ch] is bibitcount
cmp word [bx+0000h],04d42h
jnz trap0568
cmp word [di+00c8h],0000h
jz tin659
mov ax,02h
push ax
call clearpage
add sp,02h
mov word [di+00c8h],0000h
tin659: cmp word [bx+001ch],0001h
jnz nononeb
mov word [di+0068h],02h
; [di+0068h] is colorsused
mov ax,08h
mov dx,00h
push ax
push dx
mov ax,07h
push ax
push dx
push word [bx+012h]
push word [bx+014h]
; biwidth + 7
call radd
add sp,08h
push ax
push dx
call rposdiv
add sp,08h
mov [di+088h],ax
mov [di+08ah],dx
; need=(biwidth+7)/8
; bibitcount=1
nononeb: cmp word [bx+001ch],0004h
jnz nonfourb
mov word [di+0068h],0010h
; colorsused=16
mov ax,02h
mov dx,00h
push ax
push dx
mov ax,01h
push ax
push dx
push word [bx+012h]
push word [bx+014h]
; biwidth+1
call radd
add sp,08h
push ax
push dx
call rposdiv
add sp,08h
mov [di+088h],ax
mov [di+08ah],dx
; need=(biwidth+1)/2
; bibitcount=4
nonfourb: cmp word [bx+001ch],0008h
jnz noneightb
mov word [di+0068h],0100h
; colorsused=256
mov ax,[bx+0012h]
mov dx,[bx+0014h]
mov [di+088h],ax
mov [di+08ah],dx
; need=biwidth
; bibitcount=8
mov dx,[bx+002eh]
; [bx+002eh] is biclrused
cmp dx,0000h
jz noneightb
mov [di+0068h],dx
; colorsused=dx
noneightb: cmp word [bx+001ch],0018h
jnz non24bbb
mov word [di+0068h],0000h
; colorsused=0
mov ax,03h
mov dx,0000h
push ax
push dx
push word [bx+0012h]
push word [bx+0014h]
call rmpy
add sp,08h
mov [di+088h],ax
mov [di+08ah],dx
; need=biwidth*3
; bibitcount=24
non24bbb: mov word [di+001ch],03f00h
mov cx,[di+0068h]
add cx,cx
add cx,cx
mov [di+0018h],cx
lea dx,[di+03b6h]
mov [di+014h],dx
mov ax,[di+07ch]
mov [di+010h],ax
cmp cx,0000h
jz skipcolortab
call dzdos
skipcolortab: mov ax,04h
mov dx,00h
push ax
push dx
mov ax,03h
push ax
push dx
push word [di+088h]
push word [di+08ah]
; need+3
call radd
add sp,08h
push ax
push dx
call rposdiv
add sp,08h
mov [di+08ch],ax
mov [di+08eh],dx
; dwords=(need+3)/4
; find scale factor. Scale factor <=11
; and scale ^2 * biheight needs fitmem
lea bx,[di+0380h]
; [di+0380h] is bmpheader
mov ax,01h
mov dx,00h
push ax
push dx
push word [di+058h]
push word [di+05ah]
; [di+058h] is displayheight
; denominator = 58.
call rsubtract
add sp,08h
; (displayheight-1)
push ax
push dx
push word [bx+016h]
push word [bx+018h]
; [bx+016h] is biheight
; term is 16.
call radd
add sp,08h
push word [di+058h]
push word [di+05ah]
; [di+058h] is displayheight
; denominator = 58.
push ax
push dx
call rposdiv
add sp,08h
mov [di+084h],ax
mov [di+086h],dx
; hgtfactor=((displayheight-1)+biheight)/displayheight
; result is 6c.84 rght
; second attempt of
; find scale factor. Scale factor <=11
; and scale ^2 * biheight needs fitmem
lea bx,[di+0380h]
mov ax,01h
mov dx,00h
push ax
push dx
push word [di+054h]
push word [di+056h]
; [di+054h] is displaywidth
; denominator = 58.54
call rsubtract
add sp,08h
; displaywidth-1
push ax
push dx
push word [bx+012h]
push word [bx+014h]
; [bx+012h] is biwidth
; term is 16.12
call radd
add sp,08h
; ((displaywidth-1)+biwidth
push word [di+054h]
push word [di+056h]
; [di+054h] is displaywidth
; denominator = 58.54
push ax
push dx
call rposdiv
add sp,08h
mov [di+06ch],ax
mov [di+06eh],dx
; scalefactor=((displaywidth-1)+biwidth)/displaywidth
; result is 6c rght
push word [di+06ch]
push word [di+06eh]
push word [di+084h]
push word [di+086h]
call rsubtract
add sp,08h
; hgtfactor-scalefactor
and cx,000ch
jnz scalebig
; scalebig scalefactor>hgtfactor
mov ax,[di+084h]
mov dx,[di+086h]
mov [di+06ch],ax
mov [di+06eh],dx
; scalefactor=hgtfactor if scalefactor <= hgtfactor
scalebig: mov ax,[di+06ch]
mov dx,[di+06eh]
; scalefactor
push ax
push dx
push ax
push dx
call rmpy
add sp,08h
mov [di+070h],ax
mov [di+072h],dx
; squared=scalefactor*scalefactor
or dx,dx
jz square16
trap0757: jmp bfileclose
square16: mov cx,0ff80h
and cx,ax
jnz trap0757
mov ax,03h
mov dx,00h
push ax
push dx
push word [bx+012h]
push word [bx+014h]
push word [di+06ch]
push word [di+06eh]
call rmpy
add sp,08h
push ax
push dx
call rmpy
add sp,08h
mov [di+090h],ax
mov [di+092h],dx
; memneed=(biwidth*scalefactor*3)
mov ax,0d000h
mov dx,0000h
push ax
push dx
push word [di+090h]
push word [di+092h]
; (memneed-d000h)<0 memfits when memneed < d000h
call rsubtract
add sp,08h
and cx,000ch
jnz memfits
trap0786: jmp bfileclose
memfits: push word [di+06ch]
push word [di+06eh]
push word [bx+016h]
push word [bx+018h]
; ydowncounter = biheight/scalefactor
call rposdiv
add sp,08h
mov [di+064h],ax
mov [di+066h],dx
; ydowncounter=biheight / scalefactor
; [di+064h] is ydowncounter at top
; before first value used
add ax,0fh
mov cx,04h
shr ax,cl
mov [di+0cch],ax
; 0cc telaftbot is ydowncounter at beginning/16
; smallwidth=biwidth / scalefactor
push word [di+06ch]
push word [di+06eh]
push word [bx+012h]
push word [bx+014h]
call rposdiv
add sp,08h
mov [di+094h],ax
mov [di+096h],dx
; --
mov ax,03h
mov dx,00h
push ax
push dx
push word [bx+012h]
push word [bx+014h]
call rmpy
add sp,08h
mov [di+0a4h],ax
mov [di+0a6h],dx
; biwidby3 = biwidth * 3
mov word [di+0b8h],00h
mov word [di+0bch],00h
athreloop: lea si,[threshlist]
add si,[di+0b8h]
cs
mov al,[si+00h]
and ax,00ffh
mov dx,00h
push ax
push dx
push word [di+070h]
push word [di+072h]
call rmpy
add sp,08h
mov si,di
add si,[di+0bch]
mov [si+0100h],ax
add word [di+0bch],02h
add word [di+0b8h],01h
cmp word [di+0b8h],010h
js athreloop
; ydownloop is major loop
ydownloop: mov word [di+0ach],00h
mov word [di+09ch],00h
; ac olc 9c threectr 6c scalefactor
; olc < scalefactor
idownread: mov ax,[di+0ach]
cmp ax,[di+06ch]
js iddnread
jmp doneread3
iddnread: mov word [di+0b4h],00h
; di+b4 medct bx+12h biwidth
; medct < biwidth
mov cx,[di+08ch]
add cx,cx
add cx,cx
mov [di+018h],cx
mov word [di+01ch],03f00h
lea dx,[di+0800h]
mov [di+014h],dx
mov ax,[di+07ch]
mov [di+010h],ax
call dzdos
inc word [di+0ach]
cmp word [bx+01ch],01h
jnz rt4
; begin 1 4 8 24 tree
jmp oneloop
rt4: cmp word [bx+01ch],04h
jnz rt8
jmp fourloop
rt8: cmp word [bx+01ch],08h
jnz rt24
jmp eightloop
rt24: cmp word [bx+01ch],018h
jnz rtnon24
jmp loopd24
rtnon24: jmp idownread
oneloop: mov ax,[di+0b4h]
cmp ax,[bx+012h]
js onezoop
; medctr < biwidth onezoop
jmp idownread
onezoop: lea ax,[binladchk]
mov si,[di+0b4h]
and si,07h
add si,ax
; si="=A(binladchk)"+(medctr AND 7)
cs
mov dl,[si+00h]
; dl is one of { 80 40 20 10 08 04 02 01 }
mov si,[di+0b4h]
mov cx,03h
shr si,cl
add si,di
; si=(medctr/8)+di
inc word [di+0b4h]
and dl,[si+0800h]
; read same byte 8 times for monochrome
lea si,[di+03b6h]
or dl,dl
jz nowhite
lea si,[di+03bah]
; monochrome colortable elements start at 0 is 03b6
; 1 is 03ba
nowhite: mov al,[si+00h]
mov ah,[si+01h]
mov cl,[si+02h]
mov si,[di+09ch]
add word [di+09ch],03h
mov [bp+si+00h],al
mov [bp+si+01h],ah
mov [bp+si+02h],cl
jmp oneloop
fourloop: mov ax,[di+0b4h]
cmp ax,[bx+012h]
js fourzoop
; medctr < biwidth fourzoop
jmp idownread
fourzoop: mov ax,01h
and ax,[di+0b4h]
; odd medctr fourodd
jnz fourodd
mov si,[di+0b4h]
shr si,1
add si,di
mov dx,00f0h
and dl,[si+0800h]
mov cx,04h
shr dl,cl
and dx,000fh
jmp fourdlgot
fourodd: mov si,[di+0b4h]
shr si,1
add si,di
mov dx,000fh
and dl,[si+0800h]
fourdlgot: inc word [di+0b4h]
add dx,dx
add dx,dx
lea si,[di+03b6h]
add si,dx
mov al,[si+00h]
mov ah,[si+01h]
mov cl,[si+02h]
mov si,[di+09ch]
add word [di+09ch],03h
mov [bp+si+00h],al
mov [bp+si+01h],ah
mov [bp+si+02h],cl
jmp fourloop
eightloop: mov ax,[di+0b4h]
cmp ax,[bx+012h]
js eightzoop
jmp idownread
eightzoop: mov si,[di+0b4h]
add si,di
inc word [di+0b4h]
mov dl,[si+0800h]
and dx,00ffh
add dx,dx
add dx,dx
lea si,[di+03b6h]
add si,dx
mov al,[si+00h]
mov ah,[si+01h]
mov cl,[si+02h]
mov si,[di+09ch]
add word [di+09ch],03h
mov [bp+si+00h],al
mov [bp+si+01h],ah
mov [bp+si+02h],cl
jmp eightloop
loopd24: mov word [di+0c0h],00h
d3loopd24: mov ax,[di+0b4h]
cmp ax,[bx+012h]
js zoopd24
jmp idownread
zoopd24: inc word [di+0b4h]
lea si,[di+0800h]
add si,[di+0c0h]
add word [di+0c0h],03h
mov al,[si+00h]
mov ah,[si+01h]
mov cl,[si+02h]
mov si,[di+09ch]
add word [di+09ch],03h
mov [bp+si+00h],al
mov [bp+si+01h],ah
mov [bp+si+02h],cl
jmp d3loopd24
doneread3: dec word [di+064h]
cmp word [di+064h],00h
jns donezeed3
mov word [di+00c8h],0001h
jmp bfileclose
donezeed3: mov word [di+098h],00h
; // 1577 has read a line
mov word [di+098h],00h
mov word [di+0a0h],00h
displayloop: mov ax,[di+07ah]
or ax,ax
jnz jisplayroop
; cut top of to monochrome
; mov bx,0000h
; iisplaybwpr: mov ax,01015h
; push bx
; call bwten
; pop bx
; mov [bx+di+0128h],cl
; mov [bx+di+0138h],ch
; mov [bx+di+0148h],dl
; mov [bx+di+0158h],dh
; mov al,[bx+cstmonolist];
; mov ch,al
; mov cl,al
; mov dh,al
; mov ax,01010h
; push bx
; call bwten
; pop bx
; add bx,0001h
; cmp bx,0010h
; js iisplaybwpr
; lea bx,[di+0380h]
; bottom of cut to monochrome ..
jisplayroop: mov ax,[di+098h]
cmp ax,[di+094h]
js displayzoop
; // ydownloop is above at line 1423
xor cx,cx
cmp cx,[di+007ah]
; change label jz bwdownboop
jmp ydownloop
; top of restore colors
; mov bx,0000h
; bwrestcol: mov ax,01010h
; mov cl,[bx+di+0128h]
; mov ch,[bx+di+0138h]
; mov dl,[bx+di+0148h]
; mov dh,[bx+di+0158h]
; push bx
; call bwten
; pop bx
; add bx,01h
; cmp bx,0010h
; js bwrestcol
; lea bx,[di+0380h]
; bottom of restore colors ..
jmp ydownloop
displayzoop: mov cx,0010h
mov si,di
clrzdsum: mov byte [si+0120h],00h
inc si
dec cx
jnz clrzdsum
mov word [di+0b0h],00h
mov word [di+0ach],00h
dzolop: inc word [di+0ach]
mov word [di+0c4h],00h
mov word [di+0a8h],00h
dzilop: inc word [di+0a8h]
mov si,[di+0a0h]
add si,[di+0b0h]
add si,[di+0c4h]
mov al,[bp+si+00h]
mov cl,[bp+si+01h]
mov dl,[bp+si+02h]
and ax,00ffh
and cx,00ffh
and dx,00ffh
add [di+0120h],ax
add [di+0122h],cx
add [di+0124h],dx
add word [di+0c4h],03h
mov ax,[di+0a8h]
cmp ax,[di+06ch]
js dzilop
mov ax,[bx+012h]
add [di+0b0h],ax
add [di+0b0h],ax
add [di+0b0h],ax
mov cx,[di+0ach]
cmp cx,[di+06ch]
js dzolop
mov dx,[di+06ch]
add [di+0a0h],dx
add [di+0a0h],dx
add [di+0a0h],dx
mov ax,01h
mov cx,01h
xor si,si
and ax,[di+064h]
jz evenvert
mov si,0010h
evenvert: and cx,[di+098h]
jz evenhoriz
add si,0008h
evenhoriz: add si,di
mov word [di+010h],0000h
mov dx,[di+064h]
mov cx,[di+098h]
inc word [di+098h]
add dx,[di+060h]
add cx,[di+05ch]
mov [di+014h],dx
mov [di+018h],cx
mov bx,0c00h
mov ax,[di+0120h]
mov cx,[di+0122h]
mov dx,[di+0124h]
cmp ax,[si+0100h]
js nonred
or bx,09h
nonred: cmp cx,[si+0102h]
js nongreen
or bx,0ah
nongreen: cmp dx,[si+0104h]
js nonblue
or bx,0ch
nonblue: mov [di+01ch],bx
and bx,000fh
jnz highbright
mov bx,0c01h
cmp cx,ax
js redbig
mov bx,0c02h
mov ax,cx
redbig: cmp dx,ax
js bluesmall
mov bx,0c04h
mov ax,dx
bluesmall: push ax
xor dx,dx
mov cx,[di+0070h]
push cx
push dx
mov cx,012h
push cx
push dx
call rmpy
add sp,08h
mov cx,ax
pop ax
cmp ax,cx
js highbright
mov [di+01ch],bx
highbright: mov ax,[di+0120h]
mov bx,0001h
and bx,[di+07ah]
jz bwb
; push rightmost argument first bwb monochrome mode
mov cx,0005h
mov ax,[di+00e4h]
cmp ax,01h
js greyfiveb
cmp ax,05h
jns greyfiveb
mov cx,ax
greyfiveb: mov ax,0001h
greyseven: dec cx
js greysixc
add ax,ax
jmp greyseven
greysixc: and ax,[di+007ah]
jnz greyscalea
jmp nonbw
greyscalea: jmp mwgrey
bwb: xor bx,bx
xor si,si
mov ax,[di+0120h]
mov cx,[di+0122h]
mov dx,[di+0124h]
add si,ax
add si,cx
add si,dx
; // push si
; // push bx
; // is not rightmost
mov ax,[di+070h]
push ax
push bx
xor ax,ax
add ax,030h
push ax
push bx
call rmpy
add sp,08h
push ax
push dx
push si
push bx
call rposdiv
add sp,08h
mov bx,0c00h
bwmask: and ax,000fh
mov bl,al
mov [di+01ch],bx
nonbw: mov bx,0010h
call nondos
lea bx,[di+0380h]
; // bottom of pixel at 1675
jmp displayloop
mwgrey: xor bx,bx
xor si,si
mov ax,[di+0120h]
mov cx,[di+0122h]
mov dx,[di+0124h]
add si,ax
add si,cx
add si,dx
; // push si
; // push bx
; // is not rightmost
mov ax,[di+070h]
push ax
push bx
xor ax,ax
add ax,006h
push ax
push bx
call rmpy
add sp,08h
push ax
push dx
push si
push bx
call rposdiv
add sp,08h
; // ax is sum / (6*squareofscale)
; // 0 <= ax <= 127
xor si,si
agreyseek: mov dl,[si+greythre]
cmp al,dl
js greysought
inc si
cmp si,0006h
js agreyseek
greysought: mov dx,0c00h
mov dl,[si+greycolorj]
mov [di+001ch],dx
jmp nonbw
bfileclose: mov ax,[di+07ch]
mov [di+010h],ax
mov word [di+01ch],03e00h
call dzdos
bfileskip: mov word [di+07ch],00h
; print text results or numbers here
mov word [di+0d4h],0000h
; [di+0d4h] is textheight 0cc telaftbot 0d0 lastline
mov ax,[di+058h]
sub ax,010h
mov cx,04h
shr ax,cl
mov [di+0d0h],ax
mov cx,[di+0cch]
mov [di+0d8h],cx
; d8 currtext = telaftbot
sub ax,cx
jb xcreenclose
js xcreenclose
jmp noneenclose
xcreenclose: jmp screenclose
noneenclose: inc ax
mov [di+0d4h],ax
; d4 textheight=(telastline-telaftbot)+1
lea ax,[numerival]
push ax
call prints
add sp,02h
; 1 beginning of repeatable number to text
xor si,si
; [di+????h] dx is integer to print
mov dx,[di+0392h]
; ,??h width to cx
mov cx,04h
; ,??h starting column to ax
mov ax,03h
push dx
push si
push cx
push ax
call inttochar
add sp,0008h
; bottom of repeatable number to text
; 2 beginning of repeatable number to text
xor si,si
; [di+????h] dx is integer to print
mov dx,[di+0396h]
; ,??h width to cx
mov cx,04h
; ,??h starting column to ax
mov ax,0bh
push dx
push si
push cx
push ax
call inttochar
add sp,0008h
; bottom of repeatable number to text ------
; 3 beginning of repeatable number to text
xor si,si
; [di+????h] dx is integer to print
mov dx,[di+039ch]
; ,??h width to cx
mov cx,02h
; ,??h starting column to ax
mov ax,013h
push dx
push si
push cx
push ax
call inttochar
add sp,0008h
; bottom of repeatable number to text ------
; 4 beginning of repeatable number to text
xor si,si
; [di+????h] dx is integer to print
mov dx,[di+06ch]
; ,??h width to cx
mov cx,01h
; ,??h starting column to ax
mov ax,019h
push dx
push si
push cx
push ax
call inttochar
add sp,0008h
; bottom of repeatable number to text ------
cmp word [di+03aeh],0000h
jz biznumerib
; 5 beginning of repeatable number to text
xor si,si
; [di+????h] dx is integer to print
mov dx,[di+03aeh]
; ,??h width to cx
mov cx,03h
; ,??h starting column to ax
mov ax,01eh
push dx
push si
push cx
push ax
call inttochar
add sp,0008h
; bottom of repeatable number to text ------
biznumerib: xor si,si
; 6 beginning of repeatable number to text
; [di+????h] dx is integer to print
mov dx,[di+00e4h]
; ,??h width to cx
mov cx,02h
dec cx
; ,??h starting column to ax
mov ax,022h
push dx
push si
push cx
push ax
call inttochar
add sp,0008h
; bottom of repeatable number to text ------
xor si,si
; 7 beginning of repeatable number to text
; [di+????h] dx is integer to print
mov dx,[di+007ah]
; ,??h width to cx
mov cx,05h
dec cx
; ,??h starting column to ax
mov ax,024h
push dx
push si
push cx
push ax
call inttochar
add sp,0008h
; bottom of repeatable number to text ------
diznumerib: call displayline
lea dx,[ondkviewfn]
push dx
call prints
add sp,02h
mov cx,0000h
mov si,di
diznumerid: mov dl,[si+0200h]
cmp dl,021h
js diznumerih
mov [si+01a0h],dl
inc si
inc cx
cmp cx,0028h
js diznumerid
diznumerih: call displayline
help: lea ax,[enterfn]
push ax
call prints
add sp,02h
call displayline
; // one line
lea ax,[ninetwo]
push ax
call prints
add sp,02h
call displayline
; // one line
lea ax,[qrhlist]
push ax
call prints
add sp,02h
call displayline
lea ax,[ccrlist]
push ax
call prints
add sp,02h
call displayline
lea ax,[listof14]
push ax
call prints
add sp,02h
call displayline
lea ax,[listfive]
push ax
call prints
add sp,02h
call displayline
lea ax,[listdf1]
push ax
call prints
add sp,02h
call displayline
lea ax,[listdf2]
push ax
call prints
add sp,02h
call displayline
lea ax,[rnameis]
push ax
call prints
add sp,02h
call displayline
lea ax,[ninetwo]
push ax
call prints
add sp,02h
call displayline
lea ax,[ninetwo]
push ax
call prints
add sp,02h
call displayline
; finished printing line of numbers
screenclose: cmp word [di+050h],0012h
jnz alrebdyscrc
; unconditionally continue regardless of screen type
alrebdyscrc: call clearhdr
call keysub
mov [di+0dch],ax
cmp ax,01bh
jnz keynorm
jmp keyisqr
keynorm: cmp ax,071h
jz keyisqr
cmp ax,051h
jnz keynotq
keyisqr: jmp keyisq
keynotq: cmp ax,072h
jnz notr
keyisr: jmp dkfopen
notr: cmp ax,052h
jz keyisr
cmp ax,043h
jz keyisc
cmp ax,063h
jz keyisc
cmp ax,047h
jz keyisg
cmp ax,067h
jz keyisg
jmp kcwithlh
keyisg: mov dx,0001h
and dx,[di+007ah]
jz keybotg
mov dx,05h
mov ax,[di+00e4h]
cmp ax,05h
jns keygkeep
cmp ax,01h
js keygkeep
mov dx,ax
keygkeep: mov ax,0001h
keygloop: dec dx
js keygtran
add ax,ax
jmp keygloop
keygtran: xor[di+007ah],ax
keybotg: jmp dkfopen
keyisc: mov ax,[di+00e4h]
and ax,00ffh
jz jcwithlh
cmp ax,0005h
jz jcwithlh
jmp kcwithlh
jcwithlh: mov ax,0001h
xor [di+007ah],ax
and ax,[di+007ah]
jz setmono
jmp setcolor
setmono: mov bx,0000h
; cut top of to monochrome
; ----
mov ax,0101ah
call bwten
mov [di+0078h],bx
mov bx,0000h
iisplaybwpr: mov ax,01015h
push bx
call bwten
pop bx
mov [bx+di+0128h],cl
mov [bx+di+0138h],ch
mov [bx+di+0148h],dl
mov [bx+di+0158h],dh
add bx,0001h
cmp bx,0010h
js iisplaybwpr
mov ax,01013h
mov bx,0100h
call bwten
mov ax,01013h
mov bx,0001h
call bwten
mov bx,0000h
irsplaybwpr: mov al,[bx+cstmonolist];
mov ch,al
mov cl,al
mov dh,al
mov dl,al
mov ax,01010h
push bx
call bwten
pop bx
add bx,0001h
cmp bx,0010h
js irsplaybwpr
lea bx,[di+0380h]
; bottom of cut to monochrome ..
jmp keyisr
setcolor: mov bx,0000h
; top of restore colors
mov bh,[di+0078h]
mov ax,01013h
call bwten
mov bx,0001h
mov bh,[di+0079h]
mov ax,01013h
call bwten
; bottom of mode part
mov bx,0000h
ubwrestcol: mov ax,01010h
mov cl,[bx+di+0128h]
mov ch,[bx+di+0138h]
mov dl,[bx+di+0148h]
mov dh,[bx+di+0158h]
push bx
call bwten
pop bx
add bx,01h
cmp bx,0010h
js ubwrestcol
lea bx,[di+0380h]
; bottom of restore colors ..
jmp keyisr
kcwithlh: cmp ax,068h
jnz noth
keyish: mov dx,0006h
push dx
call clearpage
add sp,02h
mov word [di+00d8h],0000h
jmp help
noth: cmp ax,031h
js nothh
cmp ax,036h
jns nothh
sub ax,030h
mov [di+0e4h],ax
cmp word [di+00e0h],0005h
jnz skiphclry
mov ax,0004h
push ax
call clearpage
add sp,02h
skiphclry: mov si,[di+00e4h]
mov [di+00e0h],si
sub si,0001h
add si,si
add si,si
add si,si
lea ax,[screensiztbl]
add si,ax
mov ax,[si+00h]
mov [di+054h],ax
mov ax,[si+02h]
mov [di+058h],ax
mov ax,[si+04h]
mov [di+05ch],ax
mov ax,[si+06h]
mov [di+060h],ax
jmp keyish
nothh: cmp ax,048h
jz keyish
cmp ax,06ch
jnz keyisnotl
keyisl: mov word [di+00e8h],0000h
mov word [di+00d8h],0000h
mov ax,0006h
push ax
call clearpage
add sp,02h
lea ax,[enterfn]
push ax
call prints
add sp,02h
call displayline
call akeyline
filenameis: call clearhdr
call copytlfn
jmp dkfopen
; need top
keyisnotl: cmp ax,04ch
jz keyisl
cmp ax,004fh
jz keyisl
cmp ax,006fh
jz keyisl
cmp ax,003bh
jnz notfirstb
mov word [di+00e8h],0000h
jmp keyisf2
notfirstb: cmp ax,003ch
jz keyisf2
cmp ax,002ch
jnz notsecondb
keyisf2: call findnextfn
cmp word [di+00e8h],0000h
jz notsecondb
jmp filenameis
notsecondb: jmp keyish
keyisq: cmp word [di+0050h],0012h
jz alreadyscrc
mov bx,0001h
and bx,[di+007ah]
jnz keyiscoles
; top of restore colors
mov bx,0000h
; top of restore colors
mov bh,[di+0078h]
mov ax,01013h
call bwten
mov bx,0001h
mov bh,[di+0079h]
mov ax,01013h
call bwten
; bottom of mode part
mov bx,0000h
bwrestcol: mov ax,01010h
mov cl,[bx+di+0128h]
mov ch,[bx+di+0138h]
mov dl,[bx+di+0148h]
mov dh,[bx+di+0158h]
push bx
call bwten
pop bx
add bx,01h
cmp bx,0010h
js bwrestcol
lea bx,[di+0380h]
; bottom of restore colors ..
keyiscoles: mov word [di+010h],00h
mov word [di+01ch],0003h
mov bx,0010h
call nondos
alreadyscrc: lea bx,[di+0380h]
retf
phaseone db 090h,090h,090h,090h
screensiztbl dw 0140h,00f0h,0000h,0000h
dw 0140h,00f0h,0140h,0000h
dw 0140h,00f0h,0000h,00f0h
dw 0140h,00f0h,0140h,00f0h
dw 0280h,01e0h,0000h,0000h
binladchk db 080h,040h,020h,010h
db 008h,004h,002h,001h
threshlist db 058h,058h,058h,000h
db 094h,094h,094h,000h
db 0a8h,0a8h,0a8h,000h
db 06ch,06ch,06ch,000h
; end of list of regular thresholds
greythre db 012h,024h,040h,070h,0c0h,0e0h
greycolorj db 00h,04h,06h,07h,0ch,0eh,0fh,00h
filespec db "*.BMP"
db 00h,00h,00h,00h,00h,00h,00h
db "$$$$"
ondkviewfn db " ON ANTI-DRAFT DKVIEW2 $$$$"
enterfn db " o Enter filename ending with .bmp $$$$"
numerival db "W ---- H ---- B -- 1/- U DOS $$$$$"
ninetwo db " Vote against the U.S. military draft.$$"
qrhlist db "q quit h help c color or mono $$$"
ccrlist db "g grayscale during color r redraw $$"
listof14 db "1 2 3 4 choose a small screen 1 2$$"
listfive db "5 choose entire large screen 3 4$$"
listdf1 db 03bh
db " F1 find first bitmap file *.BMP $$$$"
listdf2 db "< F2 , find next bitmap file *.BMP $$$$"
rnameis db "16-bit *.bmp viewer program for old DOS$"
; bottom of strings
cstmonolist db 01eh,020h,022h,024h,026h,028h,02ah,02ch
db 02eh,030h,032h,034h,036h,038h,03ah,03ch
; 6*6 character on 8*8 partition. Needs each line
; repeated on 8*16 systems
fontbase db 00h,00h,00h,00h,00h,00h,00h,00h
db 00h,00h,00h,00h,00h,00h,00h,00h
db 00h,00h,00h,00h,00h,00h,00h,00h
db 00h,00h,00h,00h,00h,00h,00h,00h
db 00h,00h,00h,00h,00h,00h,00h,00h
db 00h,00h,00h,00h,00h,00h,00h,00h
db 00h,00h,00h,00h,00h,00h,00h,00h
db 00h,00h,00h,00h,00h,00h,00h,00h
db 00h,00h,00h,00h,00h,00h,00h,00h
db 00h,00h,00h,00h,00h,00h,00h,00h
db 00h,00h,00h,00h,00h,00h,00h,00h
db 00h,00h,00h,00h,00h,00h,00h,00h
db 00h,00h,00h,00h,00h,00h,00h,00h
db 00h,00h,00h,00h,00h,00h,00h,00h
db 00h,00h,00h,00h,00h,00h,00h,00h
db 00h,00h,00h,00h,00h,00h,00h,00h
db 00h,00h,00h,00h,00h,00h,00h,00h
db 00h,00h,00h,00h,00h,00h,00h,00h
db 00h,00h,00h,00h,00h,00h,00h,00h
db 00h,00h,00h,00h,00h,00h,00h,00h
db 00h,00h,00h,00h,00h,00h,00h,00h
db 00h,00h,00h,00h,00h,00h,00h,00h
db 00h,00h,00h,00h,00h,00h,00h,00h
db 00h,00h,00h,00h,00h,00h,00h,00h
db 00h,00h,00h,00h,00h,00h,00h,00h
db 00h,00h,00h,00h,00h,00h,00h,00h
db 00h,00h,00h,00h,00h,00h,00h,00h
db 00h,00h,00h,00h,00h,00h,00h,00h
db 00h,00h,00h,00h,00h,00h,00h,00h
db 00h,00h,00h,00h,00h,00h,00h,00h
db 00h,00h,00h,00h,00h,00h,00h,00h
db 00h,00h,00h,00h,00h,00h,00h,00h
fontblan: db 2G00000000, 2G00000000,
db 2G00000000, 2G00000000
db 2G00000000, 2G00000000, 2G00000000, 2G00000000
db 2G00000000, 2G00011000, 2G00011000, 2G00011000
db 2G00011000, 2G00000000, 2G00011000, 2G00000000
db 2G00000000, 2G00100100, 2G00110110, 2G00000000
db 2G00000000, 2G00000000, 2G00000000, 2G00000000
db 2G00000000, 2G00100100, 2G01111110, 2G00100100
db 2G00100100, 2G01111110, 2G00100100, 2G00000000
db 2G00000000, 2G00111100, 2G01001000, 2G01001000
db 2G01111100, 2G00001010, 2G01111100, 2G00000000
db 2G00000000, 2G01110010, 2G01010100, 2G01111110
db 2G00101010, 2G01001110, 2G00000000, 2G00000000
db 2G00000000, 2G00011100, 2G00010100, 2G00111100
db 2G01100110, 2G01100010, 2G01111110, 2G00000000
db 2G00000000, 2G00011000, 2G00001000, 2G00000000
db 2G00000000, 2G00000000, 2G00000000, 2G00000000
db 2G00000000, 2G00001100, 2G00011000, 2G00110000
db 2G00110000, 2G00011000, 2G00001100, 2G00000000
db 2G00000000, 2G00110000, 2G00011000, 2G00001100
db 2G00001100, 2G00011000, 2G00110000, 2G00000000
db 2G00000000, 2G00010000, 2G01010100, 2G00111000
db 2G00111000, 2G01010100, 2G00010000, 2G00000000
db 2G00000000, 2G00011000, 2G00011000, 2G01111110
db 2G01111110, 2G00011000, 2G00011000, 2G00000000
db 2G00000000, 2G00000000, 2G00000000, 2G00000000
db 2G00000000, 2G00000110, 2G00000010, 2G00000000
db 2G00000000, 2G00000000, 2G00000000, 2G00111110
db 2G00111110, 2G00000000, 2G00000000, 2G00000000
db 2G00000000, 2G00000000, 2G00000000, 2G00000000
db 2G00000000, 2G00000000, 2G00000010, 2G00000000
db 2G00000000, 2G00000110, 2G00001100, 2G00011000
db 2G00011000, 2G00110000, 2G01100000, 2G00000000
db 2G00000000, 2G01111110, 2G01000010, 2G01000010
db 2G01000010, 2G01000010, 2G01111110, 2G00000000
db 2G00000000, 2G00000110, 2G00000110, 2G00000110
db 2G00000110, 2G00000110, 2G00000110, 2G00000000
db 2G00000000, 2G01111110, 2G00000010, 2G00000010
db 2G01111110, 2G01000000, 2G01111110, 2G00000000
db 2G00000000, 2G01111110, 2G00000010, 2G01111110
db 2G01111110, 2G00000010, 2G01111110, 2G00000000
db 2G00000000, 2G01000010, 2G01000010, 2G01000010
db 2G01111110, 2G00000010, 2G00000010, 2G00000000
db 2G00000000, 2G01111110, 2G01000000, 2G01000000
db 2G01111110, 2G00000010, 2G01111110, 2G00000000
db 2G00000000, 2G01111110, 2G01000000, 2G01000000
db 2G01111110, 2G01000010, 2G01111110, 2G00000000
db 2G00000000, 2G01111110, 2G00000010, 2G00000010
db 2G00000010, 2G00000010, 2G00000010, 2G00000000
db 2G00000000, 2G01111110, 2G01000010, 2G01000010
db 2G01111110, 2G01000010, 2G01111110, 2G00000000
db 2G00000000, 2G01111110, 2G01000010, 2G01000010
db 2G01111110, 2G00000010, 2G01111110, 2G00000000
db 2G00000000, 2G00000000, 2G00000100, 2G00000000
db 2G00000000, 2G00000100, 2G00000000, 2G00000000
db 2G00000000, 2G00000000, 2G00000110, 2G00000000
db 2G00000000, 2G00000010, 2G00001100, 2G00000000
db 2G00000000, 2G00000110, 2G00011000, 2G01100000
db 2G00011000, 2G00000110, 2G00000000, 2G00000000
db 2G00000000, 2G00000000, 2G01111110, 2G00000000
db 2G00000000, 2G01111110, 2G00000000, 2G00000000
db 2G00000000, 2G01100000, 2G00011000, 2G00000110
db 2G00011000, 2G01100000, 2G00000000, 2G00000000
db 2G00000000, 2G00011100, 2G01100010, 2G01000100
db 2G00001000, 2G00000000, 2G00001000, 2G00000000
db 2G00000000, 2G01111110, 2G01000010, 2G01010110
db 2G01010110, 2G01000010, 2G00000000, 2G00000000
db 2G00000000, 2G01111110, 2G01000010, 2G01000010
db 2G01111110, 2G01000010, 2G01000010, 2G00000000
db 2G00000000, 2G01111000, 2G01000110, 2G01000110
db 2G01111000, 2G01000110, 2G01111000, 2G00000000
db 2G00000000, 2G01111110, 2G01000000, 2G01000000
db 2G01000000, 2G01000000, 2G01111110, 2G00000000
db 2G00000000, 2G01110000, 2G01001100, 2G01000110
db 2G01000110, 2G01001100, 2G01110000, 2G00000000
db 2G00000000, 2G01111110, 2G01000000, 2G01000000
db 2G01111110, 2G01000000, 2G01111110, 2G00000000
db 2G00000000, 2G01111110, 2G01000000, 2G01000000
db 2G01111110, 2G01000000, 2G01000000, 2G00000000
db 2G00000000, 2G01111000, 2G01000110, 2G01000000
db 2G01011110, 2G01000110, 2G01111000, 2G00000000
db 2G00000000, 2G01000010, 2G01000010, 2G01111110
db 2G01111110, 2G01000010, 2G01000010, 2G00000000
db 2G00000000, 2G00111100, 2G00011000, 2G00011000
db 2G00011000, 2G00011000, 2G00111100, 2G00000000
db 2G00000000, 2G00111100, 2G00011000, 2G00011000
db 2G00011000, 2G01001100, 2G01111100, 2G00000000
db 2G00000000, 2G01000110, 2G01011000, 2G01100000
db 2G01011000, 2G01000110, 2G00000000, 2G00000000
db 2G00000000, 2G01000000, 2G01000000, 2G01000000
db 2G01000000, 2G01000000, 2G01111110, 2G00000000
db 2G00000000, 2G01111110, 2G01011010, 2G01011010
db 2G01001010, 2G01010010, 2G01001010, 2G00000000
db 2G00000000, 2G01000010, 2G01100010, 2G01010010
db 2G01001010, 2G01000110, 2G01000010, 2G00000000
db 2G00000000, 2G00011110, 2G00100010, 2G01000010
db 2G01000100, 2G01001000, 2G01111000, 2G00000000
db 2G00000000, 2G01111110, 2G01000010, 2G01000010
db 2G01111110, 2G01000000, 2G01000000, 2G00000000
db 2G00000000, 2G00011110, 2G00100010, 2G01000010
db 2G01001000, 2G01010100, 2G01110010, 2G00000000
db 2G00000000, 2G01111110, 2G01000010, 2G01111110
db 2G01010000, 2G01001000, 2G01000100, 2G00000000
db 2G00000000, 2G01110000, 2G01000000, 2G01110000
db 2G00001110, 2G00000010, 2G00001110, 2G00000000
db 2G00000000, 2G01111110, 2G00011000, 2G00011000
db 2G00011000, 2G00011000, 2G00011000, 2G00000000
db 2G00000000, 2G01000010, 2G01000010, 2G01000010
db 2G01000010, 2G01000010, 2G01111110, 2G00000000
db 2G00000000, 2G01000010, 2G01000010, 2G00100100
db 2G00100100, 2G00011000, 2G00000000, 2G00000000
db 2G00000000, 2G01001010, 2G01001100, 2G00101000
db 2G00110000, 2G00100000, 2G00000000, 2G00000000
db 2G00000000, 2G01000010, 2G00100100, 2G00011000
db 2G00100100, 2G01000010, 2G00000000, 2G00000000
db 2G00000000, 2G01000010, 2G00100100, 2G00011000
db 2G00011000, 2G00011000, 2G00011000, 2G00000000
db 2G00000000, 2G00011110, 2G00000100, 2G00010000
db 2G01000000, 2G01111000, 2G00000000, 2G00000000
db 2G00000000, 2G01111000, 2G01000000, 2G01000000
db 2G01000000, 2G01000000, 2G01111000, 2G00000000
db 2G00000000, 2G01000000, 2G00100000, 2G00010000
db 2G00001000, 2G00000100, 2G00000010, 2G00000000
db 2G00000000, 2G00001110, 2G00000010, 2G00000010
db 2G00000010, 2G00000010, 2G00001110, 2G00000000
db 2G00000000, 2G00011000, 2G00100100, 2G01000010
db 2G00000000, 2G00000000, 2G00000000, 2G00000000
db 2G00000000, 2G00000000, 2G00000000, 2G00000000
db 2G00000000, 2G00000000, 2G01111110, 2G00000000
db 2G00000000, 2G01000000, 2G01100000, 2G00000000
db 2G00000000, 2G00000000, 2G00000000, 2G00000000
db 2G00000000, 2G00000000, 2G00111110, 2G00000010
db 2G00111110, 2G00100010, 2G00111110, 2G00000000
db 2G00000000, 2G00000000, 2G00100000, 2G00100000
db 2G00111110, 2G00100010, 2G00111110, 2G00000000
db 2G00000000, 2G00000000, 2G00000000, 2G00111110
db 2G00100000, 2G00100000, 2G00111110, 2G00000000
db 2G00000000, 2G00000000, 2G00000010, 2G00000010
db 2G00111110, 2G00100010, 2G00111110, 2G00000000
db 2G00000000, 2G00000000, 2G00111110, 2G00100010
db 2G00111110, 2G00100000, 2G00111110, 2G00000000
db 2G00000000, 2G00000000, 2G00111100, 2G00100000
db 2G00111110, 2G00100000, 2G00100000, 2G00000000
db 2G00000000, 2G00000000, 2G00111110, 2G00100100
db 2G00111000, 2G00001000, 2G00011000, 2G00000000
db 2G00000000, 2G00000000, 2G00100000, 2G00100000
db 2G00111110, 2G00100010, 2G00100010, 2G00000000
db 2G00000000, 2G00000000, 2G00001000, 2G00000000
db 2G00001000, 2G00001000, 2G00001000, 2G00000000
db 2G00000000, 2G00000000, 2G00001000, 2G00000000
db 2G00001000, 2G00001000, 2G00111000, 2G00000000
db 2G00000000, 2G00000000, 2G00100100, 2G00101000
db 2G00110000, 2G00101000, 2G00100100, 2G00000000
db 2G00000000, 2G00000000, 2G00000000, 2G00010000
db 2G00010000, 2G00010000, 2G00011110, 2G00000000
db 2G00000000, 2G00000000, 2G01100000, 2G01010000
db 2G01001110, 2G01001010, 2G01000010, 2G00000000
db 2G00000000, 2G00000000, 2G00100010, 2G00110010
db 2G00101010, 2G00100110, 2G00100010, 2G00000000
db 2G00000000, 2G00000000, 2G00000000, 2G00111100
db 2G00100100, 2G00100100, 2G00111100, 2G00000000
db 2G00000000, 2G00000000, 2G00111100, 2G00100100
db 2G00011100, 2G00100000, 2G00100000, 2G00000000
db 2G00000000, 2G00000000, 2G00111100, 2G00100100
db 2G00111000, 2G00001000, 2G00001110, 2G00000000
db 2G00000000, 2G00000000, 2G00000000, 2G00011110
db 2G00010000, 2G00010000, 2G00010000, 2G00000000
db 2G00000000, 2G00000000, 2G00111000, 2G00100000
db 2G00111110, 2G00000010, 2G00001110, 2G00000000
db 2G00000000, 2G00000000, 2G00000000, 2G00001000
db 2G00111110, 2G00001000, 2G00001000, 2G00000000
db 2G00000000, 2G00000000, 2G00000000, 2G00100100
db 2G00100100, 2G00100100, 2G00111100, 2G00000000
db 2G00000000, 2G00000000, 2G00000000, 2G00100010
db 2G00010100, 2G00001000, 2G00000000, 2G00000000
db 2G00000000, 2G00000000, 2G00010010, 2G00001010
db 2G00101110, 2G00101000, 2G00010000, 2G00000000
db 2G00000000, 2G00000000, 2G00100010, 2G00010100
db 2G00001000, 2G00010100, 2G00100010, 2G00000000
db 2G00000000, 2G00000000, 2G00100010, 2G00010100
db 2G00001000, 2G00001000, 2G00001000, 2G00000000
db 2G00000000, 2G00000000, 2G00011110, 2G00000100
db 2G00000100, 2G00001000, 2G00011110, 2G00000000
db 2G00000000, 2G00000000, 2G00001110, 2G00010000
db 2G00110000, 2G00010000, 2G00001110, 2G00000000
db 2G00000000, 2G00000000, 2G00010000, 2G00010000
db 2G00000000, 2G00010000, 2G00010000, 2G00000000
db 2G00000000, 2G00000000, 2G00111000, 2G00000100
db 2G00000110, 2G00000100, 2G00111000, 2G00000000
db 2G00000000, 2G00000000, 2G00111000, 2G00101010
db 2G00001110, 2G00000000, 2G00000000, 2G00000000
db 2G00000000, 2G00000000, 2G00001000, 2G00010100
db 2G00100010, 2G00100010, 2G00111110, 2G00000000
; 00 to 01fh zeroed out
; 020 - 07fh normal ascii alphanumeric
; fontbot.txt 8*128 080h - 0ffh 1024 bytes
db 00h,00h,00h,00h,00h,00h,00h,00h
db 00h,00h,00h,00h,00h,00h,00h,00h
db 00h,00h,00h,00h,00h,00h,00h,00h
db 00h,00h,00h,00h,00h,00h,00h,00h
db 00h,00h,00h,00h,00h,00h,00h,00h
db 00h,00h,00h,00h,00h,00h,00h,00h
db 00h,00h,00h,00h,00h,00h,00h,00h
db 00h,00h,00h,00h,00h,00h,00h,00h
db 00h,00h,00h,00h,00h,00h,00h,00h
db 00h,00h,00h,00h,00h,00h,00h,00h
db 00h,00h,00h,00h,00h,00h,00h,00h
db 00h,00h,00h,00h,00h,00h,00h,00h
db 00h,00h,00h,00h,00h,00h,00h,00h
db 00h,00h,00h,00h,00h,00h,00h,00h
db 00h,00h,00h,00h,00h,00h,00h,00h
db 00h,00h,00h,00h,00h,00h,00h,00h
db 00h,00h,00h,00h,00h,00h,00h,00h
db 00h,00h,00h,00h,00h,00h,00h,00h
db 00h,00h,00h,00h,00h,00h,00h,00h
db 00h,00h,00h,00h,00h,00h,00h,00h
db 00h,00h,00h,00h,00h,00h,00h,00h
db 00h,00h,00h,00h,00h,00h,00h,00h
db 00h,00h,00h,00h,00h,00h,00h,00h
db 00h,00h,00h,00h,00h,00h,00h,00h
db 00h,00h,00h,00h,00h,00h,00h,00h
db 00h,00h,00h,00h,00h,00h,00h,00h
db 00h,00h,00h,00h,00h,00h,00h,00h
db 00h,00h,00h,00h,00h,00h,00h,00h
db 00h,00h,00h,00h,00h,00h,00h,00h
db 00h,00h,00h,00h,00h,00h,00h,00h
db 00h,00h,00h,00h,00h,00h,00h,00h
db 00h,00h,00h,00h,00h,00h,00h,00h
db 00h,00h,00h,00h,00h,00h,00h,00h
db 00h,00h,00h,00h,00h,00h,00h,00h
db 00h,00h,00h,00h,00h,00h,00h,00h
db 00h,00h,00h,00h,00h,00h,00h,00h
db 00h,00h,00h,00h,00h,00h,00h,00h
db 00h,00h,00h,00h,00h,00h,00h,00h
db 00h,00h,00h,00h,00h,00h,00h,00h
db 00h,00h,00h,00h,00h,00h,00h,00h
db 00h,00h,00h,00h,00h,00h,00h,00h
db 00h,00h,00h,00h,00h,00h,00h,00h
db 00h,00h,00h,00h,00h,00h,00h,00h
db 00h,00h,00h,00h,00h,00h,00h,00h
db 00h,00h,00h,00h,00h,00h,00h,00h
db 00h,00h,00h,00h,00h,00h,00h,00h
db 00h,00h,00h,00h,00h,00h,00h,00h
db 00h,00h,00h,00h,00h,00h,00h,00h
db 00h,00h,00h,00h,00h,00h,00h,00h
db 00h,00h,00h,00h,00h,00h,00h,00h
db 00h,54h,2ah,54h,2ah,54h,2ah,00h
db 00h,08h,08h,08h,08h,08h,08h,00h
db 00h,00h,00h,00h,00h,00h,00h,00h
db 00h,00h,00h,00h,00h,00h,00h,00h
db 00h,00h,00h,00h,00h,00h,00h,00h
db 00h,00h,00h,00h,00h,00h,00h,00h
db 00h,00h,00h,00h,00h,00h,00h,00h
db 00h,12h,72h,12h,72h,12h,12h,00h
db 00h,24h,24h,24h,24h,24h,24h,00h
db 00h,00h,00h,7ch,04h,64h,24h,00h
db 00h,0ah,7ah,02h,7eh,00h,00h,00h
db 00h,00h,00h,00h,00h,00h,00h,00h
db 00h,00h,00h,00h,00h,00h,00h,00h
db 00h,00h,00h,70h,10h,10h,10h,00h
db 00h,10h,10h,10h,1eh,00h,00h,00h
db 00h,00h,00h,00h,00h,00h,00h,00h
db 00h,00h,00h,00h,00h,00h,00h,00h
db 00h,08h,08h,0eh,08h,08h,08h,00h
db 00h,00h,00h,7eh,00h,00h,00h,00h
db 00h,00h,00h,00h,00h,00h,00h,00h
db 00h,00h,00h,00h,00h,00h,00h,00h
db 00h,00h,00h,00h,00h,00h,00h,00h
db 00h,50h,5eh,40h,7eh,00h,00h,00h
db 00h,00h,00h,3eh,20h,27h,24h,00h
db 00h,00h,00h,00h,00h,00h,00h,00h
db 00h,00h,00h,00h,00h,00h,00h,00h
db 00h,00h,00h,00h,00h,00h,00h,00h
db 00h,00h,7eh,00h,7eh,00h,7eh,00h
db 00h,00h,00h,00h,00h,00h,00h,00h
db 00h,00h,00h,00h,00h,00h,00h,00h
db 00h,00h,00h,00h,00h,00h,00h,00h
db 00h,00h,00h,00h,00h,00h,00h,00h
db 00h,00h,00h,00h,00h,00h,00h,00h
db 00h,00h,00h,00h,00h,00h,00h,00h
db 00h,00h,00h,00h,00h,00h,00h,00h
db 00h,00h,00h,00h,00h,00h,00h,00h
db 00h,00h,00h,00h,00h,00h,00h,00h
db 00h,00h,00h,00h,00h,00h,00h,00h
db 00h,00h,00h,00h,00h,00h,00h,00h
db 00h,10h,10h,10h,70h,00h,00h,00h
db 00h,00h,00h,1eh,10h,10h,10h,00h
db 00h,7eh,7eh,7eh,7eh,7eh,7eh,00h
db 00h,00h,00h,00h,00h,00h,00h,00h
db 00h,00h,00h,00h,00h,00h,00h,00h
db 00h,00h,00h,00h,00h,00h,00h,00h
db 00h,00h,00h,00h,00h,00h,00h,00h
db 00h,00h,00h,00h,00h,00h,00h,00h
db 00h,00h,00h,00h,00h,00h,00h,00h
db 00h,00h,00h,00h,00h,00h,00h,00h
db 00h,00h,00h,00h,00h,00h,00h,00h
db 00h,00h,00h,00h,00h,00h,00h,00h
db 00h,00h,00h,00h,00h,00h,00h,00h
db 00h,00h,00h,00h,00h,00h,00h,00h
db 00h,00h,00h,00h,00h,00h,00h,00h
db 00h,00h,00h,00h,00h,00h,00h,00h
db 00h,00h,00h,00h,00h,00h,00h,00h
db 00h,00h,00h,00h,00h,00h,00h,00h
db 00h,00h,00h,00h,00h,00h,00h,00h
db 00h,00h,00h,00h,00h,00h,00h,00h
db 00h,00h,00h,00h,00h,00h,00h,00h
db 00h,00h,00h,00h,00h,00h,00h,00h
db 00h,00h,00h,00h,00h,00h,00h,00h
db 00h,00h,00h,00h,00h,00h,00h,00h
db 00h,00h,00h,00h,00h,00h,00h,00h
db 00h,00h,00h,00h,00h,00h,00h,00h
db 00h,00h,00h,00h,00h,00h,00h,00h
db 00h,00h,00h,00h,00h,00h,00h,00h
db 00h,00h,00h,00h,00h,00h,00h,00h
db 00h,00h,00h,00h,00h,00h,00h,00h
db 00h,00h,00h,00h,00h,00h,00h,00h
db 00h,00h,00h,00h,00h,00h,00h,00h
db 00h,00h,00h,00h,00h,00h,00h,00h
db 00h,00h,00h,00h,00h,00h,00h,00h
db 00h,00h,00h,00h,00h,00h,00h,00h
db 00h,00h,00h,00h,00h,00h,00h,00h
db 00h,00h,00h,00h,00h,00h,00h,00h
db 00h,7eh,66h,66h,66h,66h,7eh,00h
db 00h,00h,00h,00h,00h,00h,00h,00h
; end of big font ( 255 )
db "................xx"
dd 0, 0, 0, 0, 0, 0, 0, 0
dd 0, 0, 0, 0, 0, 0, 0, 0
dd 0, 0, 0, 0, 0, 0, 0, 0
dd 0, 0, 0, 0, 0, 0, 0, 0
dd 0, 0, 0, 0, 0, 0, 0, 0
dd 0, 0, 0, 0, 0, 0, 0, 0
dd 0, 0, 0, 0, 0, 0, 0, 0
dd 0, 0, 0, 0, 0, 0, 0, 0
dd 0, 0, 0, 0, 0, 0, 0, 0
dd 0, 0, 0, 0, 0, 0, 0, 0
dd 0, 0, 0, 0, 0, 0, 0, 0
dd 0, 0, 0, 0, 0, 0, 0, 0
dd 0, 0, 0, 0, 0, 0, 0, 0
dd 0, 0, 0, 0, 0, 0, 0, 0
dd 0, 0, 0, 0, 0, 0, 0, 0
dd 0, 0, 0, 0, 0, 0, 0, 0
dd 0, 0, 0, 0, 0, 0, 0, 0
dd 0, 0, 0, 0, 0, 0, 0, 0
dd 0, 0, 0, 0, 0, 0, 0, 0
dd 0, 0, 0, 0, 0, 0, 0, 0
dd 0, 0, 0, 0, 0, 0, 0, 0
dd 0, 0, 0, 0, 0, 0, 0, 0
dd 0, 0, 0, 0, 0, 0, 0, 0
dd 0, 0, 0, 0, 0, 0, 0, 0
dd 0, 0, 0, 0, 0, 0, 0, 0
dd 0, 0, 0, 0, 0, 0, 0, 0
dd 0, 0, 0, 0, 0, 0, 0, 0
dd 0, 0, 0, 0, 0, 0, 0, 0
dd 0, 0, 0, 0, 0, 0, 0, 0
dd 0, 0, 0, 0, 0, 0, 0, 0
dd 0, 0, 0, 0, 0, 0, 0, 0
dd 0, 0, 0, 0, 0, 0, 0, 0
dd 0, 0, 0, 0, 0, 0, 0, 0
dd 0, 0, 0, 0, 0, 0, 0, 0
dd 0, 0, 0, 0, 0, 0, 0, 0
dd 0, 0, 0, 0, 0, 0, 0, 0
dd 0, 0, 0, 0, 0, 0, 0, 0
dd 0, 0, 0, 0, 0, 0, 0, 0
dd 0, 0, 0, 0, 0, 0, 0, 0
dd 0, 0, 0, 0, 0, 0, 0, 0
dd 0, 0, 0, 0, 0, 0, 0, 0
dd 0, 0, 0, 0, 0, 0, 0, 0
dd 0, 0, 0, 0, 0, 0, 0, 0
dd 0, 0, 0, 0, 0, 0, 0, 0
dd 0, 0, 0, 0, 0, 0, 0, 0
dd 0, 0, 0, 0, 0, 0, 0, 0
dd 0, 0, 0, 0, 0, 0, 0, 0
dd 0, 0, 0, 0, 0, 0, 0, 0
dd 0, 0, 0, 0, 0, 0, 0, 0
dd 0, 0, 0, 0, 0, 0, 0, 0
dd 0, 0, 0, 0, 0, 0, 0, 0
dd 0, 0, 0, 0, 0, 0, 0, 0
dd 0, 0, 0, 0, 0, 0, 0, 0
dd 0, 0, 0, 0, 0, 0, 0, 0
dd 0, 0, 0, 0, 0, 0, 0, 0
dd 0, 0, 0, 0, 0, 0, 0, 0
dd 0, 0, 0, 0, 0, 0, 0, 0
dd 0, 0, 0, 0, 0, 0, 0, 0
dd 0, 0, 0, 0, 0, 0, 0, 0
dd 0, 0, 0, 0, 0, 0, 0, 0
dd 0, 0, 0, 0, 0, 0, 0, 0
dd 0, 0, 0, 0, 0, 0, 0, 0
dd 0, 0, 0, 0, 0, 0, 0, 0
dd 0, 0, 0, 0, 0, 0, 0, 0
dd 0, 0, 0, 0, 0, 0, 0, 0
dd 0, 0, 0, 0, 0, 0, 0, 0
dd 0, 0, 0, 0, 0, 0, 0, 0
dd 0, 0, 0, 0, 0, 0, 0, 0
dd 0, 0, 0, 0, 0, 0, 0, 0
dd 0, 0, 0, 0, 0, 0, 0, 0
dd 0, 0, 0, 0, 0, 0, 0, 0
dd 0, 0, 0, 0, 0, 0, 0, 0
dd 0, 0, 0, 0, 0, 0, 0, 0
dd 0, 0, 0, 0, 0, 0, 0, 0
dd 0, 0, 0, 0, 0, 0, 0, 0
dd 0, 0, 0, 0, 0, 0, 0, 0
dd 0, 0, 0, 0, 0, 0, 0, 0
dd 0, 0, 0, 0, 0, 0, 0, 0
dd 0, 0, 0, 0, 0, 0, 0, 0
dd 0, 0, 0, 0, 0, 0, 0, 0
dd 0, 0, 0, 0, 0, 0, 0, 0
dd 0, 0, 0, 0, 0, 0, 0, 0
dd 0, 0, 0, 0, 0, 0, 0, 0
dd 0, 0, 0, 0, 0, 0, 0, 0
dd 0, 0, 0, 0, 0, 0, 0, 0
dd 0, 0, 0, 0, 0, 0, 0, 0
dd 0, 0, 0, 0, 0, 0, 0, 0
dd 0, 0, 0, 0, 0, 0, 0, 0
dd 0, 0, 0, 0, 0, 0, 0, 0
dd 0, 0, 0, 0, 0, 0, 0, 0
dd 0, 0, 0, 0, 0, 0, 0, 0
dd 0, 0, 0, 0, 0, 0, 0, 0
dd 0, 0, 0, 0, 0, 0, 0, 0
dd 0, 0, 0, 0, 0, 0, 0, 0
dd 0, 0, 0, 0, 0, 0, 0, 0
dd 0, 0, 0, 0, 0, 0, 0, 0
dd 0, 0, 0, 0, 0, 0, 0, 0
dd 0, 0, 0, 0, 0, 0, 0, 0
dd 0, 0, 0, 0, 0, 0, 0, 0
dd 0, 0, 0, 0, 0, 0, 0, 0
dd 0, 0, 0, 0, 0, 0, 0, 0
dd 0, 0, 0, 0, 0, 0, 0, 0
dd 0, 0, 0, 0, 0, 0, 0, 0
dd 0, 0, 0, 0, 0, 0, 0, 0
dd 0, 0, 0, 0, 0, 0, 0, 0
dd 0, 0, 0, 0, 0, 0, 0, 0
dd 0, 0, 0, 0, 0, 0, 0, 0
dd 0, 0, 0, 0, 0, 0, 0, 0
dd 0, 0, 0, 0, 0, 0, 0, 0
dd 0, 0, 0, 0, 0, 0, 0, 0
dd 0, 0, 0, 0, 0, 0, 0, 0
dd 0, 0, 0, 0, 0, 0, 0, 0
dd 0, 0, 0, 0, 0, 0, 0, 0
dd 0, 0, 0, 0, 0, 0, 0, 0
dd 0, 0, 0, 0, 0, 0, 0, 0
dd 0, 0, 0, 0, 0, 0, 0, 0
dd 0, 0, 0, 0, 0, 0, 0, 0
dd 0, 0, 0, 0, 0, 0, 0, 0
dd 0, 0, 0, 0, 0, 0, 0, 0
dd 0, 0, 0, 0, 0, 0, 0, 0
dd 0, 0, 0, 0, 0, 0, 0, 0
dd 0, 0, 0, 0, 0, 0, 0, 0
dd 0, 0, 0, 0, 0, 0, 0, 0
dd 0, 0, 0, 0, 0, 0, 0, 0
dd 0, 0, 0, 0, 0, 0, 0, 0
dd 0, 0, 0, 0, 0, 0, 0, 0
dd 0, 0, 0, 0, 0, 0, 0, 0
dd 0, 0, 0, 0, 0, 0, 0, 0
dd 0, 0, 0, 0, 0, 0, 0, 0
dd 0, 0, 0, 0, 0, 0, 0, 0
dd 0, 0, 0, 0, 0, 0, 0, 0
dd 0, 0, 0, 0, 0, 0, 0, 0
dd 0, 0, 0, 0, 0, 0, 0, 0
dd 0, 0, 0, 0, 0, 0, 0, 0
dd 0, 0, 0, 0, 0, 0, 0, 0
dd 0, 0, 0, 0, 0, 0, 0, 0
dd 0, 0, 0, 0, 0, 0, 0, 0
dd 0, 0, 0, 0, 0, 0, 0, 0
dd 0, 0, 0, 0, 0, 0, 0, 0
dd 0, 0, 0, 0, 0, 0, 0, 0
dd 0, 0, 0, 0, 0, 0, 0, 0
dd 0, 0, 0, 0, 0, 0, 0, 0
dd 0, 0, 0, 0, 0, 0, 0, 0
dd 0, 0, 0, 0, 0, 0, 0, 0
dd 0, 0, 0, 0, 0, 0, 0, 0
dd 0, 0, 0, 0, 0, 0, 0, 0
dd 0, 0, 0, 0, 0, 0, 0, 0
dd 0, 0, 0, 0, 0, 0, 0, 0
dd 0, 0, 0, 0, 0, 0, 0, 0
dd 0, 0, 0, 0, 0, 0, 0, 0
dd 0, 0, 0, 0, 0, 0, 0, 0
dd 0, 0, 0, 0, 0, 0, 0, 0
dd 0, 0, 0, 0, 0, 0, 0, 0
dd 0, 0, 0, 0, 0, 0, 0, 0
dd 0, 0, 0, 0, 0, 0, 0, 0
dd 0, 0, 0, 0, 0, 0, 0, 0
dd 0, 0, 0, 0, 0, 0, 0, 0
dd 0, 0, 0, 0, 0, 0, 0, 0
dd 0, 0, 0, 0, 0, 0, 0, 0
dd 0, 0, 0, 0, 0, 0, 0, 0
dd 0, 0, 0, 0, 0, 0, 0, 0
dd 0, 0, 0, 0, 0, 0, 0, 0
dd 0, 0, 0, 0, 0, 0, 0, 0
dd 0, 0, 0, 0, 0, 0, 0, 0
dd 0, 0, 0, 0, 0, 0, 0, 0
dd 0, 0, 0, 0, 0, 0, 0, 0
dd 0, 0, 0, 0, 0, 0, 0, 0
dd 0, 0, 0, 0, 0, 0, 0, 0
dd 0, 0, 0, 0, 0, 0, 0, 0
dd 0, 0, 0, 0, 0, 0, 0, 0
dd 0, 0, 0, 0, 0, 0, 0, 0
dd 0, 0, 0, 0, 0, 0, 0, 0
dd 0, 0, 0, 0, 0, 0, 0, 0
dd 0, 0, 0, 0, 0, 0, 0, 0
dd 0, 0, 0, 0, 0, 0, 0, 0
dd 0, 0, 0, 0, 0, 0, 0, 0
dd 0, 0, 0, 0, 0, 0, 0, 0
dd 0, 0, 0, 0, 0, 0, 0, 0
dd 0, 0, 0, 0, 0, 0, 0, 0
dd 0, 0, 0, 0, 0, 0, 0, 0
dd 0, 0, 0, 0, 0, 0, 0, 0
dd 0, 0, 0, 0, 0, 0, 0, 0
dd 0, 0, 0, 0, 0, 0, 0, 0
dd 0, 0, 0, 0, 0, 0, 0, 0
dd 0, 0, 0, 0, 0, 0, 0, 0
dd 0, 0, 0, 0, 0, 0, 0, 0
dd 0, 0, 0, 0, 0, 0, 0, 0
dd 0, 0, 0, 0, 0, 0, 0, 0
dd 0, 0, 0, 0, 0, 0, 0, 0
dd 0, 0, 0, 0, 0, 0, 0, 0
dd 0, 0, 0, 0, 0, 0, 0, 0
dd 0, 0, 0, 0, 0, 0, 0, 0
dd 0, 0, 0, 0, 0, 0, 0, 0
dd 0, 0, 0, 0, 0, 0, 0, 0
dd 0, 0, 0, 0, 0, 0, 0, 0
dd 0, 0, 0, 0, 0, 0, 0, 0
dd 0, 0, 0, 0, 0, 0, 0, 0
dd 0, 0, 0, 0, 0, 0, 0, 0
dd 0, 0, 0, 0, 0, 0, 0, 0
dd 0, 0, 0, 0, 0, 0, 0, 0
dd 0, 0, 0, 0, 0, 0, 0, 0
dd 0, 0, 0, 0, 0, 0, 0, 0
dd 0, 0, 0, 0, 0, 0, 0, 0
dd 0, 0, 0, 0, 0, 0, 0, 0
dd 0, 0, 0, 0, 0, 0, 0, 0
dd 0, 0, 0, 0, 0, 0, 0, 0
dd 0, 0, 0, 0, 0, 0, 0, 0
dd 0, 0, 0, 0, 0, 0, 0, 0
dd 0, 0, 0, 0, 0, 0, 0, 0
dd 0, 0, 0, 0, 0, 0, 0, 0
dd 0, 0, 0, 0, 0, 0, 0, 0
dd 0, 0, 0, 0, 0, 0, 0, 0
dd 0, 0, 0, 0, 0, 0, 0, 0
dd 0, 0, 0, 0, 0, 0, 0, 0
dd 0, 0, 0, 0, 0, 0, 0, 0
dd 0, 0, 0, 0, 0, 0, 0, 0
dd 0, 0, 0, 0, 0, 0, 0, 0
dd 0, 0, 0, 0, 0, 0, 0, 0
dd 0, 0, 0, 0, 0, 0, 0, 0
dd 0, 0, 0, 0, 0, 0, 0, 0
dd 0, 0, 0, 0, 0, 0, 0, 0
dd 0, 0, 0, 0, 0, 0, 0, 0
dd 0, 0, 0, 0, 0, 0, 0, 0
dd 0, 0, 0, 0, 0, 0, 0, 0
dd 0, 0, 0, 0, 0, 0, 0, 0
dd 0, 0, 0, 0, 0, 0, 0, 0
dd 0, 0, 0, 0, 0, 0, 0, 0
dd 0, 0, 0, 0, 0, 0, 0, 0
dd 0, 0, 0, 0, 0, 0, 0, 0
dd 0, 0, 0, 0, 0, 0, 0, 0
dd 0, 0, 0, 0, 0, 0, 0, 0
dd 0, 0, 0, 0, 0, 0, 0, 0
dd 0, 0, 0, 0, 0, 0, 0, 0
dd 0, 0, 0, 0, 0, 0, 0, 0
dd 0, 0, 0, 0, 0, 0, 0, 0
dd 0, 0, 0, 0, 0, 0, 0, 0
dd 0, 0, 0, 0, 0, 0, 0, 0
dd 0, 0, 0
db "................xx"
botdkview db 00h,00h
; 000 bmpstart db "BM"
; 002 bfsize db 03eh, 05h, 00h, 00h
; 006 cst2r1 db 00h,00h,00h,00h
; 010 bfoffbits db 03eh,00h,00h,00h
; 014 bisizehdr db 028h,00h,00h,00h
; 018 biwidth db 080h,02h,00h,00h
; 022 biheight db 010h,00h,00h,00h
; 026 biplanes db 01h,00h
; 028 bibitcount db 01h,00h
; 030 bicompression db 00h,00h,00h,00h
; 034 bisize db 00h,05h,00h,00h
; 038 bixmete db 4ch,0eh,00h,00h
; 042 biymete db 4ch,0eh,00h,00h
; 046 biclrused db 00h,00h,00h,00h
; 050 biclrimportant db 00h,00h,00h,00h
; 054 colortable db 00h,00h,00h,00h,0ffh,0ffh,0ffh,00h
; 062 or 114 upside down bitmap.
; This is the last line of this program.

0 new messages