@L|}6CD l0C)HCC WhL/h `CmCDiD`  R@W1  Y0@R !L` D  C D     )16CS S)  C)D1 p p 0 C9DI pCDL~CiCDiD` D  C D     )16CS S)  C)D1 p p }0 C9DI pCDL~CiCDiD` DD˙` d J)L !}D L(( LL()  L| L( S LH 0p n  } CY?  q  L L  ` )} `A! d߰")-݆ "  $G@LLL&0") $G% }H0 3S8`G ȱG ȱG   Gȭ Gȭ GG}GHiH8(()) G$H% `(0 })8` d)L ݆ & LGȘ ݆LL d  ! LL d)N>Q  HH) }  hyhyB q L> Lm JJ  Ln*` dB%' }8  H H` 1 { LL   !L     Hh SY?  q  1L }  !? S   q 1 L   Ll  Lg E`L   !L)  q 1L}) `L0AM݊L݉ ML  N݆LLLNLMLHG!@}1F GȱGLLEEȩÑEȑEEȑE Ed E7EȩE  q} L !,0,0SGɛ L 1 !L EHEh W G gLLSROTCES EERF } G) *Gȩ GȽG GȌd q q G`  8   0G  `D}CEDC0X:Ȣ Y ȱC* ? 0.. , 0%n ?A[ 0 : L`L  `, 0`Y}`piH n0)բY? 08`0 }  0$L GGȽG L `8L`L}8`  05G)݁,G)ȱGȱGHh0})Hh` B! 8`8iiiLE`}E8FEh( l0`ɃLL L8^~jj8jHi hEEEiEȱEiE` dTE} H8EEȱEEȩEh J E8   . m  i`LI!)E1FR}1LJ舩9GIH`LJJ`HGHh l`} S gL   8 rii `дCDCG W  }C  Lq` X٨`DOS SYS IIIIIIIIIIIIIIIC`0 ߩ0}}} 4 |||DDOS DOSDOS SYS }}}}CDOS SYS} 0`BDELV !B }`LVUQ   ]   TU J ]L!T  #      TU  } L ? .  t`GBJ V~DEHI B V0dV!}QDEHI VF9 ,0 ,0 s0hhL  L` H hDHEh"}DEL8HI   0 HI,0 0  9 .G VLO#},0 L4*IJ`llD1:AUTORUN.SYSNEED MEM.SAV TO LOAD THIS FILE.D1:MEM.SAV J y08 B|DEHI$} V0 0`B;DELV䌚 !B y`@ʆ v s? F0Ξ05: [ BDEHI%} VY8 B V  @  /DE `E:D1:DUP.SYSERROR-SAVING USER MEMORY ON DISKTYPE Y TO &}STILL RUN DOS B;DE J V (` 9 V⪍ ઍ  -'}LLu DEHILV 9 .l 9 .l  `` s$B VBH(}I|DE V BLV nB,DE J V* \*` B V BLVDEHI BLVL)}1u H232435; 1 ;  hh@2 e1i1LHҍ 00) 08 109hh@ Ҡ2e*}1i1232435ޥ<<8} 3E:}DISK OPERATING SYSTEM II VERSION 2.0SCOPYRIGHT 1980 ATARIA. DISK DIRECTORY I. FORMAT DISKB. RUN CARTRIDGE J. D,}UPLICATE DISKC. COPY FILE K. BINARY SAVED. DELETE FILE(S) L. BINARY LOADE. RENAME FILE M. RUN AT ADDRESSF. LOCK F-}ILE N. CREATE MEM.SAVG. UNLOCK FILE O. DUPLICATE FILEH. WRITE DOS FILES9!&x#!7&p))'&X*./)L''-؆莟.}R'S  vW DEHHI 1A#! @ ~0ɛ8A0.) ȅ 1 1i/}il ! 1L NO SUCH ITEMSELECT ITEM OR FOR MENU! 0 .{z:*{}.|~ 1 0 00}JB 18L^%|DLl%DIRECTORY--SEARCH SPEC,LIST FILE? # 0 0 n&|D! 1L NOT A DISK FILE1}N !B 1L " 1 !BDED:}:1BJ|DE 1DEBH2}I 1 h0ߢ 0.  0?詛 1 ~0YЛ 1 "L<" "L 3} BL1TYPE "Y" TO DELETE...DELETE FILE SPECCOPY--FROM, TO?OPTION NOT ALLOWED 045 FREE SECTORS COPYING---D2:XYGR4}APHINS# 0|D .L$A#B#C#JB|DE 1BHIDD#E 1D#0: B5} 1L B#C#C#B# B 1N#$0SYS1}:e#D# d# D# .d#ȽD# d# 𩛙d#X# 1,A#6}PdD#ELO- A.BJdD#E 1 1HH 0hh|DL^%1}:e# Lt% e#dD#EL%7} 1 0 . .0% 1L WILD CARDS NOT ALLOWED IN DESTINATION 0 A.|K@C}//3Hu ξL/L DRIVE TO WRITE DOS FILES TO?WRITING NEW DOS FILESTYPE "Y" TO WRITE DOS TO DRIVE 2.?}D2:DOS.SYSERROR - NOT VERSION 2 FORMAT. , &* բ( 1L `[) 0NΞ 0 L1M) 1@} L BAD LOAD FILELOAD FROM WHAT FILE?) 0 0#B 1L WHAT FILE TO LOCK?) 0 0$B 1L WHAT FILE TO UNLOCK?DUA}P DISK-SOURCE,DEST DRIVES?TYPE "Y" IF OK TO USE PROGRAM AREACAUTION: A "Y" INVALIDATES MEM.SAV. h  ,B}  `)  <0 2 2 0  ,   ,,ޢ* 1L ,K* 1 ~0 0C}FINSERT BOTH DISKS, TYPE RETURNERROR - DRIVES INCOMPATIBLE., 1 ~038  , 1L D}, &*  Lz+, 0 , 1 ~0 + Y,0!,0 ,L+ ,mm  v,"ǭE}0Ξ, 05,Lt+L +,Hh` NOT ENOUGH ROOMINSERT SOURCE DISK,TYPE RETURNF}INSERT DESTINATION DISK,TYPE RETURN`    `L,8,0( rG}L1(`ߢ) 1* 1 ~0Y`hhL S SL1) 8`NAME OF FILE TO MOVE?- 0 0|DLtH}% A., 1 <0 0 .@L# .BJ 1  DEHIB V L1 ,5 1 <0,L. I} JB|,A#Pd#DE 1 HI BDEHHII 1 B 1 , 1 <0,0Lf- B VJ},A#P, 1 <0 0L#L ߢ) 1* 1 ~0Yj383}mm ݭK}}`8}``|* ? ɛ,`|:(|/ 1L `DESTINATION CANT L}BE DOS.SYS0 0H{ $22Δ $28/L /) $2 Π $2 0 ξM}hAΞB,0 J 1 BޝDEHI,HDE 1HIHIDELSAVE-N}GIVE FILE,START,END(,INIT,RUN)O X0 1`BDEPHI V` X0H 1 L O}0 0 1L0`PLEASE TYPE 1 LETTER,0`hhL <0 1L0LA1 ,;ɛ7,"ɛ:ݦ1ݥP}A"D|ݤD|ȩ:|ȩ|ɛ,,(/+.ީ1 1,ɛ`轤{Q}NAME TOO LONG B VL ` L1I H1EӝDL1|mDiE` V0`8d/8 i:"2!22 1R} L ERROR- 128ɛ+,' 20*.. өw2 1``2TOO MANY DIGITSINVALIDS} HEXADECIMAL PARAMETER800 0 8 00`,0'D800H,ɛh`2L1NEED D1 THRU D4%uT} HEXADECIMAL PARAMETER800 0 8 00`,0'D800H,ɛh`2L1NEED D1 THRU D4%uWXSLLYXYZZVVVXYAXXQAQAXQAXYPOXYXYWEWDV} DW}@ !DX}"#$%&'()*+,-./01DY}234ҠΠ̠Ԡ A  @6-A6-(9ADZ},46-@@6- +@/6-P:@$H:,%@ ,Y6-P:@t$H:@,%@,$@6-P:HD[}:,$@t,$@%@@6-@0@-A@E6-P:H:D\},$@0%&@$,Q,AYW/`68,-q68%@,-,%@AY:/%@+%,'@:68D]}%@,-+%,'@(/ 6-!A #6-&@ /6-@-) @@6-%@ )6-@2 *D^}  @p<q-%@%@',AY-/1 ;Q,&@%@g/&@%@q@D_}=:-%@%@$68,-( 66-%@: FK,AAY'/A9/K/D`}AYPi6-@6-@-,@@?,@@Q,@@]6-@i6-Z{ARDa}@'AVH(>:@',>:@),SPEED:ZAV@{(>:@',>:@1,SPEED:_nAVDb}'AW@ 1(FUEL:CAV@UAW@ n(SCORE:  ALT. c;6-&@6-%@Dc}-6-%@;6-%@dY ,,,'6-%/6-%=6-%?Y!8P:,,&@%An Dd}111o:R:,@:2p,"R:,"@*!, ADe}q>R:,"@&6-&@2 @>6-@r>R:,"@&6-%@2!@>6-@tDf}G"@6-&@+6-%@96-%@G6-%@u?"@6-&@#6-16-&@?6-%Dg}@vG"@6-&@+6-&@96-&@G6-%@w?"@6-&@+6-&@96Dh}-&@?6-xG"@6-&@+6-&@96-%@G6-&@y?"@6-%@+6-%@Di}96-%@?6-zG"@6-%@+6-&@96-%@G6-%@{?"@6-%@Dj}+6-%@96-%@?6-/ @,,,/))Ak"T:,"*!.6-Dk};6-6?PI6-&@PUa6-k AU1%@#1%@U"@*"@* @Dl}P*"@A!!!@*!@ALAV'AW@ 2( DAW@%Dm}L( MAV@'AW@ 2( DAW@&M( "@ Ap(AW@3Dn}(( 8,& 0")% @)%!A06-60"@ )% @)%!AX06-6Do} @6-O:,"@ $ A?"@6-&?0?2@@@M"@Dp}6-%? +6-&? M2@@@?"@6-%?0?2@ @@Dq}M"@6-%? +6-%? M2@@@?"@6-%?0?2@ F} R g @2##@@K: ##(} EPSON SCREEN DUMP UTILITY( INSTRUCTIONSs}(( BY JIM DAHLBERG(( AUGUST 19812/(/($TO USE THIS UTILITY IT MUST FIRST BE<--(%LOADED INTO MEMORYt} USING THE DOS LOADFQQ(IBINARY FILE COMMAND. IT WILL LOAD INTO ADDRESS $7800 (HEX). THIS IS 30720Zbb(ZDECIMAL. (NOTE-YOu}U MUST HAVE MEMSAVE IN DOS II IF YOUR BASIC PROGRAM WAS ALREADY LOADED.)_--(%ONCE THE PROGRAM IS LOADED, A PROGRAMd--(v}%IN BASIC CAN CREATE A GRAPHICS MODE 8n,,($DISPLAY AND THEN CALL THE UTILITY BYx**("DOING A X=USR(30720). THE UTILITY w}--(%WILL THEN CHECK TO MAKE SURE THAT THE,,($DISPLAY IS IN GRAPHICS MODE 8. IF IT--(%IS THE SCREEN WILL BE PRINTEDx} ON YOUR(EPSON PRINTER.9&( (PRESS ANY KEY TO CONTINUE)3)@9(}))(!WHEN THE PRINT ROUTINE IS DONEy} IT))(!WILL RETURN CONTROL TO YOUR BASIC++(#PROGRAM WITH THE FOLLOWING INFORMA-(TION IN THE X VARIABLE:,(z},(! X=0 MEANS EVERYTHING WENT OK.--(% X=128 MEANS YOU PRESSED BREAK KEY))(! X>128 MEANS YOU GOT ERROR # X{}@@(8 X=65535 MEANS THE SCREEN WAS NOT IN GRAPHICS MODE 8-(-("IF YOU DO NOT HAVE 40K OR MORE OF ,,($MEMORY THE|}RE WILL NOT BE ENOUGH ROOM (TO"--(%LOAD THE PROGRAM IN ITS PRESENT FORM.,++(#TO FIX THIS PROBLEM ALL YOU HAVE TO}}6++(#DO IS REASSEMBLE THE SOURCE LISTING@--(%TO PUT THE OBJECT CODE WHERE YOU WANTJ (IT.T<)(! PRESS ANY KEY T~}O FIND OUT HOW6)@<(}^0(0(%USING YOUR ASSEMBLER EDITOR CARTRIDGEh--(%LOAD SCRNDMP.SRC USING THE ENTER COM}-r++(#MAND. THEN LIST LINE 110. THIS LINE|,,($CONTAINS THE STARTING ADDRESS OF THE))(!ROUTINE, IN HEX. JUST CHANGE }THIS,,($ADDRESS TO ANYTHING (LEGAL) YOU WANT,,($JUST MAKE SURE IT WILL NOT INTERFERE,,($WITH THE BASIC PROGRAM YO}U ARE USING))(!OR WITH ANY OF THE ATARI RESERVED++(#MEMORY. THE PROGRAM TAKES 394 BYTES,,($OF MEMORY SO BE SURE T}O LEAVE ENOUGH,,($ROOM. (THIS MEANS IT WILL NOT FIT IN--(%PAGE SIX WHICH WOULD HAVE BEEN A NICE(PLACE FOR IT.)}U(U(J AFTER YOU CALL THIS ROUTINE IT WILL BE NECESSARY TO DO AT LEAST 1 LPRINTRR(JTO READY THE PRINTER FOR ANOTHER} SCREEN DUMP. OTHERWISE THE NEXT DUMPAA(9WILL NOT HAVE THE FIRST LINE POSITION IN THE RIGHT PLACE.*( HAPPY }DUMPING!')@* D:SCRNDMP.INSK: ##(} EPSON SCREEN DUMP UTILITY( INSTRUCTIONS.10 .TITLE " SCREEN DUMP UTILITY"20 ; SCREEN DUMP UTILITY30 ;40 ; BY JIM DAHLBERG50 ;60 ; A}UGUST 198170 ;80 CIOV = $E45690 DSPV = $2300100 MEMSCAN = $CB0110 *= $78000120 START PLA } FIX UP STACK (FOR USE AS BASIC SUBR)0130 CLD CLEAR DECIMAL MODE (JUST TO BE SAFE)0140 }LDA DSPV GET MEMORY ADDR0150 STA MEMSCAN OF DISPLAY LIST0160 LDA DSPV+1 AND SAVE IT0170 } STA MEMSCAN+10180 LDY #00190 SRCH LDA (MEMSCAN),Y FIND MEM SCAN0200 INY0210 A}ND #$4F INSTRUCTION0220 CMP #$4F0230 BEQ INIT FOUND IT!0240 CPY #10 KEEP }SEARCHING0250 BNE SRCH THRU 10 LOCATIONS0260 LDA #$FF RETURN BAD0270 STA 212 } STATUS0280 STA 2130290 RTS ERROR-NOT GR. MODE 8, SO RTN0300 INIT LDA (MEMSCAN),Y0}310 STA TEMP SAVE ADDR OF0320 INY0330 LDA (MEMSCAN),Y DISPLAY MEMORY0340 } STA MEMSCAN+10350 LDA TEMP0360 STA MEMSCAN0370 LDA #3 OPEN COMMAND0380 JSR }PTRCMD OPEN PRINTER IOCB0390 JSR PTRGSEL INIT PTR IN 480 DOT GR MODE0400 LDA #0 INIT BI}T AND0410 STA BIT+1 GROUP COUNTERS0420 LDA #1 TO 10430 STA BIT0440 STA} GROUP0450 ;0460 ;0470 ;ACTUAL SCREEN DUMP ROUTINE0480 ;0490 ; VARIABLES:0500 ; P - HOLDS BIT POSITION OF PRESENT BIT} WITHIN BYTE0510 ; LINE - EACH BIT POSITION INDICATES CURRENT SCAN LINE0520 ; (1 OF 8) WE ARE DEALING WITH0530 }; OUT - HOLDS ASSEMBLED OR PARTIALLY ASMBLED BYTE TO OUTPUT0540 ; MEMSCAN - POINTER TO BYTE BEING WORKED ON IN DISPLAY M}EMORY0550 ; BIT - KEEPS TRACK OF WHICH BIT IS BEING OUTPUT TO PRINTER (0-320)0560 ; GROUP - KEEPS TRACK OF WHICH GROUP }OF 8 SCAN LINES IS BEING WORKED ON0570 ;0580 ;0590 NXTBIT LDA #$80 FIRST BIT POSITION0600 STA P0610 } STA LINE0620 NXTBIT1 LDA #$0 INIT OUTPUT BYTE0630 STA OUT TO 00640 NEXTLN LDY #006}50 LDA (MEMSCAN),Y GET BYTE0660 AND P0670 BEQ NEXTLN10680 LDA LINE0690 O}RA OUT BIT WAS SET IN DISPLAY MEMORY, SO0700 STA OUT ADD IT TO OUTPUT BYTE0710 NEXTLN1 CLC0720 } LDA MEMSCAN0730 ADC #40 START NEXT SCAN LINE0740 STA MEMSCAN0750 LDA MEMSCAN+1}0760 ADC #00770 STA MEMSCAN+1 MEMSCAN NOW POINTS TO NEXT LINE0780 LSR LINE ADJUST BIT I}N LINE TO POINT TO NEXT LINE0790 BCC NEXTLN DO NEXT LINE IF NO CARRY0800 LDA OUT GET OUTPUT }BYTE AND0810 CMP #$9B CHECK FOR EOL CHARACTER0820 BNE OUTCHR BRANCH IF NOT EOL0830 } LDA #$8B ELSE CHANGE EOL TO $8B0840 STA OUT TO PREVENT 850 INTFC TRANSLATION TO 13 (CR)0850 O}UTCHR JSR PTROUT1 OUTPUT BYTE0860 CLC0870 LDA BIT0880 ADC #1 INCREMENT BIT COUNT}ER0890 STA BIT0900 LDA BIT+10910 ADC #00920 STA BIT+10930 LDA BIT0940 } CMP #65 CHECK FOR LAST POSITION+10950 BNE NXTBIT2 (321)0960 LDA BIT+10970 C}MP #10980 BEQ NXTGRP START NEXT GROUP OF 8 LINES0990 NXTBIT2 SEC1000 LDA MEMSCAN1010 SBC} #$40 SUBTRACT 320 (DEC) FROM1020 STA MEMSCAN MEMSCAN TO GO BACK TO1030 LDA MEMSCAN+1 FIRST }SCAN LINE IN1040 SBC #1 THIS GROUP OF1050 STA MEMSCAN+1 81060 LDA #$801070 } STA LINE RESET LINE TO FIRST LINE1080 LSR P POINT TO NEXT BIT WITHIN BYTE1090 BCC NXTBI}T1 BRANCH IF SAME BYTE1100 LDA MEMSCAN1110 CLC1120 ADC #1 START1130 STA }MEMSCAN NEXT1140 LDA MEMSCAN+1 BYTE1150 ADC #01160 STA MEMSCAN+11170 } JMP NXTBIT1180 NXTGRP CLC1190 LDA GROUP1200 ADC #1 START NEXT1210 STA GROUP } GROUP1220 CMP #25 CHECK FOR LAST GROUP+11230 BEQ DONE1240 LDA MEMSCAN1250 SEC}1260 SBC #39 POINT MEMSCAN TO1270 STA MEMSCAN NEXT LINE1280 LDA MEMSCAN+11290 } SBC #01300 STA MEMSCAN+11310 LDA #0 RESET BIT TO1320 STA BIT+1 11330 LDA }#11340 STA BIT1350 JSR CRLF DO CARRIAGE RTN & LINE FEED1360 JSR PTRGSEL PUT PRINTER BAC}K IN GR MODE1370 JMP NXTBIT1380 ;1390 DONE JSR CRLF1400 LDA #01410 STA 212 STORE GOOD} STATUS1420 STA 2131430 LDA #$C CLOSE COMMAND1440 JSR PTRCMD CLOSE PRINTER IOCB1450 } RTS RETURN TO CALLER1460 ;1470 ;START OF SUBROUTINES1480 ;1490 PTRGSEL LDA #27 ESCAPE CODE15}00 JSR PTROUT1510 LDA #65 ASCII A1520 JSR PTROUT FOR LINE SPACING CMD1530 L}DA #8 TO SET 8/72 LINE SPACING1540 JSR PTROUT1550 LDA #27 ESCAPE CODE1560 JSR PTR}OUT1570 LDA #75 ASCII K1580 JSR PTROUT SET UP 480 DOT GR. MODE1590 LDA #64 n1} PARAMETER FOR GRAFTRAX1600 JSR PTROUT1610 LDA #1 n2 PARAMETER FOR GRAFTRAX1620 JSR PTROU}T1630 RTS1640 ;1650 CRLF LDA #13 ASCII CARRIAGE RETURN1660 JSR PTROUT1670 RTS1680 ;}1690 PTROUT STA OUT SAVE DATA TO OUTPUT1700 PTROUT1 LDX #$40 IOCB 41710 LDA #$B PUT CHAR CM}D1720 STA $342,X1730 LDA #OUT & $FF1740 STA $344,X BUFFER HI1750 LDA #OUT/2561760 } STA $345,X BUFFER LO1770 LDA #11780 STA $348,X BUFFER LENGTH=11790 LDA #01800 } STA $349,X1810 JSR CIOV DO PRINTER OUTPUT1820 TYA GET STATUS1830 BMI ERRO}R1840 RTS1850 ;1860 PTRCMD LDX #$40 IOCB 41870 STA $342,X STORE COMMAND1880 LDA #FS}PEC & $FF1890 STA $344,X STORE FILESPEC1900 LDA #FSPEC/2561910 STA $345,X1920 LDA #8}1930 STA $34A,X OPEN FOR WRITE ONLY1940 LDA #0 (OF COURSE)1950 STA $34B,X1960 } JSR CIOV DO OPEN OR CLOSE1970 TYA GET STATUS1980 BMI ERROR1990 RTS } RETURN TO SENDER (ADDRESS UNKNOWN)2000 ERROR STA 212 RETURN STATUS TO BASIC2010 LDA #0 SET M}SB TO 02020 STA 213 FOR BASIC2030 PLA DON'T RETURN TO2040 PLA TO S}ENDER2050 RTS RETURN TO BASIC2060 ;2070 ;2080 FSPEC .BYTE "P:",$9B2090 BIT .WORD 02100 LINE } .BYTE 02110 GROUP .BYTE 02120 TEMP .BYTE 02130 P .BYTE 02140 OUT .BYTE 02150 .END;60 ; Apxyhح0˭1̠)OO ԅ`ˍyȱ˅̭y˩ Wy yyyyyyy-y y yyi(˥iNy }yɛy 5yyiyyiyyAy'8@˥̩yNyi˥iLFxyiy 8'˥̩yy ,y }yLFx ,yԅթ Wy` 2yA 2y 2y 2yK 2y@ 2y 2y` 2y`y@ BDyEHI V0!`@BDyEJK }V0`ԩhh`P:O ԅ`ˍyȱ˅̭y˩ Wy yyyyyyy-y y yyi(˥iNy  k +@$'0@9,K/A]/AAo/$}A/'0@@'@',A`'/A`A(o,@$}'/A@9,@K/@A],A@o/A@A2K,@H'/A@$}H9,ADK/AAD<,@@'/@@A9,A K/A A],A$}o/AA,A/AAF,@$'/A@$9,@rK/A$}@r],A o/AA ,Ah/AAhP',A'/A$}Z',AA'/d6-?:B ,n+ A(+(( DONE GOOD!+x' +$(GOT I/O $}ERROR # ' D:SCRNDMP.TST'0@9,K/A]/AAo/$#8:(: {9J: {9j: {9::::8遍:::::::9 {9 a9:R::: : (} S :: 9m::m::m::m:::::8:::LQ8: {9 a9:W::(}: :  S :: 9m::m::m::m::::::Ў::ІL78٩9 {9 a9l BҝD:E (}VLT9`DEPHI B V`8d/8 i:::: {9 a9`INSERT SOURCE DISK, PRESS RETURNCOPY DONE, PRESS RETU(}RN TO RETURN TO DOSINSERT DESTINATION DISK, PRESS RETURN} DUPLICATE ANY DISK UTILITY COPYRIGHT (C) JULY 1981 (} BY JIM DAHLBERGPRESS BREAK TO STOP COPY OR RETURN TO CONTINUE - GOT I/O ERROR #1::8 : (v10 .TITLE " DUPLICATE DISK UTILITY"20 ;DUPLICATE ANY DISK UTILITY30 ;40 ; By Jim Dahlberg50 ;60,} ; July 25, 198170 ;80 ;90 DOSVEC = $A0100 MEMTOP=$2E50110 CIOV=$E4560120 DSKINV=$E4530130 DSTATS=$3030140,} *= $38000150 ;**** SEND OPENING MESSAGES ****0160 START LDX #OPNMES & $FF0170 LDA #OPNMES/2560180 ,} JSR MES SEND OPENING MESSAGE0190 LDX #OPNMES2 & $FF0200 LDA #OPNMES2/2560210 JSR,} MES0220 LDX #OPNMES3 & $FF0230 LDA #OPNMES3/2560240 JSR MES0250 ;**** INITIALIZE VARIABLES **,}**0260 LDA #00270 STA RSECTH INIT READ SECTOR TO 10280 STA WSECTH0290 LDA #,}10300 STA WSECTL INIT WRITE SECTOR TO 10310 STA RSECTL0320 ;**** DETERMINE TOP OF MEMORY ****033,}0 CLD CLEAR DECIMAL MODE0340 SEC SET CARRY0350 LDA MEMTOP MAX ME,}M LO0360 SBC #1290370 STA MAXADL0380 LDA MEMTOP+1 MAX MEM HI0390 SBC #00400 ,} STA MAXADH0410 ;**** SET UP START OF MEMORY BUFFER AREA ****0420 READ LDA #LOMEM & $FF START OF BUFFER LOW0430 ,} STA RADDRL READ BUFFER LOW0440 STA WADDRL WRITE BUFFER LOW0450 LDA #LOMEM/256 START OF BUF,}FER HI0460 STA RADDRH READ BUFFER HI0470 STA WADDRH WRITE BUFFER HI0480 ;**** SEND "INSERT SOU,}RCE DISK" MESSAGE0490 LDX #SRCMES & $FF MESSAGE ADDR LO0500 LDA #SRCMES/256 MESSAGE ADDR HI0510 ,} JSR MES0520 JSR WAIT0530 ;**** GET SECTOR USING CIO ROUTINE ****0540 READL LDA #2 ERROR RETRY COUNT,}0550 STA RETRY0560 READ1 LDA #1 SET DEVICE NUMBER0570 STA $301 TO 10580 ,}LDA #$52 GET SECTOR CMD0590 STA $3020600 LDA RADDRL SET UP READ BUFFER0610 STA $304,} AREA0620 LDA RADDRH0630 STA $3050640 LDA RSECTL SET UP SECTOR TO0650 ,} STA $30A READ0660 LDA RSECTH0670 STA $30B0680 JSR DSKINV CALL CIOTO GE,}T SECTOR0690 LDA DSTATS GET STATUS0700 BPL READ2 BRANCH IF STATUS IS OK (POSITIVE)0710 ,} DEC RETRY DECREMENT RETRY COUNT0720 LDA RETRY0730 BPL READ1 TRY AGAIN0740 JSR ER,}R GIVE UP AND REPORT ERROR0750 ;**** INCREMENT POINTERS ****0760 READ2 CLC CLEAR CARRY0770 ,} LDA #1280780 ADC RADDRL INCREMENT READ ADDR0790 STA RADDRL BY 1280800 LDA #0,}0810 ADC RADDRH0820 STA RADDRH0830 CLC CLEAR CARRY0840 LDA #10850 ,} ADC RSECTL INCREMENT READ SECTOR0860 STA RSECTL BY 10870 LDA #00880 ADC RS,}ECTH0890 STA RSECTH0900 LDA RSECTL0910 CMP #$D1 CHECK FOR LAST SECTOR + 1 (721)0920 ,} BNE CHKADR0930 LDA RSECTH0940 CMP #20950 BEQ WRITE0960 CHKADR LDA MAXADL0970 ,} SEC SET CARRY0980 SBC RADDRL CHECK FOR REACHING0990 LDA MAXADH1000 SBC RADDRH,}1010 BCC WRITE END OF AVAIL MEMORY1020 JMP READL1030 ;**** SEND "INSERT DEST. DISK" MESSAGE ****10,}40 WRITE LDX #DESMES&$FF1050 LDA #DESMES/2561060 JSR MES1070 JSR WAIT WAIT FOR RETURN,} TO BE PRESSED1080 ;**** WRITE SECTOR USING CIO ROUTINE ****1090 WRITEL LDA #2 ERROR RETRY COUNT1100 S,}TA RETRY1110 WRITE1 LDA #1 SET DEVICE NUMBER1120 STA $301 TO 11130 LDA #$57 P,}UT SECTOR CMD1140 STA $3021150 LDA WADDRL SET UP BUFFER ADDR1160 STA $3041170 LD,}A WADDRH1180 STA $3051190 LDA WSECTL SET UP SECTOR TO1200 STA $30A WRITE12,}10 LDA WSECTH1220 STA $30B1230 JSR DSKINV CALL CIO TO PUT SECTOR1240 LDA DSTATS ,} GET STATUS1250 BPL WRITE2 BRANCH IF STATUS IS OK1260 DEC RETRY DECREMENT RETRY COUNT1270 ,} LDA RETRY1280 BPL WRITE1 TRY AGAIN1290 JSR ERR GIVE UP AND REPORT ERROR1300 ;**** INCREM,}ENT WRITE POINTERS ****1310 WRITE2 CLC CLEAR CARRY1320 LDA #1281330 ADC WADDRL INCREM,}ENT WRITE ADDR1340 STA WADDRL BY 1281350 LDA #01360 ADC WADDRH1370 STA WADDRH,}1380 CLC1390 LDA #11400 ADC WSECTL INCREMENT WRITE SECTOR1410 STA WSECTL ,}BY 11420 LDA #01430 ADC WSECTH1440 STA WSECTH1450 ;**** CHECK FOR LAST SECTOR OR LAST ADDR ***,}*1460 LDA WSECTL1470 CMP #$D1 CHECK FOR LAST1480 BNE CHKAD SECTOR + 1 (721)149,}0 LDA WSECTH1500 CMP #21510 BEQ DONE1520 CHKAD LDA RADDRL1530 CMP WADDRL CHECK F,}OR LAST1540 BNE WRITEL ADDR1550 LDA RADDRH1560 CMP WADDRH1570 BNE WRITEL1580 ,} JMP READ1590 ;**** SEND "COPY DONE" MESSAGE1600 DONE LDX #ENDMES&$FF MESSAGE ADDR LOW1610 LDA #ENDMES/256 ,}MESSAGE ADDR HI1620 JSR MES1630 JSR WAIT WAIT FOR RETURN KEY1640 JMP (DOSVEC) RETURN TO -}DOS1650 ;**** SUBROUTINE TO WAIT FOR RETURN KEY TO BE PRESSED ****1660 WAIT LDA #5 GET RECORD COMMAND1670 -} STA $342,X1680 LDA #ANS&$FF1690 STA $344,X1700 LDA #ANS/2561710 STA $345,X1720 -} JSR CIOV GET INPUT FROM KEYBOARD1730 CPY #$80 CHECK FOR BREAK KEY1740 BNE WAIT11750 -} JMP DONE DONE IF BREAK KEY PRESSED1760 WAIT1 RTS RETURN1770 ;**** SEND MESSAGE SUBROUTINE ****1780-} MES STX $344 BUFFER ADDR LO1790 STA $345 BUFFER ADDR HI1800 LDA #80 MAX BUFFER L-}ENGTH1810 STA $348 LO1820 LDA #0 MAX BUFFER LENGTH1830 STA $349 -} HI1840 LDA #9 PUT RECORD CMD1850 STA $3421860 LDX #01870 JSR CIOV CA-}LL CIO TO SEND MESSAGE1880 RTS RETURN1890 ;**** IRRECOVERABLE I/O ERROR AFTER DISK I/O ****1900 ERR -} LDA DSTATS GET STATUS1910 SEC1920 SBC #1001930 LDX #$2F CONVERT TENS1940 CTNS IN- }X1950 SEC1960 SBC #101970 BPL CTNS1980 CLC1990 ADC #$3A2000 STA ONES20- }10 STX TENS2020 LDX #ERRMES & $FF2030 LDA #ERRMES/2562040 JSR MES2050 JSR WAIT20- }60 RTS RETURN2070 SRCMES .BYTE "INSERT SOURCE DISK, PRESS RETURN",$9B2080 ENDMES .BYTE "COPY DONE, PR- }ESS RETURN TO RETURN TO DOS",$9B2090 DESMES .BYTE "INSERT DESTINATION DISK, PRESS RETURN",$9B2100 OPNMES .BYTE "} DU- }PLICATE ANY DISK UTILITY",$9B2110 OPNMES2 .BYTE " COPYRIGHT (C) JULY 1981",$9B2120 OPNMES3 .BYTE " BY JIM-} DAHLBERG",$9B2130 ERRMES .BYTE "PRESS BREAK TO STOP COPY OR RETURN TO CONTINUE - GOT I/O ERROR #1"2140 TENS .BYTE 021-}50 ONES .BYTE 0,$9B2160 RSECTL .BYTE 02170 RSECTH .BYTE 02180 WSECTL .BYTE 02190 WSECTH .BYTE 02200 RADDRL .BYTE-} 02210 RADDRH .BYTE 02220 WADDRL .BYTE 02230 WADDRH .BYTE 02240 ANS .BYTE 02250 *= ANS+402260 MAXADL .B-}YTE 02270 MAXADH .BYTE 02280 RETRY .BYTE 22290 LOMEM .BYTE 02300 ;**** MAKE THIS ROUTINE AUTORUN ****2310 *-}= $2E02320 .WORD START2330 .ENDITY"20 ;DUPLICATE ANY DISK UTILITY30 ;40 ; By Jim Dahlberg50 ;60,2 h | @2##@@K: ++(#} ٠ǠӠ( ( B1}Y JIM DAHLBERG((211() THIS PROGRAM IS USED FOR DUPLICATING<))(!ANY DISK, EVEN THE SO-CALLED COPYF((( PROTECT1}ED DISKS. DO NOT HEED THEP$$(WARNINGS GIVEN ON SOME DISKSZ,,($THAT TRYING TO COPY THEM MAY DESTROYd))(!THE DISK. TH1}IS WILL NOT HAPPEN IFn..(&THIS PROGRAM IS LOADED & RUN PROPERLY.x(''(TO COPY ANY DISK FIRST LOAD THE..(&DUPAN1}Y.COM PROGRAM BY SELECTING ITEM L++(#FROM THE DOS II MENU (BINARY LOAD).&&(THE PROGRAM WILL THEN LOAD AND,,($AUT1}OMATICALLY RUN. THEN ALL YOU HAVE--(%HAVE TO DO IS FOLLOW THE INSTRUCTIONS(GIVEN BY THE PROGRAM.5(( Ӡ1}٠٠ϠŠ5)@##(THE PROGRAM WILL ASK YOU TO))(!ALTERNATELY INSERT THE SOURCE AND**("DESTIN1}ATION DISKS, JUST AS IN THE %%(NORMAL DOS DISK COPY ROUTINE..(.(#IF YOU WISH TO ABORT THE COPY, JUST--(%PRESS 1}THE ˠ KEY. IF THE DISK IS--(%BUSY WHEN YOU PRESS THE BREAK KEY YOU((( WILL HAVE TO PRESS IT AT LEAST 3",,($T1}IMES TO STOP THE PROGRAM, SINCE THE,((( PROGRAM WILL THINK IT GOT A DISK6..(&ERROR AND WILL TRY TO RECOVER 3 TIMES.@-1}(-("FOR YOUR INFORMATION IT MAY NOT BEJ**("POSSIBLE TO COPY PROTECT AN ATARI T--(%DISK FROM THIS PROGRAM. PRESS ANY 1}KEY^%(TO FIND OUT WHY!%)@h+(+( THE NORMAL DOS DISK COPY ROUTINEr--(%COPIES ONLY THE FILES THAT ARE ON 1}THE|''(DISK. MOST COPY PROTECTED DISKS--(%TRY TO PROTECT THEMSELVES BY CHANGING,,($THEIR DOS TO MOVE THE DISK DIR1 }ECTORY**("AND/OR ALLOCATION MAP TO DIFFERENT--(%SECTORS. THEN A NORMAL DOS CAN'T FIND(THE FILES ON THE DISK.1!}--(%DUPANY, HOWEVER, BLINDLY COPIES EVERY((( SECTOR ON THE DISK. THUS IT WILL,,($COPY THE ALTERED DOS, THE ALLOCATI1"}ON55(-MAP, THE DIRECTORY, AND ALL DATA ON THE DISK./"( PRESS ANY KEY FOR A P.S./)@.(.(#P.S. WORD H1#}AS IT THAT THIS PROGRAM&&(FAILED ON A CERTAIN EXPENSIVE ))(!CALCULATOR PROGRAM. IT LOOKS LIKE--(%THEY MAY DELIBE1$}RATELY PUT BAD SECTORS++(#ON THEIR DISK TO MAKE PROGRAMS LIKE**("THIS FAIL. HMMMMM. THIS PROGAM HAS--(%BEEN IMPRO1%}VED SINCE THEN TO ALLOW THE&--(%COPY TO CONTINUE WITH THE NEXT SECTOR0,,($, AT YOUR OPTION, IF AN I/O ERROR IS:( E1&}NCOUNTERED.?( ԧӠ̠ӡD D:DUPANY.INS ٠ǠӠ( ( B0C8:(: {9J: {9j: {9::::8遍:::::::9 {9 a9:R::: : 5(} S :: 9m::m::m::m:::::8:::LQ8: {9 a9:W::5)}: :  S :: 9m::m::m::m::::::Ў::ІL78٩9 {9 a9l BҝD:E 5*}VL8`DEPHI B V`8d/8 i:::: {9 a9`INSERT SOURCE DISK, PRESS RETURNCOPY DONE, PRESS RETU5+}RN TO RETURN TO DOSINSERT DESTINATION DISK, PRESS RETURN} DUPLICATE ANY DISK UTILITY COPYRIGHT (C) JULY 1981 5,} BY JIM DAHLBERGPRESS BREAK TO STOP COPY OR RETURN TO CONTINUE - GOT I/O ERROR #1::8 : 4v10 .TITLE " DUPLICATE DISK UTILITY"20 ;DUPLICATE ANY DISK UTILITY30 ;40 ; By Jim Dahlberg50 ;609.} ; July 25, 198170 ;80 ;90 DOSVEC = $A0100 MEMTOP=$2E50110 CIOV=$E4560120 DSKINV=$E4530130 DSTATS=$30301409/} *= $38000150 ;**** SEND OPENING MESSAGES ****0160 START LDX #OPNMES & $FF0170 LDA #OPNMES/2560180 90} JSR MES SEND OPENING MESSAGE0190 LDX #OPNMES2 & $FF0200 LDA #OPNMES2/2560210 JSR91} MES0220 LDX #OPNMES3 & $FF0230 LDA #OPNMES3/2560240 JSR MES0250 ;**** INITIALIZE VARIABLES **92}**0260 LDA #00270 STA RSECTH INIT READ SECTOR TO 10280 STA WSECTH0290 LDA #93}10300 STA WSECTL INIT WRITE SECTOR TO 10310 STA RSECTL0320 ;**** DETERMINE TOP OF MEMORY ****03394}0 CLD CLEAR DECIMAL MODE0340 SEC SET CARRY0350 LDA MEMTOP MAX ME95}M LO0360 SBC #1290370 STA MAXADL0380 LDA MEMTOP+1 MAX MEM HI0390 SBC #00400 96} STA MAXADH0410 ;**** SET UP START OF MEMORY BUFFER AREA ****0420 READ LDA #LOMEM & $FF START OF BUFFER LOW0430 97} STA RADDRL READ BUFFER LOW0440 STA WADDRL WRITE BUFFER LOW0450 LDA #LOMEM/256 START OF BUF98}FER HI0460 STA RADDRH READ BUFFER HI0470 STA WADDRH WRITE BUFFER HI0480 ;**** SEND "INSERT SOU99}RCE DISK" MESSAGE0490 LDX #SRCMES & $FF MESSAGE ADDR LO0500 LDA #SRCMES/256 MESSAGE ADDR HI0510 9:} JSR MES0520 JSR WAIT0530 ;**** GET SECTOR USING CIO ROUTINE ****0540 READL LDA #2 ERROR RETRY COUNT9;}0550 STA RETRY0560 READ1 LDA #1 SET DEVICE NUMBER0570 STA $301 TO 10580 9<}LDA #$52 GET SECTOR CMD0590 STA $3020600 LDA RADDRL SET UP READ BUFFER0610 STA $3049=} AREA0620 LDA RADDRH0630 STA $3050640 LDA RSECTL SET UP SECTOR TO0650 9>} STA $30A READ0660 LDA RSECTH0670 STA $30B0680 JSR DSKINV CALL CIOTO GE9?}T SECTOR0690 LDA DSTATS GET STATUS0700 BPL READ2 BRANCH IF STATUS IS OK (POSITIVE)0710 9@} DEC RETRY DECREMENT RETRY COUNT0720 LDA RETRY0730 BPL READ1 TRY AGAIN0740 JSR ER9A}R GIVE UP AND REPORT ERROR0750 ;**** INCREMENT POINTERS ****0760 READ2 CLC CLEAR CARRY0770 9B} LDA #1280780 ADC RADDRL INCREMENT READ ADDR0790 STA RADDRL BY 1280800 LDA #09C}0810 ADC RADDRH0820 STA RADDRH0830 CLC CLEAR CARRY0840 LDA #10850 9D} ADC RSECTL INCREMENT READ SECTOR0860 STA RSECTL BY 10870 LDA #00880 ADC RS9E}ECTH0890 STA RSECTH0900 LDA RSECTL0910 CMP #$D1 CHECK FOR LAST SECTOR + 1 (721)0920 9F} BNE CHKADR0930 LDA RSECTH0940 CMP #20950 BEQ WRITE0960 CHKADR LDA MAXADL0970 9G} SEC SET CARRY0980 SBC RADDRL CHECK FOR REACHING0990 LDA MAXADH1000 SBC RADDRH9H}1010 BCC WRITE END OF AVAIL MEMORY1020 JMP READL1030 ;**** SEND "INSERT DEST. DISK" MESSAGE ****109I}40 WRITE LDX #DESMES&$FF1050 LDA #DESMES/2561060 JSR MES1070 JSR WAIT WAIT FOR RETURN9J} TO BE PRESSED1080 ;**** WRITE SECTOR USING CIO ROUTINE ****1090 WRITEL LDA #2 ERROR RETRY COUNT1100 S9K}TA RETRY1110 WRITE1 LDA #1 SET DEVICE NUMBER1120 STA $301 TO 11130 LDA #$57 P9L}UT SECTOR CMD1140 STA $3021150 LDA WADDRL SET UP BUFFER ADDR1160 STA $3041170 LD9M}A WADDRH1180 STA $3051190 LDA WSECTL SET UP SECTOR TO1200 STA $30A WRITE129N}10 LDA WSECTH1220 STA $30B1230 JSR DSKINV CALL CIO TO PUT SECTOR1240 LDA DSTATS 9O} GET STATUS1250 BPL WRITE2 BRANCH IF STATUS IS OK1260 DEC RETRY DECREMENT RETRY COUNT1270 9P} LDA RETRY1280 BPL WRITE1 TRY AGAIN1290 JSR ERR GIVE UP AND REPORT ERROR1300 ;**** INCREM9Q}ENT WRITE POINTERS ****1310 WRITE2 CLC CLEAR CARRY1320 LDA #1281330 ADC WADDRL INCREM9R}ENT WRITE ADDR1340 STA WADDRL BY 1281350 LDA #01360 ADC WADDRH1370 STA WADDRH9S}1380 CLC1390 LDA #11400 ADC WSECTL INCREMENT WRITE SECTOR1410 STA WSECTL 9T}BY 11420 LDA #01430 ADC WSECTH1440 STA WSECTH1450 ;**** CHECK FOR LAST SECTOR OR LAST ADDR ***9U}*1460 LDA WSECTL1470 CMP #$D1 CHECK FOR LAST1480 BNE CHKAD SECTOR + 1 (721)1499V}0 LDA WSECTH1500 CMP #21510 BEQ DONE1520 CHKAD LDA RADDRL1530 CMP WADDRL CHECK F9W}OR LAST1540 BNE WRITEL ADDR1550 LDA RADDRH1560 CMP WADDRH1570 BNE WRITEL1580 9X} JMP READ1590 ;**** SEND "COPY DONE" MESSAGE1600 DONE LDX #ENDMES&$FF MESSAGE ADDR LOW1610 LDA #ENDMES/256 9Y}MESSAGE ADDR HI1620 JSR MES1630 JSR WAIT WAIT FOR RETURN KEY1640 JMP (DOSVEC) RETURN TO 9Z}DOS1650 ;**** SUBROUTINE TO WAIT FOR RETURN KEY TO BE PRESSED ****1660 WAIT LDA #5 GET RECORD COMMAND1670 9[} STA $342,X1680 LDA #ANS&$FF1690 STA $344,X1700 LDA #ANS/2561710 STA $345,X1720 9\} JSR CIOV GET INPUT FROM KEYBOARD1730 CPY #$80 CHECK FOR BREAK KEY1740 BNE WAIT11750 9]} JMP WRITE WRITE IF BREAK KEY PRESSED1760 WAIT1 RTS RETURN1770 ;**** SEND MESSAGE SUBROUTINE ****1789^}0 MES STX $344 BUFFER ADDR LO1790 STA $345 BUFFER ADDR HI1800 LDA #80 MAX BUFFER 9_}LENGTH1810 STA $348 LO1820 LDA #0 MAX BUFFER LENGTH1830 STA $349 9`} HI1840 LDA #9 PUT RECORD CMD1850 STA $3421860 LDX #01870 JSR CIOV C9a}ALL CIO TO SEND MESSAGE1880 RTS RETURN1890 ;**** IRRECOVERABLE I/O ERROR AFTER DISK I/O ****1900 ERR 9b} LDA DSTATS GET STATUS1910 SEC1920 SBC #1001930 LDX #$2F CONVERT TENS1940 CTNS I9c}NX1950 SEC1960 SBC #101970 BPL CTNS1980 CLC1990 ADC #$3A2000 STA ONES29d}010 STX TENS2020 LDX #ERRMES & $FF2030 LDA #ERRMES/2562040 JSR MES2050 JSR WAIT29e}060 RTS RETURN2070 SRCMES .BYTE "INSERT SOURCE DISK, PRESS RETURN",$9B2080 ENDMES .BYTE "COPY DONE, P9f}RESS RETURN TO RETURN TO DOS",$9B2090 DESMES .BYTE "INSERT DESTINATION DISK, PRESS RETURN",$9B2100 OPNMES .BYTE "} D9g}UPLICATE ANY DISK UTILITY",$9B2110 OPNMES2 .BYTE " COPYRIGHT (C) JULY 1981",$9B2120 OPNMES3 .BYTE " BY JI9q}b'DOS SYSb*+DUP SYSb8READDATAWRTbOMENUHELP fCOPY COMoHELP COMbrSCRNDMP INSb;SCRNDMP SRCbSCRNDMP OBJbSCRNDMP TSTbDUPANY OBJb@DUPANY SRCbDUPANY INSb'DUPVIS b@-DUPVIS SRCb vFLAGS bA1FLAGS7BASb?ULUNAR bGVMATHTUT M DAHLBERG",$9B2130 ERRMES .BYTE "PRESS BREAK TO STOP COPY OR RETURN TO CONTINUE - GOT I/O ERROR #1"2140 TENS .BYTE 029r}150 ONES .BYTE 0,$9B2160 RSECTL .BYTE 02170 RSECTH .BYTE 02180 WSECTL .BYTE 02190 WSECTH .BYTE 02200 RADDRL .BYT9s}E 02210 RADDRH .BYTE 02220 WADDRL .BYTE 02230 WADDRH .BYTE 02240 ANS .BYTE 02250 *= ANS+402260 MAXADL .9t}BYTE 02270 MAXADH .BYTE 02280 RETRY .BYTE 22290 LOMEM .BYTE 02300 ;**** MAKE THIS ROUTINE AUTORUN ****2310 9u}*= $2E02320 .WORD START2330 .ENDTY"20 ;DUPLICATE ANY DISK UTILITY30 ;40 ; By Jim Dahlberg50 ;6083R<LREWHITBLUd$$*** ӠӢ=w}Ӡef9 +@'0@9AR@i0@@70@@=x}Q0@@@e-@Ai %%2AC@@S-@#-@=y}7(@ FLAGSK-@@0O S %%2@Ab@@Q-@#-@5(=z}@ andI-@@0M Q %%2@@@@U-@#-@9(@={} M-@@0Q U -@A 6-@#-2(@*6 6=|}-@ #-@2(@*6 ? -@6@,-@ ;(@*? ? -@=}}@6@,-;(@*? "i%2G2@i2=~}@,,(,(! ͠٠6%D:A1FLAGS7.BASD2:FLAGSӢ<r=JRJCHANGPPOLQCHANGECHANGECHARGUESGUESSRIGHWRONPPDPDPDPDPDPDPDPDP1D1P1A}D1MISCORRECCHAGAITRZZZZZZZZZZ1Z1Z1Z@vA!B@B@"A} @ @QB 2BBAQA}@5 !"#$%@S&A'A}()*+,-./@@01@23A4@5@67A}8@9:@;<@=>?@AcPT = POINT TOTALdA}K6-B6-B'6-B36-?6-K6-'6-B6-B'6-A6-A}6-'6-36-?6-K6-W6-c6-o6-{6-6-A}";@P,"AdAU16-P:H:@,$@,1 @A{{"@*"@*"@*"@A}*"@*"@*"@*"@*"@*"@*"@B &__AA A0A@APA}A`ApAABB*** ***"@AEA} +@'0@9AR@E6-70@ @70@@7A}0@@@70@6-@ a @!-@@2-,@9/APA}]2@%A@@a a @!-@3@T-,@9/AP]2@%A@A}@a a @!-@U@u-,@9/AP]2@%A@@a )%2@A}) >:,4GA$>:,4LAJKL *** ͠ ***MNA}Q6-@V-@@$` "j12@@--@1 t ~UU91,100,81,100,7A}2,100,68,150,0,50,68,150,53,50,60,100,68,100,72,150,81,50,91,300YY108,100,136,200,108,150,91,50,102,150,0,50,102,150,81,5A}0,91,200,81,150,72,50,68,500%%26-  46- A@4A} ARGENTINA 1"@6-'6-@1 A0 ARGENTINA 6- AG( (&(A}THE ANSWER IS ARGENTINA.G(PRESS ANY KEY TO CONTINUE...;#@@K:0)@;@36-A}%@6-)6-@3 A*** ͠ ***"@AE +@'0@A}@9AR@E6-Q070@@@Q0@@A}@6-@ a @!-@@u-,@9/@U]2@%@u@@a  A}a @!-@@u-,@V9/A]2@%A@@a a @!-@@uA}-,A9/AC]2@%A%@@a  )%2@) *>:,4GA!A}@/>:,4LA!234*** ͠ ***56>e6-@#A! --@@03"OA}2@@]-@a e HDD91,25,108,75,102,25,91,100,81,75,72,25,68,75,72,25,68,75,53,25JFF91,A}150,72,25,81,25,91,75,72,12,0,12,72,75,68,25,60,75,0,25,60,50L990,25,60,12,0,12,60,50,0,25,60,25,68,75,72,25,68,200R%%2A}\6- f 46- A!p4BELGIUM u1"@6-A}'6-@1 Az0BELGIUM 6- A!PE( ($(THE ANSWER IS BELGIUM.E(PRESS ANY KEA}Y TO CONTINUE...;#@@K:0)@;@36-%@6-)6-@3 AA}   *** Ġ ***   "@A E +@'0@9AR@A}E6- Q0@@70@@Q0@@@ 6-@  Y @A}!-@@u-,@9/@UU2@@@Y  a @!-@@u-,@VA}9/A]2@%@P@@a  a @!-@@u-,A9/AC]2@&@A}@@a  )%2@)  >:,4GA1  >:,4LA0   A}*** ͠ *** e6-@#A1--@@!3"O2@@]-@a e  FF9A}1,100,108,100,136,50,108,50,91,100,91,25,0,25,91,50,81,50,72,50 QQ68,50,60,50,53,150,60,50,68,100,81,100,91,100,108,100,91A},150,102,50,108,200& %%20 6- : 46- A1pD 4IRELANDA} I 1"@6-'6-@1 AN 0IRELAND X A10b E( ($(THE ANSWER IS IRELAND.E(A}PRESS ANY KEY TO CONTINUE...l ;#@@K:0)@;@v 36-%@6-)6-@A}3 A*** ̠Ҡ ***"@AE +@'0@A}9AR@E6-70@@70@@6-@ a @!-A}@@2-,@9/AP]2@&@@@a a @!-@3@T-,@A}9/AP]2@%@@@a k @!-@U@u-,@9/APg2@+'@A},%A@@k )%2@) >:,4GAA*** A} ***e6-@#AA--@@33"O2@@]-@a e \\1A}14,100,102,100,85,100,91,50,0,25,91,12,0,12,91,100,85,50,0,25,85,25,68,100,76,50,0,50RR76,100,57,75,60,12,0,12,60,16,68,1A}6,76,16,85,50,0,25,85,12,0,12,85,100,60,75 ))68,12,0,12,68,16,76,16,85,16,91,100 %%2A}6-  46- AA`"4 EL SALVADOR '1"@6-'6-@1 A,A}0 EL SALVADOR 66- AA @I( (((THE ANSWER IS EL SALVADOR.I(PRESS ANY KEY TO CONTINUE...J;#A}@@K:0)@;@T36-%@6-)6-@3 A*** A}Š ***"@A+ +@AR@+6-Q0@@70@A}@Q0@@@6-@ a @!-@@u-,@9/@U]2A}@&@@@a a @!-@@u-,@V9/A]2@%@P@@A}a Y @!-@@u-,A9/ACU2@@@Y )%2@A}) >:,4GAQ*** ͠ ***e6-@#AQ--@@#A}3"O2@@]-@a e NN108,6,0,6,108,25,0,12,108,12,81,44,0,6,81,50,72,44,0,6,72,50,A}53,75,64,25BB81,25,0,12,81,12,64,37,81,12,96,50,60,100,72,37,85,12,81,150%%26-A}  46- AQ` 4FRANCE 1"@6-'6-@1 A0FRANCEA} 6- AQ (D( (#(THE ANSWER IS FRANCE.D(PRESS ANY KEY TO CONTINUE...2;#@@A}K:0)@;@<36-%@6-)6-@3 Anop*** Π ***qrA}u"@AzE +@'0@9AR@E6-Q0@@7A}0@@@Q0@@ @ Y @!-@@(-,@9/APA}U2@@@Y a @!-@)@V-,@9/AP]2@%@@@A}a Y @!-@W@p-,@9/APU2@@@Y )%2@A}) >:,4GAa*** ͠ ***e6-@#Aa--@@$3"A}O2@@]-@a e XX60,50,81,50,47,50,60,25,40,25,45,25,47,25,53,25,60,12,0,12,60,25,64A},25,72,25,81,25AA60,50,53,50,47,50,0,25,40,25,45,25,47,25,53,25,60,25,40,100%%26-A}  46- Aa`4SPAIN 1"@6-'6-@1 A0SPAIA}N  Aa C( ("(THE ANSWER IS SPAIN.C(PRESS ANY KEY TO CONTINUE...;#@@K:0)A}@;@$36-%@6-)6-@3 AVWX*** Š ***YZ]"A}@Ab+ +@AR@+6-lk0@@70@@Q0@A}k0@@@v6-@ Y @!-@@H-,@9/APU2@A}@@Y a @!-@I@U-,@9/AP]2@&@@@a a A}@!-@V@b-,@9/AP]2@&@@@a a @!-@c@iA}-,@9/AP]2@%@@@a Y @!-@p@v-,@9/APU2@A}@@Y a @!-@@G-,@09/@6]2@&@@@a A}O-@(@4#,@//@UK2@@@O O-@!@'#,@V//AIA}K2@@@O O-@5@A#,@V//AIK2@@@O )%2@A}) >:,4GAqp*** ͠ ***e6-@#Aqb--A}@@3"O2@@]-@a e KK72,37,68,12,60,75,0,12,68,12,72,37,68,10,60,50,7A}2,25,0,25,68,37,60,12--53,68,0,6,53,25,47,25,0,12,47,12,45,100%%26-  A} 46- Ar 4GREECE 1"@6-'6-@1 A 0GREECE *6A}- Aq4D( (#(THE ANSWER IS GREECE.D(PRESS ANY KEY TO CONTINUE...>;#@@K:0)A}@;@H36-%@6-)6-@3 A>?@*** Π ***ABE"@A}AJ+ +@AR@+6-TQ0@@70@@Q0@@A}@^6-@ ha @!-@@2-,@9/AP]2@%@P@@A}a ra @!-@3@T-,@9/AP]2@%@P@@a |a @!-@UA}@u-,@9/AP]2@%@P@@a )%2@) >:,4A}GA*** ͠ ***e6-@#A--@@!3"O2@A}@]-@a e II108,50,81,75,85,25,81,50,72,50,64,75,72,25,81,50,108,50,72,75,64,25>>60,25,64,25,72A},25,81,25,72,50,53,25,0,12,53,6,0,6,53,100%%26-  46- AA}`4IRAN 1"@6-'6-@1 A0IRAN 6- A B( (A}!(THE ANSWER IS IRAN.B(PRESS ANY KEY TO CONTINUE...;#@@K:0)@;@36-%A}@6-)6-@3 A&#'#(#*** ٠ ***)#*#-#"@A2#+ +@A}AR@+6-<#Q0@70@@@Q0@@@F#6-@A} P#a @!-@@u-,@9/@U]2@%A@@a Z#a @!-@A}@u-,@V9/A]2@%@P@@a d#Y @!-@@u-,A9/ACA}U2@@@Y n#)%2@) s#>:,4GA###*** A}͠ ***###e6-@#A--@@3"O2@@]-@a e #TTA}91,44,0,6,91,37,81,12,91,100,53,44,0,6,53,37,50,12,53,93,0,6,53,50,45,37,50,12#%%53,100,60,50,53,37,60,12,68,125#%%2A}#6- # 46- A`#4ITALY #1"@6-A}'6-@1 A#0ITALY #6- A #C( ("(THE ANSWER IS ITALY.C(PRESS ANY KEY TO CONA}TINUE...#;#@@K:0)@;@#36-%@6-)6-@3 A'A}''*** ٠ ***'''"@A'+ +@AR@+6-$'Q0@A}@70@@@Q0@@.'6-@ 8'a @!-@@2-,@A}9/AP]2@%@P@@a B'Y @!-@3@T-,@9/APU2@@A}@Y L'a @!-@U@u-,@9/AP]2@%@@@@a V')%2@A}) `'>:,4GBh'i'j'*** ͠ ***k'l't'e6-@#B-A}-@@3"O2@@]-@a e v'dd108,75,102,25,91,50,68,50,91,50,102,50,108,10A}0,81,50,91,50,102,50,108,50,121,50,108,50,102,150z'%%2~'6- ' 46-A} B`'4HUNGARY '1"@6-'6-@1 A'0HUNGARY ' 6- B 'A}E( ($(THE ANSWER IS HUNGARY.E(PRESS ANY KEY TO CONTINUE...';#@@K:0)@;@A}'36-%@6-)6-@3 A**** Ġ ******"@A++ +@A}AR@+6- +Q0@@70@@Q0@@@+6-@A}  +Y @!-@@#-,@9/APU2@@@Y %+a @!-@$@3A}-,@9/AP]2@&@@@a *+a @!-@4@S-,@9/AP]2A}@%A@@a 9+a @!-@T@c-,@9/AP]2@&@P@@A}a >+a @!-@d@s-,@9/AP]2@&@@@@a H+)%2@A}) +>:,4GB+++*** ͠ ***+++e6-@#Br--@A}@3"O2@@]-@a e +0091,100,81,25,91,25,81,25,72,25,91,150,0,50+0091,75,A}96,25,91,25,96,25,91,25,72,25,81,150+%%2+6- + 46- B@A}+4THAILAND +1"@6-'6-@1 A+0THAILAND +6- B+F( A}(%(THE ANSWER IS THAILAND.F(PRESS ANY KEY TO CONTINUE...+;#@@K:0)@;@+3A}6-%@6-)6-@3 A.*** Ǡ ***...9 +'0@9AA}dAU.5(5( YOU MISSED  FLAGS AND GOT  RIGHT.$$(FOR A TOTAL OF  POINTS.. ( (/g!@A}](IYOU'RE TOO GOOD! WHY DON'T YOU GO AND PLAY STAR RAIDERS OR SOMETHING?g B0/M!@C(/NOT TO BAD BUT YB}OU STILL NEED SOME PRACTICE.M B0/e @[(GIT'S AGOOD THING YOU BOUGHT THIS PROGRAM!!! BOY, DO YOU NEEB}D HELP!e B02( ( ((2/u0u*** Š ***1u2u:uT(T(IDO YOU WANT TO MAKE A GUESS OR LIB}STEN TO THE ANTHEM (PRESS OR )?:,0G*>:,0LBB}Du$uuu*** Š ***uuu%(%(PLEASE YOUR GUESS.u))(!FOR NO GUESS, JUST PB}USH .u%AR!( %u$uuu*** ԠӠ ***uuu' +@'0B}@v"@Bv%2A!@@G2@@@@i2@B}@@@2@@`@@-@@ v%2G2B}@i2@2@-@@ vB}%2A!@@G2@@@@i2@@@@2@@`@B }@vR-@@4-@6@H0@R@ v;-@@3(@B }THAT'S CORRECT!!7 ; v0@@v'"@6-%@' BP v6-%@*v%2B }G2@i2@2@B }/vS @-@@<(@TOTAL POINTS: F@S(@4v-@AP >v,6-B }6-@)6-%@,$?vZv[v\v*** ǠӠ ***]v^vav=%2@@@@B}9-@@= bv=%2@9-@@= cv=%2@@@@9B}-@@= dv%%2@fv,(,(!SORRY, WRONG ANSWER. TRY AGAIN...kv$AR (B} $pv$y*** DRAW FLAGPOLE ***yyy,@+/@ =,@@O/@B}@a,@@s/@@,@@/@@,@@/@@"y,B}@@'/@@9,@@K/@@],@@o/@ @,@@B}/@@,@@ /@@ ,yo,@@'/@@9,@@K/@@B}],@@o/@@6y]-@@y#,@//@ =6-A&Y2@@@B}] Jy$ D:AFLAGS7.BASQCHANGECHANGECHARGUESGUESSRIGHWRONPPDPDPDPDPDPDPDPDP1D1P1@"@@M"@6-&? +6-%? M2@@@?"@6-&?0?2F}@ @@M"@6-&? +6-&? M2@@@6-&@F}$,%27AV@IAW@[( *YOU'RE DEAD*e A@s6-&@6-%F}@6-%@6-%@6-@6I%2@u@@16-@=6-@I6-@; F},,,@o2@ @;2@@@@W2@@p@k-@F}@o Bg @,&%,&@&5,%@&?G,&W,&@&g,%@&CH6-&F}?P6-%?P'6-&/6-&;@H6-6@JI 6-&6-$?'6-$?56-$?I!@F}A Ti%2G2@i2@^>AVF}@>(#Press the fire button to play againh T:,"@A`|6-%y-@AF}@;2@@O-@@%S W y2\AV@'AF }W@D(The EAGLE has landed. P6-A\6-E9+!%@* %@,)+!%@* %@,E6F!}-@PS( POINTS6-%+AV@=AW@&A(S@w1-@A '6-F"}1 @ % +@6-%6-U @,1/@yC,AYU/AF#}Y@yG-@h@y!@-,9/AY= G@6-'@6-'@'0F$}@'@6-P:&@`, AMM-+P:,'@%@ ,&@`+P:,'@%@ ,%@`F%}@1 6-1 )!AD) @ AP6-8,'@ ,/%@[ @,@gF&}'/%@;,%@@gQ/%@%@[@6-%@ $K6-@y6-@'6-@xF'}36-@?6-@K6-@){AR@'AVH(>:@',>:@),SPEED:ZAV@F(}{(>:@',>:@1,SPEED:*bAV'AW@ 1(FUEL:CAV@UAW@ bF)}(SCORE: .#6-@  A# Ap;@,+@70@@70@@F*}9-@@92AP@@]-@(@A) A!=-@@%A F+}M-@](@ {-@@%  A2S-@@c(@AF,}w-@A{  -@6?P<2@@@P-@@Z A P^ b F-}2@b -@6?P<2@ @@ b2F.} A">-@(@.+-@;(@ >$4 @)!@$>$"-@F/}!(@$$C +AR@"(%(C(WELCOME TO LUNAR MISSION!3($(DO YOU WANT INSTRUCTIONS(F0}04N3$00((}YOU ARE IN A LUNAR MODULE CONTROLLED(BY THE FIRST JOYSTICK.**("YOU MUST LAND ON THE LUNAR F1}SURFACE**("AS MANY TIMES AS POSSIBLE WITH THE##(500 FUEL UNITS GIVEN TO YOU**("PUSH THE JOYSTICK FORWARD TO APPLF2}Y**("THRUST. PUSH THE JOYSTICK LEFT AND))(!RIGHT TO ROTATE THE SHIP. YOU CANA+(#ONLY APPLY THRUST THE DIRECTION TF3}HEA(SHIP IS POINTING.!!(PRESS Ԡ TO CONTINUE F:B2y,@A# U,($}WHEN YOU GET CLOSE ENOUGF4}H TO THEU($SURFACE, THE SCREEN WILL BE ENLARGED [+(#TO GIVE YOU A BETTER VIEW. THE SHIPQ(!MUST BE IN AN UPRIGHT POSITIF5}ON TO[(LAND. V+(#YOU CAN ABORT A LANDING BY PRESSINGV(&THE TRIGGER (THIS COSTS 50 FUEL UNITS) N+(#YOU CAN ONLY LANF6}D ON WHITE SURFACESN(THE GREEN IS A DEEP DUST BOWL.$ G.(&ALL OF US AT MISSION CONTROL HOPE YOUG(MAKE IT. GOOD LUCK!!F7}. (PRESS Ԡ TO PLAY!8 F:B2y,@A#`B $ ,,,,, ,,,,,,,ΛD:LUNARDs>?7  AAAAAAAAAAAAAAAAAAAAAAAAAABBBBB 9}  :}##*** READ & DATA STATEMENT ***##*** ;} WRITER ***##*** VERSION 1.4 ***##*** BY TOM TOLSTEAD ***##*** AUGUST,1982 *** <}6-6-@'6-@36-@?6-@K6-@ W6-@c6-@o6-@{6-@" =}6-@76-@@6-@C6-@T6-@V6-@r6-A6-A0000 >} 3;,;,;,;,!6.*67,.367,. = 6. 67,.67,.8D1:READDATA.LST= U ( ?}} (3(! * VARIABLE INITIALIZATION *U( * STATEMENT WRITER *A(&( READ AND DATA STATEMENTSA( DAT @}A STATEMENTS ONLYF 6- (*(ENTER YOUR SELECTION.(4-8B!) F @@45 (} (1 A}( * READ STATEMENT WRITER *5(V6-@ R(9ENTER THE STARTING LINE NUMBER FOR THE READ STATEMENTSV B},(,( ENTER YOUR VARIABLE OR ENTER ===T"(AND PRESS WHEN DONE&(AD1:READDATA.LSTTD1:TE C}MP(READ 36-@# -/(ENTER VARIABLE3 B:,"  ( 4=== @3. D}6-%B:,!6-"6-%'(*'.  "( !(,  (6-% !( " E}4 (} (0( * DATA STATEMENT WRITER *4(#`6-@5 N(5ENTER THE STARTING LINE NUMBER FOR THEDATA STATEMENT F}SR`"@Q%"@9& 'D1:READDATA.LST((DATA)?(;(/ENTER DATA AND PRESS G},ENTER === WHEN DONE?(* -+. 6- ( ENTER DATA!*B:,". ,%6-%B:,4==='% @P H}-# !6-6-%'(# . "(/ !(,0  (6-% 2( ' @e3 I}D1:READDATA.LST4O(K(?ENTER THE DATA TO MATCH THE VARIABLE AND PRESS O(5D1:T J}EMP6-6(DATA7- -#4===)B:,"- @d8" 6- ( VARIABLE="9 B:," : K}.6-%B:,!6-"6-%%'*(. < "(= !(,>  (6-% @( A L}v (} (o(]THE PROGRAM STATEMENTS ARE NOW IN THE LIST FORMAT IN THE FILE 'D:READDATA.LST'.s(v(CJ(J M}(>TYPE 'NEW' AND THIS FILE TO USE THESE LINES.D3('(HIT ANY KEY TO EXIT PROGRAM3ATEF: N}AT,F @iH72AD!-@% /23 7 D:READDATA.WRTgoj|CLAPCPOSCOF@AA<AV@@Q @ P}d͠РnBY DALE PANTON 1/83x&&9@,9@,;@,+@@ A+6-@Q}AAA@ A(@(%Ұ ұ Ҳ ҳ Ҵ1-@!R} A% 16-\ %@J(' \AR@)!%S}@@%@$)(-@@P ##______DETECT CHANGES_________DT:,@:6-%T}@&+"@,$@D A&6-R:,&"@Ap:"@:68,-8,&@%+8,",U}$@:"@:68,-8,%@&+8,"@,$@:"@:68,-8,&@%+8,",$@}y##ABC(@@@@@ @ @JW} @1jj: WRITTEN BY DUANE WENELL 3329 DAKOTA AVE. ST.LOUIS PARK MINN. 55416 929-8045.__: THJX}IS PROGRAM HAS NOT BEEN COPYRIGHTED. IT MAY BE COPIED AND SHARED.hh: ADDITION AND SUBTRACTION JY} PRACTICE ON NUMBERS FROM 0 TO 20 AND MULT. 0 TO 6.jj: YOU MAY SWITCH FROM ONE MODE TO ANOTHER (i.eJZ}. ADDITION TO SUBTRACTION) BY TYPINGee: THE DESIRED FUNCTION LETTER (i.e. "S"). YOU NEED NOT START J[} THE PROGRAM OVER.jj: IT IS ADEQUATELY TRAPPED, BUT ONE ENHANCEMENT WOULD BE TO DISABLE THE BREAK KEJ\}Y.KK: ALL OTHER INSTRUCTIONS ARE IN THE PROGRAM. HAPPY COMPUTING! + 9@@d'B7t@dJ]}9AR@ >:A,&&;@ ,;@ ,;@ ,<  HELLO!  < "I'M GLAD YOU CAME TO PLJ^}AY WITH ME!!  WHAT IS YOUR NAME!  HELLO, !#/ / $I CAN GIVE YOU PRACTICE IN ADDITION,(++ #SUJ_}BTRACTION, OR MULTIPLICATION. IF -++ #YOU WANT TO PRACTICE ADDITION, THEN2-- %TYPE AN 'A'. IF YOU WANT TO PRACTICE 7,J`}, $SUBTRACTION, THEN TYPE AN 'S' AND IF<,, $YOU WANT TO PRACTICE MULTIPLICATION,A,, $THEN TYPE AN 'M'. I ALSO HAVE A VJa}ERYB** "TRICKY PROGRAM WHICH WILL GIVE YOUC++ #MIXED PROBLEMS. YOU CAN SEE THAT BYDS, $TYPING 'XX'. IF YOU GET REAL Jb}GOOD ATS("ONE TYPE OF PROBLEM YOU CAN SWITCHE=*("BY TYPING THE ONE YOU WANT WITHOUT=(STARTING OVER.F!  WHICH DJc}O YOU WANT!P 4A AZ 4S A_ 4M Ad 4XX Ax- - "I DON'T KNOW WJd}HAT YOU MEAN! PLEASE)) !TYPE ONE OF THE LETTERS I LISTED.  (A,S,M,OR XX) @pADDITION PROGRAM >:AJe}, +@9@@d'B7t@d9AR@ @0@@0@Jf}@@+-@@+(@ADDITION$-@@$(@+&-@@&(Jg}@___$-@@$(@?"-@@"(@6-P:@!$H:@,,0@Jh}6-P:@!$H:@,,!@  AP,-@@"(@, AU"-@Ji}@"(@!@  Ae,-@@"(@, Ap "-@@"(@Jj} A,14AA64SA;4MA@4XXAE4AF AJk}J2 6-A:,"% AP( A`2 APT) % AU Ae) A^&-@@&(@Jl} c&-@@&(@ h A0SUBTRACTION ROUTINE >:A, +@9@Jm}@d'B7t@d9AR@ @0@@0@@@.-@Jn}@.(@ SUBTRACTION"-@@"(@$-@@$(@-&-@@Jo}&(@___$-@@$(@?&-@@&(@ &-@@&(@Jp} 6-P:@!$H:@,,0@6-P:@!$H:@,,!A!@ Jq}A,-@@"(@, A "-@@"(@!@ A0 ,-@Jr}@"(@, A5"-@@"(@ 4A A! 4S A& 4MJs} A+ 4XX A0 4 A51 A55 6-A:,:) "& AP A`) Ap?) Jt}& AU Ae) A5XMULTIPLICATION] >:A,b +@c9@@d'B7t@d9AJu}R@g @l0@@q0@@@v1-@@1(@MULTIPJv}LICATION{"-@@"(@$-@@$(@X&-@@&(@___$-@Jw}@$(@?&-@@&(@ &-@@&(@ 6-P:@$H:@Jx},,0@6-P:@$H:@,,!@ A,-@@"(@, Jy}A"-@@"(@!@  A,-@@"(@, A"-@Jz}@"(@ A54AA4SA4MA4XXA4J{}A5 A5 6-A:,) "$ AP A`) AU) $ AU Ae) A5MIXJ|}ED PROBLEMS >:A, +@9@@d'B7t@d9AR@ @0J}}@@0@@@1-@@1(@MIXED PROBLEMS"-@@"(@J~}$$-@@$(@?.&-@@&(@___30@@8%%6-P:@$H:J}@,,%@BA A0A@ADDITION SUB.76-P:@!$H:@,,76-P:@!$H:@,,IJ}-@@&(@ 8-@@I(@ $-@@$(@+!@ A @J},-@@"(@, A E"-@@"(@!@ A U,-@@J}"(@, A `"-@@"(@  4AA4SA4MAJ}4XXA4A ` A ` 6-A:,) "% AP A`) Au ) % AU J}Ae) A ` SUBTRACTION SUB. 76-P:@!$H:@,,76-P:@!$H:@,, !A0  I-@J}@&(@ 8-@@I(@  $-@@$(@- !@ A0P ,-@J}@"(@, A0U "-@@"(@ !@ A0e ,-@@"(@J}, A0p "-@@"(@  4AA 4SA 4MA 4XXAJ} 4A0p A0p 6-A:, ) "& AP A`) Au ) & AU Ae) AJ}0pMULTIPLICATION SUB.76-P:@$H:@,,76-P:@$H:@,,&-@@&(@ J}&-@@&(@ $-@@$(@X!@ A@P,-@@"(@J}, A@U"-@@"(@!@ A@e,-@@"(@, A@p"-@J}@"(@4AA4SA4MA4XXA4A@pJ} A@p 6-A:,) "$ AP A`) Au) $ AU Ae) A@p%%6-P:@J}$H:@,,%@AP AP@AP`,) !}THAT'S GREAT! LET'S TRY ANOTHER!,$(% }RIGHT ON! LET'S TRY J}ANOTHER!($(% }VERY GOOD! NOW TRY THIS ONE!($|%%6-P:@$H:@,,%@0@@@J}AU AU@AU` WRONG! TRY AGAIN!$.+ #SORRY! THAT'S NOT RIGHT! TRY AGAIN!.$0- %ALMOST! TRY AGAIN ANJ}D TAKE YOUR TIME!0$pSOUND GENERATORz%%6-P:@$H:@,,%@AaAbAc%%2J}A!@@-@@0 %%2@@@@-@@0 %%2J}@@@@-@@0 %%2@@`@@-@@0 J}%2G2@i2@2@J}$=B%%2A@@G-@@0 L%%2@@@@QJ}-@@0 V%%2@@r@@[-@@0 `%%2@@S@@J}e-@@0 j%2G2@i2@J}2@t$%%2@@@-@@0 %%2J}@@v@@-@@0 %%2@@d@@-@@0 %J}%2@@G@@-@@0 %2G2@J}i2@2@$dMISTAKE SEQUENCE SOUNDn-@J}AP@x2@@%%2@@ $ D:MATH.TUT @Hx:"@:68,-8,%@&+8,"@,$@ A F:B2y,@A A@##____}_PEEK REGISTERS__________-@C"68,-P:F:A%,'@,C68,-F:A%,&@$8,   $}##_____PRINT REG CONTENTS______G 6.  67@,.=:8,,/8,!@ G67@,.7@,Q67@,.} *67@,.=:8,,98,!@ Q67@,.7@,4@%/%@@%@$4(9!A}%@$8,%8,5-@@P9 $W##_____GRAPHICS 1 SCREEN_______X1 +@6-AV%6-}16-@]&&(@b&&(@g!!(@ program menul1&}(@1(@q (@ 1. ITEM #1v (@ 2. ITEM #2{+ (@} 3. ITEM #3+(@1&(@____________________1(@&&(@press for opt&&(@}PRESS FOR OPT&&(@SELECT&&(@Ӡstart Ҡ&&(@}""(@ COPYRIGHT 1983&&(@&&(@}$##______GRAPHICS 0 SCREEN______1 +6-@%6-@ 16-@AA'@}'-@-("-@@@)(_- @@$##________INSTRUCTIONS_____}____  + (}*Q0@@@70@@@Q0@@@4 ( }9 ( Р> ( C0(0(%THIS PROGRAM PERMITS CONTROL OF THE 5H--(%}COLOR REGISTERS BY JOYSTICK TO AID INM--(%THE DESIGN OF MENUS AND TEXT DISPLAYSR (IN GRAPHICS MODES 0,1,2.W,(,(!}PRESS JOYBUTTON TO POSITION ARROW\$$(OVER DESIRED COLOR REGISTER.a.(.(#PRESSTO SWITCH BETWEEN GR.0f##(TE}XT AND GR.1 MENU EXAMPLE.k0(0(%THE JOYSTICK CAN BE USED TO ALTER THEp9+(#COLOR AND LUMINANCE OF THE SELECTED9( REGI}STER.u9AR@(9(PRESSTO FIND OUT HOW.z F:B2y,@A2 (}/(!THE JOYSTICK OPER}ATES AS FOLLOWS:2(( Š( (  ( } (((   ((( Ҡ Ҡ( (} ( Š( +( (+(PRESSTO BEGIN PROGRAM.} F:B2y,@A p +$""______MENU WORKSPACE________1 +@6-AV%6-16-@}C(@(@$(@C(@ YOUR MENU HERE$ D:MENUHELP @ a