Screen 0 not modified 0 \ ks 22 dez 87 1 2 The timer utilizes the memory cell at $46C that is incremented 3 by an interrupt. A couple of words allow this timer to be 4 used for time delays. 5 6 time-of-day and date are accessed via MS-DOS calls. 7 8 9 10 11 12 13 14 15 Screen 1 not modified 0 \ BIMomat BIOS Timer ks 03 apr 88 1 Onlyforth \needs Assembler 2 loadfrom asm.scr 2 3 $46C >label Counter 4 5 \ 1193180 / 65536 = 18,206 Hz 6 7 1 2 +thru .( Timer geladen) cr 8 9 10 11 12 13 14 15 Screen 2 not modified 0 \ BIMomat BIOS Timer ks 22 dez 87 1 2 Code ticks ( -- n ) D push D: C mov A A xor 3 A D: mov Counter #) D mov C D: mov Next end-code 4 5 : timeout? ( ticks -- ticks f ) pause dup ticks - 0< ; 6 7 : till ( n -- ) BEGIN timeout? UNTIL drop ; 8 9 : time ( n -- time ) ticks + ; 10 11 : wait ( n -- ) time till ; 12 13 : seconds ( sec -- ticks ) &18206 &1000 */ ; 14 15 : minutes ( min -- ticks ) &1092 * ; Screen 3 not modified 0 \ MS-DOS time and date ks 22 dez 87 1 2 Code date@ ( -- dd mm yy ) 3 D push $2A # A+ mov $21 int A A xor D+ A- xchg 4 D push A push C D mov &1900 # D sub Next 5 end-code 6 7 Code time@ ( -- ss mm hh ) 8 D push $2C # A+ mov $21 int D+ D- mov 0 # D+ mov 9 D push D+ D- mov C+ D- xchg C push Next 10 end-code 11 12 13 14 15 Screen 4 not modified 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15