100 ; PROG NAME IS 'README' 24 JUN 87
110 ;
120 DIM AI[4096]:SELECT PRINT 0
130  "START"
140 CLS:PRINT:PEEK $FFFA01,M%:PRINT " THIS IS A ";
150 IF M%>127 THEN PRINT "COLOR"; ELSE PRINT "MONOCHROME";
160 PRINT " VERSION OF THE ST WITH ";:PEEK $00042F,S%
170 IF S%=8 THEN PRINT "512K OF"; ELSE IF S%=16 THEN PRINT "A MEGABYTE OF"; ELSE PRINT "NONSTANDARD";
180 PRINT " MEMORY.":PRINT " WE PEEKED (LITERALLY) TO FIND OUT !":PRINT
190 PRINT:PRINT " WHAT WOULD YOU LIKE TO READ ABOUT ?":PRINT
200 PRINT "  1 = ABOUT DBASIC            2 = ABOUT DTACK GROUNDED INC"
210 PRINT "  3 = ABOUT DBASIC'S DOS      4 = PROGRAMMING TIPS"
220 PRINT "  5 = THE SCREEN EDITOR       6 = GRAPHICS MODES"
230 PRINT "  7 = THE DBASIC ASSEMBLER    8 = BENCHMARKS"
240 PRINT:PRINT "  9 = HOW TO BUY OR LICENSE DBASIC"
250 PRINT " 10 = RUN LORES COLOR GRAPHICS DEMOS"
260 PRINT " 11 = RUN HIRES COLOR GRAPHICS DEMOS"
270 PRINT " 12 = RUN MONOCHROME GRAPHICS DEMOS"
280 PRINT:PRINT " 13 = QUIT THIS PROGRAM":PRINT
290 PRINT " INPUT YOUR CHOICE (1-13) ";:INPUT N%
300 ON N% GOTO DBASIC,INC,DOS,TIPS,SCRED,MODES,ASM,BENCH,BUY,LORES,HIRES,MONO,END
310 GOTO 290
320 ;
330  "FRAME21"
340 N%=21
350 ;
360  "FRAME"
370 CLS:PRINT:FOR I%=1 TO N%:READ A$:PRINT A$:NEXT I%
380 ;
390  "MORE"
400 PRINT:PRINT " M=MORE, Q=QUIT:  YOUR CHOICE ?";
410 INKEY Z$:IF LEN(Z$)<>1 GOTO 410
420 IF Z$="Q" GOTO START ELSE IF Z$="q" GOTO START
430 IF Z$="M" THEN RETURN ELSE IF Z$="m" THEN RETURN ELSE GOTO 410
440 ;
450  "DBASIC"
460 RESTORE 399:GOSUB FRAME21:GOSUB FRAME21:GOSUB FRAME21:GOSUB FRAME21
470 GOSUB FRAME21:GOSUB FRAME21:GOSUB FRAME21:GOSUB FRAME21:GOSUB FRAME21
480 N%=14:GOSUB FRAME:GOSUB FRAME21:N%=19:GOSUB FRAME:GOTO START
490 ;
500  "INC"
510 RESTORE 740:GOSUB FRAME21:N%=18:GOSUB FRAME:GOSUB FRAME21:GOSUB FRAME21
520 GOSUB FRAME21:GOSUB FRAME21:GOSUB FRAME21:N%=20:GOSUB FRAME
530 GOSUB FRAME21:GOTO START
540 ;
550  "DOS"
560 RESTORE 198:N%=20:GOSUB FRAME:N%=20:GOSUB FRAME:N%=18:GOSUB FRAME
570 N%=19:GOSUB FRAME:N%=20:GOSUB FRAME:N%=22:GOSUB FRAME
580 GOSUB FRAME21:GOSUB FRAME21:N%=18:GOSUB FRAME:GOSUB FRAME21:GOTO START
590 ;
600  "TIPS"
610 RESTORE 925:GOSUB FRAME21:GOSUB FRAME21:GOSUB FRAME21:N%=20:GOSUB FRAME
620 N%=20:GOSUB FRAME:GOSUB FRAME21:N%=9:GOSUB FRAME:GOTO START
630 ;
640  "SCRED"
650 RESTORE 642:GOSUB FRAME21:GOSUB FRAME21:GOSUB FRAME21:N%=17:GOSUB FRAME
660 N%=18:GOSUB FRAME:GOTO START
670 ;
680  "MODES"
690 RESTORE:N%=16:GOSUB FRAME:N%=21:GOSUB FRAME:N%=21:GOSUB FRAME
700 N%=17:GOSUB FRAME:N%=20:GOSUB FRAME:N%=13:GOSUB FRAME:GOTO START
710 ;
720  "BUY"
730 RESTORE 1058:GOSUB FRAME21:GOSUB FRAME21:N%=14:GOSUB FRAME:GOTO START
740 ;
750  "ASM"
760 RESTORE 109:N%=21:GOSUB FRAME:N%=16:GOSUB FRAME:N%=14:GOSUB FRAME
770 N%=20:GOSUB FRAME:N%=19:GOSUB FRAME
780 CLS:VTAB 8:PRINT " KEY 'Return' TO PRINT THE ASSEMBLY INSTRUCTIONS"
790 VTAB 14:PRINT "RUN ASMDOC":VTAB 12:END
800 ;
810  "BENCH"
820 M$="RUN BENCHMARKS":GOTO 920
830 ;
840  "LORES"
850 M$="RUN C0GRDEMO":GOTO 920
860 ;
870  "HIRES"
880 M$="RUN C1GRDEMO":GOTO 920
890 ;
900  "MONO"
910 M$="RUN MGRDEMO"
920 CLS:VTAB 10:PRINT "PRESS 'RETURN' TO ";M$:VTAB 18:PRINT M$:VTAB 16:END
930 ;
940  "END":END
950 ;
960 DATA " "," DBASIC IS COMPATIBLE WITH BOTH THE COLOR AND MONOCHROME VERSIONS OF THE ST."," "
970 DATA " THE MONOCHROME VERSION OF THE ST HAS BETTER TEXT FONTS AND HIGHER SCREEN"
980 DATA " RESOLUTION THAN THE COLOR VERSION.  IF YOU ARE DOING A LOT OF WORD PROCESSING"
990 DATA " OR OTHER WORK PRIMARILY INVOLVING TEXT AND NUMERIC DATA, THE MONO(CHROME)"
1000 DATA " VERSION OF THE ST IS HIGHLY DESIRABLE.  A COLOR ST CAN BE CONVERTED TO THE"
1010 DATA " THE MONO VERSION BY SIMPLY UNPLUGGING THE COLOR MONITOR, OR CRT, AND REPLACING"
1020 DATA " IT WITH THE MONOCHROME MONITOR, WHICH IS RELATIVELY INEXPENSIVE."
1030 DATA " "," THE COLOR MONITOR IS VERY USEFUL FOR COLOR GRAPHICS AND, YES, FOR GAMES.  THE"
1040 DATA " TRADEOFF IS THAT THE COLOR VERSION HAS LOWER RESOLUTION.  HOW MUCH LOWER"
1050 DATA " RESOLUTION DEPENDS ON WHICH OF THE TWO COLOR MODES IS SELECTED.  IF YOU HAVE"
1060 DATA " A MONOCHROME ST, YOU CAN CONVERT IT TO COLOR BY SIMPLY UNPLUGGING THE CRT AND"
1070 DATA " REPLACING IT WITH A COLOR MONITOR."," "
1080 ;
1090 DATA " WHEN DBASIC BOOTS UP, IT READS HARDWARE LOCATION $FFFA01 TO DETERMINE WHETHER"
1100 DATA " THE ST IS MONO OR COLOR.  IF IT IS MONOCHROME, THE ST IS AUTOMATICALLY"
1110 DATA " INITIALIZED TO MODE 2, WHICH IS BLACK LETTERS ON A WHITE BACKGROUND.  MODE 3,"
1120 DATA " WHICH IS WHITE LETTERS ON A BLACK BACKGROUND, CAN BE SELECTED EITHER BY A"
1130 DATA " COMMAND OR UNDER PROGRAM CONTROL, BY A PROGRAM STATEMENT.  IN EITHER CASE,"
1140 DATA " THE ST DISPLAYS 80 COLUMNS OF TEXT."," "
1150 DATA " IF THE ST IS COLOR, IT IS AUTOMATICALLY INITIALIZED TO MODE 1, WHICH IS THE"
1160 DATA " THE HIRES COLOR MODE WITH 80 COLUMNS OF TEXT.  THIS MODE IS PREFERRED FOR"
1170 DATA " WORKING WITH TEXT AND NUMBERS, AND WHEN PROGRAMMING.  THE ALTERNATE MODE,"
1180 DATA " MODE 0, CAN BE SELECTED EITHER BY A COMMAND OR UNDER PROGRAM CONTROL, BY A"
1190 DATA " PROGRAM STATEMENT.  MODE 0 PROVIDES UP TO SIXTEEN SEPARATE COLORS (VS. ONLY"
1200 DATA " FOUR FOR MODE 1), BUT PROVIDES ONLY 40 COLUMNS OF TEXT.  FOR THIS REASON, MODE"
1210 DATA " 0 IS not A GOOD CHOICE FOR A PROGRAMMING ENVIRONMENT !  (IT can BE USED.)"
1220 DATA " "," COLOR STs:  MODE 0 = 16 COLORS, 320 X 200 GRAPHICS, 40 COLUMN TEXT."
1230 DATA "             MODE 1 =  4 COLORS, 640 X 200 GRAPHICS, 80 COLUMN TEXT."
1240 DATA " ","  MONO STs:  MODE 2 = NORMAL MODE,  640 X 400 GRAPHICS, 80 COLUMN TEXT."
1250 DATA "             MODE 3 = INVERSE MODE, 640 X 400 GRAPHICS, 80 COLUMN TEXT."," "
1260 ;
1270 DATA " DBASIC, UNLIKE THE BASIC WHICH CAME FREE WITH YOUR ST, PERMITS SWITCHING"
1280 DATA " COLOR MODES UNDER PROGRAM CONTROL OR FROM THE COMMAND MODE, WITHOUT REBOOTING."
1290 DATA " "," WHEN EXECUTING A COMMAND OR PROGRAM STATEMENT TO CHANGE MODES, THE SCREEN AND"
1300 DATA " THE VIRTUAL TEXT SCREEN ARE BOTH CLEARED.  VIRTUAL TEXT SCREEN ?  OH, YES:"
1310 DATA " "," DBASIC USES A 'VIRTUAL TEXT SCREEN' TO CONTAIN THE TEXT INFORMATION, SUCH AS"
1320 DATA " WHAT YOU ARE NOW READING.  THE VIRTUAL TEXT SCREEN CONTAINS TEXT DATA IN THE"
1330 DATA " USUAL ASCII FORMAT, ONE BYTE PER CHARACTER.  TO DISPLAY THAT ASCII BYTE ON THE"
1340 DATA " SCREEN, IT MUST BE CONVERTED INTO GRAPHICS FORM.  THE NATURE OF THE GRAPHICS"
1350 DATA " FORM DEPENDS ON THE SCREEN MODE WHICH IS IN EFFECT."," "
1360 DATA " IN MONOCHROME MODES, EACH ASCII CHARACTER IS CONVERTED INTO A GRAPHICS FORM"
1370 DATA " WHICH OCCUPIES A RECTANGLE WHICH IS 8 PIXELS WIDE BY 16 PIXELS HIGH.  THUS,"
1380 DATA " 128 PIXELS ARE ASSIGNED TO EACH CHARACTER."," "
1390 DATA " IN COLOR MODES, EACH ASCII CHARACTER IS CONVERTED INTO A GRAPHICS FORM WHICH"
1400 DATA " OCCUPIES A RECTANGLE WHICH IS 8 PIXELS WIDE BY ONLY 8 PIXELS HIGH.  THUS, ONLY"
1410 DATA " 64 PIXELS ARE ASSIGNED TO EACH CHARACTER.  THIS IS WHY THE MONOCHROME VERSION"
1420 DATA " OF THE ST IS REALLY PREFERRED FOR WORKING WITH TEXT."," "
1430 ;
1440 DATA " A 'FONT' TABLE IS USED TO CONVERT FROM THE ASCII BYTE TO THE GRAPHICAL"
1450 DATA " CHARACTER DISPLAY.  THERE ARE TWO FONT TABLES IN YOUR ST'S ROM, ONE FOR MONO"
1460 DATA " AND ONE FOR COLOR.  DBASIC READS THE APPROPRIATE FONT TABLE INTO RAM WHEN"
1470 DATA " BOOTED, AND REARRANGES THE FONT TABLE FOR OPTIMUM DISPLAY SPEED.  THAT'S WHY"
1480 DATA " DBASIC HAS FASTER SCREEN RESPONSE THAN YOUR OTHER ST PROGRAMS, AND ALSO WHY"
1490 DATA " DBASIC CAN ONLY WORK WITH STs WHICH HAVE THAT ROM."," "
1500 DATA " TECHNICALLY, DBASIC COULD WORK WITH ROMLESS STs BY STORING THE FONT TABLE(S)"
1510 DATA " IN A DATA FILE ON DISK, BUT THE ATARI CORPORATION HAS THOSE FONT TABLES"
1520 DATA " COPYRIGHTED.  US DBASIC FOLKS definitely DO NOT WANT TO UPSET KINDLY UNCLE"
1530 DATA " JACK'S LEGAL DEPARTMENT !  SO, YOU HAVE TO HAVE AN ST WITH ROM TO USE"
1540 DATA " DBASIC."," "
1550 DATA " (IF YOU KNEW HOW 'KINDLY UNCLE JACK' EARNED THAT NICKNAME, YOU'D KNOW WHY WE"
1560 DATA " DON'T WANT TO UPSET HIM OR HIS LEGAL DEPARTMENT !)"," "," "
1570 ;
1580 DATA " LIKE WE JUST SAID:  DBASIC PRINTS TEXT TO SCREEN VERY SWIFTLY.  WHAT NEITHER"
1590 DATA " DBASIC NOR ANY OTHER PROGRAM CAN DO IS scroll FAST !  THAT'S BECAUSE THE TEXT"
1600 DATA " INFORMATION IS PRINTED graphically, AND THAT MEANS THAT TO SCROLL ONE LINE UP,"
1610 DATA " THE ENTIRE 32K BYTE SCREEN DISPLAY MUST BE MOVED, PLUS THE 2K BYTE 'VIRTUAL"
1620 DATA " TEXT SCREEN'.  SO TO SCROLL ONE LINE, 34K OF DATA MUST BE MOVED."
1630 DATA " "," WHAT WE ARE SAYING IS, DBASIC PRINTS TEXT TO THE SCREEN VERY SWIFTLY IF NO"
1640 DATA " SCROLLING IS INVOLVED.  TAKE THIS PROGRAM (WHOSE OUTPUT) YOU ARE READING RIGHT"
1650 DATA " NOW:  FOR EACH SCREEN, WE FIRST DO A 'CLS' TO CLEAR THE SCREEN, AND then WE"
1660 DATA " PRINT THE NEW SCREEN.  THAT WAY, NO SCROLLING IS INVOLVED, AND PRINTING GOES"," fast !"," "
1670 DATA " HOWEVER, YOU SHOULD NOT MAKE THE ASSUMPTION THAT every PROGRAM OR LANGUAGE"
1680 DATA " PRINTS TO THE SCREEN AS FAST AS DBASIC.  MEGAMAX C, FOR INSTANCE, IS ABOUT"
1690 DATA " SIX OR SEVEN TIMES SLOWER THAN DBASIC IN THIS DEPARTMENT !"," "
1700 DATA " (IF YOU THINK COMPILED Cs ARE ALWAYS FASTER THAN INTERACTIVE BASICS, YOU HAVE"
1710 DATA " SOME 'FACTS' TO UNLEARN !)"," "," "
1720 ;
1730 DATA " ABOUT THE WAY GRAPHICS AND TEXT ARE MIXED:"," "," "
1740 DATA " WHEN YOU INPUT TEXT, EITHER WHEN ENTERING COMMANDS OR PROGRAMS OR RESPONDING"
1750 DATA " TO PROMPTS (INPUTS) IN A PROGRAM, TEXT COMES FROM AND GOES TO THAT 'VIRTUAL"
1760 DATA " TEXT SCREEN'.  SO IF YOU HAPPEN TO HAVE SOME GRAPHICS STUFF ON THE SAME LINE"
1770 DATA " YOU ARE INPUTTING TEXT ON, DON'T WORRY ABOUT IT.  DBASIC DOES'NT KNOW THAT THE"
1780 DATA " GRAPHICS STUFF IS THERE, AND SO IGNORES IT !"," "
1790 DATA " ON THE OTHER HAND, ANY TEXT STUFF LEFT OVER IN THE SAME LINE FROM EARLIER"
1800 DATA " TIMES IS THERE FOR REAL, AND WILL BOMB A COMMAND OR PROGRAM LINE (BUT NOT AN"," INPUT STATEMENT)."," "
1810 ;
1820 DATA " DBASIC COMES WITH A 68000 ASSEMBLER (AND EDITOR) AS AN INCLUDED DEMO."," "
1830 DATA " IT'S FREE !  IF YOU'RE AN ASSEMBLY LANGUAGE PROGRAMMER, WE HOPE THE ASSEMBLER"
1840 DATA " WILL BE WORTH A LOT MORE THAN YOU PAID FOR IT!"," "
1850 DATA " THIS ASSEMBLER WAS DEVELOPED BY US IN THE WINTER OF '85 FOR USE IN DEVELOPING"
1860 DATA " DBASIC.  IT ORIGINALLY RAN (AND STILL RUNS) ON SOME BIG, FAST HARDWARE THAT"
1870 DATA " OUR PREDECESSOR COMPANY, DIGITAL ACOUSTICS, USED TO MANUFACTURE.  BIG AS IN"
1880 DATA " FOUR MEGABYTES;  FAST AS IN 15MHz WITH NO WAIT STATES.  WE ARE TALKING ABOUT A"
1890 DATA " 68000-BASED 'ATTACHED PROCESSOR', WHICH WAS SOLD FROM 1981 TO EARLY 1987 BY"
1900 DATA " DIGITAL ACOUSTICS INC.  (THIS HARDWARE IS OUT OF PRODUCTION, BUT WE STILL USE"
1910 DATA " IT INTERNALLY, OF COURSE.)"
1920 DATA " "," THIS ASSEMBLER HAS ONE KNOWN BUG:  THE 'MOVEP' INSTRUCTION IS NOT IMPLEMENTED."," "
1930 DATA " THE REASON FOR THIS IS THAT THE 'MOVEP' INSTRUCTION COULD NOT BE USED ON OUR"
1940 DATA " BIG, FAST HARDWARE !  IF YOU DON'T LIKE THE FACT THAT 'MOVEP' IS NOT YET"
1950 DATA " IMPLEMENTED, YOU CAN EITHER HAND-ASSEMBLE THAT INSTRUCTION OR ignore THE"
1960 DATA " (FREE) DEMONSTRATOR PROGRAM.  ACTUALLY, THE 'MOVEP' INSTRUCTION DOESN'T GET"
1970 DATA " USED MUCH;  IT IS NOT USED EVEN once IN DBASIC'S SOURCE CODE!"," "
1980 ;
1990 DATA " WHILE IT IS HEART-WARMING TO SEE 'C' PROGRAMMERS' EYES LIGHT UP WHEN THEY SEE"
2000 DATA " HOW FAST THIS ASSEMBLER WORKS, WE HASTEN TO ADD THAT THIS ASSEMBLER WAS"
2010 DATA " WRITTEN FOR USE BY HUMAN BEINGS ONLY.  COMPILERS, WE EXPLAIN, ARE NOT HUMAN"
2020 DATA " BEINGS !  SO YOU CAN'T USE OUR VERY FAST ASSEMBLER TO ASSEMBLE THE OUTPUT OF,"
2030 DATA " FOR INSTANCE, A C OR MODULA-2 COMPILER."," "
2040 DATA " (NAME one THING THE 'C' OR MODULA-2 FOLK HAVE EVER DONE TO HELP US BASIC FOLK,"
2050 DATA " HMM?  WHY SHOULD WE HELP them ?)"," "
2060 DATA " BUT OUR ASSEMBLER does ASSEMBLE SOURCE CODE DEVELOPED BY HUMAN BEINGS JUST"
2070 DATA " LIKE YOU, USING OUR INCLUDED 'EDITOR' DEMO PACKAGE.  TO PROVE THAT, WE HAVE"
2080 DATA " INCLUDED 77K OF SOURCE CODE IN THREE FILES, PLUS A SHORT 'FILE OF FILES'."," "
2090 DATA " THIS IS THE (GENUINE, UNMODIFIED, COMPLETE) SOURCE CODE TO PASS ONE OF THE"
2100 DATA " ST VERSION OF OUR ASSEMBLER."," "
2110 ;
2120 DATA " HERE THE THINGS YOU'LL NEED TO USE THIS ASSEMBLER:"," "," "
2130 DATA " 1:  AN ABILITY TO PROGRAM IN ASSEMBLY, OR THE WILLINGNESS TO LEARN."
2140 DATA " "," 2:  A 68000 PROGRAMMING MANUAL, SUCH AS THE ONE MOTOROLA GIVES AWAY OR EQUIV."," "
2150 DATA " 3:  AN EPSON-COMPATIBLE HARD-COPY PRINTER WITH A PARALLEL INTERFACE."
2160 DATA " "," 4:  THIS DISK  (WHICH INCLUDES DBASIC, AN EDITOR, AN ASSEMBLER, SAMPLE SOURCE"
2170 DATA "     FILES AND INSTRUCTIONS)."," "
2180 DATA " 5:  THAT'S ALL !"," "," "
2190 ;
2200 DATA " THE ACTUAL ASSEMBLY IS DONE BY 12K OF 68000 MACHINE CODE.  THIS IS VERY"
2210 DATA " UNUSUAL;  ALMOST ALL OTHER ASSEMBLERS ARE WRITTEN IN A HIGH LEVEL LANGUAGE"
2220 DATA " SUCH AS PASCAL OR C.  ALTHOUGH THE PROGRAM NAMED 'ASM' IS A DBASIC PROGRAM, IT"
2230 DATA " IS REALLY JUST THE DOS FILE HANDLER AND A CONVENIENT MEANS FOR ENTERING SOME"
2240 DATA " USER-SPECIFIED OPTIONS.  THE ACTUAL ASSEMBLY TASK IS DONE BY THE 68000 MACHINE"
2250 DATA " CODE WHICH RESIDES IN THE BINARY FILE 'AP1P2'."
2260 DATA " "," THE EDITOR (VERY ORIGINALLY NAMED 'EDITOR'), ON THE OTHER HAND, IS WRITTEN"
2270 DATA " entirely IN DBASIC.  THE EDITOR IS INTENDED TO BE A SHOWCASE FOR THE 'TXyyy'"
2280 DATA " PROGRAM STATEMENTS, PLUS THE 'EDIT' STATEMENT.  ALTHOUGH THE 'EDIT' STATEMENT"
2290 DATA " HAS AN EQUIVALENT IN SOME OTHER BASICs, AS FAR AS WE KNOW THE DBASIC 'TXyyy'"
2300 DATA " STATEMENTS ARE UNIQUE.  AND VERY USEFUL.  EACH OF THESE PROGRAM STATEMENTS"
2310 DATA " IS THE EQUIVALENT OF A LARGISH SUB-PROGRAM WHICH WOULD ORDINARILY BE WRITTEN"
2320 DATA " IN A HIGH LEVEL LANGUAGE AND HENCE WOULD BE VERY SLOW.  BUT SINCE DBASIC IS"
2330 DATA " WRITTEN ENTIRELY IN ASSEMBLY, THESE STATEMENTS RUN VERY SWIFTLY INDEED."
2340 DATA " "," THE NET RESULT IS AN EDITOR WHICH IS WRITTEN ENTIRELY IN DBASIC AND YET RUNS"
2350 DATA " AT ASSEMBLY-LANGUAGE SPEED, WHICH IS A HECK OF A COMBINATION."," "
2360 ;
2370 DATA " IF YOU PROGRAM EXCLUSIVELY IN BASIC, WE ENCOURAGE YOU TO STUDY A LISTING OF"
2380 DATA " THE 'EDITOR' SO THAT YOU CAN SEE HOW THESE SPECIAL DBASIC TEXT STATEMENTS"
2390 DATA " WORK.  OF COURSE, LOOKING AT PROGRAM LISTINGS IS ALWAYS A GOOD WAY TO LEARN"
2400 DATA " MORE ABOUT ANY PROGRAMMING LANGUAGE OR VERSION OF A PROGRAMMING LANGUAGE."," "
2410 DATA " IF YOU PROGRAM (OR INTEND TO PROGRAM) IN A COMBINATION OF BASIC AND ASSEMBLY,"
2420 DATA " YOU WILL WANT TO STUDY THE 'ASM' PROGRAM, SINCE IT IS A GOOD EXAMPLE OF A"
2430 DATA " REAL-WORLD PROGRAM WHICH COMBINES THE USE OF DBASIC AND 68000 ASSEMBLY CODE."
2440 DATA " THE MACHINE-CODE 'CALL's WOULD ORDINARILY BE OBSCURE, BUT we have included the"
2450 DATA " source code FOR HALF OF THAT MACHINE CODE, SO YOU CAN GET A MUCH CLEARER IDEA"
2460 DATA " OF JUST EXACTLY HOW DBASIC 'HOOKS' TO 68000 MACHINE CODE AND VICE VERSA."," "
2470 DATA " NATURALLY, THAT MEANS THAT YOU WILL NEED TO GET A HARD-COPY LISTING OF THAT"
2480 DATA " SOURCE CODE, AND LEARN TO USE THE ASSEMBLER."," "," "
2490 DATA " YOU REALLY are GOING TO NEED THAT HARD-COPY PRINTER.  SO, turn it on !"
2500 DATA " (THE POWER, WE MEAN.  WE AREN'T STRANGE AROUND HERE.)"," "
2510 ;
2520 ;
2530 ;
2540 DATA " HERE ARE THE FUNDAMENTALS OF DBASIC DOS:"," "," "
2550 DATA " DBASIC'S DOS IS TWICE AS FAST AS TOS, AND DBASIC DISKS HOLD 10% MORE DATA."," "
2560 DATA " BASIC'S DOS IS HIGHLY COMPATIBLE WITH BOTH DBASIC AND WITH MACHINE CODE AND"
2570 DATA " ASSEMBLY FILES.  IN FACT, DBASIC INCLUDES AN ASSEMBLER AND EDITOR AS DEMO"
2580 DATA " PROGRAMS.  AND DBASIC (UNLIKE ANY OTHER BASIC) HAS BUILT-IN HIGH LEVEL SUPPORT"
2590 DATA " FOR TEXT FILES (THE TXyyy STATEMENTS)."," "
2600 DATA " DBASIC'S DOS IS NOT FILE COMPATIBLE, REPEAT, FILE COMPATIBLE, WITH TOS."," "
2610 DATA " DBASIC INCLUDES A DISK UTILITY PROGRAM WHICH CAN READ OR WRITE SPECIFIED"
2620 DATA " SECTORS ON BOTH DBASIC AND TOS DISKS."," "
2630 DATA " DID WE TELL YOU THAT DBASIC'S DOS IS twice AS FAST AS TOS ?  NO ?  WELL,"
2640 DATA " THEN, DBASIC'S DOS IS TWICE AS FAST AS TOS.  (DID YOU BY ANY CHANCE NOTICE"
2650 DATA " HOW fast THIS FILE LOADED, EVEN THOUGH IT'S OVER 70K ?  DO YOU REALIZE HOW"
2660 DATA " LONG IT TAKES TOS TO LOAD 70K ?)"," "
2670 DATA " DBASIC DISKS COME IN TWO VARIETIES:  SYSTEM DISKS AND DATA DISKS."," "
2680 DATA " A DBASIC SYSTEM DISK CAN BE BOOTED BECAUSE IT CONTAINS THE DBASIC CODE ON"
2690 DATA " TRACKS 1 THROUGH 13.  A DBASIC DATA DISK IS NOT BOOTABLE BECAUSE IT DOESN'T"
2700 DATA " CONTAIN THE DBASIC CODE.  THAT WAY, IT CAN HOLD MORE DATA (PROGRAMS)."," "," "
2710 DATA " THE DBASIC DISK CATALOG SUPPORTS FOUR KINDS OF FILES:  PROGRAM FILES,"
2720 DATA " TEXT-SAVED PROGRAM FILES, DATA FILES, AND BINARY FILES."," "
2730 DATA " DBASIC HAS TWO WAYS TO HANDLE WHAT ARE SOMETIMES CALLED 'TEXT FILES'.  ONE IS"
2740 DATA " TO TREAT THE TEXT AS DATA (E.G. STRING ARRAYS) AND THE OTHER, USING THE"
2750 DATA " 'TXyyy' STATEMENTS, TREATS THE TEXT AS BINARY DATA.  (all FILES, ULTIMATELY,"
2760 DATA " ARE BINARY DATA!)"," "," "
2770 DATA " THE 288-PAGE DBASIC MANUAL, IF YOU HAVEN'T SEEN ONE, PROVIDES LOTS OF"
2780 DATA " DOCUMENTATION ABOUT DOS, FILES, FILE FORMATS ETC."," "," "
2790 DATA " DBASIC WORKS WITH BOTH SINGLE AND DOUBLE-SIDED DISKETTES.  UTILITY PROGRAMS"
2800 DATA " ('SSTODS' AND 'DSTOSS') ARE INCLUDED TO CONVERT DBASIC SYSTEM OR DATA DISKS"
2810 DATA " FROM ONE FORMAT TO THE OTHER.  NATURALLY, YOU HAVE TO HAVE A DOUBLE-SIDED"
2820 DATA " DRIVE TO RUN EITHER OF THESE PROGRAMS."," "," "
2830 DATA " A SINGLE-SIDED DBASIC SYSTEM OR DATA DISK CAN BE RUN IN A DOUBLE-SIDED DRIVE."," "
2840 DATA " DBASIC DISKS HOLD 10% MORE DATA THAN A TOS DISK BECAUSE EACH TRACK CONTAINS"
2850 DATA " FIVE 1K SECTORS FOR A TOTAL OF 5K PER TRACK, WHILE TOS USES NINE 1/2K SECTORS"
2860 DATA " PER TRACK FOR A TOTAL OF 4.5K PER TRACK."," "," "
2870 DATA " DBASIC RUNS TWICE AS FAST AS TOS BECAUSE, UNLIKE TOS, IT MAKES EFFECTIVE USE"
2880 DATA " OF SECTOR STAGGERING.  THIS LENGTHY, IF NOT ESPECIALLY COMPLICATED, SUBJECT IS"
2890 DATA " EXPLAINED IN DETAIL IN THE DBASIC MANUAL."," "," "
2900 DATA " DBASIC'S DOS IS SPECIFICALLY DESIGNED TO MINIMIZE FRAGMENTATION, AND INCLUDES"
2910 DATA " A UTILITY PROGRAM WHICH ELIMINATES FRAGMENTATION ALTOGETHER (UNTIL YOU START"
2920 DATA " MOVING FILES AND DATA AROUND AGAIN).  FRAGMENTATION IS A very UNDESIRABLE"
2930 DATA " THING TO HAVE ON A DISK, BECAUSE IS SLOWS FILE HANDLING SOMETHING FIERCE.  AN"
2940 DATA " UNFRAGMENTED DBASIC DISK IS A HECK OF A LOT more REPEAT more THAN TWICE AS"
2950 DATA " FAST AS A FRAGMENTED TOS DISK !"," "
2960 DATA " TOS, IN CONTRAST, EMULATES MS-DOS 2.X, WHICH ACTIVELY PROMOTES THE EXCESSIVE"
2970 DATA " GROWTH OF FRAGMENTATION.  MICROSOFT partially CORRECTED THIS PROBLEM AS PART"
2980 DATA " OF THE UPGRADE TO MS-DOS 3.X, BUT LIKE WE SAID:  TOS EMULATES MS-DOS 2.X."," "
2990 DATA " (TOS IS A TRADEMARK OR REGISTERED TRADEMARK OF THE ATARI CORPORATION, AND"
3000 DATA "  MS-DOS IS A REGISTERED TRADEMARK OF MICROSOFT INC.)"," "," "
3010 DATA " DBASIC INCORPORATES THE ADVANCEMENTS OF MS-DOS 3.X WITH RESPECT TO SUPPRESSION"
3020 DATA " OF FRAGMENTATION, BUT GOES EVEN FURTHER.  WE HATE TO SOUND LIKE A BROKEN"
3030 DATA " RECORD, BUT THIS really is COVERED IN DETAIL IN THE 288 PAGE DBASIC MANUAL."," "
3040 DATA " THIS isn't IN THE MANUAL:"," "
3050 DATA " WHEN DBASIC IS BOOTED, IT LOOKS IN THE BOOT DISK'S CATALOG FOR A PROGRAM"
3060 DATA " NAMED 'DTACK', AND IF THERE IS ONE, IT LOADS THAT PROGRAM AND RUNS IT."," "
3070 DATA " THE REASON THIS IS NOT DOCUMENTED IN THE MANUAL IS THAT IT IS A FEATURE WHICH"
3080 DATA " WAS ADDED after THE MANUALS WERE ALREADY DELIVERED !"," "," "
3090 DATA " DBASIC COMES WITH THESE DISK UTILITY PROGRAMS:"," "
3100 DATA " 1:  BACKUP"," 2:  COPY"," 3:  FORMAT"," 4:  SSTODS"," 5:  DSTOSS"," 6:  DISKPRIM"," "
3110 DATA " FOLLOWING IS A BRIEF DESCRIPTION OF THESE UTILITIES:"," "," "
3120 DATA " THE 'BACKUP' UTILITY CREATES AN EXACT COPY OF THE (DBASIC) SOURCE DISK."
3130 DATA " 'BACKUP' WILL RUN ON A ONE-DRIVE SYSTEM, BUT YOU CANNOT BACKUP A DOUBLE-SIDED"
3140 DATA " DISKETTE UNLESS YOU HAVE A DOUBLE-SIDED DRIVE AND A MEGABYTE OF RAM."
3150 DATA " THIS UTILITY WILL OPTIONALLY FORMAT THE DESTINATION DISKETTE IF NECESSARY."," "," "
3160 DATA " THE 'COPY' UTILITY COPIES ALL OF THE UNSCRATCHED FILES FROM THE SOURCE DISK"
3170 DATA " TO THE DESTINATION DISK.  IN SO DOING, FILES ARE COPIED IN CONTIGUOUS"
3180 DATA " ASCENDING SECTOR ORDER, WHICH completely eliminates FRAGMENTATION ON THE"
3190 DATA " RESULTING COPIED DISKETTE.  'COPY' WILL RUN ON A ONE-DRIVE SYSTEM, BUT YOU"
3200 DATA " CANNOT COPY A DOUBLE-SIDED DISKETTE UNLESS YOU HAVE A DOUBLE-SIDED DRIVE AND"
3210 DATA " A MEGABYTE OF RAM.  THIS UTILITY WILL OPTIONALLY FORMAT THE DESTINATION"
3220 DATA " DISKETTE IF NECESSARY."," "," "
3230 DATA " THE 'FORMAT' UTILITY PROVIDES A MEANS OF CREATING A 'BLANK' DBASIC DISK.  THE"
3240 DATA " NEWLY CREATED BLANK DISK CAN BE EITHER A DATA DISK OR A SYSTEM DISK  (O.K.,"
3250 DATA " SO A SYSTEM DISK isn't COMPLETELY BLANK - SUE US !).  IF YOU NEED A NEW SYSTEM"
3260 DATA " DISK WITH NO PROGRAMS ON IT, THIS UTILITY CAN SAVE A LOT OF SCRATCHING AND"
3270 DATA " COPYING..."
3280 ;
3290 DATA " SOME ATARI STs HAVE SINGLE-SIDED DRIVES, AND SOME HAVE DOUBLE-SIDED DRIVES."
3300 DATA " WE HAVE TO HAVE A MEANS FOR ST OWNERS TO EXCHANGE THESE DISKS.  SO, WE HAVE"
3310 DATA " GOOD NEWS AND BAD NEWS.  THE GOOD NEWS IS THAT DBASIC COMES WITH TWO UTILITY"
3320 DATA " PROGRAMS DESIGNED FOR THIS SPECIFIC PURPOSE.  THE BAD NEWS IS THAT YOU CAN'T"
3330 DATA " RUN EITHER PROGRAM UNLESS YOU HAVE A DOUBLE-SIDED DRIVE and A MEGABYTE OF RAM."," "
3340 DATA " NATURALLY, YOU CAN ONLY COPY AS MANY CATALOG FILES FROM A DOUBLE-SIDED DISK TO"
3350 DATA " A SINGLE-SIDED DISK AS THE SINGLE-SIDED DISK HAS ROOM FOR.  SO THESE UTILITY"
3360 DATA " PROGRAMS WILL STOP COPYING FILES, IF NECESSARY, TO AVOID OVERFLOWING THE"
3370 DATA " SINGLE-SIDED DISK."," "
3380 DATA " THE UTILITY PROGRAM 'SSTODS' COPIES SINGLE-SIDED DISKS, EITHER DATA OR SYSTEM,"
3390 DATA " TO A DOUBLE-SIDED DISKETTE.  THE UTILITY PROGRAM 'DSTOSS' COPIES DOUBLE-SIDED"
3400 DATA " DISKS, EITHER DATA OR SYSTEM, TO A SINGLE-SIDED DISKETTE."," "
3410 DATA " TO ANSWER THE OBVIOUS QUESTION:  520ST OWNERS WHO HAVE UPGRADED TO A DOUBLE-"
3420 DATA " SIDED DRIVE HAVE THREE CHOICES:  1) THEY CAN STICK WITH THE BASIC WHICH CAME"
3430 DATA " FREE WITH THEIR COMPUTER.  2) THEY CAN RUN DBASIC, BUT ONLY USING SINGLE-SIDED"
3440 DATA " DISKETTES ON THEIR DOUBLE-SIDED DRIVE.  3) THEY CAN UPGRADE THEIR MEMORY TO A"
3450 DATA " MEGABYTE.  (LET'S SEE NOW:  DID WE LEAVE OUT THE PART ABOUT RUNNING ACROSS THE"
3460 DATA " STREET AND USING THEIR FRIEND'S 1040ST WHENEVER THEY NEEDED TO COPY A DISK ?)"
3470 ;
3480 DATA " THERE IS ONE FINAL DISK UTILITY PROVIDED WITH DBASIC, NAMED 'DISKPRIM'.  THIS"
3490 DATA " UTILITY ALLOWS YOU TO READ OR WRITE ANY GIVEN SECTOR ON EITHER A TOS DISK OR A"
3500 DATA " DBASIC DISK.  THIS WILL BE USEFUL TO THOSE FOLK WHO, FOR WHATEVER REASON, WANT"
3510 DATA " TO MOVE FILES FROM DBASIC TO MODULA-2 OR ADA, OR VICE-VERSA."," "
3520 DATA " AS WE HAVE MENTIONED PREVIOUSLY, BASIC PROGRAMMERS PROGRAM EXCLUSIVELY IN"
3530 DATA " BASIC OR ASSEMBLY, AND DBASIC'S DOS IS completely COMPATIBLE WITH BOTH DBASIC"
3540 DATA " AND WITH ASSEMBLY LANGUAGE AND MACHINE CODE."," "
3550 DATA " YOU ARE GOING TO HEAR A LOT OF BACKBITING, GRIPING, AND MOANING FROM THE FOLK"
3560 DATA " WHO PROGRAM IN real COMPUTER LANGUAGES (YOU KNOW:  ADA, LISP, MODULA-2, C...)"
3570 DATA " BECAUSE DBASIC IS NOT COMPATIBLE WITH THE DOS their LANGUAGE HAS TO USE.  YOU"
3580 DATA " DON'T SUPPOSE THEY'RE JUST JEALOUS BECAUSE their DOS IS TWICE AS SLOW, AND"
3590 DATA " their DISKS HOLD 10% LESS DATA?"," "
3600 DATA " QUESTION:  WOULD YOU VOLUNTARILY USE SCISSORS TO CUT AWAY 10% OF THE RECORDING"
3610 DATA " SURFACE OF your DISKETTES ?  WOULD YOU VOLUNTARILY POUR GUNK INTO THE CASES OF"
3620 DATA " YOUR DISKETTES SO THEY COULD ONLY ROTATE AT HALF SPEED ?  IF YOUR ANSWER TO"
3630 DATA " THESE QUESTIONS IS 'YES', THEN US DTACK FOLK STRONGLY RECOMMEND THAT YOU STICK"
3640 DATA " WITH WONDERFUL ST BASIC, BECAUSE its DOS HAS EXACTLY THE QUALITIES YOU ARE"
3650 DATA " OBVIOUSLY LOOKING FOR !"
3660 ;
3670 DATA " ONE OF THE FOLKS WHO WANTED TO LOAD A TOS FILE INTO THE DBASIC ENVIRONMENT IS"
3680 DATA " JAMES, WHO IS THE #2 DBASIC IMPLEMENTOR.  JAMES WAS USING A LASER-DISK PLAYER"
3690 DATA " TO VIEW SOME NASA DOCUMENTARIES, AND HE HAD THIS GADGET/PROGRAM CALLED"
3700 DATA " 'Computer Eyes'.  SO HE DECIDED TO ACTUALLY use DISKPRIM."," "
3710 DATA " IT TOOK HIM 15 MINUTES TO DIGITIZE A LORES PICTURE OF THE EARTH INTO A LORES"
3720 DATA " Degas TOS FILE.  THAT'S THE GOOD NEWS."," "
3730 DATA " THE BAD NEWS IS THAT IT TOOK TWO HOURS TO FIGURE OUT HOW TO GET THE TOS FILE"
3740 DATA " SAVED ONTO A DBASIC DISK AS A DBASIC BINARY FILE.  MOST OF THAT TIME WAS SPENT"
3750 DATA " LEARNING THE STRUCTURE OF THE TOS DIRECTORY (WHICH IS NOT NICELY DOCUMENTED"
3760 DATA " IN AN INCLUDED MANUAL THE WAY DBASIC'S DOS IS).  AND THERE IS THE TOS FAT"
3770 DATA " (File Allocation Table) WHICH GAVE JAMES THE MOST TROUBLE OF ALL.  IT SEEMS"
3780 DATA " THAT THE FAT IS SAVED ON DISK IN 8086 STYLE, WHICH MEANS THE BYTES IN EACH"
3790 DATA " WORD ARE REVERSED.  AND THEN THERE ARE 12 BITS PER FAT ENTRY, WHICH MEANS"
3800 DATA " THREE BYTES ARE USED PER TWO FAT ENTRIES.  STILL, JAMES GOT THE JOB DONE IN"
3810 DATA " TWO HOURS.  IN HIS WORDS:"," "
3820 DATA " At 1:00 AM the program was crude but worked.  It first read the directory of"
3830 DATA " the TOS disk, absolute sector numbers 11 through 17.  It then searched the TOS"
3840 DATA " directory for the file 'EARTH.PI1'.  Once the file was found it read the FAT"
3850 DATA " absolute sector numbers 1 through 5 and 6 through 10.  Using the information"
3860 DATA " in the directory and the FAT it created an array of absolute sector numbers"
3870 DATA " which make up the file.  At that point the program read in each sector of the"
3880 DATA " TOS file to memory starting at $40000 and then did a:"
3890 DATA "                              BSAVE EARTH_pic,$40000,$8022"
3900 DATA " I don't know what the first word of the Degas file 'EARTH.PI1' is but the next"
3910 DATA " 16 words represent the palette settings for the picture and the next 32000"
3920 DATA " bytes make up the picture."," "
3930 DATA " JAMES TELLS ME THAT THE FOLLOWING TWO BOOKS PROVIDED INVALUABLE INFORMATION:"," "
3940 DATA " 'The Peter Norton Programmer's Guide to the IBM PC', Microsoft Press,"
3950 DATA " PAGES 120-121."," "
3960 DATA " 'ST Disk Drives:  Inside and Out', Abacus Software, Inc,  PAGES 65-69."," "
3970 DATA " PERSONALLY, I THINK THAT'S A LOT OF WORK TO GET A LOUSY PICTURE FROM A TV SET"
3980 DATA " ONTO A DBASIC DISK.  BUT IT is POSSIBLE USING DISKPRIM.  JAMES PROVED IT !"," "
3990 ;
4000 ;
4010 ;
4020 DATA " DBASIC WAS NOT, REPEAT NOT, WRITTEN FOR THE ATARI ST.  IT BEGAN 'WAY BACK IN"
4030 DATA " THE SUMMER OF 1981, WHEN THE PREDECESSOR COMPANY TO DTACK GROUNDED GOT A"
4040 DATA " SIMPLE 68000 PROCESSOR UP AND RUNNING.  THERE ARE NOW ABOUT SEVEN MAN-YEARS"
4050 DATA " OF EFFORT WHICH HAVE BEEN INVESTED IN DBASIC AND ITS MANUAL, AND A LOT OF THAT"
4060 DATA " EFFORT WAS EXPENDED BACK WHEN KINDLY UNCLE JACK WAS STILL RUNNING COMMODORE."," "
4070 DATA " DBASIC'S PRINCIPAL PROGRAMMER THINKS KINDLY UNCLE JACK SHOULD HAVE LEFT THE"
4080 DATA " MACKINTOSH STUFF FOR THE YUPPIES WHO LIKE MICE BECAUSE THEY CAN STILL HOLD A"
4090 DATA " PERRIER-AND-WATER (ON THE ROCKS) IN THEIR OTHER HAND.  BUT HE DIDN'T, AND SO"
4100 DATA " THE ST COMES WITH wonderful GEM (LONG PAUSE FOR APPLAUSE TO SUBSIDE)."," "
4110 DATA " MOST OF YOU KNOW WHAT A GOOD 8-BIT BASIC CAN DO, BECAUSE MOST OF YOU USED TO"
4120 DATA " HAVE AN 8-BIT MACHINE.  AND SO YOU KNOW THAT ST BASIC, FOR EXAMPLE, ISN'T MUCH"
4130 DATA " FASTER THAN YOUR OLD 8-BIT BASIC, AND IN SOME WAYS IT'S SLOWER.  WHY?"," "
4140 DATA " FOR SEVERAL REASONS.  FOR ONE THING, MEMORY WAS TERRIBLY EXPENSIVE BACK WHEN"
4150 DATA " THE 8-BIT MACHINES WERE ORIGINALLY INTRODUCED.  SO THE BASIC WHICH RAN ON"
4160 DATA " THOSE MACHINES HAD TO BE AS COMPACT AS POSSIBLE, AND THAT MEANT THOSE BASICS"
4170 DATA " HAD TO BE WRITTEN IN ASSEMBLY LANGUAGE.  AND ASSEMBLY LANGUAGE IS THE FASTEST"
4180 DATA " THERE IS, NO MATTER WHAT SOME WHACKO COMPUTER SCIENCE TYPES WANT TO TELL YOU."," "
4190 ;
4200 DATA " (REMEMBER, THOSE SAME COMPUTER SCIENTISTS ASSERT THAT PROGRAMMING IN BASIC"
4210 DATA " CAUSES BRAIN DAMAGE.)"," "
4220 DATA " AND SO THAT'S WHY THOSE 8-BIT BASICS WERE PRETTY FAST:  THEY WERE PROGRAMMED"
4230 DATA " IN ASSEMBLY.  NOT BECAUSE THE (GENERIC) KINDLY UNCLE JACKS CARED ABOUT SPEED,"
4240 DATA " BUT BECAUSE THEY CARED DEEPLY ABOUT THE MONEY THEY SAVED BY HAVING SMALLER"
4250 DATA " MEMORIES !"," "," "
4260 DATA " THERE'S MORE:  YOU HAVE PROBABLY FORGOTTEN THAT THE EARLIEST 8-BIT MACHINES"
4270 DATA " DIDN'T HAVE VERY COMPLETE BASICs.  IT TAKES A long TIME TO DEVELOP A GOOD"
4280 DATA " ASSEMBLY-BASED BASIC, SO THE EARLY BASICS LACKED A LOT OF THE FEATURES WHICH"
4290 DATA " BECAME MORE STANDARD AFTER SEVERAL YEARS.  BUT now THE 8-BIT MACHINES do HAVE"
4300 DATA " THOSE FEATURES, AND SO THE MAKERS OF MODERN MICROCOMPUTERS (BASED ON THE"
4310 DATA " 68000) HAD TWO CHOICES:  THEY COULD IGNORE BASIC, OR THEY COULD GET A BASIC"
4320 DATA " WRITTEN AND DELIVERED BY 3:00 PM yesterday AFTERNOON."," "
4330 DATA " THE APPLE COMPUTER CO. TOOK THE FIRST CHOICE AND IGNORED BASIC.  APPLE NEVER"
4340 DATA " PROVIDED A BASIC FOR LISA (REMEMBER LISA ?), AND IT still DOESN'T PROVIDE A"
4350 DATA " BASIC WITH THE MACKINTOSH, EVEN THOUGH THE MACKINTOSH IS NOW GETTING LONG IN"
4360 DATA " THE TOOTH."
4370 ;
4380 DATA " BOTH COMMODORE, WITH THE AMIGA, AND ATARI, WITH THE ST, DECIDED TO PROVIDE"
4390 DATA " A BASIC WITH THEIR MACHINES.  THAT MEANT THAT TO SELL A PIECE OF HARDWARE"
4400 DATA " (THE AMIGA OR ST), THEY FIRST HAD TO HAVE A BASIC.  AND THAT MEANT they had"
4410 DATA " to have a BASIC at 3:00 pm yesterday!  (AND YOU THOUGHT WE WERE KIDDING !)"," "
4420 DATA " HOW DO YOU GET A BASIC YESTERDAY AFTERNOON ?  WELL, YOU SURE AS HECK DON'T"
4430 DATA " WRITE IT IN ASSEMBLY LANGUAGE !"," "
4440 DATA " IN FACT, BOTH THE ORIGINAL AMIGA BASIC AND THE WELL-KNOWN (TO YOU) ST BASIC"
4450 DATA " WERE BOTH WRITTEN IN A THIRD-WORLD COUNTRY (CHEAP LABOR SINCE PEOPLE RIDE"
4460 DATA " BICYCLES, NOT CARS).  AND TO GET THOSE BASICS WRITTEN IN A BIG HURRY, THEY"
4470 DATA " WERE WRITTEN IN A HIGH LEVEL LANGUAGE;  IN THIS CASE 'BCPL'."," "
4480 DATA " THIS BRINGS US TO A MAJOR CONTROVERSY:  AMIGA FOLK INSIST THAT THE ORIGINAL"
4490 DATA " AMIGA BASIC HAS TO BE THE WORLD'S WORST BASIC EVER, WHILE ST AFICIANDOS INSIST"
4500 DATA " THAT ST BASIC HOLDS PRIDE OF PLACE..."," "
4510 DATA " MOST AMIGA AND ST FOLK DON'T REALIZE THAT both OF THOSE BASICS WERE WRITTEN BY"
4520 DATA " THE same company IN THAT THIRD-WORLD COUNTRY !  (YOU SHOULD NOT BELIEVE FOR A"
4530 DATA " MOMENT THAT DRI WROTE ST BASIC;  WHAT THEY DID WAS BUY IT FROM THAT OTHER"
4540 DATA " COMPANY, AND THEN ATARI BOUGHT IT FROM DRI.)"
4550 ;
4560 DATA " IF YOU WANT A BASIC TO BE COMPACT YOU WRITE IT IN ASSEMBLY.  IF YOU WANT IT TO"
4570 DATA " BE FAST YOU WRITE IT IN ASSEMBLY.  IF YOU WANT IT YESTERDAY AFTERNOON, YOU"
4580 DATA " HAVE A COMMITTEE WRITE IT IN A HIGH LEVEL LANGUAGE.  BOTH COMMODORE AND ATARI"
4590 DATA " NEEDED A BASIC YESTERDAY AFTERNOON..."," "
4600 DATA " DBASIC IS WRITTEN COMPLETELY IN ASSEMBLY LANGUAGE.  THAT MEANS IT TOOK A LONG"
4610 DATA " TIME TO WRITE, WHICH MEANS IT WAS A GOOD THING WE STARTED WRITING IT IN 1981 !"
4620 DATA " WHILE MORE THAN ONE PERSON HAS WORKED ON DBASIC - THERE ARE CURRENTLY two"
4630 DATA " PROGRAMMERS WORKING ON IT, FOR EXAMPLE - one PERSON HAS ALWAYS BEEN THE LEAD"
4640 DATA " PROGRAMMER, AND HE HAS ALWAYS HAD THE FINAL SAY IN HOW DBASIC DOES, OR DOES"
4650 DATA " NOT, WORK.  IT HELPED A LOT THAT THIS GUY OWNS THE COMPANY AND PERSONALLY"
4660 DATA " PROVIDED ALL OF THE FUNDS TO DEVELOP (AND LATELY, TO MARKET) DBASIC."," "
4670 DATA " THE ALTERNATIVE IS TO HAVE THE BOSS AND/OR THE MONEY BACKER NOT KNOWING WHAT A"
4680 DATA " PROGRAM IS, HMMM ?"," "
4690 DATA " ANOTHER WAY OF LOOKING AT IT IS THAT BY SPENDING YOUR OWN TIME AND MONEY YOU"
4700 DATA " GET TO MAKE YOUR VERY OWN MISTAKES."," "
4710 DATA " IS DBASIC, WHICH IS FAST BUT WHICH TOTALLY IGNORES TOS AND GEM, A MISTAKE ?"," "
4720 ;
4730 DATA " you (COLLECTIVELY SPEAKING) GET TO CHOOSE !  WE HAVE CHOSEN TO RELEASE DBASIC"
4740 DATA " IN SUCH A WAY THAT EVERYBODY WHO WANTS TO USE IT can USE IT, AND WITHOUT"
4750 DATA " PAYING US A DIME !  IF YOU don't USE DBASIC, THEN WE MADE A MISTAKE.  MAYBE"
4760 DATA " WE should HAVE USED TOS AND GEM AND A HIGH LEVEL LANGUAGE TO PRODUCE YET"
4770 DATA " ANOTHER SLOW 68000 BASIC.  OR MAYBE WE SHOULD HAVE INVESTED IN A PIZZA PARLOR."," "
4780 DATA " THE BASICs WHICH ARE SUCCESSFUL ARE THE ONES WHICH LOTS OF PEOPLE USE;  THE"
4790 DATA " ONES THAT AREN'T SUCCESSFUL ARE THE ONES THAT DON'T GET USED.  OBVIOUSLY, WE"
4800 DATA " WANT PEOPLE TO USE DBASIC."," "
4810 DATA " IN FACT, giving you a choice IS WHAT DBASIC IS ALL ABOUT.  IF YOU HAPPEN TO BE"
4820 DATA " A FAN OF TRASH-CAN ICONS AND PULL-DOWN WINDOWS, WHICH DBASIC DEFINITELY DOES"
4830 DATA " NOT HAVE, CONTINUING TO USE WONDERFUL ST BASIC IS CERTAINLY AN AVAILABLE"
4840 DATA " ALTERNATIVE TO DBASIC, AND ST BASIC IS FREE AS WELL.  (SOME FOLKS THINK IT"
4850 DATA " IS ALMOST WORTH THAT MUCH.)  IN FACT we GAVE ST BASIC A TRY ONCE, BUT QUIT"
4860 DATA " USING IT WHEN WE DISCOVERED THAT IT WAS OVER 100 TIMES SLOWER THAN OUR OWN"
4870 DATA " BASIC (DBASIC) AT THE BYTE MAGAZINE 'SIEVE' BENCHMARK!"," "," "
4880 DATA " YOU WANT TO KNOW THE DETAILS OF OUR MARKETING STRATEGY ?  IF SO, READ ON."," "
4890 ;
4900 DATA " DBASIC IS FOR THE MASSES, NOT FOR THE CLASSES.  WE STOLE THAT STRATEGY FROM"
4910 DATA " KINDLY UNCLE JACK.  ANYHOW, THE CLASSES ARE GOING TO PROGRAM IN MODULA-2, ADA,"
4920 DATA " LISP:  LANGUAGES LIKE THAT.  THE FERRARI MOTOR CAR COMPANY WANTS TO MAKE A LOT"
4930 DATA " OF MONEY FROM A VERY FEW PEOPLE;  THE WOMEN'S STOCKING MANUFACTURERS WANT TO"
4940 DATA " MAKE A LITTLE MONEY FROM EACH OF A WHOLE LOT OF PEOPLE.  WE'RE PHILOSOPHICALLY"
4950 DATA " ALIGNED WITH THE STOCKING MANUFACTURERS."," "
4960 DATA " WE THINK THERE ARE 200,000 ST OWNERS IN THE U.S. AS OF 1 JUL '87.  THAT NUMBER"
4970 DATA " SHOULD DOUBLE BY 1 JUL '88, BUT LET'S CONCENTRATE ON THOSE 200,000 FOR NOW."
4980 DATA " WE THINK 30% OF THOSE ST OWNERS PROGRAM IN BASIC, OR WOULD IF A SUITABLE"
4990 DATA " BASIC WERE AVAILABLE.  WE BELIEVE ANOTHER 30% ARE potential BASIC PROGRAMMERS,"
5000 DATA " BUT THEY WILL NEED TO SEE SOME PIONEER WORK BY THEIR FRIENDS, AND MAYBE SOME"
5010 DATA " INITIAL HANDHOLDING.  ANYHOW, WE ARE CONCENTRATING ON THAT FIRST 30% FOR NOW."
5020 DATA " 30% OF 200,000 IS 60,000 BASIC PROGRAMMERS."," "
5030 DATA " THOSE 60,000 PROGRAMMERS NEED A GOOD INTERACTIVE BASIC.  WE DON'T THINK A"
5040 DATA " COMPILED BASIC CAN APPEAL TO THE MASS MARKET ANY MORE THAN FERRARI IS GOING TO"
5050 DATA " OUTSELL CHEVROLET (WE ARE NOT IMPLYING THAT FERRARIS OR COMPILED BASICS ARE"
5060 DATA " NOT, FOR SOME FOLKS, WORTHWHILE).  WE THINK 'GOOD' MEANS 'FAST, WITH ACCURATE"
5070 DATA " FLOATING-POINT MATH'.  IF - if - WE ARE RIGHT, THEN WE HAVE A GOOD INTERACTIVE"
5080 DATA " BASIC.  ON THE NEXT PAGE, WE LOOK AT THE COMPETITION:"
5090 ;
5100 DATA " WE THINK OUR ONLY COMPETITION IS ANOTHER INTERACTIVE BASIC AT A REASONABLE"
5110 DATA " PRICE.  ST BASIC HAS THE BEST PRICE;  IT COMES FREE WITH YOUR ST.  BUT IT IS"
5120 DATA " AWFULLY SLOW AND HAS THOSE *#%@!^& WINDOWS !  STILL... IT'S FREE."," "
5130 DATA " GFA BASIC, THE INTERACTIVE VERSION, COMES FROM WEST GERMANY.  WE HAVE SOME"
5140 DATA " NEWSLETTER READERS IN WEST GERMANY, AND WE HEAR GOOD THINGS ABOUT THIS BASIC."
5150 DATA " LIKE SOME OTHER MODERN BASICS, GFA'S INTERFACE IS LIKE PASCAL:  NO LINE"
5160 DATA " NUMBERS, AND ONE STATEMENT PER LINE.  WE HAVE HEARD THAT THE ENGLISH TRANS-"
5170 DATA " LATION OF THE MANUAL IS LESS THAN SPIFFY.  GFA BASIC IS PRETTY FAST, IF NOT AS"
5180 DATA " FAST AS DBASIC.  IT USES SIX-BYTE FLOATING POINT FORMAT, WHICH IS LOTS BETTER"
5190 DATA " THAN THE 4-BYTE TOY F.P.s USED BY MOST ST BASICs, BUT NOT AS ACCURATE AS THE"
5200 DATA " 8-BYTE FORMAT WE USE.  GFA BASIC IS CLEARLY THE STRONGEST COMPETITION DBASIC"
5210 DATA " HAS THAT ISN'T FREE.  INTERPRETIVE GFA BASIC LISTS AT $79.95 AND DOES NOT"
5220 DATA " INCLUDE AN ASSEMBLER AS A DEMO PACKAGE."," "
5230 DATA " DBASIC'S USER INTERFACE IS JUST LIKE THE OLD 8-BIT BASICS.  IT USES LINE"
5240 DATA " NUMBERS, MULTIPLE STATEMENTS PER LINE, AND A COMMAND LINE INTERFACE.  NO MOUSE"
5250 DATA " OR WINDOWS.  IT USES DOUBLE-PRECISION (8-BYTE) FLOATING POINT, EVEN FOR THE"
5260 DATA " TRANSCENDENTAL FUNCTIONS (EXP, TAN ETC).  AN INCREMENTAL COMPILER, DBASIC IS"
5270 DATA " CLEARLY THE FASTEST AVAILABLE INTERACTIVE ST BASIC.  DBASIC COSTS $39.95 AND"
5280 DATA " INCLUDES AN ASSEMBLER AS A DEMO PACKAGE."
5290 ;
5300 DATA " FRANKLY, WE THINK THAT'S THE COMPETITION:  FREE ST BASIC, PASCAL-LIKE GFA, OR"
5310 DATA " DINOSAUR-LIKE DBASIC."," "
5320 DATA " THERE ARE SOME OTHER ST BASICS, BUT THEY ARE EITHER COMPILERS OR THEY ARE (IN"
5330 DATA " OUR OPINION) OVERPRICED.  BUT HECK, THAT'S JUST OUR OPINION.  A FREE CHOICE IS"
5340 DATA " WHAT THE MARKETPLACE IS ALL ABOUT AND YOU MIGHT THINK DIFFERENTLY."," "
5350 DATA " BACK TO THOSE 60,000 BASIC PROGRAMMERS IN THE U.S. WHO CURRENTLY OWN STs:  WE"
5360 DATA " THINK SOME OF THEM WILL STICK WITH FREE ST BASIC, OR PERHAPS REFUSE TO BUY A"
5370 DATA " THIRD-PARTY BASIC AND SO JUST 'HANG IT UP'.  THE FOLKS WHO LIKE THE PASCAL"
5380 DATA " ENVIRONMENT WILL PROBABLY OPT FOR GFA BASIC.  WE THINK A LOT OF THE FOLK WITH"
5390 DATA " 8-BIT BASIC BACKGROUNDS WILL LIKE OUR DINOSAUR APPROACH, ESPECIALLY WHEN THEY"
5400 DATA " DISCOVER JUST EXACTLY HOW FAST OUR DINOSAUR IS."," "
5410 DATA " BUT MARKETING IS ABOUT NUMBERS:  HOW MANY OF THOSE 60,000 WILL BUY DBASIC ?"
5420 DATA " OUR CRYSTAL BALL IS OVERDUE FOR CALIBRATION;  WE DUNNO.  SO WE ARE DOING SOME"
5430 DATA " THINGS THE OTHER THIRD-PARTY BASIC VENDORS AREN'T IN ORDER TO IMPROVE OUR"
5440 DATA " CHANCES.  WE INITIALLY GAVE AWAY OVER 6,000 DBASIC MANUALS JUST SO WE COULD"
5450 DATA " BECOME KNOWN.  (IT DOESN'T DO ANY GOOD TO HAVE A TERRIFIC DINOSAUR, ER, BASIC"
5460 DATA " IF NOBODY KNOWS ABOUT IT.)  NO, WE WON'T GIVE you A FREEBIE, YOU ARE ONE OF"
5470 DATA " THE 193,000 FOLKS WHO didn't GET A FREE MANUAL.  WE GOTTA MAKE A LIVING, TOO !"
5480 ;
5490 DATA " WE ARE ALSO GIVING AWAY A lot OF FREE AUTHORIZED COPYRIGHTED DBASIC DISKETTE"
5500 DATA " LABELS, SO EVEN THOSE WHO DIDN'T GET A FREE MANUAL CAN LEGALLY GET A COPY OF"
5510 DATA " THE DBASIC DISK (this DBASIC DISK) FROM THEIR FRIENDS TO TRY OUT.  WE ALREADY"
5520 DATA " HAVE OVER 65,000 OF THESE LABELS PRINTED UP, AND WE WILL BE PRINTING LOTS MORE"
5530 DATA " IN THE NEXT YEAR.  OUR INITIAL DISTRIBUTION OF THESE LABELS WAS VIA OUR OLD"
5540 DATA " NEWSLETTER MAILING LIST AND THE ATARI USER GROUPS.  IN THE FUTURE, WE'LL SEND"
5550 DATA " SOME EXTRA LABELS TO EACH DBASIC BUYER (ASSUMING THERE will BE DBASIC BUYERS,"
5560 DATA " SOMETHING WHICH IS NOT PROVEN AS THIS IS WRITTEN !)."," "
5570 DATA " FINALLY, WE HOPE FOLKS WILL LIKE THE INCLUDED 68000 ASSEMBLER DEMO.  AS FAR AS"
5580 DATA " WE KNOW, IT'S THE FASTEST FLOPPY-BASED 68000 ASSEMBLER IN EXISTENCE !  WE KNOW"
5590 DATA " FOR A FACT THAT IT vastly OUTSTRIPS THE ASSEMBLER WHICH COMES WITH THE $300"
5600 DATA " ATARI DEVELOPMENT PACKAGE.  (TOO BAD IT'S FOR HUMAN PROGRAMMERS ONLY AND CAN'T"
5610 DATA " BE USED WITH COMPILERS.)"," "
5620 DATA " SLOGAN.  WE NEED A SLOGAN.  'COME RIDE OUR DINOSAUR' ?  NAH.  'FLY OUR SUPER-"
5630 DATA " SONIC PTERODACTYL' ?  MAYBE.  THEY GOT SUPERSONIC HELICOPTERS ON TV AND IF"
5640 DATA " FOLKS WILL BELIEVE THAT, THEY'LL BELIEVE SUPERSONIC PTERODACTYLS.  (RHODAN ?)"
5650 DATA " 'ALLEY OOP SOFTWARE' ?  NO, SOMEBODY OWNS THE COPYRIGHT TO 'ALLEY OOP'..."," "
5660 DATA " NEXT PAGE:  DBASIC AND (UGH!) GEM."
5670 ;
5680 DATA " DBASIC IS A COMPLETELY SELF-CONTAINED PROGRAMMING ENVIRONMENT.  IT IS not"
5690 DATA " RELOCATABLE AND cannot BE RUN AS A TASK UNDER TOS AND GEM."," "
5700 DATA " DBASIC REQUIRES THE SAME 'REAL ESTATE' (MEMORY LOCATIONS) THAT TOS AND GEM"
5710 DATA " USE.  SPECIFICALLY, DBASIC RESIDES IN THE 68000'S 'ZERO PAGE', WHICH IS $0000-"
5720 DATA " $7FFF.  IF YOU CALL ANY TOS OR GEM FUNCTIONS FROM THE DBASIC ENVIRONMENT, BOTH"
5730 DATA " TOS AND GEM ALSO USE THAT SAME MEMORY SPACE.  IF YOU ARE LUCKY, DBASIC WILL"
5740 DATA " immediately BE BOMBED, SO YOU WILL IMMEDIATELY KNOW THAT YOU GOOFED.  MURPHY'S"
5750 DATA " STILL AROUND, SO YOU WILL PROBABLY BE UNLUCKY AND NOT REALIZE YOUR GOOF FOR"
5760 DATA " WEEKS, WHEN YOU RELOAD FROM DISK WHAT YOU THOUGHT AT THE TIME WAS GOOD DATA !"
5770 DATA " don't TRY TO USE TOS AND GEM FROM DBASIC (OR DBASIC FROM TOS AND GEM) !"," "
5780 DATA " (IF YOU LIKE TOS AND GEM, WE STRONGLY RECOMMEND THE USE OF ST BASIC.)"," "
5790 ;
5800 DATA " RECOGNIZING HOW MANY FOLK WILL BE USING DBASIC (WITH OUR BLESSING) WHO HAVE"
5810 DATA " NOT PAID FOR IT, AND RECOGNIZING HOW LITTLE PROFIT THERE IS IN A $39.95 PRICE"
5820 DATA " TAG, WE ARE not GOING TO PROVIDE SUPPORT FOR OUR BASIC.  WE WON'T ANSWER"
5830 DATA " QUESTIONS EITHER OVER THE PHONE OR VIA MAIL.  IF YOU ARE THE SORT TO DEMAND"
5840 DATA " SUPPORT FOR YOUR $39.95 (OR FOR YOUR FREE MANUAL OR DISK), THAT IS YOUR"
5850 DATA " PRIVILEGE - BUT YOU'LL HAVE TO DO BUSINESS WITH A COMPANY WHICH IS LIKE-"
5860 DATA " MINDED.  THE 'KELLEY PERSONS' MANNING (PERSONING) OUR ORDER LINE ARE NOT EVEN"
5870 DATA " ALLOWED TO KEEP MESSAGE PADS AT THEIR DESK !"," "
5880 DATA " IF YOU THINK WE ARE JUST awful BECAUSE OF THIS POLICY, WE AIN'T GONNA ARGUE."
5890 DATA " AFTER ALL, THERE'S STILL LOTS OF FOLK AROUND WHO BELIEVE THERE IS SUCH A THING"
5900 DATA " AS A FREE LUNCH !"," "
5910 DATA " WE ALSO RECOGNIZE THAT THERE ARE SOME FOLK WHO NEED HELP GETTING STARTED - THE"
5920 DATA " SECOND 30% WE MENTIONED A WHILE BACK.  THESE PEOPLE HONESTLY, SINCERELY, need"
5930 DATA " TO HAVE SOME QUESTIONS ANSWERED.  WELL, WE are JUST AWFUL !  WE WON'T HELP"
5940 DATA " THESE DESERVING FOLKS OUT, EITHER.  AND, JUST TO MAKE THE RECORD COMPLETE, WE"
5950 DATA " PASSED UP AN OPPORTUNITY TO JOIN THE PEACE CORPS A COUPLE OF DECADES BACK, AND"
5960 DATA " WE PASS UP AN OPPORTUNITY TO DONATE ALL OUR WORLDLY POSSESSIONS TO CHARITY"
5970 DATA " EACH AND EVERY DAY."," "
5980 ;
5990 DATA " HERE'S HOW YOU CAN UPDATE YOUR DBASIC:"," "," "
6000 DATA " WE HAVE PURPOSEFULLY LEFT A VERSION NUMBER OFF THE COPYRIGHTED DBASIC LABEL."
6010 DATA " THAT MEANS THAT YOU CAN LEGALLY HAVE any VERSION OF DBASIC ON YOUR LEGALLY"
6020 DATA " COPYRIGHTED DISKETTE.  AND THAT MEANS THAT WHEN A NEIGHBOR OR SOMEBODY IN YOUR"
6030 DATA " USER GROUP GETS HOLD OF THE LATEST VERSION OF DBASIC, THAT PERSON CAN legally"
6040 DATA " PROVIDE YOU WITH A COPY OF THAT LATEST VERSION.  THAT MEANS NEXT WEEK, NEXT"
6050 DATA " MONTH, NEXT YEAR."," "
6060 DATA " MANUALS ?  WE sell THOSE.  IF, LIKE A CERTAIN SPREADSHEET COMPANY, WE SOLD OUR"
6070 DATA " MANUALS FOR $495, WE COULD SELL UPGRADES FOR 30% OF THE PURCHASE PRICE.  WE'LL"
6080 DATA " DO THAT FOR OUR CUSTOMERS TOO.  THAT IS, WE WILL SELL THEM A NEW MANUAL FOR"
6090 DATA " $150 (30% OF $495).  FOR 30% OF $39.95 ?  YOU GOTTA BE JOKING !"," "
6100 DATA " THUS, WE HAVE AN EXTRAORDINARILY FRIENDLY UPGRADE POLICY FOR DISKS AND AN"
6110 DATA " EXTRAORDINARILY unFRIENDLY UPGRADE POLICY FOR MANUALS.  FORTUNATELY FOR OUR"
6120 DATA " CUSTOMERS (IF ANY), WE WILL HAVE NEW DISKS MUCH MORE OFTEN THAN NEW MANUALS."," "
6130 ;
6140 DATA " ABOUT THE DBASIC SCREEN EDITOR:"," "," "
6150 DATA " IT'S NOT REALLY A SCREEN EDITOR, BECAUSE IT WORKS A (LOGICAL) LINE AT A TIME."
6160 DATA " BUT WE PURELY hate THE COMMON LINE EDITORS ('EDLIN', ANYONE ?), SO WE CALL IT"
6170 DATA " A SCREEN EDITOR.  YOU EDIT AND ENTER OR RE-ENTER STUFF ON THE SCREEN."," "
6180 DATA " MANY OF YOU WITH PREVIOUS 8-BIT PROGRAMMING EXPERIENCE WILL KNOW ABOUT SCREEN"
6190 DATA " EDITORS.  COMMODORE'S WAS BUILT INTO THE OLD 'BIG PETS'.  APPLE DIDN'T HAVE"
6200 DATA " ONE, SO FOLKS BOUGHT A PROGRAM WHICH SIMULATED A BUILT-IN SCREEN EDITOR.  WE"
6210 DATA " AREN'T PERSONALLY FAMILIAR WITH THE ATARI 800, SO WE DON'T KNOW WHETHER IT"
6220 DATA " HAD A BUILT-IN SCREEN EDITOR OR WHETHER IT WAS A SEPARATE PROGRAM LIKE THE"
6230 DATA " APPLE'S, BUT FOLKS WITH ATARI 800 BACKGROUNDS CATCH ON TO OUR BUILT-IN EDITOR"
6240 DATA " REAL QUICK."," "
6250 DATA " DBASIC INPUTS ARE EITHER COMMANDS, IF THE FIRST CHARACTER ON THE LINE IS"
6260 DATA " UPPER CASE ALPHABETIC, OR A PROGRAM LINE IF THE FIRST CHARACTER ON THE LINE"
6270 DATA " IS NUMERIC."," "
6280 DATA " DBASIC DOES NOT HAVE AN 'IMMEDIATE MODE';  IF YOU WANT TO 'PRINT 347*999', YOU"
6290 DATA " WILL HAVE TO WRITE A ONE-LINE PROGRAM AND THEN RUN IT."
6300 ;
6310 DATA " THAT MEANS THAT WHAT YOU WILL BE EDITING ON THE SCREEN WILL BE EITHER A"
6320 DATA " COMMAND LINE OR A PROGRAM LINE."," "
6330 DATA " THE LENGTH OF AN INPUT LINE IS NOT LIMITED TO THE LENGTH OF A PHYSICAL LINE."
6340 DATA " PHYSICAL LINES ARE 80 CHARACTERS MAX, EXCEPT IN COLOR MODE 0, WHERE THERE ARE"
6350 DATA " 40 CHARS MAX.  INSTEAD, THE LENGTH OF AN INPUT LINE IS LIMITED BY THE SIZE OF"
6360 DATA " THE INPUT BUFFER, WHICH HAS BEEN ARBITRARILY SET AT 255 CHARACTERS, OR MORE"
6370 DATA " THAN THREE PHYSICAL LINES AT 80 CHARACTERS PER PHYSICAL LINE."," "
6380 DATA " WE'VE TRIED TO GIVE YOU A QUICK-AND-DIRTY INTRODUCTION TO OUR LINE EDITOR IN"
6390 DATA " THE BOOT-UP PROGRAM NAMED 'DTACK', WHERE WE PUT THREE OPTIONS ON THE SCREEN"
6400 DATA " AND THEN EXECUTE 'END PROGRAM'.  YOU CAN THEN USE THE CURSOR KEYS TO GO TO A"
6410 DATA " LINE AND THEN EXECUTE THAT LINE BY KEYING 'RETURN'."," "
6420 DATA " AN IMPORTANT PROPERTY OF A SCREEN EDITOR (AS WE INSIST ON CALLING IT) IS THAT"
6430 DATA " IT DOESN'T MATTER where THE CURSOR IS IN THE LOGICAL LINE WHEN YOU HIT"
6440 DATA " 'RETURN'."," "," "
6450 DATA " WE'LL COVER A FEW EXAMPLES ON THE NEXT PAGES, UH, SCREENS:"," "
6460 ;
6470 DATA " SUPPOSE YOU KEY THIS PROGRAM LINE:"," "
6480 DATA " 100 X=1D5:Y=1E6:Z=1E7"," "
6490 DATA " OBVIOUSLY, YOU MEANT 'X=1E5' BUT SINCE THAT ISN'T WHAT YOU TYPED, YOU GOT A"
6500 DATA " SYNTAX ERROR MESSAGE, DIDN'T YOU ?  WELL, YOU DON'T HAVE TO RETYPE THE LINE."
6510 DATA " JUST MOVE THE CURSOR BACK TO THAT LINE (USING THE 'UP ARROW' KEY), RUN IT OVER"
6520 DATA " TO THE 'D' (USING THE 'RIGHT ARROW' KEY), HIT 'E', AND THEN HIT 'RETURN'."
6530 DATA " VOILA !  THE SYNTAX ERROR IS CORRECTED AND THE PROGRAM LINE WILL BE ACCEPTED."," "
6540 DATA " SUPPOSE YOU ENTERED:    RUN CORFILE"," "
6550 DATA " AND YOU GET BACK 'FILE NOT FOUND'.  OF course THE FILE WASN'T FOUND, IT'S ON"
6560 DATA " THE DISK IN DRIVE 2, REMEMBER ?  AND THE CURRENT DEFAULT DRIVE IS DRIVE 1."," "
6570 DATA " NO PROBLEM, RUN THE CURSOR UP TO THE LINE AND ADD ';2' AT THE END OF THE LINE."," "
6580 DATA " IT SHOULD NOW READ:     RUN CORFILE;2"," "
6590 DATA " AND WHEN YOU THEN HIT 'RETURN' DBASIC WILL LOOK IN DRIVE 2'S DISK CATALOG AND"
6600 DATA " FIND YOUR PROGRAM."
6610 ;
6620 DATA " OUR SUGGESTED 'CIRCLE' BENCHMARK CONTAINS THE FOLLOWING TWO PROGRAM LINES:"," "
6630 DATA " 350 FOR R%=1 TO 100:CIRSET (160,100),R%:NEXT R%"
6640 DATA " 360 FOR R%=1 TO 100:CIRCLR (160,100),R%:NEXT R%"," "
6650 DATA " OBVIOUSLY, LINE 360 IS VERY SIMILAR TO LINE 350.  DOES IT HAVE TO BE ENTERED"
6660 DATA " FROM SCRATCH ?  HECK, NO !  AFTER ENTERING LINE 350, JUST RUN THE CURSOR BACK"
6670 DATA " UP TO THE LINE NUMBER AND CHANGE THE '5' TO A '6', AND THEN RUN THE CURSOR"
6680 DATA " ACROSS AND CHANGE 'SET' TO 'CLR', AND THEN HIT 'RETURN'.  VOILA !  NOW BOTH"
6690 DATA " PROGRAM LINES ARE IN MEMORY."," "
6700 DATA " YES, WE KNOW MOST OF YOU KNOW ALL ABOUT SCREEN EDITORS.  THE ABOVE IS FOR"
6710 DATA " THE NEW-CHUMS.  EVERYBODY HAS TO START SOMEPLACE !"," "," "
6720 DATA " (MORE SCREEN EDITOR CONTROL KEY SPECS ON THE NEXT UH, SCREEN.)"," "
6730 ;
6740 DATA " LIST OF SCREEN EDITOR CONTROL-KEYS:"," "
6750 DATA " CTL-C (or Control-C):  STOPS THE LISTING OR RUNNING OF A PROGRAM."
6760 DATA " CTL-P:  ERASES FROM THE CURSOR TO THE END OF THE PHYSICAL LINE."
6770 DATA " CTL-N:  ERASES FROM THE CURSOR TO THE END OF THE SCREEN."
6780 DATA " CTL-W:  DUMPS THE TEXT (repeat, text) ON THE SCREEN TO THE HARD COPY PRINTER."
6790 DATA " CTL-HOME:  ERASES THE SCREEN AND HOMES THE CURSOR."
6800 DATA " HOME:  MOVES THE CURSOR TO THE UPPER LEFT CORNER OF THE SCREEN."
6810 DATA " INSERT:  INSERTS A SPACE CHARACTER IN THE LOGICAL (NOT JUST PHYSICAL) LINE."
6820 DATA " DELETE:  DELETES A CHARACTER FROM THE LOGICAL (NOT JUST PHYSICAL) LINE."
6830 DATA " ARROW KEYS:  MOVE THE CURSOR IN THE DIRECTION SHOWN ON THE KEYTOP."," "," "
6840 DATA " ***************************** MOST IMPORTANT *****************************"," "
6850 DATA " AFTER A LINE HAS BEEN TYPED IN OR MODIFIED THE 'RETURN' KEY MUST BE HIT TO"
6860 DATA " ENTER THE CHANGES."," "
6870 ;
6880 DATA " ABOUT DTACK GROUNDED INC.:"," "
6890 DATA " DTACK GROUNDED WAS INCORPORATED IN THE STATE OF NEW MEXICO IN JANUARY '87."
6900 DATA " IT IS THE SUCCESSOR TO DIGITAL ACOUSTICS INC, A 14-YEAR-OLD CALIFORNIA CORP."
6910 DATA " "," THE FOUR EMPLOYEES WHO WORKED FOR DAI IN 1986, IN CALIFORNIA, ARE THE SAME"
6920 DATA " FOUR EMPLOYEES WHO NOW WORK FOR DTACK GROUNDED INC IN SANTA FE, N.M."
6930 DATA " "," THE MOST RECENTLY HIRED OF THE FOUR JOINED DAI IN DEC 1981.  A FLY-BY-NIGHT"
6940 DATA " OUTFIT, WE AIN'T !"," "
6950 DATA " THE NAME DTACK GROUNDED ORIGINATED AS THE NAME OF A NEWSLETTER ABOUT THE 68000"
6960 DATA " MICROPROCESSOR WHICH HAD ITS FIRST ISSUE PRINTED IN JUL '81.  DTACK GROUNDED"
6970 DATA " WAS ALSO THE TRADE NAME (ACTUALLY, A LEGALLY REGISTERED FICTICIOUS NAME) FOR"
6980 DATA " THE 68000-BASED 'ATTACHED PROCESSORS' MANUFACTURED AND SOLD BY DAI.  DAI WAS"
6990 DATA " THE FIRST OUTFIT TO SELL THE 68000 PROCESSOR INTO THE PERSONAL COMPUTER MARKET"
7000 DATA " (HONEST!).  WE SHIPPED OUR FIRST BOARD TO A PAYING CUSTOMER IN NOV 1981."
7010 DATA " "," ALTHOUGH DAI'S 68000 'ATTACHED PROCESSORS' WERE ORIGINALLY DEVELOPED WITH"
7020 DATA " HACKERS IN MIND, THEY ACHIEVED COMMERCIAL SUCCESS (READ: PROFITS) AS HARDWARE"
7030 DATA " ACCELLERATORS FOR A CADD SYSTEM."
7040 ;
7050 DATA " PIN 10 ON THE 68000 MICROPROCESSOR IS CALLED 'DTACK'.  IF IT IS GROUNDED, THE"
7060 DATA " 68000 ALWAYS RUNS AT ITS MAXIMUM SPEED (NO WAIT STATES).  ON THE ORIGINAL"
7070 DATA " BOARDS WE SOLD, PIN 10 WAS LITERALLY GROUNDED!  THAT WAS VERY UNUSUAL AT THAT"
7080 DATA " TIME.  IN 1983 WE INTRODUCED A BOARD BASED ON INEXPENSIVE DRAM WHICH (SIGH)"
7090 DATA " HAD ONE WAIT STATE, AND SO DTACK WAS not GROUNDED.  BUT WE KEPT THE NAME,"
7100 DATA " SYMBOLIZING THE FACT THAT WE BELIEVE IN RUNNING AS FAST AS POSSIBLE AT ALL"
7110 DATA " TIMES, AN ATTITUDE WHICH HAS DEFINITELY BEEN CARRIED OVER INTO OUR BASIC."
7120 DATA " "," IF YOU LOOK AT OUR LOGO, YOU CAN SEE THE NUMBER '10' BESIDE THE GROUND SYMBOL"
7130 DATA " UNDER THE WORD 'DTACK.'  THE BAR OVER THE WORD 'DTACK' INDICATES THAT IT IS"
7140 DATA " 'NEGATIVE TRUE' OR 'ACTIVE LOW,' AS IN GROUNDED."
7150 DATA " "," "," (NOW YOU CAN STOP ASKING WHAT 'DTACK' MEANS.)"
7160 DATA " "," "," NEXT, WE WILL DISCUSS THE HISTORY OF DBASIC:"," "
7170 ;
7180 DATA " THE DEVELOPMENT OF DBASIC BEGAN OVER THE JULY 4 WEEKEND IN 1981, AT WHICH TIME"
7190 DATA " A FLOATING-POINT PACKAGE AND A LOGARITHM ROUTINE WERE WRITTEN IN 68000"
7200 DATA " MACHINE CODE.  WE SAY 'MACHINE CODE' BECAUSE IT WAS ALL HAND ASSEMBLED!"
7210 DATA " "," YOU SEE, IN THOSE DAYS YOU HAD TO BUY A $30,000 MINICOMPUTER TO GET A 68000"
7220 DATA " ASSEMBLER!  (BOY, COULD WE HAVE USED AN ST AND THE DBASIC ASSEMBLER...)"
7230 DATA " "," IN THE SPRING OF '82, WE WROTE A SIMPLE THREADED-CODE IMPLEMENTATION OF A"
7240 DATA " CALCULATOR LANGUAGE.  please DON'T SAY 'FORTH' ON ACCOUNT OF THERE WAS NOTHING"
7250 DATA " BACKWARD, LITERALLY OR FIGURATIVELY, ABOUT THE LANGUAGE.  BELIEVE IT OR NOT,"
7260 DATA " THIS (ADMITTEDLY SIMPLE) LANGUAGE SYSTEM WORKED RIGHT OFF THE BAT.  WELL, IT"
7270 DATA " was SIMPLE!  IT WAS, ALAS, ALSO COMPILED, NOT INTERACTIVE."," "
7280 DATA " WE CALLED THIS LANGUAGE 'HALGOL,' AND CLAIMED THAT THE NAME WAS A COMBINATION"
7290 DATA " OF 'ALGOL' AND 'HAL,' FROM THE MOVIE '2001.'  THERE WAS SOME SCEPTICISM OVER"
7300 DATA " THIS REPORTED ORIGIN SINCE THE PROGRAMMER'S NAME WAS 'HAL' !  TSK."
7310 DATA " "," IN JAN '83 A UCI (UNIV CA IRVINE) COMPUTER SCIENCE STUDENT NAMED REGINALD"
7320 DATA " BOYD JOINED DAI AND WAS ASSIGNED THE TASK OF CONVERTING HALGOL INTO AN"
7330 DATA " INTERACTIVE LANGUAGE.  DURING HIS TWO YEARS WITH DAI, REGINALD SUCCEEDED IN"
7340 DATA " THAT TASK AND CONSIDERABLY EXPANDED THE SCOPE OF THE LANGUAGE."
7350 ;
7360 DATA " IN 1983, DAI SUCCEEDED IN MATING THE NAT SEMI 16081 MATH COPROCESSOR TO THE"
7370 DATA " 68000, AN INDUSTRY FIRST.  WE COMMISSIONED A WEST GERMAN, ULRICH SCHMIDT, TO"
7380 DATA " DEVELOP A MATH PROCESSOR VERSION OF INTERACTIVE HALGOL, WHICH HE DID."
7390 DATA " "," SO DAI WAS THE FIRST TO HAVE HIGH LEVEL LANGUAGE SUPPORT FOR THE 68000 MICRO"
7400 DATA " AND A DOUBLE-PRECISION FLOATING-POINT MATH PROCESSOR.  TOO BAD THAT OUR TOTAL"
7410 DATA " USER BASE WAS MEASURED IN DOZENS !"," "
7420 DATA " A HELLACEOUS HICCUP HIT THE COMPUTER INDUSTRY IN 1984 (READ: NO SALES), AND"
7430 DATA " DAI WAS FACED WITH A RIF - REDUCTION IN FORCE.  SO 'HAL' RESUMED DEVELOPMENT"
7440 DATA " OF HALGOL.  REMEMBER, IT WAS HARDWARE SALES THAT WERE PAYING THE BILLS.  WE"
7450 DATA " WERE giving HALGOL TO OUR BOARD CUSTOMERS AS A SALES INCENTIVE."
7460 DATA " "," IT WAS THEN, IN 1984, THAT DAI SHRANK TO THE PRESENT FOUR EMPLOYEES.  SINCE"
7470 DATA " HARDWARE WAS PAYING THE BILLS, WE SHOULD GIVE A NOD TO JAMES SHAKER, WHO"
7480 DATA " DESIGNED MUCH OF THAT HARDWARE, EVEN IF THE BOSS ('HAL') GOT THE CREDIT.  ON"
7490 DATA " THE OTHER HAND, THE BOSS (WHO IS WRITING THIS) DID A BANG-UP JOB OF FURTHER"
7500 DATA " DEVELOPING HALGOL.  DAI WAS ALWAYS LOOKING FORWARD TO THE DAY WHEN A MASS-"
7510 DATA " MARKET 68000 HACKER MACHINE - A 'TRASH-68' - WOULD APPEAR.  WHEN THE MACK"
7520 DATA " APPEARED, IT WAS (ALAS) AN OVERPRICED YUPPIE MACHINE FOR THE BMW CROWD."," "
7530 ;
7540 DATA " THAT, OF COURSE, BRINGS US TO THE ATARI ST COMPUTER, WHICH WAS INTRODUCED IN"
7550 DATA " THE SUMMER OF 1985.  WHEN THE DETAILS OF THIS (THEN) NEW PERSONAL COMPUTER"
7560 DATA " SURFACED, IT WAS IMMEDIATELY OBVIOUS THAT THIS WAS THE 'TRASH-68' THAT DAI"
7570 DATA " HAD BEEN WAITING FOR."," "
7580 DATA " A QUICK EXPLANATION:  WE MEAN NO DISRESPECT BY THE TERM 'TRASH-68'.  THE"
7590 DATA " ORIGINAL 'TRASH-80' BY RADIO SHACK INTRODUCED AN ENORMOUS NUMBER OF FOLK TO"
7600 DATA " THE WORLD OF PERSONAL COMPUTING - AT A very LOW PRICE.  OUR PERCEPTION OF THE"
7610 DATA " ATARI ST IS THAT IT WILL INTRODUCE AN ENORMOUS NUMBER OF FOLK TO THE WORLD OF"
7620 DATA " HONEST HIGH PERFORMANCE COMPUTING, USING THE 68000 MICROPROCESSOR AND ITS"
7630 DATA " 16 MEGABYTE LINEARLY ADDRESSABLE MEMORY SPACE."," "
7640 DATA " IT WAS NOT AT ALL A COINCIDENCE THAT WHEN THE ST APPEARED, OUR BASIC (HALGOL)"
7650 DATA " HAD ARRIVED AT AN ADVANCED STATE OF DEVELOPMENT.  IT TAKES A WHILE FOR AN"
7660 DATA " ADVANCED PROCESSOR LIKE THE 68000 TO TRICKLE DOWN TO USE IN AN INEXPENSIVE"
7670 DATA " MASS-MARKET MACHINE, AND IT ALSO TAKES A WHILE TO DEVELOP A BASIC WHICH TAKES"
7680 DATA " ADVANTAGE OF THAT ADVANCED PROCESSOR.  IN NOV '85 WE ANNOUNCED TO THE 'DTACK"
7690 DATA " GROUNDED' NEWSLETTER READERS THAT DAI WOULD DEVELOP HALGOL INTO A COMMERCIAL"
7700 DATA " BASIC FOR THE ST."," "
7710 DATA " (WE THOUGHT IT WOULD TAKE ABOUT SIX MONTHS.  HA!)"
7720 ;
7730 DATA " WELL, WE MEANT WELL BY THAT SIX-MONTH ESTIMATE.  IN FACT, DEVELOPMENT OF THE"
7740 DATA " MANUAL DID NOT BEGIN UNTIL MAY '86 AND DELIVERY OF THE INITIAL PRINT RUN DID"
7750 DATA " NOT OCCUR UNTIL ONE YEAR LATER - MAY '87.  AND WHEN THE MANUAL ARRIVED WE WERE"
7760 DATA " STILL MAKING THE BASIC DO WHAT THE MANUAL SAID!  SO, IT LOOKS LIKE INITIAL"
7770 DATA " DISTRIBUTION OF THE BASIC WILL OCCUR ABOUT THE LATTER PART OF JUNE (THIS IS"
7780 DATA " BEING KEYED ON 13 JUNE)."," "
7790 DATA " NAMES?  OH, YES:  NAMES.  WE DECIDED THAT A BASIC SHOULD BE called A BASIC, SO"
7800 DATA " 'HALGOL' TURNED INTO 'HBASIC' FOR A LONG WHILE, UNTIL SOMEBODY NOTICED THAT"
7810 DATA " THE HERCULES COMPANY, A VENDOR OF IBM PC-COMPATIBLE VIDEO BOARDS, HAD USED"
7820 DATA " THAT NAME.  THUS 'DBASIC', WHICH IS SHORTER AND HENCE MORE DESIRABLE THAN"
7830 DATA " EITHER 'DIGITAL ACOUSTICS BASIC' OR 'DTACK GROUNDED BASIC'!"," "
7840 DATA " WE NOW HAVE A BASIC WHICH IS INTERACTIVE, HAS ACCURATE FLOATING-POINT"
7850 DATA " PERFORMANCE (ON ACCOUNT OF BOTH THE FUNDAMENTAL MATH OPERATIONS - +,-,*,/ -"
7860 DATA " and, GET THIS, and THE TRANSCENDENTAL FUNCTIONS [LOG, SINE, ETC] ARE PERFORMED"
7870 DATA " IN DOUBLE PRECISION [8-BYTE] FORMAT), AND IS DOWNRIGHT fast!"
7880 DATA " (yeah, we know that sentence is too long.)"," "
7890 DATA " SO WE HAVE A REAL GOOD BASIC, RIGHT?  WRONG !  READ ON TO FIND OUT WHAT we"
7900 DATA " THINK A REALLY GOOD BASIC IS:"
7910 ;
7920 DATA " A BASIC CAN'T BE REALLY GOOD UNTIL A LOT OF PEOPLE USE IT.  IT'S THAT SIMPLE."," "
7930 DATA " WE HAVE, THEREFORE, DECIDED TO INTRODUCE DBASIC IN A MANNER WHICH WILL"
7940 DATA " encourage FOLKS TO USE IT, INSTEAD OF THE OPPOSITE TACK WHICH (EVIDENTLY) HAS"
7950 DATA " BEEN TAKEN BY SOME OTHER VENDORS OF THIRD-PARTY ST BASICS."," "
7960 DATA " SO WE HAVE (BY THE TIME YOU ARE READING THIS) given away OVER 6,000 DBASIC"
7970 DATA " MANUALS!  WE SENT OVER 1,600 TO THE 'DTACK GROUNDED' NEWSLETTER MAILING LIST,"
7980 DATA " AT LEAST 10 TO EACH OF 400 ATARI USER GROUPS IN THE U.S., AND WE ARBITRARILY"
7990 DATA " PICKED A FEW ST USER GROUPS AND FLAT saturated THEM WITH DBASIC MANUALS !"," "," "
8000 DATA " WAIT, WE AIN'T FINISHED YET !!"," "
8010 DATA " IN ADDITION TO THOSE 6,000+ MANUALS (AND DISKS, OF COURSE), WE HAVE AN initial"
8020 DATA " PRINTING OF OVER 65,000 LEGALLY COPYRIGHTED DBASIC DISKETTE LABELS WHICH WE"
8030 DATA " ARE giving AWAY.  LIKE WE SENT ABOUT 60 LABELS TO EACH OF THOSE USER GROUPS !!"," "
8040 DATA " IN OTHER WORDS, WE ARE SENDING MORE LEGALLY COPYRIGHTED LABELS TO THOSE USER"
8050 DATA " GROUPS THAN THEY GOT MEMBERS WHO OWN STs !  INITIAL BUYERS WILL GET A BUNCH"
8060 DATA " OF THESE LABELS SO THEY CAN SHARE THE BASIC WITH THEIR FRIENDS...  LEGALLY !"
8070 ;
8080 DATA " WE INTEND TO EVENTUALLY DISTRIBUTE MORE OF THESE LABELS THAN ATARI HAS SOLD"
8090 DATA " STs (IN THE U.S.).  SO everybody CAN LEGALLY HAVE AND SHARE DBASIC...  THE"
8100 DATA " DISK, THAT IS...  WITHOUT HAVING TO PAY US A DIME !"," "
8110 DATA " NO, WE AREN'T STUPID.  IF YOU WRITE US AN ASK FOR YOUR free DBASIC MANUAL, OR"
8120 DATA " MANUALS, YOUR LETTER WILL BE ROUND-FILED.  YOU SEE, THE SEEDING OPERATION"
8130 DATA " WAS DONE ESSENTIALLY ALL AT ONCE, OVER A ONE-WEEK SPAN.  WE NO LONGER give"
8140 DATA " MANUALS AWAY !  NOW, WE (HOPE TO) sell THEM !"," "
8150 DATA " ALTHOUGH WE GAVE AWAY OVER 6,000 MANUALS, THAT MEANS THAT MORE THAN 193,000"
8160 DATA " OF THE 200,000 PRESENT U.S. ST OWNERS DID NOT GET A FREE MANUAL - AND YOU"
8170 DATA " (STATISTICALLY SPEAKING) ARE ONE OF THOSE 193,000 !"," "
8180 DATA " GEEZ, IF YOU THINK WE CAN CONTINUE TO GIVE AWAY MANUALS WHILE TRYING TO SELL"
8190 DATA " THEM, YOU MUST BE AS SIMPLE AS YOU APPARENTLY THINK WE ARE !"," "
8200 DATA " LOOK, WE HAVE OVER 7 MAN-YEARS INVESTED IN DBASIC AND ITS MANUAL.  THAT COSTS"
8210 DATA " MONEY.  AND WE ARE A CORPORATION AND HENCE GREEDY CAPITALISTS (IN THE TRUEST"
8220 DATA " AMERICAN TRADITION), NOT BENEFACTORS OF MANKIND !"," "
8230 ;
8240 DATA " ON THE OTHER HAND..."," "," "
8250 DATA " WE are ARRANGING FOR EVERYBODY TO EVALUATE DBASIC WITHOUT PAYING US ANYTHING."
8260 DATA " SOME OF OUR COMPETITION IS, UM, NOT EVEN that FRIENDLY !  (COPY-PROTECTED"
8270 DATA " DISKS INDEED !)  IN THE REAL WORLD, WHERE EVERYBODY GETS PAID FOR THEIR WORK,"
8280 DATA " THAT'S ABOUT AS MUCH AS YOU CAN REASONABLY EXPECT."," "
8290 DATA " IF YOU HAVE HAD THE CHANCE TO PLAY WITH THE DBASIC DISK AND THINK BUYING THE"
8300 DATA " MANUAL AND THE LATEST VERSION OF THE DISK MIGHT BE WORTHWHILE (AND IF YOU LIVE"
8310 DATA " IN THE UNITED STATES), HERE IS HOW YOU CAN BUY DBASIC:"," "," "
8320 DATA " CALL OUR ORDER DESK, (505) 989-9576, AND GIVE US YOUR MASTERCARD OR VISA CARD"
8330 DATA " NUMBER.  WE'RE IN THE (ROCKY) MOUNTAIN TIME ZONE."," "
8340 DATA " WE WILL DEBIT YOUR CARD FOR $39.95 PLUS $3 S & H  (THE POSTAGE ALONE IS $2.40)"
8350 DATA " AND PROMPTLY SHIP YOUR DISK AND MANUAL BY FIRST CLASS MAIL.  WE WILL ALSO SEND"
8360 DATA " SOME EXTRA LEGALLY COPYRIGHTED DBASIC DISKETTE LABELS SO THAT YOU CAN SHARE"
8370 DATA " THE DBASIC DISKETTE WITH YOUR FRIENDS."," "
8380 ;
8390 DATA " EVERYBODY WHO HAS PROGRAMMED IN BASIC ON THE OLD 8-BIT MACHINES HAS LEARNED"
8400 DATA " SOME 'OLD WIVES' TALES' THAT AREN'T TRUE IN DBASIC.  HERE ARE SOME OF THE"
8410 DATA " DIFFERENCES:"," "
8420 DATA " DBASIC LOOKS AT all OF THE CHARACTERS IN A VARIABLE NAME, NOT JUST THE FIRST"
8430 DATA " TWO OR THE FIRST SIX OR SOMETHING LIKE THAT."," "
8440 DATA " USING LONG VARIABLE NAMES DOES not MAKE YOUR PROGRAM (MUCH) BIGGER BECAUSE"
8450 DATA " THE VARIABLE NAME EXISTS IN THE DBASIC PROGRAM ONLY ONCE, IN THE VARIABLE NAME"
8460 DATA " TABLE.  (TSAVED PROGRAMS ARE AN EXCEPTION.)  AND LONG VARIABLE NAMES CAN'T"
8470 DATA " SLOW THE PROGRAM DOWN BECAUSE NAMES AREN'T USED WHEN A DBASIC PROGRAM IS"
8480 DATA " RUNNING, JUST A WORD OFFSET VALUE INTO THE VARIABLE VALUE TABLE."," "
8490 DATA " IN DBASIC, THE 'ACCESS TIME' IS IDENTICAL (AND VERY FAST) FOR ALL VARIABLES."
8500 DATA " (IN OLD 8-BIT BASICS, THE FIRST VARIABLES ENTERED IN THE PROGRAM WERE FOUND"
8510 DATA " MORE QUICKLY.)"," "
8520 DATA " IT DOES NOT MATTER WHERE IN A PROGRAM A SUBROUTINE IS LOCATED, NO MATTER HOW"
8530 DATA " LONG THE PROGRAM.  (THE OLD 8-BIT BASICS HAD TO DO A LINEAR SEARCH FOR THE"
8540 DATA " SUBROUTINE, AND SO PROGRAMS RAN FASTER IF THE SUBROUTINES WERE LOCATED AT THE"
8550 DATA " START OF THE PROGRAM.)"
8560 ;
8570 DATA " THE OLD 8-BIT BASICS RESTRICTED YOU TO 'PEEK'ING AND 'POKE'ING A BYTE AT A"
8580 DATA " TIME.  IN DBASIC, YOU CAN DO THAT WITH A BYTE, A WORD, A STRING, AND - GET"
8590 DATA " THIS - AN ARRAY.  THAT IS CORRECT, YOU CAN PEEK OR POKE AN ENTIRE ARRAY WITH"
8600 DATA " A SINGLE STATEMENT.  THERE IS NO LIMIT TO THE size OF THE ARRAY YOU PEEK OR"
8610 DATA " POKE, EXCEPT THAT THE LOCATION YOU ARE PEEKING FROM OR POKING TO HAS TO LIE"
8620 DATA " COMPLETELY OUTSIDE THE ARRAY.  SWAPPING GRAPHICS 'SLIDE SHOWS' AROUND IN"
8630 DATA " DBASIC IS CHILD'S PLAY."," "
8640 DATA " DBASIC PERFORMS INTEGER ARITHMETIC USING INTEGERS, AS COMPARED TO SOME BASICS"
8650 DATA " WHICH STORE INTEGERS AS INTEGERS BUT WHICH PERFORM ALL ARITHMETIC COMPUTATIONS"
8660 DATA " IN FLOATING POINT.  THIS MEANS INTEGER ARITHMETIC IS much FASTER IN DBASIC -"
8670 DATA " NEARLY AS FAST AS COMPILED C, IN FACT.  BUT YOU DO HAVE TO BE A BIT MORE"
8680 DATA " CAREFUL TO AVOID ARITHMETIC OVERFLOWS."," "
8690 DATA " DBASIC DOES NOT USE AN 'LPRINT' STATEMENT TO DIRECT TEXT TO THE HARD-COPY"
8700 DATA " PRINTER.  INSTEAD, A PRINT STATEMENT, OR GROUP OF PRINT STATEMENTS, CAN BE"
8710 DATA " DIRECTED TO EITHER THE CRT (SCREEN) OR THE HARD-COPY PRINTER USING THE"
8720 DATA " 'SELECT PRINT' STATEMENT.  'SELECT PRINT 1' DIRECTS THE OUTPUT OF PRINT"
8730 DATA " STATEMENTS TO THE HARD COPY PRINTER, AND 'SELECT PRINT 0' DIRECTS THE OUTPUT"
8740 DATA " TO THE CRT."," "
8750 ;
8760 DATA " THE ADVANTAGE OF THE 'SELECT PRINT' STATEMENT IS THAT THE OUTPUT OF A"
8770 DATA " MODERATELY COMPLEX PRINT FORMATTING SUBROUTINE CAN BE DIRECTED ONE WAY OR THE"
8780 DATA " OTHER, RATHER THAN HAVING TO WRITE THE ROUTINE TWICE, ONCE USING 'PRINT'"
8790 DATA " STATEMENTS AND AGAIN USING 'LPRINT' STATEMENTS.  A GOOD EXAMPLE IS THE SOURCE"
8800 DATA " LISTING FORMAT SUBROUTINE AT THE END OF THE 'EDITOR' DEMO PROGRAM WHICH IS"
8810 DATA " INCLUDED WITH DBASIC."," "," "
8820 DATA " WHEN ENTERING AND EDITING A DBASIC PROGRAM, YOU SHOULD USE THE 'COLLECT'"
8830 DATA " COMMAND EVERY NOW AND THEN.  YOU SHOULD always USE THE 'COLLECT' COMMAND"
8840 DATA " JUST BEFORE SAVING A FINAL (OR SEMIFINAL) VERSION OF A PROGRAM YOU'VE WRITTEN."
8850 DATA " 'COLLECT'ING THE PROGRAM GETS RID OF THE GARBAGE WHICH INEVITABLY ACCRUES"
8860 DATA " IN THE PROCESS OF EDITING A PROGRAM."," "," "
8870 DATA " 'COLLECT' IS THE only WAY TO GET RID OF AN UNWANTED LABEL OR ARRAY.  YOU SEE,"
8880 DATA " ONCE A LABEL (OR ARRAY NAME) HAS BEEN USED ONCE, IT'S THERE IN THE DBASIC"
8890 DATA " TABLES AND DELETING THE PROGRAM LINE WHICH CONTAINS THAT LABEL (OR ARRAY NAME)"
8900 DATA " WILL not REMOVE THE LABEL FROM THE PROGRAM - UNLESS FOLLOWED UP BY A 'COLLECT'"
8910 DATA " STATEMENT."," "
8920 ;
8930 DATA " ONCE YOU HAVE ENTERED A LINE WITH THE ARRAY 'A[I%]', FOR EXAMPLE, DBASIC"
8940 DATA " 'KNOWS' THAT A[] HAS A SINGLE DIMENSION.  IF YOU DELETE THE LINE(S) CONTAINING"
8950 DATA " A[I%], YOU still CANNOT ENTER ANOTHER LINE (OR EDIT AN EXISTING ONE) USING"
8960 DATA " 'A[I%,J%] BECAUSE DBASIC 'KNOWS' THAT A[] HAS A SINGLE DIMENSION AND WILL"
8970 DATA " GIVE YOU A 'DIMENSION MISMATCH' ERROR.  THE 'COLLECT' STATEMENT WILL GET RID"
8980 DATA " OF THAT UNWANTED ARRAY REFERENCE, PROVIDED ALL LINE NUMBERS CONTAINING IT HAVE"
8990 DATA " BEEN DELETED."," "
9000 DATA " (YOU JUST MIGHT WANT TO USE AN ALTERNATE LABEL AND/OR AN ALTERNATE ARRAY NAME"
9010 DATA " FOR THE TIME BEING.)"," "
9020 DATA " ALL KIDDING ASIDE, YOU really should PERFORM A COLLECT ONCE IN A WHILE IF YOU"
9030 DATA " ARE DOING SOME HEAVY EDITING/MODIFYING OF A PROGRAM.  WE HAVE HAD TWO REPORTS"
9040 DATA " THAT A 'MISSING LINE NUMBER' CAN OCCUR AFTER extensive EDITING, ASSUMING OF"
9050 DATA " COURSE THAT YOU ARE using 'GOTO LINE #' INSTEAD OF 'GOTO LABEL'.  BUT THAT"
9060 DATA " ERROR GOES AWAY AS SOON AS A 'COLLECT' IS PERFORMED.  (SO FAR, WE HAVE NOT"
9070 DATA " BEEN ABLE TO DUPLICATE THAT ERROR UNDER CONTROLLED CONDITIONS.)  extensive"
9080 DATA " EDITING CAN REALLY CHURN THE DBASIC TABLES..."," "," "
9090 ;
9100 DATA " HERE'S WHAT 'COLLECT' DOES:  IT 'LISTS' THE PROGRAM TO HIGH MEMORY.  THEN IT"
9110 DATA " COMPLETELY CLEARS (EMPTIES) THE DBASIC TABLES.  THEN IT RECOMPILES EACH LINE"
9120 DATA " OF THE PROGRAM, JUST AS IF YOU WERE RE-TYPING THEM VERY QUICKLY.  ANYTHING"
9130 DATA " THAT'S NOT IN THAT PROGRAM LISTING, SUCH AS AN OLD LABEL OR OLD ARRAY NAME,"
9140 DATA " NATURALLY DOES NOT GET RE-ENTERED INTO THE (NEW) DBASIC TABLES."," "," "
9150 DATA " DBASIC PERMITS THE USE OF either LINE NUMBERS OR LABELS AS THE DESTINATION OF"
9160 DATA " A 'GOSUB' OR 'GOTO'.  (COMPUTER SCIENTISTS WANT TO INVOKE THE DEATH PENALTY"
9170 DATA " FOR USING EITHER A LINE NUMBER OR A 'GOTO' STATEMENT.)  WE SUGGEST USING"
9180 DATA " LABELS IN LONG PROGRAMS AND LINE NUMBERS IN SHORT, QUICK-AND-DIRTY PROGRAMS."," "
9190 DATA " A LABEL MUST BEGIN WITH AN ALPHABETIC CHARACTER AND SUBSEQUENT CHARACTERS MUST"
9200 DATA " BE EITHER ALPHANUMERIC OR THE UNDERLINE CHARACTER (NO SPACES ALLOWED)."," "
9210 DATA " DON'T WORRY ABOUT HOW LONG A LABEL IS - EVEN IF YOU 'GOTO' OR 'GOSUB' THAT"
9220 DATA " LABEL A HUNDRED TIMES, THE NAME OF THE LABEL EXISTS IN THE PROGRAM ONLY ONCE,"
9230 DATA " IN THE LABEL NAME TABLE.  AT RUN TIME, THE LABEL NAME IS NOT USED, JUST A WORD"
9240 DATA " OFFSET INTO THE LABEL ADDRESS TABLE."," "
9250 ;
9260 DATA " UNLIKE MOST 8-BIT BASICS, DBASIC HAS NO RESERVED WORDS.  (WHY ? WELL, HAVE YOU"
9270 DATA " HEARD ABOUT THE BASIC WHICH RUNS ON AN ATARI 8-BIT MACHINE WHICH CAN'T USE"
9280 DATA " THE VARIABLE NAME 'SCORE' BECAUSE 'OR' IS A RESERVED WORD ?)"," "
9290 DATA " THE ABSENCE OF RESERVED WORDS EXPLAINS WHY A SPACE CHARACTER must FOLLOW A"
9300 DATA " PROGRAM STATEMENT, AND WHY A SPACE CHARACTER cannot BE USED IN A LABEL OR"
9310 DATA " VARIABLE NAME.  FOR INSTANCE, THE 'COMMAND':"," "
9320 DATA " LIST100-200"," "
9330 DATA " WON'T BE RECOGNIZED BECAUSE THERE is no such command AS 'LIST100-200' !  SINCE"
9340 DATA " THERE ARE NO RESERVED WORDS, WE WON'T GO LOOKING INSIDE THAT COMMAND STRING"
9350 DATA " TO SEE IF THERE IS A RESERVED COMMAND WORD.  TAKE THIS EXAMPLE:"," "
9360 DATA " 700 IF A=3 GOTO LIST ELSE PRINT"," "
9370 DATA " DOES THAT MEAN GOTO 'LIST ELSE PRINT', WHERE 'LIST ELSE PRINT' IS A LABEL, OR"
9380 DATA " DOES THAT MEAN GOTO 'LIST', ELSE EXECUTE A 'PRINT' STATEMENT ?  SINCE DBASIC'S"
9390 DATA " LABELS cannot CONTAIN A SPACE CHARACTER, THE LATTER INTERPRETATION IS"
9400 DATA " UNAMBIGUOUSLY SELECTED.  YOU could USE 'LIST_ELSE_PRINT' AS A LABEL IF YOU"
9410 DATA " WISHED, THOUGH."
9420 ;
9430 DATA " LIKE ALMOST ALL BASICs, DBASIC USES RADIANS, NOT DEGREES, IN ITS TRIGONOMETRIC"
9440 DATA " FUNCTIONS.  SO YOU WILL PROBABLY NEED TO CONVERT FROM DEGREES TO RADIANS AND"
9450 DATA " BACK.  HERE IS A 'PROGRAM' TO DO THIS, AND TO GIVE A GOOD VALUE FOR pi:"," "
9460 DATA " 950 RADIANS=DEGREES*ATN(1)/90"
9470 DATA " 960 DEGREES=RADIANS*90/ATN(1)"
9480 DATA " 970 ;"
9490 DATA " 980 pi=4*ATN(1)"," "
9500 ;
9510 DATA " WE DON'T HAVE AN EXPORT LICENSE FOR DBASIC SO WE CAN'T SHIP ANYWHERE EXCEPT IN"
9520 DATA " THE UNITED STATES.  FOR $39.95 PLUS $3 S & H, WE WILL MAIL DBASIC, VIA FIRST"
9530 DATA " CLASS MAIL, ANYWHERE IN THE 50 STATES...  BUT NOWHERE ELSE UNTIL (IF ?) WE GET"
9540 DATA " AN EXPORT LICENSE."," "
9550 DATA " WE CAN TAKE VISA OR MASTERCARD OVER THE PHONE.  WE'LL ACCEPT A PERSONAL CHECK"
9560 DATA " IF (AND ONLY IF) THE SHIP-TO ADDRESS IS THE SAME AS THE ADDRESS THE BANK"
9570 DATA " PRINTED ON THE CHECK.  IF YOU DON'T GOT PLASTIC OR AN UP-FRONT PERSONAL CHECK,"
9580 DATA " WE ARE DOWN TO A POSTAL MONEY ORDER, AREN'T WE ?  WE DO NOT ACCEPT PURCHASE"
9590 DATA " ORDERS FROM ANYBODY, REPEAT, ANYBODY.  WE WILL NOT EVEN ACCEPT A CERTIFIED"
9600 DATA " CHECK IF IT IS ACCOMPANIED BY A PURCHASE ORDER, BECAUSE LEGALLY WE ARE THEN"
9610 DATA " RESPONSIBLE FOR THE 27 PAGES OF FINE PRINT (BOILERPLATE) ON THAT P.O."," "
9620 DATA " THE HARDWARE REQUIREMENTS FOR DBASIC ARE A 520ST OR 1040ST.  IF YOU WANT HARD"
9630 DATA " COPY, YOU WILL HAVE TO HAVE AN EPSON-COMPATIBLE PRINTER WITH A PARALLEL PORT."
9640 DATA " ATARI HAS ANNOUNCED A BUNCH OF STUFF WHICH WE HAVE NOT SEEN YET, INCLUDING"
9650 DATA " BLITTER CHIPS, NEW ROMS AND SUCH.  IT WILL PROBABLY TAKE US 3 OR 4 MONTHS"
9660 DATA " AFTER SUCH STUFF APPEARS ON THE MARKET BEFORE WE WILL BE ABLE TO SUPPORT IT..."
9670 DATA " IF (REPEAT if) WE CAN SUPPORT IT THEN.  SO IF YOU DON'T HAVE A COLOR OR MONO"
9680 DATA " 520ST OR 1040ST, DON'T BUY DBASIC."," "
9690 DATA " IF YOU HAVE OTHER QUESTIONS WHICH must BE ANSWERED BEFORE YOU CAN BUY DBASIC,"
9700 DATA " THEN YOU CAN'T BUY DBASIC, BECAUSE WE ARE NOT GOING TO PLAY 20 QUESTIONS."," "
9710 DATA " IF YOU WANT TO PLACE AN ORDER, WE HAVE AN ORDER DESK.  THERE IS NO MESSAGE PAD"
9720 DATA " ON THAT DESK, AND THE DESK WILL PROBABLY HAVE SOMEBODY FROM A TEMPORARY"
9730 DATA " SECRETARIAL SERVICE MANNING (WOMANNING ?) IT.  (IF THE DESK GETS TOO BUSY, WE"
9740 DATA " WILL PROBABLY SWITCH TO THE TELEPHONE ANSWERING SERIVICE IN SUITE A-5, JUST"
9750 DATA " 100 FEET AWAY FROM US.)  WE'RE TELLING YOU THIS UP FRONT BECAUSE IF YOU DON'T"
9760 DATA " LIKE THE WAY WE DO BUSINESS WE WANT YOU TO FIND THAT OUT before YOU BUY"
9770 DATA " DBASIC.  WE'D RATHER PASS UP 40 BUCKS THAN HAVE AN UNHAPPY CUSTOMER."," "
9780 DATA " (WE PLAN TO SPEND OUR TIME IMPROVING DBASIC FOR all OF OUR CUSTOMERS, NOT"
9790 DATA " NATTERING ON THE PHONE OR WRITING LETTERS TO JUST one OF THEM.  YES, WE ARE"
9800 DATA " GOING TO COLLECTIVELY SUPPORT OUR CUSTOMERS.  WE JUST AREN'T GOING TO DO IT"
9810 DATA " INDIVIDUALLY.  AFTER ALL, THERE'S 2 OF US AND 200,000 OF YOU.)"," "
9820 DATA " OUR ORDER DESK # IS (505) 989-9576.  WE'RE IN THE ROCKY MOUNTAIN TIME ZONE."," "
9830 DATA " IF YOU DON'T HAVE PLASTIC, OUR ADDRESS IS:"
9840 DATA " DTACK GROUNDED INC       1570 PACHECO  B-7       SANTA FE  NM  87501"," "
9850 DATA " YOU CAN'T LICENSE DBASIC UNDER ANY CIRCUMSTANCES.  DBASIC IS A PUBLICATION,"
9860 DATA " AND PUBLICATIONS ARE COPYRIGHTED, NOT LICENSED."," "
9870 DATA " IF YOU HAVE READ THE REST OF THIS 'README' FILE, YOU KNOW THAT WE PLAN TO HAVE"
9880 DATA " ENOUGH LEGALLY COPYRIGHTED DISKETTE LABELS CIRCULATING THAT EVERYBODY IN THE"
9890 DATA " U.S. WHO HAS AN ST CAN LEGALLY HAVE, AND USE, THE DBASIC SYSTEM DISK.  IF YOU"
9900 DATA " WANT TO DEVELOP A PUBLIC-DOMAIN OR COMMERCIAL DBASIC PROGRAM, THEN YOU CAN"
9910 DATA " SIMPLY SHIP A DATA DISKETTE WITH YOUR PROGRAM ON IT.  THAT'S HOW FOLKS USED TO"
9920 DATA " DO BUSINESS IN THE CP/M-MBASIC WORLD AND THAT'S HOW FOLKS DO BUSINESS NOW IN"
9930 DATA " THE MS-DOS/BASICA WORLD."," "
9940 DATA " IF THIS DOES NOT MEET YOUR REQUIREMENTS, THEN YOU SHOULD NOT DEVELOP PROGRAMS"
9950 DATA " IN DBASIC."," "
