aboutsummaryrefslogtreecommitdiff
path: root/devtools/tasmrecover/dreamweb/keypad.asm
diff options
context:
space:
mode:
Diffstat (limited to 'devtools/tasmrecover/dreamweb/keypad.asm')
-rw-r--r--devtools/tasmrecover/dreamweb/keypad.asm1762
1 files changed, 1762 insertions, 0 deletions
diff --git a/devtools/tasmrecover/dreamweb/keypad.asm b/devtools/tasmrecover/dreamweb/keypad.asm
new file mode 100644
index 0000000000..8d918e618b
--- /dev/null
+++ b/devtools/tasmrecover/dreamweb/keypad.asm
@@ -0,0 +1,1762 @@
+;Copyright (c) 1990-2011 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
+