8(;F=OF SYSMOC.I   c}E q0 \C)CC8`DCeECiD` RP h1$E ȍ @y b Y)hܭ]L]` q  DMD   u j)`0  ,p0i2 &28jJ1f02 9 g iJf0i1)xԍӭ232002XԦ`  *'  } *(L `(  L l pL[,L] C i0 } p  gފދLh ( LD 0  C  C  \i +$+0'}; $(%)  b L[C `D P^߰")(݃   $DD}G@НL]S")M T H0 G$Ș݃ b 8$}$%8(() T `$E0(0)8`$GE` P} Li 8GD }L[ PH >iJ ;  yyB } ' |L[ "E( % H$ H#`L]B  0 G LO<  ( d lH۪!A3 A }jA !B EIC Y$E0 F  < 7 JN8Ndâ!,P h0ʠJd,6 } ' r/ $ ɛ ` '  L[  l }-     }    L[L  }  '  L[   p  ` g  l }) g ' }L[) ̠,L]T-0 |LM N݃:ː6UV LM N L(TU N,)M}LL[IL3GDIɛ ɜ DI  , JȊGм  G I) GȦ=}*GG ȄI1200820I H1E 1h0hIGI2ȢI`FE 0ɛ rɛ$ l '}蚦TTUVD`M L$:;Pyȱ$` r  iȱ$/:ȱ$VWyA**⩀ / }`$***? mL]-+ȱ$ɛ m* ? g. $0f.?'@ wAsTt/` }0: gL  `$0`j`& CpCi s L0JCܢj? I#}𴽎F ގМގ& & 0 C4 08L`0   | 레L] EGȽGȽ}G | E` 8,  }EG)݀G)ȱGȱG`"!L] l!i}栠$8  (IƭIp  h,g+j? 8 ii(Lq)! }S S0$} ) E9`H)N,L]8GH Lq`gNgfj****8jHi h` } 2J  &e2i`"%?&;^$IM ! ! <u hh`$}Ev옝^! 1EHFHjm GHm H`u$Ev`L=? +`!,pFE ȄD8 }q D&E`I0` i`+DOS SYSMOC.I   J ٍ = ) F)}8`Ll T!U<; Ln <JM -18     HH =}D 1 :  /1[F:M #.!  `>C #   #`>   e}L'>/b;\I\o@ @LK~ L  % /e  LL H}H0S0N:;=91D,1ɛK$ɛ`:;ʾ  ,ɛ}`XYȄ #`DTDRLUFFFCICLRSJ==CIYEEONSMDLNOOUAOOOARPLNCL#####PANVBNFR*),-PQOR}a/%<}) j ө  RES L%-, # 3 0 %   4(H 4(` }( 3  #  ZOiۨ L4RE 3 =F S Z +8!} 0+  FF % 4 4& 4(X)Y    # 4 ʤ Ȅ L"}F F LH hL4`*J 0 B B 0a   8#}    Lkl  );<  : ` 0 } T T 7̀΀$}LIl <;`<L 3   #/ ! R( 7 7   7 89i L7 ,(&  %} L480  ` Ln    `   HJJJJ h) ii0 ``0  ,BLV&}[J  B Vso Fhh` GH ,H hɐɀɡ)HDCȱCɛeCD먥D h'}N MSп` ED` OIH`hhXhh  nL Free Fil-SBreakI/O-Error 128Disk f(}ullWrite protectedFile MismatchBad FilenameDOS II+/D - Version 6.4 RUN:(c) '87 by S.D.Br`čLLockedDe)}vice doneDIR fullNot foundLoad?Bad DOSHex?AbortFromToHD) S)Eh` ɛLn ;LD1:DC.COMF SY}:<QTESTBYESSTAR@KKTYPE A CONTROL COMMA BETWEEN THE QUOTES IN LINE +}70 TO PRODUCE A HEART !(>:A%,!*CLEAR SCREEN*-(ASCIICHARADDRESS-* HEADINGS *R6-@6-@,};;@,9@<@,R* SAMPLE VARIABLES *(V%6-F:A0,%F:A1,$AVV*GET DECIMAL START ADDRESS OF-} VAR NAME TABLE *2F ( F:, >:F:,, F* PRINT ASCII, LETTER AND ADDRESS *<$6-%@$* GET NEXT ONE *F.},F:,"@:,,* IF BLANK THEN END *P+ @P+* GO PRINT NEXT CHARACTER * D:VARLST1.BAS* GET NEXT ONE *Fk XPITCHOLTIMQUARTERNOTCTRL &&BASSNOTE TUTORIAL 0}BY JERRY WHITE(! A A! A(e%2)"56-@A6-@U0@1}e22<-@@ 9( SOUND 0,,, <$<n-@A =22}I6-U6-a6-k @Pn$F-@@P $P@-@@%3} =2@$Z<<102,90,85,82,75,72,67,67,60,57,60,67,75,67,51,60,75,90d5-@@4}! @@+ @`5 @`n+ @@ @p! @@+ @px! @@ @`! @`+ @@ @5}p! @@+ @p! @@ @`! @`/-@@! @@+ @p/ + @@ @6}! @@+ @ @@ @# /# @@ @`,AR/#(( PITCH = NOTE7}# A'('(25=E27=D#28=D 30=C#%%(31=C 33=B 36=A#37=A %%(40=G#42=G 45=F#48=F 8}%%(51=E 55=D#57=D 60=C#%%(63=C 67=B 72=A#75=A %%(82=G#85=G 90=F#97=F  (102=E 9}A+(+( THE ATARI BASIC SOUND COMMAND:;(.(#SOUND VOICE,PITCH,DISTORTION,VOLUME8 A;$"P +:}AR@) AP(" THE THEME FROM BARNEY MILLER,;(.(#BASSNOTES USING SOUND DISTORTION 128 A;$6;}%-@@6(" %$@##*****************************J##* D=DISTORTION V=VOLUME *T##* GOSUB 50 FOR<} WHOLE NOTE *^##* GOSUB 70 FOR QUARTER NOTE *h##* GOSUB 80 FOR EIGHTH NOTE *r##* GOSUB 700 TO DRAW A LINE *|##=}*****************************D:BASSNOTE.BAS##* GOSUB 80 FOR EIGHTH NOTE *r##* GOSUB 700 TO DRAW A LINE *|##5h|;******************************;* ML SEARCH AIDE FOR ATARI 400;* /800 BY TONY MESSINA. ;* 48 DUDLEY AV ?}E NEWPORT, RI %;* 02840 VERSION 2.6 10 JUL 83 0;******************************5;******************************@;* E @}QUATES FOR PROGRAM FOLLOW E;******************************PUDATA .DI 1 ; DATA TOKE`REMARK .DI 0 A} ; REM TOKEeBCD .DI 14 ; BCD # TOKEpSTRING .DI 15 ; STRING TOKEuSTMT .DI 20 ; STATEMEN B}T ENĀTHEN .DI 27 ; THEN TOKE΅TOKPTR .DI $0088 ; POINTER TO TOKENIZED BASIÐPG0 .DI $00CD C} ; OUR WORK LOC ON PAGE ;******************************;* THIS PROGRAM DOES A SEARCH ;* TO AIDE BUNCRUSH. BAS D}IC WAS ;* TOO SLOW, SO THIS ML ROUTINE ;* WAS WRITTEN TO SPEED THINGS %;* UP A BIT.. 0;************ E}******************5@ .OS ; STORE OBJECT IN MEE .BA $0600 ; ORIGIN PGPBEGIN LDA #0 F} ; LOAD A WITH U CMP CON ; CK WITH CON FLA` BNE CONTIN ; SKIP INIT IF NOT ZEReINIT LDA G}*TOKPTR ; GET LSB OF TOKEN POINTEp STA *PG0 ; STORE Iu LDA *TOKPTR+1 ; GET MSB OF POINTEҀ H} STA *PG0+1 ; STORE IT ALSυCONTIN LDY #0 ; START Y AT ZERϐ LDA (PG0),Y ; GET LSB OF LINE NUMBEҕ I} STA LINNUM ; SAVE IT FOR BASI INY ; INCREMENT OFFSET BY  LDA (PG0),Y ; GET MSB J}OF LINE NUMBE STA LINNUM+1 ; SAVE IT FOR BASI ;**** CHECK THIS LINNUM FOR 32500 ***%0 CMP #$7E K} ; IS IT = TO MS5 BNE NOEQ ; IF NO THEN STAR@ LDA LINNUM ; YES SO CK LSE CMP #$F4 L} ; DO IP BEQ DONE ; IF EQ. DONE THIS VAUNOEQ INY ; INC PTR TO NEXT LOCATIO` LDA (PG M}0),Y ; GET BASIC LINE BYTE CNe STA COUNT ; SAVE IT FOR FUTURE CKp LDY #4 ; GET NEW OFFSEu N}START LDA (PG0),Y ; GET A BYTE INDIRECTLـ CMP #STMT ; CK FOR A STMNT/DIM TOKE΅ BNE TARGCK ; I O}F NO, CK FOR TGT TOKEΐ CPY #4 ; WAS IT 1ST BYTE BEQ WASDIM ; YES..IT WAS A DIM IN P}Y ; INC 2 IF STMNWASDIM INY ; INC 1 FOR DI JMP CKCNT ; SEE IF WE ARE DONTARGCK CMP Q}TARGET ; IS IT OUR TARGE  BEQ PROCIT ; IF= GO PROCESS THIS LIN% CMP #REMARK ; NO CK RE0 R} BEQ SKIPIT ; IF REM SKIP THIS LIN5 CMP #DATA ; NOT REM. CK DAT@ BEQ SKIPIT ; IF DATA SKIP IT S}ALSE CMP #BCD ; NOT DATA CK BCD NUMBEP BNE STRCK ; IF NOT BCD CK FOR STRINU TYA T} ; ITS BCD PUT OFFSET IN A RE` CLC ; CLEAR CARRY FOR ADe ADC #7 ; ADD 7 TO SKIP THE BCD U}p TAY ; PUT NEW OFFSET BACK IN u JMP CKCNT ; AND GO CK COUNԀSTRCK INY ; INC V}PTR BY ONŅ CMP #STRING ; CK IF STRING TOKEΐ BNE CKCNT ; IF NO, GO CK THE COUNԕ DEY ; W} ELSE DEC FO DEY ; THEN CHEC LDA (PG0),Y ; GET PREVIOUS TOKE INY ; THEN RE X}STOR INY ; ORIGINAL POINTE  CMP #THEN ; IS IT THEN% BEQ CKCNT ; YES. IF/THE Y}N NOT STRING0 LDA (PG0),Y ; NO..GET STRING CN5 STY YSAVE ; SAVE @ INC YSAVE ; INC Z}PAST THE LAST STRING BYTE CLC ; CLEAR CARRY FOR ADP ADC YSAVE ; ADD STRING COUNT TO OLD U [} TAY ; PUT CNT BACK IN Y RE`CKCNT CPY COUNT ; ARE WE IN NXT BASIC LINEe BCC START ; \}IF NO GET THIS BYTpSKIPIT JSR TOKUP ; IF YES UPDATE TOKEN PTu JMP CONTIN ; CONTINUE TO LOOˀPROCIT STA ]} CON ; MAKE CON NON-ZERυ JSR TOKUP ; UPDATE PAGE 0 POINTEҐ JMP BASIC ; EXIT TO BASIÕDONE ^} DEY ; DEC Y TO ZER INC TARGET ; UPDATE TARGET NUMBE STY CON ; ZERO OUT CON FOR _}BASIBASIC PLA ; PULL NASTYNESS OF RTS ; RETURN TO BASI %;*************************** `}***0;* * SUBROUTINE TOKUP * 5;* ******************** @;* THIS SUBROUTINE UPDATES THE E;* PG0 PTR OF THE a} TOKEN PROGRAMP;* THE OLD PTR IS LOADED AND U;* THEN THE BYTE CNT IS ADDED. `;* IF CARRY IS SET PG0+1 IS e;* ALS b}O UPDATED p;******************************uTOKUP LDA *PG0 ; GET LSB OF POINTE҅ CLC c} ; CLEAR CARRY FOR ADĐ ADC COUNT ; ADD CNT TO NXT LINE  STA *PG0 ; PUT IT BAC d}BCC OUT ; IF CARRY CLEAR GET OU INC *PG0+1 ; OOPS, CARRY SET. INC MSB OF PTOUT RTS ; S e}CRAM SAM! ;******** LOCAL VARIABLES FOLLOW *******%0COUNT .BY 0 ; BYTE CNT THIS BASIC LIN5CON .B f}Y 0 ; FLAG FOR BASIC & ML ROUTIN@TARGET .BY 128 ; VARIABLE TOKEN # START AT 12EYSAVE .BY 0 ; Y R g}EGISTER SAVE AREPLINNUM .BY 0 ; BASIC LINE NUMBER LSU .BY 0 ; MSB OF LINE `INVFLG .BY 0 h} ; INVERSE FLAG AREe .E ; BASIC LINE NUMBER LSU .BY 0 ; MSB OF LINE `INVFLG .BY 0 (SVARNUMCCTC~ ***********************j}***~ * THIS REM IS TO LET YOU *~ * KNOW THAT THIS VERSION *~ * OF BUNCRUSH HAS BEEN *~ * IMPROVED TO HANDLEk} ALL *~ * CASES OF IF/THEN. DON'T*~ * TYPE IN THIS REM, JUST *~ * READ FOR INFORMATION.. *~ *****************l}*********~*~^;@,;@,@6-F:A0,%F:A1,$AVL6-@^A~J (}J3:,~F:A, B%&~)6-%@6-%@) B%o}.3.3# OF VARIABLES= F:A,&A(4VAR$' B%4-%@@&67<,. * p}4 B%06-?:A6,F:A, B%6N 67&@<&@,. ,@N67B:,%@,. NO REFEq}RENCES93 36-(A/6.66.9$%%6-F:A,%F:A,$AVB 6.=:,(B:,%B:,%r}@!@,3B6. A67B:,%@,..67B:,%@,., 76-B:,A B%0F #B%F$(s}Ǡ̠8-A6A<"BF  (>:A%,(ϡ$"''169,0,205,158,6,208,8,165,136,133$+t}+205,165,137,133,206,160,0,177,205,141&))161,6,200,177,205,141,162,6,201,126(((208,7,173,161,6,201,244,240,96,200*))u}177,205,141,157,6,160,4,177,205,201,%%20,208,9,192,4,240,1,200,200,76.&&115,6,205,159,6,240,59,201,0,2400&&49,201,1v},240,45,201,14,208,8,1522&&24,105,7,168,76,115,6,200,201,154++208,23,136,136,177,205,200,200,201,276((240,13,177,205w},140,160,6,238,160,68((24,109,160,6,168,204,157,6,144,183:##32,144,6,76,15,6,141,158,6,32<&&144,6,76,142,6,136,238,1x}59,6,140>''158,6,104,96,165,205,24,109,157,6@&&133,205,144,2,230,206,96,0,0,128B0,0,0,0,0,0D:BUNCRUSH.BAS}TITLE'ANALOG Magazine - Issue #9'SUBTTL'BURP - Bad Disk Reclaimer Program';BURP - Bad Disk Reclaimer Program;Writtez}n by Charles Bachand;This program patches itself into;ATARI's DOS 2.0S to allow for the;formatting of physically damag{}ed;and previously unuseable diskettes;Note:;This program will not allow;the formatting of a disk;with damaged d|}isk boot sectors,;or damaged directory sectors.;Sorry.;System EquatesVTC=$45;directory's VTOC pointerBAD=$4}}7;bad sector buffer pointerWRTDIR=$1071;write directory sectorWRVTC=$1095;write volume table of contentsDELDOS=$1~}219;set no DOSERDBAD=$12B5;normal bad disk sector exitDIR=$1401;file directory buffer;Patches to DOS 2.0SORG$}078CLDA#0;no retry on errorsORG$0D4CJMP$0D52;bypass bad sector errorsORG$0D8EJSRBD5;patch new error handl}erORG$0DA5BNE$0D9F;do all but first sectorJSRWRTD0;write first directory sector;Routine to mark bad sectors as} being;in use on the disk's VTOC. Patched into;the DOS at address $0D8E.ORG$0600;we had to put it someplace!BD5LD}A#0;initializeSTABADCNT;bad sector counterSTABDSPT;and bad sector indexBD5LPLDYBDSPT;load indexLDA(BAD),Y;g}et bad sector (low)STABSNUM;store it for laterINY;increment pointerLDA(BAD),Y;get bad sector (high)STABSNUM+1};store it tooINY;increment pointer againCMP#$FF;end of data?BNEBDCONT;No. not yetCMPBSNUM;is low byte $FF?B}NEBDCONT;No. not at end yet.JMPWRVTC;Yes. Write VTOCBDCONTSTYBDSPT;save indexLDA#0;Zero accumulatorLDY#3;sh}ift sector numberBS1LSRBSNUM+1;3 bits to the rightRORBSNUM;through high and low bytesRORA;rem goes in A as XXX000}00DEY;decrement countBNEBS1;Done 3 times? No.ROLA;Yes. rotate a left 4ROLA;times, so that it willROLA;hav}e data in low bitsROLA;and look like 00000XXXTAY;use value as counterLDA#0;Zero accumulatorSEC;set carry flag}BS3RORA;rotate carry through AccDEY;decrement counterBPLBS3;At Y'th position? No.TAX;Yes. save bit mask in X}LDABSNUM;get byte numberADC#10;add offset to sector mapTAY;use as VTOC indexTXA;get bit mask backAND(VTC),Y};AND with VTOCBNEBS4;Bad sector in use? No.PLA;YES! We are in trouble!PLA;pull return stack addressJMPERDBAD};and report error conditionBS4TXA;get bit mask againEOR(VTC),Y;invert allocation bitSTA(VTC),Y;and store it back }in VTOCLDY#3;point to free sectorsLDA(VTC),Y;byte in VTOCSEC;set carry for subtractSBC#1;decrement number by }oneSTA(VTC),Y;save it out againINCBADCNT;increment bad sector countJMPBD5LP;loop back and do it again.;If no b}ad sector errors, then just write;out the first directory sector to disk.;If there are errors, we will put a file;entry} into the directory telling how many;sectors are bad and then write it to disk.WRTD0LDYBADCNT;get bad sector countBE}QNOERRS;Bad sectors? NO.LDX#10;Yes. File name to entryMOVFNLDABADFN,X;from BADFNORA#$80;inverse video, WOW!ST}ADIR+5,X;to directory buffer areaDEX;decrement counterBPLMOVFN;Done 11 bytes? No.LDA#$60;mark file as lockedS}TADIR;and in useSTYDIR+1;store bad sector countNOERRSJSRWRTDIR;write sector to diskJMPDELDOS;mark disk with no }DOSRETURNRTS;return after patchingBADFNDB'Bad S';file name used to markDB'ectors';the disk as damaged.BSNUMDS}2;bad sector numberBDSPTDS1;bad sector pointerBADCNTDS1;bad sector countENDRETURN;just return after loadingS|d+++ BURP +++nBASIC UNUSEABLE-DISKxRECLAIMER PROGRAM..@}@ D:AUTORUN.SYS Ap"*@ A`@255,255,140,7,141,7,169,}076,13,78,13,76,82,13,14213,144,13,32,0,6,165,13169,13,208,248,32,101,6,06,144,6,169,0,141,148,6 }141,147,6,172,147,6,177,71""141,145,6,200,177,71,141,146!!6,200,201,255,208,8,205,1456,208,3,76,149,16,140,147}"6,169,0,160,3,78,146,6,""110,145,6,106,136,208,246,42642,42,42,168,169,0,56,106@""136,16,252,170,173,145,6,1}05J 10,168,138,49,69,208,5,104T!!104,76,181,18,138,81,69,145^69,160,3,177,69,56,233,1h145,69,238,148,6,76,8,}6r!!172,148,6,240,21,162,10,189|134,6,9,128,157,6,20,202 16,245,169,96,141,1,20,1402,20,32,113,16,76,25,18}96,66,97,100,32,83,101,99!!116,111,114,115,224,2,225,2 133,6 D:BURP.BAS402,20,32,113,16,76,25,18^9:sOUTICRISSULINECOUNPLILINUNLCTOTACHKSUPRODUC} d88 DEBUGGING AID BY ISTVAN MOHOSn!!VERSI}ON 2 MODS AND CASSETTExVERSION BY TOM HUDSONT +(T(?This run will LIST data statements to the screen or }printer.i(f([This DATA is created by evaluating each character of a user program, LISTed to tape.i(&&;@},;A(,;@,>$(OUTPUT TO CREEN OR RINTER(>0S*0PA`5 4S+@@}E:5 A7@3(READY PRINTER AND PRESS 7- A-@@P:,((}ENTER ISSUE NUMBER( A,M('(READY TAPE AND PRESS G@@C:J(M('6-}6-6-'6-@B A@@(6-%@B6-A:7@<@,,/6-%@/!@* }@A"@A(@6-@S 4S6-%@%"@C(PRESS TO CO}NTINUEGS6- 6- (@ DATA "! 6-!@ !6-@,R-@B:,$6-$@:7<,,},6-%:6-%@F"@R6-@6= 6-%$AU%6-%@1"@=6-@@6-&A$P}:'A,J'(@,6-%' A0T@"Ap^(@h@rD (}D(}5Your typed-in program was not properlyLISTed to tape.|n(](*Please LIST your program to tape, thenRUN >:@4,CHEC}K>:@4, again.h@kn D:CCHECK.BAS](*Please LIST your program to tape, thenRUN >:@4,CHEC<[!7ERAMTOCHBAADDCHAPO NN***DUMPS 1024 B }YTES TO NEW CHBAS USING ONLY BASIC (APROX. 11 SECONDS)***G;@P,'6-F:A,&@3A96-G6-$AV }A +@-@ A(@MOVING CHARACTER SET(.-A#*%F:BsD%,. 2!6-@Y }!6-%+$@,<0,24,36,66,153,66,60,0F)-@"%+%,) P+ +@AR@+ }AVZ$-@@$(@[d AD:CHARDMP1.BAS%,) P+ +@AR@+ Q pERAMTOCHBAADDPAGCHAPO $} HH***DUMPS 1024 BYTES TO NEW CHBAS IN MACHINE LANGUAGE (NO DELAY)***S;@P,'6-F:A,&@3A9$}6-G6-$AVS6-@L-@@@"'67,.>:,+ ;6-?:C:,<<,L*DUMP ROUTINE*(SS104,104,133,2$}07,104,133,206,104,104,133,212,169,0,133,204,169,224,133,205,1622PP1,160,0,177,204,145,206,200,208,249,230,205,230,207,232$},228,212,208,240,96<!6-@Y!6-%+$@,F0,24,36,66,153,66,60,0P)-@"%+%,) Z+$} +@AR@+AVd$-@ @$(@[n AD:CHARDMP2.BAS%,) Z+$o$% ERAMTOCHBAADDPAGSNCHAPO (} V;@P,"6-F:A,06-&@>6-$AVJ6-@V6-BdL-@(}@@"'67,.>:,+ ;6-?:C:,<<,L*DUMP ROUTINE*nSS104,104,133,207,104,133,206,104,104,133,212,169,0,133(},204,169,224,133,205,162xPP1,160,0,177,204,145,206,200,208,249,230,205,230,207,232,228,212,208,240,96!6-@Y!6-(}%+$@,0,0,144,96,144,0,0,0)-@"%+%,) !6-@`!6-%+$@,0,6,6,1(}5,6,6,0,0)-@"%+%,) !6-@a!6-%+$@, 0,0,0,20,8,20,0,0)-@(}"%+%,) 4!6-@b!6-%+$@,>0,0,20,10,60,20,10,0H)-@"%+%,) f(}!6-@c!6-%+$@,p0,140,104,57,86,72,2,0z)-@"%+%,)  + +@AR@(}+AV 6-@@ 6(@ASSY CHARACTER DUMP }-@)A@5-@(}F(@ [ J \A@h-@y(@ \ }    C-@@ )A@- ?(}A@C   }-@@)A@5-@F(@ [ J \A@h-(}@y(@ \ }  C-@@ )A@- ?A@C  }-@(}@)A@5-@F(@ [ J \A@h-@y(@ \ }  pa-@(}@$(@]A-@@6@]2@0@a za-@@$(@^A(}-@@6@]2A@a a-@@$(@_A-@6@(}]2@0@a a-@@$(@_A-@6@]2@0@(}a a-@@$(@^A-@@6@]2A@a a-@@$((}@]A-@@6@]2@0@a {A72(}Y2@{2@X @'w%2A@@G2@(}A@@t2@H:,$@@@w$D:CHARDMP3.BAS@@G2@(d10 ;CHARACTER DUMP (C)81 JOE TREM20 OLD=$CC ;TEMP. LOCATION OF ATARI'S CHARACTER SET30 NEW=$CE ;TEMP. LOCATION OF NEW CHARA,}CTER SET40 PAGE=$D4 ;NUMBER OF 256 BYTE BLOCKS50 *=$60060 PLA70 PLA ;PULL HIGH BYTE OF ADDR80 STA NEW+190 PLA ;PUL,}L LOW BYTE OF ADDR0100 STA NEW0110 PLA ;PULL HIGH BYTE-DON'T NEED0120 PLA ;PULL NUMBER OF BLOCKS TO MOVE0130 STA PAGE,}0140 LDA #00 ;LOADS IN ATARI CHR.SET0150 STA OLD0160 LDA #$E0 ;ATARI CHR. SET IS AT $E000 OR 57344 IN BASIC0170 STA O,}LD+10180 LDX #10190 LDY #00200 LOOP LDA (OLD),Y0210 STA (NEW),Y ;MOVES TO NEW AREA0220 INY0230 BNE LOOP0240 INC ,}OLD+10250 INC NEW+10260 INX0270 CPX PAGE0280 BNE LOOP0290 RTS ;IF ALL BLOCKS ARE LOADED RETURN TO BASIC0300 .END,}LD+10250 INC NEW+10260 INX0270 CPX PAGE0280 BNE LOOP0290 RTS ;IF ALL BLOCKS ARE LOADED RETURN TO BASIC0300 .END,RS 0 FIPIISSULINECOUNICRSRANGLINCOUNCHECKSUNUMBEPRODUCITETOTADATU0}@ @ 0} 88 DEBUGGING AID BY ISTVAN MOHOS""VERSION 2 MODS BY TOM HUDSON[ +0}([(FThis run will LIST data statements with the name: , to the disk.(i(f([The DATA is created by evaluatin0}g each character of a user program, LISTed to disk.i(2;@,<&@"(ENTER FILENAME&F*6-F:A0}Y,6-*P,((ENTER ISSUE NUMBER( @,Z* @`*@@dA0}Anf (},(DISABLING SCREEN...STAND BY...@-@AD PAYfdebug before pokingx 6-0};A&,( AP@(6-%@ A0K@6-P:'@,69,9,;@,K+"0})4,A0II@:7@<@,, @H)@:7@<@,,!@WA06-@ @4 6-60}-#-@@067<,. 4  6-*@6-@*6-%@87<,0  67<,.7<,.0}6-%@8 A 6-A:, 68,-6-%@ Ap@%6-%@%"@A0} A@$@6-@$ @-@6-"F)@6-$ 6-%.6-%@:"@0}F6-@,"AUA 6 A@?6-&A$P:'A,'68,-3!@ ?6-@J T@0}@1@@D:BUG:6-8,@6-^'6-@6-! @'6-h @ DATA 0}rB-@$6-8@$%,6 @,>6-%B | @36-%@6-&@3 @0}A  6-8, AP@AYUU(M}To check data against printed data statements, t0}ype NEW. Then type:\\(ENTER >:@4,@D:BUG . Type LIST after the READY prompt.U(U(JThe0} line number of each data statementcoincides with the first line of the88(0user program which the data statement evaluate0}s.aa(YNumbers within each data statement represent consecutive lines of the user program.%%(The last number is0} the total.R(R(GCheck the number of each state- ment against the printed version;PP(Honly in case of a discre0}pancy check each number in the data statement.]](7Make note of the lines containing the bugs. Then ENTER >:@4,0}D:yourprog# (to make the corrections.#PAY(}P(5Your typed-in program was not properlyLISTed to0} disk.e(_(*Please LIST your program to disk, thenRUN >:@4,D:CHECK>:@4, again.be D:CHECK2.B0}ASsk.e(_(*Please LIST your program to disk, thenRUN >:@4,D:CHECK>:@4, again.be D:CHECK2.B0^-XYRINYCIRCLXCOORYCOOR 6-A`64}-@'6-@`6-@'6-?u +@@( A---------------------CIRCL4}E DRAWER ROUTINE---------------------!!XC: x-coordinate of center!!YC: y-coordinate of center$RD: 4} circle radius.""INC: drawing increment 1-3608YS: y-scaling factorBL,%$V-A``4}6-%G:,$j6-%E:,$$t /~   $ D:CIRCLE.BASctorBL,%$V-A``4G,-LLRRTTBBXXXYYYXYXYXYXY8} ##**********8}*******************##* GRAPHICS CLIPPING ROUTINE *##* *##* BY TOM HUDSON *8}##*****************************c6-6-'6-36-?6-K6-W6-c68}-$  6-@ A. !6-@8 !6-@ AB  6-@L  68}-@ A V !6-@` !6-@ A@j  6-@t85%"@)%"@)%"8}@)%"@8$~% 6-6-6-6-% A 6-6-6-6-1 6-6-6-6-!6-'6-8}1 A(% )!) )!) )!) )!($ ,/$$%%%"6-!6-$$> 6-%6-8}%+&,$+&,'+&,+6-16-;*>$> 6-%6-%+&,$+&,'+&,+6-16-;*>$> 6-%6-8}%+&,$+&,'+&,+6-16-;*>$> 6-%6-%+&,$+&,'+&,+6-16-;*>$$ D:CLIP8}1.BAS$+&,'+&,+6-16-;*>$> 6-%6-%+&,$+&,'+&,+6-16-;*>$$ D:CLIP8,-FYSSRCCXXYYXYX2Y2WWRXYXY<} @ @ @ @ d**********<}*************n* SHAPE ROTATION DEMO *x* ** BY TOM HUDSON ********************<}****+@%@ @6-@6-?P6-@6-@6-@H36-<}AY6-'6-@36- #A`"9,9,9,9,1-@""68,-$-68,<}-$1 / 6-%!A`%6-&A`/ B'g 6-%A`1-@68,-8,$-68,-8=},$1 ",-@,68,-8,$E:,%8,$G:,,#68,-68,$G:,%8,$E:,# 6+@%@@1-@=}68,-8,%-68,-8,%1 J[-@&@"6-8,+6-8,<6-8%@,M6-8%@,W A[ T=}= 6-8,6-8,$6-8@,36-8@,= A^ A`h##4,10,10,10,-10,-10,-10,-10,10 D:CLIP2.BA=}S 6-8,6-8,$6-8@,36-8@,= A^ A`h##4,10,10,10,-10,-10,-10,-10,10 D:CLIP2.BA<2;PMSEBUTTOCHOICCONSOLE BUTTON SUBROUTINEBY JERRY WHITE 6/5/820uUA} +AR@1A@HC@@UA@ :uY/('} Use the or buttonA} to2(Y(" highlight your choice below, thenDu^($( press the button.8-@DB2yH R BA}^6-@Nu - (ΠӠXu&6-F:B2y,&"@B@bu! B@!"@Blu=6-A}%@!@)6-@3 B= B0vuC"@ B%-@9(ΠϠC B@uDA }"@ B%-@:(ΠՠD B@u B@u`-@@,(RERUN THIS PROGRAM/(DA }(RETURN TO BASICG(](RUN MENU PROGRAM`$u[ BA@+"@1(}4(F( LOADING MENUQ%D:MA }ENU[ BuM"@+(&(BASIC.(IS@ARJ BMu B%u Bpu, 6A }-6-F:B2y,,@BPu Bp$u*-@#B2y' *$ D:CONSOLE.BASu, 6@v001,172,ITEM DESCRIPTION FIELD002,110,ITEM DESCRIPTION FIELD003,120,ITEM DESCRIPTION FIELD004,129,ITEM DESCRIPTION FIELD0E}05,110,ITEM DESCRIPTION FIELD006,173,ITEM DESCRIPTION FIELD007,164,ITEM DESCRIPTION FIELD008,180,ITEM DESCRIPTION FIELD00E}9,146,ITEM DESCRIPTION FIELD010,190,ITEM DESCRIPTION FIELD011,149,ITEM DESCRIPTION FIELD012,171,ITEM DESCRIPTION FIELD013E},166,ITEM DESCRIPTION FIELD014,162,ITEM DESCRIPTION FIELD015,189,ITEM DESCRIPTION FIELD016,197,ITEM DESCRIPTION FIELD017,E}182,ITEM DESCRIPTION FIELD018,147,ITEM DESCRIPTION FIELD019,183,ITEM DESCRIPTION FIELD020,191,ITEM DESCRIPTION FIELD021,1E}32,ITEM DESCRIPTION FIELD022,189,ITEM DESCRIPTION FIELD023,149,ITEM DESCRIPTION FIELD024,117,ITEM DESCRIPTION FIELD025,18E}9,ITEM DESCRIPTION FIELD026,182,ITEM DESCRIPTION FIELD027,190,ITEM DESCRIPTION FIELD028,148,ITEM DESCRIPTION FIELD029,116E},ITEM DESCRIPTION FIELD030,194,ITEM DESCRIPTION FIELD031,103,ITEM DESCRIPTION FIELD032,183,ITEM DESCRIPTION FIELD033,149,E}ITEM DESCRIPTION FIELD034,132,ITEM DESCRIPTION FIELD035,136,ITEM DESCRIPTION FIELD036,121,ITEM DESCRIPTION FIELD037,119,IE}TEM DESCRIPTION FIELD038,191,ITEM DESCRIPTION FIELD039,113,ITEM DESCRIPTION FIELD040,192,ITEM DESCRIPTION FIELD041,122,ITE}EM DESCRIPTION FIELD042,143,ITEM DESCRIPTION FIELD043,186,ITEM DESCRIPTION FIELD044,103,ITEM DESCRIPTION FIELD045,158,ITEE}M DESCRIPTION FIELD046,173,ITEM DESCRIPTION FIELD047,164,ITEM DESCRIPTION FIELD048,173,ITEM DESCRIPTION FIELD049,167,ITEME} DESCRIPTION FIELD050,113,ITEM DESCRIPTION FIELD051,187,ITEM DESCRIPTION FIELD052,100,ITEM DESCRIPTION FIELD053,124,ITEM E}DESCRIPTION FIELD054,161,ITEM DESCRIPTION FIELD055,191,ITEM DESCRIPTION FIELD056,136,ITEM DESCRIPTION FIELD057,189,ITEM DE}ESCRIPTION FIELD058,170,ITEM DESCRIPTION FIELD059,179,ITEM DESCRIPTION FIELD060,182,ITEM DESCRIPTION FIELD061,137,ITEM DEE}SCRIPTION FIELD062,118,ITEM DESCRIPTION FIELD063,120,ITEM DESCRIPTION FIELD064,120,ITEM DESCRIPTION FIELD065,184,ITEM DESE}CRIPTION FIELD066,135,ITEM DESCRIPTION FIELD067,155,ITEM DESCRIPTION FIELD068,161,ITEM DESCRIPTION FIELD069,164,ITEM DESCE}RIPTION FIELD070,155,ITEM DESCRIPTION FIELD071,164,ITEM DESCRIPTION FIELD072,186,ITEM DESCRIPTION FIELD073,171,ITEM DESCRE}IPTION FIELD074,133,ITEM DESCRIPTION FIELD075,110,ITEM DESCRIPTION FIELD076,160,ITEM DESCRIPTION FIELD077,173,ITEM DESCRID}`a STARDEVTABDIRECTORYFILENAMEANSDISPRNTEDIRTACOLWIOUTPUNULDIRICOUNSPACWIDTHEADCNI!} I"} $$******************************$$* UTILITY #4 *$$* DISKCAT VER.1 *$$* I#}BY TONY MESSINA *$$* FOR A.N.A.L.O.G. COMPUTING *#$$******************************(*-*****************I$}****2* MAKE SCREEN TITLE *7*********************<*Ak +@/6-F:A`,%F:Aa,$AVC%@ I%}@W%@@k%@@F'A@2'A@K!(@ Uiiy ,(@I&}K(@ s i uPl(@ ==================(@ BYPm!(@ I'}S(@$ ..... m(@ U$$(@ ==================Z*_I(}*****************d* VARIABLE INIT *i*****************n*sD;@,;@@,*;@,7;@I)},D;@,x>6.D:*.*>6.( }o6-@6-@'6-@36-@@I*}?6-@K6-W6-@c6-@o6-@******************** GET USER INPUT **I+}****************** (}8 6.P: A4(ΠȠҠ 8#@@*@# A`I,}"@6- A'6-@6-@'6-@(********************** OPEN DEVII-}CES FOR ** INPUT/OUTPUT ********************** A3 AI.}************************* ASK FOR HEADER NAME *************************(ҠˠI/}  46.-DEFAULT NAME-********************* PRINT TITLE OUT ********************"I0}*'B:,!@ A, A188 7@} HUDSON *2%%*******************************<F1 +@$'0@1@P++9@!<M?}@,9@!<@,Zd*** DMA OFF ***nxAY!!*** SET CLIPPING LIMITS ***M@}36-A6-'6-36-A*** YOUR FORMULA GOES ****** INSIDE THIS LOOP ***MA}+-@@!+-@@6-+%,$@68<,-  ""*** CALC. SCREEN COORDS. **MB}*+-@@!+-@@4468<,-+&@,$@%+&@,$@"//68<,-A&+MC}&@,$@&8<,,   6@*** DMA ON AGAIN ***JTAY@4^h*** DRAW BASELINE *MD}**r|],A'/AA9/A@K/A@]/A*** PLOT THEME} GRAPH ***y-@@!+-@@>6-8<&@,Q6-8<&@,\6-8<,g6-8<,q AMF}u y y-@@+-@@!>6-8&@<,Q6-8&@<,\6-8<,g6-8<,q AMG}u y !!*** DRAW VERTICAL LINES ***S6-6-A26-8@<@,I6-8@<@MH},S AS6-A6-A26-8@!<@,I6-8@!<@,S AS6-A6-@26MI}-8@!<@,I6-8@!<@,S AS6-A6-@26-8@<@,I6-8@<@,MJ}S A*** LOOP FOREVER *** A@&0!!***************************:!!* GRAPHICS CLIP ROMK}UTINE *D!!***************************NXO6-6-'6-36-9 E6-@O A ML}b !6-@l  6-@ A@v !6-@ %"@)%"@ $% 6-6-6MM}-6-% A= 6-6-6-6-!6-'6--6-36-= A )!) )!$ ,/$ MN}%"6-6- $4 6-%6-%+&,$+&,'+&,+6-16-4$4 6-%6-%+&,$+&,'+&,+6-1MO}6-4$$ D:GRAPH3D.BAS 6-%6-%+&,$+&,'+&,+6-16-4$4 6-%6-%+&,$+&,'+&,+6-1L#]CCXYDISCHOL GRAPHICS 10 GQQ}TIA DEMO +@(""CHANGE DATA TO CHANGE COLORS2F-@")A%- F6,12,23,42,53,62QR},73,84<#6-#0@F-@9P-@Z16-@9&6-@&16-P:QS}M:$%$,,d..@%@$+'@&P:'@,,n ,x,@y&,A&,@y&A&QT}  ROTATE COLOR REGISTERS6-F:A,6-AF:%@,%6-%@% AQU}AA A D:GTIA10.LST,6-AF:%@,%6-%@% AP80h|CL GRAPHICS 11 GTIA DEMO +@(56-@6UW}-50@@2-A<-@yF)6-%@"@)6-PUX}Z ,d n06-%@"@$6-606-@x# 6-%"@#6-  A@UY} D:GTIA11.BASn06-%@"@$6-606-@x# 6-%"@#6-  A@T  <XYTIM !!GRAPHICS 9 GTIA DEMO (OVAL) +@ Y[}(#6-#0@2-@9<-@F76-@9&6-@&7P:M:$%$Y\},'@P,P ,Z,@y&d,A&n,@y&A&x  )6-%@!@)6Y]}-0@-@A  A@ D:GTIA9.BAS)6-%@!@)6X\0100 ; GRAPHIC VIOLENCE0110 ;0120 ; A.N.A.L.O.G. COMPUTING #80130 ;0140 ; INITIALIZATION CODE0150 ;0160 READY = $60001]_}70 EXPCNT = $6010180 CYCFLG = $60B0190 SNDFLG = $60C0200 COORD1 = $CB0210 COORD2 = $CD0220 SETVBV = $E45C0230 *= $6000]`}0240 INIT PLA ;DISCARD0250 LDA #0 ;ZERO OUT:0260 STA READY ;READY FLAG0270 STA EXPCNT ;# O]a}F EXPL.0280 PLA ;INTERRUPT HI0290 TAX ;PUT IN X0300 PLA ;INTERRUPT LO0310 TAY ]b} ;PUT IN Y0320 LDA #7 ;DEFERRED VBI0330 JSR SETVBV ;SET IT!0340 PLA ;COORD1 HI0350 ]c}STA COORD1+1 ;SAVE IT0360 PLA ;PULL COORD1 LO0370 STA COORD1 ;SAVE IT0380 PLA ;PULL COO]d}RD2 HI0390 STA COORD2+1 ;SAVE IT0400 PLA ;PULL COORD2 LO0410 STA COORD2 ;SAVE IT0420 PLA ]e} ;DISCARD0430 PLA ;PULL COLOR CYCLE FLAG0440 STA CYCFLG ;SAVE IT0450 PLA ;DISCARD0460 ]f} PLA ;PULL SOUND FLG0470 STA SNDFLG ;SAVE IT0480 RTS ;FINISHED!0490 .END ;DISCARD0460 \l0100 ; GRAPHIC VIOLENCE0110 ;0120 ; A.N.A.L.O.G. COMPUTING #80130 ;0140 ; EXPLOSION CALL ROUTINE0150 ;0160 READY = $600aq}B&DOS SYSB*VARLST1 BASB/BASSNOTEBASB+>BUNCRUSHASMBiBUNCRUSHBASByBURP ASMBBURP BASBCCHECK BASBCHARDMP1BASBCHARDMP2BASBCHARDMP3BASBCHARDMP4ASMBCHECK2 BASBCIRCLE BASB CLIP1 BASB CLIP2 BASB CONSOLE BASB DATAFILE B DISKDIR BASB;GRAPH3D BASBPGTIA10 BASBVGTIA11 BASBZGTIA9 BASB ^GV1 ASMBgGV2 ASMB1wGV3 ASMB MENU B MULTI ASMBMULTI BASBNOTPOINTBASBPMOVER ASMBPMOVER BASBRAINBOW BASB SPH1020 BASBSPHERE BASBSQWB1020BASBSWIRL BASB"SYSSTAT BASB?TARILOGOBASBSTOKLOOK BASBYTRAP1 BASB _TRAP2 BASB hTRAP3 BASBqTRAP4 BASBuTRAP5 BASBxTRIANGLEBASB|USINGDLIASMBUSINGDLIBASB AUDCTL BASBVIOMAIN BASBVIODEMO1LSTB VIODEMO2LSTBVARLST2 BAS0170 EXPCNT = $6010180 NEWX = $6020190 NEWY = $6030200 *=$60000210 PLA ;DISCARD0220 LDA EXPCNT ;# Oar}F EXPL.0230 CMP #20 ;20 ACTIVE?0240 BMI EXPOK ;NO, IT'S OK!0250 PLA ;YES, DISCARD0260 PLA as} ;BOTH COORDS0270 PLA0280 PLA0290 RTS ;AND EXIT0300 EXPOK PLA ;DISCARD HIGH0310 PLA at} ;GET X-COORD0320 STA NEWX ;STORE IT0330 PLA ;DISCARD HIGH0340 PLA ;GET Y-COORDau}0350 STA NEWY ;STORE IT0360 LDA #1 ;TELL INTERRUPT0370 STA READY ;WE'RE READY!0380 RTS av} ;AND EXIT BACK0390 ; TO BASIC!0400 .ENDTERRUPT0370 STA READY ;WE'RE READY!0380 RTS `>0100 ; GRAPHIC VIOLENCE0110 ;0120 ; A.N.A.L.O.G. COMPUTING #80130 ;0140 ; VBLANK INTERRUPT ROUTINE0150 ;0160 READY = $6ex}000170 EXPCNT = $6010180 NEWX = $6020190 NEWY = $6030200 PLOTCLR = $6040210 COUNTR = $6050220 PLOTX = $6060230 PLOTY =ey} $6070240 HIHLD = $6080250 LOHLD = $6090260 PLOTBYT = $60A0270 CYCFLG = $60B0280 SNDFLG = $60C0290 SNDCNT = $60D0300 Cez}OLOR = $60E0310 PLOTBL = $6200320 XPOS = $6400330 YPOS = XPOS+210340 CNT = YPOS+210350 LO = $CF0360 HI = $D00370 COORDe{}1 = $CB0380 COORD2 = $CD0390 ;0400 ;SYSTEM EQUATES0410 ;0420 XITVBV = $E4620430 COLPF2 = $2C60440 AUDC1 = $D2010450 Ae|}UDF1 = $D2000460 SAVMSC = $580470 POKMSK = $100480 IRQEN = $D20E0490 *=$60000500 CLD ;CLEAR DECIMAL0510 e}}LDA POKMSK ;GET IRQ INT.0520 AND #$7F ;NO BREAK KEY0530 STA POKMSK ;THE BREAK KEY0540 STA IRQEN e~};IS NOW OFF!0550 LDA CYCFLG ;CYCLING COLOR?0560 BEQ CONT ;NO, CONTINUE0570 LDA COLOR ;GET LAST COLORe}0580 CLC ;INCREMENT IT0590 ADC #16 ;BY 160600 STA COLOR ;AND SAVE IT0610 LDA COLPF2 ;GEe}T COLOR REG.0620 AND #$0F ;GET BRIGHTNESS0630 ORA COLOR ;ADD THE COLOR0640 STA COLPF2 ;AND SAVE IT!0e}650 CONT LDA SNDFLG ;SOUND ON?0660 BEQ GO ;NO, SKIP IT!0670 LDA SNDCNT ;MORE SOUND?0680 BEQ GO e};NO, SKIP IT!0690 SEC ;DECREMENT THE0700 SBC #1 ;SOUND COUNTER0710 STA SNDCNT ;AND STORE IT0e}720 LSR A ;SHIFT DOWN TO0730 LSR A ;DERIVE VOLUME0740 LSR A ;FROM COUNTER0750 STA AUDC1 e} ;SET UP SOUND0760 LDA #40 ;CHANNEL 1...0770 STA AUDF1 ;FINISHED!0780 GO LDA READY ;NEW EXPLOSIONe}?0790 BEQ MAIN ;NO, CONTINUE0800 ;0810 ;AT THIS POINT, THERE IS A0820 ;NEW EXPLOSION!0830 ;0840 INC EXPCNT e} ;ONE MORE EXPL0850 LDX EXPCNT ;PUT IN INDEX0860 LDA NEWX ;GET X-COORD,0870 STA XPOS,X ;PUT IN TABLEe}0880 LDA NEWY ;GET Y-COORD,0890 STA YPOS,X ;PUT IN TABLE0900 LDA #127 ;INITIALIZE THE0910 STA SNDCNe}T ;SOUND COUNTER0920 LDA #0 ;INIT COUNTER0930 STA CNT,X ;FOR EXPL IMAGE0940 STA READY ;AND REe}ADY FLAG0950 MAIN STA COUNTR ;ZERO COUNTER0960 RUNLP INC COUNTR ;NEXT EXPLOSION0970 LDA EXPCNT ;GET # OF EXPL.0980e} CMP COUNTR ;ANY MORE EXPL?0990 BPL INDEX ;YES, CONTINUE1000 JMP XITVBV1010 INDEX LDX COUNTR ;GET INDEX1020e} LDA #0 ;SET PLOTCLR1030 STA PLOTCLR ;0=PLOT A BLOCK1040 LDA CNT,X ;GET COUNTER1050 ; e} FOR EXPLOSION1060 CMP #89 ;ALL DRAWN?1070 BMI DOPLOT ;NO, DO IT NOW1080 INC PLOTCLR ;1=ERASE BLOCK1e}090 SEC ;GET READY FOR1100 SBC #89 ;ERASE CYCLE1110 CMP #89 ;ERASE DONE?1120 BMI DOPLOT e} ;NO,ERASE BLOCK1130 TXA ;MOVE INDEX1140 TAY ;TO Y REGISTER1150 ;1160 ;THE FOLLOWING ROUTINE e}REPACKS1170 ;THE EXPLOSION TABLE TO GET RID1180 ;OF EXPLOSIONS THAT ARE DONE.1190 ;1200 REPACK INX ;NEXT EXPLOSIONe}1210 CPX EXPCNT ;DONE?1220 BEQ RPK2 ;NO,REPACK MORE1230 BPL RPKEND ;YES, EXIT!1240 RPK2 LDA XPOS,X ;Ne}O, START RPK1250 STA XPOS,Y ;MOVE BACK X1260 LDA YPOS,X1270 STA YPOS,Y ;MOVE BACK Y1280 LDA CNT,X1290 STAe} CNT,Y ;MOVE BACK CNT1300 INY1310 BNE REPACK ;NEXT REPACK1320 RPKEND DEC EXPCNT ;DEC POINTERS1330 DEC COUNTe}R ;DUE TO REPACK1340 LDA #0 ;FORCE BRANCH1350 BEQ RUNLP ;TO NEXT EXPL.1360 DOPLOT INC CNT,X ;INC COUe}NTER1370 TAY ;EXP PHASE IN Y1380 LDA XPOS,X ;GET X-COORD1390 CLC1400 ADC (COORD1),Y ;ADD X OFFSET1e}410 STA PLOTX ;STORE IT1420 CMP #160 ;OFF SCREEN?1430 BCS RUNLP ;YES,DON'T PLOT1440 LDA YPOS,X e} ;GET Y-COORD1450 CLC1460 ADC (COORD2),Y ;ADD Y OFFSET1470 STA PLOTY ;STORE IT1480 CMP #96 ;OFF SCREENe}?1490 BCS RUNLP ;YES,DON'T PLOT1500 ;1510 ;THE FOLLOWING SECTION IS A1520 ;DEDICATED MULTIPLY ROUTINE1530 ;WHICH e}MULTIPLIES THE A REGISTER1540 ;BY 40, WITH RESULT IN LO & HI1550 ;1560 ASL A1570 STA LO1580 LDA #01590 BEQ X21600 e}JRUNLP BEQ RUNLP1610 X2 STA HI ;*21620 LDA LO1630 ASL A1640 STA LO1650 LDA HI1660 ROL A1670 STA HI ;e}*41680 LDA LO1690 ASL A1700 STA LO1710 STA LOHLD1720 LDA HI1730 ROL A1740 STA HI1750 STA HIHLD ;*81760 e}LDA LO1770 ASL A1780 STA LO1790 LDA HI1800 ROL A1810 STA HI ;*161820 LDA LO1830 ASL A1840 STA LO1850 e} LDA HI1860 ROL A1870 STA HI ;*321880 LDA LO1890 CLC1900 ADC LOHLD1910 STA LO1920 LDA HI1930 ADC HIHLDe}1940 STA HI ;+*8=*401950 ;1960 ;AT THIS POINT, THE MULTIPLY BY1970 ;40 IS FINISHED, AND WE NEED TO1980 ;GET AN Oe}FFSET INTO THE SCREEN1990 ;MEMORY2000 ;2010 LDA SAVMSC ;ADD THE DISPLAY2020 CLC ;ADDRESS TO GET2030 ADe}C LO ;THE ACTUAL2040 STA LO ;ADDRESS OF THE2050 LDA SAVMSC+1 ;BYTE THAT WILL2060 ADC HI ;BE Ae}LTERED FOR2070 STA HI ;THE PLOT.2080 LDA PLOTX ;MASK PLOTX FOR2090 AND #3 ;THE PLOT BITS,2100 TAe}Y ;PLACE IN Y...2110 LDX PLOTBL,Y ;GET PLOT BITS,2120 STX PLOTBYT ;AND SAVE!2130 LDA PLOTX ;GET PLe}OTX AND2140 LSR A ;DIVIDE2150 LSR A ;BY 42160 CLC ;AND ADD TO2170 ADC LO ;PLOT Ae}DDRESS2180 STA LO ;FOR FINAL PLOT2190 LDA HI ;ADDRESS.2200 ADC #02210 STA HI2220 LDY #0 ;ZEe}RO OUT Y REG.2230 LDA PLOTCLR ;ERASING?2240 BNE CLEARIT ;YES,GO CLEAR IT2250 LDA PLOTBYT ;GET PLOT BITS,2260 e} EOR (LO),Y ;ALTER DISPLAY,2270 STA (LO),Y ;AND PLOT IT!2280 LDA #0 ;FORCE BRANCH2290 JRUNLP2 BEQ JRUNLPe} ;AND EXIT!2300 CLEARIT LDA PLOTBYT ;PLOT BITS2310 EOR #$FF ;FLIP 'EM2320 AND (LO),Y ;ALTER DISPLAY2330 STA e}(LO),Y ;AND ERASE IT!2340 LDA #0 ;FORCE BRANCH2350 BEQ JRUNLP2 ;AND EXIT!2360 .ENDER DISPLAY2330 STA dh78>ARRAYFILE1FILE2NAMEDISKFILECOUNCHOICLOOSFIL1T$8 L@i} @ N<;A(,;@ ,;@ ,;@ ,;@,NA@% +i}AR@%(}2 6.D1:< 6.F67B:,%@,.*.*d @@n&6-@i}& A0x( A@(6-%@&&7@<@,4SYSAP..7@<@,4 DISKi} CATAP..7@<@,4 MENU AP&&7@<@,4DBHAPJJ7@<@,4i}7@<@,*7@<@,4RAP7"6-@!6.-6-7 A 3"@!!@i}@ 3-@ @6. _7@<@,0 767@ <@ ,.._67@<@i},.7@<@,++67@<@,.7@<@,NAME$ BUILT ", @( 6 () @i}(J 6.67B:,%@,. A 6-&@ A  A@9@@'i}-@@"9( RUN NUMBER 6-P:,& @)!AX 6.b&&6.7$@&@<$@i},l=-@@$7<,0 =67B:,%@,.7<,v  A &-@@"&( LOADING i}%(-@@"(( CAN'T RUN ;#@@K:0)@;@ A//@6i}@D:MENUD:MENU//@6@D:MENU A//@6hp10 *= $060020 COUNT1 = $00C030 VVBLKD = $022440 COUNT2 = $00C250 SETVBV = $E45C60 MUSIC = $066070 RETURN = $E46280 SNm}D = $D20090 VOL = $D2010100 ;0110 ; PLA FOR BASIC ACCESS0120 ;0130 PLA0140 ;0150 ; INITIALIZE COUNTERS TO ZERO01m}60 ;0170 LDA #00180 STA COUNT10190 STA COUNT20200 ;0210 ; NOW RESET DEFERRED VECTOR0220 ;0230 LDY #$200240 LDXm} #$060250 LDA #070260 JSR SETVBV0270 RTS0280 ;0290 ; MAIN INTERRUPT ROUTINE0300 ;0310 *= $06200320 INC COUNT1m}0330 LDX COUNT10340 CPX #12 ;TIME TO STOP NOTE?0350 BCC K1 ;NO0360 LDA #0 ;YES, SO STOP IT0370 STA VOL0380 K1 CPX #m}15 ;15/60 SECONDS GONE?0390 BCS PLAY ;YES, PLAY NEXT NOTE0400 JMP RETURN ;NO, END INTERRUPT0410 PLAY LDA #00420 STAm} COUNT1 ;RESET COUNT1 TO ZERO0430 LDX COUNT2 ;GET NOTE TO PLAY0440 LDA MUSIC,X ;LOOK IT UP0450 STA SND ;SET IT'S FREQUEm}NCY0460 LDA #$A60470 STA VOL ;SET PURE NOTE,VOLUME=60480 INC COUNT2 ;SET UP NEXT NOTE0490 LDX COUNT20500 CPX #8 ;Am}LL NOTES USED UP?0510 BCC DONE ;NO0520 LDA #0 ;YES, START OVER AGAIN0530 STA COUNT20540 DONE JMP RETURN ;ALL DONE055m}0 ;0560 ; TABLE OF MUSICAL NOTES0570 ;0580 *= $06600590 .BYTE 243,243,217,243,204,243,217,243P RETURN ;ALL DONE055lf@mm********************* FIRST, WE'LL POKE IN THE LINES FROM 130-270 OF THE ASSEq}MBLY LISTING ************(#/ #B!-A6AR%"+/ '104,169,0,133,192,133*194,160,32,162,6,169q}.7,32,92,228,962mm**************************** THEN WE'LL POKE IN THE MAIN ROUTINE *********************************q}****6/ #BP!-AhA%"+/ :230,192,166,192>224,12,144,5,169,0hB141,1,210,224,15,176PFq}3,76,98,228,169,08J133,192,166,194,189,96 N6,141,0,210,169,166R141,1,210,230,194,166U194,224,8,144,4,169q}Y0,133,194,76,98,228[mm****************************FINALLY, WE'LL POKE IN THE TABLE OF NOTES ************************q}*********]/ #BP!-A2A9%"+/ a243,243,217,243,204,243e 217,243gGG*********************q}*******NOW WE'LL RUN THE ROUTINE!!**********xi6-?:A6, D:MULTI.BAS243e 217,243gGG*********************pRNOH^SECBYTRECDESCHOICECBLANRECORARRASECTOBYTRCHOICNUMBEITEMLWAIG@@u} FFINVENTORu}Y TUTORIAL PROGRAM TO DEMONSTRATE RANDOM ACCESS UPDATING*** BY JERRY WHITE ***2R<9A,9A,;@0,;u}@0,;@,H6-R APd&&*** CREATE INITIAL DATA FILE ***n(-@@0$67<,. ( x6u}@6@@ D:DATAFILEK67@<@,.,K67@<@0,.,ITEM DESCRIPTION FIELDu}-@AM @)67@<@,.00C67@<@,.=:,M A L A(67@u}<@,.0B67@<@,.=:,L A 67@<@,.=:,6667@<@,.=:H:,$A%u}A,) @(!(RECORD %() @ AP,*** CREATE INDEX ***6%"@6-Au}% A@J A @@@@ D:DATAFILEJ Bh&-@A&@|u}.(.(RECORD  SECTOR  BYTE & 68,-68,-"@& %@@%6-@$$*u}** RANDOM ACCESS DATAFILE ***6@6@@ D:DATAFILET(>:A%,(2(TYPE D TO DISPLAY u}A RECORD5(T(TYPE U TO UPDATE A RECORD04DAD4UA X(>:AS, A@A()(TYPEu} RECORD NUMBER TO DISPLAY3 A7A B"" *!*"P:,A`4(>:AS,*(INVALID RECORD NUMBEu}R4 A@8,8, 5@(>:A%, (.(RECORD 1(5( B(%(PRESS ANY KEY FOR OPTIONS:u}7AdAUB@4G+F:Ad,AU)F:B2y,@=AdAUG APH A D(,( Tu}YPE RECORD NUMBER TO BE UPDATED6 A :D B"" *!*"P:,A `4(>:AS,*(INVALID RECORDu} NUMBER4 A @8,8,@(>:A%,((RECORD ((X($(TYPE 1 TO UPDATE u}QUANTITYE(TYPE 2 TO CHANGE DESCRIPTIONX(TYPE 3 TO EXIT A B7  @)!@)P:,-(>:u}AS,7 A$AAA8:@8,8,% @0@: APL\(1(&TYPE POSu}ITIVE NUMBER TO INCREASE ITEMS\(&TYPE NEGATIVE NUMBER TO DECREASE ITEMSt A B%6-A:7@<@u},,%6-%B!A (>:AS,8(ITEMS CANNOT EXCEED 999B AK (>:AS,A( ITEMS CANNOT Bu}E A LESS THAN ZEROK A M @)67@<@,.00C67@<@,.=:,M AL A(67u}@<@,.0B67@<@,.=:,L A'67@<@,.=:,' A((>:A%,(!(RECORDu} $((((2(2('TYPE NEW DESCRIPTION UP TO 22 POSITIONS<6-B:,P>!@"(>:AS,>(FIELD TOO LONG, u}EXTRA IGNOREDd"@"A x+-@"'67B:,%@,. + $67@ <@0,.$ A7(>:Au}S,(7(DATAFILE NOT ON DISK:TRAP 40000%-@A % AP((*** INITIAL DISPLAY OF OPTIONS ***u}b +@(@9(@ INVENTORY OPTIONS:D(@b(@ 1= CREATE FILEX(@/(@ u}2= DISPLAY/UPDATE:(@X(@ 3= END PROGRAMT@.@@K:;)@F@u}T6-&@H!! @)!@APU +@@90@UAAu}A`p" +@@"D:NOTPOINT.BAS@@90@UAAtC;;PLAYER-MISSILE MOVER SUBROUTINE;;BY TOM HUDSON;A.N.A.L.O.G. COMPUTING #10;;;PAGE ZERO USAGE;PMSTR=$CB;P/M BASy}IC STRINGPLADR=$CD;PLAYER ADDRESSPMEND=$CF;PLAYER IMAGE ENDXPOS=$D0;X POSITIONYPOS=$D1;Y POSITIONHOLD=$D4y};HOLD AREAPLNUM=$D5;PLAYER # TO MOVE;;OPERATING SYSTEM EQUATES;HPOSP0=$D000;;PROGRAM STARTS HERE!;ORG$600y}0;ANY ADDRESSSTARTCLD;CLEAR DECIMAL MODEPLA;DISCARDPLA;DISCARD # HIPLA;PULL PLAYER # LOSTAPLNUM;AND SAVy}E IT!PLA;PULL P/M BASE HICLC;ADD OFFSET TO GETADC#2;PLAYER MEMORY ADDRSTAPLADR+1;AND SAVE!PLA;PULL P/M BAy}SE LOSTAPLADR;AND SAVE!PLA;PULL STRING HISTAPMSTR+1;AND SAVE!PLA;PULL STRING LOSTAPMSTR;AND SAVE!PLA;y}DISCARD X HIPLA;PULL X LOSTAXPOS;AND SAVE IT!PLA;DISCARD Y HIPLA;PULL Y LOSTAYPOS;AND SAVE IT!PLA;DISy}CARD LENGTH HIPLA;PULL LENGTH LOCLC;ADD Y POSITIONADCYPOS;TO GET END STAPMEND;AND SAVE IT!LDXPLNUM;GET PLy}AYER#BEQENDCAL;NO INDEX NEEDED!PLCALCLDAPLADR;ADD 128 TOCLC;PLAYERADC#128;ADDRESSSTAPLADR;TOLDAPLADR+1y};POINT TOADC#0;NEXTSTAPLADR+1;PLAYER.DEX;ANOTHER ADJUSTMENT?BNEPLCALC;YES!ENDCALLDY#0;ZERO P/M COUNTLDy}X#0;ZERO STRING COUNTCOPYLPCPYYPOS;COPYING DATA YET?BCCZERO;NO!CPYPMEND;FINISHED COPYING?BCSZERO;YES!STYy}HOLD;SAVE Y REGTXA;MOVE X REG...TAY;TO Y REGISTERLDA(PMSTR),Y;GET P/M BYTELDYHOLD;GET P/M OFFSETSTA (PLADRy}),Y;CHANGE PLAYER!INX;NEXT STRING BYTE.LDA#0;FORCE BRANCHBEQNEXT;TO NEXT BYTE!ZEROLDA#0;ZERO OUT...STA(PLy}ADR),Y;PLAYER BYTE!NEXTINY;NEXT P/M BYTECPY#128;DONE W/COPY?BNECOPYLP;NOT DONE YET!LDXPLNUM;GET PLAYER #LDy}AXPOS;NOW JUST SETSTAHPOSP0,X;X LOCATION!RTS;FINIS!.ENDBNECOPYLP;NOT DONE YET!LDXPLNUM;GET PLAYER #LDxF!"PMMOVP0MOVPMBASPMPMXY }} ##*****************************##* P/M MOVER SUBROUTINE DEMO *##* *(}}##* BY TOM HUDSON *2##* *<##* A.N.A.L.O.G. COMPUTING *F##****************}}*************PZ##*********** SETUP ***********dn];A,;@0,$6-C:,8-@A<"H67}},.>:,L ]*READ ML DATA*x!!*** NOW READ SHAPE DATA ***+-@@"'67,.>:,+ U/6-P:+F:AE,}}%@,'@,$@;BByU*** SET UP P/M AREA ***6-$AV' 6-C:,'*** P/M DATA ADDRESS ***9}}AY@F'B2w@9*** P/M DMA ***.AA6.*** PLAYER 0 COLOR ***""**** YOUR PROGR}}AM HERE! ****6-A(6-@dG%6-@&P:H:,$@,G6-@&P:H:,$@, 6-}}%6-%% @P6-@P% Ap!A6-A% @ 6-@ % A!A}}6-A"$$6-?:<<<<<<@,, H:,!?A06 A@@J*** PM MOVER DATA }}***T^ff216,104,104,104,133,213,104,24,105,2,133,206,104,133,205,104,133,204,104,133,203,104,104,133,208hff104,104,}}133,209,104,104,24,101,209,133,207,166,213,240,16,165,205,24,105,128,133,205,165,206,105raa0,133,206,202,208,240,160,0,162~},0,196,209,144,19,196,207,176,15,132,212,138,168,177,203,164|``212,145,205,232,169,0,240,4,169,0,145,205,200,192,128,208,2~}24,166,213,165,208,157,0,208,96*** PLAYER IMAGE DATA ***!!255,129,129,231,129,129,255 D:PMOVER.B~}AS166,213,165,208,157,0,208,96*** PLAYER IMAGE DATA ***!!255,129,129,231,129,129,255 D:PMOVER.B|1C@%A2<0@/AR@< >:A%, ;@$,}-@@$"(67<,.>:,2 <6-?:C:,,Fd))162,0,173,11,212,201,32,208,249,141n++10,212,142},24,208,232,232,208,246,142x24,208,240,232 D:RAINBOW.BASd))162,0,173,11,212,201,32,208,249,141n++10,212,142ESBWSIZCCTIMXY ***********************}** ATARI 1020 PLOTTER ** SPHERE DEMONSTRATION *(* BY TOM HUDSON *2************************<}F$$*** OPEN IOCB 1 TO PLOTTER ***PZ##@@P:dn*** SET SPHERE RADIUS ***x }6-AP *** INITIALIZE PLOTTER ***++(@ *H*I*M0,6&@ *I*** SET SPHERE } CENTER ***6-A@6-*** START PLOTTING! ***6-@5(@M% },5*** START THE PLOT *** -@6@-A`@":"@6-%$E:,06 }-&+$G:,$G:,,: A@,$6-&+$G:,$G:,,$6-%$E:,6@!!*** DRAW LINE OF SPHERE ***JT(@ }D,^   hr*** DO NEXT DIRECTION ***|@6-%@"@6(@M,%@ Ap}""*** MOVE PAPER UP AT END ***&&(@H*M0,6&@ *I@ D:SPH1020.BAS}S.BSIZCCTIMXY@A`@@@@`A@wB6-@***RADIUS**}* (6-A`6-@(**CENTER** 6-@K +@$'0@@A0@}K@ ,%***START*** -@6@(-A`@2:"@6-%$E:,}06-&+$G:,$G:,,: @`7$6-&+$G:,$G:,,$6-%$E:,< /  Z/6-%@"@%,%/ @}0d"6-@ %H:@,$@0S6-%@%+H:@,$+A&+$@,,,6-%@%+H:@,$+A&+}$@,,, A6-@ @% *** ERASE HIDDEN LINES ***) )-@?P6-}$E:,6-$G:,< ,%%/&%!,%&+/&&/ 9@<$ D:SPHERE.BAS@?P6-b CY *********************** ATARI 1020 PLOTTER ** "SQUARE-WEB" DEMO *(* BY TOM H}UDSON *2**********************<F$$*** OPEN IOCB 1 TO PLOTTER ***PZ##@@P:d}n *** INITIALIZE PLOTTER ***x!!(@*H*I*M0,-400*I*** START PLOT LOOP ***-@ }A@ *** DRAW 4 LINES ***RR(@M ,380*D380,A&;A&,20;20,};,380 *** ALL DONE! ***(@H@D:SQWB1020.BAS,20;20,s  ]XY@@@PA@`A)q"0RVF @ 86-6}-@50@@@8%6-@6-@P%+@# ,(-@A@2)6-%}@!@P)6-@<6-'@6-F6-$E:,6-$G:,P% A@Z ,%%d$$}6-+%,'@$E:%%@,n$$6-+%,'@$G:%%@,x /%% 70@@@70@}@@'0@@' A70@@70@@@'0@ }@@' A70@@@70@@'0@@@' A !}A@-@@ $ D:SWIRL.BAS@@'0@@@' A 9#$ABFAFLSCCODDDDDDR@ #}  Analog System StatusVersion 1.1Copyrigh$}t (C) April, 1981(by Robert W. Hartman21;@ ,;@,;@,9@,;+MAR@_A%}Yq@@@@96-I:,6-Ad6-B2y<%@e%Noisy I/O off&}FSET UP SCREENP--@@"#-@)(|- Zp-@@((analog systat<-@@%'}H-N(Z-@`(lp d?-@8#-@)(5-@;(? nCHEAT(} (just a little)xu-@@)( =-@@&I-@O(S e-@@u( -)}Keyboard}-@@ #( -Screen5-@@C( -EditorU-@@e( -Cassetteq6-@}6*}-@& SYSTAT^ A1@@D1:*.*7-H( ı -Drive #1R A`^6-@T'@+}@D2:*.*-->( IJ -Drive #2H A`T6-@T'@@D3:*.*-->( ij,} -Drive #3H A`T6-@T'@@D4:*.*-->( Ĵ -Drive #4H A`T6-@7 A-}-@@R:7 ApY@ A8@@P:J-@@Y( .} -Printer MEMORYz-@@*(AmountofMemory<-@@ @(T-@@`-@ m)@/}v68,-z i-@@067<,.>:8,%A(,4 F-@@ J(\-@@!i(0} A#-@@ #$6-%@$|-@@)-@@J(>:%@H1}%A(,, N U(~~g-@@y( RS232-C ports|$L B'g-@#@,(Commands>-@$@ 2}L( -Menu(s)"~-@$@!)(-Run again ;-@$@"F(-EXITXAY@4r0@@3}@~AU,c@.@@K:;)@c@i*@w*@A68"4}@i++@e@5 AP8@"@%J MENU(S)T~-@#@"(4A5}@H-@ @"T-@$X(\ n-@$@!~( Enter Drive^# A-@7@!#h!! @6})!@Ar/"@*"@%6-@/ A |/"@*"@%6-@/ A /"7}@*"@%6-@/ A /"@*"@%6-@/ A  Ai (}-@@8}2(Menu for Drive #5(8(B APO6.D :*.*i67@<@,.=:,@ @@@@@9}K:( A@(6-%@\(7@:@(, &(5B:,!@O7@;}<@,4SEY A%%67B:,%@,. FREE SECTORS:-@B:,267<,.>:@:7<,,%A(,6 :(<}*AU)@'@*%!!Get rest of Menu After CharFAU)@.@@4(}=}F-@@, Ap@,(7@},@0 A@: B'g A D:SYSSTAT.BAS:@,"@"5@F:@,%@ J-F:@D  d* @ @hAAA Ar@ @AhA9 Aq At******@}*************** ** ATARI SYMBOL ** BY CRAIG WEISS ** **A}******************* ) +@$@)AY6-!!*** PLOT STRAIGHT LINES ***' B}",/'6-%@dZZ144,13,144,76,144,13,156,15,144,13,128,28,156,15,156,88,160,16,156,20,160,16,160,176C}n\\160,16,180,20,180,20,180,176,184,21,180,24,184,21,194,24,194,24,194,84,240,154,240,172xaa240,172,220,172,180,176,160,D}176,160,176,144,176,144,176,144,144,88,180,68,180,88,180,88,160==68,180,68,160,68,160,88,160,128,28,128,76,184,21,184,84E}*** PLOT FALSE CURVES ***VV128,77,126.5,94,126.5,94,124,108,124,108,120,122,120,122,112,137,112,137,104,F}145>>104,145,96,150,96,150,88,155,88,155,80,158,80,158,72,160VV144,76,142.5,94,142.5,94,140,108,140,108,135,122,135,1G}22,126,137,126,137,120,145LL120,145,114,151,114,151,108,155.5,108,155.5,100,158.5,100,158.5,88,160XX156,88,153.5,112,H}153.5,112,150,128,150,128,144,144,143,144,136,156,136,156,124,168BB124,168,112,176,112,176,102,179,102,179,96,180,96,180,I}88,180VV194,84,194,92,194,92,198,112,198,112,208,130.5,208,130.5,216,141,216,141,224,148%%224,148,232,152,232,152,240J},154HH184,84,186,104,186,104,189.5,120,189.5,120,196,136,196,136,204,14855204,148,216,160,216,160,228,168,228,168,240K},172UU182,122,184,132,184,132,188,140,188,140,196,152,196,152,208,164,208,164,220,172 @h@0"@hL}A6@ FILLJ6-' ",-'6-%@Ae@++@@M}S:dd144,13,144,76,144,76,142.5,94,142.5,94,140,108,140,108,135,122,135,122,126,137,126,137,120,145N}ZZ120,145,114,151,114,151,108,155.5,108,155.5,100,158.5,100,158.5,88,160,88,160,88,180""160,16,160,176,184,21,184,84O}HH184,84,186,104,186,104,189.5,120,189.5,120,196,136,196,136,204,14855204,148,216,160,216,160,228,168,228,168,239,171P} @ A"@ A(  *** MACHINE LANGUAGE ***  -AY@4)-@AQ}-  %-AdAs"!%  ((232,142,10,212,142,24,208,76,128,6 (?:Ad,$ $D:TARILOR}GO.BAS %-AdAs"!%  ((232,142,10,212,142,24,208,76,128,6 (?:Ad,$ $D:TARILOGnVARSNTB~;;@,56-F:A6,%F:A7T},$AV;6-~0(>:A%,,(ԠŠϠ0~a!6-F:,%F:%@,$AV26-F:%@,B"B%U})!W(ŠԠġa B%~ 6-% B%~%%( LINE#NXT LINE NXT STMNT~##(LSB/MSB OFFSV}ET OFFSET~EE( F:,/F:%@, F:%@, F:%@,~`(Ġ5-%@%W}&@A(F:, E H(\(à`!((Ҡſٯ !,7@<@,4Y"6-, BX}% D:TOKLOOK.BASà`!((Ҡſٯ !,7@<@,4Y"6-, B _ATRAPANAMEFILEIOCIGNSEd) (} )CLZ}EAR SCREEN AND VARIABLESn77PREVENT ERASURE OF PROGRAM ALREADY STORED ON DISKx11;@,;A$,;@,;@[},IISET UP DISK SUFFIX 'D:' FOR FILE NAME. IOCB IS FILE(DEVICE) NUMBER0 6.D:6-@$6-@06-@\}GNU=8 IS THE OUTPUT MODES6-A`!4SPRUNGI # FILE NAME DID NOT PREVIOUSLY EXISTS A  E]}NTER FILE NAME467@,.#6.SPRUNG4A  ALREADY EXISTS2(USE A DIFFERENT NAME7A ^}Ap  OPENED SUCCESSFULLY D:TRAP1.BAS EXISTS2(USE A DIFFERENT NAME7A TSATRAPNAMEFILEIOCISEd) } )CLEAR SCREEN A`}ND VARIABLESn&&;@,;@,;@,xaaSET UP DISK SUFFIX FOR FILE NAME. IOCB IF THE FILE(DEVICE) NUMBER. a}IN=4 IS THE INPUT MODE$ 6.D:6-@$6-@ooWRITE ERROR IF TRAP IS SPRUNG. IT IS GOOD PRACTICE TO CLOSE b}FILES TO PREVENT ERROR #129 IF YOU LOOP BACK;;TO A PREVIOUS PART OF YOUR PROGRAM THAT OPENS A FILE.6-A`c}Y4SPRUNG7(ERROR 170, FILE  NON-EXISTANTK-@AO Y ARRKEEPS MESSAGE ON SCREEN TEMPORARd}ILY BEFORE RETURNING TO BEGINNING OF PROGRAM@  TYPE IN FILE NAME< DO NOT INCLUDE 'D:' PREFIX@C67@,.e}CCONCATENATES FILE NAME ONTO DEVICE PREFIX 'D:'6.SPRUNGeeIF THE 'OPEN' STATEMENT WORKS, WE HAVE A VALID FILE Nf}AME ALREADY STORED ON DISK READY FOR INPUT&& FILE  OPENED SUCCESSFULLY D:TRAP2.Bg}AS ALREADY STORED ON DISK READY FOR INPUT&& FILE  OPENED SUCCESSFULLY D:TRAP2.B_1DATRAPANAMEFILEIOCIGNSEd) } )CLi}EAR SCREEN AND VARIABLESnCATCH END-OF-FILE ERRORx11;@,;A$,;@,;@,0 6.D:6-@j}$6-@06-@hh'D:' IS FILE NAME PREFIX. IN=4 IS INPUT MODE. GNU=8 IS OUTPUT MODE. IOCB IS DEVICE(FILE) NUk}MBERYYFIRST WE MUST CREATE A FILE AND PUT SOME DATA IN IT BEFORE TRYING TO READ THE DATA.< ENTER A FILE NAME< DOl} NOT INCLUDE THE 'D:' PREFIX:67@,.:CONCATENATES PREFIX AND FILE NAMEWRITE DATA ONm}TO FILE. FIRST SECOND LASTBBIT IS GOOD PRACTICE TO KEEP A FILE CLOSED WHEN NOT USEDn}>>FAILURE TO PROPERLY CLOSE A FILE CAN CAUSE IT TO BE LOSTREADY TO READ THE FILE6-Ao} "<<READ DATA FROM FILE AND PRINT EACH VALUE AS IT IS READ,   A6/* "FINISHED READING FILE SUCCp}ESSFULLY/@IIDELETE LINE 280 AND YOU WILL GET AN ERROR MESSAGE 136 (END OF FILE) D:TRAP3.BASD READING FILE SUCCj  ATRAPSEd) } )CLEAR SCREEN AND VARIABLESn&&CATCH DEVICE TIMEOUT ERROR # 138x55Yr}OU FORGOT TO TURN ON AN INPUT OR OUTPUT DEVICE;@,36-A@4CAUGHT3 TURN ON I/O DEVICE 6.s}CAUGHT 3PROGRAM RAN SUCCESSFULLY55RUN THIS PROGRAM WITH PRINTER TURNED ON AND OFFFFCHANGE LINE 160 TO USE DISt}K, INTERFACE, OR SOME OTHET I/O DEVICE D:TRAP4.BASGRAM WITH PRINTER TURNED ON AND OFFFFCHANGE LINE 160 TO USE DIS:SEd) } )CLEAR SCREEN AND VARIABLESn--READ DATA AND TRAP OUT-OF-DATA ERROR #6x>v}6-A@ >DELETE THIS LINE AND ERROR #6 WILL OCCUR"  A0 FINISHED READING DATA20,4,156,83,w}12 D:TRAP5.BASE THIS LINE AND ERROR #6 WILL OCCUR"  A0 FINISHED READING DATA20,4,156,83, I6-@ +@#6-P:y}A$H:@,,6-P:A$H:@,,6-@#6-@9(6-@y--@2z}-6@7,@&</@%P:',A/@F/@&P:',K/@&PF:Ad,A{}UUZ _6-%@d i0@n6-%@s @D:TRIANGLE.BASAz0100 ; FLICKERING STARFIELD0110 ; DLI SERVICE ROUTINE0120 ;0130 ; ADDRESS $D018 IS THE0140 ; COLOR/LUMINANCE REGISTER015}}0 ; OF PLAYFIELD 20160 ;0170 COLPF2 = $D0180180 ;0190 *=$6000200 ;0210 ; SAVE WHATEVER IS IN THE0220 ; X-REGISTER INT~}O PLAYFIELD0230 ; COLOR 2 HARDWARE REGISTER0240 ;0250 STX COLPF2 ; STORE COLOR0260 RTI ; RETURN FROM INTERRUPT0270 ;0}280 .ENDD0230 ; COLOR 2 HARDWARE REGISTER0240 ;0250 STX COLPF2 ; STORE COLOR0260 RTI ; RETURN FROM INTERRUPT0270 ;0 ]SDLSYPMBAPMdFLICKERING ST}ARFIELDnBY JOE TREM (c) 1982x;;SETS GRAPHICS 7 FULL SCREEN, DRAWS SURFACE WITH SOUND +@#AA}6)@=-AYY2@@e,@/@%H:,$@ 88CALCULATES} DISPLAY LIST, SETS SPEED OF PLAYER TO 016-16-F:A`,%F:Aa,$AV//SETS UP DLI FOR EACH GRAPHICS }7 SCAN LINE)-@@%%AA) 00READS MACHINE LANGUAGE ROUTINE INTO PAGE 6--@}")A6%- % @%SETS COLOR TO FLICKERPLOTS STARS WITH SOUNDY-@@P-2@}U,H:,$AYH:,$@uY <<SETS STARTING ADDRESS FOR DLI (PAGE 6) AND ENABLES DLI9A}'A@9BBASETS UP PLAYER/MISSILE 0l6-!AY@b86-F:A,&@2}DBByVB2w@l6-$AV%A$ AP"&&PLAYER/MISSILE COLOR, MOVE RIGHT,u3AP:H:},$@,$@%@I-@0A0UB2Hq2@@u 6 AP@%%PLAYER/MI}SSILE COLOR, MOVE LEFTJ3AP:H:,$@,$@%@J-A0@06VB2Hr2@}@v  ATTTROUTINE ERASES OLD PLAYER, DETERMINES SPEED, AND VERTICAL LOCATION OF PLAYER 0^K6-%@}!-%@/%3 ?!@K6-@hu"6-@0%H:,$AP0%@$F%%@A}U\%%@AUr%%@@$u$rMACHINE LANGUAGE DATA|142,24,208,64RRNOTE TO ASSEMBLY PROGR}AMMERS..WSYNC WAS NOT USED FOR MORE ERRATIC FLICKERINGD:USINGDLI.BASA|142,24,208,64RRNOTE TO ASSEMBLY PROGRM .NbOFNUMBEKE 1 AP1AUDCTL DEMO BY JERRY WHITE 6/2/82M-}@327 MTURN OFF ALL SOUNDSB('(ENTER A NUMBER BETWEEN 0 ANDB(255 THEN PRESS ‘}(#AdAU @0#2* 6-P:,* )!AU@0<UB7`AC'B7b@9B7d’}@KB7fA!UC MAJORF/-B7aB7g@+Ab/ P**DISTORTION=10 VOLUME=2 (10*16+2=16“}2)ZB7hAUDCTLd> -AC@`6@,B7`0 >SLIDE SOUNDnO((PRESS TO END=(PRESS”} ANOTHER KEY TO CONTINUEOAdAUxH6-F:Ad,"@(0@@3(=(BASICE(ISH**A•}U)F:B2y,@@ ) A )WHATCHA WANT? PRESSA KEY!Y +'0@@ 9@@–}<(YCLEAR SCREEN/LEFT MARGIN=5$($(This program was designed%(%(to demonstrate the effects$($(made —}possible by altering%(%(the Audio Control Register$($(at decimal location 53768((($d208).$ D:˜}AUDCTL.BAS altering%(%(the Audio Control Register$($(at decimal location 53768((($d208).$ D: "#cINITEXPLMAINCOORD1COORD2TO *******ƚ}******************* * GRAPHIC VIOLENCE DEMO * * A.N.A.L.O.G. COMPUTING *( * BY TOM HUDSON *2 ****ƛ}**********************<F88*** INITIALIZE THE GRAPHIC VIOLENCE SUBROUTINE ***P BZd##****************Ɯ}*************n##** YOUR PROGRAM GOES HERE! **x##***************************** A0'''*** INITIALIZATION SUBRƝ}OUTINE ***'F<;@A,;@),;AU,;@,;@,F#B$'_6-#-@@'"/6-ƞ}%=67<,.>:,A MA\( COORD1 ERR_.'_6-#-@@'"/6-%=67<,.>:,A MAƟ}\( COORD2 ERR_8']6-#-@@A'"/6-%=67<,.>:,A MAB7Z(INIT ERR]B']6-Ơ}#-@@)'"/6-%=67<,.>:,A MA!Z(EXPL ERR]L']6-#-@AU'"/6-ơ}%=67<,.>:,A MBfZ(MAIN ERR]V'*** SET UP PLOT BITS ***`'KAhA'Ai@H9ApƢ}@KAq@j'<<*** INITIALIZE GRAPHIC VIOLENCE ROUTINE AND RETURN ***t'..6-?:C:,>Ʋ}42,133,208,165,207,10,133,207,165,208,42,133,208,165,207L;7724,109,9,6,133,207,165,208,109,8,6,133,208,165,88V;::24,101,Ƴ}207,133,207,165,89,101,208,133,208,173,6,6,41`;223,168,190,32,6,142,10,6,173,6,6,74,74,24,101j;99207,133,207,165,208,105,ƴ}0,133,208,160,0,173,4,6,208t;7711,173,10,6,81,207,145,207,169,0,240,132,173,10,6~;))73,255,49,207,145,207,169,0,240,241Ƶ} D:VIOMAIN.BAS4,6,208t;7711,173,10,6,81,207,145,207,169,0,240,132,173,10,6~;))73,255,49,207,145,207,169,0,240,241130 REM ***************************140 REM * GRAPHIC VIOLENCE DEMO *150 REM * NUMBER 1 *160 REM *********ʷ}******************170 REM 180 REM *** SET UP GRAPHIC MODE 7 ***190 GRAPHICS 7+16200 REM *** SET OFF AN EXPLOSION ***210 ʸ}REM *** AT SCREEN CENTER ***220 A=USR(ADR(EXPL$),80,48)230 REM *** WAIT A FEW SECONDS ***240 FOR WAIT=1 TO 2000:NEXT Wʹ}AIT250 REM *** DO EXPLOSION AGAIN ***260 GOTO 220),80,48)230 REM *** WAIT A FEW SECONDS ***240 FOR WAIT=1 TO 2000:NEXT W4130 REM ***************************140 REM * GRAPHIC VIOLENCE DEMO *150 REM * NUMBER 2 *160 REM *********λ}******************170 REM 180 REM *** SET UP GRAPHICS 7 FULL SCREEN AND EXPLOSION COLOR ***190 GRAPHICS 7+16:SETCOLOR 2,15μ},15200 REM *** DRAW THE 'GROUND' ***210 COLOR 1:FOR Y=20 TO 95:PLOT 0,Y:DRAWTO 159,Y:NEXT Y220 REM *** TRAP ANY ERRORS TO ν}'THE END' ROUTINE ***230 TRAP 320240 REM *** RANDOMIZE START POINT FOR DROPPING BOMBS ***250 X=5+RND(0)*149:Y=RND(0)*3260ξ} REM *** ADVANCE THE BOMB AS IT DROPS ***270 COLOR 0:PLOT X,Y:Y=Y+3280 REM *** IF THE BOMB HITS COLOR 1, SET OFF EXPLOSION ο}***290 LOCATE X,Y,Z:IF Z=1 THEN A=USR(ADR(EXPL$),X,Y):GOTO 250300 REM *** NO HIT, CONTINUE DROP ***310 COLOR 2:PLOT X,Y:FO}R DELAY=1 TO 10:NEXT DELAY:GOTO 270320 REM *** 'THE END' ***330 GRAPHICS 7+16:SETCOLOR 2,15,15:COLOR 1340 REM *** PLOT 'TH}E END' ***350 RESTORE 400:FOR X=1 TO 22:READ FRX,FRY,TUX,TUY:PLOT FRX,FRY:DRAWTO TUX,TUY:NEXT X360 REM *** SET OFF 200 RAND}OM EXPLOSIONS ***370 FOR EXPL=1 TO 200:A=USR(ADR(EXPL$),40+RND(0)*75,20+RND(0)*55):FOR DELAY=1 TO 40:NEXT DELAY:NEXT EXPL38}0 REM *** LET EXPLOSIONS DIE, THEN RE-RUN THE DEMO ***390 FOR DELAY=1 TO 2000:NEXT DELAY:GOTO 190400 REM *** 'THE END' DATA} ***410 DATA 50,25,67,25,59,25,59,45,72,25,72,45,72,35,88,35,88,25,88,45,93,25,93,45,93,25,109,25,93,35,109,35420 DATA 93,4}5,109,45,50,50,50,70,50,50,67,50,50,60,67,60,50,70,67,70,72,70,72,50,72,50,88,70,88,70,88,50430 DATA 93,50,93,70,93,50,102,5}0,102,50,109,56,109,56,109,64,109,64,102,70,102,70,93,7072,70,72,50,72,50,88,70,88,70,88,50430 DATA 93,50,93,70,93,50,102,5912jVARTABLESTARCURADCHARCNVACNERREINSKITEM} ~k;@0,56-F:A0,%F:A1,$AV;6-G6-@S6-_6-k6-A(}~]6-(}E3+THE FOLLOWING VARIABLES ARE IN THIS PROGRAMY-@@P] ~% 6-F:,)"@:,% B}%~67<,.>:, B%$~ B%&~)6-%@6-%@) B%S33 TABLESTART= 43 T}ABLE END = &@S3# OF VARIABLES= &@"@:,' B%&"@:,6-&A(& B%"}&"@:,6-&A(& B%"36-&A(' @H)!@36-@  6-%@6-@ $ / 6}7%@<%@,.,6-/$4VAR$' B%E#3 ADDRESS= &%@/6-;6-}B6.E$ D:VARLST2.BAS/$4VAR$' B%E#3 ADDRESS= &%@/6-;6-"/