ML}  X c0C)HCCH Mhhݩh `eCDiCD`  RyHP   * 1H0芢@) Y0.Ș`i#(PMRR\ \b Pgi 0  % @ / ՠ`d   0DDԝL 910 REM PROGRAM TO PRINT LINE NUMBERS20 REM AND THEIR ADDRESSES30 REM 40 REM Get address of first line50 ADDRESS=PEEK(136)}+PEEK(137)*25660 REM Get the line number70 LNUM=PEEK(ADDRESS)+PEEK(ADDRESS+1)*25680 REM Test for end of Program90 IF LNUM}=32768 THEN END 100 REM Print 1ine number and address110 ? "LINE #";LNUM;120 ? " STARTS AT ADDRESS ";ADDRESS130 REM Get a}ddress of next line140 ADDRESS=ADDRESS+PEEK(ADDRESS+2)150 GOTO 70";LNUM;120 ? " STARTS AT ADDRESS ";ADDRESS130 REM Get aD1 REM 100 REM PROGRAM TO PRINT THE TOKENS 110 REM WHICH BEGIN BASIC STATEMENTS 120 REM Get the beginning of program 130 B }ASE=PEEK(136)+PEEK(137)*256140 REM Change statement terminator 150 POKE BASE+5,22160 ? CHR$(125):REM CLEAR SCREEN 170 REM } PRINT TOKENS 180 FOR I=0 TO 54190 REM Change line number and token 200 POKE BASE,I:POKE BASE+4,I210 LIST I:REM Print tok }en 220 REM Undo line feed if needed 230 IF I>1 THEN ? CHR$(28);240 REM Change left margin for columns 250 IF I=19 THEN P }OKE 82,12:POSITION 12,1260 IF I=39 THEN POKE 82,24:POSITION 24,1270 NEXT I280 REM Put Program back to normal 290 POKE BAS }E,1:POKE BASE+4,0300 POKE BASE+5,155310 POKE 82,2:POSITION 2,22270 NEXT I280 REM Put Program back to normal 290 POKE BASB1 REM A100 BASE=PEEK(136)+PEEK(137)*256110 REM Change beginning token 120 POKE BASE+4,54:POKE BASE+6,22130 REM Print oper}ator and function tokens140 PRINT CHR$(125)150 FOR I=20 TO 84160 POKE BASE,I:POKE BASE+5,I170 LIST I180 REM Undo line fe}eds 190 ? CHR$(28);:IF I=22 THEN ? CHR$(28);200 IF I=39 THEN POKE 82,11:POSITION 11,1210 IF I=59 THEN POKE 82,19:POSITION }19,1220 IF I=79 THEN POKE 82,28:POSITION 28,1230 NEXT I240 POKE BASE,1:POKE BASE+4,0250 POKE BASE+5,65:POKE BASE+6,15526}0 POKE 82,2:POSITION 2,22 82,28:POSITION 28,1230 NEXT I240 POKE BASE,1:POKE BASE+4,0250 POKE BASE+5,65:POKE BASE+6,15526100 REM PROGRAM TO PRINT THE VARIABLE NAME LIST 110 DIM ARRAYNAME(1),STRINGNAME$(1)120 REM GET THE BEGINNING OF THE LIST 1 }30 ADDRESS=PEEK(130)+PEEK(131)*256140 ? CHR$(125);"VARIABLE NAME LIST"150 REM GET CHARACTER AND TEST FOR END 160 A=PEEK(AD }DRESS):IF A=0 THEN END 170 REM PRINT CHARACTER 180 IF A<128 THEN ? CHR$(A);:GOTO 210190 ? CHR$(A-128)200 REM GET NEXT ADD }RESS AND REPEAT 210 ADDRESS=ADDRESS+1:GOTO 160180 IF A<128 THEN ? CHR$(A);:GOTO 210190 ? CHR$(A-128)200 REM GET NEXT ADD 01 REM DIMENSION DUMMY STRING 2 DIM DUMMY$(1)3 REM DIMENSION THE APRAYS AND STRINGS 4 REM WHICH WILL NEED CLEARING 5 DIM A}1(1),A2(1)6 CLR :REM CLEAR THE VARIABLES 7 N=3:REM NUMBER OF VARIABLES JUST DIMENSIONED8 REM INCLUDING DUMMY$ 9 REM YOUR }PROGRAM MAY BEGIN HERE 100 REM HERE IS AN EXAMPLE OF HOW TO 110 REM USE THE UNDIMENSION ROUTINE 120 DIM TEST$(20):TEST$="I}'M STILL HERE? "130 DIM DUMMY$(1),A1(50,10)140 A1(50,10)=1:? A1(50,10),TEST$150 REM EXECUTE UNDIMENSION ROUTINE 160 LINE}=170:GOTO 1020170 DIM DUMMY$(1),A2(500)180 A2(500)=2:? A2(500),TEST$190 END 200 REM 1000 REM UNDIMENSION ROUTINE 1010 R}EM SAVE CURRENT POINTER VALUES 1020 S136=PEEK(136):S137=PEEK(137)1030 S140=PEEK(140):S141=PEEK(141)1040 REM MOVE END OF VA}RIABLES1050 T1=PEEK(134)+8*N:T2=PEEK(135)1060 IF T1>255 THEN T2=T2+1:T1=T1-2561070 POKE 136,T1:POKE 137,T21080 REM MOVE B}EGINNING OF ARRAYS1090 T2=INT(ADR(DUMMY$)/256)1100 T1=ADR(DUMMY$)-T2*2561110 POKE 140,T1:POKE 141,T21120 CLR :REM CLEAR T}HE ARRAYS 1130 REM RESTORE POINTERS AND RETURN 1140 POKE 136,S136:POKE 137,S1371150 POKE 140,S140:POKE 141,S1411160 GOTO  }LINERAYS 1130 REM RESTORE POINTERS AND RETURN 1140 POKE 136,S136:POKE 137,S1371150 POKE 140,S140:POKE 141,S1411160 GOTO 10 REM MEMORY ANALYSIS UTILITY20 REM by W. A. Bell May 1981 30 REM * Englewood, Colorado *35 REM Ӡ͠ӠΠ"}ҠŠӺŠŠ40 DIM A$(100),B$(1),HEX$(16)50 HEX$="0123456789ABCDEF"60 TESTVAR1=999:TESTVAR2=123456:TE#}STVAR3=9876543270 PRINT CHR$(125)90 PRINT " ٠Ӡ"100 PRINT "ENTER S FOR DATA SEARCH"110 PRINT $}" D FOR MEMORY DUMP"120 PRINT " A FOR ADDRESS POINTER SEARCH"130 PRINT " E TO END"140 INPUT B$150 IF%} B$="S" THEN 210160 IF B$="D" THEN 770170 IF B$="A" THEN 630180 IF B$="E" THEN END 190 GOSUB 1270:GOTO 100210 PRINT "ENT&}ER C FOR CHARACTER DATA"220 PRINT " D FOR DECIMAL DATA "230 INPUT B$240 IF B$="C" THEN 360250 IF B$="D" THEN 270'}256 REM A DUMMY LINE260 GOSUB 1270:GOTO 210270 PRINT "ENTER DECIMAL DATA TO SEARCH FOR"280 PRINT "IN THE FORM D1,D2,...,D(}n"290 PRINT "END WITH A VALUE OF 999"300 ALENGTH=O310 INPUT I320 IF I>255 THEN 390330 ALENGTH=ALENGTH+1340 A$(ALENGTH,A)}LENGTH)=CHR$(I)350 GOTO 310360 PRINT "ENTER CHAR STRING TO SEARCH FOR"370 INPUT A$380 ALENGTH=LEN(A$)390 GOSUB 1200400 *}GOSUB 1170410 POKE 1408,0420 FOR I=0 TO 4000430 IF PEEK(I)<>ASC(A$(1,1)) THEN 590440 IF ALENGTH<2 THEN 490450 FOR K=2 TO+} ALENGTH460 IF PEEK(I+K-1)<>ASC(A$(K,K)) THEN 590470 NEXT K490 PRINT CHR$(125);"MATCH AT ADDRESS = ";I500 POSITION 28,0:P,}RINT CHR$(138);CHR$(136)510 PRINT "DUMP STARTS AT ";I-7520 FOR K=I-7 TO I+83 STEP 10530 GOSUB 920540 NEXT K550 PRINT "EN-}TER C TO CONTINUE SEARCH"560 PRINT " TO QUIT";570 INPUT B$580 IF B$<>"C" THEN 90590 NEXT I600 PRINT " .}DATA NOT FOUND "610 GOTO 90630 PRINT "ENTER ADDRESS POINTER TO SEARCH FOR"640 INPUT ADDRESS650 K=0:BYTE1=INT(ADDRESS/25/}6)660 BYTEO=ADDRESS-256*BYTE1670 GOSUB 1170680 FOR I=0 TO 4000690 IF PEEK(I)<>BYTE0 THEN 730700 IF PEEK(I+1)<>BYTE1 THEN0} 730710 PRINT "POINTER MATCH AT ";I;",";I+1720 PRINT "LOOKING FOR OTHERS"730 NEXT I740 PRINT "NONE FOUND"750 GOTO 907701} PRINT "ENTER STARTING ADDRESS FOR DUMP"780 INPUT ADDRESS790 GOSUB 1200800 PRINT CHR$(125);"DUMP STARTS AT ";ADDRESS810 F2}OR K=ADDRESS TO ADDRESS+90 STEP 10820 GOSUB 920830 NEXT K840 PRINT "ENTER C TO CONTINUE DUMP"850 PRINT " 3}TO QUIT";860 INPUT B$870 IF B$<>"C" THEN 90880 ADDRESS=ADDRESS+91890 GOTO 800900 END 920 IF DUMP=0 THEN PRINT "DEC ";:4}GOTO 940930 PRINT "HEX ";940 FOR J=0 TO 9950 DEC=PEEK(K+J)960 IF DUMP=O THEN 1020980 HEX1=INT(DEC/16):HEX0=DEC-16*HEX15}990 PRINT HEX$(HEX1+1,HEX1+1);HEX$(HEX0+1,HEX0+1);" ";1000 GOTO 10501020 IF DEC<10 THEN PRINT DEC;" ";:GOTO 10501030 IF D6}EC<100 THEN PRINT DEC;" ";:GOTO 10501040 PRINT DEC;1050 NEXT J1060 PRINT :PRINT "CHAR ";1070 FOR J=0 TO 91080 DEC=PEEK(K7}+J)1100 IF (DEC>26 AND DEC<32) OR (DEC>124 AND DEC<128) THEN PRINT " ";:GOTO 11301110 IF (DEC>154 AND DEC<160) OR DEC>2528} THEN PRINT " ";:GOTO 11301120 PRINT CHR$(DEC);" ";1130 NEXT J1140 PRINT 1150 RETURN 1170 PRINT " - this may9} take a while"1180 RETURN 1200 PRINT "ENTER H FOR HEX DUMP"1210 PRINT " D FOR DECIMAL DUMP"1220 INPUT B$1230 IF:} B$="H" THEN DUMP=1:RETURN 1240 IF B$="D" THEN DUMP=0:RETURN 1250 GOSUB 1270:GOTO 12001270 PRINT " ԠҠ "1}20000 REM BASIC LINE DUMP UTILITY 20100 REM by W. A. Bell May 198120200 REM " Englewood, Colorado 20300 CLR :DIM HEX$(16)<},Q$(1)20400 HEX$="0123456789ABCDEF"20500 LINEADR=PEEK(136)+256*PEEK(137)20600 PRINT "ENTER LINE NUMBER TO BE DUMPED";:INPU=}T LINENUM20700 THISLINE=PEEK(LINEADR)+256*PEEK(LINEADR+1)20800 IF THISLINE>LINENUM THEN PRINT "LINE DOESN'T EXIST - TRY ANO>}THER":GOTO 2050020900 IF THISLINE=LINENUM THEN 2130021000 LINEADR=LINEADR+PEEK(LINEADR+2)21100 GOTO 2070021300 PRINT CHR$?}(125);"LINE # ";THISLINE;" START ADDRESS = ";LINEADR21400 LIST LINENUM21500 Z=10:Y=5:MAXADR=LINEADR+PEEK(LINEADR+2)21600 I@}F LINEADR+Z>MAXADR THEN Z=MAXADR-LINEADR21700 FOR I=0 TO Z-121800 POSITION 2,Y21900 PRINT "DEC"22000 PRINT "HEX"22100 PRA}INT "CHAR"22400 Q=PEEK(LINEADR+I):X=3*I+822500 Q$=CHR$(Q)22600 HEX1=INT(Q/16):HEX0=Q-16*HEX122700 POSITION X,Y22800 PRINB}T Q22900 POSITION X,Y+123000 PRINT HEX$(HEX1+1,HEX1+1);HEX$(HEX0+1,HEX0+1)23100 POSITION X,Y+223200 PRINT Q$23300 NEXT IC}23400 LINEADR=LINEADR+Z:Y=Y+323500 IF Y<21 THEN 2390023600 PRINT "ENTER FOR NEXT PAGE";23700 INPUT Q$23800 PRINT D}CHR$(125);"DUMP CONTINUES AT ADDRESS ";23900 IF LINEADRASC(REFNAME$(I,I)) THEN 3209032055 NEXT I32070 REFADR=PEEK(134)+256*PEEK(135)+8*REFCOUNT32080 I}GOTO 3212032090 REFCOUNT=REFCOUNT+132095 IF REFCOUNT>127 THEN PRINT "̠͠":END 32100 REFADR=REFADR+132105 J}IF PEEK(REFADR-1)>127 THEN 3204532110 GOTO 3210032120 RESTORE 3212532125 DATA 10,12,23,24,13,4,35,27,1832130 FOR I=1 TO 9K}32135 READ X32140 OPCODE(I)=X32145 NEXT I32150 STARTADR=PEEK(136)+256*PEEK(137)32160 LINEADR=STARTADR:REFLINE=032165 OLL}DLINE=-1:LINECOUNT=032170 NULINE=PEEK(LINEADR)+256*PEEK(LINEADR+1)32175 IF NULINE>31999 THEN 3222032180 IF OLDLINE31999 THEN 3247032270 LINEEND=LINEADR+PEEK(LINEADR+2)32275 STMTSTART=LINEADR+432280 STMTEND=LINER}ADR+PEEK(LINEADR+3)32285 FOR I=STMTSTART TO STMTEND-132290 IF PEEK(I)<>14 THEN 3243032300 FOR J=1 TO 932305 IF PEEK(I-1)=S}OPCODE(J) THEN 3232532310 NEXT J32315 GOTO 3243032325 FOR K=1 TO 632330 POKE REFADR+K+1,PEEK(I+K)32335 NEXT K32340 PRINT}T "LINE ";NULINE;" REFERENCES LINE ";REFLINE32345 IF REFLINE<32000 AND REFLINE>-1 AND REFLINE=INT(REFLINE) THEN 3235532350 U}PRINT "ŠŠ":GOTO 3243032355 OLDADR=STARTADR:REFCOUNT=032360 OLDLINE=PEEK(OLDADR)+256*PEEK(OLDADR+1)32365 IV}F OLDLINE=REFLINE THEN 3241032370 IF OLDLINE>REFLINE THEN 3239032375 OLDADR=OLDADR+PEEK(OLDADR+2)32380 REFCOUNT=REFCOUNT+1W}32385 GOTO 3236032390 PRINT " - REFERENCED LINE DOESN'T EXIST"32395 LIST NULINE32400 GOTO 3243032410 REFLINE=BASE+IX}NCR*REFCOUNT32415 FOR K=1 TO 632420 POKE I+K,PEEK(REFADR+K+1)32425 NEXT K32430 NEXT I32435 STMTSTART=STMTEND+132440 IF Y}STMTSTART>LINEEND THEN 3245532445 STMTEND=LINEADR+PEEK(STMTEND)32450 GOTO 3228532455 LINEADR=LINEADR+PEEK(LINEADR+2)32460Z} GOTO 3226032470 LINEADR=STARTADR32475 FOR I=1 TO LINECOUNT32480 BASE1=INT(BASE/256):BASE0=BASE-256*BASE132485 POKE LINEA[}DR,BASE032490 POKE LINEADR+1,BASE132495 BASE=BASE+INCR32500 LINEADR=LINEADR+PEEK(LINEADR+2)32505 NEXT I32510 PRINT "*** \}RENUMBER COMPLETE ***":END 1,BASE132495 BASE=BASE+INCR32500 LINEADR=LINEADR+PEEK(LINEADR+2)32505 NEXT I32510 PRINT "*** 10 DIM T$(30)20 OPEN #1,12,0,"S:":REM OPEN FOR R/W30 FOR I=ASC("A") TO ASC("Z")40 PUT #1,I:NEXT I50 POSITION PEEK(82),06 ^}0 FOR I=1 TO 26:GET #1,CHARACTER70 T$(I,I)=CHR$(CHARACTER)80 NEXT I90 GET #1,I:REM MOVE THE CURSOR PAST THE Z100 CLOSE #1 _}110 PRINT :PRINT T$1,CHARACTER70 T$(I,I)=CHR$(CHARACTER)80 NEXT I90 GET #1,I:REM MOVE THE CURSOR PAST THE Z100 CLOSE #1 10 OPEN #1,8,0,"D:TEST.DAT"20 FOR I=ASC("A") TO ASC("Z")30 PUT #1,I:NEXT I40 CLOSE #150 OPEN #1,4,0,"D:TEST.DAT"60 FOR I$a}=1 TO 2670 GET #1,CHARACTER80 PRINT ;CHR$(CHARACTER);90 NEXT I100 CLOSE #1 CLOSE #150 OPEN #1,4,0,"D:TEST.DAT"60 FOR I$O10 DIM T$(80)20 OPEN #1,12,0,"E:"30 PRINT #1;"123,CHARACTERS"40 PRINT #1;CHR$(28);:REM AN UP-CURSOR50 INPUT #1,T$60 PRIN(c}T #1;CHR$(28);70 INPUT #1,NUMBER80 CLOSE #190 PRINT "T$=";T$100 PRINT "NUMBER=";NUMBER110 REM JUST HIT RETURN WHEN EACH(d}120 REM OF THE INPUT STATEMENTS130 REM EXECUTESPRINT "T$=";T$100 PRINT "NUMBER=";NUMBER110 REM JUST HIT RETURN WHEN EACH(110 DIM T$(10)20 T$="ABCDEFGH"30 OPEN #1,8,0,"D:TEST.DAT"40 PRINT #1;T$50 CLOSE #160 OPEN #1,4,0,"D:TEST.DAT"70 FOR I=0 ,f}TO 880 GET #1,A90 ? A,CHR$(A)100 NEXT I110 CLOSE #1T"40 PRINT #1;T$50 CLOSE #160 OPEN #1,4,0,"D:TEST.DAT"70 FOR I=0 ,810 DIM T$(10)20 T$="ABCDEFGHIJ"30 T$(5,5)=CHR$(155)40 OPEN #1,8,0,"E:"45 ? "PRINT DOES THIS"50 PRINT #1;T$55 ? :? "XIO 0h}DOES THIS"60 XIO 9,#1,8,0,T$70 CLOSE #1)=CHR$(155)40 OPEN #1,8,0,"E:"45 ? "PRINT DOES THIS"50 PRINT #1;T$55 ? :? "XIO 0*10 DIM D$(1),T$(4),T1$(4),T2$(10)20 OPEN #1,8,0,"D:TEST.DAT"30 XIO 9,#1,8,0," ABCDEFGHIJK"46 CLOSE #150 T1$="XXXXXXXXXX":4j}REM RESET T1$60 T1$="YYYYY":REM MAKE LENGTH 570 OPEN #1,4,0,"D:TEST.DAT"80 INPUT #1,T2$90 CLOSE #1100 ? "INPUT DOES THIS4k}"110 ? T2$,LEN(T2$)120 T2$="XXXXXXXXXX":REM RESET T2$130 T2$="YYYYY":REM MAKE LENGTH 5140 OPEN #1,4,0,"D:TEST.DAT"150 XI4l}O 5,#1,4,0,T2$160 CLOSE #1170 ? :? "XI05 DOES THIS"180 ? T2$,LEN(T2$)190 T2$(10,10)="Z"200 ? T2$,LEN(T2$)210 ? "NOTICE 4m}THE X ISN'T WRITTEN OVER"220 T$="XXXX":T1$="XXXX":T2$="XXX"230 OPEN #1,4,0,"D:TEST.DAT"240 XIO 5,#1,4,0,D$250 CLOSE #1264n}0 ? :? "OR XIO5 CAN DO THIS"270 ? T$:? T1$:? T2$:T2$="XXX"230 OPEN #1,4,0,"D:TEST.DAT"240 XIO 5,#1,4,0,D$250 CLOSE #1264210 DIM D$(1):REM DUMMY STRING15 REM FIND ADDRESS OF DISPLACEMENT20 ADDR=(PEEK(134)+PEEK(135)*256)+225 REM FIND BEGINNING O8p}F ARRAY STORAGE30 BOA=ADR(D$)40 DIM MARK1$(1),ARRAY1(80),X1$(23)45 REM WITH 6 BYTES/ARRAY NUMBERS46 REM THIS DIMENISIONS 8q}510 BYTES47 REM OR 2*25548 REM NOW FILL THE ARRAY50 FOR I=0 TO 80:ARRAY1(I)=I:NEXT I60 OPEN #1,8,0,"D:TEST.DAT"65 REM NO8r}W WRITE THE ARRAY IN 2 BLOCKS70 FOR N=0 TO 180 TMP=ADR(MARK1$)90 GOSUB 1000110 XIO 11,#1,8,0,D$120 NEXT N130 CLOSE #118s}40 DIM MARK2$(1),ARRAY2(80),X2$(23)150 OPEN #1,4,0,"D:TEST.DAT"155 REM NOW READ THE ARRAY160 FOR N=0 TO 1170 TMP=ADR(MARK8t}2$)180 GOSUB 1000190 XIO 7,#1,4,0,D$200 NEXT N210 CLOSE #1220 FOR I=0 TO 80 STEP 10230 ? ARRAY2(I)240 NEXT I250 END 8u}900 REM SUBROUTINE TO FIX THE905 REM DISPLACEMENT- N=BLOCK NUMBER1000 TMP=TMP-BOA+(N*255)1010 POKE ADDR,TMP-INT(TMP/256)*28v}561020 POKE ADDR+1,INT(TMP/256)1030 RETURN MENT- N=BLOCK NUMBER1000 TMP=TMP-BOA+(N*255)1010 POKE ADDR,TMP-INT(TMP/256)*28.0 REM Ӡ͠ӠŠǠ͛1 DIM SA$(4),EA$(4)10 GOSUB 1020020 PRINT "INPUT STARTING ADDRESS"127 THEN STOP 10380 IF NBYTE<-128 THEN STOP 10390 IF NBYTE<0 T<}HEN NBYTE=NBYTE+25610400 GOTO 1029010410 WORD$=CODE$(2,5):GOSUB 1010010420 IF NWORD=PC-ADR(DMY$) THEN RETURN 10430 STOP :<}REM ERROR20000 DATA 13720010 DATA .0000,4C,+0030,.JMP START20020 REM INCPNTR20030 DATA .0003,E6,D4,. INC PNTR20040 DAT<}A .0005,D0,=0009,.BNE @120050 DATA .0007,E6,D5,. INC PNTR+120060 REM @120070 DATA .0009,60,. RTS20080 REM PRBYTE2<}0090 DATA .000A,48,. PHA20100 DATA .000B,4A,. LSR A20110 DATA .000C,4A,. LSR A20120 DATA .000D,4A,. LS<}R A20130 DATA .000E,4A,. LSR A20140 DATA .000F,20,+0015,.JSR PRNYBLE20150 DATA .0012,68,. PLA20160 DATA .0013,2<}9,0F,. AND #$0F20170 REM PRBYTE20180 DATA .0015,C9,0A,. CMP #$0A20190 DATA .0017,30,=001B,.BMI @220200 DATA .0019,69,<}06,. ADC #$0620210 REM @220220 DATA .001B,69,30,. ADC #$3020230 DATA .001D,20,*F6A4,.JSR OUTCHR20240 DATA .0020,60,. <} RTS20250 REM TSTPNTR20260 DATA .0021,38,. SEC20270 DATA .0022,AD,+002D,.LDA EA20280 DATA .0025,E5,D4,. SBC PN<}TR20290 DATA .0027,AD,+002E,.LDA EA+120300 DATA .002A,E5,D5,. SBC PNTR+120310 DATA .002C,60,. RTS20320 REM EA2033<}0 DATA .002D,00,00,. .W0RD20340 REM COUNT20350 DATA .002F,00,. .BYTE20360 REM START20370 DATA .0030,68,. PLA<}20380 DATA .0031,F0,=0009,.BEQ @120390 DATA .0033,C9,02,. CMP #$0220400 DATA .0035,F0,=003E,.BEQ CONTINUE20410 DATA .003<}7,AA,. TAX20420 REM @320430 DATA .0038,68,. PLA20440 DATA .0039,68,. PLA20450 DATA .003A,CA,. DEX204<}60 DATA .003B,D0,=0038,.BNE @320465 DATA .003D,60,. RTS20470 REM CONTINUE20480 DATA .003E,68,. PLA20490 DATA .0<}03F,85,D5,. STA PNTR+120500 DATA .0041,68,. PLA20510 DATA .0042,85,D4,. STA PNTR20520 DATA .0044,68,. PLA20<}530 DATA .0045,8D,+002E,.STA EA+120540 DATA .0048,68,. PLA20550 DATA .0049,8D,+002D,.STA EA20560 REM DUMP20570 DATA <}.004C,A9,9B,. LDA #EOL20580 DATA .004E,20,*F6A4,.JSR OUTCHR20590 DATA .0051,A9,24,. LDA #'$20600 DATA .0053,20,*F6A4,.<}JSR OUTCHR20610 DATA .0056,A5,D5,. LDA PNTR+120620 DATA .0058,20,+000A,.JSR PRBYTE20630 DATA .005B,A5,D4,. LDA PNTR20<}640 DATA .005D,20,+000A,.JSR PRBYTE20650 DATA .0060,A9,20,. LDA #'20660 DATA .0062,20,*F6A4,.JSR OUTCHR20670 DATA .0065,<}A9,08,. LDA #$0820680 DATA .0067,8D,+002F,.STA COUNT20690 REM LOOP20700 DATA .006A,A9,20,. LDA #'20710 DATA .006C,20,<}*F6A4,.JSR OUTCHR20720 DATA .006F,A0,00,. LDY #$0020730 DATA .0071,B1,D4,. LDA (PNTR)Y20740 DATA .0073,20,+000A,.JSR P<}RBYTE20750 DATA .0076,20,+0003,.JSR INCPNTR20760 DATA .0079,CE,+002F,.DEC COUNT20770 DATA .007C,D0,=0069,.BNE LOOP20780 D<}ATA .007E,20,+0021,.JSR TSTPNTR20790 DATA .0081,10,=004B,.BPL DUMP20800 DATA .0083,A9,9B,. LDA #EOL20810 DATA .0085,20,*<}F6A4,.JSR OUTCHR20820 DATA .0088,60,. RTS20830 DATA !0089MP20800 DATA .0083,A9,9B,. LDA #EOL20810 DATA .0085,20,*<A10 REM ** SHADING DEMO20 GRAPHICS 2330 OPEN #1,4,0,"K:"40 FOR I=0 TO 4:SETCOLOR I,9,4:NEXT I50 X0=48:Y0=3660 COLOR 170 @}FOR I=0 TO 4080 PLOT X0,Y0+I:DRAWTO X0+40,Y0+I90 NEXT I100 COLOR 2110 FOR I=1 TO 24120 PLOT X0+I,Y0-I:DRAWTO X0+I+40,Y0-@}I130 NEXT I140 COLOR 3150 FOR I=1 TO 24160 PLOT X0+40+I,Y0-I:DRAWTO X0+40+I,Y0+40-I170 NEXT I180 FOR I=0 TO 2190 GET #@}1,A200 IF A<48 THEN A=48210 SETCOLOR I,1,2*(A-48)220 NEXT I230 GOTO 1800+I,Y0+40-I170 NEXT I180 FOR I=0 TO 2190 GET #@L10 REM THE FLUID BRUSH 20 REM 30 REM 40 REM GO SET UP CONDITI0NS50 REM 60 GOSUB 1000120 REM 140 REM 150 COLOR 4:PLOT D}X,Y160 S=100*STRIG(0)170 FOR I=1 TO 5:NEXT I180 COLOR R:PLOT X,Y190 REM 200 IF S=0 THEN COLOR 4:PLOT X,Y:COLOR R220 REMD} 230 REM MOVE DOT IF JOYSTICK MOVED240 REM 250 J=STICK(0)260 Y=Y+YD(J)270 X=X+XD(J)280 TRAP 3000290 PLOT X,Y300 IF PED}EK(764)<>255 THEN GOSUB 4000310 GOTO 150970 REM 980 REM SET UP CONDITIONS 990 REM 1000 GRAPHICS 71010 X=901020 Y=4810D}30 C=01040 L=101050 R=11060 SETCOLOR R-1,C,L1070 COLOR 11080 PLOT X,Y1090 OPEN #1,4,0,"K:"1100 DIM XD(15),YD(15)1110 D}FOR I=1 TO 151120 READ N:XD(I)=N1130 READ N:YD(I)=N1140 NEXT I1150 RETURN 2000 DATA 0,0,0,0,0,0,0,02010 DATA 1,1,1,-1,1D},0,0,02020 DATA -1,1,-1,-1,-1,0,0,02030 DATA 0,1,0,-1,0,02970 REM 2980 REM CATCH MOTION OFF THE SCREEN 2990 REM 3000 Y=D}Y+(Y<0)-(Y>79)3010 X=X+(X<0)-(X>159)3020 GOTO 2803970 REM 3980 REM CHANGE COLOR 3990 REM 4000 GET #1,R4010 IF (R<49)+(D}R>51) THEN 40004020 R=R-484030 COLOR R4040 POKE 656,24050 PRINT "COLOR <-<-<-<-"4060 INPUT C4070 SETCOLOR R-1,C,L40D}80 RETURN 40004020 R=R-484030 COLOR R4040 POKE 656,24050 PRINT "COLOR <-<-<-<-"4060 INPUT C4070 SETCOLOR R-1,C,L40D 100 DEG 110 GRAPHICS 7120 DX=INT(RND(1)*80)130 DY=INT(RND(1)*40)140 FOR L=0 TO 360 STEP (140-DX-DY)/20145 COLOR INT(RND(H}1)*5)150 PLOT 80,40160 DRAWTO 80+DX*SIN(L),40+DY*COS(L)170 IF RND(1)>0.3 THEN 190180 SETCOLOR INT(RND(1)*4),INT(RND(1)*16H}),INT(RND(1)*8)*2190 NEXT L200 GOTO 120210 SETCOLOR I,1,2*(A-48)220 NEXT I230 GOTO 180COLOR INT(RND(1)*4),INT(RND(1)*16H\0 REM MOVING MESSAGE PROGRAM FOR THE ATARI1 PRINT "}":REM CLEAR SCREEN BEFORE GOING ON2 REM Dimension strings10 DIM X$(100L}0),B$(1),W$(20),P$(20),Y$(20),Z$(20)15 W$="* * * * * * * * * * ":REM ^^ BORDER16 Y$=W$19 REM Clear strings and set B$=bL}lank for clearing the remainder of X$20 X$="":B$=" "24 REM Input your text here25 ? :? "Enter your message";:INPUT X$29 RL}EM CLEAR THE REST OF X$ IF SHORTER THAN SCREEN WIDTH(19)30 IF LEN(X$)<20 THEN FOR C=1 TO 20-LEN(X$):X$(LEN(X$)+1)=B$:NEXT C:L}X$(LEN(X$)+1)=B$35 DIM A$(LEN(X$)),C$(LEN(X$)):A$=X$39 REM GOTO GRAPHICS MODE 2+16 AND PRINT STRINGS40 GRAPHICS 1844 TRAPL} 4645 REM Move borders of stars46 POSITION 0,3:? #6;Y$(1):P$=W$(2):P$(LEN(P$)+1)=W$:W$=P$47 POSITION 0,7:? #6;Y$(1):Z$=Y$(L}2):Z$(LEN(Z$)+1)=Y$:Y$=Z$49 REM Move message string and check location 764 to see if a key was struck50 POSITION 0,5L}:? #6;A$(1,20):C$=A$(2):C$(LEN(C$)+1)=A$:A$=C$:K=PEEK(764)54 REM Pause to increasa readability,set color randomly, and resetL} attract flag55 FOR TI=1 TO 50:NEXT TI:POKE 77,0:SETCOLOR INT(RND(0)*4),INT(RND(0)*15),8:IF K=255 THEN 46domly, and resetLm10 GRAPHICS 5+1620 ADDR=PEEK(560)+PEEK(561)*25630 ADDR=PEEK(ADDR+4)+PEEK(ADDR+5)*25640 B=INT(RND(0)*800):REM - PICK A RANDT}10 SETCOLOR 2,0,0:X=120:Y=48:REM ^^ set background color and player position ^^20 A=PEEK(106)-8:POKE 54279,A:PMBASE=256*A:REP}M ^^ Set player-missile address ^^30 POKE 559,46:POKE 53277,3:REM ^^Enable PM graphics with 2-line resolution ^^40 POKE 532P}48,X:REM ^^ Set horizontal position ^^50 FOR I=PMBASE+512 TO PMBASE+640:POKE I,0:NEXT I:REM ^^ Clear out player first ^^60 P}POKE 704,216:REM ^Set color to screen ^^70 FOR I=PMBASE+512+Y TO PMBASE+516+Y:READ A:POKE I,A:NEXT I:REM ^^ Draw player ^^8P}0 DATA 153,189,255,189,15390 REM ^^ Now comes the motion routine ^^100 A=STICK(0):IF A=15 THEN GOTO 100110 IF A=11 THEN X=P}X-1:POKE 53248,X120 IF A=7 THEN X=X+1:POKE 53248,X130 IF A=13 THEN FOR I=6 TO 0 STEP -1:POKE PMBASE+512+Y+I,PEEK(PMBASE+511P}+Y+I):NEXT I:Y=Y+1140 IF A=14 THEN FOR I=0 TO 6:POKE PMBASE+511+Y+I,PEEK(PMBASE+512+Y+I):NEXT I:Y=Y-1150 GOTO 100MBASE+511PtOM BYTE IN DISPLAY50 A=INT(RND(0)*255):REM - PICK RANDOM VALUE BETWEEN 0 AND 25560 POKE ADDR+B,A:REM - POKE RANDOM VALUE INT}TO RANDOM BYTE70 GOTO 40T(RND(0)*255):REM - PICK RANDOM VALUE BETWEEN 0 AND 25560 POKE ADDR+B,A:REM - POKE RANDOM VALUE INT0 REM SOUND PROGRAM BY JERRY WHITE 8/18/801 GRAPHICS 0:DIM X$(1),BL$(20):BL$=" "3 ? :? "PITCH=ANY NOMBER FRl}10 GRAPHICS 2320 ADDR=PEEK(560)+PEEK(561)*25630 ADDR=PEEK(ADDR+4)+PEEK(ADDR+5)*25635 I=INT(RND(0)*16)36 J=INT(RND(0)*16)X}37 K=INT(RND(0)*5)38 SETCOLOR K,J,I40 B=INT(RND(0)*3840):REM - PICK A RANDOM BYTE IN DISPLAY50 A=INT(RND(0)*255):REM - PIX}CK RANDOM VALUE BETWEEN 0 AND 25560 POKE ADDR+B,A:REM - POKE RANDOM VALUE INTO RANDOM BYTE70 GOTO 35(RND(0)*255):REM - PIXh10 GRAPHICS 720 ADDR=PEEK(560)+PEEK(561)*25630 ADDR=PEEK(ADDR+4)+PEEK(ADDR+5)*25635 I=INT(RND(0)*16)36 J=INT(RND(0)*16)3\}7 K=INT(RND(0)*5)38 SETCOLOR K,J,I40 B=INT(RND(0)*3840):REM - PICK A RANDOM BYTE IN DISPLAY50 A=INT(RND(0)*255):REM - PIC\}K RANDOM VALUE BETWEEN 0 AND 25560 POKE ADDR+B,A:REM - POKE RANDOM VALUE INTO RANDOM BYTE70 GOTO 35T(RND(0)*255):REM - PIC\f10 GRAPHICS 120 BEGIN=PEEK(560)+PEEK(561)*256+425 POKE BEGIN-1,7130 POKE BEGIN+2,7:POKE BEGIN+3,740 FOR ROW=6 TO 21:POKE `}BEGIN+ROW,8:NEXT ROW50 POKE BEGIN+22,65:POKE BEGIN+23,PEEK(560):POKE BEGIN+24,PEEK(561)60 SETCOLOR 4,4,2:REM BACKGROUND70 `}POKE 87,2:POSITION 6,0:PRINT #6;"THIS IS":POSITION 3,1:PRINT #6;"GRAPHICS MODE":POSITION 8,2:PRINT #6;"TWO"80 POKE 87,1:POSI`}TION 6,3:PRINT #6;"this is":POSITION 1,4:PRINT #6;"graphics mode one"90 POKE 87,3:COLOR 3:FOR LINE=1 TO 3:PLOT 15,LINE*5+8:D`}RAWTO 22,LINE*5+8:NEXT LINE:PLOT 22,13:DRAWTO 22,23100 GOTO 100:REM KEEP GRAPHICS ON SCREEN LINE=1 TO 3:PLOT 15,LINE*5+8:D`^10 REM PROGRAM TO PLOT POLAR FUNCTIONS20 REM BY HENRIQUE VELUDO FOR ATARI 80080 DIM A$(1)90 ? "}"100 POSITION 7,1:? "GRAPd}HS OF POLAR FUNCTIONS"110 POSITION 2,3:? "FUNCTION MENU:":? 120 ? " 1)R=B*Q SPIRAL"130 ? " 2)R=A*(1+COd}S(Q)) CARDIOID"140 ? " 3)R=A*(1-SIN(Q))"150 ? " 4)R=A*SIN(B*Q) ROSE"160 ? " 5)R=A*COS(B*Q)"170 ? " d} 6)R=COS(A*SIN(B*Q))"180 ? " 7)R=SIN(A*COS(B*Q))"190 ? " 8)R=A POLYGON"200 ? :? :? "INPUT:":? 210 d}? "FUNCTION #,A,B,INC.,SC.";:INPUT N,A,B,INCR,SC220 IF N=0 THEN N=1222 IF N=1 THEN U=4224 IF A=0 THEN A=1226 IF B=0 THEN d}B=1230 ? :? :? "DO YOU WANT THE X-Y AXES DISPLAYED";240 INPUT A$:IF A$(1,1)="Y" THEN W=1300 COLOR 1:GRAPHICS 24310 I=INT(d}RND(1)*16)320 L1=INT(RND(1)*8)*2330 L2=INT(RND(1)*8)*2340 IF ABS(LI-L2)<4 THEN 320350 SETCOLOR 4,I,L1360 SETCOLOR 2,I,L1d}370 SETCOLOR 1,I,L2380 IF W<>1 THEN 410:REM DISPLAY AXES?390 FOR I=0 TO 319 STEP 4:PLOT I,96:NEXT I395 FOR I=0 TO 191 STEd}P 3:PLOT 160,I:NEXT I400 REM PLOTTING CALCULATION410 FOR T=0 TO 360*U STEP INCR420 Q=T/57.3430 ON N GOTO 510,520,530,540,d}550,560,570,580500 REM EQUATIONS FOR R510 R=B*Q:GOTO 610520 R=A*(1+COS(Q)):GOTO 610530 R=A*(1-SIN(Q)):GOTO 610540 R=A*SId}N(B*Q):GOTO 610550 R=A*COS(B*Q):GOTO 610560 R=COS(A*SIN(B*Q)):GOTO 610570 R=SIN(A*COS(B*Q)):GOTO 610580 R=A:GOTO 610600 d}REM PLOTTING X,Y610 X=INT((R*COS(Q))*SC)620 Y=INT((R*SIN(Q))*SC)630 IF ABS(X)>159 OR ABS(Y)>95 THEN 670640 IF T=0 THEN PLd}OT 160+X,96-Y650 DRAWTO 160+X,96-Y660 NEXT T670 FOR I=1 TO 75:POKE 53279,0:NEXT I675 W=O680 U=1:OPEN #1,4,0,"K:":GET #1,d}X:CLOSE #1690 PUT #6,125:GOTO 90Y660 NEXT T670 FOR I=1 TO 75:POKE 53279,0:NEXT I675 W=O680 U=1:OPEN #1,4,0,"K:":GET #1,d"10 OPEN #1,4,0,"K:"20 DIM CHAR$(1):SETCOLOR 2,8,2:SETCOLOR 4,8,230 PRINT "}"40 POKE 752,150 GOSUB 500060 IF CHAR=0 THEN h}5070 POSITION 5,580 PRINT "CHARACTER=(";CHAR$;")"90 GOTO 504999 END 5000 CHAR=05010 IF PEEK(764)<>255 THEN GET #1,CHAR:h}CHAR$=CHR$(CHAR)5020 RETURN HARACTER=(";CHAR$;")"90 GOTO 504999 END 5000 CHAR=05010 IF PEEK(764)<>255 THEN GET #1,CHAR:hOM 0 THRU 255.":? "WE WILL MOVE THE PITCH IN LOOP 2."4 ? :? "L1=0UTER LOOP 1 VOLUME.":? "TYPE ANY NUMBER FROM 0 THRU 15 AT Pl}ROMPT FOR M, TO, AND STEP."5 ? :? "L2=INNER LOOP 2 PITCH.":? "TYPE ANY NUMBER FROM 0 TO 255":? "AT PROMPT FROM, TO, AND STEPl}."7 ? :? "HIT TO BEGIN";:INPUT X$10 GRAPHICS 0:? :? " Ġ"12 POKE 752,1:C=RND(0)*16:REPEAT=014 SETCOLOR 1,l}C,2:SETCOLOR 2,C,8:SETCOLOR 4,C,230 POSITION 2,3:? "TYPE DIST ";:TRAP 34:INPUT D:TRAP 4000032 IF D=0 OR D=2 OR D=4 OR D=l}8 OR D=10 OR D=12 OR D=14 THEN 3634 POSITION 2,3:? BL$:GOTO 3036 POSITION 2,5:? "TYPE PITCH ";:TRAP 40:INPUT P:TRAP 4000l}038 IF P<255 THEN 4240 POSITION 2,5:? BL$:GOTO 3642 POSITION 2,7:? "TYPE L1 FROM ";:TRAP 46:INPUT F1:TRAP 4000044 IF F10 THEN GOSUB 5000:GOTO 400120 GOSUB 5000:SOUND 0,0,0,0:? CHR$(125)130 ? :? " ҠĠź "140 ? :? "100l} FOR L1=";F1;" TO ";T1;" STEP ";S1160 ? "110 FOR L2=";F2;" TO ";T2;" STEP ";S2180 ? "120 SOUND 0,";P;"-L2,";D;",L1"200 ? "l}130 NEXT L2":? "140 NEXT L1":? "150 RETURN"280 FOR DELAY=1 TO 500:NEXT DELAY300 FOR TIME=1 TO 5:POSITION 2,20:? " HIT STARl}T TO RESTART":? " HIT OPTION TO REPEAT "320 FOR DELAY=1 TO 10:NEXT DELAY340 POSITION 2,20:? " HIT TO RESTART":? " l}HIT TO REPEAT "360 FOR DELAY=1 TO 10:NEXT DELAY380 NEXT TIME400 SOUND 0,0,0,0410 IF PEEK(53279)=6 THEN 10420 IF Pl}EEK(53279)=3 THEN 500440 GOTO 410500 REPEAT=REPEAT+1:GOTO 1005000 FOR L1=F1 TO T1 STEP S15100 FOR L2=F2 TO T2 STEP S2520l}0 TRAP 6000:SOUND 0,P-L2,D,L1:TRAP 400005300 NEXT L2:NEXT L1:RETURN 6000 ? :? " ĠĬ٠ή ":SOUND 0,0,l}0,06100 FOR DELAY=1 TO 250:NEXT DELAY6110 GOTO 102:NEXT L1:RETURN 6000 ? :? " ĠĬ٠ή ":SOUND 0,0,l40 REM MONGRAPH REV.2 JERRY WHITE1 REM FOR COMPUTE TUTORIAL2 DIM A$(20),AMT(12),JW(12):GOSUB 20004 GRAPHICS 6:SETCOLOR 2,4,(}10 REM TWO ENTRY MENU SELECT20 REM FROM JOYSTICK30 XY=5:YY=10:XN=34:YN=10:PLAYER=140 DIM A$(1)45 POKE 752,1:REM CURSOR OFp}F50 SETCOLOR 2,8,2:SETCOLOR 4,8,2:PRINT "}"60 A$="Y"70 XA=13:YA=12:XB=20:YB=14110 POSITION XY,YY120 PRINT "";130 POSp}ITION XN,YN140 PRINT "NO";180 IF STICK(PLAYER-1)<>11 THEN 280190 A$="Y"200 POSITION XY,YY210 PRINT "";220 POSITION Xp}N,YN230 PRINT "NO";240 GOTO 180280 IF STICK(PLAYER-1)<>7 THEN 380290 A$="N"300 POSITION XY,YY310 PRINT "YES";320 POSITp}ION XN,YN330 PRINT "";340 GOTO 180380 IF STRIG(PLAYER-1) THEN 180390 POSITION XA,YA400 PRINT " "410 POSIp}TION XB,YB420 PRINT A$430 GOTO 1800380 IF STRIG(PLAYER-1) THEN 180390 POSITION XA,YA400 PRINT " "410 POSIp%10 DIM A$(1):C1=120 XY=12:YY=18:XN=24:YN=18:PLAYER=1:XE=1095 GRAPHICS 0:SETCOLOR 2,8,2:SETCOLOR 4,8,2130 POSITION XY,XE:PRt}INT "DO YOU LOVE ME?"150 GOSUB 1000190 POSITION XE-7,XN-2200 IF A$="Y" THEN PRINT " SHUCKS, I LOVE YOU TOO."210 IF A$t}="N" THEN PRINT "WELL, I LOVE YOU ANYWAY. (SNIFFLE)"220 FOR DELAY=1 TO 1000:NEXT DELAY240 GOTO 951000 POKE 752,C1:A$="Y"1t}010 POSITION XY,YY:? "";:POSITION XN,YN:? "NO";1020 IF STICK(PLAYER-C1)=11 THEN 10001030 IF STICK(PLAYER-C1)=7 THEN A$="t}N":POSITION XY,YY:? "YES";:POSITION XN,YN:? "";:GOTO 10201040 IF STRIG(PLAYER-C1) THEN 10201050 RETURN R-C1)=7 THEN A$="tl10 REM ... NUMBER SELECT ...20 REM FROM JOYSTICK30 REM 40 REM 43 REM TURN OFF CURSOR45 POKE 752,147 REM 50 REM DEFAULTx} ANSWER:60 A=1070 REM 80 REM DISPLAY NUMBER90 REM X,Y IS THE POSITION OF NUMBER105 REM 110 POSITION X,Y120 PRINT A;" "x};130 FOR SND=0 TO 15135 SOUND 0,100-A,10,15-SND140 NEXT SND150 REM 160 REM SCAN JOYSTICK FOR SUBTRACT165 REM DON'T GO Bx}ELOW LOW LIMIT170 REM 180 IF STICK(PLAYER-1)<>11 THEN 280185 IF A=LOW THEN 180190 A=A-1240 GOTO 110250 REM 260 REM SCx}AN JOYSTICK FOR NO265 REM DON'T GO ABOVE HIGH LIMIT270 REM 280 IF STICK(PLAYER-1)<>7 THEN 380285 IF A=HIGH THEN 180290 x}A=A+1340 GOTO 110350 REM 360 REM SCAN TRIGGER FOR CHOICE370 REM 380 IF STRIG(PLAYER-1) THEN 180390 REM 400 REM WE HAVEy} ANSWER410 REM 420 PRINT A60 REM SCAN TRIGGER FOR CHOICE370 REM 380 IF STRIG(PLAYER-1) THEN 180390 REM 400 REM WE HAVEx1 REM GUESS A NUMBER2 REM 3 REM 5 REM SET UP JOYSTICK DATA7 A=1010 LOW=120 HIGH=2021 X=1722 Y=1223 PLAYER=127 REM }}28 REM PLAY THE GAME30 GRAPHICS 040 POSITION 2,550 ? "I AM THINKING OF A NUMBER BETWEEN"60 ? LOW;" AND ";HIGH;". ";70 ?}} "WHAT IS YOU GUESS:"80 GUESS=INT(RND(0)*20)+182 REM 84 REM GET THE PLAYER'S ANSWER86 REM 90 GOSUB 1000100 POSITION 14,}}20110 IF A=GUESS THEN 200112 REM 114 REM WRONG GUESS116 REM 117 SOUND 0,200,10,15118 FOR I=1 TO 50:NEXT I119 SOUND 0,0}},0,0120 IF AGUESS THEN ? "TRY LOWER "140 GOTO 90170 REM 180 REM CORRECT GUESS190 REM}} 200 ? "ՠԠ"210 FOR I=1 TO 500:NEXT I220 GOTO 30970 REM JOYSTICK NUMBER SELECT980 REM (DISCUSSED LAST ISSUE)990 }}REM 1000 POKE 752,11010 POSITION X,Y:? A;" ";:FOR SND=0 TO 15:SOUND 0,100-A,10,15-SND:NEXT SND1020 IF (STICK(PLAYER-1)=11)}}*(A>LOW) THEN A=A-1:GOTO 10101030 IF (STICK(PLAYER-1)=7)*(AHAMT THEN HAMT=AMT(MON)110 NEXT MON120 J1=HAM,}T/65130 FOR MON=Z TO 12:TAMT=75-(AMT(MON)/J1):JW(MON)=INT(TAMT):NEXT MON140 IF HAMT>=10000 THEN K=INT(HAMT/1000):GOTO 2001-}50 IF HAMT>=1000 THEN K=INT(HAMT/100):GOTO 200160 IF HAMT>=100 THEN K=INT(HAMT/10):GOTO 200170 K=INT(HAMT)200 KD=K/5:K2=IN.}T(K-KD):K3=INT(K-(KD*2))220 K4=INT(K-(KD*3)):K5=INT(K-(KD*4))222 A$=STR$(K):PX=2-LEN(A$):PY=10:GOSUB 20224 IF K<5 OR K>99 /}THEN 280240 A$=STR$(K2):PX=2-LEN(A$):PY=24:GOSUB 20250 A$=STR$(K3):PX=2-LEN(A$):PY=38:GOSUB 20260 A$=STR$(K4):PX=2-LEN(A$)0}:PY=52:GOSUB 20270 A$=STR$(K5):PX=2-LEN(A$):PY=66:GOSUB 20280 POKE 82,0:POKE 83,40:POKE 752,Z300 ? :? " K J F M A M 1} J J A S O N D"302 ? " E A E A P A U U U E C O E"304 ? " Y N B R R Y N L G P T V C"310 FOR2} MON=Z TO 12:JY=MON-Z312 PLOT 18+(JY*12),JW(MON)314 DRAWTO 25+(JY*12),JW(MON)320 DRAWTO 25+(JY*12),75330 DRAWTO 18+(JY*123}),75340 POSITION 18+(JY*12),JW(MON)350 POKE 765,3:XIO 18,#6,0,0,"S:"360 FOR VOL=10 TO 0 STEP -1:SOUND 0,JW(MON),10,VOL:NEX4}T VOL:NEXT MON400 POKE 82,2:POKE 83,39500 GOTO 5002000 GRAPHICS 0:SETCOLOR 2,0,0:SETCOLOR 1,0,10:SETCOLOR 4,0,0:POKE 752,15}2080 ? :? ," MONTHLY GRAPH "2100 ? :? " TYPE AMOUNTS FOR EACH MONTH: ":? 2120 ? " DO NOT USE NEGATIVE AMOUNTS ":? 226}00 TRAP 2200:? ,"JAN=";:INPUT JAN:AMT(1)=JAN:TRAP 400002210 TRAP 2210:? ,"FEB=";:INPUT FEB:AMT(2)=FEB:TRAP 400002220 TRAP 27}220:? ,"MAR=";:INPUT MAR:AMT(3)=MAR:TRAP 400002230 TRAP 2230:? ,"APR=";:INPUT APR:AMT(4)=APR:TRAP 400002240 TRAP 2240:? ,"M8}AY=";:INPUT MAY:AMT(5)=MAY:TRAP 400002250 TRAP 2250:? ,"JUN=";:INPUT JUN:AMT(6)=JUN:TRAP 400002260 TRAP 2260:? ,"JUL=";:INP9}UT JUL:AMT(7)=JUL:TRAP 400002270 TRAP 2270:? ,"AUG=";:INPUT AUG:AMT(8)=AUG:TRAP 400002280 TRAP 2280:? ,"SEP=";:INPUT SEP:AM:}T(9)=SEP:TRAP 400002290 TRAP 2290:? ,"OCT=";:INPUT OCT:AMT(10)=OCT:TRAP 400002300 TRAP 2300:? ,"NOV=";:INPUT NOV:AMT(11)=NO;}V:TRAP 400002310 TRAP 2310:? ,"DEC=";:INPUT DEC:AMT(12)=DEC:TRAP 400002400 RETURN RAP 2300:? ,"NOV=";:INPUT NOV:AMT(11)=NOU5 REM TIMING BY JOHN VICTOR6 REM FOR ATARI COMPUTER VOICE TRACK10 DIM TIME(15),A$(1)20 POKE 54018,52:REM TURN ON CASSETTE=}30 GRAPHICS 0:POSITION 2,635 PRINT "START COUNTING..."40 FOR COUNT=1 TO 15:SETCOLOR 2,INT(RND(1)*15),450 POKE 19,0:POKE 20>},055 IF PEEK(764)<>12 THEN 5560 JIFFY=256*PEEK(19)+PEEK(20):TIME(COUNT)=JIFFY:PRINT "CHANGE #";COUNT73 POKE 764,25575 NEX?}T COUNT78 POKE 54018,60:REM SHUT OFF CASSETTE80 PRINT :PRINT "PRESS RETURN TO SEE TIME VALUES IN JIFFIES"90 INPUT A$100 F@}OR COUNT=1 TO 15:PRINT "CHANGE #";COUNT;"=";TIME(COUNT):NEXT COUNT200 END TO SEE TIME VALUES IN JIFFIES"90 INPUT A$100 FL10 REM DEMONSTRATION OF ATARI TIMING20 REM FOR TUTORIALS USING VOICE AND30 REM TIMING LOOPS40 REM PROGRAM DESIGN, INC.50 B}CLOCK=5000:QUESTIONASK=4000:QUESTIONANSWER=3000:REM SUBROUTINE LABELS AND LOCATIONS60 DIM ANSWER$(10),RESPONSE$(10),LINE$(40C})100 GRAPHICS 2+16:POSITION 0,2:? #6;" BASIC TUTORIAL":? #6;" DEMONSTRATION":? #6105 ? #6;" with voice"110 TIME=30D}0:GOSUB CLOCK200 GRAPHICS 0:? :? 205 ? "This is a demonstration of the ATARI":? "computer's ability to utilize a"206 ? "soE}und-voice track. I will ask four":? "sample questions about ATARI BASCI.":? 207 ? "Place audio cassette in player and":? "reF}wind to beginning.":? 210 ? "Befor starting this demonstration,"215 ? "make sure that the PLAY button is"220 ? "pressed doG}wn on your cassette player."230 ? :? :? "PRESS TO START.":INPUT RESPONSE$300 GOSUB QUESTIONASK:TIME=1274:GOSUB CLOCKH}:GOSUB QUESTIONANSWER310 GOSUB QUESTIONASK:TIME=681:GOSUB CLOCK:GOSUB QUESTIONANSWER320 GOSUB QUESTIONASK:TIME=683:GOSUB CLI}OCK:GOSUB QUESTIONANSWER330 GOSUB QUESTIONASK:TIME=800:GOSUB CLOCK:GOSUB QUESTIONANSWER340 GOSUB QUESTIONASK:TIME=653:GOSUBJ} CLOCK:GOSUB QUESTIONANSWER400 GRAPHICS 1:SETCOLOR 2,0,14:SETCOLOR 4,0,14:POSITION 0,8:? #6;" END OF DEMO ":TIME=392:GOSUK}B CLOCK410 POKE 54018,60:REM SHUT OFF CASSETTE500 GRAPHICS 0:END 2999 REM ANSWERING SUBROUTINE3000 POKE 54018,60:REM SHUTL} OFF CASSETTE3010 ? :? "YOUR ANSWER IS ";:INPUT RESPONSE$3020 IF RESPONSE$=ANSWER$ THEN ? CHR$(253):? :? "CORRECT!":GOTO 31M}003040 ? :? "NO, THE ANSWER IS ";ANSWER$3100 ? :? "PRESS TO CONTINUE...";:INPUT RESPONSE$3110 POKE 54018,52:REM TurN}n cassette back on3120 RETURN 3999 REM Question subroutine4000 GRAPHICS 0:READ NUMBER,COLOR,LINES,ANSWER$4010 SETCOLOR 2,O}COLOR,4:? :? :? "QUESTION #";NUMBER:? :? 4020 FOR COUNT=1 TO LINES:READ LINE$:? LINE$:NEXT COUNT4030 RETURN 4999 REM TIMINP}G LOOP5000 POKE 19,0:POKE 20,0:REM SETS CLOCK TO 05010 IF PEEK(19)*256+PEEK(20)