!!!ACTION! Timer Programming {{{ ; PROGRAM : EASY INTERUPT ; 1. KEINE ACTION! PROC BENUTZEN ; ALSO : KEIN PRINT, U.S.W. ; 2. PARAMETERUEBERGABE MIT NICHT ; MEHR ALS 3 BYTES ; 3. KEINE MULTIPLIKATION,DIVISION ; 4. SCHIEBEOPERATION RSH/LSH NUR ; NOCH BEI BYTE ZAHLEN BYTE COL4=712,MARGIN=82,CURSOR=752, RAINMEM=203,RAINMEM2=[0], WAITSYNC=$D40A,HARDCOL1=53271, KEYCODE=764,COL2=710,KEY, FRAME=[0],Effekt,TIMERSPEED=[1] CARD TIMER2_COUNTER=538, TIMER2_VEKTOR=552 BYTE TIMER2_COUNTER_LO=538 CARD SCREENADR=88 BYTE POINTER SCREEN BYTE MOVEFLAG=[0] PROC INCCOL() RAINMEM=RAINMEM2 ; FARBEN FUER ; RAINBOW EFFEKT ; NEU SETZEN UND RAINMEM2==+1 ; WEITERZAEHLEN IF FRAME>10 AND FRAME<20 THEN COL4=$20 ; RAHMEN-FLASH FRAME==+1 IF FRAME =19 THEN FRAME=0 FI ELSE COL4=$10 FRAME==+1 FI ; AB HIER BEWEGUNG DES "Balls" SCREEN^=0 ; ALTE POSITION ; LOESCHEN IF MOVEFLAG=0 THEN SCREEN==+1 IF SCREEN=SCREENADR+39 THEN MOVEFLAG==+1 FI FI IF MOVEFLAG=1 THEN SCREEN==+40 IF SCREEN>SCREENADR+919 THEN MOVEFLAG==+1 FI FI IF MOVEFLAG=2 THEN SCREEN==-1 IF SCREEN<SCREENADR+921 THEN MOVEFLAG==+1 FI FI IF MOVEFLAG=3 THEN SCREEN==-40 IF SCREEN=SCREENADR THEN MOVEFLAG=0 FI FI SCREEN^=84 ; UND SETZEN TIMER2_COUNTER_LO=TIMERSPEED ; COUNTER NEU ; SETZEN, DAMIT ; DER TIMER IM ; NAECHSTEN VBI ; AUCH AUSGE- ; FUEHRT WIRD! RETURN PROC INIT_TIMER() TIMER2_COUNTER=0 TIMER2_VEKTOR=INCCOL TIMER2_COUNTER_LO=1 RETURN PROC WAIT_FOR_KEY() IF EFFEKT=0 THEN DO WAITSYNC=1 HARDCOL1=RAINMEM RAINMEM==+1 UNTIL KEYCODE<>255 OD ELSE DO WAITSYNC=1 UNTIL KEYCODE<>255 OD FI RETURN PROC INFO_WINDOW() POSITION(2,2) MARGIN=2 PRINTE("----------------------") PRINTE("| der Ball wird im |") PRINTE("| Timer bewegt |") PRINTE("| ------------------ |") PRINTE("|Fuer einfache Timer-|") PRINTE("|programmierung in |") PRINTE("|Action! bitte fol- |") PRINTE("|gendes beachten: |") PRINTE("| |") PRINTE("|1.Keine Action PROCs|") PRINTE("| benutzen |") PRINTE("| |") PRINTE("| weiter mit <Return>|") PRINTE("----------------------") WAIT_FOR_KEY() KEYCODE=255 POSITION(19,1) MARGIN=19 PRINTE("----------------------") PRINTE("|Parameteruebergabe|") PRINTE("|nur mit maximal 3 |") PRINTE("|Byte (oder 1 Card |") PRINTE("|und 1 Byte). |") PRINTE("|Intern gesehen |") PRINTE("|werden die 3 Bytes|") PRINTE("|in die 6502 Regis-|") PRINTE("|ter gespeichert. |") PRINTE("|alle anderen in |") PRINTE("|Zero-Page Register|") PRINTE("|Das wuerde aber |") PRINTE("|Konflikte mit dem |") PRINTE("|jeweiligen Haupt- |") PRINTE("|programm zur Folge|") PRINTE("|haben. |") PRINTE("| |") PRINTE("|weiter mit<Return>|") PRINTE("----------------------") WAIT_FOR_KEY() KEYCODE=255 POSITION(5,13) MARGIN=5 PRINTE("------------------------") PRINTE("|Keine Multiplikationen|") PRINTE("|und Divisionen !!! |") PRINTE("| |") PRINTE("| weiter mit <Return> |") PRINTE("------------------------") WAIT_FOR_KEY() KEYCODE=255 POSITION(21,10) MARGIN=21 PRINTE("----------------") PRINTE("|Schieben (RSH |") PRINTE("|und LSH) nur |") PRINTE("|noch bei BYTE |") PRINTE("|Werten !!! |") PRINTE("| |") PRINTE("| <Return> |") PRINTE("----------------") WAIT_FOR_KEY() KEYCODE=255 return proc newspeed() POSITION(12,9) MARGIN=12 PRINTE("----------------") PRINTE("|Bitte Neue Ge-|") PRINTE("|schwindigkeit |") PRINTE("|eingeben. |") PRINTE("|Tasten 1 - 9 |") PRINTE("----------------") WAIT_FOR_KEY() key=getd(1) key==-48 if key>=1 and KEY<=9 then timerspeed=key IF KEY>2 THEN EFFEKT=1 ELSE EFFEKT=0 FI fi RETURN PROC WARMSTART=$E474() RETURN proc QUIT() POSITION(12,9) MARGIN=12 PRINTE("----------------") PRINTE("|QUIT fuehrt |") PRINTE("|Warmstart aus |") PRINTE("|(System Reset)|") PRINTE("|ausfuehren ?? |") PRINTE("| (J/N) |") PRINTE("----------------") WAIT_FOR_KEY() IF KEYCODE=1 THEN KEYCODE=255 WARMSTART() FI KEYCODE=255 RETURN PROC HAUPTPROGRAMM() EFFEKT=0 CLOSE(1) OPEN(1,"K:",4,0) GRAPHICS(0) COL2=0 SCREEN=SCREENADR ;=SCREEN=PEEKC(88) INIT_TIMER() DO CURSOR=1 POSITION(9,7) MARGIN=9 PRINTE("----------------------") PRINTE("| Action! User Group |") PRINTE("| |") PRINTE("| 'Easy Timers!' |") PRINTE("| |") PRINTE("| I>nformation |") PRINTE("| G>eschwindigkeit |") PRINTE("| E>ffekt |") PRINTE("| Q>uit |") PRINTE("----------------------") WAIT_FOR_KEY() KEY=GETD(1) IF KEY='I OR KEY='i THEN INFO_WINDOW() FI IF KEY='E OR KEY='e THEN effekt==XOR 255 FI IF KEY='G OR KEY='g THEN newspeed() FI IF KEY='Q OR KEY='q THEN QUIT() FI OD RETURN }}}