@L}5 _$% l0$)$$Hȱ$ UhL" `e$$%`$%`  R@P!( L(1   Y I`  d  Ld M * @  $ % CC$$)%1 Udߥ$9%: !0 S$% DD˙`  }J)Lr d M * @  $ % CC$$)%1 Udߥ$9%: !0 S$%} DD˙`  }J)Lr J  ((  p L ()   J}L= ( L 0q A    IB JC;? D W } LL  ` W )LA!  ߰")-݆ p" } $G@LL 08`Q")<2Q0 -G$Ș݆ UL# ; p8(()(0ʥ)NQ` }$GȘ݆LU )L ݆ L GȘ ݆LL )W>Z   HH)H  }p h  hyhy D L> L JJ    ! LA*` BF }7'8  M HN H` 8 Z  \LdJJ!"! GFE@F (!L }EE !E^ ^ E E7EȩEdE/EȩE  D } .L }  ;F d  ;?F7F? ( .   Z D LL d } . D  L    p  E` , d)  D L) 0BM݊L݉} ML  N݆ L NLML [ TEqEHȱEqEh 0Gȹ G} HLL GɛL  LFREIE SEKT.! G) *Gȩ GȽG GȌ*jj >G} C8jJ3j2CD( C202C ԠBX` N 1? l LlD:RAMDISK}.COMLu L1 L ;LHL  T`  `1  ɐ     `TU  } L ? .  t`GBJ ~DEHI B V0dV!}QDEHI VF9 ,0 ,0 s0hhL  L` H hDHEh"}DEL8HI4 0 HI,0 0  9 .G VLO#},0 L4*IJ`llD1:AUTORUN.SYSBENUTZE MEM.SAV UM ZU LADEN!! D1:MEM.SAV J y08 B|DEHI$} V0 0`B;DEL`?<0LV`@ʆ v s? F0Ξ05: [ BDEHI%} VY8 B V  @  /DE `E:D1:DUP.SYSFEHLER-SAVE IN MEM.SAV AUF DISK TIPP Y FUE&}R DOS-START B;DE J  (` 9 V⪍ ઍ  -'}LLu ÝDEHILV 9 .l 9 .l  `` s$B BH(}I|DE V BLV nB,DE JLV B V BLVDEIʩ BꭝLu } 3E:`}ABBUC e.V. DOS 2.5FarbeŠΠ㩠 . DISK INHALT . FORMAT 1040. ZUM BASIC *} . DUPLIZIER DISK. KOPIERE FILE . BINAER SAVE. LOESCHE FILE(S) . BINAER LOAD. NAME AENDERN . START AB ADRE+}S. SICHERE FILE . MEM.SAV ANLEG.. ENTSICHERE FILE . DUPLIZIER FILE. DOS NEU ANLEGEN . FORMAT 720SecL !N',}#"&))9(&*)/h)''-&؆莟R'S  v L/ˢ L }LEGE-->DOS 2.0s, TIPP Λx -}DEfHI 1莏#q! @ y0ɛ8A0,' ȅ 1 1ild! 1L!FALSCHE WAHLWAEHLE.} FUNKTION-->νś! 0 .z:*{}.|{ 1 0 0JB 18L%|DL/}%DISK INHALT-->AUSGABE,FILE NAME ?[# 0 0 &|D3" 1L!NICHT AUF DISK N !B 1L!E# 1 !BD0}ED:}:1BJ|DE 1DEBHI 1 h0ߢ 0.1}  0?詛 1 y0YЛ 1 ;#L" ;#L! BL1TIPP "" ZUM LOESCHENWAS LOESCHEN ? 2}KOPIE-VON,NACH?WAHL NICHT ERLAUBT PICTURE 065 KOPIERE---D2:PICTURESl# 0|D .L/%#3}##JB|DE 1BHID#E 1#0: B 1L!#͑### B 1#c$0SY4}S1}:## # # .#Ƚ# # 𩛙## 1,#PD#ELJ- <.BJD#E 5}1 1HH 0hh|DL%1}:̳# L% #D#EL% 1 0 . .0O% 1L!ABKUERZUNGEN SIN6}D JETZT NICHT ERLAUBT 0 <.|K}N 2 FORMAT. t* 5) 1L!`) 0NΞ 0 L1) 1 L!NICHT LADBAR WELCHE DATEI LADEN ?) 0 ?}0#B 1L!SICHERE FILE NAME?) 0 0$B 1L!ENTSICHER FILE NAME?DUP DISK-QUELL,ZIEL STATION?TIPP "" FUER PROGRA@}MMGEBRAUCH :""LOESCHT MEM.SAV SPEICHERFE! +L1   `*  70 2 2A} 0.* 1 y0 0)LEGE DISK EIN ,TIPP "^, 1 y038逍 N, 1L! ,B}C, t*  Lx+, 0 ^, 1 y0 , ,0,0 ,L+ ,I0 ,Vǭ0C}Ξ, 0 }, 1 y0C,ШC, 0K'!" H H 'h h Lx+!EF 5L1L!D,I,HhD}` DISK VOLL !!! LEGE QUELLDISK EIN,TIPP ΛLEGE ZIELDISK EIN ,TIPP E}`  `8 rL1`-* 1P* 1 y0Y`hhL!GEBE FILE NAME AN ? - 0 0|DL% <.F},^ 1 70 0 .@L# .BJ 1  DEHIB V L1 ,} 1 70,L.  G}JB|,#P#DE 1 HI BDEHHII 1 B 1 ,^ 1 70,0La- B V,#PH},^ 1 70 0L#L!-* 1P* 1 y0Yj383}mm ݭI}}`8}``|* ? ɛ,`|:-)| / 1L!`ZIEL KANNKEIN DOS.SYS J}SEIN!0 0H{ 24Δ 28/L!/) 2 Π 2 0 ξK}hAΞB,0 J 1 BDEHI,HÝDE 1HIHIDELSAVE-GEBE L}FILE,START,END(,INIT,RUN)O S0 1`BDEPHI V` S0H 1 L!M}0 0 1L~0`NUR 1 BUCHSTABE !! ,0`hhL! 70 1L0L<1 ,;ɛ7,"ɛ:ݦ1ݥN}A"D|ݤD|ȩ:|ȩ|ɛ,,(/+.ީ1 1,ɛ`轤{NAMEO} ZU LANG B VL!` L1I H1EΝDL1|mDiE` V0`8d/8 i:222 1 LP}!FEHLER- 128ɛ+,' 20*.. өr2 1``2ZU VIELE WERTE!FALSCHE HEXAQ}DEZIMAL PARAMETER800 0 8 00`,0'D800 H,ɛh`2L1GEBE D1-->D8 ANuR} EZIMAL PARAMETER800 0 8 00`,0'D800 H,ɛh`2L1GEBE D1-->D8 ANuR`!̭"ͩO!"Р̙O4ST`йN ̌!͌"Р`%POKE559,0POKE65,0RUN"D:AUTORUN T}.BAS"!̭"ͩO!"Р̙O4ST`йN ̌!͌"Р`%POKE559,0POKE65,0RUN"D:AUTORUN 034D\qMAd;Au,nnn6.dhBթHI V00P.B. '86ۅܥX(V}ׅ٥Y؅ک֝HI V`)ޘ)xww67A,.dHI V֩HI VթHI Vݠݑ8ե֐ I(W}EiPאة`0^^67A,.Ki(ץiؐiׅ٥i؅ڥ HI V(X}1 +@AY1@e//@@D:ABBUCMAG.PIC6-?:C:,,@(Y}AA'AA'A @AY@T!6-!AdAU6-%@(Z}** A*F:Ad,"AUA AY..@@ D:ACTIONM.PIC6-?:C:([},,@AA"'AA'A @,'AY@T'AR@6$$( (\} (c) 1991 ABBUC. e.V. @""( erarbeitet von derJ##( ACTION! Working GroupT!6-!AdAU(]}^6-%@h** A*F:Ad,"AUAPr% D:LESER.BAS D:AUTORUN.BAShBթHI V(^}00 A*F:Ad,"AUAPr% D:LESER.BAS D:AUTORUN.BAShBթHI V((4|F>[V?V?P?RLO?,`}I? K? H?J?KE;?,a}ǂ:?ǂ;?:?; ?,b}݂: ??ǂ>LJF G M,c}LSRǂ@?@?? ,d}@ I>?> ,e}???߇>???>@,f}?ߝ????>??,g}>? > ?>,h}?ޞ?? ߝ>? ?>,i}?????>=?>,j}= G?߂G?݂>??=??,k}>=D?C??>,l}?=?>=?F?G,m}EHFG\D=?F?G,8(4|F,?Y?SR?DE??0o}F?LMRN?SP0p}S?RG?E??? ?0??0q} / 0`.? 0`/Ç??0r}3cÃ.???3cÃ0? 0???0s} 1?`//0t} a?/ 8?0???/0u}??/ ??/0v}~/?|?/? }/0w}+??+? >*0x}? |*?? ( ?0y}*?)???-?0z}?p/?~|??/?~|/0{}/?/?/0|}Ä?/?? À0? >/0}} |?0?|/00~}?/?A0?? ??00} ??0 ?0 10}?0??/I? ~a0}?.??/(%" .p)&p?0} /@@??<`@@??D?>x0}D?F?P?L?Q?O?0}SS?VX\Y?L?Q?O?0=34NNNNNNN3N3N4N3N25FHTFILESPAGEXLLEERLEEMREAMFOMINMSCMOFMMOMINSCSESCIBUANPAG8}NKENPMDEHEFKLEISEICPLL 8} @@8} !"#$%&'()*8}+,-./012s6-6-@#6-%+6-%36-%?6-8}@K6-@2S6-&_6-@@g6-&s6-AV"F:B2,@v" A2WW;@ ,;@ ,;@8}R,;A`,;A,9@,9@,;, --@" 68,-)68,--  1,10,12,7,20,4,25,88},34,4 ( 6.67,.67,.(6-C:,?6-B26-%6-%'6-%/6-%76-%?6-%36-Btr8}6-Br!6-'6-36-Bd# AAY# Ai***** Kopfzeilen''(} ACTION! Magaz8}in 1s *****x6-?:<<B <, A0 A***** DIRECTORY EINLESEN))(!}8}@D:*.TXT 6- 7<,0 A 5 6-%6-?:67$@&@<$@,.7<@,D6.L/4VORWORT/6.ACTION! Magazin 8}VorwortV'4AWGINFO'6.AWG Information`)4ACTSYS)6.Das ACTION! Systemj(4GLASKLA(6.ACTION! Glaskl8}art+4PULSE+6.PuLse Demo in ACTION!~+4TOOLBOX+6.Die ACTION! Toolbox (| -(| A08}(((( | zurueck |2((( <F( -%$6-?:<%$<%$<,8}( P$x***** BILDSCHIRM%@!A@r%+AR6-?:<,$@***** Bildschirm-A8}usgabeE, 6- A%-@8@#,( J6-@:7$&,,%$@:7$,,T=6-?:<<<,#6-P:'@,=%&8}@$%@Y<6-P:'@,.%&$@%@<%@^ Ah"@'$i6-P:',68}-&$j- 6-$%67<,.>:,-67%<%,.>:,r!!@a*@2A|"BU5A0! 6-%!8}*BU5!6- A#"@ A(# A@E)"A0 6-& A****8}* GET KEYK:)$l***** Hauptmenuev 6- A..(& Bildschirm Drucker Info Neustar8}t Ende 6-6-?:<%8,<8,,! A!"AUAjK"@B)"@C)"@f)"@h)"@i)8}"@s)"@x`6-?:<%8,<8,,j AP A@?++"@B* @,)+"@C*!,?6-&+&@BP,$8}"@f6-"@h6-"@s6-"@x6-"@i6-%6-?:<%88},<8,,!!"@B)"@CA@ "6- A& " A# A@ " %G"@68}-?:,*AA`6@:+D BDDG.!@@!-@( (|o 8}Heftrand |(|o Kleinschrift | (|o Seitennumerierung|(| ok, Text drucken |(| zurue8}ck | )()@*-@(4-@(>-@(8}H( 6-(6-?:<%@%$<@,R A\Y"@E*!26-?:<%@%$<@,:6-&Y6-?:<%@8}%$<@,fY"@a* 26-?:<%@%$<@,:6-%Y6-?:<%@%$<@,p"@'A"8}@zAUA!0 "6- A&"A"@4 "6-&-@4(>:A&@$,48} "6-&-@4(>:A&@$,4 "6-&-@4(>:A&@$, A!04@8}-@06-?:<<%$<,4  A@***** Info '@@'-@@$ !!(8}. !!(|ABBUC Textformatierung|L !!(V !!(| Formatroutine 100% MS|` !!(|8} vor/zurueck blaettern|j !!(| sowie Seitenwahl |t !!(| neue, schnellere Aus-|~ !!(| gabe durch voellig | 8}!!(| neue Print-Routine | !!( !!(| (c) 1989 by HiassofT | !!(8}  A@( .-@@*6-?:<<%$<,.  $( ***** Text-Auswahl2 0 -%,68}-?:<%$<%$%A$<,0 < ( 6-(6-?:<%$%A%<@0,F AP Y"@E*!26-?:<%$%A%8}<@0,:6-&Y6-?:<%$%A%<@0,Z ["@a* %46-?:<%$%A%<@0,<6-%[6-?:<%$%A8}%<@0,d "@'An AUA&0x !A "A'@ < 6-,6.7$@&@8}<$@,<6-?::,6-%'67%,.>:,@ A(@J  4 68}.=:,T  6-A:,A) U  !6-%V '7$&<$,46-' A) W  !6-]  "6-^ (-8}@8@#!AR(( h $ ***** Seite Drucken $AYBBr$6-?:, WWǺŠ8}ԠҺ͠ΠĠΠ $$: LPRINT CHR$(27);"W";CHR$(0); C@P:+(8} PA Rl76-@C6-@d ##:LPRINT CHR$(27);"W";CHR$(0); (l 6-@g #(8}#6-P:$@P, 6-&  6-6-B % 6. 67@Q,. %67,. "A0 ""(@7<8}+&@,', )$(@- - -  - - -)( $6-?:<<<,( $6-% BU5A0`& (@8}@0 A ***** MS-Teil laden  D:WRAP.OBJ ? ))))&)-)?68}-%$&&$% 6-P:',6-&$ RAPAR'AS3AV?AWR6-?:C:hLV,, 8} $(c) 89-08-20 HiassofT D:LESER.BASESER.BASD:TOOLBOX.TXTors1TXTTOOLBOX ORWORT TXTKTPuLse Demo in AC8}TION!rt2 VORWORT AWGINFO ACTSYS GLASKLARTOOLBOX PULSE LBOX ORWORT TXTKTPuLse Demo in AC8\HKLHLsHLIL&JLaKLJLpKhӍH ӢBDPEHoI VIiOϽHΠɛϩϭH`hh<}hhh̩Hhh HXХYѩͭӍH ӭH 'ЈɛjH:H0"Ԫ)H) i@`8 HЈHmHԐL<}nIȘHI BԝD՝EeԅԐ VLIЋ ̈HBHԪ)H) i@`8 HЈHmHԐ<}i(АLIHI BԝD՝EȘeԅԐ VHI V)LHԅխH'Јi(АLI<}H`hhhhhԩ`hhhhhhhԑ̈`hhh JJJJy0J1XJYJ&JOK \<}K`BOB@DJFO BJAyJJJodervor뀀<}[abbrechen3%)4%L_HHH+5K7K ԌЍhhh@$4  :KBK ԌЍL.Kh@<}ԩ_L\hhhhhIԈ`L_HHH+5K7K ԌЍhhh@$4  :KBK ԌЍL.Kh@<! Hallo BitByter, ACTION! User, Atarianer...---------------------------------------Hier ist es nun, dass@} erste ACTION! Magazin der ACTION! Working Group im ABBUC e.V.Noch rechzeitig zur Hobbytronic '91 haben wir dieses lang ang@}ekuendigte Magazin fertiggestellt. Dich erwarten ACTION! Hintergrundberichte, ACTION! Programme zum ausprobieren, ACTION! Tip@}s und Tricks und dererlei mehr.Der Inhalt des ACTION! Magazins 1:- Vorwort (dieser Text)- AWG-Info (Eine Info ueber @}unsere ACTION! Working Group)- ACTION! im Ueberblick (Ein Artikel ueber die Konzeption des ACTION! Systems)- ACTION! @}Glasklar (ACTION! Kurs fuer Einsteiger, ACTION! lernen anhand dokumentierter Quelllistings)- PuLse (Eine Demo in AC@}TION!, natuerlich mit Quelltext)Wann und ob die zweite Ausgabe dieses Magazins erscheint, haengt erheblich von eurer Ruec@}kmeldung (Kritik) zu dieser Ausgabe des ACTION! Magazins ab. Und von eurer Mitarbeit. Wer interessante Programme oder Tips un@}d Tricks zu ACTION! hat, der melde sich! Wir benoetigen auch noch Redakteure, die bereit sind, Artikel fuer das ACTION! Magaz@}in zu schreiben. Also, meldet euch beim: ACTION! Magazin c/o Carsten Strotmann An der Kreutzbrede 20 4410 WarendorfWi@}r wuenschen viel Spass beim Lesen! im: ACTION! Magazin c/o Carsten Strotmann An der Kreutzbrede 20 4410 WarendorfWi@% ΡHallo Bit Byter,Du siehst vor Dir die Info der ACTION!WORKING GROUP (AWG) des ABBUC e.V.!OK, DH}u hast Recht! ACTION! ist keineneue Sache. Jaja, ACTION! ist auch der-zeit nicht im Handel erhaeltlich - wasaber der ABBUCH} gerade aendert.Und trotzdem ist ACTION! die schnellsteHochsprache fuer unseren kleinen ATARI."Na und!",hoere ich da jemH}anden sagen."Nix naunndsoweiter...!" ACTION! ist wirklich nicht zu schlagen.Darum bieten wir Dir diese Info an: A H} CCC TTTTT III OO N N !! A A C T I O O NN N !! A A C T I O O N N N !! A A C H} T I O O N N N !! AAAAA C T I O O N N N !! A A C T I O O N N N !! A A C TH} I O O N NN A A CCC T III OO N N !!History-------ACTION! ist eine Hochsprache wie BASIC,PAH}SCAL, C oder viele andere bekannte Programmierdialekte. ACTION! wurde 1983von 'Optimized Systems Software' (OSS)exclusiv fH}uer die 8-Bit-ATARIs entwik-kelt. Die Entwickler haben mit ACTION! die sicher am besten strukturierte Pro-grammiersprache H}fuer unseren kleinenLiebling herausgebracht. Dabei wurdendie besonderen Vorzuege vieler andererSprachen uebernommen. AusH} BASIC uebernahm man die leicht ver-staendlichen Befehle und die einfacheSyntax. Von PASCAL und C wurden Pro- grammierstruH}kturen adaptiert.Dabei wurde darauf geachtet, dass derProgrammierer bei Bedarf auch sehrmaschinennah arbeiten kann. SovieH}l zurGeschichte.Ein paar Details...-------------------Damit die Arbeitsgeschwindigkeit nichtetwa dem Schneckentempo vH}on ATARI-BASICgleichkommt, wurde ACTION! als Compi- lersprache ausgelegt.Und da ist eine Staerke von ACTION!verborgen. H}Der Compiler uebersetzt den Programm-text in einen aeusserst schnellen, weiloptimierten Maschinencode. Es gibt nureinen H}'Dialekt', der noch schnellerenCode auf 8-Bit-ATARIs erzeugt. Und dasist ein Assembler!!!Aber nicht nur das Ergebnis des H}Compi-lers sondern der Compiler selbst istwohl der schnellste, den es fuer die 8-Biter ueberhaupt gibt. Das musst DueinH}fach live erleben!!!Weit mehr als nur Sprache-------------------------Doch es gibt noch mehr zu berichten.ACTION! ist H}nicht nur einfach eine -wenn auch sehr leistungsfaehige -Programmiersprache.ΡH}䮛Dieses System besteht aus fuenf Kompo-nenten. ProgrammierH}erfahrene Bit Byterwerden die nachfolgenden Begriffekennen. Allen anderen Interessenten seials Nachschlagewerk dazu das deH}utsch- sprachige Handbuch fuer ACTION! bestensempfohlen, das es nur exclusiv fuerABBUC-Mitglieder gibt.Nur soviel sei hiH}er gesagt: Der kontrolliert das System. Der dient u.a. zum Schreiben der Programmtexte. Die H} besteht aus den Kommandos, Befehlen und Strukturen fuer ACTION!. Der uebersetzt H}den Programm- text in Maschinencode. Die enthaelt die bereits vor- definierten Routinen H}fuer konplexe Befehle.Die besondere Technik bei OSS-----------------------------Damit der Bit Byter nicht H}wie bei man-chen anderen Sprachen zum Disk-Jockeywird, ist ACTION! ausschliesslich aufCartridge/Modul verfuegbar. Damit isH}tdas gesamte System bei eingesteckterCartridge im Rechner vorhanden. Man be-noetigt nur noch ein Speichermedium(Disk, KasH}sette) zum Sichern von Pro-grammtexten bzw. fertig compiliertenProgrammen.Mit ACTION! kann auch direkt ausge-druckt werdH}en. So laesst sich derEditor sogar als Textverarbeitung be-nutzen und spart damit die Anschaffungeiner solchen. HinsichtliH}ch desBedienungskomforts und der Funktions-vielfalt hat der Editor sichereinigen Textverarbeitungen sogar alsVorbild gediH}ent.Zurueck zur Cartridge. Wie viele andereProgrammiersprachen, die von OSS aufModul herausgebracht wurden, handelt essiH}ch bei ACTION! um eine Super-cartridge. Diese enthalten mehr Spei-cher als sie selber im Adressbereich des ATARI belegen. H}Ermoeglicht wird dasdurch Bank Switching innerhalb der Car-tridge.Wichtige Userinfo-----------------An dieser Stelle H}wollen wir auch miteinem Vorurteil aufraeumen. Gemeinhinwird angenommen, dass Programme in dieser Sprache nur mit eingesteH}ckterCartridge laufen, also nicht weiterverbreitet oder sogar verkauft werdenkoennen. Das stimmt nicht!!!Es gibt drei veH}rschiedene Moeglichkei-ten, compilierte ACTION!-Programme ohneModul laufen zu lassen:1. Aus dem DOS heraus die Runtime H} Library des eingesteckten Moduls mit Hilfe der 'binary save'-funktion auf Diskette abspeichern. Bevor man dann H}die Library einlaedt, setzt man MEMTOP auf $A000 herunter und eroeffnet den Bildschirmkanal erneut. Dann laeuft auchH} ein danach geladenes ACTION!-Programm ohne Car- tridge.2. Man erwirbt die offizielle Runtime Library von OSS auf H}Disk.3. Der findige Bit Byter schreibt sich seine eigene Library. Der Vorteil dieser Methode ist, dass man selbst H}bestimmen kann, was in der Library vorhanden sein soll.Summary-------Die Programmierung komplexer undgroesserer ProH}jekte bietet sich in ACTION! geradezu an. Zum einen erzwingtdie hervorragende Sprachstruktur leichtzu lesende und damit guH}t ueberschaubareProgrammtexte, zum anderen koennen mitHilfe von Prozeduren und Funktionen ge-loeste Probleme immer wieder H}als Modulein neue Programme uebernommen werden.Assemblererfahrene Programmierer werdendas zu schaetzen wissen. ErgaenzeH}nd dazu sei noch gesagt, dassdie Moeglichkeiten der rekursiven Pro-grammierung auf einem 6502-Rechnerunter ACTION! direkt H}Spass bereiten.Zusammenfassend bleibt als Urteil uebrig:Ρ H}󠸭 H} Oktober 1990, AWG HRDas ACTION! - System, ein Ueberblick-----------------------------------Die Tatsache, dass ACTION! aus mehreren verschiedenM}en Komponenten besteht, kann einen ACTION!-Anfaenger zuerst verwirren. Ist man mit BASIC vertraut, kennt man nur einen Teil eM}iner Programmiersprache: den EDITOR. Im ATARI Basic werden alle Aktionen im und vom EDITOR durchgefuehrt: Das Editieren, das M}Ausfuehren der Programme, das Laden und Speichern und vieles mehr. ACTION verfuegt hier insgesamt drei getrennte TeilbereicheM}:Den ACTION! MonitorDen ACTION! EditorDen ACTION! CompilerNach dem Starten von ACTION! befindet man sich im Editor. Um M}von dort aus den Monitor zu erreichten, drueckt man die Tastenkombination SHIFT+CONTROL+M (M wie Monitor).Der Monitor ist dM}ie Schaltzentrale des ACTION! Systems. Von hier aus sind alle wichtigen Punkte zu erreichen. Man kann sagen, der Monitor ist M}das Herz von ACTION!, obwohl er sich optisch sehr bescheiden praesentiert. Nur eine einzelne Zeile am oberen Bildschirmrand, M}ein ">" Prompt und ein blinkender Cursor, der eine Eingabe vom Benutzer erwartet. Auf dem uebrigen Bildschirm werden ggf. InfM }ormationen oder Fehler bekanntgegeben. Doch die Moeglichkeiten, die der Monitor den Benutzer bietet, sind enorm. Durch die M }Eingabe von "Editor" oder einfach nur "E" springt ACTION! in den Editor. Wichtig ist zu wissen, dass der Monitor bei EingabenM } nur den ersten Buchstaben als Befehl interpretiert. Durch die Eingabe von "Exit" verlaesst man nicht etwa das ACTION! SystemM }, sondern gelangt ebenfalls in den Editor. Moechte man ACTION! verlassen, so gelingt dies bei der Eingabe von "Dos" oder nur M }"D". Mit der Eingabe von "(O)ptions" kann man einige Einstellungen des ACTION Systems veraendern:Display Y/n -> Ob bei M}zeitkritischen Aktionen der Bildschirm abgeschaltet werden soll.Bell Y/n -> Ob bei Fehlern ein akustischer Ton ausgegeM}ben werden soll.Case sen. y/N -> Ob der Compiler beim uebersetzten des Programms auf Gross- und Kleinschreibungen achten soM}ll.Trace y/N -> Ob man den Ablauf eines gestarteten ACTION! Programms auf dem Bildschirm mitverfolgen moechte.List y/M}N -> Ob beim Uebersetzten des Programms der Quelltext aufgelistet werden soll.Window size -> Groesse des ersten EditM}orfensters, wenn mit zwei Editorfenstern gearbeitet wird.Line size -> Maximal zulaessige Laenge einer ZeileLeft marg.M} -> Linker RandEOL char -> Welches Zeichen das Ende einer Zeile markieren soll.Mit dem Befehl "(B)oot" kann man dM}as ACTION! System neu starten, z.B. wenn ein fehlgelaufendes Programm den Bildschirmaufbau zerstoert hat. ACHTUNG: Beim NeustM}art wird der im Editor befindliche Quelltext geloescht!Mit dem Befehl "?" kann man sich den Inhalt einer Speicherstelle anzM}eigen lassen. Durch die Eingabe von "? 710" zeigt ACTION! die Speicherstelle fuer die Hintergrundfarbe an. Ein SpeicherauszugM} kann mit dem Befehl "*" erstellt werden. "* $0600" listet die sogenannte Page 6. Diese Auflistung kann durch die Leertaste uM}nterbrochen werden.Mit "(S)et" koennen sie den Inhalt von Speicherstellen veraendern, wie in BASIC mit dem POKE Befehl. DieM} Anwendung ist denkbar einfach: "SET 710=0" setzt z.B. die Hintergrundfarbe auf schwarz.Der Befehl "(C)ompile" ruft den ComM}piler auf und dieser uebersetzt wahlweise das Programm im Editor oder ein Programm auf Diskette. Das uebersetzte Programm befM}indet sich im Speicher, wenn ACTION! ohne Fehlermeldung in den Monitor zurueckkehrt.Ein so uebersetztes Programm kann mit "M}(R)un" gestartet werden. Nach Beendigung des Programms oder nach einem Abbruch kehrt ACTION! wieder in den Monitor zurueck. EM}in abgebrochenes Programm kann nun mit "(P)roceed" wieder gestartet werden.Abgespeichert wird ein uebersetzes Programm mit M}"(W)rite", gefolgt vom Filenamen, z.B. Write "D:TEST.COM". Mit "(X)ecute" kann man ACTION! Befehle direkt ausfuehren lassenM}, so wie in der BASIC Direkteingabezeile.Beispiel: "X Print ("Hallo")gibt das Wort "Hallo" direkt aus.Der Editor-------M }---ACTION! verfuegt ueber einen sehr leistungsfaehigen Volltexteditor. Hier entstehen die neuen ACTION! Programme und werdeM!}n alte veraendert. Die Editiermoeglichkeiten des Editors erreichen fast den Umfang und die Funktionen moderner TextverarbeituM"}ngen. Bloecke koennen verschoben und kopiert, Woerter gesucht und ersetzt werden. ACTION! erlaubt das gleichzeitige BearbeiM#}ten von zwei verschiedenen Programmtexten, die in zwei Fenstern dargestellt werden. Die Programmtexte werden im (AT)ASCII-CodM$}e gespeichert, man hat also die Moeglichkeit, mit dem ACTION! Editor geschriebene Texte auch in anderen Textprogrammen zu verM%}wenden. Leider fehlt an dieser Stelle der Platz, um die gesamte Funktionsvielfalt des ACTION! Editors vorzustellen.Der CompM&}iler------------Im Gegensatz zu anderen Programmiersprachen wie BASIC oder PASCAL sind Standardroutinen wie z.B. PRINT, SOM'}UND, OPEN usw. nicht in die Sprache ACTION! eingebunden. Wie C stellt ACTION! dem Programmierer nur Steuer- und RechenbefehleM(} zur Verfuegung. Standardroutinen muessen erst auf dieser Grundsprache als Prozeduren oder Funktionen entwickelt werden. DaM)}mit der man aber nicht alle Standardprozeduren selbst erarbeiten muss, sind diese Routinen in der Cartridge als Library enthaM*}lten und werden beim Uebersetzen des Programms mit eingebunden. Hierdurch hat der Programmierer die Moeglichkeit, diese StandM+}ardprozeduren abzuaendern oder neue, bessere zu verwenden. Er kann sich die Befehle der Programmiersprache nach seinen BeduerM,}fnissen zurechtschneidern. Hierdurch wird auch vermieden, dass Routinen, die nicht benoetigt werden, Speicherplatz im fertiM-}gen Programm vergeuden, da unnoetige Routinen nicht mit in das Programm eingebunden werden muessen.All diese MoeglichkeitenM.} machen ACTION! zu einem idealen Werkzeug zum programmieren des ATARI-Computers.den werden muessen.All diese MoeglichkeitenLPACTION! Glasklar - Der ACTION! Kurs-----------------------------------Willkommen bei ACTION! Glasklar, dem ACTION! Kurs fuQ0}er Einsteiger und Umsteiger, fuer alle, die ACTION! erlernen moechten. Ich moechte euch in diesem Kurs die ProgrammierspracheQ1} ACTION! anhand konkreter Programme erklaeren. An diesen Programmen lernt man schneller und praxisbezogener als z.B. durch daQ2}s einfache Aufzaehlen der Programmierbefehle. Im ersten Teil moechte ich euch das Programm HELLO WORLD vorstellen, ein einfQ3}aches Programm, das folgende Aktionen ausfuehrt:Zuerst wird der Text "Hallo Welt" auf dem Bildschirm ausgegeben, danach derQ4} Name des Benutzers abgefragt und dann eine Begruessung des Benutzers ausgegeben. Wir wollen uns nun ansehen, wie dieses ProgQ5}ramm in ACTION! programmiert wird:PROC Hello_World ()ist die erste Zeile des Programms. ACTION! Programme bestehen aus eiQ6}ner Ansammlung von PROZEDUREN (PROC) und FUNKTIONEN (FUNC), die das Programm in uebersichtliche Einzelteile zerlegen. Dieses Q7}spezielle Programm hat aufgrund seiner geringen Groesse keine Unterprogramme.Nach dem Prozedurkopf folgt die VariablendeklaQ8}ration. Die einzige im Programm verwendete Variable ist ein String, ein BYTE ARRAY mit 20 Zellen. In diesem ARRAY koennen 20 Q9}Bytes oder Zeichen gespeichert werden. Diese Variable user_name wird den Benutzernamen aufnehmen.Der Befehl PUT (125) gibt Q:}das Sonderzeichen Nummer 125 auf dem Bildschirm aus. Dieses Sonderzeichen bewirkt das Loeschen des Bildschirms.Mit dem BefeQ;}hl POSITION (x, y) wird der Textcursor auf die Bildschirmposition x/y gestellt. An dieser Stelle wird der naechste Text gedruQ<}ckt. Dieser Text "Hallo Welt" wird wie in BASIC mit dem PRINT Befehl ausgegeben. Einzig die Klammern um den Text sind zu beacQ=}hten, da ACTION! Parameter immer in Klammern uebergeben werden. Achtung: Der Print Befehl bewirkt in ACTION! im Gegensatz zu Q>}BASIC keinen Zeilensprung am Ende des Textes, der Cursor bleibt in der Zeile hinter dem ausgegebenen Text stehen. Um einen CuQ?}rsorruecklauf zu erreichen, muss man den Befehl PRINTE benutzen. PRINTE haengt bei der Ausgabe ein EOL (ATASCII 155) an den TQ@}ext.Die naechsten beiden Zeilen gleichen den vorangegangenen. Da kein Zeilenruecksprung ausgegeben wird, erwartet der INPUTQA}S Befehl die Eingabe direkt nach dem Text "Wie heisst du ?". INPUTS ist der ACTION! Befehl fuer die Eingabe von ZeichenkettenQB} (Strings). ACTION! kennt im Gegensatz zu BASIC verschiedene INPUT Befehle, je einen pro Variablentypus:InputS - fuer die EQC}ingabe von ZeichenkettenInputB - fuer die Eingabe von BYTES, Zahlen von 0 bis 255InputC - fuer die Eingabe von CARDinals, ZQD}ahlen von 0 bis 65536InputI - fuer die Eingabe von INTeger, Zahlen von -32768 bis 32767Die letzten drei Zeilen geben dann QE}noch ein "Hallo", gefolgt von der eingegebenen Zeichenkette aus. Hier taucht auch der PRINTE Befehl auf, der den Cursor nach QF}dem Ausdruck eine Zeile tiefer positioniert.Mit dem RETURN, welches jedes ACTION! (Unter-)programm abschiesst, endet auch dQG}iese kleine Beispiel. Wurde das Programm von Monitor aus gestartet, so findet man sich jetzt dort wieder. Alles klar??BitQH}te schreibt mir eure Meinung zu dieser Art des Einfuehrungskurses, und ob ihr noch Anregungen habt.der. Alles klar??BitPeACTION! Magazin Toolbox Teil 1------------------------------Willkommen ACTION! User. Dies ist der erste Teil der ACTION!UJ} Magazin Toolbox. In dieser Rubik wollen wir interessante kleine ACTION! Routinen vorstellen. Diese kleinen Routinen sollen eUK}uch bei eigenen Programmiervorhaben die Loesungen fuer immer wiederkehrende Probleme bieten. Die Routinen sind so erstellt, dUL}ass sie mit Hilfe des INCLUDE Befehls in die eigenen Programme eingebunden werden koennen. Wie ihr die Routinen jeweils einbaUM}ut, bleibt euch ueberlassen. Ich empfehle, wenn ihr eine Routine aus der Toolbox benoetigt, das TOOLBOX-File in das zweite EdUN}itorfenster einzuladen und dann die gewuenschte Routine mit den Blockbefehlen zu kopieren.Nun zur ersten Toolbox. Hier habeUO}n wir eine Sammlung der Routinen zusammengestellt, die in fast jedem Programm Verwendung finden.Prozedur: CLSAufruf : ClsUP} ()Diese Routine loescht den Textbildschirm. Die Routine gibt ueber den PUT Befehl das ATASCII-Zeichen #125 an den StandardUQ}kanal aus. Das ASCII-Zeichen 125 (geknickter Pfeil) wird, wenn das Register DSPFLG (766 / $2FE) null ist, ausgegeben und bewiUR}rkt das Loeschen des Bildschirms. Ist DSPFLG ungleich null, dann erscheint das Sonderzeichen.Prozedur: C_ON Aufruf : C_OnUS} ()Prozedur: C_OFFAufruf : C_Off ()Diese beiden Prozeduren veraendern nur jeweils das Register CRSIN (752 / $2F0). EineUT} Null in diesem Regsiter bewirkt die Darstellung des Cursors im Textbildschirm, jeder andere Wert laesst den Cursor verschwinUU}den.Prozedur: PAUSEAufruf : Pause (zeitdauer)Diese Prozedur haelt den Programmablauf fuer jeweils die Zeit an, die benoUV}etigt wird, um 200 Bildschirmzeilen auszugeben. Mit dieser Prozedur kann man den Ablauf des Programms verzgern.Prozedur: BUW}EEPAufruf : Beep (anzahl)Diese Prozedur gibt eine Anzahl Warntoene aus. Dieser Ton ist im Betriebssystem gespeichert und UX}wird beim drucken des Sonderzeichens #253 auf dem Bildschirm ausgegeben. Dieser Ton ertoent z.B. beim Druecken von CONTROL+2.UY}Prozedur: SCRAufruf : Scr ()Diese Prozedur schaltet im DMA-Controll-Schattenregister SDMCTL (559 / $22F) das sechste BiUZ}t um. Hierdurch wird die Bildschirmerzeugung des ANTIC unterdrueckt, der Bildschirm wird einfarbig und der Hauptprozessor arbU[}eitet schneller= Das Programm arbeitet schneller.Prozedur: SWAPAufruf : Swap (wert1, wert2)Diese Prozedur vertauscht zwU\}ei Zahlenwerte. Prozedur: MINIAufruf : Mini (wert1, wert2)Diese Funktion liefert als Ergebnis den kleineren der beiden U]}Eingangswerte.Prozedur: MAXIAufruf : Maxi (wert1, wert2)Diese Funktion ist das Gegenstueck zur vorherigen und liefert dU^}en kleineren Wert der zwei Eingangswerte zurueck.Prozedur: SETBITAufruf : wert = SetBit (wert, n)Diese Funktion setzt dU_}as Bit Nummer n in der Variable "wert".Prozedur: CLEARBITAufruf : wert = ClearBit (wert, n)Mit dieser Funktion kann in U`}der Variablen "wert" das n-te Bit geloescht werden.Prozedur: ASKBITAufruf : wert = AskBit (wert, n)Diese Funktion pruefUa}t, ob in "Wert" das Bit Nummer n gesetzt ist. Ist dies der Fall, so ergibt die Funktion 1, ansonsten eine 0.Prozedur: DOSAUb}ufruf : Dos ()Diese Routine springt ins DOS (DUP). Hier wird einfach ein indirekter Sprung durch DOSINI (12 / $C) ausgefueUc}hrt= JMP ($0C).Prozedur: BREAKOFFAufruf : BreakOff ()Diese Prozedur schaltet die Breaktaste aus, indem sie den Break-InUd}terrupt verbiegt. Der Breakvektor BRKKEY zeigt auf die Break-Unterbrechungs-Routine. Dieser Vektor wird um 12 erhoeht, so dasUe} er nun auf das Ende der Breakroutine zeigt. Hier steht ein RTS Befehl, der die Konrolle an das Programm zurueckgibt, ohne daUf}s auf Break reagiert wurde. BITTE DIESE ROUTINE NUR EINMAL PRO PROGRAMM AUFFRUFEN, DA SONST DER VEKTOR AUF ANDERE BETRIEBSSYSUg}TEMTEILE ZEIGT. Moeglicherweise funktioniert dieser Breakschutz auch nur beim neuen (XL/XE) Beriebssystem.Prozedur: INTERAUq}?`-----------`Ρ`Π`Š``-----------B%DOS SYSB*)DUP SYSBSAUTORUN SYS`-----------B UAUTORUN BASB_ABBUCMAGPICBnACTIONM PIC`-----------B7LESER BASBWRAP OBJB VORWORT TXT`-----------B1AWGINFO TXTB/ACTSYS TXTB/GLASKLARTXTB(ITOOLBOX TXTB zPULSE TXTB4TOOLBOX1ACTBPULSE ACTBHELLO ACTB%PULSE COM%2PULSE COM`-----------ufruf : wert = Inter (ascii)Diese Prozedur wandelt einen ASCII Code in den Internen ATARI-Code um. Der Interne Code wird zUr}.B. beim Schreiben in den Bildschirmspeicher verwendet.Prozedur: ASCIIAufruf : wert = Ascii (intern)Diese Routine arbeiUs}tet nach dem umgekehrten Schema der vorherigen: Sie wandelt einen Internen Code in einen (AT)ASCII Code um.Prozedur: HIGHAUt}ufruf : wert = High (wert)Diese Prozedur gibt das hoeherwertige Byte einer 2-Byte Variable (CARD) zurueck. Prozedur: LOWUu}Aufruf : wert = Low (wert)Umkehrung der vorherigen Routine: Das niederwertige Byte wird zurueckgegeben.Prozedur: SCANAUv}ufruf : byte = Scan (x ,y)Der Locate Befehl in ACTION! zum auslesen einer Bildschirmposition arbeitet leider sehr langsam,Uw} da hier Betriebssystemroutinen verwendet werden. Die Scan Funktion ist hier schneller, liefert jedoch im Gegensatz zu LocateUx} das ausgelesene Zeichen im Internen Code. Wer den ASCII Code benoetigt, kann den Internen Code mit der Funktion ASCII umwandUy}eln: wert = Scan (10,10) zeichen = Ascii (wert)I Code benoetigt, kann den Internen Code mit der Funktion ASCII umwandT7 PuLse in ACTION! ----------------Diese kleine, aber (wie ich finde), feine Grafikdemo in ACTION! Y{}stammt von Joel Gluck und wurde in der Amerikanischen ATARI-Zeitschrift ANALOG, Ausgabe 26, zu ersten Mal veroeffentlicht.DY|}as Programm zeichnet verschiedene horizontale Linien auf den Bildschirm, die sich in unterschiedlichen Abstaenden ausdehnen uY}}nd dann wieder zusammenziehen. Das hoert sich simpel an und, man mag es nicht glauben, es ist auch simpel. Aber trotzdem hat Y~}der Effekt seinen Reiz, besonders wenn man dem Rat des Autors folgt, und sich das Programm in einem abgedunkeltem Raum ansiehY}t.Das Programm generiert eine neues Bildschirmmuster nach ca. 15-20 Sekunden, oder nach einem Tastendruck. Mit der Y} Taste koennt Ihr diese Demo verlassen.Noch ein paar Worte zum Programm: Das Programm arbeitet in GRAPHICS 10 und kann biY}s zu 15 verschiedene Farben auf den Bildschirm bringen. Wer sich das Listing ansieht, wird bemerken, das Joel Gluck zum ZeichY}nen der Linien nicht die eingebauten Betriebssystemroutinen benutzt hat, sondern neue, auf das Zeichen horizontaler Linien inY} Graphics 10 optimierte Routinen geschrieben hat (Plot10, DrawLine10). Wer moechte, kann mit dem Programm etwas herumexperimeY}ntieren und neue Muster entwerfen. Viel Spass. (Plot10, DrawLine10). Wer moechte, kann mit dem Programm etwas herumexperimeX0;********************************;** **;** Phoenix SoftCrew ACTION! **;** Programme und Tips ]}f. 8Bit **;** **;** Carsten Strotmann **;** An der Kreutzbrede 20 **;** ]} **;** D- 4410 Warendorf 1 **;** (02581) 8920 **;** **;]}********************************; Programmname : TOOLBOX 1 Sammlung ; Programmierer: Carsten Strotmann; Filename : TO]}OLBOX1.ACT; erste Version: 24.04.91; l. Aenderung : 24.04.91; Zweck : Toolbox fuer ; ACTION! Mag 1]}; Bemerkung :;;MODULE BYTE err, iostat = $23, hplflg = $2DC;######################################;#;# Prozedur:]} CLS;# Aufruf : CLS ();# Zweck : Lscht Textbildschirm;#;#;######################################PROC Cls () Put]} (125)RETURN;######################################;#;# Prozedur: C_On;# Aufruf : C_On ();# Zweck : Schaltet Curso]}r im Text-;# bildschirm an;#;######################################PROC C_On ()BYTE crsin = 752 crsin=0]}RETURN;######################################;#;# Prozedur: C_Off;# Aufruf : C_Off ();# Zweck : Schaltet Cursor im T]}ext-;# bildschirm aus;#;######################################PROC C_Off ()BYTE crsin = 752 crsin=1RETU]}RN;######################################;#;# Prozedur: PAUSE;# Aufruf : Pause (zeitdauer);# Zweck : Programmablauf ]}wird;# angehalten;#;######################################PROC Pause (CARD times)BYTE q, wsync = $14CARD u]} FOR u = 1 TO times DO FOR q = 1 TO 200 DO wsync = q OD ODRETURN;################################]}######;#;# Prozedur: BEEP;# Aufruf : Beep (anzahl);# Zweck : Gibt Warnbeep aus;# (ATASCII 253);#;########]}##############################PROC Beep (BYTE times)BYTE u FOR u = 1 TO times DO PutD (0,253) Pause (10) O]}DRETURN;######################################;#;# Prozedur: SCR ();# Aufruf : Scr ();# Zweck : Schaltet Bildschir]}m an/aus;# (ANTIC DMA);#;######################################PROC Scr () BYTE sdmctl = $22F sdmctl ]}== ! $20RETURN;######################################;#;# Prozedur: SWAP;# Aufruf : SWAP (wert1, wert2);# Zweck : ]}Vertauscht zwei Zahlen-;# werte;#;######################################PROC Swap (CARD a, b) CARD x a=x]} a=b b=xRETURN;######################################;#;# Prozedur: MINI;# Aufruf : zahl = Mini (zahl1, zahl2);#]} Zweck : Gibt die kleinere Zahl;# zurueck;#;###################################### CARD FUNC Mini (CARD a, b]}) CARD result IF a < b THEN result = a ELSE result = b FIRETURN (result);#############################]}#########;#;# Prozedur: MAXI;# Aufruf : zahl = Maxi (zahl1, zahl2);# Zweck : Gibt die groessere Zahl;# zuru]}eck;#;######################################CARD FUNC Maxi (CARD a, b) CARD result IF a > b THEN result = a E]}LSE result = b FIRETURN (result);######################################;#;# Prozedur: SETBIT;# Aufruf : wert = S]}etBit (wert, n);# Zweck : Setzt Bit n in Wert;#;#;######################################BYTE FUNC SetBit (BYTE value,]} bit) BYTE dumm dumm = 1 dumm == LSH bit value == % dummRETURN (value);#####################################]}#;#;# Prozedur: CLEARBIT;# Aufruf : wert = ClearBit (wert, n);# Zweck : Loescht Bit n in Wert;#;#;#################]}#####################BYTE FUNC ClearBit (BYTE value, bit) BYTE dumm dumm = 1 dumm == LSH bit dumm == ! $FF ]}value == & dummRETURN (value);######################################;#;# Prozedur: ASKBIT;# Aufruf : wert = AskBit (w]}ert, n);# Zweck : Ergibt 1, wenn Bit n in;# Wert gesezt ist, sonst 0;#;######################################]}BYTE FUNC AskBit (BYTE value, bit) BYTE dumm dumm = 1 dumm == LSH bit value == & dumm IF value > 0 THEN ]} value = 1 FIRETURN (value);######################################;#;# Prozedur: DOS;# Aufruf : DOS ();# Zweck ]} : Springt ins DOS;#;#;######################################PROC Dos () [ $6C $0C $00 ];##########################]}############;#;# Prozedur: BREAKOFF;# Aufruf : BreakOff ();# Zweck : Schaltet BREAK-Taste aus;# Achtung, nu]}r einmal im ;# Programm aufrufen;######################################PROC BreakOff () CARD brkky = $236 ]} brkky == + $CRETURN;#####################################;#;# Prozedur: INTER;# Aufruf : wert = Inter (ascii);# Zw]}eck : Wandelt ASCII-Code in;# Internen (Bildschirm-);# Code um;#####################################]}#BYTE FUNC Inter (BYTE b) IF b >= 0 AND b < 32 THEN b == + 64 ELSEIF b > 31 AND b < 96 THEN b == - 32 ELSEIF]} b > 127 AND b < 160 THEN b == + 64 ELSEIF b > 159 AND b < 224 THEN b == - 32 FIRETURN (b);##################]}####################;#;# Prozedur: ASCII;# Aufruf : wert = ASCII (intern);# Zweck : Wandelt Internen Code in;# ]} ASCII-Code um;#;######################################BYTE FUNC Ascii (BYTE b) IF b >= 0 AND b < 64 THEN b == ]}+ 32 ELSEIF b > 63 AND b < 96 THEN b == - 64 ELSEIF b > 127 AND b < 192 THEN b == + 32 ELSEIF b > 191 AND b < 2]}24 THEN b == - 64 FIRETURN (b) ;######################################;#;# Prozedur: HIGH;# Aufruf : wert = Hig]}h (wert);# Zweck : Liefert das hoeherwertige-;# byte eines Words;#;######################################BY]}TE FUNC High (CARD value) BYTE ret ret = value / $100RETURN (ret);######################################;#;# Prozed]}ur: LOW;# Aufruf : wert = Low (wert);# Zweck : Liefert das niederwertige;# Byte eines Words;#;#############]}#########################BYTE FUNC Low (CARD value)RETURN (value);######################################;#;# Prozedur]}: SCAN;# Aufruf : wert = Scan (x, y);# Zweck : Liefert das Bildschirm-;# zeichen Pos. x,y im in-;# ]} ternen Code;######################################BYTE FUNC Scan (BYTE x, y) BYTE chr BYTE POINTER msc CARD savmsc = ]}$58 msc = savmsc + y * 40 + x chr = msc^RETURN (chr) NC Scan (BYTE x, y) BYTE chr BYTE POINTER msc CARD savmsc = \=;**********************************;** **;** ACTION! Magazin Programme **;** a} **;** (c) 1991 by ACTION! Magazin **;** **;** ATARI BIT BYTER USER CLUB *a}*;** **;** **;**********************************;Programmname a}: PULSE in ACTION!;Autor : Joel Gluck;Copyright : ANALOG Magazin;;MODULEBYTE num = [ 10 ]BYTE ARRAY x(192a}), y(192), c(192) CARD ARRAY xd(192)INT ARRAY linept (192)PROC Pause (CARD n)CARa}D i FOR i = 0 TO n+n DO ODRETURNPROC Intro ()BYTE i, crsin = 752BYTE ARRAY color(0) = 708 Graphics (0a}) color(2) = 0 crsin = 1 Print (" ") Pause (30000) Position (17,9) Print ("puLse") Pause (30000) Posita}ion (13,11) Print ("by joeL gLuck") Pause (30000) Position (9,13) Print ("from ANALOG COMPUTING") Pause (30000a}) Position (5,15) Print ("modified by PhoeniX SoftCrew") Pause (60000) FOR i = 0 TO 15 DO color(1) = 15 - ia} Pause (2000) OD RETURNPROC Gr10Init ()CARD line, reg, col, lum, savmsc = $58BYTE ARRAY pca}olr(0)=704 Graphics (10) pcolr(0)=0 FOR reg = 0 TO 7 DO col = Rand ($10) lum = Rand (9) + 4 OD pcolr (ra}eg + 1) = col * $10 + lum FOR line = 0 TO 191 DO linept (line) = savmsc + 40 * line ODRETURNPROC Plot10 (BYTEa} x, y, col)BYTE POINTER pixelBYTE ARRAY colfil = [ 000 017 034 051 068 085 102 119 a} 136 000 000 000 000 000 000 000 000 ], mask1 = [ 015 240 ], a} mask2 = [ 240 015 ] pixel = linept(y) + (x RSH 1) pixel^ = pixel^ & mask1(x & 1) % (colfil(col) a} & mask2(x & 1))RETURNBYTE FUNC Loacte10 (BYTE x, y)BYTE POINTER pixelBYTE ARRAY mask = [ 240 015 ] pixel a}= linept(y) + (x RSH 1) pixel = (pixel^ & mask(x & 1)) RSH (((x & 1) XOR 1) LSH 2)RETURN (pixel)PROC DrawLia}ne (BYTE a, b, c)BYTE i FOR i = a TO 79 - a DO Plot10 (i, b, c) Plot10 (i, 191 - b, c) ODRETURNPROC Init (a})BYTE i, j, s Gr10Init () FOR i = 0 TO num-1 DO x(i) = Rand (40) DO y(i) = Rand (96) s = a}0 IF i = 0 THEN EXIT FI FOR j = 0 TO i - 1 DO IF y(i) = y(j) THEN s = 1 EXIT a}FI OD UNTIL s = 0 OD c(i) = (i MOD 8) + 1 DrawLine (x(i), y(i), c(i)) xd(i) = (Rand(2) * 2 - 1) a} * (Rand(3) + 1) OD RETURNPROC Squeeze (BYTE n)BYTE i, aINT d d = xd(n) IF d < 0 THEN d = -1 ELa}SE d = 1 FI FOR i = 1 TO (xd(n) / d) DO a = x(n) + d IF a > 39 THEN xd(n) = -xd(n) EXIT FI Ia}F d > 0 THEN Plot10 (x(n), y(n), 0) Plot10 (79 - x(n), y(n), 0) Plot10 (x(n), 191 - y(n), 0) Plot10 (79 - x(na}), 191 - y(n), 0) ELSE Plot10 (x(n), y(n), c(n)) Plot10 (79 - x(n), y(n), c(n)) Plot10 (x(n), 191 - y(n), ca}(n)) Plot10 (79 - x(n), 191 - y(n), c(n)) FI x(n) = a Plot10 (x(n), y(n), c(n)) Plot10 (79 - x(n), y(n),a} c(n)) Plot10 (x(n), 191 - y(n), c(n)) Plot10 (79 - x(n), 191 - y(n), c(n)) ODRETURNPROC Pulse ()BYTE i, a} ch = $2FC, atract = $4D, rtclok2 = $13, rtclok3 = $14 Intro () DO num = Rand (6) + 5 Init () a} ch = $FF atract = 0 rtclok2 = 0 rtclok3 = 0 DO FOR i = 0 TO num - 1 DO Squeeze (i) OD UNTIa}L ch # $FF OR rtclok2 = 4 OD UNTIL ch = 12 OD ch = $FF Graphics (0)RETURN UNTI`u;**********************************;** **;** ACTION! Magazin Programme **;** e} **;** (c) 1991 by ACTION! Magazin **;** **;** ATARI BIT BYTER USER CLUB *e}*;** **;** **;**********************************;Programmname e}: HELLO WORLD;Autor : Carsten Strotmann;Copyright : ACTION! Magazin;;PROC Hello_World ()BYTE ARRAY user_name}e (20) Put (125) Position (5,10) Print ("Hallo Welt !") Position (5,12) Print ("Wie heisst du ?") InputS (usee}r_name) Position (5,14) Print ("Hallo ") PrintE (user_name)RETURN(5,12) Print ("Wie heisst du ?") InputS (usedL+:K (c) PSC-ACTION! (parts by A.C.S)  B JKIHiDiELV`Ld:i} d: BLV`L::l L: &` Fj`8冨凪` :EӅӥi} :`ʆǪƩ Ɛee` ;ƦʆǢ &Ɛeǐ +; +;L: ;'&&&8儨児i}祂*L:&&*ń8&&L: ;`hihiHHȱȱL:c !#3`i}L:JJJJ`H :h`Hȩh :L< :L< L:L< T:L< Z:H8i}`HhHh 担CS yI F=L>H A>L> =L> &B V <NLMȑi}` MLN%B VL<S:)?E:.?H s< 1?2? << s