home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Power-Programmierung
/
CD1.mdf
/
assemblr
/
library
/
lib4a86
/
lib
/
datetime.lib
< prev
next >
Wrap
Text File
|
1992-02-02
|
6KB
|
470 lines
#IF !LIB4A86
#ELSE
#IF !INTERN_LIB4A86_S
INTERN_LIB4A86_S EQU 01
JMP START
#ENDIF
#ENDIF
ZEITTABELLE STRUC [BX]
ZEIT1_S DW
MINUTEN_S DB 0
STUNDEN_S DB 0
ZEIT2_S DW
HUNDERTS_S DB 0
SEKUNDEN_S DB 0
ZEIT1_E DW
MINUTEN_E DB 0
STUNDEN_E DB 0
ZEIT2_E DW
HUNDERTS_E DB 0
SEKUNDEN_E DB 0
ZEIT1_L DW
MINUTEN_L DB 0
STUNDEN_L DB 0
ZEIT2_L DW
HUNDERTS_L DB 0
SEKUNDEN_L DB 0
ENDS
Z1 DB 0
Z2 DB 0
STOPTIMER:
PUSH BX
ADD BX,OFFSET ZEIT1_E
JMP >L1
STARTTIMER:
PUSH BX
L1:
PUSH DX,CX,AX
MOV AH,02CH
INT 021H
MOV [BX],CX
MOV [BX+2],DX
POP AX
CMP AL,0FFH
JE >L8
CALL KONVERTTIME
L8:
POP CX,DX
POP BX
RET
BERECHNE_LAUFZEIT:
PUSH DX,CX,BX,AX
MOV DX,BX
MOV CX,2
L0:
MOV AX,[BX]
CMP [BX+4],AX
JA >L1
JB >L2
INC BX
INC BX
LOOP L0
JMP >L1
L2:
POP AX
JMP >L9
L1:
MOV BX,DX
MOV CX,064H
MOV AL,HUNDERTS_S
MOV AH,HUNDERTS_E
CALL INTERN_BERECHNE1
MOV HUNDERTS_L,AL
MOV CL,03CH
MOV AL,SEKUNDEN_S
MOV AH,SEKUNDEN_E
CALL INTERN_BERECHNE1
MOV SEKUNDEN_L,AL
MOV AL,MINUTEN_S
MOV AH,MINUTEN_E
CALL INTERN_BERECHNE1
MOV MINUTEN_L,AL
MOV AL,STUNDEN_S
MOV AH,STUNDEN_E
CALL INTERN_BERECHNE1
MOV STUNDEN_L,AL
POP AX
CMP AL,0FFH
JE >L9
MOV CX,ZEIT1_L
MOV DX,ZEIT2_L
CALL KONVERTTIME
CLC
L9:
POP BX,CX,DX
RET
SETTIME:
PUSH SI,DX,CX,BX,AX
CLD
LODSB
MOV BH,AL
CMP BH,5
JE >L1
CMP BH,8
JE >L1
CMP BH,11XD
JNE >L8
L1:
MOV BL,61XD
CALL INTERN_GETDEZVALUE
JC >L8
MOV CH,AL
INC SI
CALL INTERN_GETDEZVALUE
JC >L8
MOV CL,AL
XOR DX,DX
CMP BH,5
JE >L1
INC SI
CALL INTERN_GETDEZVALUE
JC >L8
MOV DH,AL
CMP BH,8
JE >L1
INC SI
MOV BL,101XD
CALL INTERN_GETDEZVALUE
JC >L8
MOV DL,AL
L1:
MOV AH,02DH
INT 021H
OR AL,AL
JE >L9
L8:
STC
L9:
POP AX,BX,CX,DX,SI
RET
SETDATE:
PUSH SI,DX,CX,BX,AX
CLD
LODSB
MOV BH,AL
CMP BH,8
JE >L1
CMP BH,0AH
JNE >L8
L1:
MOV BL,32XD
CALL INTERN_GETDEZVALUE
JC >L8
MOV DL,AL
INC SI
MOV BL,13XD
CALL INTERN_GETDEZVALUE
JC >L8
MOV DH,AL
INC SI
MOV CX,076CH
CMP BH,8
JE >L1
LODSW
CMP AX,'91'
JE >L1
CMP AX,'02'
JNZ >L8
MOV CX,07D0H
L1:
MOV BL,100XD
CALL INTERN_GETDEZVALUE
JC >L8
XOR AH,AH
ADD CX,AX
CMP CX,1980XD
JB >L8
MOV AH,02BH
INT 021H
OR AL,AL
JE >L9
L8:
STC
L9:
POP AX,BX,CX,DX,SI
RET
SONNTAG DB 7XD, 'Sonntag'
MONTAG DB 6XD, 'Montag'
DIENSTAG DB 8XD, 'Dienstag'
MITTWOCH DB 8XD, 'Mittwoch'
DONNERSTAG DB 10XD,'Donnerstag'
FREITAG DB 7XD, 'Freitag'
SAMSTAG DB 7XD, 'Samstag'
T10 DB OFFSET SONNTAG - OFFSET SONNTAG
DB OFFSET MONTAG - OFFSET SONNTAG
DB OFFSET DIENSTAG - OFFSET SONNTAG
DB OFFSET MITTWOCH - OFFSET SONNTAG
DB OFFSET DONNERSTAG - OFFSET SONNTAG
DB OFFSET FREITAG - OFFSET SONNTAG
DB OFFSET SAMSTAG - OFFSET SONNTAG
DB OFFSET T10 - OFFSET SONNTAG
JANUAR DB 6XD,'Januar'
FEBRUAR DB 7XD,'Februar'
MAERZ DB 4XD,'März'
APRIL DB 5XD,'April'
MAI DB 3XD,'Mai'
JUNI DB 4XD,'Juni'
JULI DB 4XD,'Juli'
AUGUST DB 6XD,'August'
SEPTEMBER DB 9XD,'September'
OKTOBER DB 7XD,'Oktober'
NOVEMBER DB 8XD,'November'
DEZEMBER DB 8XD,'Dezember'
T20 DB OFFSET JANUAR - OFFSET JANUAR
DB OFFSET FEBRUAR - OFFSET JANUAR
DB OFFSET MAERZ - OFFSET JANUAR
DB OFFSET APRIL - OFFSET JANUAR
DB OFFSET MAI - OFFSET JANUAR
DB OFFSET JUNI - OFFSET JANUAR
DB OFFSET JULI - OFFSET JANUAR
DB OFFSET AUGUST - OFFSET JANUAR
DB OFFSET SEPTEMBER - OFFSET JANUAR
DB OFFSET OKTOBER - OFFSET JANUAR
DB OFFSET NOVEMBER - OFFSET JANUAR
DB OFFSET DEZEMBER - OFFSET JANUAR
DB OFFSET T20 - OFFSET JANUAR
T3 DB ', der '
KONVERTDATE:
MOV B CS:Z2,'K'
AND AL,01H
JMP >L1
L0001:
PUSH BX
ADD SI,AX
MOV BL,[SI]
XOR BH,BH
POP SI
LEA SI,[SI+BX]
MOV CL,[SI]
XOR CH,CH
INC SI
MOV BX,CX
REP MOVSB
RET
GETDATE:
MOV CS:Z2,'G'
L1:
CLD
PUSH DS,SI,DI,DX,CX,AX,BP
MOV BP,SP
MOV DS,CS
PUSH DI
XOR AX,AX
PUSH AX
INC DI
CMP Z2,'G'
JNE >L1
MOV AH,02AH
INT 021H
L1:
XOR AH,AH
CMP B[BP+2],2
JL >W1
PUSH CX
MOV SI,OFFSET T10
MOV BX,OFFSET SONNTAG
CALL L0001
MOV SI,OFFSET T3
MOV CX,6
ADD BX,CX
REP MOVSB
POP CX
POP AX
PUSH BX
W1:
MOV AX,DX
MOV BH,'.'
CALL INTERN_STOREALDEZ
CMP B[BP+2],2
JLE >W2
PUSH CX
MOV AL,' '
STOSB
MOV AX,DX
XCHG AH,AL
XOR AH,AH
MOV SI,OFFSET T20-1
MOV BX,OFFSET JANUAR
CALL L0001
POP CX
MOV AL,' '
STOSB
POP AX
ADD AX,BX
INC AX
PUSH AX
JMP >W3
W2:
MOV AL,DH
MOV BH,'.'
CALL INTERN_STOREALDEZ
W3:
SUB CX,076CH
MOV AX,'91'
CMP CX,064H
JB >L1
MOV AX,'02'
SUB CX,064H
L1:
CMP B[BP+2],0
JE >W4
STOSW
L2:
INC W[BP-4],2
W4:
MOV AL,CL
XOR BH,BH
CALL INTERN_STOREALDEZ
POP AX
POP DI
STOSB
POP BP,AX,CX,DX,DI,SI,DS
RET
KONVERTTIME:
MOV CS:Z1,'K'
JMP >L1
GETTIME:
MOV CS:Z1,'G'
L1:
CLD
PUSH DS,SI,DI,DX,CX,AX,BP
MOV BP,SP
MOV DS,CS
PUSH DI
XOR AX,AX
PUSH AX
INC DI
CMP Z1,'G'
JNE >L1
MOV AH,02CH
INT 021H
L1:
MOV AL,CH
CMP B[BP+2],2
JL >W1
MOV BH,' '
CALL INTERN_STOREALDEZ
MOV AX,'hU'
STOSW
MOV AX,' r'
STOSW
ADD W[BP-4],4
MOV AL,CL
XOR BH,BH
CALL INTERN_STOREALDEZ
JMP >L8
W1:
MOV BH,':'
CALL INTERN_STOREALDEZ
MOV AL,CL
CALL INTERN_STOREALDEZ
CMP B[BP+2],0
IF G XOR BH,BH
MOV AL,DH
CALL INTERN_STOREALDEZ
CMP B[BP+2],0
JG >L8
MOV AL,DL
XOR BH,BH
CALL INTERN_STOREALDEZ
L8:
POP AX
POP DI
STOSB
POP BP,AX,CX,DX,DI,SI,DS
RET
INTERN_STOREALDEZ:
PUSH BX
XOR AH,AH
MOV BX,'0' BY 0AH
DIV BL
OR AL,AL
JNZ >L1
CMP B[BP+3],AL
JNE >L2
L1:
ADD AL,BH
STOSB
INC W[BP-4]
L2:
MOV AL,AH
ADD AL,BH
STOSB
INC W[BP-4]
POP BX
OR BH,BH
JE RET
MOV AL,BH
STOSB
INC W[BP-4]
RET
INTERN_GETDEZVALUE:
LODSB
SUB AL,'0'
CMP AL,0AH
JNC >L1
MOV AH,AL
SHL AL,1
SHL AL,1
SHL AL,1
ADD AL,AH
ADD AL,AH
XCHG AH,AL
LODSB
SUB AL,'0'
CMP AL,0AH
JNC >L1
ADD AL,AH
CMP AL,BL
L1:
CMC
L8:
RET
INTERN_BERECHNE1:
ADD AL,CH
XOR CH,CH
CMP AH,AL
JAE >L1
PUSH CX
SUB CL,AL
MOV AL,CL
POP CX
ADD AL,AH
INC CH,1
JMP >L2
L1:
SUB AH,AL
MOV AL,AH
L2:
RET
#IF !INTERN_CMARK0
INTERN_CMARK0 EQU 01H
INTERN_CMARK1:
PUSH BP
MOV BP,SP
MOV BX,06H
SUB CH,[BP+SI]
SUB AH,[BX+SI]
DEC SP
DEC CX
INC DX
XOR AL,041H
CMP B[02820H],DH
INC BX
SUB W[BX+SI],SP
INC DX
CS AND B[BP+DI+043H],DL
DEC AX
INC BP
DEC BP
DEC BP
INC BP
PUSH DX
AND B[BP+SI],CH
SUB CH,[BP+SI]
POP DX
MOV SP,BP
POP BP
RET
#ENDIF