mirror of
https://github.com/libretro/scummvm.git
synced 2025-02-12 22:51:11 +00:00
1762 lines
21 KiB
NASM
1762 lines
21 KiB
NASM
;Copyright (c) 1990-2012 by Neil Dodwell
|
|
;Released with permission from Neil Dodwell under GPLv2
|
|
;See LICENSE file for full license text
|
|
Entercode proc near
|
|
|
|
mov keypadax,ax
|
|
mov keypadcx,cx
|
|
call getridofreels
|
|
call loadkeypad
|
|
call createpanel
|
|
call showicon
|
|
call showouterpad
|
|
call showkeypad
|
|
call readmouse
|
|
call showpointer
|
|
call worktoscreen
|
|
call delpointer
|
|
mov presspointer,0
|
|
mov getback,0
|
|
|
|
keypadloop:
|
|
cmp quitrequested, 0
|
|
jnz numberright
|
|
|
|
call delpointer
|
|
call readmouse
|
|
call showkeypad
|
|
call showpointer
|
|
call vsync
|
|
cmp presscount,0
|
|
jz nopresses
|
|
dec presscount
|
|
jmp afterpress
|
|
nopresses: mov pressed,255
|
|
mov graphicpress,255
|
|
call vsync
|
|
|
|
afterpress: call dumppointer
|
|
call dumpkeypad
|
|
call dumptextline
|
|
mov bx,offset cs:keypadlist
|
|
call checkcoords
|
|
cmp getback,1
|
|
jz numberright
|
|
|
|
cmp lightcount,1
|
|
jnz notendkey
|
|
cmp lockstatus,0
|
|
jz numberright
|
|
jmp keypadloop
|
|
|
|
notendkey: cmp presscount,40
|
|
jnz keypadloop
|
|
call addtopresslist
|
|
cmp pressed,11
|
|
jnz keypadloop
|
|
mov ax,keypadax
|
|
mov cx,keypadcx
|
|
call isitright
|
|
jnz incorrect
|
|
mov lockstatus,0
|
|
mov al,11
|
|
call playchannel1
|
|
mov lightcount,120
|
|
mov presspointer,0
|
|
jmp keypadloop
|
|
incorrect: mov al,11
|
|
call playchannel1
|
|
mov lightcount,120
|
|
mov presspointer,0
|
|
jmp keypadloop
|
|
|
|
numberright: mov manisoffscreen,0
|
|
call getridoftemp
|
|
call restorereels
|
|
call redrawmainscrn
|
|
call worktoscreenm
|
|
ret
|
|
|
|
keypadlist: dw keypadx+9,keypadx+30,keypady+9,keypady+22,buttonone
|
|
dw keypadx+31,keypadx+52,keypady+9,keypady+22,buttontwo
|
|
dw keypadx+53,keypadx+74,keypady+9,keypady+22,buttonthree
|
|
dw keypadx+9,keypadx+30,keypady+23,keypady+40,buttonfour
|
|
dw keypadx+31,keypadx+52,keypady+23,keypady+40,buttonfive
|
|
dw keypadx+53,keypadx+74,keypady+23,keypady+40,buttonsix
|
|
dw keypadx+9,keypadx+30,keypady+41,keypady+58,buttonseven
|
|
dw keypadx+31,keypadx+52,keypady+41,keypady+58,buttoneight
|
|
dw keypadx+53,keypadx+74,keypady+41,keypady+58,buttonnine
|
|
dw keypadx+9,keypadx+30,keypady+59,keypady+73,buttonnought
|
|
dw keypadx+31,keypadx+74,keypady+59,keypady+73,buttonenter
|
|
dw keypadx+72,keypadx+86,keypady+80,keypady+94,quitkey
|
|
dw 0,320,0,200,blank
|
|
dw 0ffffh
|
|
|
|
endp
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Loadkeypad proc near
|
|
|
|
mov dx,offset cs:extragraphics1
|
|
call loadintotemp
|
|
ret
|
|
|
|
endp
|
|
|
|
|
|
|
|
|
|
Quitkey proc near
|
|
|
|
cmp commandtype,222
|
|
jz alreadyqk
|
|
mov commandtype,222
|
|
mov al,4
|
|
call commandonly
|
|
alreadyqk: mov ax,mousebutton
|
|
cmp ax,oldbutton
|
|
jz notqk
|
|
and ax,1
|
|
jnz doqk
|
|
notqk: ret
|
|
|
|
doqk: mov getback,1
|
|
ret
|
|
|
|
endp
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Addtopresslist proc near
|
|
|
|
cmp presspointer,5
|
|
jz nomorekeys
|
|
mov al,pressed
|
|
cmp al,10
|
|
jnz not10
|
|
mov al,0
|
|
not10: mov bx,presspointer
|
|
mov dx,seg presslist
|
|
mov es,dx
|
|
add bx,offset es:presslist
|
|
mov [es:bx],al
|
|
inc presspointer
|
|
nomorekeys: ret
|
|
|
|
endp
|
|
|
|
|
|
|
|
|
|
Buttonone proc near
|
|
|
|
mov cl,1
|
|
call buttonpress
|
|
ret
|
|
|
|
endp
|
|
|
|
|
|
Buttontwo proc near
|
|
|
|
mov cl,2
|
|
call buttonpress
|
|
ret
|
|
|
|
endp
|
|
|
|
|
|
|
|
Buttonthree proc near
|
|
|
|
mov cl,3
|
|
call buttonpress
|
|
ret
|
|
|
|
endp
|
|
|
|
|
|
|
|
Buttonfour proc near
|
|
|
|
mov cl,4
|
|
call buttonpress
|
|
ret
|
|
|
|
endp
|
|
|
|
|
|
Buttonfive proc near
|
|
|
|
mov cl,5
|
|
call buttonpress
|
|
ret
|
|
|
|
endp
|
|
|
|
|
|
|
|
Buttonsix proc near
|
|
|
|
mov cl,6
|
|
call buttonpress
|
|
ret
|
|
|
|
endp
|
|
|
|
|
|
Buttonseven proc near
|
|
|
|
mov cl,7
|
|
call buttonpress
|
|
ret
|
|
|
|
endp
|
|
|
|
|
|
Buttoneight proc near
|
|
|
|
mov cl,8
|
|
call buttonpress
|
|
ret
|
|
|
|
endp
|
|
|
|
Buttonnine proc near
|
|
|
|
mov cl,9
|
|
call buttonpress
|
|
ret
|
|
|
|
endp
|
|
|
|
|
|
|
|
Buttonnought proc near
|
|
|
|
mov cl,10
|
|
call buttonpress
|
|
ret
|
|
|
|
endp
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Buttonenter proc near
|
|
|
|
mov cl,11
|
|
call buttonpress
|
|
ret
|
|
|
|
endp
|
|
|
|
|
|
|
|
Buttonpress proc near
|
|
|
|
mov ch,cl
|
|
add ch,100
|
|
cmp commandtype,ch
|
|
jz alreadyb
|
|
mov commandtype,ch
|
|
mov al,cl
|
|
add al,4
|
|
push cx
|
|
call commandonly
|
|
pop cx
|
|
alreadyb: mov ax,mousebutton
|
|
cmp ax,oldbutton
|
|
jz notb
|
|
and ax,1
|
|
jnz dob
|
|
notb: ret
|
|
|
|
dob: mov pressed,cl
|
|
add cl,21
|
|
mov graphicpress,cl
|
|
mov presscount,40
|
|
cmp cl,32
|
|
jz nonoise
|
|
mov al,10
|
|
call playchannel1
|
|
nonoise: ret
|
|
|
|
endp
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Showouterpad proc near
|
|
|
|
mov di,keypadx-3
|
|
mov bx,keypady-4
|
|
mov ds,tempgraphics
|
|
mov al,1
|
|
mov ah,0
|
|
call showframe
|
|
mov di,keypadx+74
|
|
mov bx,keypady+76
|
|
mov ds,tempgraphics
|
|
mov al,37
|
|
mov ah,0
|
|
call showframe
|
|
ret
|
|
|
|
endp
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Showkeypad proc near
|
|
|
|
mov al,22
|
|
mov di,keypadx+9
|
|
mov bx,keypady+5
|
|
call singlekey
|
|
mov al,23
|
|
mov di,keypadx+31
|
|
mov bx,keypady+5
|
|
call singlekey
|
|
mov al,24
|
|
mov di,keypadx+53
|
|
mov bx,keypady+5
|
|
call singlekey
|
|
|
|
mov al,25
|
|
mov di,keypadx+9
|
|
mov bx,keypady+23
|
|
call singlekey
|
|
mov al,26
|
|
mov di,keypadx+31
|
|
mov bx,keypady+23
|
|
call singlekey
|
|
mov al,27
|
|
mov di,keypadx+53
|
|
mov bx,keypady+23
|
|
call singlekey
|
|
|
|
mov al,28
|
|
mov di,keypadx+9
|
|
mov bx,keypady+41
|
|
call singlekey
|
|
mov al,29
|
|
mov di,keypadx+31
|
|
mov bx,keypady+41
|
|
call singlekey
|
|
mov al,30
|
|
mov di,keypadx+53
|
|
mov bx,keypady+41
|
|
call singlekey
|
|
|
|
mov al,31
|
|
mov di,keypadx+9
|
|
mov bx,keypady+59
|
|
call singlekey
|
|
mov al,32
|
|
mov di,keypadx+31
|
|
mov bx,keypady+59
|
|
call singlekey
|
|
|
|
cmp lightcount,0
|
|
jz notenter
|
|
dec lightcount
|
|
mov al,36
|
|
mov bx,keypady-1+63
|
|
cmp lockstatus,0
|
|
jnz changelight
|
|
mov al,41
|
|
mov bx,keypady+4+63
|
|
changelight: cmp lightcount,60
|
|
jc gotlight
|
|
cmp lightcount,100
|
|
jnc gotlight
|
|
dec al
|
|
gotlight: mov ds,tempgraphics
|
|
mov ah,0
|
|
mov di,keypadx+60
|
|
call showframe
|
|
|
|
notenter: ret
|
|
|
|
endp
|
|
|
|
|
|
|
|
|
|
|
|
Singlekey proc near
|
|
|
|
cmp graphicpress,al
|
|
jnz gotkey
|
|
add al,11
|
|
cmp presscount,8
|
|
jnc gotkey
|
|
sub al,11
|
|
; cmp presscount,10
|
|
; jnc gotkey
|
|
; sub al,11
|
|
gotkey: mov ds,tempgraphics
|
|
sub al,20
|
|
mov ah,0
|
|
call showframe
|
|
ret
|
|
|
|
endp
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Dumpkeypad proc near
|
|
|
|
mov di,keypadx-3
|
|
mov bx,keypady-4
|
|
mov cl,120
|
|
mov ch,90
|
|
call multidump
|
|
ret
|
|
|
|
endp
|
|
|
|
|
|
|
|
|
|
|
|
;---------------------------------
|
|
|
|
|
|
|
|
|
|
Usemenu proc near
|
|
|
|
call getridofreels
|
|
call loadmenu
|
|
call createpanel
|
|
call showpanel
|
|
call showicon
|
|
mov newobs,0
|
|
call drawfloor
|
|
call printsprites
|
|
|
|
mov al,4
|
|
mov ah,0
|
|
mov di,menux-48
|
|
mov bx,menuy-4
|
|
mov ds,tempgraphics2
|
|
call showframe
|
|
call getundermenu
|
|
mov al,5
|
|
mov ah,0
|
|
mov di,menux+54
|
|
mov bx,menuy+72
|
|
mov ds,tempgraphics2
|
|
call showframe
|
|
|
|
|
|
call worktoscreenm
|
|
mov getback,0
|
|
|
|
menuloop: call delpointer
|
|
call putundermenu
|
|
call showmenu
|
|
call readmouse
|
|
call showpointer
|
|
call vsync
|
|
call dumppointer
|
|
call dumpmenu
|
|
call dumptextline
|
|
mov bx,offset cs:menulist
|
|
call checkcoords
|
|
cmp getback,1
|
|
jnz menuloop
|
|
|
|
mov manisoffscreen,0
|
|
call redrawmainscrn
|
|
call getridoftemp
|
|
call getridoftemp2
|
|
call restorereels
|
|
call worktoscreenm
|
|
ret
|
|
|
|
menulist: dw menux+54,menux+68,menuy+72,menuy+88,quitkey
|
|
dw 0,320,0,200,blank
|
|
dw 0ffffh
|
|
|
|
ret
|
|
|
|
endp
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Dumpmenu proc near
|
|
|
|
mov di,menux
|
|
mov bx,menuy
|
|
mov cl,48
|
|
mov ch,48
|
|
call multidump
|
|
ret
|
|
|
|
endp
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Getundermenu proc near
|
|
|
|
mov di,menux
|
|
mov bx,menuy
|
|
mov cl,48
|
|
mov ch,48
|
|
mov ds,buffers
|
|
mov si,undertimedtext
|
|
call multiget
|
|
ret
|
|
|
|
endp
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Putundermenu proc near
|
|
|
|
mov di,menux
|
|
mov bx,menuy
|
|
mov cl,48
|
|
mov ch,48
|
|
mov ds,buffers
|
|
mov si,undertimedtext
|
|
call multiput
|
|
ret
|
|
|
|
endp
|
|
|
|
|
|
|
|
Showoutermenu proc near
|
|
|
|
mov al,40
|
|
mov ah,0
|
|
mov di,menux-34
|
|
mov bx,menuy-40
|
|
mov ds,tempgraphics
|
|
call showframe
|
|
mov al,41
|
|
mov ah,0
|
|
mov di,menux+64-34
|
|
mov bx,menuy-40
|
|
mov ds,tempgraphics
|
|
call showframe
|
|
mov al,42
|
|
mov ah,0
|
|
mov di,menux-26
|
|
mov bx,menuy+57-40
|
|
mov ds,tempgraphics
|
|
call showframe
|
|
mov al,43
|
|
mov ah,0
|
|
mov di,menux+64-26
|
|
mov bx,menuy+57-40
|
|
mov ds,tempgraphics
|
|
call showframe
|
|
ret
|
|
|
|
endp
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Showmenu proc near
|
|
|
|
inc menucount
|
|
cmp menucount,37*2
|
|
jnz menuframeok
|
|
mov menucount,0
|
|
menuframeok: mov al,menucount
|
|
shr al,1
|
|
mov ah,0
|
|
mov di,menux
|
|
mov bx,menuy
|
|
mov ds,tempgraphics
|
|
call showframe
|
|
ret
|
|
|
|
endp
|
|
|
|
|
|
|
|
Loadmenu proc near
|
|
|
|
mov dx,offset cs:spritename3
|
|
call loadintotemp
|
|
mov dx,offset cs:mongraphics2
|
|
call loadintotemp2
|
|
ret
|
|
|
|
endp
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Viewfolder proc near
|
|
|
|
mov manisoffscreen,1
|
|
call getridofall
|
|
call loadfolder
|
|
mov folderpage,0
|
|
call showfolder
|
|
call worktoscreenm
|
|
mov getback,0
|
|
|
|
folderloop: call delpointer
|
|
call readmouse
|
|
call showpointer
|
|
call vsync
|
|
call dumppointer
|
|
call dumptextline
|
|
mov bx,offset cs:folderlist
|
|
call checkcoords
|
|
cmp getback,0
|
|
jz folderloop
|
|
|
|
mov manisoffscreen,0
|
|
call getridoftemp
|
|
call getridoftemp2
|
|
call getridoftemp3
|
|
call getridoftempcharset
|
|
call restoreall
|
|
call redrawmainscrn
|
|
call worktoscreenm
|
|
ret
|
|
|
|
folderlist: dw 280,320,160,200,quitkey
|
|
dw 143,300,6,194,nextfolder
|
|
dw 0,143,6,194,lastfolder
|
|
dw 0,320,0,200,blank
|
|
dw 0ffffh
|
|
|
|
endp
|
|
|
|
|
|
|
|
|
|
Nextfolder proc near
|
|
|
|
cmp folderpage,12
|
|
jnz cannextf
|
|
call blank
|
|
ret
|
|
cannextf: cmp commandtype,201
|
|
jz alreadynextf
|
|
mov commandtype,201
|
|
mov al,16
|
|
call commandonly
|
|
alreadynextf: mov ax,mousebutton
|
|
cmp ax,oldbutton
|
|
jz notnextf
|
|
cmp ax,1
|
|
jz donextf
|
|
notnextf: ret
|
|
donextf: inc folderpage
|
|
call folderhints
|
|
call delpointer
|
|
call showfolder
|
|
mov mousebutton,0
|
|
mov bx,offset cs:folderlist
|
|
call checkcoords
|
|
call worktoscreenm
|
|
ret
|
|
|
|
endp
|
|
|
|
|
|
|
|
|
|
Folderhints proc near
|
|
|
|
cmp folderpage,5
|
|
jnz notaideadd
|
|
cmp aidedead,1
|
|
jz notaideadd
|
|
mov al,13
|
|
call getlocation
|
|
cmp al,1
|
|
jz notaideadd
|
|
mov al,13
|
|
call setlocation
|
|
call showfolder
|
|
mov al,30
|
|
call findtext1
|
|
mov di,0
|
|
mov bx,86
|
|
mov dl,141
|
|
mov ah,16
|
|
call printdirect
|
|
call worktoscreenm
|
|
mov cx,200
|
|
call hangonp
|
|
ret
|
|
|
|
notaideadd: cmp folderpage,9
|
|
jnz notaristoadd
|
|
mov al,7
|
|
call getlocation
|
|
cmp al,1
|
|
jz notaristoadd
|
|
mov al,7
|
|
call setlocation
|
|
call showfolder
|
|
mov al,31
|
|
call findtext1
|
|
mov di,0
|
|
mov bx,86
|
|
mov dl,141
|
|
mov ah,16
|
|
call printdirect
|
|
call worktoscreenm
|
|
mov cx,200
|
|
call hangonp
|
|
notaristoadd: ret
|
|
|
|
endp
|
|
|
|
|
|
|
|
Lastfolder proc near
|
|
|
|
cmp folderpage,0
|
|
jnz canlastf
|
|
call blank
|
|
ret
|
|
canlastf: cmp commandtype,202
|
|
jz alreadylastf
|
|
mov commandtype,202
|
|
mov al,17
|
|
call commandonly
|
|
alreadylastf: cmp folderpage,0
|
|
jz notlastf
|
|
mov ax,mousebutton
|
|
cmp ax,oldbutton
|
|
jz notlastf
|
|
cmp ax,1
|
|
jz dolastf
|
|
notlastf: ret
|
|
dolastf: dec folderpage
|
|
call delpointer
|
|
call showfolder
|
|
mov mousebutton,0
|
|
mov bx,offset cs:folderlist
|
|
call checkcoords
|
|
call worktoscreenm
|
|
ret
|
|
|
|
endp
|
|
|
|
|
|
|
|
Loadfolder proc near
|
|
|
|
mov dx,offset cs:foldergraphic1
|
|
call loadintotemp
|
|
mov dx,offset cs:foldergraphic2
|
|
call loadintotemp2
|
|
mov dx,offset cs:foldergraphic3
|
|
call loadintotemp3
|
|
mov dx,offset cs:characterset3
|
|
call loadtempcharset
|
|
mov dx,offset cs:foldertext
|
|
call loadtemptext
|
|
ret
|
|
|
|
endp
|
|
|
|
|
|
|
|
|
|
Showfolder proc near
|
|
|
|
mov commandtype,255
|
|
cmp folderpage,0
|
|
jz closedfolder
|
|
call usetempcharset
|
|
call createpanel2
|
|
mov ds,tempgraphics
|
|
mov di,0
|
|
mov bx,0
|
|
mov al,0
|
|
mov ah,0
|
|
call showframe
|
|
mov ds,tempgraphics
|
|
mov di,143
|
|
mov bx,0
|
|
mov al,1
|
|
mov ah,0
|
|
call showframe
|
|
mov ds,tempgraphics
|
|
mov di,0
|
|
mov bx,92
|
|
mov al,2
|
|
mov ah,0
|
|
call showframe
|
|
mov ds,tempgraphics
|
|
mov di,143
|
|
mov bx,92
|
|
mov al,3
|
|
mov ah,0
|
|
call showframe
|
|
call folderexit
|
|
|
|
cmp folderpage,1
|
|
jz noleftpage
|
|
call showleftpage
|
|
noleftpage: cmp folderpage,12
|
|
jz norightpage
|
|
call showrightpage
|
|
norightpage: call usecharset1
|
|
call undertextline
|
|
ret
|
|
|
|
closedfolder: call createpanel2
|
|
mov ds,tempgraphics3
|
|
mov di,143-28
|
|
mov bx,0
|
|
mov al,0
|
|
mov ah,0
|
|
call showframe
|
|
mov ds,tempgraphics3
|
|
mov di,143-28
|
|
mov bx,92
|
|
mov al,1
|
|
mov ah,0
|
|
call showframe
|
|
call folderexit
|
|
call undertextline
|
|
ret
|
|
|
|
endp
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Folderexit proc near
|
|
|
|
mov ds,tempgraphics2
|
|
mov di,296
|
|
mov bx,178
|
|
mov al,6
|
|
mov ah,0
|
|
call showframe
|
|
ret
|
|
|
|
endp
|
|
|
|
|
|
|
|
|
|
|
|
Showleftpage proc near
|
|
|
|
mov ds,tempgraphics2
|
|
mov di,0
|
|
mov bx,12
|
|
mov al,3
|
|
mov ah,0
|
|
call showframe
|
|
|
|
mov bx,12+5
|
|
mov cx,9
|
|
leftpageloop: push cx bx
|
|
mov ds,tempgraphics2
|
|
mov di,0
|
|
mov al,4
|
|
mov ah,0
|
|
call showframe
|
|
pop bx cx
|
|
add bx,16
|
|
loop leftpageloop
|
|
|
|
mov ds,tempgraphics2
|
|
mov di,0
|
|
mov al,5
|
|
mov ah,0
|
|
call showframe
|
|
|
|
mov linespacing,8
|
|
mov charshift,91
|
|
mov kerning,1
|
|
mov bl,folderpage
|
|
dec bl
|
|
dec bl
|
|
add bl,bl
|
|
mov bh,0
|
|
add bx,bx
|
|
mov es,textfile1
|
|
mov si,[es:bx]
|
|
add si,66*2
|
|
mov di,2
|
|
mov bx,48
|
|
mov dl,140
|
|
mov cx,2
|
|
twolotsleft: push cx
|
|
contleftpage: call printdirect
|
|
add bx,linespacing
|
|
cmp al,0
|
|
jnz contleftpage
|
|
pop cx
|
|
loop twolotsleft
|
|
|
|
mov kerning,0
|
|
mov charshift,0
|
|
mov linespacing,10
|
|
|
|
mov es,workspace
|
|
mov ds,workspace
|
|
mov di,(48*320)+2
|
|
mov si,(48*320)+2+130
|
|
mov cx,120
|
|
flipfolder: push cx di si
|
|
mov cx,65
|
|
flipfolderline: mov al,[es:di]
|
|
mov ah,[es:si]
|
|
mov [es:di],ah
|
|
mov [es:si],al
|
|
dec si
|
|
inc di
|
|
loop flipfolderline
|
|
pop si di cx
|
|
add si,320
|
|
add di,320
|
|
loop flipfolder
|
|
ret
|
|
|
|
endp
|
|
|
|
|
|
|
|
Showrightpage proc near
|
|
|
|
mov ds,tempgraphics2
|
|
mov di,143
|
|
mov bx,12
|
|
mov al,0
|
|
mov ah,0
|
|
call showframe
|
|
|
|
mov bx,12+37
|
|
mov cx,7
|
|
rightpageloop: push cx bx
|
|
mov ds,tempgraphics2
|
|
mov di,143
|
|
mov al,1
|
|
mov ah,0
|
|
call showframe
|
|
pop bx cx
|
|
add bx,16
|
|
loop rightpageloop
|
|
|
|
mov ds,tempgraphics2
|
|
mov di,143
|
|
mov al,2
|
|
mov ah,0
|
|
call showframe
|
|
|
|
mov linespacing,8
|
|
mov kerning,1
|
|
mov bl,folderpage
|
|
dec bl
|
|
add bl,bl
|
|
mov bh,0
|
|
add bx,bx
|
|
mov es,textfile1
|
|
mov si,[es:bx]
|
|
add si,66*2
|
|
mov di,152
|
|
mov bx,48
|
|
mov dl,140
|
|
mov cx,2
|
|
twolotsright: push cx
|
|
contrightpage: call printdirect
|
|
add bx,linespacing
|
|
cmp al,0
|
|
jnz contrightpage
|
|
pop cx
|
|
loop twolotsright
|
|
|
|
mov kerning,0
|
|
mov linespacing,10
|
|
ret
|
|
|
|
endp
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Entersymbol proc near
|
|
|
|
mov manisoffscreen,1
|
|
call getridofreels
|
|
mov dx,offset cs:symbolgraphic
|
|
call loadintotemp
|
|
mov symboltopx,24
|
|
mov symboltopdir,0
|
|
mov symbolbotx,24
|
|
mov symbolbotdir,0
|
|
call redrawmainscrn
|
|
call showsymbol
|
|
call undertextline
|
|
call worktoscreenm
|
|
mov getback,0
|
|
|
|
symbolloop: call delpointer
|
|
call updatesymboltop
|
|
call updatesymbolbot
|
|
call showsymbol
|
|
call readmouse
|
|
call showpointer
|
|
call vsync
|
|
call dumppointer
|
|
call dumptextline
|
|
call dumpsymbol
|
|
mov bx,offset cs:symbollist
|
|
call checkcoords
|
|
cmp getback,0
|
|
jz symbolloop
|
|
|
|
cmp symbolbotnum,3
|
|
jnz symbolwrong
|
|
cmp symboltopnum,5
|
|
jnz symbolwrong
|
|
mov al,43
|
|
call removesetobject
|
|
mov al,46
|
|
call placesetobject
|
|
mov ah,roomnum
|
|
add ah,12
|
|
mov al,0
|
|
call turnanypathon
|
|
mov manisoffscreen,0
|
|
call redrawmainscrn
|
|
call getridoftemp
|
|
call restorereels
|
|
call worktoscreenm
|
|
mov al,13
|
|
call playchannel1
|
|
ret
|
|
|
|
symbolwrong: mov al,46
|
|
call removesetobject
|
|
mov al,43
|
|
call placesetobject
|
|
mov ah,roomnum
|
|
add ah,12
|
|
mov al,0
|
|
call turnanypathoff
|
|
mov manisoffscreen,0
|
|
call redrawmainscrn
|
|
call getridoftemp
|
|
call restorereels
|
|
call worktoscreenm
|
|
ret
|
|
|
|
symbollist: dw symbolx+40,symbolx+64,symboly+2,symboly+16,quitsymbol
|
|
dw symbolx,symbolx+52,symboly+20,symboly+50,settopleft
|
|
dw symbolx+52,symbolx+104,symboly+20,symboly+50,settopright
|
|
dw symbolx,symbolx+52,symboly+50,symboly+80,setbotleft
|
|
dw symbolx+52,symbolx+104,symboly+50,symboly+80,setbotright
|
|
dw 0,320,0,200,blank
|
|
dw 0ffffh
|
|
|
|
endp
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Quitsymbol proc near
|
|
|
|
cmp symboltopx,24
|
|
jnz blank
|
|
cmp symbolbotx,24
|
|
jnz blank
|
|
cmp commandtype,222
|
|
jz alreadyqs
|
|
mov commandtype,222
|
|
mov al,18
|
|
call commandonly
|
|
alreadyqs: mov ax,mousebutton
|
|
cmp ax,oldbutton
|
|
jz notqs
|
|
and ax,1
|
|
jnz doqs
|
|
notqs: ret
|
|
|
|
doqs: mov getback,1
|
|
ret
|
|
|
|
endp
|
|
|
|
|
|
|
|
|
|
Settopleft proc near
|
|
|
|
cmp symboltopdir,0
|
|
jnz blank
|
|
cmp commandtype,210
|
|
jz alreadytopl
|
|
mov commandtype,210
|
|
mov al,19
|
|
call commandonly
|
|
alreadytopl: cmp mousebutton,0
|
|
jz notopleft
|
|
mov symboltopdir,-1
|
|
notopleft: ret
|
|
|
|
endp
|
|
|
|
|
|
|
|
Settopright proc near
|
|
|
|
cmp symboltopdir,0
|
|
jnz blank
|
|
cmp commandtype,211
|
|
jz alreadytopr
|
|
mov commandtype,211
|
|
mov al,20
|
|
call commandonly
|
|
alreadytopr: cmp mousebutton,0
|
|
jz notopright
|
|
mov symboltopdir,1
|
|
notopright: ret
|
|
|
|
endp
|
|
|
|
|
|
|
|
|
|
Setbotleft proc near
|
|
|
|
cmp symbolbotdir,0
|
|
jnz blank
|
|
cmp commandtype,212
|
|
jz alreadybotl
|
|
mov commandtype,212
|
|
mov al,21
|
|
call commandonly
|
|
alreadybotl: cmp mousebutton,0
|
|
jz nobotleft
|
|
mov symbolbotdir,-1
|
|
nobotleft: ret
|
|
|
|
endp
|
|
|
|
|
|
|
|
Setbotright proc near
|
|
|
|
cmp symbolbotdir,0
|
|
jnz blank
|
|
cmp commandtype,213
|
|
jz alreadybotr
|
|
mov commandtype,213
|
|
mov al,22
|
|
call commandonly
|
|
alreadybotr: cmp mousebutton,0
|
|
jz nobotright
|
|
mov symbolbotdir,1
|
|
nobotright: ret
|
|
|
|
endp
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Dumpsymbol proc near
|
|
|
|
mov newtextline,0
|
|
mov di,symbolx
|
|
mov bx,symboly+20
|
|
mov cl,104
|
|
mov ch,60
|
|
call multidump
|
|
ret
|
|
|
|
endp
|
|
|
|
|
|
|
|
|
|
Showsymbol proc near
|
|
|
|
mov al,12
|
|
mov ah,0
|
|
mov di,symbolx
|
|
mov bx,symboly
|
|
mov ds,tempgraphics
|
|
call showframe
|
|
|
|
mov al,symboltopx
|
|
mov ah,0
|
|
mov di,ax
|
|
add di,symbolx-44
|
|
mov al,symboltopnum
|
|
mov bx,symboly+20
|
|
mov ds,tempgraphics
|
|
mov ah,32
|
|
push ax di bx ds
|
|
call showframe
|
|
pop ds bx di ax
|
|
call nextsymbol
|
|
add di,49
|
|
push ax di bx ds
|
|
call showframe
|
|
pop ds bx di ax
|
|
call nextsymbol
|
|
add di,49
|
|
call showframe
|
|
|
|
mov al,symbolbotx
|
|
mov ah,0
|
|
mov di,ax
|
|
add di,symbolx-44
|
|
mov al,symbolbotnum
|
|
add al,6
|
|
mov bx,symboly+49
|
|
mov ds,tempgraphics
|
|
mov ah,32
|
|
push ax di bx ds
|
|
call showframe
|
|
pop ds bx di ax
|
|
call nextsymbol
|
|
add di,49
|
|
push ax di bx ds
|
|
call showframe
|
|
pop ds bx di ax
|
|
call nextsymbol
|
|
add di,49
|
|
call showframe
|
|
ret
|
|
|
|
endp
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Nextsymbol proc near
|
|
|
|
inc al
|
|
cmp al,6
|
|
jz topwrap
|
|
cmp al,12
|
|
jz botwrap
|
|
ret
|
|
topwrap: mov al,0
|
|
ret
|
|
botwrap: mov al,6
|
|
ret
|
|
|
|
endp
|
|
|
|
|
|
|
|
Updatesymboltop proc near
|
|
|
|
cmp symboltopdir,0
|
|
jz topfinished
|
|
cmp symboltopdir,-1
|
|
jz backwards
|
|
|
|
inc symboltopx
|
|
cmp symboltopx,49
|
|
jnz notwrapfor
|
|
mov symboltopx,0
|
|
dec symboltopnum
|
|
cmp symboltopnum,-1
|
|
jnz topfinished
|
|
mov symboltopnum,5
|
|
ret
|
|
notwrapfor: cmp symboltopx,24
|
|
jnz topfinished
|
|
mov symboltopdir,0
|
|
ret
|
|
|
|
backwards: dec symboltopx
|
|
cmp symboltopx,-1
|
|
jnz notwrapback
|
|
mov symboltopx,48
|
|
inc symboltopnum
|
|
cmp symboltopnum,6
|
|
jnz topfinished
|
|
mov symboltopnum,0
|
|
ret
|
|
notwrapback: cmp symboltopx,24
|
|
jnz topfinished
|
|
mov symboltopdir,0
|
|
topfinished: ret
|
|
|
|
endp
|
|
|
|
|
|
|
|
Updatesymbolbot proc near
|
|
|
|
cmp symbolbotdir,0
|
|
jz botfinished
|
|
cmp symbolbotdir,-1
|
|
jz backwardsbot
|
|
|
|
inc symbolbotx
|
|
cmp symbolbotx,49
|
|
jnz notwrapforb
|
|
mov symbolbotx,0
|
|
dec symbolbotnum
|
|
cmp symbolbotnum,-1
|
|
jnz botfinished
|
|
mov symbolbotnum,5
|
|
ret
|
|
notwrapforb: cmp symbolbotx,24
|
|
jnz botfinished
|
|
mov symbolbotdir,0
|
|
ret
|
|
|
|
backwardsbot: dec symbolbotx
|
|
cmp symbolbotx,-1
|
|
jnz notwrapbackb
|
|
mov symbolbotx,48
|
|
inc symbolbotnum
|
|
cmp symbolbotnum,6
|
|
jnz botfinished
|
|
mov symbolbotnum,0
|
|
ret
|
|
notwrapbackb: cmp symbolbotx,24
|
|
jnz botfinished
|
|
mov symbolbotdir,0
|
|
botfinished: ret
|
|
|
|
endp
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Dumpsymbox proc near
|
|
|
|
cmp dumpx,-1
|
|
jz nodumpsym
|
|
mov di,dumpx
|
|
mov bx,dumpy
|
|
mov cl,30
|
|
mov ch,77;30
|
|
call multidump
|
|
mov dumpx,-1
|
|
nodumpsym: ret
|
|
|
|
endp
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Usediary proc near
|
|
|
|
call getridofreels
|
|
mov dx,offset cs:diarygraphic
|
|
call loadintotemp
|
|
mov dx,offset cs:diarytext
|
|
call loadtemptext
|
|
|
|
mov dx,offset cs:characterset3
|
|
call loadtempcharset
|
|
call createpanel
|
|
call showicon
|
|
call showdiary
|
|
call undertextline
|
|
call showdiarypage
|
|
call readmouse
|
|
call showpointer
|
|
call worktoscreen
|
|
call delpointer
|
|
mov getback,0
|
|
|
|
diaryloop: call delpointer
|
|
call readmouse
|
|
call showdiarykeys
|
|
call showpointer
|
|
call vsync
|
|
call dumppointer
|
|
call dumpdiarykeys
|
|
call dumptextline
|
|
mov bx,offset cs:diarylist
|
|
call checkcoords
|
|
cmp getback,0
|
|
jz diaryloop
|
|
|
|
call getridoftemp
|
|
call getridoftemptext
|
|
call getridoftempcharset
|
|
call restorereels
|
|
mov manisoffscreen,0
|
|
call redrawmainscrn
|
|
call worktoscreenm
|
|
ret
|
|
|
|
diarylist: dw diaryx+94,diaryx+110,diaryy+97,diaryy+113,diarykeyn
|
|
dw diaryx+151,diaryx+167,diaryy+71,diaryy+87,diarykeyp
|
|
dw diaryx+176,diaryx+192,diaryy+108,diaryy+124,quitkey
|
|
dw 0,320,0,200,blank
|
|
dw 0ffffh
|
|
|
|
ret
|
|
|
|
endp
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Showdiary proc near
|
|
|
|
mov al,1
|
|
mov ah,0
|
|
mov di,diaryx
|
|
mov bx,diaryy+37
|
|
mov ds,tempgraphics
|
|
call showframe
|
|
mov al,2
|
|
mov ah,0
|
|
mov di,diaryx+176
|
|
mov bx,diaryy+108
|
|
mov ds,tempgraphics
|
|
call showframe
|
|
ret
|
|
|
|
endp
|
|
|
|
|
|
|
|
|
|
Showdiarykeys proc near
|
|
|
|
cmp presscount,0
|
|
jz nokeyatall
|
|
dec presscount
|
|
cmp presscount,0
|
|
jz nokeyatall
|
|
cmp pressed,"N"
|
|
jnz nokeyn
|
|
mov al,3
|
|
cmp presscount,1
|
|
jz gotkeyn
|
|
mov al,4
|
|
gotkeyn: mov ah,0
|
|
mov di,diaryx+94
|
|
mov bx,diaryy+97
|
|
mov ds,tempgraphics
|
|
call showframe
|
|
cmp presscount,1
|
|
jnz notshown
|
|
call showdiarypage
|
|
notshown: ret
|
|
|
|
nokeyn: mov al,5
|
|
cmp presscount,1
|
|
jz gotkeyp
|
|
mov al,6
|
|
gotkeyp: mov ah,0
|
|
mov di,diaryx+151
|
|
mov bx,diaryy+71
|
|
mov ds,tempgraphics
|
|
call showframe
|
|
cmp presscount,1
|
|
jnz notshowp
|
|
call showdiarypage
|
|
notshowp: ret
|
|
|
|
nokeyatall: ret
|
|
|
|
endp
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Dumpdiarykeys proc near
|
|
|
|
cmp presscount,1
|
|
jnz notdumpdiary
|
|
cmp sartaindead,1
|
|
jz notsartadd
|
|
cmp diarypage,5
|
|
jnz notsartadd
|
|
cmp diarypage,5
|
|
jnz notsartadd
|
|
mov al,6
|
|
call getlocation
|
|
cmp al,1
|
|
jz notsartadd
|
|
mov al,6
|
|
call setlocation
|
|
|
|
call delpointer
|
|
mov al,12
|
|
call findtext1
|
|
mov di,70 ;diaryx+48
|
|
mov bx,106 ;diaryy+16
|
|
mov dl,241
|
|
mov ah,16
|
|
call printdirect
|
|
|
|
call worktoscreenm
|
|
mov cx,200
|
|
call hangonp
|
|
call createpanel
|
|
call showicon
|
|
call showdiary
|
|
call showdiarypage
|
|
call worktoscreenm
|
|
call showpointer
|
|
ret
|
|
|
|
notsartadd: mov di,diaryx+48
|
|
mov bx,diaryy+15
|
|
mov cl,200
|
|
mov ch,16
|
|
call multidump
|
|
notdumpdiary: mov di,diaryx+94
|
|
mov bx,diaryy+97
|
|
mov cl,16
|
|
mov ch,16
|
|
call multidump
|
|
mov di,diaryx+151
|
|
mov bx,diaryy+71
|
|
mov cl,16
|
|
mov ch,16
|
|
call multidump
|
|
ret
|
|
|
|
endp
|
|
|
|
|
|
|
|
Diarykeyp proc near
|
|
|
|
cmp commandtype,214
|
|
jz alreadykeyp
|
|
mov commandtype,214
|
|
mov al,23
|
|
call commandonly
|
|
alreadykeyp: cmp mousebutton,0
|
|
jz notkeyp
|
|
mov ax,oldbutton
|
|
cmp ax,mousebutton
|
|
jz notkeyp
|
|
cmp presscount,0
|
|
jnz notkeyp
|
|
mov al,16
|
|
call playchannel1
|
|
mov presscount,12
|
|
mov pressed,"P"
|
|
dec diarypage
|
|
cmp diarypage,-1
|
|
jnz notkeyp
|
|
mov diarypage,11
|
|
notkeyp: ret
|
|
|
|
endp
|
|
|
|
|
|
|
|
Diarykeyn proc near
|
|
|
|
cmp commandtype,213
|
|
jz alreadykeyn
|
|
mov commandtype,213
|
|
mov al,23
|
|
call commandonly
|
|
alreadykeyn: cmp mousebutton,0
|
|
jz notkeyn
|
|
mov ax,oldbutton
|
|
cmp ax,mousebutton
|
|
jz notkeyn
|
|
cmp presscount,0
|
|
jnz notkeyn
|
|
mov al,16
|
|
call playchannel1
|
|
mov presscount,12
|
|
mov pressed,"N"
|
|
inc diarypage
|
|
cmp diarypage,12
|
|
jnz notkeyn
|
|
mov diarypage,0
|
|
notkeyn: ret
|
|
|
|
endp
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Showdiarypage proc near
|
|
|
|
mov al,0
|
|
mov ah,0
|
|
mov di,diaryx
|
|
mov bx,diaryy
|
|
mov ds,tempgraphics
|
|
call showframe
|
|
|
|
mov al,diarypage
|
|
call findtext1
|
|
|
|
mov kerning,1
|
|
call usetempcharset
|
|
mov di,diaryx+48
|
|
mov bx,diaryy+16
|
|
mov dl,240
|
|
mov ah,16
|
|
mov charshift,91+91
|
|
call printdirect
|
|
|
|
mov di,diaryx+129
|
|
mov bx,diaryy+16
|
|
mov dl,240
|
|
mov ah,16
|
|
call printdirect
|
|
|
|
mov di,diaryx+48
|
|
mov bx,diaryy+23
|
|
mov dl,240
|
|
mov ah,16
|
|
call printdirect
|
|
|
|
mov kerning,0
|
|
mov charshift,0
|
|
call usecharset1
|
|
ret
|
|
|
|
endp
|
|
|
|
|
|
|
|
|
|
|
|
Findtext1 proc near
|
|
|
|
mov ah,0
|
|
mov si,ax
|
|
add si,si
|
|
mov es,textfile1
|
|
mov ax,[es:si]
|
|
add ax,textstart
|
|
mov si,ax
|
|
ret
|
|
|
|
endp
|