1 ; **************************************************************************** 2 ; clck.s (for TRDOS 386) 3 ; ---------------------------------------------------------------------------- 4 ; CLCK.PRG ! VGA DEMO program by Erdogan TAN 5 ; 6 ; 04/11/2017 7 ; 8 ; [ Last Modification: 04/11/2017 ] 9 ; 10 ; Derived from 'clck.asm' by Benjamin David Lunt (08/12/1998) 11 ; 12 ; Assembler: NASM 2.11 13 ; ---------------------------------------------------------------------------- 14 ; nasm clck.s -l clck.txt -o CLCK.PRG 15 ; **************************************************************************** 16 17 ; **************************************************************************** 18 ; clck.asm (for MSDOS) 19 ; ---------------------------------------------------------------------------- 20 ; CLCK.COM ! VGA (Mode 13h) CLOCK DEMO program ! NASM version by Erdogan TAN 21 ; (04/11/2017) 22 23 ;------------------------------------------------------------------------------ 24 ; TRDOS 386, TRDOS v2.0 25 ;------------------------------------------------------------------------------ 26 27 ; 01/03/2017 28 ; 16/10/2016 29 ; 29/04/2016 30 ; TRDOS 386 system calls (temporary list!) 31 _ver equ 0 32 _exit equ 1 33 _fork equ 2 34 _read equ 3 35 _write equ 4 36 _open equ 5 37 _close equ 6 38 _wait equ 7 39 _creat equ 8 40 _link equ 9 41 _unlink equ 10 42 _exec equ 11 43 _chdir equ 12 44 _time equ 13 45 _mkdir equ 14 46 _chmod equ 15 47 _chown equ 16 48 _break equ 17 49 _stat equ 18 50 _seek equ 19 51 _tell equ 20 52 _mount equ 21 53 _umount equ 22 54 _setuid equ 23 55 _getuid equ 24 56 _stime equ 25 57 _quit equ 26 58 _intr equ 27 59 _fstat equ 28 60 _emt equ 29 61 _mdate equ 30 62 _video equ 31 63 _audio equ 32 64 _timer equ 33 65 _sleep equ 34 66 _msg equ 35 67 _geterr equ 36 68 _fpsave equ 37 69 _pri equ 38 70 _rele equ 39 71 _fff equ 40 72 _fnf equ 41 73 _alloc equ 42 74 _dalloc equ 43 75 _calbac equ 44 76 77 %macro sys 1-4 78 ; 29/04/2016 - TRDOS 386 (TRDOS v2.0) 79 ; 03/09/2015 80 ; 13/04/2015 81 ; Retro UNIX 386 v1 system call. 82 %if %0 >= 2 83 mov ebx, %2 84 %if %0 >= 3 85 mov ecx, %3 86 %if %0 = 4 87 mov edx, %4 88 %endif 89 %endif 90 %endif 91 mov eax, %1 92 ;int 30h 93 int 40h ; TRDOS 386 (TRDOS v2.0) 94 %endmacro 95 96 ; TRDOS 386 (and Retro UNIX 386 v1) system call format: 97 ; sys systemcall (eax) , , 98 99 ; ************************************************************************ 100 ; * This is a small example of VGA mode 13h screen programming. 101 ; * It has the intent to show how to program in the specified mode, 102 ; * therefore does not contain small or efficient code. 103 ; * It is however quite fast, though probably could be a bit faster. 104 ; * 105 ; * You may use this code as you would like. 106 ; * As always, If this code crashes you machine in anyway I am 107 ; * not held responsible. Use at your own risk. 108 ; * Benjamin David Lunt 109 ; * Forever Young Software 110 ; * Copyright 1984-2015 111 ; * All rights reserved. 112 ; * 08 Dec 1998 113 ; * NBASM 114 ; * 115 116 DSpc equ 42 117 118 [Bits 32] ; TRDOS 386 - 32 bit code 119 [Org 0] 120 00000000 66B81300 mov ax,0013h 121 ;int 10h 122 00000004 CD31 int 31h ; TRDOS 386 VIDEO BIOS Interrupt 123 124 ; DIRECT VGA MEMORY ACCESS 125 ; bl = 0, bh = 5 126 ; Direct access/map to VGA memory (0A0000h) 127 128 sys _video, 0500h 128 <1> 128 <1> 128 <1> 128 <1> 128 <1> %if %0 >= 2 128 00000006 BB00050000 <1> mov ebx, %2 128 <1> %if %0 >= 3 128 <1> mov ecx, %3 128 <1> %if %0 = 4 128 <1> mov edx, %4 128 <1> %endif 128 <1> %endif 128 <1> %endif 128 0000000B B81F000000 <1> mov eax, %1 128 <1> 128 00000010 CD40 <1> int 40h 129 00000012 3D00000A00 cmp eax, 0A0000h 130 00000017 7577 jne Done 131 132 00000019 BF00000A00 mov edi,0A0000h 133 0000001E B9FF7F0000 mov ecx,32767 134 00000023 66A1[E3090000] mov ax,[BackG] 135 00000029 F366AB rep stosw 136 137 0000002C BF24360A00 mov edi,0A0000h+13860 ; print full colons 138 00000031 E847010000 call FColon ; 139 00000036 BF92360A00 mov edi,0A0000h+13970 ; + 110 140 0000003B E83D010000 call FColon ; 141 00000040 BFA4510A00 mov edi,0A0000h+20900 ; + 7040 142 00000045 E833010000 call FColon ; 143 0000004A BF12520A00 mov edi,0A0000h+21010 ; + 110 + 7040 144 0000004F E829010000 call FColon ; 145 146 MyLoop: 147 00000054 E8E0000000 call GetTime ; get the current time 148 149 00000059 BFC7260A00 mov edi,0A0000h+9927 ; print hour 150 0000005E A0[E0090000] mov al,[Hour] ; 151 00000063 E838010000 call DoHour ; 152 00000068 BF35270A00 mov edi,0A0000h+10037 ; print minutes 153 0000006D A0[E1090000] mov al,[Min] ; 154 00000072 E829010000 call DoHour ; 155 00000077 BFA2270A00 mov edi,0A0000h+10146 ; print seconds 156 0000007C A0[E2090000] mov al,[Sec] ; 157 00000081 E81A010000 call DoHour ; 158 159 00000086 B401 mov ah,01h ; see if key pressed 160 ;int 16h 161 00000088 CD32 int 32h ; TRDOS 386 keyboard interrupt 162 0000008A 74C8 jz short MyLoop ; loop if no key pressed 163 0000008C 30E4 xor ah,ah ; key pressed so clear it 164 ;int 16h ; from keyboard 165 0000008E CD32 int 32h ; TRDOS 386 keyboard interrupt 166 167 00000090 66B80300 Done: mov ax,0003h 168 ;int 10h 169 00000094 CD31 int 31h ; TRDOS 386 video bios interrupt 170 171 ;mov ax,4C00h 172 ;int 21h 173 174 sys _exit 174 <1> 174 <1> 174 <1> 174 <1> 174 <1> %if %0 >= 2 174 <1> mov ebx, %2 174 <1> %if %0 >= 3 174 <1> mov ecx, %3 174 <1> %if %0 = 4 174 <1> mov edx, %4 174 <1> %endif 174 <1> %endif 174 <1> %endif 174 00000096 B801000000 <1> mov eax, %1 174 <1> 174 0000009B CD40 <1> int 40h 175 ;here: 176 ; jmp short here 177 178 DoVLine: 179 0000009D 50 push eax 180 0000009E 51 push ecx 181 0000009F 56 push esi 182 000000A0 57 push edi 183 184 000000A1 BE[E5090000] mov esi,VLine 185 000000A6 B119 mov cl,25 186 000000A8 51 VLoop1: push ecx 187 000000A9 B10A mov cl,10 188 000000AB AC VLoop2: lodsb 189 000000AC 08C0 or al,al 190 000000AE 7402 jz short VNoDis 191 000000B0 AA stosb 192 000000B1 4F dec edi 193 000000B2 47 VNoDis: inc edi 194 000000B3 E2F6 loop VLoop2 195 000000B5 6681C73601 add di,310 196 000000BA 59 pop ecx 197 000000BB E2EB loop VLoop1 198 199 000000BD 5F pop edi 200 000000BE 5E pop esi 201 000000BF 59 pop ecx 202 000000C0 58 pop eax 203 204 000000C1 C3 retn 205 206 DoRVLine: 207 000000C2 50 push eax 208 000000C3 51 push ecx 209 000000C4 56 push esi 210 000000C5 57 push edi 211 212 000000C6 BE[E5090000] mov esi,VLine 213 000000CB B119 mov cl,25 214 000000CD 51 VLoop1r: push ecx 215 000000CE B10A mov cl,10 216 000000D0 AC VLoop2r: lodsb 217 000000D1 08C0 or al,al 218 000000D3 7408 jz short VNoDisr 219 000000D5 66A1[E3090000] mov ax,[BackG] 220 000000DB AA stosb 221 000000DC 4F dec edi 222 000000DD 47 VNoDisr: inc edi 223 000000DE E2F0 loop VLoop2r 224 000000E0 6681C73601 add di,310 225 000000E5 59 pop ecx 226 000000E6 E2E5 loop VLoop1r 227 228 000000E8 5F pop edi 229 000000E9 5E pop esi 230 000000EA 59 pop ecx 231 000000EB 58 pop eax 232 233 000000EC C3 retn 234 DoHLine: 235 000000ED 51 push ecx 236 000000EE 56 push esi 237 000000EF 57 push edi 238 239 000000F0 BE[DF0A0000] mov esi,HLine 240 000000F5 B107 mov cl,07 241 000000F7 51 HLoop1: push ecx 242 000000F8 B11E mov cl,30 243 000000FA AC HLoop2: lodsb 244 000000FB 08C0 or al,al 245 000000FD 7402 jz short HNoDis 246 000000FF AA stosb 247 00000100 4F dec edi 248 00000101 47 HNoDis: inc edi 249 00000102 E2F6 loop HLoop2 250 00000104 6681C72201 add di,290 251 00000109 59 pop ecx 252 0000010A E2EB loop HLoop1 253 254 0000010C 5F pop edi 255 0000010D 5E pop esi 256 0000010E 59 pop ecx 257 258 0000010F C3 retn 259 DoRHLine: 260 00000110 51 push ecx 261 00000111 56 push esi 262 00000112 57 push edi 263 264 00000113 BE[DF0A0000] mov esi,HLine 265 00000118 B107 mov cl,07 266 0000011A 51 HLoop1r: push ecx 267 0000011B B11E mov cl,30 268 0000011D AC HLoop2r: lodsb 269 0000011E 08C0 or al,al 270 00000120 7408 jz short HNoDisr 271 00000122 66A1[E3090000] mov ax,[BackG] 272 00000128 AA stosb 273 00000129 4F dec edi 274 0000012A 47 HNoDisr: inc edi 275 0000012B E2F0 loop HLoop2r 276 0000012D 6681C72201 add di,290 277 00000132 59 pop ecx 278 00000133 E2E5 loop HLoop1r 279 280 00000135 5F pop edi 281 00000136 5E pop esi 282 00000137 59 pop ecx 283 284 00000138 C3 retn 285 286 GetTime: 287 00000139 50 push eax 288 0000013A 51 push ecx 289 0000013B 52 push edx 290 291 ;mov ah,2Ch 292 ;int 21h 293 294 ;mov [Hour],ch 295 ;mov [Min],cl 296 ;mov [Sec],dh 297 298 0000013C B402 mov ah,02h 299 0000013E CD35 int 35h ; TRDOS 386 date & time ınterrupt 300 301 00000140 88E8 mov al,ch 302 00000142 C0E804 shr al,4 303 00000145 B40A mov ah,10 304 00000147 F6E4 mul ah 305 00000149 80E50F and ch,0Fh 306 0000014C 00E8 add al,ch 307 0000014E A2[E0090000] mov [Hour],al 308 309 00000153 88C8 mov al,cl 310 00000155 C0E804 shr al,4 311 00000158 B40A mov ah,10 312 0000015A F6E4 mul ah 313 0000015C 80E10F and cl,0Fh 314 0000015F 00C8 add al,cl 315 00000161 A2[E1090000] mov [Min],al 316 317 00000166 88F0 mov al,dh 318 00000168 C0E804 shr al,4 319 0000016B B40A mov ah,10 320 0000016D F6E4 mul ah 321 0000016F 80E60F and dh,0Fh 322 00000172 00F0 add al,dh 323 00000174 A2[E2090000] mov [Sec],al 324 325 00000179 5A pop edx 326 0000017A 59 pop ecx 327 0000017B 58 pop eax 328 329 0000017C C3 retn 330 331 FColon: 332 0000017D 50 push eax 333 0000017E 56 push esi 334 0000017F 57 push edi 335 336 00000180 BE[B10B0000] mov esi,FCln 337 00000185 B107 mov cl,07 338 00000187 51 FLoop1: push ecx 339 00000188 B107 mov cl,07 340 0000018A AC FLoop2: lodsb 341 0000018B 08C0 or al,al 342 0000018D 7402 jz short FNoDis 343 0000018F AA stosb 344 00000190 4F dec edi 345 00000191 47 FNoDis: inc edi 346 00000192 E2F6 loop FLoop2 347 00000194 6681C73901 add di,313 348 00000199 59 pop ecx 349 0000019A E2EB loop FLoop1 350 351 0000019C 5F pop edi 352 0000019D 5E pop esi 353 0000019E 58 pop eax 354 355 0000019F C3 retn 356 357 DoHour: 358 000001A0 50 push eax 359 000001A1 57 push edi 360 361 000001A2 08C0 or al,al 362 000001A4 7513 jnz short Not0 363 000001A6 E847050000 call Do0 364 000001AB 6683C72A add di,DSpc 365 000001AF E83E050000 call Do0 366 000001B4 E936050000 jmp HDone 367 000001B9 3C01 Not0: cmp al,01 368 000001BB 7513 jne short Not1 369 000001BD E830050000 call Do0 370 000001C2 6683C72A add di,DSpc 371 000001C6 E872050000 call Do1 372 000001CB E91F050000 jmp HDone 373 000001D0 3C02 Not1: cmp al,02 374 000001D2 7513 jne short Not2 375 000001D4 E819050000 call Do0 376 000001D9 6683C72A add di,DSpc 377 000001DD E8A6050000 call Do2 378 000001E2 E908050000 jmp HDone 379 000001E7 3C03 Not2: cmp al,03 380 000001E9 7513 jne short Not3 381 000001EB E802050000 call Do0 382 000001F0 6683C72A add di,DSpc 383 000001F4 E8DA050000 call Do3 384 000001F9 E9F1040000 jmp HDone 385 000001FE 3C04 Not3: cmp al,04 386 00000200 7513 jne short Not4 387 00000202 E8EB040000 call Do0 388 00000207 6683C72A add di,DSpc 389 0000020B E80E060000 call Do4 390 00000210 E9DA040000 jmp HDone 391 00000215 3C05 Not4: cmp al,05 392 00000217 7513 jne short Not5 393 00000219 E8D4040000 call Do0 394 0000021E 6683C72A add di,DSpc 395 00000222 E842060000 call Do5 396 00000227 E9C3040000 jmp HDone 397 0000022C 3C06 Not5: cmp al,06 398 0000022E 7513 jne short Not6 399 00000230 E8BD040000 call Do0 400 00000235 6683C72A add di,DSpc 401 00000239 E876060000 call Do6 402 0000023E E9AC040000 jmp HDone 403 00000243 3C07 Not6: cmp al,07 404 00000245 7513 jne short Not7 405 00000247 E8A6040000 call Do0 406 0000024C 6683C72A add di,DSpc 407 00000250 E8AA060000 call Do7 408 00000255 E995040000 jmp HDone 409 0000025A 3C08 Not7: cmp al,08 410 0000025C 7513 jne short Not8 411 0000025E E88F040000 call Do0 412 00000263 6683C72A add di,DSpc 413 00000267 E8DE060000 call Do8 414 0000026C E97E040000 jmp HDone 415 00000271 3C09 Not8: cmp al,09 416 00000273 7513 jne short Not9 417 00000275 E878040000 call Do0 418 0000027A 6683C72A add di,DSpc 419 0000027E E812070000 call Do9 420 00000283 E967040000 jmp HDone 421 00000288 3C0A Not9: cmp al,10 422 0000028A 7513 jne short Not10 423 0000028C E8AC040000 call Do1 424 00000291 6683C72A add di,DSpc 425 00000295 E858040000 call Do0 426 0000029A E950040000 jmp HDone 427 0000029F 3C0B Not10: cmp al,11 428 000002A1 7513 jne short Not11 429 000002A3 E895040000 call Do1 430 000002A8 6683C72A add di,DSpc 431 000002AC E88C040000 call Do1 432 000002B1 E939040000 jmp HDone 433 000002B6 3C0C Not11: cmp al,12 434 000002B8 7513 jne short Not12 435 000002BA E87E040000 call Do1 436 000002BF 6683C72A add di,DSpc 437 000002C3 E8C0040000 call Do2 438 000002C8 E922040000 jmp HDone 439 000002CD 3C0D Not12: cmp al,13 440 000002CF 7513 jne short Not13 441 000002D1 E867040000 call Do1 442 000002D6 6683C72A add di,DSpc 443 000002DA E8F4040000 call Do3 444 000002DF E90B040000 jmp HDone 445 000002E4 3C0E Not13: cmp al,14 446 000002E6 7513 jne short Not14 447 000002E8 E850040000 call Do1 448 000002ED 6683C72A add di,DSpc 449 000002F1 E828050000 call Do4 450 000002F6 E9F4030000 jmp HDone 451 000002FB 3C0F Not14: cmp al,15 452 000002FD 7513 jne short Not15 453 000002FF E839040000 call Do1 454 00000304 6683C72A add di,DSpc 455 00000308 E85C050000 call Do5 456 0000030D E9DD030000 jmp HDone 457 00000312 3C10 Not15: cmp al,16 458 00000314 7513 jne short Not16 459 00000316 E822040000 call Do1 460 0000031B 6683C72A add di,DSpc 461 0000031F E890050000 call Do6 462 00000324 E9C6030000 jmp HDone 463 00000329 3C11 Not16: cmp al,17 464 0000032B 7513 jne short Not17 465 0000032D E80B040000 call Do1 466 00000332 6683C72A add di,DSpc 467 00000336 E8C4050000 call Do7 468 0000033B E9AF030000 jmp HDone 469 00000340 3C12 Not17: cmp al,18 470 00000342 7513 jne short Not18 471 00000344 E8F4030000 call Do1 472 00000349 6683C72A add di,DSpc 473 0000034D E8F8050000 call Do8 474 00000352 E998030000 jmp HDone 475 00000357 3C13 Not18: cmp al,19 476 00000359 7513 jne short Not19 477 0000035B E8DD030000 call Do1 478 00000360 6683C72A add di,DSpc 479 00000364 E82C060000 call Do9 480 00000369 E981030000 jmp HDone 481 0000036E 3C14 Not19: cmp al,20 482 00000370 7513 jne short Not20 483 00000372 E811040000 call Do2 484 00000377 6683C72A add di,DSpc 485 0000037B E872030000 call Do0 486 00000380 E96A030000 jmp HDone 487 00000385 3C15 Not20: cmp al,21 488 00000387 7513 jne short Not21 489 00000389 E8FA030000 call Do2 490 0000038E 6683C72A add di,DSpc 491 00000392 E8A6030000 call Do1 492 00000397 E953030000 jmp HDone 493 0000039C 3C16 Not21: cmp al,22 494 0000039E 7513 jne short Not22 495 000003A0 E8E3030000 call Do2 496 000003A5 6683C72A add di,DSpc 497 000003A9 E8DA030000 call Do2 498 000003AE E93C030000 jmp HDone 499 000003B3 3C17 Not22: cmp al,23 500 000003B5 7513 jne short Not23 501 000003B7 E8CC030000 call Do2 502 000003BC 6683C72A add di,DSpc 503 000003C0 E80E040000 call Do3 504 000003C5 E925030000 jmp HDone 505 000003CA 3C18 Not23: cmp al,24 506 000003CC 7513 jne short Not24 507 000003CE E8B5030000 call Do2 508 000003D3 6683C72A add di,DSpc 509 000003D7 E842040000 call Do4 510 000003DC E90E030000 jmp HDone 511 000003E1 3C19 Not24: cmp al,25 512 000003E3 7513 jne short Not25 513 000003E5 E89E030000 call Do2 514 000003EA 6683C72A add di,DSpc 515 000003EE E876040000 call Do5 516 000003F3 E9F7020000 jmp HDone 517 000003F8 3C1A Not25: cmp al,26 518 000003FA 7513 jne short Not26 519 000003FC E887030000 call Do2 520 00000401 6683C72A add di,DSpc 521 00000405 E8AA040000 call Do6 522 0000040A E9E0020000 jmp HDone 523 0000040F 3C1B Not26: cmp al,27 524 00000411 7513 jne short Not27 525 00000413 E870030000 call Do2 526 00000418 6683C72A add di,DSpc 527 0000041C E8DE040000 call Do7 528 00000421 E9C9020000 jmp HDone 529 00000426 3C1C Not27: cmp al,28 530 00000428 7513 jne short Not28 531 0000042A E859030000 call Do2 532 0000042F 6683C72A add di,DSpc 533 00000433 E812050000 call Do8 534 00000438 E9B2020000 jmp HDone 535 0000043D 3C1D Not28: cmp al,29 536 0000043F 7513 jne short Not29 537 00000441 E842030000 call Do2 538 00000446 6683C72A add di,DSpc 539 0000044A E846050000 call Do9 540 0000044F E99B020000 jmp HDone 541 00000454 3C1E Not29: cmp al,30 542 00000456 7513 jne short Not30 543 00000458 E876030000 call Do3 544 0000045D 6683C72A add di,DSpc 545 00000461 E88C020000 call Do0 546 00000466 E984020000 jmp HDone 547 0000046B 3C1F Not30: cmp al,31 548 0000046D 7513 jne short Not31 549 0000046F E85F030000 call Do3 550 00000474 6683C72A add di,DSpc 551 00000478 E8C0020000 call Do1 552 0000047D E96D020000 jmp HDone 553 00000482 3C20 Not31: cmp al,32 554 00000484 7513 jne short Not32 555 00000486 E848030000 call Do3 556 0000048B 6683C72A add di,DSpc 557 0000048F E8F4020000 call Do2 558 00000494 E956020000 jmp HDone 559 00000499 3C21 Not32: cmp al,33 560 0000049B 7513 jne short Not33 561 0000049D E831030000 call Do3 562 000004A2 6683C72A add di,DSpc 563 000004A6 E828030000 call Do3 564 000004AB E93F020000 jmp HDone 565 000004B0 3C22 Not33: cmp al,34 566 000004B2 7513 jne short Not34 567 000004B4 E81A030000 call Do3 568 000004B9 6683C72A add di,DSpc 569 000004BD E85C030000 call Do4 570 000004C2 E928020000 jmp HDone 571 000004C7 3C23 Not34: cmp al,35 572 000004C9 7513 jne short Not35 573 000004CB E803030000 call Do3 574 000004D0 6683C72A add di,DSpc 575 000004D4 E890030000 call Do5 576 000004D9 E911020000 jmp HDone 577 000004DE 3C24 Not35: cmp al,36 578 000004E0 7513 jne short Not36 579 000004E2 E8EC020000 call Do3 580 000004E7 6683C72A add di,DSpc 581 000004EB E8C4030000 call Do6 582 000004F0 E9FA010000 jmp HDone 583 000004F5 3C25 Not36: cmp al,37 584 000004F7 7513 jne short Not37 585 000004F9 E8D5020000 call Do3 586 000004FE 6683C72A add di,DSpc 587 00000502 E8F8030000 call Do7 588 00000507 E9E3010000 jmp HDone 589 0000050C 3C26 Not37: cmp al,38 590 0000050E 7513 jne short Not38 591 00000510 E8BE020000 call Do3 592 00000515 6683C72A add di,DSpc 593 00000519 E82C040000 call Do8 594 0000051E E9CC010000 jmp HDone 595 00000523 3C27 Not38: cmp al,39 596 00000525 7513 jne short Not39 597 00000527 E8A7020000 call Do3 598 0000052C 6683C72A add di,DSpc 599 00000530 E860040000 call Do9 600 00000535 E9B5010000 jmp HDone 601 0000053A 3C28 Not39: cmp al,40 602 0000053C 7513 jne short Not40 603 0000053E E8DB020000 call Do4 604 00000543 6683C72A add di,DSpc 605 00000547 E8A6010000 call Do0 606 0000054C E99E010000 jmp HDone 607 00000551 3C29 Not40: cmp al,41 608 00000553 7513 jne short Not41 609 00000555 E8C4020000 call Do4 610 0000055A 6683C72A add di,DSpc 611 0000055E E8DA010000 call Do1 612 00000563 E987010000 jmp HDone 613 00000568 3C2A Not41: cmp al,42 614 0000056A 7513 jne short Not42 615 0000056C E8AD020000 call Do4 616 00000571 6683C72A add di,DSpc 617 00000575 E80E020000 call Do2 618 0000057A E970010000 jmp HDone 619 0000057F 3C2B Not42: cmp al,43 620 00000581 7513 jne short Not43 621 00000583 E896020000 call Do4 622 00000588 6683C72A add di,DSpc 623 0000058C E842020000 call Do3 624 00000591 E959010000 jmp HDone 625 00000596 3C2C Not43: cmp al,44 626 00000598 7513 jne short Not44 627 0000059A E87F020000 call Do4 628 0000059F 6683C72A add di,DSpc 629 000005A3 E876020000 call Do4 630 000005A8 E942010000 jmp HDone 631 000005AD 3C2D Not44: cmp al,45 632 000005AF 7513 jne short Not45 633 000005B1 E868020000 call Do4 634 000005B6 6683C72A add di,DSpc 635 000005BA E8AA020000 call Do5 636 000005BF E92B010000 jmp HDone 637 000005C4 3C2E Not45: cmp al,46 638 000005C6 7513 jne short Not46 639 000005C8 E851020000 call Do4 640 000005CD 6683C72A add di,DSpc 641 000005D1 E8DE020000 call Do6 642 000005D6 E914010000 jmp HDone 643 000005DB 3C2F Not46: cmp al,47 644 000005DD 7513 jne short Not47 645 000005DF E83A020000 call Do4 646 000005E4 6683C72A add di,DSpc 647 000005E8 E812030000 call Do7 648 000005ED E9FD000000 jmp HDone 649 000005F2 3C30 Not47: cmp al,48 650 000005F4 7513 jne short Not48 651 000005F6 E823020000 call Do4 652 000005FB 6683C72A add di,DSpc 653 000005FF E846030000 call Do8 654 00000604 E9E6000000 jmp HDone 655 00000609 3C31 Not48: cmp al,49 656 0000060B 7513 jne short Not49 657 0000060D E80C020000 call Do4 658 00000612 6683C72A add di,DSpc 659 00000616 E87A030000 call Do9 660 0000061B E9CF000000 jmp HDone 661 00000620 3C32 Not49: cmp al,50 662 00000622 7513 jne short Not50 663 00000624 E840020000 call Do5 664 00000629 6683C72A add di,DSpc 665 0000062D E8C0000000 call Do0 666 00000632 E9B8000000 jmp HDone 667 00000637 3C33 Not50: cmp al,51 668 00000639 7513 jne short Not51 669 0000063B E829020000 call Do5 670 00000640 6683C72A add di,DSpc 671 00000644 E8F4000000 call Do1 672 00000649 E9A1000000 jmp HDone 673 0000064E 3C34 Not51: cmp al,52 674 00000650 7513 jne short Not52 675 00000652 E812020000 call Do5 676 00000657 6683C72A add di,DSpc 677 0000065B E828010000 call Do2 678 00000660 E98A000000 jmp HDone 679 00000665 3C35 Not52: cmp al,53 680 00000667 7510 jne short Not53 681 00000669 E8FB010000 call Do5 682 0000066E 6683C72A add di,DSpc 683 00000672 E85C010000 call Do3 684 00000677 EB76 jmp short HDone 685 00000679 3C36 Not53: cmp al,54 686 0000067B 7510 jne short Not54 687 0000067D E8E7010000 call Do5 688 00000682 6683C72A add di,DSpc 689 00000686 E893010000 call Do4 690 0000068B EB62 jmp short HDone 691 0000068D 3C37 Not54: cmp al,55 692 0000068F 7510 jne short Not55 693 00000691 E8D3010000 call Do5 694 00000696 6683C72A add di,DSpc 695 0000069A E8CA010000 call Do5 696 0000069F EB4E jmp short HDone 697 000006A1 3C38 Not55: cmp al,56 698 000006A3 7510 jne short Not56 699 000006A5 E8BF010000 call Do5 700 000006AA 6683C72A add di,DSpc 701 000006AE E801020000 call Do6 702 000006B3 EB3A jmp short HDone 703 000006B5 3C39 Not56: cmp al,57 704 000006B7 7510 jne short Not57 705 000006B9 E8AB010000 call Do5 706 000006BE 6683C72A add di,DSpc 707 000006C2 E838020000 call Do7 708 000006C7 EB26 jmp short HDone 709 000006C9 3C3A Not57: cmp al,58 710 000006CB 7510 jne short Not58 711 000006CD E897010000 call Do5 712 000006D2 6683C72A add di,DSpc 713 000006D6 E86F020000 call Do8 714 000006DB EB12 jmp short HDone 715 000006DD 3C3B Not58: cmp al,59 716 000006DF 750E jne short HDone 717 000006E1 E883010000 call Do5 718 000006E6 6683C72A add di,DSpc 719 000006EA E8A6020000 call Do9 720 HDone: 721 000006EF 5F pop edi 722 000006F0 58 pop eax 723 724 000006F1 C3 retn 725 726 Do0: 727 000006F2 50 push eax 728 000006F3 57 push edi 729 730 000006F4 E8A4F9FFFF call DoVLine ; 1 731 000006F9 57 push edi 732 000006FA 6681C7401F add di,8000 733 000006FF E899F9FFFF call DoVLine ; 7 734 00000704 5F pop edi 735 00000705 47 inc edi 736 00000706 47 inc edi 737 00000707 57 push edi 738 00000708 6681EFBD03 sub di,957 739 0000070D E8DBF9FFFF call DoHLine ; 2 740 00000712 6681C7401F add di,8000 741 00000717 E8F4F9FFFF call DoRHLine ; 4 742 0000071C 6681C7401F add di,8000 743 00000721 E8C7F9FFFF call DoHLine ; 6 744 00000726 5F pop edi 745 00000727 6683C71D add di,29 746 0000072B E86DF9FFFF call DoVLine ; 3 747 00000730 6681C7401F add di,8000 748 00000735 E863F9FFFF call DoVLine ; 5 749 750 0000073A 5F pop edi 751 0000073B 58 pop eax 752 753 0000073C C3 retn 754 755 Do1: 756 0000073D 50 push eax 757 0000073E 57 push edi 758 759 0000073F E87EF9FFFF call DoRVLine ; 1 760 00000744 57 push edi 761 00000745 6681C7401F add di,8000 762 0000074A E873F9FFFF call DoRVLine ; 7 763 0000074F 5F pop edi 764 00000750 47 inc edi 765 00000751 47 inc edi 766 00000752 57 push edi 767 00000753 6681EFBD03 sub di,957 768 00000758 E8B3F9FFFF call DoRHLine ; 2 769 0000075D 6681C7401F add di,8000 770 00000762 E8A9F9FFFF call DoRHLine ; 4 771 00000767 6681C7401F add di,8000 772 0000076C E89FF9FFFF call DoRHLine ; 6 773 00000771 5F pop edi 774 00000772 6683C71D add di,29 775 00000776 E822F9FFFF call DoVLine ; 3 776 0000077B 6681C7401F add di,8000 777 00000780 E818F9FFFF call DoVLine ; 5 778 779 00000785 5F pop edi 780 00000786 58 pop eax 781 782 00000787 C3 retn 783 Do2: 784 00000788 50 push eax 785 00000789 57 push edi 786 787 0000078A E833F9FFFF call DoRVLine ; 1 788 0000078F 57 push edi 789 00000790 6681C7401F add di,8000 790 00000795 E803F9FFFF call DoVLine ; 7 791 0000079A 5F pop edi 792 0000079B 47 inc edi 793 0000079C 47 inc edi 794 0000079D 57 push edi 795 0000079E 6681EFBD03 sub di,957 796 000007A3 E845F9FFFF call DoHLine ; 2 797 000007A8 6681C7401F add di,8000 798 000007AD E83BF9FFFF call DoHLine ; 4 799 000007B2 6681C7401F add di,8000 800 000007B7 E831F9FFFF call DoHLine ; 6 801 000007BC 5F pop edi 802 000007BD 6683C71D add di,29 803 000007C1 E8D7F8FFFF call DoVLine ; 3 804 000007C6 6681C7401F add di,8000 805 000007CB E8F2F8FFFF call DoRVLine ; 5 806 807 000007D0 5F pop edi 808 000007D1 58 pop eax 809 810 000007D2 C3 retn 811 Do3: 812 000007D3 50 push eax 813 000007D4 57 push edi 814 815 000007D5 E8E8F8FFFF call DoRVLine ; 1 816 000007DA 57 push edi 817 000007DB 6681C7401F add di,8000 818 000007E0 E8DDF8FFFF call DoRVLine ; 7 819 000007E5 5F pop edi 820 000007E6 47 inc edi 821 000007E7 47 inc edi 822 000007E8 57 push edi 823 000007E9 6681EFBD03 sub di,957 824 000007EE E8FAF8FFFF call DoHLine ; 2 825 000007F3 6681C7401F add di,8000 826 000007F8 E8F0F8FFFF call DoHLine ; 4 827 000007FD 6681C7401F add di,8000 828 00000802 E8E6F8FFFF call DoHLine ; 6 829 00000807 5F pop edi 830 00000808 6683C71D add di,29 831 0000080C E88CF8FFFF call DoVLine ; 3 832 00000811 6681C7401F add di,8000 833 00000816 E882F8FFFF call DoVLine ; 5 834 835 0000081B 5F pop edi 836 0000081C 58 pop eax 837 838 0000081D C3 retn 839 Do4: 840 0000081E 50 push eax 841 0000081F 57 push edi 842 843 00000820 E878F8FFFF call DoVLine ; 1 844 00000825 57 push edi 845 00000826 6681C7401F add di,8000 846 0000082B E892F8FFFF call DoRVLine ; 7 847 00000830 5F pop edi 848 00000831 47 inc edi 849 00000832 47 inc edi 850 00000833 57 push edi 851 00000834 6681EFBD03 sub di,957 852 00000839 E8D2F8FFFF call DoRHLine ; 2 853 0000083E 6681C7401F add di,8000 854 00000843 E8A5F8FFFF call DoHLine ; 4 855 00000848 6681C7401F add di,8000 856 0000084D E8BEF8FFFF call DoRHLine ; 6 857 00000852 5F pop edi 858 00000853 6683C71D add di,29 859 00000857 E841F8FFFF call DoVLine ; 3 860 0000085C 6681C7401F add di,8000 861 00000861 E837F8FFFF call DoVLine ; 5 862 863 00000866 5F pop edi 864 00000867 58 pop eax 865 866 00000868 C3 retn 867 Do5: 868 00000869 50 push eax 869 0000086A 57 push edi 870 871 0000086B E82DF8FFFF call DoVLine ; 1 872 00000870 57 push edi 873 00000871 6681C7401F add di,8000 874 00000876 E847F8FFFF call DoRVLine ; 7 875 0000087B 5F pop edi 876 0000087C 47 inc edi 877 0000087D 47 inc edi 878 0000087E 57 push edi 879 0000087F 6681EFBD03 sub di,957 880 00000884 E864F8FFFF call DoHLine ; 2 881 00000889 6681C7401F add di,8000 882 0000088E E85AF8FFFF call DoHLine ; 4 883 00000893 6681C7401F add di,8000 884 00000898 E850F8FFFF call DoHLine ; 6 885 0000089D 5F pop edi 886 0000089E 6683C71D add di,29 887 000008A2 E81BF8FFFF call DoRVLine ; 3 888 000008A7 6681C7401F add di,8000 889 000008AC E8ECF7FFFF call DoVLine ; 5 890 891 000008B1 5F pop edi 892 000008B2 58 pop eax 893 894 000008B3 C3 retn 895 Do6: 896 000008B4 50 push eax 897 000008B5 57 push edi 898 899 000008B6 E8E2F7FFFF call DoVLine ; 1 900 000008BB 57 push edi 901 000008BC 6681C7401F add di,8000 902 000008C1 E8D7F7FFFF call DoVLine ; 7 903 000008C6 5F pop edi 904 000008C7 47 inc edi 905 000008C8 47 inc edi 906 000008C9 57 push edi 907 000008CA 6681EFBD03 sub di,957 908 000008CF E819F8FFFF call DoHLine ; 2 909 000008D4 6681C7401F add di,8000 910 000008D9 E80FF8FFFF call DoHLine ; 4 911 000008DE 6681C7401F add di,8000 912 000008E3 E805F8FFFF call DoHLine ; 6 913 000008E8 5F pop edi 914 000008E9 6683C71D add di,29 915 000008ED E8D0F7FFFF call DoRVLine ; 3 916 000008F2 6681C7401F add di,8000 917 000008F7 E8A1F7FFFF call DoVLine ; 5 918 919 000008FC 5F pop edi 920 000008FD 58 pop eax 921 922 000008FE C3 retn 923 Do7: 924 000008FF 50 push eax 925 00000900 57 push edi 926 927 00000901 E8BCF7FFFF call DoRVLine ; 1 928 00000906 57 push edi 929 00000907 6681C7401F add di,8000 930 0000090C E8B1F7FFFF call DoRVLine ; 7 931 00000911 5F pop edi 932 00000912 47 inc edi 933 00000913 47 inc edi 934 00000914 57 push edi 935 00000915 6681EFBD03 sub di,957 936 0000091A E8CEF7FFFF call DoHLine ; 2 937 0000091F 6681C7401F add di,8000 938 00000924 E8E7F7FFFF call DoRHLine ; 4 939 00000929 6681C7401F add di,8000 940 0000092E E8DDF7FFFF call DoRHLine ; 6 941 00000933 5F pop edi 942 00000934 6683C71D add di,29 943 00000938 E860F7FFFF call DoVLine ; 3 944 0000093D 6681C7401F add di,8000 945 00000942 E856F7FFFF call DoVLine ; 5 946 947 00000947 5F pop edi 948 00000948 58 pop eax 949 950 00000949 C3 retn 951 Do8: 952 0000094A 50 push eax 953 0000094B 57 push edi 954 955 0000094C E84CF7FFFF call DoVLine ; 1 956 00000951 57 push edi 957 00000952 6681C7401F add di,8000 958 00000957 E841F7FFFF call DoVLine ; 7 959 0000095C 5F pop edi 960 0000095D 47 inc edi 961 0000095E 47 inc edi 962 0000095F 57 push edi 963 00000960 6681EFBD03 sub di,957 964 00000965 E883F7FFFF call DoHLine ; 2 965 0000096A 6681C7401F add di,8000 966 0000096F E879F7FFFF call DoHLine ; 4 967 00000974 6681C7401F add di,8000 968 00000979 E86FF7FFFF call DoHLine ; 6 969 0000097E 5F pop edi 970 0000097F 6683C71D add di,29 971 00000983 E815F7FFFF call DoVLine ; 3 972 00000988 6681C7401F add di,8000 973 0000098D E80BF7FFFF call DoVLine ; 5 974 975 00000992 5F pop edi 976 00000993 58 pop eax 977 978 00000994 C3 retn 979 Do9: 980 00000995 50 push eax 981 00000996 57 push edi 982 983 00000997 E801F7FFFF call DoVLine ; 1 984 0000099C 57 push edi 985 0000099D 6681C7401F add di,8000 986 000009A2 E81BF7FFFF call DoRVLine ; 7 987 000009A7 5F pop edi 988 000009A8 47 inc edi 989 000009A9 47 inc edi 990 000009AA 57 push edi 991 000009AB 6681EFBD03 sub di,957 992 000009B0 E838F7FFFF call DoHLine ; 2 993 000009B5 6681C7401F add di,8000 994 000009BA E82EF7FFFF call DoHLine ; 4 995 000009BF 6681C7401F add di,8000 996 000009C4 E824F7FFFF call DoHLine ; 6 997 000009C9 5F pop edi 998 000009CA 6683C71D add di,29 999 000009CE E8CAF6FFFF call DoVLine ; 3 1000 000009D3 6681C7401F add di,8000 1001 000009D8 E8C0F6FFFF call DoVLine ; 5 1002 1003 000009DD 5F pop edi 1004 000009DE 58 pop eax 1005 1006 000009DF C3 retn 1007 1008 000009E0 00 Hour: db 00h 1009 000009E1 00 Min: db 00h 1010 000009E2 00 Sec: db 00h 1011 000009E3 0707 BackG: dw 0707h 1012 000009E5 000000000F00000000- VLine: db 00,00,00,00,15,00,00,00,00,00 1012 000009EE 00 1013 000009EF 0000000F0708000000- db 00,00,00,15,07,08,00,00,00,00 1013 000009F8 00 1014 000009F9 00000F070707080000- db 00,00,15,07,07,07,08,00,00,00 1014 00000A02 00 1015 00000A03 000F07070707070800- db 00,15,07,07,07,07,07,08,00,00 1015 00000A0C 00 1016 00000A0D 0F0707070707070708- db 15,07,07,07,07,07,07,07,08,00 1016 00000A16 00 1017 00000A17 0F0707070707070708- db 15,07,07,07,07,07,07,07,08,00 1017 00000A20 00 1018 00000A21 0F0707070707070708- db 15,07,07,07,07,07,07,07,08,00 1018 00000A2A 00 1019 00000A2B 0F0707070707070708- db 15,07,07,07,07,07,07,07,08,00 1019 00000A34 00 1020 00000A35 0F0707070707070708- db 15,07,07,07,07,07,07,07,08,00 1020 00000A3E 00 1021 00000A3F 0F0707070707070708- db 15,07,07,07,07,07,07,07,08,00 1021 00000A48 00 1022 00000A49 0F0707070707070708- db 15,07,07,07,07,07,07,07,08,00 1022 00000A52 00 1023 00000A53 0F0707070707070708- db 15,07,07,07,07,07,07,07,08,00 1023 00000A5C 00 1024 00000A5D 0F0707070707070708- db 15,07,07,07,07,07,07,07,08,00 1024 00000A66 00 1025 00000A67 0F0707070707070708- db 15,07,07,07,07,07,07,07,08,00 1025 00000A70 00 1026 00000A71 0F0707070707070708- db 15,07,07,07,07,07,07,07,08,00 1026 00000A7A 00 1027 00000A7B 0F0707070707070708- db 15,07,07,07,07,07,07,07,08,00 1027 00000A84 00 1028 00000A85 0F0707070707070708- db 15,07,07,07,07,07,07,07,08,00 1028 00000A8E 00 1029 00000A8F 0F0707070707070708- db 15,07,07,07,07,07,07,07,08,00 1029 00000A98 00 1030 00000A99 0F0707070707070708- db 15,07,07,07,07,07,07,07,08,00 1030 00000AA2 00 1031 00000AA3 0F0707070707070708- db 15,07,07,07,07,07,07,07,08,00 1031 00000AAC 00 1032 00000AAD 0F0707070707070708- db 15,07,07,07,07,07,07,07,08,00 1032 00000AB6 00 1033 00000AB7 000807070707070800- db 00,08,07,07,07,07,07,08,00,00 1033 00000AC0 00 1034 00000AC1 000008070707080000- db 00,00,08,07,07,07,08,00,00,00 1034 00000ACA 00 1035 00000ACB 000000080708000000- db 00,00,00,08,07,08,00,00,00,00 1035 00000AD4 00 1036 00000AD5 000000000800000000- db 00,00,00,00,08,00,00,00,00,00 1036 00000ADE 00 1037 00000ADF 0000000F0F0F0F0F0F- HLine: db 00,00,00,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,00,00,00 1037 00000AE8 0F0F0F0F0F0F0F0F0F- 1037 00000AF1 0F0F0F0F0F0F0F0F0F- 1037 00000AFA 000000 1038 00000AFD 00000F070707070707- db 00,00,15,07,07,07,07,07,07,07,07,07,07,07,07,07,07,07,07,07,07,07,07,07,07,07,07,08,00,00 1038 00000B06 070707070707070707- 1038 00000B0F 070707070707070707- 1038 00000B18 080000 1039 00000B1B 000F07070707070707- db 00,15,07,07,07,07,07,07,07,07,07,07,07,07,07,07,07,07,07,07,07,07,07,07,07,07,07,07,08,00 1039 00000B24 070707070707070707- 1039 00000B2D 070707070707070707- 1039 00000B36 070800 1040 00000B39 0F0707070707070707- db 15,07,07,07,07,07,07,07,07,07,07,07,07,07,07,07,07,07,07,07,07,07,07,07,07,07,07,07,07,08 1040 00000B42 070707070707070707- 1040 00000B4B 070707070707070707- 1040 00000B54 070708 1041 00000B57 000807070707070707- db 00,08,07,07,07,07,07,07,07,07,07,07,07,07,07,07,07,07,07,07,07,07,07,07,07,07,07,07,08,00 1041 00000B60 070707070707070707- 1041 00000B69 070707070707070707- 1041 00000B72 070800 1042 00000B75 000008070707070707- db 00,00,08,07,07,07,07,07,07,07,07,07,07,07,07,07,07,07,07,07,07,07,07,07,07,07,07,08,00,00 1042 00000B7E 070707070707070707- 1042 00000B87 070707070707070707- 1042 00000B90 080000 1043 00000B93 000000080808080808- db 00,00,00,08,08,08,08,08,08,08,08,08,08,08,08,08,08,08,08,08,08,08,08,08,08,08,08,00,00,00 1043 00000B9C 080808080808080808- 1043 00000BA5 080808080808080808- 1043 00000BAE 000000 1044 00000BB1 0000000F000000 FCln: db 00,00,00,15,00,00,00 1045 00000BB8 00000F07080000 db 00,00,15,07,08,00,00 1046 00000BBF 000F0707070800 db 00,15,07,07,07,08,00 1047 00000BC6 0F070707070708 db 15,07,07,07,07,07,08 1048 00000BCD 000F0707070800 db 00,15,07,07,07,08,00 1049 00000BD4 00000F07080000 db 00,00,15,07,08,00,00 1050 00000BDB 00000008000000 db 00,00,00,08,00,00,00 1051 1052 ; 2 1053 ; ----- 1054 ; | | 1055 ; 1 | | 3 1056 ; ----- 4 1057 ; | | 1058 ; 7 | | 5 1059 ; ----- 1060 ; 6