' +JJJJ ?\>m0M='+l> /+l   d]@ŵLҦ]]LF L}BBL] X  ` 鷎귭෍ᷩ췩緈JJJJx Lȿ L8ᷭ緍췩 緍i 8 `巬 췌`x (`(8`I`B` ``>J>J>VU)?`8'x0|&HhHh VY)'&Y)xꪽ)' `Hh`V0^*^*>&` aI꽌ɪVɭ&Y&&Y& 꽌ɪ\8`&&꽌ɪɖ'*&%&,E'зЮ꽌ɪФ`+*xS&x'8*3Ixix&& 8  '  & x)*++`FG8`0($ p,&"ųųೳŪŪųųij  !"#$%&'()*+,-./0123456789:;<=>?   1 '" " *  (9"1 ( ,.(0# 2  /#0/#0 *?'#07#00/0/'#07#0:"4<*55/**5/*%5/)1/)1/)1/)'#0/#0*5/*75/**5/*:5//#0/#0'#07#0:::*::'#07#0/28$2>, 7$$2%4%$$2%4%$(2()!)E(!8b $!H(+0#1 "Ph !D)"E` @ $ C ` DQ &J80^݌Hh ü ü݌ ռ ռ ռA ļD ļ? ļAEDE?HJ>h Լ ռ ռ ռ`HJ>݌h Hh݌`)`ȔЖȔЖȠHIHHHHhHH݌hHhHh݌H6 VDP (ED Z $0x8x D- ܸDD# H8`?E Vk *f???0xE Hh D#-EEE8` D ܸx D - ܸx8`-0ݩ?ʥD EEE`   LDcpq` [` ~  LӜu`".Q`pNФbptťܥm2<(-Py0\|e<6e<g< JJJJj귍hI  aUL@ kU8  L  Q^R(jQ0l^l\  wUuW ԧ H h@ [_ /QSIRb_L`LLLL`ª`LQLYLeLXLeLee ўQH\(h0L& Ꝥ$`( R \ZLl8 ўR HH\`\Z[YS6`LxQɿu3'RͲʎRʎ]]]ɍuL͟ɍ}RLRɍg^H8 ^hZLɍR LͲɊRR% QLܤͲ Z@ -^ ş\[Z QY\[Z8`l6Lş_Ȍb_Ͳ] )Y h( ֭ͲLɍ [LLĦ__ ^ 9 LҦ3 9 a   0LjLY u< (_9 ˭ɠuɠK_9 ?LˆʎõĵL õ ĵµ aµ`` L̦µ_bJLuLz`  ȟ QlXJ̥KlV  ȟ QlV eօ3L e3L &RL &QL d L4 Ne)n `@-eff L f`L . tQLѤ LҦL` OPu d L Ne)noon 8ɍ` ^f\õL ^NR  RΩLҦ)\Z ʽ LHv 3h`0h8` [L NС õ`A@` ŵL^Lõ`  \ 濭0 \  ȟ Q ^\lZl^?cqH şch`fhjõĵ@OAP`u@`@&`QR`E Ls  @DAE@u`8` %@ @A@`@`@A`Mµ ) LЦ`8@AWc@8@-@HAȑ@hHȑ@ȑ@hHȑ@Ȋ@ch8&ȑ@Hȑ@Ah@LHȑ@ȑ@ htphso`hMhL`9V8U897T6S67`INILOASAVRUCHAIDELETLOCUNLOCCLOSREAEXEWRITPOSITIOOPEAPPENRENAMCATALOMONOMOPRINMAXFILEFINBSAVBLOABRUVERIF!pppp p p p p`" t""#x"p0p@p@@@p@!y q q p@  LANGUAGE NOT AVAILABLRANGE ERROWRITE PROTECTEEND OF DATFILE NOT FOUNVOLUME MISMATCI/O ERRODISK FULFILE LOCKESYNTAX ERRONO BUFFERS AVAILABLFILE TYPE MISMATCPROGRAM TOO LARGNOT DIRECT COMMANč$3>L[dmx- ( 0 Ϡ@跻~!Wo*9~~~~ɬƬ~_ j ʪHɪH`Lc (L ܫ㵮赎 ɱ^_ J QL_Ls贩紎 DǴҵԵƴѵӵµȴ 7 ַ :ŵƴѵǴҵȴµ納贍﵎ٵ്ᵭⳍڵL^ѵ-I `  4 ò-յ!  8صٵ紭ﵝ 7L (0+BC  7L HH`LgL{0 HH` õL H hBL BH [ h`Lo õ ڬL B ڬ LʬH hB@ յյ [L (ȴ) ȴ 7L L ( L (ȴL{ƴѵ洩ƴǴҵ 7 ^* B0 HȱBh ӵԵ 8 L8 ݲ` ܫ  / / ED B / / ]ƴS0Jȴ ȴ)  紅D贅E B ƴ  / 0L Ν `HD٤DEEhiHLGh ` ŵBѵ-` ѵB-` ܫ XI볩쳢8 DH E𳈈췍Ȍ X0 · JLǵBȵC`,յp` 䯩 R-յյ`յ0` K R-յյ`ɵʵӵԵ` 4 K ( ѵҵLBȱBL8` DBHBH : ַ޵BȭߵBhhӵԵ RBܵmڵ޵ȱBݵm۵ߵ` 䯩LR˵̵ֵ׵`êĪLR E( 8` R` ELRŪƪ`췌 յյI뷭鷭귭ⵍ㵍跬ª 뷰` Lf ݵܵߵ޵ ^`8ܵ i B8` 4L ֵȱB׵ ܯ䵍൭嵍 ` DȑB׵Bֵ  ַ յյ`굎뵎쵬 뵎쵌``õĵBCõĵ`µµ`L õBĵCصص Qƴ0"Bƴ 󮜳` 0۰ϬBƴ8`i#`ЗLw!0>ﵭ` m ﳐ 7i볍 8 ЉLw`H h ݲL~ `浍국䵍뵩嵠Jm赍嵊mjnnn浈ۭm浍浭m䵍䵩m嵍`"L ŵ8ŵH ~(`# d ֠z# u`R24 f7pI16+zSP%(ADDR)0910^SP%(ADDR),SP%(ADDR1),SP%(ADDR2),SP%(ADDR3)nADDRADDR4uIADDRADDR48ADDR865ADDR116300DP,0DP1DP790AD(YEZE)CYIRO$ROEI148:SP%(I864)SP%(I):IW:"READY";A$d::DP0o ADDR1230,32(DP1) 4*I164SP%(ADDR)O840>SP%(ADDR),SP%(ADDR1),SP%(ADDR2),SP%(ADDR3)HADDRADDR4RI\ADDRADD,1)COCTV(I,2)SOCTV(I,3)aT3SPCTV(I,1)(SOCPCOSTSP)V(I,2)(STSOSPCOCP)V(I,3)V(I,1)T1:V(I,2)T2:V(I,3)T3XT1:YT2:ZT3XEXS1YC1:YEXC1C2YS1C2ZS2:ZEXS2C1YS2S1ZC2RHO SV(I,1)D(XEZE)CX:SV(I,2)DING MAIN MENU PROGRAM !!":;rE1010,P0:1011,P1:1012,P2nrFH$(8):N$"MENU":N$N$N$H$H$H$H$:D$(4)rJ:D$"RUN"N$OOVES CURSOR TO VERTICAL LINE (ROW) ON SCREEN SPECIFIED BY THE ARGUMENT IN THE RANGE 1-24."qN:"THIS COMMAND MAY BE USED WITH OR WITHOUTLINENUMBERS."qU100:2155q':"FINISHED !!":q0q:::10q":"PLEASE WAIT !!":::r,:"RE-LOAF THE STRING CHARACTERS IS RETURNED."pF::"EXAMPLES":::"PRINT VAL("I$"123"I$") YIELDS: 123"::"PRINT VAL("I$"6 DOLLARS"I$") YIELDS: 6"::"PRINT VAL("I$"$100"I$") YIELDS: 0"::pH"SEE ";::"STR$(A)";::" FOR REVERSE."pK100:2155[qL"M";::"NOTRACE";::"."&oA100:2155oB"ATTEMPTS TO INTERPRET A STRING, UP TO THE FIRST NON-NUMERIC CHARACTER, AS A NUMBER. IF NO NUMBER OCCURS BEFORE THE FIRST NON-NUMERIC CHARACTER '0' IS RETURNED, OTHERWISE THE NUMERIC"&pC"EQUIVALENT O WILL NOW BE IN NORMAL TEXT MODE.":dn/"THIS COMMAND MAY BE USED WITH OR WITHOUTA LINENUMBER."sn7100:2155o8"CAUSES LINE NUMBER OF EACH STATEMENT TO BE DISPLAYED ON SCREEN AS IT IS OBEYED (EXECUTED). THIS STATEMENT MAY ONLY BE TURNED OFF BY ANGENT OF 'X' (RADIANS)."Am%:"E.G."::"PRINT TAN(1)"::(1)Pm-100:2155'n."SETS SCREEN TO THE USUAL NON-GRAPHICS MODE, AND RESETS THE TEXT WINDOW TO THE FULL SCREEN, I.E. IF APPLE WAS IN GRAPHICS MODE, OR IF THE SCREEN WAS LOCKED ITE LEFT MARGIN.";Rl" IF THE COLUMN HAS BEEN PASSED THE NEXT AVAILABLE IS USED."l::"EXAMPLE":::"PRINT TAB(10);"(34)"ABC"(34)";TAB(25);"(34)"DEF"(34):10);"ABC";25);"DEF"l::"SEE ALSO ";::"HTAB":l#100:2155m$"RETURNS THE TSED IN A ";::"PRINT";::" STATEMENT, AND BE FOLLOWED IMMEDIATELY BY A SEMI-COLON.";l"THE NEXT ITEM OF OUTPUT MAY BE PRINTED IN ANY COLUMN ACROSS THE SCREEN, DEPENDING ON THE VALUE OF 'X'. THE COLUMNS ARE NUMBERED 1-40, COUNTING FROMTHEATE A STRING OF THE CHARACTERS REPRESENTING THAT VALUE, I.E. "(34)"123"(34)", IN A$.";j" THIS STRING CANNOT ITSELF BE OPERATED UPON MATHEMATICALLY."j:"SEE THE FUNCTION ";::"VAL";::" FOR THE REVERSE."j100:2155Wk"MUST BE U"RETURNS A STRING THAT REPRESENTS THE VALUE OF THE NUMERIC VARIABLE 'A'."_i:"E.G.":i"IF THE NUMERIC REAL VARIABLE 'A' HAS A VALUE OF 123, I.E. ONE HUNDRED AND TWENTY THREE, THE STATEMENT":i:"LET A$=STR$(A)"::Zj:"WILL CRUSES A PROGRAM TO CEASE EXECUTION AND DISPLAY THE LINE NUMBER AT WHICH IT STOPPED. CONTROL IS PASSED TO THE USER. THE PROGRAM MAY BE CONTINUED (IF POSSIBLE) USING ";::"CONT";::"."h100:2155hU13601,3610,3620,3630,3640,3650,3660Oi:"SPEED IS NOW AT SLOWEST. ONCE SPEED IS CHANGED IT WILL STAY AT THE NEW SPEED UNTIL RESET."::"SPEED=255":255::"SPEED IS NOW BACK TO NORMAL"g 100:2155g "RETURNS THE SQUARE ROOT OF X."g :"PRINT SQR(9) YIELDS 3"g100:2155h"CAF"(34):"ABC"5)"DEF"%f 100:2155f "SETS SPEED OF OUTPUT TO SCREEN OR OTHER INPUT/OUTPUT DEVICES. THE SLOWEST RATE IS 0, AND THE FASTEST IS 255 (DEFAULT SPEED)."f :"THIS COMMAND MAY BE USED WITH OR WITHOUTLINENUMBERS."g :"SPEED=0"::0SIN(1)"::(1)e 100:2155e "USED IN A ";::"PRINT";::" STATEMENT, INTRODUCES X SPACES BETWEEN THE LAST ITEM PRINTED ANDTHE NEXT ITEM (PROVIDED SEMI-COLONS USEDBEFORE AND AFTER)."f ::"EXAMPLE":::"PRINT "(34)"ABC"(34)";SPC(5);"(34)"DE 0 IF X IS ZERO +1 IF X IS POSITIVE"d :::"EXAMPLES":::10);"SGN(-4) = -1":10);"SGN(0) = 0":10);"SGN(4) = 1"d 100:2155d "RETURNS THE SINE OF THE ARGUMENT (RADIANS)."e :"E.G."::"PRINT GRAM WITH THE SAME NAME (UNLESS LOCKED)."::"IF USED WITHOUT FILENAME SAVING ON CASSETTE TAPE IS ASSUMED. IF NO CASSETTERECORDER LINKED THEN APPLE WILL HANG-UP.c "TO RECOVER PRESS 'RESET'."c 100:2155Id "RETURNS -1 IF X IS NEGATIVE .B. NO QUOTESAROUND PROGRAM NAME)."2b 100:2155b :"SAVE";::" SAVES PROGRAM CURRENTLY IN MEMORY ONTO DISK.":b "N.B.NO QUOTES AROUND PROGRAM NAME ON APPLE."::c :"WARNING":::"THIS COMMAND WILL OVERWRITE ANY PRO(91);"LINENUMBER]":a "CLEARS ALL VARIABLES AND POINTERS AND BEGINS EXECUTION AT THE INDICATED LINE, IF GIVEN, OTHERWISE IT BEGINS AT THE LOWEST LINE NUMBER."#b :::"RUN";::": LOADS AND RUNS THE PROGRAM NAMED FROM DISK. (N' FUNCTION AND MULTIPLICATION.":` "METHOD:-MULTIPLY THE RANDOM NO. BY THE INCLUSIVE RANGE, ADD THE LOWER LIMIT, AND TRUNCATE."::"E.G. PRINT INT(RND(1)*(B-A+1)+A) WILL PRODUCE A RANDOM NUMBER BETWEEN 'A' AND 'B'."` 100:2155a :"RUN";::155@_ "RETURNS A REAL NUMBER IN THE RANGE 0-0.999999999"y_ ::"EXAMPLE"::"PRINT RND(1) MIGHT YIELD: "(1):!` "WE CAN OF COURSE MANIPULATE THIS FUNCTION TO OBTAIN A RANDOM NO. WITHIN ANY PRESCRIBED INTEGER LIMITS BY USING THE 'INT20,3530,3540,3550,3560,3570,3580,3590B^ "EXAMPLE:":"-------":\^ :"RIGHT$(A$,X)"::^ "RETURNS THE 'X' RIGHTMOST CHARACTERS IN THE STRING A$."^ :"IF A$="(34)"MARY"(34)", AND IF X=2, THEN THE LETTERS 'RY' WILL BE OUTPUT."_ 100:2RROR-HANDLING ROUTINE (SEE ";::"ONERRGOTO";::") CAUSES THE RESUMPTION OFTHE PROGRAM AT THE STATEMENT IN WHICH THE ERROR OCCURRED."] :"THIS COMMAND MAY ONLY BE USED WITHIN A PROGRAM, I.E. WITH A LINE NUMBER."] 100:2155%^ U13501,3510,35NE 200 WILL RESET THE POINTER TO THE FIRST DATA ITEM IN THE LIST, I.E. '5'. IT IS NOW POSSIBLE TO RE-READ THE DATA LIST FROM THE ";\ "START. X,Y, AND Z WILL NOW BE ASSIGNED THE VALUES 5,6, AND 7."\ 100:2155] "AT THE END OF AN EETS THE DATA LISTPOINTER TO THE FIRST DATA ITEM IN THE LIST."T[ ::"EXAMPLE":[ "10 READ A,B,C":"20 DATA 5,6,7":"200 RESTORE":"210 READ X,Y,Z":\ "EXPLANATION:- AFTER LINE 10 THE DATA 'POINTER' WILL BE POINTING TO THE END OFTHE LIST. LIEM";:Z " ON THE SAME STATEMENT LINE WILL MERELY BE LISTED. THEY WILL NEVER BE EXECUTED. THE STATEMENT 'LET C=0' IN LINE 300 ABOVE WILL NOT BE EXECUTED."Z 100:2155?[ 4:"USED IN CONJUNCTION WITH ";::"READ/DATA"::"STATEMENTS ONLY. IT RESHELP ANY PROGRAMMER TO UNDERSTAND A PROGRAM LISTING."MY ::"EXAMPLES":Y "10 REM WAGES PROGRAM":"100 REM SORT NAMES ALPHABETICALLY":"300 REM INITIALISE COUNTER:LET C=0":Y :"WARNING";:Z ":-ANY TEXT (INCLUDING STATEMENTS)AFTER ";::"RLLOW THIS STATEMENT, NO QUOTES NEEDED. IT ALLOWS TEXT TO BE INSERTED INTO A PROGRAM AS REMARKS.THE RUNNING OF THE PROGRAM IS NOT AFFECTED. IF USED IN A MULTI-STATEMENT LINE IT"7Y "MUST BE THE LAST STATEMENT IN THE LINE."::"REM";::" IS USED TO ORDER. STRING DATA ITEMS WHICH INCLUDE COMMAS, COLONS, OR KEYWORDS, SHOULD BE IN DOUBLE QUOTES. DATA LINES MAY BE ANYWHERE IN A PROGRAM, BUT ARE TAKEN IN ORDER OF APPEARANCE. (SEE ALSO ";::"RESTORE";:W ").":100:2155X 4:"ANY TEXT MAY FO)V "NOTE:- THIS STATEMENT MAY BE USED IF THEDATA ITEMS ARE KNOWN WHEN THE PROGRAM ISBEING WRITTEN. A MIXTURE OF VARIABLE TYPES IS ALLOWED, BUT THERE MUST BE A DATA ITEM TO MATCH EVERY VARIABLE BEING READ, AND THEY MUST BE IN THE ";W "CORRECT S LISTED (SEPARATED BY COMMAS - NONE AFTER LAST), WITH SUCCESSIVE VALUES FROM THE DATA ITEMS LISTED IN ";::"DATA";::" STATEMENTS."U :"EXAMPLE":V "10 READ A,B2,C$,D3$,E6$":"20 DATA 234,678,JOHN,"(34)"BROWN,JOHN"(34)","(34)"DATA"(34I-COLON => NO SPACES TO BE LEFT":"NO TERMINATOR (I.E.CARR.RET.)=>NEW LINE"Tx :"N.B.";::"PRINT TAB(X);";::" MAY BE USED FOR MORE PRECISE LAYOUT, WHERE 'X' MAY BE PRE- DEFINED IN RANGE 1-40."Ty 100:2155Tz T{ 4U~ "ASSIGNS THE VARIABLE BE USED TO PRINT BLANK LINES (ON ITSOWN), MESSAGES (IN DOUBLE QUOTES),SINGLEVARIABLES, AND EXPRESSIONS, OR ANY COMBINATION OF THESE."St Su "DELIMITERS/TERMINATORS"Sv "----------------------"KTw "COMMA => NEW FIELD (16,16,8 ON APPLE)":"SEMCOMMAND IS AVAILABLE IN APPLESOFT, BUT NOT IN ALL VERSIONS OF BASIC. IN SOME VERSIONS IT MAY HAVE A DIFFERENT MEANING."Ro 100:2155Rp :::"PRINT";::" EXAMPLE:":Rq :"PRINT";::" "(34);"MESSAGE";(34);",X;A*(B-C)^D":Rr Ss "MAYEXT WINDOW. THE NORMAL VALUE FOR THIS IS 40. THE EXAMPLE HERE SETS THE WIDTH TO 30."gQe 100:2155Qf "RETURNS THE CURRENT HORIZONTAL POSITION OF THE CURSOR (0-39)."Qh :"THIS COMMAND MAY BE USED EITHER WITH OR WITHOUT LINENUMBERS.":|Rj "THIS ST ARGUMENT."P^ :"THIS COMMAND ENABLES US TO PUT A DESIREDVALUE IN THE ABOVE RANGE INTO A MEMORY LOCATION AVAILABLE TO US.":P` "E.G.":Pb "POKE 33,30":XQc "THIS EXAMPLE PUTS THE VALUE 30 INTO THE STORE LOCATION RESERVED FOR THE WIDTH OFTHE T WIDTH OF THE TEXT 'WINDOW' WHICH IS NORMALLY THE FULL WIDTH, UNLESS CHANGED."fO[ 100:2155 P\ "STORES THE BINARY EQUIVALENT OF THE SECOND ARGUMENT 'Y' (IN RANGE 0-255) INTO THE MEMORY LOCATION WHOSE DECIMAL ADDRESS IS GIVEN BY THE FIRMMAND ENABLES US TO EXAMINE THE CONTENTS OF ANY MEMORY LOCATION. THE RESULT WILL BE A DECIMAL NUMBER IN THE RANGE 0-255, E.G.":NX "PRINT PEEK(33)"::"WILL NORMALLY OUTPUT:"::(33)WOY :"THIS IS THE CONTENTS OF THE MEMORY LOCATION FOR THEATEMENT."]MJ :"THIS STATEMENT CAN ONLY BE USED IN PROGRAMS, I.E. WITH A LINE NUMBER."eMK :ML "SEE ALSO ";::"RESUME";::"."MQ 100:2155MR "RETURNS THE CONTENTS, IN DECIMAL, OF THEBYTE OF THE SPECIFIED DECIMAL ADDRESS."NT :"THIS COLG 100:2155JLH U13401,3410,3420,3430,3440,3450,3460,3470,3480,3490 MI "THIS IS USED TO BRANCH TO ONE'S OWN ROUTINE TO AVOID STANDARD ERROR MESSAGESAND AVOIDING A NECESSARY HALT IN THE RUNNING OF A PROGRAM. A LINENUMBER FOLLOWS THIS STES A GOTO TO THE LINE NUMBER INDICATED BY THE VALUE OF THE EXPRESSIONFOLLOWING ";::"ON";::"."{KA ::"EXAMPLE":KB "50 ON X GOTO 100,200,300,400,500":LD "THE ABOVE MEANS:"::"IF X=1 GOTO 100":"IF X=2 GOTO 200":"IF X=3 GOTO 300, ETC.":0":"IF X=3 GOSUB 300, ETC.":J< "IN EACH CASE CONTROL WOULD RETURN TO THESTATEMENT IMMEDIATELY FOLLOWING THE"::"ON-GOSUB";::"."J= 100:2155J> 3:11:"SYNTAX IS:":J? :"ON";::"";::"GOTO";::"100,200,300,ETC":fK@ "EXECUT00,300,ETC":I6 "EXECUTES A GOSUB TO THE LINE NUMBER INDICATED BY THE VALUE OF THE EXPRESSIONFOLLOWING ";::"ON";::"."I7 ::"EXAMPLE":I8 "50 ON X GOSUB 100,200,300,400,500":J: "THE ABOVE MEANS:"::"IF X=1 GOSUB 100":"IF X=2 GOSUB 20::"INVERSE";::" OR ";::"FLASH";:H- " MODES. IN EACH CASE OUTPUT STAYS IN THE SPECIFIED MODE UNTIL CHANGED. INPUT IS ALWAYS IN NORMAL MODE, HOWEVER."H3 100:2155H4 3:11:"SYNTAX IS:": I5 :"ON";::"";::"GOSUB";::"100,2CREEN. (SEE 'HOME' FOR THIS).".G 100:2155G* "SETS VIDEO MODE TO THE USUAL WHITE LETTERS ON BLACK BACKGROUND FOR BOTH INPUT AND OUTPUT."'H, ::"THIS COMMAND MAY BE USED WITH OR WITHOUTLINENUMBERS. IT IS NORMALLY USED TO RETURN FROM "; YOU ";::"SAVE";::" ANY PROGRAM IN MEMORYTHAT YOU WISH TO KEEP BEFORE YOU TYPE ";::"NEW";::". IF YOU HAVE THIS STATEMENT WITHIN A PROGRAM BE SURE TO SAVE IT BEFORE YOU RUN IT."G :"N.B. THIS COMMAND ONLY CLEARS MEMORY, ITDOES NOT CLEAR THE S EXAMPLE, IF 'Y' WAS MISSING THEN THE OUTPUT WOULD BE 'ARY'."RE 100:2155E "CLEARS MEMORY, DELETING CURRENT PROGRAM AND ALL VARIABLES."E :"THIS COMMAND MAY BE USED WITH OR WITHOUTLINENUMBERS, BUT ";::"BEWARE";::"."::F "MAKE SURE34)", IF X=2, AND IF Y=1, THEN THE OUTPUT WILL BE THE LETTER 'A'.":KD D :"MID$(A$,X)";::" RETURNS ALL THE RIGHTMOST CHARACTERS IN THE STRING A$, STARTING ATTHE XTH CHARACTER (I.E. WHEN THE LAST ARGUMENT IS MISSING).";CE " IN THE ABOVE N."C ::"E.G.":7C "PRINT LOG(10)"::(10)::_C "NOTE:- SEE 'EXP(X)' FOR REVERSE."nC 100:2155C :"MID$(A$,X,Y)";::" RETURNS THE 'Y' CHARACTERS IN THE STRING A$, STARTING AT THE X'TH CHARACTER."ED :"E.G."::"IF A$="(34)"MARY"(ISSAPPEAR AND YOU WILL BE LEFT WAITING INDEFINITELY. TO RECOVER"cB "PRESS ";::"RESET";::"."B ::"NOTE:- SEE ALSO ";::"RUN";::"."B 100:2155C "RETURNS NATURAL LOGARITHM (TO THE BASE 'E') OF THE SPECIFIED ARITHMETIC EXPRESSIOD INTO MEMORY FROM DISK."RA :"N.B. NO QUOTES AROUND PROGRAM NAME ON APPLE."iA :::"WARNING":AB ::"LOAD";::" WITHOUT A PROGRAM NAME EXPECTS A PROGRAM FROM CASSETTE TAPE. IF THERE IS NO CASSETTE RECORDER LINKED TO APPLE THECURSOR WILL D:" LISTS ALL LINES IN RANGE 100-200.":g@ :"LIST -100";::" LISTS ALL LINES UP TO LINE 100.":@ :"LIST 100-";::" LISTS ALL LINES FROM LINE 100 TO THE END OF THE PROGRAM.":@ 100:2155A :"LOAD";::" READS PROGRAM NAMET' IS MORE MEANINGFUL."`? :::"LET";::" MAY BE USED WITH OR WITHOUT A":"LINENUMBER."u? 100:34,1:2155? :"LIST";::" ON ITS OWN LISTS PROGRAM IN MEMORY IN FULL.":? :"LIST 100";::" LISTS LINE 100 ONLY.":+@ :"LIST 100-200";:S":h> "10 LET A=6":"20 LET B(3)=A*B+7-INT(X)":"30 LET N$ = "(34)"JOHN"(34):"40 LET A=ASC(A$)":? "SOME SYSTEMS (INCLUDING APPLE) ALLOW THEUSE OF 'LET' TO BE OPTIONAL, E.G. 10 A=6 WOULD DO INSTEAD OF LINE 10 ABOVE. HOWEVER TO USE 'LE OF THE EXPRESSION ON THE RIGHT."= :"THERE MAY ONLY BE A SINGLE VARIABLE (OR ARRAY ELEMENT) ON THE LEFT OF THIS STATEMENT. THE EXPRESSION MAY BE A SINGLE VARIABLE, CONSTANT, ANY FUNCTION OR COMBINATION OF THESE.":> 100::"EXAMPLE< U13301,3310,3320,3330,3340,3350,3360,3370,3380,3390S< 3:8:"SYNTAX IS:":< :"LET";::" = "::34,(37):'= "THE EXPRESSION ON THE RIGHT IS FIRST EVALUATED. THE VARIABLE NAME ON THE LEFTIS THEN ASSIGNED THE VALUE; :"E.G.":^; "IF A$="(34)"MARY"(34)", AND X=2, THEN THE LETTERS 'MA' WILL BE OUTPUT."m; 100:2155; "RETURNS THE NUMBER OF CHARACTERS IN THE STRING A$."; :"E.G."::"IF A$="(34)"MARY"(34)", THEN THE OUTPUT WILL BE 4."; 100:21559OR WITHOUT A LINENUMBER. ALL OUTPUT (NOT INPUT FROM KEYBOARD) WILL BE IN THIS MODE UNTIL EITHER A 'NORMAL' COMMAND OR A 'FLASH' COMMAND IS EXECUTED.": 100:2155: :"LEFT$(A$,X)";::" RETURNS THE 'X' LEFTMOST CHARACTERS IN THE STRING A$."L TO) IN VALUE TO THE NUMBER IN QUESTION.">9 100:21559 "SETS THE VIDEO MODE SO THAT THE OUTPUT PRINTS AS BLACK LETTERS ON WHITE ON THE SCREEN. USE ";::"NORMAL";::" TO RETURN TO WHITE ONBLACK.": :"THIS COMMAND MAY BE USED EITHER WITH VEN ARGUMENT."8 :"E.G.":d8 "PRINT INT(6.4) - PRODUCES 6"::"PRINT INT(6.9) - PRODUCES 6":8 :"WARNING":::"PRINT INT(-6.4) - PRODUCES -7"/9 :"NOTE:- THIS FUNCTION ON ITS OWN ROUNDS DOWN ANY NUMBER TO THE WHOLE NUMBER LESSTHAN (OR EQUA A SEPARATE 'PRINT' STATEMENTREQUESTING EXPLICIT DATA. MORE THAN ONE ITEM MAY BE REQUESTED IN THE SAME 'INPUT' STATEMENT BY USING COMMAS AS SEPARATORS BETWEEN VARIABLES."7 100:21558 "RETURNS THE LARGEST INTEGER LESS THAN OREQUAL TO THE GIOGRAM IS RUNNING, IN RESPONSE TO EITHER A QUESTION MARK OR AN OPTIONAL PROMPT MESSAGE."d6 x6 :"EXAMPLES":6 "10 INPUT A : REM '?' OUTPUT":"20 INPUT "(34)"ENTER NUMBER"(34)";A":7 "LINE 10 IS BAD PROGRAMMING, UNLESS PRECEDED BYGRAM. ALL SYSTEMS DONOT ALLOW A STATEMENT FOLLOWING THE 'THEN'."S5 100:2155n5 3:10:"SYNTAX IS:":5 :"INPUT";::(91);(34);"MESSAGE";(34);";";"]";"";(91);", VARIABLE, ETC ]"^6 :"WAITS FOR USER TO ENTER DATA WHILE THE PR:"EXAMPLES":4 "100 IF A=B THEN 150":"OTHER STATEMENTS (EXECUTED IF A<>B)":"150 PRINT "(34)"NUMBERS EQUAL"(34):::"OR":4 "100 IF A=B THEN PRINT "(34)"NUMBERS EQUAL"(34):D5 "NOTES:- A JUMP MAY BE MADE FORWARDS OR BACKWARDS IN THE PRO:"IF";::"";::"THEN";::""F3 3 "IF THE CONDITION IS TRUE THEN THE INSTRUCTION(S) FOLLOWING ";::"THEN";::" IN THE SAME LINE WILL BE EXECUTED, OTHERWISE NEXT STATEMENT LINE WILL BE EXECUTED."4 :AB' FUNCTION MUST BE USED WITH THE 'PRINT' STATEMENT, AND THE CURSOR MAY ONLY MOVE FORWARDS."2 "'HTAB' ENABLES THE CURSOR TO MOVE EITHERFORWARDS OR BACKWARDS, AND IS USED AS A STATEMENT IN ITS OWN RIGHT."2 100:21552 3:10:"SYNTAX IS:":@3 D. THE SAME EFFECT AS 'HOME' MAY BE ACHIEVED BY 'CALL-936' OR 'ESC/@."V1 100:21551 "MOVES THE CURSOR LEFT OR RIGHT TO THE SPECIFIED COLUMN (1-40) ON THE SCREEN. (APPLESOFT).]2 :"MAY BE USED WITH OR WITHOUT LINE NUMBER.NOTE THAT THE USUAL 'TOTO 300":"200 GOTO 50"::/ "MAY ALSO BE USED IN DIRECT MODE, I.E. WITHOUT LINENUMBER. THIS IS SOMETIMES USEFUL AS GOTO DOES NOT CLEAR VARIABLES,WHEREAS 'RUN' WOULD RESET ALL VARIABLES TO ZERO OR THE NULL STRING."/ 100:2155{0 "MOVES THE CUOGRAM BRANCHES TO THE STATEMENT IMMEDIATELY FOLLOWING THE MOSTRECENTLY EXECUTED ";::"GOSUB";:i. "."x. 100:2155. "CAUSES THE PROGRAM TO BRANCH (JUMP) UNCONDITIONALLY, FORWARDS OR BACKWARDS TO THE INDICATED LINE.". "E.G.":/ "100 G"600 GOSUB 100:REM TO SUBROUTINE @ L.100 610 REM RETURN TO HERE":::"800 GOSUB 100:REM TO SUBROUTINE @ L.100 810 REM RETURN TO HERE":`. "CAUSES THE PROGRAM TO BRANCH TO THE INDICATED LINE. WHEN A ";::"RETURN";::" STATEMENT IS EXECUTED THE PRREQUIRED WITH 'GET'."$, 100:2155_, U13201,3210,3220,3230,3240,3250,3260,3270,3280,3290y, 3:15:": EXAMPLE":, "100 REM SUBROUTINE BEGINS"::"BODY OF SUBROUTINE"::"150 RETURN:REM END OF SUBROUTINE => BACKTO MAIN PART OF PROGRAM"::- DIGITS) MAY BE SOUGHT USING A STRING VARIABLE.":,| "IN BOTH CASES A SEPARATE 'PRINT' STATEMENT IS REQUIRED IF IT IS DESIRED TO OUTPUT THE CHARACTER. IN NEITHER CASEIS IT REQUIRED TO PRESS THE 'RETURN' BUTTON. A LINENUMBER HOWEVER IS ALWAYS IT ON THE SCREEN, AND WITHOUT REQUIRING THAT THE"::"RETURN";::" KEY BE PRESSED - EXAMPLES:"j*w *x "10 GET A":"20 GET A$":1+z "A SINGLE DIGIT MAY BE SOUGHT AT THE KEYBOARD USING A NUMERIC REAL VARIABLE. ANY SINGLE CHARACTER (INCLUDING ED.":)r "CHECKING OF THE COUNTER VARIABLE IS DONEAT THE END OF THE LOOP, AND SO THE INSTRUCTIONS WITHIN THE LOOP ARE ALWAYS EXECUTED AT LEAST ONCE (APPLESOFT).")u 100:2155d*v "FETCHES A SINGLE CHARACTER FROM THE KEYBOARD, WITHOUT SHOWINGTHE"::"NEXT";::" ARE EXECUTED FOR ALL THE VALUES OF 'X' BETWEEN 'A' AND 'B', IN STEPS OF 'C'.")q "THE SQUARE BRACKETS MEAN OPTIONALITY. IFTHE STEP OPTION IS OMITTED A STEP SIZE OF ONE IS ASSUMED. THE STEP SIZE MAY BE NEGATIVE OR FRACTIONAL IF DESIR BUT OUTPUT WOULD BE IN INVERSE)."1'k 100:2155K'l 3:10:": EXAMPLE":'m :"FOR";::" X = A ";::"TO";::" B ";::(91);"STEP C ]":'n "STATEMENT(S) TO BE REPEATED"::"NEXT";::" X":b(p "THE STATEMENTS BETWEEN THE ";::"FOR";::" AND NORMAL AND INVERSE (APPLESOFT)."2&c :"'d "MAY BE USED WITH OR WITHOUT LINENUMBER. ALL SUBSEQUENT OUTPUT (NOT INPUT FROM KEYBOARD) WILL BE IN FLASHING MODE UNTILA 'NORMAL' STATEMENT OR COMMAND. (NOTE THAT 'INVERSE' WOULD ALSO STOP FLASHINGE VALUE OF 'E' RAISED TO THE POWER INDICATED BY THE ARGUMENT. (NATURAL ANTI-LOG OF X)."%Y :"E.G."::"PRINT EXP(0.5)"::(0.5)::%Z "NOTE:- SEE 'LOG(X)' FOR REVERSE."%a 100:2155*&b "SETS VIDEO MODE TO FLASHING, I.E. ALTERNATELY"$M 100:34,1:2155y$N "CAUSES A PROGRAM TO CEASE EXECUTION, ANDRETURNS CONTROL TO THE USER. NO MESSAGE IS PRINTED."$O :"E.G."::"1000 END"::"STOPS THE PROGRAM AT LINE 1000."::"NOTE:- NO FULL STOP AFTER 'END'."$P 100:2155_%X "RETURNS THSET ASIDE FOR THE ARRAY (MATRIX) 'D3$', I.E. 8*30.":$L "NOTES:- SOME SYSTEMS (INCLUDING APPLE) ALLOW ZERO SUBSCRIPTS. THUS A(0) IS ADDITIONALLY ALLOWED ABOVE. MULTI- DIMENSIONAL ARRAYS (INCLUDING STRINGS) ARE ALSO ALLOWED, AS IN 'D3$' ABOVE.q"I "ARRAYS MAY BE DIMENSIONED ON SEPARATE LINES, OR ON ONE LINE, AS ABOVE, USING COMMAS AS SEPARATORS.":1005#J "THE ABOVE EXAMPLE SETS ASIDE MEMORY SPACE FOR 15, 6, AND 30 ELEMENTS IN THE ARRAYS 'A', 'B2', AND 'C$'. SPACE FOR 240 ELEMENTS IS GUMENT REPRESENTS THE MAXIMUM SUBSCRIPT FOR THE ARRAY(S), E.G.":r!F "10 DIM A(15),B2(6),C$(20),D3$(8,30)":!G 34,(37):!H "ALL ARRAYS SHOULD BE DIMENSIONED BEFORE USE (DEFAULT HOWEVER IS 10). THEY MAY BEDIMENSIONED ONCE ONLY IN A PROGRAM.":COMMA IS NECESSARY. THIS COMMAND MAY BE USED WITHIN A PROGRAM (WITH A LINE NUMBER), BUT PROGRAM EXECUTION STOPS, AND AS THE PROGRAM HAS BEEN CHANGED THE COMMAND 'CONT' WILL NOT WORK." C 100:2155E!D "RESERVES MEMORY SPACE FOR ARRAYS WHERE THE AR LINES FROM LINE X TO LINE Y (INCLUSIVE) FROM THE PROGRAM."; :"E.G."::"DEL 50,80"::"DELETES ALL LINES THAT EXIST (IF ANY) BETWEEN LINE 50 AND LINE 80, INCLUDING LINES 50 AND 80 THEMSELVES.":: < "NOTES:- A DASH WILL NOT DO AS SEPARATOR;A GHT (IN LINE 10) IT WILL NOW BE GIVEN THE VALUE THE ARGUMENT HAS IN THE LINE IN WHICH THE FUNCTION IS CALLED (2, IN LINE20).";8 "THE COMPUTED VALUE OF THE FUNCTION IS NOW USED IN THE CALLING LINE (20)."9 100:34,1:2155=: "THIS REMOVES ALLE NAME), AND DEFINED (AS IN LINE 10). ONCE DEFINED IT MAY BE USED BY CALLING IT, THIS TIME WITH THE ARGUMENT (X) HAVING A STATED/COMPUTED VALUE (AS IN LINE 20)."5 1006 "WHEREVER (IF AT ALL) THE ARGUMENT (X) APPEARS IN THE EXPRESSION ON THE RIE ARGUMENT OF";::"FNA";::" WILL BE SUBSTITUTED FOR X IN THE DEFINED EXPRESSION, E.G."b1 2 "10 DEF FNA(X)=5*X^3 + 4*X^2":"20 PRINT FNA(2)"::"WILL PRODUCE 56"3 :34,(37):4 "THE FUNCTION MUST FIRST BE NAMED (USING VALID REAL VARIABLES MAY BE ANYWHERE IN THE PROGRAM, BUT DATAITEMS ARE TAKEN IN ORDER OF APPEARANCE.". :"(SEE ALSO ";::"RESTORE";::")."/ 100:2155\0 "THIS ENABLES THE PROGRAMMER TO DEFINE A FUNCTION AS BEING EQUAL TO A CHOSEN EXPRESSION. IN LATER USE TH(34)* "NOTES:- THERE SHOULD BE A DATA ITEM OF THE CORRECT TYPE TO MATCH EVERY VARIABLEBEING READ, AND THEY SHOULD BE IN THE CORRECT ORDER. ALSO STRING DATA ITEMS WHICH INCLUDE COMMAS, COLONS OR KEYWORDSSHOULD BE IN DOUBLE QUOTES.";T+ " DATA LINNONE AT END OFLINE), ARE LISTED IN THIS STATEMENT, AND ARE THEN AVAILABLE FOR USE, IN SEQUENCE, BY ";::"READ";::" STATEMENTS."' ::"EXAMPLE":( "10 READ A,B2,C$,D3$,E6$") "20 DATA 234,678,JOHN,"(34)"BROWN,JOHN"(34)","(34)"DATA"KSLASH ";::(92);::" IS DISPLAYED AT THE END OFTHE LINE BEING IGNORED."[ :"E.G.":m "10 REM ABC" "10 REM DEF"(92)! "LIST 10"" "10 REM ABC"% 100:2155& 4:"NUMERIC AND/OR ALPHANUMERIC DATA ITEMS, EACH SEPARATED BY COMMAS (HE ";::"RETURN";::" KEY MUST THEN BE PRESSED."A 100:2155| U13101,3110,3120,3130,3140,3150,3160,3170,3180,3190K "TELLS THE APPLE TO IGNORE THE LINE CURRENTLY BEING TYPED, WITHOUT DELETING ANY PREVIOUS LINE OF THE SAME NUMBER. A BACINE OF THE ARGUMENT (X), WHICH MUST BE IN RADIANS."g :"E.G."::"PRINT COS(20) PRODUCES:"::(20)v 100:21552 "MAY BE USED TO INTERRUPT A PROGRAM RUN OR LISTING. TO WORK WITH ";::"INPUT";::" IT MUST BE THE FIRST CHARACTER ENTERED, AND TUE AT THE NEXT INSTRUCTION. IT WILL NOT WORK AFTER A CHANGE IN PROGRAM STATEMENT(S), OR IF ANERROR HAS OCCURRED." ::"IT MAY NOT WORK PROPERLY AFTER ";::"RESET";::" AS SOME POINTERS AND STACKS ARE CLEARED." 100:21553 "RETURNS THE COSETS ALL NUMERIC VARIABLES TO ZERO AND ALL STRINGS TO NULL STRINGS (APPLESOFT)."l :"E.G."::"10 CLEAR"{ 100:2155 "IF PROGRAM EXECUTION HAS BEEN HALTED BY" :"STOP, END, CTRL/C OR RESET";::" (APPLESOFT)"t "THIS COMMAND WILL CONTIN X (WHICH MUST BE IN RANGE 0-255)." :"E.G."::"PRINT CHR$(65) PRODUCES THE LETTER 'A'. ":"PRINT CHR$(66) PRODUCES THE LETTER 'B'. ":"PRINT CHR$(7) BLEEPS THE BELL." ::"NOTE:- SEE ";::"ASC(A$)";::" FOR REVERSE." 100:2155P "SITTEN SUBROUTINES MAY ALSO BE CALLED USING THE COMMAND ";::"CALL(X)";::", WHERE THE ARGUMENT 'X' IS THE DECIMAL ADDRESS OF THE SUBROUTINE." 100:2155& "RETURNS THE CHARACTER THE ";::"ASCII";::" CODE OF WHICH IS SPECIFIED AS THE ARGUMENTRETURNS:"::(20)! 100:2155 "CAUSES THE EXECUTION OF A MACHINE LANGUAGE SUBROUTINE AT THE MEMORY LOCATION WHOSE DECIMAL ADDRESS IS SPECIFIED." :"E.G."::"CALL-936 CLEARS SCREEN (LIKE 'HOME' AND 'ESC/@')." :"USER-WR IS RETURNED." ::"NOTE:- SEE ";::"CHR$(A)";::" FOR REVERSE. USE"::"MID$()";::" TO OPERATE ON ANY CHARACTER OTHERTHAN THE FIRST IN A STRING." 100:2155 "RETURNS THE ARCTANGENT OF THE ARGUMENT (RADIANS)." :"E.G."::"?ATN(20)  100:2155n "RETURNS THE DECIMAL ";::"ASCII";::" CODE FOR THE FIRST CHARACTER IN THE ARGUMENT A$." :"E.G."::"IF A$="(34)"A"(34)" THEN 65 IS RETURNED."::"IF A$="(34)"BCD"(34)" THEN 66 IS RETURNED."::"IF A$="(34)"3"(34)" THEN 51::0$ T13000,3100,3200,3300,3400,3500,3600d U3010,3020,3030,3040,3050,3060,3070,3080,3090 "RETURNS THE ABSOLUTE VALUE OF THE ARGUMENT (X), I.E. THE SIGN IS IGNORED." :"E.G."::"PRINT ABS(6) YIELDS 6, AND"::"PRINT ABS(-6)=6" TO FINISH):";(7);(7);::" ";:400:Z8$"0"63000Z  N(Z8$):N1N66Ė1:958:2300r  T(N10):UNT10  N20N49ė:::"GOSUB-RETURN":::3201  N18N36ė:::"FOR-NEXT"::3180 N17ė:6::A$(N)::::3170! :3::A$(N) pJ19 z2);J;".";A$(J);= 15);J22;".";A$(J22);Z 29);J44;".";A$(J44);o (A$(J44))9ĺv J J1022 J;".";A$(J); 15);J22;".";A$(J22); 29);J44;".";A$(J44); (A$(J44))9ĺ J4 :"ENTER NO.(0 T,LOAD,LOG(X),MID$,NEW,NEXT,NORMAL,ON-GOSUB,ON-GOTO,ONERRGOTO RPEEK(X),"POKE X,Y",POS(0),PRINT,READ,REM,RESTORE,RESUME,RETURN,RIGHT$,RND(1),RUN,SAVE,SGN(X),SIN(X),SPC(X),SPEED=X,SQR(X),STOP,STR$(A),TAB(X),TAN(X),TEXT,TRACE,VAL(A$),VTAB(X) k:(7);(66) J166:A$(J):J *ABS(X),ASC(A$),ATN(X),CALL(X),CHR$(X),CLEAR,CONT,COS(X),CTRL/C,CTRL/X,"DATA",DEF FNA(X),"DEL X,Y","DIM A(X)",END,EXP(X),FLASH,FOR-NEXT,GET A$,GOSUB-RET= >GOTO,HOME,HTAB X,IF-THEN,INPUT,INT(X),INVERSE,LEFT$,LEN(A$),LET,LIS37) Z7$% Z7$(13)Z8$""ı8 Z7$(13)420B Z7$;k Z7$"0"Z7$"9"ĪZ8$Z8$Z7$:420 " ";::"RE-ENTER !!";:I12000:I::36,CH:37,CV:958:410  :::5); :"QUICK REFERENCE GUIDE TO BASIC"::34,1: A$j.P0(1010):P1(1011):P2(1012):1012,0:62000X D$(4):R$(13):I$(34)bc2000nd STALLn24::" PRESS 'RETURN' WHEN READY TO CONTINUE ";(7);x(16384)127120}Z9$:Z9$R$120:: Z8$"":CH(36):CV(                                        SP%(ADDR)0910CSP%(ADDR),SP%(ADDR1)SP%(ADDR2),SP%(ADDR3)SADDRADDR4ZIkADDRADDR48ADDR865ADDR116300DP,0DP1DP790DP1DP790A790O RO*I148:SP%(I864)SP%(I):I<:"READY";A$I::DP0T ADDR1g230,32(DP1)n 4y*I164SP%(ADDR)0840>SP%(ADDR),SP%(ADDR1)SP%(ADDR2),SP%(ADDR3)HADDRADDR4RI\ADDRADDR24f7pI16z3)FT3SPCTV(I,1)(SOCPCOSTSP)V(I,2)(STSOSPCOCP)V(I,3)hV(I,1)T1:V(I,2)T2:V(I,3)T3{XT1:YT2:ZT3XEXS1YC1:YEXC1C2YS1C2ZS2:ZEXS2C1YS2S1ZC2RHOSV(I,1)D(XEZE)CX:SV(I,2)D(YEZE)CYIRE(I,3)0620" XJE(I,1):KE(I,2)t bSP%(ADDR)SV(J,1):SP%(ADDR1)SV(J,2):SP%(ADDR2)SV(K,1):SP%(ADDR3)SV(K,2) lADDRADDR4 vI I14 T1CPCTV(I,1)(STCPSOSP)V(I,2)(SOSTCPSPCO)V(I,3)T2STV(I,1)COCTV(I,2)SOCTV(I, WYYEV(E2,2)" WZZEV(E2,3)L N(I,1)WXN(I,2)WYN(I,3)WZ0570Z E1S(I,1)e J24s E2S(I,J)~ K1N E(K,1)E2E(K,2)E1E(K,3)2:550 K E(N,1)E1:E(N,2)E2:E(N,3)1 NN1 &E1E2 0J :I DI16 N6U3V(S(I,2),3)V(S(I,1),3); @V1V(S(I,3),1)V(S(I,1),1)Z TV3V(S(I,3),3)V(S(I,1),3)q ^N(I,1)U2V3V2U3 hN(I,2)U3V1V3U1 rN(I,3)U1V2V1U2 |I XERHS2C1:YERHS2S1:ZERHC2 N1 I14 E2S(I,1) WXXEV(E2,1)D(YEZE)CY I# 1,4,2,11 1,2,3,1? 1,3,4,1M 2,4,3,2Y S(4,4)d I14o J14{ S(I,J) J,I N(4,3) RO136 I16:E(I,3)0:I I14 "U1V(S(I,2),1)V(S(I,1),1) ,U2V(S(I,2),2)V(S(I,1),2)  2TP.1:SP(TP):CP(TP)( < 0,0,34 F 1,0,0C P -.2, 1,0R Z -.2,-1,0f dV(4,3),SV(4,2)x nI14:X,Y,Z xV(I,1)X:V(I,2)Y:V(I,3)Z XEXS1YC1:YEXC1C2YS1C2ZS2:ZEXS2C1YS2S1ZC2RHO SV(I,1)D(XEZE)CX:SV(I,2) ROTATING PYRAMIDW THREE DIMENSIONAL ANIMATION WITH HIDDEN LINES ELIMINATEDt SP%(912):ADDR1:E(6,3)RHO15:THETA.5:PHI.9:D400CX140:CY96:S1(TH):C1(TH):S2(PH):C2(PH)(TN.1:TT.1:CT(TT):ST(TT):SO(TP):CP(TP)         H$(8):N$P"MENU":N$N$N$HH$H$H$H$8\Jv:D$"RUN"N$G(34)";C"0[?"110 PRINT "(34)"TOTAL "(34)";T"Z[?"120 PRINT "(34)"AVERAGE "(34)";A"i[?"130 END"[@900:Z9$(27)ı[gB[0[:::10[":"PLEASE WAIT !!":::[,:"RE-LOADING MENU PROGRAM !!":[E1010,P0:1011,P1:1012,P2'\F34)"ENTER NUMBER "(34)";N"GZ?"50 IF N=0 THEN 90 : REM TERMINATOR ?"sZ?"60 LET C=C+1 : REM INCREMENT COUNTER"Z?"70 LET T=T+N : REM ADD IN NUMBER"Z?"80 GOTO 40"Z?"90 LET A=T/C : REM CALCULATE AVERAGE"[?"100 PRINT "(34)"NO.OF NUMBERS"OUTPUT TOTAL"&YR?"11.OUTPUT AVERAGE"7Y\?"12.FINISH"MYf?900:Z9$(27)ı`Yz?:"PROGRAM":Y?"10 LET C=0 : REM INITIALISE COUNTER"Y?"20 LET T=0 : REM INITIALISE ACCUMULATOR"Y?"30 PRINT "(34)"ENTER '0' TO TERMINATE"(34)Z?"40 INPUT "("4.TEST NUMBER FOR TERMINATOR IF TERMINATOR THEN STEP 8 IF NOT THEN CONTINUE"X?"5.INCREMENT COUNTER"X ?"6.ADD NO.TO ACCUMULATOR"X*?"7.RETURN TO STEP 3"X4?"8.CALCULATE AVERAGE"X>?"9.OUTPUT NO.OF NUMBERS" YH?"10.LL FOLLOW."!W>900:Z9$(27)ıW>:"PROBLEM";::":- ENTER ANY NO.OF NUMBERS AT THEKEYBOARD, COUNT, TOTAL,AND AVERAGE THEM."W>34,(37):W>:"ALGORITHM":W>"1.INITIALISE COUNTER"W>"2.INITIALISE ACCUMULATOR"W?"3.ENTER A NUMBER"iX ?UGHLY FIRST. A METHOD OF ARRIVING AT AN ANSWER SHOULD BE EVOLVED WITH THE AID OF A FLOWCHART (STEPS"V>"REPRESENTED IN DIAGRAMMATIC FORM) AND/ORA ALGORITHM (STEPS IN WRITTEN FORM).":V> W>"AN ALGORITHM FOR THE ABOVE PROBLEM, AND A PROGRAM WIBER OF NUMBERSAT THE KEYBOARD, USING A TERMINAL OR ROGUE VALUE.";U>" COUNT THE NUMBER OF NUMBERSAS THEY ARE ENTERED, TOTAL THEM AND AVERAGE THEM."iV>:"AS PROBLEMS BECOME MORE COMPLEX IT IS ADVISABLE (IN FACT NECESSARY) TO ANALYSETHEM THOROROPRIATE MESSAGE OUTPUT."#Te;qTj;"THE ASCII CODE FOR CARRIAGE RETURN CHARACTER IS 13 (SEE LINE 40)."T>900:Z9$(27)ıT>T>T>6);T>:"ANOTHER PROGRAMMING EXAMPLE":T>T>34,2:DU>:"PROBLEM";::":- TO ENTER ANY NUMLD UP A NUMBER IN THE STRING A$, USING SINGLE DIGITS READ INTO Z$. ON CARRIAGE RETURN THE STRING IS THEN CONVERTED INTO ITS NUMERIC EQUIVALENT IN LINE 70."S[;900:Z9$(27)ıT`;"EACH DIGIT COULD BE CHECKED FOR VALIDITYAFTER THE 'GET', AND AN APPINT Z$;"7R;"40 IF Z$=CHR$(13) THEN 70 : REM CR.RTN?"eR;"50 LET A$=A$+Z$ : REM ADD ON CHARACTER"wR$;"60 GOTO 30"R.;"70 LET A=VAL(A$)"R8;"80 PRINT "(34)"NUMBER IS "(34)";A"RB;"90 END"RL;:34,(37):SV;"THIS PROGRAM ENABLES YOU TO BUIIATELY DEALT WITH. IT ALSO REQUIRESA SEPARATE PRINT STATEMENT TO BE OUTPUT TO THE SCREEN, AND MUST HAVE A LINE NO."Q:900:Z9$(27)ıQ::"SAMPLE PROGRAM":Q:"10 LET A$="(34)(34)Q:"20 PRINT "(34)"ENTER NUMBER"(34)";"R;"30 GET Z$ : PRALT WITH. IT REQUIRES A SEPARATE PRINT STATEMENT TO BE OUTPUT TOTHE SCREEN. A LINE NUMBER IS REQUIRED."oP:P::"20 GET A$";:sQ:" LOOKS FOR ANY CHARACTER TO BE DEPRESSED AT THE KEYBOARD. AGAIN IT IS ACCEPTED WITHOUT CARRIAGE RETURN, AND ISIMMEDT THE KEYBOARD, PERHAPS WITHOUT PRINTING IT OR WITHOUT THE NEED FOR PRESSING THE 'RETURN' KEY.":{O::"10 GET A";:iP:" LOOKS FOR A SINGLE DIGIT TO BE DEPRESSED AT THE KEYBOARD. IT IS ACCEPTED WITHOUT CARRIAGE RETURN AND IMMEDIATELY DES BELOW:":fN8"10 LET A$="(34)(34)":REM NO SPACE BETWEEN QUOTES, A SPACE BEING A VALID CHARACTER"|N9900:Z9$(27)ıN:N:N::N:11);N::"THE GET STATEMENT":N::34,2:fO:"SOMETIMES IT IS APPROPRIATE TO SEEK ONE CHARACTER ACAT', AND B$='FISH' THEN C$= 'CATFISH'."EM8900:Z9$(27)ıLM85 N8"NOTE THAT ON OCCASIONS IT MAY BE NECESSARY TO USE AN EMPTY STRING (NULL STRING), CONTAINING NO CHARACTERS AT ALL. A STRING MAY INITIALISED TO THE NULL STRING ASCII CODE OF THE FIRST CHARACTER IN THE STRING A$.":L8TL8:"PRINT CHR$(A)";:L8" PRINTS THE CHARACTER THE ASCII CODE OF WHICH IS 'A'."L8L8:"CONCATENATION OPERATOR + EG.LET C$=A$+B$";:/M8"THIS JOINS TWO STRINGS TOGETHER. IF A$='S WILL CREATE A NUMERIC REAL VARIABLE 'A' WITH AN EQUIVALENT NUMERIC VALUE."UK8pK8:"LET A$=STR$(A)";:K8" CREATES A STRING A$ WHICHIS MADE UP OF THE DIGITS IN THE NUMERIC REAL VARIABLE 'A'."K8K8:"PRINT ASC(A$)";:4L8" PRINTS THE ANG AT THE XTH CHARACTER, E.G. IF A$="(34)"MARY"(34)", IF X=2, AND Y=1, THEN THE OUTPUT WILL BE THE LETTER 'A'."Jr8900:Z9$(27)ıJw8J|8:"LET A=VAL(A$)";:OK8" IF A$ IS A STRING OF CHARACTERS WHICH HAPPEN TO BE DIGITS THEN THII@8:"PRINT RIGHT$(A$,X)";:IJ8" PRINTS THE RIGHTMOST X CHARACTERS IN THE STRING A$, E.G. IF A$="(34)"MARY"(34)", AND X=2 THEN THE LETTERS OUTPUT WILL BE 'RY'."IT8:"PRINT MID$(A$,X,Y)";:xJ^8" PRINTS Y CHARACTERS IN THE STRING A$, STARTIT THE LENGTH OF THE STRING A$, E.G. IF A$="(34)"MARY"(34)" THEN '4' WILL BE OUTPUT"uH,8:"PRINT LEFT$(A$,X)";:H68" PRINTS THE LEFTMOST X CHARACTERS IN THE STRING A$, E.G. IF A$="(34)"MARY"(34)", AND X=2 THEN THE LETTERS 'MA' WILL BE OUTPUT."G8900:Z9$(27)ı G 812);3"A SUBSCRIPT MAY BE DENOTED BY A VARIABLE, WHICH ITSELF COULD BE AN ELEMENT OF ANOTHER ARRAY.">3900:Z9$(27)ı>6>6>6: CLUDING APPLESOFT BASIC) ALLOW A SUBSCRIPT OF ZERO. THUS A(0) IS POSSIBLE. DIM A(10) REALLY ALLOWS FOR ELEVEN ELEMENTS IF YOUWISH TO USE A(0)."=3900:Z9$(27)ıc>3"MULTI-DIMENSIONAL ARRAYS ARE ALSO POSSIBLE, E.G. DIM A(100,5) SETS AS(37):":"(AT POINT OF DEPARTURE TO SUBROUTINE)":)+:"RETURN"::"(AT END OF SUBROUTINE WHERE COMPUTER RETURNS TO MAIN PAHE THIRD LINENUMBER AFTER THE ";::"GOTO";::".":H'H+:"EXAMPLE":r'R+"10 ON X GOTO 110,120,130,140,150":(\+"THIS MEANS IF X=1 GOTO 110, IF X=2 GOTO 120, IF X=3 GOTO 130, ETER 1>,,ETC"&*+&4+"THE EXPRESSION IS FIRST EVALUATED (MUST BE A NUMBER), AND THE PROGRAM BRANCHES TO THE LINENUMBER FOLLOWING WHICH CORRESPONDS WITH ITS RELATIVE POSITION, E.G. IF EXPRESSION=3 THEN THE PROGRAM"5'>+"BRANCHES TO TMENTS WILL BEIN THE REVERSE ORDER TO WHAT THEY WERE IN THE ";::"FOR";::" STATEMENTS."p%Z(900:Z9$(27)ıv%d(|%*%+:%+9);% +:"THE ON-GOTO STATEMENT":%+"FORMAT":"======"& +:"ON";::"";::"GOTO";::" AS FAR AS"'" IN INCREMENTS OF EACH TIME."'9ING A RECORD AND CONTROL OF THE NUMBER OF TIMES THE LOOP HAS BEEN PROCESSED.":eo'900:Z9$(27)ıt'"EXPRESSIONS CAN BE NUMERIC CONSTANTS, NUMERIC VARIABLES, OR MORE COMPLEX EXPRESSIONS WHICH EVALUATE AS REAL NUMBERS."~'900:Z9$(27 OF THE":"40 ) LOOP":" )":"ETC )":" )";G'eL'"120 ";::"NEXT";::"":uV'34,(37):`'"THE VARIABLE IMMEDIATELY FOLLOWING THE"::"FOR";::" AND ";::"NEXT";:Oj'" IS A COUNTER OR CONTROL VARIABLE, USED FOR KEEP'9);3$':"THE FOR-NEXT STATEMENT":::34,2:].'"THE FORMAT OF THIS STATEMENT IS:":i7'"10 ";8':"FOR";::"";::"=";::"";::"TO"::"";::"STEP";::""5B':"20 ) SCOPE":"30 )(34)"TOTAL IS "(34)";T"(&"80 END":9&:"RUN"::X&"ENTER NUMBER ";::"6":w&"ENTER NUMBER ";::"4":&"ENTER NUMBER ";::"9":&"ENTER NUMBER ";::"3":&"TOTAL IS 22"&900:Z9$(27)ı&16000&'':&900:Z9$(27)ıs&::6);::"COUNTER/ACCUMULATOR EXAMPLE"::" (ENTER 4 NOS.AT KEYBOARD & TOTAL THEM)":&"10 LET C=0":"20 LET T=0":"30 INPUT "(34)"ENTER NUMBER "(34)";N":"40 LET C=C+1":"50 LET T=T+N":"60 IF C<4 THEN 30":"70 PRINT "E THE LOOP IS ENTERED FOR THE FIRST TIME. THE ACCUMULATING WILL NORMALLY BE DONE IN CONJUNCTION WITH A COUNTER OR A 'FOR- NEXT' LOOP. ON EXIT FROM THE ";&"LOOP THE ACCUMULATOR VARIABLE SHOULD HOLD THE TOTAL OF THE NUMBERS BEING ADDED."'T' UPTO THIS WITH THE SAME VALUE INCREASED BYTHE CURRENT VALUE OF 'N' (THE CURRENT NUMBER BEING PROCESSED). IN SHORT IT ACCUMULATES 'N' INTO 'T'."&900:Z9$(27)ı&5&"THE ACCUMULATOR VARIABLE WILL OF COURSE BE INITIALISED TO ZERO BEFOR"LET T=T+N"::"WHERE THE VARIABLE 'T' IS USED AS AN ACCUMULATOR (TOTAL) AND 'N' REPRESENTS THE VALUE OF THE NUMBER BEING ACCUMULATED EACH TIME AROUND THE LOOP."&"THE EFFECT OF THIS STATEMENT IS TO REPLACE THE VALUE OF THE VARIABLE THE SAME WAY AS A COUNTER, EXCEPT THAT EACH TIME AROUND THE LOOP AN ACTUAL VALUE IS ADDED TO THE ACCUMULATOR VARIABLE WHICH KEEPS A RUNNING TOTAL OF ALL ";&"THE VALUES TO DATE."&900:Z9$(27)ı&5&"A TYPICAL STATEMENT WOULD BE ";::UMULATORS";::34,1:&5&"A COMMON TASK TO PERFORM IN A COMPUTER PROGRAM IS THAT OF SUMMATION, OR TOTALLING A GROUP OF NUMBERS I.E. ACCUMULATING THEM.":&"AN ORDINARY VARIABLE IS CHOSEN TO ACT ASAN ACCUMULATOR AND WORKS IN MUCH ER WITH TWENTY."&&"IF ENTERING DATA AT THE KEYBOARD THEN WEMIGHT USE A TEST FOR A ROGUE VALUE AS A MEANS OF EXITING THE LOOP, USING A COUNTER VARIABLE TO COUNT THE DATA ITEMSAS WE ENTER THEM."&900:Z9$(27)ı&::14);&:"ACCTAIN CONDITION HAS BEEN MET.":&"IF WE ALREADY KNOW THE NUMBER OF TIMES WE WISH TO PROCESS THE LOOP WE COMPARE THE COUNTER VARIABLE ITSELF WITH THAT NUMBER. FOR EXAMPLE IF WE WISH TO PROCESS THE LOOP TWENTY TIMES THEN WE COMPARE THE COUNTSE THE VALUE OF 'C' BY ONE.":6&900:Z9$(27)ı<& &"TO EXIT THE LOOP IT IS OF COURSE NECESSARY TO USE THE CONDITIONAL BRANCH STATEMENT ";::"IF-THEN";::" TO EXAMINE EITHER THE COUNTER VARIABLE OR SOME OTHER VARIABLE TO SEE IF A CER ALWAYS EVALUATED FIRST. THEVARIABLE ON THE LEFT IS THEN GIVEN THE" &"COMPUTED VALUE OF THAT EXPRESSION. IN THIS CASE ONE IS ADDED TO THE CURRENT VALUE OF 'C' WHICH NEW VALUE IS NOW ASSIGNED BACK TO 'C'. THE EFFECT OF THISSTATEMENT IS TO INCREA COUNTER VARIABLE IS INCREMENTED BY ONE (OR OTHERAPPROPRIATE VALUE).":d&900:Z9$(27)ıC&5:"TO INCREMENT THE COUNTER VARIABLE A STATEMENT SUCH AS ";::"LET C=C+1";::" IS USED. THEEXPRESSION ON THE RIGHT OF AN ASSIGNMENTSTATEMENT ISED TO KEEP A COUNT OF THE NUMBER OF TIMES A STATEMENT OR GROUP OF STATEMENTS IS PROCESSED.":N&"THE COUNTER VARIABLE IS GIVEN AN INITIALVALUE (INITIALISED), USUALLY TO EITHER ZERO OR ONE. A LOOP IS THEN SET UP. EACHTIME AROUND THE LOOP THEY):";::" ";:4008 @N(Z8$):N1N20Ė1:958:4150H EN2063000a JN13Ė1:958:4150 TN129900,10000,11000,12000,13000,14000,15000,63000 ^4000 & &::16); &:"COUNTERS"::34,(37)::5i&"ORDINARY VARIABLES MAY BE USEXT LOOP"( "15.ON-GOTO/GOSUB-RETURN"< "16.VARIABLES"d "17.ARRAYS & DIM";30);"<= PART 2" "18.STRINGS & FUNCTIONS" "19.THE GET STATEMENT" ""20.MAIN MENU (PART 1 / FINISH / ETC)" ,(7);(7) 6:"CHOICE (PART 2 - NOS.13-20 ONL"7.CONDITIONAL BRANCHING";::30);::"<= PART 1"Q "8.RELATIONAL OPERATORS"r "9.INTERACTIVE PROGRAMMING" "10.REM/STOP/RESTORE" "11.PRINT CONTINUED" "12.MATH.FUNCTIONS/ROUNDING"  "13.COUNTERS & ACCUMULATORS" "14.FOR-N 900:Z9$(27)ı $ ::. 8);Q :"MENU FOR BASIC TUTORIAL":Y :o "1.INTRODUCTION" "2.BEGINNING BASIC" "3.READ/DATA/LET/PRINT" "4.ENTRY/LIST/RUN/SAVE" "5.ARITHMETIC OPERATORS" "6.BRANCHING/LOOPING"3 $Z7$:420U 36,CH:37,CV:958::"NO !";:I12000:I::36,CH:37,CV:958:410h  STALL/RETURN 24::" 'ESC' FOR MENU, 'RETURN TO CONTINUE ";(7); (16384)127920 Z9$:(Z9$)362000 (Z9$)27ı Z9$R$920 :::T.P0(1010):P1(1011):P2(1012):1012,08::D62000P D$(4)] R$(13)gc4000 CHECK FOR INTEGER INPUTZ8$"":CH(36):CV(37)Z7$Z7$(13)Z8$""ıZ7$(13)420Z7$; Z7$"0"Z7$"9"ĪZ8$Z8                                           8):N$"MENU":N$N$N$H$H$H$H$:D$(4)8JD$"RUN"N$:3&"PRINT SQR(9) => PRODUCES RESULT OF 3"::a&"FURTHER EXERCISES ARE LEFT TO THE USER"w&900:Z9$(27)ı}&&0::10":"PLEASE WAIT !!"::ה,:"RE-LOADING MENU PROGRAM !!":E1010,P0:1011,P1:1012,P2)FH$( &:Z&"PRINT INT(6*RND(1))+1 => PRODUCES A RANDOM NUMBER BETWEEN 1 AND 6"::&"PRINT INT(RND(1)*(B-A+1)+A) => PRODUCES A RANDOM NUMBER BETWEEN 'A' AND 'B' (INCLUSIVE)"::&"PRINT SGN(X)*INT(ABS(X)) => PRODUCES -6 FOR X=-6.3":00+0.5))/100"::"(INT(12.344*100+0.5))/100=12.34"::"(INT(12.345*100+0.5))/100=12.35"n&:"PROBLEM:- HOW TO ROUND OFF TO ANY REQUIRED NUMBER OF DECIMAL PLACES."p&900:Z9$(27)ıɒz&:Ӓ|&3);&:"FURTHER EXAMPLES OF MATH FUNCTIONS": DECIMAL PLACES":"================================"\h&"AS IS DONE IN MONEY PROBLEMS"::j&"IN PROGRAMMING, MULTIPLY BY 100, THEN ROUND OFF BY ADDING 0.5 AND USING THE INT FUNCTION, AND FINALLY DIVIDE THE RESULT BY 100, E.G.":Wl&"(INT(X*1PROGRAMMING: HAVING INCREASED THE NUMBERBY ONE, USE THE 'INT' FUNCTION ON IT, E.G.":X&"INT(X+1)"::"INT(6.1+1)=7"::"INT(6.9+1)=7"ҐZ&:"PROBLEM:- WHAT HAPPENS IF THE ORIGINAL VALUE IS AN INTEGER ?"\&900:Z9$(27)ı4f&"ROUNDING OFF TO 2 ON IT, E.G.":C&QD&"INT(X+0.5)"::"INT(6.4+0.5)=6"::"INT(6.5+0.5)=7"gH&900:Z9$(27)ıR&"ROUNDING UP":"==========="T&"AS IN PAINTING/DECORATING TYPE PROBLEMS.IF WE WOULD USE 6.1 ROLLS OF WALLPAPER WE MUST BUY 7 ROLLS.":WV&:"=========="@&"AS IN NORMAL MATHEMATICAL CALCULATIONS. IF DIGIT AFTER DECIMAL POINT IS LESS THAN 0.5, THEN IGNORE, OTHERWISE INCREASE PREVIOUS POSITION BY 1."A&B&:"PROGRAMMING: HAVING INCREASED THE NUMBERBY 0.5, USE THE 'INT' FUNCTION THAT CAN BE PRODUCED FROM A GIVEN VOLUME OF RAW MATERIALS - IN THIS CASE ALWAYS ROUND DOWN."g-&:.&"USE INT FUNCTION,E.G."::"INT(6.4)=6 AND INT(6.5)=6"/&:э0&:"WARNING";::" INT(-6.4)=-7"4&900:Z9$(27)ı >&"ROUNDING OFF":"==^ &"4.ROUNDING OFF TO 2 DECIMAL PLACES"::17);"E.G. 6.454 => 6.45":22);"6.455 => 6.46"t&900:Z9$(27)ı &"FURTHER DETAILS:"::34,(37):*&"ROUNDING DOWN":"============="_,&"USED E.G. WHEN CALCULATING THE NUMBER OFCOMPLETE ARTICLES:R%"1.ROUNDING DOWN, E.G. 6.4 => 6 AND 6.5 => 6":X%%"2.ROUNDING OFF, E.G. 6.4 => 6 BUT 6.5 => 7":%&"3.ROUNDING UP, E.G. 6.4 => 7 AND 6.5 => 7":&TAN(X)";::" WILL PRODUCE THE TANGENT OF X (RADIANS)":%:"ATN(X)";::" WILL PRODUCE THE ARCTANGENT OF X (RADIANS)":%900:Z9$(27)ı%:%10);NJ%:"TRUNCATING/ROUNDING":ي%:34,(37):%"WE WILL CONSIDER 4 TYPES:"%E THE NATURAL LOG OF X(TO BASE E)":o%:"EXP(X)";::" WILL PRODUCE THE NATURAL ANTI-LOGOF X (TO BASE E)":%:"SIN(X)";::" WILL PRODUCE THE SINE OF X (RADIANS)":%:"COS(X)";::" WILL PRODUCE THE COSINE OF X (RADIANS)":;%:"OR POSITIVE NUMBERS, -1 FOR NEGATIVE NUMBERS, AND 0 FOR ZERO":l%:"ABS(X)";::" WILL PRODUCE THE VALUE OF X, IGNORING THE SIGN":Ȉv%:"SQR(X)";::" WILL PRODUCE THE SQUARE ROOT OF X"ވ{%900:Z9$(27)ı$%:"LOG(X)";::" WILL PRODUCVIDED X ALREADY HAS A VALUE)"3I%900:Z9$(27)ıN%:"RND(1)";::" GENERATES A RANDOM NUMBER BETWEEN0 AND 0.999999999":؇X%:"INT(X)";::" GENERATES THE LARGEST WHOLE NUMBER LESS THAN OR EQUAL TO X":Cb%:"SGN(X)";::" WILL PRODUCE +1 FL FUNCTIONS":#5%:34,(37)::5:%"THE FUNCTIONS TO FOLLOW MAY BE USED IN ASSIGNING THEM TO VARIABLES, THEY MAY BEUSED DIRECTLY IN PRINT STATEMENTS, OR IN EXPRESSIONS.">%:І?%:"EXAMPLES"::D%"LET A=INT(X), OR PRINT INT(X)"::"(PROz#?     ƈl Ǡ ԲŲԯӠԯҠ ԯҲ ϠŠ̠ՈԈЈԮԮԮԮV W *** Hello ***"X16254/Y162557(:>25j<" Franklin ACE 1000 MASTER diskette"A" version 004 09/21/82"F10P" Please wait a few seconds while I"U" load INTEGER BASIC."ZA(Y):A(Y)_200. (4);"RUN MENUMENU";(8);(8);(8);(8)4Q 2 MADE FOR IAC BY LE ROY W. LARSEN DALY CITY CA DECEMBER 1981 t " not on this diskette. I can't load"L " INTEGER BASIC without it!"U 150 X! d(4);"BLOAD INTBASIC,A$D000", xA(X)4 15_ " Okay, everything is ready to go!" " You are now in Floating Point BASIC" : 216,0: reset ONERR flag a(x) 15 " I'm sorry, but the file INTBASIC is"( JOB SO THE KING LETS YOU ROT!!! THE END. GR2ĺ"YOU AND THE PRINCESS MAKE IT OUT ANDTHE KING MAKES YOU THE HEAD OF THE ROYAL KNIGHTS. J ER HE MISSED."A 9"YOU START TO RUN,YOU RUN INTO A TOWER ROOM." ;"YOU TURN ON THE LIGHT,IN AMAZMENT YOU SEE THE PRINCESS." <"YOU SEE GAURDS OUTSIDE,DO YOU RUN BY THEM?" =R, @R1ĺ"THE GARUDS SEE YOU,ALL OF YOU ARE KILLED.YOU DIDN'T DO YOURT YOU GET PASSED."7 )W2ĺ"YOU RAN RIGHT PAST THEM."l ,"THEY ALL RUN AFTER YOU,DO YOU WANT TO FIGHT?"s 1E 3E1ĺ"GAURDS ARE ON BOTH SIDE OF YOU ONE OF THE GAURDS STICKS HIS LACE RIGHT THROUGH MARKER." 6E2ĺ"ON OF THE GARUDS JUMP FOR MARK."2 Q2ĺ"WE'LL SORRY THE KING SAYS YOU MUST!" "YOU AND MARKER HEAD TO KING SAMUEL'S CASTLE,KING SAMUEL WAS WHO KIDNAPED THE PRINCESS."  "YOU MEET GAURDS AT THE GATE." #"DO YOU WANT TO FIGHT THEM?" %W 'W1ĺ"YOU START TO FIGH("YOU ARE IN THE OLD KNIGHT DAYS."M"A PRINCESS HAS BEEN KIDNAPED.""HER FATHER HAS TO PAY A RADSOM OF $100,000." "IT'S YOUR JOB TO BRING HERE BACK." "WOULD YOU LIKE A PARTNER?"Q Q1ĺ"YOUR PARTNER'S NAME IS MARKER    . (4);"RUN MENUMENU";(8);(8);(8);(8)4Q 2 MADE FOR IAC BY LE ROY W. LARSEN DALY CITY CA DECEMBER 1981 E INCLUDES ";::"BASIC";::"COMMANDS, STATEMENTS, AND FUNCTIONS, WHICH ARE GENERALLY AVAILABLE IN MOST VERSIONS OF ";::"BASIC";:>", AND A FEW OF WHICH ARE AVAILABLE ON APPLE ONLY. (NOTE THAT APPLE GRAPHICS ARE NOT INCLUDED)."H100: ISLARGELY MACHINE INDEPENDENT. NO MORE THAN A FEW SMALL CHANGES SHOULD BE REQUIRED TO TRANSFER ANY PROGRAM YOU WRITE USING THE ELEMENTS OF ";*:"BASIC"::"MENTIONED IN THIS TUTORIAL TO MOST OTHERMACHINES.":4"THE QUICK REFERENCE GUID"THEM. A QUICK RUN THROUGH THESE LATTER MENTIONED NOTES, ESPECIALLY THE HIGHER NUMBERED ONES IN THEM, MAY SUFFICE IN THE EARLY STAGES."100:"THE CONTENT OF THE ";::"BASIC";: " TUTORIAL PROPERWHILE BEING RUN ON AN APPLE COMPUTER,;,"PROGRAMMING IN ";::"BASIC";::"."2"A COMPREHENSIVE KNOWLEDGE OF 'GETTING STARTED' AND 'HELPFUL HINTS' WILL COME WITH PRACTICE. ACCORDING AS THE USER BEGINS TO WRITE PROGRAMS WHICH HE WISHESTO SAVE HE MAY NEED TO REFER BACK TO"ES":"-------------""A MENU OR LIST OF OPTIONS WILL FOLLOW SHORTLY. THE OPTION 'GUIDELINES' WILL RE-RUN THESE NOTES. THE OPTIONS 'GETTING STARTED' AND 'HELPFUL HINTS' DEAL LARGELY WITH THE OPERATIONAL USE OFTHE APPLE, AS DISTINCT FROM "USE OF WHICH INVOLVES HOLDING IT DOWN WHILE DEPRESSING ANOTHER KEY. WHILE";:"CTRL/C";::" FOLLOWED BY ";::"RETURN";:" WILL NORMALLY INTERRUPT A PROGRAM THIS WILL ";::"NOT";::" HAPPENIN THIS TUTORIAL.":100"FURTHER NOTD. THIS KEYIS SOMETIMES USED IN THE PACKAGE, FOR EXAMPLE TO RETURN TO A LIST OF OPTIONS ('MENU'), INSTEAD OF HAVING TO COMPLETE A SECTION.":"4.";::"CTRL";:K" KEY:-ON THE LEFT OF THE KEYBOARD.THIS STANDS FOR 'CONTROL' KEY, THE NORMAL O INTERRUPT THE COMPUTER DURING A PROGRAM. IT MAY ";::"NOT"::"BE USED AT ALL IN THIS TUTORIAL PACKAGE.BE CAREFUL NOT TO DEPRESS THIS KEY INSTEAD OF THE ";b:"RETURN";::" KEY."l100:v"3.";::"ESC";:" KEY:-ON LEFT OF KEYBOAR:D" KEY:-ON THE RIGHT OF KEYBOARD. THIS KEY WILL VERY OFTEN HAVE TO BE USEDAS THE COMPUTER WILL NOT USUALLY ACCEPT YOUR DATA OR COMMANDS UNTIL YOU DEPRESS IT.":N"2.";::"RESET";:X" KEY:-ON TOP RIGHT OF KEYBOARD. THIS KEY IS OFTEN USED TDTHE FOLLOWING GUIDELINES CAREFULLY:": 0"THE KEYBOARD OF THE APPLE (AND MOST COMPUTER KEYBOARDS) IS VERY SIMILAR TO THAT OF A TYPEWRITER. THERE ARE HOWEVER A FEW ADDITIONAL KEYS, THE MOST IMPORTANT OF WHICH ARE:"::"1.";::"RETURN";LD YOU LIKE INITIAL GUIDELINES ?";Y$= Y$"YES"Y$"Y"549V Y$"NO"Y$"N"1000 :::"ANSWER 'YES' OR 'NO', PLEASE !!"::J12000:J:534 :10);::"APPLE TUTORIAL DISK"::34,1 %35,24:' &"IF YOU ARE A FIRST TIME USER PLEASE REA);"IRELAND"K 20:"PLEASE NOTIFY ANY ERRORS.":J13000:J::(7);(7); 22:"PLEASE TYPE ";::"YES";::" OR ";::"NO";::", AND THEN PRESS THE ";::"RETURN";::" KEY ON THE RIGHT OF THE KEYBOARD."; 35,21 :(7);$ 8:"WOU410  P311000* :::768,1V 10);::"APPLE TUTORIAL DISK"::34,1h :(7);(7); 8:"PUBLIC DOMAIN SOFTWARE BY:"::10);"DIARMUID MC CARTHY":10);"COLLEGE OF MARKETING & DESIGN":10);"18 PARNELL SQUARE":10);"DUBLIN 1":10120 }Z9$:Z9$R$120# ::) F Z8$"":CH(36):CV(37)O Z7$h Z7$(13)Z8$""ı{ Z7$(13)420 Z7$; Z7$"0"Z7$"9"ĪZ8$Z8$Z7$:420 (7);(7); :::"PLEASE RE-ENTER";:I12000:I::36,CH:37,CV:958:F8P0(1010):P1(1011):P2(1012):1012,0:P3(768)IPK769:PK,8U62000j D$(4):R$(13)J16:N$(J):JMENU,STRT,HELP,PT.1,PT.2,QREFc500dn24::" PRESS 'RETURN' WHEN READY TO CONTINUE ";(7); x(16384)127           PROGRAM 5.5 (CIRCLE 2)L DRAWS CIRCLE USING ANGULAR INCREMENTSo CX140:CY96:SC1.16:FL0:R90x:3T06.4.3(XR(T):YR(T)2SXSCXCX:SYCYY<FL180FSX,SY:FL1PSX,SYZT  LOADED).")+1010,P0:1011,P1:1012,P2/,DD$"SAVE"N$",V0"MAY EITHER SWITCH OFF OR PREPARE TO ENTER YOUR OWN PROGRAM, EDIT IT, RUN IT, AND SAVE IT." ':::"REMINDERS"::::"NEW";::" CLEARS MEMORY ONLY":::"HOME";::" CLEARS THE SCREEN ONLY":::"PR#6";::" RESTARTS TUTORIAL (WITH TUTORIAL DISK!";: :DH$((PK)):H$H$H$H$H$:N$(N)N$(N)N$(N)H$c1010,P0:1011,P1:1012,P2uD$"RUN"N$(N){0::::"END OF TUTORIAL"::^""YOU ARE NOW FINISHED WITH THE TUTORIAL, AT LEAST FOR THE PRESENT. THE MEMORY IS CLEAR. YOU "6.QUICK REFERENCE GUIDE TO BASIC":8B"7.FINISH":@G:PK(7);(7);L:"ENTER CHOICE(1-7),AND PRESS 'RETURN'";::" ";:400VN(Z8$):N1N7Ė1:958:1099WN1540XN763000[:`:"PLEASE WAIT !! LOADING PROGRAM ! PROGRAMMING.":100#::.11);p"TUTORIAL DISK MENU =================="v "1.GUIDELINES":"2.GETTING STARTED":"3.HELPFUL HINTS":$"4.BASIC TUTOR PART 1":."5.BASIC TUTOR PART 2":&8SENTIAL";::" THAT BEGINNERS SHOULD PRACTICE WRITING AND ENTERING MANY PROGRAMMING EXERCISES.":"MERELY READING THROUGH THIS TUTORIAL IS"::"NOT";::" ENOUGH. JUST LIKE TYPING OR RIDING ABICYCLE MUCH PRACTICE IS REQUIRED TO GAIN SKILL IN ALLOWED !!"uz"IF YOU WISH TO RE-START THE TUTORIAL DISK WITHOUT SWITCHING OFF YOU MAY TYPE"::"PR#6";::" AND PRESS THE 'RETURN' KEY (WITH THE TUTORIAL DISK IN THE DISK UNIT).":100h8::"IMPORTANT NOTICE":::"IT IS ";::"ESTER ONE'S OWN PROGRAM IT IS NECESSARY FIRST TO QUIT THE TUTORIAL AS MENTIONED ABOVE. THE MEMORY WILL BE CLEARED AUTOMATICALLY WHEN YOU DO THIS. DO ";::"NOT";: p" HOWEVER ATTEMPT TO SAVE ANY OF YOUR OWN PROGRAMS ON THIS DISK. IT IS NOTR"THE MAIN MENU IS ALWAYS RETURNED TO WHENYOU CHOOSE TO FINISH THE OPTION YOU ARE USING. ANY SECTION OF THE PACKAGE MAY EASILY BE REPEATED. HOWEVER THE ONLY WAYTO QUIT ALTOGETHER IS TO CHOOSE THE LASTOPTION 'FINISH' IN THE MAIN MENU."\f"TO ENED GETTING STARTED !!"::?"WOULD YOU LIKE A RE-RUN ? ";Y$\Y$"Y"Y$"YES"ė:1030vY$"N"Y$"NO"63000::"ANSWER 'YES' OR 'NO', PLEASE !!":J12000:J:::12400:::8":"PLEASE WAIT !!"::: ,:"RE-LOADING MEN"18.TO CHANGE THE NAME OF A FILE ALREADY ON DISK TYPE:"H:" ";w:"RENAME";::" OLDFILENAME,NEWFILENAME"}"19.FOR MORE DETAILED INFORMATION ON PROGRAMMING IN BASIC PLEASE SEE OTHER REFERENCES."50010"FINISH";&:"DELETE";::" PROGRAM NAME",m"16.TO SAFEGUARD A FILE AGAINST CHANGE OR DELETION, TYPE:"z:" ";:"LOCK";::" FILENAME""17.TO UNLOCK A LOCKED FILE TYPE:":" ";:"UNLOCK";::" FILENAME"500; TYPE THE SINGLE COMMAND:"':" ";H:"RUN";::" PROGRAM NAME"Q500"14.TO SAVE A PROGRAM CURRENTLY IN MEMORY ONTO DISK TYPE:":" ";:"SAVE";::" PROGRAM NAME""15.TO DELETE A PROGRAM FROM A DISK TYPE:"" @" WILL ENABLE YOU TO BRING IT INTO MEMORY FOR USE."F"12.YOU MAY EXECUTE ANY PROGRAM CURRENTLY IN MEMORY BY TYPING THE COMMAND":" ";:"RUN";::" (NO PROGRAM NAME)""13.TO LOAD AND RUN A PROGRAM FROM A DISK OF YOUR OWN YOU MUST TYPE THE COMMAND 'NEW' TO CLEAR THE MEMORY."Tu500~"11.IF YOU WISH TO EXAMINE AND/OR EDIT ANY PROGRAM CURRENTLY ON THE DISK, AND NOT IN MEMORY, THE COMMAND ":" ";:"LOAD";::" PROGRAM NAME"SOME FILENAMES HAVE BEEN LISTED, PRESS THE SPACE BAR INTERMITTENTLY UNTIL THE PROMPT SYMBOL APPEARS."{ej"9.THE COMMAND 'LIST' WILL LIST ANY PROGRAM THAT IS CURRENTLY IN MEMORY."oKt"10.IF YOU WISH TO ENTER A PROGRAM TOGETHER WITH THE FLASHING CURSOR, AN INDEX OF FILES ON THE DISK MAY BE OBTAINED ON THE SCREEN BY TYPING THE COMMAND 'CATALOG', AND PRESSINGu`" 'RETURN' KEY. TO CONTINUE A CATALOG, I.E. IF THE PROMPT SYMBOL FAILS TO APPEAR WHEN PRESSED AFTER TYPING THE COMMAND ITSELF. BE SURE TO TYPE COMMANDS EXACTLY, OTHERWISE APPLE WILL RESPOND WITH AN ERROR MESSAGE, E.G., 'SYNTAX ERROR'."M500V"8.PROVIDED THAT THE PROMPT SYMBOL ']' IS VISIBLE ON THE LEFT OF THE SCREEN, S IN COMMAND MODE, I.E. YOU MAY ENTER ANY OF THE APPLE COMMANDS, USE APPLE AS A CALCULATOR IN DIRECT MODE, OR ENTER YOUR OWN PROGRAM, IF THE MEMORY IS CLEAR." GL"7.TO IMPLEMENT (EXECUTE) ANY COMMAND THE 'RETURN' KEY MUST BE INSTRUCTIONS AS TO USE, WHILE OTHERS MAY PRODUCE A MENU (LIST OF OPTIONS) OR AN AUTOMATIC CATALOG, ETC."v 3 8"6.A PROMPT SYMBOL ']' ON THE SCREEN TOGETHER WITH THE FLASHING CURSOR: ";::" ";::" ,"; B" INDICATES THAT THE APPLE ITO WARM UP) AND THEN THE APPLE ]"(91);" ITSELF (BACK LEFT). THE DISK WILL BE 'BOOTED' AUTOMATICALLY. THE MONITOR SCREEN SETTINGS SHOULD NORMALLY NOT NEED TO BE ADJUSTED. ) *500p ."5.ON SWITCH-ON SOME DISKS WILL GIVE NEAREST YOU, INTO DISK UNIT. CLOSE FLAP DOOR ON DISK UNIT."C  "3.THIS IS NECESSARY SO THAT THE D.O.S., THE DISK OPERATING SYSTEM (SOFTWARE FOR DISK COMMANDS) CAN BE LOADED INTO MEMORY ('BOOTING')."  $"4.SWITCH ON MONITOR FIRST (  :: 5);:G "GETTING STARTED WITH APPLE ]";(91):S 34,2: "1.ENSURE THAT ALL CONNECTIONS ARE PROPERLY MADE - APPLE/MONITOR, ETC.": "2."; :"BEFORE";:= " SWITCHING ON, INSERT DISK,LABEL UPPERMOST, AND |.P0(1010):P1(1011):P2(1012):1012,0:62000O D$(4):R$(13)Yc1000_24::"M FOR MENU, R FOR RESTART,C TO CONTINUE";(7);(16384)127520 Z9$(Z9$)7763000(Z9$)821001Z9$"C"520::     6U3V(S(I,2),3)V(S(I,1),3); @V1V(S(I,3),1)V(S(I,1),1)Z JV2V(S(I,3),2)V(S(I,1),2)y TV3V(S(I,3),3)V(S(I,1),3) ^N(I,1)U2V3V2U3 hN(I,2)U3V1V3U1 rN(I,3)U1V2V1U2 |ID(YEZE)CY I# 1,4,2,11 1,2,3,1? 1,3,4,1M 2,4,3,2Y S(4,4)d I14o J14{ S(I,J) J,I N(4,3) RO136 I16:E(I,3)0:I I14 "U1V(S(I,2),1)V(S(I,1),1) ,U2V(S(I,2),2)V(S(I,1),2)  2TP.1:SP(TP):CP(TP)( < 0,0,34 F 1,0,0C P -.2, 1,0R Z -.2,-1,0f dV(4,3),SV(4,2)x nI14:X,Y,Z xV(I,1)X:V(I,2)Y:V(I,3)Z XEXS1YC1:YEXC1C2YS1C2ZS2:ZEXS2C1YS2S1ZC2RHO SV(I,1)D(XEZE)CX:SV(I,2) ROTATING PYRAMIDW THREE DIMENSIONAL ANIMATION WITH HIDDEN LINES ELIMINATEDt SP%(912):ADDR1:E(6,3)RHO15:THETA.5:PHI.9:D400CX140:CY96:S1(TH):C1(TH):S2(PH):C2(PH)(TN.1:TT.1:CC(TT):ST(TT):SO(TN):CO(TN)    U PROGRAM !!"6@::E1010,P0:1011,P1:1012,P2kFH$(8):H$H$H$H$H$:N$"MENU":N$N$N$H$zJD$"RUN"N$H$(8):H$H$H$H$H$:N$"STRT":N$N$N$H$:D$(4)D$"SAVE"N$"S WHITE CHARACTERS ON BLACK ON SCREEN (DEFAULT)."9S"27.";::"FLASH";:" ALTERNATES BETWEEN NORMAL AND INVERSE.""28.";::"VTAB X";:" MOVES CURSOR TO VERTICAL POSITION X (WHERE X IS IN RANGE 1-24)."" MEMORY WILL BE OVERWRITTEN."#?"24.";::"DEL X,Y";:v" WILL DELETE FROM LINE X TO LINE Y INCLUSIVE."500"25.";::"INVERSE";:" OUTPUTS BLACK CHARACTERS ON WHITE ON SCREEN.""26.";::"NORMAL";:3" OUTPUT!"22.";::"CTRL/C";:" FOLLOWED BY THE 'RETURN' KEY, INTERRUPTS THE PROGRAM AND DISPLAYS LINENUMBER (BUT NOT IN THIS TUTORIAL).""23.";::"PR#6";:" BOOTS THE DISK. MAY BE USED TO LOAD THE DOS, BUT ANY BASIC PROGRAM IN ";::"HOME";::" CLEARS THE SCREEN (NOT MEMORY) AND BRINGS THE CURSOR UP TO THE TOP LEFTOF THE SCREEN."s500"21.";::"SPEED=X";:" WHERE X IS IN RANGE 0-255, SETS THE SPEED OF OUTPUT TO THE SCREEN. THE DEFAULT SPEED IS 255 (FASTEST)."']'." "19.SPACES IN STATEMENT LINES ARE NORMALLY IMMATERIAL, BUT ARE NECESSARY IN STRING QUOTES IF OUTPUT IS TO BE READABLE. SPACES ARE ALSO SIGNIFICANT INFILENAMES (EXCEPT LEADING AND TRAILING SPACES IN FILENAMES)."j"20." (COLON) IS USED AS A STATEMENT/ COMMAND SEPARATOR."Am"17.THE LINE NUMBER RANGE IS: 0-63999"s"18.THE MAXIMUM NUMBER OF CHARACTERS (INCLUDING SPACES) PER STATEMENT LINE IS239 (6 SCREEN LINES WHICH INCLUDE THE PROMPT SYMBOL ::" (NO.24)."w|"14.TO CHANGE A COMPLETE LINE ALREADY ENTERED, JUST RE-TYPE IT. THE NEW VERSION WILL REPLACE THE PREVIOUS VERSION OF THE LINE. (ALTERNATIVELY SEE"::"ESC";::" - NOS.30-37)."500"16.";:":";:;TS A BACKSLASH '";(92);"' AND IGNORES CURRENT LINE.">mr"13.TO DELETE A LINE ALREADY ENTERED TYPETHE ";::"LINE NUMBER";::" ONLY AND PRESS THE"s:"RETURN";::" KEY. TO DELETE A ";::"RANGE";::" OF LINE NUMBERS SEE ";::"DEL X,Y"; ON CURRENT STATEMENT LINE, BACKSPACE AND OVERTYPE FOR AS MANY CHARACTERS AS REQUIRED.";::"REPT":`"MAY BE USED FOR SPEED. USE FORWARD KEY => TO MOVE TO END OF LINE BEFORE PRESSING RETURN."ch"12.";::"CTRL/X";:8j" PRIN" (LEFT ARROW KEY) - DELETES LAST CHARACTER(S) FROM MEMORY (BUT NOT SCREEN). OVERTYPE TO AMEND."p O T"10.";::"REPT";: V" KEY - TO REPEAT ANY KEY HOLD IT DOWN SIMULTANEOUSLY WITH THIS KEY." Y Z500k^"11.TO CORRECT AN ERROR500 1$ 6"7.";::"ESCAPE";:h 8" KEY - USE MAINLY FOR CURSOR CONTROL (SEE NO.30 ONWARDS)."n ; @"8.";::"=>";: B" (RIGHT ARROW KEY) - COPIES CHARACTERS OVER WHICH IT IS PASSING TO MEMORY." E J"9.";::"<=";:j L TO COMMAND MODE : ]";::" ":D "(BUT NOT IN THIS TUTORIAL).":\ ""5.";::"CTRL";: $" KEY - HOLD DOWN WHILE PRESSING ANOTHER KEY." ' ,"6.";::"RETURN";: ." KEY - USE TO TERMINATE INPUT OFCOMMAND, STATEMENT LINE, OR DATA." /"3.";::"SHIFT";: " KEY - HOLD DOWN TO OBTAIN CHARACTER ON UPPER PART OF KEY. NOTE THAT SHIFT/N, '^' MEANS TO THE POWER OF.CTRL/G GIVES BEEP FOR BELL."  "4.";::"RESET";: " KEY - INTERRUPTS PROGRAM LIST/ RUN AND RETURNS  ::7 13);::"HELPFUL HINTS"::34,1=  "1.LAYOUT OF KEYBOARD IS SIMILAR TO THAT OF TYPEWRITER, BUT ALL LETTERS ON SCREENARE CAPITALS."  "2.NUMBERS ARE TO BE TYPED USING TOP ROW ONLY. N.B. 0 AND 1, NOT O AND I.  Z.P0(1010):P1(1011):P2(1012):1012,0:62000O D$(4):R$(13)Yc1500_24::"M FOR MENU,R FOR RESTART,C TO CONTINUE";(7);(16384)127520 Z9$(Z9$)7763000(Z9$)82ĝ:1523Z9$"C"520 ::           0J :I DI16+ NE(I,3)0620A XJE(I,1):KE(I,2) bSP%(AD)SV(J,1):SP%(AD1)SV(J,2):SP%(ADDR2)SV(K,1):SP%(ADDR3)SV(K,2) lADDRADDR4 vI I14 T1CPCTV(I,1)(STCPSOSP)V(I,2)(SOSTCPSPCO)V(I,3)T2STV(IE2S(I,1) WXXEV(E2,1)/ WYYEV(E2,2)A WZZEV(E2,3)k N(I,1)WXN(I,2)WYN(I,3)WZ0570y E1S(I,1) J24 E2S(I,J) K1N E(K,1)E2E(K,2)E1E(K,3)2:550 K E(N,1)E1:E(N,2)E2:E(N,3)1 NN1 &E1E26U3V(S(I,2),3)V(S(I,1),3); @V1V(S(I,3),1)V(S(I,1),1)Z JV2V(S(I,3),2)V(S(I,1),2)y TV3V(S(I,3),3)V(S(I,1),3) ^N(I,1)U2V3V2U3 hN(I,2)U3V1V3U1 rN(I,3)U1V2V1U2 |I XERHS2C1:YERHS2S1:ZERHC2 N1 I14 D(YEZE)CY I# 1,4,2,11 1,2,3,1? 1,3,4,1M 2,4,3,2Y S(4,4)d I14o J14{ S(I,J) J,I N(4,3) RO136 I16:E(I,3)0:I I14 "U1V(S(I,2),1)V(S(I,1),1) ,U2V(S(I,2),2)V(S(I,1),2)  2TP.1:SP(TP):CP(TP)( < 0,0,34 F 1,0,0C P -.2, 1,0R Z -.2,-1,0f dV(4,3),SV(4,2)x nI14:X,Y,Z xV(I,1)X:V(I,2)Y:V(I,3)Z XEXS1YC1:YEXC1C2YS1C2ZS2:ZEXS2C1YS2S1ZC2RHO SV(I,1)D(XEZE)CX:SV(I,2) ROTATING PYRAMIDW THREE DIMENSIONAL ANIMATION WITH HIDDEN LINES ELIMINATEDt SP%(912):ADDR1:E(6,3)RHO15:THETA.5:PHI.9:D400CX140:CY96:S1(TH):C1(TH):S2(PH):C2(PH)(TN.1:TT.1:CC(TT):ST(TT):SO(TN):CO(TN)E1010,P0:1011,P1:1012,P2IFH$(8):N$"MENU":N$N$N$H$H$H$H$XJD$"RUN"N$H$(8):N$"HELP":N$N$N$H$H$H$H$:D$(4)D$"SAVE"N$.:'l"WOULD YOU LIKE A RE-RUN ? ";Y$AvY$"Y"Y$"YES"1523[Y$"N"Y$"NO"63000:::"ENTER 'YES' OR 'NO', PLEASE !!":J12000:J:::18900::8":"PLEASE WAIT !!":,:6:"RE-LOADING MENU PROGRAM !!":@:TIME, ONCE BEING ENOUGH. PRESSING I,J,K"Z"AND M WILL MOVE THE CURSOR RESPECTIVELY UP, LEFT, RIGHT, AND DOWN. USE THE ";::"REPT":["KEY FOR FAST MOVEMENT. TO EXIT EDIT MODEPRESS THE SPACE BAR."]500b10g"FINISHED HELPFUL HINTS !!":CURSOR) AND CLEARS SCREEN (NOT MEMORY).2S5009T5QX"37.";::"ESC";:(Y" FOLLOWED BY I,J,K,OR M ALLOWS FORFASTER CURSOR MOVEMENT AND EDITING. USING THESE LETTERS FOR CURSOR MOVEMENT IT IS NOT NECESSARY TO PRESS ";::"ESC";::" EACH /E";:F;" CLEARS TEXT FROM CURSOR POSITION TO END OF LINE."L?fD"35.";::"ESC/F";:E" CLEARS TEXT FROM CURSOR POSITION TO END OF SCREEN PAGE."IN"36.";::"ESC/@";:)O" MOVES CURSOR TO TOP LEFT OF PAGE (HOMES I.E. CURSOR MOVEMENT ONLY.""<"31.";::"ESC/B";:d" CURSOR MOVES ONE POSITION LEFT."~&"32.";::"ESC/C";:'" CURSOR MOVES ONE POSITION DOWN."0"33.";::"ESC/D";:1" CURSOR MOVES ONE POSITION UP."5:"34.";::"ESC29.";::"HTAB X";:a " MOVES CURSOR TO HORIZONTAL POSITION X (WHERE X IS IN RANGE 1-40)."j 500"30.";::"ESC/A";:" PRESS ";::"ESC";:", FOLLOWED BY 'A'. THIS MOVES CURSOR ONE POSITION RIGHT, WITHOUT COPYING TO MEMORY -";:7);" => ";%14);9:"PROCESS";:I27);"=>";T33);f :"OUTPUT":n: "PROGRAM ARITHMETIC RESULTS"%*" & & LOGICAL"/4" DATA OPERATIONS">900:Z9$(27)ı";::"OUTPUT";::". THE COMPUTER IS PERFORMING A'DATA PROCESSING' FUNCTION AUTOMATICALLY."r900:Z9$(27)ız:"THUS THERE ARE THREE MAIN ";::"FUNCTIONS";::" OF ACOMPUTER SYSTEM, AS ILLUSTRATED BELOW:":102);:"INPUTGES CLERK, THE COMPUTER HAS ";::"INPUT";::" TO IT A SET OF INSTRUCTIONS (A PROGRAM) AND A SET OF DATA TO OPERATE ON.";" IT WILL THEN"\:"PROCESS";::" THE DATA ACCORDING TO THE SET OFINSTRUCTIONS, PRODUCING A SET OF RESULTSOR CESS";::" THE DATA ACCORDING TO THE SET OF PRE-DEFINED INSTRUCTIONS. HE WILLTHEN PRODUCE RESULTS OR ";::"OUTPUT";:". HE IS PERFORMING A 'DATA PROCESSING' FUNCTION,ALBEIT MANUALLY."900:Z9$(27)ı10"JUST AS WITH THE WAUCTIONS IN LOGICAL ORDER."0900:Z9$(27)ı810"A COMPUTER MAY BE COMPARED WITH A NEW WAGES CLERK. THE WAGES CLERK HAS ";::"INPUT";::" TO HIM/HER A SET OF INSTRUCTIONS AND A SET OF DATA TO OPERATE ON.THE CLERK WILLTHEN ";x:"PROORIAL:INTRODUCTION TO COMPUTERS";::34,1::10H:"DEFINITION:-";:" A COMPUTER IS A BOX OF ELECTRONICS, A DEVICE WHICH IS CAPABLE OF STORING BOTH A SET OF INSTRUCTIONS AND A SET OF DATA IN ITS MEMORY, AND THEN CARRYING OUT THOSE INSTRT 2 / FINISH / ETC)"#,(7);(7)]6:"CHOICE(PART 1-NOS.1-12 / 20 ONLY):";::" ";:400@N(Z8$):N1N20Ė1:958:4150JN2063000TN4500,5500,6000,6800,6600,7200,7600,8000,8200,8600,9100,9500^4000:/:"BASIC TUTROUNDING"1"13.COUNTERS & ACCUMULATORS"I"14.FOR-NEXT LOOP"h"15.ON-GOTO/GOSUB-RETURN"| "16.VARIABLES""17.ARRAYS & DIM";::30);::"<= PART 2""18.STRINGS & FUNCTIONS""19.THE GET STATEMENT"":"20.MAIN MENU (PAR/RUN/SAVE"("5.ARITHMETIC OPERATORS"C"6.BRANCHING/LOOPING"s"7.CONDITIONAL BRANCHING";30);"<= PART 1""8.RELATIONAL OPERATORS""9.INTERACTIVE PROGRAMMING""10.REM/STOP/RESTORE""11.PRINT CONTINUED" "12.MATH.FUNCTIONS/ TO CONTINUE ";(7);+ (16384)127920> Z9$:Z9$E$ıO Z9$R$920Y ::_ i :: 8);::"MENU FOR BASIC TUTORIAL":: "1.INTRODUCTION TO COMPUTERS" "2.BEGINNING BASIC" "3.READ/DATA/LET/PRINT" "4.ENTRY/LISTO TERMINATE PROGRAM"I$w *"10 INPUT "I$"ENTER HOURS "I$";H":"15 IF H = -1 THEN 70":"20 INPUT "I$"ENTER RATE "I$";R" >"30 LET P=H*R":"40 PRINT "I$"PAY EQUALS "I$";P":"41 PRINT":"45 GOTO 10":"70 END":  24::" 'ESC' FOR MENU, 'RETURN'= -1 THEN 70":"20 READ R":"30 LET P=H*R":"40 PRINT "I$"PAY EQUALS "I$";P":"45 GOTO 10":"50 DATA 40" "60 DATA 5":"65 DATA 50,4,44,6,40,4":"66 DATA -1":"70 END":  #3);::"PROGRAM - HOURLY PAY - INTERACTIVE"::"5 PRINT "I$"ENTER -1 T - EXPANDED"::"10 READ H":"20 READ R":"30 LET P=H*R":"40 PRINT "(34)"PAY EQUALS "(34)";P":"45 GOTO 10":"50 DATA 40":"60 DATA 5":"65 DATA 50,4,44,6,40,4":"70 END": h :"PROGRAM - HOURLY PAY - FURTHER EXPANDED"::"10 READ H":"15 IF H 7,CV:958::"NO !";:I12000:I::36,CH:37,CV:958:410C  :"PROGRAM - HOURLY PAY"::"10 READ H":"20 READ R":"30 LET P=H*R":"40 PRINT "(34)"PAY EQUALS "(34)";P":"50 DATA 40":"60 DATA 5":"70 END": X ]:"PROGRAM - HOURLY PAY:.P0(1010):P1(1011):P2(1012):1012,0:62000a D$(4):R$(13):E$(27):I$(34)kc4000qZ8$"":CH(36):CV(37)Z7$:Z7$(13)Z8$""ıZ7$(13)420Z7$;Z7$"0"Z7$"9"ĪZ8$Z8$Z7$:420= 36,CH:3"                                    !!! ! ! ! ! !!!!!!!!!""" " " " " """"&:&"THE COMPUTER EASILY REPRESENTS INFORMATION IN BINARY (TWO-STATE) FORM. A SWITCH MAY BE ON OR OFF. THERE IS EITHER POWER (OR AN ELECTRICAL PULSE) INA PARTICULAR CIRCUIT, OR NOT. NO POWER MAY REPRESENT ZERO, WHILE POWER";' " T THE KEYBOARD,OR READ FROM DISK OR OTHER DEVICE IS REPRESENTED IN MEMORY AS THE BINARY EQUIVALENT OF A NUMERIC CODE (";::"ASCII";::")."::%"A CHARACTER CAN BE ANY LETTER, DIGIT, ORSPECIAL SYMBOL, E.G. $,&,#,ETC.":%900:Z9$(27)ıVOICING, ETC."$$900:Z9$(27)ıR$::"FURTHER BACKGROUND INFORMATION"::$"A COMPUTER PROGRAM MUST BE HELD IN MEMORY BEFORE IT WILL WORK. THE DATA MUST ALSO BE AVAILABLE FOR USE BY THE PROGRAM.":::% "EVERY CHARACTER ENTERED ASTEMS";::":- THESE PROVIDE OVERALL CONTROL OF THE SYSTEM.":#"2.";::"UTILITY PROGRAMS";::":- THESE ARE FOR COMMON TASKS, E.G. SORTING, CONVERTING FROM DISK TO TAPE, ETC.":$"3.";::"APPLICATIONS PACKAGES";::":- E.G. PAYROLL, INSHOULD BE GEARED FOR THE ";::"USER";::", MOREOVER IT IS THE HUMAN BEING WHO CREATES THE HARDWARE,THESOFTWARE, AND USES THE COMPUTER.""900:Z9$(27)ı":""SOFTWARE MAY BE CLASSIFIED INTO THREE GROUPS:"::B#"1.";::"OPERATING SYMPUTER ";::"SYSTEM";::" IS MADE UP OF THREE MAIN ELEMENTS:"{!j::"1.HARDWARE"::"2.SOFTWARE"::"3.PEOPLE":::!"ALL THREE ARE NECESSARY FOR A COMPUTER SYSTEM TO BE VIABLE, BUT ";::"PEOPLE";:"" ARE THE MOST IMPORTANT. ALL SYSTEMS V"SETS OF INSTRUCTIONS (PROGRAMS) ARE REFERRED TO AS ";::"SOFTWARE";::"."Y W X"IF THERE IS SOFTWARE PERMANENTLY HELD INMEMORY (E.G. READ ONLY MEMORY) IT IS REFERRED TO AS ";::"FIRMWARE";::"." [900:Z9$(27)ı \:A!`"A COVICES ATTACHED TO THE MAIN COMPUTER FOR INPUT, BACKING STORE (DISK UNITS ETC), AND OUTPUT, ARE REFERRED TO AS"::"PERIPHERALS";::"."::B"THE COMPUTER ITSELF AND THE VARIOUS PERIPHERALS ARE REFERRED TO AS ";::"HARDWARE";::".";LS AL DISPLAY UNIT"B"DISK PACK";21);"OPTICAL CHAR.READER"Hs"MAG.CHAR.READER";21);"KIMBALL TAGS"y"BAR CODE READER";21);"VOICE RECOG.DEVICE.""GRAPH PLOTTER";21);"MICROFILMER"900:Z9$(27)ı$:."DENTER HAS A KEYBOARD IT MAY ALSO BE USED AS AN INPUT DEVICE."R900:Z9$(27)ıZ:"HERE ARE SOME OF THE OTHER DEVICES/MEDIAWHICH MAY BE USED WITH COMPUTERS:":"PUNCHED CARDS";21);"PAPER TAPE""MAGNETIC TAPE";21);"VISUD OUTPUT. FLOPPY DISKS AND ";l"CASSETTES ARE NEEDED AS 'MEDIA' FOR STORING DATA AND PROGRAMS."t:<"ANOTHER COMMON DEVICE TO BE LINKED TO A COMPUTER IS A PRINTER FOR 'HARD COPY' OUTPUT WHICH THE USER MAY TAKE AWAY WITHHIM. IF A PRIAND PROGRAM, ETC.".900:Z9$(27)ı6: "THERE ARE MANY OTHER WAYS OF PROVIDING INPUT FOR THE COMPUTER, AND RECEIVING OUTPUT FROM THE COMPUTER. DISK DRIVES AND CASSETTE DRIVES ARE COMMONLY LINKED TO MICROCOMPUTERS BOTH FOR INPUT ANSLY STORED ON SOME OTHER MEDIUM."(I"(MICRO)";::"PROCESSOR":"THIS DOES ALL THE ADDING,SUBTRACTING, MULTIPLYING, COMPARING, ETC.":"CONTROL UNIT":"THIS KEEPS OVERALL CONTROL OF THE COMPUTER SYSTEM, FLOW OF DATA a:Of"AMONG OTHER THINGS YOU WILL FIND THE FOLLOWING UNDER THE COVER:"Uksp:"MEMORY";::"(STORE)""z"SOME MEMORY IS NEEDED TO STORE THE USER'S PROGRAM AND DATA. THESE LATTER ARE LOST WHEN COMPUTER IS SWITCHED OFF, UNLESS PREVIOUBINET, OR IN SEPARATE CABINETS. THE KEYBOARD AT WHICH YOU ARE SITTING ACTS AS AN ";::"INPUT";::" DEVICE.";\" THE SCREEN ACTS AS AN ";::"OUTPUT";::" DEVICE. THE ";::"PROCESSING";::" IS DONEUNDERNEATH THE COVER."]900:Z9$(27)ıCH"THESE THREE FUNCTIONS ARE OFTEN SAID TO BE CARRIED OUT BY THREE UNITS, I.E.":::"INPUT UNIT"::"CENTRAL PROCESSING UNIT (CPU)"::"OUTPUT UNIT":Q:qR"THE PHYSICAL 'DEVICES' CORRESPONDING TO THESE 'UNITS' MAY ALL BE HOUSED IN ONE CAULD HELP YOU TO WRITE YOUR OWN ";::"BASIC";::" COMPUTER PROGRAMS."O6:6"OPTIONS 1 & 2 FROM THE CURRENT MENU GIVEBACKGROUND INFORMATION AND A SIMPLE OVERVIEW. OPTION 3 STARTS SOME SIMPLE PROGRAMMING."6900:Z9$(27)ı78::"N.B IT MUST BE AVAILABLE IN COMPUTER MEMORY."055"YOU MAY ";::"LOAD";::" A PROGRAM INTO MEMORY FROM TAPE OR DISK, IF AVAILABLE, OR YOU MAY ENTER YOUR OWN PROGRAM AT THE KEYBOARD, PROVIDED YOU HAVE IT PRE-PREPARED."5:G6"THIS TUTORIAL SHO DATA CONTAINED WITHIN THE PROGRAM, ARE PROVIDED AT THE KEYBOARD DURING PROGRAM EXECUTION, OR ARE OBTAINED FROM A DATA FILE HELD EXTERNALLY (E.G. FLOPPY DISK OR CASSETTE TAPE)."4900:Z9$(27)ı*5"BEFORE A PROGRAM CAN BE RUN (EXECUTED) ITIONAL LINES."3"THESE INSTRUCTIONS ARE STORED IN COMPUTER MEMORY, AND ARE ";::"EXECUTED"::"(OBEYED) IN SEQUENCE, USUALLY IN ASCENDING ORDER, BUT SUBJECT TO BRANCHING INSTRUCTIONS."34"INSTRUCTIONS USUALLY OPERATE ON"BASIC";::" PROGRAM IS A SET OF INSTRUCTIONSREFERRED TO AS ";::"STATEMENTS";::", IN ASCENDING LINE-NUMBER ORDER (IN RANGE 0-63999 IN OUR CASE). ";3"LINE NUMBERS ARE USUALLY IN INTERVALS OF TEN TO ALLOW FOR EASY AMENDMENT/INSERTION OF ADDPORATING ALGORITHMS AND/OR FLOWCHARTS ";::"PRIOR TO":X1/"PROGRAMMING).":16"YOU MAY NOW BEGIN SECTION 2 WHEN YOU RETURN TO THE MAIN 'MENU'."1^900:Z9$(27)ı1h1|1::12);::"BEGINNING BASIC":::34,22"A ";::OMPILER WILL SHOW THEM UP. THESE ARERELATIVELY EASY TO CORRECT, VERY OFTEN BEING MERELY TYPING ERRORS.":A1."ANOTHER MORE DIFFICULT TYPE OF ERROR TO FIND AND CORRECT IS THE LOGICAL TYPE OF ERROR. (YOU MUST DO YOUR 'HOMEWORK' - PROBLEM ANALYSIS, INCORERLY WHEN FIRST WRITTEN. TO FIND AND CORRECT ERRORS IS CALLED ";::"DEBUGGING";::". THERE ARE ";::"SYNTAX";::" ERRORS, AND ";::"LOGICAL";::" ERRORS."j0,:"WHEN THE RULES (SYNTAX) OF A LANGUAGE ARE BROKEN IN A PROGRAM, THE INTERPRETEROR CD WIDELY AVAILABLE, ESPECIALLY ON SMALL COMPUTERS."|.::"PASCAL";::" A GENERAL PURPOSE/EDUCATIONAL TYPE LANGUAGE.".::"RPG";::" SUITABLE FOR GENERATING BUSINESS REPORTS.".900:Z9$(27)ı/:"COMPUTER PROGRAMS RARELY WORK PROPS AND GRAMMATICALRULES (SYNTAX)."7-::"FORTRAN";:x-" SUITABLE FOR MATHEMATICAL/ SCIENTIFIC APPLICATIONS."~--:"COBOL";:-" SUITABLE FOR BUSINESS APPLICATIONS"-:"BASIC";:3." GENERAL PURPOSE LANGUAGE, EASY TO LEARN, ANRETERS";:," OR ";-,:"COMPILERS";:z," CONVERT THE HIGH LEVEL LANGUAGES INTO MACHINE CODE AUTOMATICALLY.",900:Z9$(27)ı!-:"THERE ARE MANY HIGH LEVEL LANGUAGES AVAILABLE, (EXAMPLES BELOW), EACH WITH IT'S OWN CHARACTERISTICGRAMS IN ";::"MACHINE CODE";:+" (LOW LEVEL LANGUAGE) WHICH WAS VERY TEDIOUS, COMPLICATED, TIME-CONSUMING AND ERROR- PRONE. NOWADAYS HIGH-LEVEL NEAR ENGLISH/MATHEMATICAL LANGUAGES, WHICH ARE FAR EASIER TO USE, ARE AVAILABLE.": ,:"INTERPNTED IN DIAGRAMMATIC FORM), AND/ OR ALGORITHMS (STEPS SET OUT ";[*f"IN WRITTEN FORM).":*h"NOTE:- THE ABOVE WORK CAN TAKE MUCH LONGER THAN THE ACTUAL PROGRAMMING."*n900:Z9$(27)ı +::"PROGRAMMERS HAD ORIGINALLY TO WRITE THEIR PROPROBLEM TO ANALYSING EXISTING LARGE BUSINESS SYSTEMS AND RE-DESIGNING THEM.":@*d"THE LOGICAL FLOW OF PROCEDURES MUST BE CLEARLY LAID OUT, IN CONSULTATION WITH THE END USER(S). USE MAY BE MADE OF FLOWCHARTS (STEPS TO BE CARRIED OUT REPRESE A PROGRAMMER APPROACHES A COMPUTER (EXCEPT FOR TRIVIAL PROBLEMS) HE MUST HAVE HIS 'HOMEWORK' DONE.":R)Z"A PROBLEM MUST FIRST BE FULLY ANALYSED, AND THE SOLUTION WORKED OUT. THE PROBLEMCOULD BE ANYTHING FROM WORKING OUT A SMALL MATHEMATICAL REPRESENTS ONE.":'""EACH CHARACTER (ALPHABETIC OR NUMERIC), HAVING BEEN CONVERTED INTO THE BINARY EQUIVALENT OF ITS 'ASCII' CODE, IS THEN OPERATED UPON BY THE COMPUTER AT TREMENDUOUS SPEEDS."'(:'<900:Z9$(27)ın(P:"BEFOREO BE PRINTED OUT FROM VARIABLES BY PUTTING MESSAGES IN DOUBLE QUOTES ";(34);"."YFUFZ:"PRINT";(34);"P";(34);::" MEANS PRINT THE LETTER":"(CHARACTER) 'P'."F_ Gd:"PRINT P";::" MEANS PRINT THE CONTENTS OF STORE LOCATION (THE VARI. AS NOT ALL VERSIONS ALLOW THIS OPTIONALITY THE PROGRAMS WILL ALSO BE EASIER TO TRANSFERTO OTHER SYSTEMS."EE900:Z9$(27)ıEF:"PRINT":SFP"IF WE SAY ' PRINT P ' WE MEAN OUTPUT THECONTENTS OF STORE LOCATION 'P'. WE DISTINGUISH MESSAGES TNOT CHANGE.""DB900:Z9$g(27)ıDC:"IN SOME VERSIONS OF BASIC (INCLUDING APPLESOFT) THE 'LET' IS OPTIONAL, I.E."::"30 P=H*R"::"IS ALSO ALLOWED. WHILE OMITTING THE 'LET' MAY SAVE MEMORY SPACE, PROGRAMS"lED"ARE MORE MEANINGFUL WITH 'LET'ION, AS THE LETTER 'X' MAY NOT BE USED."CC<900:Z9$(27)ıKC=: DA"NOTE THAT CONSTANTS, I.E. SPECIFIED VALUES INSTEAD OF VARIABLES ARE ALLOWED,E.G."::"30 LET P=40*R"::"THESE MAY BE USED WHEN THERE ARE DEFINITE VALUES WHICH DO ."B'900:Z9$(27)ı>"NOTE THAT DATA LINES MAY BE ANYWHERE IN A PROGRAM, BUT THEY ARE TAKEN IN THE ORDER IN WHICH THEY ARE MET."?900:Z9$MEANS OF THE VARIABLES.".=900:Z9$(27)ı="LINES 10 AND 20 REQUEST DATA TO BE STORED IN MEMORY LOCATIONS WHICH WE ARE NAMING 'H' AND 'R'. IT NEED NOT CONCERN US WHERE IN MEMORY THEY ARE AS THE COMPUTER RECORDS THIS."=v>"THE FIR ITEMS, SO IN"::"BASIC";::" PROGRAMMING WE MAY USE LETTERS AS"::"VARIABLES";:=" TO STAND FOR DATA ITEMS. WE NORMALLY CHOOSE APPROPRIATE VARIABLE NAMES, E.G. 'H' FOR HOURS, 'R' FOR RATE,AND 'P' FOR PAY. WE THEN REFER TO THE DATA ITEMS BY 4,(37):::"PROGRAM EXPLANATION":;"IF DATA ITEMS ARE KNOWN WHEN WRITING A PROGRAM, ";::"READ";::" STATEMENTS WITH MATCHING "::"DATA";::" STATEMENTS MAY BE USED.";T<"JUST AS IN MATHEMATICS WE OFTEN USE LETTERS TO STAND FOR DATARAM-HOURLY PAID WORKER":M:$"10 READ H";:30);::"INPUT"::"20 READ R";:B30);::"INPUT"::"30 LET P=H*R";:30);::"PROCESS"::`"40 PRINT ";(34);"PAY EQUALS ";(34);";P";:30);::"OUTPUT":$;t"50 DATA 40":"60 DATA 5":"70 END"::3D H";:30);::"INPUT"::l9"20 READ R";:30);::"INPUT":::"30 LET P=H*R";:30);::"PROCESS"::9"40 PRINT ";(34);"PAY EQUALS ";(34);";P";:30);::"OUTPUT"::9"50 DATA 40"::"60 DATA 5"::"70 END":900:Z9$(27)ı::"PROGJUST AS THERE ARE THREE MAIN FUNCTIONS OF A COMPUTER, ";::"INPUT, PROCESS, OUTPUT";::", SO THERE ARE THREE CORRESPONDING TYPES OF INSTRUCTION (AMONG OTHERS)."8::"SIMPLE PROGRAM TO CALCULATE GROSS PAY FOR HOURLY PAID WORKER":9:"10 REA."::7:"THE IMPORTANCE OF THE LEARNER TRYING OUTHIS/HER OWN PROGRAMS CANNOT BE OVER- STRESSED. LEARNING TO PROGRAM IS ESSENTIALLY A PRACTICAL EXERCISE !!":7900:Z9$(27)ı77p7z::10);::"READ/DATA/LET/PRINT":8"V900:Z9$(27)ı,V:"EXPLANATION":V"THE COMPUTER SETS UP A LIST OF DATA AVAILABLE TO THE PROGRAM IN THE ORDER INWHICH IT HAS BEEN ENTERED IN THE PROGRAMSTATEMENT LINES."VV"LINE 45 SETS UP A ";::"LOOP";:W" IN THE PROGRAM EXTRA LINES IN THEIR PLACE, AS ABOVE.":vU"NOTE THAT BOTH ";::"READ";::" AND ";::"DATA";::" STATEMENTS"U"MAY CONTAIN MULTIPLE VARIABLES/DATA ITEMS, AS LONG AS THEY ARE SEPARATED BY COMMAS (NONE AT END OF STATEMENT LINE, HOWEVER)." DATA, AND USING A BRANCH INSTRUCTION ";::"GOTO";::"."ATMTR:"WE MAY ADD THE FOLLOWING LINES TO THE ABOVE PROGRAM:"::"45 GOTO 10":"65 DATA 50,4,44,6,40,4":900:Z9$(27)ı+Uu::600::34,(37)::"RE-LISTING THE PROGRAM WILL SHOW THE BOOT TUTOR DISK (PR#6)"-S900:Z9$(27)ı3S9S mS*::505::34,(37):::"BRANCHING/LOOPING":;TH"THE FIRST PROGRAM (ABOVE) IS RATHER LIMITED, AS AMONG OTHER THINGS IT CATERSFOR ONLY ONE EMPLOYEE. WE WILL EXPAND THIS, PROVIDING MORE:QR"$1200 INVESTED @ 12.5% COMPOUND INTEREST FOR 40 YEARS, YIELDS:"fR:12001.12540|R900:Z9$(27)ıR::"TRYING OUT A PROGRAM FROM TUTORIAL"::S"1.GOTO MAIN MENU"::"2.EXIT - FINISH"::"3.ENTER/EDIT/RUN/SAVE"::"4.RE-NENUMBERS, E.G."::"]PRINT P":~Q"THIS COMMAND WILL RESPOND WITH THE VALUE200 AFTER THE ABOVE PROGRAM HAS BEEN RUN.":Q900:Z9$(27)ıQ:"EXAMPLES":Q"]PRINT 4*5/2-3"::"WILL RESPOND WITH 7"QR"]PRINT 1200 * 1.125 ^ 40"::"NOTE:-MAX LENGTH 30 CHARACTERS, AND THE FIRST MUST BE A LETTER."[P900:Z9$(27)ı Q"NOTE:- PROVIDED THE PROMPT SYMBOL ']' ISSHOWING, ALONG WITH THE CURSOR AT THE LEFT OF THE SCREEN, THE COMPUTER MAY BE USED IN 'DIRECT' MODE, I.E. WITHOUT LI"LIST":O]900:Z9$(27)ıOb"5.EXECUTE THE PROGRAM BY TYPING THE COMMAND ";::"RUN"::"PROGRAM OUTPUT AFTER ";::"RUN":::"PAY EQUALS 200"Og900:Z9$(27)ıEPl"6.SAVE THE PROGRAM (ON SEPARATE DISK):":::"SAVE";::""NEW";::" AND PRESSING THE 'RETURN' KEY."0N?ND"2.ENTER THE PROGRAM, LINE BY LINE, AND PRESS THE 'RETURN' KEY AT THE END OF EACH LINE.":NN"3.EDIT/RETYPE ANY INCORRECT LINE."NSOX"4.LIST PROGRAM FOR CHECKING USING THE COMMAND ";::"10 READ H":"20 READ R":"30 LET P=H*R"M"40 PRINT ";(34);"PAY EQUALS ";(34);";P":"50 DATA 40":"60 DATA 5":"70 END"::34,(37):M0:"PROCEDURE FOR PROGRAM ENTRY/LIST/RUN":M5:34,(37):*N:"1.CLEAR MEMORY BY TYPING THE COMMAND ";::"OWED, E.G. 'A(B+C)' SHOULD BE ENTEREDAS 'A*(B+C)'.":LT"WHERE THERE IS ANY AMBIGUITY, OR WHERE YOU WISH TO CHANGE THE NORMAL ORDER OF PRECEDENCE PARENTHESES MAY BE USED."L^900:Z9$(27)ıLL(M:::"PROGRAM - HOURLY PAID WORKER"::)"K'::34,(37):*K,:"NOTES:"::K@"WHERE THERE ARE TWO OR MORE OPERATORS OFEQUAL PRECEDENCE TO BE CARRIED OUT IN ANEXPRESSION THE COMPUTER WILL WORK FROM LEFT TO RIGHT."KE900:Z9$(27)ı5LJ"NO ASSUMED ARITHMETIC OPERATORS ARE ALL MULTIPLICATION";-JW1);"3 ) OF EQUAL"FJW);"/ DIVISION";cJW1);"3 ) IMPORTANCE"iJJW);"^ EXPONENTIATION";J W1);"2"JW);" (TO POWER OF)JJW);"() PARENTHESES";JW1);"1"K"W);" (ROUND BRACKETSNG AND RUNNING."&I900:Z9$(27)ı,I2I:I:nI:"ARITHMETIC OPERATORS/ORDER OF PRECEDENCE":vIW1IW124IW);"+ ADDITION";IW1);"4 ) OF EQUAL"IW);"- SUBTRACTION";IW1);"4 ) IMPORTANCE"IJW);"* MI-COLON IN LINE 40 FORCES THE VALUE OF 'P' TO BE PRINTED IMMEDIATELY FOLLOWING THE WORDS 'PAY EQUALS '."sHH"LINE 70 INDICATES THE LOGICAL END OF THEPROGRAM."H900:Z9$(27)ıI16:"THE NEXT SECTION DEALS WITH PROGRAM ENTRY, LISTIABLE) 'P'."!Gn900:Z9$(27)ıGx"THE STATEMENT IN LINE 40 SHOULD BE MORE OR LESS SELF-EXPLANATORY. THE WORDS 'PAY EQUALS ' WILL BE PRINTED, FOLLOWED BY THE VALUE 200 OF THE VARIABLE 'P' WHICH HAS BEEN EVALUATED IN LINE 30."G}mH"THE SE"30 IF A <= B THEN 300":0f900:Z9$(27)ı8f10f"NOTE:- SOME SYSTEMS (INCLUDING APPLE) ALLOW A STATEMENT INSTEAD OF A LINE NUMBER AFTER THE ";f:"THEN";::" E.G.":ff"10 IF A = B THEN PRINT ";(34);"NUMBERS EQUAL";(34) GREATER THAN OR EQUAL TO"7eW);"<> NOT EQUAL TO"=ee"NOTE THAT WITH EACH OF THE LAST THREE OPERATORS TWO SEPARATE SYMBOLS ARE NECESSARY."ee:"EXAMPLES":ee"10 IF A = B THEN 100":e"20 IF A < B THEN 200":fOW THE LOGICAL OPERATORS ";dd[:"AND, OR, NOT";::", BUT THESE ARE NOT DEALT WITH HERE."zd\900:Z9$(27)ıd]W10d^W);"= EQUALS"dhW);"< LESS THAN"drW);"> GREATER THAN"d|W);"<= LESS THAN OR EQUAL TO"eW);">=EXPRESSIONS FOR EQUALITY, INEQUALITY, ORWE MAY COMPARE THEM TO SEE IF ONE IS GREATER THAN ANOTHER, ETC.":dZ"A TABLE OF RELATIONAL OPERATORS FOLLOWS ALONG WITH SOME EXAMPLES."::"FOR THE EXPERIENCED PROGRAMMER SOME SYSTEMS (INCLUDING APPLE) ALLE 15 IS ";jb:"TRUE";::" THAT CONTROL PASSES TO LINE 70, I.E. WHEN THE TERMINATOR -1 HASBEEN READ."b900:Z9$(27)ıbb@bJ:bO10);bT:"RELATIONAL OPERATORS":bUbV34,2:mcX"WE MAY COMPARE TWO VARIABLES OR Z9$(27)ıan:ax700.a:34,(37): b"EACH TIME 'H' RECEIVES A NEW VALUE IN LINE 10 IT IS IMMEDIATELY COMPARED WITH -1 IN LINE 15. IF 'H' IS NOT EQUAL TO -1 THE COMPUTER CONTINUES ON WITH LINE 20. IT IS ONLY WHEN THE CONDITION IN LIN: `2600`<:34,(37):%`E`F"LET US EXAMINE THE PREVIOUS PROGRAM (ABOVE) WHEN WE HAVE ADDED THE FOLLOWINGTWO LINES TO IT:"`K`P"66 DATA -1 (ROGUE VALUE)"`U`Z"15 IF H = -1 THEN 70 (CHECKS 'H')" ad900: IT." _c_ "AS A ROGUE VALUE WE COULD CHOOSE -1 FOR THE NO.OF HOURS (NOBODY WORKS -1 HOURS)."i__"WE WILL THEN HAVE TO TEST EACH VALUE OF 'H' EVERY TIME WE READ A NEW VALUE FOR IT TO SEE IF IT IS THE TERMINATOR -1."_900:Z9$(27)1`( VARIABLE IN QUESTION EACH TIME AROUND THE LOOP TO SEE IF IT IS THE TERMINATOR.WE DO THIS USING THE CONDITIONAL BRANCHING STATEMENT ";^:"IF-THEN";::"."^_"WE WILL HAVE ANOTHER LOOK AT THE LAST PROGRAM TO SEE HOW WE MIGHT ADAPT THE NORMAL RANGE OF VALUES FOR THE VARIABLE IN QUESTION, E.G. A NEGATIVE VALUE, ZERO, 9999, ZZZZ, ETC., DEPENDING ON THE CIRCUMSTANCES."]900:Z9$(27)ı^"HAVING ADDED THE TERMINATOR, IT IS NECESSARY TO CHECK THE VALUE OF THE ADDING AN EXTRA 'ROGUE' VALUE AS A TERMINATOR, OR SIGNAL TO TO THE COMPUTERTHAT THERE ARE NO MORE DATA ITEMS IN THECURRENT LIST. IT IS SOMETIMES CALLED A 'DUMMY' VALUE."\]"THIS FICTICIOUS VALUE CHOSEN WILL OF COURSE BE A VALUE OUTSIDEANCHING":[:34,2:["IN ORDER TO PROCESS LISTS OF DATA, EACH GROUP IN A SIMILAR WAY, WE USED A LOOP. HOWEVER, AS THE COMPUTER DID NOT KNOW WHEN TO STOP WE ENDED UP WITH AN ERROR MESSAGE."[\"WE MAY AVOID THESE ERROR MESSAGES BY ;::"GOTO";::" IS REFERRED TO AS AN UNCONDITIONAL BRANCH OR JUMP."OZZ"IN THE NEXT SECTION YOU WILL BEGIN THE CONDITIONAL BRANCH/JUMP STATEMENT"::"IF-THEN";::"."Z$900:Z9$(27)ıZ.ZZ:Z9); [:"CONDITIONAL BRE DATA AN 'OUT OF DATA' ERROR MESSAGE WILL BE OUTPUT."OY900:Z9$(27)ıY"DESPITE THE ERROR MESSAGE THE RESULTS WILL STILL BE OUTPUT."YY"THE 'PROBLEM' OF THE ERROR MESSAGE CAN BE SOLVED IN THE NEXT SECTION."Y IZ"NOTE THAT "ALUE 50 WILL REPLACE THE VALUE 40 FOR THE VARIABLE 'H'. SIMILARLY 'R' WILL HAVE A NEW VALUE 4, ETC."nX9Y"WHEN THE LAST DATA ITEM HAS BEEN READ THE COMPUTER WILL STILL LOOK FOR ANOTHERDATA ITEM WHEN IT RETURNS TO LINE 10. ASTHERE IS NOW NO MOR, AS EVERY TIME THE COMPUTER REACHES LINE 45 IT RETURNS TO LINE 10 AND READS ANOTHER VALUE FOR 'H'. ACCORDING AS DATAITEMS ARE 'READ' A POINTER MOVES ALONG TO THE NEXT DATA ITEM."W900:Z9$(27)ıhX"THE SECOND TIME AROUND THE 'LOOP' THE VT (INCLUDING STATEMENTS) AFTER"::"REM";::" ON THE SAME STATEMENT LINE WILL":"MERELY BE LISTED. THEY WILL HAVE NO":"EFFECT ON THE RUNNING OF THE PROGRAM."v"v$":"EXAMPLES"::v.""10 REM WAGES PROGRAM"v3"w8""200 REM CALCULATE DEDUCTIONSER TO UNDERSTAND WHAT IS HAPPENING IN THE PROGRAM."Qu!900:Z9$(27)ı`u!"SYNTAX:"ou!"======="uu"u""";::"REM";::""u "u""N.B. NO QUOTES NEEDED AFTER ";::"REM";::"."u"v""ANY TEXE INCLUDED IN PROGRAMS AT THE BEGINNING OF 'ROUTINES' AND WHEREVER THE FUNCTION PERFORMED BY A SECTION OF PROGRAM IS UNCLEAR. THESE STATEMENTS HAVE NO EFFECT ON THE RUNNINGOF A PROGRAM AT ALL. ";;u!"THEY ARE MERELY USED AS AN AID TO THE PROGRAMMPROGRAM WRITER HIMSELF).":s!"EVEN EXPERIENCED PROGRAMMERS FIND THAT PROGRAMS ARE DIFFICULT TO FOLLOW AND/OR AMEND UNLESS THEY ARE WELL DOCUMENTED (INCLUDING PROGRAMS THEY HAVE WRITTEN THEMSELVES)."s!s!:"REM";:t!" STATEMENTS SHOULD B";::" ":!rR!900:Z9$(27)ı'r\!-r!5r!:@r!11);]r!:"THE REM STATEMENT":cr!or!34,2:s!"NOT ONLY SHOULD PROGRAMS BE DOCUMENTED FOR THE ";::"USER";::" BUT ALSO THEY SHOULD BE DOCUMENTED FOR ANY PROGRAMMER (INCLUDINGTHE TERED) q !W);"PAY EQUALS 200"/q%!"THIS =>"aq*!W);"ENTER HOURS ";::"50";::" (ENTERED)"pq2!"OUTPUT";q4!W);"ENTER RATE ";::"6";::" (ENTERED)"q>!W);"PAY EQUALS 300"qC!qH!W);"ENTER HOURS ";::"-1";::" (ENTERED)" rM!:W);"]"PRINT";::" STATEMENTS ON THEIR OWN, AS IN LINE 41 ABOVE."Rp 900:Z9$(27)ıbp :"RUN";:kp W11p!W);"ENTER -1 TO TERMINATE PROGRAM"p !W);"ENTER HOURS ";::"40";::" (ENTERED)"p!"PRODUCES";q!W);"ENTER RATE ";::"5";::" (EN TO REFER TO THEPROGRAMMER TO FIND OUT WHAT IS REQUIRED.THE PROGRAM SHOULD BE ADEQUATELY"o :"DOCUMENTED";::" AND BE INTELLIGIBLE TO THE USER."o

