þþ]dX;BRICKWORKS - main listingnX;written by Chris YorkxX;ªX; I/O CONTROL BLOCK EQUATES´X; …ICCOMB†ICBADRD,†ICBLENH6†ICAUX1J@†ICAUX2KrX; X; IOCB COMMAND VALUE EQUATESšX;¤ „COPN® †CGBINR †CPBINR Ö †CCLOSE \ ƒCIOVäX;L „@CH V  `Q jT?tT?~T?ˆT?’>œ¦ $> °ºÄ „@CV Î  ØQ> âìQ ö  „@FL    !  ( ‚@F =2 Q>4‚@F< P†ICBADR9F Q>5‚@FPP†ICBADR9Zd Q>4 n P†ICBADR9x Q>5 ‚P†ICBADR9Œ– AŒ XIO macroAª „XIO ´ 3 ¾% AžXIO: wrong number of argumentsAÈÒ „@CH Ü „@CV æ P…ICCOM9ð  ú „@CV  P†ICAUX19 „@CV  P†ICAUX29",Q>6 P†ICAUX19@ P†ICAUX29JT 3 ^„@FL A‚S:Ahr „@@IO |„@FL @„@@IO:† ƒCIOš¤®A OPEN macroA¸ …OPEN   Ì& AŸOPEN: wrong number of argumentsAÖà  ê„XIO „COPN= = = = ôþ„XIO „COPN= = = = &A— BGET and BPUT macrosA0 „@GP : „@CH DQ> N P…ICCOM9X Q>4 b P†ICBADR9l Q>5 vP†ICBADR9€ Q>4 Š P†ICBLEN9” Q>5 žP†ICBLEN9¨ ƒCIO²¼ …BGET Æ  Ð' A BGET: wrong number of parametersAÚä„@GP = = =†CGBINRîø …BPUT   ' A BPUT: wrong number of parametersA *„@GP = = =†CPBINR4>° AŽ CLOSE macroAº †CLOSE Ä  Î ( A¡CLOSE: wrong number of parametersAØ â „@CH ì Q>†CCLOSEö P…ICCOM9  ƒCIO   X;CHARACTER SETS( X;2 eX;These are the custom characters that are used by BRICKWORKS for the building blocks.< X;F `P  =======Z  U=ª=U=ª=U=ª=U=ªd  »=î=»=î=»=î=»=în  î=î=î==î=î=î=x  ÿ=ÿ=ÿ=ÿ=ÿ=ÿ=ÿ=ÿ‚  ª=ª=ª=ª=U=U=U=UŒ  ª=ª=ª=ª=ª=ª=ª=ª–  ÿ=======ÿ   =~=B=B=B=B=~=ª  ÿ=™=™=ÿ=ÿ=™=™=ÿ´  3=Ì=3=Ì=3=Ì=3=̾  <=<=ÿ=ÿ=ÿ=ÿ=Ã=ÃÈ  ÿ===ÿ=ÿ===ÿÒ  ÿ==ÿ==ÿ==ÿ=Ü  ÿ=þ=ü=ø=ð=à=À=€æ  ÿ==?=====ð  ÿ=‚=„=ˆ== =À=€ú  ÿ=A=!== ===  =====<=~=ÿ  €=À=à=ð=ð=à=À=€  =$=B===B=$="  €=À=à=ð=ø=ü=þ=ÿ,  =====?==ÿ6  €=À= ==ˆ=„=‚=ÿ@  === ==!=A=ÿJ  ÿ=~=<=====T  =======^  =<=~=ÿ=ÿ=~=<=h  ===æ=æ=ÿ=ÿ=ÿr  ===g=g=ÿ=ÿ=ÿ|  |=þ=þ=þ=þ=þ=|=†  =======  ====8=p=à=Àš  =~=====~=¤  =B=$===$=B=®  ===f=f=ÿ=ÿ=ÿ¸  ===Û=Û=ÿ=ÿ=ÿ  |=þ=þ=î=þ=þ=|=Ì  ===ÿ=ÿ===Ö  À=à=p=8====à  =~=¥=$=$=¥=~=ê  ~=B=~=B=~=B=~=Bô  =======þ  ===ÿ=ÿ===  ===ø=ø===  =======  ===ÿ=ÿ===&  ===ø=ø===0   =@=¸=ü=~=>==6:  =======D  ===ÿ=ÿ===N  ===ø=ø===X  ~==¥==¥=™==~b  ==¼=ÿ===<=<= †HPOSP0Ð;;PLAYER 0 HPOSH …PMDATF;;PLAYER DATAR †RTCLOK;;R TIME CLOCK\ †STICK0x;;JOYSTICK 0p …COUNTz †CONSOLÐ;;CONSOLE KEYS„ †OPTION;;WHAT COLOR?Ž †SELECT;;WHAT BRICKS?˜ ‡STARTCH;;FIRST BRICK¢ X;;X (0-19)¬ Y;;Y (0-23)¶ †CHBASEô;;CHARACTER SETÀ „CHAR ;;BRICK SELECTEDÊ †PCOLR2Á;;COLOR PLAYER 2Ô †COLOR0Ä;;COLOR REG 0Þ …CHAR1 è ‡P2STARTE;;PLAYER 2 MEMò †HPOSP2Ð;;PLAYER 2 HPOSü †STRIG0„;;TRIGGER 0†SETVBV\ä;;SETS VBI†XITVBVbä;;LEAVE VBI†VBILOC ;;INTERRUPT LOC$†PMCHAR;;BRICK IN HAND.‚CHü;;LAST KEY PRESS8†KEYBUF;;GET CHARACTERBƒDLZ°;;CURRENT SCREENL „SMEMV…NUMPMÀF;;SCREEN NUMBER`†NMBASEˆà;;NUMBER DATAj…WHSCR;;WHICH SCREEN?t†HPOSP3Ð;;PLAYER 3 HPOS~‡PCOLOR3Â;;COLOR PLAYER 3ˆƒCX14;;CUT UPPER X VAL’ƒCY15;;CUT UPPER Y VALœƒCX26;;CUT LOWER X VAL¦ƒCY27;;CUT LOWER Y VAL°…ZCUT1²;;USED BY CUT FUNCº…ZCUT2´;;DITTOÄ…ZCUT3¶;;LIKEWISEÎ!†HEIGHT8;;CUT BUFFER HEIGHTØ…WIDTH9;;CUT BUFFER WIDTHâ‡CUTFLAG:ì†CUTBUF’;;CUT BUFFER LOCö†AUDCTLÒ;;AUDIO CONTROL …SKCTLÒ;;SERIAL PORT CNTRL …AUDF1Ò;;TONE FREQUENCY …AUDC1Ò;;DISTORTION/VOLUME$X;MEM LOCS FOR 8 SEPERATE SCREENS(2 =€=à==À=ƒ= =…< €=‡=`=‰=@=‹= =F ==à=PX;PLAYER/MISSLE DATAZFd- ===@=!== ===>=>====nX;x X; ÍÁÉΠÐÒÏÇÒÁÍ ÓÔÁÒÔÓ ÈÅÒÅ‚X;ŒJ–…START-;;CHILL DECIMALª †INITDL;;SET UP DLIST´Q>1¾ †SCRSWTÈ †CLRSCR;;CLEAR SCREENÒ …DISPT;;SHOW TITLEÜ †CLRSCR;;CLEAR SCREENæ …PMSET;;INIT P/M GRAPHðQ>3;;HAND X BEGINúPƒPMXQ> ;;HAND Y BEGINPƒPMYQ>;;HAND BEGINS AT"PX;;0,0 CARTESIAN,PY;;COORDINATES6 †GETCHR@Q>`;;ENABLE CUSTOMJP†CHBASE;;CHARACTERST …DRLIN;;DRAW DIVISION^ †UPDATE;;SHOW BRICKSh%†VBILOC;;ENABLE VBIr$†VBILOC;;FOR MOVEMENT|Q>;;OF HAND† †SETVBVX;*** MAIN PROGRAM LOOP ***š!†DOCTOR †READST;;READ JOYSTICK¤ „TRIG;;READ TRIGGER® †CONCHK;;READ CONSOLE¸ †KEYCHK;;READ KEYBOARDÂ!†DOCTOR;;ENDLESS LOOPÌX;INIT DLISTÖ†INITDLQ…DLIST;;PUT DL LOCàP„ZERO;;ON PAGE 0ê Q…DLISTô P„ZEROþ%>;;PUT GRAPHICQ>F;;MODE 1 ONP@„ZERO7;;THE SCREEN%>&Q>0†LISTLPP@„ZERO7:3D)>N H†LISTLPX :;;LATER!bX;SCREEN CLEAR ROUTINEl†CLRSCRQ>v%>€†CLRLP1P@†SCREEN7;;ROUTINEŠ3;;TO CLEAR”)>ð;;THE FIRSTžH†CLRLP1;;240 SPACES¨Q†SCREEN;;OF SCREEN² P„ZERO¼Q†SCREENÆ P„ZEROÐ,;;ADVANCE TOÚQ„ZERO;;BOTTOM HALFäO>ð;;OF SCREENî P„ZEROø Q„ZEROO>  P„ZEROQ> %>*†CLRLP2P@„ZERO7;;CLEAR THE43;;BOTTOM HALF>)>ð;;OF SCREENH H†CLRLP2R:èX;CLEAR PLAYER/MISSLE AREA…PMSETQ>>;;SET P/MP†SDMCTL;;GRAPHICSQ>;;TURN ON P/M$P†GRACTL;;GRAPHICS&Q>@;;SET P/M DATA(P†PMBASE;;POINTER.Q>8P†GPRIOR;;SET PRIORITIESBQ> LP†PCOLR0;;SET COLORSV P‡PCOLOR3`Q>È;;X VALUE FORjP†HPOSP3;;NUMERALt:;;GOODBYE!~$X;TIME DELAY FOR X NUMBER JIFFIESˆ …JIFFYQ>’ P†RTCLOKœ …JIFLP(†RTCLOK;;#JIFFIES IN X¦ H…JIFLP° :;;HAMMERºX;MOVE HAND UPÄ †HANDUPQYÎR>Ø F‡HANDUP1â ‚U8;;UP 8 SCAN LINESì"Yö ‡HANDUP1:X;MOVE HAND DOWN  †HANDWNQYR> F‡HANDWN1( ‚D8;;DOWN 8 SCAN LINES2#Y< ‡HANDWN1:FX;MOVE HAND NEP †HANDNEQXZR>d F‡HANDNE1nQYxR>‚ F‡HANDNE1Œ ‚NE;;UP 8 AND RIGHT 8–#X "Yª ‡HANDNE1:´X;MOVE HAND UP 8 SCAN LINES¾ ‚U8Q>È P…COUNTÒ „U8LP%ƒPMY;;ALL HAND MOVEMENTÜ1;;IS VBI DRIVENæ'ƒPMY;;HAND X AND Yð$>;;LOCATIONS AREú …JIFFY;;STORED IN PMX AND"…COUNT;;PMY Q…COUNTR>" H„U8LP,:6!X;MOVE HAND DOWN 8 AND RIGHT 8@ ‚SEQ>J P…COUNTT „SELP%ƒPMX^3h'ƒPMXr%ƒPMY|3†'ƒPMY$>;;SLOW MOVEMENT TOš …JIFFY;;MAKE IT VISIBLE¤ "…COUNT® Q…COUNT¸R> H„SELPÌ:Ö X;MOVE HAND DOWN 8 AND LEFT 8à ‚SWQ>ê P…COUNTô „SWLP%ƒPMXþ1'ƒPMX;;OVER...%ƒPMY3&'ƒPMY;;AND DOWN0$>: …JIFFYD "…COUNTN Q…COUNTXR>b H„SWLPl :;;GO BACKvX;MOVE HAND UP 8 AND LEFT 8€‚NWQ>;;SET LOOP FOR 8ŠP…COUNT;;CYCLES” „NWLP%ƒPMXž1¨'ƒPMX²%ƒPMY¼1Æ'ƒPMYÐ$>Ú …JIFFYä"…COUNT;;DECREASE COUNTERî Q…COUNTøR>;;EQUAL TO ZERO? H„NWLP;;NO  :;;YUPX;MOVE LEFT 8 COLOR CLOCKS ‚L8Q>;;SET THE COUNTER* P…COUNT4 „L8LP%ƒPMX>1;;CHANGE HPOSITIONH'ƒPMXR$>\ …JIFFY;;SLOW IT DOWNf"…COUNT;;DECREMENT COUNTERp Q…COUNTzR>„ H„L8LPŽ:;;GOOD DAY, EH!˜X;MOVE RIGHT 8 COLOR CLOCKS¢‚R8Q>;;SET THE COUNTER¬ P…COUNT¶ „R8LP%ƒPMXÀ3;;UPDATE HPOSITIONÊ'ƒPMXÔ$>Þ …JIFFY;;SLOW IT DOWNè"…COUNT;;DECREMENT COUNTERò Q…COUNTüR> H„R8LP :;;LATER!X;MOVE DOWN 8 SCAN LINES$ ‚D8Q>.P…COUNT;;SET COUNTER8 „D8LP%ƒPMYB3;;CHANGE YPOSITIONL'ƒPMYV$>` …JIFFY;;SLOW IT DOWNj"…COUNT;;DECREMENT COUNTERt Q…COUNT~R>ˆ H„D8LP’ :;;GO BACKœX;MOVE HAND NE¦ ‚NEQ>°P…COUNT;;SET THE COUNTERº „NELP%ƒPMXÄ3Î'ƒPMX;;MOVE HAND RIGHT 1Ø%ƒPMYâ1ì'ƒPMY;;MOVE HAND UP 1ö$> …JIFFY;;SLOW IT DOWN "…COUNT;;DECREMENT COUNTER Q…COUNTR>( H„NELP2:;;EXIT SUBROUTINE<X;MOVE HAND RIGHTF†HANDRTQX;;IS HAND ALL THEPR>;;WAY RIGHT?Z F‡HANDRT1d ‚R8;;NOn#Xx‡HANDRT1:;;LEAVE SUB‚X;MOVE HAND LEFTŒ†HANDLTQX;;IS HAND ALL THE–R>;;WAY LEFT?  F‡HANDLT1ª ‚L8;;NO´"X¾‡HANDLT1:;;BYE!ÈX;MOVE HAND SEÒ†HANDSEQX;;IS HAND ALL THEÜR>;;WAY RIGHT?æF‡HANDSE1;;YUPðQY;;IS HAND ALL THEúR>;;WAY DOWN?F‡HANDSE1;;YUP ‚SE;;NOPE#X"#Y,‡HANDSE1:;;ALL DONE!!!6X;MOVE HAND SW@†HANDSWQX;;IS HAND ALL THEJR>;;WAY LEFT?TF‡HANDSW1;;YUP^QY;;IS HAND ALL THEhR>;;WAY DOWN?rF‡HANDSW1;;YUP| ‚SW;;NOPE†"X#Yš‡HANDSW1:;;TAKE OFF!¤X;MOVE HAND NW®†HANDNWQX;;IS HAND ALL THE¸R>;;WAY LEFT?ÂF‡HANDNW1;;YES!ÌQY;;IS HAND ALL THEÖR>;;WAY UP?àF‡HANDNW1;;UH-HUHê ‚NW;;NO WAY, JOSE!ô"Xþ"Y‡HANDNW1:;;HAMMERX;READ STICK & UPDATE HAND†READSTQ†STICK0&R>;;STICK FORWARD?0 H„STNE;;NO: †HANDUP;;YESD:N„STNER>;;STICK NE?X H„STRT;;NOb †HANDNE;;YESl:v„STRTR>;;STICK RIGHT?€ H„STSE;;NOŠ †HANDRT;;YES”:ž„STSER>;;STICK SE?¨ H„STDN;;NO² †HANDSE;;YES¼:Æ„STDNR> ;;STICK BACK?Ð H„STSW;;NOÚ †HANDWN;;YESä:î„STSWR> ;;STICK SW?ø H„STLT;;NO †HANDSW;;YES :„STLTR> ;;STICK LEFT?  H„STNW;;NO* †HANDLT;;YES4:>„STNWR> ;;STICK NW?H H„STNO;;NOR †HANDNW;;YES\ „STNO:fX;DRAW DIVIDERp…DRLINQ†SCREEN;;GET STARTINGzP„ZERO;;SCREEN LOCALE„Q†SCREENŽ P„ZERO˜,;;MOVE HALFWAY¢Q„ZERO;;DOWN SCREEN¬O>ȶ P„ZEROÀ Q„ZEROÊO>Ô P„ZEROÞ,;;MOVE DOWN TOèQ„ZERO;;LOCALE WHERE THEòO>È;;DIVIDING LINEüP„ZERO;;SHOULD START? Q„ZEROO> P„ZERO$Q>?.%>8…LINLPP@„ZERO7;;DRAW THEB3;;LINE ACROSSL)>V H…LINLP`:jX;CHECK CONSOLEt†CONCHKQ†CONSOL~R>;;NO KEY PRESSED?ˆH„CON1;;NOPE’ :;;YESœ„CON1R>;;OPTION PRESSED?¦ HƒSEL;;NO°,ºQ†OPTION;;CHANGE THE COLORÄO>@Î P†OPTIONØ!†UPDATE;;UPDATE BRICKSâƒSELR>;;SELECT PRESSED?ìH…GOBAK;;NOö,Q†SELECT;;CHANGE BRICKS O>;;AND CHECK FOR,;;POINT TO WRAPR>,;;BACK TO THE(D„CON2;;FIRST BRICKS2Q><„CON2P†SELECTF!†UPDATE;;UPDATE BRICKSP…GOBAK:;;EXIT SUBROUTINEZX;ROUTINE TO UPDATE BRICKSd †UPDATE,nQ†OPTION;;GET COLORxO†SELECT;;ADD BRICKS‚P‡STARTCH;;=FIRST CHARŒQ†SCREEN;;PUT SCREEN–P„ZERO;;LOC ON PAGE Q†SCREEN;;ZEROª P„ZERO´,¾Q„ZERO;;MOVE HALF-ÈO>Ò;;WAY DOWNÒP„ZERO;;THE SCREENÜ Q„ZEROæO>ð P„ZEROú,;;MOVE THEQ„ZERO;;REST OF THEO>Õ;;WAY DOWN P„ZERO" Q„ZERO,O>6 P„ZERO@%>J$‡STARTCH;;GET 1ST CHT…CONLPA;;PUT IN A^P@„ZERO7;;SHOW BRICKh3;;ADVANCE BYr3;;2 SPACES|2;;+ COUNTER†)>;;IS = 14?H…CONLP;;NOPEš,;;SHOW THE¤Q„ZERO;;NEXT ROW®O>(;;OF BRICKS¸P„ZERO;;IN THE SAMEÂQ„ZERO;;MANNER ASÌO>;;BEFOREÖ P„ZEROà%>ê †CONLP2Aô P@„ZERO7þ3 3 2 )>& H†CONLP20 „STAYQ†CONSOL;;GET CONSOLE: R>;;PRESSED?D H„STAY;;YUPN !…GOBAK;;NOX $X;DETERMINE SCR LOC IF TRIG PRESSb †SCRLOCQ†SCREEN;;PUT SCREENl P„ZERO;;LOC ON PAGEv Q†SCREEN;;ZERO€ P„ZEROŠ %>” ‡SCRLOC1)Y;;ON THIS ROW?ž F‡SCRLOC2;;YES¨ ,;;NO WAY!² Q„ZERO¼ O>;;NEXT ROWÆ P„ZERO;;UPDATE PAGE 0Ð Q„ZEROÚ O>ä P„ZEROî 3;;ROW COUNTERø !‡SCRLOC1;;TRY AGAIN!‡SCRLOC2,;;ADD HORIZONTAL !Q„ZERO;;POSITION AND!OX;;UPDATE PAGE 0 ! P„ZERO*! Q„ZERO4!O>>! P„ZEROH!:;;LEAVE (QUICKLY!)R!X;GET CHARACTER\!.†GETCHR †SCRLOC;;GET MEM LOC HAND POINTS TOf!%>p!Q@„ZERO7;;GET THAT CHARz!P„CHAR;;STORE IT„!M>?Ž! P…CHAR1˜!%>¢! '„ZERO¬!%†CHBASE;;PUT CHBASE¶!'„ZERO;;IN PAGE ZEROÀ!%>Ê!‡GETCHR1)…CHAR1Ô! F‡GETCHRXÞ!,è! Q„ZEROò!O>;;FIND BRICKü!P„ZERO;;IN THE CHAR"Q„ZERO;;SET"O>" P„ZERO$"3." !‡GETCHR18"‡GETCHRX%>B"‡GETCHRYQ@„ZERO7;;STOREL"P†PMCHAR8;;BRICK DATAV"3;;IN PLAYER`")>j" H‡GETCHRYt" Q†OPTION~"R>;;COLOR 0?ˆ"H‡GETCHR3;;NO’"Q†COLOR0;;YESœ"P†PCOLR2;;PLAYER HUE¦"‡GETCHR3Q†OPTION°"R>@;;COLOR 1?º"H‡GETCHR4;;NOÄ"Q†COLOR0;;YESÎ"P†PCOLR2;;PLAYER HUEØ"‡GETCHR4Q†OPTIONâ"R>€;;COLOR 2?ì"H‡GETCHR5;;NOö"Q†COLOR0;;YES#P†PCOLR2;;PLAYER HUE #‡GETCHR5Q†OPTION#R>À;;COLOR 3?#H‡GETCHR6;;NO(#Q†COLOR0;;YES2#P†PCOLR2;;PLAYER HUE<#‡GETCHR6:;;FINISHEDF#"X;POSITION HAND AND BRICK (VBI)P#…P2POS$ƒPMXZ#&†HPOSP0;;HAND HPOSd#0n#0x#0‚#&†HPOSP2;;BRICK HPOSŒ#Q>–#%> # †P2POS1P‡P2START8;;ERASE HANDª#P‡PMSTART8;;AND BRICK´#3¾#)>æÈ# H†P2POS1Ò#$ƒPMY;;READ HANDÜ#%>;;AND BRICKæ#†P2POS2Q†PMCHAR8;;DATA INTOð#P‡P2START9;;PLAYERS ATú#Q…PMDAT8;;PROPER YPOS$ P‡PMSTART9$3$2"$)>,$ H†P2POS26$!†XITVBV;;LEAVE VBI!@$X;CHECK BUTTONJ$„TRIGQ†STRIG0T$R>;;TRIG PRESS?^$F…TRIG1;;YESh$ :;;NOPEr$ …TRIG1QY|$,†$R>;;ON DIVIDER?$H…TRIG2;;NOš$ :;;YUP¤$…TRIG2D…TRIG3;;BELOW LINE?®$ †GETCHR;;YES¸$:Â$…TRIG3 †SCRLOC;;GET WHEREÌ$%>Ö$ Q„CHARà$P@„ZERO7;;DROP BRICKê$:ô$X;CHECK FOR KEY PRESSþ$†KEYCHK…OPEN ===A‚K:A%Q‚CH%R>ÿ;;KEY PRESSED?%H„KEY1;;YES&%†CLOSE ;;NO0% :;;LEAVE:%/„KEY1…BGET =†KEYBUF=;;WHICH KEY WAS IT?D% †CLOSE N% Q†KEYBUFX%R>};;CLEAR KEY?b% H„KEY2;;NOl%!…CLEAR;;SURELYv%„KEY2,;;WAS IT A NUMBER€%R>1;;KEY (1-8)?Š%D„KEY3;;NO WAY”% ,;;YUPž%R>9¨% E„KEY3²%!†SCRSWT;;SWITCH SCREEN¼%„KEY3R><;;LESS THAN KEY?Æ%H„KEY4;;NOPEÐ%!„SCRD;;BACK A SCREENÚ%„KEY4R>>;;MORE THAN KEY?ä%H„KEY5;;NOPEî%!„SCRU;;AHEAD A SCREENø%„KEY5R>;;CTRL-S?&H„KEY6;;NOPE &!„SAVE;;SAVE SCREENS&„KEY6R> ;;CTRL-L &H„KEY7;;NOPE*&!„LOAD;;LOAD SCREENS4&„KEY7R>C;;C KEY PRESSED?>&H„KEY8;;NOPEH&!ƒCUT;;CUT IT OUT!!!R&„KEY8R>P;;P KEY PRESSED?\&H„KEY9;;NOPEf&!…PASTE;;PASTE IT BACKp&„KEY9R> ;;SPACEBAR PRESSED?z&H…KEY10;;NOPE„&!…CHCOL;;CHANGE COLORSŽ&…KEY10R>B;;B KEY PRESSED?˜&H…KEY11;;NOPE¢&%>¬&!…STCOL;;BACKGROUND COLOR¶&…KEY114;;TAKE A REST!À&Q>ÿÊ&P‚CH;;STORE NULCHARÔ& :;;RETURNÞ&X;CLEAR SCREENè&…CLEAR †CLRSCR;;CLEAR SCREENò& …DRLIN;;DRAW LINEü& †UPDATE;;UPDATE BRICKS':;;ALL DONE'X;SWITCH SCREENS' †SCRSWT,$'S>0.' P…WHSCR8'…INTERQ…WHSCR;;SCREEN #B'T?;;TIMES 2L'>;;PUT IN XV'Q„SMEM9;;GET MEM FOR`'P†SCREEN;;THAT SCREEEN ANDj'2;;PUT ON PAGE ZEROt' Q„SMEM9~'P†SCREENˆ'Q…DLIST;;DO THE’'PƒDLZ;;ACTUAL PAGEœ'Q…DLIST;;FLIPPING¦' PƒDLZ°',º'QƒDLZÄ'O>Î'PƒDLZØ' QƒDLZâ'O>ì' PƒDLZö'0(%> ( Q„SMEM9( P@ƒDLZ7(3((22( Q„SMEM9<( P@ƒDLZ7F( …DRLIN;;DRAW LINEP( †UPDATE;;UPDATE BRICKSZ( †NUMSCR;;CHANGE SCREEN #d( :;;HAMMER!n(X;DISPLAY NUMBER OF SCREENx(†NUMSCRQ…WHSCR;;GET SCREEN#‚(T?;;TIMES 2Œ(T?;;TIMES 4–(T?;;TIMES 8 (?;;PUT IN Yª($>´(‡NUMSCR1Q†NMBASE8;;READ CHAR¾(P…NUMPM9;;DATA FOR #È(3;;AND PUT INÒ( 2;;PLAYERÜ((>æ( H‡NUMSCR1ð(:;;GET OUT!!!ú(X;GO BACK ONE SCREEN)„SCRD"…WHSCR;;DEC SCREEN #)Q…WHSCR;;AND CHECK WRAP)R>ÿ") H…SCRD1,)Q>6) P…WHSCR@)!…SCRD1!…INTER;;IF O.K., SWITCHJ)X;GO AHEAD ONE SCREENT)„SCRU#…WHSCR;;INC SCREEN #^)Q…WHSCR;;AND CHECK WRAPh)R>r) H…SCRU1|)Q>†) P…WHSCR)!…SCRU1!…INTER;;IF O.K., SWITCHš)!X;ROUTINE TO ACCEPT A FILENAME¤) „FNG1;®) „FNG2<¸) „FNG3=Â) „FNG4>Ì) „FNG5?Ö) ƒFNZ¸à)…FNGETQ†SCREEN;;SWITCH TOê)P„FNG1;;INPUT SCREENô)Q†SCREENþ) P„FNG2*Q>€* P†SCREEN*Q>–&*P†SCREEN0* Q…DLIST:*PƒFNZD* Q…DLISTN* PƒFNZX*,b*QƒFNZl*O>v*PƒFNZ€* QƒFNZŠ*O>”* PƒFNZž*%>¨* Q†SCREEN²* P@ƒFNZ7¼*Q†SCREENÆ*3Ð* P@ƒFNZ7Ú* †CLRSCR;;CLEAR SCREENä* Q†SCREENî*PƒFNZø*Q†SCREEN+ PƒFNZ +,;;POSITION CURSOR+QƒFNZ +O>È*+PƒFNZ4+ QƒFNZ>+O>H+ PƒFNZR+Q>à;;RESTORE NORMAL\+P†CHBASE;;CHARACTER SETf+ !†FNGET1p+‚FN A‚D:A;;DISK HEADERz+ƒFN1;;FILENAME SPACE„+ A„.PICA=›;;EXTENDERŽ+‚PR AˆÆÎÁÍÅ¿ *A;;PROMPT˜+†FNGET1Q> ;;CLEAR OUT THE¢+%>;;DATA SPACE¬+†FNGET9PƒFN18;;FOR THE EIGHT¶+3;;CHARACTERÀ+)>;;FILENAMEÊ+ H†FNGET9Ô+%>Þ+$>è+†FNGET2Q‚PR8ò+ P@ƒFNZ7ü+3,)>, H†FNGET2,%>$,†FNGET3'„FNG4., &„FNG58,…OPEN ===A‚K:A;;GET AB,…BGET =„FNG3=;;KEYBOARDL,†CLOSE ;;CHARACTERV, %„FNG4`, $„FNG5j, Q„FNG3t,R>~;;BACKSPACE?~,H…FNGT1;;NOPEˆ,!†BACKSP;;YUP’,…FNGT1R>›;;RETURN KEY?œ,H†FNGET4;;NO¦,!†RETURN;;YES°,†FNGET4,;;PUT THATº,R>A;;CHARACTER ONÄ,D†FNGET3;;THE SCREEN IFÎ,R>[;;IT IS A LETTERØ, E†FNGET3â,,ì,S>ö, P@ƒFNZ7-, -O> - PƒFN19-Q> (-32-2<- P@ƒFNZ7F-(>P- F…EIGHTZ- !†FNGET3d-…EIGHT'„FNG4;;THIS ROUTINEn-&„FNG5;;HANDLES THEx-…OPEN ===A‚K:A;;EIGTH‚- …BGET =„FNG3=;;CHARACTERŒ-†CLOSE ;;INDEPENDANTLY–- %„FNG4 - $„FNG5ª- Q„FNG3´-R>~¾- F†BACKSPÈ-R>›Ò- F†RETURNÜ- !…EIGHTæ-†BACKSP)>;;IF USER IS NOTð-H‡BACKSP1;;ON THE FIRSTú-!†FNGET3;;LETTER, THEN.‡BACKSP1Q> ;;BACK UP A.,;;CHARACTER.S>". P@ƒFNZ7,.,6.O>@. PƒFN19J.0T.1^.Q> h. P@ƒFNZ7r. !†FNGET3|.†RETURN)>;;IF THE RETURN†.H…RETRN;;KEY WAS.7;;PRESSED, ANDš.7;;EVERYTHING¤. ‡RESTORE;;CHECKED OUT®.:;;THEN GET GOING¸. …RETRNQ>Â. P@ƒFNZ7Ì.Q>.Ö. PƒFN19à.2ê.Q>Pô. PƒFN19þ.2/Q>I/ PƒFN19/2&/Q>C0/ PƒFN19:/2D/Q>›N/ PƒFN19X/:b/‡RESTOREQ„FNG1;;ROUTINE TOl/P†SCREEN;;GO BACK TOv/Q„FNG2;;REGULAR€/P†SCREEN;;DISPLAYŠ/ Q…DLIST”/PƒFNZž/ Q…DLIST¨/ PƒFNZ²/,¼/QƒFNZÆ/O>Ð/PƒFNZÚ/ QƒFNZä/O>î/ PƒFNZø/%>0 Q„FNG1 0 P@ƒFNZ703 0 Q„FNG2*0 P@ƒFNZ740Q>`;;RESTORE THE>0P†CHBASE;;MODIFIED CHSETH0 …DRLINR0 †UPDATE\0:f0X;SAVE SCREENS TO DISKp0„SAVE …FNGET;;GET FILENAMEz0…OPEN ===‚FN„0I…NOERR;;ERROR?Ž0!‡RESTORE;;YES˜0 …NOERR¢0X;SAVE ROUTINE¬0X;¶0…BPUT =€=ÿÀ0…BPUT =ÿ€=ÿÊ0…BPUT =þ=ÿÔ0…BPUT =ý‚=ÿÞ0…BPUT =üƒ=ÿè0…BPUT =û„=ÿò0…BPUT =ú…=ÿü0…BPUT =ù†=ÿ1…BPUT =ø‡=ÿ1…BPUT =÷ˆ=ÿ1…BPUT =ö‰=ÿ$1…BPUT =õŠ=ÿ.1…BPUT =ô‹=ÿ81…BPUT =óŒ=ÿB1…BPUT =ò=ÿL1…BPUT =ñŽ=ÿV1…BPUT =ð=ÿ`1…BPUT =Ä=j1 †CLOSE t1 ‡RESTORE~1:ˆ1X;LOAD SCREENS FROM DISK’1„LOAD …FNGET;;GET FILENAMEœ1…OPEN ===‚FN¦1I†NOERR1;;ERROR?°1!‡RESTORE;;YESº1 †NOERR1Ä1X;LOAD ROUTINEÎ1X;Ø1…BGET =€=ÿâ1…BGET =ÿ€=ÿì1…BGET =þ=ÿö1…BGET =ý‚=ÿ2…BGET =üƒ=ÿ 2…BGET =û„=ÿ2…BGET =ú…=ÿ2…BGET =ù†=ÿ(2…BGET =ø‡=ÿ22…BGET =÷ˆ=ÿ<2…BGET =ö‰=ÿF2…BGET =õŠ=ÿP2…BGET =ô‹=ÿZ2…BGET =óŒ=ÿd2…BGET =ò=ÿn2…BGET =ñŽ=ÿx2…BGET =ð=ÿ‚2…BGET =Ä=Œ2 †CLOSE –2( ‡RESTORE;;PUT DISPLAY BACK TO NORMAL 2:ª2X;CUT ROUTINE´2ƒCUT …WRCUT;;WRITE 'CUT'¾2„CUTE †READST;;UPDATE HANDÈ2 Q†STRIG0Ò2R>;;TRIGGER PRESSED?Ü2F„CUT1;;YUPæ2!„CUTE;;NOPEð2„CUT1QY;;GET HAND YPOSú2R>;;IS BELOW DIVIDER?3E„CUTE;;YES3 „BEEP;;NOPE, MAKE SOUND3QX;;GET HAND X"3PƒCX1;;STORE IT,3QY;;GET HAND Y63PƒCY1;;STORE IT@3„KEEPQ†STRIG0J3R>;;TRIGGER PRESSED?T3F„KEEP;;YES^3„CUT2 †READST;;UPDATE HANDh3 Q†STRIG0r3R>;;TRIGGER PRESSED?|3F„CUT3;;SURE†3!„CUT2;;NO WAY3 „CUT3,š3QY¤3R>;;IS BELOW LINE?®3E„CUT2;;YES¸3QXÂ3RƒCX1;;IS X>1ST XÌ3 D„CUT2;;NOÖ3QYà3RƒCY1;;IS Y>1ST Yê3 D„CUT2;;NOô3 „BEEP;;YES, MAKE SOUNDþ3QX;;GET HAND X4PƒCX2;;STORE IT4QY;;GET HAND Y4PƒCY2;;STORE IT&4 Q†SCREEN04 P…ZCUT2:4Q†SCREEND4 P…ZCUT2N4 Q…ZCUT3X4 P…ZCUT1b4 Q…ZCUT3l4 P…ZCUT1v4%>;;THE REST OF€4„CUT4Q@…ZCUT27;;THIS ROUTINEŠ4P@…ZCUT17;;STORES THE”4 3;;CUT OUTž4)>È;;RECTANLGE¨4H„CUT4;;IN MEMORY²4,¼4 Q…ZCUT1Æ4O>ÈÐ4 P…ZCUT1Ú4 Q…ZCUT1ä4O>î4 P…ZCUT1ø4,5 Q…ZCUT2 5O>È5 P…ZCUT2 5 Q…ZCUT2*5O>45 P…ZCUT2>5%>H5„CUT5Q@…ZCUT27R5 P@…ZCUT17\53f5)>Èp5 H„CUT5z5Q>„5 P‡CUTFLAGŽ5…KEEP1Q†STRIG0˜5R>;;IS TRIG PRESSED?¢5F…KEEP1;;YES¬5 …DRLIN;;NO, DRAW DIVIDER¶5 :;;LEAVEÀ5X;PASTE FUNCTIONÊ5…PASTEQ‡CUTFLAGÔ5R>;;BUFFER FULL?Þ5F†PASTE1;;YESè5:;;NOò5"†PASTE1 ‡WRPASTE;;WRITE 'PASTE'ü5,6QƒCX2;;FIND THE WIDTH OF6SƒCX1;;THE CUT BUFFER6 P…WIDTH$6,.6QƒCY2;;FIND THE HEIGHT86SƒCY1;;OF THE CUT BUFFERB6 P†HEIGHTL6†PASTE2 †READST;;UPDATE HANDV6 Q†STRIG0`6R>;;TRIGGER PRESSED?j6F†PASTE3;;YESt6!†PASTE2;;NOPE~6 †PASTE3QYˆ6R>;;BELOW LINE?’6E†PASTE2;;YUPœ6,;;NO¦6Q…WIDTH;;CALCULATE WHETHER°6R>ÿ;;THE RECTANGLEº6F†PASTE4;;WILL FIT ON THEÄ6,;;SCREEN WHERE ITÎ6OX;;HAS BEEN PLACEDØ6,â6R>ì6 D†PASTE4ö6 !†PASTE27 †PASTE4, 7 Q†HEIGHT7R>ÿ7 F†PASTE5(7,27OY<7,F7R>P7 D†PASTE5Z7 !†PASTE2d7†PASTE5 „BEEP;;MAKE SOUNDn7 †SCRLOCx7Q„ZERO;;THE REST OF THE‚7P…ZCUT2;;PASTE ROUTINEŒ7Q„ZERO;;PLACES THE–7P…ZCUT2;;RECTANGLE ON 7Q…ZCUT3;;THE SCREENª7 P…ZCUT1´7 Q…ZCUT3¾7 P…ZCUT1È7%ƒCY1Ò7)>Ü7 F†PASTEAæ7 †PASTE6,ð7 Q…ZCUT1ú7O>8 P…ZCUT18 Q…ZCUT18O>"8 P…ZCUT1,8168)>@8 H†PASTE6J8 †PASTEA,T8 Q…ZCUT1^8OƒCX1h8 P…ZCUT1r8 Q…ZCUT1|8O>†8 P…ZCUT18 $†HEIGHTš82¤8†PASTE9%…WIDTH®83¸8†PASTE7Q@…ZCUT17Â8 P@…ZCUT27Ì81Ö8)>ÿà8 H†PASTE7ê8,ô8 Q…ZCUT1þ8O>9 P…ZCUT19 Q…ZCUT19O>&9 P…ZCUT109,:9 Q…ZCUT2D9O>N9 P…ZCUT2X9 Q…ZCUT2b9O>l9 P…ZCUT2v90€9(>ÿŠ9 F†PASTE8”9 !†PASTE9ž9†PASTE8Q†STRIG0¨9R>;;TRIG PRESSED?²9F†PASTE8;;YES¼9 …DRLIN;;NO, DRAW LINEÆ9:;;TAKE OFF!Ð9%X;WRITE THE WORD CUT ON THE SCREENÚ9…WRCUT …DRLIN;;DRAW DIVIDERä9%>î9 Q>ø;;Cø9 P@„ZERO7:3 : Q>ù;;U: P@„ZERO7 :3*: Q>ú;;T4: P@„ZERO7>::;;MAKE HASTEH:'X;WRITE THE WORD PASTE ON THE SCREENR: ‡WRPASTE …DRLIN;;DRAW DIVIDER\:%>f: Q>»;;Pp: P@„ZERO7z:3„: Q>¼;;AŽ: P@„ZERO7˜:3¢: Q>½;;S¬: P@„ZERO7¶:3À: Q>º;;TÊ: P@„ZERO7Ô:3Þ: Q>¾;;Eè: P@„ZERO7ò::;;GOOD-BYE!ü:X;MAKE A SHORT BEEPING SOUND; „BEEPQ>; P†AUDCTL;Q>$; P…SKCTL.;Q>2;;SET TONE8; P…AUDF1B;Q>ª;;VOLUME/DISTORTIONL; P…AUDC1V;$>`; …JIFFY;;DELAY...j;Q>;;THAT'S ENOUGH,t;P…AUDF1;;I'M GETTING A~;P…AUDC1;;HEADACHE!!!ˆ;:’;X;SHOW THE TITLE SCREENœ;…DISPT!†DISPT1¦;…TITLE AŠBréÃKwïÒKsA°;…CHRIS AŽÂÙº ãèòéó ùïòëAº;†DISPT1Q†SCREEN;;POSITIONÄ;P„ZERO;;CURSOR FORÎ;Q†SCREEN;;PROG TITLEØ; P„ZEROâ;,ì; Q„ZEROö;O>¥< P„ZERO < Q„ZERO<O>< P„ZERO(<%>2<†DISPT2Q…TITLE8;;WRITE TITLE<< P@„ZERO7F<3P<)> Z< H†DISPT2d<,;;POSITION CURSORn<Q„ZERO;;FOR MY NAMEx<O>v‚< P„ZEROŒ< Q„ZERO–<O> < P„ZEROª<%>´<†DISPT3Q…CHRIS8;;WRITE MY¾<P@„ZERO7;;NAME TO THEÈ< 3;;SCREENÒ<)>Ü< H†DISPT3æ<$>ðð< …JIFFY;;WAIT 480 JIFFIESú< …JIFFY=:;;STOP SHOWING TITLE=X;COLOR CHANGE ROUTINES=X;"=>X;Allows user to change colors using the joystick.,=X;6=X;@=…CHCOLQ†OPTION;;CHECK WHICHJ=R>;;COLOR IS TOT=H†CHCOL1;;BE CHANGED^=%>h= !…STCOLr=†CHCOL1R>@|= H†CHCOL2†=%>= !…STCOLš=†CHCOL2R>€¤= H†CHCOL3®=%>¸= !…STCOLÂ=†CHCOL3%>Ì=…STCOL „BEEP;;MAKE A SOUND!Ö=Q>à=P†GRACTL;;GOODBYE HANDê=…SCOLR$> ;;DELAY TOô= …JIFFY;;HELP CONTROLþ= Q†STICK0>R>;;+ BRIGHTNESS> H†STCOL2> $†COLOR08&>20>A:> P†COLOR08D> !†STCOL1N>†STCOL2R> ;;- BRIGHTNESSX> H†STCOL3b> $†COLOR08l>0v>A€> P†COLOR08Š> !†STCOL1”>†STCOL3R>;;AHEAD A COLORž> H†STCOL4¨>,²> Q†COLOR08¼>O>Æ> P†COLOR08Ð> !†STCOL1Ú>†STCOL4R> ;;BACK A COLORä> H†STCOL1î>,ø> Q†COLOR08?S> ? P†COLOR08?!†STCOL1Q†STRIG0;;CHECK TRIGGER ?R>*? F†STCOL54? !…SCOLR>?†STCOL5 „BEEP;;MAKE A SOUND!H?†SCOLR1Q†STRIG0R?R>\? F†SCOLR1f?Q>p?P†GRACTL;;HELLO HAND!z?:„?HX;Initializes CUT buffer, VBI, and location for autorun on load.Ž?X;˜?X;CUT BUFFER LOCATION¢? …ZCUT3¬? †CUTBUF¶?X;VBI LOCATIONÀ? Ê? …P2POSÔ?X;AUTORUN PROGRAMÞ?àè? …START