home *** CD-ROM | disk | FTP | other *** search
/ Power-Programmierung / CD1.mdf / assemblr / library / lib4a86 / lib / datetime.lib < prev    next >
Text File  |  1992-02-02  |  6KB  |  470 lines

  1. #IF !LIB4A86
  2. #ELSE
  3. #IF !INTERN_LIB4A86_S
  4. INTERN_LIB4A86_S EQU 01
  5. JMP START
  6. #ENDIF
  7. #ENDIF
  8. ZEITTABELLE STRUC [BX]
  9. ZEIT1_S DW
  10. MINUTEN_S DB 0
  11. STUNDEN_S DB 0
  12. ZEIT2_S DW
  13. HUNDERTS_S DB 0
  14. SEKUNDEN_S DB 0
  15. ZEIT1_E DW
  16. MINUTEN_E DB 0
  17. STUNDEN_E DB 0
  18. ZEIT2_E DW
  19. HUNDERTS_E DB 0
  20. SEKUNDEN_E DB 0
  21. ZEIT1_L DW
  22. MINUTEN_L DB 0
  23. STUNDEN_L DB 0
  24. ZEIT2_L DW
  25. HUNDERTS_L DB 0
  26. SEKUNDEN_L DB 0
  27. ENDS
  28. Z1 DB 0
  29. Z2 DB 0
  30. STOPTIMER:
  31. PUSH BX
  32. ADD BX,OFFSET ZEIT1_E
  33. JMP >L1
  34. STARTTIMER:
  35. PUSH BX
  36. L1:
  37. PUSH DX,CX,AX
  38. MOV AH,02CH
  39. INT 021H
  40. MOV [BX],CX
  41. MOV [BX+2],DX
  42. POP AX
  43. CMP AL,0FFH
  44. JE >L8
  45. CALL KONVERTTIME
  46. L8:
  47. POP CX,DX
  48. POP BX
  49. RET
  50. BERECHNE_LAUFZEIT:
  51. PUSH DX,CX,BX,AX
  52. MOV DX,BX
  53. MOV CX,2
  54. L0:
  55. MOV AX,[BX]
  56. CMP [BX+4],AX
  57. JA >L1
  58. JB >L2
  59. INC BX
  60. INC BX
  61. LOOP L0
  62. JMP >L1
  63. L2:
  64. POP AX
  65. JMP >L9
  66. L1:
  67. MOV BX,DX
  68. MOV CX,064H
  69. MOV AL,HUNDERTS_S
  70. MOV AH,HUNDERTS_E
  71. CALL INTERN_BERECHNE1
  72. MOV HUNDERTS_L,AL
  73. MOV CL,03CH
  74. MOV AL,SEKUNDEN_S
  75. MOV AH,SEKUNDEN_E
  76. CALL INTERN_BERECHNE1
  77. MOV SEKUNDEN_L,AL
  78. MOV AL,MINUTEN_S
  79. MOV AH,MINUTEN_E
  80. CALL INTERN_BERECHNE1
  81. MOV MINUTEN_L,AL
  82. MOV AL,STUNDEN_S
  83. MOV AH,STUNDEN_E
  84. CALL INTERN_BERECHNE1
  85. MOV STUNDEN_L,AL
  86. POP AX
  87. CMP AL,0FFH
  88. JE >L9
  89. MOV CX,ZEIT1_L
  90. MOV DX,ZEIT2_L
  91. CALL KONVERTTIME
  92. CLC
  93. L9:
  94. POP BX,CX,DX
  95. RET
  96. SETTIME:
  97. PUSH SI,DX,CX,BX,AX
  98. CLD
  99. LODSB
  100. MOV BH,AL
  101. CMP BH,5
  102. JE >L1
  103. CMP BH,8
  104. JE >L1
  105. CMP BH,11XD
  106. JNE >L8
  107. L1:
  108. MOV BL,61XD
  109. CALL INTERN_GETDEZVALUE
  110. JC >L8
  111. MOV CH,AL
  112. INC SI
  113. CALL INTERN_GETDEZVALUE
  114. JC >L8
  115. MOV CL,AL
  116. XOR DX,DX
  117. CMP BH,5
  118. JE >L1
  119. INC SI
  120. CALL INTERN_GETDEZVALUE
  121. JC >L8
  122. MOV DH,AL
  123. CMP BH,8
  124. JE >L1
  125. INC SI
  126. MOV BL,101XD
  127. CALL INTERN_GETDEZVALUE
  128. JC >L8
  129. MOV DL,AL
  130. L1:
  131. MOV AH,02DH
  132. INT 021H
  133. OR AL,AL
  134. JE >L9
  135. L8:
  136. STC
  137. L9:
  138. POP AX,BX,CX,DX,SI
  139. RET
  140. SETDATE:
  141. PUSH SI,DX,CX,BX,AX
  142. CLD
  143. LODSB
  144. MOV BH,AL
  145. CMP BH,8
  146. JE >L1
  147. CMP BH,0AH
  148. JNE >L8
  149. L1:
  150. MOV BL,32XD
  151. CALL INTERN_GETDEZVALUE
  152. JC >L8
  153. MOV DL,AL
  154. INC SI
  155. MOV BL,13XD
  156. CALL INTERN_GETDEZVALUE
  157. JC >L8
  158. MOV DH,AL
  159. INC SI
  160. MOV CX,076CH
  161. CMP BH,8
  162. JE >L1
  163. LODSW
  164. CMP AX,'91'
  165. JE >L1
  166. CMP AX,'02'
  167. JNZ >L8
  168. MOV CX,07D0H
  169. L1:
  170. MOV BL,100XD
  171. CALL INTERN_GETDEZVALUE
  172. JC >L8
  173. XOR AH,AH
  174. ADD CX,AX
  175. CMP CX,1980XD
  176. JB >L8
  177. MOV AH,02BH
  178. INT 021H
  179. OR AL,AL
  180. JE >L9
  181. L8:
  182. STC
  183. L9:
  184. POP AX,BX,CX,DX,SI
  185. RET
  186. SONNTAG DB 7XD, 'Sonntag'
  187. MONTAG DB 6XD, 'Montag'
  188. DIENSTAG DB 8XD, 'Dienstag'
  189. MITTWOCH DB 8XD, 'Mittwoch'
  190. DONNERSTAG DB 10XD,'Donnerstag'
  191. FREITAG DB 7XD, 'Freitag'
  192. SAMSTAG DB 7XD, 'Samstag'
  193. T10 DB OFFSET SONNTAG - OFFSET SONNTAG
  194. DB OFFSET MONTAG - OFFSET SONNTAG
  195. DB OFFSET DIENSTAG - OFFSET SONNTAG
  196. DB OFFSET MITTWOCH - OFFSET SONNTAG
  197. DB OFFSET DONNERSTAG - OFFSET SONNTAG
  198. DB OFFSET FREITAG - OFFSET SONNTAG
  199. DB OFFSET SAMSTAG - OFFSET SONNTAG
  200. DB OFFSET T10 - OFFSET SONNTAG
  201. JANUAR DB 6XD,'Januar'
  202. FEBRUAR DB 7XD,'Februar'
  203. MAERZ DB 4XD,'März'
  204. APRIL DB 5XD,'April'
  205. MAI DB 3XD,'Mai'
  206. JUNI DB 4XD,'Juni'
  207. JULI DB 4XD,'Juli'
  208. AUGUST DB 6XD,'August'
  209. SEPTEMBER DB 9XD,'September'
  210. OKTOBER DB 7XD,'Oktober'
  211. NOVEMBER DB 8XD,'November'
  212. DEZEMBER DB 8XD,'Dezember'
  213. T20 DB OFFSET JANUAR - OFFSET JANUAR
  214. DB OFFSET FEBRUAR - OFFSET JANUAR
  215. DB OFFSET MAERZ - OFFSET JANUAR
  216. DB OFFSET APRIL - OFFSET JANUAR
  217. DB OFFSET MAI - OFFSET JANUAR
  218. DB OFFSET JUNI - OFFSET JANUAR
  219. DB OFFSET JULI - OFFSET JANUAR
  220. DB OFFSET AUGUST - OFFSET JANUAR
  221. DB OFFSET SEPTEMBER - OFFSET JANUAR
  222. DB OFFSET OKTOBER - OFFSET JANUAR
  223. DB OFFSET NOVEMBER - OFFSET JANUAR
  224. DB OFFSET DEZEMBER - OFFSET JANUAR
  225. DB OFFSET T20 - OFFSET JANUAR
  226. T3 DB ', der '
  227. KONVERTDATE:
  228. MOV B CS:Z2,'K'
  229. AND AL,01H
  230. JMP >L1
  231. L0001:
  232. PUSH BX
  233. ADD SI,AX
  234. MOV BL,[SI]
  235. XOR BH,BH
  236. POP SI
  237. LEA SI,[SI+BX]
  238. MOV CL,[SI]
  239. XOR CH,CH
  240. INC SI
  241. MOV BX,CX
  242. REP MOVSB
  243. RET
  244. GETDATE:
  245. MOV CS:Z2,'G'
  246. L1:
  247. CLD
  248. PUSH DS,SI,DI,DX,CX,AX,BP
  249. MOV BP,SP
  250. MOV DS,CS
  251. PUSH DI
  252. XOR AX,AX
  253. PUSH AX
  254. INC DI
  255. CMP Z2,'G'
  256. JNE >L1
  257. MOV AH,02AH
  258. INT 021H
  259. L1:
  260. XOR AH,AH
  261. CMP B[BP+2],2
  262. JL >W1
  263. PUSH CX
  264. MOV SI,OFFSET T10
  265. MOV BX,OFFSET SONNTAG
  266. CALL L0001
  267. MOV SI,OFFSET T3
  268. MOV CX,6
  269. ADD BX,CX
  270. REP MOVSB
  271. POP CX
  272. POP AX
  273. PUSH BX
  274. W1:
  275. MOV AX,DX
  276. MOV BH,'.'
  277. CALL INTERN_STOREALDEZ
  278. CMP B[BP+2],2
  279. JLE >W2
  280. PUSH CX
  281. MOV AL,' '
  282. STOSB
  283. MOV AX,DX
  284. XCHG AH,AL
  285. XOR AH,AH
  286. MOV SI,OFFSET T20-1
  287. MOV BX,OFFSET JANUAR
  288. CALL L0001
  289. POP CX
  290. MOV AL,' '
  291. STOSB
  292. POP AX
  293. ADD AX,BX
  294. INC AX
  295. PUSH AX
  296. JMP >W3
  297. W2:
  298. MOV AL,DH
  299. MOV BH,'.'
  300. CALL INTERN_STOREALDEZ
  301. W3:
  302. SUB CX,076CH
  303. MOV AX,'91'
  304. CMP CX,064H
  305. JB >L1
  306. MOV AX,'02'
  307. SUB CX,064H
  308. L1:
  309. CMP B[BP+2],0
  310. JE >W4
  311. STOSW
  312. L2:
  313. INC W[BP-4],2
  314. W4:
  315. MOV AL,CL
  316. XOR BH,BH
  317. CALL INTERN_STOREALDEZ
  318. POP AX
  319. POP DI
  320. STOSB
  321. POP BP,AX,CX,DX,DI,SI,DS
  322. RET
  323. KONVERTTIME:
  324. MOV CS:Z1,'K'
  325. JMP >L1
  326. GETTIME:
  327. MOV CS:Z1,'G'
  328. L1:
  329. CLD
  330. PUSH DS,SI,DI,DX,CX,AX,BP
  331. MOV BP,SP
  332. MOV DS,CS
  333. PUSH DI
  334. XOR AX,AX
  335. PUSH AX
  336. INC DI
  337. CMP Z1,'G'
  338. JNE >L1
  339. MOV AH,02CH
  340. INT 021H
  341. L1:
  342. MOV AL,CH
  343. CMP B[BP+2],2
  344. JL >W1
  345. MOV BH,' '
  346. CALL INTERN_STOREALDEZ
  347. MOV AX,'hU'
  348. STOSW
  349. MOV AX,' r'
  350. STOSW
  351. ADD W[BP-4],4
  352. MOV AL,CL
  353. XOR BH,BH
  354. CALL INTERN_STOREALDEZ
  355. JMP >L8
  356. W1:
  357. MOV BH,':'
  358. CALL INTERN_STOREALDEZ
  359. MOV AL,CL
  360. CALL INTERN_STOREALDEZ
  361. CMP B[BP+2],0
  362. IF G XOR BH,BH
  363. MOV AL,DH
  364. CALL INTERN_STOREALDEZ
  365. CMP B[BP+2],0
  366. JG >L8
  367. MOV AL,DL
  368. XOR BH,BH
  369. CALL INTERN_STOREALDEZ
  370. L8:
  371. POP AX
  372. POP DI
  373. STOSB
  374. POP BP,AX,CX,DX,DI,SI,DS
  375. RET
  376. INTERN_STOREALDEZ:
  377. PUSH BX
  378. XOR AH,AH
  379. MOV BX,'0' BY 0AH
  380. DIV BL
  381. OR AL,AL
  382. JNZ >L1
  383. CMP B[BP+3],AL
  384. JNE >L2
  385. L1:
  386. ADD AL,BH
  387. STOSB
  388. INC W[BP-4]
  389. L2:
  390. MOV AL,AH
  391. ADD AL,BH
  392. STOSB
  393. INC W[BP-4]
  394. POP BX
  395. OR BH,BH
  396. JE RET
  397. MOV AL,BH
  398. STOSB
  399. INC W[BP-4]
  400. RET
  401. INTERN_GETDEZVALUE:
  402. LODSB
  403. SUB AL,'0'
  404. CMP AL,0AH
  405. JNC >L1
  406. MOV AH,AL
  407. SHL AL,1
  408. SHL AL,1
  409. SHL AL,1
  410. ADD AL,AH
  411. ADD AL,AH
  412. XCHG AH,AL
  413. LODSB
  414. SUB AL,'0'
  415. CMP AL,0AH
  416. JNC >L1
  417. ADD AL,AH
  418. CMP AL,BL
  419. L1:
  420. CMC
  421. L8:
  422. RET
  423. INTERN_BERECHNE1:
  424. ADD AL,CH
  425. XOR CH,CH
  426. CMP AH,AL
  427. JAE >L1
  428. PUSH CX
  429. SUB CL,AL
  430. MOV AL,CL
  431. POP CX
  432. ADD AL,AH
  433. INC CH,1
  434. JMP >L2
  435. L1:
  436. SUB AH,AL
  437. MOV AL,AH
  438. L2:
  439. RET
  440. #IF !INTERN_CMARK0
  441. INTERN_CMARK0 EQU 01H
  442. INTERN_CMARK1:
  443. PUSH BP
  444. MOV BP,SP
  445. MOV BX,06H
  446. SUB CH,[BP+SI]
  447. SUB AH,[BX+SI]
  448. DEC SP
  449. DEC CX
  450. INC DX
  451. XOR AL,041H
  452. CMP B[02820H],DH
  453. INC BX
  454. SUB W[BX+SI],SP
  455. INC DX
  456. CS AND B[BP+DI+043H],DL
  457. DEC AX
  458. INC BP
  459. DEC BP
  460. DEC BP
  461. INC BP
  462. PUSH DX
  463. AND B[BP+SI],CH
  464. SUB CH,[BP+SI]
  465. POP DX
  466. MOV SP,BP
  467. POP BP
  468. RET
  469. #ENDIF
  470.