";::"RESTORE";:K{[#:c{_#::"EXAMPLE";::v{d#"100 RESTORE"{n#900:Z9$(27)ı{x#{#{#:{#6);{#:"MORE ABOUT THE PRINT STATEMENT":{#|#:"PRINT";::" MAY BE USED AS I z##9);*z(#:"THE RESTORE STATEMENT":1z2#8z<#"IF THERE IS ANY REASON FOR RE-SETTING THE DATA POINTER TO THE BEGINNING OF THEDATA LIST IN A PROGRAM USING ";::"READ/DATA":{F#"STATEMENTS, ALL THAT IS REQUIRED IS A"::"RESTORE";::" STATEMEX=5 JUST THEN)"y":y""A PROGRAM MAY BE CONTINUED AFTER AN INTERRUPTION (IF APPROPRIATE) BY TYPING THE DIRECT COMMAND ";::"CONT";:y"", PROVIDED THAT THE PROGRAM ITSELF HAS NOT BEEN CHANGED,OR AN ERROR ENCOUNTERED."y"900:Z9$(27)ıY OTHER POINT A ";::"STOP";::" STATEMENT MAY BE USED."Cxy"x~""THE COMPUTER MAY THEN BE USED IN DIRECT MODE, E.G. TO EXAMINE CURRENT VALUES OF VARIABLES, ETC."x"x":"EXAMPLE":x""PRINT X (NO LINE NUMBER)"y""5 (IF "w="0wB""300 REM SORT NAMES ALPHABETICALLY"FwL"900:Z9$(27)ıNwV":Yw["11);yw`":"THE STOP STATEMENT"::wj":"END";:=xt"" IS NORMALLY USED AS THE VERY LAST STATEMENT IN A PROGRAM. IF THERE IS A REASON FOR STOPPING A PROGRAM AT AN