ü¼s ¶ DESK-DM.BAS„3¹ ********************************************3(¹ ********* DESK MASTER Main Program *********32¹ ************* by Leon LJ Starr *************3<¹ ********************************************2F¹ Copyright 1982, Personal Computing Magazine3P¹ ********************************************Z¹d¹ n¹x¹ *** CONSTANTS ***L‚CÌìÿ()ñÿ(E)ñÿ()ñÿ(H)RÅìÿ( )BÓìÿ()BÕìÿ():Œ¹ clear screen,return,backspace,and backup characters1–EËìÿ()BÅìÿ()¹ ESC and BELL keys9 UÓì"_"BÌì" "NÕì""¹ Underscore,blank,nullLªSÃìPÒìF±ìF²ì¹ screen,printer, and disk device codesB´PÓìBTÍìS×ìF¹ page size,top margin,screen width¾MÅì"DESK MASTER"ÈINÖìÿ()ñÿ(p)ÒOFÆìÿ()ñÿ(q) ÜÌ ÿæ¹/ðOÕìSù Output to the screen defaultú­ – œ ä ?œ  ¹ Bypass GET LINE routine. GET LINE HERE FOR SPEED.¹¹ *** GET LINE ***"¹ IMPORT: LN,FC,LC,WR$,TI$,¹ EXPORT: T$,EC$6¹K@EÃìNÕÔìW×¹ Start line out with word wrap (null at first)8JFÄìBÌ ¹ Field character (blank or underline)1T� WÒï"WRAP" â ™ Îì ã Lγ UÓ;«=^� WÒï"WRAP" â ™ Îì ã Lγ BÓ;«FÄìUÓ7h³ W×;¹ Wrapped word from previous line, if anyrÃìÿ(W×)W×ìNÕ|ÃìÃñÃìÿv()†� ÃìBÕ â ÃìBÓ@�� ÃìRÅ ÷ TÉì"TIME" â ³ B̳³TÉìNÕœ &š� ÃìEË â EÃì"ESC" œ ¤� ÃìRÅ â ³ œ L®� ((ÿ(Ã)îFÃ)û(ÿ(Ã)ëLÃ)) ÷ ÃïBÓ â ÃìÃò œ |"¸� ÃìBÓ ÷ Ãì â œ r ³ Ã;-Ì� ÃìBÓ ÷ Ãì â ÔìNÕœ rAÖ� ÃìBÓ ÷ Ãë â ÃìÃòÔìÿx(Ô,Ã)œ |Ià� ÃìLÎ ÷ TÉì"TIME" â ³³³ÔìÔñÃTÉìNÕœ 7ê� ÃìLÎ ÷ WÒï"WRAP" â ÔìÔñÜ )ô� ÃíLÎ ÷ ÃìBÌ â ³ œ ;þ� ÃëLÎ ÷ ÃïBÌ â ÔìÔñÛ &œ ÔìÔñÜ |WÒìNÕÀ&¹ *** WORD WRAP ***0¹ IMPORT: T$,LN:¹ EXPORT: T$,WW$D¹NLÎìLÎñXÃìLÎW×ìNÕ$bÃìÃòÃì©(Ô,Ã,)l³ BÌ;BÓ;BÓ;Tv� ÃìBÌ â ³ FÄ;BÓW×ìÿ|(Ô,LÎòÃ)Ôìÿx(Ô,Ã)œ ”€� Ãë â œ b-Š� ÿ(Ô)íLÎ â Ôìÿx(Ô,LÎ)³”À,ž¹ *************************************%¨¹ *** TRANSLATE TO UPPERCASE ***%²¹ IMPORT: LW$ (lowercase string)%¼¹ EXPORT: UP$ (UPPERCASE STRING)ÆUÐìNÕЙ Îì ã ÿ(L×)Ú Ãì©(L×,Î,))ä � Ãë"Z" â Ãìÿ(ÿ(Ã)ò )î UÐìUÐñÃø«À4 ¹ *** DECLARATIONS, continued from line 650 ***!¹ *** ARRAY DECLARATIONS *** ° Û *BÓì2FÌì(/4� Ì(BÓ), L²(BÓ)¹ text buffers&>� FÔ(FÌ)¹ file index table*H¹ --- Calendar Array Declarations ---"R� Ã()¹ calendar numbers\� MÓ( )¹ month sizesf� MÎ( )¹ month namesp� DÎ()¹ day names5z� FÖ(),LÖ(),FÅ()¹ date input fields.„¹ ***************************************.޹ ********** MAIN PROCESS ***************.˜¹ ***************************************¢¹¬¹ *** MAIN MENU *** /¶ÆìNÕOÆì› 6 ¹ MENU GENERATORÀ� CÈì"W" â › $œ ¶Ê� CÈì"F" â › œ ¶Ô� CÈì"A" â › Tœ ¶\Þ� CÈì"C" â ³ CÌ™ Îì ã  ³«³ á();"Getting calculator..."‚ "CALC-DM.BAS"#è� CÈì"I" â ‚ "DDISK-DM.BAS"&ò� CÈì"Q" û CÈìEË â œ #üMÅì"Choice not on the menu"œ ¶ ¹ End with ESC³ CÌ;Æ.¹ **************************************$¹ *** MEMO MENU ***.PÒì"memo"TÙì".MEM"%8OÆì › 6 ¹ MENU GENERATOR-B� CÈì"E" â NÍì"NUMBER"› &œ 8L� CÈì"C" â › Äœ 8V� CÈì"P" â › â œ 8`� CÈì"S" â › ü œ 8j� CÈì"R" â › <œ 8$t� CÈì"L" â › J › p œ 8~� CÈì"D" â › T œ 8&ˆ� CÈì"Q" û CÈìEË â œ ¦#’MÅì"Choice not on the menu"œœ 8 ¹ End with ESC'¦� Ôì â œ ö¹ if buffer empty °³ CÌ 4º³ "In case you haven't already, would you like"4ij "to save your memo in a disk file before the""γ "buffer is erased? (Y/N) ";!ØL×ìÿv()› ¨ËìUÐ"â� Ëï"N" â CÈì"S" œ `!ìÔìMÅì"Buffer erased"öÀ.¹ *************************************** ¹.¹ ********* CARD FILE MENU **************TÙì".CDX"$(OÆì› 6 ¹ MENU GENERATOR2PÒì"file"<� CÈì"C" â › &œ (FPÒì"card"P� CÈì"A" â › Öœ ( Z� CÈì"F" â › ¾œ (dPÒì"file"n� CÈì"D" â › Tœ ($x� CÈì"L" â › J › p œ (&‚� CÈì"Q" û CÈìEË â œ  #ŒMÅì"Choice not on the menu"$–œ ( ¹ End loop with ESC/Q/q  À.ª¹ ***************************************´¹"¾¹ *** CARD FILE FIND MENU ***ÈOÐìNÕ ¹ option$ÒOÆì› 6 ¹ MENU GENERATOR"Ü� CÈì"D" â OÐì"DISPLAY"!æ� CÈì"E" â OÐì"DELETE" ð� CÈì"P" â OÐì"PRINT"6ú� CÈì"D" û CÈì"E" û CÈì"P" â › œ Ò&� CÈì"Q" û CÈìEË â œ %MÅì"Choice not on menu"œ ÒÀ/"¹ ****************************************,¹6¹ *** MENU GENERATOR ***@¹ IMPORT: ME$,DATA J¹ EXPORT: CH$,EC$T¹ &^³ C̹ Error or status message(h� MÅìNÕ â MÅì"DESK MASTER"Mr� MÅïNÕ â ³ " *** ";INÖ;MÅ;OFÆ;" ***"|� MÅïNÕ â ³†MÅìNÕ�½š³³ ¤Îì(®ÎìÎñ ¹ for each menu number¸ ¸ OÍ+ ™ Ïì ã OÍ ¹ for each optionÌ ¸ Ï(Ö � ÎìOÆ â ³ ß();ϳ à «*ê� ÎïOÆ â œ ® ¹ if wrong menu&ô³³ "Select one of the above: "; "þL×ìÿv()› ¨CÈìUÐÀ.¹ ***************************************¹&¹ *** INPUT TEXT *** 0¹ IMPORT: PR$,TI$,NM$,TY$,T:¹ EXPORT: L$(),T,ME$D¹$N� Ôì û TÙï".MEM" â œ vAX ³³³ "Okay to erase current contents of buffer? (Y/N) ";$b L×ìÿv()› ¨ËìUÐ+l � Ëï"Y" â MÅì"Canceled"œ *+vEÃìNÕW×ìNÕ¹ wrapped word €³ CÌ Š³ "Enter your ";PÒ;":"³3”³ "Hit the key when you are finished."³žLÎìS×W¨� TÉì"TIME" â ³ "Enter a valid time such as 7:30 AM."³ "Time (HH:MM AM/PM): "; ²Ìì&¼ÌìÌñ¹ for each input line1Æ � NÍì"NUMBER" â › H ¹ NUMBER MARGIN Ð WÒì"WRAP"LÎìS×,Ú � TÉì"TIME" â WÒìNÕLÎì*ä FÃì LÃì› ¹ GET LINEî Ì(Ì)ìÔø � EÃì"ESC" â œ � ÌîBÓ â œ ¼, � ÌìBÓ â MÅì"Text buffer full"ÔìÌ NÍìNÕ*À-4¹ **************************************>¹H¹ *** NUMBER MARGIN ***R¹ IMPORT: L\¹ EXPORT: MA$fMÁìBÌñÿ"(Ì)ñBÌ$p� Ìë â MÁìÿ"(Ì)ñBÌ z³ MÁ;„À,޹ *************************************˜¹¢¹ *** CHANGE LINE ***$¬³ "Number of line to change: ";¶EÃìNÕ.ÀGÄì"NN"FÖ()ìLÖ()ìÔ› ‚Ê� EÃì"ESC" â œ  ÔÌìÿ&(FÅ())?Þ� Ìî û ÌëÔ â ³ "No line with that number!"œ ¢ è³³³³1ò³³ "Hit (ESC) or (RETURN) when finished:"³ü› H¹ NUMBER MARGIN8 LÎìS×FÃì LÃì› Ì(Ì)ìÔ À. ¹ ***************************************$ ¹. ¹ *** PUT TEXT BUFFER ***8 ¹ IMPORT: L$(),T,OUB ¹ EXPORT: ME$ L MÁìNÕ ¹ CLEAR MARGIN0V � OÕìF± û OÕìF² â ´OÕò,Ô` � MÅïNÕ â œ Ä j ™ Ìì ã Ô t � NÍì"NUMBER" â › H9~ � OÕìF± û OÕìF² â ´OÕò,Ì(Ì)ˆ � MÅïNÕ â œ Ä $’ � OÕìSà ⠳ Ì(Ì)1œ � OÕìPÒ â ¦ Ì(Ì)³ Ì(Ì)9¦ � (ÿ(Ìô)ìÌô) ÷ OÕìSà ⠛ p ³³° «º OÕìSÃNÍìNÕÄ À,Î ¹ *************************************Ø ¹ â ¹ *** PRINT TEXT BUFFER ***ì ¹ IMPORT: L$(),T,TY$ ö ³ CÌ. � Ôì â MÅì"Nothing to print"œ F  ™ Îì ã  ³«L ³ ß( );"Make sure the printer is ON. Press any key when ready."³³³ Ëìÿv()*( � TÙì".MEM" â ™ Îì ã Tͦ«!2 OÕìPÒ› . ¹ PUT TEXT8< ¶IF TY$=".MEM" THEN FOR N=1 TO PS-T-TM:LPRINT:NEXTF À/P ¹ ****************************************Z ¹d ¹ *** PUT INDEX ***n ¹ IMPORT: FI$,FT(),FL,ME$x ¹ EXPORT: ME$‚ ¯ "O",#F±ò,FÉŒ ™ Æì ã FÌ– ´F±ò,FÔ(Æ)  «ª „ #F±ò´ À.¾ ¹ ***************************************È ¹Ò ¹ *** ADD TO INDEX ***Ü ¹ IMPORT: FT$(),L3,EX,F$æ ¹ EXPORT: FT$(),L3,ME$ð ¹ú � EØï â œ ,  FÔ(L³)ìÆ( � L³ïFÌ â FÔ(L³ñ)ì"0L" L³ìL³ñ" › d  ¹ PUT INDEX, À.6 ¹ ***************************************@ ¹J ¹ *** GET INDEX ***T ¹ IMPORT: TY$#^ ¹ EXPORT: FI$,L3,FT$(),FL,ME$h ¹r EÃìNÕ&| � TÙì".MEM" â FÉì"MEMINDEX"&† � TÙì".CDX" â FÉì"CDXINDEX"&� � TÙì".APT" â FÉì"APTINDEX"0š � TÙï".APT" â ³ CÌ;PÒ;"s on disk:"¤ ³³® ¯ "I",#F±ò,FÉ/¸ L³ìFÌñ ¹ default for last element ™ Æì ã FÌÌ ¢ ŸF±ò,FÔ(Æ)LÖ � FÔ(Æ)ï"0N" ÷ FÔ(Æ)ï"0L" ÷ TÙï".APT" â ³ FÔ(Æ)'à � FÔ(Æ)ì"0L" â L³ìÆê «=ô � L³ì ÷ TÙï".APT" â ³ "No ";PÒ;"s";" yet."³³þ „ #F±ò À. ¹ *************************************** ¹& ¹ *** DOES FILE EXIST ***0 ¹ IMPORT: FT$(),L3: ¹ EXPORT: EXD ¹3N EØì ¹ Default 0 for non-existence of fileX ™ Æì ã L³ò&b � ÆìFÔ(Æ) â EØìÆl «v À,€ ¹ *************************************Š ¹ *** GET FILE NAME ***” ¹ IMPORT: CF$ž ¹ EXPORT: F$,EC$,ME$¨ ¹² EÃìNÕMÅìNÕ¼ › J ¹ GET INDEXÆ � MÅïNÕ â œ R iÐ � ÆïNÕ â ³³³ "Do you want the ";Æ;" ";PÒ;"? (Y/N) "; L×ìÿv()› ¨ËìUг³%Ú � ËìEË â EÃì"ESC"œ R $ä � Ëï"N" ÷ ÆïNÕ â œ * &î ³³³ "Enter a ";PÒ;" name: ";ø WÒìNÕ/ LÎìFÃì LÃì› ¹ GET LINE3 � EÃì"ESC" û ÔìNÕ â EÃì"ESC"œ R 0 L×ìÔ› ¨ÆìUÐÃìÿx(Æ,)i � Ãî"A" û Ãë"Z" â ³ "(First character must be a letter)."³ BÅ;"Please try again...";œ î * › &  ¹ FILE EXISTS 4 ³³³O> � (CÆì"SHOULD BE" û CÆì"NO MATTER") ÷ EØì â MÅì"No such file"¬H � (CÆì"SHOULDN'T BE" û CÆì"NO MATTER") ÷ EØë â ³ á();³ "Still want to delete ";Æ;"? (Y/N) ";L×ìÿv()› ¨ËìUÐ� Ëï"Y" â MÅì"Canceled"R À0\ ¹ *****************************************f ¹ p ¹ *** WAIT FOR RESPONSE *** z ³³³$„ ³ "Hit any key to continue...";Ž Ëìÿv()˜ À.¢ ¹ ***************************************¬ ¹¶ ¹ *** WAIT MESSAGE *** À ³ CÌ;Ê ™ Îì ã  ³«Ô ³ ß();"Please wait..."Þ À,è ¹ *************************************ò ¹ü ¹ *** SAVE FILE ***EÃìNÕ.� Ôì â MÅì"Nothing to save" œ œ/CÆì"SHOULDN'T BE"› Š ¹ GET FILE NAMEI$� L³òìFÌ ÷ EØì â MÅì"No more "ñPÒñ"s allowed"œ ¨+.� EÃì"ESC" â MÅì"Canceled"œ œ8� MÅïNÕ â œ œB› ¶  ¹ WAIT MESSAGEL³³ ß();"Writing..."V¯ "O",#F±ò,ÆñTÙ%`� MÅïNÕ â „ #F±òœ œ!jOÕìF±› . ¹ PUT TEXTt„ #F±ò~� MÅïNÕ â œ œ ˆMÅì"Saved as: "ñÆ’› Ò  ¹ ADD TO INDEXœÀ+¦¹ ************************************°¹º¹ *** GET TEXT ***Ĺ IMPORT: OU ι EXPORT: L$(),T,ED$ØEÄìNÕ&â� ÿ (OÕò) â EÄì"EOF"œ ì ŸOÕò,Ôö ™ Ìì ã Ô  ¢ ŸOÕò,Ì(Ì)  «OÕìSÃÀ,(¹ *************************************2¹<¹ *** LOAD FILE ***FEÃìNÕ-PCÆì"SHOULD BE"› Š ¹ GET FILE NAME+Z� EÃì"ESC" â MÅì"Canceled"œ  d› ¶ ¹ WAIT MESSAGEn³³ ß();"Reading..."x¯ "I",#F±ò,ÆñTÙ"‚OÕìF±› º ¹ GET TEXTŒ„ #F±ò–MÅìÆñ" retrieved." À-ª¹ **************************************´¹ ¾¹ *** DELETE FROM INDEX ***ȹ IMPORT: EX,FT$(),L3$Ò¹ EXPORT: ME$ (from PUT INDEX)ÜEÃìNÕ-æ� EØìFÌ â FÔ(FÌ)ì"0L" œ "ð™ ÆìEØ ã FÌò!ú FÔ(Æ)ìFÔ(Æñ)«D� FÔ(FÌò)ì"0L" û FÔ(FÌò)ì"0N" â FÔ(FÌ)ì"0N"F� FÔ(FÌò)ï"0L" ÷ FÔ(FÌò) ï "0N" â FÔ(FÌ)ì"0L""L³ìL³ò,› d  ¹ PUT INDEX6À.@¹ ***************************************J¹T¹ *** DELETE FILE ***^EÃìNÕhCÆì"NO MATTER"r� TÙì".APT" â œ š|› Š ¹ GET FILE NAME,†� EÃì"ESC" â MÅì"Canceled" œ �� MÅïNÕ â œ š› ¶ ¹ WAIT MESSAGE"¤³ ÿ()³ ß();"Deleting..."®  ÆñTÙ¸› ¾¹ DELETE INDEXÂ� MÅïNÕ â œ ̳ CÌ™ Îì ã ³«Ö� TÙì".APT" â œ &à³ PÒ;": ";Æ;" deleted."³³=ê³ "Delete another? (Y/N) ";L×ìÿv()› ¨ËìUÐô� Ëì"Y" â œ r$þ� ËìEË â MÅì"Canceled"À.¹ ***************************************¹&¹ *** CREATE FILE ***0¹ IMPORT: F$,TY$:¹ EXPORT: ME$DEÃìNÕ/NCÆì"SHOULDN'T BE"› Š ¹ GET FILE NAMEIX� L³òìFÌ ÷ EØì â MÅì"No more "ñPÒñ"s allowed"œ ¨+b� EÃì"ESC" â MÅì"Canceled"œ ¨)l¯ "O",#F±ò,ÆñTÙ„ #F±òv� MÅïNÕ â œ ¨€› Ò ¹ ADD TO INDEXŠ� MÅïNÕ â œ ¨”MÅì"Created "ñÆ&ž� EØï â MÅì"Cleared "ñƨÀ-²¹ **************************************¼¹$ƹ *** APPEND BUFFER TO FILE ***й IMPORT: F$,L$(),T,TY$Ú¹ EXPORT: ME$äEÄìNÕTî™ Ìì ã ÔL²(Ì)ìÌ(Ì)«T²ìÔ¹ Save buffer for appendingø¯ "O",#F²ò,"TEMP"¯ "I",#F±ò,ÆñTÙ$  OÕìF±› º¹ GET TEXT � EÄì"EOF" â œ 4*  OÕìF²› . œ  ¹ PUT TEXT * � MÅïNÕ â „ œ p94™ Ìì ã T²Ì(Ì)ìL²(Ì)«ÔìT²&>OÕìF²› . ¹ append bufferH„ #F±ò,#F²òR� MÅïNÕ â œ p'\  ÆñTÙª "TEMP" Ú ÆñTÙ&fMÅì"Appended to "ñÆñ" file"pÀ-z¹ **************************************„¹Ž¹ *** KEY/ORDER MATCH ***˜¹ IMPORT: KE$,L$(),T,FU$¢¹ EXPORT: GI$¬GÉìNÕ'¶� KÅì"*" â GÉì"GOT IT"œ ü9À� FÕì"ORDER" ÷ K²ëKÅ â GÉì"GOT IT"œ ü*Ê� FÕì"ORDER" ÷ K²ðKÅ â œ ü ÔÌìÞÌìÌñ1è � Ì(Ì)ìKÅ â GÉì"GOT IT"œ üò� ÌîÔ â œ ÞüFÕìNÕÀ-¹ **************************************¹¹ *** FIND CARDS ***$EÃìNÕ.FÏì"NOT FOUND"8PÒì"file"=BCÆì"SHOULD BE"� TÙï".APT" â › Š ¹ GET FILE NAMEL� TÙì".APT" â œ `+V� EÃì"ESC" â MÅì"Canceled"œ n`� MÅïNÕ â œ nj¯ "I",#F±ò,ÆñTÙ-t� OÐì"DELETE" â ¯ "O",#F²ò,"TEMP"~� MÅïNÕ â „œ nˆ� TÙì".APT" â œ Î’³ CÌ™ Îì ã ³«/œ³ "Enter a key line below to search for: "1¦³ "(To match ALL cards, just type an '*')"³(°LÎìS×FÃì LÃì› 6º� EÃì"ESC" â MÅì"Canceled"„ #F±òœ nÄKÅìÔ!ÎOÕìF±› º¹ GET TEXTØ� EÄì"EOF" â œ 2â› Ž ¹ MATCH@ì� GÉï"GOT IT" ÷ OÐì"DELETE" â OÕìF²› . œ Îö� MÅïNÕ â „œ n� GÉï"GOT IT" â œ Î FÏì"FOUND".� OÐì"DISPLAY" â ³› . ³ ¹ PUT TEXT.� OÐì"PRINT" â ¦› â ¦ ¹ PRINT TEXT(œ Î ¹ END WITH EOF(F1),2� FÏì"NOT FOUND" â MÅì"Not found"E<� FÏì"FOUND" ÷ TÙï".APT" ÷ OÐì"DISPLAY" â › p ¹ PAUSEF„ #F±ò"P� OÐì"DELETE" â „ #F²ò:Z� OÐì"DELETE" â   ÆñTÙª "TEMP" Ú ÆñTÙEd� TÙï".APT" ÷ OÐì"DELETE" â MÅì"Matching cards deleted"nOÕìSÃÀ+x¹ ************************************‚¹ *** GET DATE FIELDS ***Œ¹ IMPORT: GD$,FV(),LV()–¹ EXPORT: FE() EÃìNÕªÎìÿ(GÄ)´³ UÓ;UÓ;ÎìÎò(¾� Îï â ³ "/";ÎìÎòœ ´$È™ Îì ã ÿ(GÄ)³ BÓ;« ÒÆìÜÆìÆñ3æ WÒìNÕLÎìFÃì0LÃì9› ð � EÃì"ESC" â œ ,&ú Îìÿ&(Ô)FÅ(Æ)ìÔ+ � ÿ(Ô)î â FÅ(Æ)ì"0"ñÔS � ÎîFÖ(Æ) û ÎëLÖ(Æ) â ³³ "Bad value; try again..."œ ª:� Æî((ÿ(GÄ)òÿ(ÿ(GÄ)ô))ô) â ³ "/";œ Ü6"� ÿ|(GÄ,)ì"YY" â FÅ(Æ)ì"19"ñFÅ(Æ),À/6¹ ****************************************#@¹ *** APPOINTMENT CALENDAR ***!J¹ *** READ CALENDAR DATA *** T³ CÌ;^½h¹ Skip past menusr™ Îì ã | ¸ OÍ !† ™ Ïì ã O͸ Ï«�«,š¹ Now read the calendar data statements.¤™ Îì ã ¸ Ã(Î)« ¹ Calendars0®™ Îì ã  ¸ MÓ(Î)«¹ Month sizes0¸™ Îì ã  ¸ MÎ(Î)«¹ Month names.™ Îì ã ¸ DÎ(Î)« ¹ Day names1ÌEÃìNÕPÒì"appointment"TÙì".APT"Ö¹ DELETE OLD APPOINTMENTSà™ Îì ã  ³«1ê³ "So that PAST appointments can be erased,"ô³)þ³ "please enter the CURRENT date: ";GÄì"MM/DD/YY"&FÖ()ìFÖ()ìFÖ()ì=9LÖ()ì LÖ()ìLÖ()ìc› ‚¹ GET DATE&� EÃì"ESC" â œ R/0F²ì"C"ñÿ|(FÅ(),)ñFÅ()ñFÅ():› J  ¹ GET INDEXD� MÅïNÕ â œ R(NØì ¹ For each appointment file/X � ØíL³ â œ € ¹ No appts anyway6b¹ Delete appointment if older than current date =l� F²ëFÔ(Ø) â ÆìFÔ(Ø)› & › Tœ NvØìØñœ X€³ CÌ™ Îì ã  ³«"г "Display or Print (D/P)? ";8”L×ìÿv()› ¨CÈìUÐ� CÈìEË â œ RžCÐì"DISPLAY",¨� CÈì"P" â CÐì"PRINT"OÕìPÒ²¹ *** MAKE CALENDAR ***¼³ CÌ™ Îì ã  ³«(Ƴ "Enter Month and Year to view: ";)ÐGÄì"MM/YY"FÖ()ìLÖ()ì -ÚFÖ()ì=LÖ()ìc› ‚¹ GET DATEä� EÃì"ESC" â œ R*îMÍìÿ&(FÅ())YÙìÿ&(FÅ())"øMÍìFÅ()YÙìFÅ()³ CÌ™ Îì ã ³«( ³³³³ á();"Getting Calendar..." ¹ *** CALCULATE INDEXES *** ¹ Find calendar*YÉìYÙò§&4� YÉë â YÉìYÉòœ 4>CÁìÃ(YÉ)H¹ Find the month nameRMÏìMÎ(MÍ)\¹ Is it a leap year?f� CÁë â MÓ()ì$pFÄìCÁ¹ first day of yearz� CÁë â FÄìCÁò/„WÄìFĹ week day counter, (modulo 7)!޹ count up to selected month ˜Íì!¢ÍìÍñ¹ for each month¬ � ÍìMÍ â œ ò¶ MÄì *À MÄìMÄñ¹ for each month-day,Ê WÄìWÄñ¹ and each week-day0Ô � WÄë â WÄì¹ start week over Þ� MÄîMÓ(Í) â œ Àè� ÍîMÍ â œ ¢ò¹ *** DISPLAY CALENDAR ***,üD×ìWÄ ¹ save for fast re-display³ CÌ;³³� OÕìPÒ â ¦¦A³ ß();INÖ;"<<< ";MÎ(MÍ);" ";YÙ;" >>>";OFƳC$� OÕìPÒ â ¦ ß(!);"<<< ";MÎ(MÍ);" ";YÙ;" >>>"¦%.™ Äì ã ³ ß();DÎ(Ä);+8 � OÕìPÒ â ¦ ß();DÎ(Ä);B«L³� OÕìPÒ â ¦V³ ÿ(O,"-")³#`� OÕìPÒ â ¦ ÿ(O,"-")¦>j³ ß( ó(WÄò)ò);� OÕìPÒ â ¦ ß( ó(WÄò)ò);tMÄìÎìE~MÄìMÄñCÏìNÕCOÏìNÕCOÐìNÕCPÐìNÕ0ˆMÄìÿ"(MÄ)MÄìÿ|(MÄ,ÿ(MÄ)ò)!’� MÄî â MÄì"0"ñMÄ9œÆì"C"ñÿ|(YÙ,)ñMÍñMÄ› & ¹ FILE EXISTS¦� MÄë â Óì°� MÄð â Óì ºÎìGÄ� EØï ÷ OÕìSà â ÎìCÏìÿ( )ñINÖCOÏìOFÆ]Î� EØï ÷ OÕìPÒ â ÎìCÏìÿ( )ñINÖCOÏìOFÆCOÐì"["CPÐì"]"Ø� WÄì â ÎìÎñâ� MÄð â ³ ß(òÎ);+ì� MÄð ÷ OÕìPÒ â ¦ ß(òÎ);ö� MÄð â œ  4³ ß(ÓòÎ);� OÕìPÒ â ¦ ß(ÓòÎ); � WÄì â ÎìÎòB� MÄð â ³ CÏñ" "ñÿ|(ÿ"(MÄ),ÿ(ÿ"(MÄ))ò)ñCOÏ;Q� MÄð ÷ OÕìPÒ â ¦ COÐñ" "ñÿ|(ÿ"(MÄ),ÿ(ÿ"(MÄ))ò)ñCPÐ;(� MÄð â œ <q2³ CÏñÿ|(ÿ"(MÄ),ÿ(ÿ"(MÄ))ò)ñCOÏ;� OÕìPÒ â ¦ COÐñÿ|(ÿ"(MÄ),ÿ(ÿ"(MÄ))ò)ñCPÐ;&<� Îì ÷ OÕìPÒ â ¦ ÿ(); F� Îì ÷ EØì â ÎìPWÄìWÄñ7Z� WÄë â WÄìÎì³³� OÕìPÒ â ¦¦ d� MÄîMÓ(Í) â œ ~n³³� OÕìPÒ â ¦¦x³ ÿ(O,"-")!‚� OÕìPÒ â ¦ ÿ(O,"-").Œ¹ ***************************************)–¹ *** MAKE OR DELETE APPOINTMENT *** › ¹ GET DAY FILE NAMEDª� EÃì"ESC" â OÕìSÃCÐì"DISPLAY"œ ¼¹ ANOTHER DAYÁ´� L³òìFÌ ÷ EØì â ³ CÌ™ Îì ã ³«³ "No more appointment days allowed..."³³ "Either use another data disk, or erase"³ "some old appointments."› p WÄìDל ò"¾› � ¹ DISPLAY APPOINTMENTS;ȳ "(M)ake or (D)elete appointment or (ESC) to quit? ";"ÒL×ìÿv()› ¨CÈìUÐÜ� CÈì"M" â › Æœ ¾æ� CÈì"D" â › vœ ¾2ð� CÈìEË â WÄìD×CÐìNÕœ ò(ú³ "Bad choice. Try again..."œ È/¹ ****************************************!¹ *** DETERMINE DAY FILE ***¹ IMPORT: MM,YY5"³ "To View, Make, or Delete appointments, enter"1,³ "the appropriate DAY. Hit (ESC) to quit."6³³ "Which day? ";@@GÄì"DD"FÖ()ìLÖ()ìMÓ(Í)› ‚¹ GET DATEJ� EÃì"ESC" â œ |TDÁìÿ&(FÅ())(^Æì"C"ñÿ|(YÙ,)ñMÍñFÅ()h› J  ¹ GET INDEXr› &  ¹ FILE EXISTS|À/†¹ ****************************************#�¹ *** DISPLAY APPOINTMENTS *** š³ CÌ› & ¹ FILE EXISTS[¤� EØì â ³ "No appointments for: ";MÎ(Í);" ";ÿ"(DÁ);", ";YÙ³³³œ b®¯ "I",#F±ò,ÆñTÙ"¸� CÐì"PRINT" â OÕìPÒ@³ "Appointments for: ";MÎ(Í);" ";ÿ"(DÁ);", ";YÙ̳ ÿ(O,"-")PÖ� OÕìPÒ â ¦ "Appointments for: ";MÎ(Í);" ";ÿ"(DÁ);", ";YÙ!à� OÕìPÒ â ¦ ÿ(O,"-")!êOÕìF±› º¹ GET TEXTô� EÄì"EOF" â œ 0"þ� CÐì"PRINT" â OÕìPÒ³� OÕìPÒ â ¦› . ¹ PUT TEXT� MÅïNÕ â œ b&œ ê ¹ end with EOF(F1)"0� CÐì"PRINT" â OÕìPÒ:³ ÿ(O,"=")³³%D� OÕìPÒ â ¦ ÿ(O,"=")¦¦NOÕìSÃX„ #F±òbÀ/l¹ ****************************************!v¹ *** DELETE APPOINTMENT ***\€³³³ "Enter appointment TIME: ";LÎìFÃì LÃì› � EÃì"ESC" â œ ²2ŠKÅìÔOÐì"DELETE"› ¹ DELETE CARD”� MÅïNÕ â œ ²Mž� FÏì"NOT FOUND" â ³ "Appointment ";MÅMÅìNÕ™ Øì ã È«¨› ¨ ¹ DELETE EMPTY DAY²À+¼¹ ************************************ƹ *** MAKE APPOINTMENT ***$ÐTÉì"TIME"› &¹ INPUT TEXTÕ� Ì()ì"" â œ R3Ú³³³ "Would you like to change this? (Y/N) ";6äL×ìÿv()› ¨ËìUÐ� ËìEË â œ R%î� Ëì"Y" â › Ĺ CHANGE TEXT>ø� ÿx(Ì(),)ìBÌ â Ì()ìÿ|(Ì(),ÿ(Ì())ò)KÅìÿx(Ì(),)$ � ÿ(KÅ)ì â KÅì"0"ñKÅ0� ÿx(KÅ,)ì"12" â KÅì"00"ñÿ|(KÅ,)" KÅìÿ|(KÅ,)ñÿx(KÅ,)%*¹ transfer text to insert buffer84™ Ìì ã ÔL²(Ì)ìÌ(Ì)«T²ìÔ>› p¹ INSERT CARD3H� EØì ÷ MÅìNÕ â › Ò ¹ ADD TO INDEXRÀ+\¹ ************************************f¹$p¹ *** INSERT CARD INTO FILE ***&z¹ IMPORT: L$(),T,L2$(),T2,F$,TY$„¹ EXPORT: ME$ŽEÃìNÕNÆìNÕ˜FÏì"NOT FOUND"¢¯ "I",#F±ò,ÆñTÙ¬¯ "O",#F²ò,"TEMP"¶� MÅïNÕ â „œ ¦*À� NÆì"NOFILE" â NÆìNÕœ j !ÊOÕìF±› º¹ GET TEXTÔ� EÄì"EOF" â œ jÞK²ìÿx(Ì(),)$è� ÿ(K²)ì â K²ì"0"ñK²0ò� ÿx(K²,)ì"12" â K²ì"00"ñÿ|(K²,)"üK²ìÿ|(K²,)ñÿx(K²,)*FÕì"ORDER"› ޹ KEY MATCH/ORDER1� GÉï"GOT IT" û FÏï"NOT FOUND" â œ V FÏì"FOUND".$ ´F²ò,T²� MÅïNÕ â „œ ¦C. ™ Ìì ã T²´F²ò,L²(Ì)� MÅïNÕ â œ ¦8 «OÕìF²› . "B � MÅïNÕ â „œ ¦L œ Ê 0VOÕìF²› . � MÅïNÕ â „œ ¦ `œ À j� FÏï"NOT FOUND" â œ ’.t ´F²ò,T²� MÅïNÕ â „œ ¦E~ ™ Ìì ã T²´F²ò,L²(Ì)� MÅïNÕ â „œ ¦ ˆ «’„ #F±ò,#F²ò'œ  ÆñTÙª "TEMP" Ú ÆñTÙ¦À0°¹ *****************************************º¹Ä¹ *** CHANGE TEXT ***ÎEÃìNÕ/Ø� Ôì â MÅì"Nothing to change"œ – â³ CÌ*ì� MÅïNÕ â ³ "*** ";MÅ;" ***"ö� MÅìNÕ â ³MÅìNÕ ³³³$NÍì"NUMBER"› . ¹ PUT TEXT³³<(³ "(C)hange, (I)nsert, (D)elete, (A)ppend, or (ESC) ?";"2L×ìÿv()› ¨CÈìUÐ<³³IF� CÈì"I" ÷ ÔìBÓ â MÅì"No more space in the buffer"œ ØP� CÈì"C" â › ¢œ ØZ� CÈì"I" â › ´œ Ød� CÈì"D" â › hœ Øn� CÈì"A" â › D œ Ø&x� CÈìEË â CÈìNÕœ –‚MÅì"Choice not on menu"Œœ ع end with ESC–À. ¹ ***************************************ª¹ ´¹ *** INSERT A LINE ***-¾� ÔìBÓ â MÅì"Buffer full"œ J*ȳ "Line number at which to insert: ";MÒGÄì"NN"FÖ()ìLÖ()ìÔ› ‚¹ GET LINE NUMBER (DATE FIELD)Ü� EÃì"ESC" â œ JæÉìÿ&(FÅ())ð³:ú™ ÌìÔñ ã Éñ à òÌ(Ì)ìÌ(Ìò)«› H¹ NUMBER MARGIN5WÒì"WRAP"LÎìS×FÃì LÃì›  Ì(É)ìÔÔìÔñ"ÉìÉñ,� EÃì"ESC" â œ J6� ÔîBÓ â œ ú,@� ÔìBÓ â MÅì"Text buffer full"JÀ-T¹ **************************************^¹h¹ *** DELETE LINE ***!r³ "Line number to delete: ";.|GÄì"NN"FÖ()ìLÖ()ìÔ› ‚†� EÃì"ESC" â œ ®�Äìÿ&(FÅ())3š™ ÎìÄ ã ÔòÌ(Î)ìÌ(Îñ)«¤ÔìÔò®À,¸¹ *************************************¹ ̹ *** ADD CARD TO FILE ***ÖNÍì"NUMBER"› &8à³³³ "Would you like to change this card? (Y/N) ";!êL×ìÿv()› ¨ËìUÐ&ô� Ëì"Y" â › Ä ¹ CHANGE TEXT*þ� ËìEË â MÅì"Canceled"œ & 6 CÆì"SHOULD BE"PÒì"file"› Š PÒì"card"+ � EÃì"ESC" â MÅì"Canceled"œ &  › Æ ¹ APPEND TEXT& À.0 ¹ ***************************************: ¹D ¹ *** APPEND LINE ***2N � ÔìBÓ â MÅì"Text buffer full"œ Š X ÔìÔñÌìÔb › H¹ NUMBER INDENT5l WÒì"WRAP"LÎìS×FÃì LÃì› v Ì(Ô)ìÔ€ � EÃï"ESC" â œ N Š À+” ¹ ************************************ž ¹¨ ¹ *** DELETE EMPTY DAY ***² ¯ "I",#F±ò,ÆñTÙ7¼ � ÿ (F±ò) â „ #F±ò› T¹ Delete day fileÆ „ #F±òÀ-Ð ¹ **************************************Ú ¹#ä ¹ ****** ERROR HANDLING ******7î � Ýì5 â NÆì"NOFILE"¾ «¹ File does not exist #ø � Ýì= â MÅì"Disk Full"¾ «¥!� Ýì9 â ³ "Unrecoverable disk error encountered. Re-start program."³ "Once Desk Master is running again, do not switch"³ "when you are instructed to do so."@ !� Ýì@ â ³ "Bad character in file name. See CP/M manual." 4!� Ýì5 â ³ "Check disk; file not found on it."  !® *!¹ .4!¹ ***************************************.>!¹ ********* INTERNAL PROGRAM DATA *******.H!¹ ***************************************R!¹\!¹ *** MENU DATA ***f!¹ --- MAIN MENU ---+p!‡ 6,"Write MEMO (W)" *z!‡ "CARD File (F)"*„!‡ "Appointment CALENDAR (A)"*Ž!‡ "CALCULATOR (C)"*˜!‡ "Create INDEX Files (I)"+¢!‡ "Quit DESK MASTER Program (ESC)"¬!¹ --- MEMO MENU ---*¶!‡ 8,"Enter MEMO (E)"*À!‡ "Change OR View MEMO (C)"*Ê!‡ "Print MEMO (P)"*Ô!‡ "Save MEMO on Disk (S)"*Þ!‡ "Retrieve MEMO from Disk (R)"*è!‡ "Delete MEMO from Disk (D)"*ò!‡ "List MEMO Names on Disk (L)"+ü!‡ "Return to MAIN MENU (ESC)""¹ --- CARD FILE MENU ---*"‡ 6,"Create CARD File (C)"*"‡ "Add CARD to File (A)"*$"‡ "Find CARD(S) in File (F)"*."‡ "Delete FILE from Disk (D)"*8"‡ "List CARD files on Disk (L)"+B"‡ "Return to MAIN MENU (ESC)""L"¹ --- CARD FILE FIND MENU ---*V"‡ 4,"DISPLAY Matching Cards (D)"*`"‡ "ERASE Matching Cards (E)"*j"‡ "PRINT Matching Cards (P)"+t"‡ "Return to CARD FILE MENU (ESC)"+~"¹ ------------------------------------ˆ"¹ --- CALENDAR DATA ---,’"¹ CALENDARS (INDEXES), from phone bookCœ"‡ 13,1,2,3,11,6,7,1,9,4,5,6,14,2,3,4,12,7,1,2,10,5,6,7,8,3,4,5¦"¹ MONTH SIZES*°"‡ 31,28,31,30,31,30,31,31,30,31,30,31º"¹ MONTH NAMES1Ä"‡ "JANUARY","FEBRUARY","MARCH","APRIL","MAY"3Î"‡ "JUNE","JULY","AUGUST","SEPTEMBER","OCTOBER"Ø"‡ "NOVEMBER","DECEMBER".â"‡ "Sunday","Monday","Tuesday","Wednesday"%ì"‡ "Thursday","Friday","Saturday".ö"¹ ***************************************)#¹ and they lived happily ever after.%ì"‡ "Thursday","Friday","Saturday".ö"¹ ******************