üb$¶ ***** DIMS *****¶¶ ¶ INITIALIZATION Š A-Z› \ ¶cs'³ ÿ(P,"*")³(³³ á(%);"DIMS"³ )³ ÿ(P,"*")³- ¶ACT-5A TERMINAL2³,P¶ Dan's Information Management SystemU¶ for Basic-80 and CP/M7Z¶ originates from PIMS written by Madan L. Gupta5_¶ which comes from A People's Data Base System)`¶ by Gupta and Brent Lander (1977)7d¶ re-written by Dan Dugan, 1979, 1980, 1981, 1982$n¶ Release 1.0 -- public domain5x¶ makes random disk records of 128 or 255 bytes-‚¶ allows 15 or 30 data fields in recordŒ¶)–ƒ,,è ¶ stack space for MBASIC 5.x ›Š A-Z  Ì ¦ ÿ)ª¶ init vars in this order for speedj´ÉìÊìËìØìÙìÔì""Òì""T±ì""SKIPPARSÅìÔìFÔìSEARCÈì¾¶ then these for COMMONrÈÃìÎìNÃìP¶ìP·ìP¸ìP¹ìPÉìÓìT±ìT²ìÆì""FÔì""Óì""Ò� DÄ()Ü� Ã( ) ¶ commands:æ� Î(), Â( ), Ã() ¶ 30 names + stop + NOð� SEARCHWORÄ( ), SEARCHFIELÄ( ), SKIPWORÄ( ), LOOKFIELÄ( )1óNDRIVEÓì› P ¶ init disk name strings$õ³ á(!);NDRIVEÓ"disk system. úœ è¶ WARM ENTRY òŠ A-Zü› \ ¶cs"ÿ� à ⠛ ² ¶ save header � Ôì â „œ r ¶ goto� Ôì â h ¶ reopen' � Ôì â „Ôìœ  ¶ done � Ôì â 4 ¶ backup!� Ôì â ¸ ¶ renumber<¶some not needed but commoned to keep places for speedÿ$… É,Ê,Ë,Ø,Ù,Ô,Ò,Ó,T±,SKIPPARSÅ,FÔ,SEARCÈ, Ã,Î,NÃ,P¶,P·,P¸,P¹,PÉ,Ó,Ô,T±,T²,Ã(),Â(),Î(), SEARCHWORÄ(),SEARCHFIELÄ(),SKIPWORÄ(),LOOKFIELÄ(),DÄ(),Æ,FÔ.­ – œ Ú 8¶ NO-FILE MENU -LÌ F ¼ ¶RESET here for floppy systemQ� Åï"" â ³ ųR� NDRIVEÓì â œ T_S� ÿs(DÄ()ñ"????????.d?")ì"" â ³³ á () "There are no data files on the disk."œ e VT� ÿs("b:????????.d?")ì"" â ³³ á () "There are no data files on disk B."œ e 3V³³ á()"Here are the data files on the disk:`³˜ DÄ()ñ"*.D?" eÌ ÿ@j³³³ á();"**************** DIMS MENU *****************@t³³ á();"Open any data file shown above ............... 1>~³ á();"Install new disk ............................ 2ˆ³>’³ á();"Design structure of a new file (DCREATE) ..... 3>œ³ á();"Change number of disk drives for this session. 4¦³>°³ á();"Exit DIMS to Basic ........................... 9>º³ á();"Exit DIMS to CP/M ............................ 0ij³ á();ÿ(0,*)³Cγ á(); ³"To continue enter a number ................... ";)ØÁìÿv() � Áìÿ( ) â Áì"1" â³ Áç¼ ¶ safety for floppiesì� Áì"0" â Æö� Áì"1" â œ r� Áì"2" â œ è& � Áì"3" â ‚ DÄ()ñ"DCREATE"� Áì"4" â › 2œ è� Áì"9" â › \ Ä (œ Î2¶ (SUB) ASK # DISKS 7<³³ á();ž"Number of disks in system";NDRIVEÓA³� NDRIVEÓî â èF� NDRIVEÓë â <#P¶ (SUB) INSTALL DISK NAMES Z½ n2d¶ DD$(1) (2) (3) (4) (5) ' file groups%f¶ main trans data dupe misc&g¶ pgms pgms file file files!n‡ 1,"M:","M:","A:","A:","M:"!x‡ 2,"M:","M:","B:","M:","M:"!‚‡ 3,"A:","A:","B:","C:","A:"!Œ‡ 4,"A:","A:","B:","C:","D:" –¸ Ê ™ Ëì ã ª ¸ DÄ(Ë)´«¾� ÊïNDRIVEÓ â –È� Áï"4" â À#Ò­ NDRIVEÓ œ Ü,æ,,,Gܳ"One disk system - data on drive A, programmes in drive M."œ ^-æ³"Two disk system: B: = main data files>ð³ á()"M: = programs, backup data files, aux. data files úœ ^Q³ "Three disk system: A: = main program, transient programs, aux data files!³ á()"B: = main data files#³ á()"C: = backup data files "œ ^:,³"Four disk system: A: = main and transient programs!6³ á()"B: = main data files#@³ á()"C: = backup data files!J³ á()"D: = aux. data files2^³³ á()"Hit return to continue."Áìÿv()hÀr¶ LOAD HEADER &|› ˜ ¶ get name & open up files†› \ ¶csš› ¦ ¶ get record¤› X ¶parse into B$'s®™ Éì ã (¸ Î(É)ìÂ(É) ¶load names% � ÿx(Î(É),)ì"stop" œ àÌ Ã(É)ì Ö« ÉàÎìÿ&(Â(Éñ))êNÃìÉò ¶ # cols8ô³ á()"File "Æ" is open. It has"Î"records."þ¶ EXIT TO DEDIT /³³ á()"Waiting while DEDIT is loading."‚ DÄ()ñ"DEDIT",è+¶ (SUB) WRITE T$ AS RECORD # I ­ FÔ œ :,&%&§ Òì©(Ô,�) ¶ latter half0µ #,FÔóÉñ%:§ Òìÿx(Ô,€) ¶ first halfDµ #,FÔóÉñNÀ"X¶ (SUB) PARSE STRING bËì&lÊìÿw(Ô,ÿ(~)) ¶ delimiterv� Êì â À€ËìËñ ŠÂ(Ë)ì©(Ô,,Êò)”Ôì©(Ô,Êñ) žœ l ²¶ (SUB) SAVE HEADERS +Ƴ³ á()"Saving file header"³ á('); ÐÔì""`Ú™ Éì ã  ÔìÔñÎ(É)ñÿ(~) T±ìÿx(Î(É),) � T±ì"stop" â î ä« É-îÔìÔñÿ"(Î)ñÿ(~) ¶add N at end øÉì›  ¶ put rec 0 ³ "*";-NÒìT±ìÔ› x ¶put dupe head ³"!"À$4¶ BACKUP makes dupe file $>„   DÄ()ñÆñ".DD"ñFÔ H› ˆ ¶ open up .DD on 27R³"Copying main file to dupe file, same numbers."³\™ Éì ã Î.f � ÿuìÿ() â ³³³"Copy aborted."œ ¼ (p › ¦ ³"+"; ¶ get record I in T$8z NÒìÉT±ìÔ› x³"*"; ¶ put record NR„«Ž³œ ¼ ¶ to DEDIT,¸ ¶ RENUMBER COPY MAIN TO DUPE $ „   DÄ()ñÆñ".DD"ñFÔÌ › ˆ ¶ open 26Ö ³"Copying main file to dupe file, renumbering."³ à NÒìê ™ Éì ã Î2ô � ÿuìÿ() â ³³³"Renumber aborted."œ ¼ þ › ¦ ¶ get rec I in T$* � ÿ(Ô)ì â ³"0";œ  ¶ skip it> ³"+";NÒìNÒñT±ìÔ› x³"!"; ¶ put rec NR «& › ¾ ¶ save header (NR)10 ¶ ERASE MAIN FILE AND COPY DUPE TO MAIN : „DD ³³"The following operation removes space from deleted records:N ³ ³"Erasing main file.X   DÄ()ñÆñ".D"ñFÔ(b ³³³"Copying dupe to main file."³l › ` ¶ open both filesv ™ Êì ã FÔó(NÒñ)€ š #,Ê Š ³"&";” § ÒìÓž µ #,Ê ¨ ³"*"; ² « ʳ ÎìNÒ´ ³› ² ¶put header· ¶ RETURN TO DEDIT ¼ œ þ$Ð ¶ GENERAL ERROR ROUTINES ,Ú � Üì` ÷ Ýì5 â ¾ j ¶ if disk empty?ä � ÜìÌ ÷ Ýì â „Åì"CAN'T READ HEADER PROPERLY"¾ è/î � Ýì= â ³³"Out of disk space."³„¾ è)ð � Ýì5 â Åì"FILE NOT FOUND"¾ 8ø ® ¶ UCV Ùì"" ™ Ëì ã ÿ(Ø) ÙìÙñ" "* Øìÿ(©(Ø,Ë, ))=4 � `îØ ÷ Øî{ â ©(Ù,Ë,)ìÿ(Øò ) œ H #> ©(Ù,Ë,)ì©(Ø,Ë,)H «R À,\ ¶ (SUB) CLEAR SCREEN (TERM DEP) f ³ ÿ()ñ"E"ñÿ()ñ"H";p À-˜ ¶ (SUB) OPEN UP FILES GET NAME ¢ Æì"" ¬ Ãì ¶ clear change flag:® � Ôì â ÆìÂ()Ôìœ Å ¶ goto commmand¯ � NDRIVEÓì â œ ³ *° � ÿs(DÄ()ñ"????????.d?")ì"" â èO± � (ÿs(DÄ()ñ"????????.d",)ì"" ÷ ÿs(DÄ()ñ"????????.d2",)ì"") â Å ² œ ¶ #³ � ÿs("B:????????.d?")ì"" â èA´ � (ÿs("B:????????.d",)ì"" ÷ ÿs("B:????????.d2",)ì"") â Å <¶ ³ ³ á(); ž"Name of the file you want to open"; ÆÅ � NDRIVEÓì â œ Ê !Ç � ÿs("????????.d?")ì"" â è)È � Æì"" â Æìÿs("????????.d?",) É œ Í #Ê � ÿs("b:????????.d?")ì"" â è+Ë � Æì"" â Æìÿs("b:????????.d?",)Í Æìÿx(Æ,)Ï ØìÆÔ ›  ¶ UCverterÞ ÆìÙ ¶ make UC(è ¶ TEST NAME, EXTRACT FILE TYPE ò „ü ­ – œ ¯"I",,DÄ()ñÆñ".D"0FÔì FÔì" " œ j ¶ file is type 1 � Ýì@ â  ’ $: Åì"BAD FILE NAME"³ Å� Ôì â Ôì¾ è  ¾ ˜ !$ � Ýì5 â „¾ .¶not found.­ – œ L8¯"I",,DÄ()ñÆñ".D2"0BFÔì FÔì"2" œ j ¶ file is type 2L � Ýì5 â N ’ V;N Åì"FILE NOT FOUND"³ Å� Ôì â Ôì¾ è P ¾ ˜ V ®"`¶ OPEN UP FILES FOR REAL j„Éì­ – œ Ð %t¯ "R",,DÄ()ñÆñ".D"ñFÔ~— #,€ Ú Ò&ˆ¯ "R",,DÄ()ñÆñ".DD"ñFÔ’— #, € Ú ÓœÀ$¦¶ (SUB) GET REC. I IN T$ °Ôì""º­ FÔ œ Ø,Ä&Ä š #,FÔóÉñ ¶ latter halfÎ Ôìÿx(Ò,).Ø š #,FÔóÉñ ¶ whole or first halfâ ÔìÒñÔìÀö¶ (SUB) SHOW FIELDS ™ Êì ã Nà  � Ã(Ê)ì â ( ³ á();> ³ ä"##";Ê;³". "ÿx(Î(Ê),)" "ÿ|(Î(Ê),)(«2³<À%x¶ (SUB) PUT T1$ AS REC NR ‚­ FÔ œ  ,ŒŒ § Óì©(T±,�)– µ #,FÔóNÒñ  § Óìÿx(T±,€)ª µ #,FÔóNÒñ´À#¾¶ (SUB) CLOSE DUPE FILE +È� F²ìÆ â ÃìÎìNÒœ ",Ò³³³"Closing dupe file,"NÒ"records. ÜÔì""æ™ Éì ã !ð ÔìÔñÎ(É)ñÿ(~)%ú � ÿx(Î(É),)ì"stop" â « T±ìÔñÿ"(NÒ)ñÿ(~)*N±ìNÒNÒì› xNÒìN±"„ ,À$h¶ RE-OPEN AFTER DISK ERR r„› tœ þ(NÒ)ñÿ(~)*N±