@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 !BD 0}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$0SY 4}S1}:## # # .#Ƚ# # 𩛙## 1,#PD#ELJ- <.BJD#E 5}1 1HH 0hh|DL%1}:̳# L% #D#EL% 1 0 . .0O% 1L!ABKUERZUNGEN SIN 6}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 2 A} 0.* 1 y0 0)LEGE DISK EIN ,TIPP "^, 1 y038逍 N, 1L! , B}C, t*  Lx+, 0 ^, 1 y0 , ,0,0 ,L+ ,I0 ,Vǭ0 C}Ξ, 0 }, 1 y0C,ШC, 0K'!" H H 'h h Lx+!EF 5L1L!D,I,Hh D}` 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,#P H},^ 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,ɛ`轤{NAME O} ZU LANG B VL!` L1I H1EΝDL1|mDiE` V0`8d/8 i:222 1 L P}!FEHLER- 128ɛ+,' 20*.. өr2 1``2ZU VIELE WERTE!FALSCHE HEXA Q}DEZIMAL PARAMETER800 0 8 00`,0'D800 H,ɛh`2L1GEBE D1-->D8 ANu R} EZIMAL PARAMETER800 0 8 00`,0'D800 H,ɛh`2L1GEBE D1-->D8 ANu R`!̭"ͩO!"Р̙O4ST`йN ̌!͌"Р`%POKE559,0POKE65,0RUN"D:AUTORUN(T}.BAS"!̭"ͩO!"Р̙O4ST`йN ̌!͌"Р`%POKE559,0POKE65,0RUN"D:AUTORUN( PSTdwMd;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) 1994 ABBUC. e.V. @( Ausgabe 3J##( ACTION! Working GroupT!6-!AdAU^,]}6-%@h** A*F:Ad,"AUAPr% D:LESER.BAS D:AUTORUN.BAShBթHI V,^}00P.B. '86ۅܥ AUF DISK Pr% D:LESER.BAS D:AUTORUN.BAShBթHI V,5(4|F>[V?V?P?RLO?0`}I? K? H?J?KE;?0a}ǂ:?ǂ;?:?; ?0b}݂: ??ǂ>LJF G M0c}LSRǂ@?@?? 0d}@ I>?> 0e}???߇>???>@0f}?ߝ????>??0g}>? > ?>0h}?ޞ?? ߝ>? ?>0i}?????>=?>0j}= G?߂G?݂>??=??0k}>=D?C??>0l}?=?>=?F?G0m}EHFG\D=?F?G08(4|F,?Y?SR?DE??4o}F?LMRN?SP4p}S?RG?E??? ?0??4q} / 0`.? 0`/Ç??4r}3cÃ.???3cÃ0? 0???4s} 1?`//4t} a?/ 8?0???/4u}??/ ??/4v}~/?|?/? }/4w}+??+? >*4x}? |*?? ( ?4y}*?)???-?4z}?p/?~|??/?~|/4{}/?/?/4|}Ä?/?? À0? >/4}} |?0?|/04~}?/?A0?? ??04} ??0 ?0 14}?0??/I? ~a4}?.??/(%" .p)&p?4} /@@??<`@@??D?>x4}D?F?P?L?Q?O?4}SS?VX\Y?L?Q?O?4=cdNNNNNNN3N3N4N3N25FHTFILESPAGEXLLEERLEEMREAMFOMINMSCMOFMMOMINSCSESCIBUANPAG8}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/4AWG2VOR/6.ACTION! Magazin 8}VorwortV" 4LL"6.Little Lister 2`.4CSTRING.6.'C'-Strings in ACTION!j) 4DLI)6.Interrupts in ACTI8}ON!t,4TVI925,6.TVI Terminal Emulator (| -(| A0(((( | zurueck |8}2((( <F( -%$6-?:<%$<%$<,( P$x***** BILDSCHIRM%@8}!A@r%+AR6-?:<,$@***** Bildschirm-AusgabeE, 6- A%-@8@#8},( J6-@:7$&,,%$@:7$,,T=6-?:<<<,#6-P:'@,=%&@$%@Y<6-P:'@,.8}%&$@%@<%@^ Ah"@'$i6-P:',6-&$j- 6-$%67<,.>:,-67%8}<%,.>:,r!!@a*@2A|"BU5A0! 6-%!*BU5!6- A#"@8} A(# A@E)"A0 6-& A***** GET KEYK:)8}$l***** Hauptmenuev 6- A..(& Bildschirm Drucker Info Neustart Ende 6-6-?:<%8,<8,,! 8} A!"AUAjK"@B)"@C)"@f)"@h)"@i)"@s)"@x`6-?:<%8,<8,,8}j AP A@?++"@B* @,)+"@C*!,?6-&+&@BP,$"@f6-"@h68}-"@s6-"@x6-"@i6-%6-?:<%8,<8,,!!"@B)"@CA@8} "6- A& " A# A@ " %G"@6-?:,*AA`6@:+D8} BDDG.!@@!-@( (|o Heftrand |(|o Kleinschrift8} | (|o Seitennumerierung|(| ok, Text drucken |(| zurueck | )()8}@*-@(4-@(>-@(H( 6-(6-?:<%@%$<@,8}R A\Y"@E*!26-?:<%@%$<@,:6-&Y6-?:<%@%$<@,fY"@a* 26-8}?:<%@%$<@,:6-%Y6-?:<%@%$<@,p"@'A"@zAUA!0 "6-8} A&"A"@4 "6-&-@4(>:A&@$,4 "6-&-@4(>:A&@8}$,4 "6-&-@4(>:A&@$, A!04@-@06-?:<<%$<,4 8} A@***** Info '@@'-@@$ !!(. !!(|ABBUC Textforma8}tierung|L !!(V !!(| Formatroutine 100% MS|` !!(| vor/zurueck blaettern|j !!(| sowie S8}eitenwahl |t !!(| neue, schnellere Aus-|~ !!(| gabe durch voellig | !!(| neue Print-Routine | !!(8} !!(| (c) 1989 by HiassofT | !!(  A@( .-8}@@*6-?:<<%$<,.  $( ***** Text-Auswahl2 0 -%,6-?:<%$<%$%A$<,0 < ( 6-8}(6-?:<%$%A%<@0,F AP Y"@E*!26-?:<%$%A%<@0,:6-&Y6-?:<%$%A%<8}@0,Z ["@a* %46-?:<%$%A%<@0,<6-%[6-?:<%$%A%<@0,d "@'An 8}AUA&0x !A "A'@ < 6-,6.7$@&@<$@,<6-?::,6-%'67%,.>:,@ A(@J  4 6.=:,T  6-A:,A) U  !8}6-%V '7$&<$,46-' A) W  !6-]  "6-^ (-@8@#!AR(( h $8} ***** Seite Drucken $AYBBr$6-?:, WWǺŠԠҺ͠ΠĠ8}Π $$: LPRINT CHR$(27);"W";CHR$(0); C@P:+( PA Rl76-@C6-@d8} ##:LPRINT CHR$(27);"W";CHR$(0); (l 6-@g #(#6-P:$@P, 6-&  6-8}6-B % 6. 67@Q,. %67,. "A0 ""(@7<+&@,', )$(@- - - 8} - - -)( $6-?:<<<,( $6-% BU5A0`& (@@0 A ***** MS8}-Teil laden  D:WRAP.OBJ ? ))))&)-)?6-%$&&$% 6-P:',6-&$8} RAPAR'AS3AV?AWR6-?:C:hLV,,  $(c) 89-08-20 HiassofT8} D:LESER.BAS(c) 89-08-20 HiassofTESER.BAS123 FREIE SEKT.!4LBOX.TXTors1TXTTOOLBOX Little Lister 2ACTION! in A8}CTION!rt2 AWG2VOR CSTRING DLI TVI925 LL KLARTOOLBOX PULSE ittle Lister 2ACTION! in A8cHKLHLsHLIL&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@<!PROC _CPYPRM=*()SET $4EE = _CPYPRM[$85$A0$86$A1$84$A2$18$68$85$84$69$03$A8$68$85$85$69$00$48$98$48$A0$01$B1$84$85$82$C8$L}B1$84$85$83$C8$B1$84$A8$B9$A0$00$91$82$88$10$F8$60]PROC _CHGSGN=*()[$85$C0$86$C1$38$A9$00$E5$C0$48$A9$00$E5$C1$AA$68$60L}]PROC _FIXSGN=*()[$86$C2$E0$00$10$03$20 _CHGSGN $85$82$86$83$A5$85$45$C2$85$C2$A6$85$10$09$A5$84$20 _CHGSGN $85$84$86$8L}5$60]PROC _FIXRES=*()[$A5$86$A6$87$A4$C2$10$03$4C _CHGSGN$60]PROC _MUL=*()SET $4E8 = _MUL[$20 _FIXSGN $A9$00$85$86$L}85$87$A5$82$D0$04$A5$83$F0$22$A5$84$D0$04$A5$85$F0$1A$46$85$66$84$90$0D$18$A5$86$65$82$85$86$A5$87$65$83$85$87$06$82$26$8L}3$38$B0$D6$4C _FIXRES]PROC _DIV=*()SET $4EA = _DIV[$20 _FIXSGN $A9$00$85$86$85$87$85$C1$A9$01$85$C0$A5$82$D0$04$A5$83$FL}0$5F$A5$84$D0$04$A5$85$F0$57$A5$82$C5$84$A5$83$E5$85$90$0F$A5$C1$30$0B$06$84$26$85$06$C0$26$C1$38$B0$E7$A5$C0$D0$04$A5$C1L}$F0$36$A5$82$D0$04$A5$83$F0$2E$A5$82$C5$84$A5$83$E5$85$90$19$38$A5$82$E5$84$85$82$A5$83$E5$85$85$83$A5$86$05$C0$85$86$A5$8L}7$05$C1$85$87$46$85$66$84$46$C1$66$C0$38$B0$C2$4C_FIXRES]PROC _MODOP=*()SET $4EC = _MODOP[$20 _DIV $A5$82$A6$83$60]L}PROC _RSHOP=*()SET $4E6 = _RSHOP[$A4$84$F0$0A$86$86$46$86$6A$88$D0$FA$A6$86$60]PROC _LSHOP=*()SET $4E4 = _LSHOP[$A4$8L}4$F0$0A$86$86$0A$26$86$88$D0$FA$A6$86$60]PROC _ERROU=*()[$A9$70$AA$A9$0C$9D$42$03$20$56$E4$8A$38$E9$10$D0$F1$6C$0A$00]L}PROC _ERRVEC=*()[_ERROU]PROC _DEVIC=*()[$00]MODULECARD Error=_ERRVECBYTE device=_DEVICPROC _GOCIO=*()[$20$56$E4L}$10$1A$C0$88$F0$06$68$68$98$6C _ERRVEC $48$8A$48$4A$4A$4A$4A$AA$A9$01$9D$C0$05$68$AA$68$60]PROC _LODCHN=*()[$C9$08$90$0L}7$68$68$A9$86$6C _ERRVEC$0A$0A$0A$0A$AA$60]PROC _STONAM=*()[$18$69$01$9D$44$03$98$69$00$9D$45$03$60]PROC _SHFTR=*()L}[$48$8A$A8$68$AA$AD _DEVIC $60]PROC _CLREOL=*()[$48$A9$00$85$A5$68$60]PROC _SETEOL=*()[$48$A9$01$85$A5$68$60]PROC L}_PRECON=*()[$8A$48$98$AA$68$A0$03$84$A3$A0$FD$60]PROC _DOPRNT=*()[$86$A3$84$A4$20 _LODCHN $A9$00$9D$49$03$A8$B1$A3$F0$1L}A$9D$48$03$18$A5$A3$69$01$9D$44$03$A5$A4$69$00$9D$45$03$A9$0B$9D$42$03$20 _GOCIO $A5$A5$F0$12$A9$00$9D$48$03$9D$49$03$A9$0L}B$9D$42$03$A9$9B$20 _GOCIO $60]PROC StrC=*(CARD c, s)[$85$D4$86$D5$84$A2$20$AA$D9$20$E6$D8$A0$00$B1$F3$30$06$C8$91$A2$3L}8$B0$F6$29$7F$C8$91$A2$98$A0$00$91$A2$60]PROC StrB=*(BYTE b CARD s)[$84$A3$48$8A$A8$A2$00$68$4C StrC]PROC StrI=*(INT L}i CARD s)[$E0$00$30$03$4C StrC $49$FF$85$A2$8A$49$FF$AA$E6$A2$D0$01$E8$A5$A2$20StrC $A0$00$18$B1$A2$69$01$91$A2$A8$88$BL}1$A2$C8$91$A2$88$88$D0$F7$C8$A9$2D$91$A2$60]PROC _DOPRNC=*()[$48$20 _PRECON $20 StrC $68$A2$FD$A0$03$4C _DOPRNT]PROCL} DOPRNI=*()[$48$20 _PRECON $20 StrI $68$A2$FD$A0$03$4C _DOPRNT]PROC PrintCD=*(BYTE d CARD c)[$20 _CLREOL $4C _DOPRNC]L}PROC PrintC=*(CARD c)[$20 _SHFTR $4C PrintCD]PROC PrintCDE=*(BYTE d CARD c)[$20 _SETEOL $4C _DOPRNC]PROC PrintCE=*(CL}ARD c)[$20 _SHFTR $4C PrintCDE]PROC PrintBD=*(BYTE d, b)[$A0$00$4C PrintCD]PROC PrintB=*(BYTE b)[$20 _SHFTR $4C PrinL}tBD]PROC PrintBDE=*(BYTE d, b)[$A0$00$4C PrintCDE]PROC PrintBE=*(BYTE b)[$20 _SHFTR $4C PrintBDE]PROC PrintID=*(BYL}TE d INT i)[$20 _CLREOL $4C _DOPRNI]PROC PrintI=*(INT i)[$20 _SHFTR $4C PrintID]PROC PrintIDE=*(BYTE d INT i)[$20 _SL}ETEOL $4C _DOPRNI]PROC PrintIE=*(INT i)[$20 _SHFTR $4C PrintIDE]PROC PrintD=*(BYTE d CARD s)[$20 _CLREOL $4C _DOPRNT]L}PROC Print=*(CARD s)[$20 _SHFTR $4C PrintD]PROC PrintDE=*(BYTE d CARD s)[$20 _SETEOL $4C _DOPRNT]PROC PrintE=*(CARL}D s)[$20 _SHFTR $4C PrintDE]PROC _HEXSTR=*()[$85$84$86$85$A9$FD$85$A2$A9$03$85$A3$A0$00$A9$05$91$A2$C8$A9$24$91$A2$A9$L}00$A2$04$06$84$26$85$2A$CA$D0$F8$69$30$C9$3A$90$02$69$06$C8$91$A2$C0$05$D0$E5$60]PROC PrintF=*(CARD s,a,b,c,d,e,f,g)[$8L}5$82$86$83$84$A2$AD _DEVIC $0A$0A$0A$0A$85$C1$A0$00$84$87$84$C0$B1$82$F0$4C$85$86$E6$C0$F0$46$A4$C0$C4$86$F0$02$B0$3E$B1$8L}2$C9$25$D0$3E$E6$C0$C8$C4$86$F0$02$B0$35$B1$82$C9$25$F0$2F$C9$45$F0$29$A8$A6$87$E0$0E$B0$D4$B5$A2$48$B5$A3$E8$E8$86$87$AA$L}68$C0$43$F0$15$C0$49$F0$34$C0$48$F0$3C$C0$53$F0$3F$38$B0$1D$60$38$B0$B2$A9$9B$A8$A6$C1$A9$00$9D$48$03$9D$49$03$A9$0B$9D$4L}2$03$98$20 _GOCIO $38$B0$E4$A0$03$84$A3$A0$FD$20 StrC $38$B0$0F$A0$03$84$A3$A0$FD$20 StrI $38$B0$03$20 _HEXSTR $A9$FD$A2$0L}3$85$84$86$85$A6$C1$A9$00$9D$49$03$A8$B1$84$F0$B5$9D$48$03$18$A5$84$69$01$9D$44$03$A5$85$69$00$9D$45$03$A9$0B$9D$42$03$20L}_GOCIO $38$B0$98]PROC PutD=*(BYTE d, c)[$86$A0$20 _LODCHN $A9$00$9D$48$03$9D$49$03$A9$0B$9D$42$03$A5$A0$20 _GOCIO$60]L}PROC PutDE=*(BYTE d)[$A2$9B$4C PutD]PROC Put=*(BYTE c)[$AA$AD _DEVIC $4C PutD]PROC PutE=*()[$A9$9B$4C Put]BYTE FL}UNC ValB=*(CARD a)CARD FUNC ValC=*(CARD a)INT FUNC ValI=*(CARD a)[$85$A2$86$A3$A9$00$85$A0$85$A1$85$A5$A8$B1$A2$85$A4$C8$L}B1$A2$C9$20$F0$F9$C9$2D$D0$0B$C6$A5$C8$C4$A4$F0$02$B0$31$B1$A2$38$E9$30$90$2A$C9$0A$B0$26$48$06$A0$26$A1$A5$A0$A6$A1$0A$26L}$A1$0A$26$A1$18$65$A0$85$A0$8A$65$A1$85$A1$18$68$65$A0$85$A0$90$CD$E6$A1$38$B0$C8$A5$A5$F0$0D$38$A9$00$E5$A0$85$A0$A9$00$L}E5$A1$85$A1$60]PROC _DOINPT=*()[$86$A4$84$A5$20 _LODCHN $18$A5$A4$69$01$9D$44$03$A5$A5$69$00$9D$45$03$A5$A3$F0$18$9D$48L}$03$A9$00$9D$49$03$A9$05$9D$42$03$20 _GOCIO $BD$48$03$F0$03$38$E9$01$A0$00$91$A4$A5$A6$F0$07$A5$A4$A6$A5$4C ValC $60]BYL}TE FUNC InputBD=*(BYTE d)CARD FUNC InputCD=*(BYTE d)INT FUNC InputID=*(BYTE d)[$48$A9$78$85$A3$A9$01$85$A6$68$A2$FD$A0$03L}$4C _DOINPT]BYTE FUNC InputB=*()CARD FUNC InputC=*()INT FUNC InputI=*()[$AD _DEVIC$4C InputCD]PROC InputMD=*(BYTE d L}CARD s BYTE l)[$48$A9$00$85$A6$68$4C _DOINPT]PROC InputSD=*(BYTE d CARD s)[$48$A9$FF$85$A3$68$4C InputMD]PROC InputS=L}*(CARD s)[$20 _SHFTR $4C InputSD]CHAR FUNC GetD=*(BYTE d)[$20 _LODCHN $A9$00$9D$48$03$9D$49$03$A9$07$9D$42$03$20 _GOCIOL}$85$A0$60]PROC Open=*(BYTE d CARD s BYTE m, a)[$86$A1$20 _LODCHN $A5$A1$20 _STONAM $A5$A3$9D$4A$03$A5$A4$9D$4B$03$A9$0L}3$9D$42$03$20 _GOCIO $8A$4A$4A$4A$4A$AA$A9$00$9D$C0$05$60]PROC Close=*(BYTE d)[$20 _LODCHN $A9$0C$9D$42$03$20_GOCIO $60L}]PROC XIO=*(BYTE d,z,c,a1,a2 CARD s)[$20 _LODCHN $98$9D$42$03$A5$A3$9D$4A$03$A5$A4$9D$4B$03$A5$A5$A4$A6$20_STONAM $20 _L}GOCIO $60]PROC Note=*(BYTE d CARD s, o)[$86$A1$84$A2$20 _LODCHN $A9$26$9D$42$03$20 _GOCIO $A0$00$BD$4C$03$91$A1$BD$4E$0L}3$91$A3$BD$4D$03$C8$91$A1$60]PROC Point=*(BYTE d CARD s BYTE o)[$86$A1$20 _LODCHN $A5$A1$9D$4C$03$98$9D$4D$03$A5$A3$9D$4L}E$03$A9$25$9D$42$03$20 _GOCIO $60]PROC Graphics=*(BYTE m)[$48$A2$60$A9$0C$9D$42$03$20$56$E4$68$9D$4B$03$49$10$09$0C$9D$L}4A$03$A9$53$85$A0$A9$3A$85$A1$A9$A0$9D$44$03$A9$00$9D$45$03$A9$03$9D$42$03$20 _GOCIO$60]PROC SetColor=*(BYTE r, h, l)[L}$C9$05$B0$13$85$A0$8A$0A$0A$0A$0A$85$A1$98$29$0F$05$A1$A6$A0$9D$C4$02$60]PROC Position=*(CARD x BYTE y)[$85$55$86$56$84$L}54$60]PROC Plot=*(CARD x BYTE y)[$20 Position $A9$06$AE$FD$02$4CPutD]PROC DrawTo=*(CARD x BYTE y)[$20 Position $A2$6L}0$A9$11$9D$42$03$AD$FB$02$8D$FD$02$20 _GOCIO$60]PROC Fill=*(CARD x BYTE y)[$20 Position $A2$60$A9$12$9D$42$03$AD$FB$02L}$8D$FD$02$20 _GOCIO$60]BYTE FUNC Locate=*(CARD x BYTE y)[$20 Position $A9$06$4C GetD]PROC Sound=*(BYTE c, p, d, v)[$L}C9$04$B0$25$86$A1$0A$AA$A9$00$8D$08$D2$A9$03$8D$0F$D2$A5$A3$29$0F$85$A3$98$29$0E$0A$0A$0A$0A$05$A3$9D$01$D2$A5$A1$9D$00$D2L}$60]PROC SndRst=*()[$A9$00$A2$07$9D$00$D2$CA$10$FA$60]BYTE FUNC Paddle=*(BYTE p)[$29$07$AA$BD$70$02$85$A0$60]BYTE L}FUNC PTrig=*(BYTE p)[$29$07$AA$BD$7C$02$85$A0$60]BYTE FUNC Stick=*(BYTE p)[$29$03$AA$BD$78$02$85$A0$60]BYTE FUNC STriM}g=*(BYTE p)[$29$03$AA$BD$84$02$85$A0$60]INT FUNC SCompare=*(CARD s1, s2)[$85$A4$86$A5$84$A2$A0$00$84$A0$84$A1$B1$A4$85$M}A6$B1$A2$85$A7$C4$A6$F0$15$C4$A7$F0$11$C8$B1$A4$D1$A2$F0$F1$90$03$E6$A0$60$C6$A0$C6$A1$60$A5$A6$C5$A7$F0$F9$B0$F0$90$F1]M}PROC SCopy=*(CARD d, s)[$85$A0$86$A1$84$A2$A0$00$B1$A2$A8$B1$A2$91$A0$C0$00$F0$04$88$38$B0$F4$60]PROC SCopyS=*(CARD d, M}s BYTE b, e)[$85$A0$86$A1$84$A2$A0$00$84$A6$B1$A2$C5$A5$B0$02$85$A5$A5$A4$F0$15$C5$A5$F0$02$B0$0F$A4$A4$E6$A4$B1$A2$E6$A6M}$A4$A6$91$A0$38$B0$E7$A5$A6$A0$00$91$A0$60]PROC SAssign=*(CARD d, s BYTE b, e)[$85$A0$86$A1$84$A2$A5$A4$F0$3B$C5$A5$F0$M}02$B0$35$85$A7$C6$A7$A0$00$84$A8$B1$A0$85$A9$B1$A2$85$AA$A5$A7$C5$A5$B0$15$A5$A8$C5$AA$B0$0F$E6$A8$A4$A8$B1$A2$E6$A7$A4$A7M}$91$A0$38$B0$E5$A5$A7$C5$A9$90$04$A0$00$91$A0$60]BYTE FUNC Rand=*(BYTE r)[$85$A2$C6$A2$A9$01$C5$A2$B0$05$38$2A$38$B0$F7M}$85$A3$AD$0A$D2$25$A3$C5$A2$F0$04$90$02$B0$F3$85$A0$60]PROC Poke=*(CARD a BYTE v)[$85$A0$86$A1$98$A0$00$91$A0$60]PROCM} PokeC=*(CARD a, v)[$20 Poke $C8$A5$A3$91$A0$60]BYTE FUNC Peek=*(CARD a)CARD FUNC PeekC=*(CARD a)[$85$A2$86$A3$A0$00$B1M }$A2$85$A0$C8$B1$A2$85$A1$60]PROC SetBlock=*(CARD a, l, v)[$85$A0$86$A1$84$A2$A0$00$A5$A2$D0$04$A5$A3$F0$16$A5$A4$91$A0$M }C8$D0$02$E6$A1$C6$A2$A5$A2$C9$FF$D0$E7$C6$A3$38$B0$E2$60]PROC Zero=*(CARD a, l)[$48$A9$00$85$A4$68$4C SetBlock]PROC M }MoveBlock=*(CARD d, s, l)[$85$A0$86$A1$84$A2$A0$00$A5$A4$D0$04$A5$A5$F0$18$B1$A2$91$A0$C8$D0$04$E6$A1$E6$A3$C6$A4$A5$A4$C9M }$FF$D0$E5$C6$A5$38$B0$E0$60]MODULE;--------end of RUNTIME.ACT------------91$A0$C8$D0$04$E6$A1$E6$A3$C6$A4$A5$A4$C9LS; ԧӠŠΠΡ; 󠠠; Š򬠳; 嬠ҠU}򠠠; 蠱MODULE ; RAT'S REVENGE CARD pmbase, dest, source, cnt,U} source1, source2, source3, score, maxscore, rndpts, dlist=560 BYTE pmpagU}e, stk, v, w, col, row, vcount=$D40B, consol=53279, dir, all,U} dir1, blkflg, dir2, dir3, pos, pos1, pos2, pos3, level, U} dotscnt, hitflg, men, ownflg BYTE ARRAY ratup=[0 66 126 60 24 66 126 90 126 60 3U}6 102 0 0], ratrt=[0 32 56 100 62 16 58 126 120 120 120 U} 44 48 0], ratlt=[0 4 28 54 124 8 92 126 30 30 28 52 12 0], U} cursor=[34 20 8 20 34], bugup=[0 36 24 60 126 60 24 60 90 60 24 60 0U} 0], bugrt=[0 48 32 120 108 56 16 56 56 60 56 44 48 0], bugU}lt=[0 12 4 30 54 28 8 28 28 60 28 52 12 0], allowed(132), sU}aveall(133), hortop=[3 32 32 32], vertop=[3 32 6 32], allbot=[3 7 6 7], nU}ewall=[6 135 6 135], horbot=[3 7 7 7], dots(132), blk=[3 32 32 32], newboU}t=[3 135 135 135] INT delx, dely, delx1, dely1, delx2, dely2, delx3, dely3, U} x, y, x1, y1, x2, y2, x3, y3, ax, ay PROC Init() SetBlock(allowU}ed,132,0) SetBlock(dots,132,1) FOR cnt=1 to 10 DO allowed(cnt)=76 OD allowed(0)=72 allowed(11)=68RETURNPROC PmU}init() BYTE ARRAY fil=[65 85 65 85 65 85 65 85 0 0 0 0 255 51 204 255 0 0 255 255 0 24U} 60 60 24 0 255 255 0 0 0 0 0 0 255 255 0 0 0] pmpage=Peek(106)-16 U} pmbase=pmpage*256 Poke(54279,pmpage) Poke(559,62) Poke(53277,3) Poke(53248,x) Poke(704,92) Poke(705,202) Poke(U }706,250) Poke(707,186) SetBlock(pmbase+1024,1024,0) MoveBlock(pmbase,57344,1024) Poke(756,pmpage) FOR cnt=0 TO 3U!}9 DO Poke(pmbase+cnt+560,fil(cnt)) OD FOR cnt=6 TO 28 DO Poke(dlist+cnt,4) ODRETURNPROC Ding(BYTE pitch,CARU"}D dly) BYTE loud CARD wait FOR loud=0 to 15 DO Sound(0,pitch,10,15-loud) FOR wait=1 to dly DO OD OD SndU#}Rst()RETURNPROC Tracks() ; leave trail BYTE newpos,z IF newpos<>pos THEN newpos=pos v=pos MOD 12 w=pos/12 z=LocaU$}te(3*v+2,2*w+2) IF z=7 THEN rndpts==+25 Position(21,0) PrintC(rndpts) Position(3*v+2,2*w+2) dotscntU%}==-1 IF allowed(pos)&64 THEN Print(newbot) ELSEIF allowed(pos)&16 THEN Print(newall) FI FI FIU&}RETURNPROC MOVE() ; move the bug stk=Stick(0) ! 15 IF (y-10) MOD 16=0 AND (x-22) MOD 12=0 THEN row=(y-42)/16 U'} col=(x-56)/12 pos=12*row+col all=allowed(pos)&15 IF stk=8 AND dir=4 THEN dir=8 ELSEIF stk=4 AND dU(}ir=8 THEN dir=4 ELSEIF stk=1 AND dir=2 THEN dir=1 ELSEIF stk=2 AND dir=1 THEN dir=2 FI IU)}F (dir & 3)>0 THEN stk==& 12 ELSE stk==& 3 FI IF(stk & all)>0 THEN dir=stk FI WHU5} ACTION! Magazin Ausgabe 3 ACTION! Working Group im ABBUC e.V.Kontakt:Carsten SE+}trotmannLappenbrink 6148336 Sassenberg02583 / 3621Hallo Ihr ACTION! Fans dort draussen....ein sehr heisser Sommer (1E,}994) geht dem Ende entgegen und es kommt die Jahreszeit, da die ATARIs wieder aus dem Keller geholt werden. Um euch ein wenigE-} Anregung zu geben fuer die Aktivitaeten mit eurem Computer haben wir das 3te ACTION! Magazin zusammengestellt, mit Stoff zumE.} Testen, Ausprobieren, Spielen. Doch was findet Ihr auf dieser Diskette:- RUNTIME.ACT - ein ACTION! Runtime Modul, welches E/}euch ermoeglicht, die ACTION! Programme uebersetzt auch ohne das Modul ablaufen zu lassen, um die selbstgeschriebenen ProgramE0}me z.B. auf der ABBUC Magazin Diskette zu veroeffentlichen. Hierzu muss einfach in euren ACTION! Sourcecode die Zeile INCLUDEE1} "D:RUNTIME.ACT" eingefuegt werden. Nun das Programm uebersetzen, und als COM-Datei auf eine Diskette speichern.- RATSRVNG.E2}ACT (RATSRVN.COM) - Rat's Revenge, ein Run and Jump Spiel in ACTION! geschrieben. Das Studium des Quelltextes ist interessantE3}, man kann hieraus ersehen, wie Player Missile Grafik in ACTION! Verwirklicht werden kann. Das Spiel ist auch als uebersetzteE4} COM-Version vorhanden, fuer diejenigen, die schnell ein Spiel wagen wollen.- PONG.ACT - eine Umsetzung des bekannten SpielF[}ILE (dir & all)=0 DO dir=dir RSH 1 IF dir=0 THEN dir=8 FI OD IF dir=1 THEN delyU6}=-1 delx=0 source=bugup ELSEIF dir=2 THEN dely=1 delx=0 source=bugup ELSEIF dir=4 THEU7}N dely=0 delx=-1 source=buglt ELSEIF dir=8 THEN dely=0 delx=1 source=bugrt FI U8}FI x==+delx y==+delyRETURNPROC Move1() ; decide rat #1 movementBYTE num, col1, row1 IF (y1-10) MODU9} 16=0 AND (x1-22) MOD 12=0 THEN row1=(y1-42)/16 col1=(x1-56)/12 pos1=12*row1+col1 all=allowed(pos1) IF RU:}and(15)>10-level THEN ax=x-x1 IF ax<0 THEN ax=-ax FI ay=y-y1 IF ay<0 THEN ay=U;}-ay FI IF ax>ay THEN IF (x1>x) THEN dir1=4 ELSEIF (x1y) THEN dir1=1 FI FI FIU=} WHILE (dir1 & all)=0 DO dir1=dir1 RSH 1 IF dir1=0 THEN dir1=8 FI OD IF dir1=1 THEN U>} dely1=-1 delx1=0 source1=ratup ELSEIF dir1=2 THEN dely1=1 delx1=0 source1=ratup ELSEU?}IF dir1=4 THEN dely1=0 delx1=-1 source1=ratlt ELSEIF dir1=8 THEN dely1=0 delx1=1 souU@}rce1=ratrt FI FIRETURNPROC Move2()BYTE num, col2, row2 IF (y2-10) MOD 16=0 AND (x2-22) MOD 12=0 THENUA} row2=(y2-42)/16 col2=(x2-56)/12 pos2=12*row2+col2 all=allowed(pos2) IF Rand(15)>10-level THEN ax=UB}x-x2 IF ax<0 THEN ax=-ax FI ay=y-y2 IF ay<0 THEN ay=-ay FI IF ax>ay THEUC}N IF (x2>x) THEN dir2=4 ELSEIF (x2y) THEN dir2=1 FI FI FI WHILE (dir2 & all)=0 DO UE} dir2=dir2 RSH 1 IF dir2=0 THEN dir2=8 FI OD IF dir2=1 THEN dely2=-1 delx2=0 UF}source2=ratup ELSEIF dir2=2 THEN dely2=1 delx2=0 source2=ratup ELSEIF dir2=4 THEN dely2=0 UG} delx2=-1 source2=ratlt ELSEIF dir2=8 THEN dely2=0 delx2=1 source2=ratrt FI FIRETURNPUH}ROC Move3()BYTE num, col3, row3 IF (y3-10) MOD 16=0 AND (x3-22) MOD 12=0 THEN row3=(y3-42)/16 col3=(x3UI}-56)/12 pos3=12*row3+col3 all=allowed(pos3) IF Rand(15)>10-level THEN ax=x-x3 IF ax<0 THEN axUJ}=-ax FI ay=y-y3 IF ay<0 THEN ay=-ay FI IF ax>ay THEN IF (x3>x) THEN dUK}ir3=4 ELSEIF (x3y) THEN dir3=1 FI FI FI WHILE (dir3 & all)=0 DO dir3=dir3 RSH 1 IF dir3=0 TUM}HEN dir3=8 FI OD IF dir3=1 THEN dely3=-1 delx3=0 source3=ratup ELSEIF dir3=2 THENUN} dely3=1 delx3=0 source3=ratup ELSEIF dir3=4 THEN dely3=0 delx3=-1 source3=ratlt UO}ELSEIF dir3=8 THEN dely3=0 delx3=1 source3=ratrt FI FIRETURN PROC Update() ; all players moveUP} DO UNTIL vcount=128 OD Poke(53248,x) dest=pmbase+1024+y MoveBlock(dest,source,14) x1==+delx1 y1==+dely1UQ} Poke(53249,x1) dest=pmbase+1200+y1 MoveBlock(dest,source1,14) x2==+delx2 y2==+dely2 Poke(53250,x2) dest=pmbasUR}e+1536+y2 MoveBlock(dest,source2,14) x3==+delx3 y3==+dely3 Poke(53251,x3) dest=pmbase+1792+y3 MoveBlock(dest,souUS}rce3,14) Tracks()RETURNPROC Bkgd() ; draw ladders & girders Graphics(0) Poke(752,1) FOR pos=0 TO 131 DO x=pUT}os MOD 12 y=pos/12 all=allowed(pos) Position(3*x+2,2*y+1) IF all&48 THEN Print(vertop) ELSE PriUU}nt(blk) FI Position(3*x+2,2*y+2) IF all&64 THEN Print(horbot) ELSEIF all&32 THEN Print(vertop) UV} ELSEIF all&16 THEN Print(allbot) ELSE Print(blk) FI OD FOR x=1 TO 38 DO Position(x,23) PuUW}t(13) ODRETURNPROC Dly(CARD maxcnt) CARD cnt FOR cnt=1 to maxcnt DO ODRETURNPROC Savemaze() Open(1,"UX}D:MAZE",8,0) FOR pos=0 TO 132 DO saveall(pos+1)=allowed(pos) OD saveall(0)=132 PrintD(1,saveall) Close(1)RUY}ETURNPROC Cleanscr() ; get rid of players FOR cnt=53248 TO 53251 DO Poke(cnt,0) ODRETURNPROC Openup() ; pos.UZ} above permitted IF allowed(pos-12) & 112 THEN allowed(pos-12)==%2 allowed(pos)==%1 FIRETURNPROC Opendn()U[} IF allowed(pos+12) & 48 THEN allowed(pos+12)==%1 allowed(pos)==%2 FIRETURNPROC Openlt() IF allowed(pos-1)U\} & 80 THEN allowed(pos-1)==%8 allowed(pos)==%4 FIRETURNPROC Openrt() IF allowed(pos+1) & 80 THEN alloweU]}d(pos+1)==%4 allowed(pos)==%8 FIRETURNPROC Setbar() ; create screen BYTE key x=70 y=61 source=cursor dU^}est=pmbase+1024+y Poke(764,255) SetBlock(pmbase+1024,256,0) Position(0,0) Print("(1) (2)_(3)|(4)(5)Save") Print("(U_}6)Exit (arrows)"); PROC Rats() DO Poke(53248,x) dest=pmbase+1024+y MoveBlock(dest,source,5) DO keU`}y=Peek(764) UNTIL key<>255 OD SetBlock(dest,5,0) Poke(764,255) IF key=15 AND y<181 THEN y==+16 ELUa}SEIF key=14 AND y>61 THEN y==-16 ELSEIF key=7 AND x<178 THEN x==+12 ELSEIF key=6 AND x>70 THEN x==-12 FI Ub} IF consol=5 THEN EXIT FI col=(x-58)/12 row=(y-45)/16 pos=12*row+col Position(3*col+2,2*row+1) IF key=31Uc} THEN Print(blk) allowed(pos)=0 allowed(pos-1)==&247 allowed(pos+1)==&251 allowed(pos-12)==&253 allowUd}ed(pos+12)==&254 ELSEIF key=30 THEN allowed(pos)=64 allowed(pos-12)==&253 Openrt() Openlt() Opendn() Ue} Print(hortop) ELSEIF key=26 THEN allowed(pos)=32 allowed(pos-1)==&247 allowed(pos+1)==&251 Openup() OUf}pendn() Print(vertop) ELSEIF key=24 THEN allowed(pos)=16 Openup() Opendn() Openlt() Openrt() PrUg}int(vertop) FI Position(3*col+2,2*row+2) IF key=31 THEN Print(blk) ELSEIF key=30 THEN Print(horbot) ELSEIUq}o`-----------`Ρ`Π`é`Ǡ`à֮`-----------b%DOS SYSb*)DUP SYS`-----------bSAUTORUN SYSb UAUTORUN BASb_ABBUCMAGPICbnACTIONM PICb7LESER BASbWRAP OBJ`-----------b*AWG2VOR TXT`-----------bIRUNTIME ACT`-----------b RATSRVNGACTbHRATSRVN COM`-----------b.PONG ACT`-----------b-MUSIK85 ACTbINTERUPTACT`-----------[KISTE ACT yKISTE COMmGR15MOD ACTuGR15MOD COM`-----------F key=26 THEN Print(vertop) ELSEIF key=24 THEN Print(allbot) FI IF key=29 THEN Savemaze() FI IF key=2Ur}7 THEN EXIT FI DO UNTIL Peek(764)<>key ODODRETURNPROC Loadmaze() Open(1,"D:MAZE",4,0) InputSD(1,saveUs}all) SCopyS(allowed,saveall,2,132) allowed(0)=saveall(1) Close(1)RETURNPROC CONTACT() ; hit a rat FOR v=50 TO 2Ut}00 STEP 5 DO Ding(v,v) OD hitflg=1RETURNPROC Rndover() ; completed screen FOR v=50 TO 200 STEP 5 DO DinUu}g(250-v,v) ODRETURNPROC Gameover() Graphics(18) Position(6,4) PrintD(6,"Ge vE") Position(0,9) PrintD(6,"Uv}press START to play") DO UNTIL consol=6 OD DO UNTIL (consol&7)=7 ODRETURNPROC Scorecard() Position(0,Uw}0) Print("MEN=") PrintB(men) Position(6,0) Print("SCORE=") PrintC(score) Position(17,0) Print("Rnd=") PrintUx}C(rndpts) Position(26,0) Print("HI=") PrintC(maxscore) Position(35,0) Print("LVL=") PrintB(level)RETURNPROUy}C Play()BYTE ARRAY lvl1=[72 78 76 76 78 76 76 78 76 76 78 68 0 35 0 0 35 0 0 35 0 0 Uz} 35 0 0 25 76 78 21 0 0 25 78 76 21 0 0 0 0 35 0 0 0 0 35 0 0 0U{} 0 0 74 29 78 76 76 78 29 70 0 0 0 0 35 0 35 0 0 35 0 35 0 0 0 0 25 78 U|} 21 0 0 25 78 21 0 0 0 0 0 35 74 76 76 70 35 0 0 0 0 0 0 35 3U}}5 0 0 35 35 0 0 0 0 0 0 25 29 76 76 29 21 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0],U~} lvl4=[72 78 76 76 78 76 78 76 76 76 78 68 0 25 76 76 23 0 27 76 76 U} 76 21 0 0 0 0 0 27 76 23 0 0 0 0 0 0 74 76 76 31 76 31 76 76 76 70 0 U}0 25 76 76 23 0 27 76 76 76 21 0 0 0 0 0 27 76 23 0 0 0 0 0 0 74 76 U} 76 31 76 31 76 76 76 70 0 0 25 76 76 23 0 27 76 76 76 21 0 0 0 U}0 0 27 76 23 0 0 0 0 0 0 0 0 72 29 76 29 68 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0U} 0], lvl7=[72 78 76 78 76 78 78 76 78 76 78 68 0 25 78 29 78 21U} 35 0 35 0 35 0 0 74 29 78 29 78 29 78 29 78 21 0 0 35 0 35 0 35 74 29 U} 78 29 70 0 0 25 78 29 78 21 35 0 35 0 35 0 0 74 29 78 29 78 U};PONGSET 106=144; RESERVE SPACE FOR PM GRAPHICSBYTE HPOS, VPOS, P0POS, P1POS, HITS=[0], NUMPLAYERa}S=[2]BYTE ARRAY PM(2048)=$9800, COLR(9)=704INT XDIR=[1], YDIR=[2], XINIT=[1], YINIT=[2]BYTE ARRAYa} PPL(4)=53260BYTE ARRAY PPF(4)=53252BYTE ARRAY BALL=[0 0 0 0 0 0 $C0 $C0 $C0 $C0 0 0 0 a}0 0 0]BYTE ARRAY PADDLE=[0 0 0 $E0 $E0 $E0 $E0 $E0 $E0 $E0 $E0 $E0 $E0 a} $E0 $E0 $E0 $E0 $E0 $E0 $E0 $E0 $E0 $E0 $E0 $E0 0 0 0]CARa}D PL0SCORE=[0], PL1SCORE=[0]BYTE HP0, HP1, XXPROC DELAY(BYTE I); DELAY I/60 SECONDS. BYTE N18=18, Na}19=19, N20=20 CARD TIME IF I=0 THEN I=1 FI TIME= I + N19 * 256 + N20 WHILE TIME<>(N19*256+N20)a} DO ODRETURNPROC PMOFF(); TURN OFF PM GRAPHICS BYTE I POKE(559,34) POKE(623,4) POKE(53277,0) FOR I=0 a}TO 3 DO POKE(53248+I,0) ODRETURNPROC PMON(); TURN ON PM GRAPHICS BYTE I POKE(559,62) POKE(54279,$98)a} POKE(53277,3) POKE(623,1) FOR I=0 TO 3 DO POKE(53256+I,2) COLR(I)=(I+1)*16+10 POKE(53248+I,110) HPOS=110 VPa}OS=110 POKE(53248+I,HPOS) OD POKE(53250,255-HPOS) HP0=110 HP1=145RETURNBYTE FUNC PLPL(BYTE N1,N2) BYTE I I=PPL(a}N1) RSH N2 I=I&1RETURN(I)INT FUNC PSTK(BYTE NUM) BYTE I=632,J=633,K=633 IF NUM=0 THEN IF (I & 12)=4 THEN HP0a}==+2 ELSEIF (I & 12)=8 THEN HP0==-2 FI IF (I & 3)=2 THEN RETURN(-3) ELSEIF (I & 3)=1 THEN RETURN(3) ELSa}E RETURN(0) FI ELSEIF NUM=1 THEN IF NUMPLAYERS=1 THEN IF (VPOS-4)>P1POS THEN P1POS==+3 ELSEIF (VPOS-4)197 THEN P0POS==-3 FI IF P0POS<33 THEN P0POS==+3 FI P1POS==+PSTK(1) IF P1POS>197 THEN P1POSa}==-3 FI IF P1POS<33 THEN P1POS==+3 FI IF HP0<55 THEN HP0=55 FI IF HP0>122 THEN HP0=122 FI POKa}E(53249,HP0) IF HP1<132 THEN HP1=132 FI IF HP1>200 THEN HP1=200 FI POKE(53250,HP1) MOVEBLOCK(PM+1024+25a}6+P0POS,PADDLE,28) MOVEBLOCK(PM+1024+512+P1POS,PADDLE,28)RETURN PROC MOVEBALL() ; MOVE PM BYTE I, J, K, a} GPRIOR=623, CONSOLE=53279, HITCLR=53278 CARD A, B, C ;THE ARRAYS CONTAIN THE SHAPES HITCLR=2a}55 ;XDIR IS ALWAYS 1 OR -1 HERE, BUT COULD COME FROM JOYSTICK READING HPOS==+XDIR IF HPOS<52 THEN SERVE(0) PL1SCORE==a}+1 FI IF HPOS>202 THEN SERVE(1) PL0SCORE==+1 FI ;HPOS MUST BE IN BOUNDS POKE(53248,HPOS) ;SAME COMMENT AS FOR XDIa}R VPOS==+YDIR IF VPOS>210 OR VPOS<34 THEN YDIR=-YDIR SOUND(0,150,10,10) FI MOVEBLOCK(PM+1024+VPOS,BALL,16) DELAY(1a}); IN ORDER TO DETECT COLLISIONS, HEAR SOUNDS ETC. THIS MUST BE HERE. TRY WITHOUT IT !!! SNDRST()RETURN INT FUNC SGN(INa}T X)RETURN(X & 32768) PROC XCHNG()INT TEMP, TEMP1 IF XDIR>0 AND YDIR>0 THEN TEMP=XDIR XDIR=YDIR YDIR=a}TEMP ELSEIF XDIR<0 AND YDIR<0 THEN TEMP=XDIR XDIR=YDIR YDIR=TEMP ELSE TEMP=XDIR XDIR=-YDIR YDIR=-TEMP FIRETURa}NPROC BOUNCE(BYTE PL)BYTE ARRAY STRIG(4)=644 IF STRIG(PL)=0 THEN XCHNG() FI XDIR=-XDIR SOUND(0,150,10,10) Ma}OVEBALL()RETURNPROC DRAWNET(BYTE COLS)BYTE I, J, K COLOR=1 PLOT(0,0) DRAWTO(79,0) PLOT(79,47) DRAWTO(0,4a}7) FOR I=0 TO COLS RSH 1 DO PLOT(39-I,1) DRAWTO(39-I,46) PLOT(39+I,1) DRAWTO(39+I,46) ODRETURN PROC INCSPa}EED() IF XDIR>0 THEN XDIR==+1 ELSE XDIR==-1 FI IF YDIR>0 THEN YDIR==+1 ELSE YDIR==-1 FI HITS=0 IFa} XDIR>3 OR YDIR>3 OR XDIR<-3 OR YDIR<-3 THEN PADDLE(3)=0 PADDLE(4)=0 PADDLE(24)=0 PADDLE(23)=0 FIRETa}URNPROC GET_NUMBER_OF_PLAYERS() GRAPHICS(18) POSITION(0,6) PRINTDE(6,"ONE players?") CLOSE(4) OPEN(4,"K:",4,0)a} DO XX=GETD(4) XX==-48 UNTIL (XX=1) OR (XX=2) OD NUMPLAYERS=XXRETURNPROC MAIN() ; MAIN CONTROL PROGRAM BYTE COa}NSOLE=53279, RGEN=53770, PNUM, SDMCTL=559, J, K, COUNTER, GPRIOR=623 INT X, a}Y CARD I GET_NUMBER_OF_PLAYERS() POKE(53768,0) POKE(53775,3) POKE(623,1) ZERO(PM,2048) PNUM=SDMCTa}L GRAPHICS(21) SDMCTL=PNUM CONSOLE=8 SDMCTL=PNUM PMON() COLR(8)=13*16+2 COLR(4)=1a}*16+10 DRAWNET(0) PL0SCORE=0 PL1SCORE=0 WHILE CONSOLE=7 DO ; CONTINUES UNTIL ANY YELLOW KEY IS PRESSED IFa} PLPL(0,1) THEN BOUNCE(0) HITS==+1 FI IF PLPL(0,2) THEN BOUNCE(1) HITS==+1 FI IF HITS>9 THEN a} INCSPEED() FI MOVEPADL() MOVEBALL() OD PMOFF() GRAPHICS(18) PRINTD(6,"LEFT PLAYER:") PRINTCa}DE(6,PL0SCORE) PRINTD(6,"RIGHT PLAYER:") PRINTCDE(6,PL1SCORE) DELAY(99) GRAPHICS(0)RETURNT PLAYER:") PRINTC`h;**************************************; MUSIK IN ACTION!;; PETER FINZEL 1985;******************i}********************DEFINE B2 ="255", C3 ="242", CIS3="229", D3 ="216", DIS3="204", E3 ="193", i} F3 ="182", FIS3="172", G3 ="162", GIS3="153", A3 ="145", AIS3="137", B3 ="129", C4 ="122i}", CIS4="115", D4 ="108", DIS4="102", E4 = "97", F4 = "91", FIS4= "86", G4 = "81", GIS4= "77"i}, A4 = "72", AIS4= "68", B4 = "65", C5 = "61", CIS5= "58", D5 = "54", DIS5= "51", E5 i}= "48", F5 = "46", FIS5= "43", G5 = "41", GIS5= "38", A5 = "36", AIS5= "34", B5 = "32"DEFINi}E HA="120", VI="60", AC= "30", SE="15", HP="180", VP="90", AP="45", PA= "0", EN="1"DEFINE Pausi}e="0", Attack ="1", Decay="2", Sustain="3";======================================; Ab hier stehen die Noten;======i}=================================;; MENUETT NR. 2;BYTE ARRAY N1=[C4:VI G4:VI G4:AC F4:ACE4:VI D4:AC E4:AC C4:VIA4:AC Gi}4:AC F4:AC E4:AC D4:AC C4:ACB3:VI A3:AC B3:AC G3:VIF4:VI F4:VI F4:VIE4:VI E4:VI E4:VIE4:VI G4:AC F4:AC E4:AC D4:ACC4:HPi};E4:AC C4:AC G4:AC C4:AC E4:AC C4:ACD4:AC B3:AC G4:AC B3:AC D4:AC B3:ACC4:AC D4:AC C4:AC B3:AC A3:AC G3:ACFIS3:VI E3:AC Fi}IS3:AC D3:VIC4:VI C4:VI C4:VIB3:VI B3:VI B3:VIB3:VI D4:AC C4:AC B3:AC A3:ACG3:HPEN:0 ]BYTE ARRAY N2=[C3:VI C3:VI C3:Vi}IC3:HPF3:VI D3:VI F3:VIC3:HPF3:VI D3:VI F3:VIG3:VI D3:VI G3:VID4:VI D4:VI D4:VIC4:VI C4:VI C4:VIC3:VI E3:VI G3:VIC4:i}VI G3:VI C3:VI;C4:VI G3:VI C4:VIB3:VI G3:VI B3:VIA3:VI E3:VI C3:VID3:VI PA:VI PA:VIA3:VI D3:VI D3:VIG3:VI D3:VI D3:VIi}G3:HA D3:VIG3:AC A3:AC G3:AC F3:AC E3:AC D3:ACEN:0 ]BYTE ARRAY N3=[EN:0 ]BYTE ARRAY N4=[EN:0 ]BYTE ARRAY;KANAL -i}1- -2- -3- -4-Att(4)=[ 070 030 000 000 ],Dec(4)=[ 008 004 000 000 ],Sus(4)=[ 048 032 000 000 ],Max(4)=[ 200 140 000 000 ]i},Dis(4)=[ 010 010 010 008 ],Off(4)=[ 000 000 000 000 ] BYTE TEMPO=[ 125 ];**************************************; Intei}rne Variable;**************************************BYTE SKCTL =$D20F, AUDCTL=$D208CARD ARRAY NOTENZi}(4)BYTE ARRAY DAUER (4), LAUT (4), FREQ (4), HKFlg(4)BYTE ARRAY AUDF(8)=$D200, AUDC(8)=$D201i}BYTE ENDEBYTE POINTER N_Ptr;**************************************; Vorbereitungsprogramm;; Initialisierung dei}r Notenzeiger;**************************************PROC Vorbereitung()BYTE iNOTENZ(0)=N1 NOTENZ(1)=N2NOTENZ(2)=N3 NOTi}ENZ(3)=N4FOR i=0 TO 3 DO Dauer(i)=0 Freq(i)=0 LAUT(i)=0 ODSKCTL =3AUDCTL=0RETURN;*i}*************************************; Eintragen in Hardwareregister;; Die Werte Laut(i), Freq(i) und; Dis(i) werden verki}nuepft und in; die Audio-Register eingetragen;**************************************PROC Hardware(BYTE i)BYTE j,dj=i Li}SH 1d=Dis(i) LSH 4AUDC(j)=(Laut(i) RSH 4) % dAUDF(j)=Freq(i)RETURN;**************************************; Befehle zuri} Tonaenderung;; Pausen und der Befehl zum Beenden; einer Stimme werden hier bearbeitet;**********************************i}****PROC Befehl(BYTE i,f,d)IF f=PA THEN ;Pause Dauer(i)=d Laut(i)=0 Freq(i)=0 Noteni}Z(i)==+2 HKFlg(i)=PauseELSEIF f=EN THEN ;Ende Laut(i)=0 Freq(i)=0 HKFlg(i)=Pause ENi}DE==-1FIRETURN;**************************************; Spielen einer Stimme;; Besorgt Frequenz und Timing einer; Notei} eines Kanals;**************************************PROC STIMME(BYTE i)BYTE f,dIF Dauer(i)>1 THEN Dauer(i)==-1 i};Note dauert anELSE f =N_Ptr^ ;neue Frequenz N_Ptr==+1 ;und Dauer d =N_Ptr^ IF f<=1 THEN i} Befehl(i,f,d) ELSE Freq(i) =f Dauer(i) =d Laut(i) =0 HKFlg(i) =Attack i} NotenZ(i)==+2 Freq(i) ==+Off(i) FIFIRETURN;**************************************; Huellkurve bearbi}eiten;; Berechnet die Huellkurve nach dem; ADS-Verfahren(Attack/Decay/Sustain);**************************************PRi}OC Huelle(BYTE i)INT ll=Laut(i)IF HKFlg(i)=Attack THEN l==+Att(i) IF l>Max(i) THEN l=Max(i)i} HKFlg(i)=Decay FIELSEIF HKFlg(i)=Decay THEN l==-Dec(i) IF l;**************************************;PROC Musik()CARD iDOVorbereitung() DO ENDE=4 i} ALLE_4() FOR i=0 TO TEMPO DO OD UNTIL (ENDE=0) ODODRETURNk()CARD iDOVorbereitung() DO ENDE=4 hK;**************************************;* VERTIKAL BLANK INTERRUPT *;* *;* P.m}FINZEL 1987 *;**************************************DEFINE JMP ="$4C", XITVBV ="$E462" m};--------------------------------------; HARDWARE- & SCHATTENREGISTER;-------------------------------------- CARD Vvbm}lkd=$0224, Vvblki=$0222BYTEDmactl=$D400, Prior =$26F,Nmien =$D40E, Colbk =$D01A,Gractl=$D01D, Pmbase=$D407,Csrinh=$02F0m}, SDmctl=$022F BYTE ARRAYColor(5)=$02C4, PColr(4)=$02C0,Hposp(4)=$D000, Sizep(4)=$D008,Trig(4) =$D010, Grafp(4)=$D00D;m}--------------------------------------; GRAPHIK-DATEN;--------------------------------------BYTE ARRAY Shape(0)=[ $80 $Fm}0 $60 $50 $08 $04 $02 $01 ]CARD ARRAY PMAdr(4)=[0 0 0 0]BYTE ZeigerX, ZeigerY;--------------------------------------; m}PM-GRAPHIK EINSCHALTEN;--------------------------------------PROC Pmgraphics(BYTE Basis)BYTE iCARD AdrBYTE Adrhi=Adr+1m}Pmbase=BasisAdr =0Adrhi =Basis+4Gractl=3SDMCTL=$3AFOR i=0 to 3 DO Zero(Adr,256) Pmadr(i)=Adr Adr m}==+256 Sizep(i)=0ODRETURN;--------------------------------------; EINBINDEN VON INTERRUPT-ROUTINEN;----------------m}----------------------PROC Setvbi(BYTE POINTER Vektor)Nmien=0 Vvblkd=Vektor Nmien=$40RETURN;---------------------------m}-----------; VBI-ROUTINE;--------------------------------------PROC Vbipgm=*();zuerst Register retten[ $A2 7 $B5 $C0 m}$48 $B5 $A8 $48 $B5 $A0 $48 $B5 $80 $48 $CA $10 $F1 ]Zero(PMAdr(0)+ZeigerY,8)IF (Stick(0)&1)=0 THEN IF ZeigerY>m}32 THEN ZeigerY==-1 FIELSEIF (Stick(0)&2)=0 THEN IF ZeigerY<224 THEN ZeigerY==+1m} FIFIIF (Stick(0)&4)=0 THEN IF ZeigerX>48 THEN ZeigerX==-1 FIELSEIF (Stick(0)&8)=0 THEm}N IF ZeigerX<208 THEN ZeigerX==+1 FIFIMoveBlock(PMAdr(0)+ZeigerY,Shape,8)Hposp(0)=ZeigerX; m}Register holen...[ $A2 0 $68 $95 $80 $68 $95 $A0 $68 $95 $A8 $68 $95 $C0 $E8 $E0 8 $D0 $EF ]; ...und VBI beenden[JMP m}XITVBV];--------------------------------------; DAS HAUPTPROGRAMM;--------------------------------------PROC HAUPT()m} Pmgraphics($80) ;PMG ab Adr. $8000 Prior=1 ;Prioritaet PColr(0)=$CE ;Farbe Player ZeigerX=120 ;Startpm}unkt ZeigerY=120 SetVBI(VBIPgm) ;Interrupt PUT($7D) ;Bildschirm loeschenCsrinh=1 ;Cursor ausPm}OSITION(10,8) ;Kasten zeichnenPut(17) Put(18) Put(18) Put(5)POSITION(10,9)Put(124) Put(79) Put(75) Put(124)POSITION(10m},10)Put(26) Put(18) Put(18) Put(3)DOIF TRIG(0)=0 THEN IF (ZEIGERX>88) AND (ZEIGERX<104) THEN IF (ZEIGERY>96) Am}ND (ZEIGERY<120) THEN EXIT FI FIFIODSETVBI(XITVBV)RETURNEIGERX<104) THEN IF (ZEIGERY>96) AlV29 78 29 78 21 0 0 35 0 35 0 35 74 29 78 29 70 0 0 25 78 29 78 21 35 0 35 U}0 35 0 0 0 35 0 35 0 25 78 29 78 21 0 0 72 29 76 29 76 76 U} 29 76 29 68 0 0 0 0 0 0 0 0 0 0 0 0 0] DO IF ownflg=0 THEN IF level>0 AND level<4 THEN U} FOR v=0 TO 132 DO allowed(v)=lvl1(v) OD ELSEIF level>3 AND level<7 THEN FOR v=0 TO 132 DO U} allowed(v)=lvl4(v) OD ELSEIF level>6 THEN FOR v=0 TO 132 DO allowed(v)=lvl7(v) U} OD FI FI Bkgd() Pminit() Scorecard() x=56 y=42 dir=8 source=ratrt SetBlock(pmbaU}se+1024,1024,0) y1=42 dir1=4 source1=ratlt source2=ratlt y2=42 dir2=4 delx=1 y3=42 dir3=4U} source3=ratlt pos=0 pos1=11 pos2=11 pos3=11 dely=0 dely1=0 dely2=0 dely3=0 delx1=-1V} delx2=0 delx3=0 x1=184 x2=0 x3=0 dotscnt=0 FOR cnt=0 TO 131 DO w=allowed(cnt) IF w&8V}0 THEN dotscnt==+1 FI OD w=(level-1)MOD 3 IF w>0 THEN x2=184 delx2=-1 FI V}IF w>1 THEN x3=184 delx3=-1 FI DO FOR cnt=1 TO 10-level DO DO UNTIL vcount=1 V} OD UNTIL vcount=128 OD Move() Move1() Move2() Move3() Update() IF dotscnt=0 THEN V} Rndover() EXIT FI IF((x=x1)AND(y=y1))OR ((x=x2)AND(y=y2))OR ((x=x3)AND(y=y3)) THEN Contact(V}) EXIT FI Poke(77,0) OD Cleanscr() IF dotscnt=0 THEN level==+1 IF level=10 THEN level=9V} FI score==+rndpts rndpts=0 IF maxscore7 OD IF consol=3 V }THEN Position(7,w) PutD(6,32) w==+1 IF w=6 THEN w=3 FI Position(7,wV }) PutD(6,170) Ding(121,600) ELSEIF consol=5 THEN Position(10+level,7) PutD(6,48+level)V} level==+1 IF level=10 THEN level=1 FI Position(10+level,7) PutD(6,176+levelV}) Ding(60,600) ELSEIF consol=6 THEN IF w=4 THEN Init() Bkgd() Pminit() V} Setbar() Cleanscr() EXIT ELSEIF w=5 THEN Loadmaze() ownflg=1 V} Play() ownflg=0 Cleanscr() EXIT ELSEIF w=3 THEN Play() Cleanscr(V}) EXIT FI FI DO UNTIL(consol&7)=7 OD ODODRETURN Play() Cleanscr(TYt#NF!; ԧӠŠΠΡx!; 󠠠_xXB~<B~Z~<$f# 8d>:~xxx,0#Z}6|\~4 #""#$<~</ wЩ w%Z}Щ w\ wʢ w w wt#iu#i u#t# # w{#z#'z#{#Z}L't#mz#u#m{#i0i&mz#&m{# wz#Ю{#LL'{#z#z#{#L'0mz#1m{#Z} wz#{#L'`rbot=[L' '''LL(8' ' 'Ȍ''9(':(9(':('LF(el''L(('L' !`Z}QdLU(P(M#L)#P( # ޠ# # ## ii# iZ} Q(Q(IL)#i##i# ## 椩# ii# i Z}8###1$)@Lr)%% L)#1$)L)Q%P% `L) NI#8% % ޠLZ }+8%% ޠL+8%*% #8%8% ##Z!} m###1$)##IL*#IL*#L*#IL*#IL*#L*#IL*#IL*#L*#IL*Z"}#IL*##)ŮL*#) #L*#)##-#ŮL +###-#L,+N##L)+#L +#ILW+%Z#}%%%$y#$x#L+#IL+%Ȍ%%%$y#$x#L+#IL+%%%%0$y#/$x#L+#IL+%Z$}%%Ȍ% $y#$x#%m%%%m%%%m%%%m%%`h,CL+8% % ޠLv.8%%Z%} ޠLv.8%*% +8%8% ++ mZ&}+##1$# 8 #ŠL-8%%&%% && &0L -8&& & &8%% &%% & & &0L>-8 Z'}& & & & && & &0L-%%%%0Lh-#L~-%%%%0L~-#L-%%%%0L-#L-%%%%0L-Z(}##-#L-N##L-#L-#IL-%%%%#}##|#Lv.#IL&.%Ȍ%%%#}##|#Lv.#IZ)}LQ.%%%%#}##|#Lv.#ILv.%%%Ȍ%#}##|#`L}.8& & ޠLZ*}08&& ޠL08&*& y.8&8& x.y. Z+} mx.##1$# 8 #ŠL008%&&%& && &0L/8&& & &8%& &%& & &Z,} &0L/8 & & & & && & &0L0%&%&0L/#L/&%&%0L/#L00&%&%0L0#L00%&Z-}%&0L00##-#LR0N##LO0#L00#IL}0%%%%###~#L0#IL0%Ȍ%%%##Z.}#~#L0#IL0%%%%###~#L0#IL0%%%Ȍ%###~#`bugL08& & Z/}ޠLv38&& ޠLv38&*& 08&8& Z0}00 m0##1$# 8 #ŠL28%&&%& && &0L 28&& & &8%& Z1}&%& & & &0L>28 & & & & && & &0L2%&%&0Lh2#L~2&%&%0L~2#L2&%&%0LZ2}2#L2%&%&0L2##-#L2N##L2#L2#IL2%%%%####Lv3#IL&3%ȌZ3}%%%####Lv3#ILQ3%%%%####Lv3#ILv3%%%Ȍ%####`Lz3 ILz3%ЩZ4} wt#iu#im%v#m%w#y#x#w#v# %m%%%m%%%m%%%m%%%Щ wt#iu#iZ5}m%v#m%w#}#|#w#v# &m%&&m%&&m%&&m%&&Щ wt#iu#im&v#m&w##Z6}~#w#v# &m%&&m%&&m%&&m%&&Щ wt#iu#im&v#m&w###w#v# Z7} R(`L 5 T w#ͦ#Lq6 # ޠ%% # %%#1$#%% iiZ8}%% i #)0L5E%D% L5%% %% ii%%Z9} i #)@L.6W%V% Lk6#) LH6E%D% Lk6#)Lb6K%J% Lk6%% #L5%ȌZ:}%&%%L6%% Τ%%Lz6`pos2L6666Ȍ666666ͧ666L6 66L6`L6L6D:MAZEZ;}6 D#ͦ#L,7#i#1$$#L 7$$  y`LC7Ѝ{#z#z#{#Lr7{#z# wz#{#LM7`Z<}Lv78# 1$)pL78# 1$ 1$#1$ #1$`L7#i 1$)0L7#i 1$ 1$#1$ #1$`LZ=}78#1$)PL,88#1$ 1$#1$ #1$`L08#i1$)PLj8#i1$ 1$#1$ #1$` LZ>}o8%F%%=%$y##x#t#iu#im%v#m%w# wt#iu#i L8(1) (2)Z?}_(3)|(4)(5)Save8 L9(6)Exit (arrows)9 %Щ wt#iu#im%v#m%w#y#x#w#v#  gZ@}k8k8IL_9w#v#  wk8IL9%ɵ%0L9%i%%i%LB:k8IL9=%%0L98%%%ZA}%LB:k8IL:%ɲ%0L:%i %%i%LB:k8ILB:F%%0LB:8% %%%ILO:L<8%:%ZB} #8%-% ## m### ii#ZC} i k8ILf;%% #1$8#1$)1$#i1$)1$8# 1$)1$#i 1ZD}$)1$L% LMEN=> # 䤠 L&>SCORE=> ## 椠 LG>Rnd=>ZJ}B ## 椠 Lg>HI=>c ## 椠# L>LVL=> # `HNLLNLLNLLND####LNNL##ZK}JNLLNF####NN#JLLF#####LL>HNLLNLNLLLNDLLLLLLJLZL}LLLLLFLLLLLLJLLLLLLFLLLLLLHLD?HNLNLNNLNLNDNN###JNNZM}NN###JNFNN###JNNNN###JNFNN#####NNHLLLLD?L+@#L@Ͷ#Ly@ZN}#Ly@#͊#Lv@?m#?i#1$#LL@L@Ͷ#L@#L@#͊#L@?m#?i#1$#LZO}@L@Ͷ#L@#͊#L@&@m#'@i#1$#L@ 5 & =%8%%*%##y##x#t#iu#iZP} %*%##}##|####~#&*&#%Ȍ%&*&###### # # #%%%ZQ}%%%%%%%%%%%%%&&&&#{#z#z#{#L*Bz#1$##)PLB#z#{#LA8#ZR} ޠ#͋#LbB&&%%͋#LB&&%%{#Ȍz#8 #BBz#{#LBU ILBZS}z#{# ILB ) + z. 0 w3#LB V=LZC%M% %M%LB%M% %M%I%M& %M&L"C%M& %M&&%M& ZT}%M&LNC%M& %M&LNC '=LZCM wLB @7#LC##I LwC ##m###m#####͂###LC#ZU}###LC#ILC8#####LC =LCL+@`LC T LD Ra' eVGeC  L!D REGULARDZV} sL=Doption CREATED-  L[DPLAY OWNDR s LDselect LVL 23456789Dp LDstartDZW}  0i1i wLDWRITTEN IN ΡDͩ ##########)ILEZX}ILhE#  Ѥ##ILKE##  ѤXy 'L7FILE m# 0m# Ѥ##ZY}I LE# m# m# ѤX< 'L7FIL7F#ILF & 5 & l8 @7LJFL7F#IL$F <# (@ZZ}# @7LJFL7F#IL7F (@ @7LJF)IL7FLELC``CIL7F#ILF & 5 & l8 @7LJFL7F#IL$F <# (@Xrra THEN px1=-3 FI IF xpos1rri THEN px2=-3 FI vf} IF xpos2ura THEN py1=-3 FI IF ypos1uri THEN py2=-3 FI IF ypos2rra THEN px21=-3 FI IF x2pos1rri THEN px22=-3 FIvj} IF x2pos2ura THEN py21=-3 FI IF y2pos1uri THEN py22=-3 FI IF y2pos2=0 AND x<160 AND y>=0 AND y<192 THEN FPlot (color~s},x,y) FIRETURN PROC LineTo (BYTE x1,y1,x2,y2) Pixel (x1,y1) FLine (color,x2,y2)RETURNCARD FUNC Abs (INT val) I~t}F val<0 THEN val=-val FIRETURN (val)1,x2,y2) Pixel (x1,y1) FLine (color,x2,y2)RETURNCARD FUNC Abs (INT val) I|+t)nUT & & & & &eeXepYeqU)oUJJeppqnqo=inp=mnp`0 ?Upv}.qZ[UT tuZ[UT`UtUL4pt8UZvTuTLIpu8T[wUZT[vwhw *8v8vw}vZetZeeLpee[eu[Z[ L&qv *8w8ww[eu[ex}eLqeeZetZZ[ æZ[UT`[ L&qv *8w8ww[eu[e7t)nUT & & & & &eeXepYeqU)oUJJeppqnqo=inp=mnp`0 ?Upzz}.qZ[UT tuZ[UT`UtUL4pt8UZvTuTLIpu8T[wUZT[vwhw *8v8vz{}vZetZeeLpee[eu[Z[ L&qv *8w8ww[eu[ez|}eLqeeZetZZ[ æZ[UT`"4`7LL)4 "4"4#4Lw4"4ɠ#4Lw4$4%4Lw4$4%4z}}Lw4$4"4 `4 2L4 x4y4x4 &4{4z4 p`L444440L48444444`4 2z~}fL  L4444 4444 4 4 444 4 44444444z}444444 T  |4 |4 |4 |44m444m44z}4m444m4444L5444L6444L6444L.6444L>6444LN6444L^z}6444Ln644444 |44L644IL\744m444m444m444m4444L6z}444L6444L6444L7444L7444L&7444L67444LF744z}444 |4L5``44L6444L7444L7444L&7444L67444LF744xn JSR CIO STY cio_status IF cio_status = $88 THEN eof(chan) = 1 FIRETURN (ic.blen)CARD FUNC PutAD(BYTE chan CARD }addr, len) ; Block write TYPE IOCB = [BYTE hid,dno,com,sta CARD badr,put,blen BYTE aux1,aux}2,aux3, aux4,aux5,aux6] IOCB POINTER ic BYTE chan16 chan16 = (chan&$07) LSH 4 ic = $340+chan16 ic}.com = 11 ; write ic.blen = len ic.badr = addr [$AE chan16 $20 $E456 $8C cio_status] ; LDX chan JSR CIO STY cio_sta}tusRETURN(ic.sta)PROC Fix_FlSp(BYTE ARRAY filespec) CARD i IF filespec(2) <> ': AND filespec(3) <> ': THEN ; if }no device, prefix "D:" to file filespec^ == +2 i=filespec^ WHILE i>2 DO filespec(i) = filespec(i-2) }i == -1 OD filespec(1) ='D filespec(2) =': FIRETURNPROC Show_Hdr() Print(" LittleLister 2 - R Curzon'L}L' =setup 'RUN 4A60' =rerun'LL [input [output]]' =command line")RETURNPROC Show_Vars() PutE() PrintF("A Printer }width : %U%E", pr_wid) PrintF("B Width per column : %U%E", file_lim) PrintF("C Number of columns: %U%E", col_}lim) PrintF("D Between columns : %U%E", file_marg) PrintF("E Text lines/page : %U%E", line_lim) PrintF("F Total} lines/page : %U%E", page_len) PrintF("G Filler lines/top : %U%E", top_bl) PrintF("H Filler lines/bot : %U%E", b}ott_bl) PrintF("I Page pause Y/N : %C%E", pause_fl) PrintF("J ASCII/ATASCII/HEX: %S%E", convert_st) PrintF("K S}tarting page num: %U%E", page_st) PrintF("L Output device : %S%E", out_dev) PutE() PrintE("S Save configuratio}n - A-J") PrintE("X Execute")RETURNPROC Set_Defs() BYTE i FOR i = 1 TO 20 DO in_fil(i) = ' OD in_fil(0) = 0} page_n = 0 out_dev(0)=2 out_dev(1)='P out_dev(2)=': vars = @pr_widRETURNPROC Set_Vars() BYTE change, i, j, sav}e_fail BYTE loc_err ch = 255 Close(4) Open(4,"K:",4,0) loc_err = 0 save_fail = 0 DO ; check for bad values, all}ow ; changes to program variables IF col_lim = 0 THEN col_lim =1 FI IF line_lim=0 THEN line_lim =1 FI IF con}vert_fl ='S THEN convert_st = "ASCII " ELSEIF convert_fl ='T THEN convert_st = "ATASCII" ELSE convert}_st = "HEX " FI crsinh = 1 Put(125) Show_Hdr() Show_Vars() Position(5,21) IF pr_wid< file_lim }* col_lim +file_marg * (col_lim-1) THEN loc_err = 1 Print("INVALID A, B, C, D") ELSEIF page_len # line_}lim + top_bl + bott_bl THEN loc_err = 1 Print("INVALID E, F, G, H") ELSEIF out_dev(1) >= 'a THEN }loc_err = 1 ;should be upperc. Print("INVALID L") ELSEIF save_fail = 1 THEN Print("NO FILE D:LL.COM") s}ave_fail = 0 loc_err = 0 ; not fatal error ELSEIF change = 'S THEN Print("LL.COM revised") loc_err = 0 }; not error ELSE loc_err = 0 FI shflok = $40 ; upper case change = GetD(4) Position(0,21) Print(" } ") crsinh = 0 IF change>= 'a THEN change == -32 FI IF change>='A and change<='L THEN } Position(23,change-61) Print(" ") Position(21,change-61) Print(": ") IF change<'I OR c}hange ='K THEN vars(change - 65) = InputB() ELSEIF change = 'I THEN IF pause_fl = 'N THEN pau}se_fl = 'Y ELSE pause_fl = 'N FI ELSEIF change = 'J THEN IF convert_fl = 'S THEN conv}ert_fl = 'T ELSEIF convert_fl = 'T THEN convert_fl = 'H ELSE convert_fl = 'S FI ELSEI}F change = 'L THEN InputMD(0,out_dev,20) Fix_FlSp(out_dev) FI FI IF change='S AND loc_err= 0 TH}EN Close(3) Error = D_Error op_ok = 1 Open(3,"D:LL.COM",12,0) Error = My_Error IF op_ok = 1 THE}N FOR i = 1 TO 13 DO j = GetD(3) OD ; find the 14th byte FOR i = 0 TO 9 DO }PutD(3,vars(i)) OD ; update the variables ELSE save_fail = 1 FI Clr_Dos(3) FI UNTIL loc_e}rr= 0 AND change= 'X OD Close(4)RETURNPROC Alloc_Buffs() CARD size col_wid = file_lim + file_marg b_wid = col_wid} *(col_lim) -file_marg + 1; set index values file_l = file_lim -1 col_l = col_lim -1 line_l = line_lim -1 ch }= 255 ; find size and location of ; the output buffer out_s = (line_lim) * b_wid out_b = sdslst - out_s ; inp}ut buffer starting point ; was set to end of program ; in variable declarations IF in_b > out_b - 200 THEN Print}E("not enough memory!!") End() FI ; find size of input buffer in_s = sdslst - out_s - in_bRETURNPROC Print_Cle}ar() CARD i, b_ptr, o_b_ptr BYTE j, k, n, tc, bc, test b_ptr = 0 o_b_ptr = 0 FOR i = 0 to line_l DO ; trim trail}ng spaces from ; each print line n = 0 FOR j = 0 to b_wid - 1 DO IF out_b(b_ptr + j) # ' THEN n = }j FI OD ; line will be chopped at "n" b_ptr == + n + 1 out_b(b_ptr) = $9B b_ptr == +1 ; slide everyt}hing else down ; over the unused space MoveBlock(out_b + b_ptr, out_b + o_b_ptr + b_wid, (line_l - i) * b}_wid) o_b_ptr = b_ptr OD tc = top_bl bc = bott_bl WHILE tc > 0 DO IF top_bl >3 AND tc= top_bl-2 THEN }; if enough room print page header PrintD(3,in_fil) FOR i= 9 TO pr_wid-in_fil(0) DO PutD(3,' ) OD} PrintD(3,"Page ") PrintBDE(3,page_n) tc == -1 ELSE PutDE(3) tc == -1 FI OD PutAD(3,out_b},b_ptr) WHILE bc > 0 DO ;bottom fill lines PutDE(3) bc == -1 OD IF pause_fl= 'Y AND out_dev(1) # 'D THEN P}utE() PrintE("RETURN =more ,BREAK =quit") Close(4) Open(4,"K:",4,0) ch = 255 DO test = GetD(4) UNTIL }test = $9B OD Close(4) FIRETURNPROC Rst_Outb() file_c = 0 line_c = 0 col_c = 0 out_i = 0 SetBlock(out_b,out_}s,' ) ; 'blank' is not $00!RETURNPROC Compose(BYTE chx) ; find where each character belongs ; in the output buffer} IF chx = $9B OR file_c>file_l THEN out_i == -file_c + b_wid line_c == +1 file_c = 0 FI IF chx = $9B THEN RE}TURN FI IF line_c>line_l THEN col_c == +1 out_i = col_c * col_wid line_c = 0 file_c = 0 FI IF col_c>col}_l THEN page_n == +1 IF page_n >= page_st THEN Print_Clear() FI Rst_Outb() ;clear/reset ptrs FI ;} ; out_i now points to where to put ; this character ; out_b(out_i) = chx file_c == +1 out_i == +1RETURNPROC Op_}File()BYTE dnumBYTE ARRAY dir_wk(21)BYTE ARRAY dir_nm = "Dn:*.*" ch = 255 dnum = 0 op_ok = 1 DO IF in_fil(0) =} 0 OR r_ent = 1 OR op_ok = 0 THEN; if menu, set position IF (c_wds < 2 OR r_ent = 1) AND dnum = }0 THEN Position(25,21) Print(" ") Position(2,21) FI Print("Source (RET quits/1}-4,8):") shflok = $40 ; upper case dnum = 0 DO UNTIL ch # 255 OD IF ch = 31 THEN dnum = 1 FI IF} ch = 30 THEN dnum = 2 FI IF ch = 26 THEN dnum = 3 FI IF ch = 24 THEN dnum = 4 FI IF ch = 53 THEN dnum = 8 }FI IF dnum # 0 THEN dir_nm(2) = dnum + '0 ch = 255 op_ok = 1 Error = D_Error Cl}ose(2) Open(2,dir_nm,6,0) IF op_ok = 1 THEN PrintF("%E%EDrive # %C%E%E", dnum ) } DO InputMD(2,dir_wk,20) IF op_ok = 0 THEN EXIT FI PrintE(dir_wk) IF dir_wk}(1) >= '0 AND dir_wk(1) <= '9 THEN EXIT FI OD PutE() FI Close(2}) op_ok = 0 Error = My_Error ELSE InputS(in_fil) IF in_fil^ = 0 THEN End() FI } Fix_FlSp(in_fil) FI FI Error = D_Error IF dnum = 0 THEN Close(2) op_ok = 1 Open(2,in_fil},4,0) FI UNTIL op_ok OD Error = My_ErrorRETURNPROC Hcompose(BYTE chx)BYTE t Compose('$) t =(chx&$F0) RSH 4 +} '0 IF t > '9 THEN t == +7 FI Compose(t) ; first digit t =(chx&$0F) + '0 IF t > '9 THEN t == +7 FI Compose(t) ; la}st digitRETURNPROC Print_File() BYTE t CARD i Rst_Outb() Op_File() Close(3) Open(3,out_dev,8,0) IF convert_}fl = 'T THEN DO in_c =GetAD(2,in_b,in_s) FOR i = 0 TO in_c - 1 DO Compose(in_b(i)) OD IF }eof(2) THEN page_n == +1 Print_Clear() EXIT FI UNTIL eof(2) OD ELSEIF convert_fl = 'H THEN D}O in_c =GetAD(2,in_b,in_s) FOR i = 0 TO in_c - 1 DO Hcompose(in_b(i)) OD IF eof(2) THEN } page_n == +1 Print_Clear() EXIT FI UNTIL eof(2) OD ELSEIF convert_fl ='S THEN DO in_c =Get}AD(2,in_b,in_s) FOR i = 0 TO in_c - 1 DO IF in_b(i) =$9B THEN Compose($9B) ELSE t = in_b(i) &} $7F IF t >26 AND t <32 OR t =96 OR t >122 THEN Hcompose(in_b(i)) ELSE } IF in_b(i) > $7F THEN Compose('@) FI IF t < 27 THEN Compose('^) Compo}se(t + $40) ELSE Compose(t) FI FI FI OD IF eof(2) THEN page_n =}= +1 Print_Clear() EXIT FI UNTIL eof(2) OD FI Close(2) Clr_Dos(3)RETURNPROC Get_wds() CARD POINT}ER dosvec = $0A BYTE POINTER comtab_ptr1 BYTE POINTER comtab_ptr2 BYTE ARRAY c_line, wk_d BYTE i, j, eol_fl in_fil}(0) = 0 comtab_ptr1 = dosvec^ + 3 c_wds = 0; no of words on command line; 0 means not a comm line type DOS; command }line DOS's have a JMP instr; at comtab + 3 to file crunch; routine IF (comtab_ptr1^) # $4C THEN RETURN FI; but ma}ke sure it's not Machdos; (no command line) comtab_ptr1 = dosvec^ + 6 comtab_ptr2 = dosvec^ + 9 IF (comtab_ptr1^) = $4}C AND (comtab_ptr2^) = $4C THEN RETURN FI c_line = dosvec^ + 63; get command line words eol_fl = 0 i = 0} DO; find start of word DO IF c_line(i) = $9B OR i > 63 THEN eol_fl = 1 EXIT ELSEIF c_line}(i) # ' THEN EXIT ELSE i == +1 FI OD IF eol_fl THEN EXIT FI; trace to end of word, store j = 1 c_wds} == +1; ignore 1st word only IF c_wds = 2 THEN wk_d = in_fil ELSEIF c_wds=3 THEN wk_d=out_dev FI IF c_wds }> 1 THEN DO wk_d(j) = c_line(i) i == +1 IF c_line(i) = $9B OR i > 63 THEN eol_fl = 1 }FI IF c_line(i) =' OR eol_fl =1 THEN wk_d(0) = j EXIT FI j == +1 OD Fix_FlSp(wk_d) } ELSE DO i ==+1 IF c_line(i) = $9B THEN eol_fl = 1 EXIT ELSEIF c_line(i)=' THEN EXIT} FI OD FI UNTIL eol_fl = 1 OR c_wds = 3 ODRETURNPROC Run_Ent(); entry point for RUN dos command r_e}nt = 1PROC Main() device = 0 ; suggested by ACS Sys_Error = Error Error = My_Error Set_Defs(); check if command l}ine type DOS,; and if filename on the command; line Get_wds() DO IF c_wds > 1 AND r_ent = 0 THEN Show_Hdr(}) ELSE Set_Vars() FI Alloc_Buffs() Print_File() Set_Defs() IF c_wds > 1 THEN EXIT FI OD Close(2)} IF out_dev(1) = 'D THEN Clr_Dos(3) ELSE Close(3) FIRETURN Set_Defs() IF c_wds > 1 THEN EXIT FI OD Close(2)B;**********************************************************************;* } *;* PhoeniX SoftCrew ACTION! Programme *;* most (c) by PSC Software Devel}ellen (fuer Zeichensaetze)(UE:CS)mierer koennen Binaer-Dateien in HEX in eine Datei ausgeben lassen, um Code-Blocks zu erst#opment Lippstadt/Warendorf *;* *;* PhoeniX Sof}tCrew #### #### #### *;* c/o Carsten Strotmann # # ## ## } *;* An der Kreutzbrede 20 #### ### ## Software Development *;* # ## ## } *;* 4410 Warendorf 1 # #### #### *;* } *;**********************************************************************; Progr}ammname :Rainbow ; Filename :RAINBOW.ACT; von :Carsten Strotmann; letzte Aenderung:13.10.91; Be}merkung : BYTE wsync=$D40A, vcount=$D40BBYTE color2=$D018, color4=$D01APROC Rain ()BYTE rtcl}ok2=$14, ch=$2FC ch=$FF DO wsync==+1 color2=rtclok2+vcount color4=rtclok2+vcount UNTIL ch#$FF ODRETURN rtclx;**********************************************************************;* } *;* PhoeniX SoftCrew ACTION! Programme *;* most (c) by PSC Software Develo}pment Lippstadt/Warendorf *;* *;* PhoeniX Soft}Crew #### #### #### *;* c/o Carsten Strotmann # # ## ## } *;* An der Kreutzbrede 20 #### ### ## Software Development *;* # ## ## }For those interested in the Action! language, this is the LittleLister source code. In order to represent the non-ASCII chara}cters, it was prepared by LittleLister itself. It prefixes the inverse video characters with a "@" -- so it will need some e}diting to run... If you are checking out compiled languages for the 8bit, you will note Action! has similarities to Pascal} and C, as can be seen in this example. And it is faster in compilation, and compactness of code produced than any other hi-}level language on the 8 bit. A pleasure to use, comes with a good built-in program editor. Potentially interesting things}:procedure GetAD(), PutAD() - block I/O suggested by Bruce Langdonprocedure Get_Wds() - gets the words from the command }line for Sparta DOS, DOS XL as well as detecting whether the DOS in use has command line capability procedure End() - goes} to DOS (not too tricky), but this procedure also keeps the stack clear, regardless of how deeply nested you are when you cal}l it.procedure Clr_Dos() - a work around. I found that if I returned to SpartaDOS, when the last disk access was for }write or update, I often got some out-of-control disk writing. This function ensures that the last disk access was a read bef}ore we exit to DOS. [If anybody can explain, I would like to know what causes this!]t the last disk access was a read befXLL.DOC file included below for a quick rundown.PRINTER OUTPUT OPTIONLittlelister composes columnar output in memory. It }can be used with any printer, to print any size of input file. I wrote it for my 1027, but it works even better with my new }NX-10 printer. For maximum speed printing, it can be set to represent "unprintable" bytes with combinations of printable one}s; full graphics ATASCII printing is also possible using G: (see below).THE CODEThe UUencoded binary file follows in a se}parate message. If it doesn't make it through some gateway in its travels, I will mail a copy direct on request. For least }frustration, use the YAU UUdecoder to decode it. It seems some of the other decoders might require extra padding on each line}; I used YAUE to encode it. Action! sources also available on request, due to length I haven't posted them... yet)(Thanks }to JRD: YAU and YAUE are very nice tools; they work fine with SpartaDOS in both command line and prompt modes.)(Thanks also} to Bruce Langdon, for the ideas in his PRINT.ACT program posted to Usenet some time ago)e and prompt modes.)(Thanks also[&959&''''&''''''''''P& '''''''& %; "TVl&k+*o&i-=v&)&z436521, .&~rey twq90&>fhdgsaLJ:}&^OPU I_|VC&Z$#&%"![ ]gameover'pressstart' ?~ ?~HP<.<8x|~P<.<8x||B$<<<~~}B$<(<<~~D$<<<~"$<(<<~D$<<<} freq3, AUDF3 =$D204, AUDF2 =$D202, ATRACT=$004D, xtemp, ytemp, STICK0=$0278, STRIG0=$0?}284, HPOSP0=$D000CARD CDTMV1=$0218, CDTMV2=$021A, CDTMA1=$0226, CDTMA2=$0228CARD ARRAY pk1(11), @} pk2(11)DEFINE SAVETEMPS="[$A2 7 $B5 $A8 $48 $CA $10 $FA]", GETTEMPS="[$A2 0 $68 $95 $A8 $E8 A} $E0 8 $D0 $F8]", XITVBV="[$4C $E462]"PROC SETVBV=$E45C (BYTE areg,xreg,yreg)PROC DLinit()CARD sdlist=$023B}0BYTE iBYTE POINTER k pm = (last + $0FFF) & $F000 misl = pm + $180 plr0 = misl + $80 plr1 = plr0 + $80 plr2 = plr1 + C}$80 plr3 = plr2 + $80 dl = plr3 + $80 sline= dl + 24 rnum = sline + 8 snum = rnum + 8 disp = snum + 4 FOR i = 0 TO D}3 DO dl(i) = $70 OD dl(4) = $47 dl(5) = disp & $FF dl(6) = disp RSH 8 FOR i = 7 TO 15 DO dl(i) = $07 OD dl(E}16) = $70 dl(17) = $70 dl(18) = $46 dl(19) = sline & $FF dl(20) = sline RSH 8 dl(21) = $41 dl(22) = dl & $FF dl(23) = F}dl RSH 8 SDLIST = dl k = "RABBITS:3 SCORE:0000" FOR i = 0 TO 19 DO k ==+ 1 sline(i) = k^ + $A0 OD Zero(dispG},200)RETURNPROC PKINIT() pk1(0) = harrt1 pk1(1) = harrt1 pk1(2) = harrt1 pk1(3) = 0 pk1(4) = harlf1 pk1(5) = harlfH}1 pk1(6) = harlf1 pk1(7) = 0 pk1(8) = hardn1 pk1(9) = harup1 pk1(10)= harfr1 pk2(3) = 0 pk2(0) = harrt2 pk2(1) = harrI}t2 pk2(2) = harrt2 pk2(3) = 0 pk2(4) = harlf2 pk2(5) = harlf2 pk2(6) = harlf2 pk2(7) = 0 pk2(8) = hardn2 pk2(9) J}= harup2 pk2(10)= harfr2RETURNPROC PutNum(BYTE n)BYTE x, y, random=$D20A DO x = random IF x < 200 ANK}D disp(x) = 0 THEN EXIT FI OD DO y = RANDOM & $0F IF y < 10 THEN EXIT FI OD disp(x) = y % ctbl(n) atbl(L}n) = x vtbl(n) = yRETURNPROC Eranum(BYTE n)BYTE x x = atbl(n) disp(x) = 0RETURN PROC Vbgmovr()BYTE nBYTE POIM}NTER j AUDC1 = 0 AUDC2 = 0 AUDC3 = 0 AUDC4 = 0 CDTMV1 = 0 CDTMV2 = 0 j = gomsg FOR n = 0 TO 9 DO disp(85+n) = N}j^ j ==+ 1 OD j = psmsg FOR n = 0 TO 11 DO disp(144+n) = j^ j ==+ 1 ODRETURNPROC Vbwalls() IF winc(0) <> O}0 THEN winc(0) ==- 1 IF byloc(0) > 30 THEN byloc(0) ==- 1 FI FI IF winc(1) <> 0 THEN winc(1) ==- 1 IF byloc(1P}) <= 204 THEN byloc(1) ==+ 1 FI FI IF winc(2) <> 0 THEN winc(2) ==- 1 HPOSP2 = bxloc(0) IF bxloc(0) > 39 THENQ} bxloc(0) ==- 1 FI FI IF winc(3) <> 0 THEN winc(3) ==- 1 HPOSP3 = bxloc(1) IF bxloc(1) < 208 THEN bxloc(1) ==R}+ 1 FI FIRETURNPROC Vbplayer()BYTE d,xCARD pic xtemp = 0 ytemp = 0 IF STICK0 <> $0F AND (RTCLOK(2) &S} $07) <> 0 THEN AUDF2 = $10 VOL2 = $04 FI d = STICK0 - 5 IF (RTCLOK(2) RSH 3 & 1) = 1 THEN pT}ic = pk1(d) ELSE pic = pk2(d) FI d = STICK0 FOR x = 0 TO 3 DO IF (d & 1) = 0 THEN xtemp = stblx(3-x) ytemp U}= stbly(3-x) FI d = d RSH 1 OD IF POPLT = $0C THEN rnum(0) ==- 1 lives ==- 1 diesw ==+ 1 FI IF (POPLT & $04)V} <> 0 THEN harx ==+ 1 xtemp = 0 FI IF (POPLT & $08) <> 0 THEN harx ==- 1 xtemp = 0 FI IF (byloc(0) + 2) RSH 1 =W} hary THEN rnum(0) ==- 1 lives ==- 1 diesw ==+ 1 FI IF (hary + 10) * 2 = byloc(1) THEN rnum(0) ==- 1 lives ==- 1X} diesw ==+ 1 FI harx ==+ xtemp HPOSP0 = harx hary ==+ ytemp MoveBlock(plr0+hary,pic,14)RETURNPROC vbgun()BYTE Y}t,x,n, shots=[0] t = strigf strigf = STRIG0 IF strigf = 0 AND (xtemp % ytemp) <> 0 THEN FREQ3 = $40 AZ}UDC3 = $04 shots ==+ 1 x = shots & 3 sincx(x) = xtemp * 2 sincy(x) = ytemp * 2 shotx(x) = harx + 3 shoty(x) = har[}y + 8 FI Zero(misl,$80) FOR x = 0 TO 3 DO IF (sincx(x) % sincy(x)) <> 0 THEN shoty(x) ==+ sincy(x) IF shoty(x)\}*2+2 >= byloc(1) THEN sincx(x) = 0 sincy(x) = 0 winc(1) ==+ 8 FI IF shoty(x)*2-10 <= byloc(0) THEN sinc]}x(x) = 0 sincy(x) = 0 winc(0) ==+ 8 FI t = shoty(x) misl(t) ==% mismsk(x) misl(t+1) ==% mismsk(x) t = ^}M0PF(x) n = 0 DO IF (t&1) = 1 THEN eranum(n) putnum(n) EXIT FI t = t RSH 1 N ==+ 1 _}IF N = 4 THEN EXIT FI OD shotx(x) ==+ sincx(x) HPOSM0(x) = shotx(x) IF shotx(x) >= bxloc(1) THEN si`}ncx(x) = 0 sincy(x) = 0 winc(3) ==+ 8 FI IF shotx(x)-6 <= bxloc(0) THEN sincx(x) = 0 sincy(x) = 0 a}winc(2) ==+ 8 FI FI OD t = 0 FOR x = 0 TO 3 DO t ==% sincx(x) % sincy(x) OD IF t b}= 0 THEN AUDC3 = 0 FI FOR t = 0 TO 2 DO IF P0PF RSH 1 = 1 THEN eranum(t) x = vtbl(t) putnum(t) n = 3 c}snum(n) ==+ x DO IF snum(n) > '9 +$A0 THEN snum(n) = '0 +$A0 IF n = 0 THEN EXIT ELSEd} n ==- 1 FI ELSE EXIT FI OD FI OD RETURNPROC vb()BYTE n SAVETEMPS IF dieswe} <> 0 AND lives = 0 THEN vbgmovr() GETTEMPS XITVBV FI poplt = POPL popft = P0PF IF nsound > 0 THEN nsound ==- f}1 AUDC4 = (nsound RSH 1) % $A0 FI IF vol1 > 0 THEN vol1 ==- 1 AUDC1 = vol1 % $C0 FI IF vol2 > 0 THEN vol2 ==- g}1 AUDC2 = vol2 % $80 FI freq3 = freq3 * 4 AUDF3 = freq3 IF diesw <> 0 THEN diesw ==+ 1 PCOLR0 ==+ 2 AUDF2 = PCOh}LR0 * 8 AUDC2 = $88 GETTEMPS XITVBV FI vbwalls() ATRACT = 0 vbplayer() vbgun() HITCLR = 0 GETTEMPS XITVBVRETi}URNPROC t1() SAVETEMPS IF tim2st <> 2 THEN tim2st ==- 1 FI CDTMV1 = 256 rnum(0) = vtbl(0) + $A0 GETTEMPSRETURNj}PROC t2() SAVETEMPS CDTMV2 = tim2st byloc(0) ==+ 1 byloc(1) ==- 1 bxloc(0) ==+ 1 HPOSP2 = bxloc(0) bxloc(1) ==- 1 Hk}POSP3 = bxloc(1) tictoc ==! 1 AUDF1 = metro(tictoc) vol1 = $08 GETTEMPSRETURN PROC init()BYTE i, GPRIOR = $l}026F rnum(0) = '3+$A0 lives = 3 FOR i = 0 TO 3 DO snum(i) = '0+$A0 OD FOR i = 0 TO 2 DO putnum(i) OD Zerm}o(disp,200)RETURNPROC play()BYTE i GPRIOR = $04 byloc(0) = 40 byloc(1) = 196 bxloc(0) = 60 bxloc(1) = 184 HPOSP2n} = 60 HPOSP3 = 184 harx = 122 hary = 55 SDMCTL = $2E GRACTL = 3 PMBASE = pm RSH 8 COLOR2 = $96 COLOR3 = $48 PCOLR0 =o} $18 PCOLR1 = $98 PCOLR2 = $34 PCOLR3 = $C4 strigf = 1 SETVBV(7,VB RSH 8, VB & $FF) CDTMA1 = t1 CDTMA2 = t2 CDTMV1 =p} 256 HITCLR = 0 diesw = 0 tictoc = 0 vol1 = 0 vol2 = 0 IRQEN = 0 FOR i = 0 TO 2 DO winc(i) = 0 shotx(i) = 0q} shoty(i) = 0 sincx(i) = 0 sincy(i) = 0 OD Zero(plr0,$80) Zero(plr1,$80) SetBlock(plr2,$0080,$FF) SetBlock(plr3,r}$0080,$FF)RETURN PROC MAIN()BYTE i=[0],a,b,nBYTE ARRAY grp2(4)=$D00F pkinit() DLINIT() init() pls}ay() DO i = (i + 1) & 1 a = byloc(i) RSH 1 b = byloc(i) & 1 WHILE VCOUNT <> a DO OD IF b = 1 THENt} WSYNC = 1 FI COLBK = RANDOM & $F6 FOR n = 0 TO 9 DO grp2(i) = 0 WSYNC = 1 COLBK = RANDOM & $F6 OD u}COLBK = COLOR4 IF (consol & 1) = 0 THEN DLINIT() init() play() ELSEIF lives <> 0 AND diesw <> 0 THEN playv}() FI ODRETURN;END OF HARVEY.ACT EN DLINIT() init() play() ELSEIF lives <> 0 AND diesw <> 0 THEN play+ 8fFhihiHHȱȱ`8Hh` M8E…¦ M8`LM8` ^8Пx}"Ff ee&8L8 ^8_Wń児0 &&86.ń児8y}儅充FfFf8L8 8` Fj` &`p B V8l `9 Vhhlt9HHJJJJz}hh`hhlt9 `iDiE`Hhv9`Hh`Hh`Hh` 9IHiDiE B w9HI{} B w9`ԆՄ ؠ0ȑ8)ȑ`HhL:0L:II襢 :iȑȩ-`H 9 :hL9H|} 9 H:hL9 9L{: 9L: 9L{: 9L:L: 9L:L: 9L: 9L: 9L: 9L: 9L: 9L9 9L: 9L9 9L:}}ȩ$&*i0:iȑ`v9 LFĆ>%>Ć5%/E)ԵH膇hCI4~}H120 OD OD Zero (colfield,160) FOR z=1 TO 6 DO MoveBlock (colfield+sinus(zx(z))+o,balken,14) zx}(z)==+dx(z) IF zx(z)=52 OR zx(z)=0 THEN dx(z)=-dx(z) FI OD IF zx(1)=0 THEN FOR z2=0 TO 13 DO balke}n(z2)==+$20 OD FI UNTIL ch#$FF ODRETURN )=-dx(z) FI OD IF zx(1)=0 THEN FOR z2=0 TO 13 DO balke4;**********************************************************************;* } *;* PhoeniX SoftCrew ACTION! Programme *;* most (c) by PSC Software Devel}opment Lippstadt/Warendorf *;* *;* PhoeniX Sof}tCrew #### #### #### *;* c/o Carsten Strotmann # # ## ## } *;* An der Kreutzbrede 20 #### ### ## Software Development *;* # ## ## } *;* 4410 Warendorf 1 # #### #### *;* } *;**********************************************************************; Progr}ammname : ScrollDemo; Filename : SCROLL.ACT; von : Carsten Strotmann; letzte Aenderung: 20.12.91}; Bemerkung :;INCLUDE "D2:SYSTEM.ACT"MODULE;BYTE shscrol=$70, svscrol=$71, hscrol=$D404,vscrol=$D405, } vcount=$D40BCARD POINTER dlptr=$72, adr, dlstartCARD sdlstl=$230, sdlstlsavBYTE ARRAY displayList =[$70$70$70 $72$0}0$00$72$00$00$72$00$00$72$00$00 $72$00$00$72$00$00$72$00$00$72$00$00 $72$00$00$72$00$00$72$00$00$72$00$00 $72$00$00$72$00$}00$72$00$00$72$00$00 $72$00$00$72$00$00$72$00$00$72$00$00 $72$00$00$72$00$00$72$00$00$72$00$00 $52$00$00$41$00$00]PROC S}etDL ()BYTE u sdlstlsav=sdlstl sdlstl=displaylist dlstart=displaylist+4 adr=0 dlptr=dlstart FOR u=0 TO 24 DO dl}ptr^=adr dlptr==+3 adr==+40 OD shscrol=2 svscrol=4RETURNPROC ScrollUp ()BYTE u svscrol==&$F ; Groessere Wer}te ausblenden svscrol==+1; SYNCRONISATION MIT DEM VBI, VER-; MEIDET FLACKERN! DO UNTIL vcount>120 OD; Scrollregist}er zuruecksetzen und; Bildschirmspeicher scrollen IF svscrol>=8 THEN svscrol=0 dlptr=displaylist+4 FOR u=0 TO 24 D}O dlptr^==+40 dlptr==+3 OD FI vscrol=svscrolRETURNPROC ScrollDwn ()BYTE u svscrol==&$F svscrol==-1 DO }UNTIL vcount>120 OD IF svscrol=$FF THEN svscrol=7 dlptr=displaylist+4 FOR u=0 TO 24 DO dlptr^==-40 dlptr==+3} OD FI vscrol=svscrolRETURNPROC ScrollLft ()BYTE u shscrol==&7 shscrol==-1 DO UNTIL vcount>120 OD IF shsc}rol<=0 THEN shscrol=4 dlptr=displaylist+4 FOR u=0 TO 24 DO dlptr^==+1 dlptr==+3 OD FI hscrol=shscrolRETU}RNPROC ScrollRght ()BYTE u shscrol==&7 shscrol==+1 DO UNTIL vcount>120 OD IF shscrol>=4 THEN shscrol=0 dlpt}r=displaylist+4 FOR u=0 TO 24 DO dlptr^==-1 dlptr==+3 OD FI hscrol=shscrolRETURNPROC Err (BYTE errnum) G}raphics (0) DO PrintB (errnum) ODRETURN PROC Pause (BYTE times)BYTE u FOR u=0 TO times DO DO UNTIL vcount<12} OD OD RETURNPROC Main ()BYTE sti Error=Err SetDL () DO sti=Stick(0) ! $F IF sti&2 THEN ScrollDwn ()} FI IF sti&1 THEN ScrollUp () FI IF sti&4 THEN ScrollLft () FI IF sti&8 THEN ScrollRght () FI Pause} (1) UNTIL Strig(0)=0 ODGraphics (0)RETURN THEN ScrollLft () FI IF sti&8 THEN ScrollRght () FI Pause5/