Initial commit
This commit is contained in:
591
devtools/tasmrecover/dreamweb/print.asm
Normal file
591
devtools/tasmrecover/dreamweb/print.asm
Normal file
@@ -0,0 +1,591 @@
|
||||
;Copyright (c) 1990-2012 by Neil Dodwell
|
||||
;Released with permission from Neil Dodwell under GPLv2
|
||||
;See LICENSE file for full license text
|
||||
Printchar proc near
|
||||
|
||||
cmp al,255
|
||||
jz ignoreit
|
||||
push si bx di
|
||||
cmp foreignrelease, 0
|
||||
jz $1
|
||||
sub bx,3
|
||||
$1:
|
||||
push ax
|
||||
sub al,32 ;"A"
|
||||
mov ah,0
|
||||
add ax,charshift
|
||||
call showframe
|
||||
pop ax di bx si
|
||||
cmp kerning,0
|
||||
jnz nokern
|
||||
call kernchars
|
||||
nokern: push cx
|
||||
mov ch,0
|
||||
add di,cx
|
||||
pop cx
|
||||
;dec di
|
||||
ignoreit: ret
|
||||
|
||||
endp
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
Kernchars proc near
|
||||
|
||||
;sub al,13
|
||||
cmp al,"a"
|
||||
jz iskern
|
||||
cmp al,"u"
|
||||
jz iskern
|
||||
ret
|
||||
iskern: cmp ah,"n"
|
||||
jz kernit
|
||||
cmp ah,"t"
|
||||
jz kernit
|
||||
cmp ah,"r"
|
||||
jz kernit
|
||||
cmp ah,"i"
|
||||
jz kernit
|
||||
cmp ah,"l"
|
||||
jz kernit
|
||||
ret
|
||||
kernit: dec cl
|
||||
ret
|
||||
|
||||
endp
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
;------------------------------------------------Proportional text printing----
|
||||
|
||||
|
||||
;Memprint proc near
|
||||
;
|
||||
; call usecharset1
|
||||
;
|
||||
; push ax bx cx dx es ds si di
|
||||
; call deltextline
|
||||
; pop di si ds es dx cx bx ax
|
||||
;
|
||||
; pop si
|
||||
; push cs
|
||||
; pop es
|
||||
; inc si
|
||||
; mov ds,currentset
|
||||
; mov di,textaddressx
|
||||
; mov bx,textaddressy
|
||||
; mov dl,textlen
|
||||
; mov al,0
|
||||
; mov ah,0
|
||||
; call printdirect
|
||||
; push si
|
||||
|
||||
; mov newtextline,1
|
||||
; ret
|
||||
|
||||
; endp
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
;------------------------------------------------Proportional text printing----
|
||||
|
||||
;Print proc near
|
||||
;
|
||||
; pop si
|
||||
; mov bx,[cs:si+2]
|
||||
; mov di,[cs:si+0]
|
||||
; mov dl,[cs:si+4]
|
||||
; add si,6
|
||||
; mov ds,currentset
|
||||
;
|
||||
;printloop2: push bx di dx
|
||||
; push es cs
|
||||
; pop es
|
||||
; call getnumber
|
||||
; pop es
|
||||
; mov ch,0
|
||||
;printloop1: mov ax,[cs:si]
|
||||
; inc si
|
||||
; cmp al,0
|
||||
; jz finishprint
|
||||
; push cx es
|
||||
; call modifychar
|
||||
; call printchar
|
||||
; pop es cx
|
||||
; loop printloop1
|
||||
; pop dx di bx
|
||||
; add bx,linespacing
|
||||
; jmp printloop2
|
||||
|
||||
;finishprint: pop dx di bx
|
||||
; push si
|
||||
; ret
|
||||
|
||||
; endp
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
Printslow proc near
|
||||
|
||||
mov pointerframe,1
|
||||
mov pointermode,3
|
||||
mov ds,charset1
|
||||
printloopslow6: push bx di dx
|
||||
call getnumber
|
||||
|
||||
mov ch,0
|
||||
printloopslow5: push cx si es
|
||||
mov ax,[es:si]
|
||||
push bx cx es si ds
|
||||
if foreign
|
||||
call modifychar
|
||||
endif
|
||||
call printboth
|
||||
pop ds si es cx bx
|
||||
mov ax,[es:si+1]
|
||||
inc si
|
||||
cmp al,0
|
||||
jz finishslow
|
||||
cmp al,":"
|
||||
jz finishslow
|
||||
cmp cl,1
|
||||
jz afterslow
|
||||
push di ds bx cx es si
|
||||
if foreign
|
||||
call modifychar
|
||||
endif
|
||||
mov charshift,91
|
||||
call printboth
|
||||
mov charshift,0
|
||||
pop si es cx bx ds di
|
||||
call waitframes
|
||||
cmp ax,0
|
||||
jz keepgoing
|
||||
cmp ax,oldbutton
|
||||
jnz finishslow2
|
||||
keepgoing: call waitframes
|
||||
noslow: cmp ax,0
|
||||
jz afterslow
|
||||
cmp ax,oldbutton
|
||||
jnz finishslow2 ;used to finish early
|
||||
afterslow: pop es si cx
|
||||
inc si
|
||||
loop printloopslow5
|
||||
|
||||
pop dx di bx
|
||||
add bx,10
|
||||
jmp printloopslow6
|
||||
|
||||
finishslow: pop es si cx dx di bx
|
||||
mov al,0
|
||||
ret
|
||||
|
||||
finishslow2: pop es si cx dx di bx
|
||||
mov al,1
|
||||
ret
|
||||
|
||||
endp
|
||||
|
||||
|
||||
|
||||
Waitframes proc near
|
||||
|
||||
push di bx es si ds
|
||||
call readmouse
|
||||
call showpointer
|
||||
call vsync
|
||||
call dumppointer
|
||||
call delpointer
|
||||
mov ax,mousebutton
|
||||
pop ds si es bx di
|
||||
ret
|
||||
|
||||
endp
|
||||
|
||||
|
||||
|
||||
|
||||
Printboth proc near
|
||||
|
||||
push ax cx bx
|
||||
push di
|
||||
call printchar
|
||||
pop ax
|
||||
push di
|
||||
mov di,ax
|
||||
call multidump
|
||||
pop di
|
||||
pop bx cx ax
|
||||
ret
|
||||
|
||||
endp
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
Printdirect proc near
|
||||
|
||||
mov lastxpos,di
|
||||
mov ds,currentset
|
||||
printloop6: push bx di dx
|
||||
call getnumber
|
||||
mov ch,0
|
||||
printloop5: mov ax,[es:si]
|
||||
inc si
|
||||
cmp al,0
|
||||
jz finishdirct
|
||||
cmp al,":"
|
||||
jz finishdirct
|
||||
push cx es
|
||||
if foreign
|
||||
call modifychar
|
||||
endif
|
||||
call printchar
|
||||
mov lastxpos,di
|
||||
pop es cx
|
||||
loop printloop5
|
||||
pop dx di bx
|
||||
add bx,linespacing
|
||||
jmp printloop6
|
||||
|
||||
finishdirct: pop dx di bx
|
||||
ret
|
||||
|
||||
endp
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
Monprint proc near
|
||||
|
||||
mov kerning,1
|
||||
mov si,bx
|
||||
mov dl,166
|
||||
mov di,monadx
|
||||
mov bx,monady
|
||||
mov ds,tempcharset
|
||||
|
||||
printloop8: push bx di dx
|
||||
call getnumber
|
||||
mov ch,0
|
||||
printloop7: mov al,[es:si]
|
||||
inc si
|
||||
|
||||
cmp al,":"
|
||||
jz finishmon2
|
||||
cmp al,0
|
||||
jz finishmon
|
||||
cmp al,34
|
||||
jz finishmon
|
||||
cmp al,"="
|
||||
jz finishmon
|
||||
cmp al,"%"
|
||||
jnz nottrigger
|
||||
mov ah,[es:si]
|
||||
inc si
|
||||
inc si
|
||||
jmp finishmon
|
||||
nottrigger: push cx es
|
||||
if foreign
|
||||
call modifychar
|
||||
endif
|
||||
call printchar
|
||||
mov curslocx,di
|
||||
mov curslocy,bx
|
||||
mov maintimer,1
|
||||
call printcurs
|
||||
|
||||
call vsync
|
||||
push si dx ds es bx di
|
||||
call lockmon
|
||||
pop di bx es ds dx si
|
||||
call delcurs
|
||||
pop es cx
|
||||
loop printloop7
|
||||
|
||||
finishmon2: pop dx di bx
|
||||
call scrollmonitor
|
||||
mov curslocx,di
|
||||
jmp printloop8
|
||||
|
||||
finishmon: pop dx di bx
|
||||
cmp al,"%"
|
||||
jnz nottrigger2
|
||||
mov lasttrigger,ah
|
||||
nottrigger2: mov curslocx,di
|
||||
call scrollmonitor
|
||||
mov bx,si
|
||||
mov kerning,0
|
||||
ret
|
||||
|
||||
endp
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
Getnumber proc near
|
||||
|
||||
mov cx,0
|
||||
push si bx di ds es
|
||||
mov di,si
|
||||
|
||||
wordloop: push cx dx
|
||||
call getnextword
|
||||
pop dx cx
|
||||
cmp al,1
|
||||
jz endoftext
|
||||
mov al,cl
|
||||
mov ah,0
|
||||
push bx
|
||||
mov bh,0
|
||||
add ax,bx
|
||||
pop bx
|
||||
sub ax,10
|
||||
mov dh,0
|
||||
cmp ax,dx
|
||||
jnc gotoverend
|
||||
add cl,bl
|
||||
add ch,bh
|
||||
jmp wordloop
|
||||
|
||||
gotoverend: mov al,dl
|
||||
and al,1
|
||||
jz notcentre
|
||||
push cx
|
||||
mov al,dl
|
||||
and al,11111110b
|
||||
mov ah,0
|
||||
mov ch,0
|
||||
sub ax,cx
|
||||
add ax,20
|
||||
shr ax,1
|
||||
pop cx
|
||||
pop es ds di bx si
|
||||
add di,ax
|
||||
mov cl,ch
|
||||
ret
|
||||
notcentre: pop es ds di bx si
|
||||
mov cl,ch
|
||||
ret
|
||||
|
||||
|
||||
|
||||
endoftext: mov al,cl
|
||||
mov ah,0
|
||||
push bx
|
||||
mov bh,0
|
||||
add ax,bx
|
||||
pop bx
|
||||
sub ax,10
|
||||
mov dh,0
|
||||
cmp ax,dx
|
||||
jnc gotoverend2
|
||||
add cl,bl
|
||||
add ch,bh
|
||||
|
||||
gotoverend2: mov al,dl
|
||||
and al,1
|
||||
jz notcent2
|
||||
push cx
|
||||
mov al,dl
|
||||
and al,11111110b
|
||||
add al,2
|
||||
mov ah,0
|
||||
mov ch,0
|
||||
add ax,20
|
||||
sub ax,cx
|
||||
shr ax,1
|
||||
pop cx
|
||||
pop es ds di bx si
|
||||
add di,ax
|
||||
mov cl,ch
|
||||
ret
|
||||
notcent2: pop es ds di bx si
|
||||
mov cl,ch
|
||||
ret
|
||||
|
||||
endp
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
Getnextword proc near
|
||||
|
||||
mov bx,0
|
||||
getloop: mov ax,[es:di]
|
||||
inc di
|
||||
inc bh
|
||||
cmp al,":"
|
||||
jz endall
|
||||
cmp al,0
|
||||
jz endall
|
||||
cmp al,32
|
||||
jz endword
|
||||
if foreign
|
||||
call modifychar
|
||||
endif
|
||||
cmp al,255
|
||||
jz getloop
|
||||
push ax
|
||||
sub al,32 ;"A"
|
||||
mov ah,0
|
||||
add ax,charshift
|
||||
add ax,ax
|
||||
mov si,ax
|
||||
add ax,ax
|
||||
add si,ax
|
||||
mov cl,[si+0]
|
||||
pop ax
|
||||
call kernchars
|
||||
add bl,cl
|
||||
;dec bl
|
||||
jmp getloop
|
||||
|
||||
endword: add bl,6
|
||||
mov al,0
|
||||
ret
|
||||
|
||||
endall: add bl,6
|
||||
mov al,1
|
||||
ret
|
||||
|
||||
endp
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
if german
|
||||
|
||||
Modifychar proc near
|
||||
|
||||
cmp al,128
|
||||
jc nomod
|
||||
cmp al,129
|
||||
jnz not129
|
||||
mov al,"Z"+3
|
||||
ret
|
||||
not129: cmp al,132
|
||||
jnz not132
|
||||
mov al,"Z"+1
|
||||
ret
|
||||
not132: cmp al,142
|
||||
jnz not142
|
||||
mov al,"Z"+4
|
||||
ret
|
||||
not142: cmp al,154
|
||||
jnz not154
|
||||
mov al,"Z"+6
|
||||
ret
|
||||
not154: cmp al,225
|
||||
jnz not225
|
||||
mov al,"A"-1
|
||||
ret
|
||||
not225: cmp al,153
|
||||
jnz not153
|
||||
mov al,"Z"+5
|
||||
ret
|
||||
not153: cmp al,148
|
||||
jnz not148
|
||||
mov al,"Z"+2
|
||||
ret
|
||||
not148: ret
|
||||
|
||||
nomod: ret
|
||||
|
||||
endp
|
||||
|
||||
endif
|
||||
|
||||
|
||||
|
||||
|
||||
if spanish
|
||||
|
||||
Modifychar proc near
|
||||
|
||||
cmp al,128
|
||||
jc nomod
|
||||
cmp al,160
|
||||
jnz not160
|
||||
mov al,"Z"+1
|
||||
ret
|
||||
not160: cmp al,130
|
||||
jnz not130
|
||||
mov al,"Z"+2
|
||||
ret
|
||||
not130: cmp al,161
|
||||
jnz not161
|
||||
mov al,"Z"+3
|
||||
ret
|
||||
not161: cmp al,162
|
||||
jnz not162
|
||||
mov al,"Z"+4
|
||||
ret
|
||||
not162: cmp al,163
|
||||
jnz not163
|
||||
mov al,"Z"+5
|
||||
ret
|
||||
not163: cmp al,164
|
||||
jnz not164
|
||||
mov al,"Z"+6
|
||||
ret
|
||||
not164: cmp al,165
|
||||
jnz not165
|
||||
mov al,","-1
|
||||
ret
|
||||
not165: cmp al,168
|
||||
jnz not168
|
||||
mov al,"A"-1
|
||||
ret
|
||||
not168: cmp al,173
|
||||
jnz not173
|
||||
mov al,"A"-4
|
||||
ret
|
||||
not173: cmp al,129
|
||||
jnz not129
|
||||
mov al,"A"-5
|
||||
not129: ret
|
||||
|
||||
nomod: ret
|
||||
|
||||
endp
|
||||
|
||||
endif
|
||||
Reference in New Issue
Block a user