@L}5 _$% l0$)$$Hȱ$ UhL" `e$$%`$%`  R@W!( L(1   Y I`  d  Ld M * @  $ % CC$$)%1 Udߥ$9%: !0 S$% DD˙`  }J)Lr d M * @  $ % CC$$)%1 Udߥ$9%: !0 S$%} DD˙`  }J)Lr J  ((  p L ()   J}L= ( L 0q A    IB JC;? D W } LL  ` W )LA!  ߰")-݆ p" } $G@LL 08`Q")<2Q0 -G$Ș݆ UL# ; p8(()(0ʥ)NQ` }$GȘ݆LU )L ݆ L GȘ ݆LL )W>Z   HH)H }p h  hyhy D L> L JJ    ! LA*` BF }7'8  M HN H` 8 Z  \LdJJ!"! GFE@F (!L }EE !E^ ^ E E7EȩEdE/EȩE  D } .L }  ;F d  ;?F7F? ( .   Z D LL d } . D  L    p  E` , d)  D L) 0BM݊L݉} ML  N݆ L NLML [ TEqEHȱEqEh 0Gȹ G} HLL GɛL  LFREE SECTORS G) *Gȩ GȽG GȌ*jj >G} C8jJ3j2CD( C202C ԠBX` N 1? l LlD:RAMDISK}.COMLu L1 L ;LHL  T`  `8  ɐ     `TU  } L ? .  t`GBJ ~DEHI B V0dV!}QDEHI VF9 ,0 ,0 s0hhL  L` H hDHEh"}DEL8HI4 0 HI,0 0  9 .G VLO#},0 L4*IJ`llD1:AUTORUN.SYSNEED MEM.SAV TO LOAD THIS FILE.D8:MEM.SAV J y08 B|DEHI$} V0 0`B;DEL`?<0LV`@ʆ v s? F0Ξ05: [ BDEHI%} VY8 B V  @  /DE `E:D8:DUP.SYSERROR-SAVING USER MEMORY ON DISKTYPE Y TO &}STILL RUN DOS B;DE J  (` 9 V⪍ ઍ  -'}LLu ÝDEHILV 9 .l 9 .l  `` s$B BH(}I|DE V BLV nB,DE JLV B V BLVDEIʩ BꭝLu } 3E:}DISK OPERATING SYSTEM II VERSION COPYRIGHT 1984 ATARI CORP.A. DISK DIRECTORY I. FORMAT DISKB. RUN CARTRIDG*}E J. DUPLICATE DISKC. COPY FILE K. BINARY SAVED. DELETE FILE(S) L. BINARY LOADE. RENAME FILE M. RUN AT ADDRES+}SF. LOCK FILE N. CREATE MEM.SAVG. UNLOCK FILE O. DUPLICATE FILEH. WRITE DOS FILES P. FORMAT SINGLEL !N',}#"&))9(&*)/h)''-&؆莟R'S  vL/ˢ L }Insert DOS 2.0s, type Y Λx -}DEfHI 1莏#q! @ y0ɛ8A0,' ȅ 1 1ild! 1L!NO SUCH ITEMSELECT.} ITEM OR FOR MENU! 0 .z:*{}.|{ 1 0 0JB 18L%|DL/}%DIRECTORY--SEARCH SPEC,LIST FILE?[# 0 0 &|D3" 1L!NOT A DISK FILEN !B 1L!E# 1 !BD0}ED:}:1BJ|DE 1DEBHI 1 h0ߢ 0.1}  0?詛 1 y0YЛ 1 ;#L" ;#L! BL1TYPE "Y" TO DELETE...DELETE FILE SPEC2}COPY--FROM, TO?OPTION NOT ALLOWED697 FREE SECTORS COPYING---D8:COPY32.COMl# 0|D .L/%#3}##JB|DE 1BHID#E 1#0: B 1L!#͑### B 1#c$0SY4}S1}:## # # .#Ƚ# # 𩛙## 1,#PD#ELJ- <.BJD#E 5}1 1HH 0hh|DL%1}:̳# L% #D#EL% 1 0 . .0O% 1L!WILD CARDS NOT A6}LLOWED IN DESTINATION 0 <.|K}N 2 FORMAT. t* 5) 1L!`) 0NΞ 0 L1) 1 L!BAD LOAD FILELOAD FROM WHAT FILE?) 0 ?}0#B 1L!WHAT FILE TO LOCK?) 0 0$B 1L!WHAT FILE TO UNLOCK?DUP DISK-SOURCE,DEST DRIVES?TYPE "Y" IF OK TO US@}E PROGRAM AREACAUTION: A "Y" INVALIDATES MEM.SAV.FE! +L1   `*  70 2 2A} 0.* 1 y0 0)INSERT BOTH DISKS, TYPE RETURN^, 1 y038逍 N, 1L! ,B}C, t*  Lx+, 0 ^, 1 y0 , ,0,0 ,L+ ,I0 ,Vǭ0C}Ξ, 0 }, 1 y0C,ШC, 0K'!" H H 'h h Lx+!EF 5L1L!D,I,HhD}` NOT ENOUGH ROOMINSERT SOURCE DISK,TYPE RETURNINSERT DESTINATION DISK,TYPE RETURNE}`  `8 rL1`-* 1P* 1 y0Y`hhL!NAME OF FILE TO MOVE?- 0 0|DL% <.F},^ 1 70 0 .@L# .BJ 1  DEHIB V L1 ,} 1 70,L.  G}JB|,#P#DE 1 HI BDEHHII 1 B 1 ,^ 1 70,0La- B V,#PH},^ 1 70 0L#L!-* 1P* 1 y0Yj383}mm ݭI}}`8}``|* ? ɛ,`|:-)| / 1L!`DESTINATION CANT BE DOJ}S.SYS0 0H{ 24Δ 28/L!/) 2 Π 2 0 ξK}hAΞB,0 J 1 BDEHI,HÝDE 1HIHIDELSAVE-GIVE L}FILE,START,END(,INIT,RUN)O S0 1`BDEPHI V` S0H 1 L!M}0 0 1L~0`PLEASE TYPE 1 LETTER,0`hhL! 70 1L0L<1 ,;ɛ7,"ɛ:ݦ1ݥN}A"D|ݤD|ȩ:|ȩ|ɛ,,(/+.ީ1 1,ɛ`轤{NAMEO} TOO LONG B VL!` L1I H1EΝDL1|mDiE` V0`8d/8 i:222 1 LP}!ERROR- 128ɛ+,' 20*.. өr2 1``2TOO MANY DIGITSINVALID HEXAQ}DECIMAL PARAMETER800 0 8 00`,0'D800 H,ɛh`2L1NEED D1 THRU D8uR} ECIMAL PARAMETER800 0 8 00`,0'D800 H,ɛh`2L1NEED D1 THRU D8u05  15 2 2151^116115ύ011$r2ԭ5 3)5)5ԭx GT}@@L00)+& 2 L0=ɛ -L!1LV1L1 /3 3ȹ441L-4 v3 25 2H 2h͔5U}L3L3 2 k3U hh`DOC`QL3P1Lk0S1H /3h0B k3@ VL0LU!#$53 1181118V}1111Ε5 1Lk0552 1Ȍ1i111i11115Lk0pppB4f5&&&&&&&&^6f^6&&&&&W}&&A1@BJ D2ELVK@BHILV^Щ6 2BD2EJ VBD5EHI0 V0%5X}5 2iХiL[2 25 25`D:*.*` i@`8 ``@i `8@`0 BLV525<4Y}5`HH i ԍΗ552 ԍhh@ Lح1Э1Ѣ 24.4 24Z}4`D4E` 2BJ k3LVRH` 2BD4EhK)I JLV333 BASIC LANGUAGE OBJ > i}MACHINE LANGUAGE DOC > DOCUMENTATION PIC/MIC/FNT/MVM > GRAPHICS AMS/MUS/MBD > MUSIC LST > BASIC LISTING j}-SOME MACHINE LANGUAGE PROGRAMS CAN ONLY BE RUN BY BOOTING THE DISK MENU "WITHOUT" BASIC.-FOR SOME PROGRAMS, XL OR XE MOD k}ELS MAY REQUIRE A "TRANSLATOR" PROGRAM TO BE BOOTED FIRST. [AVAILABLE SEPARATELY FROM B E L L C O M.]-MOST PROGRAMS ARE l} RELATIVELY SELF-EXPLANATORY; HOWEVER, SOME HAVE SEPARATE DOCUMENTATION FILES AVAILABLE. BASIC PROGRAMS MAY CONTAIN INSTR m}UCTIONS IN THEIR PROGRAM LISTINGS.-TO WRITE THIS GREAT MENU PROGRAM ONTO ANOTHER DISK, (Q)UIT MENU, BOOT DOS, AND USE TH n}E "O" COMMAND TO COPY THE MENU FILE "AUTORUN.SYS" ONTO YOUR DISK. < MENU by DAVID CASTELL >U, BOOT DOS, AND USE TH e\O4e4DELACOLTALUMTADSTARdjj̠Ơp} Π̬ ЮϮؠnKKȬ q} ˹ʠ . B BX ՛b-@'AR@-(}l>-@r}>($Press<> key to implement each q?-@@?(%step of operation... v3-@s}@3(MICROPROCESSOR UNIT (MPU))-@@)(à'-@(@'(    t})-@@)(àԠ$-@(@$( $-@(@$( $-@u}@$( %-@@ %( Accumulator$-@@$( $-@(@$( v}$-@(@$( Ҡ$-@@$( Program C.$-@@$( $-@(w}@$( #-@@#( Addr. Reg %-@(@%( Data Reg  )-@@)(- Mx} E M O R Y -*:-@@:( Address  Binary Mnemonics4:-@@:(  Contents Conteny}ts 9'-@@'(  >:-@@:( 0000 0000 1000 0110 LDA H:-@@ :(z} 0000 0001 0000 0111  7 R:-@@!:( 0000 0010 1000 1011 ADD \:-@@":( 0000 00{}11 0000 1010  10 f;-@@#;( 0000 0100 0011 1110 HLT ӛ8-@A |}8F:B2y,@A {-@?(%This is a model of a microcomputer. Q-@@{(%The progr}}am will add values 7 & 10. 8-@AP 8F:B2y,@A @{-@?(%To begin, the P~}rogram Counter must beQ-@@{(%set to the Address of the first inst.P-@@)-@@8}( L-@@PP @-@@$( 8-@@P< @  F:B2y,@}A {-@?(%Ⱥ Contents of Program Counter Q-@@{(%are transferred to Address Regi}ster. P-@@)-@@8( L-@@PP @-@@$( 8}-@@P< @  F:B2y,@A@{-@?(%Ⱥ The Program Counter is then Q-@}@{(%incremented by 1. .P-@@)-@@8( L-@}@PP 8@-@@$( 8-@@P< @ B F:B2y,@AL{-@}?(%Ⱥ Contents of Addr. Reg. placed Q-@@{(%on Addr. Bus & Memory Loc. selected. `P-@@})-@@8( L-@@PP j@-@@$( 0000 00008-@@P< @ t} F:B2y,@A@~{-@?(%Ⱥ Contents of Memory Loc. placedQ-@@{(%on Data B}us and tsfd to Data Reg. v-@@)-@(@8( J-@@^(  r}-@@Pv f-@(@$( 6-@@J(1000 0110 LDA ^-@@Pb f } F:B2y,@A{-@?(%Ⱥ Opcode is tsfd. to InstructionQ-@@{(%Decoder a}nd LDA inst. is recognized. q-@@)-@(@8( ԮLDAJ-@(@Y( Ҡm-@}@Pq a-@(@$( Ԯ6-@(@E( ҠY-@@P] a  F:B2}y,@A@{-@?(%Ⱥ Controller Sequencer produces Q-@@{(%control pulses to c}arry out inst. P-@@)-@(@8( L-@@PP D-@(@(( }    <-@@P@ D   F:B2y,@A{-@?(%ź Address of next b}yte is tsfdQ-@@{(%from Program Counter to Address Reg. (P-@@)-@@8( }L-@@PP 2@-@@$( 8-@@P< @ < F:B2y,@A@F}{-@?(%ź The Program Counter is then Q-@@{(%incremented by 1. ZP}-@@)-@@8( L-@@PP d@-@@$( 8-@}@P< @ n F:B2y,@Ax{-@?(%ź Contents of Addr. Reg. put Q-@@}{(%on Addr. Bus & Memory Loc. selected. P-@@)-@@ 8( L-@@PP }@-@@ $( 0000 00018-@@P< @  F:B2y,@A@{-@?(%}ź Contents of Memory Loc. tsfdQ-@@{(%On Data Bus to Data Reg. then Acca. Z-@@)-@}@8( J-@(@Z( A-@@ )(  =-@@PA }E-@@$( 6-@(@E( E-@@ )(0000 0111  7 =-@@P}A E  F:B2y,@A{-@?(%Ⱥ Contents of Program Counter Q-@@}{(%are transferred to the Address Reg. P-@@)-@@8( L-@@PP @}-@@$( 8-@@P< @  F:B2y,@A`"{-@?(%Ⱥ }The Program Counter is Q-@@{(%incremented by 1. 6P-@@)-@}@8( L-@@PP @@-@@$( 8-@@P< @ J F:B2y,}@AT{-@?(%Ⱥ Contents of Addr. Reg. placed Q-@@{(%on Addr. Bus & Memory L}oc. selected. hP-@@)-@@!8( L-@@PP r@-@@!$( 0000} 00108-@@P< @ | F:B2y,@A`{-@?(%Ⱥ Contents of Memory Loc. pla}cedQ-@@{(%on Data Bus and tsfd to Data Reg. v-@@)-@(@8( J-@}@!^(  r-@@Pv f-@(@$( 6-@@!J(1000 1011 }ADD ^-@@Pb f  F:B2y,@A{-@?(%Ⱥ Opcode is tsfd. to Instruct}ionQ-@@{(%Decoder and ADD inst. is recognized. q-@@)-@(@8( ԮADDJ-@(}@Y( Ҡm-@@Pq a-@(@$( Ԯ6-@(@E( ҠY-}@@P] a  F:B2y,@A`{-@?(%Ⱥ Controller Sequencer produces Q-@}@{(%control pulses to carry out inst. P-@@)-@(@8( L-@@P}P D-@(@((     <-@@P@ D  F:B2y,@A{-@}?(%ź Contents of Program Counter Q-@@{(%are transferred to Address Register. 0P-@@})-@@8( L-@@PP :@-@@$( 8-@@P< @ }D F:B2y,@A`N{-@?(%ź The Program Counter is then Q-@@{(%increme}nted by 1. bP-@@)-@@8( L-@@PP l@-@}@$( 8-@@P< @ v F:B2y,@A{-@?(%ź Contents }of Addr. Reg. put Q-@@{(%on Addr. Bus & Memory Loc. selected. P-@@)-@@"8( } L-@@PP @-@@"$( 0000 00118-@@P< @  F:B2y,@A}`{-@?(%ź Contents of Memory Loc. tsfdQ-@@{(%on Data Bus to Data Reg. } v-@@)-@(@8( J-@@"^(  r-@@Pv f}-@(@$( 6-@@"J(0000 1010  10 ^-@@Pb f  F:B2y,@A} {-@?(%ź Operand tsfd to ALU., while Q-@@{(%other operand tsfd from Acca. to A}LU.-@@)-@@>(P-@@a(  s-@@( }=-@(@%( 9-@@P=  k-@@)(àԠ;-@@}J( \-@@k( @-@(@$( 8-@@P< @   F:B}2y,@A *{-@?(%ź ALU adds the 2 operands and Q-@@{(%the sum is loaded} in the Accumulator.>-@@)-@@=(O-@@`(  r-@}@( H-@@P Rk-@@)(àԠ;-@@J( }\-@@k( \-@@P  f F:B2y,@A!Pp{-@?(%}Ⱥ Contents of Program Counter Q-@@{(%are transferred to Address Register. P-@@)-@}@8( L-@@PP @-@@$( 8-@@P< @  F:B2}y,@A"{-@?(%Ⱥ The Program Counter is then Q-@@{(%incremented by 1. } P-@@)-@@8( L-@@PP @-@@$( }8-@@P< @  F:B2y,@A"P{-@?(%Ⱥ Contents of Addr. Reg. }placed Q-@@{(%on Addr. Bus & Memory Loc. selected. Q-@@)-@@#9( }M-@@PQ A-@@#%( 0000 01009-@@P= A  F:B2y,@A# {}-@?(%Ⱥ Contents of Memory Loc. placedQ-@@{(%on Data Bus and tsfd to Data Reg.  w}-@@)-@(@8( J-@@#_(  s-@@Pw $ g-@(}@$( 6-@@#K(001111110 HLT _-@@Pc g . F:B2y,@A#P8 }{-@?(%Ⱥ Opcode is tsfd. to InstructionQ-@@{(%Decoder and HLT inst. is recognized. L q}-@@)-@(@8( ԮHLTJ-@(@Y( Ҡm-@@Pq V a-@(@}$( Ԯ6-@(@E( ҠY-@@P] a ` F:B2y,@A$j {-@}?(%Ⱥ Control Sequencer stops all Q-@@{(%control pulses. System halts!! ~ P-@}@)-@(@8( L-@@PP  @-@(@$( 8-@@P< }@  -@A   {-@?(%Press to begin again. Q-@@{(%Press to end program.  F:B2y,"@ F:B2y,@A$ A NŠŠҠ}Ǜ%N70@@70@@@*N-AR@(}!($('(*(-(4N,,($  }  >N,,($  by DON BELL  HN,,($    RN,,($  }  \N,,($     fN,,($   A MICROCOMPUTER MODEL   pN,,($ }    zN,,($  N--(% }N,,($ N,,($  N**(" } a-@A $0uSCREEN COL SUBR1u##(>:A%,...5u7 #Bp!-@%"}3Ad%7 :u6-A6-%@$>u6-?:A,NuAA(XuA@lu%%6-F:A`},%AV$F:Aa,vu-%@%@(uA0u u%@AuBBAu(>:A%},uAF:,uA F:,u$u''72,138,72,174,156,6,189,176,6,141u((10,212,141,24,208,189,200,6,141,23}u((208,238,156,6,104,170,104,64,1,104u&&169,7,160,168,162,6,32,92,228,96v''169,1,141,156,6,76,98,228,170,172 v##16},30,30,30,30,30,30,30,30,30v**30,30,30,160,166,166,172,170,172,170 v172,170,0,0,8,0,0,0,0,0*v0,0,0,0,0,0,0,8,0,04}v0,0,0,0,0,0,0,0,0,0D:COMPUTER.BAS166,166,172,170,172,170 v172,170,0,0,8,0,0,0,0,0*v0,0,0,0,0,0,0,8,0,04. Atari Assembler Course----------------------------------- 1.1 Why Assembly Language To better understand t}he need forAssembly Programming, let's comparethe different types of programminglanguages: interpreted, compiled,and asse}mbled. The language we aremost familiar with, Atari BASIC,falls in the first category. Whenan interpreted language runs, e}achcommand is examined and convertedto its machine code equivalent andthen executed. Because of this"one-at-a-time" metho}d, theselanguages tend to be slower butrequire less memory. Also, thelanguage itself requires memory(8K in the case of At}ari BASIC)even with no program loaded intothe computer! Some languages, likeForth, have a very fast yetsmall interpreter.} Others likePascal are larger and slower.The closest a language can come tothe speed of machine code is atruly compiled l}anguage, such asACTION!, that generates the "nativecode" of the computer itself (the6502 microprocessor in our case). Co}mpiled languages differ frominterpreted languages in the waythey are translated into machinecode. Unlike an interpreter,a} compiler generates the equivalentmachine code for the completeprogram before it is run. Althoughthis step takes extra tim}e, itneeds only to be done once and the resulting machine-code equivalentprogram will run much fasterevery time. Lastly,} assembled language is ameans of writing programs directlyin machine code but we have theuse of words to represent thelow}est level operations of themicrocomputer. The operationalcodes or "Op-codes are representedas three-letter symbolic words }or"mnemonics". Unlike the othertypes, assembly language allows theprogrammer to optimize the speed,size, and timing of a }program bytalking in the computers own words. These advantages will easilyjustify the longer developementtime in many ap}plications, such asgames, where timing is intricate,the size must be minimized and,naturally, it has to be fast!--------}--------------------------- 1.2 Atari System Architecture In order to design good softwarewith your Atari Computer, yo}u needa good understanding of the hardware. Because Assembly Languagedeals directly with the machineitself, you will beco}me good friends with "ANTIC", "GTIA","POKEY", and the "PIA". These chipsare the work-horses of the Atariand help out the }6502 with thevarious duties of the computersystem. We will get into moredetail with them through out thecourse. For now:} Read: "DE RE ATARI", Chapter 1, (note figure on page 1-3).----------------------------------- 1.3 6502 CPU }Description BIT BIT BIT BIT BIT BIT BIT BIT 7 6 5 4 3 2 1 0 ,---+---+---+---+---+---+---+---. | | }| | | | | | | '---+---+---+---+---+---+---+---' ACCUMULATOR ,---+---+---+---+---+---+---+---. | } | | | | | | | | '---+---+---+---+---+---+---+---' X INDEX REGISTER ,---+---+---+---+---+---+---+-}--. | | | | | | | | | '---+---+---+---+---+---+---+---' Y INDEX REGISTER ,---+---+---+---+---+-}--+---+---. | N | V | X | B | D | I | Z | C | '---+---+---+---+---+---+---+---' PROCESSOR STATUS REGISTER ,---+---+}---+---+---+---+---+---. | | | | | | | | | '---+---+---+---+---+---+---+---' PROGRAM COUNTER HIGH },---+---+---+---+---+---+---+---. | | | | | | | | | '---+---+---+---+---+---+---+---' PROGRAM COUNT}ER LOW ,---+---+---+---+---+---+---+---.1| | | | | | | | | '---+---+---+---+---+---+---+---' }STACK POINTER 6502 Microprocessor Internal Registers ----------------------------------- 1.3.1 Regist}ers - A,X,Y A "register" is a memory cell,internal to the microprocessor, in which eight "bits" or binarydigits are sto}red. The accumulatoris the register where data must bestored to be operated upon. The "X" and "Y" registers arenormally }used to keep data for indexing into memory or as acounter in a loop. 1.3.2 Processor Status Register The next most i}mportant registerin the 6502 is the process statusregister. As its name implies, the"P" register holds the status ofmany }conditions in the CPU. Eachbit in this register is a flag,either a "1" or a "0", that may beused as a test for branching o}rlooping in a program. The symbolic letter for eachstatus flag is shown in the figureabove within corresponding bit of"}P" register. The "C" or "carry"flag is set (equal to one) when anarithmetic operation results in a value greater than 255 }(thehighest value for 8 bit numbers).The "Z" flag is set when anoperation results in a value equalto zero. The "I" flag i}s usedduring an "interrupting" ortime-sharing portion of theprogram. The "D" flag is set when"decimal" arithmetic is used} andreset to "0" for "binary" math. The"B" flag is set when the 6502 Breakcommand has occurred. The "X" flagis not used.} The "V" flag is set when anoperation results in a value greater than +127 or less than -128and is used for signed arithm}etic.The "N" flag, or negative flag, isequal to the seventh bit of aresult; this is also used forsigned arithmetic. Eac}h of the status bits may bechanged in a program except for thebreak flag. 1.3.3 Program Counter - PC The program co}unter holds thevalue of the memory location wherethe next machine code instructionis located. It has a "high" and"low" by}te so that 64K bytes ofmemory can be "addressed" with the16 bits. Also, the "PC" is changedby the CPU as a result of a bra}nch,jump, or subroutine in the programso that the next operation isfound. We will see some other usesof the program count}er later on. 1.3.4 Stack Pointer - S The Stack is another very usefulaspect of the 6502 CPU. It islocated in memor}y on "Page-One"(hex 0100 to 01FF) and is reservedfor the the 6502 and the programmerfor limited usage. The stack beginsat } the end of page-one (hex 01FF)and is filled on a last-in,first-out basis. The Stack Pointerholds the location of the "top }" ofthe stack. 1.4 Review of Binary and Hex Math Because we are dealing directlywith the microprocessor itself,it is } very important to understandthe operations of binary numbersand their hexidecimal equivalents.We can review this briefly  }duringthe session if there are questions.But, get a good understandingbefore we begin. A very goodtutorial appears in the } Sept/Oct.issue of "ANALOG" magazine in thecolumn "Boot Camp" by Tom Hudson.Read it and the subsequent columns!....John} DeMar 71066,337. 2/6/84 XA 5: in thecolumn "Boot Camp" by Tom Hudson.Read it and the subsequent columns!....John% Atari Assembler Course---------------------------------- 2.1 Accumulator and Arithmetic 2.1.1 The "PEEK & POKE"} of Assembly Language ,-----. | LDA | -- Load Acc. from Memory '-----' M -> A The LDA instruction transfersda}ta from memory and stores itin the accumulator. This may bethought of as "PEEKing" a memorylocation using BASIC. Dependin}gupon the data value, this commandmay effect the zero and negativeflags. The LDA instruction may be usedwith all major} "addressing modes".(They will be fully discussed laterin the course.) For now we will usetwo of these modes: "immediate" }and"absolute". In the immediate mode,the VALUE of the operand will beloaded into the accumulator. Thismode is symbolized }by a pound signbefore the operand: LDA #42 ;Load a decimal number ;into the accumulator. LDA #$2A ;Load a} hex number. In the absolute addressing mode,the operand is the memory location(2 bytes) where the data will befound:} LDA 1536 ;Get the value at ;address decimal 1536. LDA $0600 ;Get the value at ;address hex} 600. ,-----. | LDX | -- Load X-Reg. from Memory '-----' M -> X ,-----. | LDY | -- Load Y-Reg. from Memory '-----'} M -> Y The LDX and LDY instructions aresimilar to the LDA but use the Xand Y registers, respectively. LDX #214 ;Lo}ad the X-register ;with the number 214. LDY $02E4 ;Put the value from ;location hex 2E4 in the Y-reg. ,-}----. | STA | -- Store Acc. in Memory '-----' A -> M This instruction transfers thecontents of the accumulator tomem}ory and changes none of thestatus flags. Also, the value inthe accumulator is unchanged afterthe operation. The STA ins}truction uses all themajor addressing modes. In theabsolute mode, the accumulator isstored at the address given in theope}rand: STA $22A7 ;Save the accumulator ;at location hex 22A7. STA DATA ;In symbolic notation, } ;the address 'DATA' ;must be given a value. ,-----. | STX | -- Store X-Reg. in Memory '-----' X -> M ,--- }--. | STY | -- Store Y-Reg. in Memory '-----' Y -> M The STX and STY instructionssave the value of the X and Y index!}registers in memory. STX KEEPX ;Save the X-register ;at address 'KEEPX'. STY 1000 ;Store the X value at"} ;location decimal 1000. 2.1.2 Register Transfers The ability to exchange thecontents of the registers p#}roves tobe very useful in assemblyprogramming. The following commandstransfer data between theaccumulator and the index r$}egisters. ,-----. | TAX | -- Transfer Acc. to X-Reg. '-----' A -> X ,-----. | TAY | -- Transfer Acc. to Y-Reg. '----%}-' A -> Y These two instructions transferthe value in the accumulatorto the corresponding indexregister. The accumula&}tor retainsits value but the negative and zerostatus flags are effected. Thisinstruction requires no operand(implied addr'}essing). ,-----. | TXA | -- Transfer X-Reg. to Acc. '-----' X -> A ,-----. | TXY | -- Transfer Y-Reg. to Acc. '-----(}' Y -> A The TXA and TYA instructionstransfer the index registers to the accumulator and effect thenegative and zero )}flags. Again, thenumber remains in the originatingregister and no operand is needed. LDA #A9 ;Put the number hex A9 *} ;into the accumulator. TAX ;Move it to the X-reg. LDY TEMP ;Load the Y-register ;with the number a+}t 'TEMP'. TYA ;and transfer it to the ;accumulator. 2.1.3 Addition and Subtraction The arithmet,}ic functions areused in many machine languageprograms. Addition and subtractionare the only two math operationsthat the 6-}502 can execute; allother computations are derived fromthem. Because all operations are done one-byte at a time, largernu.}mbers will require multipleoperations using a "carry" foradding or a "borrow" forsubtracting. ,-----. | ADC | -- Add Me/}mory to Acc. '-----' with Carry A+M+C -> A The ADC instruction adds a valuein memory to the accumulator. Thevalu0}e of the carry bit (1 or 0) isalso added in. The result is storedin the accumulator and thefollowing flags are effected: t1}hecarry bit is set if the sum exceeds255 for a binary add or 99 for adecimal add; the negative flag isset if the seventh 2}bit of theaccumulator is on; the overflowflag is set if bit 7 was changeddue to the sum exceeding +127 or-128; the zero f3}lag is set if theresult is zero. This instruction, like the LDAinstruction, handles all of themajor addressing modes. Al4}so, theaddition may be either binaryor binary-coded-decimal and ischosen by the following one-bytecommands: ,-----. | 5}CLD | -- Clear Decimal Mode '-----' (return to binary mode) 0 -> D ,-----. | SED | -- Set Decimal Mode '-----' 1 -6}> D Normally, the binary mode isassumed and all operations are donewith binary numbers. The decimalmode is used in spec7}ial cases andshould be cleared after all decimaloperations. Also, the carry flagshould be cleared before anaddition routi8}ne to disregard aprevious carry. ,-----. | CLC | -- Clear Carry Flag '-----' 0 -> C LDA #$4A ;Add the number hex 4A9} CLC ;(without a carry) ADC $2C00 ;to the value in memory ;location hex 2C00 STA $2C00 ;and put the :}sum back ;into memory. Adding two 2-byte numbers: LDA LOW1 ;Load lower order byte ;of first num;}ber. CLC ;Clear the Carry flag. ADC LOW2 ;Add LOW1 to the lower ;byte of 2nd number. STA LOW3 ;Store lo<}w half of the ;sum at LOW3. LDA HIGH1 ;Get the higher-order ;byte of 1st number. ADC HIGH2 ;Add to =}the high byte ;of 2nd number plus the ;carry from the low sum. STA HIGH3 ;Keep the high half of >} ;the sum at HIGH3. ,-----. | SBC | -- Subtract Memory from '-----' Acc. with Borrow. A-M-(1-C) -> A The ?}SBC instruction subtracts avalue in memory from theaccumulator and takes away a borrowleft from the previous operation.Th@}e borrow is actually the lack ofa carry! Therfore, the carry mustbe set before a subtractionoperation. This command has thA}esame addressing modes and flagchanges as the ADC instruction. Ifthe result of the subtractionis less than zero, the carrB}y flagis cleared to signify a borrow. ,-----. | SEC | -- Set Carry Flag '-----' (Clear the Borrow) 1 -> C LDA TIMC}E ;Decrease the value in SEC ;memory location 'TIME' SBC #60 ;by the number 60. STA TIME LDA LOW1 ;SubtracD}t two 16-bit SEC ;numbers saved at SBC LOW2 ;HIGH1,LOW1 STA LOW3 ;and HIGH2,LOW2 LDA HIGH1 ;And save the resE}ults SBC HIGH2 ;at HIGH3,LOW3. STA HIGH3 2.1.4 Increment and Decrement The Increment and Decrement instructiF}ons add or subtract onefrom a value in memory or an indexregister. These instructions arevery valuable when used insideloG}ops. The only way to DEC or INCdirectly with the accumulator is touse the ADC or SBC. ,-----. | INC | -- Increment MemoH}ry by One '-----' M+1 -> M ,-----. | DEC | -- Decrement Memory by One '-----' M-1 -> M The INC instruction adds 1 I}tothe contents of a memory locationand the DEC instruction subtractsone from memory. These commandsoperate directly on meJ}mory withouteffecting the contents of theregisters. Only the zero andnegative flags are effected by thenew value in memorK}y. LDA #10 INC COUNT ;Add one to the value ;at Location 'COUNT'. ;The accumulator still equals 10. ,L}-----. | INX | -- Increment X-Reg. by One '-----' X+1 -> X ,-----. | DEX | -- Decrement X-Reg. by One '-----' X-1 -> M}X ,-----. | INY | -- Increment Y-Reg. by One '-----' Y+1 -> Y ,-----. | DEY | -- Decrement Y-Reg. by One '-----' Y-N}1 -> Y These instructions have the sameeffect as the INC and DEC commandsbut work directly on the indexregisters. We wiO}ll see how theseone-byte commands are very usefulin controlling loops. LDA #$FF DEX ;Subtract one from X-reg. P}INY ;Add one to Y-Register. ;The is unchanged. 2.1.5 Logical Operations The binary logic operations aQ}reused to test individual bits fordecision making purposes. Also,they can change certain bits of abyte without effecting R}the others. ,-----. | AND | -- "AND" Memory with Acc. '-----' A & M -> A The logical "AND" operationcompares each bS}it in memory withthe corresponding bit in theaccumulator and stores the resultsback in the accumulator. If bothbits are aT} "1", the answer will bea "1"; any other combination givesa zero for that bit. The negativeand zero flags are effected by U}theresults. The following exampleshows how one bit in memory istested to make a decision: LEFT=4 ;The number LEFT V}is a LDA #LEFT ;"mask" for bit 3. ;(4=0000 0100 binary) AND STICK0 ;Check if the stick ;isW} in that position. BEQ LEFTP0 ;...if it is, then go ;to the instruction ;labeled 'LEFTP0'.WeX} will discuss branch instructionsin the session 3. ,-----. | ORA | -- "OR" Memory with Acc. '-----' A or M -> A TheY} binary "OR" instructionreturns a zero to the bits of theaccumulator if both correspondingbits are "0"; any other combinatZ}iongives a "1". Again, thisinstruction effects the negativeand zero flags. This example sets asingle bit in memory withou[}tchanging the bits others in thatlocation: LDA #1 ;Make only the desired ; bit a one... ORA CNTRB ;S\}et bit 1 in memory ;at location 'CNTRB' STA CNTRB ;and store the result ;back there. ,-----.]} | EOR | -- "Exclusive-OR" Memory '-----' with Accumulator A V M -> A The "Exclusive-Or" functioncompares each bi^}t in memory withthe accumulator, returns a "1" ifthey are different (0 and 1), orreturns a "0" if they are the same(1-1 o_}r 0-0). This instruction canbe used to complement a number bycomparing with binary 1111 1111. LDA DATA ;Get the number `}stored ;at location 'DATA'. EOR #$FF ;Complement it. ;($FF= binary 1111 1111.) STA DATA ;And put a}it back. 2.2 Assembly Language Format Please review the detailsinvloved in entering assemblylanguage lines of codb}e. UnlikeBASIC, Assembly programs havedistinct "fields" on a line thatare reserved for different aspectsof a line of instc}ruction. Read someprograms to get used to the format!Read: ATARI ASM/ED Manual, p. 8-10And other references coverid}ng this. 2.3 ATARI ASM/ED Editor Commands Become familiar with the Editor.The NUM command gives line numbersautome}atically when entering code.The REN will renumber the programlines. Note that the line numbersare needed only for editor pf}urposesand are not used in the program asin BASIC. The LIST and ENTER commands areused in the Editor to store andretrig}eve the source code. The fileis not an executable program butneeds to be converted to the actualmachine code. The ASM or aq}?b%DOS SYSb*)DUP SYSb SAUTORUN SYSb_HELP DOCbjoCOMPUTERBASb6AAC1 DOCb]AAC2 DOCb%uKEYBOARDBASb1TYPING BASb#TYPOTIMEBASbJWORDADVNBASb8FRENENGLBASssemblecommand does this for you. Bydefault, it takes your source codein memory, assembles it into memory and sends a lisr}ting to thescreen. There are many variationsof this command to allow assemblingto and from disk with the listingsent to ys}our printer,etc.READ: ATARI ASM/ED Manual Ch.3 and p. 25-26.______________________________t}_____ John DeMar 71066,337 Feb.20,1984XA 5: .3 and p. 25-26.______________________________4}X ?(} Š?(This program is intended toR+(#explain and demonstrav}te the variousR("uses and capabilities of BASIC I/O6+(#commands as they relate to the key-6(board.Q'(In order w}to use BASIC I/O com-Q(%mands with the keyboard, a connection(C)(!must be established. This is doneC(with an OPEN comx}mand.2$$(press RETURN to continue.<""@@KF )@(} @`Ps%(This OPEy}N command links theK(!keyboard to I/O control block #1.s(#There are 8 control blocks numberedZO+(##0 through #7. #0 isz} always used byO(the Screen Editor and cannot bedO)(!opened. #6 should be reserved forO(!GRAPHICS, PLOT, DRAWTO, and {}othernT+(#screen display commands. #7 is usedT($by LPRINT, CLOAD, CSAVE, LOAD, SAVE,xN'(ENTER, and sometimes LIST. T|}hatN("leaves #1 through #5, any of whicho"(may be used for this OPEN.G( The 4 in this example indicateso(#input, }}the 0 is a place holder, andR$('K' designates the keyboard.E(Press RETURN to continue.R)@` (}A~}9(!The keyboard GET command enters`("the ASCII code of the selected keyW-(%into variable X. The character is no}tW(%displayed and RETURN is not required.O)(!Any variable name may be used,butO(!string names are not allowed. The}U+(#I/O control block number must agreeU(%with that used in the OPEN statement.R*("The following routine demonstrates}R(#the keyboard GET command. Press any])(!key except BREAK. Press RETURN toE(break out of this loop.WAA@}Z(]()@"AUAP (You just pressed >:, A7 (}A7(The keyb}oard INPUT command isR*("a curious relative of the ordinaryR(#INPUT which allows entry of stringsS)(!and variables,} but which does notS(%show the characters as they are beingT,($typed. RETURN must be used after keyT(#entry. The foll}owing routine demon-"x*("strates this. Press RETURN withoutS($key entry to break out of this loop.eAA@r};@,u(x(,(ENTER PASSWORD * 6@@B:,"APJ ( (T A^N*(}ENTER}>:@4,K>:@4,N(LIST>:@4,K>:@4,hM%(These two keyboard commandsM(#won't be demonstrated.} They have norO+(#practical application and are shownO(only for the sake of curiosity.|q,($They can alter or destroy} a program,P(so caution is strongly advised.q(Press RETURN to continue.7)@7(}ENTER>:@4,K}>:@4,p(( This most unforgiving command,M( once executed, is like writing ap(BASIC program with the monitor}Q(( turned off. The computer acceptsQ($direct commands and numbered programj)(!statements from the keyboard, butR($n}othing appears on the screen exceptj(for an occasional k(READY or ERROR.=(! 3 restores normal operation.^(}Press RETURN to continue.k)@u)(}LOAD>:@4,K>:@4,M(This command, like other LOADu(#co}mmands, clears the memory to loadk-(%a tokenized program, but in this caseW(%from the keyboard and without the aidk(}of the screen.p( Try it if you dare!B(! 3 restores normal operation.c(Press RETURN to continue.p)@}b( }PEEK(764):(!This address is a one byte FIFOb(#buffer. It contains the key code ofT,($the last key pres}sed. A value of 255T(#indicates that the buffer is empty.Q'(The key code is not related toQ(%ASCII but instead indi}cates which keyU,($was pressed. The key adds 64 toU($the code and the SHIFT key adds 128.v(( Many key combina}tions which areN(!ignored by GET and INPUT commandsv(#do produce key codes. These includeu-(% 4 through 9, } 0, /V($and most combinations in which SHIFTu(and are both pressed.Z#(Press RETURN to continue.0)}@Z(%}The following routine demonstratesu'(PEEK(764). Press any key or keyN("combination except BREAK. Note }theu("absence of the chirp. Press RETURN!:"(to break out of this loop.4APA7(:(&AdAU0}6-F:Ad,:"AUA`D"@AN( KEY CODE (X APbNAdAU+(}}SELECT OPTION:9( 1. RERUNN(2. END PROGRAMl)@v"@I%"@P A D:}KEYBOARD.BASN:9( 1. RERUNN(2. END PROGRAMl)@v"@I%"@P A D:  !CABADANSLSKEERNUR'2Y2A3$&@ @@ @!} AU  ATARI USERS GROUP PROGRAMPERMISSION TO USE BUT NOTTO SELL.(2!}EFFECTIVE AUGUST 1, 1980<'BEGINNING TYPING''Written by:'Clark Peterson'5931 Clydesdale Ave!}'San Jose, Ca. 95123'';;Typing drills for all letters of the alphabet.'11Errors will appear in i!}nverse video.'AABackspace not allowed during practice so Buzzer will sound.' This is NOT a timed drill.#'$' ;!}@, CHAR FROM KEY.'!;@8,!Data for Drill8';@P,;@P,B'9@P,L';@,`''@!}@'Set Left Marginj' B t'2. %} What lesson do you want ? (1-9) 2~'#B %A$'   !} LESSON # '." New letters this lesson :. B0%'[- % Home Keys - and Q( Place fingers!} on home keys. [ B'    B'(  & Ԡ ( B'#  (Period)# B!}'  none  B')  & Ԡ ) B'#  (Comma) # B'    !}B'    B'##@@K:' (  Press ӯ Key.';F:Ad,@`!}" B ;Wait for CAPS/LOWR Key'-@@(" ([-@B:,!7<,4.67<,.,[Reset Invers!}e Video Commas from READ DATA( ( }(-@@(( ( ( 2(-@B:,<()@6.>:!},F(L"A&  BLSound Buzzer - Backspace not allowed hereP(47<, Z(.07<, >:%A(!},.Inverse Videod( n( x( (e% } Press R to repeat lesson C( N for next lesson e( Any oth!}er key to exit ()@6.>:,(@(+4r,)+4R, B(-+4n,)+4N,#6-%@- B!}**ERROR TRAP* 6-F:A, Error Numbr*6%6-AV$F:A,%F:A,6Return Address*-"@!}# Enter a Number - B *@ B * END OF PRACTICE. *? B !-@A% )!} ?Reset Trap & Return*3 ERROR  AT LINE !&3UNPLANNED ERROR.Typing Practice DataD/##ff jj fj fj dd kk !}fd jk fd jkN/,,ss ll fs jl fs jl aa ;; fa j; fa j; fjX/%%hh hj ha has has had had la ladb/''a s as as k ask h has a l a!}ll alll/**all fall all fall all hall hall fallv/((as has add had all all lad has had/++ask all; ask a lad; a lad had a!} fall;/++hj ha has had had la lad a as ask has/++all fall all hall as has add had lad;/&&a lad had a fall; ask a lad!} all;/ff jj dd kk ss ll aa ;;/ hj hj ha hs hd hf hj hk hl/))fasdf j;lkj fasdf j;lkj fasdf j;lkj/))ask all; all!} fall; a lad had a fall/++u uj uj e ed ed uj ed g gf gf uj ed g/))uj gf juj ed due due jug due judge;/++as ask keg j!}ug all due head hedge due/))us use due jug use due ask all due;/''a lad held a full keg as he fell;0''he had a keg; !}he used a full keg; 0,,uj ed gf hj fd jk ds kl sa l; gf uj ed0,,use due jug ask all lad led dusk fell; 0,,o o ol old t!} t tf to told told tf o ol*0**n n nj nj an and on ton son and son;40,,of of to an and and do go to ton; ton;>0((old fol!}d sold to told an tan tank;H0**he had to; he had to go to the lake;R0&&a lad found the dog at the lake;\0((that lad has!} sung these old songs;f0,,Lee told Hal; Jake and Hal; John told;p0$$an and he the go got; He then;z0$$Hal sold the old !}house to Lee;0++Jake sold that log house at the lake;0++i ik if r rf fir sir fir aid rid sir;0&&I did a line right. !} It is fine.0,,.for fir sir he the it is if or do go;0&&Hal has the right kind of light.0,,Len said Jake had fought !}a hard fight.0++I think Ken Hart should getthis land.0**I think this the right drill for us.0--I had to take a drill!} for just an hour.0**Let us lend a hand to those in need.0&&e he he i t it it u us o of n an0**to go if to it is do !}so or an and so0$$I feel sure the drill is good.1))He did not do the drill just right.1**Ken said the line is too ha!}rd to do.1,,Jake thought he had to do these drills$1,,Let us do all of these lines for Nell..1&&I like to do a thing j!}ust right.81''Hal has gone to lake to see Jane.B1++c cd cod m mj am jam jam w ws sow mowL1,,am cam old cold am jam ham !}sow mow cowV1**It is right to do all the work well.`1((That is the man who did this work.j1''We can do more work in les!}s time.t1((Al works well with me. Don works.~1,,We can go in a week. We will go then.1,,Work well with them. Do all!} the work.1((Sam has done all of our work well.1,,I can learn to like to like that work.1**v vf five hive q qa qu qu!}ick k k1&&Ev John and I work quite well.1))Vern works quite well so does Hal.1((Ev is quick; and I too am q!}uick.1$$I want to do as well as I can.1))We must know and know that we know.1((It is right to learn to work hard.1!}((It takes time to learn. Do right.1''I want to do well. We must know.2--Vern is as quick as James I feel sure. 2(!}(bf fib rib rob p; pad za zeal zone2++bug big bog rub map cup dip zeal zinc2++Be quick to work and work with zeal.(2!},,Both of us have zeal for this big job.22**Paul has said the quiz is this week.<2++Brad paid them well all for the food!}.F2,,is us it is us he to do as he to do asP2))big bug but pan pal map pan pal mapZ2,,rob rib rub quit quick quit quick!} quizd2**We have picked Joe for the big quiz.n2**He can win the goal if he does well.x2**y yj by jay may x xs six ? ?; !}Is it?2++way jay hay may fix six box next they2,,May says the laws can be fixed for us.2,,The truth I know: He wins!} when works.2##May I see the Quick Mix meal?2,,Will Van pick the six men for my quiz?2++Sit up. Keep your feet on t!}he floor.2''Strike the key with a sharp blow.D:TYPINGk the six men for my quiz?2++Sit up. Keep your feet on t AABSTRINGPOSTRING1STRING2DIDXJMISHITMIHSCORPMBASL%} TYPO TIME%}BY WILLIAM DAGLEFOR ANTIC MAGAZINE +AR@ @&;Ai,;Ai,;Ai,@0@%}"-@@"("-@@"("-@@"(|Š|"-@%}@"($-@@$(  $-@@$( Š"-@@ "(Pres%}ents#(-@@((**************$(-@@((*ϠŠ*%(-@@((**************%}(] A+@)AR@C0@]0@@@-@-@@,(@%} typo time6 AP@ A . @F/:AV@6( Difficulty (0/10):0!! )!@%}@G20( ( ((-( Press Ԫ0(3 F:B2y,@@Q4B2HA'-@@%}>(@ A(D(G(J(\-@@o(@-@@(@5(-@%}@((@6'-@AP '6-7##@@K::36-6-%}'6-36-; A<d -AP@6@B2d2@%}>/-@/(@7&@<,A/-@/(@7&@<,F/-%}@/(@7&@<,J F:Ad,"AU@K)@P5-@@%1@1"@2%}5 Q " AR5-@@%1@1"@25 S " AU5-@@%1%}@1"@25 V " AW_6-%@32@A @@U2@A@%}@_ @Z#6-%@#-@@[i-@ @%(@>:,G2@i2%}@c-$@ d 66-+@i&,%'-@ @6(@ 7%}( (7( Hits : Misses : Score :'-@@ !!'6- ( High Score :%}( Press Ԫ Ap F:B2y,@A%M%2+(}?"%}A5M6-&@1-@AP '6-@21 @XY%2@@@@G2@@ %}@@O6-%Y @&B-@AP$67<,. 167<,. >67<,. B -@%}AP@ ''6-P:+H:,$@&,%@W,1 @e16-P:H:,$@,%@H!A06-%}@2 @"6-@267<,.>:,''6-P:+H:,$@&,%@W,1 @e16-P:H:,$@%},%@H!A06-@2 @"6-@2!!67%@<%@,.>:, ''6-P:+H:,$@&%},%@W,1 @e16-P:H:,$@,%@H!A06-@2 @"6-@2!!67%}%@<%@,.>:,$ )$46-F:A,&@&BBy46-AV$oAY@F'B2w@%}9A#@KB2V@]A@roB2H+-%A%A@'AR+ V%}-%A%A@'+ C-%A%A0OS V$ #A`-@@bd"#%}2@@7-@@ ; ? a2d$pee53,53,53,72,60,64,72,64,72,7%}2,72,72,81,81,81,81,47,47,47,64,57,60,72,81,91,91,91,91,91,91,91,91u__81,81,81,81,72,72,81,72,64,64,81,81,72,64,53,53,53,5%}3,60,60,64,64,60,60,60,60,60,60,60,60X #A]-@@db;"#2@@7-@@ %}; gF:B2y,"@$l, )2,$@ee60,60,60,60,60,60,60,60,64,81,64,64,64,64%},96,81,64,64,64,64,64,64,72,81,47,47,47,47,47,47,47,47Egg53,53,53,53,53,53,53,60,60,72,60,72,72,72,108,91,76,76,108,91,64,%}64,64,64,96,96,96,96,96,96,96,96D2:TYPOTIME.BASgg53,53,53,53,53,53,53,60,60,72,60,72,72,72,108,91,76,76,108,91,64,$8$$KKK3WDLITTLITLKEYRCONLXLIPWRDDIFNWPLPLMMKLSMLWSMFNPLMAPNMWRDVLCOLOMSEC)}CCCSELBDGAPLRMMSCMOGSDDXYTGWWCWCCL@@@@)}@@ @ )} !"#$%&)}'()*+,-./0123456)}789:;<=>?@ABCD)}Š٠Š̠6-@6-@'6-@2;@,9@,9@,9@,)}9@,9@,9@,9@,;,;, 6-68,-@5'68,-@<68@,-AcQ68@)},-A1]6-@i6-@u6-@ 6-@6- @ Q6-P:@$H:,,%@;6-P:@$H:,,%)}@C1Q@ $  6-- 8 8,"8,,# @,B:,86-@   $c )}AF:A,&@$+?6-+F:A,%,$AVK-@U B"c-A`%F:BsD%, .AV)}'AV<-@J-@N"`$@%%' 6-%  B#' @PX-"@)"@5)})"A1)"AcI2@@@O6-U6-X$ + 6--&@%"@+6-"a"8,*"8)},*"8, 6-&6-/68,-56-W2@@@a @@$! 6-%  @!6-&$($ 6)}-&6-6-!2$$2$-@68,- $6-4[ @h6-6-%6-@B+6-16-76-=6)}-C6-I6-O6-U6-[6-6C 6-6-P:@$H:,,%CAA A0A@8"6-B:,:96-B:)},%@-568,-P:@ $H:,,%9 <(68,-@:7,,%"(6-%@d> 6-%!A`6-@368)},-8,%8,%8,!6-%-"@36-B 6-% @`Dk A068,-@$6-%368,-@5;6-%J6*}8,-A1R6-%a68,-Ack @xF>-&@@E:,+@ &B:,,'%@> J0-&@*}8,!8,0,8,@L   $N96-@6-@%+@9AV'AVOIP:$H:,,6-Aa*}'6-@336-A)?6-A0I @P'6-@36-Aa!6-'6-Qg-@'6-P:@$H:,,%K*}@@@@S0W ]6-g BR#(6-6- 6-@#$T)(6-6-@&*}6-@)$V)(6-6-@ &6-@)$W)(6-6-@&6-@)$X @Z(@*}}$_@ @,,@1,@@=,@@$d@ @,/@+,@=/@*}@@$@ @,/@+,@=/@@@$F @,/@1/@@*}=/@C/F$@ @,/@1/@@=/@@$@ @,@/+/@*}=/@@@$X@ @,/@1/@@=/@@$@ @,@/+/@* }=,@@@$ @ @,@+/@@7/@=,@$@ @,/@1/* }@@=,@@$@ @,/@1/@@=,@@$% (8,6-#B% @* }V% (8,6-#B % @V1(8@,6-@'#B01 @V1(8@,6-@'#B* }@1 @VV A~I 6-6-P:$H:,,%) @)"3 @96-?6-CI,$)2A0@* }@#),  6-% A0 !6-&  6-% AP !6-& 1*},K "*"26-!',-6-36-?6-@2E"K6-R:,"@- $[*}@w6-256-P:@0$H:,,%A @K @U@c[, "6- ")" AP*} A P<-@ @"8,(,, 26-< A&7 6-6-@!6-@-6-@B7 B*}{-+@ &B:,,'@ +(@9-A= G@2S,@ e/@@ q6-@2{ A&*}2 6-R:,(2@@@224G6-+"@)"@)"@,&+"@ )"@)"@,6-+*}"@)"@ )"@,&+"@)"@)"@, 6-%6-%6-6-` ,&& 1 *}A)(  , ? 6-%/+"*"*!* @,)+"*!,56-? A " $ (T:,B *}R:,"@A' A PT 9"Aa)"@3!6-&)6-&/6-9 A&^ E"@c;A A *}A A A 0E A&h  " AU A&r '  @02' A&   6-@*} !@6-   6-@ !@6- %"@*"@%6-@  (+),6-  (+*}),6- %"@*"@%6-@  A0$ %!@* @%6-@ & %"@)"@*}%6-@0 $# AP#B#6-@ Z-@"-*(@. 8@>,Z2@ *}@@ (T:, B# @PA70P:@$H:,,P:@$H:,,P:@$H:,,$A AE0Y AP*}#,@ @)6-3 @= A1G A Y"*"A (A ] AP,@ '*} A1-6-7 @A A1K A ]"*"A : "@Al Y AP,@)6-@*}3 @= A1G A Y"*"A  "@A%} 6- AP#,@/,@ A,@*}@S,@ @_6-@ i @s A1} A %"*"A %(A%(A*} &"@AH&` A#,@@/6-@56-? @I A1S A `(A'a 6* }- A#,@//@A-@@G"Q B[ Ba6-'"@ B!'\-@*!}@$(@*. @p46->2H A P\"@A@$'(A'l A#,@*"}@5/@@A6-@K @U A1_ A l(B ((B <(: A6-@#*#} @- A :(B(A A6-@# @- A A"@B)A A6-@# *$}@- A A"@Bh)` A,@)/@56-@ ? @I A1S A `(*%}B)"@B*: @6-@# @- A :(B*(B*"@B*&}*: A 6-@# @- A :(B +"@B\+A A6-@# @- A *'}A"@B +: A6-@# @- A :(B$,: A6-@# @- A *(}:(B L,"@B.g A,@)/@56-@? @I A1S A g"*)}@BD/A A6-@# @- A A"@B  Nl A#,@@5/@**}@A6-@K @U A1_ A l(BN: A 6-@# @- A :(BN:*+} A6-@# @- A :(B0u[[255,255,255,255,255,255,255,255,126,195,231,153,153,255,165,255,0*,},0,167,165,253,5,7,05u0,0,24,60,153,219,255,255:uRECOMPENSEDuSCHEDULENuGRATUITOUSXuPORRIDGEub-+@ *-}&B:,,'@+(@9-A= AM,@_/@@b$\v"@BBav@EA*.}'Pfva ,68,-68,-'6-%-6-96-@BE6-@Q6-@U[,a6-v(T:,BPv */} A'P$w,-&@68,-%68,-) ,$ {8-&@6-@:7,,86-+@ &B:,,'%&{1@*0}{/'")%")%A(")%A`"/6-%{-@(@>:, {   6-*{ "68,-4{I "6-*1}%0@52@@I @B@>{9 "6-2'0@/6-%9 B }> 68,*2}--@002@P@4 >2 }T:,B }#"@ B!# A P} @Rd}"*3},@/@"$}i +@-@5(@G-@ @W(@i-@*4}@} (@ STEVE GROLL $,~@ 2+-4(TYPE E FOR AN EASY GAME.@-@@~M(TYPE H FOR A H*5}ARD GAME."(&)(14H76-C6-@0M B#0E~6-@6-@pJ~F7(.WOULD YOU LIKE TO ENTER NEW WORDS I*6}N THE GAME;C4NF$O~BBPT~E(E(:TYPE ONE WORD AFTER DATA AND PRESS RETURN ON EACH LINE.^~/(,*7}(!TYPE CON. WHEN READY TO CONTINUE./~$D:WORDADVE.BASWORD AFTER DATA AND PRESS RETURN ON EACH LINE.^~/(,(D<=%? @ABCDEFKLGHIJMWNYVZPSXAAABACXXYY.9} .:};@,;@,;@,;@,;@,;@.;},;@,;@,;@,;@,;@,;@,;@,;@,;@,;@,;@,.<}|6.MAISON6.CHAPEAU+6.CHAISE76.COEURC6.FLEURO6.HOUSEY6.HATe6.CHAIRq6.HEART|6.DOOR.=}1;@,;@,;@,;@,>6.FLOWERU6.QU'EST QUE C'ESTa6.PORTEt6. WHAT IS THIS~6.BOX.>}6.BOITE}1;@,;@,;@,;@,=6.TABLEG6.BEDT6.ETOILE_6.STARi6.LITs6.OUI.?}}6.YES +@-@@;(@ra and wieM-@@](@Io-@@(.@}@rnh and nlsZ-@@%(@B7-@@P(@ sz sbcZ A` J +.A}@-@@J(@LOOK AT THE PICTURE ?-@@?(@say the word .B}aloud A-@@A(@ D-@@D(@!ӠRETURN .C} # A`AR@#L +@-@@L(@which lesson do you want?.D}V-@@-(@ 1) nls?-@@V(@ 2) fec7AR@ @(#7".E}@A"@A  @(M +@# A0! A@5-@A 9 C+@M A0.F},(AR@,0AM +@# A1! AA5-@A 9 C+@M A1.G},(AR@,0AM +@# A2! AB5-@A 9 C+@M A2,.H}(AR@,0A M +@! A3! AC5-@A 9 C+@M A3 ,(.I}AR@,0A0M +@# A4! AD5-@A 9 C+@M A4,(A.J}R@,0A@M +@! A5! AE5-@A 9 C+@M A5,(AR.K}@,0AP$M +@! A6! AF5-@A 9 C+@M A6),(AR@.L},0A`.M +@# A7! AG5-@A 9 C+@M A73,(AR@.M},0Ap8M +@# A8! AH5-@A 9 C+@M A8=,(AR@.N},0ABM +@# A9! AI5-@A 9 C+@M A9G,(AR@,.O}0AH +@-@@8(@ rs in!!J-@@c(@ VOULEZ VOUSu-@@.P}(@ ڠſI4OUI@&M +@# A0! AP5-@A 9 C+@.Q}M A0,(AR@,0A M +@# A1! AQ5-@A 9 C+@.R}M A1,(AR@,0A M +@# A2! AR5-@A 9 C+@M A.S}2,(AR@,0A M +@! A3! AS5-@A 9 C+@M A3.T},(AR@,0A 0M +@# A4! AT5-@A 9 C+@M A4.U},(AR@,0A @M +@! A5! AU5-@A 9 C+@M A5,(.V}AR@,0A P M +@! A6! AV5-@A 9 C+@M A6,(.W}AR@,0A `M +@# A7! AW5-@A 9 C+@M A7,(AR.X}@,0A p M +@# A8! AX5-@A 9 C+@M A8%,(AR.Y}@,0A *M +@# A9! AI5-@A 9 C+@M A9/,(AR@.Z},0A 0 +@-@@8(@ ey od!!J-@@c(@ DO YOU WANTu-@.[}@(@Ϡ٠ο14YES)4Y@& %D:MENU @,@d@d1/A.\}@dC/A@2U/@d@2g/@d@dy,@d@2/@@/A@2 ,.]}@@d'/@@H9/@@HK/@@d],@@Uo,@p@@/@u@@/.^}@u@E /@p@E'/@p@@9,A@@K/A@@]/A@Eo/A@E._}/A@@$ @,@@d1/@@C/@H@U-@H@dgAe@.`}@@S: *,@2@d'/A@d*$ | @,@D@1/@D.a}@DC/@p@DU/@p@fg,@D@fy/@D@D|$ @'0@@9,@.b}8@7K/@T@]/@H@o/@@@/@2@/@&@/@8@7 .c}$H @'0@@@9,@@hK/@H@U],A@Uo/@@g/@.d}@2I @'0@@9/@p@K/@v@%]/@@o/@@%/@.e}@/@@2$ @'0@@9,@H@5K/@H@]/@2@.f}o-@2@5Ae@@@S: < @'0@@9,@6.g}@<$ +@! @'0@@9,@@@K/@P@]/@`@o/@P.h}@ /@@@/@@@%`/@P@0'/@`@%9/@`@K,@P@ ]/@.i}P@0`$t @'0@@9,@H@dK/@@]/A@do/@H@2.j}/A@2/@H@d$g @,@2@21/@2@`C,@3@HU/@@H.k}g/@@`,@2@2'/@7@(9/@7@@K,@3@H]/@7@@o/@@.l}@/@@H,@@@'/@@V9,@7@SK/@7@V],@2@So/@.m}@S/@@E$<o @'0@@9,@2@dK/@2@2]/@@2o.n}/@@d=,@2@2'/@7@(9/A@(K/@@2],A@(o/A@H.o},@7@2/@7@H$ @'0@@@9,@"@K/@$@]/@&.p}@o/@(@/@0@,@"@)/@&@ '/@0@)9,@%@%K/@.q}'@%],@&@1o/@&@8,@)@@/@"@@/@"@E'/@)@E.r}9/@)@PK/@"@P],@"@Ro/@)@R/@)@Y/@"@Y`/@"@R.s}',@"@i9/@"@aK/@)@i]/@)@a`$ @,@#@u1/@@u.t}C/@@U/@#@g,@&@y/@&@u,@1@/@1@u,@&.u}@y'/@1@y9,@3@K/@8@u]/@C@o,@4@/@A@,@G.v}@'/@G@u9/@R@uK/@R@y]/@G@yo,@c@u/@V@u/@V.w}@]/@c@',@V@y9/@a@yK,@g@]/@r@u/@w@.x}',@i@9/@v@K,@@u]/@@o/@@/@@u$h @.y},@3@1/@%@C/@%@U/@3@g,@A@y/@A@,@I@.z}/@I@i,@A@'/@I@9,@S@K/@X@]/@c@o,@V@.{}/@a@,@g@/@g@jo,@@'/@s@9/@s@K/@.|}@]/@@o/@s@kr,@@'/@@9/@@K/@@],@.}}@o/@@r$ @,@p@1/@e@C/@e@U/@p@g,@p.~}@y/@p@/@e@/@e@/@p@',@p@9/@e@K/.}@e@"]/@p@"o,@f@/@h@,@e@$/@e@)'/@p@).}9/@p@$K,@e@7]/@e@1o/@p@1/@p@3/@e@3/@p@.}7$0 @,@ @1/@ @C/@&@U,@$@g/@ @y,@ @.}/@ @ /@%@ 1,@&@#'/@ @#9/@ @)K/@&@)],@%.}@&o/@!@&,@ @2/@ @82/@&@8'/@&@29,@ @IK/@ .}@A]/@&@Ao/@&@E/@!@E/@&@I$ @'0@@@.}9,@@K/@@]/@@o/@@/@@,@@ '/@@.}9/@@K/@@ ]/@@ o,@@"/@@/@@/@.}@'/@@9/@@"K,@@$]/@ @$o,@@0/@@$,@.}@2`/@@2'/@@89/@@8K,@@5]/@@5`$ @,@.}@1/@@C/@@U/@@g/@@y,@@/@@/@.}@/@@'/@@9,@@K/@@%],@@'o/@@3.},@@'/@@',@@5`/@@5'/@@@9/@@@K,@@7.}]/@@7`$\ @'0@@@9,@0@K/@ @]/@ @o/@0.}@,@0@/@ @,@ @ ]/@0@ ',@%@09/@%@ K,.}@ @4]/@0@4o/@0@D/@ @D/@ @4^,@%@H'/@%@X.}9,@ @bK/@ @r]/@0@ro,@0@v/@ @v/@ @_</@0@.}',@0@9/@ @<$ @,A@ 1/A@0C/A"@0U,A@@.}g/A@Py,A@`/A@p*,A@`'/A"@`*$$ @,A(@.}1/A8@C,A3@U/A3@g,A(@1y/A3@!/A9@1,A6.}@'&/A0@'',A(@49/A(@DK/A8@D]/A8@9o/A(@9,A(.}@G/A(@W'/A8@W',A8@`9/A(@`K/A(@p]/A8@po,.}A(@e/A8@e$ @,@e@1/@e@C,@p@U/@p@g,@.}e@y/@p@,@u@/@@/@@'/@u@9/@u@.}K,@@]/@@o/@@/@@,A@/@@'/@@.}9/A@K/A@]/@@o,A@/A@/A@</A.}@',A@9/A@<$ @,@@1/@@C,@#@U/@#.}@g,@@y/@#@,@@'/@!@/@&@'',@@%9/@%.}@%K,@@0]/@$@0o,@!@0/@!@8$P @'0@@@.}9,A@K/A@]/A@o/A@,A@"/A@0Q,A@".}'/A@09,A@&K/A@&],@@Bo/A@4/A@B,@@8.}R]/A@8',A@F9/A@TK,A@q]/A@XSN/A@X'/A.}@b9/A@bK/A@qN$T]/A@8',A@F9/A@TK,A@q.}]/A@XUN/A@X'/A@b9/A@bK/A@qN$ @,@@.}1/@@C,@@U/@@g,@@y/@@,@@/@@.}/@@'/@@9,@@K/@@],@ @$o/@@/@.}@$,@@"/@@"o,@@5'/@@(9/@@(K/@@1]/@.}@1o/@@5N,@ @8'/@@89,@@9K/@@EN$ @,@.} @1/@ @C/@&@U,@$@g/@ @y,@ @/@ @ /.}@%@ ,@ @#'/@%@#9/@%@)K/@ @)]/@ @#o,@@2.}/@@8/@!@2/@$@8'/@'@29,@&@AK/@ @A]/@ @H.}o/@&@H,@!@E/@%@Er,@ @Y'/@ @Q9/@&@QK/@&.}@U]/@!@Uo/@&@Yr$| @'0@@@9,@@K/@@]/.}@@o/@@/@@},@@ '/@@9/@@K/@@ .}]/@@ o,@@/@@/@@"~/@@"'/@@9,@@.}0K/@@$]/@@$o/@@'/@@'/@@0$ @,@@.}1/@@C/@@U/@@g/@@y,@@/@@/@@.}!r/@@!'/@@9,@@#K/@@)],@@#o/@@)r$D .}@'0@@@9,@0@K/@ @]/@ @o/@0@/@0@.}/@ @E,@ @ '/@0@ 9,@%@ K/@%@0],@ @Do/@%@4.}/@0@D,@"@@/@(@@Fr,@ @W'/@ @G9/@0@GK/@0.}@Q]/@ @Qo/@0@Wr$ @,A@ 1/A@0C/A"@0U/A"@.}%g/A@%y,A"@@/A@@/A@P'/A"@P9,A@EK/A.}@E],A"@`o/A"@p/A@p/A@e/A"@e$p""@.}A`0z72@@3-@@7  A`(%2($WW121,.}0,108,0,96,0,121,0,121,0,108,0,96,0,121,0,96,0,91,0,81,81,0,96,0,91,0,81,81,0ee81,0,72,0,81,0,91,0,96,96,0,121,0,81,0,72,.}0,81,0,91,0,96,96,0,121,0,0,121,0,162,0,121,0,0,121,0162,0,121,2dd121,0,121,0,121,121,0,108,0,108,0,108,108,0,96,0,.}91,0,81,0,121,0,128,0,121,0,108,0,162,0,121,0VV121,0,121,121,0,108,0,108,0,108,108,0,96,0,91,0,81,0,121,0,108,0,128,0,121.},121,2 D:FRENCH.BAS,108,0,162,0,121,0VV121,0,121,121,0,108,0,108,0,108,108,0,96,0,91,0,81,0,121,0,108,0,128,0,121,