📄 t25.asm
字号:
POP BX
RET
;***********WRITE DATA******************
WDATA: LCALL CALCH
LDB DL,#0AAH ;WRITE A TESTED FLAG
STB DL,[CX]+
STB YLFLAG,[CX]+
LDB AL,#TRAINNO
LDB AH,#00H
LDB BL,#04H
LDB HB,#00H
LCALL MOVEDATA ;SAVE TRAIN NO
LDB BL,#07H
LDB HB,#00H
LD AX,#DATESAVE
INC AX
LCALL MOVEDATA ;SAVE THE DATE
LCALL CALCR ;CALCULATE GANG ADDR
LDB DL,#0AAH ;WRITE TESTED FLAG
STB DL,[CX]+
LD DX,ZHS
STB DL,[CX]+ ;SAVE ZHUAN SUI
STB DH,[CX]+
STB GOOD,[CX]+ ;SAVE GOOD
STB MAXPAH,[CX]+ ;SAVE MAX
STB WIDEH,[CX]+ ;SAVE WIDE
STB WIDENUMH,[CX]+ ;SAVE WIDE NUM
STB MAXPAL,[CX]+ ;SAVE MAX
STB WIDEL,[CX]+ ;SAVE WIDE
STB WIDENUML,[CX]+ ;SAVE WIDE NUM
LDB BL,#07H
LDB HB,#00H
LD AX,#DATESAVE
INC AX
LCALL MOVEDATA
LD WIDESTA,WIDESTAH ;SAVE THE MAX 100
LDB AX,#DIVKEEP
LDB AH,#00H
SUB WIDESTA,AX
LD AX,WIDESTA
LDB BL,#KEEPNUM
LDB HB,#00H
LCALL MOVEDATA
LD WIDESTA,WIDESTAL ;SAVE THE MIN 100
LDB AX,#DIVKEEP
LDB AH,#00H
SUB WIDESTA,AX
LD AX,WIDESTA
LDB BL,#KEEPNUM
LDB HB,#00H
LCALL MOVEDATA
RET
;*********** DISP SELECT******************
;RETURN: SAVENO=LOCATION NO.
; 0FFH IS EMPTY
SELEJCH: LCALL CLEAR
LD ADRESULT,#KEEPADD
LD BX,#0000H
LDB SAVENO,#0FFH
JSNEXT: LD AX,BX
SHL AX,#01
ADD AX,#DPTAB
LD DPLINE,[AX]
LDB AX,#03H
MULUB AX,BX
ADD AX,#SYB1
LD DPSTRING,AX
LCALL STRING
LDB DL,[ADRESULT]
CMPB DL,#0AAH
JE EXSHJ
JSNOD: LD DPSTRING,#MENU04
ADD DPSTRING,#0002H
LCALL STRING
JSADD: ADD ADRESULT,#COMMNUM
INC BX
CMP BX,#0006H
JE SELEWAIT
SJMP JSNEXT
EXSHJ: LD AX,ADRESULT
INC AX
LDB DL,[AX]+
CMPB DL,#03H
JH JSNOD
LDB SAVENO,#00H
LDB CL,#TRAINNO
LDB CH,#00H
PUSH BX
LD BX,#0004H
LCALL MOVEDATA
LCALL DISPTRAIN
POP BX
SJMP JSADD
SELEWAIT:CMPB SAVENO,#0FFH
JE NOTRAIN
SJMP YESTRAIN
NOTRAIN:LCALL CLEAR
LD DPLINE,#0202H ;NO TRIAN TESTED
LD DPSTRING,#EMPTRAIN
LCALL STRING
LD DPLINE,#0406H
LD DPSTRING,#JIXU
LCALL STRING
LCALL INKEY
RET
YESTRAIN:
LD DPLINE,#0206H
LD DPSTRING,#XUANZE
LCALL STRING
LD DPLINE,#0806H
LD DPSTRING,#SHUJU
LCALL STRING
SELEINKEY:
LCALL INKEY
CMPB KEY,#06H
JH SELEINKEY
CMPB KEY,#00H
JE SELEINKEY
LDB SAVENO,KEY
DECB SAVENO
LCALL CALCH
LDB DL,[CX]+
CMPB DL,#0AAH
JNE SELEEXIT
LDB DL,[CX]
CMPB DL,#03H
JH SELEEXIT
RET
SELEEXIT:LDB SAVENO,#0FFH
RET
;***********DISP TRAIN NO*************
DISPTRAIN:PUSH AX
PUSH BX
LDB AL,#TRAINNO
LDB AH,#00H
LDB BL,#04H
INCB DPLINE
DTRAIN: LDBZE DPCHAR,[AX]+
LCALL DISPNUM
DJNZ BL,DTRAIN
DECB DPLINE
POP BX
POP AX
RET
;*********** DISP ALL GANG **************
DISPALL:LCALL CLEAR
LD DPLINE,#0000H
LD DPSTRING,#HAO
LCALL STRING
LD DPLINE,#0004H
LD DPSTRING,#HUAI
LCALL STRING
LDB BX,#00H
LD MAXPAH,#0000H ;GANG HAO 'S COUNT
LD MAXPAL,#0000H ;GANG HUAI'S COUNT
LD GANGHAOL,#0000H
TESTGNEXT:
CMPB BX,#08H
JNH LOWGANG
LDB GANGHAOL,#01H
LDB GANGHAOH,BX
SUBB GANGHAOH,#09H
SJMP TESTBEGIN
LOWGANG:LDB GANGHAOH,BX
INCB GANGHAOH
TESTBEGIN:
LCALL CALCR ;TEST GANG IS OK OR NO
LDB DL,[CX]
CMPB DL,#0AAH
JE GANGTEST
TNGANG: INCB BX
CMPB BX,#10H
JNE TESTGNEXT
SJMP DPALLNEXT
GANGTEST:ADD CX,#0003H
LDB DL,[CX]
CMPB DL,#00H
JE GANGHAO
CMPB DL,#01H
JE GANGHUAI
SJMP TNGANG
GANGHAO:LD AX,MAXPAH
SHL AX,#01H
ADD AX,#GHAOTAB
INC MAXPAH
LD DPLINE,[AX]
LDBZE DPCHAR,GANGHAOL
LCALL DISPNUM
LDBZE DPCHAR,GANGHAOH
LCALL DISPNUM
LD AX,MAXPAH
LDB DL,#05H
DIVUB AX,DL
CMPB AH,#00H
JE TNGANG
LDB DPCHAR,#10H
LCALL DISPNUM
SJMP TNGANG
GANGHUAI:LD AX,MAXPAL
SHL AX,#01H
ADD AX,#GHUAITAB
INC MAXPAL
LD DPLINE,[AX]
LDBZE DPCHAR,GANGHAOL
LCALL DISPNUM
LDBZE DPCHAR,GANGHAOH
LCALL DISPNUM
LD AX,MAXPAL
LDB DL,#05H
DIVUB AX,DL
CMPB AH,#00H
JE TNGANG
LDB DPCHAR,#10H
LCALL DISPNUM
SJMP TNGANG
DPALLNEXT:
LCALL INKEY
LCALL CLEAR
LCALL CALCH
LD AX,CX
ADD AX,#0006H
LDB BL,#07H
LDB HB,#00H
LD CX,#DATESAVE
INC CX
LCALL MOVEDATA
LCALL DISPDATE
LCALL CALCH
INC CX
LDB YLFLAG,[CX]
INC CX
LD AX,CX
LDB CL,#TRAINNO
LDB CH,#00H
LDB BL,#04H
LDB HB,#00H
LCALL MOVEDATA
LDB BL,#06H ;DISPLAY YLB OR QMX OR ZSX
MULUB BL,YLFLAG
ADD BX,#SUBM01
ADD BX,#0002H
LD DPSTRING,BX
LD DPLINE,#0002H
LCALL STRING
LD DPSTRING,#MENU01
ADD DPSTRING,#0002H
LCALL STRING
LD DPSTRING,#BAOCUN
ADD DPSTRING,#0004H
LCALL STRING
LD DPLINE,#0004H
LD DPSTRING,#TRAIN
LCALL STRING
LCALL DISPTRAIN ;DISPLAY TRAIN
RET
;***********DISP PROC******************
DISPSHJ:LCALL SELEJCH
CMPB SAVENO,#0FFH
JNE DPBEGIN
RET
DPBEGIN:LCALL DISPALL
LD DPLINE,#0006H
LD DPSTRING,#DANGANG
LCALL STRING
LD DPLINE,#0A06H
LD DPSTRING,#FANHUI
LCALL STRING
LCALL INKEY
CMPB KEY,#0FH
JNE DNGANG
RET
DNGANG: LCALL CLEAR
LD DPLINE,#0000H
LD DPSTRING,#TRAIN
LCALL STRING
LCALL DISPTRAIN
LD DPLINE,#0002H
LD DPSTRING,#GANG ;SHU RU GANG HAO
LCALL STRING
LDB BL,#02H
LDB AL,#GANGHAOL
LDB AH,#00H
INCB DPLINE
DINGANG:LCALL INKEY
LDBZE DPCHAR,KEY
LCALL DISPNUM
STB KEY,[AX]+
DJNZ BL,DINGANG
DECB DPLINE
DJUDGE: LDB AL,#GANGHAOL
LDB AH,#00H
LDB BL,[AX]+
CMPB BL,#01H
JH DNGANG
CMPB BL,#00H
JE DJUDGENEXT
LDB BL,[AX]
CMPB BL,#06H
JH DNGANG
LJMP DJUDGEOK
DJUDGENEXT:LDB BL,[AX]
CMPB BL,#09H
JH DNGANG
CMPB BL,#00H
JE DNGANG
DJUDGEOK:LCALL CALCR ;CALC THE GANGHAO ADDRESS
LD AX,CX
LDB DL,[AX]+
CMPB DL,#0AAH
JE TESTGANG ; THIS GANG IS NOT TESTED
LCALL CLEAR
LD DPLINE,#0202H
LD DPSTRING,#EMPGANG
LCALL STRING
LD DPLINE,#0406H ; ANY KEY CONTINUTE
LD DPSTRING,#JIXU
LCALL STRING
LCALL INKEY
SJMP DPXUANZE
TESTGANG:LDB DL,[AX]+
LDB DH,[AX]+
LD ZHS,DX
LDB GOOD,[AX]+
LDB MAXPAH,[AX]+
LDB WIDEH,[AX]+
LDB WIDENUMH,[AX]+
LDB MAXPAL,[AX]+
LDB WIDEL,[AX]+
LDB WIDENUML,[AX]+
LDB BL,#07H
LDB HB,#00H
LD CX,#DATESAVE
INC CX
LCALL MOVEDATA
LCALL DISPRES
LD DPLINE,#0606H ; ANY KEY CONTINUTE
LD DPSTRING,#JIXU
LCALL STRING
LCALL INKEY
DPXUANZE: LCALL CLEAR
LD DPLINE,#0001H
LD DPSTRING,#CESHI ;DISPLAY SELECT
LCALL STRING
LD DPLINE,#0801H
LD DPSTRING,#SHGANG ;DISPLAY SELECT
LCALL STRING
LD DPLINE,#0003H
LD DPSTRING,#BIEGANG ;DISPLAY SELECT
LCALL STRING
LD DPLINE,#0803H
LD DPSTRING,#FANHUI
LCALL STRING
LD DPLINE,#0405H
LD DPSTRING,#XUANZE
LCALL STRING
LCALL INKEY
CMPB KEY,#0FH
JE DISPOK
LCALL CLEAR
CMPB KEY,#0AH
JE DINCGANG
CMPB KEY,#0BH
JE DECGANG
LJMP DNGANG
DINCGANG:ADD GANGHAOL,#0100H
CMP GANGHAOL,#0A00H
JE DINCHI
CMP GANGHAOL,#0701H
JE DINLOW
LJMP DJUDGE
DINCHI: LD GANGHAOL,#0001H
LJMP DJUDGE
DINLOW: LD GANGHAOL,#0100H
LJMP DJUDGE
DISPOK: RET
DECGANG:CMP GANGHAOL,#0100H
JE DECHI
CMP GANGHAOL,#0001H
JE DECLOW
SUB GANGHAOL,#0100H
LJMP DJUDGE
DECHI: LD GANGHAOL,#0601H
LJMP DJUDGE
DECLOW: LD GANGHAOL,#0900H
LJMP DJUDGE
;***********COMM PROC******************
COMMDATA:
LCALL SELEJCH
CMPB SAVENO,#0FFH
JNE COMMBEGIN
RET
COMMINT:LCALL CLEAR
LD DPLINE,#0200H
LD DPSTRING,#COMMERR
LCALL STRING
LD DPLINE,#0406H
LD DPSTRING,#JIXU
LCALL STRING
LCALL INKEY
RET
COMMBEGIN:LCALL CLEAR
LD DPLINE,#0200H
LD DPSTRING,#COMMREADY
LCALL STRING
SHAKEF: ORB SRSTAT,SP_STAT
JBC SRSTAT,6,SHAKEF
ANDB SRSTAT,#0BFH
LDB SRCHAR,SBUF
CMPB SRCHAR,#0AAH
JNE COMMINT
LCALL CLEAR
LD DPLINE,#0200H
LD DPSTRING,#COMMWAIT
LCALL STRING
LCALL CALCH
LD BX,#COMMNUM
LD AX,CX ;SAVE THE ADDR
OUTDATA:LDB SRCHAR,[AX]+
OUT: ORB SRSTAT,SP_STAT
JBC SRSTAT,5,OUT
LDB SBUF,SRCHAR
ANDB SRSTAT,#0DFH
IN: ORB SRSTAT,SP_STAT
JBC SRSTAT,6,IN
ANDB SRSTAT,#0BFH
LDB SRCHAR,SBUF
CMPB SRCHAR,#0AAH
JNE COMMINT
LD DPLINE,#0404H
LD CX,BX
DEC CX
LD DX,#0000H
LD EX,#03E8H
DIVU CX,EX
LDBZE DPCHAR,CL ;DISP 1000
LCALL DISPNUM
LD CX,DX
DECB DPLINE
LCALL DISPWIDE
LD DPSTRING,#SBBYTE
LCALL STRING
DEC BX
JNE OUTDATA
LCALL CLEAR
LD DPLINE,#0402H
LD DPSTRING,#COMMOK
LCALL STRING
LD DPLINE,#0406H
LD DPSTRING,#JIXU
LCALL STRING
LCALL INKEY
RET
;***********DISPLAY DATE &TIME*******
DISPDATE:LCALL CLEAR
LD DPLINE,#0001H
LDB BL,YEAR ;DISP YEAR
SHRB BL,#04H
LDBZE DPCHAR,BL
LCALL DISPNUM
LDB BL,YEAR
ANDB BL,#0FH
LDBZE DPCHAR,BL ;DISP 1
LCALL DISPNUM
LDB DPCHAR,#0EH ;DISP .
LCALL DISPNUM
LDB BL,MONTH ;DISP MONTH
SHRB BL,#04H
LDBZE DPCHAR,BL
LCALL DISPNUM
LDB BL,MONTH
ANDB BL,#0FH
LDBZE DPCHAR,BL ;DISP 1
LCALL DISPNUM
LDB DPCHAR,#0EH ;DISP .
LCALL DISPNUM
LDB BL,DATE ;DISP DATE
SHRB BL,#04H
LDBZE DPCHAR,BL
LCALL DISPNUM
LDB BL,DATE
ANDB BL,#0FH
LDBZE DPCHAR,BL ;DISP 1
LCALL DISPNUM
INCB DPCLUM
LDB BL,HOURS ;DISP HOURS
SHRB BL,#04H
LDBZE DPCHAR,BL
LCALL DISPNUM
LDB BL,HOURS
ANDB BL,#0FH
LDBZE DPCHAR,BL ;DISP 1
LCALL DISPNUM
LDB DPCHAR,#0AH ;DISP :
LCALL DISPNUM
LDB BL,MINUTES ;DISP MINUTES
SHRB BL,#04H
LDBZE DPCHAR,BL
LCALL DISPNUM
LDB BL,MINUTES
ANDB BL,#0FH
LDBZE DPCHAR,BL ;DISP 1
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -