1492 lines
17 KiB
NASM
1492 lines
17 KiB
NASM
;Copyright (c) 1990-2012 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
|
|
cmp foreignrelease, 0
|
|
jz $1
|
|
sub bx,3
|
|
mov ch,11
|
|
$1:
|
|
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
|
|
mov ch,8
|
|
cmp foreignrelease, 0
|
|
jz $2
|
|
mov ch,11
|
|
$2:
|
|
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
|
|
cmp foreignrelease, 0
|
|
jz $1
|
|
sub bx,3
|
|
mov ch,11
|
|
$1:
|
|
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
|