10 '
20 ' Listing source 30 ' assembleur 40 ' de 50 ' A M S P R I T E 60 ' 70 ' (c) 1985 80 ' SEBAN Research Ltd. 90 ' 100 ' 8000 ORG &8000 110 ' 4000 tbl EQU &4000 120 ' 0002 spt EQU &02 130 ' 140 ' 8000 21 00 40 LD HL,tbl 150 ' 8003 06 02 LD B,spt 160 ' 8005 E5 PUSH HL 170 ' 8006 C5 PUSH BC 180 ' 8007 C5 #L2 PUSH BC 190 ' 8008 23 INC HL 200 ' 8009 23 INC HL 210 ' 800A 23 INC HL 220 ' 800B 56 LD D,(HL) 230 ' 800C 23 INC HL 240 ' 800D 5E LD E,(HL) 250 ' 800E CD B9 80 CALL 80B9 260 ' 8011 06 08 LD B,08 270 ' 8013 23 INC HL 280 ' 8014 7E LD A,(HL) 290 ' 8015 12 LD (DE),A 300 ' 8016 7A LD A,D 310 ' 8017 C6 08 ADD A,08 320 ' 8019 57 LD D,A 330 ' 801A 10 F7 DJNZ 0013 340 ' 801C 0E 0A LD C,0A 350 ' 801E 09 ADD HL,BC 360 ' 801F C1 POP BC 370 ' 8020 10 E5 DJNZ 0007 380 ' 8022 C1 POP BC 390 ' 8023 E1 POP HL 400 ' 8024 E5 PUSH HL 410 ' 8025 C5 PUSH BC 420 ' 8026 C5 PUSH BC 430 ' 8027 7E LD A,(HL) 440 ' 8028 23 INC HL 450 ' 8029 56 LD D,(HL) 460 ' 802A 23 INC HL 470 ' 802B 5E LD E,(HL) 480 ' 802C CB 47 BIT 0,A 490 ' 802E 28 01 JR Z,0031 500 ' 8030 15 DEC D 510 ' 8031 CB 4F BIT 1,A 520 ' 8033 28 01 JR Z,0036 530 ' 8035 14 INC D 540 ' 8036 CB 57 BIT 2,A 550 ' 8038 28 01 JR Z,003B 560 ' 803A 1D DEC E 570 ' 803B CB 5F BIT 3,A 580 ' 803D 28 01 JR Z,0040 590 ' 803F 1C INC E 600 ' 8040 CB 67 BIT 4,A 610 ' 8042 28 02 JR Z,0046 620 ' 8044 14 INC D 630 ' 8045 1C INC E 640 ' 8046 CB 6F BIT 5,A 650 ' 8048 28 02 JR Z,004C 660 ' 804A 15 DEC D 670 ' 804B 1D DEC E 680 ' 804C CB 77 BIT 6,A 690 ' 804E 28 02 JR Z,0052 700 ' 8050 15 DEC D 710 ' 8051 1C INC E 720 ' 8052 CB 7F BIT 7,A 730 ' 8054 28 02 JR Z,0058 740 ' 8056 14 INC D 750 ' 8057 1D DEC E 760 ' 8058 7A LD A,D 770 ' 8059 FE 19 CP 19 780 ' 805B 38 0A JR C,0067 790 ' 805D FE 82 CP 82 800 ' 805F 38 04 JR C,0065 810 ' 8061 16 18 LD D,18 820 ' 8063 18 02 JR 0067 830 ' 8065 16 00 LD D,00 840 ' 8067 7B LD A,E 850 ' 8068 FE 50 CP 50 860 ' 806A 38 0A JR C,0076 870 ' 806C FE 82 CP 82 880 ' 806E 38 04 JR C,0074 890 ' 8070 1E 4F LD E,4F 900 ' 8072 18 02 JR 0076 910 ' 8074 1E 00 LD E,00 920 ' 8076 2B DEC HL 930 ' 8077 72 LD (HL),D 940 ' 8078 23 INC HL 950 ' 8079 73 LD (HL),E 960 ' 807A 23 INC HL 970 ' 807B 72 LD (HL),D 980 ' 807C 23 INC HL 990 ' 807D 73 LD (HL),E 1000 ' 807E CD B9 80 CALL 80B9 1010 ' 8081 06 08 LD B,08 1020 ' 8083 23 INC HL 1030 ' 8084 1A LD A,(DE) 1040 ' 8085 77 LD (HL),A 1050 ' 8086 7A LD A,D 1060 ' 8087 C6 08 ADD A,08 1070 ' 8089 57 LD D,A 1080 ' 808A 10 F7 DJNZ 0083 1090 ' 808C 0E 0A LD C,0A 1100 ' 808E 09 ADD HL,BC 1110 ' 808F C1 POP BC 1120 ' 8090 10 94 DJNZ 0026 1130 ' 8092 C1 POP BC 1140 ' 8093 E1 POP HL 1150 ' 8094 C5 PUSH BC 1160 ' 8095 23 INC HL 1170 ' 8096 56 LD D,(HL) 1180 ' 8097 23 INC HL 1190 ' 8098 5E LD E,(HL) 1200 ' 8099 01 0B 00 LD BC,000B 1210 ' 809C 09 ADD HL,BC 1220 ' 809D 7E LD A,(HL) 1230 ' 809E B7 OR A 1240 ' 809F 28 11 JR Z,00B2 1250 ' 80A1 CD B9 80 CALL 80B9 1260 ' 80A4 06 08 LD B,08 1270 ' 80A6 23 INC HL 1280 ' 80A7 7E LD A,(HL) 1290 ' 80A8 12 LD (DE),A 1300 ' 80A9 7A LD A,D 1310 ' 80AA C6 08 ADD A,08 1320 ' 80AC 57 LD D,A 1330 ' 80AD 10 F7 DJNZ 00A6 1340 ' 80AF 23 INC HL 1350 ' 80B0 18 03 JR 00B5 1360 ' 80B2 0E 09 LD C,09 1370 ' 80B4 09 ADD HL,BC 1380 ' 80B5 C1 POP BC 1390 ' 80B6 10 DC DJNZ 0094 1400 ' 80B8 C9 RET 1410 ' 80B9 E5 PUSH HL 1420 ' 80BA 26 00 LD H,00 1430 ' 80BC 6A LD L,D 1440 ' 80BD 29 ADD HL,HL 1450 ' 80BE 7B LD A,E 1460 ' 80BF 54 LD D,H 1470 ' 80C0 5D LD E,L 1480 ' 80C1 29 ADD HL,HL 1490 ' 80C2 29 ADD HL,HL 1500 ' 80C3 19 ADD HL,DE 1510 ' 80C4 29 ADD HL,HL 1520 ' 80C5 29 ADD HL,HL 1530 ' 80C6 29 ADD HL,HL 1540 ' 80C7 85 ADD A,L 1550 ' 80C8 5F LD E,A 1560 ' 80C9 7C LD A,H 1570 ' 80CA CE C0 ADC A,C0 1580 ' 80CC 57 LD D,A 1590 ' 80CD E1 POP HL 1600 ' 80CE C9 RET 1610 ' 1620 ' 1630 ' Routine AMSINIT 1640 ' 1650 '80E8 ORG &80E8 1660 ' 1670 ' 8000 21 00 40 LD HL,tbl 1680 ' 8003 06 02 LD B,spt 1690 ' 8005 C5 PUSH BC 1700 ' 8006 23 INC HL 1710 ' 8007 56 LD D,(HL) 1720 ' 8008 23 INC HL 1730 ' 8009 5E LD E,(HL) 1740 ' 800A CD B9 80 CALL 80B9 1750 ' 800D 23 INC HL 1760 ' 800E 23 INC HL 1770 ' 800F 06 08 LD B,08 1780 ' 8011 23 INC HL 1790 ' 8012 1A LD A,(DE) 1800 ' 8013 77 LD (HL),A 1810 ' 8014 7A LD A,D 1820 ' 8015 C6 08 ADD A,08 1830 ' 8017 57 LD D,A 1840 ' 8018 10 F7 DJNZ 0011 1850 ' 801A 0E 0A LD C,0A 1860 ' 801C 09 ADD HL,BC 1870 ' 801D C1 POP BC 1880 ' 801E 10 E5 DJNZ 0005 1890 ' 8020 C9 RET 1900 ' 1910 ' NOTA: Ces routines ont ete assemblees sur ZX SPECTRUM 48Ko 1920 ' le 24 AOUT 1985, grace a l'editeur assembleur PROFISOFT. 1930 ' 1940 ' 1950 ' A R C H E T Y P E du S P R I T E 1960 ' 1970 ' N.B. :Les donnees du lutin Peuvent (ou doivent) etre P1acees 1980 ' dans des lignes DATA. 1990 ' Ex: 2000 '9000 RESTORE 9100 2010 '9010 tbl=&4000 2020 '9020 spt=1 2030 '9030 POKE &8001,ABS(tbl MOD 256) 2040 '9040 POKE &8002,ABS(tbl\256) 2050 '9050 POKE &8004,spt 2060 '9060 POKE &80E9,ABS(tbl MOD 256) 2070 '9070 POKE &80EA,ABS(tbl\25b) 2080 '9080 POKE &80EC,spt 2090 '9090 FOR f=tbl TO tbl+22*spt-1:READ byte:POKE f,byte:next f 2100 '9100 DATA 4,10,40,10,40,9,0,0,0,9,9,0,0 2110 '9110 DATA 1,255,129,129,24,24,129,129,255 2120 ' 2130 ' Quelle est la Signification de chaque donnee ? 2140 ' Archetype: 2150 ' DATA mvt,l,c,l,c,0,0,0,0,0,0,0,0 2160 ' DATA switch,a,b,c,d,e,f,g,h 2170 ' 2180 'Signification: 2190 '- MVt : Mouvement, le sens etant selectionne dans les bits ainsi: 2200 ' bit 0=Monter ; bit 1-=descendre ; bit 2=a gauche; bit 3=a droit. 2210 ' bit 4=chute+drte ; bit 5=monte+gche , bit 6=mone.+drt. 2220 ' bit 7=chute+gche 2230 ' dans tous les cas il y a mouvement que lorsque le bit concerne 2240 ' est a 1. 2250 ' 2260 ' - l : ligne, comprise entre 0 et 24, a laquelle doit apparaitre 2270 ' le lutin. Notez que 'l' et 'c' sont Mis 2 fois, Pour la 2280 ' simple raison que le decor ne peut effacer le lutin 2290 ' ailleurs qu'a sa position actuelle. 2300 ' 2310 ' - c : colonne, Comprise entre 0 et 79. meme rem. que 'l'. 2320 ' 2330 '- 0,...,0 , Cette suite de 8 zeros n'est autre que la matrice 2340 ' du decor. Elle sera correctement ajustee Par 1a 2350 ' routine AMSINIT (CALL &80E8) que vous lancerez 2360 ' une fois le decore mis en Place. 2370 ' 2380 ' - switch : Comme son nom l'indique. cet octet indique si le 2390 ' lutin doit etre ou non affiche. Il fonctionne 2400 ' ainsi: 2410 ' switch=0, le lutin n'est pas affiche 2420 ' switch<>0, est affiche 2430 ' 2440 '- a,...,h : Ces 8 octets vous sont reserves. Ils representent 2450 ' la matrice de votre lutin, qui si vous connaissez 2460 ' le systeme d'affichage de l'AMSTRAD,vous donnera 2470 ' les cartes bits suivantes : 2480 ' 2490 ' 1) MODE 2:la carte bits sera affichee telle qu'elle aura 2500 ' ete definie par la matrice, mais vous n'aurez 2510 ' droit qu'a une couleur en tout et pour tout. 2520 ' 2530 ' 2) MODE 1:la carte bits affichera une grille de 4*8 2540 ' points au lieu de 8*8, mais permetera l'utili- 2550 ' sation de 3 couleurs pour chaque points. Ce 2560 ' qui signifie que le lutin est tricolore. 2570 ' NB: Pour obtenir les memes resultats qu'en 2580 ' MODE 2, il faudra 2 lutins au lieu d'un, ce 2590 ' qui reduit le nombre a 128. 2600 ' 2610 ' 3) MODE 0:la carte bits affichera une grille de 2*8 2620 ' Points au lieu de 8*8, Mais permettra l'utili- 2630 ' sation de 15 couleurs simultannees adressables 2640 ' a chaque point de la grille. A ce stade le 2650 ' lutin devient multico1ore, mais comme la rem. 2660 ' du 2) le dit, il faudra 4 lutins au lieu d'un, 2670 ' Ce qui reduit le nombre a 64 lutins. 2680 ' 2690 ' *** REPRESENTATION BINAIRE d'un octet de MATRICE seton le MODE 2700 ' 2710 ' M O D E 2 2720 ' bits de PEN : 0 0 0 0 0 0 0 0 ; Donc PEN 0 ou 1 cad fond ou encre 2730 ' octet : 0 1 1 1 0 1 1 0 2740 ' Pixel no. : 1 2 3 4 5 6 7 8 2750 ' 2760 ' M O D E 1 2770 ' bits de PEN : 0 0 0 0 1 1 1 1 ; Donc PEN 0 a 3 cad fond +3 couleurs 2780 ' octet : 0 1 1 1 0 1 1 0 2790 ' Pixel no. : 1 2 3 4 1 2 3 4 2800 ' 2810 ' Pixel no.! Bit 0 de PEN! bit 1! representation ! 2820 ' 2830 ' 1 ! 0 ! 0 ! fond 2840 ' 2 ! 1 ! 1 ! PEN 3 2850 ' 3 ! 1 ! 1 ! PEN 3 2860 ' 4 ! 1 ! 0 ! PEN 1 2870 ' 2880 ' M O D E 0 2890 ' bits de PEN : 0 0 2 2 1 1 3 3 ; PEN 0 a 15 cad fond +15 couleurs 2900 ' octet : 0 1 1 1 0 1 1 0 2910 ' Pixel no. : 1 2 1 2 1 2 1 2 2920 ' pixe1 no.: bit 0 de PEN: bit 1: bit 2: bit 3: representation: 2930 ' 2940 ' 1 0 0 1 1 PEN 12 2950 ' 2 1 1 1 0 PEN 7 2960 ' 2970 ' 2980 ' 2990 ' 3000 ' Nous souhaitons que ces quelques informations vous aurons permis 3010 ' de comprendre le fonctionnement(certes complexe) du fichier 3020 ' d'affichage de votre A M S T R A D C P C - 4 6 4 3030 ' 3040 ' Dans l'attente d'un prochain utilitaire nous vous saluons, 3050 ' 3060 ' la SEBAN Reasearch. 3070 ' 3080 ' 5000 PAPER 0:PEN 1 5010 INK 0,13:INK 1,0 5020 BORDER 13:MODE 2 5030 LIST |