******************************** * * * CONTENU DE LA MEMOIRE AUXIL. * * PART 1 * * (C)1990 BY DECKARD * * * ******************************** * RECOPIE MODULE SWAP EN RAM_AUX STA $C008 ; PILE ET PAGE 0 PRINC STA $C000 ; RAMRD/RAMWRT STA $C005 ; ECRITURE AUX AFF RAM1 ;CPT AFF SWAP_AUX ;CPT2 LDY #0 RECOP1 LDA (CPT),Y STA (CPT2),Y AJ CPT AJ CPT2 TEST_FIN LDA CPT2 ; COMPARE LOW CMP #FINDATA1 BNE RECOP1 ; PAS FINI * RECOPIE LES 'COPY_' ET LES DATAS AFF RAM2 ;CPT AFF COPY_OBJ ;CPT2 LDY #0 RECOP2 LDA (CPT),Y STA (CPT2),Y AJ CPT AJ CPT2 TEST_FIN2 LDA CPT2 ; COMPARE LOW CMP #FINDATA2 BNE RECOP2 ; PAS FINI STA $C004 ; ECRITURE PRINC RTS ******************************** RAM1 ORG $3A0 ; MEME VALEUR QUE USER.COMMUT2 * PASSAGE EN PRINC * X=CMD/Y=ARGUMENT SWAP_AUX LDA #0 STA $C008 ; PILE ET PAGE 0 PRINC STA $C000 ; USE RAMRD/RAMWRT STA $C002 ; LIRE EN PRINC -> PASSE EN PRINC DIRECT * ARRIVE EN AUX STA $C005 ; ECRIRE EN AUX TXA ; NUMERO DE CMD DANS ACC ASL A ; *2 POUR DA TAX LDA RAM_ADR,X ; LOW STA $EC INX LDA RAM_ADR,X ; HIGH STA $ED JMP ($00EC) ; SAUTE A L'ADR INDIQUEE RAM_ADR DA COPY_OBJ DA RETOUR_OBJ DA COPY_MONS DA RETOUR_MONS DA COPY_MACRO DA RETOUR_MACRO DA COPY_ECHOPE LST ON FINDATA1 HEX FF ; NE PAS ENLEVER LST OFF ORG RAM2 ******************************** ORG $803 * RECOPIE LES CARACS DE L'OBJET Y LST ON COPY_OBJ TYA LST OFF CMP #0 ; OBJET NORMAL BPL COPY_OBJB SEC ; OBJ COMPL. A PARTIR DE 240 SBC #240 JMP OBJ_ANNEXE COPY_OBJB PHA ; SAUVEGARDE TEMPORAIRE ASL A ; *2 POUR DA PHA TAY LDA N0,Y ; LOCALISE LE NOM STA $EC INY LDA N0,Y STA $ED STA $C004 ; ECRITURE EN PRINC LDY #0 ; RECOPIE LE NOM DE L'OBJET COPY_OBJ3 LDA ($EC),Y STA STRING,Y BEQ COPY_OBJ2 ; RECOPIE LE 0 AUSSI INY BNE COPY_OBJ3 COPY_OBJ2 PLA ; RECUPERE NUMERO OBJET*2 TAY PLA ; RECUPERE NUMERO OBJET TAX LDA PRIX,Y ; LOW PHA INY LDA PRIX,Y ; HIGH PHA TXA TAY LDA OCT8,Y PHA LDA OCT7,Y PHA LDA OCT6,Y PHA LDA OCT5,Y PHA LDA CARAC2,Y PHA LDA CARAC1,Y PHA LDA TYPE,Y PHA JMP FCOPY_OBJ DS 3,0 ******************************** * RECOPIE LIBRARY.MACROS2 SAUVEGARDEE EN RAM LST ON COPY_MACRO LDA #CLIB_MACROS2 STA $ED LDA #LIB_MACROS2 STA $EF STA $C004 ; ECRITURE PRINC COPY_MACRO2 LDY #0 LDA ($EC),Y ; RECOPIE AUX->PRINC STA ($EE),Y AJ $EC AJ $EE LDA $EC ; LOW CMP #ELIB_MACROS2 BNE COPY_MACRO2 STA $C005 ; ECRITURE AUX LDX #5 ; CMD=5 -> RETOUR_MACRO (=RTS POUR BASIC) JMP SWAP_AUX ******************************** * RECOPIE LE NOM DU MONSTRE ET SES CARACTERISTIQUES * ENTREE: PILE=NUMERO MONSTRE / Y=NATURE LST ON COPY_MONS TYA ; TROUVE LE BON SPRITE LST OFF ASL A ; NUMERO EQUIVALENCE LIBRAIRIE*2 TAY LDA KEL_LIB,Y ; LOW STA $EC INY LDA KEL_LIB,Y ; HIGH STA $ED PLA ; RECUPERE LE NUMERO DU MONSTRE PHA TAY LDA ($EC),Y ; PREND LE SPRITE EQUIVALENT AU NUMERO STA $C004 ; ECRITURE PRINC STA VALS ; LE PLACE SUR LE 1ER OCTET PLA ; RECOPIE LE NOM PHA ASL A ; NUMERO DU MONSTRE*2 TAY LDA M0,Y ; LOW STA $EC INY LDA M0,Y ; HIGH STA $ED LDY #0 COPY_MONS2 LDA ($EC),Y ; RECOPIE AUSSI LE ZERO TERMINATEUR DE STROUT STA STRING,Y BEQ COPY_MONS3 INY BNE COPY_MONS2 ; RECOPIE LES CARACTERISTIQUES COPY_MONS3 STA $C005 ; ECRITURE AUX LDA #0 STA CPT_MONS PLA ; NUMERO MONSTRE TAY COPY_MONS4 LDA CPT_MONS ASL A TAX LDA C0,X ; LOW STA $EC INX LDA C0,X ; HIGH STA $ED LDX CPT_MONS STA $C004 ; ECRITURE PRINC LDA ($EC),Y STA VALS+1,X STA $C005 ; ECRITURE AUX INC CPT_MONS LDA CPT_MONS CMP #40 BNE COPY_MONS4 TYA ; NUMERO MONSTRE*2 POUR 'DA' ASL A TAY LDA #40 STA CPT_MONS2 COPY_MONS5 LDA CPT_MONS ASL A TAX LDA C0,X ; LOW STA $EC INX LDA C0,X ; HIGH STA $ED LDX CPT_MONS2 STA $C004 ; ECRITURE PRINC LDA ($EC),Y ; LOW STA VALS+1,X INX INY LDA ($EC),Y ; HIGH STA VALS+1,X DEY ; REPOSITIONNE POUR LOW INX STA $C005 ; ECRITURE AUX STX CPT_MONS2 INC CPT_MONS LDA CPT_MONS CMP #54 BNE COPY_MONS5 LDX #3 ; CMD=3 -> RETOUR_MONS JMP SWAP_AUX CPT_MONS HEX 00 CPT_MONS2 HEX 00 C0 DA C1,C2,C3,C4,C5,C6,C7,C8,C9,C10 DA C11,C12,C13,C14,C15,C16 DA C31,C32,C33,C34,C35,C36,C37,C38,C39,C40 DA C41,C42,C43,C44,C45,C46,C47,C48,C49,C50 DA C51,C52,C53,C54 DA C17,C18,C19,C20,C21,C22,C23,C24,C25 DA C26,C27,C28,C29,C30