KCLOCKIO DEFCLOCKIO FOROCLOCKIO MCD ŹCLOCKIO MOD CLOCKIO SYMjTSTCLK COM`2TSTCLK MCDRTSTCLK MOD  DEFINITION MODULE ClockIO; (* This is a utility module for reading time & date under ZSDOS. It uses the new 'Set Time' and 'Get Time' calls. Exception errors 'ClockReadError' and 'ClockSetError' will be raised if an un-supported function is called. *) EXCEPTION ClockReadError, ClockSetError; TYPE timestr = ARRAY[1..5] OF CHAR; datestr = ARRAY[1..8] OF CHAR; PROCEDURE RdClk( VAR Time : timestr; VAR Date : datestr ); PROCEDURE SetClk( VAR Time : timestr; VAR Date : datestr ); END ClockIO. 1/7/89 by Steven Hirsch This distribution is a quick example of how to read and/or set the realtime clock under ZSDOS. Although these files are in Turbo-Modula, this method could probably be ported to Turbo Pascal also. - Enjoy. i e ClockSetErrorClockReadError ;3D0C0b#Î`24"2"$"2B"#" 0B"#" 0$24"2"$"2B"#" 0B"#" 0$k :3#24"2"$"2#"B" 0B" 0 24"2"$"2#"B" 0B" 0 c#Î`P.C / / 1D : 1BBBBBP^CLOCKIO@I IMPLEMENTATION MODULE ClockIO; FROM SYSTEM IMPORT ADR, BDOS, HLRESULT, IORESULT; CONST GetTime = 98; SetTime = 99; (* ZSDOS / CPM3 Dos time services *) AscBias = 48; VAR StrIndex : ARRAY[0..4] OF CARDINAL; DateSkeleton : datestr; TimeSkeleton : timestr; PROCEDURE RdClk( VAR Time : timestr; VAR Date : datestr ); VAR i : CARDINAL; BCDTime : ARRAY[0..5] OF CHAR; BEGIN Time := TimeSkeleton; Date := DateSkeleton; BDOS( GetTime, ADR(BCDTime) ); IF IORESULT = 0FFH THEN RAISE ClockReadError; END; FOR i:=4 TO 3 BY -1 DO Time[ StrIndex[i] ] := CHR( ( ORD(BCDTime[i]) DIV 16) + AscBias ); Time[ StrIndex[i]+1 ] := CHR( ( ORD(BCDTime[i]) MOD 16) + AscBias ); END; FOR i:=2 TO 0 BY -1 DO Date[ StrIndex[i] ] := CHR( ( ORD(BCDTime[i]) DIV 16) + AscBias ); Date[ StrIndex[i]+1 ] := CHR( ( ORD(BCDTime[i]) MOD 16) + AscBias ); END; END RdClk; PROCEDURE SetClk( VAR Time : timestr; VAR Date : datestr ); VAR i : CARDINAL; BCDTime : ARRAY[0..5] OF CHAR; BEGIN BCDTime[5] := CHR(0); (* no seconds! *) FOR i:=4 TO 3 BY -1 DO BCDTime[i] := CHR( ( ORD(Time[ StrIndex[i] ]) - AscBias ) * 16 + ( ORD(Time[ StrIndex[i]+1 ]) - AscBias ) ); END; FOR i:=2 TO 0 BY -1 DO BCDTime[i] := CHR( ( ORD(Date[ StrIndex[i] ]) - AscBias ) * 16 + ( ORD(Date[ StrIndex[i]+1 ]) - AscBias ) ); END; BDOS( SetTime, ADR(BCDTime) ); IF IORESULT = 0FFH THEN RAISE ClockSetError; END; END SetClk; BEGIN DateSkeleton := ' / / '; TimeSkeleton := ' : '; StrIndex[0] := 7; StrIndex[1] := 1; StrIndex[2] := 4; StrIndex[3] := 1; StrIndex[4] := 4; END ClockIO.  O@&.49> E J  ClockReadErrorClockSetErrortimestrdatestrRdClkTimeDateSetClkTimeDateÝ~~~ =====mT+8LmmmmmmmJXh^},,,,,,,,,, ''ąDDDDDDDDDDDDDD'7D)DX,,,,ڣ&2S!py4B')7p (4'*84Owҵm9 @OZ           ^(!C $2 OVR(C) 1985 BORLAND Inc.|d Applicard l installedP= *ERT()SYSLIBOMPLIBo&F$fh  ÑoÁH ^ z " Ì àç÷ &2S!py1B')7p (4 ÷ ÝÕ8æ4OwÔmà E # * OIllegalInstruction PointerError BadOverlay BoundsErrorDivisionByZero OutOfMemoryEndOfCoroutineFunctionReturnsNoResult StringTooLong RealOverflowOverflowCaseSelectErrorBadHeap StackOverflow6|]7hfIGE8>2>2>2*{+V+^^#V!/ CSCCCC>þ DO* N#Fo&) F#fh= nfO>G *O O>G *O N#FOBN#F*O N#FDO* ~#fonfnf nfnfnfŇO>G *O N#F#~#foDMO>G *O q#pOBq#p*O q#pDO* ~#foCO>G *CO q#p#q#pI|:}|[uO|Œi|_|V|MO|K@|ˆ3C|$|( N|``i|( >þ |( s|( s#rC|( Ë|( z( x(E>ú   |(z( (~( (# >ÿ  x( kb6 x(qDO*+~+ng N#F o&OOGN#F#^#V#OD_*+~+ng ^#Vʵ K!)DoDo&K ^#fkD_~8"0+~+ng ^#Vͯ !|yK # *(x(C"! "[*KxÌ !9o :0 :8>þ !99:0 :8惇o&90x Nهo&9чo&9чo&9!!(C 88`iͯ > þ >; C!9B:08! 9I :8 A(!9B:0 `i9E :8>ú "S^#V#^#V[""MD!9}|!~#fo" !9 ! 9: * ~ #~: *~ܯ >[ogo!++4 ! >!9s#r M4  r+s!9E4 ! !4 *>2}2 !EBp!<"; o! s#r"3 "7 }2R !u "S !3 $E^#V0!0 !8^#0^#WR0>OG|ƀgBMDog8)B8$og( N#Fx 8  ##)ogB837R0.[KxƀG|ƀgB87R8xƀG> ú >}|8 8go>þ 8>þ B(!B(!B8B0xƀG|ƀgxƀG|ƀg|} 0)< gox˸^|˼IxƀG|ƀgB8, 1B8& +  (.~# (.#8 J! !#&+KK ϯ !#+OO B)= <= i`!!:(0 !;(0 0 y(!>=#0jB0 ?=>þ i`i`/+|/g}/o/ x/Gy/Oi`կxH|=@|@!|(+ 8NB8DJB!8#:(0 Ҳ!8(0  > þ i`!͸i`կxH|=!͸| @|(#|  JûٷBBu/ٕo>g>o>g/ّO>G>O>Gx[|F!!>!=( )j8ҋ Jҋ| Io!x!>!=#jjBB0 J?=x[|FI|IICCկ!X)jT&#|,|$*>gL{ Iz S`i`i:8Z(8=ú<< SI^ J|FL( (2<z()>D ( =()0byKI> ÿ !qL{(z(008:{!kZW}!ٷ {Z80 J( <{Z L{(Cz/8~*~/>BB0 J?)j=!)j|08&()j=& Ip|ᴵ0|F|((?L)^&,}!7j= }}!8<)#= ()= }/oA}o|g}o|g}o|gMW2"BKW*7ŇO!: ~#fo ' A}u 1 W @^u A(!B >w#>:w +6:+6x y(+p+q6#6:###q#p o g()~# '~#: !R(DM~#~#yO#xG>>ú `!^#V+z(F : ogB(8 | }0####~#~+DM * 8(!9R8So}|]T 6E>ú `^#Vw+w{u bk ~# ~+:̥bk+~: +~ +~+ngRͥ(!<*BR "o*"##s#rE*##"o }|Kq#p!"N#Fw+wx# 2 2!; "oK!9Bx(R8 + +Ex(s x(T]MDh&}MDyoC&) F#fh#;@o O>G S>q#p#= *ͷ >+F+N= I*O O| # x# ))) ͷI*O O!9~#fo# I! 9F+N+x# ~+ng)))  >+F+N= I*O O| # É@2"" " "232#"0"2#"-"2"  "2#" " 2&3&##A#$# "2"-3N 2"#  "# #3#@3 `#@G#@G2"`#@#@ @6H|H`2Ha3"-i-="7"##"#` #a"#a` `4$$P"$. 4$"WHpHbY#XGH5%`G`p&@&@&@@;`ZJ2JiXJbWJlYG`JhYH3#`G`49J.7' O_O @ '1'U'V'9' 9UJ.J.˦TD<G`""l>"p @ &6'7^ F `F`?#F3#`E3##`67'& &' '7 in module JbF `EMissing module: J`EhE8EJ}JpJm( to J`( is legal range, but J.(E or J. was evaluatedEStack=J, heap=Jd7'D C' '7)JbWJiXJlY%47:' Press "C" *for calling chain > to continue >:Î` ` @C%Module Procedure Offset PC$G`$bNG G`?<$`$a I$ I$in a submodule G3I#`'7 BNM"0 LpNp @ +@@32-3-"$$$0-"$ "-"$ -"$"2"-3#@@4-$3#!2"p!#Î`$@$@@;7-=J`:*P2*a9*a5')'%".&'%4".%8%5 `3#.%( # .(>(#. 3#%6&$$6'%(&@(&8$&4$((8(`".&=-* `p_== @ 5)9-)U=--=-Á @ +@@2`^MN"0 `\@ 7`KØ-, @  @ O-, @  @ 6"@$ ㇍Î`=-=w$-$Î`#$ÎE`=-$@-=--,Overlay %.- not found.-J`Cv#2 3"# " "22-"2"' TURBO Modula System  Version 1.102 "2"  CP/M-80, Z80' &Copyright (C) 1984,1985 BORLAND Inc.2-"2"' Terminal: RM`RB"`@-d@ @ - W-= `=-C-( =-T=-(-=--=---@-----=--. =H= `=-=-D-.(4-.(=-!-(p-!A-N - @  @ `="-"d<=-. =IP:l|GKERNEL!!##H#""m :BC The time is: B The date is: CPK'(TSTCLK $M$Pn@2"" " ."2".3##"2"# #3""J@2 Input from: "#" >" :""%  INPUT FILE NOT FOUND Pr@2 Output to : "#" " :""P-PO5  R`Sm   J  R  O  R  /_ /> /3f@  /-  /  /'(423##3$"#0"2"  "2 $" "/O32#"0"2"  "2 #" "  R  /`  PRPa8'hWF)%4;$INOUTk$#3' ClockSetErrorClockReadError ;3D0C0b#Î`24"2"$"2B"#" 0B"#" 0$24"2"$"2B"#" 0B"#" 0$k :3#24"2"$"2#"B" 0B" 0 24"2"$"2#"B" 0B" 0 c#Î`P.C / / 1D : 1BBBBBP^3CLOCKIOS'@(  NoInputFileCON:kEH < HXH H p`pHXCDQrmB 2"" @"2"EJ~C1DC0H YHXI<H I<BCBDHXH 6XPjV9=;&COMLINE(R) DiskFull DeviceErrorUseError StatusErrorEndError&2"While processing file &1"3#"%Ύ"%Ύ"%`9z Processing unopened file8Î`6 Î`752 @A @P @@p52&p3'4"" 0" 95#" 03"2#4(" :%$ 5%""@"$p&p'p $1$23"" N" .+"23"" ##" @#3"2&##" @#3"2YkC2" @.4"$0"$0":43#"$.$4 # 5% "$%$4#3#+"1Fmh Î`R ÉkK BÈ7'e'u'.'b'a''ar'b3'c#6#&5&#&@'i #&&'y'c4' !2"'fp$%"$Í"' Î` $4" `p'"`'g'"`w'i& #3'# y'&x 4$.$$cr$f$gj$ !2"$fp]bÍ!$ Î` $ br" `p"`$g($i$b3$# x$h$x$y$$b$hr$b$d\ $b$c2 `+"Drive @ is Read-Only1" @":@`3#9zp#@##cq##cr##ct# !2#"`w#y#># $0?@$2"#"Î`4 $"##$b@$2"%"Î`3 ""%#"Í"Î`4 $Directory Overflow"%#P^2```9zO``4$i"```"?``.$ Î`3 #`$@:@>f```9z)`2" "`." Í" "@:@IX@$2$3```9zJ"` $0##" 4#$ "$ $4$""`.5%##"@" Mm1-yxA?/24$b$a$$ar$f$d$c$g$f!!$b$c!Ɔ$i4$ !3#$gp$."Í!$ $" x$h$x$y$g!!$h!džLWab fdcg42$b$a*$b$a2"$a@$ aq$a"@"$ a"q$b$d"$d$c $ dt $ fv"(!3$c#@#"#2#$$bq"$ fv1!3#""3$c#@$$c#q"#}('~#9 !~#z N#F#~#foB8( ##q#p!9"L!p ?Rab a`p aq/O4$d$a2"#$u" $a@$ aq$a"@""$d$c$ dt$$dq $$dq$ fv"$c@$u$ fv)!3$c@$u$$cq/O{}(,~#9 &~#z N#F#####^#V#B8( >##q#p_!9"U!/|adap aqu/`aEQf!!ac!Ɔkgţ!ʺ3#!Ǎ!ɺ26&d&c & dt5 "&f5%%&"v# &&cr&&ct!4&&c#qÎ`2Þ" PBzK&-7\<}%Jrc!LRCFILES)4$ TooManyTexts TextNotOpen`p`Ê`p`ÊNMN E !"P#M$M^MN pN^`p`p`pCON:@3%%p#@%%p#@2J" "p#@"2"#@@2GIHJL"@o@3@2"" @"2"$`#@#Ġ ` &^=RDR:Ġ `!&$K`K``"&#@H`#@#@b@3@2"" @"2"$`a#Ġ `"&LPUN:Ġ `&3LST:Ġ `&K`K``"&#@Pk@3`FJ` J` `K``"&` #2`#p#@jK @2$`&"@@42""&K""2"#3##U$@F H 煁H G K'I H pI(J K ` K p LH`m12# ## ""#"2.12#""#"2J2p"F"O2p"F"P2!Q"F"2Q"F"J HI/ K"!9z <{=06nfy 64nf~(' C > ̓> ̓{!!5nf^#Vnf  H!9nf))^#V#NC/3f@2"" " "2     /-2""'/ 23"#0#3#  #3"# # />2""'/`32"2"2'/>EJ *""""!"P" "P#k"@G  Py(*t*uhYOvW