ÿòa:�ÛCREATOR; WRITTEN ON 1/16/80 BY BRUCE W. TONKIN.b:�ÛADAPTED FOR CP/M AND MICROSOFT BASIC 5.01 ON 5/11/80Ëb:�ÛFOR 4.51 ON 3/18/81, AND FOR MODEL III ON 2/20/83, FOR CP/M AND MBASIC 4.51/5.2+ AGAIN ON 3/23/83; FOR 48K CP/M WITH OVERLAYS ON 7/2/83; THIS IS MAIN]c:�ÛTHIS IS PUBLIC DOMAIN SOFTWARE AND MAY NOT BE SOLD OR INCORPORATED IN ANY COMMERCIAL SOFTWARE WITHOUT THE EXPRESS PERMISSION OF THE AUTHORec:�Ûòc:�ÛTHIS PROGRAM WILL WORK ON ANY MACHINE RUNNING MBASIC 4.51 OR HIGHER, UNDER CP/M 1.4 OR HIGHER, WITH A 16 X 64 VIDEO SCREEN OR BIGGER.d:�ÛIF MBASIC 4.51 IS USED, RECORD LENGTH MUST ALWAYS BE 128; YOUR PROGRAM SHOULD BE CHANGED. YOU WILL ALSO NEED TO ADD A 'CLEAR' COMMANDÆd:�Û TO YOUR GENERATED REPORT PROGRAM. CLEAR 5000 SHOULD BE PLENTY.Îd :�Ûe :�ÛMODIFY OR DELETE THIS NEXT LINE FOR YOUR TERMINAL CLEAR SCREEN CODEOe CLS$ðÿ–()::�ÛTELEVIDEO CLEAR SCREEN CODE STRING¡e :�ÛTRS-80 P&T CP/M USES A SINGLE CHR$(12); ADM 3 SERIES USE A SINGLE CHR$(26)ðe :�ÛTHIS PROGRAM AND YOUR GENERATED PROGRAM WILL USE THE CLEAR SCREEN CODE!?f:�ÛIF YOUR TERMINAL DOES NOT SUPPORT A CLEAR CODE, SET CLS$=STRING$(20,10)‘f:�ÛIN LINE 11; THAT WILL SCROLL MOST OF THE OLD STUFF OFF THE SCREEN, ANYWAY.Ñf:�ÛSTRING$(24,10) IS TOO LONG TO USE IN THE PROGRAM. SORRY!Ûf‰ <ôfFXð:‹ ÿ’(CV$)ñ Ï ŽOg‚ IIð Î ÿ’(CV$):CV%ðÿ•(ÿƒ(CV$,II,)):‹ CV%ð" ÷ FXð Ï FXð::¢ ‹ CV%ð" ÷ FXð Ï FXðrg(‹ CV%ïZ ÷ FXð Ï CV%ðCV% ÷ _’g2ÿƒ(CV$,II,)ðÿ–(CV%):ƒ II:Ž h<‘ CLS$;"CREATOR.BAS: COPYRIGHT (C) 1983, BY BRUCE W. TONKIN":‘"34069 HAINESVILLE ROAD, ROUND LAKE, IL 60073":‘"THIS WORK MAY NOT BE SOLD"ÕhF‘"WITHOUT THE EXPRESS WRITTEN PERMISSION OF BRUCE W. TONKIN.":‘"BUT MAY BE FREELY REPRODUCED.":‘"GIVE A COPY TO A FRIEND!":‘"YOU MUST LEAVE THIS NOTICE IN PLACE AND UNCHANGED!"JiK‘"PROGRAM MANUALS ARE AVAILABLE, FOR $10+$1 POSTAGE, FROM THE":‘"PROGRAM'S AUTHOR. ADD $5.00 EXTRA IF OVERSEAS."^iP‚ Ið Î Ð:ƒ IjiZ‘ CLS$;jd‘"You may now change diskettes, if you wish. However, please be":‘"sure you have the file called C451.LIB on your default drive.":‘"DEPRESS ANY KEY WHEN READY TO CONTINUE.";5jnAN$ðÝ:‹ AN$ð"" Ï nkxÌ:‘ CLS$;"THIS IS THE CREATOR, VERSION 2.1. It will allow you to generate":‘"a program that will create, update, and access a hashed data":‘"file. First, you must tell me the name you want to give your":‘"program. ";—k‚‘"YOU ARE LIMITED TO 8 ALPHABETIC CHARACTERS.":‘"PROGRAM NAME= ";:± … PN$:CV$ðPN$:� :PN$ðCV$:‹ ÿ’(PN$)ï Ï ‘"TOO LONG.":‰ ‚ûkŒ‚ Ið Î ÿ’(PN$):‹ ÿƒ(PN$,I,)ñ"A" ø ÿƒ(PN$,I,)ï"Z" Ï ‘"INVALID CHARACTER USED.":EXð:Iðÿ’(PN$)l–ƒ I:‹ EXð Ï EXð:‰ ‚Œl ‘"The disk drives are lettered, A - P. Which drive do you want":‘"the data file on, WHEN YOUR PROGRAM IS RUN: ";ÆlªAN$ðÝ:‹ AN$ð"" Ï ª::¢ ‹ AN$ñ"A" ø AN$ï"P" Ï ‘:‰  Ðl´‘ AN$ m¾‘"What drive do you want your program written on: ";CmÈBN$ðÝ:‹ BN$ð"" Ï È::¢ ‹ BN$ñ"A" ø BN$ï"P" Ï ‘:‰ ¾MmÒ‘ BN$ mÜ‘"What drive do you want your program to be on, when you are":‘"running it: ";ÚmæCN$ðÝ:‹ CN$ð"" Ï æ::¢ ‹ CN$ñ"A" ø CN$ï"P" Ï ‘:‰ Üämð‘ CN$òmú• ¨ ‰ Šn¿"I",,BN$ò":"òPN$ò".BAS":¨ ~ánKF$ðAN$ò":"òPN$ò".KEY":DF$ðAN$ò":"òPN$ò".DAT":PN$ðPN$ò".BAS":¿"O",,BN$ò":"òPN$:‘ #,"1 REM*PROGRAM NAME: ";PN$;"*":‘ #,"2 REM*DATA FILE NAME IS ";DF$;"*":‘ #,"3 REM*DATA FILE IS ON DRIVE ";AN$;"*"wo‘ CLS$;"What is the maximum number of records (per data disk) you want":‘"to allow in your data file: ";:± … MS$:MSðÿ”(MS$):‹ MSñ ø MSïÿ Ï Üo"‘"What is the record length (1 to 256 is permitted): ";:± … RS$:RSðÿ”(RS$):‹ RSï ø RSñ Ï "{p,‘ #,"4 REM*NUMBER OF RECORDS=";MS;"*":‘ #,"5 REM*RECORD LENGTH=";RS;"*":Q$ðÿ–("):‘"Please input the title you want displayed for your program:":± … TI$ðp1‘ #,"6 RESET:CLS$=";:‚ Ið Î ÿ’(CLS$)ó:‘ #,"CHR$(";ÿ•(ÿƒ(CLS$,I,));")+";:ƒ I:‘ #,"CHR$(";ÿ•(ÿ‚(CLS$,));")"Ÿq6LNðLNò :‘ #,LN;"'begin":LNðLNò :‘ #,LN;"PRINT CLS$;":LNðLNò :‘ #,LN;"OPEN";Q$;"R";Q$;",1,";Q$;DF$;Q$;",";RS;":OPEN";Q$;"R";Q$;",2,";Q$;KF$;Q$;",2:FIELD #2,2 AS KP$"ïqJLNðLNò :‘ #,LN;"ON ERROR GOTO 25000":LNðLNò :‘ #,LN;"DIM F$(50),G$(50)"rT‘ #,"32040 LSET KP$=MKI$(-1)"Ìr^‹ RSñ Ï ‘ #,"32045 FIELD #1,";RS;" AS DL$:LSET DL$=STRING$(";RS;",250):PUT 1,1"::¢ ‘ #,"32045 FIELD #1,255 AS DL$,1 AS DX$:LSET DL$=STRING$(255,250):LSET DX$=CHR$(250):PUT 1,1"ôrh‘ #,"32050 FOR I=1 TO";MS:† F$(2)�sr‘ CLS$;"You may now choose, if you wish, an exit code or message. This":‘"is an entry the operator may use in place of a normal entry":‘"in any field."pt|‘"If the operator makes this entry, the program will leave entry":‘"or update, and will return to the menu without adding to the":‘"file or altering any more information on the disk. Previous":‘"changes remain, though."¤t†‘"Do you wish an exit code to be used (Y/N)? ";øt�OO$ðÝ:‹ OO$ð"" Ï �::¢ CV$ðOO$:� :OO$ðCV$:‘ OO$:‹ OO$ñï"Y" ÷ OO$ñï"N" Ï †3uš‹ OO$ð"Y" Ï ‘"What is your message or code?";:± … OT$ºu¤‘ CLS$;"Now we must describe the positions of the fields in the data":‘"file. The fields may be smaller than you think necessary."+v©‘"Numbers can be PACKED --squeezed-- into less space in the file":‘"than they take to print on the screen.";w®‘" Whole numbers in the":‘"range -32767 to 32767 can be stored as packed integers, taking":‘"up only two spaces. Numbers needing up to six digits of":‘"accuracy can be stored in four spaces, and those needing up to"Áw¸‘"16 digits of accuracy can be stored in 8 spaces (double":‘"precision). Whole numbers in the range -127 to 127 can be":‘"stored as packed half-precision numbers, and take only one"Cx‘"space. Please take care to allocate the correct number of":‘"spaces for each field. You must proceed from left to right in"´xÇ‘"your record as you allocate space. You have ":‘ RS;"spaces in each record, and up to";(/òRSòÿ†(RSó/))õ;ÃxÌ‘"fields."yÖ‘"TYPE IN 999 FOR THE NUMBER OF SPACES TO ALLOCATE WHEN DONE."yàAð—yê‘"FIELD #";A;"USES: ";:± … F$(A):EXðEXòÿ”(F$(A)):‹ EXïRS ÷ F$(A)ñï"999" Ï ‘"EXCEEDS RECORD LENGTH. TRY AGAIN.":EXðEXóÿ”(F$(A)):‰ êÔyô‹ F$(A)ð"999" Ï 0::¢ ‹ ÿ”(F$(A))ð Ï ‘"INVALID.":‰ êùyþ‘"Is this field size ok (Y/N)?";SzEX$ðÝ:‹ EX$ð"" Ï ::¢ CV$ðEX$:� :EX$ðCV$:‘ EX$:‹ EX$ð"N" Ï EXðEXóÿ”(F$(A)):‰ êhz‹ EX$ñï"Y" Ï þ„z‹ RSóEXñ Ï AðAò:‰ 0Ïz&‘"All right. You have";RSóEX;"spaces left in your record.":AðAò:‰ ê`{0LNðLNò :‘ #,LN;"REM*SET UP FIELDS IN THE DATA RECORD*":AðAó:SLðLN:OF$ð"GOSUB 36000":‚ Ið Î A:‘ #,  �òI;"F%(";ÿƒ(ÿ“(I),);")=";F$(I):ƒª{:‘ #,"36800 CD%=0":‘ #,"55 DIM F%(";A;")":‘ #,"36810 FOR ZZ=1 TO";AR|DLNðLNò :‘ #,LN;"FOR I=1 TO ";A;":G$(I)=";Q$;Q$;":NEXT I:FC=0:PRINT CLS$:UF=0:G$=";Q$;Q$;":";OF$:LNðLNò :‘ #,LN;"PRINT TAB(21);";Q$;"PRODUCED BY THE CREATOR";Q$‘|NLNðLNò :‘ #,LN;"PRINT TAB(";(@óÿ’(TI$))õ;")";Q$;TI$;Q$¬|vLNð¾:‹ OO$ñï"Y" Ï Ša}€‘ #,LN;"PRINT";Q$;"To return to the menu from entry or update without entering or";Q$:LNðLNò :‘ #,LN;"PRINT";Q$;"updating your record, type in ";OT$;" for a field entry.";Q$ ~ŠLNðLNò :‘ #,LN;"AN$=INKEY$:IF AN$=";Q$;Q$;" THEN";LN;":ELSE ON(INSTR(";Q$;"EeLlSsUuDdIiXx";Q$;",AN$)-1.5)\2+1 GOTO 1000,10000,35000,11000,12000,32000,38000,";LNòe~�LNðLNò :‘ #,LN;"GOTO";SL:LNðLNò :‘ #,LN;"CLOSE:NEW":† D%(2):¹"CREATOR.OVR",,ALL„~Š‹ Öð ÷ ×ð5 Ï Ã :© ”‹ ×ð4 Ï ‘"You entered BASIC without specifying any files for disk access!":‘"Go back to DOS and re-enter BASIC correctly!":”~ž‹ (×ð~ ø ×ð&) ÷ Öð Ï ‘"FILE ALREADY EXISTS. DEPRESS C TO WRITE OVER IT.":‘"DEPRESS ANY OTHER KEY TO RE-START."£¨‹ (×ñï~ ÷ ×ñï&) ø Öñï Ï ÆÕ²XN$ðÝ:‹ XN$ð"" Ï ²::¢ ‹ XN$ð"C" Ï Ã :© Û¼�€Æ‘"ERROR NUMBER";×;"AT LINE";Ö:• ¨ ‰ ÷ ×ñï&) ø Öñï Ï ÆÕ²XN$ðÝ:‹ XN$ð"" Ï ²