LST OFF ORG $9000 ********************************* * * * INTERPRETEUR D'IMAGES * * LAURENT RUEIL & ALDO RESET * * (C) 1983 CLEAN CRACK BAND * * * ********************************* * Le fichier d'origine est SHOW.S * sur la disquette "compresseur * graphique et Zoom Graphix" * de Laurent Rueil. * Modification pour utilisation * avec l'intro de Muryaden 1. * (C) 1989 BYTLEJUICE * * Commentaires source CCB * car il n'y en avait aucun! * (C) 2014 DECKARD * Page 0 VAL EQU $05 ; valeur @ {crire sur {cran graphique NB_VAL EQU $06 , nbr de fois {criture VAL GBASL EQU $26 ; pointeur {cran calcul{e par HPOSN GBASH EQU $27 PTR_DATA EQU $3C ; pointeur datas @ afficher HPAG EQU $E6 ; $20=page 1 / $40 = page 2 COL_DEB EQU $FC ; byte colonne d{but COL_CUR EQU $02 ; byte colonne courante COL_FIN EQU $FE ; byte colonne fin LIG_DEB1 EQU $FD ; byte ligne d{but LIG_DEB2 EQU $04 ; LIG_DEB1+1 LIG_FIN EQU $FF ; byte ligne fin *------------------------------- UNPACK * LDA #<$6000 * STA $3C * LDA #>$6000 * STA $3D NOP ; on ne pointe pas sur une adresse fixe NOP ; contrairement @ la d{mo CCB NOP NOP NOP NOP NOP NOP LDA HPAG H900A CMP #$20 ; CMP_PAG #$20 ou #$40 BEQ H9010 ; page d{sir{e H900E LDA #$20 ; LDA_PAG H9010 STA HPAG ; HGR1 ou HGR2 *------------------------------- * Il doit y avoir 2 lignes minimum @ traiter. * * Format d'un pattern * * colonne d{but [0,39] * ligne d{but [0,191] * colonne fin [0,39] * ligne fin [0,191] * datas: * cas r{p{tition d{sir{e * 0 = indicateur de r{p{tition * octet nb de r{p{tition de la valeur * valeur @ {crire * cas pas de r{p{tition * valeur @ {crire *------------------------------- * 1er octet = abscisse d{but LDY #0 LDA (PTR_DATA),Y STA COL_DEB ; colonne d{but STA COL_CUR ; colonne courante INC PTR_DATA ; octet data suivant BNE H9020 INC PTR_DATA+1 * 2nd octet = numero ligne d{but H9020 LDA (PTR_DATA),Y STA LIG_DEB1 ; 1}re ligne TAX INX STX LIG_DEB2 ; 1}re ligne+1. On commencera par celle l@ LDA ADR_HGRL,X ; construit l'adresse {cran STA GBASL LDA ADR_HGRH,X ORA HPAG STA GBASH INC PTR_DATA ; octet data suivant BNE H903A INC PTR_DATA+1 * 3}me octet = abscisse fin H903A LDA (PTR_DATA),Y CLC ADC #1 STA COL_FIN INC PTR_DATA ; octet data suivant BNE H9047 INC PTR_DATA+1 * 4}me octet 3 = ligne de fin H9047 LDA (PTR_DATA),Y CLC ADC #1 STA LIG_FIN INC PTR_DATA ; octet data suivant BNE H9054 INC PTR_DATA+1 *------------------------------- * Traitement des datas *------------------------------- H9054 STY NB_VAL ; Y=0 (default=ne boucle pas sur VAL) NEXT_VAL LDA (PTR_DATA),Y BNE TRAITE_VAL ; pas de r{p{tition (keep default) * >>> R{p{tition d'un meme octet INC PTR_DATA ; octet data suivant BNE H9060 INC PTR_DATA+1 H9060 LDA (PTR_DATA),Y ; nbr de r{p{titions STA NB_VAL INC PTR_DATA BNE H906A INC PTR_DATA+1 H906A LDA (PTR_DATA),Y ; valeur @ r{p{ter STA VAL * Traitement d'une valeur r{p{t{e H906E LDA VAL ; valeur @ r{p{ter DEC NB_VAL ; une fois de moins * >>> Traitement d'une valeur * acc = valeur TRAITE_VAL LDY COL_CUR ; abscisse STA (GBASL),Y INX ; positionne 2 lignes plus bas INX CPX LIG_FIN BCC H9092 ; < : il reste encore des lignes @ {crire ; les lignes step 2 ont {t{ trait{es pour cette ; colonne INC COL_CUR ; abscisse+1 LDY COL_CUR ; il reste encore des colonnes @ traiter? CPY COL_FIN BCC H9090 ; oui DEC LIG_DEB2 ; revient la ligne de d{but indiqu{e en datas LDY LIG_DEB2 ; est-ce qu'on a fait les 2 passages? CPY LIG_DEB1 BNE H90AA ; oui, c'est fini ; nouveau passage s@ partir de LIG_DEB1 LDY COL_DEB ; re init colonne STY COL_CUR H9090 LDX LIG_DEB2 ; repart de LIG_DEB1 ou LIG_DEB1+1 (selon cas) H9092 LDA ADR_HGRL,X ; adresse {cran pour ligne courante STA GBASL LDA ADR_HGRH,X ORA HPAG STA GBASH LDY NB_VAL ; est-ce qu'il faut encore {crire VAL? BNE H906E ; oui INC PTR_DATA ; positionne sur data suivante BNE NEXT_VAL INC PTR_DATA+1 BNE NEXT_VAL ; always H90AA RTS *------------------------------- * Not used *------------------------------- HEX 00FFFF0000FFFF0000FFFF0000FFFF00 HEX 00FFFF0000FFFF0000FFFF0000FFFF00 HEX 00FFFF0000FFFF0000FFFF0000FFFF00 HEX 00FFFF0000FFFF0000FFFF0000FFFF00 HEX 00FFFF0000FFFF0000FFFF0000FFFF00 HEX 00FFFF0000FFFF0000FFFF0000FFFF00 HEX 00FFFF0000FFFF0000FFFF0000FFFF00 HEX 00FFFF0000FFFF0000FFFF0000FFFF00 HEX 00FFFF0000FFFF0000FFFF0000FFFF00 HEX 00FFFF0000FFFF0000FFFF0000FFFF00 HEX 00FFFF0000FFFF0000FFFF0000FFFF00 HEX 00FFFF0000FFFF0000FFFF0000FFFF00 HEX 00FFFF0000FFFF0000FFFF0000FFFF00 HEX 00FFFF0000FFFF0000FFFF0000FFFF00 HEX 00FFFF0000FFFF0000FFFF0000FFFF00 HEX 00FFFF0000FFFF0000FFFF0000FFFF00 HEX 00FFFF0000FFFF0000FFFF0000FFFF00 HEX 00FFFF0000FFFF0000FFFF0000FFFF00 HEX 00FFFF0000FFFF0000FFFF0000FFFF00 HEX 00FFFF0000FFFF0000FFFF0000FFFF00 HEX 00FFFF0000FFFF0000FFFF0000FFFF00 HEX 00FFFF0000 *------------------------------- * Adresses {cran *------------------------------- ADR_HGRH HEX 0004080C1014181C0004080C1014181C HEX 0105090D1115191D0105090D1115191D HEX 02060A0E12161A1E02060A0E12161A1E HEX 03070B0F13171B1F03070B0F13171B1F HEX 0004080C1014181C0004080C1014181C HEX 0105090D1115191D0105090D1115191D HEX 02060A0E12161A1E02060A0E12161A1E HEX 03070B0F13171B1F03070B0F13171B1F HEX 0004080C1014181C0004080C1014181C HEX 0105090D1115191D0105090D1115191D HEX 02060A0E12161A1E02060A0E12161A1E HEX 03070B0F13171B1F03070B0F13171B1F ADR_HGRL HEX 00000000000000008080808080808080 HEX 00000000000000008080808080808080 HEX 00000000000000008080808080808080 HEX 00000000000000008080808080808080 HEX 2828282828282828A8A8A8A8A8A8A8A8 HEX 2828282828282828A8A8A8A8A8A8A8A8 HEX 2828282828282828A8A8A8A8A8A8A8A8 HEX 2828282828282828A8A8A8A8A8A8A8A8 HEX 5050505050505050D0D0D0D0D0D0D0D0 HEX 5050505050505050D0D0D0D0D0D0D0D0 HEX 5050505050505050D0D0D0D0D0D0D0D0 HEX 5050505050505050D0D0D0D0D0D0D0D0 *------------------------------- * Not used *------------------------------- HEX 8DB09320B493A9018DAB93209893A5FE HEX 8D9993A9408DAB93A000A201BDC09285 HEX 26BD009205E68527B12649019126E8E0 HEX BF90E960A200BDC0928526BD009205E6 HEX 8527A000B126497F9126C8C02890F560 HEX FFFF0000FFFF0000FFFF0000FFFF0000 HEX FFFF0000FFFF0000FFFF0000FFFF0000 HEX FFFF0000FFFF0000FFFF0000FFFF0000 HEX A90085FC85FDA92785FEA9BF85FFA5E6 HEX C940F004A92085E6AD00C0102F2C10C0 HEX A203DD5594F005CA10F83005F6FC4C4C HEX 94A203DD5994F012CA10F8C98DD00DA2 HEX 03B5FC9D0060CA10F860D6FC205D9420 HEX 5D944C1894D3DACBCDC1D7CAC9A5FD8D HEX B5941869018D9B94A5FC8DC3948D9994 HEX A5FE1869018DCC9420B494A5FF8DB594 HEX 8DB09420B494A9018DAB94209894A5FE HEX 8D9994A9408DAB94A000A201BDC09285 HEX 26BD009205E68527B12649019126E8E0 HEX BF90E960A200BDC0928526BD009205E6 HEX 8527A000B126497F9126C8C02890F560 HEX F46000004900877C0000005400845000 HEX 000054800E5B0A0000458001FF950000 HEX 528001FE950000448001FD950000434F HEX 00000000000000000000000000000000 HEX 00000000000000000000000000000000 HEX 00000000000000000000000000000000 HEX 00000000000000000000000000000000 HEX 00000000000000000000000000000000 HEX 00000000000000000000000000000000 HEX 00000000000000000000000000000000 HEX 00000000000000000000000000000000 HEX 00000000000000000000000000000000 HEX 00000000000000000000000000000000 HEX 00000000000000000000000000000000 HEX 00000000000000000000000000000000 HEX 00000000000000000000000000000000 HEX 00000000000000000000000000000000 HEX 00000000000000000000000000000000 HEX 000000000000000000000000000000C5 SAV B9000.95FF