MV - CPCEMU Disk-File Disk-Info CPCD2DSK 1.2 (Track-Info  NTITEL5 BIN TITEL5 BINCRAZY612BAS#CRAZY464BAS#MOMENT1 BASMOMENT2 BASMOMENT3 BAS  BONUSPRGBAS!8TO24 ASM/$%&'()8TO24 LDR*+,8TO24 BIN-SHIFT BAS:./012345BONUSPRGINF6SHIFT BIN@SHIFT GRAABSHIFT HSCCw_ OZ]UUUUUUUUO_O]w_UO]___OUw]w3____3____OZ]UUUUUUUUUUZ<i,p_.q__|Zx/-/;_._Oog ___________oo-***_?O_ﯪ``00p____|jUUUUUOZi", wah0b wah ,,4,H,R,,,lv__BRIEF_SEHEN__]   @ endad (( ));  2 (/)   $  __BRIEF_ABSPEICHERN__"Brief abspeichern"? "NAME DES BRIEFES =->",nam (nam) ,"Soll der Brief spaeter noch einmal"E "vervollstaendigt werden (j/n)=->",=====d(n x___VORSPANN__( K ķ cpc 464 a=&b1c9 / cpc 664 a=&b7c4 !(   , " "$  7, , ,  3 "OSOFT BRILLOSOFT BRILLOSOFT BRILLOSOFT B";  7,  , "BRILLOSOFT"  ,"==>KEY<== "E ,  ( , ,    2  ( ( absabs(abs)"CREATING LETTER !" nam".BIN" #,"10 MEMORY &3FFF:LOAD"(")nam".DAT"(")":x="; endad;":delay =50:CLS:call &bb81:FOR a=&4000 TO x:PRINT CHR$(PEEK(a));:FOR c=0 TO delay:NEXT:IF INKEY(47)<>-1 THEN delay=0 ELSE delay=50" #,"20 NEXT:END"j laeng endad@ NAM".DAT", ,@, laeng abs"J" "X.DAT"#, endad "OK. " &  __WEITER__(* __VOREINSTELLUNG__ ,"" ,"" ,"" endad?"     , 6 endad endad(@ J__TASTATURABFRAGE__)T >^ () endad, (); endad endadAh () endad,  ( ); endad endad @r () endad,  ( ); endad endad>| () endad, (); endadTrack-Info  N ~4 dela2  @ endad (( ));  dela (/) dela  dela2 > ^H(R \__BRIEF LADEN__(f p"BRIEF LADEN"z "Name =->",nameI ? nameI".dat""x.dat"#, endad ("Brief geladen "  __BRIEF LOESCHEN__2"BRIEF LOESCHEN""Name =->",nameII / __VOREINSTELLUNG__ ,"" ,"" ,"" endad?"     , 6 endad endad(@ J__TASTATURABFRAGE__)T >^ () endad, (); endad endadAh () endad,  ( ); endad endad @r () endad,  ( ); endad endad>| () endad, (); endadnanameii".*"|ER,@na __CATALOG__:da"*.dat"|DI,@da""  __BASIC__ |BASI($_________________________________(.END OF C R A Z Y L E T T E R !!(8_________________________________(B^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^_________________________(B^^^^^^^^^^^^^^^^^ief geladen "  __BRIEF LOESCHEN__2"BRIEF LOESCHEN""Name =->",nameII / endad^ () endad, endad endad endad,  endad endad^ () endad, endad endad endad,  endad endadj () endad, endad endad endad, ()(); endad endadj ( ) endad, endad endad endad, ()(); endad endadj () endad,  endad endad endad,  ( );" "; endad endad (D) #C "" ^  : ()` ^ = endad,() endad endad ; ^  ^( __MENUE AUFBAUEN__) % " 1. BRIEF SEHEN"" 2.BRIEF ABSPEICHERN" " 3. WEITER" &" 4. NEUER BRIEF" 0" 5. BRIEF LADEN" :" 6. BRIEF LOESCHEN" D" 7. CRAZY464BASp(_________________________________(B^^^^^^^^^^^^^^^^^^' ================================' ==____________________________==' ==________BRILLOSOFT__________=='( ==____________________________=='2 ==_________PRESENTS___________=='< ==____________________________=='F ==_______CRAZY-WRITER_________=='P ==__________V 2.2_____________=='Z == Version fuer 464 =='c =========================== CATALOG" N" 8. BASIC""X" WAHL =->", wah0b wah ,,4,H,R,,,lv__BRIEF_SEHEN__]   @ endad (( ));  2 (/)   $  __BRIEF_ABSPEICHERN__"Brief abspeichern"? "NAME DES BRIEFES =->",nam (nam) ,"Soll der Brief spaeter noch einmal"E "vervollstaendigt werden (j/n)=->",=====d(n x___VORSPANN__( L ɱ cpc 6128 a=&b7C4 / cpc 664 a=&b7c4 !(   , " "$  7, , ,  3 "OSOFT BRILLOSOFT BRILLOSOFT BRILLOSOFT B";  7,  , "BRILLOSOFT"  ,"==>KEY<== "E ,  ( , ,    2  ( ( Track-Info  Nabsabs(abs)"CREATING LETTER !" nam".BIN" #,"10 MEMORY &3FFF:LOAD"(")nam".DAT"(")":x="; endad;":delay =50:CLS:call &bb81:FOR a=&4000 TO x:PRINT CHR$(PEEK(a));:FOR c=0 TO delay:NEXT:IF INKEY(47)<>-1 THEN delay=0 ELSE delay=50" #,"20 NEXT:END"j laeng endad@ NAM".DAT", ,@, laeng abs"J" "X.DAT"#, endad "OK. " &  __WEITER__(* ~4 dela2  @ endad (( ));  dela (/) dela  dela2 > ^H(R \__BRIEF LADEN__(f p"BRIEF LADEN"z "Name =->",nameI ? nameI".dat""x.dat"#, endad ("Brief geladen "  __BRIEF LOESCHEN__2"BRIEF LOESCHEN""Name =->",nameII /nMOMENT2 BASpoMOMENT2 $$$p CPC-Interruptkurs 1.1" Beispielprogramm fuer AFTER ( 2 , , , ,< #,,, ,F #,,(,,P #, #,Z #, #,d   ,n">> TIPP-TEST <<"x  {((,"_")[ "Du hast 10 Sekunden Zeit,um so viele Buchstaben wie moeglich nachzutippen!!!" ( );"Viel Glueck!!!"" wart anameii".*"|ER,@na __CATALOG__:da"*.dat"|DI,@da""  __BASIC__ |BASI($_________________________________(.END OF C R A Z Y L E T T E R !!(8_________________________________(B^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^_________________________(B^^^^^^^^^^^^^^^^^^ef geladen "  __BRIEF LOESCHEN__2"BRIEF LOESCHEN""Name =->",nameII /n  wart ## , au( (E)A)# #,,#,au;$ei(C) ei"" ( eiau  #&#, ,#,"Falsche Eingabe!!!"" wart  wart#   ###,+"#," Du hast";#,#, ;#,$,#,"Buchstaben nachgetippt!!!"6hast 10 Sekunden Zeit,um so viele Buchstaben wie moeglich nachzutippen!!!" ( );"Viel Glueck!!!"" wart MOMENT3 BASp"  ( ), ( ), CPC-Interruptkurs 1.1/ Beispielprogramm fuer EVERY/DI/EI/REMAIN" ,  ,  , ,((  ,,,,(,8,,, 2 ,,8,~,,~,,~,$ <  F r rP , hZ () , |(( r),)   r, ( ) r r rcd () |(( r) ,)  MOMENT1 BASpd,,,,Pp Basicgrundlagen ,d,, (  , < 2 (E) 2!< zah zah zah;F ,d,,,,Ppd,,,,PpTrack-Info  N r, ( ) r( r r+n , |(( r) ,() $x  r, ()  Z Unterprogramm * e e r, r ( )  , ( ) 6 ew (E() , () e  ()= t (E ) ,d,d,,,,  h F ( r) t,( r)  ( ), ( ),<  h  ( r) t,( r)824SETUPBASp$$Zhilf(,)"Ole, ole, ole, ole, Dieter Schroeppke, ole* *********************************** * ** * 8 TO 24 **( * **2 * von **< * **F * Claus Vielhauer/Lutz Voigt **P * **Z * *)d"  ( ), ( ),"  ( ), ( ), Z Unterprogramm * e e r, r ( )  , ( ) 6 ew (E() , () e  ()= t (E ) ,d,d,,,,  h F ( r) t,( r)  ( ), ( ),<  h  ( r) t,( r)* *)n* August 1989 *)x* *,**********************************     tex() [tex()"(1) Konvertierung 4-fache Dichte (8-Nadel) -> 4-fache Dichte (24-Nadel)"[tex()"(2) Konvertierung 2-fache Dichte (8-Nadel) -> 4-fache Dichte (24-Nadel)"[tex()"(3) Konvertierung 2-fache Dichte (8-Nadel) -> 2-fache Dichte (24-Nadel)"[tex()"(4) Konvertierung 1-fache Dichte (8-Nadel) -> 4-fache Dichte (24-Nadel)"[tex()"(5) Konvertierung 1-fache Dichte (8-Nadel) -> 2-fache Dichte (24-Nadel)"[tex()"(6) Konvertierung 1-fache Dichte (8-Nadel) -> 1-fache Dichte (24-Nadel)" hilf(,)! Hilfe-Text eintragen"" (,) ty"6128"!, (,) ty"664"!6 (,) ty"464"@ J ","8 T O 24"T !, "Version 1.2"^ %, "by"h ,"ClauBONUSPRGBASp00, ()" ()"!Bonusprg.prg" "PRESE   , , ,, ,r,  , ,< , ,< 2, ,  ,  , ,  ,  ,< (, :,< , , ,( (, ,  , , ,( ,,, ,  , , , ,( , ,  , ,<  , ,< , ,  ,  , , , ,  , s Vielhauer"!r ,"& Lutz Voigt 1989"%| ,"Terminal: CPC "tyc ,@ , , , , , , ,E , , , ,"!8to24.bin",  C"" Menue  Rahmen6 ,"I N S T A L L A T I O N S - M E N U E", ,"fuer 24-Nadel-Drucker-Treiber" ,  tex() ,  tex() , tex() , tex() , tex() , tex(),2  ,  ,F ,   , ,2 , ,2 , , ,   ,F (, P, ,  ,  (, ,< , , ,< %, "PRESENTS"F ,"REIGN"P  ( Z   d |( , )"n ( ),2 , x  ," " ,  , ()" ()"!Bonusprg.prg" "PRESENTS""1" "3"   Track-Info  N10 ';********************************** 20 ';* * 30 ';* Programm: 8to24.bin * 40 ';* : August 1989 * 50 ';* * 60 ';* Drucker-Treiber fuer * 70 ';* 24-Nadel-Drucker * 80 ';* * 90 ';********************************** 100 ' 110 ';* Initialisierungs- und 120 ';* Installationsteil, 130 ';* Aufruf vom BASIC: 140 ';* CALL LadeAdresse,LadeAdresse 150 ' 160 1080 'ld (ix+0),a 1090 'jr ende1 1100 ' 1110 'ausgab call prchr ;unkonvertierte Ausgabe 1120 'jr nc,ausgab 1130 'jr ende1 1140 ' 1150 'zsteu jr steuer 1160 ' 1170 ';Beginn Konvert.-Routine 1180 'convrt ld b,(ix+4) ;Anzahl Mehrf.-Druck 1190 'prloop pop af 1200 'push af 1210 'ld e,b 1220 'ld d,a 1230 'xor a 1240 'rlc d 1250 'jr nc,rot2 1260 'or &e0 1270 'rot2 rlc d 1280 'jr nc,rot3 1290 'or &1c 1300 'rot3 rlc d 1310 'push af 1320 'jr nc,mc1 1330 'or 3 1340 'mc1 call prchr 1350 'j'org &9000 170 ' 180 'or a ;Parameter uebergeben? 190 'ret z ;nein -> zurueck 200 'ld l,(ix+0) 210 'ld h,(ix+1) 220 'push hl 230 'pop ix ;Lade-Adr. in ix 240 'ld bc,&1c9 ;Offset zu prchr 250 'push hl 260 'add hl,bc 270 'push hl 280 'pop bc ;bc=abs. Adresse v. prchr 290 'pop hl 300 'ld de,&5c ;Offs. zum HP-Beginn 310 'add hl,de 320 'push hl 330 ' ;alle CALL prchr eintragen 340 'ld de,&4f ;Offset z. Ofsset-Tab. 350 'add ix,de ;ix=Pointer a. Tabelle 360 'ld d,0 ;High-Byte d. Offsets=0 370r nc,mc1 1360 'pop af 1370 'ld a,0 1380 'jr nc,rot4 1390 'or &80 1400 'rot4 rlc d 1410 'jr nc,rot5 1420 'or &70 1430 'rot5 rlc d 1440 'jr nc,rot6 1450 'or &e 1460 'rot6 rlc d 1470 'push af 1480 'jr nc,mc2 1490 'or 1 1500 'mc2 call prchr 1510 'jr nc,mc2 1520 'pop af 1530 'ld a,0 1540 'jr nc,rot7 1550 'or &c0 1560 'rot7 rlc d 1570 'jr nc,rot8 1580 'or &38 1590 'rot8 rlc d 1600 'jr nc,mc3 1610 'or 7 1620 'mc3 call prchr 1630 'jr nc,mc3 1640 'ld b,e 1650 'djnz prloop ;Schleife f. M 'loop ld a,(ix) 380 'or a 390 'jr z,finish ;Alles eingetragen? 400 'ld e,a 410 'add hl,de 420 'ld (hl),c 430 'inc hl 440 'ld (hl),b 450 'inc ix 460 'jr loop 470 'finish ld de,&16 ;Offs. zu RST8 (PRCHR) 480 'ld a,(&bd32) ;RST-Adr.in Rout. kop. 490 'add hl,de 500 'ld (hl),a 510 'inc hl 520 'ld a,(&bd33) 530 'ld (hl),a 540 'pop bc 550 'ld hl,&bd31 ;Vektor MC SEND PR. 560 'ld (hl),195 ;OPCODE JP nn 570 ' 580 'inc hl 590 'ld (hl),c 600 'inc hl 610 'ld (hl),b 620 'ld hl,&bdf1 ;Vektoehrf.-Druck 1660 'ld l,(ix+2) 1670 'ld h,(ix+3) 1680 'dec hl ;dekr. d. Grafik-Zaehlers 1690 'ld (ix+2),l 1700 'ld (ix+3),h 1710 'ld a,h 1720 'or l 1730 'jr nz,ende1 1740 'ld (ix+1),a ;keine weiteren Grafik-Daten 1750 ';Ende Konvert.-Routine 1760 ' 1770 'ende1 jr ende2 1780 ' 1790 'steuer cp 4 ;weitere Untersuchung 1800 'jr nz,drei ;einer ESC-Sequenz 1810 'pop af 1820 'push af 1830 'cp "L" 1840 'jr z,dicht2 1850 'cp "Y" 1860 'jr z,dicht2 1870 'cp "K" 1880 'jr z,dicht1 1890 'cp "Z" 19r MC WAIT PR. 630 'ld (hl),195 ;OPCODE JP nn 640 'inc hl 650 'ld (hl),c 660 'inc hl 670 'ld (hl),b 680 'ret 690 ' 700 ' ;Offset-Tabelle: 710 'db &22,&b,&23,&1e,&17,&60,&5,&c,&1b,&6,&35,&5,&0 720 ' 730 ';* Hauptprogramm Version p 740 ' 750 ';*VARIABLE: 760 ';*(ix+0) : GMODE (ESC-Seq. liegt an) 770 ';*(ix+1) : GAKTIV (Flag-Grafik akt.) 780 ';*(ix+2) : ZAEHL1 (LB des Zaehlers) 790 ';*(ix+3) : ZAEHL2 (HB des Zaehlers) 800 ';*(ix+4) : MULTIP (Mehrfachdruck) 810 ' 820 ' 830 'push ix ;00 'jr z,dicht4 1910 'cp "*" 1920 'jr nz,nograf ;kein Grafik-Druck 1930 'ld a,(ix+0) 1940 'dec a 1950 'ld (ix+0),a 1960 'jr ende2 1970 'dicht4 ld d,40 1980 'ld (ix+4),1 1990 'jr ginit 2000 'dicht2 ld d,33 2010 'ld (ix+4),1 2020 'jr ginit 2030 'dicht1 ld d,32 2040 'ld (ix+4),1 2050 'ginit ld a,(ix+0) 2060 'dec a 2070 'dec a 2080 'ld (ix+0),a 2090 'ld a,"*" 2100 'pr2 call prchr 2110 'jr nc,pr2 2120 'ld a,d 2130 'pr3 call prchr 2140 'jr nc,pr3 2150 'jr ende 2160 'nograf xor a 2170 alle verwendeten Reg. retten 840 'push hl 850 'push de 860 'push bc 870 'push af 880 '; 890 'ld ix,(&bdf2) ;Adresse d. Prg-Beginns 900 'ld de,&175 ;Offset Prg. Anfang-Ende 910 'add ix,de ;Adresse d. 1. Var. in ix 920 ' 930 'ld a,(ix+0) ;lag schon ESC-Seq. an? 940 'or a 950 'jr nz,zsteu 960 ' 970 'ld a,(ix+1) ;noch Grafik-Daten? 980 'or a 990 'jr nz,convrt 1000 ' 1010 'pop af 1020 'push af 1030 'cp 27 ;liegt ESC an? 1040 'jr nz,ausgab 1050 'pr1 call prchr 1060 'jr nc,pr1 1070 'ld a,4 Track-Info  N         'ld (ix+0),a 2180 'pop af 2190 'push af 2200 'pr4 call prchr 2210 'jr nc,pr4 2220 'ende2 jr ende 2230 'drei cp 3 2240 'jr nz,zwei 2250 'inc a 2260 'ld (ix+0),a 2270 'pop af 2280 'push af 2290 'or a 2300 'jr z,dicht1 2310 'cp 3 2320 'jr c,dicht2 2330 'jr z,dicht4 2340 'ld a,"*" 2350 'pr7 call prchr 2360 'jr nc,pr7 2370 'pop af 2380 'push af 2390 'pr8 call prchr 2400 'jr nc,pr8 2410 'xor a 2420 'ld (ix+0),a 2430 'jr ende 2440 'zwei cp 2 2450 'jr nz,gron 2460 'ld a,(ix+0) 2470 '586 57,AF,CB,02,30,02,F6,E0@ CB,02,30,02,F6,1C,CB,02J F5,30,02,F6,03,CD,C9,91T 30,FB,F1,3E,00,30,02,F6^ 80,CB,02,30,02,F6,70,CBh 02,30,02,F6,0E,CB,02,F5r 30,02,F6,01,CD,C9,91,30| FB,F1,3E,00,30,02,F6,C0 CB,02,30,02,F6,38,CB,02 30,02,F6,07,CD,C9,91,30 FB,43,10,A9,DD,6E,02,DD 66,03,2B,DD,75,02,DD,74 03,7C,B5,20,03,DD,77,01 18,5B,FE,04,20,59,F1,F5 FE,4C,28,21,FE,59,28,1D FE,4B,28,21,FE,5A,28,0D FE,2A,20,36,DD,7E,00,3Ddec a 2480 'ld (ix+0),a 2490 'pop af 2500 'push af 2510 'ld (ix+2),a 2520 'jr ende 2530 ' 2540 'gron xor a ;Grafik aktiv schalten 2550 'ld (ix+0),a 2560 'pop af 2570 'push af 2580 'ld (ix+3),a 2590 'ld hl,0 2600 'ld e,(ix+2) 2610 'ld d,(ix+3) 2620 'ld b,(ix+4) 2630 'adloop add hl,de 2640 'djnz adloop 2650 'ld a,l 2660 'pr5 call prchr 2670 'jr nc,pr5 2680 'ld a,h 2690 'pr6 call prchr 2700 'jr nc,pr6 2710 'ld a,1 2720 'ld (ix+1),a 2730 ' 2740 'ende pop af ;alle Reg. restaurieren 2 DD,77,00,18,38,16,28,DD 36,04,01,18,0E,16,21,DD 36,04,01,18,06,16,20,DD 36,04,01,DD,7E,00,3D,3D DD,77,00,3E,2A,CD,C9,91 30,FB,7A,CD,C9,91,30,FB 18,6F,AF,DD,77,00,F1,F5& CD,C9,91,30,FB,18,62,FE0 03,20,23,3C,DD,77,00,F1: F5,B7,28,C9,FE,03,38,BDD 28,B3,3E,2A,CD,C9,91,30N FB,F1,F5,CD,C9,91,30,FBX AF,DD,77,00,18,3B,FE,02b 20,0E,DD,7E,00,3D,DD,77l 00,F1,F5,DD,77,02,18,29v AF,DD,77,00,F1,F5,DD,77 03,21,00,00,DD,5E,02,DD750 'pop bc 2760 'pop de 2770 'pop hl 2780 'pop ix 2790 'scf 2800 'ret 2810 ' 2820 ';Drucker-Ausgabe-UP 2830 'prchr call &bd2e ;MC BUSY PRINTER 2840 'jr c,prchr 2850 'rst 8 ;MC SEND PRINTER 2860 'db 0,0 ;<- wird von Init. eingetragen 2870 ' 2880 'gmode db 0 2890 'gaktiv db 0 2900 'zaehl1 db 0 2910 'zaehl2 db 0 2920 'multip db 1 rogramm: 8to24.bin * 40 ';,h 2690 'pr6 call prchr 2700 'jr nc,pr6 2710 'ld a,1 2720 'ld (ix+1),a 2730 ' 2740 'ende pop af ;alle Reg. restaurieren 2 56,03,DD,46,04,19,10,FD 7D,CD,C9,91,30,FB,7C,CD C9,91,30,FB,3E,01,DD,77 01,F1,C1,D1,E1,DD,E1,37 C9,CD,2E,BD,38,FB,CF,00 00,00,00,00,00,01/bCD,2E,BD,38,FB,CF,00 00,00,00,00,00,013C,DD,77,00,F1: F5,B7,28,C9,FE,03,38,BDD 28,B3,3E,2A,CD,C9,91,30N FB,F1,F5,CD,C9,91,30,FBX AF,DD,77,00,18,3B,FE,02b 20,0E,DD,7E,00,3D,DD,77l 00,F1,F5,DD,77,02,18,29v AF,DD,77,00,F1,F5,DD,77 03,21,00,00,DD,5E,02,DD8TO24 LDRp//bCD,2E,BD,38,FB,CF,00 00,00,00,00,00,01 ************************ * * * BASIC-LADER fuer *!(* * !2* 8TO24.BIN * "<* * "F************************ P Z 6d ad Ց  ad,("&")n"8to24.bin", ,,x B7,C8,DD,6E,00,DD,66,01 E5,DD,E1,01,C9,01,E5,09 E5,C1,E1,11,5C,00,19,E5 11,4F,00,DD,19,16,00,DD 7E,00,B7,28,09,5F,19,71 23,70,DD,23,18,F1,11,16 00,3A,32,BD,19,77,23,3A 33,BD,77,C1,21,31,BD,36 C3,23,71,23,70,21,F1,BD 36,C3,23,71,23,70,C9,22 0B,23,1E,17,60,05,0C,1B 06,35,05,00,DD,E5,E5,D5 C5,F5,DD,2A,F2,BD,11,75 01,DD,19,DD,7E,00,B7,20 1F,DD,7E,01,B7,20,1B,F1 F5,FE,1B,20,0C,CD,C9,91 30,FB,3E,04,DD,77,00,18" 77,CD,C9,91,30,FB,18,70, 18,70,DD,46,04,F1,F5,Track-Info  N         8TO24 BINw; ~=ww)ww!^VF}ɑ0|ɑ0nf \O~( _q#p#:2w#:3w!16#q#p!6#q#p" #` 5*u~ ~  ɑ0>wwɑ0ppFXW000ɑ0>00p00ɑ0>0080ɑ0Cnf+ut| w[ YL(!Y(K(!Z( * 6~=w8(6!6 6~==w>*ɑ0zɑ0owɑ0b #*ɑ0ɑ0PRIN,. P,@1   d  ,   Hi-Scores laden1"Press a key.."()|PRIN,,@+"to load"()|PRIN,,@ " ,"!shift.hsc"6    @ #, hs( , )J #,hs( , )T ,  ^h Hi-Scores speichernr|1"Press a key.."()|PRIN,,@+"to save"()|PRIN,,@  "!shift.hsc"w; ~=ww)ww!^VF}ɑ0|ɑ0>w7.8w)ww!^VF}ɑ0|ɑ0nf \O~( _q#p#:2w#:3w!16#q#p!6#q#p" #` 5*u~ ~  ɑ0>wwɑ0ppFXW000ɑ0>00p00ɑ0>0080ɑ0Cnf+ut| w[ YL(!Y(K(!Z( * 6~=w8(6!6 6~==w>*ɑ0zɑ0owɑ0b #*ɑ0ɑ0     #, hs( , ) #,hs( , ) ,   Eintragen    , sc hs( g, )   k   hs( g, ) hs( g, )hs( g, )hs( g, )&00"Please enter"()|PRIN,,@1:"your name for"()|PRIN,,@0D"the TOP FIVE"()|PRIN,0,@0N" [DEL] SHIFT BASp    SHIFT.PRG by A.Lange/      , / 0,0,1,0,2,1,14,2,26,26,13,13,25,25,15,15 $ a-z .  8 HB () ~ L ,*V"!shift.bin",  RSX-Erweiterung"`"!shift.gra",  Sprites'j   RSX einbindent ,,,~ hs(,),hs(,)d  [ENT]"()|PRIN,,@+X"......."()|PRIN,,@ b""l Namen eingebenvC "" v ()   ENTER   DEL  v () v;()|PRIN,,@ v[ ()   "......."()|PRIN,,@"" vu(,())"."()|PRIN,,@ v< hs( g, ) sc   hs( , )( )2hs( , )"ADLsoft" ,   Menue |FIL     sc(()+ sc scP ()|PRIN, sc,@F "SHIFT"," ","written by ADL-SOFT","from July","till August '89" ,,,    . ()|PRIN, P,@` "Menue:"," ","(1) SHIFT","(2) FIND","(3) XOR","(4) HI-SCORES","(5) LOAD HI","(hs( g, )   Spiel  sc leve g D   "SHIFT"   "FIND"  "XOR"*()4 #,,,, #|FIL > ʡ,%H|PRIN,((()),@ R ʡ,)\"SCORE"()|PRIN,,@%f"HI"|PRIN,4,@)p"00000"()|PRIN,P,@Iz{((( hs( g,))),0)(( hs( g,)),)()|PRIN,,@("TIME"()6) SAVE HI"(C "" (@2 ()   ,,,,,, (&< ,,,P,,h FP Hi-ScoretabelleZd  nx  "SHIFT"  "FIND"  "XOR"()|PRIN,,@,"TOP FIVE"()|PRIN,,@   ""m{((( hs( , ))),0)(( hs( , )),)" "hs( , )()|Track-Info  N         |PRIN,,@ Init fuer neues Level leve leve f() fla  F'|FIL ,H ,,  ,,  ,F ,,  ,, zei3    , Felder loeschen g t  "  Feld 1 mit Steinen fuellen $  *. (E>) ( ) . 8  ,pB g , @,  ? @ ,( )  , Bei Shift 2.Feld ins Feld getroffenN t t sc sc leve zei &  / zei zei@ zei zei   XOR Feld invertieren,     ? f f   o  * a o ( a)'  a, f f'  a, f f3 |PUTSP,4  o,@( a)  o, 8 sc sc( f f) scstall. L  V `  Istall fuer XORj t  |FELD%~ (E) (E) q   o    o,( o)  o, , f |FELD& |XO g , @,; f@() Anzahl der Steine auf dem Spielfeld )  Fuer FIND zufaelliges Feld suchen  g t (E) t (E) t t o t t|PUT sc> f sc sc leve zei2 &    &    ScoreanzeigeI& sc ( sc){((( sc)),0)(( sc),)()0 |PRIN,P,@:  SHIFT - Druck auf SPACED |XO , @, N |FELD X |FELDRb f f f() f f sc sc( f f) & ?l f@ sc sc leve zei &  v a a  Game over f()/ " SP,\( t)( o t),@( o)  o, |PUTSP,, g  |FELD &  Zeitzaehler Install & Schleife # g 2 leve# g  leve#( g 2 leve-2  , P  , P <    F  ZeitzaehlerHP zei zei zei,H ,H, zei,F ,F5Z zei fla f()  fla#d "()|PRIN,2,@/ " GAME OVER "()|PRIN,,@/ " "()|PRIN,,@      p, @, N |FELD X |FELDRb f f f() f f sc sc( f f) & ?l f@ sc sc leve zei &  v a a  Game over f()/ " zei ,P,,,n x   Cursorsteuerung h al4   alt@( ) |PUTSP, al,    ("")B ()  (/) (B) fla   |PUTSP, al, alt"  6  Feuer*  ( )  Hoch,  ( )  Runter+  ( )  Links,  ( )  Rechts (B) "punktes abgeschlossen ist, legt SETUP.BAS ein 470 Byte langes Maschinen-"[Nhilf(, )"programm auf Diskette ab, welches mit einem beliebigen Namen versehen"!Xhilf(, )"werden kann.bdritte Seite.lhilf(,)"4. Einbinden des Treibers"[vhilf(,)"Zum 24-Nadel-Druck muss sich das auf diese Weise installierte Treiber-"^hilf(,)"programm gleichzeitig mit der anzupassenden HC-Routine im Arbeitsspeicher"dhilf(,)"befinden. Hierzu ist ein freier Speicherberefla= (/) g D  Zeile/Spalte verschieben& fla   Zeit abgelaufen    )"  Feuerauswert der einzelnen Spiele, 6 g J , , @  SHIFT Zeile verschieben<J   |ULIN, al , <T   |DLIN, al ,8 =^   |LLIN, al , =h   |RLIN, al , r 4|  FIND Feststellen ob gesuchteTrack-Info  N         BONUSPRGINFp]]znSx"Sie koennen das Bonusprogramm mit RUN"(")"0 "Informationen zum Bonusprogramm/REIGN9"Einen Moment, lade Beschreibung."   ( 2 "!bonusprg.txt < @ F#,#P   3Z  "Taste druecken"  dnSx"Sie koennen das Bonusprogramm mit RUN"(")" Bonusprg.bas"(")" starten.""hat das Spiel etwas en (JS nach unten) kann. Ausserdem besteht die Moeglichkeit, Land von Privatbesitzern zu kaufen (JS nach links) bzw. ihnen welches zu verkaufen (JS nach rechts). Hat der Spieler diese Taetigkeiten beendet, muss der Feuerknopf gedrueckt werden. Nun hat man zu entscheiden, wieviel Korn man seinem Volk gibt. Man kann es entweder saettigen, durchfuettern oder auBeispiel: vorher nachher"Jhilf(, )" . ."Khilf(, )" . ." Thilf(,)" MEMORY xxxx MEMORY xxxx-470"b hilf(,)" CALL xxxx LOAD 'nnnnnnnn.bin',xxxx-470"[hilf(,)" . CALL xxxx-470,xxxx-470"O hilf(,)" ch verhungern lassen. Zum Schluss noch einige Tips: - Beim Landverkaufen sollte man aufpassen. Verkauft man zuviel, verliert man auch die Muehlen und Maerkte, die man vorher auf das Land gebaut hat. Es ist naemlich nur eine Muehle und ein Markt auf zehn Quadratmeilen (qM) erlaubt. - Die Erlangung eines hoeheren Adelstitel ist an bestimmte BedingungeJAN 118 ---------- 0 ---------- 0 ---------- 0 ---------- 0 ---------- 0 ---------- 0 ---------- 0 ---------- 0 ---------- 0 -- 0 ---------- 0 ---------- 0 ---------- 0 ---------- 0 ---------- 0 --------n geknuepft, die vor allem die Anzahl der Muehlen und Maerkte, die der Kasernen, die Staerke der Armee, die Groesse des Uebungsplatzes, des Palastes und der Kathedrale betreffen. - Sollte das Programm unterbrochen werden, was durchaus mal vorkommen kann, gibt man am besten "GOTO 590" ein. Und nun wuenschen wir Ihnen viel Spass ines der sieben Laender (Baden, Sachsen, Hessen, Wuerttenberg, Bayern, Thueringen und Boehmen). Dann beginnt das eigentlich Spiel. Der Spieler sieht zunaechst seinen Titel, seinen Namen, den Namen des von ihm beherrschten Landes und das Jahr, in dem man sich befindet. Im unteren Window kann man in der linken Haelfte sehen, wie gut die Ernte war und wie voll die Kornspeicher sind. Rechts finde  rinter drivers,"driver" here if needed <|erke der Armee, die Groesse des Uebungsplatzes, des Palastes und der Kathedrale betreffen. - Sollte das Programm unterbrochen werden, was durchaus mal vorkommen kann, gibt man am besten "GOTO 590" ein. Und nun wuenschen wir Ihnen viel Spass t man einige Informationen ueber sein Land, sein Reichtum und den Korn- bzw. den Landpreis des derzeitigen Jahres. Nun sollte der Spiele schauen, dass er seine Kornspeicher vollbekommt. In den meisten Faellen ist es notwendig, Korn zu kaufen (Joystick nach oben). Bei einer geringen Bevoelkerung und einer guten Ernte ist es moeglich, dass der Spieler Korn verkaufTrack-Info  N         NT]"()|PRIN,,@+X"......."()|PRIN,,@ b""l Namen eingebenvC "" v ()   ENTER   DEL  v () v;()|PRIN,,@ v[ ()   "......."()|PRIN,,@"" vu(,())"."()|PRIN,,@ v< hs( g, ) sc Spieler diese Taetigkeiten beendet, muss der Feuerknopf gedrueckt werden. Nun hat man zu entscheiden, wieviel Korn man seinem Volk gibt. Man kann es entweder saettigen, durchfuettern oder auch verhungern lassen. Zum Schluss noch einige Tips: - Beim Landverkaufen sollte man aufpassen. Verkauft man zuviel, verliert man -!-------!-------!-------!----R Bei REIGN ist es Aufgabe der Spieler, Kaiser des Deutschen Reiches zu werden. Dazu ist eine leistungsstarke Wirtschaft (bestehend aus Muehlen und Maerkten), eine schlagkraeftige Armee und etwas Kleingeld noetig. Zuerst muss die Anzahl der Mitspieler angegeben werden, anschliessend deren auch die Muehlen und Maerkte, die man vorher auf das Land gebaut hat. Es ist naemlich nur eine Muehle und ein Markt auf zehn Quadratmeilen (qM) erlaubt. - Die Erlangung eines hoeheren Adelstitel ist an bestimmte Bedingungen geknuepft, die vor allem die Anzahl der Muehlen und Maerkte, die der Kasernen, die Staerke Namen und deren Geschlecht. Damit ist nun jeder Spieler Herrscher ueber eines der sieben Laender (Baden, Sachsen, Hessen, Wuerttenberg, Bayern, Thueringen und Boehmen). Dann beginnt das eigentlich Spiel. Der Spieler sieht zunaechst seinen Titel, seinen Namen, den Namen des von ihm beherrschten Landes und das Jahr, in dem man sich befindet. I der Armee, die Groesse des Uebungsplatzes, des Palastes und der Kathedrale betreffen. - Sollte das Programm unterbrochen werden, was durchaus mal vorkommen kann, gibt man am besten "GOTO 590" ein. Und nun wuenschen wir Ihnen viel Spass. Hinweis: Das Hauptprogramm wurde als ASCII-Programm abgespeichert, damit beim CPC 464 in Verbindung mit dem m unteren Window kann man in der linken Haelfte sehen, wie gut die Ernte war und wie voll die Kornspeicher sind. Rechts findet man einige Informationen ueber sein Land, sein Reichtum und den Korn- bzw. den Landpreis des derzeitigen Jahres. Nun sollte der Spiele schauen, dass er seine Kornspeicher vollbekommt. In den meisten Faellen ist Emulator keine Clear-Input-Probleme auftauchen. Doch bei Kassettenlaufwerken kann es nachdem laden passieren, das ein "Direct Command Found" auftritt. Ist dies der Fall, dann brauchen Sie das Programm einfach nur mit RUN zu starten. ist es notwendig, Korn zu kaufen (Joystick nach oben). Bei einer geringen Bevoelkerung und einer guten Ernte ist es moeglich, dass der Spieler Korn verkaufen (JS nach unten) kann. Ausserdem besteht die Moeglichkeit, Land von Privatbesitzern zu kaufen (JS nach links) bzw. ihnen welches zu verkaufen (JS nach rechts). Hat der Track-Info  N Bei REIGN ist es Aufgabe der Spieler, Kaiser des Deutschen Reiches zu werden. Dazu ist eine leistungsstarke Wirtschaft (bestehend aus Muehlen und Maerkten), eine schlagkraeftige Armee und etwas Kleingeld noetig. Zuerst muss die Anzahl der Mitspieler angegeben werden, anschliessend deren Namen und deren Geschlecht????????????????????????????????????????????????BBJJJ??J??B??B??????B??B??????????????????????. Damit ist nun jeder Spieler Herrscher ueber eines der sieben Laender (Baden, Sachsen, Hessen, Wuerttenberg, Bayern, Thueringen und Boehmen). Dann beginnt das eigentlich Spiel. Der Spieler sieht zunaechst seinen Titel, seinen Namen, den Namen des von ihm beherrschten Landes und das Jahr, in dem man sich befindet. Im unteren Window kann man i????????????33337???7???7???7???7???7???7???7?????7?????7?????7?????7?????7?????7?????7?????????????????????????????????????33333333333b333b33333337j37j37j??37j??3b??3b??3??3??b??b??SHIFT BIN]SHIFT $$$!Ѽ>23dϠfÍߡIFILPUTSPLLINRLINULINDLINPRINFELDFELDXO! > ҊP =v OG~w# ҼP ^VnfÛ^Vkb#nf@`͛####^Vkb+^VkbN########~]T########qnfշ@Z`͛ ^VkbN++++++++~]T+++????????????????????????????????????????*******????*????*@*@*@*@????@????@@@@@@@????????337j37j37j??37j??3b??3b??3??3??b??b??+++++q=nf#^#Vnf!kͥsSsw# º# ӡP ####Ý!4@`͛#### !\@@55͛#### !!@@pdw4# Y<<000 ҊP =v OG~w# ҼP ^VnfÛ^Vkb#nf@`͛####^Vkb+^VkbN########~]T########qnfշ@Z`͛ ^VkbN++++++++~]T+++ 250 ADLsoft 200 ADLsoft 150 ADLsoft 100 ADLsoft 50 ADLsoft 250 ADLsoft 200 ADLsoft 150 ADLsoft 100 ADLsoft 50 ADLsoft 250 ADLsoft 200 ADLsoft 150 ADLsoft 100 ADLsoft 50 ADLsoft sc scSHIFT GRAXSHIFT $$$08$4008$408$004$084008$4008$408$004$084008$4008$408$004$084008$??40??08$??40??8$0??04??$08??40??????????????????????????????????Track-Info  N1KB 3 pNKB $$$pT  ,  , , ,      ,,,   ,,,   , , , , , , ,  , , , , , , , ,  255,255,94,94,94,44,44,60,0,0,60,195,129,102,126,60,82,68,145,37,164,130,10,40,0,0,0,0,16,28,28,56,0,0,48,30,24,30,126,56,24,48,241,62,25,223,254,120M 0,0,0,0,8,62,12,24,0,16,24,12,111KB 1 pJJzeil( )2h ();"Bitte Warten!"; ASCII-Codierer zeil() ("ASCII-CODIERER"!2"Codierungsfaktor ? ", c,<"[C]odieren oder [D]ecodieren ? ",-F "c" c c  c c PLadenZd"Dateiname: ", n""x @  #,zeil( )Codieren/Decodieren T  ! (zeil0,60,12,24,120,30,24,205,238,124,12,24D( (), ()   p s ,  {(,);2  sZ   (E) ( ( )) ( ( )) ( ) ( ) ( )  ( ) ( ) (E)  ( ) ( )< ( ) d  , ( )  ( ( ))  p , () p," "WFC () p  ("z" )("x" ( )) "  (zeil( ))"(zeil( ), ,)0(zeil( ), ,)(() c) Speichern  T- ();"Fertig zum Abspeichern ?" |ER, """),  #,zeil( )6@JText anzeigen"T ();"Ihr Text:";()'^   zeil( )2h ();"Bitte Warten!";()r( )2h ();"Bitte Warten!"; )P " "  , ()     ,  ()    , " " s s ( ) ( ) ( ) ,    s   Z 2%d E ,"GAME OVER" dKB $$$pNKB $$$p  p , () p," "WFC () p  ("z" )("x" 1KB 2 p44 ,  ,  ,   & ,  , , , "Stufe :", ("Stufe2:", q2  <"Groesse :", radiu#F radiu radiu P"Groesse2:", radiusZ"Groesse3:", radiusdn  ^ 0x MOVE 320+radius*COS(a),200+radius*SIN(a)  h q"   f (@ radiu( )) radius( ),( radiu( )) radius( ),  @,b (@ radiu( )) radius( ),( radiu( )) radius( ); @( radius)( ),( radius)( )  C " " %    ,, ,$ ,  ,  ,   4 ,  ,  ,   Track-Info  N1KB 4 pVV()()"p"()()"j"(H)  #,s N " Eingeben << 1 >>"" Ausdrucken << 2 >>"" Abspeichern << 3 >>"" Laden << 4 >>" @ ,"Bitte waehlen Sie !!"anC an""   an"1" F( an"2" x2 an"3" Z< an"4" dWF #, ,.,, #,  #, # #,,#,"Max. 6 Zeilen mit a' 25 Zeichen"QP   #,,(2 (J) < (K) F - -P U U Z d ,,,,,,  d (A`ez (Z )) ( (d ) {) , ,     n  ,,, ,,,     n    , , ()(); , , , ,,  , () 0,, ,     )#,"Zeile "; ; #,( )   VZ  , "Dateinamen ";da da   #,( )  Vd  , "Dateinamen ";da da   #,( )  Nxad"DMV-Daten & Medien * Verlags GmbH * Postf. 250 * 3440 Eschwege":#,()"S"()#,()ad#,()(@)i#,()"x"()()"p"()()"j"(H)  #,();( )  )()"j"(H)  #,"";  () ( le)  r,,;  () ( le)  |,&,;  () ( le)  ,0,;  () ( le)  ,:,R   () ( le)  ,D, fb( ) 4" an  zu()"w" zu()"w" ()   , ()"SPIELER 1"() ,"SPIELER 2" ,"SPIELER 1" ,CHANGE BASp;;9,00 z 00,00----- 0 ---------- 0 ---------- 0  ************************** CHANGE.BAS **** -Hauptprogramm- **(** 1988 by **2** Martin Schmid **<************************ F  P+Z** Farbe der Ueberschrift aendern **dJn ( ) #, #,,#,"CHANGE - 1988 by M.Schmid"x!** Zeit um 1 verringern **y   ()"SPIELER 2"(), an  zu()"w" zu()"w"    ()   C"" 2, 16 an zu( )"w"  E@ end zu()"w" zu()"w" () 2J  <(< ( le) ) T!^** Steuerung im Dreieck **hIr x( ) y( ) x( ) x( )   I| x( )# y( ) x( ) x( )  zei( ) zei( ) an ,  an  ,  an  , "###"; zei( ) zei( ) () an       an   >    an  B >  ** Joystickabfrage **b end ()   C ( ) xk x( ) yk y( ). ()"P"     v y( ) x( )# y( ) x( ) y( ) y( ) y( )   7 y( ) y( ) y( )  S , , xk( an)(@ ), yk#,();S   () y( ) ( x( ) ) _   () x x( ) y y( )   c , , x( )( an)(@ ), y( 1KB 6 p~~G(); , , , ,,  ,,,,,,, ,,,,,,, ,?,,,,,?, ,,,,,,, ,D,,L,,,,, ,,,    , , , ,  (E) A "GUMMIENTEN:";  , ()(){(, )()()  , ()() 0,, ,  ,"WINKEL:"; ( (L) dTrack-Info  N)#,(); (( x ) ( y ))(( x ) ( y )) x y  x y  x y  x y | x y  x y  x y  x y  f( , , )( f( , , ))  fb( ) fb( )( f( , , ))( f( , , ))  h#,,#, y( ) ( y( ) x( )# y( ) x( ) y( )) y( ) y( )    y( ) ( y( ) x( ) y( ) x( ) y( )) y( ) y( )  U , , xk( an)(@ ), yk #,();   () (( x( ) ) ( y( ) ))(( x( ) ) ( y( ) )) _   (au , , f( , , ) (@ )( an), (( ) ( ))(( ) ( )) ,  ,  ,  , , cp , f( , , )#,,#,ei  f( , , )#,,#,ei  ,,  ,,  , cp , f( , , )#,,#,ei  f( , , )#,,#,ei!** Steuerung im Quadrat **= x() x x( ) y y( )   e , , x( )( an)(@ ), y( ) #,();  x y  x y  x y  x y  x y  x y  x y  f( , , )( f( , , ))  fb( ) fb( )( f( , , ))( f( , ) x( ) x( ) D  >& x( ) x( ) x( ) D  >0 y( ) y( ) y( ) D  7: y( ) y( ) y( )  D xk( an)(@ ), yk #,();   ()  X ZN x( )( an)(@ ), y( ) #,(); X x( ) y( ) l x( ) , ))  #,,#,au , , f( , , )  (@ )( an),     , ,, ,, , , cp , f( , , )  f( , , ) #,,#,ei. ** Pruefen,ob das Spielfeld leer ist ***4 fb( ) zu( )"w" () pk( ) pk( ) le2 s2 (( zei( )(( s)( s)(+ s)(C y( ) l x( ) y( ) l x( ) y( ) l x( ) y( ) l x( ) y( ) lb x( ) y( ) l x( ) y( ) l x( ) y( ) ll f( , , )( f( , , ))  fb( ) fb( )( f( , , ))( f( , , ))  }v , au#, (s)))2)> fb( ) zu( )"w" zu( )"g" zei( ) s (( zei( )(( s)( s)(+ s)(C s))) )oH fb( )  an ,  an   ,  an  ,FR fb( ) zu( )"g" "########"; pk( )\ an zu( )"g"  zu( )"w"  , ()"SPIELER 1"() ,"SPIELER 2" ,"SPIELER 1" an)( ), #, f( , , )#,(); , ei"** Steuerung im Sechseck **( y( ) x( ) y( ))( y( ) x( ) y( ))( y( ) y( ) x( )) x( ) x( )   ( y( ) x( ) y( ))( y( ) x( )# y( ))( y( ) y( ) x( )) x( ) x( )   Track-Info  N , ()"SPIELER 2"()f( an fb() fb())( an fb()) ,@,@, ,, ,Y,Y, ,, ,r,r, ,, () p an ( fb() fb()) ,@,@, ,, ,Y,Y, ,, ,r,r, ,, () 2,   z** Spielende **:#,#,#,,#,au fb( ) s ,,X,,, ,^,X,,, ,,X,,, ,   , , ,  ,n())) #, , #,"_" B  B-V  n()n() B%`#, , #,  j B/t pt() pk( )( )n()T~      pt( ) pt( )  pt pt( ) pt( ) pt( ) pt( ) ptnn( )n( )n( )n( )n%** Highscore Liste ausgeben **##"THE BEST CHANGERS"Z h#, ,#,"G A M E O V E R"#,ei () C"" C"" an end9  zu()"a"  zu()"a" an zu()"a" zu()"a" end      , ()"SPIELER 1"() ,"SPIELER 2" ,"SPIELER 1" , ()"SPIELER 2"()#,#, 2, )** Bei Highscore Namen abfragen **X#,#,()""()"" pk() pk() Eintrge in 'rsx'-Sprungtabelle jp whide jp wshow jp winpop jp wname Eintrge in 'table' der RSX-Befehle defm "WINDOW.HID" defb "E"+#80 defm "WINDOW.SHO" defb "W"+#80 defm "WINDOW.PO" defb "P"+#80 defm "WINDOW.NAM" defb "E"+#80 Assemblerlisting zu den Befehlen wname: ;W. ffnen u. Namen geben cp 6 ;6 Parameter? jp m,opmis jp nz,imparg ld l,(ix+0);Stringdeskr.adr. nach HL ld h,(ix+1) ld a,(ix+4);Xende nach A ld d,(ix+8);Xanf nach D sub d ;Xdiff napt()  6 pk() pk() pt()  c  ()"" ()"" "CHANGE.HI"  #,n( )#, pt( )  F# n()""@$ an #,,#,"Bitte geben Sie Ihren Namen ein:"K. an #,,#,"Spieler"; ;"geben Sie Ihren Namen ein:"8#,, #,"__________"5B(C) "" B  ( ) txL () (n()) n()u(n(),(n()))ch A inc a cp (hl) ;String lnger als Xdiff? jp m,imparg;dann Fehler push hl ;Deskr.adr. retten push ix ;Parameter retten inc ix ;String berspringen inc ix dec (ix+4) ;Obergrenze 2 nach oben dec (ix+4) ;(Platz fr berschrift) ld a,5 ;Parameter-1 call wopen ;Window ffnen pop ix ;Parameter holen ld a,(ix+10);Nummer des Fensters call #bbb4 ;als aktuelles Fenster push af ;altes Fenster pop hl ;nach HL ex (sp),hl ;und mit Deskr. tauschen ld a,(ix+4);Xende nach A ld b,(ix+8); #, , #,"_" B  B-V  n()n() B%`#, , #,  j B/t pt() pk( )( )n()T~      pt( ) pt( )  pt pt( ) pt( ) pt( ) pt( ) ptnn( )n( )n( )n( )n%** Highscore Liste ausgeben **##"THE BEST CHANGERS"Z  (Xanf nach B sub b ;Xdiff nach A inc a ld b,(hl) ;Stringlnge nach B sub b ;Differenz nach A srl a ;Differenz/2... ld b,32 ;...Spaces... call nz,chars;...ausgeben ld a,(hl) ;Stringlnge nach A inc hl ;HL auf String call print ;String ausgeben ld hl,#0102;Cursorposition 1/2 call #bb75 ;TXT SET CURSOR ld a,(ix+4);Xende nach A ld b,(ix+8);Xanf nach B sub b ;Xdiff nach A inc a ld b,154 ;Linie call chars ;ausgeben ld h,(ix+8);Koordinaten d. W. nach dec h ;HL und DE (physikaliCEUS INFpQQt vollstaendig! Das Assemblieren fuehrt deshalb zu e "Informationen zu CEUS:"CEUS.ASM ist ein Assemblerfile, das mit dem HISOFT DEVPAK-Assembler geschrieben wurde. Das Assemblieren ist folglich auch nur mit diesem machbar.("Dieses Programm ist Teil einer Serie und ist deshalb nicht vollstaendig! Das Assemblieren fuehrt deshalb zu einerFehlermeldung!"m - Toolbox ; 1989 by Jrg Schwieder, beTrack-Info  Nsch) ld l,(ix+6) inc l ;Obergrenze korrigieren ld d,(ix+4) dec d ld e,(ix+2) dec e call #bb66 ;TXT WIN ENABLE pop af ;alte W.nummer wieder holen jp #bbb4 ;TXT STR SELECT chars: push bc ;BC retten ld c,a ;Zhler nach C ld a,b ;Zeichen nach A ld b,c ;Zhler nach B char1: call #bb5a ;TXT WR CHAR djnz char1 ;weiter bis Zhler=0 pop bc ;BC holen ret ;und zurck print: ld b,a ;Lnge nach B ld e,(hl) ;Stringadr. nach DE inc hl ld d,(hl) ex de,hl ;Stringadr nach HL prin1: lichern dec hl ;HL wieder +1 inc bc ;BC wieder +1 ld (hl),a ;H.Byte wieder darst. inc hl ;nchstes Byte dec c jp nz,whd6 ;weiter bis Zeile dargest. pop bc ;Diffs holen pop hl ;HL holen call #bc26 ;nchste Zeile djnz whd5 ;nochmal bis alle Zeilen pop bc ;Offset holen ld hl,hidden;HL auf Hidden-Eintrag add hl,bc ld a,#ff ;'Versteckt' ld (hl),a ;setzen ret ;Fertig! wshow: ;Blendet W. wieder ein cp 1 ;1 Parameter? jp m,opmis jp nz,imparg ld a,(wincnt) or a jp z,id a,(hl) ;Zeichen aus String call #bb5a ;TXT WR CHAR inc hl ;HL auf nchstes Zeichen djnz prin1 ;weiter bis Lnge=0 ret ;und zurck whide: ;'Versteckt' ein Window cp 1 ;1 Parameter? jp m,opmis jp nz,imparg ld a,(wincnt);Anzahl der Windows or a ;=0? jp z,imparg;dann Fehler ld b,a ;Anzahl nach B ld hl,winnum;HL auf Nummern ld a,(ix+0);Nummer als Param. holen whd1: inc hl ;HL auf nchsten Eintrag cp (hl) ;=Param.? jp z,whd2 ;dann weiter djnz whd1 ;sonst nchster Eintrag jpmparg ld b,a ;Anzahl nach B ld hl,winnum;HL auf Nummern ld a,(ix+0);Nummer als Param. holen wsh1: inc hl ;HL auf nchsten Eintrag cp (hl) ;=Param.? jp z,wsh2 ;dann weiter djnz wsh1 ;sonst nchster Eintrag jp imparg ;nicht da? Fehler! wsh2: ld a,(wincnt);MaxWin sub b ;-Tabellennummer inc a ;+1 ld c,a ;=Offset fr Eintrag ld b,0 ;nach BC ld hl,hidden;HL auf Eintrag in der add hl,bc ;Vertsteckt-Tabelle ld a,(hl) ;Eintrag holen cp #ff ;Window versteckt? ret nz ;sonst zurck ld hl imparg ;nicht da? Fehler! whd2: ld a,(wincnt);MaxWin+1 sub b ;-Tabellennummer inc a ld c,a ;=Offset fr Eintrag ld b,0 ;nach BC ld hl,hidden;HL auf Eintrag in der add hl,bc ;Vertsteckt-Tabelle ld a,(hl) ;Eintrag holen cp #ff ;Window schon versteckt? ret z ;dann zurck ld hl,winx1;HL auf Xanf add hl,bc ld d,(hl) ;Xanf nach D dec d ;Xanf-2 dec d ld hl,winy1;HL auf Yanf add hl,bc ld e,(hl) ;Yanf nach E dec e ;Yanf-2 dec e push bc ;Offset retten push bc ex de,hl ;Koor,winx1;HL auf Xanf add hl,bc ld d,(hl) ;Xanf nach D dec d ;Xanf-2 dec d ld hl,winy1;HL auf Yanf add hl,bc ld e,(hl) ;Yanf nach E dec e ;Yanf-2 dec e push bc ;Offset retten push bc ex de,hl ;DE und HL tauschen call #bc1a ;Adr. von links oben.. ex de,hl ;...nach DE pop bc ;Offset holen push de ;Windowadr. retten ld hl,winadr;HL auf Hintergrundadr. add hl,bc add hl,bc ld e,(hl) ;Hintergrundadr. nach DE inc hl ld d,(hl) push de ;H.adr. retten ld hl,winx2;HL auf Xeds. nach HL call #bc1a ;Adr. von links oben.. ex de,hl ;...nach DE pop bc ;Offset holen push de ;Windowadr. retten ld hl,winadr;HL auf Hintergrundadr. add hl,bc add hl,bc ld e,(hl) ;Hintergrundadr. nach DE inc hl ld d,(hl) push de ;H.adr. retten ld hl,winx2;HL auf Xende add hl,bc ld a,(hl) ;Xende nach A ld hl,winx1;HL auf Xanf add hl,bc ld e,(hl) ;Xanf nach E sub e ;Xdiff inc a ;+3 inc a inc a ld e,a ;nach E push bc ;Offset retten call #bc1a ;SCR CHAR POSITIONnde add hl,bc ld a,(hl) ;Xende nach A ld hl,winx1;HL auf Xanf add hl,bc ld e,(hl) ;Xanf nach E sub e ;Xdiff inc a ;+3 inc a inc a ld e,a ;nach E push bc ;Offset retten call #bc1a ;SCR CHAR POSITION wsh3: srl b ;Zeichenbreite /2 jp c,wsh4 ;bertrag? dann weiter sla e ;sonst Xdiff*2 jp wsh3 ;und nochmal wsh4: pop bc ;Offset holen ld hl,winy2;Ydiff nach D add hl,bc ld a,(hl) ld hl,winy1 add hl,bc ld d,(hl) sub d inc a inc a inc a ld d,a sla d ;Ydiff*8 s whd3: srl b ;Zeichenbreite /2 jp c,whd4 ;bertrag? dann weiter sla e ;sonst Xdiff*2 jp whd3 ;und nochmal whd4: pop bc ;Offset holen ld hl,winy2;Ydiff nach D add hl,bc ld a,(hl) ld hl,winy1 add hl,bc ld d,(hl) sub d inc a inc a inc a ld d,a sla d ;Ydiff*8 sla d sla d push de ;Xdiff u. Ydiff pop bc ;nach BC pop de ;H.adr. nach DE pop hl ;W.adr. nach HL whd5: push hl ;w.adr und push bc ;Diffs retten whd6: ld a,(de) ;Hintergrundbyte nach A ldi ;Byte a. Win. speTrack-Info  Nla d sla d push de ;Xdiff u. Ydiff pop bc ;nach BC pop de ;H.adr. nach DE pop hl ;W.adr. nach HL push bc ;Diffs retten push hl ;W.adr. retten call #bc1a ;SCR CHAR POSITION pop hl ;W.adr. holen ld a,b ;Zeichenbreite nach A pop bc ;Diffs holen push af ;Breite retten wsh5: call getlne ;Zeilen lesen ld a,b ;Zeilenzhler-16 sub 16 ld b,a wsh7: pop af ;Breite holen push af ;Breite wieder retten push hl ;W.adr. retten push bc ;Diffs retten call getchr ;linken Rand lesen calEingabe der Parameter  0 za . pa() za za  , za () ,  ""  pa( za)()d za pa( za) ( pa( za)) za ,,,,,,   9 pa( za) pa( za)    = pa( za) pa( za)    9 pa( za) pa( za)   3 pa( za) pa( za)l exclne ;W.Inhalt tauschen call getchr ;rechten Rand lesen pop bc ;Diffs holen pop hl ;W.adr holen call #bc26 ;nchste Zeile djnz wsh7 ;nochmal bis letzte pop af ;Breite holen wsh9: call getlne ;Spalte lesen pop bc ;Offset holen ld hl,hidden;HL auf Hidden-Eintrag add hl,bc xor a ;'nicht Versteckt' ld (hl),a ;setzen ld hl,#bc44;HL auf SCR FILL BOX ld a,(hl) ;Byte nach A push af ;und retten ld (hl),#c9;und 'RET' einsetzen ld ix,ubgbuf;IX auf Buffer ld hl,winx1;HL auf Xanf   ? , za" "pa( za); pa( za);" "  , ()  za  Menue"  0 ,=," 1. Darstellen"" 2. Neue Eingaben"" 3. Drucken" F6C "" 6  ()   6 @ T,,JT DarstellenM^ pa() , pa() , pa( ) , pa( ) , pa( )!h  pa() r pa( ), pa()|    pa()>---------- 0 ---------- 0 ---------- 0 ---------- 0 ---------- 0 ---------- 0 ---------- 0 ---------- 0 ---------- 0 ---------- 0 ecken!"Z "change.hi"*d  #,"----------"#,"0"n88 by ** 50 '**  pa()       g pa() x ( )(( pa() pa()))   x ( ) y pa()  x y () "8 () ()"!mandala.pic", ,@,?   , ()  "9 () ()"!mandala.pic", ,@,?   Werte Ausdrucken  0 "&0 Ausgabe der Werte : 3D# ," Mandalas"# ," ========"# N za -X# ," "pa( za); pa( za) b zalv Punkt ausgeben1 pa() x  y    bt(  ) bt , wka bt wka bt? x bt( wka( pa()) wka( pa()))? y bt( wka( pa()) wka( pa()))j x( pa( )) x( pa( )) y( pa(MANDALASBASp0 0 * "Ursprung-(x)------","Ursprung-(y)------"   Mandalas ' pa()Feld fuer Parameter;( pa() za  pa( za) za2 Formel auswaehlen <  F" Mandalas"" ========",P"1 => x=y-sgn(x)*(abs(b*x-c)) : y=a-x"!Z"2 => x=y-sin(x) : y=a-x"!d"Welche Formel? "; pa()(n pa() pa() d x Track-Info  N)) y( pa()) & x pa(), y pa() Daten fuer TextE "Formel------------","Genauigkeit-------","Drehwinkel-(DEG)--"E  "Vergroesserung----","Konstante-(a)-----","Konstante-(b)-----"E "Konstante-(c)-----","1=>Farbig/2=>Mono-","ink-(0)-----------"E  "ink-(1)-----------","ink-(2)-----------","ink-(3)-----------"0* "Ursprung-(x)------","Ursprung-(y)------"$ g-(x)------","Ursprung-(y)------"er einen erfolgreichen Anpassungsversuch ist, muss"`nhilf(,)"zuerst geprueft werden, ob die anzupassende Routine diese auch tatsaechlich"^xhilf(, )"benutzt. Zu diesem Zweck werden die beiden Daten-Bytes der o.g. Vektoren"+hilf(, )"durch Nullen ersetzt:"Jhilf(, )" POKE &BDF2,0 : POKE &BDF3,0Jhilf(, )" POKE &BD32,0 : POKE &BD33,0hilf(,)""]hilf(,)"Danach wird die HC-Routine ganz norma ,"(?) H i l f e"&tast""=0 (tast "1") (tast "7") (tast "?"): tast CDN tast"?" -X (tast) *,H,f,,,b  Rahmenl ,"Ihre Wahl:""v , tex((tast))A , "Soll diese Konfiguation gespeichert werden (j/n) ?"tast "" tast"" tastC2 (tast "j") (tast "J") 1 ,"Dateiname (nnnnnnnn.bin) :";fil fl aufgerufen, wobei jetzt folgende"/hilf(,)"Faelle auftreten koennen:"^hilf(,)"a) Die Routine arbeitet ganz normal weiter. Konsequenz: Die anzupassende"`hilf(,)" Routine verwendet die Sprungvektoren nicht, was bedeutet, dass eine An-"Ihilf(,)" passung leider nicht moeglich ist ( Schluchz! )."hilf(,)""Whilf(,)"b) Es kommt zu einem RESET. Konsequenz: Die Sprungvektoren werden"^hilf(,)" verwendet, so dass mit dem zweitenil, ,,. ,"8 TO 24 - Setup beenden (j/n) ?"tast"" tast"" tastC2 (tast "j") (tast "J")  new * 4 -> 44 &,( *, >H 2 -> 4R .,( 2, \f 2 -> 2p .,! 2, z 1 -> 4 6,( :,  1 -> 2 6,! :,  1 -> 1 6,  :,  Hilfe  Rahmen #,,N,,  # Schritt der Anpassung fortgefahren"9hilf(,)" werden kann ( Bravo Glistacs! )."zwote Seite/hilf(,)"2. Druckdichte feststellen"`hilf(,)"Im zweiten Schritt muss nun festgestellt werden, welche Grafikart das anzu-"["hilf(,)"passende Program verwendet, d.h. welche ESC-Sequenz an den Drucker ge-"[,hilf(,)"schickt wird. Dazu wird im Rahmen eines erneuten Tests der Drucker auf"Y6hilf(,)"hexadezimalen Ausdruck der Speicherdaten geschaltet (HEX Seit   # Zeil )$ #,hilf( Seit, Zeil). Zeil8 C""B Seit L # V , !`"Anleitung drucken (j/n) ?""j tast"j" tast"n"t tast(C)~ tast"n"  Seit  Zeil * #,hilf( Seit, Zeil) Zeil# Seit  UP Rahmen- , , , , , - , ,-DUMP, siehe"_@hilf(,)"Drucker-Handbuch). Die hexadezimal ausgedruckten Speicherdaten, 1-2 Seiten"XJhilf(,)"sollten genuegen, muessen dann auf die Existenz einer der folgenden"9Thilf(,)"ESC-Sequenzen hin untersucht werden:"^hilf(,)""Phhilf(, )" ESC-Sequenz | Grafikart"\rhilf(, )"---------------------------------------|------------------------------"T|hilf(, )" ESC 'K' oder ESC '*' 0 |  w, , w,  UP Hilfetext eintragen)hilf(,)"BEDIENUNGSANLEITUNG:"(hilf(,)""\2hilf(,)"Die Anpassung einer 8-Nadel-Hardcopy-Routine an einen Epson-kompatiblen"U<hilf(,)"24-Nadel-Drucker erfordert die Durchfuehrung folgender Schritte:"Fhilf(,)"".Philf(,)"1. Sprungvektoren pruefen"^Zhilf(,)"Da die Verwendung der Sprungvektoren MC WAIT PRINTER bzw. MC SEND PRINTER"^dhilf(,)"notwendige Bedingung fuTrack-Info  N Grafikdruck mit "Thilf(, )" ( 1B 4B oder 1B 2A 00 ) | einfacher Dichte">hilf(,)" |"Shilf(,)" ESC 'L' oder ESC '*' 1 | Grafikdruck mit"Thilf(,)" ( 1B 4C oder 1B 2A 01 ) | doppelter Dichte">hilf(,)" |"\hilf(,)" ESC 'Y' oder ESC '*' 2 | Grafikdruck m. doppelter"[hilf(,)" ( "Beispiel: vorher nachher"Jhilf(, )" . ."Khilf(, )" . ." Thilf(,)" MEMORY xxxx MEMORY xxxx-470"b hilf(,)" CALL xxxx LOAD 'nnnnnnnn.bin',xxxx-470"[hilf(,)" . CALL xxxx-470,xxxx-470"O hilf(,)" 1B 59 oder 1B 2A 02 ) | Dichte u. dopp. Geschw.">hilf(,)" |"Shilf(,)" ESC 'Z' oder ESC '*' 3 | Grafikdruck mit"Uhilf(,)" ( 1B 5A oder 1B 2A 03 ) | vierfacher Dichte"dritte Seite,hilf(,)"3. Installation (Setup)"[hilf(,)"Ist die von der anzupassenden Routine benutzte Grafikart bekannt, kann"^hilf(,)"diese jetzt mit Hilfe des Programms SETUP.BA . CALL xxxx" Mhilf(,)" . ."  hilf(,)""T*hilf(,)"Nun sollte der 24-Nadel-Hardcopy nichts mehr im Wege stehen..."4hilf(,)""I>hilf(,)"Ole, ole, ole, ole, Dieter Schroeppke, ole, ole !!!"H,)"Ole, ole, ole, ole, Dieter Schroeppke, ole,-470"[hilf(,)" . CALL xxxx-470,xxxx-470"O hilf(,)" S auf die gewuenschte Grafik-"XHILF(,)"art des 24-Nadel-Druckers konvertiert werden. Welche Grafikart ein-"Zhilf(,)"gestellt werden kann (1-fache, 2-fache oder 4-fache Dichte), muss dem"c&hilf(,)"jeweiligen Drucker-Handbuch entnommen werden. Zu Erzielung eines optimalen" _0hilf(,)"Druckergebnisses sollte stets die hoechstmoegliche Dichte gewaehlt werden."\:hilf(,)"Nachdem das Einstellen der Grafikart durch Anwahl des jeweiligen Menue-"]Dhilf(,)_"();C#, "1" "4"  d n  s() zei() s zei() zei()Ox an , "LEVEL:" , "ZEIT:" , "PUNKTE:" an   , "SPIELER";  , "LEVEL:" , "ZEIT:" , "PUNKTE:"d le le fb() fb() f f(,$,$) zu()"g" zu()"w"# zu()"g" zu()"w"n an"punktes abgeschlossen ist, legt SETUP.BAS ein 470 Byte langes Maschinen-"[Nhilf(, )"programm auf Diskette ab, welches mit einem beliebigen Namen versehen"!Xhilf(, )"werden kann.bdritte Seite.lhilf(,)"4. Einbinden des Treibers"[vhilf(,)"Zum 24-Nadel-Druck muss sich das auf diese Weise installierte Treiber-"^hilf(,)"programm gleichzeitig mit der anzupassenden HC-Routine im Arbeitsspeicher"dhilf(,)"befinden. Hierzu ist ein freier Speicherbern der linken Haelfte sehen, wie gut die Ernte war und wie voll die Kornspeicher sind. Rechts findet man einige Informationen ueber sein Land, sein Reichtum und den Korn- bzw. den Landpreis des derzeitigen Jahres. Nun sollte der Spiele schauen, dass er seine Kornspeicher vollbekommt. In den meisten Faellen ist es notwendig, Korn zu kaueich von 470 Bytes erforderlich." [hilf(,)"Das Treiberprogramm kann prinzipiell an jede beliebige Adresse geladen"]hilf(,)"werden. In der Regel genuegt es, die von der HC-Routine gesetzte System-"]hilf(,)"variable MEMORY um 470 Byte herabzusetzen und das Treiberprogramm an die"]hilf(,)"entsprechende Adresse zu laden. Abschliessend wird der Treiber durch den"?hilf(,)"Aufruf CALL Adresse,Adresse initialisiert."hilf(, )""Nhilf(, )Track-Info  Nfen (Joystick nach oben). Bei einer geringen Bevoelkerung und einer guten Ernte ist es moeglich, dass der Spieler Korn verkaufen (JS nach unten) kann. Ausserdem besteht die Moeglichkeit, Land von Privatbesitzern zu kaufen (JS nach links) bzw. ihnen welches zu verkaufen (JS nach rechts). Hat der Spieler diese Taetig4/6128 koennen hier mit dem Abtippen aufhoeren !!!6:** Fill-Routine fuer CPC 464 (CPC Int.4/87) ** D$N  ad  (X ("&") ad, b df,04,a2,c9,07,a2,fe,7bl cd,f6,17,f5,cd,fc,15,cdv 27,18,cd,86,0c,c1,b8,c8 32,df,a2,cd,1a,16,cd,ff 16,d2,95,a2,e5,fd,e1,d5 dd,e1,cd,a9,0b,3a,df,a2 47,fd,23,cd,2d,0c,3a,34 b3,fd,95,38,05,78,ae,a1 28,ef,fd,2b,cd,13,0c,51 59,e5,c5,cb,01,dc,05,0c 78,42,ae,a1,57,20,keiten beendet, muss der Feuerknopf gedrueckt werden. Nun hat man zu entscheiden, wieviel Korn man seinem Volk gibt. Man kann es entweder saettigen, durchfuettern oder auch verhungern lassen. Zum Schluss noch einige Tips: - Beim Landverkaufen sollte man aufpassen. Verkauft man zuviel, verliert man auch die Muehlen und M0a,b0 28,07,dd,2b,df,a5,a2,dd 23,c1,e1,e5,c5,cb,09,dc f9,0b,78,43,ae,a1,5f,20 0a,b0,28,07,dd,23,df,a5 a2,dd,2b,c1,e1,3a,38,b3 ae,a1,ae,77,3a,36,b3,fd  95,30,0a,fd,2b,cd,13,0c 78,ae,a1,28,b4,2a,e0,a2  7d,b4,c8,2b,22,e0,a2,df* cd,a2,c3,1e,a2,a8,a2,fd4 d5,2a,89,ae,01,03,00,cd> 18,f6,38,17,eb,22,89,aeH dd,e5,d1,fd,e5,c1,2b,72R 2b,73,2b,71,2a,e0,a2,23\ 22,e0,a2,d1,c9,d0,a2,fdf 2a,89,ae,2b,56,2b,5e,2bp 22,89,ae,6e,26,00,c9aerkte, die man vorher auf das Land gebaut hat. Es ist naemlich nur eine Muehle und ein Markt auf zehn Quadratmeilen (qM) erlaubt. - Die Erlangung eines hoeheren Adelstitel ist an bestimmte Bedingungen geknuepft, die vor allem die Anzahl der Muehlen und Maerkte, die der Kasernen, die Staerke der Armee, die Groesse des,00 z 00,00------ 0 ---------- 0 ---------- 0 ---------- 0 ---------- 0 ---------- 0 ---------- 0 -------- a2,dd,2b,c1,e1,3a,38,b3 ae,a1,ae,77,3a,36,b3,fd  95,30,0a,fd,2b,cd,13,0c 78,ae,a1,28,b4,2a,e0,a2  7d,b4,c8,2b,22,e0,a2,df* cd,a2,c3,1e,a2,a8,a2,fd4 d5,2a,89,ae,01,03,00,cd> 18,f6,38,17,eb,22,89,aeH dd,e5,d1,fd,e5,c1,2b,72R 2b,73,2b,71,2a,e0,a2,23\ 22,e0,a2,d1,c9,d0,a2,fdf 2a,89,ae,2b,56,2b,5e,2bp 22,89,ae,6e,26,00,c9 Uebungsplatzes, des Palastes und der Kathedrale betreffen. - Sollte das Programm unterbrochen werden, was durchaus mal vorkommen kann, gibt man am besten "GOTO 590" ein. Und nun wuenschen wir Ihnen viel Spass. Hinweis: Das Hauptprogramm wurde als ASCII-Programm abgespeichert, damit beim CPC 464 in Verbindung mit dem Emulator keine Clear-Input-Probleme auftauchen. Doch bei Kassettenlaufwerken kann es nachdem laden passieren, das ein "Direct Command Found" auftritt. Ist dies der Fall, dann brauchen Sie das Programm einfach nur mit RUN zu starten. abe der Spieler, Kaiser Track-Info  Nadd hl,bc ld a,(hl) ;Xanf-1 nach A dec a ld (ix+6),a;und in Buffer schreiben ld d,a ;Xanf nach D ld hl,winx2;HL auf Xende add hl,bc ld a,(hl) ;Xende nach A sub d ;Xdiff nach A ld (ix+2),a;Xdiff in Buffer schreiben ld hl,winy1;Y-Werte in Buffer add hl,bc ld a,(hl) dec a ld (ix+4),a ld d,a ld hl,winy2 add hl,bc ld a,(hl) sub d ld (ix+0),a ld a,4 ;4 Parameter setzen call wdraw ;Fensterrahmen zeichnen pop af ;altes Byte holen ld hl,#bc44;und wieder nach ld (hl),endes W. einblenden ld de,winx1;DE auf Xanf-Wert-Leerplatz ld hl,winx1 add hl,bc ;HL auf Xanf-Wert ldi ;Wert kopieren inc bc ;und BC restaurieren ld de,winx2;Xende kopieren (wie Xanf) ld hl,winx2 add hl,bc ldi inc bc ld de,winy1;Yanf kopieren ld hl,winy1 add hl,bc ldi inc bc ld de,winy2;Yende kopieren ld hl,winy2 add hl,bc ldi inc bc ld de,winnum;Nummer kopieren ld hl,winnum add hl,bc ldi inc bc ld de,hidden;hidden-Attribut kopieren ld hl,hidden add ha ;SCR FILL BOX schreiben ret ;Fertig! getlne:ld a,8 ;8 Zeilen getln0:push bc ;Diffs retten push hl ;W.adr. retten getln1:ld b,0 ;Breite nach BC LDIR ;Zeile kopieren pop hl ;W.adr. holen pop bc ;Diffs holen push af ;Zhler retten call #bc26 ;nchste Zeile pop af ;Zhler holen dec a ;-1 jp nz,getln0;weiter bis =0 ret ;und zurck getchr:push af ;AF retten getch1:ldi ;1 Byte kopieren inc bc ;BC wieder restaurieren dec c ;Breite -2 dec c dec a ;Zeichengre -1 jp nz,getchl,bc ldi inc bc ld de,winadr;Adresse kopieren ld hl,winadr add hl,bc ;16-Bittig, daher 2* add. add hl,bc ldi ;und 2* kopieren inc bc ldi inc bc ld de,winlan;Lnge kopieren ld hl,winlan add hl,bc add hl,bc ldi inc bc ldi inc bc ld a,(wincnt);Anz.d.Wind. nach A sub c ;-Offset ld hl,winx1;Adr. d. X-Werte nach HL ld de,winx1;und DE add hl,bc ;HL auf nchsten Eintrag ex de,hl ;HL und DE tauschen add hl,bc ;HL auf nchsten Eintrag inc hl ;+1 push bc ;Zhler rette1;und weiter bis ZG=0 ret exclne:Push af ;Zeichenbreite retten excln1:ld a,(de) ;Byte aus Hintergr. nach A ldi ;Byte aus Bild schreiben dec hl ;HL und BC wiederherstellen inc bc ld (hl),a ;Byte in Bildsch. schreiben inc hl ;nchstes Byte dec c ;Breite -1 jp nz,excln1;weiter bis Breite=0 pop af ;Zeichenbreite holen ret ;und zurck winpop: ;'Popt' ein Fenster hoch cp 1 ;1 Parameter jp m,opmis jp nz,imparg ld a,(wincnt);Anz. d. Windows ld b,a ;nach B ld a,(ix+0);Windown ld c,a ;Anz. d. hheren W. nach BC ldir ;und Tabelle verschieben pop bc ;Zhler holen ld hl,winx2;mit Xende-Werten wie mit ld de,winx2;Xanf add hl,bc ex de,hl add hl,bc inc hl push bc ld c,a ldir pop bc ld hl,winy1;Yanf-Tabelle verschieben ld de,winy1 add hl,bc ex de,hl add hl,bc inc hl push bc ld c,a ldir pop bc ld hl,winy2;Yende-Tabelle verschieben ld de,winy2 add hl,bc ex de,hl add hl,bc inc hl push bc ld c,a ldir pop bc ld hl,winnum;Tnummer nach A ld hl,winnum;HL auf Tab. d. W.num. wpop1: inc hl ;auf nchsten Eintrag cp (hl) ;=Windownummer? jp z,wpop2 ;ja? dann weiter djnz wpop1 ;sonst nochmal versuchen jp imparg ;nicht gefunden? Fehler! wpop2: ld a,(wincnt);Offset des Eintrags sub b ;nach BC inc a ld c,a ld b,0 ld d,0 ld a,(wincnt);Anz.d.Wind. ld e,a ;nach DE ld hl,winnum;HL auf Tab. d. Nummern add hl,de ;HL auf letzten Eintrag wpop3: ld a,(hl) ;Nummer des obersten Window call wpoph ;Window verstecken ab. d. Windownummern ld de,winnum;verschieben add hl,bc ex de,hl add hl,bc inc hl push bc ld c,a ldir pop bc ld hl,hidden;Hidden-Tab. verschieben ld de,hidden;verschieben add hl,bc ex de,hl add hl,bc inc hl push bc ld c,a ldir pop bc ld hl,winadr;Adresstabelle verschieben ld de,winadr add hl,bc ;Tabelle ist 16-Bit breit, add hl,bc ;==> 2 mal addieren,... ex de,hl add hl,bc add hl,bc inc hl ;...2 mal erhhen... inc hl push bc ld c,a ldir ld c,a ld a,e ;Offsets vergleichen sub c jp z,wpop4 ;gleich? dann weiter dec hl ;HL retten dec e ;sonst mit nchstem Window jp wpop3 ;nochmal wpop4: ld a,(wincnt);Anz.d.Wind. ld e,a ;nach DE push bc ;Offset retten push hl wpop5: inc c ;nchstes Window (v. unten) inc hl ld a,(hl) ;nach A call wpops ;und W. wieder einblenden ld a,c ;schon oberstes Window? sub e jp nz,wpop5;sonst nochmal pop hl ;HL holen ld a,(hl) ;zu poppendes Window nach A pop bc ;Offset holen call wpops ;zu poppTrack-Info  N;...und 2 mal verschieben ldir pop bc ld hl,winlan;Lngentabelle verschieben ld de,winlan add hl,bc add hl,bc ex de,hl add hl,bc add hl,bc inc hl inc hl ld c,a ldir ld c,a ldir ld a,(wincnt);Anz.d.Wind. ld c,a ;nach BC ld de,winx1;HL und DE auf Xanf ld hl,winx1 add hl,bc ;HL auf neuen Platz ex de,hl ;HL und DE tauschen ldi ;Xanf kopieren inc bc ;und BC restaurieren ld de,winx2;Xende kopieren (wie Xanf) ld hl,winx2 add hl,bc ex de,hl ldi inc bc ld d pop hl ; Adr. der Tabelle holen jp z,pushwd;wenn =:Window hochkopieren dec a ;sonst nchstes Window jp nz,memfr2 ;Das hier gehrt auch noch zu MEMFRE, wird ;aber als Unterprogramm aufgerufen pushwd: ;kopiert ein Window 'hoch' push hl ;Adresstabelle retten dec iy ;Windowlnge nach BC ld b,(iy+0) dec iy ld c,(iy+0) ld de,(wadr);Bereichsadr. nach HL ld hl,(wlaeng);Bereichslnge nach BC add hl,de ;Zeiger hinter Bereichsende dec hl ;Zeiger auf Bereichsende dec de ;DE auf e,winy1;Yanf kopieren ld hl,winy1 add hl,bc ex de,hl ldi inc bc ld de,winy2;Yende kopieren ld hl,winy2 add hl,bc ex de,hl ldi inc bc ld de,winnum;Nummer kopieren ld hl,winnum add hl,bc ex de,hl ldi inc bc ld de,hidden;Attribut kopieren ld hl,hidden add hl,bc ex de,hl ldi inc bc ld de,winadr;Adresse kopieren ld hl,winadr add hl,bc ;16-Bittig, deshalb 2* add. add hl,bc ex de,hl ldi ;und 2* kopieren inc bc ldi inc bc ld de,winlan;Lnge kopieren Window ex de,hl ;DE und HL tauschen lddr ;Window kopieren inc de ;DE auf neue Windowadr. inc hl ;HL auf neue Bereichsadr. ld (wadr),hl;Bereichsadr. eintragen pop hl ;Adresstabelle holen dec hl ;neue Windowadr. eintragen ld (hl),d dec hl ld (hl),e jp memfr0 ;und nochmal testen  jp wshow jp winpop jp wname Eintrge in 'table' der RSX-Befehle ld hl,(wlaeng);Bereichslnge nach BC add hl,de ;Zeiger hinter Bereichsende dec hl ;Zeiger auf Bereichsende dec de ;DE auf ld hl,winlan add hl,bc add hl,bc ex de,hl ldi inc bc ldi ret ;Fertig! wpoph: push bc ;Register retten push hl push de push af ld hl,hidden;HL auf Attribute add hl,de ;Attribut ld a,(hl) ;nach B ld b,a pop af ;Windownummer holen push bc ;Attribut retten ld ix,ubgbuf;IX auf Buffer ld (ix+0),a;Nummer in Buffer ld a,1 ;1 Parameter call whide ;Window verstecken pop bc ;Attribut holen ld a,b ;und nach A pop de ;Offset holen ld hl,hidden;HL auf Attribut add h1 '+++ R E I G N +++ 2 '+++ (c) 1989, US SOFT +++ 3 '+++ Written by A. Mueller +++ 10 ON ERROR GOTO 4530 50 'Voreinstellungen 60 'Laender 70 DIM land$(7),lgr(7),hpt$(7) 80 FOR a=1 TO 7:READ land$(a),lgr(a),hpt$(a):NEXT 90 DATA Baden,266,Karlsruhe,Sachsen,264,Dresden,Wuerttemberg,343,Stuttgart,Bayern,1340,Muenchen,Hessen,140,Darmstadt,Thueringen,206,Weimar,Boehmen,917,Prag 100 'Titel 110 DIM title$(1,10) 120 FOR a=1 TO 10 130 FOR b=0 TO 1 140 READ title$(b,a) 150 NEXT b 160l,de ld (hl),a ;und altes Attr. setzen pop hl ;Register holen pop bc ret ;und zurck wpops: push bc ;Register retten push hl push de push af ld hl,hidden;HL auf Attribut add hl,de ld a,(hl) ;Attribut nach A or a ;=0? jp nz,wpopse;sonst nicht darstellen ld a,#ff ;Attribut setzen ld (hl),a pop af ;Nummer holen ld ix,ubgbuf;IX auf Buffer ld (ix+0),a;Nummer in Buffer ld a,1 ;1 Parameter call wshow ;Window einblenden wpopse:pop de ;Register holen pop hl pop bc ret NEXT 170 DATA Herr,Frau,Baron,Baronin,Graf,Graefin,Markgraf,Markgraefin,Herzog,Herzogin,Erzherzog,Erzherzogin,Fuerst,Fuerstin,Churfuerst,Churfuerstin,Koenig,Koenigin,Kaiser,Kaiserin 180 'Militaer 190 DIM mil$(3),mpr(3),kk(3) 200 FOR a=1 TO 3:READ mil$(a),mpr(a),kk(a):NEXT 210 DATA Infanterie,5000,1,Kavallerie,7000,3,Artillerie,6500,2 220 'Justiz 230 DIM jus$(4) 240 FOR a=1 TO 4:READ jus$(a):NEXT 250 DATA sehr fair,fair,hart,gierig 260 'Ernte 270 DIM wetter$(4),ernte$(4) 280 FOR a=1 TO 4:READ we ;und zurck ;Diese Zeilen mssen in MEMFRE vor MEMFR3 ;eingefgt werden ld hl,winadr;Windowadr.tab. nach HL inc hl ;HL auf ersten Eintrag inc hl ld a,(wincnt);Windowzhler nach A ld iy,winlan;W-lngentab. nach IY inc iy ;IY auf ersten Eintrag inc iy memfr2:ld c,(hl) ;Windowadr. nach BC inc hl ld b,(hl) inc hl push hl ;Windowadr.tab. retten ld l,(iy+0);Windowlnge nach HL inc iy ld h,(iy+0) inc iy add hl,bc ;Adr. hinter Window nach HL sbc hl,de ;=Adr. des Bereichs? Track-Info  Ntter$(a),ernte$(a):NEXT 290 DATA Tolles Wetter,Rekordernte,Gutes Wetter,Gute Ernte,Normales Wetter,Schlechte Ernte,Regen,Hungersnot droht 300 'Mitspieler 310 MODE 1:INK 0,0:INK 1,20:BORDER 0:INK 2,18:INK 3,24 320 :PEN 1:INPUT"Wie viele Personen wollen mitspielen [1-7] ";mitsp 330 IF mitsp<1 OR mitsp>7 THEN CLS:GOTO 320 340 DIM name$(mitsp),titel(mitsp),mil(mitsp,3),bev(mitsp),geld(mitsp),jus(mitsp),korn(mitsp),palast(mitsp),kathedral(mitsp),muehlen(mitsp),maerkte(mitsp),sex(mitsp),gesp(m30:GOSUB 4300 890 RETURN 900 'Land kaufen 910 IF lgr(spi)-staatl(spi)INT(staatl(spi)/10) THEN muehlen(spi)=INT(staatl(spi)/10) 1000 IF maerkte(spi)>INT(staatl(spi)/10) THEN maerkte(spi)=INT((staatl(spi)/10) 1010 geld(spi)=geld(spi)+(m*lpr) 1020 GOSUB 4330 1030 RETURN 1040 'Mengeneingabe itsp) 350 DIM militaer(mitsp),kasernen(mitsp),ueb(mitsp),staatl(mitsp) 360 FOR a=1 TO mitsp 370 CLS 380 PRINT:PRINT"Spieler"a;:LOCATE 10,2:PRINT", geben Sie ihren" 390 INPUT"Namen an: ",name$(a) 400 name$(a)=LEFT$(name$(a),10) 410 PRINT:PRINT:PRINT"Ist "name$(a)" von "land$(a)" 420 INPUT"[m]aennlich oder [w]eiblich ? ",x$ 430 x$=UPPER$(x$) 440 IF x$="M" THEN sex(a)=0 ELSE IF x$="W" THEN sex(a)=1 450 NEXT 460 'Variablen 470 FOR a=1 TO mitsp 480 ueb(a)=0:kasernen(a)=1:militaer(a)=1:mil(a,1)=1:be 1050 CLEAR INPUT:PEN 3:LOCATE 12,20:INPUT "Wieviel ?",m 1060 m=INT(m) 1070 LOCATE 1,20:PRINT SPACE$(40); 1080 RETURN 1090 'Kornverteilung 1100 PEN 3:LOCATE 3,15:PRINT"Wieviel Korn soll ihr Volk bekommen ?" 1110 LOCATE 10,16:PRINT SPACE$(30);:PEN 1:LOCATE 17,17:PRINT CHR$(240)" fuer das Maximum" 1120 LOCATE 17,18:PRINT CHR$(243)" fuer das Benoetigte" 1130 LOCATE 17,19:PRINT CHR$(241)" fuer das Minimum" 1140 LOCATE 1,22:PRINT SPACE$(40); 1150 j=JOY(0):IF j=0 OR j=4 OR j=16 THEN 1150 1160 IF j=1 THv(a)=2000:geld(a)=25000:jus(a)=2:korn(a)=20:palast(a)=0:kathedral(a)=0:muehlen(a)=0:maerkte(a)=0:titel(a)=1:gesp(a)=0:staatl(a)=88 490 NEXT 500 'Bildschirm 510 CLS 520 MOVE 0,360 530 FOR a=1 TO 640 540 RANDOMIZE TIME 550 DRAW a,360+RND*20,2:NEXT 560 WINDOW #1,1,40,1,1:WINDOW 1,40,4,25 570 'Spiel 580 spi=1:jahr=1700 590 CLS:CLS#1:IF gesp(spi)>0 THEN gesp(spi)=gesp(spi)-1:GOTO 4030 600 PRINT#1,title$(sex(spi),titel(spi))" "name$(spi)" von "land$(spi) 610 LOCATE#1,36,1:PRINT#1,USING"&####";" ",jaEN kvt=1:GOTO 1190 1170 IF j=8 THEN kvt=2:GOTO 1190 1180 IF j=2 THEN kvt=3 1190 'Bericht 1200 CLS 1210 RANDOMIZE TIME 1220 geb=bev(spi)*(RND*0.05)*(4-kvt) 1230 IF kvt=1 THEN sterb=5 1240 IF kvt=2 THEN sterb=15 1250 IF kvt=3 THEN sterb=70 1260 IF korn(spi)<100 THEN sterb=sterb+(100-korn(spi)) 1270 sterb=(sterb*0.5)+(RND*(sterb/2)) 1280 sterb=INT((sterb/100)*bev(spi)) 1290 IF sterb>=bev(spi) THEN sterb=70+(INT(RND*20)/100)*bev(spi) 1300 RANDOMIZE TIME 1310 IF jus(spi)=3 THEN fl=INT(0.05*bev(spihr; 620 RANDOMIZE TIME 630 ernte=CINT(RND*4):IF ernte=0 THEN 630 640 korn(spi)=(((5-ernte)*1000)/(bev(spi)*3)*100)+korn(spi) 650 lpr=INT(500-((SGN(RND-0.5))*(RND*100))) 660 kpr=INT(1500-((SGN(RND-0.5))*(RND*500))) 670 GOSUB 4240:GOSUB 4300 680 GOSUB 4330 690 LOCATE 17,15:PRINT CHR$(240);" Korn kaufen" 700 LOCATE 17,16:PRINT CHR$(241);" Korn verkaufen 710 LOCATE 17,17:PRINT CHR$(242);" Land kaufen" 720 LOCATE 17,18:PRINT CHR$(243);" Land verkaufen 730 PEN 3:LOCATE 12,22:PRINT"Feuerknopf druecken"))+(SGN(RND-0.5)*(INT(RND*25))) 1320 IF jus(spi)=4 THEN fl=INT(0.55*bev(spi))+(SGN(RND-0.5)*(INT(RND*75))) 1330 IF muehlen(spi)