📄 hco00_00.asm
字号:
LD MEX,MFX
CLR MFX
DIVU MEX,#100
STB MEX,N100[0]
LD MEX,MFX
CLR MFX
DIVU MEX,#10
STB MEX,N10[0]
STB MFX,N1[0]
LDB MBX,N1[0]
LDB MBH,N10[0]
LDB MCX,N100[0]
LDB MCH,N1000[0]
LD MFX,MODMFX[0]
RET
AORS: CLRB MDXH
LDB MAX,X_BYTE[MDX]
CLRB MAXH
LDB MDX,[MAX]
AORS1: CMPB MDX,#10
JLT AORS11
LDB MDX,#9
SJMP L2
AORS11: JBS FLAGP4,5,L1
DECB MDX
SJMP L2
L1: INCB MDX
L2: STB MDX,[MAX]
ANDB FLAGP4,#0DFH
RET
DEAL: ST MFX,MODMFX[0]
LDB MFX,#4
CLR MDX
DEAL02: LDB MAX,X_BYTE[MDX]
LDB MFXH,[MAX]
CMPB MFXH,#9
JGT DEAL01
CMPB MFXH,#0
JLT DEAL01
INC MDX
DJNZ MFX,DEAL02
CLR MDX
LDB MDX,MCH
MULU MEX,MDX,#1000
MULB MDX,MCX,#100
ADD MEX,MDX
CLR MDX
LDB MDX,MBH
MULB MDX,#10
ADD MEX,MDX
EXTB MBX
ADD MEX,MBX
SJMP RET0
DEAL01: LD MEX,MPNT
RET0: LD MFX,MODMFX[0]
RET
POS1: JBS FLAGP4,3,PL1
SJMP PLRET
PL1: CLR MBX
LDB MAXH,MAX
PL3: LDB MCX,X_KEYPOS[MBX]
ANDB MAXH,MCX
JE PL2
LDB MAXH,MAX
INCB MBX
CMPB MBX,#5
JLE PL3
SJMP PLRET
PL2: ORB FLAGP4,X_DIR[MBX]
SHL MBX,#1
LD MCX,X_CALL[MBX]
CALL PL4
PLRET: RET
PL4: BR [MCX]
POS: CLR MBX
CLR MCX
LDB MAXH,MAX
P2: LDB MCX,X_KEYPOS[MBX]
ANDB MAXH,MCX
JE P1
LDB MAXH,MAX
INCB MBX
CMPB MBX,#3
JLE P2
SJMP PRET
P1: LDB MCX,X_CMBYTE[MBX]
LDB MDXH,[MCX]
LDB MDX,X_CMPOS[MBX]
CMPB MDXH,MDX
JE P3
ADDB MDXH,X_CMMOVE[MBX]
STB MDXH,[MCX]
P3: CALL CLCURSOR
CALL SETCURSOR
PRET: RET
HEXTODEC:
ST MAX,HEXTMAX[R0]
ST MBX,HEXTMBX[R0]
ST MCX,HEXTMCX[R0]
ST MDX,HEXTMDX[R0]
ST MEX,HEXTMEX[R0]
ST MFX,HEXTMFX[R0]
LD MCX,#86A0H
LD MDX,#1H
CLR MEX
GETIPF03:CMPL MCX,MAX
JH GETIPF01
INC MEX
SUB MAX,MCX
SUBC MBX,MDX
SJMP GETIPF03
GETIPF01:CLR MFX
DIV MEX,#10
ST MEX,MILLION[R0]
ST MFX,HUNTHOUS[R0]
DIV MAX,#10000
ST MAX,TENTHOUS[R0]
LD MAX,MBX
CLR MBX
DIV MAX,#10
ST MBX,ONEBYTE[R0]
CLR MBX
DIV MAX,#10
ST MBX,TENBYTE[R0]
CLR MBX
DIV MAX,#10
ST MBX,HUNDRY[R0]
ST MAX,THOUSAND[R0]
LD MFX,HEXTMFX[R0]
LD MEX,HEXTMEX[R0]
LD MDX,HEXTMDX[R0]
LD MCX,HEXTMCX[R0]
LD MBX,HEXTMBX[R0]
LD MAX,HEXTMAX[R0]
RET
XSASCII:st max,xascmax[r0]
st mpnt,xascmpnt[r0]
st mcnt,xascmcnt[r0]
st mcx,xascmcx[r0]
st mdx,xascmdx[r0]
decb max
shlb max,#1
decb maxh
shlb maxh,#3
clrb mcnth
CMPB MAXH,#63
JH XAS001
XAS002: CALL SETM202P
LDB MCNT,#8
XAS003: LDB MCXH,[Mpnt]+
xasa02: LDB MCX,STAM202[R0]
jbs mcx,7,xasa02
STB MCXH,WDAM202[R0]
DJNZ MCNT,XAS003
incb max
ldb mcnt,#8
CALL SETM202P
XASa03: LDB MCXH,[Mpnt]+
xasa04: LDB MCX,STAM202[R0]
ANDB MCX,#10010000B
JNE XASa04
STB MCXH,WDAM202[R0]
DJNZ MCNT,XASa03
sjmp xasquit
XAS001: SUBB MAXH,#64
xas006: CALL SETS202P
LDB MCNT,#8
XAS005: LDB MCX,[Mpnt]+
XASa06: LDB MCXh,STAS202[R0]
jbs mcxh,7,xasa06
STB MCX,WDAS202[R0]
DJNZ MCNT,XAS005
incb max
LDB MCNT,#8
CALL SETS202P
xas007: LDB MCX,[Mpnt]+
XASa07: LDB MCXh,STAS202[R0]
jbs mcxh,7,xasa07
STB MCX,WDAS202[R0]
DJNZ MCNT,XAS007
xasquit:ld max,xascmax[r0]
ld mcx,xascmcx[r0]
ld mdx,xascmdx[r0]
ld mpnt,xascmpnt[r0]
ld mcnt,xascmcnt[r0]
RET
XNUMBER:ST MAX,XNUMAX[R0]
ST MBX,XNUMBX[R0]
ST MCX,XNUMCX[R0]
ST MDX,XNUMDX[R0]
ST MCNT,XNUMCNT[R0]
ST MPNT,XNUMPNT[0]
LDB MBX,MCNTH
DECB MBX
MULB MBX,#2
SUB MBX,#ONEBYTE
NEG MBX
XNUM01:
CMPB MCNTH,DIPBIT[R0]
JNE XNUM02
LD MPNT,#DIPF
CALL XSASCII
ADDB MAXH,#1
XNUM02:
LD MPNT,[MBX]+
MULB MPNT,#16
ADD MPNT,#TABDATA
CALL XSASCII
ADDB MAXH,#1
DJNZ MCNTH,XNUM01
LD MAX,XNUMAX[R0]
LD MBX,XNUMBX[R0]
LD MCX,XNUMCX[R0]
LD MDX,XNUMDX[R0]
LD MCNT,XNUMCNT[R0]
LD MPNT,XNUMPNT[R0]
RET
CLEAR: ST MAX,CLEMAX[R0]
ST MBX,CLEMBX[R0]
ST MCNT,CLEMCNT[R0]
CLR MAX
LDB MCNTH,#8
CLEAR04:CALL SETM202P
LDB MCNT,#64
CLEAR03:LDB MBX,STAM202[R0]
JBS MBX,7,CLEAR03
STB R0,WDAM202[R0]
DJNZ MCNT,CLEAR03
INCB MAX
DJNZ MCNTH,CLEAR04
CLR MAX
LDB MCNTH,#8
CLEAS04:CALL SETS202P
LDB MCNT,#64
CLEAS03:LDB MBX,STAS202[R0]
JBS MBX,7,CLEAS03
STB R0,WDAS202[R0]
DJNZ MCNT,CLEAS03
INCB MAX
DJNZ MCNTH,CLEAS04
LD MAX,#0FFFFH
ST MAX,POSCURSOR[R0]
LDB MAXH,#0C0H
CLEAMBUSY:LDB MAX,STAM202[R0]
JBS MAX,7,CLEAMBUSY
STB MAXH,SHHM202[R0]
CLEASBUSY:LDB MAX,STAS202[R0]
JBS MAX,7,CLEASBUSY
STB MAXH,SHHS202[R0]
LD MAX,CLEMAX[R0]
LD MBX,CLEMBX[R0]
LD MCNT,CLEMCNT[R0]
RET
qdlight:st max,qdsmax[r0]
ldb maxh,#00111111b
qdlight1:ldb max,stam202[r0]
jbs max,7,qdlight1
stb maxh,qdm202[r0]
qdlight2:ldb max,stas202[r0]
jbs max,7,qdlight2
stb maxh,qds202[r0]
LDB MAXH,#0C0H
QDSMBUSY:LDB MAX,STAM202[R0]
JBS MAX,7,QDSMBUSY
STB MAXH,SHHM202[R0]
QDSSBUSY:LDB MAX,STAS202[R0]
JBS MAX,7,QDSSBUSY
STB MAXH,SHHS202[R0]
ld max,qdsmax[r0]
ret
SETM202P:ST MBX,SETMPMBX[R0]
LDB MBXH,MAX
ORB MBXH,#10111000B
SETM2021:LDB MBX,STAM202[R0]
jbs mbx,7,setm2021
STB MBXH,SETPAM202[R0]
LDB MBXH,MAXH
ORB MBXH,#01000000B
SETM2022:LDB MBX,STAM202[R0]
jbs mbx,7,setm2022
STB MBXH,SETADDM202[R0]
LD MBX,SETMPMBX[R0]
RET
SETS202P:ST MBX,SETSPMBX[R0]
LDB MBXH,MAX
ORB MBXH,#10111000B
SETS2021:LDB MBX,STAS202[R0]
jbs mbx,7,sets2021
STB MBXH,SETPAS202[R0]
LDB MBXH,MAXH
ORB MBXH,#01000000B
SETS2022:LDB MBX,STAS202[R0]
jbs mbx,7,sets2022
STB MBXH,SETADDS202[R0]
LD MBX,SETSPMBX[R0]
RET
XSHHZ: st max,Xhzmax[r0]
st mbx,xhzmbx[r0]
st mcx,xhzmcx[r0]
st mdx,xhzmdx[r0]
st mcnt,xhzmcnt[r0]
st mpnt,xhzmpnt[r0]
ldb mcnt,forlength[mpnt]
SHL MPNT,#1
LD Mpnt,forline[MPNT]
clrb maxh
DECB MAX
shlb max,#1
SHLB MAXh,#4
xhz003: ldb mbx,[mpnt]+
mulUb mbx,#32
add mbx,#tabhz
ldB MCNTH,#2
CMPB MAXH,#63
JH XHZ001
XHZ002: CALL SETM202P
LDB Mdx,#16
xhz005: LDB MCX,[MBX]+
xhz004: ldb mcxh,stam202[r0]
jbs mcxh,7,xhz004
STB MCX,WDAM202[R0]
DJNZ Mdx,XHZ005
incb max
djnz mcnth,xhz002
SUBB MAX,#2
addb maxh,#16
djnz mcnt,xhz003
sjmp xhzquit
XHZ001: subb maxh,#64
XHZ008: CALL SETS202P
LDB Mdx,#16
XHZ007: LDB MCX,[MBX]+
xhz006: ldb mcxh,stas202[r0]
jbs mcxh,7,xhz006
STB MCX,WDAS202[R0]
DJNZ Mdx,XHZ007
INCB Max
djnz mcnth,xhz008
SUBB MAX,#2
addb maxh,#80
djnz mcnt,xhz003
XHZQUIT:ld mpnt,xhzmpnt[r0]
LD MCNT,XHZMCNT[R0]
ld mdx,xHZmdx[r0]
ld mcx,xHZmcx[r0]
ld mbx,xHZmbx[r0]
ld max,xHZmax[r0]
RET
CLKINT: PUSHF
CMP BLIGHT,R0
JNE RET3
ANDB FLAGP4,#0E1H
ANDB FLAGP5,#0FEH
LD ADDRBR1,#SUREP1
SJMP RET4
RET3: DEC BLIGHT
RET4: INC TIME
ANDB CLKAXH,CLKAXH
JE RET5
DECB CLKAXH
RET5: NOP
LD CLKBX,TIMER2
SHR CLKBX,#6
STB CLKBX,[PWD]
INCB PWDL
STB R0,[PWD]
INCB PWDL
POPF
RET1: RET
ACQ: PUSHF
STB R0,ADWDRST[R0]
LDB HSOCOM,#38H
ADD HSOTIM,TIMER1,#263H
DETECT: LDB ACQAX,BA1400H[R0]
LDB ACQBX,ACQAX
XORB ACQAX,ADORDER[R0]
ANDB ACQDX,SW4,SW5
ANDB ACQDX,SW6
LDB SW4,SW5
LDB SW5,SW6
LDB SW6,ACQAX
ANDB ACQAX,ACQDX
JE NOCHANGE
XORB ACQBX,ACQAX
XORB SW4,ACQAX
XORB SW5,ACQAX
XORB SW6,ACQAX
STB ACQBX,BA1400H[R0]
LDB ACQCX,BA14CHA[R0]
ORB ACQCX,ACQAX
STB ACQCX,BA14CHA[R0]
LDB HSOCOM,#23H
ADD HSOTIM,TIMER1,#0003H
LD BLIGHT,#1000
NOCHANGE:CMP BLIGHT,R0
JNE ACQ0
LDB HSOCOM,#03H
ADD HSOTIM,TIMER1,#0003H
ACQ0: NOP
NOP
NOP
POPF
RET
X_MPNT: DCB 0,4,8,12,16,20,24,28,32,36,40,40,44,48,52,56,60,65;(18)
DCB 69,76,80,84,88,92,101,104,108
X_MLOOP: DCB 4,4,4,4,4,4,4,4,4,4,0,4,4,4,4,4,4,4,4,4,4,4,4,4,4;(25)
DCB 4,4
X_KEYPOS: DCB 80H,40H,8,2,1,20H
X_CMBYTE: DCB CMAX,CMAX,CMAXH,CMAXH
X_CMPOS: DCB 1,4,9,1
X_CMMOVE: DCB -1,1,8,-8
X_DZPOS: DCW 0101H,0901H,0102H,0902H,0103H,0903H,0104H,0904H
X_CALL: DCW CALLUP,CALLDOWN,CALLRHT,CALLLEFT,CALLADD,CALLADD
X_NUM: DCB 0,0,0,0,0,0,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
DCB 0,0,0
X_MAX: DCW 1003H,1003H,1003H
X_MPNT1: DCW ASS,ASS,ASS
X_BR: DCW BRISW,BRKSW,BRTSW,BRIJW,BRKJW,BRTJW,BRIFQ,BRKFQ
DCW BRTFQ,BRPTBL1,BRPTBL2,BRCTBL1,BRCTBL2,BRWORD,BRNUM
X_MAX1: DCW 0B01H,0B02H,0B03H,0B01H,0B02H,0B03H,0B01H,0B02H
DCW 0B03H,0C01H,0C02H,0C03H,0C04H,0C01H,0C01H
X_MEX: DCB 2,2,2,2,2,2,2,2,2,0,0,0,0,0,0
X_NUM1: DCB 0,0,0,0,0,0,3,3,3,4,0,0,1,0,0,0,0,0,1,0,0,0,0,0
DCB 0,0,0
X_NUM2: DCB 0,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0
DCB 0,0,0
X_MAX2: DCW 0F01H,0F02H,0F03H
X_KW: DCW BRKW1,BRKW1,BRKW1
X_BIT: DCB 01H,02H,04H
X_MAX3: DCB 01H,02H,03H,04H
X_NUM3: DCB 11,12,13,14,15
X_BYTE: DCB MCXH,MCX,MBXH,MBX
X_DIR: DCB 80H,0,40H,0,20H,0
NEXT: DCW SUREP2,STATUS,ZZFG,SUREP1
NEXT1: DCW RECORD,OPERATION,TELECOM,VERSION
NEXT2: DCW CHAP23,DZGUHUA
NEXT3: DCW CHAP25,PASS
SOE_CODE: DCB 69,70,66,67,68,0FFH
SOE_MPNT: DCB 70H,71H,72H,73H,74H
X_XSJM: DCW STAR0,STAR1,STAR2,STAR3
WDTB: DCW 0,93,194,296,398,500,607,705,808,912,1015,1120
DCW 1223,1329,1433,1538,1644,1750,1857,1962,2073
;***************************************************************************
;***************************************************************************
ORG 5000H
TABHZ:
hz00: dcb 010h,010h,010h,0ffh,090h,0f0h,0a0h,0aeh
dcb 0eah,00ah,0eah,0afh,0a2h,0f0h,020h,000h
dcb 002h,042h,081h,07fh,004h,044h,024h,014h
dcb 00ch,0ffh,00ch,014h,024h,066h,024h,000h
hz01: dcb 080h,040h,020h,0f8h,087h,040h,030h,00fh
dcb 0f8h,088h,088h,088h,088h,0cch,088h,000h
dcb 000h,000h,000h,0ffh,000h,000h,000h,000h
dcb 0ffh,008h,008h,008h,008h,008h,000h,000h
hz02: dcb 010h,00ch,004h,024h,024h,024h,025h,0e6h
dcb 024h,024h,034h,024h,004h,014h,00ch,000h
dcb 080h,040h,020h,01fh,020h,040h,040h,07fh
dcb 042h,042h,043h,042h,040h,060h,020h,000h
hz03: dcb 080h,040h,020h,0f8h,007h,004h,0e4h,0a4h
dcb 0a4h,0bfh,0a4h,0a4h,0f6h,024h,000h,000h
dcb 000h,000h,000h,0ffh,040h,040h,07fh,04ah
dcb 04ah,04ah,04ah,04ah,07fh,040h,040h,000h
hz04: dcb 020h,020h,020h,028h,0a8h,06ch,03bh,028h
dcb 0a8h,06ah,0ach,028h,020h,030h,020h,000h
dcb 004h,084h,082h,081h,04ah,04ah,049h,025h
dcb 024h,012h,010h,009h,002h,006h,002h,000h
hz05: dcb 010h,092h,054h,030h,0ffh,050h,094h,032h
dcb 0d8h,017h,010h,010h,0f0h,018h,010h,000h
dcb 002h,082h,04eh,033h,022h,052h,08eh,040h
dcb 023h,014h,008h,016h,061h,0c0h,040h,000h
hz06: dcb 084h,084h,044h,0e4h,054h,04ch,044h,07fh
dcb 044h,04ch,054h,0e4h,044h,0c6h,044h,000h
dcb 040h,040h,040h,05fh,052h,052h,052h,052h
dcb 052h,052h,052h,05fh,040h,060h,040h,000h
hz07: dcb 040h,042h,044h,0c0h,020h,018h,007h,0e4h
dcb 024h,024h,024h,0e4h,004h,0feh,004h,000h
dcb 000h,000h,000h,07fh,020h,010h,008h,01fh
dcb 009h,009h,009h,05fh,080h,07fh,000h,000h
hz08: dcb 040h,020h,0f8h,007h,0f0h,0a0h,090h,04fh
dcb 054h,024h,0d4h,04ch,084h,080h,080h,000h
dcb 000h,000h,0ffh,000h,00fh,080h,092h,052h
dcb 049h,025h,024h,012h,008h,000h,000h,000h
hz09: dcb 004h,0c4h,044h,044h,044h,0feh,044h,020h
dcb 0dfh,010h,010h,010h,0f0h,018h,010h,000h
dcb 000h,07fh,020h,020h,010h,090h,090h,040h
dcb 021h,016h,008h,016h,061h,0c0h,040h,000h
hz0a: dcb 000h,0ffh,002h,012h,092h,092h,092h,0feh
dcb 092h,092h,0dah,092h,002h,0ffh,002h,000h
dcb 000h,0ffh,040h,040h,05fh,048h,048h,048h
dcb 048h,048h,05fh,040h,040h,0ffh,000h,000h
hz0b: dcb 080h,040h,020h,0f8h,007h,000h,000h,000h
dcb 0ffh,040h,020h,010h,018h,000h,000h,000h
dcb 000h,000h,000h,0ffh,000h,004h,002h,001h
dcb 03fh,040h,040h,040h,040h,040h,070h,000h
hz0c: dcb 000h,0f8h,048h,048h,048h,048h,0ffh,048h
dcb 048h,048h,048h,0fch,008h,000h,000h,000h
dcb 000h,007h,002h,002h,002h,002h,03fh,042h
dcb 042h,042h,042h,047h,040h,070h,000h,000h
hz0d: dcb 020h,020h,022h,022h,022h,0e2h,022h,022h
dcb 022h,0e2h,022h,023h,022h,030h,020h,000h
dcb 080h,080h,040h,020h,018h,007h,000h,000h
dcb 000h,03fh,040h,040h,040h,040h,070h,000h
hz0e: dcb 000h,000h,0fch,040h,040h,040h,040h,0ffh
dcb 040h,040h,040h,040h,0fch,000h,000h,000h
dcb 000h,0feh,040h,040h,040h,040h,040h,07fh
dcb 040h,040h,040h,040h,040h,0feh,000h,000h
hz0f: dcb 080h,080h,040h,020h,050h,048h,044h,043h
dcb 044h,048h,050h,020h,040h,0c0h,040h,000h
dcb 000h,000h,000h,0feh,042h,042h,042h,042h
dcb 042h,042h,042h,0ffh,002h,000h,000h,000h
hz10: dcb 000h,080h,040h,020h,098h,086h,080h,080h
dcb 083h,08ch,090h,020h,0c0h,080h,080h,000h
dcb 001h,000h,080h,040h,020h,01fh,000h,040h
dcb 080h,040h,03fh,000h,000h,000h,000h,000h
hz11: dcb 000h,000h,000h,000h,080h,0c0h,0c0h,080h
dcb 000h,000h,000h,000h,000h,000h,000h,000h
dcb 000h,000h,000h,000h,031h,07bh,07bh,031h
dcb 000h,000h,000h,000h,000h,000h,000h,000h
hz12: dcb 000h,000h,000h,000h,000h,000h,000h,000h
dcb 000h,000h,000h,000h,000h,000h,000h,000h
dcb 000h,000h,000h,000h,000h,000h,000h,000h
dcb 000h,000h,000h,000h,000h,000h,000h,000h
hz13: dcb 000h,000h,000h,000h,000h,000h,000h,004h
dcb 0fch,004h,000h,000h,000h,000h,000h,000h
dcb 000h,000h,000h,000h,000h,000h,000h,020h
dcb 03fh,020h,000h,000h,000h,000h,000h,000h
hz14: dcb 000h,000h,000h,000h,000h,004h,0fch,004h
dcb 000h,004h,0fch,004h,000h,000h,000h,000h
dcb 000h,000h,000h,000h,000h,020h,03fh,020h
dcb 000h,020h,03fh,020h,000h,000h,000h,000h
hz15: dcb 000h,040h,020h,01eh,010h,010h,010h,0ffh
dcb 010h,010h,010h,018h,010h,0
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -