     1                                  ; ****************************************************************************
     2                                  ; clck.asm (for MSDOS)
     3                                  ; ----------------------------------------------------------------------------
     4                                  ; CLCK.COM ! VGA (Mode 13h) CLOCK DEMO program ! NASM version by Erdogan TAN
     5                                  ; (04/11/2017)
     6                                  
     7                                  ; ************************************************************************
     8                                  ; *  This is a small example of VGA mode 13h screen programming.
     9                                  ; *  It has the intent to show how to program in the specified mode,
    10                                  ; *  therefore does not contain small or efficient code.
    11                                  ; *  It is however quite fast, though probably could be a bit faster.
    12                                  ; *
    13                                  ; *  You may use this code as you would like.
    14                                  ; *  As always, If this code crashes you machine in anyway I am
    15                                  ; *  not held responsible.  Use at your own risk.
    16                                  ; *   Benjamin David Lunt
    17                                  ; *   Forever Young Software
    18                                  ; *   Copyright 1984-2015
    19                                  ; *   All rights reserved.
    20                                  ; *    08 Dec 1998
    21                                  ; *    NBASM
    22                                  ; *
    23                                  
    24                                  DSpc      equ 42
    25                                  
    26                                  [Bits 16]  ; no 32 bit stuff needed
    27                                  [Org 100h]
    28 00000000 B81300                             mov  ax,0013h
    29 00000003 CD10                               int  10h
    30 00000005 B800A0                             mov  ax,0A000h
    31 00000008 8EC0                               mov  es,ax
    32 0000000A 31FF                               xor  di,di
    33 0000000C B9FF7F                             mov  cx,32767
    34 0000000F A1[0C07]                           mov  ax,[BackG]
    35 00000012 F3AB                               rep  stosw
    36                                  
    37 00000014 BF2436                             mov  di,13860                ; print full colons
    38 00000017 E8ED00                             call FColon                  ;
    39 0000001A BF9236                             mov  di,13970                ;  + 110
    40 0000001D E8E700                             call FColon                  ;
    41 00000020 BFA451                             mov  di,20900                ;  + 7040
    42 00000023 E8E100                             call FColon                  ;
    43 00000026 BF1252                             mov  di,21010                ;  + 110 + 7040
    44 00000029 E8DB00                             call FColon                  ;
    45                                  
    46 0000002C E8C100                  MyLoop:    call GetTime                 ; get the current time
    47 0000002F BFC726                             mov  di,9927                 ; print hour
    48 00000032 A0[0907]                           mov  al,[Hour]               ;
    49 00000035 E8F100                             call DoHour                  ;
    50 00000038 BF3527                             mov  di,10037                ; print minutes
    51 0000003B A0[0A07]                           mov  al,[Min]                  ;
    52 0000003E E8E800                             call DoHour                  ;
    53 00000041 BFA227                             mov  di,10146                ; print seconds
    54 00000044 A0[0B07]                           mov  al,[Sec]                  ;
    55 00000047 E8DF00                             call DoHour                  ;
    56 0000004A B401                               mov  ah,01h                  ; see if key pressed
    57 0000004C CD16                               int  16h                     ;
    58 0000004E 74DC                               jz   short MyLoop            ; loop if no key pressed
    59 00000050 30E4                               xor  ah,ah                   ; key pressed so clear it
    60 00000052 CD16                               int  16h                     ;   from keyboard
    61                                             
    62 00000054 B80300                  Done:      mov  ax,0003h
    63 00000057 CD10                               int  10h
    64 00000059 B8004C                             mov  ax,4C00h
    65 0000005C CD21                               int  21h
    66                                  ;here:
    67                                  ;	   jmp	short here
    68                                  
    69                                  DoVLine:
    70 0000005E 50                      	   push	ax
    71 0000005F 51                      	   push cx
    72 00000060 56                      	   push si
    73 00000061 57                      	   push di
    74                                   	
    75 00000062 BE[0E07]                           mov  si, VLine
    76 00000065 B91900                             mov  cx,25
    77 00000068 51                      VLoop1:    push cx
    78 00000069 B90A00                             mov  cx,10
    79 0000006C AC                      VLoop2:    lodsb
    80 0000006D 08C0                               or   al,al
    81 0000006F 7402                               jz   short VNoDis
    82 00000071 AA                                 stosb
    83 00000072 4F                                 dec  di
    84 00000073 47                      VNoDis:    inc  di
    85 00000074 E2F6                               loop VLoop2
    86 00000076 81C73601                           add  di,310
    87 0000007A 59                                 pop  cx
    88 0000007B E2EB                               loop VLoop1
    89                                  
    90 0000007D 5F                      	   pop  di
    91 0000007E 5E                       	   pop  si
    92 0000007F 59                       	   pop  cx
    93 00000080 58                      	   pop 	ax
    94                                  	
    95 00000081 C3                                 retn
    96                                  
    97                                  DoRVLine:
    98 00000082 50                      	   push	ax
    99 00000083 51                      	   push cx
   100 00000084 56                      	   push si
   101 00000085 57                      	   push di
   102                                  
   103 00000086 BE[0E07]                	   mov  si, VLine
   104 00000089 B91900                             mov  cx,25
   105 0000008C 51                      VLoop1r:   push cx
   106 0000008D B90A00                             mov  cx,10
   107 00000090 AC                      VLoop2r:   lodsb
   108 00000091 08C0                               or   al,al
   109 00000093 7405                               jz   short VNoDisr
   110 00000095 A1[0C07]                           mov  ax,[BackG]
   111 00000098 AA                                 stosb
   112 00000099 4F                                 dec  di
   113 0000009A 47                      VNoDisr:   inc  di
   114 0000009B E2F3                               loop VLoop2r
   115 0000009D 81C73601                           add  di,310
   116 000000A1 59                                 pop  cx
   117 000000A2 E2E8                               loop VLoop1r
   118                                  
   119 000000A4 5F                      	   pop  di
   120 000000A5 5E                       	   pop  si
   121 000000A6 59                       	   pop  cx
   122 000000A7 58                      	   pop 	ax
   123                                  
   124 000000A8 C3                                 retn
   125                                  DoHLine:
   126 000000A9 51                      	   push cx
   127 000000AA 56                      	   push si
   128 000000AB 57                      	   push di
   129                                  
   130 000000AC BE[0808]                	   mov  si, HLine
   131 000000AF B90700                             mov  cx,07
   132 000000B2 51                      HLoop1:    push cx
   133 000000B3 B91E00                             mov  cx,30
   134 000000B6 AC                      HLoop2:    lodsb
   135 000000B7 08C0                               or   al,al
   136 000000B9 7402                               jz   short HNoDis
   137 000000BB AA                                 stosb
   138 000000BC 4F                                 dec  di
   139 000000BD 47                      HNoDis:    inc  di
   140 000000BE E2F6                               loop HLoop2
   141 000000C0 81C72201                           add  di,290
   142 000000C4 59                                 pop  cx
   143 000000C5 E2EB                               loop HLoop1
   144                                  
   145 000000C7 5F                      	   pop  di
   146 000000C8 5E                       	   pop  si
   147 000000C9 59                       	   pop  cx
   148                                  
   149 000000CA C3                                 retn
   150                                  DoRHLine:
   151 000000CB 51                      	   push cx
   152 000000CC 56                      	   push si
   153 000000CD 57                      	   push di
   154                                  
   155 000000CE BE[0808]                           mov  si, HLine
   156 000000D1 B90700                             mov  cx,07
   157 000000D4 51                      HLoop1r:   push cx
   158 000000D5 B91E00                             mov  cx,30
   159 000000D8 AC                      HLoop2r:   lodsb
   160 000000D9 08C0                               or   al,al
   161 000000DB 7405                               jz   short HNoDisr
   162 000000DD A1[0C07]                           mov  ax,[BackG]
   163 000000E0 AA                                 stosb
   164 000000E1 4F                                 dec  di
   165 000000E2 47                      HNoDisr:   inc  di
   166 000000E3 E2F3                               loop HLoop2r
   167 000000E5 81C72201                           add  di,290
   168 000000E9 59                                 pop  cx
   169 000000EA E2E8                               loop HLoop1r
   170                                  
   171 000000EC 5F                      	   pop  di
   172 000000ED 5E                       	   pop  si
   173 000000EE 59                       	   pop  cx
   174                                  
   175 000000EF C3                                 retn
   176                                  
   177                                  GetTime:
   178 000000F0 50                      	   push ax
   179 000000F1 51                      	   push cx
   180 000000F2 52                      	   push dx
   181                                  
   182 000000F3 B42C                               mov  ah,2Ch
   183 000000F5 CD21                               int  21h
   184 000000F7 882E[0907]                         mov  [Hour],ch
   185 000000FB 880E[0A07]                         mov  [Min],cl
   186 000000FF 8836[0B07]                         mov  [Sec],dh
   187                                  
   188 00000103 5A                      	   pop	dx
   189 00000104 59                      	   pop	cx
   190 00000105 58                      	   pop	ax
   191                                  
   192 00000106 C3                                 retn
   193                                  
   194                                  FColon:
   195 00000107 50                      	   push ax
   196 00000108 56                      	   push si
   197 00000109 57                      	   push di
   198                                  
   199 0000010A BE[DA08]                	   mov  si, FCln
   200 0000010D B90700                             mov  cx,07
   201 00000110 51                      FLoop1:    push cx
   202 00000111 B90700                             mov  cx,07
   203 00000114 AC                      FLoop2:    lodsb
   204 00000115 08C0                               or   al,al
   205 00000117 7402                               jz   short FNoDis
   206 00000119 AA                                 stosb
   207 0000011A 4F                                 dec  di
   208 0000011B 47                      FNoDis:    inc  di
   209 0000011C E2F6                               loop FLoop2
   210 0000011E 81C73901                           add  di,313
   211 00000122 59                                 pop  cx
   212 00000123 E2EB                               loop FLoop1
   213                                  
   214 00000125 5F                      	   pop	di
   215 00000126 5E                      	   pop	si
   216 00000127 58                      	   pop	ax
   217                                  
   218 00000128 C3                                 retn
   219                                  
   220                                  DoHour:
   221 00000129 50                      	   push ax
   222 0000012A 57                      	   push	di
   223                                  
   224 0000012B 08C0                               or   al,al
   225 0000012D 750C                               jnz  short Not0
   226 0000012F E8B103                             call Do0
   227 00000132 83C72A                             add  di,DSpc
   228 00000135 E8AB03                             call Do0
   229 00000138 E9A503                             jmp  HDone
   230 0000013B 3C01                    Not0:      cmp  al,01
   231 0000013D 750C                               jne  short Not1
   232 0000013F E8A103                             call Do0
   233 00000142 83C72A                             add  di,DSpc
   234 00000145 E8D203                             call Do1
   235 00000148 E99503                             jmp  HDone
   236 0000014B 3C02                    Not1:      cmp  al,02
   237 0000014D 750C                               jne  short Not2
   238 0000014F E89103                             call Do0
   239 00000152 83C72A                             add  di,DSpc
   240 00000155 E8F903                             call Do2
   241 00000158 E98503                             jmp  HDone
   242 0000015B 3C03                    Not2:      cmp  al,03
   243 0000015D 750C                               jne  short Not3
   244 0000015F E88103                             call Do0
   245 00000162 83C72A                             add  di,DSpc
   246 00000165 E82004                             call Do3
   247 00000168 E97503                             jmp  HDone
   248 0000016B 3C04                    Not3:      cmp  al,04
   249 0000016D 750C                               jne  short Not4
   250 0000016F E87103                             call Do0
   251 00000172 83C72A                             add  di,DSpc
   252 00000175 E84704                             call Do4
   253 00000178 E96503                             jmp  HDone
   254 0000017B 3C05                    Not4:      cmp  al,05
   255 0000017D 750C                               jne  short Not5
   256 0000017F E86103                             call Do0
   257 00000182 83C72A                             add  di,DSpc
   258 00000185 E86E04                             call Do5
   259 00000188 E95503                             jmp  HDone
   260 0000018B 3C06                    Not5:      cmp  al,06
   261 0000018D 750C                               jne  short Not6
   262 0000018F E85103                             call Do0
   263 00000192 83C72A                             add  di,DSpc
   264 00000195 E89504                             call Do6
   265 00000198 E94503                             jmp  HDone
   266 0000019B 3C07                    Not6:      cmp  al,07
   267 0000019D 750C                               jne  short Not7
   268 0000019F E84103                             call Do0
   269 000001A2 83C72A                             add  di,DSpc
   270 000001A5 E8BC04                             call Do7
   271 000001A8 E93503                             jmp  HDone
   272 000001AB 3C08                    Not7:      cmp  al,08
   273 000001AD 750C                               jne  short Not8
   274 000001AF E83103                             call Do0
   275 000001B2 83C72A                             add  di,DSpc
   276 000001B5 E8E304                             call Do8
   277 000001B8 E92503                             jmp  HDone
   278 000001BB 3C09                    Not8:      cmp  al,09
   279 000001BD 750C                               jne  short Not9
   280 000001BF E82103                             call Do0
   281 000001C2 83C72A                             add  di,DSpc
   282 000001C5 E80A05                             call Do9
   283 000001C8 E91503                             jmp  HDone
   284 000001CB 3C0A                    Not9:      cmp  al,10
   285 000001CD 750C                               jne  short Not10
   286 000001CF E84803                             call Do1
   287 000001D2 83C72A                             add  di,DSpc
   288 000001D5 E80B03                             call Do0
   289 000001D8 E90503                             jmp  HDone
   290 000001DB 3C0B                    Not10:     cmp  al,11
   291 000001DD 750C                               jne  short Not11
   292 000001DF E83803                             call Do1
   293 000001E2 83C72A                             add  di,DSpc
   294 000001E5 E83203                             call Do1
   295 000001E8 E9F502                             jmp  HDone
   296 000001EB 3C0C                    Not11:     cmp  al,12
   297 000001ED 750C                               jne  short Not12
   298 000001EF E82803                             call Do1
   299 000001F2 83C72A                             add  di,DSpc
   300 000001F5 E85903                             call Do2
   301 000001F8 E9E502                             jmp  HDone
   302 000001FB 3C0D                    Not12:     cmp  al,13
   303 000001FD 750C                               jne  short Not13
   304 000001FF E81803                             call Do1
   305 00000202 83C72A                             add  di,DSpc
   306 00000205 E88003                             call Do3
   307 00000208 E9D502                             jmp  HDone
   308 0000020B 3C0E                    Not13:     cmp  al,14
   309 0000020D 750C                               jne  short Not14
   310 0000020F E80803                             call Do1
   311 00000212 83C72A                             add  di,DSpc
   312 00000215 E8A703                             call Do4
   313 00000218 E9C502                             jmp  HDone
   314 0000021B 3C0F                    Not14:     cmp  al,15
   315 0000021D 750C                               jne  short Not15
   316 0000021F E8F802                             call Do1
   317 00000222 83C72A                             add  di,DSpc
   318 00000225 E8CE03                             call Do5
   319 00000228 E9B502                             jmp  HDone
   320 0000022B 3C10                    Not15:     cmp  al,16
   321 0000022D 750C                               jne  short Not16
   322 0000022F E8E802                             call Do1
   323 00000232 83C72A                             add  di,DSpc
   324 00000235 E8F503                             call Do6
   325 00000238 E9A502                             jmp  HDone
   326 0000023B 3C11                    Not16:     cmp  al,17
   327 0000023D 750C                               jne  short Not17
   328 0000023F E8D802                             call Do1
   329 00000242 83C72A                             add  di,DSpc
   330 00000245 E81C04                             call Do7
   331 00000248 E99502                             jmp  HDone
   332 0000024B 3C12                    Not17:     cmp  al,18
   333 0000024D 750C                               jne  short Not18
   334 0000024F E8C802                             call Do1
   335 00000252 83C72A                             add  di,DSpc
   336 00000255 E84304                             call Do8
   337 00000258 E98502                             jmp  HDone
   338 0000025B 3C13                    Not18:     cmp  al,19
   339 0000025D 750C                               jne  short Not19
   340 0000025F E8B802                             call Do1
   341 00000262 83C72A                             add  di,DSpc
   342 00000265 E86A04                             call Do9
   343 00000268 E97502                             jmp  HDone
   344 0000026B 3C14                    Not19:     cmp  al,20
   345 0000026D 750C                               jne  short Not20
   346 0000026F E8DF02                             call Do2
   347 00000272 83C72A                             add  di,DSpc
   348 00000275 E86B02                             call Do0
   349 00000278 E96502                             jmp  HDone
   350 0000027B 3C15                    Not20:     cmp  al,21
   351 0000027D 750C                               jne  short Not21
   352 0000027F E8CF02                             call Do2
   353 00000282 83C72A                             add  di,DSpc
   354 00000285 E89202                             call Do1
   355 00000288 E95502                             jmp  HDone
   356 0000028B 3C16                    Not21:     cmp  al,22
   357 0000028D 750C                               jne  short Not22
   358 0000028F E8BF02                             call Do2
   359 00000292 83C72A                             add  di,DSpc
   360 00000295 E8B902                             call Do2
   361 00000298 E94502                             jmp  HDone
   362 0000029B 3C17                    Not22:     cmp  al,23
   363 0000029D 750C                               jne  short Not23
   364 0000029F E8AF02                             call Do2
   365 000002A2 83C72A                             add  di,DSpc
   366 000002A5 E8E002                             call Do3
   367 000002A8 E93502                             jmp  HDone
   368 000002AB 3C18                    Not23:     cmp  al,24
   369 000002AD 750C                               jne  short Not24
   370 000002AF E89F02                             call Do2
   371 000002B2 83C72A                             add  di,DSpc
   372 000002B5 E80703                             call Do4
   373 000002B8 E92502                             jmp  HDone
   374 000002BB 3C19                    Not24:     cmp  al,25
   375 000002BD 750C                               jne  short Not25
   376 000002BF E88F02                             call Do2
   377 000002C2 83C72A                             add  di,DSpc
   378 000002C5 E82E03                             call Do5
   379 000002C8 E91502                             jmp  HDone
   380 000002CB 3C1A                    Not25:     cmp  al,26
   381 000002CD 750C                               jne  short Not26
   382 000002CF E87F02                             call Do2
   383 000002D2 83C72A                             add  di,DSpc
   384 000002D5 E85503                             call Do6
   385 000002D8 E90502                             jmp  HDone
   386 000002DB 3C1B                    Not26:     cmp  al,27
   387 000002DD 750C                               jne  short Not27
   388 000002DF E86F02                             call Do2
   389 000002E2 83C72A                             add  di,DSpc
   390 000002E5 E87C03                             call Do7
   391 000002E8 E9F501                             jmp  HDone
   392 000002EB 3C1C                    Not27:     cmp  al,28
   393 000002ED 750C                               jne  short Not28
   394 000002EF E85F02                             call Do2
   395 000002F2 83C72A                             add  di,DSpc
   396 000002F5 E8A303                             call Do8
   397 000002F8 E9E501                             jmp  HDone
   398 000002FB 3C1D                    Not28:     cmp  al,29
   399 000002FD 750C                               jne  short Not29
   400 000002FF E84F02                             call Do2
   401 00000302 83C72A                             add  di,DSpc
   402 00000305 E8CA03                             call Do9
   403 00000308 E9D501                             jmp  HDone
   404 0000030B 3C1E                    Not29:     cmp  al,30
   405 0000030D 750C                               jne  short Not30
   406 0000030F E87602                             call Do3
   407 00000312 83C72A                             add  di,DSpc
   408 00000315 E8CB01                             call Do0
   409 00000318 E9C501                             jmp  HDone
   410 0000031B 3C1F                    Not30:     cmp  al,31
   411 0000031D 750C                               jne  short Not31
   412 0000031F E86602                             call Do3
   413 00000322 83C72A                             add  di,DSpc
   414 00000325 E8F201                             call Do1
   415 00000328 E9B501                             jmp  HDone
   416 0000032B 3C20                    Not31:     cmp  al,32
   417 0000032D 750C                               jne  short Not32
   418 0000032F E85602                             call Do3
   419 00000332 83C72A                             add  di,DSpc
   420 00000335 E81902                             call Do2
   421 00000338 E9A501                             jmp  HDone
   422 0000033B 3C21                    Not32:     cmp  al,33
   423 0000033D 750C                               jne  short Not33
   424 0000033F E84602                             call Do3
   425 00000342 83C72A                             add  di,DSpc
   426 00000345 E84002                             call Do3
   427 00000348 E99501                             jmp  HDone
   428 0000034B 3C22                    Not33:     cmp  al,34
   429 0000034D 750C                               jne  short Not34
   430 0000034F E83602                             call Do3
   431 00000352 83C72A                             add  di,DSpc
   432 00000355 E86702                             call Do4
   433 00000358 E98501                             jmp  HDone
   434 0000035B 3C23                    Not34:     cmp  al,35
   435 0000035D 750C                               jne  short Not35
   436 0000035F E82602                             call Do3
   437 00000362 83C72A                             add  di,DSpc
   438 00000365 E88E02                             call Do5
   439 00000368 E97501                             jmp  HDone
   440 0000036B 3C24                    Not35:     cmp  al,36
   441 0000036D 750C                               jne  short Not36
   442 0000036F E81602                             call Do3
   443 00000372 83C72A                             add  di,DSpc
   444 00000375 E8B502                             call Do6
   445 00000378 E96501                             jmp  HDone
   446 0000037B 3C25                    Not36:     cmp  al,37
   447 0000037D 750C                               jne  short Not37
   448 0000037F E80602                             call Do3
   449 00000382 83C72A                             add  di,DSpc
   450 00000385 E8DC02                             call Do7
   451 00000388 E95501                             jmp  HDone
   452 0000038B 3C26                    Not37:     cmp  al,38
   453 0000038D 750C                               jne  short Not38
   454 0000038F E8F601                             call Do3
   455 00000392 83C72A                             add  di,DSpc
   456 00000395 E80303                             call Do8
   457 00000398 E94501                             jmp  HDone
   458 0000039B 3C27                    Not38:     cmp  al,39
   459 0000039D 750C                               jne  short Not39
   460 0000039F E8E601                             call Do3
   461 000003A2 83C72A                             add  di,DSpc
   462 000003A5 E82A03                             call Do9
   463 000003A8 E93501                             jmp  HDone
   464 000003AB 3C28                    Not39:     cmp  al,40
   465 000003AD 750C                               jne  short Not40
   466 000003AF E80D02                             call Do4
   467 000003B2 83C72A                             add  di,DSpc
   468 000003B5 E82B01                             call Do0
   469 000003B8 E92501                             jmp  HDone
   470 000003BB 3C29                    Not40:     cmp  al,41
   471 000003BD 750C                               jne  short Not41
   472 000003BF E8FD01                             call Do4
   473 000003C2 83C72A                             add  di,DSpc
   474 000003C5 E85201                             call Do1
   475 000003C8 E91501                             jmp  HDone
   476 000003CB 3C2A                    Not41:     cmp  al,42
   477 000003CD 750C                               jne  short Not42
   478 000003CF E8ED01                             call Do4
   479 000003D2 83C72A                             add  di,DSpc
   480 000003D5 E87901                             call Do2
   481 000003D8 E90501                             jmp  HDone
   482 000003DB 3C2B                    Not42:     cmp  al,43
   483 000003DD 750C                               jne  short Not43
   484 000003DF E8DD01                             call Do4
   485 000003E2 83C72A                             add  di,DSpc
   486 000003E5 E8A001                             call Do3
   487 000003E8 E9F500                             jmp  HDone
   488 000003EB 3C2C                    Not43:     cmp  al,44
   489 000003ED 750C                               jne  short Not44
   490 000003EF E8CD01                             call Do4
   491 000003F2 83C72A                             add  di,DSpc
   492 000003F5 E8C701                             call Do4
   493 000003F8 E9E500                             jmp  HDone
   494 000003FB 3C2D                    Not44:     cmp  al,45
   495 000003FD 750C                               jne  short Not45
   496 000003FF E8BD01                             call Do4
   497 00000402 83C72A                             add  di,DSpc
   498 00000405 E8EE01                             call Do5
   499 00000408 E9D500                             jmp  HDone
   500 0000040B 3C2E                    Not45:     cmp  al,46
   501 0000040D 750C                               jne  short Not46
   502 0000040F E8AD01                             call Do4
   503 00000412 83C72A                             add  di,DSpc
   504 00000415 E81502                             call Do6
   505 00000418 E9C500                             jmp  HDone
   506 0000041B 3C2F                    Not46:     cmp  al,47
   507 0000041D 750C                               jne  short Not47
   508 0000041F E89D01                             call Do4
   509 00000422 83C72A                             add  di,DSpc
   510 00000425 E83C02                             call Do7
   511 00000428 E9B500                             jmp  HDone
   512 0000042B 3C30                    Not47:     cmp  al,48
   513 0000042D 750C                               jne  short Not48
   514 0000042F E88D01                             call Do4
   515 00000432 83C72A                             add  di,DSpc
   516 00000435 E86302                             call Do8
   517 00000438 E9A500                             jmp  HDone
   518 0000043B 3C31                    Not48:     cmp  al,49
   519 0000043D 750C                               jne  short Not49
   520 0000043F E87D01                             call Do4
   521 00000442 83C72A                             add  di,DSpc
   522 00000445 E88A02                             call Do9
   523 00000448 E99500                             jmp  HDone
   524 0000044B 3C32                    Not49:     cmp  al,50
   525 0000044D 750C                               jne  short Not50
   526 0000044F E8A401                             call Do5
   527 00000452 83C72A                             add  di,DSpc
   528 00000455 E88B00                             call Do0
   529 00000458 E98500                             jmp  HDone
   530 0000045B 3C33                    Not50:     cmp  al,51
   531 0000045D 750B                               jne  short Not51
   532 0000045F E89401                             call Do5
   533 00000462 83C72A                             add  di,DSpc
   534 00000465 E8B200                             call Do1
   535 00000468 EB76                               jmp  short HDone
   536 0000046A 3C34                    Not51:     cmp  al,52
   537 0000046C 750B                               jne  short Not52
   538 0000046E E88501                             call Do5
   539 00000471 83C72A                             add  di,DSpc
   540 00000474 E8DA00                             call Do2
   541 00000477 EB67                               jmp  short HDone
   542 00000479 3C35                    Not52:     cmp  al,53
   543 0000047B 750B                               jne  short Not53
   544 0000047D E87601                             call Do5
   545 00000480 83C72A                             add  di,DSpc
   546 00000483 E80201                             call Do3
   547 00000486 EB58                               jmp  short HDone
   548 00000488 3C36                    Not53:     cmp  al,54
   549 0000048A 750B                               jne  short Not54
   550 0000048C E86701                             call Do5
   551 0000048F 83C72A                             add  di,DSpc
   552 00000492 E82A01                             call Do4
   553 00000495 EB49                               jmp  short HDone
   554 00000497 3C37                    Not54:     cmp  al,55
   555 00000499 750B                               jne  short Not55
   556 0000049B E85801                             call Do5
   557 0000049E 83C72A                             add  di,DSpc
   558 000004A1 E85201                             call Do5
   559 000004A4 EB3A                               jmp  short HDone
   560 000004A6 3C38                    Not55:     cmp  al,56
   561 000004A8 750B                               jne  short Not56
   562 000004AA E84901                             call Do5
   563 000004AD 83C72A                             add  di,DSpc
   564 000004B0 E87A01                             call Do6
   565 000004B3 EB2B                               jmp  short HDone
   566 000004B5 3C39                    Not56:     cmp  al,57
   567 000004B7 750B                               jne  short Not57
   568 000004B9 E83A01                             call Do5
   569 000004BC 83C72A                             add  di,DSpc
   570 000004BF E8A201                             call Do7
   571 000004C2 EB1C                               jmp  short HDone
   572 000004C4 3C3A                    Not57:     cmp  al,58
   573 000004C6 750B                               jne  short Not58
   574 000004C8 E82B01                             call Do5
   575 000004CB 83C72A                             add  di,DSpc
   576 000004CE E8CA01                             call Do8
   577 000004D1 EB0D                               jmp  short HDone
   578 000004D3 3C3B                    Not58:     cmp  al,59
   579 000004D5 7509                               jne  short HDone
   580 000004D7 E81C01                             call Do5
   581 000004DA 83C72A                             add  di,DSpc
   582 000004DD E8F201                             call Do9
   583                                  HDone:   
   584 000004E0 5F                      	   pop	di
   585 000004E1 58                      	   pop	ax
   586                                  
   587 000004E2 C3                      	   retn
   588                                  
   589                                  Do0:
   590 000004E3 50                      	   push ax
   591 000004E4 57                      	   push	di
   592                                  
   593 000004E5 E876FB                             call DoVLine                 ; 1
   594 000004E8 57                                 push di
   595 000004E9 81C7401F                           add  di,8000
   596 000004ED E86EFB                             call DoVLine                 ; 7
   597 000004F0 5F                                 pop  di
   598 000004F1 47                                 inc  di
   599 000004F2 47                                 inc  di
   600 000004F3 57                                 push di
   601 000004F4 81EFBD03                           sub  di,957
   602 000004F8 E8AEFB                             call DoHLine                 ; 2
   603 000004FB 81C7401F                           add  di,8000
   604 000004FF E8C9FB                             call DoRHLine                ; 4
   605 00000502 81C7401F                           add  di,8000
   606 00000506 E8A0FB                             call DoHLine                 ; 6
   607 00000509 5F                                 pop  di
   608 0000050A 83C71D                             add  di,29
   609 0000050D E84EFB                             call DoVLine                 ; 3
   610 00000510 81C7401F                           add  di,8000
   611 00000514 E847FB                             call DoVLine                 ; 5
   612                                  
   613 00000517 5F                      	   pop	di
   614 00000518 58                      	   pop	ax
   615                                  
   616 00000519 C3                                 retn
   617                                  
   618                                  Do1:
   619 0000051A 50                      	   push ax
   620 0000051B 57                      	   push	di
   621                                  
   622 0000051C E863FB                             call DoRVLine                ; 1
   623 0000051F 57                                 push di
   624 00000520 81C7401F                           add  di,8000
   625 00000524 E85BFB                             call DoRVLine                ; 7
   626 00000527 5F                                 pop  di
   627 00000528 47                                 inc  di
   628 00000529 47                                 inc  di
   629 0000052A 57                                 push di
   630 0000052B 81EFBD03                           sub  di,957
   631 0000052F E899FB                             call DoRHLine                ; 2
   632 00000532 81C7401F                           add  di,8000
   633 00000536 E892FB                             call DoRHLine                ; 4
   634 00000539 81C7401F                           add  di,8000
   635 0000053D E88BFB                             call DoRHLine                ; 6
   636 00000540 5F                                 pop  di
   637 00000541 83C71D                             add  di,29
   638 00000544 E817FB                             call DoVLine                 ; 3
   639 00000547 81C7401F                           add  di,8000
   640 0000054B E810FB                             call DoVLine                 ; 5
   641                                  
   642 0000054E 5F                      	   pop	di
   643 0000054F 58                      	   pop	ax
   644                                  
   645 00000550 C3                                 retn
   646                                  Do2:
   647 00000551 50                      	   push ax
   648 00000552 57                      	   push	di
   649                                  
   650 00000553 E82CFB                             call DoRVLine                ; 1
   651 00000556 57                                 push di
   652 00000557 81C7401F                           add  di,8000
   653 0000055B E800FB                             call DoVLine                 ; 7
   654 0000055E 5F                                 pop  di
   655 0000055F 47                                 inc  di
   656 00000560 47                                 inc  di
   657 00000561 57                                 push di
   658 00000562 81EFBD03                           sub  di,957
   659 00000566 E840FB                             call DoHLine                 ; 2
   660 00000569 81C7401F                           add  di,8000
   661 0000056D E839FB                             call DoHLine                 ; 4
   662 00000570 81C7401F                           add  di,8000
   663 00000574 E832FB                             call DoHLine                 ; 6
   664 00000577 5F                                 pop  di
   665 00000578 83C71D                             add  di,29
   666 0000057B E8E0FA                             call DoVLine                 ; 3
   667 0000057E 81C7401F                           add  di,8000
   668 00000582 E8FDFA                             call DoRVLine                ; 5
   669                                  
   670 00000585 5F                      	   pop	di
   671 00000586 58                      	   pop	ax
   672                                  
   673 00000587 C3                                 retn
   674                                  Do3:
   675 00000588 50                      	   push ax
   676 00000589 57                      	   push	di
   677                                  
   678 0000058A E8F5FA                             call DoRVLine                ; 1
   679 0000058D 57                                 push di
   680 0000058E 81C7401F                           add  di,8000
   681 00000592 E8EDFA                             call DoRVLine                ; 7
   682 00000595 5F                                 pop  di
   683 00000596 47                                 inc  di
   684 00000597 47                                 inc  di
   685 00000598 57                                 push di
   686 00000599 81EFBD03                           sub  di,957
   687 0000059D E809FB                             call DoHLine                 ; 2
   688 000005A0 81C7401F                           add  di,8000
   689 000005A4 E802FB                             call DoHLine                 ; 4
   690 000005A7 81C7401F                           add  di,8000
   691 000005AB E8FBFA                             call DoHLine                 ; 6
   692 000005AE 5F                                 pop  di
   693 000005AF 83C71D                             add  di,29
   694 000005B2 E8A9FA                             call DoVLine                 ; 3
   695 000005B5 81C7401F                           add  di,8000
   696 000005B9 E8A2FA                             call DoVLine                 ; 5
   697                                  
   698 000005BC 5F                      	   pop	di
   699 000005BD 58                      	   pop	ax
   700                                  
   701 000005BE C3                                 retn
   702                                  Do4:
   703 000005BF 50                      	   push ax
   704 000005C0 57                      	   push	di
   705                                  
   706 000005C1 E89AFA                             call DoVLine                 ; 1
   707 000005C4 57                                 push di
   708 000005C5 81C7401F                           add  di,8000
   709 000005C9 E8B6FA                             call DoRVLine                ; 7
   710 000005CC 5F                                 pop  di
   711 000005CD 47                                 inc  di
   712 000005CE 47                                 inc  di
   713 000005CF 57                                 push di
   714 000005D0 81EFBD03                           sub  di,957
   715 000005D4 E8F4FA                             call DoRHLine                ; 2
   716 000005D7 81C7401F                           add  di,8000
   717 000005DB E8CBFA                             call DoHLine                 ; 4
   718 000005DE 81C7401F                           add  di,8000
   719 000005E2 E8E6FA                             call DoRHLine                ; 6
   720 000005E5 5F                                 pop  di
   721 000005E6 83C71D                             add  di,29
   722 000005E9 E872FA                             call DoVLine                 ; 3
   723 000005EC 81C7401F                           add  di,8000
   724 000005F0 E86BFA                             call DoVLine                 ; 5
   725                                  
   726 000005F3 5F                      	   pop	di
   727 000005F4 58                      	   pop	ax
   728                                  
   729 000005F5 C3                                 retn
   730                                  Do5:
   731 000005F6 50                      	   push ax
   732 000005F7 57                      	   push	di
   733                                  
   734 000005F8 E863FA                             call DoVLine                 ; 1
   735 000005FB 57                                 push di
   736 000005FC 81C7401F                           add  di,8000
   737 00000600 E87FFA                             call DoRVLine                ; 7
   738 00000603 5F                                 pop  di
   739 00000604 47                                 inc  di
   740 00000605 47                                 inc  di
   741 00000606 57                                 push di
   742 00000607 81EFBD03                           sub  di,957
   743 0000060B E89BFA                             call DoHLine                 ; 2
   744 0000060E 81C7401F                           add  di,8000
   745 00000612 E894FA                             call DoHLine                 ; 4
   746 00000615 81C7401F                           add  di,8000
   747 00000619 E88DFA                             call DoHLine                 ; 6
   748 0000061C 5F                                 pop  di
   749 0000061D 83C71D                             add  di,29
   750 00000620 E85FFA                             call DoRVLine                ; 3
   751 00000623 81C7401F                           add  di,8000
   752 00000627 E834FA                             call DoVLine                 ; 5
   753                                  
   754 0000062A 5F                      	   pop	di
   755 0000062B 58                      	   pop	ax
   756                                  
   757 0000062C C3                                 retn
   758                                  Do6:
   759 0000062D 50                      	   push ax
   760 0000062E 57                      	   push	di
   761                                  
   762 0000062F E82CFA                             call DoVLine                 ; 1
   763 00000632 57                                 push di
   764 00000633 81C7401F                           add  di,8000
   765 00000637 E824FA                             call DoVLine                 ; 7
   766 0000063A 5F                                 pop  di
   767 0000063B 47                                 inc  di
   768 0000063C 47                                 inc  di
   769 0000063D 57                                 push di
   770 0000063E 81EFBD03                           sub  di,957
   771 00000642 E864FA                             call DoHLine                 ; 2
   772 00000645 81C7401F                           add  di,8000
   773 00000649 E85DFA                             call DoHLine                 ; 4
   774 0000064C 81C7401F                           add  di,8000
   775 00000650 E856FA                             call DoHLine                 ; 6
   776 00000653 5F                                 pop  di
   777 00000654 83C71D                             add  di,29
   778 00000657 E828FA                             call DoRVLine                ; 3
   779 0000065A 81C7401F                           add  di,8000
   780 0000065E E8FDF9                             call DoVLine                 ; 5
   781                                  
   782 00000661 5F                      	   pop	di
   783 00000662 58                      	   pop	ax
   784                                  
   785 00000663 C3                                 retn
   786                                  Do7:
   787 00000664 50                      	   push ax
   788 00000665 57                      	   push	di
   789                                  
   790 00000666 E819FA                             call DoRVLine                ; 1
   791 00000669 57                                 push di
   792 0000066A 81C7401F                           add  di,8000
   793 0000066E E811FA                             call DoRVLine                ; 7
   794 00000671 5F                                 pop  di
   795 00000672 47                                 inc  di
   796 00000673 47                                 inc  di
   797 00000674 57                                 push di
   798 00000675 81EFBD03                           sub  di,957
   799 00000679 E82DFA                             call DoHLine                 ; 2
   800 0000067C 81C7401F                           add  di,8000
   801 00000680 E848FA                             call DoRHLine                ; 4
   802 00000683 81C7401F                           add  di,8000
   803 00000687 E841FA                             call DoRHLine                ; 6
   804 0000068A 5F                                 pop  di
   805 0000068B 83C71D                             add  di,29
   806 0000068E E8CDF9                             call DoVLine                 ; 3
   807 00000691 81C7401F                           add  di,8000
   808 00000695 E8C6F9                             call DoVLine                 ; 5
   809                                  
   810 00000698 5F                      	   pop	di
   811 00000699 58                      	   pop	ax
   812                                  
   813 0000069A C3                                 retn
   814                                  Do8:
   815 0000069B 50                      	   push ax
   816 0000069C 57                      	   push	di
   817                                  
   818 0000069D E8BEF9                             call DoVLine                 ; 1
   819 000006A0 57                                 push di
   820 000006A1 81C7401F                           add  di,8000
   821 000006A5 E8B6F9                             call DoVLine                 ; 7
   822 000006A8 5F                                 pop  di
   823 000006A9 47                                 inc  di
   824 000006AA 47                                 inc  di
   825 000006AB 57                                 push di
   826 000006AC 81EFBD03                           sub  di,957
   827 000006B0 E8F6F9                             call DoHLine                 ; 2
   828 000006B3 81C7401F                           add  di,8000
   829 000006B7 E8EFF9                             call DoHLine                 ; 4
   830 000006BA 81C7401F                           add  di,8000
   831 000006BE E8E8F9                             call DoHLine                 ; 6
   832 000006C1 5F                                 pop  di
   833 000006C2 83C71D                             add  di,29
   834 000006C5 E896F9                             call DoVLine                 ; 3
   835 000006C8 81C7401F                           add  di,8000
   836 000006CC E88FF9                             call DoVLine                 ; 5
   837                                  
   838 000006CF 5F                      	   pop	di
   839 000006D0 58                      	   pop	ax
   840                                  
   841 000006D1 C3                                 retn
   842                                  Do9:
   843 000006D2 50                      	   push ax
   844 000006D3 57                      	   push	di
   845                                  
   846 000006D4 E887F9                             call DoVLine                 ; 1
   847 000006D7 57                                 push di
   848 000006D8 81C7401F                           add  di,8000
   849 000006DC E8A3F9                             call DoRVLine                ; 7
   850 000006DF 5F                                 pop  di
   851 000006E0 47                                 inc  di
   852 000006E1 47                                 inc  di
   853 000006E2 57                                 push di
   854 000006E3 81EFBD03                           sub  di,957
   855 000006E7 E8BFF9                             call DoHLine                 ; 2
   856 000006EA 81C7401F                           add  di,8000
   857 000006EE E8B8F9                             call DoHLine                 ; 4
   858 000006F1 81C7401F                           add  di,8000
   859 000006F5 E8B1F9                             call DoHLine                 ; 6
   860 000006F8 5F                                 pop  di
   861 000006F9 83C71D                             add  di,29
   862 000006FC E85FF9                             call DoVLine                 ; 3
   863 000006FF 81C7401F                           add  di,8000
   864 00000703 E858F9                             call DoVLine                 ; 5
   865                                  
   866 00000706 5F                      	   pop	di
   867 00000707 58                      	   pop	ax
   868                                  
   869 00000708 C3                                 retn
   870                                  
   871 00000709 00                      Hour:     db  00h
   872 0000070A 00                      Min:      db  00h
   873 0000070B 00                      Sec:      db  00h
   874 0000070C 0707                    BackG:    dw  0707h
   875 0000070E 000000000F00000000-     VLine:    db  00,00,00,00,15,00,00,00,00,00
   875 00000717 00                 
   876 00000718 0000000F0708000000-               db  00,00,00,15,07,08,00,00,00,00
   876 00000721 00                 
   877 00000722 00000F070707080000-               db  00,00,15,07,07,07,08,00,00,00
   877 0000072B 00                 
   878 0000072C 000F07070707070800-               db  00,15,07,07,07,07,07,08,00,00
   878 00000735 00                 
   879 00000736 0F0707070707070708-               db  15,07,07,07,07,07,07,07,08,00
   879 0000073F 00                 
   880 00000740 0F0707070707070708-               db  15,07,07,07,07,07,07,07,08,00
   880 00000749 00                 
   881 0000074A 0F0707070707070708-               db  15,07,07,07,07,07,07,07,08,00
   881 00000753 00                 
   882 00000754 0F0707070707070708-               db  15,07,07,07,07,07,07,07,08,00
   882 0000075D 00                 
   883 0000075E 0F0707070707070708-               db  15,07,07,07,07,07,07,07,08,00
   883 00000767 00                 
   884 00000768 0F0707070707070708-               db  15,07,07,07,07,07,07,07,08,00
   884 00000771 00                 
   885 00000772 0F0707070707070708-               db  15,07,07,07,07,07,07,07,08,00
   885 0000077B 00                 
   886 0000077C 0F0707070707070708-               db  15,07,07,07,07,07,07,07,08,00
   886 00000785 00                 
   887 00000786 0F0707070707070708-               db  15,07,07,07,07,07,07,07,08,00
   887 0000078F 00                 
   888 00000790 0F0707070707070708-               db  15,07,07,07,07,07,07,07,08,00
   888 00000799 00                 
   889 0000079A 0F0707070707070708-               db  15,07,07,07,07,07,07,07,08,00
   889 000007A3 00                 
   890 000007A4 0F0707070707070708-               db  15,07,07,07,07,07,07,07,08,00
   890 000007AD 00                 
   891 000007AE 0F0707070707070708-               db  15,07,07,07,07,07,07,07,08,00
   891 000007B7 00                 
   892 000007B8 0F0707070707070708-               db  15,07,07,07,07,07,07,07,08,00
   892 000007C1 00                 
   893 000007C2 0F0707070707070708-               db  15,07,07,07,07,07,07,07,08,00
   893 000007CB 00                 
   894 000007CC 0F0707070707070708-               db  15,07,07,07,07,07,07,07,08,00
   894 000007D5 00                 
   895 000007D6 0F0707070707070708-               db  15,07,07,07,07,07,07,07,08,00
   895 000007DF 00                 
   896 000007E0 000807070707070800-               db  00,08,07,07,07,07,07,08,00,00
   896 000007E9 00                 
   897 000007EA 000008070707080000-               db  00,00,08,07,07,07,08,00,00,00
   897 000007F3 00                 
   898 000007F4 000000080708000000-               db  00,00,00,08,07,08,00,00,00,00
   898 000007FD 00                 
   899 000007FE 000000000800000000-               db  00,00,00,00,08,00,00,00,00,00
   899 00000807 00                 
   900 00000808 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
   900 00000811 0F0F0F0F0F0F0F0F0F-
   900 0000081A 0F0F0F0F0F0F0F0F0F-
   900 00000823 000000             
   901 00000826 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
   901 0000082F 070707070707070707-
   901 00000838 070707070707070707-
   901 00000841 080000             
   902 00000844 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
   902 0000084D 070707070707070707-
   902 00000856 070707070707070707-
   902 0000085F 070800             
   903 00000862 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
   903 0000086B 070707070707070707-
   903 00000874 070707070707070707-
   903 0000087D 070708             
   904 00000880 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
   904 00000889 070707070707070707-
   904 00000892 070707070707070707-
   904 0000089B 070800             
   905 0000089E 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
   905 000008A7 070707070707070707-
   905 000008B0 070707070707070707-
   905 000008B9 080000             
   906 000008BC 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
   906 000008C5 080808080808080808-
   906 000008CE 080808080808080808-
   906 000008D7 000000             
   907 000008DA 0000000F000000          FCln:     db  00,00,00,15,00,00,00
   908 000008E1 00000F07080000                    db  00,00,15,07,08,00,00
   909 000008E8 000F0707070800                    db  00,15,07,07,07,08,00
   910 000008EF 0F070707070708                    db  15,07,07,07,07,07,08
   911 000008F6 000F0707070800                    db  00,15,07,07,07,08,00
   912 000008FD 00000F07080000                    db  00,00,15,07,08,00,00
   913 00000904 00000008000000                    db  00,00,00,08,00,00,00
   914                                  
   915                                  ;         2
   916                                  ;       -----
   917                                  ;      |     |
   918                                  ;    1 |     | 3
   919                                  ;       -----  4
   920                                  ;      |     |
   921                                  ;    7 |     | 5
   922                                  ;       -----
   923                                  ;         6
