aboutsummaryrefslogtreecommitdiff
path: root/devtools/tasmrecover/dreamweb/monitor.asm
diff options
context:
space:
mode:
authorWillem Jan Palenstijn2011-06-05 11:00:00 +0200
committerWillem Jan Palenstijn2011-06-05 11:00:00 +0200
commit72148570de56e5c42e2fe8091e9b466610e49785 (patch)
treee90423f516d3f89ebf68564d1547839d419d14b0 /devtools/tasmrecover/dreamweb/monitor.asm
parent5b7754e3f095eb8a469dd4b7de5a6379f8e13c27 (diff)
downloadscummvm-rg350-72148570de56e5c42e2fe8091e9b466610e49785.tar.gz
scummvm-rg350-72148570de56e5c42e2fe8091e9b466610e49785.tar.bz2
scummvm-rg350-72148570de56e5c42e2fe8091e9b466610e49785.zip
DREAMWEB: Add original Dreamweb assembly sources
They have been released under the GPL with permission from Neil Dodwell. Note that the version of these sources that was added in 9599894a4b2f79672fc3e2ca5a93ef9c7d457c08 has been tweaked to prepare for processing by tasmrecover.
Diffstat (limited to 'devtools/tasmrecover/dreamweb/monitor.asm')
-rw-r--r--devtools/tasmrecover/dreamweb/monitor.asm1496
1 files changed, 1496 insertions, 0 deletions
diff --git a/devtools/tasmrecover/dreamweb/monitor.asm b/devtools/tasmrecover/dreamweb/monitor.asm
new file mode 100644
index 0000000000..7cc1a5a4dd
--- /dev/null
+++ b/devtools/tasmrecover/dreamweb/monitor.asm
@@ -0,0 +1,1496 @@
+;Copyright (c) 1990-2011 by Neil Dodwell
+;Released with permission from Neil Dodwell under GPLv2
+;See LICENSE file for full license text
+Usemon proc near
+
+ mov lasttrigger,0
+
+ push cs ;start off with no file name
+ pop es
+ mov di,offset cs:currentfile+1
+ mov cx,12
+ mov al,32
+ rep stosb
+ push cs ;start off with no file name
+ pop es
+ mov di,offset cs:operand1+1
+ mov cx,12
+ mov al,32
+ rep stosb
+
+ push cs ;clear all keys
+ pop es
+ mov di,offset cs:keys
+ mov byte ptr [es:di],1
+ add di,26
+ mov cx,3
+keyloop: mov byte ptr [es:di],0
+ add di,26
+ loop keyloop
+
+ call createpanel
+ call showpanel
+ call showicon
+ call drawfloor
+ call getridofall ;reels
+
+ mov dx,offset cs:mongraphicname
+ call loadintotemp
+ call loadpersonal
+ call loadnews
+ call loadcart
+ mov dx,offset cs:characterset2
+ call loadtempcharset
+
+ call printoutermon
+ call initialmoncols
+ call printlogo
+ call worktoscreen
+ call turnonpower
+ call fadeupyellows
+ call fadeupmonfirst
+
+ mov monadx,76
+ mov monady,141
+ mov al,1
+ call monmessage
+ mov cx,120
+ call hangoncurs
+ mov al,2
+ call monmessage
+ mov cx,60
+ call randomaccess
+ mov al,3
+ call monmessage
+ mov cx,100
+ call hangoncurs
+ call printlogo
+ call scrollmonitor
+ mov bufferin,0
+ mov bufferout,0
+
+moreinput: mov di,monadx
+ mov bx,monady
+ push di bx
+ call input
+ pop bx di
+ mov monadx,di
+ mov monady,bx
+ call execcommand
+ cmp al,0
+ jz moreinput
+
+endmon: call getridoftemp
+ call getridoftempcharset
+ mov es,textfile1
+ call deallocatemem
+ mov es,textfile2
+ call deallocatemem
+ mov es,textfile3
+ call deallocatemem
+ mov getback,1
+ mov al,26
+ call playchannel1
+ mov manisoffscreen,0
+ call restoreall ;reels
+ call redrawmainscrn
+ call worktoscreenm
+ ret
+
+ endp
+
+
+
+
+
+
+Printoutermon proc near
+
+ mov di,40
+ mov bx,32
+ mov ds,tempgraphics
+ mov al,1
+ mov ah,0
+ call showframe
+ mov di,264
+ mov bx,32
+ mov ds,tempgraphics
+ mov al,2
+ mov ah,0
+ call showframe
+ mov di,40
+ mov bx,12
+ mov ds,tempgraphics
+ mov al,3
+ mov ah,0
+ call showframe
+ mov di,40
+ mov bx,164
+ mov ds,tempgraphics
+ mov al,4
+ mov ah,0
+ call showframe
+ ret
+
+ endp
+
+
+
+
+
+
+
+Loadpersonal proc near
+
+ mov al,location
+ mov dx,offset cs:monitorfile1
+ cmp al,0
+ jz foundpersonal
+ cmp al,42
+ jz foundpersonal
+ mov dx,offset cs:monitorfile2
+ cmp al,2
+ jz foundpersonal
+
+foundpersonal: call openfile
+ call readheader
+ mov bx,[es:di]
+ push bx
+ mov cl,4
+ shr bx,cl
+ call allocatemem
+ mov textfile1,ax
+ mov ds,ax
+ pop cx
+ mov dx,0
+ call readfromfile
+ call closefile
+ ret
+
+ endp
+
+
+
+
+Loadnews proc near ;textfile2 holds information
+ ;accessable by anyone
+ mov al,newsitem
+ mov dx,offset cs:monitorfile10
+ cmp al,0
+ jz foundnews
+ mov dx,offset cs:monitorfile11
+ cmp al,1
+ jz foundnews
+ mov dx,offset cs:monitorfile12
+ cmp al,2
+ jz foundnews
+ mov dx,offset cs:monitorfile13
+foundnews: call openfile
+ call readheader
+ mov bx,[es:di]
+ push bx
+ mov cl,4
+ shr bx,cl
+ call allocatemem
+ mov textfile2,ax
+ mov ds,ax
+ pop cx
+ mov dx,0
+ call readfromfile
+ call closefile
+ ret
+
+ endp
+
+
+
+
+
+
+Loadcart proc near
+
+ call lookininterface
+
+ mov dx,offset cs:monitorfile20
+ cmp al,0
+ jz gotcart
+ mov dx,offset cs:monitorfile21
+ cmp al,1
+ jz gotcart
+ mov dx,offset cs:monitorfile22
+ cmp al,2
+ jz gotcart
+ mov dx,offset cs:monitorfile23
+ cmp al,3
+ jz gotcart
+ mov dx,offset cs:monitorfile24
+gotcart: call openfile
+ call readheader
+ mov bx,[es:di]
+ push bx
+ mov cl,4
+ shr bx,cl
+ call allocatemem
+ mov textfile3,ax
+ mov ds,ax
+ pop cx
+ mov dx,0
+ call readfromfile
+ call closefile
+ ret
+
+ endp
+
+
+
+
+
+
+Lookininterface proc near
+
+ mov al,"I"
+ mov ah,"N"
+ mov cl,"T"
+ mov ch,"F"
+ call findsetobject ;this bit searches set obs
+ ;until the interface is found
+ ;al holds object number
+ mov ah,1 ;ah holds type, 1=set object
+ call checkinside ;this searches for any extra
+ ;object inside the interface..
+ cmp cl,numexobjects
+ jz emptyinterface
+ mov al,[es:bx+15] ;get the last letter of ID code
+ inc al
+ ret
+emptyinterface: mov al,0
+ ret
+
+ endp
+
+
+
+
+
+
+
+Turnonpower proc near
+
+ mov cx,3
+powerloop: push cx
+ call powerlighton
+ mov cx,30
+ call hangon
+ call powerlightoff
+ mov cx,30
+ call hangon
+ pop cx
+ loop powerloop
+ call powerlighton
+ ret
+
+ endp
+
+
+
+
+
+Randomaccess proc near
+
+accessloop: push cx
+ call vsync
+ call vsync
+ call randomnum1
+ and al,15
+ cmp al,10
+ jc off
+ call accesslighton
+ jmp chosenaccess
+off: call accesslightoff
+chosenaccess: pop cx
+ loop accessloop
+ call accesslightoff
+ ret
+
+ endp
+
+
+
+Powerlighton proc near
+
+ mov di,257+4
+ mov bx,182
+ mov ds,tempgraphics
+ mov al,6
+ mov ah,0
+ push di bx
+ call showframe
+ pop bx di
+ mov cl,12
+ mov ch,8
+ call multidump
+ ret
+
+ endp
+
+
+
+
+Powerlightoff proc near
+
+ mov di,257+4
+ mov bx,182
+ mov ds,tempgraphics
+ mov al,5
+ mov ah,0
+ push di bx
+ call showframe
+ pop bx di
+ mov cl,12
+ mov ch,8
+ call multidump
+ ret
+
+ endp
+
+
+
+
+Accesslighton proc near
+
+ mov di,74
+ mov bx,182
+ mov ds,tempgraphics
+ mov al,8
+ mov ah,0
+ push di bx
+ call showframe
+ pop bx di
+ mov cl,12
+ mov ch,8
+ call multidump
+ ret
+
+ endp
+
+
+
+
+Accesslightoff proc near
+
+ mov di,74
+ mov bx,182
+ mov ds,tempgraphics
+ mov al,7
+ mov ah,0
+ push di bx
+ call showframe
+ pop bx di
+ mov cl,12
+ mov ch,8
+ call multidump
+ ret
+
+ endp
+
+
+
+
+
+Locklighton proc near
+
+ mov di,56
+ mov bx,182
+ mov ds,tempgraphics
+ mov al,10
+ mov ah,0
+ push di bx
+ call showframe
+ pop bx di
+ mov cl,12
+ mov ch,8
+ call multidump
+ ret
+
+ endp
+
+
+
+
+Locklightoff proc near
+
+ mov di,56
+ mov bx,182
+ mov ds,tempgraphics
+ mov al,9
+ mov ah,0
+ push di bx
+ call showframe
+ pop bx di
+ mov cl,12
+ mov ch,8
+ call multidump
+ ret
+
+ endp
+
+
+
+
+
+
+
+
+
+
+Input proc near
+
+ push cs
+ pop es
+ mov di,offset cs:inputline
+ mov cx,64
+ mov al,0
+ rep stosb
+
+ mov curpos,0
+ mov al,">"
+ mov di,monadx
+ mov bx,monady
+ mov ds,tempcharset
+ mov ah,0
+ call printchar
+ mov di,monadx
+ mov bx,monady
+ mov cl,6
+ mov ch,8
+ call multidump
+ add monadx,6
+ mov ax,monadx
+ mov curslocx,ax
+ mov ax,monady
+ mov curslocy,ax
+
+waitkey: call printcurs
+ call vsync
+ call delcurs
+ call readkey
+ mov al,currentkey
+ cmp al,0
+ jz waitkey
+ cmp al,13
+ jz endofinput
+ cmp al,8
+ jnz notdel
+ cmp curpos,0
+ jz waitkey
+ call delchar
+ jmp waitkey
+notdel: cmp curpos,28
+ jz waitkey
+ cmp currentkey,32
+ jnz notleadingspace
+ cmp curpos,0
+ jz waitkey
+notleadingspace: call makecaps
+ push cs
+ pop es
+ mov si,curpos
+ add si,si
+ add si,offset cs:inputline
+ mov [es:si],al
+
+ cmp al,"Z"+1
+ jnc waitkey
+
+ push ax es si
+ mov di,monadx
+ mov bx,monady
+ mov ds,mapstore
+ mov ax,curpos
+ xchg al,ah
+ mov si,ax
+ mov cl,8
+ mov ch,8
+ call multiget
+ pop si es ax
+
+ push es si
+ mov di,monadx
+ mov bx,monady
+ mov ds,tempcharset
+ mov ah,0
+ call printchar
+ pop si es
+ ;dec cx
+ mov [es:si+1],cl
+ mov ch,0
+ add monadx,cx
+ inc curpos
+ add curslocx,cx
+ jmp waitkey
+
+endofinput: ret
+
+ endp
+
+
+
+
+
+
+
+
+Makecaps proc near
+
+ cmp al,"a"
+ jc notupperc
+ sub al,32
+notupperc: ret
+
+ endp
+
+
+
+
+
+
+
+
+
+Delchar proc near
+
+ dec curpos
+ mov si,curpos
+ add si,si
+ push cs
+ pop es
+ add si,offset cs:inputline
+ mov byte ptr [es:si],0
+ mov al,[es:si+1]
+ mov ah,0
+ sub monadx,ax
+ sub curslocx,ax
+ mov di,monadx
+ mov bx,monady
+ mov ds,mapstore
+ mov ax,curpos
+ xchg al,ah
+ mov si,ax
+ mov cl,8
+ mov ch,8
+ call multiput
+ mov di,monadx
+ mov bx,monady
+ mov cl,al
+ mov ch,8
+ call multidump
+ ret
+
+ endp
+
+
+
+
+
+
+
+Execcommand proc near
+
+ push cs
+ pop es
+ mov bx,offset cs:comlist
+ push cs
+ pop ds
+ mov si,offset cs:inputline
+ mov al,[si]
+ cmp al,0
+ jnz notblankinp
+ call scrollmonitor
+ ret
+
+notblankinp: mov cl,0
+comloop: push bx si
+comloop2: mov al,[si]
+ add si,2
+ mov ah,[es:bx]
+ inc bx
+ cmp ah,32
+ jz foundcom
+ cmp al,ah
+ jz comloop2
+ pop si bx
+ add bx,10
+ inc cl
+ cmp cl,6
+ jnz comloop
+ call neterror
+ mov al,0
+ ret
+foundcom: pop si bx
+ cmp cl,1
+ jz testcom
+ cmp cl,2
+ jz directory
+ cmp cl,3
+ jz accesscom
+ cmp cl,4
+ jz signoncom
+ cmp cl,5
+ jz keyscom
+ jmp quitcom
+
+directory: call dircom
+ mov al,0
+ ret
+
+signoncom: call signon
+ mov al,0
+ ret
+
+accesscom: call read
+ mov al,0
+ ret
+
+keyscom: call showkeys
+ mov al,0
+ ret
+
+testcom: mov al,6
+ call monmessage
+ mov al,0
+ ret
+
+quitcom: mov al,1
+ ret
+
+comlist: db "EXIT "
+ db "HELP "
+ db "LIST "
+ db "READ "
+ db "LOGON "
+ db "KEYS "
+
+keys: db 1,0,"PUBLIC PUBLIC ",0
+ db 0,0,"BLACKDRAGON RYAN ",0
+ db 0,0,"HENDRIX LOUIS ",0
+ db 0,0,"SEPTIMUS BECKETT ",0
+ db 255,255
+
+operand1: db " ",0
+rootdir: db 34,"ROOT ",0
+currentfile db 34," ",0
+
+ endp
+
+
+
+
+
+
+
+Neterror proc near
+
+ mov al,5
+ call monmessage
+ call scrollmonitor
+ ret
+
+ endp
+
+
+
+
+
+
+
+
+
+Dircom proc near
+
+ mov cx,30
+ call randomaccess
+ call parser
+ cmp byte ptr [es:di+1],0
+ jz dirroot
+ call dirfile
+ ret
+
+dirroot: mov logonum,0
+ push cs
+ pop ds
+ mov si,offset cs:rootdir
+ inc si
+ push cs
+ pop es
+ mov di,offset cs:currentfile
+ inc di
+ mov cx,12
+ rep movsb
+ call monitorlogo
+ call scrollmonitor
+
+ mov al,9
+ call monmessage
+
+ mov es,textfile1
+ call searchforfiles
+ mov es,textfile2
+ call searchforfiles
+ mov es,textfile3
+ call searchforfiles
+
+ call scrollmonitor
+ ret
+
+ endp
+
+
+
+
+
+
+Searchforfiles proc near
+
+ mov bx,textstart
+directloop1: mov al,[es:bx]
+ inc bx
+ cmp al,"*"
+ jz endofdir
+ cmp al,34
+ jnz directloop1
+ call monprint
+ jmp directloop1
+endofdir: ret
+
+ endp
+
+
+
+
+
+
+
+
+
+
+
+
+Signon proc near
+
+ call parser
+ inc di
+ push cs
+ pop ds
+ mov si,offset cs:keys
+ mov cx,4
+signonloop: push cx si di
+ add si,14
+ mov cx,11
+signonloop2: lodsb
+ cmp al,32
+ jz foundsign
+ call makecaps
+ mov ah,[es:di]
+ inc di
+ cmp al,ah
+ jnz nomatch
+ loop signonloop2
+nomatch: pop di si cx
+ add si,26
+ loop signonloop
+ mov al,13
+ call monmessage
+ ret
+
+foundsign: pop di si cx ;ds:si contains ad of key matched
+ mov bx,si
+ push ds
+ pop es ;now ds:si is in es:bx
+
+ cmp byte ptr [es:bx],0
+ jz notyetassigned
+
+ mov al,17
+ call monmessage
+ ret
+
+notyetassigned: push es bx
+ call scrollmonitor
+ mov al,15
+ call monmessage
+ mov di,monadx
+ mov bx,monady
+ push di bx
+ call input
+ pop bx di
+ mov monadx,di
+ mov monady,bx
+ pop bx es
+ push es bx
+
+ add bx,2
+ push cs
+ pop ds
+ mov si,offset cs:inputline
+checkpass: lodsw
+ mov ah,[es:bx]
+ inc bx
+ ;cmp al,0
+ cmp ah,32
+ jz passpassed
+ cmp al,ah
+ jz checkpass
+passerror: pop bx es
+ call scrollmonitor
+ mov al,16
+ call monmessage
+ ret
+
+passpassed: mov al,14
+ call monmessage
+ pop bx es
+ push es bx
+ add bx,14
+ call monprint
+ call scrollmonitor
+ pop bx es
+ mov byte ptr [es:bx],1
+ ret
+
+ endp
+
+
+
+
+
+
+
+Showkeys proc near
+
+ mov cx,10
+ call randomaccess
+ call scrollmonitor
+ mov al,18
+ call monmessage
+
+ push cs
+ pop es
+ mov bx,offset cs:keys
+ mov cx,4
+keysloop: push cx bx
+ cmp byte ptr [es:bx],0
+ jz notheld
+ add bx,14
+ call monprint
+notheld: pop bx cx
+ add bx,26
+ loop keysloop
+ call scrollmonitor
+ ret
+
+ endp
+
+
+
+
+
+
+
+
+
+
+
+Read proc near
+
+ mov cx,40
+ call randomaccess
+ call parser
+ cmp byte ptr [es:di+1],0
+ jnz okcom
+ call neterror
+ ret
+okcom: push cs
+ pop es
+ mov di,offset cs:currentfile
+ mov ax,textfile1
+ mov monsource,ax
+ mov ds,ax
+ mov si,textstart
+ call searchforstring
+ cmp al,0
+ jz foundfile2
+ mov ax,textfile2
+ mov monsource,ax
+ mov ds,ax
+ mov si,textstart
+ call searchforstring
+ cmp al,0
+ jz foundfile2
+ mov ax,textfile3
+ mov monsource,ax
+ mov ds,ax
+ mov si,textstart
+ call searchforstring
+ cmp al,0
+ jz foundfile2
+ mov al,7
+ call monmessage
+ ret
+foundfile2: call getkeyandlogo
+ cmp al,0
+ jz keyok1
+ ret
+keyok1: push cs
+ pop es
+ mov di,offset cs:operand1
+ mov ds,monsource
+ call searchforstring
+ cmp al,0
+ jz findtopictext
+ mov al,oldlogonum
+ mov logonum,al
+ mov al,11
+ call monmessage
+ ret
+
+findtopictext: inc bx
+ push es bx
+ call monitorlogo
+ call scrollmonitor
+ pop bx es
+moretopic: call monprint
+ mov al,[es:bx]
+ cmp al,34
+ jz endoftopic
+ cmp al,"="
+ jz endoftopic
+ cmp al,"*"
+ jz endoftopic
+ push es bx
+ call processtrigger
+ mov cx,24
+ call randomaccess
+ pop bx es
+ jmp moretopic
+
+endoftopic: call scrollmonitor
+ ret
+
+ endp
+
+
+
+
+
+
+
+
+
+Dirfile proc near
+
+ mov al,34
+ mov [es:di],al
+ push es di ;save start point held in es:di
+ mov ds,textfile1
+ mov si,textstart
+ call searchforstring
+ cmp al,0
+ jz foundfile
+ pop di es
+ push es di
+ mov ds,textfile2
+ mov si,textstart
+ call searchforstring
+ cmp al,0
+ jz foundfile
+ pop di es
+ push es di
+ mov ds,textfile3
+ mov si,textstart
+ call searchforstring
+ cmp al,0
+ jz foundfile
+
+ pop di es
+ mov al,7
+ call monmessage
+ ret
+
+foundfile: pop ax ax ;discard old values of es:di
+ call getkeyandlogo
+ cmp al,0
+ jz keyok2
+ ret
+
+keyok2: push es bx
+ push cs
+ pop ds
+ mov si,offset cs:operand1+1
+ push cs
+ pop es
+ mov di,offset cs:currentfile+1
+ mov cx,12
+ rep movsb
+ call monitorlogo
+ call scrollmonitor
+ mov al,10
+ call monmessage
+ pop bx es
+
+
+directloop2: mov al,[es:bx]
+ inc bx
+ cmp al,34
+ jz endofdir2
+ cmp al,"*"
+ jz endofdir2
+ cmp al,"="
+ jnz directloop2
+ call monprint
+ jmp directloop2
+
+endofdir2: call scrollmonitor
+ ret
+
+ endp
+
+
+
+
+
+
+Getkeyandlogo proc near
+
+ inc bx
+ mov al,[es:bx]
+ sub al,48
+ mov newlogonum,al
+ add bx,2
+ mov al,[es:bx]
+ sub al,48
+ mov keynum,al
+ inc bx
+ push es bx
+ mov al,keynum
+ mov ah,0
+ mov cx,26
+ mul cx
+ push cs
+ pop es
+ mov bx,offset cs:keys
+ add bx,ax
+ mov al,[es:bx]
+ cmp al,1
+ jz keyok
+ push bx es
+ mov al,12
+ call monmessage
+ pop es bx
+ add bx,14
+ call monprint
+ call scrollmonitor
+ pop bx es
+ mov al,1
+ ret
+
+keyok: pop bx es
+ mov al,newlogonum
+ mov logonum,al
+ mov al,0
+ ret
+
+ endp
+
+
+
+
+
+
+
+
+
+Searchforstring proc near ;finds string at es:di in
+ ;text at ds:si
+
+ mov dl,[es:di] ;needs to know first character
+ ;if it's an equals then we must
+ ;stop at the next quotation mark
+ mov cx,di ;need to remember starting point
+
+restartlook: mov di,cx
+ mov bx,si
+
+ mov dh,0 ;dh holds count of brackets
+ ;brackets are either " or =
+keeplooking: lodsb
+ call makecaps
+ cmp al,"*"
+ jz notfound
+ cmp dl,"="
+ jnz nofindingtopic ;are we looking for a topic?
+ cmp al,34 ;if YES, check we haven't reached
+ jz notfound ;the end of this file.
+nofindingtopic: mov ah,[es:di]
+ cmp al,dl ;all searches bracketed by same thing
+ jnz notbracket
+ inc dh
+ cmp dh,2
+ jz complete
+notbracket: cmp al,ah
+ jnz restartlook
+ inc di
+ jmp keeplooking
+complete: push ds ;es:bx returns found string
+ pop es
+ mov al,0
+ mov bx,si
+ ret
+notfound: mov al,1
+ ret
+
+ endp
+
+
+
+
+
+
+Parser proc near
+
+ push cs
+ pop es
+ mov di,offset cs:operand1
+ mov cx,13
+ mov al,0
+ rep stosb
+
+ mov di,offset cs:operand1
+ mov al,"="
+ stosb
+
+ push cs
+ pop ds
+ mov si,offset cs:inputline
+
+notspace1: lodsw
+ cmp al,32
+ jz stillspace1
+ cmp al,0
+ jnz notspace1
+ jmp finishpars
+
+stillspace1: lodsw
+ cmp al,32
+ jz stillspace1
+
+copyin1: stosb
+ lodsw
+ cmp al,0
+ jz finishpars
+ cmp al,32
+ jnz copyin1
+
+finishpars: mov di,offset cs:operand1
+ ret
+
+ endp
+
+
+
+
+
+
+Scrollmonitor proc near
+
+ push ax bx cx dx di si es ds
+
+ call printlogo
+ mov di,monadx
+ mov bx,monady
+ call printundermon
+ mov ax,monady
+ call worktoscreen
+ mov al,25
+ call playchannel1
+
+ pop ds es si di dx cx bx ax
+ ret
+
+ endp
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Lockmon proc near
+
+ cmp lasthardkey,57
+ jnz notlock
+ call locklighton
+lockloop: cmp lasthardkey,57
+ jz lockloop
+ call locklightoff
+notlock: ret
+
+ endp
+
+
+
+
+
+Monitorlogo proc near
+
+ mov al,logonum
+ cmp al,oldlogonum
+ jz notnewlogo
+ mov oldlogonum,al
+ ;call fadedownmon
+ call printlogo
+ call printundermon
+ call worktoscreen
+ call printlogo
+ ;call fadeupmon
+ call printlogo
+ mov al,26
+ call playchannel1
+ mov cx,20
+ call randomaccess
+ ret
+notnewlogo: call printlogo
+ ret
+
+ endp
+
+
+
+
+
+
+
+
+Printlogo proc near
+
+ mov di,56
+ mov bx,32
+ mov ds,tempgraphics
+ mov al,0
+ mov ah,0
+ call showframe
+ call showcurrentfile
+ ret
+
+ endp
+
+
+
+
+
+
+Showcurrentfile proc near
+
+ mov di,178 ;99
+ mov bx,37
+ mov si,offset cs:currentfile+1
+curfileloop: mov al,[cs:si]
+ cmp al,0
+ jz finishfile
+ inc si
+ push si
+ if foreign
+ call modifychar
+ endif
+ mov ds,tempcharset
+ mov ah,0
+ call printchar
+ pop si
+ jmp curfileloop
+finishfile: ret
+
+ endp
+
+
+
+
+
+
+
+
+
+Monmessage proc near
+
+ mov es,textfile1
+ mov bx,textstart
+ mov cl,al
+ mov ch,0
+monmessageloop: mov al,[es:bx]
+ inc bx
+ cmp al,"+"
+ jnz monmessageloop
+ loop monmessageloop
+ call monprint
+ ret
+
+ endp
+
+
+
+
+
+
+Processtrigger proc near
+
+ cmp lasttrigger,"1"
+ jnz notfirsttrigger
+ mov al,8
+ call setlocation
+ mov al,45
+ call triggermessage
+ ret
+
+notfirsttrigger: cmp lasttrigger,"2"
+ jnz notsecondtrigger
+ mov al,9
+ call setlocation
+ mov al,55
+ call triggermessage
+ ret
+
+notsecondtrigger: cmp lasttrigger,"3"
+ jnz notthirdtrigger
+ mov al,2
+ call setlocation
+ mov al,59
+ call triggermessage
+
+notthirdtrigger: ret
+
+ endp
+
+
+
+
+Triggermessage proc near
+
+ push ax
+ mov di,174
+ mov bx,153
+ mov cl,200
+ mov ch,63
+ mov ds,mapstore
+ mov si,0
+ call multiget
+ pop ax
+ call findpuztext
+ mov di,174
+ mov bx,156
+ mov dl,141
+ mov ah,16
+ call printdirect
+ mov cx,140
+ call hangon
+ call worktoscreen
+ mov cx,340
+ call hangon
+ mov di,174
+ mov bx,153
+ mov cl,200
+ mov ch,63
+ mov ds,mapstore
+ mov si,0
+ call multiput
+ call worktoscreen
+ mov lasttrigger,0
+ ret
+
+ endp
+
+
+
+
+
+
+Printcurs proc near
+
+ push si di ds dx bx es
+ mov di,curslocx
+ mov bx,curslocy
+ mov cl,6
+ mov ch,8
+ if foreign
+ sub bx,3
+ mov ch,11
+ endif
+ mov ds,buffers
+ mov si,textunder
+ push di bx
+ call multiget
+ pop bx di
+
+ push bx di
+ inc maintimer
+ mov ax,maintimer
+ and al,16
+ jnz flashcurs
+ mov al,"/"
+ sub al,32
+ mov ah,0
+ mov ds,tempcharset
+ call showframe
+
+flashcurs: pop di bx
+ sub di,6
+ mov cl,12
+ if foreign
+ mov ch,11
+ else
+ mov ch,8
+ endif
+ call multidump
+
+ pop es bx dx ds di si
+ ret
+
+ endp
+
+
+
+
+
+
+Delcurs proc near
+
+ push es bx di ds dx si
+ mov di,curslocx
+ mov bx,curslocy
+ mov cl,6
+ mov ch,8
+ if foreign
+ sub bx,3
+ mov ch,11
+ endif
+ push di bx cx
+ mov ds,buffers
+ mov si,textunder
+ call multiput
+ pop cx bx di
+ call multidump
+finishcurdel:
+ pop si dx ds di bx es
+ ret
+
+ endp
+
+
+
+
+
+ \ No newline at end of file