home *** CD-ROM | disk | FTP | other *** search
- ;
- ; quwei.asm
- ;
- code segment byte public 'CODE'
- assume cs:code, ds:code
- ;
- include xcs.mac
- ;
- extrn prKeys:near
- extrn DispSames:near
- extrn message:near
- extrn beep:near
- extrn AddSame:near
- extrn ResetSameBuf:near
- ;
- extrn cc2:byte
- extrn cc1:byte
- extrn KeyBuf:byte
- extrn KeyNum:byte
- ;
- public kQuWei
- public QuWei
- ;
- kQuWei proc near
- or ax, ax
- jz kQwRetn
- inc ax
- jz kQwRetn
- dec ax
- jmp kQwCont0
- ;
- kQwRetn: xor ax, ax
- xor cx, cx
- ret
- ;
- kQwCont0: cmp al, 08h
- je kQwBack
- cmp al, RetKey
- je kQwReset
- cmp al, EscKey
- je kQwReset
- cmp al, '['
- je kQwPgBack
- cmp al, ','
- je kQwPgBack
- cmp al, ']'
- je kQwPgFore
- cmp al, '.'
- je kQwPgFore
- cmp ah, 0bh
- ja kQwElse
- cmp al, '0'
- jb kQwElse
- cmp al, '9'
- ja kQwElse
- jmp kQwMatch
- ;
- kQwBack: cmp KeyNum, 1
- je kQwReset
- cmp KeyNum, 0
- je kQwRet0
- dec KeyNum
- dec KeyNum
- mov bl, KeyNum
- xor bh, bh
- mov al, KeyBuf[bx]
- jmp kQwMatch
- ;
- kQwRet0: xor cx, cx
- ret
- ;
- kQwReset: cmp KeyNum, 0
- je kQwRet0
- mov KeyNum, 0
- call message
- xor ax, ax
- jmp kQwRet0
- ;
- kQwPgFore: jmp QuPgFore
- ;
- kQwElse: jmp kQwRet0
- ;
- kQwError: call beep
- xor ax, ax
- jmp kQwRet0
- ;
- kQwPgBack: cmp KeyNum, 0
- je kQwRet0
- xor ax, ax
- cmp KeyNum, 3
- jne kQwRet0
- cmp KeyBuf[02h], '0'
- je kQwRet0
- mov al, KeyBuf[02h]
- dec al
- dec KeyNum
- jmp kQwMatch
- ;
- QuPgFore: cmp KeyNum, 0
- je kQwRet0
- xor ax, ax
- cmp KeyNum, 2
- jne kQwCont1
- mov al, '1'
- mov KeyBuf+2, al
- jmp kQwMatch
- ;
- kQwCont1: cmp KeyNum, 3
- jne kQwRet0
- cmp byte ptr KeyBuf+2, '9'
- je kQwRet0
- mov al, byte ptr KeyBuf+2
- inc al
- dec KeyNum
- jmp kQwMatch
- ;
- kQwMatch: xor bh, bh
- mov bl, KeyNum
- mov KeyBuf[bx], al
- call prKeys
- inc KeyNum
- cmp KeyNum, 2
- ja QuMatch
- mov byte ptr KeyBuf+2, '0'
- je QuMatch
- xor ax, ax
- jmp kQwRet0
- ;
- toQwError: jmp kQwError
- ;
- QuMatch: call ResetSameBuf
- lea bx, KeyBuf
- mov ax, [bx]
- sub ax, 3030h
- and ax, 0f0fh
- xchg ah, al
- aad
- or al, al
- jz toQwError
- cmp al, 94
- ja toQwError
- add al, 0a0h
- mov cc1, al
- mov ax, [bx+2]
- sub ax, 3030h
- and ax, 0f0fh
- xchg ah, al
- cmp KeyNum, 4
- je QuOnlyOne
- mov cx, 10
- mov al, 0ffh
- cmp ah, 0
- jne kQwLoop
- inc al
- dec cl
- kQwLoop: inc al
- push ax
- push cx
- aad
- add al, 0a0h
- mov cc2, al
- call AddSame
- mov al, cc2
- cmp al, 0feh
- pop cx
- pop ax
- jae kQwEnd
- loop kQwLoop
- ;
- kQwEnd: call DispSames
- xor ax, ax
- jmp kQwRet0
- ;
- kQwError4: jmp kQwError
- ;
- QuOnlyOne: aad
- or al, al
- je kQwError4
- cmp al, 94
- ja kQwError4
- add al, 0a0h
- mov cc2, al
- call AddSame
- mov KeyNum, 0
- call message
- xor ax, ax
- mov cx, 0101h
- ret
- kQuWei endp
- ;
- QuWei proc far
- call kQuWei
- retf
- QuWei endp
- ;
- code ends
- end
-